Digital PDFs
Documents
Guest
Register
Log In
AH-T105A-MC
July 1982
248 pages
Original
13MB
view
download
OCR Version
12MB
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_bw.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 comj b OO 00 ~NAN NN—.—!-‘—ldd—l-l—l—l AN =2 O 000 NO NS NN - CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 1 22 +REM d IDENTIFICATION PRODUCT CODE: AC-T104A-MC PRODUCT NAME: CZRNAA0 PRODUCT DATE: APRIL 1, 1982 MAINTAINER: CX DIAGNOSTIC GROUP AUTHOR: MIKE LEAVITT RMB0O PERFORMANCE EXERCISER THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE AND CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT BE NOT SHOULD CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL. THE SOF TWARE 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 EOUIPMENT g?%}?fi{LITY OF ITS CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE OR SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY COPYRIGHT (C) 1982 DIGITAL EQUIPMENT CORPORATION ABSTRACT 1.1 REQUIREMENTS 2.1 2.2 2.3 OPERATING PROCEDURE 1 2 .3 4 T LOADING THE PROGRAM STARTING ADDRESSES PROGRAM CONTROL SWITCH OPTIONS PASS/TEST TERMINATION PASS TERMINATION 3.5.1 TEST TERMINATION 3.5.2 RUN_TIM .6.1 DATA TRANSFER MODE 3.6.2 SEEK VERIFICATION MODE DUAL PORT OPERATION N 3. EQUIPMENT MEDIA PRELIMINARY PROGIAMS =2 2. GENERAL DOCUMENT NOTES 3.6 3.7 3.8 3.9 — 1. O~ 24 SEQ 0002 CONTENTS W WA =2 OO0 N WV PINININ) b b b o e e b d b b NN = O 000 NN NN — CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 2 XXDP, ACT11, APTI APT ENVIRONMENTAL TABLE DEFINITIONS CONTROLLING THE PROGRAM 4.1 4.2 PARAMETERS 4.1.1 PROGRAM CONTROL PARAMETERS 4.1.,2 CHANGE DEVICE ADDRESSES KEYBOARD COMMANDS °'T° COMMAND 4.2.1 4.2.2 ‘D' COMMAND 4.2.3 4.2.4 4.2.5 'S' COMMAND 'W' COMMAND 'R' COMMAND 4.2.6 "WT' COMMAND PERFORMANCE SUMMARY TYPEOUT 5.1 5.2 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 DATA BUFFER COMPARISON VERIFICATION OF DATA WRITTEN BAD ADDRESS FLAGGING ERROR MESSAGES CZRNAAO RMBO PERF EXER MACRO VO04.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 SOF TWARE DRIVER DOCUMENT SEQ@ 0003 1 1 1 1 } 1. E SEQ 0004 ABSTRACT THE RM80 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 RH70 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 RATE AND SEEK ERROR RATE (SEE ERROR RATE SPECIFICATIONS). THE PERFORMANCE EXERCISER PROGRAM WILL EXERCISE DRIVES CONNEC/ED AS EITHER SINGLE OR DUAL PORT UNITS. OUAL PORT DRIVES ARE TESTED BY LOADING AND RUNNING THE PROGRAM FROM BOTH CONTROLLING SYSTEMS. THE PROGRAM WILL EXERCISE A MIXED SYSTEM OF DUAL PORT AND SINGLE =2 OO0 NV 1 } NN = OO0 00 NN S AN — CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3 PORT DRIVES. 1 2 2 22 gz TO OBTAIN INTERACTIVE TESTING, OPERATIONS ON THE MULTI-DRIVE CONF IGURATIONS ARE OVERLAPPED (OTHER DRIVES ARE PERFORMING SEEK/SEARCH OPERATIONS WHILE ONE DRIVE 1S PERFORMING A DATA TRANSFER). OPERATIONS AMONG THE DRIVES ARE OPTIMIZED SO THAT A HIGH SL3SYSTEM DATA TRANSFER 25 26 27 28 29 %? THE PERFORMANCE OF EACH DRIVE 135 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 INTFRVAL DETERMINED BY THE OPERATOR. 32 33 34 ALL DATA TRANSFER COMMANDS EXCEPT WRITE HEADER & DATA AND WRITE CHECK HEADER & DATA ARE USED. RECALIURATE AND READ-IN PRESET COMMANDS ARE USED AT STARTUP AND DRIVE INITIALIZATION. RECALIBRATE AND 37 38 39 40 2; 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, THE DATA WRITTEN IS VERIFIED BY THE APPROPRIATE WRITE CHECK COMMAND . 43 44 45 46 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. RATE OR A HIGH POSITIONING OPERATION RATE IS MAINTAINED. %2 RETURN-TO-CENTERLINE COMMANDS ARE USED DURING ERROR RECOVERY. 2g gg 51 52 53 56 55 29 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 FOLLOW ThE NUMBER TO INDICATE DECIMAL OR_NO PERIOD WILL FOLLOW THE NUMBER TO INDICATE OCTAL. IF THE NUMBER OCCURS AT THE END OF A SENTENCE, A DOUBLE PERIOD(. .) INDICATES DECIMAL AND A SINGLE PERIOD( .) ggg}fi:{fs OCTAL. ALSO, ANY REFERENCES TO TIME ARE ALWAYS IN - CZRNAAO RMBO PEPF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-1 58 59 2? 62 gz 2. REQUIREMENTS 2.1 EQUIPMENT F 65 PDP-11/70 PROCESSOR 67 68 KWil-L OR KW11=P CLOCK PROGRAM LOADING DEVICE 16K MEMORY 66 TEFINAL RH70 CONTROLLER 1 TO 8 RMBO DISK DRIVES 69 70 ;; ;2 2.2 AND MUST BE FORMATTED IN (16 BIT) MODE. ;9 gg 2.3 RM80 FUNCTIONAL TEST, PART 1, 2 & 3 (OPTIONAL PART 4) gz 85 88 gg PREL IMINARY PROGRAMS RM80 DISKLESS TEST, PART 1 & 2 g} gg MEDIA THE PERFORMANCE EXERCISER PROGRAM REQUIRES FORMATTED DISK 75 78 SEQ 0005 3. OPERATING PROCEDURE 3.1 LOADING THE PROGRAM BY EITHER OF THE FOLLOWING MEDIA: 3} THE PROGRAM MAY BE LOADED 93 .PAPER TAPE, USING THE STANDARD PAPER TAPE PROCEDURE .XXDP MEDIA, USING ANY XXDP DEVICE gg 39 3.2 200 - START ADDRESS, ALL SWITCHES CLEAR (SEE SECTION 3.4) zg 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. 100 101 }8% 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 (SEE SECTION 4.1) OR CHANGE DRIVE LIMIT PARAMETERS (SEE SECTION 4.2). 104 105 106 }85 109 }}? 112 113 114 STARTING ADDRESSES 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 SEQ 0006 SWITCH REGISTER SWITCH SETTINGS. HOWEVER, IF THE PROGRAM IS LOADED VIA APT SCRIPT MODE ALL SETUP AND SWITCH REGISTER SETTINGS WILL BE PROVIDED THROUGH THE APT E TABLE. TYPEOUTS FROM THE USER DIAGNOSTIC MAY OR MAYNOT BE INHIBITED aggEggéstg¢0N WHETHER OR NOT THE APPROPRIATE BIT IN THE E TABLE 3.4 SWITCH GFTIONS IF THE PROGRAM IS BFING RUN ON A SWITCHLESS PROCESSOR THE PROGRAM WILL DETERMINE THMAT THE HARDWARE SWITCH REGISTER 1S 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 OO NEW =* EACH TIME SWITCH SETTINGS ARF ENTERED, THE ENIIRE SWITCH REGISTE IMAGE MUST BE ENTERED. LEACING ZEROS ARE NOT REQUIRED. °*RUBOUT' gc?régogz§g$ U' FUNCTIONS MAY BE USED TO CORRECT TYPIMG ERRORS DURING ON PROCESSORS WITH HARDWARE SWITCH REGISTERS, THE °*SOFTWARE' SWITCH REGISTER MAY BE USED, IF THE PROGRAM FINDS ALL 1'S IN THE SWITCHES. ALL SWITCH REGISTER REFERENCES WILL BE TO THE °*SOFTWARE' REGISTER AND THE PROCEDURES DESCRIBED ABOVE MUST BE FOLLOWED. 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 SW<04>=1 INHIBIT MAXIMUM ERRCR COUNT CHECK; DO NOT DEASSIGN SW<08>=1 SW<07>=1 SW<06>=1 SW<05>=1 SW<03>=1 INHIBIT END OF PASS MESSAGES DISPLAY ALL DATA COMPARE ERRORS DO NOT ALTER THE CURRENT OPERATION PARAMETERS PARTIAL REGISTER DISPLAY ]F ERROR; DO NOT DISPLAY ECC CORRECTION RESULTS 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*® ERROR 6; gagfisaonPARE ERRORS & SW<07> SET, DISPLAY REST NON —n-n-.-n-l-a—l...-a-a-.-b-a_.—h—n—b-b—s—n_n—n-l-.o_a_n_a_a—l—l_n_n_;—l_n_a—h_a_._a.a_n_a_a—b_o—l—h—l—l_a_n_a..n—b—b_b O*O*O‘Q“U’l\h\llvl\h\l\\h\fl\h\hbl\bbJ\&bl\bbWWWWWWWMNWNNNNNNNNNN—'—'—'-*—. CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-2 SW<02>=1 SW<01>=1 SW<00>=1 INHIBIT SUBSYSTEM STATUS TYPEOUT DURING STARTUP INHIBIT PERFORMANCE REPORT AFTER SPECIFIED TIME PROMPT FE CYLINDER MESSAGE DURING AUTO TEST MODE INHIBIT DATA COMPARE AFTER READ COMMAND, W/0 ERROR ‘READ ONLY'' OR LOCKED ‘READ ONLY'’ MODE d d D D b d d 00~~~ NNNN~N CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-3 H 1 SEQ 0007 SW<00> THE PROGRAM WHEN THIS SWITCH IS SET(1), WILL OPERATE IN ‘'READ ONLY'' MODE. IF THE SWITCH IS CLEARED(0Q), THE PROGRAM WILL RETURN TO READ/WRITE MODE DURING TESTING. THIS SWITCH ONLY EFFECTS THE D b wd b D D e TESTING PORTION OF THE PROGRAM. D ad d e e [« -] 0000 O 00Q0000000 FOR EXAMPLE, IF THE PROGRAM IS STARTED AT 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 TESTING MODE. HOWEVER, IF THE OPERATOR SWITCHES TO ‘READ ONLY '4ODE (SW0=1) JUST PRIOR TO OR DURING THE SEQUENTIAL WRITTING OF THE DISK, THE PROGRAM WILL CONTINUE WRITTING UNTIL THE SEQUENTJIAL WRITE 1S COMPLETED. UPON COMPLETION OF THE SEQUENTIAL WRITE, THE PROGRAM WILL SWITCH TO A ‘'READ ONLY'' TESTING MODE UNTIL SWO IS RESEY TO ZERO BY THE OPERATOR. 90 HOWEVER, IF THE OPERATOR WISHES TO MAKE SURE THAT THERE IS ABSOLUTELY NO WRITTING ON THE DISK AT ANYTIME, THE PROGRAM MAY BE LOCKED IN ‘READ ONLY'' MODE. 95 THE PROGRAM b ad D b b e 91 92 gz CAN BE LOCKED INTO ‘READ ONLY'' MODE BY STARTING OR 96 97 198 199 RESTARTING THE PROGRAM WITH SWO SET(1). AFTER THE PROGRAM HAS BEEN LOCKED IN 'READ ONLY'' MODE, SWO WILL HAVE NO FURTHER EFFECT UNTIL THE LOCKED MODE IS RELEASED. TO RELEASE THE PROGRAM FROM THE LOCKED °‘‘READ ONLY'' CONDITION, THE PROGRAM MUST BE STARTED 203 204 %82 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. OR RESTARTED WITH SWO CLEAR(0). 38? 202 207 %83 3.5 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. Lol R NTo AV, ¥ X WNT, NP b ad emd ek = wud amh D ek DS ST NTNT AN STNT,NT,8] 210 PASS/TEST TERMINATION THE SOFT ERROR SPECIFICATION FOR THE RM DRIVE IS NO MORE THAN 1 _SOFT ERROR (NON-DISK RELATED) IN 1 X 10410 BITS READ. FOR THE 90X CONFIDENCE LEVEL) (SEE SECTION 3.5.1 THE SEEK ERROR SPECIFICATION FOR THE RM DRIVE IS NO MORE THAN 1 SEEK 220 ERROR IN 223 Sgg A PASS IN ‘W' OR 'R' CCMAND MODE IS DETERMINED DISK ADDRESS LIMITS SETUP BY THT JPERATOR. LEVEL) 555 sgg 228 3.5.1 1 X 106 SEEKS. (SEE SECTION 3.5.1 FOR THE 90X CONFIDENCE BY THE MAXIMUM PASS TERMINATION END OF PASS FOR A SINGLE DRIVE IN THE RANDOM 'T® COMMAND MODE OR CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-4 SEQUENTIAL 'T' COMMAND MODE, IS DETERMINED BY ONE OF THE FOLLOWING 229 CONDITIONS. 232 233 234 235 A. 5;9 IF PARAMETER ‘ENDING' IS 1, END OF PASS OCCURS WHEN THE DRIVE HAS READ 3 X 1049 BITS (1.875 X 10°8 WORDS). IT WILL TAKE APPROXIMATELY 3.33 PASSES TO REACH THE SOFT ERROR RATE OF 1 X 10410 BITS (6.25 X 108 WORDS) READ. HOWEVER, IT WILL TAKE 10. PASSES TO REACH THE 90% CONFIDENCE LEVEL OF $ X 10410 BITS 236 (1.875 X 10 WORDS) READ. ggg B. 239 240 241 52% : 244 gzg IF PARAMETER °ENDING' IS 0. END OF PASS OCCURS WHEN THE DRIVE HAS PERFORMED 1 X 10°6 SEEKS. If 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 1046 SEEKS. END OF PASS FOR A SINGLE DRIVE IN 'W' OR 'R’ COMMAND MODE, IS DETERMINED AS FOLLOWS. A. WHEN A SEQUENTIAL SEEK IS MADE BEYOND THE MAXIMUM DISK ADDRESS LIMITS SET BY THE OPERATOR, THE PASS IS CONSIDERED ENDED. 247 %23 3.5.2 gg? TEST TERMINATION 254 IF SW04 IS CLEAR, THE TEST FOR A DRIVE IS TERMINATED WHEN: A. THE DRIVE HAS COMPLETED THE NUMBER OF PASSES SPECIFIED IN 256 B. 259 260 ggg E. %gg 255 C. D. 257 258 3.6 263 ? 32 266 . 3.6,1 RUN TIME THE EXERCISER PROGRAM MAY BE RUN IN TWO MODES. (SEE SECTION 3.5.1) DATA TRANSFER MODE (DEFAULT) WITH SW<00> =1 AND SW<01> =1, THE PROGRAM WILL RUN APPROX. 20X FASTER 5;2 280 281 282 283 THE NUMBER OF PASSES SPECIFIED BY THE MONITOR HAVE BEEN REACHED, W 'EN RUNNING IN ‘XXDP' CHAIN MODE, "ACT11' CHAIN MODE OR’'APT' SCRIPT MODE(ANY AUTO MODE). 1 DRIVE = APPROX. 1.75 HRS. (TO REACH 3 X 109 BITS OR 1.875 X 108 WORDS) %;2 277 OCC~RS: EM14, & FATAL ERROR OPERATOR DEASSTUNS THE DRIVE SWR SWITCHES 0, 1, AND 2. ggg %;g THE TOTAL ERRORS ACCUMULATED EXCEED 25. . THE PROGRAM RUN TIME VARIES GREATLY DEPENDING ON THE OPERATION THE READ/WRITE RATIO PARAMETER ('RATIO'), AND BY MODE SELECTED, 267 268 5;} PARAMETER 'PASSES'. 3.6.2 SEEK VERIFICATION MODE PARWMETER 'WRDCNT® = 256. (1 SECTOR) PARAMETER 'MAXTRK® = ‘MINTRK® (SAME VALUES) PARAMETER 'MAXSEC® = 'MINSEC' (SAME VALUES) SW<01> =1 (NO DATA COMPARE) SW<00> =1 (READ ONLY MODE) SE@ 0008 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-5 SEQ 0009 1 DRIVE = APPROX. 4.0 HRS (TO REACH 1 X 10%6 SEEKS) 3.7 DUAL PORT OPERATION A. LOAD THE PERFORMANCE EXERCISER PROGRAM INTO BOTH PROCESSORS. B. SWITCH THE C. 3.8 ‘CONTROLLER SELECT' SWITCH TO ‘A/B' ON _EACH DRIVE WHICH IS TO BE TESTED AS A DUAL PORT DRIVE AND CYCLE THE DRIVES UP. START THE PROGRAM IN EACH PROCESSOR. RUN THE PROGRAM AS THOUGH EACH PROCESSOR WERE RUNNING INDEPENDENTLY OF THE OTHER. XXDP, ACT11, APT11 COMPATIBILITY THIS PROGRAM IS COMPATIBLE WITH AUTOMATIC MODES. ACT11 AND APT11 IN BOTH DUMP AND THIS PROGRAM IS ALSO, COMPATIBLE WITH XXDP IN DUMP AND CHAIN MODES, AND PROVIDES MEDIA PROTECTION IN THE CASE WHERE THE RMBO IS THE XXDP LOADING DEVICE. 1. 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 (SEE SECTION 4.1). IF SW02 IS CLEAR(0), ALL THE INPUT DIALOGUE 1S BYPASSED AND THE TEST IS PERFORMED ON THE FE CYLINDERS ONLY. 2. THE_BUS ADDRESS AND CONTROLLER INTERRUPT VECTOR ARE DEFAULTED TO md cnd ~NC b d b e md b N NN — NN N N W NN N NN AUTOMATIC MODE OR CHAIN MODE (MONITOR) 176700 AND 254 RESPECTIVELY. N = OV DUMP MODE (NO MONITOR) 1. 321 3.9 INPUT DIALOGUE PROMPIED AFTER PROGRAM STARTS APT ETABLE DEFINITIONS THE FOLLOWING DEFINITIONS ARE VALID FOR SPECIFYING APT ENVIRONMENTAL TABLE (ETABLE) ENTRIES,VIA RUNNING THE APT UTILITY PROGRAM '‘TSP'': 1. SOFTWARE ENVIRONMENT: 1 IF APT SCRIPT MODE 0 IF STANDLONE MODE 2. ENVIRONMENT MODE: BIT 7 = 1 = 0 ETABLE DOES SIZING PROGRAM DOES SIZING BIT 6 = 1 = 0 SPOOL MESSAGES TO APT IF SCRIPT MODE DON'T SPOOL TO APT BIT 5 = 1 SUPPRESS TTY CONSOLE OUTPUT SE@ 0010 CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-6 = 0 ALLOW TTY CONSOLE OUTPUT BIT & TO BIT O ARE NOT USED SWITCH 1 (SOFTWARE SWITCH REGISTER) IF ENVIRONMENT MODE BIT 7 (SIZING BIT ) IS SET 10 1, THE SOFTWARE SWITCH REGISTER WILL SE USED, INSTEAD OF THE HARDWARE TTY CCNSOLE SWITCH REGISTER. SWITCH 2 (USER SWITCH REGISTER) NOT USED CPU OPTIONS NOT USED MEMORY TYPES 1-4 AND MAX MEMORY ADDRESSES NOT USED INTERRUPT VECTOR 1: USED WHEN ENVIRONMENT MODE BIT 7 1:DEFAULT = 254 BUS PRIORITY 1: NOT USED. INTERRUPT VECTOR 2: NOT USED 10. BUS PRIORITY 2: NOT USED 11. BASE ADDRESS: USED WHEN ENVII/ONMENT MODE BIT 7 1;DEFAULT = 176700 12. DEVICE MAP: NOT USED 13. CONTROLLER DESCRIPTOR WORDS: NOT USED 14. CONTROLLER DESCRIPTOR WORDS: 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 ;5320¥Lé'1L;5{~G A RUBOUT WILL DELETE SUCESSIVE CHARACTERS TO DELETE AN ENTIRE LINE, TYPE A "CONTROL U* (*V). CZRNAAQ RMB0 PERF EXER MACRO VO0&4.00 14~JAN-82 15:16:58 PAGE 3-7 400 C. 401 402 403 404 405 289 D. 413 44 2}; 4.1 419 420 AN ENTRY MUST BE TERMINATED BY EITHER A 'CARRIAGE RETURN' OR A 'PERIOD'. THE °'PERIOD' TERMINATION IS RECOGNIZED BY 1HE PROGRAM AS A DEFAULT ENTRY REQUEST. WHEN A LINE IS TERMINATED BY A 'PERIOD' INSTEAD OF A 'CARRIAGE RETURN', THE PRUGRAM WILL ACCEPT THE ENTERED VALUE AND WILL DEFAULT TO THE PRELOADED VALUES IF A "CONTROL C* IS TYPED DURING DRIVE TESTING MODE, THE PROGRAM 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 PARAMETERS THE FOLLOWING QUESTIONS ARE ASKED TO DETERMINE HOW THE RMB0 WILL BE TESTED. THE DEFAULT ANSWERS TO THESE QUESTIONS ARE ALWAYS 25; AS DOCUMENTED HERE. 'DO YOU WISH TO EXERCISE ONLY FE CYLINDERS (L) Y ?°* 232 425 426 427 428 2%8 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(SW0=1), IN WHICH CASE THE WARNING WILL BE OMITTED BUT THE QUESTION WILL BE ASKED). 2%} *! CUSTOMER DATA WILL BE OVERWRITTEN !' 433 2%? *ARE YOU SURE (L) N ?' 636 zgg A 'Y' ANSWER WILL PROCEED WITH EXERCISING THE WHOLE DISK. A ‘N’ ANSWER WILL PROCEED WITH EXERCISING ONLY THE FE CYLINDERS. 439 IF 22? 456 ARE TO BE EXERCISED, THE FOLLOWING ‘s« EXERCISER WILL OPERATE ON FE CYLINDERS ONLY «° 444 445 222 455 ONLY THE FE CYLINDERS MESSAGE WILL BE PRINTED. 22% 450 22; SE@ 0011 SEQUENCE BEING ENTERED. 2}2 229 1 FOR ANY REMAINING ENTRIES. 408 409 610 3 412 223 L 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 WILlL ¢ CZRNAAO RMB0O PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-8 " SEQ 0012 IDENTIFY THE PARAMETER BY THE NAME GIVEN BELOW, DISPLAY THE CURRENT VALUE OF THE PARAMETER AND WAIT FOR THE ENTRY. THE PROGRAM WILL TYPE 'INVALID ENTRY' IF THE ENTRY IS NOT CORRECT AND WAIT FOR A CORRECT ENTRY TO BE TYPED. (SEE SECTION 4.1.1) IF THIS IS THE PROGRAM'S FIRST START, THE STATUS OF THE DRTVES ON THE SELECTED MASSBUS SUBSYSTEM WILL BE PRINTED. ON ALL SUBSEQU.NT STARTS, THIS TYPEOUT MAY BE INHIBITED BY SET1ING SW<02> =1. THE FOLLOWING IS AN EXAMPLE DRIVE STATUS PRINTOUT: NOWNMESUWN=O 'DRIVE STATUS: RM80 ONLINE LOAD DEVICE OFFLINE RM8O NOT PRESENT NOT PRESENT NOT AN RM80 NOT PRESENT NOT PRESENT' THE ABOVE DRIVE STATUS SHOWS THAT DRIVE O WILL BE TESTED, WHILE DRIVES 1 - 7 WILL NOT BE TESTED. 4.1.1 KEYBOARD ENTRY PARAMETERS NAME BASE WRDCNT 10. DEFAULT VALUE VALUE RANGE 6 - 7936. 7936. NOTE) (SEE FUNCTION 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 ASSIGNED BY THE PROGRAM 1S 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) INTRVL 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 PASSES 10. 1 1 - 32767. NUMBER OF PASSES TO END OF TEST. (THIS PARAMETER IS NOT USED WHEN THE PROGRAM 1S OPERATING IN AUTO RUN MODE) Ci OV VI ANV NTIWNIURAIWD NIPINIPINIA) =b b D et b ~NOI- WIS WA= OV~ CZRNAAQO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-9 PATTERN 10. RANDWC SEQ 0013 0 0 - 15. IF PARAMETER=0,DATA PATTERN IS RANDOMLY SELECTED. IF_PARAMETER>0, SPECIF IES ONE OF THE 15. PATTERNS. THE SELECTED DATA PATTERN IS POINTED BY THE PARAMETER PATTERNTM. (SEE SECTION 8.4) 000000 0OR1 IF PARAMETER = 0, THE WORD COUNT IS RANDOMLY SELECTED BETWEEN 6 AND THE VALUE *WRDCNT®. IF PARAMETER = 1, THE WORD COUNT WILL BE THE VALUE ‘WRDCNT'. 000002 RATIO 0-7 CONTROLS THE APPROXIMATE RATIO OF READ TO WRITE COMMANDS. VALUE 0 1 R/W RATIO 15/1 7/1 4 4/4 2 3 5 6 7 000001 ENDING 0OR1 6/2 5/3 3/5 2/6 177 IF PARAMETER = 1, END OF PASS DETERMINED BY THE 'WORDS READ' COUNT, IF PARAMETER = 0, END OF PASS 1S DETERMINED BY THE NUMBER IV VIWAAWIWAWIAW VNN OF SEEKS. WRTCHK 000001 0OR 1 IF EQ 1, DO AN _APPROPRIATE WRITE CHECK AFTER EACH WRITE COMMAND. IF EQ O, SELECT WRITE CHECK COMMAND RANDOMLY. MESSAGE 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. IF PARAMETER = 0, PRINT ERROR MESSAGES ASSOCIATED WITH BAD DISK LOCATIONS. 000000 0 OR 1 560 RANDOM 8 IF PARAMETER=0,RANDOM DATA BLOCK ADDRESS IS USED IN 'T° COMMAND IF PARAMETER=1, SEQUENTIAL DATA BLOCK IS USED IN C. 8 CZRNAAO RMBO PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-10 SEQ 0014 VANV S NISNNISNNSN NN O O NOMNE NN 'T* COMMAND. 8 BADBLK 0OR 1 000000 580 IF EQ TO 1, THE BAD SECTOR ENTRY TABLE WILL ALWAYS BE INITIALIZED WHEN ASSIGNING A DRIVE; IF EQ 7O O, THE BAD SECTOR ENTRY TABLE WILL ONLY BE INITIALIZED IF THE HDA SERIAL NUMBER HAS CHANGED SINCE THE LAST TIME IT WAS READ. NOTE: IF THE HDA SERIAL NUMBER HAS CHANGED, THIS MOST LIKELY MEANS THAT THE HDA OR DRIVE HAD BEEN REPLACED WHILE THE DRIVE WAS DEASSIGNED. 6.1.2 CHANGE DEVICE ADDRESSES THE RM/RH ADDRESS AND VECTOR MAY BE CHANGED WHEN THE PROGRAM IS STARTED AT ADDRESS 204 OR IF THE PROGRAM DOES NOT RECEIVE A RESPONSE WHEN IT ACCESSES THE DEFAULT RM/RH ADDRESS. (DEFAULT ADDRESS = 176700, VECTOR = 254) ADDRESS SELECTION EXAMPLES EXAMPLE 1 RMCS1=176700 <CR> RMVEC=000254 <CR> :NO CHANGE IN ADDRESS sNO CHANGE IN ADDRESS EXAMPLE 2 b b b d ek b (e Yo Yo Yo Yo Xo To ] b 0O ~NOA NS W RMCS1=176700 177200<CR> ;CHANGE BASE ADDRESS T0 177200 sCHANGE VECTOR ADDRESS TO 260 RMVEC=000254 260<CR> 619 4.2 KEYBOARD COMMANDS THROUGH THE KEYBOARD COMMANDS, THE OPERATOR MAY ASSIGN DRIVES FOR TEST ('T' COMMAND), WRITE SEQUENTIAL DATA (‘W' COMMAND), PERFORM A SEQUENTIAL READ (°R' COMMAND), PERFORM WRITE DATA AN FOLLOWED BY TEST ('WT' COMMAND ), REQUEST A DRIVE PERFORMANCE SUMMARY ('S' COMMAND), OR DEASSIGN A DRIVE (°D' COMMAND). THE 'T*, 'W', 'R’ AND °'WT' COMMANDS ARE EXCLUSIVE TO ONE ANOTHER ON THE SAME DRIVE UNDER TEST. THE °D' COMMAND MUST BE ENTERED IN ORDER TO JSSUE A DIFFERENT COMMAND TO THE SAME DRIVE UNDER TEST. EXCEPT FOR THE DURING THE TEST. °S' COMMAND, WHICH CAN BE ENTERED AT ANY TIME IF THE PROGRAM WAS STARTED AT ADDRESS 204 OR IF NO DRIVES ARE ASSIGNED FOR TESTING, THE FOLLOWING MESSAGE WILL BE TYPE BEFORE ¢ CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-11 628 629 gg? g%g 634 635 636 637 ggg 640 641 642 643 gzg 646 6&? 648 649 650 651 652 653 654 ggg 2 SEQ 0015 ENTERING THE CC.MAND MODE. HOWEVER, IF A 'CONTROL C' IS TYPED WHILE TESTING IS IN PROGRESS, THE FOLLOWING MESSAGE WILL BE OMITTED AND THE PROGRAM WILL ENTER COMMAND MODE. *NO DRIVES ASSIGNED' WHEN THE PROGRAM ENTERS THE COMMAND MODE, THE FOLLOWING PROMPT WILL BE TYPED: "HH:MM:SS ENTER COMMANDS:' THE PROGRAM WILL TYHEN 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 O THE FOLLOWING ERROR MESSAGES WILL BE REPORTED AND THE PROCESS CONTINUES FOR EACH DRIVE. COMMAND (S) RESPONSE esseeecae- eeessss=s ?DRIVE N LOAD DEVICE ?DRIVE N OFFLINE ?2DRIVE N NOT ASSIGNED 2DRIVE N ALREADY ASSIGNED ?DRIVE N NOT PRESENT ?DRIVE N UNSAFE ?DRIVE N NOT AN RMBO T, W, R, WT T. W, R, WT D, § T, W, R, WT T, W, R, WT T, W, R, WNT T, W, R. WT ggg 657 NEXT, THE PROGRAM WILL PROCESS ALL THE ASSIGNED DRIVES AS FOLLOWS: 660 gg} WHEN THE PROGRAM IS ASSIGNING THE DRIVES, THE OPERATOR WILL BE ASKED TO CHANGE THE DRIVE PARAMETERS WITH THE FOLLOWING PROMPT: ggz 665 666 667 668 298 671 *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 BE CHANGED AND WILL PROCEED TO TEST THE DRIVES AS COMMANDED. IF THE ENTRY IS A °'Y' FOLLOWED BY CARRIAGE RETURN, THE OPERATOR WILL BE ALLOWED TO CHANGE THE DRIVE PARAMETERS AS FOLLOWS. THE PROGRAM WILL FIRST 2;% REFERENCED FOR CHANGES. g;g ‘anannvnnss DRIVE # N' 676 677 2;8 THE PROGRAM WILL SERJAL 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 MBA. IF THE MBA SERIAL NUMBER IS NOT JUMPERED IN THE RMSN REGISTER, °X' WILL APPEAR AS *2722°, —_— CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-12 SEQ 0016 WHERE 'Y' IS THE DECIMAL 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 FOLLOWING TYPEOUT: THEN ASK FOR LIMIT ADDRESS CHANGES WITH THE *ENTER ADDRESS LIMITS:' THE PROGRAM PARAMETERS. FOR WILL REQUEST VALUES THE FOLLOWING ADDRESS LIMIT THE FOLLOWING TABLE VALUES ARE USED WHEN THE PROGRAM IS EXERCISING THE USER PORTION OF THE DISK. NAME MINCYL MAXCYL MINTRK MAXTRK MINSEC MAXSEC DEFAULT VALUE 0 558. 0 13. 0 30. 0 - 558. 0 - 558. 0 - 1i3. 0 - 13. 0 - 30. 0 - 30. VALUE FUNCTION RANGE THE MINIMUM CYLINDER ADDRESS THE MAXIMUM CYLINDER ADDRESS THE MINIMUM TRACK ADDRESS THE MAXIMUM TRACK ADDRESS THE MINIMUM SECTOR ADDRESS THE MAXIMUM SECTOR ADDRESS WHEN OPERATING WITH CYLINDER 558. AS THE MAXIMUM CYLINDER, THE TRACK ADDRESS MAY BE SELECTABLE FROM 0 - 13.. IF YOU REMEMBER, CYLINDER 558. TRACK 13. IS THE DEC144 TRACK. DURING THE TEST, IF THE PROGRAM TRIES TO ACCESS CYLINDER 558. TRACK 13., THE PROGRAM AUTOMATICALLY SELECTS THE NEXT USABLE TRACK ADDRESS. THIS ALLOWS ALL THE REST OF 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. NAME MINCYL MAXCYL MINTRK MAXTRK MINSEC MAXSEC DEFAULT VALUE VALUE RANGE 559. 560. 559. - 560. 559. = 560. 0 13. 0 30. WHEN OPERATING 0 - 13. 0 - 13. 0 - 30. 0 - 30. FUNCTION THE MINIMUM CYLINDER ADDRESS THE MAXIMUM CYLINDER ADDRESS THE "(INIMUM TRACK ADDRESS THE MAXIMUM TRACK ADDRESS THE MINIMUM SECTOR ADDRESS THE MAXIMUM SECTOR ADDRESS ON THE FE CYLINDERS ONLY, SELECTABLE FROM 0 - 13. . IF voU REMEMBER, THE TRACK _ADDRESS MAY BE CYLINDER 559. TRACK 0 IS THE SKIP SECTOR FILE AND CYLINDER 559. TRACK 1 IS USED FOR THE ALTERNATE DEC144 TRACK. DURING THE TEST, IF THE PROGRAM TRIES T0 ACCESS CYLINDER 559. TRACK O OR 1, THE PROGRAM AUTOMATICALLY SELECTS THE NEXT USABLE TRACK ADDRESS. THIS ALLOWS CYLINDER 560. TRACK O AND 1 TO BE ADDRESSED BY THE OPERATOR. THE PROGRAM WILL THEN ASK FOR BAD SECTOR ADDRESSES WITH THE FOLLOWING CZRNAAO RM80 PERF EXER MACKO V04.00 14=JAN-82 15:16:58 PAGE 3-13 ;2§ ;2g 746 ;25 ;gg E 2 TYPEOUT: "ENTER BAD SECTR ADRS:' THE FORMATS USED TO ENTER BAD SECTOR ADDRESS LOCATIONS ARE AS FOLLOWS : CYL,TRK,SEC= C,T,S<CR> EXAMPLE 1: 751 ;gg A. THE PROGRAM WILL INHIBIT DATA ERROR MESSAGES FOR ERRORS OCCURRING AT THE SPECIFIED ADDRESS. ;gg B. LEADING ZEROS ARE NOT REQUIRED. ;gg EXAMPLE 2: CYL,TRK,SEC= C,T<CR> 758 A. WHEN THIS FORMAT IS USED, THE ENTIRE TRACK WILL BE ;%} B. DATA ERRORS WILL BE HANDLED AS IN 'EXAMPLE 1°. CONSIDERED BAD. ;23 ;22 EXAMPLE 3: CYL,TRK,SEC= C<CR> 765 A. WHEN THIS FORMAT IS USED, THE ENTIRE CYLINDER WILL BE ;%g B. DATA ERRORS WILL BE HANDLED AS IN 'EXAMPLE 1°. IF CONTROL C (°C) IS TYPED AS AN ENTP“, ALL CURRENT BAD SECTOR ENTRIES WILL BE LOST AND THE FOLLOWING MESSAGE WILL BE TYPED. CONSIDERED BAD ;gg 770 ;;5 ;;2 *« ALL CURRENT ENTRIES LOST #° 75 ;;9 AFTER TYPING THE PREVIOUS MESSAGE, THE PROGRAM WILL WAIT FOR THE OPERATOR TO ENTER ANOTHER BAD SECTOR AS IN THE PREVIOUS EXAMPLES. 778 779 ;g? IF *L* IS TYPED FOR AN INPUT CHARACTER, THE PROGRAM WILL TYPE A LIST OF DEC14% BAD SECTORS, AND THE MANUALLY ENTERED BAD SECTORS, WHICH ARE STORED IN THE DRIVE PARAMETER TABLE(DPB) FOR THAT PARTICULAR DRIVE. 782 ;gz 785 ;gg 788 ;gg IF THERE ARE NO SAD SECTORS IN THE DPB TABLE, THE FOLLOWING MESSAGE WILL BE TYPED: "DEC144 AND MANUAL BAD SECTOR LIST * NO ENTRIES ** HOWEVER. IF THERE ARE ENTRIES IN DPB TABLE. THE LIST WILL BE TYPED IN T'IE FOLLOWING FORMAT: 791 792 "DEC144 AND MANUAL BAD SECTOR LIST 8.8,3 79 256 793 ;32 797 798 16,13 500,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 SEQ 0017 CZRNAAO RM80 PERF EXER MACRO VO04.00 14-JAN-82 *°.16:58 PAGE 3-14 CYLINDER 16., 99 SEQ 0018 TRACK 13., ALL THE SECTORS ARE BAD (ENTIRE TRACK IS 800 BAD). ENTRY § INDICATES THAT ON CYLINDER 256., ALL TRACKS AND SECTORS gg% 500., TRACK 1, SECTOR 29. IS THE ARE 801 BAD (ENTIRE CYLINDER IS BAD). THAT CYLINDER ENTRY & INDICATES BAD SECTOR. 804 805 AFTER TYPING EITHER OF THE TWO PREVIOUS MESSAGES, THE PROGRAM WILL RETURN TO WAIT FOR MORE ENTRIES TO BE MADE INTO THE BAD SECTOR TABLE, 808 809 TO TERMINATE THE BAD SECTOR ADDRESS ENTRY, YPE A °'CARRIAGE RETURN' IN RESPONSE TO THE ENTRY REQUEST OR TERMINATE THE ENTRY WITH A 'PERIOD' AS IN EXAMPLES 1, 2 AND 3. 389 g}? g}% FOLLOWED BY A °*CARRIAGE RETURN'. 6.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}g FORMAT: TN<CR> 819 N = DRIVE NUMBER. gg? ggz ggz 822 4.2.2 BE ENTRY MUST . TERMINJATED BY A CARRIAGE RETURN <CR> EXAMPLE: TO<CR> - ASSIGN DRIVE 0 FOR TEST TACCR> = ASSIGN ALL AVAILABLE DRIVES FOR TEST MAY BE 0 TO 7 OR "A'. ‘D' COMMAND g%g USED TO DEASSIGN A DRIVE(S) BEING EXERCISED. ggg FORMAT: 831 ggg N = DRIVE NUMBER. MAY BE 0 TO 7 OR °*A'. ENTRY MUST BE TERMINIATED BY A CARRIAGE RETURN <CR>. 834 ggg EXAMPLE: ggg 4.2.3 DN<CR> DO<CR> - DEASSIGN DRIVE 0 DA<SCR> - DEASSIGN ALL DRIVES BEING TESTED. 'S’ COMMAND 839 840 gz; 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. géz FORMAT: 845 N = DRIVE NUMBER. 848 EXAMPLE: gzg 854 855 MAY BE 0 TO 7 OR °A’,., TERMINIATED BY A CARRIAGE RETURN <(CR>. 849 gg? gg% SN<CR> 4.2.6 ENTRY MUST BE 30<CR> = TYPEQUT PERFORMANCE SUMMARY FOR DRIVE 0 SACCR> = TYPEOUT PERFORMANCE SUMMARY FOR ALL DRIVES BEING TESTED. ‘W' COMMAND USED TO PERFORM A SEQUENTIAL WRITE OF THE DISK, WITH DATA ACCEPTABLE YO THE PERFORMANCE EXERCISER PROGRAM. — CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-15 SEQ 0019 FORMAT: WN<CR> N = DRIVE NUMBER. MAY BE 0 TO 7 OR 'A'. TERMINATED BY A CARRIAGE RETURN <CR>. EXAMPLE: 4.2.5 ENTRY MUST BE WO<CR> - WRITE A DATA PATTERN ON DRIVE 0. WA<CR> = WRITE A DATA PATTERN ON ALL AVAILABLE DRIVES. ‘R* COMMAND USED TO PERFORM A SEQUENTIAL READ OF THE DISK. FORMAT: RN<CR> N = DRIVE NUMBER. MAY BE O TO 7 OR 'A’. TERMINATED BY A CARRIAGE RETURN <(R>. EXAMPLE: 4.2.6 ENTRY MUST BE RO<CR> - READ THE DATA ON DRIVE 0. RA<CR> - READ THE DATA ON ALL AVAILABLE DRIVES. 'WT* COMMAND USED TO PERFORM A SEQUENTIAL WRITE DATA, FOLLOWED BY A 'T' COMMAND. FORMAT: WTN<CR> N = DRIVE NUMBER O TO 7 OR °‘A’’. ENTRY MUST BE TERMINATED B8Y A CARRIAGE RETURN <CR>. EXAMPLE: WTO<CR> = WRITE A DATA PATTERN AND TEST DRIVE O WTASCR> = WRITE A DATA PATTERN AND TEST ALL DRIVES PERFORMANCE SUMMARY TYPEOUT 5.1 THE PROGRAM WILL DISPLAY A PERFORMANCE SUMMARY FOR THE DRIVES BEING EXERCISED. THIS SUMMARY WILL BE DISPLAYED AUTOMATICALLY IF THE PARAMETER °'INTRVL' IS NOT ZERO AND SW<02>=0, OR IF THE DRIVE HAS REACHED THE DEFINED NUMBER OF PASSES AND SW<08>=0, OR IF THE OPERATOR REQUESTS TO DO SO BY USE OF THE 'S’ COMMAND. 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 PROGRAM DRIVE NUMBER - DRIVE TYPE PRESENT PASS COUNT FOR THE DRIVE HARD WIRED MASSBUS ADAPTER SERIAL NUMBER(RMSN) SERIAL NUMBER READ FROM THE DEC144 FILE NUMBER OF TIMES °‘WRDS WRITN' HAS OVERFLOWED TOTAL NUMBER OF WORDS WRITTEN BY THE DRIVE NUMBER OF TIMES °‘WRDS READ' HAS OVERFLOWED TOTAL NUMBER OF WORDS READ BY THE DRIVE NUMBER OF SEEK OPERATIONS THE DRIVE PERFORMED NUMBER OF SOFT DATA ERRORS CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-16 NUMBER OF HARD DATA ERRORS NUMBER OF 'SKI‘' ERRORS NUMBER OF PROGRAM DETECTED POSITIONING ERRORS TOTAL ERRORS OF OTHER TYPES ALL DATA TRANSFER COUNTS, SEEK COUNTS AND ERROR COUNTS ARE ACCUMULATIVE b = NelloX o lVolVollalVe IV, (=2, 10 LN Ts XV, P JV ] ed ok b b ek "HARD 'SKI* 'MISP' 'OTHER® SEQ 0020 N AND WILL NOT BE CLFARED AFTER EACH PASS. TO CALCULATE THE TOTAL NUMBER WORDS READ OR WRITTEN, TAKE_THE OVERFLOW COUNT (RD OFLOW OR WT OFLOW), MULTIPLY IT BY 2,147,483,647., THEN ADD THAT NUMBER TO THE WORDS READ OR WRITTEN (WRDS READ OR WRDS WRITN). 921 NOTE: $g$gfs EM1, EM2, & EM5 ARE NOT INCLUDED IN THE °‘CrHER' ERROR 5.2 SOFT/HARD ERROR DEF INITIONS 5.2.1 HARD ERRORS A. 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 ggg?gfifi HAS PERFORMED THE COMPLETE RETRY SEQUENCE ON THE BAD THE RETRY SEQUENCE IS 16. RE-READS. 5.2.2 SOFT ERRORS A. B. C. D. 6.1 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 COAMANDS °'DTE' ERRORS WHICH ARE CORRECTED OR WHICH BECOME ECC (ORRECTABLE 'DCK® ERROR DURING THE RETRY SEQUENCE. DATA COMPARISON DATA COMPARISON OCCURS AFTER EACH °‘RDDAT® (READ DATA) OR ‘RDHD’ (READ HEADER AND DATA) OPERATION UNDER THE FOLLOWING CONDITIONS: A. THE COMMAND TERMINATED WITH NO ERRORS AND SW<01>=0 B. THE OPERATION TERMINATED WITH °'DCK' SET AND THE ERROR IS ECC CORRECTABLE OR THE SECTOR IN ERROR IS READ CORRECTLY AFTER RETRY ATTEMPTS. 6.2 VERIFICATION OF DATA WRITTEN DATA VERIFICATION IS DONE EITHER THROUGH READING THE DATA BACK G CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-17 1 SEQ 0021 AND MATCHING THE DATA WITH ONE OF THE 15. PATTERNS OR THROUGH ISSUING A WRITE CHECK COMMAND AFTER DOING A WRITE DATA COMMAND. 6.3 BAD ADDRESS FLAGGING WHEN A DRIVE 1S ASSIGNED TO BE TESTED, THE PROGRAM READS THE BAD SECTOR FILE (DEC144) FROM THE DISK AND THEN ALLOWS ADDITIONAL BAD SECTORS TO BE ENTERED MANUALLY. A MAXIMUM OF 252. BAD SECTORS ARE ALLOWED FOR EACH ORIVE, READING FROM THE DEC144 FILE AND ENTERING FROM KEYBOARD. THE MANUALLY B0TH ENTERED BAD SECTORS ARE NOT RECORDED TO THE BAD SECTOR FILE OF THE DISK CURRENT UNDER TESTING. IF ONE OF THE FOLLOWING ERRORS OCCURS AT A LOCATION IDENTIFIED BY }ziTeegRSSCTOR TABLE, THE PROGRAM WILL INHIBIT THE ERROR REPORT FOR D - - - . Mmooy ) DATA CHECK ERRORS 'TM «#(&f ERROP. CHECK WRITE < L RORS (°*OPI*) OPERATION INCO® (! TE o E» DRIVE TIMING R W/ HCRC', 'HCE W/ HCRC® OR 'HCRC®) ('F ‘RS Ef: READ HEADER ERROR MESSAGES ERRORS ARE REPORTED ON THE TTY CONSOLE. THE PROGRAM CONTAINS NO CODED ERROR HALTS. IF THE PROGRAM HALTS (ASSUMING, OF COURSE, THAT SW<15> IS NOT SET), AN UNRECOVERABLE PROGRAM CONDITION HAS OCCURRED OR A CENTRAL PROCESSOR FAILURE HAS OCCURRED. =O V00~ NN OV T 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? TEXT RH CONTROLLER INTERRUPT OCCURRED (RMAS=0) THE RH CONTROLLER INTERRUPTED AND THE ATTENTION SUMMARY OV NO VS W ANORDNORINININY = b = b b b b ok b b P U G U QI G W S Y L P i gy b = b b o b 88288 389838 999 REGISTER (RMAS) WAS CLEARED. EM2 UNEXPECTED ATTENTION OCCURRED THE INDICATED DRIVE INTERRUPTED BUT THE DRIVE WAS NOT PERFORMING AN OPERATION. C. SEQ 0022'1 £ B NN NN N NN NWNINNI NN NS W —OV0O~N NOWVSWNI=O VOONO WA= O V0NN NN =OOV o NOVW b emd e ZXST bb oS[=4 oo b oD b ccd cd b b b ncd b e d b e b b e =D o=lelolelele] sb e b o e cmd D ed b d D e D e e e OQOOOOOOOOOOOOOOO C SRR RRRRRR & PSR CZRNAAO RMBO PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-18 NOT USED EM4 NOT USED EM5 ADDRESS PLUG CHANGE BIT SET THE 'OPE' BIT WAS SET WHEN THE INDICATED DRIVE INTERRUPTED. EM6 NOT USED EM10 NOT USED EM11 NOT USED EM12 NOT USED EM13 OPERATION NOT COMPLETED WITHIN TIME LIMIT THE DRIVE DID NOT COMPLETE THE OPERATION WITHIN 10. SECONDS AFTER THE OPERATION WAS INITIATED. EMI4 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. EM15 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 TO THE DRIVE FROM THE REPORTING PORT. 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 CATA CHECK (°DCK') ERROR e 068 EM3 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 ('cCH) BIT i e = 069 070 071 }8;% }8;% 1S SET. EM22 WRITE CHECK ERROR - DATA CHECK (°'DCK®) SET EM23 A WRITE CHECK ERROR OCCURRED AND THE DATA CHECK (°*DCK') BIT WAS SET. IF °"ECH' IS NOT SET, THE OPERATION WILL BE RETRIED UP TO 3 TIMES:; IF THE 'ECH® BIT IS SET, THE OPERATION WILL BE RETRIED UP TO 16. TIMES. WRITE CHECK ERROR ~ DATA CHECK (°'DCK®) NOT SET 1076 1077 1078 }8;8 %8%; 1083 A WRITE CHECK ERROR OCCURRED AND °'DCK®' WAS NOT SEV. THE Ci CZRNAAO RMSO PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-19 SEQ 0023 WORDS WHICH CAUSED THE ERROR ARE DISPLAYED IN THE ERROR MESSAGE. THE OPERATION WILL BE RETRIED 3 TIMES. 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 SIMILAR TO EM24, EXCEPT THAT THE 'HCE® ERROR BIT WAS SET INITIALLY. THE OPERATION WILL BE RETRIED 3 TIMES. EM26 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 ('CPI') ERROR g?c?SSRATION INCOMPLETE ERROR OCCURRED AT THE INDICATED 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. WA OV ~NO N d b b o b FORMAT ERROR ('FER') FORMAT ERROR OCCURRED. WHEN THE HEADER WAS RE-READ, THE "HCRC' BIT WAS NOT SET. THE CONTENTS OF THE HEADER ARE bb e awwwwug W= OV NN NN NI NI AL NI N NN NO VB W= OO b b e = b e = b =d = O = b cmd amd b and wth b cud b wnd D ad and b el D b cnd b b b wd b b e d b b b b b cnd aed and b e b ad b o b b QO 513 \nng—'OOO NO VB WOV~ (=]latolelelelV, Vo] 1097 —b_.-.—.d-l...d—l-l-.-l—l-l-bd_.-l-.-l-‘_‘d—.-b—l-l—l—l-l-l—b b HEADER READ ERROR - HEADER COMPARE (‘'HCE') ERROR EM35 THE INVALID ADDRESS ('IAE') ERROR AN INVALID ADDRESS ERROR OCCURRED DURING THE OPERATION. EM36 WRITE LOCK (°'WLE') ERROR THE ¢l NN =2 O 000 V0O NOWN NOVWNES NN -2 b e b e b b e 00000000 NN NN NNNNNNO OO NS NN = OO0 NN NN =2 O OO0 NN O OO OO NV S S B B BB s NN = OO0 00 NS (NN — b b e b = cd b b ard amb b =D and D b ad amd =D and =D b b b b b —b cd e D e D e oo D cnd D b e cmd =D b b D d e wnd =D ok D b od b D b e cand =D and =D b cmd cmd b =D e b erd b b b =D e nd b b d — b - oD e =D b ) e ) D D d d D amd D d i cnd wd D d D e o D D CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-20 A WRITE OPERATION WAS ATTEMPTED BUT THE DRIVE WAS WRITE LOCKED. EM4O RH CONTROLLER OR UNIBUS TRANSFER ERROR *TRE®' IS SET IN THE RH CONTROL REGISTER AND NO DRIVE THE OPERATION WILL BE RETRIED 3 TIMES IF THE ERROR WAS CAUSED BY °'DLT', °UPE®', °'MXF', OR °'MDPE’. ERROR HAS OCCURRED. EM4T 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. EM42 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 - UNDEFINEL DATA PATTERN THE DATA IN THE BUFFER DOES NOT MATCH ANY OF THE STANDARD PATTERNS. £M4L4 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. EM4S5 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. EM4G7 ECC LOGIC FAILURE - PATTERN REGISTER IS ZERO DURING °'DCK' ERROR PROCESSING, THE CONTENTS OF EC. PATTERN REGISTER (RMEC2) WAS NOT VALID. THE PATTERN REGIST_R CONTAINED ALL ZEROS. EM50 SEEK INCOMPLETE ERROR THE DRIVE SIGNALED EITHER °'SKI' ERROR. EM51 NOT USED SEQ 0024 €2 ASDHSHSTSTIN LS LS LS LSS 1,8 18 ] -A—A-n-b_n—l-n—l-;—b-n_.—b—h—a-l—l—l-n—b—n._a..a-a—h_..-l_a-h-b-l-a—l..n-—b—i-b—l-l—b..;—l—l—l—l_l_a—b—b—l—h_n_o—l_a_l._. I8 2 2 NN W RN R NN NN S = 2 et = b 2 =S O O O OO0 OO0 00O VY WY ‘\bNNNNNNNNNNNNNNNNNN'QNNNNNNNNNNNNNNNNNNNNNNNN NOWNE NN =GO 00NN WA= O VBN VS WA 2OV N NS WN OOV N N WN—O000 CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-21 8 EM52 SEQ 0025 ECH ERROR - UNCORRECTABLE ECC ERROR DURING °'DCK' ERROR PROCESSING, THE 'ECH' BIT WAS SET IN RMER1, WHICH INDICATES THAT DATA CHECK CANNOT BE ECC CORRECTED. EM60 DEVICE UNSAFE THE INDICATED DRIVE UNSAFE ERROR OCCURRED; THE ERROR WAS CLEARED BY A 'DRIVE CLEAR® INSTRUCTION. 7.2 DETAIL ERROR LINES THE LINE NUMBERS GIVEN BELOW ARE FOR REFERENCE ONLY. HH:MM:SS "HH:MM:SS' IS THE TIME SINCE THE PROGRAM WAS STARTED. (HOURS, MINUTES, SECONDS) * . LINE 2 "PRSNT COMMAND= XXXX PREV COMMAND= YYYY' MNEMONICS USED FOR THE COMMANDS ARE DEFINED BELOW: SEEK RECAL DRVCLR RELSE OFFSET SEEK (OCTAL 5) RECALIBRATE (OCTAL 7) DRIVE CLEAR (OCTAL 11) RELEASE (OCTAL 13) OFFSET (OCTAL 15) RETURN TO CENTERLINE (OCTAL 17) READIN PRESET (OCTAL 21) PACK ACKNOWLEDGE (OCTAL 23) SEARCH (OCTAL 31) GET REGISTERS (OCTAL 41) SET FORMAT (ECI OR HCI) (OCTAL 43) SELECT DRIVE (OCTAL 45) WRITE CHECK DATA (OCTAL 51) WRITE CHECK HEADER & DATA (OCTAL 53) WRITE DATA (OCTAL 61) WRITE CHECK HEADER & DATA (OCTAL 63) READ DATA (OCTAL 71) READ HEADER & DATA (OCTAL 73) 2 * SPECIAL RM DRIVER COMMAND (NOT A CONTROLLER COMMAND) 2 RMCS1, RMCS2, RMDS, RMER1, RMER2, RMEC1 AND RMEC2 FORM THE FIRST 1 3 4 (DISPLAY OF THE RH/RM REGISTERS IN TWO GROUPS: GROUP; ALL THE OTHER REGISTERS ARE IN THE SECOND GROUP. IF SW<05> 1S SET, ONLY THE REGISTERS IN THE FIRST GROUP WILL BE €z CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-22 N 2 SEQ 0026 1255 DISPLAYED.) 1258 THE ABOVE LINE WILL BE TYPED IF THE ERROR OCCURRED DURING }%g} *s ERROR AT BAD TRACK/SECTOR' THE ABOVE LINE WILL BE PRINTED IF A DATA ERROR OCCURES AT AN ADDRESS 193¢ THE NON=DATA TRANSFER PART OF THE OPERATION. %%28 1263 1264 ON THE DISK WHICH THE OPERATOR HAS IDENTIFIED AS BEING BAD. 1267 1268 }598 A WORD CALLED °*STATUS® IS DISPLAYED WITH THE RM REGISTERS. THE OF THIS WORD IDENTIFY HOW THE ERROR WAS PROCESSED BY THE CONTENTS RM DRIVQ}HANDLER ROUTINE. (SEE SECTION 9.7) *NOTPRT® MUST BE O FOR THE ERROR TO BE REPORTED. }ggg 1271 w2 1273 . PARAMETER LINE 3 ee=ee= PREV ADDR= CUUU TVV Sww 11%% ERROR AT CXXX TYY SZZ 1276 1277 THE ACTUAL ADDRESS OF THE ERROR SECTOR AND THE PREVIOUS DISK ADDRESS ARE GIVFEN IN THIS LINE. CYLINDER, TRACK, & 1280 LINE 4 }%gz PRSNT ADDR= CXXX TYY SZZ 1285 1286 THIS LINE IDENTIFIES THE ADDRESS WHEN THE ERROR WAS DETVECTED; THE PREVIOUS ADDRESS IS ALSO GIVEN. CYLINDER, TRACK, & SECTOR }%;g e }ggg 1289 % 1291 }%g% 1294 1295 1296 1297 SECTOR ADDRESSES ARE IN DECIMAL. T PREV ADDR= CUUU TVV SWW ADDRESSES ARE GIVEN IN DECIMAL. LINE 5 eeesea= START (YL= XXX END CYL= YYY THIS LINE IDENTIFIES THE STARTING CYLINDER OR A SEEK (IMPLIED) AND THE DESTINATION CYLINDER. CYLINDER ADDRESSES ARE IN DECIMAL. 1298 LINE 6 11.%%3? START CYL= XXX 1303 1304 }ggg 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. 1307 LINE 7 % 1300 %08 1309 %}? e=s===- END CYL= YYY e=esa=s - RMBA= XXXX RMWC= YYYY ACTUAL CYL= 222 CZ SEQ 0027 _.—l_.—l—l_.—l—b....—l_.—.—l—n—b—h_._;-.l_.—l—l—h—A—A_._._;_._b_;—-l-.—.l-l.-l_;_._.—l_l—l—l-l—a_;_.-‘_.—-l—l_a—h_a_._‘_‘ NN U A U AN N U U N NN N O N NN N AN N AN NN N N NN W WN U AN NN N N NN ANINI RO NN POV NINI NN =D b e e cd d b O O 0O NOCNES WA = O 0 00 NN NN = OO 00 NOMN S NN oo~V CZRNAAO RM80 PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE 3-23 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 - p - - RMCA= YYYY THIS LINE GIVES THE CONTENTS OF THE RM TRACK AND SECTOR ADDRESS REGISTER AND THE CONTENTS OF THE DESIRED CYLINDER THIS LINE IS NOT PRINTED IF SW<05> IS NOT ADDRESS REGISTER. SET. LINE 10 BUFFER ADDR= XXXX WRD CNT= YYYY ACTUAL NUMBR WRDS XFRD= 2112 THIS LINE GIVES THE STARTING ADDRESS OF THE BUFFER USED FOR THE CURRENT DATA TRANSFER OPERATION, ITS SIZE(WORD COUNT), AND THE THE STARTING ADDRESS OF THE ACTUAL NUMBER OF WORD TRANSFERED. BUFFER IS IN OCTAL, THE WORD COUNT AND WORDS TRANSFERED VALUE ARE IN DECIMAL. 343 347 348 349 350 e RMDA= XXXX 344 345 START SECTOR= 22 THIS LINE IDENTIFIES THE STARTING DISK ADDRESS OF THE PRESENT CYLINDER, TRACK, AND SECTOR VALUES ARE DECIMAL. OPERATION. 340 341 342 % START TRK= YY @00 LINE N eeeess EXPCTD DATA= XXXX RECEVD DATA= YYYY WORD POS= 212 352 ISK, THIS LINE GIVES THE EXPECTED DATA, THE RECIEVED DATA FROM THE DIS AND THE LOCATION OF THE WORD IN THE SECTOR. THE WORD POSITION IS IN DECIMAL. 354 LINE 12 351 353 % 356 357 358 359 ese=e=e- HEADER CONTENTS OF ERROR SECTOR= XXXX XXXX XXXX XXXX 360 THIS LINE GIVES THE CONTENTS OF THE HEADER OF THE SECTOR WHICH GAVE THE ERROR. 362 LINE 13 361 % 364 365 eeceses RMEC1= XXXX RMEC2= YYYY THIS LINE WILL BE PRINTED AFTER A SUCESSFUL RETRY OF A SECTOR WHICH BECAME ECC CORRECTABLE DURING RETRY. CZRNAAD RM8O PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-24 1369 1370 3 1372 1373 1375 ECC CORRECTABLE THE SECTOR IN ERROR 1S ECC CORRECTABLE; NO RETRY ATTEMPTS ARE 1378 LINE 15 1380 SEQ 0028 LINE 14 NECESSARY. 1 379 3 leeces 1376 1377 c ....... 1381 READ CORRECTLY 1383 THE SECTOR IN ERROR WAS READ WITHOUT ERROR. 1385 LINE 16 1 386 1387 ------- 1388 ECC CORRECTABLE 1390 THE SECTOR IN ERROR BECAME ECC CORRECTABLE 1392 LINE 17 1 393 1394 1395 1397 ....... CORRECTED ON X RETRY THE OPERATION WAS PERFORMED ERROR FREE ON THE INDICATED RETRY 1398 ATTEMPT, 1400 LINE 18 1399 %1 1402 1408 Seedee- UNCORRECTABLE AFTER X RETRIES 1405 THE OPERATION COULD NOT BE PERFORMED CORRECTLY AFTER THE 1408 LINE 19 1411 DIFFERENT ERROR DURING RETRY 1413 WHILE THE PROGRAM WAS RETRYING THE ERROR, 1415 PRINTED (SEE LINE 2). 1417 LINE 20 1420 DATA COMPARISON ERRORS 1406 %09 1410 1414 1416 %8 1419 INDICATED NUMBER OF RETRY ATTEMPTS. Seeeee A DIFFERENT OCCURRED. IF THIS LINE IS PRINTED, THE RH/RM REGISTERS WILL ALSO BE deeee- 1422 A PRINT JT OF THE DATA COMPARISON ERRORS FOLLOW THIS LINE. 1424 LINE 21 425 eeedes- 1 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-25 1426 }2%3 1429 D 3 TOTAL COMPARE ERRORS= XXXX THIS LINE GIVES THE TOTAL DATA COMPARISON ERROR COUNT. }2%? VALUE GIVEN IS IN DECIMAL. 1432 ILINE 22 }2%2 THE DATA COMPARED 0K wss 1434 16437 THIS LINE INDICATES THE RESULTS OF THE DATA COMPARISON FOLLOWING ECC CORRECTION. 1440 LINE 23 w1t 1442 THE eeceees 1438 1439 SEQ 0029 eeeseses }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 PRINTEP 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 L 1457 1458 1459 1460 1461 1462 DECIMAL. LINE 25 ........ ERROR WAS NOT IN THE DATA READ - }222 ECC CORRECTION CAN'T BE PERFORMED }222 THE DATA ERROR WAS NOT IN DATA TRANSFERED TO MEMORY. 1467 LINE 26 }2;% CONTENTS OF THE ERROR SECTOR (REPORTED ABOVE) LAY IF SW<03> IS SET, THE SECTOR WHICH GAVE THE °'DCK*, °'DTE' OR, . 1473 }2;2 'WCF®' ERROR OR 'HARD®' DATA CHECK ERROR IS PRINTED. CONTENTS CF THE SECTOR FOLLOW THIS LINE. 1476 LINE 27 %2;3 TOTAL ERRORS:X oL 1481 1482 T WOFL:N WRDS WRITN: YYYY THE ROFL:N WRDS READ: 72221 THIS IS THE LAST LINE PRINTED FOR ALL NON-POSITIONING TYPE ERRORS. CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-26 1483 E 3 SEQ 0030 "ERRORS IS THE TOTAL ERROR COUNT FOR THE DRIVE AND INCLUDES 1484 }282 EVERY ERROR DETECTED, REGARDLESS OF TYPE. 1487 }238 "WOFL' NUMBER OF TIMES °‘WRDS WRITN' HAS OVERFLOWED 'WRDS WRITN' IS THE TOTAL NUMBER OF WORDS WRITTEN THE DRIVE. 1490 }235 "ROFL' NUMBER OF TIMES °"WRDS READ' HAS OVERFLOWED *WRDS READ' 1S THE TOTAL NUMBER OF WORD READ BY THE DRIVE. 1493 LINE 28 }239 TOTAL SEEKS: XXX TOTAL POS ERR= YYY TOTAL SKI ERR= 2 ws T %233 THIS IS THE LAST LINE PRINTED FOR ALL POSITIONING TYPE ERRORS. 1500 *TOTAL SEEKS' IS THE TOTAL NUMBER OF SEEK OPERATIONS PERFORMED }285 BY THE ORIVE. *TOTAL POS ERR®' IS THE TOTAL NUMBER OF PROGRAM DETECTED POSITIONING 1503 }ggg ERROR BY THE DRIVE. 1506 *TOTAL SKI ERR' IS THE TOTAL NUMBER OF 'SKI' ERRORS SIGNALED BY 1507 1508 1509 THE DRIVE. 1510 8. PROGRAM DESCRIPTION }g}z 8.1 PROGRAM OPERATION s 1512 e===scccccccccccses 1515 1516 1517 1518 1519 1520 }gg; WHEN THE PROGRAM IS STARTED, PROVIDING APT TTY ENABLE BIT IS SET OR DJAGNOSTIC 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. }ggz THE PROGRAM SCANS ITS INTERNAL ASSIGNMENT TABLES, LOOKING FOR: 1525 1) 1526 1527 %) ) }ggg &) 1528 1531 1532 DRIVES TO ASSIGN/DEASSIGN PERFORMANCE SUMMARY TYPEOUT REQUESTS DRIVES REQUIRING COMMAND INJTIATION, 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 }g%g BE MADE BY THE OPERATOR WHEN A DRIVE IS ASSIGNED (°T® COMMAND). 1535 1536 WHEN A DRIVE IS ASSIGNED, THE KEYBOARD ENTRY ROUTINE VERIFICS THAT THE DRIVE 1S PRESENT, IS AN RM80, AND IS ONLINE. THE ASSIGNMENT ROUTINE }ggg A 'RECALIBRATE' INSTRUCTION. 1537 THEN ISSUES A ‘READIN PRESET' INSTRUCTION, SETS °*FMT16', AND ISSUES CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-27 1540 1561 F 3 SEG 0031 PARAMETERS FOR THE OPERATION ARE SELECTED AND A BUFFER IS ASSIGNED. IF THE OPERATION IS A WRITE OR WRITE CHECK COMMAND, THE ASSIGNED BUFFER 1542 WILL BE FILLED WITH THE SELECTED PATTERN, 1547 1548 THE COMMAND INITIATION ROUTINE FIRST LOOKS AT THE rYLINDER ADDRESS OF THE REQUESTED OPERATION. IF THE DRIVE MUST SEEK TO ANOTHER CYLINDER TO 00QDO0OR 0000 NN NNNNNNNNORORO O OO O e b e e e i cned b e cd b e e ek b b b o b b b b b e ced e i b d D D D D d D b o D e b b d ViAW AWV AWM A LA AWM AR AWVT AWV O NI AWZWWAWN VAV WAV AWVIAWIWAIILA N VTA AWV G 1543 1544 }gzz 86 87 (WRITE CHECK COMMANDS ARE ISSUED AFTER EACH WRITE COMMAND. THE WRITE CHECK COMMAND USES THE PARAMETERS SELECTED FOR THE PRECEDING WRITE COMMAND.) CONTROL 1S THEN PASSED TO THE COMMAND INITIATION ROUTINE. PERFORM THE OPERATION, THE PROGRAM ISSUES A SEARCH INSTRUCTION TO THE DRIVE WITH A *TARGET' SECTOR WHICH IS 5 SECTORS EARLIER THAN THE °‘TRANSFER' SECTOR. (THIS ALLOWS THE PROGRAM TO INITIATE OPERATIONS ON ANOTHER DRIVE WHILE THE PRESENT DRIVE, OR OTHER DRIVES, ARE SEARCHING FOR °‘TARGET' SECTORS. ALL SEEKS ISSUED B8Y THE PROGRAM ARE IMPLIED 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 VERIFY 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 WORDS 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 REINITIATES ANOTHER OPERATION ON THE RELEASED DRIVE. ERRORS WHICH OCCUR ARE PROCESSED IN THE FOLLOWING ORDER. ERRORS WILL BE REPORTED AS THE FIRST ERROR TYPE CHECKED. A. ERRORS REPORTED FOR OPERATIONS WHICH HAVE NOT COMPLETED NORMALLY. OPERATION NOT COMPLETED WITHIN TIME LIMIT - EM13 DRIVE WENT OFFLINE - EM14 B. ERRORS REPORTED FOR OPERATIONS WHICH COMPLETE NORMALLY. CORRECTABLE UNSAFE - EM60 DRIVE TIMING ERROR - EM32 DATA CHECK ERROR = EM21 WRITE CHECK WITH DCK SET - EM22 HEADER CRC ERRORS = EM20 88 89 90 9N FORMAT ERRORS - EM24, EM26 HEADER COMPARE ERRORS - EM25, EM27 PROGRAM DETECTED POSITIONING ERROR - =MS1 SEEK _INCOMPLETE ERROR - EM50 WRITE CHECK WITHOUT °DCK' SET - EM23 RH CONTROLLER OR _UNIBUS TRANSFER ERROR = EM40 93 'PAR® ERROR - EM33 92 9 95 96 MULTIPLE 'OP]' ERROR - EM3] ‘WCF' ERROR - EM34 *IAE’ ERROR ~ EM35 ‘WLE® ERROR - EM36 SEQ 0032 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-28 MISCELLANEOUS DRIVE ERROR - EM30 1597 C. ERRORS NOT FLAGGED B8Y THE HARDWARE ERROR DETECTION LOGIC. 08 AND COMMAND TERMINATION. WHEN THE DUAL PORT HANDLER ROUTINE IN THE EXERCISER PROGRAM RECEIVES A REQUEST FOR A DRIVE, THE PROGRAM VERIFIES THAT THE DRIVE IS ONLINE. THE DRIVE 1S 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 1S SEIZED BY THE OTHER PORT, A DRIVE CLEAR COMMAND 1S ISSUED TO THE DRIVE TO SET °"PORT REQUEST'. THE PROGRAM THEN CHECKS NOVNE WA —=2OVR NN WA —=OO = b b bt b b b b = OO NN AIRIPORININ) DUAL PORT OPERATION DUAL PORT OPERATION IS NEARLY IDENTICAL TO THE OPERATION DESCRIBED IN SECTION 8.1. THE DIFFERENCES ARE IN COMMAND SEQUENCE INITIATION *DVA’ IN °'RMCS1'. IF THE DRIVE IS AVAILABLE AS INDICATED BY THE °‘DVA’ BIT, THE COMMAND SEQUENCE WILL BE INITIATED IN THE NORMAL MANNER (SEE SECTION 8.1 ABOVE). IF °'DVA® WAS NOT SET, THE PROGRAM K KES AN ENTRY FOR THE DRIVE IN AN INTERNAL 'PORT REQUEST PENDING' TABLE AND STARTS A 15, SECOND TIMER FOR THE DRIVE. IF THE DRIVE HAS NOT SWITCHED TO THE REQUESTING SYSTEM WITHIN THE 15. SECOND INTERVAL, THE PROGRAM REPORTS A 'NO RESPONSE TO PORT REQUEST' ERROR. NORMALLY THIS ERROR MESSAGE INDICATES A FAILURE IN THE DUAL PORT CONTROL W LOGIC IN THE DRIVE BEING TESTED; HOWEVER, UNDER CERTAIN CONDITIONS (E.G. MASSBUS PARITY ERRORS BEING REPORTED ON THE OTHER SYSTEM ON A TTY), THE OTHER PROCESSOR WAS UNABLE TO PROCESS THE DRIVE AFTER IT HAD REQUESTED THE DRIVE. THE OPERA:OR MUST BE AWARE OF WHAT THE OTHER SYSTEM IS DOING AT ALL TIMES TO INTERPRET THE PORT RELATED ERROR MESSAGES PROPERLY. AFTER A DRIVE HAS CNOMPLETED AN OPERATION, THE PROGRAM WILL STORE THE REGISTERS AND ISSUE A °'RELEASE' TO THE DRIVE; IF THE OPERATION TERMINATED WITH AN ERROR, THE DRIVE WILL NOT BE RELEASED UNTIL ERROR PROCESSING HAS BEEN COMPLETED. W b e 8.2 W= OO VAWV W= OV~ NN OO b e oSO AR R PR RRR RO a@a@ SRURZS OV &I b e d b e i b e b e b b o e i o cad b b d e = OO0 OO.O.OOOOOOOOOOOO OO OO OO OO > d =B BUS ADDRESS OR WORD COUNT INCORRECT - EM41 DATA COMPARE ERRORS = NO DRIVE ERROR DETECTED - EM&2 CAN'T MATCH DATA READ WITH A PATTERN - EM43 ERROR BIT(S) SET, BUT NO ERROR SIGNALED BY THE RH CONTROLLER - EM&44 ECC LOGIC FAILURE ~ EM4S BUS ADDRESS OR WORD COUNT NOT CONSISTENT - EM46 SINGLE PORT DRIVES, DRIVES WHICH ARE IN NEUTRAL BUT NOT BEING EXERCISED BY THE OPPOSITE PORT ARE STILL TREATED AS DUAL PORT DRIVES IN THAT A RELEASE COMMAND IS ISSUED AT THE END OF NORMAL COMMAND PROCESSING OR AT THE END OF ERROR PROCESSING. A RELEASE COMMAND ISSUED UNDER THESE CONDITIONS HAS NO FUNCTIONAL EFFECT ON THE OPERATION OF THE DRIVE. 8.3 SELECTION OF OPERATION VARIABLES A. SECTOR ADDRESS SELECTION IS RANDOM BETWEEN THE VALUES IN "MINSEC* AND °*MAXSEC®. TRACK ADDRESS SELECTION IS RANDOM BETWEEN THE VALUES IN °MINTRK® AND °‘MAXTRK®. CYLINDER ADDRESS SELECTION IS RANDOM BETWEEN °MINCYL® AND °"MAXCYL'. IF A MINIMUM ADDRESS 1S GREATER THAN THE CORRESPONDING MAXIMUM ADPDRESS, THE SEQ 0033 CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-B2 15:16:58 PAGE 3-29 THE WORD COUNT IS RANDOMLY SELECTED BE/WEEN 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. D e i el d el §\l $388228383 D oo 200NN D d VIV [ )1V, I ] PROGRAM WILL SWAP 'MAX® AND °‘MIN' ADDRESSES AND CONTINUE. THE DATA WRITTEN IS RANDOMLY SELECTED AMONG THE 15. STANDARD D ) PATTERNS. THE PARAMETER ‘'PATTERN' ENABLES THE RANDOM PATTERN SELECTION, IF THIS PARAMETER IS 0. —b bb e e e oo~ (ol e Yo Yo To 3 NN NNNON O [V, ¥V. nN—=O ) e D THE COMMANDS ARE SELECTED RANDOMLY. WRITE CHECK DATA COMMAND |S gi?:O?flED OgLY IF THE PREVIOUS COMMAND WAS THE APPROPRIATE WRITE 1676 00008 =200 00O~ ‘080 ~NOwW SN oo —b b b —b e b b b 33 b b wd b ==b aad 1683 8.4 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 O, THE PROGRAM WILL ASSUME THAT THE DESIRED DATA PATTERN IN LOCATION °PATTERN®' IS THE DATA TO LOOK FOR AND WILL NOT TRY TO MAT(H ANY PATTERNS. THIS ALLOWS THE OPERATOR TO SCAN THE DISK FOR ANY SPECIFIC PATTERN. PAT 1 PAT 2 PAT 3 PAT & PAT S PAT 6 PAT 7 +PAT 8 000001 000003 000007 000017 000037 000077 000177 000377 000777 001777 003777 007777 017777 037777 077777 177777 177776 177774 177770 177760 177740 1772700 177600 177400 177000 176000 174000 170000 160000 140000 100000 000000 000000 000000 000000 177777 177777 177777 000000 000000 177777 177777 000000 177777 000000 177777 000000 177777 133331 133331 133331 133331 133331 133331 133331 133331 133331 133331 133331 133331 133331 133331 133331 133331 052525 052525 052525 125252 125252 125252 052525 052525 125252 125252 0525;5 125252 0525%5 125252 052525 125252 155555 155555 155555 155555 155555 155555 155555 155555 155555 155555 155555 155555 155555 155555 155555 155555 026455 026435 026455 151322 151322 151322 026455 026455 151322 151322 026455 151322 026455 151322 026455 151322 155535 133333 155555 133333 155555 133333 155553 133333 153333 133333 155555 133333 155355 133333 155555 133333 PAT 9 PAT 10 PAT 11 PAT 12 PAT 13 PAT 14 PAT 15 000001 000002 000006 000010 000020 177776 177775 177773 177767 177757 172666 155555 172666 155555 172666 077777 137777 157777 167777 173777 153333 066667 153333 066667 153333 000000 177777 177777 177777 177777 177777 000000 000000 000000 000000 SEQ 0034 b b b o o 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 b —.—.—ldd-fl-‘fl-‘-‘ddddddddd-‘dd-‘dd—l—lddd—l_l—l-‘d—l-l-l_.d-l—.—‘—l—l-‘d—l-‘—l—b—l—l—l—l—.—l NN\INNNVNNNNN\IVNNNNN\IN\INN\IV\IVNN\IVVNNVNNNNN\J\I\INNVNNNN\I Ooommm\n\n\h\nmmmbbJ\bbbbbJ\bwwwquwWMWNNNNNNNNNN—O-‘ wu\,-.oomyomauw-‘oowwombwmdoom\lombwl\)—oom\lombwm—-oom'4o~vu~u-a CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 3-30 76 764 765 766 767 177737 177677 177577 177377 1726777 175777 173777 167777 157777 137777 077777 155555 17c666 155555 172666 155555 172666 155555 172666 155555 172666 155555 175777 176777 177377 177577 177677 177737 177757 177767 177773 177775 177776 066667 177777 000000 177777 177777 177777 177777 177777 177777 000000 000000 000000 000000 000000 000000 177777 000000 153333 177777 153333 066667 153333 066667 153333 066667 066667 000000 * WORST CASE PATTERN 9.1 RH/RM DRIVER THIS DOCUMENT IS THE USER'S GUIDE FOR THE RH/RM DRIVER. 9.2 TO INITIALIZE THE DRIVER: JSR RETURN PC RMINIT UPON RETURN YOU MUST EXAMINE THE °'DRVSTA'' TABLE TO DETERMINE THE DRIVES THAT ARE ONLINE FOR TESTING. THE °'DRVSTA' TABLE IS THE STATE OF EACH DRIVE WILL EIGHT BYTES; ONE BYTE PER DRIVE. BE INDICATED AS FOLLOWS: DRIVE STATE DRVSTA ONL INE OFFLINE, DRIVE IS NOT AN RMBO, OR >0 =0 NONEXISTENT DRIVE UNSAFE <0 THE DRIVE TYPE 1S DEFINED IN AN 8 BYTE LONG TABLE TAGGED ‘DRVTYP', THE TABLE CONTAINS ONE BYTE FOR EACH DRIVE AND IS INDEXED BY THE DRIVE NUMBER. ENTRIES ARE ENCODED AS FOLLOWS: DRVYTYP CONDITION 0 1 -1 NONEXISTENT DRIVE RM80 NOT AN RM80 THE *RMINIT' ROUTINE WILL DO A READIN PRESET AND WILL SET FMT16. 9.3 AFTER THE DRIVER HAS BEEN INITIALIZED, IT IS CALLED USING THE FOLLOWING SEQUENCE. CALL: JSR PNTDP8 RO,RM80 sMAKE THE CALL ;ADDRESS OF DPB+ | J CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 3-31 3 ;RETURN ]F QUEUE IS FULL ;RETURN IF REQUEST IS IN :QUEUE OR THERE IS AN :ERROR CONDITION RE TURN1 RETURN2 1768 1769 1770 };;; };;z «DP8 (DATA PARAMETER BLOCK) 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 PNTDPB: .BYTE .BYTE .BYTE BYTE .WORD WORD 0 0 .BYTE O .BYTE 0 .WORD .WORD 0 O .WORD O 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 0 0 0 0 };3; 1799 1800 9.4 T0 UTILIZE THIS CAPABILITY YOU MUST SUPPLY THE ‘RM TIMER'* ROUTINE WITH THE ELAPSED TIME IN THE FOLLOWING MANNER: 1807 }ggg 1813 1814 1815 1816 1817 }g}g 1820 1821 1822 1823 1824 :BIT15=1=ERROR OCCURRED :B81T07=1=DONE :BIT14-BIT09 AND BIT06-8IT03 THE DRIVER PROVIDES A SOF TWARE TIMEOUT CAPABILITY. 1803 1804 }ggg 1810 :(0) DRIVE NUMBER 2(1) OFFSET VALUE OR FMT16, ECT, AND HCI :(2) COMMAND :(3) PSEL AND A17 AND A16 :(4) WORD COUNT (MUST BE NEG.) :(6) BUFFER ADDRESS OR sREGISTER TABLE POINTER 2(10) SECTOR ADDRESS OR cFIRST REG. INDEX 2(11) TRACK ADDRESS OR sLAST REG. INDEX 2(12) CYLINDER ADDRESS :(14) ERROR TABLE POINTER .POINTS TO THE FIRST OF TWENTY ;LOCATIONS OF WHERE THE DRIVER 21S TO _STORE THE RH/RM sREGISTERS ON AN ERROR. IF LEFT ;ZERO REGISTERS ARE NOT SAVED. :(16) STATUS/ERROR INDICATOR sINDICATE TYPE OF ERROR }gg} }g}} SEQ 0035 MoV #16.,-(SP) JSR PC,RMTMR :16. HILLISECONDS BETWEEN :CLOCK_TICKS $CALL THE TIMER ROUTINE 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$: 28: JSR WRTDPB BR 18T BEQ BMI RO,RM80 1$ WRTDPB+16 ;CALL THE DRIVER :DPB_ADDRESS :WAIT FOR QUEUE IF FULL :WAIT FOR COMMAND TO COMPLETE ERROR1 ;ERROR OCCURRED 5 ;DRIVE #5 2% . . WRTDPB: .BYTE .BYTE 0 : CZRNAAO RM8G PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 3-32 SEQ 0036 1825 1826 1827 1828 1829 .BYTE BYTE "WORD <WORD ‘BYTE 161 0 =1000. WRTBUF 3 1831 1832 1833 "WORD .WORD "WORD 400 EKRTBS 0 BYTE 1830 1834 1837 WRTDPB: .WORD }gzg -WORD .WORD "WORD "WORD BYTE sCYLINDER ;ERROR TABLE sSTATUS/ERROR INDICATOR sTHIS SETUP ACHIEVED ;EVERYTHING THE ;ABOVE TABLE DID, BUT sIN A CLEANER FORMAT 400,ERRTBS,0 RH/RM REGISTERS 1852 RMCS2 cmceees= 1849 1850 1851 RMW(C RMBA RMDA 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 RMDS RMER1 RMAS RMLA RMDB RMMR1 RMDT RMSN RMOF RMDC RMHR RMMR2 RMER? RMEC1 RME (2 *RMBAE *RMCS3 1870 }g;} b b RMCS1 b 1848 NN AN NI NI N == MNEMONIC 187 S WRITE -1000. WRTBUF 3,5 NOOASNOONSNNOONSNOONSTNOONMNO 9.5 1846 1875 186 1877 1878 1879 1880 1881 s TRACK NN SN B8 85 B 1838 1839 1840 1841 }g;z :WORD COUNT ;BUFFER ADDRESS :SECTOR ALTERNATE DPB SETUP }ggg }gzg sWRITE COMMAND * RH70 CONTROLLER REGISTERS 9.6 COMMANDS PERFORMED BY THE DRIVER COMMAND Leeemme- SEEK RECAL IRATE DRIVE CLEAR RELEASE COMMAND TYPE — CZRNAAO RMBO PERF EXLR MACRD V04.00 14~JAN-82 15:16:53 PAGE 3-33 »novVEZ e b e b b CHECK DATA CHK HEADER & DATA DATA HEADER & DATA READ DATA READ HEADER & DATA WRITE WRITE WRITE WRITE e e e b GET REGISTER(S) SET _FORMAT SELECT DRIVE OOV OOOODVLUVINMIVZZZVD b b e e OFFSET RETURN TO CENTER READIN PRESET PACK ACKNOWLEDGE SEARCH NNOCOMNAWNES S B WWNIN) = -2 = U =b N = LN =2 =2 =~ NN SEQ 0037 HOUSEKEEPING POSITIONING DATA TRANSFER SPECIAL PROVIDED BY THE DRIVER DPB STATUS/ERROR INDICATOR WORD W WIWRAIND NN NI NN NINININD =D b b = e cod =d =b b d &»H W= O VO NOWVIBWNI =00V NOWVNEWN=0O MEANING IF ON A ‘1" ERROR OCCURRED DONE (BIT07=0); BITS 14-9 SPECIFIES TYPE DONE (BIT07=1); BITS 6~3 SPECIFIES TYPE 14D USER MADE A REQUEST FOR A FUNCTION TO BE PERFORMED ON AN OFFLINE OR UNSAFE DRIVE 9(3)(4) SOF TWARE TIMEGUT OCCURRED ON THIS DRIVE 7 DONE 6(2) ERROR OCCURRED DURING AN 1/0 OPERATION 5(2) ERROR OCCURRED DURING AN OPERATION OTHER THAN 1/0. 4(2) CORRECTABLE UNSAFE CONDITION OCCURRED b b o el b e 0 OO O 00 b e e b e b b b b b md D cecd d b b b b 0 000 OO O OO OO0V O VOOV OO0 THIS INDICATOR WILL INFORM THE USER OF THE RESULTS OF THE REQUEST. THIS IS ACCOMPLISHED BY SETTING VARIES BITS OF THE INDICATOR TO CORT REGWUEST TIMEOUT. THE DRIVER REQUESTED THE DRIVE BUT THE OPPOSITE PORT DID NCT RELEASE THE DRIVE WITHIN 15. SECONDS. b b b e NON-EXISTENT DRIVE REQUESTED. USER MADE A REQUEST FOR A NON-EXISTENT DRIVE. NOTES FOR ABOVE SEQ 0038 b nd D d b o N W i D N ] ) b b 948 REQUEST WASN'T PUT IN QUEUE. REGISTERS WERE NOT SAVED) (RH/RM 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''. A4 ~n ”~ = D sd e i =D cd e s D VNE W =00 0000V VO SRS SW CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE (3) REQUEST QUEUE HAS BEEN EMPTIED. THE 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. THERE ARE A FEW ERRORS THAT CAN OCCUR THAT CAN NOT BE INDICATED IN A DPB. 60 961 962 WHEN THIS TY PE OF ERROR IS DETECTED BY THE DRIVER IT WILL MAKE AN ERROR (AL L OF THE FORM ''ERROR N'‘, WHERE ‘N'' IS THE ERROR NUMBER AND T HE ERROR WILL BE AN EMT INSTRUCTION. b e b e 58 1965 N 1 9“ TYPE -oeows 1968 }898 1 RH70 INTERRUPT OCCURRED (RHAS=0) *R4= RMCS1'S ADDRESS 1971 1972 1973 1974 1975 1976 1977 1978 2 UNEXPECTED ATTENTION OCCURRED R1= DRIVE NUMBER R3= ATA BIT *R4= RMCS1°'S ADDRESS R5= (RMAS) RMERRS _=RMDS RMERRS +2=RMER1 RMERRS +4=RMER2 RMERRS +6=RMMR2 1980 3 NOT USED }gg% 4 NOT USED 1984 1985 1986 1987 1988 1989 5 ADDRESS PLUG CHANGE BIT SET ('OPE' ERROR) }gg% * THIS IS THE ACTUAL UNIBUS ADDRESS (176700) 1967 1979 1981 }83? 1994 < DATA AVAILABLE - o990 %ae®nes R1= DRIVE NUMBER R3= ATA BIT *R4= RMCS1'S ADDRESS R5= (RMAS) RMERRS _=RMDS RMERRS +2=RMER1 RMERRS +4=RMER2 a CZRNAAQ RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE & SE@ 0039 Sg J*LAST REVISION 23-DEC-81 57 .TITLE CZRNAAQ RMB0 PERF EXER :*COPYRIGHT (C) 1982 :*DIGITAL EQUIPMENT CORPORATION 'COLORADO SPGS., CO. 80919 tPROGRAH BY MIKE LEAVITT *THIS PROGRAM WAS ASSEMBLED USING THE PDP-11 MAINDEC SYSMAC *PACKAGE 58 SBTTL :* % 59 60 | OPERATIONAL SWITCH SETTINGS SWITCH o i o o 15 13 10 8 A 5 7 6 62 63 64 65 66 47 68 69 70 o i o o o A ot o o 2 72 73 o o 1 71 4 3 ] ;g o 76 .SBTTL 001100 104000 000004 000011 000012 000015 000200 177776 177776 177774 177772 177570 177570 USE =—oeseoeow A o 61 (MAINDEC=-11-DZQAC-C5), 18-MAR-81 0 -oe HALT ON ERROR INHIBIT ERROR TYPEOUTS BELL ON ERROR INHIBIT END OF PASS MESSAGES DISPLAY ALL DATA COMPARE ERRORS DON'T CHANGE PARAMETERS (LOOP ON PRESENT VALUES) A. PARTIAL REGISTER DISPLAY IF ERROR B. A. 8. A. 8. NO ECC CORRECTION RESULTS DISPLAYED IF ERROR DO NOT CHECK FOR MAXIMUM ERROR COUNTS DO NOT DROP DRIVE AT END OF TEST DISPLAY ERROR SECTOR IF 'DCK', °'DTE', OR °'WCF' ERROR DISPLAY SECTOR IF *DCK' ERR UNCORRECTABLE AFTER 28TH RETRY C. IF DATA COMPARE ERROR £ SW07 SET, DISPLAY REMAINDER OF BUFFER A. DO NOT TYPE DRIVE STATUS AT PROGRAM START B. DO NOT TYPE PERFORMANCE REPORT AFTER SPECIFIED 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 'INITIAL ADDRESS OF THE STACK POINTER #x% 1100 e« STA = 1100 SCOPE = IOT ERROR = EMT ::BASIC DEFINITION OF ERROR CALL ¢:BASIC DEFINITION OF SCOPE CALL *HISCELLANEOUS DEFINITIONS LF CR CRLF PS PSW=PS STKLMT PIRQ DSWR DDISP =1 =12 =15 = 200 = 177776 ::CODE FOR HORIZONTAL TAB :;CODE FOR LINE FEED ::CODE FOR CARRIAGE SETURN ::CODE FOR CARRIAGE RETURN-LINE FEED s ;PROCESSOR STATUS WORD = = = = ssSTACK LIMIT REGISTER s ;PROGRAM INTERRUPT REQUEST REGISTER s ;HARDWARE SWITCH REGISTER s ;HARDWARE DISPLAY REGISTER 177774 177772 177570 177570 s *GENERAL PURPOSE REGISTER DEFINITIONS C2l TAL CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE &-1 SEQ 0040 BASIC DEFINITIONS 000000 000001 000002 000003 000004 000005 000006 000007 000006 000007 RO R1 R2 R3 R4 RS Ré R/ SP PC 000000 000040 000100 000140 000200 000240 000300 000340 PPO PR1 PR2 PR3 PRé PRS PRE PR? 100000 040000 020000 010000 004000 002000 001000 000400 000200 000100 000040 000020 000010 000004 000002 000001 001000 000400 000200 000100 000040 000020 000010 000004 000002 000001 100000 040000 020000 010000 004000 002000 001000 = %0 = X1 = X2 = 23 = X4 = %5 = X6 = X7 = X6 = X7 : sGENERAL REGISTER ; sGENERAL REGISTER ¢ sGENERAL REGISTER s sGENERAL REGISTER s sGENERAL REGISTER : sGENERAL REGISTER : sGENERAL REGISTER : sGENERAL REGISTER : s STACK POINTER : :PROGRAM COUNTER :*PRIORITY LEVEL DEFINITIONS =0 = 40 = 100 = 140 = 200 = 240 = 309 = 340 :;PRIORITY LEVEL 0 :sPRIORITY LEVEL 1 ssPRIORITY LEVEL 2 ::PRIORITY LEVEL 3 :sPRIORITY LEVEL 4 ¢ sPRIORITY LEVEL 5 ssPRIORITY LEVEL 6 :PRIORITY LEVEL 7 ;%' 'SWITCH REGISTER'® SWITCH DEFINITIONS = 100000 SW15 = 40000 SW14 = 20000 Swi3 = 10000 Sw12 SWi1 = 4000 SWo9 sw08 Swo7 SWoé SW05 SW04 sw03 SW02 = 1000 = 400 = 200 = 100 = 40 = 20 =10 =4 SWw10 SWOo1 = 2000 =2 =1 SWoo SW9=5w09 SW8=Sw08 SW7=SwW0? SW6=5W06 SW5=SW05 SW4=5wW04 SW3=SW03 SW2=SW02 SW1=5w01 SW0=Sw00 :*DATA BIT DEFINITIONS (BITOO TO BIT15) BIT1S BIT14 8IT13 BIT12 BIT11 8IT10 BITO9 = 100000 = 40000 = 20000 = 10000 = 4000 = 2000 = 100v SEQ 0041 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 4-2 BV RY " - [ =4 (=) — b QS b BPTVEC JIOTVEC 24 30 34 60 64 240 PWRVEC EMTVEC TRAPVEC TKVEC TPVEC PIRQVEC E _OUT AND OTHER ERRORS ..Q;SEgyfb AND ILLEGAL INSTRUC:]IONS s TRACE TRAP ..BREAKPOINT TRAP (BPT) s s INPUT/0UTPUT TRAP (10T) ««SCOPE** ; :POWER FAIL s :EMULATOR TRAP (EMT) «+ERROR+* ..'WRAP" TRAP s TTY KEYBOARD VECTOR :3TTY PRINTER VECTOR : ;PROGRAM INTERRUPT REQUEST VECTOR RH CONTROLLER REGISTERS IE ~ 000100 000200 000400 001000 002000 020000 040000 :SC nuiwnnnh sCONTROL AND STATUS REGISTER 1 (RMCS1) 40000 100000 s INTERRUPT ENABLE (BIT #6) ;READY (BIT #7) :HIGH ORDER BUS ADDRESS BIT (BIT #8) ;HIGH ORDER BUS ADDRESS BIT (BIT #9) ;PORT SELECT (BIT #10) ;MASSBUSS PARITY ERROR (BIT #13) sTRANSFER ERROR (BIT #14) :SPECIAL CONDITION (BIT #15) sWORD COUNT REGISTER (RMWC) s (EACH BIT IS CALLED BY BIT NUMBER) 93 ;BUS ADDRESS REGISTER (RMBA) :(EACH BIT IS CALLED BY BIT NUMBER) 9% 100 10 TRTVEC .SBTTL 92 95 96 97 98 99 4 ERRVEC RESVEC TBITVEC Py 82 83 84 85 86 87 88 89 90 91 :*BASIC ''CPU'' TRAP VECTOR ??DRESSES > 77 78 79 80 81 000034 000060 000064 000240 BIT9=81T09 BI178=B1T08 BI117=BI107 BIT6=BIT06 BIT5=BIT05 BIT4=BIT04 BIT3=BIT03 BIT2=BIT02 B8I1T1=B1701 81T0=81700 M) =D 000004 000010 000014 000014 000014 000020 000024 000030 @ 000400 000200 000100 000040 000020 ¢0o010 000004 000002 000001 001000 000400 000200 000100 000040 000020 000010 000004 000002 000001 S QY ey XY [elelelelele] elele) BASIC DEFINITIONS ;CONTROL AND STATUS REGISTER 2 (RMCS2) 000001 000002 us1 us2 1 r4 000006 US4 BAI PAT CLR IR OR 0 gs3 —_ -A—.—ld—id—l-b—d-.—l—l-.—.-._l—.—l—.—l-‘dd—lfl—l—l—j—.—ld—l—l—l—l-fl—l—l—l—l—l—l_fl_l_l-l—l-‘—b—.-—.—.—l N NINNN NN = D b b 2 D b = O OO OO o VWAV S SNBSS S DNWN NN NN NN = OO0 N MW =O VO NOWVNE WA =O 0B NANSWN=O000NOMWN &H NOWN S W= OOV OB 101 102 103 Y NI U Oy U NIy TNy OO0 OOOOOOOOO PSt=t=t=0==3=0=2=2=) P=t=1=3=-3=-2=2-1 RH CONTROLLER REGISTERS 100000 JUNIT SELECT (BIT #2) :BUS ADDRESS INCREMENT INHIBIT (BIT #3) :MASSBUS PARITY TEST (BIT #4) ;CLEAR (BIT #5) : INPUT READY (BIT #6) :OUTPUT READY (BIT #7) :MASS BUS PARITY ERROR (BIT #8) :MISSED TRANSFER ERROR (BIT #9) :PROGRAM ERROR (BIT #10) :NON EXISTENT MEMORY (BIT #11) :NON EXISTENT DRIVE (BIT #12) :UNIBUS PARITY ERROR (BIT #13) ;WRITE CHECK ERROR (BIT #14) :DATA LATE (BIT #15) ;DATA BUFFER REGISTER (RMDB) s (EACH BIT IS CALLED BY BIT NUMBER) .SBTTL RM REGISTERS sCONTROL AND STATUS 1 REGISTER. (#00) 1 000001 000002 0 =2 004000 F¢ F3 Fé DVA =10 =20 = 40 = 4000 F1 =4 :G0 BJ T (BIT #0) sFUNCT ION CODE BIT M sFUNCT ION CODE BIT #2 sFUNCT ION ;FUNCTION CODE BIT #% ;FUNCTION CODE BIT #5 :DEVICE AVAILABLE (BIT #11) :DRIVE STATUS REGISTER (RMDS1) (#01) 000001 000100 100000 OFFON vv DRY DPR PGM LBT WRL MOL PIP ERR ATA =1 = 100 = 200 = 400 = 1000 = 2000 = 4000 = 10000 = 20000 = 40000 = 100000 sOFFSET ON (BIT #0) ;VOLUME VALID (BIT #6) :DRIVE READY (BIT #7) :DRIVE PRESENT (BIT #8) :PROGRAMABLE (BIT #9) ;LAST BLOCK TRANSFERRED (BIT #10) ;WRITE LOCK (BIT #11) ;MEDIUM ON-LINE (BIT #12) :POSITIONING OPERATION IN PROGRESS (BIT #13) :COMPOSITE ERROR (BIT #14) ;ATTENTION ACTIVE (BIT #15) :ERROR REGISTER #01 (RMER1) (#02) 000001 ILF ILR =1 =2 PAR FER WCF ECH HCE HCRC AOE =10 = 20 = 40 = 100 = 200 = 400 = 1000 RMR 002000 1AE = 4 = 2000 sJLLEGAL FUNCTION (BIT #0) sJLLEGAL REGISTER (BIT #1) sREGISTER MODIFICATION REFUSED (BIT #2) ;PARITY ERROR (BIT #3) . ;FORMAT ERROR (BIT #4) ;WRITE CLOCK FAIL (BIT #S: ;ECC_HARD ERROR (BIT #6) ;HEADER COMPARE ERROR (BIT #7) :HEADER CRC ERROR (BIT #8) ;ADDRESS OVERFLOW ERROR (BIT #9) :INVALID ADDRESS ERROR (BIT #10) [ Nan SEQ 0042 CZRNAAOQ RM80 PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE &4-3 CZRNAAQ RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 4-4 SEQ 0043 RM REGISTERS 004000 100000 WLE DTE OPl UNS DCK = 4000 = 10000 = 20000 = 40000 = 100000 sWRITE LOCK ERROR (BIT #11) ;DRIVE TIMING ERROR (BIT #12) ;OPERATION INCOMPLETE (BIT #13) ;DRIVE UNSAFE (BIT #14) sDATA CHECK ERROR (BIT 15) ;MAINTAINABILITY REGISTER (RMMR1) (#03) b b D ) i b b— SERYRB RS 28TIIRAR WN-‘OOQ\IO‘U‘&WN—‘OO&VOV‘#WN—‘O O oooororO MO0 N 158 Ny ) = b b d b b b b b b e b b b d —d e b cnd aud b cnd b cd md b b b d 00000000 ~J N NNNNNNNVO D and D ;ATTENTION SUMMARY PSEUDO-REGISTER (RMAS) (#04) Hn—= b d o PONONLN kb 2 209 210 000001 000002 000004 000010 000020 000040 000100 000200 ATO AT1 AT2 AT3 AT4 ATS5 ATé AT?7 =1 =2 =4 =10 = 20 = 40 = 100 = 200 ;DEVICE O ;DEVICE 1 sDEVICE % ;DEVICE 3 ;DEVICE & ;DEVICE 5 sDEVICE 6 :DEVICE 7 (BIT #0) (BIT #1) (BIT #2) (BIT #3) (BIT #4) (BIT #5) (BIT #6) (BIT #7) ;:DESIRED SECTOR/TRACK ADDRESS REGISTER (RMDA) (#05) ;DRIVE TYPE REGISTER (RMDT) (#06) 000001 000002 100000 DT00 0701 D102 D703 DT04 D705 DT06 D707 D708 DRQ MOH TAP NSA =1 = 2 =4 =10 = 20 = 40 = 100 = 200 = 400 = 4000 = 20000 = 40000 = 100000 :DRIVE TYPE NUMBER BIT 1 sDRIVE TYPE NUMBER BIT 2 :DRIVE TYPE NUMBER BIT 3 ;DRIVE TYPE NUMBER BIT 4 :DRIVE TYPE NUMBER BIT 5 :DRIVE TYPE NUMBER BIT 6 sDRIVE TYPE NUMBER BIT 7 ;DRIVE TYPE NUMBER BIT 8 ;DRIVE TYPE NUMBER BIT 9 sDRIVE REQUEST REQUIRED (BIT #11) sMOVING HEAD (BIT #13) ;TAPE DRIVE (BIT #14) :NOT SECTOR ADDRESSED (BIT #15) ;LOOK-AHEAD REGISTER (RMLA) (#07) 000100 000200 000400 001000 002000 s(C1 SC2 SC04 SC10 $C20 = 100 = 200 = 400 = 1000 = 2000 sSECTOR COUNT FIELD O (BIT #6) sSECTOR COUNT FIELD 1 (BIT #7) sSECTOR COUNT FIELD % (BIT #8) sSECTOR COUNT FIELD 3 (BIT #9) ;SECTOR COUNT FIELD & (BIT #10) ;SERIAL NUMBER REGISTER (RMSN) (#10) :(EACH IS CALLED BY BIT NUMBER) ;OFFSET REGISTER (RMOF) (#11) 000001 004000 010000 OFFDIR SSEI HCI ECI FMT16 =1 = 1000 = 2000 = 4000 = 10000 sOFFSET DIRECTION sSKIP SECTOR ERROR INHIBIT (BIT #9) ;HEADER COMPARE INHIBIT (BIT #10) sERROR CORRECTION CODE INHIBIT (BIT #11) sFORMAT BIT (BIT #12) CZRNAAQO RMBO PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 4=5 F SEQ 0044 RM REGISTERS 215 216 ;DESIRED CYLINDER ADDRESS (RMDC) (#12) 219 ;CURRENT CYLINDER ADDRESS (RMCC) (#13) %%% 224 225 226 :RM ERROR REGISTER #02 (RMERZ2) (#15) :DATA PARITY ERROR (BIT #3) =10 DPE :SKIP SECTOR ERROR (BIT #5) = 40 SSE ;DEVICE CHECK (BIT #7) = 200 DV( ;LOSS OF BIT CLOCK (BIT #10) = 2000 L8C :LOSS OF SYSTEM CLOCK (BIT #11) = 4000 LSC :INVLAID COMMAND ERROR (BIT #12) = 10000 1v(C ;OPERATOR PLUG ERROR (BIT #13) = 20000 OPE ;SEEK INCOMPLETE (BIT #14) = 40000 SKI :BAD SECTOR ERROR (BIT #15) = 100000 8SE : (EACH BIT IS CALLED BY BIT NUMBER) g}g s (REGISTER CURRENTLY NOT USED) %g? 227 228 229 230 231 %%% 000010 000040 000200 002000 004000 010000 020000 040000 106000 234 ng ;ECC POSITION REGISTER (RMEC1) (#16) s (EACH BIT IS CALLED BY BIT NUMBER) 237 ;ECC PATTERN REGISTER (RMEC2) (#17) 5%3 %2? 242 243 000101 000105 250 231 252 000117 000121 000123 244 245 246 253 254 255 s (EACH BIT IS CALLED BY BIT NUMBER) .SBTTL RM DRIVER COMMANDS RNOP SEEK = 10 = 105 :NO OPERATION s SEEK RTC READIN ACK = 117 = 121 = 123 ;RETURN TO CENTER LINE :READ IN PRESET :PACK ACKNOWLEDGE SETFMT = 143 000107 000111 000113 RECAL = 107 DRVCLR = 111 RELSE = 113 0001X1 000141 SEARCH GETREG 000143 = 131 = 141 256 257 258 259 260 261 ,gg 000145 000151 000153 000161 000163 000171 000173 SELDRV WCKD WCKHD WRIDAT WRTHD RDDAT RDHD = 145 = 151 = 153 = 16] = 163 = 171 =173 264 522 176700 000254 ABASE AVECT1 = 176700 = 254 4 :RECALIBRATE :DRIVE CLEAR RELEASE s SEARCH :GET REGISTERS $SET FORMAT (& ECI OR HCI) ;SELECT DRIVS SWRITE CHECK CATA SWRITE CHECK HtADER & DATA ;WRITE DAT WRITE HEADER L DATA :READ DAT :READ HEADER L DATA CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 5 SEQ 0045 TRAP CATCHER .SBTTL 1 .=0 000000 000174 000176 TRAP CATCHER s*ALL UNUSED LOCATIONS FROM & = 776 CONTAIN A ‘.42 HALT" s *SEQUENCE TO CATCH ILL EGAL TRAPS AND INTERRUPTS :'LOCATION19‘CONTA1NS 0 TO CATCH IMPROPERLY LOADED VECTORS 000174 000000 DISPREG:.:UORD 0 000000 O SWREG: .WORD .SBTTL STARTING ADDRESS(ES) 9 000200 000137 003542 JMP SASTARTI 2 000204 000137 003532 JMP SNSTART .SBTTL 5 :;SOFTWARE DISPLAY REGISTER :;SOFTWARE SWITCH REGISTER :sJUMP TO STARTING ADDReSS OF PROGRAM ;CHANGE THE RH ADDRESS ACT11 HOOKS :;'QittttQ..tttttttttit'ttt"tttt.tt.t'tt.'lt..tttt..."'.t."'.' 000046 00~ O~ 000052 000210 000046 031752 000052 040000 000210 001100 ¢HOOKS REQUIRED BY ACT1 $SVP(= vPC=. :SAVE PC iggng "WORD 40000 2:1)SET LOC.46 TO ADDRESS OF SENDAD IN .SEOP ::2)SET LOC.52 TO 40000 “=$SVPC .SBTTL **“RESTORE PC APT PARAMETER BLOCK ::t.t.tl'tQtt'Qtt.lttt't't"'ttfitttt.tQtfi..'t'..t'.'t't.t.'.t."' :SET LOCATIONS 24 AND 44 AS REQUIRED FOR APT :;ttttQtttttttttttttttt'i'tt'tlttttfittt..tt.'t'tfi'ttttt.t.'.'ttt' 001100 L$X=, ::SAVE CURRENT LOCATION 001100 200 .=bb SAPTHDR «=.8X :2FOR APT START UP :2POINT TO APT INDIRECT ADDRESS PNTR. ::POINT TO APT HEADER BLOCK :;RESET LOCATION COUNTER .24 :2SET POWER FAJL TO POINT TO START OF PROGRAM ;:tttttttttttttt..tfitttt't'Ittt'tttttttttttfittttt.'ttttttfit'ttttt :SETUP APT PARAMETER BLOCK AS DEFINED IN THE APT-PDP11 DIAGNOSTIC JINTERFACE SPEC. 000000 001114 SAPTHD: $SHIBTS: SMBADR: $TSTM: SPASTM: SUNITM: TAB. XY=, .WORD .WORD .WORD .WORD _WORD "WORD ::TWO HIGH BITS OF 18 BIT MAILBOX ADDR. 0 :-ADDRESS OF APT MAILBOX (BITS 0-15) SMAIL ::RUN TIM OF LONGZST TEST 6300. ::RUN TIME IN SECS. OF 1ST PASS ON 1 UNIT (QUICK VERIFY) 6300. 6300. :-ADDITIONAL RUN TIME (SECS) OF A PASS FOR EACH ADDED UNIT SETEND-SMAIL/2 ;;LENGTH MAILBOX-ETABLE (WORDS) -CMTAGSTARING ADDRESS CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 6 SEQ 0046 COMMON TAGS .SBTTL 0 COMMON TAGS CANNARNRARNRARANRNANACECRAAANRAARAAERANANREARNRANRNNACNNCANNNRARAS QTHIS TABLE CONTAINS VARIOUS COMMON STORAGE LOCATIONS + *USED IN THE PROGRAM. $SAUTO8: SINTAG: UORD SWR: DISPLAY: .WORD $TKS: 177560 $TKB: 001170 001171 001172 001173 001174 001176 001202 001203 001204 377 000 377 : $TPFLG: $TMPO: : SLF: s;AUTOMATIC MODE INDICATOR ;o INTERRUPT MODE INDICATOR s ;ADDRESS OF SWITCH REGISTER s ;ADDRESS OF DISPLAY REGISTER ..TYY KBD STATUS sTTY KBD BUFFER 177562 177564 177566 $NULL: .BYTE $FILLS: .BYTE $TPS: 001166 s ;CONTAINS ADDRESS OF 'GOOD* DATA :;CONTAINS ADDRESS OF 'BAD' DATA s s CONTAINS 'GOOD' DATA s CONTAINS °'BAD' DATA s sRESERVED=--NOT TO BE USED o .WORD ::CONTAINS THE YEST MER F :2CONTAINS ERROR : :CONTAINS SUBTEST ITERATION COUNT s sCONTAINS SCOPE LOOP ADDRESS 2 2CONTAINS SCOPE RETURN FOR ERRORS : SCONTAINS TOTAL ERRORS DETECTED : CONTAINS ITEM CONTROL BYTC : ;CONTAINS MAX. ERRORS PER TEST : CONTAINS PC OF LAST ERROR INSTRUCTION 7t] $GDADR: $BDADR: SGDDAT: $8DLAT: J:START OF COMMON TAGS Erh SITEMB: SERMAX: $ERRPC: o0 [elaletelalolalelelelolelelelelalalsl 001120 001122 001124 001126 001130 001131 001132 001134 001136 001140 001142 001144 001146 001150 001151 001152 001154 001156 001160 001162 001164 .WORD .BYTE .BYTE .WORD L4 STSTNM: $ERFLG: $ICNT: SLPADR: $LPERR: SERTTL: XY .=TAB. . SCMTAG: 001114 001114 001116 001117 : .BYTE .BYTE .WORD JASCIZ LASCII JASCII LASCIZ $:TTY PRINTER STATUS REG. ADDRESS 0 2 ;s TTY PRINTER BUFFER REG. ADDRESS ..CONTAINS NULL CHARACTER FOR FILLS ;CONTAINS # OF FILLER CHARACTERS REOUIRED 0 0 : $USER DEF INED ..INSERT FILL CHARS. AFTER A ‘‘LINE FEED'’ 12 :'TERMINAL AVAILABLE'® FLAG (817<07>-0-VES) ..CODE FOR BELL s ;QUESTION MARK s s CARRIAGE RETURN scLINE FEED /? <15 <12 tttt.ttttttt.ttt!fittt"t'tt.tllt.t.tt'..'fi...t..t.......t'...'. .SBTTL APT MAILBOX-ETABLE .EVEN NOONSNO NON) = b b b NIFINONIPNONIP 3 g :;ttt.tt'tttt'ttt'tttttt"'tQtttltit.tt.ttt..lit...'.t.fi.....".' 000000 SMAIL : SMSGTY: SFATAL: STESTN: $SPASS: $SDEVCT: SUNIT: .WORD .WORD .WORD .WORD .WORD .WORD AMSGTY AFATAL ATESTN APASS ADEV(TY AUNIT $MSGLG: .WORD SETABLE: AMSGLG SMSGAD: .WORD AMSGAD s sAPT MAILBOX ;;MESSAGE TYPE CODE ;;FATAL ERROR NUMBER ;;TEST NUMBER ;;PASS COUNT ..DEVICE COUNT /0 UNIT NUMBER - :MESSAGE ADDRESS ..HESSAGE LENGTH :;APT ENVIRONMENT TABLE SEQ 0047 CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 6-1 APT MAILBOX-ETABLE .BYTE 001226 G: .WORD 000000 .WORD p: .WORD AENV AENVM ASWREG AUSWR ACPUOP : :ENVIRONMENT BYTE : :ENVIRONMENT MODE BITS ::APT SWITCH REGISTER :sUSER SWITCHES ::CPU TYPE.OPTIONS BITS 15-11=CPU TYPE 11704=01,11/05=02,11/20=03,11/40=04,11/45=05 000 000 : : .BYTE BYTE AMAMS AMTYP1 11/70=06,PDQ=07,0=10 BIT 10=REAL TIME CLOCK BIT 9=FLOATING POINT PROCESSOR BIT 8=MEMORY MANAGEMENT . M.S. BYTE ::HIGH ADDRESS ::MEM. TYPE ,BLKAT MEM.TYPE BYTE == (HIGH BYTE) 900 NSEC CORE=001 AMADR . ::HIGH ADDRESS.BLK#1 ABOVE ‘‘TYPE'' OF LOW AND WORD BYTES,THIS ADDR.=3 MEM.LAST :sHIGH ADDRESS.M.S. BYTE s sMEM. TYPE ,BLK#2 2 :MEM.LAST ADDRESS.BLK#2 AMTYP3 AMADR3 2 :MEM_TYPE ,BLKA3 2 :MEM.LAST ADDRESS.BLKA3 001240 000000 : .WORD AMADR1 001242 001243 000 000 000000 000 000 000000 000 000 000000 : BYTE AMAMS2 AMTYP? AMTYPL AMADRS4 AVECT] 000254 AVECT? ADEVM 001272 ACDW] ACDW2 000000 CMEXIT 300 NSEC BIPOLAR=00?2 500 NSEC M0S=003 ::HIGH ADDRESS . M.S.BYTE ::HIGH ADDRESS M.S.BYTE AS M. TYPE ,BLK ::ME ::MEM_LAST ADDRESS.BLK#4 2 : INTERRUPT VECTOR#1,8US PRIORITY# :: INTERRUPT VECTORA2BUS PRIORITYA?2 :;BASE ADDRESS OF EQUIPMENT UNDER TEST ::DEVICE MAP :;CONTROLLER DESCRIPTION WORD#1 : :CONTROLLER DESCRIPTION WORD#?2 CZRNAAQ RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7 SEQ 0048 USER DEF INED TAGS 001272 001274 001276 001300 001302 001304 001306 176700 000254 172540 172542 000104 177546 000100 .SBTTL USER DEFINED TAGS SRMADR: SRMVEC: SLKCSR: $LKCSB: SLPVEC: $LKS: SLLVEC: .WORD .WORD .WORD .WORD .WORD .WORD .WORD PCLOCK: .WORD CLKFLG: .WORD 176700 2564 172540 172542 104 177546 100 sFIRST ADDRESS OF RH/RM REGISTERS :VECTOR ADDRESS :ADDR OF KW11-P STATUS REF:STER =1 :'0* IF A _CLOCK IS AVAILABLE :60. IF 60HZ SYSTEM, S0, IF SOHZ SYSTEM =1 :ADDR OF KW11-P COUNTER BUFFER :ADDR OF KW11-P VECTOR :ADDR OF KW11-L STATUS REGISTER :ADDR OF KW11-L VECTOR $'0' IF KW11=P IS ON SYSTEH 60. 0 O 'TYPE STATISTICS® INDICATOR * COMMAND INDICATOR 000074 000000 000000 LWORD HZ: STATIN: .WORD .WORD PACK: 001220 DRIVE =SUNIT 001322 001324 001326 001330 000000 000000 000000 000 ATIN: DRVNO: MASK: RETRY: .WORD .WORD .WORD .BYTE O 0 0 0,0 001332 001334 001336 001340 001342 001344 001346 001350 001352 001354 001356 000003 000000 000000 000000 000000 000000 000000 000000 000000 177777 000 FAIRNS: LSTAD: CHGADR: CFLAG: BADSEC: HOUR: MINUTE: SECOND: ONESEC: ZROIND: FRSTER: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .BYTE 3 0 0 0 0 O 0 0 O =1 O 001357 000 .BYTE 0 001360 001362 001364 001366 001370 001372 001374 001375 001376 001400 001402 001404 001406 001410 001412 001414 001416 001420 001422 001424 000000 000000 000000 000000 000000 000000 .WORD .WORD .WORD .WORD .WORD .WORD .BYTE .BYTE .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 0 0 O O 0 0 0 0 0 0 0 0 0 0 0 0 0 0 558. 30. 001314 001316 001320 000 000000 000 000000 000000 000000 000000 000000 000000 000000 000000 001056 000036 000 SAVER1: SAVERS5: ERCTR: LIMIT: CMCNT: CMCYL: CMSEC: CMTRK: ECBIT: ECSEC: ECMSKO: ECMSK1: ECWRD: ECGD: ECBADO: ECWRD1: ECGDT1: ECBAD1: CYLIMT: SECLMT: :DRIVE # STORAGE: ERRORS 1=5 & 10 ‘SAME AS USED IN APT *ATIN REG STORAGE: ERRORS 1-5 & 10 ‘DRIVE # STORAGE FOR PRINTOUT ‘ERROR RETRY REGISTER MASK *ERROR RETRY LIMIT IN THE LOWER BYTE TRETRY COUNT IN THE UPPER BYTE ‘MAXIMUM TIME IN QUEUE VALUE *STORE LAST MEMORY ADDRESS HERE *CHANGE RH/RM UNIBUS ADDRESS FLAG SYCONTROL C' FLAG ‘BAD TRACK/SECTOR FLAG :HOUR_COUNT STORED HERE ‘MINUTE'S COUNT STORED HERE *SECOND'S COUNT STORED HERE *TIMER ROUTINE COUNTER (FOR ONE SECOND) 1ZERO INDICATOR FOR THE DATA COMPARE ROUTINE *DATA COMPARE ERROR FLAG PIF > 0, PROCESSING *DCKER® OR CAN'T MATCH PATTERN :1F < 0, MISCOMPARSICN FOUND ‘MISCOMPARSION OR CAN'T MATCH PATTERN FLAG *1F < 0, ERROR IN BUFFER *SAVE Ri HERE *SAVE RS MERE *NUMBER OF ERRORS ‘DISPLAY LIMIT SWORD COUNT *CYLINDER ADDRESS *SECTOR ADDRESS *TRACK ADDRESS ‘ERROR BURST BIT OFFSET *ERROR BURST WORD OFFSET (RELATIVE TO SECTOR) *CORRECTION MASK FOR FIRST ERROR WORD *CORRECTION MASK FOR SECOND ERROR WORD *LOCATION OF FIRST ERROR WORD 1GOOD DATA, FIRST WORD ‘BAD DATA, FIRST WORD *LOCATION OF SECOND ERROR WORD 1GOOD DATA, SECOND WORD ‘BAD DATA, SECOND WORD *CYLINDER ADDRESS LIMIT *SECTOR ADDRESS LIMIT & SEQ 0049 USER DEFINED TAGS 001426 001430 001432 001434 001436 001440 001442 001444 TRKLMT: .WORD 000015 "WORD FE1: .WORD FE2: FEFLAG: .WORD DEC2: .WORD RDONLY: .WORD JRVPAR: .WORD 001057 001060 000000 000000 000000 000000 XXDP: 000000 .WORD 13. 559. 560. 0 O 0 0 O :TRACK ADDRESS LIMIT $1ST FE CYLINDER :2ND FE CYLINDER *EXERCISE FE CYLINDERS ONLY=0, EXERCISE ENTIRE DISK=1 *DECREMENT TRK/SEC ONCE=0, DECREMENT TRK/SEC TWICE=1 *NOT READ ONLY=0, READ ONLY=1 ‘WHEN DRIVES ARE BEING ASSIGNED, $0=CHANGE DRIVE PARAMETERS $1=D0 NOT CHANGE DRIVE PARAMETERS *THE LOW BYTE CONTAINS THE DRIVE NUMBER FROM WHICH *THE PROGRAM WAS LOADED. THE HIGH BYTE CONTAINS THE P'XXDP* DEVICE CODE FOR THE RMSO. .SBTTL COMMON PARAMETERS ;THE FOLLOWING TWO LOCATIONS CONTAIN THE SOFT ERROR RATE WORDS USED TO ‘DETERMINE END OF PASS WHEN THE PROGRAM IS DATA BIASED. 17 UILL TAKE APPROXIMATELY 3.33 PASSES TO REACH THE SOFT ERROR RATE OF 10410 BITS (6.25 X 108 WORDS) READ OR 10. PASSES TO REACH THE 90% conrlosncs LEVEL OF 3 X 10%10 BITS (1.875 X 109 WORDS) READ. “ENDCON= LSB AND ENDCON+2= MSB 001446 001450 ENDCCON: .WORD 002740 "WORD 005455 002740 005455 :(1.875 X 108 WORDS) OR (3 X 1049 BITS) READ :THE FOLLOWING TWO LOCATIONS CONTAIN THE SEEK ERROR 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 106 seexs. *ENDSEK= LSB AND ENDSEK+2= MSB 015200 :(1 X 10%6 SEEKS) MAXER: .WORD CMPLMT: .WORD 25. & :MAXIMUM ERRORS ALLOWED PER DRIVE *NUMBER OF COMPARE ERRORS TYPED OUT INTRVL: .WORD 0,0 *FIRST WORD IS THE PERFORMANCE TYPEOUT INTERVAL 001470 000001 PASSES: .WORD 1 000000 PATTERN: .WORD 0 NOBEgSED WHEN PROGRAM IS OPERATING IN AUTO RUN(CHAIN) ‘IF EQ O, RANDOHLY SELECT DATA PATTERN O ‘POINTED BY THE 'PATTERN'. *1F EQ TO 0, GENERATE A RANDOM WORD COUNT 001454 000006 015200 ENDSEK: .WORD 001456 001460 000031 000004 001464 000000 001452 001462 017¢00 001472 001474 000000 -WORD 000000 WRDCNT: .WORD RANDWC: .WORD 000006 7936. -MAXIMUM WORD COUNT (31. SECTORS) *(IN MINUTES). SECOND WORD IS THE INTERVAL COUNTER. *NUMBER OF PASSES TO END OF TEST [THIS PARAMETER IS :IF NOT £Q 0,SELECT ONE SET OF PATTERN ‘FOR THE OPERATION. *IF NOT EQ TO 0, USE THE VALUE IN °*WRDCNT' FOR 001476 000003 RATIO: .WORD 3 *THE WORD COUNT READ/URITE RATIO CRANGE 0 - 7] 20 = 15/1 1 2 = :3 - b ;S 6 - N 6/2 5/3 4/4 3/5 2/6 (READ/WRITE) o K CZRNAAO RM80 PERF EXER MACRO V04 .00 14~JAN=82 15:16:58 PAGE 7-1 SEQ 0050 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-2 COMMON PARAMETERS 001500 000001 ENDING: .WORD 1 ;7- 177 éF NOT EQ O, END OF PASS DETERMINED [J [ D Y THE *WORDS READ' COUNT. (2.5 X 108 WORDS) | F EQ 0O, END OF PASS DETERMINED [4 001502 000001 WRTCHK: .WORD 001504 000001 MESSAGE:.WORD 1 1 X 1045 SEEKS) :BY THE SEEK COUNT, :1F NOT EQ 0, DO AN APPROPRIATE WRITE $CHECK AFTER EACH WRITE COMMAND. :IF EQ 0, SELECT WRITE CHECK COMMANDS l :RANDOMLY ;1F EQ 1, DO NOT PRINT DATA ERROR MESSAGES :ASSOCIATED WITH OPERATOR SPECIFIED :BAD SECTOR AREAS. ;1IF NOT EQ O, PRINT ERROR MESSAGES RELATING TO 001506 000000 RANDOM: .WORD 0 001510 000000 BADBLK: .WORD 0 :THESE AREAS. :1F EQ TO 0, RANDOMLY SELECT DATA BLOCK :ADDRESS. IF NOT EQU 0,SEQUENTIALLY SELECT DATA BLOCK ADDRESS ;IF EQ TO 1, THE BAD SECTOR ENTRY TABLE WILL ALWAYS :BE INITIALIZED WHEN ASSIGNING A DRIVE; IF EQ TO 0, ;THE BAD SECTOR ENTRY TABLE WILL ONLY BE INITIALIZED sIF THE HDA SERIAL NUMBER HAS CHANGED SINCE THE ;LAST TIME IT WAS READ. (NOTE: IF THE SERIAL NO. HAS sCHANGED, THIS MOST LIKELY MEANS THAT THE HDA OR DRIVE *HAD BEEN REPLACED WHILE THE DRIVE WAS DEASSIGNED) .SBTTL VALUES FOR FIRST OPERATION ;STARTING PATTERN CODE [RANGE1 - 15.] STARTING COMMAND CODE [RANGE 0-5] 001512 001514 000010 000004 BEGPAT: .WORD BEGCOD: .WORD 8. 4 001516 000400 BrWC: .WORD 256. .SBTTL T4BLES, CONSTANTS, AND VARIABLE LOCATIONS -‘O WRITE CHECK DATA ('WCKL') WRITE CHECK HEADER % DATA ('WCHKHD' = NOT USED) WRITE DATA ('WRTDAT') 2 WRITE HEADER & DATA ('WRTHD® = NOT USED) 3 4 READ DATA ('RDDAT') READ HEADER € DATA (°'RDHD') 5 TART NG WRD CNT [RANGE 6 - WRD(NT] S 001520 001522 001524 001526 001530 001532 001534 001536 001540 000000 000000 000000 000000 000000 000000 000000 000000 000000 ORDERQ: .WORD -WORD -WCRD -WORD .WORD -WORD .WORD WORD .WORD 001542 000000 ASNLST: .WORD 0G1544 001546 001550 001552 000000 000000 000000 000000 DDRVS: [~ BN elelelelelelelela) :LIST OF DRIVES PERFORMING COMMANDS ;A BIT SET IS AN ASSIGNED DRIVE .WORD .WORD .WORD .WORD °°°°~ ;ADDRESSES OF DR VES TO BE DEASSIGNED €2 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-3 -WORD .WORD AVAIL: 001632 001634 001636 001640 001642 001644 001646 001650 000000 000000 000000 000000 000000 000000 000060 000000 000000 WAIT: 001654 001656 000090 000000 000000 BUFTBL: 000000 sLIST OF DRIVES WORD -WORD -WORD +WORD .WORD .WORD +WORD -WORD .WORD AITING FOR BUFFERS/PARAMETERS AITING FOR BUFFERS :BUFFER ALLgCATION TABLE ENTRY COUNT 000000 .WORD .WORD -WORD .WORD o & &% & S % % % % & % & .WORD +WORD -WORD .WORD .WORD .WORD -WORD -WORD .WORD .WORD -WORD -WORD % 000000 [elelelelalelelelelelelelelela) 001746 .WORD -WORD .WORD .WORD -WORD .WORD «WORD .WORD -WORD % 001652 :LIST OF DRIVES O00000O000O £ 000000 000000 000000 000000 000000 000000 000000 000000 000000 -WORD .WORD -WORD -WORD .WORD .WORD -WORD .WORD .WORD (elelelelelelelela] £ 000000 000000 000000 000000 000000 000000 000000 000000 000000 001566 001570 001572 O000O0O0O0O0O0 £ ;ADDRESSES OF NE LY ASSIGNED DRIVES NEWUNT: [elelalelelelelalelelelelelelela) 001564 .WORD .WORD .WORD 000000 000000 000000 000000 000000 ® 001554 O0000 TABLES, CONSTANTS, AND VARIABLE LOCATIONS SEQ 0051—] GE CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 FAGE 7-4 SEQ 0052 TABLES, CONSTANTS, AND VARIABLE LOCATIONS 000000 000000 .WORD .WORD .WORD 0,0 0,0 0,0 .WORD .WORD .WORD 0,0 0,0 0,0 .WORD 002046 000000 000000 002056 002060 002062 002064 0456416 002052 .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 000000 .WORD 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 ;:DRIVE PARAMETER etogg(ope> POINTER TABLE BLKADR: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 002074 DRIV DRIVE1 DRIVE2 DRIVE3 DRIVE4 DRIVES DRIVEG DRIVE?7 :ADDRESS OF THE PARAMETER BLOCK FOR DRIVE sADDRESS OF THE PARAMETER BLOCK FOR DRIVE ;ADDRESS OF THE PARAMETER BLOCK FOR DRIVE sADDRESS OF THE PARAMETER BLOCK FOR DRIVE sADDRESS OF THE PARAMETER BLOCK FOR DRIVE cADDRESS OF THE PARAMETER BLOCK FOR DRIVE ¢ADDRESS OF THE PARAMETER BLOCK FOR DRIVE sADDRESS OF THE PARAMETER BLOCK FOR DRIVE ;DRIVER COMMAND CONTROL TABLE (USED IN RM DRIVER) 002076 COMTBL: 002077 002100 .BYTE BYTE .BYTE BYTE .BYTE .BYTE W(CKD =1 WRTDAT =1 RDDAT RDHD +WRITE CHECK DATA :WRITE CHECK HEADER AND DATA (NOT USED) :WRITE DATA :WRITE HEADER AND DATA (NOT USED) :READ DATA :READ HEADER AND DATA s FUNCTION(COMMAND) CODE CONTROL TABLE PIN) o b b b e d b d O =2 ONOWVES NN =2O~N OPTBL: .EVEN 002124 123 105 105 .BYTIE .BYTE .BYTE .BYTE BYTE .BYTE BYTE BYTE BYTE .BYTE BYTE BYTE BYTE BYTE BYTE BYTE 4 6 10 12 14 16 20 22 30 50 52 60 62 70 72 -1 EEK <RECAL ;DRIVE CLEAR :RELEASE OFFSET :RETURN TO CENTERLINE :READIN PRESET :PACK ACKNOWLEDGE s SEARCH :WRITE CHECK DATA O sWRITE CHEEK HEADER AND DATA {WRITE DAT :WRITE HEADER AND DATA sREAD DATA :READ HEADER AND DATA : TERMINATOR ;MESSAGE CONTROL TABLE F9R ‘OPTBL' TABLE : MNTBL +ASCIZ /SEEK NOWVISWN=O 001757 5 TABLES, CONSTANTS, AND VARIABLE LOCATIONS 002134 002144 002154 002164 002174 002204 002214 002224 002234 002244 002254 002264 002274 002304 002314 122 104 122 117 122 122 120 123 127 7 127 127 122 122 116 002324 002370 002326 002430 002330 002470 002332 002530 002334 002570 002336 002630 002340 002670 002342 002730 002344 002770 002346 003030 002350 003070 002352 003130 002354 003170 002356 003230 002360 003270 002362 003330 002364 002366 002370 002370 002372 002374 002376 002400 002402 002404 002406 002410 002412 002414 002416 002420 002422 002424 002426 002370 003272 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 105 122 105 106 124 105 101 105 103 103 122 122 104 104 117 103 126 114 106 103 101 103 101 113 113 126 124 104 110 116 /RECAL / /DRVCLR / /RELSE / /OFFSET / / /RTC /READIN / / /PACK /SEARCH / / /WCKD /WCKHD / /WRTDAT / /MWRTHD / /RDDAT / / /RDHD / /NONE EVEN .ASCIZ .ASCIZ LASCIZ .ASCIZ LASCIZ .ASCIZ LASCIZ .ASCIZ CLASCIZ LASCIZ LASCIZ CASCIZ .ASCIZ .ASCIZ LASCIZ .SBTTL DATA PATTERNS :STANDARD DATA PATTERN POINTER TABLE STNDAT: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WIRD .WORD .WORD .WORD .WORD ZEROS: DATAO: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD DATA0 DATA1 DATA2 DATA3 DATA4 DATAS DATAG DATA? DATA8 DATA9 DATA10 DATA11 DATA12 DATA13 DATA14 DATA15 ZEROS ONES 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 DA. PATTERN 0 s; STANDARD DA.A ;STANDARD DATA PATTERN 1 ;STANDARD DATA PATTERN 2 ;STANDARD DATA PATTERN 3 ;STANDARD DATA PATTERN 4 ;STANDARD DATA PATTERN 5 ;STANDARD DATA PATTERN 6 ;STANDARD DATA PATTERN 7 ;STANDARD DATA PATTERN & ;STANDARD DATA PATTERN 9 ;STANDARD DATA PATTERN 10 ;STANDARD DATA PATTERN 11 ;STANDARD DATA PATTERN 12 ;STANDARD DATA PATTERN 13 ;STANDARD DATA PATTERN 14 ;STANDARD DATA PATTERN 15 .ALL 0'S °ATTERN sALL 1°S PATTERN :ALL 0'S DATA PATTERN SEQ 0053 TM B CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 7-5 CZRNAAQO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-6 C 5 DATA PATTERNS 002430 000001 DATAT1: 002470 177776 DATA2: 002514 002516 002520 002522 002524 002526 174000 170000 160000 140000 100000 000000 002432 002434 002436 002440 002442 002444 002446 002450 002452 002454 002456 002460 002462 002464 002466 002472 002474 002476 002500 002502 002504 002506 002510 002512 000003 000007 000017 000037 000077 000177 000377 000777 001777 003777 007777 017777 037777 077777 177777 177774 177770 177760 177740 177700 177600 177400 177000 176000 .WORD 000001 ;STANDARD PATTERN 1 .WORD 177776 ;STANDARD PATTERN 2 .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 000003 000007 000017 000037 000077 000177 000377 000777 001777 003777 007777 017777 037777 077777 177777 WORD .WORD .WORD WORD .WORD .WORD .WORD .WORD .WORD 177774 177770 177760 177740 177700 177600 177400 177000 176000 .WORD .WORD .WORD .WORD .WORD .WORD 174000 170000 160000 140000 100000 G0V000 002530 000000 DATA3: .WORD 000000 ;STANDARD PATTERN 3 002570 002572 133331 133331 DATA4: .WORD LWORD 133331 173331 ;STANDARD PATTERN & 002532 002534 002536 002540 002542 002544 002546 002550 002552 002554 002556 002560 002562 002564 002566 002574 002576 002600 002602 000000 000000 177777 177777 177777 000000 000000 177777 177777 000000 177777 000000 177777 000000 177777 133331 133331 133331 133331 .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD WORD .WORD WORD .WORD WORD LWORD .WORD .WORD .WORD 000000 000000 177777 177777 177777 000000 000000 177777 177777 000000 177777 000000 177777 000000 177777 133331 133331 133331 133331 SEQ 0054 - CZRNAAQ RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 7-7 SEQ@ 0055 DATA PATTERNS :STANDARD PATTERN 5 :STANDARD PATTERN 6 ;STANDARD PATTERN 7 | CZRNAAQ RM80 PERF EXER MACRO Vv04.00 14~JAN-82 15:16:58 PAGE 7-8 SEQ 0056 DATA PATTERNS LWORD MWORD WORD WORD 026455 151322 026455 151322 DATA8: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 :STANDARD PATTERN 8 000001 000002 000004 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 DATA9: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD 000001 000002 000004 000010 000020 000040 000100 000200 000400 001000 002000 004000 010000 020000 040000 100000 :STANDARD PATTERN 9 003070 003072 003074 003076 003100 003102 003104 003106 003110 003112 003114 003116 003120 003122 003124 003126 177776 177775 177773 177767 177757 177737 177677 177577 177377 176777 175777 173777 167777 157777 137777 077777 DATA10: .WORD LWORP Aond .WORD .MWORD .WORD .WORD .WORD WORD .WORD WORD .WORD .WORD LWORD .WORD .WORD 177776 177775 11,7773 177,57 1777:7 177737 177677 177577 177377 176777 175777 173777 127777 157777 137777 077777 sSTANDARD PATTERN 10 003130 172666 DATA11: .WORD 172666 sSTANDARD PATTERN 11 002760 002762 002764 002766 026455 151322 026455 151322 002770 002772 002774 002776 003000 003002 003004 003006 003010 003012 003014 003016 003020 003022 0030264 003026 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 155555 133333 003030 003032 003034 003036 003040 003042 003044 003046 003050 003052 003054 003056 003060 003062 003064 003066 F 5 DATA PATTERNS 003132 003134 003136 003140 003142 003144 155555 172666 155555 172666 155555 172666 .WORD WORD .WORD WORD .WORD .WORD .WORD WORD WORD WORD WORD WORD .WORD .WORD .WORD 155555 172666 155555 172666 155555 172666 155555 172666 155555 172666 155555 172666 155555 172666 155555 003170 003172 077777 137777 DATA12: .WORD WORD (077777 137777 ;STANDARD PATTERN 12 003230 003232 003234 003236 003240 003242 003244 003246 003250 003252 003254 003256 003260 003262 003264 003266 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 DATA13: .WORD .WORD .WORD WORD .WORD .WORD .WORD WORD .WORD WORD .WORD .WORD .WORD .WORD .WORD .WORD 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 153333 066667 STANDARD PATTERN 13 003270 003272 003274 003276 003300 003302 003304 000000 17°777 177777 177777 177777 177777 177777 DATA14: .WORD ONES: .WORD WORD MWORD WORD .WORD WORD 000000 177777 177777 177777 177777 177777 177777 .STANDARD PATTERN 14 ALL 1°'S DATA PATTERN 003146 003150 003152 003154 003156 003160 003162 003164 003166 003174 003176 003200 003202 003204 003206 003210 003212 003214 003216 003220 003222 003224 003226 155555 172666 155555 172666 155555 172666 155555 172666 155555 157777 167777 173777 175777 176777 177377 177577 177677 177737 177757 177767 177773 177775 177776 WORD .WORD .WORD .WORD .WORD .WORD MWORD WORD .WORD WORD WORD .WORD WORD WORD 157777 167777 173777 175777 176777 177377 177577 177677 177737 177757 177767 177773 177775 177776 SEQ 0057 B CZRNAAQ RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-9 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 7-10 SEQ 0058 DATA PATTERNS 003306 003310 003312 003314 003316 003320 003322 003324 003326 177777 177777 177777 177777 177777 177777 177777 177777 177777 .WORD LWORD .WORD .WORD .WORD WORD .WORD WORD .WORD 177777 177777 177777 177777 1772777 177777 177777 177777 177777 003330 003332 003334 003336 003340 003342 003344 003346 003350 003352 003354 003356 203360 003362 003364 003366 177777 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 DATAIS: .WORD WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WOR0 .WORD .WORD .WORD .WORD .WORD 177777 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 :STANDARD PATTERN 15 H CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 8 ERROR POINTER TABLE .SBTTL ERROR POINTER TABLE ;*THIS TABLE CONTAINS THE INFORMATION FOR EACH ERROR THAT CAN OCCUR. ;*LOCATION SITEMB. THIS NUMBER INDICATES WHICH ITEM IN THE TABLE IS PERTINENT. ;*THE INFORMATION IS OBTAINED BY USING THE INDEX NUMBER FOUND IN IF SITEMB IS O THE ONLY PERTINENT DATA IS (SERRPC). EACH ITEM IN THE TABLE CONTAINS & POINTERS EXPLAINED AS FOLLOWS: ;*NOTE1: :*NOTEZ2: o on ® M : 003370 $ERRTB: % :ERROR 1 4 003370 S 003372 6 003374 g 003376 }2 003406 33 003432 34 003434 gg 003436 39 003440 JUNEXPECTED ATTENTION OCCURRED EM3 DH3 D13 0 JNOT USED EMé DHé4 DT 0 sNOT USED EMS :ADDRESS PLUG BIT CHANGED EM6 :NOT USED 000000 ;ERROR 3 067756 072550 073156 000000 :ERROR & 070014 072576 073166 000000 JERROR S 070051 072474 073140 000000 DH?2 DT 0 :ERROR 6 gg 40 003442 41 003444 42 003446 EM2 DHZ2 () 4 OH1 oT1 0 067720 072474 073140 g? 32 003430 :RH CONTROLLER INTERRUPT OCCURRED (RMAS = 0) ::POINTS TO THE DATA FORMAT :ERROR 2 gz 25 003420 26 003422 27 003424 %g 003426 EM1 DF 072467 073134 000000 }9 18 003410 19 003412 20 003414 g; 003416 ::POINTS TO THE ERROR MESSAGE :sPOINTS TO THE DATA HEADER ::POINTS TO THE DATA 067646 18 11 003400 12 003402 13 003404 EM DH DT 070105 072635 073200 000000 DH6 DT6 0 SEQ 0059 CZRNAAQ RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 9 SEQ 0060 ERROR POINTER TABLE :THIS ROUTINE HANDLES UNEXPECTED TIMeOUTS BADTMO: MOV 011600 ST TYPE ?SXOC RO,=(SP) 000404 BR 012737 000400 001336 START1: MOV 000001 001212 L TST1: SNNSNNNN NN N NN W NNNNNY ~ b b b 001100 b L 177777 003736 #4600, CHGADR L NOP MOV T T :START THE PROGRAM sCLEAR THE RH/RM ADDRESS CHANGE FLAG T #1,8TESTN #0 .~é T L L L ;:SET TEST NUMBER IN APT MAJIL BOX ;TTY LOOP, WAIT FOR INCREMENT :OF WORD ;CLEAR THE WORLD INITIALIZE THE COMMON TAGS 000030 MOV CLR cMP BNE MOV #S(MTAG,R6 (R6)+ #SWR ,R6 6 #STACK , SP MOV MOV MOV #SERROR , a#EMTVEC ;:EMT VECTOR FOR ERROR ROUTINE #340,30EMTVEC+2 ;;LEVEL 7 #STRAP, S#TRAPVEC : ;TRAP VECTOR FOR TRAP CALLS MOV MOV #SPURDN, 3#PWRVEC ; ;POWER FAILURE VECTOR #3240, a#PURVEC+2 ;-LEVEL 7 ;s INITIALIZE A FEW VECTORS MoV 000004 sSET RH/RM ADDRESS CHANGE FLAG START? ;:CLEAR THE COMMON TAGS (SCMTAG) AREA 001154 123456 #=1,CHGADR BNE RESET 001114 034640 000340 ;BRANCH TO START1 START1 BR START2: INC 000000 sTO STOP ON UNEXPECTED TIMEOUT. MOV START: b o ;SETUP FOR TYPING OUT PC sPUT 'HALT(0)* INSTRUCTION HERE IF YOU WISH START OF PROGRAM 001336 b :cGET OVER THE ASCI2 <CRLF>/UNEXPECTED BUS TIMEOUT, PC=/ .SBTTL 177777 b b i cnd cach NN = OO0 b wnd b wnd OB NOWVN —b SsTYPE ASCIZ STRING NOP .SBTTL 003726 003730 003734 LASCIZ 012737 000407 012706 SADJUST PC =2 ,65% 010046 104402 000240 005227 001375 000905 003610 003616 003624 003632 003640 *RESTORE STACK POINTER 648 (00240 012737 003570 003574 003576 003602 003604 (SP)+,(SP)+ BR '253: 003530 ;SAVE PC WHERE THE TIME OUT OCCURED -(ROJ CMP 003464 (SP) RO 037124 MOV MOV s:FIRST LOCATION TO BE CLEARED :2CLEAR MEMORY LOCATION : :DONE? ;:LO0P BACK IF NO LISETUP THE STACK POINTER LEVEL 7 #340, 2# TRAPVEC+2: #176543,SHINUM #123456 3L.ONUM ::PRIME THE RANDOM MWBER GENERATOR - :BOTH KIGH AND LOW WORDS ;:SIZE FOR A HARDWARE SWITCH REGISTER. IF NOT FOUND OR IT IS *“EQUAL TO A ‘=1"', SETUP FOR A SOFTWARE SWITCH REGISTER. MOV MOV 000094 001154 001156 175230 @#ERRVEC,-(SP) #648,JMERRVEC ;;SAVE ERROR VECTOR ::SET UP ERROR VECTOR CMP #-1,35uUR *:TRY TO REFERENCE HARDWARE SWR BR MOV 65% #658, (SP) MOV MOV BNE 648: RTI #DSWR, SWR #DDISP.DISPLAY 66$ P3SETUP FOR A HARDWARE SWICH REGISTER ::AND A HARDWARE DISPLAY REGISTER :;BRANCH IF NO TIMEOUT TRAP OCCURRED s:AND THE HARDWARE SWR IS NOT = -1 ssBRANCH IF NO TIMEOUT $oSET UP FOR TRAP RETURN CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 9-1 SEQ 0061 INITIALIZE THE COMMON TAGS 001154 001156 003736 003744 003752 012737 012737 01263 000176 000174 000004 003756 003762 003770 003772 00503 13273 00140 01273 001214 000200 001227 001230 001154 27 004000 gg 004006 012737 012737 003450 000300 000004 000006 26 004000 177777 004100 004104 004106 004114 004116 004124 005737 001012 123727 001406 023727 001005 006130 004132 000403 112737 004126 CLR BIT8 BEQ $PASS #APTSIZE,SENVM 678 Mov #SSWREG, SWR sCLEAR PASS COUNT ..TEST USER SIZE UNDER APT JYES,USE NON-APT SWIT(CH :INO,USE APT SWITCH REGISTER SSETUP *‘TIMEOUT'' TRAP VECTOR FOR UNEXPECTED BUS TIMEOUTS MOV MoV INC BNE TYPE 004030 B8R +ASCIZ #BADTMO, ERRVEC #PR6,ERRVEC +2 sSETUP FOR UNEXPECTED TIMEOUT :LEVEL 6 68$ .69% ..FIRST TIHE’ ..TYPE ASCIZ STRING :GET OVER THE ASCIZ 688 <CRLF>3CZRNAAO - RM80 PERFORMANCE EXERCISEMa<CRLF> GET VALUE'zgR SOF TWARE SHITCH REGISTER ARE WE RUNNING UNDER XXDP/ACT? TST 000042 001226 000001 001154 000176 1046406 000001 #DISPREG,DISPLAY (SP)+,a#ERRVEC :sRESTORE ERROR VECTOR 001150 BNE CMPB BEQ CMP BNE GTSWR BR Move 708 SENV. M 70% SWR ,#SWREG 718 718 #1,8AUTOB : :BRANCH IF YES ..ARE WE RUNNING UNDER APT? sBRANCH IF YES ..SOFTUARE SWITCH REG SELECTED? s sBRANCH IF NO ::GET SOFT-SWR SETTINGS ssSET AUTO-MODE INDICATOK 001444 000016 000041 ~ w ~ 000040 100007 001444 001444 - w 005037 122737 —_ NS S oSN O ;THE FOLLOWING FINDS OUT THE PROGRAM CONTROL MODE: :PAPER TAPE (MANUAL}, ACT11, XXDP CHAIN OR DUMP o SSRYERRURY 000424 :;POINT TO SOF TWARE SWR SBTTL TYPE PROGRAM NAME ;TYPE THE NAME 2F1THE PROGRAM IF FIRST PASS 30 004026 67s: #SWREG, SWR MOV MOV Mov 01444 010042 0042.2 001444 48 004246 49 004247 50 004250 g; 004254 001 000 104401 000460 CLR CMP8 BNE MOV cMP8 BHIS CLRB TST BEQ TYPE BR LASCIZ CLR Mov8 TYPOS .BYTE 001203 TYPE B8R XXDP 416,441 3s 8440, XXDP #7 ,XXDP 18 XXDP 62 23 738 728 sCLEAR °*XXDP' LOAD DEVICE STORAGE ? :LOADED FROM AN RM80 :BR_IF_NOT JGET DEVICE INDICATOR AND NUMBER ? Ig IT A VALID NUMBER YES :NO, DEFAULT TO DRIVE 0 :CHAIN MODE OR ACT11 AUTO ACCEPT ? :BR IF NEITHER ..TYPE ASCIZ STRING ;GET OVER THE ASCIZ <CRLF>/NOT TESTING DRIVE / -(SP) XXDP, (SP) 1 oscRLr §s sCLEAR WORD ON STACK :GET DRIVE ADDRESS ;TYPE THE ADDRESS ;ONLY 1 CHARACTER ; SUPRESS LEADING 2EROS :CR=-LF :GET NUMBER OF DRIVES r CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 9-2 K 5 SEQ 0062 GET VALUE FOR SOF TWARE SWITCH REGISTER 53 004256 004270 004312 56 004312 57 004314 58 004320 S 60 004323 61 004324 004330 65 004416 66 004422 67 004426 68 004430 005227 000410 005046 113716 104403 001 000 104401 000432 004727 105737 001415 105737 2$: 177777 004272 -+ 758: s 001444 ::76%: 33: 033326 001226 001274 001262 001272 76 004462 77 004466 gg 004470 105737 001002 001150 004737 100674 £ 004474 013737 001272 5$: 040310 040312 001520 6$: 78: 002056 001100 177776 4S: rénsr TIME THRU HERE ? 758 ..rvps ASCIZ STRING X3 “GET OVER THE ASCIZ +ASCIZ CLR Move TYPOS .BYTE .BYTE -(SP) :CLEAR WORD ON STACK PC,STKINT SENV 58 SVECT 4$ SVECT1,SRMVEC $BASE 6$ 2%ASE.SRHADR sTURN ON THE KEYBOARD INTERRUPT ;RUN UNDER APT MODE :NO,DO NOT BOTHER NEH VECTOR ? ;NOT LOAD IF= 0 :NEW VECTOR NEU BASE ADDRESS ? NO NEU BASE ADDRESS 2éUTOB RgNNING IN AUTO MODE ? PC,BUSADR sCHECK RH/RM BUS ADDRESS SRMADR, RMADR SRMVEC ,RMVEC STATIN fggngO,RS ;LOAD ADDRESS INTO DRIVER :LOAD VECTOR INTO DRIVER :CLEAR PERFORMANCE SUMMARY TYPEOUT FLAG ;START OF AREA TO CLEAR #BLKADR,R5 sLOOK FOR END OF CLEAR AREA ) H2 ,ONESEC HOUR MINUIE SECOND INTRVL+2 ;CLEAR THE PROCESSOR STATUS WORD :RESTORE ONE SECOND COUNTER VALUE sCLEAR THE HOUR'S COUNTER ;CLEAR THE MINUTE'S COUNTER :CLEAR THE SECOND®S COUNTER :CLEAR_INTERVAL COUNTER B8R .ASCIZ JSR BEQ 001256 001262 5;1 <CRLF>/T0 TEST DRIVE / TST8 001256 000405 TYPE BR TYPE 004352 74 004460 INC BNE TST8 BEQ MovBe TST BEQ XXDP, (SP) “GET DRIVE ADDRESS sTYPE DRIVE ADDRESS ;ONLY 1 CHARACTER 1 : SUPRESS LEADING ZEROS 0 763 ..TYPE ASCIZ STRING $ :GET OVER THE ASCIZ 7. HALT PROGRAN, CLEAR LOC. 40 AND RESTART PROGRAM./<CRLF> + 78 #STACK,SP 001352 PACK ;CLEAR THE *CONTROL C' FLAG DRIVE1+SFIRST DRIVE2+SFIRST DRIVE3+SFIRST DRIVE4G+SFIRST ;RESET SFIRST FLAG FOR DRIVE 1 ;RESET SFIRST FLAG FOR DRIVE 2 ;RESET SFIRST FLAG FOR DRIVE 3 ;RESET SFIRST FLAG FOR DRIVE 4 DRIVES+SFIRST 06 004650 001402 174304 ;SET 'T* & CLEAR 'R’ OR ‘W' COMMAND FLAG CFLAG DRIVEQO+SFIRST 001440 000001 :BR_IF NOT FINISHED sSETUP THE STACK POINTER ;RESET SFIRST FLAG FOR DRIVE 0 :RESET S$FIRST FLAG FOR DRIVE S DRIVEG+SFIRST DRIVE7+SFIRST :RESET SFIRST FLAG FOR DRIVE 6 ;RESET SFIRST FLAG FOR DRIVE 7 gguo.asua ég ngg&lSER IN 'READ ONLY' MODE ? RDONLY sASSUME READ/WRITE CONDITION SEQ 0063 CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 9-3 GET VALUE FOR SOF TWARE SWITCH REGISTER 107 004652 8s: 040316 174000 000004 004746 001272 000050 000012 000050 000074 e e md 001234 RDONLY :LOCK PROGRAM IN °'READ ONLY' MODE TST 040316 TST 1$: prd ERRVEC,-(SP) #28 ERRVEC $RMADR, RO #50,R0 #10. ,R1 (RO) + (RO) + :CLEAR RMBAE OFFSET :CLEAR CPU TYPE REGISTER :SAVE CONTENTS OF ERROR VECTOR “SETUP 'TRAP' RETURN ADDRESS *GET RMCS1 ADDRESS ‘GET REGISTER OFFSET FOR RH70 *GET NUMBER OF REGISTERS TO CHECK “TRAP IF NOT A VALID RMBAE STRAP IF NOT A VALID RMCS3 MOV #50 ,RHEXT *LOAD OFFSET FOR RMBAE (22 REGISTER RH) DEC R1 ‘DONE WITH ALL 32 REGISTERS ? ggv g;a,nnexr *LOAD OFFSET FOR RMBAE (32 REGISTER RH) ST BNE 040316 RHEXT #174000,8CPUOP (ROJ + 18 STRAP IF NOT A VALID REGISTER ‘BR IF NO 012716 000002 004754 28: ggy #38. (SP) ;SETUP RETURN ADDRESS 013700 013701 001415 060001 052710 001272 040316 38: MOV MOV $RMADR, RO RHEXT,R1 :GET RMCS1 REGISTER *GET RMBAE REGISTER OFFSET RO,R1 *GET RMBAE REGISTER N N o o o 005020 012637 /X3 BIS CMP #AT7'A16,(RO) #3,(R1) ADD 001400 000003 030000 000004 BEQ BNE CLR 001234 SET EXTENDED ADDRESS BITS IN RMCS1 *ARE THE EXTENDED BITS SET IN RMBAE ? ‘BR IF NO (R1) ‘CLEAR EXTENDED ADDRESS BITS IN RMBAE X :BR IF NO BIT A17'A16.(R0O) BIS MOV #81T13!81T12,$CPUOP :SET THE 11/70 CPU TYPE CODE ;RESTORE’ CONTENTS OF ERROR VECTOR (SP)+.ERRVEC’ BNE 48: /A3 ‘BR IF NONE :ARE THE EXTEND BITS CLEAR IN RMCS1 ? :ROUTINE TO DETERMINE BUFFER MAX WORD COUNT AND FUDGE HDA SERIAL NUMBER 170 ALLOW BAD SECTOR FILE(DEC144) TO BE READ FROM EACH DRIVE AT *LEAST ONE TIME. 005227 ) b wud ad o \val S o b b b b [elelelelelelalele) wn o W ne 005024 o = O MOV MOV MOV ADD MOV 001400 «Q o — b nd b d o S W ViAW INC SIZE70: CLR BIC 000004 e b ed ed b d wd D i e 001440 ;AUTO SIZE FOR_RH70 CONTROLLER AND DETERMINE IF IT IS ;JUMPERED FOR 22 OR 32 REGISTERS LN AN WA = O 000 NN WVIN) = OV aabb:\bbauwuuufl N VNN =O VNN NI A NI PO A NI NN NIN) = b b b e = ed ek =2 O AN = OO 00 NN SN =0 108 004656 005237 177777 SIZMEM: INC 172777 045562 047776 052212 054426 056642 061056 063272 065506 100542 100672 MOV MOV MOV MOV #-1.R0 ‘FUDGE MSB'S FOR INITIALIZING HDA S/N RO,DRIVEO+SHSNM :INIT. S/N FOR DRIVE 0 RODRIVE1+SHSNM :INIT. S/N FOR DRIVE 1 RO DRIVE2+$HSNM -INIT. S/N FOR DRIVE 2 001334 JSR MOV PC.$SIZE SLSTAD,LSTAD 102200 001334 001656 001660 000001 BNE MOV MOV MOV MOV MOV 001654 18: MOV MOV MOV #-1 1% ;FIRST TIME THRU HERE ? *BR IF NO RO.DRIVES+SHSNM :INIT. RO.DRIVE4L+SHSNM -INIT. RO DRIVES+$HSNM INIT. RO.DRIVEG+SHSNM :INIT. ROCDRIVE7+SHSNM :INIT. #1,8UF TBL S/N FOR DRIVE 3 S/N FOR DRIVE & S/N FOR DRIVE 5 S/N FOR DRIVE 6 S/N FOR DRIVE 7 *SEE HOW MUCH MEMORY ON SYSTEM -SAVE THE LAST ADDRESS *LOAD NUMBER OF BUFFERS #ENDPGM, BUF TBL +2 -STARTING ADDRESS OF BUFFER LSTAD,BUFTBL+4 ;LAST ADDR TO BUFFER ALLOCATION TABLE CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 9-4 SEQ 0064 GET VALUE FOR SOF TWARE SWITCH REGISTER 160000 160000 102200 001660 001660 013737 3s: 001660 001462 b 037716 005270 005274 005037 104401 001340 076562 S8 BRI b and b —b b and D e R B8R sus cLC 4$: sus TST8 BEQ sus CMP BLE MoV MOV %STAD.#160000 $ OVER 28K ? :NO #160000,BUF TBL+4’ FENDPGM,BUF TBL +4 BUFTBL+4 #100 é8UFTBL+4 $AUTO :XXDP MAX MEMORY 28K SUBTRACT PROGRAM SPACE ;CLEAR THE 'C* BIT ;:CONVERT TO WORD COUNT :SAVE ROOM FOR THE 'ABS' LOADER ggN?INGoIN AUTO MODE ? 3s #1536. ,BUF TBL +4 sSUBTRACT °XXDP' LOADER SIZE :ég T?XgORD COUNT TOD 'ARGE ? WRDCNT,BUFTBL+4 43 BUF TBL +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 005737 001154 105737 001407 032777 001003 104401 000466 b 2s: MOV ROR 003000 001462 005232 005236 005244 005250 005252 005260 005262 005266 b and ed bl ed b e cMp BLOS 001660 000144 001150 2888383388 (=lololelelels 001334 D D e s cnd d ed D d b e R RBIIINNNANIITEI& D cad ) D oo VIS WY 023727 LKPAR: 001150 000004 $ FEONLY 8s 1%: 000001 #'Y,(RO) 78 000116 076341 2$: 001440 3s: #°'N, (RO) 3$ 43 -OVRWRT 076756 000131 MESFE 2% 000131 000001 CFLAG (SP)+,R0 CFLAG LKPAR (RO) 78 1(RO) 001340 001340 SETVEC $AUTOB 18 1SUOZ.QSHR 173674 076674 076646 PWRFLG 48: JRETURNING FROM POWER FAIL ? :BRANCH IF YES ggN?INGoIN AUTO MODE ? ggE? USEg WANT MANUAL INTERVENTION ? sTYPE FE CYLINDERS ONLY MESSAGE sCLEAR CONTROL C FLAG ;TYPE 'EXERCISER FE CYLINDERS ONLY ?* :READ THE ENTRY :SAVE ADDRESS OF RESPONSE ;WAS IT CONTROL € ? :BR IF YES gaSIRESEgNSE A CARRIAGE RETURN ? gaSIIT TERMINATED WITH CARRIAGE RETURN ? 0 ;WAS IT A 'Y' RESPONSE ? :BR IF YES :WAS IT A 'N' RESPONSE ? :BR IF YES ;TYPE BAD ENTRY MESSAGE s TRY AGAIN :PROGRAM RUNNIM:, [ READ ONLY MODE ? :BR_IF YES (DO NOT TYPE OVERWRITE MESSAGE) sTYPE DATA OVERWRITE MESSAGE -SURE :TYPE 'ARE YOU SURE ?°* (SP)+,R0 :SAVE ADDRESS OF RESPONSE 14 1(R0O) 5% #'Y,(RO) ;READ THE ENTRY gASIIT EONTROL c? gaSIRESEgNSE A CARRIAGE RETURN ? gasIT TERMINATED WITH CARRIAGE RETURN ? NO ;WAS IT A "Y' RESPONSE ? SEQ 0065 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN~82 15:16:58 PAGE 9-5 GET VALUE FOR SOF TWARE SWITCH REGISTER 076341 5$: TYPE 68 #°N, (RO) 7s BADENT 001434 6$: INC FEFLAG 104401 076674 7%: 005737 001402 001440 8s: 104401 077131 005037 001340 001150 001406 v &~ 158 &S o o [« JV ¥WV NgNNNNNNNNNNNN WSNNNNNNN 221 005414 WNNW 0 005444 1 005450 2 005452 3 005456 35 005462 BEQ 000116 9s: 261 262 005570 : TRY AGAIN :EXERCISE THE ENTIRE DISK 8s LFEONLY TST RDONLY ég ?ROGSAH LOCKED IN '‘READ MODE'' ? ,MREAD sTYPE READ ONLY MESSAGE CFLAG $AUTOB SETVEC :RUNNING IN AUTO MODE ? (SP)+,RO :READ THE ENTRY :SAVE ADDRESS OF RESPONSE ;WAS IT CONTROL € ? :BR _IF YES CLR 98 ~ASKPAR CFLAG 9 (RO) SETVEC 1(R0) 000001 sTYPE FE CYLINDER ONLY MESSAGE sCLEAR CONTROL C FLAG :BR IFYES s TYPE ' CHANGE PARAHETERS ?! gRSIRESEgNSE A CARRIAGE RETURN (DEFAULT °N‘')? gaSIIT5ERMINATED WITH CARRIAGE RETURN ? sWAS IT A 'Y*' RESPONSE ? :BR_IF_YES ;WAS IT A 'N' RESPONSE ? 000131 000116 012703 004737 023727 103003 012737 :BR_IF YES ;TYPE BAD ENTRY MESSAGE TYPE 001340 000746 :WAS IT A 'N' RESPONSE ? BR 077576 244 005512 245 005516 246 005520 247 005524 248 005526 249 005532 250 005534 255 005540 25 253 005542 254 005546 255 005552 256 005560 257 005562 258 259 260 is :BR IF YES 076341 108: TYPE 077466 031030 001462 ENTPR: MOV 0€0006 000006 001462 :BR_IF YES :TYPE BAD ENTRY MESSAGE :TRY AGAIN #PARLST ,R3 PC,PARENT WRDCNT, #6 SETVEC #6 ,WRDCNT sPARAMETER TABLE ADDRESS :GET THE PARAMETER ENTRY ;IS THE 'WRDCNT® VALUE OK ? :BR IF IT IS ;SET 'WRDCNT® TO THE MINIMUM VALUE :DISPLAY DRIVE STATUS AND SET UP THE OTHER SYSTEM DEVICES THAT :THE PROGRAM WILL USE. PROGRAM RETURN HERE ON POWER FAIL 004737 023422 040322 177777 1727777 SETVEC: jSR 040252 274 005644 010446 005646 005650 104403 002 PC RMINIT 4-1 SAVEFG 1 ?URFLG 037716 000004 PC,CKCLK #5W02,3SWR 173324 18: CLR 2s: TYPE sSTART THE CLOCK :INITIALIZE THE RM DRIVER ;SET THE SAVE REGISTERS FLAG ;FIRST TIME THRU ? :BR_IF YES ;RETURNING FROM POWER FAIL ? ;BRANCH_IF YES TYPEOU'T‘OTHE DRIVE STATUS TABLE ? :BR :DRIVE TABLE POINTER ;TYPE STATUS HEADING R4,~(SP) :CR-LF :SAVE R4 FOR TYPEOUT ..TYPE DRIVE NUMBER :GO TYPE==OCTAL ASC1I ;:TYPE 2 DIGIT(S) GET VALUE FOR SOFTWARE SWITCH REGISTER 005651 275 005652 276 005656 277 005662 %;g 005664 000 104401 105764 100416 001020 280 005666 281 005672 282 005674 105764 0014064 100006 075231 060164 040174 ..SUPPRESS LEADING ZEROS BYTE TYPE TSTB BM] BNE 0 ,BLNKS& DRVSTA(R4) $ 6 TSTB BEQ BPL DRVTYP(R4) 38 i BR f1s ;SEE IF OFFLINE OR NONEXISTENT :BR IF NONEXISTENT :BR IF OFFLINE :DRIVE NOT AN RM80 ;CHECK NEXT DRIVE TYPE NOTRM sTYPE & BLANKS :CHECK DRIVE'S STATUS :BR IF UNSAFE :BR IF ONLINE 104401 075403 286 005704 ggg 005710 104401 000430 075420 38: TYPE BR ,NOTPRS i1s ;DRIVE NOT PRESENT sCHECK NEXT DRIVE 289 005712 104401 075312 48: TYPE BR UNTOFF 8s ;DRIVE OFFLINE ¢PRINT DRIVE TYPE 292 005720 104401 075454 5% TYPE BR NOTSAF 13 ;DRIVE UNSAFE 295 005726 005737 001444 68: ST XXDP ggA?ED SROH THIS DEVICE ? 283 005676 ggg 005702 000433 539 005716 000416 532 005726 000413 78 XXDP,Ré4 78 ,LODEV i1s ,UNTON .BLNKS2 78: 8s: BEQ CMPB BNE TYPE BR TYPE TYPE g}g 005770 104401 000000 98 : TYPE MWORD O 316 005772 317 005776 318 006000 319 006002 005204 020427 001317 104401 118: 'NC CMP BNE TYPE R4 R4, A8. 2$ ,$CRLF 296 005732 297 005734 298 005740 299 005742 300 005746 301 005750 302 005754 001406 123704 001003 104401 000411 104401 104401 001444 075464 075323 075233 gg; 005760 012737 075520 005770 313 005766 ggg 006006 10$: 000010 001203 128: MOV #$RM80, 108 sPRINT DRIVE TYPE ;LOADED FROM THIS DRIVE ? :BR_IF NO sTYPE 'LOAD DEVICE' sDRIVE ONLINE :TYPE 2 BLANK ; ASSUME ADDRESS CF RMBO MESSAGE ;TYPE THE DRIVE TYFZ MESSAGE :MESSAGE ADDRESS HERE :INCREMENT DRIVE NUMBER/TABLE POINTER JFINISHED ? :BR IF NOT JCR-LF ey . SEQ 0066 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 006056 006062 006064 006070 - =4 o 8 18: 001150 APT SCRIPT MODE, THEN MAKE IT RUN 2 MIN. TST8 $AUTOB TST CHGADR sRUNNING IN AUTO MODE ? :BR IF YES BNE #002740,ENDCON SINITIALIZE XFER COUNT(LSB) #005455,ENDCON+2" #772777 ,ENDCON #27 ,ENDCON+2 3s: ;DRIVEN * 2 ggA?ED SROH THITM DEVICE ? 43: 4 XXDP,R1 78 DRVSTA(R1) 78 R1,GENDPB N ~N N NN HN 40 006206 41 006210 42 006212 43 006216 44 006220 45 006224 022322 47 006226 48 006234 012737 005037 000403 0000? 1 037716 001340 8S: 9s: ;GET DRIVE (MBA) SERIAL NUMBER ;RETRIEVE BAD SECTOR FILE :LOAD DPB ADDRESS TO ABAIL QUEUE :SETUP DRIVE PARAMETER LIMITS :RESET SFIRST FLAG FOR FIRST 204 START 78 #-2,$PACK(RO) sSETUP COMMAND ‘WT' (WRITE DATA AND TEST) (R3)* (R2)+ R1 14 38’ CHGADR 9s 0v1336 :RECAL IBRATE DRIVE $F IRST (RO) PC.WRTPK 000007 ;NO :CLEAR DP8 BLOCK PWRFLG 78: RIVE ? :GET DRIVE NUMBER PC.CLRDPB PC,GETID PC.DRVPRM 000026 :BR IF YES DRlVE ON LINE ? :LOAD DPB ADDRESS RO.NEWUNT (R2) 037716 :LOADED FROM THIS BLKADR(R3) ,RO R5,GETADR 017000 START AT 200 ? SAVAIL TABLE INDEX PC,RECALO 004737 SINITIALIZE QUK XFER COUNT(LSB) # :DRIVE 001444 177776 ;NO :SPEED UP TEST 2s: W -t -t SENV 18 #1,RATIO BLE 067556 — JINITIALIZE THE KEYBOARD INTERRUPT HANDLER MOV MoV Mov 040164 28328 o o PC,STKINY JSR MOV MOV 1ST8 BEQ 001444 006104 9 46 STA: 001336 006072 006074 006076 o0 O oo NN NN O~NO\WN PONIN) b b b d o d b d NN NN NI NI N N AN P WA= OV ~NON NS WN=O 0N[« JV WJVI1,8 2 3 006006 4 006012 0000 =000 O OO WV NN = \NRIN S N ONNNESNSNNN W (NN = (NN N NONNN=NNNYN 1 #1,CFLAG PWRFLG ? ;RETURNING FROM POWER FAIL :BRANCH iF YES SETUP INITIAL PARAMETERS INCREHENT INDEX :NEXT DRIVE ABL DRIVES ASSIGNNED ? :CLEAR START FLAG ;DUMMY ‘*CONTROL C' FLAG :CLEAR POWER FAIL FLAG e X] SEQ 0067 CZRNAAO RMB80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 10 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:15:58 PAGE 11 D 6 SEQ 0068 005737 01407 000240 .SBTTL MAIN PROGRAM 001340 MAIN: 001520 18: 007104 025254 2$: TST BEQ TST BEQ JMP JSR NOP 3s: 012703 000010 001544 MAINDA: MOV MOV 1%: 2s: = - PIN) 22 006316 CFLAG 33 ORDERQ 23 IDLE PC.KSR :KEYBOARD INTERRUPTED ? :BR IF NOT ;ANY DRIVES IN ORDER QUE ? :BR_IF NO, ELSE :LET ALL DRIVES FINISH ORDER :SERVICE THE KEYBOARD ; !! FOR DEBUGGING !! :CHECK FOR DRIVES TO BE DROPPED b cd b e 0O ~NONWVS WM b b e o b = O 000 NO NN - MAIN PROGRAM 000435 012701 005711 001404 021115 001412 005721 000772 001610 012701 001632 3s: A ¥ 5%: 6$: 000772 011100 104401 001203 076003 023714 7%: 075617 0 000737 TST BNE TST DEC 8NE BR (RS) 3 (RS)+ R3 18 MAIN1 MOV R #AVAIL CMP BEQ TST BR (R1),(RS) I£3 (R1)+ 43 MOV JUAIT R1 TST BEQ TST BEQ CMpP 8EQ TST BR (R1) 5% (R1) 23 (R1),(RS) 7% (R1)+ 6$ ;DRIVE COUNTER :ADDRESS OF ‘DROP DRIVE' TABLE :SEE IF ENTRY AT PRESENT POSITION :BR IF THERE IS ONE s INCREMENT TO NEXT TABLE POSITION :DECREMENT DRIVE COUNTER ;BR IF _MORE TO CHECK ;G0 CHECK FOR NEW ASSIGNED DRIVES sADDRESS OF 'AVAILABLE DRIVES' TABLE sIF AT END OF °'AVAIL® TABLE ? :BR IF YES :1S DRIVE IN °AVAIL' THE TABLE ? :BR IF YES :NO, INCREMENT 'AVAIL®' TABLE ADDRESS :AND CONTINUE LOOKING ;ADDRESS OF THE ‘WAIT'® BUFFER TABLE ;AT THE END OF 'WAIT® TABLE ? :BR IF YES ;1S DRIVESlN THE °WAIT® TABLE ? :BR IF :NO, INCREMENT 'WAIT® TABLE ADDRESS :AND CONTINUE LOOKING MOV TYPE TYPE JSR (R1) ,RN +SCRLF DEASSG PC SUMARY PgT ;HE DRIVE'S BLOCK ADDRESS IN RO JSR BR PC,CMPRES 2% : COMPRESS THE RESPECTIVE TABLE TYPE CLR 020750 #8..R3 #DDRVS RS STARS (R5) s CR=-L :TYPE 'DRIVE DEASSIGNED® :TYPE THE DRIVE'S PERFORMANCE SUMMARY STYPE ‘wasn,, ETC ;CLEAR THE *DROP DRIVE' TABLE ENTRY :SEE IF ANY MORE DRIVES :LOOK FOR DRIVES TO BE ASSIGNED 012703 000010 001566 MAIN1: 18: 2$: 005303 MOV #8..R3 CLR CLR R2 RS CLR TST BNE TST INC DEC R1 NEWUNT (RS) 3s (RS)+ R1 R3 sDRIVE COUNT ;ASSIGN LIST INDEX s "AVAIL® INDEX NEW DRIVE INDEX ;NEW DRIVE IN THIS POSITION :BR IF THERE IS : INCREMENT RS : INCREMENT ASSIGN INDEX :DECREMENT DRIVE COUNT CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 11-1 SEQ 0069 MAIN PROGRAM MAIN2 010146 TYPE TYPE MOV .UNTHSG R1.=(SP) 104403 TYPOS 001371 000432 61 006436 62 006442 63 006446 104401 60 006450 006452 006453 4 64 3s: 104401 .BYTE .BYTE 076053 001610 TYPE TST 4$: 2 0 +ASGND AVAIL (R2) 5$ (R2)+ 4 001566 032012 001610 :BR IF MORE DRIVES 1$ BNE BR 58 006432 59 006434 5$: ;START OPERATIONS FOR THE AVAILABLE DRIVES H R=LF :'DRIVE' :SAVE R1 FOR TYPEOUT .,TYPE DRIVE NUMBER ..GO TYPE--OCTAL ASCI! sTYPE 2 DIGIT(S) SUPPRESS LEADING ZEROS : VSTARTED' S; END 2; AVAILABLE TABLE s INCREMENT AVAILABLE TABLE INDEX :CONTINUE LOOKING FOR END OF TABLE :MOVE ADDR OF DRIVE INTO AVAIL LST LAVAIL(R2) -TAKE DRIVE OUT OF NEW DRIVE TABLE JASNLST :SET DRIVE ASSIGNED INDICATOR ;CLEAR AUTO ASSIGN 001542 : INCREMENT AVAILABLE TABLE POINTER :LOOK FOR MORE DRIVES :GET PARAMETERS BUFFER SPACE, AND START ORDERS FOR DRIVES IN MAINZ: CLR 1ST8 BNE TST8 BNE R2 ASNLST 2% $AUTOB 1$ CLR CLR CLR HZ,ONESEC HOUR MINUTE SECOND JTHE 001542 001150 005037 000001 001314 001344 001346 001350 001340 001352 Mov MOV NODRVS 18: $GET42 005762 001435 001632 2$: WAIT(R2) 58 WAIT(R2),RO -(SP) PC,GETB 001632 (SP)*.SBUF(RO) 48 SNEXT (RO) $FAIR(RO) é N N PC,FILBUF PC,GODRIV 3s: o 001632 ~ g VSN == OV~ +2 INTRVL 031742 b e b b b b mcd b d b #1,CFLAG 000137 016242 000006 b 'AVAILABLE ' QUEUE 004737 020750 #ORDERQ,RS (§5)0 3 RO,=(R5) MIAIT R R2,.R1 PC.CMPRES sSTART FROM THE FIRST LOCATION ;ANY DRIVES ACTIVE ? :BR IF YES :RUNNING IN AUTO MODE ? :BR IF YES sDUMMY °*CONTROL C° FLAG :RESTORE ONE SECOND COUNTER VALUE SCLEAR THE HOUR'S COUNTER :CLEAR THE MINUTE'S COUNTER :CLEAR THE SECOND'S COUNTER ;CLEAR INTERVAL COUNTER :TYPE 'NO DRIVES ASSIGNED® :GIVE CONTROL TO MONITOR ggYIDRIVES WAITING FOR THE BUFFER ? sLOAD RO WITH THE DPB ADDRESS :CLEAR THE STACK FOR BUFFER REQ ;CALL TO GET THE BUFFER RT. :1F 0,BUFFER IS STILL NOT AVAILABLE ;BRANCH IF NO BUFFER AVAILABLE ;CLEAR PARAMETER SELECT FLAG :CLEAR THE FAIR FLAG ;FILL THE BUFFER :SET COMMAND AND GO ;PUT THE WAIT OUE INTO ORDER QUE ggf ?VAILABLE _NO IF ;LOAD THE DPB ADDRESS INTO THE ORDER QUE :REMOVE THE DRIVE FROM THE ‘WAIT® QUE ;OFFSET THE QUE POSITION : COMPRESS THE QUE MAIN PROGRAM 005737 001075 D b e cnd o e o d WANNIN NN NN NN N — o VPS W WA = OO 00 NS NN = O O NN S (NN D b acd e =D 000742 005722 000740 b e 005002 ~J N o~ D 000404 004737 004737 001610 6$: 7%: 017000 8s: 017370 020500 9$: 108: 11$: g~ e e c g D i 005260 022760 101006 000106 000003 128: 138: b e 001632 000106 ORDERQ IDLE ;ANY OUTSTANDING ORDERS ? ‘BR IF YES (LR TST BNE JMP MOV TST BNE R2 AVAIL (R2) :CLEAR DRIVE TABLE POINTER *ANY DRIVES WAITING FOR PARAMETERS IDLE AVAIL(R2) ,RO $NEXT (RO) 93 $PACK (RO) 8$ *BRANCH IF NONE :CONTROL BLOCK ADDR IN RO *PARAMETERS BEEN SELECTED ? ‘BR IF THEY HAVE “'R'OR ‘W' COMMAND FOR THIS DRIVE ? ;BR IF NO PC,GENPAR PC.LODPAR -($P) PC,GETBUF (SP+,$BUF (RO) 12$ PC,FILBUF SNEXT (RO) :GO GENERATE THE PARAMETERS *LOAD THE PARAMETERS JUST GENERATED "MAKE ROOM ON THE STACK FOR THE BUFFER ADDR "GET BUFFER MOVE BUFFER ADDR TO DPB _BR IF *0' ADDR (NO BUFFER) SFILL THE BUFFER PCLEAR PARAMETER SELECT FLAG PC.GODRIV *PUT CURRENT DPB IN DRIVER JSR JSR CLR JSR BEQ JSR CLR CLR JSK MOV TST BNE 001610 (R2)+ 78 PC,WRTPK 10$ $SFAIR(RO) #ORDERQ, RS (RS) + 11% *BRANCH IF ANY ‘GET DATA PARAMETERS SGET THE BUFFER “CLEAR THE ‘FAIRNESS® COUNT *ADDRESS OF ORDER QUE IN RS ‘END OF QUE ? H F NOT MOV RO,-(RS) 15§ +CONTINUE LOOKING INC CMP BHI $FAIR(RO) #3,8FAIR(RO) s INCREMENT THE FAIR COUNT :THREE TIMES,BUFFER IS NOT AVAILABLE? NWAIT,RS (RS)+ 138 RO,-(RS) SLOAD INTO THE WAIT QUE *AN AVAILABLE LOCATION ? *BRANCH IF NOT ‘LOAD INTO WAIT QUE (R2)+ : INCREMENT INDEX MOV TST BNE B8R b 148: TST 15$: MOV 020750 148 15§ 6 #AVAIL R R2,R1 PC.CMPRES 6 ‘PUT BLOCK ADDRESS INTO QUE *BRANCH IF NOT OVER THREE TIMES *REMOVE THE DPB FROM AVAILABLE QUE *BRANCH BACK TO FIRE NEXT DRIVE S*AVAILABLE®' TABLE ADDRESS *FORM ADDRESS OF LAST ENTRY ‘COMPRESS THE TABLE *CONTINUE LOOKING JWAIT FOR A COMMAND TO FINISH b=e=d= l=l=T=) A%,] TST BNE MOV b b b D i ~ SCHECK THE NEXT QUE *LOOPING BACK BR b D e e 2 MOV 016632 000122 000106 016710 001520 b cd b o e b d b e o 28 1ST8 BEQ JSR BR 016242 000006 b nd D b =D nd b OgaOOOmmmmv\\nmv\\nmbbbbbbbbbbwwu N“OOQNOV‘J‘WN-‘OO@NO‘W&WN—DOOONgU‘ 5%: 007104 001610 000122 o D b e 001520 000026 D cad b cod o b —d b od (8: :BRANCH IF DONE B8R TST BR 001520 005760 000016 IDLE: 1$: 2s: MOV MOV 8EQ ST #ORDERQ R1 (R1)+,R0 (s $TATUS (RO) ;ADDRESS OF THE ORDER QUE IN R1 *PUT BLOCK ADDRESS INTO RO *BR IF END OF QUE *SEE IF DRIVE FINISHED h ¥ SEQ 0070 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 11-2 CZRNAAQO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 11-3 SEQ 0071 MAIN PROGRAM 168 007120 BEQ TST 001775 -— o o JSR JSR CLR CLR JSR JSR (=4 o ~ W= OV ~NOWNSW Mov 3s: =4 =] ~J [AS] N &~ mbum—-gomw 0OV OO0 JSR JSR 1717644 4$: 001316 001316 001542 007246 075525 023626 075566 006240 104401 000137 TST BNE MOV 020750 016376 000004 MOV MOV 5$: P4 3 =(R1) R1,=(SP) PC,STATIS PC,PROCES $SSENB(RO) BADSEC PC ,ABNRML PC,$EOP (SP)+,R1 #AVAIL RS (RS)+ 3s (R1) ,=(R5) PC,CMPRES PC.RELBUF :BR IF DRIVE NOT FINISHED :BACKUP THE QUE POINTER :SAVE THE QUE ADDRESS sACCUMULATE STATISTICS FOR DRIVE IN RO :PROCESS END OF COMMAND :CLEAR SK]P SECTORING ENABLED sCLEAR 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 :ég f; Lgf END OF THE ‘'AVAIL' TABLE ? :MOVE THE DPB INTO THE °AVAIL' TABLE :COMPRESS THE ORDER QUE ;RESTORE BUFFER #SW02 ,2SWR 5$ STATIN 5% STATIN ASNLST 5% . REPHD PC,STATPR :TYPE PERFORMANCE SUMMARY MAIN ;CONTINUE THE LOOP .STAR30 :BR IF NOT :TIME TO TYPE THE PERFORMANCE SUMMARY ? :BR IF NOT JCLEAR THE INDICATCR :ANY DRIVES ASSIGNED ? :BR IF NO :TYPE PERFORMANCE REPORT HEADING :TYPE THE SUMMARY ;TYPE '‘senx_ ETC" SEQ 0072 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 12 MAIN PROGRAM —ON =N =N NION N WO NOOONON - ) =2 ) =) D\ — ONONNN M NO = X8 WOWOO QOO0 =O— 3888388888 WN =2 OO0 264 007342 25 007350 59 007352 PROCES: MOovB 001324 0000i6 100000 002140 040000 002140 BIT BIT 040000 002152 BIT 013062 013154 000002 000207 1$: 013240 364 41 007366 2s: sDRIVE NUMBER FOR ANY ERROR MESSAGES SEE IF DRIVER SIGNALED AN ERROR B8R IF ERROR + SEE xr 'SC* SET R IF NOT SET -SEE IF 'TRE' SET 12111§ sancs1<no$ ”mIT14, snncs1<ao$ ERPROC '°"$é,SRMDS (RO) ERPR F SET -SEE IF 'ERR' SET :BR IF SET JSR RTS PC,CKERR PC,CKBUS sCHECK ERROR BJTS :CHECK BUS ADDRESS £ WORD COUNT PC,CMPAR PC RETURN #5W01,8SWR 2$ ;D0 DATA COMPARE ? :BR IF NO ;COMPARE DATA W/0 ERROR ;COMMAND TERMINATED WITH AN ERROR = PROCESS THE ERROR 032760 001402 000137 000200 000016 ERPROC: BIT 8EQ JMP 007550 ;DONE BIT SET ? lBITO;8TATUS(R0) F COMMAND DIDN'T COHPLETE NORMALLY ERPRC :PROCESS ERROR WITH °DONE' BIT SET DONE ;PROCESS COMMAND COMPLETION WITH °*ERROR' & °'DONE NOT' BITS 032760 001000 000016 040002 000016 000004 000016 ERPRC1: 8If 081709 $TATUS (RO) 8IT 081714'BIT01 $TATUS (RO) TDRIVE WENT OFFLINE ? BNE BNE BIT BNE RTS 45 007406 46 82 83 84 85 007410 86 007414 JSR JSR 817 BNE 171622 28 29 30 007356 39 007356 BNE (RO) ,DRVNO $TATUS (RO) :NO ERRORS DETECTED IN REGISTERS, DO SOME CHECKING ANYWAY NV PINIPVN) = end b e od cd o o e ecd W) = O 000 NN SN = ;PROCESS THE COMMAND TERMINATION SWTIM :BR IF gIHEOUT? DID OFL :BR IF 1 :PORT REQUEST TIME OUT ? #BITZ S$TATUS(RO) PRTIM PC :BR 1 F IT DID sERROR. RETURN :SOF TWARE TIMEOUT OCCURRED SWTIM: JSR DISPLY JSR 87 007420 007424 89 007430 007434 91 007440 838 JSR JSR JSR JSR RTS 92 007444 PC,LINE1 EMI3 PC.LINE2 PC.LINES PC. LINES PC.INCTOT gg.LlNE? sPRINT LINE 1 OF ERROR MESSAGE :PRINT THE TIME OUT MESSAGE :PRINT LINE 2 OF ERROR MESSAGE :PRINT LINE 3 OF ERROR MESSAGE :PRINT LINE & OF ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT :PRINT LINE 7 OF ERROR MESSAGE :RETURN ;DRIVE WENT OFFLINE OFLIN: 100 007466 TYPE JSR DISPLY JSR JSR .SCRLF PC,LINEY ,EM14 PC.LINE PC.LINE CR-LF sPRINT LINE 1 OF THE ERROR MESSAGE PRINT OFFLINE MESSAGE sPRINT LINE 2 OF THE ERROR MESSAGE :PRINT LINE 3 OF THE ERROR MESSAGE SEQ 0073 CZRNAAO RM80 PERF EXER MACRO VC4.00 14-JAN-82 15:16:58 PAGE 12-1 MAIN PROGRAM 007506 007512 007516 007522 007526 007532 007536 007542 007546 JMP PC.LINEG PC,INCTOT PC,LINE? DROP sPRINT LINE & OF THE ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT sPRINT LINE 7 OF THE ERROR MESSAGE ;DROP THE DRIVE PRTIM: 004737 JSR DISPLY JSR JSR JSR JSR JSR RTS 000207 PC,LINEY EM15 PC.LINE2 PC,LINE3 PC,LINES PC.INCTOT PC.LINE? PC sTYPE LINE 1 OF THE ERROR MESSAGE JPRINT PORT TIME OUT MESSAGE sTYPE LINE 2 OF THE ERROR MESSAGE JTYPE LINE 3 OF THE ERROR MESSAGE sTYPE LINE 4 OF THE ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT sTYPE LINE 7 OF THE ERROR MESSAGE sRETURN :PROCESS COMMAND COMPLETION WITH 'ERROR' & 'DONE® BITS SET 032760 001402 000020 000137 012532 007564 007572 007574 032760 001402 000137 040000 007600 007606 007610 032760 001402 000137 040000 007614 007622 007624 032760 001002 000137 040000 007630 032760 001402 000137 000400 032760 001402 000137 000020 032760 001402 000137 000200 032760 001402 000137 020000 032760 001402 000137 000010 032760 001402 000137 000040 g (=] 007550 007556 007560 r ~ ~ 007710 007716 007720 o o WD = O O 00 o [« e SV ACAVAV [ IV [V [V IV IV T 23 2k a8 2 N WIWNWN N — OOVD®DNO NS WN 2OV NOWVNSWN=OVN - JSR JSR JSR 004737 004737 004737 000137 ;PORT REQUEST TIMEOUT ERROR O b = = 3 —b = NN NN PININIAIN) NS00 ~NOMN S AN _._.s—l-l-l_a—l—d ~ QOO0 101 007472 000016 DONE: 002154 1$: 002150 28: 002152 38: 012532 010546 012272 #81T04,8TATUS (RO) ;UNSAFE OCCURRED BIT #B81T14 ,SRMERT (RO) ;UNSAFE OCCURRED 8IT #81T14,$RMCS2 (RO) :1S °*WCE® SET ? 8IT #81714 ,$RMDS (RO) JWP TRFER 8EQ JMP 8EQ JMP 8EQ JMP BNE 1$ UNSAF 28 UNSAF 3s WCKER 43 :BR IF NOT sREPORT UNSAFE sBR IF NOT sREPORT UNSAFE sBRANCH IF NOT SET sWRITE CHECK ERROR :BR IF ;CHECK ‘ERR’ SET ;PROCESS °TRE' 002154 48: 8IT BEQ JMP : "HCRC® SET? #81708,SRMERT (RO) :BR IF NOT 58 ;PROCESS °HCRC' HCRCER 002154 5$: 8IT BEQ J'FMT® SET? #81704 ,SRMERT (RO) sBR_IF NOT SET 63 #81707 ,SRMERT (RO) s 'HCT' SET? #81T13,S$RMERT (RO) ;'OP1* SET? 011054 JNP 011232 CKFMT sCHECK FORMAT ERROR 002154 6$: BIT 002154 78: 8IT BEQ JMP 8s OPIER 002154 8s: 8IT BEQ JMP :'PAR' SET? #8173 ,$RMERT (RO) :BR IF NOT SET 9s sREPORT °'PAR’ PARER 002154 9s: 8IT 8EQ JMP s 'WCF® SET? #81T5,SRMERT (RO) sBR IF AT SET 108 sREPORT WCF' WCFER 011406 071666 012014 012434 BIT 8tQ JMP 78 CKHCE sBR_IF NOT SET sCHECK 'HCE' ERROR sBR IF NOT SET sREPORT ‘OPI'* SEQ 0074 CZRNAAO RMB0 PERF EXER MACRO VO04.00 14=-JAN-82 15:16:58 PAGE 12-2 MAIN PROGRAM 002000 o ~ N &H D D D wd D ) sh b = —d b e b ad d D e ek b b s b cd cd b D end ed b D e b D ) ~N ANINVN) [ o e } [=lele) O ~NOW W= OV NO NS WO YPRRES02E8 IR2888S 163 164 007740 6 007750 108: BIT BEQ JMP ;"IAE' SET? #81710,SRMER1(RO) 18 ;BR _IF NOT SET sREPORT 'JAE’ JAEER 002154 11%: BIT (RO) #81711,SRMERT 000137 012106 032760 001402 000137 004000 032760 001000 002154 002000 002152 OO0 b b 10000 128 WLEER 012140 002154 032760 001006 032760 001004 000137 040000 002202 100000 002202 000137 000207 012372 g OO0 e e OO0 —d el b 005760 100002 000137 (=1 SOO 00 —b 002154 010000 sREPORT ‘'WLE' :'AOE® SET? :BR IF NOT SET 138 #81T10,8RMDS (RO) :'LBT' SET? SET NOT 138 ;BR IF :BR s'AOE* © 'L8T" SET, EXIT #81T12,SRMER1(RO) 138: 14$ DTEER 011772 SRMER1 (RO) 148: 158 DCKER 010072 :SEE IF 'DTE' SET :BR IF NOT *REPORT °'DTE’ ERROR :SEE IF 'DCK® SET ‘BR IF NOT *PROCESS ‘DCK° S'SKI* SET #81T14,$RMER2 (RO) :BRANCH 1F SKI SET 16$ 158: #81T15,$RMER2 (RO} JMP RTS :'BSE* SET ? 17 :BRANCH IF SO (NO, OTHER ERROR) SKIER PC :REPORT SKI ERROR ‘EXIT FROM ERROR ANALYSIS DRVER 011200 16$: 17$: ;'WLE® SET? ;B8R IF NOT SET sBR_ #BIT9,SRMERT(R0O) 128: PC 032760 001402 000137 ‘REPORT ERROR ROUT. 020764 032760 000100 002154 010040 002204 O\l\lg NOSOONION OIS S SN OHMOOO WA = = 004737 000207 OO N = = DCKER: 026027 101013 005760 001410 002204 004737 PC,SPOTCK PC 8IT qECH.SRHER1(R0) sECH ERROR SET ? NO $ SREPORT ECC LOGICAL FAILURE 7§nsz *ECH ERROR = ECC UNCORRECTABLE *FIRST LINE OF ERROR MESSAGE $RMEC1(RO) ,#10040 010040 2s $RMEC 1 (RO) 2s 002204 $SRMEC2(RO) 002206 2$: 3s: -OTHERWISE RPEC1=10040 2 PC.,LINE? 021134 072222 106414 sSEE IF ERROR AT A BAD SECTOR ON THE DISK ;1T IS, DON'T REPORT IT JSR RTS #10040, SRMEC1 (RO} 021134 072400 b lelelela — ed D el wd b ad b b b amd b -l b and cnd b aub aub -—b ;PROCESS DATA ('DCK') CHECK ERROR [=lelelelelalalelelele) SOR VNV NN =O O~ - b aud and b cnd b b —.o j=l=] LSS NTNT NN TN LS LN TN IS LS O 002154 1S POSITION COUNT OVER MAXIMUM ? :BR IF YES *POSITION COUNT 0 ? *BR IF YES ‘VALUE IN PATTERN REGISTER ? 6$ PC,LINE1 3§n47 *BR IF YES :TYPE FIRST LINE OF ERROR MESSAGE STYPE "ECC LOGIC ERROR' PC,LINE LEM4S PC,LINE2 :TYPE FIRST LINE OF ERROR MESSAGE *TYPE *ECC LOGIC ERROR' “TYPE LINE 2 OF ERROR MESSAGE CZRNAAO RM80 PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 12-3 K 6 SEQ 0075 MAIN PROGRAM 220 010206 231 010210 004737 012737 552 010230 000402 227 010232 228 010236 004737 004737 024740 000003 222 010216 004737 015744 223 010222 000403 224 010224 004737 022706 ggg 010242 000207 JSR MOV 001330 JSR JSR B8R BR 48: 58 : 022714 022746 RTS : INCREMENT TOTAL ERROR COUNT *RETRY COUNT 58 *FINISH THE ERROR REPORT PC.SRETRY 4 PC,LINEGC PC,LINE6D PC.LINE? PC *RETRY THE COMMAND ‘RETRY WAS MOT SUCCESSFUL *PRINT *CORRECTED ON N RETRIES' :PRINT "UNCORRECTABLE AFTER N RETRIES' ‘TYPE LINE 7 OF ERROR MESSAGE *RETURN :THE VALUES IN THE ECC REGISTERS ARE CORRECT, REPORT 'DCK' ERROR %g} PC,LINE ,EM21 :PRINT LINE 1 OF ERROR MESSAGE ‘DATA CHECK ERROR DCKERT: JSR PC.LINE2 ;PRINT LINE 2 OF ERROR MESSAGE JSR JSR PC.LINES PC.PRTBAD ‘PRINT LINE & OF ERROR MESSAGE “SEE IF BAD SECTOR TO BE PRINTED 233 010244 234 010250 004737 104414 021134 070461 68: 237 010254 004737 021214 239 010264 240 010270 004737 004737 022324 015236 ggg 010254 JSR JSR PC,INCTOT #3 RETRY 78: JSR DISPLY JSR 238 010260 004737 021654 MOV PC.LINE3 *PRINT LINE 3 OF ERROR MESSAGE aaxr1s'axr12'exrbs MASK :LOAD ERROR MASK 010274 012737 110100 001326 241 262 010302 032760 010100 002154 BIT #BIT121B1T06.$RMERT (RO) :CHECK 'DTE® & 'ECH' 2644 010312 245 010316 ggg 010320 JSR BR MOV PC,LINEG 98 #16. ,RETRY *PRINT *SECTOR IS ECC CORRECTABLE' *FINISH THE ERROR REPORT *RETRY COUNT JSR ST BEQ 8PL PC,GODRIV $TATUS (RO) 3s 118 :RETRY ‘TEST FOR DONE ‘BR IF NOT DONE ‘BR IF NOT ERROR BNE 4 :BR IF NOT 263 010310 001003 004737 000460 012737 251 010326 252 010332 253 010336 254 010340 004737 005760 001775 100057 256 010350 001006 BNE 022666 000020 001330 18$: 28: 38: 016710 000016 255 010342 032760 000200 000016 257 010352 004737 024740 %gg 010362 000137 007356 261 010366 262 010374 033760 001412 001326 BIT JSR DISPLY 258 010356 104414 074343 002154 4$: 265 010406 105237 001331 266 010412 267 010420 123737 001342 001330 001331 ;BR IF SET #BIT7,$TATUS(RO)® PC,INCTOT ,LINBM SSEE IF COMMAND TERMINIATED NORMALLY *INCREMENT TOTAL ERROR COUNT **DIFFERENT ERROR DURING RETRY® *SEE WHICH ERROR JMP ERPRC1 BIT BEQ MASK, SRMER1 (R0) lOOK AT CURRENT ERROR 6$ ‘BRIF DIFFERENT ERROR INCB RETRY+1 BIT BEQ 263 010376 032760 010100 002154 264 010404 001421 1$ C(MP8 BNE #8IT12'8B1T6, sansn1<no> sYECH® OR 'DTE® STILL SET ? B8R IF NEITHER SET 8s 1~casns~r RETRY COUNT RETRY,RETRY#1 2 :DONE ? ‘BR IF'N PC.INCTOT L INCREMENT TOTAL ERKOR COUNT 278 010422 279 010426 280 010432 281 010436 282 010442 ggz 010446 004737 023170 004737 024644 004737 024740 004737 022746 0064737 015236 000436 68: 78: 288 010450 004737 022666 8s: JSR PC,LINE6 ;PRINT *SECTOR IS ECC CORRECTABLE® 291 010460 004737 024620 98: JSR PC. INCSOF *CORRECT THE ERROR USING ECC AND CHECK IT *COMPARE THE BUFFER 290 010454 004737 022624 292 010464 004737 014472 293 010470 000407 JSR JSR PC,LINES PC. INCHRD JSR JSR B8R PC.LINE? PC PRTBAD 14$ JSR JSR JSR BR PC.LINESB PC ECC 128 *PRINT LINE 8 OF ERROR MESSAGE “INCREMENT °*HARD® ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE *PRINT THE BAD SECTOR *CLEAN UP AND RETURN *PRINT LINE 5B OF THE ERROR MESSAGE *INCREMENT °*SOFT' ERROR COUNT | CZRNAAQ RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 12-4 SEQ 0076 MAIN PROGRAM 296 JSR PC,LINEGD 11$: JSR 12%: MOV PC.INCSOF #1.FRSTER RTS PC 295 010472 004737 022714 108: 298 010500 004737 022700 300 010510 012737 000001 ggg 010476 000753 299 010504 004737 024620 301 010516 302 010522 303 010526 304 010530 305 010534 306 010540 004737 105737 100406 004737 104414 004737 ggg 010544 000207 013244 001357 001356 024740 074560 022746 138: 148: g?g BR JSR JSR TSTB BM] JSR pISPLY JSR ;PRINT 'UNCORRECTABLE AFTER N RETRIES' 78 *INCRFMENT ERROR COUNT PC,LINEGA *INCREMENT °*SOFT' ERROR COUNT PC . CMPARD FRSTER+1 148 PC,INCTOT ,LIN9G PC,LINE? :PRINT LINE 6A OF ERROR MESSAGE “SET PROCESSING 'DCKER® INDICATOR *COMPARE THE BUFFER *ERROR IN COMPARE ? *BRANCH IF ERROR L INCREMENT TOTAL ERROR COUNT **DATA COMPARE OK® MESSAGE ‘PRINT LINE 7 OF ERROR MESSAGE *RETURN ;WRITE CHECK ERROR PROCESSING 311 010546 312 010554 313 010556 314 010562 315 010566 318 010572 010576 010602 010606 319 010612 320 010616 321 010624 322 010630 323 010632 032760 001034 004737 104414 005037 004737 004737 004737 004737 004737 012737 004737 000403 327 010644 328 010646 002154 021134 070565 001326 021214 021656 022324 022414 024740 000003 001330 004737 022714 1$: 020764 2s: 333 010674 001003 336 010704 104414 320 010710 010714 004737 004737 012737 337 010706 000000 010720 004737 071413 344 010746 345 010752 346 010756 012737 004737 005760 001775 347 010760 100405 348 010762 105237 022324 001331 JSR PC,LINESC 001330 S$: 68: 78: ;SEE IF 'DCK' SET ALSO 2s PC.LINE1 ,EM23 :BR IF IT IS ‘PRINT LINE 1 OF ERROR MESSAGE *PKINT WCE €& DCK NOT PC.SRETRY 18 *RETRY THE OPERATION :RETRY UNSUCESSFUL 10$ *CLEAR ERROR MASK *PRINT LINE 2 OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE *PRINT LINE %4 OF ERROR MESSAGE *PRINT LINE 5 OF ERROR MESSAGE *INCREMENT TOTAL ERROR COUNT *RETRY LIMIT *PRINT 'CORRECTED ON N RETRIES® SFINISH PROCESSING THE ERROR JSR PC.LINE6D B8R JSR MOV 8IT 11§ SEXIT IF AT BAD SECTOR ON DISK PC.LINE1 *PRINT LINE 1 OF ERROR MESSAGE #EM22.4$ *ASSUME THAT EM22 WILL BE PRINTED #81T14,$RMCS2(ROS :DID ‘WCK® ALSO SET2 BR JSR MOV 48$: 021214 021656 016710 000016 MASK PC.LINE2 PC.LINE3 PC.LINEG PC.LINES PC.INCTOT #3.RETRY BNE 010706 38: 000020 CLR JSR JSR JSR JSR MOV BR 010724 004737 022414 341 010730 032760 000100 002154 342 010736 001441 343 010740 #81T15,$RMER1 (RO) BNE JSR DISPLY JSR BR 022706 000476 004737 BIT JSR 015744 329 010652 000477 330 010654 004737 021134 331 010660 012737 070512 010706 332 010666 032760 040000 002150 ggg 010676 WCKER: 004737 ggg 010636 000501 326 010640 100000 10$ PC,SPOTCK 3s :PRINT "UNCORRECTABLE AFTER N RETRIES' *FINISH PROCESSING THE ERROR *SEE IF ERROR AT BAD SECiOR ON THE DISK :8R IF IT DID NEM37,48 cs§§ecguzgz *DCK® AND 'WCK' NOT DURING L.WORD O *MESSAGE ADDRESS GOES HERE JSR PC.LINEG *PRINT LINE %4 OF ERROR MESSAGE DISPLY JSR JSR JSR BIT BEQ MOV JSR TST BEQ 8MI INCB PC.LINE2 PC.LINE3 *TYPE THE ERROR MESSAGE *PRINT LINE 2 OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE PC.LINES *PRINT LINE S OF ERROR MESSAGE #81706, SRMER1 (RO} -ECH SET ALSO? 108 SFINISH PROCESSING THE ERROR #16. ,RETRY “RETRY LIMIT = 16 (10) 8$ *BR IF ERROR ON COMMAND PC,GODRIV $TATUS (RO) 78 RETRY#+1 *RETRY THE COMMAND *COMMAND F INISHED ? *BR IF NOT *INCREMENT RETRY COUNT - SEQ 0077 CZRNAAOD RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 12-5 MAIN PROGRAM NN == Q SO OOO0NO o VSN oD d i nd b cd b e b d ed - AN LA NN N [eleloleBNelolelolels] o SERSFESAE NN NN N WWNWWWWWWW (U LV IV [V, AV IV, L LV, 00 NN NN — 349 010766 350 010772 105237 123737 001331 001330 001331 100000 002154 000100 002154 000402 004737 004737 004737 000207 004737 8%: NN 004737 004737 000207 10$ sPRINT 'CORRECTED ON N RETRIES' ;FINISH ERROR PROCESSING INCB CMPB RETRY#+1 RETRY ,RETRY+1 DONE ? JSR BR 9$: 108: 023170 024740 022746 11%: JSR JSR JSR RTS BR JSR JSR JSR DISPLY JSR 001326 001330 2$: 3s: 1$ 6$ PC,LINEGC :BR IF IT IS, RETRY COMMAND PC,LINES PC,INCTOTY PC.LINE7 sPRINT LINE 8 ~ °DIFFERENT ERROR ° *PRINT *CORRECTED ON N RETRIES' 108 :FINISH PROCESSING ERROR : INCREMENT TOTAL ERROR COUNT PC PC,SPOTCK 3$ PC.READDR PC,READHD JSR JSR Mov Mov JSR JSR PC,LINEGC JSR JSR JSR 28 JSR PC,LINE? JSR JSR INE6D INE7 BR 022714 022746 R If AT RETRY LIMIT SET ggms,SRMER1 (ROS F NOT'DCK' = DIFFERENT ERROR #81T06, snnen1<no$ s 'ECH' ALSO SET ? PC.LINE ,EM20 PC.LINE? PC.LINE3 PC,LINES PC.LINESA PC,INCSOF PC.INCTOT #8178 ,MASK #3 ,RETRY PC,SRETRY B8R 022706 022746 s INCREMENT RETRY COUNT ;FINISH THE ERROR MESSAGE :RETURN "HCRC' ERROR HCRCER: JSR 020764 1%: 000404 PC,LINE6C BEQ BIT BEQ BIT BNE 022706 015744 JSR BR 023254 015652 021134 070440 021214 021654 MWWV E S UWNIN = =200 S OHNOONONNVONNONN b b cwnd cnd b b ond e b b b ed b o oo 000 & NN b b b cud wnd o b D wd b e b o b D b e —dad md crdd o md b e o d b md b e e e e e b e oo 389 0 v 022706 ;REPORT 369 011054 %70 011060 371 011062 372 011066 w 004737 000423 3s RTS sSEE _IF ERROR AT BAD SECTOR GEXIT 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 :PRINT LINE 3 OF ERROR MESSAGE :PRINT LINE & OF ERROR MESSAGE ;PRINT THE HEADER INFORMATION : INCREMENT *SOFT* ERROR COUNT : INCREMENT TOTAL ERROR COUNT :SET ERROR MASK ;RETRY LIMIT sRETRY COMMAND ;RETRY NOT SUCESSFUL :PRINT "CORRECTED ON N RETRIES' :PRINT LINE 7 OF ERROR MESSAGE SEXIT ;PRINT 'UNCORRECTABLE AFTER N RETRIES' :g%fi;NLINE 7 OF ERROR MESSAGE 000207 4 410 011232 DRVER: HHN—=n OSSN NNONO [elelelolela] 004737 NN NN [LXY S Q- gi-gry sREPORT DRIVE ERROR JSR PC,LINE1 JSR PC,LINE2 sPRINT LINE 1 OF ERROR MESSAGE :REPORT DRIVE ERROR :PRINT LINE 2 OF ERROR MESSAGE JSR PC.INCTOT s INCREMENT TOTAL ERROR COUNT DISPLY J5R JSR RTS ,EM30 PC.LINE3 PC.LINE7 PC ;PRINT LINE 3 OF ERROR MESSAGE ;PRINT LINE 7 OF ERROR MESSAGE :RETURN :PROCESS FORMAT (*FER') ERROR 032760 000400 002154 CKFMT: 8IT #B178,$RMERT (RO :"HCRC® SET ON ORIGINAL ERROR ? SEQ 0078 CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 12-6 MAIN PROGRAM 411 011240 2}; 011242 001402 000137 0. '054 18: 414 011246 004737 023254 415 011252 004737 015652 «16 011256 032737 000400 067612 417 011264 001002 z}g 011266 000137 012166 420 011272 004737 020764 421 011276 000442 437 011354 438 011360 004737 000405 422 011300 423 011306 424 011310 425 011314 426 011320 432 011324 433 011330 434 011334 435 011340 436 011346 439 011362 460 011366 443 011374 4466 011400 28: 004737 106414 004737 004737 004737 004737 004737 004737 012737 012737 004737 004737 022706 022746 222 011404 000207 022746 PC ,READDR :GET CORRECTED TRACK & SECTOR ADDRSSES BIT BNE #BiTS, ceunec+nnek1 2 FMTER ~o ERROR IS 'FMT® ONLY JSR PC,SPOTCK ;SEE IF ERROR AT BAD SECTOR ON THE DISK JSR DISPLY JSR JSR JSR JSR JSR JSR MOV MOV PC.LINET ,EM2% PC,LINE2 PC.LINE3 PC.LINES PC.LINESA PC. INCSOF PC.INCTOT #81T4 , MASK #3,RETRY JSR BR PC _READHD 58 ‘READ HEADER ;HCRC SET WHEN HEADER READ? IF *HCRC® SET CEXIT IF IT IS ‘PRINT LINE 1 OF ERROR MESSAGE *HEADER READ ERROR - FMT BIT DROPPED UP *PRINT LINE 2 OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE *PRINT LINE 4 OF ERROR MESSAGE *DISPLAY HEADER L INCREMENT SOFT ERROR COUNT INCREHENT TOTAL ERROR COUNT *SET ERROR MASK ‘RETRY LIMIT *RETRY THE COMMAND RETRY NOT SUCESSFUL PC.SRETRY (A 4 PC.LINE6C PC,LINE? 48: JSR PC,LINE6D ;PRINT °*UNCORRECTABLE AFTER N RETRIES® 5$: RTS pC *RETURN JSR ss’ PC,L.INE?7 PRINT *CORRECTED ON N RETRIES® PRINT LINE 7 OF ERROR MESSAGE SEXIT PRINT LINE 7 OF ERROR MESSAGE :PROCESS HEADER CUMPARE ('HCE') ERROR 015652 000400 067612 101174 170000 101174 002174 101174 2 011614 BIT BEQ JMP JSR JSR BiT BNE MOV BIC CMP BEQ JMP :HCRC SET ON ORIGINAL ERROR ? #8178, SRMER1 (R0) SET NOT :BR IF 18 CRC ERROR HEADER ‘REPORT HCRCER & TRACK ADDRS SECTOR CURRENT *GET PC,READDR 012637 000137 101174 012230 MOV JMP (SP)+,CYLNDR HCEER ;:POP STACK INTO CYLNDR *REPORT 'HCE® ERROR 004737 020764 38: JSR PC.SPOTCK ;SEE IF snnon AT BAD SECTOR 021134 070712 021214 021654 022324 022556 48: 449 011406 450 011414 451 011416 452 011422 032760 001402 000137 004737 000400 004737 032737 001017 013746 042737 026037 001402 000137 011470 zgg 011474 464 011500 465 011504 466 011506 467 011512 468 011516 469 011522 470 o115§e 476 011532 JSR BR 22; 453 011426 454 011432 455 011440 456 011442 457 011446 458 011454 459 011462 22? 8}}293 :BR IF NOT SET *REPORT HCRC ERROR JSR BR JSR JSR 015744 004737 022714 004737 18 HCRCER JMP 021134 070644 021214 021654 022324 38: 022556 024620 024740 000020 001326 000003 001330 225 011372 000404 3EQ JMP 00044 004737 104416 004737 004737 004737 004737 0110564 023254 002154 CKHCE: 1$: B8R JSR DISPLY JSR JSR JSR JSR *READ HEADER OF CURRENT SECTOR PC _READHD < "HCRC® SET? #8118, GENREG+RMER1 SET IF :BR 3s CYLNDR,=(SP) ::PUSH CYLNDR ON STACK #170000 , CYLNDR :CLEAR FORMAT ,MFG,USER AND SSF BITS FROM HEADER CORRECT CYLINDER ? $RMDC (RO) , CYLNDR® :BR IF IT IS 2 *REPORT POSITIONING ERROR POSER 6$ Pc.L§~e1 ,EM2 6c.Lx~s§ PC.LINE PC.LINES PC.LINESA SEXIT IF IT IS ‘PRINT LINE 1 OF ERROR MESSAGE *HEADER READ ERROR = "HMCE® SET *PRINT LINE 2 OF ERROR MESSAGE ‘PRINT LINE 3 OF ERROR MESSAGE *PRINT LINE & OF ERROR MESSAGE SPRINT LINE 5 OF ERROR MESSAGE — CZRNAAQ RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 12-7 SE@ 0079 MAIN PROGRAM 477 011536 004737 024620 480 011554 481 011562 012737 004737 000003 015744 483 011570 484 011574 004737 004737 022706 022746 487 011602 488 011606 004737 004737 022714 022746 478 0115642 004737 024740 479 0115646 012737 000200 001326 482 011566 000405 232 011600 zgg 011612 000404 000207 PC, INCSOF s INCREMENT SOFT ERROR COUNT MOV JSR #3,RETRY PC,SRETRY RETRY LIMIT sRETRY THE COMMAND JSR MOV 001330 BR 5%: 6$: PC,INCTOT #BIT7 ,MASK 5¢° JSR JSR PC,LINESC PC,LINE7 JSR JSR PC,LINEGD FC.LINE? BR 23} RTS 6$ PC : INCREMENT TOTAL ERROR COUNT ;SET ERROR MASK sRETRY NOT SUCESSFUL ;PRINT 'CORRECTED ON N RETRIES' sPRINT LINE 7 OF ERROR MESSAGE SEXIT sPRINT °UNCORRECTABLE AFTER N RETRIES' sPRINT LINE 7 OF ERROR MESSAGE sRETURN sREPORT POSSISLE POSITIONING ERROR 493 011614 004737 021134 495 011626 496 011630 497 011634 004737 004737 012637 021214 021702 101174 POSER: 496 011620 104414 072335 498 011640 499 011644 500 011650 501 011654 502 011660 282 011664 JSR 004737 004737 004737 004737 004737 000207 022556 024714 024740 023076 015524 JSR PC,LINET JSR JSR MoV PC,LINE2 PC,LINE3C (SP)+,CYLNDR DISPLY JSR JSR JSR JSR JSR RTS sPRINT LINE 1 OF ERROR MESSAGE ,EMS1 :PROGRAM DETECTED POSITIONING ERROR PC,LINESA PC,INCTOT PC.LINE7A PC,RECALT PC sPRINT LINE 5A OF THE ERROR MESSAGE s INCREMENT MISPOSITIONING COUNT : INCREMENT TOTAL ERROR COUNT :PRINT LINE 7A OF ERROR MESSAGE RECALIBRATE SEXIT PC,INCMIS :PRINT LINE 2 OF ERROR MESSAGE :PRINT LINE 3C OF ERROR MESSAGE :;POP_STACK INTO CYLNDR ;REPORT ‘'OPI' ERROR 282 021134 JSR RTS JSR PC,SPOTCK PC PC,LINET :SEE IF ERROR AT BAD SECTOR cRETURN IF IT IS :PRINT LINE 1 OF ERROR MESSAGE 004737 004737 021654 022324 JSR JSR PC,LINE3 PC,LINES :PRINT LINE 3 OF ERROR MESSAGE ;PRINT LINE & OF ERROR MESSAGE 516 011732 517 011740 518 011744 012737 004737 000405 000003 01574 gg; 011756 000207 507 011666 508 011672 509 011674 004737 000207 004737 020764 512 011710 513 011714 OPIER: 510 011700 104414 071107 511 011704 004737 021214 DISPLY ,EM31 JSR PC,LINEZ 514 011720 004737 024740 515 011724 012737 020000 001326 519 011746 520 011752 523 011760 524 011764 ggg 011770 004737 004737 022706 022746 004737 004737 022714 022746 000207 OPIER1: MOV JSR BR JSR JSR RTS 1$: JSR JSR RTS PC,INCTOY #81T13,MASK : INCREMENT TOTAL ERROR COUNT :ERROR MASK #3,RETRY PC,SRETRY 1% ;RETRY LIMIT sRETRY THE COMMAND :RETRY UNSUCESSFUL PC JEXIT PC,LINESC PC,LINE? PC.LINEGD PC,.LINE? PC sPRINT 'CORRECTED ON N RETRIES® ;PRINT LINE 7 OF ERROR MESSAGE sPRINT "UNCORRECTABLE AFTER N RETRIES' ;PRINT LINE 7 OF ERROR MESSAGE sRETURN ;REPORT °'DTE' ERROR ggg 529 011772 530 011776 531 012000 532 012004 001330 JSR MOV :'0P1' ERROR :PRINT LINE 2 OF ERROR MESSAGE 004737 000207 004737 104414 020764 021134 071152 533 012010 000137 010254 DTEER: JSR RTS JSR DISPLY JMP PC,SPOTCK PC PC,LINE1 EM32 DCKER1 sSEE IF ERROR AT BAD SECTOR JRETURN IF IT IS PRINT LINE 1 OF ERROR MESSAGE :'DTE' ERROR ;FINISH PROCESSING THE °'DTE' ERROR - CZRNAAQ RMB0 PERF EXER MACRO V04.00 14~JAN-82 15-76:58 PAGE 12-8 SEQ 0080 MAIN PROGRAM 534 sRcPORT 'PAR' ERROR g%z 537 012014 538 012020 539 012026 540 012030 541 012034 542 0120640 543 012064 544 012052 545 012060 546 01264 547 012066 548 012072 ggg 012076 551 012100 gg% 012104 004737 104414 004737 004737 004737 004737 012737 012737 004737 000405 004737 004737 000207 004737 000772 024740 000010 000003 015744 18: 022714 28: 004737 104414 004737 021134 071324 021214 560 012126 561 012132 ggg 012136 004737 004737 000207 024740 022746 004737 ggg 012226 004737 104414 004737 004737 004737 000207 021134 071362 021214 024740 022746 JSR BR PC,INCTOT #BITO3, MASK #3 ,RETRY PC,SRETRY 23 PC,LINEGC PC,LINE? PC PC,LINEGD [} JPRINT LINE 1 OF ERROR MESSAGE ;REPORT ‘'PAR' sPRINT LINE 2 OF ERROR MESSAGE sPRINT LINE 3E OF ERROR MESSAGE sPRINT LINE & OF ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT sERROR MASK JRETRY LIMIT sRETRY COMMAND sRETRY UNSUCESSFUL sPRINT 'CORRECTED ON N RETRIES' sPRINT LINE 7 OF ERROR MESSAGE ;PRINT 'UNCORRECTABLE AFTER N RETRIES' sFINISH ERROR MESSAGE JSR DISPLY JSR PC,LINET ,EM35 PC,LINE2 JSR JSR RTS PC,INCTOT PC,LINE7 PC JSR PC,LINE3F ;PRINT LINE 1 OF ERROR MESSAGE sREPORT 'JAE' ;PRINT LINE 2 OF ERROR MESSAGE sPRINT LINE 3F OF ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT sPRINT LINE 7 OF ERROR MESSAGE sRETURN WLEER: JSR DISPLY JSR JSR JSR RTS PC,LINEY EM36 PC.LINE2 PC,INCTOT PC,LINE7 PC sPRINT LINE 1 OF ERROR ME SSAGE ;REPORT ‘WLE' ;PRINT LINE 2 OF ERROR ME SSAGE s INCREMENT TOTAL ERROR sPRINT LINE 7 OF ERROR MESSAGE sRETURN ;REPORT FORMAT ERROR 004737 104414 004737 004737 004737 004737 004737 004737 000207 021134 070773 021214 021654 022324 022556 024740 022746 FMTER: JSR DISPLY JSR JSR JSR JSR JSR JSR RTS PC,LINEY ,EM26 PC,LINE? PC,LINE3 PC,LINES PC.LINESA PC,INCTOT PC.LINE7 PC ;PRINT LINE 1 OF ERROR ME SSAGE :FURMAT ERROR OF ERROR ME SSAGE sPRINT LINE OF ERROR ME SSAGE sPRINT LINE SS sPRINT LINE & OF ERROR sPRINT LINE S5A OF ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT sPRINT LINE 7 OF ERROR MESSAGE ;REPORT HEADER COMPARE ERROR gg} 593 012230 594 012234 595 012240 596 012244 JSR MoV Mov JSR BR JSR JSR RTS PC,LINET ,EM33 PC.LINE? PC,LINE3E PC,LINES ;REPORT ‘WLE' ERROR g;z 575 012166 576 012172 577 012176 578 012202 579 012206 586 012212 587 012216 588 012222 IAEER: 02c046 gg? g;} 012164 JSR DISPLY JSR JSR JSR ;REPORT 'lAE' ERROR 556 012106 557 012112 558 012116 566 012140 567 012144 568 012150 569 012154 570 012160 001326 001330 022706 022746 ggg 559 012122 PARER: 021134 071205 021214 021760 022324 004737 106414 004737 004737 021134 071020 021214 021654 HCEER: JSR DISPLY JSR JSR PC,LINEY EM27 PC,LINE2 PC,LINE3 ;PRINT LINE 1 OF ERROR MESSAGE ;HEADER COMPARE ERROR OF ERROR MESSAGE ;PRINT LINE OF ERROR MESSAGE sPRINT LINE MAIN PROGRAM 597 012250 604 012254 605 012260 004737 004737 004737 022324 022556 024740 000207 004737 104614 004737 021134 071475 021214 615 012312 616 012316 004737 006737 022324 024740 618 012330 619 012332 620 012340 621 012344 001415 012737 005037 004737 000003 00132 015744 623 012352 ggg 012356 004737 000402 022706 626 012360 627 012364 004737 004737 022714 022746 TRFER: 622 012350 000403 000207 :PRINT LINE 1 OF ERROR MESSAGE *RH CONTROLLER OR UNIBUS TRANSFER ERROR JSR JSR PC. anea PC.INCTO *PRINT LINE & OF ERROR MESSAGE ‘PRINT LINE 2 OF ERROR MESSAGE ‘PRINT LINE 3 OF ERROR MESSAGE “INCREMENT TOTAL ERROR COUNT S'DLT',UPE",'MXF', 'MDPE' ZET ? lBITlS'BlT1 31BITYBITS, SRMCS2 (RO) 2 #3 RETRY MASK PC,SRETRY :BR IF NONE SET SRETRY LIMIT JSR BR PC.LINE6C 28 18 ‘CLEAR ERROR MASK *RETRY THE OPERATION *RETURN HERE IF RETRY UNSUCESSFUL *PRINT 'CORRECTED ON N RETRIES® SFINISH THE ERROR REPORT JSR JSR PC,LINE6GD PC.LINE? sPRINT 'UNCORRECTABLE AFTER N RETRIES' :PRINT LINE 7 OF ERROR MESSAGE B8R 18: 28: PC"LINE3 RTS PC :PROCESS 'SKI® ERRORS 004737 104414 004737 004737 004737 0046737 004737 004737 &?mau 000207 021134 072277 021214 021670 SKIER: JSR DISPLY JSR JSR JSR JSR JSR JSR 024740 024670 023076 015534 RTS PC,LINE1 LEMSO PC.LINE2 PC.LINE3B PC.INCTOT PC.INCSKI] PC.LINE7A PC.RECALT PC ;REPORT WRITE CLOCK FAILURE 22% 644 012434 Pglfi;NLINE 7 OF ERROR MESSAGE PC.LINE? ; 40 ¢, LINE2 BEQ MOV CLR JSR 001330 ggg 636 012412 637 012416 638 012422 639 012426 PC.LINE7 :PRINT LINE SA OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT JSR DISPLY JSR BIT 617 012322 032760 121400 002150 632 012372 633 012376 634 012402 635 012406 PC JSR 614 012306 004737 021654 ggg 012370 RTS sPRINT LINE & OF ERROR MESSAGE :PROCESS CONTROL/INTERFACE TRANSFER ERROR 2?8 611 012272 612 012276 613 012302 PC.LINEG PC.LINESA PC.INCTOT JSR 606 012264 004737 022746 ggg 012270 JSR JSR JSR 004737 021134 645 012440 104414 071262 004737 021214 67 012450 004737 021662 WCEER: 646 012444 004737 004737 004737 654 012510 655 012512 656 012516 225 012522 000705 004737 004737 000207 022706 022746 659 012524 004737 022714 PC.LINE1 DISPLY ,EM34 PC,LINE2 JSR PC.LINE3A JSR JSR JSR JSR PC.LINES PC.INCTOT PC. PRTBAD 1$: BR JSR JSR RTS b1 PC,LINESC PC.LINE? PC 28: JSR 022324 024740 01523 648 012456 649 012460 650 012464 JSR MOV MOV JSR 651 012470 012737 000003 001330 652 012476 013737 000040 001326 653 012504 004737 015744 #3.RETRY #81T05,MASK PC,SRETRY PC,LINE6D ;PRINT LINE 1 OF ERROR MESSAGE :'SK1' ERROR ;PRINT LINE 2 OF ERROR MESSAGE :PRINT LINE 38 OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT ; INCREMENT *SKI' ERROR COUNT :PRINT LINE 7A OF ERROR MESSAGE :RECALIBRATE ('WCF*) sPRINT LINE 1 OF ERROR MESSAGE ;REPORT WRITE CLOCK FAILURE ;PRINT LINE 2 OF ERROR MESSAGE :PRINT LINE 3A OF ERROR MESSAGE :PRINT LINE & OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT :SEE IF BAD SECTOR TO BE PRINTED :RETRY COUNT :ERROR MASK SRETRY THE COMMAND :RETURN HERE IF RETRY UNSUCESSFUL :PRINT 'CORRECTED ON N RETRIES' :PRINT LINE 7 OF ERROR MESSAGE ;PRINT °UNCORRECTABLE AFTER N RETRIES® e - SEQ 0081 -1 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 12-9 SEQ@ 0082 MAIN PROGRAM 28222222 NN NN = 660 012530 B8R 000772 :PROCESS DRIVE UNSAFE ERROR ~oSRRNER(o 4 STe X NTo N N ) VNS SN b - PORINININININININNINI NN OO O\ O WAV WN=O 0 o oog ~N~ [elelalelelalelelalelole 662 67 18 : UNSAF 004737 JSR DISPLY JSR PC,LINET ,EM60 PC.LINE2 JSR PC.INCTO JSR 015744 000402 004737 000207 015534 ‘PRINT LINE 3 OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT 1S *SKI' ALSO SET? 8iT14, sanenztnos.8R IF YES 002202 BIT 001326 001330 MOV MOV JSR 091714 MASK #3,RETRY PC.SRETRY JSR PC.LINE6C 28 *RETRY WAS UNSUCESSFUL *PRINT 'CORRECTED ON N RETRIES® *CONTINUE WITH ERROR REPORT JSR PC, LINE6D :PRINT *UNCCRRECTABLE AFTER N RETRIES® BIT BNE -CHECK 'SKI' AGAIN #81T14, $RMER2 (RO} :BR IF SET 3s *RETURN PC RECALIGRATE PC,RECALT BNE B8R 022706 022714 022746 040000 PC. LINES sPRINT LINE 1 OF eanon MESSAGE *REPORT DRIVE UNSAFE SPRINT LINE 2 OF ERROR MESSAGE B8R JSR 002202 3s: RTS JSR RTS 2 18 PC.LINE7 PC :LOAD THE ERROR MASK *RETRY COUNT *RETRY THE COMMAND “PRINT LINE 7 OF ERROR MESSAGE *RETURN sREPORT AN 'UNKNOWN® DATA PATTERN 105737 N N NNNNNNNNNNNNQ NNSNNNN 691 012660 692 012664 693 012670 001356 NOMT(H: 021134 071671 021214 021662 022324 071671 001203 074473 023202 075233 0232 0 2 0012 0 3 0232 0 2 0752 3 3 0232 0 2 120 n3 0012 02 320 2 07523 3 0232v¢ v 1 3 00120 TSTB FRSTER JSR PC.LINE1 JSR PC,LINE2 JSR BR PC.LINE4 2s DISPLY _SCRLF BNE DISPLY JSR 18: 2$: DISPLY 18 ;FIRST ERROR IN THE SECTOR ? ‘BR IF NOT OR IF PROCESSING °‘DCKER' STYPE LINE 1 OF ERROR MESSAGE PC.LINE3A LOCAN'T MATCH DATA WITH PATTERN' *PRINT LINE 2 OF ERROR MESSAGE ‘PRINT LINE 3A OF ERROR MESSAGE ,EM43 SSCAN'T MATCH DATA WITH PATTERN' EM43 SPRINT LINE &4 OF ERROR MESSAGE *CONTINUE PROCESSING ERROR SCR-LF DISPLY MOV .LINSI R1,-(SP) *HEADER FOR DATA PRINTOUT *A"DRESS OF WORD 1 DISPLY MOV ,BLNKS2 (R1)+,=(SP) :TYPE 2 BLANKS *ADDRESS OF WORD 1 ,SCRLF *CR-LF JSR PC.LINOCT JSR PC,LINOCT MOV JSR R1,.-(SP) PC.LINOCT MOV (R1)+,=(SP) DISPLY DISPLY ,BLNKS2 JSR PC.LINOCT MOV R1,-(SP) DISPLY MOV ,BLNKS2 (R1)+,=(SP) DISPLY JSR JSR DISPLY ,S$CRLF PC.LINOCT PC.LINOCT ,SCRLF STYPE WORD 1 rvps WORD 1 ADDRESS OF WORD 2 TYPE WORD 2 rvpe 2 BLANKS *ADDRESS OF WORD 2 .rvpe WORD 2 :CR- ADDRESS OF WORD 3 *TYPE WORD 3 *TYPE 2 BLANKS *ADDRESS OF WORD 3 *TYPE WORD 3 :CR=~LF e CZRNAAQ RM80 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 F 7 SEQ 0083 MAIN PROGRAM 013012 013014 010146 004737 013026 013032 004737 104414 708 013042 005002 02320% Mov JSR R1,=(SP) PC,LINOCT ;ADDRESS OF WORD & :TYPE WORD 4 023202 001203 JSR DISPLY PC,LINOCT ,SCRLF TYPE WORD 4 :CR-L CLR R2 DISPLY MoV 013020 104414 07523 013024 012146 707 013036 062701 709 013044 710 013052 012737 013737 ;}5 013060 000207 000770 177777 001460 ADD 001356 001366 ;}z 715 01306c MOV MoV RTS 032760 716 013070 001012 060000 002140 CKERR: 719 013102 005760 002154 721 013110 722 013114 723 013116 726 013122 725 013126 001003 #-1,FRSTER CMPLMT,LIMITY PC INCREHENT BUFFER POINTER ;CLEAR ‘WORDS TO COMPARE' COUNT IN R2 ;SET ERROR FOUND INDICATOR :RESET THE COMPARE ERROR TYPEOUT LIMIT RETURN 005760 001416 004737 104414 004737 002202 004737 000207 022746 021134 071765 1$: 021214 ;%% #60000, SRHCS1(R0) 1ST SRMER1(RO) SANY BITS SET_IN ER1 TST 8EQ JSR DISPLY JSR SRMER2 (RO) 2% PC,LINET ,EM44 PC,LINE2 ;ANY 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 2 OF ERROR MESSAGE JSR RTS PC.LINE7 PC BNE 8IT BNE JSR JSR JSR 2s: sSEE IF 'TRC' OR 'MCPE' SET BIT BNE 726 013132 004737 021654 727 013136 004737 022324 728 013142 004737 024740 729 013146 ;g? 013152 #<252.%2.> ,R1 sTYPE 2 BLANKS ;ADDRESS OF WORD 4 sCHECK ERROR BITS IN THE RH/RM REGISTERS 717 013072 032760 177400 002150 718 013100 001006 720 013106 ,BLNKS? (R1)+,=-(SP) 1$ IT EITHER SET #177400, SRHCSZ(RO) sSEE IF ERROR BITS IN (S2 SET 1$ :BR IF ANY SET 1$ PC.LINE3 PC.LINES PC.INCTOT :BR IF ANY SET :PRINT LINE 3 OF ERROR MESSAGE ;PRINT LINE & OF ERROR MESSAGE ; INCREMENT TQTAL ERROR COUNT :PRINT LINE 7 OF ERROR MESSAGE :RETURN sCHECK BUS ADDRESS REGISTER & WORD COUNT REGISTER 734 013154 735 013160 736 013162 737 013166 738 013170 739 013174 740 013200 005760 001010 016046 006316 066016 022660 001416 002142 744 013216 745 013222 746 013226 747 013232 004737 004737 004737 004737 021712 022324 0247(0 022746 (kKBUS: 000020 000006 002144 741 013202 004737 021134 742 013206 104414 071544 743 013212 004737 021214 18: 748 013236 2s: 000207 TST BNE MoV ASL ADD cMP BEQ $RMWC (RO) 1$ S$WRDL (RO) ,~(SP) (SP) $BUF (R0, (SP) (SP)+,SRMBA(RO) 2% sCHECK WORD COUNT :BR _IF NOT ZERO ;WORD LENGTH : CHANGE INTO BYTE COUNT ;ADD THE STARTING LOCATION :BUFFER ADDRESS PROPER ? :BR IF OK JSR JSR JSR JSR PC,LINE3D PC,LINES PC.INCTOT PC,LINE? :PRINT LINE 30 OF ERROR MESSAGE ;PRINT LINE & OF ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT :PRINT LINE 7 OF ERROR MESSAGE JSR PC.LINEY DISPLY ,EM41 JSR PC,LINE2 RTS PC :PRINT LINE 1 OF ERROR MESSAGE :BUS ADDRESS OR WORD COUNT INCORRECT :PRINT LINE 2 OF ERROR MESSAGE SEQ 0084 MAIN PROGRAM :COMPARE THE BUFFER 1 2 2ouuoomw7omws S 013264 6 013252 g 013254 132760 001001 000207 000004 9 013256 10 013262 005037 016001 001364 000006 12 013274 066037 002142 }g 013304 000207 16 013306 17 013314 016037 052737 000024 CMPAR: CLR FRSTER :CLEAR 'FIRST ERROR' INDICATOR CMPARD: BITB BNE RTS #4,SCODE(RO) 18 PC ;SEE IF READ COMMAND *BR IF IT IS *RETURN CLR MOV ERCTR $8UF (R0) ,R1 :CLEAR THE ERROR COUNTER ‘BUFFER ADDRESS 1$: MOV 11 013266 016037 000020 001370 13 013302 001001 000012 170000 ADD 001370 001372 001372 BNE 28: 19 013330 20 013336 21 013342 22 013350 23 013354 24 013360 25 013366 26 013370 27 013374 28 013400 29 013402 30 013406 31 013414 g; 013422 013737 005237 012737 005037 005037 023760 101005 013702 005037 000405 016002 166037 126027 001026 001460 001366 177777 001360 001362 001370 012705 38 013434 39 013436 022521 001402 37 013430 052711 004737 41 013444 022521 4% 013454 45 013460 29 013462 48 013466 49 013472 gg 013476 CMSTR: 000022 000022 000022 000024 001370 000005 ;EXIT==NO WORDS XFERED MOV 8IS $CYL(RO),CMCYL #170000,CMCYL :CYLINDER ADDRESS WORKING LOCATION :SET MFG, USER, SSF AND FMT BITS MOV CMPLMT,LIMIT :DISPLAY LIMIT 18 CMCNT ,R2 CMCNT ‘BR IF IT IS LLESS THAN, USE REMAINING BUFFER *SET COUNTER TO 0 28: $SEC(ROS ,CMSEC :SECTOR £ TRACK ADDRESSES TO WORKING LOCNS INC MOV CLR CLR CMP LIMIT #<1,ZROIND SAVER1 SAVERS CMCNT.SSSECC(RO) BR MOV SUB CMP8 BNE 2 $SSEC(RO),R2 $SSEC (RO) .CMCNT SCODECRO} .#5 CMDAT BHI MOV CLR 1$: 2 PC LCONVERT PARAMETER INTO LIMIT VALUE *CLEAR THE °‘ZERO'S’ INDICATOR *CLEAR THE R1 SAVE WORD *CLEAR THE RS SAVE WORD IS BUFFER SIZE GREATER THAN ONE SECTOR ? :COMPARE SECTOR :DECREMENT WORD COUNT :READ HEADER & DATA? ‘BR IF NOT : COMPARE HEADER WORDS 36 013424 42 013446 43 013450 001354 001370 001370 gg 40 013440 001366 (RO) . CMCNT :CALCULATE ACTUAL WORDS TRANSFERED SRMWC RTS MOV 18 013322 015037 000010 001374 $WRDL (ROS,CMCNT :WORD COUNT TO WORKING LOCATION 001402 004737 162702 003007 000137 005237 004737 000207 001372 170000 013466 013466 000002 CMHED: [] #CMCYL RS ;ADDRESS OF COMPARING CYLINDER cMP BEQ (RS)+, (R1)+ 1$ SCHECK CYLINDER :BR IF COMPARE OK #170000,(R1) JSR PC,CMSTR2 BEQ JSR 28 PC,CMSTR2 CMSTR2: INC JSR RTS ERCTR PC.CMPRT PC 1$: 28: 014052 001364 074060 MOV 8IS CMP SUB 86T JMP (R§)+, (R1)+ N2,i2 CMDAT CMPRX SSET BITS INCASE BAD SECTOR ENCOUNTER *REPORT ERROR +COMPARE SECTOR/TRACK ‘BR IF EQ *REPORT ERROR *SUBTRACT HEADER LENGTH FROM SIZE ‘BR IF NOT FINISHED :COMPARE THE DATA PORTION : INCREMENT THE ERROR COUNT ‘REPORT THE COMPARISON ERROR 1CHECK THE REST OF THE HEADER ;COMPARE DATA FIELD gg 54 013500 55 013504 004737 004737 027462 014402 57 013512 004737 012646 56 013510 000403 CMDAT: JSR JSR PC,GETLMT PC.MATCH ;GET ADDRESS LIMITS SFIND THE PATTERN JSk PC,NOMTCH “RETURN HERE IF NO MATCH WITH PATTERM MADE B8R 18 ‘FOUND A PATTERN h ¥m) CZRNAAC RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 13 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 13-1 H 7 SEQ 0085 MAIN PROGRAM gg 013516 BR 000456 18: 60 013520 011405 61 013522 62 013526 63 013530 64 013532 65 013536 66 013540 67 013546 68 013550 012703 000020 28: 022125 001016 005737 001364 001406 032777 000010 165406 001402 004737 69 013554 005302 70 013556 014060 3s: 00343¢ 71 013560 005303 72 013562 73 013564 74 013566 75 013572 001361 000755 005761 001410 81 013614 82 013620 83 013622 86 013626 85 013632 86 013636 105737 100407 005037 010137 010537 000746 001356 89 013646 004737 014060 126027 000024 013702 020227 001370 000004 6$: 177776 3? 013652 92 013654 005737 001743 000740 93 013662 001414 96 013674 97 013676 98 013704 99 013706 }8? 013712 002466 162737 003675 94 013664 95 013670 58: 001354 001360 001362 6$: 001354 000400 8s: 000400 023727 000002 106 013736 002453 105237 123737 101424 001370 001374 001374 001424 109 013750 110 013756 123737 101414 001375 112 013764 113 013770 005237 013746 001372 001372 103 013722 104 013724 105 013730 107 013740 105037 001374 108 013744 105237 001375 111 013760 105037 001375 114 013774 042716 170000 001426 9%: :BR_IF NOT SET sDISPLAY THE WORD DEC R2 BEQ JSR BLE DEC BNE BR TST BEQ :R3 IS PATTERN POS COUNTER ; COMPARE BUFFER WITH PATTERN :BR IF NOT EQUAL :ERRORS DETECTED ? :BR IF NQ ERRORS ;SWITCH 3 SET? :DECREMENT SIZE COUNT 7$ :BR WHEN AT END 23 1$ =2(R1) 5% BR IF NOT AT END OF PATT RESTART THE PATTERN s1S MISCOMPARED CHARACTER=0 :BR_IF YES R3 #=1,ZROIND ERCTR PC,CMPRT 3s DECREHENT PATT POS COUNT :SET NON-ZERO MISCOMPARED INDCATOR : INCREMENT THE ERROR COUNTER :REPORT ERROR ;CONTINUE COMPARE 1578 BMI CLR MoV Mov BR FRSTER 6$ ZROIND R1,SAVER1 R5,SAVERS 3s sFIRST ERROR? :BR_IF NOT :SET THE ZERO INDICATOR ;SAVE CURRENT R1 :SAVE CURRENT RS ;CONTINUE COMPARE JSR PC,CMPRT :REPORT ERROR CMP8 $CODE (RO) ,#5 READ HEAD AND DATA ? MoV cMP CMCNT ,R2 RZ l‘ :SET_COUNTER= REMAIN BUFFER LENGTH :1S THERE AT LEAST 4 WORDS TO MATCH PATTERN ? MoV B8R 0256..CHCNT CMDAT 0256..R2 CMDAT :SET COUNTER =SECTOR SIZE ;RETURN TO COMPARE LOOP cMP CMCNT 42 ;1S THERE AT LEAST 2 WORDS TO COMPARE HEADER ? CLR8 INCB CMSEC CMTRK 10$ RESET SECTOR # : INCREMENT TRACK # CLRB CMTRK ;RESET TRACK # TST BEQ BEQ BLT sus BLE 001370 012702 000672 102 013714 7$: 33 PC,CMPRY #16. ,R3 (R1)+,(R5)+ 43 ERCTR 3s ASW3,SWR B8R 000005 (R4) RS MOV CMP BNE T3] BEQ BIT MoV INC JSR BR 76 013574 012737 177777 001354 77 013602 005237 001364 78 013606 004737 014060 gg 013612 000760 87 013640 88 013644 MoV ;BYPASS (OMPARE ROUTINE ;ADDRESS OF PATTERN ADDRESS IN Ré 7% BLY INCB CMPB BLOS C(MP8 8LOS INC MoV 8IC ZROIND 38 3s 93 CMPRX CMSEC CMSEC,SECLMT CMTRK, TRKLMT 108 CMCYL CMCYL = (SP) #170000, (SP) :ANY MISCOMPARIONS NOT ZEROS ? :BR _IF NONE-ALL ERRORS=ZERO ;CONTINUE COMPARING ;YES :BR_IF NO sGREATER THAN A SECTOR ? :NO,RETURN TO COMPARE LOOP :BR IF NO s INCREMENT COUNTER # HAX SECTOR ;MAX TRACK # 2 :NO s INCREMENT CYLINDER NUMBER :GET COMPARING CYLINDER :SAVE ONLY THE CYLINDER BITS SEQ 0086 CZRNAAQ RMB0O PERF EXER MACRO VvO04.00 i< g, .=82 15:16:58 PAGE 13-2 =4 (=4 o g2 P cmp BLOS 001422 000421 i wd (elelilelolelolelolelelelole BN-To) (= - 101401 d D 2711 D 02 h o 37 21 o ad d b d 02 108: 001372 170000 013466 013466 000002 11$: 001370 b ad 014334 o 001360 004737 004737 000422 014154 014236 010146 010546 013701 (SP)+,CYLIMTY 108 BR CMPRX MOV #CMCYL RS CMP BEQ JSR (RS)+, (R1)+ 118 PC,CMSTR2 8IS CMP #170000, (R1) (R§)+, (R1)+ :hesr CYLINDER ? *NORMAL RETURN,NOT WRAP AROUND ;ADDRESS OF COMPARING CYLINDER sSET BITS INCASE BAD SECTOR ENCOUNTER ;COMPARE 1ST '.€ADER WORD sMATCH sNOT MATCH :SECOND WORD OF HEADER 128 PC,CMSTR2 #2.CMCNT :;MATC H 128: BEQ JSR SU8 CMPRX 8s sNOT MATCH ;ADJUST WORD COUNT ;COMPARE IS DONE SJRETURN TO COMPARE LOOP CMPRX: JSR PC,ENDCHP sPRINT LAST LINE IF ERRORS CMPRT: BLE BR RTS PC 18: 2%: 001360 001362 014154 o W ~ b N =4 o b P P 014236 3s: ] 48: o&H -t ~ & o and O WY SO0 Y Y Y F 012737 000207 177777 SAVER1 2 BM] JSR JSR BR 18 PC.4$ PC.8$ 3s MOV MOV MOV MOV JSR JSR CLR CLR MOV MOV JSR RTS R1,=(SP) RS,=(SP) SAVER1,R1 SAVERS .RS PC.4$ PC.8$ SAVER1 SAVERS (SP)+,RS (SP)+.R1 PC.8$ PC ::PUSH R1 ON STACK FRSTER sFIRST ERROR ? 001356 TSTB BM] BNE JSR DISPLY FRSTER 78 58 PC.LINE1 ,EM&2 IF N0T sPRINT INITIAL MESSAGE INFO ;PRINT REMAINDER OF MESSAGE :2PUSH RS ON STACK :DISPLAY SAVED R1 :DISPLAY SAVED RS ;PRINT INITIAL MESSAGE INFO :PRINT SAVED VALUES ;CLEAR SAVED REGISTER INDICATORS JCLEAR THE OTHER ONE ::POP STACK INTO RS ::POP STACK INTO R1 ;PRINT REMAINDER OF MESSAGE ;RETURN :BR IF NOT ;BR IF FIRST ERROR AND PROCESSING °'DCK' ERROR sPRINT LINE 1 OF ERROR MESSAGE sDATA COMPARE ERROR sPRINT LInE 2 OF ERROR MESSAGE 5%: 6$: DISPLY .LINSH 260 TO TYPE HEADER sPRINT ‘DATA COMPARISON ERRORS' sCR=LF EXPCTD RECEVD JPRINT * MOV RTS #-1,FRSTER PC sSET FIRST ERROR FLAG ;RETURN 78: DISPLY PC.LINE2 PC.LINE3A PC.LINE& 6$ ,LIN9B H JSR JSR JSR BR DISPLY O~ O ~N g ~ N ~ 001356 Y VWV Y V¥ Y P B NINORVNONIN) = = b dad e N—dda »HO OO ¥ b e ¥ b P 001362 JPRINT SAVED VALUES ? IF YES : ;FIRST ERROR? TST BNE TSTB 001356 b R b b P ol ol ol b e e = wmw-a—n-aoo? VSS NOS O &N&NONO‘NOOO RSN 20‘0‘\1\ 100402 it eI -t O00O00O0OOO0O00O0O0O0O (=lelelele] porQuard b b b ed cub ond e ad cad el b cd w=d b OOCOOOOOOOOOO b cnd b cud b and b cnd b aud =d 005737 001010 105737 104414 OO0 —t b b emd cnd b =l —d —d mnd b b ard amd b end cnd b cnd ol b cnd oD cd wid b 022637 :TYPE DATA COMPARE ERRORS W= OOV NV W= OV~NOWNS gfitgfi:gfiho«rouflu“nunnvununn VP Y P P X —d b cnd e b D e b ed D b d D e b D id D o e i i ) i D ol ) e e &5 85 8 B N NN NN N W INNI N NI PRI NN NI NN = — = 3 = WA = O D00 N VNS NN = O 0 NO NS W) = OV 0O NN MAIN f RGGRAM .SCRLF sPRINT LINE 3A OF ERROR MESSAGE sPRINT LINE & OF ERROR MESSAGE . LOC DATA DATA' SEQ 0087 (ZRNAAQ RMB0O PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 13-3 W NONO SN 3PNA 2 oo NNONORNINNIN) e b o b o o b d d D DBEDREDEEEED NN NN N NN O NN WNIN) = — OO e D d e d b SODSSSS elolelelelelelelalelc BNelelolelelol) 001366 000200 164674 9$: 010146 162716 004737 000002 108: 016546 004737 004737 104414 000207 ;TYPEOUT LIMIT REACHED ? PC sRETURN R1,-(SP) #2,(SP) PC,LINOCY sBUFFER ADDRESS ;ADJUST ADDRESS JTYPE IT -2(R5) ,=(SP) ;PUT GOOD DATA ON THE STACK .BLNKS?2 104414 1044614 016146 LIMITY 9s LIMIT 108 #5W07 ,3SWR 108 000207 PC,.LINOCT .BLNKS?2 JSR DISPLY RTS 023202 001203 -2(R1),=(SP) PC,LINOCT .SCRLF PC sBR IF IT HAS sDECREMENT LIMIT COUNTER ;BR IF NOT AT LIMIT sPRINT ALL DATA COMPARE ERRORS ? :BR _IF YES :TYPE 2 BLANKS JTYPE 1T :TYPE 2 BLANKS :BAD DATA sTYPE IT sCR=LF sRETURN ;LAST LINE OF COMPARE ERROR REPORTING b b 001357 ENDCMP: TSTB BEQ 001364 o 3 - o b e wd e 000 O~ -—b — 8s: 001366 b b aod b d 2220222 TRRR ) - =— b ad D d e d D e D ol =D 00000 A0 N NNNNNNNNY o W = O V00NN NN = O 0 MAIN PROGRAM 200 000207 074531 001364 023234 001203 024740 022746 FRSTER+1 28 ERCTR 18 .LINGE EPCTR,=(SP) sANY COMPARE ERRORS FOUND ? :BR _IF NOT :SEE HOW MANY ERRORS sBR IF ONLY CAN'T MATCH PATTERN s "NUMBER OF ERRORS=' :NUMBER OF ERRORS PC,LINDEC sTYPE IT 18: PC,INCTOT 2s: PC s INCREMENT TOTAL Egggs.saufir MESSAGE sPRINT LINE 7 OF E SCRLF PC,LINE7 sRETURN :1S EQUAL TO O (RANDON DATA PATTERN MODE). OTHERWISE, THIS ROUTINE WILL ;RETURN THE ADDRESS OF THE EXPECTED FIXED DATA PATTERN IN Ré. ;CALL: Y V¥ ¥ ¥ ¥ P ¥ )P P NNPNON) b ccd d =2 OO onNO » O SNO SN ERDEEDDEDDDN and amd b b b acd cubd =lololelelelelelelelel=) b cod cub cub b NN S R = OO 00 NN OO N~ SLSTLNT ST ST NT NI S LS ST S LS LS LS LN LN 18 (¥ =2 —b —b —2 =2 — NN N NN AININININD ;ROUTINE TO MATCH THE DATA WITH A PATTERN, ONLY WHEN LOCATION °'PATTERN' 010146 001472 MAT(CH: #BUFFER,R1 MOV PC,MATCH JSR RETURN1 RETURN?2 R1,-(SP) quTERN.R‘ 000044 R4 /X] #44 R4 000002 #2.Ré 002324 000004 (sPS .R1 5% RS SINDAT(R4) 3s: #4 R3 (R1)+, (RS)+ ;BUFFER ADDRESS ;PATTERN ADDRESS IN Ré sCOULDN'T MATCH PATTERN sSAVE R1 ON THE STACK :WAS RANDOM PATTERN ENABLED ? sBR_IF YES o cx 2 ;USE _KNOWN PATTERN sPATTERN TABLE INDEX sRELOAD R1 sDECREMENT INDEX :BR IF PATTERN NOT MATCH sADDRESS OF PATTERN ADDRESS sNUMBER OF LOCATIONS TO CHECK ;COMPARE THE BUFFER AGAINST THE PATTERN P CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 13-4 SEQ 0088 MAIN PROGRAM 001366 BNE 238 014450 001374 239 014452 062704 240 014456 000403 BNE ADD BR 236 0144446 237 014446 005303 4s: 0023264 261 014460 062766 000002 000002 5$: 6$: 262 014466 012601 %22 014470 000207 247 014472 248 014500 249 014504 250 014510 016037 016046 066016 001002 251 014512 005726 252 014514 000207 253 014516 005046 254 014520 016046 255 014524 004737 256 014530 005716 257 014532 001413 258 014534 006316 002144 002142 000020 261 014550 262 014552 263 014560 001400 1$: 032040 122760 000005 000024 062737 000403 000004 001400 001007 ECC: R3 ;FINISHED CHECKING? ADD MoV RTS #2,2(SP) (SP)+,R1 PC ;:INCREMENT RETURN ADDRESS :RESTORE R1 :RETURN 005337 013737 042737 042737 001376 001376 177760 000017 271 014630 006237 001406 Mov 3s #STNDAT ,Ré 63 :BR IF NOT FINISHED :MAKE PATTERN ADDRESS ABSOLUTE JEXIT C :ACT WORDS XFERED (2°'S COMP) (RO) .= (SP) $RMW SWRDL (RO, (SP) :ADD WORDS REQUESTED TST RTS CLR MoV JSR 1ST 8EQ ASL (SP)+ PC =(SP) $SSEC(RO) ,=(SP) PC,$DIV (SP) 23 (5P) ;RESTORE STACK ;EXIT=-=-NO WORDS XFERRED :CLEAR NEXT STACK LOCN :SECTOR SIZE :DIVIDE WORDS XFERED BY SECTOR SIZE ? :PARTIAL SECTOR XFERED :BR IF _NOT ;CONVERT INTO NUMBER OF BYTES CMPB #5,8CODE (RO) ;WAS OPERATION, READ HEAD & DATA ADD BR #4 ,ECSEC 3s BNE 001406 001376 001406 A ;ADDRESS OF LAST LOCN XFERED (R0Q) ,ECSEC SRMB MoV ADD sus 2664 0164562 162737 001000 001400 ¢28: 3s: 265 014570 062706 000004 266 014574 016037 002206 001376 267 014602 268 014606 269 0146146 270 0164622 DEC BNE 000022 259 014536 161637 001400 260 014542 :BR IF NOT EQUAL, TRY NEXT PATTERN sUSE ECC TO CORRECT THE DATA ERROR 245 266 2% 1% (SP) ,ECSEC 3s :BR IF NOT :ADD HEADER SIZE (IN BYTES) BACK IN ;GO ADJUST THE STACK POINTER #256.%2 ,ECSEC :SUBTRACT SECTOR DATA FIELD SIZE (IN BYTES) :ADJUST THE STACK POINTER sECC POSITION COUNT .ECBIT SRHEC1(R0) sus ADD MOV #4,SP ASR ECWRD DEC MOV 8IC 8IC ;SUBTRACT SECTOR RESIDUE ECBIT ECBIT,ECWRD #°C17 ,ECBIT #17,ECWRD ;ADJUST BIT POSITION ;LOAD THE WORD COUNT LOCATION :SAVE THE BIT OFFSET _COUNT ;CLEAR THE BIT OFFSET : CHANGE TO BYTE COUNT(DIVIDE BY 2) ECWRD ECWRD :CHANGE TO BYTE COUNT(DIVIDE BY 4) ;CHANGE TO BYTE COUNT(DIVIDE BY 8.) 272 01464634 006237 001406 273 014640 006237 001406 ASR ASR 001406 MoV ECWRD,~(SP) :PUT THE WORD COUNT ON THE STACK 033230 JSR PC,$5820 :CONVERT THE WORD COUNT TO DECIMAL BHI JMP 48 ECC2 MoV CLR ;GET THE ERROR BIT MASK SRMECZ(RO) ECMSKO ;CLEAR THE UPPER MASK WORD ECMSK1 274 0146644 275 014650 276 014654 277 014656 278 014662 279 014666 280 014672 281 014700 282 014706 %gz 014710 285 014714 286 014722 104414 013746 006216 004737 004737 104414 063737 026037 101002 000137 016037 005037 292 000770 ASR 0152264 002206 0014064 001402 ,LINI0A (SP) :"ERROR BURST BEGINS AT°* 2GET STARTING WORD FOR MESSAGE(DIVIDE BY 16.) SAND PRINT IT PC,$SUPRL JSR ;"IN DATA FIELD OF ERROR SECTOR' DISPLY ,LIN10B JFIND THE BEGINNING OF THE ERROR BURST ECSEC,ECWRD ADD SRMBA (R0) ,ECWRD ;SEE IF BURST WAS IN DATA READ cMP 032364 074642 001400 001406 002144 001406 287 014726 005337 001376 288 014732 002405 289 014734 006337 001402 290 014740 006137 001404 291 014744 DISPLY 074606 4$: 5%: DEC ASL ROL BLT BR ECBIT 63 ECMSKO ECMSK1 5% :BR_IF IN DATA READ :NOT IN DATA READ = REPORT IT :DECREMENT THE BIT OFFSET COUNT :BR_1F DONE ;SHIFT THE ERROR MASK :SHIFT THE LOWER INTO THE UPPER ;CONTINUE THE SHIFT CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 13-5 SEQ@ 0089 MAIN PROGRAM N SR OONNOOWVWVWNE NOVNRLONNVONNONNONNNO S O OHOSHON BWNUINN = =0 N w R b b d b b od d o PONINUNINY 2 b od b od b b ed o OO0O0O0O0OO0O00O OO0 b b med b o b D d md oD b b b OO0 OO0OO0OOOOOOOOOO —d md =SOVSWN = OO W N W Nt ed ch cd wd ek =2 O WA NN NN NN 293 014746 296 014754 295 014760 296 014764 Zgg 014772 2 299 014776 300 015002 301 015004 302 015012 303 015020 304 015026 305 015030 017737 013746 047716 043777 052677 164434 001402 164422 001402 164410 005737 001415 013737 062737 026037 001404 005737 001473 005037 000414 001402 101006 001406 000002 002144 164344 001404 164332 001404 164320 104414 075006 001406 023202 075233 001412 023202 075233 164252 023202 075233 104414 013746 004737 104414 017746 004737 104414 005737 001427 104414 013746 004737 104414 013746 004737 104414 017746 004737 1044614 000402 104414 104414 000207 68: 164414 MOV MOV BIC BIC BIS @ECWRD ,ECBADO ECMSKO,=(SP) S8ECWRD, (SP) ECMSKO,@ECWRD (SP) +,8ECWRD :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 TST ECMSK1 ;DOES ERROR GO INTO NEXT WORD ? BEQ MoV ADD CMP 001414 001414 001414 BHI TST 7$: 001414 017737 013746 047716 043777 052677 013746 004737 001412 001420 8S$: 164324 ECC1: 001414 Mov MOV BIC BIC 8IS DISPLY MoV JSR DISPLY MoV JSR DISPLY MoV JSR DISPLY ECC2: ECCX: 074702 001203 aECWRD1,ECBAD? ECMSK1,=(SP) aECwRDT, (SP) ECMSK1,3ECWRD1 (SP)+,3ECWRD1 .LINTOH ECWRD ,~(SP) PC,LINOCT .BLNKS?2 ECBADO,=(SP) PC,LINOCT ,BUNKS?2 SECWRD, - (SP) PC,LINOCT ,BLNKS2 TST ECWRD1 DISPLY .SCRLF ECWRD1,=(SP) DISILY 075233 *CLEAR 2ND WORD ADDRESS *PRINT WORD CORRECTED CLR BR MoV JSR DISPLY MoV JSR DISPLY MOV JSR 164202 023202 *WAS ERROR x~ rxasr WORD ? *BR IF NO BEQ BEQ 001203 001414 023202 075233 001420 023202 075233 :BR IF NO *DUPLICATE ADDRESS ECWRD ,ECWRD1 #2 ,ECWRDY *INCREMENT ERROR ADDRESS - 1S ~5xr WORD IN THE BUFFER ? (R0) ,ECWRD1" SRMBA :BR IF YES, 8s 78 ECCX PC,LINOCT ,BLNKS2 ECBAD1,=(SP) PC,LINOCT ,BLNKS?2 SECWRD1,=(SP) PC,L'NOCT ,BLNKS2 BR Eccx DISPLY g%gPLY LINTOC .SCRLF PC sSAVE 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 sHEADER :PUT ECWRD ON THE STACK sTYPE ECWRD ;TYPE 2 BLANKS :PUT ECBADO ON THE STACK ;TYPE ECBADO :TYPE 2 BLANKS :PUT QECWRD ON THE STACK s TYPE QECWRD :TYPE 2 BLANKS ;PRINT THE NEXT WORD ? IF NOT %s sPUT EfURD1 ON THE STACK sTYPE ECWRD? sTYPE 2 BLANKS :PUT ECBAD1T ON THE STACK s TYPE ECBAD1 :TYPE 2 BLANK ;PUT_QECWRD1 ON THE STACK :TYPE QECWRD1 E;?E 2 BLANKS E:RE? BURST WAS NOT TRANSFERED TO MEMORY :RETURN JROUTINE TO DISPLAY THE SECTOR WHICH GAVF THE HARD ERROR -339 015236 340 015244 341 015246 032777 001520 016001 000010 002144 163710 PRTBAD: BIT 8EQ MOV gguS.iSUR HE BAD SECTOR ? SEI?T ,R1 $RMBA(RO) sPUT THE END ADDRESS INTO Ri - CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 13-6 n 7 SEQ 0090 MAIN PROGRAM 342 015252 016046 000020 3,3 015256 066016 002142 344 015262 345 015264 346 015266 005726 000207 18$: 348 015272 016046 000022 004737 032040 005716 001403 352 015306 006316 353 015310 161601 354 015312 000410 355 015314 162701 001000 356 015320 122760 000005 000024 350 015302 351 015304 357 015326 358 015330 359 015334 001002 162701 062706 000004 000004 361 015344 104414 075116 363 015356 001021 366 015366 367 015372 368 015376 369 015400 370 015404 371 015410 372 015412 004737 104414 012146 004737 104414 012146 004737 023202 075232 104414 001203 104414 075212 360 015340 362 015350 364 015360 365 015364 g;z 015416 375 015422 104414 104414 010146 28: 000024 (SP)+ PC MOV $SSEC(RO),~(SP) :DIVIDE THE WORDS XFERED BY THE SECTOR SIZE CLR 023202 075234 023202 ASL SUB B8R SUB CMPB (SP) (SP) ,R1 33 #256.%2 ,R1 #5.SCODE(RO) 5%: 43 ‘BR IF NOT #5,SCODE(RO) DISPLY MOV LLIN11 R1,-(SP) JSR DISPLY MOV JSR DISPLY MOV JSR PC.LINOCT ,BLNKS3 (R1)+,~(SP) PC.LINOCT ,BLNKS1 (R1)+,=(SP) PC.LINOCT DISPLY ,LIN11A MOV 023202 387 015470 104414 001203 DISPLY 389 015476 390 015502 §35 015506 393 394 395 396 397 398 104414 104414 000207 001203 001203 vs: 8$: ,S$CRLF C(MPB JSR DISPLY CMP BEQ DISPLY MOV JSR 388 015474 000754 ‘BR IF NOT *SUBTRACT HEADER SIZE FROM ADDR *RESTORE THE STACK POINTER ‘PRINT THE HEADER 023202 075233 002144 005302 001366 *REMANDER = 0 ? ‘BR IF IT IS = COMPLETE SECTOR TRANSFERED *CONVERT THE RESIDUAL SECTOR INTO BYTE COUNT “SUBTRACT IT FROM THE END ADDRESS ‘FINISH THE SIZING *SUBTRACT FULL SECTOR FROM END ADDR (IN BYTES) :WAS OPERATION READ HEADER & DATA ? ,LINT1H 004737 104414 020160 001412 104414 012146 004737 385 015464 386 015466 :DIVIDE DISPLY DISPLY 378 015436 379 015440 380 015444 381 015450 382 015452 383 015456 384 015460 075234 ‘MAKE THE UPPER DIVIDEND 0 33 ¥4 ,R1 #4.SP 012702 68: (SP) 28 :RESTORE STACK *EXIT--NO WORDS XFERRED BNE SUB ADD 376 015426 377 015432 010146 -(SP) PC.$DIV DISPLY 48: 18 JSR BNE 075171 000010 ST RTS ST BEQ 3$: 001203 122760 000005 L :FIND THE BEGINNING OF THE SECTOR (RO) ,=(SP) $WRD O) :SUBTRACT THE WORDS NOT TRANSFERED - (SP) SRMWC(R BNE 001002 347 015270 005046 349 015276 MOV ADD ,S$CRLF HEADER' ‘TYPE 'ADDR ‘PUT THE ADDRESS ON THE STACK *TYPE THE ADDRESS STYPE 3 BLANKS ‘PUT WORD ON STACK *TYPE THE 1ST HEADER WORD STYPE 1 BLANK ‘PUT WORD ON STACK *TYPE THE 2ND HEADER WORD *CR-LF ;TYPE 'ADDR PC.LINOCT ,BLNKS2 R1.SRMBA(RO) 78 ,BLNKS1 (R1)+,=(SP) PC,LINOCT ‘TYPE THE ADDRESS STYPE 2 BLANKS :PRINTED ALL THE SECTOR ? ‘BR IF ALL PRINTED STYPE 1 BLANK ‘PUT THE DATA ON THE STACK ‘TYPE THE DATA DEC BNE R 63 ,SCRLF §s SCRLF .SCRLF PC ‘PUT THE ADDRESS ON THE STACK ‘DECREMENT THE HORIZONTAL COUNT ‘BR IF NOT AT THE END OF THE LINE ‘CR-LF ‘RESTORE THE WORDS/LINE COUNT ‘CR-LF CR-LF *RETURN ;ROUTINE TO DO AN RTC - DRIVE SELECTED IN RO sCALL: : . : MOV JSR RETURN DATA® #8..R2 R1,=-(SP) DISPLY DISPLY RTS -WAS OPERATION READ HEADER & DATA ? ‘8. DATA WORDS PER LINE MOV BR CR-LF #DPB,RO PC,RTINCTR ;DPB ADDRESS CZRNAAQ RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16: 58 PAGE 13-7 SEQ 0091 MAIN PROGRAM 399 015510 111037 402 015526 403 015530 067556 000774 067556 400 015516 112737 000117 067560 401 015522 004037 041000 RINCTR: MOVB 1$: MOVB JSR GENDPB BR RTS 28? 015532 000207 (R0).GENDPB :MOVE THE DRIVE # TO THE GENERAL DPB #RTC.GENDPB+$COMND RO,RM80 18 PC COMMAND CODE :DRIVER ENTRANCE ‘DPB ADDRESS FOR COMMAND *DRIVER DIDN'T ACCEPT COMMAND *RETURN 289 :g23l1~e TO DO A RECALIBRATE USING ACTIVE DPB 408 409 2}(1) : : : 412 015534 010037 015560 416 015560 417 015562 418 015564 419 015570 000000 000774 005760 001775 000016 422 015602 423 015606 112660 112660 000033 000032 425 015616 259 015622 005060 000207 000010 #DPB,RO PC,RECALT :DPB ADDRESS RECALT: MOV RO.2$ LOAD THE DPB ADDRESS 28: BEQ O 1$ $TATUS (RO) 3s ‘DPB ADDRESS *DRIVER DiDN'T ACCEPT THE COMMAND ses xr FINISHED $IF =Q NO MOVB MOVB (SP)+.SPREVA+1(R0) (SP)+.SPREVA(RO) 413 015540 116060 002140 000027 41% 015546 112760 000107 000002 415 015554 004037 041000 1$: 38: 420 015572 004737 023254 421 015576 012660 000034 MOV JSR RETURN MOVB MOVEB JSR WORD BR ST JSR MOV 424 015612 005060 000012 CLR CLR RTS snncs1<ao> spnsvo<ao> ;SAVE THE PREVIOUS COMMAND #RECAL,SCOMND(RO) *LOAD THE NEW COMMAND RO,RM80 :START THE RECALIBRATE PC.READDR oscneneur THE ADDRESSES (SP)+,$PREVA+2 (RD) :MOVE THE CYLINDER ADDRESS $CYL (RO) $SEC(RO) PC ;CLEAR THE CURRENT CYLINDER ADDRESS *CLEAR THE CURRENT TRK/SEC ADDRESS *RETURN 428 ;ROUTINE TO A RECAL WITH NO DP8 ACTIVE 430 431 2%% : : : :CALL: 429 43% 015624 112737 000107 438 015642 439 015646 005737 001775 067574 435 015632 004037 041000 436 015636 067556 437 015640 000774 22? 015650 067560 MGV8 JSR aeruan #DRIVE,GENDPB PC,RECALO ;DRIVE ADDRESS RECALO: MOVB #RECAL GENDPB*SCOHND 28: GENDPB+STATUS 2 1$: 000207 JSR RO,RM80 GENDPB BR 18 ST BEQ RTS PC ‘MOVE THE TRACK ADDRESS *MOVE THE SECTOR ADDRESS RELCALIBRATE COMMAND VER ENTRAN ope ADDRESS o COMMAND *DRIVER DIDN'T ACCEPT THE COMMAND :SEE IF FINISHED ‘BR IF NOT FINISHED 458 :UTILITY READ HEADER ROUTINE 460 : MOV #DP8,RO : : : MOV JSR RETURN #CYLINDER,=(SP) :CYLINDER ADDRESS PC.READDR 459 .CALL 41 462 : : 463 464 222 467 015652 116637 000004 067567 468 015660 116637 000006 067566 469 015666 016637 000002 067570 470 015674 111037 067556 471 015700 112737 000173 067560 MOV MOV READHD: MOVB MOVB MOV MOv8 MOVE #SECTOR,-(SP) #TRACK,=(SP) :DPB ADDRESS :SECTOR ADDRESS :TRACK ADDRESS &4(SP),GENDPB+STRK :TRACK ADDRESS 6(SP).GENDPB+SSEC *SECTOR ADDRESS 2(SP)S GENDPB+$CYL *CYLINDER ADDRESS (RO),GENDPB DRIVE NUMBER #RDHD,GENDPB+$COMND : COMMAN CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 13-8 SEQ 0092 MAIN PROGRAM 472 015706 012737 177776 041000 28: 067574 000207 MOV JSR 067562 000006 000006 GENDPB BR TST BEQ MOV ADD RTS ;WORD CTR = 2 #-2 ,GENDPB+SWCNT ;DRIVER ENTRANCE RO,RM80 :DPB ADDRESS FOR COMMAND :DRIVER DIDN'T ACCEPT COMMAND 1% FINISHED? GENDPB+$TATUS :BR IF_NOT $ ;ADJUST STACK FOR ®ETURN (SP) ,6(SP) :ADJUST RFTRUN POINTER #6,SP PC :RETURN sRETRY THE PRESENT OPERATION s CALL: : : : ; 4 491 015744 492 015750 493 015754 494 015756 495 015760 496 015764 497 015770 498 015772 499 916000 004737 000016 2s: Pl Prur4 002154 N o 104414 000137 TST BEQ 8MI INCB ADD BR BIT BEQ TST 001326 P o o o Ptar Quuer G 1$: 001331 000002 500 016002 501 016006 502 016010 RETURNZ2 SRETRY: SR 016710 000016 000200 #COUNT ,RETRY MoV PC,SRETRY JSR RETURN1 001326 002154 001331 001330 001331 3$ 4$: 5%: 023170 022746 6%: 074343 007356 78: BNE TST BNE B8R BIT BEQ INCB CMPB BNE RTS sRETRY UNSUCESSFUL :SUCESSFUL RETRY :NOTE: IF A DIFFERENT ERROR OCCURS OURING :RETRY, THE ROUTINE EXITS TO 'ERPRC1' PC,GODRIV $TATUS (RO) 1$ 23 RETRY+1 #2,(SP) 5% sRE=START COMMAND s COMMAND FINISHED? :BR IF NOT :BR _IF ERROR s INCREMENT RETRY COUNT : INCREMENT RETURN :GO TO EXIT :DID COMMAND TERMINATE NORMALLY ? :BR IF NOT ég E?ROR MASK 0 ? ¥BIT7,STATUS(RO) 7% MASK 3s $RMER1 (RO) 63 4s , SRMER1(x0) MASK 63 RETRY+1 RETRY ,RETRY+1 SRETRY PC JSR JSR PC,LINE8 PC,LINE7 DISPLY JMP ,LINSM ERPRC1 187 RTS SRETRY COUNT (SP)+ PC :MAKE SURE THAT THE DRIVE ERROR REG IS CLEAR :BR IF NOT s CONTINUE RETRY : SAME _ERROR? :BR IF NOT INCREMENT RETRY COUNT ;DONE ? BRTIF "NOT DONE RETURN :REPORT DIFFERENT ERROR :PRINT LINE 7 ag#ggT STACK POINTER FOR DIRECT RETURN ;"DIFFERENT ERROR DURING RETRY' ;REPORT THE ERROR MAIN PROGRAM 5 ‘REEI’"E TO UPDATE THE PERFORMANCE SUMMARY STATISTICS 3 : MOV g : RETURN : 4 7 016072 8 016100 9 016102 032760 001456 016037 000300 000016 002144 016240 10 016110 166037 000006 016240 11 016116 }§ 016120 001447 006237 14 016124 15 016132 16 016134 17 016142 122760 001404 122760 001012 000002 000024 000060 000024 19 016152 20 016156 21 016140 5§ 016164 005560 102004 005060 005260 000062 24 016170 25 016176 122760 001417 000002 27 016206 005560 900040 STATIS: BIT BEQ MOV SuB 18 016144 063760 016240 000060 18$: 000062 000056 2$: 28 016212 063760 30 0162264 31 016226 32 016232 102004 005060 005260 §2 016240 000000 016240 29 016220 005560 000070 gz 016236 000207 000070 000064 $BUF (RO) ,FACTOR :SUBTRACT THE INITIAL ADDRESS #2,$CODE(RO) 1$ #0.$CODE(RO) 2 :SEE IF COMMAND WAS A WRITE *BRANCH IF YES :PRESENT OPERATION AN AUTO WRITE CHECK ? B8R IF NO ADC BV( CLR INC SWRITN+2(RO) 28 SWRITN+2(RO) SWTOFL (RO) :DID HIGH WORD OVFLO AFTER ADDING CARRY ? :BR IF NO :CLEAR HIGH WORD *AND COUNT WRITE OVERFLOW CMPB BEQ #2,8CODE(RO) 3$ :SEE IF COMMAND WAS A WRITE BRANCH IF YES ADC SENDAT+2(R0) :ADD ANY CARRY ADD ADC 38: #BIT07'81T06,8TATUS(RO) ;CHECK FOR DATA TERMINATION :BR IF NOT DATA TERMINATION 33 -STORE THE FINAL BUFFER ADDRESS $RMBA (R0) ,FACTOR CMPB BEQ CMPB BNE ADD 000066 BV( CLR INC RTS FACTOR: .WORD FACTOR,$SWRITN(RO) :END OF PASS DATA WORD COUNT FACTOR, SREAD (R0) ;UPDATE THE READ WORD COUNT $READ+2 (R0) *BR IF NO ‘CLEAR HIGH WORD *AND COUNT READ OVERFLOW 0 :USED FOR WORDS TRANSFERED PC 41 ; 42 : : 22 45 016262 46 016244 010146 010246 48 016250 49 016254 50 016256 51 016262 52 016270 53 016272 54 016274 55 016276 56 016302 57 016304 013702 001444 012701 026061 101405 005302 001434 062701 000767 011166 47 016246 010346 CLR JSR RETURN GETBUF: MOV MOV MOV 0016564 001656 000020 000002 18: 000004 000010 2s: MOV BEQ MOV CMP BLOS DEC BEQ ADD BR MOV :DID HIGH WORD OVFLO AFTER ADDING CARRY ? 33 $READ+2 (RO) $RDOFL (RO) ;ROUTINE TO GET A BUFFER JCALL: : MOV #DPB,RO ; :ADD WORDS WRITTEN DURING WRITE DATA FACTOR,SENDAT (RO} 37 318 39 40 :DPB ADDRESS *BR IF NO DATA TRANSFER *CONVERT TO A WORD COUNT ADD 26 016200 063760 016240 000036 PC,STATIS 3s FACTOR BEQ ASR 016240 000024 JSR #DPB,R0 -(SPJ PC,GETBUF :DPB ADDRESS *CLEAR THE STACK ;BUFFER ADDRESS WILL BE ON THE STACK ‘STACK WILL BE 2ERO IF NO BUFFER AVAILABLE R1,=(SP) R2.-(SP) :SAVE R1 *SAVE R BUFTBL ,R2 11 #BUFTBL+2,R1 SWRDL (RO) .2(R1) 2$ R2 58 #4,R1 18 (R1),10(SP) 'NUMBER OF SEPARATE BUFFERS :BR IF NONE AVAILABLE :FIRST ADDRESS OF ALLOCATION TABLE :SEE IF THERE IS A BLOCK LARGE ENOUGH SBRANCH IF IT 1S *DECREMENT TABLE COUNT ‘BR IF THROUGH YABLE *INCREMENT TABLE POINTER <CONTINUE LOOKING *BUFFER ADDRESS TO STACK R3,~-(SP) *SAVE R -~ SEQ 0093 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 14 SEQ 0094 CZRNAAQ RM8O PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 14-1 DAL R RN OOO 166061 000020 000002 000020 000020 000020 OSSNSO b D e d i o d b [elelelelolelalelelela) AN SN S d OO NOONONOM 58 01 59 uu MAIN PROGRAM 3s: 001654 000004 6 70 016356 85 RELBUF: MOV 86 016376 87 016400 88 016402 A R MOV MoV MoV PC 18: CMpP 000004 :BR IF DIFFERENCE IS ZERO sCONVERT # WORDS TO BYTES ;MAKE NEW STARTING ADDRESS SE}SRN # BYIES TO WORDS :DECREMENT ENTRIES COUNT :BR IF ALLOCATION TABLE EMPTY :DECREMENT TABLE COUN :BR IF ITEM WERE LAST ENTRY :MOVE TABLE POINTER :POINT TO NEXT ENTRY ;MOVE ITEMS sDECREMENT TABLE COUNT sCONTINUE IF NOT AT END OF TABLE ;RESTORE R3 ;RESTORE R2 ;RESTORE R1 :RETURN 000002 001654 000002 $BUF (RQ) .R3 (R1) ,R3 3s :SAVE R1 :SAVE R2 :SAVE R3 :SAVE Ré& :SAVE RS :BEGINNING OF TABLE sENTRY COUNT :BR IF EMPTY TABLE :TRIAL ADDRESS ;CHANGE TO BYTE COUNT :ADDRESS OF HIGHER ADJACENT BLOCK UPPE” ADJACENT BLOCK :BR IF YES #4 ,R1 R2 1$ s INCREMENT POINTER BUFTBL R2 43 : INCREMENT ENTRY CO(NT BUF TBL R 2 :ENTRY COUNT ;DECREMENT ENTRY COUNT :CONTINUE SEARCHING ;PUT THE BUFFER BLOCK INTO THE TABLE $BUF (RO) (R1) :BLOCK WRD CNT (R 0),2(RN° SHLDWC 000006 000110 001654 010246 013702 RS,=(SP) R3 000006 000006 000110 R&.~(SP) 2% (R0).R3 SHLDWC 000110 000006 000110 001654 R1,-(SP) R2,=(SP) R3,=(SP) #BUF TBL + 2.R1 BUFTBL R 2 001656 001654 oONNO Lo elealealoalon VlAaWAIWAL FRRXRRXXRR NRNRSECANIFRRNEE~ oS -.—b—.-l—l-.—.-l—.—.-‘—.-l-—ld—l—.dd-‘d—l—l—l—. o >~ OO0 OOOOOOOOO0OOOO0O0O00 22 - (R3)+,(R 1+ R2 /X (SP)+,R3 (SP)+,R2 (SP)+,R1 :ADJUST BUFFER WRD CNT :ROUTINE T0O PUT BUFFER BACK IN TABLE JCALL: #DP8,RO : [[0)'} :DPB ADDRESS F PC.RELBU JSR M RETURN . 83 ©0-00 0 83 Mov RTS 77 016374 78 79 80 81 82 OO #4°R3 (R$)+, (R 1)+ 48: 5%: -o-a_.-a—n—o-a-n-a—b-a—ns-n-n ekt = = QO OOODO0O0 DEC $WRDL (RO ),2(R1) 3s SWRDL (RO ) $WRDL (RO ), (R1) $WRDL (RO ) 58 BUF TBL 58 R2 5¢ R1,R3 3s: MOV 4$: MOV : INCREMENT R2 FOR USE LATER :SEE IF A LOWER ADJACENT BLOCK IS IN THE TABLE $8UF (RO) (R1)0 ;BLOCK ADDRESS TO TABLE sWRD CNT TO TABLE (R0),(R1)+ SHLDWC INCREHENT ENTRY COUNT BUF TBL SEXIT 8s RELEASED BUFFER IS LOWER ADJACENT $8UF (RO) (a1) : INCREMENTED WRD CNT 6,2 SgLD?C(R ; SAV - 0 PERF EXER MACRO V04.00 14=JAN=82 15:16:58 PAGE 14=2 b d b ad nd b ) wid e =D 012705 001656 016504 000002 006306 061504 020411 001406 062705 000004 005302 001366 005726 5$: b 000415 012521 000002 001656 000002 000004 78: 012521 005302 001374 012605 012604 012603 012602 012601 000207 8s: 8 SEQ 0095 MOV MOV ASL ADD CMP BEQ ADD DEC BNE ST #BUFTBL+2,RS 2(RS) ,Ré Ré (RS) ,R& R4, (R1) 6$ #4,RS R2 58 (SP)+ :BEGINNING OF TABLE ‘BLOCK SIZE (IN WORDS) *CHANGE TO BYTE COUNT *ADD BLOCK BEGINNING ADDRESS *R1 STILL POINTS TO INSERTED ENTRY *LOWER ADJACENT IN TABLE * INCREMENT POINTER *DECREMENT ENTRY COUNT *CONTINUE LOOKING *RESTORE STACK POINTER MOV ADD DEC MOV ADD (SP)+,R2 2(R1) ,2(RS) BUF TBL R1,RS #4 RS *RESTORE R2 * INCREMENT LOWER BLOCK LENGTH :DECREMENT ENTRY COUNT *GET READY TO COMPRESS * INCREMENT TO NEXT ENTRY MOV DEC BNE MOV MOV MOV MOV MOV RS (RS)+,(R1)+ R2 78 (SP)+,RS (SP)+.R% (SP)+.R3 (SP)+.R2 (SP)+.R1 PC BR MOV 8$ (RS)+, (R1)+ +END *COMPRESS TABLE *MOVE SIZE FIELD DOWN *DECREMENT ENTRY COUNT ‘BR IF NOT FINISHED *RESTORE RS *RESTORE Ré& *RESTORE R3 *RESTORE R2 *RESTORE R1 *RETURN ;Eitt THE ASSIGNED BUFFER (IF WRITE OR WRITE CHECK COMMAND) : MOV : MOVB ; : ; b e cmd md e b b v e b b b o b b b COOOOCOOOOVOO0O0O00 \%,] - OO0~ —h ad b cd ) NNOOON b e b —ld—.—‘-fld—.—.-‘—.-‘—ld—l—l—.—l—l-fl—l-fl—l—l—l—l—l—l-l—l—ld—l—ld-fl-fl OOO‘OMMV\U\U‘U‘MU\WM&J\bbbbbbbbwwwgwwuuuWNN WA =2 O V00 NN NN =2 O VRN W= O V00N - e 012602 066165 005337 010105 062705 68: E 104412 132760 001020 016001 000004 000006 016002 000020 1160064 000030 016405 012703 012521 005302 00232 000020 000024 38: 003403 104413 000207 JSR RETURN PC,FILBUF MOV MOVB MOV MOV MOV DEC 48: :LOAD BUFFER ADDRESS INTO THE DP8 *PATTERN CODE #4,$CODE(RO) L $BUF (R0) ,R1 ;SAVE THE REGISTERS :SEE IF READ COMMAND ‘BR IF READ ‘BUFFER ADDRESS RS STNDAT(R4) #16. ,R3 (RS)+, (R1)+ R2 :PATTERN ADDRESS *PATTERN COUNT ‘MOVE THE PATTERN INTO THE BUFFER ‘DECREMENT THE WORD COUNT SWRDL(ROJ ,R2 SPATTC(ROS.R4 /X B8R 2$ RESREG RTS :DPB ADDRESS C (RO) #PATTERN,SPATT BLE DEC BNE 005303 001373 000766 #BUFADR , $BUF (R0) FILBUF: SAVREG BITB BNE MOV 1$: 2s: #DPB,RO MOV R3 33 PC :POSITIVE WORD COUNT :RELATIVE PATTERN ADDRESS ‘BR IF DONE (WORD COUNT = 0) ‘DECREMENT THE PATTERN COUNT ‘BR IF MORE PATTERN *CONTINUE DISTRIBUTING THE PATTERN *RESTORE THE REGISTERS *RETURN ‘flff' THE COMMAND FOR THE DPB IN RO ; : : MOV JSR RETURN #DP8,RO PC,GODRIV :DPB ADDRESS SEQ 0096 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 164-3 —b oD amd cd A NVONNVO NONON) = b b d o cd e e b (elelalelalollolelolelalele lad b cd e d cnd ) D e D cnd D e ) e i o 0000 000000000000 N NNNNNNN NOMN WA = OO0 NN NN MAIN PROGRAM GODRIV: =0V 010046 18$: 2s: .WORD 000207 :CURRENT DPB ADDRESS 80.RM80 ;CALL THE DRIVE HANDLER (SP)+,R0 #1,80PERC(R 0) 000046 730 RO :SAVE RO,=(SP) R0O,2$ :DRIVE BLOCK ADDRESS GOES HERE :DRIVER REJECTED REQUEST :RESTORE RO :INCREMENT THE OPERATION COUNT 000034 000012 $OPERC+2(R0 ) ggREVA*Z(RO .SCYLégO) 000001 000044 000001 000054 000042 #1,8ENDSK 000052 #1,8P0S1T ’ (R 0> SENDSK*Z(?g ) 3s: RTS 0) ggOSIT*Z( RO ) :DID COMMAND REQUIRE A CYLINDER CHANGE ? IF NO END OF PASS SEEK COUNT ;INCREMENT :ADD ANY CARRY ;INCREMENT SEEK COUNT ;ADD ANY CARRY SEQ 0097 CZRNAAQ RM80 PERF EXER MACRO VO04.00 14=JAN-82 15:16:58 PAGE 15 MAIN PROGRAM } ‘223{’"5 T0 SETUP PARAMETERS FOR A SEQUENTIAL READ OR WRITE OF THE DISK 2 2 : MoV #DP8, RO :DPB ADDRESS on MOV #-2,8PACK(RO) :*WRITE PACK' & 'TEST' FLAG g ‘oR MOV #-1,8PACK(RO) ;'WRITE PACK' FLAG 2 : MOV #1,8PACK(RO) ;'READ PACK' FLAG 11 }g : : JSR RETURN PC. WRTPK *CALL READ OR WRITE PACK WRTPK: JSR TST PC,GETLMT $OPERC+2(RO) ;GET ADDRESS LIMITS +IS THIS THE FIRST OPERATION ? TST $OPERC (RO) 1S THIS THE FIRST OPERATION ? MOV JSR #SSEC R4 PC,CKLMTS GET INDEX TO SECTOR ADDR STGRAGE I DPB 16O CHECK DISK ADDRESS LIMITS P 14 017000 15 017004 004737 005760 027462 000050 17 017012 005760 000046 012704 004737 000010 020130 16 017010 18 017016 19 017020 20 017026 001011 001006 21 017030 000462 %§ 017032 BNE BNE BR HALT 000000 24 017034 116060 002140 25 017042 016060 000010 26 017050 016060 000012 000027 000032 000034 18: gg 017064 016060 002174 000012 30 017072 032760 001000 002172 32 017102 33 %g 005360 000010 31 017100 001402 37 017112 38 017116 004737 000427 020130 40 017126 41 017134 116060 016060 44 017156 45 017160 46 017164 001473 004737 032777 <8 017174 000744 000134 000130 000011 000012 47 017172 001471 031370 000020 012704 000010 5¢ 017206 004737 020330 57 017202 013705 001462 010560 3s: 000020 54 017216 042760 000377 000020 §5 017224 56 017226 001002 105260 000021 57 017232 016060 000020 000004 &$: SRMDA (ROS , $SEC (RO) CURRENT SECTOR & TRACK ADDRESS BIT (RO) ;IS SSEI STILL SET ? #SSE],SRMOF DEC $SEC(RO) MOV 2% :BR IF NOT #SSEC R4 ;GET INDEX TO SECTOR ADDR STORAGE IN DPB *IF SO, THEN BACKUP ONE SECTOR TO REFLECT THE *PROPER ADDRESS TO BE ACCESSED WHEN READING OR ‘WRITTING THE NEXT SEQUENTIAL SECTOR. 160 CHECK DISK ADDRESS LIMITS 'BR IF NOT AT END OF SEQUENTIAL ADDRESSING JSR BR PC,CKLMTS 38 MOV8 MOV MINTRK(RO).$TRK(RO) MINCYL (RO) ,$CYL (RO) MINSEC(RO),$SEC(RQ) #4,SCODE(RD) #-2,$PACK(RO) 8s PC.EOP2 ;RESET SECTOR ADDRESS T TRACK ADDRESS :RESE *RESET CYLINDER ADDRESS ;SET CODE TO READ DATA :WAS WRITE DATA PACK iN PROGESS ? ‘BR IF YES (START TESTING) *DROP THE DRIVE (NORMAL TERMINATION) 1S SWITCH & SET ? BEQ #SW04 , aSWR 98 28 *RE=CHECK FOR BSF & SSF TRACKS MOV #SSEC R4 JSR Pg.cuxuc :WORD COUNT IS MAXIMUM BIC #3%7 ,SWRDL (RO) INCB SWRDL+1(RO) BR 50 €17176 §3 017212 MOV *CURRENT CYLINDER ADDRESS BEQ JSR BIT 161762 :SHOULD NOT GET HERE $RMDC (RO) ,$CYL (RO) mov8 (MP8 42 017142 112760 000004 000024 43 017150 122760 177776 000026 ‘BR IF NOT AT END OF SEQUENTIAL ADDRESSING ;SAVE CURRENT PARAMETERS *SAVE PREVIOUS TRACK/SECTOR ADDRESS :SAVE PREVIOUS CYLINDER ADDRESS MOVB 39 017120 116060 000140 000010 3$ :BR_IF NO SRMCS1(RO),SPREVO(RO) $SEC(RO) , SPREVA (R0) $CYL (RO) (SPREVA+2(R0) BEQ 2s: 35 017106 012704 000010 1$ :BR IF NO MOVB MOV MOV MOV 27 017056 016060 002146 000010 1$ MOV MOV BNE MOV WRDCNT ,RS RS 43 SWRDL(RO) :8R IF NO ;GET INDEX TO SECTOR STORAGE *CHECK WORD COUNT FOR MAXCYL/MAXTRK :GET WORD COUNT :SECTOR BOUNDRY FOR WRITTING :NO :SET TO ONE SECTOR $WRDL (RO) , SWCNT (RO) ;STORE FOR 2'S COMPLEMENT WORD SEG 0098 CZRNAAO RMB0 PERF EXER MACRO V04.C{ 14~JAN-B2 15:16:58 PAGE 15-1 MAIN PROGRAM 58 017240 59 017246 g? 017252 016060 005460 0127€9 000020 000004 62 017260 63 017264 64 017266 65 017274 66 017302 67 017304 68 017310 69 017312 70 017320 71 017326 72 017332 73 017336 ;g 017344 105760 100407 112760 112760 000415 005737 001366 112760 112760 004737 110560 012760 000207 000026 76 017346 77 017352 78 017356 79 017362 005037 105060 005060 005726 001320 000026 000122 80 017364 000137 000400 000004 000171 MOV 000022 TST8 000024 000002 S8$: 6$: 001440 000002 MOV NEG 000110 000024 000161 000002 020070 000030 177777 000122 7%: 006240 8s: 9s: BM] MOVB MOVB BR :HOLD WORD FOR 'RELBUF' ROUTINE $WRDL (RO) , SHLDWC (RO) : CHANGE WORD COUNT TO 2'S COMPLEMENT $WCNT (RO) #256. ,8SSECC(RO) :SECTOR SIZE FOR READ $PACK(RO) :READ Ok WRITE PACK ? #4,$CODE (RO) CODE FOR READ DATA 63 :BR IF WRITC ND WRDDAT,SCOM(RO} :DRIVE CODE FOR OPERATION 7$ sSET UP FOR EXIT 5$ :BR IF YES *LOCKED IN READ ONLY MODE ? ST RDONL Y MOVB #2,$CODE(RO) RTS PC ! SRETUM CLR CLRB CLR PACK $PACK(RO) $NEXT (RO) ;SET *TEST' FLAG *SET DPB 'TEST®' FLAG :CLEAR 'PARAMETER SELECTED® INDICATOR JMP MAIN 2JUMP TO MAIN BACKGROUND LOOP BNE MCVB JSR MOVB MOV TST CODE FOR WRTDAT -OP CODE (RD) #WRTDAT,SCOMND :GET PATTERN CODE PC.GETPAT :PATTERN CODE RS.SPATTC(RO) PARAMETERS SELECTED INDICATOR :SET #-5,SNEXT(RO) (SP) + “CLEAR STACK LEVEL SEQ@ 0099 CZRNAAQ RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 16 KAIN PROGRAM ;EEEERATE PARAMETERS FOR THE OPERATION } 3 2 7 017370 8 0173764 9 017400 10 017404 11 017406 12 017414 13 017416 14 017472 15 017626 16 017432 17 0176434 }3 017440 004737 004737 005737 001016 032777 001012 012705 004737 020537 103003 012705 000407 027462 037024 001440 20 017442 013705 037124 22 017450 042705 177776 21 017446 #DP8,RO :DPB ADDRESS GENPAR: JSR JSR ST BNE 8IT BNE MOV JSR CMP BHIS MOV BR PC,GETLMT PC . SRAND RDONLY 18 #SW0,aSWR 18 #8. RS PC.GETREM RS.RATIO 18 #2.RS 2 sGET ADDRESS LIMITS :CYCLE THE RANDOM NUMBER GENERATOR MOV $LONUM, RS sSELECT READ OPERATION CODE :SWAP BYTES IN RS ;MASK OUT ALL BUT BIT 0 TABLE OFFSET FOR READ CODE COMMAND SELECTION CODE TO CONTROL BLOCK sSECTOR AND TRACK : MOV : RETURN : A 000305 000001 161540 000010 032014 001476 000002 1$: 23 017454 24 017460 25 017464 59 017472 062705 110560 016060 016060 000004 28: 000114 002146 000116 002174 000120 28 017500 032760 001000 §9 017510 005360 000010 29 017506 001402 32 005737 001427 001506 THEAD: 39 017530 2? 017534 005760 001405 000046 42 017536 43 017542 012704 004737 000116 020130 1$: 49 017574 000137 037746 38: 4% 017546 45 017550 46 017556 47 017564 48 017572 c~c1 RS 001003 000412 116060 000140 000116 2$: 116060 000134 000117 016060 000130 000120 000761 ‘BR IF YE ;SEE IF SWO SET :BR IF SET - READ ONL ;READ/WRITE SELECTION DIVISOR :GET SELECTION VALUE :DETERMINE IF READ OR WRITE :BR IF READ sSELECT WRITE DATA COMMAND :SELECT ADDRESS 24 RS RS.SNCODE (RO) $SRMDA (RO) , snssc<no> $RMDC (RO) . SNCYL (RO) BIT #SSE], SRMOF (RO) ;1S °SSEI' STILL SET ? DEC $SEC(RO) TST BEQ RANDOM RANCYL BNE 18 38 :CYLINDER NUMBER :BR IF NOT sJF SO, THEN BACKUP ONE SECTOR TO REFLECT THE *PROPER ADDRESS TO BE ACCESSED WHEN READING OR :WRITTING THE NEXT SEQUENTIAL SECTOR. EgeBLE RANDOM ADDRESS SELECT ? +2 (RO) $OPERC éS }?ISOTHE FIRST OPERATION ? ST BEQ $OPERC (RO) 2 s1S THIS THE FIRST OPERATION ? :BR IF YES MOV JSR R4 #SNSEC PC,CKLMTS sGET INDEX TO SECTOR ADDR STORAGE IN DPB :60 CHECK DISK ADDRESS LIMITS :BR IF NOT AT END OF SEQUENTIAL ADDRESSING JMP RANS]2 ;GO CHECK FOR RANDOM WORD SIZE ST 000050 38 017526 RS ? :LOCKED Ig READ ONLY MODE ADD MOVB MOV MOV BEQ 005760 37 017522 SWAB BIC PC.GENPAR 38: ;2 017514 35 017514 36 017520 002172 JSR BR MOVB MOVB MOV B8R 38’ sRESET SECTOR ADDRESS MINSEC(RO),SNSEC(R0) :RESET TRACK ADDRESS MINTRK(RO).SNTRK(RO) ;RESET CYLINDER ADDRES3S MINCYL (RO) SNCYL (RO) ;RE-CHECK FOR BSF € SSF_TRACKS 18 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 17 J 8 SE@ 0100 MAIN PROGRAM ;GENERATE A RANDOM CYLINDER ADDRESS BETWEEN VALUES °'MINCYL' & °'MAXCYL' 5 3 017600 016005 5 017610 001407 000126 & 017604 026005 000130 6 017612 7 017616 8 017620 166C05 005205 004737 000132 000134 000134 032014 20 017660 066005 000134 %} 017664 110560 000117 sz 25 017670 26 017674 27 017700 28 017702 29 017706 016005 026005 001407 166005 005205 000136 000140 000140 30 017710 004737 032014 31 017714 066005 000140 %% 017720 110560 000116 40 017742 2} 017746 012704 004737 000404 004737 1$: ADD MoV ;GET MAXIMUM CYLINDER ADDRESS MINCYL(RO),R5 :'MINCYL® AND °*MAXCYL' THE SAME ? MINCYL(RO) ,RS R5 PC,GETREM ,GET NUMBER OF ALLOWABLE CYLINDERS : INCREMENT DIFFERENCE TO USE AS DIVISOR .bET THE RANDOM AUGMENT 1$ MINCYL(RO) RS R5,SNCYL (RO) :BR_IF THEY ARE :NCW CYLINDER ADDRESS sSTORE CYLINDER ADDRESS IN DPB ;GENERATE A RANDOM TRACK ADDRESS BETWSEN VALUES °'MINTRK®' § °'MAXTRK® RANTRK: MOV CMP BEQ suB INC JSR MAXTRK(RO) ,RS ,RS MINTRK(RO) 1$ MINTRK(RO) ,RS RS ;GET MAXIMUM TRACK ADDRESS ;'MINTRK® AND °'MAXTRK' THE SAME ? :BR_IF THFY ARE ;GET NUMBER OF ALLOWABLE TRACKS s INCREMENT DIFFERENCE TO USE AS DIVISOR ADD MovBe MINTRK(RO) ,RS RS, SNTRK (RO) :NEW TRACK ADDRESS :STORE TRACK ADDRESS iN DPB RANSEC: MOV CMP BEQ sus INC MAXSEC(RO) ,RS MINSEC(RO) ,RS 1$ MINSEC(RO) ,RS R5 18: PC,GETREM ;GET THE RANDOM AUGMENT ;GENERATE A RANDOM SECTOR ADDRESS BETWEEN VALUES 'MINSEC' & °'MAXSEC’ 1$: 000137 000116 020130 037024 017600 JSR ADD MovBe PC,GETREM MINSEC(RO) RS RS, SNSEC (RD) ;GET MAXIMUM SECTOR ADDRESS ;'MINSEC® AND °'MAXSEC®' THE SAME ? :BR_IF THEY ARE ;GET NUMBER OF ALLOWABLE SECTORS : INCREMENT DIFFERENCE TO USE AS DIVISOR :GET THE _RANDOM AUGMENT :NEW SECTOR ADDRESS ;STORE SECTOR ADDRESS IN DPB MoV JSR BR JSR 2$: JMP #SNSEC R4 PC,CKLMTS 23 PC,SRAND RANCYL sGET INDEX TO SECTOR ADDR STORAGE IN DPB ;G0 CHECK DISK ADDRESS LIMITS :BR IF NOT AT END OF SEQUENTIAL ADDRESSING sCYCLE THE RANDOM NUMBER GENERATOR ;G0 GENERATE NEW ADDRESS ;GENERATE A RANDOM BUFFER LENGTH BETWEEN 6 & THE VALUE IN °‘WRDCNT' 22 45 017746 46 017752 su8 INC JSR MAXCYL(RO) ,RS sMAKE SURE ADDRESS JUST GENERATED IS NOT °BSF' OR °'SSF' TRACK gg 36 017724 37 017730 38 017734 39 017736 BEQ 032014 }% 016005 026005 001407 166005 005205 004737 CMP 000130 9 017624 066005 000130 }? 017630 010560 000120 14 017634 15 017640 16 017644 17 017646 18 017652 19 017654 RANCYL: MOV 001462 001474 RANSIZ: MOV IS8T WRDCNT RS RANDWC ;GET _MAX WORD COUNT ;SELECT A_RANDOM WORD COUNT ? 49 017762 004737 032014 JSR PC,GETREM :DIVIDE BY MAX VALUE 47 017756 48 017760 50 017766 51 017772 013705 005737 001011 005205 020527 002003 BNE INC 000006 CMP 52 017774 004737 037024 gz 020000 000762 1$: 55 020002 56 020006 57 012704 004737 28: 000116 020330 BGE 23 RS R5,4#6 ;WORD COUNT LESS THAN 6 ? JSR PC,SRAND :BR_IF NO MOV JSR #SNSEC ,Ré PC,CHKWC sGET INDEX TO SECTOR STORAGE ;SEE_IF WORD COUNT IS TOO LARGE TO FIT ;IN REMAINDER OF TRACK. IF SO, THEN ADJUST B8R 2% :BR IF NOT s INCREMENT THE MAXIMUM WRD CNT RANS1Z ;CYCLE THE RANDOM NUMEER GENERATOR CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 17-1 SEQ 0101 MAIN PROGRAM 58 59 020012 60 020020 61 020022 62 020026 63 020030 64 020034 65 66 67 68 020040 69 020046 70 020050 71 020054 72 020060 ;z 020066 75 76 77 020070 78 020074 79 020100 122760 001005 010560 3$: 000377 gzge zg.sncooe<no> BIC #377.,RS MOV MOV #256. RS RS SWRDL (RO) 6.E 000400 000020 48: a3 :WORD COUNT TO FIT ON TRACK. ;WRITE OPERATION ? :BR_IF NO JWRITTING PARTIAL SECTOR ? :BR IF NO, ELSE, :WRITE AT LEAST ONE SECTOR ;WORD COUNT :GET A RANDOM PATTERN NUMBER 122760 000002 000114 RANPAT: CMPB BNE 020070 000207 #2,SNCODE (RO) T RANXI JSR PC,GETPAT RTS PC MOVB 000115 MOV RANXIT: 177777 000122 RS.SNPATC(RO) #-1,$NEXT (RO) sWRITE OPERATION ? :BR_IF NO :GET PATTERN CODE :MOVE PATTERN CODE TO CONTROL BLOCK gE;U:fiRAMETERS SELECTED INDICATOR ;ROUTINE TO SELECT A PATTERN 012705 80 020102 81 020106 82 020110 83 020114 86 020124 87 020126 000002 000114 sSELECT PATTERN MOV PATTERN,RS USE INDEXED PATTERN JSR JSR PC,SRAND PC.GETREM gggLEoggE RANDOM NUMBER GENERATOR GETPAT: MOV TST 001472 037024 032014 000207 #16. RS PATTERN 000020 001472 BEQ 1$: 2s: BR TST BEQ ASL RTS 18 28 RS GETPAT RS PC ENABLE RANDOM PATTERN SELECTION ? ; YES NO ;WAS PATTERN ZERO SELECTED ? :BR IF YES :MAKE CODE INTC TABLE INDEX SEQ 0102 CZRNAAO RM80 PERF EXER MACRO V04.00 14~-JAN~82 15:16:58 PAGE 18 MAIN PROGRAM NONAIN) PN = = ed cd =D o wd b od b NS AN = O V00 ~NO VIS NN = OV 00N NS win = ;THIS ROUTINE IS USED T2 CHECK ADDRESS LIMITS BEFORE THE NEXT COMMAND +1S PERFORMED. THIS WILL PROTECT AGAINST WRITTING ON CUSTOMER DATA BY :CHECKING FOR MINIMUM ADDRESS VALUES. ALSO, IT WILL CHECK FOR MAXIMUM QREfESS LIMITS TO LOOK FOR AN END TO THE SEQUENTIAL ADDRESSING. MOV MOV JSR BR :RO 4 020130 020132 020140 020142 020150 020156 020160 020166 020172 020174 116014 000002 000130 000130 000001 000002 000134 000134 000140 000001 29 020204 30 020206 31 020212 32 020216 33 020224 34 020226 35 020232 36 020240 37 020244 38 020252 39 020254 40 020260 41 2$: 222 :POINTER TO SECTOR STORAGE ($SEC OR SNSEC) IN DPB sCALL ADDRESS LIMITS ROUTINE ;RETURN HERE IF NOT END OF SEQUENTIAL ADDRESSING :ELSE, RETURN HERE TO RESET DISK ADDRESS CMP 8GE MOV CMPB BGE Mov8s CMPB BGE mMovse RO,R4 sPOINT TO SECTOR STORAGE POINT IN DPB OIS CYLINDER ADDRESS BELOW MIN. ? Z(Rk) HINCYL(RO) HINCYL(RO) 2(R4) 1§R4),MINTRK (RO) N sRESET CYLINDER TO MIN. IF NOJS TRACK ADDRESS BELOW MIN. ? :BR 2 MINTRK(RO) ,1(R4) LRESET TRACK TO MIN. §24).HINSEC(RO) s1S SECTOR ADDRESS BELOW MIN. ? :BR IF NO (R4) ¢RESET SECTOR TO MIN. MINSEC(RO), ;LOOK FOR MAXIMUM LIMITS AND END OF SEQUENTIAL ADDRESSING 121460 003404 116014 105264 126460 003407 116014 116064 062716 000422 42 020262 43 020266 44 020270 45 020274 46 020276 47 020304 48 49 020306 50 020314 013746 005316 53 020326 000207 ~ 18: PC,CKLMTS ;DPB ADDRESS DPB ADDRESS BEFORE CALLING THE ROUTINE POINTER TO SECTOR STORAGE BEFORE CALLING THE ROUTINE CKLMTS: ADD 000140 NO 26 2 28 020200 060004 #DPB,RO #POINTER R4 001742 026437 3s: 000136 000140 000001 000001 000140 000134 000002 000002 000132 4(8: 5$: 000001 000126 6$: 000002 7$: 00143C 001426 000002 001430 000001 000001 ggk)MAXSEC(R0O) ;1S SECTOR ADDRESS AT MAXIMUM ? ?lngC(RO). (R&) #2,(SP) 9s FE1,=(SP) (SPS 1(R4) , TRKLMT 48 8s: 9%: :BR IF ;RESET SECTOR ADDRESS s INCREMENT TO NEXT TRACK ADDRESS OIS TRACK ADDRESS OVER MAXIMUM ? 1(R4),MAXTRK (RO) N B8R IF 63 MINSEC(RO), (R4) SRESET SECTOR _ADDRESS sRESET TRACK ADDRESS HINTRK(RO) 1(R4) ) ; INCREMENT TO NEXT CYLINDER ADDRESS 2(R4 RO)’ ;1S CYLINDER ADDRESS OVER MAXIMUM ? JMAXCYL( 2§R4) 2(R4) ,(SP)+ 8$ 000002 000001 CMPB BLE MOV INCB CMPB BLE MOVB Movs INC CMP BLE ADD BR 2(R4) ,FE1 9s 1(R&) .M 48 PC :BR IF NO :ADJUST RETURN TO RESET DISK APDRESS PARAMETERS sCHECK NOT TO READ OR WRITE Bav SECTOR TRACK ;GET FIRST FE CYLINDER (LAST CYL+1) :LOOK AT LAST USER CYLINDER ;ARE WE ON LAST USER CYLINDER ? :BR IF NO ég }HISEEHE BAD SECTOR TRACK ? sCHECK NOT TO READ OR WRITE SKIP SECTOR FILE TRACKS ? QSEIUE gN 1ST FE CYLINDER ARE WE ON TRACK 0 OR 1 ? ;BR_IF YES :RETURN GE SEQ 0103 CZRNAAO RM80 PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE 19 MAIN PROGRAM *DRIVE THAT IS TO DO A DATA TRANSFER ON THE MAXIMUM TRACK OF THE MAXIMUM WORD :CYLINDER. IF THE CALCULATED MAXIMUM WORD COUNT, EXCEEDS THE DESIRED THAT SO CHANGED, IS COUNT WORD DESIRED THE :COUNT (CONTENTS OF RS), THEN :THE WORD COUNT WILL NOT CAUSE A TRACK OVERFLOW DURING THE TRANSFER. sCALL: Mov MOV JSR RETURN #DP8,R0 #POINTER,R4 PC,CHKWC :DPB ADDRESS ;POINTER TO SECTOR STORAGE ($SEC OR SNSEC) IN DPB sCALL CHECK WORD COUNT ROUTINE sRETURN WITH RS CONTAINING THE DESIRED WORD COUNT DPB ADDRESS BEFORE CALLING THE ROUTINE POINTER TO SECTOR_STORAGE BEFORE CALLING THE ROUTINE DESIRED WORD COUNT BEFORE CALLING THE ROUTINE 020330 060004 26 27 28 020366 29 020374 30 020376 31 020404 32 33 020406 BNE CMPB 001424 000134 ANINIPNIN) N 24 020364 25 ADD TST8 000140 000136 W N =2 OV NV b b amd b cd cd b b d b NN 22O V00NN S W :THIS ROUTINE IS USED TO CALCULATE AND CHECK THE WORD COUNT FOR THE 001004 000132 001426 RO.Ré sPOINT TO SECTOR STORAGE POINT IN DPB MINSEC(RO) sALLOW SPIRAL RD/WRT ? :BR IF NO 2$ MAXSEC(RO) ,SECLMT ;ALLOW SPIRAL RD/WRT ? 2% :BR IF NO MINTRK(RO) ;ALLOW SPIRAL RD/WRT ? IF NO :BR B8R 1$ 6ALLOU SPIRAL RD/WRT ? ] TRKLMT (RO) , RK MAXT N ::BR 18 sWHEN SPIRAL RD/WRT IS ALLOWED, THEN CHECK :TO MAKE SURE YOU DO NOT SPIRAL OVER MAXIMUM 026064 001016 111404 016046 160416 000126 000002 000132 000001 000136 000400 18: 2$: 3s: 4s %XTRK(RO) ,1(R4) R4 (R4) :GET STARTING SECTOR ADDRESS R4 :CLEAR Ré :ADD 1 SECTOR OF WORDS TO R4 :DgNEFALb SECTORS YET ? #256. R4 (SP) (SP)+ RS ,R4 000416 46 020442 013746 5% R4 RS 53 001430 4$: 000002 001426 000001 000207 p} ¥ :ON MAXIMUM TRACK ? F NO ,=(SP) SEC (RO) :GET MAXIMUM SECTOR MAX R4, (SP) :GET NUMBER SECTORS TO BE XFERD 33 2? 020440 s TRACK ON MAXIMUM CYLINDER :ON MAXIMUM CYLINDER ? :BR IF NO MAXCYL (RO),2(R&)° FE1,-(SP) (SP 2(R4),(SP)+ 5% TRKLMT ,-(SP) (SP) -(SP) 1(R4), (SP) (gP)+.(SP)+ PC N IF ¢BR ;RESTORE STACK ;TOO MANY WORDS FOR TRACK ? :BR IF NO :YES, CHANGE WORD COUNT sGET FIRST FE CYLINDER (LAST CYL+1) sLOOK AT LAST USER CYLINDER ;ARE WE ON LAST USER CYLINDER ? :BR_IF NO :GET LAST TRACK sLOOK AT NEXT TO LAST TRACK sPUSH STALK sGET CURRENT TRACK 21S 1T TRACK BEFORE BAD SECTOR TRACK ? sBR IF YES (DON'T ALLOW SPIRAL TO BAD SEC TRK) SEQ 0104 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 20 2REIINE TO GET THE PREVIOUSLY SELECTED PARAMETER VALUES 0 O D 0 l 15,1V, [V, 002140 177701 000006 000027 000027 000114 000012 000010 000034 N 160354 000114 000114 002076 000151 000024 000060 000027 - OO = Db b ed - H W 000100 == bbb b b ONION) = 23 020572 46 020746 000207 MOVB BI(8 8178 BNE Mov MOV 1$: 000032 2$: 000002 000024 000115 000030 000001 000024 000002 000022 000004 000110 B8R JSR MOV Mov8 4$: R5,=(SP) $PACK (R0) :DPB_ADDRESS :GENERATE THE PARAMETERS :LOAD THE PARAMETERS JUST GENERATED :SAVE R5 :'s' OR ‘W' COMMAND FOR THE DRIVE ? IF YES sSAVE CURRENT PARAMETERS SRMCS1(RO), SPREVO (RO) 48 #~C76,$PREVO(R0) 16. SNCODE (RO) BR :STRIP GO,AND IE BITS ;SEE IF NEXT OPERATION IS READ OR WRITE ‘3R IF EITHER $CYL(RO) ,$PREVA: 2 (RO) 3§EC(RO)“$PREVA(R0) PC,READDR BIT BNE #SW06,3SWR :LOAD RS’ FOR USE AS TABLE INDEX S$NCODE (R0) RS s COMMAND CODE COMTBL (RS) ; SCOMND (RO) NEW COMMAND A WRITE CHECK DATA ? :IS QUCKD $COMND (RO) ;BR IF NO #60,$PREVO(RO) gsSIFREVIOUS COMMAND A WRITE DATA ? 43 #RDDAT , SCOMND (RO} #4,$CODE (RO) YES :CHANGE WRITE CHECK TO READ DATA COMMAND ;CODE NUMBER CHANGED TO READ DATA SNPATC (RO) ,SPATTC(RO) SNSEC(RO), $SEC (RO) SNCYL(RO),.$CYL (RO) 8IT8 BEQ ADD #1,$CODE (RO) MOV MOV NEG MOV RTS sCYLINDER A""RESS : TRACK ADDRESS sSECTCR AUUNESS SUITCHsb SET ? 4s sBR IF ETY (RO) ;LOGICAL CODE FOR OPERATION $CODE , S$NCODE (RO) Movs MOV MOV ;v ;SAVE STARTING CYLINDER ;SAVE STARTING SECTOR AND TRACK :GET THE DECREMENTED SECTOR AND TRACK ADDRESSES (SP)+,$PREVA+2(RD) (SP)+.$PREVA+1(R0) (SP)+.$PREVA(RO) CMPB BNE CMPB BEQ mMova Movs 3s: #DPB,RO PC,GENPAR PC,LODPAR Movs Mov8 MOVR MOVB 000002 000002 000171 000004 000004 BNE 000032 023254 \n wvivn TST8 020562 21 020566 32 020642 33 020650 34 35 020656 RETURN LODPAR: MoV 000026 [=4 o n NN NININININD 8000O°OOOOOO o (elelelele) [=1=/ NN —d D and b b N—=-O0OO ~NOAVIS b b ed b b NN = O 00NN NS W= MAIN PROGRAM sPATTERN CODE sTRACK AND SECTOR ADDRESSES :CYLINDER ADDRESS #256. ,$5SEC (RO) ; INITIAL VALUE OF SECIOR SIZE (A 3 #2,8SSEC(RO) ;HEADER OPERATION ? :BR IF NOT *ADD HEADER SIZE SWRDL (RO), SWCNT (RO) ;GET WORD COUNT AND FOR 'RELBUF' ROUTINE HOLD WORD COUNT SWRDL (RQ) ,“$HLDWC (RO) ;MAKE IT 2°'S COMPLEMENT SWCNT (RO) (SP)+,R5 *RESTORERS PC *RETURN CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 21 SEQ 0105 ;ROUTINE TO COMPRESS A LIST CALL: 000002 020750 020762 = OV N PIN) CMPRES: MOV BEW TST BR RTS 1$: 2(R1),(R1) ;COMPRESS THE TABLE IN R1 : JSR : RETURNZ2 : 020764 010146 SPOTCK: 000146 177777 1%: 2%: 177777 000002 000002 ~ (V] ~ W (=] (=] uuuw-a—agoo b b wud [ {=T=1,NF 1,¥7. ¢ 1 N1 b b b b e b b cd wnh e e ) e —p — [e]lelelalelelele] AONLALALNLRNLNININ 000004 4«8 0 062766 012601 000207 001504 177777 000002 RETURN1 MOV MOV ADD CLR TST 8EQ INC JSR 000003 000003 VIWVAVAVWA S BN ==OY ;COMPRESS LIST STARTING AT THIS ADDRESS sCALL: 001436 023254 WV #ADDRS ,R1 PC,CMPRES 18 (R1)+ CMPRES PC :BR WHEN ZERO FOUND ¢ INCREMENT R1 :CONTINUE COMPRESSING TABLE :RETURN ;ROUTINE TO DETERMINE OF ERROR IS AT A LOCATION ON THE DISK DEFINED ;IN THE BAD TRACK/SECTOR TABLE FOR THE DRIVE. 001436 000112 Al MOV JSR RETURN b b b b d e b b b b VNS WN SOV NO VIS WA MAIN PROGRAM 001342 000002 PC,SPOTCK :PARAMETER "MESSAGE' 1S 0 R1,=(SP) #$BDSEC ,R1 RO,R1 DEC2 $SSENB(RO) 2 DEC2 PC,READDR (R1), (sP)+ 63 3s (SP)+ 38: (MPB 4$: CMPB ;ERROR AT AN ADDRESS IN TABLE :NO TABLE ENTRY FOR ERROR ADDRESS OR (s (SP)+,3(R1) 73 #=1,2(R1) 5$ (SP)+ 9% (SP)+,2(R1) 8s 9 (SP)+ (SP)+ #4 R1 ::PUSH R1 ON STACK : INCREMENT FOR BAD SECTOR TABLE :ADD THE BLOCK'S STARTING ADDRESS :ASSUME DECREMENT SECTOR ONCE gIDIERzgR OCCUR DURING SKIP SECTORING ? :DECREMENT SECTOR TWICE :DECREMENT THE SECTOR/TRACK ADDRESS ;ON 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 EOUAL ? ;ALL BAD SECTORS :BR IF NO :ADJUST STACK AND sCHECK 'MESSAGE' : COMPARE THE SECTOR ADDRESS :BR IF NOT EQUAL sCHECK "MESSAGE’ :CLEAR OFF THE STACK ; INCREMENT THE STACK POINTER (r1) :G0 TO THE NEXT LOCATION IN THE TABLE :EMPTY ENTRY OR TERMINATOR ? #2,2(SP) : INCREMENT THE RETURN (SP)+,R1 ::POP_STACK INTO R1 sRETURN 108 18 MESSAGE 118 #-1,BADSEC PC :BR IF YES sTRY NEXT SECTOR :PRINT THE ERROR ANYWAY ? :BR_IF NOT sSET THE INDICATOR FOR THE IDENTIFICATION LINE SEQ 0106 CZRNAAQ RMBO PERF EXER MACRO Vv04.00 14=-JAN-82 15:16:58 PAGE 22 t.tttt'ttt'tttttQtt't'ttt't'tttttt.t".Q.Q.QQQ..QQ.Q..Q'.'QQ.Q. SBTTL ERROR MESSAGE GENERATION ROUTINES ttttfitttt.titttttttQt't"t'tttttt"'ttitltt.tt.'fi."..'..'.".' 22 QO NNNOOWNWNES W NONNONNO SOOI b b b d wnd b e b b end and b e b POINON) b cod cnd b e b 032777 001402 cd e e [[SLETNTNT VT NT N1 VT NT N N1 NN ] ;PRINT LINE 1 OF ERROR MESSAGE: LOYH:MM:SS [elelelolelelalelelelol=l] PININ N =2 OO =D b NV b b wnd b b o b NN = O b 00NN S W)= MAIN PROGRAM 002000 160012 LINE1: 001176 020000 157776 1$: 001203 001203 28: 001203 000207 075234 38: BIT #SW10,aSWR :SWITCH 10 SET ? ss SEXIT BEQ TYPE BIT BEQ DISPLY DISPLY 18 ,S$BELL #SW13,asuR 28 ,SCRLF . $CRLF DISPLY DISPLY JSR DISPLY $CRLF .SCRLF PC,STIME ,BLNKS1 B8R RTS PC ‘BR IF NOT ‘RING THE BELL LINHIBIT TYPEOUT ? :BR IF NOT *CR-LF ‘CR-LF : CR=LF ‘CR-LF ‘TYPE rne rxne ‘TYPE 1 B *RETURN t rvpe DESCRIPTION sPRINT LINE 2 OF ERROR MESSAGE s "PRSNT COMMAND = XXXX PREV COMMAND = XXXX' 23 '« ERROR AT BAD TRACK/SECTOR' S°DRV RMCST RMCS2 RMDS1 RMER1T RMMR2 RMER2 RMEC1 _ RMEC2' : "RMWC RMBA RMDA RMAS RMLA RMDB RMMR1 RMDT' S'RMSN RMOF RMDC RMCC STATUS' RMCS3' (RH70 ONLY) S'RMBAE *'BUS ADDRESS OR WORD COUNT NOT CONSISTENT® 'RHBA = XXXXXX RMWC = XXXXXX* ACTUAL NMBR WRDS XFRD = XXX' = XXXX wRD CNT :'BUFFER ADR = XXXXXX LINEZ: v N N - L= n 4 N 38 021232 39 021234 40 021242 41 021246 43 021256 44 021262 45 021264 46 021272 47 021276 48 021302 49 50 021310 51 021312 g% 021316 D -~ N AV, 54 021324 550 6 56 021330 CLR R4 *WORKING REGISTER $SRMCST(RO) ,R4 -GET THE OPCODE CLR 073272 002140 177701 021310 021360 021354 073312 000027 021354 8IC JSR TST #*C76,R4 PC,1$ 5% MoV #LINZP,LS SAVE ONLY SIGNIFICANT BITS TYPE THE FIRST MNEMONIC SEE IF MNEMONIC ENTRY FOUND *BR IF NOT *ADDRESS OF °‘PREVS COMMAND = ' MSG 8IC JSR #°C76,R4 PC,18 *SAVE ONLY SIGNIFICANT BITS STYPE THE PREVIOUS MNEMONIC CLR RS BEQ 33 MOVB 2% :CLEAR MESSAGE ADDRESS STORAGE #LIN2C 48 8EQ 1% (s MOV MOVB 177701 310 002104 ::PUSH R3 ON STACK 2 :PUSH R4 ON STACK ..PUSH RS ON STACK :CR=LF Mov 001203 021354 002104 DISPLY R3,=(SP) R4 ,-(SP) RS,=(SP) ,SCRLF MOV MOV B8R CMPB8 LINE2A $PREVO(RO) ,R¢ :PREVIOUS OPERATION CODE LINE2A *CONT INUE OPTBL (RS) ,R& *LO0K FOR THE OPCODE TST8 OPTBL (RS) BR 2% 8MI INC ADDRESS OF 'PRSNT COMMAND = ' MSG 3% RS *CLEAR THE TABLE INDEX *BR WHEN OPCODE COUNT EQUALS OPCODE ;LOOK FOR END OF TABLE ‘BR IF END JINCREMENT THE POINTER *CONTINUE = NOT END OF TABLE SEQ 0107 CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 22-1 ERROR MESSAGE GENERATION ROUTINES 57 021332 3s: 006305 002124 021360 021360 000207 005737 001404 gyunnu-has: RO ENB BEDENEDPWNW 104414 ? RIONO VIV S b b o LINEZB +SCRLF LIN2S -SCRLF DH14 BLNKS1 ,DH15 #DT15,RS PC,.3$ ,DH16 #DT16,RS PC,3$ $CPUOP,-(SP) #4¢174000, (SP) #30000, (SP)+ 1$ 17 18: 012605 060016 ;RETURN TO MAIN ROUTINE :BR IF NOT :CR=-LF :EgROR ADDRESS DEFINED AS BAD AREA :STANDARD RM REGISTER HEADER sTYPE 1 BLANK ;PUT _THE DRIVE NUMBER ON THE STA(K :TYPE DRIVE NUMBER sTYPE 2 BLANKS sREGISTER INDEXES sPRINT THE REGISTERS ;PRINT THE OPTIONAL REGISTERS ? :BR IF NOT :SECOND DATA LINE sPRINT THEM sTHIRD DATA LINE sPRINT THE REGISTERS sCHECK THE CPU (RH) TYPE sLEAVE THE_CPU BITS :SEE_IF RH70 ;B8R [ IF NO #DT17,R5 sOPTIONAL FOURTH DATA LINE sPRINT THE REGISTERS PC,3$ #81T6,$TATUS(RO) :DATA ERROR ? ; F _NOT 2% ,=(SP) sTRANSFER WRD CNT (RO) DL $WR , (SP) sADD REMAINING WORD COUNT (RO)JC SRM (SP) sCONVERT TO AN BYTE INCREMENT $8UF (RO) , (SP) sBUFFER _STARTING ADDRESS 5§P)0.$RHBA(R0) ;CORRECT BUFFER ADDRESS ? sBR IF YES 072150 POND b b i b ek O OO NOO N PC PC,3$ #5W05,3SWR 18 157504 *$CRLF 3 b and b b b wnd b wnd ) ;PRINT THE BAD SECTOR LINE ? 000006 002144 OONONONONONONOM o — e BADSE( 000020 002142 022324 sADDRESS OF ‘'PRESENT' OR °'PREVIOUS' MESSAGE sTYPE THE OPERATION MNEMONIC ;ADDRESS OF MESSAGE 072746 073226 021620 073044 073250 021620 001234 003777 030000 004737 STYPE IT 0 LINE2B: 000016 ;ADDRESS OF ASCII TEXT TABLE sADD THE INDEX 5%: PC,LINDEC 0 000040 sSHIFT INDEX sSHIFT THE INDEX sSHIFT THE INDEX 0 (SP) DRVN= O, b NINLNONONY ST NT T NN NN LN NN 8 VISR =O Voo~ (elelelelalelelololelolelololele] NN=O b b cmd wd wnd e b e b —d —b b b RS RS RS #MNTBL , 5% R5,5$ 48: 001203 073114 073264 021620 000100 b b b MoV LINE2A: 001342 ASL ASL ASL 2$: 3s: PC.LINE3D PC.LINEG (SP)+,RS (SP)+ R4 (SP)+ ,R3 PC (RS)+,~(SP) RO, (SP) :'gUSrADDRESS AND WORD COUNT ARE NOT CONSISTENT' sCR=L sPRINT LINE 3D OF ERROR MESSAGE ;PRINT LINE & OF ERROR MESSAGE ::POP STACK INTO RS ::POP STACK INTO R4 s ¢POP STACK INTO R3 sRETURN TO ERROR PROCESSING ROUTINE sPUT THE REGISTER INDEX ON THE STACK sADD DRIVE'S TABLE ADDRESS [elelelolelelela] LSLNT ST NN NN 1, ERROR MESSAGE GENERATION ROUTINES 017646 004737 005726 104414 005715 001365 104414 000207 MOV JSR TST 000000 023202 DISPLY 075233 4s: 001203 BN DISPLY a8(SP) ,=(SP) PC,LINOCT (SP)+ ,BLNKS? (RS5) 38 ,SCRLF PC sVALUE JTYPE IT :CORRECT THE STACK POINTER JTYPE 2 BLANKS ;AT END OF LINE ? :BR IF NOT JCR=LF :RETURN sPRINT LINE 3 OF ERROR MESSAGE PREV ADR s "ERROR AT CCC TT SS 104414 000517 LINE3: 073367 DISPLY BR ,LINM3 LIN3.1 ccc 17 S8 ;LINE 3 ENTRANCE sFINISH PRINTOUT sPRINT LINE 3A OF ERROR MESSAGE END CYL = CCC* s'START CyvL = CCC 104414 000514 LINE3A: DISPLY 073405 BR ,LINN3 LIN3.1 ;LINE 3A ENTRANCE ;FINISH ERROR LINE ;PRINT LINE 3B OF ERROR MESSAGE J'START CvL = C CC LINE38B: JSR 004737 DISPLY RTS 104414 000207 4 PC,LIN3.3 +SCRLF 021702 5 021706 6 7 8 9 0 021712 1 021720 5% 021722 004737 000137 LINE3C: JSR 022226 022260 JMP PC 2 3 164 021760 165 021764 166 021770 167 021774 168 022000 169 022004 PC,.LIN3.3 LIN3.4 ACTUAL CYL = CCC TRK = TT' ;LINE 3C ENTRANCE sFINISH MESSAGE sPRINT LINE 3D OF ERROR MESSAGE RMWC = XXXXXX* :'RMBA = XXXXXX 032777 001416 104414 000040 157234 LINE3D: ng ;SWITCH § SET ? #SW05,aSWR 18 :BR IF IT IS PC,LINOCY $CONVERT TO OCTAL AND TYPE IT :'RMBA = ° ,LINB3 ,~(SP) :BUFFER_ADDR REG CONTENTS (RO) BA $RM 073544 4 5 6 7 8 9 021756 0 1 ACTUAL cYL = CcC’ ;LINE 38 ENTRANCE ;PRINT LINE 3C OF FROR MESSAGE END CYL = CCC J'START CvL = € CC 1 2 3 END CYL = CCC LINW3 }5 T RMWC = ¢ ,~(SP) :WORD COUNT REGISTER CONTENTS (RO) WC $RM 001203 PC,LINOCT 1$: RTS ,$CRLF ;CONVERT TO OCTAL AND TYPE IT PC ;PRINT LINE 3E OF ERROR MESSAGE START TRK = TT s'START (YL = € CC 073445 000012 073564 LINE3E: DISPLY LINS3 MOV $CYL(RO) ,~(SP) CLR ,BLNKS LINST <(SP) JSR DISPLY DISPLY PC,LINDEC START SEC = SS' :*START (YL = ° sMOVE CYL TO STACK sTYHE IT IN DECIMAL sTYPE 2 BLANKS oTM SEQ 0108 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 22-2 SEQ 0109 CZRNAAQO RMB0 PERF EXER MACRO V04,00 14-JAN-82 15:16:58 PAGE 22-3 ERROR MESSAGE GENERATION ROUTINES 170 022006 116016 000011 MOVB $TRK(RO),(SP) 104416 104414 DISPLY DISPLY ,BLNKS? ,LINSS3 171 022012 004737 023234 174 022026 175 022030 176 022036 005046 116016 004737 000010 };g 022044 000207 172 022016 173 022022 075233 073600 023234 032777 000040 185 022056 104414 073535 001420 157100 004737 104414 000207 023202 001203 004737 004737 104414 004737 104414 004737 104414 004737 104414 005046 116016 004737 104414 005046 116016 004737 104414 000207 DISPLY ,LINDA3 JSR PC,LINOCT 18: JSR DISPLY RTS (073445 004737 000207 023234 JTYPE IT MOV MOVB JSR DISPLY CLR MOVB JSR DISPLY RTS LIN3.3: DISPLY MOV - ? PREV ADR = CCC TT ss' ,~(S (RO) +2 $PREVA :DECREMENT TRACK AND SECTOR ADDRESS STYPE IT IN DECIMAL :PRINT * T° *TYPE TRACK IN DECIMAL JPRINT * S° *TYPE SECTOR ADDRESS *PRINT *PREV ADDR' P) :PREVIOUS CYLINDER sTYPE IT IN DECIMAL SPRINT * T' “MAKE ROOM ON THE STACK SPREVA+1(R0),(SP ) PC.LINDEC .S Z(sP) (SP) SPREVA(RO), PC,LINDEC ,S$CRLF PC s*START CYL = CCC 104414 = °* PC.LINOCT ,S$CRLF PC PC.LINDEC T Z(SP) 000032 023234 001203 :"RMDA .'R" 023234 073402 023234 073423 :BR IF NOT ;TYPE 2 BLANKS DISPLY ,BLNKS? DISPLY .LINCA3 C EP?;ED§§IRED CYLINDER ADDRESS ON THL STACK (RO) ,~(SP) $RMD MOV JSR DISPLY CLR 000033 JSWITCH 5 SET ? (RO) , - (SP) :PUT SECTOR/TRACK ADDRESS ON THE STACK $RMDA MOV PC,READDR PC.LINDEC T PC,LINDEC .S PC.LINDEC ,LINP3 226 022232 016046 000034 207 022236 004737 023234 228 022242 1044614 073461 229 022246 016046 002174 230 022252 5;} 022256 18 LIN3.1: JSR JSR DISPLY JSR pISPLY JSR pISPLY 5%2 225 022226 #SWS,aSWR 8EQ 023254 023234 073402 023234 073423 023234 073426 210 022154 016046 000034 215 022176 216 022202 217 022206 218 022210 219 022214 220 022220 555 022224 PC :'CCC TT SS }3% 214 022172 RTS LINE3F: BIT 186 022062 016046 002146 187 022066 004737 023202 188 022072 104414 075233 189 022076 104414 073524 190 022102 016046 002174 211 022160 212 022164 213 022170 sCLEAR STACK sSECTOR ADDR TO STACK sTYPE IT IN DECIMAL sTYPE 2 BLANKS s 'START SEC = °* :PRINT LINE 3F OF ERROR MESSAGE :'RMDA = XXXXXX RMCA = XXXXXX' 183 022046 200 022120 201 022124 202 022130 206 022134 207 022140 208 022144 209 022150 JSR -(5P) S$SEC(RO),(SP) PC,LINDEC DISPLY ,S$CRLF 180 }g% 191 022106 192 022112 }gz 022116 sTRACK TO STACK sTYPE IT IN DECIMAL CLR MOVEB 177 022040 104414 001203 184 022056 PC,LINDEC JSR END CYL = CC LINS3 sPREVIOUS TRACK ADDRESS :TYPE IT IN DECIMAL SPRINT * §° *MAKE ROOM ON THE STACK *PREVIOUS SECTOR DDRESS STYPE IT IN DECIMAL cl :LINE *38 & 3C' ENTRANCE )P ,=(S $PREVA+2(R0 JSR PC,LINDEC JSR RTS PC,LINDEC PC sPREVIOUS CYLINDER sTYPE IT IN DECIMAL sPRINT ‘END CVYL® DISPLY ,LINEN3 (RO) , = (SP) sPRESENT CYLINDER $RMDC MOV sTYPE IT IN DECIMAL SEQ 0110 CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGF 22-4 ERROR MESSAGE GENERATION ROUTINES %gz ;'ACTUAL CYL = CCC 235 022260 104414 073475 236 022264 013746 101174 237 022270 042716 010000 238 022274 004737 023234 239 022300 104414 073514 LIN3.4: DISPLY MOV BIC JSR DISPLY 240 022304 241 022306 262 022312 243 022316 gzg 022322 005046 116016 004737 104414 000207 CLR MOVB JSR 002147 023234 DISPLY RTS 001203 032760 001427 104414 000100 000016 LINE4: 073614 253 022344 254 022350 004737 104414 023202 073632 256 022360 004737 023234 261 022402 262 022406 004737 104414 023234 001203 BIT BEQ DISPLY MOV 252 022340 016046 000006 PC.LINDEC STYPE IT IN DECIMAL PC,LINDEC ,S$CRLF STYPE IT IN DECIMAL *CR-LF *RETURN 104414 162760 013746 073700 000002 001234 002144 LINES: 022726 001012 1€2760 030000 000006 002144 284 022500 001403 162760 017046 004737 104414 000002 002144 023202 073716 002144 1$: CMP #30000, (SP)+ :SEE IF RH70 SUB #4 , SRMBA (RO) BACKUP THE BUFFER POINTER 016046 066016 005046 016046 000022 291 022532 004737 032040 292 022536 012616 293 022540 104414 073736 ‘BR IF NO JSR PC.LINOCT BEQ SUB MOV DISPLY 002142 000020 287 022514 288 022520 289 022524 290 022526 1% #81T11,$RMCS3(ROS MOV ADD CLR MOV 023202 , :LEAVE THE CPU BITS (SP) 240174000 8IT MOV 004737 WORD POS = XXX' :PRINT "EXPCTD DATA® :BACK THE ADDRESS UP :CHECK THE CPU (RH) TYPE 285 022504 016046 002162 286 022510 RcCEVD DATA = XXXXXX ,LINDS #2,SRMBA(RO) $CPUOP,-(SP) BNE 276 022452 032760 004000 002212 283 022474 PC DISPLY sUB MOV BIC 272 022432 042716 003777 277 022460 278 022462 279 022470 RTS ‘*ACTUAL NMBR WRDS XFRD = ° ,LINX& :VALUE IN BUFFER ADDR REGISTER A ,~(SP) (R0) $RMB :SUBTRACT STARTING ADDRESS ~ (SP) $BUF (RO), *CONVERT INTO A WORD COUNT (SP) J'EXPCTD DATA = XXXXXX %g? 275 022444 JSR DISPLY L :WORD LENGTH SIZE(WORD COUNT) (RO) ,~(SP) $WRD :PRINT LINE S OF ERROR MESSAGE 265 274 0226442 :BUFFER ADDR ON STACK JSR DISPLY MOV SUB ASR 273 022436 (RO ,-(SP) $8UF PC.LINOCT ,LINS4 104414 073646 257 022 258 022370 016046 002144 259 022374 166016 000006 260 022400 006216 18: :DATA ERROR ? #81T06,$TATUS (RO) NOT IF :BR 1$ S "PRINT BUFFER® ,LINMG JSR DISPLY MOV 000207 ACTUAL NMBR WRDS XFRD = XXX' WRD CNT = XXXX *CONVERT TO OCTAL & PRINT ‘PRINT 'WRD CNT' 255 022354 016046 000020 268 022414 269 022420 271 0226426 ,SCRLF PC SYBUFFER ADR = XXXXXX %2; sgz 022412 :PRINT 'ACTUAL' ,LINA3 ACTUAL CYLINDER CYLNDR,=(SP) ‘CLEAR THE FORMAT BIT #8IT12. (SP) STYPE IT IN DECIMAL PC,LINDEC ‘PRINT TRACK ,LINT3 ‘CLEAR STACK WORD Z(sP) :PUT TRACK ON STACK SRMDA+1(R0),(SP) IN DECIMAL IT ;TYPE PC,LINDEC :PRINT LINE 4 OF ERROR MESSAGE 246 2649 022324 250 022332 251 022334 TRK = TT° ;SEE WHICH WORD HALF DIDN'T COMPARE .1F EQ, EVEN HALF DIDN'T COMPARE 1$ -BACKUP THE BUFFER POINTER AGAIN #2,.8RMBA(RO) ;'EXPCTD® DATA = AT THE BUFFER LOCATION aSRMBA (R0) , = (SP) ,LINBS sTYPE IT *PRINT °*RECEVD DATA® $RMDB(RO) ,-(SP) :RECEVD DATA FROM BUFFER JSR PC.LINOCT STYPE IT JSR MOV PC,$DiV (SP)+, (SP) ‘DIVIDE WORDS XFERED BY SECTOR SIZE ‘MOVE REMAINDER UP THE STACK DISPLY C (RO) ,-(SP) SRMJ (RO) . (SP) $WRDL <(SP) $SSEC(RO),-(SP) ,LINPS *WORD LENGTH ON STACK :MAKE INTO A POSITIVE NUMBER *UPPER DIVIDEND TO ZERO -SECTOR SIZE ON THE STACK *PRINT °‘WORD POS' CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 22-5 SEQ@ 011 ERROR MESSAGE GENERATION ROUTINES 294 022544 295 022550 296 022554 297 298 299 300 301 022556 302 022556 307 022562 022566 022572 022576 022602 022606 308 022612 309 022616 310 022622 m 312 313 314 004737 104414 000207 023234 001203 324 325 326 327 328 022666 329 022672 330 022676 RTS PC DISPLY sTYPE THE POSITION ,S$CRLF sPRINT LINE SA OF THE ERROR MESSAGE : "HEADER FROM ERROR SECTOR 104414 013746 004737 104414 013746 004737 104414 104414 104414 000207 073753 101174 023202 075233 101176 023202 075233 075236 001203 104414 016046 004737 104414 104414 016046 004737 104414 000207 074006 002204 023202 075233 074016 002206 023202 001203 LINESA: 28: DISPLY 38: XXXXXX' s "HEADER CONTENTS OF ERROR SECTOR' CYLNDR+2,=(SP) ;HEADER POSITION +2 MoV JSR DISPLY JSR PC.LINOCT g%gPLY P%CRLF DISPLY DISPLY XXXXXX ,LINS5 CYLNDR,=(SP) PC,LINOCT ,BLNKSZ MOV XXXXXX ~ XXXXXX :HEADER POSITION STYPE IT :TYPE 2 BLANKS ,BLNKS2 .LINXS sTYPE IT :TYPE 2 BLANKS ;APPENDING INFO 1/23/77 ,LINEPS ;'RMECT = JSR PC,LINOCY STYPE IT MOV ' RMEC ‘RHECZ(RO) -(SP) ;TYPE ITPUT REGISTER CONTENTS ON THE STACK LINESB: DISPLY MOV DISPLY DISPLY JSR DISPLY RTS iRHECl(RO) -(SP) BLNKSZ PC,LINOCY ,SCRLF pC ;PUT REGISTER CONTENTS ON THE STACK TYPE 2 BLANKS sRETURN sPRINT LINE 6 OF ERROR MESSAGE J"SECTOR 1S ECC CORRECTABLE' 104414 104414 000207 074030 001203 339 WA =2 OO 00 NO VIS SN = PC,LINDEC ;PRINT LINE 58 OF ERROR_MESSAGE RMEC2 = XXXXXX' ;"RMECT = XXXXXX 315 022624 316 022630 317 022634 318 022640 319 022644 320 022650 321 022654 322 022660 323 022664 uugwuuwwww oo GV RELLR JSR LINE6: DISPLY ,LINB6 RTS PC DISPLY ,SCRLF sECC CORRECTABLE ;PRINT LINE 6A OF THE ERROR MESSAGE s "SECTOR READ CORRECTLY' 022700 022704 104414 000406 074063 LINEGA: DISPLY B8R ,LINC6 LING.2 ;PRINT *SECTOR READ CORRECTLY ON N RETRIES’ :TYPE THE REST OF THE LINE ;PRINT LINE 6C OF THE ERROR MESSAGE :"CORRECTED ON NTH RETRY' 022706 022712 022714 364 022720 104414 000403 0746112 LINE6C: DISPLY BR ,LING6 LIN6.2 :"CORRECTED ON N RETRIES'® :TYPE THE REST OF THE LINE ;PRINT LINE 6D OF THE ERROR MESSAGE s "UNCORRECTABLE AFTER N RETRIES' 104414 000400 074142 LINE6D: DISPLY BR ,LINUO6 LING.2 s "UNCORRECTABLE AFTER N RETRIES' sFINISH CZRNAAQO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 22-6 19 SEQ@ 0112 ERROR MESSAGE GENERATION ROUTINES :RETRY COUNT TYPEOUT ggg 379 022722 380 022726 005046 113716 001331 104414 074130 LING.2: CLR MOVB 381 022730 004737 023234 382 022734 383 022740 ggg 022744 104414 000207 ;CLEAR STACK :RETRY COUNT ,LINR6 : 'RETRY’ JSR PC,LINDEC DISPLY RTS .$CRLF PC DISPLY 001203 -(SP) RETRY#1,(SP) STYPE IT IN DECIMAL 386 :PRINT LINE 7 OF THE ERROR MESSAGE 306 022746 104414 0762564 397 022752 016046 000072 LINE?: : XXX :*TOTAL ERRORS %gg 398 022756 399 022762 004737 104414 023234 074272 401 022772 004737 023234 404 023006 405 023010 406 023014 060016 004737 004737 037222 032364 402 022776 403 023002 407 023020 408 023026 409 023030 410 023034 411 023040 104414 012746 1044146 016046 004737 104414 012746 412 023044 060016 416 023062 032777 100000 415 023056 104414 417 023070 001401 2}3 023074 000207 418 023072 001203 000000 18: 443 023154 444 023162 445 023164 446 023166 447 sTYPE IT IN DECIMAL ADD JSR JSR RO, (SP) PC.$DB2D PC.$SUPRL ADD RO, (SP} ,LIN?X #SWRITN,-(SP) DISPLY PC.$DB2D PC.$SUPRL ,S$CRLF BEQ 13 HALT RTS ::PUSH SWTOFL(R0O) ON STACK ‘PRINT 'WRDS WRITN' :ADDRESS OF LOW WORD ON STACK : CONVERT ‘PRINT *PRINT °'ROFL® ,LIN70R ::PUSH SRDOFL (R0) ON STACK $RDOFL (RO) ,~(SP) IN DECIMAL IT :TYPE PC,LINDEC READ' 'WRDS ,LIN7R ‘LOW WORD ADDRESS #SREAD ,~ (SP) #SW15,asWR ; CONVERT *PRINT IT SCR-LF ‘SEE IF 'HALT ON ERROR' = SWITCH 15 ‘BR IF NOT ‘SWITCH 15 HALT PC s*TOTAL SEEKS=XXXXX 104414 012746 060016 004737 004737 104414 LINE7A: DISPLY 74214 037222 032364 074167 004737 104414 004737 104414 032777 001401 000000 000207 023234 001203 100000 JSR DISPLY PC.LINDEC ,LIN?S JSR DISPLY PC,LINDEC ,SCRLF STYPE IT IN DECIMAL 1 CR-LF BEQ 18 BIT 1$: ;*TOTAL SEEKS = ° ;TYPE IT IN DECIMAL ** TOTAL Skl ERR = ° MOV 155772 ,LIN7P TOTAL SKI= XXX' :TOTAL SEEKS *DEVICE TABLE ADDRESS *CONVERT THE SEEK COUNT MOV 023234 074232 TOTAL MISPOS ERR = XXX #$POSIT.-(SP) RO, (SP) PC.$DB2D PC.$SUPRL ,LIN7M MOV ADD JSR JSR pIsPLY 000052 440 023140 016046 007100 441 023146 442 023150 PC.LINDEC $WTOFL (RO) ,-(SP) ;PRINT LIN" 7A OF ERROR MESSAGE 437 0231264 016046 000102 438 023130 439 023134 JSR 8IT 156064 2%% 432 023102 433 023106 43% 023110 435 023114 436 023120 :TYPE IT IN DECIMAL ‘PRINT ‘WTOFL' JSR JSR 421 431 023076 PC,LINDEC LIN70X DISPLY MOV JSR DISPLY MOV 074317 000064 023234 074327 000066 037222 032364 JSR DISPLY DISPLY MOV 074302 000060 004737 004737 413 023046 414 023052 ;TOTAL ERRORS DISPLY ,LIN?T :TO STACK $TOTAL (RO) ,-(SP) MOV MOV 40 022766 016046 000056 : XXXXXXX* ROFL:0 WRDS READ WOFL:X WRDS WRITN:XXXXXXX HALT RTS $MISPO(RO) ,~(SP) $SKI(RO) ,~(SP) #5415, aSWR PC SPRINT IT 2* TOTAL MISPOS ERR = ° sTOTAL ERRORS :CONVERT & PRINT [T *SEE IF HALT ON ERROR - SWITCH 15 SET *BR IF NOT ‘SWITCH 15 HALT ] CZRNAAQ RMB0O PERF EXER MACRO V04,00 14=JAN-82 15:16:58 PAGE 22-7 SEQ 0113 ERROR MESSAGE GENERATION ROUTINES 649 450 451 023170 452 023174 453 023200 454 455 456 457 458 459 460 sPRINT LINE 8 OF THE ERROR MESSAGE ;"DIFFERENT ERROR DURING RETRY' 106414 004737 000207 : ; : 466 023226 467 023230 468 023232 000000 012616 000207 477 023234 478 023240 479 023244 480 023250 481 023252 RTS ;CALL: 016646 004737 012637 062737 469 470 471 672 473 474 475 476 DISPLY JSR .LINBH C,LINE2 c ;PRINT LINE 2 OF ERROR MESSAGE ;OCTAL TYPEOUT ROUTINE 461 023202 462 023206 463 023212 466 023216 465 023224 LINES: 074343 021214 104414 000002 033260 023226 000005 MOV JSR RETURN LINOCT: MOV JSR MOV 023226 1$: (SP) NU=M, PC,LINOCT ;PUT THE NUMBER ON THE STACK 2(SP) ,=(SP) PC,$5820 ;PUT NUMBER IN PROPER LOCATION ON STACK ;CONVERT THE NUMBER TO OCTAL $GET THE ADDRESS OF THE ASCII STRING ;ADDRESS THE LAST 6 ASCII DIGITS (sP)+,18 ADD #5..18 LWORD MOV O (SP)+, (SP) DISPLY RTS PC STYPE IT :ADDRESS CORRECT THE STACK TURN ;ROUTINE TO CONVERT THE INPUT NUMBER TO DECIMAL AND TYPE IT WITH *LEADING 2ERO SUPRESSION SCALL: ; MOV : RE TURN : 016646 004737 004737 012616 000207 000002 033230 0323664 JSR LINDEC: MOV JSR JSR A0V RTS , = (SP) NUM ;PUT THE NUMBER ON THE STACK 2(SP) ,=(SP) sSET UP STACK FOR CONVERT :CONVERT IT TO DECIMAL :TYPE IT (WiTH LEADING 2EROS SUPRESSED) PC,LINDEC PC,$582D PC.$SUPRL (SP3+,(SP) PC ;RESTORE STACK POINTER v CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 23 K SEQ 0114 GENERAL SUPPORT SUBROUTINES .SBTTL 1 GENERAL SUPPORT SUBROUTINES 2 3 A ;DECREMENT THE SECTOR-TRACK ADDRESS 9 ‘ON RETURN THE STACK CONTAINS THE FOLLOWING: }% ; CALL: : : : S 6 g : : 10 11 14 023254 004737 17 023270 18 023274 016616 005066 005066 000006 000004 21 023314 016066 002174 000002 22 023322 23 023326 005766 001403 000006 18: 24 023330 105366 000006 25 023334 26 023336 27 023342 000424 005766 001406 28: 000004 29 023352 30 023356 31 023360 32 023364 33 023366 3% 023374 105366 000413 00576, 001410 113766 113766 000004 001424 001426 35 023402 005366 000002 36 023406 005337 001436 37 023412 38 023414 23 023420 002343 005037 000207 38: 000002 000006 000004 48: MOV $RMDC (RO) ,2(SP) :CYLINDER ADDRESS TST DECB 6(SP) ST 4(SP) BR BEQ *CLEAR STACK FOR SECTOR *CLEAR STACK FOR TRACK SRMDA(RO) ,6(SP) :SECTOR ON STACK - TRACK ADDRESS SRMDA+1(RO).4 (SP) 6(SP) BEQ *DECREMENT THE STACK POINTER *SECTOR 0 ? 28 *BRANCH IF SO 43 *BRANCH TO EXIT 3$ *DECREMENT ONE SECTOR “ALSO ON TRACK 0 ? *BRANCH IF SO SECLMT.6(SP) :LAST SECTOR DECB BR &4(SP) 4$ *DECREMENT ONE TRACK SEXIT BEQ MOVB MOVB 4 SECLMT.6(SP) TRKLMT.4(SP) ‘BR IF YES LAST SECTOR :GET LAST TRACK ST DEC DEC BGE 2(SP) 2(SP) DEC2 1$ DEC2 PC *ALSO ON CYLINDER 0 ? *DECREMENT ONE CYLINDER COUNT *DECREMENT TWICE YET? ‘BR IF NO ‘DECREMENT TRK/SEC ONLY ONCE NEXT TIME *RETURN :ROUTINE TO CHECK FOR KW11-L SR KW11=P CLOCKS 012737 012737 013746 177777 177777 000004 001312 001310 46 023442 012737 025516 000004 47 023450 005777 155622 48 023454 *MOVE THE RETURN ADDR DOWN THE STACK 6(SP) L(SP) RTS 25 43 023622 4% 023430 45 023436 6(SP), (SP) CLR CLR CLR 001436 :GET ADDRESS LIMITS #6,SP MOVB 28 023344 113766 001424 000006 PC.GETLMT SUB MOVB MOVB 19 023300 116066 002146 000006 20 023306 116066 002147 000004 :DPB ADDRESS (SP) = CYLINDER ADDRESS MOV 000006 #DPB,RO PC ,READDR 4(SP) = SECTOR ADDRESS 2(SP) = TRACK ADDRESS READDR: JSR 027462 15 023260 162706 000006 16 023264 MOV JSR RETURN 005037 001312 49 023460 005037 001310 S0 023464 013701 001302 51 023470 012721 025110 52 023474 012711 000300 174575 155572 012777 023500 §3 155562 000131 012777 023506 54 gg 023514 000441 57 023516 012716 023524 CKCLK: MOV MOV MOV #-1,CLKFLG #-1.PCLOCK ERRVEC,-(SP) ;CLEAR CLOCK AVAILABILITY FLAG *CLEAR KW11=P CLOCK AVAILABILITY FLAG ::PUSH ERRVEC ON STACK ST aSLKCSR K FOR KW11-P STHEC MOV CLR #CKCLKY ERRVEC :SET UP VECTOR FOR CLOCK CHECK CLKFLG CLR MOV MOV PCLOCK $LPVEC.R1 lCLOCK (R1)+ BR CKCLK3 MOV MOV MOV CKCLK1: MOV *SET CLOCK AVAILABILITY FLAG *SET KW11-P CLOCK FLAG *KW11-P VECTOR ADDRESS SET UP KW11=P VECTOR 6 = PRI ‘PSW #300. (R1) COUNTER BUFFER WITH 16.67 xcss:LOAD o-1667..asL #131,.38LKCSR ~ :SET CLOCK = CNT UP, 10US, CONT INT n$, (SP) :SETUP RETURN ADDRESS SE@ 0115 CZRNAAO RMBO PERF EXER MACRG V064.00 14-JAN-82 15:16:58 PAGE 23-1 WNWOQO = N=AION 235 QOO0 O0O—O O—mamad=O0O— (=) oW (= HNNNYVONN Q OO0O0O0O0O00O0 (=] ==00 VLA OO0 — VIS ON NEON Lbvaivioauiuviiuiun NN NN S NN [\ NTeS e N STo X, 8 To ¥ NP PONINNININNNY (NN N NN NN OO00O000O00 OO0 OrON) NN o £H 58 023522 =N NOW~NIW o NN = b NN N GENERAL SUPPORT SUBROUTINES 555 013 013 251 003 001 000207 RTI MOV TST CLR Mov MOV MoV MOV 155520 BR 023574 CKCLK2: MOV 076064 001150 1$8: 031742 76 023620 77 023624 1$: 003532 000004 RT1 TYPE 1ST8 BEQ JMP HALT JMP CKCLK3: MOV RTS 2$: #CKCLK2,ERRVEC a$LKS CLKFLG SLLVEC,RY #CLOCK, (R1)+ #300, (R1) #100,asLKS CKCLK3 #18,(SP) NEDCLK $AUTOB s CHANGE ERROR VECTOR TO CHECK FOR KWl1-L :LOOK FOR KW11-L :SET CLOCK FLAG :KW11=L VECTOR ADDRESS SSET UP KWw1l=L VECTOR ;PSW - PRI 6 SSET KU11-L INTERRUPT sSETUP RETURN ADDRESS :'P OR L CLOCK MUST BE ON SYSTEM’ 2% $GET42 :RUNNING IN AUTO MODE ? :BR IF NOT :ABORT PROGRAM START (SP)+ ,ERRVEC :RESTORE THE ERROR VECTOR PC SPALT < TRY AGAIN CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 24 SEQ@ 0116 NO NS NN — GENERAL SUPPORT SUBROUTINES :ROEIINE TO DISP_AY STATISTICS FOR ASSIGNED DRIVES : . 0 823626 STATPR: 010046 823632 005737 001542 0 c36¢0 0 %3643 0 104401 4737 001203 023742 25 02,054 016400 002056 27 023662 136437 040300 29 023672 004737 023752 31 023700 32 023704 020427 001362 000010 Is: PC,STATPR MOV MOV TST RO,=(SP) R4 ,=(SP) ASNLST RETURN BEQ TYPE JSR CLR ASL MOV ASR BITB 001542 4$: 5$: 023706 012604 023710 3, 093712 28: JSR 012600 000207 BEN JSR INC 5$ _SCRLF PC,SHDTYP R4 R4 BLKADR (R4) ,RO R& ::PUSH RO ON STACK ::PUSH R4 ON STACK :ANY DRIVES ASSIGNED ? :BR IF NOT JCR=LF ;TYPE THE HEADING :CLEAR THE DRIVE INDEX ;CHANGE TO INDEX WORDS :GET THE DRIVE'S BLOCK ADDRESS :RESTORE Ré4 ATABIT(R4),ASNLST 48 PC,SDETAL R4 CMP BNE R4, 48. 3s MOV MOV RTS (SP)+,Ré (SP)+,R0 PC N:%S THIS DRIVE ASSIGNED ? NO _IF :8 :BR PERFORMANCE SUMMARY THE sTYPE THE INDEX ENT s INCREM ? D ISHE sFIN :BR IF NO :;POP STACK INTO R4 ::POP STACK INTO RO sRETURN :ROUTINE TO TYPE THE PERFORMANCE SUMMARY (STATISTICS) FOR AN INDIVIDUAL ;DRIVE. 4 43 023714 44 023716 45 023720 46 023724 47 023726 48 023730 49 023734 50 023736 21 023740 JCALL: : : : 010046 010446 004737 005004 111004 004737 012604 012600 023742 MOV #DPB,RO :DPB ADDRESS SUMARY: MOV MoV RO,=(SP) R4, ~(SP) :SAVE RO :SAVE R4 :TYPE THE HEADING 023752 JSR RETURN JSR CLR MOVB JSR MoV PC.SHDTYP Ré (RO) ,R4 PC.SDETAL (SP)+,R4 JCLEF R4 FOR DRIVE NUMBER :DRIVE NUMBER :TYPE THE STATISTICS RTS PC JRETURN MOV 000207 PC.SUMARY (SP)+.R0 ;RESTORE R4 :RESTORE RO :TYEE THE HEADER FOR THE DRIVE PERFORMANCE SUMMARY TYPEOUT : : 58 023742 59 023746 60 023750 004537 075626 000207 032574 JSR RETURN SHDTYP: JSR SUMHD RTS PC,SHDTYP RS,TYPRI& PC :TYPE SUMMARY HEADER :HEADER JRETURN :TYEE THE PERFORMANCE SUMMARY Mov #DRIVE R4 sDRIVE NUMBER GE SEQ 0117 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 24-1 GENERAL SUPPORT SUBROUTINES H 65 66 67 68 023752 023752 023756 104401 000404 023770 69 023770 70 004737 72 023774 73 024000 104401 104401 71 023760 MoV #DPB,RO ;DPB ADDRESS TYPE BR .ASCIZ , 659 643 ;s TYPE ASCIZ STRING JSR PC,STIME RETURN : SDETAL: ;:6 58: 648: <CRLF>/TIME / ;TYPE LINE 2 OF SUMMARY TYPE TYPE MOV TYPOS +SCRLF ,UNTMSG R4 ,=(SP) .BYTE .BYTE 024054 81 024054 82 024060 104401 000404 016046 024044 673 Ones One o “ 80 024036 024042 000104 033230 032470 076141 004737 032652 104401 000407 024124 016046 104405 104401 104401 000407 010046 104401 024222 024226 1046401 000406 076141 024162 :;SAVE R4 FOR TYPEOUT :;G0 TYPE=-=OCTAL ASCII ..TYPE 2 DIGIT(S) ;TYPE * :TYPE 1 BLANK ;TYPE DRIVE TYPE TYPE * :;TYPE ASCIZ STRING ::GET OVER THE ASCIZ ,=(SP) SSC (RO) SPA PC,$582D RS ,REPLZ .PERIOD PC, TYHDA :PUT THE PASS COUNT ON THE STACK ;CONVERT IT JTYPE IT :TYPE 3 DIGITS JTYPE °*.° JTYPE 1 BLANK :TYPE DRV SERIAL NUMBER :TYPE 1 BLANK :TYPE HDA SERIAL NUMBER sTYPE LINE 3 OF SUMMARY TYPE ;:698: 000056 sCR=LF :TYPE *DRIVE' :SIPPRESS LEADING ZEROS LASCIZ JSR JSR .WORD TYPE TYPE JSR TYPE JSR sTYPE ELAPSED TIME ;TvPe 1 BLANK TYPE TYPE TYPE TYPE TYPE TYPE BR MOV ;;GET OVER THE ASCIZ 68$: BR .ASCIZ MOV TYPDS TYPE TYPE SWTOFL(RO) ,~(SP) .PERIOD sSAVE SWTOFL(RO) FCR TYPEOUT ..Yg TYPE--DECIHAL ASCII WITH SIGN TYPE °* 718 :;TYPE ASCIZ STRING MOV ADD JSR RO, -(SP) ;GET ADDRESS OF DPB TYPE .PERIOD -718: 8:scn 908 .69% ..TYPE ASCIZ STRING :GET OVER THE ASCIZ 68$ <CRLF><LF>/WT OFLOW / ) JSR 0s / WRDS WRITN / ASWRITN, (SP) PC,$DB2D PC, SUPRS sTYPE LINE & OF SUMMARY TYPE B8R 738 #53 :sGET OVER THE ASCIZ ;POINT TO LOW NUMBER OF WRDS WRITTEN ;CONVERT DECIMAL NUMBER ;ngRESS LEADING ZEROS AND TYPE :sTYPE ASCIZ STRING ;:GET OVER THE ASCIZ 94 GE! SEQ 0118 GENERAL SUPPORT SUBROUTINES 076141 024264 - :758%: 748 024324 024330 104401 000404 024342 024344 024350 024354 024360 010046 062716 004737 004737 104401 024364 024370 104401 000405 024372 024404 131 024404 024410 104401 000404 024412 016046 000074 104401 104401 000404 076141 024442 016046 104405 104401 104401 000403 000076 016046 000100 104401 104401 000404 016046 OV Vo ~NONWN - e b o ANV AD) = o ad b b b b cd b e cad =D 024302 0264304 024310 024314 024320 024422 132 024422 024426 133 024430 134 024434 024440 024452 135 024452 024456 136 024460 137 024464 024470 024500 138 024500 024504 139 024506 140 024512 024516 024530 141 024530 010046 062716 004737 004737 104401 000064 b e ed ek b D OO S W =000 016046 104405 104401 104401 000407 b d b =B 024244 104 024244 024250 105 024252 106 024256 024262 53 .ASCIZ <CRLF>/RD OFLOW / MOV TYPDS TYPE TYPE BR FL (RO) ,~(SP) $RDO ; ;SAVE SRDOFL(RQ) FOR TYPEOUT ;60 TYPE-=DECIMAL ASCII WITH SIGN LASCIZ 748 / WRDS READ / pC,$DB2D PC.SUPRS LPERIND :TYPE LINE 5 OF SUMMARY 778 TYPE 63 B8R <. 778: +ASCIZ <CRLF>/SEEKS / 76$: 000052 037222 032300 076141 076141 024472 758 RO,=(SP) #SREAD , (SP) 000066 037222 032300 076141 024332 ,PERIOD MOV ADD JSR JSR TYPE RO,=(SP) #$POSIT, (SP) PC,$0B2D PC,SUPRS .PERIOD sTYPE °, 2sTYPE ASCIZ STRING ;cGET OVER THE ASCIZ :GET ADDRESS OF DPB ;POINT TO LOW NUMBER OF WRDS READ :CONVERT DECIMAL NUMBER :¥922R§S§ LEADING ZEROS AND TYPE ::TYPE ASCIZ STRING ::GET OVER THE ASCIZ ;PUT SPOSIT ON THE STACK sPOINT TO LOW NUMBER OF SEEK COUNT s CONVERT DECIMAL NUMBER :?9;ER§S§ LEADING ZEROS AND TYPE sTYPE LINES 6 AND_7 OF SUMMARY TYPE 79% :sTYPE ASCIZ STRING 8s BR ::GET OVER THE ASCIZ :/ <CRLF>/ERRORS LASCIZ e TH TYPE BR LASCIZ MOV TYPDS TYPE TYPE 81$ 80s <CRLF>/SOFT / 2:TYPE ASCIZ STRING ::GET OVER THE ASCIZ $SOF T(RO) ,=(SP) ::SAVE $SOFT(RO) FOR TYPEOUT ,PERIOD 83$ :%egET!Pg--DECIflAL ASCII WITH SIGN :TYPE ASCIZ STRING BR LASCIZ 823 MOV TYPDS TYPE TYPE , = (SP) ; sSAVE SHARD(R0O) FOR TYPEOUT (RO) RD $HA / HARD / ,PERIOD 85% B8R .ASCIZ 843 $SKI(RO) ,~(SP) 076141 024520 Mov TYPDS TYPE TYPE BR .ASCIZ 6$ / MISP / 000102 Mov $MISPO(RO) ,=-(SP) / SKI / LPERIOD 87 :2GET OVER THE ASCI2 :%gg TYPE--DECIMAL ASCIT WITH SIGN P:TYPE ASCIZ STRING 12GET OVER THE ASCIZ : :SAVE $SKI(RO) FOR TYPEOUT :%gg TYPE--DECIMAL ASCII WITH SIGN L:TYPE ASCIZ STRING 1:GET OVER THE ASCIZ :;SAVE SMISPO(RO) FOR TYPEOUT oo CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 24-2 S 8 10 ] CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 24-3 c10 SEQ 0119 GENERAL SUPPORT SUBROUTINES 104405 s =~ ~N &S pusr e 024534 148 149 024606 }g? 024612 000100 000102 104401 104401 076141 001203 TYPDS TYPE TYPE BR .ASCIZ .PERIOD 89% 8$ / OTHER / $TOTAL(RO) ,=(SP) $SOFT(R0),(SP) $HARD (R0) , (SP) $SKI(R0O) , (SP) ::GO TYPE=-DECIMAL ASCII WITH SIGN :TYPE *.° S:TYPE ASCIZ STRING 1'GET OVER THE ASCIZ : CALCULATE NUMBER OF OTHER ERRORS ;SUBTRACT $SOFT FROM $TOTAL ;SUBTRACT $HARD FROM STOTAL :SUBTRACT $SKI FROM STOTAL $MISPO(RO), (SP) :SUBTRACT SMISPO FROM $TOTAL ,PERIOD SCRLF PC 2:G0 TYPE=-=DECIMAL ASCII WITH SIGN JTYPE :CR=LF *.° CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 25 D 1) SEQ 0120 = [« XV, =) GENERAL SUPPORT SUBROUTINES sROUTINE TO INCREMENT $SOFT :NOTE: 0264620 024624 024626 024634 024636 17 024642 005737 001006 026027 103002 005260 000207 001342 000074 077777 000074 $SOFT WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCSOF: TST BNE CHP BHIS 1$: INC RTS BADSEC 1$ :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 $SOF T (RO) PC ;RETURN : INCREMENT $SOFT sROUTINE TO INCREMENT $HARD :NOTE: 024644 005737 001342 024652 026027 000076 024662 18 024666 005260 000207 000076 077777 S$HARD WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCHRD: TST BNE CMP 18: BHIS INC RTS BADSEC 1$ SEE IF BAD TRK/SEC INDICATOR SET R IF IT'S SET, DON'T INCREMENT COUNT 18 $HARD (R0) PC ;BRIF IT' IS s INCREMENT $HARD sRETURN $HARD (RO) , l77777 :1S SHARD ALREADY AT MAXIMUM ? sROUTINE TO INCREMENT $SKI :NOTE: 024670 024674 0264676 005737 001006 026027 001342 024706 19 024712 005260 000207 000100 024704 103002 000100 077777 $SKI WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCSKI: TST BNE cmp BHIS 18: INC RTS BADSE(C 18 ;SEE IF BAD TRK/SEC INDICATOR SET :BR IF IT'S SET, DON'T INCREHENT COUNT PC sRETURN $SKI1(R0) ,#77777 1S $SKI ALREADY AT MAXIMUM ? 18 :BR IF IT IS $SKI(RO) : INCREMENT $SKI ;ROUTINE TO INCREMENT S$MISPO :NOTE: 20 024714 005737 001342 024722 026027 000102 024732 024736 005260 000207 000102 0.7777 $MISPO WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCM]IS: TST BNE CMP 18: BHIS INC RTS BADSEC 1$ SEE IF BAD TRK/SEC INDICATOR SET R IF IT'S SET, DON'T INCREMENT COUNT 1$ SMISPO(RO) PC :BRIF IT IS : INCREMENT SMISPO ¢RETURN SMISPO(RO), l77777 ;1S SMISPO ALREADY AT MAXIMUM ? ;ROUTINE TO INCREMENT STOTAL :NOTE: 024740 005737 001342 024746 026027 000072 024756 024762 005¢50 000207 000072 077777 STOTAL WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCTOT: TST BNE CMP BHIS 18: INC RTS BADSEC 18 sse IF BAD TRK/SEC INDICATOR SET R IF IT'S SET, DON'T INCREMENT COUNT 18 ;B8R IF It IS PC :RETURN STOTAL(RO),I????? -1S STOTAL ALREADY AT MAXIMUM ? $TOTAL (RO) : INCREMENT STOTAL SEQ 0121 l - CIRNANO R°480 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGL 26 E 10 JROUTINE TO TYPE THE TIME uNNNNNNNNNNNNNNN »H o~ b (=4 005737 o o 4764 NINOND o~ ~ ~ o (el=lelolelelelalelolelolololololole el PININD) cod b cd cod cd bl e cd cd b N =2 O V00 ~NO NI NN = OV NH W = GENERAL SUPPORT SUBROUTINES 000002 001344 000144 005237 004737 004537 025040 033230 032464 5046 5052 5056 013746 004737 004537 076332 001346 033230 032464 064 23 025070 24 025074 25 025100 26 025104 gg 025106 013746 004737 004537 000002 000207 23 0 29 30 2$: cMP BLT INC cmp BLT INC JSR JSR .WORD TYPE MOV JSR JSR .WORD TYPE MOV JSR JSR .WORD RTS CLKFLG 3$ #2,2% HOUR,=(SP) %gP),l100. 2% (SP) ,#1000. 1$ 2% PC,$582D 85FILLZ .COLO HINUTE =(SPj PC,$582D gsJFILLZ .COLON SECOND ,~(SP) PC,$582D gsFILLZ PC ON THE SYSTEM ? gkogg s ASSUME 2 DIGITS TO TYPE :PUT *HOURS® ON THE STACK ? :100. HOURS OR MORE :BR IF_NO :TYPE 3 DIGITS :1000. HOURS OR MORE ? :BR_IF NO sTYPE &4 DIGITS $$~¥E?T TO DECIMAL NUHBER OF HOUR DIGITS TO TYPE PUT 'MINUTES' ON THE STACK sCONVERT TO DECIMAL STYPEIT TYPE 2 DIGITS .PUT SECONDS ON THE STACK sCONVERT TO DECIMAL sTYPE IT sTYPE 2 DIGITS ;CLOCK HANDLER ROUTINE 001352 37 025140 38 025144 39 025150 40 025154 005037 005237 005237 022737 001350 001466 001346 000074 43 025170 4% 025174 45 025202 46 025206 47 025210 48 025212 49 025216 50 025222 51 025006 52 025230 53 025236 54 025240 55 025246 56 025252 18: 3s: 005337 001027 013737 005237 022737 41 025162 42 025164 TST BNE MOV MOV 076332 001350 033230 032464 31 025110 32 025114 33 025116 3, 025126 35 025130 36 025136 025040 025040 001750 2 ; STIME: 001312 001016 001004 005037 005237 022737 001403 012746 000402 012746 004737 005737 001411 023737 001005 012737 005037 000002 001314 001350 000074 001346 001344 000062 CLOCK: 001352 001350 001346 001314 18: 000020 2$: 3s: 000024 044152 001464 001464 001466 177777 001466 001316 4$: DEC BNE MOV INC CMP BNE CLR INC INC CMP BNE CLR INC ?gESEC HZ ,ONESEC SECOND ggo..sscono SECOND INTRVL*Z MINUTE #60. ,MINUTE 1$ MINUTE HOUR #50. ,HZ 23 #16.,-(SP) s INCREMENT THE ONE SECOND COUNTER :BR IF A SECOND NOT COUNTED :RESTORE THE VALUE sCOUNT THE SECOND AT MAXIMUM 2 :BR_IF NOT sCLEAR THE SECOND'S COUNTER :COUNT THE PERFORMANCE SUMMARY INTERVAL :COUNT THE MINUTE ;AT MAXIMUM 2 :BR_IF NOT sCLEAR THE MINUTE'S COUNTER :COUNT THE HOURS gsUlRUNgING 8 50HZ ? ;16MS ON THE STACK @ 60HZ 3s #20.,=(SP) ;20MS ON THE STACK @ 50HZ :DRIVER TIMER ROUTINE PC_,RMTMR g{S?%AYOTHE PERFORMANCE SUMMARY ? INTRVL 43 ngRVL. INTRVL+2 sDISPLAY INTERVAL FINISHED ? :BR_IF_NOT #-1,STATIN ;SET PERFORMANCE SUMMARY DISPLAY FLAG INTRVL*2 :CLEAR THE PERFORMANCE INTERVAL COUNTER C. . CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 27 F 10 SEQ@ 0122 EOHTAND DECODE ROUTINE ‘ 0 . . [ [4 005737 100375 104412 012737 013704 012764 005037 104401 004737 004737 104401 KSR: 0460276 000,90 0 177776 000010 KSR1: 18: ROLIN TST 001340 BEQ 2s: VNS NNINO W ON=dwd ) =t \) b =b 000124 000101 000067 000060 177770 000124 127777 3s: 177777 4$: 026556 000104 026356 000123 1727777 5$: NOVWA SN WAVAWAVLAW 000127 177777 001440 001047 000001 153444 6$: :ROUTINE IN INTERRUPT MODE sSYSTEM BUSY RETURN :RETURN AFTER KEYBOARD SERVICED DTUW KSR agYIDATeSTRANSFERS UNDER WAY ? #PRéL ,PS R4 RMADR, #CLR ,RMCS2(R4) CFLAG :SET PRIORITY TO & SCRLF PC,.STIME PC,STKINT .ENTCOM (SP)+,R5 CFLAG 2$ ;SAVE THE REGISTERS ;GET RM/XH BASE ADDRESS :CLEAR MASSBUS CONTROLLER Ekft? THE °*CONTROL C* FLAG ;TYPE THE TIME :INITIALIZE TTY KEYBOARD s "ENTER COMMAND' ;READ THE KEYBOARD :GET ADDRESS OF INPUT STRING :CHECK THE CONTROL C FLAG :BR IF NO *CONTROL C® ENTERED :ANY DRIVES ASSIGNED ? :BR IF YES ;JUMP TO START ASNLST INC CMPB 8EQ CMPB BEQ CMP8 BHI CMPB 8LO BI(8 RS #'T,(R5) 9% A (RS) 3s . #'7 (RS) 128 (RS).#'0 128 #°C7,(RS5) ;POINT TO SECOND CHARACTER GEQTOA 'T* ? BNE JSR 48 gc‘NEUAsu IF NOT EQ :BR ;ASSIGN DRIVE FOR TEST JEXIT :EQ TO 'D* ? CMP8 138 START #'T,=1(RS5) ;EQ TO ?? ;g' éDRIVE ?gfl?gk GREATER THAN AN ASCII 7 ? éggIVE ??H?ER LESS THAN AN ASCII 0 ? ELEAVE 9?%7 LOWER 3 BITS IF CHAR NOT ‘A’ JSR #°D,~1(RS) 5$ PC,DEASGN CMP8 BNE #7S,=1(RS) $ ‘EQ TO °S’ BR IF NOT EQ BR 13§ .EXII :Eo T0 'W* JSR 026464 s"CFLAG' IS NORMALLY SET BY THE TTY SERVICE TST BNE JMP 003532 b b b eud b b O wd NNSHONNONON) PONI N =2 =2 = =2 ) NN =S N 39 025406 MOV MOV 001542 30 025354 31 025356 32 025362 33 025364 34 025370 18T BPL SAVREG Mov MOV TYPE 076231 #1,CFLAG PC.KSR JSR RETURN1 RETURNZ CLR TYPE JSR JSR 104411 28 025350 MoV 13$ PC,SCMND CMP8 BNE #°'W,-1(RS) 8s 8IT #SW0,aSWR ST BNE RDONLY 11$ 118 :BR IF NOT EQ 2EASSIGN DRIVE 17 TYPE STATISTICS :BR 5% WS AN =2 O O 00 NN PINININININ) = od b b b ocd b b b b NN = OO0 00 NO NS W) = GENERAL SUPPORT SUBROUTINES £Q IF NOT :LOCKED IN "READ ONLY'’ ;BR IF YES 1S SWITCH O SET . MODE ? :BR IF SET, CAN' T DO ‘W' COMMAND CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 27-1 SEQ 0123‘1 6 10 GENERAL SUPPORT SUBROUT INES 004737 a~o~uwu~:~ug SNV O0O ;WRITE A DATA PACK SEXIT 78: 026600 000122 AININIAININOANINIPOND VIWAWWAWIAWNIWVAWW ViAW NNIND [elelelololololele] o ~ 58 025512 025516 177777 ;EQ TO 'R' ? :BR IF NOT EQ 8s: g;?D DATA PACK 026566 000127 177777 UT COMMAND ? :NO 9s: LOCKED IN "REAC ONLY'' MODE ? 001440 000001 153372 :BR IF YES ;1S SWITCH O SET ? 000101 000001 AL% DRIVES ? 000001 000067 GEEAT THAN 7 000001 000060 LESS THAN 0 177770 000001 026612 000207 :BR IF SET, CAN T DO 'W' COMMAND YE PC,WATPAK 108: 076143 118: 076206 128: 153310 000100 177776 #5C7.1(RS) 13$ MSWRO is INVLD is 138: asTkB #81T06,3$TKS 153300 PS PC s YES ;CHOP OFF THE HIGHER BITS :ASSIGN DRIVES WITH WT COMMAND sTYPE 'CAN'T WRITE IN READ ONLY MODE' :TRY AGAIN :TYPE 'INVALID COMMAND®' MESSAGE :TRY_AGAIN ;RESTORE RO = RS sCLEAR THE TTY BUFFER $SET TTY INTERRUPT ENABLE :SET PRIORITY BACK TO ZERO :RETURN ;ROUTINE TO PROCESS THE ASSIGN REQUEST ('T*, °R°, OR 'W' COMMANDS) AN NS NS NO NS NW OO0 =—0 N NOW S OO=== OHOWVN OASNN=W OO 3s: 4$: NN 075355 001444 NN NSNS OSOSS TST BNE 1ST8 BEQ 1ST8 000001 000131 000116 031200 ASGN1: BNE CMP8 BEQ CMPB BEQ TYPE BR INC CMP8 BEQ MoV TST (SP)+,RO CFLAG 1$ (RO) 38 1(RO) 28 #°Y, (RO) 48 #°N, (RO) 3s BADENT {s DRVPAR #'A R4 ASGN2 #UNTASN,ASNMSG XXDP sPUT DRIVE # IN Ré :CLEAR CONTROL C FLAG ;ASSUME CHANGING DRIVE PARAMETERS sTYPE °*CHANGE DRIVE PARAMETERS ?°* :READ THE ENTRY :SAVE ADDRESS OF RESPONSE :WAS IT CONTROL € ? :BR IF YES ;WAS RESPONSE A CARRIAGE RETURN (DEFAULT °N*)? :BR_IF YES :WAS IT TERMINATED WITH CARRIAGE RETURN ? :BR_IF NO sWAS IT A "Y' RESPONSE ? :BR IF YES ;WAS IT A 'N' RESPONSE ? :BR_IF YES sTYPE BAD ENTRY MESSAGE :TRY AGAIN ;DO NOT CHANGE DRIVE PARAME TERS agS§GN ESL DRIVES ? s*DRIVE ASSIGNED® MESSAGE ADDRESS ? :LOADED FROM THIS DEVICE U — PO 001442 000101 W 3 ‘s..m_.ru_nm_.u\_n\n‘ 2$: O=0O0O0—=0 - OO =O=SOO 0O onNO 076341 WV ROLIN MoV (R5) ,R& CFLAG DRVPAR .MSPRM [ ASSIGN: MOvB 1$: CLR CLR TYPE 001340 001442 077344 001340 oO o= b e aud b cnd b b b cud b b el ad —d b oo 3RIRIRAC2SEILR 111504 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 27-2 10 SEQ 124 GCNERAL SUPPGORT SUBROUTINES ooTM NONINOND 0 0 0 2883 ~&R3 025776 Y 026016 0 0 0 0 001407 000207 000137 R S o 001444 075464 031200 040300 001542 136437 001060 110437 o b s 026130 026136 o N o 000770 1$: - o sBR IF NO SLOAD DEVICE® MESSAGE ADDRESS AIABIT(RA).ASNLSYBR xiD?§VE ALREADY ASSIGNED ? *EXIT ERROR ASGNZ: Ré :START WITH DRIVE 0 001444 XXDP 2% XXDP,R& *LOADED FROM THIS DEVICE ? :BR IF NO ‘LOADED FROM THIS DRIVE ? 075464 031200 zgoosv.Asnnss *LOAD DEVICE' MESSAGE ADDRESS 040300 001542 021154 075355 001444 031200 001542 PC SUNTASN,ASNMSG $ :BR IF NO 3s: PC,ASGN3 R4 ASGN3: *ASSIGN THE DRIVE * INCREMENT DRIVE # :aLL DRIVE CHECKED ? PC SYES PC ,ASNERR 38 ‘ERROR MESSAGE *TO LOOP ATABIT(RG) ,ASNLST ASGN& :DRIVE ALREADY ASSIGNLD ? :BR IF IT IS R4, GENDPB R4 ‘GET DRIVE NUMBER ‘MAKE R4 WORD INDEX PC,RECALO R DRVSTA(R&) *RECALIBRATE DRIVE ‘MAKE R4 BYTE INDEX ‘DRIVE AVAILABLE? ) BLKADR(R4RO ASGN?7 001442 076034 ,DRNUM 1 R4 ,=(SP) 2 0 .S$CRLF PC.TYDRV ,TAB 18: :ALREADY ASSIGNED ? g:.n? ASGN6 PC,CLRDPB PC.GETID RS.GETADR DRVPAR 027054 030254 :ERROR MESSAGE 2;ABIT(R4).ASNLSTVES 067556 001203 *RETURN 2$: 4$: 031154 040300 18: 001203 004737 *LOADED FROM THIS DRIVE ? ASNERR 026630 N 18 ngooev,Asnnsc 2s: 040164 o :BR IF NO ‘SEE IF DRIVE ON THE SYSTEM 002056 015624 o N BR 8l1T18 BNE JSR 18 XXDP,Ré& PC,ASGN3 000007 026126 MOV 026130 026130 - S B B S B DWW o VIS V00N OV ~NOMWN SUWN=OVBNONSWN=S0 g 005004 012737 005737 001407 BEQ CMP8 BNE :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 1:SAVE R4 FOR TYPEOUT 1360 TYPE--OCTAL ASCII SSTYPE 2 DIGIT(S) S SUPPRESS LEADING ZEROS *CR-LF *TYPE DRV SERIAL NUMBER ‘TYPE TAB CONTROL PC,TYHDA STYPE HDA SERIAL NUMBER R4 PC,DRVPRM PC.MANTER ‘MAKE R4 WORD INDEX *GET THE DRIVE'S ADDRESS LIMITS *MANUALLY ENTER BAD SECTOR INFORMATION $CRLF CR-LF CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 27-3 110 SEQ 0125 GENERAL SUPPORT SUBROUTINES 002056 169 026262 016464 171 026276 }7§ 026300 006204 000207 174 026302 };g 026310 012737 000137 075454 031154 177 026314 178 026320 179 026322 180 026324 181 026332 105764 001405 100010 040174 183 026342 000403 182 026334 031200 012737 075403 031200 012737 075420 031200 000407 BLKADR(R4) ,NEWUNT(R4) ASGN4: ASR RTS R4 PC sMAKE R4 BYTE INDEX sRETURN ASGN6: MOV JMP #NOTSAF ,ASNMSG ASNERR ; "UNSAFE' MESSAGE ADDRESS :TO ERROR ROUTINE ASGN?: T1ST8 BEQ 8PL BR DRVTYP(R4) 18 2% NNOTRM,ASNMSG 3s sDRIVE PRESENT? :BR IF NOT :BR IF DRIVE OFFLINE :ADDRESS OF °NOT RM80' MSG JEXIT B8R 3s JEXIT Movs MoV 18: 184 02634 012737 075312 031200 ¢28%: 185 026z,2 000137 031154 °DPB ADDRESS Mov 001566 170 026270 113760 001320 (00026 3$: MOV MOV JMP PACK,SPACK(RO) #NOTPRS ,ASNMSG ;SET READ/WRITE DATA PACK INDICATOR ADDRESS OF 'NOT PRESENT' MSG RUNTOFF ,ASNMSG ;ADDRESS OF "DRIVE OFFLINE' MESSAGE ASNERR :TO ERROR ROUTINE CZRNAAO RM80 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 28 J 10 SEQ 0126 R4 sSTART WITH DRIVE 0 (MPB #'A.(RS) ‘DEASSIGN ALL DRIVES ? gége BICB BICB g;Aexr<n4)As~Lsi As~Ls? ATABIT(R4),.AUTLST ggx Ré ognxve ASSIGNED ? LIST ASSIGNED THE FROM DRIVE THE :DELETE LIST ASSIGN *DELETE DRIVE FROM AUTO ngADR(Rk).DDRVS(R&) :MAKE ADDR INTO A WORD INDEX ;PUT ADMRESS IN DEASSIGN LIST 28: DEC BEQ R3 43 ;ANY MORE DRIVES ? IF NOT ‘B8R 38: MOV NUNTNOT ,ASNMSG RTS PC DEASGN: CLR O=O—=00 - =2 ON) = O no o W ~ o ;'D* COMMAND (ROUTINE TO DEASSIGN A DRIVE) MOV 001542 1$: 66410 146437 040300 001542 032012 6426 0640300 1646437 040300 016464 002056 &£H 3 o [p8) &H 2216 136437 N OO NONINONOND 26400 o Q o je=lelelelelololalelals][elelololele] PNIA) b b «2 OO 0D NO NI b cnd and e e = o b N = OV 00 NN NS W) = GENERAL SUPPORT SUBROUTINES 026446 22 026454 012737 004737 Sg 026462 000207 26 27 28 026464 075333 0311564 001544 031200 48: SCMND: 013746 122715 001416 111504 136416 001404 116437 000411 001542 000101 040300 001542 37 026516 38 026524 012737 004737 075333 031154 031200 4 47 48 ASL JSR BR 18 (RS),Ré4 #1.R ATABIT(R4) PC ,ASNERR 28 : COUNTER ‘BR IF YES ‘GET DRIVE NUMBER SET R3 FOR ONE DRIVE :ADDR OF 'NOT ASSIGNED® MESSAGE *REPORT IT ;'S' COMMAND (ROUTINE TO TYPE DRIVE PERFORMANCE SUMMARY) 026464 29 026470 30 026474 31 026476 32 026500 33 026504 34 026506 gg 026514 39 026530 40 026532 41 026536 42 026540 43 026544 w4 026550 026550 42 026554 BEQ MOVB MOV #8..R3 000407 105737 001404 004737 104401 012637 000207 MOV ASNLST,=(SP) ::PUSH ASNLST ON STACK BEQ MOVB 2 (RS).R& ‘BR IF YES NUMBER *3ET DRIVE (MPB 040300 001542 28: 023626 075617 3s: s 001542 SALL STATISTICS ? BITB ATABIT(R4),(SP) IS THIS DRIVE ASSIGNED ? ggvs gIABIT(RA).ASNLST 18 *BR IF NO MOV #UNTNOT ,ASNMSG :ADDR OF °NOT ASSIGNED' MSG B8R 48 BEQ 1$: #'A, (RS) JSR PC,ASNERR :GET DRIVE ASSIGN BIT *TYPE ERROR MESSAGE SEXIT ASNLST *ANY DRIVE ASSIGNED ? JSR TYPe PC.STATPR ,sTaRS :TYPE ALL STATISTICS STYPE ‘wean_, ETC’ MoV (SP)+,ASNLST TSTB BEQ RTS 43 PC :BR IF NO ;:POP STACK INTO ASNLST ;'T' COMMAND (ROUTINE TO TEST A DRIVE) 49 026556 50 026562 5 005037 000137 54 026566 55 026574 012737 000137 001320 025666 NEWASN: CLR JMP PACK ASSIGN sSET _*T' COMMAND INDICATOR ;G0 TO THE ASSIGN ROUTINE :'R* COMMAND (ROUTINE TO READ A DATA PA(K) 00,001 025666 001320 REDAPK: MOV JMP #1,PACK ASSIGN sSET THE °'READ® INDICATOR :ASSIGN THE REQUESTED DRIVE €2 PA CZRNAAO RM8O PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 28-1 K 10 SEQ 0127 GENERAL SUPPORT SUBROUTINES 56 57 38 59 026600 g? 026606 62 63 64 026612 65 026616 66 026624 ;'W' COMMAND (ROUTINE TO WRITE A DATA PA(K) 012737 000137 177777 025666 001320 DATAPK: MOV JMP #=1,PACK ASSIGN JSET THE 'W' COMMAND INDICATOR sASSIGN REQUESTED DR.VE ;'WT' COMMAND (TO WRITE A PACK AND TEST A DRIVE) 116515 012737 000137 000001 177776 025666 001320 WATPAK: MOVB MOV JMP 1(R5), (RS) ASSIGN sADJUST DRIVE NUMBER ADDRESS sPACK WRITE COMMAND :JUMP TO ASSIGN ROUTINE €2 — CZRNAAO RMBO PERF EXER MACRO V04.00 14~-JAN-82 15:16:58 PAGE 29 L 10 SEQ 0128 N — GENERAL SUPPORT SUBROUTINES :§2EIINE TO CLEAR THE DPB FOR THE ASSIGNED DRIVE L4 ~NO NS —bd OOV MOV JSR . [4 . [ RETURN - [4 :DPB ADDRESS :RO = DPB ADDRESS BEFORE CALLING THE ROUTINE CLRDPB: 026630 MoV R1,-(SP) MOV R5,=(SP) TST 037716 »H 1 $: 000002 o 28: 000002 062704 002004 026714 012703 012764 000064 177777 o N o N o ~ 026710 177776 000002 001514 3$: 000024 000020 000004 49 027052 50 51 52 53 CLR su8 000001 000022 000104 000024 000002 000022 43 RO R4 ;:PUSH R1 ON STACK :sPUSH R3 ON STACK ..PUSH R4 ON STACK :PUSH RS ON STACK :RETURNING FROM POWER FAIL ? :BRANCH IF YES :GET THE DPB ADDRESS :ADDRESS OF FIRST LOCN TO BE CLEARED sNUMBER OF LOCNS TO BE CLEARED c<£CVL-sc0nuo>+2:CLEAR R3 THE LOCATION (R4)+ #2 R3 CLR sus (RG)+ #2.R3 +DONE CLEARING YET ? N ‘BR IF : SKIP OVER THE °*SREG' LOCATION #<s~5xr-srArus>+2 R3 ;NUMBER OF LOCNS TO BE CLEARED ; CLEAR THE LOCATION ;DONE CLEARING YET ? N0 BNE ADD :BR IF 2% #<SDRVSN~-$F IRST>,Ré MOV MOV :NUMBEX OF LOCNS TO BE CLEARED #<$RMCS3-SDRVSN>#2 P3 ;INITIALIZE TERMINATOR FOR BAD SECTOR TABLE -2 (R4) SUB BNE #2,R3 3s ‘DONE CLEARING YET ? NO *BR IF BEGCOD,R1 GET THE ACTUAL OP CODE CLR (R45+ :SKIP OVER FIRST FLAG, MIN/MAX ADRS :LIMITS AND BAD SECTOR TABLE “CLEAR A LOCATION :INITIAL COMMAND CODE MOVB asccoo $CODE(RO)’ MOvVB Mov8 ASLB MOV sOPERATION CODE COMTBL(RI) SCOHND(RO) ;PATTERN CODE BEGPAT, SPATTC (R0) ;CONVERT CODE TO A TABLE INDEX SPATTC (RO) BEGWC, SWRDL (RO) :BEGINNING WORD COUNT BEGWC,SWCNT(RO) ;VALUE FOR DATA TRANSFER S$WCNT (RO) :MAKE IT INTO 2'S COMPLEMENT #1.$CODE (RO) :HEADER COMMAND? MOV MoV MoV (SP)+,RS (SP)+,R4 (SP)+,R3 RTS PC ::POP STACK INTO RS :;POP STACK INTO Ré s:POP STACK INTO R3 ::POP_STACK INTO R1 NEG MoV MOV #256.,8SSEC(RO) ;INITIAL VALUE OF SECTOR SIZE :PRESET PASS COUNT 10 1 #1,8PASSC(RO) BEQ ADD 43 #2,8SSEC(RO) BIT8 MOV 000207 PWRFLG R4 2 MOV MoV 4$: R3,-(SP) R4,~(SP) ADD MOV 000002 000030 132760 MOV BNE 000002 000106 ~ (= o N (=4 BNE MOV ADD 000002 000012 W o o N [=lel=] b b b NN = VSN NN = 8N gng‘NWNF IO N=O VOO NONNE MOV MOV NN A =t b b b b o #DPB,RO PC,CLRDPB (SP)+.R1 :BR IF NOT sADD HEADER SIZE TO SECTOR SIZE sRETURN ;§REII~E TO GET ADDRESS LIMITS FROM THE OPERATOR . 4 MOV #DPR.RO ;DPB ADDRESS - CZRNAAQ RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 29-1 m10 SEQ 0129 GENERAL SUPPORT SUBROUTINES JSR PC.DRVPRM ;CALL ROUTINE ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 1ST8 BNE 001150 001336 TST 8GT TST BNE TYPE 001442 66 027102 104401 076252 68 027106 004737 062760 103426 013760 027462 177777 001422 001434 001430 80 027172 005060 000130 000134 000140 82 027176 105737 001150 79 027166 000124 18: 000126 000132 000136 BNE 000130 2%: 3s: 4$: 001336 001442 100042 031030 000002 000010 000016 000040 5%: 000132 000136 CLR CLR CLR TST8 BNE TST 867 TST BNE 6$: CHGADR 1$ DRVPAR 18 LENTLMT :SAVE R3 :SAVE R :RUNNING IN AUTO MODE ? :BR IF YES sPROGRAM STARTED AT 200 ? :BR IF YES ;CHANGE DRIVE PARAMETERS ? :BR IF NO :"ENTER ADDRESS LIMITS' ;GET ADDRESS LIMITS ;SEE IF FIRST TIME STARTED :BR IF NOT s ;LOAD MAXIMUM CYLINDER CYLIMT,MAXCYL (RO} :LOAD MAXIMUM TRACK TRKLMT. MAXTRK (R0) :LOAD MAXIMUM SECTOR SECLMT.MAXSEC (R0) ? ;USING FE CYLINDERS ONLY FEFLAG :BR_IF NO 2% FE1,MINCYL(RO) :RESET MINIMUM CYLINDER ADDRESS 3$ MINCYL (RO) sCLEAR MINIMUM CYLINDER ;CLEAR MINIMUM TRACK MINTRK (RO) MINSEC(RO) ;CLEAR MINIMUM SECTOR PC,GETLMT z-i $FIRST(RO) $AUTOB 9 CHGADR 9 gg"?l~65§~ AUTO MODE ? :PROGRAM STARTED AT 200 ? :BR IF YES s CHANGE DRIVE PARAMETERS ? ;8 R IF NO ;PARAMETER TABLE ADDRESS :LOAD CYLINDER LIMIT FOR MINCYL ;LOAD CYLINDER LIMIT FOR MAXCYL sLOAD TRACK LIMIT FOR MINTRK :LOAD TRACK LIMIT FOR MAXTRK :LOAD SECTOR LIMIT FOR MINSEC :LOAD SECTOR LIMIT FOR MAXSEC :GET THE DRIVE'S PARAMETERS JSR PC,PARENT MOV MOV CMP ) ,R3 MINCYL(RO (RO) ,Ré MAXCYL R3.R4 58 (RO R3.,MAXCYL R4 ,MINCYL (RO HINTRK(RO;,; MAXTRK (RO R3.Ré 6$ sSTORE MINCYL VALULc ;STORE MAXCYL VALUE ;1S MIN. LESS THAN OR EQUAL TO MAX. ? :BR IF YES sSWAP MIN. TO MAX. ;SWAP MAX. TO MIN. :STORE MINTRK VALUE R&,MINTRK (RO) MINSEC(RO),R3 ;SWAP MAX. TO MIN, BLE 000126 016004 MOV BR MOV MOV MoV MOV MOV MOV MOV 000130 000126 000132 JSR ADD BCS MOV MOV MOV TST R3,-(SP) R4 ,=(SP) $AUTOB - MOV L J DRVPRM: MOV 58 027054 59 027056 MOV MOV MoV ;STORE MAXTRK VALUE R3,MAXTRK(R0O) :1S MIN, LESS THAN OR EQUAL TO MAX. ? :BR IF YES sSWAP MIN. TO MAX. MAXSEC(RO) ,R4 :STORE MINSEC VALUE ;STORE MAXSEC VALUE | 94 EN CZRNAAO RM80 PERF EXER MACFO V04.00 14~JAN-82 15:16:58 PAGE 29-2 GENERAL SUPPORT SUBROUTINES 111 027354 112 027356 113 027360 }}g 027364 116 027370 117 027374 118 027376 119 027404 120 027406 121 027414 122 027422 CMP 020304 003404 010360 010460 000136 000140 005737 001434 001016 026037 103003 013760 026037 103003 000130 001430 001430 000126 000130 001430 }gz 027424 013760 001432 000126 125 027432 016060 000130 000012 127 027446 128 027454 027456 116060 012604 012603 000140 000010 126 027440 116060 000134 000011 }gg 027460 005737 001434 139 027470 013737 001432 001422 142 027500 012737 001056 001422 144 027514 145 027522 146 027530 012737 032760 001003 000036 001000 001424 002172 148 027536 149 027540 150 027546 :USING FE CYLINDERS ONLY ? CMP_ ) ,FE1 MINCYL(RO ;IS MIN. CYLINDER < 1ST FE CYLINDER ? CMP L (RO) ,FE1 MAXCY MOV FE2,MAXCYL(RO) o, MoV BHIS MOV 9s 8$ FE1,MINCYLC(RO) 9s :BR IF NO :BR IF NO ;YES, RESET MIN. CYLINDER ;IS MAX. CYLINDER < 1ST FE CYLINDER ? :BR IF NO ;YES, RESET MAX. CYLINDER MINCYL (RO),$CYL (RO) MOVB MINTRK(R0O) ,$TRK(R0) RTS PC MOVB MOV MOV GETLMT: TST 137 027462 147 027532 FEFLAG ST BNE sINITIAL CYLINDER VALUE :INITIAL TRACK VALUE :INITIAL SECTOR VALUE MINSEC (RO) ,$SEC (RO) ::POP STACK INTO Ré (SP)+,Ré ::POP STACK INTO R3 (SP)+,R3 ;RETURN :RO = DPB ADDRESS BEFORE CALLING THE ROUTINE }gz 143 027506 215 MIN. LESS THAN OR EQUAL TO MAX. ? :BR IF YES ;SWAP MIN. TO MAX. ;SWAP MAX. TO MIN. :gREIINE TO GET THE ADDRESS LIMITS FOR THE CURRENT DRIVE TYPE :CALL ROUTINE PC,GETLMT JSR : }%{ }29 027476 9$: 000207 }%} 138 027466 8S$: R3.R4 SEQ 0130 73 R3,MAXSEC(RO) R4 ,MINSEC(RO) BLE MOV MOV 78: N 10 001004 000403 012737 005760 001403 012737 000207 000015 001426 BNE MOV BR 1$: 2%: 000112 000037 001424 3$: 4$: MOV FEFLAG :USING FE CLYINDERS ONLY ? FE2,CYLIMT :GET 2ND FE CYLINDER 18 2$ #558. ,CYLIMT MOV #13., TRKLMT ST $SSENB(RO) MOV BIT BNE BEQ MOV RTS :BR IF NO :GET LAST CYLINDER sGET LAST TRACK FOR AN RM80 :GET LAST SECTOR #30.,SECLMY (RO) ;IS SKIP SECTOR INHIBIT SET ? #SSEI,SRMOF {3 :BR IF YES 43 #31.,SECLMT PC :WAS SKIP SECTORING ENABLED DURING XFER ? :BR IF NO :GET LAST SECTOR sRETURN c2l ENI CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 30 B N SEQ 0131 OO0~ N ;ROUTINE TO GET THE DRIVE (MBA) SFRIAL NUMBER FROM RMSN REGISTER :ggg?AfUnaggERCONTAINED IN THE REGISTER ARE ONLY THE & LSD'S OF THE s CALL: : H GETID: PION) = b cd = b e d b 045062 000004 002170 000060 002130 30 027646 MOV JSR #DPB,R0O PC,GETID :DP3 ADDRESS s CALL ROUTINE :RO = DPB ADDRESS BEFORE CALLING THE ROUTINE =2 OV NOWVIS NN = =1 GENERAL SUPPORT SUBROUTINES 000207 MOV MOV MOV MOV RO,=-(SP) R1,=-(SP) R2,=(SP) RS,~(SP) MOV $SRMSN(RO) ,R1 MOV JSR MOV 18: (LR ROL ROL ROL ROL ROL ROL ROL ROL ADD MOovB8 INC DEC BGT MoV MoV MOV MoV RTS RO,R2 PC,SVRH70 #4 ,R2 RS R1 RS R1 RS R1 RS R1 RS #'0,RS :2PUSH RO ON STACK :2PUSH R1 ON STACK :2PUSH R2 ON STACK :2PUSH RS ON STACK :GET INDEX TO DPB :SAVE ALL REGISTERS :FOUR DIGITS TO STORE ;SERIAL NUMBER :1ERO :PUT THE NEXT DIGIT JINTO RS JMAKE IT ASCII RS.‘DRVSN(RO) :SAVE DRIVE (MBA) SERIAL NUMBER DIGIT 1$ (SP)+ RS ¢NO == BRANCH ::POP STACK INTO RS RO R2 (SP)+,R2 (SP) +,R1 (SP)+,RO PC JGET NEXT INDEX FOR DRIVE (MBA) SERIAL NUMBER :ALL DIGITS TYPED? :;POP STACK INTO R2 :;POP STACK INTO R1 ::POP STACK INTO RO ¢RETURN CZRNAAQ RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 31 cn SEQ 0132 READ DEC144 FILE .SBTTL 5 READ DEC144 FILE A 5 6 7 8 13 :THIS ROUTINE IS USED TO READ THE DEC144 BAD SECTOR FILE FROM CYLINDER 558, TRACK 13. AND TO STORE THE FILE IN IT'S RESPECTIVE DPB TABLE. *THE DPB TABLE HAS ENOUGH ROOM TO SAVE THE ENTIRE MFG AND USR PORTIONS :OF THE DEC144 FILE. (MFG=126. ENTRIES AND USR=126. ENTRIES) EVERY TIME * HE DRIVE IS ASSIGNNED THE DECT44 FILE 1S READ TO DETERMINE THE STATUS OF THE CURRENT HDA SERIAL NUMBER. BUT, IN ORDER TO INITIALIZE THE BAD SECTOR ENTRY TABLE, AT LEAST ONE OF FOLLOWING STATEMENTS MUST BE VALID. }} 1) oR FIRST TIME PROGRAM WAS STARTED }2 :2) or LOCATION 'BADBLK® IS EQUAL TC 1 15 16 }g :3) : ; LOCATION °'BADBLK' IS EQUAL TO O AND THE HDA SERIAL NUMBER CHANGED SINCE THE LAST TIME IT WAS READ. (DEFAULT) 3 19 NOTE: IF THE SERIAL NUMBER HAS CHANGED, THIS MOST LIKELY MEANS THAT THE 22 23 *THIS ROUTINE CHECKS THAT THE TwWO SERIAL NUMBER WORDS ARE NOT ZERO “AND THE ENTIRE SERIAL NUMBER IS POSITIVE. ALSO, WORDS 3 AND & ARE . g? HDA OR DRIVE HAD BEEN REPLACED WHILE THE DRIVE WAS DEASSIGNED. 1CHECKED TO BE ALL ZERO WORDS. IF THE DECi44 FILE DOES NOT COMPLY 24 *WITH T41S STUCTURE, AN ERROR MESSAGE IS TYPED AND THE ROUTINE IS EXITED. 52 ;CALL 4 : 28 : gg MOV JSR #DP8,RO RS,GETADR ;DPB ADDRESS ‘READ DEC144 BAD SECTOR FILES 35 ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 33 027650 GETADR: 027650 010146 027652 027654 34, 027656 35 027662 36 027664 37 027670 38 027672 39 027676 %0 027704 41 027712 010246 010346 004737 010001 062701 010146 111037 012737 113737 112737 012703 004037 48 027754 49 027756 50 027762 51 027764 000772 005737 001775 100010 54 030002 103357 47 027752 52 027766 §3 027774 067556 062737 123737 R1,=-(SP) MOV RO.R1 027462 MOV MOV JSR 000146 ARD 067556 001056 001426 000000 42 027720 012737 177400 43 027726 112737 000171 4% 027734 012737 000010 45 027742 46 027746 MOV 101174 041000 06?570 067567 067566 067562 067560 001270 28: 000002 001270 067566 067566 ::PUSH R2 ON STACK *:PUSH R3 ON STACK *GET ADDRESS LIMITS :DPB ADDRESS ‘ADDRESS OF BAD SECTOR TABLE $:PUSH R1 ON STACK R1,-(SP$ *DRIVE NUMBER (R0).GENDPB :LAST CYLINDER #558. , GENDPB+SCYL GET LAST TRACK TRKLMT,GENDPB+STRK #0 ge~oP8+ssec :GET STARTING SECTOR OF 16 BIT MFG FILE MOVB #RDDAT.GENDPB+SCOMND MOV JSR #CYLNDR,R3 RO,RM80 ‘GET READ BUFFER ADDRESS *READ CURRENT SECTOR 1$ GENDPB+STATUS 28 33 :WAIT FOR QUE :READ DONE YET ? ‘BR IF NO ‘B8R IF NO ERROR, ELSE 1% :BR MOV GENDPB 067574 #$BDSEC,R1 ::PUSH R1 ON STACK MOV move MOV MOVB MOVB MOV 18: R2,.=(SP) R3.~(SF) PC.GETLMT BR ST BEQ 8PL ADD (MPB BHIS #-256. ,GENDPB+SWCNT #8..8C0We :UNE SECTOR WORD COUNT -READ DATA COMMAND SGET LAST SECTOR OF 16 BIT MFG FILE - - INCREMENT NEXT SECTOR TO READ $SEC #2.GENDPB *WERE ALL SECTORS TRIED ? $(DW2,GENDPB+SSEC IF NO C CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 31-1 0D 1 SEQ 0133 n ~ NNV O O (=] = 55 030004 56 030006 57 030010 58 030012 59 030014 60 030016 61 030022 AN SN NN NN NN READ DEC144 FILE 38: 177774 48: 067566 BM] BNE ST BEQ ST BNE ST BNE 98 4 -4 (R3) 98 (R3)+ 9s (R3)+ 98 ‘BR IF MINUS (CORRUPT) ‘BR IF NOT ZERO (PLUS) *ARE SERIAL NUMBERS ZERO ? :BR IF_YES (CORRUPT) YIS 3RD WORD ALL 0'S ? :BR IF NO_(CORRUPT) *IS 4TH WORD ALL 0°'S ? ‘BR IF NO (CORRUPT) BHIS 6% :BR IF YES 5§ “BR IF YES TST TST BNE ;gga3>,SHSNM(RO) 68: 78: 067566 000012 000012 067566 MOV MOV MOV MOV MOV DEC BNE g:?g MOVB 000036 001270 - SO o H ;STORE HDA SERIAL NUMBER #126. .R2 ;NUMBER OF ENTRIES PER FILE (MFG/USR) 7 *BR IF NO (R3)+. (R1)+ (R3)+, (R1)+ R *STORE BAD CYLINDER ADDRESS *STORE BAD TRK/SEC ADDRESS ? ‘DONE WITH ENTRIES égsa BAD FILE DONE YET ? $§§opaosssc0. BRIF¥ #10.,GENDPB+$SEC #30. .$CDW2 8PL 8s B8R 1$ MOV ST yéQRE MSB'S OF S/N SAME AS BEFORE ? :GET STARTING SECTOR OF USR FILE :GET LAST SECTOR OF USR FILE (SP) .R1 (R1)+ ‘GET BEGINNING OF $BDSEC TABLE ? ‘IS THIS TERMINATOR -(R1) ‘FOUND TERMINATOR, BACKUP 1 WORD :BR IF NO 076442 98: ;;Pe i1145RR2 :REPORT, INVALID DEC144 FILE STRUCTURE 076362 108: TYPE ,MERR1 ;REPORT, FAILED TO RETRIEVE DEC144 FILES MOV (RO) =(SP) t:SAVE (RO) FOR TYPEOUT BYTE BYTE TYPE MOV MOV MOV MOV 2 0 ,$CRLF (SP)+,R1 #252..R2 #-1, (R1)+ #-1.(R1)+ S3TYPE 2 DIGIT(S) * *SUPPRESS LEADING ZEROS SCR-LF 1:POP STACK (NTO R1 ggv 121.3us~n(ao> :1~ochrs SERIAL NUMBER IS UNKNOWN ST (SP)+ ;RESTORE STACK MOV (SP)+,R3 ::POP STACK INTO R3 118: 075304 o -10(R3) susuL(RoS -6(R3),$HSNM(RO) MOV TST elolelelelelalJ Y N N o o W b b ek md b b ek TINIT. BAD SECTOR TABLE ENTRIES ? ggg TYPE TYPOS — BADBLK :READING USR BAD FILE ? 000144 8s: 95 030172 GENDPB+$SEC,#10. *ARE MSB'S OF SERIAL NUMBER VALID? 177770 000142 000176 91 92 030160 93 030164 94 030166 (R3)+ ;;ocns»snsuL(noSBR ‘ NéARE LSB'S OF S/N SAME AS BEFORE ? S$: 000142 177770 000144 177772 O 00 001374 12 10 1 :BR IF UNSUCCESSFUL ON RETRIES :DON'T CHECK LSB'S OF SERIAL NUMBER g:g 177772 80 030116 81 030120 82 030122 83 030130 84 030132 85 030140 86 030146 87 030150 88 030152 89 030154 90 030156 108 (R3)+ CMPB 000012 001510 74 030072 75 030100 76 77 030106 78 030112 79 030114 BR ST 001203 000374 177777 177777 177777 128: 000144 }2§: UNTMSG STYPE *ON DRIVE' ;360 TYPE"OCTAL ASCII ‘TOTAL NUMBER OF ENTRIES ALLOWED LINITIALIZE CYLINDER LOCATIONS TO =1 INITIALIZE TRK/SEC LOCATIONS TO =1 CZRNAAO RMBO PERF EXER MACRO V04.00 14=~JAN-82 15:16:58 PAGE 31-2 EN SEQ 0134 READ DEC1464 FILE 030246 030250 108 030252 012602 012601 000205 MOV MOV RTS ::POP STACK INTO R2 :é;?? STACK INTO R1 '—7 CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 32 F1 SEQ 0135 ENTER BAD SECTOR ROUTINE ENTER BAD SECTOR ROUTINE ;ROUTINE TO ENTER BAD SECTOR INFORMATION MANUALLY sCALL: MoV JSR #DP8,R0 PC.MANTER :DPB ADDRESS :CALL ROUTINE RO = DPB ADDRESS BEFORE CALLING THE ROUTINE MANTER: 30270 30272 OOV ) b = b b b e b b b ~NO VSN = OO0 YO NN~ .SBTTL 001150 BNE TST 001442 1$: 001340 076302 000146 000374 177777 2s: CMP 8eQ TYPE 3s: 000002 48: R1,-(SP) R2.-(SP) R3.,-(SP) R4 ,=(SP) $AUTOB 198 DRVPAR 198 CFLAG -ENTADR OSBDSEC R4 c<126 *2>,R1 #-1, (R4) 3s #4 ,Ré R1 28 R4 .- (SP) #-1,(R&) #-1.2(R&) #°'L,(R1) 7% PC,TYLISTY 5%: 6$: 'A (SP)+ R4 (SP)+ R #-1,(R4)+ #-1,(R4)+ R1 63 ALOST 077262 is 78: ;INDEX VALUE OF TABLE ADDRESS :TABLE STARTING ADDRESS :256. TOTAL BAD SECIORS ALLOWED SENTRY IN THE TABLE ? ;BRANCH IF ;ADJUST THE TABLE ENTRY POINTER :DECREMENT THE BAD SECTOR COUNT :BR IF TO NEXT ENTRIES POSITION sSAVE THE COUNTER AND FIRST :ENTRY POINTER PAIR -1 ;RESET CYLINDER TO ;RESET TRACK/SECTOR FIELD TO -1 :TYPE °CYL,TRK,SEC = :READ THE ADDRESS :READ IN TEXT ADDRESS ? :CONTROL=C ENTERED YES :BRANCH IF sWAS IT TERMINATED WITH CARRIAGE RETURN ? :BR_IF NO 5 1(R1) 7% 030650 RUNNING IN AUTO MODE ? :BRANCH IF SO s CHANGE DRIVE PARAMETERS ? :BR_IF NO sCLEAR THE CONTROL-C FLAG :MESSAGE TO ENTER... R1,=(SP) o8 (SP)+,R1 000114 :;PUSH R4 ON STACK E;?E*BAD SECTOR TABLE IS FUuLL' C;LAG 000001 ::PUSH R1 ON STACK :sPUSH R2 ON STACK ;;PUSH R3 ON STACK MSFULL LMSGCTS 001340 50 030444 51 030450 52 53 030452 MOV ADD MOV BNE 076506 1772777 177777 BNE CLR TYPE ADD DEC 000004 177777 177777 076544 MOV MOV MoV MOV 1ST8 gaslgflARACTER AN 'L'? sTYPE BAD SECTOR LIST FOR USER sRETRIEVE THE ENTRY POINTER ;RETRIEVE THE COUNT RSSE{ THE TABLE :ALL DONE ? ;BRANCH IF NOT sTYPE * + ALL CURRENT ENTRIES LOST #° :ENTER AGAIN FROM THE FIRST POINTER CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 32-1 61 SEQ 0136 ENTER BAD SECTOR ROUTINE CYLIMT,R2 01370 R5.CK.DIG ;UPPER LIMIT OF INPUT ;CHECK THE DIGIT(S) :CARRIAGE RETURN ONLY ENTERED ;PERIOD ONLY ENTERED s ILLEGAL INPUT Sg 030506 5 60 030510 030514 0004 R2, (R&) 9s: R, (R&) 18 R2, (R4) 16$ 108: 010214 0137C2 004537 8s: TRKLMT ,R2 R5,CK.DIG 001426 033072 ;TERMINATED WITH A CARRIAGE RETURN ;TERMINATED WITH A ° *TERMINATED WITH A **.** ;CYLINDER ADDRESS :FINISH WITH THE CURRENT ADDRESS ;CYLINDER ADDRESS :EXIT,PERIOD ENTERED :CYLINDER ADDRESS FOLLOWED BY ',° sUPPER LIMIT OF INPUT ;CHECK THE DIGIT(S) :CARRIAGE RETURN ONLY ENTERED :PERIOD ONLY ENTERED s ILLEGAL INPUT :TERMINATED WITH A CARRIAGE RETURN ;TERMINATED WITH A ° R2,3(R&) *TERMINATED WITH A **."* : TRACK ADDRESS ;TRACK NUMBER FOLLOWED BY CR 1 030534 62 030540 63 030542 64 030546 65 030550 110264 000424 110264 000431 110264 000003 118: 000003 128: R2,3(R&) 000003 138: R2,3(R&) ;EXIT, TRACK NUMBER FOLLOWED BY °.° :TRACK ADDRESS FOLLOWED B8Y ‘., 67 030554 030560 013702 004537 001424 033072 SECLMT,R2 R5.(K.DIG sUPPER LIMIT OF INPUT sCHECK THE DIGIT(S) 66 16$ 18$ s TRACK ADDRESS : CARRIAGE RETURN ONLY ENTERED ;PERIOD ONLY ENTERED sILLEGAL INPUT :TERMINATED WITH A CARRIAGE RETURN ;TERMINATED WITH A ° R2,2(R4) TERMINATED WITH A *".* :SECTOR ADDRESS ;EXIT,SECTOR ADDRESS FOLLOWED BY *.° :SECTOR ADDRESS 68 030600 110264 000002 14$: ;? 030606 110264 000002 158: R2,2(R&) 16$: R3 18% ;MORE ENTRYS ? :BRANCH IF EXHAUSTED :ADJUST FOR THE NEXT TABLE ENTRY sENTER NEXT SECTOR ADDRESS BADENT ;MESSAGE BAD ENTRY 062704 000004 77 030624 104401 076341 79 030632 062706 000004 74 030616 76 18$ #4 ,R6 13 TYPE B8R ADD MOV MOV MOV MOV RTS .SBTTL i #4,5P + R4 (SP) (SP)+,R3 (SP)+,R2 (SP)+,R1 PC TYPE BAD SECTOR LIST ;ENTER SECTOR ADDRESS AGAIN sCLEAR OFF THE STACK POINT ::POP STACK INTO Ré *POP STACK INTO R3 ,,pop STACK INTO R2 POP STACK INTO R1 ‘EXIT $ - SEQ 0137 TIRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 32-2 TYPE BAD SECTOR LIST ;ROUTINE TO LIST BAD SECTORS ON THE TERMINAL IN DECIMAL NUMBERS sFORMAT ]S: CYL,TRK,SEC CALL: : : MOV JSR #DP8.RO IST TV , PC ;DPB ADDRESS sCALL ROUTINE :RO = DPB ADDRESS BEFORE CALLING THE ROUTINE &H o o oAl g =4 =4 o o ~ 033230 032264 0 000401 005726 W ~ (v ~ o &»H o - 116116 o =4 ADD MOV RO.R1 R1.=(SP) *INDEX VALUE OF TABLE ADDRESS STABLE STARTING ADDRESS *SAVE ADDRESS FOR LATER 1$: CMP BEQ MOV #-1,(R1) 68 (R1),=(SP) 000003 MOVB 3(R1),(SP) € 75276 033230 032264 JSR JSR 000002 CLR BM] TYPE 28: 3s: 075276 033230 032264 001203 000004 001340 48: 58: 68: 077176 001203 001340 000207 ::PUSH R1 ON STACK ,LSTHDR #$BDSEC,R1 PC,$582D PC.SUPRSL purd 8\4 ~ ON NN NN N NNW N AN N AN N NN iy ——] OO0 O00000 NNNNNNNY OO 830732 30734 0 30740 R1,-(SP) JSR R © ~N N o o 0 MOV TYPE MOV 077216 000146 QOO W 010146 177777 [=lelelelelelelelalell =lelelelelele] i o b b b o o e b b e b b e i e e e D e b e cnd o NNNNNNNNNN—D—D—I—‘—I—.—A—.—.—DOOO? VOO NOWNB NN —=O VRNV WA =000~ 222328 b o md =D 030650 TYLIST: 78: BR TSI CLR MOVB BM] TYPE JSR JSR BR ST TYPE ADD ST BEQ CMP BNE TYPE TYPE CLR MOV RTS -($P) 2 .COMMA PC.$582D PC . SUPRSL 38 (SP)+ -(SP) 2(R1),(SP) X3 ,COMMA PC,$582D PC . SUPRSL 1 (SP)+ .SCRLF ¥4 R CFLAG 1 (SP)+,R1 78 ,NOENTY .SCRLF CFLAG (SP)+,R1 PC ‘TYPE 'DEC144 AND MANUAL BAD SECTOR LIST' ‘TERMINATCR 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 CONVEPT NUMBER TLEFT JUSTIFY AND TYPE JRESTORE STACK ;CLEAR H] BYTE AND PUSH STACK :GET SECTOR NUMBER :BR IF ALL BAD :TYPE °,° ;CONVERT NUMBER JLEFT JUSTIFY AND TYPE :RSSTORE STACK :CR=LF : INCREMENT POINTER sCONTROL=C ENTERED ? sBRANCH IF NO :ANY ENTRIES ? ;BR_IF YES ;TYPE °NO ENTRIES'® sCR=LF :CLEAR CONTROL FLAG ::POP _STACK INTO R1 ;RETURN $S CZRNAAO RMBO PERF EXER MACRO V04.00 14=-JAN-B2 15:16:58 PAGE 33 In SEQ 0138 PARAMETER ENTRY ROUTINE W) — .SBTTL sPARAMETER ENTRY ROUTINE s CALL: N MoV 010346 001340 031046 1%: 3s: o [\ ¥ ] o Jowrd ~ W 005037 012337 001442 104401 PARENT: MOV D ) d il AN NN N N NN NN ) el e =D Sy:c:cn:sggy:c:cu: ViVwAW bgwu OOFNOOSNORO JSR il -~ purd o (=] N = o o & - o 077572 ;PARAMETER TABLE ADDRESS ;GET THE PARAMETERS R3,=(SP) sSAVE THE PARAMETER TABLE ADDRESS sCLEAR THE °*CONTROL C*' FLAG sADDRESS OF PARAMETER NAME ;BR _IF AT END OF TABLE BEQ TYPE .WORD MOV MoV TYPDS TYPE ROLIN 001340 OO FRERNSERLoE&RRAN NS b CLR #ADR,R3 C ,PARENT Mov MOV b d e sTYPE THE PARAMETER NAME (R3)+,R2 (R3)+,RS (RS) ,~(SP) .SLASH (SP) +,R1 CFLAG 8s RS,CK.DIG b 076361 000006 b ad b NOONSO sREAD THE KEYBOARD sINPUT ASCII STRING ADDRESS s "CONTROL C' ENTERED ? sBR IF IT WAS sCHECK THE DIGIT(S) sCARRIAGE RETURN ONLY ENTERED sPERIOD ONLY ENTERED sTERMINATED WITH A CARRIAGE RETURN b b e md ad wid :ADDRESS OF PARAMETER NAME TEXT sMAXIMUM PARAMETER VALUE ;ADDRESS OF PARAMETER sCURRENT VALUE OF PARAMETER :!Y;E.THE CURRENT VALUE OF THE PARAMETER ¢ JLLEGAL INPUT b b d b b b = = 033072 001340 sTERMINATED WITH A °%* sTERMINATED WITH A °°.*' sMOVE NEW VALUE TO PARAMETER LOCATION 5%: R2.(RS) 6$: .BADENT #6,R3 7%: R2, (R5) sTRY AGAIN sNEW _VALUE (SP) ,R3 sCLEAR THE °*CONTROL C' FLAG sRELOAD THE PARAMETER TABLE ADDRESS 18 1$ 8s: 9% CFLAG 9$: 18 (SP)+ ~ W (V] NN N ) e b d— b N N NN NN NN N NN N L b d e L —d b b W N NN L b i — el b ok b AW & (e l=lel=l=l=l=Tolololo]elelelololalololololololololalolelalolelalelog ~NO VIS NN = OO~ W) = OO PIPININ) = b b b d cd md b d b S 1AY (AN 1) 8 ] ugwuwwwm W W = OV~ PARAMETER ENTRY ROUTINE PC :GET MORE PARAMETERS :'BAD ENTRY' ;DECREMENT THE TABLE POINTER cEXIT sTRY AGAIN sCORRECT THE STACK POINTER ;RETURN $S CZRNAAO RMBG PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 34 J 1" SEQ 0139 PARAMETER ENTRY ROUTINE ;TYPEGUT ASSIGN/DEASSIGN ERROR MESSAGE 1 sCALL: 2 3 e 7 031154 8 031130 9 031164 10 031170 031172 031174 031175 11 031176 12 031200 }z 031202 104401 104401 1064401 010446 ASNERR: TYPE TYPE TYPE 001203 (075272 075304 Mov TYPOS .BYTE 104403 002 000 .BYTE TYPE ASNMSG: .WORD RTS 104401 000000 000207 ;CALL: 16 17 18 19 20 031204 21 031206 22 031210 23 031216 24 031224 25 031226 26 031232 27 031236 28 031242 29 031246 005004 111004 146437 146437 006304 010064 104401 104401 104401 104401 30 031252 31 031254 006204 010446 031256 031260 031261 %% 031262 104403 002 000 000207 3 36 031264 37 031272 38 031274 39 031302 40 031304 41 031310 42 43 #MESADR ,ASNMSG ;ERROR MESSAGE ADDRESS ,$CRLF :CR-LF Ré,=-(SP) 1:SAVE R4 FOR TYPEOUT PC,ASNERR "QUES " UNTMSG K *TYPE °*DRIVE' ;;TYPE DRIVE NUMBER 2 0 ::G0 TYPE-=0CTAL ASCII ;s TYPE 2 DIGIT(S) ; :SUPPRESS LEADING ZEROS g sMESSAGE ADDRESS sTYPE SPECIFIC MESSAGE C ;DEASSIGN DRIVE IF A FATAL ERROR OCCURS 15 44 MoV JSR RETURN % DROP: 040300 040300 001542 032012 JSR RETURN PC,DROP CLR ;CLEAR R4 FOR DRIVE NUMBER R4 :MOVE DRIVE NUMBER TO Ré (RO) ,Ré ;REMOVE DRIVE FROM ASSIGNED LIST ATABIT(R4) ,ASNLST :DELETE DRIVE FROM AUTO ASSIGN LIST ATABIT(R&) ,AUTLST sMAKE DRIVE NUMBER INTO A TABLE INDEX R4 sPUT DRIVE IN DROP LIST RgEgE§VS(R4) Mov8 8I(8 8I(8 ASL Mov 001544 001203 075700 075753 075304 TYPE TYPE TYPE TYPE ASR MOV TYPOS .BYTE 18: RTS .DROPNG sTYPE 'FATAL CR EXCESSIVE ERRORS' +UNTMSG R4 R&,-(SP) ;TYPE °*DRIVE'® ;DRIVE NUMBER ;:SAVE R4 FOR TYPEOUT -MSGUN 2 gC :TYPE 'ON' 2;TYPE DRIVE NUMBER ::G0 TYPE--OCTAL ASCII ssTYPE 2 DIGIT(S) : :SUPPRESS LEADING ZEROS ;ROUTINE TO DEASSIGN DRIVE It ERPCRS BECOMES EXCESSIVE 032777 001006 023760 101002 000137 000207 000020 147662 001456 000072 031204 : 8IT ABNRML BNE CMpP BHI 18: JMP RTS #SW04 ,aSWR :3EE IF SWITCH & SET BN I€ IT'S SET 13 MAXER, $TOTAL (RO) :CHECK TOTAL ERROR VALUE 18 :BR IF ERRORS DO NOT EXCEED MAX PC *RETURN DROP ‘DEASSING THE DRIVE ;ROUTINE TO CHECK FOR END OF PASS AND END OF TEST K 11 CZRNAAO RMBO PERF EXER MACRO \J4.00 14-JAN-82 15:16:58 PAGE 35 SEQ 0140 END OF PASS ROUTINE .SBTTL 1 END OF PASS ROUTINE AL DL LR L L L L AL A AL A bbbttt R 'INCREHENT THE PASS NUMBER ($PASS) ;«IF THERES A HONITOR GO 10 IT ;«IF THERE ISN'T JUMP TO RTURN 031312 031312 $EOP: 005737 001500 ST 001412 BEQ 031326 101020 031330 103404 031332 026037 031340 103013 BHI BLO CMP BHIS 031316 031320 026037 000040 001450 031342 000036 1$: 000207 031344 026037 000044 031352 101006 031354 103404 031356 026037 000042 031364 001446 103001 001454 EOP1: 001452 031366 000207 18: 031370 010446 EOP2: 031400 031402 031406 001023 104401 104401 031372 032777 000400 147554 031412 031416 031420 031424 031430 016046 104405 111037 104401 104401 001203 075734 000104 001324 075753 075304 031440 031442 031443 031444 031450 104403 002 000 104401 111004 031452 105737 001150 136437 040300 032012 031500 026037 000104 001470 031510 032777 000020 147436 031520 031524 104401 104401 075760 075776 031456 031460 001410 001203 1$: 001033 031530 104401 075304 031524 013746 001324 031540 104403 RTS PC ;CHECK MSW OF WORDS DATA COUNT :BR IF MSW GREATER THAN LIMIT EOP2 :BR IF MSW LESS THAN LIMIT 18 “CHECK LSW AGAINST LIMIT SENDAT (RO) ,ENDCON :BR IF EQUAL OR GREATER EOP2 (MP BHI 8LO CMP ;CHECK MSW OF SEEK COUNT se~osx+2<ao> ENDSEK+2 :BR IF MSW GREATER THAN LIMIT 0P2 SEXIT IF MSW LESS THAN LIMIT 1s ;CHECK LSW OF SEEK COUNT SENDSK (RO) , ENDSEK RTS PC EOP2 :BR IF EQUAL OR GREATER MOV R&,=(SP) :SAVER4 BNE TYFE TYPE 1s ,SCRLF ,ENDPAS ‘BR IF YES :CR-LF ‘END OF PASS FOR THE DRIVE BHIS BIT #SW08,aSwR MOV TYPDS MOVB TYPE SPASSC(RO).-(SP) MOV ORVNO, = (SP) (RO),DRVNO ,MSGON ,UNTMSG *INHIBIT END OF PASS TYPEOUT ? : sSAVE S$PASSC(RO) FOR TYPEOUT ::G0 TYPE==DECIMAL ASCII WITH SIGN *STORE THE DRIVE NUMBER :TYPE *ON' S*DRIVE' *:SAVE DRVNO FOR TYPEQUT (RO).Ré4 2360 TYPE-=OCTAL ASCII SSTYPE 2 DIGIT(S) ..suppnsss LEADING ZEROS :CR=LF novs DRIVE NUMBER TSTB $AUTOB ;RUNNING IN AUTO MODE ? BITB ATABIT(R4),AUTLST 1S DRIVE ALREADY ASSIGNED TO AUTO LIST ? CMP $PASSC (RO) ,PASSES ;SEE IF AT END OF TEST BIT #SW04 , aSWR TYPE TYPE LENDTST .MSGFOR TYPOS .BYTE .BYTE TYPE MOVB 2 0 ,SCRLF 2$ ‘BR IF NO :BR IF YES 6$ BNE SADD DRIVE TO AUTO ASSIGN LIST BISB ATABIT(R4) ,AUTLST 3s B8R 0314(% 001071 156437 040300 032012 031476 000443 031516 :END OF PASS DETERMINED BY SEEKS OR DATA WORDS ? *BR IF SEEKS SENDAT+2(RO) ,ENDCON+2 BEQ 031470 031506 103437 EOP1 CMP TYPE 031434 013746 001324 ENDING 28: B8LO BNE TYPE MoV TYPOS 3s :BR IF NOT 3s :BR IF NO UNTMSG DRVNO =(SP) S'DRIVE ' ::SAVE DRVNO FOR TYPEOUT STYPE END OF TEST MESSAGE ? STYPE 'END OF TEST® *TYPE 'FOR' ::60 TYPE--OCTAL ASCII CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 35-1 n SEQ 0141 END OF PASS ROUTINE 001542 ASL 001544 001542 000431 031614 032777 062704 012703 031636 005024 031644 :DEVCT 001216 001214 100000 001214 000400 147340 023714 031632 000104 031652 105737 001150 0015%2 000207 031674 031700 005237 3s: 4$: 5$: 005260 031672 #100000,8PASS 78 000036 000006 031646 6$: 8s: 3 031766 012706 :DRIVE'S BLOCK ADDRESS (R&4)+ R3 5% (SP)+,R3 ;QUTOB (SP)+,R4 PC 001214 #100000 $PASS SDEVCT (PC)+ :ADD THE STARTING ADDR OF SECTIONS TO CLEAR :NUMBER OF LOCNS TO BE CLEARED s (CLEAR SENDAT, SENDSK AND SOPERC COUNTERS) ;CLEAR THE LOCN :DECREMENT THE LOCATION COUNTER :BR IF MORE TO GO :RESTORE R3 s INCREMENT THE PASS COUNT sRUNNING IN AUTO MODE ? :BR IF NO :HAVE ALL DRIVES COMPLETED PASS IN AUTO MOCE ? :BR IF YES :RESTORE R4 <RETURN sCLEAR AUTO ASSIGN LIST FOR NEXT PASS AND sWAIT FOR TTY :ALLOW INTERRUPTS ¢ INCREMENT DEVICE COUNT ..INCREHENT THE PASS NUMBER ..Eggp; ALLOW A NEG. NUMBER $DOAGN {PC)+.3(PC)+ s YES 2 sRESTORE COUNTER $GET42: ané2,R0O $ENDAD: PC,(RO) ;:GET MONITOR ADDRESS :;BRANCH IF NO MONITOR ;2CLEAR THE WORLD 2:G0 TO MONITOR 2 :SAVE ROOM $DOAGN J:FOR 000240 000137 031766 égH{?ITESND OF PASS TYPEOUT ? RO,.R4 #SENDAT ,Ré #6,R3 R3,=(SP) 177776 $SENDCT: 5 031764 :AVOID NEGATIVE NUMBER gxcg TgE DRIVE'S STATISTICS SUMMARY AUTLST 8$ #PRO,PS $EOPCT: s INCREMENT DEVICE COUNT : INCREMENT THE PASS COUNT PC,SUMARY AgNLST.AUTLST 032012 032012 000042 #SW08,aSWR 4$ $PASSC (RO) 7$: 000000 001216 001214 100000 sTYPE 2 DIGIT(S) SUPPRESS LEADING ZEROS sDELETE DRIVE FROM ASSIGNED LIST ArAale.) Asm.sf MAKE DRIVE NUMBER INTO TABLE INDEX :PUT BLOCK ADDRESS INTO DROP LIST RO DDRVS (R4) gkLIDngfS ARE DEASSIGNED ? ;SNLST 2 0 b 040300 .BYTE .BYTE BI(8 $DOAGN: $RTNAD: 001100 RTURN: J:ACTH a(PC)+ ;;RETURN #STACK,SP sRESTORE STACK RTURN CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 35-2 MmN SEQ 0142 END OF PASS ROUTINE 031772 031776 032002 032006 005237 004737 004737 000137 0 32012 000000 AUTLST: INC JSR JSR JMP STESTN .WORD 0 PC,STKINT PC,CKCLK MAIN : INCREMENT THE TEST NUMBER IN THE MAIL BOX ;MAKE SURE KEYBOARD INTERRUPT AND sSYSTEM CLOCK ARE STILL ON. SsRETURN TO LOOP sAUTO ASSIGN LIST (USED IN AUTO RUN MODE) CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 36 N1 SEQ 0143 END OF PASS ROUTINE % 1 RRE{INE TO GET THE REMAINDER OF THE RANDOM NUMBER 4 H 9 8 032014 013746 037124 RETURN : $SLONUM, - (SP) GETREM: MOV 5 9 032020 013746 10 032024 01054 11 032026 12 032032 13 032034 }g 032036 004737 012605 037122 MOV JSR . MOV MOV (SP)+ RS RTS 000207 SHINUM,=-(SP) RS, -(SP) TST 005726 PC.GETREH MOV JSR 032040 NUMBER,RS PC,$DIV (SP)+ PC :DIVISOR INTO R5 REMAINDER IS IN RS :STORE RANDOM NUMBER ON THE STACK FOR DIVIDE UPPER PART PUT THE DJVISOR ONTO THE STACK :DIVIDE THE RANDOM NUMBERS PUT THE REMAINDER INTO RS ADJUST THE STACK POINTER INTEGER DIVIDE ROUTINE }9 .SBTTL 18 ttttttttttttttttittttttttttttttt*tttttttttttttttttttttttfit*tttt 19 tTHIS ROUTINE WILL DIVIDE A 32-BIT TWO'S COMPLEMENT INTEGER gz *EQTE SIGN AS THE DIVIDEND. 25 .* MOV LOW DIVIDEND,=-(SP) 27 28 A o% MOV JSR DIVISOR,=-(SP) PC,SDIV STACK NO ERROR TOP REMAINDER *DIVIDEND 8y A 16=-8BIT TWO'S COMPLEMENT INTEGER DIVISOR GIVING tA 16-BIT TWO'S COMPLEMENT INTEGER QUOTIENT AND A 16-BIT REMAINDER. *DIVISION WILL BE PERFORMED SO THAT THE REMAINDER IS OF THE 20 21 22 . % H 26 i %3 ;t %} H 33 o¥ gg 104412 40 032042 41 032046 42 032050 43 032054 44 032060 016605 000026 005004 016602 000030 016603 000032 005000 46 032064 004737 47 032070 48 032074 49 032100 50 032102 5; 032104 5 53 54 55 56 57 :2QUOTIENT & REMAINDER ARE ON THE STACK DIVIDE BY ZERO OVERFLOW ..................... o* +2 QUOTIENT ::THE HIGH DIVIDEND MUST BE < 1/2 ;2AS LARGE AS THE DIVISOR ALL ZEROS ALL ZEROS ALL ONES ALL ONES o %g 45 032062 RETURN HIGH DIVIDEND,~(SP) :' "t 36 39 032040 MOV 005001 s«NOTE: THIS ROUTINE WILL LINK TO THE DIVISION SUBROUTINE ('M.DPID'). sSTORE RO - RS SAVREG $DIV: MOV CLR MOV MOV CLR Zo(SP) RS 30(SP) R2 32(SP).R3 RO JSR DPID CLR 032106 R1 R1 30(SP) MOV R3.32(SP) MOV RESREG (SP)+,(SP) MOV 010166 000030 010366 000032 104413 012616 000207 RTS .SBTTL sCALL: ; PC *DIVISOR OTHER DIVISOR WORD *UPPER DIVIDEND UORD WO *LOWER DIVIDEND CLEAR OTHER DIV'DEND REGISTERS ;GO TO THE DIVIDE ROUTINE *REMAINDER ON THE STACK OUOTIENT ON THE STACK RESTORE RO - RS HOVE RETURN UP THE STACK DOUBLE PRECISION DIVISION SUBROUTINE JSR PC,M.DPID B 12 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 36~1 SEQ 0144 DOUBLE PRECISION DIVISION SUBROUTINE DIVIDEND = RO-R1-R2-R3 (RO-MSD) DIVISOR = R4=RS (R4=MSD) *RETURN REMAINDER AFTER oxv;s = RO-R1 (RO=MSD) QUOTIENT AFTER DIVISION = R2-R3 (R2:=MSD) 000040 000002 000002 000002 M.DPID: MOV #40,-(SP) :COUNTER FOR DIVISION CYCLES MOV RS.=-(SP) 1LOW ORDER DIVISOR TO THE STACK NEG asP MOV NEG SBC ADD ADC ADD BCS CLR M.DP4O: ROL ROL ROL ROL 000002 000004 ST BEQ CLR ADD ADC ADC NOONNO NN N NN NININININ NINONINOMNON) 2 NN =lelelelalelelelelelals] o OO - 000006 000207 *VERSION OF THE DIVISOR 2(SP) asP,R1 RO :PERFORM THE INITIAL SUBTRACTION M.DPS0 :IF CARRY THEN OVERFLOW HAS OCCURRED 2(SP) ,RO -(SP) ‘THIS IS A LONGER LASTING CARRY BIT asp M.DP41 asP sTEST '"'CARRY'* INDICATOR *IF NO “CARRY'' THEN ADD ELSE SUBTRACT ‘CLEAR UP FOR NEXT TIME R3 R2 R1 RO 2(SP) .R1 I ;ADD =(DIVISOR) :SET "'CARRY’’ ;1 ;ADD +(DIVISOR) SSET '‘CARRY ;> 1 ;SET "'CARRY"’ *TEST THE UPDATE INDICATOR *IF ZERO FORGET IT :NO CARRY POSSIBLE HERE RO asP ADC ADC RO asP R5.R1 RG,RO ST BEQ INC asP asp .44 R3 B8GT ROR B8CS M.DP40 R3 M.DP44 M.DP42: ADC 000010 *FORM NEGATIVE 4(SP) ,RO: <~ M.DP42 ADD DEC ADD ADC ADD CLC M.DP44: ROL *HIGH ORDER 2(5P) ADD BR M.DP41: ADD 000006 R&,=(SP) 6(SP) <= ¢~ ‘DECREMENT COUNTER ‘BRANCH IF MORE TO DO RS.RI RO R4 .RO R3 ?23 #10,5P RTS M.DP50: ADD SEV RTS PC #6,SP PC :ADJUST STACK BY & WORDS ¢ 12 CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 37 SEQ 0145 SUPRS = TYPE ASCI1Z. REPLACE LEADING 0°S WITH BLANKS 1 % .SBTTL .SBTTL 4 RN 5 CALL 6 g : : 9 }? : : 12 032264 13 032266 010046 016600 }g 032276 000405 17 032300 18 032302 19 032306 010046 016600 010037 21 032312 22 032314 23 032316 105710 001406 122710 000060 25 032324 112720 000040 000004 14 032272 005037 032354 20 032312 24 032322 26 032330 27 032332 28 032334 29 032340 30 032344 31 0323«0 32 032352 73 032354 34 032356 35 032360 36 032362 001006 000770 005300 112710 005737 001002 010037 104401 000000 012600 012616 000207 000004 032354 oR 032354 RN RN SUPR1: 38: 4s: SUPR2: AR R AN RRRR A RN T RARR AR RN RN RANCSE ;FIRST ADDRESS OF ASCIZ STRING MoV JSR #NUMADR ,-(SP) PC,SUPRSL ;FIRST ADDRESS OF ASCIZ STRING RO,=(SP) 4(SP),RO :SAVE RO ;GET POINTER TO MESSAGE SUPR2” BR SUPR1 MOV MOV MoV RO,=(SP) 4(SP) R0 RO,SUPR2 :SAVERO *GET POINTER TO MESSAGE :GET POINTER FOR TYPING 1ST8 BEQ (RO) 2$ CMPB #'0,(RO) TEST FOR TERMINATOR sYES , IS THIS A '0* ? Mmovs #40,(RO) + :REPLACE IT WITH A 'BLANK'' BNE 2s: AN #NUMADR,-(SP) PC,SUPRS CLR SUPRS: AN MoV JSR SUPRSL: MOV MoV 18: 000060 032354 SUPRS = TYPE ASCIZ, REPLACE LEADING 0'S WITH BLANKS SUPRSL ~-TYPE ASCIZ, LEFT JUSTIFY BR DEC Movs TST BNE MoV TYPE .WORD MoV MOV RTS 3s 1$ RO #'0,(RO) SUPR?2 4$ RO, SUPR2 0 (SP)+,R0 (SP)+,(SP) PC :NO ;NEXT CHAR. :BACKUP 1 sMAKE IT '0" sLEFT JUSTIFY ? :NO sYES ;RESTORE RO ;RESTORE STACK _] CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 38 D 12 SEQ 0146 $SUPRS =~ TYPE ASCIZ, REPLACE LEADING 0'S WITH BLANKS i) — .SBTTL .SBTTL $SUPRL = TYPE ASCIZ, LEFT JUSTIFY NS 'ttl'tt't.i.t'..tfittt'i"i'.titlttttt'tttfit'ttttttt.t'tt.tttfitt THIS ROUTINE IS SAME AS °'SUPRSL® AND 'SUPRS' EXCEPT THAT IT 000N :WILL SUPPRESS THE ERROR TYPEQUT IF Sw13=1. THIS ACCOMPLISHED BY ;USED TRAP CALL °‘DISPLY', INSTEAD OF 'TYPE'. TCALL: =20 d oy b =D ) b i ANN V0D NN N =2 O PININ) = e o = $SUPRS = TYPE ASCIZ, REPLACE LEADING 0°'S WITH BLANKS OR Mov JSR = (SP) #NUMADR, PC,.$SUPRS sFIRST ADDRESS OF ASCIZ STRING MOV = (SP) #NUMADR, PC.,$SUPRL sFIRST ADDRESS OF ASCIZ STRING RO,=(SP) :SAVE RO ;GET POINTER TO MESSAGE JSR 010046 016600 005037 000405 010046 016600 010037 105710 001406 000004 032454 000004 032454 $SUPRL: MOV MOV CLR $SUPR1: 1$: (RO) 23 #'0,(RO) 3s #40,(RO)+ 1$ RO #'0,(RO) $SUPR? 43 RO,$SUPR2 000040 032454 2s: 3s: 48: $SUPRZ2: 40 032462 000207 $SUPR1 RO,=(SP) 4(SP) RO RO,$SUPR2 $SUPRS: 000060 000060 032454 4($P) RO $SUPR2 . 0 (SP)+,R0 (SP)+,(SP) PC :SAVE RO :GET POINTER TO MESSAGE :GET POINTER FOR TYPING TEgT FOR TERMINATOR ? IS THIS A '0" ;NO tREPLACE IT WITH A 'BLANK'® :NEXT CHAR. :BACKUP 1 JMAKE IT ‘0" LEFT JUSTIFY ? ES :TYPE. UNLESS SW13=1 ;RESTORE RO ;RESTORE STACK C. SEQ 014;—1 CZRNAAO RMBO PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE 39 $SUPRL =~ TYPE ASCIZ, LEFT JUSTIFY s CALL: MOV #ADR,=(SP) : .WORD N ;REPLACE PRECEDING ZEROS WITH BLANKS MOV JSR #ADR,~(SP) RS, FILLZ ;ADDRESS OF NUMBER (IN ASCID) N :'N' IS NUMBER OF DIGITS TO BE TYPED FILLZ: INC FILLO sLEAVE ZERO'S REPLZ: MOV MOV TST BNE CMPB ENE +ove INC BR TST8 BNE DEC RO,=-(SP) 4&(SP) ,RO FILLO 3$ #°'0,(RO) 2$ #40, (RO) RO 18 (RO) 3s RO :SAVE RO :ADDRESS OF NUMBER TO Rv MOV T1ST8B BNE DEC sus MOV 4(SP) ,RO {RO)+ 4 RO (RS)+,R0 RO,S5S ;PUT ADDRESS OF FIRST CHARACTER ON STAC(K gSEIIF 6ERO BYTE TERMINATOR OR : . WORD : o » 005237 32470 010046 N &H 32472 26476 512 25 032530 26 032534 31 032550 032572 016600 005737 000004 032572 122710 000060 112710 000040 1%: 2%: 112710 016600 010037 000060 000004 MOov8 3$: 48: 032556 TYPE 5%: 36 032564 37 032570 38 23 032572 4 42 43 032574 44 032600 45 032606 46 032612 &7 032616 48 032620 50 53 52 53 54 55 56 57 005037 000205 032572 FILLO: 000000 ;ADDRESS OF NUMBER (IN ASCII) RS.REPLZ JSR : (=] W d e =2 OV NN NIA) b b b b cnd wd = . H h WA= O VNN WA= ;ROUTINE TO REPLACE LEADING ZEROS IN A NUMERIC STRING WITH SPACES #'0,(RO) MWORD MOV MoV CLR RTS O (SP)+,R0O (SP)+,(SP) FILLO RS .WORD 0 :'N' IS NUMBER OF DIGITS TO BE TYPED sTYPE PRECEDING ZEROS ;LEAVE PRECEDING ZEROS? :BR_IF YES :BYTE EQUAL TO ASCII *0° ? :BR_IF NOT ;REPLACE THE ZERO WITH A SPACE : INCREMENT THE BYTE ADDRESS ;60 BACK AND LOOK FOR MORE LEADING 7EROS gSEIgF 6ERO BYTE TERMINATOR :BACKUP STRING POINTER :PUT A ZERO BACK IN :BACKUP STRING POINTER :ADJUST ADDRESS :GET ADDRESS FOR TYPEOUT :TYPE THE NUMBER ;ADDRESS OF NUMBER :;POP STACK INTO RO sRESTORE STACK ;RESET FILL FLAG sRETURN ;1F SET, LEAVE PRECEDING ZEROS FOR TYPE ;ROUTINE TO TYPE AT PRIORITY 4 013746 012737 012537 004737 000000 000205 177776 000200 6 035550 177776 TYPRI&: MOV MOV MOV JSR 1$: WORD RTS a#PS ,-(SP) #200,84PS (RS)+,1% PC.STYPE O RS sSAVE THE PRESENT STATUS :CHANGE THE PRIORITY TO 4 :MESSAGE ADDRESS sTYPE THE MESSAGE :MESSAGE ADDRESS GOES HERE :RETURN ;ROUTINE TO TYPE THE DRIVE (MBA) SERIAL NUMBER IN DECIMAL .C LL: H H : : OR MoV JSR MOV JSR #DP8,R0O PC.TVDRV ;ADDRESS OF DRIVE PARAMETER BLOCK sCALL ROUTINE #0P8,R0O ;ADDRESS OF DRIVE PARAMETER BLOCK PC,TYPDRY sCALL ROUTINE(WITH NO HEADER MESSAGE) C. CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 39-1 F 12 SEQ 0148 S$SUPRL =~ TYPE ASCIZ, LEFT JUSTIFY ;RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 58 59 60 03262¢ 66 032650 104401 000207 077332 032642 002130 TYDRV: 032642 18: 076141 .DRVSN :TYPE °*DRV S/N:°' ADD TYPE #SDRVSN,1$ :INDEX TO DRIVE (MBA) SERIAL NUMBER STYPE THE DRIVE (MBA) SERIAL NUMBER TYPE LPERIOD TYPE TYPDRV: MOV RO,1$ WORD O RTS PC *ADDRESS OF DPB Aooaess ,OF DRIVE (MBA) SERIAL NUMBER FIELD :TYPE ' ‘RETURN :228{1"5 TO TYPE THE HDA SERIAL NUMBER IN DECIMAL : MOV #DP8,RO :ADDRESS OF DRIVE PARAMETER BLOCK : MOV #DP8,RO :ADDRESS OF DRIVE PARAMETER BLOCK ‘o : JSR JSR PC,TYHDA PC,TYPHDA : TALL ROUTINE :CALL ROUTINE(WITH NO HEADER MESSAGE) :RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 78 032652 81 03 82 032670 83 032672 84 C 2674 86 :TYPE 'HDA S/N:°' 13 *YES TYPE IT, ELSE RTS PC :RETURN JSR JSR TYPE PC,$DB2D PC.,SUPRSL :CONVERT TO DOUBLE DECIMAL NUMBER *AND TYPE IT LEFT JUSTIFIED BPL TYPE 18: 104401 000207 MoV ADD RTS $HSNM(RO) . NONE RO,=(SP) #SHSNL , (SP) _PERIOD PC ;1S SERIAL NUMBER VALID ? :DPB ADDRESS *ADDRESS OF LOW NUMBER ;TYPE°* *RETURN :zggllus TO TYPE ERRORS : : : o [ ] N ~N ~N N 032716 0327264 032732 032736 032742 032777 001004 005037 000137 062716 000002 020000 177776 035550 000002 146230 RETURN $DSPLY: BIT BNE CLR JMP 18: :MUST DEFINED IN °'TRAP' TABLE *ADDRESS OF MESSAGE DISPLY MESADR ADD RT] #B1T13,3SWR 13 NPS $TYPE #2,(SP) :INHIBIT ERROR TYPEOUT ? ‘BR IF YES :SET PRIORITY TO 2ERO :TYPE THE MESSAGE * INCREMENT THE RETURN *RETURN sTHIS ROUTINE IS USED TO CHECK IF AN b ;ASCI] CHARACTER IS A DIGIT BETWEEN O AND 7. b sCALL: MoV JSR #ADR,R1 R5.CK.OCT CK.OCT: gHPB LO (R1),4'0 18 b : . : : : N - 000067 NON NN b -l 000060 NHON —b g = o 752 ~ W 00O NN NN 2744 b b cad aud b b HDASN TYPE TYPHDA: TST 000207 010046 062716 b ach —b e b ek b O OO SN =O V0O~ —b TYHDA: 077320 000144 b b wd b 2SR032288 98228283 87 032710 88 032714 104401 RETURN1 RETURN2 cmPB (R1) ,4'7 sADDRESS OF ASCII CHARACTER sCHECK THE CHARACTER :CHARACTER IS NOT BETWEEN 0-7 ;CHARACTER IS IN R2 AS A :0CTAL DIGIT LESS THAN ZERO? == BRANCH ;YES :GREATER THAN SEVEN? CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 39-2 T 12 SEQ 0149 2756 101004 762 042702 770 000205 BH! 1$: sCALL: 033016 wn NN &S NN WA (=] € b wd b b = Q S =20NON so - purd oo oo WW WW (= W g2 032772 =b b aud Lpof —b ~J N O =t =2 N OOONON RETURN] RETURN2 000060 000071 CK.DEC: cMP8 8LO CMP8 BHI 000060 1$: 000205 sADJUST FOR RETURN sRETURN MOvVB BIC TST RTS #ADR,R1 R5,CK.DEC (R1) .20 13 (R1) ,4'9 13 (R1) ,R2 #'0,R2 (RS§+ RS sADDRESS OF ASCII CHARACTER sCHECK THE CHARACTER sNOT BETWEEN O AND 9 ;BETWEEN O AND 9 :R2 = DIGIT sLESS THAN ZERO? JYES == BRANCH ;GREATER THAN NINE? :YES == BRANCH JGET THE CHARACTER ;STRIP AWAY THE ASCII sADJUST FOR RETURN sRETURN :THIS ROUTINE WILL CHECK AN ASCII CHARACTER TO :DETERMINE WHAT IT IS. JCALL: YA TR TR YR YR BN X d e v #ADR,R1 R5,CK.CHR ADR1 RETURN RETURN ADR? ADR3 ADR& ADRS ARG T1ST8 (R1) 000056 032772 032744 0002 )~ AN (R1),4°, (R1),4°. RS,CK.DEC 43 RS,(K.OCT (R§)+ ) =4 o SN0 N o w N o 000054 8EQ CMPB 8EQ CMPB BEQ JSR B8R PADPROW d b e b CK.CHR: -t 033020 (54 S NN NNNWN OQOONININININIIN VIV = VNNV N O NN NW NN = IR b b e ced MoV JSR e d md ;STRIP AWAY THE ASCI! ;AND DETERMINE IF IT IS A DIGIT BETWEEN O AND 9. e OO — o . (RS) + RS :YES == BRANCH sGET THE CHARACTER ;THIS ROUTINE IS USED TG CHECK AN ASCII CHARACTER 67 066 033070 68 69 70 18 (R1) R2 #°C7 R2 . 177770 rd md md O N VWVAWNVWVWVVIWNMES D B DN INN = OV NN WN=O0V~N W= O VNV (%,] gWWWWNNNNNNNNNN b ad e oe WA = O 000NV WNN = OV ~NOWN S$SUPRL = TYPE ASCIZ, LEFT JUSTIFY 18: 2$: 3s: A ¥ RTS (RS)+ (RS)+ (RS)+ (RS)+ R1 (R5) RS R5 sTHIS ROUTINE CHECKS AN A SCI sCHARACTERS AND FORMS A D ECI ;ADDRESS OF ASCII CHARACTER sCHECK CHARACTER sUNKNOWN CHARACTER sCARRIAGE RETURN * (R1)=ADR+1 ;COMMA + (R1)=ADR+1 sPERIOD * (R1)=ADR+1 :DIGIT BETWEEN O AND 7. ;DIGIT BETWEEN 8 AND 9. :R2 = DIGIT + (R1)=ADR#+1 ;*'CARRIAGE RETURN'®? ;xEs == BRANCH SYES == BRANCH LYPERIOD'? “YES ~- BRANCH T0CTAL ? *DIGIT BETWEEN 8-9 *DIGIT BETWEEN 0<7 *PERIOD : COMMA : CARRIAGE RETURN sMOVE POINTER TO NEXT CHARACTER ;UNKNOWN CHARACTER :RETURN ) TRING FOR LEGAL L VALUE BINARY NUMBER IN R2. SEQ 0150 $SUPRL - TYPE ASCIZ, LEFT JUSTIFY sCALL: 172 : : : : : : : H 173 174 175 176 177 178 179 180 : }g; 183 033072 184 033074 185 033076 186 033100 187 033102 010446 010346 010246 005002 005003 188 033104 005004 189 033106 004537 033020 033112 033206 33114 033214 033116 033206 033120 033210 033122 033126 033124 033126 190 033126 062705 000004 191 033132 006303 192 033134 010346 193 033136 006303 194 033140 006303 195 033142 062603 196 033144 060203 197 033146 004537 033020 033152 033212 033154 033176 033174 03315° 03316y 033166 033162 033132 033164 033132 198 033166 105711 199 033170 001039 200 033172 005724 201 033174 005724 202 033176 005724 203 033200 020316 204 033202 101004 205 033204 000402 206 033206 207 033210 208 033212 209 033214 210 033216 211 033220 212 033222 213 033224 g}g 033226 216 005725 005725 060405 010302 (005726 012603 012604 011505 000205 Mov MoV JSR RETURN RETURN RETURN RETURN RETURN RETURN (K.DIG: MOV Mov MOV CLR CLR 1$: 2s: 38: 48: 58: 6¢: /$: 8s: 9s: CLR JSR 63 9% 63 78 18 18 ADD ASL Mov ASL ASL ADD ADD JSR 8s 5% 48 38 2% 23 1578 BNE 1ST 18T | cer 8HI BR ST ST ADD MOV TST MoV MoV MOV RTS #ADR,R1 #NUM,R2 R5,C(K.DIG ADR1 ADR? ADR3 ADR4 ADRS ;ADDRESS OF ASCIZ STRING :MAX. MAGNITUDE OF INPUT NUMBER SCHECK DIGITS R4 ,~(SP) R3,=(SP) R2,=(SP) R R3 :SAVE Ré ADR6 R4 R5,CK.CHR #4 RS R3 R3,-(SP) R3 R3 (SP)+,R3 R2,R3 R5,CK.CHR :"'CRTM ONLY ENTERED == R2=0 :*PERIODTM ONLY ENTERED == R2=0 :ILLEGAL CHARACTER OR INPUT TOO LARGE == R2=? :CRTM -= R2 = NUMBER == R2_= NUMBER :"'COMMA' :'PERIOD'* == R2 = NUMBER :SAVE R3 :SAVE THE MAX. SIZE ON THE STACK :START WITH 0 ;CHECK ONE CHARACTER :ILLEGAL CHARACTER : CARRIAGE RETURN :DIGIT 0-7 :DIGIT 8-9 :STEP RETURN POINTER PAST ‘‘CR'* & 'PERIOD'* RETURNS :INPUT NUMBER 2 :S:VE *2 * N ;%8 :(%2)+(«8) = «10 :UPDATE THE INPUT NUMBER ;CHECK ONE CHARACTER :JLLEGAL CHARACTER : CARRIAGE RETURN L4 [4 ot Ve :DIGIT Q=7 (R1) 8s (RG)+ (R4)+ {Re)¢ R3.,(SP) 9s 8s (RS)+ (R5)+ R4 RS R3,R2 (SP)+ (SP)+,R3 (SP)+,R4 (R5) ,RS RS :DIGIT 8-9 ;DOES A *'CR'* IF NOT : .BR FOLLOW THE , . ‘‘PERIOD‘’ s INCREMENT THE RETURN s INCREMENT THE RETURN s INCREMENT THE RETURN sCHECK THE MAGNITUDE OF THE NUMBER sBR_IF ENTERED NUMBER TOO LARGE :BYPASS INCREMENT s INCREMENT RETURN PAST INVALID RETURN RETURN s INCREMENT sSETUP RETURN POINTER sENTERED VALUE sCLEAN MAX. SIZE OFF OF STACK sRESTORE R3 sRESTORE Ré sGET RETURN ADDRESS ; RETURN ;THIS ROUTINE WILL CONVERT A 16-BIT UNSIGNED BINARY NUMBER TO AN TM CZRNAAO RMBO PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 39-3 SEQ 0151 $SUPRL -~ TYPE ASCIZ, LEFT JUSTIFY :UNSIGNED DECIMAL ASCIZ NUMBER. 217 218 tCALL: 220 : 219 221 55 226 033230 227 033236 016637 012746 000002 0332564 229 033246 012666 000002 gg; 033254 000000 000000 033256 : RETURN :NOTE: THE PROGRAM REQUIRES THIS FORM OF '$SB2D', NOT THE VERSION ON $SB2D: MOV MOV 230 033252 JSR MOV 18: PC,$582D "ADDRESS OF THE 1ST ASCIZ CHAR IS ON THE STACK THE SYSMAC LIBRARY, REV C AND LATER JSR 228 033242 004737 037222 000207 :ggILrue NUMBER ON THE STACK MOV : %gg NUMBER, = (SP) : RTS LWORD 2(SP) .18 #18,-(SP) PC,$082D (SP)+,2(SP) PC 0,0 ;SAVE THE BINARY NUMBER sSET THE POINTER ;CALL THE DOUBLE LENGTH CONVERT :PICKUP THE POINTER ¢RETURN 233 ;THIS ROUTINE WILL CONVERT A 16-BIT UNSIGNED BINARY NUMBER TO AN 235 :CALL: TUNSIGNED OCTAL ASCIZ NUMBER. 234 236 239 240 263 033260 264 033266 245 033272 266 033276 016637 012746 004737 012666 000002 033304 037416 000002 248 033304 000000 000000 247 033302 : RE TURN :NOTE: THE PRUGRAM REQUIRES THIS FORM OF °$SB20', NOT THE VERSION ON $5820: MOV MOV JSR MOV : 52; 000207 033304 ;gRILruE NUMBER ON THE STACK MOV : 237 238 NUMBER , - (SP) : 18: JSR PC,$5820 *ADDRESS OF THE 1ST ASCIZ CHAR IS ON THE STACK THE SYSMAC LIBRARY, REV C AND LATER RTS .WORD 2(SP),18 #1$,-(SP) PC,$0820 (SP)+,2(SP) PC 0,0 ;SAVE THE BINARY NUMBER :SET THE POINTER :CALL THE DOUBLE LENGTH CONVERT sPICKUP THE POINTER sRETURN @ CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 39-4 - CZRNAAO RM80 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 40 SEQ@ 0152 TTY INPUT ROUTINE Ty INPUT ROUTINE .SBTTL 1 AR 033310 033312 033314 033316 .ENABL RN LSB 000000 000000 $TKCNT: .WORD $TKQIN: .WORD 033325 $E5g£ND:. $TKOOUT: .WORD $TKQSRT: .BLKB 000000 AN TN AR AN RN R 0O 0 0 7 E RN R R AR AN RE AN AN R RN ::NUMBER OF JTEMS IN QUEUE s s INPUT POINTER :;OUTPUT POINTER ;:TTY KEYBOARD QUEUE :*TK INITIALIZE ROUTINE ;*THIS ROUTINE WILL INITIALIZE THE TTY KEYBOARD INPUT QUEUE :*SETUP THE INTERRUPT VECTOR AND TURN ON THE KEYBOARD INTERRUPT s*CALL: o A 033326 005037 033310 033332 033340 033346 033354 033362 033366 033374 012737 013737 012737 012737 005777 012777 000207 033316 033312 033376 000200 145574 000100 033312 033314 000060 000062 JSR RETURN $TKINT: CLR MOV MOV MOV MoV TST MOV 145564 RTS PC,$TKINT STKCNT ::CLEAR COUNT OF ITEMS IN QUEUE #$STKQSRT,S$TKQIN ;:MOVE THE STARTING ADDRESS OF THE $TKQIN,$TKQOUT ;;QUEUE INTO THE INPUT & OUTPUT POINTERS. #STKSRV @#TKVEC ;;INITIALIZE THE KEYBOARD VECTOR #200,3#TKVEC+2 ;;'BR'' LEVEL 4 asTKB #100,387TKS PC ::CLEAR DONE FLAG :JENABLE TTY KEYBOARD INTERRUPT ::RETURN TO CALLER ;*TK SERVICE ROUTINE :#THIS ROUTINE WILL SERVICE THE TTY KEYBOARD INTERRUPT :+BY READING THE CHARACTER FROM THE INPUT BUFFER AND PUTTING , :eIT IN THE QUEUE. eIF THE CHARACTER IS A ‘‘CONTROL=C'' (*C) STKINT IS CALLED AND **UPON RETURK EXIT IS MADE TO THE "'CONTROL-C'' RESTART ADNRESS (CTRAP) $TKSRV: MOVB 145560 033376 117746 033412 033414 001002 005726 033420 033424 033406 033432 021627 001007 104401 004737 000003 033444 033450 033452 033460 021627 001004 022737 001500 000007 BIC cMP 033402 042716 177600 033406 021627 000021 033416 033420 033436 033440 033462 033462 033470 033472 BNE ST 000002 005726 000137 022737 001004 104401 308: 034533 033326 034574 18: 000176 001154 000007 033310 001176 2s: RT] cMP BNE TYPE JSR ST JMP CMP BNE CMP BEQ CMP BNE TYPE as$TKB,~(SP) #°C177, (SP) , #§XON (SP) 308 (SP)+ (SP) A3 18 LSCNTLC PC,STKINT (SP)+ CTRAP (SP) A7 $ SWR #SWREG, 6$ #7,$TKCNT 3s LSBELL :sPI1CKUP THE CHARACTER s:STRIP THE JUNK 2218 IT A RANDOM XON? s sBRANCH IF NO ;s CLEAN RANDOM XON OFF STACK s RETURN :21S IT A CONTROL C? ::BRANCH IF NO ::TYPE A CONTROL=-C (“C) ;2 INIT THE KEYBOARD :sCLEAN UP STA(CK :sCONTROL C RESTART ;218 1T A CONTROL G? J:BRANCH IF NO ::1S SOFT=-SWR SELECTED? 260 TO SWR CHANGE ;218 THE QUEUE FULL? s sBRANCH IF NO ssRING THE TTY BELL o K 12 CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 40-1 SEQ 0153 TTY INPUT ROUTINE 3s: 000023 CMP 145444 31s$: 145436 TST8 1456432 000100 ;:IS IT A CONTROL=S? NO : ;BRANCH IF ..DISABLE TTY KEYBOARD INTERRUPTS (SP) ,#23 328 asTKS (SP)+ asTKS ;CLEAN CHAR OFF STACK 318 a$TKB,~(SP) #100,3$TKS 145410 328: 033310 000140 INC 000175 000002 s oEXIT 5$ #4C177.(SP) §§P>oN 73] 177600 000021 033624 ;CLEAN CHARACTER OFF OF STACK (SP)+ 005726 000040 177510 033312 033312 033325 033316 033312 4%: 5$: MOVB MOV RTI :3WAIT FOR A CHAR ssLOOP UNTIL ITS THERE ..GET THE CHARACTER MAKE IT 7-BIT ASCI1I ::1S IT A CONTROL-Q? 2 ;BRANCH IF NO ..REENABLE TTY KEYBOARD INTERRUPTS cRETURN :COUNT THIS CHARACTER 2:1S 1T UPPER CASE? s sBRANCH IF YES ::1S IT A SPECIAL CHAR? ..BRANCH IF _YES $TKCNT (SP) ,#140 X3 (SP) X175 43 #40, (SP) SPS+ asvxoxn ssMAKE IT UPPER CASE $3AND PUT IT IN QUEUE $:UPDATE THE POINTER $T STKOIN.JSTKOEND ..GO OFF THE END’ sBRANCH IF 5% #S$TKQSRT ,$TKQIN ..RESET THE POINTER TURN e L bbbt *SOFTUARE SWITCH REGISTER CHANGE ROUTINE. :*ROUTINE IS ENTERED LA L LI TR LA LA L L FROM THE TRAP HANDLER, AND WILL ;«SERVICE THE TEST FOR CHANGE IN SOF TWARE SWITCH REGISTER TRAP 033626 033634 033636 033642 033660 022737 001124 105777 100121 117746 001300 000176 001154 145316 145312 177600 000007 :«CALL WHEN OPERATING IN TTY INTERRUPT MODE. #SWREG, SWR $CKSWR: CMP :;1S THE SOFT-SWR SELECTED 158 BNE ..EXIT IF NOT TSTB a8$7TKS :1S A CHAR WAITING? 158 BPL ..IF NOT, EXIT MOV8 BIC CMP BNE asT1kB, =(SP) #2C177,(SP) (SP) 4?7 2s s YES ;IMAKE IT 7-BIT ASCII 2218 IT A CONTROL-G? ..IFDNg;I PUT IT IN THE TTY QUEUE ttt'ttttt'ttt'tttit'tttt'tt'tttt.fittttt.ttt.lttttttt.tttttttttt *CONTROL 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 123727 001150 033704 112737 033326 145254 000001 033712 104401 033726 104402 033662 034545 034552 000176 000001 6;C0NTR0%igBBEING TYPED, AND THE SOFTUARE SWITCH REGISTER BEING SELECTED. #1 $AUTO08, 001151 $GTSWR: TYPE ARE WE RUNNING IN AUTO-MODE? $ (SP)+ PC,STKINT asT KS #1,8INTAG ..BRANCH IF _YES sCLEAR CONTROL-G OFF STACK SCNTLG . SMSWR ::ECHO THE CONTROL=G (“G) ;s TYPE CURRENT CONTENTS :SAVE SWREG FOR TYPEQUT ::G0 TYPE--OCTAL ASCII(ALL DIGITS) SWREG, - (SP) ::FLUSH THE TTY INPUT QUEUE s:DISABLE TTYKEYBOARD INTERRUPTS s+SET INTERRUPT MODE INDICATOR CZl COi CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 40-2 L1 SEQ 0154 TTY INPUT ROUTINE 033730 104401 6 034563 145214 ~SMNEW 198: CLR 78: 1ST8 ;PROMPT FOR NEW SWR =(SP) =(SP) as$TKS 78 ..CLEAR COUNTER ¢ THE NEW_SWR : :CHAR THERE? ssIF NOT TRY AGAIN 033744 100375 033746 033752 117746 042716 145210 177600 asTK8,~(SP) #5177, (SP) ::PICK UP CHAR ssMAKE IT 7-BIT ASCII 033756 021627 001015 104401 062706 123727 001003 012777 000137 000003 (SP) 43 2:1S IT A CONTROL-C? <00001 gINTAGM ssREENABLE TTY KEYBCARD INTERRUPTS? 145146 034034 021627 001005 104401 062706 000737 034036 021627 034004 034012 034016 034533 000006 001151 8$: JMP #100,3$TKS CTRAP 000025 9%: CMP %SP).#ZS 034540 000006 20$: ADD 000015 108: CMP 000100 034574 035762 000060 15$: 16%: 0 #100,387KS JSR 000060 000002 034166 000720 (SP) ,#60 (SP) ,#67 18% #60,(SP)+ 2(SP) 000067 17$: 001202 18$%: .DSABL INC 8 TYPE B8R LS8 N ::RE-ENABLE TTY KBD INTERRUPTS PC,STYPEC 1 8$ 000002 177776 2218 IT A CONTROL-U? s ;BRANCH IF NOT s:YES, ECHO CONTROL-U (*U) ..IGNORE PREVIOUS INPUT ssLET'S TRY IT AGAIN s ;BRANCH IF NO soYES, IS IT THE FIRST CHAR? ::BRANCH IF YES ;o SAVE NEW SWR sCLEAR UP STACK ssECHO <CR> AND <L ..RE-ENABLE TB¥ KBD INTERRUPTS? m - " 2 ] b 000100 145052 b 000001 -t 145074 s :BRANCH IF NO s;ALLOW TTY KEYBOARD INTERRUPTS :;CONTROL=C RESTART ::1S 1T A <CR>? 000004 000002 6 3 001151 s ;BRANCH IF NOT ;;YES, ECHO CONTROL-C (*C) ::CLEAN UP STACK (SP) (SP) (SP) 2(SP) -E(SP).(SP) 7 $QUES 208 + ;BRANCH gi YES :BRANCH IF YES ,.STRIP-OFF ASCI! :;1S THIS THE FIRST CHAR :;BRANCH IFYES ..NO. SHIFT PRESENT CHAR OVER TO MAKE i ROOM FOR NEW ONE. ..KEEP COUNT OF CHAR ::SET IN NEW CHAR ..uET THE NEXT ONE sTYPE 2<CR><LF> ..SIHULATE CONTROL-U :;tttifitttttttttttttttttttttttttttttittttttttt'tttttl.tfifitt'tfi'.* C2! - CZRNAAO RMBO PERF EXER MACRO V0&4.00 14=JAN-82 15:16:58 PAGE 40-3 m12 SEQ@ 0155 TTY INPUT ROUTINE *Zg{f ROUTINE WILL INPUT A SINGLE CHARACTER FROM THE TTY O 13 o RDCHR RETURN HERE 3 l J:GET A CHARACTER FROM THE QUEUE s sCHARACTER IS ON THE STACK ;:WITH PARITY BIT STRIPPED OFF . 034170 034172 011646 016666 000002 005737 000004 000004 000002 SRDCHR: MOV MOV 034214 64S$: 033310 033310 034256 000002 (SP) ,=(SP) ..PUSH DOWN THE PC AND 4(SP) -(SP) #64$,<(SP) ..GET READY FOR A CHARACTER STKCNT s;WAIT ON A CHARACTER STKCNT 2¥TKOOUT4 (SP) KQouT sDECREMENT THE COUNTER ..GET ONE _CHARACTER sUPDATE THE POINTER 4(SP),2(SP) 1$ 000004 033314 033325 033316 033314 s THE PS sPUT NEW PS ON STACK ,,PUT NEW PC ON STACK :sPOP NEW PC AND PS $TKQOUT, ISTKQEND ..DID IT GO OFF OF THE END? 23' RTI ; sBRANCH IF NO 23 #STKQSRT,$TKQOUT..R;SET THE POINTER tttttttttttttfitttttttttt'ttttfitttttfittttttttttt.'tttttttttttttt :#THIS ROUTINE WILL INPUT A STRING FROM THE TTY ;*CALL: t :* RDLIN RETURN HERE * 034260 034262 $SRDLIN: MOV CLR MOV 1$: CMP 2s: 010346 108: 034512 6$: 034514 034512 054512 5$: 000134 034512 034400 000025 034512 7$: BLOS ROCHR mMova CMPB BNE TST BNE Movs TYPE MoV DEC cMp 8LO MovB TYPE BR TST BEQ Mov8 TYPE CLR CMPB BNE R3,-(SP) -($P) #STTYIN,R3 NSTTYIN#15. ,R3 4$ (SP)+,(R 3) #177. (R3 ) 5% (SP) 63 #'\,98 .98 #=1,(SP) R3 R3ASTTYIN 43 (R3),98 93 28 (SP) 7$ #°'\,9% 93 (SP) #25,(R3) [ 8s ;s INPUT A STRING FROM THE TTY s ;ADDRESS OF FIRST CHARACTER WILL BE ON THE STACK s sTERMINATOR WILL BE A BYTE OF ALL 0'S ..SAVE R3 ;CLEAR THE RUBOUT KEY :3GET_ADDRESS s sBUFFER FULL? ::BR IF YES 2:G0 READ ONE CHARACTER FROM THE TTY :;GET CHARACTER ..IS IT A RUBOUT :BR IF NO ..IS THIS THE FIRST RUBOUT? :BR _IF NO ;3TYPE A BACK SLASH ..SET THE RUBOUT KEY ;BACKUP BY ONE ..STACK EMPTY? :BR_IF YES ..SETUPPEO TYPEOUT THE DELETED CHAR. GO T ;360 READ ANOTHER CHAR. ..RUBOUT KEY SET? :BR_IF ::TYPE A BACK SLASH sCLEAR THE RUBOUT KEY ..IS CHARACTER A CTRL U? ::BR IF NO 94 CZRNAAO RM80 PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE 40-4 12 SEQ 0156 TTY INPUT ROUTINE 034402 104401 034540 8$: 000022 001202 48: 034512 034512 000015 3s: 177777 001204 000 = OO0 Y X Yo Qururd 136 136 136 015 040 P13 TYPE BR .SCRLF $STTYIN CMPB BNE CLRB $QUES s (R3),9% .98 #15,(R3)+ 2$ =1(R3) MOV MOV (SP)+,R3 (SP) -(SP) MOVB TYPE MOV RT1 LSLF (SP)+ 4(SPJ,2(SP) #STTYIN 4(SP) BYTE BYTE $TTYIN: .BLXKB O O 15. SMNEW: / SCNTLC: SCNTLU: $CNTLG: SMSWR: .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ ,.TYPE A CONTROL 'V’ ¢GO START OVER ::1S CHARACTER A ‘**R'"? s sBRANCH IF NO :sCLEAR THE CHARACTER ;2TYPE A ''CR" & 'LF'’ 2o TYPE THE INPUT STRING ..GgPEICKUP ANOTHER CHACTER :3CLEAR THE BUFFER AND LOOP :sECHO THE CHARACTER ..CHECK FOR RETURN cLOOP IF NOT RETURN ..CLEAR RETURN (THE 15) ssTYPE A LINE FEED sCLEAN RUBOUT KEY FROM THE STACK : sRESTORE R3 ..ADJUST THE STACK AND PUT ADDRESS OF THE FIRST ASCII CHARACTER ON IT HH s sRETURN : : STORAGE FOR ASCII CHAR. TO TYPE s : TERMINATO s sRESERVE 15 BYTES FOR TTY INPUT /*C/<15><12> ..CONTROL ‘c'* /*U/<15><12> ;sCONTROL 'VU°! /4G/<15><12> /..CONTROL 6"’ <15><12>/SWR = NEW = / ;THIS ROUTINE WILL PROCESS THE (“C) CHARACTER 3 4 001340 CTRAP: 176476 12 034636 BR MOV 9$: - 034512 034513 034514 034533 034540 034545 034552 5 034563 #22,(R3) 38 (R3) TYPE TST 060002 000004 SCNTLU - CMPB BNE CLRB TYPE TYPE 001203 034514 000004 034514 TYPE BR 000002 033312 033325 033316 033312 18: MOV INC MOVB INC CMP BNE MOV RTI #1,CFLAG $STKCNT #15,38TKQIN $TKQIN $TKQIN,#STKQEND 1% #STKQSRT ,STKQIN sSET THE 'CONTROL C' FLAG ;COUNT THIS CHARACTER :PUT 'RETURN' CHARACTER IN QUEUE :UPDATE THE POINTER ;GO OFF THE END ? :BR_IF YES ;RESET THE POINTER :RETURN CZF SA\ B 13 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 41 SEQ 0157 ERROR HANDLER ROUTINE .SBTTL 1 ERROR HANDLER ROUTINE :'ttttttt*tfittttttttttitttttttt.ttt*Qfitttttttttt.itt’ttttt*titttt :*TH]S ROUTINE WILL INCREMENT THE ERROR FLAG AND THE ERROR COUNT, :*SAVE THE ERROR ITEM NUMBER AND THE ADDRESS OF THE ERROR CALL s*AND GO TO SERRTYP ON ERROR s*THE SWITCH OPTIONS PROVIDED BY THIS ROUTINE ARE: 105037 035226 001322 001220 020000 HALT ON ERROR INHIBIT ERROR TYPEOUTS BELL ON ERROR * % N $ERROR: IBSAVE ; ;ERROR=EMT AND N=ERROR ITEM NUMBER R3,ATTN R1,DRIVE #SW13,aSWR 144270 + 001203 001117 001116 002000 78: 144240 144230 001176 omd b b NUANW COnN -~ W o b ad —-00 HOO 000177 - 001000 127777 000002 LSBELL $ERTTL . SERRPC (SP) #2,$ERRPC aSERRPC,S1TEMB #81T09,3SWR 1004$ #177,.S1TEMB 1004$ IBSAVE 1003$ #-1,CPSAVE 035224 000004 035036 177766 000004 035224 177777 035224 035052 78 S$TSTNM,aDISPLAY 18 035226 000004 177777 035224 000001 035224 000001 001130 000177 177766 035226 001130 ;:CLEAR THE ITEM BYTE SAVE LOCATION s TEST FOR CHANGE IN SOFT-SWR sSAVE THE ATTENTION REGISTER CONTENTS sDRIVE NUMBER ¢ INHIBIT PRINTOUTS ? ;BR IF YES :CR-LF sCR=LF sTYPE THE TIME #8IT10 -aSWR 18: o o 034640 034644 :*SW15=1 ;*SW13=1 s *SW10=1 s*CALL 1004$ , = (SP) ERRVEC ¢cSET THE ERROR FLAG s:DON'T LET THE FLAG GO TO ZERO :;DISPLAY TEST NUMBER AND ERROR FLAG :;BELL ON ERROR? ::NO = SKIP s cRING BELL s COUNT THE NUMBER OF ERRORS :;GET ADDRESS OF ERROR INSTRUCTION :;STRIP AND SAVE THE ERROR ITEM CODE ;;SEE IF LOOP ON ERROR IS SET s ;BRANCH AROUND ROUTINE IF SO s:SEE IF THIS IS THE POWER FAIL CALL : :BRANCH AROUND ROUTINE IF IT IS s2SEE IF THIS IS THE 2ND ERROR CALL IN THIS ROUTINE s sBRANCH IF SO ;sSEE IF CPSAVE HAS CPU ERR REG TIMEOUT INDICATION s sBRANCH IF SO s;SAVE CONTENTS OF ERROR VECTOR ssSETUP °*TRAP® RETURN ADDRESS ::MOVE CPU ERROR REGISTER TO CPSAVE FOR TEST : 10008 #1000 . ERRVEC 177766, CPSAVE $ 1007 #-1,CPSAVE #10018, (SP) ;:SET CPU ERROR REGISTER TIMEOUT INDICATOR ::SETUP RETURN ADDRESS 1001$: (SP)+,ERRVEC ;sRESTORE CONTENTS OF ERROR VECTOR 1002%: #-1,CPSAVE ::SEE IF CPSAVE HAS CPU ERR REG TIMEOUT INDICATION #81700,177766 ::BRANCH IF SO *:SEE IF POWER MONITOR BIT IS SET IN CPU ERR REG ::BRANCH IF OK_ _ 3CLEAR THE BIT 7OUND SET 1004$ 2:SET SITEMB TO SPECIAL POWER FAIL POINTER *:BRANCH OVER IBSAVE CLEARING 1004$ #BIT00, CPSAVE 10048 $ITEMB, IBSAVE 77,81 TENB *:MAKE IBSAVE NON-ZERO FOR DUAL ERROR CALL 13 SEQ 0158 ERROR HANDLER ROUTINE 035122 035126 035126 035134 035136 035142 035146 035146 0351564 035156 035164 035170 035171 035172 0351764 035200 035202 035206 035210 035212 035214 0352164 035220 035222 035224 035226 105037 035226 032777 001004 004737 104401 020000 122737 001007 113737 004737 000 000 000777 105737 001005 005777 100002 000000 104407 000001 001226 001130 036574 035170 105737 001230 000002 000000 000000 035226 144020 035230 001203 035226 10038: 10048: 20$: 218: 228: 2s: 143746 3s: (LRB IBSAVE ;sCLEAR IBSAVE SO 2ND TIME THROUGH EXITS BIT BNE JSR TYPE #B:713,3SWR 20 $ PC,SERRTYP ::SKIP TYPEOUT IF SET ::SKIP TYPEOUTS 2260 TO USER ERROR ROUTINE CMPB BNE Movs JSR .BYTE .BYTE BR TST8 BNE TST BPL HALT CKSWR gAPTENV.SENV $ $ITEMB,21$ SC.SATYQ 2 sRUNNING IN APT MODE ::NO,SKIP APT ERROR REPORT 2sSET ITEM NUMBER AS ERROR NUMBER : sREPORT FATAL ERROR TO APT 22% 1BSAVE 33 ::APT ERROR LOOP 1578 BNE RTI CPSAVE: .WORD IBSAVE: .WORD -SCRLF s;SEE IF IBSAVE IS LOADED s sBRANCH IF NOT = NO HALT ON PWR MON BIT ERROR aSWR 3s ssHALT ON ERROR ssSKIP IF CONTINUE ssHALT ON ERROR! ;s TEST FOR CHANGE IN SOFT-SWR IBSAVE scSEE IF ITEM BYTE SAVE LOCATION HAS AN ERROR CALL ::gg?fig: BACK TO CALL ORIGINAL ERROR ::LOCATION TO SAVE CPU ERROR RES CONTENTS :sLOCATION TO SAVE ITEM BYTE O CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 41-1 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 42 b 13 SEQ 0159 ERROR MESSAGE TYPEOUT ROUTINE .SBTTL ERROR MESSAGE TYPEOUT ROUTINE ;:ttttttttt'ttttt'tttt"tttt'tttttt.Qltt'.ttti.tt.t'.fi.'."t't.Q' ;*THIS ROUTINE USES THE ''ITEM CONTROL BYTE'' (SITEMB) TO DETERMINE WHICH :«ERROR ]S TO BE REPORTED. IT THEN OBTAINS, FROM THE ‘ERROR TABLE'’ (SERRTB), ;*AND REPORTS THE APPROPRIATE INFORMATION CONCERNING THE ERROR. 03523 03523 03523 035236 035240 035244 001004 035246 013746 104401 $ERRTYP: 001203 TYPE MoV CLR 8I1S8 BNE 001130 001132 Mov TYPOC 035252 000177 00121 2 035406 18: 035546 MOV MOV : 10008 003370 035324 1001$: 2$: 001203 035342 38: 48: 001203 5%: 6$: 001203 7$: 013046 104402 BR CMPB BNE BR DEC ASL ASL ASL ADD MOV BEQ TYPE .WORD TYPE MOV BEQ TYPE .WORD TYPE MOV BNE MOV TYPE RTS MOV TYPOC TST BEQ 035402 TYPE 8s: B8R 035402 040 040 000 035406 035416 035500 035416 120 035532 127 123 PFECH: 124 035500 117 105 035532 035546 001132 035224 PFECH3: .WORD PFECH1: PFECH2: .SCRLF ::;EcgnaAse RETURN'' & 'LINE FEED'’ R 1:PICKUP THE ITEM INDEX Rg.-(SP) SASITEMB,RO 18 $ERRPC,=(SP) 63 0177§R0 1000 STESTN,PFTSTN #PFECH,RO 10018 R #$SERRTB,RO (RO)+,28 3s 0 - SCRLF (RO)+,48 5% 0 .SCRLF (RO) ,RO 78 (SP)+,R0 .SCRLF PC 8(RO) +,-(SP) (RO) 88 7$ ;:1F ITEM NUMBER IS ZERO, JUST ;:TYPE THE PC OF THE ERROR :;SAVE SERRPC FOR TYPEOUT :cERROR ADDRESS G0 TYPE--OCTAL ASCII(ALL DIGITS) J:GET OUT ;:SEE IF THIS ERROR CALL IS SPECIAL POWER FAIL CALL ::BRANCH IF NOT :2GET TEST NUMBER :;MOVE POWER FAIL ERROR CALL TABLE TO RO ;;BRANCH TO CALL ERROR ::ADJUST THE INDEX SO THAT IT WILL WORK FOR THE ERROR TABLE B ::FORM TABLE POINTER ::PICKUP "ERROR MESSAGE'' POINTER 3:SKIP TYPEQUT IF NO POINTER ::TYPE THE "ERROR MESSAGE' ::"ERROR MESSAGE'' POINTER GOES HERE 33" 'CARRIAGE RETURN'' © "LINE FEED" ::PICKUP 'DATA HEADER'* POINTER ::SKIP TYPEQUT IF 0 ::TYPE THE "DATA HEADER"' ::'DATA HEADER'' POINTER GOES HERE :3''CARRIAGE RETURN'' & 'LINE FEEDTM ::PICKUP 'DATA TABLE'* POINTER ::60 TYPE THE DATA : RESTORE RO ::"'CARRIAGE RETURN'* & *‘LINE FEED ; . $RETURN :sSAVE 3(RO)+ FOR TYPEOUT 2260 TYPE-~-OCTAL ASCII(ALL DIGITS) s+ 1S THERE ANOTHER NUMBER? ::BR_IF NO :sTYPE TWO(2) SPACES ::LO0P ::TWO(2) SPACES PFECH4 ;:WORDS DEF INING TABLES BELOW PFECH1,PFECH2,PFECH3, .ASCIZ .ASCIZ .EVEN 7POWER MONITOR BIT IN CPU ERROR REGISTER FOUND SET? ?TESTNO ERR PC CPUERREG? PFTSTN,SERRPC,CPSAVE.0 CZRNAAQ RMB0O PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE 42-1 SEQ 0160——1 E 13 ERROR MESSAGE TYPEOUT ROUTINE 035542 000 035546 000000 000 000 PFECH4: .BYTE PFTSTN: .WORD 0,0,0,0 0 ;;CONTAINS TEST NUMBER FOR PF BIT ERROR F 13 SEQ 0161 TYPE ROUTINE .SBTTL TYPE ROUTINE .Qtttttttttti.ttttfit't't't"tttltt'..ttit'it..i'.tt'ttit"'ttt' 'ROUTINE TO TYPE ASCIZ MESSAGE. MESSAGE MUST TERMINATE WITH A 0 BYTE. +«THE ROUTINE WILL INSERT A NUMBER OF NULL CHARACTERS AFTER A LINE FEED. SNULL CONTAINS THE CHARACTER TO BE USED AS THE FILLER CHARACTER. SeNOTE1: L eNOTE2: -nores SFILLS CONTAINS THE NUMBER OF FILLER CHARACTERS REQUIRED. $SFILLC CONTAINS THE CHARACTER TO FILL AFTER. { aCALL: ~1> USING A TRAP INSTRUCTION - t e TYPE ,MESADR :sMESADR IS FIRST ADDRESS OF AN ASCIZ STRING ;;1S THERE A TERMINAL? :3BR IF YES ..HALT HERE IF NO TERMINAL TYPE TM MESADR STYPE: TSTB 8PL HALT STPFLG 1$ MOV MOV (MPB BNE BITB BEQ RO,=(SP) *3SAVE RO a2(SP).RO 2iCET ADDRESS OF ASCIZ STRING WAPTENV,SENV :iRUNNING IN APT MODE 628 ‘NO.GO CHECK FOR APT CONSOLE #APTSPOOL,SENVM ..SPOOL MESSAGE TO APT 628 60 CHECK FOR CONSOLE JSR PC.SATY3 . % 001173 035550 035554 235556 035560 000002 000001 18: 000100 035620 036564 OO ~ NOOT VISP \N NNW NN ~ O N—= N N = NWSNNNON SN SNANINWNNO ON OONWVINWI~O NENONON -fld-fl:—1g&) \nggu-uv ruspnd 83883 285388383 88886%8388 WVON 000040 MOV 618: 628: 00000¢ 608: 38 000011 48: 000200 036100 035762 001172 58: 68: 001170 000001 035762 036100 B8R 78: .WORD BITB 38 *SLEAVE RO,61$ sefup MESSAGE ADDRESS FOR APT 0 : SMESSAGE ADDRESS ::SPOOL MESSAGE TO APT WAPTCSUP.SENVM :;APT CONSOLE SUPPRESSED ggr.(sp> :3YES,SKIP TYPE OUT PUSH CHARACTER TO BE TYPED ONTO STACK BR IF IT ISN'T THE TERMINATOR i1F TERMINATOR POP IT OFF THE STACK L :RESTORE RO ..ADJUST RETURN PC RETURN L:BRANCH IF <HT> gfi?” ggRLF.(SP) ::BRANCH IF NOT <CRLF> ST I%QE; (SP)+ ::POP <CR><LF> EQUIV SSTYPE A CR AND LF CLRB BR JSR CMP8 BNE MoV $CHARCNT 28 PC.STYPEC SFILLC.(SP)+ 2% $NULL , - (SP) ;CLEAR CHARACTER COUNT SIGET NEXT CHARACTER ..co TYPE THIS CHARACTER ;1S IT TIME FOR FILLER CHARS.? :IF NO GO GET NEXT CHAR GET # OF FILLER CHARS. NEEDED DE(CB BLY JSR DECB B8R 1(SP) 68 PC,STYPEC SCHARCNT s DOES A NULL NEED TO BE TYPED? BR IF NO--GO POP THE NULL OFF OF STACK ..GO TYPE A NULL ::D0 NOT COUNT AS A COUNT :.LOOP BNE MOVB BNE ST MOV ADD RTI ggge 608 (RO)+,=-(SP) X (SP)+ (SP+,RO #2.(SP) ..AND THE NULL CHAR. b -lal CZRNAAQ RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 43 - CZRNAAQO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 43-1 13 SEQ 0162 TYPE ROUTINE sHORIZONTAL TAB PROCESSOR 000040 035762 000007 035736 035742 8$: 036100 105777 100375 117716 042716 122716 001366 asTKS ;s CHAR IN KYBD BUFFER? #SXON, ($P) 1018 (SP)+ ;o FIX STACK asTPS 108 2(SP) ,a8TPB ssWAIT UNTIL PRINTER IS READY $ SCHARCNT STYPEX #LF ,2(SP) $TYPEX (PC)+ ssBRANCH IF NO ssYES==CLEAR CHARACTER COUNT soEXIT s:1S CHARACTER A LINE FEED? s sBRANCH IF YES :sCOUNT THE CHARACTER #177600, (SP) 102%: 108: 143116 000002 036100 18: ::GET CHAR ::STRIP EXTRANEOUS B1TS 2:WAS CHAR XOFF ::BR IF NOT ::GET CHAR JISTRIP IT JWAS IT XON? J:BR IF NOT as$TKB, (SP) 000002 ;:BR_IF NOT ssWAIT FOR CHAR 143142 177600 000021 143124 ::TYPE A SPACE 2% #SXOFF ,(SP) 1028 101$8: ::REPLACE TAB WITH SPACE ::BRANCH IF NOT AT ;:TAB STOP ::POP SPACE OFF STA(CK 2GET NEXT CHARACTER #177600. (SP) 1463146 000012 ,(SP) Pc,$TYPEC #7 . SCHARCNT 13 (SP)+ 143166 177600 000023 000002 000015 £ 108 a$TKB,~(SP) 005726 105777 100375 MOVB $TYPEC: 143172 001012 9$: CMP8 N $CHARCNT : ,WORD STYPEX: RTS 1CR.2(SP) ;sLOAD CHAR TO BE TYPED INTO DATA REG. 2:1S CHARACTER A CARRIAGE RETURN? 0 :;CHARACTER COUNT STORAGE PC CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 44 H13 SEQ 0163 BINARY TO OCTAL (ASCII) AND TYPE BINARY TO OCTAL (AS Cl1I) AND TYPE .SBTTL BRI L dR Q1] 4/ S 22 222222232222 L T T T T T I T TR I T 2 1*THIS ROUTINE IS USED TO € ?cggfl? 16~81T BINARY NUMBER TO A 6-DIGIT T«0CTAL (ASCI]) NUMBER AND *«$TYPOS---ENTER HERE TO SE TUP SUPPRESS ZEROS AND NUMBER OF DIGITS TO TYPE ;wCALL: MOV TYPOS .BYTE BYTE NUM,~-(SP) N M [ 3 3R BN 2N 2% J J ::NUMBER TO BE TYPED *1CALL FOR TYPEOUT O 1 6 FOR NUMBER OF DIGITS TO TYPE o ::1=TYPE LEADING ZEROS 1 $0=SUPPRESS LEADING ZEROS s *STYPON=-==<ENTER HERE TO T YFE OUT WITH THE SAME PARAMETERS AS THE LAST :*$TYPOS OR $TYPOC J*CALL: J* b Mov TYPON NUM,-(SP) :t ;sNUMBER TO BE TYPED s CALL FOR TYPEOUT :*S$TYPOC===ENTER HERE FOR T YPEOUT OF A 16 BIT NUMBER J*CALL: M o* 0361064 036110 036116 036122 017646 116637 112637 062716 036126 000406 036130 112737 N36136 112737 036144 112737 036152 010346 036154 010446 036156 010546 036160 113704 036164 005404 036166 062704 036172 110437 036176 113706 036202 016605 036206 005003 036210 00610° 036212 000404 036214 006105 036216 006105 036220 006105 036222 010503 036224 006103 036226 105337 036232 100016 036234 042703 036240 001002 036242 005704 036244 001403 036246 005204 000000 000001 036331 000002 036327 000001 000006 000005 036327 036331 036326 036331 000006 036330 036327 000012 TYPOC $TYPOS: MOV MOVB MOovB ADD BR S$TYPOC: MOVB MOvV8 STYPON: MOVB MoV MOV MOV MOVB NEG ADD MOVB Mov8 1%: 2$: 036330 MoV 3s: 177770 48: Mov CLR ROL BR ROL ROL ROL MOV ROL DECB BPL 8IC BNE TST BEQ INC NUM,-(SP) 8(SP) ,~(SP) 1(SP) ,$0FIL L {(SP)+,S0M0D E+1 #2,(SP) $STYPON #1,80FILL #6,80MODE +1 #5,80CNT R3,-(SP) R4 ,~(SP) RS5,-(SP) $SOMODE +1,Ré R4 #6,R4 R4 ,SOMODE SOFILL.RSG 12(SP) RS R3 RS 3s RS RS RS RS.R3 R3 $SOMODE 7% #177770,R3 43 R4 5% R4 :sNUMBER TO BE TYPED s;CALL FOR TYPEOUT :;P1CKUP THE MODE scLOAD ZERO FILL SWITCH ; NUMBER OF DIGITS TO TYPE ssADJUST RETURN ADDRESS ::SET THE ZERO FILL SWITCH ::SET FOR SIX(6) DIGITS ;:SET THE ITERATION COUNT :2SAVE R3 :3SAVE Ré ::SAVE RS ::GET THE NUMBER OF DIGITS TO TYPE :sSUBTRACT IT FOR MAX. ALLOWED :2SAVE IT FOR USE :2GET THE ZERO FILL SWITCH :sPICKUP THE INPUT NUMBER ;:CLEAR THE OUTPUT WORD :sROTATE MSB INTO °‘C*’ ::G0 DO _MSB ;;FORM THIS DIGIT :;GET LSB OF THIS DIGIT ssTYPE THIS DIGIT? J:BR IF NO ::GET RID OF JUNK ;2TEST FOR 0 :;SUPPRESS THIS 0? ::BR IF YES +sDON'T SUPPRESS ANYMORE 0'S C 060 040 32 3 3 5$: ‘R3 R3 gs ..GO TYPE THIS DIGIT 2:60 DO THE LAST DIGIT ; sRESTORE RS s sRESTORE Ré4 (SP)+,(SP) SOCNT: SOFILL: $OMODE: sSAVE FOR_TYPING ..BR IF MORE TO DO :BR IF DONE : $INSURE LAST DIGIT ISN'T A BLANK 2(SP),4(SP) 000004 ;sMAKE THIS DIGIT ASCI! ..HAKE ASCII IF NOT ALREADY ;JRESTORE R3 s:SET THE STACK FOR RETURNING sRETURN ..STORAGE FOR ASCII DIGIT :: TERMINATOR FOR TYPE ROUTINE :;0CTAL DIGIT COUNTER ;s ZERO FILL SWITCH :sNUMBER OF DIGITS TO TYPE o ~omavars > YN T B oA N . SEQ 0164 sCOUNT BY 1 7$: 8s: 0 000000 # 0 R3 6$: 000002 036330 113 AND TYPE OO00O0O QOO0 —===00 036250 OOOOO =W CZRNAAO RMBO PERF EXE BINARY TO OCTAL (ASC MACRO V04.00 14~JAN-82 15:16:58 PAGE 44-~1 CZRNAAO RMBO PERF EXE R MACRO V04.00 14=JAN-82 CONVERT BINARY TO DEC IMAL AND TYPE ROUTINE J 13 15:16:58 PAGE 45 .SBTTL SEQ 0165 CONVERT BINARY TO DECIMAL AND TYPE ROUTINE AR ANNRRARARARNRAARAARCNARNRNRARAANRAANAASRRARANAAACOAOROARRAS :*THIS ROUTINE IS USED TO CHANGE A 16-BIT BINARY NUMBER TO A 5-DIGIT ;*SIGNED DECIMAL (ASCII) NUMBER AND TYPE IT. DEPENDING ON WHETHER THE :*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. teCALL: i s $TYPDS: 036332 036332 010046 010146 036334 036336 010246 036340 010346 036342 010546 016605 100004 005405 112766 005000 012703 036400 036402 005002 016001 160105 000020 000055 000001 036546 036374 112723 000040 060105 036426 036430 036432 036434 100407 106316 103003 116663 036420 036422 036424 036536 38: 48: 005702 001002 105716 58: 000001 036442 052702 000060 036446 036452 052702 110223 036454 005720 036456 036462 036464 020027 002746 003002 036472 105726 036466 036470 036476 036504 036506 036510 036512 036514 177777 116663 105013 012605 012603 012602 012601 68: 78: 000040 MOV MOV MOV MOV MOV RO,=(SP) R1.=(SP) R2.=(SP) R3.=(SP) RS .=(SP) ::PUSH RO ON STACK L:PUSH R1 ON STACK $:PUSH R2 ON STACK 1:PUSH R3 ON STACK 1:PUSH RS ON STACK 20(SP) .RS 1$ RS #'-,1(SP) RO #$DBLK ,R3 S:GET THE INPUT NUMBER *:BR IF INPUT IS POS. 1IMAKE THE BINARY NUMBER POS. LIMAKE THE ASCI] NUMBER NEG. 1:2ERO THE CONSTANTS INDEX *:SETUP THE OUTPUT POINTER R ,R1 $DTBL(RO) R1,RS *:CLEAR THE BCD NUMBER ::GET THE CONSTANT S:FORM THIS BCD DIGIT MOV 8PL NEG MOVB CLR MOV MOv8 CLR MOV SUB 8s: 177776 98: #20200,-(SP) #' ,(R$)+ BLT INC B8R /X R2 3$ ST BNE IST8 R2 58 (SP) ADD BMI ASLB BCC MOVB 8IS BIS MOVB ST 000010 177777 ::PUT THE BINARY NUMBER ON THE STACK 1360 TO THE ROUTINE CMP BLT BGT 010502 000764 036474 100003 18: 28: 035410 002402 036412 005202 036416 000774 036416 NUM, = (SP) MOV 036344 012746 020200 036350 036354 036356 036360 036366 036370 MOV TYPDS MOV BR TST8 B8PL MOVB CLRB MOV MOV MOV MOV ::SET BLANK SWITCH AND SIGN 13SET THE FIRST CHARACTER TO A BLANK ::BR IF DONE *INCREASE THE BCD DIGIT BY 1 R1,RS ;sADD BACK THE CONSTANT 78 (SP) 63 1(SP),~1(R3) P:BR IF YES $3MSD? T:BR IF NO ::YES=-=-SET THE SIGN #'0,R2 *SCHECK IF BCD DIGIT=0 *SFALL THROUGH IF 0 *:STILL DOING LEADING 0°S? *SMAKE THE BCD DIGIT ASCII 4 .R2 R2,(R3)+ SSMAKE IT A SPACE IF NOT ALREADY A DIGIT 1IPUT THIS CHARACTER IN THE OUTPUT BUFFER RO, 410 28 8s $3CHECK THE TABLE INDEX 1360 DO THE NEXT DIGIT 2360 TO EXIT $3JUST INCREMENTING (RO)+ RS,R2 6$ (SP)+ 13 ] =1(SP).-2(R3) (R3) (SP)+,RS (SP)+.R3 (SP)+.R2 (SP)+.R1 1SGET THE LSD 1360 CHANGE TO ASCII P:WAS THE LSD THE F1RST NON-ZERO? S3BR IF NO ::YES=-SET THE SIGN FOR TYPING *3SET THE TERMINATOR 1:POP STACK INTO RS L:POP STACK INTO R3 S:POP STACK INTO R2 1:POP STACK INTO R1 CZRNAAQO RM80 PERF EAER MACRO V04.00 14-JAN-82 15:16:58 PAGE 45-1 K 13 SEQ 0166 CONVERT BINARY TO DECIMAL AND TYPE ROUTINE 036516 036520 012600 104401 036532 012616 MoV TYPE 036546 MoV 036524 016666 000002 000004 036534 036536 036540 036542 036546 000002 023420 001750 000144 MoV $DTBL: $DBLK: RTI 10000, 1000. 100. 10. .BLKW (SP)+,R0 $DBLK 2(SP) ,4(SP) (SP)+,(SP) & ::POP STACK INTO RO ssNOW TYPE THE NUMBER 2 sADJUST THE STACK ssRETURN TO USER CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 46 L 13 SEQ 0167 APT COMMUNICATIONS ROUTINE .SBTTL APT COMMUNICATIONS ROUTINE N=Q VNS ONOON 036556 NN WO N NWNN 2 20 daattiadtildld 21232022 R0 2332 2222 3332322223332 X2322222 000001 000001 037922 037020 $ATY1: MOV Move 000001 037022 $ATYS: SATYC: Mov8 $ATYZ: 037020 000001 001226 000100 001227 000004 000002 001206 000004 001222 000004 000002 18: 2$: 177776 000000 105737 035550 3s: 10$: 001226 118: 001206 000004 037020 ::T70 REPORT FATAL ERROR ::TO TYPE A MESSAGE ::T0 ONLY REPORT FATAL ERROR ::PUSH RO ON STACK 2;PUSH R1 ON STACK ..?gOUbD TYSE A MESSAGE? ..??ERATING UNDER APT? BR NOT: ..SHOUL? spogL MESSAGES? IF NO 8 ::GET HESSAGE ADDR. ;:BUMP RETURN ADDR. :2SEE 1F DONE W/ LAST XMISSION? soJF NOT: WAIT :;PUT _ADDR IN MAILBOX :cFIND END OF MESSAGE :.SUB START OF MESSAGE :sGET MESSAGE LNGTH IN WORDS :PUT LENGTH IN MAILBOX ;s TELL APT TO TAKE MSG. a4(sp) 43 2,4 (SP) ::PUT MSG ADDR IN JSR LINKAGE ScLSTYPE *3CALL TYPE MACRO $FFLG 128 SENV ..suogbg REEORT FATAL ERROR? 177776 -(SP) 12% SMSGTYPE 118 82,4 (SP) SMSGTYPE SFFLG -BUMP RETURN ADDRESS s :PUSH 199776 ON STACK ..RUNNING UNDER APT? ¢IF NOT: BR $IFINISHED LAST MESSAGE? soIF NOT: WAIT s sGET ERROR # :B8UMP RETURN ADDR. TELL APT TO TAKE ERROR s :sCLEAR FATAL FLAG :sCLEAR LOG FLAG :sCLEAR MESSAGE FLAG ssPOP STACK INTO R1 ..POP STACK INTO RO SMFLG: $LFLG: $FFLG: 000040 (ROY+ 2$ $MSGAD ,RO @84 (SP) ,SFATAL 001210 000004 128: 037022 3s lgPTSPOOL.SENVH 3 @4 (SP) ,RO #2,4(SP) SMSGTYPE 18 RO, $MSGAD gg.SMSGTYPE 4$: 037022 RO,=(SP) R1,=(SP) SMFLG 5% RO RO,$MSGLGT 001206 036732 000004 SATYC #1,8FFLG #APTENV ,SENV 001222 001224 000004 #1,8FFLG #1,SMFLG APTSIZE APTENV APTSPOOL APTCSUP sRETURN ;SMESSG. FLAG ::LOG FLAG ..L ssFATAL FLAG ; CZRNAAO RMB0O PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 47 SEQ 0168 RANDOM NUMBER GENERATOR ROUTINE .SBTTL RANDOM NUMBER GENERATOR ROUTINE M :ttttttttfitttt'tttfitt'tttt'ttttttttttfitttttltttttittttttttittttt ;*THIS ROUTINE IS A DOUBLE_PRECISION PSEUDO RANDOM NUMBER GENERATOR ;*WITH A RANGE OF 0 TO 2(+33)-1. » s*CALL: JSR PC,$RAND ::CALL THE ROUTINE ::RETURN HERE THE RANDOM ::NUMBER WILL BE IN 2 sSHINUM, SLONUM MOV MoV MoV MOV MOV MOV RO,=(SP) R1,=(SP) R2,=(SP) :2PUSH RO ON STACK ::PUSH R1 ON STACK :sPUSH R2 ON STACK :2SET RO WITH LOW 2:SET R1 WITH HIGH 3SET SHIFT COUNT 22SHIFT RO LEFT AND ::ROTATE CARRY INTO R1 AND :sCHECK FOR DONE ;:CONTINUE SHIFT LOOP ::ADD NUMBER TO MAKE X 129 : ;PROPOGATE CARRY ::ADD NUMBER TO MAKE X 129 ::ADD LOW CONSTANT : PROPOGATE CARRY ::ADD HIGH CONSTANT :sSAVE RO ::SAVE R1 ::POP STACK INTO R2 ::POP STACK INTO R1 :2POP STACK INTO RO ::RETURN RETURN 037024 037024 037026 037030 037032 037036 037042 010046 010146 010246 013700 913701 012702 037124 037122 177771 037056 063700 037124 037064 037070 063701 062700 037122 001057 062701 010037 010137 047401 037124 037122 037076 037102 037106 037724 123456 1$: ASL ROL INC BNE ADD ADC ADD ADD ADC ADD MoV MOV MOV MOV MoV SHINUM: SLONUM: RTS .ORD +WORD SLONUM,RO $HINUM,R1 #-7,R2 RO R1 R2 1% S%ONUH.RO R SHINUM,R1 #}057.R0 R #47401,R1 RO, SLONUM R1,SHINUM (SP)+,R2 (SP)+,R1 (SP)+,R0 PC 176543 123456 .SBTTL SAVE AND RESTORE RO-R5 ROUTINES S TITITTIT2222 223222822 1*SAVE RO-RS ;*CALL: o RRR2RR 232 vy 2 22t iddadidddddadiddl]d]] SAVREG :*UPON RETURN FROM $SAVREG THE STACK WILL LOOK LIKE: :t :2TOP===(+16) st +2===(+18) s +4==-R5 ;% +6=-=-Ré ;% +8-=-R3 ;#+10=-==R2 ; #+12=-==R1 1 *+14-=-=-R0 $SAVREG: 037126 RO,-(SP) R1,-(SP) R2,=(SP) R3,-(SP) R4 ,=(SP) R5,=(SP) 000022 037162 000022 RTI 22(SP) ,=(SP) 22(SP) ,=~(SP) 22(SP) ,~(SP) 22(SP) ,~(SP) ::PUSH RO ON STACK 2 :PUSH R1 ON STACK :2PUSH R2 ON STACK ::PUSH R3 ON STACK ::PUSH R4 STACK STACK :sPUSH RS :sSAVE PS MAIN FLOW MAIN FLOW CALL CALL PC PS PC s sRESTORE PS OF OF OF OF ;*RESTORE RO-RS5 s*CALL: ;t 037164 000022 000022 037220 SRESREG: RESREG MoV MOV MoV MOV MoV MOV MoV CALL CALL MAIN FLOW MAIN FLOW ::POP STACK INTO RS ::POP STACK INTO Ré& :sPOP STACK INTO R3 ::POP STACK INTO R2 (SP)+,RO ;sPOP STACK INTO R1 ::POP STACK INTO RO wo SAVE AND RESTORE RO-RS5 ROUTINES — SEQ 0169 CZRNAAO RM80 PERF EXER MACRO V04.00 314-JAN-82 15:16:58 PAGE 48 CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 49 B 14 SEQ 0170 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE .SBTTL DOUBLE LENGTH BINAR: TO DECIMAL ASCII CONVERT ROUTINE 93223222 80222232 2232322232222 2 233223 222222222 i ddididdiiidiidiid :*THIS ROUTINE WILL CONVERT A 32-BIT BINARY NUMBER TO AN UNSIGNED ::gsg{??bE(ASCII) NUMBER. THE SIGN OF THE BINARY NUMBER MUST BE s*CALL :* . % [ —d $DB2D: n N 700 000002 037402 000002 (=1 N NN =SOMNOOOOO0O0O 037222 o [o Yo B P e e e e e VNN NN ONON & ;t 000012 037332 037334 037320 3s: MOV JSR RETURN SAVREG MOV Mov MOV MoV MOV MOV MOV MoV CLR sus s8¢ sus BLT INC BR ADD ADC #PNTR, = (SP) PC,ax$DB2D 4$: $TNPWR: ::THE FIRST ADDRESS OF ASCIZ ::1S ON THE STACK 2(SP) ,R2 s sSAVE REGISTERS ::PICKUP THE DATA POINTER RO,2(SP) (R2)+,R1 ::PICKUP THE BINARY NUMBER #S$DECVL ,RO (R2)+,R2 #10..4$ #STNPWR, R4 #$TNPWR+2,RS R3 (R4) ,R1 R2 (RS5) ,R2 33 R3 2% (R4)+ R R2 (RG4)+,R2 (R5)+,(RS)+ #'0.RS 000060 ;:POINTER TO LOW WORD OF BINARY NUMBER 2sGET ADDKESS OF '‘SDECVL'' STRING ::PUT ADDRESS OF ASCIZ STRING ON STACK 2sSET UP TO DO 10 CONVERSIONS ;sADDRESS OF TEN POWER ;:CLEAR PARTIAL ::SUBTRACT TEN POWER ::BR IF TEN POWER TO LARGE ;sADD 1 TO PARTIAL ;:L00P ::RESTORE SUBTRACTED VALUE ::MOVE TO NEXT TEN POWER : :CHANGE PARTIAL TO ASCII J:SAVE IT s sDONE? :2:BR IF NO 2 :TERMINATOR :sRESTORE REGISTERS 2 ;RETURN ::1.0E09 ::1.0E08 ::1.0E07 ::1.0E06 :21.0E05 :21.0E04 ::1.0E03 037370 000000 ::1.0E02 — CZRNAAO RMBO PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 49-1 C 14 SEQ 0171 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE 037372 037374 027376 037400 037402 000012 000000 000001 000000 12 0 1 0 $DECVL: .BLKB ::1.0€01 ::1.0E00 12. 2 sRESERVE STORAGE FOR ASCIZ STRING CIZRNAAO RMB0 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 5313222232 DOUBLE LENGTH BINARY TO OCTAL ASCII CONVERT ROUTINE 28223 2122232223322 2221222332222 28Rt iidliaddidids :*THIS ROUTINE WILL CONVERT A 32-BIT UNSIGNED BINARY NUMBER TO AN ;*UNSIGNED OCTAL ASCIZ NUMBER. swCALL e MOV v RETURN i 037416 037420 037424 037430 037436 037440 037442 037444 037446 037450 037452 104412 016601 012705 012704 012703 012100 012101 005002 110245 010002 005304 000002 037535 000014 $DB20: 177770 1$: 037500 037502 037504 037506 037510 006001 006000 006001 006000 040302 037516 037520 000753 SAVREG MOV MOV MOV MOV MOV MOV CLR MOVB MOV DEC B8GT 037454 003007 037456 001405 037460 005205 037462 010566 037466 104413 037470 000207 037472 006203 037474 006001 037476 006000 JSR 000002 037512 062702 000060 28: 38: #PNTR - (SP) pC,ax$0B20 2(SP) ,R1 #$OCTVL+13..RS 2. R4 #4C7.R3 (R1)+,R0 (R1)+.R1 R2 R2.=(RS) RO.R2 RG 3s BEQ INC MOV RESREG RTS ASR ROR ROR 2 RS RS,2(SP) ADD #0,R2 ROR ROR ROR ROR BIC BR $OCTVL: .BLKB PC R3 R1 RO R1 RO R1 RO R3,R2 1$ 14, :sPOINTER TO LOW WORD OF BINARY NUMBER $3CALL THE ROUTINE *iTHE ADDRESS OF THE FIRST ASCIZ CHAR. IS ON THE STACK ::SAVE ALL REGISTERS *:PICKUP THE POINTER TO LOW WORD ::POINTER TO DATA TABLE $3D0 ELEVEN CHARACTERS * SMASK SLOWER WORD *:HIGH WORD *STERMINATOR 25PUT CHARACTER IN DATA TABLE $:GET THIS DIGIT *:COUNT THIS CHARACTER “:BR IF NOT THE LAST DIGIT 18R IF IT IS THE LAST DIGIT *:ALL DIGITS DONE~ADJUST POINTER FOR FIRST 1:ASCIZ CHAR. § PUT IT ON THE STACK *SRESTORE ALL REGISTERS S:RETURN TO USER 1:POSITION THE MASK FOR THE LAST DIGIT *:POSITION THE BINARY NUMBER FOR THE NEXT OCTAL DIGIT ¥ ;sMASK OUT ALL JUNK SSMAKE THIS CHAR. ASCII 1560 PUT IT IN THE DATA TABLE s sRESERVE DATA TABLE CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 51 E 14 SEQ@ 0173 POWER DOWN AND UP ROUTINES .SBTTL POWER DOWN AND UP ROUTINES 2232232232233 2322222320032 R dd 23332223222 ¢2222 037710 000340 000024 000026 "POWER DOWN ROUTINE #SILLUP,a#PWRVEC ::SET FOR FAST UP $PWRDN: MOV +2 ..bnx :7 #3460, a#PURVEC Mov USH RO ON STACK RO,-(SP) Mov MOV MOV MoV Mov MOV MJV MOV Mov 000024 HALT B8R ittt RS,=(SP) aSWR, -(SP) ..PUSH R1 ON STACK ::PUSH R2 ON STACK ::PUSH R3 ON STACK ::PUSH R4 ON STACK 2:PJSH RS ON STACK ::PUSH BSUR ON STACK .2 s sHANG UP R1,-(SP) R2.=(SP) R3,=(SP} R4 ,=(SP) iddd]) § ssSAVE SP,$5A VR6 #SPURUP #PWRVEC ;;SET UP VECTOR tttt'tt*ltttlti.tttt't'tttt.tttttlttittttt.*ttttttttttttttt'it' 037610 037616 037622 037626 037632 037634 037640 037642 037646 037650 037652 012737 013706 005037 005237 001375 037710 037714 037714 037714 000024 *POWER UP ROUTINE $PWRUP: MOV MoV 1$: 2$: 037716 141306 037536 000340 000024 000026 $SPWRMG: CLR INC BNE DEC BLE MoV MOV MOV MOV MOV MOV MoV MOV Mov TYPE . WORD MOV $SPWRAD: . WORD RTI SILLUP: HALT 8R 042 120 $SAVR6: 0 PWRFLG: .WORD $POWER: [ASCIZ .EVEN #SILLUP,3#PWRVEC 'ég;TsFOR FAST DOWN $SAVRG, SP $SAVR6 ::WAIT LOOP FOR THE TTY ,.UAIT FOR THE INC $SAVR6 WORD 1 sOF ;WAIT AND SET POWER FAIL FLAG PWRFLG :WAIT FOR FLAG= 1 2$ (SP)+,aSWR :;POP STACK INTO @SWR (SP)+ RS ::POP STACK INTO RS (SP)+ R4 :;POP STACK INTO R4 (SP)+,R3 (SP)+,‘R2 (SP)+ R1 (SP)+ R0 ::POP STACK INTO R3 :;POP STACK INTO R2 ::POP STACK INTO R1 sPOP _STACK INTO RO #SPURDN, #PWRVEC” ; SET UP THE POWER DGWN VECTOR #340,3#PWRVEC+2 ;:PRIO:7 $SPOWER (PC)+,(SP) SATPOW ..REPORT THE POWER FAILURE ;POWER FAJL MESSAGE POINTER ..RESTART AT SATPOW 2 SRESTART ADDRESS ,.THE POWER UP SEQUENCE WAS STARTED .-2 o BEFORE THE POWER DOWN WAS COMPLETE 0 ::INDICATES :PUT THE SP HERE <CRLF>/'POWER UP"/<CRLF> POWER FAIL OCCURRED WHEN SET ;POWER UP ROUTINE ,WAIT TWO MINUTES, ;THEN AUTO STARTS AT SIZMEM 000000 005037 001350 001466 177776 SATPOW: INC BN #0 SECOND +2 INTRVL PS sTTY LOOP, WAIT FOR INCREMENT ;OF WORD :CLEAR THE WORLD ;RESET SECOND COUNT ;RESET THE INTERVAL COUNT ;CLEAR PSW CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 51-1 F 14 SEQ 0174 POWER DOWN AND UP ROUTINES 15 037762 16 037766 012706 004737 001100 033326 MOV JSR #STACK, SP PC,STKINT 001340 001542 CLR TSTB BEQ CFLAG ASNLST 2 TST CFLAG JSR 17 037772 004737 023422 18 037776 19 040002 20 040006 21 040010 005037 105737 001414 104401 077406 18: 22 060014 005737 001340 23 040020 24 040022 001007 023727 001466 000002 25 040030 002771 26 060032 012737 000400 001336 2s: 27 040040 012705 001520 28 040044 29 040046 30 040052 31 040054 005025 022705 001374 000137 002056 005024 38: TYPE BNE CMP BLT MOV MOV CLR CMP BNE JMP ;SETUP STACK POINTER ‘MAKE SURE KEYBOARD INTERRUPT AND PC.CKCLK SSYSTEM CLOCK ARE STILL ON. ,MSWAIT :TYPE 'WAITING 2 MINUTES...TO START' 2 INTRVL +2,4#2 18 #0RDERQ,RS #400, CHGADR (RS)+ #BLKADR,RS 3$ SIZMEM *CLEAR THE °‘CONTROL C' FLAG *ANY DRIVES ASSIGNED ? *BR IF NO *CONTROL C INTERRUPT? ‘BR IF YES ‘TWO MINUTES YET ? SWAIT IF NOT *FUDGE 200 START *CLEAR UP THE QUE AND BUFFER :ALL DONE ? *BRANCH IF NOT :LOOP BACK SEQ 0175 TRAP DECODER .SBTTL 1 TRAP DECODER .e Y3322 222222222222 2323222222222 Rd il iitiliiltdd) ;*THIS ROUTINE WILL PICKUP THE LOWER BYTE OF THE '‘TRAP'’ INSTRUCTION :*AND USE IT TO INDEX THROUGH THE TRAP TABLE FOR THE STARTING ADDRESS ;*OF THE DESIRED ROUTINE. THEN USING THE ADDRESS OBTAINED IT WILL :*GO TO THAT ROUTINE. STRAP: 000002 040114 MOV MOV 1ST mMovae ASL MOV RTS RO,=(SP) 2(SP) ,RO -(R0) (RO) ,RO RO $TRPAD(RO) ,RC RO 22 SAVE RO ssGET TRAP ADDRESS : sBACKUP BY 2 s:GET RIGHT BYTE OF TRAP s;POSITION FOR INDEXING ;;INDEX TO TABLE ::60 TO ROUTINE ;sTHIS IS USE TO HANDLE THE ''GETPRI'* MACRO 040102 040104 040112 011646 016666 000002 000004 000002 STRAP2: MOV MOV RTI .SBTTL (SP) ,-(SP) 4(SPJ ,2(SP) 2sMOVE THE PC DOWN ssMOVE THE PSW DOWN s sRESTORE THE PSW TRAP TABLE ;*THIS TABLE CONTAINS THE STARTING ADDRESSES OF THE ROUTINES CALLED ;*BY THE ‘‘TRAP'® INSTRUCTION. : 040114 040102 ROUTINE $TRPAD: .WORD STYPE $TRAP2 TTY TYPEOUT ROUTINE . CALL=TYPE TRAP+1(104401) TRAP+2(104402) TRAP+3(104403) TRAP+4(104404) TRAP+5(104405) TYPE OCTAL NUMBER (WITH LEADING ZEROS) TYPE OCTAL NUMBER (MO LEADING ZEROS) TYPE OCTAL NUMBER (A< PER LAST CALL) TYPE DECI/AL NUMBER (WITH SIGN) ;;CALL=GTSWR TRAP+6(104406) GET SOFT-SWR SETTING ..CALL=TYPOC ;;CALL=TYPOS ..CALL=TYPON ;;CALL=TYPDS 040126 036332 $TYPOC $TYPOS STYPON S$TYPDS 040130 033716 $GTSWR 040132 040134 040136 040140 040142 % 040144 033626 TRAP+7(104407) TEST FOR CHANGE IN SOF T-SWR $CKSWR ;. CALL=CKSWR TRAP+10(104410) TTY TYPEIN CHARACTER ROUTINE SRDCHR ;. CALL=RDCHR TRAP+11(104411) TTY TYPEIN STRING ROUTINE SROLIN ;. CALL=ROLIN $SAVREG ;;CALL=SAVREG = TRAP+12(104412) SAVE RO-R5 ROUTINE SRESREG ;;CALL=RESREG TRAP+13(104413) RESTORE RO-R5 ROUTINE TRAP+14(104414) ROUTINE TO TYPE ERROR MESSAGES $DSPLY ;:CALL=DISPLY 032716 000032 $TERM=. -$TRPAD ned G 14 CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 52 - CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 53 H 14 SEQ 0176 TRAP TABLE .SBTTL SINGLE/DUAL PORY RH70/RM80 DRIVER (REV 0.17) :COPYRIGHT (C) 1979,1981 :DIGITAL EQUIPMENT CORP. {MAYNARD, MA 01754 :AUTHOR(S): CHUCK HESS :REVISED BY: MIKE LEAVITT e AARARRRANRANRAANNAA AR RGN RAANRARRAANARAANARANARNNNNRRONARANERNS ;STORAGE FOR RMDS, RMER1 AND RMER2 ON AN ERROR ‘7'’ = RMDS s RMERRS RHERQS¢2 = RMERV :RMERRS+4 = RMER2 43 040146 000000 000000 000000 RMERRS: .WORD 0,0,0 ;TABLE OF DRIVE ACTIVE INDICATORS (DRVACT=8 BYTES) :DRVACT=0 IF DRIVE IS IDLE :DRVACT>0 IFDRIVE IS ACTIVE WITH A COMMAND :DRVACT<O IFDRIVE IS ACTIVE WITH AN ERROR RECOVERY OPERATION DRVACT: .BYTE .BYTE .BYTE .BYTE BYTE BYTE BYTE BYTE 50 040154 53 040155 040156 040157 i 0 0 0 0 0 0 0 O ;DRIVE 0 :DRIVE 1 ;DRIVE 2 ;DRIVE 3 ;DRIVE 4 ;DRIVE 5 sDRIVE 6 :DRIVE 7 ;TABLE OF DRIVE STATUS INDICATORS (DRVSTA=8 BYTES) sDRVSTA=0Q IF DRIVE IS OFFLINE OR NONEXSITENT :DRVSTA>0 IF DRIVE IS ONLINE :DRVSTACO IF DRIVE IS UNSAFE DRVSTA: .BYTE .BYTE BYTE .BYTE 0 0 0 0 ;DRIVE ;DRIVE ;DRIVE :DRIVE BYTE .BYTE 0 0 ;DRIVE 6 ;DRIVE 7 EXAN VY S BYTE BYTE 040173 70 040174 73 040175 040176 040177 0 0 0 1 2 3 :DRIVE 4 :DRIVE S s TABLE OF DRIVE TYPES (DRVTYP=8 BYTES) DRVIYP=0 IF DRIVE IS NONEXISTENT (DRVSTA=0, ALSO) DRVTYP-1 IF DRIVE IS RM80 :DRVTYP==1"1F NOT RM80 DRVTYP: .BYTE BYTE .BYTE .BYTE 0 0 0 O ;DRIVE 0 ;DRIVE 1 sDRIVE % ;DRIVE 14 SEQ 0177 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 040200 040201 040202 2 040203 .BYTE .BYTE .BYTE .BYTE 000 000 000 000 75 76 :DPINT<O0 IF INITIALIZATION IS IN PROGRESS 79 040204 82 040205 040206 060207 040210 040211 0640212 83 040213 000 000 000 000 000 000 000 000 84 DPINT: .BYTE BYTE .BYTE .BYTE .BYTE .BYTE BYTE .BYTE 0 0 0 0 0 0 0 0 sDRIVE 0 sPRIVE 1 :DRIVE 2 sDRIVE 3 sDRIVE 4 sDRIVE 5 sDRIVE 6 sDRIVE 7 ;TABLE OF PENDING DUAL PORT REQUESTS 85 ;DPRQS=0 IF THAT A DUAL PORT REQUEST IS NOT PENDING FOR THAT DRIVE gg :DPRQS<O IF THAT A DUAL PORT REQUEST IS PENDING FOR THAT DRIVE 88 040214 91 040215 040216 040217 040220 040221 040222 92 040223 000 000 000 000 000 000 000 000 32 DPRQS: .BYTE .BYTE BYTE .BYTE .BYTE .BYTE BYTE .BYTE 0 0 0 0 0 0O 0 0 sDRIVE 0 sDRIVE 1 :DRIVE 2 ;DRIVE 3 ;DRIVE & ;DRIVE 5 sDRIVE 6 sDRIVE 7 sVRIVE REQUEST QUE WORDS 95 040224 98 040226 040230 AN SOZISIRIRAR2SS :DRIVE 4 ;DRIVE 5 sDRIVE 6 :DRIVE 7 s TABLE OF DUAL PORT INITIALIZATION INDICATORS sDPINT=0 IF INITIALIZATION IS NOT ACTIVE ON THE DRIVE ;g :d—.—‘—h—l—.—h—l-l-l—l-n—l—i 0 0 0 0 040232 040234 040236 040240 040242 000000 000000 000000 000000 000000 000000 000000 000000 QDRV: ,WORD WORD .WORD .WORD WORD .WORD WORD LWORD 0 0 0 0 0 O 0 O :DRIVE 0 sDRIVE 1 ;DRIVE 2 ;DRIVE 3 sDRIVE 4 :DRIVE 5 sDRIVE 6 ;DRIVE 7 sTRANSFER WAIT FLAG (TRNSWT=1 WORD) sTHIS IS A ONE WORD QUEUE. T WILL CONTAIN THE ADDRESS OF ;"DPB'* OF THE 1/0 OPERATION. 040244 000000 TRNSWT: .WORD O ;SEARCH WAIT KEYS (SRCHWT=1 WORD) sTHIS 1S A ONE WORD QUEUE THAT WILL CONTAIN A KEY FOR _EACH OF ;THE ORIVES THAT ARE PERFORMING A SEARCH COHHAND FOR THE [/0 :REQUEST THAT IS AT THE TOP OF THEIR REQUEST QUEY sEACH DRIVE IS ASSIGNED ONE BIT, STARTING AT 81700 FOR DRIVE 0. 040246 000000 SRCHWT: .WORD O ;RM DRIVER ACTIVE FLAG (ACTDRv=1 BYTE) we CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 53-1 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN=-82 15:16:58 PAGE 53-2 SEQ 0178 OO NNV = O VNS NWNN =2 OV -A—l—l—b—i—l-l—b—)-J.J—l—d-l-‘—)-d—l—l-—b—l—.—l-‘—l.—l—l—l-‘—.—ld N85 8 85 B 8 B NN NN NN WA N NN NP NS WN = O 000NN SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) sACTDRV=0 IF DRIVER IS I sACTDRV>0 IF DRIVER IS ACTIVE 0460250 O ACTDRV: .BYTE 000 SOFTHARE TIHER ROUTINE ACTIVE FLAG (ACTSTR=1 BYTE) TR=0 IF SOFTWARE TIMER ROUTINE IS INACT 1VE CTIVE ACTSTR)O IF SOFTWARE TIMER ROUTINE IS ACTI 040251 ACTSTR: .BYTE 000 0 ;SAVE REGISTERS FLAG (SAVEFG =1 WORD) :SAVEFG <0 IF SAVE THE RH/RM REGISTERS WHEN THE ;OPERATION IS COMPLETED AS PER (DPB+14). :SAVEFG=0 IF SAVE THE RH/RM REGISTERS, AS PER ;(DPB+14), AFTER AN ERROR. 040252 SAVEFG: .WORD 000000 0 s SEEK FLAG (SEEKFG=1 WORD) EEKFG=0 IF WHEN THE DISK ADDRESS ISN'T IN THE WINDOW FOR A DATA TRANSFER START A SEARCH COMMAND :SEEKFG<O IF DATA TRANSFER WILL DO IMPLIED SEEKS, :DISREGARD THE WINDOW 960254 SEEKFG: .WORD 177777 -1 :TIMEOUT TABLE (TIMER=8 WORDS) :THIS TABLE CONTAINS THE TIME ALLOWED FOR AN OPERATION 0460256 040260 040262 040264 040266 040270 040272 149 040274 TIMER: 177777 177777 177777 177777 177777 177777 177777 WORD 177777 ;DRIVE 7 :DTUW=+N (WHERE N=0 TO 7) IMPLIES DATA TRANSFER UNDERWAY ON DRIVE N 12% DTUW: 177777 .WORD -1 ;ATTENTION BITS TABLE (ATABIT=8 BYTES) ;THIS TABLE CONTAINS THE CORRESPONDING BIT TO EACH DRIVES 156 157 SATTENTION BIT }gg 001 002 004 ATABIT: .BYTE 1,2,4,10,20,40,100,200 ;STORAGE FOR RMADR (THE FIRST ADDRESS (776700) OF THE RH70/RM80Q) 162 *RMVEC (THE VECTOR ADDRESS (254)), AND RMVEC+2 (THE BR LEVEL (5)5. }gz 165 040310 166 040312 168 040316 -1 sDRIVE 0 sDRIVE 1 sDRIVE g sDRIVE :DRIVE 4 ;DRIVE 5 :DRIVE 6 ;DTUWKO IF NO DATA TRANSFER UNDERWAY 151 }g? 040300 -1 -1 -1 -1 -1 -1 -1 ;DATA TRANSFER UNDERWAY INDICATOR (DTUW=1 WORD) 150 }gg 060276 .WORD .WORD WORD .WORD .WORD .WORD .WORD 176700 000254 000050 000240 RMADR: RMVEC: RHEXT: .WORD .WORD .WORD 176700 254,5+32. 50 JOFFSET TO RMBAE K 14 SEQ 0179 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 170 sSEARCH DIFFERENCE IS 5 FIVE SECTORS };} };z 040320 000005 180 181 182 183 184 185 186 187 188 189 190 191 192 193 ~N - OO0 -0 194 195 196 198 5 ;DEFINITIONS OF THE RH70/RM80 ADDRESS INDEXES };2 177 178 179 MXWNDW: .WORD 000000 000002 000004 000006 000010 000012 000014 000016 000020 000022 000024 000026 000030 000032 000034 000036 000040 000042 000044 000046 000050 000052 RMCS1 RMWC RMBA =0 =2 =4 RMCS2 =10 sCONTROL AND STATUS REGISTER #1 (DRIVE REG. 0) :WORD COUNT REGISTER (NOT A DRIVE REG) :UNIBUS ADDRESS REGISTER (NOT A DRIVE REG) :DESIRED TRK/SEC ADDRE3S REGISTER (DRIVE REG. 5) :CONTROL AND STATUS REGISTER #2 (NOT A DRIVE REG) RMER1 RMAS RMLA RMDB = 14 =16 = 20 = 22 :ERROR REGISTER #1 (DRIVE REG. 2) :ATTENTION SUMMARY PSEUDO REGISTER (DRIVE REG. &) ;LOOK AHEAD REGISTER (DRIVE REG. 7) :DATA BUFFER REGISTER (NOT A DRIVE REG.) RMDT = 26 RMDA RMDS RMMR1 RMSN RMOF RMDC RMHR RMMR2 RMER2 RMEC1 RMEC2 RMBAE RMCS3 =6 =12 = 24 = 30 = 32 = 34 = 36 = 40 = 42 = 44 = 46 = 50 = 52 :DRIVE STATUS REGISTER (DRIVE REG 1) :MAINTAINABILITY REGISTER #1 (DRIVE REG. 3) :DRIVE TYPE REGISTER (DRIVE REG. 6) :SERIAL NUMBER REGISTER (DRIVE REG. 10) :OFFSET REGISTER (DRIVE REG. 11) :DESIRED CYLINDER ADDRESS REGISTER (DRIVE REG. 12) :"HOLDING REGISTER'' (DRIVE REG. 13) ;MAINTENANCE REGISTER #2 (DRIVE REG. 14) sERROR REGISTER #2 (DRIVE REG. 15) :ECC POSITION REGISTER (DRIVE REG. 16) :ECC PATTERN REGISTER (DRIVE REG. 17) :BUS ADDRESS EXTENTION REGISTER ;CONTROL AND STATUS REGISIER #3 wno CZRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 53-3 CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 54 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) SEQ 0180 NON NS W= RH?O/RHBO DRIVER INITIALIZATION CODE THIS ROUTINE WILL DETERMINE WHICH RMB0 DRIVES ARE SAVAILABLE FOR TESTING AND SET THE DRVSTA INDICATOR :TO THE PROPER STATE FOR EACH DRIVE. :NOTE: THIS ROUTINE CALLS DRVINT *CALL: JSR RETURN b ad WWNN = OV PC,RMINIT 'NOTE: THE 'P' OR ‘L' CLOCK MUST BE STARTED d b —d cad el amd 0O NN L 14 104412 013746 177776 000240 045300 040146 060254 RMINIT: SAVREG 177776 1$: 040276 177777 26 040372 27 040374 28 040400 29 040404 30 040410 MOV MOV JSR 2s: 040164 33 040424 0 000040 34 040430 35 040434 36 040442 37 040444 38 040450 39 040452 40 040454 41 040460 3s: 040164 48 045226 040204 6$: 7%: 8s: 177776 000207 MOV MOV CMP 8LOS CLR CLR CLR CLR #<5282.>, anps PC., CLRQUE ARMERRS ,R1 #SEEKFG.R2 (R1)+ R1.R2 18 #DTUW,R2 #-1,(R1)+ R1,R2 28 DRVSTA DRVSTA+2 DRVSTA+4 DRYSTA+6 RMVEC,R3 #ISR, (R3)+ an5c+z (R3) RMADR , Ré g?O.RHCSZ(Rk) 000010 040534 000007 177776 040204 CLR CMP BLOS MOV MOV MOV 177770 42 040462 43 060466 44 040470 45 060474 46 040500 MOV MoV a#PS = (SP) RO,DRVINT 43 5$ DRVSTA(R1) R1 #°C7.R1 3s #7,R1 ;SAVE RO - R5 :SAVE THE PRESENT PROCESSOR STATUS :CHANGE THE PRIORITY TO S :CLEAR ALL REQUEST QUEUES :FIRST ADDRESS TO BE CLEARED %Ag; ADDRESS TO BE CLEARED LEAR ;ARE WE DONE? sBRANCH IF NO sLAST ADDRESS ¢INITIALIZE :DONE? :LOOP IF NO :SET ALL DRIVES TO OFFLINE ;SETUP THE RH70/RMBO VECTOR ;FIRST ADDRESS OF RH70/RM80 sMASSBUS INIT :START WITH DRIVE 0 ;INIT THE DRIVE s'DVA® NOT SET :NORMAL RETURN sSET DRIVE STATUS TO OFFLINE ;G0 TO NEXT DRIVE aAPS :MASK OUT UNUSED BITS :BR IF MORE DRIVES_TO GO ;START WITH DRIVE 7 :CLEAR THE PROCESSOR STATUS PC,SET.IE :BR _NOT_WAITING :SET INTERRUPT DPINT(R1) 8s DPINT (R1) 7% R1 63 (SP)+,a#PS P ;DRIVE INITILIZATION ROUTINE :WAITING FOR DRIVE TO SWITCH PORTS ? :DRIVE SWITCHED PORTS ? :BR IF NOT ;G0 TO THE NEXT DRIVE :CHECK NEXT DRIVE ;RESTORE THE PROCESSOR STATUS ;RESTORE RO - RS :BYE-BYE SI sTHIS ROUTINE DETERHINES IF A DRIVE EXIST AND IF IT IS READ-IN PRESET'' 1S ISSUED AND FMT16 :AN RM80. F IT IS, ;1S SET TO A1, THEN HOL, DPR, DRY, AND V\' ARE CHECKED TO Ve Ve BaBeBeBs 0, CALL 71 040534 72 040536 73 040542 74 040546 75 040552 76 040560 77 040566 78 040570 79 040574 040164 040174 000010 000111 010000 040164 004000 000001 020026 91 040654 92 040656 93 040652 040666 040670 94 040672 000000 BIT BEQ 18: 000407 177777 1 :NO=-~=BRANCH SELECT A DRIVE :D0 A DRIVE CLEAR COMMAND (& .EIZE DRIVE) #gIT12LRMCS2(R4)" ;NONEXISTENT DRIVE? 160 SET "'IE'* WITHOUT A “‘TRE" 4$ RO,RD.RM R IF DRIVE NOT AVAILABLE "CALL THE READ ROUTINE ‘REGISTER OFFSET S*NED' RETURN BIT MOV (SP)+,RS 4 *PUT DRIVE TYPE IN RS *SET RMBO INDICATOR *IS IT A SINGLE PORT RM80? MOVB CMP #1 DRVTYP(R1) #2002 CMP #24026,RS ‘IS IT A DUAL PORT RM80? ggva z;1.DRVTYP(R1) EE}TINDICATOR TO °OTHER® MOV #121,=(SP) JSR JSR RMOF 2 2 RO,WRT.RM #BIT12,-(SP) RO,WRT.RM *BRANCH IF YES *BR IF YES DO A *READ-IN PRESET' ‘CALL THE WRITE ROUTINE ‘REGISTER OFFSET S*NED' RETURN SET FMT16=1 $CALL THE WRITE ROUTINE *REGISTER OFFSET 5% JSR RO,RD.RM *'NED* RETURN “CALL THE READ ROUTINE MOV 8PL (sp)+ RS 3 *AND SAVE IT IN RS *BRANCH IF ATA=0 RMDS 5% MOVB JSR RMER1 040164 ;SAVE RS :START DRIVE STATLS AS OFFL NE ;CLEAR THE DRIVE TYPE INDIC: "OR ‘LEAVE THIS ROUTINE #BIT11, Rncs1(R4) see IF DRIVE AVAILABLE MOV 000016 R5,~(SP) DRVSTA(R1) DRVTYP(R1) R1,RMCS2(R4) #111,RMCS1(R4) *SET DRIVE STATUS TO OFFLINE 5% 044670 :NORMAL RETURN DRVSTA(R1) RMCS1 010000 044750 ;CALLED BY A JSR : ERROR OCCURRED ('NED*) CLRB B8R BEQ 28: RO,DRVINT R1 ;DRIVE NUMBER TO :UNIBUS ADDRESS OF RH70’/RM80 (RMCS1) PC,SET.IE BEQ 040174 #DRVNUM,R1 RMADR,R& JSR BEQ JSR RMDT 58 040174 000121 044750 040300 044670 RETURN1 RETURNZ MoV Movae 000000 000010 024026 177777 JSR CLR8 CLRB 064670 84 040622 85 040624 86 040632 87 040636 88 040640 89 040644 90 040646 MOV MOV DRVINT: MOV 045226 80 040576 81 040602 82 040610 83 040612 ;INSURE THEY ARE ALL ONA TM", AND DEPENDING ON THEIR STATE, :DRVSTA IS SET TO THE PROPER CONDITION. 5% ROL 8PL MOVB BR *REGISTER OFFSET S*'NED' RETURN ATABIT(R1) RMAS(RG) :CLEAR ATTENTION BIT RO,RD.RM :CALL THE READ ROUTINE *REGISTER OFFSET (SP)+ 33 S'NED' RETURN YIS IT UNSAFE’ N BRIF 43 JEXIT #-1,DRVSTA(R1) SET UNSAFE INDICATOR e N we SEQ@ 0181 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN=-82 15:16:58 PAGE 54-1 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) - CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN=-82 15:16:58 PAGE 54-2 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 105 040754 040764 040774 005105 042705 001003 112761 005720 012605 000200 3s: 167077 000001 040164 RS 5%: SEQ 0182 CHECK MOL, DPF., DRY, AND VV #‘C<BIT12'BITOB‘BITO?‘BITO6 RS’ 48 4$: 14 #1,DRVSTAC(R1) (RO)+ égp>+.ns :BRANCH IF MOL., DPR, DRY, OR VV IS CLEAR -SET DRIVE STATUS TO ONLINE *STEP OVER THE ERROR RETURN :RE?TORE RS €z sl SE@ 0183 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) ;REQUEST PRE-PROCESSOR-HANDLES SUBSYSTEM REQUEST : :CALL: : sCALL THE RMBO DRIVER RO,RM80 JSR : OF POINTER OF DRIVES PARAMETER BLOCK :ADDRESS PNTADR M IF QUEUE IS FUL HERE ;RETURN RETURN1 : ;RETURN HERE IF REQUEST IS IN QUEUE OR THERE RETURNZ : ¢1S AN ERROR CONDITION 1 2 3 4 b) 6 7 8 11 041000 12 041004 13 041012 14 041020 15 041022 16 041024 17 061030 18 041032 19 041036 20 04 21 04 1064 22 041050 013746 013737 112737 104412 011002 005062 111201 013704 105761 177776 040314 000001 000016 040310 040164 0460204 23 061052 105761 001027 004037 040534 25 041060 105761 040164 27 041066 105761 040214 010164 004037 000010 045344 29 041076 30 041100 31 041104 32 041106 33 041112 34 041114 35 041120 36 041122 37 041126 38 041130 39 041134 40 041136 41 061142 42 061144 43 041150 44 041152 45 041156 46 041160 47 041166 48 041172 49 041174 50 041202 51 041204 52 041212 53 041214 54 041216 55 041220 56 041222 57 041224 000445 105761 001037 004737 000434 004737 000431 004037 000431 032714 001023 004737 000420 105761 002412 012762 105761 001007 012762 000403 012762 104413 005720 000401 104413 005720 10503/ 177776 040259 RM80: a#PS,=(SP) 1ST8 BNE JSR BR TST8 BLE DPINT(R1) 4$ RO,DRVINT 33 DRVSTA(R1) 5% D:ROS(R1) 867 18: 1ST8 BNE MoV JSR 28: 040154 041236 042334 38: 045344 48: 000100 045226 58 040164 140000 040174 000016 100002 000016 110000 000016 040250 MoV MOV MOVB SAVREG MOV CLR Movs MoV 1518 , 68: 78: 8s: 98: BR TST8 BNE RMVEC+2,a#P$ #1,ACTDRV ¥§VSTA(R1) 4 R1,RMCS2(R4) RO,DRVO!IF 8s DRVACT (R1) 7% PC,OPT 78 PC.CI8 73 RO,DRVQUE 8$ #81706, (R4) 7$ PC,SET.IE 78 D§VSTA(R1) 6 :SAVE THE CALLING STATUS :DON'T ALLOW ANY RMB0 INTERRUPTS :SET “ACTIVE DRIVERTM FLAG = RS :SAVE RO :PICKUP_THE DRIVE PARAMETER BLOCK POINTER :CLEAR THE STATUS/ERROR INDICATOR :PICKUP THE DRIVE NUMBER ;UNIBUS ADDRESS OF RMCS1 : CHECK DRIVES STATUS :BRANCH IF ONLINE :TRYING TO INIT THE DRIVE :BR IF YES GO INIT. THE DRIVE :ERROR RETURN ;IS DRIVE STATUS ONLINE? NOT N :BR_IF 'OUTSTANggNG PORT REQUEST FOR THE DRIVE ? Y :BR IF sSELECT THE DRIVE :PUT THIS REOUEST IN QUEUE :QUEVE IS FULL ;1S THIS DRIVE ACTIVE? :BR IF YES ;CALL THE OPTIMIZER ;GO HANDLE THE °'NED’ sPUT REOUEST IN QUEUE :QUEUE IS FULL ;1S 'IE' SET ALREADY ? ;BR_IF IT IS sSET INTERRUPT .RETURN, REQUEST IN QUEUE SEE IF D§I¥E OFFLINE OR UNSAFE BR IF UNSA :SET OFFLINE ERROR INDICATOR #81T15!81714, 16(R2) SEE IF OFFLINE OR NONEXISTENT DRVTYP(R1) IF OFFL INE 78 ;REPORT DRIVE NONEXISTENT 0T 0 EXIT 78 :DRIVE IS UMSAFE - RS ORE'RO (RO)+ *SETUP FOR NORMAL* ~TURM SFINISH UP, THEN. 9% #81T15!B1T01, 16(fi2> #81T15!81T12, 16<k2>sT (RO)+ ACTDRY *RESTORE RO - RS connscL THE RETL .~ 5§ SCLEAR "ACTIVTM PR,, (LAG ry. ¥ CZRNAAQ RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 55 CZRNAAQ RMBO PERF EXER MACRO VO04.00 14=~JAN=82 15:16:58 PAGE 55-1 ¢ 15 SEQ 0184 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 58 041230 28 041234 012637 000200 MOV RTS 177776 (SP)+,a#PS RO ;RETURN 'PS'' TO USER LEVEL *RETURN TO CALLER 2} :OPTIMIZER-CALLED FOR A PARTICULAR DRIVE 63 CALL: 64 gg 67 041236 104412 68 041240 013746 177776 69 041244 70 041250 71 041252 004737 005702 001510 ; : MOV JSR OPT: SAVREG 045366 76 041274 77 0641300 78 041302 79 041306 80 041310 001407 032764 001003 004037 000473 105761 003016 004737 000100 000012 040534 18: 040164 28: 000016 140000 81 041314 012762 040164 105761 82 041322 100067 84 041330 012762 110000 000016 85 041336 000463 86 041340 87 041344 041350 041352 012746 004037 000000 041470 000111 044750 38: 89 041360 90 041362 91 041370 92 041372 001432 122762 002403 004737 94 041400 95 041404 005737 002015 93 041376 000443 000150 000002 041756 040276 48: 1GET 'DPRTM POINTER OF REQUEST ABIT11,RMCST(RG)’ JSR RO,DRVINT R 13 ;1S THERE A REQUEST IN QUEUE? :NO~-BRANCH TO EXIT :IS DVA SET? 2 #BITG, RMDS(RG) 28 ;BRANCH IF NOT ? IS VV SET ‘BR IF IT IS 8s DRVSTA(R1) 33 **DVA* NOT SET *1S DRIVE ONLINE? $YES=-BRANCH 10$ ea TO EXIT IF NOT MOV JSR RMCS1 8s #111,=(SP) RO,WRT.RM vo COMMAND ONTO THE STACK .CALL THE WRITE ROUTINE ‘REGISTER OFFSET S*NED' RETURN BEQ CMPB BLT JSR 78 #150,2(R2) 4 PC.CI4 ST 8GE DTUW 6$ BR TST8 86T MOV B8R 8IT 88 041354 032714 004000 :SAVE PROC. STATUS BIT BEQ BIT BNE 8PL 83 041326 :SAVE RO = RS PC,GETREQ JSR MOV TSTB 0465400 aNPS,=(SP) ;DRIVE NUMBER TO R1 SSETUP A COMMAND JSR ST BEQ 72 041256 032764 004000 000000 73 041262 7% 061264 75 041272 MOV #DRVNUM,R1 PC,OPT B8R *SEE IF DRIVE STILL ONLINE ? NO--REMOVE REQUEST FROM QUEUE SET OFFLINE STATUS/ERROR INDICATOR 4 16(§2) caxr1s'sxr1 75 DRIVE UNSAFE2 DRVSTA(R1) PC,POPQUE sSET UNSAFE STATUS/ERROR INDICATOR #BIT15!BIT12, 16(R2‘ ANCH T0 EXIT 108 #8IT11,(RG) 108§ *DRIVE AVAILABLE ? ‘BR IF NOT :IS_THE REQUEST FOR 1/0? *YES=-BRANCH SCALL THE COMMAND INITIATOR *BRANCH TO EXIT DATA TRANSFER UNDERWAY? ES--G0 START A SEARCH BNE BIT8 ;FINISHED A SEARCH ? sncuu? ATABIT(R1), IF NE, YES 58 041424 146137 040300 040246 S$: 100 101 041432 004737 041516 BICB JSR F PL DO A SEAR WAIT'* KEY 'ssAncn :CLEAR sacnuf:START ATABIT(R1), TRANSFER A"DATA PC,CI 68: JSR PC,CI3 041406 136137 040300 040246 96 97 041414 001003 98 041416 005737 040254 99 041422 100006 102 041436 000423 103 041440 004737 043650 ST 8PL BR SEEKFG 6$ 108 oo IMALIED sesxsv :START A SEARCH 104 041444 000420 105 041446 112761 177777 040214 7$: 106 041456 010103 B8R MOVB MOV 108 #-1.DPRAS(R1) R1.R3 16O TO THE EXIT -SET PORT REQUEST INDICATOR ‘SET UP TO ADDRESS WORDS 8s: 98 : JSR BIT PC.CI8 081106.(R4) *PROCESS THE °NED' ‘SEE IF 'IE' ALREADY SET 006303 041460 012763 035230 040256 108 109 041466 000402 107 041456 110 041470 004737 042334 111 041474 032714 000100 112 041500 001002 ASL MOV BR BNE CONVERT TO WORD INDEX nssSEXIT ;START 15 SECOND TIMER 015000..11n5a< 9s R? 108 ‘BR IF SET 15 SEQ 0185 SINGLE/DUAL PURT RH70/RM80 DRIVER (REV 0.17) WA =O 000NN 004737 012637 104413 000207 045226 177776 108: JSR MOV RESREG RTS PC,SET.IE (SP) +,a#P$S PC ;SET "IE'" WITHOUT A '‘TRE"’ sRESTORE PROC. STATUS JRESTORE RO = RS :COMMAND INITIATOR ECALL: MOV MoV JSR #DRVNUM,R1 #DPB,R2 PC.CI1? Ve SeTe® We e : NPV NN = OOV b b d b b ord J‘S‘WWWEJ =2 OV N D b b d =D d e e b D b D e e D D e D d d o D NUWNNWNNI NI NI NININI NN NN wd = b b b b 113 041502 041506 041512 041514 sDRIVe NUMBER :ADDRESS OF DPB :CI?= CI1,CI3, OR Clé sWHERE: sC11=DATA TRANSFER sC12=SEARCH REQUESTED BY DATA XFER sCI14=NOT DATA TRANSFER sSTART A DATA TRANSFER 041516 041522 041526 041530 041534 041540 041544 004737 010237 010203 013704 010164 062703 062704 041550 012324 041552 041554 041556 012324 012346 004037 0461564 142 041566 143 041570 042334 012346 004037 041576 144 041600 041604 041606 145 051610 146 041614 042334 004037 000032 042334 042716 004037 041562 041574 041620 041622 147 041624 148 041630 041634 041636 149 041640 000006 000034 000032 042334 016246 004037 000000 0462334 010137 040310 000010 000004 000002 JSR MOV MOV MOV MOV ADD ADD PC,POPQUE R2. TRNSWT R2.R3 , 4 RMADR R1,RMCS2(R4) ¥4 .R3 #2°R% i 044730 MOV MOV JSR (R3)+. (R4)+ (R3)+,=(SP) RO,WRT.RM 044750 I8 MOV JSR (R3)+,=(SP) RO,WRT.RM 045400 060244 CI1: MOV RMDA RMDC I8 JSR RMOF CI8 BIC JSR 044670 001000 044750 RMOF c18 MOV JSR RMCS1 CI8 MOV 000002 044750 040276 JMP }gg 041644 000137 042312 (R$)+,(RG)+ RO,RD.RM #81T09, (SP) RO,WRT.RM 2(R2) ,=(SP) RO,WRT.RM R1,DTUW 1§ ;REMOVE REQUEST FROM 'DRIVES WAIT'* QUEUE :PUT REQ. IN TRANSFER WAIT QUEUE :DPB ADDRESS TO R3 SRMCS1_ADDRESS :SELECT DRIVE :DESIRED WORD COUNT SRMJC ADDRESS :LOAD WORD COUNT :LOAD BUFFER ADDRESS :LOAD SECTOR AND TRACK :CALL THE WRITE_ROUTINE :REGISTER OFFSET :*NED* RETURN SLOAD CYLINDER ADDRESS SCALL THE WRITE_ROUTINE :REGISTER OFFSET :'NED' RETURN SCALL THE READ ROUTINE :REGISTER OFFSET :*NED' RETURN :CLEAR_'SKIP SECTOR ERROR INHIBIT' SCALL THE WRITE ROUTINE SREGISTER OFFSET :'NED® RETURN :'NED’ RETURN :SET *DATA TRANSFER UNDERWAY'' :START A SEARCH }gg 154 041650 155 041654 156 041660 157 041664 013704 010164 016246 004037 061672 0462334 041670 000034 040310 000010 000012 0644750 cI3: MoV MOV MOV JSR RMDC 18 , 4 RMADR R1,RMCS2(R4) 12(R2) ,=(SP) RO,WRT.RM 5 SLOAD ''COMMAND+GO'', *'A178A16'", AND ‘PSEL"’ SCALL THE WRITE ROUTINE :REGISTER OFFSET sRMCS1 _ADDRESS sSELECT DRIVE sDESIRED CYLINDER ADDRESS sCALL THE WRITE ROUTINE sREGISTER OFFSET :"NED' RETURN FyY ¥. 3 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 55-2 CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN=-82 15:16:58 PAGE 55-3 E 15 SEQ 0186 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) N—A—bgo NSO o ) b —d el - SNSNNNN o0 000011 044750 040300 b wnd ADD MOV MOVB JSR #31..R3 R3,=(SP) 11(R2),1(SP) RO,WRT.RM ;COMBINE (HE ADJUSTED SECTOR WITH :THE DESIRED TRACK SCALL THE WRITE ROUTINE #131,-(SP) RO,WRT.RM :'NED' RETURN :START A SEARCH :CALL THE WRITE RGUTINE :REGISTER OFFSET :"NED* RETURN BISB BR Clé4: 0461756 041762 041766 041772 041776 :REGISTER OFFSET ATABIT(R1),SRCHWT cI5 ;SET "'SEARCH WAIT'' KEY RMADR,R& R1,RMES2(R4) ;RMCS1_ADDRESS :SELECT DRIVE (NP8 BNE MOV JSR #131,R3 18 10(R2),=(SP) RO,WRTR 1S IT A SEARCH COMMAND? :BRANCH_IF _NO ci8 aR (NP8 BNE MOV JSR 28 #105,R3 38 12(R2),=(SP) RO,WRTRM MOVB N ~N L= H N (=] 000105 1$: 000012 044750 2$: RMDC ci8 o o &~ n R 000115 3s: 044670 o 2 BNE JSR RMOF cI18 000107 bo SOOI (MP8 c18 MOVB JSR_ 044750 b nd d e D e d d d e BR RMOF 000001 ~ oONN RO e3 & R o [ =) o RRRRRRRRRRRRR [aS 1,8 FDAt MOV MOV RMDA G ISR b d b b :BACKUP BY MAX. SEARCH FOR 1/0 WINDOW INITIATE A NON-1/0 OPERATION 000D 0000~ W= O0 b Y N T P b b emd and - d e ad 0000 oo~ — :PICKUP SECTOR ADDRESS MXUNDURS c18 MOV JSR_ RMCS1 cI8 040246 10(R2),R3 SUB RMDA 000131 044750 b b - aud b b amd 000001 18: -—d b MOVB 000010 040320 000037 b NNNNNNNNNOONO O NV WNI=O V00~ 116203 163703 ~ w RRRERRR &R b end b b B 200*0*0 WN=0O 158 041674 159 041700 4$: 044£70 042334 (NP8 BNE (LR 044750 000143 BR 148 #115,R3 4S$ RO,RD.RM 1(R2),(SP) RO,WRT.RM 14$ :'NED® RETURN 360 LOAD CYLINDER SIS IT A SEEK COMMAND :BRANCH_IF NO :LOAD DESIRED CYLINDER :CALL THE WRITE ROUTINE :REGISTER OFFSET :*NED' RETURN . ;1S IT AN "OFFSET'* COMMAND? :BR IF _NO :CALL THE READ ROUTINE :REGISTER OFFSET :*NED* RETURN :BYTE WHEN LOADING THE REGISTER :CALL THE WRITE ROUTINE :REGISTER OFFSET :*NED* RETURN =(SP) 148 (NP8 #143,R3 JSR RO,RD.RM cI8 :REGISTER OFFSET :CYLINDER ZERQ 58 c18 BR RMOF :LOAD DESIRED TRACK & SECTOR :CALL THE WRITE ROUTINE ;1S IT A *RECALIBRATE'* COMMAND? RO,WRT.RM BNE :PICKUP THE REQUESTED COMMAND #107,R3 JSR RMDC 5%: 2(R2),R3 68 :1F NE, NO :CALL THE WRITE ROUTINE :REGISTER OFFSET :'NED® RETURN 3 CONTINUE, . SIS IT A “'SET FORMAT'' COMMAND? SBRANCH IF NO :CALL THE READ ROUTINE :REGISTER OFFSET :'NED* RETURN - CZRNAAO RMBO PERF EXER MACRO Vv04.00 14 JAN=82 15:16:58 PAGE 55-4 SINGLE/DUAL PORY RH70/RM80 DRIVER (REV 0.17) bk cmd cad cud [0 YV 1V, 1V, 1V} [ST¥V Y NTle) KRRRRKRR [(S1,S1.NT.NT. ¥} (e]lolelel [N S, S,V ] [elele] WA — 199 042136 200 042144 11626 00407 204 042164 05 NOONNIOONONOMNNO WNNNIN) = = —b N ¥ Y Y 3T o NNV NINLINLNININI NINN NN[ gV 1,8] 000006 78: 062206 8s: 98: 042206 000002 042206 108: €00145 IS & bg KRRR]R Vele RNTe NV PV [ NLJ =] - b e e d b b NP NN 63 118: 044750 045400 000200 060252 000207 000016 128: 138: :COMBINE "FMT16',"ECI'',"HCI"’, & *'SSEI"’ 128 ‘REGISTER OFFSET S*NED' RETURN . 108 ‘BRANCH IF NO RO,WRT.RM CMP8 #141,R3 MOV 6(R2) ,R3 MOVE MOVB JSR ngs1 10(R2),9% 11(R2).RS RO,RD.RM MOV CMP (SP>+, (R3)+ 9% RS RMOF I8 BR BNE BEQ ADD B8R 12§ 8s 42,98 CMPB #145.R3 BIS ST PC,POPQUE #8i107,16(R2) SAVEFG JSR RTS PC,SVRH70 PC BEQ MOV JSR RMCS1 18 JSR SEQ 0187 1(R2),1(SP) JSR 8PL 045062 128 R3,~(SP) RO.WRT.RM 13 *CALL THE WRITE ROUTINE _ ;1S IT A "'GET REGISTER'® COMMAND? *PGINTS TO 1ST ADDRESS OF WHERE *T0 PUT THE REGISTER(S) *INIT. THE INDEX FOR THE FIRST REG. TINDEX 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 YIS IT A ‘‘SELECT DRIVE'' COMMAND? ‘BRANCH IF YES SLOAD THE COMMAND ‘CALL THE WRITE ROUTINE ‘REGISTER OFFSET S*'NED® RETURN ‘REMOVE REQ. FROM QUEUE :SET THE ‘DONE'' BIT *SAVE THE WH70/RM80 REGISTERS? *BRANCH IF NO ‘YES==GO SAVE THE REGISTERS *RETURN TO USER ;START A NON-DATA TRANSFER OPERATION 148: 044750 NN WA NN = 010346 004037 MOV JSR RMCS1 CI8 R3,=(SP) RO.WRT.RM ;LOAD THE COMMAND ‘CALL THE WRITE ROUTINE ‘REGISTER OFFSET *'NED® RETURN :START THE COMMAND TIMER 023420 040256 000001 040154 CIS: ASL R1 ggx :}oooo..rxnsn<a1) MOVB RTS #1.DRVACT(R1) PC :SET A 10 SECOND TIMER :SET THE DRIVE ACTIVE ‘RETURN TO THE USER :PROCESS A NON-EXISTENT DRIVE 41 242 042334 243 042336 244 042342 245 042344 246 042350 247 042354 248 042356 249 042362 MOVB 000001 000141 000010 000011 064670 209 042206 225 042276 226 227 228 229 042300 230 042302 042306 062310 000001 044750 F 15 040154 CI8: TSTB BEQ DRVACT(R1) 3 BEQ JSR ST 18 PC,GETREQ R2 MOV CMP 0460244 040276 045366 SAVREG 18: TRNSWT ,R2 R1,DTUW :SAVE RO - RS ‘DRIVE ACTIVE? *BRANCH IF NO . *GET THE ‘‘TRANSFER WAIT'* QUEUE *DID THIS DRIVE HAVE AN 1/0 IN PROGRESS? ‘BRANCH IF YES ‘GET THE DPB POINTER *QUEUE ENTRY FOR DRIVE ? CIRNAAO RMEO PERF EXER MACRO V04.00 14~JAN=-B2 15:16:58 PAGE 55-5 15 SEQ 0188 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 256 042616 257 042422 258 042426 259 0426432 260 042436 261 042442 262 042446 263 042450 —— >~ 001403 01 76§ 012763 105061 020137 001005 o 250 042364 351 042366 52 042374 253 042402 254 042406 255 042412 012737 005037 004737 105061 105061 004737 104413 000207 10000; 177777 040154 040276 000016 040256 177777 040276 040244 045332 040164 040174 045226 NOT BEQ 2% {SET DRIVE NON-EXISTENT' INDICATOR MOV Mov THE TIMER ;STOP :SET_"DRIVE ACTIVETM' TO IDLE éfi THIS DRIVE SETUP FOR A TRANSFER CLRB CMP BNE :RESET THE INDICATOR MOV 3s: 48: CLR JSR CLRB CLR8 JSR RESREG RTS DRVSTA(R1) DRVTYP(R1) PC,SET.IE :CLEAR THE TRANSFER QUEUE :CLEAR THE DRIVE'S QUEUE :SET DRIVE TO OFFLINE :CLEAR THE DRIVE TYPE INDICATOR SSET "'IE'* WITHOUT *TTRE' PC :RETURN PC.EMPTYQ :RESTORE RO = RS CZRNAAQ RM80 PERF EXER MACRO v04.00 1..-JAN=-82 15:16:58 PAGE 56 H 15 SEQ 0189 040250 ISR: 040310 0460276 & (=] o H KRRRRR 0000 [, 91, ¥}NN N » &~ He ~4 oW L )(@ 1,8 ~N 000001 042514 063334 18: 040250 Mov8 #1,ACTDRV MOV MOV Ré4 RMADR, DTUW,R1 18 SAVREG BLT JSR JSR RESREG CLR8 RTI PC.TD PC.SC ACTDRV sSET ""ACTIVE DRIVER'® FLAG :SAVE RO = RS ADDR;SS OF RMcS1 ;GET "DATA TRANSFER UNDERWAY'' INDICATOR ;BRANCH IF NO DATA TRANSFER UNDERWAY sCALL TRANSFER DONE ;CALL SPECIAL CONDITIONS :RESTORE RO = RS sCLEAR "ACTIVE DRIVER'® FLAG :RETURN SEIFSREHSFS~ (v 040276 177777 0460256 CLRB MoV ASL MOV ASR MOV CLR BIS 000016 MOV JSR RMCS1 cI8 NNNN HN NN 040154 177777 040244 060244 000200 000010 044670 [V, 1V, 19,1V,] (=] NNVA) = :TRANSFER DONE ROUTINE ~ ?J\gb RRRRRRVRRR N = O 0 00 VSN rofrong o ~NO~ :INTERRUPT SERVICE ROUTINE (=]l PONIPINININ) = b od = b b cad d ed b O VN S NN — OO 00 NO VN S Wi = SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) ROL 045062 043246 04366 18: 041236 000207 004037 45 46 042654 47 0462656 000113 044670 3s: #=1,TIMER(RT) R1 TRNSU;.RZ TRNSW s CANCEL TIMEOUT #81707,16(R2) R1,RMCS2(R4) RO,RD.RM ;GET ‘DPB'’ ADDRESS FROM THE :TRANSFER WAIT QUEUE--CLEAR QUEUE :SET DONE :SELECT THE DRIVE :CALL THE READ ROUTINE :REGISTER OFFSET s 'NED'® RETURN (SP)+ ;18 TRE 1 SAVEFG 1% SAVE THE RH70/RM80 REGISTERS? 3s JSR PC,SVRH70 PC,wWC.HK :BR IF YES :BRANCH IF NO sYES==SAVE THE REGISTERS :SEE IF WRITE CHECK TO BE PUT IN QUEUE R2 23 :GET DPB POINTER :ENTRY FOR DRIVE ? :BR IF NOT CALL OPTIMIZER #113,(R4) SELEASE THE DRIVE PC,GETREQ PC,OPT PC PC RO.RD.RM ;RETURN sCALL THE READ ROUTINE RfiGISTER OFFSET 000600 28178'8177,(SP)+’.1 044670 RO,RD.RM 000040 #SSE, (SP)+ 4$ 044670 001416 2s: sSET DRIVE ACTIVE INDICATOR TO IDLE :NO DATA TRANSFERS UNDERWAY BMI] TST 040252 DRVALT(RY) 0;1.DTUU R 001000 ETURN :SEE IF HCRC OR HCE ERRORS NE, VES :CALL THE READ ROUTINE REGISTER OFFSET RO,RD.RM :"NED® RETURN :SEE_IF SKIP SECTOR ERROR :IF EQ, NO :CALL THE READ ROUTINE #SSEIL, (SP)+ SKIP :"NED' RETURN ;1S THE INHIBIT BIT ALREADY SET ? :1F EQ, NO ;REGISTER OFFSET CZRNAAO RMBO PERF EXER MACRO V04,00 14-JAN=82 5:16:58 PAGE 56~1 SEG 0190 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 100100 53 042712 052762 55 042724 56 042730 60 042740 gg 042744 004737 045052 012714 060111 012714 000113 000207 54 042720 004737 065332 000016 4$: BIS JSR JSR MOV MOV RTS ;SET DATA ERROR FLAG 081715'81106 16(R2) ;EMPTY THE 'DRIVE'S WAIT'' QUEUE PC,EMP PC svnu7o 046111 (R&4) 3, (R4) Pt SAVE THE, RH70/RMB0 REGISTERS :ISSUE A *DRIVECLEARTM ISSUE A RELEASE TO THE DRIVE sRETU ;SKIP SECTOR HANDLING ROUTINE gz 65 042746 010137 040276 132762 000002 66 042752 010237 060244 67 042756 005062 000016 68 042762 70 042770 76 062772 042776 043000 001447 004037 000034 062334 76 043006 004037 75 043002 043012 043014 77 043016 78 043022 043026 043030 012662 000006 042334 012662 004037 000002 042334 SKIP: 000002 044670 MOV BNE MOV (SP)+,R0 2 $WCNT (R2) ,RO SU8 #-258. RO ADD CMP BLE MOV #-258. RO RO, #-6 3 #<6.R0 MOV BR $8UF (R2) ,R3 5s RMWC I8 89 043050 90 043054 91 043060 92 043062 062700 020027 003402 012700 177376 177772 2s: 96 043102 3; 043106 016203 000417 000006 004037 044670 177772 93 043066 010062 000004 9% 043072 010062 000020 95 043076 005462 000020 38: 99 043110 043110 043114 043116 48: 066203 113 043146 117 043150 010346 004037 043156 118 043160 042334 010046 043154 000004 (SP)+,$CYL(R2) (SP)+,$SEC(R2) RO,RD.RM 18: 111 043142 ;IF EQ, NO MOV JSR 177376 110 043140 4 RO,RD.RM 000010 044670 RMDA I8 162700 105 043120 106 043124 107 043130 108 043132 109 043136 sLOAD ACTIVE DRIVE NUMBER :RESTORE TRANSFER FLAG sCLEAR THE DRIVER STATUS RO,RD.RM 87 043042 042334 166216 042716 011603 066216 012600 225303 #2,SCOMND (R2) R2. TRNSWT $TATUS (R2) JSR 044670 000004 000002 BITB MOV 000012 012600 001005 016200 002775 R1,DTUW MOV CLR BEQ JSR RMDC cI8 79 043032 80 043034 gg 043036 88 043046 MOV 000004 044750 MOV MOV NEG RO, $WCNT (R2) RO. SWRDL (R2) $WRDL (R2) s 'NED* RETURN ;SAVE NEW STARTING CYLINDER ADDRESS sCALL THE READ ROUTINE ;REGISTER OFFSET s'NED* RETURN :SAVE NEW STARTING TRK/SEC ADDRESS ;CALL THE READ ROUTINE :REGISTER OFFSET s'NED' RETURN :GET REMAINING WORD COUNT :BR IF PARTIAL SECTOR LEFT :STARTING WORD COUNT ;IF RMJC WAS AT ZERO AFTER TRANSFER, :FIND THE # NUMBER OF WORDS FOR LAST SECTOR :BR IF NOT DONE YET ;ADD 1 SECTOR BACK ;1S WORD COUNT AT LEAST 6 ? :BR_IF YES sSET WORD COUNT TO 6 :STORE NEW WORD COUNT IN DPB :STORE NEW WORD COUNT LENGTH IN DPB AND :MAKE 17 POSITIVE ;STARTING BUFFER ADDRESS RO,RD.RM sCALL THE READ ROUTINE CI8 SUB BIC MOV ADD MOV $WCNT (R2), (SP) #377, (SP) (SP) .R3 (SP) SWCNT(R2), (SP)+,R0 :CALCULATE THE NUMBER OF WORD TRANSFERED :LEAVE ONLY SECTOR MULTIPLES ADD $BUF (R2) ,R3 :NEW BUFFER ADDRESS ASL 58 18 :CALL THE READ ROUTINE ;REGISTER OFFSET JSR RMWC 000004 000377 000006 BLT ;SEE IF HEADER ORDER MOV JSR RMBA I8 MOV R ,=(SP) RO_WRT.RM RO,~(SP) ;REGISTER OFFSET s'NED' RETURN :COPY THE DIFFERENCE :NEW WORD COUNT ;COPY THE WORDCOUNT : CONVERT WORD DIFFERENCE TO A BYTE DIFFERENCE :BUFFER ADDRESS sCALL THE WNITE ROUTINE :REGISTER OFFSET s'NED* RETURN :WORD COUNT 82 15:16:58 PAGE 56-¢ CZRNAAD RMBO PERF EXER MACRO Vv04.00 1 o 7) SINGLE/DUAL PORT RH70/RMBO DRIVER (REV 119 043162 66 004037 064670 I8 MGV JSR #40111, (R4) RO,RD.RM 001000 044750 I8 BIS JSR #SSE], (SP) RO,WRT.RM s "NED* RETURN :CLEAx_THE DRIVE ;CALL THE READ ROUTINE ;REGISTER OFF SET s 'NED' RETURN ;SET THE INHIBIT BIT sCALL THE WRITE ROUTINE cI8 MOV #1,3SSENB(R2) ;INDICATE THAT SKIP SECTORING WAS ENABLED RMWC W=2000 N RMOF RMOF 000112 MOV JSR RMCS1 cI8 RTS 000207 :REGISTER OFFSET :REGISTER OFFSET : 'NED' RETURN $SCOMND (R2) , -(sp)’ RO,WRT.RM PC ;GET THE ORIGINAL COMMAND ;CALL THE WRITE ROUTINE :REGISTER OFFSET s 'NED' RETURN RETURN :FORCED WRITE CHECK ROUTINE 043246 005737 WC.HK: 001502 000161 000002 18: 045344 000016 002140 o F3 W N ~ o WA = OOV =2 000 NO N WIS W D b b e ad b b b ) b ced and b b b wd =D b b b b VIVWVIWVAVNES S SO B 0 8 8 B AW N WA N sCALL THE WRITE ROUTINE RO,WRT.RM 000001 000002 044750 — o SEQ 0191 JSR 044750 040111 043244 J 15 043332 000207 000151 000027 000034 000032 000002 TST BEQ WRTCHK 28 JSR BR CLR 2$ RO, DRVQUE 2$ $TATUS (R2) CMPB BNE #WRTDAT, sconno(aé) :PUT THE OPER. TION IN THE QUEUE QUEVE IS FULL :CLEAR *DONE' BIT IN DPB CLRB ;SAVE WRITE OPERATION CODE SRMCS1(R2),SPREVO(R?) ;SAVE CYLINDER $CYL (R2) , SPREVA+2(R2) ;SAVE SECTOR AND TRACK ADDRESSES $SEC (R2) . SPREVA(R2) ; CHANGE WRITE DATA TO WRITE CHECK $CODE (R2) RTS PC MOVB MOV MOV 2%: URITSTCHECK? :D0 N IF :LAST OPERATION A WRITE COMMAND ? :BR IF NOT MOVB #WCKD,SCOMND(R2)’ sCHANGE FUNCTION CODE TO WRITE CHECK :SPECIAL CONDITION ROUTINE 043334 043340 116403 000016 SC: 044670 045226 1% 2s 005001 000001 MOVB BNE JSR RMCS1 CI8 ROLB 8M] EMT JSR RTS CLR MOVB MOV CLR RMAS(R&),R3 2s RO,RD.RM (SP)+ 18 1 PC,SET.IE PC -(SP) R3.(SP) #1,R3 R1 /READ 'RMAS'’ ;BRANCH IF ANY °‘ATA' BITS SET sCALL THE READ ROUTINE :REGISTER OFFSET 'gED' RE{QRN :YES, NO DRIVES TO CHECK AN ILLEGAL INTERRUPT :REPORT INTERRUPT ENABLE gg; PROCESS ALL DRIVES THAT HAVE ;AN TATA''=1 ;PROCESS ALL DRIVES WITH “‘ATA'* SET 9 ? 043404 030316 106303 sc3: BIT R3, (SP) SC4: INC ASLB R1 R3 BNE scs sATA=1? : YES=-BRANCH ;MOVE TO THE NEXT DRIVE CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN=82 15:16:58 PAGE 56-3 15 SEQ 0192 SINGLE/DUAL PORT RH70/RMB0 DRIVER (REV 0.17) 172 043410 173 043412 };g 043614 BNE ST RTS 001373 005726 000207 SC3 (SP)+ PC ;:BRANCH IF MORE TO CHECK? ‘CLEAN OFF THE STACK *RETURN TO USER -DETERMINE IF THE DRIVE WITH *‘ATA’' SET 1S ACTIVE WITH A COMMAND ;;9 178 063416 179 043422 180 043426 105761 001402 000137 182 043434 001402 184 043442 }gg 043446 105761 001016 SC5: 040204 044012 18: 181 043430 105761 040214 183 0643436 0C0137 044012 28: 0401564 194 043470 195 043472 196 043474 197 043476 198 043500 043500 533 043502 105761 001351 032737 001003 011605 060204 020000 DPINT(R1) 18 SC13 ISTB DPR@S(R1) JMP SC13 BEQ TSTB BNE 2 DRVACT(R1) SCé ;INITIALIZING THE DRIVE ? *BR] IF NOT *PROCESS THE DRIVE *PORT neoussr OUTSTANDING ? N ‘BR IF *START rns OUTSTANDING COMMAND ? *DRIVE ACTIVE ‘BR IF ACTIVE :THE DRIVE WAS NOT ACTIVE, FIND OUT WHY IT INTERRUPTED :SAVE RMDS, RMER1 AND RMER2 PC.SC12 JSR *ALSO DO A DRIVE INIT (DRVINT) }gg 189 043450 004737 043750 190 191 043454 192 043460 193 043462 TSTB BEQ JMP 040154 38: 104002 000742 48: 104005 000740 TSTB BNE BIT “TRYING TO INIT THE DRIVE ? DPINT(R1) :BR IF YES, CHECK ON MORE DRIVES SC4 #BIT13,RMERRS+6 :ADDRESS PLUG CHANGED? EMT BR 2 SC4 BNE MOV EMT BR (S (SP) ,RS *BR IF YES ‘PICKUP (RMAS) BEFORE THE ERROR CALL: 5 SC4 :REPORT THE ADDRESS PLUG CHANGE *CHECK FOR MORE DRIVES *REPORT THE UNEXPECTED ATTENTION 16O CHECK FOR MORE ATA'S :THE DRIVE COMPLETED A NON=-I1/0 COMMAND 585 203 043504 204 043506 205 043514 206 043516 006301 012761 006201 004737 177777 040256 209 043536 210 043540 211 043542 212 043544 043552 213 043554 214 043556 215 043562 216 043566 043572 043574 217 043576 ROL 8PL JSR 064670 RMER1 SC8 043656 MOV 012605 004737 045062 012746 000111 004037 044750 000000 043656 221 043612 052762 100220 000016 RO.RD.RM (SP) RS (SP)+ sC11 RO,RD.RM (SP)+,RS SELECT DRIVE *CALL THE READ ROUTINE *REGISTER OFFSET S*NED' RETURN SAND PUT IT IN RS *WAS THERE AN ERROR? *BR IF NO ERROR *CALL THE READ ROUTINE ‘REGISTER OFFSET SNED' RETURN SAND SAVE ITIN RS *SAVE RH?O/RHBO REGISTERS SISSUE A DRIVE CLEAR *CALL THE WRITE ROUTINE REGISTER orrser :*NED® RETURN PC,SVRH70 #1§1,-(sP) 8IS B8R !BITGS.16(R2) 081715!BlTO? 28 BM] 1S: PC,GETREQ :SETUP TO ADDRESS WORDS :STOP THE TIMER *RESTORE THE DRIVE ADDRESS ‘GET THE DPB POINTER FROM THE QUEUE JSR MOV JSR RMCS1 SC8 ROL 006105 100404 100240 000016 052762 043602 219 220 043610 000403 218 043600 R1'RMCS2(R4) MOV 011605 043550 000014 MOV JSR RMDS SC8 043656 00612 100053 004037 R1 #-1,TIMER(R1) R1 JSR 045366 207 043522 010166 000010 208 043526 004037 044670 043532 000012 3534 ASL MOV ASR 8IS RO,WRT.RM RS 18 uAs 'UNSAFE ABIT15!81T07:B1T04,16(R2) CONDITION =1? ; INFORM USER OF ERROR :INFORM USER OF UNSAFE ERROR C. 222 043620 223 043624 105061 004737 040154 045332 225 043636 012746 000113 0643646 063650 000000 043656 2$: 8I(8 226 043630 146137 040300 040246 226 043642 g%g 0643652 004037 000137 JSR RMCS1 5.8 JMP 043404 004737 004737 000137 SC8: 045332 042334 043404 105061 136137 040154 040300 001012 004737 052762 005737 100002 045400 000200 040252 116164 004737 000137 040300 041236 043404 004737 045062 040246 SC11: 258 044004 259 044006 gg? 044010 000016 000016 010164 016437 000010 000012 016437 004037 000401 000207 005726 000722 000042 040534 1$: 040146 sC12: 177777 267 044024 268 064030 010164 116164 000010 040300 006201 269 044036 032714 004000 272 0664046 273 044054 274 044056 275 044060 276 044064 #113,-(SP) sRELEASE COMMAND ATABIT(R1),SRCHWT RO,WRT.RM SCé4 sCLEAR THE SEARCH WAIT FLAG ;CALL THE WRITE ROUTINE sREGISTER OFFSET s'NED' RETURN ;CHECK FOR MORE DRIVES PC.EMPTYQ PC,CI8 SC4 ;CLEAR THE DRIVE'S QUCUE sPROCESS THE °'NED’ sCHECK MORE DRIVES JSR movs JSR JMP :SET DRIVE IDLE DRVACT(R1) ;DOING A SEARCH OPERATION FOR ATABIT(R1) ,SRCHWT :AN 1/0 COMMAND? :BRANCH IF YES 1$ :REMOVE REQUEST FROM QUEUE PC,POPQUE ;SET 'DONE'’ BIT #81707,16(R2) :SAVE THE REGISTERS? SAVEFG :BRANCH IF NO 1$ :YES==SAVE ALL OF THE RH70/RM80 REG'S PC,SVRH70 sCLEAR ATTENTION BIT ATABIT(R1) ,RMAS (R4) REQUEST A sSTART PC,OPT ;CHECK FOR MORE DRIVES SC4 Mov MoV sSELECT DRIVE R1,RMCS2(R4) ;SAVE THE FOUR REGISTERS THAT ,RMERRS RMDS (R4) mov JSR BR RTS TST B8R +4 2 (R4) ,RMERRS RMER sINIT. THE STATE OF THE DRIVE RO,DRVINT ERROR EXIT :TAKE 18 sRETURN PC :POP PC OFF OF THE STACK (SP)+ THE PARITY ERROR sPROCESS Sc8 040152 RMER1 (R4 § ,RMERRS +2 sWILL TELL US SOMETHING ;DUAL PORT REQUEST PROCESSOR 006301 012761 270 044042 CLRB BIT8 MoV 18: 264 044012 265 044014 271 0464044 sSET DRIVE TO IDLE :DUMP THE QUEUE ;ERROR PROCESSOR ggg 266 044022 JSR JSR JMP BNE JSR BIS TST BPL 254 063762 016437 000014 0640150 255 063770 256 043776 257 044002 DRVACT (R1) PC.EMPTYQ sNON=1/0 COMMAND TERMINATION ROUTINE 52? 252 0643750 253 043754 SEQ 0193 :ISR 'NED'’ PROCESSOR ggg 237 043672 238 043676 239 240 043704 241 043706 262 043712 263 043720 244 043724 245 043726 246 043732 247 043740 gzg 043744 MoV 044750 %%8 231 043656 232 043662 %gz 043666 CLRB JSR L 15 040256 SC13: 012761 006201 000433 105761 001424 035230 040204 MOV Move :SELECT THE DRIVE R1,RMCS2(R4) sCLEAR THE ATTENTION BIT ATABIT(R1) ,RMAS(R4) BNE 1$ BIT 001006 006301 R1 #-1,TIMER(R1) ASR 000016 ASL MoV 040256 1$: ;SETUP TO ADDRESS WORDS ;STOP THE TIMER ASL MoV ASR B8R 1ST8 BEQ R1 #81T11, (R4S R1 . sDRIVE AVAILABLE ? :BR IF AVAILABLE #15C00.,TIMER(RT) R1 3s DPINT(R1) 28 JEXIT sSTART 15 SECOND TIMER AGAIN sINITIALIZING THE DRIVE ? ;BR IF NOT mo CZRNAAQ RMB0 PERF EXER MACRO V04.00 14-JAN=82 15:16:58 PAGE 56-4 SINGLE/DUAL PORT RH70/RMB80 DRIVER (REV 0.17) RM DPINT(R1) RO,DRVINT 277 044066 278 044072 279 044076 280 044100 281 044104 282 044106 283 044110 284 044112 285 044116 286 044124 287 044130 288 044134 289 044136 290 044142 291 044146 045366 140000 045062 045332 004737 000137 0640214 0641236 043404 DRVSTA(R1) 2% R2 3s PC,GET REQ m15 SEQ 0194 ;CLEAR THE INIT INDICATOR ;60 INIT THE DRIVE ;DUMMY PARITY ERROR RETURN :DRIVE ONLINE ? :BR IF YES == START COMMAND ;QUEUE ENTRY FOR THE DRIVE :BR_IF NOT :GET DPB ADDRESS :INFORM USER THAT DRIVE OFFLINE ;SAVE THE REGISTERS :EMPTY THE REQUEST QUEUE #81T15!81714,16(R2) 000016 PC,SVRH?70 PC.EMPTYQ 2%: 3%: 3s DPRQGS (R1) PC,OPT SCé4 sCLEAR THE PORT REQUEST INDICATOR :START THE PENDING REQUEST ;PROCESS OTHER DRIVES -..zn-nmonmz:lt-xg-—:o-nmonmz:lr-xg-::o-nmonwz:m"xc_—-zmflmcnwzxr-fls.—xo-nmonw CZRNAAO RM80 PERF EX SINGLE/DUAL PORT RH? 2 15:16:58 PAGE 56=5 % :Rgfe TIMER ROUTINE 3 H g : 6 044152 7 044156 8 044160 9 064166 10 044170 11 044172 12 064174 13 044200 14 0646202 15 044210 16 044212 17 0644216 18 044220 19 044222 20 21 22 23 24 gg 044226 044230 044232 044234 044240 044242 005737 001030 112737 104412 005001 005003 005763 002407 166663 003003 004737 000405 005201 005723 022701 003361 104413 105037 012616 000207 040250 000001 RMTMR: 040257 040256 000002 18: 040254 0442644 2s: 000010 3s: 040251 48: N 15 SEQ@ 0195 Mov ATIME,~(SP) ;ELASPED TIME IN MILLISECONDS ON THE STACK TST ACTDRV sCHECK *ACTDRV & ACTSTRTM JSR BNE Mov8 SAVREG CLR CLR 18T BLT sus BGT JSR B8R INC 1ST CMP BGT RESREG CLRB MoV RTS PC,RMTMR 43 #1,ACTSTR R1 R3 TIMER(R3) 2% 2(SP) ,TIMER(R3) 2% PC,STO 33 R1 (R3)+ #8..R1 1$ ACTSTR (SP)+,(SP) PC sCALL RMBO TIME ROUTINE :1F _NON ZERO EXIT sSET _"'ACTSTR"' sSAVE RO = R5 sSTART WITH DRIVE 0 s1S THE TIMER RUNNING? :BRANCH_IF NO ;COUNT THE INTERVAL :BR IF NO_SOF TWARE TIMEOUT :CALL SOF TWARE TIMEOUT ROUTINE ;GO TO THE EXIT sMOVE TO NEXT DRIVE s0UT OF DRIVES? sBRANCI! IF NO sRESTORE RO = RS sZERO ACTIVE SOFTWARE TIMEOUT ROUTINE FLAG sADJUST THE STACK ¢RETURN gg 'SOFTUARE TIMEOUT ROUTINE 29 %? :NOTE: THIS ROUTINE MUST BE ENTERED AT PRIORITY 6 ; OR GREATER 32 3 34 sCALL: : H STO MoV JSR #DRVNUM,R1 PC,STO sDRIVE NUMBER sCALL: ST0: Mov R1,-(SP) ¢SAVE R1 Mov RMADR, R4 :GET_ADDRESS OF 'RMCS1°’ gg H 37 064244 010146 39 044250 013704 38 044246 40 044254 41 044260 044264 010346 010164 004037 000012 044266 42 044270 43 044272 44 0464274 45 044300 46 0644302 47 044306 48 044310 49 064316 044556 105726 100473 105761 001070 105761 001065 013702 020137 51 044322 53 044334 50 044320 52 044326 54 044340 55 044346 040310 000010 RETURN MoV MoV 044670 JSR RMDS R3,=-(SP) R1,RMCS2(R4) RO,RD.RM sSAVE R3 , SELECT THE DRIVE sCALL THE READ ROUTINE :REGISTER OFFSET 0402¢4 040076 ST05 1ST8 BMI T1S718 BNE 1ST8 BNE MOV cMP (SP)+ ST02 DPINT(R1) $T02 DPRQS(R1) ST02 TRNSWT ,R2 R1.DTUW 'NED' RETURN S ‘DRY’’=1? BR IF YES sTRYING TO INTIALIZE THE DRIVE ? :BR_IF YES sOUTSTANDING PORT REQUEST FOR THE DRIVE ? :BR IF YES :PICKUP TRANSFER WAIT QUEUE < TRANSFER UNDERWAY ON THIS DRIVE? 004737 045306 JSR PC,GETR :GET DPB ADDRESS 004737 05062 JSR PC,SVRH70 001402 052762 012764 105061 040204 ST01: 040214 8EQ 101000 000016 000040 040154 000010 1s: 8IS MoV CLRB 18’ :BRANCH IF YES #81715'81709 16(R2) +SET THE ERROR FLAGS s SAVE RH?O/RHBO REGISTERS #BITOS RMCS2(R4) :"'INIT** THE MASS BUS DRVACT(R1) :DRIVE IS IDLE FROE=ITOMTMOMNMDERMT R ITOTMOADZR CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN;82 15:16:58 PAGE 57 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.1 CZRNAAO RMBO PERF EXER ACRO V04,00 14-JAN-82 15:16:58 PAGE 57-1 B 16 SEQ@ 0196 SINGLE/DUAL PORT RH70/RMB80 DRIVER (REV 0.17) 56 044352 57 044354 58 044356 59 044362 005001 28: 040534 040154 000016 040256 4$: 000010 177777 040244 045300 ST02: 000016 040300 78 044466 79 044472 B0 044474 81 044500 040214 2R 040276 38 YEe =BRANCH ST03: 040204 ;WAS THERE I/0 ON THIS DRIVE? DRVAC} (R 1) T ME R(R3) THE DPB POINTER FROM QUEUE s INSORM USER OF INIT. SET DRIVE ACTIVE TO IDLE ;STOP THE TIMER l8..R1 2% :LAST DRIVE BEEN CHECKED? ;NO--L00P ST09 sEXI PC,G EV #81715Ii 08, 16(R2) R3S+ RMAS (R4) ,RS ATABIT(R1) RS RO,RD.RM 044670 (SP)+ STO1 D:INT(RI) :UPDATE THE INDEX : INCREMENT THE DRIVE NUMBER :NO DATA TRANSFERS UNDERWAY ;CLEAR TRANSFER WAIT QUEUE CLE?R ALL REQUEST QUEUES :READ ATTENTION REG {gsAT£ENT%ON FOR THIS DRIVE UP ? :TRYING TO INTIALIZE THE DRIVE ? :BR_IF YES - DRIVE NOT ONLINE ;OUTSTANDING PORT REQUEST FOR THE DRIVE ? :BR_IF YES - NO RESPONSE TO REQUEST gaT?FTRANSFER UNDERWAY FOR THIS DRIVE sCALL THE READ ROUTINE :REGISTER OFFSET s 'NED* RETURN :BR IF "RDY'’=0 :INITIALIZING THE DRIVE ? 18: ST0 #-1 TIHER(RS) :38R IF INIT PENDING ;PORT REQUEST PENDING ? NOT :BR_IF ET?P THE TIMER 042334 STOS: pc I8 :GO HANDLE THE °'NED’ 040204 040164 177777 045366 S$706: DPINT(R1) DRVSTA(R1) #-1,TIMER(R3) ;CLEAR THE INITIALIZE INDICATOR :SET DRIVE OFFLINE 177777 1 DPROS( 1)) 040214 012762 :GET TRANSFER WAIT QUEUE ST03 DPINT(R1) ST06 DPRQS(R1) ST07 R1,DTUW ST01 040204 82 044502 83 044506 044510 044514 86 044516 TRNSWT ,R2 #-1,DTUW TRNSWT PC,CLRQUE 040276 sINIT, THIS DRIVE ST05 DQVACT(R1) DTUW,R{ 3$: :START WITH DRIVE 0 :PARITY ERROR RETLAN $g§VEBIDLEBEFORE THE INIT.? 4 040244 0460276 045366 100400 040154 177777 R1 R3 RO,DRVINT 060256 040256 1400.9 C00016 177777 060214 045366 040256 100004 000016 $T09 ST09 PC,.GETREQ R2 REOUEST IN QUEUE ? NOT IF s INFORM THE USER DRIVE NOT AVAILABLE #BIT15'BITIG, 16(k2) FINISH ST09 ST07: ;STOP THE TIMER :GET THE DPB ADDRESS STO T08 #-1,TIMER( R3) DPROS (R1) PC,GETREQ R2 :STOP THE TIMER :CLEAR PORT REQUEST INDICATOR ;GET DPB ADDRESS OUEUE ENTRY FOR DRIVE ? 08111S!BIT2.16(R2) ST09 ONE :INFORH USER OF PORT REQUEST ERROR CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 57-2 ¢ 16 SEQ 0197 SINGLE/DUAL PORT RH?0/RMB0 DRIVER (REV 0.17) 111 044652 112 044656 113 044662 114 044664 115 0464666 004737 004737 012603 012601 000207 065332 045062 STO8: JSR ST09: MoV MOV RTS JSR PC.EMPTYQ PC,SVRH70 (SP)+,R3 (SP)+,R1 PC ;CLEAR THE QUEUE FOR THE DRIVC :SAVE "HE REGISTERS ;RESTORE R3 ;RESTORE R1 :RETURN CZRNAAO RM80 PERT EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 58 D 18 SEQ 0198 ;ROUTINE TO READ A RH70/RMBO REGISTER 040310 044706 N S o ~ o &~ 044670 044710 040310 000010 010000 044706 JSR INDEX ERRADR 000002 MoV RD.WRD: :ERROR ADDRESS--PROCESS ERROR STARTING ;CONTENTS OF REG. IS ON THE STACK (SP) ,~(SP) RMADR ,RD.ADR 0 RD.WRD,2(SP) RMADR, = (SP) #RMCS2., (SP) RD.RMé: RTS :G0 READ A REGISTER :REG. INDEX FROM BASE ;AT THIS ADDRESS (RO) +,RD.ADR 8(PC)*,(PC)* RD.RM3: 000200 RO,RD.RM RETURN RD.RM1: 22 044740 25 044746 > » L T P P PR X CALL: =S OV PON) =D b b od b b b cd d b NO VWO 000NN WA SINGLE/DUAL PGRT RH70/RMB0 DRIVER (REV 0.17) #8IT12.3(SP)+ RD .RM3 (RO)+ RD .RM4 (R0O) ,RO (SP)+,(SP) RO :SAVE RO FOR RETURN ;FORM THE DESIRED ADDRESS :USING THE BASE AND THE INDEX :READ THE DESIRED REGISTER OF THE RM80 :ADDRESS i5 FORMED HERE :REG. CONTENTS PUT HERE ;RETURN IT TO THE USER :PUT THE ADDRESS ON THE STACK ;FORM THE ADDRESS OF RM(CS2 ;CHECK THE 'NED® BIT ;IF NE, DRIVE NOT PRESENT :ERROR FRCE RETURN SEXIT :ERROR EXIT sROUTINE TO WRITE A REGISTER 29 SCALL: 32 ; 36 044750 37 044756 38 044760 39 044764 40 0464766 41 044774 42 044776 045002 045004 43 016637 45 045006 46 045010 000316 44 000002 045030 045032 000150 WRT.RM: MOV MOV 045030 044670 RMCS1 WRT.R3 045052 177770 045031 040310 DATA,=(SP) MOV RO,WRT.RM JSR INDEX 'NED' RETURN RETURN SWAB BIC 045032 1$- WRT.R1: WRY.UD: WRT.AD: 2(SP) ,WRT.WD (SP)+,(SP) (RO) +,WRT.AD 13 #150,WRT.WD 1$ RO,RD.RM :DATA TO BE LOADED ON THE STACK sCALL THE ROUTINE TO LOAD (WRITE) THE REG. :INDEX OF THE REGISTER TO BE LOADED ;ADDRESS TO RETURN TO IF °NED' ERROR ;ERROR FREE RETURN :SAVE THE WORD TO WRITE ;ADJUST THE STACK sGET INDEX OF REGISTER TO BE WRITTEN ;BRANCH IF NOT RMCS1 ;1S THE COMMAND FOR DATA TRANSFERS? ;YES--DON'T GET THE OLD A16 & A17, & PSEL ;CALL THE READ ROUTINE ;REGISTER OrlSET 'NED' RETURN THE COMMAND BEFORE SENDING TO THE (SP) #4C7,(SP) (SP)+ WRT.WD+1 RMADR,WRT.AD (PC)+,a(PC)+ THE RH70/RM80 ;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 OF RMCS2 55 045050 001402 ;CHECK THE °NED' BIT sIF EQ, DRIVE IS PRESENT CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN=-82 15:16:58 PAGE 58-1 E 16 SEQ 0199 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 56 045052 57 045054 58 045056 gg 045060 WRT.R3: MOV BR WRT.R4: TST 011000 000401 005720 WRT.RS: RTS 000200 (RO) ,RO WRT.RS (RO) + RO ;TAKE THE °'NED*' EXIT CEXIT *ADJUST FOR ERROR FREE EXIT 61 ;ROUTINE TO SAVE THE RH70/RM80 REGISTERS 63 SCALL: gg : : 64 67 045062 104412 68 045064 005702 69 045066 001442 MOV MOVB 013704 111264 040310 000010 73 045106 74 045106 75 045112 76 045120 77 045122 78 045130 79 045132 80 045134 81 045136 82 045142 83 045144 001433 005037 023727 045142 045142 000022 000200 000010 MOV 72 045100 016203 000014 84 045146 85 045150 86 045156 87 045160 005023 000405 004037 000000 045170 012623 023727 001406 062737 89 045170 91 045176 004737 013746 042334 001234 93 045204 022726 030000 88 045166 000751 9% 045210 001004 1$: 2s: 38: 044670 045142 000046 000002 045142 92 045200 042716 003777 4$: 58: 68: 012423 011413 104413 000207 8EQ CLR CMP BNE BIT BNE CLR BR JSR WORD 5$ :DPB POINTER TO R2 R2 6$ :SAVE RO = RS ‘QUEUE ENTRY FOR THE DRIVE ? *BR IF NONE 14(R2) ,R3 ‘GET THE ERROR TABLE POINTER PC,SVRH?0 RMADR R4 (R2),RMCS2(R4) *SAVE THE DRIVES REG'S ;SELECT DRIVE 3$ 3$,#RMDB SEXIT IF NO ADDRESS *COUNTER £ POINTER *REACHED THE BUFFER REGISTER ? 18 ‘CONTINUE READING THE REGISTERS MOV CMP BEQ ADD JSR MOV PC,CI8 $CPUOP,~(SP) CMP #30000,(SP)+ :SEE IF RW70 (RG)+, (R3)+ (R4) , (R3) *STORE THE CONTENTS *GET RMCS3 *RESTORE RO = RS *RETURN B8R BIC ADD 78: #DPBADR , ]2 *BR IF NOT 2$ :'OR® SET ? #81T07 ,RMCS2(R4) :BR IF SET 2 *STORE RMDB AS ZEROES (R3)+ * CONTINUE 4$ *READ THE SELECTED REGISTER RO,RD.RM *REGISTER INDEX 0 *ERROR RETURN ADDRESS *STORE THE REGISTER CONTENTS (SP)+, (R3)+ *REACHED THE END ? 39, #RMEC2 ‘BR IF YES 6$ * INCREMENT THE REGISTER INDEX #2.38 BNE 95 045212 063704 040316 96 045216 97 045220 98 045222 }8§ 045224 JSR SVRH70: SAVREG TST BEQ 70 045070 71 045074 001006 032764 001002 MOV MOV MOV RESREG RTS *PROCESS THE °NED' :CHECK THE CPU (RH) TYPE (SP) :LEAVE THE CPU TYPE BITS #4¢174000, 78 RHEXT ,Ré4 PC *IF NE, NO *POINT TO RMBAE }8§ :Rogixns TO SET THE INTERRUPT WITHOUT GETTING A ‘‘TRE' 106 : MOV } 83 : RETURN 107 : 110 045226 111 045230 122 045234 010446 013704 0101646 115 045246 000316 040310 000010 SET.IE: MOV MOV MOV 000100 MOVB 113 045240 011446 114 045242 052716 0460000 116 045250 112714 JSR MOV 8°S SWAB #DRVNUA,R1 ;DRIVE_NUMBER TO R1 R4, =(SP) RMADR, R4 R1,RMCS2(R4) :SAVE R4 *PICKUP ADDRESS OF RMCS1 :SELECT DRIVE (SP) :ADJUST FOR DATO PC,SET.1E (R§) ,~(SP) #81T14,(SP) #BIT06. (R&4) SSET “IE *READ RMCS1 *SET THE '‘TRE'* BIT OF THE WORD READ SSET “'IE CZIRNAAO RMB0 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 58-2 16 SEQ@ 0200 SINGLE/DUAL PORT RH70/RM80 DRIVER (REV 0.17) 117 045254 118 045262 119 045264 120 045266 121 045270 122 045274 123 045276 124 125 126 032764 001002 005725 000402 112664 012604 000207 010000 000001 : sCALL: : }%g 045324 139 045326 }2? 045330 1$: 2s: 104412 012702 005022 005022 005022 005022 005022 005022 005022 040224 005022 104413 000207 JSR CLRQUE: SAVREG MOV (LR CLR CLR CLR CLR CLR CLR RESREG RTS #81T12,RMCS2(R4) ;1S 'NED''=1? 1$ ;YES==CLEAR ''TRE (SP)+,1(R4) (SP)+.R4 PC :CLEAR “'TRE' *RESTORE R4 *RETURN TO CALLER §§P" SCLEAN OFF THE STACK PC.CLRQUE #QDRV ,R2 (R2)+ (R2)+ (R2)+ (R2)+ (R2)+ (R2)+ (R2)+ (R2)+ PC :SAVE RO - R5 ;QUEUE BASE ADDRESS :CLEAR ENTRY :CLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY :CLEAR ENTRY sCLEAR ENTRY sCLEAR ENTRY ;RESTORE RO - RS ;EMPTY THE QUEUE SPECIFIED BY R1 142 143 : }29 : sCALL: : 144 145 148 045332 149 045334 150 045340 }25 045342 BIT BNE TST BR MOVB MOV RTS ;ROUTINE TO CLEAR ALL OF THE REQUEST QUEUES 127 130 045300 131 045302 137 045306 045310 045312 045314 045314 045320 045322 000010 006301 005061 006201 000207 040224 JSR EMPTYQ: ASL CLR ASR RTS DRVNUM,R1 PC,EMPTYQ R1 QDRV(R1) R1 PC ;DRIVE NUMBER TO R1 ;CLEAR DRIVE QUEUE sRESTORE R1 153 ;ROUTINE TO PUT A REQUEST IN QUEUE 157 158 . : MOV JSR : RETURN?2 : sCALL: : 154 155 156 159 : 12(1) 162 045344 163 045346 164 045352 165 045354 166 045360 167 045362 168 045364 169 170 171 172 006301 005761 001003 010261 005720 006201 000200 040224 040224 RETURN1 DRVQUE: ASL TST BNE MOV TST ASR 18: 2$: RTS #DRVNUM,R1 #DPB,R2 RO,DRVQUE ;DRIVE NUMBER sADDRESS OF PARAMETER BLOCK 260 _PUT REQUEST IN OQUEUE ¢sRETURN HERE IF QUEUE IS FULL ;RETURN HERE IF REQUEST IS IN QUEUE R1 QDRV(R1) sTEST _THE QUEUE ENTRY R2,QDRV(R1) sADD THE QUEUE ENTRY RO :RETURN TO USER 1$ ;?b” s1F NE, QUEUE ENTRY ALREADY THERE *TAKE RETURN 2 ;ROUTINE TO GET THE 'DPB’' ADDRESS OF NEXT REQUEST IN QUEUE : ;CALL: CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN=52 15:16:58 PAGE 58-3 SINGLE/DUAL PORT RH70/RMB0 DRIVER (REV 0.17) : : : : 173 174 175 };? 178 045366 179 045370 180 045374 006301 016102 006201 040224 SEQ@ 0201 #DRVNUM,R1 PC,GETREQ ;DRIVE NUMBER TO R1 ;GO GET THE REQUEST :R2="DPB'’ ADDRESS OF THE REQUEST :R2=0 IF MO REQUEST IN QUEUE R1 QDRV(R1) ,R2 R1 ;o JGET THE REOUEST : PC RETURN, :ROUTINE TO '‘POP'' THE REQUEST FROM wUE\IE }gz ;CALL: 185 : : 186 187 : }gg 190 045400 006301 193 045412 006201 }32 0456414 GETREQ: ASL MOV ASR RTS }g; 045376 000207 191 065402 192 045406 MOV JSR RETURN 16 016102 005061 000207 040224 040224 MOV JSR RETURN POPQUE: ASL #DRVNUM ,R1 PC,POPQUE R1 :DRIVE NUMBER TO R1 :CALL TO REMOVE REQUEST :R2=ADDRESS OF DPB REMOVED MOV CLR QDRV(R1) ,R2 QDRV(R1) :GET THE QUEUE ENTRY :CLEAR THE QUEUE RTS PC ;RETURN TO USER ASR R1 CZRNAAQ RM80 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 59 SE@ 0202 PIPIPINI N ==d b b b oo o b e ad e buN—loom\IO‘U‘l\WN—ioomNO\flbWN—‘ DATA, CONTROL, & STATUS BLOCKS .SBTTL DATA, CONTROL, & STATUS BLOCKS ;BLOCK LOCATION EQUATE STATEMENTS 000001 000016 SFMT SCOMND SPSEL SWCNT $8UF $SEC $TRK SCyL $REG $TATUS =1 = SFMTH+1 = $FMT+2 = SFMT+3 = $FMT+S = SFMT+7 = $SFMT+10 = $FMT+11 = $FMT+13 = SFMT+15 sFMT HCI,ECI OR OFFSET CODE :OPERATION CODE ;PORT SELECT & BITS A16 A17 :WORD COUNT (2'S :BUFFER ADDR OR REGISTER TABLE POINTER sSECTOR ADDRESS OR 1ST REG ADD ;TRACK ADDRESS OF LAST REG ADDR ;CYLINDER ADDR :REGISTER STORAGE (IF ERROR) ;STATUS WORD (SET BY DRIVER) ;DRIVE'S HISTORY AND CURRENT INDICATOR STORAGE EQUATES 000020 25 $WRDL $SSEC $SCODE $PACK SPREVO SPATTC SPREVA SENDAT SENDSK SOPERC SPOSIT SWTIOFL SWRITN SRDOFL SREAD STOTAL $SOFT SHARD $SK1 $SMISPO SPASSC $FAIR SHLDWC $SSENB = SFMT+17 = SWRDL+?2 = SWRDL+4 = SWRDL+6 = SWRDL+7 = SWRDL+10 = SWRDL+12 = SWRDL+16 = SWRDL+22 = SWRNL+26 = SWRPL+32 = SWRDL+36 = SWRDL+40 = SWRDL+44 = SWRDL+46 = SWRDL+52 = SWRDL+54 = SWRDL+56 = = = = SWRDL+60 SWRDL+62 SWRDL+64 SWRDL+66 = SWRDL+70 = SWRDL+72 sWORD COUNT LENGTH (POSITIVE) :SECTOR SIZE FOR CURRENT NPERATION (256. OR 258.) :PRESENT COMMAND SELECTIUN CODE :WRITE DATA PACK ihCIZAIOR :PREVIOUS COMMAND SELECTION CODE ;PATTERN CODE ;PREVIOUS ADDRESS- TRK, SEC, CYL (DOUBLE WORD) *END OF PASS DATA COUNT (DOUBLE WORD) ;END OF PASS SEEK COUNT (DOUBLE WORD) :OPERATION COUNT (DOUBLE WORD) PER PASS ;SEEK COUNT (DOUBLE WORD) sTOTAL WORDS WRITTEN OVERFLOW COUNT :TOTAL WORDS WRITTEN COUNT (DOUBLE WORD) :TOTAL WORDS READ OVERFLOW COUNT ;TOTAL WORDS READ COUNT (UOUBLE WORD) ;TOTAL ERRORS (ALL TYPES) COUNT :*SOFT* ERROR COUNT 'HARD' ERROR COUNT :'SKI* ERROR COUNT :PROG DETECTED MIS-POSITIONING ERROR COUNT :PASS COUNTER :OPERATION QUEUE *FAIRNESS® COUNT :HOLD WORD COUNT FOR ‘RELBUF' ROUTINE :SKIP SECTOR INDICATOR s INDEX EQUATES TO THE NEXT OPERATION PARAMETERS SNCODE SNPATC SNSEC SNTRK SNCYL SNEXT SFIRST = SWRDL+74 = SNCODE+1 = SNCODE+2 = SNCODE+3 = SNCODE+4 = SNCODE+6 = SNCODE+10 sNEXT OPERATION CODE sNEXT sNEXT sNEXT :NEXT PATTERN SECTOR TRACK CYLINDER :PARAMETER SELECTION INDICATOR ;FIRST OPERATION INDICATOR S INDEX EQUATES FOR MAXIMUM/MINIMUM ADDRESSES 000126 000130 000132 MAXCYL MINCYL MAXTRK = SNCODE+12 = MAXCYL+2 = MAXCYL+6 sMAXIMUM CYLINDER ADDRESS :MINIMUM CYLINDER ADDRESS ;MAXIMUM TRACK ADDRESS CZRNAAQ RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 59-1 116 SEQ 0203 DATA, CONTROL, & STATUS BLOCKS 61 62 63 64 65 66 67 68 69 70 = MAXCYL+6 = MAXCYL+10 = MAXCYL+12 sMINIMUM TRACK ADDRESS sMAXIMUM SECTOR ADDRESS ;MINIMUM SECTOR ADDRESS :HDA SERIAL NUMBER CONTAINED IN DEC144 FILE SHSNL $HSNM 000142 000144 = MAXCY'.+14 = SHSNL+2 ;LSB'S OF SERIAL NUMBER (DECIMAL) sMSB'S OF SERIAL NUMBER (DECIMAL) ;:DEC144 BAD SECTOR ADDRESS STORAGE AREA INDEX EQUATE $BDSEC 000146 ;BAD SECTOR STORAGE TABLE PLUS TERMINATOR = SHSNL+4 ;DRIVE (MBA) SERIAL NUMBER AREA INDEX EQUATE 71 72 73 $DRVSN 002130 7% 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 9% 95 9% 98 99 101 113 MINTRK MAXSEC MINSEC 000134 000136 000140 58 59 60 = $8DSEC+<126.48.>+2 ;DRIVE (MBA) SERIAL NUMBER ;RH/RM REGISTER EQUATES 002140 002142 002144 002146 002150 002152 002154 002156 002160 002162 002164 002166 002170 002172 002174 002176 002200 002202 002204 002206 002210 002212 045416 045420 045432 045434 000 001 051772 052046 002 052050 = SDRVSN+10 = SRM(S1+2 = SRM(S1+4 = SRMCS1+6 = SRMCS1+10 = SRM(S1+12 = SRMCS1+14 = SRM(S1+16 = SRMCS1+20 = SRM(S1+22 = SRMCS1+24 = SRMCS1+2¢6 = SRM(CS1+30 = SRM(S1+32 = SRMCS1+34 = SRM(S1+36 SRMER? SRMECT = SRMCS1+42 = SRMCS1+44 SRMMR2 SRMEC2 SRMBAE SRMCS3 000 047556 047632 0467634 047646 047650 SRMCS1 SRMWC SRMBA SRMDA SRMCS2 SRMDS SRMER1 SRMAS SRMLA SRMDB SRMMR1 SRMDT SRMSN SRMOF SRMDC SRMHR 000 000 sRM REGISTER STORAGE = SRMCS1+40 = SRMCS1+46 = SRMCS1+50 = SRM(S1452 :BLOCK FOR DRIVE 0 DRIVEO: .BYTE BLKW "WORD BLKB O, S ,+SRMCS1-SREG $RMCS3-SREG :BLOCK FOR DRIVE 1 DRIVE1:: BYTE 5 .BLKW .WORD ,+SRMCS1-$SREG SRMCS3-$REG .BLKB [4 .8LOCK FOR DRIVE 2 2,0 DRIVE?2 : BYTE 5 BLKW ;DRIVE NUMBER 0 ;DRIVE NUMBER 1 :DRIVE NUMBER 2 CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 59-2 SEQ 0204 DATA, CONTROL, & STATUS BLOCKS 052062 052064 054206 054262 054264 054276 054300 003 C56476 056514 060712 060714 060726 060730 063126 063130 063142 063144 056422 004 000 ;BLOCK FOR DRIVE & 4,0 DRIVE4: .BYTE .BLKW WORD .BLKB 060636 005 000 063052 006 000 065266 007 067502 000 . +SRMCS1-$REG SRMCS3-$REG FOR DRIVE_3 .BYTE 3,0 5 .BLKW . +SRMCS1-$REG .WORD $RMCS3-SREG .BLKB 000 5 .+SRMCS1-$REG SRM(S3-SREG ;DRIVE NUMBER 3 ;DRIVE NUMBER 4 :BLOCK FOR DRIVE 5 5.0 DRIVES: BYTE 5 BLKW . +SRMCS1-SREG .WORD SRMCS3-$REG .BLKB :8LOCK FOR DRIVE 6 6,0 DRIVEG: .BYTE BLKW 5 . +SRM(CS1-$REG .WORD SRM(S3-SREG .BLKB ;BLOCK FOR DRIVE_7 DRIVE?: 5 .BLKW . +SRMCS1-SREG -WORD SRM(CS3-$REG .BLKB ;DRIVE NUMBER 5 ;DRIVE NUMBER 6 :DRIVE NUMBER 7 sDRIVER PARAMETER BLOCK, DRIVE # :OFFSET VALUE OR FMT16, HCI OR ECI ; COMMAND CODE LNDR € » GENREG: nN & ENREG - 067576 0 000000 067576 000000 @ 067574 .BYTE .BYTE .BYTE .BYTE .WORD -WCRD <N o o o o ~ N GENDPB: QOOHOOOM I OOO0O sGENERAL PURPOSE PARAMETER BLOCK . b b et e b e e b o b b h bk b b NINININININININININ) —=b —b = b =d b O 00NN NN =2 O 000 NN 065342 065344 065356 065360 .WORD .BLKB :PSEL, A16 AND A17 :WORD COUNT (NEG) :BUSFER ADDRESS ;SECTOR ADDRESS s TRACK ADDRESS :CYLINDER_ADDRESS :ADDRESS TO SAVE ALL RH/RM REG'S :STATUS WORD sREGISTER STORAGE CZRNAAQ RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 60 K 16 ERROR MESSAGES } 3 067646 & 067720 5 067756 6 070014 7 070051 8 070105 9 070160 10 070223 11 070256 12 070307 13 070361 14 070404 15 070440 16 070461 17 070512 18 070565 19 070644 20 070712 21 070773 22 071020 23 071055 24 071107 25 071152 26 071205 27 071262 28 071324 29 071362 30 071413 31 071475 32 071544 33 071610 34 071671 35 071765 36 072062 37 072150 38 072222 39 072277 40 072335 41 072400 42 072444 122 125 115 115 101 122 125 106 120 117 104 116 110 104 127 127 110 110 106 110 115 117 104 120 127 11 127 104 122 102 104 103 105 110 116 101 101 104 110 116 101 105 120 122 117 105 101 122 122 105 105 105 123 123 104 040 103 124 122 105 111 040 101 126 111 111 101 101 117 105 m 120 122 101 122 116 122 122 101 123 105 111 122 111 126 111 101 122 116 122 101 110 125 101 105 102 105 103 125 103 104 122 123 120 105 040 105 122 103 124 040 123 124 .SBTTL ERROR MESSAGES EMI: .ASCIZ EM2: EM3: EM4: EMS: EM6: EM10: EM11: EM12: EM13: EM14: EM15: LASCIZ LASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ /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/ EM22: EM23: EM24: .ASCIZ .ASCIZ .ASCIZ /WRITE CHECK ERROR = DATA CHECK (°DCK®) SET/ /WRITE CHECK ERROR = DATA CHECK (°DCK‘') NOT SET/ /HEADER READ ERROR = 'FMT' BIT DROPPED EM20: EM21: EM2S: EM26: EM27: EM30: EM31: EM32: EM33: EM34: EM35: EM36: EM37: EM40: EM41: EM42: EM43: EM44: 103 123 103 EM4S5: EM46: EM47: 111 EM60: 105 117 110 /RH CONTROLLER INTERRUPT OCCURRED (RMAS=0)/ EMS0: EM51: EM52: .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ ASCIZ ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ /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/ /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 CZRNAAQ RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 61 L 16 2@ 0206 ERROR MESSAGFS 1 072467 2 072474 3 072550 4 072576 5 072635 € 072644 7 072710 8 072746 9 073016 10 073044 }E 073114 122 104 104 104 044 104 122 122 122 122 122 115 101 122 122 122 122 115 115 115 115 115 111 111 115 126 115 127 104 123 102 122 111 DH1: DHZ: DH3: DHé: DHé: DH14 DH15 DH16: Dgag& .ASCIZ /RMAS/ .ASCIZ .ASCIZ .ASCIZ LASCI1 .ASCIZ LASCI1 .ASCIZ .ASCIZ .ASCIZ REG ADR DATA/ /DRIVE BAD/ GOOD REG ADR /DRIVE /SRMADR/ / RMERT1 RMCS2 _ RMDS /DRV RMCS1 RMEC2/<CRLF> RMEC1 /RMMR2 RMER2 / RMLA RMAS RMDA RMBA /RMWC RMDT/<CRLF> RMMR1 /RMDB STATUS/<CRLF> RMHR RMDC RMOF /RMSN RMCS3/<CRLF> /RMBAE LASCIZ /DRIVE RMDS RMER1 RMER2 RMMRZ2 RMAS/ CZRNAAQ RMB0O PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 62 ERROR MESSAGES DT1: .WORD ATTN,O DI3: DTé: .WORD .WORD CRJVE,RD.ADR,RD.WRD,0 DR./E,WRT.AD,WRT.WD,RD.WRD,0 1 073134 001322 000000 3 073156 4 073166 001220 001220 044706 045032 6 073206 002140 102150 002152 DT14: 2 073140 001220 040146 040150 DT2: 5 073200 DT6: .WORD 7 073226 002142 0021446 002146 DT1S: .WORD 8 073250 10 073264 001272 002170 002210 000000 044710 045030 .WORD DRIVE,RMERRS ,RMERRS+2,RMERRS+4 ,RMERRS +6 ,ATTN,0 002172 002212 002176 000000 DT14. DT17 .WORD .WORD .WORD SRMADR, SRMCS1,SRMCS2,SRMDS,SRMER1,SRMMR2, SRMER2,SRMEC1,SRMEC2,0 SRMWC,SRMBA,SRMDA,SRMAS,SRMLA,SRMDB,SRMMR1,SRMDT,0 SRMSN,SRMOF ,SRMDC,$RMHR,$TATUS,0 SRMBAE,SRM(CS3.,9 SEQ 0207 CZRNAAQ RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 63 SE@ 0208 ERROR MESSAGES 1 073272 2 07331¢ 3 073333 4 073367 5 073402 6 073405 120 040 052 105 122 040 040 122 123 120 105 122 000 123 30 074112 31 074130 32 074142 33 074167 37 074214 38 074232 39 074254 40 074272 41 0764302 42 0764317 43 074327 44 074343 45 074366 46 (74415 47 074444 48 074473 49 074512 50 074531 51 074560 52 074606 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 124 122 123 040 124 040 040 040 040 115 115 040 124 124 125 040 040 130 040 040 105 115 040 105 105 117 040 116 040 117 040 117 040 127 040 127 122 101 0490 117 040 117 117 110 122 55 074744 56 075006 57 075035 58 075079 105 105 040 101 103 103 04y 104 103 103 040 104 101 104 104 7 073423 8 073426 9 073445 10 073461 11 073475 12 073514 13 073524 14 073535 15 073544 16 073553 17 073564 18 073600 19 073614 20 073632 21 073646 22 073700 23 073716 24 073736 25 073753 26 674006 27 074016 28 074030 29 074063 53 074642 54 074702 59 075116 60 075171 040 120 040 040 040 105 103 M 122 117 000 120 101 105 101 126 122 104 102 122 101 101 106 127 101 120 122 127 101 105 122 103 103 122 122 103 126 126 126 124 127 122 122 122 122 126 040 103 040 103 126 105 122 116 122 116 LIN2C: LIN2P: LIN2S: LINM3: T: LINN3: .ASCIZ .ASCIZ .ASCIZ _ASCIZ /PRSNT COMMAND= / / PREV COMMAND= / @+ ERROR AT BAD TRACK/SECTOR® /ERROR AT C/ /7 T/ /PRSNT ADDR= (C/ LIN10B: LIN10C: .ASCIZ .ASCI] / IN DATA FIELD OF ERROR SECTOR/<CRLF> /ERROR WAS NOT IN THE DATA READ - /<CRLF> .ASCIZ /CONYENTS OF ERROR SECTOR (REPORTED ABOVE)/<CRLF> JASCIZ .ASCIZ LASCIZ [/ S/ S: LINP3: .ASCIZ /_ _PREV ADDR= (C/ LINS3: .ASCIZ /START CYL= / LINEN3: .ASCIZ / END CYL= / LINA3: .ASCIZ / ACTUAL CYL= / LINT3: .ASCIZ / TRK= / LINCA3: .ASCIZ / RMDC= / LINDA3: .ASCIZ /RMDA= / LINB3: .ASCIZ /RMBA= / LINW3: .ASCIZ / RMW(C= / LINST3: .ASCIZ /START TRK= / LINSS3: .ASCIZ /START SEC= / LINM4: .ASCIZ /BUFFER ADDR= / LINS4: LASCIZ / WRD CNT= / LINX4: .ASCIZ /_ ACTUAL NMBR WRDS XFRD= / LIND5: .ASCIZ /EXPCTD DATA= / LINBS: .ASCIZ / RECEVD DATA= / LINP5: .ASCIZ / WORD POS= / LINSS: .ASCIZ /HEADER FROM ERROR SECTOR= / LINEPS5: .ASCIZ /RMEC1=_/ LINEOS: .ASCIZ / RMEC2= / LINB6: .ASCIZ /SECTOR 1S ECC COPRECTABLE / LINC6: .ASCIZ /SECTOR READ CORRECTLY / LING6: .ASCIZ /CORRECTED ON / LINR6: .ASCIZ / RETRIES/ LINUO6: .ASCIZ /UNCORRECTABLE AFTER / LIN7M: _ASCIZ /_ TOTAL MISPOS ERR= / LIN?P: .ASCIZ /TOTAL SEEKS= / LIN?S: .ASCIZ /_ TOTAL SK1 ERR= / LIN7T: .ASCIZ /TOTAL ERRORS:/ LIN70X: .ASCIZ / WOFL:/ LIN?X: .ASCIZ / WRDS WRITN:/ LIN70R: .ASCIZ / ROFL:/ LIN?R: .ASCIZ / WRDS READ:/ LIN8N: ,ASCIZ /ERROR DURING RETRY/ LIN98: .ASCIZ /DATA COMPARISON ERRORS/ EXPCTD RECEVD/<CRLF> LIN9H: .ASCl1 / DATA/<CRLF> DATA +ASCIZ /LOC RECEVD/<CRLF> .ASCII / LIN9I: DATA/<CRLF> .ASCIZ /LOC LIN9E: .ASCIZ /TOTAL COMPARE ERRORS= / LIN9G: .ASCIZ /THE DATA COMPARED OK/<CRLF> LIN10A: .ASCIZ /ERROR BURST BEGINS AT WORD / LIN1OH: LIN11H: LIN11: .ASCIZ .ASCII LASCI1 .ASCIZ .ASCIZ /ECC CORRECTION CAN‘'T BE PERFORMED/ /ECC CORRECTION RESULTS/<CRLF> CORRECTED /<CRLF> BAD / DATA/<CRLF> DATA /ADDR /ADDR HEADER/<CRLF> CZRNAAQ RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 63-1 ) SEQ 0209 105 1246 e s o - e /RETRIEVED BY A RDHD COMMAND/ .ASCII .ASCII .ASCI1 .ASCIZ A LINXS5: ,ASCIZ BLNKS4: BLNKS3: BLNKSZ: BLNKS1: / / / / 7/ / / / e /ADDR e 000 DATA/<CRLF> LINT1A: .ASCIZ L 122 106 L 66 075236 040 040 040 040 104 L 62 075231 63 075232 64 075233 65 075¢34 101 L 61 075212 . ERROR MESSAGES SEQ 0210 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 64 23 075626 24 075700 25 075734 200 104 32 076064 33 076135 34 076137 35 076141 000 000 000 116 116 122 MSGON: .ASCIZ ENDTST: .ASCI2Z MSGFOR: .ASCIZ 052 126 DRNUM: ASGND: .ASCIZ .ASCIZ ASCIZ N: LASCIZ Y: PERIOD: .ASCIZ 36 076143 37 076206 38 076231 39 076252 40 076302 040 040 200 200 200 077 077 105 105 105 103 111 116 116 116 MSWRO: INVLD: ENTCOM: ENTLMT: ENTADR: .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ 43 076341 040 077 116 111 BADENT: .ASCIZ 052 103 040 131 102 114 MSFULL: .ASCIZ MSGCTS: .ASCIZ 101 122 41 076332 42 076334 46 076362 4S5 076442 46 076506 47 076544 48 076562 4 6646 50 076674 51 076756 52 076760 53 077027 54 077076 55 077103 56 077131 §7 077176 072 116 200 200 200 200 007 200 200 007 200 200 052 000 117 106 11 104 052 007 011 011 007 012 120 040 . e A A mdh s <CRLF><07>/? °'L® OR 'P' CLOCK REQUIRED ON SYSTEM/<CRLF> 007 116 13 056 (OFLOW= 2,147,483,647.)/<CRLF> NEDCLK: .ASCIZ 200 052 123 <CRLF>/DRIVE SUMMARY, 077 052 200 040 .ASCIZ <CRLF>/ttxtx+ DRIVE DEASSIGNED/<CRLF> 052 30 076034 31 076053 SUMHD: DEASSG: .ASCIZ 200 117 105 117 /axx«x/<CRLF> <07>/?FATAL OR EXCESSIVE ERRORS/ <CRLF>/END OF PASS #/ 077 105 040 200 106 .ASCIZ <CRLF><XLF>/txtxx« PERFORMANCE REPORT wrxns/ /xxssancatennttannannnvant/ DROPNG: .ASCIZ ENDPAS: .ASCIZ 106 116 007 200 26 075753 27 075760 28 075776 29 076003 122 STARS: REPHD: .ASCIZ STAR30: .ASCI] Al 052 052 052 A 052 012 052 e 052 200 052 e Al 22 075617 20 075525 21 075566 101 116 116 116 /%/ /=/ /,/ /=/ <1 /DRIVE/ / OFFLINE/ / ONLINE/ / NOT BEING TESTED/ / ALREADY BEING TESTED/ @ NOT AN RM803 / NOT PRESENT/ / NOT AVAILABLE/ / UNSAFE/ / LOAD DEVICE/ <CRLF>/DRIVE STATUS:/ /RM80/ At 125 114 104 115 040 040 040 040 .ASCIZ .ASCIZ _ASCIZ .ASCIZ LASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ Lk 040 040 200 122 111 106 116 117 114 117 117 117 116 117 122 070 QUES: EQUAL: COMMA: DASH: TAB: UNTMSG: UNTOFF: UNTON: UNTNOT: UNTASN: NOTRM: NOTPRS: NOTAVL: NOTSAF: LODEV: SYSTAT: SRMB0: Lt 000 000 000 000 000 122 117 117 116 L e 077 075 054 0SS 011 104 040 040 040 TELETYPE MESSAGES L 3 075272 4 075274 S 075276 6 075300 7 075302 8 075304 9 075312 10 075323 11 075333 12 075355 13 075403 14 075420 15 0756435 16 075454 17 075464 18 075501 19 075520 .SBTTL L % o TELETYPE MESSAGES 101 116 COLON: NONE: MERR1: MERR2: 117 MESFE: 105 040 041 055 200 116 122 116 .ASCIZ .ASCIZ .ASCIZ .ASCIZ / ON / <CRLF>/END OF TEST / /FOR / <CRLF>/xxxxx DRIVE #/ / STARTED/ /N/ /v/ /./ 7/ ?CAN'T WRITE IN 'READ ONLY' MODE/<CRLF> 7 ?INVALID COMMAND/<CRLF> <CRLF>/ENTER COMMAND: / <CRLF>/ENTER ADDRESS LIMITS:/<CRLF> <CRLF>/ENTER BAD SECTR ADRS:/<CRLF> /: /NONE/ 7/ ?INVALID ENTRY/<CRLF> <CRLF>/FAILED TO RETRIEVE BAD SECTOR FILE(DEC144) ON / <CRLF>/INVALID FILE(DEC144) STRUCTURE ON / /= BAD SECTOR TABLE IS FULL */<CRLF> /CYL,TRK,SEC= / .ASCIZ <CRLF>/DO YOU WISH TO EXERCISE ONLY FE CYLINDERS (L) Y ? / .ASCIZ /ARE YOU SURE (L) N ? / NOENTY: .ASCIZ /= NO ENTRIES */<CRLF> SURE: FEONLY: .ASCIZ OVRWRT: .ASCII JASCII LASCII JASCIZ NODRVS: .ASCIZ MREAD: .ASCIZ <CRLF>/t EXERCISER WILL OPERATE ON FE CYLINDERS ONLY =/<CRLF> <07><07> <CRLF>/ ! CUSTOMER DATA WILL BE OVERWRITTEN !/ / <CRLF>/ <07><07><CRLF><LF> <CRLF><LF>/NO DRIVES ASSIQNED/<CRLF? <CRLF>/PROGRAM LOCKED IN ‘READ ONLY'' MODE/<CRLF> .EVEN /+ ALL CURRENT ENTRIES LOST */<CRLF> @HDA S/N: a @DRV S/N: s N2/ <CRLF>/CHANGE DRIVE PARAMETERS (LY <CRLF>/TYPE “C TO ABORT <CRLF>/WAITING 2 HINUTES...TO START/<CRLF> .ASCIZ .ASCIZ .ASCIZ A MSPRM: ,ASCIZ MSWAIT: .ASCII .ASCIZ ALOST: HDASN: DRVSN: A 110 131 101 101 101 126 4 103 124 127 040 104 122 A <CRLF>/DEC144 AND MANUAL BAD SECTOR LIST/<CRLF> A LSTHDR: .ASCIZ A A 200 200 200 052 110 104 105 A A 62 077344 63 077406 64 077427 59 077262 60 077320 61 077332 104 A A 200 SEQ@ (211 AA 58 077216 1 L e TELETYPE MESSAGES F L e CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 64~1 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 65 SEQ 0212 TELETYPE MESSAGES ;PARAMETER ENTRY TABLE PARLST: PAR1,7936. ,WRDCNT PAR2.32767., INTRVL PAR1S,32767. PASSES PAR3, 15. ,PATTERN PART1,1, RANDWC PAR14.7. RATIO b b e nd b i e b b b e e b b d b i o b e wd e b O =S PINIONIN) =2 O =2 N=3 N = ' ANINO = & OCWNS SO ONO0NO0 OO0 cmd ad e b e e e b b cnnd b e e e d b O OOO=NIOOO=O=O—=00=N0OWV DAY = ONN) b = b b d e b od ed = ONNIAN N and and cnd cnb b wwd cud wb wd wd sTABLE TERMINATOR b e b o 00 N =PNIONININI O =B v b b = ) = ) NWVNOWVININ NN NMNWIMWNWNO =N wn N o o ~ ~ 077572 33 100022 34 100032 .WORD .WORD .WORD .WORD .WORD -WORD .WORD 000001 077562 077570 OSSN NN PON) b cd asd b o =2 OV 00 NN W b b e b b = O\ 0 00NN NS 017400 ASKPAR: -ASCIZ PAR1: PAR2: PARS: PARG: PARS: PARG: PAR7: PARS8: PAR9: PAR10: PAR11: PAR14: PAR1S: PAR16: PAR19: PAR20: PAR21: .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ a/a <CRLF>/CHANGE PARAMETERS (L) N ? / /WRDCNT / /INTRVL / /PATTERN/ /MAXCYL / /MINCYL / /MAXTRK / /MINTRK / /MAXSEC / /MINSEC / /BADBLK / /RANDWC / /RATIO / /WRTCHK / /ENDING / /PASSES / /MESSAGE/ /RANDOM / :PARAMETER TABLE POINTERS FOR ADDRESS LIMITS TABLE: 39 100042 43 100060 000000 54 100062 100126 000000 100130 077672 .WORD -WORD "WORD -WORD -WORD .WORD -WORD -WORD TABLEQ TABLE1 TABLE2 TABLE3 TABLE& TABLES TABLE® TABLE7 :PARAMETER TABLE FOR DRIVE *PARAMETER TABLE FOR DRIVE [ER TABLE FOR DRIVE *PARAME *PARAMETER TABLE FOR DRIVE *PARAMETER TABLE FOR DRIVE *PARAMETER TABLE FOR DRIVE ‘PARAMETER TABLE FOR DRIVE *PARAMETER TABLE FOR DRIVE :PARAMETER TABLE FOR ADDRESS LIMITS TABLEO: .WORD 000036 -WORD "WORD "WORD "WORD -WORD 000000 TABLE1: .WORD WORD PARS,0,MINCYL+DRIVEQ PAR4 0.MAXCYL+DRIVEQ PAR7.0.MINTRK+DRIVEO PAR6.0.MAXTRK+DRIVEQ PAR9.30.,MINSEC+DRIVEO PARS, 30.,HAXSEC+DRIVEO O TERMINATOR PARS,0,MINCYL+DRIVE1 NOWVMSULIN-=O .EVEN 1 CZRNAAO RMB0 PERF EXER MACRO VO04.00 14-JAN-82 15:16:58 PAGE 65-1 SEQ@ 0213 00244 877672 000000 PARS,0,MINCYL+DRIVE3 PARG .0 MAXCYL+DRIVE3 PAR7.0_MINTRK+DRIVE3 PARG .0 MAXTRK+DRIVE3 PARS.30. -MAXSEC+DRIVE3 : TERMINATOR 0 +WORD .WORD .WORD .WORD .WORD +WORD +WORD 000036 100310 000000 100312 100320 100326 100334 100342 100350 100356 077672 077662 077712 077702 077732 077722 000000 000000 000036 056634 100360 100366 100374 100402 1006410 100416 100424 077672 077662 077712 077702 077732 077722 000000 000000 061042 000036 061050 100426 077672 000000 063256 TABLES: TABLES: TABLEG: PARS,0,MINCYL+DRIVES PAR%G .0 MAXCYL+DRIVES PAR7 .0 MINTRK+DRIVE4 PARG .0 'MAXTRK+DRIVE4 .WORD -WORD -WORD -WORD -WORD -WORD -WORD PARS,0,MINCYL+DRIVES PARG .0 MAXCYL+DRIVES PAR7.0_MINTRK+DRIVES PARG .0 MAXTRK+DRIVES -WORD PARS,0,MINCYL+DRIVE6 PARG .0 MAXCYL+DRIVE6 PAR70.MINTRK+DRIVE® PAR6 .0 MAXTRK+DRIVES PAR9.30. ,MINSEC+DRIVES PARS.30. .MAXSEC +DRIVE4 :TERMINATOR 0 PAR9.30. ,MINSEC+DRIVES . 30. MAXSEC+DRIVES PARS : TERMINATOR 0 PARS.30. ,MINSEC+DRIVE6 077722 000000 000036 063264 100474 077672 000000 065472 TABLE?7: .WORD 000036 065500 -WORD .WORD .WORD 000000 PAR9.30. ,MINSEC+DRIVE3 .WORD -WORD .WORD -WORD -WORD .WORD .WORD 100464 100472 100540 .WORD .WORD -WORD -WORD PARS.30. _MAXSEC+DRIVES : TERMINATOR 0 PARS,0,MINCYL+DRIVE? PARG 0. MAXCYL+DRIVE? PAR7 .0 .MINTRK+DRIVE? PARG. 0 MAXTRK+DRIVE? PARS.30. ,MINSEC+DRIVE? PARS.30. .MAXSEC+DRIVE? : TERMINATOR 0 L A A e i e e o PARS.30. MAXSEC+DRIVE?2 : TERMINATOR 0 A TABLE3: PAR9.30. ,MINSEL +DRIVE2 aae 000000 000036 AL 00242 PARS,0,MINCYL+DRIVE2 PARG 0 -MAXCYL +DRIVE2 PAR7 .0 .MINTRK+DRIVE PARG. 0 MAXTRK+DR]VE2 A 077712 TABLEZ: .WORD .WORD .WORD -WORD -WORD -WORD -WORD PARS.30. -MAXSEC+DRIVE1 : TERMINATOR 0 A 0212 000000 PAR9.30. ,MINSEC+DRIVE1 A e 077672 000036 f e 00176 e e 000000 PARG,0,MAXCYL +DRIVE1 PAR7.0_MINTRK+DRIVE1 PARG .0 MAXTRK+DRIVE1 L e 174 .WORD .WORD .WORD .WORD .WORD .WORD 000000 L 077662 L 00136 . Ak A A Al TELETYPE MESSAGES 1 I 1 SEQ 0214 ROUTINE TO SIZE MEMORY ROUTINE TO SIZE MEMORY 000006 100632 020000 000002 000006 100670 100672 000207 000000 ..SAVE THE STACK POINTER MOV MOV 000004 18: 28: MOV ST TST BR ) MOV MOV MOV (SP)+,a#ERRVEC+2"’ ::SAVE THE PSW IN @#ERRVEC+2 ::SET FOR TIMEOUT *SFIRST ADDRESS #20600 R1 #28 AMERRVEC (R1) (R1)0 02 R1 SSTEST THIS ADDRESS *3STEP TO NEXT ADDRESS :3TRY_ANOTHER *:DROP BACK *:RESTORE THE STACK RO.SP (SP)*.BJERRV.C*? :;RESTORE ERROR VECTOR (SP) + ,@#ERRVEC (SP)+,a¥116 (SP)+,a#114 R1,$LSTAD MOV (SP)+,R0 ; SRESTORE RO 0 s sCONTAINS THE LAST ADDRESS RTS SLSTAD: .WORD (SP)+,R1 PC Y " Y Y YT YT " YT Y """ N N s ;RESTORE MEMORY ERROR VECTOR MOV MOV MoV R SP,RO s SET THE ERRVEC PS TO THE PRESENT P$S TRAP sPUSH CLD PSW AND PC ON STACK MoV 100672 #116,3#114 #RTI.a#116 SNERRVEC, -(SP) ::SAVE PRESENT ERROR VECTOR PS & PC SNERRVEC+2,=( N 000006 :SAVE R1 OM THE STACK ..SAVE MEMORY ERROR VECTOR PS & PC ::IGNORE PARITY ERRORS WHILE SIZING e a#116,-(SP) MoV MoV MOV MOV ..SAVE RO ON THE STACK A Mov R1,~(SP) ari14,-(sP) g 100604 100606 100612 RO,=(SP) 000114 00014 000116 100602 MOV Mov MOV T $SIZE: T , ;*SLSTAD WILL CONTAIN THE LAST AVAILABLE MEMORY LOCATION ¢ T RETURN PC,$SI2E A ¥ JSR it it L]y R i I R 2R At il ..LAST ADDRESS RESTORE R1 P 'CAL R S X333 2233 22222222 32222822822 LR LA AR " Y “ .SBTTL 1 v N CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 66 b anad D e e b e W 075233 .BLNKS2 sTYPE 2 BLANKS (SP)+,R1 :ADDRESS OF ASCII TEXT ;GET THE ENT ;WAS IT CONTROL C ? 001340 CFLAG 101064 ?§.CK.NUH 001274 101055 1% #SRMVEC RO .MRMVEC (RO) ,=(SP) 2s: 075233 .BLNKS2 001340 SFLAG 101064 R5,CK.NUM 001272 040310 (RO)+, (R1)+ b il —t b b MRM(CS1: MRMVEC: .ASCI2 .ASCIZ éRO)#(RY)¢ aRM(31=a SRMVEC=d ;ERROR EXIT ME&TORADDRESS ?REEE?T RH/RM VECTOR ADDRESS ON THE STACK sTYPE 2 BLANKS 1 RTS sENTER AND STORE THE NEW ADDRESS W TR W W T T W W :READ THE ENTRY ASCII TEXT ADDRESS (SP)+,R1 3s: :BR _IF YES T g gcfng} RMCS1 ADDRESS e (RO) ,=(SP) . MRM e FIRST ADDRESS 101046 e :CLEAR CONTROL C FLAG e :CR=LF 1$: . :FIRST TIME THRU ? . ;TYPE A CR-LF L YES--CLEAR THE REQUEST FLAG :BR IF YES b b IgPU;RFRgH TTY REQUESTED? CHGADR 3s CHGADR SgRLF e 001203 BUSADR: TST BGE b b 001336 001203 177777 N " b 001336 o b b end and cub cnd cnb anb b end cnd b b end —b b (~l-BNelelelelelelelele e(=1l 1000 005737 PC,BUSADR ;WAS IT CONTROL € ? :BR_IF YES sENTER AND STORE NEW ADDRESS ;ERROR EXIT ;FIRST ADDRESS OF NEW PARAMETERS ;FIRST ADDRESS OF WHERE TO PUT THEM :BUS_ADDRESS sVECTOR ADDRESS :RETURN L JSR RETURN 100674 100700 100702 100706 100712 100716 100720 100724 100730 B -— s CALL: T .NOTE THIS ROUTINE DESTROYS RO-R4 — b cmd b b cnd =D md o = b OO 00 NN PO -—b T FROH THE TTY IF REQUIRED. 22 100734 23 100740 24 100742 &~ BUSADR ~ GET BUS ADDRESS AND VECTOR ADDRESS ;THIS ROUTINE IS USED TO INSURE THE BUS ADDRESS OF THE RH/RM :1S SETUP FOR THE PROPER ADDRESS. IT WILL ALSO READ THE ADDRESS b AANN = OO 0O NO N AN .SBTTL T BUSADR - GET BUS ADDRESS AND VECTOR ADDRESS T T SE@ 0215 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 67 :THIS ROUTINE CHECKS AN ASCIZ STRING FOR LEGAL CHARACTERS sAND FORMS AN OCTAL NUMBER IN RZ 6 H s CALL: S 7 8 010246 C10346 010446 012703 005002 112104 001424 120427 103425 120427 101022 006302 103420 006302 103416 006302 103414 30 101140 31 101142 32 101144 33 101146 34 101150 35 101152 36 101156 37 01156 38 101160 060402 005303 001401 000754 112104 001004 005702 001401 010210 39 101162 4) 101164 41 101166 42 101170 22 101172 R5,CK.NUM H 12 101064 13 101066 14 101070 15 101072 16 101076 17 101100 18 101102 19 101104 20 101110 21 101112 22 101116 23 101120 24 101122 25 101126 26 101126 27 101130 28 101132 29 101134 #ADR,R1 : : 9 3 #ADR,RO 042704 005725 012604 012603 012602 000205 : CK.NUM: 000006 000060 000067 177770 (R1)+,R4 3$ R4.#'0 5% RG A7 58 R2 5% R2 5% R2 5% #177770,Ré R4 ,R2 :GET CURRENT POINTED BYTE :BRANCH,IF TERMINATOR DETECTED JSMALLER THAN ASCII-0 ? :YES,ERROR EXIT ;LARGER THAN ASCII-7 ? :YES,ERROR EXIT :SHIFT LEFT 23 1s (R1)+,R4 5% R2 43 R2, (RO) 3s: (RS '+ A H 5%: TS CYLNDR: LKW 22 101174 :SAVE R2 R 2$: 2; 102200 ENDPGM=. 49 000200 .END 200 sERROR EXIT sNORMAL EXIT R2,=(SP) R3,-(SP) R4 ,=(SP) #g.R3 R 1$: ;ADDRESS TO PLACE NEW NUMBER sADDRESS OF ASCIZ STRING :R5 CHANGED (SP)+ R4 (SP)+ ,R3 (SP)+,R2 R5 258. :SAVE R3 :SAVE R4 :MAX OCTAL DIGITS IN THE NUMBER :FINAL OCTAL VALUE *ONE 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 $YES,THEN NOT REPLACE THE ORIGINAL VALUE ;REPLACE THE ORIGINAL VALUE sADJUST FOR NORMAL RETURN ;RESTORE R4 ;RESTORE R3 ;RESTORE R2 SEXIT ;ONE SECTOR WORD CTR MAX SIZE M P—— 1 4 " 2 3 C(K.NUM - CHECK NUMBER (OCTAL) e2] .SBTTL 1 aws swe PO rwe ST P P T Y PO PR CK.NUM - CHECK NUMBER (OCTAL) — SEQ 0216 P CZRNAAO RMBO PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 68 = o wn KO SKk1 - puerd o . aemn GENG SUNR SEnm SUND U RN SRNR SENR aumn s SN Sl g A gEEy g SRR g g DRIVES gEm STR DRIVES DRIVES DRIVE? gEm TR gE, U QU g DRNUM DROP DROPNG DRQ g DRVACT DRVCLR= DRVER DRVINT DRVNO DRVPAR DRVPRM DRVQUE DRVSN DRVSTA DRVTYP PN gmy P e gEm SYMBOL TABL o nnununuunnn [« 1V, T 3 W~ (=11 =] NN O=OO=O0000000 SEQ 0217 L -~ & OOOQ = ed b =d OO 8000OOOOOOO O = =2V gom-ax BE=IOOOOOOO Palnlalnlalnisininlin O S OHOOoOH OO OB NN = OO = NO N =\ =2 O 000 S NVNNO =2 WWWANNO OO0 O N O WO WONNION =N WNIN = AN -h WWN O =MW ONOOO0O0O0O NOOMNNOONONMNISSNONO C OO = = WWNINNINNIN = =2 S O = = O = OOV ATTN O N NSO = BN = WNWNNO N WWWNOOROONINININO ATESTN= 0 NS NIOOCOHOHRONIOOOOON = ATA ATABIT NNV 4O nmauwnnnunnn — wh > ASGN6 ASGN7 ASKPAR ASNERR ASNLST ASNMSG ASSIGN ASWREG= NV o RNO 2220200 N nNO NO = b O =d =2 =2 NONO N =) A= N N= DO — WNNN =] WNW S WWNO O NN SNNNNOO =N NN S VNN S SO NN [=lelelelelelelalelelelale sl== (LI U T ] o - > ATO PO 0 PR 0NN APTSPO= 000100 076053 ASGND 025764 ASGN1 026040 ASGN2 026130 ASGN3 026300 ASGN4 —h — ABASE = 176700 ABNRML 031264 ACDW1 = 000000 ACDW2 = 000000 ACK = 000123 ACPUOP= 000000 ACTORV 040250 ACTSTR 040251 ADDWO = 000000 ADDW1 = 000000 ADDW10= 000000 ADDW11= 000000 ADDW12= 000000 ADDW13= 000000 ADDW14= 000000 ADDW15= 000000 ADDWZ2 = 000000 ADDW3 = 000000 ADDW4 = 000000 ADDWS = 000000 ADDW6 = 000000 ADDW7 = 000000 @ CZRNAAO RHBg PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE 68-1 SEQ 0218 Q o = o Y = pp— e J w il w il = L w ] 073535 023234 073700 073461 074016 074006 021134 021214 021364 021402 021654 021662 021670 021702 021712 021760 022046 022324 0226414 022556 022624 022666 022700 022706 022714 022746 023076 023170 074112 073367 073614 073405 023202 073426 073736 (gp— LINDA3 LINDEC LINDS LINEN3 LINEOS LINEPS LINE1 LINE2 LINE2A LINE2B LINEZ LINE3A LINE3B LINE3C LINE3D LINE3E LINE3SF LINEG LINES LINESA LINESB LINE6 LINE6A LINE6C LINEGD LINE7 LINE7A LINES LINGG LINM3 LINMG LINN3 LINOCT LINP3 LINPS N LIN?X 076135 = 010000 NEDCLK 076064 N = 004000 S = 000004 F1 = 000010 F2 = 000020 F3 = 000040 Fé GENDPB 067556 GENPAR 017370 GENRCG 067576 GETADR 027650 GETBUF 016242 027550 GETID GETLMT 027462 GETPAT 02)070 GETREG= 000141 GETREM 032014 GETREQ 045366 = 000001 0 GODRIV 016710 GTSWR = 104406 = 000200 HCE_ 012230 HCEER = 002000 HCI HCRC_ = 000400 HCRCER 011054 077320 HDASN 001344 HOUR = 000011 HT 001314 HZ IAE__ = 002000 012106 IAEER IBSAVE 035226 007104 IDLE = 000100 IE = 000001 ILF = 000002 ILR INCHRD 024444 INCMIS 024714 INCSKI 024670 INCSOF 024620 INCTOT 024740 INTRVL 001464 076206 INVLD J0TVEC= 000020 = 000100 IR 042452 ISR = 010000 IvC 025254 KSR 025262 KSR1 = 002000 L8C = 002000 LBT = 000012 LF 001366 LIMIT 073475 LI 073544 LINB 073716 LINBS 074030 LINB6 LINCAS 073524 074063 LINC6_ P 071055 EM30 71107 CM31 071152 EM32 071205 EM33 071262 EM34 071324 EM35 071362 EM36 071413 EM37 070014 EM4 071475 EM4O 071544 EMé1 071610 EM42 071671 EM43 071765 EM4LS 072062 EM4S 072150 EM46 072222 EM4L7 070051 EMS 072277 EM50 072335 EM51 072400 EM52 070105 EM6 072444 EM60 ENDCMP 014334 ENDCON 001446 ENDING 001500 ENDPAS 075734 ENDPGM= 102200 ENDSEK 001452 FNDTST 075760 ENTADR 076302 ENTCOM 076231 ENTLMT 076252 005542 ENTPR 031344 EOP1 031370 EOP2 075274 EQUAL 001364 ERCTR ERPRC1 007356 ERPROC 007342 = 040000 ERR ERROR = 104000 ERRVEC= 0000C4 FACTOR 016240 FAIRNS 001332 FEFLAG 001434 FEONLY 076674 = 000020 FER 001430 FE1 001432 * FE2 FILBUF 016632 032464 FILLZ 032572 FILLO 012166 FMTER FMT16 = 010000 FRSTER 001356 = 000002 FO (=] x 001400 ECSEC 001406 ECWRD ECWRDT 001414 EMPTYQ 045332 EMTVEC= 000030 067646 EM1 070160 EM10 070223 EM11 070256 EM12 070307 EM13 070361 EM14 070404 EM15 067720 EM¢ 0706440 EM20 070461 Eriel 070512 EM22 070565 EM23 070644 EM24 070712 EM25 070773 EM26 071020 EM27 067756 EM3 nn SYAB0L TABLE (v lwiololololelo B WS CZPNAAD RMBO PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE 68-2 002104 OPTBL OR = 000200 PRS PR6 PR? pPs PSEL psw = 000240 = 000300 = 002340 = 177776 = oovgoo = 177776 QDRV 040224 QUES 075272 RANCYL 017600 RANDOM 001506 RANDWC 001474 RANPAT 020040 RANSEC 017670 RANSIZ 017746 RANTRK 017634 RANXIT 020060 RATIO 001476 RDCHR = 104410 RDDAT = 000171 ROHD = 000173 RDLIN = 104411 RDONLY 001440 RDY = 000200 RD.ADR 044706 RD.RM 044670 RD.RM1 044704 RD.RM3 044742 RD.RM& 044746 RD.WRD 044710 READDR 023254 READHD 01565« READIN= 00012 RECAL = 000107 RECALT 015534 RECALO 015624 REDAPK 026566 RELBUF 016376 RELSE = 000113 REPHD 075525 REPLZ 032470 RESREG= 104413 RESVEC= 000010 RETRY 001330 RHEXT 040316 R 040310 RMAS = 000016 RMBA = 000004 RMBAE = 000050 RMCS1 = 000000 RMCS2 = 000010 RMCSS = 000052 RMDA = 00000 RMDB = 00002 RMDC = 000034 RMDS = 000012 RMDT = 000026 RMEC1 = 000044 RMEC2 = 000046 RMEPRS 040146 RMERY = 000014 RMER2 = 000042 RMHR = 000036 RMINIT 0640322 RMLA = 000020 RMMR1 = 000024 RMMR2 = 000040 RMOF = 000032 RMR = 000004 RMSN = 000030 RMTMR 044152 RMVEC 040312 RMWC = 000002 RM80 041000 RNOP = 000101 RTC _ = 000117 RINCTR $15510 RTURN 031766 R6 =%000006 R7 =%000007 S 073423 SATPOW 037736 SAVEFG 040252 SAVER1T 001360 SAVERS 001362 SAVREG= 104412 SC 043334 SCMND 026464 SCOPE = 000004 SC06 = 000400 = 000100 SC1 sC10 = 001000 SC11 043672 SC12 043750 <13 044012 sC2_ = 000200 SC20 = 002000 SC3 043400 043404 SC4 043416 <¢s $C6 043504 SC8 043656 SDETAL 023752 SEARCH= 000131 SECLMT 001424 SECOND 001350 SEEK = 000105 SEEKFG 0460254 SELDRV= 000145 SETFMT= 000143 SETVEC 005570 SET.IE 045226 SHDTYP 023742 SIZE70 00456 SIZMEM 005026 SKI = 040000 SKIER 012372 SKIP 042746 SLASH 077572 016 023626 mm OO0O00000O0000VO0O000D0 PACK 001320 FAR = 000010 PARENT 031030 PARER 012014 PARLST 077466 PART 077632 PAR10 077742 PAR11 077752 PAR1G 077762 PARIS 077772 PAR16 100002 100012 PAR19 PAR2 077642 PAR20 100022 PAR21 100032 PARS 077652 PARG, 077662 PARS 077672 PARG 077702 PAR? 077712 PARS 077722 PARO 077732 PASSES 001470 PAT = 000020 PATTER 001472 pcLock 001310 PERFEX= 000001 PERIOD 076141 PFECH 035406 PFECH1 035416 PFECH2 035500 PFECHS 035532 PFECHL 035540 PFTSTN 035546 = ggzooo PGE 001000 = PGM PIP = 02 PIRQ = 177772 PIRQVE= 000240. POPQUE 045400 011614 POSER PROCES 007252 PRTBAD 015236 007512 PRTIN = 000000 PRO PR1 = 000040 PR2 = 000100 = 000140 PRS PRG = 000200 PWRFLG 037716 PWRVEC= 000024 M. AIMmMMmMmmMMmMmMmMmMmMmMmMo o 001520 076756 NN S ORDERQ OVRWRT OWON MWW= OOOMNIN = =R NOOO & O ONNONNOONINOROOONS SYMBOL TABLE MMAMMMOMMMMMMMMMMMEsSm SEQ 0219 CZRNAAO RM80 PERF EXER MACRO V04.00 14-JAN-82 15:16:58 PAGE 68-3 CZRNAAO RMB0 PERF EXER MACRO V04.00 14=JAN-82 15:16:58 PAGE 68-4 B 2 SEQ@ 0220 SYMBOL TABLE = 940000 WCE = 000040 WCF WCFER 012434 WCHKX = 000000 WCKD = 000151 WCKER 010546 WCKHD = 000153 WC.HK 043246 WLE = 004000 WLEER 012140 WRDCNT 001462 = 004000 WRL WRTCHK 001502 WRTDAT= 000161 WRTHD = 000163 $DBLK 036546 $0B2D 037222 $0B20 037416 $DECVL 037402 S$DEVCT 001216 SDEVM 001264 032040 $D1V $DOAGN 031762 $DRVSN= 002130 $DSPLY 032716 $DTBL 036536 SENDAD 031752 SENDAT= 000036 SENDCT 031736 SENDSK= 000042 $LKS SLLVEC SLONUM $LPADR SLPERR SLPVEC SLSTAD S$MADR1 SMADR2 $MADR3 $MADRG $MAIL SMAMST SMAMS2 SMAMS3 001304 001306 037124 001122 001124 001302 100672 001240 001244 001250 001254 001206 001236 001242 001246 $PWRUP 037610 $QUES 001202 SRAND 037024 SRDCHR 034170 SRDLIN 034260 $SRDOFL= 000064 $RDSZ = 000017 SREAD = 000066 $SREG = 000014 SKESRE 037164 SRETRY 015744 $RHEXT= 000001 SRMADR 001272 $SRMAS = 002156 SRMBA = 002144 002370 SERTTL 001126 SETABL 001226 SETEND 001272 SMTYP2 001243 SMTYP3 001247 SMTYP4 001253 SRMEC2= 002206 SRMER1= 002154 $SRMER2= 002202 001226 SENV SENVM 001227 031312 $EOP SEOPCT 031730 SERFLG 001117 SERMAX 001131 SERROR 034640 $ERRPC 001132 $ERRTB 003370 SERRTY 035230 017000 WRTPK WRT.AD 045032 WRT.RM 044750 WRT.R1 045026 WRT.R3 045052 WRT.RG 045056 WRT.RS 045060 WRT.WD 045030 001444 XXDP 076137 Y ZEROS ZROIND 001354 SAPTHD 001100 036602 SATYC 036556 SATY1 036564 SATY3 036574 SATYL $AUTOB 001150 001262 $8ASE $BDADR 001136 $8DDAT 001142 $BDSEC= 000146 001176 $8ELL $8UF = 000006 001266 $COW1 $Cow2 001270 S$CHARC 036100 $CKSWR 033626 SCMTAG 001114 $C = 000000 $CM4 = 000001 SCNTLC 034533 S$CNTLG 034545 SCNTLU 034540 $CODE = 000024 $COMND= 002 $CPUOP 001234 $CRLF 001203 sCYL $FAIR = 000106 SFATAL 001210 037022 $FFLG $FILLC 001172 $FILLS 001171 $FIRST= 000124 S$FMT = 000001 $GDADR 001134 SGDDAT 001140 $GET42 031742 $GTSWR 033716 $SHARD = 000076 = 000000 $HD SHIBTS 001100 SHINUM 03712 $SHLDWC= 000110 $SHSNL = 000142 $SHSNM = 000144 S$ICNT 001120 SILLUP 037710 $INTAG 001151 SITEM8 001130 SLF 001204 037021 SLFLG $LKCSB 001300 SLKCSR = 000012 102200 000000 000 001 001276 SMAMSS 001252 $MBADR 001102 037020 SMFLG $MISPO= 000102 EW 034563 $MSGAD 001222 SMSGLG 001224 $MSGTY 001206 034552 SMSWR SMTYP1 001237 SNCODE= 000114 SNCYL = 000120 SNEXT = 000122 SNPATC= 000115 SNSEC = 000116 SNTRK = 000117 SNULL 001170 SNWTST= 000000 036326 $OCNT $OCTVL 037520 SOMODE 036330 SOPERC= 000046 $PACK = 000026 $PASS 001214 $PASSC= 000104 SPASTM 001106 $PATTC= 000030 $POSIT= 000052 $POWER 037720 SPREVA= 000032 $PREVO= 000027 $PSEL = 000003 $SPWRAD 037704 $PWRDN 037536 $PWRMG 037700 SRMBAE= 002210 SRMCS1= 002140 SRMCS2= 002150 SRMCS3= 002212 SRMDA = 002146 $SRMDB = 002162 SRMDC = 002174 $SRMDS = 002152 $SRMDT = 002166 SRMEC1= 002204 SRMHR = 002176 $RM.A = 002160 SRMMR1= 002164 SRMMR2= 002200 SRMOF = 002172 SRMSN = 002170 SRMVEC 001274 SRMWC = 002142 075520 $SRMB0 SRTNAD 031764 $SAVRE 037126 $SAVR6 037714 033230 $s82D $5820 033260 $SEC = 000010 $SETUP= 000156 $SIZE 100542 $sK1_ = 000100 $SOFT = 000074 $SSEC = 000022 $SSENB= 000112 $STUP = 177777 $SUPRL 032364 $SUPRS 032400 $SUPR1 032412 $SUPR2 032454 $SVPC = 000210 $SWR_ = 122000 $SWREG 001230 $TATUS= 000016 $TERM = 000032 $TESTN 001212 024764 STIME 001162 $7k8 $TKCNT 033310 STKINT 033326 $TKQEN= 033325 $TKQIN 033312 $TKQOU 033314 $TKQSR 033316 001160 $TKS $TKSRV 033376 001174 $TMPO $TN = 000002 STNPWR 037332 $TOTAL= 000072 001166 T $TPFLG 001173 001164 $TPS S$TRAP 040060 $TRAP2 040102 $TRK = 000011 $TRP = 000015 STRPAD 040114 $TSTM 001104 STSTNM 001116 STTYIN 034514 $TYPDS 036332 035550 STYPE $TYPEC 035762 STYPEX 036102 $TYPOC 036130 STYPON 036144 $TYPOS 036104 001220 SUNIT SUNITM 001110 SUSWR 001232 SVECT1 001256 T2 001260 SWONT = 000004 SWRDL = 000020 SWRITN= 000060 SWTOFL= 000056 $XOFF = 000023 $XON_ = 000021 $$GET4= 000000 SOFILL Q36327 $X = 001100 CZRNAAO RMBO PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE 68-5 SYMBOL TABLE ERRORS DETECTED: O VIRTUAL MEMORY USED: 62720 WORDS ésgks PAGES) DYNAMIC MEMORY AVAILABLE FOR 71 PA +A:CZRNAA/C=A:CZRNAA.DOC, CZRNAA,SYSMAC/M SEQ 0221 CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE S-1 SEQ 0222 CROSS REFERENCE TABLc (CREF v04.00 ) $SGET4 SOFILL $40CAT SAPTHD SASTAT SATY] SATY3 SATYS SATY(C SAUTOB SCKSWR S$CM3 $CM4 SCMTAG SCNTLC SCNTLG SCNTLU $CODE SCOMND 35-1 44~ 41-1 5-8 46-1 46-1# 43-1 411 46-1 6-O# 35-14 4= Gh=1% 44=1% L46-14 4614 9-168 9-184 9-235 10-12 40-1# 6-0 6-0 6-0# 40-1 40-1 40-1 13-5 20-33+ 13-400+ 56=-125 $DECVL SDEVCT 49-1 6-04 SDRVSN SDSPLY 29-24 39-96# 45-1 55 14-26+ 35-14 14-183« $DTBL SENDAD SENDAT SENDCT S$ENDSK 20-39 13=414» 56-135 9=115+ 14184+ 29-82 32-11 35-1 35-1 14-153 22-102 22-252 22-259 53-206 14-24 14-151 15=42¢« 15-64# 1569+ 20-25+ 20-32+ 29-15 29-37« 31-43¢ 53-203 56-€8 20-15 20=-37« 22-165 29-15 29-125+« 31-39+ 53-209 39-228 49-14 14-16 15-41« $DBLK 29-60 11-82 35-1 59-73# 59-77 35-1 35-1 59-254 35-1 59-264 23-71 SEQ 0223 CZRNAAQ RMBO PERF EXER MACRO VO04.00 14~JAN-82 15:16:58 PAGE S-2 CROSS REFERENCE TABLE (CREF V 04.00 ) SENV SENVM $EOP SEOPCT SERFLG SERMAX SERROR SERRPC SERRTB SERRTY SERTTL SESCAP SFIRST SFMT $GDADR SGDDAT $GET42 $GTSWR 6-04 6-04 11-176 35-1 6-04 6-04 9-25 ' 8-0# 41-1 6-04 56-158 6-0# 5-8 11-101+« 6~0n 46~1 6-0# 6~ 9-103+ 53-202 6-0# 6-04 11-9 40-1#4 24-135 4=57 41-1 41-14 43-1 461 46-1 L1-1» 421 42-1 41-1+ 41-1 411~ 11-147 59-394 46-1* 46=1x 56-196 6-04 11-138+ 46-1+ 11-146+ 23-73 52-1 24-147 4=57 9-155+ 47-1 SLPVEC SLSTAD SMADR1 SMADRZ SMADR3 SMADR4 SMAIL SMAMS1 SMAMS?2 SMAMSS SMAMSS 7-04 9-157 6-04 6-0# 6-0# 6-0# 5-8 6-04 6-0# 6-0# 6-0# 23-50 66-1# 66=1« 5-8 6-0# 9-19 9-25 W7-14 47-1x 9-30 41-1 43-1 31-72 31-75« 31-104* 39-79 59-65# CZRNAAO RMBO PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE S-3 SEQ 0224 CROSS REFERENCE TABLE (CREF V04.00 ) [] [7a] wO ~O ] N= W O wn -— 9 ("2 O ["a) [¥a) ] N - NO~ - w w - [=2o o%]- MeM—OpO~M MMo] MNM[S [ - - 0 3- I- i- bN-&o&] « ¥ a4 O NS — * N -« [= T oo n O NITMONE ~ =O AN N NOSTOONNOO -W®No©0eMO v o ~r N N NN MO\ =M « ] ] [ M -« ["a] O ~ ~ xR SEQ 0225 CZRNAAO RMB80 PERF EXER MACRO V04,00 14-JAN-82 15:16:58 PAGE S-4 CROSS REFERENCE TABLE (CREF V 04 .00 ) O W Mo ) ~N o VoOrn OO &N oo - W MANRO 3 OO~ Ne=NAEN - NENe NeEN « &« -« Ld 59-904 $SAVR6 $SAVRE $582D0 $5820 $SEC $SSEC $SSENB $STUP $SUPRL $SUPRS $SVPC $SWR $SWREG $TATUS 51-1 48-1#4 13-277 22-462 13-18 9-156 22-440 24-132 13-24 11-173+ 13-278 38-21# 5=5 L=47h 9-25 611 6-0# 11-167 13-498 51-1# 52-1 22-478 39=-2434 13=425¢ 31=41x 4=267 9-25 40-1 66-14 24-138 24=147 13-29 38-24# 38-23¢ 22-406 51=1» 52-1 24~82 N~dO 62-8 51=1¢ 51=1» 26-14 26-19 26=-24 32-101 59-78# 62=7 32-107 32-115 39-2264 15-39+ 56=77+ 4=2674 9-25 41-1 15-50 56-145 4=2674 9-30 4=2674 9-30 9-25 9-30 20-36+ 22-175 9-25 35-1 9-25 35-1 59-364 38-33 22-414 38-35+ 22435 38-374 22479 15-60+ 20-38+ 20=41¢ 22-290 29-43+ 29=472 59-194 4=2674 4=2674 4=2674 4=267# 4-267#% 4=2678 4=2678 4=-267R 4(~2678 4-58 41-1 4-58 41-1 6-0 41-1 6-0 41-1 41-1 6-0 9-19 41-1 12-345 59-144 13-418 62-8 13-438 13-476 13-492 38-164 SEQ@ 0226 CZRNAAQ RM80 PERF EXER MACRO 524630)14-JAN~82 15:16:58 PAGE S-5 CROSS REFERENCE TABLE (CREF V 52-34 L 22-18 ' N N O O W N O O OOO STERM STESTN $TIME $TkB =NT2N~ =M0or—e—0= 40-1 43-1 40=7+ 40-8+ 40-9 40-11+ 40=1+ 4C=1x 40=1s 40=1+ 40-1+« 40-1+ 70 VTN T 0 ®- ey OOONTOM ~ CONT T TN INANINAIA - O WM STNSN L 4 40-1 43-1 43-1 ] ey 8«& OOM - -— AN~ O—T N —— - g—-e— STKQEN $TKQIN $TKQOU $TKQSR $TKS 40-1 9-65 40-1 40-1 40-1 40-1 RORBERN «t STKCNT STKINY 40-1 9-136 9-136 6-0 34-364 6-0 6-0 ACTDRV 53-118# 55-13« ADDWO ADDW1 ADDW10 ADDW11 ADDW12 ADDW13 ADDW14 ADDW1S ADDW2 ADDW3 ADDW4 ADDW5 ADDW6 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 ACDW2 ACK AC ACTSTR ADDW?7 ADDWS ADDW9 ADEVCT ADEVM AENV AENVM AFATAL ALOST AMADR1 AMADRZ AMADR3 AMADR4 AMAMST AMAMS? AMAMSS AMAMSS, AMSGAD AMSGLG AMSGTY AMTYP1 AMTYP2 AMTYPS MTYP4 AOE APASS APRIOR APTCSU APTENV APTSIZ APTSPO ASGN1 ASGN2 6-0 4-2524 6-0 53-1244 - 57-8¢ 9-140 9-140 6-0 R 4~B4N 4-854 4=2640 11-175 6-0 L A6 A7 ABASE ABNRML ACDW1 2B ol CROSS REFERENCE TABLE (CREF v04.00 ) 55-57+ 56-3+ 46-1 46=-14 57-23¢ 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 32-50 -0 6-0 €-0 ¢-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 4-156# 6-0 6-0 43-1 41-1 9-25 43-1 27-113# 27-111 6-0 6-0 6-0 6-0 64=5% ¢-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 6-0 46-14 43-1 46-14 46-1 27-126#4 46-14 SE@ 0227 g CZRNAAO RMB0 PERF EXER MACRO V04,00 14~JAN-82 15:16:58 PAGE $-6 56=11* 57-6 L -b -L 4 « U IR [ - o NN UL | 1 VU CCCCCCCE CC€<CLCLCCLCLLCLCLCLC CCCLCLCCLL U] [] [ NN ] coOOOOOOOoan@amaom 3- ~* O o -— -— - Wy ~ (= [ 4 58-5¢4 58-19 55-84 55-51 54-106 o2 =on =2 = o S’ YPIVIVIVIVIVIVIVIVIVIVIVIVIVIVIVIVIVIVIVISIT IV IWTFweTowvewseo /smamo/es ] (72 w w 3 [-[7 N TnNO Oer= o= &3 R 4 ® =0 0 - N -0 N A . -0\ =0 [V [+ 4 w 0 L NE st et ettt|d QN oTYU- = o Sleieiaie [VEVEVEVIVEv SVEVEVEVIVSEJuVpuEPuCPSVtEo - wW w [] [ 4[V V0 oo o Oooondodmdd Oood DY YVOLULWLOLO L0OULOUULLVUVWULLLLLLLLLLL oa 13-123 13=111+ 13-126 29-139« 22-236 9-25 28-15« 34=25« 35-1# 21-27« 23-36+ 23-38+ (%] DEC2 DH1 DH14 DH15 68-454 L L L L L GRS GRS G G a S e SR JEEN g g TV ] L o DCKER DDISP DDRVS DEASGN DEASSG 31-45 g oo 29-90 12-497« A 29-89 12-461% 64-56 43-1 63-54 64-29 64=45 64-58 g 9-55 61-10 63-61 64-37 64-53 65-17 GVEe gD g 9-44 1-9 63-60 64-36 64-52 64-64 A 64=54 DATAPK DCKER1 13-1314 9-30 61-7 63-59 64-32 64-50 64-64 12=457+« -l o o anf amf 21-10 s S TVNO = ed 21=-74 13-136#4 13-128 13-107* 13-119 SRS SR (=] » » o o 11-182 13-89 13-117 13-105 41-14 o OO ~ - b aad 13-113 13-100 41-1 [ Ly VWNO b and =)= NOMNOW =2 OO~ ~NWN OO0 ——=RR b W o b b e e o W= OO o - 13-112« 41-1 [elolelelalelel=d o 22 2 3 2 2 R -= DATAQ DATA1 DATA10 DATA11 DATAY2 DATA13 DATA14 DATA1S DATA2 DATA3 DATA4 DATAS DATAG DATA7 DATAS8 DATA9 W 11 CTRAP CYLIMT CYLNDR DASH &H CMTRK COLON COMMA COMTBL CPSAVE CR CRLF o CMSTR 13-36 13-98 L CMSTR2 13-17+ 13-544 b d b b 13-16+ 1345 S Te AV LV} tfuw-nwu 1 410 ld‘ CMCYL CMDAT CMHED CMPAR CMPARD CMPLMT CMPRES CMPRT CMPRX CMSEC b e PN W) W=0 (U 0 CROSS REFERENCE TABLE (CREF V04.00 ) g SEQ 0230 CZRNAAO RM80 PERF EXER MACRO V04,00 14-JAN-82 15:16:58 PAGE S-9 L >INBIXBWd S w S > [ T OI U «> - e ) [ ] w w TR R PYTIR R R i —e—ONOVOOMNMO O=MNgMN N== g ~0 o- o A AT NFOAUTMTMIANSNANN 6R A OOV TP ANNNSA d—ad [NO 7,] CZRNAAO RM80 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE $-10 & 9-25 4 -— o[ wh ] -« [} wv - o ] 1 N SEQ 0232 4-1864 41874 4-1884 4~189# 4=1904 3-191# DT2 8-13 0 a8 0 0 D703 DT04 DTOS DT06 D107 D708 PAPAVPOL CROSS REFERENCE TABLE (CREF v04.00 ) M CZRNAAO RMB0 PEnF EXEP MACRO V04,00 14-JAN-82 15:16:58 PAGE S-11 ECGD1 ECH ECI ECMSKO ECMSKT ESSFC ECVRD E%¥RD1 12292 13-308 13-283 13-32% 704 13-247# 13-3i64 13-306 13-321 13-333# 13-330s 13-266% 7-O# 4-1534 12-200 7-0# 7-08 7-08 13-285% 13-286% 13-247¢ 3-321 13-321 4=-2134 7-O8 g-g# 13-268% zg-§21* 60-94 EM14 EM15 EM2 -98 12-109 -1 60-134 60-14# 60-44 EM24 EM25 EM26 EM27 EM3 EM30 12-423 12-467 12-576 12-594 8-18 12-401 60-19#4 60-20# 60-214 60-224 60-5# 60-234 13-267+ 0 13-268 13-269% 13-287+ _ 55-256* 56-6 56~17« 56-65* 57-49 57-63 13-297+ 13-301 13-289+ 13-290+ 13-259+ 13-794 13-299 13-262% 13-296 13-311 13-264+ 13-305 13-313 12-280 13-273% 13-275 13-280 13-281 13-293 13-295 13-296+ 13-302+ 13-303 13-307+ 13-310 13-312 13-313+ 13-314+ 13-323 13-330 13-330 13-270% 13-271% 13-272¢ Y% 9 ' EM10 8 0 e 13-321 13-330 57=-73+ 55-254 vy . ECC ECC1 ECC2 ECCX ECGD 13-293+ 13-310+ 55-2¢6 “Y*YO Y 7-0# 7-0# 7-O# 55-149% Y ECBIT ECBADO ECBAD1 55-94 . T 84 4=129% 4=-2264 53-154#4 5423 ... DVA DVC 12-529#4 . Y. 27-10 62-34 624N 62-5# & DTUW 8-20 8-27 8-41 4=159# 12-180 62-24 P P — . &£ 013 DT4 DTé DTE DTEER 8-34 SEQ 0233 CZRNAAQ RMB0 PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE S$-12 CROSS REFERENCE TABLE (CREF V04.00 ) EM31 EM32 EM33 EM34 EM3S EM36 EM37 EMA EM40 MGl EM42 12-510 12-532 12-338 12-845 12-557 12-567 12-334 8-25_ 12-612 12-742 13-158 EM4S EM4S EM47 EMS 60-24# 60-254 60-26# 60-27# 60-284 60-29# 60-30# 60-64 60-314 60-32# 60-33# 60-34# 12-218 22-105 12-215 8-32. 12-696 60-354 60-364 60-374 60-38# 60-74 EMPTYQ EMTVEC 55-258 4=-764 56-54 9=25% 56-223 9-25+ 56-231 56-287 57-11 58-148#4 ENDCON ENDING 7-0# _7-0# 10=4* 35-1 10=5+ 65-9 10-9+ 10-10» 35-1 35-1 ENDPGM ENDSEK 9-159 _7-0# 9-164 35-1 68-47# 35-1 EOP2 15-45 35-1 35-1 35-1 35-1 35-14 ERCTR ERPRCT ERPROC 7-04 12-25 12-5 13-9¢ 12-30# 12-9 13-48+ 12-259 12-11 13-64 13-516 12-244 13-77« 13-19¢ 13-197 ERRVEC 9-25 L1=1» 9-25+ 66-1 9-25% 66-1 9-27% 66=1+ 9=-28+ 66=1+ 9-116 66=1+ FACTOR 4-76# 41=-12 4=1244 4=1254 4=1264 4=1274 4-1284 149+ 14=-10* 14-12¢ 14-18 14-26 14-28 14-35# FE1 FE2 FEFLAG FEONLY 7-0# 7=-04 7-04 9-188 18-42 29-123 9-182% 9-228 18-49 29-139 9-226+ 64-50# 19-46 29-76 29-118 29-120 29-74 29-116 29-137 EMAS EM4G FO F1 F2 F3 Fé& 12-691 12-724 9-117+ 66-=1+ 29-121 9-143+ 2345 23-46% 23-59« 23-76+ 41-1 SEQ 0234 CZRNAAO RMBO PERF EXER MACRO V04,00 14-JAN-82 15:16:58 PAGE S-13 CROSS REFERENCE TABLE (CREF v04.00 ) FRSTER GENPAR GENREG GETADR 11-13C 12-416 10-31 GE TBUF GETID 11-97 10-30 GETREG 4=254n 16-14 55-69 GETLMT GETPAT GETREM GLTREQ 29-68 13-5¢4 15-71 HCRCER HD ASN JAEER IBSAVE IDLE 1E ILF INCSOF INCTOT IvC KIPARO 12-166 41-1 1-7 4-824 e=1474 12-291 12-90 12=514 66-1 31-34 oi 12-344 4=154n 12-462 4=2124 4=155# 12-142 39-78 29-137# 13=491 14-173# 12-593# 12-3694 64-604 9-95% 12-412 12-451 11-86+ 26-7 26=43« 26-33 2644 41-14 41-1r L1=-1» 41-1x .-lql.l oM CZRNAAQ RMBO PERF LUXER MACRO V04.00 14-JAN-82 15:16:58 PAGE S-14 SEQ 0235 CROSS REFERENCE TABLE (CRE F v04.00 ) 27-10# LIMIT LINIOA LINIOB LINIOC LINTOH LINU LINI1TIA LINITH LIN2C LINZP LIN3.3 LIN7OR LIN7OX 7-04 13-274 13-279 13-333 13-316 13-364 13-375 13-361 22-39 22~45 22-71 22-126 22-137 22-407 22-399 22-431 22-410 22-439 22-396 22402 12-258 13-163 LINOH LIN9I 12-305 13-165 12-698 LINDS LINDA3 22-185 LINDEC LINE2A LINEZB LINE3 LINE3A LINE3B LINE3( 27-1 13-198 22-44 22-69 12-88 1212-647 12-635 12-496 12-340 22=-1374 22-1444 12-376 12-403 12-425 12-469 12-512 12-578 12-596 12-614 CZRNAAO RMB0 PERF EXER MACRO V4,00 14-JAN-82 15:16:58 PAGE $-15 ws SEQ 0236 CROSS REFERENCE TABLE (CREF v04.00 ) 12-540 12-426 LINES 12-513 12-541 12-579 12-597 12-615 13-321 13-321 13-321 22-301# 12-501 12-278 22-228 22-319 22-315 22-187 P O M. LINE7A LINES LINEN3 LIMEQS LINEPS 12-604 12-470 22=-191 22-253 SEQ 0237 CZRNAAO RMBO PERF EAER MACRO V04.00 14-JAN-82 15:16:58 PAGE S-16 CROSS REFERENCE TABLE (CREF v04.00 ) MANTER MASK H MAT MAXCYL MAXER MAXSEC MAXTRK 27-168 =04 13-55 17-3 59-64 32-10# 12-261* 12-261 12-315+ 12-386+ 12-435+ 12-479+ 12-515+ 125643+ 12-620% 12-652% 12-671+ 13-500 13-505 19-28 65-54 29=71¢ 65-5¢4 29-98 65-5¢4 29-101+ 65-54 29-121 65-5¢4 29-123+ 65-54 59-55#4 65-564 59-56 59-57 59-58 5959 59-60 19-19 19-34 29=73+ 29-110 29=113¢ 59-59# 65-54 65-54 65-54 65-54 65-54 65-54 19-23 19-30 29-72¢ 29-104 29-107+ 59=574 65-54 65-54 65=54 65-54 65-54 65-54 29-97 29-102+« 29-118 29-120* 29-125 19-17 29-80* 29-109 29-114r 29-127 29-79+ 29-103 29-108+ 29-126 59-58# MCPE MDAE MERR1 MINSEC MINTRK MINUTE MNTBL MOH ML MREAD MRMCS1 MRMVE C MSFULL MSGCTS MSGFOR MSGON MSPRM MSWALT OV o«vmo\.noomoo SN -— NOON—ON—2ON = MESSAG MINCYL NON=ON = O\ = MERRZ MESFE 64-264 MSWRO MXF MXWNDW N NED NEDCLK NEWUNT NODRVS NOENTY NOMTCH NONE NOTAVL NOTPRS NOTRM NOTSAF 11-53 11-69 1170+ 27-169+ 12-285 13-442 22-332 22% 333 NEM NEWASN NS\ OFF IR OFFO! OFFSET 12-268 22-366 CZRNAAO RMBO PERF EXER MACRO VO&. 00 14-JAN=-82 15:16:58 PAGE S-17 CROSS REFERENCE TABLE (CREF v04.00 OFLIN ONES ONESEC OPE OPl OPIER OPIER1 OPT OPTBL OR ORDERQ OVRWRT PACK PAR 12-42 SEQ 0238 ) 12-96‘ 11-85+ 26=31+ 26-33+ S5-674 22-51 56-36 22-53 56-247 56=290 9-88 64-51# =99~ 11-5 11-104 11-115 11-140 11-164 51=-27 15-76+ 27-170 28-49+ 28=564+ 28-59+ 28-65+ 9-94' 12=507# PAR1 PAR10 PART PAR14 ONONONONONON PAR1S PAR16 PAR19 PAR2 PAR20 65-6 24-171 42-1+ 55-220 56-241 58-190# 24-119 24-133 24-136 24-139 26-142 24-149 39-65 39-87 64=354 SEQ 0239 CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE $-18 CROSS REFERENCE TABLE (CREF v04.00 ) PR3 13-335# 51=14» 54-15 54=16+ S4=45¢ $54=53¢ 56-44 58-42 56=47 58-81 56=50 56-74 56-76 56-78 67-26 27-66 67-37 39-44* 39-98+ 51-12 58-192+ S51=1¢ 55-208 57-86 36-25 58-104 27-13« 55-68 10~48+ 51~1# 58-163 9-25¢ RANS1Z RANTRK RANXIT RATIO RD.ADR RD.RM RD .RM1 RD.RM3 RD .RM4 RD.WRD RDCHR RDDAT RDHD RDLIN RDONLY RDY READDR READHD READIN RECAL RECALO RECALT REDAPK RELBUF RELSE REPHD REPLZ RESREG RESVEC RETRY 65-8 62-3 55-144 56-208 55-187 56-212 62-4 20-32 31-43 27-22 9-207 27-95 9-230 32-34 15-67 33-19 16-9 52-14 27-54 13-420 13-467# 20-18 21-28 22-200 23-144 50-1 52-14 55-52 55-55 55-115 55-262 56-10 57-22 58-98 12-266 12-651¢ 12-266 12-672+ 12-343s 13-507+ 12348+ 13-508 1§38 285340 12-353 12-387+ 12-436+ 13-4124 CZRNAAQO RMB0 PERF EXER MACRO V04,00 14-JAN-82 15:16:58 PAGE $-19 CROSS REFERENCE TABLE (CREF Vv04.00 8 5 9-133 473 54~34 9-123+ =415 pry 9-114+ ) W RHEXT RM80 RMADR 58-95 31-46 55-134 55-114 55-154 55-172 56-5 57-39 58-11 58-17 58-48 58-52 57-77 56246+ RMAS RMBA RMBAE SEQ 0240 RMCS1 55-87 55-148 55-166 55-209 55-219 55-230 56-25 56=-126 56=155 RMCS?2 55-29* 58-112+« 55-135+ 58-117 55-155« 55=173¢ 56-24* 56=207+ 56-252+ 56-267+ 57=40+ 57-9 58-67 58-130 RMCS3 RMDA RMDB RMDC RMDS RMOY 56-74 57-41 RMEC1 RMEC2 56-44 56-212 56-254 56254+ 56-255« 62-2 62-2 62-2 62-2 55-144 55-187 55-189 55-198 55-200 56-50 56-121 56-123 54-31 56-99 55-12 52-1# 54=14 55-14 55-67 55-242 56-4 56-233 56-248 56-291 RMER1 13-148» 56-153# 56-237# 56-264# 56-197 56-2034 56-199 56-227 SEQ 0241 CZRNAAO RM80 PERF EXER MACRO V04,00 14~JAN-82 15:16:58 PAGE S-20 CROSS REFERENCE TABLE (CREF v04.00 ) SC8 SCMND SCOPE SDETAL SEARCH SECLMT SECOND SEEK SEEKFG SELDRV SET.IE SETFMT SETVEC SHOTYP 56-208 27-50 4=764 24~ SIZE70 56=2314 56-260 23-33 26=34x 29-73 26-3F 29-93 26=37+ 55-42 55-261 56-159 58-110# 9-243 24-584 9-256 9-262#4 56-212 28-28# 56-216 24-48 24~684 13-105 9-97+ 19-19 11-88+ 54-19 55-98 54-78 9-236 24-45 56-226 29-94 51- 12+ 29-144+ 29-149+ 57-112 58-67# 51=-31 SIZMEM SK1 SKIER SKIP SLASH SPOTCK SRCHWT SSE SSEI STA STACK 12-632# 56-654 STAR30 STARS 12-369 55-100+ 12-420 55-167+ 12-464 56-224« 12-507 56-238 16-28 29-145 56=-51 56-122 9-92 35-3 51=-15 START 27-28 STATIN 11-189+ START] START? STAT1S STATPR STKLMT 12-529 21=21# 26=54» 14-156 STNDAT STO ST01 sT02 ST03 ST05 ST06 57=774 57-954 57-102 4-76 37-29 24~118 32-116 37-334 56-30 56-214 27-68 16-11 12-17 57-109 57-113# 56=245 56-286 39-86 57-53 32-67 CZRNAAO RMB0 PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE $-21 K 3 SEQ 0242 CROSS REFERENCE TABLE (CREF v04.00 ) Sw02 4=76 L4=764 9-186 9-269 11-185 Swo4 Sw05 4~76 4~76 4~764 4=T6N8 15-46 22-80 34-36 22-150 351 4-764 13-174 35-1 35-1 Sw03 Sw06 Sw0?7 Sw08 Sw09 sw1 SW10 SW11 Sw12 sw13 Swi4 SW15 SW2 SwW3 SW4 Sw5 SW6 Sw? Sw8 SW9 SWR 4=76 4=76 4-76 4-76 4=764 4=764 4=764 4=764 20-2 4-76 4=764 4-764 L4=~764 L4=764 4=764 22-8 22-1 611 4=768 22-416 22-443 4-764 13-66 13-339 L4=764 4=764 L=764 4-768 4 764 4=764 4=764 L4=764 6-0# 13-339 22-183 9-25 15-46 56-265% 56-272% 57-12 57-14r 57-68¢ 57-93+ 57-99s 19-50 56-21 23-34 56-22¢ 29-72 56-66% 29-91 57-48 29-92 57-62 29-143+ 57=74x 31-40 32-60 1 9-23 5 5-257+ 40-1+ 9-25¢ 9-25+ TRFER_ TRKLMT 12-138 7-04 12-611# 13-109 TRIVEC ST 4-764 9-194 24-87 56-204% 55-252+ 4L0-1% TYDRV 56-19+ 55-235¢ 4=768 4=764 4=764 53-104# 41-1 40-1 TKVEC TPVEC TRAPVE TRNSWT 41-1 40-1 39-96 57-105e 41-1 40-1 65544 65-544 53-145# 611 9-30 35-1 65-42 65-42 4=194n 4-764 56-8 16-354 TIMER 011 9-25+ 22-1 TABLE6 T:gLE7 T TBITVE 10 THEAD SWREG 9-25 40-1+ 9-25+ 22-8 35-1 5=14 13-174 34-36 51-1+ 40-1 9-25+ 20-23 35-1 12-17 27-56 13-66 27-68 51-1 9-25 1¢-1 40-1 9-30 22-80 9-105 22-150 9-186 22-183 9-269 22-416 11-185 22-443 56-16# 55-108+ 55-132¢ 18-46 55-245 27-162 39-604 SEQ 0243 CZRNAAO RMB0O PERF EXER MACRO V04.00 14~JAN-82 15:16:58 PAGE §-22 CROSS REFERENCE TABLE (CREF v04.00 ) TYHDA TYLIST TYPORV 27-164 32-93# 39-78# ON NSNIOIMMMN 0NITOMO oNN1ON ey== Aw 24-89 32-42 39-61# TYPRI4 39-79# 9-8 52-14 9-47 24-58 UNTASN 12-1 27-1 TYPHDA TYPOC TYPON TYPOS UNS UNSAF WAIT WATPAK WCHKX WCKD WCKER WCKHD WLE WLEER WRDCNT WRL WRT.AD WRT.R1 WRT.R3 WRT.R4 WRT.RS WRT.RM WRT.WD 40-1 9-58 39-434 42-1 9-274 42-1 52-14 67-24 67-35 11-63 24~74 27-1630 31-96 34-10 35-1 64~84 15-51 17=45 7-04 27-77 56-32 4-1134 4=152# 12-162 52-54 4=2574 12-134 4=2584 4-158# 12-170 7=04 4=-139 58-38+ 58-49# 58-42 58-55 58-57 54-93 58-36+ 12-6444 56-31 7-0 12-3114 STONNNNIMMN 56-129 20-28 56-147 12-566# 9-171 9-173« 9-174 58-48+ 58=514 62-4 11-108 11=149 9-255 9-257+« 34-31 35-1 35-1 52-14 65-3 55-183 55-189 55-19%¢ CZRNAAQ RMBO PERF EXER MACRO V04,00 14~JAN-82 15:16:58 PAGE §-23 SEQ 0244 CROSS REFERENCE TABLE (CREF v04.00 ) WRTCHK WRTDAT WRTHD WRTPK XX0P 7-0# 4~259%# 4=2604 10-38 7-?% Y ZEROS ZROIND 64-344 70 7-04 56=-132 7-0 56-133 15-70 11-127 =35+ 15=144 7-0# 13-21« 65-10 56-135 9-38+ 9-39 9-41% 13-76+ 13-83+ 13-87 9-46 9-57 9-295 9-297 10-20 10-22 27-114 27-116 27-128 SEQ 0245 CZRNAAO RMBO PERF EXER MACRO V04.00 14=-JAN-82 15:16:58 PAGE M-1 CROSS REFERENCE TABLE (CREF Vv04.00 ) 52-1 52-1 52-1 52-1 52-1 4=65 32-67 COMMEN ENDCOM ERENTR ERRCAL ERROR ESCAPE GETPF1 GETSWR MORETA REPORT SETPRI SETTRA 4=76/4 =764 40-13# 53-1# 4-764 4=764 4=764 4=764 4=764 4-764 52-1 41-1 56-158 40- 1 52~ 1 56-196 §2-1 52-1 4=70 52-1 4-73 52-1 52-14 52-2 29-128 30-29 31-98 31-107 32-80 28-28 29-10 30-10 31-33 31-37 56=50 56-74 56=76 56-78 52-1 52-1# 52-2 52-1 4-74 33-23 56-198 52-1 52-1 52-1 52-1 52-1 52-1 52-1 CZRNAAO RM80 PERF EXER MACRO V04,00 14-JAN-82 15:16:58 PAGE M-2 B8 SEQ 0246 CROSS REFERENCE TABLE (CREF V04.00 ) SETUP SKIP SLASH =764 4=764 4=764 9-25 24-135 24-138 24-141 35-1 11-63 24=74 27-160 31-96 34-10 9-44 9-55 9-61 24-68 24-80 TYPDEC 4-764 24-93 TYPOCS 4=76#4 9-274 TYPNAM TYPNUM TYPOCT 4=764 4=76/4 4=764 9-30 51-1 TYPTXT 4=764 4~764 401 42-1 UPCODE WRITE 50-2# %3-18# 51-1 54-93 54-95 XXEP 364-534 35-1 9-6 52-1 42-1 55-87 53-36 g 66-1 24=103 24=106 24=114 24~130 24-131 55-164 56-226 55-166 55-178 55-183 55-189 24=95 26132 9-25# TYPBIN 264-92 24=104 9-25 52-3 51-1 35-1 6-0 43-1 4~764 52-1# 50-1 38-4 49-1 35-1 é-0 42-1 SWRSU TRMTRP 37-4 48-1 34-31 6-0 41-1 5-8 40-1 35-1 47-1 22-1 45-1 5-8 40-1 5=5 40-1 22-3 46-1 9-19 44-1 5-8 40-1 L=764 40-1 STARS 7 6
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies