Skip to content

Commit 9bd0efa

Browse files
committed
Add a TCL procedure for running MIDAS.
1 parent 9ffb7a6 commit 9bd0efa

20 files changed

+629
-982
lines changed

build/basics.tcl

+75-127
Large diffs are not rendered by default.

build/build.tcl

+10
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,16 @@ proc arpanet {rfc file} {
173173
}
174174
}
175175

176+
proc midas {target source {action ""}} {
177+
respond "*" ":midas ${target}_$source\r"
178+
eval $action
179+
expect ":KILL"
180+
}
181+
182+
proc midast {target source {action ""}} {
183+
midas "/t $target" $source $action
184+
}
185+
176186
proc macro {target sources} {
177187
respond "*" ":macro\r"
178188
respond "*" "$target=$sources\r"

build/dm.tcl

+14-20
Original file line numberDiff line numberDiff line change
@@ -4,48 +4,42 @@ log_progress "ENTERING BUILD SCRIPT: DM"
44
# Dynamic Modeling PDP-10.
55

66
# Demon starter.
7-
respond "*" ":midas sys; atsign demstr_sysen2; demstr\r"
8-
expect ":KILL"
7+
midas "sys; atsign demstr" "sysen2; demstr"
98

109
# Demon status. Self purifying.
11-
respond "*" ":midas sysen2; ts demst_sysen2; demst\r"
12-
expect ":KILL"
10+
midas "sysen2; ts demst" "sysen2; demst"
1311

1412
# Gun down dead demons.
1513
respond "*" ":link taa; pwfile 999999, sysen1; pwfile >\r"
16-
respond "*" ":midas sysbin;_sysen2; gunner\r"
17-
expect ":KILL"
14+
midas "sysbin;" "sysen2; gunner"
1815
respond "*" ":link sys; atsign gunner, sysbin; gunner bin\r"
1916

2017
# Line printer unspooler demon.
21-
respond "*" ":midas sys; atsign unspoo_sysen1; unspoo\r"
22-
# Just accept the defaults for now.
23-
respond "(CR) FOR DEVICE LPT, nn FOR Tnn" "\r"
24-
respond "(CR) FOR .LPTR. DIRECTORY, OR TYPE NEW NAME" "\r"
25-
expect ":KILL"
18+
midas "sys; atsign unspoo" "sysen1; unspoo" {
19+
# Just accept the defaults for now.
20+
respond "(CR) FOR DEVICE LPT, nn FOR Tnn" "\r"
21+
respond "(CR) FOR .LPTR. DIRECTORY, OR TYPE NEW NAME" "\r"
22+
}
2623

2724
# ARPANET support, Dynamic Modeling demon style
2825
if [string equal "$mchn" "DM"] {
29-
respond "*" ":midas sys;atsign netrfc_syseng; netrfc\r"
30-
respond "DEMONP=" "1\r"
31-
expect ":KILL"
26+
midas "sys;atsign netrfc" "syseng; netrfc" {
27+
respond "DEMONP=" "1\r"
28+
}
3229
}
3330

3431
# Arpanet survey demon.
35-
respond "*" ":midas sys; atsign survey_survey; survey\r"
36-
expect ":KILL"
32+
midas "sys; atsign survey" "survey; survey"
3733

3834
# Survey giver demon.
39-
respond "*" ":midas survey; atsign surgiv_surgiv\r"
40-
expect ":KILL"
35+
midas "survey; atsign surgiv" "surgiv"
4136
respond "*" ":link sys; atsign surgiv, survey;\r"
4237

4338
# Survey sender demon.
4439
respond "*" ":link sys; atsign sursnd, survey;\r"
4540

4641
# Login program.
47-
respond "*" ":midas sysbin;_syseng; booter\r"
48-
expect ":KILL"
42+
midas "sysbin;" "syseng; booter"
4943
# Enter an empty password for AS.
5044
respond "*" ":job pw\r"
5145
respond "*" "2/"

build/emacs.tcl

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
respond "*" ":midas sysbin;_.teco.;teco\r"
2-
expect ":KILL"
1+
midas "sysbin;" ".teco.;teco"
32
respond "*" ":job teco\r"
43
respond "*" ":load sysbin;teco bin\r"
54
sleep 2
@@ -105,8 +104,7 @@ respond "*" ":rename emacs;\[rmai\] \021:ej, emacs;\[rmai\] 147\r"
105104
respond "*" ":link emacs;emacs init,emacs;* emacs\r"
106105

107106
# make TS BABYL
108-
respond "*" ":midas sys3;ts babyl_kmp;babyl\r"
109-
expect ":KILL"
107+
midas "sys3;ts babyl" "kmp;babyl"
110108

111109
# INFO
112110
# For some unknown reason, we can't use a printing terminal when

build/ka10/include.tcl

+18-23
Original file line numberDiff line numberDiff line change
@@ -83,44 +83,39 @@ proc its_switches {} {
8383
}
8484

8585
proc make_ntsddt {} {
86-
respond "*" ":midas dsk0:.;@ ddt_system;ddt\r"
87-
respond "cpusw=" "0\r"
88-
respond "ndsk=" "0\r"
89-
respond "dsksw=" "0\r"
90-
respond "dsktp=" "0\r"
91-
respond "1PRSW=" "1\r"
92-
expect ":KILL"
86+
midas "dsk0:.;@ ddt" "system;ddt" {
87+
respond "cpusw=" "0\r"
88+
respond "ndsk=" "0\r"
89+
respond "dsksw=" "0\r"
90+
respond "dsktp=" "0\r"
91+
respond "1PRSW=" "1\r"
92+
}
9393

9494
# Old NTS DDT with 340 support.
95-
respond "*" ":midas dsk0:.;@ ntsddt_syseng; ntsddt\r"
96-
expect ":KILL"
95+
midas "dsk0:.;@ ntsddt" "syseng; ntsddt"
9796
}
9897

9998
proc make_salv {} {
10099
global mchn
101100

102-
respond "*" ":midas dsk0:.;_system;salv\r"
103-
respond "time-sharing?" "n\r"
104-
respond "machine?" "$mchn\r"
105-
expect ":KILL"
101+
midas "dsk0:.;" "system;salv" {
102+
respond "time-sharing?" "n\r"
103+
respond "machine?" "$mchn\r"
104+
}
106105
}
107106

108107
proc make_dskdmp {} {
109108
global emulator_escape
110109
global out
111110

112111
# On-disk @ DSKDMP.
113-
respond "*" ":midas dsk0:.;@ dskdmp_system;dskdmp\r"
114-
dskdmp_switches "N"
115-
expect ":KILL"
112+
midas "dsk0:.;@ dskdmp" "system;dskdmp" { dskdmp_switches "N" }
116113

117114
# Paper tape DSKDMP. This is used for booting ITS.
118115
respond "*" $emulator_escape
119116
punch_tape "$out/dskdmp.rim"
120117
type ":vk\r"
121-
respond "*" ":midas ptp:_system;dskdmp\r"
122-
dskdmp_switches "Y"
123-
expect ":KILL"
118+
midas "ptp:" "system;dskdmp" { dskdmp_switches "Y" }
124119
}
125120

126121
proc dump_switches {} {
@@ -162,10 +157,10 @@ proc bootable_tapes {} {
162157
global out
163158
global mchn
164159

165-
respond "*" ":midas .;magdmp bin.${mchn}_syseng;magdmp\r"
166-
respond "PTRHRI=" "n\r"
167-
magdmp_switches
168-
expect ":KILL"
160+
midas ".;magdmp bin.${mchn}" "syseng;magdmp" {
161+
respond "PTRHRI=" "n\r"
162+
magdmp_switches
163+
}
169164

170165
respond "*" $emulator_escape
171166
create_tape "$out/magdmp.tape"

build/ka10/processor.tcl

+51-72
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,15 @@ respond "*" ":midas;324 dsk0:.;@ mark_syseng; mark\r"
2020
expect ":KILL"
2121

2222
# utnam
23-
respond "*" ":midas sys3; ts utnam_lars; utnam\r"
24-
expect ":KILL"
23+
midas "sys3; ts utnam" "lars; utnam"
2524

2625
# Name Dragon
2726
respond "*" ":link syseng;tvkbd rooms, sysen2;\r"
28-
respond "*" ":midas sysbin;_sysen2;namdrg\r"
29-
expect ":KILL"
27+
midas "sysbin;" "sysen2;namdrg"
3028
respond "*" ":link channa;rakash namdrg, sysbin; namdrg bin\r"
3129

3230
# STUFF
33-
respond "*" ":midas sys1;ts stuff_sysen2;stuff\r"
34-
expect ":KILL"
31+
midas "sys1;ts stuff" "sysen2;stuff"
3532
respond "*" ":link channa;rakash tvfix, sys1; ts stuff\r"
3633

3734
# IOELEV, PDP-11 doing I/O for the PDP-10 host.
@@ -58,7 +55,7 @@ expect ":KILL"
5855
cwd "spcwar"
5956
respond "*" ":midas;324 spcwar; war\r"
6057
expect ":KILL"
61-
respond "*" ":midas spcwar; stars\r"
58+
midas "spcwar;" "stars"
6259
expect ":KILL"
6360
respond "*" ":midas;324 spcwar; math\r"
6461
expect ":KILL"
@@ -82,24 +79,23 @@ respond "recording" "\r"
8279
expect ":KILL"
8380

8481
# Spacewar, timesharing
85-
respond "*" ":midas games;ts spcwar_spcwar; spcwar\r"
86-
respond "ITS version" "YES\r"
87-
respond "ships" "\r"
88-
respond "designs" "\r"
89-
respond "suns" "\r"
90-
expect ":KILL"
82+
midas "games;ts spcwar" "spcwar; spcwar" {
83+
respond "ITS version" "YES\r"
84+
respond "ships" "\r"
85+
respond "designs" "\r"
86+
respond "suns" "\r"
87+
}
9188

9289
# PDP-6/10 Dazzle Dart
93-
respond "*" ":midas games;ts dazdrt_klh; dazdrt\r"
94-
respond "Run under ITS?" "YES\r"
95-
expect ":KILL"
90+
midas "games;ts dazdrt" "klh; dazdrt" {
91+
respond "Run under ITS?" "YES\r"
92+
}
9693
respond "*" ":midas;324 dsk0:.;@ dazdrt_klh; dazdrt\r"
9794
respond "Run under ITS?" "NO\r"
9895
expect ":KILL"
9996

10097
# Knight TV Spacewar
101-
respond "*" ":midas gjd;_swr data\r"
102-
expect ":KILL"
98+
midas "gjd;" "swr data"
10399
respond "*" ":job swr\r"
104100
respond "*" ":load gjd; swr bin\r"
105101
respond "*" "first\033,last\033\060ygjd; swr ships\r"
@@ -109,52 +105,44 @@ expect ":KILL"
109105

110106
# Dump TV bitmap as XGP scan file.
111107
# TVREAD expects the binary in BKPH.
112-
respond "*" ":midas bkph; ts zap_zap\r"
113-
expect ":KILL"
108+
midas "bkph; ts zap" "zap"
114109

115110
# View bitmap file on TV.
116-
respond "*" ":midas sys2; ts tvread_vis; tvread\r"
117-
expect ":KILL"
111+
midas "sys2; ts tvread" "vis; tvread"
118112

119113
# Save TV display as bitmap file.
120-
respond "*" ":midas sys2; ts tvwrit_sysen2; tvwrit\r"
121-
expect ":KILL"
114+
midas "sys2; ts tvwrit" "sysen2; tvwrit"
122115

123116
# Save TV display as text file.
124-
respond "*" ":midas sys2; ts record_sysen2; record\r"
125-
expect ":KILL"
117+
midas "sys2; ts record" "sysen2; record"
126118

127119
# TV paint program.
128-
respond "*" ":midas sys2; ts tvedit_sysen2; tvedit\r"
129-
expect ":KILL"
120+
midas "sys2; ts tvedit" "sysen2; tvedit"
130121

131122
# KLH's Knight TV clock.
132-
respond "*" ":midas klh; ts tinyw_klh; clock\r"
133-
respond "=" "1\r"
134-
respond "=" "1\r"
135-
expect ":KILL"
136-
respond "*" ":midas klh; ts bigw_klh; clock\r"
137-
respond "=" "1\r"
138-
respond "=" "0\r"
139-
respond "=" "0\r"
140-
expect ":KILL"
141-
respond "*" ":midas klh; ts digiw_klh; clock\r"
142-
respond "=" "1\r"
143-
respond "=" "0\r"
144-
respond "=" "1\r"
145-
expect ":KILL"
123+
midas "klh; ts tinyw" "klh; clock" {
124+
respond "=" "1\r"
125+
respond "=" "1\r"
126+
}
127+
midas "klh; ts bigw" "klh; clock" {
128+
respond "=" "1\r"
129+
respond "=" "0\r"
130+
respond "=" "0\r"
131+
}
132+
midas "klh; ts digiw" "klh; clock" {
133+
respond "=" "1\r"
134+
respond "=" "0\r"
135+
respond "=" "1\r"
136+
}
146137

147138
# XD, view XGP files on TV.
148-
respond "*" ":midas sys3;ts xd_sysen2;xd\r"
149-
expect ":KILL"
139+
midas "sys3;ts xd" "sysen2;xd"
150140

151141
# TV-munching square.
152-
respond "*" ":midas sys2;ts munch_sysen2;munch\r"
153-
expect ":KILL"
142+
midas "sys2;ts munch" "sysen2;munch"
154143

155144
# TITLER
156-
respond "*" ":midas dsk0:.;@ titler_mb; titler\r"
157-
expect ":KILL"
145+
midas "dsk0:.;@ titler" "mb; titler"
158146

159147
# MLIFE
160148
respond "*" ":midas;324 games;ts mlife_rwg;mlife\r"
@@ -172,30 +160,25 @@ respond "*" ":midas;324 dsk0:.;@ 3406_stan.k; 3406\r"
172160
expect ":KILL"
173161

174162
# 340D
175-
respond "*" ":midas stan.k;mod11 bin_340d\r"
176-
expect ":KILL"
163+
midas "stan.k;mod11 bin" "340d"
177164
respond "*" ":link sys1;ts 340d, stan.k; mod11 bin\r"
178165

179166
# Munching squares for 340 display.
180-
respond "*" ":midas lars; ts munch_munch\r"
181-
expect ":KILL"
182-
respond "*" ":midas /t dsk0: .; @ munch_lars; munch\r"
183-
respond "with ^C" ".iotlsr==jfcl\r\003"
184-
expect ":KILL"
167+
midas "lars; ts munch" "munch"
168+
midast "dsk0: .; @ munch" "lars; munch" {
169+
respond "with ^C" ".iotlsr==jfcl\r\003"
170+
}
185171

186172
# Minskytron, translated from PDP-1.
187-
respond "*" ":midas dsk0: lars; ts minsky_minsky tron\r"
188-
expect ":KILL"
173+
midas "dsk0: lars; ts minsky" "minsky tron"
189174
respond "*" ":link dsk0: .; @ minsky, lars; ts minsky\r"
190175

191176
# Edward Lorenz' strange attactor.
192-
respond "*" ":midas dsk0: lars; ts lorenz_lorenz\r"
193-
expect ":KILL"
177+
midas "dsk0: lars; ts lorenz" "lorenz"
194178
respond "*" ":link dsk0: .; @ lorenz, lars; ts lorenz\r"
195179

196180
# Mandelbrot.
197-
respond "*" ":midas lars; ts tvbrot_tvbrot\r"
198-
expect ":KILL"
181+
midas "lars; ts tvbrot" "tvbrot"
199182

200183
# MUSRUN
201184
respond "*" ":midas;77\r"
@@ -217,20 +200,16 @@ respond "*" ":midas;324 sys;ts 10run_sysen2; 10run\r"
217200
expect ":KILL"
218201

219202
# Display all Type 342 characters.
220-
respond "*" ":midas dsk0:maint;_tst342\r"
221-
expect ":KILL"
203+
midas "dsk0:maint;" "tst342"
222204

223205
# XGP spooler
224-
respond "*" ":midas sys2;ts xgpspl_sysen2;xgpspl\r"
225-
expect ":KILL"
206+
midas "sys2;ts xgpspl" "sysen2;xgpspl"
226207

227208
# XGP unspooler
228-
respond "*" ":midas sysbin;_syseng;scrimp\r"
229-
expect ":KILL"
209+
midas "sysbin;" "syseng;scrimp"
230210

231211
# CARPET, remote PDP-11 debugger through Rubin 10-11 interface.
232-
respond "*" ":midas sys3;ts carpet_syseng;carpet\r"
233-
expect ":KILL"
212+
midas "sys3;ts carpet" "syseng;carpet"
234213

235214
# Patch PDP-6 LISP to run on PDP-10.
236215
respond "*" ":job lisp\r"
@@ -252,9 +231,9 @@ respond " " "dsk0:.;@ lisp\r"
252231
respond "*" ":kill\r"
253232

254233
# Lisp display slave, PDP-6 version.
255-
respond "*" ":midas sys; atsign 6slave_sysen2; ld10\r"
256-
respond " PDP6F = " "1\r"
257-
expect ":KILL"
234+
midas "sys; atsign 6slave" "sysen2; ld10" {
235+
respond " PDP6F = " "1\r"
236+
}
258237

259238
# Test for the 340 "hack hack".
260239
respond "*" $emulator_escape

0 commit comments

Comments
 (0)