Digital PDFs
Documents
Guest
Register
Log In
AH-9187C-MC
August 1978
109 pages
Original
64MB
view
download
OCR Version
96MB
view
download
Document:
CZRJBC0 RP04-05-06 FORMATTER AUG 1978 bw
Order Number:
AH-9187C-MC
Revision:
000
Pages:
109
Original Filename:
CZRJBC0__RP04-05-06__FORMATTER__AH-9187C-MC__AUG_1978_gray.pdf
OCR Text
RP04/05/06 &iiito e G FICHE1 OF 1 MADE IN USA o CZRIBCO, RPOL/5/6 FMTR MACY11 30A(1052) CZRJBC.P1Y 20~MAR-78 10:22 1 2 3 e 20-MAR-78 o I fa W 1’2 . il Al Rh e ilLG Lo g B 4- B =5 10:25 8 PAGE 3 SEQ 0001 .REM & & 5 & 7 g IDENTIFICATION N }g PRODUCT CODE: AC=9185C-MC 112 PRODUCT NAME: CZRJBCO RP04/5/6 FORMATTER PROGRAM 17 18 PRODUCT DATE: 25-MARCH-1978 %12 MAINTAINER: DIAGNOSTIC ENGINEERING 23 24 25 AlJTHOR: C. HESS 14 20 26 %8 29 30 THE INFORMATION CONTAINED IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL 34 NO RESPONSIBILITY IS ASSUMED FOR THE USE OR RELIABILITY OF gg COPYRIGHT (C) 1974, 1978 BY DIGITAL EQUIPMENT CORPORATION 2(1) THE FOLLOWING ARE TRADEMARKS OF DIGITAL EQUIPMENT CORPORATION: 42 DIGIAL 3 %% 35 ;sg 43 EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. SOF TWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL OR ITS AFFILIATED COMPANIES. DEC PDP DECUS UNIBUS DECTAPE MASSBUS CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P1T 20-MAR-78 10:22 20-MAR-78 10:25 C PAGE 4 SEQ 0002 CONTENTS ABSTRACT REQUIREMENTS 2.1 2.2 EQUIPMENT PRELIMINARY PROGRAMS LOADING PROCEDURES - STARTING PROCEDURES 4.1 4.2 STARTING ADDRESSES OPERATOR ACTION 4.4 OTHER UNIBUS ADDRESSES 4.3 RH11 - RH70 UNIBUS ADDRESS SWITCH REGISTER SETTINGS ERROR MESSAGES MISCELLANEOUS 7.1 7.2 7.3 FORMAT TIMES HALTING THE PROGRAM SURFACE VERIFICATION PROGRAM DESCRIPTION 8.1 8.2 8.3 FORMAT OPERATION CHECK OPERATION POSITIONER VERIFICATION PROGRAM LISTING CZRJBCO, RP0O4/5/6 FMTR CZRJBC.P11 81 LR 84 85 86 87 MACY11 30A(1052) 20-MAR-78 20-MAR-78 10:22 R 1. SRR 95 3? Rl SEQ 0003 e THE RP04/5/6 FORMATTER PROGRAM FORMATS THE DISK PACK AND PERFORMS A CURSORY CHECK OF THE PACK'S SURFACE. THE PROGRAM ALLOWS THE OPERATOR TO SPECIFY ADDRESS LIMITS, PATTERNS, AND EITHER 16 BIT OR 18 BIT FORMAT MODE. THE PROGRAM VERIFIES EACH TRACK WRITTEN AS WELL AS VERIFYING THE FORMAT OPERATION. o S e A Rt ST e 2. EE el G 2.1 98 99 100 101 102 s REQUIREMENTS Sttt EQUIPMENT PDP=11 PROCESSOR 8K MEMORY TELETYPE PROGRAM LOAD DEVICE KW11-L OR KW11-P CLOCK }82 ]gg ) PAGE 5 ABSTRACT gg 90 91 92 93 10:25 RH11 OR RH70 WITH 1 - 8 RPO4, RPO5, RP0O6 DISK DRIVES 2.2 PREL IMINARY PROGRAMS 107 108 }?8 RP04/5/6 DISKLESS CONTROLLER TEST PART 1 (MAINDEC-11-DZRJG) PART 2 (MAINDEC-11-DZRJH) m 112 RP04/5/6 FUNCTIONAL CONTROLLER TEST PART 1 (MAINDEC-11-DZRJI) ]12 PART 2 (MAINDEC-11-DZRJJ) | 115 116 117 118 120 121 122 123 124 125 126 127 128 FURURY — b —d —h — 1%3 3. LOADING PROCEDURES THE PROGRAM MAY BE LOADED FROM PAPER TAPE USING THE ABSOLUTE LOADER OR IT MAY BE LOADED FROM THE APPROPRIATE ‘'XXDP' MEDIA USING THE ASSOCIATED LOADER. THE PROGRAM MAY NOT BE INCLUDED IN AN "XXDP' CHAIN. 4. STARTING PROCEDURES 4.1 STARTING ADDRESSES THE PROGRAM IS STARTED FROM LOCATION 200(8) RH11 OR RH70 WILL NOT BE CHANGED IF THE ADDRESS OF THE CZRJECO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 20-MAR-78 137 138 139 140 141 10:25 E PAGE 6 SEQ 0004 THE PROGRAM IS_STARTED FROM LOCATION 204(8) IF THE ADDRESS OF THE RH11 OR RH70 IS TO BE CHANGED FROM THE PRELOADED VALUE. (SEE SECTION 4.3) 4.2 OPERATION ACTION 1. LOAD THE PROGRAM INTO MEMORY (SEE SECTION 3). 2. LOAD THE STARTING ADDRESS = 200(8) OR 204(8). 3. SET THE SWITCHES AS REQUIRED AND PRESS °'START'. IF THIS IS THE PROGRAM'S FIRST START, THE STATUS OF THE DRIVES ON THE SELECTED MASSBUS SUBSYSTEM WILL BE TYPED OUT. THIS TYPEOUT MAY BE INHIBITED ON SUBSEQUENT STARTS BY SETTING Sw<02>. THE PROGRAM WILL THEN TYPE THE FOLLOWING MESSAGE : v V0o~ 'PROGRAM MODE (C OR F):' ENTER THE APPROPRIATE CODE: 'C' FOR 'CHECK' OPERATION OR ‘'F' FOR "FORMAT & VERIFY'. IF A 'CARRIAGE RETURN' IS ENTERED IN sgg?g¢§5 TO THE REQUEST, THE PROGRAM WILL ASSUME °'FORMAT §& THE PROGRAM WILL THEN ASK FOR THE FORMATTING MODE: 'OPERATE IN 22 SECTOR (16 BIT) MODE (Y OR N)' ENTER THE APPROPRIATE CHARACTER: 'Y' FOR 16 BIT MODE OR 'N' FOR 18 BIT MODE. IF A "CARRIAGE RETURN' IS ENTERED IN RESPONSE TO THIS REQUEST, THE PROGRAM WILL ASSUME 16 BIT MODE. THE PROGRAM WILL THEN ASK FOR A DRIVE: 'DRIVE: N8 BRIRRRAR2BIIN L N N N N S S e sY I Yy 176 ' ENTER THE ADDRESS OF THE DRIVE TO BE FORMATTED. A 'PERIOD' OR ‘CARRIAGE RETURN' ENTRY WILL SELECT DRIVE O. IF THE DRIVE SELECTED IS NOT AVAILABLE, THE PROGRAM WILL TYPE AN ERROR MESSAGE AND RETURN TO THE DRIVE ADDRESS REQUEST. AFTER THE OPERATOR HAS SELECTED A DRIVE, THE PROGRAM WILL ASK FOR ADDRESS LIMITS FOR THE SELECTED DRIVE: 'ENTER ADDRESS LIMITS: ' THE PREVIOUSLY SELECTED OR DEFAULT VALUES FOR BEGINNING CYLINDER AND TRACK AND FOR ENDING CYLINDER AND TRACK WILL BE TYPED OUT. IF A 'CARRIAGE RETURN' IS TYPED AS A RESPONSE, THE PRESENT VALUE WILL BE USED; IF A 'PERIOD' IS TYPED, THE PROGRAM WILL BYPASS THE REMAINING ENTRIES AND WILL USE THEIR PRESENT VALUES. NOTE THAT THE CYLINDER AND TRACK VALUES ARE D E C I M A L NUMBERS. THE ADDRESS SPECIFIED BY THE BEGINNING CYLINDER AND TRACK MUST ?SA%ESEDBEQQSTHE ADDRESS SPECIFIED BY THE ENDING CYLINDER AND CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 20-MAR-78 193 }3% 7. 10:25 F PAGE 7 SEQ 0005 THE PROGRAM WILL THEN ASK FOR THE DATA PATTERN: 196 197 198 533 "SELECT DATA PATTERN (0) ZERO'S (1) ONES (2) WORST CASE:" 201 ENTER THE CODE FOR THE REQUIRED PATTERN. 582 PATTERN. 205 589 THE 'WORST CASE' PATTERN IS THE FOLLOWING OCTAL SEQUENCE REPEATED THROUGH THE DATA AREA OF THE SECTOR: 202 208 5?3 165555 133333 %}; 8. THE PROGRAM WILL THEN TYPE: 3}2 *STARTING FORMAT ON DRIVE N’ 215 OR 216 g}g "STARTING CHECK ON DRIVE N' 219 220 9. gg;- 5%2 TXX' AND RETURN TO THE 'DRIVE' REQUEST. 10. IF THE OPERATOR DOES NOT SELECT A DIFFERENT DRIVE WHEN THE FORMAT OR CHECK OPERATION HAS COMPLETED, THE PROGRAM WILL NOT ALTER THE ADDRESS LIMITS SPECIFIED AT THE START OF THE PREVIOUS OPERATION. IF THE FORMAT OR CHECK OPERATION 1S TERMINATED BY A 'CONTROL C' OR IF A DIFFERENT DRIVE 1S SELECTED, THE PROGRAM WILL RESET THE ADDRESS LIMITS TO THE VALUES APPROPRIATE FOR THE DRIVE TYPE. ggg 236 Sgg 243 24k 245 246 247 CXXX IF A "CONTROL C' IS TYPED WHILE THE PROGRAM IS TYPING THE CURRENT ADDRESS, THE PROGRAM WILL ABORT THE FORMAT (OR CHECK) OPERATION 229 230 231 232 233 241 242 THE OPERATOR CAN DETERMINE WHERE THE DRIVE IS DURING THE FORMAT OR CHECK OPERATION BY TYPING A 'CONTROL C'. THE PROGRAM WILL TYPE THE FOLLOWING MESSAGE: "PRESENT ADDRESS IS: 225 226 ggg szg 'CARRIAGE RETURN' OR "PERIOD' ENTRIES WILL CAUSE THE PROGRAM TO USE THE 'WORST CASE' 11. | : 4.3 TO CHANGE EITHER THE ADDRESSING MODE OR THE OPERATION MODE, THE PROGRAM MUST BE STARTED FROM LOCATION 200(8) OR 204(8) AGAIN. RH11 = RH70 UNIBUS ADDRESS THE PROGRAM ASSUMES THAT THE RH11 OR RH70 ADDRESSES START AT 176700 AND THAT THE VECTOR ADDRESS IS 254. THESE ADDRESSES MAY BE CHANGED WHEN THE PROGRAM IS STARTED FROM LOCATION 204(8). IF THE RH11 = RH70 IS NOT AT THE DEFAULT ADDRESS, THE PROGRAM MUST BE STARTED FROM 204(8) INITIALLY AS THE PROGRAM GOES THROUGH THE ADDRESS CHANGE ROUTINE AT INITIAL START ONLY. ENTER THE RH11 RH70 ADDRESS IN RESPONSE TO THE REQUEST FROM THE PROGRAM. : CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 20-MAR-78 4.4 10:25 G PAGE 8 SEQ 0006 OTHER UNIBUS ADDRESSES LoC TAG CONTENTS FUNCTION 1144 1146 1150 1152 1176 1200 $TKS $TKB $TPS $TPB SLKCSR SLKCSB 177560 177562 177564 177566 172540 172542 TTY KEYBOARD STATUS REGISTER TTY KEYBOARD BUFFER REGISTER TTY PRINTER STATUS REGISTER TTY PRINTER BUFFER REGISTER KW11-P CONTROL REGISTER KW11-P COUNTER REGISTER 1206 $LKS 177546 KW11-L CONTROL REGISTER 1202 SLPVEC 1210 $LKV 104 - A KW11-P VECTOR ADDRESS 100 ;ADDRESS OF KW11-L VECTOR SWITCH REGISTER SETTINGS SW<15>=1...HALT ON ERROR SW<13>=1...INHIBIT ERROR TYPEOUTS ; SW<10>=1...BELL ON ERROR SU<09>'}...LO0P ON ERROR SW<07>=1...PRINT SOFT ERROR REPORTS AS THEY OCCUR 1 SW<02>=1...DON'T DISPLAY SYSTEM STATUS AFTER INITIAL START SW<01>=1...LOOP ON THE CURRENT TRACK SW<00>=1...LOOP THE PROGRAM ON THE SELECTED DRIVE : IF THE PROGRAM IS BEING RUN ON A SWITCHLESS PROCESSOR (I.E. AN 11/34) THE PROGRAM WILL DETERMINE THAT THE HARDWARE SWITCH REGISTER IS NOT PRESENT AND WILL USE A 'SOFTWARE' SWITCH REGISTER. THE 'SOFTWARE' SWITCH REGISTER IS LOCATED AT LOCATION 176 (8). THE SETTINGS OF THE °'SOFTWARE' SWITCHES ARE CONTROLLED THROUGH A KEYBOARD ROUTINE WHICH IS CALLED BY TYPING A "CONTROL G'. THE PROGRAM WILL RECOGNIZE THE 'CONTROL G' AT ANY TIME EXCEPT WHEN THE PROGRAM IS AT A HIGHER PRIORITY PROCESSING AN RP04/5/6 INTERRUPT. THE 'SOFTWARE' SWITCH VALUES ARE ENTERED AS AN OCTAL NUMBER IN RESPONSE TO THE PROMPT FROM THE SWITCH ENTRY ROUTINE: 'SWR = NNNNNN NEW =' EACH TIME SWITCH SETTING ARE ENTERED, THE ENTIRE SWITCH REGISTER IMAGE MUST BE ENTERED. LEADING ZEROS ARE NOT REQUIRED., 'RUBOUT' AND 'CONTROL U' FUNCTIONS MAY BE USED TO CORRECT TYPING ERRORS DURING SWITCH ENTRY. ON PROCESSORS WITH HARDWARE SWITCH REGISTERS, THE REGISTER MAY BE USED. IF °'SOFTWARE' SWITCH THE PROGRAM FINDS ALL 16 SWITCHES IN THE 'UP' POSITION, ALL SWITCH REGISTER REFERENCES WILL BE TO THE égogsttSSéDREGISTER AND THE PROCEDURES DESCRIBED ABOVE MUST CZRJBCO, RPO4/5/6 FMTR MCYH 30A(1052) CZRJBC.P11 20-MAR-78 10:22 305 306 % 20-MAR-78 6. 10:25 H PAGE 9 ERROR MESSAGES 309 1. 312 %}2 2. 315 3. 318 ggg 4. 321 gg% 5. 'ADDRESS PLUG CHANGE BIT SET' - THE PROGRAM FOUND THE 'OPE’ BIT SET FOR THE INDICATED DRIVE. 324 ggg 6. 'RH11 DIDN'T RESPOND TO ADDRESSING' = THE PROGRAM ACCESSED THE RH11 AT THE INDICATED ADDRESS AND RECEIVED NO RESPONSE. ??:%g 7. 'DRIVE OFFLINE' = THE INDICATED DRIVE HAS GONE OFFLINE 329 8. 333 9. %}S‘) g}g 330 gg; 334 335 'RH11 INTERRUPT OCCURRED (RPAS=0) = AN INTERRUPT OCCURRED, BUT NOTHING ON THE MASSBUS IS INDICATING AN ATTENTION. 'UNEXPECTED ATTENTION OCCURRED' = THE INDICATED DRIVE INTERRUPTED, BUT NO INTERRUPT WAS EXPECTED FROM THE INDICATED DRIVE. WAS DETECTED BY THE RH11 WHEN THE INDICATED REGISTER WAS READ. 'MASSBUS PARITY ERROR (MCPE=1)' = A CONTROL BUS PARITY ERROR "MASSBUS PARITY ERROR (PAR=1)' = A CONTROL BUS PARITY ERROR OCCURRED WHEN THE INDICATED REGISTER WAS WRITTEN. ‘'PERSISTENT DRIVE UNSAFE ERROR' - THE INDICATED DRIVE HAS BECOME UNSAFE AND THE CONDITION CANNOT BE CLEARED BY ISSUING ‘DRIVE CLEAR' INSTRUCTIONS. "UNCORRECTABLE MASSBUS PARITY ERROR' = THE PROGRAM ATTEMPTED TO PERFORM AN OPERATION AND DETECTED 3 SUCESSIVE MASSBUS PARITY ERRORS OR THE PROGRAM ATTEMPTED TO CLEAR A °'PAR' ERROR IN THE ggg DRIVE AND A PARITY ERROR OCCURRED. 338 10. 341 ;2% 11. 344 12. 347 %28 13. "CONTROLLER/DRIVE ERROR DURING WRITE CHECK' = A NON-DATA ERROR OCCURRED DURING THE WRITE CHECK. 350 351 14. °'DATA ERROR DURING WRITE CHECK' = A DATA RELATED ERROR OCCURRED DURING A WRITE CHECK OPERATION. A DATA ERROR IS CONSIDERED 354 ggg 15. 'RETRIES NOT SUCESSFUL = SECTOR NOT ACCEPTABLE' = THE INDICATED SECTOR FAILED DURING RETRY FOLLOWING A DATA ERROR. 357 ggg 16. 'CONTROLLER/DRIVE ERROR VERIFYING HEADERS' - AN ERROR OCCURRED DURING THE VERIFICATION PASS AFTER FORMATTING. 360 17. ""HCE' ERROR VERIFYING HEADERS' = A HEADER ERROR OCCURRED DURING gzg %2 gg% 'SOFTWARE TIMEOUT' = THE OPERATION FAILED TO COMPLETE WITHIN 1 SECOND. 'DRIVE UNSAFE ERROR' = A NON-PERSISTENT UNSAFE ERROR OCCURRED DURING THE OPERATION. 'CONTROLLER/DRIVE ERROR DURING WRITE' - THE INDICATED NON-DATA ERROR WAS DETECTED DURING A FORMAT OPERATION. TO BE A 'DCK' ERROR. SEQ 0007 CZRJBCO, RPO4/5/6 FMTR 'CZRJBC.P11 HACY11 30A(1052). 20-MAR-78 10:22 20-HAR-781 10:25 1 I PAGE 10 THE VERIFICATION PASS AFTER FORMATTING. 18. 19. 20. °'CYLINDER FIELD IN HEADER IS NOT CORRECT' - THE CYLINDER FIELD FROM A HEADER READ DURING THE VERIFICATION PASS IS NOT CORRECT. 'WRITE CHECK ERROR' - THE RH11 REPORTED A WRITE CHECK ERROR AND NO DRIVE ERRORS WERE SET. "HARDWARE ERROR DURING WRITE CHECK' = AN ERROR THAT WAS NEITHER A DATA ERROR, WRITE CHECK ERROR, NOR CONTROLLER ERROR OCCURRED DURING A WRITE CHECK. THESE ERRORS COULD BE ONE OF THE FOLLOWING: °'OPI', °'DTE', "HCRC', 'HCE', OR 'FER'. MISCELLANEOUS FORMAT TIME IT TAKES APPROXIMATELY 8 MINUTES TO FORMAT AN ENTIRE RP04/5 PACK AND APPROXIMATELY 16 MINUTES TO FORMAT AN RP0O6 PACK. THE 'CHECK' pggER;éQESFOR AN ENTIRE PACK IS 4 MINUTES FOR RP04/5'S AND 8 MINUTES 7.2 HALTING THE PROGRAM THE OPERATOR SHOULD NOT HALT THE PROGRAM DURING A FORMAT OPERATION. HALTING THE PROGRAM MAY LEAVE A SECTOR INCORRECTLY FORMATTED. TO TERMINATE THE FORMAT, TYPE A 'CONTROL C' AND WHILE THE PROGRAM IS TYPING THE ADDRESS, TYPE ANOTHER °'CONTROL C'; THIS SEQUENCE RETURNS THE PROGRAM TO THE DRIVE ADDRESS ENTRY ROUTINE. 7.3 SURFACE VERIFICATION THE FORMATTER PROGRAM IS NOT INTENDED TO BE USED TO PERFORM DISK PACK VERIFICATION. IF THE PROGRAM REPORTS A SECTOR AS BEING ‘NOT ACCEPTABLE', THIS MAY IN FACT INDICATE A BAD SURFACE:; HOWEVER, SECTORS WHICH "PASSED' MAY OR MAY NOT BE GOOD. PROGRAM DESCRIPTION 8.1 FORMAT OPERATION THE PROGRAM FORMATS THE PACK ONE TRACK AT A TIME BETWEEN THE LIMITS SPECIFIED BY THE DRIVE. THE FORMAT OPERATION CONSISTS OF A WRITE HEADER AND DATA COMMAND FOR THE ENTIRE TRACK FOLLOWED BY A WRITE CHECK HEADER AND DATA COMMAND. IF AN ERROR OCCURS DURING THE WRITE, THE PROGRAM WILL RETRY THE WRITE BEFORE CONTINUING. IF A DATA RELATED ERROR IS DETECTED SEQ 0008 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 20-MAR-78 10:25 1 J PAGE 11 SEQ 0009 DURING THE WRITE CHECK (A DATA ERROR IS DEFINED AS ONE OF THE FOLLOWING ERRORS: °'DCK', 'OPI', °'DTE', 'HCRC', °'HCE', OR 'FER'), THE SECTOR IN ERROR WILL BE REWRITTEN. THE PROGRAM WILL CHECK THE SECTOR TWICE; IF A DATA ERROR IS DETECTED IN THE SECTOR DURING EITHER OF THE WRITE CHECKS, THE PROGRAM WILL DECLARE THE SECTOR AS BEING 'UNACCEPTABLE'. FOLLOWING THIS SEQUENCE, THE REMAINDER OF THE TRACK IS CHECKED. IF DATA ERRORS ARE ENCOUNTERED IN ANY OF THE REMAINING SECTORS, EACH SECTOR WILL BE HANDLED AS DESCRIBED ABOVE. IF A NON-DATA RELATED ERROR OCCURS DURING THE WRITE CHECK, THE PROGRAM WILL RETRY THE COMMAND FOR THE ENTIRE TRACK BEFORE PROCEEDING TO THE NEXT TRACK. IT SHOULD BE NOTED THAT THE FORMATTER PROGRAM FORMATS THE PACK ONLY AND IS NOT DIRECTLY VERIFYING THE SURFACE OF THE PACK. ERRORS THAT ARE ENCOUNTERED MAY BE THE RESULT OF BAD AREAS ON THE PACK BUT, AS THE PROGRAM IS NOT DESIGNED TO PERFORM AN EXHAUSTIVE CHECK OF THE DISK PACK SURFACE, THE PROGRAM CANNOT MAKE THIS CONCLUSION. IN GENERAL, HOWEVER, THE OPERATOR CAN ASSUME THAT SECTORS WHICH THE PROGRAM CALLS 'UNACCEPTABLE' INDICATE BAD AREAS OF THE PACK; UNFORTUNATELY, SECTORS WHICH 'PASS' CANNOT BE ASSUMED TO BE GOOD. DURING THE FORMAT OPERATION, THE PROGRAM FILLS THE DATA FIELD WITH THE PATTERN SELECTED BY THE OPERATCR. THE KEYWORDS IN THE HEADER ARE ALWAYS SET TO ZERO. 8.2 CHECK OPERATION THE CHECK OPERATION IS IDENTICAL TO THE WRITE CHECK PORTION OF THE FORMAT OPERATION OPERATION DESCRIBED IN SECTION 8.1 EXCEPT THAT THE PROGRAM WILL NOT RE-WRITE ERROR SECTORS. 8.3 POSITIONER VERIFICATION AFTER THE PROGRAM COMPLETES THE FORMAT OPERATION, THE POSITIONER IS RETURNED TO THE STARTING CYLINDER AND THE HEADER FROM SECTOR O ON THE STARTING TRACK IS READ. THE CYLINDER ADDRESS FIELD FROM THE HEADER IS COMPARED TO THE REQUESTED CYLINDER; IF THE CYLINDER ADDRESSES DO NOT COMPARE, AN ERROR MESSAGE IS TYPED. THE PROGRAM CHECKS THE CYLINDER ADDRESS FIELD FROM THE HEADER OF SECTOR O ON THE BEGINNING TRACK OF EACH CYLINDER FORMATTED. THIS CHECK IS PERFORMED TO CONFIRM THAT THE DISK'S POSITIONER ADVANCED PROPERLY DURING THE FORMAT OPERATION. PROGRAM LISTING .TITLE a CZRJBCO, RP04/5/6 FMTR ;*COPYRIGHT (C) 1976,1978 ;*DIGITAL EQUIPMENT_CORP. ;*MAYNARD, MASS. 01754 * 20-MAR-78 CZRJBCO, RPO4/5/6 FHTR8 HSC;;1 30A(1052) CZRJBC.P11 20-MAR-7 K_1 10:25 PAGE 12 SEQ 0010 "PROGRAH BY C. HESS *THIS PROGRAM WAS ASSEMBLED USING THE PDP-11 MAINDEC SYSMAC tPACKAGE (MAINDEC-11-DZQAC-C3), JAN 19, 1977. .SBTTL OPERATIONAL SWITCH SETTINGS % 2% SWITCH USE I JE B N 5 3 8 HALT ON ERROR INHIBIT ERROR TYPEOUTS BELL ON ERROR LOOP ON ERROR DON'T DISPLAY SYSTEM STATUS AFTER INITIAL START LOOP ON THE CURRENT TRACK LOOP THE PROGRAM ON THE SELECTED DRIVE B 2 LA B ; 0 .SBTTL TRAP CATCHER ;*ALL UNUSED LOCATIONS FROM 4 - 776 CONTAIN A ‘'.+2 HALT" 000174 000176 s *SEQUENCE TO CATCH ILLEGAL TRAPS AND INTERRUPTS :*LOCATION OQCONTAINS O TO CATCH IMPROPERLY LOADED VECTORS 000174 DISPREG: SWREG: .SBTTL MR AR AR A .WORD .WORD O 0 ; ;SOFTWARE DISPLAY REGISTER ;;SOFTWARE SWITCH REGISTER ACT11 HOOKS A AR AR iRttt a ittt ittt ittt ittt i il $SYPC=. :SAVE PC 000046 iEgng ::1)SET LOC.46 TO ADDRESS OF SENDAD IN .SEOP 000052 TWORD " =$SVPC SBTTL 000200 002110 000204 002100 e S S S VN NS WN vivyuiaviiainiwn ;HOOKS REQUIRED BY ACT11 520 001100 ::2)SET LOC.52 TO 20000 *:“RESTORE PC STARTING ADDRESS = 200 mp BEGIN1 :NORMAL STARTING ADDRESS .SBTTL STARTING ADDRESS TO CHANGE THE RH11 ADDRESS = 204 JMP BEGIN -CHANGE THE RH11 ADDRESS .SBTTL BASIC DEFINITIONS :*INITIA%1880RESS OF THE STACK POINTER #*% 1100 s« STACK= .EQUIV .EQUIV 000011 000012 20000 EMT ,ERROR IOT,SCOPE ;:BASIC DEFINITION OF ERROR CALL :;BASIC DEFINITION OF SCOPE CALL s *MISCELLANEOUS DEF INITIONS HT= LF= 1 12 ::CODE FOR HORIZONTAL TAB ;;CODE FOR LINE FEED CZRJBCO, RPO4/5/6 FMIR H8C551 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAFR~78 1 BASIC DEFINITIONS . PAGE 13 SEQ 0011 529 530 531 532 533 534 535 536 537 538 539 540 000015 000200 177776 CR= CRLF= PS= 15 200 177776 ;:CODE FOR CARRIAGE RETURN ;;CODE _FOR CARRIAGE RETURN-LINE FEED : ;PROCESSOR STATUS WORD 177774 177772 177570 177570 STKLMT= 177774 :sSTACK LIMIT REGISTER ; ;PROGRAM INTERRUPT REQUEST REGISTER : ;HARDWARE SWITCH REGISTER ; ;HARDWARE DISPLAY REGISTER 543 544 545 546 547 548 000004 000005 000006 000007 000006 000007 549 550 551 552 553 554 555 556 957 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 000002 000003 000000 000040 000100 000140 000200 000240 000300 000340 100000 040000 020000 010000 004000 002000 001000 000400 000200 000100 000040 000020 000010 000004 000002 000001 PS,PSW PIRQ= 177772 DDISP= 177570 DSWR= 177570 'GENERA%OPURPOSE REGISTER DEF INITIONS ;sGENERAL REGISTER RO= R1= R2= 1 X2 R4 = X% R3= RS= R6= R7= SP= PC= 13 15 26 X7 %6 X7 ..GENERAL REGISTER ; ;GENERAL REGISTER ; sGENERAL REGISTER s sGENERAL REGISTER s ;GENERAL REGISTER : ;GENERAL REGISTER : sGENERAL REGISTER ::STACK POINTER : :PROGRAM COUNTER 'PRIORIBY LEVEL DEFINITIONS PRO= ;:PRIORITY PR1= 40 ;:PRIORITY PR2= 100 ;sPRIORITY PR3= 140 ;;PRIORITY PRG= 200 :sPRIORITY PRS= 240 ;sPRIORITY PR6= 300 :sPRIORITY PR7= 340 ;sPRIORITY LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL ;%' 'SWITCH REGISTER'" SUITCH DEFINITIONS 100000 SWid= 40000 Sw15= SWi3= swi2= sWil= sW10= SW09= SW08= sw07= SW06= SW05= SWo4: sWwo3= SW02= SWwol= SW00= LEQUIV .EQUIV. JEQUIV .EQUIV .EQUIV JEQUIV JEQUIV .EQUIV 20000 10000 4000 2000 1000 400 200 100 40 20 10 4 2 1 SW09,SW9 SWO08.SW8 SW07.SW7 SW06.SW6 SW0S.SWS SW04.SWé SW03.SW3 SW02.SW2 NOWVESWN=O 541 542 000000 000001 .EQUIV L PAGE 14 CZRJBCO, RP0O4/5/6 FMTR HACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR-78 10:22 BASIC DEFINITIONS 585 586 587 588 589 590 N 592 593 594 595 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 | > 100000 040000 020000 010000 004000 002000 001000 0004 000200 000100 000040 000020 000010 000004 000002 000001 633 634 635 636 637 638 639 640 SWO1,sSwW1 SW00,Sw0 .EQUIV .EQUIV :*DATA BIT DEFINITIONS (BITOO TO BIT15) BIT15= BIT14= BIT13= BIT12= BIT11= BIT10= BIT09= BIT08= BITO7= BITO6= BITO5= BITO4= BITO3= BITO2= BITO1= BIT00= .EQUIV .EQUIV .EQUIV .EQUIV .EQUIV .EQUIV .EQUIV .EQUIV .EQUIV .EQUIV 100000 40000 20000 10000 4000 2000 1000 400 200 100 40 20 10 4 2 1 BIT09,.BITY BITO08,BIT8 BIT07,BIT7 BIT06.BIT6 BITOS5,BITS BIT04,.BIT4 BITO03,BIT3 BIT02,BIT2 BIT01.BIT BIT00,BITO ;*BASIC ''CPU'' TRAP VECTOR ADDRESSES 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 SEQ 0012 000010 000014 000014 000014 000020 000024 000030 000034 000240 ERRVEC= 4 RESVEC= 10 TBITVEC=14 TRTVEC= 14 BPTVEC= 14 ;:TIME OUT AND OTHER ERRORS ..RESERVED AND ILLEGAL INSTRUCTIONS T BIT : :TRACE TRAP : ;BREAKPOINT TRAP (BPT) PWRVEC= 24 ; ;POWER FAIL IOTVEC= 20 :: INPUT/OUTPUT TRAP (IOT) #«SCOPE*+ EMTVEC= 30 TRAPVEC=34 TKVEC= ; ;EMULATOR TRAP (EMT) *+*ERROR** ::""TRAP'' TRAP 60 TPVEC= ::TTY KEYBOARD VECTOR 64 ;:TTY PRINTER VECTOR PIRQVEC=240 AL AR .SBTTL A AR AR AR d : :PROGRAM INTERRUPT REQUEST VECTOR Rttt a it i as it ittt ittt it ittt sl dd RH11 REGISTERS soRRkRAAAAARAAAAAEAAAANAAAAAARAARAARAAAAAAAAAAAARAAAAAAARAAAARRORY ;CONTROL AND STATUS REGISTER 1 (RPCS1) 000100 000200 000400 IE= RDY= A16= 160 200 400 : INTERRUPT ENABLE (BIT #6) :READY (BIT #7) ;HIGH ORDER BUS ADDRESS BIT (BIT #8) CZRJBCO, RPO4/5/6 FMTR8 Hsczy 30A(1052) 20-MAR-78 10:25 RH11 REGISTERS CZRJBC.P11 20-MAR-7 641 642 643 644 645 001000 002000 020000 040000 646 647 648 649 650 651 652 653 654 655 000001 657 000004 656 658 659 000002 000010 000020 010000 020000 040000 691 692 693 694 695 696 :SC= ;HIGH ORDER BUS ADDRESS BIT (BIT #9) 20000 40000 :MASSBUSS PARITY ERROR (BIT #13) ;TRANSFER ERROR (BIT #14) ;PORT SELECT (BIT #10) 100000 :SPECIAL CONDITION (BIT #15) ;CONTROL AND STATUS REGISTER 2 (RPCS2) 667 668 669 684 685 686 687 688 689 690 MCPE= TRE= 1000 2000 ;BUS ADDRESS REGISTER (RPBA) ; (EACH BIT IS CALLED BY BIT NUMBER) 000040 000100 000200 000400 001000 002000 670 671 672 673 674 675 676 677 678 679 680 681 682 683 PSEL= SEQ 0013 ;WORD COUNT REGISTER (RPWC) s (EACH BIT IS CALLED BY BIT NUMBER) 660 661 662 663 664 665 666 - A17= 1 N PAGE 15 004000 100000 uUs1= 1 sUNIT SELECT (BIT #0) 20 sMASSBUS PARITY TEST (BIT #4) us2= US4= BAI= 2 & 10 CLR= 40 MXF = PGE= NEM= 1000 2000 4000 PAT= IR= OR= MPE= NED= UPE= WCE= DLT= sUNIT SELECT (BIT #1) SUNIT SELECT (BIT #2) ;BUS ADDRESS INCREMENT INHIBIT (BIT #3) ;CLEAR (BIT #5) 100 200 400 : INPUT _READY (BIT #6) :OUTPUT READY (BIT #7) :MASS BUS PARITY ERROR (BIT #8). :MISSED TRANSFER ERROR (BIT #9) :PROGRAM ERROR (BIT #10) sNON EXISTENT MEMORY (BIT #11) 10000 20000 40000 100000 sNON EXISTENT DRIVE (BIT #12) :UNIBUS PARITY ERROR (BIT #13) :WRITE CHECK ERROR (BIT #14) :DATA LATE (BIT #15) :DATA BUFFER REGISTER (RPDB) ; (EACH BIT IS CALLED BY BIT NUMBER) :;tfitt'it't'.‘tt'tttttt't'ttittt""'tt*t*'.*'tttttttttttttttttit .SBTTL RP04/5/6 REGISTERS ::Qttitttt'tt'ittttttttt'iii*i‘t"ttttt'ttttttttittttttttittttt't ;CONTROL AND STATUS 1 REGISTER. (#00) 000001 000002 000004 000010 000020 000040 004000 GO= 1 F1= F2= 2 & F4= 20 DVA= 4000 F3= F5= 10 40 ;GO BIT (BIT #0) , ) ;FUNCTION sFUNCTION SFUNCTION ;FUNCTION CODE BIT # CODE BIT #2 CODE BIT #3 CODE BIT #4 :FUNCTION CODE BIT #5 ;DEVICE AVAILABLE (BIT #11) ;DRIVE STATUS RCGISTER (RPDS1) (#01) 000002 000004 :DF5= DFF20= DIGB= 1 2 4 DRIVE FORWARD 5'‘/SEC. - (BIT #0) ;:DRIVE FORWARD 20'‘/SEC. (BIT #1) :DRIVE TO INNER GUARD BAND (BIT #2) CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 RP04/5/6 REGISTERS CZRIBC.F11 20-MAR-78 10:22 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 77 718 719 720 721 722 723 724 725 726 727 728 729 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 GRV= DL&4= DE1= 10 8 PAGE 16 2 SEQ 0014 ;GO REVERSE (BIT #3) sDIFFERENCE LESS THAN 64 (BIT #4) ;DIFFERENCE EQUALS 1 (BIT #5) ;VOLUME VALID (BIT #6) VV= DRY= DPR= PGM= ;DRIVE READY (BIT #7) ;DRIVE PRESENT (BIT #8) ;PROGRAMABLE (BIT #9) sLAST SECTOR TRANSFERRED (BIT #10) ;WRITE LOCK (BIT #11) ;MEDIUM ON-LINE (BIT #12) ;POSITIONING OPERATION IN PROGRESS (BIT #13) LST= WRL= MOL = PIP= ERR= ATA= ;COMPOSITE ERROR (BIT #14) ;ATTENTION ACTIVE (BIT #15) ;ERROR REGISTER #01 (RPER1) (#02) 000001 000002 000004 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 s ILLEGAL FUNCTION (BIT #0) s ILLEGAL REGISTER (BIT #1) sREGISTER MODIFICATION REFUSED (BIT #2) sPARITY ERROR (BIT #3) ;FORMAT ERROR (BIT #4) sWRITE CLOCK FAIL (BIT #5) ILF= ILR= RMR= PAR= FER= WCF= ECH= HCE= HCRC= AOE= IAE= WLE= ;ECC HARD ERROR (BIT #6) ;HEADER COMPARE ERROR (BIT #7) ;HEADER CRC ERROR (BIT #8) ;ADDRESS OVERFLOW ERROR (BIT #9) :INVALID ADDRESS ERROR (BIT #10) ;WRITE LOCK ERROR (BIT #11) ;DRIVE TIMING ERROR (BIT #12) ;OPERATION INCOMPLETE (BIT #13) ;DRIVE UNSAFE (BIT #14) DTE= OPI1= UNS= DCK= ;DATA CHECK ERROR (BIT 15) sMAINTAINABILITY REGiSTER (RPMR) (#03) 000001 000002 000004 000010 000020 000040 000200 DMD= MCLK= MINX= MSTCK= MRD= MWR= DTSY= ] 2 4 10 20 40 200 :DIAGINOSTIC MODE (BIT #0) sMAINTAINABILITY CLOCK (BIT #1) sMAINTAINABILITY INDEX (BIT #2) sMAINTAINABILITY SECTOR CLOCK (BIT #3) sMAINTAINABILITY READ (BIT #4) sMAINTAINABILITY WRITE (BIT #5) sMAINTAINABILITY SYNC DETECTED (BIT #7) ;ATTENTION SUMMARY PSEUDO-REGISTER (RPAS) (#04) 000001 000002 000004 000010 000020 000040 000100 000200 ATO= AT1= AT2= AT3= AT4= ATS5= ATé= AT7= ;DEVICE ;DEVICE ;DEVICE ;:DEVICE ;DEVICE ;DEVICE ;DEVICE ;DEVICE O 1 2 3 4 5 6 7 (BIT #0) (BIT #1) (BIT #2) (BIT #3) (BIT #4) (BIT #5) (BIT #6) (BIT #7) ;DESIRED SECTOR/TRACK ADDRESS REGISTER (RPDA) (#05) ; (EACH BIT IS CALLED BY BIT NUMBER) CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 RP04/5/6 REGISTERS 20-MAR-78 10:22 SEQ 0015 ;DRIVE TYPE REGISTER (RPDT) (#06) DTO0= DTO1= DT02= DTO3= DT04= DTO5= DT06= DTO07= DTO8= DRQ= MOH= TAP= NBA= 1 2 4 10 20 40 100 200 400 4000 20000 40000 100000 ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE VNN W — 753 £ ¢ PAGE 17 TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE BIT ;DRIVE REQUEST REQUIRED (BIT #11) ;MOVING HEAD (BIT #13) ;TAPE DRIVE (BIT #14) ;NOT BLOCK ADDRESSED (BIT #15) ;LOOK~AHEAD REGISTER (RPLA) (#07) EXT1= ExT2= EXT4= EXT10= EXT20= EXT40= 1 2 4 10 20 40 ;EXTENSION 2 ;EXTENSION 3 ;EXTENSION 4 ;EXTENSION 5 ;EXTENSION 6 sC2= 200 ;SECTOR COUNT FIELD 1 SC1= :SC4=" SC10= $C20= TRK1= TRK2= TRK4= TRK10= TRK20= 100 400 1000 2000 4000 10000 20000 40000 100000 ;EXTENSION 1 (BIT #0) (BIT (BIT (BIT (BIT (BIT #1) #2) #3) #4) #5) sSECTOR COUNT FIELD O (BIT #6) (BIT #7) ;SECTOR COUNT FIELD 2 (BIT #8) ;SECTOR COUNT FIELD 3 (BIT #9) ;SECTOR COUNT FIELD 4 (BIT #10) sTRACK :TRACK :TRACK ;TRACK ;TRACK TieuD FIELD FIELD FTYELD FIELD 1 2 3 & 5 (BIT (BIT (BIT (BIT #11) #12) #13) #14) #15) ;RPO4 ERROR REGISTER #2 (RPER2) (#10) wCU= 1 ;WRITE CURRENT UNSAFE 40 100 200 400 1000 ;TRANSITIONS DETECTOR FAILURE (BIT #5) ;TRANSITIONS UNSAFE (BIT_#6) ;FAILSAFE ENABLED (BIT #7) ;WRITE READY UNSAFE (BIT #8) ;MULTIPLE HEAD SELECT (BIT #9) CSF= WSU= CSu= MSE= 2 B 10 20 NHS= IXE= 2000 4000 10000 20000 100000 TDF= TUF= FEN= WRU= MHS= vu30= PLU= ACU= (BIT #0) ;CURRENT SINK FAILURE (BIT #1) ;WRITE SELECT UNSAFE (BIT #2) ;CURRENT SWITCH UNSAFE (BIT #3) sMOTOR SEQUENCE ERROR (BIT #4) ;NO HEAD SELECTION (BIT #10) : INDEX ERROR (BIT #11) ;30VOLT UNSAFE (BIT #12) :PLO UNSAFE (BIT #13) ;AC UNSAFE (BIT #15) ;RP05/6 ERROR REGISTER #02 (RPER2) (#10) CZRJBCO, RPO4/5/6 FMTR8 HSC;? 30A(1052) 20-MAR-78 10:25 RP04/5/6 REGISTERS CZRJBC.P11 20-MAR-7 809 000001 810 811 812 813 814 815 816 817 818 819 000002 000004 000010 000020 000040 000100 000200 000400 001000 002000 821 822 823 824 020000 820 004000 000001 000002 828 829 830 000010 000020 000040 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 SEQ 0016 ;WRITE CURRENT UNSAFE (BIT #0) ;CURRENT SINK FAILURE (BIT #1) ;WRITE SELECT UNSAFE (BIT #2) TDF= 1 2 “ 10 20 40 ABS= WRU= MHS= NHS= IXE= PLU= 200 400 1000 2000 4000 20000 :ABNORMAL STOP (BIT #7) ;WRITE READY UNSAFE (BIT #8) sMUTLTIPLE HEAD SELECT (BIT #9) :NO HEAD SELECTION (BIT #10) ; INDEX ERROR (BIT #11) ;PLO UNSAFE (BIT #12) CSuU= RAW= TUF= 100 ;CURRENT SWITCH UNSAFE (BIT #3) :READ AND WRITE (BIT #4) :TRANSITIONS DETECTOR FAILURE (BIT #5) :TRANSITIONS UNSAFE (BIT #6) ;OFFSET REGISTER (RPOF) (#11) 825 826 827 wCU= CSF= WSU= D 2 PAGE 18 000004 000200 002000 004000 010000 0F25= OF50= OF100= 0F200= 0F400= OF800= OFREV= HCI= ECI= FMT22= 1 2 4 10 20 40 200 2000 4000 10000 ;OFFSET 25 MICRO INCHES (BIT #0) ;OFFSET 50 MICRO INCHES (BIT #1) ;OFFSET 100 MICRO INCHES (BIT #2) ;OFFSET 200 MICRO INCHES (BIT #3) ;OFFSET 400 MICRO INCHES (BIT #4) ;OFFSET 800 MICRO INCHES (BIT #5) ;OFFSET NEGATIVE (REVERSE) (BIT #5) ;HEADER COMPARE INHIBIT (BIT #10) ;ERROR CORRECTION CODE INHIBIT (BIT #11) ;FORMAT BIT (BIT #12 ;DESIRED CYLINDER ADDRESS (RPCA) (#12) ; (EACH BIT IS CALLED BY BIT NUMBER) ;CURRENT CYLINDER ADDRESS (RPCC) (#13) ; (EACH BIT IS CALLED BY BIT NUMBER) ;SERIAL NUMBER REGISTER (RPSN) (#14) ; (EACH IS CALLED BY BIT NUMBER) ;RPO4 ERROR REGISTER #03 (RPER3) (#15) 000001 000002 000010 000040 000100 040000 100000 PSU= VUF = 1 2 ;PACK SPEED UNSAFE (BIT #0) ;VELOCITY UNSAFE (BIT #1) ACL= 40 ;AC LOW (BIT #5) ocyL= 100000 UWR= DCL= SK1= 10 100 40000 sANY UNSAFE EXCEPT READ/WRITE (BIT #3) ;:DC LOW (BIT #6) ;SEEK INCOMPLETE (BIT #14) ;OFF CYLINDER (BIT #15) ;RP05/6 ERROR REGISTER #03 (RPER3) (#15) 000001 000002 000040 000100 020000 040000 100000 DCU= 1 :DC UNSAFE (BIT #0) 40 ;AC LOW (BIT #5) WAO= 2 DCL= OPE= SKI= ocyL= 100 20000 40000 100000 ACL= ;WRITE AND OFFSET (BIT #1) ;0C LOW (BIT #6) ;OPERATOR PLUG ERROR (BIT #13) ;SEEK INCOMPLETE (BIT #14) ;OFF CYLINDER ERROR (BIT #15) CZRJBCO, RP0O4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR-78 10:22 RP04/5/6 REGISTERS 865 E 2 PAGE 19 SEQ 0017 ;ECC POSITION REGISTER (RPEC1) (#16) gg? ; (EACH BIT IS CALLED BY BIT NUMBER) 868 ggg ;ECC PATTERN REGISTER (RPEC2) (#17) ; (EACH BIT IS CALLED BY BIT NUMBER) 871 R 872 T L T Y g;z .SBTTL 875 33 3233322222200 2022 0022 Eitiidiiddiidiiiii ittt dd 876 877 878 879 880 881 882 883 884 885 886 887 000101 000103 000105 000107 000111 000113 000115 000117 000121 000123 000131 RNOP UNLOAD SEEK RECAL 889 890 891 892 893 894 895 gg? 000143 000145 000151 000153 000161 000163 000171 000173 888 000141 RP04/5/6 DRIVER COMMANDS READIN ACK SEARCH = = = = = = = = = = = 101 103 105 107 11 113 115 117 121 123 131 sNO OPERATION s UNLOAD s SEEK sRECALIBRATE :DRIVE CLEAR sRELEASE sOFFSET sRETURN TO CENTER LINE ;READ IN PRESET sPACK ACKNOWLEDGE : SEARCH SETFMT SELDRV WCKD WCKHD WRTDAT WRTHD RDDAT RDHD = = = = = = = = 143 145 151 153 161 163 171 173 ;SET FORMAT (& ECI OR HCI) s SELECT DRIVE sWRITE CHECK DATA ;WRITE CHECK HEADER & DATA ;WRITE DATA ;WRITE HEADER & DATA sREAD DATA ;READ HEADER & DATA DRVCLR RELSE OFFSET RTC GETREG = 141 ;GET REGISTERS ; & ] CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 CZRJBC.P11 20-MAR-78 10:22 COMMON TAGS 10:25 F PAGE 20 2 SEQ 0018 ggg .SBTTL 901 ::*'Q""t'""'t"i't"""'t"tittitti*"fi"'i'fi'tttttt'i*ttfi't 902 882 905 s*THIS TABLE CONTAINS VARIOUS COMMON STORAGE LOCATIONS ;*USED IN THE PROGRAM. 906 001100 909 001103 907 908 910 911 912 913 914 915 916 917 918 919 920 921 922 000000 000 001104 001106 001110 001112 000000 000000 000000 000000 001116 000000 001132 000000 001114 001115 001120 001122 001124 001126 001130 001134 001135 926 001140 927 928 929 930 931 932 936 937 938 939 940 941 942 943 177570 177560 177562 177564 177566 001162 001166 001167 001170 001172 001174 001176 001200 001202 950 951 952 001210 001214 001216 953 954 001206 001220 001222 177546 000100 000000 000000 000000 000632 $ICNT: SLPADR: SLPERR: SERTTL: .WORD .WORD .WORD .WORD O O 0 O s ;CONTAINS : ;CONTAINS ; ;CONTAINS : ;CONTAINS SERRPC: .WORD O ; ;CONTAINS PC OF LAST ERROR INSTRUCTION .WORD .WORD .WORD .WORD WORD .WORD SWR: .WORD .WORD DISPLAY: .WORD $TXS: 177560 ‘$TKB: 177562 $TPS: 177564 $TPB: 177566 SNULL: .BYTE $FILLS: .BYTE $FILLC: .BYTE $TPFLG: .BYTE 000377 $ESCAPE:0 000106 000102 : ;CONTAINS PASS COUNT ; ;CONTAINS THE TEST NUMBER O : ;CONTAINS ERROR FLAG O 1 SUBTEST ITERATION COUNT SCOPE LOOP ADDRESS SCOPE RETURN FOR ERRORS TOTAL ERRORS DETECTED :;CONTAINS ITEM CONTROL BYTE ; ;CONTAINS MAX. ERRORS PER TEST 0 O O O O ; ;CONTAINS ADDRESS OF °'GOOD' DATA : ;CONTAINS ADDRESS OF 'BAD' DATA ;;CONTAINS 'GOOD*' DATA ;;CONTAINS °'BAD' DATA ; ;RESERVED=--NOT TO BE USED O 0 O ; ;AUTOMATIC MODE INDICATOR ; ; INTERRUPT MODE INDICATOR DSWR ; ;ADDRESS OF SWITCH REGISTER O DDISP 0 21? O 2 $BELL: $QUES: $CRLF: SLF: .ASCIZ .ASCII .ASCII LASCIZ <207><377><377> /?%/ <15 <12> CR LF = = 15 12 s 000015 000012 176700 000254 172540 172542 000104 O O $AUTOB: .BYTE $INTAG: .BYTE 177570 177607 077 015 000012 .WORD .BYTE $GDADR: $BDADR: $GDDAT: $BDDAT: 000 000 ;;START OF COMMON TAGS $PASS: $TSTNM: S$ITEMB: .BYTE SERMAX: .BYTE 000000 000000 000000 000000 000000 001142 001144 001146 001150 001152 001154 .=1100 SERFLG: .BYTE 000 001 000000 001160 $CMTAG: 000 001136 944 945 946 947 948 949 001100 001100 001102 923 924 925 COMMON TAGS ; :ADDRESS OF DISPLAY REGISTER ::TTY KBD STATUS ::TTY KBD BUFFER ;:TTY PRINTER STATUS REG. ADDRESS ;:TTY PRINTER BUFFER REG. ADDRESS ; ;CONTAINS NULL CHARACTER FOR FILLS ; ;CONTAINS # OF FILLER CHARACTERS REQUIRED ;s INSERT FILL CHARS. AFTER A 'LINE_FEED'' ;" TERMINAL AVAILABLE'' FLAG (BIT<07>=0=YES) : :ESCAPE ON ERROR ADDRESS ;;CODE FOR BELL :;QUESTION MARK ; ;CARRIAGE RETURN ::LINE FEED AR RAARAARAAAAARAARAARARAARAAAAAAAAAAAAAARAAA A AR $RPADR: SRPVEC: SLKCSR: $LKCSB: SLPVEC: $LKS: SLLVEC: DRIVE: SOFSW: MODE: ENDCYL: AR .WORD .WORD .WORD .WORD .WORD 176700 254 172540 172542 104,106 :RH11/RP04/5/6 UNIBUS ADDRESS sRH11 INTERRUPT VECTOR ;ADDRESS OF KW11-P CSR ;ADDRESS OF KW11-P COUNTER BUFFER ;ADDRESS OF KW11-P VECTOR .WORD .WORD .WORD 100,102 O 0 ;ADDRESS OF kWw11-L VECTOR sCONTAINS DRIVE NUMBER SELECTED sCONTENTS ARE FOR SOF TWARE DECISIONS .WORD .WORD .WORD 177546 O 410. ;ADDRESS OF KW11-L CONTROL REGISTER ;"FORMAT & VERIFY' OR "CHECK' MODE INDICATOR ;ENDING CYLINDER PATSEL: PATA: PATB: CYLCK: RETRY: .WORD .WORD .WORD .WORD .WORD WwC: .WORD SAVSEC: SAVWC: MWC: HEDERR: SEC20: 979 001276 000900 981 001300 000000 983 001304 000000 .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD MAXSEC: .WORD DS.CYL: DS.TRK: DDRIVE: ATTN: .WORD .WORD .WORD .WORD CNTLC: CHGADR: EFLG: .WORD .WORD .WORD oo BEGCYL: ENDTRK: BEGTRK: TTRKS: TTRKSC: TRKCNT: (eleleolelolelelelelelelelelelel lo) 000000 000022 000000 000000 000000 O 001224 001226 001230 001232 001234 OO0O0O0 955 956 957 958 959 10:25 OO0 CZRJBCO, RPO4/5/6 FMTR HACYH 30A(1052) 20-MAR-78 CZRJBC.P11 20-MAR- 78 10:22 C OMMON TAGS G 2 PAGE 21 SEQ 0019 ;STARTING CYLINDER ;ENDING TRACK s STARTING TRACK ;TOTAL # OF TRACKS TO BE FORMATTED ;TOTAL # OF TRACKS COUNTER ;COUNTS TRKS FROM 0-18 PER CYL ;CONTAINS PATTERN SELECTED :1ST WORD OF PATTERN :2ND WORD OF PATTERN sSTORE CYLINDER ADDRESS FOR FORMAT VERIFICATION sMAINTAINS # OF WRITE RETRIES MADE ;CONTAINS LAST BAD SECTOR ON FORMAT sCONTAINS WC FOR REMAINING SECTORS ON ERROR 220 OR 22 SECTOR TRACK SIZE (IN WORDS) :2'S COMPLEMENT OF ‘wC' ;POSITIONING ERROR DURING FORMAT INDICATOR 220 OR 22 SECTOR MODE INDICATOR :0 = 20 SECTOR MODE :1°'S = 22 SECTOR MODE :?3%;:?? SECTOR ADDRESS (FOR EITHER 20 OR 22 SECTOR ;ADDRESS OF CURRENT CYLINDER sADDRESS OF CURRENT TRACK ;DRIVE NUMBER OF 'DRIVER' ERROR MESSAGES sATTENTION REGISTER IMAGE FOR 'DRIVER' ;ERROR MESSAGES ;ADDRESS OF *“C' RETURN ; 'CHANGE RH11 ADDRESS' FLAG : '"ERROR DURING WRITE CHECK' FLAG 3 8 RS W G YR e T e 3SSRS833888 88838 o - B o Yy RP.REG: .WORD .WORD .WORD .WORD .WORD .WORD «WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD elelelelelelelelslolololelelololelelele)] ;RH11/RP04/5/6 REGISTERS STORED HERE AFTER AN OPERATION ;RPCS1 JRPWC ;RPBA sRPDA :RPCS2 ;RPDS1 :RPER1 :RPAS :RPLA :RPDB ;RPMR sRPDT ;RPSN :RPOF ;RPCA ;RPCC :RPER2 :RPER3 ;RPEC1 ;RPEC2 ;DATA/PARAMETER BLOCK = USED FOR ALL DRIVE OPERATION 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 001356 001357 001360 001361 001362 001364 001366 001367 001370 001372 001374 000 000 000 000 000000 000000 000 000 FMTDPB: 091306 10:25 .BYTE .BYTE .BYTE .BYTE .WORD .WORD .BYTE .BYTE .WORD .WORD .WORD H 2 PAGE 22 SEQ 0020 ;DRIVE NUMBER (=}Jelelelelelelele ] CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 CZRJBC.P11 20-MAR-78 10:22 COMMON TAGS ;OFFSET VALUE OR FMT22,ECI, AND HCI s¢ ; COMMAND ;PSEL AND A17 AND A16 ;WORD COUNT (NEG) ;BUFFER ADDRESS ;SECTOR ADDRESS : TRACK ADDRESS ;CYLINDER ADDRESS ;ERROR TABLE POINTER s STATUS=-ERROR INDICATOR P.REG ;BIT 15 = 1: ERROR OCCURRED ;BIT 07 = 1: DONE ;BIT 14-10 AND BIT 06-03 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 ; INDICATE TYPE OF ERROR ;PARAMETER POINTER TABLE 001376 001404 001412 001420 001430 001443 001456 001467 000000 000022 000000 000022 001230 TABLE: 001226 PAR1,0,BEGCYL PAR2,18. ,BEGTRK PAR3,0,ENDCYL PAR4,18. ,ENDTRK 0 sASCII MESSAGES FOR ADDRESS PARAMETERS 1038 1039 1040 1041 1042 001430 001436 001443 001450 001456 052123 054503 123 052040 047105 1044 001467 105 051101 020114 040524 045522 020104 000 042116 000040 020124 000 052122 000040 054503 PAR1: .ASCIZ QSTART CYL @ PAR2: .ASCIZ QSTART TRK a PAR3: .ASCIZ QEND CYL @ 052040 PAR4: .ASCIZ QEND TRK @ ;SECTOR BUFFER ADDRESS TABLE 025324 026334 ADRTBL: .WORD BUFP ;ADDRESS OF SECTOR 0 .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD BUFP+<520.+3.> BUFP+<520.%4.> BUFP+<520.%5.> BUFP+<520.%6.> BUFP+<520.%7.> BUFP+<520.+8.> BUFP+<520.%9.> BUFP+<520.+10. BUFP+<520.*11. BUFP+<520.%12. BUFP+<520.%13. BUFP+<520.*14. BUFP+<520.+15. BUFP+<520.%16. BUFP+<520.%17. sADDRESS OF sADDRESS OF ;ADDRESS OF sADDRESS OF ;ADDRESS OF sADDRESS OF sADDRESS OF ;ADDRESS OF sADDRESS OF sADDRESS OF :ADDRESS OF ;ADDRESS OF sADDRESS OF sADDRESS OF sADDRESS OF ;ADDRESS OF WORD .WORD BUFP+<520.*1.> BUFP+<520.%2.> sADDRESS OF SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR — b e e e e ek = D) 0O N ON N S NN = NOWVMSWN—=O 001500 001502 VVVVVVVYV 1049 1050 20-MAR-78 CZRJBCO, RPO4/5/6 FMTR MAC Y11 30A(1052) COMMON TAGS CZRJBC.P11 20-MAR-78 10 22 001544 001546 001550 001552 047544 050554 051564 052574 10:25 .WORD .WORD .WORD .WORD 1.2 PAGE 23 SEQ 0021 BUFP+<520.+1 8.> BUFP+<520.+1 9.> BUFP+<520.+2 0.> BUFP+<520.+2 . 3 +ADDRESS OF sADDRESS OF ;ADDRESS OF ;ADDRESS OF SECT OR 18 SECT OR 19 SECT OR 20 SECTOR 21 sREMAINING WORD .EVEN VVVVVVVVYV AFTER SECTOR 0 AFTER SECTOR 1 AFTER SECTOR 2 AFTER SECTOR 3 AFTER SECTOR 4 AFTER SECTOR 5 AFTER SECTOR 6 AFTER SECTOR 7 AFTER SECTOR 8 AFTER SECTOR 9 AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR AFTER SECTOR b b wd b ad s i i wsd sREMAINING WORD sREMAINING WORD =OVONOWVSWN—=O sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD ;REMAINING WORD 260.+<260.%13 sREMAINING WORD 260.+<260.%14 sREMAINING WORD 260.+<260.t1g sREMAINING WORD 260.+<260.*1 sREMAINING WORD 260.+<260.*1 7 sREMAINING WORD 260.+<260.*1 8 sREMAINING WORD 260.+<260.%19.> ;REMAINING WORD 260.+<260.+20.> ;REMAINING WORD 260.+<260.%21.> ;REMAINING WORD 1081 333323332882R585¢ 260. 260.+<260.%1.> 260.+<260.%2.> 260.+<260.+3.> 260.+<260.%4.> 260.+<260.%5.> 260.+<260.%6.> 260.+<260.+7.> 260.+<260.+8.> 260.+<260.%9.> 260.+<260.+10. 260.+<260.+11 260.+<260.%*12 AIA) = WCTBL: E sREMAINING WORD COUNT TABLE J 2 CZRJBCO, RP0O4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 24 CZRJBC.P11 20-MAR-78 10:22 ERROR POINTER TABLE 1099 1100 » — DF — o % e %e e, DH % D D D D D D D EM » s -b s*THE INFORMATION IS OBTAINED BY USING THE INDEX NUMBER FOUND IN ;*LOCATION SITEMB. THIS NUMBER INDICATES WHICH ITEM IN THE TABLE IS PERTINENT. ;*NOTE1: IF SITEMB IS O THE ONLY PERTINENT DATA IS (SERRPC). ;*NOTE2: EACH ITEM IN THE TABLE CONTAINS & POINTERS EXPLAINED AS FOLLOWS: :;POINTS TO THE ERROR MESSAGE :;POINTS TO THE DATA HEADER :;POINTS TO THE DATA ;;POINTS TO THE DATA FORMAT D v DI DAANN I 15S 2S olS ol NR NA oRNN N W D IR3RN PO o —S nS D RN e N IE TR S RN Y N R NN TR RN AN NS &oI ri D D ERROR POINTER TABLE ;*THIS TABLE CONTAINS THE INFORMATION FOR EACH ERROR THAT CAN OCCUR. D D- O 0000 o 2 S B3RB0IRIRIS .SBTTL SEQ 0022 $ERRTB: 022242 023424 024676 025210 D e D D ) D D D ;ERROR 1 D D ) D - E:% sUNEXPECTED ATTENTION OCCURRED DT2 DF2 :ERROR 3 D Dl D e D D D d INTERRUPT OCCURRED (RPAS=0) DF1 022303 023431 024700 025214 g:g 024714 025220 :MASSBUS PARITY ZRROR (MCPE=1) DT3 DF3 ;ERROR 4 022377 023534 024722 025224 g:z :MASSBUS PARITY ERROR (PAR=1) DT4 DF4 ;ERROR S D e — ;RH11 ;ERROR 2 D D e EM1 022434 023431 024700 025214 gng sADDRESS PLUG CHANGE BIT SET D12 DF2 ;ERROR 6 022470 02357 02473 025210 Sng DT6 DF1 ;RH11 DIDN'T RESPOND TO ADDRESSING v - os~MNO 8 > R D o N S D D e R D 001726 001726 R D I D R d D e D e I d 001740 001742 001744 o 2 8 B D R i D e D S 3% 3 RERSS BB IR DF10 022606 023606 024734 025230 EM12 DH10 DT10 DF10 sUNCORRECTABLE MASSBUS PARITY ERROR EM13 DH10 DT10 s SOF TWARE TIMEOUT ;ERROR 001750 001752 001754 001756 022651 023606 024734 025230 DF10 ;ERROR 14 001760 001764 001766 022672 023606 024734 025230 EM14 DH10 DT10 DF10 ;DRIVE UNSAFE ERROR ;ERROR 15 8 3 001770 001776 022715 023606 024734 025230 i o ;PERSISTENT DRIVE UNSAFE ERROR :ERROR 12 D T EM1 DH10 DT10 022550 023606 024734 025230 D e 001730 001732 001734 001736 D e R D e S D e D e D ;DRIVE OFFLINE ;ERROR 1 D e EM10 DH10 DT10 DF10 022532 023606 024734 025230 D B 001720 D e D S S D R S s UNUSED ;ERROR 10 R e (elelele) RN 28 BB IRRRER2BIIINFNANIISEIG SRW RIBIBIE w D— I D Y J D D e D o 000000 000000 000000 000000 — R S e T EM15 DH10 ;CONTROLLER/DRIVE ERROR DURING WRITE DT10 DF10 ;ERROR 16 g e e e n R n o ~ R -d N B SEQ 0023 :ERROR 7 D R pry K 2 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 25 CZRJBC.P11 20~MAR-78 10:22 ERROR POINTER TABLE )02004 002006 022761 023606 024734 025230 EM16 DH10 DT10 DF10 ;CONTROLLER/DRIVE ERROR DURING WRITE CHECK CZRJBCO, RPO4/5/6 FMTR HACY11 30A(1052) 20-MAR-78 10:25 PAGE 26 CZRJBC.P11 20-MAR-78 10:22 ERROR POINTER TABLE 1211 }%}% 1214 1215 1216 }g}g :ERROR 17 002010 002012 002014 002016 023033 024056 025010 }%%é }%:g 002020 002022 002024 002026 EM20 DH20 DT20 025250 ;DATA ERROR DURING WRITE CHECK DF20 :ERROR 21 002030 002032 002034 002036 023147 023606 024734 EM21 DH10 DT10 025230 ;CONTROLLER/DRIVE ERROR VERIFYING HEADERS DF10 :ERROR 22 1235 1236 1237 1238 1239 002040 002042 002044 002046 1242 1243 1244 1245 1246 002050 002052 002054 002056 1249 1250 1251 002060 002062 002064 023220 023606 024734 025230 }52? EM22 DH10 DT10 DF10 :"HCE' ERROR VERIFYiING HEADERS :ERROR 23 023267 024424 025104 025270 }%2; EM23 DH23 DT23 DF23 ;CYLINDER FIELD IN HEADER IS NOT CORRECT :ERROR 24 002066 023337 024522 025122 EM24 DH24 DT24 025274 }5;; 1256 1257 1258 }%28 DF17 023111 024125 025022 }%gz }52% :RETRIES NOT SUCESSFUL - SECTOR NOT ACCEPTABLE :ERROR 20 }ggg 1228 1229 1230 EM17 DH17 DT17 025244 }%%8 1221 1222 1223 SEQ 0024 :WRITE CHECK ERROR DF24 :ERROR 25 002070 002072 002074 002076 023361 024125 025022 025250 EM25 DH20 DT20 DF20 ;HARDWARE ERROR DURING WRITE CHECK ?'3212 ;:ttttttttttttt'ittttttt'ttttttttttttttttttttttttfitttttttttittttt 1263 .SBTTL MAIN PROGRAM CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 1264 1265 66 1267 20—HAR-78 10:25 N PROGRAM PAGE 27 2 SEQ 0025 LT T T T TR e ey 002100 012737 177777 001302 BEGIN: MOV #-1,CHGADR ;SET CHANGE °"RH11 BUS ADDRESS' INDICATOR .= T CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 MACY11 30A(1052) 20-MAR-78 10:22 002106 002110 002114 002116 000402 005037 000005 005037 20-MAR-78 MAIN PROGRAM BR BEGIN1: CLR 001302 10:25 N PAGE 28 BEGIN2 CHGADR 2 SEQ 0026 ;START THE PROGRAM ;CLEAR THE 'CHANGE RH11 ADDRESS' INDICATOR 001304 BEGIN2: RESET CLR ;;CLEAR THE COMMON TAGS (SCMTAG) AREA MOV #SCMTAG.R6 s:;FIRST LOCATION TO BE CLEARED 002122 002126 002130 002134 002136 012706 005026 022706 001374 012706 001100 002142 002150 002156 002164 002172 002176 012737 012737 012737 012737 005037 112737 006766 000340 012144 000340 001160 000001 002204 002210 002216 002224 002232 002240 013746 012737 012737 012737 022777 001012 000004 002244 177570 177570 177777 002242 002244 002250 000403 012716 000002 .SBTTL EFLG ;CLEAR THE BUS ;:CLEAR ERROR DURING WRITE CHECK FLAG INITIALIZE THE COMMON TAGS CLR CMP BNE 001140 001100 000030 000032 000034 000036 001115 000004 001140 001142 176700 002252 1298 1299 %338!1) 002252 002260 002266 012737 012737 012637 000176 000174 000004 001140 001142 1302 1303 1304 1305 002272 002274 002302 002310 000005 012737 012737 012737 000240 000240 002110 000036 000032 001300 (R6) + : ;CLEAR MEMORY LOCATION #SWR,R6 ; ;DONE? +® ::LOOP BACK IF NO MOV #STACK,SP ::SETUP THE STACK POINTER s INITIALIZE A FEW VECTORS MOV #SERROR ,@#EMTVEC ;;EMT VECTOR FOR ERROR ROUTINE MoV #340 ,3#EMTVEC+2 ;LEVEL 7 MOV #STRAP ,@#TRAPVEC ;;TRAP_VECTOR FOR TRAP CALLS MOV #340 ,@#TRAPVEC+2;LEVEL 7 CLR SESCAPE :;CLEAR THE ESCAPE ON ERROR ADDRESS MOVB #1,SERMAX s ;ALLOW ONE ERROR PER TEST ;:SIZE FOR A HARDWARE SWITCH REGISTER. IF NOT FOUND OR IT IS ;:EQUAL TO A "=1"', SETUP FOR A SOF TWARE SWITCH REGISTER. MOV @#ERRVEC,~(SP) ;;SAVE ERROR VECTOR MOV #64S ,SFERRVEC ..SET UP ERROR VECTOR MOV #DSWR, SWR ;SETUP FOR A HARDWARE SWICH REGISTER MOV #DDISP,DISPLAY ::AND A HARDWARE DISPLAY REGISTER CMP #-1,3SWR ::TRY TO REFERENCE HARDWARE SWR BNE 66% ..BRMCH IF NO TIMEOUT TRAP OCCURRED 3 THE HARDWARE SWR IS NOT = -1 BR 65% ..BRANCH IF NO TIMEOUT 64%: MOV #65%, (SP) ::SET UP FOR TRAP RETURN 658%: 66%: RTI MOV MOV MOV #SWREG, SWR ;;POINT TO SOF TWARE SWR #D1SPREG,DISPLAY (SP)+,a#ERRVEC ;;RESTORE ERROR VECTOR RESET MOV MOV MoV ;CLEAR WORLD #PRS ,@#TRAPVEC+2 ;CHANGE TRAP PRIORITY BACK TO 5 #PRS ,Q#EMTVEC+2 ;CHANGE EMT PRIORITY BACK TO 5 #BEGINT,CNTLC ;"CONTROL C' ADDRESS 001134 oS LYY 1 NOS N=O S 338 iR 8RN ~ W ~ g o W 000001 005227 001010 004737 013737 013737 177777 002404 002406 002412 002420 1%: LSBTTL 000176 112737 025626 001172 001174 N NN N WW W NN ~N 2R H o 33828 INITS 006072 012414 67%: 68%: 012376 012400 177777 177777 012336 000004 176460 000340 177776 001167 020770 J SR .LOADRV GET TST BNE CMP BNE GTSWR BR MovB INC BNE JSR MOV MOV SETVEC: JSR JSR MOV 11%: 1%: 68% 68% b 2 ) 3 Z ¥, ] e b b b ;;SET AUTO-MODE INDICATOR #-1 SETVEC PC,BUSADR $RPADR ,RPADR $RPVEC ,RPVEC ;CHECK FOR FIRST START ;BR _IF NOT sCHECK THE RH11 ADDRESS :RH11 ADDRESS PC,ST.CLK PC,RPINIT #-1,SAVEFG #-1 118 #5W02 ,aSwWR 108 #PR7 ,PS R4 .SCRLF .SYSTAT R4 ,-(SP) 13 DRVTYP(R4) 2% szorap 3%: - » &H 020662 - o 2%: o R -t 020724 : o DRVSTA(R4) 4% 020703 -t H N N v v W Voo~ v g 021033 012250 3 g V] b e : ;BRANCH IF NO ;:GET SOFT-SWR SETTINGS #1,8AUTOB 2 0 .LIN4SP 012260 i ) b cd e — ;BR IF NOT ;ADRS OF °'TITLE' MESSAGE ;LOADED FROM AN RP04/5/6 ? :BR IF NOT s INSTRUCT OPERATOR TO REMOVE ‘'XXDP' :PACK FROM DRIVE 0 PC,STKINT ;TURN ON THE KEYBOARD INTERRUPT VALUE FOR SOF TWARE SWITCH REGISTER an42 :sARE WE RUNNING UNDER XXDP/ACT? 67% : ;BRANCH IF YES SWR, #SWREG ; ;SOFTWARE SWITCH REG SELECTED? e D b F .4 1% JFIRST START ? ;RH11 VECTOR ADDRESS PROGRAM WILL USE S8 XY o oN He ~ n s T CMPB BNE LTITLE SEQ 0027 ;DISPLAY DRIVE STATUS AND SET UP THE OTHER UNITS THE B b b -1 1% TYPE 001140 002372 INC BNE TYPE 000041 000042 2 ONANIS NN = 025324 000011 010334 W VONOVESWNN=O S b R R d o Y b e DS R il 177777 S S 005227 025401 SNRU 2L KRR RIS e S S IS SN St wu&u 88 : 88888 2 Attt 3 S - b e S e il e ) i e e I ) ~ : 8 3 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 29 CZRJBC.P1T INITIALIZE THE COMMON TAGS 20-MAR-78 10:22 o NOTPRS o LUNTOFF é$ ;START THE CLOCK sINITIALIZE THE RPO4/5/6 DRIVER ;SET THE SAVE REGISTERS FLAG :SEE IF FIRST START :BR IF YES ;TYPEOUT THE DRIVE STATUS TABLE ? ;BR _IF NOT ;SET PRIORITY TO 7 ;DRIVE TABLE POINTER s CR-LF ;:TYPE STATUS HEADING ::SAVE R4 FOR TYPEOUT ::TYPE DRIVE NUMBER ::GO _TYPE--OCTAL ASCII ::TYPE 2 DIGIT(S) ;s SUPPRESS LEADING ZEROS : SPACES ;CHECK DRIVE'S STATUS :BR IF UNSAFE ;BR IF ONLINE ;SEE IF OFFLINE OR NONEXISTENT :BR IF NONEXISTENT :BR IF OFFLINE ;DRIVE NOT AN RP04/5/6 sCHECK NEXT DRIVE ;DRIVE NOT PRESENT sCHECK NEXT DRIVE ;DRIVE OFFLINE sPRINT DRIVE TYPE & WA = JAORAN 3% gEEEE BIRKRA SERERERSREREEYS - D D ) e D d b wb — b i 020741 4$: 020673 021035 020751 000001 002640 012260 5%: 6%: 020756 000002 002640 012260 020763 002640 Db 001167 7$: 108: d D d e M1: D D e 001220 021251 D e d D #RPO4LB, 8% ADDRESS OF RP04 MESSAGE BITB #BITOO.DRVTYP(R4) :RPO&4 ? #BITO1.DRVTYP(R4) ;RPOS ? MOV ;PRINT DRIVE TYPE ;DRIVE ONLINE s SPACES 78 #RPOS ,8$ :BR IF YES :ADDRESS OF RPOS MESSAGE 7% #RP06, 8 :BR'IF YES :ADDRESS OF RP06 MESSAGE .WORD O ;MESSAGE ADDRESS HERE CMP BNE TYPE R4, #8. 1% BNE MOV TYPE TYPE INC ;MODES ARE: WWWW d e ;DRIVE UNSAFE . SCRLF R4 .SCRLF ;TYPE THE DRIVE TYPE MESSAGE s CR=LF ; INCREMENT DRIVE NUMBER/TABLE POINTER sFINISHED ? :BR IF NOT s CR=LF ;SEE WHICH MODE THE PROGRAM IS TO BE RUN IN. 000103 WWWWWWW 000106 001166 -.; — .NOTSAF 6% -UNTON .LINSP BITB 9%: D D 000010 TYPE BR TYPE TYPE BNE MOV 8%: 001167 D b 104401 000402 104401 WWWWWW WW ~ N e 25 £ 3 CZRJBCO, RPO4/5/6 FHTR8 MACY11 30A(1052) 20-MAR-78 10:25 PAGE 30 GET VALUE FOR SOF TWARE SWITCH REGISTER CZRJBC.P1T 20-MAR=-7 10:22 012737 CLR MODE ;SET MODE TO 'CHECK FORMAT' MOV TSTB BEQ CMPB BEQ CMPB BEQ (SP)+,R1 (R1) 2% #'C.(R1) 8 #'F,(RT) 3% ;GET ADDRESS OF INPUT :'CR" ENTERED (DEFAULT) :BR IF YES ; 'CHECK' ? :BR IF YES : 'FORMAT® ? :BR IF YES BR TYPE BR TYPE BR TYPE MOV M1 +MHECK M1A .MFORMT 4% .MORMAT #-1,MODE TYPE ROLIN TYPE 021324 1$: 021303 2%: 021337 177777 'FORMAT & VERIFY' OR °"CHECK FORMAT' 001220 3$: 4%: .MMODE .SQUES :TYPE 'PROGRAM MODE ' ;READ THE KEYBOARD :NO CORRECT ENTRY :TRY AGAIN ;TYPE REST OF °'CHECK' sGET STARTING ADDRESS s TYPE DEFAULT MESSAGE sSET UP MODE ;TYPE REST OF ‘'FORMAT' ;SET MODE TO 'FORMAT & VERIFY' ;FIND OUT IF FORMAT IS TO BE IN 20 OR 22 SECTOR MODE 104401 104411 012601 122711 021357 M1A: 000131 000116 TYPE RDLIN 021430 18: :TYPE FORMAT MODE REQUEST ;READ THE KEYBOARD MOV CMPB BEQ CMPB BEQ (SP)+,R1 #'Y,(R1) 1% 2% ;ADDRESS OF ENTRY ;1S ENTRY A 'Y' ? ;BR IF IT IS ;1S ENTRY A 'N' ? :BR IF IT IS BEQ TYPE BR TYPE 1% ., $QUES M1A JMSEC22 :BR IF IT IS sIVPRE *T° : TRY AGAIN : TYPEOUT MODE SELECTED TSTB 001166 MSIZE #'N,(R1) (R1) sDEFAULT MODE ? SEQ 0028 D 3 20-MAR-78 10:25 PAGE 31 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P1 20-MAR-78 10:22 GET VALUE FOR SOF TWARE SWITCH REGISTER 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 012737 012737 012737 012737 000415 104401 012737 012737 005037 012737 005037 005037 012737 012737 112737 000400 013130 164650 177777 000025 001256 2%: 021507 #<260.+22.>,WC ;TRACK SIZE IN 22 SECTOR MODE #-<260.%22. ,miC > :2'S COMPLEMENT WORD COUNT #-1,SEC20 ;22 SECTOR INDICATOR #21. ,MAXSEC :MAX SECTOR ADDRESS IN 22 SECTOR MODE M1B : CONTINUE .MSEC20 #<260.+20.>,WC #-<260.+20.>,MWC M1B: 2 177777 SEC20 #19. ,MAXSEC BEGTRK BEGCYL #18. ,ENDTRK #2 ,PATSEL #-1,FMTDPB MO :TYPE OUT 20 SECTOR MODE SELECTED STRACK SIZE IN 20 SECTOR MODE :2'S COMPLEMENT WORD COUNT ;20 SECTOR INDICATOR :MAX SECTOR ADDRESS IN 20 SECTOR MODE *CLEAR STARTING TRACK ADDRESS :CLEAR BEGINNING CYLINDER ADDRESS :SETUP END TRACK ADDRESS :SETUP FOR WORST CASE PATTERN :SETUP INVALID DRIVE NUMBER *BRANCH TO START ;GO FIND OUT WHAT DRIVE 012737 006246 001112 010334 021007 001300 MO: #OENTER,CNTLC SERTTL PC,STKINT MUNIT (SP) +,R1 R5,CK.CHR 006556 :CONTROL C ABORT ENTRANCE :CLEAR THE ERROR_ACCUMULATOR :INITIALIZE THE TTY KEYBOARD :ASK FOR DRIVE NUMBER :READ THE KEYBOARD :ADDRESS OF ENTRY :CHECK ONE CHARACTER : ILLEGAL CHARACTER : CARRIAGE RETURN . .l. 001214 021031 2%: 001166 3s: 001214 4%: 000011 006072 012414 177777 177777 177776 012250 021112 1) . SQUES MO R2,DRIVE R2 5% 000041 5%: 012336 012340 #11,41 7% PC,ST.CLK PC,RPINIT #-1,SAVEFG #-1,SEEKFG PS DRVSTA(R2) 8% 6% 021217 012260 DRIVE MDRVD .MUSDR 6%: MO DRVTYP(R2) 7% .MDRNP MO 4 LA :DIGIT 0=7 ;:DIGIT 8-9 :SELECT DRIVE ZERO ;GO TYPE DEFAULT DRIVE NUMBER ;$$P2£§9!F DRIVE ZERO IS THERE ;ASK FOR DRIVE NUMBER AGAIN :SAVE DRIVE NUMBER ;SEE IF DRIVE 0 :BR IF NOT :PROGRAM LOADED FROM AN RP04/5/6 ? :BR IF IT WAS, CAN'T FORMAT THE DRIVE :START THE CLOCK ;GO SEE WHAT DRIVES ARE AVAILABLE :SAVE THE REGISTERS :sSET "NO OPTIMIZATION' FLAG :SET PRIORITY BACK TO ZERO :LOOK AT DRIVE STATUS sBRANCH IF ONLINE :BR IF DRIVE NOT AVAILABLE :"DRIVE UNSAFE' ;GO GET DRIVE NUMBER AGAIN :A DRIVE PRESENT? :BR IF SO :TYPE 'DRIVE NOT PRESENT' ;GO GET DRIVE NUMBER AGAIN SEQ 0029 .3 CZRJBCO, RPO4/5/6 FM TR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 32 GET VALUE FOR SOF TWARE SWITCH REGISTER CZRJBC.P1T 20-MAR-78 10:22 1474 1475 1476 1477 104401 000 7$: 021137 001214 001214 000632 001356 8s: 001222 TYPE BR CMPB BEQ MOovB MOV ,MER11 MO DRIVE ,FMTDPB M2 DRIVE ,FMTDPB #4610, .ENDCYL ;"DRIVE NOT AVAILABLE' ;GO GET DRIVE NUMBER AGAIN ;SAME DRIVE AS LAST TIME ? sBR IF IT IS ;SETUP DRIVE ADDRESS :SETUP FOR RP04/5 BNE MOV 9% #814. ,ENDCYL :BR_IF EITHER ;SETUP ENDING CYLINDER FOR RPO6 BEGCYL ENDCYL,TABLE+2 ENDCYL ,TABLE+16 M2 ;CLEAR STARTING CYLINDER ADDRESS ENTRY LIMIT FOR BEGINNING CYLINDER ;ENTRY LIMIT FOR END CYLINDER sGET ADDRESS LIMITS FROM THE OPERATOR BITB 012260 9%: 001400 001414 SEQ 0030 CLR CLR MOV MOV BR #B1T00'BITOT,DRVIYP(R2) BEGTRK ;SEE IF DRIVE RP04/S sCLEAR STARTING TRACK ADDRESS ;GET ADDRESS LIMITS M2: 021040 001222 001226 021606 2%: 3: LENTADR ;"ENTER ADDRESS LIMITS' ENDCYL ,BEGCYL ;SEE IF ENDING CYLINDER EQ TO GT THAN BEGINNING PC,PARENT BHI M4 BHIS M4 CMP 001224 001230 TYPE JSR BLO CMP TYPE BR 3% ENDTRK ,BEGTRK .MADRER M2 ;sGET THE ADDRESS LIMITS :BR IF HIGHER sBR IF LESS ;SEE IF ENDING TRACK EQ OR GT THAN BEGINNING ;sBR IF YES s INVALID ADDRESS ENTERED ;TRY AGAIN ;GO GET DATA PATTERN FOR FORMAT 021710 38 b b b b - b b il b SNNNNNNNNB VNV ONOWVSWN = TYPE RDLIN MOV JSR 33 006556 MSELP (SP)+,R1 R5.CK.CHR 1% 012702 000406 020227 101403 104401 000751 010237 022010 000002 1%: 000002 2%: 001166 3: 001240 4%: ;GO TYPE 'SELECT PATTERN' sREAD THE KEYBOARD sENTRY ADDRESS ;sCHECK ONE CHARACTER s ILLEGAL CHARACTER sCARRIAGE RETURN 3‘, WN=O Vi i M4 : :n‘u 1s :n.n 2% ;DIGIT 0-7 3% TYPE .MPATD MOV BR #2,R2 4% MOV R2,PATSEL CMP BLOS TYPE BR R2.#2 4% . SQUES M4 ;DIGIT 8-9 ;sTYPE DEFAULT PATTERN ;WORST CASE PATTERN ;GO SAVE PATTERN ;1S # LARGER THAN 2 ;BRANCH IF NOT 300 T sRETYPE LINE ;SAVE PATTERN SELECTED ;GO TYPE 'STARTING FORMAT ON DRIVE N' 012737 005737 001403 104401 000402 104401 006266 001220 001300 M5: #TYPADR,CNTLC MODE ;CHANGE “C ENTRANCE ;'FORMAT' OR 'CHECK' MODE ? E;PE é:SFOU sTYPE 'STARTING FORMAT ON DRIVE N' TYPE +MSCHK sTYPE 'STARTING CHECK ON DRIVE N' BEQ 022023 022060 MOV TST 1$: 1% ;BR IF "CHECK' MODE E.3 CZRJBCO, RPO4/5/6 FMTR HACYH 30A(1052) 20-MAR-78 10:25 PAGE 33 CZRJBC.P11 20-MAR-78 10:22 GET VALUE FOR SOF TWARE SWITCH REGISTER 1530 1531 1532 1533 1534 1535 ]'ggg 003572 003572 013746 003576 104403 003602 104401 003600 003601 001 000 2%: 001214 TYPOS .BYTE .BYTE 001167 TYPE }g%g 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 } ggg 003606 003614 003616 003624 003632 003636 003640 003644 003650 003656 003664 00 003674 003676 003702 003704 003706 003714 023737 001011 013737 163737 005237 000427 013702 163702 013737 163737 100004 062737 005302 005237 005302 100404 062737 000772 003716 003722 003726 003732 003734 003740 005037 005037 005737 001416 005137 005137 1568 1569 003752 003754 001406 012737 1577 1578 }gg 001222 001224 001226 001230 001232 001232 001232 001222 001224 001226 001230 001232 001232 000023 001232 001232 000023 1585 CKADRS: CMP 1$: 2%: 3%: 001232 003744 003762 003770 003774 004000 004004 004010 004012 004014 004016 004020 022737 012737 013703 012700 013701 013702 010120 010220 001242 001244 001240 001242 001244 000001 001240 165555 133333 001256 025324 001242 001244 001242 001244 ENDCYL ,BEGCYL ;STARTING AND ENDING CYLINDERS THE SAME ? TTRKS SETPAT sMAKE THE NUMBER OF TRACKS INCLUSIVE ;SETUP THE DATA PATTERN BNE MOV sus 1% ENDTRK, TTRKS BEGTRK, TTRKS MOV sSuB MOV SuB ENDCYL ,R2 BEGCYL ,R2 ENDTRK, TTRKS BEGTRK, TTRKS INC BR BPL ADD DEC INC DEC BMI ADD BR SETPAT: CLR CLR TST BEQ COM COM 2% #19.,TTRKS R2 TTRKS R2 SETPAT #19. ,TTRKS 3% ;BRANCH IF BEGCYL NOT EQUAL TO ENDCYL sEND TRACK ADDRESS sSUBTRACT THE STARTING TRACK ADDRESS ;ENDING CYLINDER sSUBTRACT THE STARTING CYLINDER sCALCULATE THE RESIDUAL TRACKS s SUBTRACT THE STARTING TRACK ;BR IF ENDING TRACK GREATER ;CORRECT THE VALUE ;COUNT THE PARTIAL TRACK sMAKE THE NUMBER INCLUSIVE ;DECREMENT THE CYLINDER COUNT ;BR IF DONE sADD CYLINDER WORTH OF TRACKS s CONT INUE 1$: 005303 005303 ;CLEAR DATA PATTERN A sCLEAR DATA PATTERN B ;SEE IF PATTERN OF ONES :BR _IF SO ;SET PATA TO ONES ;SET PATB TO ONES 1% #165555,PATA ;BRANCH IF SO ;SET UP WORST CASE #1,PATSEL MOV MOV MOV MOV MOV MOV MOV #133333,PATB WC,R3 #BUFP,RO PATA.R1 PATB,R2 R1,(RO)+ R2,(RO)+ BNE 2% DEC DEC 001373 PATA PATB PATSEL 1% PATA PATB CMP BEQ MOV 2%: }gg} 1583 1584 1 0 . SCRLF ;:SAVE DRIVE FOR TYPEOUT ::TYPE DRIVE NUMBER ;:G0 TYPE--OCTAL ASCII ::TYPE 1 DIGIT(S) ; : SUPPRESS LEADING ZEROS s CR=LF ;THIS CODE SETS UP THE SELECTED DATA PATTERN TO BE WRITTEN ON EACH SECTOR IMAGE 1561 1562 1563 1564 1565 1566 1570 1571 1572 1573 1574 1575 1576 DRIVE,=(SP) ;SETUP TOTAL TRACK COUNT FOR FORMAT 1%28 1567 MOV R3 R3 ;SEE IF PATTERN OF ZEROS ;SET UP WORST CASE :SET UP COUNTER ;SET UP MEMORY POINTER sSET UP PATTERN IN R1 :SET UP PATTERN IN R2 ;MOV 1ST PAT INTO MEM ;MOV 2ND PAT INTO MEM ;KEEP COUNT sKEEP _COUNT ;DO IT AGAIN IF R3 NOT O ;THIS CODE SETS UP FOR THE ACTUAL FORMAT 004022 004026 004032 004737 004737 112737 005532 005732 000020 WRTRK: 001357 JSR JSR MOvB PC,SETTBL PC,SETHDR #20,FMTOPB+1 ;GO SET UP DRIVER TABLE ;GO INITIALIZE HEADERS IN THE SECTOR BUFFER IN CORE :LOAD FMT22 BIT SEQ 0031 G 3 20-MAR-78 10:25 PAGE 34 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 GET VALUE FOR SOF TWARE SWITCH REGISTER 1586 1587 1588 1589 004040 004044 004046 00‘004052 005737 001002 105037 112737 TST 001264 001357 000143 001360 1%: 2%: 38: WRTRK1: 004116 013737 001260 001362 004140 004146 112737 012737 000163 004146 001360 001110 004124 012737 025324 001364 g 8 ; 2 % e e S JE Y 1%: g ~ W ~N pury o 004226 1617 004220 104013 1620 1621 004226 004232 004737 022737 005464 000003 1623 004242 005237 001250 1625 1626 1627 1628 1629 1630 1631 1632 1633 004250 004254 005037 005037 001160 001250 004260 004266 004274 004300 112737 012737 012706 004037 000153 004266 001100 013164 1636 004310 005737 001374 1639 004320 113737 001314 001252 1641 004330 013737 001266 001252 001250 FMTDPB BR TST BEQ CLR 38: 4%: SEC20 1% FMTDPB+1 #SETFMT,FMTOPB+2 RO,RPO4 :BR _IF NOT ;CLEAR THE FMT22 BIT ;'LOAD FORMAT' COMMAND :START THE COMMAND 2% 3% ;LOOP UNTIL FINISHED FMTDPB+16 SOF SW RETRY EFLG MOV MOV TST BEQ MWC,FMTDPB+4 #BUFP,FMTDPB+6 MODE CKTRK MOV MOV JSR #. ,SLPERR #STACK,SP RO,RPO4 FMTDPB BR ;18 BIT MODE ? :DPB ADDRESS ;QUEUE FULL RETURN CLR CLR FMTDPB+10 #WRTHD ,FMTDPB+2 ;LOOK FOR DONE ;CLEAR _ERROR COUNTER sZERO THE RETRY COUNTER ;CLEAR ERROR DURING WRITE CHECK FLAG sRESTORE SECTOR sRESTORE wWC ;RESTORE BA :"FORMAT' OR °'CHECK' MODE ? :BR _IF 'CHECK' MODE SET WRITE HEADER & DATA COMMAND IN TBL ;SETUP LOOP ON ERROR ADDRESS ;LOAD STACK POINTER ;GO FORMAT A TRACK 1% ;ADRS OF PARAMETERS - TBL sWAIT FOR QUEUE IF FULL BEQ BPL 2% 4% ;BRANCH IF NOT DONE ;BRANCH IF NO ERROR JSR ERROR ERROR PC,ERINDX 10 1M TST MOV 001160 N R o - N o VIS WN=O e I b b S N b b N N S i b asb -t B o o Yo Yo Yo Yo Yo 3 012737 JSR WRTRK2: MOVB 28: 004200 MOVB CLRB e BB e RoRERES 1599 BNE CLRB ERROR ERROR ERROR ERROR JSR FMTOPB+16 #3%,SESCAPE sWAIT FOR COMMAND TO COMPLETE :;ESCAPE TO 38 ON ERROR ;SEE WHICH ERROR ;DRIVE OFFLINE ;PERSISTENT DRIVE UNSAFE ERROR 12 13 14 15 PC,LOP.CK sUNCORRECTABLE MASSBUS PARITY ERROR : SOF TWARE TIMEOUT ;DRIVE UNSAFE ERROR sDRIVE/CONTROLLER ERROR DURING WRITE ;LOOP ON THE ERROR ? BEQ INC BR 4% RETRY 1% :BR IF REACHED ;COUNT THE ERROR s TRY AGAIN CLR RETRY ;CLEAR THE RETRY COUNTER CMP CLR #3 ,RETRY S$ESCAPE ;ERROR RETRY LIMIT ? ;CLEAR ERROR ESCAPE ADDRESS ;CHECK THE TRACK JUST WRITTEN 001360 001110 CKTRK: 1%: 2%: MOVB MOV MOV JSR FMTDPB BR TST #WCKHD,FMTDPB+2 ;SET WRITE CHECK HEADER & DATA COMMAND IN TBL MOvB BNE MOV RP.REG+RPDA,SAVSEC :GET THE SECTOR ADDRESS 3% :BRANCH IF NOT SECTOR 0 MAXSEC 3AVSEC ;RESTORE TO LAST SECTOR +1 BEQ BPL #. ,SLPERR #STACK,SP RO,RPO4 1% FMTDPB+16 2% 8% ;SETUP LOOP ON ERROR ADDRESS :LOAD STACK POINTER ;GO CHECK THE TRACK JUST FORMATTED ;ADRS OF PARAMETERS - TBL ;WAIT FOR QUEUE IF FULL ;WAIT FOR COMMAND TO COMPLETE ;BRANCH IF NOT DONE :BRANCH IF NO ERROR SEQ 0032 CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 1642 1643 1644 1645 20-MAR-78 10:22 004336 004342 005237 005337 004362 004364 004366 104011 104012 104013 1646 004346 004354 004360 1650 004370 1647 1648 1649 MACY11 30A(1052) 012737 004737 104010 001252 001252 004712 005364 001160 20-MAR-78 004406 004410 004412 3%: 1658 1659 1660 004420 004422 004426 1657 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 004414 004430 004436 004442 004444 004450 004454 001413 012737 005737 001402 005337 005037 104017 001220 001112 001304 218%: 5%: 005037 001160 004470 032777 000200 174442 012737 104020 000001 001304 004476 004500 004506 004510 005737 100011 001426 001322 000421 1675 004512 032737 040000 001316 1676 004520 001411 1678 1679 1680 1681 004530 004532 004540 004542 001411 012737 104024 000404 1677 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 004522 004544 004552 004554 004560 004566 004570 004576 004602 004606 004612 004616 004620 004626 004632 004636 004642 032777 012737 104025 013701 113737 006301 016137 013746 066116 012637 005737 001421 012737 005237 000137 005737 001435 000200 174410 000001 001304 000001 001304 001252 001252 001366 001500 001260 001554 001254 001220 001364 177374 001216 004140 001362 001216 ERROR ERROR ERROR 11 12 13 3 24%: 7$: : ;ESCAPE TO 108 ON ERROR ;SEE WHICH ERROR ;DRIVE OFFLINE sPERSISTENT DRIVE UNSAFE ERROR sUNCORRECTABLE MASSBUS PARITY ERROR SOFTHARE TIMEOUT 14 RIVE UNSAFE ERROR #JCE ,RP. REG*RPCS? ;WRITE CHECK ERROR ? 4% IF SET RP.REG+RPER1, (PCS* ;CHECK FOR DATA ERRORS MOV TST #118,SESCAPE EFLG CLR EFLG BEQ DEC ERROR 5% :BR _IF NOT 21% SERTTL :NO, INCREMENT ERROR COUNT ;YES, DECREMENT REPORTED ERROR COUNT SESCAPE BIT #B1T7,3SWR TST BPL ;;ESCAPE TO 11$ ON ERROR ;ERROR DURING WRITE CHECK REPORTED ? :CLEAR ERROR DURING WRITE CHECK FLAG 17 CLR ;SECTOR NOT ACCEPTABLE RP.REG+RPER1 23% ;CLEAR THE ERROR ESCAPE ADDRESS ;DATA CHECK ERROR ? :NO, CHECK OTHER ERRORS :INHIBIT SOFT ERROR REPORTS ? 7% :YES, SKIP ERROR REPORT 7$ ; CONT INUE MOV ERROR #1,EFLG 20 BIT #JCE ,RP .REG+RPCS2 BIT #B1T7,3SWR BR BEQ BEQ MOV ERROR BR MOV ERROR MOV MOovB ASL MOV MOV ADD MoV TST BEQ 8%: s INCREMENT TO LAST SECTOR +1 sADJUST SECTOR TO THE ONE THAT FAILED DCK'OPI'DTE'HCRC'HCE'FER :DATA ERROR BITS 4% :BR IF SET 16 ;CONTROLLER/DRIVE ERROR DURING WRITE CHECK MODE :FORMAT OR CHECK MODE ? 5% ;BR _IF CHECK SOF SW sRETRYING THE SECTOR ? BEQ 23%: 10 SEQ 0033 .WORD BNE ERROR TST BEQ TST BEQ 001160 004456 004462 004466 #10%,$ESCAPE PC,ERINDX ERROR 4s: SAVSEC SAVSEC MOV JSR BIT BNE BIT 001216 004736 001304 INC DEC ERROR 104014 130620 001001 104016 005737 001416 005737 PAGE 35 GET VALUE FOR SOF TWARE SWITCH REGISTER 1651 004372 032737 040000 001316 1652 004400 001005 1653 004402 033727 001322 1654 1655 1656 10:25 MOV INC JMP TST BEQ :SET ERROR DURING WRITE CHECK FLAG ;DATA ERROR DURING WRITE CHECK 24% ;WRITE CHECK ERROR ? :NO, MUST BE HARDWARE ERROR :INHIBIT SOFT ERROR REPORTS ? 7% #1,EFLG 24 7% :YES, SKIP ERROR REPORT . :SET ERROR DURING WRITE CHECK FLAG sWRITE CHECK ERROR : CONT INUE #1,EFLG ;SET ERROR DURING WRITE CHECK FLAG 25 sHARDWARE ERROR DURING WRITE CHECK SAVSEC,R1 sFAILING SECTOR ADDRESS SAVSEC, FHTDPBHO :SECTOR ADDRESS R1 SETUP INDEX TO ADDRESS WORDS ADRTBL (R1), FHTDPB*b ;BUFFER ADDRESS FOR FAILING SECTOR MWC,~(SP) ;GET MAXIMUM WORD COUNT VALUE (2'S COMP) WCTBL(R1),(SP) :ADD WORD COUNT THROUGH FAILING SECTOR (SP)+, SAVWC ;STORE WORD COUNT FOR REMAINDER OF TRACK MODE ;FORMAT OR CHECK MODE ? 9% :BR IF CHECK 0-260..FHTDP804 ;WORD COUNT FOR 1 SECTOR SOFS sINDICATE THAT A RETRY IS IN PROGRESS URTRKZ :REFORMAT ERROR SECTOR SOF SW 1% y :RETRY IN PROGRESS ? :BR IF NOT 1 3 CZRJBCO, RP04/S5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 36 CZRJBC.P11 20-MAR-78 10:22 GET VALUE FOR SOF TWARE SWITCH REGISTER 022737 001403 g gi X 004644 004652 R S ~ Ty N aNNNVNNNNVNNN o 2 ~N gl NN W N b VRNV WN=O 5 ) 33 1698 1699 : : SN SO RS SIS Y 005704 001216 001304 004300 005464 000003 W ~N o W : : 3 5 b e D D e e d [ e ei o I e e G e 001216 001266 001250 004300 001160 001250 001304 000002 001366 001250 108: 118: 174160 004076 005622 128: sSEE IF LAST RETRY SOF SW s INCREMENT RETRY COUNT 9% BR 1% ;BR IF IT IS sREAD AGAIN ggzs ??gSEC.FHTDPBHO JSR CLR CLR PC,SCAWC SOF SW EFLG sSETUP TO CHECK REMAINING SECTORS ON THE TRACK ;CLEAR RETRY COUNTER ;CLEAR ERROR DURING WRITE CHECK FLAG JSR PC,LOP.CK sCHECK FOR LOOP ON ERROR JMP 1% CMP BEQ #3 RETRY 118 CLR S$ESCAPE INC JMP RETRY 1% CLR CLR BIT RETRY . EFLG #BIT1,3SWR JSR BR PC,TRKTST HDREAD BEQ JMP JMP 12% WRTRK1 WRTRK1 :SEE %; II.QST SECTOR ON THE TRACK sFINISH CHECKING THE TRACK ;ERROR RETRY REACHED ? :BR IF IT IS :COUNT THE RETRY ;D0 THE WRITE CHECK AGAIN ;CLEAR THE ERROR RETURN ESCAPE ADDRESS sCLEAR THE RETRY COUNTER ;CLEAR ERROR DURING WRITE CHECK FLAG ;LOOP ON CURRENT TRACK ? :BR IF NOT ;START AGAIN ON THE SAME TRACK sGET UPDATED TRACK AND CYLINDER ADDRESSES sRETURN HERE IF DONE = DO QUICK CHECK OF DISK sCONTINUE WITH THE FORMAT (V7] ~ o S (¥, b g S sTHIS CODE MAKES SURE EACH CYLINDER FORMATTED CONTAINS THE ;PROPER CYLINDER ADDRESS. THE PROGRAM IS LOOKING FOR ;POSSIBLE POSITIONER ERRORS THAT MAY HAVE OCCURRED DURING THE FORMAT. g g 2 8 b wb ad & :X -h o g S o S8 HDREAD: 001246 001362 001364 b wd 9%: #2,SOF SW BEQ INC 004076 b b ~ b CMP 001216 R T S 000002 001370 001360 001110 1$: CLR JSR JSR MOV MOV MOV CLR MOV MOvB MOV MOV JSR HEDERR ;CLEAR HEADER CHECK ERROR INDICATOR PC,SETTBL :GO SET UP DRIVER TABLE PC,SETHDR ;GO SET UP HEADERS IN CORE BEGCYL,CYLCK ;USE 'BEGCYL' FOR FORMAT VERIFICATION #-4 FMTDOPB+4 :SET UP WORD COUNT #RBUF ,FMTDPB+6 ;SET UP BUFFER ADRS FMTDOPB+10 ;CLEAR THE SECTOR & TRACK ADDRESS FIELD BEGCYL ,FMTDPB+12 ;SETUP THE CYLINDER FIELD #RDHD,FMTDPB+2 ;SET UP READ HEADER & DATA COMMAND #. ,SLPERR sSETUP LOOP ON ERROR ADDRESS #STACK,SP ;LOAD STACK POINTER RO,RPO4 ;GO READ HEADER SEQ 0034 J_ 3 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 37 CZRJBC.P11 20~MAR- 7810:22 GET VALUE FOR SOFTWARE SWITCH REGISTER 005172 005364 177577 005464 025314 005464 001222 005230 B8PL MOV JSR ERROR ERROR 001160 ERROR ERROR ERROR BIT 001374 3%: 001160 025324 4%: 001246 5%: 6%: AL AR S IIIFIN 2% 4% #5% ,SESCAPE PS.ERINDX 1 1 1 :ADRS OF PARAMETER TBL sWAIT IF QUEUE IS FULL JWAIT FOR COMMAND TO COMPLETE ;BRANCH IF NOT DONE :BR IF NOT ERROR ;sESCAPE TO 5% ON ERROR :SEE WHICH ERROR sDRIVE OFFLINE sPERSISTENT DRIVE UNSAFE ERROR JUNCORRECTABLE MASSBUS PARITY ERROR :SOF TWARE TIMEOUT :DRIVE UNSAFE ERROR # C<HCE>,FMTDPB+16 :BR l}SyggLY ERROR A HEADER COMPARE ERROR ? 1 21 SESCAPE 22 PC,LOP.CK RBUF ,BUFP 6% 23 PC,LOP.CK ;gDCVL.CYLCK $EOP CYLCK PC,UPDACY ::TDPB*12 :CONTROLLER/DRIVE ERROR VERIFYING HEADERS ;CLEAR THE ERROR ESCAPE ADDRESS ;HEADER COMPARE ERROR VERIFYING HEADERS sCHECK FOR LOOP ON ERROR sSEE IF CYL READ EQUALS CYL EXPECTED :BR IF CYL CORRECT sCYLINDER NOT CORRECT ;CHECK FOR LOOP ON ERROR :SEE IF LAST CYLINDER :BR IF NOT FINISHED :END OF FORMAT s INCREMENT CYLINDER ADDRESS BEING CHECKED JSET UP FOR NEXT CYL ;ADVANCE TO NEXT CYL # ;GO READ NEXT HEADER END OF PASS ROUTINE AR R it it ittt ittt ittt it it in it ;*INCREMENT THE PASS NUMBER (S$PASS) ;*IF THERES A MONITOR GO TO IT ;*IF THERE ISN'T JUMP TO DONE $EOP: 3s: 4%: 233333 BEQ ERROR CLR ERROR JSR CMP BEQ ERROR 7%: .SBTTL 1772 BEQ 1% FMTDPB+16 >SN 2%: 001374 FMTDPB BR TST W 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 SEQ 0035 TST BEQ TYPE BR TYPE TYPE MOV TYPDS TYPE INC BIC DEC $EOPCT: . WORD BGT MOV $ENDCT: . WORD $EOPCT $GET42: MOV MODE 3% MFCMPT 4% +MCCMPT . NUMERR $ERTTL,~(SP) SCRLF $PAS 0100000 $PASS (PC)+ 1 $DOAGN ;"FORMAT' OR °'CHECK' MODE ? :BR _IF °'CHECK' : 'FORMAT COMPLETE' sFINISH THE END MESSAGE : "CHECK COMPLETE' :"TOTAL ERRORS DETECTED: ' :;SAVE SERTTL FOR TYPEOUT :égOL;YPE°°DECIHAL ASCII WITH SIGN :; INCREMENT THE PASS NUMBER ..EggPT ALLOW A NEG. NUMBER %PC)*,G(PC)* ;s YES : RESTORE COUNTER 42 RO ::GET MONITOR ADDRESS gRSR3RAS833PLS 3 8 K 3 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 38 CZRJBC.P11 END OF PASS ROUTINE 20~MAR-78 10:22 d BEQ RESET e $ENDAD: JSR d e NOP NOP b D e d e e $SRTNAD: DONE: VONOWVNSWN=O d e e MoV #STACK,SP sRESET STACK POINTER #SW0,aSWR 1% MO ;SEE IF SWR O SET :BR IF SET ;ASK FOR NEXT DRIVE M5 :D0 THE FORMAT OR CHECK AGAIN d el e s ) D e ; sRETURN b b od d a(PC)+ DONE ;THIS ROUTINE DETERMINES THE ERROR TYPE s - d e ..SAVE ROOM :FOR IR 00 00 0o 0o 0o 00 00 00 0o 00 e 2:G0 TO MONITOR JMP .WORD JMP d e e 1%: ::BRANCH IF NO MONITOR :sCLEAR THE WORLD ..ACT11 BIT BNE JMP o 173572 PC, (RO) NOP $DOAGN: 000001 $DOAGN SEQ 0036 AR .SBTTL S 010146 005001 033727 060006 001025 033727 010000 001020 033727 006000 001013 033727 001400 001006 033727 000020 AR A A AR R AR AR Rt AR AR 28 3s i3 5% 000002 it ddd AN A AR AARAAAA AR AAAAA AR AR A AR AR AR ® R1,=(SP) ;STORE R1 R1 :CLEAR R1 FMTOPB+16, (PC)+ ~;CHECK ERROR TYPE BIT .WORD FMTDPB+16, (PC)+ :CHECK ERROR TYPE BIT12 *DRIVE PERSISTENTLY UNSAFE BIT .WORD ;DRIVE OFFLINE FMTDPB+16, (PC)+ :CHECK ERROR TYPE BIT11!BIT10 :UNCORRECTABLE MASSBUS PARITY ERROR ? BIT FMTDPB+16, (PC)+ :CHECK ERROR TYPE 4 :BR IF UNSAFE 3 :BR IF PARITY ERROR .WORD BIT09'BITO8 :SOFTWARE TIMEOUT ? BIT .WORD FMTOPB+16, (PC)+ :CHECK ERROR TYPE BITO04 :DRIVE UNSAFE ERROR ? INC INC R1 R1 INC R1 BNE 18 ittt :BR IF OFFLINE BNE 001374 ittt 1 BNE 001374 ittt BIT14!'BITI3'BIT2!BIT1 BNE 001374 d .WORD BNE 001374 i SUPPUr. SUBROUTINES ERINDX: MOV CLR BIT 001374 iia ittt INC INC ASL ADD MOV RTS 28 *BR IF YES 18 ‘BR IF YES R1 R1 : INCREMENT THE RETURN INDEX : INCREMENT THE RETURN INDEX R1 R1,2(SP) (SP)+,R1 PC *INCREMENT THE RETURN INDEX : INCREMENT THE RETURN INDEX : INCREMENT THE RETURN INDEX :DOUBLE THE INCREMENT :DEVELOP THE RETURN ADDRESS *RESTORE R1 *RETURN ;ROUTINE TO CHECK FOR LOOP ON ERROR 173446 LOP.CK: BIT #SW09, ASWR :LOOP ON ERROR ? 1$: $ESCAPE :CLEAR THE ERROR ESCAPE ADDRESS BEQ JMP CLR 1% aSLPERR ‘BR IF NOT :GO TO THE LOOP ON ERROR ADDRESS CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 39 CZRJBC.P11 20-MAR-78 10:22 SUPPORT SUBROUTINES 072002 001004 032737 001402 000137 000207 BIT 001374 004000 .WORD BNE BIT 001322 2%: 005230 3%: o —_ 005612 005620 013737 001232 001236 001234 & & 3 3 001367 001370 g 8 N 001230 001224 ~ 113737 013737 2 025324 8 —> W ~ W ~ 001362 012737 e — g i 8 v 001260 005552 005560 005564 00;207(2, 2 005 001356 BEQ JMP RTS FMTDPB+16,(PC)+ ;CHECK FOR "'FATAL' ERROR SITM'BIT13'BIT1Z'BIT10'BITO1;'FATAL' ERROR BITS $ R IF NOT 3s :BR'IF NOT PC RE TURN cULE.aP.REGoaPsni :WRITE LOCK ERROR ? $EOP :TERMINATE THE FORMAT 001364 SETTBL: MOVB CLRB MOV MOV CLRB MOvBe MOV CLR MOV MOV RTS DRIVE ,FMTDPB sSET UP DRIVE # FMTDPB+3 ;CLEAR HIGH ORDER ADRS BITS MWC ,FMTDPB+4 sLOAD UP WORD COUNT #BUFP,FMTDPB+6 ;LOAD UP CURRENT ADRS FMTOPB+10 sSET SECTOR TO ZERO BEGTRK,FMTDPB+11 ;SET UP STARTING TRK ADRS BEGCYL,FMTDPB+12 ;SET UP STARTING CYL FMTOPB+16 ;CLEAR RPO4 STATUS BEGTRK,TRKCNT ;SET UP PARTIAL CYL TRACK COUNT TTRKS, TTRKSC sSET UP TOTAL TRACKS COUNTER PC sRETURN FROM SETUP ;THIS ROUTINE CONTROLS THE DISK ADDRESSING AND TOTAL TRK COUNT ;1T IS ENTERED AFTER EVERY TRK OPERATION 000022 g BEQ CMP 001236 BEQ INC 3 022737 : 005630 : TRKTST: DEC 8 s INCB % 33RERCB IRV ITREER BREREE e E R R F 033727 SEQ 0037 :THIS ROUTINE SETS UP THE INPUT TABLE FOR THE DRIVER ROUTINE g R R g EZEERER g - sesEsEeEes 005504 005510 005512 005514 005522 005524 005530 1$: 2%: 3%: TTRKSC ;SEE #18. ,TRKCNT ;1S THIS THE LAST TRACK IN THE CYLINDER ? 3% 1% TRKCNT FMTDPB+11 IF LAST TRACK sBRANCH IF LAST TRACK :BRANCH IF SO sCOUNT UP TRACK WITHIN CYLINDER s INCREMENT TRACK NUMBER égR Sg.UPDATK CLR TRKCNT sCLEAR TRACK COUNT FOR NEXT CYLINDER #2,(SP) PC ;ADD TWO TO RETURN ADRS sRETURN CLRB INC JSR ADD RTS FMTDPB+11 FMTDPB+12 PC,UPDACY :g:??TE TRACK ADDRESS IN BUFFER sRESET TRACK ADDRESS TO 0 sUPDATE CYLINDER NUMBER sUPDATE CYLINDER NUMBER IN BUFFER ;THIS ROUTINE SETS UP WC & BA FOR REMAINING SECTORS sAFTER A WRITE CHECK ERROR 005704 005712 g 3 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 3 005724 005730 013737 062737 005237 005037 000207 001254 001010 001366 001216 001362 001364 SCAWC: MOV SAVWC ,FMTDPB+4 ADD #520. ,FMTDPB+6 CLR RTS SOF SW PC INC FMTOPB+10 ;SET UP WC FOR REMAINING SECTORS :SET UP BA FOR REMAINING SECTORS sADVANCE TO NEXT SECTOR IN TBL sRESET RETRY COUNTER sRETURN TO COMPLETE TRK FORMAT ;THIS ROUTINE SETS UP THE CYLINDER ADRS, FORMAT BIT, TRACK AND ;SECTOR ADRS IN MEMORY WITH THE STARTING CYL = TRK INFORMATION 005732 005736 005742 013701 012700 013702 001266 025324 001224 SETHDR: MOV MOV MOV MAXSEC,R1 #BUFP,RO BEGCYL ,R2 ;SET UP SECTOR COUNT :SET UP HEADER POINTER IN RO ;PUT STARTING CYL # IN R2 001230 001264 18: 001002 [ R MOV SWAB ST BEQ BIS MOV MOV BEGTRK,R3 RS SEC20 1s #10000,R2 R2, (RO} + R3. (RO)+ CLR ADD INC DEC BGE (RO) #514. RO R3 R1 1s CLR R 22e00eee S VONOWVSWN=O R Y T I e S R 010000 000 S 33 1907 e M3 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 40 CZRJBC.PN 20-MAR-78 10:22 S UPPORT SUBROUTINES RTS 1921 (RO)+ PC SEQ 0038 sPUT STARTING TRK # IN R3 sJUSTIFY TRACK ADRS ;SEE IF 20 OR 22 SECTOR MODE :BR_IF 20 SECTOR MODE sSET THE 22 SECTOR FORMAT BIT ;WRITE IN HEADER AREA OF CORE THE CYL ADRS sWRITE IN HEADER AREA OF CORE THE TRK ADRS sCLR 1ST KEYWORD ;CLR 2ND KEYWORD sSET UP FOR NEXT HEADER ;UPDATE SECTOR ADRS FOR NEXT HEADER sMAINTAIN COUNT OF SECTORS ;BRANCH IF NOT LAST SECTOR sEXIT = HEADERS ARE LOADED INTO CORE ;THIS ROUTINE UPDATES THE CYLINDER ADRS OF THE HEADER WORDS IN CORE 001266 025324 UPDACY: MOV MOV 177400 001006 BIC ADD DEC BGE 18: INC RTS MAXSEC,R1 #8UFP, RO (RO)+ #177400,(RO) #518. R0 R1 18 PC ;SET UP SECTOR COUNT sSET UP HEADER POINTER IN RO s INCREMENT FOR NEXT CYLINDER :RESET TRK ADRS TO 0 sSET UP FOR NEXT HEADER :COUNT SECTORS ;BRANCH IF NOT LAST SECTOR CEXIT :THIS ROUTINE UPDATES THE TRACK ADRS OF THE HEADER WORDS IN CORE 013701 012700 005720 062710 062700 001266 025324 000400 001010 UPDATK: MOV MOV ST MAXSEC,R1 #BUFP, RO (RO)+ :SET UP SECTOR COUNT ADD DEC BGE #520. RO R1 1$ :SET UP FOR NEXT HEADER 18: ADD RTS PC :INDEX TRK ADRS :COUNT SECTORS ;BRANCH IF NOT LAST SECTOR SEXIT ;ROUTINE TO CHECK FOR KW11-L OR KW11-P CLOCKS 006072 006100 006104 006110 006114 006122 006126 006132 006140 006146 006150 006154 000004 NE&R ST.CLK: MOV CLR TST MOV MOV ADD 173040 173030 062706 faees R2RIIIFIRINIILLLRR 1944 #400, (RO) ;SET UP HEADER POINTER IN RO ;POINT HEADER POINTER TO TRK = SEC ADRS #STCLK1 ,@#ERRVEC ;SET UP VECTOR FOR P CLK SFERRVEC+2 ; V'NE\ PSW aSLKCSR SCH CK FOR KW11-P #2, (SP) :POINT TO PSW SLPVEC,-(SP) #CLOCK.a(SP) :VECTOR ADDRESS :SET UP KW11-P VECTOR MOV #PR6,a(SP)+ MOV #135,a8LKCSR ~ :SET CLK = CNT UP MOV BR STCLK1: ADD MOV ST MOV MOV ADD MOV #-1,38LKCSB ‘PSW - PRI 6 :LOAD COUNTER BUFFER STCLK3 #4,SP sRESTORE THE STACK POINTER #STCLK2 ,@#ERRVEC ;; CHANGE ERROR VECTOR asLKS ;LOOK FOR Kw11-L SLLVEC,=(SP) ;KW11-L VECTOR ADDRESS #CLOCK.@(SP) :SET UP KW11-L VECTOR #2, (SP) #PR6,A(SP)+ : INCREMENT VECTOR ADDRESS ‘PSW - PRI 6 N 3 CZRJBCO, RPO4/5/6 FMTR MACYI 30A(1052) 20-MAR-78 10:25 PAGE 41 UPPORT SUBROUTINES CZRJBC.P11 20~MAR-78 10:22 006210 1966 006224 012777 000402 062706 012737 000207 000100 172770 000006 000004 MOV BR STCLK2: ADD STCLKS: MOV RTS #100,a8LKS STCLK3 #6 ,#ERRVEC PC ;SET KW11-L INTERRUPT ENABLE ;RESTORE THE STACK POINTER sRESTORE THE ERROR VECTOR ;THIS CODE SERVICES A CLOCK INTERRUPT EVERY 16MS CLOCK: MOV JSR RTI #16.,-(SP) PC.RPTMR sPUT MILLISECONDS ON THE STACK ;GO REPORT TIME ;RETURN AND CONTINUE ;ROUTINE TO INTERCEPT *CONTROL C' TYPED DURING PARAMETER ENTRY TIME OENTER: MOV 1$: TST BNE RESET JMP #STACK,SP sINITIALIZE THE STACK 1% :BR _IF NOT TRNSWT M8 sALL ACTIVITY STOPPED ? ;CLEAR THE BUS ;START AGAIN WITH DRIVE SELECTION ;ROUTINE TO TYPE THE PRESENT DISK ADDRESS. 1986 1990 0062 006272 012737 006246 001300 TYPADR: CLR MOV TYPE MOV 006314 006 006356 737 004737 012737 011620 011560 001167 006266 2009 006370 ol PC,$SUPRS .LINSP CLR =(SP) JSR PC,SSUPRS MOV #TYPADR,CNTLC RTI FMTDPB+11, (SP) PC,$5820 . SCRLF ENTERED BY TYPING °‘CONTROL C' ;SET PROCESSOR TO PRIORITY 0 ;CHANGE °'CONTROL C' RETURN ADDRESS ::EBESENT ADDRESS IS: ° ;PUT THE CYLINDER ADDRESS ON THE STACK %We’efl IT TO DECIMAL SPACES CLEAR THE STACK :PUT THE TRACK ADDRESS ON THE STACK sCONVERT IT TO DECIMAL sTYPE IT s CR-LF ;RESTORE ENTRANCE TO THIS ROUTINE*RETURN :::f:nersn ENTRY ROUTINE : : 2008 TYPE TYPE 001300 FMTDPB+12,-(SP) PC,$582D0 mMovBe JSR 001367 PSW #OENTER,CNTLC .ADDRIS JSR JSR TYPE 021027 - I 1963 28388 FEFEFERE ;& r SEQ 0039 012703 001376 006404 JSR PARENT: MOV 18: 3s: 021021 MoV MOV MOV BEQ TYPE .WORD MOV MOV MOV TYPDS TYPE RDLIN #ADR,R3 :PARAMETER TABLE ADDRESS R3,-(SP) :SAVE R3 9s *BR IF AT END OF TABLE PC, PARENT #TABLE ,R3 (R3)+, §8 0 (R3)+,R2 (R3)+,R5 (RS) ,=(SP) .SLASH *GET THE PARAMETERS *PARAMETER TABLE ADDRESS *ADDRESS OF PARAMETER NAME STYPE THE PARAMETER NAME *ADDRESS OF PARAMETER NAME TEXT sMAXIMUM PARAMETER VALUE ;ADDRESS OF PARAMETER ;CURRENT VALUE OF PARAMETER TVPE THE CURRENT VALUE OF THE PARAMETER READ THE KEYBOARD 8 4 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 42 SUPPORT SUBROUTINES 20-MAR-7,8 10:22 SEQ 0040 CZRJBC.P11 2019 MOV JSR 006630 1% 9% 6% (SP)+,R1 R5,CK.DIG 5% 6% 7$ 5%: 021566 000006 68%: 7%: 001376 R2.,(R5) 1% suB BR #6,R3 1% MoV #TABLE ,R3 MOV BR 8%: BR MOV 9%: ;TERMINATED WITH A CARRIAGE RETURN MOV BR TYPE RTS sINPUT ASCII STRING ADDRESS sCHECK THE DIGIT(S) JCARRIAGE RETURN ONLY ENTERED ;PERIOD ONLY ENTERED s ILLEGAL INPUT .BADENT R2,(R5) 9% 1% (SP)+,R3 PC TERHINATED WITH A """ JTERMINATED WITH A i HOVE NEW VALUE TO PARAHETER LOCATION :GET MORE PARAMETERS :"BAD ENTRY' ;DECREMENT THE TABLE POINTER ;TRY AGAIN ;NEW VALUE SEXIT ;RELOAD THE PARAMETER TABLE ADDRESS ;s TRY AGAIN :RESTORE R3 ;RETURN ;THIS ROUTINE IS USED TO CHECK IF AN sASCII CHARACTER IS A DIGIT BETWEEN O AND 7. s CALL 000060 #ADR ,R1 MoV R5.CK.OCT JSR RETURN1 RETURNZ2 : 000067 177770 1%: CMPB BLO CMPB BHI mMovBe BIC TST RTS (R1).,#'0 1% (R1) ,#'7 1% (R1) ,R2 #°C7.R2 (R5)+ RS ;ADDRESS OF ASCII CHARACTER sCHECK THE CHARACTER ;CHARACTER IS NOT BETWEEN 0-7 ;CHARACTER IS IN R2 AS A ;OCTAL DIGIT ;LESS THAN ZERO? ;YES == BRANCH ;GREATER THAN SEVEN? ;YES == BRANCH ;GET THE CHARACTER ;STRIP AWAY THE ASCII :ADJUST FOR RETURN sRETURN ;THIS ROUTINE IS USED TO CHECK AN ASCII CHARACTER ;AND DETERMINE IF IT IS A DIGIT BETWEEN O AND 9. s CALL MoV JSR NNN Jryg §N°N 358 - 000060 CK.DEC: 000071 o N = b e b - N —'ONOB = b =2 RETURN1 RETURNZ2 000060 1%: CMPB BLO CMPB BHI MOvB BIC TST RTS #ADR,R1 RS.CK.DEC ;ADDRESS OF ASCII CHARACTER ;CHECK THE CHARACTER :NOT BETWEEN O AND 9 ;BETWEEN O AND 9 :R2 = DIGIT ;LESS THAN ZERO? :YES == BRANCH ;GREATER THAN NINE? ;YES == BRANCH :GET THE CHARACTER ;STRIP AWAY THE ASCII ;ADJUST FOR RETURN sRETURN C_4 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 43 CZRJBC.P11 SUPPORT SUBROUTINES 20-MAR-78 10:22 2075 2076 2077 ;THIS ROUTINE WILL CHECK AN ASCII CHARACTER TO ;DETERMINE WHAT IT IS. MOV JSR RETURN RETURN RETURN RETURN RETURN RETURN #ADR ,R1 RS,CK.CHR ADR1 ADR2 ADR3 ADR& ADRS ADR6 LB TRTR R N R Y s CALL CK.CHR: 000054 000056 006530 006502 1%: TSTB BEQ CMPB BEQ CMPB BEQ JSR BR JSR TST TST TST TST TST INC MOV RTS 2%: 3%: 4%: (R1) 3% 8-'-.—0...-.-‘—!-‘-‘—!8 VNN WN=O -y LA TEATETE TR FE R . CK.DIG: 4 d D —d —d — d —d —d ) D ——d :CARRIAGE RETURN * (R1)=ADR+1 ;COMMA * (R1)=ADR+1 sPERIOD * (R1)=ADR+1 ;DIGIT BETWEEN O AND 7. ;DIGIT BETWEEN 8 AND 9. :R2 = DIGIT * (R1)=ADR+1 ;"'CARRIAGE RETURN'"? (R1).#*. 1% R5,CK.DEC 4% RS,CK.OCT (RS)+ (RS)+ (RS)+ (RS)+ (RS)+ R1 (R5) ,RS RS sOCTAL ? :DIGIT BETWEEN 8-9 :DIGIT BETWEEN 0-7 ;PERIOD ; COMMA ;CARRIAGE RETURN ;MOVE POINTER TO NEXT CHARACTER sUNKNOWN CHARACTER :RETURN STRING FOR LEGAL ;CHARACTERS AND FORMS A DECIMAL VALUE BINARY NUMBER IN R2. :CALL N — ;ADDRESS OF ASCII CHARACTER sCHECK CHARACTER JUNKNOWN CHARACTER (R1).#»', 2% ;THIS ROUTINE CHECKS AN ASCII LSLSTNTNTNTNTSTNTNTNT,NT,N TN SEQ 0041 006556 MOV MOV JSR RETURN RETURN RETURN RETURN RETURN RETURN #ADR ,R1 #NUM,R2 R5,CK.DIG ADR1 ADRZ2 ADR3 ADR& ADRS ADR6 ;ADDRESS OF ASCIZ STRING sMAX. MAGNITUDE OF INPUT NUMBER ;CHECK DIGITS R4 ,=(SP) R3,-(SP) R2,=(SP) R2 R3 R4 R5.CK.CHR ;:SAVE R& ;SAVE R3 ;SAVE THE MAX. SIZE ON THE STACK :START WITH O :"'CR"' ONLY ENTERED =-- R2=0 :"PERIOD'* ONLY ENTERED -- R2=0 s ILLEGAL CHARACTER OR INPUT TOO LARGE == R2=? :"'CR'" == R2 = NUMBER ;"'COMMA’" == R2 = NUMBER ;"PERIOD'* == R2 = NUMBER ;CHECK ONE CHARACTER : ILLEGAL CHARACTER : CARRIAGE RETURN e 0 e o LR N 2131 2132 006664 006664 062705 006 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 1% 1% ADD ASL MOV 1%: 2%: ASL ASL ADD 006556 SEQ 0042 ;DIGIT 0=7 ;DIGIT 8-9 ;STEP RETURN POINTER PAST ''CR'' & "PERIOD'® RETURNS : INPUT NUMBER *2 #4 RS R3 R3,-(SP) R3 SAVE *2 8 $(#2)+(#8) = *10 RS, CK.CHR :UPDATE THE INPUT NUMBER sCHECK ONE CHARACTER s ILLEGAL CHARACTER : CARRIAGE RETURN . ’ PO 2146 2147 ;DIGIT Q-7 :DIGIT 8-9 ;DOES A ‘'CR'* FOLLOW THE 'PERIOD"’ :BR _IF NOT s INCREMENT THE RETURN s INCREMENT THE RETURN : INCREMENT THE RETURN sCHECK THE MAGNITUDE OF THE NUMBER ;BR _IF ENTERED NUMBER TOO LARGE :BYPASS INCREMENT ; INCREMENT RETURN PAST INVALID RETURN s INCREMENT RETURN sSETUP RETURN POINTER ;ENTERED VALUE ;CLEAN MAX. SIZE OFF OF STACK ;RESTORE R3 ;RESTORE R4 ;GET RETURN ADDRESS ;RETURN (R1) 8% (R4)+ 2148 2149 2150 2151 2152 2153 (R4)+ (R4)+ R3,(SP) 9% TST MOV MOV MOV RTS 8% (RS)+ (RS)+ R4 RS R3,R2 (SP)+ (SP)+,R3 (SP)+,R4 (RS) ,RS RS .SBTTL MACRO ROUTINES .SBTTL ERROR HANDLER ROUTINE AR AR AR d iRt idt it ittt ittt ittt ittt ittt il dd ;*THIS ROUTINE WILL INCREMENT THE ERROR FLAG AND THE ERROR COUNT, s*SAVE THE ERROR ITEM NUMBER AND THE ADDRESS OF THE ERROR CALL s*AND GO TO TYPERR ON ERROR :'§U$SS¥ITCH OPTIONS PROVIDED BY THIS ROUTINE ARE: ;t ;*SW13=1 s *SW10=1 s *SW09=1 :*CALL ;® 006766 006770 006774 007000 104407 010137 010337 013737 $ERROR: 001274 001276 001370 001270 HALT ON ERROR = INHIBIT ERROR TYPEOUTS BELL ON ERROR LOOP ON ERROR ERROR N ; ;ERROR=EMT AND N=ERROR ITEM NUMBER ;;TEST FOR CHANGE IN SOF T-SWR ;DRIVE ADDRESS IF DRIVE ERROR CALL JATTENTION REGISTER CONTENTS FMTDPB+12,DS.CYL s CURRENT CYLINDER ADDRESS R1,DDRIVE R3,ATTIN (Tl D 4 CZRJBCO, RPO4/5/6 FHTR8 H8C5;1 30A(1052) 20-MAR-78 10:25 PAGE 44 SUPPORT SUBROUTINES CZRJBC.P11 20-MAR-7 113737 005737 001367 001312 001103 005777 100002 000000 104407 032777 001402 013716 005737 001402 013716 172070 172060 O —— N = =2 oroc 388 007174 001167 001110 RP.REG+RPBA,-(SP) 20%: 2%: 171766 3%: 001160 4%: 001160 - 000002 ;NON=-ZERO BUFFER ADDRESS ? ‘BR IF NO BUFFER ADDRESS :BUFFER ADDRESS SUB MOV #2.(SP) a(SP)+,8GDDAT :DECREMENT THE ADDRESS :GET THE BUFFER WORD WHICH DIDN'T COMPARE BEQ 78 S:DON'T LET THE FLAG GO TO ZERO #BIT10,aSWR 1% :;BELL ON ERROR? ::NO = SKIP (SP) ,$SERRPC ::;GET ADDRESS OF ERROR INSTRUCTION INCB TYPE INC MoV SERFLG :;SET THE ERROR FLAG $TSTNM,aDISPLAY ;:DISPLAY TEST NUMBER AND ERROR FLAG . SBELL SERTTL SuB MovB BIT BNE #2,SERRPC @SERRPC,SITEMB #BIT13,aSWR 208 TYPE .SCRLF JSR 172002 001000 MOV BIT BEQ 1%: ;REQUESTED TRACK ADDRESS g:.REG+RPBA MOV N — = 032777 001004 004737 104401 001162 001112 001116 000002 172006 020000 7%: FMTOPB+11,DS.TRK TST BEQ 001312 000002 001124 001102 002000 Move 001272 SEQ 0043 PC,TYPERR : :RING BELL ;;COUNT THE NUMBER OF ERRORS ;;STRIP AND SAVE THE ERROR ITEM CODE ::SKIP TYPEOUT IF SET ::SKIP TYPEOUTS ::G0 TO USER ERROR ROUTINE TST BPL aSWR 3% ;sHALT ON ERROR ::SKIP IF CONTINUE BIT BEQ #B1T09,aSWR 4% IN SOFT-SWR ..LOOP ON ERROR SWITCH SET? :BR IF NO TST SESCAPE HALT CKSWR MOV BEQ MOV $SLPERR, (SP) 5% $ESCAPE, (SP) RTI ;sHALT ON ERROR! :sTEST FOR CHANGE ..FUDGE RETURN FOR LOOPING ;;CHECK FOR AN ESCAPE ADDRESS ::BR IF NONE ::FUDGE RETURN ADDRESS FOR ESCAPE : ;RETURN ;THIS ROUTINE USES THE '‘ITEM CONTROL BYTE'' (SITEMB) TO DETERMINE ;WHICH ERROR IS TO BE REPORTED, IT THEN OBTAINS, FROM THE ‘ERROR ;TABLE'' (SERRTB), AND REPORTS THE APPROPIATE INFORMATION ;CONCERNING THE ERROR. TYPERR: 001114 SAVREG CLR MOvB DEC RO $1TEMB,RO RO ASL ASL RO RO ASL 001630 007234 1%: 001167 007252 001167 ADD MOV BEQ ;;;E 2%: 3%: .WORD MOV BEQ TYPE RO :SAVE RO-R5 :CLEAR RO FOR ERROR NUMBER ;ERROR NUMBER ;FORM INDEX FOR ERROR TABLE #SERRTB,RO ;FORM ADDRESS .SCRLF :"'CARRIAGE RETURN = LINE FEED (RO)+,2% 3% 0 (RO)+,4% 5% .SCRLF ;GET ERROR MESSAGE (EM) POINTER ;BRANCH IF THERE ISN'T ONE ;"EM'' POINTER GOES HERE ;PICK UP DATA HEADER (DH) POINTER ;BRANCH IF NONE ;CARRIAGE RETURN-LINE FEED TMTM E 4 CZRJBCO, RP0O4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 45 CZRJBC.P11 0-MAR-78 10:22 ERROR HANDLER ROUTINE F CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 46 CZRJBC.P11 20-MAR-78 10:22 ERROR HANDLER ROUTINE 104401 000000 012001 001460 005005 012000 012002 001451 005105 104401 112003 112004 5%: 001167 006004 103403 013146 005302 003431 104401 ;PICKUP DATA TABLE (DT) POINTER sBRANCH IF NONE sSET INDENT SWITCH ;DATA FORMAT (DF) POINTER ;NUMBER OF DH'S TO TYPE ;BRANCH IF DH NUMBER IS 0 sNO INDENT ;CARRIAGE RETURN-LINE FEED :NUMBER OF DATA WORDS TO TYPE +SCRLF :AND HOW TO TYPE THEM ;OCTAL OR DECIMAL? s DECIMAL--BRANCH R4 12% a(R1)+,-(SP) ::SAVE @(R1)+ FOR TYPEOUT ::GO TYPE--OCTAL ASCIICALL DIGITS) 13% ;:SAVE @a(R1)+ FOR TYPEOUT ;:G0 TYPE--DECIMAL ASCII WITH SIGN sMORE NUMBERS TO TYPE? s NO=--BRANCH ;YES==TYPE SEPERATORS ;LOOP sMORE DH'S? :NO==BRANCH s YES==START A NEW LINE sONLY A 'DH' IN THIS REQUEST ? :BR IF YES = BYPASS THE INDENT : INDENT? s NO==BRANCH ;YES=-TYPE SPACES ;GET NEXT DH sAND TYPE IT :DH POINTER GOES HERE sTYPE A ) M :BR iF A : INCREMENT THE °'DF' POINTER ;SEE IF END OF 'DF' BLOCK ;CARRIAGE RETURN-LINE FEED s INDENT? s NO=-BRANCH s YES=--TYPE SPACES ;LOOP ;RESTORE RO-R5 ;RETURN a(R1)+,-(SP) R3 148 13%: .LINSP 021035 11% R2 14%: 208 . SCRLF 2(RO) 001167 000002 021035 007366 :'DH'’ POINTER GOES HERE 0 (RO)+,R1 20% RS (RO)+,R3 (RO)+,R4 108: 12%: 013146 SEQ 0044 (RO)+,RO (RO)+,R2 17% RS 11%: 104402 000402 104405 005303 001403 104401 000764 TYPE . WORD MOV (%: 4 15% R5 15% .LINSP 15%: (RO)+,16% 0 (RO) 21% 16%: 000004 001167 21%: 021035 17%: #4 RO 14% . SCRLF TYPE TST BNE R5 108 BR 108 .LINSP TYPE 20%: RESREG RTS PC .SBTTL TYPE ROUTINE MR AR AR AR iRttt a it it ittt ittt isds] s*ROUTINE TO TYPE ASCIZ MESSAGE. MESSAGE MUST TERMINATE WITH A O BYTE. s*THE ROUTINE WILL INSERT A NUMBER OF NULL CHARACTERS AFTER A LINE FEED. ;*NOTE1: $NULL CONTAINS THE CHARACTER TO BE USED AS THE FILLER CHARACTER. ;*NOTEZ2: $FILLS CONTAINS THE NUMBER OF FILLER CHARACTERS REQUIRED. :*NOTE3: $FILLC CONTAINS THE CHARACTER TO FILL AFTER. CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 TYPE ROUTINE CZRJBC.P11 20-MAR-78 10:22 G_ PAGE 47 4 s*CALL: '1) USING A TRAP INSTRUCTION TYPE P ;® 105737 100002 001157 .MESADR ;;MESADR IS FIRST ADDRESS OF AN ASCIZ STRING $TPFLG 1% ;:1S THERE A TERMINAL? ;:BR IF YES :;HALT HERE IF NO TERMINAL s ;LEAVE TYPE MESADR TSTB 000000 000407 1%: MOV 2%: MOVB 000002 60%: 3%: ADD 3% RO,-(SP) a2(sP) RO (RO)+,~(SP) 4% (SP)+ (SP)+,RO #2,(SP) 000011 4%: CMPB #HT, (SP) 000002 000200 8s 007640 5%: 6%: JSR CMPB 001154 7%: 007574 007640 DECB BLT JSR DECB BR : ;RETURN s :BRANCH IF <HT> ; ;BRANCH IF NOT <CRLF> (SP)+ ::POP $CHARCNT s ;CLEAR CHARACTER COUNT +:GET NEXT CHARACTER ::G0 TYPE THIS CHARACTER :;IS IT TIME FOR FILLER CHARS.? ::1F NO GO GET NEXT CHAR. ;:GET # OF FILLER CHARS. NEEDED ::AND THE NULL CHAR. ;;DOES A NULL NEED TO BE TYPED? ;:BR IF NO--GO POP THE NULL OFF OF STACK 2% PC,$TYPEC SFILLC,(SP)+ 2% $NULL ,-(SP) 000001 2 :SAVE RO ::GET ADDRESS OF ASCIZ STRING :sPUSH CHARACTER TO BE TYPED ONTO STACK 2:BR IF IT ISN'T THE TERMINATOR ;:1F TERMINATOR POP IT OFF THE STACK ::RESTORE RO ::ADJUST RETURN PC #CRLF, (SP) 5% 007574 001156 SEQ 0045 1(SP) 6% PC,$TYPEC SCHARCNT 7% <CR><LF> EQUIV ;sTYPE A CR AND LF ::G0 TYPE A NULL ::D0 NOT COUNT AS A COUNT ; :LOOP sHORIZONTAL TAB PROCESSOR 000040 007574 000007 007640 MOVB JSR BITB BNE TST BR 171350 000002 000015 8%: 9%: 171342 000002 $TYPEC: TSTB BPL 007640 000012 000002 1%: CMPB #' ,(SP) PC,STYPEC #7 ,S$CHARCNT 9% (SP)+ 43 as$TPS $TYPEC 2(SP) ,a$TPB qu.Z(SP) SCHARCNT $STYPEX #LF ,2(SP) ; ;REPLACE TAB WITH SPACE ::TYPE A SPACE ; :BRANCH IF NOT AT ::TAB STOP :;POP SPACE OFF STACK ::GET NEXT CHARACTER ;:WAIT UNTIL PRINTER IS READY ::LOAD CHAR TO BE TYPED INTO DATA REG. ::1S CHARACTER A CARRIAGE RETURN? : ;:BRANCH IF NO ..YES--CLEAR CHARACTER COUNT JEXIT ::1S CHARACTER A LINE FEED? 2355 2356 2357 2358 2359 2360 %332} 007634 007636 007640 007642 001402 105227 000000 000207 BEQ INCB $CHARCNT:.WORD $TYPEX: RTS ,SBTTL H 4 PAGE 48 $TYPEX (PC)+ O PC SEQ 2046 s sBRANCH IF YES ;;COUNT THE CHARACTER ; sCHARACTER COUNT STORAGE BINARY TO OCTAL (ASCII) AND TYPE 2“3 .‘;tt'tt't'tit'tt'ttt"i't'itt"tt"tt't"tttiitt'ttttttttt'tfit'tt %3329 .-tngos---smsn HERE TO SETUP SUPPRESS ZEROS AND NUMBER OF DIGITS TO TYPE 2364 2365 ;*THIS ROUTINE IS USED TO CHANGE A 16=BIT BINARY NUMBER TO A 6-DIGIT s*OCTAL (ASCII) NUMBER AND TYPE IT. 2368 2369 2370 o % ' 2372 .* 2371 1T MOV TYPOS .BYTE BYTE NUM,~-(SP) N M o 5332 - % : :NUMBER TO BE TYPED ::CALL FOR TYPEOUT :sN=1 TO 6 FOR NUMBER OF DIGITS TO TYPE ::M=1 0RO ;:1=TYPE LEADING ZEROS ::0=SUPPRESS LEADING ZEROS 2375 2376 2377 ;*$TYPON=-==<ENTER HERE TO TYPE OUT WITH THE SAME PARAMETERS AS THE LAST .‘*STYPOS OR $TYPOC s*CALL: ggg % 2378 B MOV TYPON NUM,-(SP) : :NUMBER TO BE TYPED s :CALL FOR TYPEOUT - % 2381 2382 2383 :*$TYPOC---ENTER HERE FOR TYPEOUT OF A 16 BIT NUMBER s*CALL: i MOV NUM,-(SP) : :NUMBER TO BE TYPED %3332 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 B 007644 007650 007656 007662 007666 007670 007676 007704 007712 007714 007716 007720 007724 007726 007732 007736 007742 007746 007750 007752 007754 007756 007760 007762 007764 017646 116637 112637 062716 000406 112737 112737 112737 010346 010446 010546 113704 005404 062704 110437 113704 016605 005003 006105 000404 006105 006105 006105 010503 006103 000000 000001 010071 000002 000001 000006 000005 010071 000006 010070 010067 000012 010067 010067 010071 010066 TYPOC $TYPOS: MOV MOVB MOVB ADD BR $TYPOC: MOVB MOVB STYPON: MOVB MOV MOV MOV MOVB NEG ADD MOVB MOVB MOV CLR 1%: ROL HR 2%: ROL ROL ROL MOV 3%: ROL ::CALL FOR TYPEOUT a(SP) ,-(SP) 1(SP) ,SOFILL (SP)+,$OMODE+1 #2,(SP) $TYPON #1,80FILL #6, SOMODE +1 #5,80CNT R3,-(SP) R4 ,-(SP) RS,=-(SP) $OMODE +1,R4 R4 #6 R4 R4 , SOMODE SOFILL R4 12(SP) ,RS R3 RS 3% RS RS RS RS5.R3 R3 ;:PICKUP THE MODE ;:LOAD ZERO FILL SWITCH ;;NUMBER OF DIGITS TO TYPE : :ADJUST RETURN ADDRESS ::SET THE ZERO FILL SWITCH ;:SET FOR SIX(6) DIGITS J:SET THE ITERATION COUNT ::SAVE R3 ::SAVE R4 ::SAVE RS ::GET THE NUMBER OF DIGITS TO TYPE ::SUBTRACT IT FOR MAX. ALLOWED ::SAVE IT FOR USE ::GET THE ZERO FILL SWITCH ;sPICKUP THE INPUT NUMBER ;sCLEAR THE OUTPUT WORD :sROTATE MSB INTO '‘C'' ::G0 DO MSB ;sFORM THIS DIGIT ::GET LSB OF THIS DIGIT TMM~ CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR-78 10:22 TYPE ROUTINE I 4 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 49 CZRJBC.P11 20-MAR-78 10:22 BINARY TO OCTAL (ASCII) AND TYPE 2411 2412 2413 007766 007772 007774 105337 100016 042703 2415 2416 2417 2418 2419 010002 010004 010006 010010 010014 005704 001403 005204 052703 052703 000060 000040 104401 010064 2414 2420 010000 010020 001002 110337 2421 010024 2423 2424 2425 2426 010034 010036 010040 010042 003347 002402 005204 000744 010052 016666 2422 2427 2428 2429 2430 2431 010030 010044 010046 010050 010060 2432 010062 gzgg 010070 2433 2434 2435 2436 010064 010065 010066 010067 105337 012605 012604 012603 012616 010070 DECB BPL BIC 177770 4%: 5%: 010064 010066 ’$: 6%: 000002 000004 000002 000 000 000 000 BNE $OMODE 7% #177770,R3 4% ..TYPE THIS DIGIT? :BR IF NO ..GET RID OF JUNK ::TEST FOR 0 MOVB R3,8% ::SAVE FOR TYPING TST BEQ INC BIS BIS TYPE ,8% $SOCNT MOV MOV MOV (SP)+,RS (SP)+,R4 (SP)+,R3 BGT BLT INC BR MOV RTI .BYTE .BYTE $OCNT: .BYTE $OFILL: .BYTE 000000 R4 5% R4 #'0,R3 #' _R3 DECB MoV 8%: SEQ 0047 2% 6% R4 2% 2(SP) ,4(SP) (SP)+,(SP) 0 0 0 O ::G0 TYPE THIS DIGIT ;sCOUNT BY 1 ;:BR IF MORE TO DO ::BR IF DONE ;s INSURE LAST DIGIT ISN'T A BLANK ::GO DO THE LAST DIGIT : ;RESTORE RS : ;RESTORE R4 :;RESTORE R3 2:SET THE STACK FOR RETURNING ; :RETURN ::STORAGE FOR ASCII DIGIT ;sTERMINATOR FOR TYPE ROUTINE ;:OCTAL DIGIT COUNTER :sZERO FILL SWITCH $OMODE: .WORD 52‘3:8 .SBTTL CONVERT BINARY TO DECIMAL AND TYPE ROUTINE 2“1 :;t'ttt""tt"'t"t"'t't"'t't't""l'.tt'fit'ttt'tt'ttittt.ttti 2442 :*THIS ROUTINE IS USED TO CHANGE A 16-BIT BINARY NUMBER TO A S-DIGIT 2447 s*CALL: 2443 2444 2445 2446 2451 i* B 010072 010072 010074 010076 010100 010102 010046 010146 010246 010346 010546 2458 010110 016605 2461 010120 2457 010104 2459 2460 2462 2463 2464 2465 2466 ::NUMBER OF DIGITS TO TYPE :*SIGNED DECIMAL C(ASCII) NUMBER AND TYPE IT. DEPENDING ON WHETHER THE ;*NUMBER IS POSITIVE OR NEGATIVE A SPACE OR A MINUS SIGN WILL BE TYPED ;*BEFORE THE FIRST DIGIT OF THE NUMBER. LEADING ZEROS WILL ALWAYS BE ;*REPLACED WITH SPACES. 2448 gzgg 2452 2453 2454 2455 2456 O : :SUPPRESS THIS 0? ;:BR IF YES ::DON'T SUPPRESS ANYMORE 0°'S ;:MAKE THIS DIGIT ASCII ;sMAKE ASCII IF NOT ALREADY 010114 010116 012746 100004 005405 012703 010306 010134 112723 005002 016001 000040 010276 NUM,~-(SP) ::PUT THE BINARY NUMBER ON THE STACK ;:GO0 TO THE ROUTINE MOV MOV MOV MOV MOV RO,~-(SP) R1,-(SP) R2.-(SP) R3.-(SP) RS,=(SP) ::PUSH RO ON STACK ::PUSH R1 ON STACK ::PUSH R2 ON STACK ::PUSH R3 ON STACK ::PUSH RS ON STACK MOV 20(SP) RS MOV 000020 000055 005000 010140 010142 020200 112766 010126 010130 $TYPDS: MOV TYPDS 000001 BPL NEG 1%: 2%: IZOZOO -(SP) ::BR IF INPUT IS POS. ::MAKE THE BINARY NUMBER POS. RO ;sZERO THE CONSTANTS INDEX #'-,1(SP) MOV #$DBLK ,R3 MOVB CLR Mov ::GET THE INPUT NUMBER 1% RS MOVB CLR :sSET BLANK SWITCH AND SIGN 'A (R3)+ R2 $DTBL (RO) ,R1 ;sMAKE THE ASCII NUMBER NEG. ::SETUP THE OUTPUT POINTER ::SET THE FIRST CHARACTER TO A BLANK ::CLEAR THE BCD NUMBER ::GET THE CONSTANT J &4 CZRJBCO, RPO4/5/6 FMTR HACY11 30A(1052) 20-MAR-78 10:25 PAGE 50 CZRJBC.P11 20-MAR-78 10:22 CONVERT BINARY TO DECIMAL AND TYPE ROUTINE 2467 2468 2469 2470 2471 2472 2473 010146 010150 010152 010154 010156 010160 010162 2478 010174 116663 2480 010206 052702 2482 2483 010216 3%: 160105 002402 005202 000774 060105 005702 001002 020027 suB 4%: 2497 2498 010236 010260 010264 116663 104401 016666 177777 2513 2514 2515 2516 010322 010324 000000 000000 000000 000007 010333 010334 ::FORM THIS BCD DIGIT ADD TST R1.R5 R2 ;;ADD BACK THE CONSTANT :;CHECK IF BCD DIGIT=0 TSTB (SP) ;;STILL DOING LEADING 0'S? 6%: mMove BIS 7$: 177777 010306 000002 BIS # CMP BLT 000010 BGT MOV BR 177776 TSTB BPL MOvB 9%: CLRB ::BR IF YES :.HSD" .,YES--SET THE SIGN ;s ;MAKE THe BCD DIGIT ASCII R2,(R3)+ :;PUT _THIS CHARACTER IN THE OUTPUT BUFFER _R2 s:MAKE IT A SPACE IF NOT ALREADY A DIGIT (RO) + : :JUST INCREMENTING RO.#10 2% ;;CHECK THE TABLE INDEX ::GO DO THE NEXT DIGIT 8% R5.R2 6% (SP)+ 9% -1(SP),-2(R3) (R3) (SP)+,R5 (SP)+,R3 (SP)+,R2 (SP) +,R1 (SP)+,RO MOV MOV 2(SP) ,4(SP) (SP)+, (SP) RTI :BR _IF NO 1(SP) ,=1(R3) #'0,R2 MOV MOV MoV MOV MOV TYPE 000004 ;:FALL THROUGH IF 0 7% (SP) 6% MovBe ::BR _IF DONE ; ; INCREASE THE BCD DIGIT BY 1 5% BCC TST .SBTTL TTY INPUT ROUTINE ;;RETURN TO USER & AR AR ARttt .ENABL LSB $TKCNT: .WORD $TKQIN: .WORD $TKQOUT: .WORD $TKQSRT: .BLKB $TKQEND=. .EVEN ..UAS THE LSD THE FIRST NON-ZERO? :BR IF NO ::YES==-SET THE SIGN FOR TYPING s:SET THE TERMINATOR ::POP STACK INTO R5 : ;ADJUST THE STACK 10000. .BLKW ::G0 TO EXIT :;GET THE LSD ::GO CHANGE TO ASCII :;POP STACK INTO R3 ::POP STACK INTO R2 ::POP STACK INTO R1 ;:POP STACK INTO RO ;:NOW TYPE THE NUMBER . SDBLK $DBLK: AR 010316 010320 R1.R5 5%: $DTBL: 2511 2512 4% 731% BMI ASLB 8s%: 2490 BLT égc BNE 000001 000060 000040 SEQ 0048 ittt O ittt ittt ittt ; :NUMBER OF il il ITEMS IN QUEUE :: INPUT POINTER :;OUTPUT POINTER ;:TTY KEYBOARD QUEUE 0 0 7 ;*TK INITIALIZE ROUTINE ;*THIS ROUTINE WILL INITIALIZE THE TTY KEYBOARD INPUT QUEUE s*SETUP THE INTERRUPT VECTOR AND TURN ON THE KEYBOARD INTERRUPT S#CALL: CZRJBCO, RP0O4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 TTY INPUT ROUTINE 20-MAR-78 10:22 CZRJBC.P1 ;® o ® 010316 010324 010320 010404 000200 170552 000100 010320 JSR RETURN $TKINT: CLR 010322 000060 000062 170542 K PAGE 51 4 SEQ 0049 PC,STKINT STKCNT #STKQSRT,S$TKQIN $TKQIN,$TKQOUT #$TKSRV ,a#TKVEC #200,a#TKVEC+2 a$TKB #100,3$TKS PC :;CLEAR COUNT OF ITEMS IN QUEUE :;MOVE THE STARTING ADDRESS OF THE :;QUEUE INTO THE INPUT & OUTPUT POINTERS. ;s INITIALIZE THE KEYBOARD VECTOR ;:"BR"' LEVEL 4 :;CLEAR DONE FLAG s ;ENABLE TTY KEYBOARD INTERRUPT s;RETURN TO CALLER ;*TK SERVICE ROUTINE ;*THIS ROUTINE WILL SERVICE THE TTY KEYBOARD INTERRUPT ;*BY READING THE CHARACTER FROM THE INPUT BUFFER AND PUTTING ;*IT IN THE QUEUE. s*IF THE CHARACTER IS A ''CONTROL-C'® (“C) STKINT IS CALLED AND ;*UPON RETURN EXIT IS MADE TO THE ‘'CONTROL=-C'' RESTART ADDRESS (@CNTLC) 117746 $TKSRV: MOVB 170536 177600 000003 BIC .SCNTLC 170640 000007 18: 000176 001140 000007 010316 CMP 6% 2$: #7 ,$TKCNT 3% (SP)+ 3%: CMP 31%: TSTB 170434 170426 170422 177600 5% (SP) ,#23 328 asTKS (SP)+ asTKS 318 a$TkB, - (SP) #4C177,(SP) 000021 000040 (iP).l? 2 .SBELL 000023 000175 PC,STKINT (SP) + aCNTLC #SWREG, SWR 001162 010316 000140 #°C177,(SP) (SP) ,#3% 1% 011517 010334 000100 asTKB, - (SP) (SP)+,#21 318 170400 #100,a$TKS 32%: INC $TKCNT (gP).'140 4 (SP) ,#175 4% #40, (SP) :;PICKUP THE CHARACTER ;:STRIP THE JUNK ::1S IT A CONTROL C? : ;BRANCH IF NO ::TYPE A CONTROL-C (*C) ;:INIT THE KEYBOARD ::CLEAN UP STACK :;CONTROL C RESTART ::1S IT A CONTROL G? : ;BRANCH IF NO ::1S SOFT-SWR SELECTED? ::G0 TO SWR CHANGE ;:1S THE QUEUE FULL? : :BRANCH IF NO ;:RING THE TTY BELL ::E&E?fl CHARACTER OFF OF STACK ::1S IT A CONTROL-S? ;:BRANCH IF NO ;:DISABLE TTY KEYBOARD INTERRUPTS ::CLEAN CHAR OFF STACK ::WAIT FOR A CHAR ;:LO00P UNTIL ITS THERE ;:GET THE CHARACTER ::MAKE IT 7-BIT ASCII 231S IT A CONTROL-Q? : sBRANCH IF NO : sREENABLE TTY KEYBOARD INTERRUPTS : sRETURN ::COUNT THIS CHARACTER ::1S IT UPPER CASE? :sBRANCH IF YES ::1S IT A SPECIAL CHAR? : ;BRANCH IF YES :sMAKE IT UPPER CASE 20-HAR-78 CZRJBCO, RPO4/5/6 FMTR MACYIT 30A(1052) 20-MAR-78 10:22 010572 010576 010602 010610 010612 010620 177522 010320 010320 48: 010333 MOvB INC CMP 010324 010320 :?Y BNE PR 022737 001124 105777 100121 117746 042716 021627 001300 000176 001140 170306 170302 177600 000007 123727 010670 104401 104401 013746 001134 170244 010742 010746 001135 011531 011536 000176 010752 001015 012777 000177 Le ;*SOF TWARE SWITCH REGISTER CHANGE ROUTINE. s*ROUTINE IS ENTERED FROM THE TRAP HANDLER, AND WILL s*SERVICE THE TEST FOR CHANGE IN SOF TWARE SWITCH REGISTER TRAP ;*CALL WHEN OPERATING IN TTY INTERRUPT MODE. #SWREG, SWR $CKSWR: CMP ::1S THE SOFT-SWR SELECTED 158 BNE ;:EXIT IF NOT TSTB asTKs ::1S A CHAR WAITING? 158 BPL ..IFSNOT EXIT AR AR YE ::MAKE IT 7-BIT ASCII ::1S IT A CONTROL-G? ;:IF NOT, PUT IT IN THE TTY QUEUE :;AND EXIT RN AAAARAAAARAAAOAARAARA AR AR AR d s*CONTROL IS PASSED TO THIS POINT FROM EITHER THE TTY INTERRUPT SERVICE ;*ROUTINE OR FROM THE SOF TWARE SWITCH REGISTER TRAP CALL, AS A RESULT OF A 6;C0NTRO%;gBBElNG TYPED, AND THE SOFTWARE SWITCH REGISTER BEING SELECTED. $AUTOB, #1 ;:ARE WE RUNNING IN AUTO-MODE? BEQ 2% ; ;BRANCH IF YES TST (SP)+ s ;CLEAR CONTROL-G OFF STACK PC,STKINT JSR ::FLUSH THE TTY INPUT QUEUE CLR as$TkKS ;:DISABLE TTY KEYBOARD INTERRUPTS #1,S$INTAG MOvB ::SET INTERRUPT MODE INDICATOR TYPE $GTSWR: TYPE MOV TYPOC TYPE 19%: CLR CLR 7%: TSTB BPL 170204 042716 : ;RETURN 2s 011547 010740 #$TKQSRT,S$TKQIN ::RESET THE POINTER #°C177,(SP) (SP) ,#7 000001 SEQ 0050 (SP) +,a$TKQIN ::AND PUT IT IN QUEUE $TKQIN ;;UPDATE THE POINTER $TKQIN,#STKQEND ..GO OFF THE END’ 5% :BRANCH IF NO asTkB,~(SP) 010334 000001 PAGE 52 T JaRARRARAAA 001674 005726 004737 005077 112737 10:25 Y INPUT ROUTINE CZRJBC.P11 -(SP) =(SP) asTKS 7% . SMNEW ;;ECHO THE CONTROL-G (*G) ;:TYPE CURRENT CONTENTS ;:SAVE SWREG FOR TYPEOUT ::G0 TYPE=--OCTAL ASCIICALL DIGITS) ::PROMPT FOR NEW SWR ;sCLEAR COUNTER ;s THE NEW SWR ::CHAR THERE? ::1F NOT TRY AGAIN .SCNTLG . SMSWR SWREG,=(SP) 170200 177600 MOVB BIC as$TKB, - (SP) ::PICK UP CHAR 000003 CMP BNE TYPE (SP) ,#3 9% ::1S IT A CONTROL-C? : ;BRANCH IF NOT ::YES, ECHO CONTROL-C (*C) : :CLEAN UP STACK ; REENABLE TTY KEYBOARD INTERRUPTS? ; ;BRANCH IF NO :;ALLOW TTY KEYBOARD INTERRUPTS : ;CONTROL=C RESTART 011517 000006 001135 000100 170266 ADD CMPB 000001 170136 8%: BNE MOV JMP #4C177,(SP) $INTAG, M 8s #100,3$7KS aCNTLC ;;MAKE IT 7-BIT ASCII 4 20-HAR-78 CZRJBCO, RPO4/5/6 FMTR MACY11 SOA(‘lOSZ) 20-MAR-78 10:22 CZRJBC.P11 10:25 Y INPUT ROUTINE PAGE 53 SEQ 0051 2635 2636 2637 2638 2639 011012 011016 011020 011024 011030 021627 001005 104401 062706 000737 000025 9%: 011524 000006 CMP BNE (SP) ,#25 108 20%: ADD #6,SP 108 ::1S IT A CONTROL-U? : ;BRANCH IF NOT ::YES, ECHO CONTROL-U (*U) ; : IGNORE PREVIOUS INPUT ;;LET'S TRY IT AGAIN 2642 011032 (21627 000015 108: 2646 011046 016677 2648 2649 011060 011064 104401 123727 000002 000006 001167 001135 000001 CMP BNE ST BEQ MOV ADD TYPE (SP) ,#15 168 4(SP) 118 2(SP) ,aSwR #6,SP SCRLF ::1S IT A <CR>? ; sBRANCH IF NO 2:YES, IS IT THE FIRST CHAR? ;;BRANCH IF YES s :SAVE NEW SWR :sCLEAR UP STACK ::ECHO <CR> AND <LF> 2651 2652 2653 2654 011074 011102 011104 011110 012777 000002 004737 021627 000100 170042 BNE 15 noo asTKS ..BRANCH IF NOT :sRE-ENABLE TTY KBD INTERRUPTS PC.STYPEC . 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 011114 011116 011122 011124 011130 011134 011136 011140 011142 011144 011150 011154 011156 011162 002420 021627 003015 042726 005766 001403 006316 006316 006316 005266 056616 000667 104401 000720 170064 007574 000060 11$: 148: 5% 168 TYPE BR CMPB MOV RTI JSR CMP BLT CMP BGT BIC ST BEQ 000067 000060 000002 000002 177776 178: 001166 188: .DSABL S ASL ASL ASL INC BIS B8R TYPE B8R LSB AR AA AR RAA ,SCNTLU $INTAG,M (SP) ,#60 188 (SP) ,#67 188 #60, (SP)+ 2(SP) 17% (SP) (SP) (SP) 2(sP) =2(SP), (SP) 78 ,SQUES 208 AR AN :RE=ENABLE TTY KBD INTERRUPTS? * *RETURN “CHO CHAR . <HAR < 0? ; sBRANCH IF YES ::CHAR > 7? : ;BRANCH IF YES ;:STRIP=-OFF ASCII 2:1S THIS THE FIRST CHAR : ;BRANCH IF YES :3NO, SHIFT PRESENT CHAR OVER TO MAKE ;s :: ROOM FOR NEW ONE. ..KEEP COUNT OF CHAR 2:SET IN NEW CHAR :sGET THE NEXT ONE ::TYPE 2<CR><LF> 2 sSIMULATE CONTROL-U AR AAAARAARAA AR AR A AARA AR AR AR AR AR AR ;*THIS ROUTINE WILL INPUT A SINGLE CHARACTER FROM THE TTY s«CALL: Had 3 :. 011164 011166 011174 011200 011202 011206 011210 011210 011214 011216 011222 011646 016666 005066 005046 012746 000002 005737 001775 005337 117766 000004 000004 000002 SRCCHR: MOV 648: 010316 1%: 000004 (SP) ,-(SP) ;:GET A CHARACTER FROM THE QUEUE : ;CHARACTER IS ON THE STACK ;:WITH PARITY BIT STRIPPED OFF ::Pugupgouu THE PC AND MOV CLR 4(SP) ,2(SP) 4(SP) MOV #64%,-(SP) 1IPUT NEW PS ON STACK 1:PUT NEW PC ON STACK 1:POP NEW PC AND PS TST S$TKCNT ;:WAIT ON A CHARACTER @$TKQOUT,4 (SP) ; ;DECREMENT THE COUNTER ssGET ONE CHARACTER CLR 011210 010316 177074 RDCHR RETURN HERE RTI BEQ DEC MOVB -(SP) 1% STKCNT 1:GET READY FOR A CHARACTER 2691 2692 2693 2694 2695 011230 011234 011242 011244 011252 005237 023727 001003 012737 000002 010322 010322 010333 010324 010322 AR & SEQ 0052 $TKQOUT ; ;UPDATE THE POINTER SIKQOUT#STKQEND ..DID IT GO OFF OF THE END? INC CMP BNE MOV RTI AR N PAGE 54 2 ; ;BRANCH IF NO #STKQSRT,$TKQOUT ; ;RESET THE POINTER A A At A d i i i ;sRETURN i i it ittt bbbl d ;*THIS ROUTINE WILL INPUT A STRING FROM THE TTY s*CALL: b v -b - oo W o Qs N o 3 -d - o 3 b : RDLIN RETURN HERE MOV R3,-(SP) =(SP) #STTYIN,R3 #STTYIN+7,R3 4% 122713 112737 2718 011330 000177 000134 011506 177777 020327 011510 111337 011506 011506 108: 011506 6%: (SP) +, (R3) #177,(R3) 5% (SP) 6% "\'9‘ .93 ‘-10(SP) R3 R3,#STTYIN 4% (R3),9% 9% 5%: 112737 000134 011506 122713 000025 000 122713 011506 122723 ;:BR IF NO ::1S THIS THE FIRST RUBOUT? ;:BR IF NO ;:TYPE A BACK SLASH ::SET THE RUBOUT KEY ; ;BACKUP BY ONE ;:STACK EMPTY? ::BR IF YES ::SET?:PEO TYPEOUT THE DELETED CHAR. ::G0 READ ANOTHER CHAR. :;RUBOUT KEY SET? ;:BR IF NO ;:TYPE A BACK SLASH ::1S CHARACTER A CTRL VL? ::BR _IF NO ::TYPE A CONTROL V' 011524 ::G0 START OVER ;218 CHARACTER A "“R'? 000022 s :BRANCH IF NO R CHARACTE THE ;;CLEAR ..TYPE A ltROl ch!C 001166 A ¥ 011506 011506 000015 3s: 177777 001170 ::SAVE R3 ;sCLEAR THE RUBOUT KEY ;:GET ADDRESS :;BUFFER FULL? ;:BR IF YES ::GO READ ONE CHARACTER FROM THE TTY ;:GET CHARACTER ::1S IT A RUBOUT :;CLEAR THE RUBOUT KEY 7%: 001167 011510 111337 ::INPUT A STRING FROM THE TTY s ;ADDRESS OF FIRST CHARACTER WILL BE ON THE STACK ;;TERMINATOR WILL BE A BYTE OF ALL 0'S '9‘ #15,(R3)+ 2% =1(R3) LSLF (SP)+ ::TYPE THE INPUT STRING ::GO PICKUP ANOTHER CHACTER ssTYPE A °2° ;;CLEAR THE BUFFER AND LOOP :;ECHO THE CHARACTER ;;CHECK FOR RETURN ::LOOP IF NOT RETURN :;CLEAR RETURN (THE 15) ::TYPE A LINE FEED :;CLEAN RUBOUT KEY FROM THE STACK TMMTM CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 TTY INPUT ROUTINE CZRJBC.P11 20-MAR-78 10:22 2747 2748 2749 2750 2751 2752 2753 2754 2755 2757 2758 2759 2760 2761 011524 011531 011536 011544 011547 011554 012603 011646 016666 012766 000002 000 000 000007 136 052536 136 005015 MOV MOV MOV 020075 040 036440 ;sRESTORE R3 4(SP) ,2(SP) 33 :;ADJUST THE STACK AND PUT ADDRESS OF THE #STTYIN,4L(SP) RTI 9%: (SP)+,R3 (SP) ,-(SP) MOV 0G0004 011510 SEQ 0053 .BYTE .BYTE 0 0 / ; ;RETURN ;:STORAGE FOR ASCII CHAR. : sTERMINATOR 000012 000 000012 020122 $TTYIN: SCNTLC: S$CNTLU: $CNTLG: $SMSWR: 053505 SMNEW: L.ASCIZ .SBTTL TYPE NUMERICAL ASCIZ STRING SUPPRESS LEADING ZEROS MR .BLKB .ASCIZ .ASCIZ .ASCIZ .ASCIZ FIRST ASCII CHARACTER ON IT AA AR A AR 7 ::RESERVE /*C/<15<12> ::CONTROL /7*U/<15><12> ::CONTROL /*G/<15><12> ;sCONTROL <15><12>/SWR = / TO TYPE 7 BYTES FOR TTY INPUT ‘C"’ 'V 'G"’ NEW = ARttt ittt ittt ittt i ittt ittt bttt ;*THIS ROUTINE IS USED TO TYPE AN ASCIZ NUMBER SUPPRESSING THE ;*LEADING NUMBERS. s*CALL HA MoV #NUMADR ,~(SP) ;sFIRST ADDRESS OF ASCIZ STRING PC,a#$SUPRS JSR o $SUPRS: MOV MOV 000004 1%: TSTB 000060 28: 011610 - MR ;s TERMINATEOR? ::BR IF YES ;:1S THIS AN ASCII ‘0" ? MOV RO, 3% ::SAVE FOR TYPING ;:BR IF YES RO : :BACKUP BY '1"' ::G0 TYPE .WORD O ;:ASCIZ POINTER GOES HERE MOV RTS (SP)+, (SP) PC ;;RESTORE THE STACK : sRETURN MOV AL RS (RO) 2% #'0,(RO)+ 1% TYPE .SBTTL ; :SAVE RO ;:;PICKUP THE POINTER BEQ CMPB BEQ DEC 3%: RO,=-(SP) 4(SP) ,RO (SP)+,R0O ::RESTORE RO SINGLE LENGTH BINARY TO DECIMAL ASCIZ ROUTINE S A ARt iRttt ittt ittt iii ittt ittt sl ;*THIS ROUTINE WILL CONVERT A 16-BIT UNSIGNED BINARY NUMBER TO AN s*UNSIGNED DECIMAL ASCIZ NUMBER. s*CALL B ) ¥ 011620 011626 011632 011636 011642 00000 011650 011654 000005 000002 011650 $S82D: MOV JSR RETURN NUMBER,-(SP) PC,a#$SB2D ;:PUT BINARY NUMBER ON THE STACK s s CALL ; ;ADDRESS OF THE 1ST ASCIZ CHAR.IS ON THE STACK MOV MOV 2(SP),1% #1%,-(SP) ; :SAVE BINARY NUMBER ::SET POINTER ADD MoV #5, (SP) (SP)+,2(SP) s:ONLY ALLOW FIVE CHARACTERS ; ;PICKUP POINTER JSR PC,a#$DB2D ;:CALL DOUBLE LENGTH CONVERT oo B 5 PAGE 55 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-HAR-78 10:25 TTY INPUT ROUTINE CZRJBC.P11 20-MAR-78 10:22 ' C S CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 56 CZRJBC.P11 SINGLE LENGTH BINARY TO DECIMAL ASCIZ ROUTINE 20-MAR-78 10:22 2803 2804 2805 2806 2807 2808 2809 2810 2811 011646 011650 000207 000000 000000 SEQ 0054 s sRETURN PC 1%: RTS .WORD .SBTTL DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE R AR AR AR d 0.0 AR d i i i il i it it i ittt ittt il d ;*THIS ROUTINE WILL CONVERT A 32-BIT BINARY NUMBER TO AN UNSIGNED :'25%%??55(A5Cl1) NUMBER. THE SIGN OF THE BINARY NUMBER MUST BE . % s *CALL 2812 2813 2814 2815 2816 2817 011654 011656 011662 011674 011676 011704 011710 011714 011716 011720 011722 011724 011726 e MoV JSR RETURN #PNTR,~(SP) PC,a#$DB2D 2(SP) ,R2 000002 012034 000002 #SDECVL ,RO RO,2(SP) (R2)+,R1 (R2)+,R2 000012 -011752 011764 011766 #10.,4% #STNPWR R4 #STNPWR+2 ,R5 R3 (R4) .R1 R2 (R5) ,R2 3% R3 3%: 2% (R4)+,R1 R2 (R4)+,R2 (RS)+. (RS)+ #'0,R3 000060 4%: $TNPWR: ;;POINTER TO LOW WORD OF BINARY NUMBER ::THE FIRST ADDRESS OF ASCIZ ;:1S ON THE STACK :;SAVE REGISTERS ;;PICKUP THE DATA POINTER ::GET ADDRESS OF ''SDECVL'' STRING ;;PUT ADDRESS OF ASCIZ STRING ON STACK ;;PICKUP THE BINARY NUMBER ;:SET UP TO DO 10 CONVERSIONS ; ;ADDRESS OF TEN POWER ;:CLEAR PARTIAL ;:SUBTRACT TEN POWER ::BR IF TEN POWER TO LARGE ::ADD 1 TO PARTIAL : :LOOP :;RESTORE SUBTRACTED VALUE ;:MOVE TO NEXT TEN POWER : sCHANGE PARTIAL TO ASCII ;:SAVE IT s ;DONE? ;:BR IF NO : s TERMINATOR :sRESTORE REGISTERS : :RETURN ::1.0E09 ;:1.0E08 ;:1.0E07 ::1.0E06 ::1.0€E05 012012 ::1.0E04 D_5 20-MAR-78 10:25 PAGE 57 CZRJBCO, RPO4/5/6 FHTR8 H6C551 30A(1052) -7 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE CZRJBC.P11 20-MAR 012014 012016 012020 012022 012024 012026 012030 012032 012034 001750 000000 000144 000000 000012 000000 000001 000000 000014 ::1.0e03 1750 0 144 ;:1.0E02 2 ::1.0€E01 OoO—=0—=0 2859 2860 2861 2862 2863 2864 2865 2866 2867 - 2:1.0E00 ; ;RESERVE STORAGE FOR ASCIZ STRING 12. $DECVL: .BLKB .SBTTL SAVE AND RESTORE RO-R5 ROUTINES MR A LSRR SEQ 0055 ARttt ii ittt ittt Al il bt bl bl ;*SAVE RO-RS s*CALL: ot SAVREG .'UPON RETURN FROM $SAVREG THE STACK WILL LOOK LIKE: I-rop---<+16) :% #2=-==(+18) ;% +4---R5 ;% +6==-R4 ;* +8--=R3 ;*+10---R2 ;*+12===R1 ;*+14---R0O 012050 $SAVREG: RO,=(SP) R1,-(SP) R2,=(SP) R3,-(SP) R4 ,=(SP) R5,=(SP) ; :PUSH RO ON STACK : sPUSH R1 ON STACK s :PUSH R2 ON STACK s ;PUSH R3 ON STACK 22(SP) ,-(SP) 22(SP) ,=(SP) 22(SP) ,-(SP) 22(SP) ,-(SP) s :PUSH R4 : sPUSH R5 s s SAVE PS ;s SAVE PC ;s SAVE PS s s SAVE PC ON STACK ON STACK OF MAIN FLOW (SP)+,22(SP) (SP)+,22(SP) (SP)+,22(SP) (SP)+,22(SP) (SP)+,R5 + R4 (SP) (SP)+,R3 (SP)+,R2 (SP)+,R1 (SP)+,RO ;:RESTORE PC OF CALL :;RESTORE PS OF CALL ;;RESTORE PC OF MAIN FLOW ;;RESTORE PS OF MAIN FLOW ;:POP STACK INTO RS ;;POP STACK INTO R4 ::POP STACK INTO R3 ;sPOP STACK INTO R2 ::POP STACK INTO R1 ;sPOP STACK INTO RO OF MAIN FLOW OF CALL OF CALL ;*RESTORE RO-R5 s*CALL: S $RESREG: £ PAGE 58 9 SEQ 0056 53}2 .SBTTL 2917 ;:tttt.ttttttttttt'ttttt"ttt'tti'ttttttt'ttttt"tttttitttt'tttt' 2918 2919 2920 ;*THIS ROUTINE WILL PICKUP THE LOWER BYTE OF THE '‘TRAP'' INSTRUCTION :*AND USE IT TO INDEX THROUGH THE TRAP TABLE FOR THE STARTING ADDRESS ;*OF THE DESIRED ROUTINE. THEN USING THE ADDRESS OBTAINED IT WILL ggg; TRAP DECODER :*GO TO THAT ROUTINE. 2923 2924 2925 2926 2927 2928 2929 2930 2931 012144 012146 012152 012154 012156 012160 012164 2934 2935 gggg 012166 012170 012176 010046 016600 005740 111000 006300 016000 000200 $TRAP: 000002 012200 33%% MOV MOV TST MOVB ASL MOV RTS RO,=(SP) 2(SP) RO -(RO) (RO) ,RO RO $TRPAD(RO) ,RO RO ::SAVE RO ::GET TRAP ADDRESS : ;BACKUP BY 2 ::GET RIGHT BYTE OF TRAP ::POSITION FOR INDEXING ;;INDEX TO TABLE ::GO TO ROUTINE ::THIS IS USE TO HANDLE THE ‘‘GETPRI'' MACRO 011646 016666 000002 000004 000002 $TRAP2: MOV MOV RTI (SP) ,=(SP) 4(SP),2(SP) ::MOVE THE PC DOWN ::MOVE THE PSW DOWN :;RESTORE THE PSW gggg .SBTTL 2940 2941 2942 ;*THIS TABLE CONTAINS THE STARTING ADDRESSES OF THE ROUTINES CALLED :*BY THE '‘TRAP'' INSTRUCTION. 2944 2945 2946 2947 2948 2949 Sgg? 012200 012202 012204 012206 012210 012212 012166 007424 007670 007644 007704 010072 esscess : $TRPAD: .WORD $TRAP2 STYPE ;;CALL=TYPE $TYPOC ;;CALL=TYPOC $TYPOS ;;CALL=TYPOS $TYPON ;;CALL=TYPON $TYPDS ;;CALL=TYPDS ggg% 012214 010712 $GTSWR 2954 2955 2956 2957 Sggg 012216 012220 012222 012224 012226 010622 011164 011254 012050 012106 $CKSWR $RDCHR SROLIN $SAVREG SRESREG 2943 2960 2961 3 TRAP TABLE ROUTINE TRAP+1(104401) TRAP+2(104402) TRAP+3(104403) TRAP+4(104404) TRAP+5(104405) TTY TYPEOUT ROUTINE TYPE OCTAL NUMBER (WITH LEADING ZEROS) TYPE OCTAL NUMBER (NO LEADING ZEROS) TYPE OCTAL NUMBER (AS PER LAST CALL) TYPE DECIMAL NUMBER (WITH SIGN) ;;CALL=GTSWR TRAP+6(104406) GET SOFT-SWR SETTING ; ; CALL=CKSWR ; ; CALL=RDCHR ;;CALL=RDLIN , ;CALL=SAVREG ;;CALL=RESREG TRAP+7(104407) TRAP+10(104410) TRAP+11(104411) TRAP+12(104412) TRAP+13(104413) TEST FOR CHANGE IN SOF T-SWR TTY TYPEIN CHARACTER ROUTINE TTY TYPEIN STRING ROUTINE SAVE RO-RS ROUTINE RESTORE RO-RS ROUTINE ggg% .SBTTL 2964 ;COPYRIGHT (C) 1976 2%9 ;;ttt!ttttttttttttttttttttttttttti'tttttttttttttttttt'i'ttttttt't 2965 2966 2967 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) ;DIGITAL EQUIPMENT CORP. JMAYNARD, MA 01754 JAUTHOR(S): JIM LACEY/CHUCK HESS TM~ CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR-78 10:22 TRAP DECODER ;STORAGE FOR RPDS1, RPER1, RPER2, AND RPER3 ON AN ERROR '72'’ ; RPERRS RPDS1 RPERRS+2 = RPER1 RPERRS+4 = RPER2 ‘RPERRS+6 = RPER3 012230 012236 000000 000000 000000 000000 RPERRS: .WORD 0,0,0,0 ;TABLE OF DRIVE ACTIVE INDICATORS (DRVACT=8 BYTES) ;DRVACT=0 IF DRIVE IS IDLE ;DRVACT>0 IF DRIVE IS ACTIVE WITH A COMMAND ;DRVACT<O IF DRIVE IS ACTIVE WITH AN ERROR RECOVERY OPERATION 012240 012241 012242 012243 012244 012245 012246 012247 DRVACT: .BYTE BYTE .BYTE .BYTE .BYTE BYTE .BYTE .BYTE O © O 0 O 9 0 O ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE 0 1 2 3 4 5 6 7 ;TABLE OF DRIVE STATUS INDICATORS (DRVSTA=8 BYTES) ;DRVSTA=0 IF DRIVE IS OFFLINE OR NONEXSITENT ;DRVSTA>0 IF DRIVE IS ONLINE ;DRVSTA<O IF DRIVE IS UNSAFE 012250 012251 012252 012253 012254 012255 012256 012257 DRVSTA: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 0 0 0 0 0 0 0 O ;DRIVE ;:DRIVE ;:DRIVE ;DRIVE ;DRIVE ;DRIVE ;:DRIVE ;DRIVE 0 1 2 3 4 5 6 7 ;TABLE OF DRIVE TYPES (DRVTYP=8 BYTES) ;DRVTYP=0 IF DRIVE IS NONEXISTENT (DRVSTA=0, ALSO) ;DRVTYP=1 IF DRIVE IS RPO4 ;DRVTYP=2 IF DRIVE IS RPOS5 ;DRVTYP=4 IF DRIVE IS RPO6 ;DRVTYP==1 IF NOT RP04/5/6 012260 012261 012262 012263 012264 012267 DRVTYP: .BYTE Vg .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 0 9 0 0 0 0 0 0 ;:DRIVE 0 ;DRIVE 1 ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;:DRIVE ;DRIVE 2 3 4 5 6 7 ;TABLE OF DUAL PORT INITIALIZATION INDICATORS ;DPINT=0 IF INITIALIZATION IS NOT ACTIVE ON THE DRIVE ;DPINT<O IF INITIALIZATION IS IN PROGRESS SEQ 0057 TMTM g 3 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 59 CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR CZRIBC.P11 20~MAR-78 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 02270 012271 012272 012273 012274 012275 012276 012277 000 000 000 000 000 000 000 000 G 5 nscg;1 30A(1052) 20-MAR-78 10:25 PAGE 60 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 1 DPINT: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 0 0 0 0 O O 0 0 ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;:DRIVE ;DRIVE 0 1 2 3 4 5 6 7 ;TABLE OF PENDING DUAL PORT REQUESTS ;DPRQS=0 IF THAT A DUAL PORT REQUEST IS NOT PENDING FOR THAT DRIVE ;DPRQS<0 IF THAT A DUAL PORT REQUEST IS PENDING FOR THAT DRIVE 012300 012301 012302, 012303° 012304 012305 012306 012307 000 000 000 000 000 000 000 000 DPRQS: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 0 0 0 O O 0 O O ;:DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;:DRIVE :DRIVE 0 1 2 3 4 5 6 7 ;TRANSFER WAIT FLAG (TRNSWT=1 WORD) sTHIS IS A ONE WORD QUEUE. IT WILL CONTAIN THE ADDRESS OF :"DPB'* OF THE 1/0 OPERATION. 012310 000000 TRNSWT: .WORD O ;SEARCH WAIT KEYS (SRCHWT=1 WORD) sTHIS IS A ONE WORD QUEUE THAT WILL CONTAIN A KEY FOR EACH OF ;THE DRIVES THAT ARE PERFORMING A SEARCH COMMAND FOR THE 1/0 ;REQUEST THAT IS AT THE TOP OF THEIR REQUEST QUEUE. ;EACH DRIVE IS ASSIGNED ONE BIT, STARTING AT BITOO FOR DRIVE 0. 012312 000000 SRCHWT: .WORD O ;RP04/5/6 DRIVER ACTIVE FLAG (ACTDRV=1 BYTE) ;ACTDRV=0 IF DRIVER IS INACTIVE ;ACTDRV>0 IF DRIVER IS ACTIVE 012314 000 ACTDRV: .BYTE 0 ;SOFTWARE TIMER ROUTINE ACTIVE FLAG (ACTSTR=1 BYTE) sACTSTR=0 IF SOFTWARE TIMER ROUTINE IS INACTIVE sACTSTR>0 IF SOFTWARE TIMER ROUTINE IS ACTIVE 012315 000 ACTSTR: .BYTE 0 ;UNLOAD FLAG (ULDFLG=8 BYTES) ;ULDFLG=0 IF NO UNLOAD COMMAND ;ULDFLG>0 IF UNLOAD COMMAND IN PROGRESS JULDFLG<O IF UNLOAD COMMAND IN WAIT QUEUE 012316 012317 000 000 ULDFLG: .BYTE .BYTE 0 0 ;DRIVE 0 ;DRIVE 1 SEQ 0058 3083 .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 012320 012321 012322 012323 012324 012325 0 0 0 0 0 0 ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE 2 3 4 5 6 7 ;LOOK AHEAD COUNT (LACNT=8 BYTES) sLACNT WILL INDICATE THE NUMBER OF LOOK AHEADS PERFORMED LACNT: 012326 012327 012330 012331 012332 012333 012334 012335 .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE O 0 0 0 O 0 0 0 ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;ORIVE 0 1 2 3 4 5 6 7 N.a—n_a_n_a_n_a_a_n_as OV NO VB WN=O 012336 000000 e ad b D 000000 b e 012340 d - 012346 012350 012352 012354 012356 012360 177777 177777 177777 177777 177777 177777 177777 177777 BIFRRIAK S O SEEKFG: .WORD O TIMER: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD =1 -1 -1 =1 -1 -1 -1 -1 ;DRIVE 0 ;DRIVE :DRIVE ;DRIVE ;DRIVE ;:DRIVE :DRIVE :DRIVE 1 2 3 4 5 6 7 ;DATA TRANSFER UNDERWAY INDICATOR (DTUW=1 WORD) ;DTUW<O IF NO DATA TRANSFER UNDERWAY ;DTUW=+N (WHERE N=0 TO 7) IMPLIES DATA TRANSFER UNDERWAY ON DRIVE N 3130 —_,—_ e a2 .WORD :TIMEOUT TABLE (TIMER=8 WORDS) ;THIS TABLE CONTAINS THE TIME ALLOWED FOR AN OPERATION 012342 012344 WWWWWWWW SAVEFG: ;SEEK FLAG (SEEKFG=1 WORD) ;SEEKFG=0 IF WHEN THE DISK ADDRESS ISN'T IN THE WINDOW sFOR A DATA TRANSFER START A SEARCH COMMAND ;SEEKFG<O IF DATA TRANSFER WILL DO IMPLIED SEEKS, ;DISREGARD THE WINDOW b b WWWWWWWWWWWW ;SAVE REGISTERS FLAG (SAVEFG =1 WORD) ;SAVEFG <0 IF SAVE THE RH11/RP04/5/6 REGISTERS WHEN THE ;OPERATION IS COMPLETED AS PER (DPB+14). ;SAVEFG=0 IF SAVE THE RH11/RP04/5/6 REGISTERS, AS PER ;(DPB+14), AFTER AN ERROR. 012362 177777 DTUW: .WORD -1 JATTENTION BITS TABLE (ATABIT=8 BYTES) ;THIS TABLE CONTAINS THE CORRESPONDING BIT TO EACH DRIVES SATTENTION BIT SEQ 0059 o H 5 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 61 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBC.P11 20-MAR-78 10:22 I_5 20-MAR-78 10:25 PAGE 62 CZRJBCO, RPO4/5/6 FMTR H8C5;1 30A(1052) SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBC.P11 20-MAR-78 1 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 012364 012365 012366 012367 012370 012371 012372 012373 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 1 2 & 10 20 40 100 200 ;:DRIVE 0 ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;:DRIVE ;DRIVE 1 2 3 4 5 6 7 ;RP04/5/6 TO RH11 'MASSBUS CONTROL BUS PARITY ERRORS'' (MCPE) ALLOWED BEFORE sCALLING IT FATAL (MCPEMX=1 WORD) 012374 MCPEMX: 000003 .WORD 3 ;STORAGE FOR RPADR (THE FIRST ADDRESS (776700) OF THE RH11/RP04/5/6), ;RPVEC (THE VECTOR ADDRESS (254)), AND RPVEC+2 (THE BR LEVEL (5)). 012376 012400 176700 000254 000240 RPADR: RPVEC: .WORD .WORD 176700 254,5+32. ;MAXIMUM NUMBER OF LOOK AHEADS ALLOWED IS & (MXLACT=1 WORD) 3160 3161 3162 ATABIT: 001 002 004 010 020 040 100 200 SEQ 0060 012404 000004 MXLACT: 012406 001000 MXDLTA: .WORD 8.+64. sMINIMUM DELTA DELAY IS 2 SECTORS (MNDLTA=1 WORD) 012410 000200 MNDLTA: .WORD 2+64. 012412 000005 MXWNDW: .WORD 5 .WORD 4 ;MAXIMUM DELTA DELAY IS 8 SECTORS (MXDLTA=1 WORD) ;MAXIMUM SEARCH FOR 1/0 WINDOW IS 5 SECTORS (MXWNDW=1 WORD) ;DEFINITIONS OF THE RH11/RP04/5/6 ADDRESS INDEXES 000000 000002 000004 000010 000012 000014 000016 000020 000022 000024 000026 000030 000032 000034 000036 000040 000042 000044 000046 RPCS1=0 RPWC=2 ;CONTROL AND STATUS REGISTER #1 (DRIVE REG. 00) ;WORD COUNT REGISTER (NOT A DRIVE REG) RPDA=6 RPCS2=10 RPDS1=12 RPER1=14 RPAS=16 RPLA=20 RPDB=22 RPMR=24 RPDT=26 RPSN=30 RPOF =32 RPCA=34 RPCC=36 RPER2=40 RPER3=42 RPEC1=44 RPEC2=46 ;DESIRED SECTOR/TRACK ADDRESS REGISTER (DRIVE REG. 05) ;CONTROL AND STATUS REGISTER #2 (NOT A DRIVE REG) ;:DRIVE STATUS REGISTER (DRIVE REG 01) ;ERROR REGISTER #1.(DRIVE REG. 02) sATTENTION SUMMARY PSEUDO REGISTER_(DRIVE REG. 04) ;LOOK AHEAD REGISTER (DRIVE REG. 07) :DATA BUFFER REGISTER (NOT A DRIVE REG.) sMAINTAINABILITY REGISTER (DRIVE REG. 03) ;DRIVE TYPE REGISTER (DRIVE REG. 06) ;SERIAL NUMBER REGISTER (DRIVE REG. 10) ;OFFSET REGISTER (DRIVE REG. 11) ;DESIRED CYLINDER ADDRESS REGISTER (DRIVE REG. 12) ;CURRENT CYLINDER ADDRESS REGISTER (DRIVE REG. 13) :ERROR REGISTER #2 (DRIVE REG. 14) :ERROR REGISTER #3 (DRIVE REG. 15) :ECC POSITION REGISTER (DRIVE REG. 16) :ECC PATTERN REGISTER (DRIVE REG. 17) RPBA=4 ;UNIBUS ADDRESS REGISTER (NOT A DRIVE REG) J_ 95 CZRJBCO, RPO4/5/6 FMTR HSC;;'I 30A(1052) 20-MAR-78 10:25 PAGE 63 CZRJBC.P11 20-MAR-78 1 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 3195 3196 3197 3198 3199 :RH11/RP04/5/6 DRIVER INITIALIZATION CODE :THIS ROUTINE WILL DETERMINE WHICH RP04/5/6 DRIVES ARE *AVAILABLE FOR TESTING AND SET THE DRVSTA INDICATOR *TO THE PROPER STATE FOR EACH DRIVE. 3202 3203 s CALL 3 gggg 3204 3205 3206 : : : ggg; THIS ROUTINE CALLS DRVINT JSR RE TURN PC,RPINIT *NOTE: THE 'P' OR L' CLOCK MUST BE STARTED 3209 3210 012414 012416 104412 013746 177776 3212 012430 004737 020400 3214 3215 3216 3217 3218 3219 012440 012444 012446 012450 012452 012456 012702 005021 020102 101775 012702 012721 012340 3221 012464 101774 3224 3225 3226 3227 3228 3229 012476 012502 012506 012512 012516 012522 005037 005037 013703 012723 013713 013704 012254 012256 012400 015260 012402 012376 3231 3232 012534 012536 005001 004037 012626 3s: 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 012546 012552 012554 012560 012562 012566 012572 012576 012600 012604 012610 012612 012614 012616 012622 012624 105061 005201 042701 001366 012701 005037 105761 001405 004737 105761 001375 005301 100366 012637 104413 000207 012250 48: 5$: 3211 *NOTE: 012422 012737 000240 3213 012434 012701 3220 012462 020102 177776 RPINIT: SAVREG MOV MOV JSR 012230 012362 177777 18: 28: 3230 012526 012764 3233 012542 000401 323% 012544 000402 177770 68: 020034 012270 7%: 8s: 177776 :CLEAR ALL REQUEST QUEUES CMP R1,R2 MOV CLR CMP BLOS MOV MOV #SEEKFG.R2 (R1)+ R1.R2 1% #DTUW,R2 #-1,(R1)+ 2% DRVSTA DRVSTA+2 :CHANGE THE PRIORITY TO 5 *FIRST ADDRESS TO BE CLEARED *LAST ADDRESS TO BE CLEARED :CLEAR *ARE WE DONE? *BRANCH IF NO :LAST ADDRESS SINITIALIZE :DONE? :LOOP IF NO *SET ALL DRIVES TO OFFLINE CLR CLR MOV MOV MOV MOV DRVSTA+4 DRVSTA+6 RPVEC ,R3 #ISR, (R3)+ RPVEC+2, (R3) RPADR ,Ré4 CLR JSR R1 RO,DRVINT :START WITH DRIVE 0 YINIT THE DRIVE DRVSTA(R1) R’ #c7.R1 3 ¥7.R1 EYTS DPINT(R1) 13 PC,SET.IE DPINT(R1) 78 R1 6% (SP)+,a#PS *SET DRIVE STATUS TO OFFLINE :GO TO NEXT DRIVE :MASK OUT UNUSED BITS :BR IF MORE DRIVES TO GO *START WITH DRIVE 7 :CLEAR THE PROCESSOR STATUS ‘WAITING FOR DRIVE TO SWITCH PORTS ? :BR NOT WAITING *SET INTERRUPT :DRIVE SWITCHED PORTS ? *BR IF NOT :GO TO THE NEXT DRIVE :CHECK NEXT DRIVE *RESTORE THE PROCESSOR STATUS *RESTORE RO - RS *BYE-BYE MOV 000007 177776 012270 PC, CLRQUE #<5+32.> a#PS #RPERRS ,R1 CLR CLR 000040 000010 :SAVE RO - RS *SAVE THE PRESENT PROCESSOR STATUS MOV BLOS 3222 012466 005037 012250 3223 012472 005037 012252 a#pPs,-(SP) B8R B8R CLRB INC BIC BNE MOV CLR TSTB BEQ JSR TSTB BNE DEC BPL MOV RESREG TS :SETUP THE RH11/RP04/5/6 VECTOR ;FIRST ADDRESS OF RH11/RP04 #BIT05,RPCS2(R4)" ;MASSBUS INIT 48 3 PC :'DVA' NOT SET OR PARITY ERROR *NORMAL RETURN SEQ 0061 ;DRIVE INITILIZATION ROUTINE sTHIS ROUTINE DETERMINES IF A DRIVE EXIST AND IF IT IS ;AN RPO4/5/6. IF IT IS, A '"READ-IN PRESET'' IS ISSUED AND FMT22 ;1S SET TO A '"1''. THEN MOL, DPR, DRY, AND VV ARE CHECKED TO s INSURE THEY ARE ALL ON A “"1°'. AND DEPENDING ON THEIR STATE, ;DRVSTA IS SET TO THE PROPER CONDITION. ; CALL : MOV #DRVNUM,R1 ;:DRIVE NUMBER TO R1 : JSR RO,DRVINT :CALLED BY A JSR ; : ; 012626 012630 010546 105061 105061 105061 012250 000000 000010 020034 012250 004000 000000 DRVSTA(R1) 000121 017524 010000 017524 JSR B8R CLRB BIT BEQ gggt 8s MOV MOVB CMP BEQ 012260 PC,SET. iE 6$ (SP)+,RS #1,DRVTYP(R1) #20020, RS 2$ 012260 #24020,RS 28 #2,DRVTYP(R1) 012260 BEQ CMP BEQ MOVB 28 #24021,R5 2 #4,DRVTYP(R1) CMP CMP BEQ CMP BEQ MOVB 012260 28: B8R MOV JSR RPCS1 8s MOV JSR 2GO SET 'IE'* WITHOUT A ‘‘TRE'’ *LEAVE THIS ROUTINE *SET DRIVE STATUS TO OFFLINE #BIT11,RPCS1(R4)" ;SEE IF DRIVE AVAILABLE 78 ;:BR IF DRIVE NOT AVAILABLE RO,RD.RP :READ THE DRIVE TYPE REG. CMP BEQ MOVB 024022 177777 :ERROR OCCURRED (PARITY) *NORMAL RETURN 18: 024021 000004 020022 *UNIBUS ADDRESS OF RH11/RP04/5/6 (RPCS1) RS,=(SP) :SAVE RS DRVSTA(R1) :START DRIVE STATUS AS OFFLINE DRVTYP(R1) :CLEAR THE DRIVE TYPE INDICATOR ULDFLG(R1) :CLEAR THE UNLOAD FLAG R1,RPCS2(R4) :SELECT A DRIVE #111,RPCS1(R4) :DO A DRIVE CLEAR COMMAND (& SEIZE DRIVE) #BIT12,RPCS2(R4) ;NONEXISTENT DRIVE? 1% ; NO--=BRANCH 024020 000002 020021 RE TURN1 RE TURN2 RPADR, Ré DRVINT: MOV CLRB CLRB CLRB MOV MOVB BIT BEQ 017344 000001 020020 MOV #20021,RS #20022,RS 2 #24022 RS 2$ #-1,DRVTYP(R1) 6$ #121,-(SP) RO,WRT.RP #BIT12,-(SP) RO,WRT.RP :ERROR RETURN ADDRESS *PUT DRIVE TYPE IN R5 -SET RPO4 INDICATOR :1S IT A SINGLE PORT RP04? :BRANCH IF YES :IS IT A DUAL PORT RP04? ‘BR IF YES :SET RPOS INDICATOR :SINGLE PORT RPOS ? ‘BR IF YES :DUAL PORT RPOS ? :BR IF YES :SET RPO6 INDICATOR :SINGLE PORT RP06 ? :BR IF YES :DUAL PORT RP06 ? ‘BR IF YES :SET INDICATOR TO 'OTHER' CEXIT :DO A 'READ-IN PRESET"' ;SET FMT22=1 SEQ 0062 OTM K 5 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 64 CZRJBC.P1T 20-MAR-78 10:22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) .9 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 65 CZRJBC.P11 20-MAR-78 10:22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3321 013046 013050 013054 013056 013060 013062 013064 013072 013076 013100 013102 013104 013106 013114 013116 013160 004037 000012 013160 012605 100015 116164 004037 000014 013160 006126 100004 112761 000407 005105 3323 3324 013124 013126 001003 112761 3326 3327 3328 3329 013136 013140 013142 013150 000410 006301 012761 006201 3331 3332 gggz 013156 013160 013162 005720 012605 000200 3322 013120 042705 3325 013134 005720 3330 013152 105161 017344 012364 017344 177777 000016 012250 48 167077 000001 003720 012250 012342 68: 78: 012270 8s JSR RPDS1 8% MOV BPL MOVB JSR RPER1 8s ROL BPL MOVB BR com BIC BNE MOVB ST :READ RPDS1 (SP)+,RS ;AND SAVE IT IN RS 43 *BRANCH IF ATA=0 ATABIT(R1) ,RPAS(R4) ;CLEAR ATTENTION BIT RO,RD.RP :FIND OUT WHY ATA=1 (SP)+ A #-1,DRVSTA(R1) 6% RS :1S IT UNSAFE? :BR IF NOT ;SET UNSAFE INDICATOR EXI ECK MOL, DPR, DRY, AND VWV 63 #1,DRVSTACR1) :BRANCH IF MOL, DPR, DRY, OR WV IS CLEAR :SET DRIVE STATUS TO ONLINE 0‘C<BIT12'BIT08‘81T07'81T06> RS (RO)+ :STEP OVER THE ERROR RETURN BR ASL MOV ASR 8% JEXIT R1 :CHANGE INDEX TO ADDRESS WORDS #2000.,TIMER(R1) :START 2 SEC TIMER R1 :RESTORE R1 TST MOV RTS (RO)+ (SP)+,RS RO cCoMB 8%: RO,RD.RP DPINT(R1) :SET PORT INITIALIZE INIDICATOR :RESTORE RS JEXIT §§§2 :REQUEST PRE-PROCESSOR-HANDLES SUBSYSTEM REQUEST 3337 s CALL 3339 3340 3341 3342 : : : : JSR RO,3#RPO4 PNTADR RE TURN1 RE TURN2 :CALL THE RP04/5/6 DRIVER :ADDRESS OF POINTER OF DRIVES PARAMETER BLOCK :RETURN HERE IF QUEUE IS FULL :RETURN HERE IF REQUEST IS IN QUEUE OR THERE RPO4: MOV MOV MOVB SAVREG MoV CLR MOVB MOV TSTB BGT TSTB BNE TSTB :SAVE THE CALLING STATUS :DON'T ALLOW ANY RP04/5/6 INTERRUPTS :SET "'ACTIVE DRIVER'' FLAG :SAVE RO - RS :PICKUP THE DRIVE PARAMETER BLOCK POINTER :CLEAR THE STATUS/ERRUR INDICATOR ;PICKUP THE DRIVE NUMBER :UNIBUS ADDRESS OF RPCS1 :CHECK DRIVES STATUS :BRANCH IF ONLINE :UNLOAD COMMAND IN QUEUE? :BRANCH IF YES :TRYING TO INIT THE DRIVE 3338 3 ggzz 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 013164 013170 013176 013204 013206 013210 013214 013216 013222 013226 013230 013234 013236 013242 013244 013250 013252 013256 013746 013737 112737 104412 011002 005062 111201 013704 105761 003014 105761 001036 105761 001042 004037 000434 105761 003445 177776 012402 000001 000016 012376 012250 012316 012270 012626 012250 177776 012314 BNE JSR BR TSTB BLE aNPS,-(SP) RPVEC+2,a#PS #1,ACTDRV (RO) ,R2 16(R2) (R2) ,R1 RPADR, R4 DRVSTA(R1) 1% ULDFLG(R1) 3$ DPINT(R1) 5% RO,DRVINT 4% DRVSTA(R1) 6% :1S AN ERROR CONDITION :BR IF YES :GO INIT. THE DRIVE :ERROR RETURN :1S DRIVE STATUS ONLINE? :BR IF NOT SEQ 0063 5 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 66 CZRJBC.P11 20-MAR-78 10:22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 3363 3364 3365 3366 013260 013264 013266 013272 012300 3370 3371 013300 306 013310 013316 105761 001031 010164 004037 000460 122762 00100 112761 105761 3373 013324 004737 013456 3375 013332 120000 3377 013342 012762 000434 004737 3379 013350 g% 013356 3383 18: TSTB BNE DPRQAS(R1) 5% ;OUTSTANDING PORT REQUEST FOR THE DRIVE ? :BR IF YES RO, DRVQUE 9% #103,2(R2) ;PUT THIS REQUEST IN QUEUE :QUEUE IS FUL ;1S THIS REQ. roa AN UNLOAD? MOV R1,RPCS2(R4) BNE MOovB 2% #-1,ULDFLG(R1) BNE ggR 8% gg.OPT 3%: BF?V gng‘lS'BI"S 16(R2)”SET THE "UNLOAD IN QUEUE'' ERROR FLAG 014566 4%: égk ggC17 ;GO HANDLE THE PARITY ERROR 004037 020476 5%: JSR 032714 000100 013364 004737 020034 BIT BNE RO, DRVQUE 9% #BIT06, (R4) 8s ;PUT REQUEST IN QUEUE ;QUEUE IS FULL ;1S "IE' SET ALREADY ? sBR IF IT IS 3385 013372 105761 012250 BR 8s ;RETURN, REQUEST IN QUEUE 3387 3388 013400 013406 012762 105761 140000 012260 000016 MOV #BIT15!BIT14,16(R2) 3390 013414 01278% 100002 000016 BNE MOV 8% :BR IF OFFLINE gBIT1S!BIT01.16(R2) :RE;UTQT DRIVE NONEXISTENT 3392 013424 012762 110000 000015 3380 00043 000010 020476 000103 000002 177777 012240 012316 000016 JSR BR CMPB 2s: 013444 013450 105037 012637 BR JSR 6$%: 7$: 8$: 108: 012314 177776 TSTB BLT TSTB 9s: 3398 3399 TSTB DRVACT(R1) PC,SET.IE DRVSTA(R1) 7$ DRVTYP(R1) ;SELECT THE DRIVE :BR_IF NO, :SET THE 'UNLOAD IN QUEUE'' FLAG ;IS THIS DRIVE ACTIVE? ;BR IF YES ;CALL THE OPTIMIZER ;SET INTERRUPT ;SEE IF DRIVE OFFLINE OR UNSAFE :BR IF UNSAFE ;SET OFFLINE ERROR INDICATOR ;SEE IF OFFLINE OR NONEXISTENT MOV $ ;GO TO EXI #BIT15!BIT12,16(R2) :DRIVE IS UNSAFE ST BR (RO)+ 108 TST CLRB (RO) + ACTDRV RTS RO RESREG RESREG MOV (SP) + ,3#PS :RESTORE RO = RS :SETUP FOR NORMAL RETURN SFINISH UP rnen EXIT :RESTORE RO - RS :CORRECT THE RETURN ADDRESS :CLEAR “ACTIVE DRIVER'* FLAG ;RETURN ‘PS'' TO USER LEVEL *RETURN TO CALLER ;OPTIMIZER-CALLED FOR A PARTICULAR DRIVE *CALL ; ; OPT: 177776 012364 020552 012312 013502 032764 004000 000000 013512 032764 000100 000012 013522 004037 012626 ) 8 s ~ 013746 146137 004737 v 013460 013464 013472 o EEELERER ONO VB WN - 3409 3410 MOV JSR SAVREG MOV a#PS,=(SP) JSR PC,GETREQ BICB 9%: #DRVNUM,R1 PC,OPT TST BEQ BIT BEQ BIT BNE JSR :DRIVE NUMBER TO R1 *SETUP A COMMAND :SAVE RO - RS :SAVE PROC. STATUS ATABIT(R1),SRCHWT :CLEAR ‘‘SEARCH WAIT'* KEY ;GET 'DPB" POINTER OF REQUEST R2 ;1S THERE A REQUEST IN QUEUE? 7% :NO--BRANCH TO EXIT #BIT11,RPCS1(R4)’ :1S DVA SET? 108 ;BRANCH IF NOT #BIT6,RPDS1(R4) ;IS VV SET ? 108 :BR IF IT IS RO,DRVINT sSEE. IF DRIVE STILL ONLINE ? SEQ 0064 3419 3420 3421 3422 3423 3424 013526 013530 013534 013536 013542 013550 000470 105761 003014 004737 012762 }88322 3426 013556 3428 3429 013566 013572 013602 012762 000460 012746 004037 000000 013710 032714 013610 122762 000150 013620 004737 014152 013626 005737 012362 013634 005737 012340 013642 004037 015122 3445 013652 004737 013736 3s: 3447 013660 014044 4%: 3449 013666 004737 000420 112761 3438 3442 3444 3452 013700 3454 3455 3456 3457 3458 012250 108: 020574 140000 012250 000016 110000 000016 000111 017524 BR TSTB BGT JSR MOV TSTB BPL 1%: 004000 177777 000002 2%: 012300 6% ?2VSTA(R1) PC,POPQUE : YES=-BRANCH :NO--REMOVE REQUEST FROM QUEUE #BIT15!BIT14,16(R2) ;SET OFFLINE STATUS/ERRCR INDICATOR DRVSTA(R1) IS DRIVE UNSAFE ’ R TO EXIT IF NO 8% gng15‘81T1216(R2) :SET UNSAFE STATUS/ERROR INDICATOR :BRANCH TO EXIT #111,-(SP) :LOAD COMMAND ONTO THE STACK RO,WRT.RP ;LOAD THE REGISTER sREGISTER INCREMENT ;ERROR RETURN ADDRESS #BIT11,(R4) ;DRIVE AVAILABLE ? 5% :BR IF NOT #150,2(R2) ;1S THE REQUEST FOR 1/0? 2% : YES=-BRANCH PC.CI& sCALL THE COMMAND INITIATOR 8% sBRANCH TO EXIT DTUW ;DATA TRANSFER UNDERWAY? 4% ;YES==GO START A SEARCH SEEKFG ;00 IMPLIED SEEKS? 3% : YES==-BRANCH RO,LA :NO=-DO LOOK AHEAD 8s sRETURN HERE ON A PARITY ERROR 4% ;GO START A SEARCH PC.CIN sSTART A DATA TRANSFER 8% PC.CI3 8$ #-1,DPRQS(R1) 5%: sPARITY OR 'DVA' NOT SET ;1S DRIVE ONLINE? sSTART A SEARCH ;GO TO THE EXIT ;SET PORT REQUEST INDICATOR R3 SET UP TO ADDRESS WORDS ONVERT TO WORD INDEX PC cl17 SEXIT ;PROCESS THE PARITY ERROR w1oooo..11nen<ns$ ;START 10 SEC TIMER 023420 013710 013714 012763 000402 004737 032714 012342 014566 000100 6%: 7%: 013722 013726 004737 012637 020034 177776 8%: #1706, (R4) 8% MOV RESREG RTS PC,SET.IE (SP) +,3#PS PC sSEE IF 'IE' ALREADY SET :BR IF SET ;SET "'IE'"" WITHOUT A '‘TRE'' sRESTORE PROC. STATUS ;RESTORE RO - RS ;COMMAND INITIATOR :CALL MOV MOV JSR #DRVNUM R1 #DPB,R2 PC.CI? :DRIVE NUMBER :ADDRESS OF DPB :C1?= CI1,CI3, OR Cl4 : WHERE : :CIT=DATA TRANSFER ;CI2=SEARCH REQUESTED BY DATA XFER ;C14=NOT DATA TRANSFER 3473 3474 013736 013742 004737 010237 020574 012310 cl: JSR MOV PC,POPQUE R2, TRNSWT ;REMOVE REQUEST FROM ‘DRIVES WAIT'' QUEUE sPUT REQ. IN TRANSFER WAIT QUEUE SEQ 0065 an | 5 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 67 CZRJBC.P11 20-MAR-78 10:22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 3476 013746 013750 013754 013760 013764 013770 010203 013704 010164 062703 062704 017524 RO,WRT.RP 017524 RO,WRT.RP (R3)+,-(SP) ;DPB ADDRESS TO R3 ;RPCS1 ADDRESS s SELECT DRIVE ;DESIRED WORD COUNT sRPWC ADDRESS ;LOAD WORD COUNT ;LOAD BUFFER ADDRESS ;LOAD SECTOR AND TRACK ;CALL THE LOAD(WRITE) ROUTINE s INDEX OF REGISTER TO LOAD ;ERROR RETURN ADDRESS ;LOAD CYLINDER ADDRESS 000002 017524 2(R2) ,=(SP) ;LOAD '‘COMMAND+GO'‘, ''AT178A16'', AND 'PSEL"’ 012362 2}§DTUU ;SET '"DATA TRANSFER UNDERWAY'' RPADR R4 ;RPCS1 ADDRESS R2.R3 , 4 RPADR R1,RPCS2(R4) #4,R3 #2.R4 012376 000010 000004 000002 (R3)+, (R4)+ (R3)+. (R4)+ (R3)+,=(SP) RO,WRT.RP CI3: 017524 RO,WRT.RP 10(R2) ,R3 7§UNDU,R3 000010 012412 000026 000011 017524 000001 1%: 000131 017524 012364 012376 R1,RPCS2(R4) 12(R2) ,~(SP) #22.,R3 ;PICKUP SECTOR ADDRESS ;BACKUP BY MAX. SEARCH FOR I/0 WINDOW R3,-(SP) ;COMBINE THE ADJUSTED SECTOR WITH #131,-(SP) RO,WRT.RP ;START A SEARCH 11(R2),1(SP) RO,WRT.RP :THE DESIRED TRACK ;LOAD DESIRED TRACK & SECTOR 9}981T(R1).SRCHHT 012312 Cl4: 000010 017524 000105 1%: 000012 017524 2%: ;SET ''SEARCH WAIT'' KEY RPADR,R4 R1,RPCS2(R4) ;RPCS1 ADDRESS sSELECT DRIVE #131,R3 1% 10(R2) ,=(SP) RO,WRT.RP ;1S IT A SEARCH COMMAND? sBRANCH IF NO ;LOAD DESIRED TRACK & SECTOR 2(R2) ,R3 014224 s SELECT DRIVE ;DESIRED CYLINDER ADDRESS 2% #105,R3 3% 12(R2) ,=(SP) RO,WRT.RP sPICKUP THE REQUESTED COMMAND ;GO LOAD CYLINDER ;1S IT A SEEK COMMAND :BRANCH IF NO ;LOAD DESIRED CYLINDER SEQ 0066 (T] 6 20-MAR-78 10:25 PAGE 68 CZRJBCO, RP0O4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 353 3532 3533 3534 3535 014230 014232 014234 014236 014242 RPCA Cl7 BR CMPB BNE JSR RPOF 16 #115,R3 4% RO,RD.RP 000001 017524 mMovB JSR 1(R2), (SP) RO,WRT.RP ;BYTE WHEN LOADING THE ;REGISTER (RPOF) 000107 BR CMPB BEQ Clé6 #107 ,R3 Clé #117,R3 Cl6 #103,R3 ;GO START THE COMMAND 3%: 000115 017344 Cl7 RPOF c17 4%: 000117 CMPB 000103 000001 012250 000001 012316 5%: 000143 017344 000001 017524 014374 014400 014402 014404 014406 014412 014414 014420 014426 014432 116237 116205 004037 000000 014566 012623 023705 6%: 000006 7%: 014436 8%: 9%: 014436 000002 000145 014476 000001 000141 000010 000011 017344 017524 #1,DRVACT(R1) DRVSTA(R1) #1 ,ULDFLG(R1) R3,-(SP) PC ;RETURN TO USER RO,WRT.RP 017524 014436 10%: 11%: ;BR IF NO sMERGE THE OFFSET VALUE INTO RPOF ;BUT DON'T CHANGE THE UPPER ;1S IT A "RECALIBRATE'' COMMAND? sBRANCH IF YES ;1S IT A RETURN TO CENTER? ;BRANCH IF YES ;1S IT AN "UNLOAD'' COMMAND? ;BRANCH IF NO ;SET THE DRIVE ACTIVE INDICATOR ;PUT DRIVE STATUS TO OFFLINE sSET "UNLOAD IN PROGRESS'' FLAG ;START THE ''UNLOAD'' COMMAND 5% 012240 ;IS IT AN "OFFSET'' COMMAND? ;IS IT A "'SET FORMAT'' COMMAND? #143,R3 6% RO,RD.RP ;BRANCH IF NO sREAD THE OFFSET REGISTER 1(R2) ,1(SP) RO,WRT.RP ;COMBINE 'FMT22'',"ECI'', AND 'HCI"' ;LOAD 'FMT22'', "ECI'', AND/OR "HCI''. 12% #141,R3 108 ;1S IT A "GET REGISTER'' COMMAND? 6(R2) ,R3 10(R2) ,9% 11(R2) RS RO,RD.RP (SP)+,(R3)+ 9% ,R5 12% #2,9% 8% #145,R3 12% R3,-(SP) RO,WRT.RP ;BRANCH IF NO ;POINTS TO 1ST ADDRESS OF WHERE :TO PUT _THE REGISTER(S) sINIT. THE INDEX FOR THE FIRST REG. s INDEX OF LAST REG. TO MOVE ;READ RP04/5/6 REGISTER ; INDEX OF REG. TO READ ;GET THE CONTENTS OF RH11/RP04/5/6 REG. ;LAST REG. BEEN READ? ;GET OUT IF YES ; INCREASE THE INDEX BY 2 :LOOP--MORE TO READ ;1S IT A "'SELECT DRIVE'' COMMAND? :BRANCH IF YES ;LOAD THE COMMAND SEQ 0067 (alal C 6 20-MAR-78 10:25 PAGE 69 CZRJBCO, RPO4/5/6 FHTR8 MACY11 30A(1052) SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBC.P1 20-MAR-7 10:22 D 6 CZRJBCO, RPO4/5/6 FMTR HACY11 30A(1052) 20-MAR-78 10:25 PAGE 70 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBC.P11 20-MAR- 78 10:22 014500 020574 000200 012336 000016 017716 12%: 13%: 001750 012342 000001 012240 017524 C17 JSR BIS TST BPL JSR Clé6: RTS ASL MoV ASR MovBe RTS MOV CI7: BR BIT JSR RPCS1 c17 010000 000010 1%: 104000 017716 000111 017524 000016 CI78: 177777 010000 CI8 JSR CLRB CLRB CMP 012362 000010 012240 1%: CI8: 1%: ;REMOVE REQ. 13% PC,SVRH1 PC R1 :BRANCH IF NO s YES=-GO SAVE THE REGISTERS #BIT07,16(R2) SAVEFG #1,DRVACT(R1) PC R3,-(SP) RO,WRT.RP CI5 sRETURN TO USER sSET A ONE SECOND TIMER ;SET THE DRIVE ACTIVE ;RETURN TO THE USER ;LOAD THE COMMAND z?éT12.RPCSZ(R4) ;DRIVE NON-EXISTENT ? R IF YES R2 ANYTHING IN QUEUE ? #i1,-(sP) :D0 A 'DRIVE CLEAR'' PC,EMPTYQ ;EMPTY THE QUEUE R1,DTUW 1% TRNSWT #-1,0TUW ;IF THIS DRIVE HAD AN I1/0 REQUEST ; IN PROGRESS CLEAR ALL OF THE FLAGS C178 R IF NOT #BIT15!BIT11, 16(R2) ;SET "PARITY'' ERROR INDICATOR PC,SVRH1 ;GO SAVE THE RH11/RP04/5/6 REGISTERS RO,WRT.RP ULDFLG(R1) DRVACT(R1) ;CLEAR THE UNLOAD IN QUEUE FLAG ;DRIVE IS IDLE PC ;SAVE RO - RS #BIT12,RPCS2(R4)" ;IS 'NED' SET ? 1% R1 R3 DRVACT(R1) 5% :BRIF R1,DTUW ;DID THIS DRIVE HAVE AN 1/0 IN PROGRESS? 2% 020552 FROM QUEUE ;SET THE 'DONE'' BIT ;SAVE THE RH11/RP04/5/6 REGISTERS? z}OOO..TIHER(R1) TRNSWT ,R2 012310 012362 014734 014742 014744 014752 014754 014762 014766 014774 TST BEQ MOV JSR MOV JSR RPCS1 020456 012316 012240 012362 012310 BNE PC,POPQUE YES ;DRIVE ACTIVE? :BRANCH IF NO ;GET THE '‘TRANSFER WAIT'' QUEUE :BRANCH IF YES 010000 000010 PC,GETREQ ;GET THE DPB POINTER R2 ;QUEUE ENTRY FOR DRIVE ? 4% :BR IF NOT #BIT12, RPCSZ(R&) 'NED' SET ? 100002 000016 221T15'81T01 16(R26~Ti35g 'DRIVE NON-EXISTENT' INDICATOR 102000 017716 000016 3s: 012342 4%: 177777 012240 2%: 3% R IF NOT #BIT15'BIT10,16(R2) ;SET 'NON-CLEARABLE PARITY'' ERROR INDICATOR PC,SVRH11 :SAVE RH11/RP04/5/6 REGISTERS #-1,TIMER(R3) DRVACT(R1) :STOP THE TIMER SSET 'DRIVE ACTIVE'' TO IDLE SEQ 0068 Ci E 6 CZRJBCO, RPO4/5/6 FHTR8 H6C551 30A(1052) 20-MAR-78 10:25 PAGE 71 CZRJBC.P11 20-MAR-7 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 012362 177777 012310 012316 010000 CMP BNE MOV 012362 000010 5%: 177777 012362 000010 020456 012250 012260 020034 BIT BNE 000002 177770 012310 020400 000040 CLR CLRB 6%: 7%: INC ADD BIC BNE MoV CLR JSR MOV BR JSR CLRB CLRB JSR RESREG RTS R1,DTUW 5% #-1,0TLW ;IS THIS DRIVE SETUP FOR A TRANSFER :BR IF NOT JRESET THE INDICATOR PC sRETURN TRNSWT ;CLEAR THE TRANSFER QUEUE ULDFLG(R1) :CLEAR UNLOAD FLAG #BIT12,RPCS2(R4) ;"NED' SET ? 6% ;BR IF YES R1 ;MOVE TO THE NEXT DRIVE #2,R3 #°C7.R1 1% ;BRANCH IF MORE DRIVES #-1,DTUW sNO DATA TRANSFERS UNDERWAY TRNSUT ;CLEAR THE 'TRANSFER WAIT' QUEUE PC,CLRQUE sCLEAR ALL OF THE REQUEST QUEUES lBITOS RPCS2(R4) ;DO A MASSBUS INIT. 7% ; CONTINUE PC,EMPTYQ :CLEAR THE DRIVE'S QUEUE DRVSTA(R1) :SET DRIVE TO OFFLINE DRVTYP(R1) ;CLEAR THE DRIVE TYPE INDICATOR PC,SET.IE ;SET "'IE'" WITHOUT ‘‘TRE"’ ;RESTORE RO - R5 ;LOOK AHEAD ROUTINE s CALL 015122 015126 015132 015136 015140 015142 015146 015150 015154 015162 015164 015170 015172 015174 015176 015204 015210 015212 015214 015216 015220 015224 012376 000010 017344 : ; : ; : : MOV #DRVNUM, R1 MOV #DPB,R2 JSR RO,LA RETURN1 RETURNZ RETURN3 :DRIVE NUMBER ;POINT TO DPB ;GO CHECK THE WINDOW ;ERROR RETURN sSTART A SEARCH ;START A DATA TRANSFER LA: MOV MOV ;ggc ;GET RPCS1'S ADDRESS sSELECT DRIVE sREAD CURRENT CYLINDER 4% 000012 012326 012326 012404 (SP)+,12(R2) BNE INCB CMPB BGT 3% LACNT(R1) ; INCREMENT THE LOOK AHEAD COUNT LACNT(R1) ,MXLACT ;EXCEED MAX? 2% ;BRANCH IF YES SWAB R3 023703 002600 012406 177776 1%: ;1S CURRENT CYLINDER=DESIRED s CYLINDER? SEXIT IF NO 10(R2) ,R3 ;GET DESIRED SECTOR ADDRESS AND :g ;LOOK AHEAD REGISTER MOV JSR #340,34PS RO,RD.RP ;PRIORITY LEVEL "7 sREAD LOOK AHEAD REGISTER ggg %gP)f,RS sCALCULATE THE DELTA ADD CMP #<22.%64.>,R3 MXDLTA,R3 ;MAKE THE DELTA POSITIVE ;CHECK THE DELTA TO SEE :gs 000340 017344 ;ERROR RETURN ADDRESS CMP MOovB 000010 RPADR, R4 R1,RPCS2(R4) RO,RD.RP ;MULT. BY 64=--ALIGN WITH SEQ 0069 F_ 6 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 72 CZRJBC.P1T SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 3699 3700 3701 3702 3703 3704 3705 015230 307 3708 3709 3710 3711 015256 3706 002406 023703 002003 105061 005720 005720 000402 004737 000200 2%: BLT CMP BGE CLRB 3%: TST 012410 012326 4%: 5%: 014566 TST BR JSR RTS 3% MNDLTA,R3 3% LACNT(RT) sIF IT IS WITHIN THE ;WINDOW=-==IF YES, ZERO ;THE LOOK AHEAD COUNT sAND TAKE THE 1/0 EXIT (RO) + sADJUST THE RETURN ADDRESS (RO)+ 5% PC.CI7 RO JEXIT ;PROCESS THE ERROR ;RETURN ; INTERRUPT SERVICE ROUTINE 015260 112737 104412 013704 013701 002403 004737 000001 012314 012376 012362 015324 015464 015322 ISR: 1$: 2$%: 012314 mMovB SAVREG #1,ACTDRV MOV DTUW,R1 MOV RPADR ,R4 BLT JSR BR 1% PC.TD 2% JSR RESREG CLRB RTI PC.SC ACTDRV ;SET "'ACTIVE DRIVER'' FLAG :SAVE RO - R5 ;ADDRESS OF RHSCS1 ;GET ‘DATA TRANSFER UNDERWAY'' INDICATOR ;BRANCH IF NO DATA TRANSFER UNDERWAY ;CALL TRANSFER DONE SEXIT sCALL SPECIAL CONDITIONS ;RESTORE RO - R5 ;CLEAR "ACTIVE DRIVER'' FLAG ;RETURN : TRANSFER DONE ROUTINE 015324 012240 177777 012362 177777 012342 012310 012310 TTM: CLRB :gr MOV TRNSWT ,R2 ;GET 'DPB'' ADDRESS FROM THE BIS MOV JSR #BIT07,16(R2) R1,RPCS2(R4) RO,RD.RP ;SET DONE sSELECT THE DRIVE ; TRANSFER ERROR(TRE=1)? CLR RPCS1 cl7 ROL BMI 012336 015424 015426 015432 015434 015442 015446 015452 015456 015462 017716 013456 1%: 000113 2%: 100100 020456 017716 040111 000113 000016 3%: sSET DRIVE ACTIVE INDICATOR TO IDLE MOV ASR 000016 DRVACT (R1) #-1,0TUW R1 :;1.TIHER(R1) TRNSWT (SP)+ s CANCEL TIMEOUT ; TRANSFER WAIT QUEUE--CLEAR QUEUE 33 ;BR IF YES PC.OPT sCALL OPTIMIZER TST BPL JSR SAVEFG 1% PC,SVRH11 BR SC JSR ;NO DATA TRANSFERS UNDERWAY ;SAVE THE RH11/RP04/5/6 REGISTERS? :BRANCH IF NO ;YES==SAVE THE REGISTERS sCHECK OTHER DRIVES MOV BR BIS #113, (R4) sRELEASE THE DRIVE SC :CHECK FOR OTHER DRIVES #BIT15!BIT06,16(R2) ;SET DATA ERROR FLAG MOV MOV B8R #40111, (R4) #113, (R4) SC JSR JSR PC,EMPTYQ PC . SVRH11 sSPECIAL CONDITION ROUTINE ;EMPTY THE 'DRIVE'S WAIT'' QUEUE :SAVE THE RH11/RP04/5/6 REGISTERS *ISSUE A 'DRIVE CLEAR'' SISSUE A RELEASE TO THE DRIVE :CHECK FOR OTHER DRIVES SEQ 0070 G_6 20-MAR-78 10:25 PAGE 73 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 015464 116403 001014 004037 000000 000016 SC: 020034 ;1S "IE'*=1? PC =(SP) sRETURN ;PROCESS ALL DRIVES THAT HAVE R3, (SP) SC3: SC4: :% 012270 SCS5: 016456 012300 1%: 016456 012250 2%: 012316 020552 017716 016406 ;BRANCH IF MORE TO CHECK? SC13 DPRQS(R1) 2% SC13 DRVSTA(R1) 5% ULDFLG(R1) 5% ;PROCESS THE DRIVE ;PORT REQUEST OUTSTANDING ? :BR IF NOT ;START THE OUTSTANDING COMMAND (SP)+ PC DPINT(R1) 1% 6% 3%: 012240 5%: 016406 012270 6%: 012250 012236 ;AN "'ATA''=1 SC3 DRVSTA(R1) 016316 012232 ;YES, NO DRIVES TO CHECK ;SAVE THE ADDRESS IN 'SESCAPE' ;REPORT AN ILLEGAL INTERRUPT sSET INTERRUPT ENABLE ;ATA=1? ; YES==BRANCH PC.sC12 012230 ;READ CONTROL AND STATUS REGISTER SC5 PC,GETREQ PC,SVRH11 012250 000113 017524 (SP)+ #1,R3 R1 R3, (SP) 000001 015714 015720 015724 ;READ 'RPAS'’ ;BRANCH IF ANY 'ATA' BITS SET 1% RO,ES.SAV 1 PC,SET.IE 020636 020000 RPAS(R4) ,R3 RO,RD.RP 017344 040000 2% #BIT14,RPERRS 3% sC11 RPERRS+2,RS SC6A DRVACT(R1) ) PC,SC12 ;MOVE TO THE NEXT DRIVE ;CLEAN OFF THE STACK sRETURN TO USER sINITIALIZING THE DRIVE ? :BR IF NOT ;CHECK THE DRIVE STATUS ;BRANCH IF ONLINE sUNLOAD IN PROGRESS? ;BRANCH IF NOT :GET DPB POINTER :SAVE THE RH11/RP04/5/6 REGISTERS :SAVE RPDS1, RPER1, RPER2, AND RPER3 ;ALSO DO A DRIVE INIT (DRVINT) ;DID DRIVE COME ONLINE? s NO===BRANCH ;WAS THERE AN ERROR? :BR IF ERROR :NO ERROR *VES == PICKUP RPER1 AND ;GO PROCESS THE ERROR ;DRIVE ACTIVE WITH COMMAND OR ERROR RECOVERY ? :BR IF EITHER :SAVE RPDS1, RPER1, RPER2, AND RPER3 DPINT(R1) sALSO DO A DRVINT ;TRYING TO INIT THE DRIVE ? DRVSTA(R1) ;CHECK ON DRIVE'S STATUS SC4 7% :BR IF YES, CHECK ON MORE DRIVES :BR IF UNSAFE #BIT13,RPERRS+6 ;ADDRESS PLUG CHANGED ? 8% #113,-(SP) RO,WRT.RP ;BR IF YES sRELEASE COMMAND ;WRITE THE COMMAND INTO RPCS1 ;REGISTER INDEX SEQ 0071 H 6 CZRJBCO, RPO4/5/6 FMTR HACYH 30A(1052) 20-MAR-78 10:25 PAGE 74 CZRJBC.P11 20~MAR-78 10:22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 3811 3812 015726 015730 3813 3814 3815 3816 3817 3818 3819 3820 015732 015736 015740 015742 015742 015746 015750 015752 3823 015764 016266 011605 004037 104002 000677 020636 020636 3824 3825 3826 3827 3828 3829 3830 3831 3832 015770 015774 016000 016002 016004 016006 016010 016012 076016 004037 104005 000673 006301 012761 006201 004737 010164 004037 000012 016266 011605 006126 100407 105761 003137 3834 3835 3836 3837 016026 016030 016034 016036 000470 004037 000014 016266 3821 3822 015754 015762 177777 7%: 8s%: 012342 SC6: 020552 012240 3833 016020 052762 100210 000016 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 016040 016042 016046 016052 016056 016060 012605 004737 017716 012746 000111 004037 017524 000000 016266 016062 016064 070066 016070 006105 100406 005702 001447 3849 3850 3851 3852 3853 3854 3855 3856 3857 016100 016102 016106 016110 016112 016114 016116 016120 016126 000443 004037 000012 016266 011605 006126 100011 112761 004737 3861 3862 3863 3864 016146 016150 016156 016164 001015 112761 112761 006301 3848 016072 3858 3859 3860 3865 3866 016132 016140 016142 016166 016174 052762 052762 000423 032705 012761 006201 SC6A: 100240 000016 017344 177777 017716 110000 012250 000016 2%: 177777 000001 012240 012250 072460 012342 JSR RO,ES.SAV 5 SC4 R1 #-1,TIMER(R1) R1 PC,GETREQ R1,RPCS2(R4) RO.RD.RP ERROR BR ASL MOV ASR BR JSR RPER1 SC8 sPARITY EXIT ADDRESS ;PICKUP (RPAS) BEFORE THE ERROR CALL ;SAVE THE ADDRESS IN °'SESCAPE'’ sREPORT THE UNEXPECTED ATTENTION ;GO CHECK FOR MORE ATA'S ;SAVE THE ADDRESS IN 'SESCAPE' ;STOP THE TIMER ;RESTORE THE DRIVE ADDRESS ;GET THE DPR POINTER FROM THE QUEUE s SELECT DRIVE ;READ THE RP0O4'S STATUS REG. (SP) RS (SP)+ 1% DRVACT(R1) SCN ;AND PUT IT IN RS ;WAS THERE AN ERROR? :BR _IF ERROR ;CHECK DRIVE'S STATE BR IF DRIVE ACTIVE WITH ORDER SC7 RO,RD.RP ;READ ERROR REGISTER #1 08”15'81'[07'8”63 16(R2) ;INFORM USER OF ERROR RECOVER COMPLETION PC,SVRH11 #111,-(SP) RO,WRT.RP (SP)+,R5 ;AND SAVE IT IN RS :SAVE RH11/RP04/5/6 REGISTERS ;ISSUE A DRIVE CLEAR ROL BMI TST BEQ RS 1% R2 SC7 ;WAS ''UNSAFE'' CONDITION =1? ;BRANCH IF YES sANYTHING IN QUEUE ? ;BR IF NOT BR JSR RPDS1 SC8 MOV ROL BPL MOvB JSR SC7 RO,RD.RP ;READ DRIVE STATUS REG. #1 (SP) ,RS (SP)+ 2% #-1,DRVSTA(R1) PC,SVRH1 ;SAVE RPDS1 IN RS :"ERR'*=1? ;BR 1F NO=--UNSAFE CLEARED :DRIVE IS UNSAFE : SAVE RH11/RP04/5/6 REGISTERS RPCS1 SC8 BIS BR BIT BNE MOvVB MOvB ASL MOV ASR ! ;REPORT THE ADDRESS PLUG CHANGE ;CHECK FOR MORE DRIVES sSETUP TO ADDRESS WORDS MoV JSR MOV JSR BIS 1%: 010000 RO,ES.SAV 2 SC4 BIS 1%: (SP) ,RS JSR ERROR BR JSR MOV JSR RPDS1 SC8 Mov ROL BMI T1STB BGT 000010 017344 017344 SC8 MOV SEQ 0072 #B1115!B1T07!B1T05,16(R2) s INFORM USER OF ERROR #BIT15!BIT12,16(R2) : INFORM USER OF UNSAFE ERROR SC7 #BIT12,R5 'MoL't =1 ? 3% ;BR_IF YES #-1,DRVACT(R1) ;ACTIVE ERROR RECOVER #1,DRVSTA(R1) ;ONLINE R1 #30000.,TIMER(RT) ;START 30 SECOND TIMER R1 1 6 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 75 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBC.P1T 20-MAR-78 10:22 01617¢ 016202 016210 016214 016220 016224 015540 000016 3%: SC7: 012316 012316 012364 012250 000016 2%: SC8: 020552 012626 1%: 2%: SC11: 012312 1%: 000016 012230 012232 012234 012236 2%: SC12: 177777 012342 000010 012364 004000 000016 SC13: ;DUMP THE QUEUE sUNLOAD IN PROGRESS OR QUEUE? sBR IF IT IS sRELEASE COMMAND ;WRITE THE COMMAND INTO RPCS1 sREGISTER INDEX sPARITY EXIT ADDRESS sCHECK FOR MORE DRIVES ;IS DRIVE IDLE? : YES==BRANCH :GET DPB POINTER ;PROCESS THE PARITY ERROR 2% s CONT INUE ULDFLG(R1) :"UNLOAD IN PROGRESS'"? PC,CI7B SC4 1% ULDFLG(R1) ;PROCESS THE UNCORRECTABLE PARITY ERROR sCHECK MORE DRIVES ;BRANCH IF NO ;CLEAR UNLOAD FLAG DRVACT(R1) ;SET DRIVE IDLE ATABIT(R1) ,SRCHWT ;DOING A SEARCH OPERATION FOR ;AN 1/0 COMMAND? 2% :BRANCH IF YES #81707,16(R2) sSET "DONE'' BIT PC,POPOUE 000016 1%: 016510 SC4 DRVACT(R1) 1% PC.CI7 014614 015540 012316 ; INFORM USER OF ERROR 1% ;BR _IF NOY ULDFLG(R1) : CLEAR UNLOAD FLAG ATABIT(R1) ,RPAS(R4) ;CLEAR ATTENTION BIT DRVSTA(R1) ;IS THE DRIVE UNSAFE ? PC,GETREQ 014566 017716 PC,EMPTYQ ULDFLG(R1) 2% 015540 012240 020574 000200 012336 SC4 #BIT15!BITO7!BITO4,16(R2) DRVACT(R1) ;DRIVE IS IDLE #113,-(SP) RO,WRT.RP 000113 017524 012316 012240 012364 JMP BIS CLRB JSR TSTB BGT CLRB SEQ 0073 ;REMOVE REQUEST FROM QUEUE SAVEFG ;SAVE THE REGISTERS? 2% :BRANCH IF NO PC,SVRH11 :YES=-SAVE ALL OF THE RH11/RP04/5/6 REG'S ATABIT(R1) ,RPAS(R4) ;CLEAR ATTENTION BIT PC,OPT sSTART A REQUEST PC (SP)+ sRETURN ;POP PC OFF OF THE STACK R1 :;‘I.TIHER(RU ;SETUP TO ADDRESS WORDS :STOP THE TIMER SC4 ;CHECK FOR MORE DRIVES R1,RPCS2(R4) s SELECT DRIVE RPDS1(R4) ,RPERRS ;SAVE THE FOUR REGISTERS THAT RPER1(R4) ,RPERRS+2 sWILL TELL US SOMETHING RPER2 (R4) ,RPERRS+4 RPER3(R4) ,RPERRS+6 RO,DRVINT sINIT. THE STATE OF THE DRIVE 1% ;TAKE ERROR EXIT SC8 ;PROCESS THE PARITY ERROR R1,RPCS2(R4) :SELECT THE DRIVE ATABIT(R1) ,RPAS(R4) ;CLEAR THE ATTENTION BIT #BIT11,(R4) ;? ;DRIVE AVAILABLE ? :BR IF AVAILABLE C J 6 20-MAR-78 10:25 PAGE 76 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBC.P11 20-MAR-78 10:22 3923 016512 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 016520 016522 016524 016530 016532 016536 016542 016544 016550 016552 016554 016556 016562 016570 016574 016600 3941 3942 3943 016602 016606 016612 012761 023420 012342 012270 1%: 012270 012626 140000 017716 020456 #10000.,TIMER(RT) ASR R1 BR TSTB BEQ CLRB JSR NOP TSTB 012250 020552 MOV BGT TST BEQ JSR 000016 012300 013456 015540 3s%: 2% DPINT(R1) RO,DRVINT DRVSTA(R1) 2% R2 SJEXIT sINITIALIZING THE DRIVE ? :BR IF NOT sCLEAR THE INIT INDICATOR :GO INIT THE DRIVE ;DUMMY PARITY ERROR RETURN ;DRIVE ONLINE ? 3% PC,GETREQ :BR IF YES == START ORDER :QUEUE ENTRY FOR THE DRIVE BR IF NOT GET DPB ADDRESS PC,SVRH11 :SAVE THE REGISTERS CLRB DPRQS(R1) ;CLEAR THE PORT REQUEST INDICATOR JMP SC4 ;PROCESS OTHER DRIVES BIS #BIT15'BIT14, 16(R2) ggk gg.EHPTYQ JSR 2%: 3% DPINT(R1) ;START 10 SEC TIMER AGAIN JSR PC,OPT :INFORM USER THAT DRIVE OFFLINE :EMPTY THE REQUEST QUEUE ;START THE PENDING REQUEST ;RP04/5/6 TIMER ROUTINE s CALL 012314 000001 MOV JSR #TIME,-(SP) PC.RPTMR ;ELASPED TIME IN MILLISECONDS ON THE STACK ;CALL RP04/5/6 TIME ROUTINE RPTMR: TST BNE MOVB SAVREG CLR CLR TST BLT ACTDRV 4% #1 ,ACTSTR ;CHECK "‘ACTDRV & ACTSTR'' :1F _NON ZERO EXIT JSR PC,STO 012315 012342 000002 : : 1%: 012342 SuB BGT 016710 2%: 000010 012315 38: 4%: BR INC TST CMP BGT RESREG CLRB MOV RTS R1 R3 TIMER(R3) 2% 2(SP) ,TIMER(R3) 2% 3% R1 (R3) + #8..R1 % ACTSTR (SP)+,(SP) PC sSET "ACTSTR"' :SAVE RO - RS ;START WITH DRIVE 0 ;1S THE TIMER RUNNING? ;BRANCH IF NO sCOUNT THE INTERVAL :BR IF NO SOF TWARE TIMEOUT ;CALL SOF TWARE TIMEOUT ROUTINE ;GO TO THE EXIT sMOVE TO NEXT DRIVE ;OUT OF DRIVES? ;BRANCH IF NO ;RESTORE RO - RS ;ZERO ACTIVE SOF TWARE TIMEOUT ROUTINE FLAG sADJUST THE STACK sRETURN 'SOFTUARE TIMEOUT ROUTINE :NOTE: : CALL: : : THIS ROUTINE MUST BE ENTERED AT PRIORITY 6 OR GREATER STO MOV JSR R #DRVNUM PC,STO ;DRIVE NUMBER s CALL SEQ 0074 Ci K_6 20-MAR-78 10:25 PAGE 77 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P1 20-MAR-78 10 :22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 3981 016710 010146 010346 013704 3 RETURN STO: MOV MOV MOV MOV JSR 012376 10 017344 RPDS1 STO5 TSTB STO1: 012270 012300 012310 012362 020552 000040 012240 012316 000016 1%: BMI TSTB BNE TSTB BNE MOV CMP BEQ JSR BIS JSR MOV CLRB 000010 012240 CLRB CLR CLR JSR BR TSTB 012310 012362 MOV CMP 2%: 012626 020552 100400 012240 012316 177777 BEQ 000016 012342 3%: 4%: 000010 177777 012310 020400 000016 012364 012270 012300 012362 017344 012362 ST02: JSR BIS CLRB CLRB MoV TST INC CMP BGT MOV CLR JSR BR MOVB BITB BNE TSTB BNE TSTB BNE CMP BNE JSR R1,-(SP) R3,-(SP) .~ RPADR,R4 R1,RPCS2(R4) RO,RD.RP ;SAVE R1 (SP)+ ;1S "DRY''=1? ST02 DPINT(R1) ST02 DPRQS(R1) ST02 TRNSWT ,R2 R1.DTUW 1% PC,GETREQ :SAVE R3 :GET ADDRESS OF 'RP(CS1"’ ;SELECT THE DRIVE :READ "DRIVE STATUS REG'' :BR IF YES :;SY{?Gvgg INTIALIZE THE DRIVE ? :OUTSTANDING PORT REQUEST FOR THE DRIVE ? :BR IF YES ;PICKUP TRANSFER WAIT QUEUE : TRANSFER UNDERWAY ON THIS DRIVE? BRANCH IF YES GET DPB ADDRESS #B1T15!B1T09, 16(R2) ;SET THE ERROR FLAGS :SAVE RH11/RP04/5/6 REGISTERS #B1T05,RPCS2(R4) ;"' INIT'' THE MASS BUS DRVACT(R1) ;DRIVE IS IDLE ULDFLG(R1) ;CLEAR THE UNLOAD FLAG PC,SVRH11 R1 R3 RO,DRVINT STOS ;START WITH DRIVE 0 DPINT(R1) ST06 DPRQAS(R1) sTRYING TO INTIALIZE THE DRIVE ? sINIT. THIS DRIVE sPARITY ERROR RETURN DRVACT(R1) ;DRIVE IDLE BEFORE THE INIT.? 4% : YES=-BRANCH TRNSWT ,R2 ;GET TRANSFER WAIT QUEUE g;UU.R1 ;WAS THERE 1/0 ON THIS DRIVE? : YES==BRANCH PC,GETREQ ;GET THE DPB POINTER FROM QUEUE #BIT15!BIT08,16(R2) ;INFORM USER OF INIT. DRVACT(R1) :SET DRIVE ACTIVE TO IDLE ULDFLG(R1) sNO UNLOAD #-1,TIMER(R3) :STOP THE TIMER (R3)+ sUPDATE THE INDEX R1 : INCREMENT THE DRIVE NUMBER #8..R1 ;LAST DRIVE BEEN CHECKED? 2% s NO--LOOP #-1,0TLW sNO DATA TRANSFERS UNDERWAY TRNSWT ;CLEAR TRANSFER WAIT QUEUE PC,CLRQUE :Ek??fl ALL REQUEST QUEUES ST09 RPAS (R4) RS ;READ ATTENTION REG ATABIT(R1) ,RS ;1S ATTENTION FOR THIS DRIVE UP ? : YES=-BRANCH STO3 sT07 R1,DTUW ST01 RO,RD.RP :BR_IF YES - DRIVE NOT ONLINE :OUTSTANDING PORT REQUEST FOR THE DRIVE ? :BR IF YES = NO RESPONSE TO REQUEST DATAFTRANSFER UNDERWAY FOR THIS DRIVE :BR _IF NO : YES=-CHECK "RDY"' SEQ 0075 C L 6 ’0 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 78 CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 017176 RPCS1 000000 STO5 017232 105726 012270 STO3: 012300 4041 6042 4043 4044 4045 177777 012342 1%: 014666 STOS: 012270 012250 177777 020552 ST06: 012342 140000 000016 177777 012300 020552 012342 100004 020456 017716 000016 TSTB BPL TSTB BNE TSTB BEQ MOV BR JSR BR CLRB CLRB MOV JSR TST STO7: (SP)+ STO1 DPINT(R1) 1% DPRQS(R1) 3 ?9rxnea(a3) ST09 S ;BR IF "RDY'*=0 ;INITIALIZING THE DRIVE ? :BR IF INIT PENDING ;PORT REQUEST PENDING ? :BR IF NOT ;STOP THE TIMER SEXIT ;GO HANDLE THE PARITY ERROR sCLEAR THE INITIALIZE INDICATOR :SET UNIT OFFLINE ;STOP THE TIMER PC,GETREQ ;GET THE DPB ADDRESS R2 ;REQUEST IN QUEUE ? :BR IF NOT ST09 OBIT1S!BIT14.16(R2) 1. ls’l‘NFORH THE USER DRIVE NOT AVAILABLE STO8 DPINT(R1) DRVSTA(R1) #-1,TIMER(R3) #-1,TIMER(R3) DPRQS(R1) :STOP THE TIMER ;CLEAR PORT REQUEST INDICATOR R2 ST09 ‘BR IF NONE PC,.GETREQ :GET DPB ADDRESS sQUEUE ENTRY FOR DRIVE ? #BIT15'BIT2,16(R2) STO8: PC.EMPTYQ PC,SVRH11 (SP)+ ,R3 (SP)+,R1 ST09: PC : INFORM USER OF PORT REQUEST ERROR ;CLEAR THE QUEUE FOR THE DRIVE ;SAVE THE REGISTERS ;RESTORE R3 ;RESTORE K1 sRETURN sROUTINE TO READ A RH11/RP04/5/6 REGISTER T N 2 :CALL JSR INDEX ERRADR RO,RD.RP ;GO READ A REGISTER ;REG. INDEX FROM BASE ;ERROR ADDRESS=-PROCESS ERROR STARTING ;AT THIS ADDRESS ;CONTENTS OF REG. IS ON THE STACK MCPEMX ,RD .RP2 (SP) ,=(SP) ;MAX. RETRYS ALLOWED :SAVE RO FOR RETURN ;FORM THE DESIRED ADDRESS RETURN 017344 017352 017354 017366 017370 017372 017374 017402 017406 017412 017416 017420 017424 017430 013737 012374 017512 012376 017370 017370 017372 012376 000010 010000 172752 020000 b » LU 4035 4036 4037 4038 4039 4040 D RP: RPADR ,RD.ADR RD.RP1: RD.ADR: 000002 RD.WRD:- (RO) + ,RD.ADR 8(PC)*.(PC)0 0 RD.WRD,2(SP) RPADR , = (SP) #RPCS2, (SP) #BIT12.3(SP)+ RD.RP3 aRPADR,=(SP) :21113.(59) ;USING THE BASE AND THE INDEX ;READ THE DESIRED REGISTER OF THE RPO4 ;ADDRESS IS FORMED HERE ;REG. CONTENTS PUT HERE sRETURN IT TO THE USER ;PUT THE ADDRESS ON THE STACK :FORM THE ADDRESS OF RP(CS2 ;CHECK THE °'NED' BIT :BR IF DRIVE NON-EXISTENT sREAD RPCS1 :DID MCPE SET? ;BRANCH IF YES SEQ 0076 Ci 6 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 79 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBC.P11 20-MAR-78 10:22 4091 4092 017432 017434 022620 000432 4094 017436 004037 020636 4096 017444 005737 012362 4098 017452 032716 040000 4102 017464 052716 040000 4104 4105 017472 017500 013737 005237 012376 017506 017520 017522 1%: CMP BR (SP)+,(RO)+ RD.RP4 JSR ERROR gO.ES.SAV BMI BIT BEQ 2% #BIT14, (SP) 2% (SP)+ RD.RP3 #BIT14,(SP) TST 2%: 017506 012616 000200 TST BR BIS SWAB MOV INC MOovB 38: .WORD DEC RD.RP2: .WORD BGE RD.RP3: MOV MOV RD.RP4: RTS DTUW » ;ADJUST FOR RETURN SEXIT ;SAVE THE ADDRESS IN 'SESCAPE' sREPORT "MCPE'’ ERROR ;DATA TRANSFER UNDERWAY? s NO==BRANCH ;NO==""TRE''=1? 3% RPADR, s NO==BRANCH :YES==CLEAN OFF THE STACK AND , ;TAKE THE FATAL ERROR EXIT ;CLEAR 'MCPE'' BY SENDING A ""1'' TO "'TRE"' ;POSITION BEFORE WRITING :FORM ADDRESS OF HIGH BYTE 6SP)+.3(PC)0 ;WRITE THE HIGH BYTE OF RPCS1 (SP) 3% (PC)+ 3 RD.RP1 (RO) ,RO (SP)+, (SP) RO ;ADDRESS STORAGE ;EXCEEDED MAX. RETRYS sBRANCH IF NO sFATAL ERROR EXIT sROUTINE TO WRITE A REGISTER N, s CALL Se %o %N 4119 4124 4125 017524 017532 013737 016637 012374 000002 4127 017542 012037 017614 4129 017550 122737 000150 4131 017560 004037 000000 017344 4135 4136 4137 017572 017576 017602 042716 112637 063737 177770 017613 012376 4141 017616 000000 013746 4143 017626 032736 012376 000010 010000 4145 017634 004037 017344 017700 017612 MOV JSR INDEX MCPEMX ,WRT.R2 2(SP) ,WRT.WD (SP)+, (SP) (RO)+,WRT.AD 1% #150,WRT.WD 1% RO,RD.RP sMAX RETRYS ALLOWED :SAVE THE WORD TO WRITE sADJUST THE STACK ;GET INDEX OF REGISTER TO BE WRITTEN ;BRANCH IF NOT RPCS1 ;1S THE COMMAND FOR DATA TRANSFERS? ERRADR WRT.RP: MOV MOV 1$: ADD WRT.R1: MOV WRT.WD: WRT.AD: :DATA TO BE LOADED ON THE STACK ;CALL THE ROUTINE TO LOAD(WRITE) THE REG. s INDEX OF THE REGISTER TO BE LOADED ;ADDRESS TO RETURN TO ON AN ERROR ;ERROR FREE RETURN RETURN 017612 017614 DATA,=(SP) RO,WRT.RP .WORD .WORD (SP) #°C7,(SP) (SP)+,WRT.WD+1 RPADR ,WRT.AD 6PC)*.3(PC)0 0 RPADR, - (SP) #RPCS2, (SP) #BIT12.3(SP)+ WRT.R3 RO,RD.RP ;YES--DON'T GET THE OLD A16 & A17, & PSEL ;NO---COMBINE A168A17, & PSEL WITH :THE COMMAND BEFORE SENDING IT TO :THE RH11/RPO4 ;FORM THE ADDRESS OF THE DISK REG. ;LOAD THE DESIRED REG. ;WORD TO WRITE GOES HERE sADDRESS IS FORMED HERE sPUT THE ADDRESS ON THE STACK ;FORM THE ADDRESS OF RPCS2 ;CHECK THE °'NED' BIT ;BR_IF DRIVE NON-EXISTENT sCHECK FOR PARITY ERROR ON WRITE SEQ 0077 C. (IRJBCO, RPO4/S/6 FMTR. CZRJBC.P11 4147 4148 4149 4150 4151 4152 4153 4154 017642 017644 017650 017652 017660 017664 017666 017670 017706 032726 001420 016037 004037 000000 017706 004037 4160 4161 017706 017710 011000 000401 4155 4156 4157 4158 4159 4162 4163 MACYI1 30A(1052) 20-MAR-78 20-MAR-78 10:22 017674 017676 017700 017702 017704 017712 017714 104004 005327 000003 002342 005726 000010 177776 017344 10:25 PAGE 80 NGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 017664 1$: 020636 WRT.R3 BIT BEQ MOV JSR .WORD WRT.R3 JSRTM " ERROR DEC WRT.R2: .WORD BGE ST WRT.R3: MOV BR 005720 000200 WRT.R4: TST WRT.RS: RTS #BITO3,(SP)+ WRT.R& -2(RO),1$ RO,RD.RP 0 RO,ES.SAV 4 (PC)+ 3 WRT.R1 (SP)+ (RO),RO WRT.RS (RO)+ RO g :BRANCH IF 'PAR=0 :PICKUP THE INDEX :READ THE REG. :REG. INDEX :RETURN TO THIS ADDRESS ON ERROR :SAVE THE ADDRESS IN *SESCAPE' :REPORT THE PARITY ON WRITE ERROR :DECREMENT THE ERROR COUNT :RETRY COUNTER :TRY AGAIN IF NOT FINISHED :CLEAN_OFF THE STACK :TAKE THE 'PARITY ON WRITE'* ERROR EXIT SEXIT :ADJUST FOR ERROR FREE EXIT 4165 :ROUTINE TO SAVE THE RH11/RP04/5/6 REGISTERS AS PER DPB+14 4167 4168 :CALL : 4169 : 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 017716 017720 017722 017724 017730 017734 017740 017742 017746 01775 017756 017764 017766 017770 017772 017776 020000 020002 104412 005702 001430 013704 111264 016203 001433 005037 023727 001006 032764 001002 005023 000405 004037 000000 020024 012623 4190 4191 4192 4193 419 020012 020014 020022 020024 020030 001406 062737 000751 004737 104413 4189 4195 020004 020032 023737 000207 012376 000010 000014 017776 017776 000022 000200 000010 017344 017776 000046 000002 017776 014566 MOV JSR #DPBNUM.R2 PC,SVRH1 ss: 6$: (WP BEQ ADD BR JSR__ RESREG RTS 33, #RPEC2 :2 38 BC.CI7 PC :SAVE THE DRIVES REG'S :REACHED THE END ? :RETURN :ROUTINE TO SET THE INTERRUPT WITHOUT GETTING A “TRE" 4199 4200 4201 : : : #DRVNUM.R1 PC,SET.IE ‘ ~ - :BR IF YES : INCREMENT THE REGISTER INDEX :CONTINUE_READING THE REGISTERS :PROCESS THE UNCORRECTABLE PARITY ERROR :RESTORE RO = RS 4197 MOV JSR RE TURN . :DPB_POINTER TO R2 SVRH11: SAVREG :SAVE RO = RS ST R2 :QUEUE ENTRY FOR THE DRIVE ? BEQ 48 :BR IF NONE MOV RPADR,R4 MOVB (R2) RPCS2(R4) :SELECT DRIVE MOV 14(R2),R3 :GET THE ERROR TABLE POINTER BEQ 68 :EXIT IF NO ADDRESS (LR 38 :COUNTER & POINTER 1$: (MP 35,#RPDB :REACHED THE BUFFER REGISTER ? BNE 28 :BR_IF NOT BIT #BITO7,RPCS2(R4)" ;'OR' SET ? BNE 28 :BR IF SET (LR (RD)+ :STORE RPDB AS ZEROES BR 43 : CONTINUE 28: JSR_ RO,RD.RP :READ THE SELECTED REGISTER 33: .WORD 0 :REGISTER INDEX 59 :ERROR RETURN ADDRESS MOV (SP)+,(R3)+ :STORE THE REGISTER CONTENTS 4s: SEQ 0078 :DRIVE_NUMBER TO R1 SSET “IE" 7 4203 SET.IE: MOV MOV 012376 000010 MOV MOV BIS SWAB MOVB BIT BNE 040000 000100 010000 000010 ISt 000001 18: 2%: :SAVE R4 : *PICKUP ADDRESS OF RPCS1 R1,RPCS2(R4) :SELECT DRIVE (RG) ,=(SP) :READ RPCS1 #BIT14,(SP) ;SET THE '‘TRE'' BIT OF THE WORD READ (SP) :ADJUST FOR DATO #BIT06., (R&) SET “'IE' #BIT12.RPCS2(R4) ;IS 'NED''=1? 1$ : YES==CLEAR '‘TRE"’ :CLEAN OFF MOVB (SP)+,1(R&) :CLEAR ''TRE"’ RTS PC :RETURN TO CALLER MOV .BYTE BYTE BYTE BYTE BYTE BYTE BYTE .BYTE 020115 RPADR , R4 §§P)+ :QUEUE COUNT QCNT: R4 ,=(SP) SEQ 0079 (SP)+.R4 0 0 0 0 0 0 0 0 THE STACK *RESTORE Ré4 ;DRIVE 0 :DRIVE 1 :DRIVE 2 :DRIVE :DRIVE *DRIVE :DRIVE :DRIVE 3 4 S 6 7 ;QUEUE INPUT POINTERS 020116 QINPT: .WORD -WORD QDRVO QDRV1 .WORD QDRV4 .WORD .WORD .WORD .WORD .WORD QDRV2 QDRV3 QDRVS QDRV6 QDRV7 :DRIVE 0 :DRIVE 1 :DRIVE 2 :DRIVE 3 :DRIVE 4 :DRIVE 5 :DRIVE 6 :DRIVE 7 ;QUEUE OUTPUT POINTERS QSTART: QSTOP: 020174 020176 .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD QDRVO QDRV1 QDRV2 QDRV3 QDRV4 QDRVS QDRV6 QDRV7 .WORD .WORD QDRVO QDRV1 -WORD .WORD .WORD .WORD QDRV4 QDRVS QDRV6 QDRV7 .WORD .WORD .WORD QDRV2 QDRV3 QTERM :DRIVE 0 :DRIVE :DRIVE :DRIVE :DRIVE :DRIVE :DRIVE :DRIVE 1 2 3 & 5 6 7 :DRIVE O START ADDRESS ;DRIVE O STOP ADDRESS & DRIVE 1 START ADDRESS :STOP DRIVE 1-=START :STOP DRIVE 2=-=START *STOP DRIVE 3-=~START :STOP DRIVE 4==START *STOP DRIVE 5==START :STOP DRIVE 6=-START :STOP DRIVE 7 DRIVE 2 DRIVE W QOUTPT: DRIVE 4 DRIVE 5 DRIVE 6 DRIVE 7 o B CZRJBCO, RPO4/5/6 FM TR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 81 CZRJBC.P11 20-MAR-78 10:22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) S CZRJBCO, RPO4/5/6 FMTR H8C551 30A(1052) 20-MAR-78 10:25 PAGE 82 CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 1 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 42N 4272 4273 4274 4275 4276 6277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 42N 4292 4293 4294 4295 4296 4297 ;DRIVE REQUEST QUEUES QDRVO: QDRV1: QDRV2: QDRV3: QDRV4: QDRVS: QDRV6: QDRV7: QTERM=, .BLkWw .BLkWw .BLkw .BLkWw .BLkw .BLkw .BLkWw .BLKH 10 10 10 10 10 10 10 10 JROUTINE TO CLEAR ALL OF s CALL 3 JSR CLRQUE: SAVREG MOV CLR CLR CLR CLR MOV MOV 020106 000010 020156 000010 020156 1%: MOV 2$: MOV MOV DEC BNE MOV DEC BNE RESREG RTS THE REQUEST QUEUES PC,CLRQUE #QCNT ,R2 (R2)+ (R2)+ (R2)+ (R2)+ #8..R3 #QSTART ,R1 (R1)+,(R2)+ R3 1% #8..R3 #QSTART ,R1 (R1)+,(R2)+ R3 2% PC sSAVE RO - RS ;ZERO THE QUEUE COUNTS :DRIVES O £ 1 ;DRIVES 2 £ 3 sDRIVES 4 & 5 :DRIVES 6 £ 7 sMOVE THE STARTING ;ADDRESS OF THE QUEUE INTO s THE QUEUE INPUT POINTER :MOVE THE STARTING ADDRESS ;OF THE QUEUE INTO THE ;QUEUE OUTPUT POINTER sRESTORE RO - RS ;EMPTY THE QUEUE SPECIFIED BY R1 s CALL 3 3 105061 020106 016161 006201 000207 020116 MOV JSR EMPTYQ: E%EB 020136 DRVNUM,R1 ;DRIVE NUMBER TO R1 ggNT(R1) ;CLEAR NUMBER OF ITEMS IN QUEUE PC.EMPTYQ :gx g%NPT(R1).OOUTPT(R1) RTS PC JROUTINE TO PUT A REQUEST s CALL H : 3 MOV MOV #DRVNUM,R1 #DPB,R2 JSR RO,DRVQUE RETURN1 ;SET OUTPUT QUEUE POINTER=INPUT POINTER IN QUEUE ;DRIVE NUMBER ;ADDRESS OF PARAMETER BLOCK ;GO PUT REQUEST IN QUEUE ;RETURN HERE IF QUEUE IS FULL SEQ 0080 000010 020106 020116 020544 020546 020550 020106 00000 020116 020116 020160 020156 020116 DRVQUE: CMPB BEQ INCB 1%: 2$: ASL MOV ADD CMP BNE MOV ASR TST RTS #10,QCNT(RT) ;1S QUEUE FULL? g%NT(R1) s INCREMENT QUEUE COUNT 2% ;BR IF YES=TAKE RETURN1 R2,3QINPT(R1) ;PUT THIS REQUEST IN QUEUE #2,QINPT(R1) ;UPDATE THE QUEUE POINTER QINPT(R1) ,QSTOP(R1) ;TIME TO RESET THE POINTER 1% ;BRANCH IF NO g?TART(R1).QINPT(R1) ;YES=-RESET POINTER (RO) + RO :TAKE RETURN 2 ;RETURN TO USER sROUTINE TO GET THE 'DPB’'‘' ADDRESS OF NEXT REQUEST IN QUEUE s CALL 3 3 H 020552 005002 105761 001404 017102 006201 000207 GETREQ: 020106 1%: 020136 2%: MoV JSR RETURN CLR TSTB BEQ ASL MOV ASR RTS #DRVNUM,R1 PC.GETREQ ;DRIVE NUMBER TO R1 ;GO GET THE REQUEST R2 QCNT(R1) ;IS THERE ANY REQUEST IN QUEUE? 2% R1 ;R2="DPB'' ADDRESS OF THE REQUEST ;R2=0 IF NO REQUEST IN QUEUE s NO==-BRANCH :?OUTPT(R1).R2 ;PICKUP 'DPB'' POINTER FOR THIS DRIVE PC ;RETURN TO USER ;ROUTINE TO 'POP'' THE REQUEST FROM QUEUE s CALL 3 3 : 020574 020106 020136 000002 020136 020136 020160 020156 020136 MOV JSR RETURN POPQUE: DECB ASL MOV ADD 1%: CMP BNE MOV ASR RTS #DRVNUM,R1 PC,POPQUE ;:DRIVE NUMBER TO R1 ;CALL TO REMOVE REQUEST :R2=ADDRESS OF DPB REMOVED gCNT(R1) ;DECREMENT QUEUE COUNT @QOUTPT(R1) ,R2 ;GET THE 'DPB'' POINTER 1 #2,Q0UTPT(R1) ;UPDATE THE QUEUE POINTER QOUTPT(R1) ,QSTOP(R1) ;TIME TO RESET THE POINTER? 1% :NO=-=BRANCH TO EXIT g?TART(R1),QOUTPT(R1) ;YES=-RESET THE POINTER PC sRETURN TO USER JROUTINE TO SAVE THE CONTENTS OF °'SESCAPE' WHEN THE DRIVER ;REPORTS AN ERROR DIRECTLY. s CALL : ; : JSR ERROR RETURN RO,ES.SAV N ;: THE ERROR CALL ;THE RETURN IS PAST THE ERROR CALL & lin VOO DRDDEEEEEPPP PRI PRI PRPPP > 122761 001421 105261 Y 020476 020504 020506 - 020512 020514 020520 020526 020534 020536 ;sRETURN HERE IF REQUEST IS IN QUEUE RETURNZ DO : 4315 SEQ 0081 DODDDOD D_7 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 83 CZRJBC.P1T SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 E CZRJBCO, RPO4/5/6 FHTR8 MACY11 30A(1052) 20-MAR-78 10:25 PAGE 84 CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR=-7 10:22 ES.SAV: MOV MOV CLR 020652 001160 001160 1$: 001160 A AR .WORD MOV RTS AR AR il ii ittt ittt it il 044514 UNTOFF: .ASCIZ / OFFLINE/ 044514 UNTON: .ASCIZ / ONLINE/ 020124 030120 000066 050040 052116 NOTRP: .ASCIZ @ NOT AN RP04/5/6a NOTPRS: .ASCIZ / NOT PRESENT/ 040523 NOTSAF: .ASCIZ / UNSAFE/ 000064 000 000066 RPO4B: RPO5: RPO6: SYSTAT: .ASCIZ .ASCIZ .ASCIZ .ASCIZ /RPQ4/ /RPQS/ /RPO&/ /UNIT STATUS/<CR><LF><LF> 044522 MUNIT: L_ASCIZ <CR><LF>/DRIVE: SLASH: .ASCIZ @/ d T: LASCIZ /T1/ MOFFLN: .ASCIZ / MDRNP: _ASCIZ / DRIVE NOT PRESENT/<CR><LF> MER11: L.ASCIZ / DRIVE NOT AVAILABLE/<CR><LF> MNRPO4: .ASCIZ @ DRIVE NOT AN RPO4/5/6@<CR><LF> 020122 051505 044515 000012 053111 046106 000012 042526 050040 052116 053111 020124 040514 050122 ARt ;THE ERROR CALL IS MOVED HERE ;RESTORE THE ESCAPE ADDRESS ;RETURN TELETYPE MESSAGES C: 020116 AR RO ;GET THE ERROR CALL ;SAVE THE ADDRESS IN 'SESCAPE’ ;CLEAR THE ESCAPE RETURN .SBTTL 051440 006523 021166 021174 021202 (RO)+,1$ SESCAPE ,-(SP) $ESCAPE 0 (SP)+,$ESCAPE MDRVD: LINGSP: LINSP: ENTADR: .ASCIZ .ASCIZ .ASCII .ASCIZ .ASCIZ / /C/ /0/ 7/ / / / /ENTER ADDRESS LIMITS:/<CR><LF> DRIVE OFFLINE/<CR><LF> dd Anmnnnon 012037 013746 005037 000000 012637 000200 alslalulalalelslalalalale ~a 020636 02064% SEQ 0082 021210 021216 021217 021224 021232 021237 021244 021251 021256 4442 4443 4444 4445 444k 4447 032457 000 040 020105 042506 040 052103 015 051107 042117 047440 020072 040 052101 051105 044103 047117 106 020124 044522 015 051105 047111 042523 046440 054450 024516 050117 047511 046114 047111 042523 024040 052111 033057 005015 051104 053111 040523 000 042514 000 0000 044514 ¥ SEQ 0083 MUSDR: .ASCIZ / DRIVE UNSAFE/<CR><LF> MSELD: .ASCIZ / SELECTED/ MMODE: .ASCIZ <CR><LF>/PROGRAM MODE MFORMT: .ASCIZ / FORMAT & VERIFY/ MHECK: .ASCIZ /CHECK ONLY/ MORMAT: .ASCIZ /FORMAT & VERIFY/ MSIZE: .ASCIZ <CR><LF><LF>/0OPERATE MSEC22: .ASCIZ /OPERATION WILL BE IN 22 SECTOR (16 BIT) MODE/<CR><LF> MSEC20: .ASCIZ /OPERATION WILL BE IN 20 SECTOR (18 BIT) MODE/<CR><LF> BADENT: .ASCIZ /INVALID ENTRY/<CR><LF> MADRER: .ASCII /ENDING DSK ADRS MUST BE EQUAL .ASCIZ /THAN STARTING ADRS/<CR><LF> (C OR F): IN 22 SECTOR MODE 042524 021670 124 052123 051101 020116 044524 / (Y OR N) ? / TO OR GREATER/<CR><LF> UOO 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 F PAGE 85 CODDODDDUDODUDDD CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 TELETYPE MESSAGES CZRJBC.P1T 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FHTR8 MACY11 30A(1052) 20-MAR-78 10:25 TELETYPE MESSAGES CZRJBC.P11 20-MAR-7. 10:22 4483 4484 4485 44856 4487 4488 4489 021676 040440 000012 042514 051501 047527 040503 G 7 PAGE 86 SEQ 0084 051104 052103 020101 051105 MSELP: .ASCII /SELECT DATA PATTERN/<CR><LF> 020051 051447 LASCII / 024461 051447 024462 052123 035105 047440 005015 053440 041440 000049 .ASCII / (1) ONE'S/<CR><LF> .ASCIZ / 051522 042523 005012 044524 051117 047117 042526 051412 047111 041505 042040 000040 043012 020124 042514 000 005012 020113 042514 000 052117 051122 020124 000 052123 043516 040515 042040 000040 040524 020107 020133 044522 MPATD: .ASCIZ /WORST CASE/ MSFOU: .ASCIZ <CR><XLF><LF>/STARTING FORMAT ON DRIVE MSCHK: .ASCIZ <CR><LF><LF>/STARTING CHECK ON DRIVE 051117 047503 042524 MFCMPT: .ASCIZ <CR><LF><LF>/FORMAT 044103 047503 042524 MCCMPT: .ASCIZ <CR><LF><LF>/CHECK COMPLETE, 046101 051117 042524 020072 NUMERR: .ASCIZ /TOTAL ERRORS DETECTED: ADDRIS: .ASCIZ /PRESENT ADDRESS (0) ZERO'S/<CR><LF> (2) WORST CASE: / COMPLETE, IS: / / / / / / 035123 AR .SBTTL RS A Rttt ittt iii ittt ittt ittt ittt ERROR MESSAGES AR AR ARttt iRttt ittt i it bl d d 022242 022272 044122 052116 052120 051125 051050 030461 051105 047440 042522 040520 044440 052522 041503 020104 036523 EM1: .ASCIZ /RH11 INTERRUPT OCCURRED (RPAS=0)/ CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR-7810:22 ERROR MESSAGES 4541 4542 4543 6544 4545 022300 022303 024460 125 000 042516 042524 042524 020116 051122 020104 052116 041517 042105 050130 EM2: .ASCIZ /UNEXPECTED ATTENTION OCCURRED/ 6546 4547 4548 4549 4550 022310 022316 022324 022332 022340 022341 022346 022354 022362 022370 041505 052101 047511 052503 000 115 051525 052111 047522 050683 051501 050040 020131 020122 036505 041123 051101 051105 046450 024461 EM3: .ASCIZ /MASSBUS PARITY ERROR (MCPE=1)/ 4552 4553 4554 022377 022404 022412 051501 050040 020131 041123 051101 051105 EM4: .ASCIZ /MASSBUS PARITY ERROR (PAR=1)/ 022420 115 051525 052111 047522 4557 022434 042101 051104 0000 051505 EMS: .ASCIZ /ADDRESS PLUG CHANGE BIT SET/ 4560 022456 020105 044502 020124 4562 4563 4564 4565 4566 022470 022476 022504 022512 022520 044122 042111 042522 020104 042104 030461 023516 050123 047524 042522 042040 020124 047117 040440 051523 EM6: .ASCIZ /RH11 DIDN'T RESPOND TO ADDRESSING/ 4568 4569 022532 022540 051104 043117 053111 046106 020105 047111 EM10: .ASCIZ /DRIVE OFFLINE/ 4571 022550 042520 051522 051511 EM11: _ASCIZ /PERSISTENT DRIVE UNSAFE ERROR/ 4576 022606 047125 047503 051122 EM12: .ASCIZ /UNCORRECTABLE MASSBUS PARITY ERROR/ 4582 4583 4584 4585 4586 4587 022631 022656 022664 022672 022700 022706 123 051101 042515 051104 047125 042338 043117 020105 052517 053111 040523 051122 000 053524 044524 000124 020105 042506 051117 EM13: _ASCIZ /SOFTWARE TIMEOUT/ EM14: .ASCIZ /DRIVE UNSAFE ERROR/ 4589 022715 103 047117 051124 EM15: _ASCIZ QCONTROLLER/DRIVE ERROR DURING WRITEQ 4593 4594 022744 022752 052504 053440 044522 044522 043516 042524 4555 020122 SEQ 0085 050050 FXIXXXXRIIIZIEZ 4539 4540 H_7 PAGE 87 4595 4596 4597 4598 4599 4600 4601 4602 022760 022761 022766 022774 023002 023010 023016 023024 000 103 046117 051104 051105 052504 053440 041440 7 047117 042514 053111 047522 044522 044522 042510 051124 027522 020105 020122 043516 042524 045503 EM16: .ASCIZ QCONTROLLER/DRIVE ERROR DURING WRITE CHECK® 052105 047040 044522 052117 EM17: _ASCIZ QRETRIES NOT SUCESSFUL - SECTOR NOT ACCEPTABLE® EM20: .ASCIZ QDATA ERROR DURING WRITE CHECKa 4604 4605 3032 023033 023040 023046 023054 023062 023070 023076 051440 043123 051440 020122 041501 4612 4613 4614 4615 4616 023111 023116 023124 023132 023140 104 051105 052504 053440 041838 052101 047522 044522 044522 042510 051505 026440 047524 020124 052120 000 020101 020122 043516 042524 045503 4618 023147 103 047117 051124 EM21: _ASCIZ QCONTROLLER/DRIVE ERROR VERIFYING HEADERS® 4625 023220 042510 042101 051105 EM22: .ASCIZ QHEADER COMPARE ERROR VERIFYING HEADERSA 4632 023267 103 000 046131 047111 EM23: _ASCIZ QCYLINDER FIELD IN HEADER IS NOT CORRECTA 4639 023337 127 044522 000 042524 EM24: .ASCIZ QWRITE CHECK ERROR® 4641 023352 042338 051122 051117 4643 4644 4645 4646 4647 4648 4649 023361 023366 023374 023402 023410 023416 110 051101 047522 044522 044522 042510 023424 051101 020105 020122 043516 042524 045503 053504 051105 052504 053440 041440 000 EM25: .ASCIZ QHARDWARE ERROR DURING WRITE CHECKa 4606 4607 4608 4609 4610 000 122 051505 1 PAGE 88 041525 046125 041505 047516 042503 .EVEN SEQ 0086 PP IIIIIOCRROCO000CR0QOERREETZZSIEZR CZRJBCO, RPO4/5/6 FMTR HACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR-78 10:22 ERROR MESSAGES 4652 4653 023474 023502 023506 023514 023522 4666 4667 4668 4669 4670 023534 023542 023550 023556 023564 4672 4673 4674 4660 4661 4662 4663 4664 SEQ 0087 R L L 050122 1 04 020040 030523 042520 051040 020040 031522 040520 051104 020040 042101 4654 4655 4656 4657 4658 4659 ERROR MESSAGES J 7 PAGE 89 023424 023431 023436 023444 023452 023460 023466 051501 044522 051040 020040 030522 042520 051040 000 042526 042120 051040 020040 031122 042520 DH1: .ASCIZ /RPAS/ /DRIVE RPDS1 DH2: .ASCIZ RPERT RPER2 RPER3 RPAS/ R222=X 2333 [TV 4651 10:25 020040 000123 053111 042522 020122 051040 020105 020107 042040 DH3: .ASCIZ /DRIVE REG ADR 051104 020040 042101 043440 020888 053111 042522 020122 047517 041040 020105 020107 020040 020104 042101 DHé4: .ASCIZ /DRIVE REG ADR 023573 023600 023606 122 051104 051104 020110 051505 053111 042101 000123 020105 DHé6: .ASCIZ /RH ADDRESS/ DH10: .ASCIZ /DRIVE ERR PC RPCS1T RPCS2 RPDST RPER1 RPER2 4682 23660 023666 050122 051105 020062 4685 023704 050122 041505 020061 DH10A: .ASCIZ /RPEC1 RPEC2 RPWC RPBA RPDA RPAS RPLA/ 4694 023771 122 042120 000 020102 DH10B: .ASCIZ /RPDB RPMR RPDT RPSN RPOF RPCA RPCC/ 4703 024822 051108 053111 DH17: .ASCIZ /DRIVE ERR PC CYLINDER TRACK 4706 024100 047111 042504 00010 020105 020122 DATA/ GOOD RPPY Q2 | 20-MAR-78 10:22 20-MAR-78 BAD/ SECTOR/ RPER3/ RRVVIVBRTCOORCRRRBRRB[RIINAAR CZRJBC.P11 MACY11 30A(1052) RARRRRRAA CZRJBCO, RPO4/5/6 FMTR CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P1 ERROR MESSAGES 20-MAR-78 10:22 4707 4708 4709 024106 024114 051124 020040 051117 104 020040 041501 042523 000 042526 051122 DH20: .ASCIZ /DRIVE ERR PC CYLINDER TRACK SECTOR/ DH20A: .ASCIZ /RPCS1 RPCS2 RPDS1T RPER1T RPER2 RPER3 RPEC1 RPEC2/ DH20B: .ASCIZ /RPWC RPBA RPDA RPAS RPLA RPDB RPMR RPDT/ DH20C: .ASCIZ /RPSN RPOF RPCA RPCC/ DH23: .ASCII MEMORY DISK/<CR><LF> .ASCIZ DH24: 054522 SEQ 0088 020113 052103 047520 024574 K 7 PAGE 90 LASCII EXPT'D/<CR><LF> /DRIVE ERR PC CYLNDR ACTUAL HEADER/ CZRJBCO, RPO4L/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR- 7810:22 ERROR MESSAGES 4763 4764 4765 024602 024676 024700 024706 024714 024722 024730 024732 024734 024742 024750 045523 053111 051105 020040 017614 005015 012232 001276 017372 017612 7 SEQ 0089 .ASCIZ /DRIVE DT1: DT2: .WORD .WORD DDRIVE ,RPERRS ,RPERRS+2 ,RPERRS+4 ,RPERRS +6 ,ATTN DT3: DT4: .WORD .WORD DDRIVE ,RD.ADR,RD.WRD DDRIVE ,WRT.AD,WRT.WD,RD.WRD DT6: DT10: .WORD .WORD $RPADR DRIVE ,$ERRPC ,RP.REG,RP.REG+10,RP.REG+12 ,RP.REG+14 ,RP.REG+40 ,RP.REG+42 ERR PC CYLNDR TRACK SECTOR DATA DATA/ ATTN 001116 001320 001350 001354 001314 001306 001322 001310 001324 .WORD RP.REG+44 ,RP.REG+46 ,RP .REG+2 ,RP .REG+4 ,RP .REG+6 ,RP.REG+16 ,RP .REG+20 001332 001340 001334 001342 .WORD RP.REG+22 ,RP.REG+24 ,RP .REG+26 ,RP.REG+30,RP.REG+32 ,RP .REG+34 ,RP.REG+36 001116 001252 001116 001252 001316 001346 001354 001270 DT17: .WORD DRIVE ,$ERRPC,DS.CYL,DS.TRK,SAVSEC 001270 DT20: .WORD DRIVE,$ERRPC,DS.CYL,DS.TRK,SAVSEC .WORD RP.REG,RP.REG+10,RP.REG+12,RP.REG+14 ,RP .REG+40 ,RP .REG+42 ,RP .REG+44 ,RP .RE 001320 001350 001314 001330 RP.REG+2,RP.REG+4 ,RP.REG+6,RP.REG+16,RP.REG+20 ,RP .REG+22 ,RP .REG+24 ,RP.RE 001342 025210 L PAGE 9 .WORD RP.REG+30,RP.REG+32 ,RP.REG+34 ,RP.REG+36 001116 025316 025324 025320 DT23: .WORD DRIVE ,$ERRPC ,BUFP ,RBUF ,RBUF +2 ,RBUF +4 ,RBUF +6 001116 001252 001270 001124 DT24: .WORD DRIVE,$ERRPC,DS.CYL,DS.TRK,SAVSEC,$GDDAT ,RP.REG+22 001320 001350 .WORD RP.REG,RP.REG+10,RP.REG+12,RP.REG*+14 ,RP .REG+40 ,RP .REG+42 ,RP .REG+44 ,RP .RE 001314 001330 .WORD RP.REG+2,RP.REG+4 ,RP.REG+6 ,RP.REG+16 ,RP.REG+20 ,RP.REG+22 ,RP .REG+24 ,RP .RE 001342 .WORD RP.REG+30,RP.REG+32 ,RP.REG+34 ,RP.REG+36 .WORD 1 DF1: CZRJBCO, RPO4/5/6 FMTR CZRJBC.P1 20-MAR-78 10:22 025212 SERSARAERRERE 4819 MACY11 30A(1052) 20-MAR-78 ERROR MESSAGES DF2: DF3: DF4: DF10: DF17: DF20: .BYTE .WORD .BYTE .WORD .BYTE .WORD BYTE .WORD .BYTE "WORD BYTE .WORD BYTE .WORD BYTE .WORD BYTE "WORD 1,0 1 6.0 1 3.0 1 4,0 3 8..0 DH10A 7.0 DH108B 7.0 1 5.3 & 5,34 DH20A .WORD DH20B .WORD BYTE "WORD .BYTE & .BYTE 8.,0 .BYTE .WORD BYTE _WORD DF23: DF24: 034 . 7.3 DH20A 8..,0 4851 DH208 JWORD 025310 025312 AR AR SRR R SEQ 0090 8.0 DH20C 4.0 1 .WORD 4850 mn7 PAGE 92 10:25 DH20C iR i d iRttt ittt ittt ittt Rttt ittt ittt it it il sl d) ;BUFFER STARTS HERE ML 025314 025322 : RBUF 025324 BUFP: 026532 026502 055012 045122 012 030120 0066 052101 051120 006515 027464 047506 042524 043517 005012 052012 051117 020117 040515 o n 4859 4860 AR AR AR TITLE: LOADRV: AR Rt .WORD iR 0,9,0.0 ittt ittt dd) ;BUFFER FOR HEADER CHECK :FORMAT AND CHECK BUFFER STARTS HERE JASCII <CR>SLF><LF>/2Z-CZRJB=C/<CR><LF> .ASCIZ aRP(C4/5/6 FORMATTER PROGRAMa<CR><LF><LF> LASCIT <CR><LF>/TO 'FORMAT' OR 'CHECK' DRIVE O, REPLACE THE 'XXDP'/<CR><LF> CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 ERROR MESSAGES 20-MAR-78 10:22 CZRJBC.P11 SEQ 0091 020122 023524 04144; .ASCII /PACK ON DRIVE 0 WITH ANOTHER PACK, CLEAR MEMORY LOCATION 40,/<CR><LF> .ASCIZ /AND RESTART THE PROGRAM/<CR><LF> .SBTTL BUSADR = GET BUS ADDRESS AND VECTOR ADDRESS FOR RH11 sTHIS ROUTINE IS USED TO INSURE THE BUS ADDRESS ;OF THE RH11 IS SETUP FOR THE PROPER ADDRESS. ;1T WILL ALSO READ THE ADDRESS FROM THE TTY IF ;REQUIRED. sNOTE: THIS ROUTINE DESTROYS RO-R4 s CALL ; : 025620 001302 001172 026046 TYPOC TYPE RDLIN 021035 025712 PC,BUSADR HIAD: .WORD 177700 HIVEC: .WORD 776 LIMIT: .WORD BUSADR: TST CHGADR BEQ 7% CLR CHGADR 1$: MOV #$RPADR ,RO TYPE .MRPCS1 MOV (RO) +,-(SP) 001302 025620 026070 JSR RETURN 025624 MoV MOV JSR 3% 7% 1% 2% .LINSP (SP)+,R1 HIAD,LIMIT RS5,CK.NUM s INPUT FROM TTY REQUESTED? s NO==BRANCH s YES==CLEAR THE REQUEST FLAG ‘FIRST ADDRESS :'RPCS1=" :PRESENT RPCS1 ADDRESS STYPE IT ;2 SPACES ;GET THE ENTRY ;ADDRESS OF ASCII TEXT :THIS IS THZ ADDRSS HIGH LIMIT ;CHECK THE NUMBER :CARRIAGE REYURN ONLY ENTERED ;PERIOD ONLY ENTERED : ILLEGAL INPUT sTERMINATED WITH A CARRIAGE RETURN ittt iii 025414 PAGE 93 7 3333333347141t 11111 4875 4,876 N 000004 RTS #SRPADR,RO #RPADR ,R1 (RO)+,(R1)+ (RO)+,(R1)+ PC MoV CMP ERROR BR R1,ERRVEC (SP)+,(SP)+ 6 1% :SAVE INPUT :SAVE THE ERROR VECTOR ;SETUP FOR TRAP :CHECK FOR RH11 ;RESTORE ERROR VECTOR ;FIRST ADDRESS OF NEW PARAMETERS ;FIRST ADDRESS OF WHERE TO PUT THEM ;BUS ADDRESS ;VECTOR ADDRESS ;RETURN ;RESTORE ERROR VECTOR :CLEAN OFF THE STACK ;REPORT THE ERROR ;ASK FOR BUS ADDRESS LA LA LA LS LB ADAS LD AS AL A :TERMINATED WITH A "'’ :TERMINATED WITH A ''."" A sVECTOR LIMIT ;CHECK THE NUMBER sCARRIAGE RETURN ONLY ENTERED sPERIOD ONLY ENTERED :ILLEGAL INPUT :TERMINATED WITH A CARRIAGE RETURN L sASCII TEXT ADDRESS A 8%: aSRPADR R1,ERRVEC :2 SPACES ;READ THE ENTRY LA TST MoV MOV MOV MOV MOV R2,-2(RO) ERRVEC R #8% ,ERRVEC :TYPE IT A 000004 4%: 7%: (SP)+,R1 HIVEC,LIMIT R5,CK.NUM :FIRST VECTOR :PRESENT RH11 VECTOR ADDRESS ON THE STACK A 177776 000004 026034 153160 000004 001172 012376 JSR 7% [4] 3% 48 3$ 4% MOV MOV MOV .LINSP ;" RHVEC="' A 025624 +MRHVEC #SRPVEC RO (RO)+,=(SP) A TYPOC TYPE RDLIN MOV MOV 021035 025622 026070 TYPE MOV MOV sTERMINATED WITH A """’ :SAVE NEW RPCS1 A 3%: R2,-2(RO) L 2%: MOV sTERMINATED WITH A '","' A 104401 012700 012046 104402 104401 177776 026057 001174 1% 4% A 025640 025770 010260 A 025706 025710 025712 025716 025722 025726 020061 MRPCS1: .ASCIZ QaRPCS1 041505 MRHVEC: .ASCIZ QRHVEC = .SBTTL CK.NUM = CHECK NUMBER (OCTAL) A e A = A 051503 000 053110 000040 R 026070 026072 026074 026076 010446 010346 010246 005004 CK.NUM: ADR3 ADR4 ADRS ADR6 R4 ,=(SP) R3,-(SP) R2,=(SP) R4 :GO FORM THE NUMBER ;"'CR'* ONLY ENTERED == R2 = 0 :"PERIOD'' ONLY ENTERED -- R2 = 0 s ILLEGAL CHARACTER _IN THE INPUT STRING :"'CR'' ENTERED == R2 = NUMBER ;"'COMMA'' == R2 = NUMBER ;"PERIOD'' == R2 = NUMBER :SAVE Ré4 :SAVE R3 :SAVE R2 ;RETURN POINTER A A e A sADDRESS OF ASCIZ STRING sMAX SIZE OF INPUT NUMBER A #ADR ,R1 #NUM,R2 R5,CK.NUM ADR1 ADR2 A MOV MOV JSR RETURN RETURN RETURN RETURN RETURN RETURN e N N sCALL: o ;THIS ROUTINE CHECKS AN ASCIZ STRING FOR LEGAL CHARACTERS ;AND FORMS AN OCTAL NUMBER IN R2 A A 050122 020075 122 036440 LR T T 493 4932 4933 4934 4935 SEQ 0092 A B 8 CZRJBCO, RPO4/5/6 FM TR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 94 CZRJBC.P11 BUSADR = GET BUS ADDRESS AND VECTOR ADDRESS FOR RH11 20-MAR-78 10:22 R3 R2 R5,CK.CHR 026100 006556 :START NUMBER AT ZERO :STORE RESULT :CHECK ONE CHARACTER :ILLEGAL CHARACTER : CARRIAGE RETURN L4 ’ LA ;DIGIT 0-7 ;DIGIT 8-9 ; INCREMENT RETURN PAST '‘CR'' AND ‘PERIOD'' ONLY RETURNS ;FOR THE OCTAL NUMBER IN R3 ;DON'T LET IT GET TO BIG ;CHECK ONE CHARACTER s ILLEGAL CHARACTER : CARRIAGE RETURN 006556 3%: 4%: 025624 5%: 6%: 8%: .END (R1) 8% + (R4) (R4)+ + (R4) LIMIT,R3 8% 7% (RS)+ (RS5)+ R4 ,R5 R3,R2 (SP)+ (SP)+,R3 (SP)+,R4 (RS5) ,RS RS ;DIGIT 0-7 ;DIGIT 8-9 ;DOES A ''CR'' FOLLOW THE 'PERIOD'' :BR IF NOT ; INCREMENT THE RETURN ; INCREMENT THE RETURN INDEX s INCREMENT THE RETURN INDEX s INPUT VALUE TOO LARGE ? ;BR IF IT IS :BR IF NOT ; INCREMENT THE RETURN ADDRESS s INCREMENT THE RETURN ADDRESS ;SETUP FOR PROPER RETURN ;LOAD ENTERED VALUE sCLEAN OFF THE STACK ;RESTORE R3 ;RESTORE Ré& ;GET RETURN ADDRESS sRETURN ~ o~ SEQ 0093 A A R A A A A A LB A A A A LA 20-MAR-78 10:22 c 8 20-MAR-78 10:25 PAGE 95 CK.NUM = CHECK NUMBER (OCTAL) Al LA LA LA LA LA LA LA A A LA A A A CZRJBC.P1 MACY11 30A(1052) 2 CZRJBCO, RPO4/5/6 FMTR AT1 AT2 AT3 AT4 = = = = 000002 000004 000010 000020 AT6 AT7 A16 A17 = = = = 000100 000200 000400 001000 8504 3068# 30744 805# 1987 10454 7224 7094 31404 9794 7420 7434 8594 3347« 3952+ 3398+ 3967+ 3711« 3720« 3950 3410 3515 4776 3874 3893 3901 3918 4026 1484% 1493 1540 1547 1730 1734 1867 1483+ 1496 1543 1549 1866 1869 1907 4209 3848 3868 3897 4181 3919 3392 3426 3604 3623 3635 4053 3608 4098 4102 3639 4207 45234 1687 3313 2185+ 4775 = 000040 BADENT 021566 BAI = 000010 BEGCYL 001224 BEGIN 002100 002110 BEGIN1 BEGINZ 002114 BEGTRK 001230 BITO = 000001 BITO0 = 000001 BITO1 = 000002 BITO2 = 000004 BITO3 = 000010 BIT04 = 000020 BITO5 = 000040 BITO6 = 000100 BITO7 = 000200 BITO8 = 000400 BITO9 = 001000 BIT1 = 000002 BIT10 = 002000 BIT11 = 004000 BIT12 = 010000 1906 N N 3639 W 2196 3648 3858 W 4013 3998 3833 3848 WV 3322 2212 - ——— Y 3637 PP ATS 8164 886# MMMMMMArrme~ = 000200 = 000123 ACL = 000040 ACTDRV 012314 ACTSTR 012315 ACU = 100000 ADDRIS 022215 ADRTBL 001500 ACE = 001000 ATA = 100000 ATABIT 012364 ATTN 001276 ATO = 000001 IAIAIAtAsatAIAIATI I TIM PR Br-Mmmmm ABS ACK SEQ 0094 N~ D_8 CZRJBCO, RPO4/5/6 FMTR HACY11 30A(1052) 20-MAR-78 10:25 PAGE 97 CZRJBC.P11 CROSS REFERENCE TABLE == USER SYMBOLS 20-MAR-78 10:22 BIT13 = 020000 BIT14 = 040000 BIT15 = 100000 BIT2 BIT3 BIT4 BITS BIT6 BIT7 BIT8 = 000004 = 000010 = 000020 = 000040 = 000100 = 000200 = 000400 4089 3937 3426 4060 1677 3637 3746 177570 001274 000040 000002 025210 025230 025244 025214 025250 025270 025274 025220 025224 023424 023606 023704 023771 J“O‘\Jg 000001 N N T L Y DF20 DF23 DF24 DF3 DF4 DH1 DH10 DH10A DH10B 000200 000002 000010 001246 100000 000100 # 46944 3510 3706 3514 3736 3525 3885 4193 3532 3538 3542 3556 4424 4505 4429 4510 4434 4514 3501 3604# 4803 48624 1269+ 4915 4917+ 35944 3545 3485 3576 3603 3547 3489 3587 35994 3493 3602 3622¢ 3759 4045 20894 2126 2140 4989 5004 4023 1437« 42774 1524+ 1986+ 4864 4867 1999+ 4401 4481 4883 4409 4485 4894 4413 4489 4416 4492 4420 4500 2360 4470 4398 4473 4873 2549 2632 1761 1764+ 1291 4776 4778 4779 48184 1182 1189 1196 1203 1210 1231 1238 48264 1187 1194 1201 1208 1229 1236 L6744 48204 48344 1180 ~NO 1059 1600 K 1058 1572 1054 1067 1936 2350 4462 o — ek =B PO ND N =2 P = o= WSRO = VIO N O WwWhowm CRLF = CSF = Csu = CYLCK DCK = DCL = DCU = DDISP = DDRIVE DE1__ = DFF20 = DF1 DF10 DF17 DF2 1057 1070 32 178 014614 ci8 014666 CKADRS 003606 CKSWR = 104407 CKTRK 004260 CK.CHR 006556 CK.DEC 006530 CK.DIG 006630 CK.NUM 026070 CK.OCT 006502 CLOCK 006234 CLR = 000040 CLRQUE 020400 CNTLC 001300 CR = 000015 6 AR 014566 1053 1066 —_—— c17z 025626 021025 001302 013736 014044 014152 014530 014552 1052 1065 cow BUSADR C CHGADR cIl ci3 Cl4 CIS clé 1051 1064 - BIT9 = 001000 BPTVEC= 000014 BUFP 025324 SEQ 0095 (T E 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 98 CROSS REFERENCE TABLE == USER SYMBOLS CZRJBC.P1T 20-MAR-78 10:22 F 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 99 CZRJBC.P11 20-MAR-78 10:22 CROSS REFERENCE TABLE == USER SYMBOLS DH17 DH2 DH20 DH20A DH20B DH20C DH23 DH24 DH3 DH4 DH6 DIGB = DISPLA DISPRE DLT = DL64 = 024056 023431 024125 024174 024272 024367 024424 024522 023506 023534 023573 000004 001142 000174 100000 000020 DMD = 000001 DONE 005340 DPINT 012270 DPR DPRAS gzéVE = 000400 1215 1124 1222 47174 4728% 4739 1243 1250 1131 1138 1152 6964 9274 4984 6704 6984 7324 1803 3028# 7024 47034 1145 1257 4836 4838 4840 47440 47554 L6624 LO66H L6724 1291+ 1299 SEQ 0096 46544 47104 4846 4848 4850 1299+ 2195+ 1804# 3241 3244 3330« 3357 3777 3802 3927 = 3929+« 3990 4028 4039 4047+ 012300 882563 30414 gg;: 3363 1450 3449+« 1455+« 3780 1476 3941« 1478 3992 1531 4030 1861 4041 4782 4056+ 479N 4793 4803 4806 DRVACT 012240 3550« 4007 3597+« 4014+ 3627 3642« 3725« 3798 3831 3862« 3869+ 3882 000111 012626 020476 012250 3371 4001+ 3616+ DRVCLR= DRVINT DRVQUE DRVSTA 2985¢ 3892« 881# 3232 3366 1350 32664 3379 1465 3359 43174 29994 3418 3909 3930 4005 3222+ 3223« 3224+ 3225+ 3235+« 3267+ 3276* 3319« 3324+ 3353 1367 1370 1470 1480 5015# 3268+ 3283+ 3288+ 3293« 3298+« 3388 3661+ 926 2186 2187+« 1654 1290 4791 479 4793 4793 4806 4806 3218 4021« 3438 4032 3494« 4096 3617 3620 3630 3643 3645« 3654+ 3714 3726« 3995 1181 1188 1195 1202 1209 1230 1237 L7824 DRVTYP 012260 DRY = 000200 DSWR = 177570 DS.CYL 001270 DS.TRK 001272 DTE = 010000 DTSY = 000200 DTUW 012362 DTO0 DTO1 DT02 D103 DT04 DT05 D106 D107 D108 DT1 DT10 DT17 D12 D120 D123 DT24 = = = = = = = = = 000001 000002 000004 000010 000020 000040 000100 000200 000400 024676 024734 025010 024700 025022 025104 025122 2323 * 1353 7014 5354 9764 9774 7254 7384 31344 4010 7564 7574 7584 7594 7604 7614 7624 7634 7644 1118 1167 1216 1125 1223 1244 1251 3385 L7754 1174 47914 1146 1258 48034 48064 3420 L7764 47934 3424 3551« 3660+ 3783 3791 3804 3856« 3863+« 3875 3932 CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 DT3 MACY11 30A(1052) 20-MAR-78 10:22 024722 FEN = 000200 FER = 000020 FMTDPB 001356 e D e e e d d d SEEING =B NOROVNWVIOD—=WSHN e D e D d 022434 EM6 022470 ENDCYL 001222 ENDTRK 001226 ENTADR 021040 ERINDX 005364 ERR = 040000 ERRVEC= 000004 ES.SAV 020636 = 000001 EXT1 EXT10 = 000010 EXT2 = 000002 EXT20 = 000020 EXT4 = 000004 EXT40 = 000040 D D EMS5 d 023033 022303 023111 023147 023220 023267 023337 023361 022341 022377 — e EM7 EM2 EM20 EM21 EM22 EM23 EM24 EM25 EM3 EM4 e d 1116 — e e =B PONI NP INON) =2 NININ) = = VIS WWWVMES S W= O D16 024732 DVA = 004000 ECH = 000100 ECI = 004000 EFLG 001304 EMPTYQ 020456 EMTVEC= 000030 EM 022242 EM10 022532 EM11 022550 10:25 Fé4 = = = = 010000 000002 000004 000010 = 000020 = 000040 GETREG= 000141 F5 SEQ 0097 CROSS REFERENCE TABLE == USER SYMBOLS 1271+ 3659 1280+ 4534H 45684 45714 45764 45824 45854 45895 1597+ 1662 1665+ 3747 3870 3939 1479% 1430+ 1482+ 1496 1485 1542 1745 1818# 1289+ 1300+ 4094 1946+ 4154 1478+ 1585+ 1636 1766+ 1867+ 1281+ 3817 1304+ 1751 1866+ FMT22 F1 F2 F3 G 8 PAGE 100 L778% 4774 47814 024714 DT4 20-MAR-78 1672+ 4061 1947+ L3714 1679+ 43024 1682+ 1706+ 1715+ 1493 1540 1546 1761 1957+ 1966+ 4950 4951+ 4953« 4959+ 1589+ 1687+ 1823 1881+ 1591 1693+ 1826 1593 1702 1829 1886+ 1598+ 1731« 1832 1894+ 1599+ 1732+ 1851 1895+ 1600+ 1733 1861+ 1896+ 1885+ 1603+ 1734+ 1862+ 1989 H 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 101 CZRJBC.P11 CROSS REFERENCE TABLE == USER SYMBOLS 20-MAR-78 10:22 GETREQ GNS = 020552 kkknnw |J GO = 000001 GRV = 000010 GTSWR = 104406 HCE = 000200 HCI = 002000 HCRC = 000400 HDREAD 005000 HEDERR 001262 HIAD 025620 HIVEC 025622 HT IAE 1E ILF ILR = = = = = 1 002000 000100 000001 000002 I0OTVEC= 000020 IR = 000100 ISR 015260 IXE = 004 LA 015122 LACNT 012326 LF = 000012 LIMIT LINSP LINGSP LOADRV LOP.CK LST = 025624 021035 021033 025401 005464 002000 MADRER MAXSEC MCCMPT MCLK = MCPE = MCPEMX MDRNP MORVD 021606 001266 022141 000002 020000 012374 021112 021031 MFCMPT MFORMT 022114 021303 MER11 021137 021324 MHECK MHS = 001000 MINX = MMODE MNDLTA MNRPO4 MODE MOFFLN 021251 012410 021166 001220 021070 MOH = 020000 MOL = 010000 MORMAT (021337 MPATD 022010 3411 497 6844 6974 1319 7204 8324 7214 1720 9704 3632 2946 29524 SEQ 0098 3884 2949 3936 2950 3997 2952 4012 4050 4057 43384 2957 2958 4398 4473 4873 4401 4481 4883 4409 4485 4894 44613 4416 4420 4424 4505 4429 4510 2265 2285 4408# 4922 4938 1756 1847# 1427* 1702 1904 1924 1935 1601 1657 1691 1777 3787 2947 1654 1751 1654 17274 1727+ 4925 4941 2319 2360 3823 2948 2954 2955 2956 37114 36764 3684« 4454 4755 4925+ 44074 48734 1708 44730 1421* 45144 4076 4L 164 44064 44204 45104 44394 44424 818# 3685 2354 4462 4941+ 4489 4124 44340 3700 1385+ LLaly 44984 1402+ 1525 4492 4500 4434 4514 8 I CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 102 CZRJBC.P11 CROSS REFERENCE TABLE == USER SYMBOLS 20-MAR-78 10:22 MRD = 000020 MRHVEC 026057 MRPCS1 026046 MSCHK 022060 MSE _ = 000020 MSEC20 021507 MSEC22 021430 MSELD MSELP MSFOU MSIZE MSTCK = 021237 021710 022023 021357 000010 MwC MWR = MXDLTA MXF = MXLACT MXWNDW 001260 000040 012406 001000 012404 012412 MUNIT MUSDR MO M M1A M8 021007 021217 L9664 L964n 45054 L4624 44540 44854 45004 4a47n 44014 44294 1419+ PAR = PARENT PAR1 PAR2 PAR3 000010 006 001430 001443 001456 001467 = 000020 1599 1688 1863 1454 1469 1473 1475 1416 1981 164914 1503 1499 1519 3685 002662 002752 003100 0F25 = 000001 0F400 = 000020 OF50 = 000002 OF800 = 000040 OPE = 020000 OPI = 020000 OPT 013456 OR = 000200 1425« 3698 003134 M2 003422 M 003462 M5 003544 NBA = 100000 NED = 010000 NEM = 004000 NHS = 002000 NOTPRS 020724 NOTRP 020703 020741 NOTSAF NUMERR 022165 ocvL =1 OENTER 006246 OFFSET= 000115 OFREV = 000200 OF100 = 0F200 = 000010 PAR4 PAT 7364 4934 4919 8194 43874 43934 45184 19774 1986 3742 3902 3942 1806 SEQ 0099 r J 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 103 CZRJBC.P11 CROSS REFERENCE TABLE == USER SYMBOLS 20-MAR-78 10:22 PATA PATB PATSEL PGE = PGM = PIP = PIRQ = PIRQVE= 001242 001244 001240 002000 001000 020000 177772 000240 PLU =0 POPQUE 020574 PRO PR1 PR2 PR3 PR4 PRS PR6 PR7 PS = = = = = = = = = 000040 000100 000140 000200 000240 000300 000340 177776 PSEL = PSU = PSW = PWRVEC= QCNT 002000 000001 177776 000024 020106 QINPT 020116 QDRVO QDRV1 QDRVZ QDRV3 QDRV4 QDRVS QDRV6 QDRV7 QOUTPT 1565+ 1566+ 1520+ 1569+ 1570+ 1563 1573 1574 1567 3588 3896 43534 1464+ 3210 3211« 3240 4319+ 4339 4353+ 4323 4325+ 4357 4359+ 29564 4923 4939 3678 3692 1304 1962 1339+ 020200 020220 020240 020260 020300 020320 020340 020360 020136 4356+ 4359 QSTART 020156 QSTOP 020160 QTERM = 020400 RAW = 20 025314 RBUF RDCHR = 104410 RDDAT = 000171 ROHD = 000173 ROLIN = 104411 RDY RD.ADR RD.RP RD.RP1 RD.RP2 RD.RP3 RD.RP4 = 000200 017370 017344 017366 017512 017516 017522 RD.WRD 017372 READIN= 000121 RECAL = 000107 RELSE = 000113 SEQ 0100 1504 4778 4131 4779 3574 T4 4185 3248% 3345 3346+ 3399+ 3409 3458+ 3734 3757 3825 3835 3850 CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 20~MAR-78 RESREG= 104413 RESVEC= 000010 RETRY 001250 RMR = 000004 RNOP = 000101 RPADR 012376 RPAS RPBA RPCA RPCC RPCS1 = = = = = 000016 000004 000034 000036 000000 RPCS2 = 000010 RPDA = 000006 RPDB = 000022 RPDS1 = 000012 RPDT = 000026 RPEC1 = 000044 RPEC2 = 000046 RPERRS 012230 RPER1 = 000014 RPER2 = 000040 RPER3 = 000042 RPINIT 012414 RPLA = 000020 RPMR = 000024 RPOF = 000032 RPSN = 000030 RPTMR 016616 RPVEC 012400 RPWC = 000002 RP.REG 001306 RPO4 RPO4B RPOS RPO6 RTC = SAVEFG SAVREG= SAVSEC SAWIC SC 013164 020751 020756 020763 000117 012336 104412 001252 001254 015464 SCAWC 005704 SC1_ = 000100 SC10 = 001000 sC11 016316 sC12 016406 SC13 016456 sC2 = 000200 SC20 = 002000 SC3 015534 SC4 015540 K 8 HSCY51 30A(1052) 20-MAR-78 10:25 PAGE 104 CROSS REFERENCE TABLE == USER SYMBOLS 10:2 2287 618# 9654 7154 8774 1326+ 4104 3182# 2188 3189# 31904 3175# 3735 1651 3648 4205+ 1639 31844 31804 31864 31934 31944 29774 1653 31914 31924 1333 3183# 3185# 3188#4 3187# 1972 1327« 31764 9874 4795 1590 1366 1369 1372 884# 1334 2227 674 3718 1704 7784 781# 3795 3789 3779 7794 7824 37704 37724 SEQ 0101 2958# 3249 3393 3396 3459 3663 1621 1623+ 1626+ 1709 1711« 1714+ 3229 3352 4174 3874 4204 3496 3517 4141 3755 31774 3500 3476 3901+ 4955 3918+ 3966 4194 4293 3676 3713 3983 4078 4084 4088 3513 3555 3575 3586 3601 3612 3477 3984 4000+ 4085 3518« 3604 4142 3623 4175+ 4181 4785 4788 4025 2531 3277 3810 3179# 3677+ 3302 3842 3230+ 3733« 3414 3879 3270+ 3824+ 3484 3509 3524 3416 3826 3851 3793 3796 3181# 3806 3315 3905+ 3537 3541 3561 3565 3226 3228 3346 1854 3719 3492 4132 3365+ 3917« 3497« 3635 3986 3836 3906+ 3906 3907 4146 3908« 4776 1854 2188 2190 4782 3953 “an 4806 6277 3209# 1653 1738 4809 3345# 1668 4812 1675 4815 3590 3209 1642+ 3739 3348 1643+ 3898 3408 3622 1685 479N 4793 3751 3755# 3819 3867 3881 3888 3903 3943 1651 1684 3712 L 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 105 CROSS REFERENCE TABLE == USER SYMBOLS CZRIBC.P11 20-MAR-78 10:22 SC5 015552 SC6 015752 SC6A 016062 sz 016210 SC8 016266 SEARCH= 000131 SEC20 001264 3771 3799 3797 3834 3811 8874 9714 SEEKFG 012340 SELDRV= 000145 SETFMT= 000143 SETHDR 005732 SETPAT 003716 SETTBL 005532 SETVEC 002426 SET.IE 020034 1463+ 890# 889# 1584 1545 1583 1324 3243 SEEK = 000105 SKI_ = 04 SLASH 021021 SOFSW 001216 SRCHWT 012312 STACK = 001100 STCLK1 006150 STCLK2 006220 STCLK3 006224 STKLMT= 177774 ST0. 016710 STO1 016740 sT02 017136 ST03 017206 STO5 017232 ST06 017240 sT07 017276 ST08 017326 ST09 017336 ST.CLK 006072 SVRHT1 017716 SWR 001140 SWREG 000176 SW0_ = 0000017 SW00 = 000001 SWol = 000002 SW02 = 000004 SW03 = 000010 SW04 = 000020 SW05 = 000040 SW06 = 000100 sW07 = 000200 SW08 = 000400 SW09 = 001000 swl_ = 000002 sW10 = 002000 swi1 = 004000 sW12 = 010000 SWi3 = 020000 swisd = 040000 8794 8524 2017 952N 30624 5224 1946 1957 1955 5334 3960 39904 3989 4027 3987 4029 4031 4054 4024 1332 3592 9264 2203 49 5864 5764 5754 574# 573# 5720 5714 5704 5690 5684 5674 5854 5664 5654 5640 5634 5624 SEQ 0102 - 3849 3837 3859 3843 38694 3852 1426+ 1586 1909 3214 3440 3880 3882# 3913 19044 15614 1861# 3383 3457 3662 3764 42034 1659 3515+ 1605 1694+ 3893 1632 1696 1698 1700+ 1737 1807 1977 1705+ 1897+ 3857 3900 1677 19664 4038 3993 4025# 4036 40454 4044 19464 4046 4059 40634 1290+ 3741 1292 3788 3839 2552 2552 2646+ 2614 2212 1317 1337 1847 1317 1337 1670 3938 1716 3999 1804 4062 1847 Q“7e 2196 M 8 CZRJBCO, RPO4/5/6 FHTR8 HSCY;1 30A(1052) 20-MAR-78 10:25 PAGE 106 CZRJBC.P11 20~MAR~7. :2 CROSS REFERENCE TABLE == USER SYMBOLS SW15 = 100000 SWw2 = 000004 sw3 = 000010 Sw4 = 000020 SW5 = 000040 Swé = 000100 Sw?7 = 000200 Sw8 = 000400 Sw9 = 001000 SYSTAT 020770 T TABLE TAP = TBITVE= T TDF = TIMER 6 5614 5844 5834 5824 5814 5804 S7o4 S78# ST7TH 1342 021027 001376 040000 000014 015324 000040 012342 1993 10304 7674 6194 3716 TITLE 025324 TKVEC = 000060 TPVEC = 000064 TRAPVE= 000034 TRE = 040000 TRKCNT 001236 TRKTST 005622 TRK1 = 004000 TRK10 = 040000 TRK2 = 010000 TRK20 = 100000 1308 6264 6274 6254 644N TRK4 TRNSWT = 020000 012310 TRTVEC= 000014 TTRKS TTRKSC TUF = TYPADR TYPDS = TYPE = TYPERR TYPOC = TYPON = TYPOS = ULDFLG 001232 001234 000100 006266 104405 104401 007174 104402 104404 104403 012316 UNLOAD= 000103 = 040000 UNTOFF 020662 UNTON 020673 UPDACY 006012 UPDATK 006042 UNS 31214 4043% 1719 7834 7864 7844 7874 7854 1978 6204 9584 9594 7974 1524 1784 1308 1379 1468 1782 2238 2546 2735 2205 2258 29494 1346 43984 44054 1485+ 37254 8144 3328+ 4049+ 4864 2529+ 1486+ 2008 2034 3452+ 4055+ 3595+ 3641+ 3728+ 3821+ 3865+ 3915+ 3923« 3956 3958« 4009 4022+ 4016+ 2530+ 1282+ 1283+ 1303+ 1869+ 18764 1878 1880+ 1884+ 30544 1542+ 1870+ 8154 19854 2016 1311 1386 1472 1785 1375 1453 1781 2237 2497 2730 2242 2558 2736 2227# 2615 1533 28?}0 3269+ 8784 7274 1360 1364 1765 1882 43834 43854 1887 19354 * SEQ 0103 3615+ 19244 3647+ 3785 3871 3873« 3889 3891+ 4002+ N 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 107 CZRJBC.P11 20-MAR-78 10:22 CROSS REFERENCE TABLE == USER SYMBOLS UPE usl us2 Us4 WR VUF = 020000 = 000001 = 000002 = 000004 = 000010 = 2 w = 000100 w30 = 010000 WAO = wCF = 000040 Wl WCE WCKD WCKHD WwCTBL wCU WLE 001256 = 040000 SEQ 0104 6684 6554 6564 6574 8494 848# 803# 7004 8584 9684 1418+ 1651 1424+ 1675 1571 = 000151 = 000153 001554 = 000001 = 004000 WRL = 004000 WRTDAT= 000161 WRTHD = 000163 WRTRK 004022 WRTRK1 004076 WRTRK2 004140 WRT.AD 017614 WRT.RP 017524 WRT.R1 WRT.R2 WRT.R3 WRT.R4& WRT.RS WRT.WD WRU WSU 017610 017700 017706 017712 017714 017612 000400 000004 S$CHARC S$CKSWR $CMTAG $CM3 = 007640 010622 001100 000000 SAUTOB $BDADR $BDDAT $BELL 001134 001122 001126 001162 1721 41404 3429 3600 4779 3483 3611 3487 3809 4147 4153 41604 4136% 41354 4779 2605 2762 2220 2343 2558 2352+ 1274 1284 SCNTLC SCNTLG SCNTLU SCRLF 011517 011531 011524 001167 27554 $OBLK $DB2D SDECVL $DOAGN $OTBL SENDAD SENDCT $EOP 010306 011654 012034 005334 010276 005324 005310 25054 SEOPCT 005302 27564 1375 1801# 1856 1379 2648 3491 3841 3499 3878 3508 41244 3512 3523 3530 3540 3554 1785 2755 1998 2206 2220 2237 2242 2252 2269 2755 2357# 1536 2735 B 9 CZRJBCO, RPO4/5/6 FMTR HACY11 30A(1052) 20-MAR-78 10:25 PAGE 108 CZRJBC.P11 CROSS REFERENCE TABLE == USER SYMBOLS 20-MAR-78 10:22 SERFLG SERMAX SERROR SERRPC SERRTB SERTTL SESCAP 9094 001103 001115 9154 1280 9164 11134 9134 36# SFILLC $FILLS $GDADR $GDDAT $GET42 $GTSWR $SHD = SICNT $INTAG SITEMB $SLF $LKCSB $LKCSR $LKS SLLVEC SLPADR SLPERR $LPVEC 2193+ 1285+ 2182# 2200+ 2234 1438+ SEQ 0105 2220 2201+ 22 02 2220 4782 1664+ 1612+ 1783 1625+ 3817 2199+ 1644+ 2220 2649 22 29 27L5 2762 1736+ 1849 2214 24 00 2611+ 2437# 14 53 1518 2220 49 18 4952 4954 12 82 1284 1286 3813 2360 4094 1661+ 4154 47N 4793 4803 4806 1667+ 4363 1713+ 4372 % 1744 4373% 1754+ 4375+ 2360 2667 2738 2755 1314 1786 2183 487 2178 936 2196 937 2203 2208 1850+ 2215 2217 2211 2219 2550 2555 1284 1773 2212 2220 1786 1796 4806 001202 wxnrne 2755 23 13 |J 011547 011536 L2 4 2344 011254 kkkkns 000007 012106 001172 001174 005336 L2222 2 |J 4781 4935 B0 $SAVRE 012050 $582D 011620 $SETUP= 000106 27984 $STUP = $SUPRS $SVPC $SWR 177777 011560 000200 27734 $TKB $TKCNT $TKINT 001146 010316 010334 123000 1280 2762 483 2174 2531 2556 25264 2622 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) $TKQEN= 010333 $TKQIN 010320 $TKQOU 010322 $TKQSR 010324 $TKS 001144 $TKSRV 010404 25154 25124 25134 25148 928¢ 2529 2581 2527+ 2528+ 2527 2510 25424 S$TNPWR 011764 2826 2827 001157 001150 012144 012166 000014 935# 9304 1282 2934 29384 29594 2928 9084 2705 2951 24514 2307# 2328 2353 2390 23864 17964 2387+ 2205 4934 1804 23934 2948 2949 2391« 2401 24364 Lo7H 2220 505 2360 506# 2505# CZRJBC.P1 $TN = 000000 $TPB 001152 $TPFLG $TPS $TRAP $TRAP2 $TRP = 20-MAR-78 10:22 $TRPAD $TSTNM 012200 001102 $TTYIN 011510 STYPBN= wxeear | $TYPDS 010072 $TYPE 007424 $TYPEC 007574 STYPEX 007642 $TYPOC $TYPON $TYPOS $$GET4= $OFILL $4L0CAT= . = 007670 007704 007644 000000 010067 wxwwwx | 026232 4L68# 9314 23914 20-MAR-78 10:25 c 9 PAGE 109 SEQ 0106 CROSS REFERENCE TABLE == USER SYMBOLS 2692 2579+ 2691+ 2694 2563+ 2580+ 2692 2581 2694+ 2583+ 2565 2571+ 2593 2609+« 2619 2631+ 2651+ 2307 2347 29234 2945 29474 29494 29504 29514 2952 29534 2954 29554 29564 29574 2958# 29454 2195 2706 2736 2750 27544 23474 2348 2653 5134 2515 4269% 9054 25164 4270 941 27544 46494 1604 1631 28674 1736 42624 478 2349+ 2950 2938 2335 2355 2947 2946 23584 42654 L2664 510# 25144 42684 2762 49004 D 9 PAGE 111 CZRJIBCO, RP0O4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.P11 20-MAR-78 10:22 CROSS REFERENCE TABLE == MACRO NAMES CKCHR CKDIG CKNUM COMMEN ENDCOM ENDTYP ERRCAL ERRENT L6BN 468¢ “oB¥ 1L # 1769# 2960# 2167# 1443 2020 4926 6294 6294 1777 3762 2184 ESCAPE GETPRI GETSWR 1L 1L ¥ 468% ERROR LOOP MORETA MULT NEWTST POP PUSH REPORT RP04.D SCOPE SETPRI SETTRA SETUP SKIP SLASH SPACE STARS SWRSU TRMTRP TYPBIN 5234 lgg? 2126 2140 4989 3813 3816 4093 4154 1614 1683 1615 1746 1616 1747 1617 1748 1618 1749 629% 6294 L68# 1612 1644 1661 1744 629% 1314 1604 8994 4 # 1L 1L 1# # 5244 1L 942 6294 6294 6294 629% 6294 2960 # 14 6294 » 1814 6294 6294 2938#¢ # 2969 1L 2938# 2955 2956 2957 2958 503 2170 6294 2292 4528 12864 630 2363 4532 634 2441 676 2509 680 2586 871 2601 875 2672 901 2696 941 2765 1783 2260 1343 2257 1530 2614 2948 2949 2955 2956 2957 2958 4379 6294 6294 $SESCA SSNEWT $SSET $$SKIP 1# # 29384 # 6294 6294 2947 6294 -HEADE KT11 .SETUP . SWRHI 1L # 1# ¥ 4L68# 4L874 ¥ 1L 4684 519 Lo8K¥ 4684 1267 479 4684 501 488 489 1650 3814 1656 3818 1666 4095 1673 4155 1261 2789 1265 2808 177 2871 181 29N 1736 2954 8994 .SACT1 .SAPTB 1649 3763 2952 $SCMRE . SWRLO 1648 1759 2950 6294 629% 6294 104 1647 1755 2949 1L 1L # .EQUAT 1646 1753 2683 2948 1272 TYPOCS TYPOCT TYPTXT 8994 1631 1619 1750 629% 2947 629% 6294 629% 6294 $SCMTM 4942 2907 2887 1L 1L 1L 1 5004 2492 2451 TYPDEC TYPNAM TYPNUM 1506 SEQ 0107 4651 4853 4857 2950 2952 2954 £ 9 CZRJBCO, RPO4/5/6 FMTR H8C551 30A(1052) 20-MAR-78 10:25 PAGE 112 CZRJBC.P11 20-MAR-78 1 CROSS REFERENCE TABLE == MACRO NAMES SAPTY <SASTA +SCATC LSCMTA . $0B2D .$0B20 .SD1V . SEOP . SERRO .SERRT LSMULT - SPOWE » » 1L 1L 1L 1L » 1L 1L » # 1L . SRAND . SRDDE . SRDOC . SREAD .SR2AZ . SSAVE .$582D .$5820 .$SCOP .SSIZE .SSUPR .STRAP .STYPB .STYPD .STYPE .STYPO $40CA .1170 1L # 1L 1 1 # # # 1# 1L 1L 4 # # 1# # 1 # . ABS. 026232 ERRORS DETECTED: 4684 L68H 4L68% 49! 899 2806 4L68% 4688 L684 1769 2168 468%¢ 2507 468 L68x 2869 2787 4684 L68% 2763 2915 L6BN 4684 468 2439 2290 2361 000 O CZRJBC.BIN,CZRJBC.LST/CRF/SOL/NL:TOC=CZRJBC.SML ,RP0456.011,CZRJBC.P11 RUN-TIME: 18 24 1 SECONDS RUN-TIME RATIO: 198/44=4.4 CORE USED: 46K (91 PAGES) SEQ 0108
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies