Digital PDFs
Documents
Guest
Register
Log In
AH-T105A-MC
July 1982
248 pages
Original
129MB
view
download
OCR Version
168MB
view
download
Document:
CZRNAA0 RM80 RM80 PERF EXER JUL 1982 bw
Order Number:
AH-T105A-MC
Revision:
000
Pages:
248
Original Filename:
CZRNAA0__RM80__RM80_PERF_EXER__AH-T105A-MC__JUL_1982_gray.pdf
OCR Text
o“ o o i o [T L > w oz JUL 1982 2 COPYRIGHTO MADE IN UsA vee BIETHED | RMBO PERF EXER CZRNAARO AH-T105A-MC o 182 FICHE 2 OF 2 wabe 1 usa HB0EN SEQ 0001 s ’ S S SR Y R A RN L S B RN WNANIAINI A NIRININD — ) ) D b cnd cd - -l - N R NN = S 0 00 O N AN = O 0 00 NN N — CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 1 «REM ] IDENTIFICATION PRODUCT CODE: AC=T104A=-MC PRODUCT NAME: CZRNAAO PRODUCT DATE: APRIL 1, 1982 MAINTAINER: AUTHOR: CX DIAGNOSTIC GROUP MIKE LEAVITT RM80 PERFORMANCE EXERCISER THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE AND BE _ CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT NOT SHOULD CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL. THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. DIGITAL EOQUIPMENT gg&}?‘s\{un OF ITS CORPORATION ASSUMES NO RESPONSIBILITY FOR THE U'SE OR SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY COPYRIGHT (C) 1982 DIGITAL EQUIPMENT CORPORATION . : SEQ 0002 CZRNAAO RMB0 PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE 2 CONTENTS % 1. 4 1.1 é 2. 8 3. 18 LOADING THE PROGRAM STARTING ADDRESSES PROGRAM CONTROL SWITCH OPTIONS PASS/TEST TERMINATION PASS TERMINATION .5.1 .5.2 TEST TERMINATION 3.6 RUN_TIME " "3.6.1 DATA TRANSFER MODE 3.6.2 SEEK VERIFICATION MODE 3.7 DUAL PORT OPERATION 3.8 XXDP, ACT11, APTI1 3.9 APT ENVIRONMENTAL TABLE DEFINITIONS 3.¢ 20 21 22 23 24 25 26 27 28 4. 30 CONTROLLING THE PROGRAM 4.1 32 33 % 35 4.2 36 & 38 39 40 41 5. : % AP 48 . ' et E 5.2 ‘ 30 4.2.1 'T' COMMAND 6. R PERFORMANCE SUMMARY TYPEOUT EXPLANATION HARD/SOFT ERROR DEFINITIONS 5.2.1 HARD ERRORS 5.2.2 SOFT ERRORS DATA CHECKING & ERROR RECOVERY 6.1 6.2 6.3 7. COMMAND COMMAND COMMAND COMMAND COMMAND PERFORMANCE SUMMARY TYPEOUT 5.1 : 45 PARAMETERS 4.1.1 PROGRAM CONTROL PARAMETERS 4.1.2 CHANGE DEVICE ADDRESSES KEYBOARD COMMANDS 4.2.2 D' 4.2.3 'S' 4.2.4 'W' 4.2.5 'R' 4.2.6 'WT* , 43 gg EQUIPMENT MEDIA PRELIMINARY PROGRAMS OPERATING PROCEDURE 3.1 3.2 3.3 3.% 16 17 18 19 GENERAL DOCUMENT NOTES REQUIREMENTS 2.1 2.2 2.3 10 11 18 53 gg ABSTRACT DATA BUFFER COMPARISON VERIFICATION OF DATA WRITTEN BAD ADDRESS FLAGGING ERROR MESSAGES AN A AR A CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 2-1 7.1 7.2 8. ERROR DESCRIPTION LINES DETAIL ERROR LINES PROGRAM DESCRIPTION 8.1 8.2 8.3 8.4 HOW THE PROGRAM OPERATES DUAL PORT OPERATION SELECTION OF OPERATION VARIABLES DATA PATTERNS 9. RM SOFTWARE DRIVER DOCUMENT SEQ 0003 1. SEQ 0004 ABSTRACT THE RMB0 PERFORMANCE EXERCISER PROGRAM IS DESIGNED TO PERFORM AN INTERACTIVE TEST ON RM DISK DRIVES CONNECTED TO A MASSBUS SUBSYSTEM. THE DRIVES MAY BE CONTROLLED BY AN RH?O CONTROLLER. IN ADDITION TO PERFORMING AN INTERACTIVE TEST OF THE DISK DRIVES ON THE SUBSYSTEM, THE PROGRAM IS INTENDED TO BE USED TO VERIFY THAT THE DRIVES UNDER TEST ARE PERFORMING TO THEIR DATA ERROR N NN= Db = b 3 NS NN = OO0 00 NN S NN = CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3 RATE AND SEEK ERROR RATE (SEE ERROR RATE SPECIFICATIONS). N=O OO ~NO THE PERFORMANCE EXERCISER PROGRAM WILL EXERCISE DRIVES CONNEC/ED AS EITHER SINGLE OR DUAL PORT UNITS. DUAL PORT DRIVES ARE TESTED BY LOADING AND RUNNING THE PROGRAM FROM BOTH CONTROLLING SYSTEMS. Fr’glEiTngGRMIVES WILL EXERCISE A MIXED SYSTEM OF DUAL PORT AND SINGLE TO OBTAIN INTERACTIVE TESTING, OPERATIONS ON THE MULTI-DRIVE CONF IGURATIONS ARE OVERLAPPED (OTHER DRIVES ARE PERFORMING SEEK/SEARCH OPERATIONS WHILE ONE DRIVE IS PERFORMING A DATA TRANSFER). OPERATIONS AMONG THE DRIVES ARE OPTIMIZED SO THAT A HIGH SLBSYSTEM DATA TRANSFER RATE OR A HIGH POSITIONING OPERATION RATE IS MAINTAINED. 23 THE PERFORMANCE OF EACH DRIVE I3 MONITORED BY THE PROGRAM. IF A DRIVE EXCEEDS A PRESET NUMBER OF ERRORS IN ANY OF SEVERAL CATEGORIES, THAT DRIVE IS AUTOMATICALLY DEASSIGNED. (THE OPERATOR MAY OVERRIDE THE AUTOMATIC DEASSIGNMENT FEATURE.) THE PROGRAM REPORTS PERFORMANCE STATISTICS FOR EACH DRIVE BEING EXERCISED ON REQUEST FROM THE OPERATOR OR AUTOMATICALLY AT AN INTERVAL DETERMINED BY THE OPERATOR. ALL DATA TRANSFER COMMANDS EXCEPT WRITE HEADER & DATA AND WRITE CHECK HEADER & DATA ARE USED. RECALIGRATE AND READ-IN PRESET COMMANDS ARE USED AT STARTUP AND DRIVE INITIALIZATION. RECALIBRATE AND RETURN=-TO-CENTERLINE COMMANDS ARE USED DURING ERROR RECOVERY. THE DATA TRANSFER COMMANDS ARE SELECTED RANDOMLY EXCEPT FOR THE WRITE CHECK COMMANDS. THE WRITE CHECK COMMANDS ARE USED TO VERIFY A PREVIOUS WRITE OPERATION. THUS, WHEN A WRITE COMMAND IS SELECTED, EHE DATA WRITTEN IS VERIFIED BY THE APPROPRIATE WRITE CHECK DEPENDING UPON WHETHER THE PROGRAM HAS BEEN LOADED VIA APT AUTOMATIC' MODE OR APT DUMP MODE WILL DETERMINE WHETHER: PROGRAM/OPERATOR COMMUNICATIONS ARE THRCUGH THE KEYBOARD, DYNAMIC PROGRAM OPTIONS ARE SELECTED VIA SWITCH REGISTER SETTINGS AND ERRORS ARE REPORTED ON THE CONSOLE TERMINAL. 1.1 GENERAL DOCUMENT NOTES A. IN REFERENCE TO ALL NUMBERS IN THIS DOCUMENTION. TO INDICATE THE BASE OF A NUMBER LARGER THAN SEVEN. A PERIOD(.) WILL FOLI.OU THE NUMBER TO__INDICATE DECIML OR_NO PERIOD WILL FOLLOW THE NUMBER TO INDICATE OCTAL. IFTHE NUMBER OCCURS AT THE Eug gF eisgg&ucg. A DOUBLE PERIOD(. .) INDICATES DECIMAL AND A § INDICATES OCTAL. ALSO, ANY REFERENCES T0 T IME DECIMAL. L ARE -’ ALWAYS IN CZRNAAD RM80 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-1 58 59 60 2. REQUIREMENTS & 2.1 EQUIPMENT 61 64 65 TERMINAL RH70 CONTROLLER 1 T0 8 RMBO DISK DRIVES 4] 2.2 AND WUST BE FORMATTED IN (16 BIT) MODE. I 2.3 RMB0 FUNCTIONAL TEST, PART 1, 2 & 3 (OPTIONAL PART &) SRADSSGRIRARAS2STRIRTR 83 3. OPERATING PROCEDURE 3.1 LOADING THE PROGRAM THE PROGRAM MAY BE LOADED .XXDP MEDIA, USING ANY XXDP DEVICE 3.2 STARTING ADDRESSES 200 - START ADDRESS, ALL SWITCHES CLEAR (SEE SECTION 3.4) WHEN THE PROGRAM IS STARTED, A DATA PATTERN WILL BE WRITTEN TO ALL ON=-LINE DRIVES IN A SEQUENTIAL SEEK MODE. UPON COMPLETION OF THE WRITE, THE PROGRAM GOES INTO A TESTING MODE. 204 = RESTART ADDRESS, THE RESTART ADDRESS PROVIDES THE OPERATOR WITH THE ABILITY TO CHANGE THE DEFAULT RM/RH ADDRESSES (SEE SECTION 4.1.2), CHANGE ANY PROGRAM PARAMETERS (SES SECTION 4.1) OR CHANGE DRIVE LIMIT PARAMETERS (SEE SECTION 4.2). 1 1 106 }8; 112 113 114 BY EITHER OF THE FOLLOWING MEDIA: .PAPER TAPE, USING THE STANDARD PAPER TAPE PROCEDURE 1 1 } 109 PRELIMINARY PROGRAMS RM80 DISKLESS TEST, PART 1 & 2 81 H? MEDIA THE PERFORMANCE EXERCISER PROGRAM REQUIRES FORMATTED DISK 75 4 PDP=11/70 PROCESSOR KW11=L OR KW11-P CLOCK 69 70 78 SEQ 0005 16K_MEMORY PROGRAM LOADING DEVICE 66 67 68 73 F 3.3 PROGRAM CONTROL PROVIDED THE PROGRAM HAS BEEN LOADED AND STARTED VIA THE APT DUMP MOPE OR THE DIAGNOSTIC IS RUNNING IN STAND ALONE PROCESSOR/DRIVE OPERATIONS ARE INITIATED AND CONTROLLED BY KEYBOARD COMMANDS AND 1 1 NN PNON) = =2 —% <8 WHWWWWWNIN \AKWN-'SOQVOW‘“WN—!OOQNOM CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-2 9 SEQ 0006 SWITCH REGISTER SWITCH SETTINGS. IF THE PROGRAM IS LOADED VIA APT SCRIPT MODE ALL SETUP HOWEVER, AND SWITCH REGISTER SETTINGS WILL BE PROVIDED THROUGH THE APT E TABLE. TYPEOUTS FROM THE USER DIAGNOSTIC MAY OR MAYNOT BE INHIBITED %;Eggéz(islefl;m WHETHER OR NOT THE APPROPRIATE BIT IN THE E TABLE 3.4 SWITCH OFTIONS IF THE PROGRAM IS BFING RUN ON A SWITCHLESS PROCESSOR THE PROGRAM WILL DETERMINE THAT THE HARDWARE SWITCH REGISTER IS NOT PRESENT AND WILL USE A °*SOFTWARE' SWITCH REGISTER. THE °'SOFTWARE® SWITCH REGISTER IS LOCATED AT LOCATION 176 . THE SETTINGS OF THE °SOF TWARE' 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 IN KEYBOARD ENTRY MODE, OR IS AT A HIGHER PRIORITY PROCESSING AN DRIVE 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 =' 138 EACH TIME SWITCH SETTINGS ARE ENTERED, THE ENIIRE SWITCH REGISTER m SWITCH ENTRY. 139 140 IMAGE MUST BE ENTERED. LEADING ZEROS ARE NOT REQUIRED. °*RUBOUT® AND °CONTROL U' FUNCTIONS MAY BE USED TO CORRECT TYPIMG ERRORS DURING 143 144 ON PROCESSORS WITH HARDWARE SWITCH REGISTERS, THE °*SOFTWARE® SWITCH REGISTER MAY BE USED, IF THE PROGRAM FINDS ALL 1°'S IN THE SWITCHES. }29 AND THE PROCEDURES DESCRIBED ABOVE MUST BE FOLLOWED. 145 ALL SWITCH REGISTER REFERENCES WILL BE TO THE °"SOFTWARE®' REGISTER 148 149 150 151 152 153 154 SW<15>=1 SW<14> SW<13>=1 SW<12> SW<11> SW<10>=1 SW<09> HALT ON ERROR NOT USED INHIBIT ERROR TYPEOUT NOT USED NOT USED BELL ON ERROR NOT USED 156 157 158 159 SW<07>=1 SW<06>=1 SW<05>=1 DISPLAY ALL DATA COMPARE ERRORS DO NOT ALTER THE CURRENT OPERATION PARAMETERS PARTIAL REGISTER DISPLAY IF ERROR; DO NOT DISPLAY ECC CORRECTION RESULTS 155 160 161 usg 16 164 SW<08>=1 SW<04>=1 SW<03>=1 168 169 170 1”7 INHIBIT MAXIMUM ERROR COUNT CHECK: DO NOT DEASSIGN DRIVES WHEN END OF TEST IS REACHED DISPLAY THE SECTOR IN ERROR (BEFORE RETRY ATTEMPTS) IF *DCK®, 'DTE’, OR 'WCF' ERRORS OR AFTER THE 28TH RETRY IF UNCORRECTABLE 'DCK’ ;aaon SET, DISPLAY REST 6; ga#sgwme ERRORS €& SW<07> }gg 167 INHIBIT END OF PASS MESSAGES SW<02>=1 INHIBIT SUBSYSTEM STATUS TYPEOUT DURING STARTUP SW<01>=1 PROMPT FE CYLINDER MESSAGE DURING AUTO TEST MODE INHIBIT DATA COMPARE AFTER READ COMMAND, W/O ERROR SW<00>=1 INHIBIT PERFORMANCE REPORT AFTER SPECIFIED TIME 'READ ONLY'* OR LOCKED ‘READ ONLY'" MODE SEQ 0007 CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-3 17; 17 _};g SW<00> 11;9 UHEN IHIS SWITCH IS SET(1) THE PROGRAM WILL OPERATE IN °'READ 178 ONLY'* MODE. IF THE SWITCH IS CLEARED(0), THE PROGRAM WILL RETURN TO READ/WRITE MODE DURING TESTING. THIS SWITCH ONLY EFFECTS THE 181 FOR EXAMPLE, IF THE PROGRAM IS STARTED AT TESTING HODE. HOWEVER, TESTING PORTION OF THE PROGRAM. AINININININININIAINY SEIRIRER=S SRYRTRUN2EBEIRERER ‘};,(9) ADDRESS 200. A DATA PATTERN WILL BE WRITTEN TO ALL ON-LINE DRIVES IN A SEQUENTIAL SEEK MODE. UPON COMPLETION OF THE WRITE THE_PROGRAM GOES INTO A IF THE OPERATOR SWITCHES TO ‘READ ONLY' MODE (SW0=1) JUST PRIOR TO OR DURING THE SEQUENTIAL WRITTING OF THE DISK, THE PROGRAM WILL CONTINUE WRITTING UNTIL THE SEQUENTIAL WRITE IS COMPLETED. UPON COMPLETION OF THE SEQUENTIAL WRITE, THE PROGRAM WILL SWITCH TO A °'READ ONLY'* UNTIL SWO IS RESET TO ZERO BY THE OPERATOR. HOWEVER IF THE OPERATOR WISHES TO MAKE SURE ABSOLUTELY NO WRITTING ON THE DISK AT ANYTIME, BE LOCKED IN “'READ ONLY'' MODE. TESTING MODE _THAT THERE IS THE PROGRAM MAY THE PROGRAM CAN BE LOCKED INTO ‘READ ONLY'' MODE BY STARTING OR HAS RESTARTING THE PROGRAM WITH SW0 SET(1). AFTER THE PROGRAM EFFECT FURTHER NO HAVE WILL MDEEDSUO ONLY'' BEEN LOCKED IN '‘READ TO RELEASE THE PROGRAM FROM UNTIL THE LOCKED MODE IS RELEAS THE LOCKED ‘READ ONLY'' CONDITION, THE PROGRAM MUST BE STARTED OR RESTARTED WITH SW0 CLEAR(0). FOR EXAMPLE, THE PROGRAM IS STARTED AT ADDRESS 200 AND LOCKED IN "READ ONLY"'’ MODE. A SEQUENTIAL READ WILL OCCUR TO ALL ON-LINE DRIVES. UPON_ COMPLETION OF THE READ, THE PROGRAM GOES _INTO A READ ONLY'* TESTING MODE AND WILL STAY THAT WAY UNTIL RELEASED. 3.5 PASS/TEST TERMINATION 210 211 212 %}z A PASS IN RANDOM °T' COMMAND MODE OR SEQUENTIAL *T' COMMAND MODE IS DETERMINED BY EITHER BITS READ OR SEEKS PERFORMED. THE NUMBER OF BITS OR SEEKS REQUIRED FOR A PASS IS DERIVED FROM EITHER THE SOFT ERROR RATE SPECIFICATION OR THE SEEK ERROR RATE SPECIFICATION. 215 216 THE SOFT ERROR SPECIFICATION FOR THE RM DRIVE IS NO MORE THAN 1 SOFT ERROR (NON=-DISK RELATED) IN 1 X 10*10 BITS READ. (SEE SECTION 3.5.1 219 220 TME SEEK ERROR SPECIFICATION FOR THE RM DRIVE IS NO MORE THAN 1 SEEK ERROR IN 1 X 106 SEEKS. (SEE SECTION 3.5.1 FOR THE 90X CONFIDENCE 3}; FOR THE 90% CONFIDENCE LEVEL) 355 LEVEL) 223 DISK ADDRESS LIMITS SETU’ BY THE OPERATOR. ggg %59 228 A PASS IN 3.5.1 ‘W' OR'R’ COMMAND MODE IS DETERMINED BY THE MAXIMUM PASS TERMINATION END OF PASS FOR A SINGLE DRIVE IN THE RANDOM °T* COMMAND MODE OR CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 3-4 1 1 SEQ 0008 SEQUENTIAL 'T* COMMAND MODE, IS DETERMINED BY ONE OF THE FOLLOWING 2 CONDITIONS. 239 %35 23 THE DRIVE PASS OCCURS WHEN IS 1. END XOF10°8 'enosns' IF PARAMETER A. HAS TAKE WILL IT WORDS). READ 3 X 10%9 BITS (1.875 235 10. PASSES TO REACH THE 90% CONFIDENCE LEVEL OF $ X 1010 BITS APPROXIMATELY 3.33 PASSES TO REACH THE SOFT 234 ERROR RATE OF 1 X 1010 BITS (6.25 X 10°8 WORDS) READ. HOWEVER, IT WILL TAKE 236 (1.875 X 10°9 WORDS) READ. 'gg IF PARAMETER 'ENDING' IS 0, END OF PASS OCCURS WHEN THE DRIVE HAS PERFORMED 1 X 10%6 SEEKS. IT WILL TAKE 1 PASS TO REACH THE SEEK ERROR RATE OF 1 X 106 SEEKS. HOWEVER, IT WILL TAKE 3 PASSES TO REACH THE 90% CONFIDENCE LEVEL OF 3 X 106 SEEKS. END OF PASS FOR A SINGLE DRIVE IN ‘W' OR 'R® COMMAND MODE, IS 239 2% 24 %2§ 244 8. 247 gzg A. WHEN A SEQUENTIAL SEEK IS MADE BEYOND THE MAXIMUM DISK ADDRESS LIMITS SET BY THE OPERATOR, THE PASS IS CONSIDERED ENDED. DETERMINED AS FOLLOWS. %22 ggg 3.5.2 IF SW04 IS CLEAR, THE TEST FOR A DRIVE IS TERMINATED WHEN: A. THE DRIVE HAS COMPLETED THE NUMBER OF PASSES SPECIFIED IN %gg 254 PARAMETER 'PASSES'. 255 256 C. D. 257 258 E. 259 260 525 263 % %;‘ 552 277 5;3 THE TOTAL ERRORS ACCUMULATED EXCEED 25. . OCC'*RS: EM14. A FATAL ERROR OPERATOR DEASSEGNS THE DRIVE THE NUMBER OF PASSES SPECIFIED BY THE MONITOR HAVE BEEN REACHED, WHEN RUNNING IN *XXDP' CHAIN MODE, 'ACT11° CHAIN MODE OR’'APT® SCRIPT MODECANY AUTO MODE). 3.6 RUN TIME 3.6,1 DATA TRANSFER MODE (DEFAULT) 266 267 268 593 2;1 TEST TERMINATION THE EXERCISER PROGRAM MAY BE RUN IN TWO MODES. (SEE SECTION 3.5.1) THE PROGRAM RUN TIME VARIES GREATLY DEPENDING ON THE OPERATION MODE SELECTED, THE READ/WRITE RATIO PARAMETER (°'RATIO'), AND BY SWR SWITCHES 0. 1, AND 2. 1 DRIVE = APPROX. 1.75 HRS. (TO REACH 3 X 10%9 BITS OR 1.875 X 108 WORDS) WITH SW<00> =1 AND SW<01> =1, THE PROGRAM WILL RUN APPROX. 20% FASTER 3.6.2 SEEK VERIFICATION MODE 280 PARAMETER 'WRDCNT® = 256. (1 SECTOR) 284 SW<00> =1 (READ ONLY MODE) 281 282 283 PARAMETER 'MAXTRK® = 'MINTRK' (SAME VALUES) PARAMETER 'MAXSEC' = 'MINSEC' (SAME VALUES) SW<01> =1 (NO DATA COMPARE) SEQ 0009 CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-5 1 DRIVE = APPROX. 4.0 HRS (TO REACH 1 X 10%6 SEEKS) %g? 288 3.7 %gg DUAL PORT OPERATION A. Zzg} : 293 %8; B. : C. 296 ggg 3.8 %83 338% 304 305 3389 SWITCH THE °‘CONTROLLER SELECT' SWITCH TO START THE PROGRAM IN EACH PROCESSOR. RUN THE PROGRAM AS THOUGH XXDP, ACT11, APT11 COMPATIBILITY AUTOMATIC MODES. AND APT11 IN BOTH : LOADING DEVICE. 310 31 1. 312 IF SW02 OF THE SWITCH REGISTER IS SET(1) WHEN THE PROGRAM IS STARTED AT 200 OR 204, THE OPERATOR IS ALLOWED TO CHOOSE BETWEEN EXERCISING THE USER PORTION OF THE DISK OR JUST THE FE CYLINDERS 313 IS BYPASSED AND THE TEST IS PERFORMED ON THE FE CYLINDERS ONLY. (SEE SECTION 4.1). IF SW02 IS CLEAR(O), ALL THE INPUT DIALOGUE g}g 316 2. g}g DUMP MODE (NO MONITOR) g}z 1. v 3.9 THE_BUS ADDRESS AND CONTROLLER INTERRUPT VECTOR ARE DEFAULTED TO 176700 AND 254 RESPECTIVELY. INPUT DIALOGUE PROMPTED AFTER PROGRAM STARTS APT ETABLE DEFINITIONS 325 326 ggg THE FOLLOWING DEFINITIONS ARE VALID FOR SPECIFYING APT ENVIRONMENTAL TABLE (ETABLE) ENTRIES VIA RUNNING THE APT UTILITY PROGRAM ‘TSP g%g 1. 331 236 SOFTWARE ENVIRONMENT: = 1 IF APT SCRIPT MODE = 0 IF STANDLONE MODE ggg 3% DUMP AND THIS PROGRAM IS ALSO, COMPATIBLE WITH XXDP_IN DUMP AND CHAIN MODES, AND PROVIDES MEDIA PROTECTION IN THE CASE WHERE THE RM80 IS THE XXDP AUTOMATIC MODE OR CHAIN MODE (MONITOR) ggz ON_EACH DRIVE EACH PROCESSOR WERE RUNNING INDEPENDENTLY OF THE OTHER. %8‘8’ %%12 °'A/B' WHICH IS TO BE TESTED AS A DUAL PORT DRIVE AND CYCLE THE DRIVES UP. THIS PROGRAM IS COMPATIBLE WITH ACT11 : 301 LOAD THE PERFORMANCE EXERCISER PROGRAM INTO BOTH PROCESSORS. 2. ENVIRONMENT MODE: gg BIT7 == 0 ETABLE DOES SIZING PROGRAM DOES SIZING 339 34? BIT 6 = 1 =0 SPOOL MESSAGES TO APT IF SCRIPT MODE DON'T SPOOL TO APT 2 BIT 5 = 1 SUPPRESS TTY CONSOLE OUTPUT SEQ 0010 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-6 =0 ALLOW TTY CONSOLE OUTPUT BIT & TO BIT 0 ARE NOT USED SWITCH 1 (SOFTWARE SWITCH REGISTER) IF_ENVIRONMENT MODE BIT 7 (SIZING BIT ) IS SET 10 1, THE SOFTWARE SWITCH REGISTER WILL 9E USED, INSTEAD OF THE HARDWARE TTY CONSOLE SWITCH REGISTER. SWITCH 2 (USER SWITCH REGISTER) NOT USED s. CPU OPTIONS NOT USED 6. MEMORY TY:ES 1=4 AND MAX MEMORY ADDRESSES NOT USED INTERRUPT VECTOR 1: USED WHEN ENVIRONMENT MODE BIT 7 = 1;DEFAULT 254 BUS PRIORITY 1: NOT US INTERRUPT VECTOR 2: NOT USED 10. BUS PRIORITY 2: NOT USED 1. BASE ADDR ESS: USED WHEN ENVIRONMENT MODE BIT 7 = 1;DEFAULT 12 DEVICE MAP: NOT USED 13 CONTROLLER DESCRIPTOR WORDS: 14 CONTROLLER DESCRIPTOR WORDS: 176700 NOT USED NOT USED CONTROLLING THE PROGRAM THE FOLLOWING KEYBOARD CONVENTIONS ARE USED BY THE KEYBOARD ENTRY ROUTINES IN THE PROGRAM: A. TO DELETE AN INCORRECT CHARACTER FROM AN ENTRY STRING, TYPE A Fkggong IL;S%"G A RUBOUT WILL DELETE SUCESSIVE CHARACTERS TO DELETE AN ENTIRE LINE, TYPE A 'CONTROL U* (*U). CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-7 C. L SE@ 0011 AN ENTRY MUST BE TERMINATED BY EITHER A 'CARRIAGE RETURN' OR A 'PERIOD'. THE ‘PERIOD' TERMINATION IS RECOGNIZED BY THE PROGRAM AS A DEFAULT ENTRY REQUEST. WHEN A LINE IS TERMINATED 8Y A 'PERIOD' INSTEAD OF A ‘'CARRIAGE RETURN', THE PROGRAM WILL ACCEPT THE ENTERED VALUE AND WILL DEFAULT TO THE PRELOADED VALUES FOR ANY REMAINING ENTRIES. b — THE PROGRAM SEQUENCE BEING ENTERED. md d D VO~ T 420 IF A "CONTROL C' IS TYPED DURING DRIVE TESTiNG MODE, WILL ENTER THE COMMAND MODE. IF A 'CONTROL C' IS TYPED DURING "ENTER COMMAND® SEQUENCE, WITH NO DRIVES ASSIGNED, THE PROGRAM WILL BE RESTARTED AT LOCATION 204 . OTHERWISE, THE PROGRAM WILL RETURN TO "ENTER COMMAND' PROMPT AND WAIT FOR A CORRECT SEQUENCE OF CHARACTERS. "F *CONTROL C' IS TYPED DURING ANY OTHER ENTRY SEQUENCE, THE PROGRAM WILL RETURN TO THE BEGINNING OF THE GROUP N Y VN D. 4.1 PARAMETERS THE FOLLOWING QUESTIONS ARE ASKED TO DETERMINE HOW THE RM80 WILL BE TESTED. THE DEFAULT ANSWERS TO THESE QUESTIONS ARE ALWAYS AS DOCUMENTED HERE. 'DO YOU WISH TO EXERCISE ONLY FE CYLINDERS (L) Y ?° A "Y' ANSWER WILL PROCEED WITH EXERCISING ONLY THE FE CYLINDERS AND SKIP THE FOLLOWING QUESTION. A °N' ANSWER WILL PROCEED TO NEXT WARNING MESSAGE AND QUESTION (UNLESS THE EXERCISER IS IN “READ ONLY'' MODE(SWO=1), IN WHICH CASE THE WARNING WILL BE OMITTED BUT THE QUESTION WILL BE ASKED). *! CUSTOMER DATA WILL BE OVERWRITTEN !° 'ARE YOU SURE (L) N ?°* A 'Y' ANSWER WILL PROCEED WITH EXERCISING THE WHOLE DISK. A °N' ANSWER WILL PROCEED WITH EXERCISING ONLY THE FE CYLINDERS. IF ONLY THE FE CYLINDERS MESSAGE WILL BE PRINTED. ARE TO BE EXERCISED, THE FOLLOWING *s« EXERCISER WILL OPERATE ON FE CYLINDERS ONLY +' AT THIS POINT, IF THE PROGRAM IS LOCKED IN ‘READ ONLY'' MODE, THE FOLLOWING MESSAGE WILL BE TYPED. IF THE PROGRAM IS NOT LOCKED IN *READ ONLY'* MODE, THE FOLLOWING MESSAGE WILL BE OMITTED. *LOCKED IN READ ONLY MODE’ -~ WHEN THE PROGRAM IS STARTED, THE OPERATOR WILL BE ASKED TO ENTER PARAMETERS. THE FOLLOWING MESSAGE WILL BE DISPLAYED: 'CHANGE PARAMETERS (L) N ?° ' THE OPERATOR MUST ENTER A 'Y' IF PARAMETER ENTRIES ARE TO BE MADE. ANY OTHER CHARACTER IS ACCEPTED AS A 'N' ENTRY. THE PROGRAM WILL ¢ CZRNAAO RMB0 PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE 3-8 M SEQ 0012 IDENTIFY THE PARAMETER BY THE NAME GIVEN BELOW, DISPLAY THE CURRENT VALUE OF THE PARAMETER AND WAIT FOR THE ENTRY. THE PROGRAM WIL TYPE *INVALID ENTRY' IF THE ENTRY IS NOT CORRECT AND WAIT FOR A 457 458 459 CORRECT ENTRY TO BE TYPED. (SEE SECTION 4.1.1) 22(1) 462 IF THIS IS THE PROGRAM'S FIRST START, THE STATUS OF THE DRIVES ON THE 463 SELECTED MASSBUS SUBSYSTEM WILL BE PRINTED. ON ALL SUBSEQUCNT STARTS, 464 225 THIS TYPEOUT MAY BE INHIBITED BY SETVING SW<02> =1 THE FOLLOWING IS AN EXAMPLE DRIVE STATUS PRINTOUT: 469 'DRIVE STATUS: 222 RM80 0 ONLINE 472 473 2 3 OFFLINE RMB0 NOT PRESENT 475 476 2% 5 6 7 NOT AN RM8O NOT PRESENT NOT PRESENT' 470 1 47 4 474 LOAD DEV NOT PRESENT THE ABOVE DRIVE STATUS SHOWS THAT DRIVE 0 WILL BE TESTED, WHILE DRIVES 479 1 = 7 WILL NOT BE TESTED. 23? 4.1.1 2%% 484 KEYBOARD ENTRY PARAMETERS l’:gg NAME BASE 487 l{:gg WRDCNT 10. DEFAULT VALUE VALUE RANGE 6 - 7936. 7936. (SEE NOTE) 500 501 gg% CONTROLS THE MAXIMUM WORD COUNT USED FOR DATA TRANSFERS NOTE: THE PROGRAM WILL SELECT A MAXIMUM WORD COUNT, WHICH IS DETERMINED BY THE MEMORY AVAILABLE. THE MAX. WORD COUNT 490 91 492 493 494 495 496 497 498 499 FUNCTION ASSIGNED BY THE PROGRAM IS 7936.(1 TRK) WORDS. THE OPERATOR MAY SPECIFIY ANY OTHER MAX. WORD COUNT AS’LONG AS THE VALUE SPECIFIED IS AT LEAST_6_WORDS BUT NO LARGER _ THAN 7936. WORDS OR MEMORY AVAILABLE. (WHICH EVER VALUE IS SMALLER) 504 505 506 507 INTRVL 510 511 512 513 PASSES 10. 0 0 - 32767.. DETERMINES THE INTERVAL (IN MINUTES) BETWEEN AUTOMATIC PERFORMANCE SUMMARY TYPEOUTS: NO TYPEOUT IF THIS PARAMETER IS 0 OR IF SW<02> =1 ggg 10. 1 1 - 32767. NUMBER OF PASSES TO END OF TEST. (THIS PARAMETER IS NOT USED WHEN THE PROGRAM IS OPERATING IN AUTO RUN MODE) SEQ 0013 10. 0 0~ 15. IF PARMETER=O DATA PATTERN IS RANDOMLY SELECTED. IF PARAHETER)O SPECIFIES ONE OF THE 15. PATTERNS. THE SELECTED DATA PA"ERN 1S POINTED BY THE PARAMETE (SEE SECTION 8. lo) PATTERN'’. RANDW(C 8 000000 OOR1 IF PARAMETER = 0, THE WORD COUNT IS RANDOMLY SELECTED VALUE (BETUEEN6 AND THE IF PARAMETER = 1, THE WORD c%zttnu. BE THE VALUE 000002 0=-7 CONTROLS THE APPROXIMATE RATIO OF READ TO WRITE COMMANDS. VALUE 8 ENDING 000001 OOR1 R/g RATIO ~ &~ 8 o RATIO NOWVISWN—=O OO0 NOWVISWN=O0VO~NONWISS PATTERN (=1 VIVAWWAWNMWAAWL L wviviun ~ ViAW \h\h\fl\h&\h\h\fl W - RERTRRIRE SISRRURWgNN SEECREREREE Y FARAIIGEER ViV VIV WTVITIIIAI VAV NNP -~ —S — CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-9 = 1, END OF PASS IF PARAMETER oersgnmeo 8Ymé 'WORDS READ' IF PARAMETER= 0, END OF PASS 1S DETERMINED BY THE NUMBER OF SEEKS. WRTCHK 8 000001 OOR1 IF EQ 1, DO AN_APPROPRIATE WRITE CHECK AFTER EACH WRITE C OMMAND. IF EQ 0, SELECT WRITE CHECK COMMAND RANDOMLY. MESSAGE 8 000001 OOR1 IF PARAMETER =1, DO NOT PRINT ERROR MESSAGES FOR DATA ERRORS OCCURING AT LOCATIONS DEF INED BY THE OPERATOR AS BAD DISK. LOCATION. = 0, PRINT ERROR IF PARAMETER MESSAGES ASSOCIATED WITH BAD DISK LOCATIONS. RANDOM 8 000000 OOR1 IF_PARAME TER=0, RANDOM DATA BLOCK Aoofiesab IS USEDIN IF TER= »SEQUENTIAL DATA BLOCK IS USED IN Ci : B CZRNAAO RMB0 PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 3-10 2 SEQ 0014 : *T* COMMAND. 2;1 8 BADBLK §7 574 0OR 1 000000 IF EQ TO 1, THE BAD SECTOR ENTRY TABLE WILL ALWAYS BE mgmuzeo WHEN ASSIGNING [ s;s EQrb 0, THE BAD SECTOR IFENTRY TABLE WILL ONLY BE 7 gr INITIALIZED IF THE HDA SERIAL 79 . 580 NUMBER HAS CHANGED SINCE THE sgg NUMBER NOTE: IF THE HDA SERIAL LIKELY 587 DRIVE WAS DEASSIGNED. LAST TIME IT WAS READ. gm HAS CHANGED, THIS MOST HAD BEEN REPLACED WHILE THE 584 585 586 289 gg? MEANS THAT THE HDA OR DRIVE 4.1.2 | CHANGE DEVICE ADDRESSES THE RM/RH ADDRESS AND VECTOR MAY BE CHANGED WHEN THE paosnm IS 5§62 STARTED 593 AT ADDRESS OR 204 IF THE PROGRAM DOES NOT ggg RESPONSE WHEN IT ACCESSES THE DEFAULT RM/RH ADDRESS. 55»39 (DEFAULT ADDRESS = 176700, VECTOR = 254) ggg ADDRESS SELECTION EXAMPLES 28? EXAMPLE 1 602 282 RMCS1=176700 <CR> RMVEC=000254 <CR> % EXAMPLE 2 % 610 61§ 614 :NO CHANGE IN ADDRESS *NO CHANGE IN ADDRESS RMCS1=176700 177200<CR> ;CHANGE BASE ADDRESS TO 177200 607 211 RECEIVE A RMVEC=000256 260<CR> 4.2 :CHANGE VECTOR ADDRESS TO 260 KEYBOARD COMMANDS xevsomo commns. THE OPERATOR MAY ASSIGN DRIVES THROUGH_THE ('T® COMMAND), WRITE SEQUENTIAL DATA (*W' COMMAND), FOR TEST 615 616 PERFORM A SEQUENTIAL READ ('R* comwo) PERFORM WRITE DATA AND FOLLOWED BY TEST ('WT' COMMAND) EQUEST A ('D' PERFORMANCE A DRIVE DRIVECOMMAND). 619 THE °T', g}; SUMMARY ('S® COMMAND), oa mssxén ‘W', "R' AND ‘WT' commos ARE EXCLUSIVE TO ONE ANOTHER 620 621 622 623 MUST BE ENTERED IN ON THE SAME DRIVE UNDER TEST. THE ‘D' COMMAND ORDER TO 1ssue A DIFFERENT COMMAND TO THE SAME DRIVE UNDER TEST. EXCEPT FORTHE °'S' COMMAND, WHICH CAN BE ENTERED AT ANY TIME DURING THE TEST. 626 IF THE PROGRAM WAS STARTED AT ADDRESS 204 OR IF NO DRIVES ARE - § 85 ASSIGNED FOR TESTING, THE FOLLOWING MESSAGE WILL BE TYPE BEFORE c CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 3-11 6§8 g 3 g g 6 'NO DRIVES ASSIGNED' WHEN THE PROGRAM ENTERS THE COMMAND MODE, THE FOLLOWING PROMPT : WILL BE TYPED: 636 "HH:MM:SS ENTER COMMANDS:"' 637 g%g THE PROGRAM WILL THEN ACCEPT ANY OF THE VALID COMMANDS. AT THE COMPLETION OF A COMMAND, THE PROGRAM WILL EXIT COMMAND MODE AND TRY TO ASSIGN THE DRIVE(S) THAT WERE REQUESTED. IF THE DRIVE(S) CANNOT BE ASSIGNED, ONE OF THE FOLLOWING ERROR MESSAGES WILL BE 640 641 642 643 fils. REPORTED AND THE PROCESS CONTINUES FOR EACH DRIVE. .................. 22; ggg 660 &} ggz 665 666 COMMAND (S) RESPONSE 646 657 IF A 'CONTROL C' IS TYPED WHILE TESTING IS IN PROGRESS THE FOLLOWING MESSAGE WILL BE OMITTED AND THE PROGRAM WILL ENTER COMMAND MODE. 635 649 650 651 65 65 654 222 SEQ 0015 ENTERING THE CCAMAND MODE. MOWEVER, : 628 2 . ?DRIVE N LOAD DEVICE 2DRIVE N OFFLINE ?DRIVE N NOT ASSIGNED 2DRIVE N ALREADY ASSIGNED ?DRIVE N NOT PRESENT ?DRIVE N UNSAFE ?DRIVE N NOT AN RM80 W, R, WT T, W, R, WT D, § T, W, R, WT . W, R, WT T, W, R, WT T, W, R. WT NEXT, THE PROGRAM WILL PROCESS ALL THE ASSIGNED DRIVES AS FOLLOWS: WHEN THE PROGRAM IS ASSIGNING THE DRIVES, THE OPERATOR WILL BE ASKED TO CHANGE THE DRIVE PARAMETERS WITH THE FOLLOWING PROMPT: *CHANGE DRIVE PARAMETERS (L) N ?°' IF THE ENTRY IS A 'N' FOLLOWED BY A CARRIAGE RETURN OR JUST A_CARRIAGE RETURN (DEFAULT), THE PROGRAM WILL NOT ALLOW ANY DRIVE PARAMETERS TO 667 BE CHANGED AND WiLL PROCEED TO TEST THE DRIVES AS COMMANDED. 671 2;% THE PROGRAM WILL FIRST REFERENCED FOR CHANGES. g;g ‘saxnnnannsx DRIVE # N° 668 298 IF THE ENTRY IS A 'Y' FOLLOWED BY CARRIAGE RETURN, THE OPERATOR WILL BE ALLOWED TO CHANGE THE DRIVE PARAMETERS AS FOLLOWS. 676 677 2;3 THE PROGRAM WILL SERIAL NUMBER IS FORMAT : gg? 'MBA S/N: X 682 683 684 TELL THE OPERATOR WHICH DRIVE IS BEING THEN INFORM THE OPERATOR WHAT THE HARD WIRED MBA AND THE HDA SERIAL NUMBER IS, IN THE FOLLOWING HDA S/N: Y' WHERE °*X' IS THE HARD WIRED DECIMAL SERIAL NUMBER CONTAINED IN THE RMSN REGISTER OF THE OBA; IF THE MBA SERIAL NUMBER IS NOT JUMPERED IN THE RMSN REGISTER, ‘X' WILL APPEAR AS '2722°, D CZRNAAO RM80 PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 3-12 685 686 687 ggg 690 233 232 695 2 WHERE "Y' IS THE DECIMAL SEQ 0016 SERIAL NUMBER READ FROM THE DEC144 BAD SECTOR FILE ON THE HDA. IF THE DEC144 FILE WAS UNABLE TO BE READ SUCCESSFULLY, 'Y' WILL APPEAR AS 'NONE'. THE PROGRAM WILL THEN ASK FOR ADDRESS LIMIT CHANGES WITH THE FOLLOWING TYPEOUT: *ENTER ADDRESS LIMITS:' THE PROGRAM WILL REQUEST VALUES FOR THE FOLLOWING ADDRESS LIMIT 289 PARAMETERS. 698 THE FOLLOWING TABLE VALUES ARE USED WHEN THE PROGRAM IS EXERCISING %’8 701 THE USER PORTION OF THE DISK. DEFAULT VALUE VALUE RANGE 0 558. g 13. 0 30. 0 - 558. 0 - 538. 0-13. 0-13. 0 - 30. 0 - 30. FWCTIW ;8% NAME 704 705 706 707 708 ;(1)8 MINCYL MAXCYL MINTRK MAXTRK MINSEC MAXSEC (4} 712 WHEN OPERATING WITH CYLINDER 558. AS THE MAXIMUM CYLINDER, THE TRACK CYLINDER ADDRESS MAY BE SELECTABLE FROM 0 - 13.. IF YOU REMEMBER, 714 TRIES TO ACCESS CYLINDER 558. TRACK 13., THE PROGRAM AUTOMATICALLY SELECTS THE NEXT USABLE TRACK ADDRESS, ~THIS ALLOWS ALL THE REST OF 713 715 ;}g 718 719 ;%? 722 THE MINIMUM CVLINDER ADDRESS THE MAXIMUM CYLINDER ADDRESS THE MINIMUM TRACK ADDRESS THE MAXIMUM TRACK ADDRESS THE MINIMUM SECTOR ADDRESS THE MAXIMUM SECTOR ADDRESS 558, TRACK 13, IS THE DEC144 TRACK. DURING THE TEST, IF THE PROGRAM THE CYLINDERS, TRACK O AND 13. TO BE ADDRESSED BY THE OPERATOR. THE FOLLOWING TABLE VALUES ARE USED WHEN THE PROGRAM IS EXERCISING ON THE 'FE® CYLINDERS ONLY. DEFAULT VALUE VALUE RANGE 559. 560. g 13. 0 30. 559. - 560. 559. = 560. 0-~- ‘lg. 8 - 13. - 20. 0 - 30. FUNCTION ;%2 NAME 725 726 727 728 729 ;g? MINCYL MAXCYL MINTRK MAXTRK MINSEC MAXSEC 732 WHEN OPERATING 734 735 THE SKIP SECTOR FILE AND CYLINDER 5 ALTERNATE DEC144 TRACK. Dhfi NG THE TEST 733 736 737 gg 740 741 THE MINIMUM CYLINDER ADDRESS THE MAXIMUM CYLINDER ADDRESS THE MINIMUM TRACK ADDRESS THE MAXIMUM TRACK ADDRESS THE MINIMUM SECTOR ADDRESS THE MAXIMUM SECTOR ADDRESS ON 5 FE CYI.INDERS WLY THE TRACK ADDRESS MAY BE SELECTABLE FROM0 - 13. . IF YOU R ?s CVUNDER 559. TRACK 0_IS ACCESS CYLINDER 559. TRACK RACK1 IS USED FOR THE lF THE PROGRAM TRIES T0 AUTOMAT CALI.Y SE ECTS THE NEXT USABLE TRACK ADDRESS. I HfS AI.LOUS CYLINDER 560. TRACK 1 TO BE ADDRESSED BY THE OPERATOR. THE PROGRAM WILL THEN ASK FOR BAD SECTOR ADDRESSES WITH THE FOLLOWING CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-13 E 2 SEQ 0017 TYPEOUT: ;f ' ;2§ "ENTER BAD SECTR ADRS:' THE FORMATS USED TO ENTER BAD SECTOR ADDRESS LOCATIONS ARE AS 746 FOLLOWS: ;23 CYL,TRK,SEC= C,T,S<CR> EXAMPLE 1: ;gg THE PROGRAM WILL INHIBIT DATA ERROR MESSAGES FOR ERRORS OCCURRING AT THE SPECIFIED ADDRESS. A. 751 ;gg B. LEADING ZEROS ARE NOT REQUIRED. % EXAMPLE 2: ;gg CYL,TRK,SEC= C,T<CR> 758 A. WHEN THIS FORMAT IS USED, THE ENTIRE TRACK WILL BE ;%5 B. DATA ERRORS WILL BE HANDLED AS IN 'EXAMPLE 1°. CONSIDERED BAD. ;23 EXAMPLE 3: ;22 CYL,TRK,SEC= C<CR> 765 ;29 A. WHEN THIS FORMAT IS USED, THE ENTIRE CYLINDER WILL BE CONSIDERED BAD ;%g B. DATA ERRORS WILL BE HANDLED AS IN *EXAMPLE 1°. IF CONTROL C (*C) IS TYPED AS AN ENTR”, ALL CURRENT BAD SECTOR ENTRIES 770 ;;5 WILL BE LOST AND THE FOLLOWING MESSAGE WILL BE TYPED. ;;2 *s ALL CURRENT ENTRIES LOST #* : 775 ;;9 IF *L* IS TYPED FOR AN INPUT CHARACTER, THE PROGRAM WILL TYPE A LIST OF DEC144 BAD SECTORS, AND THE MANUALLY ENTERED BAD SECTORS, WHICH ARE 778 779 ;g? STORED IN THE DRIVE PARAMETER TABLE(DPB) FOR THAT PARTICULAR DRIVE. 782 IF THERE ARE NO BAD SECTORS IN THE DPB TABLE, THE FOLLOWING MESSAGE ;gz WILL BE TYPED: 785 ;gg "DEC144 AND MANUAL BAD SECTOR LIST * NO ENTRIES *' 788 HOWEVER, 793 79 ;32 797 798 IF THERE ARE ENTRIES IN DPB TABLE, THE LIST WILL BE TYPED IN THE FOLLOWING FORMAT: ;33 791 792 AFTER TYPING THE PREVIOUS MESSAGE, THE PROGRAM WILL WAIT FOR THE OPERATOR TO ENTER ANOTHER BAD SECTOR AS IN THE PREVIOUS EXAMPLES. ' 'osc144 AND MANUAL BAD SECTOR LIST g éi g 00,1,29° THE ABOVE LIST OF BAD SECTORS, ENTRY 1 INDICATES THAT CYLINDER 8., TRACK 8., SECTOR 3 IS THE BAD SECTOR. ENTRY 2 INDICATES THAT ON CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 17:16:58 PAGE 3-14 CYLINDER 16., 7 F 2 TRACK 13., ALL THE SEQ 0018 SECTORS _(ENTIRE TRACK IS _ARE BAD 801 SECTORS BAD). ENTRY $ INDICATES THAT ON CYLINDER 256., ALL_TRACKS ANDCYLINDER 804 AFTER TYPING EITHER OF THE TWO PREVIOUS MESSAGES, 389 AS IN EXAMPLES 1, 2 AND 800 ARS BAD (ENTIRE CYLINDSR IS BAD). 500., TRACK 1, SECTOR 29. IS THE gg% 805 ENTRY & INDICATES BAD SECTOR. THAT THE PROGRAM WILL RETURN TO WAIT FOR_MORE §NTRIES TO BE MADE INTO THE BAD SECTOR TABLE, 3. TO TERMINATE THE BAD SECTOR ADDRESS ENTRY, :YPE A ‘'CARRIAGE RETURN® IN RESPONSE TO THE ENTRY REQUEST OR TERMINATE THE ENTRY WITH A °‘PERIOD’ 808 809 g}? FOLLOWED BY A 'CARRIAGE RETURN'. 4.2.1 'T" COMMAND 814 g}g USED TO ASSIGN A DRIVE(S) FOR A TEST. THIS COMMAND IS REQUIRED TO PERFORM THE TEST OF THE DRIVE(S). g}; FORMAT: TN<CR> 819 N = DRIVE NUMBER. REERRNEsRER g}% EXAMPLE: TERMINIATED BY A CARRIAGE RETURN <CR>. g? 4.2.2 TO<CR> = ASSIGN DRIVE O FOR TEST TA<CR> = ASSIGN ALL AVAILABLE DRIVES FOR TEST 'D' COMMAND FORMAT: DN<CR> N = DRIVE NUMBER. MAY BE 0 TO 7 OR "A'. ENTRY MUST BE TERMINIATED BY A CARRIAGE RETURN <CR>. EXAMPLE: ggg 4.2.3 839 840 g‘l.} DO<CR> = DEASSIGN DRIVE 0 DA<CR> = DEASSIGN ALL DRIVES BEING TESTED. 'S" COMMAND USED TO REQUEST A PERFORMANCE SUMMARY TYPEOUT FOR THE REFERENCED DRIVE(S). AFTER THE 'S’ COMMAND HAS BEEN PERFORMED, THE PROGRAM WILL AUTOMATICALLY RESUME TESTING THE DRIVE(S) WHICH WERE UNDER TEST. FORMAT: ' SN<CR> 845 N = DRIVE NUMBER. 848 EXAMPLE: g 854 855 MAY BE 0 TO 7 OR "A'. TERMINIATED BY A CARRIAGE RETURN <CR>. 849 g?? ggg ENTRY MUST BE USED TO DEASSIGN A DRIVE(S) BEING EXERCISED. 8 ggg az MAY BE 0 TO 7 OR "A'. 4.2.4 ENTRY MUST BE S0<CR> = TYPEOUT PERFORMANCE SUMMARY FOR DRIVE 0 SA<CR> = TYPEQOUT PERFORMANCE SUMMARY FOR ALL DRIVES BEING TESTED. 'W' COMMAND USED TO PERFORM A SEQUENTIAL WRITE OF THE DISK, WITH DATA ACCEPTABLE TO THE PERFORMANCE EXERCISER PROGRAM. CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-15 856 SEQ 0019 ggg FORMAT: WN<CR> 859 g? N = DRIVE NUMBER. MAY BE 0 TO 7 OR 'A'. ENTRY MUST BE TERMINATED BY A CARRIAGE RETURN <CR>. 86 86 EXAMPLE: 864 % 4.2.5 WO<CR> = WRITE A DATA PATTERN ON DRIVE 0. WA<SCR> = WR ITE A DATA PATTERN ON ALL AVAILABLE DRIVES. 'R" COMMAND %g; USED TO PERFORM A SEQUENTIAL READ OF THE DISK. 398 FORMAT: RN<CR> = DRIVE NUMBER. MAY BE 0 TO 7 OR 'A'. ENTRY MUST BE TERMINATED BY A CARRIAGE RETURN <CR>. 871 g;% 874 875 876 877 878 879 880 EXAMPLE: 4.2.6 FORMAT: WTN<CR> = DRIVE NUMBER 0 TO 7 OR "'A’". ENTRY MUST BE TERMINATED BY A CARRIAGE RETURN <CR>. 883 884 gg} 893 894 895 896 897 898 899 900 901 902 903 504 905 906 907 908 909 910 911 912 'WT' COMMAND USED TO PERFORM A SEQUENTIAL WRITE DATA, FOLLOWED BY A 'T' COMMAND. gg% 885 886 887 888 889 890 RO<CR> = READ THE DATA ON DRIVE 0. RA<CR> = READ THE DATA ON ALL AVAILABLE DRIVES. EXAMPLE: WTO<CR> = WRITE A DATA PATTERN AND TEST DRIVE 0 WTA<CR> = WRITE A DATA PATTERN AND TEST ALL DRIVES 5. PERFORMANCE SUMMARY TYPEOUT 5.1 THE PROGRAM WILL DISPLAY A PERFORMANCE SUMMARY FOR THE DRIVES BEING EXERCISED. THI SS UMMARY WILL BE DISPLAYED AUT&flRMIC?LHIE.Y IF THE PARAMETER *INTRVL® IS NOT ZERO AND SW<02>=0 DRIVE HAS REACHED THE DEF INED NUMBER OF PASSES AND SW<08>=0, C OR IF THE OPERATOR REQUESTS TO DO SO BY USE OF THE *S*' THE SUMMARY TYPEOUT CONTAINS THE FOLLOWING FIELDS: 'TIME® 'DRIVE" 'PASS 'MBA S/N' "HDA S/N" 'WT OFLOW' 'WRDS WRITN' *RD OFLOW'’ 'WRDS READ® ' SEEKS' *SOFT* ELAPSED TIME OF PROGRM DRIVE NUMBER R SERIAL NUMBER NUMBER OF TIMES ‘'WRDS WRITN' HAS OVERFLOWED TOTAL NUMBER OF WORDS WRITTEN BY THE DRIVE NUMBER OF TIMES ‘WRDS READ' HAS OVER LOWED TOTAL NUMBER OF WORDS READ BY THE DRIVE NUMBER OF SEEK OPERATIONS THE DRIVE PERFORMED NUMBER OF SOFT DATA ERRORS CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-16 H 2 SEQ 0020 NUMBER OF HARD DATA ERRORS NUMBER OF ‘'SKI' ERRORS NUMBER OF PROGRAM DETECTED POSITIONING ERRORS TOTAL ERRORS OF OTHER TYPES 913 914 915 8}9 '"HARD* 'SK1* 'MISP* 'OTHER® 918 ALL DATA TRANSFER COUNTS, SEEK COUNTS AND ERROR COUNTS ARE ACCUMULATIVE 921 TO CALCULATE THE TOTAL NUMBER WORDS READ OR unm;u ggz THAT NUMBER TO THE WORDS READ OR WRITTEN (WRDS READ OR WRDS WRITN). AND WILL NOT BE CLFARED AFTER EACH PASS. 353 922 NOTE: ERRORS EM1, EM2, & EM5 ARE NOT INCLUDED IN THE °CTHER' ERROR 925 g%g TOTAL. g%g 5.2 SOFT/HARD ERROR DEFINITIONS 3%(1) 5.2.1 HARD ERRORS A. 932 933 934 935 ggg glo‘% THE RETRY SEQUENCE IS 16. RE-READS. 5.2.2 943 SOFT ERRORS A. 944 945 946 B. C. 947 948 3’508 D. 951 952 ggz 955 ggg A 'DTE' (DRIVE TIMING ERROR) OR A 'DCK' (DATA CHECK ERROR) WHICH OCCURS DURING A READ DATA OR A READ HEADER & DATA OPERATION AND IS NOT CORRECTABLE OR DOES NOT BECOME CORRECTABLE AFTER THE PROGRAM HAS PERFORMED THE COMPLETE RETRY SEQUENCE ON THE BAD SECTOR. ggg 940 TAKE_THE_OVERFLOW COUNT (RD OFLOW OR WT OFLOW), MULTIPLY IT BY 2,147,483,647., THEN ADD ECC CORRECTABLE °'DCK' ERRORS. °'DCK' & 'ECH' ERRORS WHICH BECOME ECC CORRECTABLE DURING ' RETRY OR WHICH ARE READ CORRECTLY DURING RETRY. HEADER READ ERRORS = READ DATA, READ HEADER & DATA, OR WRITE DATA COMMANDS °'DTE' ERRORS WHICH ARE CORRECTED OR WHICH BECOME ECC CORRECTABLE 'DCK' ERROR DURING THE RETRY SEQUENCE. _ 6. DATA CHECKING & ERROR RECOVERY 6.1 DATA COMPARISON 958 328 DATA COMPARISON OCCURS AFTER EACH 'RDDAT' (READ DATA) OR °RDHD® (READ HEADER AND DATA) OPERATION UNDER THE FOLLOWING CONDITIONS: 961 A. gg% B. THE OPERATION TERMINATED WITH °*DCK® SET AND THE ERROR IS ECC 964 CORRECTABLE OR THE SECTOR IN ERROR IS READ CORRECTLY AFTER ggg 82; 969 THE COMMAND TERMINATED WITH NO ERRORS AND SW<01>=0 RETRY ATTEMPTS. 6.2 VERIFICATION OF DATA WRITTEN DATA VERIFICATION IS DONE EITHER THROUGH READING THE DATA BACK ¢ CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 3-17 AND MATCHING THE DATA WITH ONE OF THE 15. PATTERNS OR THROUGH ISSUING A WRITE CHECK COMMAND AFTER DOING A WRITE DATA COMMAND. 970 3;1 g;‘ SEQ 0021 6.3 BAD ADDRESS FLAGGING 975 976 WHEN A DRIVE IS ASSIGNED TO BE TESTED, THE PROGRAM READS THE BAD SECTOR FILE (DEC144) FROM THE DISK AND THEN ALLOWS ADDITIONAL BAD 979 A MAXIMUM OF 252. BAD SECTORS ARE ALLOWED FOR EACH DRIVE, BOTH 982 THE MANUALLY ENTERED BAD SECTORS ARE NOT RECORDED TO THE BAD SECTOR SECTORS TO BE ENTERED MANUALLY. g;g READING FROM THE DEC144 FILE AND ENTERING FROM KEYBOARD. % FILE OF THE DISK CURRENT UNDER TESTING. ggz IF ONE OF THE FOLLOWING ERRORS OCCURS AT A LOCATION IDENTIFIED BY 83§8383828283288 985 THE BAD SECTOR TABLE, THE PROGRAM WILL INHIBIT THE ERROR REPORT THAT ERROR. DATA CHECK ERRORS ¢°%7:") : . @<E°) WRITE CHECK ERROP OPERATION INCOM". "% €RRORS (°*OPI') DRIVE TIMING E%-:a3 ('DTE') HEADER READ EFAURS ('FER W/ HCRC', 'HCE W/ HCRC' OR 'HCRC') 7. ERROR MESSAGES } ERRORS ARE REPORTED ON THE TTY CONSOLE. THE PROGRAM CONTAINS NO CODED ERROR HALTS. IF THE PROGRAM HALTS (ASSUMING, OF CMgE. 1002 OCCURRED OR A CENTRAL 1003 1004 1005 1006 1007 1008 }8(1)8 ‘%8]'1 101§ 1014 1016 1017 1018 1019 1081 }8%% 1024 }852 FOR THAT SW<15> IS NOT SET%fi AN UNRECOVERABLE PROGRAM CONDITION HA OCESSOR FAILURE HAS OCCURRED. ERROR MESSAGES ARE MADE UP OF SEVERAL LINES. EACH TYPE OF ERROR HAS SEVERAL OPTIONAL LINES WHICH MAY APPEAR WITH IT. ALL OF THE POSSIBLE ERROR MESSAGE LINES WHICH MAY APPEAR ARE GIVEN IN THE SECTION DESCRIBING THE PARTICULAR ERROR HEADER. 7.1 ERROR DESCRIPTION LINES (THE MESSAGE TAGS ARE GIVEN FOR REFERENCE.) MESSAGE TAG EM EM2 TEXT RH CONTROLLER INTERRUPT OCCURRED (RMAS=0) THE RH_CONTROLLER INTERRUPTED AND THE ATTENTION SUMMARY REGISTER (RMAS) WAS CLEARED. UNEXPECTED ATTENTION OCCURRED THE INDICATED DRIVE INTERRUPTED BUT THE DRIVE WAS NOT PERFORMING AN OPERATION. C CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-18 SEQ 0022 107 EM3 NOT USED 1029 EMé NOT USED 1081 EMS ADDRESS PLUG CHANGE BIT SET 1035 EM6 NOT USED 1037 EMI0 NOT USED 1039 EM11 NOT USED 1041 EM12 NOT USED 1028 ‘8%% 1038 1038 1040 }gfi% EMI13 1045 AFTER THE OPERATION WAS INITIATED. EM14 1050 1051 1052 1053 1055 EMIS EM20 HEADER CRC ERROR A HEADER CRC ERROR WAS DETECTED AT THE INDICATED DISK ADDRESS. THE CONTENTS OF THE HEADER ARE DISPLAYED. THE OPERATION WILL BE RETRIED 3 TIMES. EM21 1069 1070 1071 DATA CHECK (*DCK') ERROR A DATA CHECK ERROR WAS DETECTED AT THE_ INDICATED SECTOR. THE FULL RETRY SEQUENCE WILL BE INITIATED FOR THE SECTOR IN ERROR IF THE ECC HARD ERROR ('ZCH) BIT 1072 1074 NO RESPONSE TO PORT REQUEST THE_PROGRAM IS TESTING A DUAL PORT DRIVE WHICH HAS NOT SWITCHED TO THE REQUESTING PORT WITHIN 15. SECONDS AFTER PORT REQUEST T0 THE DRIVE FROM THE REPORTING PORT. 1063 1064 1065 1067 DRIVE WENT OFFLINE THE DRIVE WENT OFFLINE DURING THE INDICATED OPERATION. (THE 'MOL® BIT BECAME ZERO.) THE PROGRAM WILL AUTOMATICALLY DEASSIGN THE DRIVE. THE OPERATOR MUST REASSIGN THE DRIVE WITH THE 'T' COMMAND TO RE-INITIATE TESTING. 1057 1058 1059 1061 OPERATION NOT COMPLETED WITHIN TIME LIMIT THE DRIVE DID NOT COMPLETE THE OPERATION WITHIN 10. SECONDS 1046 1048 THE 'OPE' BIT WAS SET WHEN THE INDICATED DRIVE INTERRUPTED. IS SET. EM22 WRITE CHECK ERROR = DATA CHECK ('DCK®) SET 1076 A WRITE CHECK ERROR OCCURRED AND THE DATA CHECK (*DCK') BIT 1078 UP TO 3 TIMES; IF THE 'ECH* BIT IS SET, THE OPERATION WILL 1077 WAS SET. 1079 1081 1083 IF 'ECH' IS NOT SET, THE OPERATION WILL BE RETRIED BE RETRIED UP'TO 16. TIMES. EM23 WRITE CHECK ERROR = DATA CHECK ('DCK') NOT SET A WRITE CHECK ERROR OCCURRED AND °*DCK' WAS NOT SET. THE Ci CZRNAAO RMBO PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-19 WORDS WHICH CAUSED THE ERROR ARE DISPLAYED IN THE ERROR MESSAGE. THE OPERATION WILL BE RETRIED 3 TIMES. SRIKGRER28 32323280832 ETRER SEBYFRRURZE EM24 HEADER READ ERROR = °'FMT' BIT DROPPED A WRITE DATA, WRITE CHECK DATA, OR A READ DATA WAS BEING PERFORMED AND A *FMT® ERROR OCCURRED. THE PROGRAM RE-READ THE HEADER OF THE ERROR SECTOR AND THE 'HCRC' BIT WAS SET. THE CONTENTS OF THE HEADER ARE DISPLAYED. THE OPERATION WILL BE RETRIED 3 TIMES. EM25 HEADER READ ERROR = HEADER COMPARE ('HCE') ERROR SIMILAR TO EM24, EXCEPT THAT THE 'HCE' ERROR BIT WAS SET INITIALLY. THE OPERATION WILL BE RETRIED 3 TIMES. EM26 FORMAT ERROR ('FER') FORMAT ERROR OCCURRED. WHEN THE HEADER WAS RE-READ, THE THE CONTENTS OF THE HEADER ARE 'HCRC® BIT WAS NOT SET. DISPLAYED. EM27 THE OPERATION WILL BE RETRIED 3 TIMES. HEADER COMPARE ('HCE') ERROR SIMILAR TO EM26 EXCEPT THAT THE 'HCE®' BIT WAS SET INITIALLY. THE OPERATION WILL BE RETRIED 3 TIMES. EM30 MISCELLANEOUS DRIVE ERROR THIS MESSAGE IS GIVEN FOR ThE FOLLOWING ERROR BITS: 'AOE*, 'RMR', 'ILF', OR 'ILR’ EM31 OPERATION INCOMPLETE ('OPI') ERROR ggC?SSRATlON INCOMPLETE ERROR OCCURRED AT THE INDICATED ~ dddd-‘ddddddddddddddddflddddddddddfl D e D i cd =D D cnd e =D o D o wd =D and =D b ) = D cmd b e cmd =D e D d e =D cd =D b d D d D D ) =D D — d e D ) D e ) D wnd D b b wd =D cd b N AINININI NI NINININD b b b b d d b e b wd 0 CONO VS WN=O VOO VS WN=O —d i — e SEQ 0023 EM32 DRIVE TIMING (°DTE') ERROR DRIVE TIMING ERROR OCCURRED ON THE INDICATED SECTOR. OPERATION WILL BE RETRIED 3 TIMES. EM33 THE PARITY ('PAR') ERROR AFTER OPERATION STARTED THE *PAR' BIT WAS SET WHEN_THE OPERATION WAS COMPLETED. OPERATION WILL BE RETRIED 3 TIMES. EM34 WRITE CLOCK FAILURE ('WCF') A WRITE CLOCK FAILURE OCCURRED DURING THE OPERATION. OPERATION WILL BE RETRIED 3 TIMES. EM35 THE INVALID ADDRESS ('IAE') ERROR AN INVALID ADDRESS ERROR OCCURRED DURING THE OPERATION. EM36 WRITE LOCK ('WLE') ERROR THE (W) SEQ 0024 ~N O — e J N b ) D b ) e D cnd D e S e e T W S i G e ) b b =D ) b e e SEREC S BRIRRRANZSI N S NN NS N OO\ S R AR OAR 2 S SRR N R AR S S SR~ N i — b _.-.-l_.-b—l_._.-.d-i-l-.-o_.—l-._.-h_l—l-l.a-l-._i-.-._._._.-....—l-l.a-._. D D D D o wnd D D D nd D d — o D cd =D e cd b D cd =D b ) b d - cd el D cd D e e NV WVVIVIVIVIWES SNBSS s CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 3-20 cogzégi OPERATION WAS ATTEMPTED BUT THE DRIVE WAS WRITE EM40 RH CONTROLLER OR UNIBUS TRANSFER ERROR *TRE' IS SET IN THE RH CONTROL REGISTER AND NO DRIVE ERROR HAS OCCURRED. THE OPERATION WILL BE RETRIED 3 TIMES ;E.THE ERROR WAS CAUSED BY 'DLT', 'UPE', 'MX OR "MD EM41 BUS ADDRESS OR WORD COUNT INCORRECT NO DRIVE ERROR OCCURRED BUT EITHER THE BUS ADDRESS INDICATES THAT AN INCORRECT NUMBER OF WORDS WERE TRANSFERED OR THE WORD COUNT REGISTER IS NOT ZERO. EMé42 DATA COMPARE ERRORS = NO DRIVE ERROR DETECTED NO SUBSYSTEM ERROR WAS SIGNALED; HOWEVER, THE DATA DOES NOT . COMPARE EM43 CAN'T MATCH DATA READ WITH A PATTERN = UNDEFINED DATA PATTERN THE DATA IN THE BUFFER DOES NOT MATCH ANY OF THE STANDARD PATTERNS. EM4S ERROR BIT(S) SET, BUT NO ERROR SIGNALED BY THE RH CONTROLLER THE OPERATION COMPLETED NORMALLY; HOWEVER, THE PROGRAM FOUND EITHER ERROR BITS IN THE RM SET OR ERROR BITS IN THE RH CONTROLLER SET. EM4S ECC LOGIC FAILURE = POSITION REGISTER VALUE NOT VALID DURING °DCK®' ERROR PROCESSING, THE CONTENTS OF THE ECC POSITION REGISTER (RMEC1) WAS NOT VALID. THE POSITION REGISTER WAS EITHER O OR GREATER THAN 010040. EM46 BUS ADDRESS OR WORD COUNT NOT CONSISTENT THE PROGRAM WAS PROCESSING AN ERROR AND FOUND THAT THE NUMBER OF WORDS TRANSFERED AS INDICATED BY THE BUS ADDRESS REGISTER DOES NOT AGREE WITH THE TRANSFER COUNT FROM THE WORD COUNT REGISTER. EM47 ECC LOGIC FAILURE = PATTERN REGISTER IS ZERO DURING 'DCK' ERROR PROCESSING, THE CONTENTS OF ECC PATTERN REGISTER (RMEC2) WAS NOT VALID. THE PATTERN REGISTCR CONTAINED ALL ZEROS. EM50 SEEK INCOMPLETE ERROR THE DRIVE SIGNALED EITHER °SKI' ERROR. EM51 NOT USED €2 CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-21 1198 EMS52 1}38 ECH ERROR = UNCORRECTABLE ECC ERROR DURING 'DCK®' ERROR PROCESSING, THE 'ECH® BIT WAS SET IN RMER1, WHICH INDICATES THAT DATA CHECK CANNOT BE ECC 1201 1202 CORRECTED. }%82 EM60 }%82 DEVICE UNSAFE THE INDICATED DRIVE UNSAFE ERROR OCCURRED; THE ERROR WAS CLEARED BY A 'DRIVE CLEAR®' INSTRUCTION. 1207 }ggg 1210 7.2 }%}5 %%}z 1215 SR 1217 DETAIL ERROR LINES THE LINE NUMBERS GIVEN BELOW ARE FOR REFERENCE ONLY. T R VA YR LINE 1 e }%}g HH:MM:SS 1220 'HH:MM:SS' IS THE TIME SINCE THE PROGRAM WAS STARTED. }%%5 1223 (HOURS.‘fiINUTES. SECONDS) . LINE2 . ST %%%9 'PRSNT COMMAND= XXXX- PREV COMMAND= YYYY' }%%g MNEMONICS USED FOR THE COMMANDS ARE DEFINED BELOW: 1244 1245 1246 }gzz - SEEK (OCTAL S) SEEK = RECALIBRATE (OCTAL 7) RECAL DRVCLR = DRIVE CLEAR (OCTAL 11) RELSE = RELEASE (OCTAL 13) OFFSET = OFFSET (OCTAL 15) RTC = RETURN TO CENTERLINE (OCTAL 17) READIN = READIN PRESET (OCTAL 21) PACK = PACK ACKNOWLEDGE (OCTAL 23) SEARCH = SEARCH (OCTAL 31) *GETREG = GET REGISTERS (OCTAL 41) «SETFMT = SET FORMAT (ECI OR HCI) (OCTAL 43) «SELDRV = SELECT DRIVE (OCTAL 45) WwCKD - WRITE CHECK DATA (OCTAL 51) WCKHD = WRITE CHECK HEADER & DATA (OCTAL 53) WRTDAT = WRITE DATA (OCTAL 61) WRTHD = WRITE CHECK HEADER & DATA (OCTAL 63) RDDAT = READ DATA (OCTAL 71) = READ HEADER & DATA (OCTAL 73) RDHD }248 * SPECIAL RM DRIVER COMMAND (NOT A CONTROLLER COMMAND) } (DISPLAY OF THE RH/RM REGISTERS IN TWO GROUPS RM DS, RMER1, RMER2, RMEC1 AND RMEC2 RMCS1 S1, RMCS2, 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 NN 1 1 g\n\nvcm wn 1240 1241 1242 1243 1 FORM THE FIRST GROUP: ALL THE OTHER REGISTERS ARE IN THE SECOND GROUP. IF SW<05> IS SET . ONLY THE REGISTERS IN THE FIRST GROUP WILL BE SEQ 0025 2z N CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 3-22 2 SEQ 0026 1255 DISPLAYED.) ;%23 ERROR OCCURRED DURING WILL BE TYPED IFTHETHEOPERATION. THE ABOVE LINETRANSFER PART OF }521 *s ERROR AT BAD TRACK/SECTOR' 152 1553 126§ THE NON=-DATA AT AN ADDRESS PRINTED IF A DATA ERRORASOCCURES THE ABOVE LINE WILLTHEBE OPERATOR BEING BAD. PARAMETER HAS IDENTIFIED 1264 ON -THE DISK WHICH 1267 1268 %ggg A WORD CALLED °*STATUS' IS DISPLAYED WITH THE RM REGISTERS. THE .OF THIS WORD IDENTIFY HOW THE ERROR WAS PROCESSED BY THE CONTENTS RM DRIVE““MANDLER ROUTINE. (SEE SECTION 9.7) 1271 LINE 3. }%;g ERROR AT CXXX TYY SZZ 1276 1277 }%;g THE ACTUAL ADDRESS OF THE ERROR SECTOR AND THE PREVIOUS DISK ADDRESS ARE GIVEN IN THIS LINE. CYLINDER, TRACK, & SECTOR ADDRESSES ARE IN DECIMAL. 1280 LINE & %%gz PRSNT ADDR= CXXX TYY SZZ }%22 1285 1286 *NOTPRT® MUST BE 0 FOR THE ERROR TO BE REPORTED. o PREV ADDR= CUUU TVV SWW PREV ADDR= CUUU TVV SWW THIS LINE IDENTIFIES THE ADDRESS WHEN THE ERROR WAS DETECTED; THE PREVIOUS ADDRESS IS ALSO GIVEN. CYLINDER, TRACK, & SECTOR }ggg ADDRESSES ARE GIVEN IN DECIMAL. 1289 LINE § 1291 }ggg W - = SRR } START CYL= XXX END CYL= YYY THIS LINE IDENTIFIES THE STARTING CYLINDER OR A SEEK (IMPLIED) AND THE DESTINATION CYLINDER. bt DECIMAL. START CYL= XXX END CYL= YYY CYLINDER ADDRESSES ARE IN ACTUAL CYL= 222 THIS LINE IDENTIFIES THE STARTING CYLINDER OF AN IMPLIED SEEK, . THE DESTINATION CYLINDER, AND THE CYLINDER THE DISK ACTUALLY STOPPED AT.~ CYLINDER ADDRESSES ARE IN DECIMAL. LINE 7 RMBA= XXXX RMWC= YYYY SEQ 0027 CZRNAAO RM80 PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 3-23 VO NO VS NN = OVDRNO NS W THIS LINE GIVES THE CONTENTS OF THE RH CONTROLLER BUFFER ADDRESS REGISTER AND THE RH_CONTROLLER WORD COUNT REGISTER. THIS LINE IS NOT PRINTED IF SW<05> IS NOT SET. START CYL= XXX RMDA= XXXX RMCA= YYYY THIS LINE GIVES THE CONTENTS OF THE RM TRACK AND SECTOR ADDRESS REGISTER AND THE CONTENTS OF THE DESIRED CYLINDER gggRESS REGISTER. THIS LINE IS NOT PRINTED IF SW<05> IS NOT LINE 10 - 13 1336 @ o 0o s BUFFER ADDR= XXXX 1337 13 13 134 134 134 WRD CNT= YYYY ACTUAL NUMBR WRDS XFRD= 2221 I IS S R THIS LINE GIVES THE STARTING ADDRESS OF THE BUFFER USED FOR_THE CURRENT DATA TRANSFER OPERATION, ITS SIZE(WORD COUNT), AND THE ACTUAL NUMBER OF WORD TRANSFERED. 134 LS 134 134 134 13 13 THE STARTING ADDRESS OF THE BUFFER IS IN OCTAL, THE WORD COUNT AND WORDS TRANSFERED VALUE ARE IN DECIMAL. 134 134 START SECTOR= 2Z THIS LINE IDENTIFIES THE STARTING DISK ADDRESS OF THE PRESENT OPERATION. CYLINDER, TRACK, AND SECTOR VALUES ARE DECIMAL. 13 OOE START TRK= YY oo e s T R LINE 11 R e EXPCTD DATA= XXXX RECEVD DATA= YYYY WORD POS= 222 13 LINE 12 RS }g THIS LINE GIVES THE EXPECTED DATA, THE RECIEVED DATA FROM THE DI SK, AND THE LOCATION OF THE WORD IN THE SECTOR. THE WORD POSITION IS IN DECIMAL. PRSI b o e e e b e ST 13 13 13 13 13 HEADER CONTENTS OF ERROR SECTOR= XXXX XXXX XXXX XXXX THIS LINE GIVES THE CONTENTS OF THE HEADER OF THE SECTOR WHICH GAVE THE ERROR. LINE 13 RMEC1= XXXX RMEC2= YYYY THIS LINE WILL BE PRINTED AFTER A SUCESSFUL RETRY OF A SECTOR WHICH BECAME ECC CORRECTABLE DURING RETRY. 1369 1370 LINE 14 1378 ECC CORRECTABLE 1376 NECESSARY. 1 74 1 375 SEQ 0028 THE SECTOR IN ERROR 1S ECC CORRECTABLE; NO RETRY ATTEMPTS ARE 1377 1378 R =SS 1380 R s e e S, LINE 15 }%g} READ CORRECTLY }%gz THE SECTOR IN ERROR WAS READ WITHOUT ERROR. 1385 13 LINE 16 eesesss = 1387 }ggg ECC CORRECTABLE }%g? THE SECTOR IN ERROR BECAME ECC CORRECTABLE 1392 LINE 17 eeesess ® 1394 CORRECTED ON X RETRY }ggg THE OPERATION WAS PERFORMED ERROR FREE ON THE INDICATED RETRY 1397 ATTEMPT. 1398 1399 1400 RGN 57 P 1605 }28‘ R, R R O B LINE 18 S UNCORRECTABLE AFTER X RETRIES 1405 }289 THE OPERATION COULD NOT BE PERFORMED CORRECTLY AFTER THE INDICATED NUMBER OF RETRY ATTEMPTS. 1408 LINE 19 1410 }2}1 DIFFERENT ERROR DURING RETRY 1414 THE ERROR, A DIFFERENT OCCURRED. PROGRAM WAS RETRYING WHILE THELINE 1S PRINTED, THE RH/RM REGISTERS WILL ALSO BE 1417 LINE 20 eeseses 141; }2}2 %8 1419 IF THIS PRINTED (SEE LINE 2). }22? DATA COMPARISON ERRORS 1424 LINE 21 }2%; A PRINT:JT OF THE DATA COMPARISON ERRORS FOLLOW THIS LINE. [+ J] CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 3-24 1 1 1 1 1 1 1 1 1 1 1 N AN AT CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-25 THIS LINE GIVES THE TOTAL DATA COMPARISON ERROR COUNT. VALUE GIVEN IS IN DECIMAL. THE LINE 22 THE DATA COMPARED OK THIS LINE INDICATES THE RESULTS OF THE DATA COMPARISON FOLLOWING ECC CORRECTION. 1440 LINE 23 1442 SEQ 0029 TOTAL COMPARE ERRORS= XXXX 1 1438 1439 0 }222 ECC CORRECTION RESULTS 1445 1446 }22; THE PROGRAM PERFORMED ECC CORRECTION AND THE RESULTS ARE REPORTED. THE ADDRESS IN MEMORY OF THE WORD(S) IN ERROR ARE GIVEN, THE WORD(S) BEFORE CORRECTION AND THE WORD(S) AFTER CORRECTION ARE PRINTED. 1449 LINE 24 ‘%2%% ERROR BURST BEGINS AT WORD XXX IN DATA FIELD OF ERROR SECTOR 1454 1455 1456 THIS IS AN INFORMATIONAL LINE WHICH WILL BE PRINTED FOR °DCK' ERRORS WHICH ARE ECC CORRECTABLE OR WHICH BECOME ECC CORRECTABLE DURING RETRY. °'XXX*' IS THE WORD OFFSET VALUE FROM "RMEC1' AND IS IN 1457 1458 1459 1461 1462 DECIMAL. LINE 25 ERROR WAS NOT IN THE DATA READ - }222 ECC CORRECTION CAN'T BE PERFORMED ‘%lzgg THE DATA ERROR WAS NOT IN DATA TRANSFERED TO MEMORY. 1467 LINE 26 ‘%2;(1) CONTENTS OF THE ERROR SECTOR (REPORTED ABOVE) 163'{ 1472 }2;;- IF SW<03> IS SET, THE SECTOR WHICH GAVE THE ‘'DCK', °'DTE' OR, 'WCF*' ERROR OR 'HARD' DATA CHECK ERROR IS PRINTED. THE CONTENTS OF THE SECTOR FOLLOW THIS LINE. 1476 LINE 27 ‘%2;’6 TOTAL ERRORS:X 1481 THIS IS THE LAST LINE PRINTED FOR ALL NON-POSITIONING 1482 TYPE ERRORS. WOFL:N WRDS WRITN: YYYY ROFL:N WRDS READ: 2222 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-26 E 3 SEQ 0030 1484 }232 1483 'ERRORS IS THE TOTAL ERROR COUNT FOR_THE DRIVE AND INCLUDES EVERY ERROR DETECTED, REGARDLESS OF TYPE. 1487 }233 'WOFL® NUMBER OF TIMES 'WRDS WRITN' HAS OVERFLOWED 'WRDS WRITN®' IS THE TOTAL NUMBER OF WORDS WRITTEN THE DRIVE. 1490 }23} 'ROFL® NUMBER OF TIMES °'WRDS READ' HAS OVERFLOWED 'WRDS READ' IS THE TOTAL NUMBER OF WORD READ BY THE DRIVE. 1493 LINE 28 PR o ]'l‘o.gg T R B i o T TOTAL SEEKS: XXX TOTAL POS ERR= YYY TOTAL SKI ERR= Z THIS IS THE LAST LINE PRINTED FOR ALL POSITIONING TYPE ERRORS. i O BB IO RG2S RN R R R R RS SR Vo O W W R BERE W Vi Vi i dddddddfldddddddddddddddddddddflfldflddddddfld i aiaaaaviviauainniaunaunaawn i e NN b e e e e ek b k= O O 1498 *TOTAL SEEKS' IS THE TOTAL NUMBER OF SEEK OPERATIONS PERFORMED BY THE DRIVE. *TOTAL POS ERR' IS THE TOTAL NUMBER OF PROGRAM DETECTED POSITIONING ERROR BY THE DRIVE. *TOTAL SKI ERR' IS THE TOTAL NUMBER OF °SKI' ERRORS SIGNALED BY THE DRIVE. 8. PROGRAM DESCRIPTION 8.1 PROGRAM OPERATION WHEN THE PROGRAM IS STARTED, PROVIDING APT TTY ENABLE BIT IS SET OR DIAGNOSTIC LOADED BY OTHER THAN APT SCRIPT MODE, ALL TABLES AND PARAMETERS ARE CLEARED OR INITIALIZED. ~THE PARAMETERS WHICH ARE UNDER OPERATOR TTY ENTRY CONTROL ARE CHECKED FOR VALIDITY AND CONSISTENCY. RH CONTROLLER INTERRUPT ENABLE ('IE') IS SET, TTY KEYBOARD INTERRUPT ENABLE IS SET, AND THE KW11-L OR KW11-P CLOCK IS STARTED. COMMAND ENTRIES WILL NOW BE ACCEPTED BY THE PROGRAM. THE PROGRAM SCANS ITS INTERNAL ASSIGNMENT TABLES, LOOKING FOR: 1 ;) ) 41 DRIVES TO ASSIGN/DEASSIGN PERFORMANCE SUMMARY TYPEOUT REQUESTS DRIVES REQUIRING COMMAND INITIATION, BUFFER ASSIGNEMENT, OR PARAMETER SELECTION. DRIVES COMPLETING CURRENT OPERATIONS. THE PROGRAM CONTINUES SCANNING ITS TABLES UNTIL AN ENTRY IS FOUND. IN THE CASE_OF THE PROGRAM AT INITIAL START, THE FIRST ENTRY WILL BE MADE BY THE OPERATOR WHEN A DRIVE 1S ASSIGNED (*T® COMMAND). WHEN A DRIVE IS ASSIGNED, THE KEYBOARD ENTRY ROUTINE VERIFICS THAT THE DRIVE IS PRESENT, IS AN Imo, AND IS ONLINE. THE ASS%MNT ROUT INE THEN ISSUES A 'READIN PRESET' A 'RECALIBRATE' INSTRUCTION. INSTRUCTION, SETS 'FMT16°, AND ISSUES e VIV o e e e cud e wd AWML wvivawnawni cd cd b b D e =D b wd D wd D b b D D D o mmg\nmum\nm\nmmmmm\n KERESS8TE ISXRER 2BIFIFANANIISS & - D d d d d D d b b D D D d e D e e e D ) b D D b b b wviviwviwawawnawaw BB wvivisvwviwvaiwvaivinawnui o o ~ MM\AMMMM\AMW\’AWMV‘U’V’VDMWM CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-27 SEQ 0031 PARAMETERS FOR THE OPERATION ARE SELECTED AND A BUFFER IS ASSIGNED. IF THE OPERATION IS A WRITE OR WRITE CHECK C OMMAND, THE ASSIGNED BUFFER (WRITE CHECK COMMANDS ARE WILL BE FILLED WITH THE SELECTED PATTERN. ISSUED AFTER EACH WRITE COMMAND. THE WRITE CHECK COMMAND USES THE PARAMETERS SELECTED FOR THE PRECEDING WRITE COMMAND.) IS THEN PASSED TO THE COMMAND INITIATION ROUTINE. CONTROL THE COMMAND INITIATION ROUTINE FIRST LOOKS AT THE CYLINDER ADDRESS OF THE REQUESTED OPERAT ION. IF THE DRIVE MUST SEEK TO ANOTHER CYLINDER TO PERFORM THE OPERATION, THE_PROGRAM ISSUES A SEARCH INSTRUCTION TO THE DRIVE WITH A *TARGET® SECTOR WHICH IS 5 SECTORS EARLIER (THIS AL LOWS THE PROGRAM TO INITIATE THAN THE °'TRANSFER® SECTOR. OPERATIONS ON ANOTHER DRIVE WHILE THE PRESENT DRIVE, OR OTHER DRIVES, ARE SEARCMING FOR ‘TARGET® SECTORS. ALL SEEKS ISSUED BY THE PROGRAM ARE IMPL IED SEEK SEARCH OPERATIONS.) WHEN A SEARCHING DRIVE FINDS THE °*TARGET' SECTOR AND INTERRUPTS, THE PROGRAM THEN ISSUES THE REQUESTED COMMAND TO THE DRIVE THAT INTERRUPTED. WHEN THE DATA TRANSFER OPERATION IS COMPLETE, THE DRIVE REGISTERS ARE STORED AND A DATA TRANSFER IS INITIATED FOR A WAITING DRIVE. IF _THE OPERATION HAS BEEN COMPLETED NORMALLY, THE SAVED DRIVE REGISTERS ARE CHECKED TO VERIF Y THAT NO ERROR BITS ARE SET; THE RH CONTROLLER BUS_ADDRESS AND WORD COUNT ADDRESS REGISTERS ARE CHECKED TO VERIFY THAT THE CORRECT NUMBER OF WORD S HAVE BEEN TRANSFERED AND THAT THE TWO REGISTERS ARE CONSISTENT WITH EACH OTHER; AND IF THE COMMAND WAS A READ COMMAND, THE DATA BUFFER IS COMPARED. WHEN THIS SEQUENCE IS COMPLETED, THE DRIVE IS RETURNED TO THE ASSIGNED, INACTIVE LIST. THE PROGRAM THEN INITIATES A DATA TRANSFER ON A WAITING DRIVE AND RESELECTS AND REINIT IATES ANOTHER OPERATION ON THE RELEASED DRIVE. ERRORS WHICH OCCUR ARE PROCESSED IN THE FOLLOWING ORDER. ERRORS WILL BE REPOR TED AS THE FIRST ERROR TYPE CHECKED. A. MULTIPLE ERRORS REPORTED FOR OPERATIONS WHICH HAVE NOT COMPLETED NORMALLY. OPERATION NOT COMPLETED WITHIN TIME LIMIT - EMI3 DRIVE WENT OFFLINE = EM14 B. ERRORS REPORTED FOR OPERATIONS WHICH COMPLETE NORMALLY. CORRECTABLE UNSAFE= Enso RIVE TIMING ERROR - €A DATA CHECK ERROR elWRITE CHECK WITH DKSB-EHZZ HEADER CRC ERRORS FORMAT ERRORS ~ EM24, EM26 HEADER COMPARE ERRORS = EM2S . _EM27 PROGRAM DETECTED POSITIONING ERROR = =MS1 SEEK_INCOMPLETE ERROR - EM50 WRITE CHECK WITHOUT °DCK® SET = EM23 RH CONTROLLER OR rIBUS TRANSFER ERROR = EM40 ‘0PI’ -E 'PAR' ERROR = EM IAE 'WLE' ERROR = E SEQ 0032 MISCELLANEOUS DRI VE ERROR - EM30 C. = E CAN'T MATCH DATA READ WITH A PATTERN ERROR SIGNALED BY THE RH CONTROLLER = EM44 ERROR BIT(S) SET BuUT M4 ECC LOGIC FAILUR BUS ADDRESS OR WORD COUNT NOT CONSISTENT - EM46 8.2 ) D D e e WHEN THE DUAL PORT HWANDLER ROUTINE IN THE EXERCISER PROGRAM RECEIVES A REQUEST FOR A DRIVE . THE PROGRAM VERIFIES THAT THE DRIVE IS ) ) b ONLINE. THE DRIVE IS SELECTED AND THE RMCS1 REGISTER IS READ TO TEST THE 'DVA' BIT. IF THE DRIVE IS IN NEUTRAL, THIS WILL SEIZE THE DRIVE. IF THE DRIVE b =D - IS ISSUED TO THE DR 'DVA* IN °"RMCS1°. "PORT REQUEST'. THE PROGRAM THEN CHECKS d d 1 1 S AVAILABLE AS INDICATED BY THE ‘'DVA’ BE INITIATED IN THE NORMAL MANNER (SEE WAS NOT SET, THE PROGRAM MKES AN ENTRY b e STARTS A 15. SECOND T IMER FOR THE DRIVE. IF THE DRIVE HAS NOT SWITCHED TO "T‘g REQUESTING SYSTEM WITHIN THE 15. SECOND INTERVAL, A *NO RESPONSE TO PORT REQUEST' ERROR. NORMALLY THIS ERROR MESSAGE INDICATES A FAILURE IN THE DUAL PORT CONTROL LOGIC IN THE DRIVE BE ING TESTED; HOWEVER, UNDER CERTAIN CONDITIONS (E.G. MASSBUS PARITY ERRORS BEING REPORTED ON THE OTHER SYSTEM b D d b THE PROGRAM REPORTS D emd e md D D ON A TTY), THE OTHER PROCESSOR WAS UNABLE TO PROCESS THE DRIVE AFTER IT HAD REQUESTED THE DRIVE. THE OPERAIOR MUST BE AWARE OF WHAT THE OTHER SYSTEM IS DOING AT ALL TIMES TO INTERPRET THE PORT RELATED ERROR MESSAGES PROPERLY. D AFTER A DRIVE HAS CNOMPLETED AN OPERATION, THE PROGRAM WILL STORE THE REGISTERS AND ISSUE A °RELEASE' TO THE DRIVE; IF THE OPERATION D d d e TERMINATED WITH AN ERROR, THE DRIVE WILL NOT BE RELEASED UNTIL ERROR PROCESSING HAS BEEN COMPLETED. T T SINGLE PORT DRIVE S, DRIVES WHICH ARE IN NEUTRAL BUT NOT BEING EXERCISED BY THE ogrgixrs PORT ARE s}m TREATED Ag DUAL DRIVES IN THAT A AT THE END OF ERROR PROCESSING. COMMAND PROCESSI COMMAND ISSUED UNDER THESE CONDITIONS HAS ON THE OPERATION OF THE DRIVE. e R IS SEI%ED BY THE 0 THER PORT, A DRIVE CLEAR COMMAND FOR THE DRIVE IN AN INTERNAL °*PORT REQUEST PENDING' TABLE AND T Vi DUAL PORT OPERATION DUAL PORT OPERATION I S NEARLY IDENTICAL TO THE OPERATION DESCRIBED IN SECTION 8.1. THE &l‘FFERENCES ARE IN COMMAND SEQUENCE INITIATION AND COMMAND TERMINATI b b e L P OO ERRORS NOT FLAGGE D BY THE HARDWARE ERROR DETECTION LOGIC. BUS ADDRESS OR WORD COUNT INCORRECT - EM41 DATA COMPARE ERRORS = NO DRIVE E?Rgz DETSE;ED - EM42 oo D cd i ) D d D D ) D ) D ) V. b e b cd D e cd =D gOOOOOOO AAARRDDDIRRRR — 2325858083832 0~ VS WN=O RRERERTE BEYERRUR LS BRI LR UN= VONO W =0V~ CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-28 8.3 SELECTION OF OPERATION VARIABLES A. SECTOR ADDRESS SELECTION IS RANDOM BETWEEN THE VALUES IN TRACK ADDRESS SELECTION IS RANDOM 'MINSEC * AND °‘MAXSEC' BETWEEN THE VALUES IN "MINTRK' AND *MAXTRK®. CYLI ND SELECTION IS RANDOM BETWEEN *MINCYL' AND "MAXCYL'. ADDRESS IS GREATER THAN THE CORRESPONDING MAXIMUM ADDRESS, THE — SEQ 0033 PROGRAM WILL SWAP °'MAX' AND °"MIN® ADDRESSES AND CONTINUE. ) i N RRRRRCR RN RARPNRNRO Seaans % 3@\‘0\”&“N R %\nx g BRIV REN2 SEEEEOREEES gzezeed CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 3-29 D D i e ) ) D 8. ) D D ) e C. D cnd o med D b D — R D D d D. 8.4 THE WORD COUNT IS RANDOMLY SELECTED BETWEEN 6 AND THE VALUE 'WRDCNT'. THIS IS NECESSARY AS THE PROGRAM REQUIRES & LOCATIONS IN THE DATA PORTION OF THE SECTOR TO BE ABLE TO MATCH THE DATA TO A PATTERN FOR DATA COMPARISON PURPOSES AND NEEDS 2 MORE LOCATIONS IF A READ HEADER & DATA COMMAND IS ISSUED. THE DATA WRITTEN IS RANDOMLY SELECTED AMONG THE 15. STANDARD PATTERNS. THE PARAMETER 'PATTERN' ENABLES THE RANDOM PATTERN SELECTION, IF THIS PARAMETER IS 0. THE COMMANDS ARE SELECTED RANDOMLY. WRITE CHECK DATA COMMAND IS :E?:O%HED ONLY IF THE PREVIOUS COMMAND WAS THE APPROPRIATE WRITE DATA PATTERNS THE PROGRAM SELECTS ONE OF THE FOLLOWING DATA PATTERNS TO WRITE WHEN A WRITE COMMAND IS SELECTED. THE ENTIRE BUFFER IS FILLED WITH THE SELECTED PATTERN. WHEN DATA IS READ FROM THE DISK, THE PROGRAM COMPARES DATA ON A SECTOR BASIS. IF THE PARAMETER 'PATTERN® IS 0 THE PROGRAM WILL ATTEMPT TO MATCH THE FIRST & DATA WORDS OF EACH SECTOR, TO ONE OF THE FOLLOWING PATTERNS. HOWEVER, IF THE PARAMETER ‘PATTERN' IS NOT 0, THE PROGRAM WILL ASSUME THAT THE DESIRED DATA PATTERN IN LOCATION *PATTERN' IS THE DATA TO LOOK FOR AND WILL NOT TRY TO MATCH ANY PATTERNS. THIS ALLOWS THE OPERATOR TO SCAN THE DISK FOR ANY SPECIFIC PATTERN. PAT1 PAT 2 PAT3 PAT & PATS PAT 6 PAT 7 +PAT 8 026455 1535355 52525 155555 gl 1;3333 0§645$ 155555 %SgSiS 1 1 177774 00000; 135555 026455 155555 052525 1 1 177770 000007 sl ok WN N 1;1R 13 §3 125252 155555 1 1 W 17 888877 177700 000001 1; 177776 000;77 1776 1 1 5;5;5 155255 ggb‘SS 1 }3§ it 14444 17088§ it1 1 ?R i;i 1S§§S 9513 i 1 000177 177688 000777 177888 1 1 1 8 155555 0264 15335 i 11 1;5 35 1; 155 gt e L R1 1 W 177777 088 1 ? i?i 8 15255 ?51322 i 133 §3 PAT 9 PAT 10 PAT 11 PAT 12 PAT 13 PAT 14 PAT 15 000001 000002 17777 177775 17;322 1 ?77777 7777 15333 °§§§§ 1 1272777 00000 R 028 17 ? ¢ R R 193777 ??3?3 127777 000000 UL UL €2 cC CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 3-30 : 3 SEQ 0034 7 177777 175777 171§ 14l 17272777 ?fifi; 176277 17‘222 177677 80010 127777 0 177377 00200 177577 155 1720 };21 002000 004 010000 020000 040000 100000 17 1714 1715 1716 1717 1718 1719 };28 }é‘? 1735 };g‘ 177737 155555 0804 177377 172222 177577 153333 ggr 1772677 172 7?7 1; ; 175777 1 gggg 177737 1 g 0 1772757 173777 15 ; 1g7777 mggg 127767 1 ogggg 177773 157777 155 137777 172262 177775 153333 7 077777 155555 177776 001 ~ » WORST CASE PATTERN };gg 1725 000040 9.1 9.2 1736 1737 ;gg TO INITIALIZE THE DRIVER: PC,RMINIT JSR RETURN BE INDICATED AS FOLLOWS: DRVSTA -—eeemems mg 174 1745 1746 };2; >0 ONL INE <0 UNSAFE DRIVE NUMBER. };21 DRVTYP 17s§ OFFLINE, DRIVE IS NOT AN RMB0, OR NONEXISTENT DRIVE ENTRIES ARE ENCODED AS FOLLOWS: CONDITION XISTENT DRIVE ms NOT AN RM80 0 };32 1 -1 1757 };gg THE *RMINIT® ROUTINE WILL DO A READIN PRESET AND WILL SET FMT16. 11;2? L3 @ @ THE DRIVE TYPE IS DEFINED IN AN 8 BYTE LONG TABLE TAGGED °‘DRVTYP'. THE TABLE CONTAINS ONE BYTE FOR EACH DRIVE AND IS INDEXED BY THE 1749 1750 = DRIVE STATE 444443330 0 wmwwaeawse Em e =0 1744 17 1727777 177777 17777 THIS DOCUMENT IS THE USER'S GUIDE FOR THE RH/RM DRIVER. 17‘1 1765 177777 RH/RM DRIVER 1740 };& 172777 177777 UPON RETURN YOU MUST EXAMINE THE ‘DRVSTA'* TABLE TO DETERMINE THE DRIVES THAT ARE ONLINE FOR TESTING. THE 'DRVSTA® TABLE IS EIGHT BYTES; ONE BYTE PER DRIVE. THE STATE OF EACH DRIVE WILL 1735 mi 177777 1772777 9.3 AFTER THE DRIVER HAS BEEN INITIALIZED, IT IS CALLED USING THE FOLLOWING SEQUENCE. CALL: JSR PNTDPB RO,RM80 sMAKE THE CALL sADDRESS OF DPB+ 3 CZRNAAOD RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-31 sRETURN IF QUEUE IS FULL sRETURN IF REQUEST IS IN sQUEUE OR THERE IS AN RE TURN1 RETURN2 1768 1769 1770 SEQ 0035 };;1 cERROR CONDITION };;‘ *DP8 (DATA PARAMETER BLOCK) 1775 PNTDPB: .BYTE 0 :(0) DRIVE NUMBER 1777 .BYTE 8 :(i) COMMAND BYTE 1776 1778 79 .BYTE .WORD 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 179 1792 1793 1794 1795 1796 0 WORD 0 O .BYTE 0 .BYTE 0 WORD WORD 0 0 WORD O }773; 1799 1800 9.4 }%} TO UTILIZE THIS CAPABILITY YOU MUST SUPPLY THE ‘RM TIMER'® 181§ 1814 1815 MoV #16.,-(SP) JSR PC,RMTMR IT SHOULD BE NOTED THAT YOU MUST PROVIDE THE CODE TO DRIVE THE CLOCK AND THE ELAPSED TIME MUST BE IN MILLISECONDS. 9.4.1 EXAMPLE - WRITE 1000. WORDS 1$: JSR sCALL THE DRIVER ;g; ggTDPB*‘M }g}g BMI ERROR1 sERROR OCCURRED 1820 1821 . . 3 :DRIVE #5 182; 1824 28: WRTDPB BR RO,RM80 :DPB_ADDRESS sWAIT FOR QUEUE IF FULL 182 ROUTINE 216, MILLISECONDS BETWEEN sCLOCK_TICKS sCALL THE TIMER ROUTINE 1$ }g}g 2 WITH THE ELAPSED TIME IN THE FOLLOWING MANNER: 1807 }ggg 1810 :(3) PSEL AND A1 A16 :(4) WORD COUNT (MUST BE NEG.) :(6) BUFFER ADDRES sREGISTER _TABLE POINTER :(10) SECTOR ADDRESS OR sFIRST REG. INDEX :(11) TRACK ADDRESS OR sLAST REG. INDEX :(12) CYLINDER ADDRESS :(14) ERROR TABLE POINTER sPOINTS TO THE FIRST OF TWENTY sLOCATIONS OF WHERE THE DRIVER :1S TO STORE THE RH/RM sREGISTERS ON AN ERROR. IF LEFT sZERO REGISTERS ARE NOT SAVED. :(16) STATUS/ERROR INDICATOR :BIT15=1=ERROR OCCURRED :BIT07=1=DONE :BIT14-BIT09 AND BIT06-BIT03 sINDICATE TYPE OF ERROR THE DRIVER PROVIDES A SOFTWARE TIMEOUT CAPABILITY. 1803 1804 }g?)g ‘%g}l :(1) OFFSET VALUE OR FMT16, ECT, AND HCI WRTDPB: .BYTE .BYTE sWAIT FOR COMMAND TO COMPLETE : CZRNAAO RM8C PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-32 185 SEQ 0036 1829 1828 e 0 =1000. "WORD WRTBUF 1831 183% 183 "WORD "WORD WORD "WORD BYTE BYTE 1829 1830 1834 WRTDPB: .WORD "WORD "WORD WORD BYTE "WwORD 9.5 MNEMONIC RMCS1 RMWC 1852 RMCS2 RMBA RMDA 1853 1854 1855 1856 1857 1858 1859 RMDS RMER1 RMAS RMLA RMDB RMMR1 RMDT 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 RMSN RMOF RMDC RMHR RMMR? RMER2 RMEC1 RME (2 * *RMCS 1870 }g;} }g;g 1877 1 1 — 1 &3 1878 sEVERYTHING THE ;ABOVE TABLE DID, BUT sIN A CLEANER FORMAT RH/RM REGISTERS 1846 1848 1849 1850 1851 sTHIS SETUP ACHIEVED NORSTNNOOASTNOOASTNNOONSNOONS 1838 1839 1840 1841 }%g S WRITE =1000. WRTBUF 3,5 400,ERRTBS.0 WIS 8 8 S WNWWNNNINI NN = = b =2 1837 }g;{ sWORD COUNT sBUFFER ADDRESS sSECTOR s TRACK sCYLINDER sERROR TABLE sSTATUS/ERROR INDICATOR ALTERNATE DPB SETUP }ggg }gfig 400 ERRTBS O sWRITE COMMAND * RH70 CONTROLLER REGISTERS 9.6 COMMANDS PERFORMED BY THE DRIVER COMMAND CODE COMMAND TYPE SEEK 105 P DRIVE CLEAR RELEASE m 13 N N RECAL IRATE 107 P CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:53 PAGE 3-33 L 3 SEQ 0037 115 117 121 1¢3 OFFSET RETURN TO CENTER READIN PRESET PACK ACKNOWLEDGE 1882 1883 1884 1885 131 SEARCH 141 GET REGISTER(S) 143 SET_FORMAT SELECT DRIVE 145 151 WRITE CHECK DATA WRITE CHK HEADER & DATA 153 WRITE DATA 161 WRITE HEADER & DATA 163 171 READ DATA READ HEADER & DATA 173 1886 1887 1888 1889 1890 1891 1892 1893 189 1895 1896 1897 1898 1899 1900 1901 P 3 N N P S S s D D D D D D N = HOUSEKEEPING P = POSITIONING D = DATA TRANSFER S = SPECIAL PROVIDED BY THE DRIVER 1903 9.7 1905 1906 DPB STATUS/ERROR INDICATOR WORD THIS INDICATOR WILL INFORM THE USER OF THE RESULTS OF THE_ REQUEST. THIS IS ACCOMPLISHED BY SETTING VARIES BITS OF THE INDICATOR TO 1907 A ONE. 1908 1909 1910 BIT NO. MEANING IF ON A *1" 15 ERROR_OCCURRED ....... 1911 1912 1913 DONE (BIT07=0); BITS 14=9 SPECIFIES_TYPE 1914 DONE (BITO7=1); BITS 6=3 SPECIFIES TYPE 1916 1917 14(1) USER MADE A REQUEST FOR A FUNCTION TO BE PERFORMED ON AN OFFLINE OR UNSAFE DRIVE 1919 9(3) (4) SOF TWARE TIMEOUT OCCURRED ON THIS DRIVE 1923 6(2) ERROR OCCURRED DURING AN 1/0 OPERATION 1925 192 5(2) 1928 4(2) CORRECTABLE UNSAFE CONDITION OCCURRED 1930 1931 1952 2 PORT REQUEST TIMEOUT. THE DRIVER REQUESTED THE DRIVE BUT THE OPPOSITE PORT DID NOT RELEASE THE DRIVE WITHIN 15. SECONDS. 1 NON=EXISTENT DRIVE REQUESTED. USER MADE A REQUEST FOR A NON-EXISTENT DRIVE. 1934 193 1937 1938 ~ ~ NOTES FOR ABOVE ERROR OCCURRED DURING AN OPERATION OTHER THAN 1/0. " CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-34 1939 n3 SEQ 0038 (RH/RM 1940 }%} (1 = REQUEST WASN'T PUT IN QUEUE. REGISTERS WERE NOT SAVED) 1943 1944 1945 }%9 (2) = 1948 1949 1950 }gg} (3) = REQUEST QUEUE HAS BEEN EMPTIED. THE DRIVER ISSUED A ‘DRIVE CLEAR'' TO THE DRIVE. NOTE: ALL RH/RM REGISTERS ARE SAVED AS PER DPB+14 BEFORE THE 'DRIVE CLEAR". REQUEST QUEUE HAS BEEN EMPTIED. THE 1953 (4) = }32’5 ‘%ggg 9.8 DRIVER ISSUED A MASSBUS INIT. ALL RH/RM REGISTERS FOR THE DRIVE WERE SAVED AS PER DPB+14 BEFORE THE INIT. A ‘RECALIBRATE'' SHOULD BE ISSUED BEFORE ANY OTHER COMMAND. ERROR CALLS MADE BY THE DRIVER. }3289 THERE ARE A FEW ERRORS THAT CAN OCCUR THAT CAN NOT BE INDICATED IN A DPB. 1960 1961 }%% WHEN THIS TYPE OF ERROR IS DETECTED BY THE DRIVER IT WILL MAKE AN ERROR CALL OF THE FORM ''ERROR N'‘, WHERE ‘N'' IS THE ERROR NUMBER AND THE ERROR WILL BE AN EMT INSTRUCTION. 1964 1965 }829 i - TYPE cone DATA AVAILABLE 1968 }8_6’3 1 RH70 INTERRUPT OCCURRED (RHAS=0) *R4= RMCS1°'S ADDRESS 1971 1972 1973 1974 2 UNEXPECTED ATTENTION OCCURRED R1= DRIVE NUMBER R3= ATA BIT *R4= RMCS1'S ADDRESS R5= (RMAS) 1975 1976 1977 1978 RMERRS _=RMDS RMERRS+2=RMER1 RMERRS +4=RMER2 RMERRS +6=RMMR2 1979 1980 NOT USED }gg% NOT USED 1981 1984 1985 1986 1987 1988 1989 5 }33;25 * THIS IS THE ACTUAL UNIBUS ADDRESS (176700) }38(1) 1994 ADDRESS PLUG CHANGE BIT SET ("OPE' ERROR) R1= DRIVE NUMBER R3= ATA BIT *R4= RMCS1'S ADDRESS 5= (RMAS) RMERRS _=RMDS RMERRS +2=RMER1 RMERRS +4=RMER2 a N CZRNAAD RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE & 3 SEQ 0039 s*LAST REVISION 23-DEC-81 .TITLE CZRMAO RHOO PERF EXER s *COPYRIGHT 1982 :*DIGITAL EOUIPHENT CORPORATION *COLORADO SPGS., CO. 80919 'PROGRM BY MIKE LEAVITT tTHIS PROGRAM WAS ASSEMBLED SING THE PDP=11 MAINDEC SYSMAC *PACKAGE (MAINDEC-11-DZQAC-C5), 18-MAR-81 VoA NRO 1 & N R O I I I O I 15 13 W A IR B SWITCH PR LA IR 20 JF JF 2% JF 2% B FRATE N FEPA OPERATIONAL SWITCH SETTINGS B PRTR PR N PR PR TRTR PRN .SBTTL AR TEATATA AR TE 58 .SBTTL USE HALT ON ERROR INHIBIT ERROR TYPEOUTS BELL ON ERROR INHIBIT END OF PASS MESSAGES DISPLAY ALL DATA COMPARE ERRORS RON'T CHANGE PARAMETERS (LOOP ON PRESENT VALUES) PARTIAL REGISTER DISPLAY IF ERROR B. NO ECC CORRECTION RESULTS DISPLAYED IF ERROR A. DO NOT CHECK FOR MAXIMUM ERROR COUNTS B. DO _NOT DROP DRIVE AT END OF TEST A. DISPLAY ERROR SECTOR IF °'DCK', °DTE' 28TH RETRY C. IF DATA COMPARE EgROR € SWO7 SET, DISPLAY 2 1 0 REMAINDER OF BUFF A. DO NOT TYPE DRIVE STATUS AT PROGRAM STAR B. DO NOT TYPE PERFORMANCE REPORT AFTER SPECIFIEO TIME C. PROMPT 'FE CYLINDER' MESSAGE IN AUTO(CHAIN) RUN MODE INHIBIT DATA COMPARE AFTER READ COMMAND, W/0 ERROR READ ONLY MODE BASIC DEFINITIONS s;lngIAL ??88558 OF THE STACK POINTER #*% 1100 %=« ERROR SCOPE = EMT = l0T ssBASIC DEFINITION OF ERROR CALL ::BASIC DEFINITION OF SCOPE CALL *HISCELLANEOUS DEFINITIONS 11 :;CODE FOR HORIZGEGESL TAB I.F CR CRLF = = = 99 :sCODE FOR LINE F ..COOE FOR CARRIAGE RETURN sCODE_FOR CARRIAGE RETURN-LINE FEED STKLMT = 177774 = 17777 = 17757 ssSTACK LIMIT REGISTER ..P OGRAM_INTERRUPT -REQUEST REGISTER HARDWARE SWITCH REGISTER ggU"PS PIRQ DSWR DDISP OR_"WCF' ERROR B. DISPLAY SECTOR IF *DCK* ERR UNCORRECTABLE = 177776 = 17757 ..PROCSSSM STATUS WORD ..HARDHARE DISPLAY REGISTER s *GENERAL PURPOSE REGISTER DEFINITIONS [#4) TAl CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE &4-1 SEQ 0040 ) =g =g = = ] = = = 0 BER" SWITCH DEFINITIONS OO0 OOO0OOWn =D =D =D - - :: SHOHOHLO0O OOO000O WA == 8O ~ EVEL DEFINITIONS DATA BIT D = : sGENERAL REGISTER s sSTACK POINTER : ;PROGRAM COUNTER OO0V NS =N NN g h 0 nmouwnnnnn-—- :*PRIORITY PRO elelelelelel=d=0"¢ OOOOM o w 000008 SR nuunnuwnunnnn 000C00 000001 FLFLILPRILIALPEFOPE R NO\VNOMMWNMSNWN=O BASIC DEFINITIONS ITIONS (BITOO TO BIT15) SEQ 0041 CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 4-2 Y Y [=lelelele =] oOoOo NN - —f =g =4 (=] COoOONnN VIONN00O Y 1 Gt ] O [elelelelele] - 000400 000200 000100 000040 000020 000010 000004 000002 000001 001 000400 000200 000100 000040 000020 000010 000004 000002 000001 ) b &o-nwuavngNO BASIC DEFINITIONS BIT1=BITO1 BITO0=BIT00 77 78 79 80 81 85 g‘} 001000 8(2)2000 000400 820000 90 91 92 93 99 100 o POONONNANININ) =3 = b —d S » FOFOSFON SO — < m (] o ..R_;SE:}!ED AND ILLEGAL INSTRUCTIONS TRAP ..BREAKPOINT TRAP (BPT) ..INPUTIOUTPUT TRAP (I10T) #*SCOPE+*+ s sPOWER FAIL ..§NLATOR TRAP (EMT) *+*ERROR+*+ ‘TRAP'' TRAP :TTY KEYBOARD VECTOR ..TTY PRINTER VECTOR : ;PROGRAM INTERRUPT REQUEST VECTOR RH CONTROLLER REGISTERS s INTERRUPT ENABLE (BIT #6) IE :READY (BIT#7) ;HIGH ORDER BUS ADDRESS BIT (BIT #8) :HIGH ORDER BUS ADDRESS BIT (BIT #9) #10) :PORT SELECT (BIT :MASSBUSS PARITY ERROI! (BIT M3) RDY Al Al PSEL MCPE TRE sTRANSFER ERROR (BIT #14) ;SPECIAL CONDITION (BIT #15) :SC sWORD COUNT REGISTER (RMWC) s (EACH BIT IS CALLED BY BIT NUMBER) ;BUS ADDRESS REGISTER (RMBA) s (EACH BIT IS CALLED BY BIT NUMBER) 9% 95 96 97 98 TIME OUT AND OTHER ERRORS sCONTROL AND STATUS REGISTER 1 (RMCS1) 000100 000200 8 89 T PIRQVEC .SBTTL 82 83 84 ot 000010 000014 000014 000014 000020 000024 000030 000034 000060 000 000240 ERRVEC nununnwnnnnn ;*BASIC *'CPU"* TRAP VECTOR AD,D‘RESSES sCONTROL AND STATUS REGISTER 2 (RMCS2) 000001 000002 us1 us2 1 2 SEQ 0042 CZRNAAO RMBO PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 4-3 RH CONTROLLER REGISTERS 101 10 104 105 106 107 108 109 110 111 11% 1 114 115 00002 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 =4 =10 SUNIT SELECT (BIT #2) ;BUS ADDRESS INCREMENT INHIBIT (BIT #3) UPE = 20000 sUNIBUS PARITY ERROR (BIT #13) PAT CLR IR OR MDPE MXF PGE NEM NED WCE DLT .SBTTL = 40000 = 100000 sMASSBUS PARITY TEST (BIT #4) ;CLEAR (BIT #5) s INPUT READY (BIT #6) sOUTPUT READY (BIT #7) sMASS BUS PARITY ERROR (BIT #8) sMISSED TRANSFER ERROR (BIT #9) :PROGRAM ERROR (BIT #10) sNON EXISTENT MEMORY (BIT #11) sNON EXISTENT DRIVE (BIT #12) sWRITE CHECK ERROR _(BIT #14) :DATA LATE (BIT #15) RM REGISTERS ;CONTROL AND STATUS 1 REGISTER. (#00) 000001 000002 000004 000010 000020 000040 004000 GO FO F1 F F Fé DVA =1 =2 =4 =10 = 20 = 40 = 4000 ;GO BIT (BIT #0) sFUNCTION CODE BIT #1 sFUNCTION CODE BIT #2 sFUNCTION CODE BIT #3 sFUNCTION CODE BIT #4 sFUNCTION CODE BIT #5 sDEVICE AVAILABLE (BIT #11) :DRIVE STATUS REGISTER (RMDS1) (#01) 000001 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 OFFON Vv DRY DPR PGM LBT WRL MOL PIP ERR ATA =1 = 100 = 200 = 400 = 1000 = 2000 = 4000 = 10000 = 20000 = 40000 = 100000 ;OFFSET ON (BIT #0) :VOLUME VALID (BIT #6) :DRIVE READY (BIT #7) :DRIVE PRESENT (BIT #8) :PROGRAMABLE (BIT #9) sLAST BLOCK TRANSFERRED (BIT #10) sWRITE LOCK (BIT #11) sMEDIUM ON-LINE (BIT #12) sPOSITIONING OPERATION IN PROGRESS (BIT #13) ;COMPOSITE ERROR (BIT #14) SATTENTION ACTIVE (BIT #15) ;ERROR REGISTER #01 (RMER1) (#02) ILF ILR RMR =1 =2 = 4 sILLEGAL FUNCTION (BIT #0) sILLEGAL REGISTER (BIT #1) sREGISTER HODIFICATIgN REFUSED (BIT #2) 1 0002 WCF ECH HCE = 40 = 18 =2 ;WRITE CLOCK FAIL (BIT #5) OR (BIT #6) sECC _HARD 1 002 IAE 000001 000002 PAR FER 15 156 155 156 157 = 20 = 40 = 100 = 200 = 400 = 1000 = 2000 = 4000 = 10000 sDATA BUFFER REGISTER (RMDB) s (EACH BIT IS CALLED BY BIT NUMBER) 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 135 157 138 139 140 141 142 143 144 145 146 147 148 US4 BAI HCRC AOE = 18 =2 = 40 = 1880 = 2000 sPARITY ERROR (BIT #3) sFORMAT ERROR (BIT #4) E _ERROR (B‘T #7) HEADER C sHEADER CRC ERROR (BIT #8) sADDRESS OVERFLOW ERROR (BIT #9) sINVALID ADDRESS ERROR (BIT #10) CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 4=4 SEQ 0043 RM REGISTERS 158 159 160 161 }gg 804000 18888 02 040000 100000 166 171 172 173 174 175 };9 000001 000002 000004 000010 000020 000040 000100 000200 };g 180 192 193 194 }gg 000001 000002 000004 000010 000020 40 000100 200 000400 004000 020000 040000 100000 000100 000200 0004 001000 002000 1 14 :DEVICE 0 (BIT #0) =4 =10 = 20 = 40 sDEVICE ; (8IT lg) sDEVICE 3 (BIT #3) sDEVICE & (BIT #4) sDEVICE 5 (BIT #5) AT1 =2 AT AT = 100 = 200 AT AT ATS ATS :DEVICE 1 (BIT #1) :DEVICE 6 (BIT 09) :DEVICE 7 (BIT #7) ;DESIRED SECTOR/TRACK ADDRESS REGISTER (RMDA) (#05) D100 pT01 D102 D103 D104 D105 DT0 D10 D108 DRQ MOH TAP NSA =1 =2 =4 =10 = 20 = 40 = 100 = 200 = 400 = 4000 = 20000 = 40000 = 100000 sDRIVE TYPE NUMBER BIT 1 sDRIVE TYPE NUMBER BIT § :DRIVE TYPE NUMBER BIT sDRIVE TYPE NUMBER BIT & :DRIVE TYPE NUMBER BIT 5 :DRIVE TYPE NUMBER BIT 6 :DRIVE TYPE NUMBER BIT 7 .DRIVE TYPE NUMBER BIT 8 :DRIVE TYPE NUMBER BIT 9 :DRIVE REQUEST REQUIRED (BIT #11) :MOVING HEAD (Bl 13) sTAPE DRIVE (BIT #14) ;NOT SECTOR ADDRESSED (BIT #15) sC1 SC04 SC10 $C20 = 100 = 200 = 400 = 1000 = 2000 #6) sSECTOR COUNT FIELD O (BIT sSECTOR COUNT FIELD 1 (BIT #7) sSECTOR COUNT FIELD ; (BIT #8) sSECTOR COUNT FIELD 3 (BIT #9) sSECTOR COUNT FIELD & (BIT #10) ;(EACH IS CALLED BY BIT NUMBER) 209 lg =1 sSERIAL NUMBER REGISTER (RMSN) (#10) 205 %88 5?8 2n ATO ;LOOK=AHEAD REGISTER (RMLA) (#07) }8; 199 200 201 g ;DRIVE TIMING ERROR (BIT #12) :OPERATION !NCWLETE (BIT #M3) :DRIVE UNSAFE (BIT #14) :DATA CHECK ERROR (BIT 15) ;DRIVE TYPE REGISTER (RMDT) (#06) }g‘z 183 184 185 186 187 188 189 190 191 = 10000 = 20000 = 40000 = 100000 sWRITE LOCK ERROR (BIT #11) ;ATTENTION SUMMARY PSEUDO-REGISTER (RMAS) (#04) }g; 170 DTE 0Pl UNS DCK = 4008 ;MAINTAINABILITY REGISTER (RMMR1) (#03) }gg 169 WLE 000001 881000 2000 004000 010000 ;OFFSET REGISTER (RMOF) (#11) == OFFDIR SSEI 8 HCI =2 FMT16 = 10000 ECI = 40 sOFFSET DIRECTION .SKI SECT OR ERROR INHIBIT (BIT #9) HEADER COMPARE INHIBIT (BIT #10) :ERROR CORRE W !i'gDE INHIBIT (BIT #1) ;FORMAT BIT (BIT #12) CZRNAAQ RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 4=5 SEQ 0044 ;DESIRED CYLINDER ADDRESS (RMDC) (#12) s (EACH BIT IS CALLED BY BIT NUMBER) ;CURRENT CYLINDER ADDRESS (RMCC) (#13) ; (REGISTER CURRENTLY NOT USED) :RM ERROR REGISTER #02 (RMERZ) (#15) 000040 000200 002000 004000 010000 020000 04 0000 100000 =10 = 40 OPE = 20000 bv(C LB8C LSC 1vC SK1 BSE :DATA PARITY ERROR (BIT #3) :SKIP SECTOR ERROR (9" #5) = 508 = 2000 = 4000 = 10000 sDEVICE CHECK (BIT #7) :LOSS OF BIT CLOCK (BIT #10) ;LOSS OF SYSTEM CLOCK (BIT #11) s INVLAID COMMAND ERROR (BIT #12) = 48800 = 100000 sSEEK _INCOMPLETE (BIT #14) sBAD SECTOR ERROR (BIT #15) ;OPERATOR PLUG ERROR (BIT #13) ;ECC PATTERN REGISTER (RMEC2) (#17) s (EACH BIT IS CALLED BY BIT NUMBER) N = N =2 N =2 NN =2 =2 N =2 NN = NN = b e e e e D e e i e e e e o e e o §8888888888§888888 g2 £8 NNOOWVWVE S DNIANNN = =000 .SBTTL 2 NN DPE SSE ;ECC POSITION REGISTER (RMEC1) (#16) s (EACH BIT IS CALLED BY BIT NUMBER) n NONINININININININ) = bbbb &» bb&u uwuwuuuNNNNNNNNNNNNNNNN WN =00 & Ng\ngw-osgmfloubw-OOONOm RM REGISTERS SEEK RECAL DRVCLR RELSE RM DRIVER COMMANDS =10 = 105 = 107 = 111 READIN ACK SEARCH GETREG SETFMT SELDRV WCKD = 113 = 117 = 121 = 123 = 131 = 141 = 143 = 145 = 151 WRTDAT WRTHD RDDAT = 161 = 193 = 171 ABASE AVECT1 = 176700 = 254 RTC WCKHD RDHD = 153 = 173 sNO OPERATION s SEEK sRECALIBRATE sDRIVE CLEAR sRELEASE sRETURN TO CENTER LINE sREAD IN PRESET :PACK ACKNOWLEDGE s SEARCH sGET REGISTERS sSET_FORMAT (& ECI OR HCID) sSELECT DRIVE sWRITE CHECK DATA SWRITE CHECK HEADER & DATA sWRITE DATA sWRITE HEADER & DATA sREAD DATA sREAD HEADER © DATA & SEQ 0045 TRAP CATCHER .SBTTL 1 000000 SeoTiS 000174 000000 000176 000000 =0 ;*ALL UNUSED LOCATIONS FROM & = 776 CONTAIN A *'.+2,HALT" *«SEQUENCE TO CATCH ILLEGAL TRAPS AND INTERRUPTS -Locmoug CONTAINS O TO CATCH IMPROPERLY LOADED VECTORS : :SOFTWARE DISPLAY REGISTER DISPREG: uono 8 +:SOFTWARE SWITCH REGISTER SWREG: .SBTTL STARTING ADDRESS(ES) JMP JMP . 000200 000137 003542 z 000204 000137 003532 JSBTTL g TRAP CATCHER S#START1 NSTART ::JUMP TO STARTING ADDRESS OF PROGRAM :CHANGE THE RH ADDRESS ACT11 HOOKS ttt.tttttttt'ttttttttttt'ttlttt.Q.'tt.ttttt!ttttt..'.tt.tt'..tt 000210 000046 000046 oswg : 7 000052 8 nooxs REQUIRED BY ACT11 040000 000210 001100 :SAVE PC ::1)SET LOC.46 TO ADDRESS OF SENDAD IN .SEOP $SVP(=. =46 serscg» -WORD .=$SVPC .=1100 "SBTTL 40000 ::2)SET LOC. 52 TO 40000 :: RESTORE P APT PARAMETER BLOCK t.ttttttttttt.ttttt.'t'.t'ttlttttt.tt't'tt..tlt.'t'.l.'tt.'tt't ser LOCATIONS 24 AND 44 AS REQUIRED FOR APT 001100 00002 000024 000200 000044 .$X=. =24 200 ;:SAVE CURRENT LOCATION *SET POWER FAIL TO POINT TO START OF PROGRAM ..roa APT START UP =.8X ::RESET LOCATION COUNTER ::POINT TO APT INDIRECT ADDRESS PNTR. .=44 $APTHDR ::POINT TO APT HEADER BLOCK 001100 001100 2222222232233 ititiiiiaiiiiidaiiiisiiligs 33I 3333333332323 ttttt.'.t.tt.tttt..ttt't'tt.tttt'tl'tt.t'tt't..l.'tt'..'t't'tt. ker APT PARAMETER BLOCK AS DEFINED IN THE APT=-PDP11 DIAGNOSTIC *INTERFACE SPEC. 001100 001100 000000 001102 001206 001104 814 34 oo1103 001110 14234 014234 001112 000032 001114 SAPTHD: $SHIBTS: .WORD SMBADR: .WORD SMAIL 8 - ::TWO HIGH BITS OF 18 BIT MAI ADDRESS OF APT MAILBOX (BITS ..nuu xn OF LONGEST TEST ADDR 0=15) $TSTM: .WORD TAB.XY=, .WORD ssreno-sfihu -LENGTH MAILBOX-E TABLE (WORDS) :CMTAGSTARING ADDRESS $SPASTM: .WORD SUNITM: .WORD # aun IME IN SECS. OF 1ST PASS ON 1 UNIT (QUICK VERIFY) sn ONAL RUN TIME (SECS) OF A ms FOR EACH ADDED UNIT e~ | 6 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE S5 e— SEQ 0046 ZRNMO RHBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 6 COMMON T .SBTTL 0 COMMON TAGS ..Q.'Qt.'..'.".'..'.'."Q.tt...Q..i.."...lt.'t"'.'.....t.". XY .=TAB. NN IIF RN $INTAG: .BYTE -WORD .WORD SWR: DISPLAY: .WORD $TKS: e T —d d SS $SR e e P 17756 g $FILLC: .BYTE 12 WORD ..CNTAINS THE TES'I’ NUMBER s sCONTAINS ERROR FLAG s sCONTAINS SUBTEST ITERATION COUNT :sCONTAINS SCOPE LOOP ADDRESS s sCONTAINS SCOPE RETURN FOR ERRORS s ;CONTAINS TOTAL ERRORS DETECTED ..CWTAINS ITEM CONTROL BYTE s CONTAINS MX Emoas PER TEST ..CWTA!NS PC OF s CONTAINS °GOOD* ..CWT INS °"BAD’ DATA s ;RESERVED==NOT TO BE USED :;sAUTOMATIC MODE INDICATOR s INTERRUPT MODE INDICATOR s ;ADDRESS OF SWITCH REGISTER s sADDRESS OF DISPLAY REGISTER ..TTY KBD STATUS :TTY KBD BUFFER :iTTY PRINTER STATUS REG. ADDRESS ;TTY PRINTER BUFFER REG. ADDRESS 33CONTAINS NULL CHARACTER FOR FILLS :;CONTAINS # OF FILLER CHARACTERS REQUIRED i1 INSERT FILL CHARS. AF ERRINAL AVAILABLETM : SUSER DEF INED $BELL: .ASCIZ <207><377><377> ::CODE FOR BELL SCRLF: S F: .ASCII ASCIZ <1S> <12> SQUES: . gm INSYRUCTIOJ DAT : s CONTAINS ADDRESS OF DATA 'BAD' OF ..CWTAINS ADDRESS DSWR DDISP 17756 1775 177566 .BYTE $T ssSTART OF COMMON TAGS OCO0O0O0O0O0O0OO0OO0O=OO0O0O0O0O00O o $AUTO8: .BYTE b e 2SS RUSER S RRSIars b ) D ) cd D b wd and ) - - - D b - - = b —-d ) b d wd b b D b e b D D e e o D D D D d b e D ad D $TKB: $TPS: $TPB: 22838333333333833888838388333888333 SCMTAG: —d o D d e b 'THIS TABLE CNTAINS VARIOUS COMMON STORAGE LOCATIONS ;*USED IN THE PR :QUESTION MARK ..cmuss RETURN NE FEED CARRARARRAAAAAARNRAAAARAARRRRRAAAARAAAANARANNAAAAAAAARAARACANANCNES *S8TTL APT MAILBOX-ETABLE g82888888S NN CARRRRAAARAARAARANARRARRRRRRRARARARARNANAAARAARAARAAAAAAAAACCRACES *EVEN $MAIL: SMSGTY: SFATAL: STESTN: ASS: SDEVCT: .WORD .WORD .WORD .WORD . WORD -WORD AMSGTY AFATAL ATESTN APASS ADEVCT AUNIT AMSGAD AMSGLG KSSAGE APT ENVIRMNY TABLE FEED FLAG (BI1<075202¥ES) SEQ 0047 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 6-1 APT MAILBOX-ETABLE 881 1 SENV: SENVM: 9 001 001 001 000000 000000 .BYTE .BYTE $SWREG: .WORD SUSWR: .WORD $CPUOP: .WORD % AENV AENVM ASWREG :SAPT SWITCH REGISTER AUSWR :SUSER SWITCHES ACPUOP “CPU TYPE,OPTIONS Bifs 1s-11= TYPE 11/ $e ;t :t :Q 001%36 001237 000 000 I $MAMS1: .BYTE SMTYP1: .BYTE L ] AMAMSI AMTYP1 ‘e :t o 001240 000000 000 00124 000 0012 001244 000000 000 001246 000 001247 001250 000000 000 omzs; 000 00125 imo.R1: 000000 SDEVM: 001254 001256 001260 001262 000000 000254 000000 176700 001266 001270 000000 000000 001264 001272 .WORD : .BYTE SMTYP2: .BYTE SMADR?: .WORD : .BYTE SMTYP3: .BYTE SMADR3: .WORD 4: .BYTE SMTYP4: .BYTE SMADRG: SVECT1: SVECT2: $SBASE: . . .WORD .WORD $COW1: $COW2: .WORD . SETEND: AEXIT ; ;ENVIRONMENT BYTE : ;ENVIRONMENT MODE BITS .WORD AMADR1 AMTYP AMADR AMTYP AMAD AMAMS AMTYP4 AMADRS AVECT1 AVECT2 ABASE ADEVM ACDW1 ACDW2 81,11/05=02,11/20=03,11/40=04,11/45=05 o PDA=07,0=10 T 10=REAL TIME CLOCK T 98FL0ATING POINT PROCESSOR T 8=MEMORY MORY MANAGEMENT . I1GH Aooaess.n.s. BYTE (u BYTE) vfe MEM. "m 930 NSEC C 08" ;oo NSEC am =ooz 00 uss ..uxeu ADDRESS , BL MEM.LAST ADDR. -3 ams.ms WORD AND LOW OF ‘‘TYPE'* ABOVE ..uxcu ADDRESS ,M.S. BYTE : MEM. TYPE ,BLKA? ..HE .LAST "ADDRESS ,BLKA#2 HIGH ADDRESS M. S.BYTE YPE .BLKA3 :.HEH LAST ADDRESS ,BLKA3 ..HIGH ADDRES&:.S.BYTE M. TYPE ,BL : SMEM.LAST ADDRESS.BLK#% :: INTERRUPT VECTORA1,BUS PRIORITYA1 : INTERRUPT VECTOR#28US PRIORITYA?2 ..aAse ADDRESS OF EQUIPMENT UNDER TEST :DEVICE MAP ..CWTROLLER DESCRIPTION WORDA1 2 ;CONTROLLER DESCRIPTION WORDA#2 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7 SEQ 0048 USER DEFINED TAGS 001272 1767?0 001276 001 001 001306 001306 17254 17254 099104. 177546 000199 001274 omgw 001312 001322 001324 001326 001330 001332 000003 001334 001336 001340 001342 0013446 001346 001350 001352 001354 001356 .WORD PCLOCK: .WORD CLKFLG: .WORD -WORD NZ: STATIN: .WORD omgu 000074 001316 000000 001220 000000 000000 000000 000 SRMADR: SLKCSR: .WORD $LKCSB: .WORD SLPVEC: .WORD $LKS: .WORD SLLVEC: .WORD 1777 177777 000000 USER DEFINED TAGS SRMVEC: .WORD §" 001320 .SBTTL PACK: 000 176700 ; 5 17 1 754.6 1oo 30' DRIVE =SUNIT ATTN: .WORD O DRVNO: .WORD 0 .WORD O MASK: RETRY: .BYTE 0.0 3 000000 000000 000000 000000 000000 000000 000000 000000 177777 000 LSTAD: .WORD CHGADR: .WORD CFLAG: .WORD BADSEC: .WORD : .WORD MINUTE: .WORD SECOND: .WORD ONESEC: .WORD ZROIND: .WORD FRSTER: .BYTE O 0 3 001357 000 001360 000000 BYTE SAVER1: .WORD 0 O 001362 001364 001366 001370 001372 001374 001375 000000 000000 000000 000000 000000 000 000 SAVERS: .WORD ERCTR: .WORD LIMIT: .WORD 001404 m 0014 00141 00141 001414 00141 00142 001056 oou.s 001424 36 ECMSK1: .WORD ECWRD: .WORD ECGD: .WORD ECBADO: .WORD ECWRD1: .WORD ECGD1: .WORD ECBAD1: .WORD CYLIMT: .WORD SECLMT: .WORD 001376 001200 001402 000000 000000 000000 CMCNT: CMCYL: CMSEC: CMTRK: SVECTOR AD 5 *ADDR OF KW11=P STATUS nee‘sm SADDR OF KW11=P COUNTER BUFFER SADDR OF KW11=-P VECTOR :ADDR OF KW11=L STATUS REGISTER :ADDR OF KW11=L VECTOR $°0° IF KW11=P IS ON svsren $°0° IF A CLOCK IS AVAILABLE :60. IF 60HZ SYSTEM, S0. xr SOHZ SYSTEM : TYPE srmsncs' ino S'W' COMMAND INDICoa .WORD FAIRNS: .WORD sFIRST ADDRESS OF RH/RM REGISTERS ;DRIVE # STOMGE moas 1-58 10 SSAME AS USEDI *ATIN REG sromse moas1-5 ¢ 10 ‘DRIVE # STORAGE FOR mnrou *ERROR RETRY REGISTER MAS *ERROR RETRY LIMIT IN THE Louen BYTE amv COUNT IN THE UPPER BYTE MAXIMUM TIME IN QUEUE VALUE 0 O 0 O =1 0 STORE LAST MEMORY ADDRESS HERE :CHANGE RH/RM UNIBUS ADDRESS FLAG $"CONTROL C' FLAG *BAD TRACK/SECTOR FLAG :HOUR COUNT STORED HERE *MINUTE'S COUNT STORED HERE *SECOND'S COUNT STORED HERE STIMER ROUTINE COUNTER (FOR ONE SECOND) $ZERO INDICATOR FOR THE DATA COMPARE ROUTINE *DATA COMPARE ERROR FLAG :1F > 0, PROCESSING "DCKER® OR CAN'T MATCH PATTERN SIF < 0. MISCOMPARSION FOUND msconfimsmn OR CAN'T MATCH PATTERN FLAG eanoa IN BUFFER *SAVE R HE IF <0 :SAVE RS ms :NUMBER OF ERRORS :DISPLAY LIMIT .WORD *WORD COUNT .WORD .BYTE .BYTE .cvuuoen ADDRESS $SECTOR ADDRESS :TRACK ADDRESS *ERROR BURST BIT OFFSET *ERROR BURST WORD OFFSET (RELATIVE TO SECTOR) :CORRECTION MASK FOR FIRST ERROR WORD ECBIT: .WORD ECSEC: .WORD ECMSKO: .WORD 558. 30. *CORRECTION MASK FOR SECOND ERROR WORD SLOCATION OF FIRST ERROR WORD ; DATA, FIRST WORD :BAD DATA, FIRST WORD *LOCATION OF SECOND ERROR WORD ; DATA, SECOND WORD *BAD DATA, SECOND WORD :CYLINDER ADDRESS LIMIT :SECTOR ADDRESS LIMIT USER DEFINED TAGS 8814. 1430 001432 001434 001436 001440 001442 00081; 00105 001060 000000 000000 000000 000000 001444 000000 TRKLHt: .WORD "WORD e 'WORD rsryxs: -WORD -WORD DEC RDONLY: .WORD DRVPAR: .WORD 1; 559. 560. 8 8 & SEQ 0049 : TRACK mness LIMIT :1ST FE cu NDER :2ND FE CYLINDER $EXERCISE rs CYLINDERS ONLY=0, EXERCISE ENTIRE DISK=1 *DECREMENT TRK/SEC ONCE=0, ostnenem TRK/SEC TWICE=1 *NOT READ ONLY=0, READ ONLY= ‘WHEN DRIVES ARE BEING Assxcueo. o=cmwce DRIVE PARAMETERS O 1=D0 NOT CHANGE DRIVE PARAMETERS “THE LOW BYTE CONTAINS THE DRIVE NUMBER FROM WHICH XXDP: .WORD .SBTTL COMMON PARAMETERS *THE PROGRAM WASLOADED. THE HIGH BYTE CONTAINS THE S 'XXDP* DEVICE CODE FOR THE RMSO0. :THE FOLLOWING TWO LOCATIONS CONTAIN THE SOFT ERROR RATE WORDS USED TO 001446 002740 001450 005455 *DETERMINE END OF PASS WHEN THE PROGRAM IS DATA BIASED. n WILL TAKE APPROXIMATELY 3. 3 mses TO REACH THE SOFT ERROR RATE OF OR 10. PASSES TO REACH THE 90% 1x 10‘10 BITS (6.2 x 108 WOR 3 X 10‘10 ans (1 ars X 109 WORDS) READ. : CONF IDENCE LEVEL OF *ENDCON= LSB AND ENDCON+2= MSB ENDCON: .WORD oozng :(1.875 X 108 WORDS) OR (3 X 109 BITS) READ -WORD :THE FOLLOWING TWO LOCATIONS CONTAIN THE SEEK mon RATE WORDS USED TO *DETERMINE END OF PASS WHEN THE PROGRAM IS SEEK BIASED. TIT WILL TAKE 1 PASS TO REACH A SEEK ERROR RATE OF 1 X 106 SEEKS OR 3 *PASSES TO REACH A 90X CONFIDENCE LEVEL OF 3 X 10%6 sesxs. SENDSEK= LSB AND ENDSEK+2= MSB 001452 001454 015200 000006 001456 000031 001460 001462 001464 001470 000004 017400 000000 000000 000001 001472 000000 001474 000000 ENDSEK: .WORD -WORD MAXER: .WORD 015200 000006 25. ;(1 X 106 SEEKS) :MAXIMUM ERRORS ALLOWED PER DRIVE & 7936. 0,0 1 *NUMBER OF COMPARE ERRORS TYPED OUT :MAXIMUM WORD COUNT (31. SECTORS) SFIRST WORD IS THE PERFORMANCE TYPEOUT INTERVAL :(IN MINUTES). SECOND WORD IS THE INTERVAL COUNTER. .numsn OF PASSES TO END OF TEST LTHIS PARAMETER IS PATTERN: .WORD 0 *IF EQ O,RANDOMLY SELECT DATA PATTERN RANDWC: .WORD O CMPLMT: .WORD WRDCNT: _WORD INTRVL: .WORD PASSES: .WORD ED WHEN PROGRAM IS OPERATING IN AUTO RUN(CHAIN) :1F NOT EQ 0 SELECTONE SET OF PATTERN ED avfu *POINT .1&‘?»E%peGEueozm A RANDOM WORD COUNT *1F NOT EQ TO O, USE THE VALUE IN *WRDCNT' FOR 001476 000003 RATIO: .WORD 3 *THE WORD COUNT *READ/WRITE RATIO CRANGE 0 = 7] 20 = 15/1 1 - 751 % - &4/4 6 - 2/6 5 - 3/5 (READ/WRITE) on K CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 7-1 SEQ@ 0050 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-2 COMMON PARAMETERS 001500 000001 ENDING: .WORD 1 001502 000001 WRTCHK: .WORD 1 001504 000001 MESSAGE:.WORD 1 OF IC’ASSDE TSRHINED 5 X 108 WORDS) END OF PASS DETEM;NED COUNT. (4 X 105 SEEKS) : :1F EQ 0, : ;IF_NOT EQ 0, DO AN APPROPRIATE WRITE :CHECK AFTER EACH WRITE COMMAND. l EQ 0, SELECT WRITE CHECK COMMANDS sRANDOMLY. :IF EQ 1, DO NOT PRINT DATA ERROR MESSAGES :ASSOCIATED WITH OPERATOR SPECIFIED :BAD SECTOR AREAS. :IF NOT EQ 0, PRINT ERROR MESSAGES RELATING TO 001506 000000 RANDOM: .WORD 0 001510 000000 BADBLK: .WORD 0 : AREAS. .THESE SIF EQ TO 0, RANDOMLY SELECT wm\ BLOCK *ADDRESS. IF NOT EQU 0,SEQUENTIAL +SELECT DATA BLOCK ADDRESS *1F EQ TO1, THE BAD SECTOR ENTRY TABLE WILL ALWAYS as INITIALIZED WHEN ASSIGNING A DRIVE; IF EQ TO 0 THE BAD SECTOR ENTRY TABLE WILL ONLY BE INITIALIZED :IF THE HDA SERIAL NUMBER HAS CHANGED SINCE THE TLAST TIME IT WAS READ. (NOTE: IF THE SERIAL NO. HAS *CHANGED, THIS MOST LIKELY MEANS THAT THE HWDA OR DRIVE *HAD BEEN REPLACED WHILE THE DRIVE WAS DEASSIGNED) .SBTTL 001512 001514 000010 000004 VALUES FOR FIRST OPERATION BEGPAT: .WORD BEGCOD: .WORD 8. 4 ;STARTING PATTERN CODE [RANGE 1 - 15.] :STARTING COMMAND CODE CRANGE 0 - 5] :0 = WRITE CHECK DATA (*WCKL') :1 = WRITE CHECK HEADER l DATA ("WCHKHD® = NOT USED) i = WRITE DATA (°WRTDAT :3 = WRITE HEADER £ DATA ('WTHD' NOT USED) DD T') :’so = READ DATA ("RDDA 001516 0015 000400 256. READ HEADER & DATA ('RDHD') TARTING WRD CNT [RANGE 6 = WRDCNT] :$ BFWC: .WORD .SBTTL TABLES, CONSTANTS, AND VARIABLE LOCATIONS sLIST OF DRIVES PERFORHING COMMANDS 001522 000000 001532 001534 001536 001540 000000 000000 000000 000000 001542 000000 ORDERQ %} gls'g 3oooooEun o 001552 000000 -WORD £ ] oLt omsgo %8%8 001544 000000 .WOR D -WORD -WORD -WORD "WORD .WORD ASNLST: .WORD 0 sA BIT SET IS AN ASSIGNED DRIVE -ADDRESSES OF DRIVES TO BE DEASSIGNED DDRVS: .WORD '%8 -WORD CZRNAAD RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 7-3 "4 CABLES. CONSTANTS. AND VARIABLE LOCATIONS 001554 000000 WORD O 000000 000000 ‘WORD "WORD ‘WORD 0 0 WORD 00 001336 990000 000000 001560 001562 001364 NEWLY ASSIGNED DRIVES :ADDRESSES OF KEWUNT: WORD 0 001566 001570 001572 001574 001576 001600 001602 001604 001606 000 000 000000 000000 000000 000000 000000 000000 000000 001610 001612 001614 001616 001620 001632 001624 001636 001630 000000 000000 000000 000000 000000 000000 000000 000000 000000 :LIST OF DRIVES WAITING FOR BUFFERS/PARAMETERS AVAIL: .WORD _ 0 0 WORD 0 ‘WORD ‘WORD 0 0 ‘WORD 0 ‘WORD O ‘WORD ‘WORD 0 0 ‘WORD 001632 001634 001636 001640 001642 001644 001646 001650 001652 000000 000000 000000 000000 000000 000000 000060 000000 000000 :LIST OF DRIVES WAITING FOR BUFFERS GAIT: = .WORD _ 0 0 ‘WORD ‘WORD 0 0 ‘WORD "WORD 0 "WORD 0 WORD 0 "WORD 0 "WORD 0 001654 000000 001636 001662 Q0tese 001672 001676 001702 001706 000000 000000 000000 000000 000000 000000 000000 ‘WORD WORD WORD ‘WORD ‘WORD ‘WORD ‘WORD WORD :BUFFER ALLOCATION TABLE ENTRY COUNT 000000 000000 000000 000000 000000 000000 000000 g s ik 001738 200000 900000 001726 000000 0017 001738 001742 000 001746 0 0 0 0 0 0 0 O 00000 000 00000 000000 BUFTBL: .WORD WORD WORD "WORD "WORD "WORD "WORD [MORD 0O 0.0 00 00 00 0.0 00 070 i [WORD 070 ‘WORD O "WORD "WORD "WORD WORD 0.0 O O O’ SEQ 0051 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 7-4 SEQ 0052 TABLES, CONSTANTS, AND VARIABLE LOCATIONS 001752 000000 000000 000000 00000 oowgs 000000 001762 om;gg 001 001776 oosooz 00 oos 002012 002016 002022 000000 888888 JWORD 000 .WORD -WORD 0.0 8'° JWORD JWORD .WORD 000000 000000 000000 000000 000000 000000 000000 000000 JWORD .WORD .WORD .WORD 002072 002074 06312 065342 BLKADR: DRIVEQO DRIVE1 DRIVE2 ;ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 0 :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 1 :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 2 .WORD DRIVES :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 5 .WORD .WORD 060712 .WORD .WORD COMTBL: .BYTE .BYTE - .BYTE .BYTE .BYTE .BYTE 002104 002105 004 006 OPTBL: 00210 002110 002111 00211 0021 002121 0021 ; x - 8 0021 WCKD =1 WRTDAT =1 RDDAT RDHD :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 3 :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 4 :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 6 :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE 7 ;WRITE CHECK DATA :WRITE CHECK HEADER AND DATA (NOT USED) :WRITE DATA :WRITE HEADER AND DATA (NOT USED) :READ DATA :READ HEADER AND DATA :FUNCTIONCCOMMAND) CODE CONTROL TABLE & 6 012 014 01 BYTE BYTE BYTE 1 14 1 03 050 .BYTE .BYTE 010 .BYTE os 0 .BYTE .BYTE 825 .BYTE BYTE .BYTE .BYTE .BYTE 862 70 gr; 7 - oozn; DRIVE® DRIVE7 .BYTE .BYTE N g 002114 002115 DRIVE3 DRIVE4 :DRIVER COMMAND CONTROL TABLE (USED IN RM DRIVER) 151 377 161 377 17 173 oosng 00211 0.0 0.0 0.0 0.0 .WORD .WORD .WORD 002076 002077 002100 002101 002102 002103 oozwg 0.0 0.0 0.0 oaxvs mmeven BLOCK (DPB) POINTER TABLE 002056 045416 2060 047632 002062 052046 002070 0,0 0,0 0.0 8.0 0.0 0 000000 000000 054262 056476 0.0 .WORD .WORD JWORD .WORD JWORD 000000 000000 000000 002064 2066 0,0 .WORD 3.0 000000 000000 000000 88%80 oozogg 000000 002032 000000 002036 002042 002046 002052 .WORD EVEN 105 105 .BYTE 13 : SEEK sRECAL :DRIVE CLEAR :RELEASE :OFFSET *RETURN TO CENTERLINE *READIN PRESET *PACK ACKNOWLEDGE :SEARCH :WRITE CHECK DATA & 9 7 =~ :WRITE CHECK HEADER AND DATA :WRITE DATA :WRITE HEADER AND DATA :READ DATA :READ HEADER AND DATA s TERMINATOR SSAGE CONTROL TABLE FOR 'OPTBL® TABLE ANTBL: LASCIZ /SEEK 7 TABLES, CONSTANTS, AND VARIABLE LOCATIONS 0021 122 0gi7e 000204 002314 0uoes T2z 12 1 12 1 00g1% 00g16e 002 108 14 105 101 105 1O 101 103 101 g2 ] 106 13 103 Quoks 005554 00264 003374 g 157 137 132 003314 116 0033 105 1 128 11 15 103 122 122 106 106 117 009336 002330 003332 009335 002336 003340 009342 009344 5346 009350 002352 003334 002356 5360 002370 002430 002470 0025 002570 00 002670 002730 003770 003030 003070 0031 003170 003230 003370 00533242 8833;0 005366 003272 902379 002372 000000 000000 003376 003376 003400 002402 009404 002406 00241 003412 002414 00341 0024 g 002436 000000 000000 000000 /DRVCLR 7 /RELSE 7 /OFFSET 7 "ASCIZ "ASC1Z "ASCIZ 113 "ASCIZ /WCKD 7 "ASCIZ 7RDHD 7 "ASC1Z "ASCIZ "ASC1Z "ASCIZ 113 124 12 104 110 116 .EVEN _SBTTL 002324 ASCIZ /RECAL / 126 174 106 /RTC . 7 /READIN 7 7 /PACK 7SEARCH 7 "ASCIZ "ASCIZ "ASCIZ "ASCIZ /WCKHD 7 /WRTDAT / /WRTHD 7 7RDDAT 7 "ASCIZ /NONE / DATA PATTERNS -STANDARD DATA PATTERN POINTER TABLE §TNDAT: .WORD "WORD ‘WORD "WORD "WORD "WORD : "WORD "WORD "WORD "WORD "WORD "WORD "WORD ‘WORD DATAQ DATAI DATA DAT DATA% DATAS DATAG DATA? DATAS DATA9 DATA10 DATA11 DATA1 DATA1 DATA14 DA.A PATTERN 0 ; sSTANDARD D s STANDAR DATA PATTERN 1 sSTANDARD DATA PATTERN sSTANDARD DATA PATTERN sSTANDARD DATA PATTERN 4 :STANDARD DATA PATTERN 5 sSTANDARD DATA PATTERN 6 sSTANDARD DATA PATTERN 7 sSTANDARD DATA PATTERN 8 sSTANDARD DATA PATTERN 9 sSTANDARD DATA PATTERN 10 s STANDARD DATA PATTERN 11 s STANDARD DATA PATTERN 1§ :STANDARD DATA PATTERN 1 sSTANDARD DATA PATTERN 14 s STANDARD DATA PATTERN 15 ALL 0°'S PATTERN 'z”s‘;s;s %E SALL 1°S PATTERN ON "WORD BEIN0: orD .WORD 900000 000000 sALL 0'S DATA PATTERN ‘WORD [WORD "WORD "WORD 000000 000000 00000 000000 "WORD [WORD 00000 00000 [WORD [WORD " WORD " WORD * WORD S WoRD 00000 0000 00 00 000 g 800000 am SEQ 0053 CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 7-5 DATA PATTERNS 0024 00264 88 b 4 002440 88 “2 444 00244 002450 002452 002454 00245 0024 002462 2464 002466 1 ; ; 0000 000177 000;77 000777 001777 003777 [44d4 17777 037777 077777 177777 177774 177770 177760 177740 177700 2504 177600 002506 177400 002513 177000 176000 002512 002514 174000 002518 170000 160000 002520 002522 140000 002524 100000 002526 000000 002472 002474 002476 2500 002502 002530 000000 e 536 1177777 2540 DATA2: DATA3: 177777 08801 00 0; «WORD .WORD -WORD .WORD WORD .WORD +WORD .WORD «WORD .WORD .WORD WORD 0037 000077 081 77 8 377 0777 881 7?7 ;777 80 777 17777 037777 077777 177777 .WORD 177776 .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 177600 177400 177000 176000 174000 170000 160000 140000 100000 G00000 WORD .WORD WORD .WORD .WORD :STANDARD PATTERN 1 08 0 8 17 177774 177770 177760 177740 177700 .WORD 000000 WORD 177777 B e 1 77799 .WORD 177777 .WORD :STANDARD PATTERN 2 ;STANDARD PATTERN 3 o o i 002574 1 ;STANDARD 1 3 won 1 1 WORD 002602 133331 ‘VORD 133331 5 133331 005378 1330 1 1; SEQ 0054 28 1 9999 .WORD 177777 . fig o i 17 55§ 00 88 gg‘ 177777 8s o55 .WORD .WORD .WORD .WORD 17 002470 177776 002542 DATA1: i DATA4: .WORD PATTERN & oTM CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 7-6 SEQ 0055 CZRNAAQ RMBO PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 7-7 DATA PATTERNS s STANDARD PATTERN 5 s STANDARD PATTERN 6 :STANDARD PATTERN 7 CZRNAAO RMB80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-8 SEQ 0056 DATA PATTERNS g 1?1322 o Hises 1?1322 -WORD i 1§g§§g s JWORD 1 gsg 1é33 JWORD 1333 1; gg 133 g 15555 JWORD ATA8: .WORD 15555 "WORD WORD WORD 155 g 1 gg 3 gg 1 JWORD "WORD 13333 15555 .WORD 000001 1ssss§ 133333 ‘Yorp JWORD 15555 13555 133333 133333 ‘Yorp JWORD 133333 hs%%é 13333 155555 3030 000001 oooool.”uuuz oossgglz. 3036 000010 DATA9: ooon“ool.m 'fig 888810 003040 000020 -WORD -WORD 003046 900200 003050 000400 ‘YoRD -WORD 003042 026455 000040 00004 003052 881000 003054 002000 -WORD -WORD 10 2 003066 -WORD 100000 000260 33 016 ‘Yorb gsfi -WORD ~WORD 177778 003073 003074 17777 777 13777 DATAT0: MO 1 7§7 "WORD 177737 : .WORD 003076 oongg 17776 1772757 WORD WORD "WORD 17777 17776 177757 003106 177677 "WORD 177677 "WORD 176777 003102 003112 33 114 116 176777 175777 173777 et126 147 137777 003126 o%mr 003130 172666 sSTANDARD PATTERN 9 zg .WORD 88’;% 016000 &zoooo 00 040000 003064 sSTANDARD PATTERN 8 "WORD "WORD sSTANDARD PATTERN 10 175777 173777 = "WORD 137777 "WORD 077777 DATA11: .WORD 172666 sSTANDARD PATTERN 11 SEQ 0057 DATA PATTERNS 003132 1;5555 JWORD 155555 00314 ‘7§2"§ ~WORD "5222 ~WORD 197777 "WORD "WORD "WORD "WORD "WORD "WORD "WORD 176777 177377 177577 177677 177737 177757 177767 "WORD "WORD 17777 177776 003134 003136 1 gggg 15 1 o L s 1s§§?§ 00315 003154 '7§§°2 0031e0 133688 e 155555 003166 158888 03173 157777 003174 957777 003176 167777 003202 003204 003206 003210 003212 003214 003216 oosgzo 173777 175777 176777 177377 177577 177677 177737 177757 177767 003222 177773 003224 003226 177775 177776 ooszgg 153333 iy sl7 oosz% 1"??33; 003 % 24. 1 00324 50 1 ; gg 1 ; e 66 ; 00 ;3 999999 R 1772777 "WORD "WORD 1 gggg 15 B g o 15???? -WORD -WORD wzggg ‘YoRD 1738 o 145668 15%5?2 -WORD sSTANDARD PATTERN 12 .WORD QL7777 DATATZ: -WORD 1?7777 "WORD "WORD -WORD DATA13: .WORD o -WORD 173777 175777 1777; 153333 sSTANDARD PATTERN 13 -WORD g?fi?; '3833 1”??39; -WORD ~WORD 92222 flg ; -WORD ‘Yorp 183%% ~WORD ouu; sSTANDARD PATTERN 14 DATA14: .WORD ONES: .WORD 999999 sALL 1'S DATA PATTERN o "WORD 177777 {a) CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-9 SEQ 0058 DATA PATTERNS 88 10 12 1% 003316 38 00 00 003326 003326 1772717 JWORD 177777 177777 177777 177777 177777 "WORD "WORD "WORD "WORD 177777 177777 177777 177777 177777 177777 "WORD "WORD 177777 177777 127777 1727777 "WORD "WORD 177777 177777 177777 DATA1S: .ag 177577 0 000000 -WORD .u“ggg 000 5 -WORD -WORD 00 00 o s 000 % eS e 883888 88 sgsss 003354 .WORD i -WORD . - WORD 80 g 223 888888 000000 oog 88 258 883 000000 000000 sSTANDARD PATTERN 15 - {al CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 7-10 SEQ 0059 .SBTTL ERROR POINTER TABLE ;*THIS TABLE CONTAINS THE INFORMATION FOR EACH ERROR THAT CAN OCCUR. ;*THE INFORMATION IS OBTAINED BY USING THE INDEX NUMBER FOUND IN -'L‘gcepon SITEfli. I’;ISNUMBER INDICATES WHICH ITEM IN THE TABLE lS PERTINENT. MB IS O THE ONLY PERTINENT DATA IS (SERRPC). EACH ITEM IN THE TABLE CONTAINS 4 POINTERS EXPLAINED AS FOLLOWS: $«NOTE2: 003370 EM DH DT DF :;POINTS TO THE ERROR MESSAGE :;POINTS TO THE DATA HEADER EM1 DH1 DT 0 sRH CONTROLLER INTERRUPT OCCURRED (RMAS = 0) b sUNEXPECTED ATTENTION OCCURRED EM3 sNOT USED $ERRTHE ERROR 2 D ik =B DH DT b D 0 b ) e ERROR 3 o DH DT 0 NINOMNOND o :ERROR & EMS DH4 DT4 0 ;NOT USED EMS sADDRESS PLUG BIT CHANGED :ERROR § DH DT 0 ;ERROR 6 EM6 sNOT USED 0 S— 8 oo :sPOINTS TO THE DATA :;POINTS TO THE DATA FORMAT ERROR 1 b ubw%OOW\nbw-‘OOONOmbW- * 3 o 1 CZRNAAD RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 9 SEQ 0060 ERROR POINTER TABLE o ;THIS ROUTINE HANDLES UNEXPECTED TIMEOUTS BADTMO: MOV §4 38 sg 5 ze 6 S 003454 10«. 003464 00 S 7 0035 5 o1ool.3 8 003524 MOV RO,=(SP) TYPOC 10440 9 003526 000240 10 }1 003530 000404 012737 177777 ;SAVE PC WHERE THE TIME OUT OCCURED 001336 :SETUP FOR TYPING OUT PC NOP BR START1 :PUT "HALT(0)® INSTRUCTION HERE IF YOU WISH “TO STOP ON UNEXPECTED TIMEOUT. *BRANCH TO START1 START: MOV #-1,CHGADR :SET RH/RM ADDRESS CHANGE FLAG t§t1: wNOP #1,$TESTN #0 .6 ::SET TEST NUMBER IN APT MAIL BOX ;TTY LOOP, WAIT FOR INCREMENT *0F WORD :CLEAR THE WORLD JSBTTL START OF PROGRAM }% 15 003532 (SP) RO ST -(RO} ADJUST PC= nssrone STACK POINTER (SP)+,(SP)+ CMP ::TYPE ASCIZ STRING 658 TYPE GET OVER THE ASCIZ 4$ B8R ugss: LASCIZ <CRLF>/UNEXPECTED BUS TIMEOUT, PC=/ *START THE PROGRAM START?2 B8R }9 003540 000407 18 003542 012737 000400 001336 START1: MOV #400, CHGADR :CLEAR THE RH/RM ADDRESS CHANGE FLAG Y 3323332223222 3233322222232223322331311333313313333131333333333333244%;] 19 003550 (00240 - 003552 012737 000001 001212 MOV START2: INC 21 003560 005227 000000 BNE 2; 003564 001375 RESET 0035 z‘ 003566 gs 003570 003574 003576 3602 003604 003610 003616 003624 0036 003640 003646 0036564 3662 3670 3674 003702 oogn 716 3724 37 ; JSBTTL INITIALIZE THE COMMON TAGS (SCMTAG) AREA n'«;s ::CLEAR THE COMMON o1§m 001114 MOV ..mst LOCATION TO BE CLEARED 005026 CLR (nw CLEAR MEMORY LOCATION o #SUR,R6 CMP 022706 001154 001374 ans .6 $:L00P u IF NO $:SETUP THE STACK POINTER #STACK, SP 012706 oonoo ..mnmue A reu vecfoa 012737 oooosg MOV vsc ..smv;croa FOR ERROR ROUTINE 012737 00003 MOV mo utmvec 012737 0068 gg MOV &nb MP VECTOR FOR TRAP CALLS 12737 oggg& MOV #340 ahmweco LEVE 7 012737 4 MOV og?éou MPURYsc:;POWER FAILURE VECTOR 012737 3% 6 MOV #3460, 34PURVEC+2 ::LEVEL 7 012737 1 gzl. g 1 f MOV mggl.s.suxu $SPRIME THE RANDOM NUMBER GENERATOR 012737 123456 0371 MOV #123456.SLONUM - :BOTH NIGH AND LOW WORDS SWITCH REGISTER. IF NOT FOUND OR IT IS HARDWARE A FOR ;:SIZE SETUP FOR A SOFTWARE SWITCH REGISTER. “SEQUAL TO A *=1"", 137&9 MOV @FERRVEC,-(SP) ;:;SAVE ERROR VECTOR 0127 MOV #64S,IERRVEC ::SET UP ERROR VECTOR 012737 5 1154 MOV #DSWR, S $:SETUP FOR A MARDWARE SWICH REGISTER 12737 17757 °9"§8 MOV #DDISP.DISPLAY ::AND A HARDWARE DISPLAY REGISTE os 777 177777 1752 CMP a1, S3TRY TO REFERENCE HARDWARE SWR 001012 BNE 668 SSBRANCH IF NO TIMEOUT TRAP OCCURRED 03 12716 003736 648: BR m 65; #65$, (SP) SSAND THE MARDWARE SWR IS NOT = = S BRANCH IF NO TIMEOUT $3SET UP FOR TRAP RETURN SEQ 0061 CZRNAAD RMBO PERF EXER MCIO V04.00 14=JAN-82 15:16:58 PAGE 9-1 lNlHALllE THE C OMMON TAGS 003736 012737 752 012637 Qo37ee 0037 Q03763 003770 003772 004000 012737 658: 000176 000174 668: 001214 5037 000300 153737 001403 012737 678: 001230 gi Qo416 004130 004132 004140 005737 001012 123727 0014 023727 00100 104 00040 112737 msméc DISPLA (SP)+,a#ERRVEC ..aesroae ERROR VECTOR CLR #APTSIZE ,SENVM ..YEST USER SIZE WER APT YES,USE NON-APT SWITCH 67% ::NO,USE APT SWITCH REGISTER #SSWREG, SWR MOV BIT8 BEQ MoV :;CLEAR PASS COUNT SPASS ERRVEC #PR6,snkvec ;SETUP FOR UNEXPECTED TIMEOUT :LEVEL 6 _TYPE PROGRAM NAME ;:TYPE THE NAME OF THE PROGRAM IF FIRST PASS INC 177777 001226 000001 001154 000176 000001 001150 ..Fl ST Tl*’ dgs ::TYPE ASCIZ STRING s ;BRANCH IF 688 “298 BR «ASCIZ <CRLF>3CZRNAAO .SBTTL GET VALUE FOR SOF TWARE SUITCH REGISTER ;sARE WE RUNNING UNDER XXDP/ACT? wé2 TST TYPE 000042 -1 BNE 004030 004100 004100 004106 004106 004114 004116 004124 MOV MOV .SBTTL 005227 001027 104401 000424 ..POIN! TO SOFTWARE SWR sSETUP "'r'l,neour" TRAP VECTOR FOR UNEXPECTED BUS TIMEOUTS 12737 003450 ?oot.ooo g§ooaoo«, 012737 000300 004014 004020 004022 004026 MOV BNE ;?:: 708 ::BRANCH IF YES 70$ sBRANCH IF YES CMPB SENV. M CMP BNE GTSWR ;%.ISUREG BEQ BR Move hst OVER THE ASCIZ 0 PERFORMANCE EXERCISER@<CRLF> 718 #1,SAUTOB ..ARE WE RUNNING UNDER APT? ..SOFTUMEFSHITCH REG SELECTED? ;BRANCH IF NO ::GET SOFT=-SWR SETTINGS ::SET AUTO-MODE INDICATOK ;THE FOLLOWING FINDS OUT THE PROGRAM CONTROL MODE: :PAPER TAPE (MANUAL), ACT11, XXDP CHAIN OR DUMP 35 006140 36 004144 37 gou1s2 004154 39 00162 &0 004170 41 004172 42 004176 43 004202 4k 004206 0046210 005037 122737 001121 013737 122737 103002 105037 008737 001425 104401 000412 004236 45 004236 46 004240 47 004244 005046 113716 104403 50 004250 31 00425¢ 104401 000460 49 00ioe? 001444 000016 000041 00004 20000 001444 001444 Q11444 000042 ‘ 004212 001444 000 001203 CLR sCLEAR "XXDP*' LOAD DEVICE STORAGE CMPB 16.3“1 ? .LOADED FROM AN RM80 MOV a#40,XXDP ’;XXDP sGET DEVICE INDICATOR NO NUMBER {S IT A VALID NUMBER CLRB XXDP chun MODE OR ACT11 mro ACCEPT ? MP8 18: XXDP TST BEQ TYPE B8R ?42 73s 728 :BR_IF NOT S DEFAULT TO DR { *BR IF NEITHER ..me ASCIZ STRING GET oven THE ASCIZ 72;3: JASCIZ <CRLF>/NOT tssnhéDRIVE / CLR -(SP) MOVB XXDP, (SP) TYPOS 1 BYTE ‘BYTE 0 TYPE ;cm $ CLEAR WORD ON STACK cst DRIVE ADDRESS :TYPE THE ADDRESS SONLY 1 CHARACTER sumsss LEADING ZEROS *CR=-L *GET NUMBER OF DRIVES 2 SRReers proR szasassass § ORSESe S28P SRS RERER o X NN N W &H w s NNSSELRS SS 88089250283 RIRARIY SEQ 0062 a® el : < a2 = Vi wviss NN~ VIS 88%?7 1055 104401 000410 005046 113716 10440 001 000 104401 000432 sEsaszasess A RONERRSERERRRIISN 28: 177777 004272 %;sn 001444 105737 001415 105737 001403 ii’“’ 001226 001256 105737 001150 004737 100674 013737 013737 005037 012705 005025 022705 001374 012706 005037 013 001272 001274 001316 001520 002056 001100 177776 001314 001344 001346 001350 8814 132 001240 045542 047756 052172 osu.og 5662 1036 3252 5466 1440 1 001274 48: 005737 001262 001411 013737 001262 001272 000405 005 005 005 005 005 005 005 005 00503 005 005 032 00140 #-1 BR 743 BNE TYPE 58: 78: 001352 174304 sNO *:TYPE ASCIZ STRING *:GET OVER THE ASCIZ -(SP) CLR MOVB XXDP, (SP) TYPOS BYTE 1 BYTE 0 :CLEAR WORD ON STACK *GET DRIVE ADDRESS *TYPE DRIVE ADDRESS SONLY 1 CHARACTER *SUPRESS LEADING ZEROS BR $:GET OVER THE ASCIZ 768 is *;TYPE ASCIZ STRING LASCIZ 7. HALT PROGRAN, CLEAR LOC. 40 AND RESTART PROGRAM./<CRLF> JSR PC,S$TKINT :TURN ON THE KEYBOARD INTERRUPT BEQ TSTB BEQ 58 SVECT1 4 *NO,DO NOT BOTHER SVECT1,SRMVEC :NEW VECTOR $AUTOB :RUNNING IN AUTO MODE ? PC,BUSADR :CHECK RH/RM BUS ADDRESS MOVB ST BEQ MOV B8R TST8 SENV $BASE 6$ $BASE,SRMADR 6$ BNE £5 MOV MOV CLR MOV CLR CMP BNE MOV iR MOV CLR CLR CLR CLR CLR CLR CLR CLR CLR CLR CLR (LR CLR CLR CLR BIT SRMADR,RMADR SRMVEC .RMVEC STATIN #ORDERQ,RS (RS)+ #BLKADR RS 78 #STACK, SP s HZ ,ONESEC HOUR MINUTE SECON INTRVL +2 PACK CFLAG DRIVEO+SFIRST DRIVE1+SFIRST DRIVE2+SFIRST DRIVES+SFIRST DRIVEL+SFIRST DRIVES+SFIRST DRIVEG+SFIRST DRIVE7+SFIRST RDONL Y #SW0, aSWR JSR 040310 6$: 040312 3s 75$ ;FIRST TIME THRU HERE ? JASCIZ <CRLF>/TO TEST DRIVE / TSTB 001256 113737 INC TYPE 004332 004727 033326 1002 S 00447 e ey RS F EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 9-2 OF TWARE SWITCH REGISTER BEQ 8s *RUN UNDER APT MODE *NEW VECTOR ? *NOT LOAD IF = 0 *NEW BASE ADDRESS ? *NO ;NEW BASE ADDRESS YES :LOAD ADDRESS INTO DRIVER :LOAD VECTOR INTO DRIVER :CLEAR PERFORMANCE SUMMARY TYPEOUT FLAG :START OF AREA TO CLEAR :LOOK FOR END OF CLEAR AREA *BR IF NOT FINISHED *SETUP THE STACK POINTER :CLEAR THE PROCESSOR STATUS WORD *RESTORE ONE SECOND COUNTER VALUE :CLEAR THE HOUR'S COUNTER :CLEAR THE MINUTE'S COUNTER *CLEAR THE SECOND'S COUNTER :CLEAR_INTERVAL COUNTER :SET *T' & CLEAR 'R* OR W' COMMAND FLAG SCLEAR THE *CONTROL C* FLAG :RESET SFIRST FLAG FOR DRIVE 0 :RESET SFIRST FLAG FOR DRIVE 1 :RESET SFIRST FLAG FOR DRIVE g :RESET SFIRST FLAG FOR DRIVE :RESET SFIRST FLAG FOR DRIVE & :RESET SFIRST FLAG FOR DRIVE 5 :RESET SFIRST FLAG FOR DRIVE 9 :RESET SFIRST FLAG FOR DRIVE :ASSUME READ/WRITE CONDITI *1S EXERCISER IN *READ ONLY®' MODE ? :BR IF NO CZRNAAO RMB0 PERF EXER MACRO V04.001-JAN-82 15:16:58 PAGE 9-3 L S SEQ 0063 GET VALUE FOR SOFTWARE SWITCH REGISTER 107 004652 }33 004656 005237 001440 M 8s: INC RDONLY :LOCK PROGRAM IN "READ ONLY' MODE -AUTO SIZE FOR RH70 CONTROLLER AND DETERMINE IF IT IS }}g *JUMPERED FOR 22 OR 32 REGISTERS 114 004656 005037 040316 SIZE70: CLR 042737 174000 001234 115 004 116 004670 013746 000004 004746 000004 117 004674 012737 118 004702 013700 001272 000050 oegr 119 0047 120 00471 012701 000012 121 004716 005720 122 004729 005720 123 00472 012737 000050 040316 126 004730 005720 1$: 125 004732 005301 126 004734 001375 127 004736 012737 000074 040316 128 004744 000403 BIC MOV MOV MOV ADD MOV TST ST MOV TST DEC BNE MOV B8R ;31 004752 RTI 1;3 004746 012716 004754 28: 132 004754 013700 001272 38: 137 004776 022711 000003 133 004760 134 004764 135 004766 136 004770 138 005000 139 005002 140 005006 141 005010 14% 005012 }25 005020 000002 013701 040316 001415 060001 052710 001400 001007 005011 033710 001400 001003 052737 030000 001234 012637 000 4S: RHEXT #174000,8CPUOP ERRVEC ,=(SP) #2% ,ERRVEC $RMADR, RO #50,R0° #10..R1 (RO)# (RO)+ 050 RHEXT MOV 5+ 1s #74 ,RHEXT 3s :CLEAR RMBAE OFFSET AR CPU TYPE REGISTER :CLE :SAVE CONTENTS OF ERROR VECTOR *SETUP 'TRAP' RETURN ADDRESS :GET RMCS1 ADDRESS *GET REGISTER OFFSET FORRH70 GE NUMBER OF REGISTERS TO CHECK TRAP IF NOT A VALID WE TRAP IF NOT A VALID RMCS3 .I.OAD OFFSET FOR RMBAE (22 REGISTER RH) JTRAP IF NOT A VALID REGISTER *DONE WITH ALL 32 REGISTERS ? *BR IF NO *LOAD OFFSET FOR RMBAE (32 REGISTER RH) ¥38,(SP) ;SETUP RETURN ADDRESS MOV $RMADR, RO :GET RMCS1 REGISTER CMP #3, (R1) *ARE THE EXTENDED BITS SET IN RMBAE ? MOV BEQ ADD BIS BNE CLR BIT BNE BIS MOV RHEXT ,R1 4 RO,R1 Mi?!Mé.(RO) 43 GET RMBAE REGISTER OFFSET *BR IF NONE *GET RMBAE REGISTER SET EXTENDED ADDRESS BITS IN RMCS1 :BR IF NO (R1) CLEAR EXTENDED ADDRESS BITS IN RMBAE A17'A16,(R0) :ARE THE EXTEND BITS CLEAR IN RMCS1 ? X *BR IF NO #BIT13!BIT12, SCPUOP :SET-THE 11/70 CPU TYPE CODE (SP)+ ,ERRVEC RESTORE CONTENTS OF ERROR VECTOR 146 :ROUTINE TO DETERMINE BUFFER MAX WORD COUNT AND FUDGE HDA SERIAL NUMBER }23 :LEAST ONE TIME. 147 :TO ALLOW BAD SECTOR FILE(DEC144) TO BE READ FROM EACH DRIVE AT 150 005024 151 005030 152 005227 001027 177777 005032 .013509 172777 soag 005052 005056 05221 osaazg 05664 1053 3;7 5 10054 SIZMEM: INC BNE 155 005036 010037 045562 005042 010037 04777 005062 005 00507 156 005076 010037 010037 010037 010037 10037 1oo§7 004737 157 005102 013737 10067, 1334 158 00511 812737 000001 001654 18: 159 005116 1;7;7 102 gg 001658 160 0051264 013737 001 00166 MOV MoV MOV MOV MOV MOV MOV MOV MOV JSR MOV MOV MOV MOV #-1 1$ #-1,R0 :FIRST TIME THRU HERE ? *BR IF NO *FUDGE MSB'S FOR INITIALIZING HDA S/N RO,DRIVEQ+SHSNM ;INIT. S/N FOR DRIVE 0 RO.DRIVE1+SHSNM :INIT. S/N FOR DRIVE 1 RO.DRIVE2+SHSNM :INIT. S/N FOR DRIVE g ROCDRIVES+SHSNM :INIT. S/N FOR DRIVE RO.DRIVE.+SHSNM :INIT. S/N FOR DRIVE & RO.DRIVES+SHSNM :INIT. S/N FOR DRIVE S RO.DRIVE6+SHSNM : INIT. S/N FOR DRIVE RO.DRIVE7+SHSNM :INIT. S/N FOR DRIVE PC.SSIZE *SEE HOW MUCH MEMORY ON SYSTEM SLSTAD,LSTAD :SAVE THE LAST ADDRESS #1,8UF fBL *LOAD NUMBER OF BUFFERS #ENDPGM, BUFTGL*Z STARTING ADDRESS OF BUFFER LSTAD,BUFTBL+4 ;LAST ADDR TO BUFFER ALLOCATION TABLE CZRNAAO RM8O PERF EXER MACRO V04.00 14~JAN=-82 15:16:58 PAGE 9-4 mnS SEQ 0064 GET VALUE FOR SOFTWARE SWITCM REGISTER 161 005132 023727 001334 160000 163 005142 012737 16§ 00514 10140; 160000 001660 164 005150 162737 102200 001660 28: 165 005156 000241 166 005160 006037 001660 167 005164 162737 000144 001660 168 005172 169 005176 105737 001403 001150 170 005200 162737 003000 001660 171 005206 023737 001462 001660 3$: 17§ 005214 173 005216 174 005224 };2 005232 003406 013737 013737 001660 001462 001462 077470 179 005232 005737 037716 180 005236 001154 184 005244 185 005250 186 005252 105737 001407 032777 001150 191 005270 005037 001340 193 005300 104411 000004 187 005260 001003 188 005262 104401 076674 }33 005266 000466 104401 076562 194 005302 012600 195 005306 005737 196 005310 001350 001340 197 005312 198 005314 199 005316 105710 001451 105760 000001 201 005324 202 005330 203 005332 122710 001443 122710 000131 200 005322 001006 204 005336 205 005340 5sm.nboooo 48: ~ ;OVER 28K ? MOV $ #160000,BUF TBL +4 *NO TSTB BEQ $AUTOB 3s *RUNNING IN AUTO MODE ? *BR IF NO 4$ :BR IF NO SUB cLC ROR SUB SUB CMP BLE MOV MOV :XXDP MAX MEMORY 28K *SUBTRACT PROGRAM SPACE :CLEAR THE 'C' BIT *CONVERT TO WORD COUNT BUF TBL +4 #100. ,BUFTBL+4 :SAVE ROOM FOR THE °‘ABS® LOADER #ENDPGM, BUF TBL +4 #1536. ,BUFTBL+4 :SUBTRACT °'XXDP' LOADER SIZE WRDCNT BUFTBL+4 :1S MAX WORD COUNT TOD LARGE ? BUFTBL+4 ,WRDCNT :USE MAX AVAIL MEMORY AS MAX WRD CNT WRDCNT ,PARLST+2 :VALUE FOR THE PARAMETER TABLE ;SEE IF THE OPERATOR WANTS TO CHANGE ANY PARAMETERS m 192 005274 CMP BLOS 001403 104401 076341 5?8 005354 104401 076756 511 005360 104401 076646 1§ 005364 %1 005366 1% 005370 104411 012600 005737 16 005376 17 005400 18 005402 10571 001417 105760 000001 20 005410 122710 000131 19 005406 og1 PWRFLG SETVEC ;RETURNING FROM POWER FAIL ? *BRANCH IF YES BNE TYPE BR 1% FEONLY &3 *BR IF YES “TYPE FE CYLINDERS ONLY MESSAGE TST8 BEQ BIT 173674 18: 001340 CLR TYPE RDL IN MOV TST BNE IST8 BEQ 1ST8 | 000116 206 005344 00073; 207 005346 005737 001440 208 005352 001002 15 005374 oo1313 LKPAR: TST BNE 28: 38: BNE CFLAG .MESFE (SP)+,R0 LKPAR CFLAG (RO) 78 1(R0O) 2 CMPB BEQ CMPB #'Y,(RO) 7 #'N, (RO) B8R ST BNE LKPAR RDONL Y 4 BEQ TYPE TYPE 48: SAUTOB 1$ #SW02,aSWR TYPE RDLIN MOV ST BNE 1ST8 BEQ 1ST8 BNE CMP8 3s ,BADENT ,OVRWRT ,SURE *RUNNING IN AUTO MODE ? :BR IF NO *DOES USER WANT MANUAL INTERVENTION ? :CLEAR CONTROL C FLAG STYPE "EXERCISER FE CYLINDERS ONLY ?° *READ THE ENTRY *SAVE ADDRESS OF RESPONSE *WAS IT CONTROL C ? *BR IF YES *WAS RESPONSE A CARRIAGE RETURN ? *BR IF YES *WAS IT TERMINATED WITH CARRIAGE RETURN ? *BR IF NO *WAS IT A "Y' RESPONSE ? *BR IF YES *WAS IT A "N RESPONSE ? *BR IF YES *TYPE BAD ENTRY MESSAGE STRY AGAIN *PROGRAM RUNNING IN READ ONLY MODE ? *BR IF YES (DO NOT TYPE OVERWRITE MESSAGE) STYPE DATA OVERWRITE MESSAGE ;TYPE "ARE YOU SURE ?' (SP)+,R0 CFLAG *READ THE ENTRY *SAVE ADDRESS OF RESPONSE *WAS IT CONTROL C ? (RO) 78 1(RO) *WAS RESPONSE A CARRIAGE RETURN ? :BR IF YES *WAS IT TERMINATED WITH CARRIAGE RETURN ? LKPAR 58 #'Y,(RO) *BR IF YES :BR IF NO SWAS IT A "Y' RESPONSE ? SEQ 0065 14=JAN-82 15:16:58 PAGE 9-5 ZRNAAO RM80 PERF EXER MACRO V04.00 REGISTER VALUE FOR SOFTWARE SWITCH 001406 1 005414 g 54.13 122710 000116 54622 001406 58: %4. 005426 104401 076341 749 S 0056 26 005432 005237 001434 000402 227 005436 68: 78: %%g 005440 104401 076674 8s: 30 005444 005737 001440 31 005450 232 005452 534 005456 35 005462 236 005466 237 005470 001402 104401 005037 105737 001040 104401 38 005476 104411 077131 001340 001150 077576 98: 6$ BEQ CMPB #°N, (RO) 78 BEQ TYPE BR INC B8R BADENT $ FEFLAG 13 ST RDONLY TYPE BEQ TYPE CLR TSTB E TYPE RDLIN 39 005476 012600 240 005500 005737 001340 241 005506 001364 MOV ST BNE 245 005516 001006 46 005520 122710 000131 47 005524 001406 BNE CMPB BEQ TST8 BEQ IST8 zt.g 005506 105710 243 005510 001427 244 005512 105760 000001 248 005526 122710 000116 249 005532 250 005534 g? 005540 253 005542 254 005546 255 005552 256 005560 %gg 005562 001416 108: 104401 076341 000746 ENTPR: 012703 077466 737 031030 023727 001462 000006 103003 012737 000006 001462 ,FEONLY 9 TYPE BR MOV JSR CMP BHIS MOV ‘BR IF YES *TYPE BAD ENTRY MESSAGE *TRY AGAIN *EXERCISE THE ENTIRE DISK :TYPE FE CYLINDER ONLY MESSAGE :1S PROGRAM LOCKED IN ‘‘READ MODE'* ? *BR IF NO ,MREAD CFLAG SAUTOB SETVEC ,ASKPAR *TYPE READ ONLY MESSAGE :CLEAR CONTROL C FLAG *RUNNING IN AUTO MODE ? :BR IF YES STYPE 'CHANGE PARAMETERS ?' (RO) SETVEC 1(RO) *WAS RESPONSE A CARRIAGE RETURN (DEFAULT °N')? *BR IF YES *WAS IT TERMINATED WITH CARRIAGE RETURN ? (SP)+,RO CFLAG 98 108 ENTPR #'Y, (RO) CMP8 #°'N, (RO) BEQ :BR IF YES SWAS IT A 'N' RESPONSE ? SETVEC BADENT 13 #PARLST ,R3 PC,PARENT WRDCNT, #6 SETVEC #6,WRDCNT *READ THE ENTRY *SAVE ADDRESS OF RESPONSE *WAS IT CONTROL C ? :BR IF YES *BR IF NO “WAS IT A "Y' RESPONSE ? *BR IF YES ‘WAS IT A °N' RESPONSE ? :BR IF YES *TYPE BAD ENTRY MESSAGE :TRY AGAIN :PARAMETER TABLE ADDRESS “GET THE PARAMETER ENTRY *IS THE 'WRDCNT' VALUE OK ? *BR IF IT IS *SET 'WRDCNT' TO THE MINIMUM VALUE 259 :DISPLAY DRIVE STATUS AND SET UP THE OTHER SYSTEM DEVICES THAT ze; 005570 ool.rgr 023422 SETVEC: JSR *THE PROGRAM WILL USE. PROGRAM RETURN HERE ON POWER FAIL ::;gg 63 005574 004737 0403;; 6% 885600 1;737 177777 227 17777 65 005 88561 5737 037716 1994 68 g %osz 000004 71 scg‘ 5004 ;g 8856 5640 104431 104401 7% 005646 010446 104403 0036s8 00z 855501 001203 18: 28: #-1 gsgoz.asun . gregu't‘o;ue DRIVE STATUS TABLE ? #-1,SAVEFG BEQ 1$ ST BNE PWRFLG 1$ CLR R g'x‘g 173324 TYPE TYPE MOV TYPOS .BYTE :START THE CLOCK SINITIALIZE THE RM DRIVER *SET THE SAVE REGISTERS FLAG :FIRST TIME THRU ? PC.RMINIT MOV INC 1407 561 005 73 040252 JSR PC,CKCLK ,SYSTAT $CRLF Ré,=(SP) 2 *BR IF YES *RETURNING FROM POWER FAIL ? *BRANCH IF YES :DRIVE TABLE POINTER STYPE STATUS HEADING $CR=LF $:SAVE Ré FOR TYPEOUT $:TYPE DRIVE NUMBER ::60 | TYPE==OCTAL s:TYPE 2 DIGIT(S) ASCII il SEQ 0066 GET VALUE FOR SOFTWARE SWITCH REGISTER 001020 280 005 281 005672 105764 001404 : :SUPPRESS LEADING ZEROS BNE 6 :BR IF ONLINE TST8 BEQ gnvrvp(a4> $ TYPE BR NOTPRS f1s :DRIVE NOT PRESENT sCHECK NEXT DRIVE UNTOFF ;DRIVE OFFLINE sPRINT DRIVE TYPE TSTB BMI 76 77 005662 100416 %;3 005664 BLNKS& BYTE TYPE 5651 104401 075231 75 §3sesg 005656 105764 040164 040174 B8PL TYPE B8R DRVSTA(R4) g 111 NOTRM f1s 282 005674 100006 283 005676 104401 %gg 005702 000433 075403 286 005704 104401 075420 38: 289 005712 104401 075312 48: TYPE BR 13 292 005720 104401 075454 58: TYPE NOTSAF 295 005726 296 005732 005737 001406 001444 68: 298 005740 001003 299 005742 104401 300 005746 000411 075464 %g; 005710 000430 %39 005716 000416 532 005724 000413 297 005734 301 005750 302 005754 123704 104401 104401 001444 075323 075233 78: 8s: BR 13 ST BEQ XXDP 78 CMPB XXDP,R& TYPE ,UNTON BNE TYPE BR 78 LODEV i1s 316 005772 005204 118: 317 0057764 020427 318 006000 001317 319 006002 ggg 006006 104401 000010 001203 128: sBR IF NONEXISTENT :DRIVE UNSAFE sPRINT DRIVE TYPE ;LOADED FROM THIS DEVICE ? :BR IF NO sLOADED FROM THIS DRIVE ? :BR_IF NO sTYPE 'LOAD DEVICE' ;DRIVE _ONLINE .WORD O sTYPE THE DRIVE TYPC MESSAGE sMESSAGE ADDRESS HERE INC R4 BNE 2 #SRM80, 108 08: sSEE IF OFFLINE OR NONEXISTENT .BLNKS2 TYPE MOV TYPE 000000 *CHECK DRIVE'S STATUS IF UNSAFE *BR sTYPE 2 BLANKS gpwwmmrmmowm 98: 313 005766 104401 g}g 005770 :TYPE 4 BLANKS CMP TYPE R4 ,48. ,SCRLF sASSUME ADDRESS COF RMB0O MESSAGE : INCREMENT DRIVE NUMBER/TABLE POINTER FINISHED ? 'BR IF NOT ‘CR=LF W CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 9-6 GET VALUE FOR SOF TWARE SWITCH REGISTER ;INITIALIZE PROGRAM PARAMETERS FOR STARTUP 1 STA: g4 00601 004737 onnass 0157 14 002740 00145 5 006020 9 0060§g 006032 8 006034 9 006042 }? 006050 012737 105737 001411 012737 012737 012737 005455 1§ 006056 13 006062 14 006064 }g 006070 105737 001003 005737 003456 001150 17 006072 18 006074 19 006076 005001 00500 00500 20 006100 21 006104 2§ 006103 23 006112 24 006114 25 0061%0 26 006122 F44 0061%6 28 006132 29 006136 30 006142 g} 006146 006152 33 006156 34 006162 35 006166 36 006172 37 006174 gg 006202 40 006203 41 006210 45 006212 00573 0g1403 123701 001435 105761 00363; 11013 016300 004737 004737 004737 004537 01002; 0047 oosogg 0057 001005 112760 004737 001226 #00545 ~ENDCON+2 SENV ;APT :NO 1$ SCRIPT MODE, THEN MAKE IT RUN 2 MIN. sSPEED UP TEST sINITIALIZE QUICK XFER COUNT(LSB) 18: $AUTOB 2s CHGADR 13 sRUNNING IN AUTO MODE ? :BR IF YES :zsART AT 200 ? 28: 21 sDRIVE # JAVAIL TABLE INDEX g :DRIVER + :LOADED FROM THI® DEVICE ? :BR IF NO #79777 ,ENDCON #27 ,ENDCON+2 001336 3s: 48: RS XXDP 48 XXDP,R1 7$ DRVSTA(R1) 7$ R1,GEND BLKADR(R3) ,RO PC,RECALO RS.GETADR RO.NEWUNT (R2) PC.DRVPRM $F IRST(RO) PWRFLG 78 #-2,$PACK(RO) PC.WRTPK 000026 7$: 45 882556 000403 001340 ;sINITIALIZE THE KEYBOARD INTERRUPT HANDLER 02740 ,ENDCON : INITIALIZE XFER COUNT(LSB) #1,RATIO r Q0tade orvre 000027 00145 022322 005201 880157 £0% W :8 $TKINT 8$: 9%: (R3)+,(R2)+ R1 R1,47 38 $HGADR $ sLOADED FROM THIS RIVE ? :BR IF YES sDRIVE ON LINE ? :NO sGET DRIVE NUMBER :LOAD DPB ADDRESS sRECALIBRATE DRIVE :CLEAR DPB BLOCK sGET DRIVE (MBA) SERIAL NUMBER sRETRIEVE BAD SECTOR FILE :LOAD DP8 ADDRESS TO ABAIL QUEUE sSETUP DRIVE PARAMETER LIMITS sRESET SFIRST FLAG FOR FIRST 204 START sRETURNING FROM POWER FAIL ? sBRANCH iF YES sSETUP COMMAND °‘WT' (WRITE DATA AND TEST) sSETUP. INITIAL PARAMETERS : INCREMENT INDEX DR E *NEXT DRIV sNEXT .sALL DRIVES ASSIGNNED ? :NO sCLEAR START FLAG sDUMMY *CONTROL C* FLAG sCLEAR POWER FAIL FLAG E T) SEQ 0067 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 10 RM80 PERF EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 11 gmuo 3 005737 001340 §4 006240 006244 001407 S 006 "S 005737 001520 6 006252 0014 ; .SBTTL MAIN PROGRAM 1$: BEQ ST BEQ MAIN: TST JMP JSR D 6 INTERRUPTED ? :KEYBOARD *BR IF NOT Sms B SANY mves IN ORDER QUE ? gaoeno *BR IF NO, ELSE $ ALL 6n1ves FINISH ORDER SLET seavxcs THE KEYBOARD IDLE PC.KSR 000137 007104 78 006254 60 004737 025254 ;s: }1 :CHECK FOR DRIVES TO BE DROPPED 13 006264 000240 000010 1§ 006266 015703 012705 001544 1% 006272 15 006276 16 006300 17 006302 18 006304 19 006306 gg 006310 22 006312 23 006316 24 006320 25 006322 26 006326 005715 001904 005725 005303 001373 000435 012701 001610 005717 001404 021115 $: MAINDA: MOV 1$: 28: 38: 48: 001412 000772 012701 001632 005711 001760 021115 001402 005721 000772 011100 %0 006340 1 006 4 006370 43 006374 4% 006376 22 006402 1ou.g1 076003 004737 023714 104401 075617 005015 004737 020750 000737 39 006354 104401 001203 58: 68: 78: : 11 FOR DEBUGGING ' #8. ,R3 ;:DRIVE COUNTER :ADDRESS OF °‘DROP DRIVE®' TABLE *SEE IF ENTRY AT PRESENT POSITION :BR IF THERE IS ONE :INCREMENT TO NEXT TABLE POSITION *DECREMENT DRIVE COUNTER *BR IF MORE TO CHECK :GO CHECK FOR NEW ASSIGNED DRIVES ;ADDRESS OF 'AVAILABLE DRIVES' TABLE ? SIF AT END OF 'AVAIL® TABLE :BR IF YES “1S DRIVE IN "AVAIL®' THE TABLE ? MOV ST BNE ST DEC BNE B8R MOV ST BEQ CMP cooévs RS (RS) 3s (RS)+ R3 1% MAIN1 #AVAIL R (R1) 5% (R1), (RS) ST (R1)+ *NO, ,SCRLF :CR=LF BEQ 27 006326 oos7;1 28 006330 30 006332 31 006336 sg 006340 33 006342 006344 35 006346 39 006350 38 006352 NOP SEQ 0068 78 BR MOV ST BEQ CMP BEQ ST BR MOV 4 MAIT, R (R1) 28 (R1),(RS) 78 (R1)+ 6$ um.no TYPE JSR TWPE CLR JSR BR DEASSG PC, SUMARY STARS RS) Pg,CMPRES TYPE :BR IF YES INCREMENT °AVAIL®' TABLE ADDRESS SAND CONTINUE LOOKING sADDRESS OF THE ‘WAIT* BUFFER TABLE AT THE END OF 'WAIT' TABLE? :BR IF YES :1S DRIVE IN THE °WAIT® TABLE ? :BR IF YES *NO, INCREMENT °'WAIT® TABLE ADDRESS *AND CONTINUE LOOKING .PUT THE DRIVE'S BLOCK ADDRESS IN RO :TYPE 'DRIVE DEASSIGNED' STYPE THE DRIVE'S PERFORMANCE SUMMARY STYPE ‘wens.. ETC’ SCLEAR THE ‘DROP DRIVE' TABLE ENTRY :COMPRESS THE RESPECTIVE TABLE *SEE IF ANY MORE DRIVES ;LOOK FOR DRIVES TO BE ASSIGNED 2; 49 006404 012703 51 00641 s; 006414 oosoo; 00500 54 0064 1935 50 oou.tg 005001 000010 MAINT: 5 oows 885765 001566 18: 0%45e 003561 259 0064 oosios e MOV #8..R3 :DRIVE COUNT CLR CLR R R S'AVAIL® INDEX *NEW DRIVE INDEX CLR ST BNE R1 NEWUNT (RS) 3$ o DECSRRR3 *ASSIGN LIST INDEX ~ *NEW DRIVE IN THIS POSITION iBR IF THERE IS ASSIGN INDEX S INCREMENT DRIVE COUNT *DECREMENT CZRNAAO RHBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 11-1 SEQ 0069 RAIN 1$ 1371 2 008435 D00ess 59 6] 006436 62 006uss 63 006446 104401 104401 010146 006450 00645 10440 66 006454 65 006460 104401 005762 001203 075304 3s: 79 006522 80 006526 81 006530 82 006532 83 006536 8 006540 85 006546 86 006554 87 006560 88 006564 89 006570 %0 006574 91 006600 98 006604 % 006610 95 006612 99 0066 100 006632 101 -l g R1,=(SP) ..SAVE m FOR TYPEOUT ..me DRIVE NUMBER 076053 001610 4S: 001566 040300 032012 - 00 1542 (R2)+ 48 mcneneur AVAILABLE TABLE INDEX NUE LOOKING FOR END OF TABLE gu ex‘uuaz) TST MOV LASGND : SUPPRESS me ZEROS SYSTARTED® a; ;uo g; AVAILABLE TABLE MOVE ADDR OF DRIVE INTO AVAIL LST uewur(RS).Avuun pRIVE OUT OF NEW DRIVE TABLE NEWUNT (RS) sm.s'f sSET DRIVE ASSIGNED INDICATOR ArAamm.A AUTLST :CLEAR AUTO ASSIGN (R2)+ 28 :INCREMENT AVAILABLE TABLE POINTER :LOOK FOR MORE DRIVES ;GET PARAMETERS, BUFFER SPACE, AND START ORDERS FOR DRIVES IN :THE 'AVAILABLE® QUEUE 76 77 78 o 5065 156137 005037 005722 000741 LSCRLF ::60 vps--ocm ASCII :3TYPE 2 DIGIT(S) 00575 & 00646 00075 00ese 0% 69 006472 016362 001566 00 1610 5$: 70 0065 71 006504 72 006512 7% 006516 7% 006520 START OPERATIONS FOR THE AVAILABLE DRIVES TMSG 00 00645 98 TYPE :BR IF MORE DRIVES MAIN2 $ 005002 105737 001025 105737 001020 012737 013737 005037 005037 005037 003037 104401 000137 001542 0014 CLR 1ST8 001150 000001 001314 001344 001346 001350 001466 07710 031742 5762 001632 016200 MAIN2: 1$ 1$: JMP 2s: TST 001652 e o T4 ;START FROM THE FIRST LOCATION SANY DRIVES ACTIVE? :BR IF YES *RUNNING IN AUTO MODE ? *BR IF YES SDUMMY *CONTROL C' FLAG HZ . ONESEC HOUR MINUTE SECOND INTRVL +2 NODRVS $GET42 *RESTORE ONE sscono COUNTER VALUE SCLEAR THE HOUR'S COUNTER *CLEAR THE MINUTE'S COUNTER *CLEAR THE SECOND'S COUNTER *CLEAR INTERVAL COUNTER STYPE 'NO DRIVES ASSIGNED® *GIVE CONTROL TO MONITOR ‘5'2"“‘2’ avloa'x‘gss WAITING FOR THE BUFFER ? WAIT(R2) ,RO -(SP) PC,GETBUF *LOAD RO WITH THE DP8B ADDRESS .mb TO GET THE BUFFER RT. 4 SNEXT (R ) $FAIR(RO) *BRANCH IF NO BUFFER AVAILABLE *CLEAR PARAMETER SELECT FLAG :CLEAR THE FAIR FLAG PC comuv SSET COMMAND AND GO SCLEAR THE STACK FOR BUFFER REQ (sfi» $BUF(RO) :IF 000122 0001 Qieh 537 0064 108 12705 00152 152 006443 T00s 1% 108 12701 001632 8 020750 067 110 ASNLST 28 SAUTOB #1,CFLAG 012680 005060 005060 R2 PC,FILBUF 3s: TST #ORDERQ,R ) 0,BUFFER IS STILL nor AVAILABLE :FILL THE BUFFER :PUT THE WAIT QUE INTO ORDER QUE .-ggsl?v%uue ? ao -(RS) *LOAD THE DP8 ADDness INTO THE oaosa QUE R2,R1 SOFFSET THE QUE POSITION MAIT,R1 PC. CMPRES *REMOVE THE DRIVE FROM THE *WAIT® QUE :COMPRESS THE QUE CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 11-2 SEQ 0070 A H BR TST BR 2$ ;BRANCH_IF DONE sCHECK THE NEXT QUE sLOOPING BACK 58: TST ORDERQ IDLE sANY OUTSTANDING ORDERS ? 001610 6$: TST R2 sCLEAR DRIVE TABLE POINTER sANY DRIVES WAITING FOR PARAMETERS 007104 00161% 7$: MOV Sd 25252 ggs=gsasssssss 823533 ZRONSARRISRRNY B 001520 g AVAIL(R2) 78 IDLE AVAIL (R2) ,RO SNEXT (RO) 9s $PACK (RO) 8s 108 8s: 9%: 108: JSR CLR PC,GENPAR PC,LODPAR -($P) PC,GETBUF (SP)+,$BUF (RO) 128 PC,FILBUF SNEXT (RO) $FAIR(RO) PC,GODRIV 118: TST #ORDERQ,R5 (R5)+ 001632 128: INC TST 148: TST b d ) D o nd b md d e med et o) 001610 158: MOV 020750 sCONTROL BLOCK ADDR IN RO sPARAMETERS BEEN SELECTED ? :BR IF THEY HAVE s'R* OR 'W' COMMAND FOR THIS DRIVE ? sBR_IF NO sGET DATA PARAMETERS sGET THE BUFFER 26O GENERATE THE PARAMETERS :LOAD THE PARAMETERS JUST GENERATED sMAKE ROOM ON THE STACK FOR THE BUFFER ADDR ;GET _BUFFER :MOVE BUFFER ADDR TO DPB sBR IF 0" ADDR (NO BUFFER) sFILL THE BUFFER sCLEAR PARAMETER SELECT FLAG sCLEAR THE 'FAIRNESS' COUNT sPUT _CURRENT DP8 IN DRIVER sADDRESS OF ORDER QUE IN R5 ;END OF QUE ? $FAIR(RO) :INCREMENT THE FAIR COUNT STHREE TIMES,BUFFER IS NOT AVAILABLE? 3 SFAIR(RO) 14$ 138: sBRANCH IF ANY sBRANCH IF NONE RO,=(RS) 15§ 000106 ;BR IF YES :BR_IF NOT sPUT BLOCK ADDRESS INTO QUE sCONTINUE LOOKING 118 b S (R2)+ 2% PC,WRTPK - 2882388 aNINS N WnOs SS9 NNNNN ~ WNNIND ANION § 8% 83 33 aoas s838 832 33 §§§ . SR K&K sg N 3 b b b b md e e b =D cd D D cd b e D d — e d e D o D FRGRAR 2B BHRIFRR WN=OVNONWN SR EESEYBNRUKLEIRVERRUNTS o1. DNT. AV, P J VTN o d =D MAIN PROGR (R2)+ [ #AVAIL .R1 R2.R1 PC,CMPRES 6$ *BRANCH IF NOT OVER THREE TIMES *LOAD INTO THE WAIT QUE *AN AVAILABLE LOCATION ? *BRANCH IF NOT SLOAD INTO WAIT QUE *REMOVE THE DPB FROM AVAILABLE QUE s INCREMENT INDEX ;BRANCH BACK TO FIRE NEXT DRIVE s "AVAILABLE' TABLE ADDRESS sFORM ADDRESS OF LAST ENTRY sCOMPRESS THE TABLE sCONTINUE LOOKING :WAIT FOR A COMMAND TO FINISH 001520 000016 IDLE: 18: 2$: MOV MOV BEQ TST #ORDERQ,R1 (R1)+,R0 L% $TATUS (RO) ;ADDRESS OF THE ORDER QUE IN R1 sPUT BLOCK ADDRESS INTO RO :BR_IF END OF QUE sSEE IF DRIVE FINISHED SEQ 0071 CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 11-3 MAIN PROGRAM 168 0071 g 199 8871 170 0071264 01014 1;; 71 7 8871 BEQ ST 1775 5741 8827; 737 MOV JSR 19g7 5 JSR 2 =(R1) R1,=(SP) *ACCUMULATE STATISTICS FOR DRIVE IN RO (RS) + 38 :1S IT THE END OF THE 'AVAIL® TABLE ? :BR IF NO PC .PROCES CLR CLR JSR JSR MOV MOV 1114 7;7 020750 MOV JSR (R1),=(RS) PC, CMPRES 185 007202 032777 000004 171744 4$: 186 007210 091019 BIT BNE ST BEQ CLR ST BEQ TYPE JSR TYPE JMP 179 007164 180 oon?e 181 0071 g 15 00717 11 1 7 8 1 031312 737 1 901 1 og 001610 S sg 7; 13 g : 38: JSR }“ 007176 004737 016376 187 007212 188 007216 189 oors 0 190 007224 191 007 193 007, 193 007 194 007242 88573 001413 oosogr 005737 001406 1ol.4g1 004737 104401 001316 001316 001542 075525 023626 075566 006240 000137 007246 195 ST BNE 58: *SAVE THE QUE ADDRESS PC.STATIS $SSENB(RO) BADSEC PC, ABNRML PC . $EOP (SP)+,R1 #AVAIL RS 173 0071 174 00714 175 0071 17; 00715 17 007123 178 0071 :BR IF DRIVE NOT FINISHED *BACKUP THE QUE POINTER PC.RELBUF #SW02,2SWR 58 STATIN 5$ STATIN ASNLST 5 REPHD PC,STATPR ,STAR30 MAIN *PROCESS END OF COMMAND *CLEAR SKIP SECTORING ENABLED *CLEAR THE BAD TRK/SEC ERROR INDICATOR *SEE IF ANY DRIVES HAVE TOO MANY ERRORS :1S IT END OF PASS ? :RESTORE THE ORDER TABLE INDEX :ADDRESS OF THE ‘AVAIL® TABLE *MOVE THE DPB INTO THE °AVAIL' TABLE *COMPRESS THE ORDER QUE *RESTORE BUFFER :TYPE PERFORMANCE SUMMARY :BR IF NOT STIME TO TYPE THE PERFORMANCE SUMMARY ? *CLEAR THE INDICATOR *ANY DRIVES ASSIGNED ? *BR IF NO *TYPE PERFORMANCE REPORT HEADING STYPE THE SUMMARY STYPE “‘axne,_, ETC" :BR IF NOT *CONTINUE THE LOOP sPROCESS THE COMMAND TERMINATION SEENNTSIS 888888888 NNNN NNNNSN 100000 002140 040000 002140 040000 002152 8M] gg BIT BNE BIT BNE (RO),DRVNO $TATUS (RO) :DRIVE NUMBER FOR ANY ERROR MESSAGES *SEE IF DRIVER SIGNALED AN ERROR smog “BR IF ERROR -.rr.ee IF *SC' SET ggm ,SRMCS1(RO) -SEE IF *TRE® SET #BIT14,SRMCST(ROS SET IF :BR mnos SEE IF "ERR® SET #81T14,SRMDS (RO) SET :BR IF ERPROC SO0 sgesss £%" 7 01%0?2 013154 000002 JSR JSR 1$: BIT BNE JSR RTS 171622 013240 2s: PC.CKERR PC,CKBUS #5W01,aSWR 23 PC,CMPAR PC sCHECK ERROR BITS sCHECK BUS ADDRESS & WORD COUNT ;D0 DATA COMPARE ? :BR IF NO : COMPARE DATA W/0 ERROR sRETURN sCOMMAND TERMINATED WITH AN ERROR = PROCESS THE ERROR 888 000200 000016 ERPROC: BIT BEQ JMP 007550 #81707,$TATUS(RO) ERPRC1 DONE ;DONE BIT SET ? :BR IF COMMAND DIDN'T COMPLETE NORMALLY sPROCESS ERROR WITH °DONE® BIT SET 001000 000016 0460002 000016 ERPRC1: - TIMEOUT? BIT #81T09,$TATUS (RO) BIT BNE BIT BNE #8IT14!81T01,8TATUS(RO) :DRIVE WENT OFFLINE ? IF 1T DID :BR OFLIN #BIT2,$TATUS(RO) :PORT REQUEST TIME OUT ? 1T DID : PRTIM . BNE 000016 NN SR SNS=2 83 S53dsy o W ~ W 882282288 ;PROCESS COMMAND COMPLETION WITH "ERROR' & 'DONE NOT' BITS RTS SWTIM :BR IF YES PC *ERROR. RETURN NNWONN HHBNOWN—OSSN Sg NN NN NN = O = OO0O0O000O NNNNNNSN SRRRRRRE SWTIM: JSR PC Hnn JSR JSR JSR JSR PC.LINE PC.LINES PC.INCTOT PC,LINE DISPLY LEM fic.uns; JSR RTS PC :PRINT LINE 1 OF ERROR MESSAGE *PRINT THE TIME OUT MESSAGE SPRINT LINE 2 OF ERROR MES *PRINT LINE 3 OF ERROR MESSAGE SPRINT LINE & OF ERROR MESSAGE + INCREMENT rgm ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE *RETURN Wit NN:N‘“ NNSN—- :DRIVE WENT OFFLINE S2Ree o — b NNNNINNN 3 SHOH0O :SOFTWARE TIMEOUT OCCURRED 88888888 NNY e ST :NO ERRORS DETECTED IN REGISTERS, DO SOME CHECKING ANYWAY ggsSRSRILSIRIRTRERESE s8s SCEYBVRRRUNTY O 0O NO WV P PROCES: MOVB S e e R ] WN) = O OO N N SR = MAIN PROGRAM 1% gigts 0361 T4 OFLIN: TYPE SCRLF JSR PC Hm DISPLY EM JSR fic.uns; JSR PC.LINE :CR=LF SPRINT LINE 1 OF THE ERROR MESSAGE *PRINT OFFLINE MESSAGE *PRINT LINE i OF THE ERROR MESSAGE *PRINT LINE 3 OF THE ERROR MESSAGE - {m] SEQ 0072 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 12 SEQ 0073 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 12-1 :PRINT LINE &4 OF THE ERROR MESSAGE PC.LINE *PRINT LINE 7 OF THE ERROR MESSAGE PC.INCTOT DROP .mcnenem TOTAL ERROR COUNT :DROP THE DRIVE PC fi"“ ;TYPE LINE 1 OF THE ERROR MESSAGE fic.uueg STYPE LINE 2 OF THE ERROR MESSAGE £ ;JUON COH N OO PRTIM: PC,LINE PC.LINEG PC.INCTOT o PC,LINE *PRINT PORT TIME OUT MESSAGE .-m: LINE 3 OF THE ERROR MESSAGE STYPE LINE &4 OF THE ERROR MESSAGE * INCREMENT TOTAL ERROR COUNT reg&hm 7 OF THE ERROR MESSAGE ;PROCESS COMMAND COMPLETION WITH "ERROR' & °'DONE’' BITS SET 000020 000016 DONE: 002154 1$: BIT 012532 040000 e 040000 040000 002150 2%: 002152 3s: 45 TRFER — ie i e i i 011054 —d d b md e md D md D b =D d d 011406 000020 002154 5%: 5% BIT 020000 012434 ; *HCRC® SET? NOT :PROCESS °*HCRC" : 'FMT® SET? T SET :'HCE® SET? :CHECK FORMAT ERROR 6$: BIT #B1T07,SRMER1 (RO) 002154 7$: BIT JBITIS.SRMERT(RO). = iOPIL SET? 002154 BIT 002154 BIT 012014 000040 :BR IF 002154 0711666 000010 :PROCESS *TRE' #BI1T04 , SRMER1 (RO) :BR 6s CKFMT 011232 000200 :BR IF SET #B1T08, SRMER1 (RO) 48: HCRCER 002154 CUNSAFE OCCURRED :REPORT UNSAFE UNSAF ;1S 'WCE*® SET ? #BIT14,$RMCS2(RO) :BRANCH IF NOT SET 38 :WRITE CHECK ERROR WCKER {CHECK *ERR" #BIT14,SRMDS (RO) 012272 000400 ;UNSAFE OCCURRED #BIT04 , STATUS (RO) :BR _IF NOT 1$ :REPORT UNSAFE UNSAF 4BITI4,SRNERT(RO) 012532 010546 RETTLTIRURURILS SRS PC,LINEG sPORT REQUEST TIMEOUT ERROR gz\fl\fl\fl VIV IV, JSR JSR JSR JMP D e s e D D D e d PNININININ) D D D b) =d D b) cd) eb b NIRIRIRER2 RGN LS SBYRNRUK ZEBRNE N R BN A 8383833838 NINNNNSNNY T T YQY —y— Y8 MAIN PROGRAM 78 CKHCE OPIER :BR_IF NOT SET :CHECK "HCE® ERROR £REPORT'om§ JBITSSRERT(RO) o PAR SET? F_NOT SET REPORT "PAR L'WCF* SET 4B1TS, SRMERT (RO) :BR | '\T 57 108 93 PARER WCFER :REPORT SEQ 0074 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 12-2 MAIN PROGRAM 163 164 007740 002000 :§§ oo 012106 1 7762 17 7770 163 Goree 108: 002154 11%: 001000 002154 128: 1002000 002152 004000 }?? 007764 002154 BIT 8 IAEER 179 010058 010000 }g? 010022 011772 182 o1002¢ 002154 1 002154 #8179, SRMERT (RO) :'AOE® SET? 189 010040 187 010046 188 010050 189 010056 190 010060 191 19% 010064 }g‘ 010070 :BR IF NOT SET 13$ :BR 14$ $RMER1 (RO) 14$: 15% DCKER 040000 002202 100000 002202 :BR IF NOT SET *REPORT 'WLE' 13$ DTEER ; 010072 }gg 010034 *REPORT ‘IAE* :BR IF 17%: IF NOT *PROCESS 'DCK* s 'SKI* SET :BRANCH IF SKI SET 168 :'BSE' SET ? #81T15,SRMER2 (RO} 011200 168: NOT :SEE IF "DCK® SET :BR 17$ :BRANCH IF SO (NO, OTHER ERROR) SKIER PC :REPORT SKI ERROR SEXIT FROM ERROR ANALYSIS DRVER 012372 SEE IF °*DTE® SET *REPORT 'DTE' ERROR #81T14,$RMER2 (RO) 15%: :'LBT' SET? IF NOT SET STAOE' © °'LBT' SET, EXIT #81T12,SRMER1 (RO) 138: ;'IAE® SET? NOT TS SET 'WLE®* SET? PC 178 01001 :BR 1 F asir11.sanen1<no> a§1r1o.sanos(ao) };9 01001 1 1" 12 WLEER 012140 17% 887776 174 010000 CB£T10.SRHER1(RO) JMP RTS *REPORT ERROR ROUT. sPROCESS DATA ('DCK') CHECK ERROR 197 010072 }gg 010076 200 010100 201 010106 20; 810110 01011 203 204 0101 205 010124 0101 000100 002154 010040 002204 010135 01014 10 010142 10168 11 1; 1015 1 10154 14 10123 888o S SENo - N r< s 33W~ 002204 NN 7 DCKER: 020764 021134 2062 21214 010174 010200 FR2S N = 18 19 PC,SPOTCK PC BIT BEQ ggcu.sanen1<no> ;ECH Enzgn SET ? #10040, SRMEC1 (RO} :REPORT ECC LOGICAL FAILURE ,g *ECH ERROR = ECC UNCORRECTABLE SRMEC1(RO) , #1004 010040 2$ $RMEC1 (RO) 002204 28 SRMEC2(RO) 6% PC L;ne1 002206 07haze M4 2%: 3s: JSR DISPLY JSR OTHERWISE RPEC1=10040 2s Pcfi§5n51 672400 — 15 glor 19 10198 :SEE IF ERROR AT A BAD SECTOR ON THE DISK SIT 1S, DON'T REPORT IT JSR RTS PC L;NE1 EM4 PC,LINE2 *FIRST LINE OF ERROR MESSAGE 1S POSITION COUNT OVER MAXIMUM ? :BR IF YES *POSITION COUNT 0 ? . *BR IF YES *VALUE IN PATTERN REGISTER ? :BR IF YES STYPE FIRST LINE OF ERROR MESSAGE STYPE 'ECC LOGIC ERROR® :TYPE FIRST LINE OF ERROR MESSAGE STYPE 'ECC LOGIC ERROR® STYPE LINE 2 OF ERROR MESSAGE CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 12-3 K 6 SEQ 0075 MAIN PROGRAM 10304 737 0 mg 1 010210 012737 g 10513 737 015744 oool.g; 5 010 % 010226 004737 022706 ggz 010230 . 000402 227 010232 228 010236 ggg 010254 PC,LINEGD PC.LINE :PRINT 'UNCORRECTABLE AFTER N RETRIES' STYPE LINE 7 OF ERROR MESSAGE 004737 021134 104414 070461 78: 240 010270 004737 015236 241 0102764 012737 110100 001326 242 010302 032760 010100 002154 001003 004737 022666 000460 012737 000020 001330 1$: 251 010326 252 o1os§ 253 010336 004737 005760 001775 28: 38: 016710 000016 100057 032760 000200 000016 omoog 024740 104414 074343 000137 007356 033760 262 010374 001412 001326 263 010376 264 010404 265 0104 266 810:.1 267 01042 032760 010100 002154 oo14§1 105; 7 001331 123737 001330 001331 oom; 278 010422 004737 279 010426 oo:.;gr 280 010432 332 7 281 010436 737 282 010442 004737 023170 024644 024740 022746 015236 6$: 78: 288 010450 004737 ozgm 8s: %gz 010446 000436 004737 0047;7 004737 010470 000407 022624 024620 014472 002154 DISPLY JSR MOV BIT BNE JSR BR MOV JSR ST BEQ 8PL BIT BNE JSR DISPLY JMP 004737 261 010366 RTS DCKER1: JSR JSR JSR 243 010310 244 010312 245 010316 515.3 010320 sgo 810454 1 010460 %gg 010464 JSR JSR *RETRY COUNT *RETRY THE COMMAND *RETRY WAS MOT SUCCESSFUL *PRINT *CORRECTED ON N RETRIES® *FINISH THE ERROR REPORT :THE VALUES IN THE ECC REGISTERS ARE CORRECT, REPORT 'DCK® ERROR :PRINT LINE 1 OF ERROR MESSAGE Pc.sxm JSR 68: 237 010256 004737 021214 238 010260 004737 021654 239 010264 004737 022324 254 010340 255 010342 256 010350 257 010352 258 010356 523 010362 : INCREMENT TOTAL ERROR COUNT #3 RETRY PC.SRETRY 11 PC,LINE6C 5$ 48: 58: gj‘, 234 010250 PC,INCTOT 004737 022714 004737 022746 %g 010242 000207 233 010244 JSR MOV JSR BR JSR BR 001330 4$: BIT *RETURN ,EM21 :DATA CHECK ERROR PC,LINE PC,LINE PC.LINEG :PRINT LINE 2 OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE *PRINT LINE & OF ERROR MESSAGE PC,LINE6 1$ 9s #16. ,RETRY :BR IF SET *PRINT "SECTOR IS ECC CORRECTABLE' *FINISH THE ERROR REPORT *RETRY COUNT PC,GODRIV $TATUS (RO) 3s :RETRY *TEST FOR DONE *BR IF NOT DONE 4$ PC,INCTOT ,LINSM ERPRC1 :BR *INCREMENT TOTAL ERROR COUNT **DIFFERENT ERROR DURING RETRY' *SEE WHICH ERROR “SEE IF BAD SECTOR TO BE PRINTED PC.PRTBAD #8iT15'81712!'81706,MASK :LOAD ERROR MASK (RO) :CHECK °*DTE' & °"ECH’ #81T121B1T06.SRMERT 118 *BR IF NOT ERROR #8IT7,$TATUS (RO) SEE IF COMMAND TERMINIATED NORMALLY IF NOT BEQ MASK, SRMER1(RO) :LOOK AT CURRENT ERROR 6$ ‘BR y DIFFERENT ERROR JSR JSR JSR JSR JSR PC,LINES PC. INCHRD PC.INCTOT PC.LINE7 PC.PRTBAD *PRINT LINE 8 OF ERROR MESSAGE *INCREMENT 'HARD® ERROR COUNT *INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE *PRINT THE BAD SECTOR BIT BEQ INCB CMPB BNE B8R 9s: PC #BIT12!'B1T6,SRMERT(RO) ;'ECH' OR °DTE® STILL SET ? 8s$ :BR IF NEITHER SET *INCREMENT RETRY COUNT RETRY#1 RETRY,RETRY+1 :DONE ? *BR IF NOT 2 14$ JSR PC,LINEG BR 12§ JSR JSR JSR PC.LINESB PC. INCSOF PS ECC *CLEAN UP AND RETURN :PRINT *SECTOR IS ECC CORRECTABLE® *PRINT LINE 58 OF THE ERROR MESSAGE *INCREMENT °*SOFT® ERROR COUNT *CORRECT THE ERROR USING ECC AND CHECK IT :COMPARE THE BUFFER CZRNAAO RM80 PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 12-4 SEQ 0076 MAIN PROGRAM 294 295 010472 004737 022714 108: 022700 11$: %39 010476 000753 298 010500 299 010506 300 010510 301 010513 302 010522 fizmwu 010530 305 010534 306 010540 ggz 010544 ooar§7 004737 o127§7 004737 105737 100406 004737 104414 004737 000207 024620 000001 001356 128: 013244 001357 024740 074560 022746 138: 14$: 312 010556 313 010556 314 010562 315 010566 318 010572 010576 01 010606 319 010612 320 010616 321 010624 322 010630 323 010632 ggg 010636 326 010640 032760 100000 001034 737 104414 005037 004737 004737 004737 004737 004737 012737 004737 000403 004737 000501 0211 070565 0013 021214 021654 022324 022414 024740 000003 015744 022706 004737 022714 002154 WCKER: 001330 327 010644 000476 328 010646 004737 020764 329 010652 77 330 0106564 004737 021134 18: 28: 331 010660 012737 070512 010706 332 010666 032760 040000 002150 333 010674 001003 ggg 010676 gse 010704 37 010706 340 010710 010714 010720 012737 104414 000000 004737 004737 ooa;gr 071413 010706 021214 021654 022324 3$: s 004737 022414 321 010726 010 032760 000100 002154 g 010736 001441 if 010740 012737 000020 001330 5% 4 o1or4g 004737 016710 345 010752 346 010756 347 010760 348 010762 PC,LINE6D :PRINT "UNCORRECTABLE AFTER N RETRIES' JSR PC,LINEGA :PRINT LINE 6A OF ERROR MESSAGE BR JSR MOV JSR TSTB BMI JSR DISPLY JSR RTS 78 PC. INCSOF #1.FRSTER PC. CMPARD FRSTER+1 14$ PC,INCTOT ,LIN9G PC,LINE? PC *INCRFMENT ERROR COUNT :INCREMENT *SOFT® ERROR COUNT *SET PROCESSING *DCKER® INDICATOR *COMPARE THE BUFFER *ERROR xn COMPARE ? IF ERROR *BRANCH : INCREMENT TOTAL ERROR COUNT *'DATA COMPARE OK® MESSAGE *PRINT LINE 7 OF ERROR MESSAGE *RETURN ;WRITE CHECK ERROR PROCESSING ggg 311 010546 JSR 005760 000016 001775 100405 105237 001331 6$ $ BIT #8IT15,SRMER1 (RO) 28 PC,LINE1 ,EM23 PC,LINE2 PC.LINE PC.LINESG PC.LINE PC.INCTOT #3_RETRY PC,SRETRY 18 PC,LINE6C 108 :BR IF IT IS *PRINT LINE 1 OF eaaon MESSAGE *PKINT WCE & DCK NO *CLEAR ERROR MASK *PRINT LINE g OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE *PRINT LINE & OF ERROR MESSAGE *PRINT LINE 5 OF ERROR MESSAGE *INCREMENT TOTAL ERROR COUNT *RETRY LIMIT *RETRY THE oreaarxon *RETRY UNSUCESSFUL *PRINT *CORRECTED ON N RETRIES® :FINISH PROCESSING THE ERROR JSR PC,LINEGD :PRINT "UNCORRECTABLE AFTER N RETRIES® MOV BIT BNE SSUME THAT EM22 WILL BE PRINTED aaxrtz sancSZ(noS :DID *WCK' ALSO SET ? 3$ :BR IF I DID BNE JSR DISPLY cL JSR JSR JSR JSR JSR MOV JSR BR JSR B8R BR JSR BR JSR MOV DISPLY LWORD JSR JSR JSR 108 PC,SPOTCK 11§ PC ane1 #EM37.48 :SEE IF "DCK® SET ALSO *FINISH PROCESSING THE ERROR *SEE IF ERROR AT BAD SECTOR ON THE DISK SEXIT IF AT BAD SECTOR ON DISK pnxnr LINE 1 OF ERROR MESSAGE 0 Pc.Lxusi PC,LINE PC.LINE& 35??@65Egn *DCK® AND "WCK' NOT DURING STYPE THE ERROR MESSAGE *MESSAGE ADDRESS GOES HERE *PRINT LINE 2 OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE pnxnr LINE & OF ERROR MESSAGE PC,GODRIV *RETRY rue COMMAND JSR BIT BEQ MOV PC.LINES INT ane 5 OF ERROR MESSAGE aeiroe.sansn1(aos SET ALSO 108 :FINISH bnocessxus THE enaon - #16..RETRY *RETRY LIMIT= 16 (10) TST BEQ BMI INCB $TATUS (RO) 78 7% RETRY+1 JSR *COMMAND FINISHED ? .sa IF NOT BR IF ERROR ON COMMAND :xucasneur RETRY COUNT CZRNAAO RMB0 PERF EXER MACRO VO04.00 14=JAN=82 15:16:58 PAGE 12-5 M6 SEQ 0077 MAIN PROGRAM gao 010763 004737 3?? 010772 000423 022706 3s§ 010774 353 011000 354 011006 105337 123737 001714 001331 001330 355 011010 356 011016 357 011020 358 011026 359 011030 gg? 011034 JSR PC,LINE6C 10§ *FINISH ERROR PROCESSING INCB CMPB BEQ RETRY+1 RETRY,RETRY+1 1$ : INCREMENT RETRY COUNT :DONE ? “BR IF AT RETRY LIMIT JSR JSR JSR PC,LINES PC.INCTOT PC.LINE? :PRINT LINE 8 = *DIFFERENT ERROR * *INCREMENT TOTAL ERROR COUNT :FINISH THE ERROR MESSAGE BR 001331 8s: 032760 100000 002154 001407 032760 000100 002154 001347 004737 022706 000402 BIT BEQ BIT BNE JSR BR #BIT15,$RMER (RO) :*'DCK® SET :BR IF NOT = DIFFERENT ERROR 98 < 'ECH' ALSO SET ? #BIT06,SRMER1 (RO} :BR IF I IS, RETRY COMMAND 68 PC,LINE6C *PRINT *CORRECTED ON N RETRIES® *FINISH PROCESSING ERROR 108 362 011036 004737 023170 363 011062 004737 024740 364 011046 004737 022746 98: 108: ggg :REPORT "HCRC' ERROR 369 011054 004737 020764 370 011060 000446 371 011062 004737 023254 372 011066 004737 015652 373 011072 004737 021134 374 011076 104414 070440 375 011102 004737 021214 HCRCER: JSR BR JSR JSR JSR DISPLY JSR ggz 011052 11$: 000207 376 011106 004737 021654 377 011112 378 011116 384 011122 385 011126 004737 004737 004737 004737 1$: 386 011132 012737 000400 001326 387 011120 012737 000003 001330 004737 000405 015744 391 011160 004737 022746 390 011154 ggg 011164 004737 04 | 022706 PC :SEE IF ERROR AT BAD SECTOR SEXIT IF IT IS *READ ERROR SECTOR HEADER *GET THE HEAD INFORMATION *PRINT LINE 1 OF ERROR MESSAGE *REPORT "HCRC' *PRINT LINE 2 OF ERROR MESSAGE JSR JSR JSR JSR PC.LINEG PC.LINESA PC . INCSOF PC.INCTOT *PRINT LINE & OF ERROR MESSAGE *PRINT THE HEADER INFORMATION *INCREMENT *SOFT® ERROR COUNT *INCREMENT TOTAL ERROR COUNT JSR PC.SRETRY 28 *RETRY COMMAND *RETRY NOT SUCESSFUL MOV MOV PC.LINES3 T8, MASK #Bi #3,RETRY BR 3s SEXIT PC,LINE6D PC.LINE? :PRINT "UNCORRECTABLE AFTER N RETRIES® *PRINT LINE 7 OF ERROR MESSAGE JSR JSR PC.LINE7 28: 333 :REPORT DRIVE ERROR 38: RTS %00 011200 004737 021134 DRVER: JSR 402 011210 004737 021214 JSR 401 011204 104414 071055 403 011216 404 011220 405 o112§3 239 011230 004737 004737 004737 000207 021654 024740 022746 DISPLY JSR JSR JSR RTS 408 409 410 011232 *SET ERROR MASK *RETRY LIMIT PC,LINE6C JSR 000207 *PRINT LINE 3 OF ERROR MESSAGE JSR 394 011166 004737 022714 395 011172 004737 022746 539 011176 *RETURN PC,SPOTCK 3s PC,READDR PC .READHD PC.LINE1 ,EM20 PC,LINE2 JSR 022324 022556 024620 024740 388 011146 389 011152 RTS :PRINT 'CORRECTED ON N RETRIES® PC *PRINT *CORRECTED ON N RETRIES' *PRINT LINE 7 OF ERROR MESSAGE *RETURN n#m- :PRINT LINE 1 OF ERROR MESSAGE fic.ansg *PRINT LINE 2 OF ERROR MESSAGE LEM30 PC.LINE PC.INCTOT PC.LINE? PC *REPORT DRIVE ERROR *PRINT LINE 3 OF ERROR MESSAGE *INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE *RETURN :PROCESS FORMAT ('FER') ERROR 032760 000400 002154 CKFMT: BIT #B1T8,SRMER1(RO) 2"HCRC® SET ON ORIGINAL ERROR ? SEQ 0078 CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 12-6 23254 15652 000400 b —b b - NN ~ O 3333832L ) e e e R P e NN WNWWNW G S N ~ % N% W G N S [ el 067612 8EQ JMP 1$ HCRCER :BR _IF NOT SET sREPORT HCRC ERROR JSR JSR BIT BN JMP PC.READDR P( RSADHD sGET CORRECTED TRACK & SECTOR ADDRSSES PC,SPOTCK ;SEE_IF ERROR AT BAD SECTOR ON THE DISK g fic.une; sPRINT LINE 1 OF ERROR MESSAGE sHEADER READ ERROR = FMT BIT DROPPED UP sPRINT LINE 2 OF ERROR MESSAGE sPRINT LINE 5 OF ERROR MESSAGE 2$: 020764 PC,LINE PC.LINES PC.LINESA 3s: PC. INCSOF #BIT4, MASK #3,RETRY 000003 015744 PC.SRETRY 11 PC.LINE6C PC,LINE? 5% 022706 022746 4S: JSR 5$: RTS READ HEADER s 'HCRC® SET WHEN HEADER READ? #8178, GENREG+RMER1 :BR IF "HCRC' SET 2 FMTER *NO, ERROR IS "FMT® ONLY 5$ 021134 070644 022714 022746 d =D b 000 D 18: 012166 NN ~ O NN VNS S5W W 3£8oN &F&Ne No RS N SESEE VNV S8 00000 OO e D DD b OOOO0OOOOOOOOOOOO0 e o e e o De D e D D o D e w d SESSS ol 2t Y e D e I D amd oD '{)N—.—D—b-—l sasaases NIRIRININY NS NN —= O NS IR = O VRN MAIN PROGRAM PC,LINESD PC,LINE7 PC SEXIT IF IT IS sPRINT LINE & OF ERROR MESSAGE :DISPLAY HEADER s INCREMENT SOFT ERROR COUNT s INCREMENT TOTAL ERROR COUNT :SET_ERROR MASK sRETRY LIMIT sRETRY THE COMMAND sRETRY NOT SUCESSFUL sPRINT "CORRECTED ON N RETRIES® :PR{?T LINE 7 OF ERROR MESSAGE sPRINT "UNCORRECTABLE AFTER N RETRIES' :zg{fizutlflf 7 OF ERROR MESSAGE 011054 023254 PC,READDR PC RSAD H D 18: #170000,CYLNDR :CLEAR FORMAT,MFG,USER AND SSF BITS FROM HEADER $RMDC (RO , CYLNDR <CORRECT CYLINDER ? :BR IF IT IS 28 *REPORT POSITIONING ERROR POSER 002174 011614 7 101174 012230 020764 i sGET CURRENT SECTOR & TRACK ADDRS :READ HEADER OF CURRENT SECTOR ; "HCRC® SET ? #BiT8, GENREG+RMER1 :BR IF 3s : ;PUSH CYLNDR ON STACK cvym -(SP) 2%: (SP)+,CYLNDR ;:POP STACK INTO CYLNDR zg.srom :SEE IF ERROR AT BAD SECTOR HCEER 3s: 4$: Sggggg % EENEIRRE sHCRC SET ON ORIGINAL ERROR ? #81T8,SRMER1(RO) NOT S ET H;B8R 1$ HCRCER sREPORT HEADER CRC ERROR CKHCE: 101174 170000 D b e b b d nd d b e b o e 002154 ceecoum b b e 000400 ONONONNION S .bamb‘::meJmhcmb NN = =& N33Rg:gc~ d =D b e o e b e e =D ) b emd d ) B o wmd oD o e Plar iy i Qi S i Sl OO NO NS NN = ] o S8E88ERER S8 n SRR OO0O000O0OO0O0O0O0O00O00 ;PROCESS HEADER COMPARE ('HCE') ERROR 4 *REPORT "HCE' ERROR rc“flm SEXITIF IT {s :PRINT LINE 1 OF ERROR MESSAGE PC,LINE PC.LINE PC.LINE PC.LINESA SPRINT LINE 2 OF ERROR msss:g SPRINT LINE 3 OF ERROR MES *PRINT LINE & OF Em ME SSAGE SPRINT LINE S OF ERROR MESSAGE E *HEADER READ ERROR = 'MCE' SET CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 12-7 B 7 SEQ 0079 MAIN PROGRAM 477 8”533 478 01154 737 737 492 02474 JSR JSR 737 ; 015744 JSR BR 479 811546 480 011556 157 7 012737 483 011570 004737 481 011562 aag 011598 484 011574 zgg 011600 004737 000404 000 og 001353 03 0013 022706 022746 58: 233 011612 68: 000207 PC,LINE6C JSR JSR RTS POSER: JSR 024714 024740 023076 015534 JSR JSR JSR JSR RTS 499 0116446 500 011650 501 011654 502 011660 ggz 011664 004737 004737 004737 004737 000207 *RETRY THE COMMAND *RETRY NOT SUCESSFUL JSR 011614 004737 031134 49§ 49 011620 104414 072335 oo¢7§7 004737 012637 004737 PC.SRETRY 5% cgir? MASK #3,RETRY :SET ERROR MASK *RETRY LIMIT *PRINT *CORRECTED ON N RETRIES® PC.LINE 6 *PRINT LINE 7 OF ERROR MESSAGE SEXIT PC,LINE6D PC.LINE? :PRINT 'UNCORRECTABLE AFTER N RETRIES' *PRINT LINE 7 OF ERROR MESSAGE PC *RETURN ;REPORT POSSIBLE POSITIONING ERROR 231 495 o116§3 496 011630 497 011636 498 011640 : INCREMENT SOFT ERROR COUNT *INCREMENT TOTAL ERROR COUNT MOV MOV JSR BR 487 011602 004737 055714 488 011602 004737 022746 PC, INCSOF PC.INCTOT DISPLY 021214 021702 101174 022556 JSR JSR MOV JSR PC,LINE1 :PRINT LINE 1 OF ERROR MESSAGE PC,LINE2 PC.LINE3C (SP)+,CYLNDR PC,LINESA *PRINT LINE ; OF ERROR MESSAGE *PRINT LINE 3C OF ERROR MESSAGE ::POP STACK INTO CYLNDR *PRINT LINE SA OF THE ERROR MESSAGE EMS1 PC.INCMIS PC.INCTOT PC.LINE7A PC.RECALT PC *PROGRAM DETECTED POSITIONING ERROR INCREMENT MISPOSITIONING COUNT * INCREMENT TOTAL ERROR COUNT *PRINT LINE 7A OF ERROR MESSAGE *RECALIBRATE SEXIT ;REPORT 'OPI' ERROR ggg 507 011666 004737 508 011672 000207 509 0116764 004737 510 011700 104414 020764 512 011710 513 011714 514 011720 515 011724 OPIER: 021134 071107 JSR RTS JSR DISPLY PC,SPOTCK PC Pcfi§1ne1 EM31 :SEE IF ERROR AT BAD SECTOR *RETURN IF IT IS *PRINT LINE 1 OF ERROR MESSAGE $'0PI' ERROR 004737 004737 004737 012737 021654 02232 024740 020000 JSR JSR JSR MOV PC,LINE PC.LINE& PC.INCTOT 03171 MASK *PRINT LINE 3 OF ERROR MESSAGE *PRINT LINE & OF ERROR MESSAGE *INCREMENT TOTAL ERROR COUNT *ERROR MASK 517 011740 518 011744 004737 gs 015744 JSR BR PC.SRETRY 1$ *RETRY THE COMMAND :RETRY UNSUCESSFUL 520 011752 004737 022746 511 011706 004737 021214 JSR 001326 516 011735 012737 000003 001330 OPIER1: MOV 519 011746 004737 022706 251 011756 000207 524 011764 004737 022746 sz% 011760 004737 022714 ggg 011770 PC,LINEGC RTS PC JSR PC.LINE? JSR RTS 000207 #3,RETRY JSR JSR 1$: 5C.LINE§ PC.LINE? PC,LINE6D PC ggg ;REPORT °'DTE' ERROR 529 011772 004737 020764 530 011776 000207 531 012000 004737 021134 532 012006 104414 071152 DTEER: 533 012010 000137 010254 JSR RTS JSR DISPLY JMP PC,SPOTCK P( Pcfi§£NE1 LE DCKER1 *PRINT LINE 2 OF ERROR MESSAGE SRETRY LIMIT *PRINT 'CORRECTED ON N RETRIES' SPRINT LINE 7? OF ERROR MESSAGE SEXIT :PRINT "UNCORRECTABLE AFTER N RETRIES' *PRINT LINE 7 OF ERROR MESSAGE *RETURN ;SEE IF ERROR AT BAD SECTOR SRETURN IF IT IS *PRINT LINE 1 OF ERROR MESSAGE **DTE' ERROR *FINISH PROCESSING THE 'DTE® ERROR CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 12-8 34 §§Z ;REPORT 'PAR' ERROR BaE M SO 021214 ool.7§7 012024 §39 G e g, fic.uneg JSR B, 88"03; 81%64 glig 022706 004737 o1goeg 547 5523 8}28;6 33‘053; 022746 1$: ggn JSR ,‘.?2 §51 012100 004737 022714 28: JSR ggg :REPORT 'IAE' ERROR 556 o1z1og 004737 021134 104414 071324 557 012112 JAEER: o§1 go 540 012030 004737 004737 022324 gm 012036 “§ 012040 004.7;7 024740 o1§ou. 0157 7 oooo1g 001326 56 544 01 825 012737 000003 001330 5§50 ggg 015104 000772 JSR JSR JSR MOV MOV PC.LINE3E PC.LINES PC.INCTOT MASK ogiro #3,RETRY Pg.snmv PC.LINE6C :g.unn PC,LINE6D 1$ "fiké"“ JSR DISPLY LE JSR 561 012132 004737 022746 ggg 012136 000207 B8R JSR 380 012136 004737 024740 RTS PC.INCTOT PC.LINE? PC ggg :REPORT 'WLE' ERROR 566 012140 004737 021134 567 012146 104414 071362 568 012150 004737 021214 569 012156 004737 024740 570 012160 004737 022746 WLEER: g;z :REPORT FORMAT ERROR 575 012166 004737 0 576 012172 104414 070773 FMTER: 0o1ése 015008 0073y 306 004737 0353 4 579 012206 004737 0225 3 gar 81 13 004737 8547:. 012222 ggg 012226 004737 000207 022746 531 g Biomm gos 012240 8%757 51314 596 012244 737 021654 pcfikmfl JSR DISPLY ,EM36 PC,LINE2 JSR PC.INCTOT JSR PC.LINE? JSR RTS g;; 012164 000207 88 7 SEQ 0080 : MAIN PROGRAM 586 01 51 c PC e e UL MESSAGE ERROR OF *PRINT LINE ; MESSAGE ERRORMESSAGE OF 3E LINE *PRINT ERROR OF &4 LINE *PRINT *INCREMENT TOTAL ERROR COUNT *ERROR MASK SRETRY LIMIT SUCESSFUL ; ffiém ON N RETRIES® VCORRECTED SBRINT .::;}?r LINE 7 OF ERROR MESSAGE : :PRINT 'UNCORRECTABLE AFTER N RETRIES' *FINISM ERROR MESSAGE :PRINT LINE 1 OF ERROR MESSAGE *REPORT 'IAE’ * INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE *RETURN :PRINT LINE 1 OF ERROR MESSAGE *REPORT 'WLE' *PRINT LINE 2 OF ERROR MESSAGE * INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE *RETURN Pc'.émn JSR EM26 DISPLY :PRINT LINE 1 OF ERROR MESSAGE *FURMAT ERROR PC . LINESA *PRINT LINE SA OF ERROR MESSAGE * INCREMENT rgm ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE 4R JSR Be.Lineg PC.LINEG JSR PC.LINE JSR JSR RTS PC.INCTOT PC :REPORT HEADER COMPARE ERROR e W, JSR PC,LINE JSR PC.LINE LINE § OF ERROR MESSAGE IPRINT *PRINT LINE & OF ERROR MESSAGE UG LY e LINE ; OF ERROR MESSAGE ‘PRINT *PRINT LINE 3 OF ERROR MESSAGE SEQ 0081 CZRNAAO RM8O PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 12-9 JSR §‘ °§S§ 4740 JSR JSR JSR RTS 207 PC.LINEL PC.LINESA PC.INCT?T PC LINE sPRINT LINE & OF ERROR MESSAGE ;PRINT LINE SA OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT *PRINT LINE OF ERROR MESSAGE *RETURN —lsu(IS TRFER: NONSHNNNNN © ~ NNWNNNW 002150 JSR OoOWW NNN 1$: ;PRINT LINE 1 OF ERROR MESSAGE :RH_CONTROL §R OR UNIBUS TRANSFER ERROR *PRINT LINE OF ERROR MESSAGE *PRINT LINE OF ERROR MESSAGE ‘PR INT LINE & OF ERROR KSSAGE JSR BIT BEQ ERROR COUN ENT TOTAL , 'MDPE* 3ET ? "UPE','MXF° 'DLT' Ab g §'axrs 1713'exr aait1§'0 :BR IF 2 JSR BR JSR PC,SRETRY 1$ PC.LINEGC B8R 28: PC,LINE1 DISPLY ,EM4O PC,LINE JSR PC.LINE JSR PC.LINEG JSR MOV CLR 001330 g5e 3 VIR =N - FonS2838852 AAREGARSS % < o3 b d e N 000 b e o e e e o NN (] NN NN N W v L=T - D o e o b b OO0O0O0O0O0O0O0O0O0OO0O0O :PROCESS CONTROL/INTERFACE TRANSFER ERROR JSR g;g #3,RETRY MASK *RETRY anxr :CLEAR ERROR MASK 28 SFINISH THE ERROR REPORT PC,LINE6GD PE"LINE7 :RETRY THE OPERATION ;RETURN HERE IF_RETRY UNSUCESSFUL :PRINT *CORRECTED ON N RETRIES' :PRINT "UNCORRECTABLE AFTER N RETRIES' *PRINT LINE 7 OF ERROR MESSAGE SKIER: ~N— rNN OO0 OH 3& NN 00000000 NNNNNNNSN &SN S S e earss =N SN ;PROCESS 'SKI' ERRORS OOOOOOOOS JSR DISPLY gxne1 PC, JSR ficansga JSR JSR PC.INCTOT PC,INCSKI RTS PC JSR JSR JSR PC.LINE PC.LINE7A PC.RECALT :PRINT LINE 1 OF ERROR MESSAGE :'SKI' ERROR MESSAGE SPRINT LINE 2 OFOFERROR ERROR MESSAGE SPRINT LINE 38 : INCREMENT TOTAI; ERROR COl.N : INCREMENT *SKI® ERROR COUNT *PRINT LINE 7A OF ERROR MESSAGE *RECALIBRATE “NNNN NN N o 658 659 012524 WCFER: NNNN NNNNNNNSN o — 0000000 be e e b O000 :REPORT WRITE CLOCK FAILURE ('WCF*) &» N I F I TN TNAR oONONONOM oo~ 2SR & AR WN=O0 S N~ %SO 54 60 00O oo goccssass BRI ~ VIS WN = OV NOWVSWN—-O 38823 rad e ot md =D MAIN PROGRAM 001326 - 022714 JSR DISPLY Pcn&i"“ JSR JSR JSR JSR MOV PC.LINE3A PC.LINEG PC.INCTOT PS.PRTBAD ¥ asrav JSR 18: MOV JSR B8R JSR JSR 28: JSR RTS ficxne; #8iT05,MASK Pg.saefav 2 PC.LINE?C PC.LINE PC PC,LINE6D :PRINT LINE 1 OF ERROR MESSAGE *REPORT WRIT CLOCK FAILURE *PRINT LINE OF ERROR MESSAGE OF ERROR MESSAGE *PRINT LINE SPRINT LINE & OF ERROR MESSAGE * INCREMENT T0 TAL ERROR COUNT SSEE IF BAD S ECTOR TO BE PRINTED *RETRY COUNT SERROR MASK aernv THE C OMMAND RETURN MERE IF_RETRY WSUCESSFLL *PRINT LINE OF ERROR MESSAGE :PRINT *CORRECTED ON N RETRIES' sPRINT "UNCORRECTABLE AFTER N RETRIES® SEQ 0082 MAIN PROGRAM 660 012530 BR 000772 13 :PROCESS DRIVE UNSAFE ERROR 12532 ) 004 737 414 7 UNSAF: ;1134 07244 “ 121 “ 0 195 4 02474 0 NNW NNNO NN OWO ¥ oy 1 7 ; 0157 022706 022714 022746 040000 015534 18: 002202 28: 38: PC Lsnn BIT BNE MOV MOV JSR B8R JSR BR JSR JSR BIT BNE 1S *SKI' ALSO SET ? #81T14,SRMER2 (RO) :BR IF YES 23 *LOAD THE ERROR MASK :gml. MASK *RETRY COUNT #3,RETRY *RETRY THE COMMAND PC.SRETRY *RETRY WAS UNSUCESSFUL 18 *PRINT *CORRECTED ON N RETRIES® PC,LINE6C SCONTINUE WITH ERROR REPORT 28 :PRINT "UNCORRECTABLE AFTER N RETRIES' PC,LINEGD *PRINT LINE 7 OF ERROR MESSAGE PC.LINE? :CHECK *SKI' AGAIN #81T14, SRMER2 (RO} :BR IF SET 3$ JSR PC ,RECALT DISPLY ,EM6 fic.une; JSR PC,LINE JSR PC.INCTOT JSR RTS RTS *REPORT DRIVE UNSAFE SPRINT LINE 2 OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE * INCREMENT TOTAL ERROR COUNT PC *RETURN PC *RETURN *RECAL IBRATE sREPORT AN "UNKNOWN® DATA PATTERN NOMTCH: TSTB NS gg Rg2583 - - ~N = o ~N Und = L) NN D s NOL NSO NOSBNO oy ¥ —— o °d N o N T N — B =t N IS = NS = o — — b b . ~ ufl AN PININLNINLNLND &H PN, 3 NSNS ~ & g - e b e W NNNSNWN BERRE = g SRRSRRSRRR ~a NVNflNON ’dub-‘u e -3 o g —\un b b d b 0000000000000 0 OO =3 QR ogooo WV - SEEEREREREE 675 01261 676 012614 677 678 01261 679 01262 REE g25 8883833 Nflfllg o 556 §§§765 040000 002202 801388 800003 Q15737 44 :PRINT LINE 1 OF ERROR MESSAGE JSR Gt 07447; 073288 051203 073288 051268 073588 051568 18: 2s: FRSTER :FIRST ERROR IN THE SECTOR ? BNE JSR DISPLY JSR JSR JSR BR 18 PC.LiNH EM4 fic.uuei“ PC,LINE PC,LINEG 2 *BR IF NOT OR IF PROCESSING °'DCKER® STYPE LINE 1 OF ERROR MESSAGE S'CAN'T MATCH DATA WITH PATTERN' SPRINT LINE 2 OF ERROR MESSAGE *PRINT LINE 3A OF ERROR MESSAGE *PRINT LINE & OF ERROR MESSA *CONTINUE PROCESSING ERROR DISPLY .$CRLF :CR=LF MOV JSR DISPLY MOV JSR pISPLY MOV JSR DISPLY MOV JSR DISPLY MOV JSR DISPLY MOV JSR DISPLY R1,=(5P) Pc.ungct .s%nxs (R1)+,=(SP) PC,LINOCT ,SCRLF R1,=(SP) PC.LINOCT BLNKS (R1)+,=(SP) PC,LINOCT ,SCRLF R1,=(SP) PC,LINOCT a%nxs (R1)+,=(SP) Pg LINOCT ,SCRLF DISPLY DISPLY ,EM43 .LINSI SCAN'T MATCH DATA WITH PATTERN' *HEADER FOR DATA PRINTOUT *ADDRESS OF WORD 1 :TYPE WORD 1 sTYPE 2 BLANKS *ADDRESS OF WORD 1 :TYPE WORD 1 :CR=LF *ADDRESS OF WORD 2 STYPE WORD 2 :TYPE 2 BLANKS :ADDRESS OF WORD 2 STYPE WORD 2 sCR=LF *ADDRESS OF WORD 3 STYPE WORD 3 STYPE 2 BLANKS *ADDRESS OF WORD 3 ;TYPE WORD 3 $CR-LF TM\ -~ CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 12-10 CZRNAAQ RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 12-11 SEQ 0083 MAIN PROGRAM 013012 13014 1 13024 013026 81 1014 i 177777 001460 71; 4 714 ;gg 013153 *TYPE WORD & ADD CLR #<252.+2.>,R1 R2 RTS PC ssnir #-1,FRSTER CMPUMT,LIMIT :TYPE WORD & STYPE 2 BLANKS *ADDRESS OF WORD & :CR=LF :INCREMENT BUFFER POINTER :CLEAR 'WORDS TO comme' COUNT IN R2 *SET ERROR FOUND INDICAT :RESET THE COMPARE ERROR meour LIMIT *RETURN 002150 SN — (=2 1$: :goooo.mm (no> BNE ST BNE ST BEQ JSR DISPLY JSR 1$ SRMER1 (RO) 1$ $RMER2 (RO) 28 PC,LINET ,EM44 6c.une§ :BR *ANY ans SET IN ER1 :BR IF ANY SET SANY BITS SET IN ER2 ? *BR IF NONE SET :PRINT LINE 1 OF ERROR MESSAGE *ERROR BITS SET, BUT 'SC’ OR 'TRE® NOT SET *PRINT LINE ; OF ERROR mssnse JSR JSR RTS PC.INCTOT PC.LINE7 PC : INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE *RETURN BIT JSR JSR 28: 1555,.12 ;ms' OR 'MCPE® SET g'x‘g :SEE IF ERROR BITS IN CS2 SET #177400, mcszmb) IF ANY SET PC.LINE PC.LINEG SPRINT LINE 3 OF ERROR MESSAGE *PRINT LINE &4 OF ERROR MESSAGE sCHECK BUS ADDRESS REGISTER & WORD COUNT REGISTER [- X =¥ S NP P SN b et N bS Q000000 NN ~NN NN edadad NNWNNWN - N e = NNNNNNSNO 745 01322 769 0132%6 747 013232 748 013236 CKERR: 005760 S¥g$2e 288 8288 SNE5e 2522 760 01 761 0 76; 01 743 01321 744 81 13 PC,LINOCT MOV MOV 001368 002140 b 734 013154 735 013160 739 813162 737 013166 738 013170 739 013174 JSR DISPLY 731 % 73 ;ADDRESS OF WORD & :CHECK ERROR BITS IN THE RH/RM REGISTERS 888 53338858 S PR 715 01306¢ 716 013070 717 01%072 718 013100 719 013102 720 013106 721 01%110 722 013114 723 013116 724 013122 725 013126 726 013132 ;%7 013136 R1,=(SP) PC,ungcr SR DISPLY ,BLNKS (R1)+,=(SP) v i 707 01 32 708 01 709 013044 710 013052 711 013060 MOV CKBUS: TST BNE MOV ASL ADD CMP BEQ 18: . JSR DISPLY JSR JSR JSR JSR #:st ;CHECK WORD COUNT SRMWC (RO) 18 :BR IF NOT ZERO SWRDL (RO) ,=(SP) :WORDLENGTH $CHANGE INTO BYTE COUNT (SP) $BUF (RO),(SP) :ADD THE STARTING LOCATION (SP)+,SRMBA(RO) :BUFFER ADDRESS PROPER ? *BR IF OK 28 PC,LINE1 EM&1 fic.uuegb PC.LINE PC.LINEG PC.INCTOT pg.u *PRINT LINE 1 OF ERROR MESSAGE *BUS ADDRESS OR WORD COUNT INCORRECT *PRINT LINE § OF ERROR MESSAGE *PRINT LINE 3D OF ERROR MESSAGE *PRINT LINE & OF ERROR MESSA *INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE CZRNAAC RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 13 SEQ 0084 MAIN PROGRAM ;COMPARE THE BUFFER 1 i 013240 005037 001356 CMPAR: 5 013244 CMPARD: BITB BN 207 18: 9 01%256 10 013262 CLR s S5 2$: i8 e 81 013306 CMSTR: 9 013436 40 013440 {i 4§ 013458 G 813456 45 013460 001370 000005 001372 170000 013466 013466 000002 014052 48 013693 001364 074060 §? 013476 : 54 813500 ii 59 01;51% ERCTR $8UF (RO) ,R sCLEAR THE ERROR COUNTER :BUFFER_ADDRESS SWRDL (ROS , cncur ;WORD COUNT TO WORKING LOCATION SRMWC (RO) . CMCNT :CALCULATE ACTUAL WORDS TRANSFERED PC ;EXIT==NO WORDS XFERED $CY (RO) CMCYL #170000, CMCYL sCYLINDER ADDRESS WORKING LOCATION ssec(RoS cnsec MOV LIMIT §=1. ZROIND SAVER1 1$: 2$: L CMPB BNE :SET MFG, USER, SSF__AND FMT BITS :SECTOR € TRACK ADDRESSES TO WORKING LOCNS :DISPLAY LIMIT : CONVERT PARAMETER INTO LIMIT VALUE CI.EM THE 'ZERO’ g'u{ggxc TOR CMCNT ,R2 SCLEAR THE RS SAVE WORD éfi ?ur;;asxze GREATER THAN ONE SECTOR ? :LESS THAN use aenaxnxuc BUFFER $CODE (RO) . #5 :READ HEADER © DATA? *SET COUNTER CMCNT 2 ;COMPARE SECTOR $SSEC(RO) ,R2 ssssc(nO) CMCNT :DECREMENT WORD COUNT CMDAT :BR IF NOT : COMPARE HEADER WORDS 29 013462 49 0134 sSEE _IF READ COMMAND sBR_IF IT IS sRETURN SAVERS ggCNT.SSSEC(RO) |i ¥ gl 013434 #4,$CODE (RO) 1$ PC CHPLHT.LiMI 20 0133 21 01334 22 01335 23 013354 24 013360 25 013366 26 013370 27 013374 28 013400 013402 013406 34 35 36 013424 37 0134 sCLEAR 'FIRST ERROR' INDICATOR 28 }g 013304 16 FRSTER CMHED: MOV 5175006 (R1) (RS)+, (R1)+ 1$ 18: CMP 2$: PC,CMSTR2 (gS)o (R1)+ lz’s CMSTR2 cMAr CMPRX CMSTR2: INC RTS ERCTR PC,CMPRT PC ;ADDRESS OF COMPARING CYLINDER :SET BITS INCASE BAD SECTOR ENCOUNTER :CHECK CYLINDER ;BR _IF COMPARE OK sREPORT ERROR CW?RE SECTOR/TRACK sREPORT ERROR ;SUBTRACT HEADER LENGTH FROM SIZE :BR IF NOT FINISHED s COMPARE THE DATA PORTION s INCREMENT THE ERROR COUNT sREPORT THE COMPARISON ERROR ;CHECK THE REST OF THE HEADER ;COMPARE DATA FIELD 2746 1440 012646 CMDAT: JSR JSR BR JSR PC,GETLMT Pg.MTCH PC.NOMTCH >,=,=,g 9 01%;52 s 013254 132760 1001 CLR SEQ 0085 pur uury NN S WNNO W 295 N SR EENENEY SNWNICNINNNN 000024 &S - \JY —_— 001354 Nuf YR gg 0} 704 28283 8228 S 3282232222302 SIIJISIR2S §° SRS 8388 bflg—.fl N 013654 01 01 013670 013674 013676 001356 S W= 5 013653 NN NND NN OO\ NN NNNS NN &~ S NN — — b =D b b QONO b b oW VAN = L VYA =2 N ~ 114 013774 b 105 01 106 01 107 01374 108 013744 109 013750 110 01 728 111 0137 11; 137 113 013770 0024 b 013724 — 104 000010 2s: 7$ ;BYPASS COMPARE ROUTINE (R4) RS . ..RS (R1)+,(R5)+ AgDRESS OF PATTERN ADDRESS IN Ré RCTR #SW3,aSWR 165406 014060 3s: R3 1S PATTERN POS COUNTER COMPARE BUFFER WITH PATTERN :BR_IF NOT EQUAL ;ERRORS DETECTED ? :BR IF '? ERRORS sSWITCH 3 SET ? :BR IF NOT SET sDISPLAY THE WORD sDECREMENT SIZE COUNT :BR WHEN AT END sDECREMENT PATT POS COUNT ;BR IF NOT AT END OF PATT 4S: 177776 177777 001364 014060 001354 001 001362 6$: 014060 000005 001370 000004 000400 001370 001370 881 74 1374 000002 001424 1374 e 1375 gig” 1 7% 137, 1 001426 *RESTART THE PATTERN ; é's. ngscom\aeo CHARACTER=0 $ #-1,ZROIND :BR_IF YES sSET NON-ZERO MISCOMPARED INDCATOR s INCREMENT THE ERROR COUNTER sREPORT ERROR sCONTINUE COMPARE FRSTER 63 ZROIND R1,SAVER1 R5,SAVERS 3s gROlND $ PC.CMPRT 33 sFIRST ERROR? :BR_IF NOT $CODE (RO) ,#5 :REgD HEAD AND DATA ? ERCTR 5$: 000400 100 013713 101 10§ 013714 10 81 2 18: 000020 001364 ol 013636 013640 8}36“ 1 402 (=1=] RINEEREFREEE NN WNN ) d d — e 013614 01 013622 01 013632 000456 S b o w Ll Vi = o D e e D D ) D D D ) d o 0000000000000 000O 222 —_ 000 SRS RE S8 BB LR R RIS II VN NANIISEIGERAR2ES VAl MAIN PROGRAM 9s CMCNT ,R2 R2,46 C #256. ,CMCNT CMDAT #256. .R2 CMDAT CMCNT ,#2 CMPRX CMSEC CMSEC,SECLMT 108 CMSEC CMTRK CMTRK , TRKLMT 108 CMTRK E:c;" (SP) 0150360. (SP) :SET_THE ZERO INDICATOR :SAVE CURRENT R1 :SAVE CURRENT R5 s CONTINUE COMPARE sANY MISCOMPARIONS NOT ZEROS ? :BR_IF NONE-ALL ERRORS=ZERO sREPORT ERROR sCONTINUE COMPARING ;YE sSET_COUNTER = REMAIN BUFFER LENGTH ;1S }lffi% AT LEAST & WORDS TO MATCH PATTERN ? *BR *GREATER THAN A SECTOR ? *NO,RETURN TO COMPARE LOOP *SEf COUNTER =SECTOR SIZE *RETURN TO COMPARE LOOP :18 m% AT LEAST 2 WORDS TO COMPARE HEADER ? :BR IF s INCREMENT COUNTER sMAX SECTOR # ? :NO sRESET SECTOR # s INCREMENT TRACK # sMAX TRACK # ? :NO sRESET TRACK # s INCREMENT CYLINDER NUMBER sGET_COMPARING CYLINDER sSAVE ONLY THE CYLINDER BITS B CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 13-1 :: § F MAIN 115 014 119 1% Ha 1% %ze 7 0014622 1401 000421 119 120 014010 014014 012705 052711 122 123 0140 0140 1% ; 737 121 014 521 124 guo 125 0140 1 9 814.0 2521 1% ; 7 }gg 014056 000207 127 001372 170000 013466 13463 108: cMP BLOS BR (3p>o.cvum 108 ;LAST CYLINDER ? *NO *NORMAL RETURN,NOT WRAP AROUND TMoV 8IS ""5'36"’ #170000,(R1) ;ADDRESS OF COMPARING CYLINDER :SET BITS INCASE BAD SECTOR ENCOUNTER BEQ JSR 118 PC,CMSTR2 SMATCH SNOT MATCH CMP 198: 014040 162737 3oooo 001370 128: (WP JSR BEQ SUB (RS)+, (R1)+ (R§)+, (R1)+ PC,CMSTR2 128 *SECOND WORD OF HEADER *MATCH *NOT MATCH CMPRX #b PC,ENDCHP :COMPARE IS DONE *RETURN TO COMPARE LOOP :PRINT LAST LINE IF ERRORS #2. CMCNT 128 014046 003401 } 014050 000705 131 014052 004737 014334 BLE BR CMPRX: JSR }gg :TYPE DATA COMPARE ERRORS 136 014060 137 014064 138 ou.oeg 139 01407 140 014074 141 014100 u.g 014106 014106 014106 0164110 144 01411 145 oumg 146 014122 147 0161;6 148 014132 149 014136 150 014142 014144 151 oml.g 143 }gg 014152 154 014154 005737 001360 oo1o1g 105737 001356 10040; 004737 004737 014154 014236 000422 010146 010546 813701 13705 004737 004737 885037 005037 81%605 01 621 004737 881360 001362 014154 014236 001 001362 105737 001356 000207 155 014160 10062 159 014162 00101 157 014164 00473 RTS CMPRT: TST BNE TSTB 8M] 1$: 28: 014236 38: 48: ;1134 158 014170 104414 071610 159 014174 332 7 021214 160 814 737 3 1233 161 014 88'6‘ 7 022 16§ 14621 04 163 014212 104414 074 58: 165 169 014222 104414 07441 68: 168 014 164 014216 104414 001 16 814.5;2 3‘1,5737 177777 001356 207 78: JSR JSR BR MOV MOV MOV MOV JSR JSR CLR CLR MOV MOV JSR RTS TSTB BM] BNE JSR PC *ADJUST WORD COUNT SAVER1 28 FRSTER 18 :PRINT SAVED VALUES ? *BR IF YES *FIRST ERROR? *BR IF NOT 3s R1,=(SP) RS.=(SP) SAVER1,R1 SAVERS .RS PC.4 PC. SAVER1 SAVERS (SP)+.RS (SP)+.R1 PC.88 SEXIT ::PUSH R1 ON STACK *:PUSH RS ON STACK *DISPLAY SAVED R1 :DISPLAY SAVED RS *PRINT INITIAL MESSAGE INFO *PRINT SAVED VALUES $CLEAR SAVED REGISTER INDICATORS *CLEAR THE OTHER ONE :;POP STACK INTO RS S:POP STACK INTO R1 *PRINT REMAINDER OF MESSAGE PC.4$ PC.8$ PC FRSTER 78 5 PC Lsufl DISPLY ,EM& JSR fic.unegA JSR PC.LINE JSR :s.um BR DISPLY *COMPARE 1ST HEADER WORD .kma *PRINT INITIAL MESSAGE INFO *PRINT REMAINDER OF MESSAGE *RETURN :FIRST ERROR ? *BR IF NOT *BR IF FIRST ERROR AND PROCESSING *'DCK® ERROR *PRINT LINE 1 OF ERROR MESSAGE :DATA_COMPARE ERROR *PRINT LINE 2 OF ERROR MES SPRINT LINE 3A OF ERROR MESSAGE *PRINT LINE & OF ERROR MESSAGE G0 TO TYPE HEAD *PRINT *DATA COMPARISON ERRORS' DISPLY . czs'r. $CR=LF MoV #-1,FRSTER “SET FIRST ERROR FLAG DISPLY RTS .L PC *PRINT * : LOC *RETURN EXPCTD DATA RECEVD DATA' - {al SEQ 0086 PERF EXER MACRO V04.00 14-J4=82 15:16:58 PAGE 13-2 SEQ 0087 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 13-3 MAIN PROGRAM 169 170 171 014 23 17; 146264 g 001366 000200 164674 98: 108: *DECREMENT LIMIT COUNTER HAS $ #SW07,aSWR 108 *BR IF NOT AT LIMIT *PRINT ALL DATA COMPARE ERRORS ? ‘BR IF YES MOV R1,=(SP) :BUFFER ADDRESS JSR DISPLY PC.LINOCT ,BLNKS IT STYPE STYPE 2 BLANKS JSR PC,LINOCT sUB RTS ~N IT BNE BIT BNE JSR DISPLY O N :BR IF PC #2.(SP) <2(RS),=(SP) ,BLNKS2 <2(R1),=(SP) PC,LINOCT ,SCRLF PC *RETURN :ADJUST ADDRESS :PUT GOOD DATA ON THE STACK STYPE y STYPE 2 BLANKS :BAD DATA STYPE IT SCR-LF *RETURN ouu-aua-o-u-u NNNSNOSONNYN 88838238883 001357 ENDCMP: TSTB ;ANY COMPARE ERRORS FOUND ? 2 ERCTR :BR IF NOT *SEE HOW MANY ERRORS 18: ERCTR,=(SP) MOV PC.LINDEC JSR ,SCRLF DISPLY PC, INCTOT JSR *NUMBER OF ERRORS STYPE IT *CR=-LF : INCREMENT TOTAL ERR 28: RTS BEQ ST 001364 BEQ DISPLY 074531 001364 022746 FRSTER+1 JSR 1 ,LINSE PC.LINE7 PC *BR IF ONLY CAN'T MATCH PATTERN **NUMBER OF ERRORS=' *PRINT LINE 7 OF E *RETURN T MESSAGE ;ROUTINE TO MATCH THE DATA WITH A PATTERN, ONLY WHEN LOCATION °'PATTERN' ;1S EQUAL TO 0 (RANDON DATA PATTERN MODE). OTHERWISE, THIS ROUTINE WILL ':REIERN THE ADDRESS OF THE EXPECTED FIXED DATA PATTERN IN Ré. Vil N i 35 816623 %nn sLAST LINE OF COMPARE ERROR REPORTING sEsgpess NOO— 32583 8144 DEC MOV p—y 18 fie 0144 3 31 014424 :TYPE?UTTLagIT REACHED ? DISPLY Lee 19 5%"17 MOV : MOV JSR MATCH: MOV : : 20 014402 TST BEQ RTS - . 173 01425 176 01425 175 014 179 0142 17 178 014 179 014 63 180 01427 181 014276 182 014302 183 016308 184 01431 185 014312 186 014 187 014326 188 014332 189 190 191 19% 014334 193 014340 194 014342 195 014346 196 014350 197 014354 198 014360 199 014364 200 014370 201 014374 202 014400 203 204 205 206 207 214 8s: 001366 014 001472 000044 000002 RETURN1 RE TURN2 005326 3s: 18 *BR IF YES X3 #44 R4 (sPS .R1 #2.Ré *USE KNOWN PATTERN SPATTERN TABLE INDEX *RELOAD R1 *DECREMENT INDEX (R1)*, (RS)+ sCOMPARE THE BUFFER AGAINST THE PATTERN ASL Ré BEQ MOV 5 RS SINDAT(R4) #4 .R3 CMP :PATTERN ADDRESS IN Ré SCOULDN'T MATCH PATTERN :SAVE R1 ON THE STACK MOV BR MOV MOV SUB ;BUFFER ADDRESS R1,=(SP) PATTERN, RS BEQ 1% 2$ #BUFFER,R1 PC,MATCH *WAS RANDOM PATTERN ENABLED ? i* *BR IF PATTERN NOT MATCH sADDRESS OF PATTERN ADDRESS sNUMBER OF LOCATIONS TO CHECK po SEQ 0088 CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 13-4 MAIN PROGRAM 14444 881 5 1644 1374 81:.:.5 48: 706 002324 01445 39 03 40 0“223 766 000002 000002 S$: 41 014 6s: 012601 ‘§ 014466 i.‘ 014470 000207 014472 016037 251 01451 2s§ 014514 oos7zg 20 RTS 28 R3 33 #STNDAT R4 63 #2,2(SP) (SP)+,R1 PC .ea IF NOT soUAL. TRY NEXT PATTERN : msneo cneKING? :BR IF NOT FINISHED .me mrem ADDRESS ABSOLUTE SEXIT * INCREMENT RETURN ADDRESS R1 *RESTORE *RETURN sUSE ECC TO CORRECT THE DATA ERROR 4S5 47 BNE DEC BNE ADD BR ADD MOV 002144 48 014500 016046 002142 249 014504 oeemg 000020 250 o14.s1g 00100 001400 253 014516 005046 254 014520 016049 000022 255 014526 004737 032040 256 014530 00571 257 014532 00141 258 014534 006319 259 014536 161637 001400 260 014542 122760 000005 000024 261 014550 001007 262 014552 062737 000004 001400 263 014560 000403 524 014562 162737 001000 001400 S 014570 oezrog Y 266 014574 016037 002204 001376 014602 005337 oo1§76 267 268 014606 013737 001376 001406 269 014614 ol.gm 177760 001376 042737 000017 001406 014 006237 001406 71 014630 72 014636 006237 001406 014640 006237 001406 274 014646 104416 074606 275 014650 013746 001406 276 0146564 006216 004737 033230 277 014656 004737 032 278 01 104414 854642 579 014 0 140 001406 063737 80 014 281 014700 026037 002144 001406 82 0147 10103; 015224 137 83 01471 285 014714 856037 002206 001402 1404 sggr 014722 001376 005337 287 014726 002405 88 014 001402 89 014734 006337 1404 1 014740 770 ‘1? 014744 ECC: 18: §s: $: &S: 58: MOV SRMBA(RO) ,ECSEC ;ADDRESS OF LAST LOCN XFERED MOV ADD BNE SRMWC (RO) .=(SP) :ACT WORDS XFERED (2'S COMP) SWRDL (RO) . (SP) :ADD WORDS REQUESTED 18 CLR MOV JSR ST BEQ ASL SUB C(MPB BNE ADD BR SUB ADD MOV DEC MOV BIC BIC ASR ASR ASR DISPLY MOV ASR JSR JSR pISPLY ADD CMP BHI JMP MOV CLR DEC BLT ASL ROL BR SCLEAR NEXT STACK LOCN ( sssecmo) -(SP) secroaSIZE ;DIVIDE WORDS XFERED BY SECTOR SIZE PC,S$DIV *PARTIAL SECTOR XFERED? (SP) IF NOT *BR 28 :CONVERT INTO NUMBER OF BYTES (5P) *SUBTRACT SECTOR RESIDUE (SP) ,ECSEC :WAS opmnon. READ HEAD & DATA O) #5,$CODE(R *BR IF NOT 38’ HEADER SIZE (IN BYTES) BACK IN “ADD ¥4 ,ECSEC THE STACK POINTER ADJUST :60 3s DATA FIELD SIZE (IN BYTES) SECTOR :SUBTRACT ECSEC #256.%2 POINTER STACK me *ADJUST #6,SP COUNT POSITION ¢ scen sanecuam POSITION 6n ADJUST ECBIT SLOAD THE WORD COUNT LOCATION ECBIT,ECWRD THE BIT OFFSET COUNT *SAVE T #°C17.ECBI SCLEAR THE BIT OFFSET #17,ECWRD *CHANGE TO BYTE COUNT(DIVIDE BY 2) ECWRD :CHANGE TO BYTE COUNT(DIVIDE BY &) ECWRD gmwcs T0 BYTE_COUNT(DIVIDE BY 8.) ECWRD ° RROR BURST BEGINSAT ,LIN10A STACK THE ON COUNT WORD THE rur tcmo.-«sn *GET STARTING WORD FOR MESSAGE(DIVIDE BY 16.) (SP) convsm me WORD COUNT TO DECIMAL PC,$582D SAND PRINT IT pc.ssum % IN DATA FIELD OF ERROR SECTOR® ,LIN10B THE BEGINNING OF THE ERROR BURST *FIND ecuao écsec $RMBA (RO) ,ECWRD :SEE IF auasr WAS IN DATA READ *BR IF IN DATA READ SNOT IN DATA am - REPORT IT sccz GET THE ERROR BIT MASK smec;(no)LECMSKO :CLEAR THE UPPER MASK WORD oecnenem THE BIT orrsn COUNT ECBIT *BR IF DONE 6$ SSHIFT THE ERROR MASK ECMSKO SSHIFT THE LOWER lNTO THE UPPER CMSK1 SCONTINUE THE SHIFT $ ST RTS (sm ;RESTORE STACK SEXIT==NO WORDS XFERRED CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 13-5 SEQ 0089 MAIN PROGRAM 3 014746 014756 017737 013746 164434 00140 S 014760 04 719 16442 001402 014;94 043777 ggg 014772 052677 16441 001412 164414 001404 ;33 014776 005737 301 015004 013737 001406 001414 015002 001415 000002 002144 ggz 015015 3 015020 062737 026037 306 015034 307 015036 % 015042 001473 005037 14 310 015044 311 015052 §12 015056 13 015062 g}'s' 015070 017737 013746 047716 043777 052677 164344 001404 164332 001404 164320 316 015074 104414 075006 015106 015110 004737 104414 ozszog 07523 015120 015126 015130 015134 s 015140 323 015144 324 015150 304 015026 101 305 015030 005737 68: 8S: 164324 ECC1: 321 015100 013746 001406 ST ;cnsx1 $ ECWRD ,ECWRD1 :SAVE THE INCORRECT WORD :PUT LOWER MASK ON STACK *CLEAR ERRONEOUS ONE BITS FROM MASK :CLEAR ERRONEOUS ONE BITS FROM BAD WORD :SET DROPPED BITS :DOES ERROR GO INTO NEXT WORD ? :BR IF NO :DUPLICATE ADDRESS ADD CMP * INCREMENT ERROR ADDRESS #2,ECWRD1 :1S NEXT WORD IN THE BUFFER ? SRMBA (RO) ,ECWRD1 BEQ CLR BR ECC2 ECWRD1 ECCT 8$ ECMSKO :BR IF YES, ELSE *WAS ERROR’IN FIRST WORD ? SECWRD1,ECBAD1 ECMSK1 ,=-(SP) @ECWRD1, (SP) ECMSK1,3ECWRDT (SP)+ ,8ECWRD1 :SAVE THE SECOND BAD WORD :PUT THE UPPER MASK ON THE STACK :CLEAR ERRONEOUS ONE BITS FROM UPPER MASK ;CLEAR ERRONEOUS ONE BITS FROM DATA WORD :SET DROPPED BITS ,LINIOM ;HEADER JSR DISPLY PC,LINOCT ,BLNKS?2 STYPE Scuno :TYPE 2 BLANKS BHI ST 78: 001420 9ECWRD, (SP) ECMSKO.@ECWRD (SP)+,3ECWRD MOV 001402 QECWRD,ECBADO ECMSKO.=(SP) BIC BIC BIS BEQ 001414 001414 001414 MOV MOV MOV MoV BIC BIC BIS DISPLY MOV ECURD.-(SP) sPUT ECWRD ON THE STACK 015114 013746 001412 004737 104414 017746 004737 104414 ozszo; 07523 164252 02320§ 07523 MOV JSR DISPLY MOV JSR DISPLY PC,LINOCT ,BLNKSZ2 SECWRD,=(SP) PC.LINOCT ,BLNKS2 STYPE 5C°‘°° :TYPE 2 BLANKS :PUT @ECWRD ON THE STACK :TYPE SECWRD *TYPE 2 BLANKS 005737 001427 001414 ST BEQ ECWRD1 ECCX :PRINT THE NEXT WORD ? :BR IF NOT 330 015156 013746 001414 MOV fClflM ,~(SP) 015172 015176 015202 015206 015212 015216 331 015222 MOV JSR DISPLY MOV JSR DISPLY BR 325 015152 015162 015166 104414 004737 104414 013749 004737 104414 017749 004737 104414 000402 DISPLY 001203 JSR DISPLY 02320 07523 001420 0 3zg§ 0752 13420 02320 07523 ECC2: fCBADO.-(SP) :BR IF NO *CLEAR 2ND WORD ADDRESS JPRINT WORD CORRECTED .SCRLF PC,LINOCT ,BLNKS2 ECBAD‘I =(SP) PC,LINOCT ,BLNKS?2 5£C||RD‘I =(SP) rc.mxsgér ,BLNKS Eccx DISPLY ,LIN1OC ,SCRLF :PUT ECBADO ON THE STACK *CR=-LF ;PUT ECWRDT ON THE STACK *TYPE ECWRD1 :TYPE 2 BLANKS :PUT ECBADT ON THE STACK *TYPE ECBAD1 :TYPE 2 BLANKS :PUT SECWRDT ON THE STACK *TYPE ®ECWRD1 STYPE 2 BLANKS SEXIT :ERROR BURST WAS NOT TRANSFERED TO MEMORY 07470 0152;’6 104414 3§§ 104414 00120 334 8152 ECCX: 3;; :ROUTINE TO DISPLAY THE SECTOR WHICH GAVE THE HARD ERROR ggg 15234 000207 339 01 0 015244 1 015246 032777 001520 016001 000010 002144 163710 DISPLY RTS PRTBAD: BIT 8EQ MOV PC #SW3,asWR 8 SRMBA(RO),R1 JCR=LF *RETURN :PRINT THE BAD SECTOR ? *BR IF NOT :PUT THE END ADDRESS INTO Ri CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 13-6 MAIN PROGRAM g 015552 016046 00002 00214 015 23 066016 & 015262 gzs 015%64 005726 6 015266 000207 7 015570 005046 8 015272 016046 000022 9 015276 004737 350 015302 005716 351 015304 3s§ 015306 353 015310 354 015312 355 015314 356 015320 357 015326 032040 001403 006316 161601 000410 28: 162701 001000 122760 000005 000024 001002 358 015330 162701 359 015336 062706 000004 360 015340 361 015344 362 015350 363 015356 364 015360 365 015364 1$: 104414 104414 122760 001021 001203 075116 38: 000005 000024 368 015376 012146 369 015400 004737 023202 370 015404 104414 075234 371 015410 012146 372 015412 004737 023202 373 015416 104414 001203 378 015436 379 015440 380 015444 381 015450 382 015452 383 015456 384 015460 004737 004737 023202 104414 001203 385 015464 005302 ggs 015466 001366 7 015470 48: 58: (SP)+ PC -(SP) ;RESTORE STACK SEXIT==NO WORDS XFERRED *MAKE THE UPPER DIVIDEND 0 JSR PC,SDIV :DIVIDE BEQ ASL SUB B8R SUB C(MPB 28 (SP) (SP) ,R1 33 #256.%2 R1 #5.SCODECRO) B8R IF IT IS = COMPLETE SECTOR TRANSFERED *CONVERT THE RESIDUAL SECTOR INTO BYTE COUNT *SUBTRACT IT FROM THE END ADDRESS SFINISH THE SIZING *SUBTRACT FULL SECTOR FROM END ADDR (IN BYTES) :WAS OPERATION READ HEADER & DATA ? SUB ADD ¥4 R #6.SP CMPB~ #5.SCODECRO) DISPLY MOV JSR ,LINT1 R1,=(SP) PC.LINOCT MOV ST BNE DISPLY DISPLY 1$ $SSEC(RO) ,~(SP) :DIVIDE THE WORDS XFERED BY THE SECTOR SIZE (SP) {3 ,SCRLF ,LINTIH 43 68: *REMANDER = 0 ? :BR IF NOT :SUBTRACT HEADER SIZE FROM ADDR *RESTORE THE STACK POINTER :CR=LF *PRINT THE HEADER :WAS OPERATION READ HEADER & DATA ? *BR IF NOT HEADER® STYPE "ADDR *PUT THE ADDRESS ON THE STACK “TYPE THE ADDRESS 3 BLANKS STYPE MOV JSR DISPLY MOV JSR DISPLY (R1)+,=(SP) PC,LINOCT ,BLNKS1 (R1)+,=(SP) PC,LINOCT ,SCRLF *PUT WORD ON STACK STYPE THE 1ST HEADER WORD STYPE 1 BLANK *PUT WORD ON STACK STYPE THE 2ND HEADER WORD *CR=-LF DISPLY MOV MOV LLIN11A #8..R2 R1,=(SP) DATA' :TYPE 'ADDR PER LINE WORDS 8. DATA *PUT THE ADDRESS ON THE STACK JSR 02320 104416 07523 020160 002144 001412 104414 075234 012149 ST RTS CLR DISPLY ,BLNKS3 367 015372 104414 075232 375 015422 104414 075212 376 015426 012702 000010 015432 o1o149 ,=(SP) :FIND THE BEGINNING OF THE SECTOR (RO) DL SWR C :SUBTRACT THE WORDS NOT TRANSFERED (RO) - (SP) SRMW BNE 104414 075171 010146 366 015366 004737 023202 SEQ 0090 MOV ADD BNE 00100 n7 PC.LINOCT DISPLY ,BLNKS R1,SRMBA(RO) CMP 7 BEQ DISPLY ,BLNKS1 (R1)+,=(SP) MOV JSR PC,LINOCT DISPLY ,SCRLF DEC BNE R2 6$ *TYPE THE ADDRESS STYPE 2 BLANKS :PRINTED ALL THE SECTOR ? :BR IF ALL PRINTED STYPE 1 BLANK *PUT THE DATA ON THE STACK STYPE THE DATA *DECREMENT THE HORIZONTAL COUNT *BR IF NOT AT THE END OF THE LINE *CR=-LF *RESTORE THE WORDS/LINE COUNT *CR=-LF *RETURN 8s: £g BR DISPLY ,SCRLF DISPLY .SCRLF RTS PC %3‘ ‘?REI‘"E TO DO AN RTC = DRIVE SELECTED IN RO 395 : MOV 97 : RE TURN 388 015474 000754 389 015476 104414 001203 390 015502 104414 001203 ;31 015506 000207 8 o ;96 7s: : JSR #DPB, RO PC,RTNCTR *CR=-LF :DPB ADDRESS CZRNAAO Rflgg PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 13-7 N 7 SEQ 0091 MAIN 399 015510 400 015514 401 8155 2 402 015526 403 015530 28‘5' 015532 RTNCTR: MOVB 111037 067559 (RO),GENDPB :MOVE THE DRIVE # TO THE GENERAL DPB < COMMAND CODE genopmcom mc MOVB :DRIVER ENTRANC JSR :DPB ADDRESS FOR COMMAND GENDPB “DRIVER DIDN'T ACCEPT COMMAND 1$ BR *RETURN PC RTS 112737 000117 067560 18: 004037 041000 067556 000774 000207 :gmms TO DO A RECALIBRATE USING ACTIVE DPB 28‘7’ : ¢ 408 409 : 2}9 . MOV JSR RETURN 412 015534 #DPB,RO PC,RECALT :DPB ADDRESS 010037 015560 RECALT: MOV 413 015540 116060 002140 000027 MOVB 41% 015546 112760 000107 000002 MOVE RO,2$ 416 015560 417 015562 418 015564 419 015570 420 015572 421 015576 422 015602 423 015606 424 015612 425 015616 O m ADDRESS 1$ :DRIVER omu T ACCEPT THE COMMAND $TATUS (RO) *SEE IF 1 ISHED ss - :IF £Q DDR oscaenem THE ADDRESSES <sfi)+ smsv»zmb) :MOVE THE CYLINDER ADDRESS (SP)+.SPREVA+1(R0) *MOVE THE TRACK ADDRESS (SP)+.SPREVA(RO) *MOVE THE SECTOR ADDRESS $CYL (RO) ;CLEAR THE CURRENT CYLINDER ADDRESS $SEC (RO) *CLEAR THE CURRENT TRK/SEC ADDRESS 415 015554 004037 041000 259 015622 428 oooogo 000774 005760 001775 004737 012660 112660 112660 005060 005060 000207 1$: 28: 38: 000016 023254 000034 000033 000032 000012 000010 430 : : : gg 015 112737 000107 435 015632 436 015636 437 015640 438 01564 004037 041000 067556 000774 oosr;r 067574 229 015650 000207 439 015646 RO,RM80 START THE RECALIBRATE PC *RETURN :ROUTINE TO A RECAL WITH NO DPB ACTIVE sCALL: 431 43% LWORD BR ST BEQ JSR MOV MOVB MOVB CLR CLR RTS . 429 JSR THE DPB ADDRESS snncsmm spnevbmo: ;SAVE THE PREVIOUS COMMAND #RECAL scomo(am *LOAD THE NEW COMMAND 067560 RETURN RECALO: MOVB 1$: 28: 001775 JSR #DRIVE,GENDPB PC,RECALO #RECAL Genomscm JSR RO,RM80 GENDPB BR 18 ST GENDPB+STATUS BEQ RTS 28 PC 4.53 ;UTILITY READ HEADER ROUTINE 460 461 sog 46 464 265 : ; ; ; ! SCALL: 45 429 15% 116637 468 015 116637 293 };«7,2 % ; 471 15900 112 ir 173 067560 aeu.cmmre COMMAND a ENTRAN m ESS ron COMMAND DRI ea DIDN'T ACCEPT THE COMMAND :SEE IF FINISHED *BR IF NOT FINISHED MOV MOV MOV MOV JSR RETURN #DPB,RO :DPB ADDRESS #SECTOR,=(SP) :SECTOR ADDRESS #TRACK,-(SP) :TRACK ADDRESS #CYLINDER,=(SP):CYLINDER ADDRESS MOVB ma (SP) . GENDPB+S$SEC *SECTOR ADDRESS ( m seuganosm v +CYLINDER ADDRESS 7567 READHD: MOVB 75 75 :DRIVE ADDRESS PC,READDR &4(SP) ,GENDPB+STRK MOVB mnbceumoscohco :TRACK ADDRESS :ccmmnaE CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 13-8 SEQ 0092 MAIN IN PROGRAM 177776 041000 MoV 067562 2$: 067574 g-? GENDPB+SWCNT 0,RM80 1$ ENDPB*STATUS (SP) ,6(SP) 000006 000006 #6,5P ‘WORD CTR = 2 :DRIVER ENTRANCE :DPB ADDRESS FOR COMMAND *DRIVER DIDN'T ACCEPT COMMAND *FINISHED? :BR IF NOT ~ sADJUST STACK FOR RETURN sADJUST RETRUN POINTER sRETURN :QETRV THE PRESENT OPERATION MoV RETURN1 RETURN2 OWVIONNWVIVION =N NDONVWNO ) =d \ N =2 491 015744 492 015750 493 015754 494 015756 495 015760 496 015764 497 015770 498 015772 499 916000 500 016002 501 016006 502 016010 503 016014 304 016016 505 01602 506 016026 507 016030 508 016034 309 016042 510 016044 311 016046 312 01605 016056 513 314 016060 15 016062 516 016066 000774 8sssa§asgssg INSI 489 490 Qi - 478 Q1373 47% 015720 475 015722 476 015724 477 015730 478 01573 479 015736 480 015742 481 482 483 484 485 486 487 488 12737 ~ 015706 Snas8% 472 $RETRY: 1 $: 016710 000016 001331 000002 000200 001326 002154 002154 001331 001330 001331 sRETRY COUNT :RETRY UNSUCESSFUL :SUCESSFUL RETRY *NOTE: IF A DIFFERENT ERROR OCCURS DURING *RETRY, THE ROUTINE EXITS TO *ERPRC1’ PC,GODRIV ;RE=START COMMAND #2,(SP) 5$ * INCREMENT RETURN 160 TO EXIT $TATUS (RO) 1$ 28 RETRY+1 :COMMAND F INISHED? *BR IF NOT *BR IF ERROR * INCREMENT RETRY COUNT :DID COMMAND TERMINATE NORMALLY ? #BIT7,$TATUS(RO) :BR IF NOT 7 . *IS ERROR MASK 0 ? MASK :BR IF NOT 3s *MAKE SURE THAT THE DRIVE ERROR REG IS CLEAR $RMER1 (RO) 000016 001326 #COUNT ,RETRY PC,SRETRY 4$: 5$: 6$: 63 4 MASK, SRMER1(K0) 6$ RETRY+1 RETRY,RETRY+1 :BR IF NOT *CONTINUE RETRY :SAME ERROR? :BR IF NOT * INCREMENT RETRY COUNT :DONE ? PC PC,LINES PC.LINE? *RETURN *REPORT DIFFERENT ERROR *PRINT LINE LINSM **DIFFERENT ERROR DURING RETRY' SRETRY ;.;.fin 7$: ERPRC1 :BR IF NOT DONE ‘32‘#33;5 STACK POINTER FOR DIRECT RETURN *REPORT THE ERROR 3&32&£fi33828Gfl3338%8%&3¥&%3838383¥fifi3838:33?35380a~ouau~a MAIN P 2OUI1NE TO UPDATE THE PERFORMANCE SUMMARY STATISTICS D b b O RRRRL &NO SOeSS RIFVRURRR J3sR8N oMM O000O0C ) ) D e i =D RETURN 000300 000016 002144 000006 016240 016240 so,$CODE (RO) sgss;n'r‘oOPERATION AN AUTO WRITE CHECK ? 016240 000062 000060 016240 000040 858540 000036 D D e D cnd D D oN -l 000060 000024 ocooONOrOrONONON :SEE IF comwo WAS A WRITE oo N 70 2$: FACTOR: &~ o g'xt vxgno WORD OVFLO AFTER ADDING CARRY? SWRITN+2(R0) SWTOFL (RO) :CLEAR HIGH WORD “AND COUNT WRITE OVERFLOW #2.8CODECRO) :SEE IF COMMAND WAS A WRITE SENDAT+2(R0) : ;ucaoomam *AND COUNT READ OVERFLOW 0 ;USED FOR WORDS TRANSFERED v’ CARRY FACTOR sRm( ;UPDATE THE READ WORD COUNT iDID K1'6‘:40 WORD OVFLO AFTER ADDING CARRY ? ggmoé RO) SREAD+2(RO) :CLEAR HIGH WORD 3s: & ;ADD WORDS WRITTEN DURING WRITE DATA sganmzmo 3s *BRANCH IF YES ncron.senomnoi :END OF PASS DATA WORD COUNT 000066 000070 000064 :BRANCH IF YES ncron.suaxm(aoi 1$: 000056 o *CONVERT TO A WORD COUNT 18 000062 =k ek B FACTOR #2,8CODEC(RO) 000024 b ed 1 3$ :BR IFnbATA TERMINATION ORE THE FINAL BUFFER ADDRESS SRMBA (R0) ,FACTOR’ SgUF (RO) ,FACTOR; uamcf rue INITIAL ADDRESS :BR IF NO DATATRANSFER 3 000024 000002 OO0C0OOOOOOO O0O0O00O0OO —d D b D D ) D and D D :DPB ADDRESS #B1T07!BIT06,$TATUS(RO) ;CHECK FOR DATA TERMINATION STATIS: 016240 000002 O 2 #DPB,R 0 PC,STA TIS .WORD sROUTINE TO GET A BUFFER CALL #DPB,RO -(SPJ PC,GETBUF :DPB ADDRESS SCLEAR THE STACK ;BUFFER ADDRESS WILL BE ON THE STACK — GETBUF: H VIAWNES 8 8 gN;m&”bl\l e P Paur P P O Pur Prur Pour [=lelelelalelele o] *STACK WILL BE ZERO IF NO BUFFER AVAILABLE g‘=(SP) R3.=(SP) ftal. R2 001654 001656 000020 R1,=(SP) :SAVE R NUBER OF semwe BUFFERS :BR IF NONE AVAILABLE ;FIRST ADDRESS OF ALLOCATION TABLE ggRDL(RO).Z(Rl):SEE IF THERE IS A BLOCK LARGE ENOUGH JBUFT +2,R1 000002 R 000010 SAVE R1 :SAVE R 2$: 5 #4,R1 1& (R1),10(SP) CH IF IT IS DECREHENT TABLE COUNT :BR IF THROUGH TABLE : INCREMENT TABLE POINTER :CONTINUE LOOKING :BUFFER ADDRESS TO STACK Wy SEQ 0093 CIRNAAgongO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 14 SEQ 0094 3s: 001654 SWRDL (RO) SURDL(Rg).(R1) Sgflb :BR IF DIFFERENCE IS ZERO ;CONVERT # WORDS TO BYTES :MAKE NEW STARTING ADDRESS RETURN # BYIES TO WORDS BUF TBL $ :DECREMENT ENTRIES COUNT BR IF ALLOCATION TABLE EMPTY == 5$: — ;RETURN ECRE*NT TABLE COUNT BR IF ITEM WERE LAST ENTRY VE TABLE POINTER HO :POINT TO NEXT ENTRY :MOVE ITEMS 4$: WS 8822828838 =2 NN o O =N =N b Gootas 00002 e (=l=l=] ;RDL (RO) ,2(R1) sADJUST BUFFER WRD CNT 000002 (SP)+,R3 (SP)+.R2 (SP)+.R1 PC sDECREMENT TABLE COUNT s CONT INUE &F NOT AT END OF TABLE ;RESTORE R :RESTORE R2 RESTORE R1 TURN :DPB ADDRESS O0O0O0O0000 RS 001656 001654 $ SHLDWC (RO) ,R3 000110 s82ss Sudshas R 18: $BUF (RO) ,R3 ).R3 WN—-— SNIN— - 3 —_— #DP8,RO PC.RELBUF RELBUF : BEGI'NHG OF TABLE :ENTRY COUNT :BR IF EMPTY TABLE sTRIAL ADDRESS :CHANGE TO BYTE COUNT ;ADDRESS OF HIGHER ADJACENT BLOCK :UPPE":AggACE BLOCK :BR IF : INCREMENT POINTER :DECREMENT ENTRY COUNT :CONTINUE SEARCHING :PUT THE BUFEERBID.OE'K‘TINTO THE TABLE ENTRY COUNT mcneneht T R2 FOR USELATER 000002 aw§d° FRFSERANIS OO o o 2222222 PR RRRE, SFNSRSERRS ::::::§§§§g§§§§ AN ] s CALL: 0000000000000 ~ 0 - e R S WN=O B 000020 sROUTINE TO PUT BUFFER BACK IN TABLE OOO0O0O00OC AN R onSo32335Res28se RO RES 8B RIR NP AR2EISIF re — NNOOOSe =3 dgS8 RHBAg PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 14-1 :INCREMEN *SEE IF A LOWER ADJACENT BLOCK IS IN THE TABLE *BLOCK ADDRESS to TABLE c$: D CNT TO TABLE mc?sneinENTRY COUNT SEXI 000002 sRELEASED BUFFER IS LOWER ADJACENT 4$: 2.~(SP) suhsL R2 SAVE R s INCREMENTED WRD CNT :ENTRY COUNT SEQ 0095 R S5 % = = NN 000002 Ré& (RS) ,R& VIS 8s: MOV MOV 6$ #4,RS R2 5% (SP)+ 8s (SP)+,R2 2(R1) ,2(RS) BUF TBL R1.RS #4 RS (R§)+, (R1)+ ;RS)#.(R1)0 MOV G §°O°O° 6%: 78: W ~ gg=ezes giury #BUF TBL+2,R5 2(R5) ,Ré& R&, (R1) = SS9k NaR% SXES YL MOV Gl ;BEGINNING OF TABLE sBLOCK SIZE (IN WORDS) sCHANGE TO BYTE COUNT sADD BLOCK BEGINNING ADDRESS sR1 STILL POINTS TO }g{gmeo ENTRY : INCREMENT POINTER :osgnenenr ENTRY COUNT :CONTINUE LOOKING ;RESTORE STACK POINTER ;RESTORE R2 s INCREMENT LOWER BLOCK LENGTH sDECREMENT ENTRY COUNT ;GET READY TO COMPRESS s INCREMENT TO NEXT ENTRY :COMPRESS TABLE sMOVE SIZE FIELD DOWN sDECREMENT ENTRY COUNT sBR _IF NOT FINISHED sRESTORE R5 sRESTORE Ré sRESTORE R3 sRESTORE R2 sRESTORE R1 sRETURN N o ~ N Qi N & N 5222588 o~ 3o G Qr G P e P P b”m% AR e e e Lo §%g wviwn Ghr P ghryd D d e e D o Vi b d OO OONONONONONONONONONON b D =D =D OOO0O000O 0000000000000 O0O0O0000O b1 H :DPB ADDRESS $BUF (R0) H LOAD BUFFER ADDRESS INTO THE DP8 #BUFA,DR #PATTERN,SPATTC(R0) sPATTERN CODE #DP8,RO geeet 8 S8 b FILBUF: 1$: MOV 2$: MOV #4,$CODE (RO) 43 $8UF (RO) ,R1 $WRDL (ROS ,R2 ,Ré TTC SPA(RO STNDAT (R4) RS '(‘R )+,(R1)+ 3s: 4 -~ S 000024 NS~ O = d e d e — o RRRee e W3342 XIS §§= N:NER g&& ) D wd wd ) wd wd d b OOOO0O0O000 PC,FILBUF OO0 D b —d ) D b e e O D e o oD o o D e b d e o £ 1656 rd .E{tli THE ASSIGNED BUFFER (IF WRITE OR WRITE CHECK COMMAND) P I N RAAY N EhA A AE ARAY At et T R N N VIS BB BB BaW ) cd b D ) D wd ) ) b b — b b b e b b wd b T W Y SISARIKSEIBVFRRGR= b e —— g— -~ ) o e b (a] ~ § : PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 14-2 4s: RESREG RTS R3 gs $ PC sSAVE THE REGISTERS :SEE_IF READ COMMAND :BR_IF READ ;BUFFER ADDRESS sPOSITIVE WORD COUNT SRELATIVE PATTERN ADDRESS sPATTERN ADDRESS sPATTERN COUNT sMOVE THE PATTERN INTO THE BUFFER sDECREMENT THE WORD COUNT sBR IF DONE_ (WORD COUNT = 0) sDECREMENT THE PATTERN COUNT :BR IF MORE PATTERN sCONTINUE DISTRIBUTING THE PATTERN .zggmi THE REGISTERS :START THE COMMAND FOR THE DPB IN RO sCALL: MoV JSR RETURN #DPB,RO PC,GODRIV :DPB ADDRESS CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 14=3 SEQ 0096 MAIN PROGRAM 1 816712 8101 g9 016722 1;§ 174 016712 175 016716 1;9 016722 004037 0167 179 180 016 1 8167 4 1 178 0167 560 02 181 016742 1a§ 016750 00141 gr 18 81675 560 184 0167 185 016764 062760 041000 000207 1$: 28: JSR LWORD HALT MOV ADD ADC 1 000046 000050 38: RO,=(SP) RO sSAVE RO.RM80 O CALL THE DRIVE HANDLER DRIVE BLOCK ADDRESS GOES HERE RO, 2$ nsofienc(am :CURRENT DPB ADDRESS DRIVER REJECTED REQUEST :RESTORE RO : INCREMENT THE OPERATION COUNT ADD ADC ADD $OPERCs mew mo).scvuno)I'bD!D COMMAND REQUIRE A CYLINDER CHANGE ? :BR 3s #1,$ENDSK (RO) INCRERNT END OF PASS SEEK COUNT ANY CARRY ;ADD SENDSK+2 (RO) #1,$P0SIT(RO) lNCRE*NT SEEK COUNT RTS PC CMP BEQ 000034 000012 000001 000042 000044 000001 000052 186 016772 005560 000054 187 016776 MOV GODRIV: MOV ADC sPosmzmm ;ADD ANY CARRY SEQ 0097 :ROUTINE TO SETUP PARAMETERS FOR A SEQUENTIAL READ OR WRITE OF THE DISK praas MOV ) OR OV R wov #DPB, RO #-2,8PACK(RO) #=1.SPACK(RO) #1.$PACK(RO) N -8 P G R wVion on WRTPK: ~ &~ =1 ~N NN LA ~ e e b B JSR __ PC.WRTPK NN (24 MAIN 6 : : RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 15 01 01 owo1g 017012 017016 017020 017024 017030 017032 005760 001011 005760 000046 001006 012704 000010 004737 020130 000462 000000 017034 116060 002140 000027 017042 017050 017056 01 016060 016060 016060 016060 oooo1g 000012 oo%m 002174 000032 000034 000010 000012 017072 032760 001000 002172 1 017100 001402 18: 017106 omga 7 017112 004737 017116 000427 9 017120 %0 017126 A gm :.g 1ms 43 017150 & 3'"23 45 0171 ‘9 817194. 116060 11 01 1 122760 14 ;;7 471 47 017172 23 017174 000744 17176 1;70‘ 1 017 13705 ‘ 17, 17212 4 ;7 12 01 gg 17, is 01 105 17, 7 28: 10 020130 10 000140 11 ooo% 12 0001 ogggol. 88383‘ 6 177776 031370 161762 0014 3 1 ; ;'WRITE PACK' FLAG :'READ PACK® FLAG SCALL READ OR WRITE PACK : GE T _ADDRESS LIMITS 1S :IS THIS THE FIRST OPERATION ? :BR IF NO 1S THIS THE FIRST OPERATION ? :BR IF NO *GET INDEX TO SECTOR ADDR STGRAGE IN DPS :60 CHECK DISK ADDRESS LIMITS *BR IF NOT AT END OF SEQUENTIAL ADDRESSING *SHOULD NOT GET HERE SOPERC+2(R0) 18 $OPERC (RO) 1$ #SSEC R4 PC,CKLMTS 3s MOVE MOV MOV MOV MOV SRMCS1(RO),SPREVO(RO) $SEC (RO) , SPREVA (RO) $CYL(RO) SPREVA+2(R0) (ROJ , $SECA (RO) SRMD SRMDC (RO) . $CYL (RO) BIT OF ;IS SSEI STILL SET ? #SSEI,SRM(RO) DEC $SEC(RO) MOV JSR BR :;SAVE CURRENT PARAMETERS *SAVE PREVIOUS TRACK/SECTOR ADDRESS :SAVE PREVIOUS CYLINDER ADDRESS :CURRENT SECTOR & TRACK ADDRESS *CURRENT CYLINDER ADDRESS 28 :BR IF NOT #SSEC R4 PC,CKLMTS 3 :GET INDEX TO SECTOR ADDR STORAGE IN DPB *G0 CHECK DISK ADDRESS LIMITS *BR IF NOT AT END OF SEQUENTIAL ADDRESSING “IF SO, THEN BACKUP ONE SECTOR TO REFLECT THE *PROPER ADDRESS TO BE ACCESSED WHEN READING OR *WRITTING THE NEXT SEQUENTIAL SECTOR. :RESET SECTOR ADDRESS MINSEC(RO),$SEC(RO) MOVB *RESET TRACK ADDRESS .$TRK(RO) MINTRK(RO) MOVB RESET CYLINDER ADDRESS ) O R ( ;SCYL (RO) MINCYL MOV :;SET CODE TO READ DATA #4,SCODE(RO) MOVB #-2,SPACK(RO) :WAS WRITE DATA PACK iN PROGESS ? CMPB *BR IF YES (START TESTING) 23 BEQ *DROP THE DRIVE (NORMAL TERMINATION) PC,EOP2 JSR BIT | 38: 000020 PC,GETLMT :'WRITE PACK' & 'TEST' FLAG ST BNE ST BNE MOV JSR BR HALT BEQ 017102 005360 000010 4 JSR :DPB ADDRESS 8833510 000004 &S: #SU04 , 3SWR SIS SWITCH & SET ? *BR IF NO *RE-CHECK FOR BSF & SSF TRACKS ;GET INDEX TO SECTOR STORAGE :WORD COUNT IS MAXIMUM *CHECK WORD COUNT FOR MAXCYL/MAXTRK BEQ B8R MoV MOV JSR 93 2 #$SEC R4 WRDCNT.RS P, CHKWC INCB $WRDL (RO) , SWCNT (R MOV g'x‘g MOV R ;uaouuo» z #7 . SWRDL (RO) SWRDL+1(RO) SGET WORD COUNT .-'s‘scroa BOUNDRY FOR WRITTING -fit TO ONE SECTOR :STORE FOR 2°'S COMPLEMENT WORD T CZRNMO RM80 PERF EXER MACRO VO04.0C 14=JAN-82 15:16:58 PAGE 15-1 SEG 0098 SIBIFANAN 089‘832%2833 MAIN PROGRAM NN b D et NNNNNNNNNNNN COO000 O0O0O0O0O0O0O0O0O0O00O °°° o e o D o e e o e D o e 18 §°§‘*’§§ 0 SERDL(RS)+SHLDWC (RO) 000110 g #256.,$SSEC(RO) ;SECTOR SIZE FOR READ 000022 6Sls'ACK(l!O) 000026 5$: 001440 . ;HOLD WORD FOR_°RELBUF° ROUTI'! ; CHANGE WOR D COUNT TO 2°'S COMPLEMENT #4 ,$CODE (RO) sREAD Ok WRITE PACK ? | :BR 1 IF WRITE ( CODE FOR READ DAT ;nbw $COMND (RO ) RDONLY 5 scoomm IVE coos FOR OPERATION :SET UP foa EXIT LOCKED é's‘ READ ONLY MODE ? :BR IF :CODE FOR WRTDAT (RO) 0P CODE Mo :GET m?sm CODE *PATTERN CODE smmcmm § g-iSNEXT (RO) SSET P\MTERS SELECTED INDICATOR sRET P 28 177777 000122 Ur PACK $PACK(R0) SNEXT (RO) (SP)+ MAIN sSET °TEST FLAG :SET DPB 'TEST' FLAG :CLEAR 'PARMETER SELECTED' INDICATOR C EAR ‘S’TACK LEVEL sJUMP TO MAIN BACKGROUND LOOP SEQ 0099 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 16 MAIN PROGRAM 161540 :DPB ADDRESS PC ssnm sGET ADDRESS LIMITS csuo aswR 1$ sSEE IF SUO SET :BR IF SET = READ ONLY Heps ~ S N P o -~ N 18: 2$: sgm.as sSELECT READ OPERATION CODE :SWAP BYTES IN RS l“fl RS ;MASK OUT ALL BUT BIT 0 :TABLE OFFSET FOR READ CODE :COMMAND SELECTION CODE TO CONTROL BLOCK assncoomm (R0) sSECTOR _AND TRACK SRMDA (RO) , SNSEC (RO) ;CYLINDER NUMBER $RMDC (RO . SNCYL - =~ THEAD: :IF SO, RANDOM RANCYL ENABLE RANDOM ADDRESS SELECT ? : YES Yy o 888 2$: 3s: :PROPER ADDRESS TO BE ACCESSED WHEN READING OR :WRITTING THE NEXT SEQUENTIAL SECTOR. ?gPERC*Z(RO) gg I’F“'sfl THE FIRST OPERATION ? $OPERC(R0O) :1S THIS THE FIRST OPERATION ? #SNSEC R4 sGET_INDEX TO SECTOR ADDR STWGE IN DPB RANSIZ :G0 CHECK FOR RANDOM WORD SIZE 2s 1$: THEN BACKUP ONE SECTOR TO REFLECT THE $SEC(RO) 3s: FaRRE \Nfi\h ~J & ~ FREELY IZ .R5 2$ g§SEI.SRMF(RO) &S‘ ;SS'E‘I,' STILL SET ? o vI N 000116 000120 ;CYCLE THE RANDOM NUMBER GENERATOR LOCKED lN READ ONLY MODE :BR_IF :READ/WRITE SELECTION DIVISOR ;GET SELECTIONVALUE :DETERMINE IF READ OR WRITE :BR IF_READ :SELECT WRITE DATA COMMAND ;SELECT ADDRESS PC.GETREM .RATIO 002172 d b - S b b b d o NNNNNNNYN aobm.v #8. .RS NNNNIN O000O0 —b d b e o o wed D OO0O00O0O0 GENPAR: 027462 b b OOOOOOO0 000 SE RS S R #DPB,RO PC,GENPAR O00O00O0O0O0O0O0O0O S BRS B RN R R RN NS SRV A R i = O 00NN N ;GENERATE PARAMETERS FOR THE OPERATION sCALL: :BR IF YES PS.CKLHYS 160 CHECK DISK ADDRESS LIMITS :BR IF NOT AT END OFSEQUENTIAL ADDRESSING 3 (R ) RESET SECTOR ADDRESS MINSEC(RO),SNSEC sRESET TRACK ADDRESS MINTRK (RO) , SNTRK (RQ) ;RESET CYLINDER ADDRESS ?iNCYL(RO).mCYL(R ;RE=CHECK FOR BSF & SSF _TRACKS J 8 SEQ 0100 MAIN PROGRAM 1 838153 81 §& 017600 1 017604 056005 S 017610 9 017612 017616 8 017620 9 0176%3 001407 166005 000130 005205 004737 032014 066005 000130 :GENERATE A RANDOM CYLINDER ADDRESS BETWEEN VALUES °'MINCYL®' & 'MAXCYL' RANCYL: MOV CMP BEQ Su8 INC JSR ADD MOV S ;GET MAXIMUM CYLINDER ADDRESS MAXCYL(RO),R HINCYL(RO)RS 'HINCYL' AND °"MAXCYL®' THE SAHE ? 1$ ngucvuno)LRS PC,GETREM HINCYL(RO) *BR IFTHEY ARE _GET NUMBER OF ALLOWABLE CYLINDERS : INCREMENT DIFFERENCE ro USE AS DIVISOR *GET THE RANDOM AUGMENT NEH CYLINDER ADDRESS ns.sucvuab» *STORE CYLINDER ADDRESS IN DPB 010560 000120 18: 14 817634 016005 000132 RANTRK: MOV MAXTRK (RO) ,RS 001407 1 S 000134 BEQ SUB MINTRK(RO),RS sGET MAXIMUM TRACK ADDRESS 16 017644 17 017646 CMP INC JSR ADD 1$ MINTRK(RO) ,RS RS PC,GETREM MINTRK(RO) R an IF THEY ARE :GET NUMBER OF ALLOWABLE TRACKS INCREHENT DIFFERENCE TO USE AS DIVISOR *GET THE RANDOM AUGMENT NEH TRACK ADDRESS }g 017630 }g 15 017640 026005 0001 18 017652 OOS%OS 19 017656 004737 032014 000134 066 20 017 :GENERATE A RANDOM TRACK ADDRESS BETWEEN VALUES 'MINTRK' ¢ *MAXTRK* %% 017664 110560 000117 1$: 25 017670 RANSEC: MOV %2 26 017674 27 017700 28 017702 %8 017706 017710 31 017714 016005 026005 001407 166005 005;05 004737 066005 000136 000140 000140 032014 000140 g 017720 110560 000116 gg 36 0177264 37 0177 012704 004737 RS.SNTRK(Rb) STORE TRACK ADDRESS iIN DPB :GENERATE A RANDOM SECTOR ADDRESS BETWEEN VALUES °'MINSEC' ¢ *MAXSEC' 18: CMP BEQ SUB INC JSR ADD MOVB MAXSEC(RO) ,RS MINSEC(RO),RS 18 ngnsecmo;LRS R PC,GETRE HINSEC (RO) :GET MAXIMUM SECTOR ADDRESS 'HINSEC' AND *MAXSEC®' THE SAME ? :BR IF THEY ARE :GET NUMBER OF ALLOWABLE SECTORS :INCREMENT DIFFERENCE TO USE AS DIVISOR *GET THE RANDOM AUGMENT NEU SECTOR ADDRESS RS, snssctnb) *STORE SECTOR ADDRESS IN DPB :MAKE SURE ADDRESS JUST GENERATED IS NOT °*BSF*' OR °*SSF*® TRACK 000116 020130 38 017734 000404 39 017736 004737 037024 40 017742 000137 017600 MOVB :"MINTRK® AND °"MAXTRK®' THE SAME ? MOV JSR BR JSR JMP #SNSEC R4 PC,CKLMTS 23 PC, SRAND RANCYL :GET INDEX TO SECTOR ADDR STORAGE IN DPB GO CHECK DISK ADDRESS LIMITS BR IF NOTAT END OF SEQUENTIAL ADDRESSING *CYCLE THE RANDOM NUMBER GENERATOR *GO GENERATE NEW ADDRESS 25 017746 28: fi :GENERATE A RANDOM BUFFER LENGTH BETWEEN 6 © THE VALUE IN 'WRDCNT' 45 017746 46 017752 47 817756 48 017760 49 017762 50 17763 51 01777 si 017774 g‘ 020000 55 020002 56 020006 57 013705 005737 001011 oos;os 004737 020527 oozoo; 004737 000762 omg& 004737 4 001462 001474 RANSIZ: MOV 032014 000006 037024 1$: 000116 2s: 020330 ST BNE INC JSR CMP BGE JSR B8R MOV JSR WRDCNT RS RANDWC 28 RS Pg.GETREH RS.#6 $ PC, SRAND RANS1Z #SNSEC R4 PC, CHKWC :GET MAX WORD COUNT *SELECT A RANDOM WORD COUNT ? :BR IF NOT * INCREMENT ms MAXIMUM WRD CNT DIVIDE BY MAX VALUE *WORD COUNT LESS THAN 6 ? :BR IF NO SCYCLE THE RANDOM NUMBER GENERATOR :GET INDEX TO SECTOR STORAGE *SEE IF WORD COUNT IS TOO LARGE TO FIT *IN REMAINDER OF TRACK. IF SO, msu ADJUST mo CZRNAAO RM80 PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 17 SEQ 0101 3$: 000377 48: 000400 000020 CMPB oi.sncoomm BIC mr RS BNE Rov MOV agsufiounm D _COUNT TO FIT ON TRACK. §0—i—0—§ FEFNIS giase 000002 000114 (TR TR IR TR £ RHBAg PERF EXER MACRO V04.00 14=~JAN-82 15:16:58 PAGE 17-1 IS & 2BS2ORSS £29098 833833 Z — €z TE OPERATION ? IF NO TTING PARTIAL SECTOR ? IF NO, ELSE, ;E AT LEAST ONE SECTOR COUNT :GET A RANDOM PATTERN NUMBER 000002 020070 000115 177777 000114 000122 RANPAT: CMPB BNE JSR MOVB RANXIT: MOV RTS #2, sucoomm RANX]IT PC,GETPAT RS.SNPATC(RO) c-i LSNEXT (RO) ;WRITE OPERATION ? :BR_IF NO :GET PATTERN CODE :MOVE PATTERN CODE TO CONTROL BLOCK ISQE;U;:MTERS SELECTED INDICATOR ;ROUTINE TO SELECT A PATTERN 000020 001472 GETPAT: MOV 037024 032014 PATTERN MOV BR PATTERN,RS 2 ST BEQ ASL sgrm BEQ 001472 18: 2%: #6. RS ST JSR JSR RTS 1$ PC, SRAND pc GETREM PC sSELECT PATTERN :ENABLE RANDOM PATTERN SELECTION ? .Ugg INDEXED PATTERN 'C‘ECL&;!E'IE RANDOM NUMBER GENERATOR BUQSI:MEER" ZERO SELECTED ? :MAKE CODE INTO TABLE INDEX SEQ 0102 CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 18 MAIN PROGRAM 1 :THIS ROUTINE IS USED T9 CHECK ADDRESS LIMITS BEFORE THE NEXT COMMAND g ADEEESS LIMITS TO LOOK FOR AN END TO THE SEQUENTIAL ADDRESSING. é : 1S PERFORMED. THIS WILL PROTECT AGAINST WRITTING ON CUSTOMER DATA BY g :CHECKING FOR MINIMUM ADDRESS VALUES. ALSO, 7 & 9 MOV JSR BR #DPB,RO #POINTER,RG pc CKLMTS 7% ;:DPB ADDRESS *POINTER TO SECTOR STORAGE ($SEC OR SNSEC) IN DPB *CALL ADDRESS LIMITS ROUTINE *RETURN HERE IF NOT END OF SEQUENTIAL ADDRESSING *ELSE, RETURN HERE TO RESET DISK ADDRESS }g : ; § I m— 1§ RO = DPB ADDRESS BEFORE CALLING THE ROUTINE }‘ IT WILL CHECK FOR MAXIMUM ‘R4 = POINTER TO SECTOR STORAGE BEFORE CALLING THE ROUTINE 060004 CMP 000002 000130 CKLMTS: ADD 026460 020132 16 17 020140 002003 BGE 15 020130 STORAGE POINT IN DPB ADDRESS BELOW MIN. ? CYLINDER z<é4>.n1chL(no):POINT .TO1SSECTOR 18 18 020142 016064 000130 000002 19 020150 126460 000001 000134 1$: 20 020156 002003 21 020160 116064 000134 000001 MOV CMPB BGE MOVB HINCYL(RO).Z(R&) 1(R4) ,MINTRK(RO) :BR IF 2 MINTRK(RO),1(Ré)’ %g 020174 116014 000140 MOVB BGE MINSEC(RO),(R4) :RESET secron TO MIN. CMPB :RESET CYLINDER TO MIN. *IS TRACK ADDRESS BELOW MIN. ? "RESET TRACK TO MIN. mmmmm:umMumsmwmn 020166 121460 000140 22 23 020172 002002 2s: gg ;LOOK FOR MAXIMUM LIMITS AND END OF SEQUENTIAL ADDRESSING 28 020200 020204 30 020206 31 020212 32 020216 33 020224 3% 020226 35 020232 36 020240 37 020244 38 020252 29 020254 121460 000136 116014 105264 126460 003407 116014 116064 005264 026460 003403 0627}3 000140 000001 48: 000001 000132 S5$: 000140 000134 000001 000002 000002 000126 68: 000002 003404 38: 41 42 020262 013746 001430 43 020266 005316 4% 020270 026426 000002 49 020276 126437 000001 45 020274 001004 78: CMPB BLE (R4) ,MAXSEC(RO) ;IS SECTOR ADDRESS AT MAXIMUM ? 55 BNE $ *BR IF NO -2(R4) ,FE1 ?fiséi ugr T0 READ OR unxrs ,SKIP SECTOR FILE TRACKS *ARE WE ON 1ST FE CYLINDER CMPB (R4), (SP)+ 1(R4).TRKLMT 51 020316 126427 000001 000001 CMPB 1(R4) .M s§ 020324 003732 020326 000207 9s: ;CHECK NOT TO READ OR WRITE BAD SECTOR TRACK FE1,=(SP) (SPJ -~ CMP 001004 :BR IF NO MOV DEC J49 WO S 020306 026437 000002 001430 8$: 50 020314 *BR IF MINSEC(RO),(R&) asssr SECTOR ADDRESS MOVB INCB 1(R&) *INCREMENT TO NEXT TRACK ADDRESS CMPB 1(R4) ,MAXTRK(RO)® 1S TRACK ADDRESS OVER MAXIMUM ? BLE 6% :BR IF MOVB MINSEC(RO),(R4) :RESET SECTOR ADDRESS MOVB nxnrnx(ao>‘1R’ RESET TRACK ADDRESS INC 2(R4) :INCR EMENT TO NEXT CYLINDER ADDRESS CMP z<a4> MAXCYL (RO)’ 1S CYLINDER ADDRESS OVER MAXIMUM ? BLE 7$ :BR IF NO ago gz,(SP) *ADJUST RETURN TO RESET DISK ADDRESS PARAMETERS CMP 001426 33 BNE BLE RTS 9 4 PC *GET FIRST FE CYLINDER (LAST CYL+1) :LOOK AT LAST USER CYLINDER *ARE WE ON LAST USER CYLINDER ? IS THIS THE BAD SECTOR TRACK ? :BR IF NO *ARE WE ON TRACK 0 OR 1 ? *BR IF YES *RETURN 0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 19 ;TH IS ROUTINE IS USED TO CALCULATE AND CHECK THE WORD COUNT FOR THE THE MAXIMUM TRACK OF THE MAXIMUM A DATA TRANSFER ;DR IVE THAT IS TO DO COUNT, EXCEEDS THE DESIRED_ WORD UORD MAXIMUM :CY LINDER. IF THE CALCULATED :C :TH : CA VO&WN-’gOQNOWbm—DOOONOMJ\m 1 OUNT (CONTENTS OF RS), THEN THE DESIRED WORD COUNT IS CHANGED, SO THAT ELUORD COUNT WILL NOT CAUSE A TRACK OVERFLOW DURING THE TRANSFER. MoV #DPB,RO :DPB ADDRESS :POINTER TO SECTOR STORAGE ($SEC OR SNSEC) IN DPB ;CALL CHECK WORD COUNT ROUTINE :RETURN WITH RS CONTAINING THE DESIRED WORD COUNT #POINTER,RG MoV PC,CHKWC JSR RETURN ERO = DPB ADDRESS BEFORE CALLING THE ROUTINE 1 ; R4 = POINTER TO SECTOR STORAGE BEFORE CALLING THE ROUTINE RS = DESIRED WORD COUNT BEFORE CALLING THE ROUTINE :POINT TO secron srome POINT IN DPB RO,R& CHKWC: ADD 1 } 16 SEQ 0103 020330 060004 NN 17 020332 105760 18 020336 oo1o§3 126037 19 020340 020346 001017 20350 105760 020354 001010 020356 126037 020364 001004 26 o7 28 020366 026064 29 020374 001022 30 020376 126064 020404 001016 000140 000136 001424 000134 000132 001426 000126 000002 000132 000001 18: 33 020406 111404 28: 37 020420 38 020424 39 020426 020430 41 020432 062704 000400 005316 002374 005726 020504 38: 215. 020440 49 020442 47 020446 48 020450 49 020456 50 020456 51 020462 sg 020464 53 020466 000416 013746 005316 026426 001010 853746 005316 005046 116416 020410 016046 000136 1604616 020414 35 36 020416 005004 42 020434 43 020436 56 020476 000207 MOVB 4$: 000001 5$: (R&),Ré& :GET STARTING SECTOR ADDRESS 5% R4 ,RS *BR IF NO *YES, CHANGE WORD COUNT MOV SUB CLR ADD DEC BGE ST CMP GET MAXIMUM SECTOR mxséccnm.-(sm SECTORS TO BE XFERD nuéea (SP) R4, ch Ré *ADD 1 sscron OF WORDS TO Ré #256. R4 *DONE ALL SECTORS YET ? (SP) *BR IF NO 3$ *RESTORE STACK (SP)+ “TOO MANY WORDS FOR TRACK ? RS.R4 BR MOV DEC CMP BNE MOV DEC CLR MOVB 58’ FE1,=(SP) (SP) g(au.(sm 5 TRKLMT,=(SP) (SP) -(5P) 1(R&), (sp) BLE MOV 003420 010405 001430 000002 001426 Au.ou SPIRAL RD/WRT MINSEC(RO) TST8 IF NO 2 BNE ALLOW SPIRAL RD/WRT ? SECLH'! , MAXSEC(RO) CMPB NO IF :BR 2$ BNE *ALLOW SPIRAL RD/WRT ? MINTRK(RO) TSTB *BR IF NO 18 BNE :ALLOW SPIRAL RD/WART ? CMPB MAXTRK(RO), TRKLMT NO IF :BR 18 BNE *WHEN SPIRAL RD/WRT IS ALLOWED, THEN CHECK ro MAKE SURE YOU DO NOT SPIRAL OVER MAXIMUM RACK ON MAXIMUM CYLINDER :ON MAXIMUM CYLINDER ? mcvuno».z(w CMP :BR IF NO 4 BNE :ON MAXIMUM TRACK ? MAXTRK(RO),1(Ré4) CMPB :BR IFNO 4 BNE RTS PC :GET FIRST FE CYLINDER (LAST CYL+1) :LOOK AT LAST USER CYLINDER *ARE WE ON LAST USER CYLINDER ? *BR IF NO :GET LAST TRACK +LO0K AT uexr TO LAST TRACK *PUSH STA GET cunaenr RACK ac %mg M SEQ 0104 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 20 MAIN PROGRAM ‘?2}.’{"‘5 TO GET THE PREVIOUSLY SELECTED PARAMETER VALUES 12 MOV JSR #DPB,RO PC,GENPAR :DPB ADDRESS *GENERATE THE PARAMETERS LODPAR: MOV 8 020500 010546 TSTB 9 020502 105760 000026 BNE 10 020506 001106 MOVB 11 020510 116060 002140 000027 BICB 15 020516 142760 177701 000027 RS,=(SP) SPACK(RO) :SAVE RS S'R' OR 'W' COMMAND FOR THE DRIVE ? SRMCS1(RO) ,SPREVOCRO) #C76,S$PREVO(RO) MOV 53" $CYL(RO) ,SPREVA<2{R0) gecm).smevuno; : : 3 4 ; 5 : 9 000034 12 15 020534 016060 }9 853?5’5 3532?8 000010 000032 18: 18 020552 004737 023254 19 020556 012660 000034 20 020562 g} 020566 RETURN 112660 000033 112660 000032 31 020640 001431 32 020642 112760 000171 000002 33 020650 112760 000004 000024 020656 116060 000115 000030 38: % 36 020666 016060 000116 000010 7 020672 020700 9 020706 %0 020714 41 020716 4 ozo;ga 000120 000012 01 012760 000400 000022 132760 000001 000024 001403 2 000022 062760 20 000004 4$: 016060 43 020 s 016060 4% 02074 45 0207 46 020746 5460 1260 207 000020 000110 000004 ;SAVE CURRENT PARAMETERS *STRIP GO,AND IE BITS ;SEE IF NEXT OPERATION IS READ OR WRITE :3R IF EITHER :SAVE STARTING CYLINDER :SAVE STARTING SECTOR AND TRACK <GET THE DECREMENTED SECTOR AND TRACK ADDRESSES MOVB MOVB (SP)+.SPREVA+1(RO0) (SP)+.SPREVA(RO) MOVB CMPB BNE 122760 000060 000027 *BR IF YES PC ,READDR 27 020614 116560 002076 000002 ozoegs 122760 000151 000002 001012 29 020630 000024 :LOAD THE PARAMETERS JUST GENERATED JSR BIT BNE 30 020632 #6.SNCODE(RO) 13 (SP)+,$PREVA+2(RD) MOV 23 020572 032777 000100 160354 28: 24 020600 001051 020602 116060 000114 26 020610 116005 000114 PC.LODPAR 3 BITB BNE 000114 13 020526 132760 1% 020532 001007 JSR :CYLINDER APPRESS : TRACK ADDRESS *SECTOR ADDRESS #SW06,aSWR 4$ ;SWITCH 6 SET ? *BR IF SET 3$ :BR IF 1 ‘BR IF Y SNCODE(RO),SCODE(RO) . :;LOGICAL CODE FOR OPERATION ;LOAD RS FOR USE AS TABLE INDEX SNCODE(RO).RS ;COMMAND CODE COMND(RO) COMTBL(RS).S IS NEW COMMAND A WRITE CHECK DATA ? SCOMND(RO) #WCKD MOVB MOVB #60,SPREVO(RO) CMPB BEQ :WAS PREVIOUS COMMAND A WRITE DATA ? MOVEB MOVEB CHANGE WRITE CHECK TO READ DATA COMMAND #RDDAT,SCOMND(RO) ;CODE NUMBER CHANGED TO READ DATA #4,SCODE(RO) MOV MOV MOV BIT8 BEQ ADD MOV STRACK AND SECTOR ADDRESSES SNSEC (RO) , $SEC (RO) :CYLINDER ADDRESS SNCYL (RO) .SCYL (RO) #256. ,8$SSEC(RO) ;INITIAL VALUE OF SECTOR SIZE :HEADER OPERATION ? #1,SCODECRO) | :BR IF NOT 43 :ADD HEADER SIZE #2,.8SSEC(RO) :GET WORD COUNT AND $WRDL (RO) , SWCNT (RO) MOVB MOV NEG MOV RTS - SNPATC(RO) ,SPATTC(RO) :PATTERN CODE SWRDL(RO).SHLDWC(RO) :HOLD WORD COUNT FOR 'RELBUF' ROUTINE SWCNT (RO) ;MAKE IT 2'S COMPLEMENT PC : (SP)+,R *RESTORE RS CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 21 SEQ 0105 MAIN PROGRAM ;gmms TO COMPRESS A LIST 1 MOV #ADDRS ,R1 sCOMPRESS LIST STARTING AT THIS ADDRESS CMPRES: MOV 2(R1), (R1) :COMPRESS THE TABLE IN R1 : fA JSR : RETURN : g 7 020750 016111 10 020760 000773 8 020754 001402 9 020756 005721 }1 020762 1% 000002 000207 18: ~ BEW ST BR RTS PC,CMPRES 18 (R1)+ CMPRES PC :émue BAD TRACK/SEC 16 17 18 : : : PC,SPOTCK JSR RETURN1 RE TURN2 21 020764 SPOTCK: MOV MOV 19 20 : 020764 010146 2§ 020766 012701 000146 gg 021016 021020 §1 021022 2 021030 ;z 021032 021036 5 OZIOSS 021042 7 ogwu. 021052 39 021054 %0 0 1828 41 021 l.; 021064 4 81 4% 0210 &5 021072 46 021076 47 0 1102 48 02110 49 0211 ?1) 0 u' 060001 005037 005760 00140 005237 004737 021126 001023 122761 001002 oos72g 00040 122661 001013 122761 001002 srzg 1 122661 oovoo; g 18: 001436 000112 001436 28: 023254 177777 000003 38: 000003 177777 000002 000002 4$: 58: $: 726 005726 062701 000004 4k gr 733 1737 001504 $: 8s: 9s: 531114 15929 177777 ooms 766 000002 00000 m: g‘ 3 Hg 11 12601 55 8 1132 800207 :CONTINUE COMPRESSING TABLE ;;RETURN ON THE DISK DEFINED OF ERROR IS ATTHEA LOCATION :ROUTINE TO DETERMINE TOR DRIVE. FOR TABLE }‘s' 23 020772 24 020774 25 021000 26 021006 27 021006 28 021012 *BR WHEN ZERO FOUN + INCREMENT R1 ADD CLR ST BEQ INC JSR CMP BNE CMPB BNE ST BR CMPB BNE CMPB BNE ST BR (MPB BNE BR ST TST ADD R1,=(SP) #$BDSEC,R1 RO,R1 DEC2 $SSENB(RO) 28 DEC2 PC ,READDR (R1), (SP)+ 6$ #-1,3(R1) 3s (SP)+ 48 (SP)+,3(R1) 73 #-1,2(R1) 5$ (SP)+ 98 (SP)+,2(R1) 8s $ (SP)+ (SP)+ #4 R1 ST 8MI B8R ;'s‘g (r) 108 18 fi.;.sm MOV #2,2(SP) (SP)+,R1 MOV ADD RTS #-1,BADSEC PC ;ERROR AT AN ADDRESS IN TABLE sNO TABLE ENTRY FOR ERROR ADDRESS OR ;PARAMETER 'MESSAGE' IS 0 ::PUSH R1 ON STACK s INCREMENT FOR BAD SECTOR TABLE sADD THE BLOCK'S STARTING ADDRESS sASSUME DECREMENT SECTOR ONCE :DID Ehzgfl OCCUR DURING SKIP SECTORING ? :BR I sDECREMENT SECTOR TWIC E sDECREMENT THE SECTOR/TRACK ADDRESS sON THE SAME CYLINDER ? *BRANCH IF NOT *ALL BAD TRACKS ? *BR IF NO *ADJUST STACK AND :G0 CHECK SECTORS :COMPARE THE TRACK ADDRESS :BR IF IT IS NOT EQUAL *ALL BAD SECTORS ? *BR IF NO *CHECK °*MESSAGE* :COMPARE THE SECTOR ADDRESS IF NOT T E EQUAL : *BR SCHECK "MESSAGE' *ADJUST STACK AND *CLEAR OFF THE STACK 3 INCREMENT THE STACK POINTER 26O TO THE NEXT LOCATION IN THE TABLE sEMPTY ENTRY OR TERMINATOR ? ‘BR IF YES *TRY NEXT SECTOR sPRINT THE ERROR ANYWAY ? :BR_IF NOT sSET THE INDICATOR FOR THE IDENTIFICATION LINE *INCREMENT THE RETURN ::POP STACK INTO R1 *RETURN IRNAAO RHOO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 22 SEQ 0106 X 122222222223 2222333232323 3333332222222 332 gBTTL :PRINT LIN§ 1 OF ERROR MESSAGE: &~ ~ =l ~ o— N D e b b b O NIN=N ~ NN SO geRces — & N -0 '13: g&’("flug! VIS h&gh“=;3Ci — d NONIN) = D d e b D b b d cd o ced cd o d b D b b D AR NN [elelelelelelelelelelll=] 002000 160012 LINET1: 18: 28: 38: BIT BEQ fimo.asun BIT BEQ bsm DISPLY .SCRLF :CR=LF ,SCRLF .SCRLF :CR=LF :CR=-LF TYPE SBE&L DISPLY .scnu BR i3 DISPLY DISPLY SHITCH 10 SET ? :BR IF :RING THE BELL musn TYPEOUT ? IF NOT :BR aswR *CR=LF SEXIT STYPE THE TIME RETURN l TYPE DESCRIPTION PC,STIME JSR DISPLY ,BLNKS1 PC RTS STYPE 1 B LANK PRINT LINE 2 OF ERROR MESSAGE PREV COMMAND = XXXX' : PRSNT COMMAND = XXXX * ERROR AT BAD TRACK/SECTOR® 'DRV RMCS1 s 'RMWC RMCS2 RMBA RMDA RMDS1 RMAS RMER1 RMMR2 RMLA RMDB RMER2 RMMR1 RMEC1 _ RMEC2' RMDT' — —h LINEZ2: v MOV OO0 no = wn MOV MOVB b ed NN o R3,=(SP) BIC JSR ::PUSH R% ON STACK #LIN2C.& *ADDRESS OF 'PRSNT COMMAND = * MSG MOV MOVB 8IC JSR BR CLR CMPB 1ST8 gPTBL(RS) BR 23 ST 18: 2s: BEQ BMI INC pusn RS ON STACK -LF cma MESSAGE ADDRESS STORAGE *WORKING REGISTER sm;sflam Ré :GET THE OPCODE PC.1$ $% LINE2A 5 #LINCP,4S W;VO(RO) R4 #°C76 R4 PC,1$ L;NEZA R TBL(RS) R4 BEQ ::PUSH R3 ON STACK Ré.=(SP) ns -(SP) v DISPLY ,SCRLF CLR is CLR R4 SRS ~ ~ rY-N-X-N S O~ S S§EC’ NO =l ‘:\h VRO W SR xRS LAl i nd B S e X T NN L EEEY B N e N NN LN e R —_— ¥ VN | ~ W ~ NNV SO o Sp=2888g=e8eSRR SRdSeuEoee SSRNR : "RMSN RMOF ; RHC C STATUS'® :"RMBAE RMCS3' (RH70 ONLY :'BUS ADDRESS OR WORD CMT NOT CWSISTENT' $'RMBA = XXXXXX RMWC = :'BUFFER ADR = XXXXXX HRD CNT = XXXX ACTUAL NMBR WRDS XFRD = XXX' [elelelelelelelelelelelelelele] =] SN S BB i diddiiiidididd]d) 2"M4H:MM:SS omfiw-acvoowsvoflm- VIS B B ERROR MESSAGE GENERATION ROUTINES i t.'.Q.t.'.ti.tt..t.."""'tt..i.ttQIQfi..QQQQ.'.Q'Q'....Q..Q". RO -O~V OV WA NI NINININIAI N b b NN = O 000N b b b b e e e d VS NN = OO0 NO N SN = MIN :SAVE ONLY SIGNIFICANT BITS npe THE FIRST MNEMONIC : SEE xr MNEMONIC ENTRY FOUND :BR_IF NOT :ADDRESS OF 'PREVS Cw = ' MSG :PREVIOUS OPERATION C :SAVE ONLY SIGNIFICANT BITS ;TYPE THE PREVIOUS MNEMONIC : CONT INUE ;CLEAR THE TABLE INDEX :LOOK FOR THE OPCODE sBR WHEN OPCODE COUNT EQUALS OPCODE .I.OOK FOR END OF TABLE :BR IF END s INCREMENT THE POINTER ;CONTINUE= NOT END OF TABLE D 9 SEQ 0107 ROUTINES O0O0000 OO0 00 OO0 Vi SRR ZE O~ SRINRAR28ER GO RG2S BT RN RRRRBIIINNNANIITEIR nN=O 5 7 7 832124 021360 ey £&H R NN N DISPLY DISPLY WO 001 —= NS = > —~ N N\ e - N NS LINE2B: DISPLY 0 ; 4 075234 OO — b b o —t 157504 072746 073226 021620 073044 073250 021652 073114 RS,S5$ O O PC BADSEC LINE2B SSHIFT THE INDEX *ADDRESS OF ASCII TEXT TABLE *ADD THE INDEX STYPE IT *ADDRESS OF 'PRESENT® OR 'PREVIOUS® MESSAGE “TYPE THE OPERATION MNEMONIC *ADDRESS OF MESSAGE *RETURN TO MAIN ROUTINE ;PRINT THE BAD SECTOR LINE ? :BR IF NOT :CR=LF .SCRLF :CR=LF .LIN2S .DH14 .BLNKS1 BNE 13 PC,LINDEC ,BLNKS2 #DT14,RS PC,3$ #SW0S ,aSWR DISPLY MOV JSR DISPLY MOV JSR ,DH1S #DT15,RS PC,38 ,DH16 #DT16,RS PC,3$ BNE 13 DISPLY :SHIFT INDEX SSHIFT THE INDEX ,SCRLF DRVNO, = (SP) MOV BIC CMP 001; 003777 030000 RS MOV JSR DISPLY MOV JSR BIT $CPUOP,-(SP) #~c1746000, (SP) #30000, (SP)+ ,DH17 *ERROR ADDRESS DEFINED AS BAD AREA *STANDARD RM REGISTER HEADER STYPE 1 BLANK *PUT THE DRIVE NUMBER ON THE STACK :TYPE DRIVE NUMBER STYPE 2 BLANKS *REGISTER INDEXES *PRINT THE REGISTERS *PRINT THE OPTIONAL REGISTERS ? *BR IF NOT ;SECOND DATA LINE *PRINT THEM :THIRD DATA LINE *PRINT THE REGISTERS :CHECK THE CPU (RH) TYPE :LEAVE THE CPU BITS :SEE IF RH70 :BR IF 073264 | 021620 000100 000016 18: MOV JSR BIT ;OPTIONAL FOURTH DATA LINE #TI7.R5 *PRINT THE REGISTERS PC,3$ :DATA ERROR ? #8176,$TATUS (RO) 88002 214 MOV ADD L :TRANSFER WRD CNT (RO) ,=(SP) SWRD (RO) - (SP) :ADD REMAINING WORD COUNT SRMWC oogooo 002144 072150 1;03 1712 022324 :BR IF ADD gg: (SP) *CONVERT TO AN BYTE INCREMENT :BUFFER STARTING ADDRESS $BUF (RO),(SP) égP)O.SRHBA(RO) ‘ES“?E‘;EQU"‘“ ADDRESS ? DISPLY ,EM46 $'BUS ADDRESS AND WORD COUNT ARE NOT CONSISTENT® JSR PC,LINE3D DISPLY A 38: NOT 2 BEQ ASL WV OO N DISPLY WORD DISPLY LWORD RTS DISPLY 07333, N [P P NN s RS #MNTBL ,5$ DISPLY 091203 ER2RReee SRSRg & 2853 bfig - b ASL MOV BEQ 001523 W i vl S °§SRR -b °§ ) N &~ o o Qo P P \n\n\ngvn\n\n FRRERSIRERS NERFTERLIRR $8!3“ RERS oy VIV B BB BB d b e — e NN RS ASL LINE2A: TST 001342 ozss 075233 073204 021620 000040 ASL ADD 58: N - 021360 48: §§2§322222§§ §§ % §-§§§§§§§3 OO%gszbgdwuawaaaaa 4 SO0 b bk e ol o rad d = e ——— 38 g .SCRLF *CR=L *PRINT LINE 3D OF ERROR MESSAGE JSR PC.LINES *PRINT LINE & OF ERROR MESSAGE MOV MOV MOV (SP)+,RS (SP)+.R& (SP)+.R3 ::POP STACK INTO RS $:POP STACK INTO Ré& $:POP STACK INTO R3 RTS PC ADD RO, (SP) MOV (RS)+,=(SP) *RETURN TO ERROR PROCESSING ROUTINE *PUT THE REGISTER INDEX ON THE STACK *ADD DRIVE'S TABLE ADDRESS oTM CRO V04.00 14=JAN=82 15:16:58 PAGE 22-1 SO NN w We #R pu) — ,g 3 m > —m 82832S5 s NSNS = S 2 "fl & S ¢ 075233 48: MOV JSR TST DISPLY ST BNE a(SP) ,=(SP) PC,LINOCT (SP)+ .aguxsz (RS) 3$ :VALUE STYPE IT *CORRECT THE STACK POINTER sTYPE 2 BLANKS SAT END OF LINE ? IF NOT *BR RTS PC *RETURN oxsm $CRLF :CR=LF sPRINT LINE 3 OF ERROR MESSAGE PREV ADR :"ERROR AT CCC TT SS 073367 LINE3: DISPLY BR .LlNHB LIN3.1 CCC TT SS* sLINE 3 ENTRANCE ;FINISH PRINTOUT sPRINT LINE 3A OF ERROR MESSAGE END CYL = CCC’ ;'START CYL = CCC 073405 LINE3A: DISPLY BR .LINN3 LIN3.1 ;LINE 3A ENTRANCE :FINISH ERROR LINE ;PRINT LINE 38 OF ERROR MESSAGE ;'START CYL = CCC LINE3B: JSR R%EPLY END CYL= CCC PC,LIN3.3 .%CRLF ;*START CYL = CCC 022226 022260 LINE3C: JSR JMP END CYL = CCC PCfi§IN3.3 ACTUAL CyL = ccC’ sLINE 38 ENTRANCE PRINT LINE 3C OF ERROR MESSAGE ACTUAL CYL = CCC TRK = TT' sLINE 3C ENTRANCE sFINISH MESSAGE PRINT LINE 3D OF ERROR HESSAGE = XXXXXX' RMWC :"RMBA = XXXXXX 000040 LINE3D: BIT BEQ DISPLY 853564 #SW0S, aSWR 1$ ,LINS3 ;SWITCH S SET ? *BR IF IT IS SRMBA = ° M(am -(SP) :BUFFER ADDR REG CONTENTS MOV :gouvear T0 OCTAL AND TYPE IT pc LINOCT JSR RMWC = NW3 DISPLY COUNT REGISTER comems iamc(ao) -(SP) :WORD MOV *CONVERT TO OCTAL AND TYPE IT PC,LINOCT JSR 18: DISPLY ,SCRLF RTS PC 220 OSSN - PRINT LINE 3E OF ERROR MESSAGE = TT START TRK s'START CYL = CCC g8 SARSRAR LB BEIRUNRUN LS SEIELRERZ8S 8=2fi#%=¥fl:#cfizfizaflfifi¥~nhiuu6222£zii=a;::1=c: = OO0O0O00O dddddddddddddflddddd—lddddddddddddfl—ldfl-‘dddflddddd-‘ddddd“ddflfl § o ° 028262 001203 SEQ 0108 00 14=JAN-82 15:16:58 PAGE 22-2 START SEC = SS' s"START CYL = MOVE CYL T0 STACK ) icvuaot-(sn TVPE !T IN DECIHAL JSR DISPLY BL TRK = % 'START .LINST DISPLY =(SP) STACK ;CLEAR LINESE: DISPLY MOV CLR meo DN RNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 22-3 F 9 SEQ 0109 ROR MESSAGE GENERATION ROUTINES 170 "n 17; 17 1 016 022 1 104414 104414 174 022026 005046 175 022030 11 MOVB 11 19 032 3 19 10 176 022034 004737 0 gs« 0 104414 001203 177 8 m 2044 000207 180 }81 ;TRACK TO STACK ,BLNKS ,LINSS *TYPE 2 BLANKS $'START SEC = * S$SEC(RO),(SP) :SECTOR ADDR TO STACK PC,LINDEC CLR =(5P) DISPLY DISPLY 07 STRK(RO),(SP) SR MOVB STYPE IT IN DECIMAL SCLEAR STACK JSR PC,LINDEC STYPE IT IN DECIMAL DISPLY ,SCRLF PC RTS :PRINT LINE 3F OF ERROR MESSAGE S'RMDA = XXXXXX RMCA = XXXXXX* 13 022046 032777 000040 157100 LINE3F: BEQ BIT #SWS,asWR 1% 186 022 $RMDA (RO) ,=(SP) :PUT SECTOR/TRACK ADDRESS ON THE STACK 184 022056 185 og 823 001420 104414 073535 DISPLY 016049 oogu. 187 022066 00473 o; 0 189 022076 07352% 188 oszorz 104416 07523 190 022102 191 022106 192 022112 }gz 022116 104414 016049 oogm 004737 02 2o§ 104414 00120 000207 JSR PC,LINOCT DISPLY .LINC DISPLY ,BLNKS 18: 200 022120 004737 023254 201 022153 004737 0;3234 104414 0 gl.gg 202 022130 206 052134. 004737 0232 207 022140 208 022144 209 022150 10 022154 1 osmo 1; 022166 13 022170 gz 104414 0 104414 005046 073402 104414 073423 004737 0232 104414 073426 o1oo¢9 00473 °§{2’3‘ S 022 90 5 8 42 1 §5 104414 073445 104414 1 9 ; 2 073461 gt 4 16949 3 237 fi 23234 :DECREMENT TRACK AND SECTOR ADDRESS STYPE IT IN DECIMAL STYPE TRACK IN DECIMAL * §° SPRINT * T* .S SPRINT pISPLY CLR T =(SP) SPRINT * T* MAKE ROOM ON THE STACK DISPLY .S SPRINT * §' STYPE SECTOR ADDRESS PC,LINDEC JSR *PRINT °*PREV ADDR' ,LINP3 DISPLY MOV $PREVA+2(R0) ,=(SP) :PREVIOUS CYLINDER JSR PC,LINDEC :TYPE IT°IN DECIMAL CLR g :* RMDC = ° DISPLY 17 022 005046 18 02221 116919 19 022214 °82 3 85 g 001203 208 20 104414 022224 000207 PC,READDR JSR PC.LINDEC T pISPLY JSR PC,LINDEC MOVBE JSR 1 STYPE 2 BLANKS PREV ADR = CCC TT SS° LIN3.1: JSR 1% 022172 11 19 33 15 ozzws 00473 o; 234 19 osz STYPE 57 MOV $RMDC (RO) ,=(SP) :PUT DESIRED CYLINDER ADDRESS ON THE STACK JSR PC,LINOCT STYPE IT DISPLY ,SCRLF RTS PC :*CCC TT SS }gg ,LINDA3 MOV sSWITCH 5 SET 2 :BR IF NOT S'RMDA = ° SPREVA+1(RO), (SP) :PREVIOUS TRACK ADDRESS PC,LINDEC :TYPE IT IN DECIMAL <(SP) *MAKE ROOM ON THE STACK MOVB SPREVA(RO),(SP) :PREVIOUS SECTOR DDRESS Pg LINDEC STYPE IT IN DECIMAL ,SCRLF DISPLY RTS PC :*START CYL = CCC END CYL = CCC* LIN3.3: DISPLY ,LINS3 & 3C* ENTRANCE CYLINDER ,=(SP):LINE *38:PREVIOUS $PREVA+2(R0) MOV JSR PC,LINDEC :TYPE IT°IN DECIMAL DISPLY ,LINEN3 SPRINT *END CYL MOV $RMDC (RO) ,=(SP) :PRESENT CYLINDER m PC,LINDEC STYPE IT IN DECIMAL SEQ 0110 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 22-4 ERROR MESSAGE GENERATION ROUTINES s'ACTUAL CYL = CCC 3 58 60 106414 % 8 7% 90 %0 3 41 4.;8 12 g 13 4 gzg 0 15746 719 73 104414 5046 116919 004 104414 000207 LIN3.4: DISPLY 073475 MOV BIC JSR DISPLY CLR MOVE JSR DISPLY RTS 01174 01 o; 073514 002147 023234 001203 & PRINT LINE & OF ERROR MESSAGE 000100 000016 LINE4: BIT 49 os 4 032760 BEQ 00142 S0 0 DISPLY 51 022334 104414 073614 MOV s; 022340 W; no ouol.g 0 52 55 022354 022360 08273 022364 1064414 58 022370 59 022374 022400 261 022402 58 0 zl.og g63 022412 oxspu 073646 016046 002144 166016 19 004737 023234 104414 001203 000207 18: 269 022420 0224 0224 0224 8 4k bbb 45 4 474 8 500 504 8 gw 14 5 524 5 5 5 5% 414 073700 ACTUAL NMBR WRDS XFRD = XXX' :DATA ERROR ? #B1T06,STATUS (RO) NOT IF :BR 18 : "PRINT BUFFER® ,LINMG $8UF (RO) ,-(SP) :BUFFER ADDR ON STACK : CONVERT T0 ocm & PRINT *PRINT 'WRD CNT SIZE(WORD COUNT) :WORD LENGTH Mounm ~(SP) :TYPE IT IN DECIMAL PC,LINDEC = ° ALXFRD NMBR WRDS 'ACTU L INX4 $RMBA (RO) , -(sp) VALUE IN BUFFER ADDR REGISTER seur(RO),(SP) :SUBTRACT STARTING ADDRESS sua :CONVERT INTO A WORD COUNT (SP ASR STYPE IT IN DECIMAL PC, uuoec :CR=-LF oxsm $CRLF *RETURN PC RTS :PRINT LINE 5 OF ERROR MESSAGE 265 022414 WRD CNT = XXXX PC,LINOCT JSR DISPLY ,LINS4 37 02320 53 022344 54 022350 104414 07363 sg :PRINT "ACTUAL' ,LINA3S *ACTUAL CYLINDER tvu.m.-(sn *CLEAR THE FORMAT BIT #BIT12. (SP) STYPE IT IN DECIMAL un6£c PC.Lin :PRINT TRACK *CLEAR STACK WORD <(sP ) :PUT TRACK ON STACK SRMDA+1(R0),(SP) IN DECIMAL IT ;TYPE PC,LINDEC ,SCRLF PC T'BUFFER ADR = XXXXXX 2; 257 TRK = TT' 002144 SYEXPCTD DATA = XXXXXX ,LINDS LINES: DISPLY SUB MOV BIC CMP BNE SUB 002144 8IT 002212 002144 18: RZCEVD DATA = XXXXXX WORD POS = XXX' :PRINT "EXPCTD DATA® #2.SRMBA(RO) -(SP) $C #°¢174000, (SP) #30000, (SP)+ 13 4. SRMBA(RO) :BACK THE ADDRESS UP :CHECK THE CPU (RH) TYPE 8Pu BITS .I.EAVE THE :SEEI xr no *BR :BACKUP THE BUFFER POINTER WORD HALF DIDN'T COMPARE ;SEE WHICH oaimSRMCS3(RO):1F EQ gvsn HALF DIDN'T come 1 BEQ A :BACKUP HE BUFFER POINTER #2,SRMBA(RO) SUB :"EXPCTD® DATA= AT me surm LOCATION (RO) ,=(SP) MOV rm IT PC,LINOCT JSR PRINT *RECEVD DAT pIsPLY ,LINBS MOV JSR MOV ADD CLR MOV $RMDB(RO) ,~(SP) :necevo DATA FROM eurm PC,LINOCT STYPE IT (RO) ,=(SP) :WORD LENGTH ON STACK SRMJC mosm ).(SP) :MAKE xuro A POSITIVE NUMBER ND TO ZERO :UPPER mm -(SP $SSEC(RO) ,=(SP) secm SIZE ON THE STACKssctoa SIZE av PC,$DiV JSR (SP)+,(SP) MOV DISPLY ,LINPS *DIVIDE WORDS XFERED REMAINDER UP THE MOV *PRINT SEQ 0111 00 14=JAN-82 15:16:58 PAGE 22-5 JSR :TYPE THE POSITION PC,LINDEC DISPLY ,SCRLF RTS PC ;PRINT LINE INE 5A OF THE ERROR MESSAGE N N -~ £~ ] ; 8°O°-‘°°-‘° R RN o 'HEADER FROM ERROR SECTOR 5INESA: $: 38: DISPLY MOV JSR DISPLY MOV JSR DISPLY DISPLY g%gpu JXXXXX ,LINS cnnon -(SP) PC LINOCT NKS2 -(SP) évmoaoz Pc.ungcf .emxg .LINX fi%cm.r XXXXXX XXXXXX XXXXXX' : "MEADER CONTENTS OF ERROR SECTOR® umea POSITION TYPE 5 TYPE 2 BLANKS :HEADER POSITION +2 STYPE IT sTYPE 2 BLANKS *APPENDING INFO 1/23/77 sPRINT LINE 58 OF ERROR_MESSAGE RMEC2 = XXXXXX' s'RMECT = XXXXXX LINESB: DISPLY MOV JSR ‘NCNRO) -(SP):TY PC,LINOCT DISPLY w« g DISPLY MOV JSR T r YPE 2 BLANKS ianec (RO) .=(sP)"sTYPE PC,LINOCT DISPLY ,SCRLF PC RTS sPUT REGISTER CONTENTS ON THE STACK 1 ="' :PUT REGISTER CONTENTS ON THE STACK IT :RETURN sPRINT LINE 6 OF ERROR MESSAGE :*'SECTOR IS ECC CORRECTABLE' 074030 001203 LINE6: DISPLY DISPLY RTS ,LINBG .SCRLF ;ECC CORRECTABLE PC sPRINT LINE 6A OF THE ERROR MESSAGE s "SECTOR READ CORRECTL 074063 LINEGA: DISPLY ,L 1 ucs :PRINT *SECTOR READ CORRECTLY ON N RETRIES' “TYPE THE REST OF THE LINE LING. BR MESSAGE ERROR THE OF 6C LINE :PRINT *"CORRECTED ON NTH RETR 074112 LINE6C: DISPLY BR .unsg LING. 'coaascrso ON N RETRIES® STYPE THE REST OF THE LINE :PRINT LINE 6D OF THE ERROR MESSAGE **UNCORRECTABLE AFTER N RETRIES® 022714 022720 074142 LINE6D: DISPLY BR .unuge LING. : "UNCORRECTABLE AFTER N RETRIES® SFINISH sEQ 0112 mcno voc. 00 14=JAN=-82 15:16:58 PAGE 22-6 RNAAO RM8O PE TINES ROR MESSAGE GE :RETRY COUNT TYPEOUT ;7 LING.2: CLR 73 022722 MOVB JSR DISPLY DISPLY RTS 022724 1 0227 0227 o% 740 022744 -(SP) RETRY+1,(SP) PC,LINDEC ,LINRG scm PC um STACK :RETRY COUNT rvpe n IN DECIMAL :'RETR sPRINT LINE 7 OF THE ERROR MESSAGE LINE?: oxsm 9 s oxspu 4 MOV 9 3 o; g JSR oxsm 23; 104414 074302 8155?2 000060 v 012746 :TYPE IT IN DECIMAL *WTOFL' :PUSH SWTOFL(RO) ON STACK -(sP)’:PRINT hnormo) sTYPE IT ‘in DECIMAL L;uEC PC WRITN' WORD ON STACK OF LOW *ADDRESS'WRDS fimgn’c.-(sn *PRINT :CONVERT *PRINT :PRINT *ROFL' 156064 1$: ADD JSR JSR DISPLY BIT BEQ HALT RTS EAD,=(SP) RO, (SP) PC.$DB2D pc.ssum 6su1g,@SWR 13 PC :LOW WORD ADDRESS : CONVERT mur IT :CR-L u= "MALT ON ERROR® = SWITCH 15 see IF NOT *BR SSWITCH 15 HALT —- ot oF oF o WRONN sPRINT LINE 7A OF ERROR MESSAGE ;*TOTAL SEEKS=XXXXX 023073 02310 433 0231 02311 436 435 023114 0 g1 436 437 023126 438 0 §1 439 0231 440 8 140 443 lolog Ge G4 Gi5 rc |. noec SRDOFL (R0O) ON STACK :PUSH -(sm TYPE IT° IN !aporuam MOV DECIMAL L;noe PC LIN7R JSR :"WRDS READ' DISPLY 016046 o;sggz 004737 104416 074327 060019 osr;gg 0047 004737 032 104414 001203 032777 001401 000000 ;TOTAL ERRORS LIN?T :TO STACK $TOTAL (RO) ,=(SP)° PC.$DB2D JSR PC $SUPRL JSR N70R DISPLY 004737 037222 004737 032 104414 074317 144 150 154 162 gl“ “9 023166 G ROFL:0 WRDS READ :XXXXXXX' WOFL:X WRDS WRITN:XXXXXXX :*TOTAL ERRORS:XXX LINE7A: DISPI.V TOTAL MISPOS ERR = XXX ikIN7P TOTAL SKI= XXX' :"TOTAL SEEKS = * ADD SIT.-(SP) RO, (SP) ;TOTAL SEEKS *DEVICE TABLE ADDRESS oxsru Li ** JSR JSR Pc.soezo PC s;gm *CONVERT THE SEEK COUNT SPRINT IT TOTAL MISPOS ERR = ° ERRORS imsromm -(SP) s TYPE IT°;TOTAL DECIMAL IN PC L uo JSR TOTAL SKI ERR = * DISPLY & PRINT IT convm -(SP) isxmm MOV MOV b BEQ PC.LINDEC $ R;f #5W15,aSWR 1$ RTS PC JSR 18: HALT me IT IN DECIMAL :CR=L : SEE IF HALT ON ERROR = SWITCH 15 SET :BR IF '? ;SWITCH 15 WALT CZRNAAO RMBO PERF EXER MACRO V04, 00 14=JAN-82 15:16:58 PAGE 22-7 SEQ 0113 ERROR MESSAGE GENERATION ROUTINE :PRINT LINE 8 OF THE ERROR MESSAGE :'DIFFERENT ERROR DURING RETRY' 448 233 LINSM fic LINE2 451 023170 104414 874543 452 023174 004737 021214 LINES: oxsm zgs :IC)HCI.. TYPEOUT ROUTINE 45 458 223 S : : 461 023202 O1 LINOCT: MOV & 023200 5 :gg: 9 oo‘# 02§0 l.ei g 023 012637 51 02 463 737 464 ogs 16 465 023226 104414 669 023226 46 ozg%sg 012616 223 023232 nrs 000207 000207 023226 NUM, = (SP) MoV PC,LINOCT JSR RETURN 1$: 47% ";Z : : 016646 481 023252 000207 :PUT THE NUMBER ON THE STACK T NUMBER IN PROPER Locmon ON STACK JSR MOV 2(SP),=(SP) PC,$5820 cgfi)o 1 OCTAL TO NUMBER THE convm STRING ASCII THE OF *GET THE ADDRESS RTS PC *RETURN 05,18 ADD DISPLY LWORD O (SP)+, (SP) MOV ADDRESS THE LAST 6 ASCII DIGITS STYPE IT *ADDRESS *CORRECT THE STACK :ROUTINE TO CONVERT THE INPUT NUMBER TO DECIMAL AND TYPE IT WITH .%mm ZERO SUPRESSION :PUT THE NUMBER ON THE STACK NUM, = (SP) MOV : 470 2;1 47 477 023234 :PRINT LINE 2 OF ERROR MESSAGE 2 478 023240 004737 033230 479 023244 004737 032364 480 023250 012616 JSR PC,LINDEC RETURN LINDEC: MOV ) JSR JSR A0V RTS 2(SP) ,=(SP) PC,$582D PC . $SUPRL (SP)+, (SP) PC :SET UP STACK FOR convm *CONVERT IT TO DECIMA STYPE IT (WiTH mec 2EROS SUPRESSED) *RESTORE STACK POINTER SEQ 0114 § RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 23 .SBTTL GENERAL SUPPORT SUBROUTINES %EEEEHENT THE SECTOR=TRACK ADDRESS : MOV : RETURN JSR : #DPB,RO PC ,READDR :DPB ADDRESS *ON aerunu rue STACK CONTAINS THE FOLLOWING: 4(SP) = SECTOR ADDRESS 2(SP) = TRACK ADDRESS (SP) = CYLINDER ADDRESS : : : READDR: JSR oN vw N NN NN N WW 0000 b e o e ot 32383388BRRges 222290 RE I3 &N w ~ R4 b ~N v o e e e d B R N R R R R NS SR ISR r i~ OB~ NS N~ P SUPPORT SUBROUTINES 000006 000004 000002 18: 28: 000006 38: 000006 000004 R 48: SUB MOV CLR CLR MOVB MOVB MOV ST BEQ 40 PC,GETLMT :GET ADDRESS LIMITS (SP) $ 0 *SECTOR *BRANCH IF s *DECREMENT THE STACK POINTER #6.SP “MOVE THE RETURN ADDR DOWN THE STACK 6(5P), (SP) *CLEAR STACK FOR SECTOR 6(SP) *CLEAR STACK FOR TRACK 4(SP) SRMDA(RO),6(SP) :SECTOR ON STACK TRACK ADDRESS sanvo1(n6).4(sP$ SRMDC (RO) ,2(SP) CVLxuosh ADDRESS DECB BR ST BEQ MOVB DECB BR ST BEQ MOVB MOVB DEC DEC 6(SP) 4 4(SP) ¢ SECLMT.6(SP) 4(SP) 4 2(sP) 1) SECLMT,.6(SP) TRKLMT.4(SP) 2(SP) DEC2 CLR DEC2 BGE RTS 1$ PC oecnentur ONE SECTOR *BRANCHTO EXIT *ALSO ON TRACK 0 ? *BRANCH IF SO :LAST SECTOR *DECREMENT ONE TRACK SEXIT *ALSO ON CYLINDER 0 ? *BR IF YES :LAST SECTOR :GET LAST TRACK :DECREMENT ONE CYLINDER COUNT *DECREMENT TWICE YET? *BR IF NO :DECREMENT TRK/SEC ONLY ONCE NEXT TIME *RETURN - NN = == YNNNO NIRNREETN ) NN=NOWWNW N ~ I O ks 0O000O0 P e Y et s =D ROUTINE TO CHECK FOR KW11-L OR xu11-r CLOCKS o C GENER 001312 001310 000004 CKCLK: MOV MOV MOV MOV ST CLR CLR MOV MOV MOV MOV MOV BR CKCLK1: MOV #-1,CLKFLG :CLEAR CLOCK AVAILABILITY FLAG *CLEAR KW11=P CLOCK AVAILABILITY FLAG #-1.PCLOCK ..PUSH ERRVEC ON STACK ERRVEC ,=(SP) ocKCin.Ennvrc *SET UP VECTOR FOR CLOCK CHECK SCHECK FOR KW11=P aSLKCSR *SET CLOCK AVAILABILITY FLAG CLKFLG SSET KW11=P CLOCK FLAG PCLOCK *KW11=P VECTOR ADDRESS SLPVEC R1 :SET UP KW11-P VECTOR bocx (R1)+ = PRI 6 :PSW R1) b BUFFER WITH 16.67 COUNTER OAD CLOCK 0-1667..38LKC$B“SET = CNT UP, 10US, CONT INT "3,2SLKCSR CKCLK n$,(SP) :SETUP RETURN ADDRESS CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 23-1 L 9 SEQ 0115 GENERAL SUPPORT SUBROUTINES 58 023522 ; oggsu 000004 18: 155546 omgn 001 03 02511 000300 000100 155520 59 023506 60 023532 61 023536 °§8 5422 63 02 sas 64 023552 65 o% 556 29 023564 01 005777 00 937 01 g1 81 721 012711 012777 000415 68 0235 ormg 023574 69 023572 70 023574 710 w ;g 0 ozseog 00000 1o¢.4gr- 076064 105737 001150 oou.o; 000137 031742 74 023612 000000 75 023614 000137 003532 76 023620 77 023624 012637 000207 000004 RTI MOV ST CLR MOV MOV MOV MOV BR CKCLK2: MOV 18: 28: RTI TYPE 1sT8 BEQ JMP HALT JMP CKCLK3: MOV RTS #CKCLK2,ERRVEC asLKS CLKFLG SLLVEC,R1 0%00: (R1)¢ #30 , (R1) noo.gms ;CHANGE ERROR VECTOR TO CHECK FOR KW11-L :LOOK FOR KW11=L :SET CLOCK FLAG *KW11=L VECTOR ADDRESS :SET UP KWi1=L VECTOR :PSW = PRI 6 *SET KW11=L INTERRUPT #18,(SP) ;SETUP RETURN ADDRESS CKCLK NEDCLK $AuTOB 2$ $GET42 :'P OR L CLOCK MUST BE ON SYSTEM' *RUNNING IN AUTO MODE ? *BR IF NOT *ABORT PROGRAM (SP)+,ERRVEC :RESTORE THE ERROR VECTOR START PC SHALT “TRY AGAIN CZRNAAO RMBO PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 24 SEQ 0116 GENERAL SUPPORT SUBROUTINES : :RRE{INE TO DISPLAY STATISTICS FOR ASSIGNED DRIVES : 4 : b) 6 STATPR: 7 023626 0236%6 023630 8 023632 9 023636 21 023640 22 023644 23 023658 24 023652 25 02,656 26 023660 010046 010446 005737 001423 104401 NN4L737 w004 006304 016400 006204 29 023672 0236 3; 023700 004737 023752 5204 020427 000010 27 023662 136437 001542 001203 023742 2s: 040300 48 CLR ASL MOV ASR Ré R4 BLKADR(R4) ,RO R4 sCLEAR THE DRIVE INDEX s CHANGE TO INDEX WORDS MOV MOV RTS PC,SHDTYP 3 IF NOT s CR=LF sTYPE THE HEADING sGET _THE DRIVE'S BLOCK ADDRESS REST ORE Ré ;1S THIS DRIVE ASSIGNED ? :BR F_NOT sTYPE THE PERFORMANCE SUMMARY s INCREMENT THE INDEX ATABIT(R4),ASNLST 4$ PC,SDETAL Ré R4, 48. 3s (SP)+.Ré4 (SP)+.R0 PC MOV JSR #DPB,RO PC,SUMARY SUMARY: MOV MOV RO,=(SP) R&,=(SP) PC.SHDTYP - Ré (RO) R4 PC,SDETAL : : RETURN o : NONON 023742 JSR CLR MOVB JSR 023752 MOV MOV N nNONONN -\ W prururd §°° S32e =8 SIR 2 oog 32 R 50 0237, 21 023740 sCALL: [«]leTe] g & NOND W SN {« 3 3 o N had ~ =] =1=] NN =] N o~ &H NO e ::PUSH RO ON STACK ::PUSH Ré ON STACK :ANY DRIVES ASSIGNED ? sFINISHED ? ;BR IF NO :;POP STACK INTO Ré4 ::POP STACK INTO RO sRETURN :gg?;éflf TO TYPE THE PERFORMANCE SUMMARY (STATISTICS) FOR AN INDIVIDUAL 39 40 41 42 43 023714 &~ RO,=(SP) RG,=(SP) ASNLST $ SCRLF BEN JSR INC CMP BNE 000207 37 20003%\”\”\”\” W= VONOWVSLN=O o] MOV MOV ST BEQ TYPE BITB 001542 5%: gg 023712 PC,STATPR JSR 3s: 002056 JSR RETUR RTS :DPB ADDRESS sSAVE RO (SP)+,R4 3 VE R4 sSA sTYPE THE HEADING sCLEAR R4 FOR DRIVE NUMBER :DRIVE _NUMBER sTYPE THE STATISTICS sRESTORE Ré& PC sRETURN (SP)+.R0 sRESTORE RO sTYPE THE HEADER FOR THE DRIVE PERFORMANCE SUMMARY TYPEOUT N\ - JSR RETUR O onN 032574 SHDTYP: JSR SUMHD RTS S o o ~ W o N W : : PC,SHDTYP RS,TYPRI4 PC sTYPE_SUMMARY HEADER sHEADER sRETURN ;rxtf THE PERFORMANCE SUMMARY : : MoV #DRIVE R4 sDRIVE NUMBER SEQ 0117 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 24-1 GENERAL SUPPORT SUBROUTINES MoV 65 H 25 02375 023752 SDETAL: : 66 023756 104401 000404 023760 69 8%3770 004737 024764 3770 023774 7% 024000 I 026882 104401 104401 010446 001203 075304 RETURN giggs: T ::TYPE ASCIZ STRING ::GET OVER THE ASCIZ JSR PC,STIME sTYPE ELAPSED TIME LASCIZ TYPE - 16046 000056 — H e o o= SN © o ONee [« 310 fl §§§§§§§§ RER RS oo 024124 ,UNTMSG R&,=(SP) .BYTE .BYTE TYPE 2 0 .BLNKS1 TYPE -BLNKS1 076141 075234 032622 07 5234 032652 a9%Gty s g3e0 dddd 024222 026556 104401 024230 ::SAVE R4 FOR_TYPEOUT ::60 TYPE"OCTAL ASClI ..TYPE 2 DIGIT(S) suppness LEADING ZEROS fv BLANK 18 TYPE :TYPE 1 BLANK ;Y:EDRIVE TYPE YPE °* ::TYPE ASCIZ STRING 67% 63 / PASS / MoV JSR SPASSC(RO) ,=(SP) PC.$582D . WORD 3 ';VPE DIGITS ,BLNKS1 PC,TYHDA ;TYPE DRV SERIAL NUMBER ;TYPE 1 BLANK ;TYPE HDA SERIAL NUMBER TYPE JSR RS.REPLZ sTYPE LINE 3 OF SUMMARY TYPE 9$ ssGET OVER THE ASCIZ sPUT THE PASS COUNT ON THE STACK VERT IT TYPE 57 ..TVPE ASCIZ STRING :GET OVER THE ASCIZ $ BR -698: .ASCIZ <CRLF><LF>/WT oFi oW / &8s v TYPDS TYPE 76;13 00473 -SRM .C TYPE 'DRIVE' sTYPE 1 BLANK 24162 8%9030 .DASH sCR=L TYPE BR LASCIZ JSR 876141 1 <CRLF>/TIME / TYPE MOV TYPE TYPE 673 000104 033230 032470 658 648 TYPE :TYPE LINE 2 OF SUMMARY 024044 S2 000404 o s W S N o N &~ oo 4054 N &S v oo pers Q0 4042 104401 o 80 024036 Y T 1 0240 :DPB ADDRESS BR TYPE 79 #DPB,RO TYPE BR SHTOFL(RO).-(SP) ,PERIOD 718 0s LASCIZ /7 WRDS WRITN / MOV RO,=(SP) JSR PC,$0B2D ADD JSR TYPE #SURITN, (SP) PC.SUPR PERIOD ;TYPE LINE & OF S TYPE 9f§' Y :SAVE SWTOFL(RO) FOR TYPEOUT 3 tvpt-oecanL ASCII WITH SIGN YPE * ..TVPE ASCIZ STRING ssGET OVER THE ASCIZ sGET ADDRESS OF DPB :POINT TO LOW NUMBER OF WRDS WRITTEN CWVERT DECIMAL NUMBER UPPR§SS LEADING ZEROS AND TYPE s:TYPE ASCIZ STRING ::GET OVER THE ASCIZ - CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN=-82 15:16:58 PAGE 24=2 810 SEQ 0118 TINES GENERAL SUPPORT SUBROUTI 000064 P .ASCIZ $SRDOFL (RO) ,=(SP) oNro0 NN P2 o NWNW N =b b [elel=l=] Taum-os Y Y 80 ~ e e e : sSAVE SRDOFL(RO) FOR TYPEOUT ::60 TYPE==DECIMAL ASCII WITH SIGN / RO,=(SP) :GET ADDRESS OF DPB PC . SUPRS *SUPPRESS LEADING ZEROS AND TYPE ,PERIOD sTYPE LINE 5 OF SUMMARY b =D 768: TYPE BR .ASCIZ 7% 68 <CRLF>/SEEKS / D d d b md 024404 131 024404 024410 024422 132 024422 024426 133 024430 134 024434 024440 *POINT TO LOW NUMBER OF WRDS READ :CONVERT DECIMAL NUMBER STYPE *.° ::TYPE ASCIZ STRING L:GET OVER THE ASCIZ RO,=(SP) #SPOSIT,(SP) :PUT SPOSIT ON THE STACK :POINT TO LOW NUMBER OF SEEK COUNT PC . SUPRS ,PERIOD *SUPPRESS LEADING ZEROS AND TYPE :TYPE *.° PC,$DB2D 024364 024370 *.° ::TYPE ASCIZ STRING $:GET OVER THE ASCIZ #SREAD, (SP) PC,$DB2D — b d o g <2 77%: WNNIN = cd cd d b OV VRO~ 75$ 43 / WRDS READ / : fYpe ,PERIOD 076141 024264 —b <CRLF>/RD OFLOW *CONVERT DECIMAL NUMBER sTYPE LINES 6 AND_7 OF SUMMARY 798 TYPE ;:TYPE ASCIZ STRING 8s ::GET OVER THE ASCIZ BR :/ LASCIZ <CRLF>/ERRORS 05 024412 000074 4 os:"" TYPE BR +ASCIZ BR B MOV TYPDS TYPE TYPE 076141 024472 076141 024520 000102 is:* ::TYPE ASCIZ STRING :;GET OVER THE ASCIZ $SOFT(RO),~(SP) ;;SAVE $SOFT(RO) FOR TYPEOUT :£60. TYPE--DECIMAL ASCII WITH SIGN JASCIZ 000100 <CRLF>/SOFT / ,PERIOD 076141 024442 000076 81$ 0$ BR .ASCIZ 83s 823 / HARD / ,PERIOD 85$ 843 / SKI / .p;nxoo b MoV °. $:GET OVER THE ASCIZ D ;;SAVE SHARD(RO) FOR TYPEOUT (RO) ,=(SP) $HAR $SKI(RO),=(SP) BR +ASCIZ sTYPE $:TYPE ASCIZ STRING 87% 6$ / MISP / $MISPO(RO) ,=(SP) Efeg TYPE-=DECIMAL ASCII WITH SIGN SfYPE °, $:TYPE ASCIZ STRING *:GET OVER THE ASCIZ ::SAVE $SKI(RO) FOR TYPEOUT ::60_TYPE==DECIMAL ASCII WITH SIGN sTYPE °. *:TYPE ASCIZ STRING $:GET OVER THE ASCIZ ::SAVE SMISPO(RO) FOR TYPEOUT CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 24-3 10 SEQ 0119 GENERAL SUPPORT SUBROUTINES 0245 142 024536 143 02454 et 104401 876141 24550 0004 10“81 144 0 4568 016046 000072 147 ogasga 024570 024574 ogl.eoo 148 024 149 024606 150 054612 151 024616 TYPDS 182"05 166016 166016 166016 166016 104.485 104401 104401 000207 000074 000076 ooo1og 10 076141 001203 TYPE BR TYPE “gn: .Psnxoo $ $ ::60 TYPE==DECIMAL ASCII WITH SIGN STYPE *.° $SGET OVER THE ASCIZ $:TYPE ASCIZ STRING LASCIZ / OTHER / SUB SUS SUB su8 TYPDS TYPE TYPE RTS SOFT(RO),(SP) :SUBTRACT S$SOFT FROM $TOTAL (RO) . (SP) :SUBTRACT SHARD FROM STOTAL $HARD $SKI(RO),(SP) :SUBTRACT $SKI FROM STOTAL $MISPO(R0) , (SP) :SUBTRACT SMISPO FROM STOTAL ::60_TYPE==DECIMAL ASCII WITH SIGN ,PERIOD STYPE °. :CR=LF $CRLF PC MOV TOTAL (RO) ,=(SP) :CALCULATE NUMBER OF OTHER ERRORS CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 25 D10 SEQ 0120 GENERAL SUPPORT SUBROUTINES 15 16 ;ROUTINE TO INCREMENT $SOFT :NOTE: INCSOF: TST 001342 000074 BNE CMP BHIS 077777 000074 18: 17 INC RTS BADSEC ;SEE_IF BAD TRK/SEC INDICATOR SET :BR IF IT'S SET, DON'T INCREMENT COUNT $SOFT(RO) ,#77777° 1S $SOFT ALREADY AT MAXIMUM ? 18 :BR IF IT IS 1$ $SOF T (RO) PC :RETURN ; INCREMENT $SOFT sROUTINE TO INCREMENT SHARD :NOTE: 000076 SHARD WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCHRD: TST 001342 077777 000076 18: 18 BNE CMP BHIS INC RTS BADSEC ;SEE_IF BAD TRK/SEC INDICATOR SET PC :RETURN 1$ *BR IF IT'S SET, DON'T INCREMENT COUNT $HARD (RO) ,#77777° 1S SHARD ALREADY AT MAXIMUM ? 1% :BR IF IT IS : INCREMENT $SHARD $HARD (RO) ;ROUTINE TO INCREMENT $SKI ;NOTE: 001342 000100 19 $SOFT WILL NOT BE INCREMENTED BEYOND 77777 (32767.) 024712 000207 077777 000100 $SKI WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCSKI: TST BNE CMP BHIS 1$: INC RTS ;SEE_IF BAD TRK/SEC INDICATOR SET :BR IF IT'S SET, DON'T INCREHENT COUNT $SKI(RO) ,#77777 :1S $SKI ALREADY AT MAXIMUM ? :BR IF IT IS 1$ $SKI(R0O) s INCREMENT $SKI BADSEC 1$ PC sRETURN ;ROUTINE TO INCREMENT SMISPO ;NOTE: 024714 005737 001 001342 000102 077777 000102 S$MISPO WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCMIS: ;fif E 18: CMP BHIS INC RTS BADSEC 1$ SEE IF BAD TRK/SEC INDICATOR SET n s SET, DON'T INCREMENT COUNT SMISPO(RO), 077777 :BR IF xf xsSMISPO ALREADY AT MAXIMUM ? 18 $MISPO(RO) PC :RETURN : INCREMENT SMISPO sROUTINE TO INCREMENT STOTAL :NOTE:- STOTAL WILL NOT BE INCREMENTED BEYOND 77777 (32767.) 001342 000072 000072 INCTOT: TST BADSEC SEE IF BAg ;RKISEC INDICATOR SET 18: PC :RETURN BNE 077777 CMP BHIS INC RTS 18 DON'T INCREMENT COUNT $TOTAL (RO), mm :BR IF n IS m ALREADY AT MAXIMUM ? 18 $TOTAL (RO) : INCREMENT STOTAL CZRNANO R*480 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 26 E 10 SEQ 0121 sROUTINE TO TYPE THE TIME STIME: 001312 025040 TST o R 28: 052 #2,28 HOUR, = (SP) (SP) ,#100. INC 2s .me 3 DIGITS BLT INC JSR JSR 1$ 2 PC,$582D RS.FILLZ BR IF NO STYPE 4 DIGIT .convenr TO DECIMAL YPE IT 222V b et OO - (=] o 1% (SP) ,#1000. .WOR TYPE MOV JSR JSR MINUTE ,=(SP) PC,$582D RS.FILLZ TYPE ,COLON LWORD 3s: ,COLON 2 MOV JSR JSR SECOND,=(SP) PC,$582D RS.FILLZ RTS PC .WORD 2 & RO RONSRRRSRSHER(. ¥X b b — 001350 001346 OO NININININ) b = =d b V9 NN il OO0 OOOOOOO0OO0O00O N :CLOCK HANDLER ROUTINE 001352 001314 7 001466 177777 001316 001466 ? nu\aen OF HOUR DIGITS TO TYPE pur *MINUTES® ON THE STACK *CONVERT TO DECIMAL *TYPE 51 rwe DIGITS Pur SECONDS ON THE STACK *CONVERT TO DECIMAL STYPEIT :TYPE 2 DIGITS :INCREMENT THE ONE SECOND COUNTER *BR IF A SECOND NOT COUNTED *RESTORE THE VALUE .coum THE SECOND AT mmn ? :BR IF ;CLEAR me SECOND'S COUNTER :COUNT THE PERFORMANCE SUMMARY INTERVAL :COUNT THE MINUTE AT mmun ? :BR IF :CLEAR me MINUTE'S COUNTER :COUNT THE HOUR :CPU RUNNING @ SOHZ ? MOV #20.,-(SP) :20MS ON THE STACK @ SOWZ gg lxgflm .-g'x‘s?uHE PERFORMANCE SUMMARY ? CMP BNE MOV CLR INTRVL, INTRVL+2 :DISPLAY xmnm FINISHED ? :BR IF NOT 4 *SET PERFORMANCE SUMMARY DISPLAY FLAG #-1,STATIN *CLEAR THE PERFORMANCE INTERVAL COUNTER INTRVL +2 BEQ ggv $: 001464 :1000. HOURS ONESEC 18 HZ,ONESEC SECOND #60. ,SECOND . 18 SECOND INTRVL +2 MINUTE #60. ,MINUTE 18 MINUTE ngua #50. ,HZ gs: 1464 IF NO CLOCK: DEC BNE MOV INC CMP BNE CLR INC INC CMP BNE CLR INC CMP 18: 000020 884152 CLOCK ON THE SYSTEM ? IF NOT :BR Assme 2 DIGITS TO TYPE HOURS® ON THE STACK 1 o. HOURS OR MORE? CMP 18: SE""G BNE MOV MOV CMP BLT =1=] RO g\fl\fl\fl\fl\fl\fl RS S S RS S RN S S RIS IR UK L BB RN R R RN RS B I R i = O 00 ~o NS LN = GENERAL SUPPORT SUBROUTINES 4$: JSR 2 g;c..-(sn PC,RMTMR *BR IF YES $16MS ON THE STACK @ 60MZ *DRIVER TIMER ROUTINE C. CZRNAAO RM8O PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 27 F10 SEQ 0122 :COMMAND DECODE ROUTINE 233 &H \h\h\hx 02 SO% 0 551 N o ~N 000010 JSR RETURN1 RETURNZ PC.KSR TST DTUW KSR KSR1: 18: MOV N =1 W - Wn 008 ® o $SS y=]4 SNNESSNWN RIS £ 2 —5 N o OO == R §;a;28§ — 177776 #1,CFLAG § 764 033326 076231 TYPE RDLIN Mov TST 001340 BEQ TST 001542 BNE JMP 003532 (SP)+,RS5 FLAG $ sPOINT TO SECOND CHARACTER ;EQTOA 'T" ? b b 000067 CMPB (R3) .#'7 000060 CMPB 177770 000124 BICB MP8 - N — b #'A,(R5) 177777 4$: 026356 000123 000127 sBR IF IT IS #4C7,(R5) O;T."l (RS) .IE.SA¥5 ?#Y LOWER 3 BITS IF CHAR NOT ‘A’ 12% A u; ‘umsu CMPB ;;o.q (RS) JSR u; £DEASGN CMPB JSR g;s.-ms» PC, SCMND 177777 6$: (MP8 #°W,=1(RS) 153444 ;DRIVE NUMBER GREATER THAN AN ASCII 7 ? :DRIVE NUMBER LESS THAN AN ASCII 0 ? JSR BNE ST BNE BIT BNE sYES ;EQ TO AN ‘A’ :BR IF IT IS (R3) ,#'0 5$: 001440 000001 128 177777 026464 sBR IF NO "CONTROL C' ENTERED RS 13% START CMPB 000104 sREAD THE KEYBOARD sGET ADDRESS OF INPUT STRING sCHECK THE CONTROL C FLAG sANY DRIggS ASSIGNED ? sBR IF Y sJUMP TO START 000101 026556 :Ektg THE *CONTROL C*' FLAG ASNLST 3;7. (RS) 3s: :ANY DATA TRANSFERS UNDER WAY ? +ENTCOM CMPB 177777 sSYSTEM BUSY RETURN sRETURN AFTER KEYBOARD SERVICED :TYPE THE TIME sINITIALIZE TTY KEYBOARD :"ENTER COMMAND' CFLAG ) b \) INC sROUTINE IN INTERRUPT MODE #CLR,RMCS2(R4) #PRé ,PS RMADR , R4 — 2$: s'CFLAG® IS NORMALLY SET BY THE TTY SERVICE .BR IF YES :SAVE THE REGISTERS sSET PRIORITY TO 4 :GET RM/%H BASE ADDRESS :CLEAR MASSBUS CONTROLLER b ey KSR: MoV 000124 - NN O0O0000 N e NN i N VW VON SOSSS8e W 9y PR \d\fl\h\fi &~ ~ &» 3% \YJ on o (- V]332 3 0000 =4 NN NN [elelelelelele] NN 57 545 5 NS 2 NS ONNON SX328N g 8= &SNN g8-.-.-.-...-.8 POND N = = = = =N \) =2 —b\) = ) =d NNV WIS NS NN S NON3= RIF=0 N =N ON=O U‘g NN = oo SNNNOWWIMIWBWNM N SNASAINSASY2 NN WNNOWO —3 3 W NN 'y Sagy REIES§m~a~u (W IV IV 1V, ] sCALL: 00000 I S S RS S R SR S 8 IR R UK U B SR N R R RN NS SR UG r i = O 0~ NS W= GENERAL SUPPORT SUBROUTINES sBR IF IT IS F NOT EQ ?lGN DRIVE FOR TEST 1§£ 8s Y RDONL 118 #5W0,aSWR 118 :BR IF NOT EQ D "READ ONLY'" MODE ? LOCKEIN :IS SWITCH O SET ? :BR IF SET, CAN'T DO W' COMMAND SEQ 0123 SUBROUTI 026600 gg DATAPK 000122 #'R,=1(RS) 128 Pg REDAPK 1 026566 o 000127 001440 NOWNISN BN O =2 ON N W= YNNI SO B e e e S ONO S 28288 oS 38388%a55REN g-ooguo- b \) = ON 000001 3 70 *R* ? *BR IF NOT EQ EE?? A DATA PACK 1 Comwe1 .LOCKED IN *READ ONLY'* MODE ? :BRIF SET cm'r DO 'W' COMMAND .A%l. DRIVES ? 1 }(RS) M7 sggu THAN 7 1(R5) ,.#'0 1 2$ #°C7,1(RS5) SLESS THAN 0 076143 iHSM!() ;;Pe *CAN'T WRITE IN READ ONLY MODE' 076206 INVLD ;TYPE *INVALID COMMAND® MESSAGE 177770 026612 gWATPAK is asTkB #81T706,38TKS PS PC 2 =i=1=] :m;e A DATA PACK :BR IF YES IS sumu 0s NN 0O 0000000000000 O NN Vi Vi Vi 727 *YES SCHOP OFF THE HIGHER BITS *ASSIGN DRIVES WITH WT COMMAND AGAIN TRV AGAIN ;SET PRIORITY BACK TO ZERO ;RETURN NE (R5) R4 :PUT DRIVE # IN R4 ;CLEAR CONTROL C FLAG sASSUME CHANGING DRIVE PARAMETERS ;TYPE *CHANGE DRIVE PARAMETERS ?° :READ THE ENTRY :SAVE ADDRESS OF RESPMSE :WAS IT CONTROL C is :BR IFYES BRSIRES'E’?‘SE A CARRIAGE RETURN (DEFAULT °N')? BUaSIT TERMINATED WITH CARRIAGE RETURN ? IF_NO SR NN=- WO - ;WAS IT A "Y' RESPONSE ? BR IF _YES WAS IT A 'N' RESPONSE ? BR IF YES g ~N S ~ NS = o WHOO - NNNNYN AT i Wy Vi N VW : ASSIGN: MOVB 1$: CLR o gu\n SroSRSNSS RERSR[Nz ”OOOOOOOOOOOOOOOOOO% NN PNONNNN NN :ROUTINE TO PROCESS THE ASSIGN REQUEST (°'T', °R', OR 'W' COMMANDS) o SWN=O 10 : 38833383888 38 vyg\n EREFXSan MR E~ g3PP &SNEOERRESEE NSNS Y i SIINIRI288R SR OREC2SIRIRRRRR2S 3a3J NRYITTARELLRSBES F Y e e R e e e e b e N b e — N 23 & PERF EXER H'A‘Elsio V04.00 14=JAN-82 15:16:58 PAGE 27-1 808737 ;;PE wENTRY MESSAGE DRVPAR #'A.RG ;D0 NOT CHANGE DRIVE PARAMETERS agS{GNels.l. DRIVES ? :lx)DJ'T’ASN.ASMSG ASSIGNED' QSSAEE ADDRESS ; "DRIVE ASGN2 %5355 1444 sLOADED FROM THIS DEVIC u.gz 02577 BEQ SEQ 0124 1 ;7 60, 026026 026032 026034 026130 004737 000207 000137 031154 02604 805 28: PC,ASGN3 PC ASNERR *SEE IF DRIVE ON THE SYSTEM *RETURN *EXIT ERROR ASGN2: CLR Ré :START WITH DRIVE 0 ST BEQ CMPB XXDP 2 XXDP,Ré *LOADED FROM THIS DEVICE ? *BR IF NO *LOADED FROM THIS DRIVE ? gns.oosv.asmsc *'LOAD DEVICE® MESSAGE ADDRESS angv ALREADY ASSIGNED ? ) ,ASNLS :BR IF IT:DRIVE BITB ATABIT(R4 IS 2 1; 7 075355 031200 18: MOV 0 6023 001 3260 4 o1z71§ 075464 031200 usr 040300 001542 28: 1“34.1.n o§eon 026102 001007 BNE 38: ozmgz 004737 031154 026126 000770 48: St 2 026106 004737 026130 026110 005204 026112 02 gr 000007 Ny ST 003751 ooo;or 026130 136437 040300 001542 ASGN3: 026140 026144 110437 006304 026136 001060 S TR AUV 026164 ozms 026170 026174 026200 02 os 1g 026212 026216 02 0 0 0 0 3 ; oousg 10044 004737 004737 004537 005737 °81°" 104401 o1ou.g 10440 040164 ozgeso 027550 027650 001442 076034 % 10“21 004737 3% 10«21 1203 ggs 7 szgs %0 004737 104401 00120 026250 006 026246 026252 004737 85705‘ 026256 004737 030254 1$: *BR IF NO *'LOAD DEVICE' MESSAGE ADDRESS BNE JSR INC CMP 4$ PC,ASGN3 R& RG A7 * INCREMENT DRIVE # JSR BR PC,ASNERR 3s :ERROR MESSAGE :T0 LOOP BITB BLE RTS BITB BNE ATABIT(R4),ASNLST:YES 18 PC ASGN& DRIVE ALREADY ASSIGNED ? :BR IF IT IS :GET DRIVE NUMBER *MAKE R4 WORD INDEX PC ,RECALO R& DRVSTA(R4) *RECALIBRATE DRIVE *MAKE R4 BYTE INDEX *DRIVE AVAILABLE? BEQ BM! JSR JSR JSR ST BNE TYPE MOV TYPOS ASGN? ASGN6 PC,CLRDPB PC.GETID RS.GETADR DRVPAR 1$ DRNUM Ré,=(SP) TYPE JSR TYPE JSR TYPE ASL SCRLF PC.TYDRV TAB PC.TYHDA $CRLF Ré JSR *NO *YES R&,GENDPB Ré ) BLKADR(R4,RO JSR ;ALREADY ASSIGNED ? *ASSIGN THE DRIVE *ALL DRIVE CHECKED ? ATABIT(R4) ,ASNLST MOV .BYTE “BYTE 385 28 22" JSR ASR TST8 015624 SUNTASN,ASNMSG :ERROR MESSAGE zliooev.nsmsc MOVB ASL 067556 ozmg ow.og 002056 004737 ogms 026156 oog;ol. 026160 105764 :LOA?FDusaon THIS DRIVE ? BNE JSR RTS JMP 026050 005737 001444 026054 001407 123704 001444 osso 026116 026120 :BR IF NO :&(op.m. 3 1 1 98'; 075464 031200 1 27 040300 001542 18: 86012 oowg; 02604 1% gz;a 001444 8 AN S A Y e e o e i H 10 SUPPORT SUBROUT INES vt e 0O NV NN = ddddddddddddflddddddddddddddddddddddddddfldddfldd — D o e OO0~ E 83 z : RMS0 PERF EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 27-2 PC,DRVPRM PC.MANTER :PUT BLOCK'S ADDR INTO RO *BR IF DRIVE OFFLINE OR NONEXISTENT :BR IF DRIVE UNSAFE *CLEAR BLOCK FOR DRIVE JUST ASSIGNED *GET DRIVE (MBA) SERIAL NUMBER *RETRIEVE BAD SECTOR FILE *CHANGE DRIVE PARAMETERS ? *BR IF NO :TYPE DRIVE MESSAGE *:SAVE R4 FOR TYPEOUT 1360 TYPE=--OCTAL ASCII SSTYPE 2 DIGIT(S) * SSUPPRESS LEADING ZEROS $CR=LF STYPE DRV SERIAL NUMBER STYPE TAB CONTROL STYPE HDA SERIAL NUMBER SCR=-LF :MAKE R4 WORD INDEX “GET THE DRIVE'S ADDRESS LIMITS *MANUALLY ENTER BAD SECTOR INFORMATION CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 27-3 110 SEQ 0125 GENERAL SUPPORT SUBROUTINES % 016464 882258 801566 170 8 1 782 132 00026 171 026276 0062 BLKADR(R4) , NEMT(M) ASGN4: RTS PC :RETURN ASGN6: MOV #NOTSAF ,ASNMSG ASNERR ; 'UNSAFE' MESSAGE ADDRESS ;70 ERROR ROUTINE TSTB DRVTYP(R&) DRIVE PRESENT? ASNERR :TO ERROR ROUTINE };g 026 000207 174 02630 0127;7 075454 105764 040174 ASGN7: 000137 031154 $: };g 026310 177 026314 178 026320 179 026322 180 026324 181 026332 18% 026334 183 026342 184 026344 185 026252 000137 031154 031200 ADDRESS Mmove ASR MOV 169 0 001405 100019 012737 075403 031200 0004g7 012737 075420 031200 18: 000403 012737 075312 031200 28$: JMP BEQ BPL MOV BR MOV BR MOV JMP PACK , SPACK (R0) MKE Ab/H!lTE DATA PACK INDICATOR Ré Rlo BYTE INDEX 1$ 2s #NOTRM,ASNMSG 3s #NOTPRS ,ASNMSG 3s NUNTOFF ,ASNMSG :BR IF NOT :BR_IF DRIVE OFFLINE :ADDRESS OF °'NOT RM80® MSG SEXIT :ADDRESS OF °'NOT PRESENT' MSG EXIT :ADDRESS OF 'DRIVE OFFLINE® MESSAGE CZRNAAO RM8O PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 28 J 10 SEQ 0126 GENERAL SUPPORT SUBROUTINES 1 § & ose 5 805904 9 8%6;9& ag 715 S 026 6370 gozegrz 0263764 10 8 6400 1 6408 1; 026410 13 026416 1% 026426 15 026426 16 o%g‘l. 17 026436 18 026440 :'D' COMMAND (ROUTINE TO DEASSIGN A DRIVE) :START WITH DRIVE 0 R& DEASGN: CLR *COUNTER #8..R3 MOV :DEASSIGN ALL DRIVES ? #'A.(RS) CMPB 1 og 000010 000101 BEQ 18 *BR IF YES 28: ASR DEC BEQ R R3 43 ;ANY MORE DRIVES ? i8R IF NOT 000755 012737 075333 031200 38: 004737 031154 000766 BR MOV JSR BR 001403 111504 012703 136437 001417 146437 146437 006304 016464 ooeggl. 005303 001410 000001 040300 001542 18: 040300 oomg 040300 03201 002056 001544 19 o;w.z 005204 go 026444 1 026446 z§ 026454 23 026460 gg 026462 48 000207 MOVEB (RS) R4 :GET DRIVE NUMBER SET R3 FOR ONE DRIVE MR MOV :DRIVE ASSIGNED ? BITB ATABIT(R4) ,ASNLST :BR IF NOT 3 BEQ :DELETE THE DRIVE FROM THE ASSIGNED LIST ATABIT(R4),ASNLST BICB *DELETE DRIVE FROM AUTO ASSIGN LIST ATABIT(R4).AUTLST BICB :MAKE ADDR INTO A WORD INDEX Ré ASL ;PUT ADDRESS IN DEASSIGN LIST BLKADR(R&) ,DDRVS(R4) MOV INC RTS R4 18 SUNTNOT ,ASNMSG :ADDR OF °"NOT ASSIGNED® MESSAGE *REPORT 1T PC,ASNERR 2 PC 59 :'S* COMMAND (ROUTINE TO TYPE DRIVE PERFORMANCE SUMMARY) 28 026464 SCMND: 026464 013746 001542 gg 026470 122715 000101 026474 31 026476 026500 3 026506 001416 111504 136416 001404 040300 §" 026506 116437 040300 001542 32 026514 000411 37 026516 012737 075333 031200 18: ;a ozcs% 004737 031154 oool.g? 9 0265 40 026532 42 1 026536 026540 105737 001542 2s: 004737 o;ssze 38: 001404 - 2‘ 322’5‘6 104401 075617 026550 012637 001542 22 026554 ASNLST,=(SP) MOV tMP8 #'A, (RS) BEQ MOVB BITB BEQ *BR IF YES *GET DRIVE NUMBER (RS),.Ré& ATABIT(R4),(SP) :IS THIS DRIVE ASSIGNED ? ‘B8R IF NO 18 MOV JSR B8R SUNTNOT ,ASNMSG :ADDR OF °NOT ASSIGNED® MSG :TYPE ERROR MESSAGE PC,ASNERR SEXIT 4 MOVS ATABIT(R4) ,ASNLST 3s BR TSTB BEQ ASNLST *ANY DRIVE ASSIGNED ? :BR IF NO ,STARS STYPE ‘sxex,, ETC' PC,STATPR MOV (SP)+,ASNLST TYPE :GET DRIVE ASSIGN BIT 4 JSR RTS 000207 ;:PUSH ASNLST ON STACK SALL STATISTICS ? PC STYPE ALL STATISTICS ;:POP STACK INTO ASNLST :*T* COMMAND (ROUTINE TO TEST A DRIVE) 2; 49 026556 oosogr 001320 NEWASN: CLR gg :*R* COMMAND (ROUTINE TO READ A DATA PACK) JMP gg 026562 000137 025666 54 026566 012737 000001 55 026574 000137 025666 001320 REDAPK: MOV JMP PACK ASSIGN #1 ,PACK ASSIGN :SET *T* COMMAND INDICATOR *G0 TO THE ASSIGN ROUTINE :SET THE 'READ' INDICATOR “ASSIGN THE REQUESTED DRIVE CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 28-1 K 10 SEQ 0127 GENERAL SUPPORT SUBROUTINES 56 ;"W COMMAND (ROUTINE TO WRITE A DATA PACK) g; §9 026600 o127§7 177777 g? 026606 000137 025666 001320 JMP #-1,PACK ASSIGN sSET THE ‘W' COMMAND INDICATOR ;ASSIGN REQUESTED DRIVE ;'WT* COMMAND (TO WRITE A PACK AND TEST A DRIVE) gg &4 026612 65 026616 DATAPK: MOV 116515 012737 000001 177776 66 0266264 000137 025666 001320 WATPAK: MOVB MOV JMP 1(RS),(RS) #=2,PACK ASSIGN sADJUST DRIVE MER ADDRESS *PACK WRITE COMMAN :JUMP TO ASSIGN ROUTINE CZl CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 29 GENERAL SUPPORT SUBROUTINES L 10 SEQ 0128 1 lcaot:{me T0 CLEAR THE DPB FOR THE ASSIGNED DRIVE 4 5 9 i : : g ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE % CLRDPB: 10 026630 026630 010146 026632 26636 026636 11 026640 12 026644 13 026646 14 026650 18: 17 026662 162703 000002 001374 18 026666 062704 000106 026674 012703 20 005024 21 026700 22 026702 162703 000002 23 026706 001374 24 026710 062704 002004 25 27 026714 012703 000064 31 026720 012764 177777 005024 32 026726 33 026730 162703 000002 001374 026734 35 026736 113760 001514 36 026744 013701 001514 002076 026750 116160 37 026756 113760 001512 9 026764 106360 000030 40 026770 013760 001516 41 026776 013760 001516 005460 000004 42 027 43 027010 012760 000400 4% 027016 012760 000001 45 027024 132760 000001 46 027032 001403 2760 000002 g 85;823 027042 012605 012604 027044 012603 027046 027050 012601 207 gg 027052 28: 177776 38: 000024 000002 000030 000020 000004 000022 000104 000024 000022 . ::PUSH R1 ON STACK R1,=(SP) MOV CLR :NUMBER OF LOCNS TO BE CLEARED cdm.-scomo»z R3 CLEAR THE LOCATION su8 BNE ADD 000002 :DPB ADDRESS MOV MOV MOV MOV TST BNE MOV ADD 010346 010446 010546 005737 037716 001076 010004 062704 000002 026654 012703 000012 15 16 026660 005024 19 026670 #DPB,RO MOV PC,CLRDPB JSR RETURN MOV CLR Su8 BNE ADD MOV MOV CLR Su8 BNE MOVB MOV MOVB MOVB ASLB MOV MOV NEG MOV MOV BITB BEQ ADD MOV MOV MOV MOV RTS R3.=(SP) R&.=(SP) RS.=(SP) puén.e ao na $:PUSH R3 ON STACK :iPUSH RG ON sucx *PUSH RS ONS herummc raon POHER FAIL ? *BRANCH IF YES *GET THE DPB ADDRESS *ADDRESS OF FIRST LOCN TO BE CLEARED nz as oons CLEARING YET ? IF NO *BR SKIP OVER THE "SREG' LOCATION OF LOCNS TO BE CLEARED :NUMBER ns THE #<§NEX7-STATUS>¢2:CLEAR LOCATION :DONE CLEARING YET ? :2 ns *BR IF NO 28’ :SKIP OVER FIRST FLAG, MIN/MAX ADRS #<SDRVSN=-$F IRST>. R4 SLIMITS AND BAD SECTOR TABLE #<SRMCS3-SDRVSN>+2,.P3 :NUMBER OF LOCNS TO BE CLEARED :INITIALIZE TERMINATOR FOR BAD SECTOR TABLE #-1,-2(R4) *CLEAR A LOCATION (R4) + :DONE CLEARING YET ? #2.R3 *BR IF NO 23 ;INITIAL COMMAND CODE BEGCOD,SCODE(RO)" THE ACTUAL OP CODE BEGCOD .R1 CODE opemmuCODE comamn scomb(no) *PATTERN BEGPAT,SPATTC(RO) :CONVERT CODE TO A TABLE INDEX SPATTC(RO) BEGWC, SWRDL (RO) :BEGINNING WORD COUNT aesuc.sucmnm *VALUE FOR DATA TRANSFER SMAKE IT INTO 2'S COMPLEMENT Sg (RO) cz 6..sssec<ao> SINITIAL VALUE OF SECTOR SIZE #1,8PASSC(RO) :PRESET PASS COUNT T0 1 .umsn COMMAND? #1.$CODE (RO) *BR IF NOT (s :ADD HEADER SIZE TO SECTOR SIZE #2.8SSEC(RO) ::POP STACK INTO RS (SP)+,RS $3POP STACK INTO R& (SP)+.R& ::POP STACK INTO R3 (SP)+.R3 POP STACK INTO R1 (SP)+.R1 .ksTURN PC §1 .-agflms 7O GET ADDRESS LIMITS FROM THE OPERATOR 5 : #DP3.RO :DPB ADDRESS 2 EN CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 29-1 GENERAL SUPPORT SUBROUTINES : gg 010346 65 027100 001002 §9 027056 60 027060 61 027064 027063 63 027072 64 027074 gg 027102 68 027106 010446 105737 001150 00101 005737 001336 003005 005737 001442 104401 076252 004737 027462 1$: 001434 005737 027144 74 75 027150 001004 78 027162 005060 2%: 82 027176 83 027202 105737 001150 001113 4$: 3s: 79 027166 005060 000134 g? 027172 005060 000140 90 027232 013763 91 027240 013763 92 027246 013763 93 027256 013763 LENTLMT :YENTER ADDRESS LIMITS® 000010 000016 000024 000032 FEFLAG 2% BR :RUNNING IN AUTO MODE ? *BR IF YES MOV MOV MOV MOV CYLIMT.10(R3) TRKLHT.16(R§) RKLMT.24(R3) SECLMT,32(R3) :LOAD CYLINDER LIMIT FOR MAXCYL :LOAD TRACK LIMIT FOR MINTRK :LOAD TRACK LIMIT FOR MAXTRK ;LOAD SECTOR LIMIT FOR MINSEC 000126 BLE MOV 134 0140 136 68: 3s $AUTOB 9s 003404 010360 000132 FE1,MINCYL(RO) :RESET MINIMUM CYLINDER ADDRESS TSTB BNE 100 027 101 027310 5$: ré CYLINDERS ONLY ? :USING :BR IF NO :CLEAR MINIMUM CYLINDER CLR CLR MOV 000130 000134 000132 :LOAD MAXIMUM CYLINDER LOAD MAXIMUM TRA AD MAX IMUM secron MINCYL (RO) 000130 010460 016003 816004 20304 003404 810360 1046g 01600 016004 CYLIMT, nAchLtnoi TRKLMT,MAXTRK (R0) ssanr“MAXSEC (RO) CLR 016003 102 027314 103 027320 106 027324 105 0273 106 027332 107 057334 108 0 7;20 109 027344 110 027350 :GET ADDRESS LIMITS TST 97 027274 016004 000126 98 027 99 027304 020304 *BR IF NO IF FIRST TIME STARTED srxast(no) sse c-i BR IF NOT 48 MOV JSR 013763 001424 000040 9 027262 32 027270 004737 031030 1$ JSR ADD BCS ST BGT ST BNE MOV MOV 001336 001442 100042 001422 000002 001422 001426 001426 001424 TYPE MOV 000130 005737 003110 005737 001105 016403 013763 *SAVERé& *RUNNING IN AUTO MODE ? *BR IF YES *PROGRAM STARTED AT 200 ? *BR IF YES *CHANGE DRIVE PARAMETERS ? BNE 76 027152 013760 001430 000130 84 027204 85 027210 86 027212 87 027216 88 027220 89 027224 R&.=(SP) $AUTOB 1$ CHGADR 1$ DRVPAR MOV MOV MOV 71 027122 013760 001422 000126 72 027130 013760 001426 000132 73 027136 013760 001424 000136 000402 :CALL ROUTINE MOV TSTB BNE ST BGT ST BNE 027112 062760 177777 000124 69 70 027120 103426 77 027160 PC,DRVPRM SEQ 0129 *RO = DPB ADDRESS BEFORE CALLING THE ROUTINE :SAVE R3 R3,=(SP) DRVPRM: MOV gg §8 027054 JSR Mm10 MINTRK (RO) MINSEC (RO) CHGADR 9% DRVPAR 3 ,R3 TABLE(R4) CYLIMT,2(R3) SECLMT.40(R3) PC,PARENT SCLEAR MINIMUM TRACK *CLEAR MINIMUM SECTOR :PROGRAM STARTED AT 200 ? *BR IF YES *CHANGE DRIVE PARAMETERS ? *BR IF NO :PARAMETER TABLE ADDRESS *LOAD CYLINDER LIMIT FOR MINCYL :LOAD SECTOR LIMIT FOR MAXSEC *GET THE DRIVE'S PARAMETERS MINCYL(RO) ,R3 ;STORE MINCYL VALUE 5% R3,MAXCYL(RO) *BR IF YES ;SWAP MIN. TO MAX. MOV CMP MAXCYL(RO) R& ns.a4 MOV MOV MOV CMP BLE MOV MOV MOV MOV R4.MINCYL(RO) MINTRK(RO) ,R3 MAXTRK(RO) R4 R3.R4 5% R3,MAXTRK(RO) R4.MINTRK(RO) MINSEC(RO),R3 MAXSEC(RO) R4 :STORE MAXCYL VALUE *IS MIN. LESS THAN OR EQUAL TO MAX. ? :SWAP MAX. TO MIN. :STORE MINTRK VALUE :STORE MAXTRK VALUE :IS MIN. LESS THAN OR EQUAL TO MAX. *BR IF YES ;SWAP MIN. TO MAX. :SWAP MAX. TO MIN. :STORE MINSEC VALUE :STORE MAXSEC VALUE 2l ENI CZRNAAO RMB0 PERF EXER MACKO VO04.00 14=JAN-82 15:16:58 PAGE 29-2 GENERAL SUPPORT SUBROUTINES 111 027356 020304 11; 027356 003404 113 027360 }}g 027364 010360 010460 CMP BLE MOV MOV 000136 000140 78: 116 027370 005737 001434 117 027374 001019 118 027376 026037 000130 001430 119 027404 103003 120 027406 013760 001430 000130 121 027414 026037 000126 001430 8$: 122 027422 103003 125 027432 126 027440 127 027446 128 027456 027456 016060 0001§o 000012 9S: 116060 000134 000011 116060 000140 000010 012604 012603 }%2 027424 013760 001432 000126 }gg 027460 000207 ST BNE N 10 R3.Ré 78 ;1S MIN. LESS THAN OR EQUAL TO MAX. ? :BR IF YES FEFLAG ;USING FE CYLINDERS ONLY ? R3,MAXSEC(RO) R4.MINSEC(RO) 9s CMP_ MINCYL(RO),FE1 CMP MAXCYL (RO),FE1 MOV FE2,MAXCYLC(RO) BRI MOV BHIS MOV MOVB MOVB MOV MOV RTS SEQ 0130 :SWAP MIN. TO MAX. :SWAP MAX. TO MIN. *BR IF NO :IS MIN. CYLINDER < 1ST FE CYLINDER ? 8S FE1,MINCYLCRO) *BR IF NO :YES, RESET MIN. CYLINDER 9% *BR IF NO IS MAX. CYLINDER < 1ST FE CYLINDER ? :YES, RESET MAX. CYLINDER sINITIAL CYLINDER VALUE MINCYL (RO) , $CYL (RO) SINITIAL TRACK VALUE MINTRK(RO) .$TRK(RO) SINITIAL SECTOR VALUE MINSEC(RO) .$SEC(RO) ::POP STACK INTO Ré (SP)+,Rb (SP)+.R3 PC ::POP STACK INTO R3 *RETURN }%} ‘?23{‘”5 TO GET THE ADDRESS LIMITS FOR THE CURRENT DRIVE TYPE }gz : 137 027462 005737 001434 138 027466 001004 139 027470 013737 001432 001422 001056 001422 000403 14; 027500 012737 146 027530 001003 148 027536 149 027540 150 027546 001403 012737 000207 18$: 012737 000015 001426 28: 143 027506 144 027514 012737 000036 001424 145 027522 032760 001000 002172 :CALL ROUTINE BNE MOV BR 1$ FE2,CYLIMT *BR IF NO *GET 2ND FE CYLINDER MOV #558.,CYLIMT ;GET LAST CYLINDER MOV MOV BIT BNE ST 147 027532 005760 000112 000037 PC,GETLMT ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE ;USING FE CLYINDERS ONLY ? FEFLAG GETLMT: TST }gg }2? 027476 JSR 001424 3$: i$: BEQ MOV RTS 2 *GET LAST TRACK FOR AN RM80 #13. . TRKLMT *GET LAST SECTOR #30. .SECLMT #SSET, SRMOF (RO) :IS SKIP SECTOR INWIBIT SET ? 3$ $SSENB(RO) 43 #31.,SECLMT PC :BR IF YES *WAS SKIP SECTORING ENABLED DURING XFER ? :BR IF NO *GET LAST SECTOR *RETURN 2 ENI CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 30 | BN SEQ 0131 :ggg?AruzagggRCONTAINED IN THE REGISTER ARE ONLY THE & LSD'S OF THE sCALL: : : GETID: VO szzssseses — =D ~ o e 'S o S Sayie o " o O~ IR S N&N P Qo Qe Qo gy (=l=lelol = 2222883 on °°§ VN =O Vi S N SRRPERD oW §°°°° SO0000000 8333 SOO o OWVIWN =2\ = N = ) =2V=N OTM 0008 N NN NN NNNSNSN ~ NN N o N = o & MOV JSR #DPB,RO PC,GETID :DP'3 ADDRESS *CALL ROUTINE ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE N O~ :ROUTINE TO GET THE DRIVE (MBA) SFRIAL NUMBER FROM RMSN REGISTER = s NINOND PONINININ) = b d b e ed e b b SWN=O VRNV W= OV~ N GENERAL SUPPORT SUBROUTINES 045062 000004 002170 MOV MOV MOV MOV RO,=(SP) R1.=(SP) R2.=(SP) RS.=(SP) ;:PUSH RO ON STACK $3PUSH R1 ON STACK $5PUSH R2 ON STACK $SPUSH RS ON STACK JSR MOV MOV CLR ROL PC . SVRH70 #6.R ) SRMSN(RO,R1 RS R1 *SAVE ALL REGISTERS *FOUR DIGITS TO STORE +SERIAL NUMBER :ZERO SPUT rng NEXT DIGIT MOV 1$: ROL ROL ROL ROL ROL ROL 000060 002130 ROL RO,R2 RS R1 RS R1 RS R1 ADD #°0,RS INC RO MOVB ggg MoV MoV MOV MOV *GET INDEX TO DPB SINTO R ;MAKE IT ASCII RS.S$DRVSN(RO) :SAVE DRIVE (MBA) SERIAL NUMBER DIGIT R2 *ALL DIGITS ;vpso? == BRANC :NO 1$ (SP)+,RS5 (SP)+,R2 (SP)+,R1 ;%P)*.RO *GET NEXT INDEX FOR DRIVE (MBA) SERIAL NUMBER *:POP STACK INTO RS $3POP STACK INTO R2 $:POP STACK INTO R1 $3POP STACK INTO RO *RETURN CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 31 cn SEQ 0132 READ DEC144 FILE .SBTTL 1 READ DEC144 FILE 54 BAD SECTOR FILE FROM CYLINDER DEC144 THE FILE READ THE mss nounu;1S useoTO T0STORE IN IT'S RESPECTIVE DPB TABLE. 8 :OF THE CURRENT HDA SERIAL NUMBER. TO SAVE THE ENTIRE MFG AND USR PORTIONS :THE DPB TABLE ms ENOUGH ROOM 10F THE DEC144 FILE. (MFG=126. ENTRIES AND USR=126. ENTRIES) EVERY TIME $7HE DRIVE IS ASSIGNNED THE DEC144 m.s xs READ TO DETERMINE THE STATUS B b 7 TO INITIALIZE THE N ORDER rououmc STATEMENTS MUST BE VALID. 6r ous LEAST AT w SECTOR ENTRY TABLE, 13 i b FIRST TIME PROGRAM WAS STARTED }1 :2) . LOCATION "BADBLK' IS EQUAL TC 1 }% 15 16 }z :3) : : LOCATION "BADBLK' IS EQUAL TO O AND THE HDA SERIAL NUMBER CHANGED SINCE THE LAST TIME IT WAS READ. (DEFAULT) : HDA OR DRIVE MAD BEEN REPLACED WHILE THE DRIVE WAS DEASSIGNED. MoV JSR 19 NOTE: IF THE SERIAL NUMBER HAS CHANGED, THIS MOST LIKELY MEANS THAT THE 2 ) 24 sg *THIS ROUTINE CHECKS THAT THE TWO SERIAL NUMBER WORDS ARE NOT ZERO “AND THE ENTIRE SERIAL NUMBER IS POSITIVE. ALSO, WORDS 3 AND & me *CHECKED TO BE ALL ZERO WORDS. IF THE DECi44 FILE DOES NOT COMPLY uxm T%1S STUCTURE, AN ERROR MESSAGE IS TYPED AND THE ROUTINE IS EXITED. 27 feALL §1 ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE %g : : 28 233 35 027650 027650 027652 027656 027656 34 35 027 027 0 027 0 GETADR: 010146 010246 010346 004737 010001 062701 010146 027462 000146 111037 067556 067570 001056 o1§7§7 113737 001426 067567 33 7; 067574 1 171539 ooog% 867566 } Sg; 001 67566 28: ::PUSH R1 ON STACK ..PUSH R2 ON STACK PUSH R3 ON STACK ADDRESS LIMITS ber :DPB ADDRESS OF BAD SECTOR TABLE ADDRESS PUSH R1 on STACK R1,-(SP) §‘=(SP) R3.=(SF) GETLMT PC R1 R1 néossc n -(SP) MOVB MOV ginbmssec secronWORD OF 16COUNT BIT MFG FILE .oue SECTOR #-256. ,GENDPB+$W er swmuc MOV MOVB 012737 000010 001270 1$: 012703 101174 B 004027 041000 2 0675 oogn :DP8 ADDRESS *READ DEC144 BAD SECTOR FILES MOV MOV MOV JSR MOV AND MOV MOVB 1 7;7 1°994n88 8275756 012737 112737 000171 06756 #DPB,RO RS,GETADR PRIV g,GEND CYLINDER usr LAST f. Genomsgv os TRACK GENDPB+ST MOVB MOV MOV JSR GENDPB B8R ST READ DATA COMMAND mow s uomscomo *GET LAST SECTOR OF 16 BIT MFG FILE #8. *GET READ BUFFER ADDRESS ocvmoa ns *READ CURRENT SECTOR RO,RM80 ;WAIT FOR QUE 1$ ENDPB+STATUS :READ oons YET 2 gm‘g scbu ceuopeosset gSf ADD F NO ERROR, ELSE '% f s uext *SECTOR TO READ 02 GENDPB+SSEC : INCREMENT " Nbue € ALL SECTORS TRIED ? CZRNAAO RMB0 PER F EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 31-1 oN SEQ 0133 READ DEC144 FILE 55 0 59 0 2 3 1 ooga 88 7% 57 38: 58 030012 10046 §9 030014 001 60 3 13 885 g 177774 1% g éi 6§ 030024 oos7§ 001054 63 030026 5723 64 0300 105; 65 o% 067566 123727 69 0 67 030042 103021 68 030044 8857 7 001510 001010 69 030050 70 030052 026360 177770 001004 710 026360 177772 7-;‘ 0 001464 73 030070 74 030072 016360 177770 ;z 030100 016360 177772 77 030106 012702 000176 78 030112 012321 79 030114 012321 80 030116 005302 81 030120 001374 82 030122 123727 067566 83 030130 103044 84 030132 112737 000012 85 030140 012737 000036 86 030146 011601 87 030150 005721 88 030152 100376 89 030154 005741 3? 030156 000671 92 030160 104401 076442 93 030164 9% 030196 95 030172 96 030176 030 030 g 000402 104401 076362 104401 075304 ono:.g 10440 % 97 030204 104401 ogg 60 1 109 030242 005726 107 030244 030244 012603 000012 000142 000144 000142 SS: 000144 68: 78: 000012 067566 001270 8s: 9s: 108: 11$: 177777 BMI BNE ST BEQ ST BNE ST BNE C(MPB BHIS ST BNE CMP BNE CMP BEQ MOV MOV MOV MOV MOV DEC BNE CMPB BHIS MOVB MOV MOV ST B8PL ST BR TYPE BR TYPE TYPE MOV TYPOS .BYTE .BYTE TYPE 001203 98 osoz1g 81 601 012702 ogg 74 99 030212 100 030 13 81 721 177777 1;7 1 177777 101 830 2 1o§ 30226 1;7 10 osos %8'5 3333 z 48: ST ST 128: 13$ 148 :BR [F UNSUCCESSFUL ON RETRIES SDON'T CHECK LSB'S OF SERIAL NUMBER SARE MSB'S OF SERIAL NUMBER VALID ? :BR IF MINUS (CORRUPT) 9 *BR IF NOT ZERO (PLUS) 48 *ARE SERIAL NUMBERS ZERO ? <4 (R3) :BR 5' YES (CORRUPT) 9s 3RD WORD ALL 0°'S ? *IS (R3)+ :BR IF NO (CORRUPT) 9 *IS 4TH WORD ALL 0°'S ? (R3)+ :BR IF NO (CORRUPT) 98 READING USR BAD FILE ? GENDPB+$SEC,#10. YES IF :BR 68 $INIT. BAD SECTOR TABLE ENTRIES ? BADBLK *BR IF YES 5% ARE LSB'S OF S/N SAME AS BEFORE ? =10(R3) , $HSNL (RO} :BR IF NO 5% ARE MSB'S OF S/N SAME AS BEFORE ? ~6(R3) , SHSNM(RO) :BR IF YES 13 :STORE HDA SERIAL NUMBER =10(R3) , SHSNL (RO} -6(R3) , $HSNM(RO) :NUMBER OF ENTRIES PER FILE (MFG/USR) #126. ,R2 *STORE BAD CYLINDER ADDRESS (R3)+,(R1)+ *STORE BAD TRK/SEC ADDRESS (R3)+,(R1)+ *DONE WITH ENTRIES ? R2 *BR IF NO 78 :USR BAD FILE DONE YET ? GENDPB+$SEC,#10. :BR IF YES 138 GET STARTING SECTOR OF USR FILE #10.,GENDPB+$SEC :GET LAST SECTOR OF USR FILE #30. .$CDW2 *GET BEGINNING OF $BDSEC TABLE (SP) .R1 *IS THIS TERMINATOR ? (R1)+ :BR IF NO 8s *FOUND TERMINATOR, BACKUP 1 WORD -(R1) 1$ :REPORT, INVALID DEC144 FILE STRUCTURE MERR2 f1s ,MERR1 .UNTMSG (RO) ,=(SP) 3 ,SCRLF :REPORT, FAILED TO RETRIEVE DEC144 FILES STYPE 'ON DRIVE® ::SAVE (RO) FOR TYPEQUT 2360 TYPE=-=OCTAL ASCII SSTYPE 2 DIGIT(S) : SSUPPRESS LEADING ZEROS :CR-LF $:POP STACK INTO R1 *TOTAL NUMBER OF ENTRIES ALLOWED SINITIALIZE CYLINDER LOCATIONS TO =1 SINITIALIZE TRK/SEC LOCATIONS TO =1 *DONE YET ? :BR IF NO MOV MOV MOV MOV DEC BNE (sP)+,R1 #252. .R2 #-1,(R1)+ #-1.(R1)+ R 128 ST (SP)+ ;RESTORE STACK MOV (SP)+,R3 ::POP STACK INTO R3 l’mgv 000144 108 (R3)+ (R3)+ m JSHSNM(RO) :INDICATE SERIAL NUMBER IS UNKNOWN F EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 31-2 01260 1260 205 MOV MOV RTS (SP)+,R (gp)o.a R EN SEQ 0134 ::POP STACK INTO R2 ::POP STACK INTO R1 SEXIT CZRNAAD RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 32 F1 SEQ 0135 ENTER BAD SECTOR ROUTINE 1 .SBTTL ENTER BAD SECTOR ROUTINE : : MOV JSR g no\L:Ixus TO ENTER BAD SECTOR INFORMATION MANUALLY g ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 10 030254 MANTER: 5 9 030254 010146 ogg 56 010246 030260 010346 030262 010“9 105737 001150 11 030 oong; oggz 1; 001442 13 030272 005737 1% 030%3 001157 005037 001340 15 ogg }9 030304 104401 076302 18 030310 012704 000146 19 030314 701 000374 81022714 go1 03031 177777 030322 z§ ososgs 001407 062704 000004 030330 005301 % 030336 001371 S 030336 30340 104401 076506 5 2; 030344 010146 gz 030 03035 810“6 15m 1727777 1 03035 030356 012764 177777 000002 030 030370 S 0303 030374 osol.og 03040 0304 %0 030410 41 030414 4.; °§3‘4'S 430 4 °§3‘4 6 29 4‘3 83& ‘s 83044 4 50 0 42 1064401 104411 015921 7 1011 105731 19 1 122711 1919 37 753 01 28: 38: 48: 076544 001340 000001 000114 030650 }12724}. 172777 177777 58: 6$ 1 001372 104401 51 030450 000713 §§ 030452 18: R1,=(SP) ;T=(SP) R3.-(SP) R&.=(SP) SAUTOB 19 DRVPAR 19 CFLAG ,ENTADR #$BDSEC R4 RO.R% R1 «126.-z> #-1, (R4) 3s #4,R6 R1 2 MSFULL i9s R1,=(SP) Ré.=(SP) #-1,(R&) #-1.2(R&) ::PUSH R1 ON STACK ::PUSH R2 ON STACK $:PUSH R3 ON STACK ::PUSH R4 ON STACK humms IN AUTO MODE ? *BRANCH IF SO cumce DRIVE PARAMETERS ? IF NO :BR *CLEAR THE CONTROL-C FLAG *MESSAGE TO ENTER... :INDEX VALUE OF TABLE ADDRESS STABLE STARTING ADDRESS ALLOWED SECTORS BAD TOTAL :256. SENTRY IN THE TABLE? *BRANCH IF SO *ADJUST THE TABLE ENTRY POINTER *DECREMENT THE BAD SECTOR COUNT :BR IF TO NEXT ENTRIES POSITION STYPE 'BAD SECTOR TABLE IS FULL® SEXIT.. :SAVE THE COUNTER AND FIRST *ENTRY POINTER mn *RESET CYLINDER TO =1 *RESET mcx/secroa FIELD TO -1 %5 MOV ;s';)ffim #-1.(R&)+ 355#‘1’55 't'fsfg" 270=1 TYPE IN RDL MOV ST BNE 1ST8 BNE CMP8 BNE JSR B8R MOV DEC TYPE 78: :DPB ADDRESS *CALL ROUTINE MOV MOV MOV MOV TSTB BNE ST BNE CLR TYPE MOV ADD MOV CMP BEQ ADD DEC BNE TYPE BR MOV MOV MOV MOV BNE 077262 #DP8,RO PC,MANTER BR ,MSGCTS (SP)+,R1 gru\e s 1(R1) 73 #°'L.(R1) 78 Pg.nust 4 (SP)+,Ré4 R1 6$ ALOST is STYPE °*CYL,TRK,SEC = *READ THE maéss *READ IN TEXT ADDRESS coumu-c ENTERED? *BRANCH IF YES *WAS IT TERMINATED WITH CARRIAGE RETURN ? *BR IF NO *WAS cumctea AN ‘L' ? *BR IF NO STYPE BAD SECTOR LIST FOR USER :RETRIEVE THE ENTRY POINTER *ALL DONE ? :BRANCHW IF NOT STYPE* * ALL CURRENT ENTRIES LOST ** *ENTER AGAIN FROM THE FIRST POINTER 4 CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 32-1 6N SEQ 0136 i ENTER BAD SECTOR ROUTINE o A A RS~ ERRSIH SRS RRERRNS ¥ 258 OO0 0O00O000O0 MOV 14 %g 188 178 5 ; 82;S 3 030624 & 3 503 03050 010214 8s: 000444 010214 52 98: 108: 10214 550 030542 110264 000003 11$: 000003 128: 110264 000003 13: o1370; 001424 000424 110264 000431 oggzs 03063 03063 030624 030606 030624 030600 110264 000412 110264 000002 4$: 000002 158: 168: oozrgl. 000004 000653 104401 076341 go 06 000004 MOV R2, (R&) BR MOV BR 138 12$ MOVB B8R MOVB B8R MOVB MOV 033072 005303 001406 R2, (R&) JSR 188 1% 11$ 033072 004537 030632 030634 8 s§4 }3{: 604 15603 1260 207 .SBTTL TRKLMT ,R cx.6xs RS, R2,3(R4) 16§ R2,3(Ré&) 18§ R2,3(Ré&) SECLMT,R2 R2,2(Ré&) DEC BEQ R3 188 R2,2(Ré&) 18$ PERIOD ONLY ENTERED STERMINATED WITH A *.** 'TRACK ADDRESS sTRACK NUMBER FOLLOWED BY (R :TRACK ADDRESS ;EXIT, TRACK NUMBER FOLLOWED BY °.° :TRACK ADDRESS FOLLOWED BY °,° sUPPER LIMIT OF INPUT sCHECK THE DIGIT(S) ;CARRIAGE RETURN ONLY ENTERED :PERIOD ONLY ENTERED s ILLEGAL INPUT TERHINATED Ul;fl :CARRIAGE RETURN SSECTOR ADDRESS SEXIT,SECTOR ADDRESS FOLLOWED BY *.* *SECTOR ADDRES sMORE ENTRYS ? ADD #6 R4 BR TYPE tQAD MoV (SP)+,Ré& MOV RTS (SP)+.R PC ADD sUPPER LIMIT OF INPUT ;CHECK THE DIGIT(S) :CARRIAGE RETURN ONLY ENTERED LLEGAL INPUT MOVB B8R CVLI'OER ADDRESS ;FINISH WITH THE CURRENT ADDRESS ;CYLINDER ADDRESS :EXIT,PERIOD ENTERED ;CYLINDER ADDRESS FOLLOWED BY °,* TERHINATED WITH A CARRIAGE RETURN sTERMINATED WITH A ° RS.CK.DIG MOV MOV 1560 16§ R2, (R4) 18§ JSR 188 188 17% 153% 17¢ 148 MOVB BR 178: CYLIMT,R2 RS,CK.DIG 8s 108 13 MOV MOV 01370; oo14;6 gEgussay [e]=]lelelelelelel] o0 © O0O0O000O0O0O0O0O000 2 Ny S SBBIFRR te 13 ‘s ENT #6,SP (SP)+.R (SP)+.R TYPE BAD SECTOR LIST ;BRANCH IF EXHAUSTED :ADJUST FOR THE NEXT TABLE ENTRY :ENTER NEXT SECTOR ADDRESS ENTRY MESSAGE BAD ENTER SECTOR_ADDRESS AGAIN ;CLEAR OFF THE STACK POINT ::POP STACK INTO R4 $:POP STACK INTO R ::POP STACK INTO R :POP STACK INTO R SEXIT CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 32-2 M SEQ 0137 TYPE BAD SECTOR LIST 5 aounue 70 LIST BAD SECTORS ON THE TERMINAL IN DECIMAL NUMBERS 8 SCALL: 31 ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE *FORMAT 1S: CYL,TRK,SEC 9§ 030650 osoesg 010146 94 030652 104401 95 og&(s’g 012701 oo%om 9% 0 97 030664 010146 022711 osoe;g gow.l. 98 99 0306 100 030674 1114.9 101 osoag ool.rg 1o§ 030702 004737 005046 103 030 104 030710 105 030714 106 osong 107 0307, 108 030726 109 030732 033230 032264 000003 S 33 so 116116 100407 104401 oo:.rgr 004737 032264 000401 129 031026 1 04401 5037 012601 207 1$: 177777 121 osons 83 737 001340 1731 1 ; 03100 022601 83100:. 1 124 31003 1082 1 9 ogwu 0 1050 15 128 ogw 6 TYLIST: 077216 000146 110 osog: 005726 005046 111 030 11; 030740 mng 000002 113 030744 10040 104401 075276 11% 030746 115 030752 004737 033230 004737 032264 116 030756 000401 117 030762 118 030764 005726 119 oso;gs 104401 001203 oogn 000004 120 030 125 03101 MOV JSR : : 1] g mr 1 1 : gsz $: 48: 58: 68: 78: MOV TYPE MOV ADD MOV CMP BEQ MOV JSR JSR .~ CLR MOVB BM] TYPE JSR JSR B8R ST CLR MOVB TYPE JSR JSR BR ST TYPE ADD ST BEQ CMP BNE TYPE TYPE CLR MOV RTS P8, RO rc mxsr R1,=(SP) ,LSTHDR naossc.m Rl 1 *=(SP) 0-1 (R1) £% (R1) ,=(SP) PC,$582D PC . SUPRSL -($P) 3(R1),(SP) 28 COMMA PC,$582D PC . SUPRSL 3s (SP)+ -(SP) 2(R1),(SP) 113 COMMA PC,$582D PC . SUPRSL 5$ (SP)+ ,SCRLF #4.R1 CFLAG 1$ (SP)+,R1 7% ,NOENTY .SCRLF CFLAG (SP)+,R1 PC :DP8 ADDRESS $CALL ROUTINE :PUSH R1 ON STACK TYPE 'DEC144 AND MANUAL BAD SECTOR LIST® *INDEX VALUE OF TABLE ADDRESS STABLE STARTING ADDRESS SAVE ADDRESS FOR LATER TERMINATOR OR NO ENTRY IN THE TABLE ? *BRANCH IF YES *GET CYLINDER NUMBER :CONVERT NUMBER SLEFT JUSTIFY AND TYPE *CLEAR HI BYTE AND PUSH STACK *GET TRACK NUMBER :BR IF ALL BAD rwe ONVERT NUMBER .LEFt JUS"FY AND TYPE ;RESTORE STACK SCLEAR HI BYTE AND PUSH STACK eer secroa NUMBER IF ALL BAD .r CONVERT NUMBER LEFT JUSTIFY AND TYPE aesme STACK -LF * INCREMENT POINTER *CONTROL=C ENTERED ? *BRANCH IF NO SANY ENTRIES ? *BR IF YES STYPE "NO ENTRIES® $CR-LF CONTROL FLAG um :POP STACK INTO R1 ker -< x pr = TM .SBTTL PARAMETER ENTRY ROUTINE PAMK TER ENTRY ROUTINE #ADR,R3 OMMNN S OOH— WwWNSsW - L =2 ON N —2 = oS = =] -0 &H WA P S hur PR £y 4o ey _Y b °°°°°°8§S oRRg:‘. ddg — 031 031146 0;1150 5 031152 ;GET THE PARAMETERS R3 -(SP) sSAVE THE PARAMETER TABLE ADDRESS (R5) ,=(5P) WENT ALUE OF PARAMETER I’YPE THE CURRENT VALUE OF THE PARAMETER CLEM THE *CONTROL S' FLAG 3s: +SLASH 077572 (SP)+,R1 FLAG 001340 R5.CK.DIG 033072 R;.(RS) 1 5%: 076341 000006 .BADENT 6$: #6.R 1$ RZ (RS) 78: 001340 8s: el g ggl 144 g $Sa8 NSNS <% 5 031120 031122 0; 1 8 0311 = N NN 104 1 1" 1 031114 4 031116 =] i sPARAMETER TABLE ADDRESS PC,PARENT %)0 3 1$: —2 0 PARENT : (=] SEFEFRIEERTFE o -y m D h e D h ok d e WOO%U’W-GOOONOW’W—. SEQ 0138 fil MACRO V04.00 14=JAN-82 15:16:58 PAGE 33 RTS CFLAG (SP) ,R3 1$ (SP)+ PC READ T ;wut Ascx; smns ADDRESS CONTROL " :BR IF IT WAS ENTERE sCHECK THE DIGIT(S) ;CARRIAGE RETURN ONLY ENTERED :PERIOD ONLY ENTERED s ILLEGAL INPUT TEMIMTED Ul;" :CARRIAGE RETURN TEMIMTED WITH A *"." :MOVE NEW VALUE TO PARAMETER LOCATION .GET Hfi; PARAMETERS : 'BAD ENTRY' :DECREMENT THE TABLE POINTER :TRY AGAIN :NEW_VALUE SEXIT :CLEAR THE °*CONTROL C' FLAG ?SIngATHE PARAMETER TABLE ADDRESS con{t’s'c‘r THE STACK POINTER SEQ 0139 PARAMETER ENTRY ROUTINE 1 :"PEOUT ASSIGN/DEASSIGN ERROR MESSAGE 5 : ; : ;4 ?021154. 104401 001 932 g 031130 104401 031174 00 o§1194. 104401 10 031170 010446 ogmz 10440 031175 grs }‘ 031202 RETURN ASNERR: TYPE TYPE TYPE MOV TYPOS .BYTE .BYTE TYPE 11 031176 104401 1§ 031200 MOV JSR ASNMSG: .WORD RTS 000207 NMSG ;ERROR MESSAGE ADDRESS #MESADR,AS PC,ASNERR ,SCRLF :CR=LF s SSTYPE 2 DIGIT(S) 3N ,QUES *TYPE °*DRIVE® ::SAVE R4 FOR TYPEOUT :3TYPE DRIVE NUMBER $360 TYPE-=OCTAL ASCII UNTMSG R&,=(SP) :sSUPPRESS LEADING ZEROS *TYPE SPECIFIC MESSAGE *MESSAGE ADDRESS 0 PC }g ‘°§‘L‘ES‘°‘ DRIVE IF A FATAL ERROR OCCURS 17 B ; RETURN JSR PC,DROP 30 031 1 031 DROP: CLR MOVEB R4 (RO).R& }3 zg 031210 23 031216 24 031226 25 031253 031232 ogc 146437 040300 00154 146437 040300 03201 006304 001544 01 BICB BICB ASL MOV :REMOVE DRIVE FROM ASSIGNED LIST ATABIT(R4),ASNLST *DELETE DRIVE FROM AUTO ASSIGN LIST ATABIT(R&).AUTLST :MAKE DRIVE NUMBER INTO A TABLE INDEX Ré :PUT DRIVE IN DROP LIST RO.DDRVS(R4) 075 TYPE .DR 104401 5 031236 104401 8 031542 g 031246 031252 31 031254 031256 031%60 31261 031262 :CLEAR R4 FOR DRIVE NUMBER “MOVE DRIVE NUMBER TO R4 104401 TYPE om;os TYPE 07575 TYPE ASR MOV TYPOS 104401 075304 806206 010446 104403 002 oog 00020 18: ,SCRLF ,MSGON UNTMSG Ré Ré,=(SP) .BYTE 5 RTS PC .BYTE . sTYPE "FATAL OR EXCESSIVE ERRORS' STYPE *ON' *TYPE 'DRIVE' :DRIVE NUMBER ::SAVE Ré FOR TYPEOUT ::TYPE DRIVE NUMBER $360 TYPE=-=OCTAL ASCII SSTYPE 2 DIGIT(S) : SSUPPRESS LEADING ZEROS :ROUTINE TO DEASSIGN DRIVE I* ER®ZRS BECOMES EXCESSIVE 031 031272 031274 39 031302 032777 000020 147662 ABNRML: BIT BNE 001006 CMP ogmo 001456 000072 BHI 10100 JMP 000137 031204 RTS 18: 000207 :3EE IF SWITCH & SET #SW04 ,aSWR :BP If IT'S SET 18 :CHECK TOTAL ERROR VALUE MAXER, $TOTAL (R0) :BR IF ERRORS DO NOT EXCEED MAX 1$ *DEASSING THE DRIVE DROP *RETURN PC sROUTINE TO CHECK FOR END OF PASS AND END OF TEST -4 Jn CZRNAAOQ RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 34 CZRNAAO RM80 PERF EXER MACRO Vv04.00 14-JAN-82 15:16:58 PAGE 35 K1 SEQ 0140 END OF PASS ROUTINE .SBTTL 1 END OF PASS ROUTINE t.ttttl*tttttttttltttt'.ttttfi.t.'..tttt*‘tt'fit.tttt..tttt...t't 'INCREHENT THE PASS NUMBER (SPASS) ;«IF THERES A MONITOR GO 10 IT ;#IF THERE ISN'T JUMP TO RTURN 005737 001500 03131% 031316 00141 $EOP: 031342 000207 18: 031344 026037 000044 03131 026037 000040 001450 1320 031326 101020 03404 0313 031332 026037 000036 001446 031340 103013 001454 031352 101 1034 031356 000042 001452 026037 031356 31364 103001 031366 000207 031370 31372 010446 032777 EOP1: 1$: 000400 031400 001023 031402 104401 001203 031406 104401 075734 147554 EOP2: 031444 104401 001203 031452 105737 001150 031450 111004 031456 oomg 031476 000443 031520 031524 104401 104401 DETERMINED BY SEEKS OR DATA WORDS ? PASS OF :END *BR y SEEKS semnmo).euocom :CHECK MSW OF WORDS DATA COUNT F MSW GREATER THAN LIMIT EOP2 aa xr MSW LESS THAN LIMIT 18 CHECK LSW AGAINST LIMIT SENDAT (RO) , Euocou F EQUAL OR GREATER EOP2 BHI BLO CMP CMP :BRIF MSW GREATER THAN LIMIT EOP2 SEXn IF MSW LESS THAN LIMIT 18 :CHECK LSW OF SEEK COUNT SENDSK (RO) , suossx RTS PC MOV BIT R4 ,=(SP) #SW08,aSWR RTS BHIS PC :CHECK MSW OF SEEK COUNT SENDSK+2(RO), enosex+2 F EQUAL OR GREATER EOP2 18 scm.r :SAVE Ré :INHIBIT END OF PASS TYPEOUT ? :BR IF YES :CR=-LF *END OF PASS FOR THE DRIVE VE SPASSC(RO) FOR TYPEOUT MOV ipAssc(nm -(sP)’ : GO rvpé--osclm. ASCII WITH SIGN TYPDS (RO),DRVNO srone THE DRIVE NUMBER MOVB TYPE TYPE v 031424 104401 075753 104401 075304 031430 031434 013746 001324 031440 104403 002 03144 000 ENDING EOP1 CMP BHI BLO CMP BHIS BNE TYFE TYPE 016046 000104 031412 104405 031416 111037 001324 31420 03144 ST BEQ TYPOS .BYTE .BYTE 18: MSGON ,UNTMSG DRVNO, = (SP) YPE "*ON' 'onxvs :SAVE DRVNO FOR TYPEOUT $160 rvpe--ocm. ASCII ;3 TYPE 2 DIGIT(S) : ; SUPPRESS mes ZEROS -LF TYPE ,SCRLF (RO).R& nove DRIVE NUMBER TST8 $AUTOB :RUNNING IN AUTO MODE ? MOVB EQ 2 “BR IF NO v-gs DRIVE ALREADY ASSIGNED TO AUTO LIST ? :ADD DRIVE TO AUTO ASSIGN LIST 83}222 53%;1 040300 032012 031470 156437 040300 032012 sxgs BISB gmm«).mnsi ATABIT(R4),AUTLST 031500 026037 000104 001470 28: 31506 10343 031510 032777 000020 147436 031516 00103 CMP BLO BIT BNE see IF AT END OF TEST ASSC(RO) PASSES :BR IF *TYPE END or TEST MESSAGE ? csuol. aswr *BR IF NO 33 TYPE MOV TYPOS UNTMSG 104401 031530 oung 031534 031540 10440 0757 075776 075304 001324 TYPE TYPE 3s LENDTST 'nscron 6av~o.-<sn rwz 'euo OF TEST® *TYPE 'FOR’ ° ::6G0 TYPE-=OCTAL **'DRIVE TYPEQUT DRVNO FOR ASCII *:SAVE (94 T CZRNAAO RM8O PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 35-1 n END OF PASS ROUTINE 0 154; 00 031544 031552 031556 31560 031564 031566 03157 031576 031 146437 006304 01 105737 001041 005237 005;37 042737 000431 03 032777 03154 031614 031616 031622 031624 031626 031632 031636 031640 031642 031644 031646 031652 001002 004737 010346 010004 062704 012703 005024 005303 001375 012603 005260 105737 .BYTE .BYTE 040300 001542 001544 001562 001216 001214 100000 001214 000400 147340 023714 3$: 48: 000036 000006 5%: 000104 001150 031656 001404 031672 000207 031674 005237 032012 031720 031726 031730 042737 005327 000001 100000 68: 031660 023737 001542 032012 031666 001402 78: 031670 012604 031700 001375 031702 012737 000000 177776 031710 005237 001216 031714 005237 001214 031732 003013 031736 012737 031736 oooog1 031740 031730 031754 031756 031760 031762 031762 000240 000240 000240 000137 031742 031746 031750 031752 031764 013700 001405 000005 004710 031766 001214 8s: § 031766 012706 001100 5 ..me 2 DIGIT(S) ASNLST ? *ALL DRIVES ARE DEASSIGNED wasss LEADING ZEROS BICB ASL MOV TSTB BNE INC INC BIC B8R ELETE DRIVE FROM ASSIGNED LIST ArAenmu.AsuLs'f INDEX TABLE INTO NUMBER ive R4 LIST DROP INTO PUT BLOCK ADDRESS RO,DDRVS (R&) sosvcr 78 $PA moooo.mss 78 *BR IF NO * INCREMENT DEVICE COUNT *INCREMENT THE PASS COUNT *AVOID NEGATIVE NUMBER BIT BNE JSR MOV MOV ADD MOV CLR DEC BNE MOV INC #5408, aSWR 4$ PC, SUMARY R3.=(SP) RO.R4 #SENDAT R4 #6.R3 (R4)+ R3 58 (SP)+,R3 $PASSC (RO) :INHIBIT END OF PASS TYPEOUT ? TSTB $AUTOB :RUNNING IN AUTO MODE ? CMP BEQ MOV ASNLST,AUTLST 13 (SP)+,Ré4 :HAVE ALL DRIVES COMPLETED PASS IN AUTO MOCE ? :BR IF YES *RESTORE Ré INC AUTLST :CLEAR AUTO ASSIGN LIST FOR NEXT PASS AND #100000,8PASS (PC)+ 1 ::DON'T ALLOW A NEG. NUMBER +:LOOP? BEQ RTS 78 PC *BR IF YES STYPE THE DRIVE'S STATISTICS SUMMARY :SAVE R3 *DRIVE'S BLOCK ADDRESS *ADD THE STARTING ADDR OF sscnons TO CLEAR *NUMBER OF LOCNS TO BE CLEAR *(CLEAR SENDAT, SENDSK AND sopsac COUNTERS) *CLEAR THE LOCN *DECREMENT THE LOCATION COUNTER *BR IF MORE TO GO *RESTORE R3 *INCREMENT THE PASS COUNT *BR IF NO *RETURN BNE MOV INC INC 8s #PRO,PS SDEVCT $PASS BGT MOV $DOAGN (PC)+,a(PC)+ ;:YES ;;RESTORE COUNTER ane2,RO $DOAGN PC, (RO) ::GET MONITOR ADDRESS *:BRANCH IF NO MONITOR ..cma THE WORLD TO MONITOR a(PC)+ : :RETURN #STACK, SP :RESTORE STACK BIC DEC $EOPCT: .WORD $ENDCT: .WORD 000042 SEQ 0141 $EOPCT $GET42: MOV BEQ RESET SENDAD: JSR NOP NOP NOP $DOAGN: JMP $SRTNAD: .WORD RTURN: MOV 1 RTURN *WAIT FOR TTY *ALLOW INTERRUPTS * INCREMENT DEVICE COUNT ..mcnsnem THE PASS NUMBER :.SAVE ROOM *FOR ::Acm CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 35-2 mn SEQ 0142 END OF PASS ROUTINE & 031772 005237 001212 5 0%177;223526 023422 g 032006 000137 006240 6 032002 9 032012 000000 INC JSR JSR JMP AUTLST: .WORD $TESTN PC,STKINT PC,CKCLK MAIN s INCREMENT THE TEST NUMBER IN THE MAIL BOX O sAUTO ASSIGN LIST (USED IN AUTO RUN MODE) :MAKE SURE KEYBOARD INTERRUPT AND :SYSTEM CLOCK ARE STILL ON. :RETURN TO LOOP CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 36 N1 SEQ 0143 END OF PASS ROUTINE 1 ?2{’{’"5 TO GET THE REMAINDER OF THE RANDOM NUMBER 4 5 : : 8 032014 013746 037154. GETREM: MOV % }’s’ 032036 RETURN : (7» 9 032020 10 032024 11 032026 1§ 032032 13 032034 MOV JSR 013746 037122 010546 004737 032040 012605 005726 SLONUM,-(SP) sumun -(SP) 5,=(SP) PC "$DIV (SP)+,RS (sP)+’ MOV MOV JSR MOV ST PC RTS 000207 NUMBER , RS PC,GETREM :DIVISOR INTO RS ;REMAINDER IS IN RS :STORE RANDOM NUMBER ON THE STACK FOR DIVIDE :UPPER PART *PUT THE DIVISOR ONTO me STACK *DIVIDE THE RANDOM NUMBERS *PUT THE REMAINDER INTO RS *ADJUST THE STACK POINTER INTEGER DIVIDE ROUTINE }(7» .SBTTL 18 tttttttttttttttttttttt'tttttttttltttttttttitttttt'ttttfit.tttttt 20 21 22 %z S%THIS ROUTINE WILL DIVIDE A 32-BIT TWO'S COMPLEMENT INTEGER :*DIVIDEND BY A 16-BIT TWO'S COMPLEMENT INTEGER DIVISOR sx ING T«A 16=BIT TWO'S COMPLEMENT INTEGER QUOTIENT ANDA 16-8IT REMAINDER. *«DIVISION WILL BE PERFORMED SO THAT THE nemuoea IS OF THE :ffiff SIGN AS THE DIVIDEND. 26 1T 19 25 27 28 36 215 3%5% Cw 1 MOV JSR LOW DIVIDEND,=(SP) ~ HIGH DIVIDEND,=(SP) DIVISOR,=(SP) PC,SDIV RETURN STACK NO ERROR REMAINDER TOP QUOTIENT +2 ::THE HIGH DIVIDEND MUST BE < 1/2 *:AS LARGE AS THE DIVISOR ::QUOTIENT & REMAINDER ARE ON THE STACK DIVIDE BY ZERO OVERFLOW ALL ONES ALL ZEROS ALL ONES ALL ZEROS T«NOTE: THIS ROUTINE WILL LINK TO THE DIVISION SUBROUTINE ('M.DPID®). 1ou.1§ 016605 000026 005004 81660; 000030 016603 000032 $DIV: 010 (1)?’2.2}6 15321 3%5}32 032104 000207 SAVREG MOV CLR MOV MOV &g %goog JSR 03% 004927 032106 4.9 47 032070 810166 000030 48 032074 MOV i % %0 032042 1 032046 42 032050 43 032056 MOV i : 1T i %3 % 33 gg 39 032040 ie MOV MOV 000032 26(SP) ,RS R4 gwsp).nz 2(sm.n3 C.M.DPID R1.30(SP) R3.32(SP) (SP)+, (SP) 55\51”6 RTS ity ;STORE RO = RS : *DIVISOR *OTHER DIVISOR WORD *UPPER DIVIDEND WORD *LOWER DIVIDEND WORD :CLEAR OTHER DIVIDEND REGISTERS TO THE DIVIDE ROUTINE ;60 REMAINDER ON THESTACK *QUOTIENT ON TH sucx 5532035&'4ug THE STACK é .SBTTL DOUBLE PRECISION DIVISION SUBROUTINE 55 sCALL: gg : JSR PC,M.DPID CZRNAAO RMBO PERF EXER MACRO V04.00El&-JAN-BZ 15:16:58 PAGE 36-1 DOUBLE PRECISION DIVISION SUBROUTIN B 12 SEQ 0144 END = RO-R1-R2-R3 (RO=MSD) OR = R4=R5 (R4=MSD) 58 59 60 21 Py 1= - =4 o N 3S 000040 M.DPID: #40,=(SP) ION = RO=-R1 (RO=MSD) ON = R2=R3 (R2=MSD) sCOUNTER FOR DIVISION CYCLES sHl H ORDE R sHIG ;LOW ORDER DIVISOR TO THE STACK sFORM NEGATIVE :VERSION OF THE DIVISOR 000002 000002 ;PERFORM THE INITIAL SUBTRACTION 000002 sIF CARRY THEN OVERFLOW HAS OCCURRED sTHIS IS A LONGER LASTING CARRY BIT M.DP40: sTEST "'CARRY'' INDICATOR asP 2(SP) ,R1 000002 RO asP 3 3 4(SP) ,R0; <~ 000004 M.DP41: M.DP42: 000006 sIF NO ‘'CARRY’* THEN ADD ELSE SUBTRACT ;CLEAR UP FOR NEXT TIME ;ADD =(DIVISOR) ;SET "'CARRY"’ M.DP42 RS.R1 RO asSP R4 RO asP asP . +h R3 6(SP) niopao R sADD +(DIVISOR) sSET "'CARRY"’ sSET_"'CARRY'’ sTEST _THE UPDATE INDICATOR :1F ZERO FORGET IT sNO CARRY POSSIBLE HERE sDECREMENT COUNTER sBRANCH IF MORE TO DO M.DP44 R5.R1 RO R4 RO el wno NNV A4 = o RS O~ 282 =3 ) e bb b =B —h — NONON NN NN R RERNSRASSEn 32 WA NN NINON OO0OO00O0O0O0O0000O RN 233RIRGRER288 e R s B e e B G P SSS 3882822228 oon vy SR eesoeFANCNN ' AR IOSss38%sggssssssss 28322355008 382 3 SoRRy SREINVEK=88 R SreSs S>82R8 REMAINDER AFTER DI QUOTIENT AFTER DIV v i=lelelelelele] WWN NN W NN RS YAV NIN YISB 2SS & 64 000010 000006 M.DP44: M.DP50: R3 #10,SP PC #6,SP PC sADJUST STACK BY 4 WORDS ¢ 12 CZRNAAO RMBO PERF _EXER MACRO V04.00 14-JAN-82 15:1g:58 PAGE 37 SEQ 0145 SUPRS = TYPE ASCIZ, REPLACE LEADING 0°'S WITH BLANK .SBTTL % .SBTTL ;23 I I sCALL: : : : OR : 4 S 6 4 2 9 3 }? 1§ 032264 13 032266 1% 032272 }2 032276 010046 016600 005037 000405 17 032300 18 osgsoz 19 03 010046 016600 010037 51 032312 § 032314 5 032316 % 032322 25 032324 26 032330 105710 og1aoe 122710 001006 112720 000770 005300 112710 005737 001 ; 010037 104401 000000 20 03231 27 032332 28 03233¢ 032340 032344 1 03 s~3 032352 032354 34 osgsso 35 032360 36 032362 012600 012616 000004 032354 000004 032354 SUPRS: SUPR1: 000060 000040 032354 SUPRSL =TYPE ASCIZ, LEFT JUSTIFY i i it 2s: 3s: 48: SUPR2: d e ittt tadeddiididddddiidiiiddididsdiidy MOV JSR #NUMADR =(SP) sFIRST ADDRESS OF ASCIZ STRING MOV = (SP) #NUMADR, PC, SUPRSL sFIRST ADDRESS OF ASCIZ STRING RO,=(SP) :SAVE RO :GET POINTER TO MESSAGE JSR SUPRSL: MOV MOV CLR BR 18: 000060 032354 SUPRS = TYPE ASCIZ, REPLACE LEADING 0'S WITH BLANKS PC,SUPRS 4(SP) RO SUPR2 SUPR1 MOV MOV MOV RO,=(SP) 4(SP) RO :SAVE RO :GET POINTER TO MESSAGE :GET POINTER FOR TYPING TSTB BEQ CMPB BNE MOVB BR DEC MOVB ST BNE MOV TYPE .WORD (RO) 2 #°0, (RO) 3s #40,(RO)+ 1$ RO :;Egr FOR TERMINATOR MOV MOV RTS RO, SUPR2 Eg‘g THIS A '0" ? *REPLACE IT WITH A "BLANK'' NEXT CHAR. :BACKUP 1 SUPR2 :MAKE IT '0" SLEFT JUSTIFY ? RO, SUPR2 sYES 0 (SP)+,R0 (SP)+,(SP) ;RESTORE RO #'0,(RO) 43 PC NO sRESTORE STACK Ci PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 38 : : ¥4 D12 SEQ 0146 $SUPRS = TYPE ASCIZ, REPLACE LEADING 0'S WITH BLANKS $SUPRS = TYPE ASCIZ, REPLACE LEADING 0°'S WITH BLANKS $SUPRL = TYPE ASCIZ, LEFT JUSTIFY 1 ; .SBTTL "SBTTL g 3 .'Qtttt..t.ttt"t"tt.t.t'.".tt.Qi.tt'ttt'tt'Qtt.t."ttttt..tttt 9 g STHIS ROUTINE IS SAME AS *SUPRSL® AND °‘SUPRS', EXCEPT THAT IT ‘WILL SUPPRESS THE ERROR TYPEOUT IF SW13=1, THIS ACCOMPLISHED BY ‘c’iff TRAP CALL 'DISPLY', INSTEAD OF ‘TYPE'. 1§ : 10 }1 S g }g ; 19 032364 010046 1 oszseg 01 18 032372 005037 19 032376 oooogl032454 ?1) 032400 01004 0166 8% 211)§ 01003 o:3C2:4.: 24 g‘g 032402 S 032412 26 032414 27 ossng 105710 ogu.os 122710 001006 032430 gg 035434 032440 3% osgw. S 032446 000770 112719 000060 005737 0324564 00100 010037 0324564 37 032452 032454 40 oiia 005300 104414 800209 JSR PC, SSUPRL :FIRST ADDRESS OF ASCIZ STRING :FIRST ADDRESS OF ASCIZ STRING $SUPRL: MOV RO,=(SP) :SAVE RO MOV $SUPRS: MOV S MOV RO,=(SP) 4(SP) RO RO, $SUPR2 *GET POINTER TO MESSAGE 28 SYES MOV MOV CLR BR 1$: 1STB BEQ 2s: 38: 48: 4($P) RO $SUPR2 $SUPR1 (RO) CMP8 #'0, (RO) MOVB #40,(RO)+ BNE 0324.546 112720 000040 1 032432 #NUMADR ,=(SP) PC,$SUPRS #NUMADR,=(SP) 000060 28 032422 MoV JSR B8R DEC' MOVE ST BNE MOV DISPLY $SUPR2: .WORD RTS *GET POINTER TO MESSAGE :SAVE RO *GET POINTER FOR TYPING :TEST FOR TERMINATOR SIS THIS A ‘0" 2 3s *NO 18 #'0,(RO) $SUPR?2 48 RO, $SUPR2 *NEXT CHAR. *BACKUP 1 SMAKE IT 0" SLEFT JUSTIFY ? *NO SYES RO O PC *REPLACE IT WITH A "BLANK'' STYPE, UNLESS SW13=1 y CZRNAAO RMB0 PERF EXER MACRO V04. 00 14=JAN=-82 15:16:58 PAGE 39 E 12 SEQ 0147 SSUPRL = TYPE ASCIZ, LEFT JUSTIFY QRETINE TO REPLACE LEADING ZEROS IN A NUMERIC STRING WITH SPACES g OSSN Sna¥O o = 032592 MOV JSR .WORD MOV JSR . WORD #ADR, =(SP) as REPLZ FILLZ: INC FILLO :LEAVE ZERO'S REPLZ: MOV RO,=(SP) :SAVE RO 18: 000060 000040 28: 000060 000004 38: 48: W OOO0000O R Vi WWWW NININD R2L8 0000 ~ O oK & 032572 :ADDRESS OF NUMBER (IN ASCU) aemce PRECEDING ZEROS WITH BLANKS *"IS NUMBER OF DIGITS TO BE TYPED ;ADDRESS OF NUMBER (IN ASCII) rvpe PRECEDING ZEROS *"IS NUMBER OF DIGITS TO BE TYPED : ; o : : ; 032556 58: 032572 #ADR,=(SP) as FiLLZ 4($P),RO MOV FILLO® ST 3$ BNE CMP8 #'0, (RO) 2 ENE MOVB #40, (RO) RO INC 18 BR (RO) TST8 3s BNE RO DEC #°'0,(RO) MOVE 4(SP) RO MOV (RO)+ TSTB 4 BNE RO DEC (RS)+,R0 SUB RO,5$ MOV TYPE .WORD (SP)+,RO MOV (SP)+. (SP) MOV FILLO® CLR RTS FILLO: .WORD O :ADDRESS OF NUMBER *BR IFYES *BYTE EQUAL TO ASCII *0° ? aa IF NOT *REPLACE THE ZERO WITH A SPACE : INCREMENT THE avre ADDRESS :G0 BACK AND LOOK FOR MORE LEADING ZEROS “SEE IF Z2ERO BYTE TERMINATOR IF NOT *BR *BACKUP STRING POINTER *PUT A ZERO BACK IN *PUT ADDRESS OF FIRST CHARACTER ON STACK *SEE xr ZERO BYTE TERMINATOR IF NOT *BR *BACKUP STRING POINTER *ADJUST ADDRESS *GET ADDRESS FOR TYPEOUT STYPE THE NUMBER *ADDRESS OF POP STACK INTO RO *RESTORE STACK *RESET FILL FLAG *LEAVE PRECEDING zsnos 3 *RETURN :IF SET, LEAVE PRECEDING ZEROS FOR TYPE :ROUTINE TO TYPE AT PRIORITY & 177776 200 030618 035550 177776 TYPRI&: MOV 1$: a#PS,-(SP) - :SAVE THE PRESENT STATUS 0 *MESSAGE ADDRESS GOES HERE MOV MOV JSR #200.34PS (R5)+,1$ PC,STYPE RTS RS LWORD *CHANGE THE PRIORITY TO & *MESSAGE ADDRESS STYPE THE MESSAGE *RETURN nguLnne TO TYPE THE DRIVE (MBA) SERIAL NUMBER IN DECIMAL : E : : MOV o JSR MoV JSR #DP8,RO PC,TYDRV #DP8,RO PC,TYPDRV ;ADDRESS OF DRIVE PARAMETER BLOCK *CALL ROUTINE :ADDRESS OF DRIVE PARAMETER BLOCK *CALL ROUTINE(WITH NO HEADER MESSAGE) C. CZRNAAO RMBO PERF EXER MACRO V06 00 14=JAN-82 15:16:58 PAGE 39-1 F 12 SEQ 0148 SSUPRL = TYPE ASCIZ, LEFT JUSTIFY %e 3%g %] N W OCOCOO00O JHUNONIITEIESRER2E S ;RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 644 2650 032642 TYPE TYDRYV: V: TYPDR :RETURN 000207 :ROUTINE T0 TYPE THE HOA SERIAL NUMBER IN DECIMAL : : ) : TYHDA: 077320 000144 JSR MoV JSR SRIRRIR28ERSREREC2ITRINAR 004737 TYPE TYPHDA: gg{ 18: 0001 los 03722 032264 076141 TYPE RTS MOV ADD JSR JSR TYPE RTS ADDRESS OF DRIVE PARAMETER BLOCK #DP8,RO PC, TYHDA #DP8, RO :CALL ROUTI ;ADDRESS OF DRIVE PARAMETER BLOCK sCALL ROUTINE(WITH NO HEADER MESSAGE) PC, TYPHDA sTYPE "HDA S/N:' HDASN ;1S SERIAL NUMBER VALID ? iusmmm noue pC RO,=(SP) SNL , (SP) PC,$DB2D PC . SUPRSL PERIOD PC :YES TYPE IT, ELSE sRETURN :DPB ADDRESS ;ADDRESS OF LOW NUMBER CWERT TO DOUBLE DECIMAL NUMBER AND TYPE IT LEFT JUSTIFIED TYPE :RETURN' :ROUTINE TO TYPE ERRORS JCALL: : : b D d d =D OO = N : 8‘3,2777 020000 177776 035550 000002 146230 ;ADDRESS OF MESSAGE RETURN $DSPLY: BIT 18: sMUST DEFINED IN 'TRAP® TABLE DISPLY ME SADR BNE CLR JNP ADD RTI #B1T13,3SWR 1$ aPS $TYPE #2,(SP) :THIS ROUTINE IS USED TO sINHIBIT ERROR TYPEOUT ? :BR_IF YES SET PRIORITY TO ZERO TYPE THE MESSAGE INCREKNY THE RETURN sRETURN HECK l b md D d Aifll CHARACTER IS A DIG T BET WEEN 0 AND 7. MoV JSR #ADR,R1 RS,CK.OCT CK.OCT: CMP8 BLO (NP8 (R1).4'0 1$ (R1) .47 ; : : : b SWNN=O MOV ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE b g e 121127 000067 N RORS ~ vv W [=1=1=] d md b e b o e — ;ADDRESS OF DPB :INDEX_TO DRIVE (MBA) SERIAL MER ;TYPE THE DRIVE (MBA) SERIAL NUMBE ?D%:ESS OF DRIVE (MBA) SERIAL MER FIELD 18: 10“ 076141 076334 b ;TYPE DRV S/N:' DRVSN RO,1$ #SDRVSN, 18 000060 RE TURN1 RE TURN2 :ADDRESS OF ASCII CHARACTER : CHE CHARACTE R TWEEN 0-7 CHMACTER lS IN R2 AS A 0CTAL DIGIT sLESS THAN ZERO? :YES == BRANCH ;GREATER THAN SEVEN? g g ) g§ RMS0 PERF EXER MACRO v04. oo 14~JAN=-82 15:16:58 PAGE 39-2 101 032756 1111 760 1727770 g 7 7 7 205 032770 18: ugwu BHI MOVB BIC ST RTS 18 um.ns rgr.a (RS)+ RS SEQ 0149 :YES == BRANCH *GET THE CHARACTER *STRIP AWAY THE ASCII :ADJUST FOR RETURN *RETURN :THIS aounne IS USED TO CHECK AN ASCII CHARACTER .moloersm IF IT 1S A DIGIT BETWEEN O AND 9. :ADDRESS OF ASCII CHARACTER #ADR,R1 MOV : : : ; 0O NO WV - WN = OOV i i b ~NONW « TYPE ASCIZ, LEFT JUSTIF 6 12 ; 032772 032776 03 ogm 0 033010 033014 033016 121127 CK.DEC: CMPB 000060 103407 121127 000071 101004 11110 042702 000060 00572 000205 RS,CK.DEC JSR RE TURN1 RE TURN2 ' 18: B8LO (P8 BHI MOVB BIC ST RTS (R1).#°0 18 (R1).4'9 18 um R2 R2 (nsSo RS SCHECK THE CHARACTER *NOT BETWEEN O AND 9 :BETWEEN 0 AND 9 :R2 = DIGIT .I.ESS THAN 2ERO? YES == BRANCH samen THAN NINE? :YES == BRANCH “GET THE CHARACTER :STRIP AWAY THE ASCII FOR RETURN *ADJUST *RETURN :THIS ROUTINE WILL CHECK AN ASCII CHARACTER TO STEARRRAR LB RIS RRUNZS&»H P oerEmme WHAT IT IS. 033020 105711 033022 001417 : : ; : ; ; ; ; : CK.CHR: TSTB BEQ P8 BEQ (P8 BEQ = P ~N T e L e T B e e R R R 033024 121127 000054 001413 033030 033032 121127 000056 03 33 og 0 osggt.g 1407 JSR B8R JSR 537 032772 19 537 032744 83 52 005725 gsos:. 005725 3 30 5725 g 5725 5725 0 sg 1 033064 11505 03 205 0330 MOV JSR RETURN RETURN RETURN RETURN RETURN RETURN 18: is: $: 48: ST ST ST ST INC MOV RTS ST #ADR,R1 RS,CK.CHR ADR1 ADR ADR ADR% ADRS ADRS (R1) 3s (R1) .4, 2 (R1).4°. 18 ;ADDRESS OF ASCII CHARACTER *CHECK CHARACTER *UNKNOWNCHARACTER cmuss RETURN * (R1)=ADR+1 :COMMA* (R1)=ADR+1 *PERIOD * (nn.mn *DIGIT BETWEEN O AND 7. :DIGIT BETWEEN 8 AND 9. *R2 = DIGIT * (R1)=ADR+1 :*'CARRIAGE aeruau“’ ..ES -~ BRANCH 3CoMA"? :YES pamcn ;" PERI :YES -eamc RS,CK.DEC 4$° RS,CK.OCT SpIGIT :NO == aamcn SOCTAL ? (asn *DIGIT BE (R§)+ (R5)+ (R5)+ (R5)+ R1 (RS) RS RS 3 :DIGIT BE 3—9 :PERIOD + COMMA *CARRIAGE RETURN *MOVE POINTER TO NEXT CHARACTER *UNKNOWN CHARACTER :RETURN sTHIS RWTI'& CHECKS AN ASCII STRING FOR LEGAL AND FORMSA DECIMAL VALUE BINARY NUMBER IN R2. :CHARACTERS M 12 [dn ~ RNAAO RMBO PERF EXER MACRO V04.00 14~JAN=-82 15:16:58 PAGE 39-3 SEQ 0150 SUPRL = TYPE ASCIZ, LEFT JUSTIFY 17; 17 17% 175 176 sCALL: #ADR,R1 MOV : #NUM,R2 MOV : RS sx.oxc JSR : RETURN ADR : :"CRTM ONLY ENTERED == R2=0 179 180 : : RETURN ADR& RETURN ADRS :"CRTM == R2 = NUMBER :*'COMMATM" == R2_= NUMBER 17 178 }31 18 ogson 010446 184 033074 010346 185 osgore 010246 ; ; RETURN ADR RETURN ADR : RETURN ADR6 CK.DIG: MOV 187 033102 188 033106 00500 005004 033126 033126 190 03 1;3 062705 000004 006303 191 033132 19§ 033134 010%6 193 033136 194 033140 195 033142 18: 28: 033160 303 603 033174 005724 201 zog 033176 005724 48: 5$: 033226 (SP)+,R3 R2.R3 RS.CK.CHR 68: 7%: 8s: 9s: 28 TST8 BNE ST ST ST che (R1) 81 (R4)+ (R4)+ (R4)+ R3, (SP) 93 8s ADD MOV ST MOV MOV MOV RTS Ré,RS R3.R2 (SP)+ (SP)+,R3 (SP)+.R& (RS) RS RS ST S*PERIOD'’ == R2 = NUMBER :SAVE Ré *SAVE R3 SSAVE THE MAX. SIZE ON THE STACK _ *START WITH 0 :CHECK ONE CHARACTER :ILLEGAL CHARACTER : CARRIAGE RETURN o " :DIGIT 0-7 :DIGIT 8-9 *STEP RETURN POINTER PAST ‘‘CR'* & ‘PERIOD'* RETURNS :INPUT NUMBER #2 *SAVE *2 iv ;28 :(%2)+(28) = +10 SUPDATE THE INPUT NUMBER :CHECK ONE CHARACTER *ILLEGAL CHARACTER *CARRIAGE RETURN el :DIGIT 8HI BR ST **PERIODTM ONLY ENTERED == R2=0 :ILLEGAL CHARACTER OR INPUT TOO LARGE == R2=? e 3s 38: 11505 205 ASL R3 R3 2 198 03 196 105711 osom 3 101004 0004 ; S 8 57 3 5725 03321 5 3321 33214 lo;oz 5 g 3321 1 33 1 g RS,CK.CHR #4 RS R3 R3,=(SP) $ $ 48 0331 199 033170 ootg.o 200 83?72 005724 R ADD ASL MOV ADD JSR 033212 033176 ogm 033132 18 1$ ADD 033162 03313 033164 R R4 ASL 006303 196 033144 060203 004537 033020 197 033146 033152 033156 03315 CLR CLR 78 033120 ogs 10 033132 os§1 6 R3.=(SP) R2.=(SP) JSR £% 98 8% 189 osgws 004537 033020 033206 033112 osgm 033214 033116 033%06 *CHECK DIGITS R4 ,~(SP) MOV MOV CLR 186 033100 oosoog ;ADDRESS OF ASCIZ STRING *MAX. MAGNITUDE OF INPUT NUMBER (RS)+ (RS)+ :DIGIT 0-7 8-9 *DOES A "'CR'* FOLLOW THE 'PERIOD' *BR IF NOT *INCREMENT THE RETURN *INCREMENT THE RETURN *INCREMENT THE RETURN SCHECK THE MAGNITUDE OF THE NUMBER *BR IF ENTERED NUMBER TOO LARGE *BYPASS INCREMENT *INCREMENT RETURN PAST INVALID RETURN + INCREMENTU&mmPOINTER *SETUP RETURN *ENTERED VALUE SCLEAN MAX, SIZE OFF OF STACK *RESTORE R3S *RESTORE R& *GET RETURN ADDRESS *RETURN ;THIS ROUTINE WILL CONVERT A 16-BIT UNSIGNED BINARY NUMBER TO AN 112 SEQ 0151 $SUPRL = TYPE ASCIZ, LEFT JUSTIFY tcmsxcueo DECIMAL ASCIZ NUMBER. ?; ;NOTE: THE PROGRAM REQUIRES THIS FORM OF ‘'$SB2D°', NOT THE VERSION ON oW ~No 033254 $SB2D: 5¢ 000000 000000 18: MOV MOV MOV RTS . WORD 2(sP),1$ :SAVE THE BINARY NUMBER (sfi)o (SP) :CALL THE DOUBLE LENGTH CONVERT ns-csr) g o0 *SET THE POINTER *PICKUP THE POINTER *RETURN ;THIS ROUTINE WILL CONVERT A 16=-BIT UNSIGNED BINARY NUMBER TO AN l&‘f{fiflfb OCTAL ASCIZ NUMBER. ztcmenéa(sn gg'\; sNOTE: THE PRUGRAM REQUIRES THIS FORM OF °'$SB20°', NOT THE VERSION ON : RE TURN ” 2(sP) .18 248 033304 00 000000 000000 18: *ADDRESS OF THE 1ST ASCIZ CHAR IS ON THE STACK THE SYSMAC LIBRARY, REV C AND LATER MOV 033260 013637 ogggoz 033304 $S820: MOV 243 244 033266 012746 033304 033272 004737 037416 46 033276 012666 000002 033302 000207 .-Purtme NUMBER ON THE STACK : : g :CAL THE SYSMAC LIBRARY, REV C AND LATER JSR 7 25 N ) N &~ — §o§c 31 gggs 4 rur THE NUMBER ON THE STACK ADDRESS OF THE 1ST ASCIZ CHAR IS ON THE STACK I : 2 pc.sseéo-(SP) MOV JSR RETURN 3 co00000 N SNNS = SELE wiFAK S BB NS AR PININI NININININI NN NN 2 19 JSR MOV RTS .WORD ”s -(SP) PC ioaso (sfi» (SP) :SAVE THE BINARY NUMBER SE! THE POINTER :CALL THE DOUBLE LENGTH CONVERT *PICKUP THE POINTER *RETURN @ CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 39-4 J 12 .SBTTL SEQ 0152 TTY INPUT ROUTINE :'tt'tltlt.tit.t.l..t'.'t't"t..l...'....t...tlttl.'.t."....'.'. LENABL LSB $TKCNT: .WORD $TKQIN: .WORD $TKOOUT: .WORD $TKQSRT: .BLKB 033325 :;NUMBER OF ITEMS IN QUEUE O s INPUT POINTER :sOUTPUT POINTER ::TTY KEYBOARD QUEUE :*TK INITIALIZE ROUTINE s*THIS ROUTINE WILL INITIALIZE THE TTY KEYBOARD INPUT QUEUE ;*SETUP THE INTERRUPT VECTOR AND TURN ON THE KEYBOARD INTERRUPT s#CALL: i i & oNrN 033333 033340 JSR RE TURN $TKINT: CLR MOV MOV MOV MOV ST MOV 0 RTS 033374 PC,STKINT STKCNT ::CLEAR COUNT OF ITEMS IN QUEUE asTkB #100,38TKS *:CLEAR DONE FLAG *SENABLE TTY KEYBOARD INTERRUPT #STKQSRT,STKQIN ::MOVE THE STARTING ADDRESS OF THE $TKQIN,.$TKQOUT ::QUEUE INTO THE INPUT & OUTPUT POINTERS. #STKSRV @HTKVEC ::INITIALIZE THE KEYBOARD VECTOR LEVEL & #200,a#TKVEC+2 :: PC $SRETURN TO CALLER ;*TK SERVICE ROUTINE :#THIS ROUTINE WILL SERVICE THE TTY KEYBOARD INTERRUPT :#BY READING THE CHARACTER FROM THE INPUT BUFFER AND PUTTING :+IT IN THE QUEUE. . ) :«IF THE CHARACTER IS A "CONTROL=C'* (*C) STKINT IS CALLED AND 033376 4 1455 60 177600 21 :*UPON RETURN EXIT IS MADE TO THE "'CONTROL=C'* RESTART ADORESS (CTRAP) ::PICKUP THE CHARACTER @$TKB,~-(SP) $TKSRV: MOVB 000003 18: 000176 001176 2$: #°C177,(SP) (sP) ,#$XON 308 (SP)+ S:STRIP THE JUNK 231S IT A RANDOM XON? *SBRANCH IF NO *3CLEAN RANDOM XON OFF STACK (SP) .43 13 :SRETURN ::1S IT A CONTROL C? *:BRANCH IF NO JSR ST PC,STKINT (SP)+ SSINIT THE KEYBOARD :3CLEAN UP STACK TMP (SP) .47 RTI CMP BNE TYPE 034533 033326 000007 BIC CMP BNE ST JMP SCNTLC CTRAP SSTYPE A CONTROL=C (*C) ::CONTROL C RESTART 23IS IT A CONTROL G? CMP BEQ 2% #SWREG, SWR i1 2 :BRANCH IF NO CMP g;.srxcm ::1S THE QUEUE FULL? TYPE .$BELL :sRING THE TTY BELL BNE BNE *51IS SOFT=SWR SELECTED? 2360 TO SWR CHANGE s sBRANCH IF NO CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 40-1 TTY INPUT ROUTINE 03347 ST 5726 0 sos 3304.51 38: 033502 851 7 000023 1021 0 sos 03351 ggso 7 145444 57;9 033514 31$: 145436 0 3513 105777 100375 osgs 033524 117746 145432 04.2719 177600 0335 033534 022627 000021 033540 oo1399 000100 145410 033542 012777 ooooo; 03355 328: 033552 005237 033310 033556 021627 000140 002405 033562 033564 021627 000175 033570 003002 033572 042716 000040 4$: 033576 1312677 177510 033602 oos;sr 033312 023727 033312 033325 033614 001003 033616 012737 033316 033312 033624 58: 000002 ‘BR CMP BNE CLR ST TSTB BPL MOVB BIC CMP BNE MOV RTI INC CMP BLT CMP BGT BIC MOVB INC CMP BNE MOV RTI K 12 (SP)+ 58 (SP) , 423 SEQ 0153 ;;CLEAN CHARACTER OFF OF STACK SEXIT ..xs IT A CWTROL-S? CH IF NO 328 ..DISABLE TTY KEYBOARD INTERRUPTS asTks *CLEAN CHAR OFF STACK (SP)+ ..um FORA CHAR ams $3LOOP UNTIL ITS THERE ..csr THE CHARACTER "9 -(SP) MAKE [T 7-BIT ASCII #°C177,(SP) IT A CONTROL=-Q? .,xs <sm+I 73] *BRANCH IF NO 31s TTY KEYBOARD INTERRUPTS ..aseme #100,387KS RETURN ..coum THIS CHARACTER STKCNT ::IS IT UPPER CASE? (SP) ,#140 ::BRANCH IF YES 4 IT A SPECIAL CHAR? ..xs (SP) ,#175 IF YES *BRANCH 4$ ..ms IT UPPER CASE #40, (SP) (SPJ+,a$TKQIN :;AND PUT IT IN QUEUE *:UPDATE THE POINTER $TKQIN $TKQIN, #$TKQEND ..so OFF THE END? *BRANCH IF NO 5$ THE POINTER ..neser QIN #$TKQSRT,$TK :SRETURN tttttttttttttt.tt.ttttttttttttt.ttlttttttlttttttttttttttttttfitt " *SOFTWARE SWITCH REGISTER CHANGE ROUTINE. **ROUTINE IS ENTERED FROM THE TRAP HANDLER, AND WILL *«SERVICE THE TEST FOR CHANGE IN SOFTWARE SWITCH REGISTER TRAP “«CALL WHEN OPERATING IN TTY INTERRUPT MODE. 033626 022737 000176 001154 $CKSWR: CMP #SWREG, SWR 033636 asrxs 033634 033642 033644 033650 033654 33660 001124 105777 145316 100121 117746 145312 042716 177600 021627 000007 001300 BNE 1ST8 BPL MOVB BIC CMP BNE 158 "9 -(SP) #°C177,(SP) (SP) 47 23 ;1S THE SOFT=SWR SELECTED ..exn IF NOT :IS A CHAR WAITING? .-.-1r NOT, EXIT YES ..me T 7-an ASCII ..1s IT A CONTROL=G? :IF NOT, PUT IT IN THE TTY QUEUE JSAND EXIT ttttttttt’ttttttlttttttttttttttttttttttttttttttttttlttt.t..tttt *CWTROL IS PASSED TO THIS POINT FROM EITHER THE TTY INTERRUPT SERVICE *«ROUTINE OR FROM THE SOFTWARE SWITCH REGISTER TRAP CALL, AS A RESULT OF A ; *CONTROL=G BEING TYPED, AND THE SOF TWARE SWITCH REGISTER BEING SELECTED. 033662 123727 001150 000001 &$: CMPB SAUTOB,# ::ARE WE RUNNING IN AUTO-MODE? ::BRANCH IF YES 2s BEQ 033670 001674 *3CLEAR CONTROL=-G OFF STACK (SP)+ ST 033672 oosrig THE TTY INPUT QUEUE ..n.usu PC,STKINT JSR 033326 033674 004737 TTY KEYBOARD INTERRUPTS *DISABLE astks CLR 033700 005077 145254 MODE INDICATOR INTERRUPT *3SET #1,SINTAG MOVB 001151 0337064 112737 000001 33712 33716 104401 034545 104401 334552 033722 013746 000176 033726 104402 TYPE $GTSWR: MOV TYPE TYPOC ,SCNTLG :;ECHO THE CONTROL=G (*G) SWREG,=(SP) “3SAVE SWREG FOR TYPEOUT $3G0 TYPE-=OCTAL ASCII(ALL DIGITS) .SMSWR *TYPE CURRENT CONTENTS c2 col SEQ 0154 034563 19%: 78: 145214 034540 000006 145074 000001 Ty REERANSRERNS 145052 035762 000060 asTKB,=(SP) s:PICK UP € (SP) 43 9 LSCNTLC ..IS IT A CONTROL=C? sBRANCH IF NOT 78 #4177, (SP) s:1F NOT TRY AGAIN ssMAKE IT 7-BIT ASCII ..YES ECHO CONTROL=C (*C) :CLEAN UP STACK ..REEN@BLE TTY KEYBCARD INTERRUPTS? H_IF NO ::ALLOW TTY KEYBOARD INTERRUPTS s ;CONTROL=C RESTART 8s: JMP 9%: CMP (SP) ,#25 108 ..IS IT A CONTROL=-U? 20$: ADD #6,SP ..IGNORE PREVIOUS INPUT ssLET'S TRY IT AGAIN 108: CMP ) ., M5 (SP 16$ 4(SP) 118 Z(SP).SSUR #6,SP S$CRLF LSCNTLU 19§ ) 000025 ..CLEAR COUNTER THE NEW SWR ..CHAR THERE? #100,38$7KS CTRAP m 145146 ;PROMPT FOR _NEW SWR =(SP) as$TKS ~(SP) $INTAG,#1 £% < 000100 034574 - SMNEW #6,5P 000001 o 034533 000006 001151 e 000003 B et 033756 MovB 8IC L 1 145210 177600 b ek 03374 03375 TYPE CLR CLR 1ST8 BPL $INTAG, 1 58 158: RTI #100,3$TKS PC srvpec ) ggfi#60 (SP) 467 8s 000067 #60,(SP)+ 000060 000002 2(SP) 000002 177776 178: 001202 18%: .DSABL INC BR TYPE BR LSB ) -g(SP).(SP) $QUES 208 sBRANCH IF NOT ..YES ECHO CONTROL-U (*U) ..IS IT A <CR>? ; sBRANCH IF NO ..YES IS IT THE FIRST CHAR? BRANC IF YES -.SAVE NEW SWR sCLEAR UP STACK ..ECHO <CR> AND <LF> ..RE ENABLE TTY KBD INTERRUPTS? sBRANCH IF NOT ..RE-ENABLETTY KBD INTERRUPTS R URN ..BRANCH ;F YES ..STR P=OFF ASCI! ..IS THIS THE FIRST CHAR ; BRANCH IF YES ..NO. SHIFT PRESENT CHAR OVER TO MAKE :: ROOM FOR NEW ONE. i :sSET IN NEW CHAR ..bET THE NEXT ONE 2sTYPE ?2<CR><LF> : :SIMULATE CONTROL-U 13 132223338 2023282222223323 3223333333333 3 23002 2 Rddiitiiitdddd) CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 40-3 12 SE@ 0155 TTY INPUT ROUTINE ::T:{E ROUTINE WILL INPUT A SINGLE CHARACTER FROM THE TTY LJ N :t &~ 034240 034246 034250 034256 2 g 016666 005046 012746 000002 000004 000004 000002 033310 177062 033314 033314 000004 033316 033314 v 005337 7766 005237 023727 001003 012737 000002 ~ ~ SRDCHR: MOV MoV 648: 033310 - RETURN HERE 034214 005737 S 000000000000 FRRPRRRRERLR NV FRNST RNSRS * " RDCHR (SP) ,=(SP) ::PUEHPDOUN THE PC AND 4(SP) -(SP) #64$,=(SP) ::GET READY FOR A_CHARACTER :sPUT NEW PS ON STACK ::PUT NEW PC ON_ STACK :;POP NEW PC AND PS 4(SPS,2(SP) HE PS S$TKCNT ssWAIT ON A CHARACTER 18 STKCNT s ;DECREMENT THE COUNTER 4 (SP) :sGET ONE _CHARACTER @$TKQOUT $TKQOUT :sUPDATE _THE POINTER S;KOOUT.lsTKOEND ::DID IT GO OFF OF THE END? 2 33 CH IF NO 033325 2s: ssGET A CHARACTER FROM THE QUEUE s ;CHARACTER IS ON THE STACK ssWITH PARITY BIT STRIPPED OFF RTI #STKQSRT,STKQOUT ;;RESET THE POINTER : sRETURN I3 3222323328382 2222213333322 2233333332223 3 3 it EiTx{E ROUTINE WILL INPUT A STRING FROM THE TTY R v &~ > L P - MoV 046 =RESE = 5 NN Rp ¥ (=l=1=] =) —_ OO0 — go SRS 2gpgeasape N = V=N & =ron 2SS HN NOSNANY 'S = SYNSHERENE OO =N NWO = NN NN NNC, PN o o NS N o =1 o= £ L¥ 3% 2 o RDLIN RETURN HERE R3,-(SP) =(SP) #STTYIN,R3 #STTYIN#15. ,R3 43 108: 000134 03451 17777 034512 6$: 034514 034512 034512 5$: 000134 034512 000025 034512 7%: (SP)+, (R3) g}??.(RS) (SP) 6$ #'\,9% .98 #-1,(SP) R3 R3,ASTTYIN 43 (R3) 9% 9$ $ (SP) 78 #'\,9% .99 (SP) #25,(R3) 8s iiittiiiddd) s2INPUT A STRING FROM THE TTY s sADDRESS OF FIRST CHARACTER WILL BE ON THE STACK : sTERMINATOR WILL BE A BYTE OF ALL 0'S :2SAVE R3 ::CLEAR THE RUBOUT KEY ::GET ADDRESS 2:BUFFER FULL? 2 ::BR 1 F YES 2260 READ ONE CHARACTER FROM THE TTY 2:GET CHARACTER ::1S IT A RUBOUT 'y IF NO 3318 }plaoTHE FIRST RUBOUT? ::TYPE A BACK SLASH ::SET THE RUBOUT KEY ::BACKUP BY ONE ::STACK EMPTY? ::BR IF YES ::éET¥$pE° TYPEOUT THE DELETED CHAR. ::G0 READ ANOTHER CHAR. :2RUBOUT KEY SET? 2:BR IF NO 2:TYPE A BACK SLASH ::CLEAR THE RUBOUT KEY 2:1S CHARACTER A CTRL U? 2:BR IF NO CZt RA! o ~§ -~ PE:E EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 40-4 RHBO 034402 104401 034416 034420 034426 034430 034432 034436 105013 104401 001203 104401 034514 000717 104401 001202 ooo71; 0 l.os ogong 034540 8s: 034410 122713 000022 034414 001011 034440 034444 034450 111337 106401 122723 034512 034512 000015 104401 001204 48: 38: 034454 001305 034456 105063 177777 b et =0V NOWVISHWN 034462 034466 034470 034472 034474 034502 034510 034512 034513 034514 034533 034540 034545 034552 034563 TYPE BR CMPB BNE CLRB TYPE TYPE TYPE BR SEQ 0156 is $CNTLU ;G0 START OVER (R3) ,SCRLF .STTYIN 3 $QUES s ..ch THE "nmcrsn ozz.um 5% MOVB TYPE (MPB (R3).9% .98 #15,(R3)+ TYPE ,SLF BNE CLRB 12 28 =1(R3) ::TYPE A CONTROL ‘V'* ::1S CHARACTER A *“R'? CH IF NO TYPE A STYPE THE INPUT smus ..soPICKUP ANOTHER CHACTER A STYPE ..cma me BUFFER AND LOOP *SECHO THE CHARACTER ..cuecx FOR RETURN LOOP IF NOT RETURN ..cu.m neruan (THE 15) :3TYPE A LINE FEED 005726 TST (SP)+ ::CLEAN RUBOUT KEY FROM THE STACK 012603 MOV (SP)+,R3 :*RESTORER3 011646 MOV (SP) ,=(SP) ..ADJUST THE STACK AND PUT ADDRESS OF THE 016666 000006 000002 MOV 4(SPJ ,2(SP) i FIRST ASCII CHARACTER ON IT #STTYIN,4(SP) MOV 012766 034514 000004 2 RTI :RETURN 000 98: BYTE 0 ..smme FOR ASCII CHAR. TO TYPE 000 BYTE 0 : “TERMINATOR STTYIN: .BLKB 15. : :RESERVE 15, BYTES FOR TTY INPUT 136 103 015 SCNTLC: .ASCIZ /*C/<15><12> ::CONTROL ‘'’ 136 125 015 SCNTLU: .ASCIZ /*U/<15><12> ::CONTROL 'V’ 136 107 015 SCNTLG: .ASCIZ 7%6/<15><12> ::CONTROL 'G 015 012 123 SMSWR: .ASCIZ <15><12>/SWR = / 040 040 116 SMNEW: .ASCIZ / NEW = / ;THIS ROUTINE WILL PROCESS THE (“C) CHARACTER 034574 034.285 012737 000001 5237 033310 001340 CTRAP: 034 112777 000015 176476 034614 005237 033312 034620 023727 033312 033325 034626 001003 034630 012737 033316 033312 034636 1$: MOV #1,CFLAG MOVB INC CMP BNE MOV RTI #15,3$TKQIN *PUT "RETURN' CHARACTER IN QUEUE $TKAIN *UPDATE THE POINTER $TKQIN,#STKQEND :GO OFF THE END ? 1$ :BR IF YES #STKQSRT,$TKQIN :RESET THE POINTER " SRETURN INC STKCNT. :SET THE "CONTROL C' FLAG :COUNT THIS CHARACTER : ERROR HANDLER ROUTINE .SBTTL SEQ 0157 ERROR HANDLER ROUTINE tttt.ttit't'.t.t.t..Qt"t'.tt.Qtt.ttt't'tt..tt.tt.'t'ttttt"tfit tTHIS 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 SERRTYP ON ERROR PROVIDED BY THIS ROUTINE ARE: tTHE SWITCH OPTagrg ON ERROR s %SW15=1 INHIBIT ERROR TYPEOUTS BELL ON ERROR P eSW13=1 12218'1 Tx $ERROR: CLRB CKSWR 035226 MOV 001322 MOV W CoNSeoNS8:;28§88283§ NNN;U! b )N =2 \N 144270 144240 144230 ~N~N c'cu SRR = O OO ——— QOO 177777 000004 035036 177766 000004 035224 177777 035052 035224 : CR=LF : CR=LF 177777 035224 10025: :BR IF YES STYPE THE TIME PC,STIME SERFLG ..ssr THE ERROR FLAG *DON'T LET THE FLAG GO TO ZERO 78 TEST NUMBER AND ERROR FLAG ..DISPLAY Y STSTNM,aDISPLA TYPE INC ggg $BELL $ERTTL ‘3’}@‘55@" CMP BEQ MOV MoV MOV 10018: 000004 +12 JSR INCB BEQ MOV BNE 10008: *DRIVE NUMBER TYPE TYPE BNE (MP8 BEQ TSTB 035224 R1.DRIVE §Avs THE ATTENTION REGISTER CONTENTS .sanr .SCRLF BIT 035226 R3,ATTN ..CLEAR THE ITEM BYTE SAVE LOCATION EST FOR CHANGE IN SOFT=SWR #SU13,3SWR MOVB 000177 IBSAVE BIT BIT BEQ 18: ; :ERROR=EMT AND N=ERROR ITEM NUMBER N *INHIBIT PRINTOUTS ? BNE 78: 001117 001116 002000 ERROR BR MoV #81T10,3SWR 1$ ..BELL ON_ERROR? *NO = SKIP ..nxns BELL *COUNT THE NUMBER OF ERRORS iSGET ADDRESS OF ERROR INSTRUCTION @SERRPC,SITEMB ::STRIP AND SAVE THE ERROR ITEM CODE $:SEE IF LOOP ON ERROR IS SET #8IT09,3SWR *BRANCH AROUND ROUTINE IF SO 1004$ ..see IF THIS IS rue POUER FAIL CALL #177,S1TEMB *BRANCH AROUND ROUTINE IF IT IS 1004$ ..sse IF THIS IS THE 2ND ERROR CALL IN THIS ROUTINE IBSAVE : SBRANCH IF SO 1003$ ..see IF CPSAVE HAS CPU ERR REG TIMEOUT INDICATION #-1,CPSAVE *BRANCH IF SO 1004$ ..SAVE CONTENTS OF ERROR VECTOR 'ERRVEC,=(SP) sSETUP 'TRAP' RETURN ADDRESS . ERRVEC #10008 }55 26.CPSAVE ..HOVE CPU ERROR REGISTER TO CPSAVE FOR TEST MOV #1001s, (SP) #-1,CPSAVE s:SET CPU ERROR REGISTER TIMEOUT INDICATOR MOV (SP)+,ERRVEC ;:;RESTORE CONTENTS OF ERROR VECTOR CMP #-1,CPSAVE ;:SEE IF CPSAVE HAS CPU ERR REG TIMEOUT INDICATION RTI 035224 BEQ BIT §§3°99Rret BIC MOVB Move BR BEQ 1004$ #81T00, CPSAVE 1004$ #81700,177766 SITEMB.IBSAVE #4177 .$iTEMB 1004$ ::SETUP RETURN ADDRESS *BRANCH IF SO ..see IF POHER MONITOR BIT IS SET IN CPU ERR REG *BRAN CH IF 0K ..CLEAR THE BIT 7OUND SET ::MAKE IBSAVE NON-ZERO FOR DUAL ERROR CALL SSSET SITEMB TO SPECIAL POWER FAIL POINTER *:BRANCH OVER IBSAVE CLEARING oM B 13 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 41 c13 SEQ 0158 105037 035226 2777 020000 CLRB ooioos 801203 144020 000001 001226 1130 036574 035170 g:8% NNNN N NWVINN — =l 2828 %: Y 035226 208: 218: 22%: 2s: 143746 035226 IBSAVE ;sCLEAR IBSAVE SO 2ND TIME THROUGH EXITS iT13,3SWR 208 ::SKIP TYPEOUT IF SET :sSKIP TYPEOUTS ::60 TO USER ERROR ROUTINE PC,SERRTYP 104401 —5 o &~N SNNIITEREER NNhr P-4 0352 nNO SN0 v N =] W ERROR HANDLER ROUTINE 3s: CPSAVE: IBSAVE: .SCRLF #APTENV,SENV 2$ $ITEMB,21$ BC.SA776 : sRUNNING IN APT MODE $3NO,SKIP APT ERROR REPORT 2$ IBSAVE 38 asSwWR 33 :sAPT ERROR LOOP :;SEE IF IBSAVE IS LOADED 2 sBRANCH IF NOT = NO HALT ON PWR MON BIT ERROR ssHALT ON ERROR ::SKIP IF CONTINUE ssHALT ON ERROR! ssTEST FOR CHANGE IN SOFT-SWR IBSAVE 7$ s:SEE IF ITEM BYTE SAVE LOCATION HAS AN ERROR CALL ::gg?fign BACK TO CALL ORIGINAL ERROR 0 0 $:SET ITEM NUMBER AS ERROR NUMBER *SREPORT FATAL ERROR TO APT ::LOCATION TO SAVE CPU ERROR REG CONTENTS :;LOCATION TO SAVE ITEM BYTE oTM CZRNAAO RM8O PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 41-1 SEQ 0159 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 42 ERRQ MESSAGE TYPEOUT ROUTINE .SBTTL ERROR MESSAGE TYPEOUT ROUTINE .Qfiit.tt."tt.."..."""'.t..t.'.'.t't.Q.QQ..QQ..'..Q.QQ".'. 'THIS ROUTINE USES THE °‘‘'ITEM CONTROL BYTE'' (SITEMB) TO DETERMINE WHICH ;*ERROR 1S TO BE REPORTED. IT THEN OBTAINS FROM THE 'ERROR TABLE'' (SERRTB), :*AND REPORTS THE APPROPRIATE INFORMATION CONCERNING THE ERROR. SERRTYP: 001203 TYP MOV CLR BISB BNE 001130 MOV 001132 TYPOC 001212 035406 ..60 TYPE=-OCTAL ASCII(ALL DIGITS) sGET ouT 3s MORD O MOV BEQ (RO)+,48 58 :PICKUP 'DATA HEADER'TM* ::SKIP TYPEQUT IF 0 WORD O 58: MOV (RO) RO 68$: MOV 38: 4$: " 035402 000 :sSAVE SERRPC FOR TYPEOUT s ;ERROR ADDRESS BEQ TYPE TYPE TYPE TYPE 8s: PFECH: 10008 (R0)+,2$ ,SCRLF .SCRLF ..SEE IF THIS ERROR CALL IS SPECIAL POWER FAIL CALL sBRANCH IF ..GET TEST uuse MOVE POWER FAIL ERROR CALL TABLE TO RO ::BRANCH TO CALL ERROR :.ADJUST THE INDEX SO THAT IT WILL WORK FOR THE ERROR TABLE H 33" 'CARRIAGE RETURN'' © "LINE FEEDTM POINTER HERE * nregG0ES A HEADER' ..:DAT FEED” TNE L RET GE 'CARRIA :3" : :PICKUP_"DATA TABLE POINTER 3360 TYPE THE DATA :TYPE THE HEAD 'DATA BNE 78 TYPE RTS SCRLF PC .."CARRIAGE RETURN'' & '‘LINE FEED" MOV a(R0)+,~(SP) ::SAVE 3(RO)+ FOR TYPEOUT ST BEQ TYPE (RO) 6% 8s ..IS TNERE ANOTHER NUMBER? esg:z /7 TYPOC 0 ..TYPE THE PC OF THE ERROR ::FORM TABLE POINTER ::PICKUP "ERROR MESSAGE'' POINTER ::SKIP TYPEOUT IF NO POINTER ::TYPE THE "ERROR MESSAGETM 5 ERROR MESSAGE POINTER GOES WERE 2s: 001203 :IF _ITEM NUMBER IS ZERO. JUST STESTN,PFTSTN #PFECH.RO 1001$ RO RO RO RO #SERRTB, RO BNE 10018: MOV 001203 $ERRPC,=(SP) $SPICKUP THE ITEM INDEX MOV MOV BR DEC ASL ASL ASL ADD 10008: 035%23 RO aNSITEMB,RO 1$ 13 #177,RO 035546 003370 035324 RO,=(SP) ::"magese RETURN'' & "LINE FEED' BR CMPB 18: 000177 $CRLF BR (SP)+,RO s sRESTORE RO ETURN ::60 TYPE--OCTAL ASCI!(ALL DIGITS) :BR_IF NO ..TYPE TWO(2) SPACES :LOOP ..TUO(Z) SPACES ; sWORDS DEFIN ING ABLES BELOW PFECH1,PFECH2 PFECH3 Prsgml 3553 CPU ERROR REGISTER FOUND SET? PFECH1: .ASCIZ" ?POWER MONITOR 9% 19 105 123 PFECH2: .ASCIZ PTESTNO ERR PC CPUERREG? 0355 001132 035224 .EVEN PFECH3: .WORD PFTSTN,SERRPC,CPSAVE,0 CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 42-1 13 SEQ@ 0160 ERROR MESSAGE TYPEOUT ROUTINE 0%5542 035546 000 000000 000 000 PFECH4: .BYTE PFTSTN: .WORD 0,0,0,0 0 :;CONTAINS TEST NUMBER FOR PF BIT ERROR ‘z*mnoRHB*O PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 43 .SBTTL F13 SEQ 0161 TYPE ROUTINE ..Q"t.tt....t'.'t.t""".t.ttt.itt.it.'.'.'.Qtfi't.t""'..." tROUTINE TO TYPE ASCIZ MESSAGE. MESSAGE MUST TERMINATE WITH A 0 BVTE. “«THE ROUTINE WILL INSERT A NUMBER OF NULL CHARACTERS AFTER A LINE FEED. SNULL CONTAINS THE CHARACTER TO BE USED AS THE FILLER CHARACTER. +*NOTE1: SFILLS CONTAINS THE NUMBER OF FILLER CHARACTERS REQUIRED. $SFILLC CONTAINS THE CHARACTER TO FILL AFTER. $*NOTE2: ::uors : swCALL: -1) usms A TRAP INSTRUCTION -oa e i :t 035550 105737 035654 0014 035664 03 035670 035672 035676 035700 035704 ossng 035712 ossns 8;5 005726 104401 001 ; 105 000755 7 123726 801 0 013746 105 0027 5 000770 001173 STYPE: YPE ,MESADR :sMESADR IS FIRST ADDRESS OF AN ASCIZ STRING STPFLG :;1S THERE A TERMINAL? TYPE MESADR TSTB 035554 100002 035556 000000 035560 000430 035562 010046 18: 035564 017 000002 035570 122737 000001 001226 035576 001011 035600 132737 000100 001227 035606 001405 035610 010037 035620 035614 004737 036564 035620 ogpocg 618: 035622 132737 000040 001227 62$: 03 001003 035632 112046 28: 035634 001005 035636 005726 035640 &gooo 60$: 035642 716 000002 3s: 035646 2 48: 035650 122 33 000011 BPL HALT BR MOV MOV CMPB BNE BITB BEQ MOV JSR .WORD BITB BNE MOVB BNE ST MOV ADD RTI CMPB 1$ :BR IF YES SHALT HERE IF NO TERMINAL 3s 3 SLEAVE RO,=(SP) :SAVE RO a2(sP) ,RO PSGET ADDRESS OF ASCIZ STRING #APTENV,SENV 3 ;RUNNING IN APT MODE 628 $3NO,GO CHECK FOR APT CONSOLE mrspooL.ssnvni POOL MESSAGE TO APT 628 NO,GO CHECK FOR CONSOLE RO,61$ SEfUP MESSAGE ADDRESS FOR APT PC.SATY3 ::SPOOL MESSAGE TO APT 0 :SMESSAGE ADDRESS WAPTCSUP,SENVM ::APT CONSOLE SUPPRESSED 608 ..ves SKIP TYPE OUT mo:o.-<sn ::PUSH CHARACTER TO BE TYPED ONTO STACK (S S3BR IF IT ISN'T THE TERMINATOR (SP)+ $:IF TERMINATOR POP IT OFF THE STACK (SP)+ RO :SRESTORERO #2,(SP) :;ADJUST RETURN PC *RETURN .-.-eamcn IF <HT> #HT,(SP) 3?5223 1 gm 000200 Eu"? ggm.(sm ::BRANCH IF NOT <CRLF> (SP)+ 5724 ggs 0847 105337 036100 035 95 0011 001170 000001 8;2735 1 58: 6$: 78: BEQ 8s ST TYPE SCRLF CLRB BR JSR (MP8 BNE MOV DECB BLT ngARCNT 2 PC,STYPEC SFILLC.(SP)+ 2 $NULL ,=(SP) 1(SP) a4 ::POP <CR<LF> EQUIV SSTYPE A CR AND LF ::CLEAR CHARACTER COUNT $3GET NEXT CHARACTER 2360 TYPE THIS CHARACTER ::IS IT TIME FOR FILLER CHARS.? S:IF NO GO GET NEXT CHAR. $3GET # OF FILLER CHARS. NEEDED SSAND THE NULL CHAR. $3DOES A NULL NEED TO BE TYPED? $3BR IF NO=-GO POP THE NULL OFF OF STACK BR $ ::LOOP JSR DECB rc.smsc ;cmcn 2360 TYPE A NULL $3D0 NOT COUNT AS A COUNT 7 at INE 13 SEQ 0162 sHORIZONTAL TAB PROCESSOR S R33RSA SO 38 0387¢ 000002 036100 W NN NN N OO0O00O00O0O00O00O0 ss: $: STYPEC: 1463172 Vi MOvV8 JSR BITB BNE TST BR 1018: 108: 1463124 ::TAB STOP :;POP SPACE OFF STACK s3GET NEXT CHARACTER asTKS ::CHAR IN KYBD BUFFER? ::BR_IF NOT 28 036100 000002 18: BR CMPB8 S$CHARCNT : .WORD STYPEX: RTS :sGET CHAR ::STRIP EXTRANEOUS BITS :;WAS CHAR XOFF ::BR IF NOT ssWAIT FOR CHAR #177600, (SP) #SXON, (SP) 101$ ::GET CHAR ::STRIP_IT ssWAS IT XON? ::BR IF NOT (SP)+ ssFIX STACK asTPS 108 ssWAIT UNTIL PRINTER IS READY 2(SP) ,as$TPB 1§R.2(SP) 143116 2 s sREPLACE TAB WITH SPACE ssTYPE A SPACE s sBRANCH IF NOT AT (SP)+ asTKS 101$ asTK8, (SP) 1028: 000012 gs.scunncnt #SXOFF , (SP) 1028 14314 1776 000021 00000; 00001 ,(SP) Ps.irvpec #177600, (SP) 143146 77 # aSTKB, = (SP) 143166 17760? 00002 B YPE PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 43-1 SCHARCNT STYPEX #LF,2(SP) STYPEX (PC)+ 0 PC s:LOAD CHAR TO BE TYPED INTO DATA REG. ::1S CHARACTER A CARRIAGE RETURN? S*BRANCH IF NO ::z§§;°CLEAa CHARACTER COUNT *21S CHARACTER A LINE FEED? “:BRANCH IF YES *:COUNT THE CHARACTER *:CHARACTER COUNT STORAGE SEQ 0163 CZRNAAO RMB0 PERF EXER MCRO VOlo 00 14~JAN=-82 15:16:58 PAGE 44 T BINARY TO OCTAL (ASCII) AND .SBTTL BINARY TO OCTAL (ASCII) AND TYPE "'t.."....'..Q."Q.'t.""'.'t....'t..'..'.ttt....l"t"..'t. 'THIS ROUTINE IS USED TO CHANGE ? 16=B1T BINARY NUMBER TO A 6-DIGIT T YPE |1 ;*OCTAL (ASCII) NUMBER AND :#$TYPOS=--ENTER HERE TO SETUP SUPPRESS ZEROS AND NUMBER OF DIGITS TO TYPE .'CALI. i I3 o* i ;t MOV TYPOS BYTE BYTE NUM,=(SP) N M ;t ® :sNUMBER TO BE TYPED ..CALI. FOR TYPEOUT i } 10 s FOR NUMBER OF DIGITS TO TYPE e :1=TYPE LEADING ZEROS :%0=SUPPRESS LEADING ZEROS :*$TYPON=-==-ENTER HERE TO TYPE OUT WITH THE SAME PARAMETERS AS THE LAST ;*$TYPOS OR STYPOC *CALL nov TYPON NUM, - (SP) s ;NUMBER TO BE TYPED ssCALL FOR TYPEOUT .'SHPOC--ENTER HERE FOR TYPEOUT OF A 16 BIT NUMBER e e 036104 017646 000000 1 036327 036110 11 036116 112637 036331 MOV TYPOC $TYPOS: MOV MOVB MOVB = (SP) NUM, a(SP) ,=(SP) 1(SP).SOFILL (SP)+.SOMODE+1 (sh) 42, A 00002 Doseng 035158 #1,SOFILL MOVB ose1§o 112737 000001 g57 STYPOC: 036136 112737 ooooog 036144 112737 000005 036152 010346 Sl eIzt 036160 113704 036331 06370¢ 03616 036193 11243? onuwzczsus 836173 5} gzgg 8363% 00 36331 036326 MOVB STYPON: MOVB MOV o MOVB s MOVB fifi% 18: 105 2s: 1050 12 105337 wg% 03 1902 5704 001403 005204 036330 38: 177770 48: gg;a CLR ggt og.sonoom #5,SOCNT R3.=(SP) s:SET THE ZERO FILL SUITCH ..SET FOR SIX(6) DIGITS SET :S "ERATIW CMT .. ..SAVE Ré g :IROTATE MSB INTO ' :G0 DO_MS8 ::FORM THIS DIGIT ¥§hu.n4 ) R RS MOV RS.R3 BPL BIC BNE ST BEQ INC : ..PICKlP THE MODE :sLOAD ZERO FILL SWITCH :sNUMBER OF DIGITS TO TYPE s sADJUST RETURN ADDRESS R sofiooso1.R4 B6.n6 Ré. ROL ROL DECB :sNUMBER TO BE TYPED :sCALL FOR TYPEOUT R3 SOMODE 78 4 R4 5% Ré #177770.R3 RS ..SAVE :;GET THE NUMBER OF DIGITS TO TYPE :sSUBTRACT IT FOR MAX. ALLOWED :3SAVE_IT FOR USE :3GET THE_ZERO FILL SWITCH :3PICKUP THE INPUT NUMBER :CLEAR_THE_ OUTPUT, WORD C. o W N NN ~[- 3V IR SRES & B INIFSRE o O i o OO0O0O00O0O0O0COOO0O0O0O0O00O0OC =4 RF EXER MACRO V04.00 14=JAN=82 15:16:58 PAGE 44=1 113 SEQ 0164 (ASCII) AND TYPE 527 527 5%: BIS BIS #'0,R # R BGT BLT $ 68 78: MOVB TYPE DECB 44 68: 012605 015604 012603 000002 000004 01 012616 000002 8s: 000 000 BR MOV MOV MOV MOV MOV RTI BYTE BYTE 1 z 184 21 1 g‘r 7 402 04 000 000 000000 4 4 6 INC SOCNT: .BYTE SOFILL: .BYTE SOMODE: .WORD R3,8S 13 gocm R4 28 (SP)+,RS (SP)+.R& (SP)+.R3 14 (SP) 2(SP) (SP)+, (SP) 0 0 0 0 O P :sMAKE THIS DIGIT ASCII 2JMAKE ASCII IF NOT ALREADY 23SAVE FOR TYPING 2260 TYPE THIS DIGIT ::COUNT BY 1 :2BR IF MORE TO DO :2BR IF DONE 22 INSURE LAST DIGIT ISN'T A BLANK 2260 DO THE LAST DIGIT : :RESTORE RS LR s sRESTORE R4 s sRESTORE R3 ssSET THE STACK FOR RETURNING s sRETURN s sSTORAGE FOR ASCII DIGIT s sTERMINATOR FOR TYPE ROUTINE s;0CTAL DIGIT COUNTER ssZERO FILL SWITCH s sNUMBER OF DIGITS TO TYPE J 13 SEQ 0165 MAL AND TYPE ROUTINE .SBTTL CONVERT BINARY TO DECIMAL AND TYPE ROUTINE 33222222222 22222222 2232233222222 d it dddiiiiiiiiiiddd) :*THIS ROUTINE 1S USED TO CHANGE A 16-BIT BINARY NUMBER TO A 5-DIGIT s*SIGNED DECIMAL (ASCII) NUMBER AND TYPE IT. DEPENDING ON WHETHER THE s*NUMBER 1S POSITIVE OR NEGATIVE A SPACE OR A MINUS SIGN WILL BE TYPED ;*BEFORE THE FIRST DIGIT OF THE NUMBER. LEADING ZEROS WILL ALWAYS BE s*REPLACED WITH SPACES. s*CALL: . % (SP) NU=M, $TYPDS: ON STACK s sPUSH :2PUSH RS ON STACK :2SET BLANK SWITCH AND SIGN ¥ 000055 1$: 036546 000040 2%: 3s: 4$: 5%: 000001 000060 000040 RS #'=,1(SP) RO #SDBLK ,R3 # L (RS)+ R2 $DTBL (RO) ,R1 R1,R5 43 R2 38 R1.R5 R2 5% (SP) 78 (SP) 68:' 7$: 000010 s - D b b b -t -oig-n - NN = O 2888 A AV]ONN S8 O W ~ NS NN NN NN o 23 o > SSPONIND =i=l3 o S3S S =N W NN o O NOWNN WWOr~NONONOW 036536 g 0000 —h ==b =&b ol et oks - ::G0 TO THE ROUTINE ::PUSH RO ON STACK ::PUSH R1 ON STACK s sPUSH :g ON STACK 020200 000020 177777 :sPUT_THE BINARY NUMBER ON THE STACK 177776 9%: (SP)O,Rg (SP)+.R1 NUMBER G s sMAK INDEX TS ::2ERO THE CONSTAN ::SETUP THE OUTPUT POINTER ssSET THE FIRST CHARACTER TO A BLANK :;CLEAR THE BCD NUMBER ssGET THE CONSTANT ::FORM THIS BCD DIGIT s:BR IF DONE :2INCREASE THE BCD DIGIT BY 1 ssADD BACK THE CONSTANT :sCHECK _IF BCD DIGIT=0 gof L THROUGH IF 0 ssFAL s:STILL DOING LEADING 0°S? ::BR ‘I,F YES ::BR_IF NO ssYES==SET THE SIGN :sMAKE THE BCD D C :sPUT T ING EMEN INCR :2JUST TABLE THE CK ::CHE 2260 DO THE NEXT D 2260 TO EXIT ::GET THE LSD 2:60 CHANGE TO ASCII 22WAS THE LSD THE F1RST NON-ZERO? 2:BR IF NO 22YES==SET THE SIGN FOR TYPING . 22SET THE TERMINAT R INTO STACK ::POP ::POP STACK INTO R 2:POP STACK INTO R 2:POP STACK INTO R weo CZRNAAO RMBO PERF E CONVERT BINARY TO D MACRO V04.00 14=~JAN-82 15:16:58 PAGE 45 36518 012680 104401 520 036524 81 836? 2 012616 036540 036542 036544 000144 000012 &» o o & \J oz%’g% 036536 001750 836543 00002 000004 MOV TYPE MOV H(TJV $DTBL: 10000.. (SP)+,RO $DBLK 2(SP),4(SP) (SP)+, (SP) » $DBLK: 10. .BLKW & ::POP STACK INTO RO $:NOW TYPE THE NUMBER *3ADJUST THE STACK e M aas weo SEQ 0166 ——— CONVERT BINARY TO DECIMAL AND TYPE ROUTINE K13 S CZRNAAO RM8O PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 45-1 APT COMMUNICATIONS ROUTINE .SBTTL ~N ~ 000001 gegzsss acS = 1 000001 000001 APT COMMUNICATIONS ROUTINE t't'.tttttfit..ltfittt'""tit..t..t.t'.ttltt....t....'t.t'.t.." 037022 037020 §ATY1: MOVB 037022 SATY4: MOVB SATY3: gova MoV MoV 1ST8 037020 000001 001226 000100 001227 000004 000002 001206 000004 001222 BEQ CMPB 18: TST 2$: TST8 001222 001224 000004 000004 000002 177776 035550 001206 036732 000004 #1,SFFLG lfSHFLG SATYC #1,8FFLG ..PUSH RO ON STACK (R0+ ::FIND END OF MESSAGE NN NNN sPUSH R1 ON_STACK ..SHOULD TYPE A MESSAGE? ¢IF NOT: BR 5% gAPTENV.$ENV ..OPERATING UNDER APT? $ sIF NOT: BR gAPTSPOOL.SENVH ..S?Ozsb SPOOL MESSAGES? B8R .1 $ a4 (SP) RO +:GET MESSAGE ADDR. :BUMP RETURN ADDR. #2.4(SP) snssrvpe :sSEE IF *DONE W/ LAST XMISSION? SIF NOT: WAIT ao $MSGAD iPUT ADDR IN MAILBOX SHFLG 2$ $MSGAD ,RO RO RO, SMSGLGT gg.snservpe ::SUB START OF MESSAGE s:GET MESSAGE LNGTH IN WORDS ssPUT LENGTH IN MAILBOX ssTELL APT TO TAKE MSG. a4 (SP) 48 :;PUT MSG ADDR IN JSR LINKAGE 177776, (SP) ::PUSH 199776 ON_ STACK #2,4(SP) sc.srvps -BUMP RETURN ADDRESS :3CALL TYPE MACRO ..SHOULD REPORT FATAL ERROR? sIF NOT: 001226 SK2 822333 RN SRBZZIN QL&Y s 888382 2:TO ONLY REPORT FATAL ERROR RO,=(SP) R1,=(SP) 037022 037021 037022 :TO REPORT FATAL ERROR ..10 TYPE A MESSAGE 1 SMSGTYPE 118 001206 001210 000004 128: CLRB 037020 BR ..RWING UNDER APT? ¢IF NOT: BR ..FlNISHED LAST MESSAGE? sIF NOT: IT ..GEt eanoa BUMP RETURN ADDR. 2:TELL APT TO TAKE ERROR *3CLEAR FATAL FLAG *SCLEAR LOG FLAG ::CLEAR MESSAGE FLAG *POP STACK INTO R1 ..POP STACK INTO RO SMFLG: SLFLG: $FFLG: .BYTE .BYTE .BYTE APTSIZE =200 APTENV = 001 APTSPOOL= 100 APTCSUP = 040 *RETURN ..nsssc. FLAG ik 06 FLAG ::FATAL FLAG "o SEQ 0167 CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 46 SEQ 0168 RANDOM NUMBER GENERATOR ROUTINE .SBTTL RANDOM NUMBER GENERATOR ROUTINE 33 1332222222222 232223 3222222222238 3 3223382223323t dddddiditdy s*THIS ROUTINE IS A DOUBLE _PRECISION PSEUDO RANDOM NUMBER GENERATOR s*WITH A RANGE OF 0 TO 2(+33)-1. s«CALL: o% o* * JSR RETUR PC,SRAND 2:CALL THE ROUTINE :2RETURN HERE THE RANDOM :2NUMBER WILL BE IN 2 sSHINUM, SLONUM RO,=(SP) R1,=(SP) R2,=(SP) SLONUM,RO SHINU?.R1 :;PUSH RO ON STACK s:PUSH R1 ON STACK :;PUSH R2 ON STACK ssSET RO WITH LOW ssSET R1 WITH HIGH ssSET_SHIFT COUNT ssSHIFT RO LEFT AND s sROTATE CARRY INTO R1 AND :sCHECK FOR DONE s sCONTINUE SHIFT LOOP :sADD NUMBER TO MAKE X 129 » 037024 037024 037026 037030 037032 037036 037042 037046 037050 037052 037054 037056 037062 037064 037070 010046 010146 010246 013700 013701 012702 006300 006101 005202 001374 063700 005501 063701 062700 037076 037102 037106 062701 010037 010137 037126 1 1234 $RAND: 03712 037122 17777 1$: ASL 037124 s :PROPOGATE CARRY 037122 001057 R1 #47401 ,R1 RO,SLONUM R1,SHINUM (SP)+,R2 (SP)+,R1 (SP)+,RO 047401 037124 037122 SHINUM: SLONUM: .WORD .WORD PC 176543 123456 :sADD NUMBER TO MAKE X 129 ssADD LOW CONSTANT : ;PROPOGATE CARRY ssADD HIGH CONSTANT :sSAVE RO :sSAVE R1 ::POP STACK INTO R2 ::POP STACK INTO R1 ::POP STACK INTO RO s sRETURN weo CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 47 CZR0 RHBO PERF _EXER MACRO V04 00 14=-JAN-82 15:16:58 PAGE 48 SAVE AND RESTORE RO-R5S ROUTINES .SBTTL N 13 SEQ 0169 SAVE AND RESTORE RO-R5 ROUTINES Vi tttttt.ttfittttttttttttitQtt'tfitt.tttttttttt.t.ttt.*..tt.ttt.t.t 'SAVE RO=R5 s*CALL: SAVREG *UPON RETURN FROM $SAVREG THE STACK WILL LOOK LIKE: .*TOP---(*16) ;% 42-==(+18) .A ’8"‘“3 ' ) .'*12°--R1 s*+14===R0 037126 037126 037130 037132 037134 0371 037140 037122 037146 037152 010046 010146 010246 010346 010446 010546 016646 016646 016646 037162 000002 $SAVREG: 000022 000022 000022 037156 016646 000022 RO,=(SP) R1,=(SP) R2.=(SP) R3,=(SP) R&,=(SP) R5,=(SP) 22(SP) ,=(SP) 22(SP) ,=(SP) 22(SP) ,=(SP) :sPUSH RO ON STACK :;PUSHR1 ON STACK ;:PUSH R2 ON STACK ::PUSH R3 ON STACK ssPUSH R4 ON STACK s:PUSH RS ON STACK s:SAVE PS OF MAIN FLOW ssSAVE PC OF MAIN FLOW ssSAVE PS OF CALL MoV MOV MOV MOV MOV MOV MOV MOV (SP)*.Z%(SP) (SP)+,22(SP) (SP)+,22(SP) (SP)+,22(SP) (SP)+,R5 (SP)+ R4 (SP)+,R3 (SP)+,R2 ssRESTORE PC OF CALL ..RESTORE PS OF CALL ssRESTORE PC OF MAIN FLOW ssRESTORE PS OF MAIN FLOW s:POP STACK INTO R ::POP STACK INTO Ré ..POP STACK INTO R3 sPOP STACK INTO R2 MOV (SP)+,R0 ::POP STACK INTO RO MOV MoV MOV MOV MOV MOV MOV MOV MOV MoV RTI 22(SP),=(SP) ssSAVE PC OF CALL s *RESTORE RO-R5 037164 s*CALL: :* RESREG 037164 037170 037174 037200 037204 037206 037210 037212 012666 012666 012666 012666 012605 012604 012603 0126C2 037216 012600 037214 012601 037220 000002 $RESREG: 000022 000022 000022 000022 i MOV RTI (SP)+.R1 .-POP STACK INTO R1 CZ| Sl B 14 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 49 SEQ 0170 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE .SBTTL DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE 222222222 2222222223222 233222322 ddiiddiiidiiidiiidid 3 12 2 32 2 +*THIS ROUTINE WILL CONVERT A 32-BIT BINARY NUMBER TO AN UNSIGNED s*DECIMAL (ASCII) NUMBER. THE SIGN OF THE BINARY NUMBER MUST BE +*POSITIVE. s*CALL % Hd Hd 037222 037224 037230 0372 037240 037242 037244 037252 037256 037262 37264 037256 037270 037272 037274 037276 037300 037302 037304 037 037310 037314 37316 037320 7322 037324 037326 037330 104412 016602 012700 010066 015201 012202 01%737 012704 (012705 005003 161401 005602 161502 00260; 00520 000772 062401 005502 06240; 02252 052703 110320 005327 0 $DB2D: 000002 037402 000002 00021% 03733 037334 037320 1$: 2% 3s: 000060 13 10502 104 4$: MOV JSR RETURN SAVREG MOV MOV MOV MOV MOV MOV MOV MOV CLR SuB SB8C SuB BLT INC BR ADD ADC ADD CMP BIS MOVB DEC .WORD BNE CLRB RESREG RTS #PNTR,=(SP) PC,a#$pB2D :sPOINTER TO LOW WORD OF BINARY NUMBER ssTHE FIRST ADDRESS OF ASCIZ ::1S ON THE STACK 2(SP) ,R2 #SDECVL RO : :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 R3 (R4) .R1 R2 (RS) ,R2 ::CLEAR PARTIAL :*SUBTRACT TEN POWER 3s R3 2% (R4)+,R1 R2 (R4)+,R2 (R5)+,(RS5)+ ::BR IF TEN POWER TO LARGE ::f33p1 TO PARTIAL R3.(RO)+ (PC)+ 0 18 (RO)+ gé ONE? #'0.RS PC :*RESTORE SUBTRACTED VALUE s;MOVE TO NEXT TEN POWER ::CflchgrPARTIAL TO ASCII s:BR IF NO 2 2TERMINATOR 2:RESTORE REGISTERS 3 RETURN ::1.0E09 037332 037334 037336 037340 037342 4 037346 037350 037352 035632 1 00276 113200 000230 041100 000017 103240 $TNPWR: 145000 35632 160400 2765 113200 230 041100 17 103240 8%;%2? 20 53420 ::1.0E04 001750 1750 ::1.0€03 144 144 ::1.0E02 037362 037364 037366 037370 002201 % 037354 1 ::1.0E08 ::1.0E07 ::1.0E06 ::1.0E05 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN=82 15:16:58 PAGE 49~1 (o [ SEQ 0171 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE 037372 00001 o§7§74 800000 037376 000001 037400 027602 000000 012 1 0 $DECVL: .BLKB 12. ::1.0€01 : ::1.0€00 s sRESERVE STORAGE FOR ASCIZ STRING CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 50 D 14 SEQ 0172 DOUBLE LENGTH BINARY TO OCTAL ASCII CONVERT ROUTINE .SBTTL DOUBLE LENGTH BINARY TO OCTAL ASCII CONVERT ROUTINE £ 233322222222 82222233 2323222223338 28 3322232222 i ddiiiidiididdds) +*THIS ROUTINE WILL CONVERT A 32-BIT UNSIGNED BINARY NUMBER TO AN s*UNSIGNED OCTAL ASCIZ NUMBER. ::CALL ; o i 037416 037420 037424 037430 037434 037440 037442 037444 037446 104412 016601 012705 012704 012703 012100 012101 oooogz 037535 000014 177770 oosoog 11024 037450 o1ogoz $DB20: , 18: 037474 037476 037500 037502 037504 037506 037510 037512 037516 037520 104413 000207 006203 006001 006000 006001 006000 006001 006000 040302 062702 000060 00075 SAVREG MOV MOV MOV MOV MOV MOV 2(SP) ,R1 #$0CTVL+13.,RS M2, R4 #°C7.R3 (R1)+,R0 (R1)+.R1 MOV RO.R2 CLR MOVB MOV 037462 010566 000002 28: 38: #PNTR,=(SP) PC,ax$DB20 JSR RETURN DEC BGT BEQ INC 037452 005304 037454 003007 037456 001405 037460 005205 037466 037470 037472 MOV RESREG RTS ASR ROR ROR ROR ROR ROR ROR BIC ADD BR $OCTVL: .BLKB ag R2,=(RS) Ré 3s 28 RS RS,2(SP) ::POINTER TO LOW WORD OF BINARY NUMBER :3CALL THE ROUTINE *“THE ADDRESS OF THE FIRST ASCIZ CHAR. IS ON THE STACK :3SAVE ALL REGISTERS $SPICKUP THE POINTER TO LOW WORD ::POINTER TG DATA TABLE +:p0 ELEVEN CHARACTERS * SMASK :3LOWER WORD :3HIGH WORD + STERMINATOR $3PUT CHARACTER IN DATA TABLE :3GET THIS DIGIT :SCOUNT THIS CHARACTER *:BR IF NOT THE LAST DIGIT S:BR IF IT IS THE LAST DIGIT S:ALL DIGITS DONE-ADJUST POINTER FOR FIRST S:ASCIZ CHAR. & PUT IT ON THE STACK R3 :RESTORE ALL REGISTERS ::RETURN TO USER $:POSITION THE MASK FOR THE LAST DIGIT R3,R2 ::MASK OUT ALL JUNK 14. s ;RESERVE DATA TABLE PC R RO R1 RO R1 RO #0,R2 18 $:POSITION THE BINARY NUMBER FOR THE NEXT OCTAL DIGIT ¥ | $3MAKE THIS CHAR. ASCII 2560 PUT IT IN THE DATA TABLE ZRNAAOD RMBO PERF EXER aegao V04.00 14=JAN-82 15:16:58 PAGE 51 .SBTTL E 14 SEQ 0173 POWER DOWN AND UP ROUTINES :'tl'.t..'tttt.ttt..t".'.'.tt'lfi.'..Q.it'.l.tttit..t't.'tttt'ttt 000024 000026 POWER DOWN ROUTINE mbwr S#PURVEC ;:SET FOR FAST UP $PWRDN: MOV MOV MOV MOV MOV MOV MOV MOV 000024 #340,3#PURVEC+2 RO,=(SP) R1,=(SP) R3,=(SP) g ;:PRIO:7 :3PUSH RO ON STACK $:PUSH R1 ON STACK $3PUSH R2 ON STACK $:PUSH R3 ON STACK $:PUSH R4 ON STACK $:PUSH RS ON STACK $:PUSH @SWR ON STACK asSUR,=(SP) : SP, $SAVR6 ¥:SAVE SP #SPWURUP,@#PWRVEC' ; ;SET UP VECTOR =2 s sHANG UP :"tttt.ttttttlttttQtt.""itl.t..t".'t..lt'ttttttt.Q'tfittt'.ttt 000024 18: 2s: 037714 037716 141306 #SILLUP,3#PWURVEC ;:SET FOR FAST DOWN MOV CLR INC BNE DEC $SAVR6, SP $SAVR6 $SAVR6 13 PWRFLG MOV (SP)+,aSWR BLE MoV 2s (SP)+,R5 P e R N GDESCKDCNDGDCNDCS POWER UP ROUTINE $PWRUP : MOV 037536 000340 000024 000026 MOV MOV TYPE SPWAMG: .WORD MOV $PWRAD : ,','i'?” SILLUP: HALT BR $SAVR6: 0 042 120 PWRFLG: WORD SPOUER: [ASCIZ ::GET SP $:WAIT LOOP FOR THE TTY S:WAIT FOR THE INC ::0F WORD SWAIT AND SET POWER FAIL FLAG *WAIT FOR FLAG= 1 ::POP STACK INTO @SwWR :;POP STACK INTO RS ::POP STACK INTO Ré ::POP STACK INTO R3 :;POP STACK INTO R2 ::POP STACK INTO R1 ::POP_STACK INTO RO #SPURDN, 3#PWRVEC' ; ; SET 59 THE POWER DOWN VECTOR #340,3#PURVEC+2 ;:PRIO: SPOWER (PC)+, (SP) SATPOW =2 ::REPORT THE POWER FAILURE ::POWER FAIL MESSAGE POINTER *:RESTART AT SATPOW *:RESTART ADDRESS ::THE POWER UP SEQUENCE WAS STARTED i BEFORE THE POWER DOWN WAS COMPLETE $:PUT THE SP HERE ; *INDICATES POWER FAIL OCCURRED WHEN SET 0 <CRLF>/"POMER UP"/<CALF> ;POWER UP ROUTINE ,WAIT TWO MINUTES, sTHEN AUTO STARTS AT SIZMEM SATPOW: INE BN RESET CLR CLR CLR #0 " SECOND INTRVL+2 PS sTTY LOOP, WAIT FOR INCREMENT : OF WORD sCLEAR THE WORLD sRESET SECOND COUNT sRESET THE INTERVAL COUNT :CLEAR PSW « 3 &3 0—; gsseg PC,STKINT : 801328 1$: 001466 000002 801520 001336 002056 005024 F 14 #STACK, SP Felics RS wmwaawflwfl NSV N =8 NN =NNV W o A =2 NNO WNON SO - g 333aaer225525930 28 &H sz o~ 3 gsRgassesszessss Y UBNRURUN NS Saown RRRRRR RRRRRRRAGSS o ] RO V04.00 14~JAN-82 15:16:58 PAGE 51-1 $ INTRVL+2,#2 §: 13 #400, CHGADR #ORDERQ,RS (RS)+ LKADR,RS 3 SIZMEM SEQ 0174 sSETUP STACK POINTER sMAKE SURE KEYBOARD INTERRUPT AND sSYSTEM CLOCK ARE STILL ON. sCLEAR THE *"CONTROL C' FLAG sANY DRIVES ASSIGNED ? :BR_IF NO sTYPE 'WAITING 2 MINUTES...TO START' sCONTROL C INTERRUPT ? :BR IF YES :TWO MINUTES YET ? SWAIT IF NOT sFUDGE 200 START sCLEAR UP THE QUE AND BUFFER sALL DONE ? sBRANCH IF NOT :LOOP BACK CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 52 G 14 SEQ 0175 TRAP DECODER .SBTTL 1 TRAP DECODER tttt'.tQtt"...fit'.t".."'t"..ttlt..t.t.tl'.tlt'fi..'t.".t't' tTHIS ROUTINE WILL PICKUP THE LOWER BYTE OF THE ‘‘TRAP'' INSTRUCTION s*AND USE IT TO INDEX THROUGH THE TRAP TABLE FOR THE STARTING ADDRESS ;%OF THE DESIRED ROUTINE. THEN USING THE ADDRESS OBTAINED IT WILL :*GO TO THAT ROUTINE. 040060 010046 040062 040066 040078 040072 040074 040100 016600 000002 005740 111%8 )6 016000 040114 STRAP: 000200 MOV RO,=(SP) ::SAVE RO RTS RO ::6G0 TO ROUTINE MoV TST Mov8e ASL MOV Z(SP) RO (RO) (RO).RO RO STRPAD(RO) .RC ..GET TRAP ADDRESS ; sBACKUP BY 2 ..GET RIGHT BYTE OF TRAP POSITION FOR INDEXING ..INDEX TO TABLE ;:THIS IS USE TO HANDLE THE '‘GETPRI'' MACRO 040102 011646 $STRAP2: MOV 000002 RTI 040106 016666 000004 000002 040112 MOV .SBTTL (SP) ,=(SP) 4(SPJ,2(SP) ::MOVE THE PC DOWN $3MOVE THE PSW DOWN *SRESTORE THE PSW TRAP TABLE 'THIS TABLE CONTAINS THE STARTING ADDRESSES OF THE ROUTINES CALLED ;*BY THE "‘TRAP'' INSTRUCTION. ROUTINE 040114 040102 040116 035550 040120 036130 040122 036104 040126 036144 040126 036332 TRAP+1(104401) STYPOS ::CALL=TYPOS STYPON ::CALL=TYPON STYPDS. ::CALL=TYPDS TRAP+2(104402) TRAP+3(104403) TRAP+4(104404) TRAP+5(104405) TYPE OCTAL NUMBER (WITH LEADING ZEROS) TYPE OCTAL NUMBER (NO LEADING ZEROS) TYPE OCTAL NUMBER (AS PER LAST CALL) TYPE DECIMAL NUMBER (WITH SIGN) TTY TYPEOUT ROUTINE 033716 $GTSWR ::CALL=GTSWR TRAP+6(104406) GET SOFT-SWR SETTING 040132 033626 $SCKSWR ::CALL=CKSWR TRAP+7(104407) TEST FOR CHANGE IN SOFT=SWR 040130 0401346 034170 040136 0342 040140 037126 % $TRPAD: .WORD STRAP2 ;:CALL=TYPE $TYPE $STYPOC ::CALL=TYPOC 040142 037164 040144 032716 000032 $SRDCHR ..uu.uaocun ::CALL=ROLIN SROLIN $SAVREG ..CALL'SAVREG SRESREG ::CALL=RESREG $DSPLY ::CALL=DISPLY $TERM=.-$TRPAD TRAP+10(104410) TTY TYPEIN CHARACTER ROUTINE TRAP+11(104411) TTY TYPEIN STRING ROUTINE TRAP01§(10“1§) SAVE RO-RS ROUTINE TRAP+13(104413) RESTORE RO-RS ROUTINE TRAP+14(104414) ROUTINE TO TYPE ERROR MESSAGES H 146 SEQ 0176 TRAP TABL 7 37 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 8 .SBTTL 1 g :DIGITALeouxm;nr CORP. *MAYNARD :COPYRIGHT (C) 1979,1981 Aumoa(§>CHUCK MESS 4 *REVISED BY: mxe LEAVITT 7 3 't'.ttt'tfittt.t..tt't't't'ltt'tt't.tltttt.'ttttt.'t.'ttt'.tt.tt' 333 ; STORAGE ;genmsos. %1 AND RMER2 ON AN ERROR ‘72" *RMERRS+2 = RMER1 *RMERRS+4 = RMER2 %0 21 é 040146 000000 000000 000000 RMERRS: .WORD 0,0.0 : TABLE orbocncre “}}"E,}'J‘é'ffi’?"‘e"’""‘"g' BYTES) 22 23 50 040154 53 040155 040156 040157 040160 040161 omg H 04016 .BYTE .BYTE BYTE BYTE BYTE "BYTE "BYTE 000 000 000 000 000 000 . 57 gg 60 0401 63 060165 0401 04019 000 000 000 000 04017 = 04017 000 000 833 8 0 0 0 8 *DRIVE 1 *DRIVE ; *DRIVE :DRIVE & :DRIVE S :DRIVE *DRIVE :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 :DRIVE 0 DRVSTA: .BYTE 1 SDRIVE .BYTE ; *DRIVE -BYTE *DRIVE BYTE 0 .BYTE .BYTE .BYTE .BYTE 8 8 *DRIVE & *DRIVE S :DRIVE 9 :DRIVE ;TABLE OF mvs TYPES (DRVTYP=8 BYTES) VIYP=0 IF DRIVE IS nousxxsrsur (DRVSTA=0, ALSO) €5 69 oamp 1 IF DRIVE 'g *DRVTYP==1 IF NOT R 6 68 70 *DRVACT<0 IF DRIVE IS ACTIVE WITH AN ERROR RECOVERY OPERATION 0 :DRIVE DRVACT: .BYTE 0 000 000 55 56 040170 040171 IF DRIVE IS ACTIVE WITH A COMMAND *DRVACT>0 47 s 0401 040174 &0 000 e "BYTE 38 DRVTYP: .BYTE BRIV 1§ *DRIVE :DRIVE weo CZRNAAO ngao PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 53 040 040201 040508 SEQ 0177 0. .BYTE .BYTE .BYTE .BYTE §388 SINGLEIDUAL PORT RH70/RM8 14 8 sDRIVE & sDRIVE 5 sDRIVE 9 sDRIVE s TABLE OF DUAL PORT INITIALIZATION INDICATORS NT=0 IF INITIALIZATION IS NOT ACTIVE ON THE DRIVE §8888888 DPINT(O IF INITIALIZATION IS IN PROGRESS DPINT: .BYTE .BYTE BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 0 0 0 0 0 0 0 0 :DRIVE 0 sPRIVE 1 sDRIVE g sDRIVE :DRIVE & sDRIVE 5 sDRIVE sDRIVE sTABLE OF PENDING DUAL PORT REQUESTS ;DPRQS=0 IF THAT A DUAL PORT REQUEST IS NOT PENDING FOR THAT DRIVE :DPRQS<0 IF THAT A DUAL PORT REQUEST IS PENDING FOR THAT DRIVE 000 000 000 000 000 000 000 000 DPRQS: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE BYTE .BYTE 0 0 0 0 0 0 0 0 sDRIVE 0 :DRIVE 1 :DRIVE i :DRIVE ;DRIVE & :DRIVE 5 sDRIVE 6 sDRIVE 7 sORIVE REQUEST QUE WORDS 000000 000000 000000 000000 000000 O 0 0 0 0 0 0 0 :DRIVE 0 sDRIVE 1 sDRIVE § sDRIVE :DRIVE & DRIVE 5 :DRIVE 9 sDRIVE :"DPB'* OF THE 1/0 OPERATION. 040244 000000 TRNSWT: .WORD O sSEARCH WAIT KEYS (SRCHWT=1 WORD) sTHIS IS A ONE WORD QUEUE THAT WILL CONTAIN A KEY FOR EACH OF :THE DRIVES THAT ARE PERFORMING A SEARCH COMMAND FOR THE 1/0 ;REQUEST THAT IS AT THE TOP OF THEIR REQUEST QUEUE EACH DRIVE IS ASSIGNED ONE BIT, STARTING AT BITOO FOR DRIVE 0. o 3 3 D d d cd b d e wmd =D e b b .WORD WORD WORD WORD WORD WORD .WORD WORD s TRANSFER WAIT FI.AG (TRNSUT 1 WORD) sTHIS IS A ONE WORD QUEUE. IT WILL CONTAIN THE ADDRESS OF ) —d =D RanIS3ESR0RERS8, QDRV: 000300 SRCHWT: .WORD O sRM DRIVER ACTIVE FLAG (ACTDRV=1 BYTE) we CZRNAAO RMB0 PERF EXRMROVO‘OO 2 15:16:58 PAGE 53-1 wne —d RNAAO RMB0 PERF EXER MACROV04.00 14am-& 15:16:58 PAGE 53-2 J 14 SEQ 0178 NGLE/DUAL PORT RH70/RM80 DRIVER (REV IF DRIVER ACTDRV—8 DRIVER sACTDRV> 115 “g Hs 040250 SOFTHARE TIHER ROUTINE ACTIVE FLAG (ACTSTR-1 BYTE) =0 IF SOFTWARE TIMER ROUTINE IS INAC IVE 120 121 ACTSTR>0 IF SOFTWARE TIMER ROUTINE IS ACTIVE }%% }%g 040251 ;SAVE REGISTERS FLAG (SAVEFG =1 WOR sSAVEFG <0 IF SAVE THE RH/RH REGISTERS WHEN THE ;OPERATION IS COMPLETED AS PER (DPB+14). ;SAVEFG=0 IF SAVE THE RH/RM REGISTERS, AS PER 128 129 :(DPB+14), AFTER AN ERROR. B? s SEEK FLAG (SEEKFG-l WORD) FG=0 IF WHEN THE DISK ADDRESS ISN'T IN THE WINDOW 135 FOR A DATA TRANSFER START A SEARCH COMMAND ;SEEKFG<O IF DATA TRANSFER WILL DO IMPLIED SEEKS, :DISREGARD THE WINDOW 136 137 }gg SEEKFG: .WORD 177777 177777 177777 177777 177777 177777 177777 177777 TIMER: WORD WORD WORD -1 sDRIVE 0 sDRIVE 1 :DRIVE g :DRIVE :DRIVE & :DRIVE 5 :DRIVE :DRIVE UW<0 IF NO DATA TRANSFER UNDER 151 DTWNN (WHERE N=0 TO 7) IMPLIES DATA TRANSFER UNDERWAY ON DRIVE N }gg DTUW: 177777 159 .WORD =1 ATTENT]M BITS TABLE (ATABIT=8 BYTES) THIS TABLE CONTAINS THE CORRESPONDING BIT TO EACH DRIVES 15 }gg SATTENTION BIT 001 002 004 ATABIT: .BYTE 1,2,4,10,20,40,100,200 ;STORAGE FOR RMADR (THE FIRST ADDRESS (776700) OF THE RH70/RM80) 16% *RMVEC (THE VECTOR ADDRESS (254)), AND RMVEC+2 (THE BR LEVEL (5)5. }2‘ 165 040310 166 040312 168 040316 =1 -1 -1 -1 -1 -1 -1 sDATA TRANSFER UNDERWAY INDICATOR (DTW’1 UORD) 150 }g? 040300 .WORD WORD WORD WORD LWORD 19 040274 177777 }glso 060276 =1 sTIMEOUT TABLE (TIMER=8 WORDS) sTHIS TABLE CONTAINS THE TIME ALLOWED FOR AN OPERATION 14% }24 145 040256 148 040260 040262 040264 060266 040270 040272 0 SAVEFG: .WORD 000000 134 }2? 0460254 0 ACTSTR: .BYTE 000 126 127 }g% 040252 0 ACTDRV: .BYTE 000 IS INACTIVE IS ACTIVE 176700 888556 000240 50 RMADR : RMVEC: RHEXT: UMD 176700 isa5232, ;OFFSET TO RMBAE INGLE/DUAL PORT RH70/RM80 DRIVER (REV 170 ‘%;‘l };% 040320 000005 };g 177 000000 199 000052 S 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 198 000002 000004 000006 000010 000012 000014 000016 000020 000022 000024 000026 000030 000032 34 000036 0 000042 000044 6 50 K 14 SEQ 0179 0.17) ;SEARCH DIFFERENCE IS 5 FIVE SECTORS MXWNDW: .WORD 5 ;DEFINITIONS OF THE RH70/RM80 ADDRESS INDEXES RMCS1T =0 sCONTROL AND STATUS REGISTER #1 (DRIVE REG. 0) RMCS = 52 sCONTROL AND STATUS REGISTER #3 RMWC RMBA A RMCS2 S RMERT S RMLA RMDB RMMRT RMDT RMSN RMOF RMDC RMHR RMMR2 RMER2 RMEC1 RMEC2 RMBA =2 =4 =6 =10 =12 = 14 =16 = 20 = 22 = 24 = 26 = 30 = 32 = 34 = 36 = 40 = 42 = 44 = 46 = 50 :WORD COUNT REGISTER (NOT A DRIVE REG) :UNIBUS ADDRESS REGISTER (NOT A DRIVE REG) :DESIRED TRK/SEC ADDRESS REGISTER (DRIVE REG. 5) ;CONTROL AND STATUS REGISTER #2 (NOT A DRIVE REG) ;DRIVE STATUS REGISTER (DRIVE REG 1) :ERROR REGISTER #1 (DRIVE REG. 2) ;ATTENTION SUMMARY PSEUDO REGISTER (DRIVE REG. 4) :LOOK AHEAD REGISTER (DRIVE REG. 7) :DATA BUFFER REGISTER (NOT A DRIVE REG.) :MAINTAINABILITY REGISTER #1 (DRIVE REG. 3) :DRIVE TYPE REGISTER (DRIVE REG. 6) ;SERIAL NUMBER REGISTER (DRIVE REG. 10) ;OFFSET REGISTER (DRIVE REG. 11) ?ESIRED CYLINDER ADDRESS REGISTER (DRIVE REG. 12) :"HOLDING REGISTER'' (DRIVE REG. 13) ;MAINTENANCE REGISTER #2 (DRIVE REG. 14) :ERROR REGISTER #2 (DRIVE REG. 15) ;ECC POSITION REGISTER (DRIVE REG. 16) :ECC PATTERN REGISTER (DRIVE REG. 17) :BUS ADDRESS EXTENTION REGISTER wo weo ZRNAAO RMB0O PERF EXER MACRO V04.00 146"‘-82 15:16:58 PAGE 53-3 SEQ 0180 NO NS W) - T RH70/RM80 DRIVER (REV 0.17) RH?O/RHBO DRIVER INITIALIZATION CODE THIS ROUTINE WILL DETERMINE WHICH RM80 DRIVES ARE ; : ;AVAILABLE FOR TESTING AND SET THE DRVSTA INDICATOR :TO_THE PROPER STATE FOR EACH DRIVE. :NOTE: THIS ROUTINE CALLS DRVINT D b $CALL: b oo= T W 18: MOV MOV JSR MOV MOV CLR 28: BLOS MOV MOV CMP CMP CLR BLOS NS ~N =1 N CLR CLR CLR MOV a#Ps,=(SP) #<5+32.>,3#PS PC, CLRQUE #RMERRS ,R1 #SEEKFG.R2 (R1)+ R1.R2 18 #DTUW,R2 #-1,(R1)+ R1.R2 2% DRVSTA *SAVE THE PRESENT PROCESSOR STATUS :CHANGE THE PRIORITY TO 5 *CLEAR ALL REQUEST QUEUES *FIRST ADDRESS TO BE CLEARED *LAST ADDRESS TO BE CLEARED :CLEAR *ARE WE DONE? *BRANCH IF NO *LAST ADDRESS SINITIALIZE .oons LOOP IF NO :ser ALL DRIVES TO OFFLINE :SETUP THE RH70/RM80 VECTOR BIC #°C7.R1 :FIRST ADDRESS OF RH70/RM80 :MASSBUS INIT *START WITH DRIVE 0 SINIT THE DRIVE S'DVA* NOT SET *NORMAL RETURN *SET DRIVE STATUS TO OFFLINE :GO TO NEXT DRIVE *MASK OUT UNUSED BITS CLR aNPs CLEAR THE PROCESSOR STATUS BEQ JSR 13 PC,SET.IE “BR NOT WAITING *SET INTERRUPT BNE 78 :BR IF 040534 W O— 38: 48: 5%: 68: —h S} b N b b () b N b g g— e #ISR, (R3)+ RMVEC+2, (R3) , R% RMADR #40,RMCS2(R4) R1 RO,DRVINT 43 5% DRVSTA(R1) SEResseRass HINR MOV MOV MOV MOV CLR JSR BR BR CLRB - DRVSTA+2 DRVSTA+4 DRVSTA+6 RMVEC ,R3 = RS RO ;SAVE b N D ) = NN QO pur gy b o 2888 2888 N =)W pa—ry ey -t D b RMINIT: SAVREG oOoMMNING ) D and 177776 000240 045300 e cnd VO NO WV — e PC,RMINIT *NOTE: THE 'P' OR ‘L' CLOCK MUST BE STARTED 04 VIV SN N NOWVIS WOV JSR RE TURN 78: 8s: 177776 INC R1 BNE MOV 38 #7.R1 TSTB DPINT(R1) TSTB DPINT(R1) DEC R1 6$ BPL (SP)+,aNPS MOV RESREG PC RTS ;DRIVE INITILIZATION ROUTINE *BR IF MORE DRIVES TO GO *START WITH DRIVE 7 WAITING ron DRIVE TO SWITCH PORTS ? oaxvs suxtcneo PORTS ? 260 TO rne NEXT DRIVE *CHECK NEXT DRIVE “RESTORE THE PROCESSOR STATUS = RS *RESTORE RO ‘BYE-BYE wo L1 = OV 8 RF_EXER MACRO v04.00 14-JAN-82 15:16:58 PAGE 54 az 15:16:58 PAGE 54=1 CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN= SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 58 59 60 61 2% : : : : 64 65 66 67 il : gg 70 71 040534 72 040536 73 040542 74 040546 75 040552 76 040560 77 040566 78 040570 79 040574 80 040576 81 040602 82 040610 83 040612 040616 84 040622 85 040624 86 040632 87 040636 040640 010546 105061 105061 010164 112764 032764 001403 004737 000476 105061 032764 001470 004037 040164 040174 000010 000111 000000 010000 000010 *DRVSTA IS SET #DRVNUM,R1 MOV , R% RMADR MOV RO,DRVINT JSR RETURN1 RETURN2 BEQ JSR 4$ RO,RD.RM :BR IF DRIVE NOT AVAILABLE *CALL THE READ ROUTINE e 004000 000000 044670 MOVB 001404 112761 46 91 040654 92 040656 012746 000121 044750 037 93 040662 04 040670 040774 040672 012746 010000 037 044750 95 0460676 32 040702 040704 96 0407 040774 037 040736 101 040740 040774 006126 102 040742 100004 103 040744 112761 104 040752 000407 044670 177777 BEQ 28: 000012 040774 012605 100015 116164 040300 000016 004037 044670 000014 040164 *NORMAL RETURN :SAVE RS 177777 040174 89 040644 R1 :DRIVE NUMBER TO *UNIBUS ADDRESS OF RH70/RM80 (RMCS1) *CALLED BY A JSR *ERROR OCCURRED (°NED*) RS,=(SP) CLRB CLRB MOV MOvB BIT BEQ JSR B8R CLRB BIT RMDT 58 MOV move CMP BEQ CMP 040774 040712 040714 97 040716 98 040720 6> 040722 100 040730 040734 21S SET T0 A """, men noL, pPRDRY, AND VV ARE CHECKED TO *INSURE THEY ARETOALL ONA "', AND DEPENDING ON THEIR STATE, THE PROPER conomon. DRVINT: MOV 045226 040164 SEQ 0181 :THIS ROUTINE osrennmss IF A DRIVE EXIST AND IF IT IS ANRM80. IF IT IS, A 'READ-IN PRESET'‘ IS ISSUED AND FMT16 000026 012605 112761 000001 040174 022705 020026 001407 022705 024026 040620 040646 v m 14 BR MOV JSR RMCS1 58 MOV JSR RMOF “START DRIVE STATUS AS OFFLINE DRVSTA(R1) *CLEAR THE DRIVE TYPE INDICATOR DRVTYP(R1) :SELECT A DRIVE R1.RMCS2(R4) #1711.RMCS1(R4) :DO A DRIVE CLEAR COMMAND (& SEIZE DRIVE) #8IT12,RMCS2(R4)" :NONEXISTENT DRIVE? £ NO---BR.A.NC" 1$ 260 SET "'IE'* WITHOUT A “'TRE PC,SET.IE *LEAVE THIS ROUTINE 4 *SET DRIVE STATUS TO OFFLINE DRVSTA(R1) #8IT11,RMCS1(R4)" ;SEE IF DRIVE AVAILABLE (SP)+,RS #1 onvrmm #20026 2 #24026,RS aesxsm OFFSET 'NED' RETURN ‘PUT DRIVE TYPE IN RS *SET RM80 INDICATOR :IS IT A SINGLE PORT RM80? *BRANCH IF YES *IS IT A DUAL PORT RM80? #-1,DRVTYP(R1) :SET INDICATOR TO °OTHER® 28 48 #121,-(SP) RO,WRT.RM #8IT12,=(SP) RO,WRT .RM *BR IF YES P EXIT PRESET DO A 'READ-IN *CALL THE WRITE ROUTINE necxsrsa OFFSET 'NED' RETURN SET FMT16=1 *CALL THE WRITE ROUTINE nesxsren OFFSET 58 JSR RO,RD.RM *'NED® RETURN *CALL THE READ ROUTINE 5% ROL (SP)+ **NED' RETURN $1S IT UNSAFE? RMDS 5% MOV BPL MOVB JSR RMER1 BPL MOVB B8R aecxsren OFFSET 'NED' RETURN SAVE IT IN RS AND RS (sm IF ATA=0 *BRANCH 3$ ATTENTION BIT ;CLEAR ,RMAS(R4) ATABIT(R1) ROUTINE READ THE :CALL RO,RD.RM :REGISTER OFFSET *BR IF NOT 3$ #-1.DRVSTA(R1) :SET UNSAFE INDICATOR SEXIT 4 S VIO =N\ PERF EXER MACRO V04.00 14~ sAN-BZ 15:16:58 PAGE 54-2 DUAL PORT RH70/RM80 DRIVER (REV 17) 38: 167077 000001 040164 48: 5$: COM RS N 14 SEQ@ 0182 5; 5 DPR DRY, AND WV BIC BNE MOVB c~c<amz'enoa'bn 'sn& I ;BRANCH IF DPR, DRY #1,DRVSTA(R1) :SET DRIVE sufus TO ON iOR VV IS CLEAR MOV RTS (SP)+,RS RO ST (RO) + :STEP OVER THE ERROR nsruan *RESTORE RS JEXIT SEQ 0183 ;REQUEST PRE-PROCESSOR-HANDLES SUBSYSTEM REQUEST 1 sCALL: g 5 : JSR g : RE TURN2 PNTADR RETURN1 : : ‘ 7 10 11 041000 013746 15 041022 011002 ' 177776 040314 177776 12 041004 013737 041012 112737 000001 040250 13 1% 041020 104412 RM80: 17 041030 18 041032 19 041036 20 041042 21 041046 22 041050 23 041052 24 041056 25 041060 26 041064 o7 041063 28 041072 29 041074 111201 013704 105761 003011 105761 001027 004037 000421 105761 003432 105761 001016 010164 040310 040164 040204 040534 040164 1$: 040214 000010 30 041100 004037 045344 31 041106 000445 gz 041103 105761 3 041112 3% 041114 35 041120 36 041122 37 041126 38 041130 001037 004737 000434 004737 000431 004037 %0 041136 41 041142 ag 041144 032714 001023 004737 000100 4 041152 105761 040164 39 041134 000431 041150 45 041156 46 041160 47 041193 48 0411 49 0461174 ;o 041202 20 00 415 012762 041236 042334 38: 045344 48: 045226 58: 105761 140000 040174 000016 1276§ 0 100002 000016 110000 000016 1007 1 0641204 01 76; 53 041214 oosrso 55 0641220 56 04152 57 041226 104413 oosrgo 52 041212 10441 5% 041216 28: 040154 000401 105037 040250 $: 8s: 98: sCALL THE RM80 DRIVER ;ADDRESS OF POINTER OF DRIVES PARAMETER BLOCK :RETURN HERE IF QUEUE IS :RETURN HERE IF REQUEST IS IN QUEUE OR THERE ;1S AN ERROR CONDITION aNPs,=(SP) RMVEC+2,a#P$S ;SAVE THE CALLING STATUS :DON'T ALLOW ANY RMBO INTERRUPTS gfi TE“A(C) TIVSSDRIVER FLAG MOV <no> R2 ;PICKUP THEDRIVE PARAMETER BLOCK POINTER MOVB MOV TSTB BGT TSTB BNE JSR BR TSTB BLE TST8 BNE MOV nz) R1 RMADR , R4 LRVSTA(R1) 18 DPINT(R1) 4$ RO,DRVINT 3s DRVSTA(R1) 5$ DPRGS(R1) 4 R1,RMCS2(R4) TSTB DRVACT(R1) MOV ll.ACTDRv MOVB SAVREG JSR BR 6(R2) RO DRVOUE 8s’ BNE JSR BR JSR BR JSR 78 PC,OPT 78 PC.CI8 78 RO,DRVQUE BIT BNE JSR #8IT06, (R4) 78 PC,SET.IE TSTB DRVSTA(R1) B8R B8R 8s CLEAR THE STATUE/ERROERINDICATOR CHECK DRIVES STATUS :BRANCH IF ONLINE sTRYING TO INIT THE DRIVE :BR IF YES :GO INIT. THE DRIVE :ERROR RETURN :1S DRIVE STATUS ONLINE? :BR_IF NOT OUTSTANgING PORT REQUEST FOR THE DRIVE ? :BR IF YES :SELECT THE DRIVE :PUT THIS REOUEST IN QUEUE :QUEUE IS F ;1S THIS DRIVE ACTIVE? :BR IF YES sCALL THE OPTIMIZER ;GO HANDLE THE °NED’ :PUT REQUEST IN QUEUE :QUEUVE IS FULL (1S HIE| SET ALREADY 2 :BR_IF sSET INTERRUPT ;RETURN, REQUEST IN QUEUE :SEE _IF DRIVE OFFLINE OR UNSAFE BR IF UNSAFE SET OFFLINE ERROR INDICATOR BIT14, 16(k2> #BIT15! DRVTYP(R1) BLT MOV 6$ BNE ERIIPORT DRIVE NONEXISTENT oaxr1szaxro1.1e(hg§ GO T 78 :DRIVE gS UNSAFE #BIT15!B1T12, 16(&3) ;REST ORE RO - TSTB 9:: RO,RM80 MOV CLR 16 041026 005062 000016 43 B 15 MOV BR MOV RESREG ST BR RESREG ST CLRB 7 (RO)+ ;S 6FLINE OR NONEXISTENT xr 0 LINE ;SETUP FOR NORHAL RETURN 98 THEN EXIT UP6 FINISH (RO)+ CORRECT THE RETL : ;CLEAR “ACTIVE PRIvL ACTDRV 'r\LSS FLAG rry. v..3 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 55 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) DRIVER (REV QR SRS e 60 000 110 111 112 0414 041474 041500 &S =2NNW REoSE SR pury NN NS Sx8288Bor T sy v 000100 000000 2s 000012 1$: 040164 2$: 040164 000016 110000 000016 000150 000002 4$: §§§ S #111,=(SP) RO,WRT.RM 040214 035230 040256 :SAVE, PROC. STATUS *GET 'DPB'* POINTER OF REQUEST :BRANCH IF NOT :IS VV SET ? IF IT IS *BR “SEE IF DRIVE STILL ONLINE ? S'DVA' NOT SET :1S DRIVE ONLINE? *YES==-BRANCH *NO--REMOVE REQUEST FROM QUEUE -SET OFFLINE STATUS/ERROR INDICATOR SLOAD COMMAND ONTO THE STACK *CALL THE WRITE ROUTINE *REGISTER OFFSET S*NED' RETURN *DRIVE AVAILABLE ? 78 #150,2(R2) 4 :BR IF NOT :1S THE REQUEST FOR 1/0? *YES=-BRANCH 10$ *BRANCH TO EXIT SCALL THE COMMAND INITIATOR DTUW 5% *DATA TRANSFER UNDERWAY? *YES==GO START A SEARCH 5% :IF 13 :1F PL DO A SEARCH SEEKFG 177777 :SAVE RO - RS ATABIT(R1), SRCHWT 040246 047650 SSETUP A COMMAND :1S DRIVE UNSAFE ? :BR TO EXIT IF NOT 10$ SET UNSAFE STATUS/ERROR INDICATOR #BIT15!81T12,16(R2) 108 :BRAN cH T0 EXIT PC,CI4 040254 334 100 #BIT6,RMDS(RG) 28 RO,DRVINT 13 DRVSTA(R1) 38 PC,POPQUE #B8IT11, (R4) 040246 :DRIVE NUMBER TO R1 DRVSTA(R1) 3s: 040276 040300 041516 sRETURN TO CALLER #8iT15!811T14,16(R2) 041756 040300 sRETURN ‘'PS’'' TO USER LEVEL R *1S THERE A REQUEST IN QUEUE? *NO=--BRANCH TO EXIT 9% IS DVA SET? #BIT11,RMCS1(R&) 040534 045400 aNPs,=(SP) Ps.sérneu 004000 SIS~N N S NNWNWN—=ONW 8e s S 0414 109 177776 045366 5 3 g 103 04144 106 041444 105 041446 0PT: 000111 044750 253 10§ 821438 #DRVNUM,R1 PC,OPT Y [T 78 041302 79 041306 80 041310 81 041314 82 041322 83 0613%8 84 0413 85 041336 86 041340 87 041344 04135g 06135 88 041354 89 041360 90 041365 91 04137 9% 061372 93 041376 94 041400 95 041404 96 041406 97 061414 98 041613 99 8214 CALL: —_— it 7 7 041%00 (SP)+,a#PS RO ;OPTIMIZER-CALLED FOR A PARTICULAR DRIVE & 004000 SEQ 0184 A7) MoV RTS 21 64 65 66 67 041238 68 04124 69 041244 70 041250 71 041252 7% 041254 73 041262 76 041264 15 NE, ;FINISHED A SEARCH ? YES :D0 IMPLIED SEEKS? ATABIT(R1) ,SRCHWT 73 ¢ :START A'DATA TRANSFER 6$: PC,CI3 :START A SEARCH 7$: #-1,DPRASC(R1) R1.R3 | R? :SET PORT REQUEST INDICATOR *SET UP TO ADDRESS WORDS *CONVERT TO WORD INDEX 10§ :GO TO THE EXIT g}sooo..rlnen(asi " 98 :START 15 SECOND TIMER PC.CI8 :PROCESS THE 'NED' 108 *BR IF SET ogiros.(n4> = sCLEAR ‘‘SEARCH WAIT'* KEY 5$: “SEE IF 'IE' ALREADY SET r7. Yo ) om DUAL PORT RH70/RM8 wwv woe z% < RM80 PERF EXER MACRO V04.00 14-$AN-82 15:16:58 PAGE 55-1 NGLE/DUAL PORT RH70/RM80 041502 737 H? 041514 000207 113 045226 sCALL: 150 ; : E 121 125 12 3 s 3 ; 124 125 126 127 128 PC,SET.IE (SP)+,3#PS MOV RESREG ;SET '"IE'* WITHOUT A °‘TRE'' sRESTORE PROC. STATUS sRESTORE RO = RS MOV MOV JSR #DRVNUM,R1 #DPB,R2 PC.Ci? :DRIVE NUMBER ;ADDRESS OF DPB :aa?; CI1,CI3, OR Cl4 JWHERE : :CI1=DATA TRANSFER :CI12=SEARCH REQUESTED BY DATA XFER :CI14=NOT DATA TRANSFER ;START A DATA TRANSFER }gg 131 041516 132 041522 133 041526 134 041530 135 041534 136 041540 137 041544 138 041550 139 041552 140 041554 141 041556 041562 041564 004737 010237 045400 040244 012346 004037 MOV JSR RMDA CI8 0423 004037 044750 041576 144 041600 041604 042334 004037 000032 044670 146 041614 004037 044750 041622 042334 000034 MOV 147 0616%16 148 061630 041634 041636 149 041640 }g? 041644 000032 (R3)+,=(SP) RO,RD.RM RMOF CI8 MOV JSR RMCS1 cI8 MOV JMP 5334 (R3)+,=(SP) RO,WRT.RM cI8 - JSR RMOF JSR 010137 040;76 000137 042312 .R3 , 4 RMADR R1,RMCS2(R&) #6.R3 #2.R% (R$)+, (RG)+ (R3)+, (R4)+ RO,WRT.RM CI8 BIC 016249 000002 004037 044750 PC,POPQUE R2. TRNSWT JSR RMDC 041606 045334 145 051610 04 719 001 041620 JSR MOV MOV MOV MOV ADD ADD MOV MOV 044750 041570 041574 CI1: 010203 013704 040310 010164 000010 oegros 000004 062704 00000 012324 012324 14§ 041566 oml.g 143 108: JSR :COMMAND INITIATOR ' Hg SEQ 0185 DRIVER (REV 0.17) 177;;6 8?36%7 11% 3215 104413 041512 115 D15 #B1T09, (SP) RO,WRT .RM 2(R2) ,~(SP) RO,WRT.RM R1,DTUW c1§ ;REMOVE REQUEST FROM ‘DRIVES WAIT'' QUEUE sPUT REQ. IN ;gAggFER WAIT QUEUE sSELECT DRIVE sDESIRED WORD COUNT sRMWC ADDRESS :LOAD WORD COUNT :LOAD BUFFER ADDRESS sLOAD SECTOR AND TRACK sCALL THE WRITE ROUTINE sREGISTER OFFSET ; "NED* RET URN sLOAD CYLINDER ADDRESS sCALL THE WRITE ROUTINE sREGISTER OFFSET s 'NED' RETURN sCALL THE READ ROUTINE sREGISTER OFFSET s "NED' RET RETURN :'NED® :CLEAR_*SKIP SECTOR ERROR INHIBIT® :CALL THE WRITE ROUTINE :REGISTER OFFSET .'NED..RETW " AND . ‘PSELL) o0 L)*'A178A16', :LOAD ‘COMMAND+GO'', :CALL THE WRITE ROUTINE :REGISTER OFFSET s'NED' RETURN sSET "DATA TRANSFER UNDERWAY'' :START A SEARCH }gg 154 041650 013704 040310 155 041654 010164 000010 15 156 341660 o1624.9 157 mgl. 00403 475 34 041670 041672 0462334 CI3: MOV MOV MOV JSR RMDC CI8 R.R& R1,RMCS2(R4) 15(&2).-(5?) RO, WRT.RM sRMCS1_ADDRESS sSELECT DRIVE ;DESIRED CYLINDER ADDRESS sCALL THE WRITE ROUTINE sREGISTER OFFSET s "NED* RETURN 4wy we — RNAAO RM80 PERF EXER MACRO V04.00 14=JAN=82 15:16:58 PAGE 55-2 i PERF EXER MACRO VO0&. 00 14-6"4-82 15:16:58 PAGE 55-3 NNNNNNO RRRRRRRRRRRRRRR NERSN N &m POR T RH70/RM80 DRIVER (REV 1$: N = LV SEQ 0186 0.17) Move Sus BGE 10(R2) ,R n&mou.a :PICKUP SECTOR ADDRESS *BACKUP BY MAX. SEARCH FOR 1/0 WINDOW MOV R3,=(SP) ;COMBINE THE ADJUSTED SECTOR WITH 11(R2),1(SP) RO,WRT.RM #131,=(SP) RO,WRT.RM :THE DESIRED TRACK *CALL THE WRITE ROUTINE *REGISTER OFFSET *'NED' RETURN *START A SEARCH :CALL THE WRITE RGUTINE *REGISTER OFFSET SO :'NED' e};amm.sacmi wv ~ NNNN &% ) E 15 RETURN sSET *'SEARCH WAIT'' KEY —=NOOW MOV 2(R2) R 1$ 10(R2) ,=(SP) 0 M o SRSnaraRR ] " — BN Nt ee 223SSpa RN o . 28 ;1 05.R3 1$: CMPB 2$: MOV $ 12(R2) ,=(SP) JWRT, 3s: CMP8 148 #115,R3 133 RO,RD.RM O N OON SN8 e z;rwzaa§§§§§§§az g .- , R4 RMADR R1 .RHCS;(R&) #131,R3 ~ o W N = = pr——t-) =2 Clé: R - Y R ek med aed D ead et eed o h b el b g 33SR8S8sg - P e e ~ ~ 23828 o8 i SR283I LKA RRRRRPRPRRLRR RRRRRPRRRR RRRRRRRRRRRRR RRR NLSS UV LR TN LN S UY -.-.:-.-. NNNB SO WNINOND) = b =2 ONNQ & SNONSNO SRS3 ;INITIATE A NON=1/0 OPERATION 1(R2), (SP) RO,WRT.RM 4S: 5$: CMPB CMPB 148 #107 ,R3 58 -(SP) RO,WRT.RM 148 #143,R3 6$ RO,RD.RM sRMCS1_ADDRESS sSELECT DRIVE sPICKUP THE REQUESTED COMMAND IS IT A gE%CH COMMAND? sBRANCH I :LOAD DESIRED TRACK & SECTOR sCALL THE WRITE ROUTINE sREGISTER OFFSET :; 'NE 'NED* RETURN :GO LOAD CYLINDER :18 IT A gEEK COMMAND IF NO sBRANCH :LOAD DESIRED CYLINDER sCALL THE WRITE ROUTINE sREGISTER OFFSET :"NED' RETURN ;18 l; AN "OFFSET'' COMMAND? IF_NO ;CALL THE READ ROUTINE sREGISTER OFFSET : 'NED* RETURN :BYTE WHEN LOADING THE REGISTER sCALL THE WRITE ROUTINE sREGISTER OFFSET :"NED* RETURN ;1S IT A "RECALIBRATE'* COMMAND? IF NE, NO :CYLINDER ZERO :CALL THE WRITE_ROUTINE :REGISTER OFFSET :'NED® RETURN 3 CONTINUE, SIS IT A “'SET FORMAT'* :BRANCH IF = COMMAND? g =D SOSUNTNTNTN TN [ m ~ 5 W 2222 RRRRRERR 3 3 FRERCSTY 3 8282828002 5’ 0 000001 nngr D d ek 6$: ) 000141 78: s RRRRR CIACIOr RN 2312 314 gess £LSS 000002 8s: 9%: 042206 108: €00145 118: 044750 W ~ gl 042206 0462206 °§ v~ > SEQ 0187 045400 000 040252 000016 045062 128: 138: 1(R2) ,1(SP) RO,WRT.RM :COMBINE "FMT16'","ECI',"HCI'", § "'SSEI" *CALL THE WRITE ROUTINE necxsrsn OFFSET $'NED® RETURN BR CMP8 BNE MOV MOVB MOVB JSR scv;gn MOV CMP BEQ ADD BR CMPB BEQ MOV JSR RMCS1 c18 JSR BIS ST BPL 128 #141,R3 108 6(R2) ,R3 10(R2).9% 11(R2).RS RO,RD.RM PC ,POPQUE SAVEFG 138 A . COMMAND? *BRANCH IF NO *PGINTS TO 1ST ADDRESS OF WHERE 70 PUT THE REGISTER(S) *INIT. THE INDEX FOR THE FIRST REG. SINDEX OF LAST REG. TO MOVE *READ RM80 REGISTER :INDEX OF REG. TO READ :GET THE CONTENTS OF RH70/RM80 REG. *LAST REG. BEEN READ? :GET OUT IF YES : INCREASE THE INDEX BY 2 :LOOP=-MORE TO READ SIS IT A "'SELECT DRIVE'* COMMAND? *BRANCH IF YES :LOAD THE COMMAND “CALL THE WRITE ROUTINE assxsm OFFSET *NED® RETURN nemve a;o. FROM oueue DONE'* BIT :SET :SAVE me RH70/RM80 REGISTERS? *BRANCH IF NO RTS PC *RETURN TOUSER JSR (SP3+,(R3)+ 9% ,RS 12§ 42,98 8s #145,R3 128 R3,=(SP) RO.WRT.RM #BiT107,16(R2) PC, SVRH70 ;1S IT A "GET REGISTER'* *YES--GO SAVE THE REGISTERS :START A NON-DATA TRANSFER OPERATION 14$: 044750 MOV JSR RMCS1 R3,=(SP) RO.WRT.RM :LOAD THE COMMAND *CALL THE WRITE ROUTINE :REGISTER OFFSET *'NED® RETURN cI8 ;START THE COMMAND TIMER 023420 040256 000001 040154 Cls: ASL R1 ngv :;oooo..nnen(nn MOVB #1.DRVACT(R1) RTS PC :SET A 10 SECOND TIMER ;SET THE DRIVE ACTIVE *RETURN TO THE USER ww 3 SRNSR :PROCESS A NON-EXISTENT DRIVE SRRRRRRR : SRIGHRERISBENERFrUR2 219 042232 c17 042236 218 04%240 219 042242 042566 042250 220 042252 221 042256 222 042264 223 042270 224 042272 225 042276 226 227 228 229 06%300 230 042302 042306 042310 2 F4 000010 000011 044670 o 15 042230 JSR cl ~ e 210 042210 211 042212 212 042214 213 042220 516 042222 F15 DRIVER (REV 0.17) 1 D e 33 — Y" 0 V04.00 14~JAN=82 15:16:58 PAGE 55-4 C18: :SAVE RO- RS 0244 0276 TRNSWT ,R2 ?I.DIUU :DRIVE ACTIVE’ :BRANCH IF_NO s :GET THE "‘TRANSFER WAIT'* QUEUE DID THI? DR%gE HAVE AN 1/0 IN PROGRESS? 045366 PS.GETREO R :GET THE DPB POINTER ;QUEVE ENTRY FOR DRIVE ? 040154 1$: g§VACT(R1) CH CZRNAAO RMBO PERF Exsa MACRO V04 .00 14-5»4-02 15:16:58 PAGE 55-5 SINGLE/DUAL PORT RH7 /anss DRIVER (REV 0.17) 4 0 1 g g‘ %02 406 55 04241 sg 062414 57 042622 MOV 199; 177777 040276 1; %7 o«ggu. 12762 187 1 19999 1 ogt 820154. 040276 020137 6 28: 258 0424 g 004737 045332 38: 226 48: 59 042432 0424 61 042442 63 042446 042450 BEQ ; 8283}6 1050861 105931 004737 10441; 00020 04 194 82 174 MOV 28 5 sa IF NOT 'DRIVE NON-EXISTENT® INDICATOR TIMER ;STOP THESET #B1T15!81T01,16(R2) #-1,TIMER(R3S SEQ 0188 : BNE MOV CLR DRVACT(R1) R1,DTUW 3s #-1,DTUV TRNSWT *SET "DRIVE ACTIVE'' TO IDLE 1S THIS DRIVE SETUP FOR A TRANSFER CLRB CLRB DRVSTA(R1) DRVTYP(R1) *SET DRIVE TO OFFLINE :CLEAR THE DRIVE TYPE INDICATOR SSET "IE*’ unuogr “TRE"’ *RESTORE RO = R CLRB (MP JSR JSR RESREG RTS PC,EMPTYQ PC,SET.IE PC :BR IF NOT SRESET THE INDICATOR *CLEAR THE TRANSFER QUEUE *CLEAR THE DRIVE'S QUEUE *RETURN L=JAN=82 15:16:58 PAGE 56 ZRNAAO RM80O PERF EXER we DRIVs a3.17) INGLE/DUAL PORT 75m& W15 : INTERRUPT SERVICE ROUTINE 1 000001 040250 ISR: 112737 5L 042452 104412 042460 13706 040310 S 04 13701 040276 (A 24 ; 4 o:.;su. 042476 0047 8 9 042500 004737 10 042504 104.4.1; 9 11 042506 }g 042512 105037 000002 18: MOVB #1,ACTDRV MOV BLT JSR JSR RESREG DTUW, fi1 18 PC.TD PC.SC SAVREG RMADR , R4 MOV CLRB 040250 RTI ACTDRV SEQ 0189 DRIVER' FLAG ;SET “ACTIVE RO= RS *SAVE AmgssOF RMCS1 JGET 'DATA TRANSFER UNDERWAY'' INDICATOR *BRANCH IF NO DATA TRANSFER UNDERWAY SCALL TRANSFER DONE *CALL SPECIAL CONDITIONS nesroa; RO - R CLEAR “ACTIVE DRIVER' FLAG *RETURN :TRANSFER DONE ROUTINE }g 19 o:.ssu 17 04 S%O 18 042526 }3 8”4 §§ 105061 012737 oogsm 01 73} 21 042540 013702 2% 0462544 g ot.gsso 4 042556 25 042562 ol.zsge 0462570 26 0462572 27 062574 28 042576 29 0462602 005037 052762 010164 004037 8gogoo 042334 006126 1oo:.§1 005737 1oooo; 040154 177777 040276 177777 040256 0460244 000200 000016 00001 044670 040252 44 0462640 640 004737 045366 00570 00140 004737 041236 oog;w 012714 000113 000207 004037 044670 CLRB MOV ASL gg; MOV 040244 045062 30 042604 004737 043246 004737 gz 042610 3 042616 042620 5 045622 042626 40 ol.zegg A o:.ge g 04 TM: 18: . 2s: 38: TRANSFER WAIT QUEUE=-=CLEAR QUEUE :SET DONE :SELECT THE DRIVE CAI.L THE READ ROUTINE necxsrea OFFSET :*NED' RETURN *1S TRE=1 ? IF YES :BR “SAVE THE RH70/RM80 REGISTERS? *BRANCH IF NO :GET *DPB'* ADDRESS FROM THE JSR ST BEQ JSR RTS MOV RTS ps.serm R 28 PC,OPT PC #113, (R4) PC :GET DPB POINTER :ENTRY FOR DRIVE ? IF NOT :BR :CALL OPTIMIZER JSR RO,.RD.RM :CALL THE READ ROUTINE JSR lcl?gf 4$ RO,RD.RM fneREAD ROUTINE CAL} REG§TER OFFSET JSR JSR 726 001000 704 §§1416 5152 82 04 BIT 0372 044670 140 TRNSWT #81T07,16(R2) R1,RMCS2(R4) RO,RD.RM TRNSWT ,R2 sCANCEL TIMEOUT (SP)+ 33 SAVEFG 1s RMER1 cI8 BIT BNE JSR RMER2 CI8 BIT 50 046267 04 ;02 :SET DRIVE ACTIVE INDICATOR TO IDLE NO DATA TRANSFERS UNDERWAY CLR BIS MOV JSR RMCS1 cI8 ROL 8MI ST B8PL 14 042644 o:.”%gsl. “3 04 45 0462650 032726 000600 4.9 042654 oom; 47 042656 004037 044670 32 0462662 82 664 egg 3 29 000040 48 49 0426 DRVACT(R1) #~1,DTUM R1 z;unnemn BEQ BEQ PC,SVRH70 PC.WC. HK *YES=-SAVE THE REGISTERS *SEE IF WRITE CHECK TO BE PUT IN QUEUE *RETURN *RELEASE THE DRIVE *RETURN assxsrea OFFSET *'NED® RETURN :SEE IF HCRC OR HCE ERRORS #BIT8!BIT?,(SP)+’ :1F NE, YES 4$ RO,RD.RM SCALL THE READ ROUTINE aecxsm OFFSET *NED' RETURN sse xr sm SECTOR ERROR #SSE, (SP)+ #SSEI, (SP)+ SKIP muan BIT ALREADY SET ? xs me NO *IF EQ, -0 ;E e Sais 714 013 04011 00011 000016 4S: BIS mnswno& 16(R2) JSR MOV MOV RTS P( svau7o #40111, (R4) m3, (R4) Pe JSR PC,EMPTY SO0 gggggggggiiggigigii §§ i &fiwsam;:;§§ AR RN NN ~ wvines OTM :SKIP SECTOR HANDLING ROUTINE ;2 88 RRRRR RRRR RRRR RRRRRRRRRR RR NN WA —t 2 02 06 et b e D =D o~ 1 ufl §§§5 RRRRRR - $SSRILTCBIRIFVIY I M NIZAGSRARSBRULY mg & we s P SEG 0190 F _EXER MACRO V04.00 14~$AN-82 15:16:58 PAGE 56~1 RH70/RM8 DRIVER (REV 10 10 14 1 105 0431264 106 0431 107 0431 108 0431 109 04314 110 111 04314 113 04 148 117 04315 043154 82 156 160 118 040276 060244 0001 SKIP: 000002 000010 044670 000004 177376 1$: 177376 177772 2$: 044670 3s: 4$: 000377 000004 044750 5%: DRIVE'S QUEUE SAVEme, nnro/mo n;sxsrens SISSUE A ‘DRIV .1ssue A nsmss to THE DRIVE *RETURN :LOAD ACTIVE mve NUMBER *RESTORE TRANSFER FLAG *CLEAR THE DRIVER smus see 1r HEADER ORDER z.scomomv RMDC cI8 MOV JSR RMDA c18 MOV JSR RMW/C I8 MOV BNE MOV sus BLT ADD CMP BLE MOV MOV MOV NEG MOV BR aesxsrsa *NED® RETURN (SP)+.$CYL(R2) -SAVE NEW STARTING CYLINDER ADDRESS :CALL THE READ ROUTINE RD. aecxsm OFFSET *NED® RETURN (SP)+.$SEC(R2) -SAVE NEW STARTING TRK/SEC ADDRESS *CALL THE READ ROUTINE RO,RD.RM nssxsrsa OFFSET 'NED® RETURN SGET REMAINING WORD COUNT (SP)+,RO *BR IF PARTIAL SECTOR LEFT 28 :STARTING WORD COUNT RO SWCNT(R2) :IF RMWC ms AT ZERO AFTER TRANSFER “FIND THE# NUMBER OF WORDS FOR LAST SECTOR #-258. RO :BR IF NOT DONE YET 18 *ADD 1 SECTOR BACK #-258. RO *1S WORD COUNT AT LEAST 6 ? RO, #-6 :BR IF YES *SET WORD COUNT TO 6 IN DPB IN DPB AND COUNT NEW WORD *STORE no.iucnr(w LENGTH COUNT WORD NEW *STORE mo%mz) ao *MAKE IT POSITIVE *STARTING BUFFER ADDRESS saur (R2) ,R3 31 JSR 000012 044670 R1,DTUW R2.TRNSWT STATUS (R2) se,t DATA ERROR ruc BITB BEQ 044670 177772 000004 000020 000020 000006 MOV MOV CLR :EMPTY JSR RMWC CI8 SUB BIC MOV ADD MOV ASL ADD MOV JSR c18 MOV 48 RO,RD.RM RO,RD.RM susmmz)(SP) sucnf(as) (SP) F(R2) ,R3 R3,=(SP) RO.WRT.RM RO,~(SP) r READ ROUTINE fns OFFSET NO :CALL THE READ ROUTINE mxsm OFFSET 'NED® RETURN CALCULATE THE NUMBER OF WORD TRANSFERED *LEAVE ONLY SECTOR MULTIPLES $COPY THE DIFFERENCE WORD COUNT :NEW :COPY THE WORD COUNT + CONVERT uono oxrreaence TO A BYTE DIFFERENCE *NEW BUFFER ADDRESS aumn ADDRESS *CALL THE WRITE ROUTINE :REGISTER OFFSET *'NED® RETURN *WORD COUNT we et § d RNAAD RM80 PERF exsn msno v04.00 14-5»4-02 15:16:58 PAGE 56=2 NGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) RO,WRT.RM 037 044750 119 04 122 2 0431 04317 150 043172 012714 040111 121 043176 004037 044670 342. 04320 JSR RMWC I8 MOV JSR RMOF 044750 037 12 o:.§51 043216 000032 JSR RMOF RO,WRT.RM CI8 PC 043204 o:.% 043220 0423 cI8 8IS 12; o:.szog 05 19 001000 154 ol.sz.;s 125 043230 126 043234 043240 043242 133 043246 13% 043252 135 043254 139 043262 140 043264 141 043270 14; 043272 143 043276 MOV MOV JSR RMCS1 012762 000001 000112 016246 000002 004037 044750 000000 042334 }gz 043244 000207 }gg cI8 000161 000002 122762 00102 004037 045344 000420 WC.HK: TST BEQ 1$: 005062 116262 000016 002140 000027 112762 000151 000002 }zg 043332 000207 CMPB BNE JSR B8R CLR MOVB #SSEI, (SP) SEQ 0191 :CALL THE WRITE ROUTINE *REGISTER OFFSET S'NED® RETURN *CLEAR THE DRIVE :CALL THE READ ROUTINE *REGISTER OFFSET S*NED' RETURN *SET THE INHIBIT BIT SCALL THE WRITE ROUTINE *REGISTER OFFSET S*NED® RETURN #1.8SSENB(R2) :INDICATE THAT SKIP SECTORING WAS ENABLED GET THE ORIGINAL COMMAND $COMND (R2) ,=(SP) WRITE ROUTINE THE ;CALL RO,WRT.RM *REGISTER OFFSET WRTCHK 28 **NED' RETURN *RETURN :D0 WRITE CHECK ? ‘BR IF NOT ° :LAST OPERATION A WRITE COMMAND ? (R2) #WRTDAT,SCOMND :BR IF NOT 28 *PUT THE OPERATION IN THE QUEUE RO, DRVQUE $QUEUE IS FULL 28 *CLEAR *DONE’ BIT IN DPB STATUS (R2) :SAVE WRITE OPERATION CODE SRMCS1(R2).SPREVO(R2) SCYL(R2),SPREVA+2(R2) :SAVE CYLINDER MOV *SAVE SECTOR AND TRACK ADDRESSES $SEC (R2) .SPREVA(R2) MOV :CHANGE WRITE DATA TO WRITE CHECK CLRB $CODE (R2) 144 043304 016262 000012 000034 145 043312 016262 000010 000032 146 043320 105062 000024 147 043326 #40111, (R) RO,RD.RM :FORCED WRITE CHECK ROUTINE 005737 001502 001427 RTS J 15 28: MOVB RTS #WCKD,SCOMND(R2) PC JEXIT :CHANGE FUNCTION CODE TO WRITE CHECK ;SPECIAL CONDITION ROUTINE g} 153 043334 116403 154 043340 00101 155 043342 004037 043346 000000 043350 156 043352 044670 004737 000207 005046 }gg 043376 005001 110316 045226 28: ;READ 'RMAS'* RO,RD.RM *BRANCH IF ANY 'ATA' BITS SET :CALL THE READ ROUTINE *REGISTER OFFSET (SP)+ 2IS “IE'=1? JSR RTS PC,SET.IE PC *SET INTERRUPT ENABLE *RETURN MOVB R3,(SP) BMI EMT 1$: RMAS(R&),R3 28 cI8 163 043372 012703 000001 CLR MOV CLR 1$ 1 -(SP) #1.R3 S'NED' RETURN *YES. NO DRIVES TO CHECK *REPORT AN ILLEGAL INTERRUPT *PROCESS Alil. DRIVES THAT HAVE SAN TATA''= R1 ;PROCESS ALL DRIVES WITH *‘ATA'* SET ;gg 168 043400 830316 $C3: 170 043404 171 043406 oos§81 106303 $C4: 169 043402 MOVB BNE JSR RMCS1 ROLB 1oe1zg 161 043 u,g 043370 SC: 042334 157 043354 10040 158 043356 104001 159 043360 160 043364 000016 001005 BIT R3, (SP) :ATA=1? INC ASLB R1 R3 *MOVE TO THE NEXT DRIVE BNE scs YES=-BRANCH S8 » €32 2m — 20 o ~N ~ S —\n ~ Y =4 JMP TST8 - 2$: 4$: sRETURN TO USER DPINT(R1) sINITIALIZING THE DRIVE ? SC13 DPRQS(R1) 2$ SC13 DRVACT(R1) SC6 JPROCESS THE DRIVE :PORT REQUEST OUTSTANDING ? :BR IF NOT :START THE OUTSTANDING COMMAND :DRIVE ACTIVE ? :BR IF ACTIVE 18 sBR IF NOT JSR PC.SC12 TSTB DPINT(R1) sTRYING TO INIT THE DRIVE ? sBR IF YES, CHECK ON MORE DRIVES SC4 zg1713.RHERRS*6 sADDRESS PLUG CHANGED ? :BR _IF YES (SP) ,R5 sPICKUP (RMAS) BEFORE THE ERROR CALL: sREPORT THE UNEXPECTED ATTENTION 2 BNE BIT BNE MoV EMT BR EMT BR :SAVE RMDS, RMER1 AND RMERZ2 sALSO DO A DRIVE INIT (DRVINT) SC4 ;G0 CHECK FOR MORE ATA'S 5 SCé sREPORT THE ADDRESS PLUG CHANGE sCHECK FOR MORE DRIVES sTHE DRIVE COMPLETED A NON-1/0 COMMAND 301 S NWONNONNON 040256 R1 #-1,TIMER(R1) R1 PC,GETREQ R1.RMCS2(R4) RO.RD.RM :SETUP TO ADDRESS WORDS :STOP THE TIMER *RESTORE THE DRIVE ADDRESS *GET THE DPB POINTER FROM THE QUEUE :SELECT DRIVE *CALL THE READ ROUTINE (SP) RS SAND PUT IT IN RS (SP)+,RS *AND sAv; xgngn RS (SP)+ sc11 RO,RD.RM N NV prd e N panaabas guoo« N - -t prd ~N paerd 177777 PC, SVRH70 #111,-(sP) RO,WRT.RM o W ONOON 219 220 04361 221 043612 1$: 3s: i g1z 0esdte 04360 1ST8 BEQ J MP T1STB 040154 N 043550 043552 213 043554 214 043523 215 0435 216 0463566 043572 043574 SC5: SeeNs §° SRIDI[SR OgNNN 203 043504 204 043506 205 043514 206 043513 207 04352 208 043526 043532 043534 209 043536 210 043540 PC sBRANCH IF MORE TO CHECK? sCLEAN OFF THE STACK ;THE DRIVE WAS NOT ACTIVE, FIND OUT WHY IT INTERRUPTED SR 180 043424 181 Okgz 182 043434 183 06343% 184 04344 185 043446 186 187 188 189 043450 190 191 043454 192 043460 193 043462 194 043470 195 043472 196 043474 197 043476 198 043500 043500 199 043502 200 201 202 ) g 179 04%2 3 26 7 SC3 (SP)+ :DETERMINE IF THE DRIVE WITH “‘ATA' SET IS ACTIVE WITH A COMMAND - 174 0463414 BNE TST RTS 73 o 04341 70/RM80 DRIVER (REV 0.17) =3 we ot Pd 13 e 172 SEQ 0192 XSR MACRO V04.00 14~JAN=-82 15:16:58 PAGE 56-3 RNAAO RM80 PE F NGLE/DUAL POR 100240 000016 100220 000016 1% 1$: BR BIS *REGISTER OFFSET S*NED® RETURN *WAS THERE AN ERROR? *BR IF NO ERROR *CALL THE READ ROUTINE *REGISTER OFFSET S*NED' RETURN *SAVE RH70/RM80 REGISTERS SISSUE A DRIVE CLEAR :CALL THE WRITE ROUTINE *REGISTER OFFSET :*NED' RETURN *WAS "'UNSAFE'' CONDITION =1? -gnnncu IF YES 521115!31107!3116 ,16(R2) : INFORM USER OF ERROR #BIT15'81T07!BIT04,16(R2) :INFORM USER OF UNSAFE ERROR CZRNAAO RM80 PERF EXER MACRO V04oo 14=JAN=-82 15:16:58 PAGE 56=4 SINGLE/DUAL PORT RH70/RM80 %zg %o 105021 L 15 SEQ 0193 DRIVER (REV 0.17) 84 1§ 004737 0453 04 204 oag& 146137 040300 040246 012746 00011 225 04 226 043642 004037 044750 043646 000000 043650 043656 %%g 043652 000137 043404 28: CLR8 JSR BICB MOV JSR RMCS1 SC8 JMP omcmn PC,EMPTYQ :SET DRIVE TO IDLE ‘DUMP THE QUEUE ;CLEAR THE SEARCH WAIT FLAG sRELEASE COMMAND *CALL THE WRITE ROUTINE asexsren OFFSET 'NED' RETURN “CHECK FOR MORE DRIVES mgmrm,SRCHWT RO,WRT.RM $C4 5%3 ;ISR *NED'* PROCESSOR 231 043656 004737 045332 $C8: %_;3 :NON=1/0 COMMAND TERMINATION ROUTINE 232 043662 004737 062334 %gz 043666 000137 0643404 237 043672 238 043676 239 240 043704 41 043706 242 043712 243 043720 244 043724 245 043726 246 043732 247 043740 %23 043744 105061 136137 001012 004737 052762 005737 100002 004737 116164 004737 000137 040154 040300 040246 045400 000200 000016 040252 045062 040300 000016 18: 043404 041236 253 043754 254 043762 255 043770 256 043776 257 044002 258 044 259 044006 52? 044010 010164 $C12: 000010 016437 000012 040146 016437 000014 040150 016437 000042 040152 004037 040534 000401 000207 1$: 005726 000722 CLRB BITB BNE JSR BIS ST B8PL JSR MOVB JSR JMP PC,EMPTYQ PC.CI8 SC4 DRVACT(R1) ;CLEAR THE DRIVE'S QUEUE *PROCESS THE 'NED’ :CHECK MORE DRIVES :SET DRIVE IDLE :DOING A SEARCH OPERATION FOR ATABIT(R1),SRCHWT *AN 170 COMMAND? IF YES :BRANCH 18 PC.PO :REMOVE REQUEST FROM QUEUE mror wmz) *SET 'DONE'’ BIT *SAVE THE REGISTERS? SAVEFG aamc IF NO 1$ YES==SAVE ALL OF THE RH70/RM80 REG'S PC,SVRH70 :CLEAR ATTENTION BIT ATABIT(R1).RMAS(R4) REQUEST A 2START PC,OPT *CHECK FOR MORE DRIVES $C4 MOV MOV MOV MOV JSR BR RTS ST BR R1,RMCS2(R4) :SELECT DRIVE RMDS (R4 ) ,RMERRS :SAVE THE FOUR REGISTERS THAT ;WILL TELL US SOMETHING RMER1(R4) ,RMERRS+2 +4 (R4 ) RMERRS RMER2 SINIT. THE sms OF THE DRIVE RO,DRVINT *TAKE ERROR EXIT 18’ *RETURN PC “POP PC OFF OF THE STACK (SP)+ SC8 *PROCESS THE PARITY ERROR :DUAL PORT REQUEST PROCESSOR ggg 264 044012 265 044014 044022 267 044024 044030 044036 270 044042 271 064044 72 273 JSR JMP ;ERROR PROCESSOR - %gg 252 043750 $C11: JSR 006301 012761 177777 040256 010164 000010 116164 040300 000016 032714 004000 001006 $C13: 006201 00630 044046 044056 012761 00620 275 04 276 044064 00142 035230 040204 ASL 1$: :SETUP TO ADDRESS WORDS MOV ASR MOV MOVB BIT BNE MOV ASR BR TST8B nscoo..nnen(an R1 SEXIT 3s JINIT DPINT(R1) BRI 2$ ASL 040256 R1 #-1,TIMER(R1) srop THE TIMER R1 SELECT THE DRIVE R1 mcsz(m :CLEAR THE ATTENTION BIT (R%) S msmmMA uu.S *BR :DRIVE AVAILABLE? IF AVAILABLE 1s :START 15 SECOND TIMER AGAIN DPINT(R1) RO,DRVINT sz‘“;? R 7 0002 QUE Wooo SO OO ©OO=O SESS Wwnnown WOOW e ~ w ~N 003014 DRVSTA(R1) : 2% R2 3% 040164 o0 SRS W=O BN 105761 PC,G m15 SEQ 0194 sCLEAR THE INIT INDICATOR ;GO INIT THE DRIVE ;DUMMY PARITY ERROR RETURN DRIVE ONLINE? :BR_IF YES == START COMMAND ENTRY FOR THE DRIVE ggElIJE ger DPB oo ESS 051715'51114 16(k 000016 2%: PC,SVRH70 Pg.EMPTYQ 3 DPRQS (R1) 3s: $Cé PC,OPT - INFORM USER THAT DRIVE OFFLINE E THE REGISTERS EHPTY THE neoussr QUEUE sCLEAR THE PORT REQUEST INDICATOR ;START THE PENDING REQUEST :PROCESS OTHER DRIVES -znmmonm::ragnzammenwz:Pxs—:mflmonwzxrxu—zmmmon@z:rasuzOflmcnU CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN=-82 15:16:58 PAGE 56-5 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV SEQ 0195 sRM80 TIMER ROUTINE 1 2 3 : CALL: : s 6 064152 7 044156 8 044160 9 0646166 10 044170 11 044172 1% 064176 13 044200 14 064202 15 044210 16 044212 17 044216 18 044220 19 044222 20 044226 21 044230 22 044232 23 044234 24 044240 %2 044242 27 28 29 30 31 32 33 34 35 36 37 044244 38 044246 39 044250 40 044256 41 044260 0442 064266 42 064270 43 044272 044276 45 044 46 044302 046308 48 04431 044314 50 044320 005737 001030 112737 104412 005001 00500§ 005763 002407 166663 003003 004737 000405 00520 005723 022701 003361 104413 105037 012616 000207 040250 000001 RMTMR: 040251 044 MOV ATIME,~(SP) ;ELASPED TIME IN MILLISECONDS ON THE STACK TST ACTDRV CHECK "ACTORY § ACTSTR" JSR BNE MOVB SAVREG PC,RMTMR 4$ #1,ACTSTR CR " R1 040256 000002 1$: 044244 28: 000010 38: 040251 4: :CALL RMBO TIME ROUTINE :IF_NON ZERO EXI :SET_"ACTSTR :SAVE RO = RS :START WITH DRIVE 0 TST BLT TIMER(R3) 28 18 THE TIMER RUNNING? :BRANCH_IF NO BGT JSR BR INC 1ST CMP BGT 28 PC,STO 38 R (R3)+ 48..R1 1S :BR IF _NO_SOF TWARE TIMEOUT :CALL SOFTWARE TIMEOUT ROUTINE :60 TO_THE EXIT :MOVE TO NEXT DRIVE SUB 04025¢ RESREG CLRB MOV RTS 2(SP),TIMER(R3) ;COUNT THE INTERVAL ;0UT OF DRIVES? :BRANCH_IF NO ACTSTR :RESTORE RO - RS :ZERO ACTIVE SOFTWARE TIMEOUT ROUTINE FLAG PC :RETURN (SP)+,(SP) :ADJUST THE STACK sSOFTWARE TIMEOUT ROUTINE :NOTE: THIS ROUTINE MUST BE ENTERED AT PRIORITY 6 OR GREATER 010146 010346 013704 010164 004037 000212 044556 1 57;? 1 105761 001070 105761 001065 1370; 02013 160; ;CALL: : : : STO MOV JSR RETURN #DRVNUM,R1 PC,STO STO: MOV R1,=(SP) MOV RMADR, R JSR RMDS RO.RD.RM *CALL THE READ ROUTINE nssxsrea OFFSET (SP)+ ST02 i1S "DRY"=1? *BR IF YES ST02 DPRQS(R1) ST02 TRNSWT ,R2 R1,DTUW 18’ :BR IF YES *OUTSTANDING PORT REQUEST FOR THE DRIVE ? :BR IF YES *PICKUP TRANSFER WAIT QUEUE *TRANSFER UNDERWAY ON THIS DRIVE? 040310 000010 044670 012764 105061 MOV MOV STOS 040204 STO1: 040214 02¢4 0276 32 044328 033782 90109 000016 18: Sg 826354 0047%? é506§ 24 826 0 5 N 15 154 -000010 TSTB BMI TSTB BNE TST8 BNE MOV CMP ggg BIS J SR MOV CLRB ;DRIVE NUMBER $CALL: :SAVE R1 R3. -(sp> *SAVE R3 a1.ancsz<a4) *SELECT THE DRIVE DPINT(R1) , *GET ADDRESS OF ‘RMCS1 s "NED' RETURN :TRYING TO INTIALIZE THE DRIVE ? BRANCH IFSgss oair?s'98709 16(&3)73 THE enaoa FLAGS /anao REGISTERS aairos RMCS2(R4) ' oRVAcr(n1> :DRIVE 1§ IDLE THE MASS BUS FRGOE=ITOMMOMDERBERNRC-=ITOMMONDEZER CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN=82 15:16:58 PAGE 57 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) CZRNAAO RMB80 PERF EXER MACRO V04.00 14-JAN=82 15:16:58 PAGE 57-1 16 SEQ 0196 o Y CLR 2s: — NS o= ~d 040534 O 200 ONO SNBSS £RRRRRERRRE 38RJIJ32 & SRERSSILIR SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 0460154 85 701 040244 040276 004737 052762 05061 045366 100400 040154 177777 14 000016 3$: 040256 4S$: =4 WO NNNW = b b 040276 sT02: N= WSS NN= =N RO,DRVINT SINIT. THIS onxve STOS DRVACT(R1) 4 TRNSWT ,R2 g;uu,ai ’+ *GET TRANSFER WAIT QUEUE ges ruenscx/o ON THIS DRIVE? ger THE DPB POINTER FROM QUEUE ca..n1 2 #=1,DTUV TRNSWT gcogLaoue RMAS (R4) ,RS ATABIT(RI)CRS ST03 DPINT(R1) “READ ATTENTION REG IS ATTENTION FOR THIS DRIVE UP ? +YES=-BRANCH “TRYING TO INTIALIZE THE DRIVE ? 040276 R1,DTUW 044670 ao RD.RM ST07 STO1 (SP)+ :BR IF YES = DRIVE NOT ONLINE *OUTSTANDING PORT REQUEST FOR THE DRIVE ? “BR IF YES - NO RESPONSE TO REQUEST *DATA TRANSFER UNDERWAY FOR THIS DRIVE *BR IF NO *CALL THE READ ROUTINE nscxsren OFFSET S*NED' RETURN $TO1 :BR IF "RDY''s 1$ i8R IF INIT PENDING DPINT (R1) DPRAS (R1) 040214 *YES==BRANCH :UPDATE THE INDEX *INCREMENT THE DRIVE NUMBER *LAST DRIVE BEEN CHECKED? *NO=-=L0OP *NO DATA TRANSFERS UNDERWAY *CLEAR TRANSFER WAIT QUEUE EL??R ALL REQUEST QUEUES ST06 STO3: *PARITY ERROR RETL oaxve IDLE asrone rue INIT.? ;INFORM USER OF INIT. asir1s'extoa 16(k DRVAC :SET mve ACTIVE TO IDLE 0-1 rxnsa(as) sropHE TIMER DPRQS (R1) O NN - \ ) =d \ N SN WSO LAY - ;START WITH DRIVE 0 040214 040204 234 2F 20,SRR I3 =4 — S & L= b OO Vv N SN VLAWY oAl R =~ 2% :ddddfldd—ldfl 33 KRR 2333392522388 S288e o RERSERSER HN OO =D 25383 -né-n 8882828y& Ror S MSEFEP ON) = g Ro'S RN sSRSUNNER 3§§88 —d=d = &H 325722 '. 005037 sgoo 03 00300 1 040204 222 >~ > R®y 000010 g; xnxrxAszxnc THE DRIVE ? :PORT REQUEST PENDING ? 18: ST09 g-6611n£n<a3) :BR IF NOT gr?: THE TIMER 0462334 STOS: 2?63’3 :GO HANDLE THE °NED' 0204 ST06: DPINT(R1) ;CLEAR THE INITIALIZE INDICATOR 177777 040256 820164 177777 040256 045366 140000 ¢00016 177777 040256 048386 100004 DRVSTA(R1) #-1,TIMER(R3) PS.éETREO 200 .nsog;s'r‘o gn QUEUE ? -1 IIHER(RS) sror THE TIMER g36;1s'311141°(hzin * :INFORM THE USER DRIVE NOT AVAILABLE ST07: DPROS (R1 PC,GE TREO RS 000016 *SET DRIVE OFFLINE :STOP THE TIMER *GET THE DPB ADDRESS CLEAR PORT REQUEST INDICATOR *GET DPB AD DRESS OUEUE sg;gv FOR DRIVE ? ST09 saxrz.1o(a2) aaxr1s s INFORM USER OF PORT REQUEST ERROR ZRNAAD RMBO PERF EXER MACRO V04.00 14-JAN=-82 15:16:58 PAGE 57-2 INGLE/DUAL PORT RH70/RM80 n 1 1 4652 004737 ’ogzg 004737 4 813603 012601 114 044664 115 044666 000207 €16 SEQ 0197 DRIVER (REV 0.17) 533 506 STO8: ST09: JSR JSR PC.EMPTYQ PC,SVRH70 sCLEAR_THE QUEUE FOR THE DRIVLC sSAVE THE REGISTERS MOV RTS (SP)+,R1 PC sRESTORE R1 sRETURN MOV (SP)+,R3 sRESTORE R3 om § i1 m ~ zN T RH70/RM80 RIS ERNE R RURNES SR UG N S i =000~ N iry = ; JSR INDEX ERRADR RETURN MOV 011649 MOV 044706 013737 040310 ADD 062037 0447 RD.RM1: MOV 013727 RD.ADR: .WORD 000000 RD.WRD: .WORD 000000 MOV 000002 044710 013766 MOV 040310 013746 ADD 000010 065716 BIT 010000 032736 BNE 001002 ST 005720 BR 000402 RD.RM3: MOV 011000 ; ; : ; RD.RM: MOV RD.RM&4: RTS 012616 000200 RO,RD.RM (SP) ,=(SP) RMADR,RD.ADR (RO)+.RD.ADR a(PC)4,(PC)* 0 0 RD.WRD,2(SP) RMADR = (SP) onncsg.csp> #BIT12.9(SP)+ RD,RM3 (RO) + RD ., RM& (R0) ,RO (SP)+,(SP) RO ;G0 READ A aesxsrea *REG. INDEX FROM BASE *ERROR ADDRESS=-PROCESS ERROR STARTING *AT THIS ADDRESS *CONTENTS OF REG. IS ON THE STACK :SAVE RO FOR RETURN :FORM THE DESIRED ADDRESS :USING THE BASE ANDTHE INDEX :READ THE DESIRED REGISTER OF THE RM80 *ADDRESS S FORMEDHERE *REG. CUNTENTS PUT HERE :RETURN IT TO THE USER “PUT THE ADDRESS ON THE STACK :FORM THE ADDRESS OF RMCS2 :CHECK THE °'NED® BIT :IF NE, DRIVE NOT PRESENT *ERROR FRZE RETURN SEXIT *ERROR EXIT :ROUTINE TO WRITE A REGISTER SCALL: : : : : : VWAL oNro0 =1=] N o 000316 04 719 112637 063737 012737 000000 oogooo 013746 0?2716 032736 001402 :DATA TO BE LOADED ON THE STACK “CALL THE ROUTINE TO LOAD (WRITE) THE REG. 2(SP) ,WRT.WD ;SAVE THE WORD TO WRITE INDEX 'NED' RETURN RETURN WRT.RM: MOV MOV MOV BNE CMPB BLT JSR Wn X —= W 045030 DATA,=(SP) RO,WRT.RM (SP)+. (SP) (no>¢ WRT.AD 1$ #150,WRT.WD 18 RO,RD.RM 177770 SWAB BIC MOVB ADD 040310 045032 1$: WRT.R1: MOV WRT.WD: .WORD WRT.AD: .WORD MOV 040310 ADD €00010 BIT 010000 BEQ 045031 *INDEX OF THE REGISTER TO BE LOADED *ADDRESS TO RETURN TO IF °NED' ERROR :ERROR FREE RETURN SADJUST THE STACK :GET INDEX OF REGISTER TO BE WRITTEN aanncu IF NOT RMCS1 *ISTHE COMMAND FOR DATA TRANSFERS? SYES--DON'T GET THE OLD A16 & A17, & PSEL *CALL THE READ ROUTINE REGISTER Or FSET 'NED* RETURN THE COMMAND . W N = W R ~ 23433 R N LK 4764 000002 012616 012037 045032 001015 122737 000150 045030 002411 004037 044670 MOV JSR 53 - 016637 ReRReREeERR gggooo REXS~og DL S RN SEQ 0198 DRIVER (REV sCALL: b D d =D VRIS SEIGGRE D16 :ROUTINE TO READ A RH70/RM80 REGISTER b b od b D d we RF EXER MACRO V04.00 14-8AN-82 15:16:58 PAGE 58 (SP) #°C7,(SP) (SP)+,WRT.WD+1 RMADR WRT.AD (PC)+.a(PC)+ RMADR, = (SP) #BIT12.3(SP)+ WRT.Ré onncsg (SP) rns RH70/RM8 BEFORE SENDING TO THE ;FORM THE ADDRESS OF THE DISK REG. :LOAD THE DESIRED REG. *WORD TO WRITE GOES HERE *ADDRESS IS FORMED HERE *PUT THE ADDRESS ON THE STACK :FORM THE ADDRESS o RMCS2 :CHECK THE 'NED® BIT ;IF EQ, DRIVE IS PRESENT CZRNAAO RMB0 PERF EXER MACRO V04.00 14~8AN-)2 15:16:58 PAGE 58-1 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV o 5 5052 59 8:505 58 045056 59 045060 60 61 &2 63 64 65 66 01 005720 000200 SCALL: 77 045122 78 045130 79 045132 80 045134 81 045136 82 045142 83 045144 84 045146 85 045150 86 045156 032764 001002 005023 000405 004037 000000 045170 01%623 023727 001406 88 045166 89 045170 91 0451764 92 045200 93 045204 94 045210 95 045212 96 045216 97 045220 98 045222 102 045224 000751 004737 013746 06%716 022726 001004 063704 012423 011413 104413 000207 103 104 105 106 107 108 109 001006 062737 SVRH70: SAVREG T #DPBADR ,R2 *ADJUST FOR ERROR FREE EXIT *SAVE THE DRIVES REG'S R2 6$ :SAVE RO = RS *QUEUE ENTRY FOR THE DRIVE ? :BR IF NONE 14(R2) ,R3 *GET THE ERROR TABLE POINTER 28 :BR IF SET 4 * CONTINUE R4 RMADR, (R2) ,RMCS2(R4) 040310 000010 000014 045142 045142 000022 000200 000010 1$: 2%: 3s: 045142 000046 000002 045142 042334 001234 003777 4S: 5%: 6$: 030000 040316 78: ;SELECT DRIVE SEXIT IF NO ADDRESS 6$ *COUNTER & POINTER 3$ *REACHED THE BUFFER REGISTER ? 3$,#RMDB :BR IF NOT 2 :'0R* SET ? #81T07 ,RMCS2(R&) (R3)+ 044670 :DPB POINTER TO R2 PC,SVRH?0 *STORC RMDB AS ZEROES (SP)+,(R3)+ 3$.#RMEC2 63 #2,3% 1% PC,CI8 *READ THE SELECTED REGISTER *REGISTER INDEX sERROR RETURN ADDRESS :STORE THE REGISTER CONTENTS :REACHED THE END ? :BR IF YES :INCREMENT THE REGISTER INDEX :CONTINUE READING THE REGISTERS : :PROCESS THE °NED' #30000, (SP) + :SEE IF RHW?7 RO,RD.RM 0 $CPUOP,~(SP) #°0174000, (SP) 7% RHEXT R4 (R4)+,(R3)+ (R4),(R3) PC :CHECK THE CPU (RH) TYPE :LEAVE THE CPU TYPE BITS sIF NE, NO ;POINT TO RMBAE :STORE THS CONTENTS :GET RMCS ;RESTORE RO - RS :RETURN #DRVNUM ,R1 :DRIVE_NUMBER TO R1 R&,=(SP) RMADR , R R1.RMCS2(R4) :SAVE Ré *PICKUP ADDRESS OF RMCS1 :SELECT DRIVE *READ RMCS1 PC,SET.IE 01g646 81 704 113 045240 114 045242 115 045248 811446 052716 000316 116 045250 ;30)+ :TAKE THE "NED' EXIT SEXIT THE INTERRUPT WITHOUT GETTING A ‘‘TRE" 110 045226 111 045 1!; 065234 v JSR 104412 005705 00144 013704 111264 016203 001433 005037 023727 87 045160 (RO) RO WRT.RS SEQ 0199 sROUTINE TO SAVE THE RH70/RMB0 REGISTERS 67 045062 68 045064 69 045066 70 045070 71 045074 72 045100 73 0451064 74 045106 75 0645112 76 045120 WRT.R3: MOV BR WRT.Ré: 1ST WRT.RS: RTS 011000 16 010164 112714 830310 10 040000 000100 SET.IE: (Ré) ,=(SP) (SP) #1114, (SP) #BIT06, (R4) *SET "IE *SET THE §'ms" BIT OF THE WORD READ :ADJUST FOR DATO SSET 'IE" NGLE/DUAL POR T RH70/RM80 DRIVER (REV 8%2764 118 8353 1002 119 045%66 005728 045254 120 045266 1%1 045270 1 g 045%74 125 045276 1264 125 126 127 128 129 130 045300 131 045302 137 045306 045310 045312 045314 045316 045320 045322 045324 139 045326 140 045330 000402 11%664 012604 000207 010000 000001 SEQ 0200 A7) 000010 BIT BNE 1$%: 2%: sCALL: 3 0460224 162 14% TST BR MOv8 MOV RTS #B1T12,RMCS2(R4) 1$ (SP)+ 2 (SP)+,1(R4) (SP)+,Ré PC ; YE . }Us‘ "NED''=1? *CLEAN OFF THE STACK :CLEAR '‘TRE" *RESTORE Ré *RETURN TO CALLER JSR CLRQUE: SAVREG MOV CLR CLR CLR CLR CLR CLR CLR CLR RESREG S PC,CLRQUE #QDRV ,R2 (R2)+ PC sSAVE RO = RS ;QUEUE BASE ADDRESS sCLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY sRESTORE RO - R5 ;EMPTY THE QUEUE SPECIFIED BY R1 sCALL: 1464 145 146 147 148 045332 149 045334 150 045340 151 045342 15% 15 154 155 156 157 158 159 160 161 16§ 045344 16 045343 164 04535 165 045354 166 045360 167 045362 168 045364 169 170 171 172 16 ;ROUTINE TO CLEAR ALL OF THE REQUEST QUEUES SESS 3 NWRLNNNNNNNNON 117 g ig we i RNAAO RM8O PE RF_EXER MACRO V04.00 14- 8AN-82 15:16:58 PAGE 58-2 : 006301 005061 006201 000207 040224 JSR EMPTYQ: ASL CLR ASR RTS DRVNUM,R1 ;DRIVE NUMBER TO R1 R1 QDRV(R1) R1 PC sCLEAR DRIVE QUEUE sRESTORE R1 PC,EMPTYQ :ROUTINE TO PUT A REQUEST IN QUEUE sCALL: 3 : : 3 0460224 040224 DRVQUE: ASL TST BNE MOV TST 1$: ASR 2%: :DRIVE NUMBER sADDRESS OF PARAMETER BLOCK MOV MOV JSR RETURN1 RTS 26O PUT REQUEST IN QUEUE sRETURN HERE IF QUEUE IS FULL sRETURN HERE IF REQUEST IS IN QUEUE R1 ggav«n1> R2,QDRV(R1) (RO)+ R1 RO sTEST THE QUEUE ENTRY sIF NE, QUEUE ENTRY ALREADY THERE ENTRY sADD THE QUEUE sTAKE RETURN sRETURN TO USER sROUTINE TO GET THE 'DPB'* ADDRESS OF NEXT REQUEST IN QUEUE CALL: o : £ 8.17) MOV JSR GETREQ: ASL MoV ASR RTS G 16 #DRVNUM,R1 PC,GETREQ SEQ 0201 :DRIVE NUMBER TO R1 ;G0 GET THE REQUEST *R2='DPB'’ ADDRESS OF THE REQUEST *R2=0 IF MO REQUEST IN QUEUE R1 QDRV(R1) ,R2 R1 PC *GET THE REOUEST *RETURN ;ROUTINE TO "POP'* THE REQUEST FROM QUEUE sCALL: MoV JSR RETURN POPQUE: AS MO CLR ASR <r- W &3 RETURN 122 m ~ 0 —d D e e e D d e ) ) D ) D ) ) ) e D ) ) D il W RS8R RIRRRER2BIININN fi e P wo F EXER MACRO V04.00 14~ AN=82 15:16:58 PAGE 58-3 RH70/RM8 DRIVER (REV RTS #DRVNUM,R1 PC.POPQUE :DRIVE_NUMBER TO R1 sCALL TO REMOVE REQUEST ;R2=ADDRESS OF DPB REMOVED R1 QDRV(R1) ,R2 QDRV(R1) R1 sGET THE QUEUE ENTRY ;CLEAR THE QUEUE PC sRETURN TO USER CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 59 H 16 SEQ 0202 DATA, CONTROL, & STATUS BLOCKS 1 g [ 6 7 8 9 10 1 1§ 1 }g }9 000001 00000 00000 000004 000006 000010 000011 000012 000014 000016 .SBTTL DATA, CONTROL, & STATUS BLOCKS SFMT SCOMND $PSEL SUCNT $SBUF $SEC $STRK SCYL SREG STATUS =1 = SFMT+1 = smni = SFMT+ = SFMT+5 = SFMT+7 = SFMT+10 = SFMT+11 = SFMT+13 = SFMT+15 :BLOCK LOCATION EQUATE STATEMENTS :DRIVE'S HISTORY AND CURRENT INDICATOR STORAGE EQUATES = SFMT+17 = SWRDL+2 = SWRDL+4 = SWRDL+ = SWRDL+ = SWRDL+10 = SWRDL+12 18 19 20 21 25 2 24 000020 000022 000024 000026 000027 020030 000032 SWRDL $SSEC $SCODE SPACK SPREVO SPATTC SPREVA §3 31 sg g‘ 35 24 37 8 39 40 21 000056 000060 000064 000066 000072 000074 000076 000100 000102 000104 000106 000110 000112 SUTOFL = SWRDL+36 SWRITN = SWRDL+40 SRDOFL = SWRDL+44 SREAD = SWRDL+46 STOTAL = SWRDL+52 $SOFT = SWRDL+54 SHARD = SWRDL+56 $SKI - = SWRDL+60 SMISPO = SWRDL+62 SPASSC = SWRDL+64 SFAIR = SWRDL+66 SHLDWC = SWRDL+70 $SSENB = SWRDL+72 25 26 o7 28 006936 000042 000046 000052 000114 000115 ooo119 00011 000120 000122 000124 5 5 = SWRDL+16 = SWRDL+22 = SWRDL+26 = SWRDL+32 *END OF PASS DATA COUNT (DOUBLE WORD) *END OF PASS SEEKCOUNT (DOUBLE uoam *OPERATION COUNT (DOUBLE WORD) PER PASS *SEEK COUNT (DOUBLE WORD) *TOTAL WORDS WRITTEN OVERFLOW COUNT *TOTAL WORDS WRITTEN COUNT (DOUBLE WORD) STOTAL WORDS READ OVERFLOW COUNT STOTAL WORDS READ COUNT (UOUBLE WORD) :TOTAL ERRORS (ALL TYPES) COUNT °sorr' ERROR COUNT HARD® ERROR COUNT 29SKI® ERROR COUNT MIS-POSITIONING ERROR COUNT *PROG DETECTED *PASS COUNTER *OPERATION QUEUE 'mmsss' COUNT *HOLD WORD COUNT FOR ‘RELBUF® ROUTINE *SKIP SECTOR INDICATOR SNCODE SNPATC SNSEC SNTRK SNCYL SNEXT $FIRST = SWRDL+7% = SNCODE+1 = sncooeog = SNCODE+ = SNCODE+4 = SNCODE+6 = SNCODE+10 :NEXT OPERATION CODE *NEXT PATTERN *NEXT SECTOR SNEXT TRACK SNEXT CYLINDER *PARAMETER SELECTION INDICATOR *FIRST OPERATION INDICATOR :INDEX EQUATES FOR MAXIMUM/MINIMUM ADDRESSES g3 55 SENDAT SENDSK SOPERC $SPOSIT :WORD COUNT LENGTH (POSITIVE) *SECTOR SIZE FOR CURRENT NPERATION (256. OR 258.) *PRESENT COMMAND SELECTION CODE *WRITE DATA PACK 1iko!CATOR *PREVIOUS COMMAND SELECTION CODE *PATTERN CODE *PREVIOUS ADDRESS= TRK, SEC, CYL (DOUBLE WORD) :INDEX EQUATES TO THE NEXT OPERATION PARAMETERS 2: 45 46 47 48 49 50 21 ;FMT HCI,ECI OR OFFSET CODE *OPERATION CODE BITS A16, A17 .-pom SELECT 5 WORD COUNT (2°'S COMP) *BUFFER ADDR OR nesxsren mu.e POINTER A *SECTOR ADDRESS OR 1ST REG *TRACK ADDRESS OF LAST REG ADDR *CYLINDER ADDR *REGISTER STORAGE (IF ERROR) *STATUS WORD (SET BY DRIVER) ooo1§ 0001 000132 MAXCYL = SNCODE+12 MINCYL = MAXCYL+2 MAXTRK = MAXCYL+4 ;MAXIMUM CYLINDER ADDRESS *MINIMUM CYLINDER ADDRESS *MAXIMUM TRACK ADDRESS CZRNAAQ RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 591 16 SEQ 0203 DATA CONTROL, & STATUS BLOCKS 58 000142 :HDA SERIAL NUMBER CONTAINED IN DEC144 FILE :LSB'S OF SERIAL NUMBER (DECIMAL) SHSNL = MAXCY'.+14 000146 :DEC144 BAD SECTOR ADDRESS STORAGE AREA INDEX EQUATE ;BAD SECTOR STORAGE TABLE PLUS TERMINATOR $BDSEC = SHSNL+4 MAXSEC = MAXCYL+1 MINSEC = MAXCYL+1 gg 64 SHSNM 000144 gg g; 93 *MAXIMUM SECTOR ADDRESS *MINIMUM SECTOR ADDRESS *MSB'S OF SERIAL NUMBER (DECIMAL) = SHSNL+2 :DRIVE (MBA) SERIAL NUMBER AREA INDEX EQUATE ;% SDRVSN 002130 ;i = $BDSEC+<126.%8.>+2 :DRIVE (MBA) SERIAL NUMBER :RH/RM REGISTER EQUATES ;g 77 78 002140 002142 SRMCS1 SRMWC 002212 SRMCS3 SRMBA SRMDA SRMCS2 SRMDS SRMER1 SRMAS SRMLA SRMDB SRMMR1 SRMDT SRMSN SRMOF SRMDC SRMHR sannng SRMER? SRMEC1 SRMEC2 SRHBA§ 002144 002146 002150 002152 002154 002156 002160 002162 002164 2166 002170 002172 002174 002176 002200 002202 002 0022 002210 80 81 82 83 &5 87 89 91 92 93 95 98 13? 32?253 000 047556 045432 045434 gizes2 001 051772 047646 047650 gzoao oo 113 :MINIMUM TRACK ADDRESS MINTRK 0001 000140 59 gg = MAXCYL+6 ooo1§2 002 000 = SDRVSN+10 = SRMCS1+2 ;RM REGISTER STORAGE = SRMCS1+4 = SRMCS1+6 = SRMCS1+10 = SRMCS1+12 = SRMCS1+14 = SRMCS1+16 = SRMCS1+20 = SRM(S1+22 = sancs1+54 = SRM(CS1+26 = SRMCS1+30 = SRMCS1+32 = SRMCS1+34 = SRMCS1+36 = SRMCS1+40 = SRMCS1+42 = SRMCS1+44 = SRMCS1+46 = SRMCS1+50 = SRM(CS1+52 :BLOCK FOR DRIVE 0 PRIVEO: gLE 0,0 . +SRMCS1-SREG 'uoao SRMCS3-SREG :DRIVE NUMBER 0 ‘BLKB 000 :BLOCK FOR DRIVE 1 DRIVE1: BYTE" 1.0 _+SRMCS1-SREG ‘uoao $RMCS3-SREG :DRIVE NUMBER 1 .BLKB 000 FORDRIVE 2 6R1vsz .avre g.0 :DRIVE NUMBER 2 ZRNAAQ RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 59-2 J 16 SEQ 0204 DATA CONTROL, & STATUS BLOCKS 052062 054206 054262 054264 054276 003 056476 056500 056512 056514 060636 060712 005 114 115 116 117 067556 118 067557 119 067560 120 067561 121 067562 122 067564 123 067566 124 067567 125 067570 129 067572 }58 067574 129 067576 000 007 067502 LKW 000 5 .+SRMCS1-$SREG $RMCS3-$REG :DRIVE NUMBER 4 g.o 6.0 5 :DRIVE NUMBER 6 . +SRMCS1-$SREG $RMCS3-SREG ;BLOCK FOR DRIVE_7 7.0 E DRIVE?: gL UORD .BLKB ;DRIVE NUMBER 5 .+SRMCS1-SREG $RMCS3-SREG ;BLOCK FOR DRIVE 6 DRIVEG: .BVTE .UORD .BLKB 065266 4,0 :BLOCK FOR DRIVE 5 DRIVES: .gYTE WORD .BLKB 063052 006 ;BLOCK FOR DRIVE & DRIVES: gYTE .WORD .BLKB 000 .+SRMCS1-$REG 5 ;DRIVE NUMBER 7 . +SRMCS1-$REG $RMCS3-SREG ;GENERAL PURPOSE PARAMETER BLOCK 000 000 000 177776 101174 000 000 000000 067576 000000 GENDPB: .BYTE .WORD GENREG: .BLKW sDRIVER PARAMETER BLOCK, DRIVE # gFFSET VALUE OR FMT16, HCI OR ECI OMMAND <N 065342 06534 065356 065360 000 ;DRIVE NUMBER 3 $RMCS3-SREG OOHOOOM | OOO0O 063126 063130 063142 063144 004 .BLKB 3,0 5 LNDR ENREG N g 060714 060726 060730 .WORD 056422 . +SRMCS1-SREG $RMCS3-SREG :BLOCK FOR DRIVE 3 DRIVE3: g&e o 054 000 = 052064 WORD .BLKB CODE :PSEL, A16 AND A17 sWORD COUNT (NEG) 805FER ADDRESS CVLINDER ADD RESS :ADDRESS TODSAVE ALL RH/RM REG'S :STATUS WOR sREGISTER STORAGE CZRNAAO RMB0 gERF ERROR MESSAGE EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 60 K 16 e Bt ANNNNNANNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNN B B B g by B Bt g oy B Bt g by B ]Doy Sy g e e alalslslalelelely]l L L e R e >> e e e (=] B - >> wn wn » e o Donoonan a>> lalalalatlalalalalalalalalsl e ) e i e — i wnmunn b = O OO S NONOO—‘—'NO&—'ONNO? S 2 O = NN S NO S NN o e e o e e e e —d b b d e b e b b b ek O =D =D — b e e —t b = QONION) = NINI SN ==N =D WO SN ===\ NN = 3 = = —-O~NWVWN WWNOAS NN VNWININ = =2 O =N ONN) = N O = VI NWVIVINN = N NNOWV=0NO N = =00 O == NONOONONIOON=ON=NONNN=O=00NN) OO=NNOO==000 e e e 40 072335 41 072400 42 072444 — e 36 072062 37 072150 2222 b e e s i e e ) ) e e b e e b db ONNOOOOOOONION<=NINO == =0 - i e e o e o e e e o e o e e o e OO S NOON VI =W ERROR MESSAGES /RH_CONTROLLER INTERRUPT OCCURRED (RMAS=0)/ /UNEXPECTED ATTENTION OCCURRED/ /MASSBUS PARITY ERROR (MCPE=1)/ /MASSBUS PARITY ERROR (PAR=1)/ /ADDRESS PLUG CHANGE BIT SET/ /RH CONTROLLER DIDN'T RESPOND TO ADDRESSING/ /UNCORRECTABLE MASSBUS PARITY ERROR/ /FATAL MASSBUS PARITY ERROR/ /PERSISTENT DEVICE UNSAFE/ /OPERATION NOT COMPLETED WITHIN TIME LIMIT/ /DRIVE WENT OFFLINE/ /NO RESPONSE TO PORT REQUEST/ /HEADER CRC ERROR/ /DATA CHECK ('DCK') ERROR/ /WRITE CHECK ERROR = DATA CHECK (°DCK‘') SET/ /WRITE CHECK ERROR = DATA CHECK ('DCK') NOT SET/ /HEADER READ ERROR = °'FMT' BIT DROPPED/ /HEADER READ ERROR = HEADER COMPARE ('HCE') ERROR/ /FORMAT ERROR (°FER')/ /HEADER COMPARE ('HCE') ERROR/ /MISCELLANEOUS DRIVE ERROR/ /OPERATION INCOMPLETE ('OPI') ERROR/ /DRIVE TIMING ('DTE') ERROR/ /PARITY ('PAR') ERROR AFTER OPERATION STARTED/ /WRITE CLOCK FAILURE ('WCF') ERROR/ /INVALID ADDRESS ('IAE') ERROR/ /WRITE LOCK (‘WLE®) ERROR/ /DATA CHECK (°*DCK®') SET DURING WRITE CHECK COMMAND/ /RH CONTROLLER OR UNIBUS TRANSFER ERROR/ /BUS ADDRESS OR WORD COUNT INCORRECT/ /DATA COMPARE ERRORS = NO OTHER ERROR(S) DETECTED/ /CAN'T MATCH DATA READ WITH A PATTERN = UNKNOWN DATA PATTERN/ /ERROR BIT(S) SET, BUT NO ERROR SIGNALED BY THE RH CONTROLLER/ /ECC LOGIC FAILURE - POSITION REGISTER VALUE NOT VALID/ /BUS ADDRESS AND WORD COUNT NOT CONSISTENT/ /ECC LOGIC FAILURE = PATTERN REGISTER IS ZERO/ /SEEK INCOMPLETE (°SKI') ERROR/ /PROGRAM DETECTED POSITIONING ERROR/ /ECH ERROR = UNCORRECTABLE ECC ERROR/ /DRIVE UNSAFE ERROR/ SEQ 0205 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 61 L 16 »2Q 0206 ERROR MESSAGES 107 9 § 87 474 72550 4 072576 5 072635 6 072644 7 072710 8 072746 9 073016 10 073044 }% 073114 122 104 104 104 044 104 122 12% 12 122 122 115 101 DH1: LASCIZ /RMAS/ 122 122 1 % 111 111 115 DH3: DHé4: DH6: .ASCIZ .ASCIZ .ASCIZ REG ADR /DRIVE REG ADR /DRIVE /SRMADR/ +ASCIZ .ASCIZ /RMDB /RMSN 122 1 115 115 115 115 115 111 DH2: 1Zg DH14 11 127 DH15 104 123 102 DH16: D?;Efi .ASCIZ LASCII .ASCIZ +ASCII .ASCIZ /DRIVE RMDS RMER1 DATA/ GOoD RMER2 RMMR2 BAD/ / RMERT _RMCS2 _ RMDS /DRV RMCS1 RMEC2/<CRLF> /RMMR2 RMER2 RHEC1 RMLA RMAS RMDA RMBA /RMWC /RMBAE RMMR1 RMOF RMDT/<CRLF> RMHR RMDC RMCS3/<CRLF> RMAS/ / STATUS/<CRLF> CZRNAAO RM8O PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 62 ERROR MESSAGES 1 073134 g 0r3id0 1% 4 03168 S 073200 § 073204 073226 8 073230 10 073264 o001 001 001 002140 00214 002170 DT1: 00 040150 DTg: 146 4706 5032 702130 146 0017 Q44ri0 045030 002152 002146 Q02174 DI3: DT4: DT6: DT14: DT15: DT16: B 1 : .WORD +6 ,ATTN,S 0 DRIVERMERRS.means+s,RMERRS+4 ,RMERR .uORD .WORD .WORD .WORD .WORD .WORD .WORD DRIVE ,RD.ADR,RD ' DR./E.WRT.AD,WRT.WD,RD.WRD,0 SRMADR, SRMCS1.SRMCS2,SRMDS,SRMER1, SRMMR2, SRMER2, SRMEC1,SRMEC2,0 , SRMOB ,SRMMAR1, SRMDT, 0 SRMWC, imn SRMDA, SRMAS , SRMLA ,0 SRMSN,SRMOF , SRMDC. SRMHR, STATUS E , SRMCS3.0 002210 002212 000000 DT17: .WORD SRMBA SEQ 0207 ao g’g W= N NININININ) b b b b b b b b d d NN = OV 00NV oW S NN = O VNV 07327 1 3 7 07 Og 07 g 3 0 07342 07344 073461 073475 073514 073524 073535 073544 073553 073564 07 073614 073632 073646 073700 3 073716 073732 75 74006 27 074016 28 074030 074 30 074112 31 074130 32 074142 33 074167 37 074214 0742 39 074254 40 074272 07430 07431 074327 074343 07436? 7441 47 074444 074473 074512 50 074531 074560 S W mo ggi IS'ERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 63 07464 07470 074744 072022 7 75070 75116 75171 120 8‘0 Sg 10 040 120 040 Mg 12 040 040 040 040 122 122 040 123 123 102 040 040 105 040 040 110 122 040 123 123 103 040 125 040 124 040 124 040 040 040 040 105 104 040 114 040 114 124 124 105 040 105 105 105 040 101 103 101 122 828 1%2 124 1%% 1 040 124 040 040 040 040 115 115 040 124 124 125 040 040 130 040 040 105 115 LIN2C: .ASCIZ /PRSNT COMMAND= / LIN2P: .ASCIZ / PREV COMMAND= / LIN2S: .ASCIZ @+ ERROR_AT BAD TRACK/SECTOR® LINM3: .ASCIZ /ERROR AT C/ CLASCIZ / 1/ T: LINN3: .ASCIZ /PRSNT ADDR= C/ LASCIZ / S/ S: LINP%: +ASCIZ /_ _PREV ADDR= C/ LINS3: .ASCIZ /START CYL= / LINEN3: .ASCIZ / END CYL= / LINA3: .ASCIZ / ACTUAL CyL= / 154 LINTS: .ASCIZ / TRK= / 122 LINCA3: .ASCIZ / RMDC= / 104 LINDA3: .ASCIZ /RMDA= / 105 LINB3: .ASCIZ /RMBA= / LINW3: .ASCIZ / RMWC= / 122 101 LINST3: .ASCIZ /START TRK= / 101 LINSS3: .ASCIZ /START SEC= / INM4: .ASCIZ /BUFFER ADDR= / 10? LINS4: .ASCIZ / WRD CNT= / 127 101 LINX4: .ASCIZ /_ACTUAL NMBR WRDS XFRD= / 120 12; 127 101 105 11 12§ 10 103 04y 117 104 116 106 040 157 122 101 049 1 040 117 117 110 122 104 SEQ 0208 153 120 135 1 000 123 008 12 10} 105 101 122 103 103 122 122 103 126 - 126 126 126 1%7 122 122 125 1% 126 040 103 040 103 1264 105 122 116 15 1 103 040 040 105 105 117 040 116 040 117 040 117 040 127 C 104 LINDS: - .ASCIZ LINBS: .ASCIZ LINPS: .ASCIZ LINSS: .ASCIZ LINEPS: .ASCIZ LINEOS: LINB6: LINC6: LING6: LINRG6: LINUO6: LIN7M: LIN7P: LIN7S: LIN?T: LIN70X: LIN7X: LIN7OR: LIN?7R: LIN8M: LIN9B: LIN9H: LIN9I: LIN9E: LIN9G: LIN10A: LIM LIN10C: LINT0H: LIN11H: LIN11: /EXPCTD DATA= / / RECEVD DATA= / / WORD POS= / /HEADER FROM ERROR SECTOR= / /RMEC1=_/ +ASCIZ .ASCI] +ASCIZ .ASCII LASCII / RMEC2= / /SECTOR IS ECC COPRECTABLE / /SECTOR READ CORRECTLY / /CORRECTED ON / / RETRIES/ /UNCORRECTABLE AFTER / /__TOTAL MISPOS ERR= / /TOTAL SEEKS= / . /_ TOTAL SKI ERR= / /TOTAL ERRORS:/ / WOFL:/ / WRDS WRITN:/ / ROFL:/ / WRDS READ:/ /ERROR DURING RETRY/ /DATA COMPARISON ERRORS/ EXPCTD RECEVD/<CRLF> / DATA/<CRLF> DATA /LOC RECEVD/<CRLF> / DATA/<CRLF> /LOC /TOTAL COMPARE ERRORS= / /THE DATA COMPARED OK/<CRLF> /ERROR BURST BEGINS AT WORD / / IN DATA FIELD OF ERROR SECTOR/<CRLF> /ERROR WAS NOT IN THE DATA READ - /<CRLF> /ECC CORRECTION CAN'T BE PERFORMED/ /ECC CORRECTION RESULTS/<CRLF> CORRECTED /<CRLF> BAD / .ASCIZ .ASCIZ /CONTENTS OF ERROR SECTOR (REPORTED ABOVE)/<CRLF> . HEADER/<CRLF> /ADDR .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ _ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCII +ASCIZ .ASCII +ASCIZ .ASCIZ .ASCIZ .ASCIZ +ASCIZ /ADDR DATA DATA/<CRLF> . CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 63-1 D 1 : ERROR MESSAGES 61 075 1% 6§ 75 075 § 63 64 075 65 0755 66 075236 101 040 040 040 040 122 104 000 105 106 126 LIN11A: BLNKS4: BLNKS3: BLNKSZ: BLNKS1: .ASCIZ .ASCII .ASCII .ASCII .ASCIZ LINXS: ,ASCIZ /ADDR / / / / / / / / DATA/<CRLF> /RETRIEVED BY A RDHD COMMAND/ SEQ 0209 SEQ 0210 COMMA: .ASCIZ 116 116 122 OSS 052 126 077 MSGON: ENDTST: MSGFOR: DEASSG: DRNUM: 077 077 103 116 116 116 05 10 105 105 105 oog 1 077 106 m 040 131 111 MSWRO: 101 209 S% 0;97 88 54 8770 7 31 076053 32 076064 33 076135 34 0761 35 076141 36 076143 37 07 076231 9 076252 40 07630% 41 07633 76334 43 076341 07636% 45 07644 076506 47 076544 48 076562 49 076646 S0 076674 51 076723 53 077027 55 007 200 040 200 116 131 056 040 040 200 200 200 072 116 040 500 200 077 105 .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ ASGND: -.ASCIZ NEDCLK: .ASCIZ .ASCIZ N: ASCIZ Y: PERIOD: .ASCIZ INVLD: .ASCIZ .ASCIZ 114 12 05 105 040 SURE: .ASCIZ FEONLY: .ASCIZ on 041 7 200 113 NODRVS: .ASCIZ 116 NOENTY: .ASCIZ 104 00 ‘ %1 200 018 57 077176 52 040 00 DROPNG: .ASCIZ ENDPAS: .ASCIZ ENTCOM: ENTLMT: ENTADR: COLON: E: BADENT: MERR1: MERR2: MSFULL: MSGCTS: 07710 56 077131 106 116 12 116 111 101 116 102 117 MESFE: .ASCIZ <CRLF>/DRIVE SUMMARY, / ON / <CRLF>/END OF TEST / /FOR / <CRLF>/+++++ DRIVE DEASSIGNED/<CRLF> <CRLF>/xt«xx DRIVE #/ / START ED/ ;C’LF><07>/?-'L' OR 'P* CLOCK REQUIRED ON SYSTEM/<CRLF> /N /v/ /./ / 2CAN'T WRITE IN 'READ ONLY'® MODE/<CRLF> /7 ?2INVALID COMMAND/< RLF> <CRLF>/ENTER C OMMAND: / <CRLF>/ENTER ADDRESS LIMITS:/<CRLF> ;C’LF>/ENTER BAD SECTR ADRS:/<CRLF> /NONE/ / ?INVALID ENTRY/<CRLF> <CRLF>/FAILED TO RE TRIEV E BAD SECTOR FILE(DEC144) ON / <CRLF>/INVALID FILE(DEC144) STRUCTURE ON / /= BAD SECTOR TABLE IS FULL */<CRLF> /CYL,TRK,SEC= / <CRLF>/DO YOU Ul?fl T0 $XERCISE ONLY FE CYLINDERS (L) ¥ 2 / /ARE YOU SURE (L) N ? < RL§>/; EXERCISER WILL OPERATE ON FE CYLINDERS ONLY */<CRLF> <5RI.F>/ MREAD: .ASCIZ (OFLOW= 2,147,483,647.)/<CRLF> <07>/?FATAL OR EXCESSIVE ERRORS/ <CRLF>/END OF PASS #/ LASCII JASCIZ o et /anawsttetnsnanannennwnvnn/ /nnxxx«/<CRLF> <07><07 LASCII S <CRLF><LF>/#xxxx PERFORMANCE REPORT w#www/ OVRWRT: .ASCII 055 122 .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ /=/ <11 /DRIVE/ / OFFLINE/ 7/ ONLINE/ / NOT BEING TESTED/ / ALREADVRESING TESTED/ 09 @ NOT AN / NOT PRESENT/ / NOT AVAILABLE/ / UNSAFE/ / LOAD DEVICE/ <CRLF>/DRIVE STATUS:/ //RM80/ N 117 105 117 052 OS§ 12 007 000 000 000 24 075700 25 075734 /./ TW LASCIZ DASH: LASCIZ TAB: A 111 UNTMSG: .ASCIZ 106 UNTOFF: .ASCIZ 116 UNTON: .ASCIZ 117 UNTNOT: .ASCIZ 114 UNTASN: .ASCIZ 117 NOTRM: .ASCIZ 117 NOTPRS: .ASCIZ 117 NOTAVL: .ASCIZ TSAF: .ASCIZ 119 LODEV: .ASCIZ 117 123 SYSTAT: .ASCIZ 0: .ASCIZ 07 052 REPHD: .ASCIZ 055 STAR30: .ASCI] STARS: .ASCIZ 052 122 SUMHD: .ASCIZ T TR 000 oog 12 117 117 116 101 116 116 116 125 114 104 115 012 052 052 104 PN 040 200 106 200 200 000 U 26 075753 075760 28 075776 29 076003 30 076034 05 P — g 075 07530 8 075304 9 07531 10 07532 11 07533 1§ 075355 13 075403 14 0756420 15 075435 16 075454 17 075464 18 075501 19 075520 20 075525 21 075566 22 075617 23 075626 0S5 011 104 040 040 040 040 040 040 040 040 040 200 122 200 052 052 200 S 075276 .ASCIZ /% QUES: EQUAL: .ASCIZ /=/ 000 000 PR g 875 TELETYPE MESSAGES s § 075272 & 075274 .SBTTL <CRLF>/ ! CUSTOMER DATA WILL BE OVERWRITTEN !; <07><07><CRLF><LF> <CRLF><LF>/NO DRIVES ASSIGNED/<CRLF> <CRLF>/PROGRAM LOCKED IN ‘READ ONLY'* MODE/<CRLF> /* NO ENTRIES */<CRLF> I 1 W TELETYPE MESSAGES e CZRNAAO0 RMBO PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 64 CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 64~1 F g 77 § 77 85 11 23 TELETYPE MESSAGES 105 104 1g6 1 g 0774 0774 00 00 10 154 127 110 6% 077 4 00 0 &»H 5 LSTHDR: .ASCIZ LASCIZ /+ ALL CURRENT ENTRIES LOST «/<CRLF> ALOST: 181 131 HDASN: .ASCIZ @HDA S/N: 3 1 8 131 101 <CRLF>/DEC144 AND MANUAL BAD SECTOR LIST/<CRLF> .ASCIZ @DRV S/N: .ASCII +ASCIZ <CRLF>/WAITING 2 MINUTES...TO START/<CRLF> DRVSN: E DRIVE PARAHETERS (LWN?2/ MSPRM: .ASCIZ <CRLF>/CHANG <CRLF>/TYPE “C TO ABORT/ MSWAIT: SEQ G211 5 SEQ 0212 LETYPE MESSAGES ;PARAMETER ENTRY TABLE % 1462 PARLST: .WORD PAR1,7936.,WRDCNT 77632 01740 PAR2 3;9%7 ,INTRVL "WORD 494 01 877779 _87764 om%' &S 0774 "WORD PAR19,32767. ,PASSES 0014 g 077777 077502 100012 6 077510 07795 7 077516 077752 g omg« 07776 "WORD "WORD "WORD 000017 00147 000001 001474 %387 881476. 1 000001 000001 000001 000001 "WORD "WORD "WORD "WORD "WORD JWORD 001500 001502 001504 oo1sos 00151 9 077532 10 077540 11 077546 1§ 077556 13 077562 }'s' 077570 10000 077772 100022 100032 077742 000000 16 077572 040 057 040 SLASH: 18 077632 19 oma% 20 07765 21 077662 22 077672 127 111 120 115 115 122 116 101 101 1 13:. 124 1264 130 116 24 077712 25 077722 115 115 11 101 200 17 077576 115 077702 103 101 M PAR3: PAR4: PARS: /PATTERN/ /MAXCYL / /MINCYL / 116 130 PAR7: PAR8: .ASCIZ .ASCIZ /MINTRK / /MAXSEC / 104 116 PAR10: PAR11: .ASCIZ .ASCIZ /BADBLK / /RANDWC / 124 104 123 123 PAR1S: PAR16: PAR19: PAR20: .ASCIZ .ASCIZ .ASCIZ .ASCIZ /WRTCHK / /ENDING / /PASSES / /MESSAGE/ 130 PARG: 116 PAR9: 122 101 124 PAR14: 122 101 116 PAR21: 127 105 120 115 30 077772 31 100002 32 100012 33 100022 gg 100032 101 101 122 116 101 105 .ASCIZ @/ @ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ PAR1: PAR2: 077762 102 122 PAR16.1.ENDING PAR15.1.WRTCHK PAR20.1.MESSAGE PAR21.1. PAR10.1.BADBLK ;TABLE TERMINATOR O <CRLF>/CHANGE PARAMETERS (L) N ? / 115 27 077742 28 077752 PAR3,15.,PATTERN PAR11,1.RANDWC PAR14.7.RATIO ASKPAR: .ASCIZ 110 07773 /WRDCNT / ZINTRVL / .ASCIZ /MAXTRK / .ASCIZ /MINSEC / .ASCIZ /RATIO / .ASCIZ gg .EVEN 38 39 100042 100062 -PARAMETER TABLE POINTERS FOR ADDRESS LIMITS TABLE: .WORD TABLEQ ;PARAMETER TABLE FOR DRIVE 0 42 100044 100046 100130 100176 .WORD "WORD. TABLE1 TABLE 100052 100056 100056 - 100060 1003;5 100 100426 100474 "WORD "WORD "WORD .WORD TABLE& TABLES TABLE TABLE7. 077672 000000 045546 TABLEO: .WORD PARS,0,MINCYL+DRIVEO 07770 oooogg 04555 PARG.0;MAXTRK+DR]IVE 100050 1oo§t.4 puary 8 3 1oo115 100120 100126 077662 077712 077732 077722 000000 2‘. 100106 .WORD TABLE *PARAMETER TABLE FOR DRIVE 1 *PARAMETER TABLE FOR DRIVE 5 *PARAMETER TABLE FOR DRIVE *PARAMETER TABLE FOR DRIVE & *PARAMETER TABLE FOR DRIVE S *PARAMETER TABLE FOR DRIVE 9 *PARAMETER TABLE FOR DRIVE :PARAMETER TABLE FOR ADDRESS LIMITS N 100070 100076 3 56 100062 o 4 - -4 m~N RNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 65 000000 000000 045544 o:.sssg .WORD .WORD 000036 000036 045556 045554 "WORD "WORD JWORD 000000 047762 "WORD TABLE1: .WORD PAR&,0.MAXCYL+DRIVE PAR7,0,MINTRK+DRIVE PAR9.30.,MINSEC+DRIVE PARS8.30..MAXSEC+DRIVE : TERMINATOR 0 PARS,0,MINCYL+DRIVE1 100226 077732 100234 077722 100242 100244 100252 100260 100296 077672 077662 07771 077705 100274 077732 000036 054422 100302 077722 000036 054420 100310 056626 056624 056632 056630 .WORD .WORD JWORD 077672 077662 077712 077702 000000 000000 000000 000000 100350 100356 077722 000036 100360 100366 100374 100402 077672 662 077712 077702 000000 000000 000000 000000 061042 061040 061046 061044 TABLES: .WORD .WORD .WORD "WORD 100416 100424 077722 000036 061050 "WORD JWORD 100342 077732 000036 056636 1006410 077732 000036 061052 | PAR9.30.,MINSEC+DRIVE3 : TERMINATOR O PARS.30..MAXSEC+DRIVE3S PARS,0.MINCYL+DRIVE4 TABLE4: .WORD .WORD~ PAR%,0,MAXCYL+DRIVE4 PAR7.0,MINTRK+DRIVE4 JWORD PARG.0,MAXTRK+DRIVE4 "WORD 100312 100320 1oos§2 1 "WORD "WORD WORD "WORD PAR9.30.,MINSEC+DRIVE4 PARS.30..MAXSEC+DRIVE4 O : TERMI NATOR PARS,0,MINCYL+DRIVES PAR&,0,MAXCYL+DRIVES PAR7.0.MINTRK+DRIVES PAR6.0MAXTRK+DRIVES PAR9.30.,MINSEC+DRIVES PARS.30..MAXSEC+DRIVES : TERMINATOR O 100426 07767 063256 TABLEG: .WORD PARS,0,MINCYL+DRIVE6 100454 077 388338 063254 -WORD PAR&.0.MAXCYL+DRIVES 100445 07771 063262 "WORD PAR7.0.MINTRK+DRIVE® 100450 100456 100464 077702 87774 07772 (030000 000036 36 063260 823 66 264 "WORD JWORD "WORD 100474 077672 000000 065472 TABLE7: .WORD 100510 100516 1oos§4 100532 07771 7772 777 07772 547 547 550 0655 .WORD "WORD .WORD "WORD 100472 100505 100540 7;96 000 547 ‘WORD PAR6.0.MAXTRK+DRIVE6 PAR9.30.,MINSEC+DRIVE6 PARS.30..MAXSEC+DRIVES O : TERMINATOR PARS,0,MINCYL+DRIVEZ "WORD PAR&.0.MAXCYL+DRIVE? WORD O PAR7,0,MINTRK+DRIVE? PARG.0MAXTRK+DRIVE? PAR9.30.,MINSEC+DRIVE? PAR8.30..MAXSEC+DRIVE? : TERM] AdE A s PARS,0,MINCYL+DRIVE3 PAR&,0,MAXCYL+DRIVE3 PAR7,0.MINTRK+DRIVE3 PAR6.g MAXTRK+DRIVE3 000000 000000 PARY, 6.,n1usscoonxve5 PARS.30..MAXSEC+DRIVE : TERMINATOR O A TABLE3: .WORD .WORD JWORD ~WORD 000036 - an AR A 054412 054410 054416 000000 054414 000036 gsgsos Al A 052204 "WORD "WORD WORD PARS,0,MINCYL+DRIVE PAR%,0,MAXCYL+DRIVE PAR7.0.MINTRK+DRIVE PARG.0,MAXTRK+DRIVE T e TABLE2: .WORD JWORD "WORD "WORD 000000 000000 338838 PR PP 077672 077 07771 07770 PP 100176 100204 100212 100220 PAR9. g..nlns£c+oaxve1 PAR8.30..MAXSEC+DRIVE1 : TERMINAT O TOR PTG 05;176 052174 052202 052200 77 1001 100166 100174 R 777 "WORD "WORD WORD PAR&,0,MAXCYL+DRIVE1 PAR7.0,MINTRK+DRIVE1 PARg. MAXTRK+DRIVE1 PR .WORD JWORD -WORD 827760 77 77 1oo132 0 10014 100125 AR oA TELETYPE MESSAGES p— SEQ 0213 CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 65-1 1 | TO SIZE MEMORY ROUTINE .SBTTL 1 SEQ 0214 e, CZRNAAO mo PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 66 ROUTINE TO SIZE MEMORY 100670 100672 000207 000006 000004 000116 000114 100672 TST BR SUB MOV MOV MOV MOV MOV MOV MOV MOV RTS SLSTAD: .WORD (R1)+ oz m $:STEP TO NEXT ADDRESS 33 TRY ANOTHER *3DROP BACK SRESTORE THE STACK <sfi)o.mnnv.c+2*;RESTORE ERROR VECTOR (sm.amVEC 4 (SP)+.a#116 :sRESTORE MEMORY ERROR VECTOR (sp>+.m1l. ..usr ADDRESS R1,SLSTAD RESTORE R1 (SP)+,R1 (SP)+.RO ..aesrone RO PC 0 ::CONTAINS THE LAST ADDRESS T e e T e 2s: oos7;1 000775 162701 010006 012637 012637 012637 012637 010137 012601 012600 T 000002 100626 100630 100632 100636 100640 100644 100650 100654 100660 100664 100666 T ADDRESS :;FIRST TEST THIS ADDRESS T zoboo.m (R1) e T MOV ST e 18: S 100620 012701 020000 100624 005711 $3SAVE R1 ON THE STACK R1.=(SP) MOV 100544 010146 MEMORY ERROR VECTOR PS & PC :3SAVE ari14,=-(sP) MOV 100546 o1§7l.e 000114 a#116,=(SP) MOV 100552 81 746 000116 ::1GNORE PARITY ERRORS WHILE SIZING #116,a0114 MOV 100556 012737 000116 00C114 #RTI.aM16 MOV 100564 012737 000002 000116 ::SAVE PRESENT ERROR VECTOR PS & PC ueaévec.-(sm MOV 000004 013746 100577 (SP) @NERRVEC+2,= MOV 100576 013746 000006 :SAVE THE STACK POINTER SP.RO MOV 100602 010600 PS mssn’r THE TO PS ERRVEC ::SET THE OLD PSW AND PC ON STACK ;sPUSH TRAP 100604 104400 :SAVE THE PSW IN @#ERRVEC+2 2’ (SP)+,@#ERRVEC+ MOV 015637 000 1 TIMEOUT FOR’ ..ser ,a#ERRVEC #2$ MOV 000004 100612 012737 100632 S ..save RO ON THE STACK 010046 e RO,=(SP) 100542 . e MOV $#SLSTAD WILL CONTAIN THE LAST AVAILABLE MEMORY LOCATION. ¢ el o $SIZE: . e PC,$SIZE JSR RETURN e v o L s*CALL: T ;:tttttttttt.ttttttttt'tt'tttfilttttttttttttttt.ttt.tttttttttttttt | BUSADR = GET BUS ADDRESS AND VECTOR ADDRESS BUSADR - GET BUS ADDRESS AND VECTOR ADDRESS %4 ADDRESS OF THE RH/RM INSURE THEITBUS IS USED TO ADDRESS. ROUTINE THE :THISSETUP WILL ALSO READ THE ADDRESS PROPER FOR g _:NO{E : THIS ROUTINE DESTROYS RO-R4 :1S 004537 101064 000756 012700 001274 104401 101055 011046 36 101004 104401 37 101010 104402 104411 ‘ 2$: 42 101026 000760 45 101040 012021 43 101030 44 101034 46 101042 012700 012701 001272 040310 3s: 000207 49 101042 50 10105 122 122 TYPE BLNKS2 MOV TST BNE JSR (SP)+,R1 CFLAG 1% RS, CK.NUM MOV MOV #SRMADR RO #RMADR ,R1 MOV (RO)+,(R1)+ BR . MOV 012021 2; 101044 RS,CK.NUM 1$ #SRMVEC RO +MRMVEC (RO) ,=(SP) RDLIN 38 101012 012601 39 101014 005737 001340 40 101020 001341 41 101022 004537 101064 RTS 115 115 103 126 (SP)+,R1 CFLAG i$ JSR Be MoV TYPE MOV TYPOC . 075233 RDLIN MOV TST BNE MRMCS1: .ASCIZ MRMVEC: .ASCIZ 2% (RO)+,(R1)+ PC @RM(31=3 @GRMVEC=a :TYPE 2 BLANKS sGET THE ENTRY ;ADDRESS OF ASCII TEXT sWAS IT CONTROL C ? :BR IF YES JENTER AND STORE THE NEW ADDRESS sERROR EXIT sVECTOR ADDRESS :*RMVEC= :PRESENT RH/RM VECTOR ADDRESS ON THE STACK :TYPE IT :TYPE 2 BLANKS :READ THE ENTRY sASCII TEXT ADDRESS sWAS IT CONTROL C ? :BR IF YES :ENTER AND STORE NEW ADDRESS sERROR EXIT :FIRST ADDRESS OF NEW PARAMETERS :FIRST ADDRESS OF WHERE TO PUT THEM :BUS ADDRESS :VECTOR ADDRESS sRETURN - e e e e e T T e T e e W -— :TYPE 57 VA BLNKS2 N TYPE 001340 30 100762 31 100766 32 100770 33 100774 34 101000 35 101002 TYPOC v - 075233 SFIRST A.DDRESS J'RMCS1="* :PRESENT RMCS1 ADDRESS L 104411 012601 005737 001361 104401 #SRMADR,RO .MRMCS1 (RO) ,=(SP) S 26 100750 27 100752 28 100754 29 100760 25 100744 MOV TYPE MOV :TYPE A CR=LF :FIRST TIME THRU ? :BR IF YES ;CR=LF :CLEAR CONTROL C FLAG i -« AR 104402 1$: 012700 001272 21 100 2§ 100734 104401 101046 23 100740 011046 +SCRLF #-1 18 ,SCRLF CFLAG . 24 100742 W1§23 001340 TYPE INC BEQ TYPE CLR :NO==BRANCH :YES==CLEAR THE REQUEST FLAG e 104401 005227 001402 104401 005037 ;INPUT FROM TTY REQUESTED? e 16 100706 17 100712 18 100716 19 100720 20 100;%16 001336 001203 177777 CHGADR 3s CHGADR e 14 100700 15 100702 005037 B8GE CLR e BUSADR: TST e 001336 ‘I§ 100674 005737 002053 RETURN : }1 ( PC ,BUSADR e JSR G : 3 e 9 10 e T T :FROM THE TTY IF REQUIRED. 2 e .SBTTL rag— SEQ 0215 T T T T J R ; CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 67 1 CZRNAAO RMB0 PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE 68 SEQ 0216 CK.NUM = CHECK NUMBER (OCTAL) CK.NUM = CHECK NUMBER (OCTAL) % .SBTTL 4 ;THIS ROUTINE CHECKS AN ASCIZ STRING FOR LEGAL CHARACTERS sAND FORMS AN OCTAL NUMBER IN R2 9 3 sCALL: S "8 3 3 8 ) : }? 1% 101064 13 101066 14 101070 15 101072 16 101076 17 101100 18 101102 19 101106 20 101110 21 101112 22 101116 23 101120 246 101122 25 101124 26 101126 27 101130 28 101132 29 101134 30 101140 31 101142 32 101144 33 101146 34 101150 35 101152 36 101154 37 101156 38 101160 39 101162 4) 101164 41 101166 42 10117g 22 101172 010246 ©10346 01044 000006 012703 005002 112104 001424 120427 000060 103425 120427 000067 101022 006302 103420 006302 103416 006302 103414 042704 177770 060402 005303 001401 000754 112104 001004 005702 001401 010210 005725 012604 012603 012602 000205 22 101174 47 zs MOV MOV JSR RET #ADR RO #ADR,R1 R5,CK.NUM RET CK.NUM: MOV MOV MOV MOV CLR 18: MOvB8 BEQ CMPB BLO CMPB BHI ASL BCS ASL BCS ASL BCS BIC ADD DEC BEQ 2$: 3s: 4$: 5%: MOVB BNE TST BFQ MoV TST MOV MOV MoV RTS CYLNDR: .EBLKkW 102200 ENDPGM=. 000200 .END 200 Rg.-(SP) R3,=(SP) R4,=(SP) R3 R (R1)+,R4 R4.4#'0 sADDRESS TO PLACE NEW NUMBER sADDRESS OF ASCIZ STRING :R5sR5 C CHANGED sERROR EXIT sNORMAL EXIT R& $SAVE *MAX OCTAL DIGITS IN THE NUMBER SFINAL OCTAL VALUE *GET CURRENT POINTED BYTE *BRANCH,IF TERMINATOR DETECTED SSMALLER THAN ASCII=0 ? *YES,ERROR EXIT :LAR sYES,ERROR EXIT sSHIFT LEFT s ONE #177770,R4 R4.R2 R3 2s 1$ (R1)+,Ré4 5% R2 4$ R2, (RO) (RS3+ sOCTAL DIGIT sERROR IF CARRY BIT SET sCHOP OFF HIGHER BITS sAPPENDING CURRENT DIGIT TO NUMBER sDECREMENT BYTE COUNT sBRANCH,IF LAST BYTE sLOOPING BACK sCHECK TERMINATOR sERROR EXIT sFINAL VALUE= 0 sYES,THEN NOT REPLACE THE ORIGINAL VALUE sREPLACE THE ORIGINAL VALUE sADJUST FOR NORMAL RETURN sRESTORE R4 sRESTORE R3 sRESTORE R2 SEXIT 258. sONE SECTOR WORD CTR MAX SIZE SEQ 0217 QOO OPNN=O WWSH IO =2 NN N ANNO OO O OO N0 S =2PNOWSONOO0O00O0 Y Y Y T a T P nunnunnunn > wv = 0001 ACK ACPUOP= ACTDRV 04025 ACTSTR 040251 DW0 = (=il = NNNOOOOOO OOV = O OO0 = 0 (=d=d=l=l=l=l=] QOO0 (== =l=l=l=] SO o W o o AR - o ASGN6 ASGN7 ASKPAR ASNERR ASNLST nunuwnnununN ABASE = 176700 ABNRML 031264 nowonn SYMBOL TABL AENVM = 000000 ALOST AMADR1= 077262 0000 = BAI BEGCOD 001 BEGPAT 001 ASGN4 O OB W=N—=O OO S OHOCOOHHTOVIOOSHSONNN AFATAL= . T Tl a Tty v CZRNAAO ansg PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 68~1 2| SEQ 0218 EM20 EM21 EM22 EM23 EM24 EM25 EM26 EM27 E EM31 EM32 EM33 E EM35 E EM37 0 070223 070256 070307 070361 772 070440 070461 070512 070565 0644 07071 07077 071020 7756 071055 071107 071152 071205 071262 071324 on 071413 0 071475 071544 071610 071671 071765 072062 072150 072222 070051 072277 EM50 EM51 072335 0724 EM52 070105 E 072444 EM60 ENDCMP 014334 ENDCON 001446 ENDING 0015 S 075734 E ENDPGM= 102200 ENDSEK 001452 EM4O EM41 EM42 EM3 EM4s EM4S EM46 EM47 M5 075760 ENDTST 076302 ENTADR ENTCOM 076231 ENTLMT 07625 ENTPR EOP1 00554 031344 ERROR = 104000 ERRVEC= 000004 FACTOR 016240 FAIRNS 001332 FEFLAG 001434 FEONLY 076674 = 000020 FER 001430 FE1 001432 £, 7 FILBUF 0166 0324 FILLZ 032572 FILLO 012166 FMTER FMT16 = 010000 FRSTER 001356 = 000002 F = 000004 F1 = 000010 F2 = 000020 F3 = 00004 Fé GENDPB 067556 GENPAR 017370 GENRCG 067576 GETADR 027650 GETBUF 016242 027550 GETID GETLMT 027462 TPAT 0200 GETREG= 000141 GETREM 032014 GETREQ 045366 = 000001 G0 GODRIV 016710 GTSWR = 104406 = 000200 HCE HCEER 012230 = 002000 HCI HCRC = 000400 HCRCER 011054 077320 HDASN 001344 HOUR = 000011 T 001314 HZ = 805000 12106 IAEER IBSAVE 035226 007104 IDLE = 000100 = 000001 ILF ILR = 000002 INCHRD 024644 o~ it INCMIS 024714 INCSKI 024670 INCSOF 824 20 024740 INCTOT INTRVL 001464 07820 INVLD 1504 MESSAG MINCYL= 000130 MINSEC= 000140 MINTRK= 000134 MINUTE 001346 2124 MNTBL MOH = 020000 MoL = 010000 077131 MREAD 10TVEC= 00002 = 000100 I 042452 ISR = 010000 IVC 025254 KSR 025262 KSR1 = 002000 LBC = 002000 LBT = 000012 F 001366 LIMIT 73475 LINA3 073544 LINBS 073716 LINB5S 074030 LINB6_ 073524 LINCA3S 074063 LINC6_ LINDA3 073535 LINDEC 023234 07370 LINDS LINEN3 073461 LINEOS 074016 LINEPS 074006 021134 LINE1 021214 LINE2 LINE2A 021364 LINE2B 021402 021654 LINE LINE3A 021662 LINE3B 021670 LINESC 021702 LINE3D 021712 LINE3E 021760 LINESF 022046 022324 LINEG LINES LINESA LINESB LINE6 LINEGA LINEGC LINEGD LINEZ LINE7A LINES LING6 LINM3 L INMS LINN3 LINOCT LINP LINP 022414 022556 022624 82 666 S 700 022706 822716 022746 02307 8;317 411 07336 73614 73405 ;3202 8 4§6 73736 MRMCS1 MRMVEC MSFULL MSGCTS WOOOONOOD EMI10 EMN EM12 EMI13 EMI4 EM15 031370 EOP2 75%76 EQUAL 01 gk ERCTR ERPRC1 007 g ERPROC 00734 = 040000 ERR [el=lrl=l=llelelelel=l= === 001400 ECSEC ECWRD 001406 ECWRDY 001414 EMPTYQ 045332 EMTVEC= 000030 067646 EM oW {=l=] SYMBOL TABLE 10104g 10105 076506 076544 NOTRM 075403 NOTSAF ?75454 SA = 100000 O;FDIR= 00000} 00744 OFLIN 327 ES 135 ONESEC PE = 020000 = 020000 OPI__ 1 OPIER 0117 OPIERT PT 0412 (e [wlwlwlwlelele B Yo CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 68-2 ORDERQ OVRWRT 15;0 0767 8 132 PWRFLG 037716 PWRVEC= 000024 RMHR = 00003 RMINIT 04032 SPOTCK SRCHWT SWS Sflg Sw RMVEC 040312 STAR3 TABLEO 1000§2 SC 043400 PACK PAR = 0g0010 PARENT 031030 PARER PARLST PAR1 PAR10 QDRV 0425 4 QUES 075272 RANCYL 017600 RANDOM RANDWC RANPAT RANSEC RMLA = 00002 RMMR1 = 000024 RMMR2 = 00004 RMOF = 00003 = 000024 SN_ = 000030 RMTMR 44152 PAR14 PAR15 PAR16 PAR19 PAR2 PAR20 PAR§1 PAR PARS PARS PARG PAR7 PARS PAR9 PASSES PAT = PATTER PCLOCK PERFEX= PERIOD PFECH PFECH1 PFEC PFECH PFECH4 RANTRK RANXIT RATIO ROCHR = RDDAT RDHD = RDLIN RDONLY RDY RD.ADR RD.RM RD.RM1 RD.RM3 RD .RM& RD.WRD READDR READHD READIN= RECAL = RECALT RECALO REDAPK RELBUF RELSE = 000 REPHD RMWC = 000002 RM80 041000 RNOP = 000101 RTC _ = 000117 RINCTR 015510 TURN 031766 6 =2000006 =%000007 0734%3 037736 SAVEFG 040252 SAVER1 001360 v 001362 SAVREG= 104412 043334 026464 SCOPE = 000004 $C04 = 000400 SC1_ = 000100 sC10 = 001090 sc11 043672 $C1§ 043750 sC1 044012 sc2 = 000200 SC§0 = 000 PGE PGM PIP PIRQ RESREG= 104 RESVEC= RETRY RHEXT PAR11 PFTSTN = = = = PIRQVE= POSER PROCES PRTBAD PRTIN PRO = PR1 = Pl; = PR = PR PRS Flg PR PS PSEL PSW = = = 2 = = = RANS1Z REPLZ RMADR RMAS RMBA mmg RMCS MCS; RMCS RMDA RMDB RMDC RMDS RMDT RMEC1 RMEC2 RMERRS RMER RME 032 SCé SC5 scs SC SDETAL SEARCH= 43406 416 4;524 6 375 13 SECLMT SECOND 16;6 13 2 SEEK = SEEKFG SELDRV= SETFMT= 12 254 14 14 SETVEC 37 T.1E ; SHDTYP SIZE70 M = SKIER SKIP SLASH 6 5024 1 4 7757 SSE = SSEI = STA STACK = START START] STARTS STARS STATIN STATIS STATPR STKLMT= STNDAT sT0 sT101 ST0 ST10 ST05 ST06 ST107 ST08 ST09 SUMARY SUMHD SUPRS SUPRSL SUPR1 S SURE SVRH70 SWR SWREG SWTIM = 000040 = 000100 = 000200 SWw8 = 000400 SW9_ = 801000 SYSTAT 075501 T 073402 TAB 075302 TABLE 100042 TABLE1 100130 TABLEZ 100176 TABLES 100244 TABLE4 100312 TABLES 100360 TABLE6 100426 TABLE7 100474 TAB.XY= 001114 TAP_ = 040000 TBITVE= 000014 D 042514 THEAD 017514 TIMER 040256 TKVEC = 000060 TPVEC = 000064 VE= 000034 = 04 TRFER 012272 T 00%4%¢ TRNSWT 040244 TRTVEC= 000014 IST” 02355 TY! 6 TYH4DA_ 032652 TILIST 0306 TYPDRV SWo = SWo0 = sSWwol = sSWo2 = TYPDS = 10440 PE = 12“0 TYPHDA 032656 TYPOC = 104402 SWo5 = $W9 = TYPRI4 0 UNS = SW03 SWoé = = SWo7 S S Wi = = = = swWil = W13 SWi§ SWi5 SW Sw S = = = = = = TYPON = TYPOS = 1 UNTASN UNTMSG UNTNOT W10 = UNTOFF swig UPE = UNTON = ust = use2 = Usé = = Wi WAIT WATPAK oM SYMBOL TABLE 0000000000000 0000 SEQ 0219 MMAMmIaImmMmMMmMMmMMmMMmMMmMMmMMmMNMoO o N MmMMmMMmMMmMMMMMMMMMmMMMMMMmSm CZRNAAO RM80 PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE 68-3 . CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 68<4 SYMBOL TABLE WE WCHKX = WCkD = 000151 WCKER 01054 WCKHD= 00015 WC.HK 043246 WLE = 004000 WLEER_ 012140 WRDCNT 001462 = 004000 WRTCHK 001502 WRTDAT= 000161 WRTHD = 000163 WRTPK 017000 WRT.AD 045032 WRT.RM 044750 WRT.R1 045026 WRT.R3 045052 WRT.RG 045056 WRT.RS 045060 WRT.WD 045030 001444 XXDP 076137 ZEROS 00237 ZROIND 001354 SAPTHD 001100 SATYC 036556 SATY1 5 SATY3 SATY4 036574 $AUTOB 001150 $BASE 001262 $BDADR 001136 $BDDAT 001142 $8DSEC= 000146 $BELL 001176 $8UF = $COW1 001266 1270 $COW2 SCHARC 0361 SCKSWR 033626 SCMTAG 001114 ~ A SERRTB 003370 SERRTY 035230 SMSGLG 01%24 SMSGTY 0g1 g SMSWR 8 43 01%3 SMTYP1 SRMDC = 002174 SRMDS = 002152 SRMDT = 80 186 SRMEC1= 00 % 4 001210 0370;5 0011 001171 1547 SMTYP. SMTYP4 001253 $NCODE= 880114 SNCYL = 0150 SNEXT = 0001 g ATC= 00011 SNSEC = 000119 SRMER1= 05156 SRMER2= 002202 SRMHR = 002176 SRMLA = 80 160 SRMMR1= 002164 SRMMR2= 80 29 SRMOF = Og‘l $PASSC= SPASTM SEC = 000010 153 $SETUP= 0011 $TP8 $TPFLG 001173 001164 $TPS STRAP_ 040060 $TRAP2 040102 $TRK = 88%11 15 $TRP = $TRPAD 830114 1104 $TSTM STSTNM 001116 STTYIN 034514 $TYPDS 3?332 35550 $TYPE S$TYPEC 835762 STYPEX 361% $TYPOC 8361 $STYPON ggl“ $TYPOS 104 1220 SUNIT 001110 SUNITM 1232 SUSWR SVECT] 1256 1260 SVECT2 SERTTL 001126 SETABL 001226 SETEND 001272 $FAIR = 000106 SFATAL $FFLG $FILLC SFILLS $FIRST= 000124 $FMT = 000001 $GDADR 0011 S$GDDAT Ogfllog $GET42 03174 $GTSWR 033716 = 000076 $HD _ = 000000 n $SHIBTS SHINUM 0371 1 $SHLDWC= 1 034533 SCNTLU 034540 = 000024 = 000022 $CPUOP 001%0 SCRLF 001 g $INTAG SITEMB F SLFLG $LKCSB SCNTLC SCNTLG 034545 scyL = 00001 (032454 000210 = $SvPC Ogg $SWR_ = 1 i 1 8130 10067 801 4 01244 001250 001254 801 g 001 001264 881 46 7616 $DB20 7402 SDECVL 1216 SDEVCT 1264 SDEVM 2040 $D1V SDOAGN 031 768 RVSN= 00213 $DSPLY 032716 BL 036536 SENDAD 031752 SENDAT= 000036 SENDCT 031736 SENDSK= 000042 001226 SENV_ SENVM 001227 031312 $E SEOPCT 031730 SERFLG 001117 001131 SE SERROR 034640 SERRPC 001132 $HSNL = SHSNM = SICNT = = SEQ 0220 $SUPR2 $LKS 34 SLLVEC SLONUM SDB%D § 9223 = s WCF_ WCFER 812434 2 SPWRUP 03761 7 ;6 $RAND 034170 SRDCHR 034260 SRDLIN SRDOFL= 000064 $SRDSZ = 80017 SREAD = 000066 EG = 09016 SRESRE 037164 SRETRY 015744 SRHEXT= 880091 1272 SRMADR SRMAS = 805156 SRMBA = 002144 $DBLK = 8‘60008 B $ILLUP SLKCSR 14 144 1128 03771 1151 1130 1204 7021 1 90 001276 - SLPADR SLPERR SLPVEC SLSTAD $SMADR1 $SMADR $MADR3 $SMADRG SMAIL SMAMS1 1304 13 2 0371 SMAMS? SMAMS 1255 SMAMS 4 $MBADR 82110 7020 S$MFLG $M1SPO= 80010§ 03456 SMNEW $MSGAD 801222 SMTYP, 881 43 SNTRK = 00011 LL_ 001170 0 SNWTST= 0 SOCNT $OCTVL g?S DE 63 000046 SOPERC= ACK = 0g26 1214 S $PATT(C= $POSIT= SPREVA= SPREVO= $PSEL = $PWRAD $PWRDN 104 1106 0 ggg i 73 77 $QUES = 002210 SRMCS1= 002140 1sg mcs;: SRMCS 0221 SRMDA = 00 ‘Mg SRMDB = 00216 SRME(?2= 802 06 SRMSN = 00217 SRMVEC 001274 SRMWC = %148 32 SRM80 1764 SRTNAD $SAVRE 7126 7714 $SAVR6 g?g Sgsb 6 $5820 10054 $SIZE $SKI_ = 190 & $SOFT = $SSEC = 3 4 g‘l Og % 1 $SSENB= $STUP = 17777 $SUPRL $SUPRS 61 $SUPR1 12 $SWREG 12 $TATUS= 3 S$TERM = $TESTN 001212 STIME 054766 0011 S$TKCNT 83331 STKINT 03332 $TKQEN= 03332 $TKQIN 033312 $TKQOU 033314 $TKQSR 033316 GBO‘H $TKS $TKSRV 033376 $STMPO 001174 $IN = ocogg $TNPWR 1337 $TOTAL= 00007 SWCNT = SWRDL = SWURITN= SWTOFL= $XOFF = S$XON_ = $$GET4= SOFILL X = 0 g 1 RHBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 68-5 g;wo ERRORS DETECTED: 0 VIRTUAL MEMORY USED: 62720 WORDS((;245 PAGES) P. DYNAMIC MEMORY AVAILABLE FOR 71 +A:CZRNAA/C=A:CZRNAA.DOC, CZRNM.SYSMC/H SEQ 0221 SEQ 0222 CZRNAAD RM80 PERF EXER MACRO x24680)14-JAN-82 15:16:58 PAGE S-1 CROSS REFERENCE TABLc (CREF V 35-14 4e=14 44=1* b4=1x 5-8# 46-1 40-1 9-73 ' 9-168 9-184 9-235 22-?5 1g:10 59-69# 40-1 14-10 59-13 - 31-85+ 43-1+ 43-1» 14~96 10-12 11-82 23-71 29-60 29-82 32-11 35-1 35-1 41-1 14-102 41-1 14-107 14-111 14-153 22-102 22-252 22-259 53-206 14-14 14-16 15-69+ 20-25+ 20=27+ 20-28 53-203 56-68 12-697 13-164 2-%3 13-187 70 6-04 9-25 40-1 13-260 29-45 13=471% 59-64 S 40-1 9-7 9-76 oo 9 0 46-14 9-30« o 46-14 46-14 —AONSNIN) b =N $SGET4 36-11 36-39# 39-62 59-734 59-77 35-1 35-1 59-254 35-1 59-264 1§-389 183 -96 §£-7 2 g%-329 41-1 41-1 42-1 42-1 15=41+ 20-15 31-39+ 53-209 39-85 39-228 SEQ 0223 CZRNAAO RMB0 PERF EXER MACRO 826680 14=JAN-82 15:16:58 PAGE S-2 ) CROSS REFERENCE TABLE (CREF V . 6-0n 5334 =1 =14 41-1 - 9-66 43-1 ix 41+ 41=1» 41-1 41-1 41-1 56-198 41-1+ 10-6 9-103+ 59-6 43-1 46-1 46-1 41=1x 41=1x 42-1 42-1 9=-103+ 59-9 9-103+ 59-10 9-103+ 59-1 10-34+ 59-12 29-24 59-13 29-69* 59-14 59-514 59-18 9=155+ 31-72 31=75+ 31-104+ 39-79 58-196 11=-146+ 11147 46=1* 43-1 43-1 4146-1 59-39# 46-1* 43-1 46=1* 9-103+ 59-7 9-103+ 59-8 35-1# 52-1 25-17 7 59-35# 59-40# 9-155+ 42-1 47-1 9-19 47-1 9-25 &7-14 47-1¢ 9-30 41-1 43-1 59-65# SEQ 0224 CZRNAAO RMB0 PERF EXER MACRO 324680)14-JAN-82 15:16:58 PAGE S$-3 CROSS REFERENCE TABLE (CREF V L6-14 46=1* 24=147 -1' 2 =19 25-19+ 46=1* 46=1* 59-374 6=+ 46=1 59-47 59-48 59-49 5°-50 59-51 59-55 20-19+« 20-20+ 20-21 22-210 22-214 22-218 59-113 59-113 59-113 59-113 59-113 e 1578+ 20-26 59454 59-46 17=72+ 29-20 59-504 17-36 17-55 20-36 59474 59-274 27=170+ 35 -1' 59=-21# 35-1« 15-25+ 20-15+ 20=16+ 20-30 56=143+ 59-22# 41 -1 43-1 43-1 59-113 59-113 59-113 4412 1g-37 15=77% S=1% S=1% 9=-39+ 9-284 40-1 41-1 &7-14 59-31# 5 =411 1" 9-11 12-437 113 =545 3=167 IRt B B 53:691‘ 13—1?; 59-113 59-113 - SEQ 0225 CZRNAAOD RM80 PERF EXER MACRO x24680 14=JAN-82 15:16:58 PAGE S=-4 CROSS REFERENCE TABLE (CREF V04.00 9-73+ -7 9-85 ) 9-118 9-132 62=5 67-21 13-341 13-380 14-9 22-153 22-258 0-11 9-88 53-113 g -6 9-113 23-20 89 8859-113 59-774 59-78 59-113 59-113 59-113 59-80# 59-113 59-113 23-21 59-91# 91 2 2=269+ 9= 22=275+ 22-278+ 22-279 59-80 59-94 59-81 59-95 59-82 59-96 1 =200 62-6 12-242 62-10 59-954 5 59-78#4 62-7 32-101 32-107 32-115 15-32+ 3184+ 4-567# 15-387 15=39+« 56=77+ 12-24 25- H 22-290 29=47+ 59-19# 4=2674 4=2674 4=2674 41-1 20-38¢« 20=41* 4=267# 4=2674 53-211 §-38"" 22-175 20~-16 35 41-1 12-124 =30+ 4=2674 9-30 4=2674 9) 4-58 41-1 9- 194 STATS 11167 13-498 14-7 22-287 1 -178 1 -505 [V 7 13153 9-25 35-1 9-25 35-1 4=2678 4=267% 4-58 41-1 4-58 41-1 6-0 4 1-1 6-0 41-1 9-19 41-1 %5, 12-345 59-144 62- 1 13-438 13-492 H CZRNAAO RM80 PERF EXER MACRO Vviu% "fl 16-JAN-82 15:16:58 PAGE S-5 2 SEQ 0226 CROSS REFERENCE TABLE (CREF V STERM STESTN STIME 52-3#4 2-00 22-18 9=19+ Sk 9 S=br 6-4# 40-1 7= 40-1 48: 1 10-3 27-19 $TKQIN 40-1 40-1 $TKB $TKCNT S$TKINT $TKS TMPO $TN STNPUR STOTAL $TPB STPFLG $TPS STRAP_ $TRAP2 $TRK S$STRP 8_-0# 9-65 42.2, &~48r 4 27-85+ 4=57 52-1 52-1 52-1 52-1 31-40+ 53-208 52-2 52-1# 52=2 52-3 52-2 52-24 STYPE STYPEC STYPEX STYPOC STYPON STYPOS SUNIT SUNITH 40-1 43-1 &4-1# 44-1 &4-14 2-0' 5-8# Sg-l 43-1 43-14 52-1 52-1 43-1 43-1 52-1 &a-14 S;-1 -0 52-1 32-1 52-1 52-14 52-1 52-1 3¢2-1 52-14 52-1 52-1 5¢2-1 52-14 52-1 52-1 5%-1 52-1#4 52-1 52-1 52-1 52=-1#4 52-1 2-1 2-1 52-14 9=-194 29-126+ 43~ 55-1 52-1 52-1 5214 9-19 52-1 g -1 -1 52=14 52-1 43-1 9-19 22-170 39-99 40-1+ 40-1 Ss-l .92-1 52-1 52-1 3 40-1+ 40-1 15-40* 52-1 &5-14 40=1+ 40-1 9-19 , 40=1+ 40-1 40-1 41-1 40-1 40=1+ 40=1r 9-25 52-1 41-1 40-1 40=1+ 40=1+ 40-1+ 43-1 43-1 43-1 52-14 52=-14 5-8# 40-11+ 20-1' 40-14 59-334 6-0# 40-1 40-9 51-16 34-38 STSTNM STTYIN 40-8+ 40-1# “ } 25-20* 13-467* 40-7+ 40-1 35-5 1 43-1* 43-1 43-1 608 6-0# 6-08 43-1 40-1 40-14 2520 43-1 40-1 2 43-1 43-1 43-1 24=144 40-1 40-1 40-1 40-1+ 49-1 49-1 22-397 52-2 52-1 STYPBN STYPDS 42- 1 41- 1 49-14 STRPAD $TSTM 42-1 27-18 5%-1 52-1 52-1 52=1# 53-1 52-1 52-1 52=-14 52-1 52-1 55-1 52=14 41-1 40-1 40-1 40-1# 461 Sg - 52-1 43-1 -4 59-11# 52-1 52-1 52-1 52-1# e gop 15-57+ o 15-59* O 20-42% 20-44+ ¥9~61' 29—68! 31=42¢ 53-2 5 5 °8§ 52-92' 52-105 Sg~108 59-84 SWCNT 12:2;2' SWRDL 1;-736 13-1 13-249 13-342 14-51 4-58 14-60* 14-61 16-3 14=154 15-53+ 15-54r 15-56+ 5-57 1 -Sg gO— SWRITN SWTOFL SXOFF 14-18+ 14-22¢ & 1 29- ; 9= * 14-19¢ 22-400 4 } 2 “ 14-21+ 24-93 «3-1 0—6; 3:99 -SSS 9-39 39-6 9-41 9-§ 53:603 2 2 4=9 4 59-30# 3: ;9-48* 9-2 5694 59-30 56-95+ 59-31 29-130 9-3 59-19 59-33 59-52 59~ i 9-35 )| CZRNAAO RM80 PERF EXER MACRO 824 80 14=JAN=-82 15:16:58 PAGE $-6 CROSS REFERENCE TABLE (CREF v04.00 ) a1 ACOW1 ACDW2 ACK ACPUOP ACTDRV ACTSTR ADDWO ADDW1 ADDW10 ADDW11 ADDW1 ADDW1 ADDW14 ADDW15 ADDW ADDW DWé ADDWS w6 ADDW? AD AMSGAD AMSGLG AMSGTY AMTYP1 AMTYP AMTYP. MTYP4 APASS -84k 9-136 11=175 6-0 6-0 4=252# -0 53-118# 53-124 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 34-364 6-0 6-0 6-0 6-0 6-0 6 6 6-0 6 6 6 5=57* 5557=23« 56=3+ 46-1 46-14 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 4-156# APRIOR APTCSU g. 43-1 T ASGN1 ASGN2 43-1 7=113# 7-111 APTENV APTSIZ g-O 55-13+ 57-8+ 9-140 41-1 g—ZS 6-0 6-0 6-0 46=-14 43-1 6-14 46-1 27-1264 46=14 56=11« 57-6 SEQ 0227 27-14 57-152 ANy 11 ASGND ASKPAR ASMBLY 9-037 7 7-1;3 271448 ri 66-314 65-17# | r-17s 11-80° 34=20% 27197 g7-1es 11-190 35-1 271526 28-22 94§-1 2rizus 283 427 s-3« 27-1806 T g7-26 §1-19 37-182+ 27-120 27-134 27=144 28-10 27=184+ 28-21+ 28=37+ 34=124 1171 35-1 7120 2427 $4-99 S3-560 2713 $5-96 et 55-100 28-10. 55-167 28-12 S56-224 28-13 56-238 28-32 56-246 8-34 6-268 ATIN AUNIT AUSWR 7-00 60 60 41-1% 6~0 6~0 62-1 622 AVECT1 AVECT? K 4-265# 6-0 7-0¢ 6-0 6-0 31-68 34=23% 11-65 6~0 351 11-69+ 35-1 11-119 35-1% 11-122 35-1s 11-157 35-9# 11-178 BADTMO BAI 9-3# 41020 27-107 22-68 32-77 25-16 33-26 25-17 64=43# 25-18 25-19 GWC BITO 7-OF 4764 41=1 55-49 55-251 -3 54-106 14t 55-221 ATESTN 6-0 AUTLST 11-72¢ AVAIL - 7-08 BADENT BADSEC BEGCOD BEGPAT 1100 BITOl BITO? BITOS BITOL BITOS BIT BITO? BITOB BITO9 BIT1, BT BITI] 9-205 7-O 7-OF 7-O# 4-76 4-76 476 4-76 4=76 4-76 476 4-76 4-76 4-76 4760 38-50 6-0 28-13% §1-22 ~9-226 11-174% 9=27 28-55 65-13 9-250 21-52¢ 29-35 29-38 29-36 29-40 29-41 &=76# 4768 4768 4-76# 4-768 4764 41=1 12-41 drer 4-768 4-76# 4-76# 12-543 12-136 12-652 11 13-24 13-140 15-30 28-60 12144 56-219 Qg 12-148 54106 41-1 s6-221 57-54 G231 14 57-66 385-145 3778 34-23 35-1 35-1 56-53 58-116 58-19 58-54 eSS ATABIT 37-91F 60 4-169% 4-170# 1710 1720 4-17 41748 4-175# 41768 4-1438 28-34+ kS e e 6-0 ASSICN 28-28 e R ASWREG ATO ATA AT AT AT4 ATS ATS AT? ATA 28-66 28=12+ 2520 L L L L L L A e 27-141 J1-71* 2844t 27-Tie L 27124 “7-08 2840 ASWISG Z7-13e |AsueRR ASNLST mowm 1 27-12 ol EARRLALARLALALALALALALACALALACLALALALALD ASGN3 ASONG ae SRl SEQ 0228 CZRNAAD RM80 PERF EXER MACRO xgkéoo 14=JAN-82 15:16:58 PAGE S-7 CROSS REFERENCE TABLE (CREF V iy 7-85 6-219 54-106 56-221 54-76 54-94 54-106 57-52 56-269 T 3388 3539 0%, 55-88 1581, 5572 452308 §od1 127168 ig'éi‘ 4-ros 1% 55-51 55-84 56-45 12-449 12-454 7-148 4=75 7-199 4=7 55-46 55-81 55251 56-53 13-330 13-379 14=50 14=64+ _9-234# 3321 29-62 27-92¢ 67-39 27-97 -144 55-219 - 55-146 55-230 56-126 55-187 6-76 55-189 56-78 R = e T Gl e T TR 9-214 33-9% 10-44+ 39-183# T oy - N RO 1%-128 12-132 M 1 12-355 57-103 g-w =114 LAALALN LAWY WLLY 12-311 57-66 owneoo 18 9 28 -N SO IRVNIsSY 39~ NN =S\ N =b =D 12-617 b b b b N N D) 12-152 EREREREREAECAR LA LA LN EALALALA LA SEQ 0229 RNAAO RM80 PERF EXER MACRO 82‘680 14=JAN-82 15:16:58 PAGE S-8 CROSS REFERENCE TABLE (CREF V 18-15# 26~4 13-26 13-27+ 13-127+ 133 1354 12-7210 1 13-54¢ 3 13-98 g 13-100 13-113 21-10 1319 152110 13-68 ~ 13-96 13-18+ 11-159 13-78 13-103 13-104% 11-182 13-89. 13-117 13-105 21-74 13-1364 13-128 13-107+ 13-43 13-108+ 26-22 $2-106 30-27 -1 43-1 9-6 §1-3 83-57 64-30 64-48 84-62 13488 13-109 Gh=41# 32-1i6 29-37 191 431 9-30 51-3 83-58 64-32 64-50 64-63 13-123 13-111+ 13-126 0-113-115 12-457% 64-6 7-08 7-08 7-08 7-08 7-00 7-08 7-08 08 7-00 7-00 7-00 7-08 7-08 7-00 7-08 7-08 28-59# 12-197# 15-533 6-0 11-14 284 40-5# 29-71 §2-458 9-25 28-18% = 13-1314 64=SH 41=1 41-1 9-30 617 9-4é 1-9 63-59 64-32 64-50 63-60 64~36 64-52 29-89 §2-461% 29-90 12-497% 34=25¢« 351+ . 64-66 26=114 63-49 64-23 64-40 64=56 64-64 21-27¢ 23-36+ 23-38s §TSen &61-1# 61-64 61-84 13-119 PR e 13-45 29-139+ 22-236 29-142+ 22=307 68-45# 24-130 63-51 64=25 6443 64=57 24=131 63-53 64=27 64=44 64-58 e ————— =g P I T ol cund T T g a— CMCYL CMDAT CMHED CMPAR CMPARD CMPLMT CMPRES CMPRT CMPRX CMSEC SEQ 0230 04.00 14~JAN-82 15:16:58 PAGE S-9 s o CZRNAAO RMB0 PERF EXER MACRO CROSS REFERENCE TABLE (CREF CZRNAAO RMB0 PERF EXE R MACRO CROSS REFERENCE TABL SEQ 0231 VO4 680’14-JAN-82 15:16:58 PAGE $-10 E (CREF VX& 1 3 ORVQUE DRVSN DRVSTA DRVTYP 55-30 39-60 9-276 55-55 [ 4=135# N== —ee-NOUONONONON ——ONOOONMOO DISPLA DISPLY 8-26 8-40 6-0# 12-86 12-467 57-80 57-89 §7=97* 56-237+ 57=55+ - 57-60 §57=67% 54=40* 54-72+ 54-80+ 54-103+ 54=49 55-21 56-178 56=191 56=275 56=277« 57=44 55-105+ 62-2 9-155+ 56-181 62-3 59-1134 56-289% 62-4 65-54 65-54 57-46 57-82 57-91 57=106+ 55-237% 55-243 55-253+ 56=16* 56-184 56-222% 54-30* 27-177 9-25 54-108+ 55-19 1 N 4=1 4=187# 22=7 2-8 2= 22-94 8-13 8-20 8-27 1 -1594 12-180 DVA pvC 4=129% 4-2264 7 13-293+ 13- EE%IT =04 3-266% 13-267* 13-283 1;:056 13-306 13-331 13-333# 133344 ECMSKO 1 7-0# 13-285+ 3-286 ECVRD 7-0# 5 57-63 _ 57=73+ 13-269* 13-287+ 13-289+ 1;—290' 13-294 13-299 13-296 13-305 13-268+ 13-270* 13-271« 13-262+ 13 -2 13-275 13-280+* 13-281 13-272' 13-293 13-295 13-296+ 13-297+« 13-301 13-301+ 13-302+ 13-303 13-307+« 13-310 13-323 13-321 60-34 60-1 68:1 13-259% 6 6 6 0 0 13-312 13-313+« 13-314+ : 13-330 13-330 CEATED D T S o S ST ST PR ST A A A AL Tt & & 6 3=247+% 06 06 13-268 53-154# 54-23 86 5749 0 0 0 0 56-65* 2 8-4 60-94 60-1 60-11# 1212-98 12-109 56~17« 55-256% 56-6 55149« 55-2¢6 CEUIVATCATLTIN 7-0# 55-254 55-94 NOVNRININD ==b —b b b —d N =b NOM\WN mmmmmm m%mm WN=O FM EMIO EMN EM1 EM1 EM14 EM15 il ECWRDY1 13-321 Lohi A <4 ==) 3 2o N -l. EC 8 ) D o ol medh md b =D : .d ECBADO 1%—5290 OO S;:%g OTUW 62-2# L 65-1# 62-64 62=7# 62-84 62=-10# 8-34 62-3#4 62-4H 62-5#4 T DT14 DT15 DT16 DT17 DT 0T DT4 D16 TE DTEER 0 0 0 0 0 0 4-188# Lt DT03 104 DTO05 ECC2 ECCX SEQ 0232 . 0 0 VAAVPOPVPY CROSS REFERENCE TABLE (CREF V04.00 ) 2 MO CZRNAAO RMBO PERF EXER MACRO 824.00 14=JAN-82 15:16:58 PAGE S-11 SEQ 0233 CZRNAAD RM80 PERF EXER MACRO 82‘680 14=JAN-82 15:16:58 PAGE S$-12 ) CROSS REFERENCE TABLE (CREF V .00 Ens 12-51 1 123 EM4 EM0 EMée1 EM&4 EMé4 EM4G =23 12-61 12-74 EM31 e 1 "g | 12-567 E &I o o %s §0-57# 13-15 12-691 12-724 60344 R L 5 A - § EM5 EM50 EM51 EM52 EM6 EM60 EMPTYQ EMTVEC ENDCMP ENDCON ENDING ENDPAS ENDPGM ENDSEK 12-633 12-494 12-205 g- 9 12-665 55-258 &4~7 13-131 35-1 -16 27-20 ENTPR EOP1 EOP2 _9-247 35-1 15-45 ERCTR ERPRC1 ERPROC ERR ERROR ERRVEC FO 56-231 56-287 57-111 58-148# 10=5+ 65-9 109+ 10-10+ 35-1 35-1 35-1 35-1 35-1 35-14 13-48+ 12-259 12-1 13-64 13-516 12=24¥ 13=-77% 13-194 9-25+ 66-1 9-25« 9=27* 66=1* 14=12¢ 14-18 14-26 14-28 14-354 19-4 18-49 ’ 9 29-13 9226+ 29-74 9-1 S' 29-76 29-118 29-120 29-116 29-137 _7 35-1 9-159 ENDTST ENTADR ENTCOM ENTLMT 56-223 9=25+ 68-474 35-1 64=4H 7-04 12-25 124=1424 4=7 4-76# 41=1+ 4=1244 13-197 9-116 66=1+ 9=117+ 66=1+ b b s 4 FACTOR FAIRNS FE1 FE2 FEFLAG FEONLY 4=128# 14-9+ [4 7-04 7-0# 9-188 14=10+ 9-2 “- 29-121 9=143¢ 2345 23-46* 23=59+ 23=76+ 41-1 04 CZRNAAO RMB0 PERF EXER MACRO x‘ CROSS REFERENCE TABLE (CREF V 68°> 14=JAN-82 15:16:58 PAGE $=13 C SEQ 0234 ”«&« Ed 1 - 3 x® —O N M MOoN 0 — CZRNAAOD RM80 PERF EXER MACRO CROSS REFERENC SEQ 0235 04 680)14-JAN-82 15:16:58 PAGE S-14 E TABLE (CREF VXQ 22-230 1 4 o o 12-495 159 1 22-238 XA 1 23332 23B 1868 15938 (-] NoN NoN N~N No “‘oJ 22-227 oN MM — Poed Me o MRA S8 s o~ * STSH o "uaww MM e e e e e e e ) ) ) ) ) ) ) ) ) e ) ) d d d e e ol e ) e e e e e e e wd = - ewdad ddd - = 4 1 1 12-614 04 680)14-JAN-82 15:16:58 PAGE S-15 E (CREF ka CZRNAAO RMBO PERF EXC R MACRO CROSS REFERENCE TABL SEQ 0236 22-150# = o d o e e d i R a n ee e L 2222 107 3 =655 -678 15253 =440 2=729 o 13-183 1 1 27138 22-154 9-215 64=-174 13-189 22=15 12 -gzgl 2 22-357# 12-747 13-201 12-488 13-512 13-321 22-M 22- i~bbl 13-321 22-187 1;—484 13- Moy SEQ 0237 CZRNAAO RMB0 PERF EXER MACRO 826680)14-JAN-82 15:16:58 PAGE S-16 CROSS REFERENCE TABLE (CREF V i e 17= 59-64 N 27-168 12-315+ 12-386% 12-435+ 59-59 59-60 29=113« 65-54 65-54 29-107+ 65-54 65-54 29-120* 29-125 29-114+ 29-127 29-126 59-58# 12-515« 12-543+ 12-652¢« 12-671+ s34 T ~ o~ 13-505 =T 17-1 65-54 12-620+ 13-500 12=479% 29-102+ MINCYL MINSEC 29-108+ MINTRK MINUTE MNTBL MOH MOL MREAD MRMCS1 MRMVEC MSFULL MSGCTS MSGFOR MSGON 27=169+ (¥4 RNAAO RMB0 PERF EXER MACRO xglobgfl)“-JM-BZ CROSS REFERENCE TABLE (CREF Vv OFLIN ONES ONESEC 1;-‘2 7-0 15:16:58 PAGE $-17 SEQ 0238 12-96# 26=31+ 26=33+ 0P%ER1 OPTBL 247 SS-67# - ZS-gg 5 ‘ 5622=51 56-290 ORDERQ 9-88 11-5 11-104 11-115 11-140 11-164 51=27 15-76+ 27-170 28=49* 28=54+ 28=59+ 28-65+ 26=1M 24-119 11-85+ 64=51# 9=99+ PAR1 PAR10 PART1 PAR14 PAR1S PAR16 PAR19 PAR2 PAR20 PAR21 PAR PAR& PARS PARG PAR? PARS PAR9 PARENT PARER 65-1 65-274 6563-294 65~ 63-31# 65-324 63-1954 65-;2‘ 65~ 65-204 65-54 65-54 65-54 65-54 65-54 =54 5 -537# 253 5-1 65-3# 65-5 PATTER PCLOCK PERFEX PERIOD PFECH PFECH1 PFEC PFECH 13-225 §3-44' 6-69 24=94 42-14 42-14 2=-14 42-14 17-78 23=49* PFTSTN 4= 42-1+ 55-131 12-493# 35-1 55-220 PAR PARLST ::;SES PFECH4 PGE PGM PIP PIRQ PIRQVE POSER PR1 &2-14 6554 65-54 65-54 65-54 65-54 5=54 3= 24=100 56-241 58-190# PO PACK v 12-507# \fl\fl\‘“}!\h\h OPIER 9-94+ oONONONONON OPE OP1 24-133 24-136 264=139 24-142 24-149 39-65 39-87 64=354 SEQ 0239 CZRNAAD RM80 PERF EXER MACRO X26680 14=JAN-82 15:16:58 PAGE S-18 ) CROSS REFERENCE TABLE (CREF V .00 27-13 9-2 8 }i' 82 12-650 15-5080 9-93w 4=7 §55=12+« 13-33954 5558+ ;7-13* 5-68 7-86* §5-114. 39-43 10-35 9=25¢ 58149+ 10-48+ S1=1+ 58-163 59-11 1 8-165+ S1=-2#4 9-25+ 9-25+ 39=44n 39-98+ 51=14* 54-15 54=16% 54~45+* 54=53¢ 56-47 58-81 56-50 56=74 56-76 56-78 55-115 55-262 56-10 57-22 58-98 };:ggit gs:gga 12-353 12-387+ 12-436+ 51=1+ -1' 58-191 6S:g 66 25-1 56-208 55-198 57=41 e 2954 62-4 20-32 31-43 %36 27-95 9-230 =7 33-19 16-9 13480 20-18 21-28 22-200 23-144 50-1 52-14 54~54 55-52 67-37 13-412# 18881 i 55-55 1828 18307 1838 SEQ 0240 CZRNAAOD RMB0 PERF EXER MACRO 826680 14=JAN-82 15:16:58 PAGE S$-19 ) CROSS REFERENCE TABLE (CREF V RHEXT 1:.- S§:1ésl 128 — ”9 a-m S6-1 127 §8-95 53-1 16-1 55-11# 55-154 55-172 56-5 57-39 58-1 58-17 58-48 58-52 55-18 5-1 56-246+ 56-268+ 57=77 55-87 55-148 55-166 55-209 55-219 55-230 56-25 56-126 56=155 §5-29* 8-112+ 5=135+ 8-117 55155+ 55=173+ 56=24* 56=207+ 56-252% 56-267% 57-40+ 57-9 58-67 58-130 RMAS RMBA 1 o317 6-153 s 23177r 36-206 gr-lse s4-750 36226 S3-iEin 2 §322’3 &=74* 55-72 ~180# 1864 1918 1820 1 1954 1964 55-141 358-75 55-143 34-2 8=71» 54~7 58-7 55-164 55-178 56-76 2 55-183 56-208 55-194 56-253 56-74 57=41 54-100 56=44 56-212 56-254 56-253* 56=254* 56-255+ 62-2 62-2 62-2 62-2 55-189 55-198 55-200 56-50 56=-121 56-123 52-14 5414 55-14 55-67 55-242 56~4 56-233 56-248 56-291 mcs2 RAcs3 RMOA RMDB RMDC RMDS RMDTY RMEC1 RMEC2 7-Sis $3-1900 581 4=-8 RMINIT RMLA RMMR1 RMMR2 RMOF. RMSN S3-1894 RMR 4=35+ 58-5 58-85 12-454 12-416 647 53-1 54-18 53-43# §3-19 S4=14# 9-265 53-185# . . 53-187# 53-193# 53-190# 54=95 RMERT RMER2 RMERRS 7= 55146 4=1490 “Tace 2t-%e Mce M. 531380 36-7 &=2420 54-33 56-119 ' 3 RNOP RTC RTNCTR RTURN 42508 13-39%5# 33-1 " 13-400 35-38 63?-3: SatPow S35 33-1320 55-222 ~9-264e SAVEFG 1;:%;: 5 7-O¥ SAVER1 c1 31 3¢ 70 14-150 4-2014 ; 6-1530 13148+ b SAVERS SAVREG SC SCO6 74 36-39 2-1 2231 %- ié- 374 §-528" 56-264# so- 6=17 §f§° 1908 361 i 56-197 56-199 56-227 CZRNAAO RMB0 PERF EXER MACRO 04 CROSS REFERENCE TABLE (CREF V 34.680) 23-580 56-212 56-216 24=48 24-684 13-105 9-99- 19-19 54-19 55-98 54-78 55-42 11-88+ 20-43° 24-58# 9-2 SEQ 0241 14=JAN-82 15:16:58 PAGE S-20 56-226 56=2314 . 56-260 §-23 3-33 6=34* sz:;g ngg;' 55-113 55-261 56=-159 58-110# 9-249 9-256 9-2624 12-420 55-167+ 12-464 56-224+ 12-507 56-238 29-145 56-51 56-122 35-3 51-15 ;?:?3. 29=144 29-149% 57-112 58-674 51-31 12-632#4 S56-65# 65-164 12-328 12-529 21=214 27-28 11-189» 26=54» 14-156 57-774 57-954 57-102 57-109 57-113# 56-245 56-286 37-334 39-86 56-214 27-68 57-53 32-67 CZRNAAO RMB0 PERF EXER MACRO x24680 14=JAN-82 15:16:58 PAGE $-21 CROSS REFERENCE TABLE (CREF V04.00 ) Sw0. 4=76 4-72: 9-186 9-269 11-185 Sw04 Swo5 4=76 4=76 =768 4=764 15-4 32:3 g‘-Bg 2=150 351 13-174 35-1 35-1 SwW10 SW11 sw1 sw1 SW14 sw15 4=764 4=764 L4=764 4=764 =764 22-8 22-1 41-1 =768 22-416 22-443 4=764 13-66 13-339 4=764 SW2 4-764 SWé SW5 Swé Sw7 Sw8 Sw9 4=764 4-764 4-764 4=764 4=764 4=764 Sw3 SWR SWREG 3r00 13-339 35-1 =14 22-183 9-25 15-46 25 12-11 9=25% §0-23 9-25+ 22-8 9-25 9-30 40-1 40-1 35-1 12-85# -1 2=212 T 12-40 7 22-20 TABL TABLEQ TABLE1 TABLE2 TABLES 88 65-39 65-4 65-4 65-4 TAP TBITVE TM THEAD 4-1 &4-764 56 16-354 56-16# TRAPVE 4~76# 9-25% SWTIM SYSTAT TAB TAB.XY 27-16 _5-9# SEQ 0242 g 65-3M 65-544 65-544 63-544 63-544 -1 40-1 925+ 22-11 40-1 40-1 9-30 22-80 40-1+ 9-105 22-150 41-1 9-186 22-183 41-1 9-25+ igsffit BN 133, 1950 1858 19-23 13198, 18-46 53-1040 'gi?"' TRNSUT ,;53‘:33 TYDRV -1 24-87 27-162 41-1 11-185 22-443 41-1 12-17 13 13-174 41-1 1-1 51=1+ 57-99+ 57-105+ 2756 7 34-36 63-54 TIMER nggzzl 25-108' 23:%25' §5-252¢ 56=19% 56-204* 56-265* 56-272% 57-12 ST _9-269 22-416 39-60# 9-7 U91 23-&, 8. 29-9 OH¥ 57-14+ 57-68+ 5793+ 3140 143s 9o 32-60 SEQ 0243 CZRNAAO RMB0 PERF EXER MACRO x2‘680)14°JAN°82 15:16:58 PAGE S$-22 CROSS REFERENCE TABLE (CREF V TYHDA 34-89 =42 $3 39-78# 33-17_ 35-1 Ss-ll 4-8 4=130 7=1 1-95 3-18 =1 40-1 40-1 44-1 56-85 24-131 7-%9 1 3-26 5=1 40-1 40-1 45-1 4-8? 4=133 7=79 2=16 4= 5=1 40-1 41-1 51-1 4-88 24=134 7-81 2-26 -8 5=1 40-1 41-1 51-21 4=9 24-1 7-94 2=33 7-32 1 41-1 52-1# 34-10 34-31 35-1 35-1 52-1# 55-178 55-183 9-19% 9-28 11-192 9-205 9-292 11-19% -Sgg 9= 12-96 9-211 9-301 2=-10 9-§24 g— 02 =70 9-%23 _9-31 4=21 4=94 4=137 7=-107 2=50 =11 9-32 40-1 41-1 67-16 9-232 9-319 24-68 4=95 24-139 27-159 2=77 - 40-1 42-1 67-19 64-84 11-30 §8°64l 6-133# 11-93 12-6444 Sg- 1 12:?11, 12-566# 9-171 17-45 65-3 58-48+ 58-564 §g°5 4 8-59 4=95 55-219 58-40 55-157 55-164 55-166 3-216 36-206 38-368 55-189 55-19% SEQ 0244 CZRNAAO RMB0 PERF EXER MACRO 806680)14-JAN-82 15:16:58 PAGE $-23 CROSS REFERENCE TABLE (CREF V04 WRTCHK WRIDAT WRTHD WRTPK XKOP~ Y ZEROS ZROIND 7-08 4=250# _4-260 10-38 7-0F g 56132 7-0 361 11-127 9-35¢ 15-14H 9-38+ 9-39 9=41% 7-0# 13-21+ 13-76* 13-83+ 13-87 - 7-0 7-04 9-46 9-57 9-295 9-297 10-20 10-22 27114 27-116 27-128 CZRNAAD RNBO PERF EXER MACRO Y0400 14-JAN-82 15:16:58 PAGE M-1 SEQ 0245 CROSS REFERENCE TABLE (CREF V 52-1 52-1 52-1 52-1 52«1 52-1 52-1 52-1 52-1 52=1#4 52-2 6-04 56-196 25718 25-19 32-67 33-23 4-61 4 PL T - el 4=70 4=73 4~74 56-198 9-304 4-768 PUSH READ 768 32-128 &=7 52:-3% 19 12-461 3% 456 12-497 451 13-143 iB3 31%s 52-1 21-54 22-109 24-33 29-128 30-29 31-98 31-107 32-80 22-35 46-1 22-400 22-408 gg-i' 29-10 30-10 31-33 3137 6=47 56-50 56-74 56-76 56-78 52-1 52-1 52-1# 52-2 46-1 &3-1 - ‘g'} 7 -y $5-1os 33 52«1 S52-1 52-1 52-1 CZRNAAO RM80 PERF EXER MACRO xo:. 8° 14=JAN-82 15:16:58 PAGE M=2 | CROSS REFERENCE TABLE (CREF V04.00 ) SETUP SKIP SLASH STARS SWRSU TRMTRP TYPBIN TYPDEC TYPNAM TYPNUM 4764 4=764 9-25 4&=764 40-1 5= 40-1 5-8 40-1 4~7. 9-35 9-25#4 4=764 50-1 52-1# &4-764 &4~-764 4-76# &4-764 TYPOCS 4=~764 TYPTXT 4=764 TYPOCT UPCODE 4=76# 50-2# 51-1 52- 51-1 B ' 4 5-8 4g-1 5-8 40-1 6-0 41-1 S-O 42-1 g-o 43-1 52-1 66-1 -36 | » 9-19 44=1 22-1 45-1 SEQ 0246 22-3 46-1 35-1 47-1 37=4 48-1 38-4 49-1 24-93 26=104 24=132 24-135 24-138 24=141 35-1 9-274 11-63 24=74 27-160 31-96 34=10 34-31 35-1 35-1 9-44 9-55 9-61 24-68 24-80 24-92 24-95 24=103 24=106 24=114 24-130 24-131 55-87 gs-}? 1 55-143 56-119 55-14 56-12 55-148 56-126 7 5 56-216 §5-164 S55-166 55-178 55-183 55-189 9-30 40-1 9-6 31=1 WRITE §3-180 54-93 XXEP 34=53¢ 35-1 42-1 54-95 42-1 : 7 56-226
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies