├── README.md ├── minits ├── -how-t.21 ├── 11load.17 ├── 11load.18 ├── 11load.bin ├── 11load.files ├── aibr1.opbin ├── aibr1.pbin ├── aibr2.pbin ├── dumper.save ├── ether-.3 ├── minits.4 └── promp.doc ├── mits_b ├── aibr2.pbin ├── arcmac.bin ├── bootil.24 ├── bootil.25 ├── bootil.26 ├── bootil.bin ├── mlbtil.1 ├── mlbtil.bin ├── ne437a.bin ├── ne437b.bin ├── ne437c.bin ├── nikki.bin ├── prom.50 ├── prom.555 └── prom.bin └── mits_s ├── -read-.-this- ├── 3com.3 ├── 3com.kludge ├── 3d.sg ├── aaa.config ├── boot11.1 ├── camac.1 ├── ch11.14 ├── chancp.1 ├── channl.4 ├── chsncp.49 ├── compro.96 ├── config.847 ├── config.848 ├── config.849 ├── conven.macros ├── copy.files ├── cptfnt.nnbits ├── cpu.macros ├── ctv.99 ├── dh11.10 ├── dir.list ├── dl11.4 ├── dmc11.44 ├── dover.1 ├── dr11.2 ├── dte.12 ├── dte.srccom ├── dtecom.1 ├── dup11.74 ├── dup11q.7 ├── dz11.5 ├── een.1 ├── ethncp.21 ├── fast.load ├── finter.7 ├── fladte.1 ├── flair.config ├── foo.2 ├── foo.31 ├── fsm.3 ├── gould.17 ├── gtk.19 ├── hosts.48 ├── hosts.49 ├── hosts.50 ├── hosts.arcmac ├── hosts.org ├── interl.22 ├── ipncp.4 ├── iprout.design ├── lgp.30 ├── lni.3 ├── minits.15 ├── minits.gpalx ├── minits.taggen ├── minmac.3 ├── muldiv.1 ├── new.files ├── nv80.7 ├── oethnc.1 ├── ogould.1 ├── pdl11.11 ├── pdl11.cah ├── pdl11.dcp ├── perf.1 ├── pertek.1 ├── pgancp.1 ├── pktncp.7 ├── pupncp.1 ├── rmp116.1 ├── setup.cmd ├── style.macros ├── templt.config ├── templt.device ├── tty.40 ├── user.7 ├── user.gpalx ├── uuo.3 └── v80.4 /README.md: -------------------------------------------------------------------------------- 1 | # MINITS 2 | 3 | A mini ITS for throwing together hardware. 4 | 5 | ### How to build. 6 | 7 | Run the PALX cross compiler in ITS or TOPS-20. 8 | 9 | ``` 10 | :cwd mits.s 11 | :palx config > 12 | PALX 280 13 | What system are you assembling for? 14 | ``` 15 | 16 | At the `:::` prompt, answer with the number of the configuration you 17 | want to use. 18 | -------------------------------------------------------------------------------- /minits/11load.17: -------------------------------------------------------------------------------- 1 | ; -*- Midas -*- 2 | 3 | title 11LOAD 4 | ; This isn't the original 11LOAD, this source was reconstructed by Alan on 5 | ; 5/27/89 from the binary. 6 | 7 | a=:1 ? chsr==:1 8 | b=:2 ? chsx==:2 9 | c=:3 10 | d=:4 11 | e=:5 12 | vladdr=:6 13 | binptr=:7 14 | blkcnt=:10 15 | pkbcnt=:11 16 | dski=:12 17 | t=:13 18 | tt=:14 19 | chsrcv=:15 20 | chsxmt=:16 21 | p=:17 22 | 23 | .insrt dsk:syseng;chsdef > 24 | 25 | maxbyt==:100. ; Never sends packets with more than this 26 | ; many bytes of data. 27 | 28 | call=:pushj p, 29 | return=:popj p, 30 | 31 | define syscall name,args 32 | .call [setz ? .1stwd sixbit /name/ ? args(400000)] 33 | termin 34 | 35 | tsint: 36 | loc 42 37 | -ltsint,,tsint 38 | loc tsint 39 | p 40 | %piioc ? 0 ? -1 ? -1 ? die 41 | ltsint==:.-tsint 42 | 43 | go: .close 1, 44 | move p,[-lpdl,,pdl-1] 45 | syscall sstatu,[repeat 5, movem junk 46 | movem machin] 47 | call die 48 | .suset [.roption,,t] 49 | tlo t,%opint 50 | .suset [.soption,,t] 51 | .suset [.smask,,[%piioc]] 52 | .suset [.sdf1,,[0]] 53 | tlne t,%opddt 54 | jrst go1 55 | syscall detach,[movsi 7 ? movei %jself] 56 | call die 57 | setom tplvl 58 | setzm jclflg 59 | .suset [.sjname,,[sixbit /11LOAD/]] 60 | .suset [.ssname,,[sixbit /CHAOS/]] 61 | jrst go2 62 | 63 | go1: setzm tplvl 64 | tlnn t,%opcmd 65 | skipa 66 | setom jclflg 67 | go2: syscall chaoso,[movei chsrcv ? movei chsxmt ? movei 1] 68 | call die 69 | skipe tplvl 70 | call ackrfc 71 | call getfn 72 | call mapfil 73 | jrst sndfil 74 | 75 | sndfil: movei binptr,buffer 76 | sblklp: call nxtblk 77 | call pkstrt 78 | jumpe blkcnt,sndend 79 | sbytlp: call putbyt 80 | jumpe blkcnt,[ call sndpkt 81 | call endblk 82 | jrst sblklp ] 83 | jumpe pkbcnt,[ call sndpkt 84 | call pkstrt 85 | jrst sbytlp ] 86 | jrst sbytlp 87 | 88 | nxtblk: movei a,1 89 | came a,(binptr) 90 | aoja binptr,nxtblk 91 | aoj binptr, 92 | skipe (binptr) 93 | aoja binptr,nxtblk 94 | aoj binptr, 95 | move blkcnt,1(binptr) 96 | lsh blkcnt,10 97 | ior blkcnt,0(binptr) 98 | subi blkcnt,6 99 | move vladdr,3(binptr) 100 | lsh vladdr,10 101 | ior vladdr,2(binptr) 102 | addi binptr,4 103 | return 104 | 105 | endblk: aos binptr 106 | return 107 | 108 | pkstrt: movei t,%corfc 109 | dpb t,[$cpkop pktbuf] 110 | move t,ldhost 111 | dpb t,[$cpkda pktbuf] 112 | move t,[.byte 8 ? "L ? "D ? 40 ? 40] 113 | movem t,pktbuf+%cpkdt+0 114 | move dski,[440800,,pktbuf+%cpkdt+1] 115 | move t,vladdr 116 | idpb t,dski 117 | lsh t,-10 118 | idpb t,dski 119 | movei pkbcnt,maxbyt-6 120 | return 121 | 122 | putbyt: move t,(binptr) 123 | aoj binptr, 124 | soj blkcnt, 125 | idpb t,dski 126 | soj pkbcnt, 127 | aoj vladdr, 128 | return 129 | 130 | sndpkt: syscall chaoso,[movei chsr ? movei chsx ? movei 1] 131 | call die 132 | movei t,0 133 | dpb t,[$cpkfc pktbuf] 134 | dpb t,[$cpksa pktbuf] 135 | dpb t,[$cpksi pktbuf] 136 | movei t,maxbyt 137 | sub t,pkbcnt 138 | dpb t,[$cpknb pktbuf] 139 | syscall pktiot,[movei chsx ? movei pktbuf] 140 | call die 141 | movei t,30.*10. ; 10 seconds 142 | skipe debug 143 | hrloi t,3600. ; Really what DCP wanted? 144 | syscall netblk,[movei chsr ? movei %csrfs ? t ? movem tt] 145 | call die 146 | cain tt,%csrfs 147 | call exit 148 | cain tt,%csinc 149 | call exit 150 | caie tt,%cscls 151 | call die 152 | syscall pktiot,[movei chsr ? movei pktbuf] 153 | call die 154 | ldb t,[$cpkop pktbuf] 155 | caie t,%coans 156 | cain t,%cocls 157 | return 158 | call die 159 | 160 | sndend: call sndpkt 161 | jrst exit 162 | 163 | ackrfc: movei t,%colsn 164 | dpb t,[$cpkop pktbuf] 165 | move t,[.byte 8 ? "1 ? "1 ? "L ? "O] 166 | movem t,pktbuf+4 167 | move t,[.byte 8 ? "A ? "D] 168 | movem t,pktbuf+5 169 | movei t,6 170 | dpb t,[$cpknb pktbuf] 171 | syscall pktiot,[movei chsxmt ? movei pktbuf] 172 | call die 173 | movei a,30.*10. ; 10 seconds 174 | skipe debug 175 | hrloi a,177777 ; A long time 176 | syscall netblk,[movei chsrcv ? movei %cslsn ? a ? movem b] 177 | call die 178 | caie b,%csrfc 179 | jrst die 180 | syscall pktiot,[movei chsrcv ? movei pktbuf] 181 | call die 182 | ldb e,[$cpksa pktbuf] 183 | movem e,ldhost 184 | ldb e,[$cpknb pktbuf] 185 | caie e,6 186 | jrst chajcl 187 | move e,ldhost 188 | move a,machin 189 | setzi b, 190 | camn a,[sixbit /MC/] 191 | movei b,[ setz ? sixbit /OPEN/ ? [dski] 192 | [sixbit /DSK/] ? [sixbit /11LOAD/] ? [sixbit /FILES/] 193 | setz [sixbit /CHSGTV/] 194 | ] 195 | camn a,[sixbit /AI/] 196 | movei b,[ setz ? sixbit /OPEN/ ? [dski] 197 | [sixbit /DSK/] ? [sixbit /11LOAD/] ? [sixbit /FILES/] 198 | setz [sixbit /CSTACY/] 199 | ] 200 | skipn b 201 | call die 202 | .call (b) 203 | call die 204 | ctll: .iot dski,a 205 | skipge a 206 | call die 207 | caie a,^L 208 | jrst ctll 209 | fndsa: .iot dski,a 210 | skipge a 211 | call die 212 | caie a,^M 213 | jrst fndsa 214 | .iot dski,a 215 | skipge a 216 | call die 217 | caie a,^J 218 | jrst fndsa 219 | .iot dski,a 220 | skipge a 221 | call die 222 | caie a,"+ 223 | jrst fndsa 224 | setzi b, 225 | movei c,6 226 | fndsa1: .iot dski,a 227 | lsh b,3 228 | addi b,-"0(a) 229 | sojg c,fndsa1 230 | came b,e 231 | jrst fndsa 232 | fndfi1: .iot dski,a 233 | skipge a 234 | call die 235 | caie a,": 236 | jrst fndfi1 237 | fndfi2: .iot dski,a 238 | skipge a 239 | call die 240 | caie a,": 241 | jrst fndfi2 242 | move c,[440700,,fnmbuf] 243 | fnloop: .iot dski,a 244 | idpb a,c 245 | caie a,^M 246 | jumpg a,fnloop 247 | .close dski, 248 | move a,ldhost 249 | repeat 6,[ 250 | idivi a,8 251 | addi b,'0 252 | push p,b 253 | ] 254 | move b,[440600,,a] 255 | repeat 6,[ 256 | pop p,c 257 | idpb c,b 258 | ] 259 | .rdati b, 260 | syscall mlink,[[sixbit /DSK/] 261 | [sixbit /_11LOAD/] ? a ? [sixbit /KTV/] 262 | c ? b ? [sixbit /KTV/]] 263 | jfcl 264 | return 265 | 266 | chajcl: move c,[440800,,pktbuf+%cpkdt] 267 | repeat 6,[ 268 | ibp c 269 | sos e 270 | ] 271 | move b,[440700,,fnmbuf] 272 | chajc2: ildb a,c 273 | idpb a,b 274 | sojg e,chajc2 275 | idpb e,b 276 | return 277 | 278 | rfn"$$rfn==:1 279 | .insrt dsk:syseng;rfn > 280 | 281 | ifn 0,[ ;; Use this instead of the .INSRTed RFN to test that this produces 282 | ;; the same binary as ex assembled from the old source. 283 | .begin rfn 284 | 285 | rfn: push p,b 286 | push p,c 287 | move c,b 288 | push p,1(c) 289 | push p,2(c) 290 | setz e, 291 | rfn0: call ruc 292 | rfn2: call rsixg 293 | jrst rfn1 294 | call rfnn 295 | rfn1: caie a,72 296 | cain a,73 297 | jrst rfn0 298 | cain a,40 299 | jrst rfn0 300 | caie a,30 301 | cain a,31 302 | jrst rfnx 303 | sub p,[2,,2] 304 | pop p,c 305 | pop p,b 306 | return 307 | rfnn: cain a,72 308 | jrst rfnc 309 | cain a,73 310 | jrst rfns 311 | aoja e,rfnt(e) 312 | rfnt: jrst rfnf1 313 | jrst rfnf2 314 | jrst rfnc 315 | jrst rfns 316 | sos e 317 | return 318 | rfns: movem b,3(c) 319 | tlo e,10 320 | movs b,(c) 321 | tlne e,1 322 | return 323 | lsh b,-6 324 | caie b,4151 325 | cain b,5554 326 | return 327 | cain b,4455 328 | return 329 | caie b,6053 330 | cain b,6053 331 | return 332 | caie b,4354 333 | cain b,5257 334 | return 335 | rfns1: movsi b,446353 336 | rfnc: movem b,(c) 337 | tlo e,1 338 | return 339 | rfnf1: movem b,1(c) 340 | tlo e,2 341 | return 342 | rfnf2: movem b,2(c) 343 | tlo e,4 344 | return 345 | rfnx: addi a,(p) 346 | move b,-31(a) 347 | call rfnn 348 | jrst rfn0 349 | ruc: ildb a,d 350 | cail a,140 351 | subi a,40 352 | return 353 | rsix: push p,c 354 | move c,[440640,,b] 355 | jrst rsixg1 356 | rsixg: push p,c 357 | move c,[440600,,b] 358 | rsixg1: setz b, 359 | rsix0: cain a,21 360 | jrst rsix2 361 | caie a,177 362 | caig a,40 363 | jrst rsix1 364 | tlne c,40 365 | jrst rsix3 366 | caie a,72 367 | cain a,73 368 | jrst rsix1 369 | call rsixtp 370 | jrst rsix3 371 | rsix1: skipl c 372 | aos -1(p) 373 | pop p,c 374 | return 375 | rsix2: call ruc 376 | rsix3: subi a,40 377 | tlne c,770000 378 | idpb a,c 379 | call ruc 380 | jrst rsix0 381 | 382 | .end rfn 383 | ] 384 | 385 | getfn: movei b,loadfn 386 | skipe jclflg 387 | .break 12,[..rjcl,,fnmbuf] 388 | move d,[440700,,fnmbuf] 389 | call rfn"rfn 390 | return 391 | 392 | rsixtp: return 393 | 394 | switch: return 395 | 396 | mapfil: movei b,loadfn 397 | syscall open,[movei dski ? %clbit,,.bii ? 0(b) ? 1(b) ? 2(b) ? 3(b)] 398 | call die 399 | syscall fillen,[movei dski ? movem fillen] 400 | call die 401 | move a,fillen 402 | addi a,1777 403 | lsh a,-12 404 | movn a,a 405 | hrl a,a 406 | hrri a,buffer_-12 407 | setzi b, 408 | syscall corblk,[movei %cbred ? movei %jself ? a ? movei dski ? b] 409 | call die 410 | syscall close,[movei dski] 411 | call die 412 | move a,fillen 413 | move b,buffer-1(a) 414 | sojg a,.-1 ; To page it in? 415 | return 416 | 417 | die: skipe debug 418 | .value 419 | exit: .logou a, 420 | .break 16,160000 421 | .value 422 | 423 | loadfn: sixbit /DSK/ ; What a crazy filename! 424 | sixbit /PTV1/ 425 | sixbit /BIN/ 426 | sixbit /SYS2/ 427 | 428 | fnmbuf: block 24 429 | 430 | constants 431 | 432 | junk: 0 433 | machin: 0 434 | ldhost: 0 435 | debug: 0 436 | fillen: 0 437 | jclflg: 0 438 | tplvl: 0 439 | 440 | lpdl==:20 441 | 442 | pdl: block lpdl 443 | 444 | pktbuf: block %cpmxw 445 | 446 | buffer=:<.+1777>&<-2000> 447 | 448 | end go 449 | -------------------------------------------------------------------------------- /minits/11load.18: -------------------------------------------------------------------------------- 1 | ; -*- Midas -*- 2 | 3 | title 11LOAD 4 | ; This isn't the original 11LOAD, this source was reconstructed by Alan on 5 | ; 5/27/89 from the binary. 6 | ; This version now uses DSK:MINITS;11LOAD FILES on all ITS machines. 7 | 8 | a=:1 ? chsr==:1 9 | b=:2 ? chsx==:2 10 | c=:3 11 | d=:4 12 | e=:5 13 | vladdr=:6 14 | binptr=:7 15 | blkcnt=:10 16 | pkbcnt=:11 17 | dski=:12 18 | t=:13 19 | tt=:14 20 | chsrcv=:15 21 | chsxmt=:16 22 | p=:17 23 | 24 | .insrt dsk:syseng;chsdef > 25 | 26 | maxbyt==:100. ; Never sends packets with more than this 27 | ; many bytes of data. 28 | 29 | call=:pushj p, 30 | return=:popj p, 31 | 32 | define syscall name,args 33 | .call [setz ? .1stwd sixbit /name/ ? args(400000)] 34 | termin 35 | 36 | tsint: 37 | loc 42 38 | -ltsint,,tsint 39 | loc tsint 40 | p 41 | %piioc ? 0 ? -1 ? -1 ? die 42 | ltsint==:.-tsint 43 | 44 | go: .close 1, 45 | move p,[-lpdl,,pdl-1] 46 | .suset [.roption,,t] 47 | tlo t,%opint 48 | .suset [.soption,,t] 49 | .suset [.smask,,[%piioc]] 50 | .suset [.sdf1,,[0]] 51 | tlne t,%opddt 52 | jrst go1 53 | syscall detach,[movsi 7 ? movei %jself] 54 | call die 55 | setom tplvl 56 | setzm jclflg 57 | .suset [.sjname,,[sixbit /11LOAD/]] 58 | .suset [.ssname,,[sixbit /CHAOS/]] 59 | jrst go2 60 | 61 | go1: setzm tplvl 62 | tlnn t,%opcmd 63 | skipa 64 | setom jclflg 65 | go2: syscall chaoso,[movei chsrcv ? movei chsxmt ? movei 1] 66 | call die 67 | skipe tplvl 68 | call ackrfc 69 | call getfn 70 | call mapfil 71 | jrst sndfil 72 | 73 | sndfil: movei binptr,buffer 74 | sblklp: call nxtblk 75 | call pkstrt 76 | jumpe blkcnt,sndend 77 | sbytlp: call putbyt 78 | jumpe blkcnt,[ call sndpkt 79 | call endblk 80 | jrst sblklp ] 81 | jumpe pkbcnt,[ call sndpkt 82 | call pkstrt 83 | jrst sbytlp ] 84 | jrst sbytlp 85 | 86 | nxtblk: movei a,1 87 | came a,(binptr) 88 | aoja binptr,nxtblk 89 | aoj binptr, 90 | skipe (binptr) 91 | aoja binptr,nxtblk 92 | aoj binptr, 93 | move blkcnt,1(binptr) 94 | lsh blkcnt,10 95 | ior blkcnt,0(binptr) 96 | subi blkcnt,6 97 | move vladdr,3(binptr) 98 | lsh vladdr,10 99 | ior vladdr,2(binptr) 100 | addi binptr,4 101 | return 102 | 103 | endblk: aos binptr 104 | return 105 | 106 | pkstrt: movei t,%corfc 107 | dpb t,[$cpkop pktbuf] 108 | move t,ldhost 109 | dpb t,[$cpkda pktbuf] 110 | move t,[.byte 8 ? "L ? "D ? 40 ? 40] 111 | movem t,pktbuf+%cpkdt+0 112 | move dski,[440800,,pktbuf+%cpkdt+1] 113 | move t,vladdr 114 | idpb t,dski 115 | lsh t,-10 116 | idpb t,dski 117 | movei pkbcnt,maxbyt-6 118 | return 119 | 120 | putbyt: move t,(binptr) 121 | aoj binptr, 122 | soj blkcnt, 123 | idpb t,dski 124 | soj pkbcnt, 125 | aoj vladdr, 126 | return 127 | 128 | sndpkt: syscall chaoso,[movei chsr ? movei chsx ? movei 1] 129 | call die 130 | movei t,0 131 | dpb t,[$cpkfc pktbuf] 132 | dpb t,[$cpksa pktbuf] 133 | dpb t,[$cpksi pktbuf] 134 | movei t,maxbyt 135 | sub t,pkbcnt 136 | dpb t,[$cpknb pktbuf] 137 | syscall pktiot,[movei chsx ? movei pktbuf] 138 | call die 139 | movei t,30.*10. ; 10 seconds 140 | skipe debug 141 | hrloi t,3600. ; Really what DCP wanted? 142 | syscall netblk,[movei chsr ? movei %csrfs ? t ? movem tt] 143 | call die 144 | cain tt,%csrfs 145 | call exit 146 | cain tt,%csinc 147 | call exit 148 | caie tt,%cscls 149 | call die 150 | syscall pktiot,[movei chsr ? movei pktbuf] 151 | call die 152 | ldb t,[$cpkop pktbuf] 153 | caie t,%coans 154 | cain t,%cocls 155 | return 156 | call die 157 | 158 | sndend: call sndpkt 159 | jrst exit 160 | 161 | ackrfc: movei t,%colsn 162 | dpb t,[$cpkop pktbuf] 163 | move t,[.byte 8 ? "1 ? "1 ? "L ? "O] 164 | movem t,pktbuf+4 165 | move t,[.byte 8 ? "A ? "D] 166 | movem t,pktbuf+5 167 | movei t,6 168 | dpb t,[$cpknb pktbuf] 169 | syscall pktiot,[movei chsxmt ? movei pktbuf] 170 | call die 171 | movei a,30.*10. ; 10 seconds 172 | skipe debug 173 | hrloi a,177777 ; A long time 174 | syscall netblk,[movei chsrcv ? movei %cslsn ? a ? movem b] 175 | call die 176 | caie b,%csrfc 177 | jrst die 178 | syscall pktiot,[movei chsrcv ? movei pktbuf] 179 | call die 180 | ldb e,[$cpksa pktbuf] 181 | movem e,ldhost 182 | ldb e,[$cpknb pktbuf] 183 | caie e,6 184 | jrst chajcl 185 | move e,ldhost 186 | syscall open,[movsi .uai ? movei dski ? [sixbit /DSK/] 187 | [sixbit /11LOAD/] ? [sixbit /FILES/] 188 | [sixbit /MINITS/]] 189 | call die 190 | ctll: .iot dski,a 191 | skipge a 192 | call die 193 | caie a,^L 194 | jrst ctll 195 | fndsa: .iot dski,a 196 | skipge a 197 | call die 198 | caie a,^M 199 | jrst fndsa 200 | .iot dski,a 201 | skipge a 202 | call die 203 | caie a,^J 204 | jrst fndsa 205 | .iot dski,a 206 | skipge a 207 | call die 208 | caie a,"+ 209 | jrst fndsa 210 | setzi b, 211 | movei c,6 212 | fndsa1: .iot dski,a 213 | lsh b,3 214 | addi b,-"0(a) 215 | sojg c,fndsa1 216 | came b,e 217 | jrst fndsa 218 | fndfi1: .iot dski,a 219 | skipge a 220 | call die 221 | caie a,": 222 | jrst fndfi1 223 | fndfi2: .iot dski,a 224 | skipge a 225 | call die 226 | caie a,": 227 | jrst fndfi2 228 | move c,[440700,,fnmbuf] 229 | fnloop: .iot dski,a 230 | idpb a,c 231 | caie a,^M 232 | jumpg a,fnloop 233 | .close dski, 234 | move a,ldhost 235 | repeat 6,[ 236 | idivi a,8 237 | addi b,'0 238 | push p,b 239 | ] 240 | move b,[440600,,a] 241 | repeat 6,[ 242 | pop p,c 243 | idpb c,b 244 | ] 245 | .rdati b, 246 | syscall mlink,[[sixbit /DSK/] 247 | [sixbit /_11LOAD/] ? a ? [sixbit /KTV/] 248 | c ? b ? [sixbit /KTV/]] 249 | jfcl 250 | return 251 | 252 | chajcl: move c,[440800,,pktbuf+%cpkdt] 253 | repeat 6,[ 254 | ibp c 255 | sos e 256 | ] 257 | move b,[440700,,fnmbuf] 258 | chajc2: ildb a,c 259 | idpb a,b 260 | sojg e,chajc2 261 | idpb e,b 262 | return 263 | 264 | rfn"$$rfn==:1 265 | .insrt dsk:syseng;rfn > 266 | 267 | ifn 0,[ ;; Use this instead of the .INSRTed RFN to test that this produces 268 | ;; the same binary as ex assembled from the old source. 269 | .begin rfn 270 | 271 | rfn: push p,b 272 | push p,c 273 | move c,b 274 | push p,1(c) 275 | push p,2(c) 276 | setz e, 277 | rfn0: call ruc 278 | rfn2: call rsixg 279 | jrst rfn1 280 | call rfnn 281 | rfn1: caie a,72 282 | cain a,73 283 | jrst rfn0 284 | cain a,40 285 | jrst rfn0 286 | caie a,30 287 | cain a,31 288 | jrst rfnx 289 | sub p,[2,,2] 290 | pop p,c 291 | pop p,b 292 | return 293 | rfnn: cain a,72 294 | jrst rfnc 295 | cain a,73 296 | jrst rfns 297 | aoja e,rfnt(e) 298 | rfnt: jrst rfnf1 299 | jrst rfnf2 300 | jrst rfnc 301 | jrst rfns 302 | sos e 303 | return 304 | rfns: movem b,3(c) 305 | tlo e,10 306 | movs b,(c) 307 | tlne e,1 308 | return 309 | lsh b,-6 310 | caie b,4151 311 | cain b,5554 312 | return 313 | cain b,4455 314 | return 315 | caie b,6053 316 | cain b,6053 317 | return 318 | caie b,4354 319 | cain b,5257 320 | return 321 | rfns1: movsi b,446353 322 | rfnc: movem b,(c) 323 | tlo e,1 324 | return 325 | rfnf1: movem b,1(c) 326 | tlo e,2 327 | return 328 | rfnf2: movem b,2(c) 329 | tlo e,4 330 | return 331 | rfnx: addi a,(p) 332 | move b,-31(a) 333 | call rfnn 334 | jrst rfn0 335 | ruc: ildb a,d 336 | cail a,140 337 | subi a,40 338 | return 339 | rsix: push p,c 340 | move c,[440640,,b] 341 | jrst rsixg1 342 | rsixg: push p,c 343 | move c,[440600,,b] 344 | rsixg1: setz b, 345 | rsix0: cain a,21 346 | jrst rsix2 347 | caie a,177 348 | caig a,40 349 | jrst rsix1 350 | tlne c,40 351 | jrst rsix3 352 | caie a,72 353 | cain a,73 354 | jrst rsix1 355 | call rsixtp 356 | jrst rsix3 357 | rsix1: skipl c 358 | aos -1(p) 359 | pop p,c 360 | return 361 | rsix2: call ruc 362 | rsix3: subi a,40 363 | tlne c,770000 364 | idpb a,c 365 | call ruc 366 | jrst rsix0 367 | 368 | .end rfn 369 | ] 370 | 371 | getfn: movei b,loadfn 372 | skipe jclflg 373 | .break 12,[..rjcl,,fnmbuf] 374 | move d,[440700,,fnmbuf] 375 | call rfn"rfn 376 | return 377 | 378 | rsixtp: return 379 | 380 | switch: return 381 | 382 | mapfil: movei b,loadfn 383 | syscall open,[movei dski ? %clbit,,.bii ? 0(b) ? 1(b) ? 2(b) ? 3(b)] 384 | call die 385 | syscall fillen,[movei dski ? movem fillen] 386 | call die 387 | move a,fillen 388 | addi a,1777 389 | lsh a,-12 390 | movn a,a 391 | hrl a,a 392 | hrri a,buffer_-12 393 | setzi b, 394 | syscall corblk,[movei %cbred ? movei %jself ? a ? movei dski ? b] 395 | call die 396 | syscall close,[movei dski] 397 | call die 398 | move a,fillen 399 | move b,buffer-1(a) 400 | sojg a,.-1 ; To page it in? 401 | return 402 | 403 | die: skipe debug 404 | .value 405 | exit: .logou a, 406 | .break 16,160000 407 | .value 408 | 409 | loadfn: sixbit /DSK/ ; What a crazy filename! 410 | sixbit /PTV1/ 411 | sixbit /BIN/ 412 | sixbit /SYS2/ 413 | 414 | fnmbuf: block 24 415 | 416 | constants 417 | 418 | junk: 0 419 | ldhost: 0 420 | debug: 0 421 | fillen: 0 422 | jclflg: 0 423 | tplvl: 0 424 | 425 | lpdl==:20 426 | 427 | pdl: block lpdl 428 | 429 | pktbuf: block %cpmxw 430 | 431 | buffer=:<.+1777>&<-2000> 432 | 433 | end go 434 | -------------------------------------------------------------------------------- /minits/11load.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chaosnet/minits/2225ac4de1efe7d77fa201cb731cc14bf170dc13/minits/11load.bin -------------------------------------------------------------------------------- /minits/11load.files: -------------------------------------------------------------------------------- 1 | This file contains the files associated with the various chaos 2 | down-loadable PDP11 systems. The following format MUST be 3 | observed for the PDP-10 side to win: Anything before a control-L 4 | is considered comments. After the control-L, the following 5 | sequence notes the beginning of a CHAOS ADDRESS-BIN FILE pair: 6 | Following are 6 7 | octal digits, which comprise the 16 bit CHAOS address of the 8 | concentrator then a , then by the site name, another 9 | colon, and finally the filename topped off by a . The end of the site/filename pairs is accomplished by 11 | end-of-file, but it is a good idea to put something there, such 12 | as a control-L to make sure there is a after 13 | the last pair. 14 | 15 | 16 | 17 | --- Official in use systems go here --- 18 | ; This can't work because the 11LOAD server wants a BIN (old-style, 19 | ; uncompressed PALX output) not a PBIN file: 20 | ; +003120: AI Bridge 2 : minits;aibr2 pbin 21 | 22 | ; On 5/28/89 Alan commented out the rest of this file when instituting a 23 | ; new scheme of MINITS booting. 24 | ; 25 | ; +000426: AI-11 : .;ioelev aibin 26 | ; +000500: PLASMA : chsgtv;mux bin 27 | ; +003502: NPLASMA : chsktv;mux 38bldg 28 | ; +003601: FUSION : chsktv;mux pfc 29 | ; +003641: PFC-V80 : ktv;v80 bin 30 | ; +000530: FOOBAR -- this is really EECS bridge : ktv;eebrdg bin 31 | ; +000542: EE-NETWORK-11 : ktv;eenet11 bin 32 | ; +000406: TOTO (OZ-Network-11) : ktv;oznet11 bin 33 | ; +003512: EECS-TEST running MINITS : ktv;eetest bin 34 | ; ;+000512: EECS-TEST (Just a temp entry) : cl;ltst bin 35 | ; ;+003420: EE Admin Concetrator : ktv;ee11 bin 36 | ; +003420: Benji Mouse (11/23) : ktv;benj23 bin 37 | ; +012420: Benji Mouse (11/23) : ktv;benj23 bin 38 | ; +035077: NE43-2A-HUB : ktv;ne432a bin 39 | ; +035112: NE43-2B-HUB : ktv;ne432b bin 40 | ; +015113: NE43-4A-HUB : ktv;ne434a bin 41 | ; +003116: NE43-7A-HUB : ktv;ne437a bin 42 | ; +013014: NE43-7A-HUB : ktv;ne437a bin 43 | ; +003115: NE43-7B-HUB : ktv;ne437b bin 44 | ; +013015: NE43-7B-HUB : ktv;ne437b bin 45 | ; +013012: NE43-7C-HUB : ktv;ne437c bin 46 | ; +003106: NE43-7C-HUB : ktv;ne437c bin 47 | ; +013013: NE43-8A-HUB : ktv;ne438a bin 48 | ; +003056: NE43-8A-HUB : ktv;ne438a bin 49 | ; +003144: NE43-8B-HUB : ktv;ne438b bin 50 | ; +013066: NE43-8B-HUB : ktv;ne438b bin 51 | ; +003145: NE43-8C-HUB : ktv;ne438c bin 52 | ; +013067: NE43-8C-HUB : ktv;ne438c bin 53 | ; +013025: NE43-8D-HUB : ktv;ne438d bin 54 | ; +003117: AI Bridge 1 : ktv;aibr1 bin 55 | ; ;+003033: AI TV system: ktv;aitv11 bin 56 | ; +013002: ACRMIT-bridge: ktv;acrmit bin 57 | ; +000402: Symbolics Microwave Bridge : ktv;symbol bin 58 | ; +003037: MIT-PUMA : pgs;puma bin 59 | ; +003033: MIT-COUGAR : pgs;puma cougar 60 | ; +015405: SPEECH-HUB-1 : ktv;sphub1 bin 61 | ; +016220: Speech terminal concentrator : ktv;spterm bin 62 | ; +016320: NIAL-HUB : ktv;nialhb bin 63 | ; +007740: MTH-HUB : ktv;mathhb bin 64 | ; +007700: Mass ave 17-21 bridge : ktv;massav bin 65 | ; +017024: PRANCER : ktv;sym1 bin 66 | ; +020001: PRANCER : ktv;sym1 bin 67 | ; +017036: DANCER Symbolics test system : ktv;sym2 bin 68 | ; +003410: FRANKY EE Concentrator : ktv;franky bin 69 | ; +012410: FRANKY EE Concentrator : ktv;franky bin 70 | ; +016276: ARCMAC 11 : ktv;arcmac bin 71 | ; +010601: SIPB office: ktv;sipb11 bin 72 | ; ;+010601: SIPB office : chsncp;sipb11 bin 73 | ; +035040: MIT-Harris : ktv;mithar bin 74 | ; +013077: MIT-NIKKI : ktv;nikki bin 75 | ; +015407: MIT-VLSI-HUB : ktv;vlsihb bin 76 | ; +016330: COG-SCI-HUB : ktv;cogshb bin 77 | ; 78 | ; --- Test systems can go here. Just comment out the above --- 79 | ; +003502: mouse testing : ktv;mouse bin 80 | ; +003502: New Plasma Test : ktv;nplasm bin 81 | ; +003621: pfc-test : chsgtv;boot1b bin 82 | ; +003621: PFC-TEST running MINITS : ktv;pfctst bin 83 | ; +003144: OZ-TIP-2 : chsgtv;boot1b bin 84 | ; ;+000510: EECS-TEST yet again : dcp;ctv bin 85 | ; ;+000510: EECS-TEST test stuff : cl;ltst bin 86 | ; +016300: CCC test system : guest3;pace mbin 87 | ; +000001: Testing a 20X fix: .temp.;delete me 88 | 89 | 90 | -------------------------------------------------------------------------------- /minits/aibr1.opbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chaosnet/minits/2225ac4de1efe7d77fa201cb731cc14bf170dc13/minits/aibr1.opbin -------------------------------------------------------------------------------- /minits/aibr1.pbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chaosnet/minits/2225ac4de1efe7d77fa201cb731cc14bf170dc13/minits/aibr1.pbin -------------------------------------------------------------------------------- /minits/aibr2.pbin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chaosnet/minits/2225ac4de1efe7d77fa201cb731cc14bf170dc13/minits/aibr2.pbin -------------------------------------------------------------------------------- /minits/dumper.save: -------------------------------------------------------------------------------- 1 | save *.*.* *.*.*, *.*.* *.*.*, *.*.* *.*.*, *.*.* *.*.*, *.*.* *.*.*, *.*.* *.*.* 2 | -------------------------------------------------------------------------------- /minits/ether-.3: -------------------------------------------------------------------------------- 1 | Notes on making new ethernet proms for MINITS boxes. 2 | 3 | This file is for making boot proms ONLY. 4 | 5 | The creation of boot-proms using BOOTIL is independant of the creation 6 | of new downloads in . 7 | 8 | If you are changing network addresses then you better also change the 9 | file on the boot hosts that associates pdp-11 addresses with what to 10 | download into them. For the AI Lab these files are: 11 | 12 | OZ:PS:11LOAD.FILES 13 | REAGAN:>PDP-11>11LOAD.FILES 14 | ZERMATT:>PDP-11>11LOAD.FILES 15 | 16 | If you are changing network addresses you also should edit the namespace 17 | objects of the hosts involved. You might also check to see if your actions 18 | impact safe sites. 19 | 20 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 21 | 22 | NEED 2 2716's (Intel) per machine. 23 | 24 | (1) Frob MINITS sources as need be, see the file MINITS.TEXT. 25 | Typically you edit OZ:CONFIG.PALX 26 | 27 | (2) On OZ: 28 | Connect to 29 | PALX BOOTIL 30 | 31 | It needs Vector, CSR and Chaos Addresses for the Chaos/Ether card(s). 32 | You must already have assigned these when you edited CONFIG.PALX 33 | on OZ (Usually use default vec and csr). Answer all the questions 34 | intelligently. 35 | 36 | This writes BOOTIL.BIN in . 37 | You may wish to rename it if you are doing multiple machines at once. 38 | It is only needed for step (3) below. 39 | 40 | 41 | (3) On a Lisp Machine with a prom programmer attached and the prom-programmer 42 | facility enabled. 43 | 44 | (load "oz:ps:prom") 45 | (27burn) 46 | 47 | Answer intelligently and your proms get programmed. 48 | 49 | More info on prom programming is in SYS:FACILITIES;PROMP.DOC 50 | 51 | 52 | ;;;;;;;;;;;;;;;; Following is old way using MX ;;;;;;;;;;;;;;;; 53 | ; 54 | ;(2) ON MX 55 | ; :PALX KTV;BOOTIL > 56 | ; 57 | ; It needs Vector, CSR and Chaos Addresses for the Chaos/Ether card(s). 58 | ; You must already have assigned these when you edited CONFIG.PALX 59 | ; on OZ (Usually use default vec and csr). 60 | ; 61 | ; BIN in HSNAME 62 | ; 63 | ; Ram starts at 156000 (requires 1000) 64 | ; 65 | ; N.B., If you are doing more than one host, you cannot do this 66 | ; step n times because output always goes into BOOTIL BIN. 67 | ; 68 | ;(3) On MX 69 | ; :LISP 70 | ; (LOAD "DCP;PROM") 71 | ; (27BURN-PALX-BIN-FILE ) 72 | ; e.g., "DCP;BOOTIL BIN" 73 | ; e.g., ".TEMP.;NE437A" 74 | ; 75 | ; Wants to start at 3000 (the default I think) 76 | ; 77 | ; This creates two files, e.g. .TEMP.;NE437A B00 78 | ; and .TEMP.;NE437A B08 79 | ; 80 | ;Now read pig:[taft]promp.doc to learn how to use the prom programmer 81 | ; 82 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -------------------------------------------------------------------------------- /minits/minits.4: -------------------------------------------------------------------------------- 1 | 2 | Concentrators are PDP-11's running MINITS. 3 | 4 | They serve both as terminal hubs and as intersubnet network bridges. 5 | 6 | Concentrator issues are how they boot, what they boot, and from 7 | where they boot. These issues revolve around the concentrator's network 8 | address which implicitly includes the information about what physical 9 | subnet(cable) that the concentrator is connected to. 10 | 11 | This file assumes you have knowledge of the concentrator addresses 12 | and subnets that you are using and what hosts you wish to boot from. 13 | For further information on initial concentrator setup and address 14 | determination see Chris Hanson's file: 15 | OZ:-HOW-TO-BUILD-A-TC.TXT 16 | 17 | 18 | 19 | **** MINITS DOWNLOADS (Minits specific) **** 20 | 21 | A MINITS binary that is downloaded into a concentrator is a produced 22 | by assembling a complete MINITS especially for that concentrator using 23 | PALX (PDP-11 assembler) on OZ. The file CONFIG.PALX is 24 | edited to reflect changes in any given concentrator and then the whole 25 | of MINITS is assembled for a particular concentrator using a CTL file in 26 | . For a concentrator named FOO this is typically done by 27 | 28 | Connect to 29 | SUBMIT FOO.CTL 30 | 31 | This would create a new version of the file FOO.PBIN 32 | MINITS binary for downloading into concentrator FOO. 33 | 34 | Since concentrators are setup to boot from multiple hosts, the new 35 | PBIN file must be distributed to these hosts. Command files for doing 36 | this are also in . To distribute FOO's pbin do: 37 | 38 | While connected to 39 | TAKE FOO.INSTALL 40 | 41 | This should echo as it copies the PBIN's to FOO's other boot hosts. 42 | 43 | If you are creating a new concentrator you should make new .CTL 44 | and .INSTALL files using one of the existing ones as a template. 45 | 46 | 47 | 48 | **** BOOT-PROMS **** 49 | 50 | (Not MINITS specific - documented in ETHER-PROM.DOC ) 51 | 52 | A concentrator downloads the program that it runs from a host when 53 | it boots. There is a separate binary program for each concentrator. 54 | In order to be able to download(boot) the program, a concentrator must 55 | have inside of it a small boot program. This is stored in a pair of 56 | 2716 EPROMS inside the concentrator. Each concentrator has its very own 57 | boot program in its proms. The boot program contains information about 58 | the network address, the particulars of the network interface board (CSR 59 | address), and the set of hosts from which the concentrator can boot. 60 | The boot-prom boot program is completely independant of the downloaded 61 | program. The downloaded program is typically a MINITS assembled 62 | specifically for that concentrator but it can be any program and it can 63 | change independantly of the boot prom. 64 | 65 | In order to make a new set of (two) boot-prom's you use the BOOTIL 66 | program on OZ and the PROM program on a Lisp Machine. This is 67 | documented in the file ETHER-PROM.DOC . 68 | 69 | If you are CHANGING THE ADDRESS of a concentrator you need to make 70 | new boot-proms and you ALSO need to change the boot hosts' information 71 | associating concentrator addresses with files to download. This is 72 | described immediatly below. 73 | 74 | 75 | 76 | **** HOSTS **** 77 | 78 | Any host from which concentrators boot must be able to associate a 79 | given concentrator network address with a particular binary file to 80 | download into that concentrator. This information is kept in an 11LOAD 81 | file on the host. For the AI Lab these files are: 82 | 83 | OZ:PS:11LOAD.FILES 84 | REAGAN:>PDP-11>11LOAD.FILES 85 | ZERMATT:>PDP-11>11LOAD.FILES 86 | 87 | They need to be kept consistent with network addresses of their bootees. 88 | 89 | 90 | 91 | **** NAMESPACES **** 92 | 93 | If you change network addresses you should also update the namespace 94 | database using TV:EDIT-NAMESPACE-OBJECT on the effected concentrator host 95 | objects. 96 | 97 | You might also want to think about keeping safe-site information 98 | current. 99 | -------------------------------------------------------------------------------- /minits/promp.doc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Instructions for using the prom programmer with a 3600. 4 | 5 | The prom programmer is connected to the 3600 using a serial port. 6 | It connects to the EIA Port 2 connector at the back of any 3600. A null 7 | modem and various sex change connectors are required and should already 8 | be in place. The recommended speed is 1200 baud which corresponds to 9 | position 7 of the rotary pot hidden in a hole in the back of the prom 10 | programmer. Faster speeds, such as 9600 baud, may be attempted but 11 | there is some specialization in the code to handle this and it has not 12 | been debugged as of this writing. 13 | 14 | To use the programmer physically insert the appropriate pack 15 | (carefully) and then turn it on. After the self test has completed, you 16 | need to place the programmer in remote mode. Do this by pushing 17 |