1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-11 23:53:12 +00:00

Add TCL procedure for purifying or dumping programs.

This commit is contained in:
Lars Brinkhoff 2026-01-05 12:01:54 +01:00
parent 5a8253e0a6
commit e647cc230d
10 changed files with 221 additions and 235 deletions

View File

@ -70,29 +70,27 @@ make_link "sys;atsign device" "sysbin;@dev bin"
# CRTSTY
midas "sysbin;" "syseng;crtsty"
respond "*" ":job crtsty\r"
respond "*" ":load sysbin;crtsty bin\r"
purify crtsty "sysbin;crtsty bin" {
respond "*" "purify\033g"
respond " BIN" "\r"
respond "*" ":kill\r"
}
make_link "sys3;ts crtsty" "sysbin;crtsty bin"
# CTN, networking "supdup" CRTSTY
midast "sysbin;ctn bin" "syseng; crtsty" {
respond "with ^C" "NET==1\r\003"
}
respond "*" ":job ctn\r"
respond "*" ":load sysbin; ctn bin\r"
purify ctn "sysbin; ctn bin" {
respond "*" "purify\033g"
respond " BIN" "sys3; ts ctn\r"
respond "*" ":kill\r"
}
midast "sysbin;" "sysen2;peek" peek_switches
respond "*" ":job peek\r"
respond "*" ":load sysbin;peek bin\r"
purify peek "sysbin;peek bin" {
respond "*" "purify\033g"
respond {$G} "q"
expect ":KILL"
}
make_link "sys; ts p" "sys; ts peek"
midas "device;jobdev arc" "syseng;arcdev"
@ -248,20 +246,20 @@ midas "inquir;inqupd bin" "inquir;inqupd"
midas "inquir;dirs bin" "inquir;dmunch"
# create .temp.;lsr1 empty
respond "*" "lsrini\033j"
respond "*" "\033linquir;inqupd bin\r"
purify lsrini "inquir;inqupd bin" {
respond "*" "\033g"
expect ":KILL"
}
# create inquir;lsr1 1
respond "*" ":move .temp.;lsr1 empty,inquir;lsr1 1\r"
# Now create INQUIR updates in new database
# note: this reads the file inquir;.upd1. > and loads entries into the LSR database
respond "*" "inqupd\033j"
respond "*" "\033linquir;inqupd bin\r"
purify inqupd "inquir;inqupd bin" {
respond "*" "\033g"
expect ":KILL"
}
# pword/panda
midas "sysbin;panda bin" "sysen1;pword" {
@ -271,17 +269,16 @@ midas "sysbin;pword bin" "sysen1;pword" {
respond "Is this to be a PANDA?" "no\r"
}
midas "sysbin;pwinit bin" "sysen1;pwinit"
respond "*" ":job pwinit\r"
respond "*" ":load sysbin;pwinit\r"
purify pwinit "sysbin;pwinit" {
respond "*" "\033g"
}
respond "*" ":copy cstacy;big dat,sysbin;\021 \021 \021 big \021 \021 0dat\r"
respond "*" ":job panda\r"
respond "*" ":load sysbin;panda bin\r"
purify panda "sysbin;panda bin" {
# set password to "panda"
respond "*" "spword/107150326162\r"
type "purify\033g"
respond "*" ":pdump sysbin;panda bin\r"
respond "*" ":kill\r"
}
make_link "sys;atsign pword" "sysbin;pword bin"
make_link "sys;ts panda" "sysbin;panda bin"
@ -289,10 +286,10 @@ make_link "sys;ts panda" "sysbin;panda bin"
respond "*" ":delete sysbin; hosts3 <\r"
respond "*" ":copy sysbin;name bin,sys;ts name\r"
respond "*" "name\033j"
respond "*" "\033l sys;ts name\r"
purify name "sys;ts name" {
respond "*" "debug/"
respond "-1" "0\r\033g"
}
make_link "sys1;ts when" "sys;ts name"
make_link "sys1;ts whoare" "sys;ts name"
@ -336,11 +333,10 @@ make_link "device;chaos supdup" "sysbin;telser bin"
# decuuo
midas "decsys;" "decuuo"
respond "*" ":job decuuo\r"
respond "*" ":load decsys;decuuo bin\r"
purify decuuo "decsys;decuuo bin" {
respond "*" "purify\033g"
respond "TS DEC" "\r"
respond "*" ":kill\r"
}
make_link "sys;ts dec\021 *" "must; be here"
midas "decsys;" "decbot"

View File

@ -283,6 +283,21 @@ proc linker {files} {
}
}
# Load a binary file, do some potentially purifying and dumping
# actions, and kill the job.
proc purify {job file actions} {
respond "*" ":job $job\r"
respond "*" ":load $file\r"
eval $actions
# Some actions leave the job around, others don't. The following
# will take care of both cases.
respond "*" "$job\033\030"
expect -exact "--Kill--" {
type " "
} -exact "No Such Job" {
}
}
proc decuuo {file {dump ":pdump"}} {
respond "*" ":start 45\r"
respond "Command:" "d"

View File

@ -44,8 +44,8 @@ midas "sysbin;" "syseng; booter"
respond "*" ":job pw\r"
respond "*" "2/"
respond "0" "\0331'AS\033\r"
respond "\n" ":job booter\r"
respond "*" ":load sysbin;\r"
respond "\n" ":vk\r"
purify booter "sysbin;" {
respond "*" "start/"
respond "LITTER" "\033q\033x"
respond "*" "a/"
@ -59,6 +59,6 @@ respond "0" "\0331q\r"
respond "\n" "\033y"
respond " " "sys;\021 \021 pass \021 words\r"
respond "*" ":kill\r"
respond "*" ":kill\r"
}
mkdir "(init)"
make_link "(init); as hactrn" " sys2; ts shell"

View File

@ -1,11 +1,10 @@
midas "sysbin;" ".teco.;teco"
respond "*" ":job teco\r"
respond "*" ":load sysbin;teco bin\r"
purify teco "sysbin;teco bin" {
sleep 2
respond "*" "dumpit\033g"
sleep 2
respond "TECPUR" "\r"
respond "*" ":kill\r"
}
make_link "sys;ts teco" ".teco.;tecpur >"
make_link "sys;ts t" " sys; ts teco"

View File

@ -82,10 +82,9 @@ omidas "dsk0:.;@ dazdrt" "klh; dazdrt" {
# Knight TV Spacewar
midas "gjd;" "swr data"
respond "*" ":job swr\r"
respond "*" ":load gjd; swr bin\r"
purify swr "gjd; swr bin" {
respond "*" "first\033,last\033\060ygjd; swr ships\r"
respond "*" ":kill\r"
}
respond "*" ":midas games;ts tvwar_spcwar; tvwar\r"
expect ":KILL"
@ -190,8 +189,7 @@ midas "sysbin;" "syseng;scrimp"
midas "sys3;ts carpet" "syseng;carpet"
# Patch PDP-6 LISP to run on PDP-10.
respond "*" ":job lisp\r"
respond "*" ":load .; @ lisp\r"
purify lisp ".; @ lisp" {
respond "*" "33777//\031"
respond "*" "\033q\033,777777\033\033z"
respond "*" "pitele+13/"
@ -203,10 +201,9 @@ respond "0" "add b,ticc\n"
respond "0" "dpb b,.+3\n"
respond "0" "pop p,b\n"
respond "0" "jrst pitele+15\n"
respond "0" "331000,,a\r"
respond "\n" "\033y"
respond " " "dsk0:.;@ lisp\r"
respond "*" ":kill\r"
}
# Lisp display slave, PDP-6 version.
midas "sys; atsign 6slave" "sysen2; ld10" {

View File

@ -15,11 +15,10 @@ copy_to_klfe "kldcp; kldcp hlp"
# KL10 microcode assembler
midas "sysbin;" "syseng;micro"
respond "*" ":job micro\r"
respond "*" ":load sysbin; micro bin\r"
purify micro "sysbin; micro bin" {
respond "*" ":start purify\r"
respond "TS MICRO" "sys; ts micro\r"
respond "*" ":kill\r"
}
# Microcode ASCIIzer and binarator converter.
midas "sysbin;" "syseng;cnvrt"

View File

@ -11,12 +11,11 @@ make_link "lisp;loop fasl" "liblsp;loop fasl"
midas ".temp.;" "l;*lisp" {
respond "end input with ^C" "\003"
}
respond "*" ":job lisp\r"
respond "*" ":load .temp.;*lisp bin\r"
purify lisp ".temp.;*lisp bin" {
respond "*" "\033g"
respond "*" "purify\033g"
respond "*" ":pdump sys;purqio 2156\r"
respond "*" ":kill\r"
}
make_link "sys;ts lisp" "sys:purqio >"
make_link "sys;ts q" "sys;purqio >"

View File

@ -32,19 +32,17 @@ respond "*" ":listf sys\r"
mkdir "sysbin"
midas "sysbin;" "midas;midas"
respond "*" ":job midas\r"
respond "*" ":load sysbin;midas bin\r"
purify midas "sysbin;midas bin" {
respond "*" "purify\033g"
respond "CR to dump" "\r"
sleep 2
respond "*" ":kill\r"
}
midas "sysbin;" "sysen1;ddt"
respond "*" ":job ddt\r"
respond "*" ":load sysbin;ddt bin\r"
purify ddt "sysbin;ddt bin" {
respond "*" "purify\033g"
respond "*" ":pdump sys;atsign ddt\r"
respond "*" ":kill\r"
}
midas "dsk0:.;" "system;its" its_switches

View File

@ -7,22 +7,20 @@ midast "sysbin; midas 324bin" "midas; midas 324" {
respond "\n" "ldbi=ildb\r"
respond "\n" "dpbi=idpb\003"
}
respond "*" ":job midas\r"
respond "*" ":load sysbin; midas 324bin\r"
purify midas "sysbin; midas 324bin" {
respond "*" "purify\033g"
respond "TS MIDAS" "midas;ts 324\r"
respond "*" ":kill\r"
}
# MIDAS 77, needed for MUSRUN.
respond "*" ":job midas\r"
respond "*" ":load sysbin; midas 77bin\r"
purify midas "sysbin; midas 77bin" {
# Patch to accomodate more symbols returned from .GETSYS.
respond "*" "tsymgt+5/"
respond "P" "10\r"
respond "\n" "purify\033g"
expect "PURIFIED"
respond "*" ":pdump midas; ts 77\r"
respond "*" ":kill\r"
}
# MIDAS 73, bootstrapped from 77.
oomidas 77 "MIDAS; TS 73" "MIDAS; MIDAS 73"
@ -38,12 +36,11 @@ omidas "sysbin;" "sysen2; mactap"
# TECO6
midas "sysbin;teco 335bin" ".teco.; teco 335"
respond "*" ":job teco\r"
respond "*" ":load sysbin; teco 335bin\r"
purify teco "sysbin; teco 335bin" {
respond "*" "purify\033g"
respond "PURIFIED" "\r"
respond "*" ":pdump .teco.; ts 335\r"
respond "*" ":kill\r"
}
make_link "teach;teach emacs" "emacs;teach emacs"
respond "*" "teach\033\023"
@ -110,11 +107,10 @@ midas "bawden;" "uptime"
# Chaosnet EVACUATE service.
midas "sysbin; evacua" "bawden; evacua"
respond "*" ":job evacua\r"
respond "*" ":load sysbin; evacua bin\r"
purify evacua "sysbin; evacua bin" {
respond "*" "purify\033g"
respond "CHAOS EVACUA" "\r"
respond "*" ":kill\r"
}
# Mini Chaosnet file server. Version 24 is MINI.
midas "sysbin; mini" "lmio; minisr 24"
@ -168,13 +164,12 @@ midas ".mail.;comsat" "sysnet;comsat" comsat_switches
midas "device;jobdev dq" "sysnet;dqxdev" dqxdev_switches
respond "*" "comsat\033j"
respond "*" "\033l.mail.;comsat bin\r"
purify comsat ".mail.;comsat bin" {
respond "*" "debug/0\r"
type "xvers/0\r"
type "purify\033g"
respond ":PDUMP DSK:.MAIL.;COMSAT LAUNCH" "\r"
respond "*" ":kill\r"
}
initialize_comsat
@ -191,11 +186,10 @@ make_link "dragon; hourly gcmail" "sysbin; gcmail bin"
make_link "dragon; hourly gcbulk" "sysbin; gcmail bin"
midas "sysbin;qmail" "ksc;qmail" { respond "PWORD version (Y or N)? " "N\r" }
respond "*" ":job qmail\r"
respond "*" ":load sysbin;\r"
purify qmail "sysbin;" {
respond "*" "purify\033g"
respond "QMAIL BIN" "\r"
respond "*" ":kill\r"
}
make_link "sys;ts mail" "sysbin;qmail bin"
make_link "sys;ts qmail" "sysbin;qmail bin"
@ -445,8 +439,7 @@ midas "sys1;ts wumpus" "games; wumpus"
# Jotto
cwd "games"
midas "games;" "jotto"
respond "*" ":job jotto\r"
respond "*" ":load jotto bin\r"
purify jotto "jotto bin" {
# Run initialisation code to open the TTY channels.
respond "*" "erase0\033bbeg\033g"
# Load dictionary from disk instead of DECtape.
@ -457,7 +450,7 @@ respond "utape drive for dictionary?" "1"
respond "file name?" "JOTTO DICT\r"
# Dump out TS JOTTO including the dictionary.
respond "words" ":pdump sys1;ts jotto\r"
respond "*" ":kill\r"
}
# ngame
midas "games;ts game" "ejs;ngame" {
@ -544,11 +537,10 @@ make_link "sys1;ts charfs" "sys1;ts charfc"
# file
midas "sysbin;" "syseng;file"
respond "*" ":job file\r"
respond "*" ":load sysbin;\r"
purify file "sysbin;" {
respond "*" "purify\033g"
respond "CHAOS FILE" "\r"
respond "*" ":kill\r"
}
# filei, fileo
midas "device;chaos filei" "eak;file"
@ -559,11 +551,10 @@ midas "device;chaos ifile" "syseng;ifile"
# NFILE
midas "alan;" "bawden;nfile"
respond "*" ":job nfile\r"
respond "*" ":load alan;nfile bin\r"
purify nfile "alan;nfile bin" {
respond "*" "purify\033g"
respond "CHAOS NFILE" "\r"
respond "*" ":kill\r"
}
# 11sim
midas "sys;ts pdp45" "syseng;11sim"
@ -655,11 +646,10 @@ midas "sysnet;ts yow" "sysen2; yow"
# @
midas "sysbin;" "sysen1;@"
respond "*" ":job @\r"
respond "*" ":load sysbin;\r"
purify "atsign" "sysbin;@ bin" {
respond "*" "purify\033g"
respond "TS @" "\r"
respond "*" ":kill\r"
}
omidas "dsk0:.;@ pt" "syseng;pt"
@ -696,10 +686,10 @@ make_link "syseng;its defs" "sys;itsdfs >"
midas "sysbin;probe bin" "bawden;probe"
# note: setting debug to 0 and running causes it to pdump itself to
# sys;ts probe
respond "*" ":job probe\r"
respond "*" ":load sysbin;probe bin\r"
purify probe "sysbin;probe bin" {
respond "*" "debug/0\r"
type "\033g"
}
make_link "sys;ts pb" "sys;ts probe"
# TTY
@ -864,11 +854,11 @@ midas "sysbin;" "sysen1; whoiml" {
respond "FILE:" "whoiml\r"
respond "FILE:" "sys2\r"
}
respond "*" ":job whoiml\r"
respond "*" ":load sysbin; whoiml bin\r"
purify whoiml "sysbin; whoiml bin" {
respond "*" "start1\033b\033g"
expect ">>"
respond " " ":kill\r"
respond " " ":vk\r"
}
# VTTIME
midas "sys1;ts vttime" "rvb;vttime"
@ -939,20 +929,20 @@ expect ":KILL"
# XXFILE
midas "sysbin;xxfile bin" "sysen1;xxfile"
respond "*" ":job xxfile\r"
respond "*" ":load sysbin;xxfile bin\r"
purify xxfile "sysbin;xxfile bin" {
respond "*" "ttyop1\033b\033g"
expect ":PDUMP SYS2;TS XXFILE"
expect ">>"
respond " " ":kill\r"
respond " " ":vk\r"
}
# MSEND
midas "sysbin;" "sysen2;msend"
respond "*" ":job msend\r"
respond "*" ":load sysbin;msend bin\r"
purify msend "sysbin;msend bin" {
respond "*" "ttyopn\033b\033g"
expect ">>"
respond " " ":kill\r"
respond " " ":vk\r"
}
# IMLOAD and IMTRAN
midas "sys1; ts imload" "syseng; imload"
@ -1036,12 +1026,11 @@ midas "sysbin;" "klh; mazser" {
respond "DEBUG=" "1\r"
respond "STATS=" "1\r"
}
respond "*" ":job maze\r"
respond "*" ":load sysbin; mazser bin\r"
purify maze "sysbin; mazser bin" {
respond "*" ":start init\r"
respond "M IML" "\r"
respond ":PDUMP" "games; ts maze\r"
respond "*" ":kill\r"
}
# SWAR
midas "imlac;" "imsrc; swar" {
@ -1073,13 +1062,12 @@ respond "@" "\021"
# The old CLIB has a UFA instruction which doesn't work on a KS10.
# Patch out the call to FIXIFY.
respond "*" ":job cc\r"
respond "*" ":load c; ts cc\r"
purify cc "c; ts cc" {
respond "*" "55107/"
respond "FIXIFY" "jfcl\r"
respond "UNPURE" ":corblk pure,55107\r"
respond "*" ":pdump c; ts cc\r"
respond "*" ":kill\r"
}
# CLIB
cwd "clib"
@ -1202,11 +1190,10 @@ expect ":KILL"
# TJ6
midas "sysbin;" "tj6;tj6"
respond "*" ":job tj6\r"
respond "*" ":load sysbin; tj6 bin\r"
purify tj6 "sysbin; tj6 bin" {
respond "*" "purify\033g"
respond "DSK: SYS; TS NTJ6" "\r"
respond "*" ":kill\r"
}
make_link "sys; ts tj6" " sys; ts ntj6"
# Old TJ6.
@ -1228,14 +1215,13 @@ make_link "sys3; ts r" " r; ts r30"
# Binary patch Lisp image to work on ITS not named AI, ML, MC, or DM.
# This is for Bolio.
respond "*" ":job purqio\r"
respond "*" ":load sys; purqio 2138\r"
purify purqio "sys; purqio 2138" {
respond "*" "udirset+20/"
# Cross fingers, nop out valret, hope for best!
respond ".VALUE" "JFCL\r"
respond "UNPURE" ":corblk pure .\r"
respond "*" ":pdump sys; purqio 2138\r"
respond "*" ":kill\r"
}
proc build_c_program {input output {libs {}}} {
respond "*" ":cc $input\r"
@ -1277,28 +1263,25 @@ midas "sys3;ts versa" "dcp; versa"
# SCAN
midas "sysbin;" "sysen1; scan"
respond "*" ":job scan\r"
respond "*" ":load sysbin; scan bin\r"
purify scan "sysbin; scan bin" {
respond "*" "purify\033g"
respond "*" ":pdump sys3; ts scan\r"
respond "*" ":kill\r"
}
# DDT subroutines
midas "sys3;ts cmd" "dcp; cmd"
# XGP and GLP
midas "sysbin;xgp bin" "sysen2;xqueue"
respond "*" ":job xgp\r"
respond "*" ":load sysbin;xgp bin\r"
purify xgp "sysbin;xgp bin" {
respond "*" "debug/0\r"
type ":pdump sys;ts xgp\r"
respond "*" ":kill\r"
}
midast "sysbin;glp bin" "sysen2;xqueue" { respond "with ^C" "GLP==1\r\003" }
respond "*" ":job glp\r"
respond "*" ":load sysbin;glp bin\r"
purify glp "sysbin;glp bin" {
respond "*" "debug/0\r"
type ":pdump sys2;ts glp\r"
respond "*" ":kill\r"
}
# XGPDEV and GLPDEV
midas "device;jobdev xgp" "sysen2;xgpdev"

View File

@ -950,7 +950,7 @@ info/tip.2 198105191613.22
_info_/tj6.info 197407011344.08
_info_/tj6.order 197606110701.50
info/tmacs.12 198104240012.01
_info_/tn6.info 197403067415.11
_info_/tn6.info 197403060715.11
info/trace.1 198002261128.57
_info_/trmctl.aaa 197902091956.02
_info_/trmctl.houstn 198107121646.59