update OpenVMS com files (VSI C, NetHack-3.7)

This commit is contained in:
nhmall
2023-05-23 17:50:24 -04:00
parent 39530f9228
commit 65a0ff2d9a
2 changed files with 168 additions and 61 deletions

View File

@@ -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

View File

@@ -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 "<compiling...>"
$ 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 "<linking...>"
$ 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: