; UPDATE TSTBO2.S02 6/4/73 ; UPDATE TSTBO2.S01 5/29/73 .TITLE TSTBO2 ; ; TEST TASK FOR DEBUG ; ; ; ; EXTERNAL DEFINITIONS FOR TASK RELOCATION REGISTERS, ; CONSTANT REGISTER AND LOG. TTY DEV. NO. ; .DEF $R0,$R1,$R2,$R3,$R4,$C,$TTY ; ; EXTERNAL REFERENCES ; .REF DEBUG ; ; TASK EQUATES ; R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 ; UPDATE ROSODT.S04 6/4/73 ; UPDATE ROSODT.S03 5/25/73 ; UPDATE ROSODT.S02 5/11/73 ; UPDATE ROSODT.S01 5/10/73 ; UPDATE ROSODT 5/8/73 .TITLE ROSODT . = .+144+26 ;RESERVES SPACE FOR STACK ; ; EXTERNAL DEFINITIONS ; .DEF ODTIPL,ROSODT,OLDODT R0 = %0 ; REGISTER R1 = %1 ; NAMING R2 = %2 ; CONVENTIONS R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 ST = 177776  ;STATUS R. X@@@.@H(@W (x8hdhhdhW (d|.!P d22 (W "&XW   d.d      I .VZCZ FB (Bm.B2 .-(k .lh .rt^( _t^hzrt^hv\}(t^:h(z0\}\P Q zR .P  Q zR zP.z% 7 w .|w 7` h w  ` h . 7w (w zĝP77o k  . !JwF TT  .& 20@p D) A  = %5 SP = %6 PC = %7 ; ; ; EMT NOS. FOR ROS PROGRAM CALLS ; TTYOUT = 11. TTYIN = 12. LPRNTR = 21. NOCKPT = 24. EXIT = 4 ; ; DEVICE CODES ; TTY = 0 LP = 3 .PAGE ; ; ; TASK HEADER ; TSTHDR: .WORD 1 ;THREAD .WORD 41 ;TASK NO. .BYTE 120 ;SYSTEM TASK WITH DEBUG .BYTE 12 EGISTER O.BKP = 16  ;NUMBER OF BREAKPOINTS-1 MULT. BY 2 O.RLR = 16  ;NO. OF RELOC. REGISTERS-1, TIMES 2 O.TVEC = 14  ;TRT VECTOR LOCATION O.RELC = 20  ;NUMBER OF RELOC.REGISTERS(TIMES 2) O.STM = 340  ;PRIORITY MASK - STATUS REGISTER O.TBT = 20  ;T-BIT MASK - STATUS REGISTER TRT = 000003  ;TRT INSTRUCTION O.NEXT = '. ;CHAR TO BE USED FOR OPENING NEXT LOCATION O.RDB = 177562 ;R DATA BUFFER O.RCSR = 177560 ;R C/SR O.TDB = 177566 ;T DATA   .THIS IS TSTBUG O2 TYPE YOUR NAME ANDR'" IT WILL BE PRINTED ON THE LP!  B B 20p.8 &DCc  w \w  w  .^' 7  &w \.w wXw w  fw  .w 7 wtwhw   % E! " c. e wh ` \  =w   \ .pc \ w dU w \N w T w L.w T 72 w F7+ w >7% 7 L G (L q.B\ tw7   ww (b \ .h ww w A B`. ;PRIORITY .WORD TSTBUG-A ;TASK ENTRY .WORD 0 ;MAX TIME .WORD 0 ;TIMER .WORD 50. ;STACK SIZE .WORD 5. ;CPU STATUS .WORD 0,0 .WORD 77406 .WORD 0,0,0,0,0,0,0 .WORD A .WORD 0,0,0,0,0,0,0,0,0 .WORD DEBUG .WORD 0,0,0 .CSECT DBGTST A: .WORD 251. .BLKW 50.-1 .PAGE ; ; BUFFER O.TCSR = 177564 ;T C/SR .CSECT .ODT ; ; IPL ENTRY FOR ODT ; ODTIPL: TSTB ODINIT ;HAS ODT BEEN PREVIOUSLY INITIALIZED? BEQ 2$ INCB IPLFLG ;SET IPL INITIALIZATION FLAG JMP OLDODT ;NO, GO DO IT! INCB DOSRTN ;INHIBIT CNTL C RETURN TO DOS 2$: RTS PC ;YES, RETURN .CSECT .PAGE ; INITIALIZE ODT ; USE O.ODT FOR A NORMAL ; UPDATE DEBUG.S03 5/18/73 ; UPDATE DEBUG.S02 5/17/73 ; UPDATE DEBUG.S01 5/8/73 .TITLE DEBUG ; . = .+150+26 ; R0 = %0 ; REGISTER R1 = %1 ; NAMING R2 = %2 ; CONVENTIONS R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 ST = 177776  ;STATUS REGISTER $TDBUG = 75 ;EMT NO. FOR ROS CALL TO GET TASK NO. O.BKP = 16  ;NUMBER OF BREAKPOINTS-1 MULT. BY 2 O.RLR = 16  ;NO. OF RELOC. REGIS % w| 7a.wrwh E 74wh "4.} E t4P 4D4(4A.Iw H-:% w  =w .&@78 4=w "&e 4.L0w ,w %@w k.re=w @w ww.w=w  w & w T.Ae0w ,w rlpw 0a.`- X\74V DU  ; TASK ENTRY ; TSTBUG: EMT NOCKPT ;DISALLOW CHECKPOINTING SCC ;EXERCISE TRACE PRINTOUT BY CHANGING CCC ;COND CODES AND REGS CLR R0 CLR R1 CLR R2 CLR R3 CLR R4 CLR R5 MOV #111111,R0 MOV R0,R1 MOV R0,R2 MOV R0,R3 MOV R0,R4 MOV R0,R5 TST -(SP) TSTENTRY ; USE O.ODT+2 TO RESTART ODT - WIPING OUT ALL BREAKPOINTS ; USE O.ODT+4 TO RE-ENTER (I.E. - FAKE A BREAKPOINT) OLDODT: BR O.STRT ;NORMAL ENTRY BR O.RST  ;RESTART O.ENTR: MOV ST,O.UST ;RE-ENTER -- SAVE STATUS MOV O.TVEC+2,ST ;SET UP LOCAL STATUS MOV PC,-(SP) ;FAKE THE PC MOV (SP)+,O.UPC MOVB #-1,O.P  ;DISALLOW PROCEED CLRB O.S JMP O.BK1 O.STRT: MOV ST,O.UST ;SAVE STATUS MOV (SP),O.UPC ;SAVE PC ;RUN AT CURRENT STATUTERS-1, TIMES 2 O.RELC = 20  ;NUMBER OF RELOC.REGISTERS(TIMES 2) O.TBT = 20  ;T-BIT MASK - STATUS REGISTER TTYLOG = 0 ;TTY LOGICAL NO. (DEFAULT) LPLOG = 3 ;LP LOGICAL NO. (DEFAULT) MAXLN = 60. ;MAX LINES PER PAGE TO BE PRINTED ON LP O.NEXT = '. ;CHAR TO BE USED FOR OPENING NEXT LOCN ; ; EMT NOS. FOR ROS PROGRAM CALLS ; TTYOUT = 11. ;TTY OUTPUT REQUESTS TTYIN = 12. X 4. $w &?w >7 w @.07%7 70    w *%0 %7y.VE `  1w  W ֆ w V.| m7 y8Hw& "8$&(HjbD^ZPt.bD  ^ZPt|l*J.| l *e.7fD \ 7( .X7R%JF > (SP)+ NOP NOP NOP ; ; TYPE MSG TO OPERATOR ; MOVB #TTY,DEVICE ;TTY DEVICE NO. TO LIST MOV #MESG1H,BUFADR ;MSG BUF ADDR TO I/O LIST MOV #MESG1E-MESG1,MESG1H ;NO. CHARS TO BUF HDR MOV #IOLIST,-(SP) ;TTY OUTPUT REQUEST EMT TTYOUT TST IOERR ;ERROR? BNE . ;YES ; ; GET NAME FROM TTY KBD ; MOV #NAMBFH,BUFADR ;GET S JSR 5,O.SVTT ;SAVE TTY STATUS JSR 0,O.SVR  ;SAVE REGISTERS (MAINLY SP) MOV #O.UR0,SP ;SET UP STACK MOV #O.ID,R4 ;TYPE ID MOV #O.IDND,R3 JSR 5,O.TYPE MOVB #1,ODINIT ;SET ODT INITIALIZED FLAG BR O.RST1 O.RST: JSR 0,O.SVR  ;SAVE REGISTERS JSR 5,O.REM  ;REMOVE ALL BREAKPOINTS JSR 5,O.CLRR ; CLEAR RELOCATION REGISTERS MOVB O.PRI,R4 ;GET ODT PRIORITY RORB R4  ;SHIFT RORB R4  ; INTO RORB R4  ; POSITION MOVB R4,ST   ;TTY INPUT REQUESTS LPRNTR = 21. ;LP PRINT REQUESTS ; ; EXTERNAL REFERENCES FOR TASK RELOCATION REG, C REG AND ; LOGICAL TTY DEVICE ; .REF $R0,$R1,$R2,$R3,$R4,$R5,$R6,$R7,$C,$TTY ; ; EXTERNAL DEFINITIONS ; .DEF DEBUG ; ; INITIALIZE DEBUG ; DEBUG: JSR 0,O.SVR ;SAVE REGISTERS (MAINLY SP) MOV #O.UR0,SP ;SET UP STACK MOV #O.BRK,-(SP) ; PROVIDE BPT/T-TRAP ENTR8w %.,=w D w < w 4w .<ww   7s.bmw w .%/w \  .  L eD  !RB ) D$R].!R=L !64D4 V  }RD V( .!4Dh4 V %. w  DhV. F  @w @ % %.F w  ww  IMPUT BUF ADDR TO HDR MOV #50.,NAMBFH ;ACCEPT UP TO 50 CHARS TST020: MOV #IOLIST,-(SP) ;GET NAME FROM TTY EMT TTYIN TST IOERR ;ERROR? BEQ TST030 ;NO CMP IOERR,#28. ;YES, TIMEOUT? BEQ TST020 ;YES, TRY AGAIN BR . ;NO ; ; PRINT NAME ON LP ; TST030: MOVB #LP,DEVICE ;LP LOG. DEV. NO. TO I/O LIST MOV NAMBFH+2,NAMBFH ;GET NO. ;STORE IN STATUS O.RST1: CLRB O.S  ;DISABLE SINGLE INSTRUCTION FOR NOW MOVB #-1,O.P  ;DISALLOW PROCEED MOV #O.STM,O.TVEC+2 ;STATUS WORD TO TRT VECTOR+2 MOV #ROSODT,O.TVEC ;PC TO TRT VECTOR ; THIS NEXT INSTRUCTION RAISES THE "Z" FLAG BECAUSE ; ITS PURPOSE IN LIFE IS TO BEHAVE DIFFERENTLY ON THE /20 ; AND THE /45 SO WE CAN CHANGE THE RTI WHICH ALSO ; BEHAVES DIFFERENTLY ON THE /20 AND /45 BUT DOESNT RAISE ; THE Z FLAG. CONFUSED? WELL SO ARE WE. CMP PC,#.+4  Y POINT TO ROS EMT $TDBUG MOV (SP)+,R3 ; GET TASK NO. MOV #O.IDT,R2 ; ASCII TASK NO TO ID MSG JSR PC,BIN2O3 MOV #3,R0 O.TSKN: MOVB O.IDT-1(R0),O.CRN-1(R0) ;ASCII TASK NO. TO PROMPTER MSG SOB R0,O.TSKN MOV #O.RELT,R2 TST #$R0 ; SET RELOCATION REGISTERS AS SPECIFIED BEQ O.RR1 ; BY TASK MOV #$R0,(R2) O.RR1: TST #$R1 BEQ.lD  &C@AEPA&fS.w w /w w dw .  ` E `t. ue  ] w .w 7DU9Ew v7f .*X!7E &.P w pVw  V&P.vZ׭U1 .7w DpŝhŝY.dEwOF CHARS IN NAME TO PRINT MOV #IOLIST,-(SP) ;PRINT NAME EMT LPRNTR ; TST IOERR ; BNE . ; EMT EXIT ;EXIT .PAGE ; ; DATA ; .BOUND IOLIST: .WORD 1 ;THREAD DEVICE: .BYTE 0,2 ;LOG. UNIT, EXIT TYPE .WORD 0 ; .BYTE 0,0 ;ERROR TASK, PRIORITY IOERR: .WORD 0,0 ;ERROR PARAME;CHECK WHETHER ON /45 OR /20 BEQ O.20  ;EQ MEANS 20, NE MEANS 45 MOV #RTT,O.RTIT ;RESET TO RTT IF ON 45 O.20: JMP O.RALL ;CLEAR BRK PT TABLES ; ;O.CTLC ; ^C PROCESSING. SIMULATE A TTY INTERRUPT ; ; O.CTLC: TSTB DOSRTN ;IS RETURN TO DOS ALLOWED? BNE O.ELF1 ;NO MOV O.USP,SP ;RESTORE CURRENT STACK CLR -(SP)  ;DUMMY STATUS JSR PC,O.CTL1 ;PUSH RETURN ADDR OF INTERR ON STACK BR .  ;MONITOR WILL RETURN TO THIS WAIT O O.RR2 MOV #$R1,2(R2) O.RR2: TST #$R2 BEQ O.RR3 MOV #$R2,4(R2) O.RR3: TST #$R3 BEQ O.RR4 MOV #$R3,6(R2) O.RR4: TST #$R4 BEQ O.RR5 MOV #$R4,8.(R2) O.RR5: TST #$R5 BEQ O.RR6 MOV #$R5,10.(R2) O.RR6: TST #$R6 BEQ O.RR7 MOV #$R6,12.(R2) O.RR7: TST #$R7 BEQ O.CREG MOV #$R7,14.(R2) O.CREG: TST # Jw w>U .t!D w w Jj k w @eDj  k s.%ĕtD75 VVw DV"V.4Bw .e` w ;w ĝm.ZDw w"f&fD"e. 4DU (D.hD pt7p7th Dpt"p&t.tw rt5ppjpttpp&p/.et!TER BUFADR: .WORD 0,0,0 ;BUFFER ADDRESS ; ; MESSAGE TO OPERATOR BUFFER ; MESG1H: .WORD 0 .WORD 0 MESG1: .ASCII /THIS IS TSTBUG O2/ .BYTE 015 .ASCII /TYPE YOUR NAME AND IT WILL BE PRINTED ON THE LP!/ .BYTE 015 MESG1E: .EVEN ; ; OPERATOR NAME INPUT BUFFER AND LP BUFFER ; NAMBFH: .WORD 0,0 NAMBFD: .BLKB 50. ; ; DEBUG INITIAL REGISTER ASSIGNMENTS ; $R0 = A $R1 = TSTBU".CTL1: MOV 62,-(SP) ;PUSH MONITOR STATUS MOV 60,-(SP) ;PUSH ADDR OF MONITOR ^C ROUTINE MOVB #100,O.RCSR ;ENABLE KYBD INTERRUPT RTI ; O.ALF REXP;NA TYPE N CHARACTERS STARTING AT REXP; ; THEN-- ; ACCEPT A STRING OF ASCII TEXT. STORE IT IN ; SUCCESIVE BYTES STARTING AT THE INDICATED ; LOCATION. TEXT TERMINATED BY COUNT, N. ; OR CR OR LF. ODT PRINTS THE ADDR OF ; THE NEXT AVAILABLE LOCATION IN CORE ; O.ALF: TST R3  ;WAS REXP TYPED? BEQ O.ELF1  ;BR IF NOT TSTB O.SM#$C ; SET CONSTANT REGISTER AS SPECIFIED BY TASK BEQ O.TTYD MOV #$C,O.CNST O.TTYD: TST #$TTY ; SET TTY LOG. DEV. NO. AS SPECIFIED BY TASK BEQ O.ODID MOVB #$TTY,TTY O.ODID: MOV #O.ID,R4 ;TYPE ID MOV #O.IDND,R3 JSR 5,O.TYPE O.RST1: CLRB O.S  ;DISABLE SINGLE INSTRUCTION FOR NOW CLRB O.TRC ;DISALLOW TRACE MOVB #-1,O.P  ;DISALLOW PROCEED JMP O.RALL ;CLEAR BRK PT T$Y  <hD !thD. %& &e N @ e05.> w &  4 4.d t7vprE tvpr.  w   w . ׭r ^w Uw wV r"6. nj  7,4XR4-j4&4C. P Dw@ 78 %(x." !  %??G $R2 = IOLIST $C = TSTBUG $TTY = 0 .END TSTBUG &FD ;WAS ; TYPED? BEQ O.ELF1 ;BR IF NOT, ERROR TST R2  ;IF N NOT TYPED, ASSUME 1 BNE O.ELF4 INC R4 O.ELF4: MOV R4,-(SP) ;SAVE COUNT ;SET UP TO TYPE N CHAR. MOV R5,R4  ;ADDR OF 1ST BYTE IN R4 MOV R5,R3  ;ADDR OF 1ST BYTE IN R3 ADD (SP),R3  ;ADD N TO R3 DEC R3 ;SUB. 1 TO GET LAST ADDR MOV R3,O.XXX ;SAVE LAST ADDR. JSR 5,O.TYPE ;TYPE THE CHARACTERS JSR 5,O.CRLF ;TYPE CR/LF MOV (SP)+,R4 ;RECALL N TO R4 ;NOW ACCEPT INPUT STRING INCB O.SC'ABLES ; ; O.ALF REXP;NA TYPE N CHARACTERS STARTING AT REXP; ; THEN-- ; ACCEPT A STRING OF ASCII TEXT. STORE IT IN ; SUCCESIVE BYTES STARTING AT THE INDICATED ; LOCATION. TEXT TERMINATED BY COUNT, N. ; OR CR OR LF. ODT PRINTS THE ADDR OF ; THE NEXT AVAILABLE LOCATION IN CORE ; O.ALF: TST R3  ;WAS REXP TYPED? BEQ O.ELF1  ;BR IF NOT TSTB O.SMFD ;WAS ; TYPED? BEQ O.ELF1 ;BR IF NOT, ERROR TST R2  ;IF N NOT TYPED, ASSUME 1 BNE O.ELF4 INC R4 O.ELF4: MOV R4,-((.H u v t w N%w u  v t D.n 77w Z e0w ,w x. w p.  Cå å$ נA .  e` 7. @   Ëנe eeL @ #, e ѐ  @(J H )H ROSODT j t j BE p n.p *;/\ $G._<^,OWEBP@>SRC-FI!XASPM5 CFR); UPDATE ROSBPT.S03 5/25/73 ; UPDATE ROSBPT.S02 5/16/73 ; UPDATE ROSBPT.S01 5/11/73 .TITLE ROSBPT ;*********************************************************************** ; * ; R O S B P T * ; * ; PROGRAM IDENTIFICATION: ROSBPT *RN ;ALLOW SPACES VIA O.GET JSR 5,O.GET  ;LOOK AT FIRST CH. CMPB R0,#015  ;IS IT A CARR.RET? BEQ O.ELF5  ;IF YES, RETURN TO COMM. DEC. CMPB R0,#012  ;CHK FOR LF BNE O.ELF7  ;IF NOT, ACCEPT N CHARACTERS CLRB O.SCRN ;MAKE SPACES INVISIABLE TO O.GET MOV  O.XXX,R4 ;IF LINE FEED, OPEN NEXT AVAILABLE CH. INC R4 INC R2 MOV R4,R0  ;PRINT NEXT AVAIL BYTE MOV R2,-(SP) ;SAVE TO AVOID CLOBBERRING MOV R4,-(SP) ;BY O.RORA JSR 5,O.RORA MOV (SP)+,R4 +SP) ;SAVE COUNT ;SET UP TO TYPE N CHAR. MOV R5,R4  ;ADDR OF 1ST BYTE IN R4 MOV R5,R3  ;ADDR OF 1ST BYTE IN R3 ADD (SP),R3  ;ADD N TO R3 DEC R3 ;SUB. 1 TO GET LAST ADDR MOV R3,O.XXX ;SAVE LAST ADDR. JSR 5,O.TYPE ;TYPE THE CHARACTERS JSR 5,O.CRLF ;TYPE CR/LF MOV (SP)+,R4 ;RECALL N TO R4 ;NOW ACCEPT INPUT STRING INCB O.SCRN ;ALLOW SPACES VIA O.GET JSR 5,O.GET  ;LOOK AT FIRST CH. CMPB R0,#015  ;IS IT A CARR.RET? BEQ O.ELF5  ;IF YES, RETURNB)  :  @ .<- * ; * ; PURPOSE: THIS MODULE IS DESIGNED TO SUPPORT ROS TASK DEBUG * ; PACKAGE. THIS REQUIRES TWO SERVICES. * ; 1) AN EMT, CALLED BY A TASK'S DEBUG INITIALIZATION, * ; TO DECLARE THE LOCATION OF THE TASK BPT ENTRY POINT* ; 2) A BPT TRAP HANDLER TO DECIDE WHEITHER ROSODT OR * ; TASK DEBUG IS BEING REQUESTED BY THE. MOV (SP)+,R2 MOVB #'\,R0  ;PRINT BACK SLASH JSR 5,O.FTYP JMP O.BYT O.ELF3: JSR 5,O.GET ;GET NXT CH. O.ELF7: JSR 5,O.CU  ;CHK FOR ^U MOVB R0,(R5)+ DEC R4  ;REDUCE COUNT. IS IT ZERO? BEQ O.ELF2  ;BR IF YES BR O.ELF3 O.ELF2: MOV R5,-(SP) ;PRINT NXT AVAIL LOC: JSR 5,O.CRLF ;CR,LF MOVB #2,O.BW  ;FORCE WORD MODE MOV (SP)+,R0 ;THEN, ADDRESS JSR 5,O.RORA  ; O.ELF5: CLRB O.SCRN  ;MAKE SPACE INVISABLE TO O.GET JMP O.DCD  ;RETURN TO / TO COMM. DEC. CMPB R0,#012  ;CHK FOR LF BNE O.ELF7  ;IF NOT, ACCEPT N CHARACTERS CLRB O.SCRN ;MAKE SPACES INVISIABLE TO O.GET MOV  O.XXX,R4 ;IF LINE FEED, OPEN NEXT AVAILABLE CH. INC R4 INC R2 MOV R4,R0  ;PRINT NEXT AVAIL BYTE MOV R2,-(SP) ;SAVE TO AVOID CLOBBERRING MOV R4,-(SP) ;BY O.RORA JSR 5,O.RORA MOV (SP)+,R4 MOV (SP)+,R2 MOVB #'\,R0  ;PRINT BACK SLASH JSR 5,O.FTYP JMP O.BYT O.ELF3: JSR 5,O.GET ;GET NXT CH. O.ELF7: MOV0.X8@@@U.@@@@@.@@@(XXh~(~~h.~7 B= H 0 ~U B " $ .8    f.8$,   !* "%,  $ * 81 'BPT' JUST * ; EXECUTED. * ; * ; USAGE: THE LINKAGE TO THE EMT IS AS FOLLOWS * ; CALL * ; MOV #ADD,-CSP) ; ADD OF DEBUG 'BPT' ENTRY PT * ; EMT ROSBPT * ; 2COMMAND DECODER O.ELF1: JMP O.ERR ; ; SPECIAL NAME HANDLER ; DEPENDS UPON THE EXPLICIT ORDER OF THE TWO TABLES O.TL AND O.UR0 O.REGT: JSR 5,O.GET  ;SPECIAL NAME, GET ONE MORE CHARACTER MOV #O.TL,R4 ;TABLE START ADDRESS O.RSP: CMPB R0,(R4)+ ;IS THIS THE CORRECT CHARACTER? BEQ O.SP  ;JUMP IF YES CMP #O.TL+O.LG,R4 ;IS THE SEARCH DONE? BHI O.RSP  ;BRANCH IF NOT BIC #177770,R0 ;MASK OFF OCTAL MOV R0,R4 O.SP1: ASL R4 ADD #O.UR0,R4 ;GENERATE ADDRESS 3B R0,(R5)+ DEC R4  ;REDUCE COUNT. IS IT ZERO? BEQ O.ELF2  ;BR IF YES BR O.ELF3 O.ELF2: MOV R5,-(SP) ;PRINT NXT AVAIL LOC: JSR 5,O.CRLF ;CR,LF MOVB #2,O.BW  ;FORCE WORD MODE MOV (SP)+,R0 ;THEN, ADDRESS JSR 5,O.RORA  ; O.ELF5: CLRB O.SCRN  ;MAKE SPACE INVISABLE TO O.GET JMP O.DCD  ;RETURN TO COMMAND DECODER O.ELF1: JMP O.ERR ; ; SPECIAL NAME HANDLER ; DEPENDS UPON THE EXPLICIT ORDER OF THE TWO TABLES O.TL AND O.UR0 O.REGT: JSR 5,O.GET 4"8.6  " w V 7 7 w@ @ " _.8 B ?  &DCc  w " w %.^  w  % 7  .&w \w wlw  f^.w \ J w Z 7Y w~wrw v  b & . % E e w~    . =w    w   w t  .w   w w   7 w  7 w .B7 7    w7 5 * ; RETURN * ; MOV (SP)+,TASKNO ; TASK # OF CALLER. 0 IF ERROR * ; * ; THE LINKAGE TO BPT TRAP HANDLER IS VIA A JSR DURING IPL.* ; * ; JSR PC,BPTIPL * ; ALL OTHER LINKAGE IS VIA 6INC R2  ;SET FOUND FLAG JMP O.SCAN  ;GO FIND NEXT CHARACTER O.SP: SUB #O.TL-7,R4 ;GO FIND NEXT CHARACTER BR O.SP1 ;RETYPE OPENED WORD IN ANSCII (CONVERTED FROM MOD40) O.MOD: MOV O.CAD,R0 ;CALL MOD40 UNPACK MOV #O.ALF1,R1 JSR PC,UNPA00 ;ASCII CHARS GO INTO O.ALF1,2,3 MOV #'=,R0 ;PRINT "=" JSR R5,O.FTYP INCB O.SCRN  ;SET FLAG TO ALLOW SPACES MOVB O.ALF1,R0 ;PRINT 1ST CHAR JSR R5,O.FTYP MOVB O.ALF2,R0 ;PRINT 2ND CH JSR R5,O.FTYP MOVB O.ALF37 ;SPECIAL NAME, GET ONE MORE CHARACTER MOV #O.TL,R4 ;TABLE START ADDRESS O.RSP: CMPB R0,(R4)+ ;IS THIS THE CORRECT CHARACTER? BEQ O.SP  ;JUMP IF YES CMP #O.TL+O.LG,R4 ;IS THE SEARCH DONE? BHI O.RSP  ;BRANCH IF NOT BIC #177770,R0 ;MASK OFF OCTAL MOV R0,R4 O.SP1: ASL R4 ADD #O.UR0,R4 ;GENERATE ADDRESS INC R2  ;SET FOUND FLAG JMP O.SCAN  ;GO FIND NEXT CHARACTER O.SP: SUB #O.TL-7,R4 ;GO FIND NEXT CHARACTER BR O.SP1 ;RETYPE OPENED WORD IN ANSCII H   .h ww (b  ww w .A B` D %Z V w.]  7L w|B wr@ E. 8wR78 wt  E 88a. t8P 8Iw -  88Y.&% w Z =w   7T.Ll 8=w Z e0w ,w %  8.r @w Lq k=H.b w @w &ww w=w d5. w GA 'BPT' INSTRUCTION. * ; * ; METHOD: THE EMT INSURES THE CALL IS LEGAL AND, IF SO, SAVES * ; THE PASSED, TASK VIRTUAL ADDRESS. THE TASK NUMBER IS * ; RETURNED. IF THE CALL IS ILLEGAL THE RETURNED TASK * ; NUMBER IS ZERO. * ; THE IPL ENTRY SETS UP THE BPT TRAP. THEREAFTER, ANY * ; BPT TRAPS WILL FE,R0 ;PRINT 3RD CH JSR R5,O.FTYP MOV #' ,R0 ;PRINT SPACE JSR R5,O.FTYP JSR R5,O.GET ;USER MUST NOW TYPE: CMPB R0,#' ;IF CHAR IS LESS THAN SPACE, BLT O.MOD1 ;PREPARE TO ENTER COMMAND DECODER MOVB R0,O.ALF1 ;OTHERWISE READ 3 CHAR JSR R5,O.GET ;2ND CH MOVB R0,O.ALF2 JSR R5,O.GET ;3RD CHAR CLRB O.SCRN  ;RESTORE O.GET TO NORMAL MOVB R0,O.ALF3 MOV #O.XXX,R0 ;TELL MOD40 TPACK TO PACK MOV #O.ALF1,R1 ;INTO O.XXX JSR PC,PACK00 MOV O.XXX,R4 F(CONVERTED FROM MOD40) O.MOD: MOV O.CAD,R0 ;CALL MOD40 UNPACK MOV #O.ALF1,R1 JSR PC,UNPA00 ;ASCII CHARS GO INTO O.ALF1,2,3 MOV #'=,R0 ;PRINT "=" JSR R5,O.FTYP INCB O.SCRN  ;SET FLAG TO ALLOW SPACES MOVB O.ALF1,R0 ;PRINT 1ST CHAR JSR R5,O.FTYP MOVB O.ALF2,R0 ;PRINT 2ND CH JSR R5,O.FTYP MOVB O.ALF3,R0 ;PRINT 3RD CH JSR R5,O.FTYP MOV #' ,R0 ;PRINT SPACE JSR R5,O.FTYP JSR R5,O.GET ;USER MUST NOW TYPE: CMPB R0,#' ;IF CHAR IS LESS THAN S""""DDDDDDD """"""""""""""""""""""""""""""""""@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ""ADD)B C {\  !rt^{\ SU ^\ rt^^\ w (X{\  dr{\ %wX^\ , dr^\ ]hlrt^{\ LpK$DwwwwwwwwwwwwwwwwwwwwwwwwwwwwUUUUUUUUEa ͋,L  B8w&B ` % & }&*C$$Βe E%>k  aʋaՀ$ & * P$ ΋Ί   ΋   d Ί  ( 1'u  Q$f $5@ U C΋ Cb M΋U@ U &  B" .&0 M &0 & M 0 &I;MAKE IT APPEAR AS IF THE MOV #1,R2 ;PACKED # WAS TYPED JMP O.SCAN ;LET COMMAND DECODER DO THE REST O.MOD1: CLRB O.SCRN CLR R4 ;MAKE IT APPEAR CLR R2 ;AS IF NO NUMBERS WERE TYPED IN O.MOD2: JMP O.SCN1 ;TYPED IN ; "BACKARROW" HANDLER - OPEN INDEXED ON THE PC (BACK ARROW) O.ORPC: JSR 5,O.TCLS ;TEST WORD MODE AND CLOSE ADD @R2,R2  ;COMPUTE INC R2 INC R2  ; NEW ADDRESS O.PCS: MOV R2,O.CAD ;UPDATE CAD JMP O.OP2A  ;GO FJPACE, BLT O.MOD1 ;PREPARE TO ENTER COMMAND DECODER MOVB R0,O.ALF1 ;OTHERWISE READ 3 CHAR JSR R5,O.GET ;2ND CH MOVB R0,O.ALF2 JSR R5,O.GET ;3RD CHAR CLRB O.SCRN  ;RESTORE O.GET TO NORMAL MOVB R0,O.ALF3 MOV #O.XXX,R0 ;TELL MOD40 TPACK TO PACK MOV #O.ALF1,R1 ;INTO O.XXX JSR PC,PACK00 MOV O.XXX,R4 ;MAKE IT APPEAR AS IF THE MOV #1,R2 ;PACKED # WAS TYPED JMP O.SCAN ;LET COMMAND DECODER DO THE REST O.MOD1: CLRB O.SCRN CLR R4 ;MAKE IT APPEAR KIRST COME TO IT. IF THEY ARE FROM * ; A TASK, CONTRO GOES TO THE TASK'S DEBUG. OTHERWISE * ; CONTROL GOES TO ROSODT. * ; TASK REQUESTING DEBUG WHICH DO NOT HAVE IT (BIT 6 OF * ; ACESS CODE) WILL GENERATE A 'BAD ENTRY' IN ROSODT. * ; ROSODT REQUESTS WHEN ODT (OR OTHER ROS BPT HANDLER) IS * ; NOT PRESENT WILL CAUSE AN ERROR MESSAGE AND THEN HALT * ; THE SYSTL 0 w Ge0w D,w .<   w  3 7. 8  w  8.0?w  w 7 w 77.V7\ 7    w %0 %7E=.| `  1  W І  $  .lm 7 y\lnh.\ "$l&n(hQ6~NG.6  ~Nt.0:7MINISH UP O.ORAB: JSR 5,O.TCLS  ;TEST WORD MODE AND CLOSE MOV @R2,R2  ;GET ABSOLUTE ADDRESS BR O.PCS O.ORRB: JSR 5,O.TCLS ;TEST AND CLOSE MOV @R2,R1  ;COMPUTE NEW ADDRESS MOVB R1,R1  ;EXTEND THE SIGN ASL R1  ;R2=2(@R2) INC R1  ; +2 INC R1 ADD R1,R2  ; +PC BR O.PCS O.TCLS: JSR PC,O.CLSE ;CLOSE CURRENT CELL CMP #2,O.BW  ;ONLY WORD MODE ALLOWED BNE O.TCL1  ;BRANCH IF ERROR MOV O.CAD,R2 ;CURRENT ADDRESS IN R2 RTS R5 O.TCL1:N CLR R2 ;AS IF NO NUMBERS WERE TYPED IN O.MOD2: JMP O.SCN1 ;TYPED IN ; "BACKARROW" HANDLER - OPEN INDEXED ON THE PC (BACK ARROW) O.ORPC: JSR 5,O.TCLS ;TEST WORD MODE AND CLOSE ADD @R2,R2  ;COMPUTE INC R2 INC R2  ; NEW ADDRESS O.PCS: MOV R2,O.CAD ;UPDATE CAD JMP O.OP2A  ;GO FINISH UP O.ORAB: JSR 5,O.TCLS  ;TEST WORD MODE AND CLOSE MOV @R2,R2  ;GET ABSOLUTE ADDRESS BR O.PCS O.ORRB: JSR 5,O.TCLS ;TEST AND CLOSE MOV OEM. * ; * ; PROGRAMMER: 53 * ; DATE: 10 MAY 1973 * ; CATALOGUE NUMBER: * ; REVISION: * ; * ;***************PW.  0:X.D  77% .(w %=w w -.N w w ww  .tl ~7mttppw td.^\w lR%/w h\. 8 ..V  L ed Vr.H  !VB !V=L !HVV. 64H4 Z V!4Hl4 ZH ZVH$l(Z1Q TST (SP)+ O.TCL2: JMP O.ERR  ;POP A WORD AND SHOW THE ERROR ; PROCESS S - SINGLE INSTRUCTION MODE O.SNGL: TSTB O.SMFD ;DONT REACT IF ; NOT TYPED BEQ O.TCL2 TST R2  ;SEE IF TURN ON OR TURN OFF BNE O.SI1  ;BRANCH IF TURNING IT ON CLRB O.S  ;CLEAR THE FLAG JMP O.DCD  ;CONTINUE THE SCAN O.SI1: MOVB #-1,O.S  ;SET THE FLAG O.SI2: JMP O.DCD ;COMMA PROCESSING. N IN R4 IS THE RELOCATION REGISTER NUMBER ; O.COMM: INCBR@R2,R1  ;COMPUTE NEW ADDRESS MOVB R1,R1  ;EXTEND THE SIGN ASL R1  ;R2=2(@R2) INC R1  ; +2 INC R1 ADD R1,R2  ; +PC BR O.PCS O.TCLS: JSR PC,O.CLSE ;CLOSE CURRENT CELL CMP #2,O.BW  ;ONLY WORD MODE ALLOWED BNE O.TCL1  ;BRANCH IF ERROR MOV O.CAD,R2 ;CURRENT ADDRESS IN R2 RTS R5 O.TCL1: TST (SP)+ O.TCL2: JMP O.ERR  ;POP A WORD AND SHOW THE ERROR ; PROCESS S - SINGLE INSTRUCTION MODE O.SNGL: TSTB O.SMFD ;DONT REACT IF ; NOT TYPED S******************************************************** .DEF ROSBPT,BPTIPL,BPTENT ; .REF $ACESS,ACTIVE,DBGENT,$CTASK,ODTIPL,ROSODT,ROSEND .IIF NZ $KT11C .REF PPASV5,TSK.PC .PAGE ; ; ; EQUATES DEBUG = 32.*$KT11C+30 ; DEBUG ENTRY IN TASK HEADER DBGACS = 100 ; TASK ACESS CODE FOR DEBUG PRESENT CUSER = 140000 ; PSR CURRENT MODE = USER PUSER = 030000 ; PSR PREVIOUS MODE T.2 % w   @w t-.X@ % % w Z ww.~  pD  .&C@AEPA&fw Lw P/w .Vw   ` E. `    . ww 7UE.<w T76  .bpZw ׭U5 Z.w`@j5!.< ,U O.CMFD ;SET "COMMA FOUND" SWITCH TO ON TST R2  ;WAS A NUMBER TYPED IN? BEQ O.COM1  ;NO,USE CURRENT BIAS; I.E.,EXIT BIC #177770,R4 ;MAKE SURE THAT N IS LESS THAN 10(8) ASL R4  ;YES, LOCATE RELOC. REGISTER MOV O.RELT(R4),O.BIAS ;PUT BIAS IN O.BIAS O.COM1: JMP O.DCD1  ;GO BACK TO DECODER ;R PROCESSING. SEVERAL POSSIBILITIES- ; A. ;R WAS TYPED. ZERO OUT ALL RELOCATION REGISTERS ; B. ;NR WAS TYPED. ZERO OUT $NR ; C. REXP;NR WAS TYPED. SET $NR TO REXP ; D. V BEQ O.TCL2 TST R2  ;SEE IF TURN ON OR TURN OFF BNE O.SI1  ;BRANCH IF TURNING IT ON CLRB O.S  ;CLEAR THE FLAG JMP O.DCD  ;CONTINUE THE SCAN O.SI1: MOVB #-1,O.S  ;SET THE FLAG O.SI2: JMP O.DCD ;COMMA PROCESSING. N IN R4 IS THE RELOCATION REGISTER NUMBER ; O.COMM: INCB O.CMFD ;SET "COMMA FOUND" SWITCH TO ON TST R2  ;WAS A NUMBER TYPED IN? BEQ O.COM1  ;NO,USE CURRENT BIAS; I.E.,EXIT BIC #177770,R4 ;MAKE SURE THAT N IS LESS THANW= USER TBIT = 20 ; PSR "T" BIT ; TPB = 177566 ; ADD. OF TTY BUFFER REG. TPS = 177564 ; ADD. OF TTY STATUS REG. DSPREG = 177570 ;DISPLAY REGISTER ; ; EMT HANDLER ; ROSBPT: MOV R1,-(SP) ; SAVE R1 .IF NZ $KT11C MOV $KPAR5,-(SP) ; IF HAVE KT11C, SAVE KPAR 5 .ENDC ; CMP 2+2*$KT11C(SP),#TSK.PC ; CALLED BY A TASK? BNE ROSB00 X *e E Wp.B` e!ED !݃.wBw0= -7. H<"ws.F7ww J ŝ.lw@ w .t!H w d  w @e H  .j$ĕtH7G ZwZBw HZ"Z.B+e` w 4;w ,ĝH (H. w w4  eY NR WAS TYPED, WHILE A WORD WAS OPENED- ;  COMPUTE (O.CAD)-($NR) AND PRINT IT ; O.REL: TSTB O.SMFD  ;TEST IF A SEMICOLON WAS TYPED BEQ O.REL1  ;NO CASE D TST R2  ;NOTHING OPENED, WAS N TYPED? BEQ O.REL2  ;N NOT TYPED O.REL4: BIC #177770,R4 ;GUARANTEE THAT N<10 ASL R4  ;N TYPED, CASE B OR C. SET $NR. TST R3  ;IF REXP NOT TYPED,CLEAR TO -1 BEQ O.RELA MOV R5,O.RELT(R4) ;IF REXP NOT TYPED, R5=0. CASE B. O.REL5: BR O.H1  ;EXIT TO DECODER O.REL2: TST Z 10(8) ASL R4  ;YES, LOCATE RELOC. REGISTER TST O.RELT(R4) ;HAS RELOC REG BEEN SET? BPL O.COM0 ;YES JMP O.ERR ;NO, ERROR O.COM0: MOV O.RELT(R4),O.BIAS ;PUT BIAS IN O.BIAS O.COM1: JMP O.DCD1  ;GO BACK TO DECODER ;R PROCESSING. SEVERAL POSSIBILITIES- ; A. ;R WAS TYPED. ZERO OUT ALL RELOCATION REGISTERS ; B. ;NR WAS TYPED. ZERO OUT $NR ; C. REXP;NR WAS TYPED. SET $NR TO REXP ; D. NR WAS TYPED, WHILE A WORD WAS[ ; NO BITB #DBGACS,$ACESS ; DEBUG IN THIS TASK? BEQ ROSB00 ; NO .IF Z $KT11C ; MOV ACTIVE,R1 ; GET ADDRESS OF TASK HEADER .IFF ; MOV ACTIVE,-(SP) ; JSR PC,PPASV5 ; MOV (SP)+,R1 ; .ENDC ; MOV 4+2*$KT11C(SP),DEBUG(R1); SET ADD. OF ENTRY IN HEADER MOV 4+2*$KT11C(SP),DBGENT ; SET ADD. IN \ w.* ҕKҕSҕU~  we0].P  w we0  we0 ).v  we0~  .e!"&"u. T P -^rTwhwwx=. `0 E ~R (Rh. ׭) ׭N< Fs  .   e. D $   $$ .4  p   k  p & .Z "f&]R3  ;IF REXP TYPED, CASE B OR C WITH N=0 BEQ O.REL3  ;REXP NOT TYPED, N NOT TYPED, CLEAR ALL. BR O.REL4  ;REXP TYPED- N NOT TYPED O.RELA: MOV #-1,O.RELT(R4) BR O.H1 ;CLEAR RELOCATION REGISTERS. O.REL3: JSR 5,O.CLRR ;CLEAR RELOC REG'S BR O.SI2  ;GO BACK TO SCAN O.REL1: CMP O.BW,#2  ;CASE D, PRINT @O.CAD IN RELATIVE FORM BNE O.TCL2  ;ERROR IF BYTE OPENED CMP #0,R2  ; CHECK IF R BNE O.REL6  ; IF R JSR R5,O.LOC  ; THEN FIND BEST N CMP R0,#^ OPENED- ;  COMPUTE (O.CAD)-($NR) AND PRINT IT ; O.REL: TSTB O.SMFD  ;TEST IF A SEMICOLON WAS TYPED BEQ O.REL1  ;NO CASE D TST R2  ;NOTHING OPENED, WAS N TYPED? BEQ O.REL2  ;N NOT TYPED O.REL4: BIC #177770,R4 ;GUARANTEE THAT N<10 ASL R4  ;N TYPED, CASE B OR C. SET $NR. TST R3  ;IF REXP NOT TYPED,CLEAR TO -1 BEQ O.RELA MOV R5,O.RELT(R4) ;IF REXP NOT TYPED, R5=0. CASE B. O.REL5: BR O.H1  ;EXIT TO DECODER O.REL2: TST R3  ;IF REXP TYPED, CASE B O_SLOT TO SAVE MOV $CTASK,4+2*$KT11C(SP) ; SET TASK # UP FOR RETURN ROSA00: .IF NZ $KT11C ; MOV (SP)+,$KPAR5 ; RESTORE KPAR 5 IF KT11C IN USE .ENDC ; MOV (SP)+,R1 ; RESTORE R1 RTS PC ; RETURN TO CALLER ROSB00: CLR 4+2*$KT11C(SP) ; SET ERROR CODE BR ROSA00 ; GO RETURN .PAGE .CSECT .BPTPL ; THIS CODE IS PART OD IPL. ; ; BPT IPL ENTR`f  ". r4HlH H l&H. \ W  <lH !lH. %$ &e N @ ". e0w &  8F 8.  ,7 ;  .>      .d    އw . rn  7,8\V8-8&8;. a-1 ;WAS A RELOC REG FOUND? BNE O.REL8 ;BR IF YES. ELSE-- MOV #'=,R0 ;TYPE "=" JSR 5,O.FTYP MOV @O.CAD,R0 ;TYPE ABS. VAL OF CONTENTS BR O.REL9  ;OF OPENED LOC. O.REL8: MOV R0,R4  ; PUT NEW N INTO R4 O.REL6: MOV @O.CAD,R1 ;OPENED VALUE IS THE MINUEND MOV R4,O.TMP1 ; SAVE N ASL R4  ;GET BIAS FROM $NR SUB O.RELT(R4),R1 ;BIAS IS THE SUBTRAHEND MOV #'=,R0  ;TYPE "=" JSR 5,O.FTYP MOV O.TMP1,R0 ; PREPARE INPUTE FOR O.FTYP ADD #60,R0  ; CONVEbR C WITH N=0 BEQ O.REL3  ;REXP NOT TYPED, N NOT TYPED, CLEAR ALL. BR O.REL4  ;REXP TYPED- N NOT TYPED O.RELA: MOV #-1,O.RELT(R4) BR O.H1 ;CLEAR RELOCATION REGISTERS. O.REL3: JSR 5,O.CLRR ;CLEAR RELOC REG'S BR O.SI2  ;GO BACK TO SCAN O.REL1: CMP O.BW,#2  ;CASE D, PRINT @O.CAD IN RELATIVE FORM BNE O.TCL2  ;ERROR IF BYTE OPENED CMP #0,R2  ; CHECK IF R BNE O.REL6  ; IF R JSR R5,O.LOC  ; THEN FIND BEST N CMP R0,#-1 ;WAS A RELOC REG FOUND? cY ; BPTIPL: MOV #ODTIPL,R0 ; GET ADDRESS OF ODT IPL ENTRY BEQ BPTI10 ; ODT NOT IN SYSTEM JSR PC,(R0) ; GO TO ROSODT TO SETUP AT FIRST BPTI10: MOV #BPTENT,@#14 ; SETUP"BPT" TRANSFER VECTOR AT MOV #340,@#16 ; LEVEL 7. CLR DBGENT ; CLEAR ADD. OF TASK'S DEBUG 'BPT' ENTRY RTS PC ; DONE WITH SET UP. .CSECT ; BACK TO UNAMED CSECT .PAGE dT HwD 7< %,. !  %? ?M.   w v w %w ,  B." 77w V e0w ,w d.H w rXTN6.n H Cå å$ נA .   e` .    Ëנe e  ' e e ѐ  @([  + DEBUG # $ eRT N TO ANSCII JSR 5,O.FTYP ; TYPE N MOV #',,R0  ;PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA CMP #0,R2  ; CHECK IF R BNE O.REL7  ; IF R MOV O.XXY,R0 ; THEN PREPARE INPUT FOR O.CADV O.REL7: MOV R1,R0  ;TYPE THE VALUE (@O.CAD)-($NR) O.REL9: JSR 5,O.CADV BR O.DCD1 ; ;C PROCESSING. ; A. REXP;C WAS TYPED- PRINT THE VALUE OF REXP AND STORE IN $C ; B. ;C WAS TYPfBNE O.REL8 ;BR IF YES. ELSE-- MOV #'=,R0 ;TYPE "=" JSR 5,O.FTYP MOV @O.CAD,R0 ;TYPE ABS. VAL OF CONTENTS BR O.REL9  ;OF OPENED LOC. O.REL8: MOV R0,R4  ; PUT NEW N INTO R4 O.REL6: MOV @O.CAD,R1 ;OPENED VALUE IS THE MINUEND MOV R4,O.TMP1 ; SAVE N ASL R4  ;GET BIAS FROM $NR SUB O.RELT(R4),R1 ;BIAS IS THE SUBTRAHEND MOV #'=,R0  ;TYPE "=" JSR 5,O.FTYP MOV O.TMP1,R0 ; PREPARE INPUTE FOR O.FTYP ADD #60,R0  ; CONVERT N TO ANSCII JSR 5,O.FTYPg ; ; ; BPT HANDLER ; BPTENT: .IF NZ $KT11C ; BIT #CUSER,2(SP) ; BPT IN A TASK (USER MODE)? BEQ BPTA00 ; NO .IFF ; CMP (SP),#ROSEND ; BPT IN AREA ABOVE ROS (ID. A TASK)? BLOS BPTA00 ; NO .IFTF ; NEED THIS ALWAYS TST DBGENT ; DEBUG READY FOR USE IN THIS TASK? BEQ BPTA00 ; NO .IFT .$ H PC CP R L T NZVC R0 R1 .J R2 R3 R4 R5 SP T.p @ LOCN CONTENTS + BE  ". *;/\ $G._<^,OWEBP@>SRC-FI!XADTS PMDTCFRB   R` R V V .<iED- SAME AS C., BUT REXP=0 BY DEFAULT ; C. NO SEMICOLON HAS BEEN TYPED-REPLACE R4 WITH THE CONTENTS OF $C O.CNS: TSTB O.SMFD ;WAS A SEMICOLON TYPED? BNE O.CNS1  ;REXP TYPED PRIOR TO ; CASE A MOV O.CNST,R4 ;CASE C. REPLACE R4 WITH ($C) MOV #1,R2 BR O.SCAN ;RETURN TO SCAN MORE O.CNS1: MOV #'=,R0 ;PRINT VALUE MOV #2,O.BW JSR 5,O.FTYP MOV R5,R0 JSR 5,O.CADV MOV R5,O.CNST  ;AND STORE IN $C O.H1: O.CNS2: JMP O.DCD ; ;MINUS PROCESSING ; O.MIN: INCB j ; TYPE N MOV #',,R0  ;PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA CMP #0,R2  ; CHECK IF R BNE O.REL7  ; IF R MOV O.XXY,R0 ; THEN PREPARE INPUT FOR O.CADV O.REL7: MOV R1,R0  ;TYPE THE VALUE (@O.CAD)-($NR) O.REL9: JSR 5,O.CADV BR O.DCD1 ; ;C PROCESSING. ; A. REXP;C WAS TYPED- PRINT THE VALUE OF REXP AND STORE IN $C ; B. ;C WAS TYPED- SAME AS C., BUT REXP=0 BY DEFAULT ;k; ONLY IF HAVE KT11C MOV 2(SP),-(SP) ; GET PSR OF BPT ON TOP OF STACK SO CAN ; MOVE TO USER STACK MOV R0,(PC)+ ; SAVE R0 TEMP: .WORD 0 ; TEMPORARY STORAGE MFPI SP ; MOVE PS & PC FROM KERNAL MOV (SP)+,R0 ; STACK TO USER STACK MTPI -(R0) ; PUT PSR ON TO USER STACK MTPI -(R0) ; AND THE RETURN ADDRESS MOV R0,-(SP) l.r;@W!@t^:@y.fSz@rt!@rt^@@K"@.LC @(!h@rh`(:h.f-@ 8"K"; fSzU"&6 W! LC `W" @ 7 F"t^: @W!@$.@5 F  &  W!.fUE^mO.MINS  ;SET MINUS FOUND SWITCH ON JMP O.DCD1 .EOT   ;END OF TAPE #1 ; ;REPRINT LAST OPENED ADDRESS RELATIVELY. ; A. N! WAS TYPED--PRINT N,((O.CAD)-($NR)) ; B. ! WAS TYPED. FIND THE CLOSEST BIAS LESS THAN ;  (O.CAD) AND USE ITS "N" -- THEN DO CASE A. ; O.RCMP: MOV #'=,R0  ;FIRST TYPE A "=" JSR 5,O.FTYP  ;WAS N TYPED IN? TST R2  ;WAS N TYPED IN? BNE O.RCM1  ;BRANCH IF YES JSR 5,O.LOC  ;ELSE, FIND BEST N CMP R0,#n C. NO SEMICOLON HAS BEEN TYPED-REPLACE R4 WITH THE CONTENTS OF $C O.CNS: TSTB O.SMFD ;WAS A SEMICOLON TYPED? BNE O.CNS1  ;REXP TYPED PRIOR TO ; CASE A MOV O.CNST,R4 ;CASE C. REPLACE R4 WITH ($C) MOV #1,R2 BR O.SCAN ;RETURN TO SCAN MORE O.CNS1: MOV #'=,R0 ;PRINT VALUE MOV #2,O.BW JSR 5,O.FTYP MOV R5,R0 JSR 5,O.CADV MOV R5,O.CNST  ;AND STORE IN $C O.H1: O.CNS2: JMP O.DCD ; ;MINUS PROCESSING ; O.MIN: INCB O.MINS  ;SET MINUS FOUND SWITCH ON o ; AND, FINALLY, RESTORE USER MTPI SP ; STACK POINTER MOV TEMP,R0 ; RESTORE R0 BIS #CUSER!PUSER,(SP) ; SET PRESENT & PREVIOUS MODES TO USER BIC #TBIT,(SP) ; GET RID OF ANY LOSE T BITS. MOV DBGENT,-(SP) ; GET ADDRESS OF DEBUG 'BPT' ENTRY TO RTI ; RTI TO. - AWAY TO DEBUG .IFF ; HERE IF NO MEMORY MANAGMENT. JMP @DBGENT ; INTO DEBUG -vߋt1W!rt^*ߋtx BPT ERROR q-1 ;IF REL.REG FOUND, BNE O.RCM2 ; BR; ELSE-- MOV O.CAD,R0 ;PRINT ADDR IN ABS. JSR 5,O.CADV BR O.DCD1 O.RCM2: ADD #060,R0  ;CONVERT N TO ANSCII JSR 5,O.FTYP ;TYPE N MOV #',,R0  ;TYPE COMMA JSR 5,O.FTYP MOV O.BW,-(SP) ;SAVE O.BW MOV #2,O.BW  ;ARTIFCIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;TYPE RELATIVE AMOUNT O.RCM3: JSR 5,O.CADV MOV (SP)+,O.BW ;RESTORE MODE BR O.DCD1  ;EXIT TO SCAN ROUTINE rJMP O.DCD1 .EOT   ;END OF TAPE #1 ; ;REPRINT LAST OPENED ADDRESS RELATIVELY. ; A. N! WAS TYPED--PRINT N,((O.CAD)-($NR)) ; B. ! WAS TYPED. FIND THE CLOSEST BIAS LESS THAN ;  (O.CAD) AND USE ITS "N" -- THEN DO CASE A. ; O.RCMP: MOV #'=,R0  ;FIRST TYPE A "=" JSR 5,O.FTYP  ;WAS N TYPED IN? TST R2  ;WAS N TYPED IN? BNE O.RCM1  ;BRANCH IF YES JSR 5,O.LOC  ;ELSE, FIND BEST N CMP R0,#-1 ;IF REL.REG FOUND, BNE O.RCM2 ;s ON TASK'S STACK .ENDC ; ; BPTA00: MOV #ROSODT,-(SP) ; SETUP ADDRESS OF ROS ODT ENTRY FOR BPT BEQ BPTB00 ; NO ODT. JMP @(SP)+ ; OFF TO ODT ; BPTB00: MOV R0,(SP) ; NO ODT - SAVE R0 MOV #BPTMES,R0 ; GET ADDRESS OF ERROR MESSAGE BPTB10: MOVB (R0)+,@#TPB ; PUT OUT A CHARACTER BEQ BPTB30 ; BPTB20: TSTB @#TPS ;WAIT 'TIL DONE BPL BPTB20 t; UPDATE ROSODT.S05 6/13/73 ; UPDATE ROSODT.S04 6/4/73 ; UPDATE ROSODT.S03 5/25/73 ; UPDATE ROSODT.S02 5/11/73 ; UPDATE ROSODT.S01 5/10/73 ; UPDATE ROSODT 5/8/73 .TITLE ROSODT . = .+144+26 ;RESERVES SPACE FOR STACK ; ; EXTERNAL DEFINITIONS ; .DEF ODTIPL,ROSODT,OLDODT R0 = %0 ; REGISTER R1 = %1 ; NAMING R2 = %2 ; CONVENTIONS R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 ST = 17uO.RCM1: MOV R4,R0  ;GET N. THIS CODE SIMULATES O.LOC ASL R0  ;TIMES 2 FOR INDEXING MOV O.CAD,O.XXY SUB O.RELT(R0),O.XXY ;COMPUTE DIFFERENCE ASR R0  ;RESTORE N. BR O.RCM2  ;PRINT RESULTS ; ;FILL MEMORY WORDS. LIMITS ARE THE SEARCH LIMITS. ; O.FILL: MOV #2,O.BW ;SET MODE TO "OPEN WORD" O.FIL1: TSTB O.SMFD ;DONT REACT UNLESS ";" WAS TYPED BEQ O.ERR ;IF NOT TYPED, ERROR. MOV O.CNST, R0 ;ACTUAL VALUE MOV O.LOW,R4  ;USE SEARCH v BR; ELSE-- MOV O.CAD,R0 ;PRINT ADDR IN ABS. JSR 5,O.CADV BR O.DCD1 O.RCM2: ADD #060,R0  ;CONVERT N TO ANSCII JSR 5,O.FTYP ;TYPE N MOV #',,R0  ;TYPE COMMA JSR 5,O.FTYP MOV O.BW,-(SP) ;SAVE O.BW MOV #2,O.BW  ;ARTIFCIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;TYPE RELATIVE AMOUNT O.RCM3: JSR 5,O.CADV MOV (SP)+,O.BW ;RESTORE MODE BR O.DCD1  ;EXIT TO SCAN ROUTINE O.RCM1: MOV R4,R0  ;GET N. THIS CODE SIMULATES O.LOC w ; BR BPTB10 ; NEXT BPTB30: TSTB @#TPS ; WAIT TILL BLANK DONE BPL BPTB30 ; MOV (SP)+,R0 ; RESTORE R0 MOV (SP),@#DSPREG ; PUT ADDRESS IN LIGHTS (ON/45) BPTB40: HALT ; WHAT ELSE IS THERE TO DO? BR BPTB40 ; MAYBE SOMEDAY INTO PSTRAP? ; BPTMES: .ASCII <15><12><12> ; .ASCII /BPT ERROR/ ; .ASCII <15><12> ; .END x7776 ;STATUS REGISTER O.BKP = 16 ;NUMBER OF BREAKPOINTS-1 MULT. BY 2 O.RLR = 16 ;NO. OF RELOC. REGISTERS-1, TIMES 2 O.TVEC = 14 ;TRT VECTOR LOCATION O.RELC = 20 ;NUMBER OF RELOC.REGISTERS(TIMES 2) O.STM = 340 ;PRIORITY MASK - STATUS REGISTER O.TBT = 20 ;T-BIT MASK - STATUS REGISTER TRT = 000003 ;TRT INSTRUCTION O.NEXT = '. ;CHAR TO BE USED FOR OPENING NEXT LOCATION O.RDB = 177562 ;R DATA BUFFER O.RCSR = 177560 ;R C/SR O.TDB = 177566 ;T DATA BUFFER O.TCSR = 17756yLIMITS FOR MOV O.HI,R3  ; FILL LIMITS. JSR 5,O.ST BR O.DCD  ;EXIT ; ;INITIALIZE MEMORY BYTES. ; O.INIT: MOV #1,O.BW BR O.FIL1  ;LET O.FILL DO THE WORK ; COMMAND DECODER - ODT11X ; ALL REGISTERS MAY BE USED (R0-R5), O.ERR: MOV #'?,R0  ; ? TO BE TYPED JSR 5,O.FTYP ; OUTPUT ? O.DCD: CLR O.BW  ;CLOSE ALL JSR 5,O.CRLS ;TYPE * O.DCD3: CLRB O.SMFD  ;SEMICOLON FOUND FLAG CLRB O.CMFD  ;COMMA FOUND FLAG CLRB Oz ASL R0  ;TIMES 2 FOR INDEXING MOV O.CAD,O.XXY SUB O.RELT(R0),O.XXY ;COMPUTE DIFFERENCE ASR R0  ;RESTORE N. BR O.RCM2  ;PRINT RESULTS ; ;FILL MEMORY WORDS. LIMITS ARE THE SEARCH LIMITS. ; O.FILL: MOV #2,O.BW ;SET MODE TO "OPEN WORD" O.FIL1: TSTB O.SMFD ;DONT REACT UNLESS ";" WAS TYPED BEQ O.ERR ;IF NOT TYPED, ERROR. MOV O.CNST, R0 ;ACTUAL VALUE MOV O.LOW,R4  ;USE SEARCH LIMITS FOR MOV O.HI,R3  ; FILL LIMITS. JSR 5,O.ST BR ; |4 ;T C/SR .CSECT .ODT ; ; IPL ENTRY FOR ODT ; ODTIPL: TSTB ODINIT ;HAS ODT BEEN PREVIOUSLY INITIALIZED? BNE 2$ ;YES INCB IPLFLG ;NO, SET IPL INITIALIZATION FLAG JSR PC,OLDODT ;GO DO IT! 2$: INCB DOSRTN ;INHIBIT CNTL C RETURN TO DOS RTS PC ;RETURN .CSECT .PAGE ; INITIALIZE ODT ; USE O.ODT FOR A NORMAL ENTRY ; USE O.ODT+2 TO RESTART OD}.MINS  ;MINUS SIGN FOUND FLAG O.DCD2: CLR R3  ;R3 IS A SAVE REGISTER FOR R2 CLR R5  ;R5 IS A SAVE REGISTER FOR R4 O.DCD1: CLR R4  ; R4 CONTAINS THE CONVERTED OCTAL CLR R2  ; R2 IS THE NUMBER FOUND FLAG O.SCAN: JSR 5,O.GET  ;GET A CHAR, RETURN IN R0 O.SCN1: CMP #'0,R0  ;COMPARE WITH ASCII 0 BHI O.CLGL  ;CHECK LEGALITY IF NON-NUMERIC CMP #'7,R0  ;COMPARE WITH ASCII 7 BLO O.CLGL  ;CHECK LEGALITY IF NOT OCTAL BIC #177770,R0 ;CONVERT TO BCD ASL R4  ~ O.DCD  ;EXIT ; ;INITIALIZE MEMORY BYTES. ; O.INIT: MOV #1,O.BW BR O.FIL1  ;LET O.FILL DO THE WORK ; COMMAND DECODER - ODT11X ; ALL REGISTERS MAY BE USED (R0-R5), O.ERR: MOV #'?,R0  ; ? TO BE TYPED JSR 5,O.FTYP ; OUTPUT ? O.DCD: MOV #015,R0 ;TYPE JSR R5,O.FTYP O.DCD4: CLR O.BW ;CLOSE ALL JSR 5,O.CRLS ;TYPE WHERE N IS THE TASK NO. O.DCD3: CLRB O.SMFD  ;SEMICOLON FO ; ; TEDAN IAUL JET STEDASJ- E AM NAMGRRO P ; ; ;* * * ; ;E ATJDLSTTSB . GEPA . ;C RERV SND E ; ; ;C P TS R UGEB D ; G:DBRV S ; UGEB D ; ; RDCORED BA ; D EBRV S MP J : 0$ 1 MTL TAFA ; M EFRV S MP J D OREC RAD BS.YE ; 0$ 1 GT B NO ; K EORV S EQ J ? RSROER ; )+SP ( ST T D OREC RONTIUATION CUT ODCE ITWR ; T - WIPING OUT ALL BREAKPOINTS ; USE O.ODT+4 TO RE-ENTER (I.E. - FAKE A BREAKPOINT) OLDODT: BR O.STRT ;NORMAL ENTRY BR O.RST ;RESTART O.ENTR: MOV ST,O.UST ;RE-ENTER -- SAVE STATUS MOV O.TVEC+2,ST ;SET UP LOCAL STATUS MOV PC,-(SP) ;FAKE THE PC MOV (SP)+,O.UPC MOVB #-1,O.P ;DISALLOW PROCEED CLRB O.S JMP O.BK1 O.STRT: MOV ST,O.UST ;SAVE STATUS MOV (SP),O.UPC ;SAVE PC ;RUN AT CURRENT STATUS JSR 5,O.SVTT ;SAVE TTY STATUS JSR 0,O.SVR ;SAVE REGISTE; MAKE ROOM ASL R4  ; IN ASL R4  ; R4 ADD R0,R4  ;PACK THREE BITS IN R4 INC R2  ;R2 HAS NUMERIC FLAG BR O.SCAN  ; AND TRY AGAIN O.CLGL: CLR R1  ;CLEAR INDEX O.LGL1: CMPB R0,O.LGCH(R1) ;DO THE CODES MATCH? BEQ O.LGL2  ;JUMP IF YES INC R1  ; SET INDEX FOR NEXT SEARCH CMP R1,#O.CLGT ;IS THE SEARCH DONE? BHIS O.ERR  ; OOPS! BR O.LGL1  ;RE-LOOP O.LGL2: TSTB O.MINS  ;IF MINUS WAS NOT TYPED BEQ O.LGL4  ;DO NOT NEGATE K NEUND FLAG CLRB O.CMFD  ;COMMA FOUND FLAG CLRB O.MINS  ;MINUS SIGN FOUND FLAG CLRB O.TRC ;TRACE MODE FLAG O.DCD2: CLR R3  ;R3 IS A SAVE REGISTER FOR R2 CLR R5  ;R5 IS A SAVE REGISTER FOR R4 O.DCD1: CLR R4  ; R4 CONTAINS THE CONVERTED OCTAL CLR R2  ; R2 IS THE NUMBER FOUND FLAG O.SCAN: JSR 5,O.GET  ;GET A CHAR, RETURN IN R0 O.SCN1: CMP #'0,R0  ;COMPARE WITH ASCII 0 BHI O.CLGL  ;CHECK LEGALITY IF NON-NUMERIC CMP #'7,R0  ;COMPARE WITRTOWDCC, P SR J PETYC RET SE ; ) SP-(7,#1 OV M RDCORED BA. NO ; D EBRV S NE J E?YP TRDCORET AS LALITINT-PUUT-ODCS WA ; YPCTRE6,#1 MP C ; 0:J1RV S ; ; 17E YP TRDCOREN-IOATNUTION CUTTPOUC DCEVIER S ; STLIA AT;D : F2BUDK ; A AT DSKDI ; ; ; . 25 W LK.B R DEEA HRDCORET ;M : F2BUMT ; ; ; T UNCOD OR WUMIMAX;M RS (MAINLY SP) MOV #O.UR0,SP ;SET UP STACK MOV #O.ID,R4 ;TYPE ID MOV #O.IDND,R3 JSR 5,O.TYPE MOVB #1,ODINIT ;SET ODT INITIALIZED FLAG BR O.RST1 O.RST: JSR 0,O.SVR ;SAVE REGISTERS JSR 5,O.REM ;REMOVE ALL BREAKPOINTS JSR 5,O.CLRR ; CLEAR RELOCATION REGISTERS MOVB O.PRI,R4 ;GET ODT PRIORITY RORB R4 ;SHIFT RORB R4 ; INTO RORB R4 ; POSITION MOVB R4,ST ;STORE IN STATUS O.RST1: CLRB O.S ;DISABLE SINGLE INSTRUCTION FOR NOW MOVB #-1,O.P ;DISALLOW PROCEED MOG R4  ;OTHERWISE, TAKE 2'S COMPLEMENT. O.LGL4: TSTB O.CMFD  ;IF A COMMA NOT TYPED, BEQ O.LGL3  ;SKIP NEXT INSTRUCTION. ADD O.BIAS,R4 ;OTHERWISE, ADD RELOC. BIAS TO (R4) O.LGL3: CLRB O.MINS  ;REINITIALIZE MINUS-TYPED SWITCH FOR NXT SCAN ASL R1  ;MULTIPLY BY TWO JMP @O.LGDR(R1) ;GO TO PROPER ROUTINE O.LGDR: O.SEMI ; ; SEMICOLON O.WRD ; / OPEN WORD O.BYT ; \ OPEN BYTE -BACK SLASH O.CRET ; CARRIAGE RETURN CLOSE O.REGT ; $ REGISTER OPS H ASCII 7 BLO O.CLGL  ;CHECK LEGALITY IF NOT OCTAL BIC #177770,R0 ;CONVERT TO BCD ASL R4  ; MAKE ROOM ASL R4  ; IN ASL R4  ; R4 ADD R0,R4  ;PACK THREE BITS IN R4 INC R2  ;R2 HAS NUMERIC FLAG BR O.SCAN  ; AND TRY AGAIN O.CLGL: CLR R1  ;CLEAR INDEX O.LGL1: CMPB R0,O.LGCH(R1) ;DO THE CODES MATCH? BEQ O.LGL2  ;JUMP IF YES INC R1  ; SET INDEX FOR NEXT SEARCH CMP R1,#O.CLGT ;IS THE SEARCH DONE? BHIS O.ERR  ; OOPS! BR O.L . 2410 W LK.B A.RE ATADAN MOOM;C : B1MTDK : B1DKMT ; 0 0, STDLIO ; : F1BUDK ; R FEUF BSKDI ; ; ; . 25 W LK.B ERADHED OREC R/T;M : F1BUMT ; S ERFFBU ; ; . EDLIPPSUT UNCOD OR WND AIDE IL;F 0 0, STDLIO : LTDTDK ; STLIA AT DSKDI ; ; ; 0 I,PRDK1,SCDI C PAIO ; : LTIODK ; T IS L/O ISKDI V #O.STM,O.TVEC+2 ;STATUS WORD TO TRT VECTOR+2 MOV #ROSODT,O.TVEC ;PC TO TRT VECTOR ; THIS NEXT INSTRUCTION RAISES THE "Z" FLAG BECAUSE ; ITS PURPOSE IN LIFE IS TO BEHAVE DIFFERENTLY ON THE /20 ; AND THE /45 SO WE CAN CHANGE THE RTI WHICH ALSO ; BEHAVES DIFFERENTLY ON THE /20 AND /45 BUT DOESNT RAISE ; THE Z FLAG. CONFUSED? WELL SO ARE WE. CMP PC,#.+4 ;CHECK WHETHER ON /45 OR /20 BEQ O.20 ;EQ MEANS 20, NE MEANS 45 MOV #RTT,O.RTIT ;RESET TO RTT IF ON 45 O.20: JMP O.RALL ;CLE O.GO ; G GO TO ADDRESS K O.OP1 ; O.NEXT MODIFY, CLOSE, OPEN NEXT O.ORPC ; "BACKARROW" OPEN RELATED, INDEX - PC (BACK ARROW) O.OLD ; < RETURN TO OLD SEQUENCE AND OPEN O.BACK ; ^ OPEN PREVIOUS (UP ARROW) O.COMM ; , COMMA. SEPERATES REL.REG. FROM INCREMENT O.OFST ; O OFFSET O.WSCH ; W SEARCH WORD O.EFF ; E SEARCH EFFECTIVE ADDRESS O.BKPT ; B BREAKPOINTS O.PROC ; P PROCEED O.ORAB ; @ OPEN RELATED, ABSOLUTE O.ORRB ; > OPEN RELAGL1  ;RE-LOOP O.LGL2: TSTB O.MINS  ;IF MINUS WAS NOT TYPED BEQ O.LGL4  ;DO NOT NEGATE K NEG R4  ;OTHERWISE, TAKE 2'S COMPLEMENT. O.LGL4: TSTB O.CMFD  ;IF A COMMA NOT TYPED, BEQ O.LGL3  ;SKIP NEXT INSTRUCTION. ADD O.BIAS,R4 ;OTHERWISE, ADD RELOC. BIAS TO (R4) O.LGL3: CLRB O.MINS  ;REINITIALIZE MINUS-TYPED SWITCH FOR NXT SCAN ASL R1  ;MULTIPLY BY TWO JMP @O.LGDR(R1) ;GO TO PROPER ROUTINE O.LGDR: O.SEMI ; ; SEMICOLON O.WRD ; / OPEN WORD O; ; ; S STLIO I/D ANS ERFFBUT /MSKDI ; ; E AG.P N VE.E : EN41MS > 15/<#.E AP TNGRO/W IISC.A : ST41MS 0 D OR.W T 1SS4-MEN41MS D OR.W : 41MSRC ; ; N VE.E : EN40MS 5><1./ 1ONTINCFUL CAGILOT UNMOIS/D IISC.A : ST40MS 0 D OR.W T 0SS4-MEN40MS D OR.W : 40MSRC ; ; N VE.E : EN37MS / -#:E AP TERNT/E IISC.A : ST37MS 0 D OR.W T 7SS3-MEN37MS D OR.W : 37MSRC }AR BRK PT TABLES ; ;O.CTLC ; ^C PROCESSING. SIMULATE A TTY INTERRUPT ; ; O.CTLC: TSTB DOSRTN ;IS RETURN TO DOS ALLOWED? BNE O.ELF1 ;NO MOV O.USP,SP ;RESTORE CURRENT STACK CLR -(SP) ;DUMMY STATUS JSR PC,O.CTL1 ;PUSH RETURN ADDR OF INTERR ON STACK BR . ;MONITOR WILL RETURN TO THIS WAIT O.CTL1: MOV 62,-(SP) ;PUSH MONITOR STATUS MOV 60,-(SP) ;PUSH ADDR OF MONITOR ^C ROUTINE MOVB #100,O.RCSR ;ENABLE KYBD INTERRUPT RTI ; O.ALF REXP;NATED, REL. BRANCH O.SNGL ; S SINGLE INSTRUCTION MODE O.REL ; R RELOCATION PROCESSING O.CNS ; C CONSTANT REGISTER PROCESSING O.MIN ; - MINUS, NEGATES NUMBER TYPED IN O.FILL ; F FILL MEMORY WORDS FROM THE CONSTANT REGISTER O.INIT ; I INITIALIZE MEMORY BYTES FROM THE CONSTANT REGISTER O.RCMP ; ! PRINT CURRENT OPENED ADDRESS IN REL. FORM O.MOD ; X RETYPE OPENED CONTENTS, MOD40 O.ALF ; A ACCEPT ASCII INPUT O.CTLC ; ^C EXIT TO MONITOR O.LGL = .-O.LGDR ;.BYT ; \ OPEN BYTE -BACK SLASH O.CRET ; CARRIAGE RETURN CLOSE O.REGT ; $ REGISTER OPS O.GO ; G GO TO ADDRESS K O.OP1 ; O.NEXT MODIFY, CLOSE, OPEN NEXT O.ORPC ; "BACKARROW" OPEN RELATED, INDEX - PC (BACK ARROW) O.OLD ; < RETURN TO OLD SEQUENCE AND OPEN O.BACK ; ^ OPEN PREVIOUS (UP ARROW) O.COMM ; , COMMA. SEPERATES REL.REG. FROM INCREMENT O.OFST ; O OFFSET O.WSCH ; W SEARCH WORD O.EFF ; E SEARCH EFFECTIVE ADDRESS O.BKPT ; ; ; N VE.E : EN36MS 2><15><1./RDCOREN ITADAO /N IISC.A : ST36MS 0 D OR.W T 6SS3-MEN36MS D OR.W : 36MSRC N VE.E ; : EN35MS > 12><15/<1 IISC.A ; : ST35MS ; 0 D OR.W ; T 5SS3-MEN35MS D OR.W: 35MSRC ; ; N VE.E ; : EN34MS > 12><15/<1 IISC.A ; : STy TYPE N CHARACTERS STARTING AT REXP; ; THEN-- ; ACCEPT A STRING OF ASCII TEXT. STORE IT IN ; SUCCESIVE BYTES STARTING AT THE INDICATED ; LOCATION. TEXT TERMINATED BY COUNT, N. ; OR CR OR LF. ODT PRINTS THE ADDR OF ; THE NEXT AVAILABLE LOCATION IN CORE ; O.ALF: TST R3 ;WAS REXP TYPED? BEQ O.ELF1 ;BR IF NOT TSTB O.SMFD ;WAS ; TYPED? BEQ O.ELF1 ;BR IF NOT, ERROR TST R2 ;IF N NOT TYPED, ASSUME 1 BNE O.ELF4 INC R4 O.ELF4: MOV R4,-(SP) ;SAVE COUNT ;SET UP TO TYPE N CHAR. MOV R5,R4 ;LGL MUST EQUAL 2X CHLGT ALWAYS ; SEMI-COLON PROCESSOR O.SEMI: MOV R2,R3 ;A SEMI-COLON HAS BEEN RECEIVED MOV R4,R5 ;NUMERIC FLAG TO R3, CONTENTS TO R5 INCB O.SMFD ;SET SEMICOLON FOUND FLAG CLRB O.CMFD ;RESET COMMA FOUND FLAG BR O.DCD1  ;GO BACK FOR MORE ; PROCESS / AND \ - OPEN WORD OR BYTE ;INPUT - IF R2 IS NON-ZERO A NEW REXP HAS BEEN TYPED IN ;INPUT - -ADDRESS OF WORD TO BE OPENED IS IN R4 O.WRD: MOV #2,O.BW  ;OPEN WORD BR O.WB1 O.BYT1 B BREAKPOINTS O.PROC ; P PROCEED O.ORAB ; @ OPEN RELATED, ABSOLUTE O.ORRB ; > OPEN RELATED, REL. BRANCH O.SNGL ; S SINGLE INSTRUCTION MODE O.REL ; R RELOCATION PROCESSING O.CNS ; C CONSTANT REGISTER PROCESSING O.MIN ; - MINUS, NEGATES NUMBER TYPED IN O.FILL ; F FILL MEMORY WORDS FROM THE CONSTANT REGISTER O.INIT ; I INITIALIZE MEMORY BYTES FROM THE CONSTANT REGISTER O.RCMP ; ! PRINT CURRENT OPENED ADDRESS IN REL. FORM O.MOD ; X RETYPE OPENED C34MS ; 0 D OR.W ; T 4SS3-MEN34MS D OR.W ; : 34MSRC ; ; N VE.E ; : EN33MS 2><15><1./EDOSCL>/15/<3,N IOCTUN FALICOG/L5><1 IISC.A ; : ST33MS ; 0 D OR.W ; T 3SS3-MEN33MS D OR.W ; : 33MSRC ; ; N VE.E ; : EN32MS > 12><15/<1:/RSBEUM NCEOINV/I5><1 IISC.A ; : ST32MS ; 0 D OR.W ; T 2SS3-MEN32MS D OR.W ; : 32MSRC ; ; N VE.E ; : EN31MS > 12><15/<1:/RSBEUM NALEVRIET/R IISC.A ; q;MAKE SPACES INVISIABLE TO O.GET MOV O.XXX,R4 ;IF LINE FEED, OPEN NEXT AVAILABLE CH. INC R4 INC R2 MOV R4,R0 ;PRINT NEXT AVAIL BYTE MOV R2,-(SP) ;SAVE TO AVOID CLOBBERRING MOV R4,-(SP) ;BY O.RORA JSR 5,O.RORA MOV (SP)+,R4 MOV (SP)+,R2 MOVB #'\,R0 ;PRINT BACK SLASH JSR 5,O.FTYP JMP O.BYT O.ELF3: JSR 5,O.GET ;GET NXT CH. O.ELF7: JSR 5,O.CU ;CHK FOR ^U MOVB R0,(R5)+ DEC R4 ;REDUCE COUNT. IS IT ZERO? BEQ O.ELF2 ;BR IF YES BR O.ELF3 O.ELF2: MOV R5,-(SP) ;PRINT NXT AVAINTENTS OF BYTE O.WRD3: JSR 5,O.CADV ;GO GET AND TYPE OUT @CAD CMP #1,O.BW ;CHECK IF BYTE MODE. BNE O.DCD3  ;IF NOT WE'RE DONE. ELSE: MOVB #'=,R0 ;TYP "=" AND THEN THE ASCII BYTE JSR 5,O.FTYP MOVB @O.CAD,R0 JSR 5,O.FTYP MOVB #' ,R0 JSR 5,O.FTYP JMP O.DCD3  ;GO BACK TO DECODER ; PROCESS CARRIAGE RETURN O.CRET: JSR PC,O.CLSE ;CLOSE LOCATION O.DCDA: JMP O.DCD  ;RETURN TO DECODER O.ERR3: JMP O.ERR  ; INTERMEDIATE HELP INPUT - IF R2 IS NON-ZERO A NEW REXP HAS BEEN TYPED IN ;INPUT - -ADDRESS OF WORD TO BE OPENED IS IN R4 O.WRD: MOV #2,O.BW  ;OPEN WORD BR O.WB1 O.BYT1: ROL R4  ;GET THE ADDRESS BACK O.BYT: MOV #1,O.BW  ;OPEN BYTE O.WB1: TST R2  ;GET VALUE IF R2 IS NON-ZERO BEQ O.WRD1  ;SKIP OTHERWISE - REOPEN PREVIOUS LOCATION MOV R4,O.DOT ;PUT VALUE IN DOT MOV R4,O.CAD ; ALSO IN CAD O.WRD1: CMP #1,O.BW  ;CHECK BYTE MODE BEQ O.WRD2  ;JUMP IF BYTE MOV O.CAD,R4 AS : ST31MS ; 0 D OR.W ; T 1SS3-MEN31MS D OR.W ; : 31MSRC ; ; N VE.E ; : EN30MS > 12><15/ 15/, OPEN NEXT WORD O.OLD: INCB O.SEQ ;SET FLAG TO LATER RESTORE CAD O.OP1: TST O.BW ; RECEIVED O.ERR2: BEQ O.ERR3  ;ERROR IF NOTHING IS OPEN JSR PC,O.CLSE ;CLOSE PRESENT CELL TST O.SEQ  ;SHOULD CAD BE RESTORED? BEQ O.OP5  ;BRANCH IF NOT MOV O.DOT,O.CAD ;RESTORE PREVIOUS SEQUENCE CLRB O.SEQ  ;RESET FLAG; NO LONGER NEEDED O.OP5: ADD O.BW,O.CAD ;GENERATE NEW ADDRESS O.OP2: MOV O.CAD,O.DOT ;INITIALIZE DOT O.OP2A: JSR R4  ;MOVE ONE BIT TO CARRY BCS O.BYT1  ;JUMP IF ODD ADDRESS MOV @O.CAD,R0 ;GET CONTENTS OF WORD BR O.WRD3 O.WRD2: MOVB @O.CAD,R0 ;GET CONTENTS OF BYTE O.WRD3: JSR 5,O.CADV ;GO GET AND TYPE OUT @CAD CMP #1,O.BW ;CHECK IF BYTE MODE. BNE O.DCD3  ;IF NOT WE'RE DONE. ELSE: MOVB #'=,R0 ;TYP "=" AND THEN THE ASCII BYTE JSR 5,O.FTYP MOVB @O.CAD,R0 JSR 5,O.FTYP MOVB #' ,R0 JSR 5,O.FTYP JMP O.DCD3  ;GO BACK TO DECODER ; PROCESS CARRIAGE RETURN : ST27MS ; 0 D OR.W ; T 7SS2-MEN27MS D OR.W ; : 27MSRC ; ; N VE.E ; : EN26MS 2><15><1./CEVIER STOS PETAT PUIN/ IISC.A O DTOS PETAT PUINF O;# 0 0, E YT.B ; : TS26MS 5><1 IISC.A ; : ST26MS ; 0 D OR.W ; T 6SS2-MEN26MS D OR.W ; : 26MSRC ; ; i+O.LG,R4 ;IS THE SEARCH DONE? BHI O.RSP ;BRANCH IF NOT BIC #177770,R0 ;MASK OFF OCTAL MOV R0,R4 O.SP1: ASL R4 ADD #O.UR0,R4 ;GENERATE ADDRESS INC R2 ;SET FOUND FLAG JMP O.SCAN ;GO FIND NEXT CHARACTER O.SP: SUB #O.TL-7,R4 ;GO FIND NEXT CHARACTER BR O.SP1 ;RETYPE OPENED WORD IN ANSCII (CONVERTED FROM MOD40) O.MOD: MOV O.CAD,R0 ;CALL MOD40 UNPACK MOV #O.ALF1,R1 JSR PC,UNPA00 ;ASCII CHARS GO INTO O.ALF1,2,3 MOV #'=,R0 ;PRINT "=" JSR R5,O.FTYP INCB O.SCRN ;SET FLAG TO ALLOW SPACR 5,O.CRLF ; MOV O.BW,-(SP) ;SAVE BW MOV #2,O.BW  ;SET TO TYPE FULL WORD ADDRESS MOV O.CAD,R0 ;NUMBER TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV @SP,O.BW ;RESTORE BW CMP #1,(SP)+ ;IS IT BYTE MODE? BEQ O.OP3  ;JUMP IF YES MOV #'/,R0  ;TYPE A / O.OP4: JSR 5,O.FTYP BR O.WRD1  ;GO PROCESS IT O.OP3: MOV #'\,R0  ;TYPE A \ BR O.OP4 ; PROCESS ^, OPEN PREVIOUS WORD O.BACK: TST O.BW  ; ^ RECEIVED O.CRET: JSR PC,O.CLSE ;CLOSE LOCATION O.DCDA: JMP O.DCD ;RETURN TO DECODER O.ERR3: JMP O.ERR  ; INTERMEDIATE HELP ; PROCESS , OPEN NEXT WORD O.OLD: INCB O.SEQ ;SET FLAG TO LATER RESTORE CAD O.OP1: TST O.BW ; RECEIVED O.ERR2: BEQ O.ERR3  ;ERROR IF NOTHING IS OPEN JSR PC,O.CLSE ;CLOSE PRESENT CELL TST O.SEQ  ;SHOULD CAD BE RESTORED? BEQ O.OP5  ;BRANCH IF NOT MOV O.DOT,O.CAD ;RESTORE PR N VE.E ; : EN25MS > 12><15/<1 IISC.A ; : ST25MS ; 0 D OR.W ; T 5SS2-MEN25MS D OR.W ; : 25MSRC ; ; N VE.E ; : EN24MS > 12><15/<1 IISC.A ; : ST24MS ; 0 D OR.W ; T 4SS2-MEN24MS D OR.W ; : 24MSeES MOVB O.ALF1,R0 ;PRINT 1ST CHAR JSR R5,O.FTYP MOVB O.ALF2,R0 ;PRINT 2ND CH JSR R5,O.FTYP MOVB O.ALF3,R0 ;PRINT 3RD CH JSR R5,O.FTYP MOV #' ,R0 ;PRINT SPACE JSR R5,O.FTYP JSR R5,O.GET ;USER MUST NOW TYPE: CMPB R0,#' ;IF CHAR IS LESS THAN SPACE, BLT O.MOD1 ;PREPARE TO ENTER COMMAND DECODER MOVB R0,O.ALF1 ;OTHERWISE READ 3 CHAR JSR R5,O.GET ;2ND CH MOVB R0,O.ALF2 JSR R5,O.GET ;3RD CHAR CLRB O.SCRN ;RESTORE O.GET TO NORMAL MOVB R0,O.ALF3 MOV #O.XXX,R0 ;TELL MOD40 TPACK BEQ O.ERR2  ;ERROR IF NOTHING OPEN JSR PC,O.CLSE SUB O.BW,O.CAD ;GENERATE NEW ADDRESS BR O.OP2  ;GO DO THE REST ; B HANDLER - SET AND REMOVE BREAKPOINTS O.BKPT: MOV #O.TRTC,R0 ASL R4  ;MULTIPLY NUMBER BY TWO TST R3 BEQ O.REMB  ;IF R3 IS ZERO GO REMOVE BREAKPOINT ASR R5  ;GET ONE BIT TO CARRY BCS O.ERR1  ;BADNESS IF ODD ADDRESS ASL R5  ;RESTORE ONE BIT ADD #O.ADR1,R4 TST R2 BNE O.SET1  ;JUMP IF SPECIFIC CELL O.SET: CMP R0,@R4  EVIOUS SEQUENCE CLRB O.SEQ  ;RESET FLAG; NO LONGER NEEDED O.OP5: ADD O.BW,O.CAD ;GENERATE NEW ADDRESS O.OP2: MOV O.CAD,O.DOT ;INITIALIZE DOT O.OP2A: JSR 5,O.CRLF ; MOV O.BW,-(SP) ;SAVE BW MOV #2,O.BW  ;SET TO TYPE FULL WORD ADDRESS MOV O.CAD,R0 ;NUMBER TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV @SP,O.BW ;RESTORE BW CMP #1,(SP)+ ;IS IT BYTE MODE? BEQ O.OP3  ;JUMP IF YES MOV #'/,R0  ;TYPE A / O.OP4: JSR 5,O.FTYP BR O.WRD1  ;GO PROCESRC ; ; N VE.E ; : EN23MS > 12><15/<1 IISC.A ; : ST23MS ; 0 D OR.W ; T 3SS2-MEN23MS D OR.W ; : 23MSRC ; ; N VE.E ; : EN22MS 2><15><1 IISC.A ; : AIF (NELIT aTO PACK MOV #O.ALF1,R1 ;INTO O.XXX JSR PC,PACK00 MOV O.XXX,R4 ;MAKE IT APPEAR AS IF THE MOV #1,R2 ;PACKED # WAS TYPED JMP O.SCAN ;LET COMMAND DECODER DO THE REST O.MOD1: CLRB O.SCRN CLR R4 ;MAKE IT APPEAR CLR R2 ;AS IF NO NUMBERS WERE TYPED IN O.MOD2: JMP O.SCN1 ;TYPED IN ; "BACKARROW" HANDLER - OPEN INDEXED ON THE PC (BACK ARROW) O.ORPC: JSR 5,O.TCLS ;TEST WORD MODE AND CLOSE ADD @R2,R2 ;COMPUTE INC R2 INC R2 ; NEW ADDRESS O.PCS: MOV R2,O.CAD ;UPDATE CAD JMP O.OP2A ;IS THIS CELL FREE? BEQ O.SET1  ;JUMP IF YES CMP R4,#O.BKP+O.ADR1 ;ARE WE AT THE END OF OUR ROPE BHIS O.ERR1  ;YES, THERE IS NOTHING FREE TST (R4)+  ;INCREMENT BY TWO BR O.SET O.SET1: CMP R4,#O.BKP+O.ADR1 BHI O.ERR1  ;ERROR IF TOO LARGE MOV R5,@R4  ;SET BREAKPOINT BR O.DCDA  ;RETURN O.REMB: TST R2 BEQ O.RALL  ;GO REMOVE ALL CMP R4,#O.BKP BHI O.ERR1  ;JUMP IF NUMBER TOO LARGE MOV R0,O.ADR1(R4) ;CLEAR BREAKPOINT CLR O.CT(R4) ;CLES IT O.OP3: MOV #'\,R0  ;TYPE A \ BR O.OP4 ; PROCESS ^, OPEN PREVIOUS WORD O.BACK: TST O.BW  ; ^ RECEIVED BEQ O.ERR2  ;ERROR IF NOTHING OPEN JSR PC,O.CLSE SUB O.BW,O.CAD ;GENERATE NEW ADDRESS BR O.OP2  ;GO DO THE REST ; B HANDLER - SET AND REMOVE BREAKPOINTS O.BKPT: MOV #O.TRTC,R0 ASL R4  ;MULTIPLY NUMBER BY TWO TST R3 BEQ O.REMB  ;IF R3 IS ZERO GO REMOVE BREAKPOINT ASR R5  ;GET ONE BIT TO CARRY BCS O.ERR1 EX NOR FCKBA ; 0 A1FG C MP J RMTTOUC, P SR J SSREDD AEW/N WLLFI ; 1 N0AK P E OV M 3 -7081-;0 $ 2 R B K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR J SSREDD AILMAL IL BHTIGRE FTEDAUP: 27E OD COP ; 0:N0FG C7 2DECOP OL TTSB . GEPA . 3 -7081-;0 E ERTHT NO" RM"T ; RR E : 2$ 1 ORRR EONSIERNVCO ; RR E : 0$];GO FINISH UP O.ORAB: JSR 5,O.TCLS ;TEST WORD MODE AND CLOSE MOV @R2,R2 ;GET ABSOLUTE ADDRESS BR O.PCS O.ORRB: JSR 5,O.TCLS ;TEST AND CLOSE MOV @R2,R1 ;COMPUTE NEW ADDRESS MOVB R1,R1 ;EXTEND THE SIGN ASL R1 ;R2=2(@R2) INC R1 ; +2 INC R1 ADD R1,R2 ; +PC BR O.PCS O.TCLS: JSR PC,O.CLSE ;CLOSE CURRENT CELL CMP #2,O.BW ;ONLY WORD MODE ALLOWED BNE O.TCL1 ;BRANCH IF ERROR MOV O.CAD,R2 ;CURRENT ADDRESS IN R2 RTS R5 O.TCL1: TST (SP)+ O.TCL2: JMP O.ERR ;POP A WORD AND SHAR COUNT ALSO O.DCDB: BR O.DCDA O.RALL: CLR R4 MOV #O.TRTC,R0 O.RM1: CMP R4,#O.BKP+2 ;ALL DONE? BHI O.DCDA  ;JUMP IF YES MOV R0,O.ADR1(R4) ;RESET BKPT MOV #TRT,O.UIN(R4) ;RESET CONTENTS OF TABLE CLR O.CT(R4) ;CLEAR COUNT TST (R4)+  ;INCREMENT BY TWO BR O.RM1 ; PROCESS O, COMPUTE OFFSET O.OFST: CMP #2,O.BW  ;CHECK WORD MODE BNE O.ERR1  ;ERROR IF NOT CORRECT MODE MOV #' ,R0  ;TYPE ONE BLANK JSR 5,O.FTYP ; AS A ;BADNESS IF ODD ADDRESS ASL R5  ;RESTORE ONE BIT ADD #O.ADR1,R4 TST R2 BNE O.SET1  ;JUMP IF SPECIFIC CELL O.SET: CMP R0,@R4  ;IS THIS CELL FREE? BEQ O.SET1  ;JUMP IF YES CMP R4,#O.BKP+O.ADR1 ;ARE WE AT THE END OF OUR ROPE BHIS O.ERR1  ;YES, THERE IS NOTHING FREE TST (R4)+  ;INCREMENT BY TWO BR O.SET O.SET1: CMP R4,#O.BKP+O.ADR1 BHI O.ERR1  ;ERROR IF TOO LARGE MOV R5,@R4  ;SET BREAKPOINT BR O.DCDA  ;RETURN O.REMB: TST R2 BEQ  1) NY AIF (NELIT EX NOR FCKBA ; 0 A1FG C MP J UT OCKBA" RM"TE ITWR ; RMTTOUC, P SR J STMDTR1+LGFI1, R B OV M RSTOCADIINW NEH IT WGEMA IM"TR "LLFI ;MZMTTR1+LGFI0, R B OV M $: 8L ILS WAM RAPAT PUINF IAGFLT DST ULFADE ; 1 ,RSTBDHU # OV M $: 6$ 8 LE B #21, R MP C $ 6 EQ B 2)R O(1 AGFLT DSD/ST ; R12,W0MP T OV M $: 4L GALEILS WAM RAPAT PUINF INEZOT ULFADE ; 0 ,RONBZHU # OV M $: 2$ 4 LE B YOW THE ERROR ; PROCESS S - SINGLE INSTRUCTION MODE O.SNGL: TSTB O.SMFD ;DONT REACT IF ; NOT TYPED BEQ O.TCL2 TST R2 ;SEE IF TURN ON OR TURN OFF BNE O.SI1 ;BRANCH IF TURNING IT ON CLRB O.S ;CLEAR THE FLAG JMP O.DCD ;CONTINUE THE SCAN O.SI1: MOVB #-1,O.S ;SET THE FLAG O.SI2: JMP O.DCD ;COMMA PROCESSING. N IN R4 IS THE RELOCATION REGISTER NUMBER ; O.COMM: INCB O.CMFD ;SET "COMMA FOUND" SWITCH TO ON TST R2 ;WAS A NUMBER TYPED IN? BEQ O.COM1 ;NO,USE CURRENT BIAS; I.E.,EXIT BICSEPARATOR TST R3  ;WAS SEMI-COLON TYPED? BEQ O.ERR1  ;NO, CALL IT AN ERROR O.OF2: SUB O.CAD,R5 ;COMPUTE DEC R5 DEC R5  ; 16 BIT OFFSET MOV R5,R0 JSR 5,O.CADV ;NUMBER IN R0 - WORD MODE MOV R5,R0 ASR R0  ;DIVIDE BY TWO BCS O.OF1  ;ERROR IF ODD CMP #-200,R0 ;COMPARE WITH -200 BGT O.OF1  ;DO NOT TYPE IF OUT OF RANGE CMP #177,R0  ;COMPARE WITH +177 BLT O.OF1  ;DO NOT TYPE IF OUT OF RANGE DEC O.BW  ;SET TEMPORARY BYTE MODE JSRO.RALL  ;GO REMOVE ALL CMP R4,#O.BKP BHI O.ERR1  ;JUMP IF NUMBER TOO LARGE MOV R0,O.ADR1(R4) ;CLEAR BREAKPOINT CLR O.CT(R4) ;CLEAR COUNT ALSO O.DCDB: BR O.DCDA O.RALL: CLR R4 MOV #O.TRTC,R0 O.RM1: CMP R4,#O.BKP+2 ;ALL DONE? BHI O.DCDA  ;JUMP IF YES MOV R0,O.ADR1(R4) ;RESET BKPT MOV #BPT,O.UIN(R4) ;RESET CONTENTS OF TABLE CLR O.CT(R4) ;CLEAR COUNT TST (R4)+  ;INCREMENT BY TWO BR O.RM1 ; PROCESS O, COMPUT #50, R MP C $ 2 EQ B ) -5(1Z TM ; R01,W0MP T OV M 3 -7171-;0RYNABIO TRSTOCADIINE ON ZMETIT ERNVCO ; $ 101,M0AK P E OV M 3 -7081-;0 2$ 1 R B K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR J S ORATICND INEZOE IM TTEDAUP: 26E OD-COP ; 0:M0FG C ! !!!!!! ; O TGCIR FOD TEENEMPLIMT NO ; R ERPC O MP J LEAB TP"TM "TEDAUP: 25E OD-COPU #177770,R4 ;MAKE SURE THAT N IS LESS THAN 10(8) ASL R4 ;YES, LOCATE RELOC. REGISTER MOV O.RELT(R4),O.BIAS ;PUT BIAS IN O.BIAS O.COM1: JMP O.DCD1 ;GO BACK TO DECODER ;R PROCESSING. SEVERAL POSSIBILITIES- ; A. ;R WAS TYPED. ZERO OUT ALL RELOCATION REGISTERS ; B. ;NR WAS TYPED. ZERO OUT $NR ; C. REXP;NR WAS TYPED. SET $NR TO REXP ; D. NR WAS TYPED, WHILE A WORD WAS OPENED- ; COMPUTE (O.CAD)-($NR) AND PRINT IT ; O.REL: TSTB O.SMFD ;TEST IF A SEMICOLON WAS TYPED BEQ O.REL1 ;NO CASE D 5,O.CADV ;NUMBER IN R0 - BYTE MODE INC O.BW  ;RESTORE WORD MODE O.OF1: JMP O.DCD3  ;ALL DONE O.ERR1: JMP O.ERR  ;INTERMEDIATE HELP .EOT  ;END OF TAPE #2 ; ; SEARCHES - $MSK HAS THE MASK ;  $MSK+2 HAS THE FWA ;  $MSK+4 HAS THE LWA O.EFF: INC R1  ;SET EFFECTIVE SEARCH BR O.WDS O.WSCH: CLR R1  ;SET WORD SEARCH O.WDS: TST R3  ;CHECK FOR OBJECT FOUND BEQ O.ERR1  ;ERROR IF NO OBJECT MOV #2,O.E OFFSET O.OFST: CMP #2,O.BW  ;CHECK WORD MODE BNE O.ERR1  ;ERROR IF NOT CORRECT MODE MOV #' ,R0  ;TYPE ONE BLANK JSR 5,O.FTYP ; AS A SEPARATOR TST R3  ;WAS SEMI-COLON TYPED? BEQ O.ERR1  ;NO, CALL IT AN ERROR O.OF2: SUB O.CAD,R5 ;COMPUTE DEC R5 DEC R5  ; 16 BIT OFFSET MOV R5,R0 JSR 5,O.CADV ;NUMBER IN R0 - WORD MODE MOV R5,R0 ASR R0  ;DIVIDE BY TWO BCS O.OF1  ;ERROR IF ODD CMP #-200,R0 ;COMPARE WITH -200 BGT O.OF1   ; 0:L0FG C5 2DECOP OL TTSB . 6 2DECOP OL TTSB . 3 -7192- 0 GEPA . P TOM RAOGPRO TRNTURE ; 0 A1FG C MP J UT OCKBAE BLTAR TEMED TEDAUPE ITWR ; R LW F EFIL F TERI WERFT ACKLOR EACL ;2 CLFF C B LR C TEBYE ISNOR EACL ; ) R2 ( B LR C 2 R NC I : 2$ 2 GEMA ILLFI ; 2)(R1, R B OV M : 0$ 2T MILIE OVAB# E US ; RR E 0$ 2 LE B Q TST R2 ;NOTHING OPENED, WAS N TYPED? BEQ O.REL2 ;N NOT TYPED O.REL4: BIC #177770,R4 ;GUARANTEE THAT N<10 ASL R4 ;N TYPED, CASE B OR C. SET $NR. TST R3 ;IF REXP NOT TYPED,CLEAR TO -1 BEQ O.RELA MOV R5,O.RELT(R4) ;IF REXP NOT TYPED, R5=0. CASE B. O.REL5: BR O.H1 ;EXIT TO DECODER O.REL2: TST R3 ;IF REXP TYPED, CASE B OR C WITH N=0 BEQ O.REL3 ;REXP NOT TYPED, N NOT TYPED, CLEAR ALL. BR O.REL4 ;REXP TYPED- N NOT TYPED O.RELA: MOV #-1,O.RELT(R4) BR O.H1 ;CLEAR RELOCATION REGIBW  ;SET WORD MODE MOV O.MSK+2,R2 ;SET ORIGIN MOV O.MSK,R4 ;SET MASK COM R4 O.WDS2: CMP R2,O.MSK+4 ; IS THE SEARCH ALL DONE? BHI O.DCDB  ; YES MOV @R2,R0  ; GET OBJECT TST R1  ;NO BNE O.EFF1  ;BRANCH IF EFFECTIVE SEARCH MOV R0,-(SP) MOV R5,R3  ;EXCLUSIVE OR BIC R5,R0  ; IS DONE BIC (SP)+,R3  ; IN A VERY BIS R0,R3  ; FANCY MANNER HERE BIC R4,R3  ;AND RESULT WITH MASK O.WDS3: BNE O.WDS4  ;RE-LOOP IF NO MATCH MOV R4,-;DO NOT TYPE IF OUT OF RANGE CMP #177,R0  ;COMPARE WITH +177 BLT O.OF1  ;DO NOT TYPE IF OUT OF RANGE DEC O.BW  ;SET TEMPORARY BYTE MODE JSR 5,O.CADV ;NUMBER IN R0 - BYTE MODE INC O.BW  ;RESTORE WORD MODE O.OF1: JMP O.DCD3  ;ALL DONE O.ERR1: JMP O.ERR  ;INTERMEDIATE HELP .EOT  ;END OF TAPE #2 ; ; SEARCHES - $MSK HAS THE MASK ;  $MSK+2 HAS THE FWA ;  $MSK+4 HAS THE LWA O.EFF: N SEXU#M1, R MP C 2$ 2 EQ B #SE UEAAR ; R12,W0MP T OV M 2 R NC I : 8$ 1 GEMA ILLFI ; 2)(R1, R B OV M : 6$ 1 ITIM LVEBO A #ODPR ; RR E 6$ 1 LE B N RDXP#M1, R MP C 8$ 1 EQ B #ODPR ; R13,W0MP T OV M E YT BXTNE ; 2 R NC I : 4$ 1 GEMA ILEAB TLLFI ; 2)(R1, R B OV M : 3$ 1T MILIE OVAB# E OBPR ; RR E 3 -7263- 0 H UGROTHT IET.L.. ; 3$ 1 MSTERS. O.REL3: JSR 5,O.CLRR ;CLEAR RELOC REG'S BR O.SI2 ;GO BACK TO SCAN O.REL1: CMP O.BW,#2 ;CASE D, PRINT @O.CAD IN RELATIVE FORM BNE O.TCL2 ;ERROR IF BYTE OPENED CMP #0,R2 ; CHECK IF R BNE O.REL6 ; IF R JSR R5,O.LOC ; THEN FIND BEST N CMP R0,#-1 ;WAS A RELOC REG FOUND? BNE O.REL8 ;BR IF YES. ELSE-- MOV #'=,R0 ;TYPE "=" JSR 5,O.FTYP MOV @O.CAD,R0 ;TYPE ABS. VAL OF CONTENTS BR O.REL9 ;OF OPENED LOC. O.REL8: MOV R0,R4 ; PUT NEW N INTO R4 O.REL6: MOV @O.CAD,R1 ;OPENED VA(SP) ;REGISTERS R2,R4, AND R5 ARE SAFE MOV R1,-(SP) ;SAVE R1 MOV R2,-(SP) ;SAVE R2 MOV R3,-(SP) JSR 5,O.CRLF MOV R2,R0  ;GET READY TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV #'/,R0  ;SLASH TO R0 JSR 5,O.FTYP ;TYPE IT MOV @R2,R0  ;GET CONTENTS JSR 5,O.CADV ; TYPE CONTENT MOV (SP)+,R3 MOV (SP)+,R2 ;RESTORE R2 MOV (SP)+,R1 ;RESTORE R1 MOV (SP)+,R4 ; RESTORE R4 ;HAS CTRL/U BEEN STRUCK? JSR R5,O.CU  ;CHECK FOINC R1  ;SET EFFECTIVE SEARCH BR O.WDS O.WSCH: CLR R1  ;SET WORD SEARCH O.WDS: TST R3  ;CHECK FOR OBJECT FOUND BEQ O.ERR1  ;ERROR IF NO OBJECT MOV #2,O.BW  ;SET WORD MODE MOV O.MSK+2,R2 ;SET ORIGIN MOV O.MSK,R4 ;SET MASK COM R4 O.WDS2: CMP R2,O.MSK+4 ; IS THE SEARCH ALL DONE? BHI O.DCDB  ; YES MOV @R2,R0  ; GET OBJECT TST R1  ;NO BNE O.EFF1  ;BRANCH IF EFFECTIVE SEARCH MOV R0,-(SP) MOV R5,R3  ;EXCLUSIVE OR BIC R5,R0  EQ B 3 -7263- 0 . .. #BERO PLTUAEF DHE TIST IIF ; N RBFP#D1, R MP C 3$ 1 LE B N RBXP#M1, R MP C 4$ 1 EQ B # E OBPR ; R15,W0MP T OV M : EDORSTE BOT NLLWIO ER ZIST HA TRSTEMERAPAE RETHG INOWLLFOE THF ONY A ;. RSTEMERAPAT PUINE THH IT WRYNT E'SERET MHE TLLFIO TMETIS IITW NO ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;T IZETILUSOAB ; R21, R DD A RYNT E'SERET MISTHO TEXND IESIV G*4 ;ILUE IS THE MINUEND MOV R4,O.TMP1 ; SAVE N ASL R4 ;GET BIAS FROM $NR SUB O.RELT(R4),R1 ;BIAS IS THE SUBTRAHEND MOV #'=,R0 ;TYPE "=" JSR 5,O.FTYP MOV O.TMP1,R0 ; PREPARE INPUTE FOR O.FTYP ADD #60,R0 ; CONVERT N TO ANSCII JSR 5,O.FTYP ; TYPE N MOV #',,R0 ;PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA CMP #0,R2 ; CHECK IF R BNE O.REL7 ; IF R MOV O.XXY,R0 ; THEN PREPARE INPUT FOR O.CADV O.REL7: MOV R1,R0 ;TYPE THE VALUE (@O.CAD)-($NR) O.REL9: JSR 5,O.CADV BR O.DCD1 R ^U O.WDS4: TST (R2)+  ;INCREMENT TO NEXT CELL AND BR O.WDS2  ; RETURN O.EFF1: CMP R0,R5  ; IS (X)=K? BEQ O.WDS3  ;TYPE IF EQUAL MOV R0,R3  ;(X) TO R3 ADD R2,R3  ;(X)+X INC R3 INC R3  ;(X)+X+2 CMP R3,R5  ;IS (X)+X+2=K? BEQ O.WDS3  ;BRANCH IF EQUAL BIC #177400,R0 ;WIPE OUT EXTRANEOUS BITS MOVB R0,R0 CCC ASL R0  ;MULTIPLY BY TWO INC R0 INC R0 ADD R2,R0  ;ADD PC CMP R0,R5  ;IS THE RESULT A PROPER REL. BRANCH? ; IS DONE BIC (SP)+,R3  ; IN A VERY BIS R0,R3  ; FANCY MANNER HERE BIC R4,R3  ;AND RESULT WITH MASK O.WDS3: BNE O.WDS4  ;RE-LOOP IF NO MATCH MOV R4,-(SP) ;REGISTERS R2,R4, AND R5 ARE SAFE MOV R1,-(SP) ;SAVE R1 MOV R2,-(SP) ;SAVE R2 MOV R3,-(SP) JSR 5,O.CRLF MOV R2,R0  ;GET READY TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV #'/,R0  ;SLASH TO R0 JSR 5,O.FTYP ;TYPE IT MOV @R2,R0  ;GET CONTENTS JSR 5,O.CADV ; TYPE CONTENT MOV  2 R SL A 2 R SL A 3 -7082- 0 L EL CISTHR FOX DEINE ORSTRE ; R21,C-SETR*MRNMTMX # DD A : 2$ 1E ONR HEOTAND EA RGO ; 0$ 1 R B S IA BND AAR PNGTINI-IREY .B.. ; R12,LGFI # OV M ..I. IPETYA R FOE AREPPR ; L3FCCF2, # B OV M RECON ILLCET ECRRCOE THE AV HWE ; 2$ 1 LE B 3 -7082- 0 EXND IOMFRF OFT UNCO ; R2C,SETR*MRNMTMX # UB S LLCE" TR"MA N IADRE ; NTLS F EFIL F : 0$ 13 -7192- 0 E ; ;C PROCESSING. ; A. REXP;C WAS TYPED- PRINT THE VALUE OF REXP AND STORE IN $C ; B. ;C WAS TYPED- SAME AS C., BUT REXP=0 BY DEFAULT ; C. NO SEMICOLON HAS BEEN TYPED-REPLACE R4 WITH THE CONTENTS OF $C O.CNS: TSTB O.SMFD ;WAS A SEMICOLON TYPED? BNE O.CNS1 ;REXP TYPED PRIOR TO ; CASE A MOV O.CNST,R4 ;CASE C. REPLACE R4 WITH ($C) MOV #1,R2 BR O.SCAN ;RETURN TO SCAN MORE O.CNS1: MOV #'=,R0 ;PRINT VALUE MOV #2,O.BW JSR 5,O.FTYP MOV R5,R0 JSR 5,O.CADV MOV R5,O.CNST ;AND STORBR O.WDS3 ; PROCESS G - GO O.GO: TSTB O.SMFD ;WAS ";" TYPED? BEQ O.ERR1 ;BR IF NOT TYPED TSTB IPLFLG ;IS IPL INIT IN PROGRESS? BEQ 2$ ;NO CLRB IPLFLG ;YES, CLEAR IPL BR 4$ ;RETURN TO IPL 2$: TST R3  ;WAS K; TYPED? BEQ O.ERR1  ; TYPE ? IF NOT MOVB #O.BKP+3,O.P ;CLEAR PROCEED ASR R5  ;CHECK LOW ORDER BIT BCS O.ERR1  ;ERROR IF ODD NUM(SP)+,R3 MOV (SP)+,R2 ;RESTORE R2 MOV (SP)+,R1 ;RESTORE R1 MOV (SP)+,R4 ; RESTORE R4 O.WDS4: TST (R2)+  ;INCREMENT TO NEXT CELL AND BR O.WDS2  ; RETURN O.EFF1: CMP R0,R5  ; IS (X)=K? BEQ O.WDS3  ;TYPE IF EQUAL MOV R0,R3  ;(X) TO R3 ADD R2,R3  ;(X)+X INC R3 INC R3  ;(X)+X+2 CMP R3,R5  ;IS (X)+X+2=K? BEQ O.WDS3  ;BRANCH IF EQUAL BIC #177400,R0 ;WIPE OUT EXTRANEOUS BITS MOVB R0,R0 E IM TSTIR FOR FITIN ; 6 CLFF C LR C Y NL O IPETY: CKLOE ITWR ; L2FCCF2, # OV M R"MT "IND EA RTOE AREPPRW NO ; L1FCCFR,MT # OV M A RE A IPETYO TERNTOI PITIN ; R11,LGFI # OV M R23, R OV M 0 -8 1X:DEIN ; R31, R DD A 3 ,RRNMTMX # UL M 3 R EC D #OTSP ; R30, R OV M ":TR"MO NT IEXND INDFI, EDCKHE CENBEE AV H #OTSPD AN# R TEMET HA TOW N ;$ 6 GT B N TRXM#M1, R AE IN $C O.H1: O.CNS2: JMP O.DCD ; ;MINUS PROCESSING ; O.MIN: INCB O.MINS ;SET MINUS FOUND SWITCH ON JMP O.DCD1 .EOT ;END OF TAPE #1 ; ;REPRINT LAST OPENED ADDRESS RELATIVELY. ; A. N! WAS TYPED--PRINT N,((O.CAD)-($NR)) ; B. ! WAS TYPED. FIND THE CLOSEST BIAS LESS THAN ; (O.CAD) AND USE ITS "N" -- THEN DO CASE A. ; O.RCMP: MOV #'=,R0 ;FIRST TYPE A "=" JSR 5,O.FTYP ;WAS N TYPED IN? TST R2 ;WAS N TYPED IN? BNE O.RCM1 ;BRANCH IF YES JSR 5,O.LOC ;ELSE, FIND BEST N BER ASL R5  ;RESTORE WORD MOV R5,O.UPC ;SET UP NEW PC 4$: MOVB #O.STM,ST  ;SET HIGH PRIORITY JSR 5,O.RSTT ;RESTORE TELETYPE O.TBIT: CLRB O.T  ;CLEAR BIS #O.TBT,O.UST ; BOTH T-BIT FLAGS TSTB O.S  ;SEE IF WE NEED A T BIT BNE O.GO2  ;IF NOT GO NOW BIC #O.TBT,O.UST ;SET TH T BIT O.GO1: JSR 5,O.RSB  ;RESTORE BREAKPOINTS O.GO2: JSR 0,O.RSR  ;RESTORE REGISTERS MOV O.UST,-(SP) ; AND STATUS MOV O.UPC,-(SP) ; AND PC NOP   ; CHANGE CCC ASL R0  ;MULTIPLY BY TWO INC R0 INC R0 ADD R2,R0  ;ADD PC CMP R0,R5  ;IS THE RESULT A PROPER REL. BRANCH? BR O.WDS3 ; PROCESS G - GO O.GO: TSTB O.SMFD ;WAS ";" TYPED? BEQ O.ERR1 ;BR IF NOT TYPED TST R3  ;WAS K; TYPED? BEQ O.ERR1  ; TYPE ? IF NOT MOVB #O.BKP+3,O.P ;CLEAR PROCEED ASR R5  ;CHECK LOW ORDER BIT BCS O.ERR1  ;ERROR IF ODD NUMBER ASL R5  ;RESTORE WORD MOV R5,O.UPC ;SET UP NE MP C $: 8D LIVAIN# R TEME ; RR E $: 6$ 8 NE B #R TEME ; R14,W0MP T OV M $ 2 GT B N PTXS#M0, R MP C $: 4S ITIM LDESIUT O #OTSP ; RR E $: 2$ 4 NE B #OTSP ; R01,W0MP T OV M 3 -7171-;0 RYNABIO TMSRAPAT PUINL ALT ERNVCO ; 2$1,K0AK P E OV M E BLTAR TEMEE ATPD U4: 2DECOP-;O 0:K0FG C 4 2DECOP OL TTSB . GEPA . ITEX& H ACTT AM,OR F ; 0 C3FG C MP J 3 -7081-;0 = CMP R0,#-1 ;IF REL.REG FOUND, BNE O.RCM2 ; BR; ELSE-- MOV O.CAD,R0 ;PRINT ADDR IN ABS. JSR 5,O.CADV BR O.DCD1 O.RCM2: ADD #060,R0 ;CONVERT N TO ANSCII JSR 5,O.FTYP ;TYPE N MOV #',,R0 ;TYPE COMMA JSR 5,O.FTYP MOV O.BW,-(SP) ;SAVE O.BW MOV #2,O.BW ;ARTIFCIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;TYPE RELATIVE AMOUNT O.RCM3: JSR 5,O.CADV MOV (SP)+,O.BW ;RESTORE MODE BR O.DCD1 ;EXIT TO SCAN ROUTINE O.RCM1: MOV R4,R0 ;GET N. THIS CODE SIMULATES O.LOC ASL R0 ;TIMES 2 FOR INDE TO HALT FOR DEBUGGING MOV O.UST,-(SP) ; MOV IN STATUS FIRST W/O T BIT BIC #O.TBT,(SP) ; SO INTERRUPTS CAN HAPPEN BEFORE MOV (SP)+,ST ; RTT TURNS ON THE T BIT. O.RTIT: RTI   ; CHANGED TO RTT WHEN RUNNING ON /45 ; PROCESS P - PROCEED ; ONLY ALLOWED AFTER A BREAKPOINT O.PROC: TSTB O.SMFD ;WAS ";" TYPED? BEQ 2$ ;BR IF NOT TYPED MOVB O.P,R0 TSTB R0  ;CHECK LEGALITY OF PROCEED BLT 2$ ;NOT LW PC JSR R5,O.CRLF ; O.TBIT: CLRB O.T ;CLEAR T-BIT FLAG BIS #O.TBT,O.UST ;SET T-BIT IN USER PS TSTB O.S  ;SEE IF WE NEED A T BIT BNE O.GO2 ;IF SO, GO NOW TSTB O.TRC ;TRACE MODE? BNE O.GO2 ;YES, GO NOW BIC #O.TBT,O.UST ;CLEAR THE T BIT O.GO1: JSR 5,O.RSB  ;RESTORE BREAKPOINTS O.GO2: JSR 0,O.RSR  ;RESTORE REGISTERS MOV O.UST,-(SP) ; AND STATU S"RMFO "LEIPLPMUT ENEVPR ; FGSTTL1, # B OV M 2 J0AK P E OV M E.IM T &TEDAD RETO SHE TND A ; E,BLTA" RM"TE TH, NELIT PUINE THM RO FFOINI CIASG INUS, GESAES M ; O"LIFON PE"OE THF OONETELSKN -IEDLLFIW/A RE ASG MUTTPOUD OA LOW N ;N IORSVEON COR F #SG MSTLAF ODRAD ; 2SKJPA1, ; - ;- E NCUEEQ SNGLIAL C ; ;K AR MPETAA E ITWRO T -SEPOUR P ; ; RKMATP- E AM NAMGRRO P ; ; * * * ; ; RKMATPL TTSB . GEPA . 9XING MOV O.CAD,O.XXY SUB O.RELT(R0),O.XXY ;COMPUTE DIFFERENCE ASR R0 ;RESTORE N. BR O.RCM2 ;PRINT RESULTS ; ;FILL MEMORY WORDS. LIMITS ARE THE SEARCH LIMITS. ; O.FILL: MOV #2,O.BW ;SET MODE TO "OPEN WORD" O.FIL1: TSTB O.SMFD ;DONT REACT UNLESS ";" WAS TYPED BEQ O.ERR ;IF NOT TYPED, ERROR. MOV O.CNST, R0 ;ACTUAL VALUE MOV O.LOW,R4 ;USE SEARCH LIMITS FOR MOV O.HI,R3 ; FILL LIMITS. JSR 5,O.ST BR O.DCD ;EXIT ; ;INITIALIZE MEMORY BYTES. ; O.INIT: MOV #1,O.BW BR O.FIL1 ;LETEGAL TST R2  ;CHECK FOR ILLEGAL COUNT BEQ 4$ ;LEGAL 2$: JMP O.ERR ;JUMP IF ILLEGAL 4$: TST R3  ;WAS COUNT SPECIFIED? BEQ O.PR1  ;NO MOV R5,O.CT(R0) ;YES, PUT AWAY COUNT O.PR1: MOVB #O.STM,ST ;FORCE HIGH PRIORITY JSR 5,O.RSTT ;RESTORE TTY O.C1: CMPB O.P,#O.BKP ;SEE IF A REAL ONE OR A FAKE BGT O.TBIT  ;BRANCH IF FAKE TSTB O.S  ;SEE IF SINGLE INSTRUCTION MODE BNE O.TBIT  ;IF SO EXIT NOW MOVB #O.STM,ST ;SS MOV O.UPC,-(SP) ; AND PC O.RTIT: RTT ;GO ; PROCESS P - PROCEED ; ONLY ALLOWED AFTER A BREAKPOINT O.PROC: TSTB O.SMFD ;WAS ";" TYPED? BEQ O.ERR1 ;BR IF NOT TYPED MOVB O.P,R0 TSTB R0  ;CHECK LEGALITY OF PROCEED BLT O.ERR1  ;NOT LEGAL TST R2  ;CHECK FOR ILLEGAL COUNT BNE O.ERR1  ;JUMP IF ILLEGAL TST R3  ;WAS COUNT SPECIFIED? BEQ O.PR1 ;NO MOV R5,O.CT(R0) ;YES, PUT AWAY COU ENEV . F F 7 17 26 1 ; 77 3 TEBY . 7E 76 1 26 1 ; 17 1 TEBY . 7D 75 1 25 1 ; 20 3 TEBY . 7C 74 1 24 1 ; 52 1 TEBY . 7B 73 1 23 1 ; 00 3 TEBY . 7A 72 1 22 1 ; 51 2 TEBY . 79 71 1 21 1 ; 50 2 TEBY . 78 70 1 20 1 ; 47 2 TEBY . 77 67 1 19 1 ; 42 2 TE5 O.FILL DO THE WORK ; COMMAND DECODER - ODT11X ; ALL REGISTERS MAY BE USED (R0-R5), O.ERR: MOV #'?,R0 ; ? TO BE TYPED JSR 5,O.FTYP ; OUTPUT ? O.DCD: CLR O.BW ;CLOSE ALL JSR 5,O.CRLS ;TYPE * O.DCD3: CLRB O.SMFD ;SEMICOLON FOUND FLAG CLRB O.CMFD ;COMMA FOUND FLAG CLRB O.MINS ;MINUS SIGN FOUND FLAG O.DCD2: CLR R3 ;R3 IS A SAVE REGISTER FOR R2 CLR R5 ;R5 IS A SAVE REGISTER FOR R4 O.DCD1: CLR R4 ; R4 CONTAINS THE CONVERTED OCTAL CLR R2 ; R2 IS THE NUMBER FOUND FLAET HIGH PRIORITY INCB O.T  ;SET T-BIT FLAG BIS #O.TBT,O.UST ;SET T-BIT BR O.GO2 ; BREAKPOINT HANDLER ROSODT: MOV (SP)+,O.UPC ;PRIORITY IS 7 UPON ENTRY MOV (SP)+,O.UST ;SAVE STATUS AND PC MOVB #O.BKP+3,O.P ;TELL ;P THAT WE CAN CONTINUE O.BK1: JSR 0,O.SVR  ;SAVE VARIOUS REGISTERS TSTB O.T  ;CHECK FOR T-BIT SET BNE O.TBIT  ;JUMP IF SET JSR 5,O.REM  ;REMOVE BREAKPOINTS TSTB O.PRI  ;CHECK IF PRIORITY BPL O.BK2  ; NT O.PR1: JSR R5,O.CRLF ; O.C1: CMPB O.P,#O.BKP ;SEE IF A REAL ONE OR A FAKE BGT O.TBIT  ;BRANCH IF FAKE TSTB O.S  ;SEE IF SINGLE INSTRUCTION MODE BNE O.TBIT  ;IF SO EXIT NOW INCB O.T  ;SET T-BIT FLAG BIS #O.TBT,O.UST ;SET T-BIT BR O.GO2 ; ; PROCESS D - OCTAL DUMP REQUEST ; RANGE OF DUMP IS IN MASK SEARCH LIMIT REGISTERS ; ; O.DMP: TSTB O.SMFD ; DON'T REACT UNLESS ";" WAS BY . 76 66 1 18 1 ; 45 2 TEBY . 75 65 1 17 1 ; 44 2 TEBY . 74 64 1 16 1 ; 43 2 TEBY . 73 63 1 15 1 ; 42 2 TEBY . 72 62 1 14 1 ; 31 2 TEBY . 71 61 1 13 1 ; 30 2 TEBY . 70 60 1 12 1 ; 27 2 TEBY . 6F 57 1 11 1 ; 26 2 TEBY . 6E 56 1 10 1 ; 25 2 TEBY . 1G O.SCAN: JSR 5,O.GET ;GET A CHAR, RETURN IN R0 O.SCN1: CMP #'0,R0 ;COMPARE WITH ASCII 0 BHI O.CLGL ;CHECK LEGALITY IF NON-NUMERIC CMP #'7,R0 ;COMPARE WITH ASCII 7 BLO O.CLGL ;CHECK LEGALITY IF NOT OCTAL BIC #177770,R0 ;CONVERT TO BCD ASL R4 ; MAKE ROOM ASL R4 ; IN ASL R4 ; R4 ADD R0,R4 ;PACK THREE BITS IN R4 INC R2 ;R2 HAS NUMERIC FLAG BR O.SCAN ; AND TRY AGAIN O.CLGL: CLR R1 ;CLEAR INDEX O.LGL1: CMPB R0,O.LGCH(R1) ;DO THE CODES MATCH? BEQ O.LGL2 ;JUMP IF YES IS AS SAME AS USER PGM MOVB O.UST,R5 ;PICK UP USER UST IF SO BR O.BK3 O.BK2: MOVB O.PRI,R5 ;OTHERWISE PICK UP ACTUAL PRIORITY CCC   ;CLEAR CARRY RORB R5  ;SHIFT LOW ORDER BITS RORB R5  ; INTO RORB R5  ; HIGH ORDER RORB R5  ; POSITION O.BK3: BIC #O.TBT,R5 ;CLEAR POSSIBLE T BIT (S/I MODE) MOVB R5,ST  ;PUT THE STATUS AWAY WHERE IT BELONGS MOV O.UPC,R5 ;GET PC, IT POINTS TO THE TRT TSTB O.S  ;SEE IF IT WAS SINGLE INSTRUCTION FUN BMI TYPED BNE O.DM05 O.DM02: JMP O.ERR O.DM05: MOVB O.DDEV,DEVICE ; GET DUMP DEVICE TO I/O LIST MOV #64.,IOBUF ; NO. CHARS/PRINT TO BUFFER HDR MOV O.LOW,R4 ; GET DUMP RANGE FROM SEARCH LIMIT REGISTERS BIT #000001,R4 ; BYTE ADDRESS? BNE O.DM02 ; YES, ERROR MOV O.HI,R5 CMP R4,R5 ; ARE SEARCH LIMITS REASONABLE? BHI O.DM02 ; NO MOVB #MAXL 6D 55 1 09 1 ; 24 2 TEBY . 6C 54 1 08 1 ; 23 2 TEBY . 6B 53 1 07 1 ; 22 2 TEBY . 6A 52 1 06 1 ; 21 2 TEBY . 69 51 1 05 1 ; 11 2 TEBY . 68 50 1 04 1 ; 10 2 TEBY . 67 47 1 03 1 ; 07 2 TEBY . 66 46 1 02 1 ; 06 2 TEBY . 65 45 1 01 1 ; 05 2 TEBY . - INC R1 ; SET INDEX FOR NEXT SEARCH CMP R1,#O.CLGT ;IS THE SEARCH DONE? BHIS O.ERR ; OOPS! BR O.LGL1 ;RE-LOOP O.LGL2: TSTB O.MINS ;IF MINUS WAS NOT TYPED BEQ O.LGL4 ;DO NOT NEGATE K NEG R4 ;OTHERWISE, TAKE 2'S COMPLEMENT. O.LGL4: TSTB O.CMFD ;IF A COMMA NOT TYPED, BEQ O.LGL3 ;SKIP NEXT INSTRUCTION. ADD O.BIAS,R4 ;OTHERWISE, ADD RELOC. BIAS TO (R4) O.LGL3: CLRB O.MINS ;REINITIALIZE MINUS-TYPED SWITCH FOR NXT SCAN ASL R1 ;MULTIPLY BY TWO JMP @O.LGDR(R1) ;GO TO PROPER ROUTIO.B4  ;IF SO HANDLE THERE TST -(R5) MOV R5,O.UPC MOV #O.BKP,R4 ;GET A COUNTER O.B1: CMP R5,O.ADR1(R4) ;COMPARE WITH LIST BEQ O.B2  ;JUMP IF FOUND DEC R4 DEC R4 BGE O.B1  ;RE-LOOP UNTIL FOUND JSR 5,O.SVTT ;SAVE TELETYPE STATUS JSR 5,O.CRLF MOV #O.BD,R4 ;ERROR, NOTHING FOUND MOV #O.BD+1,R3 JSR 5,O.TYPE ;OUTPUT "BE" FOR BAD ENTRY MOV R5,R0 ADD #2,O.UPC ;POP OVER THE ADJUSTMENT ABOVE BR O.B3  ; OR CONTINUE N,LNCNT ; SET LINE CNT TO EJECT PRIOR TO 1ST PAGE O.DM10: JSR PC,BLKBUF ; BLANKS TO PRINT BUFFER MOV R4,R3 ; GET ADDR OF 1ST WORD OF PRINTED LINE/DUMP JSR PC,BIN2OC ; CONVERT ADDR TO ASCII OCTAL MOVB #'*,6(R2) ; INSERT "*" AFTER LOCN ADD #9.,R2 ; ADVANCE BUF POINTER 9 PLACES MOV R4,R1 ; CALCULATE PRINT POSITION FOR 1ST WORD OF LINE BIC #177760,R1 ASR R1 64 44 1 00 1 ; 04 2 TEBY . 63 43 1 99 ; 03 2 TEBY . 62 42 1 98 ; 02 2 TEBY . 61 41 1 97 ; 01 2 TEBY . 60 40 1 96 ; 71 1 TEBY . 5F 37 1 95 ; 55 1 TEBY . 5E 36 1 94 ; 37 1 TEBY . 5D 35 1 93 ; 15 1 TEBY . 5C 34 1 92 ; 40 3 TEBY . 5B )NE O.LGDR: O.SEMI ; ; SEMICOLON O.WRD ; / OPEN WORD O.BYT ; \ OPEN BYTE -BACK SLASH O.CRET ; CARRIAGE RETURN CLOSE O.REGT ; $ REGISTER OPS O.GO ; G GO TO ADDRESS K O.OP1 ; O.NEXT MODIFY, CLOSE, OPEN NEXT O.ORPC ; "BACKARROW" OPEN RELATED, INDEX - PC (BACK ARROW) O.OLD ; < RETURN TO OLD SEQUENCE AND OPEN O.BACK ; ^ OPEN PREVIOUS (UP ARROW) O.COMM ; , COMMA. SEPERATES REL.REG. FROM INCREMENT O.OFST ; O OFFSET O.WSCH ; W SEARCH WORD O.EFF O.B4: MOVB #O.BKP+2,R4 ;SET BREAK POINT HIGH + 1 MOV R5,O.ADR1(R4) ;STORE NEXT PC VALUE FOR TYPE OUT BR O.B2 O.B2: MOVB R4,O.P ;ALLOW PROCEED DEC O.CT(R4) BGT O.C1  ;JUMP IF REPEAT MOV #1,O.CT(R4) ;RESET COUNT TO 1 JSR 5,O.SVTT ;SAVE TELETYPE STATUS, R4 IS SAFE MOV #'B,R0 JSR 5,O.FTYP ;TYPE "B" MOVB O.P,R0  ;CONVERT BREAKPOINT NUMBER TO ASCII ADD #140,R0 ASR R0 JSR 5,O.FTYP MOV #';,R0 JSR 5,O.FTYP ; TYPE MOV #2,O.BW  ; SET W MUL #7,R1 ADD R1,R2 O.DM20: MOV (R4)+,R3 ; GET NEXT WORD TO CONVERT JSR PC,BIN2OC ; CONVERT TO ASCII AND PLACE IN BUFFER ADD #7,R2 ; ADVANCE BUF PRINTER 7 PLACES CMP R4,R5 ; HI LIMIT REACHED? BHI O.DM30 ; YES MOV R4,R0 ; END OF LINE? BIC #177760,R0 BNE O.DM20 ; NO O.DM30: MOV #'D,R0 ; TELL PRINT ROUTINE CALL IS 33 1 91 ; 35 1 TEBY . 5A 32 1 90 ; 51 3 TEBY . 59 31 1 89 ; 50 3 TEBY . 58 30 1 88 ; 47 3 TEBY . 57 27 1 87 ; 46 3 TEBY . 56 26 1 86 ; 45 3 TEBY . 55 25 1 85 ; 44 3 TEBY . 54 24 1 84 ; 43 3 TEBY . 53 23 1 83 ; 42 3 TEBY . 52 22% ; E SEARCH EFFECTIVE ADDRESS O.BKPT ; B BREAKPOINTS O.PROC ; P PROCEED O.ORAB ; @ OPEN RELATED, ABSOLUTE O.ORRB ; > OPEN RELATED, REL. BRANCH O.SNGL ; S SINGLE INSTRUCTION MODE O.REL ; R RELOCATION PROCESSING O.CNS ; C CONSTANT REGISTER PROCESSING O.MIN ; - MINUS, NEGATES NUMBER TYPED IN O.FILL ; F FILL MEMORY WORDS FROM THE CONSTANT REGISTER O.INIT ; I INITIALIZE MEMORY BYTES FROM THE CONSTANT REGISTER O.RCMP ; ! PRINT CURRENT OPENED ADDRESS IN REL. FORM O.MODORD MODE MOVB O.P,R4 MOV O.ADR1(R4),R0 ;GET ADDRESS OF BREAK O.B3: JSR 5,O.RORA ; CHECK FORMAT JMP O.DCD  ;GO TO DECODER ; SAVE REGISTERS R0-R6 ; INTERNAL STACK O.SVR: MOV (SP)+,O.XXX ;PICK REGISTER FROM STACK AND SAVE MOV SP,O.USP ;SAVE USER STACK ADDRESS MOV #O.USP,SP ;SET TO INTERNAL STACK MOV R5,-(SP) ;SAVE MOV R4,-(SP) ; REGISTERS MOV R3,-(SP) ;1 MOV R2,-(SP) ; THRU MOV R1,-(SP) ; 5 MOV O.XXX,-(SP) ;PUTFROM DUMP JSR PC,PRINT ; PRINT A LINE BR O.DM02 ; ERROR - EXIT CMP R4,R5 ; HI LIMIT REACHED? BLOS O.DM10 ; NO, GO FORMAT NEW LINE JMP O.DCD ; YES, EXIT TO DECODER .PAGE ; ; PROCESS T - TRACE REQUEST ; ; TRACE LIMITS SHALL HAVE BEEN PREVIOUSLY SPECIFIED ; IN SEARCH LIMIT REGISTERS ; ; O.TRAC: TSTB O.SMFD ; DON'T REACT UNLESS ";" WAS TYPED 1 82 ; 31 3 TEBY . 51 21 1 81 ; 30 3 TEBY . 50 20 1 80 ; 27 3 TEBY . 4F 17 1 79 ; 26 3 TEBY . 4E 16 1 78 ; 25 3 TEBY . 4D 15 1 77 ; 24 3 TEBY . 4C 14 1 76 ; 23 3 TEBY . 4B 13 1 75 ; 22 3 TEBY . 4A 12 1 74 ; 21 3 TEBY . 49 11 1 ! ; X RETYPE OPENED CONTENTS, MOD40 O.ALF ; A ACCEPT ASCII INPUT O.CTLC ; ^C EXIT TO MONITOR O.LGL = .-O.LGDR ;LGL MUST EQUAL 2X CHLGT ALWAYS ; SEMI-COLON PROCESSOR O.SEMI: MOV R2,R3 ;A SEMI-COLON HAS BEEN RECEIVED MOV R4,R5 ;NUMERIC FLAG TO R3, CONTENTS TO R5 INCB O.SMFD ;SET SEMICOLON FOUND FLAG CLRB O.CMFD ;RESET COMMA FOUND FLAG BR O.DCD1 ;GO BACK FOR MORE ; PROCESS / AND \ - OPEN WORD OR BYTE ;INPUT - IF R2 IS NON-ZERO A NEW REXP HAS BEEN TYPED IN ;INPUT - -ADDRESS OF WORD SAVED REGISTER ON STACK TST -(SP) RTS R0 ; RESTORE REGISTERS R0-R6 O.RSR: TST (SP)+  ;POP THE EXTRA CELL MOV (SP)+,O.XXX ;GET R0 FROM STACK MOV (SP)+,R1 ;RESTORE MOV (SP)+,R2 ; REGISTERS MOV (SP)+,R3 ; 1 MOV (SP)+,R4 ; THRU MOV (SP)+,R5 ; 5 MOV O.USP,SP ;RESTORE USER STACK MOV O.XXX,-(SP) ;PUT R0 ON USER STACK RTS R0 ; RESTORE BREAKPOINTS 0-7 O.RSB: MOV #O.BKP,R4 ;RESTORE ALL BREAKPOINTS O.RS1: MOV @O.ADR1(R4),O.UIN(R4) ;SAV BNE O.TR05 O.TR02: JMP O.ERR O.TR05: BIT O.LOW,#000001 ; BYTE ADDRESS? BNE O.TR02 ; YES, ERROR CMP O.HI,O.LOW ; ARE TRACE LIMITS REASONABLE BLO O.TR02 ; NO INCB O.TRC ; SET TRACE MODE CLRB O.S ; DISALLOW SINGLE INSTRUCTION MODE MOVB O.TDEV,DEVICE ; GET TRACE DEVICE TO I/O LIST MOV #72.,IOBUF ; NO. CHARS. TO BUFFER HEADER MOVB #73 ; 11 3 TEBY . 48 10 1 72 ; 10 3 TEBY . 47 07 1 71 ; 07 3 TEBY . 46 06 1 70 ; 06 3 TEBY . 45 05 1 69 ; 05 3 TEBY . 44 04 1 68 ; 04 3 TEBY . 43 03 1 67 ; 03 3 TEBY . 42 02 1 66 ; 02 3 TEBY . 41 01 1 65 ; 01 3 TEBY . 40 00 1 64 ; TO BE OPENED IS IN R4 O.WRD: MOV #2,O.BW ;OPEN WORD BR O.WB1 O.BYT1: ROL R4 ;GET THE ADDRESS BACK O.BYT: MOV #1,O.BW ;OPEN BYTE O.WB1: TST R2 ;GET VALUE IF R2 IS NON-ZERO BEQ O.WRD1 ;SKIP OTHERWISE - REOPEN PREVIOUS LOCATION MOV R4,O.DOT ;PUT VALUE IN DOT MOV R4,O.CAD ; ALSO IN CAD O.WRD1: CMP #1,O.BW ;CHECK BYTE MODE BEQ O.WRD2 ;JUMP IF BYTE MOV O.CAD,R4 ASR R4 ;MOVE ONE BIT TO CARRY BCS O.BYT1 ;JUMP IF ODD ADDRESS MOV @O.CAD,R0 ;GET CONTENTS OF WORD BR O.WRD3 O.WRDE CONTENTS MOV O.TRTC,@O.ADR1(R4) ;REPLACE WITH TRAP DEC R4 DEC R4 BGE O.RS1  ;RE-LOOP UNTIL DONE RTS R5  ; THEN QUIT ; SAVE TELETYPE STATUS O.SVTT: MOVB O.RCSR,O.CSR1 ;SAVE R C/SR MOVB O.TCSR,O.CSR2 ;SAVE T C/SR CLRB O.RCSR  ;CLEAR ENABLE AND MAINTENANCE CLRB O.TCSR  ; BITS IN BOTH C/SR O.SVT1: TSTB O.TCSR  ;LOOP UNTIL READY BIT COMES ON BPL O.SVT1  ;BR IF BIT NOT ON RTS R5 ; RESTORE TELETYPE STATUS O.RSTT: MAXLN,LNCNT ; SET LINE CNT TO EJECT PRIOR TO 1ST PAGE MOV O.LOW,O.UPC ; GET LOCN FOR START OF TRACE MOV O.LOW,O.LPC ; SAVE PC FOR TRACE PRINT ON 1ST TRAP JMP O.TBIT ; GO SET T-BIT AND EXIT .PAGE ; BREAKPOINT HANDLER O.BRK: MOV (SP)+,O.UPC ;PRIOITY IS LEVEL OF TASK ON ENTRY MOV (SP)+,O.UST ;SAVE STATUS AND PC MOVB #O.BKP+3,O.P ;TELL ;P THAT WE CAN CONTINUE O.BK1: JSR 0,O.SVR  ;SAVE VARIOUS REGISTERS TSTB 74 1 TEBY . 3F 77 63 ; 57 1 TEBY . 3E 76 62 ; 56 1 TEBY . 3D 75 61 ; 76 1 TEBY . 3C 74 60 ; 14 1 TEBY . 3B 73 59 ; 36 1 TEBY . 3A 72 58 ; 72 1 TEBY . 39 71 57 ES;Y ERVDSR Q BE ? ALAT;FR ERPL+MPL,MTELMMP # P CM O ;N 20VDSR Q BE 2: MOVB @O.CAD,R0 ;GET CONTENTS OF BYTE O.WRD3: JSR 5,O.CADV ;GO GET AND TYPE OUT @CAD CMP #1,O.BW ;CHECK IF BYTE MODE. BNE O.DCD3 ;IF NOT WE'RE DONE. ELSE: MOVB #'=,R0 ;TYP "=" AND THEN THE ASCII BYTE JSR 5,O.FTYP MOVB @O.CAD,R0 JSR 5,O.FTYP MOVB #' ,R0 JSR 5,O.FTYP JMP O.DCD3 ;GO BACK TO DECODER ; PROCESS CARRIAGE RETURN O.CRET: JSR PC,O.CLSE ;CLOSE LOCATION O.DCDA: JMP O.DCD ;RETURN TO DECODER O.ERR3: JMP O.ERR ; INTERMEDIATE HELP ; PROCESS , OPEN NEXT WORDJSR 5,O.CRLF TSTB O.TCSR  ;WAIT READY BPL .-4  ; ON PRINTER BIT #4000,O.RCSR ;CHECK BUSY FLAG BEQ O.RSE1  ;SKIP READY LOOP IF NOT BUSY TSTB O.RCSR  ;WAIT READY BPL .-4  ; ON READER O.RSE1: MOVB O.CSR1,O.RCSR ;RESTORE MOVB O.CSR2,O.TCSR ; THE STATUS REGISTERS RTS R5 ; REMOVE BREAKPOINTS 0-7 ; IN THE OPPOSITE ORDER OF SETTING O.REM: TSTB O.S  ;SEE IF SINGLE INSTRUCTION IS GOING BNE O.R2  ;EXIT IF SO CLR R4  ;REMOVE ALL BREAKPOINT O.T  ;CHECK FOR T-BIT SET BEQ O.BK1A ;NOT SET JMP O.TBIT ;SET - GO O.BK1A: JSR 5,O.REM ;REMOVE BREAKPOINTS TSTB O.PRI  ;CHECK IF PRIORITY BPL O.BK2 ;IS IT SAME AS USER PGM? BR O.BK3 ;YES, SAME AS USER O.BK2: MOVB O.PRI,R5 ;OTHERWISE PICK UP ACTUAL PRIORITY CCC   ;CLEAR CARRY RORB R5  ;SHIFT LOW ORDER BITS RORB R5  ; INTO RORB R5  ; HIGH ORDER RORB R5  ; ? S ORRR;E RRLEMPL+MP T TS TERI WUESS;I O TI,MPC R JS S ESDRADT IS LERDLAN-HRE;P ) SP-(L,MP # V MO C ;W WDHNMPT+LSPH,MSZHDMP # V MO TERI;W NCHFMPT+LSPH,MRTHWMP # V MO NDMAOM CERDLAN;H MDLCMPL+MP RBCL ERILRA-TUT-ODC= E YP TEC;R P TYPL+MPL,M10 # VBMO ES;Y ERVDSR E BN S ORRR;E + P)(S T TS OF ETERI;W K ARPM,TPC R JS CKTA STON IOCTUN FALICOG;L O.OLD: INCB O.SEQ ;SET FLAG TO LATER RESTORE CAD O.OP1: TST O.BW ; RECEIVED O.ERR2: BEQ O.ERR3 ;ERROR IF NOTHING IS OPEN JSR PC,O.CLSE ;CLOSE PRESENT CELL TSTB O.SEQ ;SHOULD CAD BE RESTORED? BEQ O.OP5 ;BRANCH IF NOT MOV O.DOT,O.CAD ;RESTORE PREVIOUS SEQUENCE CLRB O.SEQ ;RESET FLAG; NO LONGER NEEDED O.OP5: ADD O.BW,O.CAD ;GENERATE NEW ADDRESS O.OP2: MOV O.CAD,O.DOT ;INITIALIZE DOT O.OP2A: JSR 5,O.CRLF ; MOV O.BW,-(SP) ;SAVE BW MOS O.R1: MOV O.UIN(R4),@O.ADR1(R4) ;CLEAR BREAKPOINT INC R4 INC R4 CMP R4,#O.BKP BLE O.R1  ;RE-LOOP UNTIL DONE O.R2: RTS R5  ;THEN QUIT ; TYPE OUT CONTENTS OF WORD OR BYTE WITH ONE TRAILING SPACE ; WORD IS IN R0 O.CADV: MOV #6,R3  ;# OF DIGITS MOV #-2,R4  ;# OF BITS FIRST-3 CMP #1,O.BW  ;SEE IF WORD MODE BNE O.SPC  ;BRANCH IF SO SUB #3,R3  ;ONLY DO 3 DIGITS INC R4  ;DO 2 BITS FIRST SWAB R0  ;AND TURN R0 AROU POSITION BISB R5,ST ;PUT THE STATUS AWAY WHERE IT BELONGS O.BK3: MOV O.UPC,R5 ;GET PC, IT POINTS TO THE BPT/T-TRAP TSTB O.S  ;SEE IF IT WAS SINGLE INSTRUCTION FUN BMI O.B4  ;IF SO HANDLE THERE TSTB O.TRC ;TRACE MODE? BNE O.B100 ;YES TST -(R5) MOV R5,O.UPC MOV #O.BKP,R4 ;GET A COUNTER O.B1: CMP R5,O.ADR1(R4) ;COMPARE WITH LIST BEQ O.B2  ;JUMP IF FOUND DEC R4 DEC R4 BGE O.B1  P)(S,-COLDMP # V MO CHTAATE SUIS; 1 AFTT,APC R JS ONTINCFUL CAGILOS AUTTPOUC DET;S P)(S,-COLDMP # V MO D.SELO CTECADIIN. ES;Y TPOUDC R CL RNTURED OO;G ) SP2( R CL RNTUREH US;P P)(S,-P)(S V MO T OUC DSELO;C : 15VDSR ; ; O ;N OKVESRP JM ES;Y FMVESR E JN S?ORRR;E + P)(S T TS T OUC DSELO;C 5 D1RV,SPC R JSV #2,O.BW ;SET TO TYPE FULL WORD ADDRESS MOV O.CAD,R0 ;NUMBER TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV @SP,O.BW ;RESTORE BW CMP #1,(SP)+ ;IS IT BYTE MODE? BEQ O.OP3 ;JUMP IF YES MOV #'/,R0 ;TYPE A / O.OP4: JSR 5,O.FTYP BR O.WRD1 ;GO PROCESS IT O.OP3: MOV #'\,R0 ;TYPE A \ BR O.OP4 ; PROCESS ^, OPEN PREVIOUS WORD O.BACK: TST O.BW ; ^ RECEIVED BEQ O.ERR2 ;ERROR IF NOTHING OPEN JSR PC,O.CLSE SUB O.BW,O.CAD ;GENERATE NEW ADDRESS BR O.OP2 ;GO DO THE REST ; B HANDLER - ND O.SPC: MOV R0,-(SP) ;SAVE R0 O.V0: ADD #3,R4  ;COMPUTE THE NUMBER OF BITS TO DO CLR R0 O.V1: ROL (SP)  ;GET A BIT ROL R0  ;STORE IT AWAY DEC R4  ;DECREMENT COUNTER BGT O.V1  ;LOOP IF MORE BITS NEEDED ADD #'0,R0  ;CONVERT TO ASCII JSR R5,O.FTYP ;TYPE IT DEC R3  ;SEE IF MORE DIGITS TO DO BGT O.V0  ;LOOP IF SO MOVB #' ,R0  ;SET UP FOR TRAILING SPACE TST (SP)+  ;GET RID OF JUNK BR O.FTYP ; ;O.CLRR  CLEAR RELOCATION REGS ;  I;RE-LOOP UNTIL FOUND JSR 5,O.CRLF MOV #O.BD,R4 ;ERROR, NOTHING FOUND MOV #O.BD+1,R3 JSR 5,O.TYPE ;OUTPUT "BE" FOR BAD ENTRY MOV R5,R0 ADD #2,O.UPC ;POP OVER THE ADJUSTMENT ABOVE BR O.B3  ; OR CONTINUE O.B4: MOVB #O.BKP+2,R4 ;SET BREAK POINT HIGH + 1 MOV R5,O.ADR1(R4) ;STORE NEXT PC VALUE FOR TYPE OUT O.B2: MOVB R4,O.P ;ALLOW PROCEED DEC O.CT(R4) BLE O.B5A ;REPEAT COUNT EXHAUSTED! JMP O.C1 O ;N BDVESR E JN H?TCMAS #'E AP;T CTHDMT1+UFTB,MTPOUDC PBCM ; : 10VDSR ; ; 20E YP TRDCORE- D SELO-CPETAT-PUUT-ODC ; ; ; K. OLL AT.XI;E OKVESR P JM ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL CHTADE; 1 AFET,DPC R JS T NC FOG LET;S P)(S,-COLDMP # V MO $:10 TERI WCD;2 15VCSR BR PETYD OREC RET;S P TYPL+MPL,M11 # VBMO SET AND REMOVE BREAKPOINTS O.BKPT: MOV #O.TRTC,R0 ASL R4 ;MULTIPLY NUMBER BY TWO TST R3 BEQ O.REMB ;IF R3 IS ZERO GO REMOVE BREAKPOINT ASR R5 ;GET ONE BIT TO CARRY BCS O.ERR1 ;BADNESS IF ODD ADDRESS ASL R5 ;RESTORE ONE BIT ADD #O.ADR1,R4 TST R2 BNE O.SET1 ;JUMP IF SPECIFIC CELL O.SET: CMP R0,@R4 ;IS THIS CELL FREE? BEQ O.SET1 ;JUMP IF YES CMP R4,#O.BKP+O.ADR1 ;ARE WE AT THE END OF OUR ROPE BHIS O.ERR1 ;YES, THERE IS NOTHING FREE TST (R4)+ ;INCREMENT BY TWO BR O.SE.E., SET THEM TO A HIGH MEM LOC. (-1) ;  R1,R0 CLOBBERED ; O.CLRR: MOV #O.RELT,R1 MOV #-1,R0 MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1) RTS R5 ; .EOT   ;END OF TAPE #3 ; TYPE ONLY ONE CHARACTER (CONTAINED IN R0) O.FTYP: TSTB O.TCSR BPL .-4 MOVB R0,O.TDB O.TYP1: RTS R5 ; GENERAL CHARACTER INPUT ROUTINE -- ODT11X ; CHARACTER INPUT GOES TO R0 O. ;GO DO IT AGAIN O.B5A: MOV #1,O.CT(R4) ;RESET COUNT TO 1 MOV #'B,R0 JSR 5,O.FTYP ;TYPE "B" MOVB O.P,R0  ;CONVERT BREAKPOINT NUMBER TO ASCII ADD #140,R0 ASR R0 JSR 5,O.FTYP MOV #';,R0 JSR 5,O.FTYP ; TYPE MOV #2,O.BW  ; SET WORD MODE MOVB O.P,R4 MOV O.ADR1(R4),R0 ;GET ADDRESS OF BREAK O.B3: JSR 5,O.RORA ; CHECK FORMAT JMP O.DCD  ;GO TO DECODER ; ; TRACE MODE PROCESSING ; O.B100: JSR PC, E.ON DTERI WST 1G:LA;F R0 C IN L TAFA. ES;Y FMVESR E JN ? ORRR;E + P)(S T TS OF ETERI;W K ARPM,TPC R JS CKTA STON IOCTUN FALICOG;L P)(S,-COLDMP # V MO O ;N $ 10 E BN ? TERI WST;1 R0 T TS ; : 20VCSR ; N TEITWRD OREC RERADHE ; ; O ;N G DBRV,SPC R JS ES;Y $ 10 Q BE ? UT OMETI ;R ERPL+MPL,M T O.SET1: CMP R4,#O.BKP+O.ADR1 BHI O.ERR1 ;ERROR IF TOO LARGE MOV R5,@R4 ;SET BREAKPOINT BR O.DCDA ;RETURN O.REMB: TST R2 BEQ O.RALL ;GO REMOVE ALL CMP R4,#O.BKP BHI O.ERR1 ;JUMP IF NUMBER TOO LARGE MOV R0,O.ADR1(R4) ;CLEAR BREAKPOINT CLR O.CT(R4) ;CLEAR COUNT ALSO O.DCDB: BR O.DCDA O.RALL: CLR R4 MOV #O.TRTC,R0 O.RM1: CMP R4,#O.BKP+2 ;ALL DONE? BHI O.DCDA ;JUMP IF YES MOV R0,O.ADR1(R4) ;RESET BKPT MOV #TRT,O.UIN(R4) ;RESET CONTENTS OF TABLE CLR O.CT(R4) ;CLEAR COUNT GET: TSTB O.RCSR  ;WAIT FOR BPL .-4  ; INPUT FROM KBD MOVB O.RDB,R0 ;GET CHARACTER - STRIP OFF PARITY BIC #177600,R0 ;STRIP OFF PARITY FROM CHARACTER CMPB #3,R0 ;IS IT ^C? BEQ O.GET1 ;IF SO, DO NOT ECHO TSTB O.SCRN ;SHOULD WE ECHO ? BNE O.GET2 ;BR IF YES CMPB R0,#012  ;SEE IF A BEQ O.GET1  ;IF SO SAVE THE PAPER O.GET2: JSR 5,O.FTYP ;ECHO CHARACTER BEQ O.GET  ;IGNORE NULLS TSTB O.SCRN  ;SHOULD WE PASS ON SPACES? BNE O.GET1  BLKBUF ; BLANKS TO PRINT BUFFER MOV O.LPC,R3 ; GET PC JSR PC,BIN2OC ; CONVERT TO ASCII OCTAL ADD #8.,R2 ; ADVANCE BUF POINTER 8 PLACES MOV O.UST,R5 ; GET USER PS MOV #2,R0 ; SET TO GET CURRENT MODE O.B105: CLR R4 ; GET MODE ASHC #2,R4 DEC R4 BEQ O.B110 ; SUPERVISOR BPL O.B120 ; USER MOVB #'K,(R2)+IMLTMP # P CM ES;Y FMVESR Q JE ; $:10 L?TAFA. ES;YR ERPL+MPL,MTELMMP # P CM O ;N 20VCSR Q BE S?ORRR ENY;A RRLEMPL+MP T TS TERI WUESS;I O TI,MPC R JS S ESDRADT IS LERDLAN-HRE;P ) SP-(L,MP # V MO TERI WTOT IS LERDLAN HET S ;0 Z,DSPH,MRTHWMP1,UFTB,MT2XI,ESTHLMP NDHAST : 15VCSR D ANMMCOR LENDHAE ATICND;I MDLCMPL+MP RBCL PETYC RES AERADHET-OU TST (R4)+ ;INCREMENT BY TWO BR O.RM1 ; PROCESS O, COMPUTE OFFSET O.OFST: CMP #2,O.BW ;CHECK WORD MODE BNE O.ERR1 ;ERROR IF NOT CORRECT MODE MOV #' ,R0 ;TYPE ONE BLANK JSR 5,O.FTYP ; AS A SEPARATOR TST R3 ;WAS SEMI-COLON TYPED? BEQ O.ERR1 ;NO, CALL IT AN ERROR O.OF2: SUB O.CAD,R5 ;COMPUTE DEC R5 DEC R5 ; 16 BIT OFFSET MOV R5,R0 JSR 5,O.CADV ;NUMBER IN R0 - WORD MODE MOV R5,R0 ASR R0 ;DIVIDE BY TWO BCS O.OF1 ;ERROR IF ODD CMP #-200,R0 ;COMPARE WITH -200 BGT;BR IF YES CMPB #40,R0  ;CHECK FOR SPACES BEQ O.GET  ;IGNORE SPACES O.GET1: RTS R5 ; GENERAL CHARACTER OUTPUT ROUTINE - ODT11X ; ADDRESS OF FIRST BYTE IN R4, ; ADDRESS OF LAST BYTE IN R3, (R3)>(R4) O.TYPE: CMP R3,R4  ;CHECK FOR COMPLETION BLO O.TYP1  ; EXIT WHEN DONE MOVB (R4)+,R0 ;GET A CHARACTER JSR 5,O.FTYP ;TYPE ONE CHARACTER BR O.TYPE  ;LOOP UNTIL DONE ; ;CHECKS FOR ^U. IF PRESENT, ECHOS IT ;GOES TO COMMAND DECODER. STACK GETS INITIALIZED O.CU ; KERNEL BR O.B130 O.B110: MOVB #'S,(R2)+ BR O.B130 O.B120: MOVB #'U,(R2)+ O.B130: SOB R0,O.B105 ; HAVE WE CONVERTED BOTH MODES? INC R2 ; YES, ALLOW SPACE CLR R4 ; GET REGISTER SET ASHC #1,R4 ADD #60,R4 MOVB R4,(R2)+ INC R2 ; ALLOW SPACE CLR R4 ; GET PRIORITY LEVEL ASHC #3,R4 CLR R4 C- DET;S YPLTMPL+MP7, # VBMO TERI WST 1G:LA;F R0 R CL H ACTT;A 1 AFTT,APC R JS NT FOG LET;S P)(S,-COLDMP # V MO /T MALAT;F FMVESR T BG S?ORRR;E + P)(S T TS NGRIE ITWRH IT;W 0 D OR.W E AT-D;J 0 D OR.W $:30 # E AP;T 0 D OR.W $:20 UTTPOUC-;D COLDMP D OR.W E AP TNTOU;M E APNT,MR5 R JS TEDAN IAUL;J$ 30T,JD O.OF1 ;DO NOT TYPE IF OUT OF RANGE CMP #177,R0 ;COMPARE WITH +177 BLT O.OF1 ;DO NOT TYPE IF OUT OF RANGE DEC O.BW ;SET TEMPORARY BYTE MODE JSR 5,O.CADV ;NUMBER IN R0 - BYTE MODE INC O.BW ;RESTORE WORD MODE O.OF1: JMP O.DCD3 ;ALL DONE O.ERR1: JMP O.ERR ;INTERMEDIATE HELP .EOT ;END OF TAPE #2 ; ; SEARCHES - $MSK HAS THE MASK ; $MSK+2 HAS THE FWA ; $MSK+4 HAS THE LWA O.EFF: INC R1 ;SET EFFECTIVE SEARCH BR O.WDS O.WSCH: CLR R1 ;SET WORD SEARCH O.WDS: TST R3 ;CH : CMPB O.RDB,#225 ;IS ^U IN TTY BUFFER BNE O.CU1  ;BR TO RETURN IF NOT MOVB #'^,R0  ;ELSE TYPE IT JSR R5,O.FTYP MOVB #'U,R0 JSR R5,O.FTYP MOV #O.UR0,SP ;INT STACK JMP O.DCD O.CU1: RTS 5 ; ;SUBROUTINE TO LOCATE RELOCATION REGISTER NEAREST BUT STILL ;BELOW THE ADDRESS IN O.CAD. RETURNS WITH THE REGISTER ;NUMBER IN R0, AND WITH THE DISTANCE BETWEEN THE REGISTER ;AND (O.CAD) IN O.XXY ;IF NO GOOD RELOC. REG. FOUND, R0 WILL = -1 O.LO  ASHC #3,R4 ADD #60,R4 MOVB R4,(R2)+ INC R2 CLR R4 ; GET T-BIT ASHC #1,R4 ADD #60,R4 MOVB R4,(R2)+ INC R2 ; ALLOW SPACE MOV #4,R0 O.B150: CLR R4 ; GET N,Z,V AND C FLAGS ASHC #1,R4 ADD #60,R4 MOVB R4,(R2)+ SOB R0,O.B150 ; DONE? TST (R2)+ ; YES, ALLOW 2 SPTH+MF1BUMT V MO N.PE OOR F &LDHO ; 0$,2TPOUDC V MO TOE ONW NET SE. NO ; TPOUDCT,DCTH+MF1BUMT VBMO RDCORED BAE BSTMU. ES;Y BDVESR E BN ? ENOPE AP TUTTPOUC-;D TPOUDC T TS ; : 10VCSR ; ; 21E YP TRDCORE- D NEPE-OPETAT-PUUT-ODC ; ; ; N URET;R OKVESR BR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL E.ICRVSEO--TESAP-TUTNP-IOF#-O T+1; ECK FOR OBJECT FOUND BEQ O.ERR1 ;ERROR IF NO OBJECT MOV #2,O.BW ;SET WORD MODE MOV O.MSK+2,R2 ;SET ORIGIN MOV O.MSK,R4 ;SET MASK COM R4 O.WDS2: CMP R2,O.MSK+4 ; IS THE SEARCH ALL DONE? BHI O.DCDB ; YES MOV @R2,R0 ; GET OBJECT TST R1 ;NO BNE O.EFF1 ;BRANCH IF EFFECTIVE SEARCH MOV R0,-(SP) MOV R5,R3 ;EXCLUSIVE OR BIC R5,R0 ; IS DONE BIC (SP)+,R3 ; IN A VERY BIS R0,R3 ; FANCY MANNER HERE BIC R4,R3 ;AND RESULT WITH MASK O.WDS3: BNE O.WDS4 ;RE-LOOP IF NO MATCH C: CLR R0 MOV #-1,O.XXX  ;INITIALIZE RELOC. REG. INDEX MOV #177777,O.XXY ;INITIALIZE DISTANCE TO A HIGH VALUE O.LOC4: CMP R0,#O.RLR ;ARE WE DONE COMPARING? BHI O.LOC1  ;BRANCH IF DONE CMP O.RELT(R0),O.CAD ;IS CURR. RELOC. BIAS > (O.CAD)? BHI O.LOC2  ;IF SO, BRANCH -- DON'T SUBTRACT, GET NEXT MOV O.CAD,R1 ;OTHERWISE TAKE THE DIFFERENCE SUB O.RELT(R0),R1 ; OF CURR. RELOC. REG. AND O.CAD CMP O.XXY,R1 ;IS THE RESULT THE SMALLEST SO FAR? BHI O.LOC3  ;BRANACES ; ; NOW GET R0-R6 ; MOV # O.UR0,R4 ; GET ADDR OF REG SAVE AREA O.B200: MOV (R4)+,R3 ; GET CONTENTS OF NEXT SAVED REG JSR PC,BIN2OC ; CONVERT TO ASCII & PLACE IN BUFFER ADD #7,R2 ; ADVANCE BUFFER POINTER 7 PLACES CMP R4,#O.USP ; ALL REGISTERS CONVERTED/MOVED BLOS O.B200 ; NO MOV #'T,R0 ; TELL PRINT ROUTINE CALL IS FROM TRACE JSR PC,PRINT APPTIN C IN ITE YP;T T YOTT,MPC R JS SG MPETAT-PUINC--DCEVIER;S P)(S,-23 # V MO IISC ATOT ERNVCO& ; N 3TS2,M60 # SBBI L EL CTO# E AP;T TN23MST,DCTH+MF1BUMT VBMO I CIASO TTEDA JRTVEON;C ,3JD23MST,JDTH+MF1BUMT A1VBCN ; : 10VBSR ; ; 2 2PETYD OREC RD OREC-REDENOPE-AP-TUTNP-IDCE ICRVSE ; ; ; N URET;R OKVESR BR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCT MOV R4,-(SP) ;REGISTERS R2,R4, AND R5 ARE SAFE MOV R1,-(SP) ;SAVE R1 MOV R2,-(SP) ;SAVE R2 MOV R3,-(SP) JSR 5,O.CRLF MOV R2,R0 ;GET READY TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV #'/,R0 ;SLASH TO R0 JSR 5,O.FTYP ;TYPE IT MOV @R2,R0 ;GET CONTENTS JSR 5,O.CADV ; TYPE CONTENT MOV (SP)+,R3 MOV (SP)+,R2 ;RESTORE R2 MOV (SP)+,R1 ;RESTORE R1 MOV (SP)+,R4 ; RESTORE R4 ;HAS CTRL/U BEEN STRUCK? JSR R5,O.CU ;CHECK FOR ^U O.WDS4: TST (R2)+ ;INCREMENT TO NEXT CELL AND BR O.WDCH IF YES (UNSIGNED CONDITIONAL) O.LOC2: TST (R0)+  ;OTHERWISE, BUMP R0 FOR NEXT RELOC. REG. BR O.LOC4  ;LOOP BACK FOR NEXT COMPARISON O.LOC1: MOV O.XXX,R0 ;PUT REG.# IN R0 RTS 5  ;JOB OVER, RETURN O.LOC3: MOV R1,O.XXY ;REMEMBER SMALLEST DIFFERENCE IN O.XXY ASR R0  ;AND ASSOCIATED REGISTER NUMBER MOV R0,O.XXX ; IN O.XXX ASL R0  ;RESTORE R0 TO ORIGINAL VALUE BR O.LOC2  ;GO FO NEXT COMPARISON. ; ; ;SET A SEGMENT OF MEMORY TO A GI ; PRINT A LINE BR O.B220 ; ERROR RETURN CMP O.LPC,O.HI ; HAS RANGE BEEN TRACED? BEQ O.B210 ; YES MOV O.UPC,O.LPC ; SAVE PC FOR NEXT TRACE TRAP JMP O.TBIT ; GO EXIT FOR TRACE OF NEXT INSTR O.B210: JMP O.DCD ; GO TO DECODER O.B220: JMP O.ERR .PAGE ; ; SUBROUTINE BIN2OC - CONVERTS BINARY WORD TO 6 ASCII OCTAL CHARS ; ; ON ENTRY - ; RE R CL DSOREC RTEDA JALICOG LLL AINE AT DET;S E ATJD,SPC R JS RDCOREM RO FTEDAN IAUL JET;G ) SP-(T,JDTH+MF1BUMT V MO ; : 10VASR ; ; 1 1PETYD OREC-RGEANCHE AT DANLIJUE ICRVSE ; ; ; N URET;R PC S RT RSTEISEG RHE TRETOES;R X TOES,RPC R JS ; : OKVESR ; ; L FUSSCEUC SOR FITEX ; ; ; ) SP.(14 C IN ; : B1S2 ; RETURN O.EFF1: CMP R0,R5 ; IS (X)=K? BEQ O.WDS3 ;TYPE IF EQUAL MOV R0,R3 ;(X) TO R3 ADD R2,R3 ;(X)+X INC R3 INC R3 ;(X)+X+2 CMP R3,R5 ;IS (X)+X+2=K? BEQ O.WDS3 ;BRANCH IF EQUAL BIC #177400,R0 ;WIPE OUT EXTRANEOUS BITS MOVB R0,R0 CCC ASL R0 ;MULTIPLY BY TWO INC R0 INC R0 ADD R2,R0 ;ADD PC CMP R0,R5 ;IS THE RESULT A PROPER REL. BRANCH? BR O.WDS3 ; PROCESS G - GO O.GO: TSTB O.SMFD ;WAS ";" TYPED? BEQ O.ERR1 ;BR IF NOT TYPED TSTB IPLFLG VIEN VALUE. (ENTERED VIA R5) ;FIRST WORD OR BYTE ADDRESS IS IN R4, =TO R3 AT EXIT ;LAST WORD OR BYTE ADDRESS IS IN R3 ;BYTE OR WORD VALUE IS IN R0 ;BYTE OR WORD MODE IS SPECIFIED BY O.BW ; O.ST: O.ST2: CMP #1,O.BW  ;IF NOT BYTE MODE, ASSUME WORD BEQ O.ST1  ;BRANCH IF BYTE MODE MOV R0,(R4)+ ;DEPOSIT WORD VALUE, BUMP R4 BY 2 O.ST3: CMP R4,R3  ;ARE WE DONE? BLOS O.ST2  ;BRANCH IF NOT DONE RTS 5  ;OTHERWISE EXIT O.ST1: MOVB R0,(R4)  ;DEPOSIT BYTE VALUE INC R4   R3 CONTAINS WORD TO BE CONVERTED ; R2 POINTS TO NEXT AVAIL POSITION IN PRINT BUFFER ; R0 IS USED AND NOT RESTORED ; ; ON EXIT - ; R2 POINTS TO MOST SIG. DIGIT OF CONVERTED NO. ; BIN2OC: MOV #6,R0 BIN2O1: ADD R0,R2 2$: MOVB R3,-(R2) BICB #370,(R2) BISB #60,(R2) ASR R3 BIC #100000,R3 ASR R3 ASR R3 SOB VESR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL RDCORED BAG LA;F P TYRR,E-1 # V MO ; : BDVESR ; D OREC RAD BOR FITEX ; ; P TYECE YT BTO ; 5$ 0 OL R LC C MTR FOR DEEA HSG M ; $ 05Z,DSPH#M UB S RTVEON CTOS RDWOS AET S ; 5$,0LYAL T OV M E,ITWRO TDSOR=WERADHEG MSS NUMI ; LYAL,THLYP#T UB S ADRES RDWOF O #VESA ; LYAL,TNTHCMPT+LSPH M OV M  ;IS IPL INIT IN PROGRESS? BEQ 2$ ;NO BR 4$ ;RETURN TO IPL 2$: TST R3 ;WAS K; TYPED? BEQ O.ERR1 ; TYPE ? IF NOT MOVB #O.BKP+3,O.P ;CLEAR PROCEED ASR R5 ;CHECK LOW ORDER BIT BCS O.ERR1 ;ERROR IF ODD NUMBER ASL R5 ;RESTORE WORD MOV R5,O.UPC ;SET UP NEW PC 4$: MOVB #O.STM,ST ;SET HIGH PRIORITY JSR 5,O.RSTT ;RESTORE TELETYPE O.TBIT: CLRB O.T ;CLEAR BIS #O.TBT,O.UST ; BOTH T-BIT FLAGS TSTB O.S ;SEE IF WE;BUMP R4 BY 1 BR O.ST3  ;GO TO TEST IF DONE ; CLOSE WORD OR BYTE AND EXIT, ; UPON ENTERING, R2 HAS NUMERIC FLAG, R4 HAS CONTENTS O.CLSE: TST R2  ;IF NO NUMBER WAS TYPED THERE IS BEQ O.CLS1  ;NO CHANGE TO THE OPEN CELL CMP #1,O.BW BEQ O.CLS2  ;JUMP IF BYTE MODE BHI O.CLS1  ;JUMP IF ALREADY CLOSED O.CLS4: MOV R4,@O.CAD ;STORE WORD O.CLS3: BR O.CLS1 O.CLS2: MOVB R4,@O.CAD ;STORE BYTE O.CLS1: RTS PC O.CRLF: MOV #O.CR+1,R3 ;LWA BR O.CRS O R0,2$ RTS PC BIN2O3: MOV #3,R0 BR BIN2O1 .PAGE ; ; SUBROUTINE BLKBUF - BLANKS TO PRINT BUFFER ; ; RETURNS WITH R2 POINTING TO 2ND CHARACTER OF DATA BUFFER ; BLKBUF: MOV #MSGDEN,R2 ; GET END OF BUFFER +1 BLK010: MOVB #40,-(R2) ; INSERT BLANK CMP R2,#MSGDAT+1 ; ALL DONE? BHI BLK010 ; NO RTS PC ; RETURN .PAGE ; ; SUB RNTUREK OAGFL ; P)(S 2 B LR C E YP TET;SP TYPL+MPL,MP)(S 2 B OV M CHTAAT ; F1TAATC, P SR J ONTINCFUG LOT=PUUT ODC ; ) SP-(O,DCPL#M OV M Y TREN ; T:WRCO D ; ; ;0 - N IOISEV R ; ; 66- E AT D ; ; 66- R MEAMGRRO P ; ; NO ; - ; RDCORED BA ; D EBRV S GT B ;R ROERT MALAT FS.YE ; M EFRV S LT B ;? RSROER ;  NEED A T BIT BNE O.GO2 ;IF NOT GO NOW BIC #O.TBT,O.UST ;SET TH T BIT O.GO1: JSR 5,O.RSB ;RESTORE BREAKPOINTS O.GO2: JSR 0,O.RSR ;RESTORE REGISTERS TSTB IPLFLG ;IPL INIT IN PROGRESS? BEQ 2$ ;NO CLRB IPLFLG ;YES, CLEAR IPL FLAG RTS PC ;RETURN TO ODTIPL 2$: MOV O.UST,-(SP) ; AND STATUS MOV O.UPC,-(SP) ; AND PC NOP ; CHANGE TO HALT FOR DEBUGGING MOV O.UST,-(SP) ; MOV IN STATUS FIRST W/O .CRLS: MOV #O.CR+2,R3 ;LWA * O.CRS: MOV #O.CR,R4 ;FWA JSR 5,O.TYPE ;TYPE SOMETHING RTS R5 ;SUBROUTINE O.RORA ;FUNCTION: DECIDE IF AN ADDRESS IS ;TO BE PRINTED IN ABSOLUTE OR IN RELATIVE ;FORM. IF THE FLAG O.FORM=0 THEN PRINT ;IN RELATIVE FORM, OTHERWISE PRINT IN ;ABSOLUTE FORM. ;IF THE ADDRESS IS TO BE PRINTED IN RELATIVE ;FORM, ;THEN THE ADDRESS WILL BE PRINTED OUT ;RELATIVE TO A RELOCATION REGISTER NEAREST ;BUT STILL BELOW THE ADDRESS. IF NO SROUTINE PRINT - PRINT A LINE ON EITHER TTY OR LP ; ; R0 CONTAINS 'D OR 'T FOR CALLS FROM DUMP OR TRACE RESPECTIVELY ; PRINT: CMPB DEVICE,#TTYLOG ; IS IT TTY? BEQ PRT050 ; YES MOVB #012,MSGDAT ; SET 1ST BUF CHAR TO ADVANCE ONE LINE CMPB LNCNT,#MAXLN ; LP, PAGE FULL? BGE PRT040 ; YES, EJECT PAGE INCB LNCNT ; BUMP LINE COUNT PRT020: MOV #IOLIST,-(SP) ; PRINT A LINE EMT )+SP ( ST T ; ; RTOWDCC, P SR J ; TERI WTOE YP TRDCORET SE ; ) SP-(E,YPCT R OV M ; - ;- E NCUEEQ SNGLIAL C ; ;E AP TUTCO DTO7 1OR6 1ESYP TRDCOREE ITWRO T -SEPOUR P ; ;E AP TUTTPOUC- DTOD OREC RTERI W RTOWDC- E AM NAMGRRO P ; ;* * * ; ; RTOWDCL TTSB . GEPA . ;S DTQJ SND E ; ;S YE ; C P TS R : 0$ 2T IPETY ; OTTYMTC, P SR J E AGSSMEG T BIT BIC #O.TBT,(SP) ; SO INTERRUPTS CAN HAPPEN BEFORE MOV (SP)+,ST ; RTT TURNS ON THE T BIT. O.RTIT: RTI ; CHANGED TO RTT WHEN RUNNING ON /45 ; PROCESS P - PROCEED ; ONLY ALLOWED AFTER A BREAKPOINT O.PROC: TSTB O.SMFD ;WAS ";" TYPED? BEQ 2$ ;BR IF NOT TYPED MOVB O.P,R0 TSTB R0 ;CHECK LEGALITY OF PROCEED BLT 2$ ;NOT LEGAL TST R2 ;CHECK FOR ILLEGAL COUNT BEQ 4$ ;LEGAL 2$: JMP O.ERR !UCH ;RELOCATION REGISTER EXIST THEN THE ;ADDRESS WILL BE PRINTED IN ABSOLUTE FORM ;INPUT: THE ADDRESS TO BE PRINTED IS IN R0. ;DATA SAVED: R0 CONTAINING THE ADDRESS TO BE ;PRINTED, AND LOCATION O.CAD CONTAINING ;THE CURRENT ADDRESS WERE SAVED AND RESTORED. ;CALLED: JSR 5,O.RORA O.RORA: CMP #0,O.FORM ;CHECK FORMAT BEQ O.NOTA  ; GO TO O.NOTA IF RELATIVE O.ABS: JSR 5,O.CADV ;PRINT ABSOLUTE ADDRESS RTS R5 O.NOTA: MOV O.CAD,O.TMP1 ;SAVE O.CAD MOV R0,O.TMP2 ;SAVE R0 MOV" LPRNTR PRT025: TST IOERR ; ERROR? BNE PRT030 ; YES, TAKE ERROR RETURN ADD #2,(SP) ; NO, ADJUST FOR NORMAL RETURN PRT030: RTS PC ; RETURN ; ; EJECT PAGE ON LP ; PRT040: MOVB #2,LNCNT ; INITIALIZE LINE COUNT CMP R0,#'D ; DUMP MODE BEQ PRT048 ; YES MOV #TRCHDR,BUFADR ; NO, TRACE MODE PRT045: MOV #IOLIST,-(SP) ; PRINT HEADER EMT INSSMI# Q SE ; P)(S,-#3 OV M ;Q SETL+MSTTL,M#2 DD A I CIASO TLD;O ,4OL03MSQ,SETL+MSTTL M1 BANV C ;Q SETL+MSTTL,M#2 UB S 4 W,3NS0,MEQHSMT1+UFTB M1 BANV C L ALSMO TO. NO ; R ERQJ S LT B S YE ; 0$ 2 EQ B H?TCMA ;EQLSMTT+LSMT1, R MP C +1 ; 1 R NC I #EQ;S 1 ,REQHSMT1+UFTB M OV M NO ; R ERQJ S NE B ? CHAT M'S #RTPA ;P OGTL+MSTTL,MTNHPMT$;JUMP IF ILLEGAL 4$: TST R3 ;WAS COUNT SPECIFIED? BEQ O.PR1 ;NO MOV R5,O.CT(R0) ;YES, PUT AWAY COUNT O.PR1: MOVB #O.STM,ST ;FORCE HIGH PRIORITY JSR 5,O.RSTT ;RESTORE TTY O.C1: CMPB O.P,#O.BKP ;SEE IF A REAL ONE OR A FAKE BGT O.TBIT ;BRANCH IF FAKE TSTB O.S ;SEE IF SINGLE INSTRUCTION MODE BNE O.TBIT ;IF SO EXIT NOW MOVB #O.STM,ST ;SET HIGH PRIORITY INCB O.T ;SET T-BIT FLAG BIS #O.TBT,O.UST ;SET T-BIT BR O.GO2 ; BREAKPOINT HANDLER ROSODT: MOV (SP)+,O.UPC ;PRIORITY% R0,O.CAD ;PREPARE INPUT FOR O.LOC JSR 5,O.LOC  ; FIND BEST N TST R0 ;IF = -1, PRINT IN ABS. BLT O.ABS1 ADD #60,R0  ; CONVERT N TO ANSCII JSR 5,O.FTYP ; TYPE N MOV #',,R0  ; PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA MOV O.BW,-(SP) ; SAVE O.BW MOV #2,O.BW  ;ARTIFICIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;PREPARE INPUT FOR O.CADV JSR 5,O.CADV ;TYPE RELATIVE AMOUNT MOV (SP)+,O.BW ;RESTORE MODE MOV O.TMP1,O.CAD ; RESTORE O.CAD MOV& LPRNTR MOV #IOBUF,BUFADR ; RESOTRE IOBUF ADDR TST IOERR ; ERROR? BNE PRT025 ; YES BR PRT020 ; PRINT 1ST LINE OF DATA PRT048: MOV #DMPHDR,BUFADR ; GET DUMP HDR ADDR BR PRT045 ; ; OUTPUT TO TTY ; PRT050: MOVB #015,MSGDAT ; MAKE 1ST CHAR OF MSG CR MOV #IOLIST,-(SP) ; TYPE A LINE EMT TTYOUT BR PRT025 ; GO TEST FOR ERROR .PA1+UFTB M B MP C NO ; R ERQJ S NE B H?TCMAS #'E AP TS.YE ;N TPTL+MSTTL,MPNHTMT1+UFTB M B MP C K. OTEDA ; 0:A1QJ S RNTURE ; C P TS R ORRR EAGFL ; P)(S 2 NC I NO ; R:ERQJ SS YE ; 0 A1QJ S EQ B ? RDCOREE NGHA CTEDA. NO ; T RCTH+MF1BUMT1,#1 B MP C S YE ; 0 A1QJ S EQ B CHAT MESAT-D;J T JDTL+MSTTL,MDTHJMT1+UFTB M MP C RNTU( IS 7 UPON ENTRY MOV (SP)+,O.UST ;SAVE STATUS AND PC MOVB #O.BKP+3,O.P ;TELL ;P THAT WE CAN CONTINUE O.BK1: JSR 0,O.SVR ;SAVE VARIOUS REGISTERS TSTB O.T ;CHECK FOR T-BIT SET BNE O.TBIT ;JUMP IF SET JSR 5,O.REM ;REMOVE BREAKPOINTS TSTB O.PRI ;CHECK IF PRIORITY BPL O.BK2 ; IS AS SAME AS USER PGM MOVB O.UST,R5 ;PICK UP USER UST IF SO BR O.BK3 O.BK2: MOVB O.PRI,R5 ;OTHERWISE PICK UP ACTUAL PRIORITY CCC ;CLEAR CARRY RORB R5 ;SHIFT LOW ORDER BITS RORB R5 ; INTO RORB R5 ;) O.TMP2,R0 ; RESTORE R0 RTS R5 O.ABS1: MOV O.TMP2,R0 ;RESTORE R0,CAD BEFORE MOV O.TMP1,O.CAD ;TYPING IN ABSOLUTE BR O.ABS ; ; MOD40 PACK - ENTERED WITH JSR PC, PACK00 ; ; INPUT: R0=ADR OF MOD40 WORD (1 WORD) ;  R1=ADR OF ASCII CHARACTERS (3 CHARS) ; ; OUTPUT: R1 POINTS ONE PAST END OF ASCII STRINT ;  THE MOD40 WORD IS FORMED AS ;  N=C1*40^2+C2*40+C3 ; ; R2,R3,R4 ARE CLOBBERED PACK00: PACK01: MOV #-3,R4  ;LOOP CT. CLR R2  ;0 SUM PACK05: MOVB (R1)*GE ; SAVE REGISTERS R0-R6 ; INTERNAL STACK O.SVR: MOV (SP)+,O.XXX ;PICK REGISTER FROM STACK AND SAVE MOV SP,O.USP ;SAVE USER STACK ADDRESS MOV #O.USP,SP ;SET TO INTERNAL STACK MOV R5,-(SP) ;SAVE MOV R4,-(SP) ; REGISTERS MOV R3,-(SP) ;1 MOV R2,-(SP) ; THRU MOV R1,-(SP) ; 5 MOV O.XXX,-(SP) ;PUT SAVED REGISTER ON STACK TST -(SP) RTS R0 ; RESTORE REGISTERS R0-R6 O.RSR: TST (SP)+  ;POP THE EXTRA CELL MOV (SP)+,O.XXX ;GET R0 FROM STREK OTECADIIN ; P)(S 2 LR C CKTA STOINN URET RSHPU ; ) SP-(),SP ( OV M Y TREN ; S:DTQJ S ; ; ;0 - N IOISEV R ; ; 724//212- E AT D ; ; 66- R MEAMGRRO P ; ; ;S YE ; - ; RDCORED BA. NO ; D EBRV S NE B ;? OKL AL ; )+SP ( ST T ; TSJDSQC, P SR J ; - ;- E NCUEEQ SNGLIAL C ; ; ;T ECRRCOS ITEDA, HIGH ORDER RORB R5 ; POSITION O.BK3: BIC #O.TBT,R5 ;CLEAR POSSIBLE T BIT (S/I MODE) MOVB R5,ST ;PUT THE STATUS AWAY WHERE IT BELONGS MOV O.UPC,R5 ;GET PC, IT POINTS TO THE TRT TSTB O.S ;SEE IF IT WAS SINGLE INSTRUCTION FUN BMI O.B4 ;IF SO HANDLE THERE TST -(R5) MOV R5,O.UPC MOV #O.BKP,R4 ;GET A COUNTER O.B1: CMP R5,O.ADR1(R4) ;COMPARE WITH LIST BEQ O.B2 ;JUMP IF FOUND DEC R4 DEC R4 BGE O.B1 ;RE-LOOP UNTIL FOUND JSR 5,O.SVTT ;SAVE TELETYPE STATUS JSR 5,O.CRLF -+,R3  ;GET NEXT ASCII CHAR. CMPB #' ,R3 BEQ PACK02  ;"BLANK" CMPB #'$,R3 BEQ PACK04  ;"$" CMPB R3,#'A BLO PACK03  ;"." OR "0-9" SUB #40,R3  ;"A-1" PACK02: SUB #16,R3 PACK03: SUB #11,R3 PACK04: SUB #11,R3 ; MULT R2 BY 40. ASL R2  ;2*R2 ASL R2  ;4*R2 ASL R2  ;8*R2 MOV R2,-(SP)  ;STACK 8*R2 ASL R2  ;16.*R2 ASL R2  ;32.*R2 ADD (SP)+,R2 ;40.*R2 ; INCLUDE CURRENT CHARACTER ADD R3,R2 INC R4  ;DONE 3 CHA.ACK MOV (SP)+,R1 ;RESTORE MOV (SP)+,R2 ; REGISTERS MOV (SP)+,R3 ; 1 MOV (SP)+,R4 ; THRU MOV (SP)+,R5 ; 5 MOV O.USP,SP ;RESTORE USER STACK MOV O.XXX,-(SP) ;PUT R0 ON USER STACK RTS R0 ; RESTORE BREAKPOINTS 0-7 O.RSB: MOV #O.BKP,R4 ;RESTORE ALL BREAKPOINTS O.RS1: MOV @O.ADR1(R4),O.UIN(R4) ;SAVE CONTENTS MOV O.TRTC,@O.ADR1(R4) ;REPLACE WITH TRAP DEC R4 DEC R4 BGE O.RS1  ;RE-LOOP UNTIL DONE RTS R5  ; THEN QUIT J & ;L IANCUEEQ SIS# E NCUEEQ SFYRIVEO T -SEPOUR P ; ;T ES TTEDAN IAUL/J #CEENQUSE TSJDSQ- E AM NAMGRRO P ; ; ;* * * ; ; TSTDSQL TTSB . GEPA . ;E ATJD SND E ; ; RNTURE ; C P TS R RNTUREP PO ; ) SP,()+SP ( OV M S ERSTGIREE ORSTRE ; OXSTREC, P SR J ; 0:C4JD S XTNEO DE,ON DOT NIF ; 35DCSJ0, R OB S LEAB TXTNET SE ; R1L,OGTL#M DD A 0MOV #O.BD,R4 ;ERROR, NOTHING FOUND MOV #O.BD+1,R3 JSR 5,O.TYPE ;OUTPUT "BE" FOR BAD ENTRY MOV R5,R0 ADD #2,O.UPC ;POP OVER THE ADJUSTMENT ABOVE BR O.B3 ; OR CONTINUE O.B4: MOVB #O.BKP+2,R4 ;SET BREAK POINT HIGH + 1 MOV R5,O.ADR1(R4) ;STORE NEXT PC VALUE FOR TYPE OUT BR O.B2 O.B2: MOVB R4,O.P ;ALLOW PROCEED DEC O.CT(R4) BGT O.C1 ;JUMP IF REPEAT MOV #1,O.CT(R4) ;RESET COUNT TO 1 JSR 5,O.SVTT ;SAVE TELETYPE STATUS, R4 IS SAFE MOV #'B,R0 JSR 5,O.FTYP ;TYPE "B" MOVB O.P,R0 ;1RS? BLT PACK05  ;NO MOV R2,(R0)+ ;YES-STORE MOD40 WORD RTS PC  ;EXIT ; ; MOD40 UNPACK - ENTERED VIA JSR PC,UNPA00 ; ; INPUT: R0=ADR OF MOD40 NUMBER (1 WORD) ;  R1=ADR OF ASCII STRING (3 BYTES) ; ; OUTPUT: R1 POINTS ONE PAST LAST GENERATED CHARACTER ; ; ; IF N IS THE MOD40 NUMBER, THEN ;  N=C1*50 ^ 2+C2*50+C3 ; THUS, N/50^2 IS C1 AND THE REMAINDER IS C2*50+C3 ; THE REMAINDER IS DIVIDED BY 50 TO GET C2 ETC. ; UNPA00: UNPA07: MOV #-3,R5  ;MINOR LOOP COUNT 2 ; REMOVE BREAKPOINTS 0-7 ; IN THE OPPOSITE ORDER OF SETTING O.REM: TSTB O.S  ;SEE IF SINGLE INSTRUCTION IS GOING BNE O.R2  ;EXIT IF SO TSTB O.TRC ;TRACE MODE BNE O.R2 ;YES, EXIT CLR R4  ;REMOVE ALL BREAKPOINTS O.R1: MOV O.UIN(R4),@O.ADR1(R4) ;CLEAR BREAKPOINT INC R4 INC R4 CMP R4,#O.BKP BLE O.R1  ;RE-LOOP UNTIL DONE O.R2: RTS R5  ;THEN QUIT ; TYPE OUT CONTENTS OF TEDAT SE ;) R1T(JDTL,MP)(S4. 1 OV M ; 5:C3JD S S.LEAB TMTG LOF OSEBA ; 1 ,RSTTL#M OV M . NSIOCTUN FALICOG LOF# ; R0F,XLTM#M OV M RSTEISEG RVESA ; X VESAC, P SR J Y TREN ; E:ATJD S ; ;0 - N IOISEV R ; ; 724//212- E AT D ; ; 66- R MEAMGRRO P ; ; - ; TEDASJC, P SR J ;K ACSTO NT ITEDAT SE ; ) SP-(E,ATLD J OV M ; - 4CONVERT BREAKPOINT NUMBER TO ASCII ADD #140,R0 ASR R0 JSR 5,O.FTYP MOV #';,R0 JSR 5,O.FTYP ; TYPE MOV #2,O.BW ; SET WORD MODE MOVB O.P,R4 MOV O.ADR1(R4),R0 ;GET ADDRESS OF BREAK O.B3: JSR 5,O.RORA ; CHECK FORMAT JMP O.DCD ;GO TO DECODER ; SAVE REGISTERS R0-R6 ; INTERNAL STACK O.SVR: MOV (SP)+,O.XXX ;PICK REGISTER FROM STACK AND SAVE MOV SP,O.USP ;SAVE USER STACK ADDRESS MOV #O.USP,SP ;SET TO INTERNAL STACK MOV R5,-(SP) ;SAVE MOV R4,-(SP) ; REGISTERS MOV R3,-(SP) ;15 MOV (R0),R0  ;GET MOD40 WORD MOV #COEFF,R2 ;PTR TO COEFFICIENT TABLE UNPA06: CLR R3  ;0 QUOTIENT ; DIVIDE BY COEFFICIENTS UNPA02: CMP R0,(R2)  ;DONE WITH DIVIDE? BLO UNPA01 ;YES SUB (R2),R0  ;NO-SUBTRACT COEFF. INC R3  ;ADD 1 TO QUOTIENT BR UNPA02 ; DIVIDE DONE. QUOT IN R3, REMAINDER IN R0 ; CONVERT TO AN ASCII CHARACTER UNPA01: TSTB R3 BEQ UNPA03  ;"BLANK" CMPB R3,#33 BEQ UNPA05  ;"$" BGT UNPA04  ;"." OR "0-9" ADD #40,R3  6 WORD OR BYTE WITH ONE TRAILING SPACE ; WORD IS IN R0 O.CADV: MOV #6,R3  ;# OF DIGITS MOV #-2,R4  ;# OF BITS FIRST-3 CMP #1,O.BW  ;SEE IF WORD MODE BNE O.SPC  ;BRANCH IF SO SUB #3,R3  ;ONLY DO 3 DIGITS INC R4  ;DO 2 BITS FIRST SWAB R0  ;AND TURN R0 AROUND O.SPC: MOV R0,-(SP) ;SAVE R0 O.V0: ADD #3,R4  ;COMPUTE THE NUMBER OF BITS TO DO CLR R0 O.V1: ROL (SP)  ;GET A BIT ROL R0  ;STORE IT AWAY DEC R4  ;DECREMENT COUNTER BGT O.V1   ; E-NCUEEQ SNGLIAL C ; ; ESBLTAT MALICOG LLL ATOINE AT DANLIJUA O T -SEPOUR P ; ; TEDAN IAUL JET STEDASJ- E AM NAMGRRO P ; ; ;* * * ; ;E ATJDLSTTSB . GEPA . ;C RERV SND E ; ; ;C P TS R UGEB D ; G:DBRV S ; UGEB D ; ; RDCORED BA ; D EBRV S MP J : 0$ 1 MTL TAFA ; M EFRV S MP J D OREC RAD BS.YE ; 0$ 1 GT B NO ; K EO8 MOV R2,-(SP) ; THRU MOV R1,-(SP) ; 5 MOV O.XXX,-(SP) ;PUT SAVED REGISTER ON STACK TST -(SP) RTS R0 ; RESTORE REGISTERS R0-R6 O.RSR: TST (SP)+ ;POP THE EXTRA CELL MOV (SP)+,O.XXX ;GET R0 FROM STACK MOV (SP)+,R1 ;RESTORE MOV (SP)+,R2 ; REGISTERS MOV (SP)+,R3 ; 1 MOV (SP)+,R4 ; THRU MOV (SP)+,R5 ; 5 MOV O.USP,SP ;RESTORE USER STACK MOV O.XXX,-(SP) ;PUT R0 ON USER STACK RTS R0 ; RESTORE BREAKPOINTS 0-7 O.RSB: MOV #O.BKP,R4 ;RESTORE ALL BREAKPOINTS O.RS1: MOV9;"A-Z" UNPA03: ADD #16,R3 UNPA04: ADD #11,R3 UNPA05: ADD #11,R3 MOVB R3,(R1)+ ;STORE CHARACTER TST (R2)+  ;ADVANCE TO NEXT COEFF. INC R5  ;DONE 3 CHARS? BLT UNPA06  ;NO-DO MORE MOV (SP),R0  ;RESTORE ORIGINAL R0 AND TST (R0)+  ;MOVE TO NEXT WORD RTS PC ; ; COEFFICIENT TABLE ; COEFF: +1600.   ;40. ^ 2 +40.   ;40. ^ 1 +1.   ;40. ^ 0 O.BW: .BYTE 0 ; =0 - ALL CLOSED    ; =1 - BYTE OPEN,    ; =2 - WORD OPEN .EVEN O.CA:;LOOP IF MORE BITS NEEDED ADD #'0,R0  ;CONVERT TO ASCII JSR R5,O.FTYP ;TYPE IT DEC R3  ;SEE IF MORE DIGITS TO DO BGT O.V0  ;LOOP IF SO MOVB #' ,R0  ;SET UP FOR TRAILING SPACE TST (SP)+  ;GET RID OF JUNK BR O.FTYP ; ;O.CLRR  CLEAR RELOCATION REGS ;  I.E., SET THEM TO A HIGH MEM LOC. (-1) ;  R1,R0 CLOBBERED ; O.CLRR: MOV #O.RELT,R1 MOV #-1,R0 MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV RV S EQ J ? RSROER ; )+SP ( ST T D OREC RONTIUATION CUT ODCE ITWR ; RTOWDCC, P SR J PETYC RET SE ; ) SP-(7,#1 OV M RDCORED BA. NO ; D EBRV S NE J E?YP TRDCORET AS LALITINT-PUUT-ODCS WA ; YPCTRE6,#1 MP C ; 0:J1RV S ; ; 17E YP TRDCOREN-IOATNUTION CUTTPOUC DCEVIER S ; STLIA AT;D : F2BUDK ; A AT DSKDI ; ; ; . 25 W LK.B< @O.ADR1(R4),O.UIN(R4) ;SAVE CONTENTS MOV O.TRTC,@O.ADR1(R4) ;REPLACE WITH TRAP DEC R4 DEC R4 BGE O.RS1 ;RE-LOOP UNTIL DONE RTS R5 ; THEN QUIT ; SAVE TELETYPE STATUS O.SVTT: MOVB O.RCSR,O.CSR1 ;SAVE R C/SR MOVB O.TCSR,O.CSR2 ;SAVE T C/SR CLRB O.RCSR ;CLEAR ENABLE AND MAINTENANCE CLRB O.TCSR ; BITS IN BOTH C/SR O.SVT1: TSTB O.TCSR ;LOOP UNTIL READY BIT COMES ON BPL O.SVT1 ;BR IF BIT NOT ON RTS R5 ; RESTORE TELETYPE STATUS O.RSTT: JSR 5,O.CRLF TSTB O.TCSR ;WAIT REA=D: 0   ; CURRENT ADDRESS O.DOT: 0   ; ORIGIN ADDRESS O.XXX: .WORD 0  ;TEMPORARY STORAGE O.XXY: .WORD 0  ;2ND WORD OF TEMPORARY STORAGE ODINIT: .BYTE 0 ;ODT INITIALIZATION FLAG IPLFLG: .BYTE 0 ;WHEN .NE. 0, CALL FOR INIT IS FROM IPL DOSRTN: .BYTE 0 ;0 = CNTL C RETURN TO DOS ALLOWED O.SEQ: .BYTE 0 ;CHANGE SEQUENCE INDICATOR O.WDFG: .BYTE 0  ;SEARCH FLAG = 1 - EFFECTIVE    ; = 0 - WORD O.S: .BYTE 0  ;SINGLE>R0,(R1)+ MOV R0,(R1) RTS R5 ; .EOT   ;END OF TAPE #3 ; TYPE ONLY ONE CHARACTER (CONTAINED IN R0) O.FTYP: MOVB TTY,DEVICE ; TTY LOG. UNIT NO TO IOLIST MOV #1,IOBUF ; SET TO OUTPUT 1 CHAR MOVB R0,MSGDAT ; PUT CHAR IN BUFFER MOV #IOLIST,-(SP) ; MAKE TTYIO OUTPUT REQUEST EMT TTYOUT ; TST IOERR ; ERROR? *** CHECKOUT BNE R DEEA HRDCORET ;M : F2BUMT ; ; ; T UNCOD OR WUMIMAX;M . 2410 W LK.B A.RE ATADAN MOOM;C : B1MTDK : B1DKMT ; 0 0, STDLIO ; : F1BUDK ; R FEUF BSKDI ; ; ; . 25 W LK.B ERADHED OREC R/T;M : F1BUMT ; S ERFFBU ; ; . EDLIPPSUT UNCOD OR WND AIDE IL;F 0 0, STDLIO : LTDTDK ; STLIA AT DSKDI ; @DY BPL .-4 ; ON PRINTER BIT #4000,O.RCSR ;CHECK BUSY FLAG BEQ O.RSE1 ;SKIP READY LOOP IF NOT BUSY TSTB O.RCSR ;WAIT READY BPL .-4 ; ON READER O.RSE1: MOVB O.CSR1,O.RCSR ;RESTORE MOVB O.CSR2,O.TCSR ; THE STATUS REGISTERS RTS R5 ; REMOVE BREAKPOINTS 0-7 ; IN THE OPPOSITE ORDER OF SETTING O.REM: TSTB O.S ;SEE IF SINGLE INSTRUCTION IS GOING BNE O.R2 ;EXIT IF SO CLR R4 ;REMOVE ALL BREAKPOINTS O.R1: MOV O.UIN(R4),@O.ADR1(R4) ;CLEAR BREAKPOINT INC R4 INC R4 CMP R4,#A INSTRUCTION FLAG    ;0 IF NOT ACTIVE    ;-1 IF ACTIVE    ;NO BREAK BOINTS MAY BE SET WHILE IN    ;SINGLE INSTRUCTION MODE O.T: .BYTE 0  ; T-BIT FLAG O.P: .BYTE 0  ;PROCEED FLAG = -2 IF MANUAL ENTRY    ;  -1 IF NO PROCEED ALLOWED    ;  0-7 IF PCEED ALLOWED O.CSR1: .BYTE 0  ;SAVE CELL - R C/SR O.CSR2: .BYTE 0  ;SAVE CELL - T C/SR O.CMFD: .BYTE 0 ;COMMA FOUND SWITCH, =0 NO COMMA FOUND   ;   =1 COMMA FOUND O.SMFD: .BYTE 0 ;SEMICB . ; YES *** CHECKOUT O.TYP1: RTS R5 ; GENERAL CHARACTER INPUT ROUTINE -- ODT11X ; CHARACTER INPUT GOES TO R0 O.GET: MOVB TTY,DEVICE ; TTY LOG. UNIT NO. TO IOLIST MOV #020001,IOBUF ; SET TO INPUT ONE CHARACTER O.GE10: MOV #IOLIST,-(SP) ; MADE TTYIO INPUT REQUEST EMT TTYIN MOV IOERR,R0 ; GET ERROR CODE BEQ O.GE20 ; NONE CMP R0,#28. ; TIMEOUT? ; ; 0 I,PRDK1,SCDI C PAIO ; : LTIODK ; T IS L/O ISKDI ; ; ; S STLIO I/D ANS ERFFBUT /MSKDI ; ; E AG.P N VE.E : EN41MS > 15/<#.E AP TNGRO/W IISC.A : ST41MS 0 D OR.W T 1SS4-MEN41MS D OR.W : 41MSRC ; ; N VE.E : EN40MS 5><1./ 1ONTINCFUL CAGILOT UNMOIS/D IISC.A : ST40MS 0 D OR.W T 0SS4-MEN40MS D OR.W : 40MSRC ; ; N VE.E : EN37MS / -#:DO.BKP BLE O.R1 ;RE-LOOP UNTIL DONE O.R2: RTS R5 ;THEN QUIT ; TYPE OUT CONTENTS OF WORD OR BYTE WITH ONE TRAILING SPACE ; WORD IS IN R0 O.CADV: MOV #6,R3 ;# OF DIGITS MOV #-2,R4 ;# OF BITS FIRST-3 CMP #1,O.BW ;SEE IF WORD MODE BNE O.SPC ;BRANCH IF SO SUB #3,R3 ;ONLY DO 3 DIGITS INC R4 ;DO 2 BITS FIRST SWAB R0 ;AND TURN R0 AROUND O.SPC: MOV R0,-(SP) ;SAVE R0 O.V0: ADD #3,R4 ;COMPUTE THE NUMBER OF BITS TO DO CLR R0 O.V1: ROL (SP) ;GET A BIT ROL R0 ;STORE IT AWAY DEEOLON FOUND SWITCH   ;=0 NO SEMICOLON FOUND   ;=1 SEMICOLON FOUND O.ALF1: .BYTE 0 O.ALF2: .BYTE 0 O.ALF3: .BYTE 0 O.SCRN: .BYTE 0 ;FLAG; 1=PASS SPACES ON FROM TTY   ;ALSO, IF =1, IS ECHOED O.ID: .BYTE 012 .BYTE 015 .BYTE 177 .ASCII /ROSODT/ O.IDND=.-1 .EVEN O.BD: .WORD "BE O.BIAS: .WORD 0 ;CURRENT RELOCATION BIAS O.MINS: .BYTE 0 ;MINUS SIGN TYPED (SWITCH)   ;0=NO MINUS TYPED; 1=MINUS SIGN TYPED .EVEN O.TMP1: .WORD 0 ;SAVE F BEQ O.GE10 ; YES, TRY AGAIN BR . ; O.GE20: MOV IOBUF+2,R0 ; ANY CHARS INPUT BNE O.GE30 ; YES MOVB #015,R0 ; NO, MUST BE CR BR O.GE40 O.GE30: MOVB MSGDAT,R0 ; GET CHAR O.GE40: TSTB O.SCRN  ;SHOULD WE PASS ON SPACES? BNE O.GE50 ;BRANCH IF YES CMPB #40,R0  ;CHECK FOR SPACES BEQ O.GET  ;IGNORE SPACES O.GE50: RTS R5 ; GENERAL CHARACTER OUTPE AP TERNT/E IISC.A : ST37MS 0 D OR.W T 7SS3-MEN37MS D OR.W : 37MSRC ; ; N VE.E : EN36MS 2><15><1./RDCOREN ITADAO /N IISC.A : ST36MS 0 D OR.W T 6SS3-MEN36MS D OR.W : 36MSRC N VE.E ; : EN35MS > 12><15/<1 IISC.A ; : ST35MS ; 0 D OR.W ; T 5SS3-MEN35MS D OR.W: 35MSRC ; ; N VE.E ; HC R4 ;DECREMENT COUNTER BGT O.V1 ;LOOP IF MORE BITS NEEDED ADD #'0,R0 ;CONVERT TO ASCII JSR R5,O.FTYP ;TYPE IT DEC R3 ;SEE IF MORE DIGITS TO DO BGT O.V0 ;LOOP IF SO MOVB #' ,R0 ;SET UP FOR TRAILING SPACE TST (SP)+ ;GET RID OF JUNK BR O.FTYP ; ;O.CLRR CLEAR RELOCATION REGS ; I.E., SET THEM TO A HIGH MEM LOC. (-1) ; R1,R0 CLOBBERED ; O.CLRR: MOV #O.RELT,R1 MOV #-1,R0 MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ ICELL O.TMP2: .WORD 0 ;SAVE CELL O.CR: .BYTE 015 ; .BYTE 012 ; .BYTE '* ; * O.LGCH: .BYTE '; ; .BYTE '/ ; / .BYTE '\ ; \  (BACK SLASH) .BYTE 015 ; CARRIAGE RETURN .BYTE '$ ; $ .BYTE 'G ; G .BYTE O.NEXT ; CHAR TO BE USED TO OPEN NEXT LOCN .BYTE '_ ; _ (BACK ARROW) .BYTE '< ; < .BYTE '^ ; ^ (UP ARROW) .BYTE ', ; , .BYTE 'O ; O .BYTE 'W ; W .BYTE 'E ; E .BYTE 'B ; B .BYTE JUT ROUTINE - ODT11X ; ADDRESS OF FIRST BYTE IN R4, ; ADDRESS OF LAST BYTE IN R3, (R3)>(R4) O.TYPE: CMP R3,R4  ;CHECK FOR COMPLETION BLO O.TYP1  ; EXIT WHEN DONE MOVB (R4)+,R0 ;GET A CHARACTER JSR 5,O.FTYP ;TYPE ONE CHARACTER BR O.TYPE  ;LOOP UNTIL DONE ; ;SUBROUTINE TO LOCATE RELOCATION REGISTER NEAREST BUT STILL ;BELOW THE ADDRESS IN O.CAD. RETURNS WITH THE REGISTER ;NUMBER IN R0, AND WITH THE DISTANCE BETWEEN THE REGISTER : EN34MS > 12><15/<1 IISC.A ; : ST34MS ; 0 D OR.W ; T 4SS3-MEN34MS D OR.W ; : 34MSRC ; ; N VE.E ; : EN33MS 2><15><1./EDOSCL>/15/<3,N IOCTUN FALICOG/L5><1 IISC.A ; : ST33MS ; 0 D OR.W ; T 3SS3-MEN33MS D OR.W ; : 33MSRC ; ; N VE.E ; LMOV R0,(R1) RTS R5 ; .EOT ;END OF TAPE #3 ; TYPE ONLY ONE CHARACTER (CONTAINED IN R0) O.FTYP: TSTB O.TCSR BPL .-4 MOVB R0,O.TDB O.TYP1: RTS R5 ; GENERAL CHARACTER INPUT ROUTINE -- ODT11X ; CHARACTER INPUT GOES TO R0 O.GET: TSTB O.RCSR ;WAIT FOR BPL .-4 ; INPUT FROM KBD MOVB O.RDB,R0 ;GET CHARACTER - STRIP OFF PARITY BIC #177600,R0 ;STRIP OFF PARITY FROM CHARACTER CMPB #3,R0 ;IS IT ^C? BEQ O.GET1 ;IF SO, DO NOT ECHO TSTB O.SCRN ;SHOULD WE ECHO ? BNE O.GET2 ;BRM'P ; P .BYTE '@ ; @ .BYTE '> ; > .BYTE 'S ; S .BYTE 'R ; R .BYTE 'C ; C .BYTE '- ; - .BYTE 'F ; F .BYTE 'I ; I .BYTE '! ; ! .BYTE 'X ; X .BYTE 'A ; A .BYTE 003 ;CTRL C O.CLGT = .-O.LGCH  ;TABLE LENGTH O.TL: .BYTE 'S ;DO  1 .BYTE 'P ;NOT  2 .BYTE 'M ;CHANGE  3 .BYTE 0 ;THE  4 .BYTE 0 ;ORDER  5 .BYTE 'C ; 6 .BYTE 'F ;  7 .BYTE 'R ;  10 .BYTE 0 ; 11 .BYTEN ;AND (O.CAD) IN O.XXY ;IF NO GOOD RELOC. REG. FOUND, R0 WILL = -1 O.LOC: CLR R0 MOV #-1,O.XXX  ;INITIALIZE RELOC. REG. INDEX MOV #177777,O.XXY ;INITIALIZE DISTANCE TO A HIGH VALUE O.LOC4: CMP R0,#O.RLR ;ARE WE DONE COMPARING? BHI O.LOC1  ;BRANCH IF DONE CMP O.RELT(R0),O.CAD ;IS CURR. RELOC. BIAS > (O.CAD)? BHI O.LOC2  ;IF SO, BRANCH -- DON'T SUBTRACT, GET NEXT MOV O.CAD,R1 ;OTHERWISE TAKE THE DIFFERENCE SUB O.RELT(R0),R1 ; OF CURR. RELOC. REG. AND O.CAD CM : EN32MS > 12><15/<1:/RSBEUM NCEOINV/I5><1 IISC.A ; : ST32MS ; 0 D OR.W ; T 2SS3-MEN32MS D OR.W ; : 32MSRC ; ; N VE.E ; : EN31MS > 12><15/ BEQ O.GET1 ;IF SO SAVE THE PAPER O.GET2: JSR 5,O.FTYP ;ECHO CHARACTER BEQ O.GET ;IGNORE NULLS TSTB O.SCRN ;SHOULD WE PASS ON SPACES? BNE O.GET1 ;BR IF YES CMPB #40,R0 ;CHECK FOR SPACES BEQ O.GET ;IGNORE SPACES O.GET1: RTS R5 ; GENERAL CHARACTER OUTPUT ROUTINE - ODT11X ; ADDRESS OF FIRST BYTE IN R4, ; ADDRESS OF LAST BYTE IN R3, (R3)>(R4) O.TYPE: CMP R3,R4 ;CHECK FOR COMPLETION BLO O.TYP1 ; EXIT WHEN DONE MOVB (R4)+,R0 ;GET A CHARACQ 0 ; 12 .BYTE 0 ; 13 .BYTE 0 ; 14 .BYTE 0 ;  15 .BYTE 0 ;  16 .BYTE 0 ;  17 .BYTE 'B ; 20 O.LG = .-O.TL .EVEN O.TRTC: TRT   ;TRACE TRAP PROTOTYPE ;THE ORDER OF THE FOLLOWING ENTRIES IS CRITICAL . = OLDODT-144 ;ODT'S STACK IMMEDIATELY PRECEDES ODT O.UR0: 0 ;USER R0 0 ; R1 0 ; R2 0 ; R3 0 ; R4 0 ; R5 O.USP: 0 ;USER SP O.UPC: 0 ;USER PC RP O.XXY,R1 ;IS THE RESULT THE SMALLEST SO FAR? BHI O.LOC3  ;BRANCH IF YES (UNSIGNED CONDITIONAL) O.LOC2: TST (R0)+  ;OTHERWISE, BUMP R0 FOR NEXT RELOC. REG. BR O.LOC4  ;LOOP BACK FOR NEXT COMPARISON O.LOC1: MOV O.XXX,R0 ;PUT REG.# IN R0 RTS 5  ;JOB OVER, RETURN O.LOC3: MOV R1,O.XXY ;REMEMBER SMALLEST DIFFERENCE IN O.XXY ASR R0  ;AND ASSOCIATED REGISTER NUMBER MOV R0,O.XXX ; IN O.XXX ASL R0  ;RESTORE R0 TO ORIGINAL VALUE BR O.LOC2  ;GO FO NEXT COMPARI 0 0,0, E YT.B: OD31MS =/LD/O5><1:/RSBEUM NALEVRIET/R IISC.A ; : ST31MS ; 0 D OR.W ; T 1SS3-MEN31MS D OR.W ; : 31MSRC ; ; N VE.E ; : EN30MS > 12><15/ 15/<15><1./CEVIER STOS PETAT PUIN/ IISC.A O DTOS PETAT PUINF O;# 0 0, E YT.B ; : TS26MS 5><1 IISC.A ; : ST26MS ; X, AND WITH THE DISTANCE BETWEEN THE REGISTER ;AND (O.CAD) IN O.XXY ;IF NO GOOD RELOC. REG. FOUND, R0 WILL = -1 O.LOC: CLR R0 MOV #-1,O.XXX ;INITIALIZE RELOC. REG. INDEX MOV #177777,O.XXY ;INITIALIZE DISTANCE TO A HIGH VALUE O.LOC4: CMP R0,#O.RLR ;ARE WE DONE COMPARING? BHI O.LOC1 ;BRANCH IF DONE CMP O.RELT(R0),O.CAD ;IS CURR. RELOC. BIAS > (O.CAD)? BHI O.LOC2 ;IF SO, BRANCH -- DON'T SUBTRACT, GET NEXT MOV O.CAD,R1 ;OTHERWISE TAKE THE DIFFERENCE SUB O.RELT(R0),R1 ; OF CURR. RELOC. REG .END OLDODT ;END OF TAPE #4 Z DONE RTS 5  ;OTHERWISE EXIT O.ST1: MOVB R0,(R4)  ;DEPOSIT BYTE VALUE INC R4  ;BUMP R4 BY 1 BR O.ST3  ;GO TO TEST IF DONE ; CLOSE WORD OR BYTE AND EXIT, ; UPON ENTERING, R2 HAS NUMERIC FLAG, R4 HAS CONTENTS O.CLSE: TST R2  ;IF NO NUMBER WAS TYPED THERE IS BEQ O.CLS1  ;NO CHANGE TO THE OPEN CELL CMP #1,O.BW BEQ O.CLS2  ;JUMP IF BYTE MODE BHI O.CLS1  ;JUMP IF ALREADY CLOSED O.CLS4: MOV R4,@O.CAD ;STORE WORD O.CLS3: BR O.CLS1 O.CLS2: MOVB R4 0 D OR.W ; T 6SS2-MEN26MS D OR.W ; : 26MSRC ; ; N VE.E ; : EN25MS > 12><15/<1 IISC.A ; : ST25MS ; 0 D OR.W ; T 5SS2-MEN25MS D OR.W ; : 25MSRC ; ; N VE.E ; : EN24MS > 12><15/<1 IISC.A ; : ST24MS ; \. AND O.CAD CMP O.XXY,R1 ;IS THE RESULT THE SMALLEST SO FAR? BHI O.LOC3 ;BRANCH IF YES (UNSIGNED CONDITIONAL) O.LOC2: TST (R0)+ ;OTHERWISE, BUMP R0 FOR NEXT RELOC. REG. BR O.LOC4 ;LOOP BACK FOR NEXT COMPARISON O.LOC1: MOV O.XXX,R0 ;PUT REG.# IN R0 RTS 5 ;JOB OVER, RETURN O.LOC3: MOV R1,O.XXY ;REMEMBER SMALLEST DIFFERENCE IN O.XXY ASR R0 ;AND ASSOCIATED REGISTER NUMBER MOV R0,O.XXX ; IN O.XXX ASL R0 ;RESTORE R0 TO ORIGINAL VALUE BR O.LOC2 ;GO FO NEXT COMPARISON. ; ; ;SET A S] THE MOVE TO SXT2 OF TERML ID SHOULD BE CODED ; AS SXT2+SXTBL. THE NUMBER OF CHARACTERS TO MOVE IS SXTIDL. ; .PAGE .SBTTL SYD SYSTEM DATA EQUATES ;* * * ; ; SYSTEM DATA EQUATES ; ;* * * ; ; SYDRCY = 0 ; SYSTEM RECOVERY MODE INDICATORS SYDPIT = BIT7 ; OPCON PROCESSING INPUT M/T SYDPS2 = BIT0 ; IN RECOVERY SYDDSK = BIT1 ; DISC START ; ; SYDMTF = ^,@O.CAD ;STORE BYTE O.CLS1: RTS PC ; ; TYPE PROMPTER WHERE N IS THE TASK NO. ; O.CRLS: MOV #O.CRND,R3 ;LWA O.CRS: MOV #O.CR,R4 ;FWA JSR 5,O.TYPE ;TYPE SOMETHING RTS R5 ; ; OUTPUT A CR, LF TO TTY ; O.CRLF: MOV #015,R0 ;OUTPUT JSR R5,O.FTYPE RTS R5 .PAGE ;SUBROUTINE O.RORA ;FUNCTION: DECIDE IF AN ADDRESS IS ;TO BE PRINTED IN ABSOLUTE OR IN RELATIVE ;FORM. IF THE FLAG O.FORM=0 0 D OR.W ; T 4SS2-MEN24MS D OR.W ; : 24MSRC ; ; N VE.E ; : EN23MS > 12><15/<1 IISC.A ; : ST23MS ; 0 D OR.W ; T 3SS2-MEN23MS D OR.W ; : 23MSRC ; ; N VE.E `EGMENT OF MEMORY TO A GIVIEN VALUE. (ENTERED VIA R5) ;FIRST WORD OR BYTE ADDRESS IS IN R4, =TO R3 AT EXIT ;LAST WORD OR BYTE ADDRESS IS IN R3 ;BYTE OR WORD VALUE IS IN R0 ;BYTE OR WORD MODE IS SPECIFIED BY O.BW ; O.ST: O.ST2: CMP #1,O.BW ;IF NOT BYTE MODE, ASSUME WORD BEQ O.ST1 ;BRANCH IF BYTE MODE MOV R0,(R4)+ ;DEPOSIT WORD VALUE, BUMP R4 BY 2 O.ST3: CMP R4,R3 ;ARE WE DONE? BLOS O.ST2 ;BRANCH IF NOT DONE RTS 5 ;OTHERWISE EXIT O.ST1: MOVB R0,(R4) ;DEPOSIT BYTE VALUE INC R4 ;BUMP a 1 ; AUDIT TRAIL FAILURE SYDIDL = 1 ; SYSTEM IDLE FLAG SYDOVL = 1 ; OVERLOAD FAILURE SYDDCF = 2 ; DATA-CENTER APPL PROGRAM FA+LU-E SYDDCL = 2 ; DATA-CENTER COMMUNICATIONS FAILURE SYDOLE = 2 ; SYSTEM OVERLOAD IN EFFECT SYDINH = 3 ; TASK INHIBIT LEVEL SYDRUN = 4 ; PROGRAM RUNNING FLAG SYDRNT = 4 ; SYSTEM RUN TEST FLAGbTHEN PRINT ;IN RELATIVE FORM, OTHERWISE PRINT IN ;ABSOLUTE FORM. ;IF THE ADDRESS IS TO BE PRINTED IN RELATIVE ;FORM, ;THEN THE ADDRESS WILL BE PRINTED OUT ;RELATIVE TO A RELOCATION REGISTER NEAREST ;BUT STILL BELOW THE ADDRESS. IF NO SUCH ;RELOCATION REGISTER EXIST THEN THE ;ADDRESS WILL BE PRINTED IN ABSOLUTE FORM ;INPUT: THE ADDRESS TO BE PRINTED IS IN R0. ;DATA SAVED: R0 CONTAINING THE ADDRESS TO BE ;PRINTED, AND LOCATION O.CAD CONTAINING ;THE CURRENT ADDRESS WERE SAVED AND RESTORED. ;; : EN22MS 2><15><1 IISC.A ; : AIF (NELIT EX NOR FCKBA ; 0 A1FG C MP J RMTTOUC, P SR J SSREDD AEW/N WLLFI ; 1 N0AK P E OV M 3 -7081-;0 $ 2 R B K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR J SSREDD AILMAL IL BHTIGRE FTEDAUP: 27E OD COP ; 0:N0FG C7 2DECOP OL TTSB . GEPA . 3 -7081-;0 dR4 BY 1 BR O.ST3 ;GO TO TEST IF DONE ; CLOSE WORD OR BYTE AND EXIT, ; UPON ENTERING, R2 HAS NUMERIC FLAG, R4 HAS CONTENTS O.CLSE: TST R2 ;IF NO NUMBER WAS TYPED THERE IS BEQ O.CLS1 ;NO CHANGE TO THE OPEN CELL CMP #1,O.BW BEQ O.CLS2 ;JUMP IF BYTE MODE BHI O.CLS1 ;JUMP IF ALREADY CLOSED O.CLS4: MOV R4,@O.CAD ;STORE WORD O.CLS3: BR O.CLS1 O.CLS2: MOVB R4,@O.CAD ;STORE BYTE O.CLS1: RTS PC O.CRLF: MOV #O.CR+1,R3 ;LWA BR O.CRS O.CRLS: MOV #O.CR+2,R3 ;LWA * O.CRS: e SYDQUT = 6 ;QUIESCENCE FLAGS SYDK1 = BIT0 ;QUIESCENT SYDK2 = BIT1 ;QUIESCENT PROCESS IN PROGRESS. SYDSBF = 8. ;SAVE BUFFER ADDR FOR RETENTION SYDRTV = 5 ; SYSTEM RETRIEVAL INDICATOR SYDDCI = 10. ; DATA-CENTER MAG-TAPE CONTROL ; ; 0 = TAPE NOT ASSIGNED ; ; 1 = OUTPUT TAPE ASSIGNED ; fCALLED: JSR 5,O.RORA O.RORA: CMP #0,O.FORM ;CHECK FORMAT BEQ O.NOTA  ; GO TO O.NOTA IF RELATIVE O.ABS: JSR 5,O.CADV ;PRINT ABSOLUTE ADDRESS RTS R5 O.NOTA: MOV O.CAD,O.TMP1 ;SAVE O.CAD MOV R0,O.TMP2 ;SAVE R0 MOV R0,O.CAD ;PREPARE INPUT FOR O.LOC JSR 5,O.LOC  ; FIND BEST N TST R0 ;IF = -1, PRINT IN ABS. BLT O.ABS1 ADD #60,R0  ; CONVERT N TO ANSCII JSR 5,O.FTYP ; TYPE N MOV #',,R0  ; PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA  E ERTHT NO" RM"T ; RR E : 2$ 1 ORRR EONSIERNVCO ; RR E : 0$ 1) NY AIF (NELIT EX NOR FCKBA ; 0 A1FG C MP J UT OCKBA" RM"TE ITWR ; RMTTOUC, P SR J STMDTR1+LGFI1, R B OV M RSTOCADIINW NEH IT WGEMA IM"TR "LLFI ;MZMTTR1+LGFI0, R B OV M $: 8L ILS WAM RAPAT PUINF IAGFLT DST ULFADE ; 1 ,RSTBDHU # OV M $: 6$ 8 LE B #21, R MP C $ 6 EQ B 2)R O(1 AGFLT DSD/ST ; R12,W0MP T hMOV #O.CR,R4 ;FWA JSR 5,O.TYPE ;TYPE SOMETHING RTS R5 ;SUBROUTINE O.RORA ;FUNCTION: DECIDE IF AN ADDRESS IS ;TO BE PRINTED IN ABSOLUTE OR IN RELATIVE ;FORM. IF THE FLAG O.FORM=0 THEN PRINT ;IN RELATIVE FORM, OTHERWISE PRINT IN ;ABSOLUTE FORM. ;IF THE ADDRESS IS TO BE PRINTED IN RELATIVE ;FORM, ;THEN THE ADDRESS WILL BE PRINTED OUT ;RELATIVE TO A RELOCATION REGISTER NEAREST ;BUT STILL BELOW THE ADDRESS. IF NO SUCH ;RELOCATION REGISTER EXIST THEN THE ;ADDRESS WILL BE PRINTED IN ABSOLUTE Fi ; 2 = INPUT TAPE ASSIGNED ; ; 4 = INPUT TAPE PROCESSING IN PROGRESS SYDDST = 11. ; DST INDICATOR ; 0 = STANDARD TIME IN EFFECT ; 1 = DST IN EFFECT SYDCPB = 13. ; CELL POOL BUSY FLAG ; 0 = POOL AVAILABLE ; 1 = POOL IN USE SYDEPB = 14. ; ELEMENT POOL BUSY jMOV O.BW,-(SP) ; SAVE O.BW MOV #2,O.BW  ;ARTIFICIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;PREPARE INPUT FOR O.CADV JSR 5,O.CADV ;TYPE RELATIVE AMOUNT MOV (SP)+,O.BW ;RESTORE MODE MOV O.TMP1,O.CAD ; RESTORE O.CAD MOV O.TMP2,R0 ; RESTORE R0 RTS R5 O.ABS1: MOV O.TMP2,R0 ;RESTORE R0,CAD BEFORE MOV O.TMP1,O.CAD ;TYPING IN ABSOLUTE BR O.ABS ; ; MOD40 PACK - ENTERED WITH JSR PC, PACK00 ; ; INPUT: R0=ADR OF MOD40 WORD (1 WORD) ;  R1=ADR OF ASCII CHARACTE OV M $: 4L GALEILS WAM RAPAT PUINF INEZOT ULFADE ; 0 ,RONBZHU # OV M $: 2$ 4 LE B #50, R MP C $ 2 EQ B ) -5(1Z TM ; R01,W0MP T OV M 3 -7171-;0RYNABIO TRSTOCADIINE ON ZMETIT ERNVCO ; $ 101,M0AK P E OV M 3 -7081-;0 2$ 1 R B K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR J S ORATICND INEZOE IM TTEDAUP: 26E OD-COP ; 0:M0FG C ! !!!!!! ; lORM ;INPUT: THE ADDRESS TO BE PRINTED IS IN R0. ;DATA SAVED: R0 CONTAINING THE ADDRESS TO BE ;PRINTED, AND LOCATION O.CAD CONTAINING ;THE CURRENT ADDRESS WERE SAVED AND RESTORED. ;CALLED: JSR 5,O.RORA O.RORA: CMP #0,O.FORM ;CHECK FORMAT BEQ O.NOTA ; GO TO O.NOTA IF RELATIVE O.ABS: JSR 5,O.CADV ;PRINT ABSOLUTE ADDRESS RTS R5 O.NOTA: MOV O.CAD,O.TMP1 ;SAVE O.CAD MOV R0,O.TMP2 ;SAVE R0 MOV R0,O.CAD ;PREPARE INPUT FOR O.LOC JSR 5,O.LOC ; FIND BEST N TST R0 ;IF = -1, PRINT IN ABS. BmFLAG ; 0 = POOL AVAIL ; 1 = POOL IN USE SYDSGL = 16. ; SINGLE MODE OPERATION ; 1 BYTE SYDDTM = 17. ; DATE/TIME FLAGS (1 BYTE) SYDDTI = BIT0 ; DATE IN SYDTMI = BIT1 ; TIME IN SYDED1 = 18. ; EOD FLAG ; 1 WORD SYDMTD = 20. ; M/T DUMP FLAG (1 BYTE) nRS (3 CHARS) ; ; OUTPUT: R1 POINTS ONE PAST END OF ASCII STRINT ;  THE MOD40 WORD IS FORMED AS ;  N=C1*40^2+C2*40+C3 ; ; R2,R3,R4 ARE CLOBBERED PACK00: PACK01: MOV #-3,R4  ;LOOP CT. CLR R2  ;0 SUM PACK05: MOVB (R1)+,R3  ;GET NEXT ASCII CHAR. CMPB #' ,R3 BEQ PACK02  ;"BLANK" CMPB #'$,R3 BEQ PACK04  ;"$" CMPB R3,#'A BLO PACK03  ;"." OR "0-9" SUB #40,R3  ;"A-1" PACK02: SUB #16,R3 PACK03: SUB #11,R3 PACK04: SUB #11,R3 ; MUL O TGCIR FOD TEENEMPLIMT NO ; R ERPC O MP J LEAB TP"TM "TEDAUP: 25E OD-COP ; 0:L0FG C5 2DECOP OL TTSB . 6 2DECOP OL TTSB . 3 -7192- 0 GEPA . P TOM RAOGPRO TRNTURE ; 0 A1FG C MP J UT OCKBAE BLTAR TEMED TEDAUPE ITWR ; R LW F EFIL F TERI WERFT ACKLOR EACL ;2 CLFF C B LR C TEBYE ISNOR EACL ; ) R2 ( B LR C 2 R NC I : 2$ 2 pLT O.ABS1 ADD #60,R0 ; CONVERT N TO ANSCII JSR 5,O.FTYP ; TYPE N MOV #',,R0 ; PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA MOV O.BW,-(SP) ; SAVE O.BW MOV #2,O.BW ;ARTIFICIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;PREPARE INPUT FOR O.CADV JSR 5,O.CADV ;TYPE RELATIVE AMOUNT MOV (SP)+,O.BW ;RESTORE MODE MOV O.TMP1,O.CAD ; RESTORE O.CAD MOV O.TMP2,R0 ; RESTORE R0 RTS R5 O.ABS1: MOV O.TMP2,R0 ;RESTORE R0,CAD BEFORE MOV O.TMP1,O.CAD ;TYPING IN ABSOLUTE BR O.ABS ; ; MOD40 PAq ; BIT 0 = DUMP DCOUT TAPE ; BIT 1 = DUMP DCIN TAPE SYDL = 100. ; LENGTH OF RESERVED AREA ; SYDF1 = BIT7 ; SEE ABOVE SYDF2 = BIT6 ; SYDF3 = BIT5 ; SYDF4 = BIT4 ; 1=SEND CANCEL TO ALL TERMINALS SYDG1 = BIT0 ; SYDG2 = BIT1 ; SYDG3 = BIT2 ; SYDH1 = BIT0 rT R2 BY 40. ASL R2  ;2*R2 ASL R2  ;4*R2 ASL R2  ;8*R2 MOV R2,-(SP)  ;STACK 8*R2 ASL R2  ;16.*R2 ASL R2  ;32.*R2 ADD (SP)+,R2 ;40.*R2 ; INCLUDE CURRENT CHARACTER ADD R3,R2 INC R4  ;DONE 3 CHARS? BLT PACK05  ;NO MOV R2,(R0)+ ;YES-STORE MOD40 WORD RTS PC  ;EXIT ; ; MOD40 UNPACK - ENTERED VIA JSR PC,UNPA00 ; ; INPUT: R0=ADR OF MOD40 NUMBER (1 WORD) ;  R1=ADR OF ASCII STRING (3 BYTES) ; ; OUTPUT: R1 POINTS ONE PAST LAST GENERGEMA ILLFI ; 2)(R1, R B OV M : 0$ 2T MILIE OVAB# E US ; RR E 0$ 2 LE B N SEXU#M1, R MP C 2$ 2 EQ B #SE UEAAR ; R12,W0MP T OV M 2 R NC I : 8$ 1 GEMA ILLFI ; 2)(R1, R B OV M : 6$ 1 ITIM LVEBO A #ODPR ; RR E 6$ 1 LE B N RDXP#M1, R MP C 8$ 1 EQ B #ODPR ; R13,W0MP T OV M E YT BXTNE ; 2 R NC I : 4$ 1 GEMA ILEAB TLLFI ; 2)(R1, R B OV M : 3$ 1T MILItCK - ENTERED WITH JSR PC, PACK00 ; ; INPUT: R0=ADR OF MOD40 WORD (1 WORD) ; R1=ADR OF ASCII CHARACTERS (3 CHARS) ; ; OUTPUT: R1 POINTS ONE PAST END OF ASCII STRINT ; THE MOD40 WORD IS FORMED AS ; N=C1*40^2+C2*40+C3 ; ; R2,R3,R4 ARE CLOBBERED PACK00: PACK01: MOV #-3,R4 ;LOOP CT. CLR R2 ;0 SUM PACK05: MOVB (R1)+,R3 ;GET NEXT ASCII CHAR. CMPB #' ,R3 BEQ PACK02 ;"BLANK" CMPB #'$,R3 BEQ PACK04 ;"$" CMPB R3,#'A BLO PACK03 ;"." OR "0-9" SUB #40,R3 ;"A-1" PACK02: SUB #16u; SYDH2 = BIT1 ; SYDJ1 = BIT0 ; ; ; SYSTEM VARIABLES ; SYDDEF = 0 ; DEFINE FILE RUN FLAG ; 0 = EINIT CAN RUN ; 1 = EINIT CAN NOT RUN SYDHAM = 1 ; CORE ONLY ROS COPY ; 0 = CORE ONLY ROS NOT ON DISC ; 1 = CORE ONLY ROS ON DISC .PAGE .SBTTL TET TERMvATED CHARACTER ; ; ; IF N IS THE MOD40 NUMBER, THEN ;  N=C1*50 ^ 2+C2*50+C3 ; THUS, N/50^2 IS C1 AND THE REMAINDER IS C2*50+C3 ; THE REMAINDER IS DIVIDED BY 50 TO GET C2 ETC. ; UNPA00: UNPA07: MOV #-3,R5  ;MINOR LOOP COUNT MOV (R0),R0  ;GET MOD40 WORD MOV #COEFF,R2 ;PTR TO COEFFICIENT TABLE UNPA06: CLR R3  ;0 QUOTIENT ; DIVIDE BY COEFFICIENTS UNPA02: CMP R0,(R2)  ;DONE WITH DIVIDE? BLO UNPA01 ;YES SUB (R2),R0  ;NO-SUBTRACT COEFF. INC R3  ;ADD 1 E OVAB# E OBPR ; RR E 3 -7263- 0 H UGROTHT IET.L.. ; 3$ 1 EQ B 3 -7263- 0 . .. #BERO PLTUAEF DHE TIST IIF ; N RBFP#D1, R MP C 3$ 1 LE B N RBXP#M1, R MP C 4$ 1 EQ B # E OBPR ; R15,W0MP T OV M : EDORSTE BOT NLLWIO ER ZIST HA TRSTEMERAPAE RETHG INOWLLFOE THF ONY A ;. RSTEMERAPAT PUINE THH IT WRYNT E'SERET MHE TLLFIO TMETIS IITW NO ; * * * * * * * * * * * * * * * * * * * * * * * * *x,R3 PACK03: SUB #11,R3 PACK04: SUB #11,R3 ; MULT R2 BY 40. ASL R2 ;2*R2 ASL R2 ;4*R2 ASL R2 ;8*R2 MOV R2,-(SP) ;STACK 8*R2 ASL R2 ;16.*R2 ASL R2 ;32.*R2 ADD (SP)+,R2 ;40.*R2 ; INCLUDE CURRENT CHARACTER ADD R3,R2 INC R4 ;DONE 3 CHARS? BLT PACK05 ;NO MOV R2,(R0)+ ;YES-STORE MOD40 WORD RTS PC ;EXIT ; ; MOD40 UNPACK - ENTERED VIA JSR PC,UNPA00 ; ; INPUT: R0=ADR OF MOD40 NUMBER (1 WORD) ; R1=ADR OF ASCII STRING (3 BYTES) ; ; OUTPUT: R1 POINTS ONE PAST LAST GyINAL ERROR TABLE ;* * * ; ; EQUATES FOR TERMINAL ERROR TABLE ; ;* * * ; ; TETECT = 0 ; COUNT OF ERRORS ; 1 BYTE (0-255) ; ; TETMCT = TETECT+1 ; COUNT OF MESSAGE TRANSFERS ATTEMPTED ; ; 1 BYTE (0-255) ; RESET TETECT & TETMCT & TETCNT ; IF ANY = 255 TETCNT = TEzTO QUOTIENT BR UNPA02 ; DIVIDE DONE. QUOT IN R3, REMAINDER IN R0 ; CONVERT TO AN ASCII CHARACTER UNPA01: TSTB R3 BEQ UNPA03  ;"BLANK" CMPB R3,#33 BEQ UNPA05  ;"$" BGT UNPA04  ;"." OR "0-9" ADD #40,R3  ;"A-Z" UNPA03: ADD #16,R3 UNPA04: ADD #11,R3 UNPA05: ADD #11,R3 MOVB R3,(R1)+ ;STORE CHARACTER TST (R2)+  ;ADVANCE TO NEXT COEFF. INC R5  ;DONE 3 CHARS? BLT UNPA06  ;NO-DO MORE MOV (SP),R0  ;RESTORE ORIGINAL R0 AND TST * * * * * * * ;T IZETILUSOAB ; R21, R DD A RYNT E'SERET MISTHO TEXND IESIV G*4 ; 2 R SL A 2 R SL A 3 -7082- 0 L EL CISTHR FOX DEINE ORSTRE ; R21,C-SETR*MRNMTMX # DD A : 2$ 1E ONR HEOTAND EA RGO ; 0$ 1 R B S IA BND AAR PNGTINI-IREY .B.. ; R12,LGFI # OV M ..I. IPETYA R FOE AREPPR ; L3FCCF2, # B OV M RECON ILLCET ECRRCOE THE AV HWE ; 2$ 1 LE B 3 -7082- 0 EXND IOMFRF OFT UNCO ; R2C,|ENERATED CHARACTER ; ; ; IF N IS THE MOD40 NUMBER, THEN ; N=C1*50 ^ 2+C2*50+C3 ; THUS, N/50^2 IS C1 AND THE REMAINDER IS C2*50+C3 ; THE REMAINDER IS DIVIDED BY 50 TO GET C2 ETC. ; UNPA00: UNPA07: MOV #-3,R5 ;MINOR LOOP COUNT MOV (R0),R0 ;GET MOD40 WORD MOV #COEFF,R2 ;PTR TO COEFFICIENT TABLE UNPA06: CLR R3 ;0 QUOTIENT ; DIVIDE BY COEFFICIENTS UNPA02: CMP R0,(R2) ;DONE WITH DIVIDE? BLO UNPA01 ;YES SUB (R2),R0 ;NO-SUBTRACT COEFF. INC R3 ;ADD 1 TO QUOTIENT BR UNPA02 ; DIVIDE}TMCT+1 ; CONNECT COUNT ; 1 BYTE TETL = TETCNT+2 ; LENGTH OF LIST .PAGE .SBTTL THD TERMINAL TRANSMITTED HEADER ;* * * ; ; TERMINAL TRANSMITTED HEADER EQUATES ; ;* * * ; ; ; THDLR1 = 2 ; SEE BELOW THDLRT = RTELID ; THDLS1 = 1 ; THDLST = 1 ; THDLS2 = 1 ; THDLAC = 1 ; THDL~(R0)+  ;MOVE TO NEXT WORD RTS PC ; ; COEFFICIENT TABLE ; COEFF: +1600.   ;40. ^ 2 +40.   ;40. ^ 1 +1.   ;40. ^ 0 O.BW: .BYTE 0 ; =0 - ALL CLOSED    ; =1 - BYTE OPEN,    ; =2 - WORD OPEN .EVEN O.CAD: 0   ; CURRENT ADDRESS O.DOT: 0   ; ORIGIN ADDRESS O.XXX: .WORD 0  ;TEMPORARY STORAGE O.XXY: .WORD 0  ;2ND WORD OF TEMPORARY STORAGE O.LPC: .WORD 0 ;PC OF LAST INSTRUCTION EXECUTED O.SEQ: .BYTE 0 ;CHANGE SEQUENCE INDICATOR SETR*MRNMTMX # UB S LLCE" TR"MA N IADRE ; NTLS F EFIL F : 0$ 13 -7192- 0 E IM TSTIR FOR FITIN ; 6 CLFF C LR C Y NL O IPETY: CKLOE ITWR ; L2FCCF2, # OV M R"MT "IND EA RTOE AREPPRW NO ; L1FCCFR,MT # OV M A RE A IPETYO TERNTOI PITIN ; R11,LGFI # OV M R23, R OV M 0 -8 1X:DEIN ; R31, R DD A 3 ,RRNMTMX # UL M 3 R EC D #OTSP ; R30, R OV M ":TR DONE. QUOT IN R3, REMAINDER IN R0 ; CONVERT TO AN ASCII CHARACTER UNPA01: TSTB R3 BEQ UNPA03 ;"BLANK" CMPB R3,#33 BEQ UNPA05 ;"$" BGT UNPA04 ;"." OR "0-9" ADD #40,R3 ;"A-Z" UNPA03: ADD #16,R3 UNPA04: ADD #11,R3 UNPA05: ADD #11,R3 MOVB R3,(R1)+ ;STORE CHARACTER TST (R2)+ ;ADVANCE TO NEXT COEFF. INC R5 ;DONE 3 CHARS? BLT UNPA06 ;NO-DO MORE MOV (SP),R0 ;RESTORE ORIGINAL R0 AND TST (R0)+ ;MOVE TO NEXT WORD RTS PC ; ; COEFFICIENT TABLE ; COEFF: +1600. ;40. S3 = 1 ; THDLTH = 2 ; THDLTM = 2 ; THDLS4 = 1 ; THDLDA = 3 ; THDLMS = 3 ; THDLR2 = 2 ; ; THDR1 = 0 ; CR/LF THDRTE = THDR1+THDLR1 ; TERMINAL ROUTING CODE THDS1 = THDRTE+THDLRT ; SPACE (040) THDSTS = THDS1+THDLS1 ; PERIPHERAL STATUS ; 0 = BOTH ASR & RO OFF O.WDFG: .BYTE 0  ;SEARCH FLAG = 1 - EFFECTIVE    ; = 0 - WORD O.S: .BYTE 0  ;SINGLE INSTRUCTION FLAG    ;0 IF NOT ACTIVE    ;-1 IF ACTIVE    ;NO BREAK BOINTS MAY BE SET WHILE IN    ;SINGLE INSTRUCTION MODE O.TRC: .BYTE 0 ;TRACE MODE, 0 = NON-TRACE O.T: .BYTE 0  ; T-BIT FLAG O.P: .BYTE 0  ;PROCEED FLAG = -2 IF MANUAL ENTRY    ;  -1 IF NO PROCEED ALLOWED    ;  0-7 IF PCEED ALLOWED O.CSR1: .BYTE 0  ;SAVE CEL"MO NT IEXND INDFI, EDCKHE CENBEE AV H #OTSPD AN# R TEMET HA TOW N ;$ 6 GT B N TRXM#M1, R MP C $: 8D LIVAIN# R TEME ; RR E $: 6$ 8 NE B #R TEME ; R14,W0MP T OV M $ 2 GT B N PTXS#M0, R MP C $: 4S ITIM LDESIUT O #OTSP ; RR E $: 2$ 4 NE B #OTSP ; R01,W0MP T OV M 3 -7171-;0 RYNABIO TMSRAPAT PUINL ALT ERNVCO ; 2$1,K0AK P E OV M E BLTAR TEMEE ATPD U4: 2DECOP-;O 0:K0FG C 4 2DECOP OL ^ 2 +40. ;40. ^ 1 +1. ;40. ^ 0 O.BW: .BYTE 0 ; =0 - ALL CLOSED ; =1 - BYTE OPEN, ; =2 - WORD OPEN .EVEN O.CAD: 0 ; CURRENT ADDRESS O.DOT: 0 ; ORIGIN ADDRESS O.XXX: .WORD 0 ;TEMPORARY STORAGE O.XXY: .WORD 0 ;2ND WORD OF TEMPORARY STORAGE ODINIT: .BYTE 0 ;ODT INITIALIZATION FLAG IPLFLG: .BYTE 0 ;WHEN .NE. 0, CALL FOR INIT IS FROM IPL DOSRTN: .BYTE 0 ;0 = CNTL C RETURN TO DOS ALLOWED O.SEQ: .BYTE 0 ;CHANGE SEQUENCE INDICATOR ; 1 = ASR ON ; 2 = RO ON ; 3 = BOTH ASR & RO ON THDS2 = THDSTS+THDLST ; SPACE THDACT = THDS2+THDLS2 ; ACTION CODE ; 0 = NULL MESSAGE ; 1 = AUTO TRANSACTION ; 2 = MANUAL ENTRY ; 4 = FACILITY ENTRY ; 8 = AUDITL - R C/SR O.CSR2: .BYTE 0  ;SAVE CELL - T C/SR O.CMFD: .BYTE 0 ;COMMA FOUND SWITCH, =0 NO COMMA FOUND   ;   =1 COMMA FOUND O.SMFD: .BYTE 0 ;SEMICOLON FOUND SWITCH   ;=0 NO SEMICOLON FOUND   ;=1 SEMICOLON FOUND O.ALF1: .BYTE 0 O.ALF2: .BYTE 0 O.ALF3: .BYTE 0 O.SCRN: .BYTE 0 ;FLAG; 1=PASS SPACES ON FROM TTY   ;ALSO, IF =1, IS ECHOED O.ID: .BYTE 015 .ASCII /DEBUG / O.IDT: .BYTE 0,0,0 ;TASK NO. .BYTE 015 O.TTSB . GEPA . ITEX& H ACTT AM,OR F ; 0 C3FG C MP J 3 -7081-;0 S"RMFO "LEIPLPMUT ENEVPR ; FGSTTL1, # B OV M 2 J0AK P E OV M E.IM T &TEDAD RETO SHE TND A ; E,BLTA" RM"TE TH, NELIT PUINE THM RO FFOINI CIASG INUS, GESAES M ; O"LIFON PE"OE THF OONETELSKN -IEDLLFIW/A RE ASG MUTTPOUD OA LOW N ;N IORSVEON COR F #SG MSTLAF ODRAD ; 2SKJPA1, ; - ;- E NCUEEQ SNGLIAL C ; ;K AR MPETAA E ITWRO T -SEPOUR O.WDFG: .BYTE 0 ;SEARCH FLAG = 1 - EFFECTIVE ; = 0 - WORD O.S: .BYTE 0 ;SINGLE INSTRUCTION FLAG ;0 IF NOT ACTIVE ;-1 IF ACTIVE ;NO BREAK BOINTS MAY BE SET WHILE IN ;SINGLE INSTRUCTION MODE O.T: .BYTE 0 ; T-BIT FLAG O.P: .BYTE 0 ;PROCEED FLAG = -2 IF MANUAL ENTRY ; -1 IF NO PROCEED ALLOWED ; 0-7 IF PCEED ALLOWED O.CSR1: .BYTE 0 ;SAVE CELL - R C/SR O.CSR2: .BYTE 0 ;SAVE CELL - T C/SR O.CMFD: .BYTE 0 ;COMMA FOUND SWITCH, =0 NO COMMA FOUND ;  ENTRY THDS3 = THDACT+THDLAC ; SPACE THDTIM = THDS3+THDLS3 ; TIME THDTH = THDTIM ; HOUR THDTM = THDTH+THDLTH ; MINUTE THDS4 = THDTM+THDLTM ; SPACE THDDAT = THDS4+THDLS4 ; JULIAN DAY (1-366) THDMSN = THDDAT+THDLDA ; MESSAGE SEQ NO. (1-999) THDR2 = THDMSN+THDLMS ; CR/LF THDL = THDR2+THDLR2 ; LENGTH OF LIST ; ;* * * ; ; THE TERMINAL DESCRIPTOR IS PART OF THE TERMIIDND = .-1 .EVEN TRCHDR: .WORD 72.,0 .BYTE 014 .ASCII /PC CP R L T NZVC R0 R1 R2 R3 R4/ .ASCII / R5 SP / .BYTE 012 .EVEN DMPHDR: .WORD 64.,0 .BYTE 014 .ASCII /LOCN CONTENTS/ .ASCII / / .BYTE 012 .EVEN O.BD: .WORD "BE O.BIAS: .WORD 0 ;CURRENT RELOCATION BIAS O.MINS: .BYTE 0 ;MINUS SIGN TY P ; ; RKMATP- E AM NAMGRRO P ; ; * * * ; ; RKMATPL TTSB . GEPA . ENEV . F F 7 17 26 1 ; 77 3 TEBY . 7E 76 1 26 1 ; 17 1 TEBY . 7D 75 1 25 1 ; 20 3 TEBY . 7C 74 1 24 1 ; 52 1 TEBY . 7B 73 1 23 1 ; 00 3 TEBY . 7A 72 1 22 1 ; 51 2 TEBY . 79 71 1 21 1 ; 50 2 TEBY . } =1 COMMA FOUND O.SMFD: .BYTE 0 ;SEMICOLON FOUND SWITCH ;=0 NO SEMICOLON FOUND ;=1 SEMICOLON FOUND O.ALF1: .BYTE 0 O.ALF2: .BYTE 0 O.ALF3: .BYTE 0 O.SCRN: .BYTE 0 ;FLAG; 1=PASS SPACES ON FROM TTY ;ALSO, IF =1, IS ECHOED O.ID: .BYTE 012 .BYTE 015 .BYTE 177 .ASCII /ROSODT/ O.IDND=.-1 .EVEN O.BD: .WORD "BE O.BIAS: .WORD 0 ;CURRENT RELOCATION BIAS O.MINS: .BYTE 0 ;MINUS SIGN TYPED (SWITCH) ;0=NO MINUS TYPED; 1=MINUS SIGN TYPED .EVEN O.TMP1: .WORD 0 ;SNAL PERSONALITY ; TABLE. CONTAINS INFORMATION ABOUT THE TERMINAL AND DOCUMENT ; PREPERATION. ; ; ; TERMINAL DATA ; TRMID = 0 ; TERMINAL ID ; ; 7 DIGITS TRMDST = 8. ; DAYLIGHT SAVINGS INDICATOR ; ; 1 BYTE ; ; 1 = DAYLIGHT SAVINGS TIME ; ; 2 = NOT DST ; ; PED (SWITCH)   ;0=NO MINUS TYPED; 1=MINUS SIGN TYPED .EVEN O.TMP1: .WORD 0 ;SAVE CELL O.TMP2: .WORD 0 ;SAVE CELL O.CR: O.CRN: .BYTE 0,0,0 .BYTE '* ; * O.CRND = .-1 O.LGCH: .BYTE '; ; .BYTE '/ ; / .BYTE '\ ; \  (BACK SLASH) .BYTE 015 ; CARRIAGE RETURN .BYTE '$ ; $ .BYTE 'G ; G .BYTE O.NEXT ; SYMBOL USED TO OPEN NEXT LOCN .BYTE '_ ; _ (BACK ARROW) .BYTE '< ; < .BYTE '^ ; ^ (UP ARROW) .BYTE ' 78 70 1 20 1 ; 47 2 TEBY . 77 67 1 19 1 ; 42 2 TEBY . 76 66 1 18 1 ; 45 2 TEBY . 75 65 1 17 1 ; 44 2 TEBY . 74 64 1 16 1 ; 43 2 TEBY . 73 63 1 15 1 ; 42 2 TEBY . 72 62 1 14 1 ; 31 2 TEBY . 71 61 1 13 1 ; 30 2 TEBY . 70 60 1 12 1 ; 27 2 TEBY . 6FyAVE CELL O.TMP2: .WORD 0 ;SAVE CELL O.CR: .BYTE 015 ; .BYTE 012 ; .BYTE '* ; * O.LGCH: .BYTE '; ; .BYTE '/ ; / .BYTE '\ ; \ (BACK SLASH) .BYTE 015 ; CARRIAGE RETURN .BYTE '$ ; $ .BYTE 'G ; G .BYTE O.NEXT ; CHAR TO BE USED TO OPEN NEXT LOCN .BYTE '_ ; _ (BACK ARROW) .BYTE '< ; < .BYTE '^ ; ^ (UP ARROW) .BYTE ', ; , .BYTE 'O ; O .BYTE 'W ; W .BYTE 'E ; E .BYTE 'B ; B .BYTE 'P ; P .BYTE '@ ; @ .BYTE '> ; > .BYTE 'S ; S TRMEDY = 9. ; YEAR FOR EOD & EOM TRANSACTION ; ; 1 BYTE (1-99) TRMNFN = 10. ; "NEW FOLIO NUMBER" IN "TRM" ; ; TRMNT = 11. ; NOT USED TRMCPX = 12. ; NUMBER OF 1440 CENTER ; ; 1 BYTE (1-11) ; ; TRMTMZ = 13. ; TIME ZONE ; ; 1 BYTE, ; , .BYTE 'O ; O .BYTE 'W ; W .BYTE 'E ; E .BYTE 'B ; B .BYTE 'P ; P .BYTE '@ ; @ .BYTE '> ; > .BYTE 'S ; S .BYTE 'R ; R .BYTE 'C ; C .BYTE '- ; - .BYTE 'F ; F .BYTE 'I ; I .BYTE '! ; ! .BYTE 'X ; X .BYTE 'A ; A .BYTE 'D ; D .BYTE 'T ; T O.CLGT = .-O.LGCH  ;TABLE LENGTH O.TL: .BYTE 'S ;DO  1 .BYTE 'P ;NOT  2 .BYTE 'M ;CHANGE  3 .BYTE 0 ;THE  57 1 11 1 ; 26 2 TEBY . 6E 56 1 10 1 ; 25 2 TEBY . 6D 55 1 09 1 ; 24 2 TEBY . 6C 54 1 08 1 ; 23 2 TEBY . 6B 53 1 07 1 ; 22 2 TEBY . 6A 52 1 06 1 ; 21 2 TEBY . 69 51 1 05 1 ; 11 2 TEBY . 68 50 1 04 1 ; 10 2 TEBY . 67 47 1 03 1 ; 07 2 TEBY . 66 u .BYTE 'R ; R .BYTE 'C ; C .BYTE '- ; - .BYTE 'F ; F .BYTE 'I ; I .BYTE '! ; ! .BYTE 'X ; X .BYTE 'A ; A .BYTE 003 ;CTRL C O.CLGT = .-O.LGCH ;TABLE LENGTH O.TL: .BYTE 'S ;DO 1 .BYTE 'P ;NOT 2 .BYTE 'M ;CHANGE 3 .BYTE 0 ;THE 4 .BYTE 0 ;ORDER 5 .BYTE 'C ; 6 .BYTE 'F ; 7 .BYTE 'R ; 10 .BYTE 0 ; 11 .BYTE 0 ; 12 .BYTE 0 ; 13 .BYTE 0 ; 14 .BYTE 0 ; 15 .BYTE 0 ; 16 .BYTE 0 ; 17 .BYTE 'B ; 20 O ; ; 1 = PACIFIC ; ; 2 = MOUNTAIN ; ; 3 = CENTRAL ; ; 4 = EASTERN ; 5 = ATLANTIC ; ; TRMEOD = 14. ; TIME FOR EOD ; ; 2 BYTES (0:15-23:45) ; ; TRMDLY = 16. ; NOT USED TRMEOM =  4 .BYTE 0 ;ORDER  5 .BYTE 'D ; .BYTE 'T ; .BYTE 'C ; 6 .BYTE 'F ;  7 .BYTE 'R ;  10 .BYTE 0 ; 11 .BYTE 0 ; 12 .BYTE 0 ; 13 .BYTE 0 ; 14 .BYTE 0 ;  15 .BYTE 0 ;  16 .BYTE 0 ;  17 .BYTE 'B ; 20 O.LG = .-O.TL .BOUND IOLIST: .WORD 1 ;THREAD WORD DEVICE: .BYTE 0 ;LOGICAL UNIT NO. .BYTE 2 ;EXIT T46 1 02 1 ; 06 2 TEBY . 65 45 1 01 1 ; 05 2 TEBY . 64 44 1 00 1 ; 04 2 TEBY . 63 43 1 99 ; 03 2 TEBY . 62 42 1 98 ; 02 2 TEBY . 61 41 1 97 ; 01 2 TEBY . 60 40 1 96 ; 71 1 TEBY . 5F 37 1 95 ; 55 1 TEBY . 5E 36 1 94 ; 37 1 TEBY . 5D 35 1 q.LG = .-O.TL .EVEN O.TRTC: TRT ;TRACE TRAP PROTOTYPE ;THE ORDER OF THE FOLLOWING ENTRIES IS CRITICAL . = OLDODT-144 ;ODT'S STACK IMMEDIATELY PRECEDES ODT O.UR0: 0 ;USER R0 0 ; R1 0 ; R2 0 ; R3 0 ; R4 0 ; R5 O.USP: 0 ;USER SP O.UPC: 0 ;USER PC O.UST: 0 ;USER ST O.PRI: 7 ;ODT PRIORITY O.MSK: 0 ;MASK O.LOW: 0 ;LOW LIMIT O.HI: 0 ;HIGH LIMIT O.CNST: 0 ;CONSTANT REGISTER O.FORM: 0 ; FORMAT REGISTER ; IF $F=0 RELATIVE ADDRESSING ;  17. ; DAY FOR EOM TRANSACTION ; ; 1 BYTE ; ; 1 = FIRST DAY OF MONTH ; ; 2 = LAST DAY OF MONTH TRMFLN = 20. ; FOLIO NUMBER ; ; 1 BYTE (1-31) ; ; TRMBFL = 21. ; NOT USED TRMEDM = 22. ; DAY FOR NEXT EOD ; ; 1 WORD (1YPE .WORD 0 .BYTE 0,0 ;ERROR TASK, PRIORITY IOERR: .WORD 0,0 ;ERROR PARAMETER BUFADR: .WORD IOBUF ;BUFFER ADDRESS .WORD 0,0 IOBUF: .WORD 0 ;NO. OF CHARS .WORD 0 ;NO. OF CHARS INPUT (TTYIN ONLY) MSGDAT: .BLKB 72. ;MSG DATA AREA MSGDEN: ;MSG DATA AREA END TTY: .BYTE TTYLOG ;LOGICAL TTY UNIT NO. LP: .BYTE LPLOG ;LOGI 93 ; 15 1 TEBY . 5C 34 1 92 ; 40 3 TEBY . 5B 33 1 91 ; 35 1 TEBY . 5A 32 1 90 ; 51 3 TEBY . 59 31 1 89 ; 50 3 TEBY . 58 30 1 88 ; 47 3 TEBY . 57 27 1 87 ; 46 3 TEBY . 56 26 1 86 ; 45 3 TEBY . 55 25 1 85 ; 44 3 TEBY . 54 24 1 84 mABSOLUTE OTHERWISE ;RELOCATION REGISTERS O.RELT: -1,-1,-1,-1,-1,-1,-1,-1 ;INITIALLY SET TO A HIGH ADDR. ; BREAK POINT LISTS, ADR1 = ADDRESS OF BREAKPOINT,CT = COUNT, ; UIN = CONTENTS O.ADR1: . = .+O.BKP+4 O.CT: . = .+O.BKP+4 O.UIN: . = .+O.BKP+4 . = O.TRTC+2 .END OLDODT ;END OF TAPE #4 -366) ; BNE 8$ 6$: ERR ;METER # INVALID 8$: CMP R1,#MXMTRN BGT 6$ ; NOW THAT METER # AND SPOT # HAVE BEEN CHECKED, FIND INDEX INTO "MTR": MOV R0,R3 ;SPOT # DEC R3 MUL #MXMTRN,R3 ADD R1,R3 ;INDEX: 1-80 MOV R3,R2 MOV #FILG1,R1 ;INIT POINTER TO TYPE I AREA MOV #MTR,CFFCL1 ;NOW PREPARE TO READ IN "MTR" MOV #2,CFCAL LP UNIT NO. LNCNT: .BYTE 0 ;LINE COUNT FOR PAGE CONTROL .EVEN O.TRTC: BPT ;BREAKPOINT TRAP INSTRUCTION ;THE ORDER OF THE FOLLOWING ENTRIES IS CRITICAL . = DEBUG-150 ;ODT'S STACK IMMEDIATELY PRECEDES ODT O.UR0: 0 ;USER R0 0 ; R1 0 ; R2 0 ; R3 0 ; R4 0 ; R5 O.USP: 0 ;USER SP O.UPC: 0 ;USER PC O.UST: 0 ;USER ST O.PRI: 377 ;ODT PRIORITY (DEFAULT - SAME AS ; 43 3 TEBY . 53 23 1 83 ; 42 3 TEBY . 52 22 1 82 ; 31 3 TEBY . 51 21 1 81 ; 30 3 TEBY . 50 20 1 80 ; 27 3 TEBY . 4F 17 1 79 ; 26 3 TEBY . 4E 16 1 78 ; 25 3 TEBY . 4D 15 1 77 ; 24 3 TEBY . 4C 14 1 76 ; 23 3 TEBY . 4B 13 1 75 ; i 3A 72 58 ; 72 1 TEBY . 39 71 57 ES;Y ERVDSR Q BE ? ALAT;FR ERPL+MPL,MTELMMP # P CM O ;N 20VDSR Q BE ? S ORRR;E RRLEMPL+MP T TS TERI WUESS;I O TI,MPC R JS S ESDRADT IS LERDLAN-HRE;P ) SP-(L,MP # V MO C ;W WDHNMPT+LSPH,MSZHDMP # V MO TERI;W NCHFMPT+LSPH,MRTHWMP # V MO NDMAOM CERDLAN;H MDLCMPL+MP RBCL ERILRAhFCL2 ;WRITE LOCK: TYPE I ONLY CLR CFFCL6 ;INIT FOR FIRST TIME 02-19-73 10$: FILEF FLSNT ;READ IN A "MTR" CELL SUB #MXMTRN*MTRSEC,R2 ;COUNT OFF FROM INDEX 02-08-73 BLE 12$ ;WE HAVE THE CORRECT CELL IN CORE MOVB #2,CFFCL3 ;PREPARE FOR A TYPE II... MOV #FILG2,R1 ;...BY RE-INITING PAR AND BIAS BR 10$ ;GO READ ANOTHER ONE 12$: ADD #MXMTRNUSER) O.MSK: 0 ;MASK O.LOW: 0 ;LOW LIMIT O.HI: 0 ;HIGH LIMIT O.DDEV: LPLOG ;DUMP LOGICAL DEVICE (DEFAULT LP) O.TDEV: LPLOG ;TRACE LOGICAL DEVICE (DEFAULT LP) O.CNST: 0 ;CONSTANT REGISTER O.FORM: 0 ; FORMAT REGISTER  ; IF $F=0 RELATIVE ADDRESSING  ; ABSOLUTE OTHERWISE ;RELOCATION REGISTERS O.RELT: -1,-1,-1,-1,-1,-1,-1,-1 ;INITIALLY SET TO A HIGH ADDR. ; BREAK POINT LISTS, ADR1 = ADDRESS OF BREAKPOINT,CT = COUNT, ; UIN = CONTENTS O.ADR1:  . = .+O.BKP+4 O.CT: 22 3 TEBY . 4A 12 1 74 ; 21 3 TEBY . 49 11 1 73 ; 11 3 TEBY . 48 10 1 72 ; 10 3 TEBY . 47 07 1 71 ; 07 3 TEBY . 46 06 1 70 ; 06 3 TEBY . 45 05 1 69 ; 05 3 TEBY . 44 04 1 68 ; 04 3 TEBY . 43 03 1 67 ; 03 3 TEBY . 42 02 1 66 ; e-TUT-ODC= E YP TEC;R P TYPL+MPL,M10 # VBMO ES;Y ERVDSR E BN S ORRR;E + P)(S T TS OF ETERI;W K ARPM,TPC R JS CKTA STON IOCTUN FALICOG;L P)(S,-COLDMP # V MO CHTAATE SUIS; 1 AFTT,APC R JS ONTINCFUL CAGILOS AUTTPOUC DET;S P)(S,-COLDMP # V MO D.SELO CTECADIIN. ES;Y TPOUDC R CL RNTURED OO;G ) SP2( R CL RNTUREH US;P P)(S,-P)(S V MO T OUC Dd*MTRSEC-1,R2 ;RESTORE INDEX FOR THIS CELL 02-08-73 ASL R2 ASL R2 ;*4 GIVES INDEX TO THIS METER'S ENTRY ADD R1,R2 ;ABSOLUTIZE IT ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;NOW IT IS TIME TO FILL THE METER'S ENTRY WITH THE INPUT PARAMETERS. ; ANY OF THE FOLLOWING THREE PARAMETERS THAT IS ZERO WILL NOT BE STORED: MOV TMPW05,R1 ;PROBE # BEQ 14$ CMP R1,#MXPRBN BLE  . = .+O.BKP+4 O.UIN:  . = .+O.BKP+4 . = O.TRTC+2 .END DEBUG ;END OF TAPE #4 02 3 TEBY . 41 01 1 65 ; 01 3 TEBY . 40 00 1 64 ; 74 1 TEBY . 3F 77 63 ; 57 1 TEBY . 3E 76 62 ; 56 1 TEBY . 3D 75 61 ; 76 1 TEBY . 3C 74 60 ; 14 1 TEBY . 3B 73 59 ; 36 1 TEBY . 3A 72 58 ; 72 1 TEBY . 39 71 57 ES;Y aSELO;C : 15VDSR ; ; O ;N OKVESRP JM ES;Y FMVESR E JN S?ORRR;E + P)(S T TS T OUC DSELO;C 5 D1RV,SPC R JS O ;N BDVESR E JN H?TCMAS #'E AP;T CTHDMT1+UFTB,MTPOUDC PBCM ; : 10VDSR ; ; 20E YP TRDCORE- D SELO-CPETAT-PUUT-ODC ; ; ; K. OLL AT.XI;E OKVESR P JM ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE ` 13$ CMP R1,#DFPRBN ;IF IT IS THE DEFUALT PROBE #... 03-26-73 BEQ 13$ ;...LET IT THROUGH 03-26-73 ERR ;PROBE # ABOVE LIMIT 13$: MOVB R1,(R2) ;FILL TABLE IMAGE 14$: INC R2 ;NEXT BYTE MOV TMPW03,R1 ;PROD # BEQ 18$ CMP R1,#MXPRDN BLE 16$ ERR ;PROD # ABOVE LIMIT 16$: MOVB R1,(R2) ;FILL IMAGE 18$: INC  ;01-08-73 MOVE PAKM01,10$ ;CONVERT TIME ZONE INDICATORS TO BINARY;01-17-73 MOV TMPW01,R0 ;TMZ (1-5) BEQ 2$ CMP R0,#5 BLE 4$ 2$: MOV #HUBZON,R0 ;DEFAULT ZONE IF INPUT PARAM WAS ILLEGAL 4$: MOV TMPW02,R1 ;STD/DST FLAG (1 OR 2) BEQ 6$ CMP R1,#2 BLE 8$ 6$: MOV #HUBDST,R1 ;DEFAULT DST FLAG IF INPUT PARAM WAS ILL 8$: MOVB R0,FI ERVDSR Q BE ? ALAT;FR ERPL+MPL,MTELMMP # P CM O ;N 20VDSR Q BE ? S ORRR;E RRLEMPL+MP T TS TERI WUESS;I O TI,MPC R JS S ESDRADT IS LERDLAN-HRE;P ) SP-(L,MP # V MO C ;W WDHNMPT+LSPH,MSZHDMP # V MO TERI;W NCHFMPT+LSPH,MRTHWMP # V MO NDMAOM CERDLAN;H MDLCMPL+MP RBCL ERILRA-TUT-ODC= E YP TEC;R P TYPL+MPL,M10 # VBMO ES;Y ERVDSR E BN S ORRR;E ] R CL CHTADE; 1 AFET,DPC R JS T NC FOG LET;S P)(S,-COLDMP # V MO $:10 TERI WCD;2 15VCSR BR PETYD OREC RET;S P TYPL+MPL,M11 # VBMO E.ON DTERI WST 1G:LA;F R0 C IN L TAFA. ES;Y FMVESR E JN ? ORRR;E + P)(S T TS OF ETERI;W K ARPM,TPC R JS CKTA STON IOCTUN FALICOG;L P)(S,-COLDMP # V MO O ;N $ 10 E BN ? TERI WST;1 \ R2 MOV TMPW02,R1 ;AREA USE # BEQ 22$ CMP R1,#MXUSEN BLE 20$ ERR ;USE # ABOVE LIMIT 20$: MOVB R1,(R2) ;FILL IMAGE 22$: INC R2 CLRB (R2) ;CLEAR NOISE BYTE CLRB CFFCL2 ;CLEAR LOCK AFTER WRITE FILEF FLWR ;WRITE UPDATED METER TABLE BACK OUT JMP CFGA10 ;RETURN TO PROGRAM TOP .PAGE LG1+TRMTMZ ;FILL "TRM" IMAGE WITH NEW INDICATORS MOVB R1,FILG1+TRMDST JSR PC,OUTTRM ;WRITE "TRM" BACK OUT JMP CFGA10 ;BACK FOR NEXT LINE (IF ANY) 10$: ERR ;CONVERSION ERROR 12$: ERR ;"TRM" NOT THERE ;01-08-73 .PAGE .SBTTL OP CODE 27 CFGN00: ;OP CODE 27: UPDATE FREIGHT BILL MAIL ADDRESS JSR PC,INTRML ;READ IN "TRM" WITH LOCK + P)(S T TS OF ETERI;W K ARPM,TPC R JS CKTA STON IOCTUN FALICOG;L P)(S,-COLDMP # V MO CHTAATE SUIS; 1 AFTT,APC R JS ONTINCFUL CAGILOS AUTTPOUC DET;S P)(S,-COLDMP # V MO D.SELO CTECADIIN. ES;Y TPOUDC R CL RNTURED OO;G ) SP2( R CL RNTUREH US;P P)(S,-P)(S V MO T OUC DSELO;C : 15VDSR ; ; O ;N OKVESRP JM ES;Y FMY R0 T TS ; : 20VCSR ; N TEITWRD OREC RERADHE ; ; O ;N G DBRV,SPC R JS ES;Y $ 10 Q BE ? UT OMETI ;R ERPL+MPL,MIMLTMP # P CM ES;Y FMVESR Q JE ; $:10 L?TAFA. ES;YR ERPL+MPL,MTELMMP # P CM O ;N 20VCSR Q BE S?ORRR ENY;A RRLEMPL+MP T TS TERI WUESS;I O TI,MPC R JS S ESDRADT IS LERDLAN-HRE;P X 02-19-73 .SBTTL OP CODE 26 .SBTTL OP CODE 25 CFGL00: ;OP-CODE 25: UPDATE "TMP" TABLE JMP OPCERR ;NOT IMPLEMENTED FOR CITGO ;!!!!!!! CFGM00: ;OP-CODE 26: UPDATE TIME ZONE INDICATORS JSR PC,INTRML ;READ IN "TRM" WITH LOCK BR 12$ ;01-08-73 MOVE PAKM01,10$ ;CONVERT TIME ZONE INDICATORS TO BINARY;0 BR 2$ ;01-08-73 MOVE PAKN01 ;FILL W/NEW ADDRESS JSR PC,OUTTRM JMP CFGA10 ;BACK FOR NEXT LINE (IF A: ; .ASCII <15><12> MS22EN: ; .EVEN ; ; RCMS23: ; .WORD MS23EN-MS23ST ; .WORD 0 ; MS23ST: ; .ASCII <15>/SERVICE DC INVESR E JN S?ORRR;E + P)(S T TS T OUC DSELO;C 5 D1RV,SPC R JS O ;N BDVESR E JN H?TCMAS #'E AP;T CTHDMT1+UFTB,MTPOUDC PBCM ; : 10VDSR ; ; 20E YP TRDCORE- D SELO-CPETAT-PUUT-ODC ; ; ; K. OLL AT.XI;E OKVESR P JM ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL CHTADE; 1 AFET,DPC R JS T NC FOG LET;S P)(S,-COLDMP # V MO U ) SP-(L,MP # V MO TERI WTOT IS LERDLAN HET S ;0 Z,DSPH,MRTHWMP1,UFTB,MT2XI,ESTHLMP NDHAST : 15VCSR D ANMMCOR LENDHAE ATICND;I MDLCMPL+MP RBCL PETYC RES AERADHET-OUC- DET;S YPLTMPL+MP7, # VBMO TERI WST 1G:LA;F R0 R CL H ACTT;A 1 AFTT,APC R JS NT FOG LET;S P)(S,-COLDMP # V MO /T MALAT;F FMVESR T BG S?ORRR;E + P)(S T TS NGRIE ITWRH IT;W 0 D OR.WT1-17-73 MOV TMPW01,R0 ;TMZ (1-5) BEQ 2$ CMP R0,#5 BLE 4$ 2$: MOV #HUBZON,R0 ;DEFAULT ZONE IF INPUT PARAM WAS ILLEGAL 4$: MOV TMPW02,R1 ;STD/DST FLAG (1 OR 2) BEQ 6$ CMP R1,#2 BLE 8$ 6$: MOV #HUBDST,R1 ;DEFAULT DST FLAG IF INPUT PARAM WAS ILL 8$: MOVB R0,FILG1+TRMTMZ ;FILL "TRM" IMAGE WITH NEW INDICATORS MOVB R1,FILG1+TRMDST JSR PPUT TAPE / MS23TN: .BYTE 0,0 ; .ASCII /,DATED / MS23JD: .BYTE 0,0,0 ; .ASCII /./<15><12> MS23EN: ; .EVEN ; ; RCMS24: ; .WORD MS24EN-MS24ST ; .WORD 0 ; MS24ST: ; .ASCII <15>/RETAINING OLD NUMBER./<15><12> MS24EN: ; .EVEN ; ; RCMS25: ; .WORD $:10 TERI WCD;2 15VCSR BR PETYD OREC RET;S P TYPL+MPL,M11 # VBMO E.ON DTERI WST 1G:LA;F R0 C IN L TAFA. ES;Y FMVESR E JN ? ORRR;E + P)(S T TS OF ETERI;W K ARPM,TPC R JS CKTA STON IOCTUN FALICOG;L P)(S,-COLDMP # V MO O ;N $ 10 E BN ? TERI WST;1 R0 T TS ; : 20VCSR ; N TEITWRD OREC RERADHE ; ; Q E AT-D;J 0 D OR.W $:30 # E AP;T 0 D OR.W $:20 UTTPOUC-;D COLDMP D OR.W E AP TNTOU;M E APNT,MR5 R JS TEDAN IAUL;J$ 30T,JDTH+MF1BUMT V MO N.PE OOR F &LDHO ; 0$,2TPOUDC V MO TOE ONW NET SE. NO ; TPOUDCT,DCTH+MF1BUMT VBMO RDCORED BAE BSTMU. ES;Y BDVESR E BN ? ENOPE AP TUTTPOUC-;D TPOUDC T TS ; : 10VCSR ; ; 21E YPPC,OUTTRM ;WRITE "TRM" BACK OUT JMP CFGA10 ;BACK FOR NEXT LINE (IF ANY) 10$: ERR ;CONVERSION ERROR 12$: ERR ;"TRM" NOT THERE ;01-08-73 .PAGE .SBTTL OP CODE 27 CFGN00: ;OP CODE 27: UPDATE FREIGHT BILL MAIL ADDRESS JSR PC,INTRML ;READ IN "TRM" WITH LOCK BR 2$ ;01-08-73 MOVE PAKN01  MS25EN-MS25ST ; .WORD 0 ; MS25ST: ; .ASCII <15>/DESIRE ANOTHER PHASE TWO?/<15><12> MS25EN: ; .EVEN ; ; RCMS26: ; .WORD MS26EN-MS26ST ; .WORD 0 ; MS26ST: ; .ASCII <15> MS26TS: ; .BYTE 0,0 ;# OF INPUT TAPES TO DO .ASCII / INPUT TAPES TO SERVI O ;N G DBRV,SPC R JS ES;Y $ 10 Q BE ? UT OMETI ;R ERPL+MPL,MIMLTMP # P CM ES;Y FMVESR Q JE ; $:10 L?TAFA. ES;YR ERPL+MPL,MTELMMP # P CM O ;N 20VCSR Q BE S?ORRR ENY;A RRLEMPL+MP T TS TERI WUESS;I O TI,MPC R JS S ESDRADT IS LERDLAN-HRE;P ) SP-(L,MP # V MO TERI WTOT IS LERDLAN HET S ;0 Z,DSPH,MRTHWMP1,UFTB,MT2XI,ESTHLMP NDHASTM TRDCORE- D NEPE-OPETAT-PUUT-ODC ; ; ; N URET;R OKVESR BR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL E.ICRVSEO--TESAP-TUTNP-IOF#-O T+1; APPTIN C IN ITE YP;T T YOTT,MPC R JS SG MPETAT-PUINC--DCEVIER;S P)(S,-23 # V MO IISC ATOT ERNVCO& ; N 3TS2,M60 # SBBI L EL CTO# E AP;T TN23MST,DCTH+MF1BUMT VBMO I CIASO TTEDA JRTVEON;C ,3JD23MST,JDTH+MF1BUMT A1VBCN L ;FILL W/NEW ADDRESS JSR PC,OUTTRM JMP CFGA10 ;BACK FOR NEXT LINE (IF A: ; .ASCII <15><12> MS22EN: ; .EVEN ; ; RCMS23: ; .WORD MS23EN-MS23ST ; .WORD 0 ; MS23ST: ; .ASCII <15>/SERVICE DC INPUT TAPE / MS23TN: .BYTE 0,0 ; .ASCII /,DATED / MS23JD: .BYTE 0,0,0 CE./<15><12> MS26EN: ; .EVEN ; ; RCMS27: ; .WORD MS27EN-MS27ST ; .WORD 0 ; MS27ST: ; .ASCII /EMPTY INPUT QUEUES?/<15> MS27EN: .EVEN ; ; RCMS30: ; .WORD MS30EN-MS30ST ; .WORD 0 ; MS30ST: ; .ASCII /DATED / MS30JD: .BYTE 0,0,0 ; : 15VCSR D ANMMCOR LENDHAE ATICND;I MDLCMPL+MP RBCL PETYC RES AERADHET-OUC- DET;S YPLTMPL+MP7, # VBMO TERI WST 1G:LA;F R0 R CL H ACTT;A 1 AFTT,APC R JS NT FOG LET;S P)(S,-COLDMP # V MO /T MALAT;F FMVESR T BG S?ORRR;E + P)(S T TS NGRIE ITWRH IT;W 0 D OR.W E AT-D;J 0 D OR.W $:30 # E AP;T 0 D OR.W $:20 UTTPOUC-I; : 10VBSR ; ; 2 2PETYD OREC RD OREC-REDENOPE-AP-TUTNP-IDCE ICRVSE ; ; ; N URET;R OKVESR BR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL DSOREC RTEDA JALICOG LLL AINE AT DET;S E ATJD,SPC R JS RDCOREM RO FTEDAN IAUL JET;G ) SP-(T,JDTH+MF1BUMT V MO ; : 10VASR ; ; 1 1PETYD OREC-RGEANCHE AT DANLIJUE ICRVSE ; ; ; N URET;R PC S RT H ; .ASCII /./<15><12> MS23EN: ; .EVEN ; ; RCMS24: ; .WORD MS24EN-MS24ST ; .WORD 0 ; MS24ST: ; .ASCII <15>/RETAINING OLD NUMBER./<15><12> MS24EN: ; .EVEN ; ; RCMS25: ; .WORD MS25EN-MS25ST ; .WORD 0 ; MS25ST: ; .ASCII /./<15><12> MS30EN: ; .EVEN ; ; RCMS31: ; .WORD MS31EN-MS31ST ; .WORD 0 ; MS31ST: ; .ASCII /RETRIEVAL NUMBERS:/<15>/OLD=/ MS31OD: .BYTE 0,0,0 ; .ASCII /. NEW=/ MS31NW: .BYTE 0,0,0 ; .ASCII /./<15><12> MS31EN: ; .EVEN ; ; RCMS32: ; .WOR;D COLDMP D OR.W E AP TNTOU;M E APNT,MR5 R JS TEDAN IAUL;J$ 30T,JDTH+MF1BUMT V MO N.PE OOR F &LDHO ; 0$,2TPOUDC V MO TOE ONW NET SE. NO ; TPOUDCT,DCTH+MF1BUMT VBMO RDCORED BAE BSTMU. ES;Y BDVESR E BN ? ENOPE AP TUTTPOUC-;D TPOUDC T TS ; : 10VCSR ; ; 21E YP TRDCORE- D NEPE-OPETAT-PUUT-ODC ; ; ; N URET;R OKVESR BR ALRITEMAT E RSTEISEG RHE TRETOES;R X TOES,RPC R JS ; : OKVESR ; ; L FUSSCEUC SOR FITEX ; ; ; ) SP.(14 C IN ; : B1VESR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL RDCORED BAG LA;F P TYRR,E-1 # V MO ; : BDVESR ; D OREC RAD BOR FITEX ; ; P TYECE YT BTO ; 5$ 0 OL R LC C MTR FOR DEEA HSG M ; $ 05Z,DSPH#M UBD.ASCII <15>/DESIRE ANOTHER PHASE TWO?/<15><12> MS25EN: ; .EVEN ; ; RCMS26: ; .WORD MS26EN-MS26ST ; .WORD 0 ; MS26ST: ; .ASCII <15> MS26TS: ; .BYTE 0,0 ;# OF INPUT TAPES TO DO .ASCII / INPUT TAPES TO SERVICE./<15><12> MS26EN: ; .EVEN ; ; RCMS27: D MS32EN-MS32ST ; .WORD 0 ; MS32ST: ; .ASCII <15>/INVOICE NUMBERS:/<15>/OLD=/ MS32OD: .BYTE 0,0,0,0,0 ; .ASCII /. NEW=/ MS32NW: .BYTE 0,0,0,0,0 ; .ASCII /./<15><12> MS32EN: ; .EVEN ; ; RCMS33: ; .WORD MS33EN-MS33ST ; .WORD 0 ; MS33ST: ; .ASCII <15>/LOGICAL FUNNOE YP TRDCOREE ATICND;I YPCTRE R CL E.ICRVSEO--TESAP-TUTNP-IOF#-O T+1; APPTIN C IN ITE YP;T T YOTT,MPC R JS SG MPETAT-PUINC--DCEVIER;S P)(S,-23 # V MO IISC ATOT ERNVCO& ; N 3TS2,M60 # SBBI L EL CTO# E AP;T TN23MST,DCTH+MF1BUMT VBMO I CIASO TTEDA JRTVEON;C ,3JD23MST,JDTH+MF1BUMT A1VBCN ; : 10VBSR ; ; 2 2PETYD OREC RD OREC-REDENOPE-AP-TUTNP-IDCE ICRVSE A S RTVEON CTOS RDWOS AET S ; 5$,0LYAL T OV M E,ITWRO TDSOR=WERADHEG MSS NUMI ; LYAL,THLYP#T UB S ADRES RDWOF O #VESA ; LYAL,TNTHCMPT+LSPH M OV M RNTUREK OAGFL ; P)(S 2 B LR C E YP TET;SP TYPL+MPL,MP)(S 2 B OV M CHTAAT ; F1TAATC, P SR J ONTINCFUG LOT=PUUT ODC ; ) SP-(O,DCPL#M OV M Y TREN ; T:WRCO D ; ; ;0 - N IOISEV R ; ; 66- E AT D ; ; 66@ ; .WORD MS27EN-MS27ST ; .WORD 0 ; MS27ST: ; .ASCII /EMPTY INPUT QUEUES?/<15> MS27EN: .EVEN ; ; RCMS30: ; .WORD MS30EN-MS30ST ; .WORD 0 ; MS30ST: ; .ASCII /DATED / MS30JD: .BYTE 0,0,0 ; .ASCII /./<15><12> MS30EN: ; .EVEN ; ; RCMS31: CTION 3,/<15>/CLOSED./<15><12> MS33EN: ; .EVEN ; ; RCMS34: ; .WORD MS34EN-MS34ST ; .WORD 0 ; MS34ST: ; .ASCII <15>/SYSTEM ACTIVITY HALTED./<15><12> MS34EN: ; .EVEN ; ; RCMS35: .WORD MS35EN-MS35ST ; .WORD 0 ; MS35ST: ; .ASCII <15>/NO CELLS AVAILABLE./<15><12> ; ; ; N URET;R OKVESR BR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL DSOREC RTEDA JALICOG LLL AINE AT DET;S E ATJD,SPC R JS RDCOREM RO FTEDAN IAUL JET;G ) SP-(T,JDTH+MF1BUMT V MO ; : 10VASR ; ; 1 1PETYD OREC-RGEANCHE AT DANLIJUE ICRVSE ; ; ; N URET;R PC S RT RSTEISEG RHE TRETOES;R X TOES,RPC R JS ; : OKVESR ; ; =- R MEAMGRRO P ; ; NO ; - ; RDCORED BA ; D EBRV S GT B ;R ROERT MALAT FS.YE ; M EFRV S LT B ;? RSROER ; )+SP ( ST T ; ; RTOWDCC, P SR J ; TERI WTOE YP TRDCORET SE ; ) SP-(E,YPCT R OV M ; - ;- E NCUEEQ SNGLIAL C ; ;E AP TUTCO DTO7 1OR6 1ESYP TRDCOREE ITWRO T -SEPOUR P ; ;E AP TUTTPOUC- DTOD OREC RTERI W RTOWDC< ; .WORD MS31EN-MS31ST ; .WORD 0 ; MS31ST: ; .ASCII /RETRIEVAL NUMBERS:/<15>/OLD=/ MS31OD: .BYTE 0,0,0 ; .ASCII /. NEW=/ MS31NW: .BYTE 0,0,0 ; .ASCII /./<15><12> MS31EN: ; .EVEN ; ; RCMS32: ; .WORD MS32EN-MS32ST ; .WORD 0 ; MS32ST: ;  MS35EN: ; .EVEN RCMS36: .WORD MS36EN-MS36ST .WORD 0 MS36ST: .ASCII /NO DATA IN RECORD./<15><12> MS36EN: .EVEN ; ; RCMS37: .WORD MS37EN-MS37ST .WORD 0 MS37ST: .ASCII /ENTER TAPE #: - / MS37EN: .EVEN ; ; RCMS40: .WORD MS40EN-MS40ST .WORD 0 MS40ST: .ASCII /DISMOUNT LOGICAL FUNCTION 1./<15> MS40EN: .EVEN ; ; RC L FUSSCEUC SOR FITEX ; ; ; ) SP.(14 C IN ; : B1VESR ALRITEMAT NOE YP TRDCOREE ATICND;I YPCTRE R CL RDCORED BAG LA;F P TYRR,E-1 # V MO ; : BDVESR ; D OREC RAD BOR FITEX ; ; P TYECE YT BTO ; 5$ 0 OL R LC C MTR FOR DEEA HSG M ; $ 05Z,DSPH#M UB S RTVEON CTOS RDWOS AET S ; 5$,0LYAL T OV M E,ITWRO TDSOR=WERADHE9- E AM NAMGRRO P ; ;* * * ; ; RTOWDCL TTSB . GEPA . ;S DTQJ SND E ; ;S YE ; C P TS R : 0$ 2T IPETY ; OTTYMTC, P SR J E AGSSMEG INSSMI# Q SE ; P)(S,-#3 OV M ;Q SETL+MSTTL,M#2 DD A I CIASO TLD;O ,4OL03MSQ,SETL+MSTTL M1 BANV C ;Q SETL+MSTTL,M#2 UB S 4 W,3NS0,MEQHSMT1+UFTB M1 BANV C L ALSMO TO. NO ; R ERQJ S LT B S YE ; 0$ 2 EQ B H?8 .ASCII <15>/INVOICE NUMBERS:/<15>/OLD=/ MS32OD: .BYTE 0,0,0,0,0 ; .ASCII /. NEW=/ MS32NW: .BYTE 0,0,0,0,0 ; .ASCII /./<15><12> MS32EN: ; .EVEN ; ; RCMS33: ; .WORD MS33EN-MS33ST ; .WORD 0 ; MS33ST: ; .ASCII <15>/LOGICAL FUNCTION 3,/<15>/CLOSED./<15><12> MS33EN: ; .EVEN ; ; RCMS34: MS41: .WORD MS41EN-MS41ST .WORD 0 MS41ST: .ASCII /WRONG TAPE #./<15> MS41EN: .EVEN .PAGE ; ; DISK/MT BUFFERS AND I/O LISTS ; ; ; DISK I/O LIST ; DKIOLT: ; IOPAC DISC1,DKPRI,0 ; ; ; DISK DATA LIST ; DKDTLT: IODLST 0,0 ;FILE ID AND WORD COUNT SUPPLIED. ; ; BUFFERS ; MTBUF1: ;M/T RECORD HEADER .BLKW 25. G MSS NUMI ; LYAL,THLYP#T UB S ADRES RDWOF O #VESA ; LYAL,TNTHCMPT+LSPH M OV M RNTUREK OAGFL ; P)(S 2 B LR C E YP TET;SP TYPL+MPL,MP)(S 2 B OV M CHTAAT ; F1TAATC, P SR J ONTINCFUG LOT=PUUT ODC ; ) SP-(O,DCPL#M OV M Y TREN ; T:WRCO D ; ; ;0 - N IOISEV R ; ; 66- E AT D ; ; 66- R MEAMGRRO P ; ; NO ; - ; RDCORED BA ; D EBRV S5TCMA ;EQLSMTT+LSMT1, R MP C +1 ; 1 R NC I #EQ;S 1 ,REQHSMT1+UFTB M OV M NO ; R ERQJ S NE B ? CHAT M'S #RTPA ;P OGTL+MSTTL,MTNHPMT1+UFTB M B MP C NO ; R ERQJ S NE B H?TCMAS #'E AP TS.YE ;N TPTL+MSTTL,MPNHTMT1+UFTB M B MP C K. OTEDA ; 0:A1QJ S RNTURE ; C P TS R ORRR EAGFL ; P)(S 2 NC I NO ; R:ERQJ SS YE ;4 ; .WORD MS34EN-MS34ST ; .WORD 0 ; MS34ST: ; .ASCII <15>/SYSTEM ACTIVITY HALTED./<15><12> MS34EN: ; .EVEN ; ; RCMS35: .WORD MS35EN-MS35ST ; .WORD 0 ; MS35ST: ; .ASCII <15>/NO CELLS AVAILABLE./<15><12> MS35EN: ; .EVEN RCMS36: .WORD MS36EN-MS36ST  ; ; ; DISK BUFFER ; DKBUF1: ; IODLST 0,0 ; MTDKB1: DKMTB1: ;COMMON DATA AREA. .BLKW 1024. ;MAXIMUM WORD COUNT ; ; ; MTBUF2: ;MT RECORD HEADER .BLKW 25. ; ; ; DISK DATA ; DKBUF2: ;DATA LIST ; SERVICE DC OUTPUT CONTINUATION-RECORD TYPE 17 ; ; SRVJ10: GT B ;R ROERT MALAT FS.YE ; M EFRV S LT B ;? RSROER ; )+SP ( ST T ; ; RTOWDCC, P SR J ; TERI WTOE YP TRDCORET SE ; ) SP-(E,YPCT R OV M ; - ;- E NCUEEQ SNGLIAL C ; ;E AP TUTCO DTO7 1OR6 1ESYP TRDCOREE ITWRO T -SEPOUR P ; ;E AP TUTTPOUC- DTOD OREC RTERI W RTOWDC- E AM NAMGRRO P ; ;* * * ; ; RTOWDCL TTSB . GEPA . ;S DTQJ SND E 1 0 A1QJ S EQ B ? RDCOREE NGHA CTEDA. NO ; T RCTH+MF1BUMT1,#1 B MP C S YE ; 0 A1QJ S EQ B CHAT MESAT-D;J T JDTL+MSTTL,MDTHJMT1+UFTB M MP C RNTUREK OTECADIIN ; P)(S 2 LR C CKTA STOINN URET RSHPU ; ) SP-(),SP ( OV M Y TREN ; S:DTQJ S ; ; ;0 - N IOISEV R ; ; 724//212- E AT D ; ; 66- R MEAMGRRO P ; ; ;S YE ; - ; RDCORED BA0 .WORD 0 MS36ST: .ASCII /NO DATA IN RECORD./<15><12> MS36EN: .EVEN ; ; RCMS37: .WORD MS37EN-MS37ST .WORD 0 MS37ST: .ASCII /ENTER TAPE #: - / MS37EN: .EVEN ; ; RCMS40: .WORD MS40EN-MS40ST .WORD 0 MS40ST: .ASCII /DISMOUNT LOGICAL FUNCTION 1./<15> MS40EN: .EVEN ; ; RCMS41: .WORD MS41EN-MS41ST .WORD 0 MS41ST: .ASCII /WRONG TAPE #./< ; CMP #16,RECTYP ;WAS DC-OUTPUT-INITAL LAST RECORD TYPE? JNE SRVEBD ;NO. BAD RECORD MOV #17,-(SP) ;SET REC TYPE JSR PC,DCOWRT ;WRITE DC OUT CONTIUATION RECORD TST (SP)+ ;ERRORS? JEQ SRVEOK ;NO BGT 10$ ;YES. BAD RECORD JMP SRVEFM ;FATAL MT 10$: JMP SRVEBD ;BAD RECORD ; ; DEBUG ; SRVDBG: ; ;S YE ; C P TS R : 0$ 2T IPETY ; OTTYMTC, P SR J E AGSSMEG INSSMI# Q SE ; P)(S,-#3 OV M ;Q SETL+MSTTL,M#2 DD A I CIASO TLD;O ,4OL03MSQ,SETL+MSTTL M1 BANV C ;Q SETL+MSTTL,M#2 UB S 4 W,3NS0,MEQHSMT1+UFTB M1 BANV C L ALSMO TO. NO ; R ERQJ S LT B S YE ; 0$ 2 EQ B H?TCMA ;EQLSMTT+LSMT1, R MP C +1 ; 1 R NC I #EQ;S 1 ,REQHS-. NO ; D EBRV S NE B ;? OKL AL ; )+SP ( ST T ; TSJDSQC, P SR J ; - ;- E NCUEEQ SNGLIAL C ; ; ;T ECRRCOS ITEDA J & ;L IANCUEEQ SIS# E NCUEEQ SFYRIVEO T -SEPOUR P ; ;T ES TTEDAN IAUL/J #CEENQUSE TSJDSQ- E AM NAMGRRO P ; ; ;* * * ; ; TSTDSQL TTSB . GEPA . ;E ATJD SND E ; ; RNTURE ; C P TS R RNTUREP PO ; ) SP,()+SP ( OV,15> MS41EN: .EVEN .PAGE ; ; DISK/MT BUFFERS AND I/O LISTS ; ; ; DISK I/O LIST ; DKIOLT: ; IOPAC DISC1,DKPRI,0 ; ; ; DISK DATA LIST ; DKDTLT: IODLST 0,0 ;FILE ID AND WORD COUNT SUPPLIED. ; ; BUFFERS ; MTBUF1: ;M/T RECORD HEADER .BLKW 25. ; ; ; DISK BUFFER ; DKBUF1: ; IODLST 0,0  ; DEBUG RTS PC ; ; ; END SRVREC ; .PAGE .SBTTLSJDATE ; ;* * * ; ; ; PROGRAM NAME - SJDATE SET JULIAN DATE ; ; PURPOSE - TO A JULIAN DATE INTO ALL LOGICAL MT TABLES ; ; CALLING SEQUENCE- ; - ; MOV JLDATE,-(SP) ;SET DATE INTO STACK ; JSR PC,SJDATE ; - ; ; PROGRAMMER - 66 ; ; DATE - 12/24/72 ; ; REVISMT1+UFTB M OV M NO ; R ERQJ S NE B ? CHAT M'S #RTPA ;P OGTL+MSTTL,MTNHPMT1+UFTB M B MP C NO ; R ERQJ S NE B H?TCMAS #'E AP TS.YE ;N TPTL+MSTTL,MPNHTMT1+UFTB M B MP C K. OTEDA ; 0:A1QJ S RNTURE ; C P TS R ORRR EAGFL ; P)(S 2 NC I NO ; R:ERQJ SS YE ; 0 A1QJ S EQ B ? RDCOREE NGHA CTEDA. NO ; T RCTH+MF1BUMT1,#1 B MP C S YE) M S ERSTGIREE ORSTRE ; OXSTREC, P SR J ; 0:C4JD S XTNEO DE,ON DOT NIF ; 35DCSJ0, R OB S LEAB TXTNET SE ; R1L,OGTL#M DD A TEDAT SE ;) R1T(JDTL,MP)(S4. 1 OV M ; 5:C3JD S S.LEAB TMTG LOF OSEBA ; 1 ,RSTTL#M OV M . NSIOCTUN FALICOG LOF# ; R0F,XLTM#M OV M RSTEISEG RVESA ; X VESAC, P SR J Y TREN ; E:ATJD S ; ;0 - N IO( ; MTDKB1: DKMTB1: ;COMMON DATA AREA. .BLKW 1024. ;MAXIMUM WORD COUNT ; ; ; MTBUF2: ;MT RECORD HEADER .BLKW 25. ; ; ; DISK DATA ; DKBUF2: ;DATA LIST ; SERVICE DC OUTPUT CONTINUATION-RECORD TYPE 17 ; ; SRVJ10: ; CMP #16,RECTYP ;WAS DC-OUTPUT-INITAL LAST RECORD TYPE? JNE SRVEBION - 0 ; ; SJDATE: ;ENTRY JSR PC,SAVEX ;SAVE REGISTERS MOV #MTMXLF,R0 ;# OF LOGICAL FUNCTIONS. MOV #MTLST,R1 ;BASE OF LOG MT TABLES. SJDC35: ; MOV 14.(SP),MTLJDT(R1) ;SET DATE ADD #MTLOGL,R1 ;SET NEXT TABLE SOB R0,SJDC35 ;IF NOT DONE, DO NEXT SJDC40: ; JSR PC,RESTOX ;RESTORE REGISTERS M ; 0 A1QJ S EQ B CHAT MESAT-D;J T JDTL+MSTTL,MDTHJMT1+UFTB M MP C RNTUREK OTECADIIN ; P)(S 2 LR C CKTA STOINN URET RSHPU ; ) SP-(),SP ( OV M Y TREN ; S:DTQJ S ; ; ;0 - N IOISEV R ; ; 724//212- E AT D ; ; 66- R MEAMGRRO P ; ; ;S YE ; - ; RDCORED BA. NO ; D EBRV S NE B ;? OKL AL ; )+SP ( ST T ; TSJD%ISEV R ; ; 724//212- E AT D ; ; 66- R MEAMGRRO P ; ; - ; TEDASJC, P SR J ;K ACSTO NT ITEDAT SE ; ) SP-(E,ATLD J OV M ; - ; E-NCUEEQ SNGLIAL C ; ; ESBLTAT MALICOG LLL ATOINE AT DANLIJUA O T -SEPOUR P ; ; TEDAN IAUL JET STEDASJ- E AM NAMGRRO P ; ; ;* * * ; ;E ATJDLSTTSB . GEPA . ;C RERV SND E ; ; ;C P TS R UGEB D ; $D ;NO. BAD RECORD MOV #17,-(SP) ;SET REC TYPE JSR PC,DCOWRT ;WRITE DC OUT CONTIUATION RECORD TST (SP)+ ;ERRORS? JEQ SRVEOK ;NO BGT 10$ ;YES. BAD RECORD JMP SRVEFM ;FATAL MT 10$: JMP SRVEBD ;BAD RECORD ; ; DEBUG ; SRVDBG: ; DEBUG RTS PC ; ; ; END SRVREC ; .PAGEOV (SP)+,(SP) ;POP RETURN RTS PC ;RETURN ; ; END SJDATE ; .PAGE .SBTTL SQTDTS ; ;* * * ; ; ; PROGRAM NAME - SQJDTS SEQUENCE #/JULIAN DATE TEST ; ; PURPOSE - TO VERIFY SEQUENCE # IS SEQUENCIAL ; & JDATE IS CORRECT ; ; ; CALLING SEQUENCE - ; - ; JSR PC,SQJDTS ; TST (SP)+ ;ALL OK? ; BNE SRVEBD ;NO. SQC, P SR J ; - ;- E NCUEEQ SNGLIAL C ; ; ;T ECRRCOS ITEDA J & ;L IANCUEEQ SIS# E NCUEEQ SFYRIVEO T -SEPOUR P ; ;T ES TTEDAN IAUL/J #CEENQUSE TSJDSQ- E AM NAMGRRO P ; ; ;* * * ; ; TSTDSQL TTSB . GEPA . ;E ATJD SND E ; ; RNTURE ; C P TS R RNTUREP PO ; ) SP,()+SP ( OV M S ERSTGIREE ORSTRE ; OXSTREC, P SR J ; 0:C4JD S XT! G:DBRV S ; UGEB D ; ; RDCORED BA ; D EBRV S MP J : 0$ 1 MTL TAFA ; M EFRV S MP J D OREC RAD BS.YE ; 0$ 1 GT B NO ; K EORV S EQ J ? RSROER ; )+SP ( ST T D OREC RONTIUATION CUT ODCE ITWR ; RTOWDCC, P SR J PETYC RET SE ; ) SP-(7,#1 OV M RDCORED BA. NO ; D EBRV S NE J E?YP TRDCORET AS LALITINT-PUUT-ODCS WA ; YPCTRE6,#1 MP C ;  .SBTTLSJDATE ; ;* * * ; ; ; PROGRAM NAME - SJDATE SET JULIAN DATE ; ; PURPOSE - TO A JULIAN DATE INTO ALL LOGICAL MT TABLES ; ; CALLING SEQUENCE- ; - ; MOV JLDATE,-(SP) ;SET DATE INTO STACK ; JSR PC,SJDATE ; - ; ; PROGRAMMER - 66 ; ; DATE - 12/24/72 ; ; REVISION - 0 ; ; SJDATE: ;ENTRY JSR PC,SAVEX ;SAVE REGISTEBAD RECORD ; - ;YES ; ; ; PROGRAMMER - 66 ; ; DATE - 12/24/72 ; ; REVISION - 0 ; ; ; SQJDTS: ;ENTRY MOV (SP),-(SP) ;PUSH RETURN INTO STACK CLR 2(SP) ;INDICATE OK RETURN CMP MTBUF1+MTHJDT,MTLST+MTLJDT ;J-DATES MATCH BEQ SQJA10 ;YES CMPB #11,MTBUF1+MTHRCT ;NO. DATE CHANGE RECORD? BEQ SQJA10 NEO DE,ON DOT NIF ; 35DCSJ0, R OB S LEAB TXTNET SE ; R1L,OGTL#M DD A TEDAT SE ;) R1T(JDTL,MP)(S4. 1 OV M ; 5:C3JD S S.LEAB TMTG LOF OSEBA ; 1 ,RSTTL#M OV M . NSIOCTUN FALICOG LOF# ; R0F,XLTM#M OV M RSTEISEG RVESA ; X VESAC, P SR J Y TREN ; E:ATJD S ; ;0 - N IOISEV R ; ; 724//212- E AT D ; ; 66- R MEAMGRRO P ; ; - ; TE 0:J1RV S ; ; 17E YP TRDCOREN-IOATNUTION CUTTPOUC DCEVIER S ; STLIA AT;D : F2BUDK ; A AT DSKDI ; ; ; . 25 W LK.B R DEEA HRDCORET ;M : F2BUMT ; ; ; T UNCOD OR WUMIMAX;M . 2410 W LK.B A.RE ATADAN MOOM;C : B1MTDK : B1DKMT ; 0 0, STDLIO ; : F1BUDK ; R FEUF BSKDI ; ; ; RS MOV #MTMXLF,R0 ;# OF LOGICAL FUNCTIONS. MOV #MTLST,R1 ;BASE OF LOG MT TABLES. SJDC35: ; MOV 14.(SP),MTLJDT(R1) ;SET DATE ADD #MTLOGL,R1 ;SET NEXT TABLE SOB R0,SJDC35 ;IF NOT DONE, DO NEXT SJDC40: ; JSR PC,RESTOX ;RESTORE REGISTERS MOV (SP)+,(SP) ;POP RETURN RTS PC ;RETURN ; ; END SJDATE  ;YES SQJERR: ;NO INC 2(SP) ;FLAG ERROR RTS PC ;RETURN SQJA10: ;DATE OK. CMPB MTBUF1+MTHTPN,MTLST+MTLTPN ;YES. TAPE #'S MATCH? BNE SQJERR ;NO CMPB MTBUF1+MTHPTN,MTLST+MTLOGP ;PART #'S MATCH? BNE SQJERR ;NO MOV MTBUF1+MTHSEQ,R1 ;SEQ # INC R1 ;+1 CMP R1,MTLST+MTLSEQ ;MATCDASJC, P SR J ;K ACSTO NT ITEDAT SE ; ) SP-(E,ATLD J OV M ; - ; E-NCUEEQ SNGLIAL C ; ; ESBLTAT MALICOG LLL ATOINE AT DANLIJUA O T -SEPOUR P ; ; TEDAN IAUL JET STEDASJ- E AM NAMGRRO P ; ; ;* * * ; ;E ATJDLSTTSB . GEPA . ;C RERV SND E ; ; ;C P TS R UGEB D ; G:DBRV S ; UGEB D ; ; RDCORED BA ; D EBRV S MP J : 0$ 1 MTL TAFA. 25 W LK.B ERADHED OREC R/T;M : F1BUMT ; S ERFFBU ; ; . EDLIPPSUT UNCOD OR WND AIDE IL;F 0 0, STDLIO : LTDTDK ; STLIA AT DSKDI ; ; ; 0 I,PRDK1,SCDI C PAIO ; : LTIODK ; T IS L/O ISKDI ; ; ; S STLIO I/D ANS ERFFBUT /MSKDI ; ; E AG.P N VE.E : EN41MS > 15/<#.E AP TNGRO/W IISC.A : ST41MS 0 D OR.W T 1SS4-MEN41MS D OR.W : 41MS ; .PAGE .SBTTL SQTDTS ; ;* * * ; ; ; PROGRAM NAME - SQJDTS SEQUENCE #/JULIAN DATE TEST ; ; PURPOSE - TO VERIFY SEQUENCE # IS SEQUENCIAL ; & JDATE IS CORRECT ; ; ; CALLING SEQUENCE - ; - ; JSR PC,SQJDTS ; TST (SP)+ ;ALL OK? ; BNE SRVEBD ;NO. BAD RECORD ; - ;YES ; ; ; PROGRAMMER - 66 ; ; H? BEQ 20$ ;YES BLT SQJERR ;NO. TOO SMALL CNVBA1 MTBUF1+MTHSEQ,MS03NW,4 SUB #2,MTLST+MTLSEQ ; CNVBA1 MTLST+MTLSEQ,MS03OL,4 ;OLD TO ASCII ADD #2,MTLST+MTLSEQ ; MOV #3,-(SP) ;SEQ # MISSING MESSAGE JSR PC,MTTYOT ;TYPE IT 20$: RTS PC ;YES ; ; END SQJDTS ; .PAGE .SBTTL DCOWRT ; ;* * * ; ; PROGRAM NAME - ; M EFRV S MP J D OREC RAD BS.YE ; 0$ 1 GT B NO ; K EORV S EQ J ? RSROER ; )+SP ( ST T D OREC RONTIUATION CUT ODCE ITWR ; RTOWDCC, P SR J PETYC RET SE ; ) SP-(7,#1 OV M RDCORED BA. NO ; D EBRV S NE J E?YP TRDCORET AS LALITINT-PUUT-ODCS WA ; YPCTRE6,#1 MP C ; 0:J1RV S ; ; 17E YP TRDCOREN-IOATNUTION CUTTPOUC DCEVIER S ; RC ; ; N VE.E : EN40MS 5><1./ 1ONTINCFUL CAGILOT UNMOIS/D IISC.A : ST40MS 0 D OR.W T 0SS4-MEN40MS D OR.W : 40MSRC ; ; N VE.E : EN37MS / -#:E AP TERNT/E IISC.A : ST37MS 0 D OR.W T 7SS3-MEN37MS D OR.W : 37MSRC ; ; N VE.E : EN36MS 2><15><1./RDCOREN ITADAO /N IISC.A : ST36MS 0 D OR.W T 6SS3-MEN36MS D OR.W : 36MSRC N VE.E ; : EN35MS  DATE - 12/24/72 ; ; REVISION - 0 ; ; ; SQJDTS: ;ENTRY MOV (SP),-(SP) ;PUSH RETURN INTO STACK CLR 2(SP) ;INDICATE OK RETURN CMP MTBUF1+MTHJDT,MTLST+MTLJDT ;J-DATES MATCH BEQ SQJA10 ;YES CMPB #11,MTBUF1+MTHRCT ;NO. DATE CHANGE RECORD? BEQ SQJA10 ;YES SQJERR: ;NO INC 2(SP) ;FLAG ERROR RTSDCOWRT WRITE RECORD TO DC-OUTPUT TAPE ; ; PURPOSE - TO WRITE RECORD TYPES 16 OR 17 TO DCOUT TAPE ; ; CALLING SEQUENCE - ; - ; MOV RCTYPE,-(SP) ;SET RECORD TYPE TO WRITE ; JSR PC,DCOWRT ; ; TST (SP)+ ;ERRORS? ; BLT SRVEFM ;YES. FATAL MT ERROR ; BGT SRVEBD ;BAD RECORD ; - ;NO ; ; PROGRAMMER - STLIA AT;D : F2BUDK ; A AT DSKDI ; ; ; . 25 W LK.B R DEEA HRDCORET ;M : F2BUMT ; ; ; T UNCOD OR WUMIMAX;M . 2410 W LK.B A.RE ATADAN MOOM;C : B1MTDK : B1DKMT ; 0 0, STDLIO ; : F1BUDK ; R FEUF BSKDI ; ; ; . 25 W LK.B ERADHED OREC R/T;M : F1BUMT ; S ERFFBU ; ; . > 12><15/<1 IISC.A ; : ST35MS ; 0 D OR.W ; T 5SS3-MEN35MS D OR.W: 35MSRC ; ; N VE.E ; : EN34MS > 12><15/<1 IISC.A ; : ST34MS ; 0 D OR.W ; T 4SS3-MEN34MS D OR.W ; : 34MSRC ; ; N VE.E ; : EN33MS 2><15><1./EDOSCL>/15/<3,N IOCT PC ;RETURN SQJA10: ;DATE OK. CMPB MTBUF1+MTHTPN,MTLST+MTLTPN ;YES. TAPE #'S MATCH? BNE SQJERR ;NO CMPB MTBUF1+MTHPTN,MTLST+MTLOGP ;PART #'S MATCH? BNE SQJERR ;NO MOV MTBUF1+MTHSEQ,R1 ;SEQ # INC R1 ;+1 CMP R1,MTLST+MTLSEQ ;MATCH? BEQ 20$ ;YES BLT SQJERR ;NO. TOO SMALL CNV66 ; ; DATE - 66 ; ; REVISION - 0 ; ; ; DCOWRT: ;ENTRY MOV #MPLDCO,-(SP) ;DC OUTPUT=LOG FUNCTION JSR PC,ATTAF1 ;ATTACH MOVB 2(SP),MPL+MPLTYP ;SET TYPE CLRB 2(SP) ;FLAG OK RETURN MOV MPHLST+MPHCNT,TALLY ;SAVE # OF WORDS READ SUB #TYPHL,TALLY ;MINUS MSG HEADER=WORDS TO WRITE, MOV TALLY,05$ ; SET AS WORDS TO CONVERT SEDLIPPSUT UNCOD OR WND AIDE IL;F 0 0, STDLIO : LTDTDK ; STLIA AT DSKDI ; ; ; 0 I,PRDK1,SCDI C PAIO ; : LTIODK ; T IS L/O ISKDI ; ; ; S STLIO I/D ANS ERFFBUT /MSKDI ; ; E AG.P N VE.E : EN41MS > 15/<#.E AP TNGRO/W IISC.A : ST41MS 0 D OR.W T 1SS4-MEN41MS D OR.W : 41MSRC ; ; N VE.E : EN40MS 5><1./ 1ONTINCFUL CAGILOT UNMOIS/D IISC.A : ST40MS 0 UN FALICOG/L5><1 IISC.A ; : ST33MS ; 0 D OR.W ; T 3SS3-MEN33MS D OR.W ; : 33MSRC ; ; N VE.E ; : EN32MS > 12><15/<1:/RSBEUM NCEOINV/I5><1 IISC.A ; : ST32MS ; 0 D OR.W ; T 2SS3-MEN32MS D BA1 MTBUF1+MTHSEQ,MS03NW,4 SUB #2,MTLST+MTLSEQ ; CNVBA1 MTLST+MTLSEQ,MS03OL,4 ;OLD TO ASCII ADD #2,MTLST+MTLSEQ ; MOV #3,-(SP) ;SEQ # MISSING MESSAGE JSR PC,MTTYOT ;TYPE IT 20$: RTS PC ;YES ; ; END SQJDTS ; .PAGE .SBTTL DCOWRT ; ;* * * ; ; PROGRAM NAME - DCOWRT WRITE RECORD TO DC-OUTPUT TAPE ; ; PURPOSE - TO WRITE RECORD TYPES 16 OR 17 TO DCOUTUB #MPHDSZ,05$ ; MSG HEADER FOR MT CLC ROL 05$ ; TO BYTE ECTYP ; ; EXIT FOR BAD RECORD ; SRVEBD: ; MOV #-1,ERRTYP ;FLAG BAD RECORD CLR RECTYP ;INDICATE RECORD TYPE NOT MATERIAL SRVEB1: ; INC 14.(SP) ; ; ; EXIT FOR SUCCESSFUL ; ; SRVEOK: ; JSR PC,RESTOX ;RESTORE THE REGISTERS D OR.W T 0SS4-MEN40MS D OR.W : 40MSRC ; ; N VE.E : EN37MS / -#:E AP TERNT/E IISC.A : ST37MS 0 D OR.W T 7SS3-MEN37MS D OR.W : 37MSRC ; ; N VE.E : EN36MS 2><15><1./RDCOREN ITADAO /N IISC.A : ST36MS 0 D OR.W T 6SS3-MEN36MS D OR.W : 36MSRC N VE.E ; : EN35MS > 12><15/<1 IISC.A ; : ST35MS ; OR.W ; : 32MSRC ; ; N VE.E ; : EN31MS > 12><15/<1:/RSBEUM NALEVRIET/R IISC.A ; : ST31MS ; 0 D OR.W ; T 1SS3-MEN31MS D OR.W ; : 31MSRC ; ; N VE.E ; : EN30MS > 12><15/ 12><15/<1 IISC.A ; : ST34MS ; 0 D OR.W ; T 4SS3-MEN34MS D OR.W ; : 34MSRC ; ; N VE.E ; : EN33MS 2><15><1./EDOSCL>/15/<3,N IOCTUN FALICOG/L5><1 IISC.A ; : ST33MS ; 0 D OR.W  ; 0 0,0, E YT.B: JD30MS /EDAT/D IISC.A ; : ST30MS ; 0 D OR.W ; T 0SS3-MEN30MS D OR.W ; : 30MSRC ; ; N VE.E : EN27MS > 15/<15><1./CETRY MOV #MPLDCO,-(SP) ;DC OUTPUT=LOG FUNCTION JSR PC,ATTAF1 ;ATTACH MOVB 2(SP),MPL+MPLTYP ;SET TYPE CLRB 2(SP) ;FLAG OK RETURN MOV MPHLST+MPHCNT,TALLY ;SAVE # OF WORDS READ SUB #TYPHL,TALLY ;MINUS MSG HEADER=WORDS TO WRITE, MOV TALLY,05$ ; SET AS WORDS TO CONVERT SUB #MPHDSZ,05$ ; MSG HEADER FOR MT CLC ROL 05$ ; TO BYTE  CNVBA1 MTBUF1+MTHJDT,MS23JD,3 ;CONVERT JDATE TO ASCII MOVB MTBUF1+MTHDCT,MS23TN ;TAPE # TO CELL BISB #60,MS23TN ; & CONVERT TO ASCII MOV #23,-(SP) ;SERVICE-DC-INPUT-TAPE MSG JSR PC,MTTYOT ;TYPE IT INC INPTAP ; +1 TO #-OF-INPUT-TAPES-TO-SERVICE. CLR RECTYP ;INDICATE RECORD TYPE NOT MATERIAL BR SRVEOK ;RETURN ; ; ; DC-OUTPUT-TAPE-OPENED - RECORD T ; T 3SS3-MEN33MS D OR.W ; : 33MSRC ; ; N VE.E ; : EN32MS > 12><15/<1:/RSBEUM NCEOINV/I5><1 IISC.A ; : ST32MS ; 0 D OR.W ; T 2SS3-MEN32MS D OR.W ; : 32MSRC ; ; N VE.E ; : VIER STOS PETAT PUIN/ IISC.A O DTOS PETAT PUINF O;# 0 0, E YT.B ; : TS26MS 5><1 IISC.A ; : ST26MS ; 0 D OR.W ; T 6SS2-MEN26MS D OR.W ; : 26MSRC ; ; N VE.E ; : EN25MS > 12><15/<1 IISC.A ; : ST25MS ; 0 D OR.W ; T 5SS2-MEN25MS ECTYP ; ; EXIT FOR BAD RECORD ; SRVEBD: ; MOV #-1,ERRTYP ;FLAG BAD RECORD CLR RECTYP ;INDICATE RECORD TYPE NOT MATERIAL SRVEB1: ; INC 14.(SP) ; ; ; EXIT FOR SUCCESSFUL ; ; SRVEOK: ; JSR PC,RESTOX ;RESTORE THE REGISTERS RTS PC ;RETURN ; ; ; SERVICE JULIAN DATE CHANGE-RECORD TYPE 11 YPE 21 ; ; SRVC10: ; TST DCOUTP ;DC-OUTPUT TAPE OPEN? BNE SRVEBD ;YES. MUST BE BAD RECORD MOVB MTBUF1+MTHDCT,DCOUTP ;NO. SET NEW ONE TO MOV DCOUTP,20$ ; HOLD & FOR OPEN. MOV MTBUF1+MTHJDT,30$ ;JULIAN DATE JSR R5,MNTAPE ;MOUNT TAPE .WORD MPLDCO ;DC-OUTPUT 20$: .WORD 0 ;TAPE # 30$: .WORD 0 ;J-DATE EN31MS > 12><15/<1:/RSBEUM NALEVRIET/R IISC.A ; : ST31MS ; 0 D OR.W ; T 1SS3-MEN31MS D OR.W ; : 31MSRC ; ; N VE.E ; : EN30MS > 12><15/ 12><15/<1 IISC.A ; : ST24MS ; 0 D OR.W ; T 4SS2-MEN24MS D OR.W ; : 24MSRC ; ; N VE.E ; : EN23MS > 12><15/ 15/<15><1./CEVIER STOS PETAT PUIN/ IISC.A O DTOS PETAT PUINF O;# 0 0, E YT.B ; INC DCEVIER/S5><1 IISC.A ; : ST23MS ; 0 D OR.W ; T 3SS2-MEN23MS D OR.W ; : 23MSRC ; ; N VE.E ; : EN22MS 2><15><1 IISC.A ; : AIF (NELIT EX NOR FCKBA ; 0 A1FG C MP J RMTTOUC, P SR J SSREDD AEW/N WLLFI ; 1 N0AK P E OV M 3 -7081-;0 $ 2 R B TN ;TAPE # TO CELL BISB #60,MS23TN ; & CONVERT TO ASCII MOV #23,-(SP) ;SERVICE-DC-INPUT-TAPE MSG JSR PC,MTTYOT ;TYPE IT INC INPTAP ; +1 TO #-OF-INPUT-TAPES-TO-SERVICE. CLR RECTYP ;INDICATE RECORD TYPE NOT MATERIAL BR SRVEOK ;RETURN ; ; ; DC-OUTPUT-TAPE-OPENED - RECORD TYPE 21 ; ; SRVC10: ; TST DCOUTP ;DC-OUTPUT TAPE OP ;PRE-HANDLER LIST ADDRESS JSR PC,MTIO ;ISSUE WRITE TST MPL+MPLERR ;ANY ERRORS? BEQ SRVC20 ;NO CMP #MPLMTE,MPL+MPLERR ;YES. FATAL? 10$: ; JEQ SRVEFM ;YES CMP #MPLTIM,MPL+MPLERR ;TIME OUT? BEQ 10$ ;YES JSR PC,SRVDBG ;NO ; ; HEADER RECORD WRITTEN ; SRVC20: ; TST R0 : TS26MS 5><1 IISC.A ; : ST26MS ; 0 D OR.W ; T 6SS2-MEN26MS D OR.W ; : 26MSRC ; ; N VE.E ; : EN25MS > 12><15/<1 IISC.A ; : ST25MS ; 0 D OR.W ; T 5SS2-MEN25MS D OR.W ; : 25MSRC ; ; N VE.E ; K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR J SSREDD AILMAL IL BHTIGRE FTEDAUP: 27E OD COP ; 0:N0FG C7 2DECOP OL TTSB . GEPA . 3 -7081-;0 E ERTHT NO" RM"T ; RR E : 2$ 1 ORRR EONSIERNVCO ; RR E : 0$ 1) NY AIF (NELIT EX NOR FCKBA ; 0 A1FG C MP J UT OCKBA" RM"TE ITWR ; RMTTOUC, P SR J STMDTR1+LGFI1, R B OV M RSTOCADIINW NEH IT WGEMA IM"TR "LLFI ;MZMTTR1+LGEN? BNE SRVEBD ;YES. MUST BE BAD RECORD MOVB MTBUF1+MTHDCT,DCOUTP ;NO. SET NEW ONE TO MOV DCOUTP,20$ ; HOLD & FOR OPEN. MOV MTBUF1+MTHJDT,30$ ;JULIAN DATE JSR R5,MNTAPE ;MOUNT TAPE .WORD MPLDCO ;DC-OUTPUT 20$: .WORD 0 ;TAPE # 30$: .WORD 0 ;J-DATE .WORD 0 ;WITH WRITE RING TST (SP)+ ;ERRORS? BGT SR ;1ST WRITE? BNE 10$ ;NO MOV #MPLDCO,-(SP) ;LOGICAL FUNCTION TO STACK JSR PC,TPMARK ;WRITE EOF TST (SP)+ ;ERROR? JNE SRVEFM ;YES. FATAL INC R0 ;FLAG: 1ST WRITE DONE. MOVB #11,MPL+MPLTYP ;SET RECORD TYPE BR SRVC15 ;2CD WRITE 10$: MOV #MPLDCO,-(SP) ;SET LOG FNCT JSR PC,DETAF1 ; DETACH CLR : EN24MS > 12><15/<1 IISC.A ; : ST24MS ; 0 D OR.W ; T 4SS2-MEN24MS D OR.W ; : 24MSRC ; ; N VE.E ; : EN23MS > 12><15/<1 IISC.A ; : ST23MS ; 0 D OR.W FI0, R B OV M $: 8L ILS WAM RAPAT PUINF IAGFLT DST ULFADE ; 1 ,RSTBDHU # OV M $: 6$ 8 LE B #21, R MP C $ 6 EQ B 2)R O(1 AGFLT DSD/ST ; R12,W0MP T OV M $: 4L GALEILS WAM RAPAT PUINF INEZOT ULFADE ; 0 ,RONBZHU # OV M $: 2$ 4 LE B #50, R MP C $ 2 EQ B ) -5(1Z TM ; R01,W0MP T OV M 3 -7171-;0RYNABIO TRSTOCADIINE ON ZMETIT ERNVCO ; $ 101,M0AK P E OV M 3 -7081-;0 VEFM ;FATAL M/T MOV #MPLDCO,-(SP) ;SET LOG FNT JSR PC,ATTAF1 ;ATTACH CLR R0 ;FLAG: 1ST WRITE MOVB #7,MPL+MPLTYP ;SET DC-OUT-HEADER AS REC TYPE CLRB MPL+MPLCMD ;INDICATE HANDLER COMMAND SRVC15: STHAND MPHLST,EXIT2,MTBUF1,MPHWRT,MPHDSZ,0 ; SET HANDLER LIST TO WRITE MOV #MPL,-(SP) ;PRE-HANDLER LIST ADDRESS JSR PC,MTIO ;ISSUE WRITE TST MPL+MPLE RECTYP ;INDICATE RECORD TYPE NOT MATERIAL JMP SRVEOK ;EXIT. ALL OK. ; ; ; DC-OUTPUT-TAPE-CLOSED - RECORD TYPE 20 ; ; SRVD10: ; CMPB DCOUTP,MTBUF1+MTHDCT ;TAPE #'S MATCH? JNE SRVEBD ;NO JSR PC,SRVD15 ;CLOSE DC OUT TST (SP)+ ;ERRORS? JNE SRVEFM ;YES JMP SRVEOK ;NO ; ; SRVD15: ;CLOSE ; T 3SS2-MEN23MS D OR.W ; : 23MSRC ; ; N VE.E ; : EN22MS 2><15><1 IISC.A ; : AIF (NELIT EX NOR FCKBA ; 0 A1FG C MP J RMTTOUC, P SR J SSREDD AEW/N WLLFI ; 1 N0AK P E OV M 3 -7081-;0 $ 2 R B K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR J SSREDD AILMAL IL BHTIGRE FTEDAUP: 27 2$ 1 R B K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR J S ORATICND INEZOE IM TTEDAUP: 26E OD-COP ; 0:M0FG C ! !!!!!! ; O TGCIR FOD TEENEMPLIMT NO ; R ERPC O MP J LEAB TP"TM "TEDAUP: 25E OD-COP ; 0:L0FG C5 2DECOP OL TTSB . 6 2DECOP OL TTSB . 3 -7192- 0 GEPA . P TOM RAOGPRO TRNTURE ; RR ;ANY ERRORS? BEQ SRVC20 ;NO CMP #MPLMTE,MPL+MPLERR ;YES. FATAL? 10$: ; JEQ SRVEFM ;YES CMP #MPLTIM,MPL+MPLERR ;TIME OUT? BEQ 10$ ;YES JSR PC,SRVDBG ;NO ; ; HEADER RECORD WRITTEN ; SRVC20: ; TST R0 ;1ST WRITE? BNE 10$ ;NO MOV #MPLDCO,-(SP) ;LOGICAL FUN DC OUT MOV (SP),-(SP) ;PUSH RETURN CLR 2(SP) ;GOOD RETURN CLR DCOUTP ;YES. INDICATE CLOSED. MOV #MPLDCO,-(SP) ;SET DC OUTPUT AS LOGICAL FUNCTION JSR PC,ATTAF1 ; ISSUE ATTACH MOV #MPLDCO,-(SP) ;LOGICAL FUNCTION TO STACK JSR PC,TPMARK ;WRITE EOF TST (SP)+ ;ERRORS BNE SRVDER ;YES MOVB #10,MPL+MPLTYP ;REC TYPE = DC-OUT-TE OD COP ; 0:N0FG C7 2DECOP OL TTSB . GEPA . 3 -7081-;0 E ERTHT NO" RM"T ; RR E : 2$ 1 ORRR EONSIERNVCO ; RR E : 0$ 1) NY AIF (NELIT EX NOR FCKBA ; 0 A1FG C MP J UT OCKBA" RM"TE ITWR ; RMTTOUC, P SR J STMDTR1+LGFI1, R B OV M RSTOCADIINW NEH IT WGEMA IM"TR "LLFI ;MZMTTR1+LGFI0, R B OV M $: 8L ILS WAM RAPAT PUINF IAGFLT DST ULFADE ; 1 ,RSTBDHU # OV M $: 6$ 8 0 A1FG C MP J UT OCKBAE BLTAR TEMED TEDAUPE ITWR ; R LW F EFIL F TERI WERFT ACKLOR EACL ;2 CLFF C B LR C TEBYE ISNOR EACL ; ) R2 ( B LR C 2 R NC I : 2$ 2 GEMA ILLFI ; 2)(R1, R B OV M : 0$ 2T MILIE OVAB# E US ; RR E 0$ 2 LE B N SEXU#M1, R MP C 2$ 2 EQ B #SE UEAAR ; R12,W0MP T OV M 2 R NC I : 8$ 1 GEMA ILLFI ; 2)(R1, R B OV M : 6$ 1 ITIM LVEBO A #ODPR ; RR E 6$!CTION TO STACK JSR PC,TPMARK ;WRITE EOF TST (SP)+ ;ERROR? JNE SRVEFM ;YES. FATAL INC R0 ;FLAG: 1ST WRITE DONE. MOVB #11,MPL+MPLTYP ;SET RECORD TYPE BR SRVC15 ;2CD WRITE 10$: MOV #MPLDCO,-(SP) ;SET LOG FNCT JSR PC,DETAF1 ; DETACH CLR RECTYP ;INDICATE RECORD TYPE NOT MATERIAL JMP SRVEOK ;EXIT. ALL OK. "RAILER CLRB MPL+MPLCMD ;HANDLER COMMAND MOV #MPHWRT,MPHLST+MPHFNC ;WRITE MOV #MPHDSZ,MPHLST+MPHNWD ;WC MOV #MPL,-(SP) ;PRE-HANDLER LIST ADDRESS JSR PC,MTIO ;ISSUE WRITE TST MPL+MPLERR ;ERRORS ? BEQ SRVD20 ;NO CMP #MPLMTE,MPL+MPLERR ;FATAL? BEQ SRVDER ;YES 57 71 39 .BYTE 172 ; 58 72 3A LE B #21, R MP C $ 6 EQ B 2)R O(1 AGFLT DSD/ST ; R12,W0MP T OV M $: 4L GALEILS WAM RAPAT PUINF INEZOT ULFADE ; 0 ,RONBZHU # OV M $: 2$ 4 LE B #50, R MP C $ 2 EQ B ) -5(1Z TM ; R01,W0MP T OV M 3 -7171-;0RYNABIO TRSTOCADIINE ON ZMETIT ERNVCO ; $ 101,M0AK P E OV M 3 -7081-;0 2$ 1 R B K OC LTHWI" RM"TN IADRE ; MLTRINC, P SR 1 LE B N RDXP#M1, R MP C 8$ 1 EQ B #ODPR ; R13,W0MP T OV M E YT BXTNE ; 2 R NC I : 4$ 1 GEMA ILEAB TLLFI ; 2)(R1, R B OV M : 3$ 1T MILIE OVAB# E OBPR ; RR E 3 -7263- 0 H UGROTHT IET.L.. ; 3$ 1 EQ B 3 -7263- 0 . .. #BERO PLTUAEF DHE TIST IIF ; N RBFP#D1, R MP C 3$ 1 LE B N RBXP#M1, R MP C 4$ 1 EQ B # E OBPR ; R15,W0MP T OV M %; ; ; DC-OUTPUT-TAPE-CLOSED - RECORD TYPE 20 ; ; SRVD10: ; CMPB DCOUTP,MTBUF1+MTHDCT ;TAPE #'S MATCH? JNE SRVEBD ;NO JSR PC,SRVD15 ;CLOSE DC OUT TST (SP)+ ;ERRORS? JNE SRVEFM ;YES JMP SRVEOK ;NO ; ; SRVD15: ;CLOSE DC OUT MOV (SP),-(SP) ;PUSH RETURN CLR 2(SP) ;GOOD RETURN & .BYTE 136 ; 59 73 3B .BYTE 114 ; 60 74 3C .BYTE 176 ; 61 75 3D .BYTE 156 ; 62 76 3E .BYTE 157 ; 63 77 3F .BYTE 174 ; 64 100 40 .BYTE 301 ; 65 101 41 .BYTE 302 ; 66 102 42 .BYTE 303 ; 67 103 43 .BY J S ORATICND INEZOE IM TTEDAUP: 26E OD-COP ; 0:M0FG C ! !!!!!! ; O TGCIR FOD TEENEMPLIMT NO ; R ERPC O MP J LEAB TP"TM "TEDAUP: 25E OD-COP ; 0:L0FG C5 2DECOP OL TTSB . 6 2DECOP OL TTSB . 3 -7192- 0 GEPA . P TOM RAOGPRO TRNTURE ; 0 A1FG C MP J UT OCKBAE BLTAR TEMED TEDAUPE ITWR ; R LW F EFIL F TERI WERFT A : EDORSTE BOT NLLWIO ER ZIST HA TRSTEMERAPAE RETHG INOWLLFOE THF ONY A ;. RSTEMERAPAT PUINE THH IT WRYNT E'SERET MHE TLLFIO TMETIS IITW NO ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;T IZETILUSOAB ; R21, R DD A RYNT E'SERET MISTHO TEXND IESIV G*4 ; 2 R SL A 2 R SL A 3 -7082- 0 L EL CISTHR FOX DEINE ORSTRE ; R21,C-SETR*MRNMTMX # DD A : 2$ 1E ONR HEOTAND EA RGO ; 0$ 1 R B S IA BND AAR PNGTINI-IREY .B.. ;) CLR DCOUTP ;YES. INDICATE CLOSED. MOV #MPLDCO,-(SP) ;SET DC OUTPUT AS LOGICAL FUNCTION JSR PC,ATTAF1 ; ISSUE ATTACH MOV #MPLDCO,-(SP) ;LOGICAL FUNCTION TO STACK JSR PC,TPMARK ;WRITE EOF TST (SP)+ ;ERRORS BNE SRVDER ;YES MOVB #10,MPL+MPLTYP ;REC TYPE = DC-OUT-TRAILER CLRB MPL+MPLCMD ;HANDLER COMMAND MOV #MPHWRT,MPHLST+MPHFNC ;WRI*TE 304 ; 68 104 44 .BYTE 305 ; 69 105 45 .BYTE 306 ; 70 106 46 .BYTE 307 ; 71 107 47 .BYTE 310 ; 72 110 48 .BYTE 311 ; 73 111 49 .BYTE 321 ; 74 112 4A .BYTE 322 ; 75 113 4B .BYTE 323 ; 76 114 4C .BYTE 3CKLOR EACL ;2 CLFF C B LR C TEBYE ISNOR EACL ; ) R2 ( B LR C 2 R NC I : 2$ 2 GEMA ILLFI ; 2)(R1, R B OV M : 0$ 2T MILIE OVAB# E US ; RR E 0$ 2 LE B N SEXU#M1, R MP C 2$ 2 EQ B #SE UEAAR ; R12,W0MP T OV M 2 R NC I : 8$ 1 GEMA ILLFI ; 2)(R1, R B OV M : 6$ 1 ITIM LVEBO A #ODPR ; RR E 6$ 1 LE B N RDXP#M1, R MP C 8$ 1 EQ B #ODPR ; R13,W0MP T OV M R12,LGFI # OV M ..I. IPETYA R FOE AREPPR ; L3FCCF2, # B OV M RECON ILLCET ECRRCOE THE AV HWE ; 2$ 1 LE B 3 -7082- 0 EXND IOMFRF OFT UNCO ; R2C,SETR*MRNMTMX # UB S LLCE" TR"MA N IADRE ; NTLS F EFIL F : 0$ 13 -7192- 0 E IM TSTIR FOR FITIN ; 6 CLFF C LR C Y NL O IPETY: CKLOE ITWR ; L2FCCF2, # OV M R"MT "IND EA RTOE AREPPRW NO ; L1FCCFR,MT # OV M A RE A IPETYO T-TE MOV #MPHDSZ,MPHLST+MPHNWD ;WC MOV #MPL,-(SP) ;PRE-HANDLER LIST ADDRESS JSR PC,MTIO ;ISSUE WRITE TST MPL+MPLERR ;ERRORS ? BEQ SRVD20 ;NO CMP #MPLMTE,MPL+MPLERR ;FATAL? BEQ SRVDER ;YES 57 71 39 .BYTE 172 ; 58 72 3A .BYTE 136 ; 59 73 3B .BYTE 114 ; 60 74 .24 ; 77 115 4D .BYTE 325 ; 78 116 4E .BYTE 326 ; 79 117 4F .BYTE 327 ; 80 120 50 .BYTE 330 ; 81 121 51 .BYTE 331 ; 82 122 52 .BYTE 342 ; 83 123 53 .BYTE 343 ; 84 124 54 .BYTE 344 ; 85 125 55 .BYTE 345 E YT BXTNE ; 2 R NC I : 4$ 1 GEMA ILEAB TLLFI ; 2)(R1, R B OV M : 3$ 1T MILIE OVAB# E OBPR ; RR E 3 -7263- 0 H UGROTHT IET.L.. ; 3$ 1 EQ B 3 -7263- 0 . .. #BERO PLTUAEF DHE TIST IIF ; N RBFP#D1, R MP C 3$ 1 LE B N RBXP#M1, R MP C 4$ 1 EQ B # E OBPR ; R15,W0MP T OV M : EDORSTE BOT NLLWIO ER ZIST HA TRSTEMERAPAE RETHG INOWLLFOE THF ONY A ;. RSTEMERAPAT PUINE THERNTOI PITIN ; R11,LGFI # OV M R23, R OV M 0 -8 1X:DEIN ; R31, R DD A 3 ,RRNMTMX # UL M 3 R EC D #OTSP ; R30, R OV M ":TR"MO NT IEXND INDFI, EDCKHE CENBEE AV H #OTSPD AN# R TEMET HA TOW N ;$ 6 GT B N TRXM#M1, R MP C $: 8D LIVAIN# R TEME ; RR E $: 6$ 8 NE B #R TEME ; R14,W0MP T OV M $ 2 GT B N PTXS#M0, R MP C $: 4S ITIM LDESIUT O #OTSP ; RR E $: 2$ 413C .BYTE 176 ; 61 75 3D .BYTE 156 ; 62 76 3E .BYTE 157 ; 63 77 3F .BYTE 174 ; 64 100 40 .BYTE 301 ; 65 101 41 .BYTE 302 ; 66 102 42 .BYTE 303 ; 67 103 43 .BYTE 304 ; 68 104 44 .BYTE 305 ; 69 105 45 2 ; 86 126 56 .BYTE 346 ; 87 127 57 .BYTE 347 ; 88 130 58 .BYTE 350 ; 89 131 59 .BYTE 351 ; 90 132 5A .BYTE 135 ; 91 133 5B .BYTE 340 ; 92 134 5C .BYTE 115 ; 93 135 5D .BYTE 137 ; 94 136 5E .BYTE 155 H IT WRYNT E'SERET MHE TLLFIO TMETIS IITW NO ; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;T IZETILUSOAB ; R21, R DD A RYNT E'SERET MISTHO TEXND IESIV G*4 ; 2 R SL A 2 R SL A 3 -7082- 0 L EL CISTHR FOX DEINE ORSTRE ; R21,C-SETR*MRNMTMX # DD A : 2$ 1E ONR HEOTAND EA RGO ; 0$ 1 R B S IA BND AAR PNGTINI-IREY .B.. ; R12,LGFI # OV M ..I. IPETYA R FOE AREPPR ; L3FCCF2, # B OV M RECON I NE B #OTSP ; R01,W0MP T OV M 3 -7171-;0 RYNABIO TMSRAPAT PUINL ALT ERNVCO ; 2$1,K0AK P E OV M E BLTAR TEMEE ATPD U4: 2DECOP-;O 0:K0FG C 4 2DECOP OL TTSB . GEPA . ITEX& H ACTT AM,OR F ; 0 C3FG C MP J 3 -7081-;0 S"RMFO "LEIPLPMUT ENEVPR ; FGSTTL1, # B OV M 2 J0AK P E OV M E.IM T &TEDAD RETO SHE TND A ; E,BLTA" RM"TE TH, NELIT PUINE THM RO FFOINI CIASG INUS, GESAES M ; O"LIFON PE5 .BYTE 306 ; 70 106 46 .BYTE 307 ; 71 107 47 .BYTE 310 ; 72 110 48 .BYTE 311 ; 73 111 49 .BYTE 321 ; 74 112 4A .BYTE 322 ; 75 113 4B .BYTE 323 ; 76 114 4C .BYTE 324 ; 77 115 4D .BYTE 325 ; 78 116 4E 6 ; 95 137 5F .BYTE 171 ; 96 140 60 .BYTE 201 ; 97 141 61 .BYTE 202 ; 98 142 62 .BYTE 203 ; 99 143 63 .BYTE 204 ; 100 144 64 .BYTE 205 ; 101 145 65 .BYTE 206 ; 102 146 66 .BYTE 207 ; 103 147 67 .BYTE 210 ; 1LLCET ECRRCOE THE AV HWE ; 2$ 1 LE B 3 -7082- 0 EXND IOMFRF OFT UNCO ; R2C,SETR*MRNMTMX # UB S LLCE" TR"MA N IADRE ; NTLS F EFIL F : 0$ 13 -7192- 0 E IM TSTIR FOR FITIN ; 6 CLFF C LR C Y NL O IPETY: CKLOE ITWR ; L2FCCF2, # OV M R"MT "IND EA RTOE AREPPRW NO ; L1FCCFR,MT # OV M A RE A IPETYO TERNTOI PITIN ; R11,LGFI # OV M R23, R OV M 0 -8 1X:DEIN ; R31, R "OE THF OONETELSKN -IEDLLFIW/A RE ASG MUTTPOUD OA LOW N ;N IORSVEON COR F #SG MSTLAF ODRAD ; 2SKJPA1, ; - ;- E NCUEEQ SNGLIAL C ; ;K AR MPETAA E ITWRO T -SEPOUR P ; ; RKMATP- E AM NAMGRRO P ; ; * * * ; ; RKMATPL TTSB . GEPA . ENEV . F F 7 17 26 1 ; 77 3 TEBY . 7E 76 1 26 1 ; 17 1 TEBY . 7D 75 1 25 1 ; 20 3 TEBY . 7C 74 1 9 .BYTE 326 ; 79 117 4F .BYTE 327 ; 80 120 50 .BYTE 330 ; 81 121 51 .BYTE 331 ; 82 122 52 .BYTE 342 ; 83 123 53 .BYTE 343 ; 84 124 54 .BYTE 344 ; 85 125 55 .BYTE 345 ; 86 126 56 .BYTE 346 ; 87 127 57 .BYTE:04 150 68 .BYTE 211 ; 105 151 69 .BYTE 221 ; 106 152 6A .BYTE 222 ; 107 153 6B .BYTE 223 ; 108 154 6C .BYTE 224 ; 109 155 6D .BYTE 225 ; 110 156 6E .BYTE 226 ; 111 157 6F .BYTE 227 ; 112 160 70 .BYTE 230 ; 113 DD A 3 ,RRNMTMX # UL M 3 R EC D #OTSP ; R30, R OV M ":TR"MO NT IEXND INDFI, EDCKHE CENBEE AV H #OTSPD AN# R TEMET HA TOW N ;$ 6 GT B N TRXM#M1, R MP C $: 8D LIVAIN# R TEME ; RR E $: 6$ 8 NE B #R TEME ; R14,W0MP T OV M $ 2 GT B N PTXS#M0, R MP C $: 4S ITIM LDESIUT O #OTSP ; RR E $: 2$ 4 NE B #OTSP ; R01,W0MP T OV M 3 -7171-;0 RYNABIO TMSRAPAT PUINL ALT ER24 1 ; 52 1 TEBY . 7B 73 1 23 1 ; 00 3 TEBY . 7A 72 1 22 1 ; 51 2 TEBY . 79 71 1 21 1 ; 50 2 TEBY . 78 70 1 20 1 ; 47 2 TEBY . 77 67 1 19 1 ; 42 2 TEBY . 76 66 1 18 1 ; 45 2 TEBY . 75 65 1 17 1 ; 44 2 TEBY . 74 64 1 16 1 ; 43 2 TEBY . 73 63 1 15 1 ;= 347 ; 88 130 58 .BYTE 350 ; 89 131 59 .BYTE 351 ; 90 132 5A .BYTE 135 ; 91 133 5B .BYTE 340 ; 92 134 5C .BYTE 115 ; 93 135 5D .BYTE 137 ; 94 136 5E .BYTE 155 ; 95 137 5F .BYTE 171 ; 96 140 60 .BYTE 201> 161 71 .BYTE 231 ; 114 162 72 .BYTE 242 ; 115 163 73 .BYTE 243 ; 116 164 74 .BYTE 244 ; 117 165 75 .BYTE 245 ; 118 166 76 .BYTE 242 ; 119 167 77 .BYTE 247 ; 120 170 78 .BYTE 250 ; 121 171 79 .BYTE 251 ; 122 172 NVCO ; 2$1,K0AK P E OV M E BLTAR TEMEE ATPD U4: 2DECOP-;O 0:K0FG C 4 2DECOP OL TTSB . GEPA . ITEX& H ACTT AM,OR F ; 0 C3FG C MP J 3 -7081-;0 S"RMFO "LEIPLPMUT ENEVPR ; FGSTTL1, # B OV M 2 J0AK P E OV M E.IM T &TEDAD RETO SHE TND A ; E,BLTA" RM"TE TH, NELIT PUINE THM RO FFOINI CIASG INUS, GESAES M ; O"LIFON PE"OE THF OONETELSKN -IEDLLFIW/A RE ASG MUTTPOUD OA LOW N ;N IORSVEON COR F #SG MSTLAF ODRAD ; 2S 42 2 TEBY . 72 62 1 14 1 ; 31 2 TEBY . 71 61 1 13 1 ; 30 2 TEBY . 70 60 1 12 1 ; 27 2 TEBY . 6F 57 1 11 1 ; 26 2 TEBY . 6E 56 1 10 1 ; 25 2 TEBY . 6D 55 1 09 1 ; 24 2 TEBY . 6C 54 1 08 1 ; 23 2 TEBY . 6B 53 1 07 1 ; 22 2 TEBY . 6A 52 1 06 1 ; ; 97 141 61 .BYTE 202 ; 98 142 62 .BYTE 203 ; 99 143 63 .BYTE 204 ; 100 144 64 .BYTE 205 ; 101 145 65 .BYTE 206 ; 102 146 66 .BYTE 207 ; 103 147 67 .BYTE 210 ; 104 150 68 .BYTE 211 ; 105 151 69 .BYTE 221 7A .BYTE 300 ; 123 173 7B .BYTE 152 ; 124 174 7C .BYTE 320 ; 125 175 7D .BYTE 117 ; 126 176 7E .BYTE 377 ; 126 177 FF .EVEN .PAGE .SBTTL TPMARK ; ; * * * ; ; PROGRAM NAME - TPMARK ; ; PURPOSE - TO WRITE A TAPE MARK ; ; CALLING SEQUENCE - ; - ; 1,PAKJOV TMPW04,R1 ;METER # BNE 8$ 6$: ERR ;METER # INVALID 8$: CMP R1,#MXMTRN BGT 6$ ; NOW THAT METER # AND SPOT # HAVE BEEN CHECKED, FIND INDEX INTO "MTR": MOV R0,R3 ;SPOT # DEC R3 MUL #MXMTRN,R3 ADD R1,R3 ;INDEX: 1-80 MOV R3,R2 MOV #FILG1,R1 ;INIT POINTER TO TYPE I AREA MOV #MTR,CFFCL1 ;NOW PREPARE TO READ IN "MTR" MOV #2,CF