TITLE SUBSYS -- Tops-20 Muddle Subsystem Bootstrapper .DECSAV O=0 A=1 B=2 C=3 D=4 E=5 LOC 140 GTJFNB: 100000,,0 .NULIO,,.NULIO 0 0 JOBPTR: 440700,,JOBNAM -1,,[ASCIZ /SAVE/] 0 0 0 SVNSAV: 0 JOBNAM: ASCIZ /MUDDLE/ START: RESET SETZ A, RSCAN JFCL JUMPE A,NOJCL ; NO JCL, FLUSH MOVN C,A MOVEI A,.PRIIN MOVE B,[440700,,SAVFIL] SIN ; READ JCL MOVE B,[440700,,SAVFIL] MOVE D,JOBPTR NAMLOP: ILDB B CAIG 40 JRST NAMDON IDPB O,D JRST NAMLOP NAMDON: MOVEI O,0 IDPB O,D MOVEM B,SVNSAV ILDB O,B CAIL O,40 JRST .-2 MOVEI O,0 DPB O,B MOVE A,JOBNAM CAME A,[ASCII /MUDSU/] JRST OTHER MOVE A,[ASCII /MUDDL/] MOVEM A,JOBNAM MOVE A,[ASCIZ /E/] MOVEM A,JOBNAM+1 OTHER: MOVEI A,GTJFNB MOVE B,SVNSAV GTJFN JRST NOSAVE MOVEI 0,(A) ;JFN TO SAVE FILE TLZ A,-1 MOVE B,[440000,,240000] OPENF ; HAS TO BE OPEN JRST NOSAV1 BIN MOVE D,B ; set access back to beginning MOVEI B,0 SFPTR HALTF ; create muddle version number MOVE B,[440700,,FILE] MOVE C,[440700,,D] ILDB E,B CAIE E,"X ; "X" SIGNALS START OF VERSION NUMBER JRST .-2 VERLUP: ILDB E,C CAIN E,40 ; SPACE SIGNALS END OF VERSION JRST RDMDL DPB E,B IBP B JRST VERLUP ; now try to read it RDMDL: HRLZI A,100001 MOVE B,[440700,,FILE] GTJFN ; JFN TO INTERPRETER JRST NOMDL HRLI A,400000 MOVE BLTPTR,[LOADGO,,B] BLT BLTPTR,BLTPTR JRST B LOADGO: GET ; LOAD INTERPRETER MOVEI A,400000 GEVEC ; CONS STARTING ADDRESS JRST 1(B) ; JRST TO START+1 IN INTERPRETER BLTPTR=.-LOADGO+1 ; junk past here is only used if there are errors NOJCL: HRROI A,[ASCIZ /You must specify the SAVE file to load. /] PSOUT DEATH: HALTF JRST .-1 NOSAVE: MOVE B,A HRROI A,[ASCIZ /Can't find SAVE file? (/] PSOUT MOVE A,SVNSAV NOFILE: PSOUT HRROI A,[ASCIZ /): /] PSOUT JRST ERPRNT NOSAV1: MOVE B,A HRROI A,[ASCIZ /Can't OPENF SAVE file? (/] PSOUT HRROI A,SAVFIL JRST NOFILE NOMDL: MOVE B,A HRROI A,[ASCIZ /No Muddle Interpreter? (/] PSOUT HRROI A,FILE JRST NOFILE ERPRNT: HRRZI A,-1 HRLI B,400000 MOVEI C,0 ERSTR ; PRINT ERROR HALTF ;UNDEFINED ERROR. HALTF ;CHOMPING DEST. HALTF ;WON. JRST DEATH FILE: ASCIZ /PS:MDLXXX.EXE/ SAVFIL: BLOCK 20. END START