diff --git a/sys/vms/install.com b/sys/vms/install.com index 68f36e966..867e5bd94 100755 --- a/sys/vms/install.com +++ b/sys/vms/install.com @@ -29,7 +29,7 @@ $ ! to avoid inadvertent logical name interaction $ play_files = "PERM.,RECORD.,LOGFILE.,XLOGFILE.,PANICLOG." $ help_files = "HELP.,HH.,CMDHELP.,KEYHELP.,WIZHELP.,OPTHELP.," - + "HISTORY.,LICENSE." -$ data_files = "DATA.,RUMORS.,ORACLES.,OPTIONS.,QUEST.DAT,TRIBUTE.," - +$ data_files = "DATA.,RUMORS.,ORACLES.,OPTIONS.,TRIBUTE.," - + "ENGRAVE.,EPITAPH.,BOGUSMON." $ sysconf_file = "[.sys.vms]sysconf" $ guidebook = "[.doc]Guidebook.txt" @@ -37,10 +37,12 @@ $ invoc_proc = "[.sys.vms]nethack.com" $ trmcp_file = "[.sys.share]termcap" $ spec_files = "air.lua,asmodeus.lua,astral.lua,baalz.lua," - + "bigrm-*.lua,castle.lua,earth.lua,fakewiz%.lua," - - + "fire.lua,juiblex.lua,knox.lua,medusa-%.lua," - - + "minefill.lua,minetn-%.lua,minend-%.lua,nhlib.lua," - - + "oracle.lua,orcus.lua,sanctum.lua,soko%-%.lua," - - + "tower%.lua,valley.lua,water.lua,wizard%.lua,hellfill.lua,tut-%.lua" + + "fire.lua,hellfill.lua,juiblex.lua,knox.lua," - + + "medusa-%.lua,minefill.lua,minetn-%.lua," - + + "minend-%.lua,nhcore.lua,nhlib.lua," - + + "oracle.lua,orcus.lua,quest.lua,sanctum.lua," - + + "soko%-%.lua,themerms.lua,tower%.lua,tut-%.lua," - + + "valley.lua,water.lua,wizard%.lua" $ qstl_files = "%%%-goal.lua,%%%-fil%.lua,%%%-loca.lua,%%%-strt.lua" $ dngn_files = "dungeon.lua" $! @@ -101,6 +103,8 @@ $ makedefs -h !oracles.txt -> oracles $ milestone "(dungeon preprocess)" $ makedefs -s $ milestone "(engrave, epitaph, bogusmon)" +$ makedefs -v +$ milestone "(options)" $! makedefs -e !dungeon.def -> dungeon.pdf $! milestone "(quest text)" $ makedefs -q !quest.txt -> quest.dat diff --git a/sys/vms/vmsbuild.com b/sys/vms/vmsbuild.com index 82ab5e98f..3be01c0ee 100755 --- a/sys/vms/vmsbuild.com +++ b/sys/vms/vmsbuild.com @@ -7,13 +7,17 @@ $ $!TODO: Separate the lua build and create an object library for it instead $! of putting lua modules into nethack.olb. $ +$ luaver = "546" +$ luadotver = "5.4.6" +$ luaunderver = "5_4_6" $ ! $ ! usage: $ ! $ set default [.src] !or [-.-.src] if starting from [.sys.vms] $ ! $ @[-.sys.vms]vmsbuild [compiler-option] [link-option] [cc-switches] - $ ! [linker-switches] [interface] $ ! options: -$ ! compiler-option : either "VAXC", "DECC" or "GNUC" or "" !default VAXC +$ ! compiler-option : either "VSIC", "VAXC", "DECC", +$ ! "GNUC" or "" or "fetchlua" !default in 3.7 is VSIC $ ! link-option : either "SHARE[able]" or "LIB[rary]" !default SHARE $ ! cc-switches : optional qualifiers for CC (such as "/noOpt/Debug") $ ! linker-switches : optional qualifers for LINK (/Debug or /noTraceback) @@ -32,14 +36,16 @@ $ ! $ @[-.sys.vms]vmsbuild "" "" "" "" "TTY+CURSES" $ $ decc_dflt = f$trnlnm("DECC$CC_DEFAULT") $ j = (decc_dflt.nes."") .and. 1 +$ vsic_ = "CC" + f$element(j,"#","#/DECC") + "/NOLIST" $ vaxc_ = "CC" + f$element(j,"#","#/VAXC") + "/NOLIST/OPTIMIZE=NOINLINE" $ decc_ = "CC" + f$element(j,"#","#/DECC") + "/PREFIX=ALL/NOLIST" $ gnuc_ = "GCC" $ if f$type(gcc).eqs."STRING" then gnuc_ = gcc $ gnulib = "gnu_cc:[000000]gcclib/Library" !(not used w/ vaxc) $ ! common CC options (/obj=file doesn't work for GCC 1.36, use rename instead) -$ ! c_c_ = "/INCLUDE=([-.INCLUDE],[-.LIB.LUA535.SRC])/DEFINE=(""LUA_USE_C89"",""LUA_32BITS"")" -$ c_c_ = "/INCLUDE=([-.INCLUDE],[-.LIB.LUA535.SRC])/DEFINE=(""LUA_USE_C89"")" +$ c_c_ = "/INCLUDE=([-.INCLUDE],[-.LIB.lua''luaver'.SRC])" - + + "/DEFINE=(""LUA_USE_C89"")" +$ cxx_c_ = "/INCLUDE=([-.INCLUDE],[-.LIB.LUA''luaver'.SRC])" $ veryold_vms = f$extract(1,1,f$getsyi("VERSION")).eqs."4" - .and. f$extract(3,3,f$getsyi("VERSION")).lts."6" $ if veryold_vms then c_c_ = c_c_ + "/DEFINE=(""VERYOLD_VMS"")" @@ -52,21 +58,27 @@ $ vmsbuild = f$environment("PROCEDURE") $ ! validate first parameter $ p1 := 'p1' $ if p1.eqs."" .and. (axp .or. decc_dflt.eqs."/DECC") then p1 = "DECC" -$ o_VAXC = 0 !(c_opt substring positions) -$ o_DECC = 5 -$ o_GNUC = 10 -$ o_LINK = 15 -$ o_SPCL = 20 -$ c_opt = f$locate("|"+p1, "|VAXC|DECC|GNUC|LINK|SPECIAL|") !5 +$ o_VSIC = 0 +$ o_VAXC = 5 !(c_opt substring positions) +$ o_DECC = 10 +$ o_GNUC = 15 +$ o_LINK = 20 +$ o_SPCL = 25 +$ o_FETCHLUA = 33 +$ c_opt = f$locate("|"+p1, "|VSIC|VAXC|DECC|GNUC|LINK|SPECIAL|FETCHLUA") !5 +$ write sys$output c_opt $ if (c_opt/5)*5 .eq. c_opt then goto p1_ok +$ if c_opt .eq. 33 then goto fetchlua $ copy sys$input: sys$error: !p1 usage %first arg is compiler option; it must be one of - "VAXC" -- use VAX C to compile everything - or "DECC" -- use DEC C to compile everything - or "GNUC" -- use GNU C to compile everything - or "LINK" -- skip compilation, just relink nethack.exe + "VSIC" -- use VSI C to compile everything + or "VAXC" -- use VAX C to compile everything + or "DECC" -- use DEC C to compile everything + or "GNUC" -- use GNU C to compile everything + or "LINK" -- skip compilation, just relink nethack.exe or "SPEC[IAL]" -- just compile and link dlb.exe and recover.exe - or "" -- default operation (VAXC unless 'CC' is defined) + or "FETCHLUA" -- skip compilaton, just fetch lua from lua.org + or "" -- default operation (VAXC unless 'CC' is defined) Note: if a DCL symbol for CC is defined, "VAXC" and "GNUC" are no-ops. If the symbol value begins with "G" (or "g"), then the GNU C @@ -81,7 +93,7 @@ $ l_opt = f$locate("|"+p2, "|SHAREABLE|LIBRARY__|NONE_____|") !10 $ if (l_opt/10)*10 .eq. l_opt then goto p2_ok $ copy sys$input: sys$error: !p2 usage %second arg is C run-time library handling; it must be one of - "SHAREABLE" -- link with SYS$SHARE:VAXCRTL.EXE/SHAREABLE + "SHAREABLE" -- link with SYS$SHARE:LIBRTL.EXE/SHAREABLE or "LIBRARY" -- link with SYS$LIBRARY:VAXCRTL.OLB/LIBRARY or "NONE" -- explicitly indicate DECC$SHR or "" -- default operation (use shareable image) @@ -95,10 +107,12 @@ $ set default 'f$parse(vmsbuild,,,"DEVICE")''f$parse(vmsbuild,,,"DIRECTORY")' $ set default [-.-.src] !move to source directory $ ! compiler setup; if a symbol for "CC" is already defined it will be used $ if f$type(cc).eqs."STRING" then goto got_cc -$ cc = vaxc_ !assume "VAXC" requested or defaulted +$ cc = vsic_ !assume "VSIC" requested or defaulted +$ cxx = "CXX" $ if c_opt.eq.o_GNUC then goto chk_gcc !explicitly invoked w/ "GNUC" option $ if c_opt.eq.o_DECC then cc = decc_ -$ if c_opt.ne.o_VAXC then goto got_cc !"SPEC" or "LINK", skip compiler check +$ if c_opt.eq.o_VAXC then cc = vaxc_ +$ if c_opt.ne.o_VSIC then goto got_cc !"SPEC" or "LINK", skip compiler check $ ! we want to prevent function inlining with vaxc v3.x (/opt=noinline) $ ! but we can't use noInline with v2.x, so need to determine version $ set noOn @@ -152,9 +166,16 @@ $skip_gas: $ on warning then continue $ if .not.gas_ok then c_c_ = c_c_ - ")" + ",""const="")" $ c_c_ = "/INCLUDE=[-.INCLUDE]" + c_c_ +$ cxx_c_ = "/INCLUDE=[-.INCLUDE]" + cxx_c_ $ ! $got_cc: +$ if c_opt.eq.o_VSIC +$ then +$ c_c_ = c_c_ + "/NAMES=(AS_IS) +$ cxx_c_ = cxx_c_ + "/NAMES=(AS_IS) +$ endif $ cc = cc + c_c_ !append common qualifiers +$ cxx = cxx + cxx_c_ $ if p3.nes."" then cc = cc + p3 !append optional user preferences $ g := 'f$extract(0,1,cc)' $ if g.eqs."$" then g := 'f$extract(1,1,cc)' !"foreign" gcc @@ -167,7 +188,7 @@ $ if f$trnlnm("F").nes."" then close/noLog f $ create crtl.opt !empty $ open/Append f crtl.opt $ write f "! crtl.opt" -$ if c_opt.eq.o_DECC .or. l_opt.eq.20 +$ if c_opt.eq.o_DECC .or. c_opt.eq.o_VSIC .or. l_opt.eq.20 $ then $! l_opt=="none", leave crtl.opt empty (shs$share:decc$shr.exe/Share) $ else $ ! gnulib order: vaxcrtl.exe+gcclib.olb vs gcclib.olb+vaxcrtl.olb @@ -189,7 +210,6 @@ $ nethacklib = "[-.src]nethack.olb" $ create nethack.opt ! nethack.opt nethack.olb/Include=(vmsmain)/Library -![-.lib.lua]liblua.olb/Library ! lib$initialize is used to call a routine (before main()) in vmsunix.c that ! tries to check whether debugger support has been linked in, for PANICTRACE sys$library:starlet.olb/Include=(lib$initialize) @@ -210,12 +230,20 @@ $! $compile_file: !input via 'c_file' $ no_lib = ( f$extract(0,1,c_file) .eqs. "#" ) $ if no_lib then c_file = f$extract(1,255,c_file) +$ if f$search("''c_file'.cpp").nes."" ! for regex +$ then +$ c_file = c_file + ".cpp" +$ compiler = "''cxx'" +$ else +$ c_file = c_file + ".c" +$ compiler = "''cc'" +$ endif $ c_name = f$edit(f$parse(c_file,,,"NAME"),"LOWERCASE") $ f_opts = "" !options for this file $ if f$type('c_name'_options).nes."" then f_opts = 'c_name'_options $ milestone " (",c_name,")" $ if f$search("''c_name'.obj").nes."" then delete 'c_name'.obj;* -$ cc 'f_opts' 'c_file' +$ 'compiler' 'f_opts' 'c_file' $ if .not.no_lib then nh_obj_list == nh_obj_list + ",''c_name'.obj;0" $ return $! @@ -226,23 +254,82 @@ $ c_loop: $ j = j + 1 $ c_file = f$element(j,",",c_list) !get next file $ if c_file.eqs."," then goto c_done -$ c_file = c_file + ".c" $ gosub compile_file $ goto c_loop $ c_done: $ nh_obj_list == f$extract(1,999,nh_obj_list) $ if nh_obj_list.nes."" then libr/Obj 'nethacklib' 'nh_obj_list'/Replace -$ if nh_obj_list.nes."" then delete 'nh_obj_list' +$! if nh_obj_list.nes."" then delete 'nh_obj_list' $ delete/symbol/global nh_obj_list $ return +$fetchlua: +$ create/dir [-.lib] +$ set def [-.lib] +$ on error then goto luafixdir +$ pipe - + if f$search("lua''luaver'.tar.gz").eqs."" then - + curl http://www.lua.org/ftp/lua-'luadotver'.tar.gz - + --output lua'luaver'.tgz && - + if (f$search("lua''luaver'.tar").eqs."") .AND. - + (f$search("lua''luaver'.tgz").nes."") then - + gzip -d lua'luaver'.tgz && - + if f$search("lua''luaver'.tar").nes."" then - + tar -xf lua'luaver'.tar && - + if (f$search("lua-''luaunderver'.DIR;1").nes."") .AND. - + (f$search("lua''luaver'.dir;1").eqs."") then - + rename lua-'luaunderver'.DIR;1 lua'luaver'.dir;1 +$luafixdir: + set def [-.src] +$ if f$search("[-.include]nhlua.h;-1").nes."" then - + purge [-.include]nhlua.h +$ if f$search("[-.include]nhlua.h").nes."" then - + delete [-.include]nhlua.h; +$ exit $! +$! 3.7 runtime LUA level parser/loader +$! +$buildlua: +$ if f$search("[-.lib]lua.dir;").eqs."" then - + create/dir [-.lib.lua] +$ save_nethacklib = nethacklib +$ nethacklib = "[-.lib.lua]lua''luaver'.olb" +$ if f$search("''nethacklib'").eqs."" then - + libr/Obj 'nethacklib'/Create +$ if f$search("''nethacklib';-1").nes."" then - + purge 'nethacklib' +$ c_list = "[-.lib.lua''luaver'.src]lapi,[-.lib.lua''luaver'.src]lauxlib" - + + ",[-.lib.lua''luaver'.src]lbaselib" - + + ",[-.lib.lua''luaver'.src]lcode,[-.lib.lua''luaver'.src]lcorolib" - + + ",[-.lib.lua''luaver'.src]lctype,[-.lib.lua''luaver'.src]ldblib" - + + ",[-.lib.lua''luaver'.src]ldebug,[-.lib.lua''luaver'.src]ldo" - + + ",[-.lib.lua''luaver'.src]ldump,[-.lib.lua''luaver'.src]lfunc" - + + ",[-.lib.lua''luaver'.src]lgc,[-.lib.lua''luaver'.src]linit" - + + ",[-.lib.lua''luaver'.src]liolib,[-.lib.lua''luaver'.src]llex" - + + ",[-.lib.lua''luaver'.src]lmathlib,[-.lib.lua''luaver'.src]lmem" - + + ",[-.lib.lua''luaver'.src]loadlib,[-.lib.lua''luaver'.src]lobject" - + + ",[-.lib.lua''luaver'.src]lopcodes,[-.lib.lua''luaver'.src]loslib" - + + ",[-.lib.lua''luaver'.src]lparser,[-.lib.lua''luaver'.src]lstate" - + + ",[-.lib.lua''luaver'.src]lstring,[-.lib.lua''luaver'.src]lstrlib" - + + ",[-.lib.lua''luaver'.src]ltable,[-.lib.lua''luaver'.src]ltablib" - + + ",[-.lib.lua''luaver'.src]ltm,[-.lib.lua''luaver'.src]lundump" - + + ",[-.lib.lua''luaver'.src]lutf8lib,[-.lib.lua''luaver'.src]lvm" - + + ",[-.lib.lua''luaver'.src]lzio" +$ gosub compile_list +$ milestone " (''nethacklib')" +$ nethacklib = save_nethacklib +$ return $begin: $! $! miscellaneous special source file setup $! -$ if f$search("pmatchregex.c").eqs."" then copy [-.sys.share]pmatchregex.c []*.* -$ if f$search("random.c").eqs."" then copy [-.sys.share]random.c []*.* -$ if f$search("tclib.c") .eqs."" then copy [-.sys.share]tclib.c []*.* +$! default to using cppregex +$ if f$search("regex.c").eqs."" then - + copy [-.sys.share]cppregex.cpp []regex.cpp +$ if f$search("regex.c").eqs."" then - + copy [-.sys.share]pmatchregex.c []regex.c +$! if f$search("random.c").eqs."" then copy [-.sys.share]random.c []*.* +$ if f$search("tclib.c") .eqs."" then - + copy [-.sys.share]tclib.c []*.* $! $ p5 := 'p5' $ ttysrc = "[-.win.tty]getline,[-.win.tty]termcap" - @@ -262,10 +349,10 @@ $ create [-.include]nhlua.h !empty $ set file/att=(RFM:STM) [-.include]nhlua.h $ open/Append f [-.include]nhlua.h $ write f "/* nhlua.h - generated by vmsbuild.com */" -$ write f "#include ""[-.lib.lua535.src]lua.h""" +$ write f "#include ""[-.lib.lua''luaver'.src]lua.h""" $ write f "LUA_API int (lua_error) (lua_State *L) NORETURN;" -$ write f "#include ""[-.lib.lua535.src]lualib.h""" -$ write f "#include ""[-.lib.lua535.src]lauxlib.h""" +$ write f "#include ""[-.lib.lua''luaver'.src]lualib.h""" +$ write f "#include ""[-.lib.lua''luaver'.src]lauxlib.h""" $ write f "/*nhlua.h*/" $ close f $ endif @@ -279,26 +366,30 @@ $! $! compile and link makedefs, then nethack, dlb+recover. $! $ milestone "" -$ c_list = "[-.sys.vms]vmsmisc,[-.sys.vms]vmsfiles,[]alloc,dlb,monst,objects" +$ gosub buildlua +$! +$ c_list = "[-.sys.vms]vmsmisc,[-.sys.vms]vmsfiles,[]alloc,dlb," - + + "monst,objects,date,#[-.util]panic" $ if c_opt.eq.o_SPCL then c_list = c_list + ",decl,drawing" $ gosub compile_list $ if c_opt.eq.o_SPCL then goto special !"SPECIAL" requested, skip main build $ set default [-.util] $ c_list = "#makedefs" $ gosub compile_list -$ link makedefs.obj,'nethacklib'/Lib,[-.src]ident.opt/Opt,[-.src]crtl/Opt +$ link makedefs.obj,[-.src]panic.obj,'nethacklib'/Lib,[-.src]ident.opt/Opt,[-.src]crtl/Opt $ milestone "makedefs" $! create some build-time files -$ makedefs -p !pm.h -$ makedefs -o !onames.h -$ makedefs -v !date.h +$! 3.7 does not require these +$! makedefs -p !pm.h +$! makedefs -o !onames.h +$! makedefs -v !date.h $ milestone " (*.c)" $ set default [-.src] $! compile most of the source files: $ c_list = "decl,version,[-.sys.vms]vmsmain,[-.sys.vms]vmsunix" - + ",[-.sys.vms]vmstty,[-.sys.vms]vmsmail" - + ",[]isaac64" - !already in [.src] - + ",[]random,[]tclib,[]pmatchregex" !copied from [-.sys.share] + + ",[]tclib,[]regex" !copied from [-.sys.share] $ gosub compile_list $ c_list = interface !ttysrc or cursessrc or both $ gosub compile_list @@ -308,17 +399,17 @@ $ c_list = "allmain,apply,artifact,attrib,ball,bones,botl,cmd,dbridge" - + ",extralev,files,fountain" $ gosub compile_list $ c_list = "hack,hacklib,insight,invent,light,lock,mail,makemon" - - + ",mcastu,mhitm,mhitu,minion,mklev,mkmap,mkmaze" - + + ",mcastu,mdlib,mhitm,mhitu,minion,mklev,mkmap,mkmaze" - + ",mkobj,mkroom,mon,mondata,monmove,mplayer,mthrowu,muse" - + ",music,o_init,objnam,options,pager,pickup" $ gosub compile_list $ c_list = "pline,polyself,potion,pray,priest,quest,questpgr,read" - + ",rect,region,restore,rip,rnd,role,rumors,save,sfstruct,shk" - - + ",shknam,sit,sounds,sp_lev,spell,steal,steed,sys,teleport" - - + ",timeout,topten,track,trap,u_init" + + ",shknam,sit,sounds,sp_lev,spell,steal,steed,symbols" - + + ",sys,teleport,timeout,topten,track,trap,utf8map,u_init" $ gosub compile_list $ c_list = "uhitm,vault,vision,weapon,were,wield,windows" - - + ",wizard,worm,worn,write,zap" + + ",wizard,worm,worn,write,zap,date" $ gosub compile_list $! $! Files added in 3.7 @@ -326,26 +417,38 @@ $! $ c_list = "nhlua,nhlobj,nhlsel" $ gosub compile_list $! -$! 3.7 runtime LUA level parser/loader -$! -$ c_list = "[-.lib.lua535.src]lapi,[-.lib.lua535.src]lauxlib,[-.lib.lua535.src]lbaselib" - - + ",[-.lib.lua535.src]lbitlib,[-.lib.lua535.src]lcode,[-.lib.lua535.src]lcorolib" - - + ",[-.lib.lua535.src]lctype,[-.lib.lua535.src]ldblib,[-.lib.lua535.src]ldebug" - - + ",[-.lib.lua535.src]ldo,[-.lib.lua535.src]ldump,[-.lib.lua535.src]lfunc" - - + ",[-.lib.lua535.src]lgc,[-.lib.lua535.src]linit,[-.lib.lua535.src]liolib" - - + ",[-.lib.lua535.src]llex" -$ gosub compile_list -$ c_list = "[-.lib.lua535.src]lmathlib,[-.lib.lua535.src]lmem,[-.lib.lua535.src]loadlib" - - + ",[-.lib.lua535.src]lobject,[-.lib.lua535.src]lopcodes,[-.lib.lua535.src]loslib" - - + ",[-.lib.lua535.src]lparser,[-.lib.lua535.src]lstate,[-.lib.lua535.src]lstring" - - + ",[-.lib.lua535.src]lstrlib,[-.lib.lua535.src]ltable,[-.lib.lua535.src]ltablib" - - + ",[-.lib.lua535.src]ltm,[-.lib.lua535.src]lundump,[-.lib.lua535.src]lutf8lib" - - + ",[-.lib.lua535.src]lvm,[-.lib.lua535.src]lzio" -$ gosub compile_list -$! $link: $ milestone "" -$ link/Exe=nethack.exe nethack.opt/Options,ident.opt/Options,crtl.opt/Options +$ link vmsmain.obj, - + regex.obj, allmain.obj, alloc.obj, apply.obj, - + artifact.obj, attrib.obj, ball.obj, bones.obj, botl.obj, - + cmd.obj, dbridge.obj, decl.obj, detect.obj, dig.obj, display.obj, - + dlb.obj, do.obj, do_name.obj, do_wear.obj, dog.obj, dogmove.obj, - + dokick.obj, dothrow.obj, drawing.obj, dungeon.obj, eat.obj, - + end.obj, engrave.obj, exper.obj, explode.obj, extralev.obj, - + files.obj, fountain.obj, hack.obj, hacklib.obj, insight.obj, - + invent.obj, isaac64.obj, light.obj, lock.obj, mail.obj, - + makemon.obj, mcastu.obj, mdlib.obj, mhitm.obj, mhitu.obj, - + minion.obj, mklev.obj, mkmap.obj, mkmaze.obj, mkobj.obj, - + mkroom.obj, mon.obj, mondata.obj, monmove.obj, monst.obj, - + mplayer.obj, mthrowu.obj, muse.obj, music.obj, nhlua.obj, - + nhlsel.obj, nhlobj.obj, objnam.obj, o_init.obj, objects.obj, - + options.obj, pager.obj, pickup.obj, pline.obj, polyself.obj, - + potion.obj, pray.obj, priest.obj, quest.obj, questpgr.obj, - + read.obj, rect.obj, region.obj, restore.obj, rip.obj, rnd.obj, - + role.obj, rumors.obj, save.obj, sfstruct.obj, shk.obj, shknam.obj, - + sit.obj, sounds.obj, sp_lev.obj, spell.obj, steal.obj, steed.obj, - + symbols.obj, sys.obj, teleport.obj, timeout.obj, topten.obj, - + track.obj, trap.obj, u_init.obj, utf8map.obj, uhitm.obj, - + vault.obj, version.obj, vision.obj, weapon.obj, were.obj, - + wield.obj, windows.obj, wizard.obj, worm.obj, worn.obj, - + write.obj, zap.obj, vmsfiles.obj, vmsmail.obj, vmsmisc.obj, - + vmstty.obj, vmsunix.obj, getline.obj, termcap.obj, topl.obj, - + wintty.obj, tclib.obj, date.obj - + /EXECUTABLE=nethack.exe - + +sys$disk:[-.lib.lua]lua'luaver'.olb/library +$! link/Exe=nethack.exe [-.lib.lua]lua'luaver'.olb/Lib, - +$! nethack.opt/Options,ident.opt/Options,crtl.opt/Options $ milestone "NetHack" $ if c_opt.eq.o_LINK then goto done !"LINK" only $special: