diff --git a/build/misc.tcl b/build/misc.tcl index d2a48fb3..d8cd6d63 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -35,6 +35,10 @@ expect ":KILL" respond "*" ":midas;324 dsk0:.;@ sysgen_syseng; system gen\r" expect ":KILL" +# Old NTS DDT with 340 support. +respond "*" ":midas;324 dsk0:.;@ ntsddt_syseng; ntsddt\r" +expect ":KILL" + respond "*" ":midas sys3;ts syslod_sysen1;syslod\r" expect ":KILL" diff --git a/doc/programs.md b/doc/programs.md index 505f28b0..03058d98 100644 --- a/doc/programs.md +++ b/doc/programs.md @@ -203,6 +203,7 @@ - NICNAM/NICWHO, look up someone in the Arpanet directory. - NIMLIN, a game of unknown features. - NODIPS, SUDS wirelister (without DIP definitions). +- NTSDDT, non timesharing DDT with 340 support. - NUDIR, create user directory. - NWATCH, small watch display. - OBS, observe system activities. diff --git a/src/syseng/ntsddt.n77h b/src/syseng/ntsddt.n77h new file mode 100644 index 00000000..d2285a60 --- /dev/null +++ b/src/syseng/ntsddt.n77h @@ -0,0 +1,2313 @@ +RIM10 + +MOBY==740000 + +MACAC==4 ;ACCUMULATOR MACDMP LEAVES STARTING ADDRESS IN + +LOC 34000+MOBY + +TITLE DDT +î +DDT: + +MEMSIZ=40000+MOBY ;INITIAL $I-2 +NLEVS==7 ;LENGTH OF RING BUFFER OF . + +F=0 ;FLAGS +P=1 ;PUSH DOWN +R=2 ;POINTERS TO TABLES, CORE, ETC. +S=3 +W=4 ;CONTAINS DISPATCH ADDRESS IN WORD ASSEMBLER +T=5 ;TRANSFER DATA +W1=6 +W2=7 +I=10 +A=R +B=S +C=W +D=T + +NBP==10 ;NUMBER OF BREAK POINTS +PRS==4 +LPDL==50 ;MAX LENGTH PUSH DOWN LIST + +TIF=100000 ;TRUNCATE TO 18 BITS - SET BY SPACE OR COMMA +PTF=100 ; +, -, OR * HAS BEEN TYPED +COMF=200000 ;COMMA FLAG +CTF=400 +SF=4 ;SYLLABLE FLAG +QF=1 ;QUANTITY TYPED IN TO WORD ASSEMBLER + +CF=40 ; TYPED +CCF=400000 ; TYPED +MF=2 ;MINUS SIGN TYPED IN +LTF=20 ;LETTER TYPED IN TO CURRENT SYLLABLE +ROF=10 ;REGISTER OPEN FLAG +STF=4000 ;! MODE +FAF=1000 ; < TYPED +SAF=2000 ; > TYPED + +FPF=20000 ; . TYPED IN +FEF=10000 ; E FLAG + +MLF=200 ;*FLAG +DVF=40000 ;DIVIDE FLAG + IF2 LOC LOWCOD-NUMSYM*2-2 + +NUMSYM==0 +IRP A,,[CLEAR,CLEARI,CLEARM +CLEARB,CONSZ,CONSO,DATAI,DATAO,BLKI,BLKO,CONI,CONO] + SQUOZE 4,A + A + NUMSYM==NUMSYM+1 +TERMIN + +DC0==610 +DC1==614 +DPK==604 +IRP A,,[PI,PTP,PTR,TTY,LPT,DIS,DC,UTC,UTS,DC0,DC1,DPK] + SQUOZE 4,A + -BLKI + NUMSYM==NUMSYM+1 + TERMIN + +DEFINE BUST A + SQUOZE 4,$!A!B + B1ADR+A*3-3 + NUMSYM==NUMSYM+1 + TERMIN + + SQUOZE 4,$M + MSK + SQUOZE 4,$I + SAVPI + SQUOZE 0,DDT + 0 + SQUOZE 4,DDT + DDT + +NUMSYM==NUMSYM+4 + +RADIX 10. +REPEAT NBP+1,BUST \.RPCNT +RADIX 8 + +DEFINE INFORM A,B +IF1,[ PRINTX /A = B +/] + TERMIN + +INFORM [INITIAL SYMS]\NUMSYM*2 + LOC DDT-1000 +LOWCOD: INFORM [LOWCODE]\. + NREGS=10. +NUMREG=11. + + ;INITIALIZE DISPLAY (CALLED UNCONDITIONALLY WHEN DDT FIRST STARTED UP) + + +DISINI: PUSH P,R + SKIPN DISON ;SKIP IF DISPLAY ON + SKIPA R,CJLP1 ;JRST LLUP1 + MOVSI R,(TRNA) + MOVEM R,LLUPI1 + JUMPGE R,DISIN1 ;JUMP IF JUST MUNGED INTO LLUPI1 + ;FOLLOWING CIDING SKIPPED IF DISPLAY OFF + HRRZ T,ESTUT + SUBI T,NUMREG*+3 + HRRM T,DISWD + MOVE R,[REPEAT 6,[35]] + MOVEM R,(T) + HRLI R,(T) + HRRI R,1(T) + BLT R,NUMREG*<2*NREGS+1>-1+1(T) + MOVNI R,NREGS+1 + MOVEM R,DISCNT + PUSHJ P,RECYC + MOVEI T,DISBEG + MOVEM T,DISPDL + SETCM T,.-1 + MOVNM T,DISACS+P +DISIN1: POP P,R + POPJ P, + +DISDON: 0 +DISPTR: 0 ;BLKO POINTER FOR DISPLAY +DISCC: 0 +DISPNR: 0 +DISON: -1 ;DISPLAY FEATURE INITIALLY ON +DISWD: -NUMREG*<2*NREGS+1>,, +DTOC: IDIVI T,8 ;CANT CALL TOC OR TOUT. SCREWS DISPLAY. + HRLM W1,(P) + SKIPE T + PUSHJ P,DTOC + HLRZ T,(P) + ADDI T,"0 + +DISAD: PUSH P,T + ANDI T,177 + CAIL T,40 + CAILE T,132 + JRST DISAD2 +DISAD0: IDPB T,DISPNR + AOS DISCC + HRRI T,-10. + SKIPGE T + MOVEM T,DISCC +POPTJ: POP P,T + POPJ P, + + +DISAD2: PUSH P,W1 + CAIL T,40 + CAILE T,140 + JRST DISAD5 + MOVEI W1,36 + IDPB W1,DISPNR + MOVE W1,BLOBS-133(T) + IDPB W1,DISPNR + MOVEI T,35 + POP P,W1 + JRST DISAD0 + +DISAD3: MOVEI T,34 + PUSH P,T + JRST DISAD0 + +DISAD7: PUSHJ P,DISAD3 +DISAD4: MOVNI T,-33 + PUSH P,T + JRST DISAD0 + +DISAD6: MOVEI T,35 + PUSH P,T + JRST DISAD0 + +BLOBS: 53 + 52 + 54 + 46 + 51 + 50 + +DISAD5: PUSHJ P,DIS69 + PUSHJ P,DTOC + PUSHJ P,DIS69 + POP P,W1 + JRST POPTJ + +DIS69: IRP X,,[36,50,35] + MOVEI W1,X + IDPB W1,DISPNR + TERMIN + POPJ P, + DISLP: AOS T,DISCNT + CAILE T,NREGS +DISBEG: MOVNI T,NREGS + MOVEM T,DISCNT + ADDI T,NREGS + IMULI T,NUMREG + ADD T,DISWD + HRLI T,600 + MOVEM T,DISPNR + MOVEM T,DISPN1 + MOVE R,DISCNT + PUSHJ P,DISAD7 + JUMPE R,.+2 + SOJN R,.+2 + PUSHJ P,DISAD4 + MOVE T,DISCNT + ADD T,LLOC + PUSH P,T + PUSHJ P,PAD + XCT "/,CRF + XCT CRF + SKIPG DISCC + JRST .-2 + POP P,R + PUSHJ P,FETCH + JRST DISL1 + PUSHJ P,CONSYM +DISL2: PUSHJ P,DISAD6 + MOVE T,DISPNR + TLNE T,770000 + JRST DISL2 + SUB T,DISPN1 + HRREI T,-NUMREG(T) + JUMPL T,DISL2 + PUSHJ P,CHECK + AOSE DISDON + JRST .-2 + JRST DISLP +DISL1: XCT "-,CRF + JRST DISL2 + DISCFT: SOS (P) + SOS (P) + SKIPN DISON + POPJ P, +SWAP: PUSH P,LLUP1 + MOVEI 17,ACSTG(I) + BLT 17,ACSTG+7(I) + XCT DISSW(I) + TLC T,(CONSO#CONSZ) + MOVEM T,LLUPI1 + XORI I,DIS2-DIS1 + MOVSI 17,ACSTG(I) + BLT 17,7 + POP P,LLUP1 + POPJ P, + +CHECK: CONSO DIS,200 + JRST CHECK1 + BLKO DIS,DISPTR + PUSHJ P,RECYC +CHECK1: XCT LLUPI1 ;JRST LLUP1 (IF OFF) OR TRNA (ALWAYS SKIP, VALUE OF WORD NEGATIVE) + JRST SWAP + POPJ P, +RECYC: MOVEM T,DISPTR + MOVEI T,40 + SOJG T,. + CONO DIS,100 + DATAO DIS,[20157,,261777] + MOVE T,DISWD + EXCH T,DISPTR + SETOM DISDON + POPJ P, + +OVRD: MOVSI B,-5 +OVRD1: MOVE R,MSKTB(B) + AND R,LWT(I) + TDNN T,MSKTB(B) + IOR T,R + AOBJN B,OVRD1 +OVRD2: CLEARM FRASE + TLZ F,TIF + CLEARM WRD + JRST MASK2 + +MSKTB: 777000,, + 0 17,0 + @ + (17) + ,-1 + + +ISTRING: PUSHJ P,SETISB + PUSHJ P,IIN + MOVEM T,TEM2 +ISTR1: PUSHJ P,IIN + CAMN T,TEM2 + JRST ISTR2 + PUSHJ P,SASEM + JRST ISTR1 + +ISTR2: MOVE T,TEM + SETZM WRD2 + JRST MASK2 + +SETISB: TRZN F,Q2F + JRST STISB2 + MOVEI W2,40 + MOVE W1,WRD2 + CAIN W1,6 + HRRM W2,SASEM + CAIN W1,7 + HLLZS SASEM + DPB W1,[300600,,STRB] +STISB2: MOVE W1,STRB + POPJ P, + +SASEM: SUBI T,0 +SASME: IDPB T,W1 + HRRI W1,TEM + POPJ P, + +IIN: PUSHJ P,IN + CAIE T,177 + POPJ P, + JRST ERR + +STRB: 440700,,TEM + + ;ENTRY FROM ALTMODE DOUBLEQUOTE +TEXO2: TRZN F,Q2F ;IF NUMBER NOT TYPED AFTER ALTMODE, + JRST TEXSET ;THEN USE LAST TYPE + SKIPN W1,WRD2 ;IF NUMBER ZERO, + JRST ERR ;THEN ERROR + HRRM W1,TEXO11 ;(RANDOM LSH) + MOVEI W2,40 ;GET READY FOR NEXT INSTRUCTION + CAIN W1,6 ;IF FOR SIXBIT, + MOVEM W2,TEXOF ;THEN SET OFFSET APPROPRIATELY + CAIN W1,7 ;IF FOR SEVEN-BIT, + SETZM TEXOF ;THEN SET OFFSET TO ZERO + ;NOTE THAT $N", N .NE. 6 OR 7 USES OFFSET LEFT OVER FROM PREVIOUS MODE + JRST TEXSET ;GO SET MODE TO TEXT (MUNG DISPATCH TO ITEXO) + +TEXOF: 0 ;TEXT OFFSET (MAINLY (ENTIRELY?) FOR SIXBIT) + +LCT: PUSHJ P,TSPC + PUSHJ P,TSPC +TSPC: MOVEI T,40 ;SPACE + JRST TOUT + +TYOI: 0 + MOVE T,TYOI + LDB T,[270600+T,,-1] + PUSH P,TYOI + JRST TOUT + +LISTEN: SKIPN INSW + PUSHJ P,TYI + POPJ P, + CAIE T,^B + CAIN T,^E + JRST TYO2 + CAIE T,^V + CAIN T,^W + JRST TYO2 + JRST CPOPJ1 + + +IN: SKIPE INSW + JRST @INSW ;SOMEONE HAS PROVIDED ANOTHER IO ROUTINE, USE IT. (IT SHOULD POPJ 1,) + ILDB T,MACCR + JUMPN T,IN2 + SETZM MACCR + CONSO TTY,40 + PUSHJ P,DISCFT + PUSHJ P,TYI + JFCL +IN2: CAIE T,175 + CAIN T,176 + MOVEI T,33 + SKIPE OUTSW(I) + JRST @OUTSW(I) + CAIL T,^I + CAILE T,^M + JRST IN3 + SKIPE TTYFLG + POPJ P, + PUSH P,T + MOVEI T,15 + PUSHJ P,TYO2 + MOVEI T,12 + PUSHJ P,TYO2 + POP P,T + POPJ P, +IN3: PUSHJ P,TYO2 + +LPTR: SKIPN LPTFLG + POPJ P, + CAIE T,15 + JRST .+3 + CONO LPT,10 + POPJ P, + PUSH P,T + CAIN T,12 + MOVEI T,440 + CAIN T,14 + MOVEI T,441 + CAIN T,33 + MOVEI T,"$ + SUBI T,40 + CONSZ LPT,10 + PUSHJ P,DISCFT + DATAO LPT,T + POP P,T + POPJ P, + + +TOUT: SKIPE DISON ;IF DISPLAY ON, + PUSHJ P,CHECK +TOUT2: SKIPE OUTSW(I) + JRST @OUTSW(I) + PUSHJ P,LPTR +TYO: SKIPN TTYFLG + POPJ P, +TYO2: CAIL T," ;SPACE + JRST TYO3 + CAIN T,177 + POPJ P, + CAIL T,^I + CAILE T,^M + CAIN T,^G + JRST TYO3 + PUSH P,T + CAIE T,33 + MOVEI T,"^ + CAIN T,33 + MOVEI T,"$ + PUSHJ P,TYO3 + POP P,T + CAIN T,33 + POPJ P, + TRO T,100 + PUSHJ P,TYO3 + TRZ T,100 + POPJ P, + +TYO3: CONSZ TTY,20 + PUSHJ P,DISCFT + DATAO TTY,T + POPJ P, + +TYI: CONSO TTY,40 + POPJ P, + DATAI TTY,T + ANDI T,177 + CAIE T,^B + JRST .+3 + SETOM LPTFLG + CONO LPT,10 + CAIN T,^E + SETZM LPTFLG + CAIN T,^V + SETOM TTYFLG + CAIN T,^W + SETZM TTYFLG + JRST CPOPJ1 + +RESTORE: SETOM,TEM3 +RESTR1: HRRM T,SAVE + CLEARM,SARS + MOVE T,SAVPI + HLLM T, SAVE + AND T, SAVPI+1 + IORI T, 2000 ;TURN ON CHANNELS + MOVEM T, SAVPI +RES1: HRLZI 17,AC0 + BLT 17,17 + SKIPL,TEM3 +CPUSHP: PUSH,BCOM + CONO PRS,@SAVPI + JRST 2,@SAVE + +CRF: JSR 15,TYOI +LF: MOVEI T,12 ;LINE FEED + JRST TOUT + +;FLOATING POINT OUTPUT + +TFLOT: MOVE A,T + JUMPG A,TFL1 + JUMPE A,FP1A + MOVNS A + XCT "-,CRF + TLZE A,400000 + JRST FP1A + +TFL1: TLNN A,400 + XCT "#,CRF ;NOT NORMALIZED + +FP1: MOVEI B,0 + CAMGE A,FT01 + JRST,FP4 + CAML A,FT8 + AOJA B,FP4 +FP1A: MOVEI C,0 + +FP3: MULI A,400 + ASHC B,-243(A) + MOVE A,B + CLEARM,TEM1(I) + PUSHJ P,FP7 + XCT ".,CRF + MOVNI A,10 + ADD A,TEM1(I) + MOVE W1,C +FP3A: MOVE T,W1 + MULI T,12 + PUSHJ P,FP7B + SKIPE,W1 + AOJL A,FP3A + POPJ P, + +FP4: MOVNI C,6 + MOVEI W2,0 +FP4A: ADDI W2,1(W2) + XCT,FCP(B) + SOSA W2 + FMPR A,@FCP+1(B) +FP4B: AOJN C,FP4A + MOVNI B,-2(B) + PUSH P,B + PUSHJ P,FP3 + MOVEI T,105 + PUSHJ P,TOUT + POP P,T + DPB T,[300200,,.+1] + XCT "+,CRF + MOVE A,W2 + +FP7: JUMPE A,FP7A1 + IDIVI A,12 + AOS,TEM1(I) +FP7A: HRLM B,(P) + JUMPE A,FP7A1 + PUSHJ P,FP7 + +FP7A1: HLRZ T,(P) +FP7B: ADDI T,260 + JRST,TOUT + + 1.0^32. + 1.0^16. +FT8: 1.0^8 + 1.0^4 + 1.0^2 + 1.0^1 +FT: 1.0^0 + 1.0^-32. + 1.0^-16. + 1.0^-8 + 1.0^-4 + 1.0^-2 +FT01: 1.0^-1 +FT0=FT01+1 + +FCP: CAMLE A, FT0(C) + CAMGE A, FT(C) + 0, FT0(C) + +PS: BLOCK LPDL +DISPDL: BLOCK LPDL + + INFORM [END OF LOWCODE]\.-1 + LOC DDT + +;RIGHT HALF FLAGS +1RF=10 +OUTPUT=4 ;OPDECODER FLAGS + +CF1=400 ;OUTPUT 1 REGISTER AS CONSTANT +LF1=2000 ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT +Q2F=1 ;NUMBER TYPED AFTER +SBF=20 +NAF=200 ;NEGATIVE ADDRESSES PERMISSABLE +POWF=4000 ;ARGUMENT FOR EXPONENT COMING +SLL=10000 ;STOP LOOKING FOR LOCALS + +GLOBAL=040000 ;GLOBAL SYMBOL +LOCAL=100000 +PNAME=740000 ;PROGRAM NAME +DELI=200000 ;DELETE INPUT +DELO=400000 ;DELETE OUTPUT + +NSYMS=NUMSYM*2 +LOW=LOWCOD-NSYMS-2 +JOBSYM=DDT-1 +MACDMP=37400+MOBY +MACCR=37777+MOBY + + +INFORM DDT,\. + + +DDT: CLEARM INSW ;IF C(INSW) .NE. 0 THEN INPUT ROUTINE JRST'S @INSW + CLEARM OUTSW + ;IN ORDER FOR DDT TO GRAB STARTING ADDRESS,: + AOSN STRTSW ; 1) STRTSW MUST = -1 + TRNN MACAC,-1 ; 2) ADDRESS PART MUST BE NON-ZERO + JRST NOADR + CAML MACAC,[200000,,0] ; 3) WORD MUST BE .GE. 200000,,0 + MOVEM MACAC,STARTA ;INSTRUCTION MEETS THE TESTS, USE AS STARTING INSTRUCTION +NOADR: JSR SAVE ;SAVE PROCESSOR CONDITION + PUSHJ P,BRKRET ;DIDN'T SKIP, PI STATUS AND AC'S WERE SAVED + SKIPGE JOBSYM ;IF SYMTAB MUNGED, + JRST IFIX ;THEN GO FIX IT +DD1A: PUSHJ P,DISINI ;INITIALIZE DISPLAY +DD1: TLZ F,ROF ;INDICATE NO REGISTER OPEN + PUSHJ P,CRF ;TYPE CRLF (AND RUN SCOPE IF ON) + MOVE T,[SCHM,,SCH] + BLT T,ODF +DD2: MOVEI P,PS + CLEARM PRNC ;PARENTHESES COUNT +LIS: MOVE T,ESTU + MOVEM T,ESTUT +LISA: TDZ F,[(,-1-ROF-STF)LF1+CF1+SBF+2] ;LEAVE REGISTER OPENED,TYPEOUT SUPPRESSED +LISB: TDZ F,[(,-1-ROF-STF-FAF-SAF)NAF] + CLEARM,WRD +LIS1: CLEARM,FRASE +LIS2: MOVEI T,1 + MOVEM T,FRASE1 + TLZ F,MLF+DVF +L1: TLZ F,CF+CCF+SF+FPF ;TURN OFF CONTROL, SYL, PERIOD FLAG + CLEARM,SYL +L1RPR: CLEARM,SYM + MOVSI T,(50*50*50*50*50*50) + MOVEM T,TEM(I) ;INIT SYMBOL COUNTER + CLEARM,DEN + CLEARM,WRD2 + +L2: PUSHJ P,IN ;PICK UP CHARACTER + TLNE F,CF ;CONTROL FLAG + JRST,L21 + CAIG T,"Z ;Z + CAIGE T,"A ;A + JRST,.+2 + JRST,LET +L21: MOVE R,T + CAIN T,177 + JRST WRONG + CAILE T,"_ + JRST ERR + IDIVI R,3 + LDB W,BDISP(R+1) + CAIGE W,MULT-DDT ;LOCATIONS BEFORE MULT DON'T HAVE ARG EVALUATED + JRST DDT(W) + +L211: MOVE T,SYL + TLZN F,LTF + JRST POWER +L4A: PUSHJ P,EVAL + JRST,UND1 +L4: TLZE F,MF + MOVN T,T + TLNN F,SF + CAIE W,LPRN-DDT + JRST,.+2 + JRST,LPRN + + EXCH T,FRASE1 + TLNN F,DVF + IMULB T,FRASE1 + TLZE F,DVF + IDIVB T,FRASE1 + CAIGE W,ASSEM-DDT + JRST DDT(W) ;MULTIPLY OR DIVIDE + ADDB T,FRASE + CAIGE W,SPACE-DDT + JRST DDT(W) ; + - @ , + + ADD T,WRD + TLNE F,TIF ;TRUNCATE INDICATOR FLAG + HLL T,WRD ;TRUNCATE + MOVEM T,WRD + TLNN F,QF + MOVE T,LWT(I) + CLEARM,R + MOVE W1,ESTUT + CAMN W1,ESTU + JRST L5 + CAILE W,CARR-DDT + JRST ERR +L5: CAIG W,RPRN-DDT + JRST DDT(W) + PUSH P,KILRET + SKIPN PRNC + JRST DDT(W) + +UNDEF: MOVEI T,"U ;U + JRST WRONG1 +ERR: +WRONG: MOVEI T,"? +WRONG1: MOVEI P,PS + PUSHJ P,TOUT +RET: MOVEI P,PS + PUSHJ P,LCT ;COMMON RETURN FOR TAB;,JRST,LIS + JRST DD2 + UND1: MOVE R,ESTUT ;UNDEFINED SYM ASSEMBLER + PUSHJ P,EVAL2 + CAIN W,ASSEM-DDT + TLNN F,ROF + JRST OPLOOK + LDB T,[(100)PRNC + JUMPN T,UNDEF + CAIE W,ASSEM-DDT + XCT "#,CRF + MOVN R,[(2)2] + ADDB R,ESTUT + PUSHJ P,DISINI + MOVE T,SYM + TLO T,GLOBAL + MOVEM T,(R) + HRRZ T,LLOCO + TLNE F,MF + TLO T,400000 + MOVEM T,1(R) + SETZI T, + JRST L4 + +QUESTN: PUSHJ P,CRF ;LIST UNDEFINED SYMBOLS + MOVE R,ESTU +QUEST1: JUMPGE R,DD1 + MOVE T, (R) + SKIPA W1,ESTU + +QUEST2: ADD W1,[(2)2] + CAME T,(W1) + JRST QUEST2 + +QUEST3: CAME R,W1 + JRST QUEST4 + PUSHJ P,SPT + PUSHJ P,CRF +QUEST4: ADD R,[(2)2] + JRST QUEST1 + +OPLOOK: MOVE T,OPLK1 + MOVEI W1,SYM + MOVE R,[(440700)TXT + PUSHJ P,SPT+1 +OPLK1: IDPB T,R + ;OPDECODER + +OPEVAL: MOVEM P,SAVPDL + TRZA F,OUTPUT +OPTYPE: TRO F,OUTPUT + LSH T,-27. + MOVEM T,INST(I) + MOVE T,[(440700)TXT + MOVEM T,CHP +DEC: TRZ F,1RF + CLEARB R,W1 + MOVE W2,BTAB +OPDC1: ILDB T,W2 + CAILE T,40 + CAIL T,73 + SOJGE R,OPDC1 + JUMPG R,OPDC1 + SUBI T,40 + JUMPE T,DECX + JUMPG T,DC2 + DPB T,[(340500)PNTR] + TRZ T,-4 + AOS T + DPB T,[(300600)PNTR] + TRNN F,OUTPUT + JRST DC6 + LDB R,PNTR + JRST OPDC1 +DC2: HRREI T,-33(T) + JUMPL T,DECT + MOVE W1,T + IDIVI W1,4 + MOVE W2,BTAB(W2) + ADDI W2,(W1) + JRST OPDC1 + +DECT: TRNE F,OUTPUT + JRST O1CZ + ILDB W1,CHP + CAIE W1,133(T) + JRST LOSE + JRST OPDC1 +DECX: TRNE F,OUTPUT + POPJ P, + ILDB W1,CHP + JUMPE W1,DC7 +LOSE: POP P,R + POP P,W2 + POP P,PNTR + POP P,CHP +LOSE1: AOS R + DPB R,PNTR + LDB R,PNTR + JUMPN R,DC6AA + CAME P,SAVPDL + JRST LOSE + MOVSI T,DELO ;LOOK AT ALL LOCALS BEFORE GIVING UP + IORM T,SYM + PUSHJ P,EVAL + JRST UNDEF ;TYPE WARNING + PUSH P,R + PUSHJ P,EVAL1 + XCT "',CRF + CAME R,PRGM + XCT "",CRF + POP P,R +LOSE2: MOVEM R,PRGM + SUB R,[2,,2 + MOVE W1,(R) + TLNE W1,PNAME + JRST LOSE2 + JRST L4A ;SELECT APPROPRIATE PROGRAM +DC6: MOVEI R,0 + DPB R,PNTR +DC6AA: CAMN P,SAVPDL + JRST DC6BB + LDB T,-2(P) + CAME T,(P) + JRST LOSE1 +DC6BB: PUSH P,CHP + PUSH P,PNTR + PUSH P,W2 + PUSH P,R + JRST OPDC1 +DC7: MOVE P,SAVPDL + MOVE T,INST(I) + LSH T,27. + JRST L4 +O1CZ: TRO F,1RF + MOVEI T,133(T) + PUSHJ P,TOUT + JRST OPDC1 + PNTR: INST(I) +CHP: 0 +TXT: BLOCK 2 + +SAVPDL: 0 +BTAB: FOO=44 +REPEAT 4,[(FOO_12.+1100)TBL + FOO=FOO-11 +] + DEFINE BARF A +AWRD=AWRD+_CC +CC=CC-9. +IFL CC,[AWRD +AWRD=0 +CC=27. +] +CLOC=CLOC+1 +TERMIN + +DEFINE HACK A +IRPS B,D,[A] +Z="D +IFE Z-":,Y!B==CLOC +IFE Z-"/,IF1 [BARF 1] IF2 BARF Y!B+73 +IFE Z-"^,BARF _-1+B&7-1 +IFE *,[ +IRPC Q,,B +Z="Q +IFE Z-".,Z=100 +BARF Z-40 +TERMIN +] +TERMIN +TERMIN + + +TBL: AWRD=0 + CLOC=0 + CC=27. +;INITIAL DISPATCH + HACK [63^. FLO/ HAK/ ACCP/ BOOLE/ H HWT/ T ACBM/ . ] + +;BYTE AND FLOATING INST + HACK [FLO: 33^ ... BYTE/ FAD A/ FSB A/ FMP A/ FDV A: + 21^ LMB/ R LMB: 02^ . L:L. M:M. B:B. BYTE: 03^ .. + FS C/ IB P: P. I LD/ LD: LD B/ I DP/ DP: DP B/] + +;FWT, FIXED POINT ARITH, MISC. + HACK [HAK: 33^ MV/ MV: MOV MO/ ML/ DV/ SH/ H1/ JP/ + 21^ ADD IMB/ SU BIMB: B IMB: 02^ . I:I. M/ B/ MO: 22^ + EIMS: E IMS/ S IMS/ N IMS/ M IMS: 02^ . I/ M/ S: S. + ML: 21^ I ML1/ ML1: MUL IMB/ DV: 21^ I DV1/ DV1: + DI DV2: V IMB/ H1: 03^ EXC S3/ BL T: T. AO/ AO: AOBJ + AOB/ JRS T/ JFC L/ XC T/ . AOB: 01^ P/ N/ + JP: 03^ PU/ PU: PUSH PUS/ PO/ PO: POP POP/ JSR. + JS P/ JS PA: A. JR PA/ PUS: 01^ J: J.. POP: + 01^ . J/ SH: 02^ A S2/ ROT S1/ L S2: S S3: H S1/ . + S1: 21^ . C: C. ] + +;ARITH COMP, SKIP, JUMP + HACK [ACCP: 42^ CA CA1/ SJ/ A JS/ S JS: O 31^ + J COMP/ S COMP/ CA1: 31^ I COMP/ M COMP/ + SJ: 31^ JUM PSJ/ SKI PSJ: P COMP: + 03^ . L/ E: E. L E/ PA/ G E/ N: N. G. ] + +;BOOLEAN + HACK [BOOLE: 24^ ST/ AN: AND B2/ AN/ ST/ AN/ ST/ + X OR: OR B2/ I OR/ AN/ EQ DV2/ ST/ OR/ ST/ OR/ OR/ + ST: SET B2: 24^ Z IMB/ IMB/ CA: C TA/ TM: M IMB/ + CM: C TM/ TA: A IMB/ IMB/ IMB/ CB: C BIMB/ IMB/ CA/ + CA/ CM/ CM/ CB/ O IMB/ ] + +;HALF WORDS + HACK [HWT: 51^ HW1/ 21^ R HW2/ L HW2: R HW3/ HW1: + 21^ L HW4/ R HW4: L HW3: 32^ IMS/ Z IMS/ O IMS/ + EIMS/ ] + +;TEST INST + HACK [ACBM: 31^ AC1/ 01^ D AC2/ S AC2/ AC1: 01^ R AC2/ L + AC2: 42^ N EAN/ Z EAN/ C EAN/ O EAN: 12^ . E/ PA/ N/ ] + +IFN AWRD,AWRD + +NUM: ANDI T,17 ;T HOLDS CHARACTER + TLNE F,CF+FPF + JRST NM1 + MOVEI W,10 + IMULM W,SYL + ADDM T,SYL + MOVEI W,10. ;ALSO MAINTAIN DECIMAL WORD + IMULM W,DEN + ADDM T,DEN +LE1: AOJA T,LE1A ;FOR SQUOZE SYM + +DOLLAR: +PERC: MOVEI T,47+101-13-45(T) ;PERCENT SIGN +LET: TLC F,SF+FPF ;EXPONENT IFF LTF'*FEF'*(T=105)*SF*FPF=1 + TLZN F,LTF+FEF+SF+FPF + CAIE T,"E + TLOA F,LTF + TLOA F,FEF + JRST LET1 + TLZN F,MF + SKIPA W1,SYL + MOVN W1,SYL + MOVEM W1,FSV + CLEARM DEN +LET1: SUBI T,101-13 ;FORM RADIX 50 SYMBOL +LE1A: TLO F,SF+QF +LE2: MOVEI W,50 + EXCH W,TEM(I) + IDIVM W,TEM(I) + IMUL T,TEM(I) + ADDM T,SYM + JRST L2 + +NUM1: EXCH T,WRD2 ;FORM NUMBER AFTER DOLLAR SIGN + IMULI T,10. + ADDM T,WRD2 + TRO F,Q2F + JRST,L2 + + NM1: TLNE F,CF + JRST NUM1 + MOVEI W1,6 ;FORM FLOATING POINT NUMBER + AOS NM1A +NM1A: MOVEI W2,0 + MOVSI R,201400 +NM1A1: TRZE W2,1 + FMPR R,FT(W1) + JUMPE W2,NM1B + LSH W2,-1 + SOJG W1,NM1A1 +NM1B: MOVSI W1,211000(T) + FMPL R,W1 + SKIPN FH + JRST NM1C + LDB W2,[(331000)R] + LDB W1,[(331000)FH] + TLZ R,377000 + SUB W2,W1 + ASHC R,(W2) + ADD S,FL + TLZE S,400000 + AOS R + MOVE W2,FH + TLZ W2,377000 + ADD R,W2 + TLNN R,1000 + SOSA W1 + ASHC R,-1 + FSC R,1(W1) +NM1C: MOVEM R,FH + MOVEM S,FL + JUMPE R,NM1D + TLNE S,200000 + AOS R ; ROUND + TLO R,400 ; NORMALIZE +NM1D: MOVEM R,SYL + AOJA T,LE1A + +POWER: TLNN F,FEF + JRST L4 ;NO EXPONENT + CAIE W,PLUS-DDT + CAIN W,MINUS-DDT + TROE F,POWF + TRZA F,POWF + JRST DDT(W) ; E+- + + MOVE W2,DEN + MOVEI W1,FT-1 + TLZE F,MF + MOVEI W1,FT01 + SKIPA T,FSV +POW2: LSH W2,-1 + TRZE W2,1 + FMPR T,(W1) + JUMPE W2,L4 + SOJA W1,POW2 + +PERIOD: MOVE T,LLOC + TLNE F,SF ;SYLLABLE STARTED + MOVE T,DEN + MOVEM T,SYL + TLON F,FPF+SF+QF + MOVEI T,0 + IDIVI T,400 + SKIPE T + TLC T,243000 + TLC W1,233000 + FADL T,W1 + MOVEM T,FH + MOVEM W1,FL + HLLZS NM1A + MOVEI T,45 ;RADIX 50 PERIOD + JRST LE2 + +QUAN: SKIPA T,LWT(I) ;LAST QUANTITY TYPED +PILOC: MOVEI T, SAVPI +QUAN1: MOVEM T,SYL +QUAN2: TLO F,SF+QF ;WRD,SYL STARTED + TLZ F,CF+CCF + JRST,L2 + +CONTROL: TLOE F,CF + TLO F,CCF + JRST,L2 + + +EVAL: MOVE R,PRGM ;LOOK UP SYMBOL +EVAL0: HRLOI W1,37777+DELI + JRST EVAL3 +EVAL1: ADD R,[(2)2] +EVAL2: SKIPL R + MOVE R,@JOBSYM + CAMN R,PRGM + POPJ P, ;NO SYMBOL FOUND +EVAL3: MOVE T,(R) + XOR T,SYM + TLNN T,PNAME + TLOA W1,LOCAL + TDNE T,W1 + JRST EVAL1 + TLNN T,340000 + JRST EVAL1 + MOVE T,1(R) + +CPOPJ1: AOS (P) ;FOUND SYMBOL, SKIP +CPOPJ: POPJ P, + + +;BIT 40 - DELETE OUTPUT +; 20 - DELETE INPUT +; 10 - LOCAL +; 04 -GLOBAL +; NO BITS - PROGRAM NAME + +KILL: TLNN F,LTF ;DELETE SYMBOLS + JRST,KILLA + PUSHJ P,EVAL + JRST KILL1 + MOVEI T,DELO_-16. ;DELETE OUTPUT + TLNE F,CCF + MOVEI T,DELI_-16. ;NO INPUT OR OUTPUT + DPB T,[(420200+R)] +KILRET: JRST,RET + +KILLA: TLNN F,QF + TLNN F,CCF + JRST ERR + MOVE R,KILC + MOVEM R,@JOBSYM ;RESTORE INIT SYMS + HRRZM R,ESTU + MOVEM R,PRGM + HRLZI T,DELO+DELI + ANDCAM T,(R) ;GET RID OF DELETE BITS IN INITIAL TABLE + AOBJN R,.+1 + AOBJN R,.-2 + JRST,DD1 + +KILL1: MOVE R,ESTU ;REMOVE UNDEFINED SYMS + JUMPGE R,UNDEF +KILL2: PUSHJ P,EVAL0 + JRST RET + PUSHJ P,REMUN + JRST KILL2 + +REMUN: MOVE S,[(2)2] ;REMOVE ONE UNDEFINED SYM + ADDB S,ESTU + MOVE W,-2(S) + MOVEM W,(R) + MOVE W,-1(S) + MOVEM W,1(R) + POPJ P, + +DS: MOVE R,DSSAV(I) + MOVEI T,DELO_-16. + DPB T,[(420200+R)] + MOVE T,1(R) + PUSHJ P,LOOK + JRST RET + JRST RET + +TAG: TLNE F,CF ;DEFINE SYMBOL AS OPEN REGISTER + JRST SETNAM + MOVE W,LLOCO + HRRZM W,DEFV + TLOE F,FAF + JRST ERR +DEFIN: TLNE F,FAF + TLNN F,LTF + JRST ERR +ADEFIN: PUSHJ P,EVAL + JRST DEF1 + CAMGE R,KILC + JRST DEF2 ;REDEFINE + MOVEI T,DELI_-16. + DPB T,[(420200+R)] +DEF1: MOVN R,[(2)2] + ADDB R,@JOBSYM + HRRZ T,ESTU + SUBI T,2 + HRL T,ESTU + HRRM T,ESTU + SKIPGE ESTU + BLT T,-1(R) + PUSHJ P,DISINI +DEF2: MOVE T,DEFV + MOVEM T,1(R) + MOVSI T,GLOBAL + IORB T,SYM + MOVEM T,(R) + MOVE R,ESTU + +DEF3: JUMPGE R,RET ;PATCH IN UNDEFINED SYM + MOVE T,SYM + CAME T,(R) + JRST DEF4 + MOVE S,DEFV + SKIPGE 1(R) + MOVNS S + PUSH P,R + MOVE R,1(R) + PUSHJ P,FETCH + JRST ERR + ADD S,T + HRRM S,T + PUSHJ P,DEP + POP P,R + PUSHJ P,REMUN +DEF4: ADD R,[(2)2] + JRST DEF3 + + +SETNAM: MOVE R,@JOBSYM +SET2: JUMPGE R,UNDEF + MOVE T,(R) + ADD R,[(2)2] + CAME T,SYM + JRST SET2 + MOVEM R,PRGM + JRST RET + +MULT: TLOA F,PTF+MLF ;* +DIVD: TLO F,DVF+PTF ;SINGLE QUOTE + JRST L1 + +ASSEM: JRST PLUS ;# +MINUS: TLO F,MF +PLUS: TLO F,PTF + JRST LIS2 + +LPRN: CAML P,[(LPDL-32)] + JRST,ERR + PUSH P,F ;RECURSE FOR OPEN PAREN + PUSH P,WRD + PUSH P,FRASE + PUSH P,FRASE1 + AOS,PRNC + JRST,LISA + +INDIRECT: MOVSI W,(@) + IORB W,WRD + TLO F,QF + JRST,LIS2 + +ACCF: TLNN F,COMF + HRRM T,COMWD ;COMMA + MOVE R,T + HLLZS T + LDB W1,[(410300)WRD] + IDIVI W1,7 + LSH R,27(W1) + ADD T,R + ADD T,WRD + TLOE F,COMF +COMWD: HRLI T,. + MOVEM T,WRD + JRST SPACE+1 + +SPACE: TLNE F,QF + TLO F,TIF +SPAC1: TLZ F,MF+PTF + JRST,LIS1 + +RPRN: MOVS T,WRD ;) + SOSGE,PRNC + JRST,ERR + POP P,FRASE1 + POP P,FRASE + POP P,WRD + POP P,F + TLO F,QF + TLNE F,PTF + TLOE F,SF + JRST,RPRN1 + MOVEM T,SYL + JRST,L1RPR +RPRN1: ADDB T,WRD + JRST,L1RPR-1 + VARRW: SOSA LLOC ;^ +TAB: PUSHJ P,PLOC +LI1B: SOS LLOC + +LINEF: PUSHJ P,DEPRA ;NEXT REGISTER + TLZN F,CF + JRST LI0 +LI1A: MOVE R,PLCR ;MOVE BACK IN RING BUFFER + MOVE T,LOCBF(R) + SOSGE R + MOVEI R,NLEVS-1 + MOVEM R,PLCR + HRRZM T,LLOC + JRST DDT(W) +LI0: PUSHJ P,CRF + AOS T,LLOC +LI1: HRRZM T,LLOC + HRRZM T,LLOCO + PUSHJ P,PAD + MOVEI T,"/ ;SLASH + TLNE F,STF + MOVEI T,"! ;EXCLAMATION MARK + PUSHJ P,TOUT +LI2: TLZ F,ROF + PUSHJ P,LCT + MOVE R,LLOCO + PUSHJ P,FETCH + JRST ERR + TLO F,ROF + TLNE F,STF + JRST DD2 + JRST CONSYM + + +CARR: PUSHJ P,DEPRA + MOVEI W,LI1B-DDT + TLZE F,CF + JRST LI1A + JRST DD1 + + +OCON: TLZE F,CF + JRST ISTRIN + TROA F,LF1+CF1 ;OPEN AS CONSTANT +OSYM2: TRZ F,CF1 ;OPEN SYMBOLICALLY + TROA F,LF1 +SUPTYO: TLOA F,STF ;SUPPRESS TYPEOUT +SLASH: TLZ F,STF ;TYPE OUT REGISTER + TLNE F,QF + PUSHJ P,PLOC ;QUANTITY TYPED +SLAS1: HRRZM T,LLOCO + JRST LI2 + +ICON: TLZE F,CF + JRST IKON + PUSHJ P,DEPRA ;\ + JRST SLAS1 + +PLOC: CAMN T,LLOC + POPJ P, + AOS R,PLCR ;ADVANCE RING POINTER + CAIL R,NLEVS + CLEARB R,PLCR + EXCH T,LLOC + MOVEM T,LOCBF(R) + MOVE T,LLOC + HRRZS LLOC + POPJ P, + +OSYM: TLZN F,CF + JRST OSYM2 + PUSHJ P,SETISB +JSTR1: PUSHJ P,IIN + CAIL T,40 + CAILE T,140 + JRST ISTR2 + PUSHJ P,SASEM + JRST JSTR1 + +ASLASH: TLNN F,QF + JRST QUESTN + PUSH P,T + MOVEI T,"/ + PUSHJ P,TOUT + POP P,T + JRST SLASH + +IKON: MOVEM T,LWT(I) + PUSHJ P,EFFEC0 + JRST ERR + MOVE R,T + PUSHJ P,FETCH + JRST ERR + JRST OVRD2 + +DEPRA: TLNE F,ROF ;IF REGISTER IS BEING CHANGED + TLNN F,QF ;REMOVE ALL PREVIOUS UNDEFINED + JRST DEPRS ;SYMBOL REFERENCES TO IT + MOVE R,ESTU + MOVEM W1,ESTU +DEPRA2: JUMPGE R,DEPRS + HRRZ W,1(R) + CAMN W,LLOCO + PUSHJ P,REMUN + ADD R,[(2)2] + JRST DEPRA2 + +EQUAL: TROA F,LF1+CF1 ;= +PSYM: TRZ F,CF1 ;@ + TRO F,LF1 + JRST CONSYM + +R50PNT: MOVEM T,LWT(I) ;AMPERSANT + LSH T,-36 + TRZ T,3 + PUSHJ P,TOC + PUSHJ P,TSPC + MOVEI W1,LWT(I) + JRST SPT + +HWRDS: MOVEI R,HLFW-TFLOT ;H +SFLOT: ADDI R,TFLOT-SATP ;F +RATP: ADDI R,SATP-ITEXO ;T +TEXSET: ADDI R,ITEXO-PIN ;" +SYMBOL: ADDI R,PIN-FTOC ;S +CON: ADDI R,FTOC ;C + JSP W,SET + +RELA: TLZE F,QF ;R + JRST,BASECH + MOVEI R,PADSO-TOC +ABSA: ADDI R,TOC ;A + JSP W,SET + +BASECH: SOJLE T,ERR ;CHANGE RADIX + MOVEI R,1-10.(T) +SDEC: ADDI R,2 ;D +SOCT: ADDI R,10 ;O + JSP W,SET + +SET: MOVEI W,-RELA(W) + IDIVI W,5 + HRRZM R,SCH(W) + JUMPGE F,LIS1 + HRRZM R,SCHM(W) + JRST RET + +GO: HRLI T,(JRST) + TLC F,QF+CCF + TLCN F,QF+CCF + MOVEM T,STARTA + TLOE F,QF + JRST XEC0 + SKIPE T,STARTA + +XEC: TLNN F,QF ;X + JRST ,ERR +XEC0: MOVEM T,TEM + PUSHJ P,CRF + PUSHJ P,TTYLEV + PUSHJ P,INSRTB + JSP T,RESTORE + XCT TEM +XEC1: JRST DDT ;USED BY BCOM + JSR SAVE + PUSHJ P,BRKRET + PUSHJ P,CRF + JRST DD1 + +TEXO: TLNE F,CF ;IF ALTMODE TYPED, + JRST TEXO2 ;THEN SET TYPEOUT MODE + MOVEM T,LWT(I) ;DOUBLE QUOTE + ;DISPATCH ENTRY FOR IN DOUBLEQUOTE MODE +ITEXO: SETZM TEM2 + MOVE W1,T + TDNE W1,[-200] ;SKIP IF ONLY ONE CHARACTER IN WORD + JRST TEXO1 + SKIPN TEXOF ;IF IN ASCII MODE, + LSH W1,1 ;THEN ASSUME IT'S RIGHT JUSTIFIED +TEXO1: MOVEI T,0 +TEXO10: JUMPE W1,CPOPJ +TEXO11: LSHC T,6 ;SET INITIAL TEXT MODE TO SIXBIT +TEXO12: SKIPN TEM2 + JUMPE T,TEXO1 + SETOM TEM2 + ADD T,TEXOF + PUSHJ P,TOUT + JRST TEXO1 + + ;ALTMODE V + +DISF: SETCMM DISON ;COMPLEMENT STATUS FLAG + JRST DISINI ;INITIALIZE DISPLAY AND RETURN + +BP0: REPEAT NBP+1,[ + 0 + JSA T, BCOM + 0 +] + +BP1=BP0+3 +B1INS=BP1+2 +BPN=.-3 + + ;BREAKPOINT 0 LIKE OTHERS EXCEPT DOESN'T GET CHECKED ON LOC$B OR CLEARED BY $B + +BCOM: 0 + HRRM T,LEAV + MOVEI T,B1SKP-B1INS(T) + HRRM T,BCOM3 ;CONDITIONAL BREAK SETUP + MOVEI T,B1CNT-B1SKP(T) + HRRM T,BCOM2 ;PROCEDE COUNTER SETUP + MOVE T,BP1-B1CNT(T) + HLLM T,LEAV1 ;SAVE FLAGS FOR RESTORING + EXCH T,BCOM ;RESTORE FORMER CONTENTS OF ACCUMULATOR + +BCOM3: SKIPE B1SKP ;ADDRESS MODIFIED, POINTS TO CONDITIONAL BPT INSTRUCTION + XCT @.-1 +BCOM2: SOSG B1CNT ;ADDRESS MODIFIED, POINTS TO COUNT OF CURRENT BPT + JRST BREAK + + MOVEM T,AC0+T + LDB T,[(331100)@LEAV] + CAIL T,264 ;JSR + CAILE T,266 ;JSA,JSP + TRNN T,700 ;UUO + JRST PROC1 + CAIE T,260 ;PUSHJ + CAIN T,256 ;XCT + JRST PROC1 + MOVE T,AC0+T + JRST 2,@LEAV1 ;RESTORE FLAGS AND JUMP TO .+1 + +LEAV: XCT B1INS ;ADDRESS MODIFIED + JRST @BCOM + AOS BCOM + JRST @BCOM + +LEAV1: LEAV + +BREAK: JSR SAVE + PUSHJ P,BRKRET + SOS T,BCOM3 + HRRZS T + PUSHJ P,PADSO + MOVEI T,"> + PUSHJ P,TOUT + SKIPG @BCOM2 + PUSHJ P,TOUT ;TYPE OUT SECOND ">" IF COUNT EXHAUSTED + MOVE T,BCOM + HLLM T, SAVPI + MOVEI T,-1(T) + PUSHJ P,PAD + HRRZ T,@BCOM3 + HRRM T,PROC0 + HLRZ T,@BCOM3 + JUMPE T,BREAK1 + PUSHJ P,LCT + HLRZ T,@BCOM3 + PUSHJ P,PLOC + PUSHJ P,LI1 +BREAK1: HRRZ R,BCOM3 + SUBI R,B1ADR + IDIVI R,3 + MOVEI S,1 + LSH S,1(R) + TDNN S,AUTOPI + JRST RET + PUSHJ P,LISTEN + JRST PROCD1 + JRST RET + +PROCEDE: TLNN F,QF + MOVEI T,1 ;NO COUNT SPECIFIED, USE 1 + MOVEM T,@BCOM2 ;MOVE TO COUNT OF SPECIFIED BPT + HRRZ R,BCOM3 + PUSHJ P,AUTOP +PROCD1: PUSHJ P,CRF + PUSHJ P,TTYLEV +PROC0: HRRZI R,XEC1 ;ADDRESS MODIFIED + PUSHJ P,FETCH + JRST ERR + MOVEM T,WRD + PUSHJ P,INSRTB + MOVE T,WRD + JRST PROC2 + +PROC1: MOVE T,AC0+T + JSR SAVE + MOVE T,@LEAV +PROC2: MOVE R,BCOM + MOVEI W,100 + MOVEM W,TEM1 + JRST IXCT5 + +IXCT4: MOVEM R,40 + MOVEI R,41 +IXCT: SOSL TEM1 + PUSHJ P,FETCH + JRST BPLUP +IXCT5: MOVEM T,TEM + LSH T,-33 + CAIN T,254 + JRST IXCT6 + HRLZI 17,AC0 + BLT 17,17 + MOVEI T,@TEM + DPB T,[(2700)TEM] + LDB W1,[(270400)TEM] + LDB T,[(331100)TEM] + MOVEI P,PS + CAIN T,260 + JRST, IPUSHJ + + CAIN T,264 + JRST,IJSR + CAIN T,265 + JRST,IJSP + CAIN T,266 + JRST,IJSA + MOVE R,TEM + TRNN T,700 + JRST,IXCT4 + CAIN T,256 + JRST,IXCT + +IXCT6: MOVEI T,TEM + HRRM T,LEAV + MOVEI T,LEAV + JRST,RESTORE + +BPLUP: PUSHJ P,BRKRET + JSR SAVE ;ALWAYS SKIPS +INC1: JSR BP0 ;USED AS "CONSTANT" IN SETTING UP FOR INSERTING BREAKPOINTS + JRST ERR + +IPUSHJ: DPB W1,[(270400)CPUSHP] + CLEARM,TEM3 + MOVE T,TEM + JRST,RESTR1 + +IJSA: MOVE T,BCOM + HRL T,TEM + EXCH T,AC0(W1) + JRST,IJSR2 + +IJSR: MOVE T,BCOM + HLL T,SAVPI +IJSR2: MOVE R,TEM + PUSHJ P,DEP + AOS,TEM +IJSR3: MOVE T,TEM + JRST,RESTORE + +IJSP: MOVE W,BCOM + HLL W,SAVPI + MOVEM W,AC0(W1) + JRST,IJSR3 + +;INSERT BREAKPOINTS + +INSRTB: MOVE S,INC1 +INSRT1: SKIPE R,B1ADR-BP1(S) ;GET C(BADR) IN R + PUSHJ P,FETCH ;GET CONTENTS OF LOC ADDRESSED BY R INTO T + JRST INSRT3 ;LOCATION OUTSIDE OF MEMORY OR BREAKPOINT EMPTY + MOVEM T,B1INS-BP1(S) ;PUT CONTENTS IN BINS + MOVE T,S ;JSR BP + PUSHJ P,DEP ;DEPOSIT T IN LOCATION SPECIFIED BY R +INSRT3: ADDI S,3 + CAMG S,[JSR BPN] + JRST INSRT1 + POPJ P, + +;REMOVE BREAKPOINTS + +REMOVB: MOVEI S,BNADR ;POINTER TO BADR +REMOV1: MOVE T,B1INS-B1ADR(S) ;INSTRUCTION AT BREAKPOINT + SKIPE R,(S) ;IF THERE'S REALLY A BREAKPOINT THERE, + PUSHJ P,DEP ;THEN DEPOSIT INSTRUCTION IN USER'S CORE (SPECIFIED BY R) +REMOV3: SUBI S,3 + CAIL S,B0ADR + JRST REMOV1 + POPJ P, + + ;ALTMODE B + +BPS: TLZE F,QF + JRST BPS1 ;LOCATION SPECIFIED + TRZE F,Q2F + JRST BPS2 ;REMOVE SPECIFIED BREAKPOINT + MOVE T,[(B1ADR)B1ADR+1] ;REMOVE ALL BREAKPOINTS + CLEARM B1ADR + BLT T,BNADR+2 + JRST DD1 + + ;LOC$B, LOC$NB + +BPS1: TRZN F,Q2F + JRST,BPS3 ;NUMBER NOT TYPED AFTER ALTMODE + MOVE R,T + TRO F,2 ;USED LATER + + ;GET HERE WHEN NUMBER TYPED AFTER ALTMODE + +BPS2: SKIPL T,WRD2 ;BPT # NOT LEGAL... + CAILE T,10 ;IF NOT BETWEEN 0 AND 8 INCLUSIVE + JRST,ERR + IMULI T,3 ;AMOUNT OF STG PER BREAKPOINT + ADDI T,B1ADR-3 ;MAKE T POINT TO STG AREA OF SPECIFIED BREAKPOINT + TRZN F,2 + JRST MASK2 ;LOCATION NOT SPECIFIED, TREAT AS SYM + EXCH R,T ;R NOW IS POINTER TO BP STG AREA, T SPECIFIED LOCATION + JRST BPS5 + + ;LOC$B + +BPS3: MOVEI R,B1ADR +BPS4: HRRZ W,(R) ;GET BPN LOCATION + CAIE W,(T) ;IF SPECIFIED LOCATION, + SKIPN (R) ;OR IF ZERO, + JRST,BPS5 ;THEN USE IT, + ADDI R,3 ;OTHERWISE INCREMENT R TO POINT TO STG OF NEXT BPT + CAIG R,BNADR ;SKIP IF TOO MANY + JRST,BPS4 ;GO LOOK AT NEXT ONE + JRST,ERR ;ALL FULL + +BPS5: MOVEM T,(R) ;SET BP TO SPECIFIED LOCATION (0 MEANS NOT IN USE) + CLEARM,1(R) + CLEARM,2(R) +AUTOP: SUBI R,B1ADR ;NOW MUNG R, + IDIVI R,3 ;INTO BP NUMBER + MOVEI S,1 + LSH S,1(R) ;C(S):=1_<1+BP#> + ANDCAM S,AUTOPI + TLNE F,CCF + IORM S,AUTOPI ;ALTMODE ALTMODE TYPED MEANS BPT ENCOUNTER => TYPE MESSAGE + ;BUT CONTINUE (UNTIL CHARACTER TYPED AT TTY) + POPJ P, + + + +DEPRS: MOVEM T,LWT(I) +DEPR: MOVE R,LLOCO ;QUAN TYPED IN REGIS EXAM + TLZE F,ROF + TLNN F,QF + POPJ P,0 +DEP: TRNN R,777760 + JRST,DEP1 ;BPT LOCATION IS AN ACCUMULATOR + MOVEM T,0(R) + POPJ P,0 +DEP1: MOVEM T,AC0(R) + POPJ P,0 + +FETCH: MOVE T,HIGH + CAIGE T,(R) + POPJ P, + MOVE T,(R) + TRNN R,777760 + MOVE T,AC0(R) + JRST CPOPJ1 + FIRARG: MOVEM T,DEFV + TLO F,FAF + JRST,ULIM1 +ULIM: TLO F,SAF + HRRZM T,ULIMIT +ULIM1: TLNE F,CF + JRST OVRD + TLNN F,QF + JRST,ERR + JRST,LISB + +LOOK: SETZB W1,S + MOVSI W1,DELI+DELO + MOVE R,PRGM + MOVEM R,PRGM(I) + MOVSI W2,PNAME + SKIPGE T + MOVSI S,400000 + MOVE W,[444400,,ENDT] + MOVEM W,TEM(I) +LEND1A: ILDB W,TEM(I) + MOVEM W,LLUP1 + JRST LLUP1 +ENDT: TDNN W2,(R) + TLO W1,LOCAL + SKIPL R + MOVE R,@JOBSYM + CAMN R,PRGM(I) + TLZA W1,-1 +LLUP: ADD R,[2,,2] +LLUPI1: JRST LLUP1 ;OR TRNA + PUSHJ P,SWAP + CONSZ DIS,200 + JRST LLUPD +LLUP1: 0 + JRST LEND1 + CAML T,1(R) + CAML S,1(R) + JRST LLUP + HLRZ W,W1 + TSNN W,(R) + TDNN W2,(R) + JRST LLUP + HRR W1,R + CAMN T,1(R) + JRST SPT + MOVE S,1(R) + JRST LLUP +LLUPD: BLKO DIS,DISPTR + PUSHJ P,RECYC +CJLP1: JRST LLUP1 +LEND1: AOS W,TEM(I) + XCT (W) + JRST LEND1A +LOOK1: MOVEM T,TEM(I) + TRNE W1,-1 + SUB T,S + JRST CPOPJ1 + +CONSYM: MOVEM T,LWT(I) +CONSM: TRNN F,LF1 +CONS1: JRST @SCH + TRNE F,CF1 + JRST, FTOC + +PIN: TRZ F,NAF + TLC T,700000 + TLCN T,700000 + JRST,INOUT + PUSHJ P,OPTYPE + MOVSI T,777000 + AND T,LWT(I) + JUMPE T,PI3+1 + TRNN F,1RF + PUSHJ P,LOOK +PI3.1: TROA F,NAF + JRST HLFW +PI3: PUSHJ P,TSPC + LDB T,[(270400)LWT(I)] ;AC + JUMPE T,PI4 + PUSHJ P,PAD +PI3A: XCT ",,CRF +PI4: MOVE W1,LWT(I) + MOVEI T,"@ ;AT SIGN + TLNE W1,20 ;CHECK FOR INDIRECT BIT + PUSHJ P,TOUT +PI5: HRRZ T,LWT(I) + LDB W1,[(331100)LWT(I)] + CAIL W1,240 + CAILE W1,247 + PUSHJ P,SPAD + PUSHJ P,PADS3A +PI7: TRZ F,NAF + LDB R,[(220400)LWT(I)] ;INDEX REGISTER CHECK + JUMPE R,PADS1 ;EXIT +PI7.1: XCT "(,CRF + MOVE T,R + PUSHJ P,PAD + MOVEI T,") + JRST,TOUT ;EXIT + + +HLFW: TRO F,NAF + HLRZ T,LWT(I) + PUSHJ P,PAD + XCT ",,CRF + XCT ",,CRF + SKIPA T,LWT(I) +SPAD: AOS (P) +PAD: ANDI T,777777 ;PRINT ADDRESS + JRST @AR ;PADSO OR PAD1 +PADSO: JUMPE T,TOC2+1 + PUSHJ P,LOOK +PADS1: POPJ P,0 + MOVE W2,1(W1) + CAIGE T,100 + CAIGE W2,60 + JRST,PADS3 + MOVEM T,TEM(I) + JUMPE W1,PAD1 + PUSHJ P,SPT + XCT "+,CRF +PADS2: HRRZ T,TEM(I) +PAD1: JRST,TOC ;EXIT + +PADS3: MOVE T,TEM(I) +PADS3A: TRNE F,NAF + CAIGE T,776000 + JRST TOC +PADS3B: MOVNM T,TEM(I) +PADS4: XCT "-,CRF + JRST,PADS2 + +INOUT: TDC T,[(,-1)400000] + TDCN T,[(,-1)400000] + JRST PADS3B + HLRZ R,T + CAILE R,(CONO 774,@) + JRST HLFW + AND T,[(700340)] + PUSHJ P,LOOK + JRST,.+2 + JRST,HLFW + PUSHJ P,TSPC + MOVE T,LWT(I) + AND T,[(77400)] +INOUT1: JUMPE T,PI4 ;USED BY "WORD" + PUSHJ P,LOOK ;LOOK FOR DEVICE NUMBER + JRST,PI3A + MOVE T,TEM(I) + LSH T,-30 + PUSHJ P,TOC + JRST,PI3A + +MASK: TLNE F,QF + JRST,MASK1 + MOVEI T,MSK + ;$NB ENTRY (WHERE N SPECIFIED, LOCATION NOT) +MASK2: MOVEI W,1 + MOVEM W,FRASE1 + JRST QUAN1 +MASK1: MOVEM T,MSK + JRST,RET + +EFFEC: TLO F,LTF + HRRZ T,T +AWORD: SKIPA W,INOUT1 ;JUMPE T, +NWORD: MOVSI W,(JUMPN T,) + HLLM W,SEAR2 + +SEARC: TLZN F,QF + JRST,ERR + SETCAM T,WRD + MOVE T,[EQV T,WRD] + TLNE F,LTF + MOVE T,[JRST SEAR2B] + MOVEM T,SEARMD + MOVSI T,-5 + SETCMM FRASE(T) ;PREVENT TYPEOUT + AOBJN T,.-1 + MOVE T,ULIMIT + TLNE F,SAF + TLO F,QF + PUSHJ P,SETUP1 + PUSHJ P,CRF +SEAR1: TRNN R,777760 + JRST SEAR1A + MOVE T,(R) +SEAR1B: +SEARMD: EQV T,WRD + AND T,MSK +SEAR2: JUMPE T,SEAR3 ;OR JUMPN T +SEAR2A: TRNN R,77 + JRST SEAR2D +SEAR2E: AOBJN R,SEAR1 + TLNE R,-1 + JRST SEAR1 +SEAR2C: SETCMM LWT(I) + JRST,DD1 +SEAR2D: PUSHJ P,LISTEN + JRST SEAR2E + JRST SEAR2C + +SEAR1A: PUSHJ P,FETCH + JRST SEAR2A + JRST SEAR1B +SEAR2B: PUSHJ P,EFFEC0 + JRST SEAR2A + EQV T,WRD + ANDI T,777777 + JRST SEAR2 + SEAR3: PUSHJ P,FETCH + JRST ERR + MOVEM T,LWT(I) + MOVEM R,TEM2 + MOVEM R,T + HRRZM R,LLOCO + PUSHJ P,PLOC + PUSHJ P,PAD + XCT "/,CRF ;SLASH + PUSHJ P,LCT + MOVE T,LWT(I) + PUSHJ P,CONSYM + PUSHJ P,CRF + SETCMM LWT(I) + SETCMM TEM(I) +SEAR4: MOVE R,TEM2 + JRST, SEAR2D + +EFFEC0: MOVEM R,TEM2 ;CALLED BY SEARCH AND $\ + MOVEI W,100 + MOVEM W,TEM(I) +EFFEC1: MOVE W,T + LDB R,[(220400)T] + JUMPE R,EFFEC2 + HRRZ T,AC0(R) + ADD T,W +EFFEC2: HRR R,T + TLNN W,20 ;INDIRECT BIT CHECK + JRST EFFEC3 + SOSE TEM(I) + PUSHJ P,FETCH + JRST EFFEC4 + JRST EFFEC1 +EFFEC3: AOS (P) +EFFEC4: MOVE R,TEM2 + POPJ P, + + +SETUP: TLO F,LTF ;ZERO +SETUP1: MOVEI T,1(T) + TLNN F,QF +SETUP2: HRRZ T,ESTU + HRRM T,ULIMIT + HRRZ R,DEFV + TLNN F,FAF + MOVEI R,0 + CAML R,ULIMIT + JRST ERR + MOVEM R,DEFV + MOVE W,R + SUB W,ULIMIT + HRLM W,R + POPJ P,0 + +ZERO: JUMPGE F,ERR + PUSHJ P,SETUP +ZERO1: TRNE R,777740 + JRST,ZERO2 + TRNN R,20 ;DONT Z 20-37 + CLEARM,AC0(R) + AOBJN R,ZERO1 + TLNE R,-1 + JRST ZERO1 + JRST,DD1A +ZERO2: HRRZ S,T + CAIL S,DDT + MOVEI S,DDT + CAILE S,(R) + JSP W,ZEROR + HRRZ R,R + CAIG R, PS + MOVEI R, PS + HRRZ S,T + CAMLE S, R + JSP W,ZEROR + JRST,DD1A + +ZEROR: HRL R,R + CLEARM,(R) + ADDI R, 1 + BLT R, -1(S) + JRST,(W) + FTOC: +TOC: HRRZ W1,ODF + CAIN W1,12 + JRST, TOC4 +TOCA: LSHC T,-43 + LSH W1,-1 ;W1=T+1 +TOC1: DIVI T,@ODF + HRLM W1,0(P) +TOC3: JUMPE T,TOC2 + PUSHJ P,TOCA +TOC2: HLRZ T,0(P) + ADDI T,"0 +CJTOUT: JRST,TOUT ;DOES POPJ TO TOC2 OR EXIT + +TOC4: MOVM W1,T + JUMPGE T,TOC5 + XCT "-,CRF +TOC5: MOVEI T,0 + PUSHJ P,TOC1 +TPER: MOVEI T,". + JRST TOUT + +SPT: MOVE T,CJTOUT + MOVEM T,SPTS(I) + MOVE T,0(W1) ;SYMBOL PRINT + MOVEM W1,DSSAV(I) + TLZ T,740000 +SPT1: IDIV T,[50*50*50*50*50] + PUSHJ P,SPT2 + MOVE T,W1 + IMULI T,50 + JUMPN T,SPT1 + POPJ P, + +SPT2: ADDI T,260-1 + CAILE T,271 + ADDI T,301-272 + CAILE T,332 + SUBI T,334-244 + CAIN T,243 + MOVEI T,256 + XCT SPTS(I) + POPJ P, +BRKRET: PUSHJ P,REMOVB +TTYRET: CONI DIS,T + DPB T,[600,,DRESET] + CONI LPT,T + DPB T,[300,,LPTRST] + SKIPE LPTFLG + CONO LPT,10 +TTYRT: MOVEI T,10 + MOVSM T,DISDON + CONI TTY,SAVTTY + CONO TTY,400000(T) + PUSHJ P,DISINI + XCT TTYRT +TTY1: MOVEI W2,40000 + CONSZ TTY,120 + SOJG W2,.-1 + CONI TTY,W2 + XOR W2,SAVTTY + ANDI W2,10 + XORM W2,SAVTTY + DATAI TTY,W2 + HRLM W2,SAVTTY + CONO TTY,3400(T) + CONO TTY,400000(T) + POPJ P, +TTYLEV: MOVS T,DISDON + CAIN T,@TTYRT + JRST .+3 +DRESET: CONO DIS,100 + DATAO DIS,[3000] + SKIPE T,LPTRST + CONO LPT,10(T) + MOVE T,SAVTTY + ANDI T,170017 + TRNN T,10 + TRO T,200 + JRST,TTY1 + +KILC: (,-NSYMS)LOW + + +WRD: 0 +WRD2: 0 +PRNC: 0 +FRASE: 0 +SYL: 0 +DEN: 0 +ZLWT: 0 +TEM2: 0 +LPTRST: 0 +LPTFLG: 0 +TTYFLG: -1 +ESTU: 0 +ESTUT: 0 +FSV: 0 +FRACT: 0 +FPWR: 0 +FTERM: 0 +FH: 0 +FL: 0 +SYM: 0 +DEFV: 0 +ULIMIT: 0 +LLOC: 112 ;CURRENT LOCATION +LLOCO: 0 +PLCR: 0 +LOCBF: BLOCK NLEVS + +DIS1: +ACSTG: BLOCK 10 +INST: 0 +LWT: 0 +TEM: 0 +TEM1: 0 +PRGM: 0 +DSSAV: SYM +OUTSW: 0 +SPTS: JRST TOUT +DISSW: MOVE T,@-1(P) +SATPP: .+1 +SATPT: 0 + +DIS2: +DISACS: BLOCK DIS2-DIS1-6 + SYM + DISAD + JRST TOUT + MOVSI T,(TRNA#CONSZ#CONSO) + .+1 + 0 + +STRTSW: -1 ;-1 => WILL SET STARTA FROM MACAC IF RH(MACAC) .NE. 0 + +HIGH: MEMSIZ-1 + +STARTA: 0 ;STARTING ADDRESS +SAVPI: 0 + 1177 +SAVTTY: 0 + +MSK: -1 ;INITIAL MASK FOR WORD SEARCHES +B0ADR: REPEAT 3,0 ;FOR $0B, MUST BE SPECIFIED TO BE USED (NOT SET BY LOC$B, NOT CLEARED BY $B) +B1ADR: 0 +B1SKP: 0 +B1CNT: 0 ;ONE MORE THEN # TIMES TO IGNORE ENCOUNTER OF THIS BPT + +REPEAT NBP*3-3, 0 + +BNADR=.-3 +AUTOPI: 0 ;1_N ON IF LOC$$B TYPED, ON MEANS PRECEED AFTER TYPING BPT MSG, UNTIL CHAR. TYPED AT TTY + +AC0: BLOCK 17 +AC17: 0 + +SCH: 0 +AR: 0 +ODF: 0 +SCHM: PIN ;THESE 3 LOCATIONS BLT'D INTO PRECEDING 3 LOCATIONS DURING SAVE +ARM: PADSO +ODFM: 10 +SARS: 0 ;NON-ZERO IF STUFF SAVED (USED BY SAVE) +FRASE1: +TEM3: 0 +INSW: 0 + +DISCNT: 0 +DISPN1: 0 + +SAVE: 0 + SKIPN SARS ;IF CRUD NOT ALREADY SAVED, + JRST SAV1 ;THEN GO SAVE IT, + AOS SAVE ;OTHERWISE AOS RETURN POINT, + JRST SAV5 ;AND SAVE MINIMALLY +SAV1: CONI PRS,SAVPI + CONO PRS, @SAVPI+1 + MOVEM 17,AC17 + HRRZI 17,AC0 + BLT 17,AC0+16 + MOVE T, SAVE + HLLM T, SAVPI +SAV5: SETOM,SARS ;INDICATE CRUD SAVED + MOVEI P,PS ;INITIALIZE PDL POINTER + MOVE F,[SCHM,,SCH] + BLT F,ODF + CLEARB F,I ;CLEAR FLAGS AND I + JRST,@SAVE + + + ;SEE LOW CODE FOR RESTORE + +TATP: TLZE F,QF + SKIPN T + JRST ERR + MOVEI W,36. + DPB T,[300600,,SATPP] + DPB T,[300600,,SATPP+DIS2-DIS1] + IDIV W,T + MOVEM W,SATPC + JRST RATP + +SATP: MOVEI W,44 + DPB W,[360600,,SATPP(I)] + MOVE W,SATPC + MOVEM T,SATPT(I) +SATPL: ILDB T,SATPP(I) + PUSHJ P,TOC + PUSHJ P,TSPC + SOJG W,SATPL + POPJ P, + +SATPC: 0 + +CTLX: LSH T,16. + HRRZ W1,T +CTLZ2: ADDI T,177777 +CTLY2: TLZN F,QF + JRST ERR + ADD W1,[40,,40] + BLT W1,(T) + POPJ P, + +CTLY: LSH T,16. + HRLZ W1,T + MOVEI T,177777 + JRST CTLY2 + +CTLZ: LSH T,16. + HRLZ W1,T + SKIPN W1 + JRST ERR + SETZM (T) + HRRI W1,1(T) + SUB W1,[40,,40] + JRST CTLZ2 + +BDISP: (301400+R)DISP + (141400+R)DISP + (1400+R)DISP + +DISP: .BYTE 12. +DEFINE ZD A,B,C + A-DDT + B-DDT + -DDT+C +TERMIN + +ZD ERR,ERR,L2 ; +ZD DS,ERR,L2 ;^C,, +ZD ERR,ERR,ERR ;,, +ZD TAB,LINEF,ERR ;TAB,LF, +ZD ERR,CARR,ERR ;FORMF,CR, +ZD ERR,ERR,ERR ;,, +ZD ERR,ERR,ERR ;,, +ZD ERR,L2,L2 ;,, +ZD CTLX,CTLY,CTLZ ;,, +ZD CONTROL,ERR,ERR +ZD ERR,ERR,SPACE +ZD SUPTYO,TEXO,ASSEM +ZD DOLLAR,PERC,R50PNT +ZD DIVD,LPRN,RPRN +ZD MULT,PLUS,ACCF +ZD MINUS,PERIOD,SLASH +ZD NUM,NUM,NUM +ZD NUM,NUM,NUM +ZD NUM,NUM,NUM +ZD NUM,TAG,DEFIN +ZD FIRARG,EQUAL,ULIM +ZD ASLASH,INDIRECT,ABSA ;/,@,A +ZD BPS,CON,SDEC ;B,C,D +ZD EFFEC,SFLOT,GO ;E,F,G +ZD HWRDS,PILOC,ERR ;H,I,J +ZD KILL,ERR,MASK ;K,L,M +ZD NWORD,SOCT,PROCEDE ;N,O,P +ZD QUAN,RELA,SYMBOL ;Q,R,S +ZD TATP,DECDMP,DISF ;T,U,V +ZD AWORD,XEC,ERR ;W,X,Y +ZD ZERO,OCON,ICON ;Z, +ZD OSYM,VARRW,PSYM + + .BYTE + +DECDMP: CONSZ TTY,20 + PUSHJ P,DISCFT + SETOM STRTSW ;RELEASE STARTING ADDRESS SWITCH + JRST MACDMP + +IFIX: SETZM STRTSW ;GRAB STARTING ADDRESS SWITCH, DON'T BOTHER LOOKING AT FORMER CONTENTS + SKIPLE T,JOBSYM ;IF JOBSYM POSITIVE, + JRST DDT ;THEN CONTROL SHOULDN'T HAVE COME TO HERE TO BEGIN WITH + MOVE R,(T) ;GET POINTER TO SYMS + JUMPN T,IFIX1 ;JUMP IF SYMS ADDED + MOVE R,KILC ;INITIAL SYMS POINTER + MOVEM R,DDT-2 ;SET UP SYM POINTER + MOVEI T,DDT-2 +IFIX1: HRRZM T,JOBSYM ;INDICATE LOCATION OF SYMS POINTER + HRRZM R,ESTU + HRRZM R,ESTUT + SUBI T, NSYMS+DDT-LOWCOD + HRRM T, KILC + MOVEM R,PRGM + CONI TTY,T + ANDI T,170000 + IORI T,10 + HRRM T,TTYRT ;CONO TO TTY + JRST DDT + +CONSTANTS + +DDTEND: +INFORM [HIGHEST USED]\.-1 + +END IFIX +  \ No newline at end of file