X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=%3Csys.unsupported%3E%2Fmudsub.mid.2;fp=%3Csys.unsupported%3E%2Fmudsub.mid.2;h=6e5e66b730456d467280b6b74851aa91616c8260;hp=0000000000000000000000000000000000000000;hb=4ac271f03b0b4ece4802d0fd08b45f73bec17924;hpb=3395a5e4ef72d59cdb6832af7808dc9c2cf2a413 diff --git a//mudsub.mid.2 b//mudsub.mid.2 new file mode 100644 index 0000000..6e5e66b --- /dev/null +++ b//mudsub.mid.2 @@ -0,0 +1,146 @@ +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