Digital PDFs
Documents
Guest
Register
Log In
AH-9187C-MC
August 1978
109 pages
Original
6.6MB
view
download
OCR Version
5.4MB
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_bw.pdf
OCR Text
RP04/05/06 &iiito e G FICHE1 OF 1 MADE IN USA fo W 1>o I» l CZRIBCO, RPOL/5/6 FMTR MACY1Y 30A(1052) (2RJBC PN 20-MAR~78 10:22 \ 2 3 20-MAR-78 10:25 e 1Y Le R ‘e R g -Skz 4 % B A el 8 PAGE 3 SEQ 0001 .REM @ & 5 ¢ 7 g IDENTIFICATI]ION 10 11 12 PRODUCT }3 CODE: AC=-9185(-MC 4 }2 PRODUCT NAME: (ZRJBCO RP04/S5/6 FORMATTER PROGRAM 17 }g PRODUCT DATE: 25~MAR(CH~1978 20 %} MAINTAINER: DIAGNOSTIC ENGINEERING AlJTHOR : C. HESS 23 24 25 26 %8 29 30 3 %% THE INFORMATION CONTAINED IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. 34 35 ;g NO RESPONSIBILITY IS ASSUMED FOR THE USE OR RELIABILITY OF SOF TWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL OR ITS AFFILIATED COMPANIES. gg COPYRIGHT (C) 1974, 1978 BY DIGITAL EQUIPMENT CORPORATION 29 THE FOLLOWING ARE TRADEMARKS OF DIGITAL EQUIPMENT CORPORATION: 42 DIGIAL 43 DEC POP DECUS UNIBUS DECTAPE MASSBUS CZRJBCO, RPO4/S5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 30A(1052) 20-MAR-78 10:25 ¢ 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 C(HECK OPERATION POSITIONER VERIFICATION PROGRAM LISTING CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 20-MAR-78 30A(1052) 1. ) 10:25 PAGE 5 SEQ 0003 ABSTRACT 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. REQUIREMENTS 2.1 EQUIPMENT PDP-11 PROCESSOR 8K MEMORY TELETYPE PROGRAM LOAD DEVICE KW11-L OR KW11-P CLOCK RH11 OR RH70 WITH 1 - 8 RPO4, RPOS5, RP06 DISK DRIVES 2.2 PRELIMINARY PROGRAMS RP04/5/6 DISKLESS CONTROLLER TEST PART 1 (MAINDEC-11-DZRJG) PART 2 (MAINDEC-11-DZRJH) D b = ad b ad ecd od —h b D NN PNINININ) d b WN—‘OOO\JO\A&\WN—'Oga 107 D b b D e d d d b RP04/5/6 FUNCTIONAL CONTROLLER TEST PART 1 (MAINDEC-11-DZRJI) PART 2 (MAINDEC-11-DZRJJ) ek LOADING PROCEDURES b e - o o o e e a» ap o @ o - - - .- THE “ROGRAM MAY BE LOADED FROM PAPER TAPE USING THE ABSOLUTE USING THE ASSOCIATED LOADER. iN AN °*XXDP' CHAIN. V0O ~NOAN S NV Swiohat ey LCADER OR 1T MAY BE LOADED FROM THE APPROPRIATE e SN — P . L T N N - ‘XXDP' MEDIA THE PROGRAM MAY NOT BE INCLUDED 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 137 138 139 140 141 142 143 144 E PAGE 6 10:25 20-MAR-78 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). 145 2. LOAD THE STARTING ADDRESS - 200(8) OR 204(8). 147 148 149 150 151 152 153 154 155 156 3. SET THE SWITCHES AS REQUIRED AND PRESS 146 157 158 159 160 161 162 163 164 165 166 167 168 '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 SwW<02>. THE PROGRAM WILL THEN TYPE 'PROGRAM MODE THE FOLLOWING MESSAGE : (C OR F):' ENTER THE APPROPRIATE CODE: FOR 'FORMAT & VERIFY'., REE???SE v ‘. TO THE REQUEST, [IF A °'C' FOR °'CHECK' OPERATION OR ‘F' 'CARRIAGE RETURN' THE PROGRAM WILL THEN ASK FOR THE °'FORMAT § FORMATTING MODE: 'OPERATE IN 22 SECTOR (16 BIT) MODE ENTER THE APPROPRIATE CHARACTER: 'Y' 18 BIT MODE. IF A 'CARRIAGE RETURN' THIS REQUEST, IS ENTERED IN THE PROGRAM WILL ASSUME THE PROGRAM WILL ASSUME (Y OR N)°* FOR 16 BIT MODE OR 'N' FOR IS ENTERED IN RESPONSE TO 16 BIT MODE. THE PROGRAM WILL THEN ASK FOR A DRIVE: N8B BT RRER2BIIIN R o R R e N e L R J— WU Wy 'ORIVE: ' 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 AODRESS 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 QUT. 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%ESEDESQQSTHE 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 }gg 7. 10:25 F PAGE 7 SEQ 0005 THE PROGRAM WILL THEN ASK FOR THE DATA PATTERN: 196 197 198 ;83 *SELECT DATA PATTERN (0) ZERO'S (1) ONES (2) WORST CASE:"’ 201 202 ENTER THE CODE FOR THE REQUIRED PATTERN. ‘'CARRIAGE RETURN' OR 'PERIOD' ENTRIES WILL CAUSE THE PROGRAM TO USE THE °'WORST CASE'’ 205 589 THE °'WORST CASE' PATTERN IS THE FOLLOWING OCTAL SEQUENCE REPEATED THROUGH THE DATA AREA OF THE SECTOR: 582 PATTERN. 208 209 210 %}; 165555 133333 8. THE PROGRAM WILL THEN TYPE: g}z 'STARTING FORMAT ON DRIVE N' 215 OR 216 g}g 'STARTING CHECK ON DRIVE N’ 219 220 gg; 9. SSZ 'PRESENT ADDRESS IS: 225 226 ggg AND RETURN TO THE 10. TXx' 236 11. 'DRIVE' REQUEST. 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 iS TERMINATED BY A 'CONTROL C' OR IF A DIFFERENT DRIVE IS SELECTED, THE PROGRAM WILL RESET THE ADDRESS LIMITS TO THE VALUES APPROPRIATE FOR THE DRIVE TYPE. Sgé Sgg 241 242 243 244 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 Szg 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 : 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 1S 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.PN 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 1202 1206 1210 $7KS $7KB $TPS $TPB SLKCSR $LKCSB SLPVEC $LKS $LKV 177560 177562 177564 177566 172540 172542 104 177546 100 TTY KEYBOARD STATUS REGISTER TTY KEYBOARD BUFFER REGISTER TTY PRINTER STATUS REGISTER TTY PRINTER BUFFER REGISTER KW11-P CONTROL REGISTER KW11-P COUNTER REGISTER KW11-P VECTOR ADDRESS KW11-L CONTROL REGISTER ;ADDRESS OF KW11-L VECTOR T SWITCH REGISTER SETTINGS SW<15>=1...HALT ON ERROR SW<13>=1...INHIBIT ERROR TYPEOUTS SW<10>=1...BELL ON ERROR SwW<09>=1...L00OP ON ERROR SW<07>=1...PRINT SOFT ERROR REPORTS AS THEY OCCUR 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. THE PROGRAM WILL DETERMINE THAT THE HARDWARE SWITCH REGISTER aN 11/34) IS NOT PRESENT AND WILL USE A 'SOFTWARE' SWITCH REGISTER. THE 'SOF TWARE®' 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 'SOF TWARE' 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' 'CONTROL U' FUNCTIONS MAY BE USED TO CORRECT TYPING ERRORS DURING SWITCH ENTRY. AND ON PROCESSORS WITH HARDWARE SWITCH REGISTERS, THE °SOFTWARE' SWITCH REGISTER MAY BE USeD. IF THE PROGRAM FINDS ALL 16 SWITCHES IN THE 'UP' POSITION, ALL SWITCH REGISTER REFERENCES WILL BE TO THE éEOEBECSSéDREGISTEP AND THE PROCEDURES DESCRIBED ABOVE MUST CZRJBCO, RPO4/S5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 305 306 307 308 309 310 3N 20-MAR-78 6. 10:25 H PAGE 9 SEQ 0007 ERROR MESSAGES *RH11 INTERRUPT OCCURRED (RPAS=0) - AN INTERRUPT OCCURRED, BUT NOTHING ON THE MASSBUS IS INDICATING AN ATTENTION. "UNEXPECTED ATTENTION OCCURRED' - THE INDICATED DRIVE BUT NO INTERRUPT WAS EXPECTED FROM THE INTERRUPTED, INDICATED DRIVE. "MASSBUS PARITY ERROR (MCPE=1)' - A CONTROL BUS PARITY ERROR WAS DETECTED BY THE RH11 WHEN THE INDICATED REGISTER WAS READ. *MASSBUS PARITY ERROR (PAR=1)' - A CONTROL BUS PARITY ERROR OCCURRED WHETM THE INDICATED REGISTER WAS WRITTEN. *ADDRESS PLUG CHANGE BIT SET' - THE PROGRAM FOUND THE BIT SET FOR THE INDICATED DRIVE. 'RH11 DIDN'T RESPOND TO ADDRESSING' RH11 AT THE 'OPE’ - THE PROGRAM ACCESSED THE INDICATED ADDRESS AND RECEIVED NO RESPONSE. 'DRIVE OFFLINE' - THE INDICATED DRIVE HAS GONE OFFLINE "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 DRIVE AND A PARITY ERROR OCCURRED. 10. *SOF TWARE TIMEOUT' 1 SECOND. 1. 'DRIVE UNSAFE ERROR' - A NON-PERSISTENT UNSAFE ERROR OCCURRED DURING THE OPERATION. 12. 13. -~ THE OPERATION FAILED TO COMPLETE WITHIN *CONTROLLER/DRIVE ERROR DURING WRITE' -~ THE INDICATED NON-DATA ERROR WAS DETECTED DURING A FORMAT OPERATION. *CONTROLLER/DRIVE ERROR DURING WRITE CHECK®' - A NON-DATA ERROR OCCURRED DURING THE WRITE CHECK. 14. 'DATA ERROR DURING WRITE CHECK' - A DATA RELATED ERROR OCCURRED DURING A WRITE CHECK OPERATION. A DATA ERROR IS CONSIDERED TO BE A 'DCK' ERROR. 15. 'RETRIES NOT SUCESSFUL - SECTOR NOT ACCEPTABLE' - THE SECTOR FAILED DURING RETRY FOLLOWING A DATA ERROR. 16. 17. INDICATED *CONTROLLER/DRIVE ERROR VERIFYING HEADERS' - AN ERROR OCCURRED DURING THE VERIFICATION PASS AFTER FORMATTING. **HCE® ERROR VERIFYING HEADERS' - A HEADER ERROR OCCURRED DURING CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 20-MAR-78 10:25 1 I PAGE 10 SEQ 0008 THE VERIFICATION PASS AFTER FORMATTING. 18. 'CYLINDER FIELD IN HEADER IS NOT CORRECT' - THE CYLINDER FIELD FROM A HEADER READ DURING THE VERIFICATION PASS IS NOT CORRECT. 19. 'WRITE CHECK ERROR' - THE RH11 NO DRIVE ERRORS WERE SET. 20. REPORTED A WRITE CHECK ERROR AND '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 7.1 FORMAT TIME IT TAKES APPROXIMATELY 8 MINUTES TO FORMAT AN ENTIRE RP0O4/S5 PACK AND APPROXIMATELY 16 MINUTES TO FORMAT AN RP06 PACK. THE °CHECK' ?ggfagéggsFOR AN ENTIRE PACK IS 4 MINUTES FOR RP0O4/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 D]SK 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. PROGKAM DESCRIPTION 8.1 FORMAT OPERATION THE PROGRAM FORMATS THE PACK ONE SPECIFIED BY THE DRIVE. TRACK AT A TIME BETWEEN THE LIMITS 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 20-MAR-78 CZRJBCO, RPO4/S5/6 FMTR MACY11 30A(1052) CZRJBC.P1 20-MAR-78 10:22 67 418 419 420 421 422 423 424 425 426 W27 428 429 430 43 432 433 434 435 436 437 438 439 440 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 47 472 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, PROGRAM WILL RETRY TO THE NEXT TRACK. THE COMMAND FOR THE ENTIRE THE TRACK BEFORE PROCEEDING 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 441 442 443 444 445 446 10:25 WITH THE PATTERN SELECTED BY THE OPERATCR. HEADER ARE ALWAYS SET TO ZERO. 8.2 THE KEYWORDS IN THE 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, RPO4/5/6 FMTR ;*COPYRIGHT (C) 1976,1978 ;*DIGITAL EQUIPMENT CORP. : *MAYNARD, MASS. 01754 M . 4 CZRJBCO, RPO4/S5/6 FMTR MACY11 30A(1052) CZRJBC.P11 20-MAR-78 10:22 473 474 475 476 Y44 478 479 480 481 482 483 484 485 486 487 488 489 490 4N 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 b b md e b b e —b ed OO~ W = Vivawaviwviiniug 510 20-MAR-78 10:25 :*PROGRAM BY (. K PAGE 12 1 SEQ 0010 HESS . % E'THIS PROGRAM WAS ASSEMBLED USING THE PDP-11 MAINDEC SYSMAC s *PACKAGE (MAINDEC-11-DZQAC-C3), JAN 19, 1977, % .SBTTL b OPERATIONAL SWITCH SETTINGS 1 M SWITCH A eeeeee o ;¥ .* M M 15 13 10 9 2 1 0 o* o .SBTTL ceecescescccccesaceoe 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 TRAP CATCHER .=0 000000 000174 000176 USE | ;*ALL UNUSED LOCATIONS FROM 4 - 776 CONTAIN A ‘'.+2 HALT" s*SEQUENCE TO CATCH ILLEGAL TRAPS AND INTERRUPTS :*LOCATION 04C0NTAINS O TO CATCH IMPROPERLY LOADED VECTORS 000174 000000 000000 DISPREG: SWREG: .SBTTL .WORD .WORD 0 O ; ;SOFTWARE DISPLAY REGISTER ; :SOFTWARE SWITCH REGISTER ACT11 HOOKS ::tttt*tt*ttttt'tttt*ttt*tttttt'tttt*tt'tttttt*ttttttt*tt*ttitt*t ;HOOKS REQUIRED BY ACT11 sszgc=. ;SAVE PC 000046 iEgng ::1)SET LOC.46 TO ADDRESS OF SENDAD IN .SEOP 000052 WORD .=$SVPC SBTTL 000200 000200 000137 002110 000204 000137 002100 20000 ;:2)SET LOC.52 TO 20000 :: RESTORE PC STARTING ADDRESS = 200 IMp BEGIN1 :NORMAL STARTING ADDRESS .SBTTL STARTING ADDRESS TO CHANGE THE RM11 ADDRESS = 204 IMP BEGIN CCHANGE THE RH11 ADDRESS .SBTTL BASIC DEFINITIONS :*INITIA%1680RESS OF THE STACK POINTER wx#x 1100 w«« 001100 STACK= .EQUIV .EQUlv 000011 000012 HT= EMT,ERROR I0T,SCOPE ;:BASIC DEFINITION OF ERROR CALL ::BASIC DEFINITION OF SCOPE CALL s*MISCELLANEOUS DEF INITIONS LF= 1 12 ;. CODE FOR HORIZONTAL TAB :.CODE FOR LINE FEED CZRJBCO, RPO4/S5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 BASIC DEFINITIONS 20-MAF~78 10:22 CZRJBC.PN 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 000015 000200 177776 CR= CRLF= PS= 177774 177772 177570 177570 STKLMT= 177774 .EQUIV PIRG= DSWR= ODISP= 15 200 177776 PS,PSW 177772 177570 177570 L_1 PAGE 13 SEQ 0011 ;:CODE FOR CARRIAGE RETURN ::CODE FOR CARRIAGE RETURN-LINE FEED +:PROCESSOR STATUS WORD ::STACK LIMIT REGISTER :;PROGRAM INTERRUPT REQUEST REGISTER : ;HARDWARE SWITCH REGISTER . HARDWARE DISPLAY REGISTER ;*GENERAL PURPOSE REGISTER DEFINITIONS RO= R1= R2= R3= %0 21 22 13 : :GENERAL : :GENERAL : SGENERAL : :GENERAL RS= 15 +:GENERAL REGISTER R4= R6= R7= SP= PC= 7 16 17 %6 %7 : :GENERAL REGISTER ::GENERAL REGISTER +:GENERAL REGISTER :STACK POINTER : :PROGRAM COUNTER ;*PRIORITY LEVEL DEFINITIONS PRO= PRI1= PR2= PR3= PRG= PRS= PR6= PR7= 0 40 100 140 200 240 300 340 REGISTER REGISTER REGISTER REGISTER :;PRIORITY ::PRIORITY S:PRIORITY S:PRIORITY S:PRIORITY $SPRIORITY SIPRIORITY ::PRIORITY LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL ;%" 'SWITCH REGISTER'® SWITCH DEFINITIONS Sw1S= Swi4= Swi3= swi2= swil= sw10= sw09= Sw08= sw07= SWo6= SW05= SWo4: sw03= Swi2= SWwol= SW00= LEQUIV JEQUIV JEQUIV EQUIV EQUIV EQUIV EQUIV EQUIV 100000 40000 20000 10000 4000 2000 1000 400 200 100 40 20 10 4 2 1 SW09.SW9 SWO8.SW8 SWO7.SW7 SWO6.SWé SWOS.SWS ., SWé SW04 SWO3.SW3 SWO02.SW2 0 1 2 3 4 5 6 7 M PAGE 14 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 BASIC DEFINITIONS CZRJBC.P11 20-MAR-78 10:22 585 586 587 588 589 590 591 592 593 594 595 596 597 598 SWO1,SW1 SWOO0,SWO .EQUIV .EQUIV 100000 020000 010000 002000 001000 000200 000100 000020 000010 000001 SEQ 0012 :*DATA BIT DEFINITIONS (BITOO TO BIT15) BIT1S5= 100000 BIT14= 40000 BIT13= 20000 BIT12= 10000 BIT11= 4000 BIT10= 2000 81T09= 1000 BIT08= 400 BITO7= 200 BITO6= 100 BIT0S= 40 BITO4= 20 81703= 10 BIT02= 4 BITO1= 2 BIT00= 1 .EQUIV BIT09,BIT9 .EQUIV BIT08.B1T8 .EQUIV BIT07.BI17 .EQUIV BIT06.BIT6é .EQUIV BITO05,BITS .EQUIV BIT04 ,BIT4 .EQUIV BIT03.BIT3 .EQUIV BIT02.BIT?2 .EQUIV BIT01,BIT1 .EQUIV BIT00.BITO s*BASIC ''CPU'' TRAP VECTOR ADDRESSES ERRVEC= 4 RESVEC= 10 TBITVEC=14 TRTVEC= 14 BPTVEC= 14 ;:TIME OUT AND OTHER ERRORS ;sRESERVED AND JLLEGAL INSTRUCTIONS P A -3 | ;s TRACE TRAP : ;BREAKPOINT TRAP (BPT) PWRVEC= 24 ; :POWER FAIL IOTVEC= 20 :: INPUT/0UTPUT TRAP (IOT) ««SCOPEx+ EMTVEC= 30 JsEMULATOR TRAP (EMT) =«ERROR** TRAPVE(C=34 TKVEC= ::"'TRAP'® TRAP 60 TPVEC= ::TTY KEYBOARD VECTOR 64 ::TTY PRINTER VECTOR PIRQVEC=240 [ AR AL AR AR .SBTTL RH11 AL 000100 000400 SR AR : ;PROGRAM INTERRUPT REQUEST VECTOR AR RRd s dsii Attt Al t i i ittt dltldd REGISTERS Rl iRd Rt idd ittt d ittt il ittt il ;CONTROL AND STATUS REGISTER 1 (RPCS1) 1E= RDY= A16= ; INTERRUPT ENABLE (BIT #6) ;READY (BIT #7) ;HIGH ORDER BUS ADDRESS BIT 160 200 400 tlld) (BIT #8) CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 20-MAR-78 10:22 001000 002000 020000 040000 20-MAR-78 10:25 RH11 REGISTERS A17= PSEL= MCPE= TRE= N PAGE 15 SEQ 0013 1000 2000 20000 ;HIGH ORDER BUS ADDRESS BIT (BIT #9) ;PORT SELECT (BIT #10) :MASSBUSS PARITY ERROR (BIT #13) ;TRANSFER ERROR (BIT #14) 40000 :SC= 100000 JSPECIAL CONDITION (BIT #15) :WORD COUNT REGISTER (RPWC) : (EACH BIT IS CALLED BY BIT NUMBER) ;BUS ADDRESS REGISTER (RPBA) ; (EACH BIT IS CALLED BY BIT NUMBER) ;CONTROL AND STATUS REGISTER 2 (RPCS2) 000001 000002 000004 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 usi1= 1 sUNIT SELECT (BIT #0) 20 ;MASSBUS PARITY TEST us2= US4= BAI= 2 4 10 CLR= IR= OR= 40 100 200 PAT= MPE= MXF = PGE= NEM= NED= sUNIT SELECT (BIT #1) sUNIT SELECT (BIT #2) :BUS ADDRESS INCREMENT INHIBIT (BIT #3) 400 1000 2000 4000 10000 UPE= WCE= DLT= (BIT #4) ;CLEAR (BIT #5) s INPUT _READY (BIT #6) ;OUTPUT READY (BIT #7) sMASS BUS PARITY ERROR (BIT #8) ;MISSED TRANSFER ERROR (BIT #9) ;PROGRAM ERROR (BIT #10) :NON EXISTENT MEMORY (BIT #11) sNON EXISTENT DRIVE (BIT #12) 20000 40000 100000 ;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) (A RS S AR .SBTTL MRS AL ARARAR AR RARdRiRds ARttt ittt ittt dtR ottt ittt Aottt sttt RP04/5/6 REGISTERS EALAARARRRR Rttt ililRtld it ld s ;CONTROL AND STATUS 1 REGISTER. (#00) 000001 000002 000004 000010 000020 000040 004000 GO= Fl= F2= F3= F4= F5= DVA= 1 2 4 10 20 40 4000 ;GO BIT (BIT #40) ‘ ;FUNCTION sFUNCTION ;FUNCTION sFUNCTION CODE BIT #1 CODE BIT #2 CODE BIT #3 CODE BIT #4 sFUNCTION CODE BIT #5 :DEVICE AVAILABLE (BIT #11) ;DRIVE STATUS RCGISTER (RPDS1) (#01) 692 693 694 695 696 MACY11 30A(1052) 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) CZRJIBCO, RP0O4/5/6 FMTR MACY11 CZRJBC.P1 20-MAR-78 10:22 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 30A(1052) 20-MAR-78 10:25 RP04/5/6 REGISTERS GRV= DLGG= DE1= vv= DRY= DPR= PGM= LST= WRL= MOL= PIP= ERR= ATA= ;GO REVERSE (BIT #3) sDIFFERENCE LESS THAN 64 (BIT #4) ;DIFFERENCE EQUALS 1 (BIT #5) 200 400 1000 2000 ;DRIVE READY (BIT #7) ;DRIVE PRESENT (BIT #8) ;PROGRAMABLE (BIT #9) ;LAST SECTOR TRANSFERRED (BIT #10) ;WRITE LOCK (BIT #11) 40 100 4000 10000 20000 40000 100000 100000 RMR= PAR= FER= WCF= ECH= HCE= HCRC AOE= DCK= ;MEDIUM ON-LINE (BIT #12) ;POSITIONING OPERATION IN PROGRESS (BIT #13) ;COMPOSITE ERROR (BIT #14) SATTENTION ACTIVE (BIT #15) (RPER1) (#02) sPARITY ERROR (BIT #3) ;FORMAT ERROR (BIT #4) IAE= OPl= UNS= ;VOLUME VALID (BIT #6) sILLEGAL FUNCTION (BIT #0) ; ILLEGAL REGISTER (BIT #1) JREGISTER MODIFJCATION REFUSED (BIT #2) ILF= ILR= WLE= DTE= SEQ 0014 10 20 ;ERROR REGISTER #01 000001 000002 000004 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 B 2 PAGE 16 20000 40000 100000 sWRITE CLOCK FAIL (BIT #5) ;ECC HARD ERROR (BIT #6) ;HEADER COMPARE ERROR (BIT #7) JHEADER 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) ;DATA CHECK ERROR (BIT 15) JMAINTAINABILITY REGiSTER (RPMR) (#03) 1 2 4 10 20 40 200 ;DIAGINOSTIC MODE (BIT #0) MAINTAINABILITY CLOCK (BIT #1) sMAINTAINABILITY INDEX (BIT #2) sMAINTAINABILITY SECTOR CLOCK (BIT #3) JMAINTAINABILITY READ (BIT #4) sMAINTAINABILITY WRITE (BIT #5) sMAINTAINABILITY SYNC DETECTED (BIT #7) SJATTENTION SUMMARY PSEUDO-REGISTER (RPAS) (#04) O 1 2 3 & 5 6 7 (BIT (BIT (BIT (BIT (BIT (BIT (BIT (BIT AT0= AT1= AT2= AT3= AT4= ATS= AT6= AT7= —2 L) — 000001 000002 000004 000010 000020 000040 000100 000200 DMD= MCLK= MINX= MSTCK= MRD= MWR= DTSY= ¢ ( 40 100 N 000001 000002 000004 000010 000020 000040 000200 200 ;DEVICE ;DEVICE ;DEVICE ;DEVICE ;DEVICE ;DEVICE ;DEVICE :DEVICE #0) #1) #2) #3) #4) #5) #6) #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.PT 20-MAR-78 10:22 RP04/5/6 REGISTERS 753 ;gé c_2 PAGE 17 ;DRIVE TYPE REGISTER (RPDT) SEQ 0015 (#06) 756 757 758 000001 000002 000004 DT00= DT01= DT02= 1 2 4 ;DRIVE TYPE NUMBER BIT 1 ;DRIVE TYPE NUMBER BIT 2 ;DRIVE TYPE NUMBER BIT 3 760 761 000020 000040 DT04= DT05= 20 40 ;ORIVE TYPE NUMBER BIT 5 ;DRIVE TYPE NUMBER BIT 6 DT07= DT08= DRQ= MOH= TAP= NBA= 200 400 4000 20000 40000 100000 759 762 763 764 765 766 767 ;gg 000010 000100 000200 000400 004000 020000 040000 100000 ;;? 772 773 774 775 776 777 778 779 780 781 782 783 784 785 i ;gg 798 799 800 801 802 803 804 ggg 807 DT06= 10 000001 000002 000004 000010 000020 000040 000100 000200 001000 002000 004000 010000 020000 040000 100000 000001 000002 000004 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 100000 EXT1= EXT2= EXT4= EXT10= EXT20= EXT40= SC1= SC2= :SC4= sC10= $C20= TRK1= TRK2= TRK4= TRK10= TRK20= :DRIVE 100 ;LOOK~AHEAD REGISTER (RPLA) ;gg 791 792 793 794 795 796 797 DT03= TYPE NUMBER BIT & ;DRIVE TYPE NUMBER BIT 7 ;DRIVE TYPE NUMBER BIT 8 ;DRIVE TYPE NUMBER BIT 9 ;DRIVE REQUEST REQUIRED (BIT #11) ;MOVING HEAD (BIT #13) :TAPE DRIVE (BIT #14) ;NOT BLOCK ADDRESSED (BIT #15) (#07) 1 2 4 10 20 40 100 200 400 1000 2000 4000 10000 20000 40000 100000 ;EXTENSION 1 (BIT #0) ;EXTENSION 2 (BIT #1) ;EXTENSION 3 (BIT #2) ;EXTENSION & (BIT #3) ;EXTENSION 5 (BIT #4) ;EXTENSION 6 (BIT #5) sSECTOR COUNT FIELD O (BIT ;SECTOR COUNT FIELD 1 (BIT ;SECTOR COUNT FIELD 2 (BIT ;SECTOR COUNT FIELD X (BIT :SECTOR COUNT FIELD & (BIT ;TRACK "icD 1 (BIT #11) ;TRACK FIELD 2 (BIT #12) ;TRACK FIELD 3 (BIT #13) ;TRACK FYELD & (BIT #14) :TRACK FIELD 5 (BIT #15) #6) #7) #8) #9) #10) ;RPO4 ERROR REGISTER #2 (RPER2) (#10) wCU= CSF= WSU= CSu= MSE= TDF = TUF= ;WRITE CURRENT UNSAFE (BIT #0) ;CURRENT SINK FAILURE (BIT #1) ;WRITE SELECT UNSAFE (BIT #2) ; CURRENT SWITCH UNSAFE (BIT #3) ;MOTOR SEQUENCE ERROR (BIT #4) ;TRANSITIONS DETECTOR FAILURE (BIT #5) ; TRANSITIONS UNSAFE (BIT #6) FEN= WRU= MHS= NHS= IXE= vu30= PLU= ACU= 1 2 4 10 20 40 100 200 400 1000 2000 4000 10000 20000 100000 sFAILSAFE ENABLED (BIT #7) ;WRITE READY UNSAFE (BIT #8) ;MULTIPLE HEAD SELECT (BIT #9) ;NO HEAD SELECTION (BIT #10) ; INDEX ERROR (BIT #11) ;30VOLT UNSAFE (BIT #12) ;PLO UNSAFE (BIT #13) ;AC UNSAFE (BIT #15) JRP05/6 ERROR REGISTER #02 (RPER2) (#10) CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 RP04/5/6 REGISTERS CZRJBC.P11 20-MAR-78 10:22 809 810 81 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 D 2 PAGE 18 SEQ 0016 ;WRITE CURRENT UNSAFE (BIT #0) :CURRENT SINK FAILURE (BIT #1) ;WRITE SELECT UNSAFE (BIT #2) ;CURRENT SWITCH UNSAFE (BIT #3) wCU= CSF= WSU= CSuU= JREAD AND WRITE (BIT #4) RAW= = TDF ;TRANSITIONS DETECTOR FAILURE ; TRANSITIONS UNSAFE TUF= ABS= (BIT #6) (BIT #5) ;ABNORMAL STOP (BIT #7) ;WRITE READY UNSAFE (BIT #8) JMUTLTIPLE HEAD SELECT (BIT #9) sNO HEAD SELECTION (BIT #10) :INDEX ERROR (BIT #11) ;PLO UNSAFE (BIT #M12) WRU= MHS= NHS= IXE= PLU= sOFFSET 000001 000010 000020 000200 002000 010000 ;OFFSET 25 MICRO INCHES (BIT #0) OF25= ;OFFSET 50 MICRO INCHES (BIT #1) OF 50= 0F 100= OF 200= 0F400= OF 800= OFREV= HCI= ECI= FMT22= ;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 10000 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) PSU= = VUF UWR= ACL= DCL= SKi1= ocviL= 1 2 10 40 100 40000 100000 ;RPO5/6 ERROR REGISTER #03 DCU= WAO= ACL= DCL= OPE= SKI= ocyL= 1 2 40 100 20000 40000 100000 ;PACK SPEED UNSAFE (BIT #0) ;VELOCITY UNSAFE (BIT #1) ;ANY UNSAFE EXCEPT READ/WRITE (BIT #3) ;AC LOW (BIT #5) ;DC LOW (BIT #6) ;SEEK INCOMPLETE (BIT #14) ;OFF CYLINDER (BIT #15) (RPER3) (#15) :DC UNSAFE (BIT #0) WRITE AND OFFSET (BIT #1) ;AC LOW (BIT #5) ;0C LOW (BIT #6) ;OPERATOR PLUG ERROR (BIT #13) ;SEEK INCOMPLETE (BIT #14) ;OFF CYLINDER ERROR (BIT #15) CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 E 20-MAR-78 10:25 RP04/5/6 REGISTERS PAGE 19 2 SEQ 0017 ;ECC POSITION REGISTER (RPEC1) (#16) ; (EACH BIT IS CALLED BY BIT NUMBER) 865 866 867 868 869 ;ECC PATTERN REGISTER (RPEC2) (#17) ;(EACH BIT IS CALLED BY BIT NUMBER) 870 871 872 :;*ttttitttit"'ttift*tt"t"tt"t'tt"tttt'tttttttfiititttttttttt .SBTTL RP04/5/6 DRIVER COMMANDS N (N =D 3 (N =2 NN = b — =D ) ) D ) ———d ) —d b D NN = N =2 (N = (N = WCKD WCKHD WRTDAT WRTHD RDDAT RDHD b SEARCH GETREG SETFMT SELDRV d DRVCLR RELSE OFFSET RTC READIN ACK d RECAL md UNLOAD SEEK d RNOP NNOOWVNWNE DS NNN = 2o a0 [ole) 000101 000103 000105 000107 000111 000113 000115 000117 000121 000123 000131 000141 000143 000145 000151 000153 000161 000163 000171 000173 b :;tittt**t'tii"i'tttt"?"'i"'tttittttttittt'tttttttttttt't'tti — 873 874 875 876 877 878 30A(1052) sNO OPERATION sUNLOAD s SEEK sRECAL IBRATE :DRIVE CLEAR sRELEASE sOFFSET sRETURN TO CENTER LINE ;READ IN PRESET sPACK ACKNOWLEDGE s SEARCH ;GET REGISTERS ;SET FORMAT (& ECI OR HCI) sSELECT DRIVE ;WRITE CHECK DATA ;WRITE CHECK HEADER & DATA JWRITE DATA ;WRITE HEADER & DATA ;READ DATA ;READ HEADER & DATA CZRJUBCO, RPO4/S5/6 FMTR MACY11 30A(1052) 20-MAR-78 COMMON TAGS CZRJBC.P11 20-MAR-78 10:22 .SBTTL 10:25 F PAGE 20 2 SEQ 0018 COMMON TAGS S5 3334232232232 224030002300 2202220230228 028020882000d00R0R 2200000 R SRR ;*THIS TABLE CONTAINS VARIOUS COMMON STORAGE LOCATIONS ;*USED IN THE PROGRAM. 911 912 001106 001110 000000 000000 914 915 916 917 918 919 920 001114 001115 001116 001120 001122 001124 001126 000 001 000000 000000 000000 000000 000000 913 001112 001140 001142 000000 177570 177570 933 934 001155 001156 002 012 936 937 938 939 940 001160 001162 001166 001167 001170 000000 177607 077 015 000012 001144 001146 001150 001152 SLPADR: S$LPERR: 000000 926 927 928 929 930 931 SCMTAG: $PASS: $TSTNM: $ERFLG: $ICNT: $ERTTL: SITEMB: $ERMAX: SERRPC: $GDADR: $BDADR: $GDDAT: $BDDAT: $AUTOB: $INTAG: 177560 177562 177564 177566 000015 944 945 946 947 001172 001174 001176 001200 176700 000254 172540 172542 949 950 001206 001210 000 177546 000100 954 001222 000000 000632 000106 000102 O O O O O O O O 1 O O .WORD .WORD .WORD .WORD .BYTE '85;5 O O O O O 8 .WORD O :;START OF :;CONTAINS :;CONTAINS ;;CONTAINS :;CONTAINS ;;CONTAINS :;CONTAINS ;;CONTAINS :;CONTAINS ::CONTAINS ;;CONTAINS 2 ;CONTAINS COMMON TAGS PASS COUNT THE TEST NUMBER ERROR FLAG SUBTEST ITERATION COUNT SCOPE LOOP ADDRESS SCOPE RETURN FOR ERRORS TOTAL ERRORS DETECTED ITEM CONTROL BYTE MAX. ERRORS PER TEST PC OF LAST ERROR INSTRUCTION ADDRESS OF °'GOOD' DATA :;CONTAINS ADDRESS OF ;;AUTOMATIC MODE INDICATOR :: INTERRUPT MODE INDICATOR $FILLC: $TPFLG: .BYTE .BYTE 12 O $BELL: .ASCIZ <207><377><377> ;;CODE FOR BELL $CRLF: $LF: L.ASCII LASCIZ <15 <12 SRR Rttt .BYTE $ESCAPE:0 $QUES: AAALA L.ASCII O 2 /?/ °*BAD' DATA ;;CONTAINS °'GOOD* DATA ;;CONTAINS °*BAD' DATA ; ;RESERVED=-=-NOT TO BE USED DSWR DDISP PR 942 .WORD .BYTE .BYTE .WORD .WORD .WORD .WORD .BYTE .BYTE .WORD .WORD SWR: .WORD DISPLAY: .WORD $TVS: 177560 $TKB: 177562 $TPS: 177564 $TPB: 177566 $NULL: .BYTE $FILLS: 000377 .=1100 ; ;ADDRESS OF SWITCH REGISTER ; ;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 :;INSERT FILL CHARS. AFTER A 'LINE FEED'' ;" 'TERMINAL AVAILABLE'' FLAG (BIT<07>=0=YES) ;;ESCAPE ON ERROR ADDRESS ;s QUESTION MARK ; :CARRIAGE RETURN ::LINE FEED dlitdii ittt it ottt ittt lld CR = LF = $RPADR: .WORD SRPVEC: .WORD SLKCSR: .WORD $LKCSB: .WORD SLPVEC: .WORD 15 12 176700 254 172540 172542 104,106 sRH11/RP04/5/6 UNIBUS ADDRESS sRH11 INTERRUPT VECTOR :ADDRESS OF KW11-P (SR sADDRESS OF KW11-P COUNTER BUFFER ;ADDRESS OF KW11-P VECTOR SLLVEC: DRIVE: SOFSW: MODE : ENDCYL: 100,102 O O O 410. ;ADDRESS OF KW11-L VECTOR ; CONTAINS DRIVE NUMBER SELECTED ;CONTENTS ARE FOR SOF TWARE DECISIONS ; 'FORMAT & VERIFY' OR °'CHECK' MODE INDICATOR ;ENDING CYLINDER $LKS: JWORD .WORD .WORD .WORD .WORD .WORD 177546 ;ADDRESS OF KW11-L CONTROL REGISTER .WORD .WORD .WORD .WORD .WORD . WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 001266 000000 MAXSEC: .WORD 976 977 978 3;8 001270 001272 001274 001276 000000 000000 000000 000200 DS.CYL: DS.TRK: DDRIVE: ATTN: .WORD .WORD .WORD _WORD 981 982 983 984 985 986 987 988 989 990 991 992 993 001300 001302 001304 000000 000000 000000 CNTLC: CHGADR: EFLG: .WORD .WORD .WORD 001306 001310 001312 001314 001316 001320 001322 000000 000000 000000 000000 000000 000000 000000 996 997 998 001330 001332 001334 000000 000000 000000 001224 001226 001230 001232 001234 001236 001240 001242 000000 000022 000000 000000 000000 000000 000000 000000 964 965 966 967 968 969 970 g;} 001246 001250 001252 001254 001256 001260 001262 001264 g;é 973 994 995 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 001244 000000 G 2 PAGE 21 SEQ 0019 ;STARTING CYLINDER ;ENDING TRACK :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 ;STORE CYLINDER ADDRESS FOR FORMAT VERIFICATION SMAINTAINS # OF WRITE RETRIES MADE ;CONTAINS LAST BAD SECTOR ON FORMAT ;CONTAINS WC FOR REMAINING SECTORS ON ERROR ;20 OR 22 SECTOR TRACK SIZE (IN WORDS) :2'S COMPLEMENT OF 'WC' ;POSITIONING ERROR DURING FORMAT INDICATOR 520 OR 22 SECTOR MODE INDICATOR ;0 = 20 SECTOR MODE ;1'S = 22 SECTOR MODE :?eggzg? SECTOR ADDRESS (FOR EITHER 20 OR 22 SECTOR sADDRESS OF CURRENT CYLINDER ;ADDRESS OF CURRENT TRACK ;DRIVE NUMBER OF 'DRIVER' ERROR MESSAGES ;ATTENTION REGISTER IMAGE FOR 001324 001326 001336 001340 001342 001344 001346 001350 001352 001354 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 RP.REG: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 'DRIVER' :ERROR MESSAGES ;ADDRESS OF '“C' RETURN ; *CHANGE RH11 ADDRESS' FLAG ; 'ERROR DURING WRITE CHECK' FLAG ;RH11/RP04/5/6 REGISTERS STORED HERE AFTER AN OPERATION elojolelolelolaldiplelololelololelolel o) 963 OO0 955 956 957 958 959 960 961 962 OO0OO0O 000000 000000 000000 000000 000000 000000 000000 000000 BEGCYL: ENDTRK: BEGTRK: TTRKS: TTRKSC: TRKCNT: PATSEL: PATA: PATB: CYLCK: RETRY: SAVSEC: SAVWC: wC: MWC: HEDERR: SEC20: elelelalelolalolololelelelolel Jo) oo 10:25 O CZRJBCO, RPO4/5/6 FMTR MACYI 30A(1052)c 20-MAR-78 CZRJBC.P1 20-MAR-78 10:22 TAGS JRPCS1 sRPWC ;RPBA ;RPDA :RPCS2 ;RPDS1 ;RPER1 :RPAS ;RPLA :RPDB JRPMR ;RPDT ;RPSN ; RPOF JRPCA JRPCC ;RPER? :RPER3 ;RPECT ;RPEC2 ;DATA/PARAMETER BLOCK =~ USED FOR ALL DRIVE OPERATION 001356 001357 001360 001361 001362 001364 001366 001367 001370 001372 001374 FMTDPB: 10:25 .BYTE .BYTE .BYTE .BYTE .WORD .WORD .BYTE .BYTE .WORD .WORD H PAGE 22 2 SEQ 0020 ;DRIVE NUMBER ;OFFSET VALUE OR FMT2Z2,ECI, AND HCI ; COMMAND OVOOOOOOOOO0O ;PSEL AND A17 AND A16 ;WORD COUNT (NEG) ;BUFFER ADDRESS ;SECTOR ADDRESS : TRACK ADDRESS ;CYLINDER ADDRESS ;ERROR TABLE POINTER ;STATUS=-ERROR INDICATOR :BIT 15 = 1: ERROR OCCURRED :BIT 07 = 1: DONE :BIT 14-10 AND BIT 06-03 P.REG ;INDICATE TYPE OF ERROR ;PARAMETER POINTER TABLE 001430 001443 001456 001467 000000 000000 000022 000022 001224 001230 001222 001226 TABLE: PAR1,0,BEGCYL PAR2,18. ,BEGTRK PAR3,0,ENDCYL PAR4,18. ,ENDTRK,0 sASCI1 MESSAGES FOR ADDRESS PARAMETERS 052123 054503 123 052040 047105 020114 105 045522 051101 020114 040524 045522 020104 000 042116 000040 020124 000 052122 000040 054503 052040 PAR1: .ASCIZ aSTART CYL @ PARZ: .ASCIZ @START PAR3: .ASCIZ @END CYL @ PAR4 : .ASCIZ dEND TRK a TRK @ 025324 026334 027344 030354 031364 032374 033404 034414 035424 036434 037444 040454 ADRTBL: .WORD .WORD .WORD . WORD .WORD . WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD . WORD BUFP BUFP+<520.+1.,> BUFP+<520.%2.> 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.'19 > BUFP+<520.¢17.> ;ADDRESS s ADDRESS s ADDRESS sADDRESS s ADDRESS s ADDRESS ;ADDRESS +ADDRESS s ADDRESS s ADDRESS s ADDRESS s ADDRESS +ADDRESS s ADDRESS s ADDRESS s ADDRESS s ADDRESS s ADDRESS SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR =2 O ;SECTOR BUFFER ADDRESS TABLE — e b ed d ad ek b O QD NON VSN NOWVNS NN =O Quun Guur Guard pord s Qoo Qo V00 ~NONN SN — pusr Quur S I G G S P (oleolelelololols o CZRJBCO, RPO4/S5/6 FMTR TMACY11 30A(1052) 20-MAR-78 CZRJBC.PV COMMON TAGS 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 CZRJBC.P11 COMMON TAGS 20-MAR-78 10:22 1067 1068 1069 1070 001544 001546 001550 001552 047544 050554 051564 052574 .WORD .WORD .WORD .WORD 10:25 2 1 PAGE 23 SEQ 0021 BUFP+<520.+18.> BUFP+<520.¢19.> BUFP+<520.+20.> BUFP+<520.%21.> :ADDRESS OF SECTOR 18 ;ADDRESS OF SECTOR 19 ;ADDRESS OF SECTOR 20 ;ADDRESS OF SECTOR 21 .EVEN sREMAINING WORD COUNT AFTER SECTOR sRERAINING WORD COUNT AFTER SECTOR sREMAINING WORD COUNT AFTER SECTOR cREMAINING WORD COUNT AFTER SECTOR sREMAINING WORD COUNT AFTER SECTOR sREMAINING WORD COUNT AFTER SECTOR sREMAINING WORD COUNT AFTER SECTOR sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD :REMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD sREMAINING WORD COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT COUNT AFTER AFTER AF TER AFTER AFTER AFTER AFTER AFTER AFTER SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR SECTOR b —d —b —d sREMAINING WORD COUNT AFTER SECTOR sREMAINING WORD COUNT AFTER SECTOR sREMAINING WORD COUNT AFTER SECTOR —d ok md = sREMAINING WORD COUNT AFTER SECTOR sREMAINING WORD COUNT AFTER SECTOR ;REMAINING WORD COUNT AFTER SECTOR b 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.*1 260.+<260.*1 . 260.+<260*1 260.+<260.*1 260.+<260.+1 260.+<260.%1 260.+<260.*1 260.+<260.+18. 260.+<260.%19.> 260.+<260.%20.> 260.+<260.%21.> = OVWNOWVNEHWN—=O 012524 013130 .WORD -WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD PNON) WCTBL: VVVVVVVVYV 001554 001556 001560 001562 001564 001566 001570 [ ENTe AV, PV [,V E ) 1074 1075 1076 1077 1078 1079 1080 NOONOWNEWN—=O ;REMAINING WORD COUNT TABLE 30A(1052) 20-MAR-78 10:25 ERROR POINTER TABLE J 2 PAGE 24 SEQ 0022 s*THIS TABLE CONTAINS THE INFORMATION FOR EACH ERROR THAT CAN OCCUR. ;*THE INFORMATION IS OBTAINED BY USING THE INDEX NUMBER FOUND IN ;*LOCATION SITEMB. THIS NUMBER INDICATES WHICH ITEM IN THE TABLE IS PERTINENT. ;*NOTET: IF SITEMB IS O THE NNLY PERTINENT DATA IS (SERRPC). EACH ITEM IN THE TABLE CONTAINS 4 POINTERS EXPLAINED AS FOLLOWS: :*NOTEZ2: 022242 023424 024676 025210 D b ) d D e d ) d b e d ) D 001640 001642 001644 001646 DT DF ;;POINTS TO THE ERROR MESSAGE :;POINTS TO THE DATA HEADER :;POINTS TO THE DATA ; ;POINTS TO THE DATA FORMAT EM1 DH1 0T DF1 ;RH11 EM? DH2 DT2 DF?2 JUNEXPECTED ATTENTION OCCURRED EM3 ;MASSBUS PARITY CrPOR (MCPE=1) INTERRUPT OCCURRED (RPAS=0) 022303 023431 024700 025214 SERROR 3 WA = D and b D ) ) EM DH $ERRTB: sERROR 1 001650 001652 001654 001656 022341 023506 024714 025220 DH3 D73 DF3 JERROR 4 b D e b b = D e od ERROR POINTER TABLE ;ERROR 2 W buwdoomflo\nbum-floo& D b D ) b e D b D b D ad b cmd e md ) d b b b wed wnd wnd b D ek ad b e —d cnd cad e e » v, ) ) b e D b 001630 001632 001634 001636 % . ) =D D ) b e b ad D D 001630 * d d ed d d d b o) D ) d e d b D ed d b D e b e : : » .SBTTL g 1099 b D CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 001660 001662 001664 001666 022377 023534 024722 025224 EM4 ;MASSBUS PARITY ERROR (PAR=1) EMS ;ADDRESS PLUG CHANGE BIT SET DH4 DT4 4 DFf JERROR 5 001670 001672 001674 001676 022434 023431 024700 025214 DH2 DT2 DF2 ;ERROR 6 001700 001702 001704 001706 022470 023573 024732 025210 EM6 DH6 DT6 DF1 ;RH11 DIDN'T RESPOND TO ADDRESSING K CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 25 CZRJBC.P1 20-MAR-78 10:22 ERROR POINTER TABLE 1155 1156 1157 1158 119 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1N 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 }}g% 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1196 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 2 SEQ 0023 :ERROR 7 001710 001712 001714 001716 000000 000000 000000 000000 0 0 0 0 s UNUSED ;ERROR 10 001720 001722 GN1724 001726 022532 023606 024734 025230 EM10 DH10 DT10 DF10 ;DRIVE OFFLINE ;ERROR 11 001730 001732 001734 001736 022550 023606 024734 025230 EM11 DH10 sPERSISTENT DRIVE UNSAFE ERROR DT10 DF10 ;ERROR 12 001740 001742 001744 001746 022606 023606 024734 025230 EM12 DH10 DT10 DF10 ;UNCORRECTABLE MASSBUS PARITY ERROR ;ERROR 13 001750 001752 001754 001756 022651 023606 024734 025230 EM3 DH10 DT10 DF10 : SOF TWARE TIMEOUT ;ERROR 14 001760 001762 001764 001766 022672 023606 024734 025230 EM14 DH10 DT10 DF10 ;DRIVE UNSAFE ERROR ;ERROR 15 001770 001772 001774 001776 022715 023606 024734 025230 EM15 DH10 DT10 DF10 ;CONTROLLER/DRIVE ERROR DURING WRITE ;ERROR 16 002000 002002 002004 v02006 022761 023606 024734 025230 EM16 DH10 DT10 DF10 ;CONTROLLER/DRIVE ERROR DURING WRITE CHECK b oy NO NS WN - b e o ed ) e o PON) =2 OV b— D b b b d ) h b e ANININININI NN NN n L 2 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 26 CZRJBC.P11 20-MAR-78 10:22 ERROR POINTER TABLE 22 SEQ 0024 :ERROR 17 002010 002012 002014 002016 EM17 DH17 0117 DF17 023033 024056 025010 025244 JRETRIES NOT SUCESSFUL - SECTOR NOT ACCEPTABLE ;ERROR 20 002020 002022 002024 002026 023111 024125 025022 025250 ;DATA ERROR DURING WRITE CHECK EM20 DH20 DT20 DF20 ;ERROR 21 002030 002032 002034 002036 023147 023606 024734 025230 EM21 DH10 DT10 DF10 ;CONTROLLER/DRIVE ERROR VERIFYING HEADERS ;ERROR 22 002040 002042 002044 002046 023220 ;'HCE' ERROR VERIFYiNG HEADERS EM22 D10 DT10 DF10 :ERROR 23 002050 002052 002054 002056 023267 024424 025104 025270 ;CYLINDER FIELD IN HEADER IS NOT CORRECT EM23 DH23 D723 DF23 ;ERROR 24 002060 002062 002066 023337 024522 025122 025274 EM24 DH24 DT24 DF 24 ;WRITE CHECK ERROR ;ERROR 25 002070 002072 002074 002076 023361 024125 025022 025250 EM25 DH20 DT20 DF20 SR A SRR .SBTTL AR ;HARDWARE ERROR DURING WRITE CHECK s iRttt MAIN PROGRAM d ittt tlt sttt ittt ittt g CZRJBCO, RPO4/S/6 FMTR CZRJBC.P11 MACY11 30A(1052) 20-MAR-78 10:22 1264 1265 1266 1267 002100 012737 177777 001302 20-MAR-78 MAIN PROGRAM R T BEGIN: MOV 10:25 M2 PAGE 27 T #-1,CHGADR SEQ 0025 T T T T P ;SET CHANGE 'RH11 BUS ADDRESS' INDICATOR CZRJBCO, RPO4/S5/6 FMTR CZRJBC.PN 1268 1269 1270 1271 MACY11 30A(1052) 20-MAR-78 10:22 002106 002110 002114 002116 000402 005037 1274 002122 012706 1277 1278 1279 1280 1281 1282 002134 002136 001374 012706 002142 002150 002156 002164 002172 002176 012737 012737 012737 012737 005037 112737 006766 000340 012144 000340 001160 000001 1291 1292 1263 002204 002210 002216 002224 002232 002240 013746 012737 012737 012737 022777 001012 000004 002244 177570 177570 177777 1295 002242 000403 1272 1273 1275 1276 1283 1284 1285 1286 1287 1288 1289 1290 1294 002126 002130 000005 005037 005026 022706 001304 %338? 002266 012637 000004 1302 1303 1304 1305 002272 002274 002302 002310 002260 N 2 PAGE 28 BEGIN2 CHGADR EFLG SEQ 0026 :START THE PROGRAM ;CLEAR THE 'CHANGE RH11 ADDRESS' INDICATOR sCLEAR THE BUS :CLEAR ERROR DURING WRITE CHECK FLAG INITIALIZE THE COMMON TYAGS MOV 001100 002252 10:25 ;.CLEAR THE COMMON TAGS (SCMTAG) AREA 001140 012716 000002 012737 1299 .SBTTL 001100 002244 002250 002252 MAIN PROGRAM B8R BEGIN1: CLR BEGINZ2: RESET CLR 001302 1296 1297 1298 20-MAR-78 000030 000032 000034 000036 001115 000004 001140 001140 001142 000005 012737 012737 012737 000240 000240 002110 000036 000032 001300 MOV #340 ,@F#TRAPVEC+2;LEVEL 7 CLR MOv8 SESCAPE #1 . SERMAX ::CLEAR THE ESCAPE ON ERROR ADDRESS 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 SFERRVEC,~(SP) ;;SAVE ERROR VECTOR MOV MOV #648 FERRVEC #DSWR, SWR BR 65% MOV #SWREG, SWR :;POINT TO SOF TWARE SWR #D1SPREG,DISPLAY RESET MOV MOV MOV ;CLEAR WORLD #PRS ,a#TRAPVEC+2 ;CHANGE TRAP PRIORITY BACK TO 5 #PRS ,SNEMTVEC+2 ;CHANGE EMT PRIORITY BACK TO 5 #BEGINT ,CNTLC ;'CONTROL C' ADDRESS MOV CMP BNE 64%: 000176 000174 ssFIRST LOCATION TO BE CLEARED (RO)+ ;s CLEAR MEMORY LOCATION #SWR,R6 ; ;DONE? BNE .~6 ;:LOOP BACK IF NO MOV #STACK,SP ::SETUP THE STACK POINTER ;. INITIALIZE A FEW VECTORS MoV #SERROR ,FEMTVEC ;. EMT VECTOR FOR ERROR ROUTINE MOV #340,SFENTVEC+2 ;;LEVEL 7 MOV #STRAP @#TRAPVEC ;;TRAP VECTOR FOR TRAP CALLS 001142 176700 012737 #SCMTAG R6 CLR CMP 65%: MOV RTI MOV 66%: MOV #DDISP,DISPLAY #-1,aSWR 66% #65%, (SP) (SP)+ ,3#ERRVEC ;;SET UP ERROR VECTOR s:SETUP FOR A HARDWARE SWICH REGISTER ;:AND A HARDWARE DISPLAY REGISTER ;s TRY TO REFERENCE HARDWARE SWR : ;BRANCH IF NO TIMEOUT TRAP OCCURRED :;AND THE HARDWARE SWR IS NOT = -1 ;;BRANCH IF NO TIMEOUT ::SET UP FOR TRAP RETURN ;;RESTORE ERROR VECTOR CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 a0 s a OVONOWVNSBWN—=O prd N AN W G G G G S B AN NN NN NN NN NN W G 558 1306 002316 002322 005227 001010 025324 000011 004737 010334 005737 000042 005227 001010 004737 013737 013737 10:25 INC #-1 ;FIRST START TYPE LTITLE ;ADRS OF CMPB BNE 000041 TYPE 025401 18: .SBTTL 000176 000001 001134 gg:: 11, 1% .LOADRV BNE 67% BNE GTSWR BR MovBe 68% SWR,#SWREG ;BR IF NOT ? °'TITLE' MESSAGE ;LOADED FROM AN RP04/5/6 ? ;BR [F NOT s INSTRUCT OPERATOR TO REMOVE ;PACK FROM DRIVE 0 ;;SOFTWARE SWITCH REG SELECTED? ; :BRANCH IF NO ::GET SOFT-SWR SETTINGS ::SET AUTO-MODE INDICATOR JSR #-1 SETVEC PC ,BUSADR sCHECK FOR FIRST START :BR IF NOT ;CHECK THE RH11 ADDRESS MOV $RPVEC ,RPVEC sRH11 MOV S$SRPADR,RPADR ‘'XXDP' ;TURN ON THE KEYBOARD INTERRUPT SWITCH REGISTER :;ARE WE RUNNING UNDER XXDP/A(CT? ; ;BRANCH IF YES 68% #1,8AUTOB INC BNE 012376 012400 1% JSR PC,STKINT GET VALUE FOR SOF TWARE TST asél CMP 177777 025626 001172 001174 SEQ 0027 INITIALIZE THE COMMON TAGS BNE 001140 B 3 PAGE 29 20-MAR-78 177777 104401 122737 001002 104401 001006 023727 001005 104406 000403 112737 30A(1052) ;RH11 ADDRESS VECTOR ADDRESS ;DISPLAY DRIVE STATUS AND SET UP THE OTHER UNITS THE 006072 012414 177777 012336 000004 176460 000340 177776 177777 V00~ AN & SAAAAIIAAAR KR~NOWVE LRLY VB WA =000 W —b b wd b b b D D b b wmd e b b b wmh b D ad 1342 001167 020770 : PROGRAM WILL USE SETVEC: JSR PC,ST.CLK sSTART THE CLOCK MoV INC 8EQ #-1,SAVEFG #-1 11% ;SET THE SAVE REGISTERS FLAG :SEE IF FIRST START ;BR IF YES CLR R4 JSR 11$: BIT BNE MoV s TYPE TYPE MoV 020724 2%: 020662 3s: :DRIVE TABLE POINTER s CR-LF :TYPE STATUS HEADING .BYTE .BYTE 2 0 ::TYPE 2 DIGIT(S) ;. SUPPRESS LEADING ZEROS 1ST8 BMI BNE TSTB BEQ DRVSTA(R4) 4% 5% DRVTYP(R4) 2% BR TYPE 9% . NOTPRS TYPE BR LUNTOFF 6% BPL TYPE 020703 .SCRLF LSYSTAT ;TYPEOUT THE DRIVE STATUS TABLE ? ;BR IF NOT ;SET PRIORITY TO 7 ::SAVE R4 FOR TYPEOUT TYPE 012260 #5W02 ,aSWR 108 #PR7 ,PS JINITIALIZE THE RP04/5/6 DRIVER R4, =(SP) TYPOS 021033 012250 PC,RPINIT B8R .LINGSP 3% ,NOTRP 9% ;. TYPE DRIVE NUMBEFK ::GO TYPE--OCTAL ASCII s 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 ;CHECK NEXT DRIVE ;DRIVE NOT PRESENT s CHECK NEXT DRIVE ;ORIVE OFFLINE ;PRINT DRIVE TYPE CZRJBCO, RPO4/5/6 FMIR MACY'1 CZRJBC.P1 20-MAR-78 10:22 CO~NONN W N—=O0 D d YN b od S S 002556 002562 002564 002570 002574 002602 002610 002612 002620 002626 002630 00<¢636 002640 002642 002646 002650 002654 002656 4%: 012737 020673 021035 020751 5%: 6%: 000001 012260 012737 020756 002640 104401 132764 001012 132764 001003 012737 104401 000000 104401 005204 020427 001312 104401 000002 020763 002640 #BITO0,DRVTYP(R4) ;RPO4 ? 7% :BR IF YES #RP0O4B, 8% 7$: 000010 10%: ;DRIVE UNSAFE ;PRINT DRIVE TYPE ;ORIVE ONLINE s SPACES :ADDRESS OF RPO4 MESSAGE #RPOS5,8% :ADDRESS OF RPOS MESSAGE 7% ;BR IF YES #B1T01,DRVTYP(R4) MoV #RPO6 .83 .WORD O cMp R4 ,#8. TYPE TYPE INC BNE . SCRLF R4 1% TYPE .SCRLF RPOS ? ;ADDRESS OF RPO6 MESSAGE ;TYPE THE DRIVE TYPE MESSAGE sMESSAGE ADDRESS HERE :CR=LF : INCREMENT DRIVE NUMBER/TABLE POINTER sFINISHED ? ;BR If NOT s CR-LF ;SEE WHICH MODE THE PROGRAM IS TO BE RUN IN. ) b JMODES ARE: 001220 02125 M: — 0 000103 — 001166 021324 1$: 021303 2%: 021337 177777 CLR TYPE CMPB BEQ cmMPB8 BEQ 000106 012737 °'FORMAT & VERIFY' OR °*CHECK FORMAT® ROL IN MoV TSTB BEQ O ug % A3 b d b ard e BITB BNE MOV BNE 9%: 001167 SEQ 0028 NOTSAF 6% -UNTON .LINSP BITB 8% - 001167 3 c PAGE 30 TYPE BR TYPE TYPE MOV 012260 002640 10:25 GET VALUE FOR SOFTWARE SWITCH REGISTER 020741 b b ad 20-MAR-78 104401 000402 104401 D b [ N e NN NN NN NN b D b b b 323 §3V\‘V\‘N\I \J\IV& FEEREE 1362 30A(1052) 001220 3%: 4%: MODE .MMODE (SP)+,R (R1) 2% #'C.(R1) 9 #'F,(RY) 3% TYPE BR .SQUES M BR M1A BR 4% TYPE TYPE TYPE MoV MHECK . MFORMT .MORMAT #-1,MODE ;SET MODE TO 'CHECK FORMAT' : TYPE ‘'PROGRAM MODE' sREAD THE KEYBOARD ;GET ADDRESS OF INPUT ;'CR' ENTERED (DEFAULT) :BR IF YES ;" CHECK' ? .BR IF YES ;'FORMAT' ? ;BR IF YES ;NO CORRECT ENTRY ;TRY AGAIN ;TYPE RES! OF 'CHECK'® sGET STARTINC ADDRESS ;TYPE DEFAULT MESSAGE ;SET UP MODE ;TYPE REST OF ‘FORMAT' ;SET MODE TO °'FORMAT & VERIFY' ;FIND OUT IF FORMAT [S TO BE IN 20 OR 22 SECTOR MODE 104401 104411 012601 122711 001410 122711 001424 105711 001403 104401 000761 104401 021357 MIA: 000131 MSIZE cMPB8 #'Y,(R1) CMPB BEQ #'N,(R1) 2% TYPE BR ,$QUES M1A BEQ 000116 1ST8 8EQ 001166 021430 TYPE RDLIN MOV 1%: TYPE ;TYPE FORMAT MODE REQUEST (SP)+,R1 JREAD THE KEYBOARD ;ADDRESS OF ENTRY 1% ;BR IF (R1) 1% .MSEC22 ;IS ENTRY A 'Y' ? ;1S ENTRY A 'N' ;BR IF IT IS ? IT IS ;DEFAULT MODE ;BR IF IT IS ? ;TYPE ' ;TRY AGAIN ; TYPEOUT MODE SELECTED CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 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 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 003014 012737 012737 012737 012737 000415 104401 012737 012737 005037 012737 005037 005037 012737 012737 112737 000400 013130 164650 177777 000025 021507 012120 165660 001264 000023 001230 001224 000022 000002 177777 30A(1052) D 3 20-MAR-78 10:25 PAGE 31 GET VALUE FOR SOF TWARE SWITCH REGISTER #<260,+22.>,WC TRACK SIZE IN 22 SECTOR MODE 0-<260.*22.>.HUC .2'S COMPLEMENT WORD COUNT #-1,SEC20 #21. ,MAXSEC :MAX SECTOR ADDRESS IN 22 SECTOR MODE 001256 001260 001264 001266 001256 001260 001266 SEQ 0029 zé SECTOR INDICATOR : CONTINUE BEGCYL #18. ,ENDTRK #2 . PATSEL #~1,FMTDPB :CLEAR BEGINNING CYLINDER ADDRESS ;SETUP END TRACK ADDRESS ;SETUP FOR WORST CASE PATTERN :SETUP INVALID DRIVE NUMBER ;BRANCH TO START sTYPE OUT 20 SECTOR MODE SELECTED #<260.+20.>,WC ;TRACK SIZE IN 20 SECTOR MODE #-<260.+20.> ,Mi( :2"'S COMPLEMENT WORD COUNT SEC20 220 SECTOR INDICATOR #19, ,MAXSEC sMAX SECTOR ADDRESS IN 20 SECTOR MODE BEGTRK ;CLEAR STARTING TRACK ADDRESS M18: 001226 001240 001356 M1B8 .MSEC20 2%: MovB BR M0 ;GO FIND OUT WHAT DRIVE 012737 005037 004737 104401 104411 012601 004537 003214 003202 003214 003202 003222 003214 005037 104401 000413 104401 000745 010237 005702 001004 122737 001431 004737 006246 001112 010334 021007 001300 MO: #OENTER,CNTLC SERTTL PC.STKINT MUNIT (SP)+,R1 RS,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 I ] LYY 02 001214 021031 2%: 001166 3. 001214 4%: 000011 006072 012414 177777 177777 177776 012250 021112 .QDRVD 5 . $QUES MO R2,DRIVE R2 5% 000041 11,4 5%: 012336 012340 7% PC,ST.CLK PC,RPINIT #-1,SAVEFG #-1,SEEKFG PS ;GO TYPE DEFAULT DRIVE NUMBER ;GO SEE IF DRIVE ZERO IS THERE :TYPE *?° ;ASK FOR DRIVE NUMBER AGAIN ;SAVE DRIVE NUMBER JSEE IF DRIVE O ;BR IF NOT ;PROGRAM LOADED FROM AN RP04/5/6 ? :BR IF [T WAS, CAN'T FORMAT THE DRIVE ;START THE CLOCK ;G0 SEE WHAT DRIVES ARE AVAILABLE ;SAVE THE REGISTERS MO DRVTYP(R2) 7% MO ;GO GET DRIVE NUMBER AGAIN 8% 6% ,MUSDR 6%: ;SELECT DRIVE ZERO :SET "NO OPTIMIZATION' FLAG JSET PRIORITY BACK TO ZERO ;LO0K AT DRIVE STATUS ;BRANCH [F ONLINE ;BR IF DRIVE NOT AVAILABLE :"DRIVE UNSAFE® ;GO GET DRIVE NUMBER AGAIN ;A DRIVE PRESENT? ;BR IF SO DRVSTA(R2) 021217 012260 DRIVE ;DIGIT 0=7 ;DIGIT 8-9 .MDRNP ;TYPE ‘DRIVE NOT PRESENT' CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 20-MAR-78 10:22 1474 1475 1476 1477 1478 1479 003324 003330 003332 003340 003342 003350 104401 000701 123737 001430 113737 012737 1481 1482 1483 1484 1485 1486 }Zgg 003364 003366 003374 003400 003404 003412 003420 001003 012737 005037 005037 013737 013737 000400 1480 MACY11 30A(1052) 003356 132762 021137 001356 001214 000632 001356 001222 001456 001230 001224 001222 001222 }ggg 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 }ggq 003422 003426 003432 003440 003442 003444 003452 003454 003460 104401 004737 023737 101010 103404 023737 103003 104401 000760 021040 006366 001222 M2: 001224 001226 001230 021606 1526 1527 1528 1529 2%: 3%: LMERT MO DRIVE,FMTDPB M2 DRIVE ,FMTOPB #4610, ,ENOCYL :'DRIVE NOT AVAILABLE' :GO GET DRIVE NUMBER AGAIN :SAME DRIVE AS LAST TIME ? :BR IF IT IS :SETUP DRIVE ADDRESS :SETUP FOR RPO4/S BNE MOV CLR CLR MOV MOV BR 9 #814. ,ENDCYL BEGTRK BEGCYL ENDCYL,TABLE+2 ENDCYL,TABLE+16 M2 :BR IF EITHER :SETUP ENDING CYLINDER FOR RPO6 :CLEAR STARTING TRACK ADDRESS :CLEAR STARTING CYLINDER ADDRESS :ENTRY LIMIT FOR BEGINNING CYLINDER :ENTRY LIMIT FOR END CYLINDER :GET ADDRESS LIMITS FROM THE OPERATOR #81700'BITO1,DRVIYP(R2) SEE IF DRIVE RP04/S TYPE JSR CMP BHI BLO CMP BHIS TYPE BR LENTADR PC,PARENT ENDCYL,BEGCYL M4 3 ENDTRK,BEGTRK M4 ,MADRER M2 ; "ENTER ADDRESS LIMITS® :GET THE ADDRESS LIMITS :;SEE IF ENDING CYLINDER EQ TO GT THAN BEGINNING ;BR IF HIGHER :BR If LESS :SEE IF ENDING TRACK EQ OR GT THAN BEGINNING :BR IF YES :INVALID ADDRESS ENTERED :TRY AGAIN :GO GET DATA PATTERN FOR FORMAT 003462 104401 003466 003470 003472 003476 003500 003502 003504 003506 003510 003512 104411 012601 004537 003532 003512 003532 003512 003524 003532 104401 003522 000406 003516 003524 003530 003532 003536 003540 012702 020227 101403 104401 000751 010237 021710 M : 006556 022010 1%: 000002 000002 2%: 001166 3$: 001240 43: }ggg 1524 1525 9%: SEQ 0030 :GEI ADDRESS LIMITS }gg} 1503 E 3 PAGE 32 TYPE BR CMPB BEQ MOVB MOV BITB 001400 001414 }238 1491 1492 1493 1494 1495 1496 1497 1498 8$: 012260 001222 10:25 GET VALUE FOR SOFTWARE SWITCH REGISTER 7%: 001214 000003 20-MAR-78 TYPE RDLIN MOV JSR 38 1% 3s 1% 2% 3s TYPE JMSELP JMPATD 43 ;GO SAVE PATTERN (SP)+,R1 RS,CK.CHR #2.,R2 cmpP R2.#2 BLOS TYPE B8R MOV 'SELECT PATTERN' ;READ THE KEYBOARD :ENTRY ADDRESS ;CHECK ONE CHARACTER :ILLEGAL CHARACTER :CARRIAGE RETURN ;UL L :DIGIT 0-7 :DIGIT 8-9 :TYPE DEFAULT PATTERN MOV BR ;GO TYPE 43 ,$QUES M4 R2.,PATSEL :WORST CASE PATTERN ;1S # LARGER THAN 2 ;BRANCH IF NOT :TYPE '?° ;RETYPE LINE :SAVE PATTERN SELECTED :GO TYPE 'STARTING FORMAT ON DRIVE N' 003544 003552 003556 003560 003564 003566 012737 005737 001403 104401 000402 104401 006266 001220 001300 MS: 022023 022060 1%: MOV TST BEQ TYPE BR TYPE #TYPADR,CNTLC MODE 1% JMSFOU 23 . MSCHK :CHANGE “C ENTRANCE : "FORMAT' OR 'CHECK' MODE ? :BR IF 'CHECK' MODE :TYPE 'STARTING FORMAT ON DRIVE N° ;TYPE 'STARTING CHECK ON DRIVE N' CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 003572 003572 013746 003576 003600 003601 003602 104403 001 000 104401 30A(1052) F. 2$: 001214 3 20-MAR-78 10:25 PAGE 33 GET VALUE FOR SOF TWARE SWITCH REGISTER MOV TYPOS .BYTE .BYTE 001167 TYPE DRIVE,=(SP) 1 0 LOCRLF SEQ 003 ;:SAVE DRIVE FOR TYPEOQUT ;:TYPE DRIVE NUMBER ;.60 TYPE--OCTAL ASCII :;TYPE 1 DIGIT(S) ;s SUPPRESS LEADING ZEROS ;CR=LF ;SETUP TOTAL TRACK COUNT FOR FCRMAT 003606 003614 003616 023737 001011 013737 163737 005237 000427 013702 163702 013737 163737 100004 062737 005302 005237 005302 100404 062737 000772 001222 001224 001226 001230 001232 001232 001232 1%: 001222 001224 001226 001230 001232 001232 000023 001232 001232 000023 CKADRS: 2%: 3%: 001232 CMP BNE MoV sus INC B8R MOV sus MoV suB BPL ADD DEC INC DEC BMI ADD B8R ENDCYL ,BEGCYL 1% ENDTRK, TTRKS BEGTRK, TTRKS TTRKS ;STARTING AND ENDING CYLINDERS THE SAME ;BRANCH IF BEGCYL NOT EQUAL TO ENDCYL ;END TRACK ADDRESS ;SUBTRACT THE STARTING TRACK ADDRESS ;MAKE THE NUMBER OF TRACKS INCLUSIVE ENDCYL ,R2 BEGCYL ,R2 ENDTRK, TTRKS BEGTRK, TTRKS 2% #19. ,TTRKS R2 TTRKS R2 SETPAT #19.,TTRKS ;ENDING CYLINDER ;SUBTRACT THE STARTING CYLINDER ;CALCULATE THE RESIDUAL TRACKS ;SUBTRACT THE STARTING TRACK sBR IF ENDING TRACK GREATER ;CORRECT THE VALUE ;COUNT THE PARTIAL TRACK sMAKE THE NUMBER INCLUSIVE ;ODECREMENT THE CYLINDER COUNT ;BR IF DONE sADD CYLINDER WORTH OF TRACKS SETPAT 3% ? ;SETUP THE DATA PATTERN s CONT INUE ;THIS CODE SETS UP THE SELECTED DATA PATTERN TO BE WRITTEN ON EACH SECTOR IMAGE 005037 005037 005737 001416 005137 005137 022737 001406 012737 012737 013703 012700 013701 013702 010120 010220 001242 001244 001240 001242 001244 000001 165555 133333 001256 025324 001242 001244 SETPAT: 001240 001242 001244 1%: 2%: CLR CLR TST 8EQ COM COM cMp 8EQ PATA PATB PATSEL 1% PATA PATB #1,PATSEL 1% ;CLEAR DATA PATTERN A ;CLEAR DATA PATTERN B ;SEE IF PATTERN OF ONES ;BR _IfF SO ;SET PATA TO ONES ;SET PATB TO ONES ;SEE IF PATTERN OF ZEROS ;BRANCH [F SO WC,R3 #BUFP RO ;SET UP COUNTER ;SET UP MEMORY POINTER MOV MOV #165555,PATA #133333 ,PATB MOV MOV MoV MOV DEC DEC BNE PATA,R1 PATB,R2 R1,(RO)+ R2,(RO)+ R3 R3 2% MOV MoV sSET UP WORST CASE ;SET UP WORST CASE ;SET UP PATTERN IN R1 ;SET UP PATTERN IN R2 ;MOV 1ST PAT INTO MEM ;MOV 2ND PAT INTO MEM ;KEEP COUNT ;KEEP COUNT ;D0 IT AGAIN IF R3 NOT O ;THIS CODE SETS UP FOR THE ACTUAL FORMAT 112737 005532 005732 000020 WRTRK: 001357 JSR JSR mMove PC,SETTBL PC,SETHOR #20,FMTDPB+1 ;GO SET UP DRIVER TABLE ;GO INITIALIZE HEADERS IN THt ;LOAD FMT2Z2 BIT SECTOR BUFFER IN CORE CZRJBCO, RPO4/5/6 FMIR MACY11 CZRJBC.PV 20-MAR-78 10:22 1586 005737 001002 105037 30A(1052) 001264 001357 000143 013164 001216 001250 001304 001366 001260 025324 001220 i Gy 000163 004146 001100 013164 001360 NOWVESWN=O S I S Ol G 005464 000003 SEC20 1%: 2%: CLRB mMovBe JSR FMTOPB+1 ;CLEAR THE FMT2?2 BIT #SETFMT ,FMTOPB+2 ;'LOAD FORMAT' COMMAND RO,RPO4 ;START THE COMMAND FMTDPB BR TST 8EQ WRTRK1: CLR CLR CLR CLRB MOV MOV TST 8EQ WRTRK2: MOVB MOV MoV 1%: JSR 38: 001362 001364 001360 001110 FMTDPB 001374 004226 005364 TST BNE 001374 P G 3 20-MAR-78 10:25 PAGE 34 GET VALUE FOR SOF TWARE SWITCH REGISTER % 001160 001250 3s: 001250 001160 001250 4%: 1% 2% FMTDPB+16 3 SOF SW RETRY EFLG FMTDPB+10 MWC,FMTDPB+4 #BUFP,FMTDPB+6 MODE CKTRK #WRTHD ,FMTDPB+2 #.,SLPERR #STACK,SP RO,RPO4 BR TST BEQ BPL MOV JSR ERROR ERROR ERROR ERROR ERROR ERROR JSR CMP 8EQ INC 1% FMTDPB+16 2% 43 #3% ,SESCAPE PC ,ERINDX 10 11 12 13 14 15 PC,LOP.CK #3 RETRY 4% RETRY CLR CLR $ESCAPE RETRY B8R 1% ;18 BIT MODE ? ;BR [F NOT ;DOPB ADDRESS ;QUEUE FULL RETURN ;LOOK FOR DONE ;LOOP UNTIL FINISHED ;CLEAR ERROR COUNTER ;ZERO THE RETRY COUNTER ;CLEAR ERROR DURING WRITE CHECK FLAG ;RESTORE SECTOR sRESTORE wC 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 ;ADRS OF PARAMETERS - TBL ;WAIT FOR QUEUE IF FULL ;WAIT FOR COMMAND TO COMPLETE ;BRANCH IF NOT DONE ;BRANCH IF NO ERROR :.ESCAPE TO 38 ON ERROR ;SEE WHICH ERROR ;DRIVE OFFLINE ;PERSISTENT DRIVE UNSAFE ERROR sUNCORRECTABLE MASSBUS PARITY ERROR ; SOf TWARE TIMEOUT ;DRIVE UNSAFE ERROR ;DRIVE/CONTROLLER ERROR DURING WRITE ;LOOP ON THE ERROR ? ;ERROR RETRY LIMIT ? :BR IF REACHED ;COUNT THE ERROR :TRY AGAIN ;CLEAR ERROR ESCAPE ADDRESS ;CLEAR THE RETRY COUNTER ;CHECK THE TRACK JUST WRITTEN 112737 012737 000153 004266 001100 013164 001360 001110 1%: 001374 113737 001005 013737 CKTRK: 2%: MOVB MOV MoV JSR FMTDPB BR 001314 001252 TST BEQ BPL MovBe 001266 001252 MOV BNE #JCKHD ,FMTDPB+2 #.,SLPERR #STACK,SP RO, RPO4 ;SET WRITE CHECK HEADER & DATA COMMAND IN TBL ;SETUP LOOP ON ERROR ADDRESS ;LOAD STACK POINTER ;GO CHECK THE TRACK JUST FORMATTED 1% ;ADRS OF PARAMETERS - TBL sWAIT FOR QUEUE IF FULL 3s ;BRANCH IF NOT SECTOR O FMTDPB+16 ;WAIT FOR COMMAND TO COMPLETE 2% ;BRANCH IF NOT DONE 8% ;BRANCH IF NO ERROR RP.REG+RPDA,SAVSEC ,GET THE SECTOR ADDRESS MAXSEC o>AVSEC ;RESTORE TO LAST SECTOR +1 SEQ 0032 H 3 CZRJBCO, RPO4/S5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 35 CZRJBC.P 20~MAR-78 10:22 GET VALUE FOR SOF TWARE SWITCH REGISTER 1642 1643 1644 004336 004342 004346 005237 005337 012737 1646 1647 1648 1649 1650 004360 004362 004364 004366 004370 104010 104011 104012 104013 104014 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 004400 004402 004406 004410 004412 004414 004420 004422 004426 004430 004436 1664 1665 1666 004444 004450 004454 1645 1651 1663 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 004354 004372 004442 004456 004462 004466 004470 004476 004500 004506 004510 004512 004520 004522 004530 004532 004540 004542 004544 004552 004554 004560 004566 004570 004576 004602 004606 004612 004616 004620 004626 004632 004636 004642 004737 032737 001005 033727 130620 001001 104016 005737 001416 005737 001413 012737 005737 001402 001252 001252 004712 005364 040000 001160 3%: 001322 001220 4%: 001216 004736 001304 001160 005337 005037 104017 001112 001304 21%: 005737 100011 032777 001426 012737 104020 000421 001160 001322 5%: 005037 032737 001411 032777 001411 012737 104024 000404 012737 104025 013701 113737 006301 016137 013746 066116 012637 005737 001421 012737 005237 000137 005737 001435 000200 174442 000001 001304 040000 001316 000200 174410 0000017 001304 000001 001304 001252 001252 001366 001500 001260 001554 001254 001220 001364 177374 001216 001362 004140 001216 INC DEC MOV SAVSEC SAVSEC #10%,SESCAPE ; INCREMENT TO LAST SECTOR +1 sADJUST SECTOR TO THE ONE THAT FAILED ;.ESCAPE TO 108 ON ERROR ERROR ERROR ERROR ERROR ERROR 10 11 12 13 14 ;DRIVE OFFLINE ;PERSISTENT DRIVE UNSAFE ERROR sUNCORRECTABLE MASSBUS PARITY ERROR ; SOF TWARE TIMEOUT :DRIVE UNSAFE ERROR JSR 001316 23%: 248: 7%: 8%: SEQ 0033 PC.,ERINDX ;SEE WHICH ERROR BIT #JCE ,RP.REG+RPCS BEQ 218% BNE BIT .WORD BNE ERROR TST BEQ TST BEQ MOV TST DEC CLR ERROR CLR TST BPL BIT BEQ MOV ERROR BR ;NO, ;YES, DECREMENT REPORTED ERROR COUNT :CLEAR ERROR DURING WRITE CHECK FLAG :SECTOR NOT ACCEPTABLE RP.REG+RPER1 23% #BIT7,aSWR 7% #1,EFLG 20 7% ;DATA CHECK ERROR ? :NO, CHECK OTHER ERRORS ;INHIBIT SOFT ERROR REPORTS ? ;YES, SKIP ERROR REPORT :SET ERROR DURING WRITE CHECK FLAG ;DATA ERROR DURING WRITE CHECK ; CONT INUE S$ESCAPE ;CLEAR THE ERROR ESCAPE ADDRESS #WCE ,RP .REG+RPCS?2 JMP WRTRK?2 TST BEQ INCREMENT ERROR COUNT SERTTL EFLG 17 BIT BEQ BIT BEQ MoV ERROR BR MoV ERROR MOV Move ASL MOV MOV ADD MoV TST BEQ Mov INC ;WRITE CHECK ERROR ? 4% ;BR'IF SET RP.REG+RPER1, (PC)+ :CHECK FOR DATA ERRORS DCK!OPI'!DTE!HCRC!HCE'!FER .DATA ERROR BITS 43 ;BR IF SET 16 ;CONTROLLER/DRIVE ERROR DURING WRITE CHECK MODE ;FORMAT OR CHECK MODE ? 5% ;BR IF CHECK SOF SW sRETRYING THE SECTOR ? 5% ;BR IF NOT #11$,SESCAPE ;.ESCAPE TO 11$ ON ERROR EFLG ;ERROR DURING WRITE CHECK REPORTED ? :WRITE CHECK ERROR ? 248 ;NO, MUST BE HARDWARE ERROR #8177,3SWR :INHIBIT SOFT ERROR REPORTS ? 73 :YES, SKIP ERROR REPORT #1,EFLG :SET ERROR DURING WRITE CHECK FLAG 24 ;WRITE CHECK ERROR 7% : CONTINUE #1,EFLG :SET ERROR DURING WRITE CHECK FLAG 25 :HARDWARE ERROR DURING WRITE CHECK SAVSEC,R1 sFAILING SECTOR ADDRESS SAVSEC,FMTDPB+10 ;SECTOR ADDRESS R1 :SETUP INDEX TO ADDRESS WORDS ADRTBL (R1) ,FMTOPB+6 ;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)+,SAVW(C ;STORE WORD COUNT FOR REMAINDER OF TRACK MODE ;FORMAT OR CHECK MODE ? 9% :BR IF CHECK #-260.,FMTDOPB+4 ;WORD COUNT FOR 1 SECTOR SOF SW ;INDICATE THAT A RETRY IS IN PROGRESS SOF SW 1% ;REFORMAT ERROR SECTOR ;RETRY IN PROGRESS ? ;BR IF NOT CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P1T 20-MAR-78 10:22 000002 07 001266 b b d b b b 001250 004300 001160 001250 001304 000002 b 3 1 20-MAR-78 10:25 PAGE 36 GET VALUE FOR SOFTWARE SWITCH REGISTER 001216 cmp BEQ 001216 005704 001216 001304 004300 005464 000003 001366 001250 9%: 10%: 11%: 174160 004076 005622 Y] PON) = b A V) - O b b b b b b d b b ad b b d b 022737 001403 005237 000607 123737 NNNNNNNNNNNNNN ~ b 004644 30A(1052) 12%: 004076 INC BR (MPB BEQ JSR CLR CLR JMP JSR #2,SOF SW 9% SOF SW 1% ;CLEAR RETRY COUNTER ;CLEAR ERROR DURING WRITE CHECK FLAG sFINISH CHECKING THE TRACK sCHECK FOR LOOP ON ERROR 11% RETRY 1% ;BR IF IT IS :COUNT THE RETRY ;DO THE WRITE CHECK AGAIN CLR SESCAPE BR JMP ; INCREMENT RETRY COUNT sREAD AGAIN SOF SW EFLG 1% PC,LOP.CK #3 RETRY CLR CLR BIT BEQ JMP JSR ;SEE IF LAST RETRY ;BR IF IT IS MAXSEC,FMTDPB+10 SEE IF LAST SECTOR ON THE TRACK 11% sBR IF IT IS PC,SCAWC sSETUP TO CHECK REMAINING SECTORS ON THE TRACK cMp BEQ INC JMP SEQ 0034 RETRY . EFLG #81T1,3SWR 12% WRTRK1 PC,TRKTST HDREAD WRTRK1 ;ERROR RETRY REACHED ? ;CLEAR THE ERROR RETURN ESCAPE ADDRESS ¢cCLEAR THE RETRY COUNTER ;CLEAR ERROR DURING WRITE CHECK FLAG ;LOOP ON CURRENT TRACK ? :BR IF NOT :START AGAIN ON THE SAME TRACK :GET UPDATED TRACK AND CYLINDER ADDRESSES sRETURN HERE IF DONE - DO QUICK CHECK OF ;CONTINUE WITH THE FORMAT ;THIS 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. 005037 004737 004737 013737 012737 012737 005037 013737 112737 012737 012706 004037 001262 005532 005732 001224 177774 025314 001224 000173 005056 001100 013164 HDREAD: 001246 001362 001364 001370 001360 001110 CLR ;CLEAR HEADER CHECK ERROR INDICATOR PC,SETTBL PC,SETHDR BEGCYL,CYLCK #-4 FMTOPB+4 #RBUF ,FMTOPB+6 FMTDPB+10 ;GO SET UP DRIVER TABLE ;GO SET UP HEADERS IN CORE sUSE °'BEGCYL' FOR FORMAT VERIFICATION ;SET UP WORD COUNT ;SET UP BUFFER ADRS ;CLEAR THE SECTOR & TRACK ADDRESS FIELD MOV JSR #STACK, SP RO,RPO4 ;LOAD STACK POINTER ;GO READ HEADER MOV MovBe MOV 1$: HEDERR JSR JSR MOV MoV MoV CLR BEGCYL ,FMTDPB+12 ;SETUP THE CYLINDER FIELD #RDHD ,FMTDOPB+2 ;SET UP READ HEADER & DATA COMMAND #.,SLPERR ;SETUP LOOP ON ERROR ADDRESS DISK CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 005074 005076 005100 005104 005106 005110 005116 005122 001356 000774 005737 001775 30A(1052) 001374 005172 005364 177577 005464 001222 FMTOPB BR TST BEQ B8PL MOV JSR ERROR ERROR ERROR ERROR ERROR BIT BEQ ERROR CLR ERROR JSR 001160 001374 3%: 025324 'A Y 001246 5%: 6%: 005230 10:25 J_ PAGE 37 3 SEQ 0035 GET VALUE FOR SOF TWARE SWITCH REGISTER 2s: 001160 005464 025314 20-MAR-78 CMP BEQ ERROR JSR CMP BNE JMP INC JSR INC BR 7%: .SBTTL AL AAS END OF AR ;ADRS OF PARAMETER TBL SWAIT IF QUEUE IS FULL sWAIT FOR COMMAND TO COMPLETE ;BRANCH IF NOT DONE sBR IF NOT ERROR 1% FMTDPB+16 2% 43 #5% ,SESCAPE ::ESCAPE TO 5% ON ERROR ?S.ERINDX ;SEE WHICH ERROR ;DRIVE OFFLINE 1" 12 cPERSISTENT DRIVE UNSAFE ERROR 14 :DRIVE UNSAFE ERROR sUNCORRECTABLE MASSBUS PARITY ERROR : SOF TWARE TIMEOUT 13 #2C<HCE>,FMTDPB+16 :1S ONLY ERROR A HEADER COMPARE ERROR ? ;BR IF YES ;CONTROLLER/DRIVE ERROR VERIFYING HEADERS sCLEAR THE ERROR ESCAPE ADDRESS cHEADER COMPARE ERROR VERIFYING HEADERS sCHECK FOR LOOP ON ERROR ;SEE IF CYL READ EQUALS CYL EXPECTED ;BR IF CYL CORRECT 33 21 SESCAPE 22 PC,LOP.CK RBUF ,BUFP 6% 23 sCYLINDER NOT CORRECT :CHECK FOR LOOP ON ERROR ;SEE IF LAST CYLINDER ;BR IF NOT FINISHED ;END OF FORMAT : INCREMENT CYLINDER ADDRESS BEING CHECKED sSET UP FOR NEXT CYL PC,LOP.CK ENDCYL,CYLCK 7% $EOP CYLCK PC ,UPDACY ;ADVANCE TO NEXT CYL # ;GO READ NEXT HEADER 52TOP8*12 PASS ROUTINE ARt ettt iat i itodiaddiiidisl ittt iR sadttd s*INCREMENT THE PASS NUMBER ($PASS) ;*]F THERES A MONITOR GO TO IT ;*IF THERE ISN'T JUMP TO DONE 005737 001403 104401 022114 104401 104401 013746 104405 104401 022141 022165 001112 005237 042737 005327 00000 003013 012737 005302 013700 SEOP: 001220 001167 001100 100000 000042 TST MODE TYPE BR 4% TYPE MOV $ERTTL, -(SP) BEQ 3s: 4%: TYPE TYPDS TYPE 001100 INC BIC DEC $EOPCT: .WORD BGT MOV $ENDCT: .WORD $EOPCT $GET4?2: MOV 3% JMFCMPT -MCCMPT . NUMERR . SCRLF ; "FORMAT' OR 'CHECK' MODE ? :BR IF ‘CHECK'® ; 'FORMAT COMPLETE' sFINISH THE END MESSAGE : 'CHECK COMPLETE' ;'TOTAL ERRORS DETECTED: ' ::SAVE SERTTL FOR TYPEOUT :éSOL;YPE°-DECIHAL ASCII WITH SIGN $PASS #100000,$PASS %PC)* ;: INCREMENT THE PASS NUMBER ;:DON'T ALLOW A NEG. NUMBER ;. LOOP? $D0AGN {PC)*,&(PC)* ;. YES ;;RESTORE COUNTER N6 RO ;.GET MONITOR ADDRESS CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P1 20-MAR-78 10:22 1795 30A(1052) b D wnd o d geERER282832 33 001405 000005 004710 000240 000240 000240 d b ed D 000137 005340 032777 173572 b b K PAGE 38 3 SEQ 0036 BEQ $DOAGN :;BRANCH IF NO MONITOR $ENDAD: JSR PC, (RO) ;:GO TO MONITOR JMP .WORD a(PC)+ DONE s sRETURN BNE JMP 1% MO ;BR IF SET ;ASK FOR NEXT DRIVE $DOAGN: 000001 10:25 END OF PASS ROUTINE RESET 003134 001100 003544 SRTNAD: NOP NOP NOP DONE : BIT 1%: MOV JMP ;;CLEAR THE WORLD ; :SAVE ROOM ;:FOR JACTN #5W0,aSWR JSEE IF SWR O SET #STACK,SP JRESET STACK POINTER [ 5 :00 THE FORMAT OR CHECK AGAIN NS W=D - O O~NO b o b b d b i d M :iQttttttt'ttttttttttttitttttttttttttttfiittttttt*titttttttitttit .SBTTL SUPPL SUBROUTINES . 1 3233323233232 233232032823232323322322322323223233332332333223422323232234822322382232822243423;: :THIS ROUTINE DETERMINES THE ERROR TYPE 010146 005001 033727 060006 001025 SRRERERR R b e b -— e b o nd cmd nd d ed e 00 00 00 00 0o 00 00 00 0o 00 b b 20-MAR-78 033727 010000 001020 033727 006000 001013 033727 ERINDX: MOV CLR BIT 001374 001374 001374 001374 1%: 2%: 3s: A ¥ 5%: 000002 ;STORE R1 R1 JCLEAR R1 FMTDOPB+16,(PC)+ ;CHECK ERROR TYPE LWORD BIT14!'BIT13!BIT2!'BIT1 .WORD BIT04 BNE BIT .WORD BNE BIT .WORD BNE BIT .WORD BNE BIT 001374 R1,=-(SP) BNE INC INC INC INC INC ASL ADD MOV RTS :DRIVE OFFLINE 5% FMTDPB+16,(PC)+ BIT12 43 FMTOPB+16,(PC)+ BIT11!BIT10 3s FMTOPB+16,(PC)+ BIT09!BIT08 2% FMTDOPB+16,(PC)+ ;BR IF OFFLINE ;CHECK ERROR TYPE :DRIVE PERSISTENTLY UNSAFE :BR IF UNSAFE ;CHECK ERROR TYPE ;UNCORRECTABLE MASSBUS PARITY ERROR ? ;BR IF PARITY ERROR ;CHECK ERROR TYPE ;SOF TWARE TIMEOUT ? :BR IF YES ;CHECK ERROR TYPE 1% R1 ;BR IF YES JINCREMENT THE RETURN INDEX R1 R1 R1 R1 R1 R1,2(SP) (SP)+,R1 PC ;DRIVE UNSAFE ERROR ? ; INCREMENT THE RETURN INDEX ; INCREMENT THE RETURN INDEX : INCREMENT THE RETURN INDEX ; INCREMENT THE RETURN INDEX ;DOUBLE THE INCREMENT ;DEVELOP THE RETURN ADDRESS JRESTORE R1 JRETURN JROUTINE TO CHECK FOR LOOP ON ERROR 001000 005500 173410 001160 173446 LOP.CK: BIT BEQ JMP 1%: ClLR #SW09,aSwR 1% aSLPERR $ESCAPE ;LOOP ON ERROR ? :BR IF NOT ;G0 TO THE LOOP ON ERROR ADDRESS ;CLEAR THE ERROR ESCAPE ADDRESS L 3 CZRJBCO, RPO4L/S5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 39 CZRJBC.P11 20-MAR-78 10:22 SUPPORT SUBROUTINES 1851 1852 1853 1854 1855 1856 }ggg 005504 005510 005512 005514 005522 005526 005530 033727 072002 001004 032737 001402 000137 000207 001374 004000 BIT LWORD 001322 005230 2%: 3% }gzg 005532 005540 005544 005552 005560 113737 105037 013737 012737 105037 001214 001361 001260 025324 001366 001356 1867 1868 1869 1870 005572 005600 005604 005612 013737 005037 013737 013737 001224 001374 001230 001232 001370 }g;} 005564 005620 113737 000207 001230 001362 001364 001367 MOV CLR MOV MOV RTS DRIVE ,FMTDPB FMTDPB+3 MIC,FMTDPB+4 #BUFP,FMTDPB+6 FMTDPB+10 BEGTRK,FMTDPB+11 :SET UP DRIVE # :CLEAR HIGH ORDER ADRS BITS :LOAD UP WORD COUNT ;LOAD UP CURRENT ADRS :SET SECTOR TO ZERO :;SET UP STARTING TRK ADRS BEGCYL ,FMTDPB+12 ;SET UP STARTING CYL FMTDPB+16 :CLEAR RPO4 STATUS BEGTRK,TRKCNT ;SET UP PARTIAL CYL TRACK COUNT TTRKS,TTRKSC :SET UP TOTAL TRACKS COUNTER PC ;RETURN FROM SETUP :IT IS ENTERED AFTER EVERY TRK OPERATION 005622 005626 005630 005636 005640 005644 005650 005654 005656 005662 005666 005672 005676 005702 005337 001425 022737 001407 005237 105237 004737 000410 005037 105037 005237 004737 062716 000207 001234 000022 001236 001236 001367 006042 001236 001367 001370 006012 000002 TRKTST: DEC BEQ CMP BEQ INC INCB JSR BR 1%: CLR CLRB INC JSR 2s: ADD 3s: RTS TTRKSC 33 #18.,TRKCNT 1% TRKCNT FMTDPB+11 PC,UPDATK 2% TRKCNT FMTDPB+11 FMTDPB+12 PC,UPDACY #2,(SP) PC :SEE IF LAST TRACK :BRANCH IF LAST TRACK ;1S THIS THE LAST TRACK IN THE CYLINDER ? :BRANCH IF SO :COUNT UP TRACK WITHIN CYLINDER ; INCREMENT TRACK NUMBER ;UPDATF TRACK ADDRESS IN BUFFER JEXIT ;CLEAR TRACK COUNT FOR NEXT CYLINDER :RESET TRACK ADDRESS TO 0 :UPDATE CYLINDER NUMBER :UPDATE CYLINDER NUMBER IN BUFFER :ADD TWO TO RETURN ADRS ;RETURN ;THIS ROUTINE SETS UP WC & BA FOR REMAINING SECTORS }gg% JAFTER A WRITE CHECK ERROR 005704 005712 005720 005724 005730 013737 062737 005237 005037 000207 001254 001010 001366 001216 1901 001362 001364 SCAWC: MOV ADD INC CLR RTS SAVWC,FMTDPB+4 #520.,FMTDPB+6 FMTDPB+10 SOF SW PC :;SET UP WC FOR REMAINING SECTORS ;SET UP BA FOR REMAINING SECTORS :ADVANCE TO NEXT SECTOR IN TBL :RESET RETRY COUNTER ;RETURN TO COMPLETE TRK FORMAT ;THIS ROUTINE SETS UP THE CYLINDER ADRS, FORMAT BIT, }38% 1904 1905 1906 ;'FATAL' ERROR BITS 2% ;BR IF NOT #WULE ,RP.REG+RPERT ;WRITE LOCK ERROR ? 3s :BR IF NOT SEOP :TERMINATE THE FORMAT PC :RETURN :THIS ROUTINE CONTROLS THE DISK ADDRESSING AND TOTAL TRK COUNT 1891 1894 1895 1896 1897 1898 MOVB 001234 }332 }ggg SETTBL: MOVB CLRB MOV MOV CLRB 001236 1873 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 ;CHECK FOR 'FATAL' ERROR BITI4'BITI3!'BIT12'BIT10!'BITO1 :THIS ROUTINE SETS UP THE INPUT TABLE FOR THE DRIVER ROUTINE 1861 1862 1863 1864 1865 1866 BNE 8IT BEQ JMP RTS FMTDPB+16,(PC)+ SEQ 0037 TRACK AND :SECTOR ADRS IN MEMORY WITH THE STARTING CYL = TRK INFORMATION 005732 005736 005742 013701 012700 013702 001266 0253¢4 001224 SETHDR: MOV MOV MOV MAXSEC ,R1 #BUFP,RO BEGCYL ,R2 JSET UP SECTOR COUNT :SET UP HEADER POINTER IN RO ;PUT STARTING CYL # IN R2 CZRJBCO, RPO4/S5/6 FMTR MACY11 CZRJBC.P11 20~MAR-78 10:22 3 VONOWVSWNN=O D od D o D oD D e D - b e b o b d e b o b V00OV OV VOV VOO0 b b 33 1907 005746 005752 005754 013703 000303 005737 001402 052702 010220 010320 005020 005010 062700 005203 005301 002367 000207 30A(1052) 20-MAR-78 10:25 SUPPORT SUBROUTINES M3 PAGE 40 SEQ 0038 001230 MOV BEGTRK,R3 ;PUT STARTING TRK # IN R3 001264 TST SEC20 ;SEE IF 20 OR 22 SECTOR MODE :BR_IF 20 SECTOR MODE sSET THE 22 SECTOR FORMAT BIT SWAB 010000 18: 001002 BEQ 8IS MOV MOV CLR CLR ADD INC DEC BGE RTS RS 1s #10000,R2 R2, (RO + R3, (RO)+ (RO)+ (RO) #514. RO R3 R 1% PC ;JUSTIFY TRACK ADRS sWRITE IN HEADER AREA OF CORE THE CYL ADRS ;WRITE IN HEADER AREA OF CORE THE TRK ADRS sCLR 1ST KEYWORD sCLR 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 013701 012700 005220 042710 062700 005301 002371 001266 025324 UPDACY: MOV MoV MAXSEC ,R1 #BUFP,RO ADD DEC 8GE #518. R0 R 1% 1$: 177400 001006 000207 INC BIC RTS (RO) + #177400, (RO) PC 001266 025324 UPDATK: MOV MOV TS7T 18: ADD ADD 000400 001010 DEC BGE RTS MAXSEC ,R1 #8UFP,RO (RO)+ #400, (RO) #520. RO R1 1% PC THE HEADER WORDS IN CORE sSET UP SECTOR COUNT :SET UP HEADER POINTER IN RO ;POINT HEADER POINTER TO TRK - SEC ADRS ; INDEX TRK ADRS ;SET UP FOR NEXT HEADER s COUNT SECTORS :E;??CH IF NOT LAST SECTOR JROUTINE TO CHECK FOR KWl1-L OR KW11-P CLOCKS 012737 005037 005777 013746 012776 062716 012736 012777 012777 000426 062706 012737 005777 013746 012776 062716 012736 006150 000006 173066 001202 000004 006234 000000 000002 000300 177777 000135 000004 006220 173020 001210 006234 000002 000300 173040 173030 000004 000000 ST.CLK: MOV CLR ST MOV MOV ADD MOV MOV MOV BR STCLK1: ADD MOV ST MOV MOV ADD MOV #STCLK1,@#ERRVEC :SET UP VECTOR FOR P (LK SFERRVEC+2 :NE\V' PSW asLKCSR ;CH. CK FOR KW11-P $LPVEC,~(SP) :VECTOR ADDRESS #CLOCK a(SP) #2,(SP) #PR6,A(SP)+ #-1,38LKCSB #135,3SLKCSR STCLK3 IN CORE ;SET UP SECTOR COUNT ;SET UP HEADER POINTER IN RO s INCREMENT FOR NEXT CYLINDER sRESET TRK ADRS TO O ;SET UP FOR NEXT HEADER s COUNT SECTORS :E;??CH IF NOT LAST SECTOR :THIS ROUTINE UPDATES THE TRACK ADRS OF 013701 012700 005720 062710 062700 005301 002372 000207 THE HEADER WORDS :SET UP KW11-P VECTOR ;POINT TO PSW :PSW - PRI 6 ;LOAD COUNTER BUFFER JSET CLK = CNT uP ¥4,SP sRESTORE THE STACK POINTER #STCLK2 ,@#ERRVEC : CHANGE ERROR VECTOR asLKS ;LOOK FOR KW11-L $LLVEC,-(SP) :KW11-L VECTOR ADDRESS #CLOCK .3(SP) ;SET UP KW11-L VECTOR #2,(SP) : INCREMENT VECTOR ADDRESS #PR6.D(SP)¢+ :PSW - PRI 6 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.PN 20~MAR-78 10:22 1963 1964 1965 1966 1967 1968 1969 1970 1971 006210 006216 006220 006224 006232 012777 000402 062706 012737 000207 000100 000004 000006 30A(1052) N 20-MAR-78 19:25 PAGE 41 SUPPORT SUBROUTINES 172770 000004 ggv STCLKTM: ADD STCLK,: :?g ;THIS CODE 006234 006240 006244 012746 004737 000002 000020 CLOCK: 016616 3 SEQ 0039 g}%?ig$LKS ;SET KW11-L INTERRUPT ENABLE #4,SP JRESTORE THE STACK POINTER :Q.GOERRVEC SRESTORE THE ERROR VECTOR SERVICES A CLOCK INTERRUPT EVERY 16MS MOV JSR RTI #16.,-(SP) PC,RPTMR sPUT MILLISECONDS ON THE STACK ;GO REPORT TIME sRETURN AND CONTINUE ;ROUTINE TO INTERCEPT 'CONTROL C' TYPED DURING PARAMETER ENTRY TIME 006246 006252 006256 006260 006262 001100 012310 OENTER: MOV 1%: TST BNE RESET 003100 JMP #STACK,SP TRNSWT 1% JINITIALIZE THE STACK JALL ACTIVITY STOPPED ? :BR _IF NOT MiB ;START AGAIN WITH DRIVE SELECTION ;CLEAR THE BUS JROUTINE TO TYPE THE PRESENT DISK ADDRESS. 006266 006272 006300 006304 006310 006314 177776 006246 022215 021025 001370 001300 TYPADR: 011620 021035 ;SET PROCESSOR TO PRIORITY O ;CHANGE °CONTROL C' RETURN ADDRESS ; 'PRESENT ADDRESS IS: ' :'C ;PUT THE CYLINDER ADDRESS ON THE STACK JSR PC,$SUPRS sTYPE TYPE CLR 001367 011620 011560 001167 006266 PSW #OENTER,CNTLC .ADDRIS .C FMTDPB+12,-(SP) TYPE 021027 mMove JSR JSR TYPE MOV 001300 ‘'CONTROL C' CLR MOV TYPE TYPE MOV JSR 011560 ENTERED BY TYPING RT1 PC,$5S82D .LINSP .1 =(SP) FMTDOPB+11,(SP) PC.,$5820 PC,$SUPRS SCRLF #TYPADR,CNTLC ;CONVERT IT TO DECIMAL IT s SPACES ' sCLEAR THE STACK ;PUT THE TRACK ADDRESS ON THE STACK sCONVERT IT TO DECIMAL sTYPE IT sCR-LF ;RESTORE ENTRANCE TO THIS ROUTINE ;RETURN :E:RCHETER ENTRY ROUTINE s : #ADR,R3 ;PARAMETER TABLE ADDRESS PARENT: MOV MOV 18: MoV BEQ R3,-(SP) #TABLE ,R3 (R3)+,3% 9% ;SAVE R3 ;PARAMETER TABLE ADDRESS ;ADDRESS OF PARAMETER NAME ;BR IF AT END OF TABLE 3$: .WORD O ;ADDRESS OF PARAMETER NAME TEXT MOV MOV (R3)+,R5 (RS) ,=(SP) H 001376 006404 021021 CAL MoV JSR TYPE MOV TYPDS TYPE ROLIN PC,PARENT (R3) ¢+ ,R2 . SLASH ;GET THE PARAMETERS ;TYPE THE PARAMETER NAME sMAXIMUM PARAMETER VALUE ;ADDRESS OF PARAMETER s CURRENT VALUE OF PARAMETER ;TYPE 0/ THE CURRENT VALUE OF ;READ THE KEYBOARD THE PARAMETER CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P1 20-MAR-78 10:22 012601 30A(1052) 20-MAR-78 10:25 SUPPORT SUBROUTINES MOV 006630 R5.CK.DIG 1% 9% 6% 5% 001376 MOV R2, (RS) 6%: TYPE SuUB ,BADENT #6,R3 B8R 1% 8%: 9% : BR 1% BR MoV BR MoV 1% R2. (RS) 9% #TABLE .R3 MoV (SP)+,R3 RTS JTHIS ROUTINE ;INPUT ASCII STRING ADDRESS ;CHECK THE DIGIT(S) ;CARRIAGE RETURN ONLY ENTERED JPERIOD ONLY ENTERED :TERMINATED WITH A *',"’ 7% 5¢%: 7%: SEQ 0040 :ILLEGAL INPUT ;TERMINATED WITH A CARRIAGE RETURN 6% 021566 000006 4 PAGE 42 (SP)+ ,R1 JSR 8 PC :TERMINATED WITH A ''."' ;MOVE NEW VALUE TO PARAMETER LOCATION ;GET MORE PARAMETERS ;'BAD ENTRY' ;DECREMENT THE TABLE POINTER ;TRY AGAIN ;NEW VALUE JEXIT ;RELOAD THE PARAMETER TABLE ADDRESS ;TRY AGAIN :RESTORE R3 sRETURN IS USED TO CHECK IF AN :eifil CHARACTER IS A DIGIT BETWEEN O AND 7. : : : ; . 000060 CK.0OCT: 000067 177770 1%: MOV #ADR,R1 JSR R5.CK.OCT RETURN1 RETURN? CMPB 8LO CMPB BH! MOVB BIC TST RTS ;ADDRESS OF ASCII CHARACTER ;CHECK THE CHARACTER ;CHARACTER IS NOT BETWEEN 0-7 JCHARACTER IS IN R2 AS A ;OCTAL DIGIT (R1),#°0 1% (R1),#'7 13 (R1),R2 #4C7.R2 (R5)+ RS :LESS THAN ZERO? ;YES == BRANCH ;GREATER THAN SEVEN? ;YES == BRANCH ;GET THE CHARACTER ;STRIP AWAY THE ASCII ;ADJUST FOR RETURN ;RETURN ;THIS ROUTINE IS USED TO CHECK AN ASCII CHARACTER :égELDETERHINE IF IT IS A DIGIT BETWEEN O AND 9. . N ; MOV #ADR,R1 JSR RS.CK.DEC RETURN1 ;ADDRESS OF ASCII CHARACTER ;CHECK THE CHARACTER ;NOT BETWEEN O AND 9 CK.DEC: CMPB BLO (R1),#'0 1% ;LESS THAN ZERO? :YES == BRANCH BHI MOVB BIC TST 1% (R1),R2 #'0,R2 (RS)+ ;YES == BRANCH ;GET THE CHARACTER ;STRIP AWAY THE ASCII ;ADJUST FOR RETURN . : 000060 000071 RETURNZ CMPB 000060 1%: RTS (R1).,#'9 RS :BETWEEN O AND 9 ;R2 = DIGIT :GREATER THAN NINE? JRETURN CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 105711 001417 121127 000054 121127 001407 004537 000410 004537 005725 005725 005725 005725 005725 005201 000056 006502 (R1) 3% (R1).#°, 2% SEQ 0041 BEQ 1% 2%: 3%: (R1).#°. JSR BR JSR RS,CK.DEC 4% RS,CK.OCT ;NO =-- BRANCH ;OCTAL ? TST TST (RS)+ (RS)+ INC 4%: :'"CARRIAGE RETURN'"? JYES == BRANCH ;" 'COMMA’ *? JYES == BRANCH ;' PERIOD'*? TST TST TST 1$: MOV RTS ;THIS ROUTINE (RS)+ (RS)+ (RS)+ R1 (RS) ,RS RS CHECKS AN ASCII ;YES -=- BRANCH JDIGIT'TM ;DIGIT BETWEEN 8-9 :DIGIT BETWEEN 0-7 ;PERIOD ; COMMA ;CARRIAGE RETURN ;MOVE POINTER TO NEXT CHARACTER JUNKNOWN CHARACTER ;RETURN STRING FOR LEGAL ..n.a_n_a_n_n_a_.;_a_ns ;CHARACTERS AND FORMS A DECIMAL VALUE BINARY NUMBER IN RZ. . CALL VOO NONSWN—=O Pihr ihrd S-Sl G i 9ihr iy i Sl C_4 PAGE 43 TSTB BEQ cMP8 BEQ CcMP8 006530 000205 i 10:25 SUPPORT SUBROUTINES CK.CHR: 011505 NN 20-MAR-78 ;THIS ROUTINE WILL CHECK AN ASCII CHARACTER TO ;DETERMINE WHAT [T [S. s CALL #ADR ,R1 MOV ;ADDRESS OF ASCII CHARACTER : RS,CK.CHR JSR s CHECK CHARACTER H RETURN ADR1 H sUNKNOWN CHARACTER RETURN ADRZ2 H :CARRIAGE RETURN * (R1)=ADR+1 RETURN ADR3 ;COMMA » (R1)=ADR+1 : : RETURN ADR4 ;PERIOD * (R1)=ADR+1 RETURN ADRS H ;OIGIT BETWEEN O AND 7. RETURN ADR6 H ;DIGIT BETWEEN 8 AND 9. ;R2 = DIGIT * (R1)=ADR+1 001413 21 30A(1052) ;. : ; : o~ MoV MOV ;"PERIOD'' ONLY ENTERED -- R2=0 RETURN ADR3 JSR : RETURN RETURN RETURN (K.DIG: MOV 006556 ADRZ2 RETURN RETURN : H ;ADDRESS OF ASCIZ STRING R5,CK.DIG ADR1 ; ; #ADR,R1 #NUM,R2 MOV Mov CLR CLR CLR JSR 6% 9% 6% ADR4 ADRS ADR6 R4, = (SP) R3,-(SP) R2,=(SP) R2 R3 R4 RS,CK.CHR ;MAX. MAGNITUDE OF INPUT NUMBER ;CHECK DIGITS ;"'CR'' ONLY ENTERED -- R2=0 ; ILLEGAL CHARACTER OR INPUT TOO LARGE =-- R2=? ;U'CR'" == R2 = NUMBER ;''COMMA'’ -~ R2 = NUMBER ;"PERIOD'* == R2 = NUMBER :SAVE R4 ;SAVE R3 ;SAVE THE MAX. SIZE ON THE STACK JSTART WITH O :CHECK ONE CHARACTER :ILLEGAL CHARACTER :CARRIAGE RETURN [ ' Pl . .Ol LN} 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 006660 006662 006664 006670 006672 006674 006676 006700 006702 006704 006710 006712 006714 006716 006720 006722 006724 006726 006730 006732 006734 006736 006740 006742 006744 006746 006750 006752 006754 006756 006760 006762 006764 000004 1%: 2%: SEQ 0042 :DIGIT 0=7 :DIGIT 8-9 #4 RS R3 R3,-(SP) R3 R3 (SP)+,R3 R2,R3 R5.CK.CHR ASL MOV 006556 ;STEP RETURN POINTER PAST ''CR'' & "PERIOD'' RETURNS ;INPUT NUMBER *2 ;SAVE *2 ;v ;*8 ;(22)+(x8) = x10 ;UPDATE THE INPUT NUMBER ;CHECK ONE CHARACTER JILLEGAL CHARACTER ; CARRIAGE RETURN :DIGIT 0=7 :DIGIT 8-9 (R1) 8% ;DOES A "'CR'' FOLLOW THE ‘PERIOD'’ ;BR IF NOT (R4G)+ : INCREMENT THE RETURN (R4)+ ; INCREMENT (R4)+ R3, (SP) 9% 8% (RS)+ (RS)+ R4 RS R3,R2 (SP)+ 2166 2167 2168 2169 2170 2171 2172 sRESTORE R& (RS) ,RS RS ;GET RETURN ADDRESS ;RETURN .SBTTL MACRO ROUTINES .SBTTL ERROR HANDLER ROUTINE P T T T T RETURN ;RESTORE R3 (SP)+ R4 RTS THE ; INCREMENT THE RETURN ;CHECK THE MAGNITUDE OF THE NUMBER ;BR IF ENTERED NUMBER TOO LARGE ;BYPASS INCREMENT ; INCREMENT RETURN PAST INVALID RETURN s INCREMENT RETURN ;SETUP RETURN POINTER SENTERED VALUE ;CLEAN MAX. SIZE OFF OF STACK (SP)+,R3 2165 T T e I e Y ;*THIS ROUTINE WILL INCREMENT THE ERROR FLAG AND THE ERROR COUNT, ;*SAVE THE ERROR ITEM NUMBER AND THE ADDRESS OF THE ERROR CALL ;*AND GO TO TYPERR ON ERROR 2173 2174 2175 2176 2177 2178 2179 ;*THE SWITCH OPTIONS PROVIDED BY ;*SW15=1 2180 2181 2182 2183 2184 2185 2186 18 1% ADD 4 ;Y 006766 006770 006774 007000 104407 010137 010337 013737 $ERROR: 001274 001276 001370 001270 HALT ON ERROR THIS ROUTINE ARE: INHIBIT ERROR TYPEOUTS BELL ON ERROR LOOP ON ERROR ERROR CKSWR MOV MoV MoV N ; ;ERROR=EMT AND N=ERROR ITEM NUMBER ;s JEST FOR CHANGE IN SOFT-SWR R1,DDRIVE ;DRIVE ADDRESS IF DRIVE ERROR CALL R3,ATIN SATTENTION REGISTER CONTENTS FMTDPB+12,DS.CYL s CURRENT CYLINDER ADDRESS (Y] D CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 44 CZRJBC.PN SUPPORT SUBROUTINES 20~MAR-78 10:22 2187 007006 007014 007020 007022 007026 007032 007036 113737 005737 001406 013746 162716 013637 105237 001775 013777 032777 001402 104401 005237 011637 162737 117737 032777 001004 004737 001272 MovB TST BEQ 000002 001124 001103 001102 002000 001162 001112 001116 000002 172006 020000 007174 001167 005777 172002 032777 001402 013716 005737 001402 013716 001000 001110 001160 001160 000002 7%: 172070 172060 MOV suB MoV INCB BEQ MOV BIT BtQ 1%: 001116 001114 172020 20%: 2%: 171766 X 4 E 10:25 PAGE 45 ERROR HANDLER ROUTINE 20-MAR-78 001312 104401 100002 000000 104407 007172 007172 001367 001312 30A(1052) 3%: 4%: 5%: TYPE SEQ 0043 FMTDPB+11,DS.TRK ,REQUESTED TRACK ADDRESS RP . REG+RPBA sNON-ZERO BUFFER ADDRESS ? ’$ :BR IF NO BUFFER ADDRESS kP .REG+RPBA,-(SP) ;BUFFER ADDRESS #2,(SP) ;DECREMENT THE ADDRESS a(SP)+ ,$GODAT ;GET THE BUFFER WORD WHICH DIDN'T COMPARE LSBELL ;:RING BELL SERFLG ;:;SET THE ERROR FLAG 7% ;;DON'T LET THE FLAG GO TO ZERO STSTNM, aDISPLAY ;;DISPLAY TEST NUMBER AND ERROR FLAG #BIT10,aSWR ;;BELL ON ERROR? 1% ;:NO - SKIP INC MOV SuB MovB BIT BNE JSR TYPE SERTTL (SP) ,$ERRP( #2.,8ERRPC @SERRPC ,SITEMB #BIT13,3SWR 20% TST 8PL HALT CKSWR aSWR ;sHALT ON ERROR #BIT09,aSWR 4% $LPERR, (SP) $ESCAPE ;:HALT ON ERROR! ;2 TESY FOR CHANGE IN SOFT-SWR ;:LO0P ON ERROR SWITCH SET? ;:BR IF NO ;;FUDGE RETURN FOR LOOPING ;;CHECK FOR AN ESCAPE ADDRESS $ESCAPE, (SP) ;;FUDGE RETURN ADDRESS FOR ESCAPE BIT BEQ MOV TST BEQ MOV PC,TYPERR LOCRLF 3s 5% RT1 ;;COUNT THE NUMBER OF ERRORS ;;GET ADDRESS OF ERROR INSTRUCTION ;;STRIP AND SAVE THE ERROR ITEM CODE ;:SKIP TYPEOUT IF SET ;:SKIP TYPEOUTS ;G0 TO USER ERROR ROUTINE ;:SKIP IF CONTINUE ;:BR IF NONE :;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. 007174 007176 007200 007204 007206 007210 007212 007214 007220 007224 007226 007232 007234 007236 007242 007244 TYPERR: 001114 001630 007234 1%: 001167 007252 001167 2s: 3%: SAVREG CLR Move DEC ASL ASL ASL ADD MOV BEQ TYPE TYPE . WORD MoV RO RO #SERRTB,RO (RO)+,2% TYPE 8EQ RO $1TEMB,RO 28 :SAVE RO-R5 ;CLEAR RO FOR ERROR NUMBER ;ERROR NUMBER ;FORM INDEX FOR ERROR TABLE ;FORM ADDRESS 3% .SCRLF ;GET ERROR MESSAGE (EM) POINTER ;BRANCH IF THERE ISN'T ONE :"'CARRIAGE RETURN - LINE FEED 0 ;"EM'’ POINTER GOES HERE .SCRLF ; CARRIAGE RETURN-LINE FEED (RO)+,4% 5% ;PICK UP DATA HEADER ;BRANCH [F NONE (DH) POINTER [gn CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P1 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.PN 20~MAR-78 10:22 2243 2244 2245 2246 2247 2248 007250 104401 000000 012001 001460 005005 012000 012002 00145 005105 104401 112003 30A(1052) F Y A 5%: 112004 006004 103403 013146 10%: 11%: 104402 000402 12%: 013146 104405 005303 001403 104401 000764 005302 003431 104401 005760 001404 005105 001002 104401 012037 104401 000000 005710 001003 062700 000754 104401 005705 001332 104401 000727 104413 000207 TYPE . WORD MoV 8EQ CLR 001167 13%: 021035 14%: 001167 000002 021035 007366 4 20-MAR-78 10:25 PAGE 46 ERROR HANDLER ROUTINE 15%: 16%: 000004 001167 21$: 021035 17%: MOV MOV BEQ COM TYPE MovB mMovs ROR 8CS MOV TYPOC BR Mov TYPDS DEC 8EQ TYPE BR DEC BLE TYPE TST BEQ COM BNE TYPE MOV TYPE .WORD TST BNE ADD BR TYPE TST BNE TYPE 0 (RO)+,R1 20% RS (RO)+,RO (RO)+,R2 17% RS LSCRLF (RO)+,R3 (RO)+,R4 R4 12% a(R1)+,-(SP) 13% a(R1)+,-(SP) R3 14% LINSP 11% R2 20% . SCRLF 2(RO) (RO)+,169% .SCRLF .SBTTL TYPE ROUTINE R LRSS RTS R PC SRRttt ;AND HOW TO TYPE THEM ;OCTAL OR DECIMAL? ;DECIMAL ~-BRANCH ::SAVE a(R1)+ FOR TYPEOUT ;.60 TYPE--OCTAL ASCII(CALL DIGITS) ;:SAVE a(R1)+ FOR TYPEOUT ;.60 TYPE--DECIMAL ASCII WITH SIGN ;MORE NUMBERS TO TYPE? :NO-~-BRANCH :YES--TYPE SEPERATORS .LOOP ;MORE DH'S? s NO--BRANCH JONLY A 'DH' IN THIS REQUEST ? :BR IF YES = BYPASS THE INDENT ; INDENT? s NO=-BRANCH s YES~--TYPE SPACES ;GET NEXT DH sAND TYPE IT ;TYPE A 'DT' 2 ;BR .F A 'DT’ RS 10% LINSP 108 20%: ;PICKUP DATA TABLE (DT) POINTER ;BRANCH IF NONE sSET INDENT SWITCH ;DATA FORMAT (DF) POINTER ;NUMBER OF DH'S TO TYPE sBRANCH IF DH NUMBER IS O sNO INDENT ;CARRIAGE RETURN-LINE FEED ;NUMBER OF DATA WORDS TO TYPE :DH POINTER GOES HERE 0 (RO) B8R RESREG ;"DH'' POINTER GOES HERE sYES--START A NEW LINE 15% RS 15% LINSP SEQ 0044 iRt ; INCREMENT THE °‘DF' POINTER ;SEE IF END OF °'DF' BLOCK ;CARRIAGE RETURN-LINE FEED s INDENT? ¢ NO--BRANCH :YES=-TYPE SPACES ;LOOP ;RESTORE RO-R5 sRETURN Riti ottt tiatiitisddi sttt liss sl ds) ;*ROUTINE TO TYPE ASCIZ MESSAGE. MESSAGE MUST TERMINATE WITH A O BYTE. ;*THE ROUTINE WILL INSERT A NUMBER Of NULL CHARACTERS AFTER A LINE FEED. $NULL CONTAI NS THE CHARACTER TO BE USED AS THE FILLER CHARACTER. ;*NOTE1: ;*NOTEZ2: :*NOTE3: . * $FILLS CONTAINS THE NUMBER OF FILLER CHARACTERS REQUIRED. $FILLC CONTAINS THE CHARACTER TO FILL AFTER. 2299 2300 23N 2302 2303 2304 2305 2306 2307 2308 2309 2310 23N 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 30A(1052) 20-MAR-78 TYPE ROUTINE 10:25 . *CALL: ;*1) USING A TRAP I ;*0OR o o 007424 007430 007432 007434 007436 007440 007444 007446 007450 007452 007454 007460 007462 007466 007470 007474 007476 007500 007502 007504 007510 105737 100002 000000 000407 010046 017600 112046 001005 005726 007530 007534 007536 007542 007546 1%: 000002 2%: ; MESADR IS FIRST ADDRESS OF AN ASCIZ STRING $TPFLG 1% ;:1S THERE A TERMINAL? ;:BR IF YES 3% #HT, (SP) ; sLEAVE ;:SAVE RO ;:GET ADDRESS OF ASCIZ STRING ;:PUSH CHARACTER TO BE TYPED ONTO STACK ::BR IF IT ISN'T THE TERMINATOR 1F TERMINATOR POP IT OFF THE STACK ;o :;RESTORE RO ::ADJUST RETURN PC : sRETURN ; :BRANCH IF <HT> #CRLF, (SP) : :BRANCH IF NOT <CRLF> (SP)+ ::POP JSR CmMP8 SCHARCNT $ PC,S$TYPEC $FILLC,(SP)+ [, [01Y) $NULL ,-(SP) ;s CLEAR CHARACTER COUNT «:GET NEXT CHARACTER ::G0 TYPE THIS CHARACTER 2:IS IT TIME FOR FILLER CHARS.? ::IF 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:60 TYPE A NULL ;:00 NOT COUNT AS A COUNT . .LOOP TYPE MESADR TSTB BPL HALT B8R MOV MOV MOVB BNE TST 000002 MOV ADD 000011 A ¥ CMPB BEQ CMP8 BNE 007574 5%: 6%: 001156 013746 001154 105366 000001 RTI TST TYPE SCRLF 007640 7%: 007574 007640 INSTRUCTION SEQ 0045 +MESADR TYPE 60%: 3% 000200 007512 007516 007522 007524 001157 G_ 4 PAGE 47 CLRB BR BNE DECB BLT JSR DECB BR RO,=(SP) a2(SF) RO (RO)+,~(SP) 4% (SP)+ (SP)+,RO #2,(SP) 8% 5% 2% 1(SP) 6% PC,$TYPEC SCHARCNT 7% ;sHALT HERE ;:TYPE ]IF NO TERMINAL <CR><LF> EQUIV A CR AND LF ;HORIZONTAL TAB PROCESSOR 007550 007554 007560 007566 007570 007572 007574 000040 007574 000007 007602 007610 007616 007620 007624 007626 000002 000015 8%: 007640 171350 171342 000002 007640 000012 000002 9% : MOVB JSR BITB BNE TST BR $TYPEC: TS18 B8PL MOVB CMPB BNE CLRB B8R 1%: CMPB #' ,(SP) PC,STYPEC #7 ,8$CHARCNT ;;REPLACE TAB WITH SPACE (SP)+ ;;POP SPACE OFF a$TPS STYPEC ::WAIT UNTIL PRINTER 9% 2% 2(SP) ,a$TPB #CR,2(SP) 19 $CHARCNT $TYPEX #LF ,2(SP) ;2 TYPE A SPACE ;;BRANCH IF NOT AT ;:TAB STOP STACK ;sGET NEXT CHARACTER IS READY -:LOAD CHAR TO BE TYPED INTO DATA REG. *'1S CHARACTER A CARRIAGE RETURN? *'BRANCH IF NO ::Ei??-CLEAR CHARACTER COUNT *'IS CHARACTER A LINE FEED? O CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC PN 20-MAR-78 10:22 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 23N 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 007634 007636 007640 007642 30A(1052) 20-MAR-78 TYPE ROUTINE 001402 10:25 8EQ INCB 105227 000000 $SCHARCNT: .WORD 000207 $TYPEX: RTS .SBTTL H PAGE 48 &4 $TYPEX (PC)+ : ;BRANCH IF YES ;- COUNT THE CHARACTER O ; ; CHARACTER COUNT STORAGE PC BINARY TO OCTAL SEQ 2046 (ASCII) AND TYPE _';tttttttttttttttttttttttttt'ttttttttttttttttttttttt'ttttttittttt J*THIS ROUTINE IS USED TO CHANGE A 16-BIT BINARY NUMBER TO A 6-DIGIT ;*0OCTAL (ASCII) NUMBER AND TYPE IT. :*g;vfos---ENTER HERE TO SETUP SUPPRESS ZEROS AND NUMBER OF DIGITS TO TYPE s M *CALL: I % MOV NUM - (SP) ; :NUMBER TO BE TYPED .BYTE .BYTE N M ;:N=1 TO 6 FOR NUMBER OF DIGITS TO TYPE ;:M=1 0RO ::1=TYPE LEADING ZEROS TYPOS o% 4 * * i ;;CALL FOR TYPEOUT ;;0=SUPPRESS LEADING ZEROS ;*$TYPON----ENTER HERE TO TYPE OUT WITH THE SAME PARAMETERS AS ;*$TYPOS OR $TYPOC s*CALL: i S MOV TYPON 1 NUM,-(SP) ;:NUMBER TO BE THE LAST TYPED ;:CALL FOR TYPEOUT :'%;YPOC---ENTER HERE FOR TYPEOUT OF A 16 BIT NUMBER . b i 007644 007650 007656 007662 007670 007676 007704 007712 007714 007716 007720 007724 007726 007732 007736 007742 007746 007750 007752 007754 007756 007760 007762 007764 000000 000001 010071 010067 000001 000006 000005 010067 010071 010066 $TYPOS: MOV NUM,-(SP) 2 :NUMBER TO BE MOV MOVB a(SP) ,-(SP) 1(SP) ,$0FILL :;PICKUP THE MODE ;;LOAD ZERO FILL SWITCH TYPOC MOVB ADD 000002 010071 *CALL: B8R $TYPOC: MOVB MOVB $TYPON: MOVB MOV MOV MOV nggB 000006 010070 010067 000012 ADD MOVB 1%: 2%: 3s: MOVB MOV CLR ROL BR ROL ROL ROL MOV ROL (SP)+ ,SOMODE+1 #2,(SP) $TYPON ;;CALL TYPED FOR TYPEOQUT ;;NUMBER OF DIGITS TO TYPE ; :ADJUST RETURN ADDRESS #1,80FILL #6, SOMODE +1 #5,80CNT R3,-(SP) R4 ,-(SP) RS ,-(SP) §2H005+1.R4 ;J:SET THE ;:SET FOR ;sSET THE :;SAVE R3 ;:SAVE R4 :sSAVE RS ;.;GET THE #6,R4 R4, $OMODE SOFILL R4 12(SP) RS R3 RS 3% R5 RS RS RS,R3 J:SUBTRACT IT FOR MAX, ;:SAVE IT FOR USE R3 ZERO FILL SWITCH SIX(6) DIGITS ITERATION COUNT NUMBER OF DIGITS TO TYPE ALLOWED ;.GET THE ZERO FILL SWITCH ;:PICKUP THE INPUT NUMBER ;. CLEAR THE OUTPUT WORD :;ROTATE MSB INTO '‘C'' ;.GO DO MSB ;:FORM THIS DIGIT ;.GET LSB OF THIS DIGIT Y CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 4 I CZRJBCO, RPO4/S5/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 2611 2412 2613 2614 2415 2416 2617 24618 2419 24620 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 Szgg 007766 007772 007774 010000 010002 010004 010006 010010 010014 010020 010024 010030 010034 010036 010040 010042 010044 010046 010050 010052 010060 010062 010064 010065 010066 010067 010070 105337 100016 042703 001002 005704 001403 005204 052703 052703 110337 104401 105337 003347 002402 005204 000744 012605 012604 012603 016666 012616 000002 010070 DECB 177770 4%: 000060 000040 010064 010064 010066 5%: M ¥ 6%: 000002 000004 000 8$%: 000 000 000 $OCNT: $OFILL: SOMODE: 000000 $OMODE :;TYPE THIS DIGIT? 2% 6% R4 2% (SP)+,RS (SP)+,R4 (SP)+,R3 2(SP) ,A(SP) (SP)+,(SP) ::BR IF MORE TO DO ::BR IF DONE ::INSURE LAST DIGIT ISN'T A BLANK ::GO DO THE LAST DIGIT : ;RESTORE RS : :RESTORE R4 :;RESTORE R3 ::SET THE STACK FOR RETURNING BPL BIC BNE TST BEQ INC BIS BIS MOVB TYPE DECB 7% #177770.R3 48 R4 b 3 R4 #'0,R3 # ,R3 R3,8% ,8% $OCNT .BYTE 0 .WORD O BGY BLT INC BR MOV MOV MOV MOV MOV RTI .BYTE .BYTE .BYTE SEQ 0047 ::BR IF NO :;GET RID OF JUNK ::TEST FOR O : ;SUPPRESS THIS 07 ::BR IF YES ::DON'T SUPPRESS ANYMORE 0°'S ::;MAKE THIS DIGIT ASCII ::MAKE ASCII IF NOT ALREADY :;SAVE FOR TYPING ::GO TYPE THIS DIGIT ::COUNT BY 1 : :RETURN ::STORAGE FOR ASCII DIGIT 0 0 O :: TERMINATOR FOR TYPE ROUTINE :;OCTAL DIGIT COUNTER ::27ERO FILL SWITCH : :NUMBER OF DIGITS TO TYPE 3223 .SBTTL 2441 RN 2642 2643 2644 2445 2446 2647 :*THIS ROUTINE IS USED TO CHANGE A 16-BIT BINARY NUMBER TO A S5-DIGIT :*SIGNED DECIMAL (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. s*CALL: gzgg B 24648 i* 2451 2452 2453 2654 2455 2456 010072 010072 0100746 010076 010100 010102 010046 010146 010246 010346 010546 2458 2459 2460 2661 010110 010114 010116 010120 016605 100004 005405 112766 2457 2662 26463 2664 2465 2466 010104 010126 010130 010134 010140 010142 012746 005000 012703 112723 005002 016001 $TYPDS: 020200 010306 000040 010276 R R 000001 1%: 2%: AN AR R A AR R AN AR R AR AR AR RN RN R AR R AN R RN MOV NUM, - (SP) ::PUT THE BINARY NUMBER ON THE STACK MOV MOV MOV MOV MOV RO,-(SP) R1,-(SP) R2,~(SP) R3,-(SP) RS,-(SP) MOV BPL NEG MOVB 20(SP) ,RS 1% RS #'-,1(SP) ::PUSH RO ON STACK ::PUSH R1 ON STACK :;PUSH R2 ON STACK :;PUSH R3 ON STACK ::PUSH RS ON STACK ::SET BLANK SWITCH AND SIGN ::GET THE INPUT NUMBER ;:BR IF INPUT IS POS. ;;MAKE THE BINARY NUMBER POS. ::MAKE THE ASCII NUMBER NEG. :;ZERO THE CONSTANTS INDEX :;SETUP THE OUTPUT POINTER ::SET THE FIRST CHARACTER TO A BLANK ;:CLEAR THE BCD NUMBER ;.GET THE CONSTANT TYPDS MOV 000020 000055 CONVERT BINARY TO DECIMAL AND TYPE ROUTINE CLR MOV MOVB CLR MOV #20200,-(SP) RO #$DBLK ,R3 #' ,(R3+ R2 $OTBL (RO) ,R1 ;:G0 TO THE ROUTINE 26467 2468 2469 2470 2671 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 <’'85 010146 010150 010152 010154 010156 010160 010162 010164 010166 010170 010172 010174 010202 010206 010212 010214 010216 010222 010224 160105 002402 005202 000774 060105 005702 001002 105716 100407 106316 103003 116663 052702 052702 110223 005720 020027 002746 003002 30A(1052) J 177777 Sus BLT égc R1,R5 4% g% ;:FORM THIS BCD DIGIT ;:BR IF DONE ;:;INCREASE THE BCD DIGIT BY 1 4%: ADD TST BNE 1STB R1.RS R2 5% (SP) ::ADD BACK THE CONSTANT ;;CHECK IF BCD DIGIT=0 ;sFALL THROUGH IF O ;:STILL DOING LEADING 0°'S? ASLB 8CC Mcve BIS BIS MOVB (SP) 6% 1(SP) ,-1(R3) #'0,R2 * _R2 R2.(R3)+ . :MSD? ;:BR IF NO ;:YES==SET THE SIGN J:MAKE The BID DIGIT ASCII J:MAKE IT A SPACE IF NOT ALREADY A DIGIT ;:PUT THIS CHARACTER IN THE OUTPUT BUFFER CMP RO,.#10 B8MI 6%: 7%: TST 000010 8%: 177776 BR 6% 8PL MOVB 9% <1(SP) ,=2(R3) MOV (SP)+.,R3 CLRB MOV MoV MOV 010306 000002 MOV TYPE MoV 000004 $DTBL: $OBLK: LSBTTL A 2511 2512 2513 2514 010316 010320 010322 010324 000000 000000 000000 00000 S MoV RTI 10000. 1000. 100. 10 .BLKW RS5,R2 (SP)+ (R3) (SP)+ RS (SP)+ _R2 (SP)+,R1 (SP)+,R0O . $DBLK 2(SP) ,4(SP) (SP)+,(SP) ::BR IF YES 22 JUST DIICREMENTING ;s CHECK Tr€ TABLE INDEX ::GO DO THE NEXT DIGIT ::;G0 TO EXIT ::GET THE LSD ::G0 CHANGE T0O ASCII ;:WAS THE LSC THE FIRST NON-ZERO? ;:BR IF NO ::YES=-=SET THE SIGN FOR TYPING ;:SET THE TERMINATOR ;;POP STACK INTO RS :;POP STACK INTO R3 ::POP STACK INTO R2 ::;POP STACK INTO R1 ::POP STACK INTO RO ;sNOW TYPE THE NUMBER :;ADJUST THE STACK ;:RETURN TO USER & TTY INPUT ROUTINE AALAAARRAR SRSttt .ENABL LSB $TKCNT: .WORD $TKQIN: .WORD $TKQOUT: .WORD $TKQSRT: .BLkB $TKQEND=. .EVEN s*TK (RO)+ g 3 8% TST8B 9%: 7% BLT BGT MOV 177777 SEQ 0048 3% 5%: 000001 000060 000040 4 20-MAR-78 10:25 PAGE 50 CONVERT BINARY TO DECIMAL AND TYPE ROUTINE O O O 7 INITIALIZE ROUTINE Rttt ittt ittt it ittt ldd ; :NUMBER OF ITEMS IN QUEUE ;s INPUT POINTER ;;OUTPUT POINTER ;. TTY KEYBOARD QUEUE s*THIS ROUTINE WILL INITIALIZE THE TTY KEYBOARD INPUT QUEUE ;*SETUP THE INTERRUPT VECTOR AND TURN ON THE KEYBOARD INTERRUPT S#CALL: OO CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 257 2572 2573 2574 2575 2576 2577 2578 30A(1052) 20-MAR-78 * * 010334 010340 010346 010354 010362 010370 010374 010402 005037 012737 013737 012737 012737 005777 012777 000207 010316 010324 010320 010404 000200 170552 000100 010320 010322 000060 000062 10:25 TTY INPUT ROUTINE $TKINT: 170542 K PAGE 51 4 SEQ 0049 JSR PC,STKINT CLR $TKCNT ;:CLEAR COUNT OF ITEMS IN QUEUE #$TKQSRT,S$TKQIN ;:MOVE THE STARTING ADDRESS OF THE RETURN MOV MOV MOV MOV TST MOV RTS $TKQIN, $TKQOUT ;;QUEUE INTO THE INPUT & OUTPUT POINTERS. a$TkB #100,3$TKS ;sCLEAR DONE FLAG ;ENABLE TTY KEYBOARD INTERRUPT J:RETURN TO CALLER #$TKSRV ,a#TKVEC ;;INITIALIZE THE KEYBOARD VECTOR #200,a#TKVEC+2 ;:"BR' LEVEL & PC ;*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*1F THE CHARACTER IS A ‘'CONTROL-C'® (“C) STKINT IS CALLED AND ;*UPON RETURN EXIT IS MADE TO THE ''CONTROL~C'' RESTART ADDRESS (QCNTLC) 010404 010410 010414 010420 010422 010426 010432 010434 010440 010444 010446 010454 010456 010456 010464 010466 010472 010474 117746 042716 021627 001007 104401 004737 170536 177600 000003 011517 010334 170640 000007 001140 000007 010316 010520 010524 010530 010534 010536 010544 170422 177600 010560 010564 010566 2%: 001162 000023 010546 010552 010556 1%: 000176 010476 010502 010504 010510 01051¢ 010516 $TKSRV: 3% 170426 31s: 006021 010316 000140 000175 000040 a$TKB,~(SP) #+C177,(SP) (SP) .43 1% CMP BNE #7 ,$TKCNT 3% BR 5% (SP) ,#23 32% asTKS + (SP) TYPE TST 1704634 000100 MOvVB BIC cMP BNE TYPE JSR TST JMP CMP BNE CMP BEQ 170400 32%: CMP BNE CLR TST TSTB 8PL MOovB BIC CMP BNE MoV RTI INC CMP BLT CMP BGT BIC SCNTLC PC,$TKINT (SP)+ aCNTLC . #7 (SP) 2% #SWREG, SWR 6% . SBELL (SP)+ asTKS 318 asTKB, - (SP) #°C177,(SP) (SP)+,#21 318 #100,387TKS $TKCNT (SP) ,#140 4% (SP) ,M75 4% #40, (SP) ;:PICKUP THE CHARACTER ;:STRIP THE JUNK ;21S IT A CONTROL C? : ;BRANCH IF NO ;s TYPE A CONTROL-C (~C) ;3 INIT THE KEYBOAPD ;:CLEAN UP STACK ;;CONTROL C RESTART ;1S IT A CONTROL G? 2 ;BRANCH [F NO :: 1S SOFT-SWR SELECTED? ;:G0 TO SWk CHANGE ::1S THE QUEUE FuLL? ::BRANCH IF NO ::RING THE TTY BELL ::EkE?N CHARACTER OFF OF STACK 2:IS IT A CONTROL=-S? :;BRANCH If NO ;:DISABLE TTY KEYBOARD INTERRUPTS :;CLEAN CHAR OFF STACK JiWAIT FOR A CHAR ;:LO0P UNTIL ITS THERE ;:GET THE CHARACTER :sMAKE IT 7-BIT ASCII ;:1S IT A CONTROL-Q? J:BRANCH IF NO :;REENABLE TTY KEYBOARD INTERRUPTS : ;RCTURN : ;COUNT THIS CHARACTER ;IS 1T UPPER CASE? : ;BRANCH IF YES :3IS IT A SPECIAL CHAR? :;BRANCH IF YES :;MAKE IT UPPER CASE 2579 2580 2581 2582 010572 010576 010602 010610 010612 010620 112677 30A(1052) 177522 010320 010320 010333 010324 010320 20-MAR-78 10:25 TTY INPUT ROUTINE 48: 5¢%: MOVB INC CMP BNE MOV RTI L 4 PAGE 52 (SP)+,a$TKQIN $TKQIN $TKQIN,#STKQEND S #STKQSRT,$TKQIN SEQ 0050 ;;AND PUT IT IN QUEUE 1:UPDATE THE POINTER ::GO OFF THE END? ::BRANCH IF NO ;;RESET THE POINTER ; ;RETURN : :tttttitttttt'tttt'titt'tt"tt"t"'tttttt*tttttttttttttttt*ittt 010622 010630 010632 010636 010640 010644 010650 010654 022737 001124 105777 100121 117746 042716 021627 001300 000176 001140 1 %SOF TWARE SWITCH REGISTER CHANGE ROUTINE. S«ROUTINE IS ENTERED FROM THE TRAP HANDLER, AND WILL S«SERVICE THE TEST FOR CHANGE IN SOFTWARE SWITCH REGISTER TRAP S#CALL WHEN OPERATING IN TTY INTERRUPT MODE. $CKSWR: 170306 CMP BNE #SWRES, SWR 158 S:1S THE SOFT-SWR SELECTED SSEXIT IF NOT BPL MOVB 15% a$TkB,-(SP) SUIF NOT, EXIT SIYES TSTB 170302 177600 000007 BIC CMP BNE a$TKS #5C177.,(SP) (SP) ., #7 2s SIS A CHAR WAITING? SIMAKE IT 7-BIT ASCII 231S IT A CONTROL-G? S3IF NOT, PUT IT IN THE TTY QUEUE SSAND EXIT " .'t't'tttttt"'tttt'ttitii'ttQttfit'tttt't'.'tt'ttttttttiitttttttt 123727 001674 005726 004737 005077 112737 001134 6$: 170244 000001 011531 011536 000176 010740 105777 100375 170204 010742 010746 117746 042716 170200 177600 010752 010756 010760 010764 010770 010776 011000 011006 021627 001015 000003 001135 $AUTOB,#1 2s ;SARE WE RUNNING IN AUTO-MODE? ::BRANCH IF YES JSR PC,STKINT SIFLUSH THE TTY INPUT QUEUE 78: 000001 000100 170136 8s: STACK TYPE TYPE MOV LSCNTLG " $MSWR SWREG, - (SP) ;;ECHO THE CONTROL=G (*G) SSTYPE CURRENT CONTENTS ::SAVE SWREG FOR TYPEOUT TYPE ,SMNEW ::PROMPT FOR NEW SWR #1,8INTAG 1:DISABLE TTY KEYBOARD INTERRUPTS S3SET INTERRUPT MODE INDICATOR ::GO TYPE--OCTAL ASCII(ALL DIGITS) CLR CLR TSTB Z(SP) -(SP) a$TKS MOVB BIC a$TKB,-(SP) #4C177,(SP) ::PICK UP CHAR LIMAKE IT 7-BIT ASCII (SP),#3 ::1S IT A CONTROL-C? #100,a$7KS S ALLOW TTY KEYBOARD INTERRUPTS BPL CMP 011517 000006 001135 ::CLEAR CONTROL-G OFF asTKS TYPOC 19$: (SP)+ CLR MOVB $GTSWR: 011547 170266 CMPB BEQ TST 010334 104401 104401 013746 104402 104401 005046 005046 000001 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 S «CONTROL-G BEING TYPED, AND THE SOF TWARE SWITCH REGISTER BEING SELECTED. 7 BNE TYPE ADD CMPB BNE 9 ,$CNTLC #6,SP SINTAG.M 8 JMP aCNTLC MOV :CLEAR COUNTER ::THE NEW SWR ::CHAR THERE? :3IF NOT TRY AGAIN : sBRANCH IF NOT :3YES, ECHO CONTROL=-C (~C) S CLEAN UP STACK : SREENABLE TTY KEYBOARD INTERRUPTS? :sBRANCH IF NO - :CONTROL-C RESTART (Y] CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 011012 011016 021627 011020 011024 011030 PO = b NV O b wad e b cad e b md md D e nd b D D D e b b e b b b e b d b b D D D d D b ad d ed ek D b md e d d (eolelelololelelelalelolalololale) 011032 001022 20-MAR-78 TTY 10:25 INPUT ROUTINE M 4 PAGE 53 SEQ 0051 000025 9% : 011524 000006 cMP BNE (SP) ,#25 108 ;IS IT A CONTROL=-U? ;;BRANCH IF NOT 20%: ADD #6,SP :; IGNORE PREVIOUS INPUT 000015 108: 170064 000002 000006 001167 001135 000001 000100 170042 007574 000060 TYPE B8R CMP BNE TST 8EQ 118: 14%: 15%: 16%: 000067 000060 000002 MOV ADD TYPE CMPB BNE MOV RT] JSR CMpP BLT cMpP BGT 007166 18%: INC 8IS B8R TYPE .DSABL LSB B8R ECHO CONTROL=-U (*U) ::LET'S TRY IT AGAIN (SP) ., #15 J2IS IT A <CR>? 4L{SP) 118% 2:YES, IS IT THE FIRST CHAR? : :BRANCH IF YES 16% 2(SP) ,aSWR #6,SP ::BRANCH IF NO +SCRLF ::SAVE NEW SWR ;:CLEAR UP STACK ;:ECHO <CR> AND <LF> PC,STYPEC - *RETURN *CHO CHAR SINTAG, M 15% #100,387KS ;;RE-ENABLE TTY KBD INTERRUPTS? :;BRANCH IF NOT ;:RE=-ENABLE TTY KBD INTERRUPTS (SP) ,#60 18% (SP) ,#67 18% . <HAR < ;:BRANCH ::CHAR > ;:BRANCH (SP) s 2(SP) -2(SP), (SP) 7% . SQUES ASL ;sYES, 1°% #60, (SP)+ 2(SP) 17% (SP) (SP) 17%: 177776 LOCNTLU BIC TST BEQ ASL ASL 000002 IR 20% 0? ]F YES 7? IF YES ;:STRIP=-0FF ASCIlI ;2 1S THIS THE FIRST CHAR : ;BRANCH IF YES ;:NO, SHIFT PRESENT :: CHAR OVER TO MAKE ROOM FOR NEW ONE. ;sKEEP COUNT OF CHAR ;:SET IN NEW CHAR ;;GET THE NEXT ONE ::TYPE 7<CR><LF> ::SIMULATE CONTROL=-U AEAAAAASAARARttt iRt Rdl ittt it bt d :*E:IS ROUTINE WILL INPUT A SINGLE CHARACTER FROM THE TTY s*CALL: N NRRNRRRR S S NSO e g b cod P Y X b ad wnd X L b wd —d R b wmd b (eleolelelelelelelelele] e w iw P 2635 2636 2637 2638 2639 2640 30A(1052) 000004 000004 000002 011210 010316 010316 177074 000004 RDCHR RETURN HERE ::GET A CHARACTER FROM THE QUEUE : *CHARACTER IS ON THE STACK S:WITH PARITY BIT STRIPPED OFF SKOCHR: MOV MOV CLR CLR MOV s RTI (SP),=(SP) 4(SP),2(SP) 4(SP) -(SP) #64$,-(SP) : :PUSH DOWN THE PC AND ::THE PS 1:GET READY FOR A CHARACTER L:PUT NEW PS ON STACK S:PUT NEW PC ON STACK *:POP NEW PC AND PS 18: égg ?IKCNT ;:WAIT ON A CHARACTER DEC move $TKCNT a$TKQOUT,4(SP) ; :DECREMENT THE COUNTER ;.GET ONE CHARACTER e CZRJBCO, RPO4/5/6 FMIR MACY11 CZRJBC.PV 20-MAR-78 10:22 2691 2692 2693 2694 2695 2696 011230 011234 011242 011244 011252 005237 023727 30A(1052) 010322 010322 010333 010324 010322 20-MAR-78 TTY INPUT ROUTINE INC CMP BNE MOV 2s: MR 10:25 RTI N PAGE 54 & SEQ 0052 $TKQOUT :;UPDATE THE POINTER SIKOOUT.'iTKOEND :.DID IT GO OFF OF THE END? 2 :; ;BRANCH [F NO #3TKQSRT,$TKQOUT ;;RESET THE POINTER < sRETURN AR RSALAASARAALAALARARAARARRRRRARARRLARAARARAARALARAREAAERE A ;*THIS ROUTINE WILL INPUT A STRING FROM THE TTY 2697 2698 2699 ;*CALL: o 2700 2701 2702 s * % RETURN HERE $RDL IN: MOV CLR R3,-(SP) -(SP) 2 ¥ #STTYIN+7,R3 1$%: ~NO —— —— (V1V} ola =20 2703 RDLIN MOV CMP BLOS RDCHR 000177 000134 011506 177777 10%: 011506 6%: 011510 011506 011506 000025 011506 7%: 011524 000022 8%: 001167 011510 ha it 4% 011506 011506 000015 3s: 177777 011462 001170 DEC cmp BLO MOVB BR TST BEQ pd3 (SP) 7% TST BNE MOvB TYPE MOV ,9% MOovB #'\,9% CMPB #25, (R3) TYPE CLR ,9% (SP) ::;SAVE R3 ;:CLEAR THE RUBOUT KEY ::GET ADDRESS ;;BUFFER FULL? ;:BR IF YES ::G0 READ ONE CHARACTER FROM THE TTY ;;GET CHARACTER ;1S IT A RUBOUT J: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 2:SETUP TO TYPEOUT THE DELETED CHAR. ;:GO TYPE ::GO READ ANOTHER CHAR. :;RUBOUT KEY SET? ::BR IF NO ::TYPE A BACK SLASH CMPB BNE CLRB #22,(R3) 3 (R3) ;:CLEAR THE RUBOUT KEY ;IS CHARACTER A CTRL U? ;:BR IF NO ;:TYPE A CONTROL 'V’ ::GO START OVER ;1S CHARACTER A '"R'"% ; ;BRANCH IF NO ;:CLEAR THE CHARACTER BR 2% ::TYPE THE INPUT STRING ;:G0 PICKUP ANOTHER CHACTER MOVB (R3),9% ;:CLEAR THE BUFFER AND LOOP ;;ECHO THE CHARACTER CMPB #15,(R3)+ TYPE TST JSLF (SP)+ BNE TYPE B8R TYPE TYPE 001166 A3 (SP)+,(R3) #177.(R3) 5% (SP) 6% #'\,9% ,98% #-1,(SP) R3 RI #STTYIN 4% (R3) ,9% TYPE 5%: 000134 011506 MOVB CMPB BNE #STTYIN,R3 s INPUT A STRING FROM THE TTY ; ;ADDRESS OF FIRST CHARACTER WILL BE ON THE STACK ;: TERMINATOR WILL BE A BYTE OF ALL 0'S TYPE 8R TYPE BNE CLRB LSCNTLU LSCRLF LJSTTYIN . SQUES ,9% 2% -1(R3) ::TYPE A "CR & "LF"' J:TYPE A ' ;s CHECK FOR RETURN ;;LOOP IF NOT RETURN ;;CLEAR RETURN (THE 15) ;.TYPE A LINE FEED ;;CLEAN RUBOUT KEY FROM THE STACK (e Y an) CZRIBCO, RPO4L/5/6 FMTR MACY11 CZRJBC.PN 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 2747 2748 2749 2750 275 2752 2753 2754 2755 2756 2757 2758 2759 011464 0114666 011470 011476 011504 011506 011507 011510 011517 011524 011531 011536 011544 011547 011554 012603 011646 30A(1052) 20-MAR-78 TTY 10:25 INPUT ROUTINE 000002 000004 5 MGV MoV MOV MOV (SP)+,R3 (SP) ,-(SP) 4 (SP) ,2(SP) #STTYIN,L(SP) .BYTE BYTE .BLKB .ASCIZ .ASCIZ .ASCIZ .ASCIZ O 0 7 / RTI 9%: B PAGE 55 SEQ 0053 :;RESTORE R3 s ;ADJUST THE STACK AND PUT ADDRESS OF THE N FIRST ASCII CHARACTER ON IT : sRETURN ::STORAGE FOR ASCII CHAR. TO TYPE :; TERMINATOR :sRESERVE 7 BYTES FOR TTY INPUT 006503 005015 006507 053523 000012 000 000012 020122 $STTYIN: SCNTLC: S$CNTLU: $CNTLG: SMSWR: 047040 000040 053505 SMNEW: _ASCIZ 2763 .SBTTL TYPE NUMERICAL ASCIZ ST RING SUPPRESS LEADING ZEROS 2766 tTHIS ROUTINE 2760 2761 2762 2764 2765 2767 2768 2769 2770 277N 2772 2773 /*C/<15<12> ;:CONTROL ‘°C*' /*U/<15<12> ;;CONTROL ‘U’ /4G/<15><12> /::CONTROL 6"’ <15><12>/SWR = NEW =/ sHERAANRAREA AR RARARAENORAENOLS LASAA0ARRRdRdRaRtdsRRsRRdRRddll R IS USED TO TYPE :*LEADING NUMBERS. :CALL 011560 011562 011566 011570 011572 011576 011600 0116(2 011606 011610 011612 011614 011616 010046 016600 105710 001403 122720 001773 005300 010037 104401 000000 012600 012616 000207 000004 ;v o MOV JSR $SUPRS: MOV 1%: 000060 BEQ DEC MoV 2%: 011610 MOV TST8B 8EQ cmMPB TYPE 38: .WORD MoV MoV RTS AN ASCIZ NUMBER SUPPRESSING THE R , - (SP) #NUMAD PC.,3#$SUPRS ::FIRST ADDRESS OF ASCIZ STRING RO,-(SP) 2 :SAVE RO ;sPICKUP THE POINTER ; : TERMINATEOR? 4(SP) RO (RO) 2% #'0,(RO)+ ;:BR IF YES ;s IS THIS AN ASCII ;:BR IF YES 1% RO RO, 3% .0'. : ;BACKUP BY ‘"1°' ::SAVE FOR TYPING ::G0 TYPE :;ASCIZ POINTER GOES HERE O (SP)+,RO :;RESTORE RO :;RESTORE THE STACK (SP)+, (SP) PC : sRETURN .SBTTL SINGLE LENGTH BINARY TO DECIMAL ASCIZ ROUTINE PR AR SRR AR ARt ittt ? tdldd 1032023322322 8202220822002RRaRdd 2 ) ;*THIS ROUTINE WILL CONVERT A 16-BIT UNSIGNED BINARY NUMBER TO AN ;*UNSIGNED DECIMAL ASCIZ NUMBER. s *CALL o o¥ MOV JSR NUMBER,-(SP) PC.a#$SB2D ::ERTLBINARY NUMBER ON THE STACK CAL .. ;;ADDRESS OF THE 1ST ASCIZ CHAR.IS ON THE STACK $SB82D: MOV MOV JSR ADD Mov 2(SP),1% #1%,-(SP) PC,a#%DB2D #5,(SP) (SP)+,2(SP) ;. SAVE BINARY NUMBER ;:SET POINTER ;:CALL DOUBLE LENGTH CONVERT ;;ONLY ALLOW FIVE CHARACTERS ;sPICKUP POINTER i* 011620 011626 011632 011636 011642 000002 011650 011650 RETURN 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 011646 011650 000207 000000 30A(1052) 000000 c 20-MAR-78 5 10:25 PAGE 56 SINGLE LENGTH BINARY TO DECIMAL ASCIZ ROUTINE 1%: .SBTTL RTS .WORD PC 0.0 SEQ 0054 ; ;RETURN DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE 223232232333222323223232223222203223232323232222232323222222382222228322332382322322232/ 'THIS ROUTINE WILL CONVERT A 32-BIT BINARY NUMBER TO AN UNSIGNED 'gggf??LE(ASCII) NUMBER. THE SIGN OF THE BINARY NUMBER MUST BE M VE. 1 MoV ;«CALL . > X . b . 011654 011656 011662 011666 011672 011674 011676 011704 011710 011714 011716 011720 011722 011724 011726 011730 011732 011734 011736 011740 011742 011746 011750 011752 011754 011756 011760 011762 011764 011766 011770 011772 011774 104412 016602 012700 012201 012202 012737 012704 012705 005003 16140 005602 161502 000002 012034 000002 4 $082D: 000012 -011752 011764 011766 002402 3%: 000060 4%: JSR RETURN SAVREG MoV MOV MOV MOV MOV MOV MOV MoV CLR sus s8¢ suB BLT INC B8R ADD ADC ADD CMP BIS MOVB DEC . WORD BNE CLRB RESREG RTS $TNPWR: 145000 35632 #PNTR,-(SP) PC.a#$DB2D 2(SP) ,R2 #$DECVL RO RO,2(SP) (R2)+,R1 (R2) +,R2 #10.,4% #$TNPWR R4 #STNPWR+2 RS R3 (R4) ,R1 R2 (R5) ,R2 3$ R3 2% (R4)+ ,R1 R2 (R4)+,R2 (RS)+,(RS)+ #'0,R3 R3,(RO)+ (PC)+ 0 1% (RO)+ PC ;;POINTER TO LOW WORD OF BINARY NUMBER ;. THE FIRST ADDRESS OF ASCIZ 2: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 :;CHANGE PARTIAL TO ASCII JsSAVE [T ; ;DONE? ;:BR IF NO ;s TERMINATOR ;:RESTORE REGISTERS ;s RETURN ;:1.0E09 1.0£E08 :1.0€07 ;:1.0€E06 ;1.0€05 012012 ;1.0€E04 o CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20~MAR-78 10:22 D_ 5 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 57 CZRJBC.PN DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE 20-MAR-78 10:22 012014 012016 012020 012022 012024 012026 012030 001750 000000 000144 000000 000012 1750 ;:1.0E03 44 ;:1.0802 2 ;:1.0e01 O—=0O0-20—-0 2859 2860 2861 2862 2863 2864 2655 012032 012034 :.1.0€00 12. ; sRESERVE STORAGE FOR ASCIZ STRING $DECVL: .BLKB .SBTTL SAVE AND RESTORE RO-R5 ROUTINES :.'fiittitt't'tt't"i'tt'*t'tt'it't'tt'ttt'*ttttt*ttitfl'ttttt*ttittt :*SAVE RO-R5 ;*CALL: b SAVREG :*UPON RETURN FROM $SAVREG THE STACK WILL LOOK LIKE: * ;*TOP===(+16) ;% #2--~(+18) ;% +4---RS ;% +6===R4 ;* +8---R3 ;*+10---R2 ;*+12-=-R1 ;*+14---R0 012052 012054 012056 010046 010146 010246 010346 010446 010546 016646 016646 016646 016646 000002 $SAVREG: MOV MOV MoV MoV MoV MOV MoV MOV MoV 000022 000022 000022 000022 MoV RTI RO,-(SP) R1,-(SP) RZ,=(SP) R3,-(SP) R4, ~(SP) RS,=(SP) ;:PUSH RO ON STACK STACK ;:PUSH R1 STACK ;:PUSH R2 STACK ::PUSH R3 :;PUSH R4 22222 012050 012050 STACK STACK 22(SP) ,~(SP) 22(SP) ,~(SP) 22(SP) ,=(SP) 22(SP) ,-(SP) 2 :PUSH RS :sSAVE PS ::SAVE PC ;sSAVE PS ;sSAVE PC (SP)+,22(SP) (SP)+,22(SP) (SP)+,22(SP) (SP)+,22(SP) (SP)+,RS (SP)+,R4 (SP)+,R3 (SP)+,R2 (SP)+,R1 (SP)+,R0O ; sRESTORE 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 ::POP STACK INTO R2 ;:POP STACK INTO R1 ; :POP STACK INTO RO OF OF OF OF MAIN FLOW MAIN FLOW CALL CALL ; *RESTORE RO-R5 s~CALL: < % 2914 012666 012666 012666 012666 012605 012604 012603 012602 012601 012600 000002 000022 000022 000022 000022 $RESREG: RESREG MOV MoV MOV Mov MOV MOV MOV MOV MOV MoV RTI SEQ 0055 CZRJBC.P11 MACY11 30A(1052) 20-MAR-78 10:22 58}2 20-MAR-78 TRAP DECODER .SBTTL 2917 10:25 S E PAGE 58 SEQ 0056 TRAP DECODER fi""*"."""""""""‘i"""""""'."Q"fi."'t""". 2918 2919 2920 *THIS ROUTINE WILL PICKUP THE LOWER BYTE OF THE '‘TRAP'' INSTRUCTION J*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; ;*GO TO THAT ROUTINE. 2923 2924 2925 2926 2927 2928 2929 2930 2931 012144 012146 012152 0121564 012156 012160 012164 2934 2935 gggg 012166 012170 012176 010046 016600 005740 111000 006300 016000 000200 $TRAP: 000002 012200 ggg% MOV MOV TST mMovB 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 $TRAPZ2: MOV MOV RTI (SP) ,=(SP) 4(SP),2(sP) ::MOVE THE PC DOWN ;;MOVE THE PSW DOWN ;;RESTORE THE PSW gg%g .SBTTL 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 s*THIS TABLE CONTAINS THE STARTING ADDRESSES OF THE ROUTINES CALLED ;*BY THE "'TRAP'' INSTRUCTION. Sgg? 012200 012202 012204 012206 012210 012212 012166 007424 007670 007644 007704 010072 ggg% 012214 2954 2955 2956 2957 Sggg 012216 012220 012222 012224 012226 TRAP TABLE : ROUT INE ;. weeeee= $TRPAD: .WORD $TYPE $TYPOC $TYPOS $TYPON $TYPDS $TRAP2 ;;CALL=TYPE ;;CALL=TYPOC ;;CALL=TYPOS ;.CALL=TYPON ;.CALL=TYPDS TRAP+1(104401) TRAP+2(104402) TRAP+3(104403) TRAP+4(104404) TTY TYPEOUT ROUTINE TYPE OCTAL NUMBER (WITH LEADING ZEROS) TYPE OCTAL NUMBER (NO LEADING ZEROS) TYPE OCTAL NUMBER (AS PER LAST CALL) 010712 $GTSWR ;. CALL=GTSWR TRAP+6(104406) GET SOFT-SWR SETTING 010622 011164 011254 012050 012106 $CKSWR $RDCHR S$ROLIN $SAVREG $RESREG ;; CALL=CKSWR ;; CALL=ROCHR ;. CALL=ROLIN , ;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 TRAP+5(104405) TYPE DECIMAL NUMBER (WITH SIGN) 2960 2961 %gg% .SBTTL 2964 2965 2966 ggg; ;COPYRIGHT (C) 1976 ;DIGITAL EQUIPMENT CORP. ;MAYNARD, MA 01754 JAUTHOR(S): JIM LACEY/CHUCK HESS 2%9 ""*"‘"*'*'***"'i'*"t'ffi**"'ifift*ti‘t"fifi*'fi*"""'i"tfifi'i" SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) YTM CZRJBCO, RP0O4/5/6 FMTR F 5 CZRJBCO, RPO4/5/6 FMTR MACYT 30A(1052) 20-MAR-78 10:25 PAGE 59 CZRJBC.P 20-MAR-78 10:2¢2 SINGLE/DUAL PORT RH11/RPO4/5/6 DRIVER (REV 1.0) ;STORAGE FOR RPDS1 29N 2972 2973 ; RPERRS :RPERRS+2 *RPERRS+4 :RPERRS+6 2974 000000 000000 000000 000000 RPERRS: .WORD 0. 0.0.0 ; TABLE OF DRIVE ACTIVE INDICATORS (DRVACT=8 BYTES) 012240 012241 012242 012243 012244 012245 012246 012247 000 000 000 000 000 000 000 000 DRVACT: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE sDRIVE :DRIVE sDRIVE ;DRIVE ;DRIVE ;DRIVE :DRIVE ;DRIVE NOWVESWN—=O ;DRVACT=0 IF DRIVE [S IDLE ;DRVACT>0 IF DRIVE IS ACTIVE WITH A COMMAND ;DRVACT<O If DRIVE IS ACTIVE WITH AN ERROR RECOVERY OPERATION OCOOO0OOO0O s 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 000 000 000 000 000 000 000 000 DRVSTA: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE ;DRIVE ;DRIVE ;DRIVE ;DRIVE :DRIVE sDRIVE :DRIVE :DRIVE NOWVIS W —=O 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 012230 012236 OOOOOOO0O 2975 2976 2977 2978 2979 RPER1, RPER2, AND RPER3 ON AN ERROR ‘7'’ RPDS1 RPERT RPER2 RPER3 ; TABLE OF DRIVE TYPES (DRVTYP=8 BYTES) 012260 012261 012262 012263 012264 012265 012266 012267 000 000 000 000 000 000 000 000 DRVTYP: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE :DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE NO VS WN—=O 3015 3016 3017 3018 3019 3020 3021 3022 1 [eleojeolelelolele] ;DRVTYP=0 IF DRIVE IS NONEXISTENT (DRVSTA=0, ALSO) IF DRIVE IS RPO4 ;DRVTYP=2 [F DRIVE IS RPO5 ;DRVTYP=4 [F DRIVE IS RPO6 ;DRVTYP==1 IF NOT RPO4/5/6 ;DRVTYP= ; TABLE OF DUAL PORT INITIALIZATION INDICATORS ;OPINT=0 IF INITIALIZATION IS NOT ACTIVE ON THE DRIVE ;OPINT<O IF INITIALIZATION IS IN PROGRESS SEQ 0057 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.PN 20-MAR-78 10:22 30A(1052) G 5 20-MAR-78 10:25 PAGE 60 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) DPINT: C 270 012271 012272 012273 012274 012275 012276 012277 .BYTE .BYTE .BYTE .BYTE .BYTE 0 O O 0 O ;DRIVE ;DRIVE ;DRIVE ;ORIVE ;DRIVE .BYTE .BYTE 0 O ;DRIVE 6 ;DRIVE 7 .BYTE O 0 1 2 3 & ;DRIVE S ;TABLE OF PENDING DUAL PORT REQUESTS ;DPRQS=0Q IF THAT A DUAL PORT REQUEST IS NOT PENDING FOR THAT DRIVE ;DPRQS<0O IF THAT A DUAL PORT REQUEST IS PENDING FOR THAT DRIVE 012300 012301 012302 012303 012304 012305 012306 012307 000 000 DPRQS: 000 000 000 000 .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 0 0 O 0 O O O O ;DRIVE :DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE 0 1 2 3 & 5 6 7 ;TRANSFER WAIT FLAG (TRNSWT=1 WORD) sTHIS IS A ONE WORD QUEUE. IT WILL CONTAIN THE ADDRESS OF ;"DPB'' OF 012310 000000 TRNSWT: .WORD THE 1/0 OPERATION. O sSEARCH WAIT KEYS (SRCHWT=1 WORD) ;THIS IS A ONE WORD QUEUE THAT WILL CONTAIN A KEY FOR EACH OF ;THE DRIVES THAT ARE PERFORMING A SEARCH COMMAND FOR THE /0 JREQUEST 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 (ACTORV=1 BYTE) ;ACTDRV=0 IF DRIVER IS INACTIVE ;ACTDRV>0 IF DRIVER IS ACTIVE 012314 000 ACTDRV: .BYTE ;SOFTWARE O TIMER ROUTINE ACTIVE FLAG (ACTSTR=1 BYTE) sACTSTR=0 IF SOFTWARE TIMER ROUTINE IS INACTIVE JACTSTR>0 IF SOFTWARE TIMER ROUTINE IS ACTIVE 012315 000 ACTSTR: .BYTE O ;UNLOAD FLAG (ULDFLG=8 BYTES) ;ULDFLG=0 IF NO UNLOAD COMMAND ;ULDFLG>0Q IF UNLOAD COMMAND IN PROGRESS JULDFLG<O IF UNLOAD COMMAND IN WAIT QUEUE 000 000 ULDFLG: .BYTE .BYTE 0 0 ;ORIVE O ;DRIVE 1 SEQ 0058 S 3083 3084 3085 3086 3087 3088 3089 3090 309 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 b d wmd d ed d cod ed b .BYTE .BYTE .BYTE BYTE .BYTE 012323 012324 012325 O ;DRIVE 2 0 0 0 0 O ;ORIVE 3 4 5 6 7 ;DRIVE ;ORIVE ;DRIVE ;DRIVE ;LOOK AHEAD COUNT (LACNT=8 BYTES) JLACNT WILL INDICATE THE NUMBER OF LOOK AHEADS PERFORMED LACNT: 012326 012327 012330 012331 012332 012333 012334 012335 .BYTE .BYTE .BYTE .BYTE .BYTE O 0 O O 0 ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE .BYTE O ;ORIVE 7 .BYTE .BYTE 0 0 O 1 2 3 4 ;DRIVE 5 ;DRIVE 6 :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. 012336 O~NOWVE WO .BYTE 012320 012321 012322 SEQ 0059 000000 SAVEFG: .WORD O ;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 012340 000000 SEEKFG: .WORD O ;TIMEOUT TABLE (TIMER=8 WORDS) TIMER: -1 ;THIS TABLE CONTAINS THE TIME ALLOWED FOR AN OPERATION 012342 012344 012346 012350 012352 012354 012356 012360 177777 177777 177777 177777 177777 177777 177777 177777 .WORD LWORD .WORD .WORD .WORD .WORD .WORD .WORD -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 012362 177777 DTUW: .WORD -1 JATTENTION BITS TABLE (ATABIT=8 BYTES) sTHIS TABLE CONTAINS THE JATTENTION BIT CORRESPONDING BIT TO EACH DRIVES O H CZRJBCO, RPO4/S5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 61 CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20~MAR-78 10:22 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 315 3152 3153 3154 3155 3156 3157 3158 3159 012364 012365 012366 012367 012370 012371 012372 012373 010 020 040 100 200 3164 3165 3166 3167 3168 3169 3170 31N 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 31N 3192 3193 3194 .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 1 2 & 10 20 40 100 200 ;RP04/5/6 TO RH11 ;DRIVE ;DRIVE ;DRIVE ;DRIVE :DRIVE ;DRIVE ;DRIVE ;ORIVE O 1 2 3 4 5 6 7 "MASSBUS CONTROL BUS PARITY ERRORS'' (MCPE) ALLOWED BEFORE ;CALLING 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 3160 3161 3162 3163 ATABIT: 001 002 004 SEQ 0060 000240 RPADR: RPVEC: .WORD .WORD 176700 254,5+32. JMAXIMUM NUMBER Of LOOK AHEADS ALLOWED IS 4 012404 000004 MXLACT: .WORD & 012406 001000 MXDLTA: .WORD 8.+*64. 012410 000200 MNDLTA: .WORD 2+64. 012412 000005 MXWNDW: .WORD 5 ;MAXIMUM DELTA DELAY IS 8 SECTORS (MXDLTA=1 (MXLACT=1 WORD) WORD) JMINIMUM DELTA DELAY IS 2 SECTORS (MND! TA=1 WORD) JMAXIMUM SEARCH FOR 1/0 WINDOW IS 5 SECTORS (MXWNDW=1 WORD) ;DEFINITIONS OF THE RH11/RP04/5/6 ADDRESS INDEXES 000000 RPCS1=0 ;CONTROL AND STATUS REGISTER #1 RPBA=4 ;UNIBUS ADDRESS REGISTER RPW(=?2 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 RPERZ2=40 RPER3=42 RPEC1=44 RPE(C2=46 (DRIVE REG. 00) ;WORD COUNT REGISTER (NOT A DRIVE REG) (NOT A DRIVE REG) ;DESIRED SECTOR/TRACK ADDRESS REGISTER (DRIVE REG. 05) ;CONTROL AND STATUS REGISTER #2 (NOT A DRIVE REG) ;ORIVE STATUS REGISTER (DRIVE REG 01) ;ERROR REGISTER #1 (DRIVE REG. 02) ATTENTION SUMMARY PSEUDO REGISTER_(DRIVE REG. 04) ;LOOK AHEAD REGISTER (DRIVE REG. 07) :DATA BUFFER REGISTER (NOT A DRIVE REG.) ;MAINTAINABILITY 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. JECC POSITION REGISTER 15) (DRIVE REG. ;ECC PATTERN REGISTER (DRIVE REG. 16) 17) O 5 | CZRJBCO, RPO4L/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 62 CZRJBC.P11 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 J_ 5 20~-MAR-78 10:25 PAGE 63 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 3195 ;RH11/RP04/5/6 DRIVER INITIALIZATION CODE 3196 3197 :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. 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 sNOTE: THIS ROUTINE CALLS DRVINT : ; JSR RETURN PC.RPINIT sNOTE: THE RPINIT: SAVREG MOV MOV JSR s CALL 012414 012416 012422 012430 012434 012440 012444 012446 012450 012452 012456 012462 012464 012466 012472 012476 012502 012506 012512 012516 012522 012526 012534 012536 012542 012544 012546 012552 012554 012560 012562 012566 012572 012576 012600 012604 012610 012612 012614 012616 012622 012624 177776 000240 020400 177776 012230 012340 1%: 012362 177777 012250 012252 012254 012256 012400 015260 012402 012376 000040 2%: 000010 012626 3$: 012250 4%: 177770 5%: 000007 177776 012270 6%: 020034 012270 7%: 8%: 177776 'P' OR 'L' CLOCK MUST BE STARTED a¥PS ,~(SP) #<5+32.>,3#PS PC,CLRQUE ;SAVE RO - RS ;SAVE THE PRESENT PROCESSOR STATUS ;CHANGE THE PRIORITY TO 5 ;CLEAR ALL REQUEST QUEUES MOV #RPERRS ,R1 CLR (R1)+ s CLEAR DRVSTA DRVSTA+2 ;SET ALL DRIVES TO OFFLINE MOV cmP BLOS MoV MOV cMP 8LOS CLR CLR CLR CLR MoV MOV MOV MOV #SEEKFG,R2 R1.R2 1% #DTWW R? #-1,(R1)+ R1,R2 2% ;FIRST ADDRESS TO BE CLEARED ;LAST ADDRESS TO BE CLEARED ;ARE WE DONE? sBRANCH IF NO ;LAST ADDRESS sINITIALIZE ;DONE? ;LOOP IF NO DRVSTA+4 DRVSTA+6 JSR BR B8R RPVEC,R3 ;SETUP THE RH11/RP04/5/6 VECTOR #ISR,(R3)+ RPVEC+2, (R3) RPADR R4 ;FIRST ADDRESS OF RH11/RP04 #BITOS ,RPCS2(R4) ;MASSBUS INIT R1 ;START WITH DRIVE 0 RO,DRVINT s INIT THE DRIVE 4% ;'DVA' NOT SET OR PARITY ERROR A :NORMAL RETURN INC BIC BNE MOV R ¥ °7,R 3s #7,R1 MOV CLR CLRB CLR 1ST8 BEQ JSR TSTB BNE DEC BPL MOV RESREG RTS DRVSTA(RY) sSET DRIVE STATUS TO OFFLINE a#PsS ;CLEAR THE PROCESSOR STATUS DPINT(R1) 8% PC,SET.IE DPINT(R1) 73 R1 6% (SP)+ ,a#PS PC ;GO TO NEXT DRIVE sMASK OQUT UNUSED BITS ;BR IF MORE DRIVES _TO GO ;START WITH DRIVE 7 sWAITING FOR DRIVE TO SWITCH PORTS ? ;BR NOT WAITING sSET INTERRUPT ;DRIVE SWITCHED PORTS ? ;BR IF NOT ;GO TO THE NEXT DRIVE ;CHECK NEXT DRJVE JRESTORE THE PROCESSOR STATUS ;RESTORE RO - RS ;BYE-BYE SEQ 0061 RETURNZ :NORMAL RETURN e ®e v Ny 0. ;DRIVE INITILIZATION ROUTINE sTHIS ROUTINE DETERMINES IF A DRIVE EXIST AND IF IT IS ;AN RP04/5/6. IF IT IS, A "READ-IN PRESET'' IS ISSUED AND FMT22 ;IS 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. s CALL #DRVNUM R MOV ;DRIVE NUMBER TO R1 RPADR, R4 MOV ;UNIBUS ADDRESS OF RH11/RP04/5/6 (RPCS1) RO,DRVINT JSR sCALLED BY A JSR RE TURN1 ;ERROR OCCURRED (PARITY) 012626 012630 012634 012640 012644 012650 012656 012664 012666 012672 012674 012700 012706 012710 012714 012716 012720 012722 012730 012734 012736 012742 012744 012752 012756 012760 012764 012766 010546 105061 105061 105061 010164 112764 032764 012250 012260 012316 000010 000111 010000 000000 000010 020034 012250 004000 000000 017344 DRVINT: MOV CLRB CLRB CLRB MoV mMove BIT BEQ JSR BR 1%: CLRB BIT BEQ JSR RPDT 8% 000001 020020 MoV move cMP BEQ CMP 8EQ mMovse cMp BEQ cMP 8EQ mMove cMP 8EQ 012260 024020 000002 020021 012260 024021 000004 020022 012260 024022 177777 000121 017524 010000 017524 cMP BEQ 012260 2%: MovB B8R Mov JSR RPCS1 8% MOV JSR RPOF R5,=(SP) DRVSTA(R1) DRVTYP(R1) ULDFLG(R1) R1,RPCS2(R4) ;SAVE RS JSTART DRIVE STATUS AS OFFLINE ;CLEAR THE DRIVE TYPE INDICATOR ;CLEAR THE UNLOAD FLAG ;SELECT A DRIVE #111 ,RPCS1(R4) ;D0 A DRIVE CLEAR COMMAND (& SEIZE DRIVE) #BIT12,RPCS2(R4) ;NONEXISTENT DRIVE? 1% :NO=-==BRANCH PC,SET.IE ;GO SET "'IE'' WITHOUT A 'TTRE"' ;LEAVE THIS ROUTINE ;SET DRIVE STATUS TO OFFLINE #BIT11,RPCS1(R4) :SEE IF DRIVE AVAILABLE 7% :BR IF DRIVE NOT AVAILABLE RO,RD.RP ;READ THE DRIVE TYPE REG. 6% DRVSTA(R1) (SP)+,RS #1 ,DRVTYP(R1) #20020,R5 2% #24020,R5 2% #2 ,DRVTYP(R1) #20021,R5 2% #24021,R5 2% #4 ,DRVTYP(R1) #20022 ,R5 2% #24022,R5 2% #-1,DRVTYP(R1) 6% ;ERROR RETURN ADDRESS :PUT DRIVE TYPE IN RS :SET RPO4 INDICATOR ;IS IT A SINGLE PORT RP04? ;BRANCH IF YES ;1S IT A DUAL PORT RP04? :BR _IF YES ;SET RPOS INDICATOR s SINGLE PORT RPOS5 ? ;BR IF YES ;DUAL PORT RPO5 ? :BR IF YES sSET RPO6 INDICATOR ;SINGLE PORT RPO6 ? ;BR IF YES :DUAL PORT RPO6 ? ;BR IF YES ;EEITINDICATOR TO 'OTHER' #121 -(SP) RO,WRT.RP ;DO A 'READ-IN PRESET'’ #B1T712,~(SP) RO,WRT.RP ;SET FMT22=1 SEQ 0062 [ Y] K 5 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 64 CZRJBC.P11 20-MAR-78 10:22 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) CZRJBCO, RPO4/S5/6 FMTR MACY11 CZRJBC.P11 20~MAR-78 10:22 013046 013050 013054 013056 013060 013062 013064 013072 013076 013100 013102 013104 013106 013114 013116 013120 013124 013126 013134 013136 013140 013142 013150 013152 013156 013160 013162 013160 004037 000012 013160 012605 100015 116164 004037 000014 013160 006126 30A(1052) 5 L 20-MAR-78 10:25 PAGE 65 SINGLE/DUAL PORT RH11/RPO4/5/6 DRIVER (REV 1.0) 8% JSR RPDS1 8% MOV 8PL 017344 012364 017344 177777 000016 mMove JSR RPER1 8% ROL BPL 012250 4%: 167077 000001 012250 003720 012342 6%: 7%: RO,RD.RP ;READ RPDS1 (SP) +,R5 4% sAND SAVE IT IN RS ;BRANCH IF ATA=0 (SP)+ ;1S IT UNSAFE? #1 ,DRVSTA(R1) ;SET DRIVE STATUS TO ONLINE ATABIT(R1) ,RPAS(R4) ;CLEAR ATTENTION BIT RO,RD.RP ;FIND OUT WHY ATA=1 BNE 4% ;BR _IF NOT #-1,DRVSTA(RT) SET UNSAFE INDICATOR 6% SEXIT RS ;CHECK MOL, DPR, DRY, AND VV #°C<BI1T712'81708!B1707!BIT06>,RS 6% ;BRANCH IF MOL, DPR, DRY, OR VV IS CLEAR TST BR (RO) + 8% mMove B8R COM BIC mMovB ASL MoV ASR gg?e 012270 SEQ 0063 R1 #2000.,TIMER(R1) R1 ?:6§T(R1) ;STEP OVER THE ERROR RETURN SEXIT : CHANGE INDEX TO ADDRESS WORDS ;START 2 SEC TIMER ;RESTORE R1 ;SET PORT INITIALIZE INIDICATOR + 8%: MoV RTS (SP)+,R5 RO ;RESTORE R5 SEXIT sREQUEST PRE-PROCESSOR-HANDLES SUBSYSTEM REQUEST s CALL ; H 013164 013170 013176 013204 013206 013210 013214 013216 013222 013226 013230 013234 013236 013242 013244 013250 013252 013256 013746 013737 112737 177776 012402 000001 RPO4: PNTADR MOV 000016 012376 012250 012270 012626 012250 RO,a#RPO4 RE TURN1 RETURNZ MOV MOovB SAVREG MoV CLR 012316 177776 012314 JSR ;CALL THE RP04/5/6 DRIVER ;ADDRESS OF POINTER OF DRIVES PARAMETER BLOCK ;RETURN HERE sRETURN HERE IF QUEUE IS FULL IF REQUEST IS IN QUEUE OR THERE ;IS AN ERROR CONDITION a#PS,-(SP) sSAVE THE CALLING STATUS (RO) ,R2 16(R2) :DON'T ALLOW ANY RP04/5/6 INTERRUPTS sSET "ACTIVE DRIVER'' FLAG :SAVE RO - RS ;PICKUP THE DRIVE PARAMETER BLOCK POINTER sCLEAR THE STATUS/ERRULR INMDICATOR MoV TSTB RPADR R4 DRVSTA(R1) :UNIBUS ADDRESS OF RPCS1 ;CHECK DRIVES STATUS TSTB BNE 1ST8B BNE JSR BR 1ST8 BLE ULDFLG(R1) 3% DPINT(R1) 5% RO,DRVINT 4% DRVSTA(RY) 6% mMove BGT RPVEC+2 ,a#PS #1 ,ACTDRV (R2) ,R1 1% ;PICKUP THE DRIVE NUMBER ;BRANCH IF ONLINE ;UNLOAD COMMAND IN QUEUE? ;BRANCH IF YES sTRYING TO INIT THE DRIVE ;BR IF YES ;GO INIT. THE DRIVE ;ERROR RETURN ;1S DRIVE STATUS ONLINE? ;BR IF NOT ms 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 3367 3368 013260 013264 013266 013272 013276 013300 105761 001031 010164 004037 000460 122762 000103 000002 3370 013310 112761 177777 012316 3369 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 228? 013306 001003 013316 013322 013324 013330 013332 013340 013342 013346 013350 013354 013356 013362 013364 105761 001043 004737 000440 012762 000434 004737 000431 004037 000431 032714 001023 004737 013372 013376 105761 002412 013370 013400 013406 013412 013414 013422 013424 013432 013434 013436 013440 013442 013444 013450 013454 000420 012762 105761 001007 012762 000403 012762 104413 005720 000401 104413 005720 105037 012637 000200 012300 1%: 000010 020476 012240 000016 2%: 3%: 014566 4%: 020476 5%: 000100 020034 012250 6$%: 140000 012260 000016 100002 000016 110000 000015 7%: 8%: 9%: 108: 012314 177776 CmMPB DPRQS(R1) 5% R1,RPCS2(R4) RO, DRVQUE 9% #103,2(R2) ;OUTSTANDING PORT REQUEST FOR THE DRIVE ? :BR IF YES ;SELECT THE DRIVE sPUT THIS REQUEST IN QUEUE ;QUEUE IS FULL ;1S THIS REQ. FOR AN UNLOAD? mMovs #-1,ULDFLG(R1) ;SET THE 'UNLOAD IN QUEUE'' FLAG BR 8% BNE 013456 120000 TST8 BNE MoV JSR BR TST8 BNE JSR BR MOV BR JSR BR JSR BR BIT BNE JSR 1S18 BLT MOV TSTB BNE MOV BR MOV RESREG TST BR RESREG TST CLRB MOV RTS 2% :BR _IF NO DRVACT(R1) ;1S THIS DRIVE ACTIVE? 8% ;BR IF YES PC.OPT ;CALL THE OPTIMIZER 8% #BIT15!BIT13,16(R2) ;SET THE "UNLOAD IN QUEUE'' ERROR FLAG 8% JEXIT PC.C17 ;GO HANDLE THE PARITY ERROR 8% RO,DRVQUE sPUT REQUEST IN QUEUE 9% ;QUEUE IS FULL #81T06, (R4) ;1S "IE' SET ALREADY ? 8% :BR IF IT IS PC,SET.IE :SET INTERRUPT DRVSTA(R1) 7% sRETURN, REQUEST IN QUEUE ;SEE IF DRIVE OFFLINE OR UNSAFE :BR IF UNSAFE #BIT15!BIT14,16(R2) ;SET OFFLINE ERROR INDICATOR DRVTYP(R1) sSEE IF OFFLINE OR NONEXISTENT 8s :BR IF OFFLINE #BIT15!BITO1,16(R2) ;REPORT DRIVE NONEXISTENT 8% ;GO TO EXIT #BITIS!BIT12,16(R2) ;DRIVE IS UNSAFE ;RESTORE RO - RS (RO) + :SETUP FOR NORMAL RETURN 108 sFINISH UP, THEN EXIT ;RESTORE RO - RS (RO) + ;CORRECT THE RETURN ADDRESS ACTDRV ;CLEAR "ACTIVE DRIVER'' FLAG (SP) + ,a#PS ;RETURN 'PS’’ TO USER LEVEL RO JRETURN TO CALLER gzg% ;OPTIMIZER-CALLED FOR A PARTICULAR DRIVE 3404 3405 2289 ;CALL ; 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 : 013456 013460 013464 013472 013476 013500 013502 013510 013512 013520 013522 104412 013746 146137 004737 005702 001505 032764 001407 032764 001003 004037 OPT: 177776 012364 020552 012312 004000 000000 000100 000012 012626 9% : MOV JSR #DRVNUM,R1 PC.OPT ;DRIVE NUMBER TO R1 ;SETUP A COMMAND SAVREG MOV BICB JSR TST BEQ BIT BEQ BIT BNE JSR ;SAVE RO - RS a#PS, - (SP) : SAVE PROC. STATUS ATABIT(R1),SRCHWT :CLEAR '‘SEARCH WAIT'' KEY PC.GETREQ ;GET 'DPB'’ POINTER OF REQUEST R2 ;1S THERE A REQUEST IN QUEUE? 7% sNO=--BRANCH TO EXIT #81711,RPCS1(R4) ;1S DVA SET? 108 ;BRANCH [F NOT #BIT6,RPDST1(R4) IS VV SET ? 108 sBR IF IT IS RO,DRVINT ;SEE IF DRIVE STILL ONLINE ? SEQ 0064 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 013526 013530 013534 013536 30A(1052) 012250 013542 013550 013554 013556 013564 013566 013572 013576 10%: 020574 140000 012250 000016 110000 000016 000111 017524 013600 013602 013606 013610 013616 013620 N_S 20-MAR-78 10:25 PAGE 67 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) B8PL MOV 1%: 004000 000150 000002 014152 2%: 012362 012340 LT JSR BR TST BGE N AV 013736 3s: 014044 4%: 177777 012300 023420 012342 020034 177776 BR MOV JSR RPCS1 6% BIT B:Q CMPB b alh d 015122 014566 000100 B8R TSTB BGT JSR MOV TST8 8MI JSR BR BR JSR BR JSR 5¢: 63 DgVSTA(R1) PC ,POPQUE ;PARITY OR 'DVA' ;1S DRIVE ONLINE? SEQ 0065 NOT SET s YES=<BRANCH :NO--REMOVE REQUEST FROM QUEFUE #BIT15'BIT14,16(R2) ;SET OFFLINE STATUS/ERRCR INDILATOR ;IS DRIVE UNSAFE ? :BR TO EXIT IF NOT #BIT15!BIT12,16(R2) sSET UNSAFE STATUS/ERROR INDICATOR 8% ;BRANCH TO EXIT #111,-(SP) ;LOAD COMMAND ONTO THE STACK RO,WRT.RP sLOAD THc REGISTER sREGISTER INCREMENT ;ERROR RETURN ADDRESS #BIT11, (R&) ;DRIVE AVAILABLE ? 5% ;BR IF NOT #150,2(R2) ¢ 1S THE REQUEST FOR 1/0? DgVSTA(R1) 8 2% PC,Cl4 s YES=~BRANCH sCALL THE COMMAND INITIATOR 8% ;BRANCH TO EXIT 3s ;DO IMPLIED SEEKS? : YES—=--BRANCH :NO=--DO LOOK AHEAD DTLW +9 SEEKFG RO,LA 8 8% :DATA TRANSFER UNDERWAY? ;YES==GO START A SEARCH sRETURN HERE ON A PARITY ERROR :GO START A SEARCH ;START A DATA TRANSFER ;START A SEARCH ;GO TO THE EXIT #-1,DPRQS(R1) R13R3 R3 :SET PORT REQUEST INDICATOR sSET UP TO ADDRESS WORDS #B1706, (R4) 8% PC,SET.IE (SP)+,a34PS ;SEE IF 'IE' ALREADY SET ;BR IF SET : CONVERT TO WORD INDEX glOOOO..TIHER(RB) :START 10 SEC TIMER XI JE T sPROCESS THE PARITY ERROR PC,C17 6%: 7%: 8%: PC ;SET "'IE'" WITHOUT A ‘‘TRE"’ sRESTORE PROC. STATUS ;JRESTORE RO - RS ;COMMAND INITIATOR ‘CALL MOV MoV JSR #DRVNUM R #DPB,R2 PC.CI? ;DRIVE NUMBER ;ADDRESS OF DPB ;CI?7= CI11,CI3, OR Cl4 s WHERE: ;CI1=DATA TRANSFER ;CI2=SEARCH REQUESTED BY DATA XFER ;C14=NOT DATA TRANSFER 013736 013742 004737 010237 020574 012310 Clt: JSR MoV PC,POPQUE R2, TRNSWT ;REMOVE REQUEST FROM 'DRIVES WAIT'' QUEUE JPUT REQ. IN TRANSFER WAIT QUEUE 3475 3476 3477 3478 3479 3480 38 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 013746 013750 013754 013760 013764 013770 013772 013774 013776 014002 014004 014006 014010 014014 014016 014020 014024 014030 014032 014034 014040 014044 014050 014054 014060 014064 014066 014070 014074 014100 014102 014106 014110 014116 014122 014124 014126 014132 014136 014140 014142 014150 014152 014156 014162 014166 014172 014174 014200 014204 014206 014210 014212 014216 014220 014224 010203 013704 30A(1052) B 6 20-MAR-78 10:25 PAGE 68 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) MoV MoV MOV ADD ADD MOV MOV MoV 012376 000010 000004 000002 JSR 017524 RPDA c17 Mov 017524 JSR RPCA cl7 000011 017524 012364 012376 000010 000002 000131 000010 017524 R3,-(SP) 11(R2) ,1(SP) RO,WRT.RP ;COMBINE THE ADJUSTED SECTOR WITH ;THE DESIRED TRACK :LOAD DESIRED TRACK & SECTOR Mov JSR RPCS1 #131,-(SP) RO,WRT.RP :START A SEARCH BISB B8R MOV MOV mMovB cMPB BNE MOV JSR GIQBIT(R1).SRCHUT RPDA c17 000105 1%: 000012 017524 2%: ;LOAD CYLINDER ADDRESS ;PICKUP SECTOR ADDRESS ;BACKUP BY MAX. SEARCH FOR 1/0 WINDOW cl7 Clé4: ;ERROR RETURN ADDRESS 10(R2) ,R3 ?éUNDU.R3 c17 012312 RO,WRT.RP ;CALL THE LOAD(WRITE) ROUTINE ; INDEX OF REGISTER TO LOAD MovB suB 8GE ADD MOV MOvVB JSR RPDA 000131 017524 (R3)+,-(SP) sRPWC ADDRESS ;LOAD WORD COUNT ;LOAD BUFFER ADDRESS ;LOAD SECTOR AND TRACK JSET "DATA TRANSFER UNDERWAY'' cl7 1%: (R3)+,(R4G)+ (R3)¢+,(R4)+ (R3)+,-(SP) RO,WRT.RP R}§DTUU clz 000001 #2 R4 ADDRESS MOV JMP MoV MoV MOV JSR RPCA 012362 014530 012376 000010 000012 017524 RPCS1 000026 #4 ,R3 ;SELECT DRIVE ;DESIRED WORD COUNT sRPCS1 ;LOAD ''COMMAND+GO'', "‘A178A16'', AND 'PSEL"’ MOV JSR 000010 012412 ;OPB ADDRESS TO R3 RPADR,R4 R1,RPCS2(R4) 2(R2),=(SP) 000002 017524 CI3: R2.R3 BR CMPB BNE MoV JSR RO,WRT.RP ¢ RPADR,R4 R1,RPCS2(R4) 12(R2) ,-(SP) RO,WRT.RP ;RPCS1 ADDRESS :SELECT DRIVE sDESIRED CYLINDFR ADDRESS ;SET "'SEARCH WAIT'' KEY RPADR, R4 R1,RPCS2(R4) ;RPCS1 ADDRESS :SELECT DRIVE #131,R3 1% 10(R2) ,~(SP) RO,WRT.RP :IS IT A SEARCH COMMAND? ;BRANCH IF NO ;LOAD DESIRED TRACK & SECTOR 2(R2) ,R3 2% #105,R3 3$ 12(R2) ,=(SP) RO,WRT.RP ;PICKUP THE REQUESTED COMMAND ;GO LOAD CYLINDER ;IS IT A SEEK COMMAND ;BRANCH [F NO ;LOAD DESIRED CYLINDER SEQ 0066 [N enl CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20~MAR-78 10:22 014230 014232 014234 014236 014242 014244 014250 014252 014254 014260 014264 014266 014270 014272 014276 014300 014304 014306 014312 014314 014322 014326 014334 014336 014342 014344 014346 014350 014354 014356 014362 014364 014366 014374 014400 014402 014404 014406 014412 014414 000034 014566 000546 122703 001013 004037 000032 014566 014420 014426 116237 116205 004037 000000 014432 014436 014440 014442 014444 014450 014452 014460 014462 014466 014470 014472 014476 116216 004037 000032 014566 000530 122703 001525 122703 001522 122703 001016 112761 105061 112761 010346 004037 000000 014566 000207 122703 001014 004037 000032 014566 116266 004037 000032 014566 000436 122703 001023 016203 014566 012623 023705 001414 062737 000764 122703 001405 010346 004037 000000 30A(1052) C 6 20-MAR-78 10:25 PAGE 69 SINGLE/DUAL PORT RH11/RPQ4/5/6 DRIVER (REV 1.0) SEQ 0067 RPCA cl7 3%: 000115 017344 BR CMPB BNE JSR RPOF clz 000001 017524 move JSR RPOF c17 4%: 000107 000117 000103 000001 012250 000001 012240 012316 BR CMP8 BEQ CMPB 8EQ cmMP8 BNE mMovs CLRB mMovB MOV 017524 JSR RPCS1 c1z 5%: 000143 017344 000001 017524 RTS cMPB BNE JSR RPOF cl7 000001 move JSR RPOF cl7 000141 6%: 000006 7%: 000010 000011 017344 014436 8%: 9%: 014436 000002 000145 017524 014436 10%: 11%: 1A #115,R3 4% RO,RD.RP ;IS IT AN "OFFSET'' COMMAND? 1(R2), (SP) RO,WRT.RP ;BYTE WHEN LOADING THE JREGISTER (RPOF) C16 #107,R3 #1,ULDFLG(R1) R3,-(SP) ;G0 START THE COMMAND ;IS IT A "RECALIBRATE'' COMMAND? ;BRANCH IF YES ;IS 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 PC ;RETURN TO USER #1 ,DRVACT(R1) DRVSTA(R1) RO,WRT.RP #143,R3 6% RO,RD.RP 1(R2) ,1(SP) RO,WRT.RP BR CMPB BNE MoV 12% #141,R3 10% MOVB mMove JSR RPCS1 10(R2) ,9% 11(R2) RS RO,RD.RP MoV CMP BEQ ADD (SP)+,(R3)+ 9% ,RS 12% #2,9% 8% #145,R3 12% R3,-(SP) RO,WRT.RP clz BR CMPB BEQ Mov JSR RPCS1 6(R2) ,R3 ;BR IF NO ;MERGE THE OFFSET VALUE INTO RPOF ;BUT DON'T CHANGE THE UPPER IS IT A "'SET FORMAT'' COMMAND? ;BRANCH IF NO ;READ THE OFFSET REGISTER ;COMBINE 'FMT22'',"ECI'', AND 'HCI" ;LOAD 'FMT22'', "ECI'', AND/OR 'MHCI''. ;IS IT A "'GET REGISTER'' COMMAND? ;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 RPO4/5/6 REGISTER ; INDEX OF REG. TO READ ;GET THE CONTENTS OF RH11/RP04/5/6 REG. sLAST REG. BEEN READ? ;GET OUT IF YES s INCREASE THE INDEX BY 2 ;LOOP--MORE TO READ ;IS IT A "'SELECT DRIVE'' COMMAND? ;BRANCH IF YES sLOAD THE COMMAND O CZRJIBCO, RPO4/S5/6 FMTR MACY11 CZRJBC P11 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 3587 3588 3589 3590 35N 3592 3593 3594 3595 3596 3597 014500 014502 014506 014514 014520 014522 014526 014530 014532 014540 014542 014550 014552 014554 014560 014562 014564 014566 014574 014576 014600 014602 014610 014614 014620 014624 014626 014630 014634 014640 014644 014650 014652 014656 014664 014666 014670 014676 014700 014702 014704 014710 014712 014716 014722 014724 014730 014732 014734 014742 014744 014752 014754 014762 014766 014774 020574 000200 012336 30A(1052) 20-MAR-78 10:25 JSR 000016 012342 000001 012240 ClI5: 017524 C17: 18: 104000 017716 000111 017524 000016 c178: 020456 012316 012240 012362 012310 177777 RTS ASL ng 010000 000010 012240 1%: CI8: 020552 2%: 010000 000010 100002 000016 102000 017716 177777 012240 000016 3$: 012342 4%: ;RETURN TO USER g}OOO.,TIHER(R1) sSET A ONE SECOND TIMER ;SET THE DRIVE ACTIVE MOV R3,-(SP) ;LOAD THt COMMAND JSR BR PC RO,WRT.RP CI5 JRETURN TO THE USER BIT #BIT12,RPCS2(R4) MOV #111,-(SP) ;D0 A 'DRIVE CLEAR" PC.EMPTYQ ;EMPTY THE QUEUE BNE TST BEQ MOV JSR JSR RPCS1 c18 ;DRIVE NON-EXISTENT 2 c18 ;BR IF YES R2 sANYTHING IN QUEUE ? cl78 :BR IF NOT #BIT15!BIT11,16(R2) ;SET 'PARITY'' ERROR INDICATOR PC,SVRH11 ;GO SAVE THE RH11/RP04/5/6 REGISTERS RO,WRT.RP CLRB CLRB CMP BNE CLR MoV ULDFLG(R1) DRVACT(R1) R1,DTUW 1% TRNSWT #-1,DTUW SAVREG BIT #BIT12,RPCS2(R4) ;SAVE RO - RS ;IS °'NED' SET ? DRVACT(R1) ;DRIVE ACTIVE? TRNSWT ,R2 :GET THE '‘TRANSFER WAIT'' QUEUE RTS PC CLR 1% R1 R3 BEQ 5% TSTB MOV 012310 012362 ;BRANCH IF NO ;YES=-~GO SAVE THE REGISTERS #1,DRVACT(R1) RTS BNE CLR 1$: R1 FROM QUEUE ;SET THE 'DONE'' BIT MOvVB JSR 012362 ;SAVE THE RH11/RP04/5/6 REGISTERS? 13% PC,SVRH11 PC RPCS1 000010 SAVEFG BPL JSR cl7 010000 sREMOVE REQ. #BIT07,16(R2) A Clé6: PC ,POPQUE BIS TST 13%: 001750 6 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) c17 017716 D PAGE 70 ;CLEAR THE UNLOAD IN QUEUE FLAG ;DRIVE IS IDLE ;1F THIS DRIVE HAD AN /0 REQUEST ; IN PROGRESS CLEAR ALL OF THE FLAGS ;BR IF YES ;BRANCH IF NO CMp BEQ JSR TST 8EQ BIT BEQ MoV BR R1,0TUW ;DID THIS DRIVE HAVE AN [/0 IN PROGRESS? 2% ;BRANCH IF YES PC.GETREQ :GET THE DPB POINTER R2 ;QUEUE ENTRY FOR DRIVE ? 4% ;BR IF NOT #BIT12,RPCS2(R4) ;'NED' SET ? 3% :BR IF NOT #B1T15!BIT01,16(R2) ;SET °'DRIVE NON-EXISTENT' INDICATOR 43 ; CONT INUE MoV #-1,TIMER(R3) MOV JSR CLRB #BIT15!BIT10,16(R2) ;SET 'NON-CLEARABLE PARITY'' ERROR INDICATOR PC,SVRH11 :SAVE RH11/RP04/5/6 REGISTERS DRVACT(R1) ;STOP THE TIMER ;SET 'DRIVE ACTIVE'' TO IDLE SEQ 0068 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P 20~MAR-78 10:22 015000 015004 020137 015006 015014 015020 015024 6 E 10:25 PAGE 71 20-MAR-78 SINGLE/DUAL PORT RH11/RP0O4/5/6 DRIVER (REV 1.0) 012362 177777 012310 012316 010000 015032 015034 015036 30A(1052) 012362 000010 5%: 000002 177770 177777 012310 020400 000040 012362 R1,0TUW 5% #-1,0TUM ;1S THIS DRIVE SETUP FOR A TRANSFER ;BR IF NOT JRESET THE INDICATOR MOV B8R JSR CLRB CLRB JSR RESREG PC,CLRQUE #BITO5,RPCS2(R4) ;DO A MASSBUS INIT. 7% s CONT INUE 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 - RS ;CLEAR ALL OF PC +RETURN JSR 000010 020456 012250 012260 020034 CMP BNE MOV CLR CLRB BIT BNE INC ADD BIC BNE MOV CLR 6%: 7%: 015120 RTS TRNSWT sCLEAR THE TRANSFER QUEUE ULDFLG(R1) sCLEAR UNLOAD FLAG #BIT12,RPCS2(R4) ;'NED' SET ? 6% :BR IF YES R1 sMOVE TO THE NEXT DRIVE #2,R3 #4C7,R1 1% ;BRANCH IF MORE DRIVES #-1,DTUW sNO DATA TRANSFERS UNDERWAY TRNSWT ;CLEAR THE 'TRANSFER WAIT' QUEUE THE REQUEST QUEUES ;LOOK AHEAD ROUTINE *CALL MOV MOV JSR RETURN1 #DRVNUM,R1 #DPB _R2 RO,LA 013704 010164 004037 000036 015252 022662 015146 015150 015154 015162 015164 015170 015172 015174 015176 015204 015210 015212 015214 015216 015220 015224 001037 105261 012376 000010 017344 LA: 00. 062703 023703 002600 012406 (SP)+,12(R2) BNE INCB CMPB BGT Move SWAB ASR 012404 000010 000340 017344 4% CMP RPCC 000012 012326 012326 JSR RPADR R4 R1,RPCS2(R4) RO,RD.RP MoV MOV ASR MoV 177776 JSR RPLA 1%. 4% SuB BGE ADD cmp ;ERROR RETURN sSTART A SEARCH ;START A DATA TRANSFER RETURNZ RETURN3 015122 015126 015132 015136 015140 015142 :DRIVE NUMBER ;POINT TO DPB ;GO CHECK THE WINDOW ;GET RPCS1'S ADDRESS sSELECT DRIVE ;READ CURRENT CYLINDER ;ERROR RETURN ADDRESS ;1S CURRENT CYLINDER=DESIRED :CYLINDER? SEXIT IF NO 3% LACNT(R1) ; INCREMENT THE LOOK AHEAD COUNT LACNT(R1) ,MXLACT ;EXCEED MAX? 2% ;BRANCH IF YES 10(R2) ,R3 sGET DESIRED SECTOR ADDRESS AND R3 ;MULT. BY 64--ALIGN WITH g% ;LOOK AHEAD REGISTER #340,3#PS RO,RD.RP ;PRIORITY LEVEL ‘7'’ sREAD LOOK AHEAD REGISTER %2P)+.R3 s CALCULATE THE DEI TA #<22.+64.>,R3 MXDLTA,R3 ;MAKE THE DELTA POSITIVE ;CHECK THE DELTA TO SEE SEQ 0069 3699 3700 3701 3702 3703 3704 3705 3706 N7 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 015230 015232 015236 015240 015244 015246 015250 015252 015256 002406 023703 002003 105061 005720 005720 000402 004737 000200 30A(1052) 20-MAR-78 2%: 3%: 4%: 5%: 014566 F PAGE 72 6 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 012410 012326 10:25 BLT CMP BGE CLRB 3% MNDLTA,R3 3% LACNT(R1) sIF 1T IS WITHIN THE ;WINDOW=--~IF YES, ZERO s THE LOOK AHEAD COUNT ;AND TAKE THE 1/0 EXIT TST BR JSR RTS (RO) + 5% PC,CI7 RO ;ADJUST THE RETURN ADDRESS JEXIT :PROCESS THE ERROR ;RETURN TST (RO)+ ;s INTERRUPT SERVICE ROUTINE 015260 015266 015270 015322 112737 104412 013704 013701 002403 004737 000402 004737 104413 105037 000002 000001 012314 ISR: Q12376 012362 015324 015464 1$: 2%: 012314 mMovB SAVREG #1,ACTDRV MoV DTUW,R1 MOV RPADR R4 BLT JSR BR 1% PC,TD 2% JSR RESREG CLRB RT1 : TRANSFER DONE 015324 015330 015336 015340 015346 015350 015354 015360 015366 015372 015376 015400 015402 015404 015406 015412 015414 015420 015424 015426 015432 015434 015442 015446 015452 015456 015462 012737 105061 012240 177777 012362 012761 177777 012342 012310 012310 000200 000010 017344 TD: 000016 CLRB MoV ASL MOV ASR MoV CLR BIS MOV JSR RPCS1 cl7 ROL BMI TST BPL 012336 017716 013456 1%: 000113 2%: 100100 020456 017716 040111 000113 000016 JSR JSR BR MoV BR BIS JSR JSR MOV MOV BR PC.SC ACTDRV ;SET "'ACTIVE DRIVER'' FLAG ;SAVE RO - RS ;ADDRESS OF RHSCS1 ;GET 'DATA TRANSFER UNDERWAY'' INDICATOR ;BRANCH IF NO DATA TRANSFER UNDERWAY ;CALL TRANSFER DONE JEXIT ;CALL SPECIAL CONDITIONS ;RESTORE RO - RS ;CLEAR ''ACTIVE DRIVER'' FLAG ;RETURN ROUTINE DRVACT(R1) #-1,DTUW R1 #-1,TIMER(RT) ;SET DRIVE ACTIVE INDICATOR TO IDLE sNO DATA TRANSFERS UNDERWAY s CANCEL TIMEOUT R1 TRNSWT ,R2 ;GET 'DPB'' ADDRESS FROM THE #B1707,16(R2) R1,RPCS2(R4) RO,RD.RP ; TRANSFER ERROR(TRE=1)? TRNSWT (SP)+ 3% : TRANSFER WAIT QUEUE--CLEAR QUEUE ;SET DONE ;SELECT THE DRIVE ;BR IF YES SAVEFG ;SAVE THE RH11/RPQ4/5/6 REGISTERS? 1% ;BRANCH IF NO PC,SVRH11 s YES--SAVE THE REGISTERS PC,OPT ;CALL OPTIMIZER SC ;CHECK OTHER DRIVES #113, (R4) ;RELEASE THE DRIVE SC :; CHECK FOR OTHER DRIVES #BIT15!BIT06,16(R2) ;SET DATA ERROR FLAG PC.EMPTYQ ;EMPTY THE 'DRIVE'S WAIT'' QUEUE PC,SVRH11 ;SAVE THE RH11/RP04/5/6 REGISTERS #40111, (R4) :ISSUE A 'DRIVE CLEAR'" #113, (R4) :ISSUE A RELEASE TO THE DRIVE SC ;CHECK FOR OTHER PRIVES ;SPECIAL CONDITION ROUTINE SEQ 0070 (T en] CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC P11 20-MAR-78 10:22 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 k144 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 015464 015470 015472 015476 015500 015502 015504 015506 015512 015514 015520 015522 015524 015526 015532 015534 015536 015540 015542 015544 015546 015550 015552 015556 015560 015564 015570 015572 015576 015602 116403 001014 004037 000000 014666 106126 100405 004037 104001 004737 015626 015632 015634 015642 015644 015650 015654 000016 ) 6 20-MAR-78 10:25 PAGE 73 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) SC: 017344 020636 020034 1$: 2%: 000001 SC3: SC4: 012270 SCS: 016456 012300 18: 016456 012250 2%: 012316 015604 015610 015612 015616 015622 30A(1052) 004737 020552 017716 016406 105761 012250 - 040000 012230 016316 012232 3%: 015656 015662 015664 012240 5%: 015670 015674 015676 012270 15704 015712 015714 015720 015724 020000 15702 016406 6%: 012250 000113 017524 012236 mMove BNE ;ggs1 cl8 ROLB BMI JSR ERROR JSR RTS RPAS(R4) ,R3 ;READ 'RPAS'’ (SP)+ 1% ;1S "'IE''=1? ;YES, NO DRIVES TO CHECK ;SAVE THE ADDRESS IN 'S$ESCAPE’ REPORT AN ILLEGAL INTERRUPT ;SET INTERRUPT ENABLE 2% RO,RD.RP RO,ES.SAV 1 PC,SET.IE PC CLR mMovB MoV CLR BIT BNE INC ASLB BNE =(SP) R3, (SP) #1,R3 R1 R3, (SP) SC5 R1 R3 SC3 TSTB BEQ JMP TSTB 8EQ JMP TST8 BGT 1ST8 BLE JSR JSR JSR DPINT(R1) 1% SC13 DPRQS (R1) 2% SC13 DRVSTA(R1) 5% ULDFLG(R1) 5% PC,GETREQ PC,SVRH11 PC,SC12 TST RTS (SP)+ PC ;BRANCH IF ANY 'ATA' BITS SET ;READ CONTROL AND STATUS REGISTER sRETURN ;PROCESS ALL DRIVES THAT HAVE ;AN "ATA''=1 ;ATA=1? : YES==BRANCH ;MOVE TO THE NEXT DRIVE ;BRANCH IF MORE TO CHECK? ;CLEAN OFF THE STACK sRETURN TO USER sINITIALIZING THE DRIVE ? ;BR IF NOT ;PROCESS THE DRIVE ;PORT REQUEST OUTSTANDING ? :BR IF NOT ;START THE OUTSTANDING COMMAND ;CHECK THE DRIVE STATUS ;BRANCH IF ONLINE ;UNLOAD IN PROGRESS? ;BRANCH IF NOT ;GET DPB POINTER :SAVE THE RH11/RP04/5/6 REGISTERS :SAVE RPDS1, RPER1, RPERZ2, AND RPER3 2ALSO DO A DRIVE INIT (DRVINT) TSTB BLE BIT BNE JMP Mov BR 1STB BNE JSR DRVSTA(R1) 6% #BIT14,RPERRS 3$ SCN RPERRS+2,R5 SC6A DRVACT (R1) SC6 PC,SC12 ;DID DRIVE COME ONLINE? :NO~~~BRANCH ;WAS THERE AN ERROR? ;BR IF ERROR ;NO ERROR ‘€S ~= PICKUP RPER1 AND :GO PROCESS THE ERROR ;DRIVE ACTIVE WITH COMMAND OR ERROR RECOVERY ? ;BR IF EITHER ;SAVE RPDS1, RPER1, RPERZ2, AND RPER3 TSTB BNE TSTB BMI BIT BNE MoV JSR DPINT(R1) SC4 DRVSTA(R1) 7% #BIT13 ,RPERRS+6 8% #113,-(SP) RO,WRT.RP sTRYING TO INIT THE DRIVE ? ;BR IF YES, CHECK ON MORE DRIVES ;CHECK ON DRIVE'S STATUS ;BR IF UNSAFE ;ADDRESS PLUG CHANGED ? ;BR IF YES ;RELEASE COMMAND ;WRITE THE COMMAND INTO RPCS1 RPCS1 ;ALSO DO A DRVINT ;REGISTER INDEX SEQ 0071 (mle] CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC PN 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20~MAR-78 10:22 015726 015730 015732 015736 015740 015742 015742 015746 015750 015752 015754 015762 015764 015770 015774 016000 016002 016004 016066 016010 016012 076016 016020 016026 016030 016034 016036 016266 011605 004037 104002 30A(1052) 020636 000677 004037 104005 000673 006301 012761 006201 004737 010164 094037 000012 016266 011605 006126 100407 105761 003137 052762 20-MAR-78 012342 7%: SC8 MOV 88 BR SC6: R1 #-1,TIMER(R1) sSETUP TO ADDRESS WORDS ;STOP THE TIMER JSR MOV JSR PC.GETREQ R1,RPCS2(R4) RO.RD.RP 016102 016106 016110 016112 016114 016116 016120 016126 016132 016140 016142 016146 016150 016156 016164 016166 016174 000016 017344 1$: 110000 000016 017716 010000 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 ;READ ERROR REGISTER #1 s INFORM USER OF JSR MOV JSR PC,SVRH11 #111,-(SP) RO,WRT.RP (SP)+,R5 JAND SAVE IT IN R5 SC8 ROL B8MI RS 1% ;WAS 'UNSAFE'' CONDITION =1? ;BRANCH IF YES BEQ SC7 ;BR IF NOT R2 ERROR RECOVER COMPLETION :SAVE RH11/RP04/5/6 REGISTERS ;ISSUE A DRIVE CLEAR sANYTHING IN QUEUE ? gés g%%T1S!BlTO?!BIT05,16(R2) JSR RO,RD.RP ;READ DRIVE STATUS REG. #1 BPL Move JSR gés (SP) ,RS (SP)+ ;SAVE RPDST1 :"ERR'=1? 2% :BR 1F NO~--UNSAFE CLEARED #-1,DRVSTA(RT) ;DRIVE IS UNSAFE PC,SVRH11 : SAVE RH11/RP04/5/6 REGISTERS gg;T15!BlT12,16(R2) ;INFORM USER OF UNSAFE ERROR #BIT12,RS 3s #-1_,DRVACT(R1) g},DRVSTA(R1) Mol =1 ? ;BR _IF YES ;ACTIVE ERROR RECOVER sONL INE :?GOOO..TIHER(R1) RPDS1 177777 012240 012250 BIT BNE mMovB ggVB 072460 012342 :gx 000001 2%: (SP)+ 1% ;GET Tht DPR POINTER FROM THE QUEUE sSELECT DRIVE ;READ THE RPO4'S STATUS REG. RO,RD.RP SC8 012250 (SP) ,RS JRESTORE THE DRIVE ADDRESS JSR RPER1 Mov ROL 177777 R1 L ' ;CHECK FOR MORE DRIVES g%;T15!BITU?!BITO3,16(R2) TST 100240 SC4 ;SAVE THE ADDRESS IN 'S$ESCAPE'’ JREPORT THE UNEXPECTED ATTENTION gés RPCS1 SC6A: ;GO CHECK FOR MORE ATA'S ASL MOV BR SC8 mMov 017716 000111 017524 SC4 ;SAVE THE ADDRESS IN 'SESCAPE' sREPORT THE ADDRESS PLUG CHANGE 1STB BGT 1%: sPARITY EXIT ADDRESS ;PICKUP (RPAS) BEFORE THE ERROR CALL RO,ES.SAV 5 ROL BMI 000016 (SP) ,RS JSR ERROR SC8 MoV 012240 SEQ 0072 RO,ES.SAV 2 RPDS1 017344 6 JSR ERROR ASR 020552 000010 017344 100210 H PAGE 74 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 020636 177777 10:25 ; INFORM USER OF ERROR IN R5 ;START 30 SECOND TIMER C. Ci CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.F11 20-MAR-78 10.22 3867 3868 3869 3870 387 3872 3873 3874 3875 3876 3877 3878 01617¢ 016202 016210 016214 016220 016224 016226 016232 016240 016244 016246 016252 016256 016260 016262 016266 016272 016274 016300 016304 016306 016312 016316 016322 016324 016330 016334 016342 016344 016350 016356 016362 016364 016370 016376 016402 016406 016412 016420 016426 016434 016442 016446 016450 016452 016454 016456 016460 016466 016470 016474 016502 016506 016510 000137 052762 015540 100220 012240 020456 012316 012316 012364 012250 1 20-MAR-78 10:25 PAGE 75 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 000016 3%: SC7: 000016 1%: 000113 017524 JSR RPCS1 2s: SC8: 012240 020552 014566 014614 015540 012316 020574 000200 012336 010164 016437 017716 012364 013456 015540 000010 000012 000014 000040 000042 012626 1%: 2%: SC11: 012312 000010 012230 012232 012234 012236 2%: SC12: 032714 000010 012364 004000 012342 000016 SC8 SC13: SEQ 0073 SC4 #BIT15!BITO7!BIT04,16(R2) DRVACT(R1) sDRIVE IS IDLE PC,EMPTYQ ;DUMP THE QUEUE 1% :BR IF NOT ULDFLG(R1) ULDFLG(R1) ; INFORM USER OF ERROR JUNLOAD IN PROGRESS OR QUEUE? JCLEAR UNLOAD FLAG ATABIT(R1) ,RPAS(R4) ;CLEAR ATTENTION BIT DRVSTA(RY) ;IS THE DRIVE UNSAFE ? 2% #113,-(SP) RO,WRT.RP JBR IF IT IS sRELEASE COMMAND ;WRITE THE COMMAND INTO RPCS1 ;REGISTER INDEX JPARITY EXIT ADDRESS JMP TSTB BEQ JSR JSR B8R JSR JMP TST8B BLE CLRB CLRB 8ITB SC4 DRVACT (R1) 1% BNE JSR 8IS 2% JSR JMP MOV PC,OPT ;START A REQUEST PC (SP)+ sRETURN ;POP PC OFF ASL MoV R1 3;1.TIHER(R1) ;SETUP TO ADDRESS WORDS ;STOP THE TIMER Mov move R1,RPCS2(R4) ;SELECT THE DRIVE ATABIT(R1) ,RPAS(R4) CLEAR THE ATTENTION BIT 1ST BPL JSR MovB MOV MoV MOV MOV JSR 1%: 177777 006301 1%: 000016 005726 012761 JMP BIS CLRB JSR TSTB 86T CLRB mMove TST8B BMI MoV 015540 012316 012240 012364 6 30A(1052) RTS TST ASR BIT BNE ASL :CHECK FOR MORE DRIVES ;1S DRIVE IDLE? PC,CI7 2% ; YES=-=BRANCH ;GET DPB POINTER ;PROCESS THE PARITY ERROR ; CONT INUE SC4 ;CHECK MORE DRIVES PC,GETREQ PC,CI17B ULDFLG(R1) 1% ULDFLG(RY) JPROCESS THE UNCORRECTABLE PARITY ERROR ;' UNLOAD IN PROGRESS'"? ;BRANCH IF NO ;CLEAR UNLOAD FLAG DRVACT(R1) ;SET DRIVE IDLE ATABIT(R1) ,SRCHWT :DOING A SEARCH OPERATION FOR PC.POPOUE #B1707,16(R2) ;AN 170 COMMAND? ;BRANCH IF YES ;REMOVE REQUEST FROM QUEUE ;SET "DONE'' BIT 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 SC4 ;CHECK FOR MORE ORIVES R1,RPCS2(R4) ;SELECT DRIVE RPDS1(R&) ,RPERRS ;SAVE THE FOUR REGISTERS THAT RPER1(R4) ,RPERRS+2 ;WILL TELL US SOMETHING RPERZ(R4) ,RPERRS+4 RPER3(R4) ,RPERRS +6 RO,DRVINT ;INIT. THE STATE OF THE DRIVE 1% ;TAKE ERROR EXIT SC8 #BIT11, (R4) ;? OF THE STACK ;PROCESS THE PARITY ERROR ;DRIVE AVAILABLE ;BR IF AVAILABLE ° CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC P 20-MAR-78 10:22 3923 3924 3925 3926 3927 3928 3929 3930 3931 016512 012761 016520 016522 016524 016530 016532 016536 016542 016544 016550 016552 016554 016556 016562 016570 016574 016600 016602 016606 016612 006201 000433 105761 001424 105061 004037 000240 105761 003014 023420 30A(1052) 6 J 20-MAR-78 10:25 PAGE 76 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 012342 €12270 1%: 012270 012626 140000 017716 020456 #10000.,TIMER(RT) ASR BR R1 TSTB BEQ CLRB JSR NOP TST8 012250 020552 MOV 000016 2%: 012300 013456 015540 is: BGT TST BEQ JSR BIS JSR JSR BR CLRB JSR JMP 3% DPINT(R1) 2% DPINT(R1) RO,DRVINT ;START 10 SEC TIMER AGAIN JEXIT JINITIALIZING THE DRIVE ? ;BR IF NOT ;CLEAR THE INIT INDICATOR ;GO INIT THE DRIVE ;DUMMY PARITY ERROR RETURN ;DRIVE ONLINE ? ;BR IF YES -- START ORDER ;QUEUE ENTRY FOR THE DRIVE ;BR IF NOT PC,GETREQ ;GET DPB ADDRESS #BIT15!BIT14,16(R2) ;INFORM USER THAT DRIVE OFFLINE PC,SVRH11 ;SAVE THE REGISTERS PC.EMPTYQ JEMPTY THE REQUEST QUEUE DRVSTA(R1) 2% R2 3% 3% DPRQS (R1) ;CLEAR THE PORT REQUEST INDICATOR SC4 ;PROCESS OTHER DRIVES PC,OPT ;START THE PENDING REQUEST ;RP04/5/6 TIMER ROUTINE s CALL MoV #TIME,-(SP) PC.RPTMR SJELASPED TIME IN MILLISECONDS ON THE STACK TST BNE MOvB SAVREG CLR CLR TST ACTDRV 4% #1,ACTSTR ;CHECK *'ACTDRV & ACTSTR'' s1F NON ZERO EXIT ;SET "ACTSTR'' ;SAVE RO - RS ;START WITH DRIVE O JSR 016616 016622 016624 016632 016634 016636 016640 016644 016646 016654 016656 016662 016664 016666 016670 016674 016676 016700 016704 016706 005737 001030 112737 104412 005001 005003 005763 002407 166663 012314 000001 RPTMR: 012315 012342 000002 1%: 012342 016710 2%: 000010 012315 3s: A ¥ BLT SuB 86T JSR BR INC TST (MP BGT RESREG CLRB MoV RTS R1 R3 ;CALL RPO4/5/6 TIME ROUTINE R1 ;1S THE TIMER RUNNING? ;BRANCH IF NO ;COUNT THE INTERVAL ;BR IF NO SOFTWARE TIMEOUT ;CALL SOFTWARE TIMEOUT ROUTINE ;GO TO THE EXIT ;MOVE TO NEXT DRIVE #8..R1 Ik 3 :OUT OF DRIVES? ;BRANCH IF NO EIHER(RS) $ 2(SP) ,TIMER(R3) 2% PC,STO 3% (R3)+ ACTSTR (SP)+,(SP) PC ;RESTORE RO - RS ;ZERO ACTIVE SOFTWARE TIMEOUT ROUTINE FLAG sADJUST THE STACK sRETURN ;SOF TWARE TIMEOUT ROUTINE 'NOTE: THIS ROUTINE MUST BE ENTERED AT PRIORITY 6 OR GREATER 1CALL: STO Mov JSR #DRVNUM,R1 PC.STO ;DRIVE NUMBER s CALL SEQ 0074 C Ci CZRJBCO, RPO4/S5/6 FMTR MACY11 CZRJBC P 20-MAR-78 10:22 30A(1052) K 6 20-MAR-78 10:25 PAGE 77 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 3979 RETURN 016710 016712 016714 016720 016724 016730 016732 016734 016736 016740 016744 016746 016752 016754 16760 016764 016766 016772 017000 017004 017012 017016 017022 017024 017026 017032 01703% 017040 017042 017046 017052 017054 017060 017066 017072 017076 017104 017106 017110 017114 017116 017124 017130 017134 017136 017142 017146 017150 017154 017156 017162 017164 017170 017172 010146 010346 013704 010164 004037 000012 STO: 012376 000010 017344 MoV MOV MOV MOV JSR RPDS1 ST0S 017232 TST8 STO1: 012270 012300 TST8 BNE 012310 012362 020552 101000 017716 000040 012240 012316 000016 1%: 000010 012240 012310 012362 100400 012240 012316 177777 000016 012342 3s: 4% 000010 177777 012310 020400 000016 012364 012270 012300 012362 017344 MOV cMP BEQ JSR BIS JSR MoV 2%: 012626 020552 BMI TSTB BNE 012362 ST02: CLRB CLRB CLR CLR JSR BR 15718 BEQ MoV cMP BEQ JSR 8IS CLRB CLRB MoV TST INC CMP BGT MoV CLR JSR BR MovB 8118 BNE TST8 BNE TST8 BNE cMP BNE JSR R1,-(SP) R3,-(SP) ;SAVE R1 ;SAVE R3 (SP)+ ST02 DPINT(R1) S102 DPRQS(R1) ST02 ;1S 'DRY''=1? ;BR IF YES ;TRYING TO INTIALIZE THE DRIVE ? ;BR IF YES sOUTSTANDING PORT REQUEST FOR THE DRIVE ? ;BR IF YES PC,GETREQ :GET DPB ADDRESS RPADR, R4 ) R1,RPCS2(R4) RO,RD.RP TRNSWT ,R2 R1.0TUW 1% :GET ADDRESS OF °'RP(CS1'’ ;SELECY THE DRIVE ;READ 'DRIVE STATUS REG'" sPICKUP TRANSFER WAIT QUEUE : TRANSFER UNDERWAY ON THIS DRIVE? ;BRANCH IF YES #BIT15!BIT09,16(R2) ;SET THE ERROR FLAGS PC,SVRH11 ;SAVE RH11/RP04/5/6 REGISTERS #BITOS,RPCS2(R4) ;''INIT'' THE MASS BUS DRVACT(R1) ;ORIVE IS IDLE ULDFLG(R1) ;CLEAR THE UNLOAD FLAG RO,DRVINT SINIT. DRVACT(R1) 43 TRNSWT ,R2 DTUW,R1 ;ORIVE IDLE BEFORE THE INIT.? : YES=-BRANCH ;GET TRANSFER WAIT QUEUE ;WAS THERE I/0 ON THIS DRIVE? :} ST05 3% ;START WITH DRIVE O THIS DRIVE ;PARITY ERROR RETURN ; YES~=BRANCH PC,GETREQ :GET THE DPB POINTER FROM QUEUE #BIT15!BIT0O8,16(R2) . INFORM USER OF INIT. DRVACT(R1) ULDFLG(R1) #-1,TIMER(R3) :SET DRIVE ACTIVE TO IDLE :NO UNLOAD ;STOP THE TIMER (R3)+ R1 ;UPDATE THE INDEX ; INCREMENT THE DRIVE NUMBER 2% :NO--LOOP #8..R1 #-1,0TUM TRNSWT PC,CLRQUE ST09 RPAS(R4) ,RS ATABIT(R1) ,RS ST03 DPINT(R1) ST06 DPRQS (R1) ST07 R1,DTUW ST01 RO,RD.RP sLAST DRIVE BEEN CHECKED? ;NO DATA TRANSFERS UNDERWAY ;CLEAR TRANSFER WAIT QUEUE ;CLEAR ALL REQUEST QUEUES JEXIT sREAD ATTENTION REG ;1S ATTENTION FOR THIS DRIVE UP ? s YES=-BRANCH ;TRYING TO INTIALIZE THE DRIVE ? ;BR _IF YES - DRIVE NOT ONLINE sOUTSTANDING PORT REQUEST FOR THE DRIVE ? ;BR _IF YES = NO RESPONSE TO REQUEST ;DATA TRANSFER UNDERWAY FOR THIS DRIVE ;BR IF NO s YES--CHECK 'RDY"’ SEQ 0075 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.PN 20-MAR-78 10:22 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 64047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 017176 017200 017202 017204 017206 017212 017214 017220 017222 017230 017232 017236 017240 017244 017250 017256 017262 017264 017266 017274 30A(1052) L 6 " 20-MAR-78 10:25 PAGE 78 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) RPCS1 STOS 000000 017232 105726 ST03: 012270 012300 177777 012342 1%: 014666 STOS: 012270 012250 ST06: 177777 020552 012342 140000 000016 177777 012300 020552 012342 100004 020456 017716 000016 ST07: STO8: ST09: TS1B 8PL TSTB BNE TSTB BEQ MOV BR JSR BR CLRB CLRB MOV JSR T1ST BEQ BIS BR MOV CLRB JSR TST BEQ MOV JSR JSR MoV MOV RTS 4066 (SP)+ STO1 DPINT(R1) 1% DPRQS(R1) STO9 #-1,TIMER(R3) ST09 256518 ;BR IF 'RDY''=0 sINITIALIZING THE DRIVE ? ;BR IF INIT PENDING ;PORT REQUEST PENDING ? ;BR IF NOT ;STOP THE TIMER JEXIT ;GO HANDLE THE PARITY ERROR DPINT(R1) DRVSTA(R1) #-1,TIMER(R3) ;CLEAR THE INITIALIZE :SET UNIT OFFLINE ;STOP THE TIMER PC,GETREQ :GET THE DPB ADDRESS #-1,TIMER(R3) DPRQS(R1) PC,GETREQ ;STOP THE TIMER ;CLEAR PORT REQUEST INDICATOR PC.EMPTYQ PC,SVRH11 ;CLEAR THE QUEUE FOR THE DRIVE ;SAVE THE REGISTERS PC ;RETURN ;GET DPB ADDRESS R2 ;QUEUE ENTRY FOR DRIVE ? ST09 :BR IF NONE #BIT15!BIT2,16(R2) .INFORM USER OF PORT REQUEST ERROR (SP)+,R3 (SP)+,R1 ;RESTORE R3 ;RESTORE R1 sROUTINE TO READ A RH11/RP04/5/6 REGISTER 4069 4070 407 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 ‘CALL : : JSR INDEX RO,RD.RP 013737 011646 013737 062037 013727 000000 000000 013766 012374 017512 012376 017370 017370 017372 012376 000010 010000 172752 020000 RD.RP: MOV MOV MOV ADD RD.RP1: MOV 000002 RD.ADR: WRD: .WORD .WORD ;GO READ A REGISTER ;REG. INDEX FROM BASE ;ERROR ADDRESS--PROCESS ERROR STARTING ;AT THIS ADDRESS ERRADR ;CONTENTS OF REG. RETURN 017344 017352 017354 017362 017366 017370 017372 017374 017402 017406 017412 017416 017420 017424 017430 INDICATOR R2 sREQUEST IN QUEUE ? ST09 :BR IF NOT #BIT15!BIT14,16(R2) ;INFORM THE USER DRIVE NOT AVAILABLE ST08 sFINISH 4067 4068 SEQ 0076 IS ON THE STACK MCPEMX,RD.RP2 (SP) ,~(SP) ;MAX. RETRYS ALLOWED ;SAVE RO FOR RETURN (RO) +,RD.ADR a(PC)+,(PC)+ ;USING THE BASE AND THE INDEX RPADR,RD.ADR 0 RD.WRD,2(SP) RPADR ,~(SP) #RPCS2, (SP) #BIT12.3(SP)+ RD.RP3 R, = (SP) aRPAD 1@1113.(59) ;FORM THE DESIRED ADDRESS ;READ THE DESIRED REGISTER OF THE RPO4 ;ADDRESS IS FORMED HERE JREG. CONTENTS PUT HERE SRETURN IT TO THE USER sPUT THE ADDRESS ON THE STACK ;FORM THE ADDRESS OF RP(CS? ;CHECK THE °'NED' BIT :BR IF DRIVE NON-EXISTENT ;READ RPCS1 ;DID MCPE SET? ;BRANCH IF YES Ci M 6 20-MAR-78 10:25 PAGE 79 CZRJBCO, RPO4/5/6 FMTR MACY1T1 30A(1052) CZRJBC.P1T SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 20-MAR-78 10:22 017432 017434 017436 017436 017442 017444 017450 017452 017456 017460 017462 017464 017470 017472 017500 017504 017506 017510 017512 017514 017516 017520 017522 022620 000432 004037 104003 005737 100405 032716 001402 005726 1%: 020636 012362 040000 040000 012376 017506 2%: 017506 3s: RD.RP2: cmp BR (SP)+,(RO) ¢+ RD.RP4 JSR ERROR §0.ES.SAV TST 8MI BIT BEQ TST BR RD.RP4: » OTUW P4 3 #B8IT14, (SP) 2% SWAB [ 01Y) (SP)+ RD.RP3 #B81T14, (SP) (SP) RPADR,3$% .WORD 0 BIS INC MovB DEC .WORD BGE RD.RP3: MOV MOV RTS 3% ;ADJUST FOR RETURN JEXIT :SAVE THE ADDRESS IN 'SESCAPE’ ;REPORT '"MCPE'' ERROR ;DATA TRANSFER UNDERWAY? ;NO--BRANCH :NO~=='TRE''=1? ; 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 (SP)+,3(PC)+ ;WRITE THE HIGH BYTE OF RP(CS1 (PC)+ ;EXCEEDED MAX. RETRYS 3 RD.RP1 (RO) ,RO (SP)+,(SP) RO s ADDRESS STORAGE ;BRANCH [F NO ;FATAL ERROR EXIT JROUTINE TO WRITE A REGISTER s 0,0 N s CALL ; s 3 O~NOWVIBWN=O b & -—d b ad b b b d h b 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 6105 4106 4107 4108 SEQ 0077 017524 017532 017540 017542 017546 017550 017556 017560 017564 017566 017570 017572 017576 017602 017610 017612 017614 017616 017622 017626 017632 017634 017640 013737 016637 012616 012037 001015 122737 002411 004037 000000 017706 000316 042716 112637 063737 012737 000000 000000 013746 062716 032736 001025 004037 000014 012374 000002 017700 017612 017614 000150 017612 017344 177770 017613 012376 012376 000010 010000 017344 017614 WRT.RP: MOV JSR INDEX DATA,-(SP) RO,WRT.RP :DATA TO BE LOADED ON THE STACK sCALL THE ROUTINE TO LOAD(WRITE) THE REG. ;INDEX OF THE REGISTER TO BE LOADED ;ADDRESS TO RETURN TO ON AN ERROR ;ERROR FREE RETURN MCPEMX ,WRT.R2 sMAX RETRYS ALLOWED ;SAVE THE WORD TO WRITE sADJUST THE STACK sGET INDEX OF REGISTER TO BE WRITTEN ERRADR RETURN MOV MOV MOV MoV BNE CMPB BLT JSR RPCS1 WRT.R3 SWAB 8I1C MovBe 1%: ADD WRT.R1: MOV WRT.WD: .WORD WRT.AD: .WORD MOV ADD BIT BNE JSR RPER1 2(SP) ,WRT.WD (SP) ¢+, (SP) %50)*.URT.AD #150,WRT.WD 1% RO,RD.RP (SP) #*C7,(SP) (SP)+ ,WRT . WD+1 RPADR ,WRT.AD (PC)+,a(PC)+ 0 RPADR, - (SP) #RPCS2, (SP) #BIT12.3(SP)+ WRT.R3 RO,RD.RP ;BRANCH IF NOT RP(CS1 ;1S THE COMMAND FOR DATA TRANSFERS? ;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 ;ADDRESS IS FORMED HERE sPUT THE ADDRESS ON THE STACK ;FORM THE ADDRESS OF RPCS?2 ;CHECK THE °'NED® BIT ;BR IF DRIVE NON-EXISTENT ;CHECK FOR PARITY ERROR ON WRITE r7e_,BCO, RPO4/5/6 FMTR CZRJBC.P1T 4147 4148 6149 4150 6151 4152 6153 64154 4155 4156 4157 4158 4159 4160 4161 4162 2}22 MACY11 20-MAR-78 10:22 017642 017644 017650 017652 017660 017664 017666 017670 017674 017676 017700 017702 017704 017706 017710 017712 017714 017706 032726 001420 016037 004037 000000 017706 004037 104004 30A(1052) 20-MAR-78 017664 1%: 020636 005327 WRT.R3 BIT BEQ MOV JSR .WORD WRT.R3 JSR ERROR DEC 000003 002342 WRT.R2: 011000 WRT.R3: MOV 005726 .WORD BGE TST 000401 005720 WRT.R4: 000200 N PAGE 8C 6 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) 000010 177776 017344 10:25 BR TST WRT.R5: RTS #B1703, (SP)+ WRT.R4 =2(R0),1% RO,RD.RP O :BRANCH IF 'PAR=0"' RO,ES.SAV 4 ;PICKUP THE INDEX ;READ THE REG. JREG. INDEX JRETURN TO THIS ADDRESS ON ERROR :SAVE THE ADDRESS IN ‘'SESCAPE'’ JREPORT THE PARITY ON WRITE ERROR 3 WRT.R1 sRETRY COUNTER sTRY AGAIN IF NOT FINISHED (PC)+ (SP)+ (RO) ,RO WRT.RS (RO) + RO ;DECREMENT THE ERROR COUNT ;CLEAN OFF THE STACK ;TAKE THE 'PARITY ON WRITE'' ERROR EXIT JEXIT ;ADJUST FOR ERROR FREE EXIT 2}22 ;ROUTINE TO SAVE THE RH11/RP04/5/6 REGISTERS AS PER DPB+14 4167 4168 ;CALL : 2}?8 : 4171 4172 4173 4174 017716 017720 017722 017724 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 z}gg 017734 017740 017742 017746 017754 017756 017764 017766 017770 017772 017776 020000 020002 020004 020012 020014 020022 020024 020030 020032 4175 4197 4198 4199 4200 4201 4202 017730 104412 005702 001430 013704 111264 016203 001433 005037 023727 001006 032764 001002 SVRH11: 012376 000010 000014 012623 023727 001406 062737 000751 004737 104413 000207 017776 017776 000022 000200 000010 017344 1%: 2%: 3%: 017776 000046 000002 017776 014566 #DPBNUM ,R2 SAVREG TST BEQ MoV ;SAVE RO - RS R ;QUEUE ENTRY FOR THE DRIVE ? 4% ;BR IF NONE RPADR R4 (R2) ,RPCS2(R4) ;SELECT DRIVE 14(R2) ,R3 ;GET THE ERROR TABLE POINTER 6% SEXIT IF NO ADDRESS 3% :COUNTER & POINTER 3% ,#RPDB ;REACHED THE BUFFER REGISTER ? 2% sBR IF NOT #BIT07,RPCS2(R4) ;'OR' SET ? 2% sBR IF SET mMove 005023 000405 004037 000000 020024 MoV JSR 4$: 5%: 6%: MOV BEQ CLR cMP BNE 8IT BNE CLR BR JSR WORD 5% MoV cMP BEQ ADD BR JSR RESREG RTS PC.SVRHIN (R3)+ 4% RO,RD.RP O (SP)+,(R3)+ 3% ,#RPEC? 6% #2,3% 1% PC.C17 PC ;ROUTINE TO SET THE s CALL ; ; ; MOV JSR RE TURN N :DPB POINTER TO R? ;SAVE THE DRIVES REG'S ;STORE RPDB AS ZEROES . s CONTINUE sREAD THE SELECTED REGISTER ;REGISTER INDEX ;ERROR RETURN ADDRESS ;STORE THE REGISTER CONTENTS sREACHED THE END ? ;BR IF YES : INCREMENT THE REGISTER INDEX ;CONTINUE READING THE REGISTERS sPROCESS THE UNCORRECTABLE PARITY ERROR ;RESTORE RO ~ RS sRETURN INTERRUPT WITHOUT GETTING A ''TRE" #DRVNUM,R1 PC,SET.IE SEQ 0078 ;DRIVE NUMBER TO R1 JSET “IEY SEQ 0079 1 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 6217 4218 4219 4220 6221 4222 4223 6224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 010446 013704 010164 011446 052716 000316 112714 032764 020074 020076 020102 020104 040000 000100 010000 SWAB 000010 1%: 2%: ;ADJUST FOR DATO #BIT06, (R4) JSET 'IE' #BIT12 ,RPCS2(R4) ;IS 'NED''=1? 1% ;YES--CLEAR ''TRE'' B8R 2% RTS PC JRETURN TO CALLER 0 ;DRIVE 0 MOVB MoV .QUEUE COUNT QCNT: (SP) :SAVE R4 ;PICKUP ADDRESS OF RP(CS1 ;SELECT DRIVE ;READ RP(CS1 sSET THE ‘'TRE'' BIT OF THE WORD READ MOvB BIT BNE TST 000001 R4 ,-(SP) RPADR, R4 R1,RPCS2(R4) (R4) ,-(SP) #BIT14, (SP) .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE (SP)+ ;CLEAN OFF (SP)+,1(R4) (SP)+,R4 ;CLEAR ''TRE"’ ;RESTORE R4 0 0 0 0 0 0 O ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE THE STACK 1 2 3 4 S 6 7 ;QUEUE INPUT POINTERS 020116 020120 020122 020124 020126 020130 020132 020134 020200 020220 020240 020260 020300 020320 020340 020360 QINPT: _.WORD QDRVO ;DRIVE O QDRV3 ;DRIVE 3 QDRVS QDRV6 QDRV?7 :DRIVE 5 sDRIVE 6 ;DRIVE 7 .WORD .WORD QDRV1 QDRVZ .WORD QDRV4 .WORD .WORD .WORD .WORD ;DRIVE 1 ;DRIVE 2 sDRIVE & ;QUEUE OUTPUT POINTERS 4243 4252 4253 4254 4255 4256 4257 4258 020156 020160 020162 020164 020166 020170 020172 020174 020176 4244 4245 4246 4247 4248 4249 4250 4251 000207 020106 020107 020110 020111 020112 020113 020114 020115 020136 020140 020142 4242 001002 005726 000402 112664 012604 SET.IE: MOV MOV MOV MOV BIS 012376 000010 020144 020146 020150 020152 020154 020200 020220 020240 QOUTPT: QSTART: QSTOP: .WORD QDRVO ;DRIVE O .WORD .WORD QDRVO QDRV1 ;DRIVE O START ADDRESS ;ORIVE O STOP ADDRESS & DRIVE .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD QDRV1 QDRV? QDRV3 QDRV4 QDRVS QDRV6 QDRV?7 QDRV? QDRV3 QDRV4 QDRVS QDRV6 QDRV7 QTERM ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;DRIVE ;STOP ;STOP ;STOP :STOP ;STOP ;STOP ;STOP 1 2 3 & 5 6 7 DRIVE DRIVE DRIVE DRIVE DRIVE DRIVE DRIVE 1-~START 2--START 3-~~START 4--START 5--START 6--START 7 DRIVE DRIVE DRIVE DRIVE DRIVE DRIVE 2 3 4 S 6 7 1 START ADDRESS O 8 7 CZRJIBCO, RPO4/5/6 FMTR MACY11 30A(1052) c0-MAR-78 10:25 PAGE 81 CZRJBC.P1 SINGLE/DUAL PORT RH11/RPO4/5/6 DRIVER (REV 1.0) 20~MAR-78 10:22 30A(1052) 6259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 W2 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 C I4 PAGE 82 20-MAR-78 10:25 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) ;DRIVE REQUEST QUEUES QDRV0O: QDRV1: QDRVZ: QDRV3: QDRV4: QDRVS: QDRV6: QDRV7: 020200 020220 020240 020260 020300 020320 020340 020360 QTERM=, .BLKW .BLKW .BLKW .BLkWw .BLKW .BLKW .BLKW .BLKW 10 10 10 10 10 10 10 10 ;ROUTINE TO CLEAR ALL OF THE REQUEST QUEUES s CALL : 020400 020402 020406 020410 020412 020414 020416 104412 012702 005022 005022 005022 005022 012703 012701 012122 005303 001375 012703 012701 012122 005303 001375 JSR CLRQUE: SAVREG MOV CLR CLR 020106 000010 020156 1%: 000010 020156 2%: CLR CLR MOV MOV #QCNT ,R2 (R2)+ (R2)+ (R2)+ (R2)+ #8. ,R3 #QASTART R DEC BNE MOV MOV MOV DEC R3 1% #8. ,R3 #QSTART,R1 (R1)+,(R2)+ R3 RESREG RTS PC MOV BNE 104413 000207 PC.CLRQUE (R1)+,(R2)+ 2% ;SAVE RO - RS ;ZERO THE QUEUE COUNTS sDRIVES 0 & 1 sDRIVES 2 ¢ 3 ;DRIVES 46 £ S JORIVES 6 £ 7 :MOVE THE STARTING :ADDRESS OF THE QUEUE INTO ;THE QUEUE INPUT POINTER ;MOVE THE STARTING ADDRESS ;OF THE QUEUE INTO THE ;QUEUE OUTPUT POINTER ;RESTORE RO - RS JEMPTY THE QUEUE SPECIFIED BY R1 . CALL . 105061 006301 016161 006201 000207 020106 020116 EMPTYQ: 020136 ;DRIVE NUMBER TO R1 MOV DRVNUM,R1 CLRB ASL QCNT(R1) ;CLEAR NUMBER OF ITEMS IN QUEUE R1 QINPT(R1),QOUTPT(R1) ;SET OUTPUT QUEUE POINTER-INPUT POINTER R1 JSR Mov ASR RTS PC,EMPTYQ PC JROUTINE TO PUT A REQUEST IN QUEUE . CALL . MOV #DRVNUM,R1 MOV #DPB,R2 JSR RO,DRVQUE RETURN1 ;DRIVE NUMBER ;ADDRESS OF PARAMETER BLOCK ;GO PUT REQUEST IN QUEUE JRETURN HERE [F QUEUE IS FULL SEQ 0080 O CZRJBCO, RPO4/S5/6 FMTR MACY11 CZRJBC.P1 20-MAR-78 10:22 020476 020504 020506 020512 020514 020520 020526 020534 020536 020544 020546 020550 122761 000010 105261 020106 001421 006301 010271 062761 020116 020106 000002 020116 020116 020160 020156 020116 1%: 2s: CMPB 8tQ INCB ASL MOV ADD CMP BNE MOV ASR TST RTS IF REQUEST #10,QCNT(R1) 2% ;IS QUEUE FULL? (RO)+ RO :TAKE RETURN 2 ‘CALL 4 . [ . MoV JSR RETURN M #DRVNUR PC.GETREQ L 020552 020554 020560 020562 020564 020570 020572 005002 105761 001404 006301 017102 006201 000207 GETREQ: 020106 1 020136 $: 2%: CLR R2 1ST8 QCNT(R1) ASL MoV ASR R1 aQOUTPT(R1), R2 R1 BEQ RTS IS IN QUEUE ;BR IF YES-TAKE RETURN1 QCNT(R1) s INCREMENT QUEUE COUNT R1 ;PUT THIS REQUEST IN QUEUE RZ,@QINPT (R1 ) #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 ;RETURN TO USER ;ROUTINE TO GET THE 'DPB'' ADDRESS OF NEXT REQUEST 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 : DRVQUE ;RETURN HERE SEQ 0081 2% PC IN QUEUE ;DRIVE NUMBER TO R1 ;GO GET THE REQUEST ;R2="DPB'' ADDRESS OF THE REQUEST ;R2=0 IF NO REQUEST IN QUEUE ;IS THERE ANY REQUEST IN QUEUE? : NO=-=-BRANCH PICKUP 'DPB'' POINTER FOR THIS DRIVE ;RETURN TO USER ;ROUTINE TO "'POP'' THE REQUEST FROM QUEUE TCALL . . 020574 020600 020602 020606 020614 020622 020624 020632 020634 020106 POPQUE : 020136 000002 020136 020136 020160 020156 020136 1%: #DRVNUM R PC,POPQUE DECB ASL MOV ADD cMp BNE MoV QCNT(R1) ;DECREMENT QUEUE COUNT R1 ;GET THE 'DPB'' POINTER dQOUTPT(R1), R2 ;UPDATE THE QUEUE POINTER #2,Q0UTPT(R1 ) QOUTPT(R1) ,QSTOP(R1) ,TIME TO RESET THE POINTER? ASR RTS JSR RETURN ;R2=ADDRESS OF DPB REMOVED 1% :; NO-=BRANCH TO EXIT R1 PC ;RETURN TO USER sREPORTS AN ERROR DIRECTLY. ERROR ;CALL TO REMOVE REQUEST QSTART(R1) ,QOUTPT(R1) JROUTINE TO SAVE THE CONTENTS OF “CALL ;DRIVE NUMBER TO R1 MoV JSR RETURN RO,ES.SAV N ;YES~~RESET THE POINTER 'SESCAPE' WHEN THE DRIVER ;. THE ERROR CALL ;THE RETURN IS PAST THE ERROR CALL DODODETDOOODDDOO@DWOODDEODD® DO RETURNZ2 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 7 D 20-MAR-78 10:25 PAGE 83 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) OOD 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 30A(1052) DOODODDODE CZRJBCO, RPO4/5/6 FMIR MACY11 CZRJBC.P11 20-MAR-78 10:22 4404 4405 4406 4407 4408 4409 4410 44611 4412 44613 4614 4415 4416 44617 4418 4419 4420 44621 4422 4423 4424 4425 4426 012037 013746 005037 000000 012637 000200 E ES.SAV: MOV 020652 001160 001160 18: 001160 7 20-MAR~78 10:25 PAGE 84 SINGLE/DUAL PORT RH11/RP04/5/6 DRIVER (REV 1.0) MOV CLR .WORD MOV RTS (RO)+,1$ $ELCAPE ,~(SP) SESCAPE O (SP)+ ,SESCAPE RO SEQ 0082 ;GET THE ERROR CALL ;SAVE THE ADDRESS IN 'SESCAPE'’ ;CLEAR THE ESCAPE RETURN ;THE ERROR CALL IS MOVED HERE ;RESTORE THE ESCAPE ADDRESS ;RETURN M .'tttttttitt'ti'ti"itttiit"'tittttttttt*tttttttttttttfitiittttfit 020662 020670 020673 020700 020703 020710 020716 020724 020732 020740 020741 020746 020751 020756 020763 020770 020776 021004 021007 021014 021021 021025 021027 021031 021033 021035 021040 021046 021054 021062 021070 021076 021104 021112 021120 021126 021134 021137 021144 021152 021160 021166 021174 021202 047440 042516 04 042516 040 047101 027464 042522 000 .SBTTL TELETYPE MESSAGES 044514 UNTOFF: _ASCIZ / OFFLINE/ 044514 UNTON: .ASCIZ / ONLINE/ 020124 030120 000066 NOTRP: .ASCIZ @ NOT AN RP04/5/6a 050040 052116 NOTPRS: .ASCIZ / NOT PRESENT/ 040523 NOTSAF: .ASCIZ / UNSAFE/ 000064 000 000066 051440 006523 RPO4B: .ASCIZ /RPO4/ RPO6: SYSTAT: .ASCIZ _ASCIZ /RPO6/ /UNIT STATUS/<CR><LF><LF> 044522 MUNIT: _ASCIZ <CR><LF>/DRIVE: SLASH: C: MORVD: LINGSP: LINSP: ENTADR: .ASCIZ .ASCIZ .ASCIZ .ASCIZ _ASCII ,ASCIZ .ASCIZ @ / a /C/ /1/ /0/ /7 / / / /ENTER ADDRESS LIMITS:/<CR><LF> MOFFLN: .ASCIZ / MDRNP: _ASCIZ / DRIVE NOT PRESENT/<CR><LF> MER11: _ASCIZ / DRIVE NOT AVAILABLE/<CR><LF> MNRPO4: .ASCIZ @ DRIVE NOT AN RPO4/5/6@<CR><LF> 000 000 RPOS5 : T: 020122 051505 050040 052116 020116 050122 053111 020124 040514 000012 042526 040440 032060 .ASCIZ /RPQOS/ / DRIVE OFFLINE/<CR><LF> ivlolvivivivivivivlvlwlviviviviviviviviviplalale 3N 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 439N 4392 4393 4394 4395 47 % 4397 4398 4399 4400 4401 4402 4403 30A(1052) @ CZRJBCO, RPO4L/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 021210 021216 021217 021224 021232 021237 021244 021251 021256 4441 6442 4443 4444 4445 4446 6447 4448 4449 4450 4451 4452 4453 032457 000 040 020105 042506 040 052103 015 051107 042117 047440 020072 040 052101 051105 044103 047117 7 SEQ 0083 005015 051104 047125 005015 053111 040523 000 042514 000 047522 046440 041450 024506 MUSDR: .ASCIZ / DRIVE UNSAFE/<CR><LF> MSELD: .ASCIZ / SELECTED/ MMODE: .ASCIZ <CR><LF>/PROGRAM MODE 046522 053040 000131 020113 000 040515 042526 000 050117 020105 020062 051117 020105 020122 MFORMT: _ASCIZ / FORMAT & VERIFY/ MHECK: .ASCIZ /CHECK ONLY/ MORMAT: _ASCIZ /FORMAT & VERIFY/ MSIZE: .ASCIZ <CR><LF><LF>/OPERATE MSEC22: .ASCIZ /OPERATION WILL BE IN 22 SECTOR (16 BIT) MODE/<CR><LF> MSEC20: .ASCIZ /OPERATION WILL BE IN 20 SECTOR (18 BIT) BADENT: _ASCIZ /INVALID ENTRY/<CR><LF> MADRER: .ASCII /ENDING DSK ADRS MUST BE EQUAL .ASCIZ /THAN STARTING ADRS/<CR><LF> 042523 042105 106 (C OR F): / IN 22 SECTOR MODE (Y OR N) ? / 047111 042523 024040 052111 042504 117 044524 046111 044440 051440 020122 044502 042117 047111 4458 4459 4460 4461 4462 4463 4464 4465 4466 LL67 4468 4469 4470 174 4472 4473 4474 4475 4476 4477 4478 4479 021670 124 052123 051124 040525 047440 040505 012 040510 051101 043516 040440 052515 020105 020114 020122 042524 020116 044524 MODE/<CR><LF> TO OR GREATER/<CR><LF> v ie Lol o) 046114 4457 4480 4481 4482 F PAGE 85 033057 020124 044522 015 051105 047111 042523 046440 054450 024516 050117 047511 4455 4456 20-MAR~78 10:25 TELETYPE MESSAGES jvlvivivievlvivivivivivivlelelole 4627 4428 4429 4430 463 4432 4433 44634 4435 44636 4437 4438 4439 4440 30A(1052) CZRJBCO, RPO4/S5/6 FMTR MACY11 CZRJBC.P 20~MAR-78 10:22 4483 040440 000012 042514 052101 052124 012 030050 047522 024040 042516 024040 051117 051501 024461 022010 022016 047527 040503 051522 042523 005012 044524 051117 047117 042526 051412 047111 041505 042040 000040 043012 020124 042514 000 005012 020113 042514 000 052117 051122 042504 042105 020124 000 052123 043516 040515 042040 000040 040524 020107 020173 044522 042522 022044 4505 4507 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 “«535 4536 4537 4538 042522 035123 051447 024462 052123 035105 040440 051523 000040 20-MAR-78 10:25 TELETYPE MESSAGES G 7 PAGE 86 SEQ 0084 051104 021676 021704 021710 021716 021724 021732 021735 021742 021750 021752 021760 021766 021774 022002 022023 022030 022036 4533 30A(1052) 052103 020101 051105 LASCII /SELECT DATA PATTERN/<CR><LF> 020051 051447 .ASCII / (0) 047440 005015 053440 041440 000049 .ASCII / (1) ONE'S/<CR><LF> .ASCIZ / (2) WORST CASE: MPATD: .ASCI12Z /WORST MSFOU: .ASCIZ <CR><LF><LF>/STARTING FORMAT MSCHK: .ASCIZ <CR><LF><LF>/STARTING CHECK ON DRIVE 051117 047503 042524 MF CMPT : .ASCIZ <CR><LF><LF>/FORMAT 044103 047503 042524 MCCMPT: .ASCIZ <CR><LF><LF>/CHECK 046101 051117 042524 020072 NUMERR: .ASCIZ /TOTAL ERRORS DETECTED: 042523 042104 ADDRIS: LASCIZ /PRESENT ADDRESS MSELP: ZERO'S/<CR><LF> / CASE/ ON DRIVE COMPLETE, COMPLETE, IS: / / / / / / 044440 ::ttitt'i't*ttttt*i*ttiiittititttttt*iiitittttt*tttttttttiitttttt .SBTTL ERROR MESSAGES ;;ttit'ttiiit'tttQttttttitiittttttitttiittittt*ttitttfitttiit‘ttti 022242 022250 022256 022264 022272 044122 052116 052120 051125 051050 030461 051105 047440 042522 040520 044440 052522 041503 020104 036523 EM1: .ASCIZ /RH11 INTERRUPT OCCURRED (RPAS=0)/ 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 458¢ 4587 4588 4589 4590 4591 4592 4593 4594 022300 022303 022310 022316 022324 022332 022340 022341 022346 022354 022362 022370 022376 022377 022404 024460 125 041505 052101 047511 052503 000 115 051525 052111 047522 050103 000 10: 25 ERROR MESSAGES 7 H PAGE 87 SEQ 0085 EM2: LASCIZ /UNEXPECTED ATTENTION OCCURRED/ 041123 051101 051105 046450 024461 EM3: .ASCIZ /MASSBUS PARITY ERROR (MCPE=1)/ 041123 051101 051105 050050 000051 051505 043525 043516 020124 EM4: .ASCIZ /MASSBUS PARITY ERROR (PAR=1)/ EMS: .ASCIZ /ADDRESS PLUG (HANGE BIT 042040 020124 047117 0460440 051523 EM6: .ASCIZ /RH11 020105 047111 EM10: .ASCIZ /DRIVE OFFLINE/ 051522 052116 042526 043101 047522 047503 040524 040515 020123 054524 051117 043117 020105 052517 053111 040523 051122 051511 042040 052440 EM11: .ASCIZ /PERSISTENT DRIVE UNSAFE ERROR/ EM12: .ASCI1Z /UNCORRECTABLE MASSBUS PARITY ERROR/ EM13: .ASCIZ /SOF TWARE EM14: .ASCIZ /DRIVE UNSAFE ERROR/ 047117 042514 053111 047522 044522 044522 051124 027522 020105 020122 043516 042524 EM1S: .ASCIZ dCONTROLLER/DRIVE ERROR DURING WRITEa 051501 115 051105 047125 041505 020105 052502 044522 051122 20-MAR-78 050130 020104 052116 041517 042105 051525 052111 047522 051101 042101 020123 041440 020105 042523 044122 042111 042522 020104 042104 047111 051104 0463117 70105 042520 042524 044522 051516 022744 022752 000 042516 042524 042524 020116 051122 30A(1052) SET/ DIDN'T RESPOND TO ADDRESSING/ TIMEOUT/ 051117 XXX XX2333 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P1 20-MAR-78 10:22 4595 6596 4597 4598 4599 4600 4601 4602 4603 022760 022761 022766 022774 023002 023010 023016 023024 023032 023033 023040 023046 023054 023062 023070 023076 023104 0231 023116 023124 023132 023140 023146 023147 023154 023162 000 103 046117 051104 051105 052504 053440 041440 044522 042510 023424 I 7 30A(1052) 10:25 ERROR MESSAGES EM16: LASCIZ dCONTROLLER/DRIVE ERROR DURING WRITE 047522 044522 044522 042510 051124 027522 020105 020122 043516 042524 045503 052105 047040 041525 046125 041505 047516 042503 042514 052101 047522 044522 044522 042510 044522 052117 051505 026440 047524 020124 052120 000 020101 020122 043516 042524 045503 EM17: .ASCIZ ARETRIES NOT SUCESSFUL - SECTOR NOT ACCEPTABLED EM20: .ASCIZ @DATA ERROR DURING WRITE 047117 042514 053111 047522 044522 020107 051105 042101 046517 042440 053040 044531 040505 000 046131 020122 020104 040505 051511 041440 052103 044522 042510 051122 051124 027522 020105 020122 054506 042510 000123 051105 040520 051122 051105 043516 042504 EM21: .ASCIZ dCONTROLLER/DRIVE ERROR VERIFYING HEADERS® EM22: .ASCIZ aHEADER COMPARE ERROR VERIFYING HEADERSQA 047111 044506 047111 042504 047040 051117 000 042524 045503 051117 EM23: .ASCIZ aCYLINDER FIELD EM24: .ASCIZ aWRITE 051101 020105 020122 043516 042524 045503 053504 051105 052504 053440 041440 000 EM2S5: .ASCIZ aHARDWARE ERROR DURING WRITE CZRJBCO, RPO4/5/6 FMIR MACY11 CZRJBC.P1T 20-MAR-78 10:22 047117 042514 053111 20-MAR-78 .EVEN PAGE 88 SEQ 0086 IN HEADER CHECKa CHECKa IS NOT CORRECTQ CHECK ERRORa CHECKa CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P1T 20-MAR-78 10:22 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 30A(1052) 20-MAR-78 10:25 ERROR MESSAGES 7 J PAGE 89 SEQ 0087 PA PA PA . ;t*tti*tit'tt*"tttt't'ttttiittttttttttttfittttttit't*tittttttttt 023424 023431 050122 104 020040 030523 042520 051501 044522 051040 020040 030522 042520 051040 020040 000 042526 042120 051040 020040 031122 042520 051040 DH1: DHe: 053111 042522 020122 020105 020107 042040 DH3: .ASCIZ /DRIVE REG ADR 053111 042522 020122 047517 041040 020105 020107 020040 020104 042101 DH4: .ASCIZ /DRIVE REG ADR 020110 051505 053111 051105 020040 020061 051503 050122 020040 020061 051105 050122 042101 000123 020105 020122 050122 020040 020062 051504 050122 020040 020062 051105 DH6: .ASCIZ /RH ADDRESS/ DH10: .ASCIZ /DRIVE 041505 050122 020040 020061 041505 050122 DH10A: .ASCIZ /RPEC1 RPECZ2 RPWC RPBA RPDA RPAS RPLA/ 042120 020102 DH10B: .ASCIZ /RPDB RPMR RPDT RPSN RPOF RPCA RPCC/ 053111 020105 042504 020122 .ASCIZ .ASCIZ /RPAS/ /DRIVE RPDS1 ERR PC RPER1 RPER2 RPER3 RPAS/ PG Pl Pl Pl PL PR PR PR PR PR PR PR PR Ps DATA/ 600D C2 - BAD/ PS PS PS RP(CS1 RPCSZ2 RPDS1 RPER1 RPER2 RPER3/ Q( Qc QC QC Qc Ql DH17: .ASCIZ /DRIVE ERR PC CYLINDER TRACK SECTOR/ Q¢ Q¢ Q1 R/ RE RL RL RC RL R{ R( RL R( R( R( R( RL RE RE RE 20-MAR-78 10:25 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) CZRJBC.P1T ERROR MESSAGES 20-MAR-78 10:22 4707 4708 4709 4710 4711 4712 4713 4714 4715 476 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 47461 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 024106 024114 024122 024125 024132 024140 024146 024154 024162 024170 024174 024202 024210 024216 024224 024232 024240 024246 024254 024262 024270 024272 024300 024306 024314 024322 024330 024336 024344 024352 024360 024366 024367 024374 024402 024410 024416 024424 024432 024440 024446 024454 024462 024470 024476 024504 024512 024520 024522 024530 051124 041501 042523 000 044522 042440 020103 042116 040522 051440 000122 051503 050122 020040 020061 051105 050122 050122 051520 051040 054522 SEQ 0088 042526 051122 054503 051105 045503 041505 DH20: 020061 051503 050122 020040 020061 051105 050122 020040 020061 041505 DH20A: 020040 040502 050122 020040 020040 040514 050122 020040 020040 DH2IB: .ASCIZ /RPWC RPBA RPDA RPAS 020116 047520 051040 020040 000103 020049 020040 054105 005015 020105 020122 054503 020040 046101 042504 DH20C: .ASCIZ /RPSN RPOF RPCA RPCC/ 020040 DHZ24: LASCIZ /DRIVE ERR PC CYLINDER TRACK RN RA RF SECTOR/ RF RF .ASCIZ /RPCS1 RPCS2 RPDS1 RPER1 RPER2 RPER3 RPEC1 RPECZ/ RF RF RF RF RPLA RPDB RPMR RPDT/ 052104 020040 ! C2 RE Rt RE 020113 052103 024536 024544 024552 024560 024566 024574 K 7 PAGE 90 DH23: .ASCIZ LASCII Rf Rf RF EXPT'D/<CR><LF> LASCII /DRIVE ERR PC CYLNDR RF RF RF RFf RF RF RF RF Rf RF RF RFf Rf RF RF RFf RFf RF Rf Rf R S/ S/ Si ACTUAL HEADER/ MEMORY DISK/<CR><LF> S/ S( S( S( S( S( S{ S( S( S( S( S( CZRJBCO, RPO{/5/6 FMTR MACY11 CZRJBC.P11 20-MAR-78 10:22 4763 4764 4765 4766 4767 4768 4769 4770 477 4772 4773 4774 4775 4776 w777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 024602 024610 024616 024624 024632 024640 024646 024654 024662 024670 024676 024700 024706 024714 024722 024730 024732 024734 024742 024750 024754 024762 024770 024772 025000 025006 025010 025016 025022 025030 025034 025042 025050 025054 025062 025070 025074 025102 025104 025112 025120 025122 025130 025136 025140 025146 025154 025160 025166 025174 025200 025206 025210 044504 051104 020040 041520 047114 051124 30A(1052) 045523 053111 051105 020040 051104 041501 042523 020040 020040 040524 005015 020105 020122 054503 020040 020113 052103 040504 020040 000 012230 012236 017370 012232 001276 017372 017612 001116 001320 001350 001354 001314 001306 001322 20-MAR-78 10:25 ERROR MESSAGES L PAGE 91 7 .ASCIZ /DRIVE DT1: DT2: .WORD .WORD ATTN DT3: .WORD .WORD DORIVE ,RD.ADR,RD.WRD DDRIVE ,WRT.AD ,WRT.WD,RD.WRD DT6: .WORD -WORD $RPADR DRIVE ,$ERRPC ,RP.REG,RP.REG+10,RP.REG+12 ,RP.REG+14 ,RP.REG+40 ,RP .REG+4?2 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 001270 DT17: .WORD DRIVE,$ERRPC,DS.CYL,DS.TRK, SAVSEC 001270 DT20: .WORD DRIVE,$ERRPC,DS.CYL,DS.TRK, SAVSEC 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 017614 DT4: DT10: ERR PC SEQ 0089 CYLNDR TRACK SECTOR DATA DATA/ DDRIVE ,RPERRS ,RPERRS +2 ,RPERRS +4 ,RPERRS +6 ,ATTN 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 001316 001346 001354 001312 001326 001334 001340 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: n 7 PAGE 92 DF23: 000 DF24: 034 000 4850 4851 025310 025312 000 000 i NARAN AR AR O - O ~ o X X O =0 = o OO0 @ >» s > S . N NI X .BYTE . WORD .BYTE .WORD .BYTE . WORD .BYTE o p 000 o 000 XTe 000 Ny DF20: 034 Xe DF17: 034 O 000 " 000 .WORD .BYTE .WORD .BYTE .WORD .BYTE .WORD .BYTE .WORD .BYTE .WORD .BYTE .WORD .BYTE .WORD .BYTE .WORD .BYTE © DF10: 000 ~ DF&4: 000 X DF3: 000 .WORD .BYTE .WORD .BYTE .WORD .BYTE DN DF2: 000 O [N 000 Xe 000001 SEQ 0090 Yy 025212 025214 P o s O NI 4819 4820 SOV OONEN=ITOOOOONS N NONOOOWES NN CZRJIBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 CZRJBC.PT ERROR MESSAGES 20-MAR-78 10:22 AN R T AR AN AR AR AR AN RN R AR AANERARARANAR RARARAARAAAANS ;BUFFER STARTS HERE ALAEEARSA0RSARARRARRRttt ARl titd ittt il il ittt il dd) 025314 025322 4862 025324 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 025324 025332 025340 (025343 025350 025356 025364 025372 025400 025401 025406 000000 000000 : RBUF .WORD BUFP: 055012 045122 026532 026502 TITLE: 027464 047506 042524 043517 005012 052012 051117 020117 040515 LOADRV: 0,),0,0 ;BUFFER FOR HEADER CHECK ;FORMAT AND CHECK BUFFER STARTS HERE ASCIL <CRO><LFO><SLF>/ZZ-CZIRJB~C/<CR><LF> .ASCIZ aRP(4/5/6 FORMATTER PROGRAM@<CR><LF><LF> LASCIT <CR><LF>/TO 'FORMAT' OR ‘'CHECK' DRIVE O, REPLACE THE 'XXDP'/<CR><LF> | 4859 4860 MACY11 30A(1052) CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 20~MAR-78 10:22 4875 48706 4877 4878 4879 025414 025422 025430 023524 041447 025436 025444 025452 025460 025466 025467 025474 025502 025510 025516 025524 047440 042510 051104 026060 025532 025540 025546 025554 025562 025565 025572 025614 20-MAR-78 10:25 ERROR MESSAGES N 7 PAGE 93 SEQ 0091 020122 045503 05311 051040 042503 023440 006447 UF US US US U 020113 044522 053440 047101 020122 020054 020122 054522 052101 030064 LASCI1 051040 052122 050040 046501 .ASCIZ /PACK ON DRIVE O WITH ANOTHER PACK, CLEAR MEMORY LOCATION 40,/<CR><LF> Wi WR L WR WR WR W Wk WF /AND RESTART THE PROGRAM/<CR><LF> .SBTTL BUSADR - GET BUS ADDRESS AND VECTOR ADDRESS FOR RH11 ;THIS ROUTINE IS USED TO INSURE THE BUS ADDRESS wF ;1T WILL ALSO READ THE ADDRESS FROM THE TTY IF Wk Wk IS SETUP FOR THE PROPEtR ADDRESS. *REQUIRED. 025634 025640 025644 025650 025652 025654 177700 000776 000000 005737 001460 005037 012700 104401 001302 001172 026046 THIS ROUTINE DESTROYS RO-Ré4 : JSR 1%: RETURN 025624 MoV MOV JSR Wk W PC.BUSADR .WORD 177700 .WORD 776 _WORD TST CHGADR BEQ 7% CHGADR CLR MOV #SRPADR,RO TYPE .MRPCS1 MoV (RO)+,-(SP) TYPOC TYPE RDL IN 021035 025620 026070 'NOTE: *CALL HIAD: HIVEC: LIMIT: BUSADR: 001302 LINSP (SP)+,R1 HIAD,LIMIT RS,CK.NUM $/ ;s INPUT FROM TTY REQUESTED? s NO=-=-BRANCH ;YES==CLEAR THE REQUEST FLAG ;FIRST ADDRESS :PRESENT RPCS1 ADDRESS ;TYPE IT ;2 SPACES ;GET THE ENTRY sADDRESS OF ASCII TEXT sTHIS IS Tk ADDRSS HIGH LIMIT ;CHECK THE NUMBER sCARRIAGE RETURN ONLY ENTERED ;PERIOD ONLY CNTERED 025712 WA w( w( W( W( W( w( ;OF THE RH11 025620 025622 025624 025626 025632 C2 2 ;ILLCGAL INPUY JTERMINATED WITH A CARRIAGE RETURN $( $( $( $( $( $( $( $( $( $( 5t $t $¢ $t 000004 RTS MOV cMP ERROR 051503 000 053110 000040 :SAVE THE ERROR VECTOR ;SETUP FOR TRAP :CHECK FOR RH11 #RPADR ,R1 (RO)+,(R1)+ (RO)+,(R1)+ sRESTORE ERROR VECTOR ;FIRST ADDRESS OF NEW PARAMETERS ;FIRST ADDRESS OF WHERE TO PUT THEM ;BUS ADDRESS :VECTOR ADDRESS R1,ERRVEC (SP)+,(SP)+ sRESTORE ERROR VECTOR ;CLEAN OFF THE STACK PC 6 1% ;RETURN sREPORT THE ERROR ;ASK FOR BUS ADDRESS 020061 MRPCS1: .ASCIZ aRPCS1 = a 041505 MRHVEC: .ASCIZ QaRHVEC = a .SBTTL CK.NUM - CHECK NUMBER : . MOV MOV #ADR,R1 #NUM,R2 ;ADDRESS OF ASCIZ STRING JMAX SIZE OF INPUT NUMBER ; : . RETURN RETURN RETURN ADR1 ADRZ2 ADR3 :"'CR'' ONLY ENTERED =-- R2 = 0 :*'PERIOD’' ONLY ENTERED -- R2 = 0 ;ILLEGAL CHARACTER IN THE INPUT STRING (OCTAL) :THIS ROUTINE CHECKS AN ASCIZ STRING FOR LEGAL CHARACTERS ;AND FORMS AN OCTAL NUMBER IN R2 ;CALL: H JSR RETURN RETURN RETURN 026070 026072 026074 026076 010446 010346 010246 005004 CK.NUM: RS5,CK.NUM ADR4 ADRS ADR6 ;GO FORM THE NUMBER ;''CR'* ENTERED =-- R2 = NUMBER :''COMMA’’ == RZ2 = NUMBER :"'PERIOD'' == R2 = NUMBER MOV R4 ,-(SP) ;SAVE R4 CLR R4 ;RETURN POINTER MOV MOV R3,-(SP) R2,-(SP) SN DY PP NV N PO N LA LS LD LD AD A AL ASAD R1,ERRVEC #SRPADR RO a$RPADR ;TERMINATED WITH A *'',*" ;TERMINATED WITH A ''."’ s SAVE INPUT AL MoV MoV MOV MoV MOV ERRKVEC ,R1 ;READ THE ENTRY sASCI1 TEXT ADDRESS sVECTOR LIMIT ;CHECK THE NUMBER ;CARRIAGE RETURN ONLY ENTERED ;PERIOD ONLY ENTERED ;s ILLEGAL INPUT ;TERMINATED WITH A CARRIAGE RETURN LS #8% ,ERRVEC JTYPE I7 ;2 SPACES LS AS MOV ;" RHVEC="' ;FIRST VECTOR ;PRESENT RH11 VECTOR ADDRESS ON THE STACK A R2,~2(RO) Mov BR 050122 020075 122 036440 (SP)+ R HIVEC,LIMIT R5,CK.NUM 3% 4% MoV TST 8%: .LINSP ;SAVE NEW RPCS1 AS 000004 7%: +MRHVEC #$RPVEC,RO (RO)+,~(SP) LA 4%: R2,<2(R0O) A RDLIN MoV Mov JSR 7% 7% 3% 4% 025624 177776 000004 026034 153160 000004 001172 012376 TYPE MOV MOV TYPOC TYPE 021035 025622 026070 MoV AA 3s: ;TERMINATED WITH A °'," ;TERMINATED WITH A *'."' M 2%: 177776 026057 001174 1% 4% A 025640 025770 010260 104401 SEQ 0092 A 025706 025710 025712 025716 025722 025726 025730 B 8 20-MAR-78 10:25 PAGE 94 BUSADR - GET BUS ADDRESS AND VECTOR ADDRESS FOR RH11 e 493 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 30A(1052) AA CZRJBCO, RPO4/S5/6 FMIR MACY11 CZRJBC P11 20-MAR-78 10:22 :SAVE R3 ;SAVE R2 026204 026206 026210 026212 026214 026216 026220 026222 026224 026226 026230 026214 026176 026174 026166 026130 026214 105711 001011 005724 005724 005724 023703 101003 000401 005725 005725 060405 010302 005726 012603 012604 011505 000205 000001 006556 ADD R2,R3 JSR 8% 5% RS,CK.CHR 45 3%: 025624 4%: 5%: 6%: 7%: 8%: ;CHECK ONE CHARACTER ;s ILLEGAL CHARACTER ;CARRIAGE RETURN :u'u 35 :n.n 2% 8% TS18 BNE TST ;DIGIT Q-7 ;DIGIT 8-9 ;DOES A ''CR'' FOLLOW THE 'PERIOD'' ;BR IF NOT ; INCREMENT THE RETURN CMP BHI BR TST (R1) 8% (R4) + (R4) + (R4)+ LIMIT,R3 8% 7% (RS)+ ADD MOV R4 RS R3,R2 4 0)" MoV MOV (SP)+,R3 (SP)+,R4 (R5),RS TST TST TST TST RTS .END ;DON'T LET IT GET TO BIG (RS5)+ (SP)+ RS ~ A oA Lo B LA R WA 6% R3 6% R3 6% R3 A B8CS BCS ASL BCS ASL R #4 RS ;DIGIT 8-9 ; INCREMENT RETURN PAST °‘CR'' AND 'PERIOD'' ONLY RETURNS ;FOR THE OCTAL NUMBER IN R3 A 1$%: 2%: ;DIGIT 0-7 6% ADD ASL oA oA MR ;u.u 1% 000004 A Ll :‘l'll 7$ s INCREMENT THE RETURN INDEX ; INCREMENT THE RETURN INDEX ; INPUT VALUE TOO LARGE ? ;BR IF IT IS :BR IF NOT s INCREMENT THE RETURN ADDRESS s INCREMENT THE RETURN ADDRESS :SETUP FOR PROPER RETURN ;LOAD ENTERED VALUE ;CLEAN OFF THE STACK ;RESTORE R3 ;RESTORE R4 ;GET RETURN ADDRESS ;RETURN A WA 6s s ILLEGAL CHARACTER ;CARRIAGE RETURN SA MR LA 6% 8% ;START NUMBER AT ZERO sSTORE RESULT ;CHECK ONE CHARACTER bl Al 6D 006556 R3 R2 RS,CK.CHR ol b CLR CLR JSR bl bl Al 026100 026102 026104 026110 026112 026114 026116 026120 026122 026124 026130 026132 026134 026136 026140 026142 026144 026146 026152 026154 026156 026160 026162 026164 026166 026170 026172 026174 026176 026200 SEQ 0093 s 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 r~ 8 C CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 95 CZRJBC.P11 CK.NUM - CHECK NUMBER (OCTAL) 20-MAR-78 10:22 = 000001 = 000002 = 000004 AT4 ATS AT6 AT7 A16 = = = = = AT3 Al7 BADENT = 000010 000020 000040 000100 000200 000400 = 001000 BAI = BEGCYL BEGIN BEGIN1 BEGINZ BEGTRK BITO = BIT00 = BI1T01 = BITO2 = 81703 = BITO4 = BITO5 = BIT06 = BIT07 = BITO8 = BITO9 = BIT1 = BIT10 = BIT11 = BIT12 = 021566 000010 001224 002100 002110 002114 001230 000001 000001 000002 000004 000010 000020 000040 000100 000200 000400 001000 000002 002000 004000 010000 BIT13 = 020000 BIT14 = 040000 BIT15 = 100000 BIT2 BIT3 BIT4 BITS BIT6 BIT7 BIT8 = = = = = = = 000004 000010 000020 000040 000100 000200 000400 3952+ MMMMMrS TMo~ 8594 3347+ 3398+ 3967+« 3711+ 3720+ 3950 3410 3515 3874 3893 3901 3918 4026 1540 1547 1730 1734 1867 1543 1549 1866 1869 1907 3390 3637 45230 1687 3313 2185+ 4775 4776 IRIATAIAAIAIAATI TITITN D B BrMNmMmm ATO AT1 AT2 B16# 8864 850# 30684 30744 805# 1987 10494 7224 7094 31404 9794 7424 7434 7444 7454 7464 4a7n 7484 7494 6404 641N 2029 658# 9554 517 514 1268 9574 6144 604# 6034 6024 601# 600# S99 5984 S97# 5964 5954 6134 594 5934 5924 3860 5914 5904 5894 3858 6124 611 6104 6094 608# 6074 6064 4000 3746 3833 4209 3848 3868 3897 4181 3608 3322 3919 3392 3426 3604 3623 3635 3648 3858 3806 4089 4053 3608 4098 3637 4102 4207 3746 3833 3848 3793 3423 4053 1677 1906 3937 3426 4060 3639 AMAMASAMAMAM 4 44— dh b —h—hatA 000200 000123 000040 012314 012315 100000 022215 001500 001000 100000 012364 001276 A ABS = ACK = ACL = ACTDRV ACTSTR ACU = ADDRIS ADRTBL AOE = ATA = ATABIT ATTN SEQ 0094 N~ D_ 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 97 CZRJBC.P11 20-MAR-78 10:2¢2 CROSS REFERENCE TABLE -~ USER SYMBOLS DDRIVE DE1 = DFF20 = DF1 DF10 DF17 DF2 DF20 DF23 DF 24 DF3 DF4 DH1 DH10 DHI0A DH108 001274 000040 000002 025210 025230 025244 025214 025250 025270 025274 025220 025224 023424 023606 023704 023771 - = 000200 = 000002 = 000010 001246 = 100000 = 000100 = 000001 = 177570 [o]e) CRLF CSF Csu CYLCK DCK DCL DCU DOISP 3501 3604# 3510 3706 3514 3736 2140 4989 5004 1986+ 4398 4473 4873 1999+ 4401 4481 4883 2549 4409 4485 4894 1269+ 4915 4917+ 35944 3545 3485 3603 3547 3489 3587 35994 3493 3602 3759 4045 2126 Q2774 1524+ 2360 4470 4867 — b b N lele) WO o — = 000015 1056 1069 1059 1600 1061 1864 3525 3885 4193 3532 3538 3542 3556 4413 4489 44616 4492 4420 4500 4424 4505 4429 4510 44634 4514 2954H 2089# 4926 49834 1950 660# 3212 9814 5294 4447 L4744 5304 7924 7944 19714 20674 2020 20494 O NOWNLOWN SO CR 1054 1067 1066 48624 1602 1443 N 006234 000040 020400 001300 1053 1052 1065 4803 3576 3887 36224 3605 15404 2183 G CLOCK CLR = CLRQUE CNTLC 014614 014666 003606 104407 004260 006556 006530 006630 026070 006502 U Cl178B ci8 CKADRS CKSWR = CKTRK CK.CHR CK.DEC (K.DIG CK.NUM (K.OCT 3445 3447 3436 3495 3533 3377 3562 3607 N 025626 021025 001302 013736 014044 014152 014530 014552 014566 1049 1062 1905 1325 1988 9824 — e b ek (N D N = ) = QN =2 NN =2 O BUSADR C CHGADR cIl c13 Cl4 CIS Clé c17 6054 6214 B BIT9 = 001000 BPTVEC= 000014 BUFP 025324 SEQ 0095 4023 1437 2350 4462 4864 2360 1154 48324 1147 1259 48424 4844H 48224 48240 46534 1173 4828 4830 2632 1761 1764+ 1291 4776 4778 4779 48184 1182 1189 1196 1203 1210 1231 1238 48264 1187 1194 1201 1208 1229 1236 L674N 48204 48344 1180 e E 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 98 CZRJBC.P11 20-MAR-78 10:22 CROSS REFERENCE TABLE =-- USER SYMBOLS F CZRJBCO, RPO4/5/6 FMTR MACY11 20-MAR-78 10:2¢2 CZRJBC.P11 012260 000200 177570 001270 001272 010000 000200 012362 DTO0 DTO01 D102 D103 D104 D105 D106 0107 DT08 DT DT10 D117 DT2 000001 000002 000004 000010 000020 000040 000100 000200 000400 024676 024734 025010 024700 D120 D123 DT24 = = = = = = = = = 025022 025104 025122 ] 6 1 2 2 4 5 =S HWNON N0 DRVTYP DRY = DSWR = DS.CYL DS.TRK DTE = DTSY = DTWW b —— 000111 012626 020476 012250 6984 7324 1803 3028# 7024 30414 951# 7654 29854 3892+ 8814 3232 3366 1350 3361 4048+ 1353 7014 5354 9764 977K 7254 7384 31344 4010 7564 7574 7584 7594 7604 7614 7624 7634 7644 b DRVCLR= DRVINT DRVQUE DRVSTA L98# 6704 ) wnd 000004 001142 000174 100000 000020 000001 005340 012270 000400 012300 001214 004000 012240 wrd DIGB = DISPLA DISPRE OLT = DL64 = OMO = DONE DPINT DPR = DPRQS DRIVE DRQ = DRVACT 1215 1124 1222 C7\ 74 L7284 47394 1243 1250 1131 1138 1152 6964 9274 — 024056 023431 024125 024174 024272 024367 024424 024522 023506 023534 023573 NOMNVNY =) =2 =2 DH17 DH2 DH20 DH20A DH20B DH20C DH23 DH24 DH3 DH4 DH6 30A(1052) 47034 1145 1257 4836 4,838 4840 L7440 L7554 46624 20-MAR-78 10:25 PAGE 99 CROSS REFERENCE TABLE =-- USER SYMBOLS SEQ 0096 46544 47104 4846 4848 4850 46664 46724 1299+ 2195« 1804# 3241 3244 3330+ 3357 3777 3802 3927 3929« 3990 4028 4039 3363 1450% 3449+ 1455+ 3780 3941+ 1478 3992 153 4030 1861 4041 4782 4056+ 4791 4793 4803 4806 3371 3550+ 4007 4014+ 3597+ 3616+ 3627 3642+ 3725+ 3798 3831 3862+ 3869+ 3882 3359 3418 3909 3930 4005 3223« 3551« 3224 3660+ 3225+ 3783 3235« 3791 3267+ 3804 3276+ 3856« 3319+ 3863« 3324+ 3875 3353 3015# 3268« 3283+ 3288+ 3293« 3298+ 3388 3661« 3714 3726« 3995 1291+ 1299 4001+ 1476 32664 3379 1465 3385 43174 29994 3420 3222« 3424 1367 1370 1470 1480 926 2186+ 2187+ 1654 1290 4791 4793 4793 4806 4806 3218 4021+ 479N 4032 4096 3494+ 3617 3620+ 3630 3643 3645+ 3654+ 1181 1188 1195 1202 1209 1230 1237 L7824 3438 47764 47934 4047 3932 G 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 100 CZRJBC.P1T CROSS REFERENCE TABLE -~ USER SYMBOLS 20-MAR-78 10:22 ERRVE(C= ES.SAV EXT1 = EXT10 = EXT2 = EXT20 = EXT4 = EXT40 = FEN = FER = FMTDPB 020636 000001 000010 000002 000020 000004 000040 000200 000020 001356 VI WWWNES NN =200 000NN =SB NOOROVNWVIOD 2 WS NJO WO oW b b b -l = —b b —d b = b wmd md ol cad NP ININD = NI NI ) ) b = PO b i 022761 023033 022303 0231 023147 023220 023267 023337 023361 022341 022377 022434 022470 001222 001226 021040 005364 040000 022715 el EM16 EM17 EM2 EM20 EM21 EM22 EM23 EM24 EM25 EM3 EM4 EMS EM6 ENDCYL ENDTRK ENTADR ERINDX ERR = EM1S5 47784 47794 47814 -t 024714 024722 024732 004000 000100 004000 001304 020456 000030 022242 022532 022550 022606 022651 022672 — D13 DT4 D16 DVA = ECH = ECI = EFLG EMPTYQ EMTVEC= EM EM10 EMIT EM12 EM13 EM14 1271+ 3659 1280+ 45344 45684 45714 45764 4582# 4585K 4589# 45964 (604K 4540K 46124 46184 (625K 46320 463K 46434 4546H 45524 45574 45624 1032 1033 440K 1645 1597+ 3747 1662 3870 1304+ 3939 1665+ 1672+ 4061 1679+ 43024 1682« 1706+ 1715+ 1479+ 1430+ 1487 1485 1542 1486 1548 1493 1540 1546 1761 1745 1818# 1288 1289+ 1300+ 4094 1946+ 4154 1947+ 43714 1957« 1966+ 4950 4951+ 4953 4959+ 1478+ 1634 1751 1866+ 1585 1636 1766+ 1867+ 1588+ 1685+ 1820 1868+ 1589+ 1687+ 1823 1881+ 1591 1693« 1826 1885+ 1593 1702 1829 1886+ 1598+ 1731+ 1832 1894+ 1599+ 1732« 1851 1895 1600+ 1733« 1861+ 1896+ 3813 1654 16432+ 1609 1739 1864 FMT22 F1 Fe F3 Fé F5 = = = = = = 010000 000002 000004 000010 000020 000040 GETREG= 000141 SEQ 0097 2186 1281+ 3817 1496 1603+ 1734« 1862+ 1989 CZRJBCO, RPO4/5/6 FMTR CZRJBC.P11 GETREQ GNS PR GO GRV GTISWR HCE HC1I = = = = = HCRC = HOREAD HEDERR HIAD HIVEC HT = IAE = 1E = = ILF ILR = IOTVEC= IR = ISR IXE = LA LACNY LF = LIMIT LINSP LINGSP LOADRV LOP.CK LST = 22222 000001 000010 104406 000200 002000 000400 005000 001262 025620 025622 000011 002000 000100 000001 000002 000020 000100 015260 004000 015122 012326 000012 025624 021035 021033 025401 005464 002000 021606 001266 022141 000002 020000 012374 021112 021031 MFCMPT MFORMT MHECK MHS = MINX = MMODE MNDLTA MNRPO4 MODE 022114 (021303 021324 001000 000004 021251 012410 021166 001220 MER11 MOFFLN MOH = MOL = MORMAT MPATD MPE = 20-MAR-78 10:22 020552 MADRER MAXSEC MCCMPT MCLK = MCPE = MCPEMX MORNP MORVD MACY11 30A(1052) 021137 021070 020000 010000 (021337 022010 000400 v 341 697 6844 3632 2946 1319 7204 8324 7214 1720 9704 49124 49134 5274 7234 6384 7134 29524 6974 1654 1654 17274 1727+ 4925 4941 2319 20-MAR-78 10:25 H PAGE 101 8 SEQ 0098 CROSS REFERENCE TABLE =-- USER SYMBOLS 3787 2947 3823 2948 3884 2949 3936 2950 3997 2952 4012 4050 4057 43384 2957 2958 4398 4473 4873 4401 4481 4883 4409 4485 4894 44613 44616 4420 4424 4505 4429 4510 4408 4922 4938 2954 2955 2956 1751 2360 7144 6224 6614 3227 802# 3442 30934 528# 4447 4744 49144 1365 1349 1311 1620 7044 1498 9744 1781 7334 643N 31524 1472 1451 1474 1779 1399 1397 800# 734H 1386 31684 4424N 9534 46130 7664 7064 1401 1513 6634 37114 8204 36764 3684« 9434 4454 3685 2354 3702+ 2360 4462 4864 L4941+ 2265 4470 4867 5016 2274 2285 1756 1760 18474 1421+ 45148 1427« 1641 1702 1904 1924 1935 4076 44164 L4064 446204 4124 1525 1601 1657 1691 1777 4755 4925+ 44074 4873n 1708 44738 4489 45104 44394 444200 818# 4434n 3700 1385+ QL44LN 44984 1402+ 4492 4500 4434 4514 I 8 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 = MRHVEC MRPCST1 MSCHK MSE = MSEC20 MSEC22 MSELD MSELP MSFOU MSIZE MSTCK = MUNIT 000020 026057 026046 022060 000020 021507 021430 021237 021710 022023 021357 000010 021007 MwC MWR = MXDLTA MXF = MXLACT MXWNDW MO M 001260 000040 012406 001000 012404 012412 M18 M2 M4 M5 NBA = NED = NEM = NHS = NOTPRS NOTRP NOTSAF NUMERR ocyL = OENTER OFFSET= OFREV = OF100 = 0F200 = OF25 = OF400 = 003100 003422 003462 003544 100000 010000 004000 002000 020724 020703 020741 022165 100000 006246 000115 000200 000004 000010 000001 000020 MUSDR MI1A OF50 OF800 OPE oPI OPT OR = = = = 021217 003134 002662 002752 000002 000040 020000 020000 013456 = 000200 PAR = PARENT PAR1 PARZ PAR3 PAR4 PAT = 000010 006366 001430 001443 001456 001467 000020 7364 4934 4919 1529 7954 1423 1417 44320 1503 1527 1406 7354 1440 1468 9654 7374 31654 664# 31624 L9664 L9644 45054 44624 L44a54n 44854 45004 4L47H 44014 44290 1419+ 1425+« 1599 1688 1863 1454 1469 1473 1475 1416 1981 14914 1503 1499 1519 3698 3171a 1433 13854 1398 1422 1477 1494 15244 7684 6674 6664 801# 1358 1356 1362 1782 853# 1437 3834 8314 8274 828# 8254 8254 8264 8304 861# 7264 3373 6624 7164 1492 1030 1031 1032 1033 6594 1986 1654 34084 20074 10384 10404 10424 10444 3742 3902 3942 1806 SEQ 0099 p— J 8 S344 6284 PR7 000340 177776 PSEL PSU PSW PWRVEC QCNT 002000 000001 177776 000024 020106 020200 020220 020240 020260 020300 PS QDRVO QDRV1 QDRV2 QDRV3 QDRV4 QDRVS QDRV6 QDRV7 QINPT QOUTPT QSTART QsTOP QTERM RAW RBUF RDCHR RDDAT RDHD ROLIN RDY RD .ADR RD.RP 020320 020340 020360 020116 020136 020156 020160 020400 000020 025314 104410 000171 000173 104411 000200 804# 3422 5514 552# 5534 5544 555« 5564 SS57#4 S58# 5314 3691+ 642N 8474 5324 6234 » % » 8214 3473 1303 1952 1339 532 1565+ 1566+ 1520+ 1569+ 1570+ 1563 1573 1574 1567 3588 3896 43534 1339+ 1464+ 3210 3211« 3240+ 4302« 4250 4251 4252 4253 4254 6317 42624 42634 42640 42654 42664 4319+ 4339 4353 4278 4241 4242 4243 4244 4245 4236 4237 42304 L2414 42504 42514 4258 8134 1732 4247 4248 4304 4304« 4284 4323 42704 4235 4323 4356+ 4359 4325+ 4357 4359+ 2708 8954 8964 1387 6394 2018 29564 4923 4939 4078+ 3279 017366 017512 017516 017522 RD.WRD 017372 READIN= 000121 RECAL = 000107 RELSE = 000113 40804 4076+ 4087 4092 4082# 885« 880# 882# 3985 3560 4145 3574 415 3678 4185 3692 1304 1962 3248+ 3345 3346+ 3399+ 3409 3458+ 3734 3757 3825 3835 3850 1985+ L2194 4230 4231 4232 4233 4234 017370 017344 RD.RP1 RD.RP2 RD.RP3 RD.RP4 561 562 63 SEQ 0100 707# POPQUE PRO PR1 PR2 PR3 PR4 PRS PR6 962# 9634 9614 6654 7034 b 001242 001244 — PATA PATB PATSEL PGE PGM PIP PIRQ PIRQVE PLU b CZRJUBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 103 CZRJBC.P1T CROSS REFERENCE TABLE -~ USER SYMBOLS 20-MAR-78 10:22 62646 4255 4256 4257 6321+ 4342 4289 4357 L2674 42684 42694 4322+ 4355 4325 1757 4803 48594 1735 1407 1441 1504 4079« 40814 4778 4034 4110 4109# 4101 L1134 4083 40764 613 29554 3308 3314 3536 411 4778 4779 K 8 CZRJBCO, RPO4/S5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 104 CZRJBC.P1T CROSS REFERENCE TABLE =-- USER SYMBOLS 20-MAR-78 10:22 RESREG= RESVEC= RETRY = RNOP = RPADR 104413 000010 001250 000004 000101 012376 RPAS RPBA RPCA RPCC RPCS1 000016 000004 000034 000036 000000 = = = = = RPCS2 = 000010 RPDA = 2845 2958# 3249 3393 3396 3459 3663 1596+ 1621 1623+ 1626+ 1709 1711+ 1714 1326+ 4104 31824 2188 31894 31904 31754 31574 4137 3313« 4141 4174 3874+ 3496 3517 3500 2531 3277 1651 3648 4205+ 1639 1675 3657« 4210 3178# 4179 3309 3280 2287 6184 965# 7154 8774 3735 = 000030 31844 31804 31864 31934 31944 29774 1653 31914 21924 1333 31834 3185#4 31884 31874 RPWC = 000002 RP.REG 001306 31764 9874 RPDB = RPDS1 = RPDT = RPECT = RPEC2 = RPERRS RPER1 = RPERZ = RPER3 = RPINIT RPLA = RPMR = RPOF = RPSN RPO4 RPO4B RPOS RPO6 RTC = 000022 000012 000026 000044 000046 012230 000014 000040 000042 012414 000020 000024 000032 013164 020751 020756 020763 000117 1972 1327« 4795 1590 1366 1369 1372 884 1334« 2227 9664 SC 015464 005704 SCAWC sCt = 000100 SC10 = 001000 scC1 sC12 SC13 sC2 SC20 SC3 SCé4 016316 016406 016456 = 000200 = 002000 015534 015540 SEQ 0101 9674 3718 1704 7784 7814 3795 3789 3779 7794 7824 37704 37724 2190 3488 3679 3271« 3758 4189 3213 1668 3907 3908 3229 3352 3476 3719 3966 4194 4293 3676 3713 3983 4078 4084 4,088 3513 3555 3575 3586 3601 3612 3477 3984« 3497« 4000+ 4085 4204 3901+ 4955 3918+ 4025 31794 3677« 3302 3842 3230+ 3733« 3414 3879 3270+ 3824+ 3430 4035 3272 3904+ 3492 4132 3365+« 3917+ 3484 3509 3524 3416 3826 3851 3905 3986 3793 3796 3181# 3806 3315 3905+ 3836 3906+ 3906 3907« 4146 3908« 4776 3565 1854 2188 3755 31774 3810 1854 16461 32094 3306 3537 3541 3561 39504 31584 3226 3228 3346 1020 4798 1606 43954 43964 43974 1639 4801 1633 1651 4806 1738 1653 4809 33454 1668 4812 1675 4815 1462% 31084 29574 3590 3209 3739 3348 3898 3408 3622 1685 47N 3712 3953 4793 3745 3751 37554 3819 3867 3881 3888 3903 3943 3693 2819 1639+ 1690+ 3743 18944 1641+ 1894 3832 3800 3782 38894 39044 39144 3774 3803 3815 1642+ 1643+ 1684 3518« 3604 3623 3635 4142 4175« 4181 2190 4782 4785 4788 “an 4806 4277 L 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 105 CROSS REFERENCE TABLE == USER SYMBOLS CZRJBC.P1 20-MAR-78 10:22 SC5 SC6 SC6A SC7 sc8 SEARCH= SEC20 SEEK = SEEKFG SELDRV= SETFMT= SETHDR SETPAT SETTBL SETVEC SET.IE 015552 015752 016062 016210 016266 000131 001264 000105 012340 000145 000143 005732 003716 005532 002426 020034 SKI = 040000 SLASH 021021 SOFSW 001216 SRCHWT 012312 STACK = STCLK1 STCLKZ2 STCLK3 STKLMT= ST0 001100 006150 006220 006224 177774 016710 ST02 ST03 ST05 ST06 017136 017206 017232 017240 ST101 ST107 016740 017276 ST08 ST09 ST.CLK SVRH11 SWR 017326 017336 006072 017716 001140 SWREG SwO SwO00 Sw01 SWwO2 = = = = SWO5 Sw06 = 000040 = 000100 Sw03 SWO4¢ Sw07 SW08 Sw09 SW1 Sw10 SW1i SWwi2 Sw13 SW14 000176 000001 000001 000002 000004 = 000010 = 000020 = = = = = = = = = 000200 000400 001000 000002 002000 004000 010000 020000 040000 3771 3799 3797 3834 3811 8874 9714 8794 1463+ 8504 889# 1584 1545 1583 1324 3243 852# 2017 9524 30624 5224 1946 1957 1955 5334 3960 39904 3989 6027 3987 4029 4031 4054 4024 1332 3592 9264 2203 494 S86# S/6# S754 S74LM S734 5724 37774 38204 38444 3847 3827 3849 3837 3859 3843 38694 3852 1420+ 1426+ 1586 1909 31164 3214 3440 1589 1729 1555 1728 13324 19044 15614 18614 ~ 3880 3882# 3274 3383 3457 3662 3764 42034 3410+ 1659 3515« 1605 1694+ 3893 1632 1696 1698 1700+ 1737 1807 1977 8624 44034 1595+ 1278 19564 19654 1964 39814 4033 SEQ 0102 3913 1705+ 1897+ 3857 3900 1677 19664 4038 3993 40254 4036 40454 4044 19464 4046 4052 4059 40634 3640 1290+ 3741 2212 1317 1292 2552 2552 3748 1298+ 3788 1317 2646+ 2614 3839 1337 1337 1847 2591 2591 1670 3938 1716 3999 1804 4062 1847 4718 2196 m 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 106 CZRJBC.P11 CROSS REFERENCE TABLE -~ USER SYMBOLS 20-MAR-78 10:22 SWw15 = 100000 SwW2 = 000004 Sw3 = 000010 Sw4 = 000020 SWS = 000040 Swé6 = 000100 Sw7 = 000200 Sw8 = 000400 Sw9 = 001000 SYSTAT 020770 T 021027 TABLE 001376 TAP = 040000 TBITVE= 000014 1D 015324 IDF = 000040 TIMER 012342 TITLE 025324 TKVEC = 000060 TPVEC = TRAPVE= TRE = TRKCNT TRKTST TRK1 = TRK10 = TRKZ2 = TRK20 = TRK4 = 000064 000034 040000 001236 005622 004000 040000 010000 100000 020000 TRTVEC= TTRKS TTRKSC TUF = 000014 001232 001234 000100 TRNSWT 012210 TYPADR 006266 TYPDS = 104405 TYPE = 104401 TYPERR 007174 TYPOC = 104402 TYPON = 104404 TYPOS = 104403 . « 5614 5844 583 5824 5814 5804 S7on S784 S7T7H 1342 1993 1030# 7674 6194 3716 7964 31214 4043 1308 6264 6274 6254 644n 9604 1719 7834 7864 7844 7874 7854 1978 6204 9584 9594 974 1524 1784 1308 1379 1468 1782 2238 2546 2735 43984 44054 1485+ 37254 814N 3328+ 4049+ 4864 1486+ 2008 2034 3452« 4055+ 3595+ 3641« 2529+ 2530+ 1282+ 1283+ 1303+ 1869+ 18764 1878 1880+ SEQ 0103 3728+ 3821+ 3865+ 3915« 39235+ 3956 3958+ 4009 4022+ 1365 1373 1451 1779 1884+ 30544 3629 3646+ 3655+ 3730 3731« 3994 1542+ 1870+ 8154 1985# 2016 1311 1548+ 1549+ 1551+ 1553« 1556+ 1870 1349 1399 1498 1992 1356 1401 1503 1358 1406 1513 1998 1360 1415 1518 2011 1362 1417 1527 1364 1423 1529 1472 1785 2242 2265 2616 2745 2558 2736 22274 2615 4937 3552+ ULDFLG 012316 1533 3269+ UNLOAD= UNS = UNTOFF UNTON UPDACY UPDATK 000103 040000 020662 020673 006012 006042 43834 43854 1887 19354 19244 4016+ 2269 2627 2781 2274 2637 29464 3615+ 3647+ 1375 1453 1781 4934 2198 2324 2721 4938 2206 2421 2726 2237 2497 2730 3873« 3889 3891« 4002+ 4919 2017 2282 2667 4922 2029 2285 2715 3785 3871 2276 2648 1440 1536 N 8 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 10:25 PAGE 107 CZRJBC.P11 CROSS REFERENCE TABLE =-- USER SYMBOLS 20-MAR-78 10:22 6684 655# 6564 657# 8494 8484 8034 UPE UsS1 us2 US4 R VUF vu30 7004 858# 9684 6694 7184 8914 8924 10744 7914 VAl WAQ w( WCE wWCF WCXD WCKHD wCTBL WwCuU WRT.AD WRT.RP WRT.R1 WRT.R2 WRT.R3 WRT .R4 WRT.RS WRT.WD WRU WSU $AUTOB $BDADR $BDDAT $BELL $CHARC $CKSWR $CMTAG SCM3 = $CNTLC $CNTLG $SCNTLU $CRLF $OBLK $082D $DECVL $OO0AGN $OTBL S$SENDAD SENDCT $EOP $EOPCT 1424 1675 1571 7244 705# WLE WRL WRTDAT WRTHD WRTRK WRTRK1 WRTRKZ2 SEQ 0104 004140 017614 017524 8934 894L# 1583« 1595# 16034 4127+ 3301 1721 017610 017700 017706 017712 017714 017612 000400 000004 001134 001122 001126 001162 007640 010622 001100 000000 011517 01153 011524 001167 010306 011654 41404 3429 3600 4779 3483 3611 3487 3809 4147 4153 41604 4136+ 41394 4779 2605 2762 2220 2343 2558 2352+ 1274 1284 3491 3841 3499 3878 3508 41244 3512 3523 3530 3540 3554 1785 2755 1998 2206 2220 2237 2242 2252 2269 2755 23574 27554 28194 28674 25014 27564 1375 2360 25054 18014 17974 17764 1793 1856 1379 2648 1536 2735 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) S$ERFLG SERMAX $ERROR SERRPC $ERRTB SERTTL $ESCAP 001103 001115 006766 001116 001630 909 9154 1280 9164 11134 2193+ SFILLC $FILLS $GDADR S$SGDDAT $GET42 $GTSWR SHD = 001156 001155 001120 001124 005314 010712 000000 CZRJBC. P11 SICNT $INTAG SITEMB SLF $LKCSB $LKCSR $LKS SLLVEC $LPADR SLPERR $LPVEC SMAIL = SMNEW SMSWR SNULL SOCNT 20-MAR-78 10:22 001112 001160 001104 001135 001114 001170 001200 001176 001206 001210 001106 001110 001202 22222 9134 9364 2220 9344 9334 9174 9194 17944 26134 478 Y] 011547 011536 001154 010066 010070 001100 001166 011164 122322 011254 123222 000007 012106 001172 001174 005336 (22222 012050 011620 $SETUP= 000106 177777 $STUP = $SUPRS $SVPC $SWR 011560 000200 123000 $TKB $TKCNT $STKINT 001146 010316 010334 9104 924N 9144 940N 474 9464 949N 9504 9114 312# 9L 84 1285+ 21824 2200+ 2234 1438+ 1284+ 1) 0] 9 10:25 PAGE 108 CROSS REFERENCE TABLE -- USER SYMBOLS SEQ 0105 2220 2201+ 2202 2220 4782 1664* 1612+ 1783 1625+ 2199+ 2220 3762 2329 2360 3813 2360 2192+ 4806 3817 1644+ 4094 1661+ 4154 4791 4793 4803 4806 1667+ 4363 1713 4372 1744 4373« 1754 4375+ 2360 2667 2738 2755 1850+ 2215 2217 2952 2610« 1302 2649 2229 2745 2762 1736+ 1849 2214 2411+ 24357# 1518 2220 4918 4952 4954 1282 1284 1286 1314 1786 2183 221 2219 2550 2555 486 487 2178 2622 936 2196 937 2203 2208 1284 1773 2212 2220 1786 1796 2755 2313 2616 2613 9324 2393+ 2388+ N0 B 20-MAR-78 2400+ 907# 9384 2680# 1804 1453 2957 27034 2957 26964 29024 944N 9454 1803# 4781 4935 2959 28864 1990 1267# 2556 12674 1991 505# LO68# 1802 9294 2511 1313 27984 1280 2762 27734 483 2174 2531 2556 25264 485 2176 2567 2687 2608 2177 2595 2689+ CZRJBCO, RPO4/S/6 FMTR MACY11 CZRJBC.PT 20-MAR-78 10:22 $ TKQEN= $TKQIN $TKQOU $TKQSR $TKS $TKSRV $IN = $TNPWR $TPB $TPFLG $TPS $TRAP $TRAP2 = $TRP $TRPAD S$TSTNM $TTYIN $TYPBN= $TYPDS $TYPE S$TYPEC $TYPEX $TYPOC $TYPON $TYPOS $SGET4= $OF ILL $40CAT= 010333 010320 010322 010324 001144 010404 000000 011764 001152 001157 001150 012144 012166 000014 012200 001102 011510 (b 22 25154 25124 25134 25140 9284 2529 4684 30A(1052) 20-MAR-78 C PAGE 109 9 SEQ@ 0106 CROSS REFERENCE TABLE == USER SYMBOLS 2581 2527+ 2528+ 2527 2510 25424 2692 2528 2690 2583 2827 2349+ 2307 2347 29234 28474 2360 2360 2360 478 10:25 2579+ 2691+ 2694 2563+ 2580+ 2692 2581 2694+ 2583+ 2565 2571+ 2593 2609+ 2619 2631+ 2651+ 29484 29494 29504 29514 2952 29534 2954 29554 29564 2220 2718 2736 2750 27544 23474 2348 2653 5134 2515 9054 25168 941 2754M 2755 2532+ 29574 29584 1631 1736 42624 2241 010072 007424 007574 007642 007670 007704 007644 000000 010067 2946 2342 23584 2949 2401 RN 026232 505 2360 42654 24364 5064 2505# 42664 5084 2510 42674 510# 25144 42684 4269 4270 L6494 1277 Q7740 1604 2762 49004 28674 D 9 CZRJBCO, RPO4/5/6 FMTR MACY11 30A(1052) 20-MAR-78 20-MAR-78 10:22 CROSS REFERENCE TABLE =-- MACRO NAMES 10:25 CZRJBC.P11 GETSWR LOOP MORETA MULT NEWTST POP PUSH REPORT RP04.D SCOPE SETPRI SETTRA SETUP SKIP SLASH SPACE STARS SWRSU TRMTRP TYPBIN TYPDEC TYPNAM TYPNUM TYPOCS TYPOCT TYPTXT $SCMRE $SCMTM $SESCA SONEWT $$SET $$SKIP .EQUAT . HEADE KT . SETUP . SWRHI . SWRLO LBACTI .$APTB . $APTH 1614 1683 1» » 4684 895# 1 1 » 1L # » 524 1L 2938# 1 1# 1L 6294 " 1814 2969 » 2938« 1# 14 ” 14 1# 1L 1L 899# 8994 1L 1 29384 1L 14 1L 4 » 14 4874 1 1L 14 2126 2140 4989 3813 3816 4093 4154 1615 1746 1616 1747 1617 1748 1618 1749 1612 1644 1661 1744 6294 1631 1314 1736 2492 2451 2907 2887 2683 2948 1272 2949 2950 2952 6294 2292 630 2363 634 2641 2509 1506 5004 4942 4528 12864 4532 1783 2260 1343 2257 1530 2614 2948 2949 676 1646 1753 1647 1755 1648 1759 3763 2954 2955 2956 2957 2958 2586 680 871 2601 875 2672 2696 2765 2955 2956 2957 2958 ~NO 1680 4961 # 1443 2020 4926 6294 6294 1777 3762 2184 SEQ 0107 oo ESCAPE GETPRI] 4684 4684 4684 )14 1L 17694 2960# 21674 5234 N CKCHR CKDIG CKNUM COMMEN ENOCOM ENDTYP ERRCAL ERRENT ERROR PAGE 111 4651 4853 4857 2950 2952 2954 901 1649 941 6294 6294 4684 4«68# 468# 488 4684 519 1267 479 489 501 1650 3814 1261 2789 1656 3818 1265 2808 1666 4095 1771 2871 CZRJBCO, RPO4/5/6 FMTR MACY11 CZRJBC.P1 20-MAR-78 10:22 .SAPTY <SASTA .SCATC .SCMTA . $0820 .$DB20 .S01V .SEOP . SERRO .SERRT CSMULT . SPOWE . SRAND . SRODE . SRDOC .SREAD » # » » # 1 1L 1» 1# 1 1 ¥ 1» # » 4 . SR2AZ 1L .$582D .$5820 1 15 .$SAVE .$SCOP .$SIZE . $SUPR .STRAP .STYPB .$TYPD .STYPE .$TYPO . $40CA .1170 . ABS. 1 1 14 14 1L 1# 1L 1# 1L 1L » 026232 ERRORS DETECTED: 4684 L68# 4“68¢ 49° 899 2806 468¢ 4684 L4684 1769 2168 4688 2507 4684 L4684 2869 2787 4684 L68¢ 2763 2915 L4688 L68¢ 4684 2439 2290 2361 30A(1052) 20-MAR-78 10:25 E 9 PAGE 112 CROSS REFERENCE TABLE =-- MACRO NAMES 000 0 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 46K CORE USED: (91 PAGES) SEQ 0108
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies