Skip to content

Commit d96ce5b

Browse files
committed
Add a TCL procedure for running MIDAS.
1 parent c0926ae commit d96ce5b

20 files changed

+631
-986
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 macro10 {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

+19-25
Original file line numberDiff line numberDiff line change
@@ -83,44 +83,38 @@ 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 {} {
100-
global mchn
101-
102-
respond "*" ":midas dsk0:.;_system;salv\r"
103-
respond "time-sharing?" "n\r"
104-
respond "machine?" "$mchn\r"
105-
expect ":KILL"
99+
midas "dsk0:.;" "system;salv" {
100+
global mchn
101+
respond "time-sharing?" "n\r"
102+
respond "machine?" "$mchn\r"
103+
}
106104
}
107105

108106
proc make_dskdmp {} {
109107
global emulator_escape
110108
global out
111109

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

117113
# Paper tape DSKDMP. This is used for booting ITS.
118114
respond "*" $emulator_escape
119115
punch_tape "$out/dskdmp.rim"
120116
type ":vk\r"
121-
respond "*" ":midas ptp:_system;dskdmp\r"
122-
dskdmp_switches "Y"
123-
expect ":KILL"
117+
midas "ptp:" "system;dskdmp" { dskdmp_switches "Y" }
124118
}
125119

126120
proc dump_switches {} {
@@ -162,10 +156,10 @@ proc bootable_tapes {} {
162156
global out
163157
global mchn
164158

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

170164
respond "*" $emulator_escape
171165
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.
@@ -53,7 +50,7 @@ palx "cons;" "lmcons;ccons"
5350
cwd "spcwar"
5451
respond "*" ":midas;324 spcwar; war\r"
5552
expect ":KILL"
56-
respond "*" ":midas spcwar; stars\r"
53+
midas "spcwar;" "stars"
5754
expect ":KILL"
5855
respond "*" ":midas;324 spcwar; math\r"
5956
expect ":KILL"
@@ -77,24 +74,23 @@ respond "recording" "\r"
7774
expect ":KILL"
7875

7976
# Spacewar, timesharing
80-
respond "*" ":midas games;ts spcwar_spcwar; spcwar\r"
81-
respond "ITS version" "YES\r"
82-
respond "ships" "\r"
83-
respond "designs" "\r"
84-
respond "suns" "\r"
85-
expect ":KILL"
77+
midas "games;ts spcwar" "spcwar; spcwar" {
78+
respond "ITS version" "YES\r"
79+
respond "ships" "\r"
80+
respond "designs" "\r"
81+
respond "suns" "\r"
82+
}
8683

8784
# PDP-6/10 Dazzle Dart
88-
respond "*" ":midas games;ts dazdrt_klh; dazdrt\r"
89-
respond "Run under ITS?" "YES\r"
90-
expect ":KILL"
85+
midas "games;ts dazdrt" "klh; dazdrt" {
86+
respond "Run under ITS?" "YES\r"
87+
}
9188
respond "*" ":midas;324 dsk0:.;@ dazdrt_klh; dazdrt\r"
9289
respond "Run under ITS?" "NO\r"
9390
expect ":KILL"
9491

9592
# Knight TV Spacewar
96-
respond "*" ":midas gjd;_swr data\r"
97-
expect ":KILL"
93+
midas "gjd;" "swr data"
9894
respond "*" ":job swr\r"
9995
respond "*" ":load gjd; swr bin\r"
10096
respond "*" "first\033,last\033\060ygjd; swr ships\r"
@@ -104,52 +100,44 @@ expect ":KILL"
104100

105101
# Dump TV bitmap as XGP scan file.
106102
# TVREAD expects the binary in BKPH.
107-
respond "*" ":midas bkph; ts zap_zap\r"
108-
expect ":KILL"
103+
midas "bkph; ts zap" "zap"
109104

110105
# View bitmap file on TV.
111-
respond "*" ":midas sys2; ts tvread_vis; tvread\r"
112-
expect ":KILL"
106+
midas "sys2; ts tvread" "vis; tvread"
113107

114108
# Save TV display as bitmap file.
115-
respond "*" ":midas sys2; ts tvwrit_sysen2; tvwrit\r"
116-
expect ":KILL"
109+
midas "sys2; ts tvwrit" "sysen2; tvwrit"
117110

118111
# Save TV display as text file.
119-
respond "*" ":midas sys2; ts record_sysen2; record\r"
120-
expect ":KILL"
112+
midas "sys2; ts record" "sysen2; record"
121113

122114
# TV paint program.
123-
respond "*" ":midas sys2; ts tvedit_sysen2; tvedit\r"
124-
expect ":KILL"
115+
midas "sys2; ts tvedit" "sysen2; tvedit"
125116

126117
# KLH's Knight TV clock.
127-
respond "*" ":midas klh; ts tinyw_klh; clock\r"
128-
respond "=" "1\r"
129-
respond "=" "1\r"
130-
expect ":KILL"
131-
respond "*" ":midas klh; ts bigw_klh; clock\r"
132-
respond "=" "1\r"
133-
respond "=" "0\r"
134-
respond "=" "0\r"
135-
expect ":KILL"
136-
respond "*" ":midas klh; ts digiw_klh; clock\r"
137-
respond "=" "1\r"
138-
respond "=" "0\r"
139-
respond "=" "1\r"
140-
expect ":KILL"
118+
midas "klh; ts tinyw" "klh; clock" {
119+
respond "=" "1\r"
120+
respond "=" "1\r"
121+
}
122+
midas "klh; ts bigw" "klh; clock" {
123+
respond "=" "1\r"
124+
respond "=" "0\r"
125+
respond "=" "0\r"
126+
}
127+
midas "klh; ts digiw" "klh; clock" {
128+
respond "=" "1\r"
129+
respond "=" "0\r"
130+
respond "=" "1\r"
131+
}
141132

142133
# XD, view XGP files on TV.
143-
respond "*" ":midas sys3;ts xd_sysen2;xd\r"
144-
expect ":KILL"
134+
midas "sys3;ts xd" "sysen2;xd"
145135

146136
# TV-munching square.
147-
respond "*" ":midas sys2;ts munch_sysen2;munch\r"
148-
expect ":KILL"
137+
midas "sys2;ts munch" "sysen2;munch"
149138

150139
# TITLER
151-
respond "*" ":midas dsk0:.;@ titler_mb; titler\r"
152-
expect ":KILL"
140+
midas "dsk0:.;@ titler" "mb; titler"
153141

154142
# MLIFE
155143
respond "*" ":midas;324 games;ts mlife_rwg;mlife\r"
@@ -167,30 +155,25 @@ respond "*" ":midas;324 dsk0:.;@ 3406_stan.k; 3406\r"
167155
expect ":KILL"
168156

169157
# 340D
170-
respond "*" ":midas stan.k;mod11 bin_340d\r"
171-
expect ":KILL"
158+
midas "stan.k;mod11 bin" "340d"
172159
respond "*" ":link sys1;ts 340d, stan.k; mod11 bin\r"
173160

174161
# Munching squares for 340 display.
175-
respond "*" ":midas lars; ts munch_munch\r"
176-
expect ":KILL"
177-
respond "*" ":midas /t dsk0: .; @ munch_lars; munch\r"
178-
respond "with ^C" ".iotlsr==jfcl\r\003"
179-
expect ":KILL"
162+
midas "lars; ts munch" "munch"
163+
midast "dsk0: .; @ munch" "lars; munch" {
164+
respond "with ^C" ".iotlsr==jfcl\r\003"
165+
}
180166

181167
# Minskytron, translated from PDP-1.
182-
respond "*" ":midas dsk0: lars; ts minsky_minsky tron\r"
183-
expect ":KILL"
168+
midas "dsk0: lars; ts minsky" "minsky tron"
184169
respond "*" ":link dsk0: .; @ minsky, lars; ts minsky\r"
185170

186171
# Edward Lorenz' strange attactor.
187-
respond "*" ":midas dsk0: lars; ts lorenz_lorenz\r"
188-
expect ":KILL"
172+
midas "dsk0: lars; ts lorenz" "lorenz"
189173
respond "*" ":link dsk0: .; @ lorenz, lars; ts lorenz\r"
190174

191175
# Mandelbrot.
192-
respond "*" ":midas lars; ts tvbrot_tvbrot\r"
193-
expect ":KILL"
176+
midas "lars; ts tvbrot" "tvbrot"
194177

195178
# MUSRUN
196179
respond "*" ":midas;77\r"
@@ -212,20 +195,16 @@ respond "*" ":midas;324 sys;ts 10run_sysen2; 10run\r"
212195
expect ":KILL"
213196

214197
# Display all Type 342 characters.
215-
respond "*" ":midas dsk0:maint;_tst342\r"
216-
expect ":KILL"
198+
midas "dsk0:maint;" "tst342"
217199

218200
# XGP spooler
219-
respond "*" ":midas sys2;ts xgpspl_sysen2;xgpspl\r"
220-
expect ":KILL"
201+
midas "sys2;ts xgpspl" "sysen2;xgpspl"
221202

222203
# XGP unspooler
223-
respond "*" ":midas sysbin;_syseng;scrimp\r"
224-
expect ":KILL"
204+
midas "sysbin;" "syseng;scrimp"
225205

226206
# CARPET, remote PDP-11 debugger through Rubin 10-11 interface.
227-
respond "*" ":midas sys3;ts carpet_syseng;carpet\r"
228-
expect ":KILL"
207+
midas "sys3;ts carpet" "syseng;carpet"
229208

230209
# Patch PDP-6 LISP to run on PDP-10.
231210
respond "*" ":job lisp\r"
@@ -247,9 +226,9 @@ respond " " "dsk0:.;@ lisp\r"
247226
respond "*" ":kill\r"
248227

249228
# Lisp display slave, PDP-6 version.
250-
respond "*" ":midas sys; atsign 6slave_sysen2; ld10\r"
251-
respond " PDP6F = " "1\r"
252-
expect ":KILL"
229+
midas "sys; atsign 6slave" "sysen2; ld10" {
230+
respond " PDP6F = " "1\r"
231+
}
253232

254233
# Test for the 340 "hack hack".
255234
respond "*" $emulator_escape

0 commit comments

Comments
 (0)