diff --git a/build/basics.tcl b/build/basics.tcl index 7fac2ce08..fce4f17d7 100644 --- a/build/basics.tcl +++ b/build/basics.tcl @@ -4,15 +4,14 @@ patch_its_and_go pdset respond "*" ":login db\r" -sleep 1 +type ":vk\r" # Normally we'd save the old ITS as OITS, but since it was used for # bootstrapping with another configuration, it's no longer any use. -type ":delete .;@ its\r" +respond "*" ":delete .;@ its\r" # The new ITS is now canonical. respond "*" ":rename .;@ nits, .;@ its\r" -sleep 1 respond "*" ":midas sysbin;_syseng;dump\r" dump_switches @@ -117,13 +116,9 @@ expect ":KILL" respond "*" ":midas sysbin;_sysen2;find\r" expect ":KILL" respond "*" ":link sys;ts find,sysbin;find bin\r" -type ":vk\r" respond "*" ":link sys;ts fi,sys;ts find\r" -type ":vk\r" respond "*" ":link sys;ts comb,sys;ts find\r" -type ":vk\r" respond "*" ":link sys2;ts lf,sys;ts find\r" -type ":vk\r" respond "*" ":midas sys;ts dskuse_syseng;dskuse\r" expect ":KILL" @@ -405,8 +400,7 @@ respond "*" ":midas sys;ts palx_sysen1;palx\r" expect ":KILL" # GT40 boot ROM. -respond "*" ":palx gt40;_gt40;bootvt\r" -expect ":KILL" +palx "gt40;" "gt40;bootvt" # PLAN/CREATE respond "*" ":midas sys3;ts create_syseng;create\r" diff --git a/build/build.tcl b/build/build.tcl index c0702c7b1..c617f65e0 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -173,6 +173,58 @@ proc arpanet {rfc file} { } } +proc macro10 {target sources} { + respond "*" ":macro\r" + respond "*" "$target=$sources\r" + expect "CORE USED" + respond "*" "\003" + respond "*" ":kill\r" +} + +proc palx {target sources {actions ""}} { + respond "*" ":palx ${target}_$sources\r" + eval $actions + expect ":KILL" +} + +proc macn11 {target sources {actions ""}} { + respond "*" ":macn11\r" + respond "*" "${target}_$sources\r" + eval $actions + expect "CORE USED" + respond "*" "\003" + respond "*" ":kill\r" +} + +proc loader {files} { + respond "*" ":dec sys:loader\r" + respond "*" "$files/g\r" + expect "EXIT" +} + +proc linker {files} { + respond "*" ":dec sys:link\r" + respond "*" "$files/go\r" + expect "EXIT" { + return + } "%LNKNED" { + # Sometimes there is this error; workaround is to retry. + respond "*" "$files/go\r" + expect "EXIT" + } +} + +proc decuuo {file {dump ":pdump"}} { + respond "*" ":start 45\r" + respond "Command:" "d" + respond "*" "$dump $file\r" + respond "*" ":kill\r" +} + +proc cwd {directory} { + respond "*" ":cwd $directory\r" +} + set ip [ip_address [lindex $argv 0]] set gw [ip_address [lindex $argv 1]] diff --git a/build/dm.tcl b/build/dm.tcl index fdef5f90a..8c6f32961 100644 --- a/build/dm.tcl +++ b/build/dm.tcl @@ -13,11 +13,9 @@ expect ":KILL" # Gun down dead demons. respond "*" ":link taa; pwfile 999999, sysen1; pwfile >\r" -type ":vk\r" respond "*" ":midas sysbin;_sysen2; gunner\r" expect ":KILL" respond "*" ":link sys; atsign gunner, sysbin; gunner bin\r" -type ":vk\r" # Line printer unspooler demon. respond "*" ":midas sys; atsign unspoo_sysen1; unspoo\r" @@ -41,11 +39,9 @@ expect ":KILL" respond "*" ":midas survey; atsign surgiv_surgiv\r" expect ":KILL" respond "*" ":link sys; atsign surgiv, survey;\r" -type ":vk\r" # Survey sender demon. respond "*" ":link sys; atsign sursnd, survey;\r" -type ":vk\r" # Login program. respond "*" ":midas sysbin;_syseng; booter\r" @@ -72,4 +68,3 @@ respond "*" ":kill\r" respond "*" ":kill\r" mkdir "(init)" respond "*" ":link (init); as hactrn, sys2; ts shell\r" -type ":vk\r" diff --git a/build/emacs.tcl b/build/emacs.tcl index 5dbff6f1a..e72ffb700 100644 --- a/build/emacs.tcl +++ b/build/emacs.tcl @@ -148,7 +148,7 @@ respond "\n" "\033x& compress file\033turnip; view >\r" respond "Compressing file" "\030\003" respond "*" ":kill\r" respond "*" ":tctyp aaa\r" -respond "*" ":cwd kmp\r" +cwd "kmp" respond "*" "kmp\033\023" respond "*" ":dumpt \033turnip;view\r" expect "Dumped to" diff --git a/build/haunt.tcl b/build/haunt.tcl index c28d92ea7..8b80bc80b 100644 --- a/build/haunt.tcl +++ b/build/haunt.tcl @@ -1,6 +1,6 @@ log_progress "ENTERING BUILD SCRIPT: HAUNT" -respond "*" ":cwd haunt\r" +cwd "haunt" # build ops4 respond "*" "complr\013" diff --git a/build/ka10/include.tcl b/build/ka10/include.tcl index 0086ca831..a6cd5baea 100644 --- a/build/ka10/include.tcl +++ b/build/ka10/include.tcl @@ -117,7 +117,8 @@ proc make_dskdmp {} { # Paper tape DSKDMP. This is used for booting ITS. respond "*" $emulator_escape punch_tape "$out/dskdmp.rim" - type ":midas ptp:_system;dskdmp\r" + type ":vk\r" + respond "*" ":midas ptp:_system;dskdmp\r" dskdmp_switches "Y" expect ":KILL" } diff --git a/build/ka10/processor.tcl b/build/ka10/processor.tcl index d6b1553aa..e34ed2ebe 100644 --- a/build/ka10/processor.tcl +++ b/build/ka10/processor.tcl @@ -25,40 +25,32 @@ expect ":KILL" # Name Dragon respond "*" ":link syseng;tvkbd rooms, sysen2;\r" -type ":vk\r" respond "*" ":midas sysbin;_sysen2;namdrg\r" expect ":KILL" respond "*" ":link channa;rakash namdrg, sysbin; namdrg bin\r" -type ":vk\r" # STUFF respond "*" ":midas sys1;ts stuff_sysen2;stuff\r" expect ":KILL" respond "*" ":link channa;rakash tvfix, sys1; ts stuff\r" -type ":vk\r" # IOELEV, PDP-11 doing I/O for the PDP-10 host. # The "AI" IOELEV, also known as CHAOS-11. # STUFF prefers to have it in the "." directory. -respond "*" ":palx dsk0:.;_system;ioelev\r" -respond "MACHINE NAME =" "AI\r" -expect ":KILL" +palx "dsk0:.;" "system;ioelev" { respond "MACHINE NAME =" "AI\r" } # TV-11. STUFF prefers it to be in the "." directory. -respond "*" ":palx dsk0:.;_system;tv\r" -expect ":KILL" +palx "dsk0:.;" "system;tv" # XGP-11. STUFF prefers it to be SYSBIN; VXGP BIN. -respond "*" ":palx sysbin;vxgp bin_sysen2;xgp\r" -expect ":KILL" +palx "sysbin;vxgp bin" "sysen2;xgp" # CCONS. STUFF prefers it to be in the CONS directory. mkdir "cons" -respond "*" ":palx cons;_lmcons;ccons\r" -expect ":KILL" +palx "cons;" "lmcons;ccons" # Old Spacewar -respond "*" ":cwd spcwar\r" +cwd "spcwar" respond "*" ":midas;324 spcwar; war\r" expect ":KILL" respond "*" ":midas spcwar; stars\r" @@ -267,7 +259,7 @@ respond "*" ":midas ptp:_maint;hhtest\r" expect ":KILL" # NTS TECO-6 -respond "*" ":cwd .teco.\r" +cwd ".teco." respond "*" ":midas;73\r" expect "MIDAS" respond "\n" "TECODM REL_TECO DUMMY\r" diff --git a/build/kl10/processor.tcl b/build/kl10/processor.tcl index f0a04e368..87637be8e 100644 --- a/build/kl10/processor.tcl +++ b/build/kl10/processor.tcl @@ -45,19 +45,10 @@ expect ":KILL" copy_to_klfe "ucode;u1 ram" # KLDDT -respond "*" ":cwd kldcp\r" -respond "*" ":macro\r" -respond "*" "klddt=klddt\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" -respond "*" ":dec sys:link\r" -respond "*" "klddt/go\r" -respond "EXIT" ":start 45\r" -respond "Command:" "d" -respond "*" "\033y" -respond " " "kldcp; klddt bin\r" -respond "*" ":kill\r" +cwd "kldcp" +macro10 "klddt" "klddt" +linker "klddt" +decuuo "kldcp; klddt bin" "\033y" respond "*" ":mcnvrt kldcp; klddt bin\r" expect ":KILL" move_to_klfe "kldcp; klddt a10" @@ -68,8 +59,7 @@ expect ":KILL" # KL10 front end debugger. Put it in the same directory as the # "MC" IOELEV. -respond "*" ":palx sysbin;_syseng; klrug\r" -expect ":KILL" +palx "sysbin;" "syseng; klrug" # 11STNK expects a copy in the . directory. respond "*" ":copy sysbin; klrug bin, .;\r" @@ -79,8 +69,7 @@ expect ":KILL" respond "*" ":link .; ts boot11, sys1; ts 11stnk\r" # KL10 diagnostics console program. -respond "*" ":palx kldcp;_kldcp\r" -expect ":KILL" +palx "kldcp;" "kldcp" respond "*" ":11stnk\r" respond "*" "R" respond "FILENAME" "\r" @@ -92,37 +81,34 @@ expect ":KILL" move_to_klfe ".temp.; kldcp bin" # KL10 diagnostic console utility -respond "*" ":palx kldcp;_kldcpu\r" -expect ":KILL" +palx "kldcp;" "kldcpu\r" respond "*" ":pcnvrt kldcp; kldcpu bin\r" move_to_klfe "kldcp; kldcpu a11" # PDP-11 debugger. # 16K is used with the DL10 IOELEV. -respond "*" ":palx .; 11ddt 16k_kldcp; 11ddt\r" -respond "PDP11=" "40\r" -respond "EISSW=" "0\r" -respond "MAPSW=" "0\r" -respond "HCOR=" "100000\r" -respond "TT10SW=" "0\r" -respond "VT05SW=" "0\r" -respond "DEBSW=" "0\r" -expect ":KILL" +palx ".; 11ddt 16k" "kldcp; 11ddt" { + respond "PDP11=" "40\r" + respond "EISSW=" "0\r" + respond "MAPSW=" "0\r" + respond "HCOR=" "100000\r" + respond "TT10SW=" "0\r" + respond "VT05SW=" "0\r" + respond "DEBSW=" "0\r" +} # 14K is used with the console IOELEV. -respond "*" ":palx dsk0:.;11ddt 14k_kldcp; 11ddt\r" -respond "PDP11=" "40\r" -respond "EISSW=" "0\r" -respond "MAPSW=" "0\r" -respond "HCOR=" "70000\r" -respond "TT10SW=" "0\r" -respond "VT05SW=" "0\r" -respond "DEBSW=" "0\r" -expect ":KILL" +palx "dsk0:.;11ddt 14k" "kldcp; 11ddt" { + respond "PDP11=" "40\r" + respond "EISSW=" "0\r" + respond "MAPSW=" "0\r" + respond "HCOR=" "70000\r" + respond "TT10SW=" "0\r" + respond "VT05SW=" "0\r" + respond "DEBSW=" "0\r" +} # The KL10 console "MC" IOELEV. -respond "*" ":palx .; cons11_system;ioelev\r" -respond "MACHINE NAME =" "MC\r" -expect ":KILL" +palx ".; cons11" "system;ioelev" { respond "MACHINE NAME =" "MC\r" } respond "*" ":11stnk\r" respond "*" "D" respond "FILENAME" ".; 11ddt 14k\r" @@ -138,16 +124,14 @@ move_to_klfe ".temp.; ioelev a11" # The KL10 "MC-DL" IOELEV. Put in same directory as KLRUG BIN. # TS BOOT11 stuffs it over DL10 in timesharing. TS 11BOOT makes a # @ BOOT11 to stuff out of timesharing. -respond "*" ":palx sysbin;_system;ioelev\r" -respond "MACHINE NAME =" "MC\r" -expect ":KILL" +palx "sysbin;" "system;ioelev" { respond "MACHINE NAME =" "MC\r" } # 11BOOT respond "*" ":midas;324 sys3;ts 11boot_syseng;11boot\r" expect ":KILL" # Note, must be run with symbols loaded. # Takes IOELEV BIN and KLRUG BIN from the current directory. -respond "*" ":cwd sysbin\r" +cwd "sysbin" respond "*" "11boot\033\013" expect ":KILL" respond "*" ":move sysbin;@ boot11, .;\r" diff --git a/build/ks10/include.tcl b/build/ks10/include.tcl index de52590f8..0377ff2b8 100644 --- a/build/ks10/include.tcl +++ b/build/ks10/include.tcl @@ -81,7 +81,6 @@ proc prepare_frontend {} { pdset respond "*" ":login db\r" - sleep 1 type ":vk\r" respond "*" ":midas sysbin;_kshack;ksfedr\r" diff --git a/build/ks10/processor.tcl b/build/ks10/processor.tcl index 971b8145b..fc5337a64 100644 --- a/build/ks10/processor.tcl +++ b/build/ks10/processor.tcl @@ -3,7 +3,7 @@ log_progress "ENTERING BUILD SCRIPT: PROCESSOR" # Programs particular to the KS10 processor. # KNS10, KS10 console -respond "*" ":cwd kshack\r" +cwd "kshack" respond "*" ":cross\r" respond "*" "FOR21.DAT/PTP,KNS10.PNT/M80/OCT/CRF/EQ:PASS2:SCECOD=CONDEF.M80,HCORE.M80,CMDS.M80,SUBRTN.M80,DR.M80,MSG.M80,STORE.M80\r" expect "Core used" @@ -21,7 +21,7 @@ expect ":KILL" respond "*" ":copy kshack; mcr ram, .; ram ram\r" # Update microcode on frontend filesystem. -type ":ksfedr\r" +respond "*" ":ksfedr\r" respond "!" "write\r" respond "Are you sure" "yes\r" respond "Which file" "ram\r" diff --git a/build/lisp.tcl b/build/lisp.tcl index 8a7edf6aa..8b02622f0 100644 --- a/build/lisp.tcl +++ b/build/lisp.tcl @@ -787,7 +787,7 @@ respond "UKBD" "(quit)" expect ":KILL" # Lisp Logo -respond "*" ":cwd llogo\r" +cwd "llogo" respond "*" ":complr\r" respond "_" "germ\r" respond "_" "ioc\r" @@ -835,7 +835,7 @@ respond "_" "\032" type ":kill\r" # 2500 microcode -respond "*" ":cwd minsky\r" +cwd "minsky" respond "*" "lisp\013" respond "Alloc?" "n\r" respond "*" "(setq gc-overflow '(lambda (x) t))" diff --git a/build/mark.tcl b/build/mark.tcl index b29b11382..0806d8b49 100644 --- a/build/mark.tcl +++ b/build/mark.tcl @@ -15,9 +15,9 @@ start_dskdmp_its pdset respond "*" ":login db\r" -sleep 1 +type ":vk\r" -type $emulator_escape +respond "*" $emulator_escape mount_tape "$out/minsrc.tape" type ":dump\r" diff --git a/build/misc.tcl b/build/misc.tcl index 445494c80..2720eef4a 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -52,12 +52,10 @@ respond "*" ":pdump .teco.; ts 335\r" respond "*" ":kill\r" respond "*" ":link teach;teach emacs,emacs;teach emacs\r" -type ":vk\r" respond "*" "teach\033\023" respond "*" ":emacs\r" expect ":KILL" respond "*" ":link sys2;ts teachemacs,emacs;tstch >\r" -type ":vk\r" # nsalv, timesharing version respond "*" ":midas sys1;ts nsalv_kshack;nsalv\r" @@ -86,19 +84,12 @@ expect ":KILL" respond "*" ":midas sysbin;_sysen3;whoj\r" expect ":KILL" respond "*" ":link sys1;ts talk,sysbin;whoj bin\r" -type ":vk\r" respond "*" ":link sys1;ts who,sysbin;whoj bin\r" -type ":vk\r" respond "*" ":link sys1;ts whoj,sysbin;whoj bin\r" -type ":vk\r" respond "*" ":link sys1;ts whom,sysbin;whoj bin\r" -type ":vk\r" respond "*" ":link sys2;ts users,sysbin;whoj bin\r" -type ":vk\r" respond "*" ":link sys1;ts w,sys1;ts who\r" -type ":vk\r" respond "*" ":link sys2;ts u,sys2;ts users\r" -type ":vk\r" #Inter-Entity Communication respond "*" ":midas sysbin;_sysen2; iec\r" @@ -466,75 +457,57 @@ respond "*" ":midas sys3; ts mmodem_gz; mmodem\r" expect ":KILL" # Compile ADVENT and dump it out with DECUUO. -respond "*" ":cwd games\r" +cwd "games" respond "*" ":dec sys:f40\r" respond "*" "advent=advent\r" expect "CORE USED" respond "*" "\032" type ":kill\r" -respond "*" ":dec sys:loader\r" -respond "*" "advent/g\r" -respond "EXIT" ":start\r" +loader "advent" +respond "*" ":start\r" respond "*" "\032" -type ":start 45\r" -respond "Command:" "d" -respond "*" ":pdump sys3; ts advent\r" -respond "*" ":kill\r" +type ":vk\r" +decuuo "sys3; ts advent" # 350-point ADVENT -respond "*" ":cwd games\r" +cwd "games" respond "*" ":dec sys:f40\r" respond "*" "adv3sr=adv3sr\r" respond "*" "adv3sb=adv3sb\r" expect "CORE USED" respond "*" "\032" type ":kill\r" -respond "*" ":dec sys:loader\r" -respond "*" "adv3sb\r" -respond "*" "adv3sr\r" -respond "*" "/g\r" -respond "EXIT" ":start\r" +loader "adv3sb,adv3sr" +respond "*" ":start\r" respond "*" "adv3db.1" respond "*" "\032" -type ":start 45\r" -respond "Command:" "d" -respond "*" ":pdump games; ts adv350\r" -respond "*" ":kill\r" +type ":vk\r" +decuuo "games; ts adv350" # 448-point ADVENT -respond "*" ":cwd games\r" +cwd "games" respond "*" ":dec sys:f40\r" respond "*" "adv4ma=adv4ma\r" respond "*" "adv4su=adv4su\r" expect "CORE USED" respond "*" "\032" type ":kill\r" -respond "*" ":dec sys:loader\r" -respond "*" "adv4ma\r" -respond "*" "adv4su\r" -respond "*" "/g\r" -respond "EXIT" ":start\r" +loader "adv4ma,adv4su" +respond "*" ":start\r" respond "*" "adv4db.2" respond "Are you a wizard?" "\032" -type ":start 45\r" -respond "Command:" "d" -respond "*" ":pdump games; ts adv448\r" -respond "*" ":kill\r" +type ":vk\r" +decuuo "games; ts adv448" # TREK -respond "*" ":cwd games\r" +cwd "games" respond "*" ":dec sys:f40\r" respond "*" "trek=trek\r" expect "CORE USED" respond "*" "\032" type ":kill\r" -respond "*" ":dec sys:loader\r" -respond "*" "trek\r" -respond "*" "/g\r" -respond "EXIT" ":start 45\r" -respond "Command:" "d" -respond "*" ":pdump games; ts trek\r" -respond "*" ":kill\r" +loader "trek" +decuuo "games; ts trek" # Tech II chess: timesharing, using TV display respond "*" ":midas games;ts chess2_rg;chess2\r" @@ -558,8 +531,7 @@ respond "*" ":midas games;ts ckr_agb;ckr\r" expect ":KILL" # Dazzle Dart, video game for the Logo group PDP-11/45 -respond "*" ":palx bs;_dazzle\r" -expect ":KILL" +palx "bs;" "dazzle" # TOSBLK, convert from PALX binary to SBLK. respond "*" ":midas pdp11;ts tosblk_tosblk\r" @@ -574,7 +546,7 @@ respond "*" ":midas sys1;ts wumpus_games; wumpus\r" expect ":KILL" # Jotto -respond "*" ":cwd games\r" +cwd "games" respond "*" ":midas jotto\r" expect ":KILL" respond "*" ":job jotto\r" @@ -614,82 +586,47 @@ expect ":KILL" respond "*" ":link sys1;ts %,sys1;ts who%\r" # MACRO-10 -respond "*" ":cwd decsys\r" +cwd "decsys" respond "*" ":dec sys:macro\r" respond "*" "macro=macro\r" expect "CORE USED" respond "*" "\003" respond "*" ":kill\r" -respond "*" ":dec sys:link\r" -respond "*" "macro/go\r" -# Strange error here. Workaround is to retry. -expect "%LNKNED" -respond "*" "macro/go\r" -respond "*" ":start 45\r" -respond "Command" "d" -respond "*" ":pdump sys2; ts macro\r" -respond "*" ":kill\r" +linker "macro" +decuuo "sys2; ts macro" respond "*" ":delete decsys; macro shr\r" # Assemble with itself, now no errors -respond "*" ":macro\r" -respond "*" "macro=macro\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" -respond "*" ":dec sys:link\r" -respond "*" "macro/go\r" -expect "%LNKNED" -respond "*" "macro/go\r" -respond "*" ":start 45\r" -respond "Command" "d" -respond "*" ":pdump sys2; ts macro\r" -respond "*" ":kill\r" +macro10 "macro" "macro" +linker "macro" +decuuo "sys2; ts macro" # MACSYM and MONSYM universal files. -respond "*" ":cwd decsys\r" -respond "*" ":macro\r" -respond "*" "macsym.unv=macsym.mac\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" -respond "*" ":macro\r" -respond "*" "monsym.unv=monsym.mac\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" +cwd "decsys" +macro10 "macsym.unv" "macsym.mac" +macro10 "monsym.unv" "monsym.mac" # MACTEN and UUOSYM universal files. -respond "*" ":macro\r" -respond "*" "macten.unv=macten.mac\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" -respond "*" ":macro\r" -respond "*" "uuosym.unv=uuosym.mac\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" +macro10 "macten.unv" "macten.mac" +macro10 "uuosym.unv" "uuosym.mac" # CROSS, assembler -respond "*" ":macro\r" -respond "*" "cross=cross\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" -respond "*" ":dec sys:loader\r" -respond "*" "cross/g\r" -respond "*" ":start 45\r" -respond "Command:" "d" -respond "*" ":pdump sys1; ts cross\r" -respond "*" ":kill\r" +macro10 "cross" "cross" +loader "cross" +decuuo "sys1; ts cross" # Old PALX -respond "*" ":midas sys3;ts plx143_rms;palx 143\r" +respond "*" ":midas 11logo;ts palx_rms;palx 143\r" expect ":KILL" # Phil Budne's PALX Game of Life. -respond "*" ":cwd budd\r" -respond "*" ":palx live palx\r" +cwd "budd" +palx "budd;" "live palx" + +# MACN11, pdp-11 cross assembler +cwd "decsys" +macro10 "macn11" "macn11.hdr,macn11.mac" +loader "macn11" +decuuo "sys3; ts macn11" # Cookie Bear respond "*" ":midas gls; ts check_gls; check\r" @@ -997,7 +934,7 @@ respond "*" ":midas kcc;ts 20xcsv_20xcsv\r" expect ":KILL" # Run GETSYM to get all monitor symbols. -respond "*" ":cwd kcc\r" +cwd "kcc" respond "*" ":getsym\r" expect ":KILL" @@ -1293,7 +1230,6 @@ respond "@" "imlac; ssv22 iml_sysbin; ssv22 bin\r" respond "@" "\021" expect ":KILL" respond "*" ":link imlac; .prgm. normal, imlac; ssv22 iml\r" -type ":vk\r" # Assemble SSV4. respond "*" ":midas imlac; ts assv4_assv4\r" @@ -1369,7 +1305,7 @@ respond "*" ":pdump c; ts cc\r" respond "*" ":kill\r" # CLIB -respond "*" ":cwd clib\r" +cwd "clib" respond "*" ":midas c10cor cmid\r" respond "*" ":midas c10fo cmid\r" respond "*" ":midas c10int cmid\r" @@ -1414,7 +1350,7 @@ expect ":KILL" respond "*" ":delete c; \[crel\] 16\r" # CC -respond "*" ":cwd c\r" +cwd "c" respond "*" ":copy ts cc, ts occ\r" respond "*" ":cc cc.>\r" expect ":KILL" @@ -1485,7 +1421,7 @@ expect "Done." patch_clib_16 # C library for drawing on a TV display. -respond "*" ":cwd clib\r" +cwd "clib" respond "*" ":cc tv.>\r" expect ":KILL" @@ -1504,7 +1440,7 @@ respond "*" ":midas sys2; ts otj6_tj6; otj6\r" expect ":KILL" # Alan Snyder's R typesetting language. -respond "*" ":cwd r\r" +cwd "r" respond "*" ":cc rcntrl rdev rexpr rfile rfonts richar ridn rin rin1 rin2\r" respond "*" ":cc rits rline rlpt rmain rmisc rout rreadr rreg rreq1 rreq2\r" respond "*" ":cc rreq3 rtext rtoken rtrap rvaria rxgp\r" @@ -1547,7 +1483,7 @@ proc build_c_program {input output {libs {}}} { } # OINIT -respond "*" ":cwd c\r" +cwd "c" build_c_program "sysen2/oinit" "sys3/ts.oinit" # RALP @@ -1609,76 +1545,62 @@ respond "*" ":midas sys1; ts gtload_syseng; gtload\r" expect ":KILL" # RUG, PDP-11 debugger. -respond "*" ":cwd pdp11\r" -respond "*" ":palx rug\r" -respond "?" "2\r" -respond "?" "100000\r" -respond "?" "1\r" -respond "?" "1\r" -expect ":KILL" +cwd "pdp11" +palx "pdp11;" "rug" { + respond "?" "2\r" + respond "?" "100000\r" + respond "?" "1\r" + respond "?" "1\r" +} # URUG, GT40 debugger. -respond "*" ":palx sysbin;_sysen2;urug\r" -respond "=YES" "1\r" -respond "37000" "37000\r" -expect ":KILL" +palx "sysbin;" "sysen2;urug" { + respond "=YES" "1\r" + respond "37000" "37000\r" +} # GT40 Lunar Lander. -respond "*" ":palx gt40;_gt40;gtlem\r" -expect ":KILL" +palx "gt40;" "gt40;gtlem" # MINITS -respond "*" ":cwd mits.s\r" -respond "*" ":palx test_config\r" -respond ":::" "777\r" -expect ":KILL" +cwd "mits.s" +palx "test" "config" { + respond ":::" "777\r" +} # MINITS boot ROM for an Interlan network interface. -respond "*" ":cwd mits.b\r" -respond "*" ":palx bootil\r" -respond "Interlan CSR?" "0\r" -respond "Chaos address of Interlan board?" "0\r" -expect "Which set of downloading hosts?" -respond ")" "0\r" -respond "Start address?" "0\r" -respond "Do you want a power up/boot support" "0\r" -respond "Boot PROM mapping kludge?" "0\r" -respond "Start of temporary data storage?" "150000\r" -expect ":KILL" +cwd "mits.b" +palx "mits.b;" "bootil" { + respond "Interlan CSR?" "0\r" + respond "Chaos address of Interlan board?" "0\r" + expect "Which set of downloading hosts?" + respond ")" "0\r" + respond "Start address?" "0\r" + respond "Do you want a power up/boot support" "0\r" + respond "Boot PROM mapping kludge?" "0\r" + respond "Start of temporary data storage?" "150000\r" +} # ITS universal file. -respond "*" ":cwd decsys\r" -respond "*" ":macro\r" -respond "*" "sits.unv=sits.mac\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" +cwd "decsys" +macro10 "sits.unv" "sits.mac" # Datacomputer file transfer. -respond "*" ":cwd mrc\r" -respond "*" ":macro\r" -respond "*" "dftp=dftp\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" -respond "*" ":dec sys:link\r" -respond "*" "dftp/go\r" -expect "EXIT" -respond "*" ":start 45\r" -respond "Command" "d" -respond "*" ":pdump sys1; ts dftp\r" -respond "*" ":kill\r" +cwd "mrc" +macro10 "dftp" "dftp" +linker "dftp" +decuuo "sys1; ts dftp" # PDP-11 Lisp. -respond "*" ":palx rms;_lisp11\r" -respond "System (RANDOM, SIMULATOR, LOGO, MATH, or STANFORD)?" "SIMULATOR\r" -expect ":KILL" +palx "rms;" "lisp11" { + respond "System (RANDOM, SIMULATOR, LOGO, MATH, or STANFORD)?" "SIMULATOR\r" +} # Logo RUG. STUFF prefers it to be RUG; AR BIN. -respond "*" ":palx rug;_ar\r" -# We'll just do the Logo PDP-11/45. -respond "COMPUTER=" "1\r" -expect ":KILL" +palx "rug;" "ar" { + # We'll just do the Logo PDP-11/45. + respond "COMPUTER=" "1\r" +} # PUNCH, punch out paper tapes in the Logo RUG format. respond "*" ":midas rug; ts punch_punch\r" @@ -1688,80 +1610,58 @@ expect ":KILL" respond "*" ":midas rug;_loder\r" expect ":KILL" respond "*" ":link sys; ts nloder, rug; loder bin\r" -type ":vk\r" respond "*" ":link sys1; ts mloder, rug; loder bin\r" -type ":vk\r" # SITS. -respond "*" ":cwd sits\r" -respond "*" ":palx sits\r" -expect ":KILL" +cwd "sits" +palx "sits;" "sits" # Salvager for the SITS file system. -respond "*" ":palx salv\r" -expect ":KILL" +palx "sits;" "salv" # System Sphere for SITS. -respond "*" ":palx sysspr\r" -expect ":KILL" +palx "sits;" "sysspr" # DDT for SITS. -respond "*" ":palx ddt\r" -expect ":KILL" +palx "sits;" "ddt" # Font loader daemon for SITS. -respond "*" ":palx fnt\r" -expect ":KILL" +palx "sits;" "fnt" # INQUIR for SITS. -respond "*" ":palx inquir\r" -expect ":KILL" +palx "sits;" "inquir" # DIRED for SITS. -respond "*" ":palx dired\r" -expect ":KILL" +palx "sits;" "dired" # TECO for SITS. -respond "*" ":cwd rjl\r" -respond "*" ":palx teco\r" -expect ":KILL" +cwd "rjl" +palx "rjl;" "teco" # SLOGO, 11LOGO for SITS. -respond "*" ":cwd nlogo\r" -respond "*" ":palx slogo_@slogo\r" -expect ":KILL" +cwd "nlogo" +palx "slogo" "@slogo" # HLOGO, "Hal hack" 11LOGO. -respond "*" ":palx hlogo_@hlogo\r" -expect ":KILL" +palx "hlogo" "@hlogo" # ITSCOM, ITS-SITS communication. -respond "*" ":cwd bee\r" -respond "*" ":palx itscom\r" -expect ":KILL" +cwd "bee" +palx "bee;" "itscom" # ITS, SITS file transfer. -respond "*" ":cwd gld\r" -respond "*" ":palx its\r" -expect ":KILL" +cwd "gld" +palx "gld;" "its" # TORTIS respond "*" ":midas;324 radia;_tortis\r" expect ":KILL" # BBN Logo -respond "*" ":cwd bbn\r" -respond "*" ":macro\r" -respond "*" "logo=logo\r" -expect "CORE USED" -respond "*" "\003" -respond "*" ":kill\r" -respond "*" ":dec sys:loader\r" -respond "*" "logo/g\r" -respond "EXIT" ":start 45\r" -respond "Command:" "d" -respond "*" ":pdump bbn; ts logo\r" -respond "*" ":kill\r" +cwd "bbn" +macro10 "logo" "logo" +loader "logo" +decuuo "bbn; ts logo" # CLOGO respond "*" ":midas sys; ts clogo_rjl; logo\r" @@ -1775,7 +1675,7 @@ respond "DFLAG=" "1\r" expect ":KILL" # NVMIDS, Nova assembler -respond "*" ":cwd nova\r" +cwd "nova" respond "*" ":midas;73\r" expect "MIDAS" respond "\n" "TS NVMIDS_NVMIDS >\r" @@ -1812,13 +1712,13 @@ respond "\n" "TIME MACHIN\r" expect ":KILL" # 11LOGO -respond "*" ":cwd 11logo\r" -respond "*" ":plx143 /H/M/CL BIN,N CREF_SYSTEM,TYI,READ,EVAL,TURTLE,ZEND\r" -respond "ASSSW=" "0\r" -expect ":KILL" +cwd "11logo" +palx "/H/M/CL BIN,N CREF" "SYSTEM,TYI,READ,EVAL,TURTLE,ZEND" { + respond "ASSSW=" "0\r" +} # Apple II Logo -respond "*" ":cwd aplogo\r" +cwd "aplogo" respond "*" ":cross\r" respond "*" "logo/ptp,logo=logo\r" expect "Core used" @@ -1826,7 +1726,7 @@ respond "*" "\003" respond "*" ":kill\r" # Atari 800 terminal emulator Chameleon by Jack Palevich. -respond "*" ":cwd atlogo\r" +cwd "atlogo" respond "*" ":cross\r" respond "*" "supdup,supdup=supdup/m65\r" expect "Core used" @@ -1879,7 +1779,7 @@ respond "*" ":midas mudsys;ts stink_sysen2;stink 121t\r" expect ":KILL" # Move hello world xfiles into an archive. -respond "*" ":cwd hello\r" +cwd "hello" respond "*" ":move dsk:c xfile, ar:\r" respond "*" ":move dsk:clu xfile, ar:\r" respond "*" ":move dsk:clu xxfile, ar:\r" diff --git a/build/muddle.tcl b/build/muddle.tcl index 591282f7e..e4482ec6e 100644 --- a/build/muddle.tcl +++ b/build/muddle.tcl @@ -3,7 +3,7 @@ log_progress "ENTERING BUILD SCRIPT: MUDDLE" mkdir "mudsav" proc build_muddle {dir version} { - respond "*" ":cwd $dir\r" + cwd "$dir" respond "*" ":xfile mud$version assem\r" expect -timeout 300 "Assembly done!" diff --git a/build/sail.tcl b/build/sail.tcl index 5866c07d9..990a22362 100644 --- a/build/sail.tcl +++ b/build/sail.tcl @@ -1,7 +1,7 @@ log_progress "ENTERING BUILD SCRIPT: SAIL" # stktrn -respond "*" ":cwd sail\r" +cwd "sail" respond "*" ":fail stktrn\r" # jobdat @@ -39,7 +39,7 @@ respond "*" ":link sys1; ts pc, datdrw; pc bin\r" respond "*" ":link sys1; ts scnv, datdrw; scnv bin\r" # The drawing program needs WL; BOARDS REL -respond "*" ":cwd wl\r" +cwd "wl" respond "*" ":fail boards\r" respond ";^C" ";\003" @@ -50,7 +50,7 @@ respond "SELECTED" ";\003" respond "*" "\032:kill\r" # SUDS drawing program -respond "*" ":cwd draw\r" +cwd "draw" respond "*" ":fail d\r" respond ";^C" ";\003" respond "*" "\032:kill\r" @@ -94,7 +94,7 @@ respond "\n" ":pdump datdrw; lay bin\r" respond "*" ":kill\r" # SUDS wirelist program. -respond "*" ":cwd wl\r" +cwd "wl" respond "*" ":fail wl\r" respond "*" "wboard\r" respond "*" "\032:kill\r" diff --git a/build/shrdlu.tcl b/build/shrdlu.tcl index e0ef4f470..b204225c6 100644 --- a/build/shrdlu.tcl +++ b/build/shrdlu.tcl @@ -1,6 +1,6 @@ log_progress "ENTERING BUILD SCRIPT: SHRDLU" -respond "*" ":cwd shrdlu\r" +cwd "shrdlu" # first, compile all the sources that should be compiled diff --git a/build/timestamps.txt b/build/timestamps.txt index 0a62fce41..316565dba 100644 --- a/build/timestamps.txt +++ b/build/timestamps.txt @@ -283,6 +283,8 @@ decsys/lnklod.shr 197811110602.40 decsys/lnkscn.shr 197811110609.48 decsys/lnkxit.shr 197811110601.58 decsys/loader.shr 197603142216.18 +decsys/macn11.hdr 197411160000.00 +decsys/macn11.mac 197501140000.00 decsys/macro.shr 197603142216.26 decsys/macten.mac 197501040000.00 decsys/sits.mac 197609010303.16 @@ -887,6 +889,7 @@ info/lispt.22 197803112120.26 _info_/lisp.trace 197501181143.25 _info_/lisp.whovar 198102200255.12 _info_/lmodem.help 198106051040.17 +info/macn11.doc 197411060000.00 info/macsym.12 198303130147.18 info/mail.12 198201140231.54 info/meter.1 197707100346.21 diff --git a/build/typeset.tcl b/build/typeset.tcl index e1b601dc5..1fec1c2fb 100644 --- a/build/typeset.tcl +++ b/build/typeset.tcl @@ -16,5 +16,5 @@ respond "_" "lmdoc;paper_lmdoc;paper\r" expect ":KILL" # R manual. -respond "*" ":cwd r\r" +cwd "r" respond "*" ":r rman.r\r" diff --git a/doc/info/macn11.doc b/doc/info/macn11.doc new file mode 100644 index 000000000..507866caa --- /dev/null +++ b/doc/info/macn11.doc @@ -0,0 +1,358 @@ + + + + + + MACN11 is a PDP-11 MACRO language assembler which operates + on the PDP-10. This document describes version 3 of MACN11; with + the exception of differences listed in the following pages, it is + compatible with the language accepted by MACRO-11 under DOS + Version 9, as described in DEC's DOS/BATCH assembler manual + (order no. DEC-11-LASMA-A-D). + + Bug reports, comments, and suggestions concerning either + version of MACN11 are welcome via net mail to Raveling@ISIB. + + Notes on MACN11 Version 3 Page 2 + + + + -------- Language Variations from MACRO-11 --------- + + + + << Features not yet supported >> + + + .PSECT -- Not recognized at present. + .DSABL REG -- Parsed properly but ignored; + Register definitions are always enabled + at present. + + + Both of these features will be supported in version 4. + + + + + + << Differences in defaults >> + + + Default modes for the .LIST/.NLIST and .ENABL/.DSABL + directives can be changed by assembly parameters in MACN11. + In the configuration maintained by ISI these defaults match + MACRO-11's except for the following: + + .NLIST TTM ; [format listings for lpt output] + .ENABL LC ; [don't fold lower case] + + + + + Notes on MACN11 Version 3 Page 3 + + + + << Language extensions >> + + + .ASCII & .ASCIZ + + MACN11 allows multiple expressions, rather than just one, + within brackets. Expressions are delimited by commas. + E.g., "" can be written as "". + + + .ENABL & .DSABL + + These verbs recognize two nonstandard operands: + + NSF (Nonstandard features): Enabled by default. + Enabling NSF allows use of MACN11's extended features. + Disabling limits the acceptable source language to + being strictly compatible with MACRO-11. + + ISD (Internal Symbol Definitions): Disabled by default + Enabling ISD includes definitions of internal symbols, + as well as global symbols, in the object module output. + These definitions allow generation of a symbol table + for debuggers such as DDT-11. + + HOV (Hexadecimal override): Disabled by default. If the + current radix is 16 and HOV is enabled, then terms of + expressions which begin with A-F are assumed to be hex + numbers, rather than symbols. E.g., + + .ENABL HOV ; Enabling hex override causes + MOV A,R0 ; this instruction to load 10. into + ; R0, rather than the address of a + ; word labelled A. + + + .ENDM + + Interior macro definitions within a nest can be terminated + by a .ENDM whose operand is the name of an exterior + definition. + + + Hexadecimal numbers + + Hex numbers, using the digits 0-9 and A-F, may be used via + extensions of the existing radix control functions. .RADIX + accepts 16 as a valid operand to set the current default + radix, and temporary radix control includes "H" in addition + to the standard "D", "O", and "B". + + When using hexadecimal as the default radix it is normally + necessary to prefix numbers beginning with A-F by a 0; + + Notes on MACN11 Version 3 Page 4 + + + + otherwise they would be parsed as symbols. Use of .ENABL + HOV eliminates this need at the cost of making symbols + beginning with A-F inaccessible. + + + Logical shift operator ("_") + + An additional binary operator is recognized in expression + evaluation. "a_b" is evaluated as "the value of a shifted + left b bits". If b is negative, the term is shifted right. + Both a and b may be any valid term, including a bracketed + expression. + + A common use for this operator is in defining symbolic + values for bit masks. For example, "INTENA = 1_6" defines + an interrupt enable mask as a 1 in bit 6. + + + .PDP10 + + The ".PDP10" directive is recognized, but is ignored. This + is for the sake of assembling Bliss-11 compiler output. + + + + Predefined symbols + + Symbols can be predefined by assembling their symbol table + entries into MACN11. At present register names (R0-R7, SP, + and PC) and ".MACN." are defined in this way. .MACN. is + equated to the assembler's version number. + + + Radix 50 terms in expressions: ^R + + "^R" is recognized as a unary operator in expressions, + indicating that the next three characters are to be + converted to radix 50 format for use as a 16-bit value. Any + character without a radix 50 equivalent is treated as a + delimiter, and is taken as equivalent to trailing blanks in + evaluating the term. + + + .SBHED + + A new directive, .SBHED, specifies a subheading; it + functions as a conditional .PAGE followed by a .SBTTL. It + skips to a new page unless the most recent listing output + was a page skip, then outputs a standard page heading. + .SBHED's operand field is included in the table of contents + and in all page subheadings until another .SBHED or a .SBTTL + is issued. The .SBHED directive itself is the first line + listed below the new page heading. + + Notes on MACN11 Version 3 Page 5 + + + + ---------------- Operating Procedures ----------------- + + + + Operating procedures for MACN11 version 3 are nearly + identical to MACRO-11's. The only differences are the following: + + "=" and "_" are accepted as synonyms for "<". + The /PA switch is accepted but is ignored. + An additional switch, /FO, is available to specify + the PDP-10 file format for object output. + Cross references are pretty disgusting. + + Details of these differences are included in the description + below. + + + + + MACN11 assembles one or more source files, normally + producing two files: a relocatable object module and an assembly + listing. Command string syntax is similar to MACRO-11's. + + Object files normally are generated in packed format, with + each PDP-11 word right-adjusted in a PDP-10 halfword. This + format is standard for other utilities which may deal with these + files (LNKX11, LINK11, FILEX, etc.). + + + Command Input String + + + When MACN11 is ready for a command it lists its name and + version number on the user's terminal, then outputs a "*" on a + new line. In return it expects the following sort of string: + + + object,listing Generate CCL support + + CMUSW 0 1 => Handle CMU PPNs + in file names + + STANSW 0 1 => Handle Stanford PPNs + + PAGSIZ D54 Number of lines per page + on listing output + + ENDEF LCFLG+PNCFLG+REGFLG Default .ENABL modes; bit names + are "xxxFLG", where "xxx" is an + operand of .ENABL/.DSABL. + + LDEF 777777-LLD-LME-LMEB-LTTM Default .LIST modes; bit names + are "Lxxx", where "xxx" is an + operand of .LIST/.NLIST. + + + + Additional symbols can be predefined by assembling their + definitions into the prototype symbol table which begins at + location PERMST, near the end of the assembly. This table is + kept in ascending order by the .RAD50 (mod 40) value of the + symbol, which is equivalent to alphabetic order except for "." + and "$". Entry format is . . . + + XWD ; type-flags,value + GENM40 N,A,M,E ; 1-6 characters + + Type flags may be . . . + + DEFSYM -- Symbol is defined + REGSYM -- Symbol identifies a register + GLBSYM -- Symbol is global (external if DEFSYM not set) + + Notes on MACN11 Version 3 Page 8 + + + + --------- Internal Symbol Definitions ---------- + + + + When ISD is enabled, internal symbol definition entries + When .ENABL ISD is in effect, internal symbol definition entries + are included in the generated object module's global symbol + dictionary. These are type 2 GSD entries, which are identified + in appendix B (B.1.3) of the DOS/Batch Linker manual. Their + format is: + + + --------------------------------- + ! Symbol ! + ! Name ! + --------------------------------- + ! 2 ! Flags ! + --------------------------------- + ! Value ! + --------------------------------- + + + The symbol name is two words in .RAD50 format. + + The flag byte currently has only one bit defined: Bit 0 is set if + the symbol is a register name. All undefined bits are set to 0. + + The value is identical to that field in global symbol name (type + 4) entries: It is the symbol's offset from the start of the csect + identified by the most recent type 1 (csect name) entry. ISD + values are absolute if they follow the absolute csect's type 1 + entry.î \ No newline at end of file diff --git a/doc/programs.md b/doc/programs.md index b05e8d2e2..885782bb3 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -210,6 +210,7 @@ - LUSER, request help from registered list of logged-in users. - MBXLOC, lock a mailbox. - MACDMP, standalone program loader/dumper for DECtape. +- MACN11, PDP-11 cross assembler. - MACN80, Z80 cross assembler. - MACRO-10, DEC assembler. - MACSYMA, symbolic manipulation system. diff --git a/src/decsys/macn11.hdr b/src/decsys/macn11.hdr new file mode 100644 index 000000000..aa092f612 Binary files /dev/null and b/src/decsys/macn11.hdr differ diff --git a/src/decsys/macn11.mac b/src/decsys/macn11.mac new file mode 100644 index 000000000..d9bbb0972 Binary files /dev/null and b/src/decsys/macn11.mac differ