~~ I>~~~~~~~~a  q~~~ q; PROCESS USER MESSAGE 2 ;  ASK NUMBER OF UNITS ;   INCREMENT NMAX APPROPRIATELY ;   SET DP?DP APPROPRIATELY IN THE EXTER- ;    NAL BLOCK ;  ASK NUMBER OF SECTORS/TRACK ;  ASK NUMBER OF HEADS ;  OUTPUT AN ENTRY BLOCK FOR "NPBLK" ;  SET THE D.P. SWITCH ;  IS THE F.H. DISK SWITCH SET? ;   NO - SET DPNDB AS MASTER AND B.S. DEV. ;   YES - ASK FOR MASTER AND FOR BOOTSTRAP ;    DEVICE, SET POINTERS ACCORDINGLY 1 PUSM2: LDA 0,.UM20  ;"ENTER NUMBER OF UNITS" CALL WRLINE LDA 0,.INBB CALL RDLINE CALL .ASCDB JMP PUSM2  ;ILLEGAL RESPONSE MOV 1,1,SNR JMP PUSM2  ;SO IS 0 LDA 0,B4 ADCZ# 0,1,SZC  ;LESS THAN OR EQUAL TO 4? JMP PUSM2  ; NO LDA 2,DPEP  ; YES ADD 1,2 LDA 0,0,2  ;SET THE APPROPRIATE DP"N"DB STA 0,.DPNP  ;SAVE A POINTER STA 1,TMP0,3 ;TMP0 = # OF UNITS LDA 0,DPICS  ;ADD THE APPROPRIATE CORE RE- SUB 1,1  ; QUIREMENTS TO THE MONITOR ADD 0,1 DSZ TMP0,3 JMP .-2 LDA 0,SYSCS ADD 0,1 LDA 0,DPBCS  ;ADD FIXED DRIVER LENGTH ADD 0,1 STA 1,SYSCS PUM20: LDA 0,.UM21  ;"ENTER NUMBER OF SECTORS/TRACK" CALL WRLINE LDA 0,.INBB CALL RDLINE CALL .ASCDB JMP PUM20  ;ILLEGAL RESPONSE LDA 0,B6 LDA 2,B14 SUB 1,0,SZR  ;MUST BE EITHER 6 OR 12 SUB 1,2,SNR MOV 1,1,SKP JMP PUM20 LDA 0,.NSEC  ;OUTPUT AN ENTRY FOR # SECTORS CALL OENTB STA 1,TMP0,3 ;TMP0 = NUMBER OF SECTORS/TRACK PUM21: LDA 0,.UM22  ;"ENTER NUMBER OF HEADS" CALL WRLINE LDA 0,.INBB CALL RDLINE CALL .ASCDB JMP PUM21  ;ILLEGAL RESPONSE LDA 0,B2  ;MUST BE BETWEEN 2 AND 20 LDA 2,B24 SUBZ# 0,1,SZC ADCZ# 2,1,SZC JMP PUM21 LDA 0,.NHEA  ;OUTPUT AN ENTRY FOR # HEADS CALL OENTB SUB 0,0  ;AC1 = NUMBER OF HEADS ADD 1,0 DSZ TMP0,3 JMP .-2 STA 0,TMP0,3 ;TMP0 = #HEADS * #SECTORS/TRACK SUB 1,1 LDA 0,CCYL ADD 0,1 DSZ TMP0,3 JMP .-2 LDA 0,.NPBL  ;AC1 = #HEADS * #SECTORS * #CYL. CALL   ;OUTPUT AN ENTRY FOR NPBLK OENTB LDA 0,.NCYL  ;OUTPUT AN ENTRY FOR # CYLS LDA 1,CCYL CALL OENTB ADC 1,1  ;SET THE DISK-PACKS SWITCH STA 1,DKPSW LDA 0,.DP0P  ;ASSUME ITS THE MASTER AND STA 0,MSDP  ; BOOTSTRAP DEVICE LDA 0,.DPBS STA 0,BSP LDA 0,DSKSW  ;IS F.H. DISK SWITCH SET? INC 0,0,SZR   RTRN   ; NO - RETURN PUM22: LDA 0,.UM23  ; YES - ASK SOME MORE CALL   ;"ENTER MASTER DEVICE" WRLINE LDA 0,.INBB CALL RDLINE MOVZR 0,2  ;F.H. DISK? LDA 0,0,2 LDA 1,DKT LDA 2,.DKDC STA 2,MSDP SUB 0,1,SNR  ; NO JMP PUM23  ; YES LDA 1,DPT  ;DISK PACK? LDA 2,.DP0P STA 2,MSDP SUB 0,1,SZR JMP PUM22  ; NO - ASK AGAIN PUM23: LDA 0,.UM24  ;"ENTER BOOTSTRAP DEVICE" CALL WRLINE LDA 0,.INBB CALL RDLINE MOVZR 0,2  ;F.H. DISK? LDA 0,0,2 LDA 1,DKT LDA 2,.DKBS STA 2,BSP SUB 0,1,SNR  ; NO RTRN   ; YES - RETURN LDA 1,DPT  ;DISK PACK? LDA 2,.DPBS STA 2,BSP SUB 0,1,SZR JMP PUM23  ; NO - ASK AGAIN RTRN   ; YES - RETURN ; CONSTANTS DPEP: . .DP0P: DP0N DP1N DP2N DP3N DPT: "D*400+"K DKT: "D*400+"S ; ; PROCESS USER MESSAGE 3 (MAG TAPE UNITS) ; ;  ASK NUMBER OF UNITS ;  INCREMENT THE BUFFER POOL COUNTER ;  ADD DRIVER SIZE TO NMAX ;  SET MTA PRESENT SWITCH ;  RETURN ; 0 PUSM3: LDA 0,.UM20  ;"ENTER NUMBER OF UNITS" CALL WRLINE LDA 0,.INBB CALL RDLINE CALL .ASCDB JMP PUSM3  ;ILLEGAL MOV 1,1,SNR JMP PUSM3  ;0!!! LDA 0,B10 ADCZ# 0,1,SZC  ;MORE THAN 8!!!!! JMP PUSM3 LDA 0,BPC  ;OK, BUMP THE BUFFER POOL COUNT INC 1,1  ; BUMP THE COUNT ADD 1,0 STA 0,BPC LDA 0,SYSCS LDA 1,MTACS ADD 1,0 STA 0,SYSCS ADC 1,1 STA 1,MTASW RTRN ; ; ; OUTPUT RELOCATABLE DATA BLOCK ; ;  AC1 - DATA WORD ;  PRM0 - ADDRESS (RELOCATABLE) ; ; 0 ORLDB: LDA 3,.RLDB STA 1,DATA,3 ;STORE THE DATA WORD LDA 0,PRM0,2 STA 0,ADDRE,3 ;STORE THE ADDRESS (RELOCATABLE) MOV 3,1 CALL   ;INSERT THE CHECKSUM CICS LDA 0,.OUTB CALL   ;SWAP INTO PUNCH FORMAT SRLB MOVZL 0,0 LDA 1,RLBBC  ;OUTPUT THE BLOCK TO CHANNEL 2 .SYSTM .WRS 2 JSR ERR RTRN RLBBC: 20  ;BYTECOUNT FOR OUTPUTTING A RELOCATABLE   ; DATA BLOCK ; ; CK01 ; ;  CHECK FOR ZERO OR ONE ; ;  INPUT: ; ;   AC0 - BYTE POINTER TO TEST CHARACTER ; ;  OUTPUT: ; ;   CONDITIONAL RETURNS- ;    CALLING LOC. + 1 => NEITHER ;    CALLING LOC. + 2 => 0 ;    CALLING LOC. + 3 => 1 ; ; 0 CK01: ISZ SSRTN,2 ISZ SSRTN,2 CALL LDBT LDA 0,ASC0 LDA 3,ASC1 SUB# 1,3,SNR RTRN DSZ SSRTN,2 SUB# 1,0,SNR RTRN DSZ SSRTN,2 RTRN ASC0: "0 ASC1: "1 ; ; CICS ; ;  COMPUTE AND INSERT CHECKSUM ; ;  INPUT: ; ;   AC1 - POINTER TO THE RELOCATABLE BLOCK ;    REQUIRING A CHECKSUM ; ;  OUTPUT: ; ;   THE APPROPRIATE CHECKSUM IS INSERTED ;   INTO THE BLOCK ; ; 2 CICS: MOV 1,2  ;COMPUTE AND INSERT THE CHECKSUM STA 2,TMP0,3 ; INTO THE SPECIFIED BLOCK LDA 1,WC,2 LDA 0,FRLWC ADD 0,1 STA 1,TMP1,3 SUB 0,0 STA 0,CKSUM,2 CICS0: LDA 1,0,2 ADD 1,0 INC 2,2 ISZ TMP1,3 JMP CICS0 SUB 1,1 SUB 0,1 LDA 2,TMP0,3 STA 1,CKSUM,2 RTRN ; ; ; SRLB ; ;  SWAP RELOCATABLE BLOCK FOR PUNCH ; ;  INPUT: ; ;   AC0 - POINTER TO DESTINATION ;   AC1 - POINTER TO SOURCE ; ;  OUTPUT: ; ;   MOVES THE RELOCATABLE BLOCK SPECIFIED BY ;   AC1 TO OUTPUT BUFFER, SWAPPING THE RIGHT ;   AND LEFTIONS OF EACH WORD ; ; 0 SRLB: MOV 0,3 MOV 1,2 LDA 1,WC,2 LDA 0,FRLWC ADD 0,1  SRLB0: LDA 0,0,2 MOVS 0,0 STA 0,0,3 INC 2,2 INC 3,3 INC 1,1,SZR JMP SRLB0 RTRN  ; ; ; OUTPUT NORMAL EXTERNAL (ENTRY) BLOCK ; ;  AC0 - WORD POINTER TO RADIX 50 SYMBOL ;  AC1 - EQUIVALENCE VALUE ( -1 IF ENTRY POINT ;   IS "ONXTB" ; ;  OUTPUTS TH APPROPRIATELY FORMATTED RELOCATABLE ;  .EXTN (.ENT) BLOCK TO CHANNEL 2 ; ; 0 ONXTB: LDA 2,.NXTB  ;AC2 POINTS TO .EXTN BLOCK ADC 1,1,SKP 0 OENTB: INC# 1,1,SZR  ;AC2 POINTS TO ENTRY BLOCK LDA 2,.ENTB MOV 0,3 LDA 0,0,3  ;STORE THE PASSED RADIX SYMBOL STA 0,RDXW0,2 ; IN THE BLOCK LDA 0,1,3 STA 0,RDXW1,2 STA 1,EQUIV,2 ;STORE THE PASSED EQUIVALENCE MOV 2,1 CALL   ;COMPUTE AND INSERT THE CHECKSUM CICS LDA 0,.OUTB CALL   ;SWAP THE RELOCATABLE BLOCK FOR SRLB   ; PUNCH OUTPUT MOVZL 0,0  ;AC0 IS NOW A BYTE POINTER LDA 1,BLKBC  ;AC1 CONTAINS BYTE COUNT .SYSTM .WRS 2 JSR ERR RTRN BLKBC: 22  ;BYTECOUNT FOR OUTPUTTING ENTRY OR   ; NORMAL EXTERNAL BLOCK 0 ONXTC: LDA 2,.NXTB  ;OUTPUT AN EXTERNAL BLOCK WITH SUB 1,1  ; AN EQUIVALENCE OF 0 JMP OENTB+2 ; ; OUTPUT A START BLOCK TO CHANNEL 2 ; 0 OSTRT: LDA 1,.STBK  ;INSERT CHECKSUM CALL CICS LDA 0,.OUTB CALL   ;FORMAT FOR PUNCH SRLB MOVZL 0,0  ;AC0 IS NOW A BYTE POINTER LDA 1,STBBC  ;AC1 CONTAINS BYTECOUNT .SYSTM .WRS 2 JSR ERR RTRN STBBC: 16  ;START BLOCK BYTECOUNT ; ; OUTPUT A TITLE BLOCK TO CHANNEL 2 ; 0 OTBLK: LDA 1,.TITB CALL   ;INSERT CHECKSUM CICS LDA 0,.OUTB CALL SRLB   ;FORMAT FOR PUNCH MOVZL 0,0  ;AC0 -> PUTPUT BUFFER LDA 1,BLKBC  ;AC1 = COUNT .SYSTM   ;OUTPUT THE BLOCK .WRS 2 JSR ERR RTRN ; ; ; READ LINE ; ;  AC0 - BYTE POINTER TO INPUT BUFFER ; ;  READS A LINE FROM CHANNEL 0 AND STORES A NULL ;  OVER THE CARRIAGE RETURN ; ; 0 RDLINE: .SYSTM  .RDL 0 JSR ERR STA 1,SSAC1,2 ADD 1,0 SUB 1,1 ADC 1,0 CALL STBT RTRN ; ; PAGE ZERO CONSTANTS ; .ZREL ERR: .SYSTM .ERTN JMP . B2: 2 B4: 4 B6: 6 B10: 10 B14: 14 B24: 24 B50: 50 B40: 40   ;BINARY CONSTANTS B60: 60 B400: 400 .USM0: USM0*2   ;USER MESSAGE BYTE POINTERS .USM1: USM1*2 .USM2: USM2*2 .USM3: USM3*2 .USM4: USM4*2 .USM5: USM5*2 .USM6: USM6*2 .USM7: USM7*2 .USM8: USM8*2 .UM10: UM10*2 .UM20: UM20*2 .UM21: UM21*2 .UM22: UM22*2 .UM23: UM23*2 .UM24: UM24*2 .UM40: UM40*2 .USMI: USMI*2 .PTRS: PTRS   ;RADIX 50 SYMBOL POINTERS .PTPS: PTPS .CDRS: CDRS .TITB: TITB .PLTS: PLTS .MTS: MTS .BCEC: BCECS .RLDB: RLDB .ENTB: ENTB .NXTB: NXTB .INBB: INB*2   ;INPUT BUFFER BYTE POINTER .OUTB: OUTB   ;OUTPUT BUFFER POINTER .TTO: TTON*2   ;$TTO POINTER .TTI: TTIN*2   ;$TTI POINTER SYSCS: .BLK 1  ;SYSTEM CORE SIZE ABSCS: .BLK 1  ;ABSOLUTE CORE SIZE PTRCS: CSPTR PTPCS: CSPTP LPTCS: CSLPT CDRCS: CSCDR PLTCS: CSPLT MTACS: CSMTA BUFZ: CSBUF CCYL: 203.  ;CONSTANT # OF CYLINDERS FRLBC: 16   ;FIXED RLB BYTE COUNT FRLWC: -6   ;FIXED RLB WORD COUNT FMCS: CSFM  ;FIXED MONITOR CORE STORAGE .STBK: STRB .SGNC: 2*SGNC .SYS0: 2*SYSN0 .RLC: 2*RLC BMSK: 177400 .ABSF: 22222   ;ABSOLUTE FLAGS DSKSW: .BLK 1 ;SWITCHES DKPSW: .BLK 1 MTASW: .BLK 1 BPC: .BLK 1 ;BUFFER POOL COUNT BSP: .BLK 1 ;POINTER TO BOOTSTRAP SYMBOL MSDP: .BLK 1 ;POINTER TO MDCT CONTENTS SYMBOL .NBLK: NBLK .NPBLK: NPBLK .DKDC: DKDC .DSKD: DSKDC .DKBS: DKBS .DPNP: .BLK 1 ;POINTS TO ONE OF D.P. EXTERNALS .MDCT: MDCT  ;POINTS TO MDCT SYMBOL .BPEC: BCECS .DPBS: DPBS DSKCS: CSDSK DPBCS: CSDPB DPICS: CSDPI .NHEA: NHEAD .NSEC: NSECT .NCYL: NCYL .LP13: LP132 .LP80: LP80 ; ; RELOCATABLE CONSTANTS ; .NREL .TXTM 1 USM0: .TXT /CORE STORAGE (IN THOUSANDS OF WORDS) / USM1: .TXT / DSK? / USM2: .TXT / DKP? / USM3: .TXT / MTA? / USM4: .TXT / PTR? / USM5: .TXT / PTP? / USM6: .TXT / LPT? / USM7: .TXT / CDR? / USM8: .TXT / PLT? / UM10: .TXT / ENTER DISK STORAGE (IN THOUSANDS OF WORDS) / UM20: .TXT / ENTER NUMBER OF UNITS / UM21: .TXT * ENTER NUMBER OF SECTORS/TRACK * UM22: .TXT / ENTER NUMBER OF HEADS / UM23: .TXT / ENTER MASTER DEVICE / UM24: .TXT / ENTER BOOTSTRAP DEVICE / UM40: .TXT / ENTER COLUMN SIZE / USMI: .TXT /RESPOND "1" (YES) OR "0" (NO) REGARDING SYSTEM CONFIGURATION<15>/ SYSN0: .TXT /SYS000.RB/ RLC: .TXT *^O/N* SGNC: .TXT /NREL/ TTON: .TXT /$TTO/ TTIN: .TXT /$TTI/ LP132: FL*50+FP*50+F1 F3*50+F2*40+1  ;RADIX 50 SYMBOLS LP80: FL*50+FP*50+F8 F0*50+0*40+1 MTS: FM*50+FT*50+FA FD*50+FC*40+1 BCECS: FB*50+FC*50+FE FC*50+0*40+0 PTPS: 123512 43641 PTRS: 123514 43641 CDRS: 51614 43641 PLTS: FP*50+FL*50+FT FD*50+FC*40+1 DP0N: FD*50+FP*50+F0 FD*50+FB*40+1 DP1N: FD*50+FP*50+F1 FD*50+FB*40+1 DP2N: FD*50+FP*50+F2 FD*50+FB*40+1 DP3N: FD*50+FP*50+F3 FD*50+FB*40+1 NBLK: FN*50+FB*50+FL FK*50+FS*40+0 NPBLK: FN*50+FP*50+FB FL*50+FK*40+0 MDCT: FM*50+FD*50+FC FT*50+0*40+0 DKDC: FD*50+FS*50+FK FD*50+FB*40+1 DSKDC: FD*50+FS*50+FK FD*50+FC*40+1 DPBS: FD*50+FP*50+FB FO*50+FO*40+1 DKBS: FD*50+FK*50+FB FO*50+FO*40+1 NCYL: FN*50+FC*50+FY FL*50+0*40+0 NHEAD: FN*50+FH*50+FE FA*50+FD*40+0 NSECT: FN*50+FS*50+FE FC*50+FT*40+0 INB: .BLK 50  ;INPUT BUFFER OUTB: .BLK 50  ;OUTPUT BUFFER ; ; ENTB: 3  ;ENTRY BLOCK -3  ;WORD COUNT 22222  ;ABSOLUTE FLAGS (FOR X DISPLACEMENTS) 0 0 .BLK 1 ;CHECKSUM .BLK 3 ;RADIX 50 SYMBOL AND THE EQUIVALENCE WORD NXTB: 5  ;NORMAL EXTERNAL BLOCK -3 22222  ;ABSOLUTE FLAGS 0 0 .BLK 1 ;CHECKSUM .BLK 3 ;RADIX 50 SYMBOL AND THE ADDRESS OF LAST   ; REFERENCE (-1 => NO REFERENCES) STRB: 6  ;START BLOCK -1  ;WORD COUNT 20000  ;RELO FLAGS 0 0 .BLK 1 ;CHECK SUM 100000 RLDB: 2  ;RELOCATABLE DATA BLOCK -2  ;WORDCOUNT 042000  ;NORMAL RELOCATABLE FLAGS 0 0 .BLK 1 ;CHECKSUM .BLK 2 ;ADDRESS & DATA TITB: 7  ;TITLE BLOCK -3 0 0 0 .BLK 1 ;CHECKSUM FS*50+FY*50+FS ;TITLE IS "SYS00" F0*50+F0*40+4 0 PATCH: .BLK 100 .END INIT a *U*U*U*UL <3