.SBTTL CONTROL RAM CONSOLE FUNCTIONS, 9-SEPTEMBER-75 $EC: DFLEGAL ;FUNCTION LEGAL ? TTISDL BCS 8$ ;NON-NUMBER 1$: TTICRA ;READ IN C-RAM ADDRESS BR 3$ 8$: BVC 82$ MOV $ECADR,R0 ;COLON, READ & LIST SAME CRAM ADDRESS INC $INPTC BR 33$ 82$: TTBTRM $ALLEC=. DFRDT ;EXAMINE PRESENT C-RAM OUTPUT RCRAM2 JSR PC,$ECGET PUSH $ECADR DFRDT ;READ HIGH ORDER BITS RCRAM1 POP R0 ;LOW ORDER TO R0 JSR PC,$ECGET ASL R0 ;POSITION TO 6-0 ASL R0 SWAB R0 BISB R0,$ECADR ;STUFF LOW ORDER MOV #-1,R0 ;-1 READS CURRENT C-RAM OUTPUT BR 33$ 3$: MOV R0,$ECADR ;SAVE C-RAM ADDRESS 33$: RCRAM ;READ THE RAM ADDRESS MOV R0,$ADR1 ;SAVE STARTING ADDRESS OF DATA LIST TST ALLFLG BNE 91$ 9$: PCRLF ;PRINT OCTAL VALUE OF C-RAM JSR PC,$$ECA ;PRINT C-RAM ADDRESS MOV $ADR1,R5 ;GET C-RAM DATA LIST ADDRESS ADD #12,R5 MOV (R5),R4 ;SAVE SPEC MOV -(R5),R0 ;PRINT 1ST C-RAM WORD, LAST IN LIST PNTOCT MOV -(R5),R0 ;PRINT 2ND C-RAM WORD PNTOCT MOV -(R5),R0 ;PRINT 3RD C-RAM WORD PNTOCT MOV -(R5),R0 ;PRINT 4TH C-RAM WORD PNTOCT MOV -(R5),R0 ;PRINT 5TH C-RAM WORD PNTOCT MOV R4,R0 ;PRINT 6TH C-RAM WORD (SPEC) PNTODT 2 91$: MOV $ECADR,R0 MOV $ADR1,R1 PNTCRM ;PRINT C-RAM BY LOGICAL FIELDS JMP ALLEXT $ECGET: MOV @.DAT2,$ECADR ;GET BITS 4,5 MOVB @.DAT1,$ECADR ;GET BITS 0-3 SWAB $ECADR BIC #170077,$ECADR RTS PC ;FIELD PRINT OUT, THIS IS THE C-RAM BIT FIDDLER $PCRAM: MOV R0,$ECADR MOV R1,$ADR1 91$: PMSG <\ LOC/ J T AR AD BR MQ FM SCAD SC FE SH # VMA MEM COND SPEC M\> JSR PC,$$ECA ;PRINT C-RAM ADDRESS $DCTPC: MOV #$CRMD0,R5 ;GET PRIMARY DECISION TABLE ADDRESS $DCTP1: CLR R0 MOV (R5)+,R4 ;R4=SECONDARY DECISION TABLE ADDRESS BEQ $END ;WOW WE MADE IT TO THE END 2$: MOVB (R4)+,R3 ;GET A BYTE FROM SECONDARY TABLE BEQ $NEXT ;GET NEXT FIELD MOVB R3,R2 ;CALCULATE BYTE LOCATION ASRB R3 ;/2 ASRB R3 ;/4 ASRB R3 ;/8 ADD $ADR1,R3 MOVB (R3),R3 ;FETCH THE DATA BYTE BICB #370,R2 ;R2=BIT LOCATION 3$: ASRB R3 ;CALCULATE BIT LOCATION DEC R2 ;FOUND BIT YET BGE 3$ ROL R0 ;PLACE BIT IN R0 BR 2$ $NEXT: MOVB (R5)+,R1 ;R1=OCTAL CHARACTERS IN NUMBER PNTODC ;PRINT THE NUMBER MOVB (R5)+,R1 ;R1=POST SPACING PARAMETER JSR PC,$PNTSPC BR $DCTP1 $END: MOV $ADR1,R5 ;SPECIAL PRINT OF SPEC FIELD MOVB 12(R5),R0 PNTODT 2 PSPACE MOVB 4(R5),R0 SHIFTR 4 BIC #177776,R0 PNTOCS TST ALLFLG BEQ 1$ PCRLF 1$: EXIT ;READ THE C-RAM AND PRINT ACTUAL BY E-BUS ARRANGMENT $RC: DFLEGAL ;FUNCTION LEGAL ? TTISDL BCS 3$ ;NON-NUMBER BR 2$ ;NUMBER, MUST BE ADDRESS 1$: MOV #RCRAM1,R0 JSR R5,$RCP ;FIRST 36 MOV #RCRAM2,R0 JSR R5,$RCP ;2ND 36 MOV #RCRAM3,R0 JSR R5,$RCP ;3RD 36 MOV #RCRAM4,R0 JSR R5,$RCP ;4TH 36 TST RPTFLG BNE 11$ PCRLF 11$: JMP $KONSL 2$: TTICRA ;GET C-RAM ADDRESS MOV R0,$ECADR 5$: MOV $ECADR,R0 WWADR ;WRITE C-RAM ADDRESS DFSCLK DFSCLK JSR PC,$$ECA ;PRINT C-RAM ADDRESS PSPACE BR 1$ 3$: BVC 32$ INC $INPTC ;COLON, READ SAME C-RAM ADDRESS BR 5$ 32$: TTBTRM ;READ PRESENT C-RAM ADDRESS BR 1$ $RCP: MOV #.DFRDA,R1 DFRDMV ;READ C-RAM MOV R1,R0 PNT36 ;PRINT IT PSPACE 1$: RTS R5 ;PRINT C-RAM ADDRESS $$ECA: MOV $ECADR,R0 PNTODT 4 PSLASH RTS PC .SBTTL DISPATCH RAM CONSOLE FUNCTIONS ;LOAD D-RAM SUBROUTINE $DDNPR: JMP $PARAM $DD: DFLEGAL ;FUNCTION LEGAL ? TTISDO ;GET THE ADDRESS BIT #1,R0 BNE 98$ ;MUST BE EVEN ADDRESS MOV R0,$ADR ;SAVE THE ADDRESS CMP R0,#776 ;TEST ADDRESS SIZE BLE 2$ 98$: JMP ADRERR 2$: TTIBRK ;READ A CHARACTER BCS $DDNPR ;NO COLON CMPB R0,#': ;IS IT A COLON BEQ 21$ CMPB R0,#'/ BNE $DDNPR 21$: JSR PC,$DDA ;READ A FIELD MOV R0,$DRAM ;STORE "A" FIELD JSR PC,$DDB BIS R0,$DRAM ;STORE "B" FIELD TTISDO ;READ "P" FIELD BIC #177776,R0 ;SAVE "P" FIELD SHIFTL 5 BIS R0,$DRAM TTISDO ;READ "J" FIELD CMP R0,#1777 BLE 3$ $DDSIZ=. PMSG <\J SIZE ERR> JMP $CNTLC 3$: MOV R0,$DRAM+6 ;SAVE FOR COMMON BIC #177760,R0 BIS R0,$DRAM ;SAVE "J" EVEN ;DONE WITH EVEN NOW PROMPT FOR ODD $DRAMO: PMSG < DD > ;PROMPT MOV $ADR,R0 ;ODD ADDRESS INC R0 PNTOCS PMSG <:_> ;PRINT COLON, OUTPUT TTILIN BCS $DDNPR JSR PC,$DDA ;READ ODD "A" FIELD MOV R0,$DRAM+2 ;INSERT ODD "A" FIELD JSR PC,$DDB ;READ ODD "B" FIELD BIS R0,$DRAM+2 TTISDO ;READ ODD "P" FIELD BIC #177776,R0 SHIFTL 5 BIS R0,$DRAM+2 TTISDO ;READ ODD "J" FIELD CMP R0,#1777 BGT $DDSIZ 1$: MOV R0,$DRAM+10 ;SAVE FOR COMMON BIC #177760,R0 BIS R0,$DRAM+2 ;SAVE "J" ODD BIC #17,$DRAM+6 BIC #17,$DRAM+10 CMP $DRAM+6,$DRAM+10 ;ARE BOTH COMMONS THE SAME ? BEQ 2$ CMP #254,$ADR ;IS THIS JRST/JFCL ? BEQ 2$ ;YES, COMMONS MAY BE DIFFERENT PMSG <\J CMN ERR> JMP $CNTLC 2$: MOV $DRAM+10,R0 ;USE ODD COMMON SR R0,6 MOV R0,$DRAM+4 ;INSERT "J" COMMON MOV $ADR,R0 MOV #$DRAM,R1 MRESET WDRAM ;WRITE THE D-RAM PCRLF JMP @#$KONSL 99$: JMP $OCTN $DDA: TTISDO ;READ "A" FIELD SHIFTL 11. BIC #143777,R0 RTS PC $DDB: TTISDO ;READ "B" FIELD SHIFTL 8. BIC #174377,R0 RTS PC ;EXAMINE D-RAM SUBROUTINE $EDNOA: JMP $OCTN $EDODD: JMP ADRERR $ED: DFLEGAL ;FUNCTION LEGAL ? TTISDL BCS 5$ TTISDO ;READ THE ADDRESS BIT #1,R0 BNE $EDODD ;MUST BE EVEN ADDRESS MOV R0,$EDADR 4$: CMP R0,#777 ;TEST FOR HIGHEST ADDRESS BLE 2$ 41$: JMP ADRERR 5$: BVC 52$ 51$: MOV $EDADR,R0 ;COLON, EXAMINE SAME DRAM ADDRESS INC $INPTC BR 4$ 52$: TTBTRM MOV $EDADR,R0 BR 4$ 2$: MOV R0,$EDADR MRESET RDRAM ;READ D-RAM MOV R0,R1 MOV $EDADR,R0 PNTDRM ;PRINT D-RAM JMP $KONSL ;PRINT D-RAM IN LOGICAL FIELD FORMAT $PDRAM: MOV R0,R5 PMSG <\ADR: A B P J\> MOV 4(R1),R0 ;POSITION COMMON J-FIELD SHIFTL 6 ;FOR PRINTING MOV R0,R2 CLR R4 1$: MOV R5,R0 ;PRINT D-RAM ADDRESS PNTODT 3 PSLASH PSPACE MOV (R1),R0 ;PRINT A-FIELD SHIFTR 11. PNTNBR PSPACE MOV (R1),R0 ;PRINT B-FIELD SHIFTR 8. PNTNBR PSPACE MOV (R1),R0 ;PRINT PARITY SHIFTR 5 BIC #177776,R0 PNTNBR PSPACE MOV (R1)+,R0 ;PRINT J-FIELD BIC #177760,R0 BIS R2,R0 PNTODT 4 PCRLF TST R4 ;COMPLETED D-RAM PAIR ? BNE 2$ INC R4 ;NO, SET FLAG INC R5 ;SETUP ODD ADDRESS BR 1$ ;GO DO ODD PRINTOUT 2$: EXIT .SBTTL DEPOSIT C-RAM SUBROUTINE $DCNCL: JMP $PARAM $DC: DFLEGAL ;FUNCTION LEGAL ? TTICRA 2$: MOV R0,$ADR ;SAVE ADDRESS TTIBRK ;GET THE COLON BCS $DCNCL CMPB R0,#': BEQ 20$ CMPB R0,#'/ BNE $DCNCL ;NO COLON 20$: MOV #$TTSAV,R5 ;CLEAR STORAGE CLR (R5)+ CLR (R5)+ CLR (R5)+ CLR (R5)+ CLR (R5)+ CLR (R5) MOV #5,R4 4$: TTISDL BCS 3$ ;USE 0'S AFTER FIRST NON-NUMBER TTCOCT MOV R0,-(R5) DEC R4 BNE 4$ TTISDL BCS 3$ TTCOCT BIC #177740,R0 MOV R0,$TTSAV+12 3$: MOV $ADR,R0 MOV #$TTSAV,R1 WCRAM JMP @#$KONSL ;C-RAM PRIMARY DECISION TABLE ; $CRMD0: .WORD $FJ ;J FIELD .BYTE 4,1 ;CHARACTERS , POST SPACING .WORD $FT ;T FIELD .BYTE 1,1 .WORD $FAR ;AR FIELD .BYTE 2,1 .WORD $FAD ;AD FIELD .BYTE 4,1 .WORD $FBR ;BR FIELD .BYTE 1,2 .WORD $FMQ ;MQ FIELD .BYTE 1,2 .WORD $FFM ;FM FIELD .BYTE 1,2 .WORD $FSCAD ;SCAD FIELD .BYTE 3,2 .WORD $FSC ;SC FIELD .BYTE 1,2 .WORD $FFE ;FE FIELD .BYTE 1,2 .WORD $FSH ;SH FIELD .BYTE 1,1 .WORD $FNUM ;NUM FIELD .BYTE 3,2 .WORD $FVMA ;VMA FIELD .BYTE 1,2 .WORD $FMEM ;MEM FIELD .BYTE 2,3 .WORD $FCOND ;COND FIELD .BYTE 2,3 .WORD 0 ;END OF TABLE WORD ;C-RAM SECONDARY DECISION TABLES $FJ: .BYTE 74.,73. ;J00(5), J01(6) .BYTE 72.,71. ;J02(7), J03(8) .BYTE 70.,69. ;J04(9), J05(10) .BYTE 68.,67. ;J06(11), J07(12) .BYTE 66.,65. ;J08(13), J09(14) .BYTE 64.,0 ;J10(15) $FT: .BYTE 3.,1. ;T00(76), T01(78) .BYTE 0,0 $FAR: .BYTE 43.,11. ;ARXM SEL4(36), ARXM SEL2(68) .BYTE 9.,34. ;ARXM SEL1(70), ARM SEL4(45) .BYTE 15.,13. ;ARM SEL2(64), ARM SEL1(66) .BYTE 0,0 $FAD: .BYTE 51.,47. ;ADB SEL2(28), ADB SEL1(32) .BYTE 54.,53. ;ADA DIS(25), ADA SEL2(26) .BYTE 52.,5. ;ADA SEL1(27), AD CRY(74) .BYTE 55.,59. ;AD BOOLE(24), AD SEL 8 (20) .BYTE 58.,57. ;AD SEL 4 (21), AD SEL 2 (22) .BYTE 56.,0 ;AD SEL 1 (23) $FBR: .BYTE 25.,27. ;BRX LOAD(54), BR LOAD(52) .BYTE 0,0 $FMQ: .BYTE 63.,0 ;MQ SEL(16) $FFM: .BYTE 23.,22. ;FM ADR SEL4(56), FM ADR SEL2(57) .BYTE 21.,0 ;FM ADR SEL1(58) $FSCAD: .BYTE 37.,19. ;SCADB SEL2(42), SCADB SEL1(60) .BYTE 79.,39. ;SCADA DIS(0), SCADA SEL2(40) .BYTE 38.,78. ;SCADA SEL1(41), SCAD 4(1) .BYTE 77.,76. ;SCAD 2(2), SCAD 1(3) .BYTE 0,0 $FSC: .BYTE 17.,0 ;SCM SEL 2(62) $FFE: .BYTE 75.,0 ;FE LOAD(4) $FSH: .BYTE 33.,32. ;SH/ARMM SEL2(46), SH/ARMM SEL1(47) .BYTE 0,0 $FNUM: .BYTE 50.,49. ;#00(29), #01(30) .BYTE 48.,46. ;#02(31), #03(33) .BYTE 45.,44. ;#04(34), #05(35) .BYTE 42.,41. ;#06(37), #07(38) .BYTE 40.,0 ;#08(39) $FVMA: .BYTE 35.,7. ;VMA SEL 2(44), VMA SEL 1(72) .BYTE 0,0 $FMEM: .BYTE 31.,30. ;MEM 00(48), MEM 01(49) .BYTE 29.,28. ;MEM 02(50), MEM 03(51) .BYTE 0,0 $FCOND: .BYTE 62.,61. ;COND 00(17), COND 01(18) .BYTE 60.,26. ;COND 02(19), COND 03(53) .BYTE 24.,20. ;COND 04(55), COND 05(59) .BYTE 0,0