Digital PDFs
Documents
Guest
Register
Log In
AH-F965A-MC
May 1983
251 pages
Original
121MB
view
download
OCR Version
168MB
view
download
Document:
CZRJOA0 RP07 PERF EXER MAY 1983 bw
Order Number:
AH-F965A-MC
Revision:
000
Pages:
251
Original Filename:
CZRJOA0__RP07__PERF_EXER__AH-F965A-MC__MAY_1983_gray.pdf
OCR Text
PERF EXER CZRJOARO AH-F965A-MC cm;k;;::B FICHE 2 OF 2 veoe 1N usa 1983 BDBEB SEQ 0001 06:52 PAGE PAGE 1 ER DOCUMENTATION (2 RJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 us .REM @ IDENTIFICATION PRODUCT CODE: AC=F964A=-MC PRODUCT NAME: CZRJOAO PRODUCT DATE: JANUARY 1, 1983 MAINTAINER: CX DIAGNOSTIC ENGINEERING AUTHOR: MIKE LEAVITT RPO7 PERF EXER fHE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. NO RESPONSIBILITY IS ASSUMED FOR SOF TWARE ON EQUIPMENT THAT IS NOT AFFILJATED COMPANIES. THE USE SUPPLIED OR BY RELIABILITY OF DIGITAL OR ITS COPYRIGHT (C) 1983 BY DIGITAL EQUIPMENT CORPORATION THE FOLLOWING ARE TRADEMARKS OF DIGITAL EQUIPMENT CORPORATION: DIGITAL DEC PDP DECUS UNIBUS DECTAPE MASSBUS CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 2 USER DOCUMENTATION +REM 3 1. CONTENTS ABSTRACT 1.1 2. GENERAL DOCUMENT NOTES REOUIREHENTS 2. EOUIPHENT g . PRELlHINARV PROGRAMS OPERATING PROCEDURE 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.1 4.2 PARAMETERS 4.1.2 b o R 5. ' COMMAND * COMMAND * COMMAND W' COMMAND ' COMMAND 'WT* COMMAND PERFORMANCE SUMMARY TYPE OUT EXPLANATION HARD/SOFT ERROR DEFINITIONS 5.2.1 HARD ERRORS 5.2.2 SOFT ERRORS DATA CHECKING & ERROR RECOVERY 6.1 6.2 6.3 7. CHANGE DEVICE ADDRESS PERFORMANCE SUMMARY TYPEOUT 5.1 5.2 6. PROGRAM CONTROL PARAMETERS KEYBOARD COMMANDS o oF .’ TABLE DEFINITIONS CONTROLLiING THE PROGRAM N —» 4. APT ENVIRONMENTAL E i NN NN = r LOADING THE PROGRAM STARTING ADDRESSES PROGRAM CONTROL SWITCH OPTIONS PASS/TEST TERMINATION 3.5.1 PASS TERMINATION 3.5.2 TEST TERMINATION RUN_TIME 3.6.1 DATA TRANSFER MODE 3.6.2 SEEK VERIFICATION MODE DUAL PORT OPERATJON XXDP, ACT11, APTI1 oo 3. DATA BUFFER COMPARISON VERIFICATION OF DATA WRITTEN BAD ADDRESS FLAGGING ERROR MESSAGES SEQ@ 0002 CZRJOAD RPO7 PERF EXER MACRO V04.00 1=-JAN-B3 12:06:52 PAGE 2-1 USER DOCUMENTATION 7.1 7.2 8. ERROR DESCRIPTION LINES DETAIL ERROR LINES PROGRAM DESCRIPTION 8.1 8.% 8.5 8.4 HOW THE PROGRAM OPERATES DUAL PORT OPERATION SELECTION OF OPERATION VARIABLES DATA PATTERNS 9. RP SOFTWARE DRIVER DOCUMENT SEQ 0003 LN CZRJOAQ RPO7 PERF EXER MACRO VO04.00 1-JAN-83 12:06:52 PAGE 3 g SEQ 0004 USER DOCUMENTATION o -ABSTRACT THE RPO7 PERFORMANCE EXERCISER PROGRAM IS DESIGNED TO PERFORM AN INTERACTIVE TEST ON RP DISK DRIVES CONNECTED Tg 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 CONNECTED AS EITHER SINGLE OR DUAL PORT UNITS. DUAL 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 PORT DRIVES. TO OBTAIN INTERACTIVE TESTING, OPERATIONS ON THE MULTI-DRIVE CONF IGURATIONS ARE OVERLAPPED (OTHER DRIVES ARE PERFORMING SEEK/SEARCH OPERATIONS WHILE ONE DRIVE IS PERFORMING A DATA TRANSFER). OPERATIONS AMONG THE DRIVES ARE OPTIMIZED SO THAT A HIGH SUBSYSTEM DATA TRANSFER RATE OR A HIGH POSITIONING OPERATION RATE IS MAINTAINED. THE PERFORMANCE OF EACH DRIVE IS MONITORED BY THE PROGRAM. IF A DRIVE EXCEEDS A PRESET NUMBER OF ERRORS IN ANY OF SEVERAL CATEGORIES, THAT DRIVE IS AUTOMATICALLY DEASSIGNED. (THE OPERATOR MAY OVERRIDE THE AUTOMATIC DEASSIGNMENT FEATURE.) THE PROGRAM REPORTS PERFORMANCE STATISTICS FOR EACH DRIVE BEING EXERCISED ON REQUEST FROM THE OPERATOR OR AUTOMATICALLY AT AN INTERVAL DETERMINED BY THE OPERATOR. ALL DATA TRANSFER COMMANDS EXCEPT WRITE HEADER & DATA AND WRITE CHECK HEADER & DATA ARZ USED. RECALIBRATE AND READ=-IN PRESET COMMANDS ARE USED AT STARTUP AND DRIVE INITIALIZATION. RECALIBRATE, OFFSET, AND RETURN=TO-CENTERLINE COMMANDS ARE USED DURING ERROR RECOVERY. THE DATA TRANSFER COMMANDS ARE SELECTED RANDOMLY EXCEPT FOR THE WRITE CHECK COMMANDS. THE WRITE CHECK COMMANDS ARE USED TO VER IFY A PREVIOUS WRITE OPERATION. THUS, WHEN A WRITE COMMAND IS SELE CTED, zg&nga;A WRITTEN IS VERIFIED BY THE APPROPRIATE WRITE CHECK DEPENDING UPON WHETHER THE PROGRAM HAS SEEN LOADED VIA APT AUTOMATIC MODE OR APT DUMP MODE WILL DETERMINE WHETHER; PROGRAM/OPERATOR COMMUNICATIONS ARE THROUGH THE KEYBOARD, DYNAMIC PROGRAM OPTIONS ARE SELECTED VIA SWITCH REGISTER SETTINGS AND ERRORS ARE REPORTED ON THE CONSOLE TERMINAL. 1.1 GENERAL DOCUMENT NOTES A. IN REFERENCE TO ALL NUMBERS IN THIS DOCUMENTION. TO INDICATE THE BASE OF A NUMBER LARGER THAN SEVEN. A PERIOD(.) WILL 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, DOUBLE PERIOD(. .) INDICATES DECIMAL AND A SINGLE PERIOD( .) %g%{fi:TES OCTAL. ALSO, ANY REFERENCES TO TIME ARE ALWAYS IN L. 4 R JOAD RPO7 PERF ENER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-1 usS 3 R DOCUMENTATION REOUIREMENTS 2.1 EQUIPMENT 58:-11 PROCESSOR KWil=L OR KU11-P CLOCK PROGRAM LOADING DEVICE TERMINAL RH11 OR RH70 CONTROLLER 1 70 8 DISK DRIVES (RPO7'S) 2.2 MEDIA THE PERFORMANCE EXERC!SER PROGRAM REQUIRES FORMATTED DI:K PACKS GENERATED BY THE RPQ? FORMATTER PROGRAM (ISSFMT). THE _PACKS MUST BE FORMATTED IN 32 SECTOR (16 BIT) MODE: THE ALTERNATE (30. SECTOR = 18 BIT) MODE IS NOT SUPFORTTED 2.3 PRELIMINARY PROGRAMS RPO7 FRONT=-END TEST RPO7 FUNCTIONAL TEST OPERATING PROCEDURE 3.1 LOADING THE PROGRAM THE PROGRAM MAY BE LOADED BY EITHER OF THE FOLLOWING MEDIA: .PAPER TAPE, USING THE STANDARD PAPER TAPE PROCEDURE .XXDP MEDIA, USING ANY XXDP DEVICE 3.2 STARTING ADDRESSES 200 = START ADDRESS, ALL SWITCHES CLEAR (SEE SECTION 3.4) WHEN THE PROGRAM IS STARTED, A DATA PATTERN WILL BE WRITTEN TO ALL ON-LINE DRIVES IN A SEQUENTIAL SEEK MODE. UPON COMPLETION OF THE WRITE, THE PROGRAM GOES INTO A TESTING MODE. 204 - RESTART ADDRESS, THE RESTART ADDRESS PROVIDES THE OPERATOR WITH E ABILITY TO CHANGE THE DEFAULT RP/RH ADDRESSES (SEE SECTION 1.2), ANY PROGRAM PARAMETERS (SEE SECTION 4.1) OR CHANGE DRIVE LIMIT PARAMETERS (SEE SECTION 4.2). 5.3 PROGRAM CONTROL SEQ 0005 SEQ 0006 CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3-2 USER DOCUMENTATION PROVIDED THE PROGRAM HAS BEEN LOADED AND STARTED VIA THE APT DUMP MODE OR THE DIAGNOSTIC IS RUNNING IN STAND ALONE PROCESSOR/DRIVE OPERATIONS ARE INITIATED AND CONTROLLED BY nEYBOARD COMMANDS AND 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 DEPENDING UPON WHETHER OR NOT THE APPROPRIATE BIT IN THE E TABLE HAS BEEN SET. 3.4 SWITCH OPTIONS IF THE PROGRAM iS BEING RUN ON A SWITCHLESS PROCESSOR THE PROGRAM WILL DETERMINE THAT THE HARDWARE SWITCH REGISTER IS NOT PRESENT AND WILL USE A "SOFTWARE' SWITCH REGISTER. THE 'SOFTWARE' SWITCH REGISTER IS LOCATED AT LOCATION 176 . THE SETTINGS OF THE °'SOF TWARE' SWITCHES ARE CONTROLLED THROUGH A KEYBOARD ROUTINE WHICH IS CALLED BY TYPING A 'CONTROL G'. THE PROGRAM WILL RECOGNIZE THE °‘CONTROL G' AT ANY TIME EXCEPT WHEN THE PROGRAM IS IN KEYBOARD ENTRY MODE, OR IS AT A HIGHER PRIORITY PROCESSING AN DRIVE INTERRUPT. THE ‘SOF TWARE' SWITCH VALUES ARE ENTERED AS AN OCTAL NUMBER IN RESPONSE TO THE PROMPT FROM THE SWITCH ENTRY ROUTINE: 'SWR = NNNNNN NEW =' EACH TIME SWITCH SETTINGS ARE ENTERED, THE ENTIRE SWITCH REGISTER IMAGE MUST BE ENTERED. LEADING ZEROS ARE NOT REQUIRED. ‘RUBOUT' 23?7250g£?2$ U* FUNCTIONS MAY BE USED TO CORRECT TYPING 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>=1 SW<09> SW<08>=1 SW<07>=1 SW<06>=1 SW<05>=1 SW<04>=1 Sw<03>=1 HALT ON ERROR NOT USED INMISIT ERROR TYPEOUT NOT USED NOT USED BELL CN ERROR CHANGE END OF PASS TO 1/4 OF NORMAL NOT US ; INHIBIT END OF PASS MESSAGES DISPLAY ALL DATA COMPARE ERRORS DO NOT ALTER THE CURRENT OPERATION PARAMETERS PARTIAL REGISTER DISPLAY IF ERROR; DO NOT DISPLAY ECC CORRECTION RESULTS INHIBIT MAXIMUM ERR OR COUNT CHECK; DO NOT DEASSIGN DRIVES WHEN END OF TEST IS REACHED DISPLAY THE SECTOR IN ERROR (BEFORE RETRY ATTEMPTS) IF 'DCK', 'DTE', OR HCF' ERRORS OR AFTER THE 28TH RETRY IF UNCORRECTABLE ' ; 6; ga;?faonPARE ERRORS t Su<0 > SET. DISPLAY REST SW<02>=1 INHIBIT SUBSYSTEM STATUS TYPEOUT DURING STARTUP CZRJOAQ RPO7 PERF EXER MACRO Vv04.00 1-JAN-83 12:06:52 PAGE 3-3 SEQ@ 0007 USER DOCUMENTATION INHIBIT PERFORMANCE REPORT AFTER SPECIFIED TIME PROMPT °‘WRITE ANYWHERE' QUESTION DURING AUTO TEST MODE SW<01>=1 INHIBIT DATA COMPARE AFTER READ COMMAND, W/0 ERROR SwW<00>=1 3.5 READ ONLY MODE PASS/TEST TERMINATION 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. THE SOFT ERROR SPECIFICATION FOR THE RP DRIVE IS NO MORE THAN 1 ERROR (NON=DISK RELATED) IN 1 X 10*10 BITS READ. FOR THE 90% CONFIDENCE LEVEL) THE SEEK ERROR SPECIFICATION FOR THE RP DRIVE ERROR IN LEVEL) 1 X 10%6 SEEKS. IS NO MORE THAN 1 SEEK (SEE SECTION 3.5.1 FOR THE 90% CONFIDENCE A PASS IN ‘W' OR 'R' COMMAND MODE IS DETERHINED DISK ADDRESS LIMITS SETUP BY THE OPERATO 3.5.1 _SOFT (SEE SECTION 3.5.1 BY THE MAXIMUM PASS TERMINATION END OF PASS FOR A SINGLE DRIVE IN THE RANDOM °'T' COMMAND MODE OR ESSg??}ézg 'T* A. COMMAND MODE, IF PARAMETER HAS READ THE END 'ENDING' IS DETERMINED BY ONE OF THE FOLLOWING IS 1, END OF PASS OCCURS WHEN THE onws 4.128 X 109 BITS (2.58 X 108 WORDS). IF SW09=1 OF PASS OCCURS WHEN THE Dnxve HAS READ 1.032 X 1049 BITS (.645 X 10*8 WORDS). B. IF PARAMETER 'ENDING' IS O, END OF PASS OCCURS WHEN THE DRIVE HAS PERFORMED 1 X 10%6 SEEKS. END OF PASS FOR A SINGLE DRIVE IN DETERMINED AS FOLLOWS. A. WHEN A ‘W' OR °'R' COMMAND MODE, SEQUENTIAL SEEK IS MADE BEYOND THE MAXIMUM D I gK ADDRESS LIMITS SET BY THE OPERATOR, THE PASS IS CONSIDERED E NDED. TEST TERMINATION > IF SW04 IS CLEAR(O), THE TEST FOR A DRIVE IS TERMINATED WHEN: Mo~ 3.5.2 IS THE DRIVE HAS COMPLETED THE NUMBER OF PASSES SPECIFIED IN PARAMETER °'PASSES'. IHE TOTAL ERRORS ACCUMULATED EXCEED 25. . A FATAL ERROR OCCURS: EM12 OR EM14. OPERATOR DEASSIGNS THE DRIVE THE NUMBER OF PASSES SPECIFIED BY THE MONITOR HAVE BEEN REACHED, WHEN RUNNING IN °*XXDP' CHAIN MODE, ‘'ACT11°' CHAIN MODE OR ‘APT' SCRIPT MODE (ANY AUTO MODE). e CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3-4 USER DOCUMENTATION 3.6 SEQ 0008 RUN TIME THE EXERCISER PROGRAM MAY BE RUN IN TWO MODES. (SEE SECTI THE PROGRAM RUN TIME VARIES GREATLY DEPENDING ON THE OPERATION MODE SELECTED, THE READ/WRITE RATIO PARAMETER ('RATIO'), SWR SWITCHES 0, 1, AND 2. 3.6.1 DATA TRANSFER MODE (DEFAULT) ONE DRIVE = APPROX. 45 MIN. 3.6.2 (TO REACH &.128 x 109 BITS (2.58 X 108 WORDS) SEEK VERIFICATION MODE PARAMETER 'MAX WRD CNT' = 256. PARAMETER 'MAX TRK' PARAMETER 'MAX SEC' SW<01> =1 SW<OC> =1 = = 'MIN TRK' 'MIN SEC' (1 (NO DATA COMPARE) (READ ONLY MODE) SECTOR) (SAME VALUES) (SAME VALUES) ONE DRIVE = APPROX. 4.0 HRS (TO REACH 1 X 10*6 SEEKS) 3.7 DUAL PORT OPERATION A. B. C. 3.8 LOAD THE PERFORMANCE EXERCISER PROGRAM INTO BOTH PROCESSORS. SWITCH THE °'CONTROLLER SELECT' WHICH IS TO BE SWITCH TO ‘'A/B' ON EACH DRIVE 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 RPO7 IS THE XXC? LOADING DEVICE. AUTOMATIC MODE OR CHAIN MODE 1. THE _BUS ADDRESS AND CONTROLLER INTERRUPT VECTOR ARE 176700 AND 254 RESPECTIVELY. DUMP MODE 1. 3.9 (MONITOR) DEFAULTED TO (NO MONITOR) INPUT DIALOGUE PROMPTED 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*': CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-5 SEQ 0009 USER DOCUMENTATION 1. SOFTWARE ENVIRONMENT: 1 IF APT SCRIPT MODE 0IF STANDLONE MODE 2. ENVIRONMENT MODE: " BIT 7 = 1 = 0 ETABLE DOES SIZING PROGRAM DOES SIZING BiT 6 = 1 =0 SPOOL MESSAGES TO APT [F SCRIPT MODE DON'T SPOOL TO APT BIT 5 = 1 = 0 SUPPRESS TTY CONSOLE OUTPUT ALLOW TTY CONSOLE OuUTPUT BIT 4 TO BIT 0 ARE NOT USED 3. SWITCH 1 (SOFTWARE SWITCH REG IF _ENVIRONMENT MODE BIT 7 (SI THE SOF TWARE SWITCH REGISTER OF THE HARDWARE TTY CONSOLE S 4. SWITCH 2 (USER SWITCH REGISTE NOT USED 5. CPU OPTIONS 6. MEMORY TYPES 1-4 AND MAX MEMORY ADDRESSES 7. INTERRUPT VECTOR 1: 8. BUS PRIORITY 1: 9. INTERRUPT VECTOR 2: NOT USED NOT USED USED WHEN ENVIRONMENT MODE BIT 7 1;DEFAULT = 256 NOT USED. NOT USED 10. BUS PRIORITY 2: NOT USED 11. BASE ADDRESS: USED WHEN ENVIRONMENT MODE BIT 7 12. DEVICE MAP: NOT USED 13. CONTROLLER DESCRIPTOR WORDS: NOT USED 14. CONTROLLER DESCRIPTOR WORDS: NOT USED 1;DEFAULT = 176700 CZRJOAQD RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-6 SEQ 0010 USER DOCUMENTATION CONTROLLING THE PROGRAM THE FOLLOWING KEVBOARD CONVENTIONS ARE USED BY THE KEYBOARD ENTRY ROUTINES IN THE PROGRA A. TO DELETE AN lNCORRECT CHARACTER FROM AN ENTRY STRING, TYPE A ;:ggog;e IN;S%NG A RUBOUT WILL DELETE SUCESSIVE CHARACTERS B. TO DELETE AN ENTIRE LINE, TYPE A "CONTROL U' C. AN ENTRY MUST BE TERMINATED BY EITHER A 'CARRIAGE RETURN' GR A 'PERIOD'. THE 'PERIOD' TERMINATION IS RECOGNIZED BY THE PROGRAN AS A DEFAULT ENTRY REQUEST. BY A 'PERIOD' (*U). WHEN A LINE IS TERMINATED INSTEAD OF A 'CARRIAGE RETURN', THE PROGRAM WILL ACCEPT THE ENTERED VALUE AND WILL DEFAULT TO'THE PRELOADED VALUES FOR ANY REMAINING ENTRIES. D. IF A 'CONTROL C' IS TYPED DURING ORIVE TESTING MODE, THE PROGRAM WILL ENTER THE COMMAND MODE. IF A 'CONTROL C' IS TYPED DURING 'ENTER COMMAND' SEQUENCE, w!TH NO DRIVES ASSIGNED, THE PRIGRAM WILL BE RESTARTED AT LOCATION 204 . OTHERWISE, RETURN TO 'ENTER COMMAND' THE PROGRAM WILL PROMPT AND WAIT FOR A CORRECT SEQUENCE OF CHARACTERS. IF °"CONTROL C' IS TYPED DURING ANY OTHER ENTRY SEQUENCE, THE PROGRAM WILL RETURN TO THE BEGINNING OF THE GROUP SEQUENCE ‘BEING ENTERED. 4.1 PARAME TERS THE FOLLOWING QUESTIONS ARE ASKED 10 DETERMINE HOW THE RPO7 WILL BE TESTED. THE DEFAULT AS DOCUMENTED HERE. ANSWERS TO 'THE HELP MESSAGE CAN ONLY BE DO YOU WANT IT TYPEP (L) ? THESE QUESTIONS ARE ALWAYS TYPED ONCE, A 'Y' RESPONSE WILL TYPE A SUMMARY OF THE SWITCH REGISTER DEFINITIONS, ALONG WITH ALL THE COMMANDS AVAILABLE TO THE USER. A °'N' RESPONSE WILL NOT TYPE ANY HELP MESSAGE AND THE NEXT PROMPT WILL BE TYPED. IF _RUNNING THE MANUFACTURES VERSION OF THIS PROGRAM, THE FOLLOWING QUESTION WILL ASKED. OTHERWISE, CONTINUE TO THE NEXT PROMPT. ‘DO YOU WANT 132. CHARACTER ERROR MODE (L) Y ? A 'Y' RESPONSE WILL ALLOW THE 132. CHARACTER ERROR MESSAGES TO BE TYPED TO THE OUTPUT DEVICE WHEN AN ERROR OCCURS. A °'N' RESPONSE WILL OUTPUT THE NORMAL LONG ERROR TYPE MESSAGES TO THE OUTPUT DEVICE. THE 132. CHARACTER ERROR MODE, lS A 132. CHARACTER STRING, WHICH IS SEPERATED INTO COLUMNS OF DATA FOR THE ERROR REPORT. THIS FORM OF ERROR REPORTING HELPS MANUFACTURING leD DIFFERENT TYPES OF ERRORS MORE SEQ 001 CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-7 USER DOCUMENTATION EASILY. THE USER CAN SCAN SCAN DOWN A COLUMN, INSTEAD OF LOOKING THRU THE TYPICAL LONG ERROR REPORT. THE ONE DISADVANTAGE OF THE 132. CHARACTER REPORT, IS THE AMOUNT OF ERROR DATA WHICH CAN BE REPORTED TO THE USER. THE FOLLOWING QUESTION AND WARNING MESSAGE FIELD VERSION OF THIS DIAGNOSTIC. ONLY APPEAR IN THE 'DO YOU WANT TO WRITE ANYWHERE ON MEDIA (L) N ?° A 'N' ANSWER WILL PROCEED WITH TESTING ONLY THE FE CYLINDER AND SKIP THE FOLLOWING QUESTION, A ‘'Y' ANSWER WILL PROCEED TO NEXT WARNING MESSAGE AMD QUESTION. IF THE PROGRAM IS IN "READ ONLY' MODE (Sw0=1), THE WARNING MESSAGE WILL BE OMITTED BUT THE QUESTION WILL BE ASKED. *! CUSTOMER DATA WILL BE OVERHRITTEN : CONTINUE (L) ?° A 'Y' ANSWER WILL PROCEED WITH TESTING THE ENTIRE DISK. ANSWER WILL PROCEED WITH TESTING ONLY THE FE CYLINDER. A °N' IF ONLY THE FE CYLINDER IS TO BE TESTED, THE FOLLOWING MESSAGE WILL BE FRINTED. ' TESTING WILL OCCUR OM FE CYLINDER ONLY +' AT THIS POINT, IF THE PROGRAM IS LOCKED IN '‘READ ONLY'' MODE, THE FOLLOWING MESSAGE WILL BE TYPED. IF THE PROGRAM IS NOT LOCKED IN “'READ ONLY'' MODE, THE FOLLOWING MESSAGE WILL BE OMITTED. ** PROGRAM IS 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 ?° IF _THE ENTRY IS A 'N' FOLLOWED BY A CARRIAGE RETURN OR JUST A CARRIAGE RETURN (DEFAULT), THE PROGRAM WILL NOT ALLOW ANY PARAMETERS TO CHANGED AND WILL CONTINUE. IF THE ENTRY IS A 'Y' ¥OLLOWED BY CARRIAGE RETURN, THE OPERATOR WILL BE ALLOWED YO (HANGE THE PROGRAM PARAMETERS. THE PROGRAM WILL IDENTIFY THE PARAMETER BY THE NAME GIVEN BELOW, DISPLAY THE CURRENT VALUE OF THE PARAMETER AND WAIT FOR THE ENTRY. T HE PROGRAM WILL TYPE 'INVALID ENTRY® IF THE ENTRY IS NOT CORRECT AND WA I FOR A CORRECT ENTRY TO BE TYPED. (SEE SECTION 4.1.1) IF THIS IS THE PROGRAM'S FIRST START, THE STATUS OF THE DRIVES ON THE SELECTED MASSBUS SUBSYSTEM WILL BE PRINTED. ON ALL SUBSEQUENT STARTS, THIS TYPEOUT MAY BE INHIBITED BY SETTING SW<02> =1. SEQ 0012 CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-B83 12:06:52 PAGE 3-8 USER DCCUMENTATION THE FOLLOWING IS AN EXAMPLE DRIVE STATUS PRINTOUT: NOWVES NN =O 'DRIVE STATUS: ONL INE_RPQ7 LOAD DEVICE OFFLINE RPO7 ONL INE_RPO7 NON=INTERLEAVED NOT PRESENT NOT AN RPO7 NOT PRESENT NOT PRESENT' THE ABOVE DRIVE STATUS SHOWS THAT DRIVE 0 WILL BE 1 = 7 WILL NOT BE TESTED. &,1.1 TESTED, WHILE DRIVES KEYBOARD ENTRY PARAMETERS QUESTION # 1 BASE 10. DEFAULT VALUE 8192. (SEE NOTE) VALUE RANGE 6 - 819%. 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 8192.(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 8192. WORDS OR MEMORY AVAILABLE. (WHICH EVER VALUE IS SMALLER) 2 10. 0 0 - 32767. DETERMINES THE INTERVAL (IN MINUTES) BETWEEN AUTOMATIC PERFORMANCE REFORT TYPEOQUTS; NO TYPEOQUT IF THIS PARAMETER IS 0 OR IF Sw<02> =1 3 10. 15. 0 - 32767. DETERMINES THE INTERVAL (IN MINUTES) BETWEEN DATA COMPARES TO MEMORY AFTER A READ DATA COMMAND. ALWAYS DO COMPARE IF THIS PARAMETER IS 0. IF SW01 =1, THEN NO DATA COMPARES WILL BE GRANTED,UNLESS A ‘DCK' ERROR OCCURS. 4 10, 1 1 - 32767, NUMBER OF PASSES TO END OF TEST. (THIS PARAMETER IS NOT USED WHEN THE PROGRAM |S e B CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-9 USER DOCUMENTATION SEQ 0013 OPERATING IN AUTO RUN MODE) 5 10, 0 0 - 15. I PARAMETER=0,DATA PATTERN IS RANDOMLY SELE TED. IF PARAMETER>0,SPECIFIES ONE OF THE 15. PATTERNS. THE SELECTED DATA PATIERN 1S POINTED BY THE PARAMETER “PATTERN"'., [ “ 000000 0 OR 1 (SEE SECTION 8.4) IF PARAMETER = 0, THE WORD COUNT 1S RANDOMLY SELECTED BETWEEN 6 AND THE VALUE "WRDCNT® (MAX unn CNT). IF PARAMETER = 1, THE WORD COUNT WILL BE rné VALUE "WRDCNT® (MAX WRD CNT). : 7 8 000002 0 -7 CONTROLS THE APPROXIMATE RATIO OF READ 10 WRITE COMMANDS . VALUE 0 1 5 8 000001 0 OR 1 15/1 71 2 3 6/2 5/3 5 6 7 3/5 2/6 17 4 ¥ . R/W_RATIO 4/4 IF_PARAMETER = 1, END OF PASS DETERMNED BY THE *WORDS READ' & 0 OR 1 EQ DO AN APPROPRIATE 1 3 CHE(K AFTER EACH WRITE M AND. IF EQ O, SELECT WRI TE . K COMMAND RANDOMLY 000000 0 OR 1 M 10 000001 - 8 MNOOE~— TODTM MBe- 9 et C O —‘D"(fl)*‘ O IF PARAMETER = 0, END OF PASS l? gEEEQ"'"ED BY THE NUMBER ARAMETER=0,RANDULM s BLOCK ADDRESS IS P IN 'T* COHHAND ARAMETER=1,SEQUENTIAL A BLOCK IS USED IN (OMMAND . 4.1.2 (HANGE DEVICE P ADDRFSS THE RP/RH ADDRESS AND VECTOR MAY BE CHANGED WHEN THE PROGRAM [S STARTED AT ADDRESS 20& OR IF THE PROGRAM DOES NOT RESPONSE WHEN [T ACCESSES THE DEFAULT RP/RH ADDRESS. RECEIVE A B CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-10 USER DOCUMENTATION 2 SEQ 0014 (DEFAULT ADDRESS = 176700, VECTOR = 254) ADDRESS SELECTION EXAMPLES EXAMPLE 1 RPCS1=176700 <CR> RPVEC=000254 <CR> sNO CHANGE IN ADDRESS sNO CHANGE IN ADDRESS EXAMPLE 2 RPCS1=176700 172400<CR> ;CHANGE BASE ADDRESS T0 172400 RPVEC=000254 224<(R> : CHANGE VECTOR ADDRESS TO 224 4.2 KEYBOARD CCMMANDS THROUGH THE KEYBOARD COMMANDS, THt OPERATOR MAY ASSIGN DRIVES FOR TEST ('T' COMMAND), WRITE SEQUENTIAL DATA SUMMARY ('S' COMMAND), OR DEASSIGN A DRIVE ('W' COMMAND), PERFORM A SEQUENTIAL READ ('R* COMMAND), PERFORM WRITE DATA AND FOLLOWED BY TEST ('Wi' COMMAND ), REQUEST A DRIVE PERFORMANCE THE 'T', ‘W', "R' AND ‘WT' ('D' COMMAND). COMMANDS ARE EXCLUSIVE TO ONE ANOTHER ON THE SAME DRIVE UNDER TEST. THEZ 'D' COMMAND MUST BE ENTERED IN ORDER TO ISSUE A DIFFERENT COMMAND TO THE SAME DRIVE UNDER TEST. EXCEPT FOR THE 'S' COMMAND, WHICH CAN BE ENTERED AT ANY TIME DURING THE TEST. IF THTM PROGRAM WAS STARTED AT ADDRESS 204 OR IF NO DRIVES ARE ASSI .sED FOR TESTING, THE FOLLOWING MESSAGE WILL BE TYPt BEFORE ENTERING THE COMMAND MODE. HOWEVER, WHILE TESTING IS IN PROGRESS, IF A 'CONTROL C' IS TYPED THE FOLLOWING MESSAGE WILL OMITTED AND THE PROGRAM WILL ENTER COMMAND MODE. BE 'NO DRIVES ASSIGNED' WHEN THE PROGRAM ENTERS THE COMMAND MODE, THE FOLLOWING PROMPT WwiLL BE TYPED: "HH:MM:SS ENTER COMMANDS:' THE PROGRAM WILL THEN ACCEPT ANY OF COMPLETION OF A COMMAND, THE VALID COMMANDS. AT THE THE PROGRAM WILL EXIT COMMAND MODE AND TRY TC ASSIGN THE DRIVE(S) THAT WERE REQUESTED. IF THE DRIVE(S) CANNOT BE ASSIGNED, ONE OF THE FOLLOWING ERROR MESSAGES WILL BE REPOTTED AND THE PROCESS CONTINUES FOR EACH DRIVE. RESPONSE ?DRIVE N LOAD DEVICE ?DRIVE N OFFLINE ?DRIVE N NOT ASSIGNED COMMAND(S) T, W, R, VT T, W, R, WT D, S us (2 R JOAO RPO7 PERF EXER MACRO Vv04.00 1-JAN-83 12:06:52 PAGE 3-11 usS 3 R DOCUMENTATION ?DRIVE ?DRIVE ?DRIVE ?DRIVE NEXT, N N N N SEQ 0015 ALREADY ASSIGNED NOT PRESENT UNSAFE NOT AN RPO7 T, T, T, T, W, W, W, W, R, R, R, R, VI WT WI WT THE PROGRAM WILL PROCESS ALL THE ASSIGNED DRIVES AS FOLLOWS: WHEN THE PROGRAM IS ASSIGNING THE DRIVES, THE OPERATOR HILL BE ASKED TO CHANGE THE DRIVE PARAMETERS WITH THE FOLLOWING PROMPT: 'CHANGE DRIVE PARAMETERS (L) N ?' IF_THE ENTRY IS A 'N' FOLLOWED BY A CARRIAGE RETURN OR JUST A CARRIAGE RETURN (DEFAULT), THE PROGRAM WILL NOT ALLOW ANY DRIVE PARAMETERS TO 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 TELL THE OPERATOR WHICH DRIVE IS BEING REFERENCED FOR CHANGES AND THE HARD WIREC DRV SERIAL NUMBER FORMAT: 'DRIVE # N, PGXXXX. ADDRESS LIMITS;' WHERE °*XXXY' THE RPSN IS THE HARD WIRED REGISTER OF THE MBA. JUMPERED IN THE RPSN REGISTER, THE PROGRAM WILL REQUEST PARAMETERS. DEFAULT NAME MIN MAX MIN MAX MIN MAX IF 'XXXX' WILL APPEAR AS VALUES FOR * *+ 0 0 0 0 - NUHBER '??? lS NOT THE FOLLOWING ADDRESS | IMIT RANGE b 630. 0 31, 0 49. NUMBER CONTAINED IN THE DRV SERIAL VALUE VALUE CYL CYL TRK TRK SEC SEC DECIMAL SERIAL FUNCTICN 630. 630, 31. 3. 49. 49. THE THE THE THE THE THE MINIMUM MAXIMUM MINIMUM MAXIMUM MINIMUM MAXIMUM CYLINDER ADDRESS CYLINDER ADDRESS TRACK ADDRESS TRACK ADDRESS SECTOR ADDRESS SECTOR ADDRESS * IF RUNNING THE FIELD VERSION OF THIS PROGRAM AND YESYING OCCURS ONLY ON THE FE CLYINDER, THIS VALUE WILL BE 630. IF RUNNING THE MANUFACTURES VERSION OR THE FIELD VERSION OF THIS PROGRAM AND TESTING IS ANYWHERE ON THE MEDIA, THIS VALUE WILL BE 0. 6.2 'T' COMMAND USED TO ASSIGN A DRIVE(S) FOR A TEST. THIS COMMAND IS REQUIRED TO PERFORM THE FORMAT: TEST OF THE DRIVE(S). TN<CR> = DRIVE NUMBER. MAY BE 0 TO 7 OR "A'., TERMINIATED BY A CARRIAGE RETURN <CR>, ENTRY MUST BE CZRJOAD RPO7 PERF EXER MACRD V04.00 1-'AN-83 12:06:52 PAGE 3-12 SEQ 0016 USER DOCUMENTATION EXAMPLE: 6.2.2 TO<CR> = ASSIGN DRIVE 0 FOR TEST TACCR> = ASSIGN ALL AVAILABLE DRIVES FOR TEST 'D' COMMAND USED TO DEASSIGN A DRIVE(S) BEING EXERCISED. FORMAT: DN<CR> N = DRIVE NUMBER. MAY BE 0 TO 7 OR "A'., TERMINIATED BY A CARRIAGE RETURN <(CR>, EXAMPLE: 4£.2.3 ENTRY MUST BE DO<CR> = DEASSIGN DRIVE 0 DA<CR> = DEASSIGN ALL DRIVES BEING TESTED. 'S' COMMAND " USED TO REQUEST A PERFORMANCE SUMMARY TYPEOUT FOR THE REFERENCED DRIVE(S). AFTER THE 'S' COMMAND HAS BEEN PERFORMED, THE PROGRAM WILL AUTOMATICALLY RESUME TESTING THE DRIVE(S) WHICH WERE UNDER TEST. FORMAT: SN<CR> N = DRIVE NUMBER. MAY BE 0 TO 7 OR 'A'. TERMINIATED BY A CARRIAGE RETURN <(CR>, EXAMPLE: 6.2.4 ENTRY MUST BE SO<CR> = TYPEOUT PERFORMANCE SUMMARY FOR DRIVE 0 SA<CR> = TYPEQUT PERFORMANCE SUMMARY FOR ALL DRIVES BEIMNG TESTED. ‘W' COMMAND USED TO PERFORM A SEQUENTIAL WRITE OF 10 THE PERFORMANCE EXERCISER PROGRAM, THE DISK, WITH DATA ACCEPTABLE FORMAT: WN<CR> N = DRIVE NUMBER. MAY BE 0 TO 7 OR "A'. TERMINATED BY A CARRIAGE RETURN <(CR>, EXAMPLE: 6.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 0 TO 7 OR 'A'. TERMINATED BY A CARRIAGE RETURN <(R>, EXAMPLE: 6.2.6 ENTRY MUST BE RO<CR> = READ THE DATA ON DRIVE O. RA<CR> = READ THE DATA CON ALL AVAILABLE ‘WT* COMMAND DRIVES. CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-13 SEQ 0017 USER DOCUMENTATION USED TO PERFORM A SEQUENTIAL WRITE DATA, FOLLOWED BY A 'T' (OMMAND, FORMAT: WTN<CR> = DRIVE NUMBER 0 TO 7 NR ''A'". ENTRY MUST BE TERMINATED BY A CARRIAGE RETURN <(CR>, EXAMPLE: WTO<CR> = WRITE A DATA PATTERN AND TEST DR IVE 0 WTA<CR> = WRITE A DATA PATTERN AND TEST AL L DRIVES P[!fORHANCE SUHHARY TYPEOUT 5.1 THE PROGRAM WILL DISPLAY A PE RFORMANCE REPORT FOR THE BEING EXERCISED. DR IVES THIS REPORT 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 REPORT TYPEOUT CONTAINS THE FOLLOWING FIELDS: 'TIME'® ‘DRIVE' 'DRV _S/N' 'PASS’* ELAPSED TIME OF PROGRAM DRIVE NUMBER - DRIVE TYPE HARD WIRED MASSBUS ADAPTER SERIAL NUMBER(RMSN) PRESENT PASS COUNT FOR THE DRIVE 'WRLS WRITN /' ' PASS' ' TOTAL' 'WRDS READ /°* ' PASS' :Sgglg%. NUMBER OF WORDS READ EACH PASS BY THE DRIVE TOTAL NUMBER OF WORDS (X10*6) READ BY THE DRIVE ' PASS' NUMBER OF SEEK OPERATIONS EACH PASS BY THE DRIVE 'SOFT* NUMBER OF SOFT DATA ERRORS 'Skl NUMBER OF * TOTAL' 'HARD' TOTAL NUMBER OF 'SK1' ERRORS NUMBER OF PROGRAM DETECTED POSITIONING ERRORS 'OTHER' TOTAL ERRORS OF OTHER TYPES ERRORS EM1, EM2, EM3, EM4, EMS, & EM10 ARE NOT INCLUDED IN THE "OTHER' ERROR TOTAL. 5.2 SOF T/HARD ERROR DEFINITIONS 5.2.1 HARD ERRORS A. SEEK OPERATIONS BY THE DRIVE NUMBER OF HARD DATA ERRORS ‘MISP* NOTE: NUMBER OF WORDS WRITTEN EACH PASS BY THE DRIVE p TOTAL NUMBER OF WORDS (X10%6) WRITTEN BY THE DRIVE A 'DTE' (DRIVE TIMING ERROR) OR A 'DCK' (DATA CHECK ERROR) WHICH OCCURS DURING A READ DATA OR A READ HEADER & DATA OPERATION AND IS NOT CORRECTABLE OR DOES NOT BECOME CORRECTABLE AFTER THE PROGRAM HAS PERFORMED THE COMPLE TE RETRY SEQUENCE ON THE BAD SECTOR. THE RETRY SEQUENCE IS 16. RE-READS AT TRACK CENTER AND 2 ATTEMPTS C CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12: 06 52 PAGE 3=14 USER DOCUMENTATION SEQ 0018 BOTH AT POSITIVE AND NEGAYIVE OFFSETS. SOFT ERRORS tCC CORRECT C. HEADER READ D. ‘'DTE' ERROR 'DCK' & 'Ea cC C CO CORRECTABLE DURING RING RETRY URING Q DATA, OR HEA E D HEADER >»0om A. B. ngCH BECOME ECC CORRECTABLE Z” 5.2.2 C 6.1 DATA COMPARISON DATA COMPARISON OCCURS AFTER EACH "RDDAT' (READ HEADER AND DATA) OPERATION UNDER THE 6.2 (READ DATA) OR °'RDHD' 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. VERIFICATION OF DATA WRITTEN DATA VERIFICATION IS DONE EITHER THROUGH READING THE DATA BACK 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 ACCOMPLISHED BY THE RPO7 HARDWARE SKIP DEFECT. 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. ERROR MESSAGES ARE MADE UP OF SEVERAL LINES. EACH TYPE OF ERROR HAS SEVERAL OPTIONAL LINCS 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 MESSAGE TAGS ARE GIVEN FOR REFERENCE.) CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 3-15 USER DOCUMENTATION TAG EmMl SEQ 0019 TEXT RH CONTROLLER INTERRUPT OCCURRED (RMAS=0) THE RH_CONTROLLER INTERRUPTED AND THE ATTENTION SUMMARY REGISTER (RMAS) WAS CLEARED. Em2 UNEXPECTED ATTENTION OCCURRED THE INDICATED DRIVE INTERRUPTED BUT THE DRIVE WAS NOT PERFORMING AN OPERATION. EM3 MA5SBUS PARITY ERROR (M(PE=1) THE RH DETECTED A CONTROL BUS PARITY ERROR WHEN READING THE INDICATED REGISTER FROM THE INDICATED DRIVE. EMé MASSBUS PARITY ERROR (PAR=1) THE INDICATED RP DETECTED A CONTROL BUS PARITY ERROR WHEN THE RH LOADED THE SPECIFIED REGISTER. EMS ADDRESS PLUG CHANGE BIT SET THE EM6 "OPE' BIT WAS SET WHEN THE INDICATED DRIVE INTERRUPTED. RH DIDN'T RESPOND TO ADDRESSING WHEN THE PROGRAM ADDRESSED THE RH, NO RESPONSE WAS RECEIVED FROM THE INDICATED ADDRESS. EM10 UNCORRECTABLE MASSBUS PARITY ERROR THE PROGRAM HAS TRIED 3 TIMES TO READ OR WRITE REGISTER. EMN THE INDICATED FATAL MASSBUS PARITY ERROR A CONTROL BUS PARITY ERROR OCCURRED WHEN THE RH ATTEMPTED TO PROCESS A PREVIOUS, DIFFERENT PARITY ERRUR. EM12 PERSISTENT DEVICE UNSAFE THE DRIVE BECAME UNSAFE; DRI VE C CLEAR TO THE DRIVE DID NOT CLEAR THE UNSAFE CONDlllg? THE PROGRAM WILL AUTOMATICALLY DEASSIGN THE D VE . THE DRIVE CANNOT BE EXERCISED UNTIL THE UNSAF 3 Co NDITION HAS BEEN CLEARED BY MANUAL INTERVENTION EM13 OPZRATION NOT COMPLETED WITHIN TIME LIMIT THE DRIVE DID NOT COMPLETE THE OPERATION WITHIN 10. AFTER THE OPERATION WAS INITIATED. EM14 UNIT WENT OFFLINE SECONDS CZRJOAD RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE USER DOCUMENTATION E 3=1 3-16 THE DRIVE WENT OFFLINE DURING THE H SEQ Q 0020 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 REZUEST 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 DATA CHECK ('DCK') ERROR A DATA CHECK ERROR WAS DE TECTE THE FULL RETRY SEQUENCE EgRSE?E SECTOR IN ERROR EM22 (INCLU IF THE INDICATED SECTOR. ET) WILL BE INITIATED ERROR ('ECH) BIT WRITE CHECK ERROR = DATA CHECK ('DCK') SET 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 RETRJED UP TO 16. TIMES. EM23 WRITE CHECK ERROR = DATA CHECK ('DCK') NOT SET A WRITE CHECK ERROR OCCURRED AND °'DCK' WAS NOT SET. THE 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 CHECX 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. BE RETRIED 3 TIMES. EM25 THE OPERATION WILL HEADER READ ERROR = HEADER COMPARE (°'HCE') ERROR SIMILAR TO EM24, EXCEPT THAT THE 'HCE® ERROR BIT WAS SET INITIALLY. THE OPERATION WILL BE RETRIED 3 TIMES. EM26 FORMAT ERROR ('FER') FORMAT ERROR OCCURRED. WHEN THE HEADER WAS RE-READ, THE 'HCRC® BIT WAS NOT SET. THE CONTENTS OF THE HEADER ARE DISPLAYED. EM27 THE OPERATION WILL BE RETRIED 3 TIMES. HEADER COMPARE ('HCE') ERROR i CIZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3-17 2 SEQ 0021 USER DOCUMENTATION SIMILAR TO EM26 EXCEPT THAT THE 'HCE' BIT WAS SET INITIALLY. THE OPERATION WILL BE RETRIEF 35 TIMES. EM30 MISCELLANEOUS DRIVE FPPsA THIS MESSIGE 'ADE', EM31 'ILF', OR "ILR OPERATION INCOMPLETE ('OPI') ERROR ggc?SSRATION EM32 IS GIVEN FOR YHE ,FOLLOWING ERROR BITS: °'AMR', “wLumrLETE ERROR OCCURRED AT THE INDICATED DRIVE TIMING ('DTE') ERROR DRIVE TIMING ERRIR 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 ¢LOCK FAILURE ('WCF*) A WRITE CLOCK FAILURE OCCURRED DURING THE OPERATION. OPERATILN WILL BE RETRIED 3 TIMES. EM35 THE THE INVALID ALDRESS ('IAE') ERROR AN INVALID AODRESS ERROR OCCURRED DURING THE OPERATION. EM36 WRITE LOCK ('W.E') ERROR tog:égi OPERATION WAS ATTEMPTED BUT THE DRIVE WAS WRITE EMLO RH CONTROLLER OR UNIBUS TRANSFER ERROR 'TRE' IS SET IN THE RH CONTROL REGISTER AND NO DRIVE ERROR HAS OCCURRED. THE OPERATION WILL BE RETRIED 3 TIMES IF THE ERROR WAS CAUSED BY °'DLT', OR 'MDPE". EM&T UPE', 'MXF', BUS ADDRESS OR WORD COUNT INCORRECT NO DRIVE ERROR OCCURRED BUT EITHER THE BUS ADDRESS INDICATES THAT AN INCORRECT NUMBER OF WORDS WERE TRANSFERED OR THE WORD COUNT REGISTER IS NOT ZERO. EM&2 DATA COMPARE ERRORS = NO DRIVE ERROR DETECTED NO SUBSYSTEM ERROR WAS SIGNALED; HOWEVER, THE DATA DOES NCT COMPARE. EML3 CAN'T MATCH DATA READ WITH A PATTERN CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B83 12:06:52 PAGE 3-18 SEQ 0022 USER DOCUMENTATION THE DATA IN THE BUFFER DOES NOT MATCH ANY OF PATTERNS. EM&LS THE STANDARD 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 RP SET OR ERROR BITS IN THE RH CONTROLLER SET. EM4S ECC LOGIC FAILURE DURING °*DCK' ERROR PROCESSING, THE CONTENTS OF THE ECC POSITION REGISTER (RMEC1) OR THE CONTENTS OF ECC PATTERN REGISTER (RMEC2) WERE NOT VALID. THE POSITION REGISTER WAS EITHER 0 OR_GREATER THAN 010040, OR THE PATTE3N REGISTER CONTAINED ZEROS. 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. EMS0 SEEK INCOMPLETE ERROR THE DRIVE SIGNALED EITHER °'SKI' ERROR. EM51 NOT USED EM60 DEVICE UNSAFE THE INDICATED DRIVE UNSAFE ERROR OCCURRED; CLEARED BY A "DRIVE CLEAR' 7.2 INSTRUCTION. THE ERROR WAS DETAIL ERROR LINES THE LINE NUMBERS GIVEN BELOW ARE FOR REFERENCE ONLY. LINE 1 HH:MM:SS "HH:MM:SS* IS THE TIME SINCE THE PROGRAM WAS STARTED. (HOURS, MINUTES, SECONDS) 'PRSNT COMMAND= XXXX PREV COMMAND= YYYY' MNEMONICS USED FOR THE COMMANDS ARE DEFINED BELOW: CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3-19 USER DOCUMENTATION SEEK RECAL ORVCLR RELSE_ OFFSET RTC READIN PACK SEARCH *GETREG = = = = = = <~ = = = K 2 SEQ 0023 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 ACKNOHLED?E (OCTAL 23) SEARCH (OCTAL 31) GET REGISTERS (OCTAL 41) *SETFMT - SET FORMAT (ECI OR htg) (OCTAL 43) *SELDRV WCKD WCKHD WRTDAT FMTRK RDDAT RDHD = = = = = = = SELECT DRIVE (OCTAL <5) WRITE CHECK DATA (OCTAL 51) WRITE CHECK HEADER & VATA (OCTAL 53) WRITE DATA (OCTAL 61) FORMAT TRACK (WRITE HI:ADER & DATA) (OCTAL 63) READ DATA (OCTAL_71) READ HEADER & DATA (OCTAL 73) * SPECIAL RP DRIVER COMMAND (NOT A CONTROLLER COMMAND) O (DISPLAY OF THE RH/RP REGISTERS IN TWO GROUPS: RPCS1, RPCS2, RPDS, RPER1, RPER2, RPEC1 AND RPECc FORM THE FIRST GROUP: ALL THE OTHER REGISTERS ARE IN THE SECOND ROUP. é;sgtzeg;IS SET, ONLY THE REGISTERS IN THE FIRST GROUP WILL BE THE ABOVE LINE WILL BE TYPED IF THE ERROR OCCURRED DURING THE NON-DATA TRANSFER PART OF THE OPERATION, '* ERROR AT BAD TRACK/SECTOR' THE ABOVE LINE WILL BE PRINTED IF A DATA ERROR OCCURES AT AN ADDRESS ON THE DISK WHICH THE OPERATOR HAS IDENTIFIED AS BFiING BAD. 'NOTPRT® MUST BE O FOR THE ERROR TO BE REPORTED. PARAMETER A WORD CALLED °'STATUS® IS DISPLAYED WITH THE RP REGISTERS. THE CONTENTS OF THIS WORD IDENTIFY HOW THE ERROR WAS PROCESSED BY THE RP DRIVE HANDLER ROUTINE. (SEE SECTION 9.7) ERROR AT CXXX TYY SZZ PREV ADDR= CUUU TVV Suw THE ACTUAL ADDRESS OF THE ERROR SECTOR AND THE PREVIOUS DISK ADDRESS ARE GIVEN IN THIS LINE. SECTOR ADDRESSES ARE IN DECIMAL. CYLINDER, TRACK, & LINE & PRSNT ADDR= CXXX TYY S2Z THIS LINE PREV ADDR= CUUU TVV SwWw IDENTIFIES THE ADDRESS WHEN THE ERROR WAS DE:ECTED; THE PREVIOUS ADDRESS IS ALSO GIVEN. CYLINDER, TRACK, & SECTOR (2 R JOAQ RPO7 PERF EXER MACRO v04.00 1-JAN-83 12:06:52 PAGE 3-20 us 3 R DOCUMENTATION ADDRESSES ARE GIVEN IN DECIMAL. LINE S STARI CYL= XXX END CYL= YYY THIS LINE IDENTIFIES THE STARTING CYLINDER OR A SEEK (IMPLIED) AND THE DESTINATION CYLINDER. CYLINDER ADDRESSES ARE IN DECIMAL. LINE 6 START CYL= XXX END CYL= YYY ACTUAL CyL= 222 THIS LINE IDENTIFIES THE STARTING CYLINDER OF AN IMPLIED SEEK, THE DESTINATION CYLINDER, AND THE CYLINDER THE DISK ACTUALLY STOPPED AT. CYLINDER ADDRESSES ARE IN DECIMAL. RPBA= XXXX RPW(C= YYYY 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 START TRK= YY START SECTOR= 2Z THIS LINE IDENTIFIES THE STARTING DISK ADDRESS OF THE PRESENT OPERATION. CYLINDER, TRACK, AND SECTOR VALUES ARE DECIMAL. RPDA= XXXX RPCA= YYYY THIS LINE GIVES THE CONTENTS OF THE RP TRACK AND SECTOR ADDRESS REGISTER AND THE CONTENTS OF THE DESIRED CYLINDER gg?RESS REGISTER. THIS LINE IS NOT PRINTED IF Sw<05> IS NOT LINE 10 BUFFER ADDR= XXXX WRD CNT= YYYY ACTUAL NUMBR WRDS XFRD= 2222 THIS LINE GIVES THE STARTING ADDRESS OF THE BUFFER USED FOR THE CURRENT DATA TRANSFER OPERATION, ITS SIZE(WORD COUNT), AND THE ACTUAL NUMBER OF WORD TRANSFERED. THE STARTING ADDRESS OF THE 232F§: 62(}=AECYAL. THE WORD COUNT AND WORDS TRANSFERED VALUE SEQ 0024 CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3-21 SEQ 0025 USER DOCUMENTATION LINE 1 EXPCTD DATA= XXXX RECEVD DATA= YYYY WORD POS= 211 THIS LINE GIVES THE EXPECTED DATA, THE RECIEVED DATA FROM THE DISK, AND THE LOCATION OF THE WORD IN THE SECTOR. THE WORD POSITION IS I DECIMAL. HEADER CONTENTS OF ERROR SECTOR= XXXX XXXX XXXX XXXX THIS LINE GIVES THE GAVE THE ERROR. CONTENTS OF THE HEADER OF THE SECTOR WHICH LINE 13 RPECT= XXXX RPEC2= YYYY THIS LINE WILL BE PRINTED AFTER A SUCL SSFUL RETRY OF A SECTOR WHICH BECAME ECC CORRECTABLE DURING RE LINE 14 ECC CORRECTABLE WITHOUT OFFSET THE SECTOR IN ERROR NECESSARY. IS ECC CORRECTABLE:; NO RETRY ATTEMPTS ARE LINE 15 READ CORRECTLY AT THE SECTOR (NEG OR POS) OFFSET IN ERRCR WAS READ WITHOUT ERROR AT OFFSET VALUE. THE INDICATED LINE 16 ECC CORRECTABLE AT (NEG OR POS) OFFSET B?ES§$C!OR IN ERROR BECAME ECC CORRECTABLE AT THE INDICATED LINE 17 CORRECTED ON X RETRY x?gcggERATION WAS PERFORMED ERROR FREE ON THE INDICATED RETRY CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3-22 USER DOCUMENTATION N 2 SEQ 0026 UNCORRECTABLE AFTER X RETRIES THE OPERATION COULD MNOT BE PERFORMED CORRECTLY AFTER THE INDICATED NUMBER OF RETRY ATTEMPTS. LINE 19 DIFFERENT ERROR DURING RETRY WHILE THE PROGRAM WAS RETRYING THE ERROR, A DIFFERENT OCCURRED. IF THIS LINE IS PRINTED, THE RH/RP ReGISTERS WILL ALSO BE PRINTED (SEE LINE 2). LINE 20 DATA COMPARISON ERRORS A PRINTOUT OF THE DATA COMPARISON ERRORS FOLLOW THIS LINE. LINE 21 TOTAL COMPARE ERRORS= THIS LINE GIVES THE XXXX TOTAL DATA COMPARISON ERROR COUNT. VALUE GIVEN IS IN DECIMAL. THE LINE 22 THE DATA COMPARED OK THIS LINE INDICATES THE RESULTS OF ECC CORRECTION. THE DATA COMPARISON FOLLOWING ECC CORRECTION RESULTS 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 CORRCCTION AND THE WORD(S) AFTER CORRECTION ARE PRINTED. ERROR BURST BEGINS AT WORD XXX IN DATA FIELD OF ERRCR SECTOR THIS IS AN INFORMATIONAL LINE WHICH WILL BE PRINTED FOR ‘'DCK' ERRORS WHICH ARE ECC CORRECTABLE OR WHICH BECOME ECC CORRECTABLE DURING CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-23 SEQ 0027 USER DOCUMENTATION RETRY, 'XXX' DECIMAL. IS THE WORD OFFSET VALUE FROM "RMEC!' AND IS IN LINE 25 ERROR WAS NOT IN THE DATA READ - ECC CORRECTION CAN'T BE PERFORMED THE DATA ERROR WAS NOT CONTENTS OF IN DATA TRANSFERED TO MEMORY. THE ERROR SECTOR (REPORTED ABOVE) IF SW<03> IS SET, THE SECTOR WHICH GAVE THE 'DCK', 'WCF' ERROR OR 'HARD' DATA CHECK ERROR IS PRINTED. CONTENTS OF THE SECTOR FOLLOW THIS LINE. 'DTE' OR, THE LINE 27 TOTALS; ERRORS:X WRDS WRITN: YYYY WRDS READ: 2211 THIS IS THE LAST LINE PRINTED FOR ALL NON-POSITIONING TYPE ERRORS. 'ERRORS IS THE TOTAL ERROR COUNT FOR_THE DRIVE AND INCLUDES EVERY ERROR DETECTED, REGARDLESS OF TYPE. 'WRDS WRITN®' IS THE TOTAL NUMBER OF WORDS WRITTEN THE DRIVE. 'WRDS READ® IS THE TOTAL NUMBER OF WORD READ By THE DRIVE. TOTALS; SEEKS: . XXX TOTAL POS ERR= YYY TOTAL SKI ERR= 7 THIS IS THE LAST LINE PRINTED FOR ALL POSITIONING TYPE ERRORS. 'TOTAL SEEKS' BY THE DRIVE. IS THE TOTAL NUMBER OF SEEK OPERATIONS PERFORMED 'TOTAL ©P0S ERR' IS THE TOTAL NUMBER OF PROGRAM DETECTED POSITIONING ERROR BY THE DRIVE. 'TOTAL SKI ERR' THE DRIVE. IS THE TOTAL NUMBER OF PROGRAM DESCRIPTION 8.1 PROGRAM OPERATION °'SKI1' ERRORS SIGNALED BY BA SEQ 0028 WHEN THE PROGRAM IS STARTED, PROVIDING APT TTY ENABLE BIT IS SET OR DIAGNOSTIC LOADED BY OTHER THAN APT SCRIPT MODE, PARAMETERS ARE CLEARED OR INITIALIZED. ALL TABLES AND ~THE PARAMETERS WHICH ARE UNDER OPERATOR TTY ENTRY CONTROL ARE CHECKED FOR ALIDITV AND CONSISTENCY. RH CONTROLLER INTERRUPT ENABLE ('IE') IS SET, TTY KEYBUARD INTERRUPT ENABLE IS SET, AND THE KWw1l=L ORKW11=P'(CLOCK 1S STARTED. COMMAND ENTRIES WILL NOW BE ACCEPTED BY THE PROGRAM. THE PROGRAM SCANS ITS INTERNAL ASSIGNMENT TABLES, 1) i) ) LOOKING FOR: DRIVES TO ASSIGN/DEASSIGN PERFORMANCE REPORT TYPEOUT REQUESTS DRIVES REQUIRING COHHAND INITIATION, BUFFER ASSIGNEMENT, OR PARAMETER SELECTION DRIVES COMPLETING CURRENT OPERATIONS. 4) THE PROGRAM CONTINUES SCANNING ITS TABLES UNTIL AN ENTRY IN THE CASE OF THE PROGRAM AT INITIAL START, IS FOUND. THE FIRST ENTRY WILL BE MADE BY THE OPERATOR WHEN A DRIVE 1S ASSIGNED (*T* COMMAND). WHEN A DRIVE DRIVE IS ROUTINE IS ASSIGNED, THE KEYBOARD ENTRY ROUTINE VERIFIES THAT THE PRESENT, lS AN RPO7, THEN ISSUESA ISSUES A "RECALIBRATE' AND IS ONLINE. THE _ASSIGNMENT ‘READIN PRESET' INSTRUCTION, SETS 'FMT16', AND INSTRUCTION. PARAMETERS FOR THE OPERATION ARE SELECTED AND A BUFFER IS ASSIGNED. IF THE OPERATION IS A WRITE OR WRITE CHECK COMMAND, THE ASSIGNED BUFFER WILL BE FILLED WITH THE SELECTED PATTERN, (WRITE CHECK COMMANDS ARE ISSUED AFTER EACH WRITE COMMAND. THE WRITE CHECK COMMAND USES THE PARAMETERS SELECTED FOR THE PRECEDING WRITE COMMAND.) CONTROL IS THEN PASSED TO THE COMMAND INITIATION ROUTINE. THE COMMAND INITIATION ROUTINE FIRST LOOKS AT THE CYLINDER ADDRESS OF IRS THE REQUESTED OPERATION. IF THE DRIVE MUST SEEK TO ANOTHER CYLINDER TO PERFORM THE OPERATION, THE PROGRAM ISSUES A SEARCH INSTRUCTION TO THE DRIVE WITH A *TARGET® SECTOR WHICH IS 1 SECTOR EARLIER THAN THE °‘TRANSFER' S SECTOR, (THIS ALLOWS THE PROGRAM TO INITIATE OPERATIONS ON ANOTHER DRIVE WHILE THE PRESENT DRIVE, DRIVES, ARE SEARCHING FOR ‘TARGET' SECTORS. THE PROGRAM ARE OR OTHER ALL SEEKS ISSUED BY 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 CATA TRANSFER OPERATION IS COMPLETE, THE DRIVE REGISTERS ARE STORED AND A DATA TRANSFER 1S INITIATED FORA WAITING DRIVE. IF_THE OPERATION HAS BEEN COMPLETED NORMALLY, THE SAVED DRIVE REGISTERS ARE CHECKED TO VERIFY THAT NO ERROR BITS ARE SEVT; 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 A READ COMMAND, THE DATA BUFFER IS COMPARED. THE COMMAND WAS WHEN THIS SEQUENCE IS COMPLETED, THE DRIVE IS RETURNED TO THE ASSIGNED, INACTIVE LISI THE PROGRAM THEN INITIATES A DATA iRANSFER ON A WAITING DRIVE ANU RESELECTS AND REINITIATES ANOTHER OPERATION ON THE RELEASED DRIVE. ERRORS WHICH OCCUR ARE PROCESSED IN THE FOLLOWING ORDER. MULTIPLE -re s CZRJOAD RPO7 PERF EXER MACRO Vv04.00 1-JAN-B3 12:06:52 PAGE 3-24 USER DOCUMENTATION 0D CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-25 3 SEQ 0029 USER DOCUMENTATION ERRORS WILL BE REPORTED AS THE FIRST ERROR TYPE CHECKED. A. ERRORS REPORTED FOR OPERATIONS WHICH WAVE NOT COMPLETED NORMALLY. OPERATION NOT COMPLETED WITHIN TIME LIMIT - EMI3 UNIT WENT OFFLINE = EM14 B. ERRORS REPORTED FOR OPERATIONS WHICH COMPLETE NORMALLY. CORRECTABLE UNSAFE = EM&Q DRIVE TIMING ERROR = nsz DATA CHECK ERROR = EM WRITE CHECK WITH DCK SET - EM22 HEADER CRC ERRORS = EM zo FORMAT ERRORS = EM24 HEADER COMPARE eanoa§- snzs PROGRAM DETECTED POSlTlONlNG ERPOR - EMS1 SEEK INCOMPLETE ERROR = EMSO WRITE CHECK WITHOUT °ocx' SET - EM23 RH CONTROLLER OR UNIBUS TRANSFER ERROR = EM40 'OPI' ERROR = EM *PAR' ERROR 'WCF' ERROR = EM34 ‘JAE' ERROR EM35 'WLE' ERROR = EM EM36 MISCELLANEOUS DRIVE ERROR = EM30 C. ERRORS NOT FLAGGED BY THE HARDWARE ERROR DETECTION LOGIC. 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 = EM44 ECC LOGIC FAILURE = EM4S BUS ADDRESS OR WORD COUNT NOT CONSISTENT - EM&6 8.2 DUAL PORT OPERATION DUAL PORT OPERATION IS NEARLY IDENTICAL TO THE OPERATIOTM DESCRIBED IN SECTION 8.1. THE DIFFERENCES ARE IN COMMAND SEQUENCE INITIATION 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 PR]VE IS SELEC!ED AND THE RPCS1 REGISTER IS READ TO TEST THE "DVA’* BIT. IF THE DRIVE IS IN NEUTRAL, THIS WILL SEIZE THE DRIVE. IF THE DRIVE IS SEIZED BY THE OTHER PORT, A DRIVE CLEAR COMMAND 1S ISSUED TO THE DRIVE TO SET 'PORT REQUEST'. THE PROGRAM THEN CHECKS ‘DVA* IN *RPCS1'. IF THE DRIVE 15 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 MAKES AN ENTRY FOR THE on;ve 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 LOGIC IN THE DRIVE BEING TESTED; WOWEVER, UNDER CERTAIN CONDITIONS CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3 =26 SEQ 0030 USER DOCUMENTATION (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 OPERATOR 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 COHPLETED AN OPERATION, THE PROGRAH WILL STORE THE REGISTERS AND ISSUE A "RELEASE' TO THE DRIVE THE OPERATION TERMINATED WITH AN ERROR, THE DRIVE WILL NOTBE kELEAseo UNTIL ERROR PROCESSING HAS BEEN COMPLETED. 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 1SSUED 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 'MINSEC® AND 'MAXSEC'. IN 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 IS GREATER THAN THE CORRESPONDING MAXIMUM ADDRESS, THE PROGRAM WILL SWAP °'MAX' AND °"MIN' ADDRESSES AND CONTINUE. B. THE WORD COUNT IS RANDOMLY SELECTED BETWEEN 6 AND THE VALUE "WRDCNT® (MAX WRD CNT). THIS IS NECESSARY AS THE PROGRAM REQUIRES & LOCATIONS IN THE DATA PORTION OF THE SECTOR TO BE ABLE TO MAT(CH THE DATA TO A PATTERN FOR DATA COMPARISON PURPOSES AND NEEDS 2 MO LOCATIONS IF A READ HEADER & DATACOMMAND IS ISSUED. C. THE DATA WRITTEN IS RANDOMLY SELECTED AMONG THE 15. STANDARD PATTERNS. THE PARAMETER ‘'PATTERN' ENABLES THE RANDOM PATTERN SELECTION. IF THIS PARAMETER IS 0. D. 8.4 THE COMMANDS ARE SELECTED RANDOMLY. WRITE CHECK DATA COMMAND IS SE?:O?HED ggLv IF THE PREVICUS COMMAND WAS THE APPROPRIATE WRITE DATA PATTERNS THE PROGRAM SELECTS ONE OF THE FOLLOWING DATA PATTERNS TO WRITE WHEN A WRITE COMMAND IS SELECTED. THE ENTIRE BUFFER IS FILLED WITH THE SELECTED PATTERN. WHEN DATA IS READ FROH THE DISK, THE PROGRAM COMPARES DATA ON A SECTOR BASIS. IF THE PARAMETER 'PATTERN' IS 0 THE PROGRAM WILL ATTEMPT TO MATCH THE FIRST & DA!A 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 MATCH 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 CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-27 USER DOCUMENTATION OINANANANNASANSNASNDNNOe O1NM|=MMM§MVMMM * WORST CASE PATTERN 9.1 9.2 RH/RP DRIVER THIS DOCUMENT IS THE USER'S GUIDE FOR THE RH/RP DRIVER. TO INITIALIZE THE DRIVER: JSR RETURN PC.RPINIT UPON RETURN YOU MUST EXAMINE THE '‘DRVSTATM T THE DRIVES THAT ARE ONLINE FOR TESTING. EIGHT BYTES; ONE BYTE PER DRIVE. BE INDICATED AS FOLLOWS: CRVSTA THE STATE O DRIVE STATE SEQ 0031 >0 _ONL INE =0 OFFLINE, DRIV IS NOT AN RPO7, SEQ 0032 OR NONEXISTENT DRiVE <0 UNSAFE THE DRIVE TYPE IS DEFINED IN AN 8 BYTE LONG TABLE TAGGED °‘DRVTYP', THE TABLE CONTAINS ONE BYTE FOR EACH DRIVE AND IS INDEXED BY THE DRIVE NUMBER. ENTRIES ARE ENCODED AS FOLLOWS: DRVTYP CONDITION 0 NONEXISTENT DRIVE 5 =1 RPO7 NOT AN RPO7 & THE 9.3 RPO7 'RMINIT' ROUTINE WILL DO A READIN PRESET AND WILL SET FMT16. AFTER THE DRIVER HAS BEEN INITIALIZED, FOLLOWING SEQUENCE. CALL: JSR PNTDPB RE TURN1 RO,RPO7 RE TURNZ2 IT IS CALLED USING THE sMAKE THE CALL sADDRESS OF DPB* sRETURN IF QUEUE IS FULL sRETURN IF REQUEST IS IN ;QUEUE OR THERE IS AN sERROR CONDITION *DPB (DATA PARAMETER BLOCK) PNTDPB: .BYTE 0 :(0) DRIVE NUMBER .BYTE .WORD WORD 0 O 0 : (3) PSEL AND A17 AND A16 : (4) WORD COUNT (MUST BE NEG.) :(6) BUFFER ADDRESS OR sREGISTER TABLE POINTER :(10) SECTOR ADDRESS OR .BYTE .BYTE 0 0 .BYTE O .BYTE 0 .WORD .WORD O 0 LWORD 0 s(1) OFFSET VALUE OR FMT16, ECT, AND HCI :(g) COMMAND sFIRST REG. :(11) :LAST :(12) :(14) INDEX TRACK ADDRESS OR REG. INDEX CYLINDER ADDRESS ERROR TABLE POINTER sPOINTS TO THE FIRST OF sLOCATIONS OF WHERE THE :1S TO STORE THE RH/RP sREGISTERS ON AN ERROR. sZERO REGISTERS ARE NOT TWENTY DRIVER IF LEFT SAVED. :(16) STATUS/ERROR INDICATOR sBIT15=1=ERROR OCCURRED ;B1707=1=DONE :BIT14-B1T09 AND BIT06-BITO3 s INDICATE TYPE OF ERROR — CIZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-28 USER DOCUMENTATION SEQ 0033 9.4 DES A SOFTWARE TIMEOUT CAPABlLl CAPABILITY YOU MUST SUPPLY THE TIME IN THE FOLLOWING MANNER: TIMER'' ROUTINE MOV #16.,-(SP) :16. HlLLlSECONDS BETWEEN JSR PC,RPTMR ;CALL THE TIMER ROUTINE .CLOCK T1CKS IT SHOULD BE NOTED THAT YOU MUST PROVIDE THE CODE TO DRIVE CLOCK AND THE ELAPSED TIME MUST BE IN MILLISECONDS. 9.4.1 EXAMPLE = WRITE 1000. WORDS 1%: 2%: WRTDPB: JSR RO,RPO7 ER ST 8EQ BMI 1% WRTDPB+16 2% ERROR1 .BYTE .BYTE .BYTE .BYTE .WORD .WORD S C 1 0 -1 WRTDPB BYTE .BYTE .MWORD .MWORD .WORD WRTBUF 3 b) & E sCALL THE DRIVER :DPB_ADDRESS :WAIT FOR QUEUE IF F :WAIT FOR COMMAND TO COMPLEYE sERROR OCCURRED ;DRIVE #5 *WRITE COMMAND *WORD COUNT :gurre: ADDRESS : BLE sSTATUS/ERROR INDICATOR ALTERNATE DPB SETUP WRTDPB: .WORD .WORD "WORD "WORD S WRITE =1000. WRTBUF .WORD 400,ERRTBS,0 BYTE 3.5 sTHIS SETUP ACHIEVED sEVERYTHING THE ;ABOVE TABLE DID, BUT sIN A CLEANER FORMAT RH/RP REGISTERS e MNEMONIC oS NVOONSNO 9.5 THE [alal CZRJOAQ RPO7 PERF EXER MACRO Vv04.00 1-JAN-B3 12:06:52 PAGE 3-29 USER DOCUMENTATION RPLA RPDB SEQ 0034 0 2 RPMR1 RPDT RPSN RPOF RPDC RPHR 4 . 0 2 4 36 RPMR2 RPER? RPEC RPEC2 RPBA RPCS 40 42 44 46 50+ §2¢ * RH70 CONTROLLER REGISTERS 9.6 COMMANDS PERFORMED BY THE DRIVER COMMAND CODE COMMAND TYPE SEEK 105 P DRIVE CLEAR RELEASE OFFSET RETURN TO CENTER READIN PRESET PACK ACKNOWLEDGE 111 113 115 17 121 123 N N P P N N RECAL IRATE 107 SEARCH 131 GET REGISTER(S) 141 READ DATA READ HEADER & DATA 171 173 wnwova SET FORMAT SELECT DRIVE WRITE CHECK DATA WRITE CHK HEADER & DATA WRITE DATA WRITE HEADER & DATA 9.7 143 145 151 153 161 163 P P s S S D D D D D D HOUSEKEEPING POSITIONING DATA TRANSFER SPECIAL PROVIDED BY THE DRIVER DPB STATUS/ERROR INDICATOR WORD THIS INDICATOR WILL INFORM THE USER OF THE RESULTS OF THE REQUEST. xfléaels ACCOMPLISHED BY SETTING VARIES BITS OF THE INPICATOR TO BIT NO. MEANING IF ON A """ 15 ERROR OCCURRED N I - CIZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 3-30 USER DOCUMENTATION CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 3-31 USER DOCUMENTATION J 3 SEQ 0035 ); DONE ( 81 107= 0); ); DONE (Bl 107= H; 14(1) USER MADE AR EQUE PERFORMED 0 ON AN AN O 13(1) USER MADE A REQUEST FOR A FUNCTION TO BE PERFORMED ON A DRIVE UNLOAD REQUEST IN QUEUE. THAT HAS AN 12(2) PERSISTENT UNSAFE CONDITION EXIST. 11(2) UNCORRECTABLE PARITY ERROR OCCURRED 10(2) (&) FATAL PARITY ERROR. A MASSBUS CLEAR WAS PERFORMED, ALL QUEUES WERE EMPTIED, AND ALL DRVACT'S SET TO THE IDLE STATE 9(3) (&) SOF TWARE TIMEOUT OCCURRED ON THIS DRIVE 8(4) SOF TWARE TIMEOUT OCCURRED ON ANOTHER 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 3(2) DRIVE ERROR OCCURRED THAT CAUSED AN AUTOMATIC "'RECALIBRATE'' SEQUENCE PORT REQUEST TIMEOUT. THE DRIVER REQUESTED THE DRIVE BUT THE OPPOSITE PORT DID NOT RELEASE THE DRIVE WITHIN 15. SECONDS. NON-EXISTENT DRIVE REQUESTED. USER MADE REQUEST WASN'T PUT IN QUEUE. REGISTERS WERE NOT SAVED) (RH/RP (2) " ~ — —_~ A REQUEST FOR A NON-EXISTENT DRIVE. REQUEST QUEUE WAS BEEN EMPTIED. ISSUED A “DRIVE CLEAR'' THE DRIVER TO THE DRIVE. NOTE: ALL RH/RP REGISTERS ARE SAVED AS PER DPB+14 BEFORE THE (3) 'DRIVE CLEAR'. REQUEST QUEUE HAS BEEN EMPTIED. DRIVER ISSUED A MASSBUS INIT. THE 'ALL RH/RP REGISTERS FOR THE DRIVE WERE SAVED AS PER DPB+14 BEFORE THE INIT, CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-yAN=-83 12:06:52 PAGE 3-32 USER DOCUMENTATION (4) 9.8 = K 3 SEQ 0036 A "'RECALIBRATE'' SHOULD BE ISSUED BEFORE ANY OTHER COMMAND. ERROR CALLS MADE BY THE DRIVER. THERt ARE A FEW ERRORS THAT CAN OCCUR THAT CAN NOT BE INDICATED IN A DPB. WHEN THIS TYPE OF ERROR IS DETECTED BY THE DRIVER IT WILL MAKE AN ERROR CALL OF THE FORM 'ERROR N'', WHERE ''N'' IS THE NUMBER AND THE ERROR WILL BE AN EHT 1 INSTRUCTION. TYPE DATA AVAILABLE RH/RP INTERRUPT *R4= RPCS1°S ADDRESS UNEXPECTED ATTENTION R1 = oalvglnunaen R3 OCCURRED (RHAS=0) OCCURRED *Ré= aPcs; S ADDRESS R5= ( RPERRS _=RPDS RPERRS+2=RPER1 RPERRS+4=RPER? RPERRS +6=RPMR? MASSBUS PARITY RD.ADR= ADDRESS OF REG. READ MASSBUS PARITY WRT.AD= ADDRESS OF REG. WRITTEN ERROR (MCPE=1) ERROR (PAR=1) ADDRESS PLUG CHANGE BIT SET ('OPE' ERROR) RD.WRD= WORD READ WRT.WD= WORD WRITTEN RD.WRD= WORD READ BACK R1= DRIVE NUMBER R3= ATA BIT *R4= RPCS1'S ADDRESS R5= (RMAS) RPERRS _=RPDS RPERRS+2=RPER1 RPERRS +4=RPER?2 RPERRS+6=RPMR? * THIS IS THE ACTUAL UNIBUS ADDRESS (176700) oo ae RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE & .REM 3 VERSION (CZRJO=A=0) 1. THIS VERSION IS THE STARTING POINT FOR CX DIAGNOSTIC SUPPORT OF THE RPO7 DISK DRIVE. SEQ 0037 mn3 % 30 RPO7 PERF EXER MACRO V04.00 1-JAN=-B3 12:06:52 PAGE § SEQ 0038 ;*LAST REVISION 01-JAN-83 LTITLE CZRJOAO RPO? PERF EXER :*COPYRIGHT(C) 1983 $*DIGITAL EOUIPHENT CORPORATION "CCLORADO SPGS., CO. 80919 'PROGRAH BY MIKE LEAVITY 'THIS PROGRAM WAS ASSEMBLED USING THE PDP=11 MAINDEC SYSMAC 'PACKAGE 104000 000004 Dr=2Z2M2Z2Z> =2unIxITrzr e e e RE ERROR E ND OF PASS MESSAGES A bL DATA COMPARE ERRORS H ANG 5 PARAMETERS (LOOP ON PRESENT VALUES) R I AL EGISTER DISPLAY IF ERRO C CC SRRECTION RESULTS DISFLAVED IF ERROR 0 TC ECK FOR_MAXIMUM ERROR COUNTS 0 TD ROP DRIVE AT END OF TEST 'DTE', OR "WCF' L AY ERROR SECTOR IF 'DCK' 'DCK' ERR U ATA COMPARE ERROR & SW07 MAINDER OF BUFFER 'RRECTABLE AFTER NOT TYPE DRIVE STATUS AT PROGRAM START NOT TYPE PERFORMANCE REPORT AFTER SPECIFIED TIME T DATA COMPARE AFTER READ W/0 'DCK' ERROR NLY MODE BASIC DEFINITIONS 'INITIAL A?ggESS OF = STALK ERROR = EMT SCOPE = lOT THE STACK POINTER ##+ 1100 w#« s:BASIC DEFINITION OF ERROR CALL :sBASIC DEFINITION OF SCOPE CALL 'HISCELLANEOUS DEFINITIONS = 11 :;CODE FOR HORIZONTAL TAB LF (R CRLF = 12 =15 = 200 ::CODE FOR LINE FEED ::CODE FOR CARRIAGE RETU ::CODE FOR CARRIAGE RETURN-LINE FEED STKLMT = 177774 ;:STACK LIMIT REGISTER DSWR = 177570 : HARDWARE SWITCH REGISTER ;gu oy 177776 PIRG DDISP 000000 = 177772 = 177570 : ;PROCESSOR STATUS WORD : :PROGRAM INTERRUPT REQUEST REGISTER : ;HARDWARE DISPLAY REGISTER : *GENERAL PURPOSE REGISTER DEF INITIONS RO = %0 ERROR i, DISPLAY [ T5 AL B. IN ERROR ERROR TYPEOUTS LQYTR$CTOR IF E >xX 1 0 2 o 2 OO0 D =-NVODOO oZv WO O M NOO+ OOO»—-rw —4 N PO O OCXVOVSZ2Z2Mu E - .'o-—f'a;-d USE D>OP>OPOOr~mMe—I & W B T N T B T B T B T T BN B TN T I BN 2N BN 2N 2B B 2R 2 R LA LR TR TR TR TR TR PR TR TP 001100 1 VOO BN N 15 13 T SWITCH +SBTTL 18-MAR-81 OPERATIONAL SWITCH SETTINGS N .SBTTL 87 (MAINDEC=-11=DZQAC~C5), ; ;GENERAL REGISTER CIZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 5-1 BASIC DEF INITIONS N 3 SEQ 0039 00001 R1 = 11 :;GENERAL REGISTER 0000 R =X : ;GENERAL REGISTER 0000 000004 000005 000006 000007 000006 000007 000000 000940 000100 000140 000200 000240 000300 000340 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 000400 R Ré& RS R6 R7 SP PC = !§ = %% = = = = = %5 %6 %7 16 X7 : sGENERAL REGISTER : SGENERAL REGISTER : :GENERAL REGISTER ::GENERAL REGISTER ::GENERAL REGISTER $:STACK POINTER : SPROGRAM COUNTER :*PRIORITY LEVEL DEFINITIONS PRO PR1 PR PR PR& PRS PR6 PR7 =0 = = = = = = = 40 100 140 200 240 300 340 :;PRIORITY LEVEL 0 ssPRIORITY SPRIORITY ::PRIORITY S:PRIORITY ::PRIORITV :PRIORITY $:PRIORITY LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL LEVEL *'SWITCH REGISTERTM SWITCH DEF INITIONS &3 = 100000 SWiéd = 40000 SW13 = 20000 SWw12 = 10000 SW11 = 4000 SW10 = 2000 SW09 = 1000 SW08 = 400 sWw0?7 = 200 SWo6 = 100 SW0S = 40 SWwok = 20 sWwo3 = 10 W02 =& SW01 = 2 SW00 = 1 © SW9=5W09 SW8=SW08 SW7=SW07 SW6=SW06 SW5=SW0S SWh=SW04 SW3=5W03 SW2=SW02 SW1=SW01 SW0=SW00 :#DATA BIT DEFINITIONS (BITOO TO BIT1S) BIT1S BIT14 BIT13 BIT12 BITI1 BITI0 BITO9 BITO8 = 100000 = = = = = = = 40000 20000 10000 4000 2000 1000 400 1 % & S 6 7 CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 5=2 SEQ 0040 BASIC DEFINITIONS 000200 0001C0 000040 000020 000010 000004 000002 000001 001000 000400 000200 000100 000940 000020 000010 000004 000002 000001 BITO? = 200 BIT g = 100 BIT = 40 BITO& = 20 BITO3 =10 BITO2 =4 BITO1 =2 BITO0O =1 BIT9=BIT09 BIT8=BIT08 B8117=B1107 9116=axrog BITS=BITO BIT4=BIT04 BIT3=BIT03 BIT2=BIT02 BIT1=BIT01 BIT0=BITO00 000004 ERRVEC = & 000010 000014 000014 000014 000020 000024 000030 RESVEC TBITVEC TRTVEC BPTVEC IOTVEC PWRVEC EMTVEC 000064 TKVEC = 60 TPVEC = 64 PIRQVEC = 240 000034 000060 s :*BASIC "‘CPU'* TRAP VECTOR ADDRESSES 000240 = = = = = = = 10 14 14 14 20 24 30 TRAPVEC = 34 ::TIME OUT AND OTHER ERRORS : ;RESERVED AND ILLEGAL INSTRUCTIONS TV BIT ::TRACE TRAP : :BREAKPOINT TRAP (BPT) :: INPUT/OUTPUT TRAP (10T) #«SCOPE*+ : :POWER FAIL : ;EMULATOR TRAP (EMT) *+ERRORw+ ::"TRAP'' TRAP ::1TY KEYBOARD VECTOR ::TTY PRINTER VECTOR : :PROGRAM INTERRUPT REQUEST VECTOR }89 .SBTTL }83 :CONTROL AND STATUS REGISTER 1 (RPCS1) 110 11 000100 000200 116 040000 112 113 114 115 }}g 000400 001000 002000 020000 RPO7 REGISTERS {3 RDY A6 A17 PSEL = 100 = 200 :INTERRUPT ENABLE :READY (BIT #7) TRE = 40000 :TRANSFER ERROR MCPE = 400 = 1000 z %ooo = 20000 :SC = 100000 :HIGH ORDER BUS ADDRESS BIT (BIT #8) ;HIGH ORDER BUS ADDRESS BIT (BIT #9) :PORT SELECT (BIT #10) :MASSBUSS PARITY ERROR (BIT #13) :WORD COUNT REGISTER (RPWC) 122 }52 :BUS ADDRESS REGISTER (RPBA) :7EACH BIT IS CALLED BY BIT NUMBER) }52 :CONTROL AND STATUS REGISTER 2 (RP(CS2) 129 (BIT #14) :SPECIAL CONDITION (BIT #15) 119 }%? (BIT #6) :(EACH BIT IS CALLED BY BIT NUMBER) 000004 US4 z & :UNIT SELECT (BIT #2) (IR JOAQ RPO7 PERF EXER MACRO V0&4.00 1-JAN-B83 12:06:52 PAGE 5-3 SEQ 0041 RPO7 REGISTERS PO~N~4®R e~y Po~loWSON — -—~¥N R —Y =e wna &+=t O=NNMIMWINMNWMNPJ~MINNMWINN - @ — — 2 ~N -~ = :DATA BUFFER REGISTER (RPDB) : (EACH BIT T | S CALLED BY BIT NUMBER) .SBTTL RPO7 REGISTERS ;CONTROL AND STATUS 1 REGISTER. (#00) Quwuwuwud AaVS4LoIl[«lelele] oo ;DRIVE STATUS REGISTER (RPDS1) (#01) ;OFFSET O N EARLY WA R INTERLEA v RED (BIT #10) #a) 1 # 15) sERROR REGISTER #01 (RPER1) (#02) ILF < o Rwa~0aO%xn o=~ -2 v 234567890235 2) l N PROGRESS (BIT #13) o @ — — =3 N - (2 SJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 5-4 RPO7 REGISTERS [[eelleelleelleelleellee]] o sMAINTENANCE REGISTER (RPMR1)(#03) sATTENTION SUMMARY PSEUDO=REGISTER (RPAS) ATO (#04) *at*atatatartastate [~Y=YaYaYaYaYVaYa)IVEIVEIVERVEVEIY)>3eBRl LOLOLUOUOIVLO[eESIVEIVEE N" Lnoegdl RN PN~~ ) =t oe et 2g et &O—O4N NM¢&& L€ — aoV£LIE]Ro(e]elele AT7 [=]=] ;DESIRED SECTOR/TRACK ADDRESS REGISTER (RPDA) N O O O N ( N e ~ v NUMINON O ~ =NO UMW JT NTMMIWNvvNvOe=OvOvr~O WN=TTo[[}c4=LOoloc=fOToblcLOeolO=MeO aeTlOoNeLEIl—~eT-Ol2eLNelQTWeTolLNeIbTOLeI a wv acaocaococaocacocanE-2 NN jol=lele) —eNOR0O0 LdoI[£aVNEX O0O0O00O [elelele] SEQ 0042 (#05) o—)=OwogWsxxO —a ~ 0VOdoeLteVeetLgeeVgdeL5eetVeeYt O-wu.vnVYrOetSayScGxSGxSGoSt sDRIVE TYPE REGISTER (RPDT) (#06) =WOOOTMOM@MAM T T T T T T T T T E D (BIT #11) 2R~ Vv E TYPE NUMBE Vv E TYPE NUMBE Vv E TYPE NUMBE v E TYPE NUMBE v E TYPE NUMBE v E TYPE NUMBE v E TYPE NUMBE v E TYPE NUMBE Vv E TYPE NUMBE Vv E REQUEST RE 1 NG HEAD (BIT 3 DRIVE (BIT SECTOR ADDRE ;LOOK=AHEAD REGISTER (RPLA) (#07) ) (BIT #5) WOaWwWxWwWo NeSOE0w0x0<0 a=Wo-dE [sefsalea—foaoaloatoa) ToseBb xao w L ~a -~ A4 ox~—m -“ow2-mUoaoOio~m VOx3Le3O=xL3—VN3xLMVa2ILxTV2oNLL)a2O w oW Oo®m= xD TW@ — O~~@ — — R4 - - —~ ~N< oTM r-la o~ 0AO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 5=5 E SEQ 0043 & REGISTERS 244 245 %29 248 %gg %g} 253 254 255 256 257 %g% 000400 001000 00 0020 004900 010000 100000 26?2 263 264 265 266 267 268 269 270 4l 272 273 %;g 000001 02 0000 000004 10 0000 000020 000040 000100 000200 0004 00 001000 00 0020 00 0400 100000 %g? 276 %;279g 33? %g% 284 285 286 287 288 292 293 94 00 301 02 03 04 000101 000105 000107 000111 000113 17 000121 000131 0001 000151 53 000161 0001 000163 000171 §07 176700 82 308 (#12) ADDRESS (RPDC) ER) :DESIRED CYLINDER NUMB BIT BY ED CALL IS :(EACH BIT ) (#13) NDER ADDRBYESSB1T(RPCC :CURRENT CYLI NUMBER) s (EACH BIT IS CALLED :RPO7 ERROR REGISTER #2 (RPER2) (#14) FE 9)(BIT 8) YRUNUNSA READ E ;WRIT (BIT OVER UNSAFE #1 (BIT 10) *WRITE ITE UNSAFE wg (BIT 11) *READ/WR ITE UNSAFE # (BIT 12) :READ/WR ITE :READ/WR :PROGRAM ERROR (BIT 15) WRYUNS == 400 1000 WOR == 2000 RWU1 4000 RWU = 1000000 RWU = 1000 PGE :RPO7 ERROR REGISTER #3 (RPER3) (#15) DGE TPE AIR DPE RPE DCU IXU pv( TCF LCE LBC SK1 BSE 0) R(BIT 1) (BITERRO R ING ERRO TIC :DIAGNOS WARN TURE PENA :TEM ERROR3) (BIT 2) ING EMTYWARN SYST :AIR ERRUx R(BIT(BIT 4) A PARI :DAT PARITY ERRO :BUFFER FE (BIT 5) 6) :DC UNSAUNSAFE X CHECK (BIT s INDEICE (BIT 7) URE (BIT 8) :DEV CALIBRATION FAILR (BIT 9) H CYLINDER ERRO STAC :L0SSS OF K(BIT(BIT14)10) CLOC OFINCOBIT :L0S TE MPLE :SEEK SECTOR ERROR (BIT 15) :BAD s 21 ss & = 10 = 20 = 40 = 100 = 200 == 400 1000 20000 == 4000 = 100000 T1) (M16) :ECC POSITION REGISTER (RPEC T BI CALLED BY NUMBER) :(EACH BITERNIS REGI ) STER (RPEC2) (#17 :ECC PATT ER) S(EACH BIT IS CALLED BY BIT NUMB .SBTTL RPO7 DRIVER COMMANDS = 101 NOOP = 105 SEEK RECAL = 107 DRVCLR = 111 RELSE = 113 RTC IN == 117 READ = 1%1 131 SEARCH 15 = wCKD = D = 153 WCKHAT 161 WRTD 163 = K FMTR RDDAT = 171 = 173 000173 RDHD 000254 AVECT1 = 2564 ABASE = 176700 :NO OPERATION s SEEK ;RECAL IBRATER ;:DRIVE CLEA :RELEASE URN TO CENTER LINE :RET :READ IN PRESET s SEARCH :WRITE CHECKK DATA CHEC HEADER £ DATA ;WRITE DATA :WRITE :FORMAT TRACK :READ DATA :READ HEADER & DATA CZRJOAO RPO7 PERF KER 309 «JAN= F & TRAP CATCHER 2 CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 1 .SBTTL 600000 4 . 580 0065 TRAP CATCHER .=0 :*ALL UNUSED LOCATIONS FROM & = 776 CONTAIN A "',+2 HALT" s*SEQUENCE TO CATCH ILLEGAL TRAPS AND INTERRUPTS +LOCATION O CONTAINS 0 T0 CATCH INPROPERLY LOADED VECTORS ek 000174 000000 000176 2 PA e DISPREG: .WORD 0 000000 SWREG: .SBTTL .WORD 0 000137 003532 JMP ANSTARTY ; 000204 000137 003522 JMP ANSTART JSBTTL 1 SOFTWARE SWITCH REGISTER STARTING ADDRESS(ES) , 000200 8 ::SOF TWARE DISPLAY REGISTER ::JUMP T0 STARTING ADDRESS OF PROGRAM :CHANGE THE RMXX/RPQ7 ADDRESS ACT11 HOOKS '.".'..".."'."""""Q'."""'...""'..".."."Q"".'. *HOOKS REQUIRED BY ACT11 000210 $SVPC=. :SAVE PC 836523 $ENDAD ::1)SET LOC.46 TO ADDRESS OF SENDAD IN .SEOP 000052 040000 'WORD 000046 : 000046 =46 000210 10 1" T=$SVPC 001100 .=1100 "SBTTL 2 40000 ::2)SET LOC.52 T0 40000 **“RESTORE PC APT PARAMETER BLOCK 233223223333323322323233332233332233333323333332223232220223220200202 0] ser LOCATIONS 24 AND &4 AS REQUIRED FOR APT .."tl.."..Q"""""""""".Q.i....".'.....'..""'."'. 000024 000044 001100 000024 000200 000044 A 001100 001100 .$X=. =24 200 C=44 ;:SAVE CURRENT LOCATION *SET POWER FAIL TO POINT TO START OF PROGRAM :3FOR APT START UP POINT TO APT INDIRECT ADDRESS PNIR. .=.8X ::RESET LOCATION COUNTER $APTHDR ::POINT TO APT HEADER BLOCK :"...""."..'.'"'.".""""."'.."...."""'".'.l't'.".. *SETUP APT PARAMETER BLOCK AS DEFINED IN THE APT=PDP11 DIAGNOSTIC *INTERFACE SPEC. WD [ ey 001100 001100 001102 001104 001106 001110 001112 000000 001206 014234 014234 014234 000032 001114 SAPTHD: $HIBTS: $MBADR: $TSTM: SPASTM: SUNITM: TAB. XY=, .WORD .WORD [WORD .WORD .WORD "WORD 0 ::TWO HIGH BITS OF 18 BIT MAILBOX ADDR. SMAIL ::ADDRESS OF APT MAILBOX (BITS 0=15) 6300. ::RUN TIM OF LONGEST TEST 6300, ::RUN TIME IN SECS. OF 1ST PASS ON 1 UNIT (QUICK VERIFY) 6300, ..ADD TIONAL RUN TIME (SECS) OF A PASS FOR EACH ADDED UNIT SETEND-SMAIL/2 ;:LENGTH MAILBOX-ETABLE (WORDS) :CMTAGSTARING ADDRESS CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 7 SEQ 0046 COMMON TAGS 0 .SBTTL COMMON TAGS ;'"'.'""'..'."""'"'Q'""."""""".!."0'.'."".'."' :*THIS TABLE CONTAINS VARIOUS COMMON STORAGE LOCATIONS $#USED IN THE PROGRAM. 01114 01114 01116 001114 000000 000 $TISTNM: 0009200 000000 00000 000 001 000000 000000 000000 $LPADR: SLPERR: $ERTTL: $ITEMB: S$ERMAX: $ERRPC: $GDADR: $BDADR: V1117 011%0 000 000000 01140 01142 001144 001146 001150 001151 001152 001154 001156 001160 001162 001764 001166 001170 001171 001172 000000 000000 000000 000000 000 000 000000 1775 17757C 1775 177562 177564 177566 000 002 012 01122 01124 0011%6 01130 01131 01132 001134 01136 001173 001174 001176 001202 001203 001206 $CMTAG: $SERFLG: $ICNT: $GDDAT: $BDDAT: $AUTOB: $INTAG: . 207 377 012 000 077 015 377 $TP:LG: $TMPO: SBELL: $QUES: $CRLF: $SLF: 2 001210 001212 001214 001216 001220 001222 001224 001226 O .BYTE .WORD 0 0 .BYTE .WORD .WORD .WORD .BYTE .BYTE .WORD .WORD .WORD .WORD .WORD .WORD .WORD .BYTE .WORD .ASCIZ L.ASCII LASCII LASCIZ SRR RR RN "SBITL 001206 001206 WORD .BYTE .BYTE WORD SWR: .WORD DISPLAY: .WORD $TKS: 177560 $TKB: 177562 $TPS: 177564 $TPB: 177566 $NULL: .BYTE $FILLS: .BYTE SFILLC: .BYTE 000 000000 .=TAB XY O ::CONTAINS THE 0 0 O O 1 0 0 0 ;sCONTAINS ssCONTAINS ssCONTAINS :2CONTAINS ssCONTAINS 2sCONTAINS :2CONTAINS ;2CONTAINS TEST NUMBER :3CONTAINS ERROR FLAG ssCONTAINS SUBTEST ITERATION COUNT 0 0 0 O SCOPE LOOP ADDRESS SCOPE RETURN FOR ERRORS TOTAL ERRORS DETECTED ITEM CONTROL BYTE MAX. ERRORS PER TEST PC OF LAST ERROR INSTRUCTION ADDRESS OF 'GOOD' DATA ADDRESS OF °'BAD' DATA :sCONTAINS "GOOD*' DATA ssCONTAINS 'BAD' DATA ;JRESERVED==NOT TO BE USED O O O DSWR DDISP :AUTOMATIC MODE INDICATOR ;s INTERRUPT MODE INDICATOR O 2 12 0 O <207><377><377> 7%/ <15 <> ::ADDRESS OF SWITCH REGISTER s :ADDRESS OF DISPLAY REGISTER ;sTTY KBD STATUS ;:TTY KBD BUFFER ;:TTY PRINTER STATUS REG. ADDRESS ::TTY PRINTER BUFFER REG. ADDRESS :2CONTAINS NULL CHARACTER FOR FILLS ;;CONTAINS # OF FILLER CHARACTERS REQUIRED ::lySERT FILL CHARS. QF!ER A "LINE FEED' :2"'TERMINAL AVAILABLE'® 2 sUSER DEF INED FLAG (BIT<07>=0=YES) ;;CODE FOR BELL :sQUESTION MARK :sCARRIAGE RETURN JsLINE FEED R RN RN R R AR R RN RN R R RRRRAERRNARRARNRRRRRRR S RARNRARROERNOROOCEROROERTYS APT MAILBOX=-ETABLE 2232323322023 2202222022220 R RRRRRRRRRRRRRRRRRRRR Rl )] "EVEN 000000 000000 000000 000000 000000 000000 000000 000000 ::START OF COMMON TAGS $MAIL : $MSGTY: .WORD SFATAL: .WORD $TESTN: .WORD $PASS: .WORD $DEVCT: .WORD SUNIT: .WORD $SMSGAD: .WORD $MSGLG: .WORD $ETABLE : AMSGTY AFATAL ATESTN APASS ADEVCY AUNIT AMSGAD AMSGLG :sAPT MAILBOX ::MESSAGE TYPE CODE ::FATAL ERROR NUMBER ::I1EST NUMBER ::PASS COUNT ;;DEVICE COUNT ::1/0 UNIT NUMBER ::MESSAGE ADDRESS ::MESSAGE LENGTH PSAPT ENVIRONMENT TABLE SEQ 0047 CZRJOAQ RPO7 PERF EXER MACRO v04.00 1-JAN-83 12 :06:52 PAGE 7-1 SIAPT SWITCH ..usea 53{’8 ) "nun M=>» XD M= e = {1 — <+ X OOWVWO - oo AMADR AMAMS AMTYP3 AMADR3 $CDW2: $SETEND: MEXIT BREX <2 — 5 B I ERE AMAMS?2 AMTYP2 000000 L E D Y 3 000 000 000000 00 $BASE: $DEVM: $COW1: 1 3 9 AMADR1 SVECT1: $SVECTZ2: Mls e 8 e gt B B O 3 .-o.-. PP AMAMS AMTYP1 000000 :. $SMADRG 001272 eccoe DDD N éits 1s 11 ‘§ AMAMSSL AMTYPS AMADR4 AVECT1 AVECT2 ABASE ADEVM ACDWI1 ACDW2 1 R E f BYTE MODE BITS EGISTER =il HC-MD : SENVIRONMEN 10NS TYPE 01,11/05202,11/20=03,11/40=04,11/45=05 06,PD0=07,0= ME " CLOCK G _POINT PROCESSOR MANAGEMENT Fryv__ .WORD .WORD : s ENVIRONMEN NZ2Z22MDN <= OSHr VIV WORD AENV AENVM ASWREG AUSWR ACPUOP M.S. BYTE KW == (HIGH BYTE) EC CORE=001 EC BIPOLAR=002 EC MOS=003 VMOV : .BYTE .BYTE vcvcscnene SENVM: OOOO'UOIO)—'—'—. OOO<MIDOPr "\ n SENV: —— APT MAILBOX=-ETABLE ssHIGH ADDRE BLKAT MEM.LAST AD R.=3 BYTES,THIS WORD AND LOW OF ::HIGH ADDRES M.5.78YTE s sMEM.TYPE ,BLK »2 s sMEM.LAST ADD RESS,BLKA2 ::HIGH ADDRESS (M.S.BYTE :sMEM,.TYPE ,BLK#3 JsMEM.LAST ADD RESS ,BLKA3 ssHIGH ADDRESS, H.S BYTE ::MEM.TYPE ,BLK#G s sMEM.LAST ADDRESS ,BLK#4 s s INTERRUPT VECTOR#1,BUS PRIORITYA1 ::INTERRUPT VECTORN2BUS PRIORITYA?2 : ;BASE ADDRESS OF EQUIPMENT UNDER TEST : :DEVICE MAP s CONTROLLER D ESCRI PTION WORD#1 : ;CONTROLLER D ESCRI PTION WORD#? G “‘TYPE'* ABOVE CIRJOAQO RPO7 PERF EXER MACRO VO0&. 00 1-JAN-83 12: 06:52 PAGE 8 SEQ 0048 USER DEFINED TAGS .SBTTL USER DEFINED TAGS 176700 000254 172549 172542 000104 177546 000100 000000 000074 000000 SRPADR: SRPVE(: SLKCSR: $LKCSB : SLPVEC : $LKS : SLLVEC : CLKFLG : HERTZ: STATIN: .WORD «WORD .WORD 176700 4 172540 FlR;T ADDRESS OF RHXX/RPO7 REGISTERS VECTOR ADDRESS :ADDR OF KU11-P STATUS REGISTER .WMORD .WORD 177546 100 :ADDR OF KWll=L srarus REGISTER *ADDR OF Kw11-L VECTOR 001220 DRIVE =$UNIT 001316 001320 001322 001326 000000 000000 000000 000 ATTN: DRVNO: MASK: RETRY: MORD O WORD .BYTE 0 0,0 001326 001330 001332 001334 001336 001340 001342 001344 001346 001350 001352 000003 000000 000000 000000 000000 000000 000000 000000 000000 177777 000 FAIRNS: LSTAD: CHGADR: CFLAG: BADSEC HOUR MINUTE SE COND ONESEC: ZROIND: FRSTER: MORD 001353 000 001354 001356 001360 001362 001364 001366 001370 00137 001577 001.’ 001376 001400 001402 001404 001406 001410 001412 001414 001416 001420 001422 001424 000000 000000 000000 000000 000000 000000 000000 000 000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 001272 001276 Q01676 001300 001302 001304 001306 001310 00:312 001314 000 . SAVPOS: SAVER]: SAVERS: ERCTR: LIMIT: CMCNT: CMCYL: CMSEC: CMTRK: WRDPOS: ECBIT: ECSEC: ECMSKO ECMSK1 ECWRD ECGD ECBADO ECWRD] ECGD) ECBAD1 TSTANY: RDONL Y : .ORD .WORD 172542 104 .WORD O WORD O .WORD JWORD 60. INO CLOCK= 0, P=CLOCK= 1 OR L=CLOCK= =1 160MI SYSTEM= 60. OR SOMZ svsrsn- 50. STYPE STATISTICS® INDICATOR :DRIVE # STORAGE: ERRORS 15 ¢ 10 :SAME AS USED IN SATTN REG sroaAce eaaoas 15 & 10 0 ‘DRIVE # STORAGE FOR PRINTOUT *ERROR RETRY REGISTER MASK :ERROR RETRY LIMIT IN THF LOWER BYTE SRETRY COUNT 3 WORD MORD 0 O WORD 0 WORD WORD WORD ;ADDR OF KW11-P COUNTER BUFFER *ADDR OF KW11=P VECTOR IN THE UPPER BYTE SMAXIMUM TIME IN QUEUE VALUE SSTORE LAST MEMORY ADDRESS HERE :CHANGE RHXX/RP07 UNIBUS ADDRESS FLAG O 0 O :CONTROL C' FLAG *BAD TRACK/SECTOR FLAG :HOUR_COUNT STORED HERE *MINUTE'S COUNT STORED HERE WORD WORD "WORD BYTE O O =1 0 SSECOND'S COUNT STORED HERE STIMER ROUTINE COUNTER (FOR ONE SECOND) $2ERO INDICATOR FOR THE DATA COMPARE ROUTINE :DATA COMPARE ERROR FLAG BYTE 0 ‘MISCOMPARSION OR CAN T MATCH PATTERN FLAG MORD WORD WORD 'WORD O O O 0 WORD WORD BYTE O 0 0 *WORD COUNT SCYLINDER ADDRESS *SECTOR ADDRESS 0 O *WORD POSITION IN COMPARE ROUTINE *ERROR BURST BIT OFFSET O 1GOOD (CORRECTFN) DATA, WORD BYTE "WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD O 0 0 O O O O O O 0 0 O P1F > 0, PROCESSING 'DCKER® OR CAN'T MATCH PATTERN :1F < 0, MISCOMPARSION FOUND P1F < 0, ERROR IN BUFFER . *SAVE WORD Posxrxou IN COMPARE ROUTINE SSAVE R1 HERE *SAVE PS HERE :-NUMBER OF ERRORS ‘DISPLAY LIMIT STRACK ADDRESS *ERROR BURST WORD OFFSET (RELATIVE vo SECTOR) :CORRECTION MASK FOR FIRST ERROR WORD *CORRECTION MASK FOR SECOND snaon uoao SLOCATION OF FIRST ERROR WORD FIRST WORD *BAD (RECEIVED) DATA, FIRST WORD SLOCATION OF SECOND ERROR WORD *GOOD (CORRECTED) DATA, SECOND WORD *BAD (RECEIVED) DATA, SECOND WORD STEST ON FE CYLINDER ONLY =0, TEST ANYWHERE ON MEDIA =1 READ/WRITE MODE=0, READ MODE ONLY=1 CZIRJOAQ RPO7 PERF EXER MACRO V04,00 1-JAN-83 12:06:52 PAGE 8-1 SEQ 0049 USER DEFINED TAGS 001426 200000 DRVPAR: .WORD 0 001430 000000 XXDP: .WORD O 00143 00143 001436 001440 001441 00144 00144 200 103 112 055 101 955 060 132 117 . 000 122 ;WHEN DRIVES ARE BEING ASSIGNED, PARAMETERS :0=CHANGE DRIVE :1=D0 NOT CHANGE DRIVE PARAMETERS *TME LOW BYTE CONTAINS THE DRIVE NUMBER FROM WHICH ‘THE PROGRAM WAS LOADED. LIST BEX JASCII JASCI1 <CRLF> /CIRJO/ ;PROGRAM ID NLIST ASCIL LASCIT JASCID LASCIZ BEX 7=/ /A7 7=/ 70/ REV: THE HIGH BYTE S'XXDP' DEVICE CODE FOR THE RPO7. CONTAINS THE ;REVISION LEVEL ;PATCH LEVEL .EVEN TTL COMMON PARAMETERS : THE FOLLOUING TWO LOCATIONS CONTAIN THE SOFT ERROR RATE WORDS USED TO :DETERMINE END OF PASS WHEN THE PROGRAM 1S DATA BIASED. :IT WILL TAKE APPROXIMATELY 2.4 PASSES TO REACH THE SOFT ERROR RATE OF :1 ERROR IN 10*10 Bl'S (6.25X 168 WORDS) READ OR 10. PASSES TO REACH THE 90% *CONF IDENCE LEVEL OF 4.128 X 10*10 BITS (2.58 X 10*9 WORDS) READ. SENDCON= LSB AND ENDCON+2= MSB 001446 001450 142200 007540 ENDCON: .WORD .WORD 142200 007540 ;(2.58 X 108 WORDS) OR (4.128 X 109 BITS) READ ;THE FOLLOWING TWO LOCATIONS CONTAIN THE SEEK ERROR RATE WORDS USED TO ‘DETERMINE END OF PASS WHEN THE PROGRAM IS SEEK BIASED SIT WILL TAKE 1 PASS TO REACH A SEEK ERROR RATE OF 1 ERROR IN 10%6 SZEKS OR 3 :PASSES TO REACH A 90X% CONFIDENCE LEVEL OF SENDSEK= LSB AND ENDSEK+2= MSB 3 X 106 SEEKS. 901452 001454 041100 000017 ENDSEK: .WORD .WORD 041100 000017 :(1 X 10%6 SEEKS) 001456 001460 000062 000004 MAXER: CMPLMT: .WORD .WORD SO. & :MAXIMUM ERRORS ALLOWED PER DRIVE *NUMBER OF COMPARE ERRORS TYPED O 001462 000017 001466 001470 031000 000000 001474 000017 CMPTIM: .WORD 15.,15. :FIRST WORD IS THE INTERVAL aerueeu DATA COMPARES. SCIN MINUTES). SECOND WORD IS THE INTERVAL COUNTER. :1F FIRST WORD IS ZERO, THEN DATA conpaas IS ALWAYS ON. WRDCNT: .WORD INTRVL: .WORD 12800. 0,0 000001 PASSES: .WORD 1 001476 000000 PATTERN: .WORD 0 001500 000000 RANDWC: .WORD 0 000000 STHIS TIMER HAS NO AFFECT IF suo =1 -MAXIMUM WORD COUNT (6-12800.) SFIRST WORD IS THE PERFORMANCE TYPEOUT INTERVAL SCIN MINUTES). SECOND WORD IS THE INTERVAL COUNTER. *1F FIRST WORD IS 2ERO, NO REPORT IS TYPED. *NUMBER OF PASSES 10 END OF TEST [THIS PARAMETER IS .:ggigseo WHEN PROGRAM IS OPERATING IN AUTO RUN(CHAIN) (1F EQ O RANDOHLV SELECT DATA PATTERN :1F NOT £Q 0 SELECT ONE SET OF PATTERN D BY fu TTERN', :POINTE *1F EQ TO 0 csuennrs A RANDOM WORD COUNT :FOR THE OPERATION *1F NOT EQ TO O, use THE VALUE IN *WRDCNT' FOR CZRJOAD RPO7 PERF EXER MACRO V04,00 1-JAN-B3 12: 06:52 PAGE 8-2 SEQ 0050 COMMON PARAMETERS 001502 000003 RATIO: .WORD 3 ;THE WORD COUNT ;READ/WRITE RATIO [RANGE 0 - 73 20 - 15/1 - (READ/WRITE) 1 i$ 2 W/h 88 ¥ o= i3> :5 = 6 = 001504 000001 ENDING: .WORD 1 7= 3/5 2/6 177 :1F NOT EQ 0, END OF PASS DETERMINED :BY THE *WORDS READ' COUNT. *1F EQ 0, 001506 000001 WRTCHK: ,.WORD 1 001510 000000 RANDOM: .WORD 0 (2.58 X 108 WORDS) END OF PASS DETERMINED ‘BY THE SEEK COUNT. (1 X 106 SEEKS) :1F NOT EQ 0, DO AN APPROPRIATE WRITE :CHECK AFTER EACH WRITE COMMAND. :IF EQ 0, SELECT WRITE CHECK COMMANDS sRANDOMLY. :1F EQ T0 0, RANDOHLV SELECT DATA BLOCK :ADDRESS. IF NOT EQU 0. SEQUENTIALLY *SELECT DATA BLOCK ADD ESS 001512 001514 000010 000004 .SBTTL VALUES FOR FIRST OPERATICON BEGPAT: BEGCOD: ,WORD .WORD 8. 4 ;STARTING PATTERN CODE [RANGE1 - 15.] STARTING COMMAND CODE [RANGE 0 - 5) 0 = WRITE CHECK DATA ('WCKD ;) WRITE CHECK HEADER & DATA (*WCKHD' WRITE DATA (' URTDAT ) FORMAT TRACK ('FMTRK® = NOT USED) A READ DATA ('RDDAT') READ HEADER & DATA ('RDHD') ;3 ;STARTING WRD CNT [RANGE 6 = WRDCNT] ;2 3 001516 000400 BEGWC: .WORD .SBTTL TABLES, CONSTANTS, AND VARIABLE LOCATIONS 256, 000000 000000 000000 000000 000000 000000 000000 000000 000000 .LISF OF DRIVE S PERFORMING COMMANDS ORDERQ: .WORD .WORD -WORD .WORD .WORD .WORD .WORD .WORD .WORD 001542 000000 ASNLST: 001544 001546 001550 001552 001554 001556 001560 000000 000000 000000 000000 000000 000000 000000 DDRVS: ;ADDRESSES OF .WORD .WORD -WORD .WORD -WORD .WORD «WORD sA BIT SET DR VES TO BE DROPPED OOOOOOO-— .WORD (= elelelelelelelel] 001520 001522 001524 001526 001530 001532 001534 001536 001540 IS AN ASSIGNED DRIVE = NOT USED) CZRJOKO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06: ¢ TABLES, CONSTANTS, AND VARIABLE LOCATIONS =~ |2 00:52 PAGE 8-3 .WORD «WORD VAIL: 000000 OO0O0OOOO oo ;BUFFER ALLOCATION TABLE ENTRY COUNT .WORD WORD BN «WORD +WORD 8 000000 BUFTBL: 000000 8 % 8% % 8 % % % % % 8% 8 % B 000000 AITING FOR BUFFERS (=lelelelelelelelelelelelelelelele -] 001654 «WORD -WORD «WORD .WORD «WORD «WORD «WORD AITING FOR BUFFERS/PARAMETERS i elelelelelelelelelelelelelelelelele) 000000 .WORD .WORD +WORD .WORD +WORD +WORD .WORD -WORD ;LIS T OF DRIVES WAIT: .WORD «WORD 000000 001652 L.WORD " OO NNOONSNO sLIST OF DRIVES OOOOCOOOOOE .WORD «WORD +WORD OCOO0O0O0O0OCOE g COONNNNO SNVOSNOo e D d D D Loy(W IV, IV IV, TV ) —5— 8 ; ADDRESSES OF NEWLY ASSIGNED DRIVES NEWUNT: [ 8 [o Lo o Lo Yo Lo e Yo Yo o b D o (=4 o e d o 00 d 0016 WNIINVININ) = b b s [=lelelelelelels] l=l=lelelelelels] 001562 001564 SEQ 0051 ' CZRJOAD RPO7 PERF EXER MA 4.00 1-JAN-B3 12: 06:52 PAGE 8-4 TABLES, CONSTANTS, AND VA 96 880088 00177 000000 .WORD +WORD 0017 00 .WORD 00200 00 003 00%01 00 013 002022 0020%6 002032 00203% 00%06 002046 002052 8 0008 0000 000000 000000 000000 000000 000000 000000 000000 000900 000000 WORD .WORD .WORD .WORD WORD «WORD +WORD WORD .WORD .WORD WORD 002056 002060 002062 046234 046476 046740 002066 002070 002072 002074 047444 Q4770 050150 050412 00207? 00207 002100 002101 002102 151 377 161 377 17 (OMTMBL: 092104 002105 004 006 OPTBL: 002107 (02110 002111 00211§ 00211 012 016 020 022 030 8 OO 0O O 002106 002114 202115 002116 002117 002120 002121 002122 0021%2 0021 002144 002154 002164 .WORD .WORD .WVORD «WORD .WORD .0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,C DRIVES DR'VE& DRIVES DRIIE? DRIVE7 TABLE THE PARAMETER BLOCK FOR DRIVE 0 THE PARAMETER BLOCK FOR DRIVE 1 THE PARAMETER BLOCK FOR DRIVE ¢ ;ADDRESS OF THE PARAMETER BLOCK FOR DRIVE § ;ADDRESS ;ADDRESS ;ADDRESS ;ADDRESS OF OF OF OF THE THE THE THE PARAMETER PARAMETER PARAMETER PARAMETER BLOCK BLOCK BLOCK BLOCK ;DRIVER COMMAND CONTROL TABLE (USED IN RP DRIVER) 173 .BYTE BYTE .BYTE SYIE .BYTE .BYTE WCKD =1 WRTDAT -1 RDDAT RDHD FUNCTION(COHHAND) 010 6 SEE sRECAL .BYTE .BYTE .BYTE .BYTE .BYTE 12 16 50 2 30 :RELEASE :RETURN TQ CENTERL!NE :READIN PRESET :PACK ACKNOWLEDGE : SEARCH .BYTE BYTE BYTE 70 72 -1 BYTE .BYTE .BYTE .BYTE 870 7; 57 .EVEN 105 105 122 105 124 105 103 126 114 103 sREAD HEADER AND DATA CODE CONTROL TABLE 10 50 52 60 62 :DRIVE CLEAR IWRITE CHECK DATA SWRITE CHECK HEADER AND DATA SWRITE DAT : FORMAT TRACK :READ DATA sREAD HEADER AND DATA : TERMINATOR ;MESSAGE CONTROL TABLE FOR "OPTBL' TABLE MNTBL: .ASCIZ LASCIZ +ASCIZ LASCIZ LASCIZ /SEEK /RECAL /DRVCLR /RELSE /RTC FOR FOR FUR FOR DRIVE DRIVE DRIVE DRIVE sWRITE CHECK DATA sWRITE CHECK HEADER AND DATA (NOT USED) ;WRITE DATA :FORMAT TRACK (NOT YSED) ;READ DATA .BYTE .BYT .BYTE 050 052 060 062 123 122 104 122 122 §.0 .0 ;DRIVE PARAMETER BLOCK(DPB) POINTER BLKADR: .WORD DRIVEO ;ADDRESS OF .WORD DRIVE1 ;ADDRESS OF «WORD DRIVE% ;ADDRESS OF 002064 04720 002103 SEQ 0052 LOCATIONS / / / / / & 5 6 7 CIZRJOAO RPO7 PERF EXER HACRR rgk 8? 1=JAN-83 12:06:52 PAGE 8-5 CONSTANTS, AND VARIAB L ATIONS ONNOT 33 O0 TMNT OTM—Me=M NOO—OOIMNINWCNNOONMON TABLES, - SEQ 0053 CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 9 SEQ 0054 TABLES, CONSTANTS, AND VARIABLE LOCATIONS 002314 002316 00% 20 002322 002324 002326 002330 002332 002334 002336 oosgag 002342 002344 002346 002350 002352 002354 002356 002360 002420 00 ago 002520 00%560 002620 002660 : STANDARD DATA PATTERN POINTER TABLE : STANDARD DARD D DATA P ATTERN 0 DATAQ .WORD DATA1 :STANDARD DATA PATTERN 1 STNDAT: .WORD 002720 00;760 003020 oogooo 003120 003160 003220 003260 003320 0060 003262 002360 002360 002362 002364 002366 002370 002372 002374 002376 002400 002402 002404 002406 002410 002412 002414 002416 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 002420 002422 002424 002426 002430 002432 002434 002436 002440 002442 002444 002446 002450 002452 000001 000003 000007 000017 000037 000077 000177 000377 000777 001777 003777 007777 017777 037777 DATA1: 002460 002462 177776 177774 DATA2: 002454 002456 ZEROS: DATAO: .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD DATA2 DATAS DATAL DATAS DATA6 DATA7 DATA8 DATA9 DATA10 DATA11 DATA1§ DATA13 DATA14 DATA15 ZEROS ONES :STANDARD DATA PATTERN g :STANDARD DATA PATTERN :STANDARD DATA PATTERN & :STANDARD DATA PATTERN 5 :STANDARD DATA PATTERN é :STANDARD DATA PATTERN 7 :STANDARD DATA PATTERN 8 :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 PATTERN ;ALL 1'S PATTERN .WORD WORD .WORD JWORD JWORD JWORD JWORD .WORD JWORD JWORD .WORD JWORD .WORD .WORD .WORD MWORD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O ;ALL 0'S DATA PATTERN .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD .WORD -WORD .WORD .WORD .WORD .WORD 000001 000003 000007 300017 000037 800077 00177 000377 000777 001777 003777 007777 817777 037777 ;STANDARD PATTERN 1 .WORD JWORD 177776 177774 ;STANDARD PATTERN 2 .WORD .WORD 077777 177777 077777 177777 CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 9-1 SEQ 0055 ]e[Nlealv=aelvealealrealeaelellaNellellaelleelaeleelel=e] ]oA oT=dI SV O o e[t TABLES, CONSTANTS, AND VARIABLE LOCATIONS [el=lel=lalelelalelalelelel=] OVTOONI eO jelelelelelolelelelelol=l=l= ; STANDARD PATTERN 3 s STANDARD PATTERN & N DATAS: WORD +WORD .WORD +WORD +WORD .WORD .WORD «WORD B i : STANDARD PATTERN 5 CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 9-2 SEQ 0056 TABLES, CONSTANTS, AND VARIABLE LOCATIONS OONTOVONTOVONTO NT OMNTVONITO IIIIIIITNDI VOOONNANOOOOv OCO0O0O0O0O00O[=i=l=l=l=lelelelel=] OVONITNVTNT ;STANDARD PATTERN 6 (NOT WORST CASE’ : STANDARD PATTERN 7 sSTANDARD PATTERN 8 (WORST CASE) CZRJOAD RPO7 PERF EXER MACR 0 v04.0 .00 1=JAN-B3 12:06:52 PAGE 9-3 SEQ 0057 TABLES, CONSTANTS, AND VARIAB LE LOCATIONS LO +WORD +WORD 836281 eCAgotOoote0ndOot0ytA[Oee0AOlA0eeOlA0eAOl0AeOlgAeeOlneOlgeOl0eO ; STANDARD PATTERN 9 ; STANDARD PATTERN 10 o < — << — — s STANDARD PATTERN 11 ;STANDARD PATTERN 12 CZRJOAO RPO? PERF EXER MACRO V04.00 1=JAN-83 12:06:52 PAGE 9-4 SEQ 0058 [OMeNlOelMWeVlONelMOeWlOeNlMOelOelMel=lOM=d=lM=Ol=MWl=ON] Loel OCO0O0OCO0O0O0O0O0O0O0O0O0O ONTOVONTOVONTIOVONTO O0«~r—0O OMOMOOOONONYO MNMNSMSNMNSMSMS 000000 s STANDARD PATTERN 13 s STANDARD PATTERN 14 sALL 1°'S DATA PATTERN [=3= o 003260 4 e bt e Li TABLES, CONSTANTS, AND VARIABLE LOCATIONS ;STANDARD PATTERN 15 CIZRJOAD RPO7 PERF EXER MACRO V0&4.00 1-JAN-B3 12:06:52 PAGE 9-5 TABLES, CONSTANTS, 003342 003344 003346 003350 003352 003354 003356 AND VARIABLE 000000 000000 000000 000000 000000 000000 000000 LOCATIONS .WORD +WORD -WORD .WORD .WORD .WORD .WORD 00N000 800000 00000 000000 000000 000000 000000 SEQ 0059 I CZRJOAQD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 10 SEQ 0060 ERROR POINTER TABLE .SBTTL ERROR POINTER TABLE s*THIS TABLE CONTAINS THE INFORMATION FOR EACH ERROR THAT CAN OCCUR. s*THE INFORMATION IS OBTAINED BY USING THE INDEX NUMBER FOUND IN s*LOCATION SITEMB. THIS NUMBER INDICATES WHICH ITEM IN THE TABLE IS PERTINENT, 'NOTE1 'NOTEZ H M .t H . 003360 $ERRTB: % ;ERROR 1 4 003360 5 003362 6 003364 g 003366 050744 053751 054424 000000 13 11 003370 12 003372 13 003374 }g 00337 20 003404 g} 003406 000000 POINTS 10 THE DATA HEADER POINTS TO THE DATA POINTS TO THE DATA FORMAT EM1 :RH CONTROLLER EM2 DH2 D12 sUNEXPECTED ATTENTION OCCURRED EM3 DH3 :MASSBUS PARITY ERROR (MCPE=1) EM& DH4 DT4 0 :MASSBUS PARITY ERROR (PAR=') EMS :NOT USED 051055 054033 054434 000000 sRHXX DIDN'T RESPOND TO ADDRESSING DT3 0 JERROR & 051113 054061 054440 000000 g? 003420 051150 ;ERROR § 053756 054430 000000 g; DHZ2 D12 :ERRCR 6 39 003430 051204 EM6 41 003434 42 003436 (054444 000000 D16 40 003432 INTERRUPT OCCURRED :ERROR 3 3% 33 003422 34 003424 gg 003426 ;:POINTS TO THE ERROR MESSAGE DH DT DF DH1 DT1 0 051017 053756 054430 %z 25 003410 26 003412 27 003414 gs 003416 EM ;ERROR 2 }9 18 003400 19 003402 IF SITEMB IS O THE ONLY PERTINENT DATA IS (SERRPC). EACH ITEM IN THE TABLE CONTAINS & POINTERS EXPLAINED AS FOLLOWS: 054120 DH6 (RPAS = 0) CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 11 ERROR POINTER TABLE "3 SEQ 0061 ;THIS ROUTINE WANDLES UNEXPECTED TIMEOUTS 1§ 003440 011600 S 003446 6 003446 003452 022626 104401 000417 & 003442 —— 7 003512 8 003514 9 003516 10 }; 003520 005740 BADTMO: MOV ) 003454 éigss: 010046 104402 000246 (SP)+,(SP)+ 65% 4% *RESTORE STACK POINTER ::TYPE ASCIZ STRING **GET OVER THE ASCIZ JASCIZ <CRLF><LF>/UNEXPECTED BUS TIMEOUT, PC=/ MOV RO, =(SP) :SETUP FOR TYPING OUT PC START1 ;PUT "HALT(0)* INSTRUCTION HERE [f STO STOP ON UNEXPECTED TIMEOUT. :BRANCH TO START1 CMP TYPE BR BR }2 :SAVE PC WHERE THE TIME OUT OCCURED -(ROS TYPOC NOP 000404 (SP) RO ST LSBTTL START OF PROGRAM :ADJUST PC =2 YOU WISH 15 003522 }9 003530 012737 000407 177777 001332 START: MOV BR #-1,CHGADR START? ;ALLOW RHXX/RPO7 ADDRESS TO BE CHANGED *START THE PROGRAM 18 003532 012737 000400 001332 START1: MOV #400, CHGADR :CLEAR RHXX/RP0O7 ADDRESS CHANGE FLAG 001212 #1,$TESTN ::SET TEST NUMBER IN APT MAIL BOX #0 sTTY LOOP, WAIT FOR INCREMENT 19 003540 000240 -;".'t.tt.'."""""""t't'ttt't."t.QQ""'.Q!"""""'Q" f§t1: wNOP > 003542 012737 000001 21 003550 005227 (©€20000 STARTZ2: INC LSBTTL INITIALIZE THE COMMON TAGS :2CLEAR THE COMMON TAGS ($CMTAG) AREA MOV #SCMTAG,R6 ;:FIRST LOCATION TO BE CLEARED 22 003554 52 003556 001375 000005 BNE RESET 25 003560 012706 001114 003566 003572 003574 022706 001374 012706 001154 003600 012737 034742 000030 003652 012737 123456 037226 003564 005026 003606 003614 003622 003630 003636 003644 012737 012737 012737 012737 012737 012737 CLR 001100 000340 040256 000340 037640 000340 176543 003660 ‘013746 000004 003706 003714 022777 001012 177777 003716 003720 000403 012716 000032 000034 000036 000024 000026 037554 000002 003726 .4 (R6) + :0F WORD :CLEAR THE WORLD *:CLEAR MEMORY LOCATION CMP BNE MOV #SWR,R6 =6 #STACK,SP MOV #SERROR ,a#EMTVEC ;:EMT VECTOR FOR ERROR ROUTINE MOV #123456.SLONUM ;s INITIALIZE A FEW VECTORS MOV MOV MOV MOV MOV MCV + :DONE? ::LO0OP BACK IF NO S3SETUP THE STACK POINTER #340,aNEMTVEC+2 ;:LEVEL 7 #STRAP,3#TRAPVEC :;TRAP VECTOR FOR TRAP CALLS #340,a#TRAPVEC+2; LEVEL 7 #$PURDN atpuavsc :;POWER FAILURE VECTOR #340,3#PURVEC+2 ::LEVEL 7 #176543,$HINUM ::PRIME THE RANDOM NUMBER GENERATOR ::BOTH HIGH AND LOW WORDS ::S1ZE FOR A HARDWARE SWITCH REGISTER. IF NOT FOUND OR IT IS SSEQUAL TO A *'=1"', SETUP FOR A SOFTWARE SWITCH REGISTER. 003664 012737 003720 000004 003672 012737 177570 001154 003700 012737 177579 001156 0037264 MOV 1oV @#ERRVEC,-(SP) ;;SAVE ERROR VECTOR CMP BNE #-1,35WR 668 $:TRY TO REFERENCE HARDWARE SWR $:BRANCH IF NO TIMEOUT TRAP OCCURRED MOV MOV MOV 175240 648: BR MOV RT] #64S,IMERRVEC #DSWR, SWR #ODISP.DISPLAY 65% #65%, (SP) ::SET UP ERROR VECTOR $:SETUP FOR A HARDWARE SWICH REGISTER ::AND A HARDWARE DISPLAY REGISTER :2AND THE HARDWARE SWR IS NOT = =1 S:BRANCH IF NO TIMEOUT P3SET UP FOR TRAP RETURN C 4 RJOA 0 RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 11-1 1 N ITIALIZE THE COMMON TAGS 0037%6 003734 003742 MOV MOV MOov .SBTTL :s TYPE 177777 004024 ::69%: 68$: LSBTTL 000042 001226 000001 001154 000176 001150 N AN NN ; sRESTORE ERROR VECTOR $PASS s CLEAR PASS COUNT :sTEST USER SIZE UNDER APT :sYES,USE NON=-APT SWITCH 67% #$SWREG, SWR Mov ::NO,USE APT SWITCH REGI REGISTER #BADTMO,ERRVEC #PR6,ERRVEC+2 TYPE REV TYPE PROGRAM NAME sSETUP FOR UNEXPECTE sLEVEL 6 :TYPE PROGRAM [D, REV LEVEL & PATCH LEVEL T?ECNAHE 2F1THE PROGRAM IF BNE TYPE BR JASCIZ 68% 69% 8% MEOUT FIRST PASS ::FIRST TIME? :sBRANCH IF NO ssTYPE ASCIZ STRING ::GET OVER THE ASCIZ <CRLF>3RP0O7 PERFORMANCE EXERCISERQ<CRLF> GET VALUE FOR SOFTWARE SWITCH REGISTER 1ST ans? 70% :sARE WE RUNNING UNDER XXDP/A(T? : ;BRANCH IF YES 7 :;BRANCH IF YES SENV. M SWR,#SWREG 71% 708: 71$%: ssARE WE RUNNING UNDER APT? 23SOFTWARE SWITCH REG SELECTED? :sBRANCH IF NO 78 JsGET SOFT=SWR SETTINGS #1,8AUT0B ssSET AUTO-MODE INDICATOR ;THE FOLLOWING FINDS OUT THE PROGRAM CONTROL MODE: 001430 001430 &~ R 28888 PORINUNONURININD WIWWNWANNONONND 288 s [=]=] OO [=l=1s] 2888 000041 1%: 004174 001430 (MANUAL), ACT11, XXDP CHAIN OR DUMP MOV XXDP #-1,3041 3% ar40,XXDP TST FY 7Y CLR CMPB BNE &~ b b b b b b b b b b (o XY IY. P AV [V NI, N N ~=1~] o o ;PAPER TAPE o000 lelelelele] (=] P oF 2 af af i L7 1Y} \hbtm-‘ccflflg\flbvfl\) & N =DONO (SP)+,a#ERRV EC 3 #APTSIZE,SENVM MOV MOV 001432 VAWANE :sPOINT TO SOFTWARE SWR sSETUP "'TIMEOUT'' TRAP VECTOR FOR UNEXPECTED BUS TlHEgu;? 003440 000300 000001 #SWREG, S R #D1SPREG DISPLAY BIT8 BEQ 67%: SEQ 0062 CMPB BHIS CLRB BEQ TYPE BR +ASCIZ g;.xxoP ‘525" A VALID NUMBER ? XXDP :NO, DEFAULT TO DRIVE O 2% 73% :BR IF NEITHER ::TYPE ASCIZ STRING 72% <CRLF>/NOT =(SP) XXDP, (SP) 1 001203 ;CLEAR °*XXDP' LOAD DEVICE STORAGE :LOADED FROM AN RP0O7 ? (UNKNOWN) :BR IF NOT sGET DEVICE INDICATOR AND NUMBER 0 ;CHAIN MODE OR ACT11 AUTO ACCEPT ? 1:GET OVER THE ASCIZ TESTING DRIVE ;CLEAR WORD ON STACK sGET DRIVE ADDRESS sTYPE THE ADDRESS sONLY 1 SCRLF §s / CHARACTER :SUPRESS LEADING ZEROS ; CR=LF :CR-L *GET NUMBER OF DRIVES CZRJOAD RPO7 PERF EXER MACRO V04,00 1-JAN=83 12:06:52 PAGE 11-2 SEQ GET VALUE FOR SOF TWARE SWITCH REGISTER 54 004240 §5 004244 56 006246 004252 i oosz§7 001055 104401 000410 57 004574 005046 58 004276 59 006302 60 004304 61 004305 62 004306 04312 006400 66 004400 67 006406 68 004410 69 004412 70 71 72 73 74 113716 104403 001 000 104401 000432 004737 105737 001415 105737 004416 004420 004426 004432 006434 001403 113737 005737 001411 013737 77 004444 78 004450 79 006452 105737 001002 004737 ;2 004442 000405 80 004456 81 006466 82 004472 83 004476 84 004502 85 004506 86 004510 87 004512 88 004516 89 ooas;z 90 004530 91 004534 92 004540 93 004544 013737 013737 005037 012705 005025 022705 001374 012706 005037 013737 005037 005037 005037 005037 98 004562 004566 004572 004576 004602 004606 004612 C06616 102 004622 005037 005037 005037 005037 005037 005037 005037 005037 105 004634 001402 94 006550 95 004556 104 004626 013737 005037 005037 032777 177777 2%: 004254 5i;ss: 001430 004314 033430 001226 001256 001262 001274 001262 001272 001150 040560 040562 001342 001344 801475 001462 001334 046366 046630 047072 047334 047576 050040 050302 050544 001424 000001 001346 001464 174320 6%: -(SP) BR is JASCIZ XXDP,(SP) 76$% /, HALT PROGRAM, PC,$TKINT SENV 5% $VECT1 :CLEAR WORD ON STACK :GET DRIVE ADDRESS :TYPF DRIVE ADDRESS :ONLY 1 CHARACTER :SUPRESS LEADING ZEROS :3TYPE ASCIZ STRING $:GET OVER THE ASCIZ CLEAR LOC. 40 AND RESTART PROGRAM. /<CRLF> ;TURN ON THE KEYBOARD INTERRUPT *RUN UNDER APT MODE *NO,DO NOT BOTHER *NEW VECTOR ? BEQ MOVB ST BEQ MOV 43 SVECT1,SRPVEC $BASE 6% $BASE,SRPADR *NOT :NEW :NEW *NO :NEW TSTB BNE JSR $SAUTOB 6% PC,BUSADR ;RUNNING IN AUTO MODE ? SYES :CHECK RHXX/RP07 BUS ADDRESS BR 5% 002056 001100 177776 001312 001340 4$: ;FIRST TIME THRU HERE ? 3s *NO 75% ::TYPE ASCIZ STRING 748 <:GET OVER THE ASCIZ <CRLF>/T0 TEST DRIVE / 1 0 JSR TSTB REQ TSTB 001256 001272 001274 001314 001520 CLR #-1 MOVB TYPOS BYTE .BYTE TYPE ii?bs: 062436 INC BNE TYPE BR LASCIZ o MOV MOV CLR MOV CLR CMP BNE MOV CLR MOV CLR CLR CLR CLR MOV CLR CLR CLR CLR CLR CLR CLR CLR CLR CLR BIT BEQ 6% LOAD IF = 0 VECTOR BASE ADDRESS ? BASE ADDRESS SRPADR,RPADR $SRPVEC,RPVEC STATIN #ORDERQ,RS (RS) + #BLKADR,RS 7% #STACK,SP PS HERTZ,ONESEC HOUR MINUTE SECOND INTRVL+2 ;LOOK FOR END OF CLEAR AREA :BR IF NOT FINISHED SSETUP THE STACK POINTER :CLEAR THE PROCESSOR STATUS WORD :RESTORE ONE SECOND COUNTER VALUE :CLEAR THE HOUR'S COUNTER :CLEAR THE MINUTE'S COUNTER :CLEAR THE SECOND'S COUNTER :CLEAR INTERVAL COUNTER DRIVEQ+SFIRST DRIVE1+SFIRST onlvsgosrlasr DRIVES+SFIRST DRIVEL+$FIRST DRIVES*SFIRST DRIVEG+SFIRST DRIVE7+SFIRST RDONL Y :RESET SFIRST FLAG :RESET SFIRST FLAG SRESET SFIRST FLAG :RESET $FIRST FLAG :RESET $FIRST FLAG :RESET $FIRST FLAG :RESET SFIRST FLAG :RESET $FIRST FLAG *ASSUME READ/WRITE 8$ ‘BR IF NO :LOAD ADDRESS INTO DRIVER :LOAD VECTOR INTO DRIVER sCLEAR PERFORMANCE SUMMARY TYPEOUT FLAG sSTART OF AREA TO CLEAR CMPTIM,CMPTIM+2 :INIT COMPARE TIME COUNTER CFLAG ;CLEAR THE 'CONTROL C' FLAG #540,aSWR FOR DRIVE FOR DRIVE FOR DRIVE FOR DRIVE FOR DRIVE FOR DRIVE FOR DRIVE FOR DRIVE CONDITION 0 1 g 4 S 6 7 ;1S EXERCISER IN "READ ONLY' MODE - 2 3 001424 WIS N = OO 7 004642 INC RDONLY SEQ 0064 ;LOCK PROGRAM IN "READ ONLY' MODE WNIWNWN SO N—OO=OCO,rOWND == OVIOWNIO = =t s sON == 2NO—=O R~ O©OCOCOo S-S 001150 TSTB 177777 INC 064330 BNE 9%: 001334 060103 10%: 057017 11%: 064440 12%: 13%: :BR IF NO (SP)+,R0 CFLAG TSTB (RO) ;WAS RESPONSE A CARRIAGE RETURN ? TSTB 1(RO) ;WAS CMPB #'Y, (RO) BNE 000116 138 :BR _IF YES ;FIRST TIME THRU HERE ? ;TYPE *TYPE HELP MESSAGE (L) *READ THE ENTRY :SAVE ADDRESS OF RESPONSE ‘WAS (*C) TYPED? BEQ 000131 sAUTO MODE ? 13% #=1 TYPE RDLIN MOV ST BNE 000001 $AUTOB BEQ CMPB BEQ TYPE BR TYPE BR TYPE LMSHELP 10$ 11% 10$ 12% #°'N, (RO) 13$ BADENT * ‘BR IF YES :BR IF YES (DEFAULT) IT TERMINATED WITH CARRIAGE RETURN ? :BR IF NO SWAS IT A *Y' RESPONSE ? ‘BR IF YES SWAS IT A °N' RESPONSE ? :BR IF YES :TYPE BAD ENTRY MESSAGE $ NODFLT :TRY AGAIN :TYPE 'NO DEFAULT' JHELPTX sTYPE HELP TEXT MESSAGE s N 2 :TRY AGAIN sAUTO SIZE FOR_RH70 CONTROLL;? gND DETERMINE IF IT IS —_,O=O=0 8‘*'\)0‘\0 guwl\n\:-o-o NONOON S OO0O00O0O VIV S & OO000O0O0 VIVAVIWVAWVAVA - \VAVIWAA OO o0 OO0O0C0 OO0O000O0 o0 OCO000 NOWNWVN=ONOO=0OONONNN :JUMPERED FOR 22 OR 32 REGISTER N W =OOVENOWVS NN = OOV ONON (= l=l= =4 P OO == 2O 2O o == OOoNON OO0O000O0—-00 o 3= B DBNNSNSNSN=SNNS S ~ =~ S BN NONSNONOSS = O O 00 N WVSWN <O 000 NO W B OO OO WWWVWAVAVAWAUIWA S 85 BN 8 85 8 8 5 5 85 WU W N N N 8%: M5 sSEE IF OPERATOR WANTS HELP TEXT PRINTED N = O O 00 NN ES W = D D D D D D ) e D D ) i D e D ) D D e D D ) D e e i D el D el il ol -t 0 D d o ) D e b D D D D D d D md by D < o NN NN N RO N NINININININD = b e cd e d d ek =2 Oo i~ -> 6 004636 —h s s 0 RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 11-3 LUE FOR SOF TWARE SWITCH REGISTER SIZE70: CLR BIC RHEXT sCLEAR RPBAE OFFSET MoV MOV MOV ERRVEC,=(SP) #2% ,ERRVEC $RPADR,RO sSAVE CONTENTS OF ERROR VECTOR sSETUP 'TRAP' RETURN ADDRESS sGET RPCS1 ADDRESS Mov ST TST #10. ,R1 (RO)+ (RO) + sGET NUMBER OF REGISTERS TO CHECK sTRAP [F NOT A VALID RPBA% sTRAP IF NOT A VALID RPCS ADD #50,R0 ;CLEAR CPU TYPE REGISTER sGET REGISTER OFFSET FOR RH70 MoV TST DEC BNE ggv #50 ,RHEXT (RO) + R1 1% gz‘.RHEXI :BR IF NO sLOAD OFFSET FOR RPBAE (32 REGISTER RHW) 2%: :?Y #3%,(SP) sSETUP RETURN ADDRESS 3%: MoV MOV $RPADR,RO RHEXT,R1 sGET RPCS1 REGISTER ;GET RPBAE REGISTER OFFSET 1%: 000074 005040 #174000,8CPUOP sLOAD OFFSET FOR RPBAE (22 REGISTER RHW) sTRAP IF NOT A VALID REGISTER ;DONE WITH ALL 32 REGISTERS ? BEQ ADD 31 RO,R1 :BR_IF NONE :GET RPBAE REGISTER CMP #3,(R1) :ARE THE EXTENDED BITS SET BIS #AT7!A16,(R0O) :SET EXTENDED ADDRESS BITS IN RPCS1 IN RPBAE ? CZRJOAO RPO7? PERF EXER MACRO V04.00 1=JAN=-83 12:06:52 PAGE 11-4 SEQ 0065 GET VALUE FOR SOF TWARE SWITCH REGISTER 164 005064 165 005066 166 00507 001010 005011 011966 169 005100 oss 167 00507 168 005076 };? 005106 842 26 o19g 012637 176377 030000 000004 001234 };g 174 005112 175 005116 176 005120 177 005124 178 005132 179 005140 180 005146 181 0051564 182 005162 183 005164 184 005172 185 005200 186 005202 187 005206 188 005212 189 005214 190 ooszgz 191 005230 19% 005232 193 005240 ;gg 005246 005227 oo1og; 004737 013737 012737 01§737 013737 023727 101403 012737 162737 000241 006037 105737 001403 16%737 023737 003406 013737 013737 BIS #BIT13'BIT12,8$CPUOP BIC BNE 48: MOV # C<A177A16>, 48 :BR IF NO *CLEAR EXTENDED ADDRESS BITS IN RPBAE *SAVE RPCS1 REG CONTENTS (SPY+ ARE THE EXTEND BITS CLEAR IN RPCS1 ? :BR IF NO (SP)+,ERRVEC’ ;SET THE 11/70 CPU TYPE CODE ;RESTORE CONTENTS OF ERROR VECTOR 177777 062304 SIZMEM: 062434 oooog1 001330 001656 001330 001660 064330 001330 160000 064330 001656 18: INC BNE JSR #-1 1% PC,$SI12E MOV #ENDPGM ,BUF TBL +2 MOV MOV MOV 160000 001660 001660 2%: 003000 001466 001660 001660 3%: 001660 001466 001466 060606 001660 001150 4$: CMP BLOS MOV SuUB cLC ROR 1STB BEQ SUB CMP BLE MOV MOV SL§1AD LSTAD #1,BUF TBL LSTAD,BUFTBL+4 ;FIRST TIME THRU HERE ? ‘BR IF NO *SEE HOW MUCH MEMORY ON SYSTEM ;SAVE THE gAST ADDRESS :LOAD NUMBER OF BUFFERS :STARTING ADDRESS OF BUFFER :LAST ADDR TO BUFFER ALLOCATION TABLE STAD,#160000 :OVER 28K ? $ *NO #160000,BUF TBL+4 ;XXDP MAX MEMORY 28K #ENDPGM ,BUF TBL+4 JSUBTRACT PROGRAM SPACE ;CLEAR THE *C* BIT BUF TBL +4 :CONVERT TO WORD COUNT $SAUTOB JRUNNING IN AUTO MODE ? 3 ‘BR IF NO #1536. .BUFTBL+4 :SUBTRACT *XXDP' LOADER SIZE (1.5K WORDS) WRDCNT.BUF TBL*+4 :1S MAX WORD COUNT TOO LARGE ? 43 :BR IF NO BUFTBL+4 ,WRDCNT ;USE MAX AVAIL MEMORY AS MAX WRD CNT WRDCNT ,PARLST+2 :VALUE FOR THE PARAMETER TABLE ;SEE IF THE OPERATOR WANTS TO CHANGE ANY PARAMETERS 198 005246 199 005252 040020 205 005260 209 005264 210 005266 0r1150 gtf 005276 001334 000004 511 005274 214 005302 217 005312 218 005316 219 005320 gzo 005322 21 0053%6 52; 005330 23 005332 224 005336 225 005340 226 005344 227 005346 228 005352 43 (R1) (RO) ,=(SP) ;ROUTINE TO DETERMINE BUFFER MAX WORD COUNT }gg 515 oossog 1€ 005310 BNE CLR MOV 060226 012600 005737 001353 105710 001454 105760 001006 122710 001608 122710 001443 104401 000735 LKPAR: PWRFLG SETVEC ;RETURNING FROM POWER FAIL ? ‘BRANCH IF YES BEQ 8% ‘BR IF YES TSTB BEQ BIT 173660 1$: CLR TYPE RDL IN MOV 001334 000001 000131 000116 060103 TST BNE 28: ST BNE 1ST18 BEQ T1ST1B BNE CMPB BEQ CMPB BEQ TYPE BR $AUTOB 1$ #5402, aSWR CFLAG JMESFE (SP)+,R0 CFLAG LKPAR (RO) 13 1(RO) $ #'Y, (RO) #'N, (RO) 8$ LBADENT (KPAR JRUNNING IN AUTO MODE ? :BR IF NO :DOES USER WANT MANUAL INTERVENTION ? :CLEAR CONTROL C FLAG :TYPE 'DO YOU WANT TO WRITE ANYWHERE ON MEDIA (L) N ? ‘READ THE ENTRY *SAVE ADDRESS OF RESPONSE *WAS IT CONTROL C ? ‘BR IF YES ‘WAS RESPONSE A CARRIAGE RETURN ? ‘BR IF YES sWAS IT TERMINATED WITH CARRIAGE RETURN ? ‘BR IF NO TWAS IT A 'Y' RESPONSE ? sBR IF YES ‘WAS IT A °N' RESPONSE ? ‘BR IF YES STYPE BAD ENTRY MESSAGE STRY AGAIN : 9 005354 0 05360 SEQ 0066 > > <O 0 RPO7 PERF EXER MACRO v04.00 1;JAN-83 12:06:52 PAGE 11=5 LUE FOR SOF TWARE SWITCH RECISTE NININI NIANINININININLNINIAL NN NIRL NN NN NN NN N NN AN 001424 4%: 001334 000116 060103 5%: 057017 6%: 001422 7%: 104401 060451 8s: 005737 001424 9%: CFLAG CLEAR CONTROL C FLAG (SP)+,R0 CFLAG LKPAR (RO) CONTINUE i 7 :READ THE ENTRY :SAVE ADDRESS OF RESPONSE :WAS lT CONTROL C ? :BR IF YES gaslgfssgNSE CARRIAGE RETURN ? 1(R0O) gasllf TERMINATED WITH CARRIAGE RETURN ? #'Y, (RO) 7 O;N.(RO) :WAS IT A *Y* RESPONSE ? ,BADENT :TYPE BAD ENTRY MESSAGE :TRY AGAIN +OVRWRT YPE' 060526 001334 001150 13%: 060706 i NODFLT éS ??OGSAH LOCKED IN ‘'READ ONLY'® MODE ? +MREAD sTYPE CFLAG $AUTOB SETVEC sCLEAR CONTROL C FLAG 13$ 000006 ENTPR: '+ PROCRAM IS LOCKED IN 'READ ONLY' MODE +' ? : TYPE ‘' CHANGE PARAHETERS .g :READ THE ENTR :SAVE ADDRESS OF RESPONSE :WAS (*C) TYPED? :BR IF YES ~- o O -~ M o :WAS RESPONSE A CARRIAGE RETURN (DEFAULT °N*)? :BR IF_YES gasIT TERMINATED WITH CARRIAGE RETURN ? e 15%: 060604 031110 001466 '+ TESTING WILL OCCUR ON FE CYLINDER ONLY +* ggN?INGegN AUTO MODE 2D puy o 14%: :BR_IF YES RDONLY MMAD A~ 060103 YES :WAS l' A 'N' RESPONSE ? sTYPE OV 000116 :BRIF LFEONLY o<~ 000131 F_NO ;ENABLE TEST ANYWHERE OPTION TSTANY 9% LAG 000001 ! CUSTOMER DATA WILL BE OVERWRITTEN ! :TRY AGAIN +ASKPAR 001334 ? :TYPE "NO DEFAULT' (s O S OOMNO ?30 sSNosNO S NNININ) = = = O WA NNOO WV osoN o CLR TYPE O<s ~ N W &~ OO0 (=l=l=l=l=l=]=] (== o COO000 COCOO00O 005037 ;PRO?RAHE§UNN1NG IN READ ONLY MODE 7% 5% 000131 0uv1402 104401 RDONLY 33 000001 05444 05446 P 18T BNE PP AT A<PD \l‘\.fl 62 =l=l=l=lalelelalelalel= 00 00 3%: \NW =00 W S W=OONOWNS NN =OVONOWVS NN =O VRNV gooooo VIS N = mN — 0 [21lm)] J #PARLST ,R3 IF _NO iWAS IT A V' RESPONSE ? BR IF _YES ;WAS IT A "N RESPONSE ? :BR_IF YES s TYPE BAD ENTRY MESSAGE ;TRY AGAIN ;PARAMETER TABLE ADDRESS 000006 PC,PARENT WRDCNT , #6 :GET THE PARAMETER ENTRY 001466 #6 ,WRDCNT ;SET 'WRDCNT® TO THE MINIMUM VALUE SETVEC és }NEI'U?g(NI' VALUE 0K ? :DISPLAY DRIVE STATUS AND SET UP THE OT MX om MDD SETVEC: JSR JSR OdAZ = <M= PO *=Z2Mew = —D =T VnIVNNM 173310 1%: CLR 2%: TYPE PROGRAM RETURN H PC,CKC LK PC RPI NIT #-1,5A SAVEFG #-1 1% PWRFLG 1% #SW02,aSWR R& R4 ,=(SP) ; g POWER FAiL ? HE DRIVE STATUS TABLE ? 12% DRSTAT L SCRLF VER FLAG EP OINTER ES TATUS' <~ O==20000000000 ::SAVE R4 FOR TYPEOUT ::TYPE DRIVE NUMBER ::60 TVPE"OCTAL ASCII ~ — PROGRAM WILL USE. o oo o oo ONONO w NS &H WINANIN) = = O o S OSSOSO wh VWAV 040522 SEQ 0067 ..TVPE 2 DIGIT(S) : SUPPRESS LEADING ZEROS ‘TYPE 4& BLANKS :CHECK DRIVE'S STATUS :BR IF UNSAFE :BR IF ONLINE 040464 o o ~ W o o NN NN N N NG N NN NN B NN NN N N NN N NN N OOVDNO VS WN =0V ¢ =JAN=83 12:06:52 PAGE 11-6 : THE [olelelelololelelelelelel=] slelelelelelelalelelal=} NN N NN NN NN N N N NN PINININININININD = b b d b d CZRJOAO RPO7 PERF EXER GET VALUE FOR SOF TWARE 000460 104401 056607 4%: 104401 056751 5%: 005737 001430 6%: TYPE BR TYPE o 63 006024 364 006026 7%: 8%: f1s : CHECK NEXT DRIVE NOTPRS sDRIVE NOT PRESENT s CHECK NEXT DRIVE UNTOFF sDRIVE OF FL INE sPRINT DRIVE TYPE f1s % 13 NOTSAF :DRIVE UNSAFE TST XXDP .LOADED FROM THIS DEVICE ? TYPE 001430 056620 056530 TYPE TYPE 7% XXDP,Ré& 7% LODEV f1s TYPE :BR IF NO .EOA?ED BROH THIS DRIVE ? sTYPE 'LOAD DEVICE' sTYPE 2 BLANKS ) ,RO DRVTYP(R4 :GET DRIVE TYPE #5.R0 9% lS DEVICE AN RPO7 ? RO 006026 #$RPO7,10% 057102 006026 #$RPO7P,10% .WORD :PRINT DRIVE LUNTON BLNKS?2 040464 057075 000005 10;: s SEE lf OFFLXNE OR NONEXISTENT :BR IF NONEXIS TENT :BR IF OF FLINE :DRIVE NOT AN RPO7 BR 056761 &» VIV ~ ~ °§°°°°°°°O NOTRP 3%: 000413 o 4% 056700 056715 000416 OCOO000000 3% 104401 000455 05746 DRVTYP(R&) sDRIVE ONL INE :ASSUME ADDRESS OF RP0O7 MESSAGE : TYPE IT IF YES ;ASSUME ADDRESS OF RP0O7+ MESSAGE :TYPE THE DRIVE TYPE MESSAGE IMESSAGE ADDRESS HERE CZRJOAO RPO7 PERF EXER MACRO V04,00 1-JAN-83 12:06:52 PAGE 11-7 GET VALUE FOR SOF TWARE SWITCH REGISTER 365 366 006030 006304 368 006036 369 006040 0062%4 004737 367 006032 370 006044 371 006052 g;g 006054 016402 032762 001002 104401 002056 045262 000004 374 006060 375 006062 005204 020427 000010 77 006070 104401 0012C3 76 006066 378 006074 001272 : CHANGE TO WORD INDEX ASR JSR hé PC,SVRHXX :CHANGE TO BYTE_INDEX sSAVE ALL REGISTERS BNE TYPE 118: "LKADR(R4) ,R2 OILV $RPDS(R2) 1% +NINLEV :GET BASE ADDRESS .lNTERLEAVE SECTOR SET ? :BR_IF YES :TYPE NON=INTERLEAVED MESSAGE INC CMP R4 R4, 4B, .INCREHENT DRIVE NUMBER/TABLE POINTER ;FINISHED ? TYPE +SCRLF s CR=LF BNE 12%: SEQ 0068 R4 BIT 056776 6 ASL MoV 000200 D 2% :BR IF NOT CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 12 GET VALUE FOR SOF TWARE SWITCH REGISTER 1 E 6 SEQ 0069 ;INITIALIZE PROGRAM PARAMETERS FOR STARTUP g& 006074 004737 033430 STA: 006100 012737 142;00 001446 MOV PC,STKINT :INITIALIZE THE KEYBOARD INTERRUPT HANDLER #142200,ENDCON :INITIALIZE NORMAL XFER COUNT(LSB) 6 006114 BIT #SW9,3SWR S 006106 012737 7 006122 001406 032777 007540 001000 8 006124 ‘3 006132 01%737 012737 030440 001730 11 006140 1; 006144 13 006146 105737 001406 012737 001226 16 006162 17 006166 105737 001003 005737 001150 }g 006154 18 006170 53 006174 21 006176 22 006200 23 006202 24 006204 25 006210 26 006212 27 006216 28 006220 29 006224 30 006226 31 005232 32 006236 33 006242 34 006250 35 006252 36 006256 37 006262 38 006266 39 006270 40 0062764 21 006302 012737 003454 005001 005002 005003 005737 001403 123701 001433 105761 003430 016300 004737 004737 032760 001402 010062 004737 005737 001007 005060 112760 004737 4% 006306 022322 44 006310 4S 006312 46 006316 47 006320 23 006324 S0 006326 51 006334 005201 006110 000366 001450 173032 1%: 001446 001450 001332 3s: 4$: 001430 5%: 002056 030104 031010 000004 000200 001566 030322 040020 000132 177776 020250 020127 003732 005037 000403 000007 012737 005037 000001 040020 6%: 000026 7%: 001332 001334 B8%: 9%: #7540,ENDCON+2 ; (MSB) 1% :BR IF NO :D0 YOU WANT SHORT RUN TIME (Sw9=1) ? MOV MOV #030440,ENDCON #1730 ,ENDCON+2 1ST8 BEQ MOV SENV 2% #006110,ENDCON TST8 BNE ST $AUTOB 38 BLE CHGADR 8% :RUNNING IN AUTO MODE :BR IF YES CLR CLR CLR TST BEQ (MPB BEQ 1STB BLE MOV JSR JSR BIT BEQ MOV JSR ST BNE CLR MOVB R1 R2 R3 XXDP 5% XXDP,R1 7% DRVSTA(R1) 7% BLKADR(R3) RO PC,CLRDPB PC,GETID #ILV,SRPDS(RO) 6% RO,NEWUNT(R2) PC,DRVPRM PWRFLG 7% $FIRST(RO) #-2,8PACK(RO) :DRIVE # ;AVAIL TABLE INDEX :DRIVER * 2 :LOADED FROM THIS DEVICE ? :BR IF NO :LOADED FROM THIS DRIVE ? :BR IF YES :DRIVE ON LINE ? :NO ;LOAD DPB ADDRESS :CLEAR DPB BLOCK ;GET DRIVE SERIAL NUMBER ;INTERLEAVE SECTOR SET ? :BR IF NO :LOAD DPB ADDRESS TO ABAIL QUEUE :SETUP DRIVE PARAMETER LIMITS ;RETURNING FROM POWER FAIL ? :BRANCH IF YES sRESET S$FIRST FLAG FOR FIRST 204 START :SETUP COMMAND 'WT*® (WRITE DATA AND TEST) (R3)+,(R2)+ : INCREMENT INDEX MOV 2%: 040454 MOV BEQ 001446 001450 001430 JSR JSR CMP INC #366,ENDCON+2 PC,SEQPAR R1 CMP BLE CLR HR 1,87 43 CHGADR 9% MOV CLR #1,CFLAG PWRFLG :INITIALIZE (1/4 OF NORMAL) XFER COUNT(LSB) ;(MSB) :APT SCRIPT MODE ? :NO ;INITIALIZE (1716 OF NORMAL) ; (MSB) XFER COUNT(LSB) ? ;START AT 200 ? :NO :SETUP SEQUENTIAL PARAMETERS FOR WRITE :NEXT DRIVE :ALL DRIVES ASSIGNNED ? :NO :CLEAR START FLAG :DUMMY *CONTROL C* FLAG :CLEAR POWER FAIL FLAG CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 13 SEQ 0070 MAIN PROGRAM 1 %L 006340 - 005737 001334 006344 001407 S 006346 6 006352 7 00635¢ 8 006360 18 006364 005737 oo1ao; 000137 004737 001520 007234 026454 }1 .SBTTL MAIN: 1%: %" $: MAIN PROGRAM TST BEQ TST BEQ JMP JSR MAINDA: MOV 15 006374 16 006376 17 006400 005715 001004 005725 1$: 19 006404 001373 18 006402 %g 006406 012705 001544 2%: 005303 ;WAS (*C) TYPED? ‘BR IF NO PC,KSR *SERVICE THE KEYBOARD ORDERQ 2% IDLE sCHECK FOR DRIVES TO BE DROPPED 1§ 006364 012703 000010 14 006370 SFLAG $ :DRIVE COUNTER (RS) 3$ (RS)+ *SEE IF ENTRY AT PRESENT POSITION iBR IF THERE 1S ONE P INCREMENT TO NEXT TABLE POSITION IDDRVS RS DEC R3 BR MAINI BNE 000437 #8..R3 MOV ST BNE ST P ANY onxvss IN ORDER QUE ? ‘BR IF NO, ELSE SLET ALL DRIVES FINISH ORDER 1% .ADDRESS OF °'DROPPED DRIVE' TABLE *DECREMENT DRIVE COUNTER BR IF MORE TO CHECK 1GO CHECK FOR NEW ASSIGNED DRIVES 22 006410 25 006414 24 006416 25 006420 26 006422 27 006424 28 006426 012701 005711 001404 021115 001412 005721 000772 001610 3%: L%: MOV TST BEQ CMP BEQ TST BR #AVAIL R (R1) 5% (R1),(RS) 7 (R1)+ 4 ;ADDRESS OF ‘AVAILABLE DRIVES' TABLE :IF 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 30 006430 31 006434 32 006436 3 006440 012701 005711 001760 021115 001632 5%: 68: MOV ST BEQ CMP 0UA11 R1 (R1 2% (R1),(RS) 35 006444 39 006446 005721 000772 TST BR 7% :ADDRESS OF THE 'WAIT® BUFFER TABLE AT THE END OF "WAIT' TABLE ? ‘BR IF YES ;1S DRIVE IN THE ‘WAIT®' TABLE ? (R1)+ 6% ‘BR IF 006450 011100 MOV (R1) ,RO :PUT THE DRIVE'S BLOCK ADDRESS IN RO 40 006456 41 006462 004737 104401 026146 057321 JSR TYPE PC,STIME ,DASHS YVPE ELAPSED TIME STYPE ‘eeeee &6 006476 &S 006500 005015 004737 022200 CLR JSR (Rfi) PC,CMPRES 4 006442 001402 BEQ 39 006452 104401 001203 &2 006466 057357 104401 7%: TYPE 43 006472 004737 025042 29 006504 000735 :g JSR B8R LSCRLF +MSGDRP PC , ONE SUM 28 ‘CR-LF TVPE ‘DROPPED, °* STYPE ONE oaxvé SUMMARY CLEAR THE 'DROP DRIVE® TABLE ENTRY COHPRESS THE RESPECTIVE TABLE *SEE IF ANY MORE DRIVES :LOOK FOR DRIVES TO BE ASSIGNED 50 006506 012703 000010 51 006512 52 TYPE YES NO. INCREMENT °‘WAIT® TABLE ADDRESS *AND CONTINUE LOOKING 006514 005001 oosoog §3 006516 00500 54 ooosgo 005765 55 0065264 e ooosie 57 006530 MAIN1: 001005 005725 005201 001566 1$: 28: MOV #8.,.R3 :DRIVE COUNT CLR “% SYAVAIL® INDEX CLR (LR ST BNE ST INC R1 R NEWUNT (RS) 38 (RS)+ R1 SASSIGN LIST INDEX *NEW DRIVE INDEX *NEW DRIVE IN THIS POSITION ‘BR IF THERE IS L INCREMENT RS P INCREMENT ASSIGN INDEX CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 13-1 SEQ 0071 MAIN PROGRAM 58 006532 59 006534 gg 006536 005303 001371 000442 006540 006544 104401 104401 63 64 006550 010146 006552 006554 00655 104403 002 000 001203 056601 3%: 056573 056531 001566 032770 057623 001610 76 006614 016562 001566 001610 156137 040550 001542 75 006622 76 006626 005065 77 006634 005037 ;3 006642 000731 78 006640 005722 001566 032020 99 006734 100 006740 005002 105737 001030 105737 001023 012737 013737 005037 005037 005037 005037 013737 $:SAVE R1 FOR TYPEOUT ::TYPE DRIVE NUMBER ;360 TVPE--O(TAL ASCII :3TYPE 2 DIGIT(S : SUPPRE $S LEADING ZEROS 48: , COMMA "BLNKS1 NEWUNT(RS) ,RO PC, TYPDRV ,ASGND AVAIL (R2) S58: MOV NEUUNT(RS).AVAIL(RZ) :MOVE ADDR OF DRIVE xuro AVAIL LST ATABIT(R1),ASNLST ;SET DRIVE ASSIGNED INDICATOR BEQ ST BR CLR BISB CLR 104401 000137 001150 000001 001312 001340 001342 001344 001472 001462 060124 031744 106 006762 005060 000130 004737 004737 020102 020160 001632 004737 012660 00142 017512 000006 005060 000116 °'AVAILABLE' MAIN2: 001542 101 006742 1o§ 006746 109 006772 110 006776 R1,=(SP) TYPE TYPE MOV JSR TYPE 53] sTHE 001632 }3; 006766 :CR=LF S'DRIVE® 5¢ (R2)+ 4 'fv rvpe *BLANK :PUT ADDRESS OF DPB IN RO :TYPE DRIVE SERIAL NUMBERS'STARTED' AT eno OF AVAILABLE TABLE ‘BR IF YES :INCREMENT AVAILABLE TABLE INDEX :CONTINUE LOOKING FOR END OF TABLE NEWUNT (R5) :TAKE DRIVE OUT OF NEW DRIVE TABLE AUTLST :CLEAR AUTO ASSIGN 2% :LOOK FOR MORE DRIVES (R2)+ :INCREMENT AVAILABLE TABLE POINTER :GET PARAMETERS. BUFFER SPACE, AND START ORDERS FOR DRIVES IN 005762 001435 016200 005046 103 006750 106 006754 105 006760 ,SCRLF DRVMSG BR g% 96 006724 gg 006730 TYPE TYPE ST 81 84 006644 85 006646 86 006652 87 006654 88 006660 89 006662 90 006670 91 006676 92 006702 93 006706 94 006712 95 006716 .oecnenenr DRIVE COUNT ‘BR IF MORE DRIVES *START OPERATIONS FOR THE AVAILABLE DRIVES TYPOS .BYTE "BYTE 104401 104401 016500 004737 104401 005762 001402 005722 000773 R3 1% MAIN2 MOV 65 006556 66 006562 006566 68 006572 69 006576 70 006602 71 006606 72 006610 73 006612 DEC BNE BR 001334 001346 001464 1%: 2%: QUEUE CLR TSTB BNE 1518 BNE MOV MoV (LR ‘LR (LR (LR M0V R2 ASNLST 28 SAUTOB 1% #1,CFLAG HERTZ ONESEC HOUR MINUTE SECOND INTRVL+2 cnptnn CMPTIM+2 :START FROM THE rxasr LOCATION *ANY DRIVES ACTIVE ? ‘BR IF YES *RUNNING IN AUTO MODE ? ‘BR IF YES ‘DUMMY *CONTROL C*' FLAG :RESTORE ONE secono COUNTER VALUE :CLEAR THE HOUR'S COUNTER SCLEAR THE MINUTE'S COUNTER :CLEAR THE SECOND'S COUNTER *CLEAR INTERVAL COUNTER :INIT COMPARE TIME COUNTER ST 8EQ MOV CLR WAIT(R2) 5% WAIT(R2).RO -(SP) : ANY DRIVES WAITING FOR THE BUFFER ? BR IF .LOAD ao WITH THE DPB ADDRESS *CLEAR THE STACK FOR BUFFER REQ CLR SNEXT(RO) :CLEAR PARAMETER SELECT FLAG TYPE JMP JSR MOV BEQ CLR JSR JSR NODRVS $GET42 PC,GE TBUF (SP)+,$BUF(RC) 4% $FAIR(RO) PC,F ILBUF PC.GODRIV STYPE *NO DRIVES ASSIGNED® *GIVE CONTROL TO MCNITOR SCALL TO GET THE BUFFER RT. :IF O,BUFFER IS STILL NOT AVAILABLE ‘BRANCH IF NO BUFFER AVAILABLE SCLEAR THE FAIR FLAG :FILL THE BUFFER *SET COMMAND AND GO , . CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 13-2 H SEQ 0072 MAIN PROGRAM 111 007002 012705 113 0073 g 11; 007008 oogrgs 007010 114 007012 115 007014 116 oorogo 117 007022 118 oo7o§e 119 007030 }gg 007032 01004 012701 060;?1 004737 ooo745 001520 001632 022200 00572 4$: 000740 12; 007034 005737 125 007042 126 007044 127 007050 128 007052 129 007056 130 007062 131 007066 132 007070 133 007074 134 007076 005002 005762 001oo; 000137 016200 005760 001010 105760 001403 004737 137 007104 }gg 007110 004737 004737 020612 021662 140 141 142 143 007114 007116 007122 007126 005046 004737 012660 001416 017512 000006 }29 007140 005060 000116 }54 007040 }gg 007102 144 007130 145 007134 148 007144 149 007150 150 007154 151 007156 152 007160 }gz 007162 001975 000404 157 007176 101006 158 007200 otgros }gg 007212 000402 159 007204 160 007206 161 oorgto 164 007214 165 007216 166 007220 005725 001376 010045 005722 000712 012701 167 007224 060201 RO, =(RS) ‘BR IF NO :LOAD THE DPB ADDRESS INTO THE ORDER QUE MOV ADD JSR BR ST JSR JSR PC ,GENPAR PC.LODPAR ;G0 GENERATE THE PARAMETERS :LOAD THE PARAMETERS JUST GENERATED 108: CLR JSR MOV BEQ JSR CLR -(SP) PC, GE TBUF (SP)+,$BUF (RO) 12% PC,FILBUF $NEXT(RO) :MAKE ROOM ON THE STACK FOR THE BUFFER ADDR :GET BUFFER :;MOVE BUFFER ADDR TO DPB ‘BR IF '0' ADDR (NO BUFFER) JSR PC,GODRIV ;PUT CURRENT DPB IN DRIVER BNE MOV 11% RO, =(RS) :BR IF NOT :PUT BLOCK ADDRESS INTO QUE BNE BR CLR 118: MOV ST BR 001632 000116 128: 138: 148: 001610 :CHECK THE NEXT QUE 8%: 98 : 020250 000003 'WAIT' QUE ;CLEAR DRIVE TABLE POINTER *ANY DRIVES WAITING FOR PARAMETERS ‘BRANCH IF ANY *BRANCH IF NONE :CONTROL BLOCK ADDR IN RO :PARAMETERS BEEN SELECTED ? ‘BR IF THEY HAVE S'T* COMMAND FOR THIS DRIVE ? ‘BR IF YES :GET SEQUENTIAL PARAMETERS FOR READ OR WRITE 000026 000116 (R2)+ *REMOVE THE DRIVE FROM THE *OFFSET THE QUE POSITION :COMPRESS THE QUE :BRANCH IF DONE R2 AVAIL (R2) 78 IDLE AVAIL(R2),R0 $NEXT (RO) 9 $PACK(RO) 8% PC,SEQPAR 7%: 001520 SWALT,R R2,R1 PC.CMPRES 28 ‘QUE AVAILABLE ? CLR ST BNE JMP MOV ST BNE TSTB BEQ JSR 000416 022760 MOV 3g :ANY OUTSTANDING ORDERS ? 007234 001610 000130 001376 010045 005260 ;PUT THE WAIT QUE INTO ORDER QUE BNE (RS) + ORDERQ 6$: 020160 012705 005725 #ORDERQ,RS 3 001610 004737 ST 2% 5% 020102 000130 MOV BR 001520 004737 005060 155 007164 156 007170 38: 158: IDLE 10§ $FAIR(RO) #ORDERQ,RS (RS) + 15§ :LOOPING BACK ‘BR IF YES :GET THE BUFFER SFILL THE BUFFER SCLEAR PARAMETER SELECT FLAG SCLEAR THE 'FAIRNESS® COUNT *ADDRESS OF ORDER QUE IN RS SEND OF QUE ? :CONTINUE LOOKING INC $FAIR(RO) : INCREMENT THE FAIR COUNT BH! 14§ :BRANCH IF NOT OVER THREE TIMES CMP #3,$FAIR(RO) MOV #UALT,RS BR 15$ ST BNE MOV ST BR MOV ADD (RS) + 13% RO, =(RS) (R2)+ 6% #AVAIL R R2,R1 STHREE TIMES,BUFFER IS NOT AVAILABLE? SLOAD INTO THE WAIT QUE :AN AVAILABLE LOCATION ? *BRANCH IF NOT SLOAD INTO WAIT QUE ‘REMOVE THE DPB FROM AVAILABLE QUE ; INCREMENT INDEX *BRANCH BACK TO FIRE NEXT DRIVE **AVAILABLE' TABLE ADDRESS *FORM ADDRESS OF LAST ENTRY _ =l=l=] [ Lo T N ] N N T e 022200 nos N~ o § EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 13-3 PC,CMPRES 63 ;COMPRESS THE TABLE :CONTINUE LOOKING ~NOO"WVWIWWNE S W NN SNOSNO S 2%: 000016 TST ‘BR IF E SSEE IF -(R1} R1,=(SP) PC.STATIS PC.PROCES ‘BAC' HE QUE POINTER S’ € QUE ADDRESS : JLATE STATISTICS FOR DRIVE ESS END OF COMMAND 2 &S W WNIN = = O0ON SO NSNS SO 000001 000026 #-1,$PACK (RO) 000026 #1,$PACK(RD) 5% §§oxnc NN 001504 000040 001450 000036 001446 4% 000050 001454 000046 001452 031420 001610 3%: CMP 4%: JSR 5%: MOV 6%: 1ST &» o s &~ ~N 7%: BIT 001314 001314 001542 000137 006340 ~ ~§ &» WO °° KR 104401 057107 024740 057214 “HE ORDER QUE DRESS INTO RO IN R1 .F QUE .VE FINISHED IVE NOT FINISHED IN RO AR THE BAD TRK/SEC ERROR INDICATOR _oEE IF ANY DRIVES HAVE TOO MANY ERRORS :NOW SEE IF WE ARE AT THE END OF A PASS :;:',$°¢22"° FOR THIS DRIVE ? S'R' ? COMMAND FOR THIS DRIVE ‘BR IF YES :UALL THESEOP BE DETERMINED BY # OF SEEKS ? IS THE END OF PASS ;IS IT THE EOP BY SEEKS ? YES PC,$EOP .THIS IS THE END OF (SP)+,R1 #AVAIL RS (R5)+ sRESTORE 5% :BR IF NO $SEEKS(RO) ,ENDSEK ;1S IT THE EOP BY SEEKS ? 5% :BR:BR IF NO PASS THE ORDER TABLE ;ADDRESS OF THE ‘AVAIL' INDEX TABLE PC,RELBUF :lg lg Lgf END OF THE °"AVAIL' TABLE ? H: ;MOVE THE DPB INTO THE °'AVAIL' TABLE sCOMPRESS THE ORDER QUE sRESTORE BUFFER #5602 ,aSWR :TVPE'PER;ORHANCE SUMMARY 6% 8% STATIN 8% STATIN 8% :BR IF NO sTIME TO TYPE THE PERFORMANCE SUMMARY ? sBR_IF NOT ;CLEAR THE INDICATOR sANY DRIVES ASSIGNED ? MSGREP :BR_IF NO sTYPE */\/\/\/\/-PERFORMANCE REPORT=\/\/\/\/\"* , TRMREP sTYPE PC,STATPR JMP sTHIS sBR IF ASNLST 8%: :BR IF NO 4% PC,CMPRES 171524 ‘BR IF $SEEKS+2(RO) ,ENDSEK+2 (R1) ,=(RS) 022200 017646 000004 :PUT BLOCY :BR IF YE $ROPAS+2(R0) ,ENDCON+2 ;IS IT THE EOP BY DATA READ ? (3] :BR IF YES 5% :BR IF NO gngAS(RO).ENDCON ;1S IT THE EOP BY DATA READ ? e S58 7% $TATUS (RO) PC,ABNRML 007372 o ;ADDRESS OF BADSEC 007350 0 0 0 007440 0 0 0 #ORDERQ ,R1 (R1)+,R0 1%: 007346 [=2 orw-og IDLE: 001520 205 007376 NORLRNLNLNLNLNLNLNLNOND oo NORONININIRNINININ = b =b b b b NP NS WN=O JSR BR SEG 0073 :WAIT FOR A COMMAND TO FINISH =3=4 [elelelelelelelele Blelelelelalelelelelel=] [=]=l=] (eleleleleleleleBllelelelelelelel®lele =] NNSN NNNNNNNN NNNNNNNSNSNNSN e 0 0 0 0 0 O 0 VO VOO 0000000000 I e e e e e e P NN NNNNNNNNOO 2“--'800N0‘m&v4-’°00flg mgwaooo NOWVES WO Y00 (= l= oo T C 4 R 0AQ Rng PERF MA 1 ROGR MAIN :TYPE THE SUMMARY */N/N/N/N/N.LLETCY ;CONTINUE THE LOOP CIRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 14 MAIN PROGRAM ' e 00 SEQ @ 0074 ;PROCESS THE COMMAND TERMINATION 1 f 007472 111037 001320 PROCES: MOVB g 88;§53 903229 000016 ;g} 13 88;393 8?;1?8 100000 000166 géa (RO),DRVNO -oaxve NUMBER FOR ANY ERROR MESSAGES $TATUS(RO) ss If Eogévea SIGNALED AN ERROR g21t1§ snpcs1(ao$ 6se§51r 'SC* SET 1§ 007522 ERPROC 11 007514 032760 040000 000166 BIT 1 oorsia }g 007532 BIT BNE 001037 032760 001033 040000 000200 }? 004737 004737 21 007552 22 007554 23 007560 24 007562 25 007570 001052 005737 001415 023737 002413 27 007576 28 007602 29 007606 30 007610 31 007614 gg 007620 062716 023726 002402 005037 004737 000207 26 007572 032777 013746 013746 014046 000002 1%: 171402 001464 001462 001462 001464 014132 000200 2; 007632 000137 010206 28: 3$: 001402 000016 ADD CMP BLT CLR JSR RTS CMPTIM,=(SP) #1,(SP) CMPTIM+2,(SP)+ 2% CMPTIM+2 PC,CMPAR PC SINHIBIT DATA COMPARE (SW01=1) ? *GET CURRENT INTERVAL TIME AND :ADD ONE MINUTE :STILL COMPARING DATA ? :BR IF YES SCLEAR INTERVAL TIMER FOR NEXT COMPARE ‘NO 'DCK' ERROR, BUT COMPARE DATA ANYWAY :RETURN ERPROC: BIT BEQ calro7 $TATUS(RO) ERPRC1 DONE :DONE BIT SET ? :BR IF NO, ORDER DIDN'T COMPLETE NORMALLY *PROCESS ERROR WITH 'DONE' BIT SET ;PROCESS ORDER COMPLETION WITH "ERROR' & °'DONE' NOT SET 032760 001025 010000 000016 000004 000016 53 007646 032760 004000 000016 54 00765¢ N01041 §5 007656 032760 002000 000016 5¢ 007664 001044 57 007 032760 001000 000016 58 007674 %wu 59 007676 032760 040002 000016 60 007704 001101 61 007706 032760 62 007714 001115 000207 ERPRC1: BIT BNE aaxr12.sru1us<a0) BNE BIT BNE OFLIN R celtz tTAIUS(RO) BIT BNE BIT BNE BIT BNE BIT RTS 22 68 0077264 3 :BR IF YES CMPTIM 1S COHPARE DATA ALWAYS ON ? $ ‘BR IF YES CMPTIM+2,CMPTIM:TIME TO COMPARE DATA ? $ :BR IF NO JMP 23 67 007720 BNE ST BEQ CMP BLT #5W01,aSWR :CHECK ERROR BITS :CHELK BUS ADDRESS & WORD COUNT :COMMAND TERMINATED WITH AN ERROR = PROCESS THE ERROR 032760 22 007716 caxt14 $SRPDS (RO SEE IF 'ERR® SET ERPROC :BR IF SET PC,CKERR PC.CKBUS MOV 000001 001464 36 007622 50 007636 51 007636 52 007644 SEE IF *TRE® SET :BR IF SET JSR JSR BIT 001462 %‘; 46 007630 #BIT14, $RPCS1(ROS :NO ERRORS DETECTED IN REGISTERS, DO SOME CHECKING ANYWAY 18 007534 19 007540 20 007544 BNE BR :SEE IF DRIVE WAS UNSAFE IF YES 031111 svurus<ao$ :PARITY ERROR OCCURRED UCPA BR IF 1T DID l81110 sravus<ao$ :FATAL PARITY ERROR? BR IFf rusae IS ONE caxroo $TATUS(R05 TIMEQUT? SWTIM IF YES #BIT14'BITO1, STA?US(RO) ‘DRIVE WENT OFFLINE ? PC folp :PORT REQUEST TIME OUT ? 1F 1f oID eanoa RE TURN :DRIVE IS PERSISTENTLY UNSAFE 004737 104414 ozz§14 051355 PUNSAF: JSR DISPLY PC,LINEY LEMI :PRINT LINE 1 OF ERROR MESSAGE SPERSISTENT DEVICE UNSAFE MESSAGE CZRJOAO RPO7 PERF EXER MACRO VO04.00 1-JAN-83 12:06:52 PAGE 14-1 K SEQ 0075 MAIN PROGRAM 69 007730 70 00773¢ 004737 8 §;16 004737 62 JSR PC,LINE 72 JSR PC.thE% ;PRINT LINE 2 OF ERROR nsssncs 023366 JSR 1 007740 004737 JSR PC.EINEL PC. INCTOT SPRINT LINE & OF : INCREMENT tgrAL ERROR COUN 007750 004737 73 007744 ;g 00775¢ 004737 0O 61%2 000137 031302 0 ag ‘ ;9 JSR JMP PC,LINE7 DROP SPRINT LINE § OF ERRORMESSAGE TwF eaaoa nessnse :PRINT LINE 7 OF ERROR HLSSAGE :DROP THE DRIVE ;UNCORRECTABLE MASSBUS PARITY ERROR OCCURRED 78 007760 104401 001203 80 007770 104401 051257 79 007764 104401 001203 UCPAR: TYPE ,SCRLF :CR=LF TYPE "EM10 : YUNCORRE CTABLE mnvmmwnnufi TYPE 000406 85 007776 86 010002 g; 010006 104401 104401 104401 001203 001203 051322 FALPAR: TYPE TYPE TYPE ,$CRLF "$CRLF TEM1T :CR=LF :CR=LF :YFATAL PARITY ERROR® MESSAGE 89 010012 104401 057616 FALPR1: TYPE ,MSGON :TYPE 'ON' 91 010022 013746 001320 MOV DRVNO,=(SP) ::SAVE DRVNO FOR TYPEOUT 010026 010030 104403 002 90 010016 010031 92 010032 93 010036 94 010044 95 010046 39 010050 104401 056601 00 004737 032777 BYTE JSR BIT 001401 000000 000207 1$: 022214 104 010072 105 010076 106 010102 }3; 010106 004737 004737 004737 000207 023366 026122 024056 104414 004737 004737 051406 022262 ozgrte }?3 2 0 PC, INCTOT #SW15,aSWR 1% PC :TYPE 'DRIVE® ::TYPE DRIVE NUMBER ::co TYPE==0OCTAL ASCIi STYPE 2 DIGIT(S) : :SUPPRESS LEADING ZEROS : INCREMENT TOTAL ERROR COUNT *HALT ON ERROR? ‘BR IF NOT *ERROR HALT SWTIM: JSR PC,LINEY ;PRINT LINE 1 OF ERROR MESSAGE JSR JSR JSR RTS PC,LINEL PC. INCTOT PC,LINE7 PC SPRINT LINE & OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT SPRINT LINE 7 OF ERROR MESSAGE *RETURN DISPLY JSR JSR LEM13 PC,LINE PC,LINE SPRINT THE TIME OUT MESSAGE *PRINT LINE g OF ERROR MESSAGE SPRINT LINE 3 OF ERROR MESSAGE :DRIVE WENT OFFLINE 111 010110 112 010114 004737 104414 022214 051460 114 010154 115 010130 116 010134 117 010140 004737 004737 004737 004737 oz§71o 023366 026122 024056 }5? BEQ HALT RTS "DRVMSG :SOF TWARE TIMEOUT OCCURRED 004737 }}g 010144 TYPE TYPOS BYTE 100 010052 113 010120 SFINISH PROCESSING THE ERROR ;'FATAL' MASSBUS PARITY ERROR OCCURRED gg 101 010056 102 010062 103 010066 FALPR1 ‘CR=LF g1 007774 g% BR "SCRLF 004737 022262 000137 031302 OFLIN: JSR DISPLY PC,LINE1 LEMI4 :PRINT LINE 1 OF THE ERROR MESSAGE :PRINT OFFLINE MESSAGE JSR JSR JSR JSR PC.LINES PC,LINEL PC.INCTOT PC.LINE? :PRINT LINE 3 OF SPRINT LINE & OF S INCREMENT TOTAL SPRINT LINE 7 OF JSR JMP PCLINE2 DROP :PORT REQUEST TIMEOUT ERROR SPRINT LINE § 0F THE ERROR MESSAGE ‘DRCP THE DRIVE THE ERROR MESSAGE THE ERROR MESSAGE ERROR COUNT THE ERROR MESSAGE CIRJOAQO RPO7 PERF EXER MACRO V04.00 1-JAN=-B3 12:06:52 PAGE 14-2 SEQ 0076 SO NMNON) =N O = NNV WVWNON =N O — (o (L NTe Yo TN [V R ) PC,LIN PC,LIN PC,LINEG b ad NN N==O OO OO NN N S NN VWSS OO ©OOO0O sTYPE LINE 2 OF sTYPE LINE 5 OF sTYPE LINE & OF THE ERROR MESSAGE THE ERROR MESSAGE THE ERROR MESSAGE s INCREMENT TOTAL _ERROR COUNT .;E?SRhINE 7 OF THE ERROR MESSAGE OO0 NN OOV NS Db BN ONN OO cdeded OO0 040000 000137 013104 000400 WA =<0 MNUS WWWWW WBWNN OO0 W BB W SN & W g VIV NN o 020000 s 001002 032760 001402 000137 000010 -O oo O OO0 cdeded OO0 OO0 bt 032760 032760 00140 00013 032760 001402 000137 000040 032760 002000 OO0 ©O O 011234 000200 WW -k o~ &~ OO ot d d OO0 OO0 000137 032760 001402 000137 — ey D OO0 OO0 040000 #BITO4!BITO3,$TATUS(RO) ;UNSAFE OCCURRED 2% :BR;BR IF _IF N NOT UNSAF 000202 2%: 000200 3%: 4%: 5%: IF :BR IF NO #BIT1,$RPDS(RO) L% ;SEE IF 'EWN' :BR _IF NOT 5 TRFER SET ;1S "WCE® :BRANCH IF NOT SET SET ? :WRITE CHECK ERROR ;:BR :CHECK °TRE" F SET *PROCESS 'TRE® 000202 6%: #BIT08,$RPER1(RO) 000202 7%: #BI1T04,$RPERT(RO) ;'FMT* SET? 8$ sBR_IF NOT SET 011624 012010 7% HCRCER CKFMT 000202 8%: 000202 9%: sCHECK FORMAT ERROR sCHECK "HCE' ERROR #B1T13,$RPERT(RO) ;'OP1* SET? 10% sBR IF NOT SET OPIER 012460 : 'HCRC® SET? sBR IF NOT :PROCESS 'HCRC® #BIT07,$RPERT(RO) : 'HCE® SET? 9% sBR_IF NOT SET CKHCE 012172 sREPORT ‘OPI"* 000202 108: #B1T3,$RPERT(RO) : "PAR' SET? 1% : ¢ _NOT SET PARER sREPORT ‘PAR' 000202 11%: #81715,8RPERT (RO) 000202 12%:° 012576 013242 12% WCFER SET *REPORT EARLY WARNING #BIT14,$RPCS1(RO) 6% "UNS® *REPORT UNSAFE #BIT14,$RPCS2(RO) WCKER 000166 SEE 3 EWNERR 000176 *REPORT UNSAFE #B1T14,SRPERT (RO) UNSAF 013432 000020 — b =2 OO0 OO0 : DONE 1%: 013340 032760 001402 000137 — s —a © o OO0 000016 013340 032760 001402 000137 ok b OO0OC OO0 000030 OO0 OO0 OO0 d b ooocC Db D 000002 - R RO O 040000 o = SR UG ARG 2 S S BS RAR N N S NN NS e R L R R R R il e sTYPE LINE 1 OF THE ERROR MESSAGE ;PRINT PORT _TiME OUT MESSAGE ;PROCESS ORDER COMPLETION WITH 'ERROR' & 'DONE® BIT lET © D i D il il D i il i D i il D i i VWA D i D i D il D i O OO O VYN WA D i e o i D i i e D e i D e D D i i 000000 NN NNNNNNNYNOOO — e e PC.L;NE1 EMI ~NO [olelelelelele] NINONONONOIND OB NNNNNNSN O WNINNILNIN = (N NNNNNNSN [elelelelelel l"] [=l=l=lelelwlel=] NNJ—O—‘—‘—.—. D e e D D e — IS BRN PRTIN: D D e e S S5 85 85 8N 8 55 5 S WUWNIAINI NN Ocflflgo\nm S OHOSrOSN0O (elelelelelelele] [elelelelelelele) [« VN b e — RN MAIN PROGRAM ;"WCF' SET? sBR IF NOT SET sREPORT ‘W(F'® #B1110,$RPERT(RO) s"IAE" SET? CIZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 14-3 SEQ 0077 T 15%: 000230 013204 15% :BR IF NOT SET 158 :BR IF NOT SET 081110 $RPDS(RO) PC :'LBT' :'AOE® 091112 $RPER1T (RO) 16$ DTEER $SRPER1(RO) :BR IF *REPORT 17%: BIT #B1T14,SRPER3(RO) BIT BNE JMP #B1T15, SRPER3 (RO} JMP RTS 17% DCKER & °'LBT' SET? SET? SET, EXIT sSEE IF 'DTE® SET NOT *DTE' ERROR :SEE 1r 'DCK* SET 16%: 18%: ‘IAE' :BR IF NOT SET ‘REPORT 'WLE' - 100000 148 WLEER :BR IF NOT SET ‘REPORT D - 000230 1AEER o 040000 000137 000207 ve =M 000202 012562 011756 :"AOE* SET? VDD~ 010000 000137 VDO < 000200 010546 33119 $RPER1T (RO) R Me 002000 DD 14%: 000137 :'WLE® Mee 009202 DD DODm® 001000 012722 000202 cslr11 ,SRPER1(RO) .@Om® = (2TM VO OO0 OOW o= 13%: =2oW» 203 010502 204 010506 205 010510 206 207 010514 208 010522 209 010524 210 010532 211 010534 212 213 010540 214 010544 13% — 202 000202 OO0 O OOWw OW O =M= 200 010474 201 010476 004000 OO0 OOW O=N) 193 010444 194 010452 195 010454 196 010462 197 010464 198 199 010466 012670 -0 OO0 OVl 186 0104 2 187 010 188 189 010430 190 010436 191 010440 19% OO OO O MAIN PROGRAM :BR IF NOT :PROCESS 'DCK' 'SKI' SET 18$ BRANCH 1F SKI, OCYL SET 19% :BRANCH IF SK1ER PC ;REPORT SKI ERROR ;EXIT FROM ERROR ANALYSIS DRVER :BAD SPOT $9 *REPORT ERROR ROUT. 83 MAIN PROGRAM SEQ 0078 12:06:52 PAGE PAGE 1 15 CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 é ;PROCESS DATA ('DCK') CHECK ERROR 10 010554 010546 032760 001411 1; 010564 001054 11 010556 022760 000100 000202 010040 000232 DCKER: BIT BEQ #ECH,SRPER1(RO) :;ECH ERROR SET ? i BR IF NO BNE 28 CMP 12 010573 T0s4ie 053436 DISPLY |EMSE! }s 010576 000451 BR 18 010606 BHI 19 010600 026027 000232 010040 18: 19 010610 20 010614 21 010616 zg 010622 23 010624 24 010630 25 010634 26 010636 101013 005760 001410 005760 001033 004737 104414 000404 000232 000234 022214 053300 022214 28: 28 010646 004737 022262 3s: 104414 29 010652 30 010656 31 010664 32 010670 33 010672 sg 010676 004737 012737 004737 000403 004737 000402 37 010704 gg 019710 004737 000207 053140 026122 000003 017040 001324 024016 143 “OTHERWISE RPEC1=10040 ;REPORT ¢CC LOGICAL FAILURE SN ERROR -CECE ONCORRECTABLE CMP $RPECT(RO) ,#10040 ST $RPEC1(RO) :1S POSITION COUNT OVER MAXIMUM ? 2% :BR IF VES BEQ TST BNE JSR 28 $RPEC2(RO) 6% PC,LINET ‘BR IF YES :VALUE IN PATTERN REGISTER ? ‘BR IF YES sTYPE FIRST LINE OF ERROR MESSAGE BR §s DISPLY 004737 27 010642 #10040, SRPEC1(RO) ,EM&7 *POSITION COUNT 0 ? *TYPE "ECC LOGIC ERROR' JSR PC,LINEY ;TYPE FIRST JSR PC,LINE2 STYPE LINE 2 OF ERROR MESSAGE JSR PC,LINE6D DISPLY JSR MOV JSR BR JSR BR LEM&S PC.INCTOT #3 RETRY PC,SRETRY 48 PC,LINEGC 5% STYPE LINE OF ERROR MESSAGE "ECC LOGIC ERROR® : INCREMENT TOTAL ERROR COUNT *RETRY COUNT JRETRY THE ORDER SRETRY WAS NOT SUCCESSFUL :PRINT *CORRECTED ON N RETRY(S)' :FINISH THE ERROR REPORT ;6 010700 004737 024024 4%: :g ;THE VALUES IN Ept ECC REGISTERS ARE CORRECT, REPORT *DCK' ERROR 024056 5%: JSR RTS 42 010712 43 010716 004737 104414 022214 051560 6%: 46 010722 004737 022262 DCKERT: JSR 50 010745 012737 2; 010722 &7 010726 48 010732 49 010736 51 019750 §2 010756 004737 004737 004737 032760 001012 022716 023366 016356 110100 010000 7%: JSR JSR JSR 001322 MOV 000202 BIT BNE 53 010760 032760 000100 000202 54 010766 55 010770 001403 004737 011174 §7 010776 004737 023776 zg 011006 012737 000012 64 011012 65 011016 66 011022 004737 005760 001775 020160 000016 56 010774 000403 58 011002 000460 :TYPE LINE 7 OF ERROR MESSAGE JRETURN PC,LINET LEM21 JPRINT LINE 1 OF ERROR MESSAGE :DATA CHECK ERROR PC,LINE2 ;PRINT LINE g OF ERROR MESSAGE PC,LINES PC,LINES PC .PRTBAD sPRINT LINE OF ERROR MESSAGE JPRINT LINE & OF ERROR MESSAGE “SEE IF BAD SECTOR TO BE PRINTED #BIT15'B1712'B1706,MASK ;LOAD ERROR MASK #B1T12.$RPERT (RO) IS IT *DTE* ? #B1T106,SRPERT (RO} (1S IT 'ECH* ? :BR IF YES 1% PC,13% :BR IF NO s COMPARE BAD DATA JSR PC,LINEC :PRINT *SECTOR IS ECC CORRECTABLE® *RETRY COUNT BEQ JSR B8R 28 : FH MOV #10. ,RETRY 38: 4$: JSR 1ST BEQ PC,GODRIV $TATUS (RO) 48 2%: :PRINT "UNCORRECTABLE AFTER N RETRY(S)' 2% BIT 1%: 001324 JSR DISPLY PC,LINE? PC 104 :FINISH THE ERROR REPORT ;RETRY STEST FOR DONE ‘BR IF NOT DONE CIR JOAO Rgg? PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 15-1 125 128 7 OOOCOOO 5SS WIWNNON NSO = SEQ 0079 Db ed e b e S OO OOO0O0 WNN = <LOO0ONNNOOMW NOFNOTNOCSOMNVONON 001322 024274 026026 026122 024056 016356 7%: 8$: 023776 023734 026002 015534 9% 024024 118: 024010 026002 000001 014136 001353 128: bt OV VO NNVNVNNINININ = be e 6 7 7 0 0 1 1 20 24 30 32 SNONSOS s e D D e e D 000407 BPL gag 12% :BR IF NOT ERROR gng?,STATUS(RO) Béssg astonosa TERMINIATED NORMALLY JSR PC,INCTOT BIT BEQ MASK,SRPER1(R0) ;LOOK AT CURRENT ERROR 7% ‘BR 6' DIFFERENT ERROR INCB CMPB BNE JSR JSR JSR JSR JSR RETRY#1 RETRY,RETRY+1 3$ PC,LINES PC . INCHRD PC.INCTOT PC,LINE? PC ' PRTBAD * INCREMENT RETRY COUNT :DONE ? ‘BR IF NOT SPRINT LINE 8 OF ERROR MESSAGE :INCREMENT "HARD' ERROR (GUNT : INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE :PRINT THE BAD SECTOR JSR JSR JSR JSR PC,LINES PC.LINESB PC . INCSOF PCLECC :PRINT "SECTOR IS ECC CORRECTABLE" ‘PRINT LINE 5B OF THE ERROR MESSAGE S INCREMENT *SOFT' ERROR COUNT :CORRECT THE ERROR USING ECC AND CHECK IT JSR PC,LINE6D ;PRINT 'UNCORRECTABLE AFTER N RETRY(S)® JSR JSR MOV JSR TSTB BM] JSR DISPLY d%% PC,LINEGA PC . INCSOF #1 FRSTER PC . CMPARD FRSTER+1 15% PC, INCTOT ,LIN9G PC,LINE? :PRINT *SECTOR READ CORRECTLY AFTER N RETRY(S)® *INCREMENT °SOFT® ERROR COUNT ;SET PROCESSING 'DCKER®' INDICATOR :COMPARE THE BUFFER *ERROR IN COMPARE ? *BRANCH IF ERROR *INCREMENT TOTAL ERROR COUNT :'DATA COMPARE OK' MESSAGE ‘PRINT LINE 7 OF ERROR MESSAGE RTS PC ;RETURN DISPLY JMP bbbl e VWS B W S OSOS d D o D D e D o D D e o o o o D d o 055570 007636 004737 b e 000016 0 61;2 D o 000200 004737 000753 b 10 10 10 1 1" 1" " 1" 1 1 n 1 n 12 121 122 123 12 [elelelelelelelelelel-Bele B elelelele Blelelelelelelelelelelelele B elelelelele] 1 OM&W“OOQNOWFWN—'OOO“&W’MN—'OO@NO‘U\J‘VJN—‘OOQNO\IU“W—‘OOQ 1 1 1 1 1 1 OO0 O0O0OCVYVOVVOVOVOVOVOONNNNNNNNYNNO oo~ ~ MAIN PROG B 000202 010100 000202 001355 001324 001325 5§%: BIT BEO B8R 108: BR 001352 026122 056037 024056 13%$: }g:: 000207 B8R ,LIN8M ERPRC1 *INCREMENT TOTAL ERROR COUNT S'DIFFERENT ERROR DURING RETRY' :SEE WHICH ERROR #BIT12!B176,SRPER1(RO) ;'ECH® OR °'DTE® STILL 3ET ? 98 :BR IF NEITHER SET 15§ 13§ 8s :CLEAN UP AND RETURN :COMPARE THE BUFFER ) : INCREMENT ERROR COUNT ;WRITE CHECK ERROR PROCESSING 011234 011242 011244 011%50 011254 01129 032760 011566 011270 Ollg?‘ 129 011300 130 011304 131 011312 132 011316 000403 100000 022214 051664 €)1322 022262 055716 023366 023456 02612§ 000003 017040 000202 001324 WCKER: BIT BNE JSR DISPLY CLR #BIT15,8RPERT1(RO) ;SEE IF 'DCK® SET ALSO $ :BRIF IT IS PC.LiNEl *PRINT LINE 1 OF ERROR MESSAGE EM2 *PRINT WCE & DCK NOT SET MASK :CLEAR ERROR MASK BR 1% JSR JSR JSR JSR JSR MOV JSR PC,LINE C,LINE PC.LINEL PC,LINES PC.INCTOT #3 RETRY PC.SRETRY SPRINT LINE § OF ERROR MESSAGE *PRINT LINE 3 OF ERROR MESSAGE ‘PRINT LINE & OF ERROR MESSAGE SPRINT LINE S OF ERROR MESSAGE *INCREMENT TOTAL ERROR COUNT SRETRY LIMIT *RETRY THE OPERATION *RETRY UNSUCESSFUL CZRJOAQO RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 15-2 SEQ 0080 MAIN PROGRAM 133 1%4 011250 0067%7 024016 JSR Pg LINESC :PRINT *CORRECTED ON N RETRY(S)' JSR PC,LINE6D :PRINT "UNCORRECTABLE AFTER N RETRY(S)' MOV #10. ,RETRY :RETRY LIMIT 011474 MOV #EM22 8BS *ASSUME THAT EM22 WILI 052512 011474 BNE MOV 3 #EM37,8% 032760 001410 012737 022760 001017 000424 000100 000202 053456 011474 158 011422 159 011430 160 011432 161 011436 162 011440 163 011444 164 011446 165 011454 166 011456 026027 °01012 0u5760 001407 005760 001007 012737 000403 012737 000232 169 011472 170 011474 173 011476 104414 000000 004737 179 011516 180 011522 181 0115;6 182 011530 183 0115§g 184 0115 }gz 011542 004737 9005760 001775 100405 105;;7 004737 000416 020160 000016 187 011544 188 011550 185 011556 190 011560 191 011566 105237 123737 001663 032760 001401 001325 001324 001325 100000 000202 200 011572 004737 0246274 128: 026002 13$: BR }32 011324 000532 137 011;%6 004737 024024 144 011%34 145 011342 146 011346 147 011354 148 011362 012737 004737 012737 032760 001023 000012 001324 051611 012737 151 011372 1S§ 011400 153 011402 154 011410 155 011416 }g? 011420 }gg C11332 }gg 011364 }gg 011464 011502 011506 7% 011512 }gs 011570 501 011576 02 011600 000527 012737 004737 004737 004737 022214 040000 010040 1%: 2%: 000176 JSR BIT 3$: 000232 010040 &$: 000232 000234 053300 011474 053140 000003 011474 001324 SPRINT LINE 1 OF ERROR MESSAGE #BI1T14,SRPCS2(ROS RE PRINTED ;DID ‘WCK® ALSO SET ? :BR'IF IT DID :cg§§esguggz *0CK® AND "WCK' NOT DURING CMP BNL #10040, SRPEC1 (RO} :OTHERWISE RPEC1=10040 13 ;REPORT ECC LOGICAL FAILURE 4 #EMS2 8% BRANCH IF NOT REPORT 'ECH' ERROR 7% 537 ggPECICRO).¢100408R " v-gs POSITION COUNT OVER MAXIMUM ? ST $RPEC1(RO) *POSITION COUNT 0 ? ESV WEMLT7,88 *ELSE, REPORT THE ECC LOGIC FAILURE 5$ $RPEC2(RO) 6% MOV MOV 7%: DISPLY MORD JSR JSR J5 JSR O PC,LINE2 PC.LINES PC,LINEL PC.LINES 98: 108: JSR 157 BEQ 8M] INCB PC,GODRIV $TATUS(RY) 10% 1% RETRY+1 :RETRY THE ORDFR :ORDFR FINISHED ? ‘BR IF NOT :BR IF ERROR ON ORDER : INCREMENT RETRY COUNT BR 13§ *FINISH ERROR PROCESSING 001325 024016 JSR 118: #EMLS,BS #3,RETRY ‘BR IF YES *VALUE IN PATTERN REGISTER ? ‘BR IF YES S$: 6$: 8$: 022262 022716 023366 023456 PC,LINET *FINISH PROCESSING THE ERROR #ECH,SRPER1(RO) :WRITE CHECK ERROR WITH , ECH SET ? BEQ MOV BEQ ST BNE , 15§ :FINISH PROCESSING THE ERROR BIT BR PC,LINE6C ;ELSE, REPORT THE ECC LOGIC FAILURE TRETRY LIMIT :TYPE THE ERROR MESSAGE *MESSAGE ADDRESS SPRINT LINE 2 OF :PRINT LINE 3 OF SPRINT LINE &4 OF SPRINT LINE 5 OF SPRINT GOES HERE ERROR MESSAGE ERROR MESSAGE ERROR MESSAGE ERROR MESSAGE *CORRECTED ON N RETRY(S)® INCB CMPB BEQ RETRY#1 RETRY,RETRY#1 1% : INCREMENT RETRY COUNT :DONE ? ‘BR IF AT RETRY LIMIT BEQ BR 12% 9% :BRIF NOT = DIFFERENT ERROR *CONTINUE RETRY gga gg‘txnea ;PRINT LINE 8 = *DIFFERENT ERROR ' JSR PC, INCSOF :COUNT AS A SOFT ERROR BIT 000752 000405 004737 BR 15§ #BIT1S,$RPERT (RO} ;'DCK® SET CZRJOAQO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 15-3 SEQ 0081 MAIN PROGRAM DY A b — v INCREMENT TOTAL ERROR COUNT Fé?égn THE ERROR MESSAGE O0O0O0O0O0O0C0O sREPORT 'HCRC' ERROR HCRCER: JSR PC,READDR BIT #BiT14,8RPCS2(RO) OCO0O0O0 000176 pururd NN [=1=] JSR SR DISPLY JSR JSR JSR JSR BEQ 1%: OO0 OO0 :GET THE HEAD INFORMATION SPRINT LINE 1 OF ERROR MESSAGE ‘REPORT 'HCRC" SPRINT LINE g OF ERROR MESSAGE SPRINT LINE 3 OF ERROR MESSAGE SPRINT LINE &4 OF ERROR MESSAGE :PRINT THE HEADER INFORMATION ;'WCE' ERROR ALSO ? :BR IF NOT :DISPLAY WORDS WHICH CAUSED °WCE® s INCREMENT 'SOFT® ERROR COUNT : INCREMENT TOTAL ERROR COUNT MOV #3,RETRY SRETRY LIMIT B8R 3s: 1% ;READ ERROR SECTOR HEADER PC,LINES PC. INCSOF PC. INCTOT MOV 2$: PC,READHD Pc.51~s1 ,LEM20 PC.LINE% PC,LINE PC,LINEL PC,LINESA JSR JSR JSR JSR 000207 #8118, MASK PC.SRETRY 28 JSR gga PC,LINEGC gg.Lluer JSR JSR PC,LINE6D PC,LINE? RTS PC ‘SET ERROR MASK ‘RETRY ORDER SRETRY NOT SUCESSFUL *PRINT *CORRECTED ON N RETRY(S)® ;E§{¥t LINE 7 OF ERROR MESSAGE *PRINT 'UNCORRECTABLE AFTER N RETRY(S)' SPRINT LINE 7 OF ERROR MESSAGE *RETURN N1 T NP o DRVER: [« [elelelolel=] 004737 RNV S OrONONON O = NN =N VIN) = O N = sREPORT DRJVE ERROR JSR DISPLY JSR JSR JSR JSR RTS NNNNNNNO 08i8as ~NS&N =N WWNWWNO SRcteE gugocou 000400 NN sPROCESS FORMAT &~ 271 012060 sCOUNT AS A HARD ERROR 833 68 012050 5 270 012054 0047§7 (=l=] (elelelelolelele el et =S OOO0OOWOOOOOO0O o SNBSS NNNNNNSNNNNNSNNSN 217 0116%4 219 011630 220 011634 221 011640 22% 011644 223 011650 224 011654 225 011660 226 011664 227 011672 228 011674 229 011700 230 011704 231 011710 232 011716 233 011724 2364 011730 235 011732 236 011736 237 011742 238 011744 239 011750 240 011754 2a 242 243 244 011756 245 011762 246 011766 247 011772 248 011776 249 012002 250 012006 251 25; 253 254 012010 %SS 012016 56 012020 257 012024 558 015030 59 012034 %60 012042 61 012044 JEXIT ={elelelel) o o o— NSO =N 209 210 F4l 000402 o= 203 011604 204 205 011606 206 011612 207 011616 208 011622 000202 011624 000400 CKFMT: 1%: 022262 2%: *RETURN ('FER') ERROR #B1T8,$RPERT(RO) JMP HCRCER *REPORT HCRC ERROR JSR PC RSADHD ‘READ HEADER BEQ JSR BNE JMP 012750 PC ;PRINT LINE 1 OF ERROR MESSAGE ‘REPORT DRIVE ERROR :PRINT LINE § OF ERROR MESSAGE SPRINT LINE 3 OF ERROR MESSAGE *INCREMENT TOTAL ERROR COUNT ‘PRINT LINE 7 OF ERROR MESSAGE BIT BIT 050710 Pc.§1n51 LEM30 PC,LINE PC.LINE PC, INCTOT PC,LINE? JSR DISPLY JSR 1% PC,READDR ;'HCRC' SET ON ORIGINAL ERROR ? :BR IF NOT SET *GET CORRECTED TRACK & SECTOR ADDRSSES #8118,GENREG*RPERT ; "HCRC' SET WHEN HEADER READ? 28 FMTER :BR'IF "HCRC® SET :NO, ERROR IS *FMT' ONLY PC.51N51 ,EM24 ;PRINT LINE 1 OF ERROR MESSAGE *HEADER READ ERROR = FMT BIT DROPPED UP PC,LINE2 SPRINT LINE 2 OF ERROR MESSAGE o~ -—[ ooa-w-umaxaoaowaoaao oyLalal -~ oo 0N ;PROCESS HEADER COMPARE ’ W -w aS - - () w O Q2@w <Oxa w o~ S. AIOTVM—NO00 [»l aCo>OLwcut—N [ w o 4 + [ q o v 4 w + « 2 » W l &FMOONT©NOITN RIe-To0oBMOURANG +XL=sOWw sacr*cnacaceafl QDaoO<w+ D-—XMEeW=EWVIu oawvdaxr-vuive -x2o@oOe&«+ 4o [ wv A(- —— O 220=ITO D [L4o>W+= Qb.4 [- o (=] w g4 o~ xow+ x@xwo0aow9WIwTWXixoWwWW WO Z2 VLW OD Ow OONOOO OMONEOIT CNMAIOOUTO0AODO~0~NOO0MON0OTOO=N0N0OI0OTO00NOY0OO0OMO I O V Y V T O N I O V O © V O w o NN ~ OO>wWaw Uw—WV>EMoNWuEaoNa==Zs-00~T-O [40[-0O=] —wDODJxaZ-w Gwo aQ= =Daa oV=X OWreO—-e——wwae TI0XuEI-CaVxDWL>U»lO >-2 wO IL=<-> @x&XaodWw —2< 6—.e¢eT~yT~oT eT.TTTox—~ 0G060606060060--III~ MAIN PROGRAM CZKkJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 15-4 SEQ 0082 a > A wv - b — wv - = ('HCE') ERROR w b a o = el w < [=Y w a CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 15-5 SEQ 0083 MAIN PROGRAM 6%: [elelelelelelelelel-d = NININONO O NNV O 85O OMNNNONOWNND ON = = ONWNNN SN WNNINOMNI SO — OO S NN NNNNNNNNNSN [el=lelelelelelele e VWSS SN NN = =2 O (o g1 S Te TN To N STe NNTe T N o ] dD e d e D i D e e NN Dt AL At 20 2t2t b (=lelelalelelelelele ] POSER: pr JSR JSR MOV JSR JSR JSR JSR RTS %lNE1 PC, fic LlNEi LINESC (sfi)o CYLNDR F _ERROR MESSAGE OF ERROR MESSAGE OF ERROR MESSAGE 0 CYLNDR OF THE ERROR MESSAGE OSITIONING COUNT L_ERROR COUNT OF ERROR MESSAGE PC,LINESA PC. INCMIS PC.INCTOT PC.LINE7A PC.RECALT PC OO0O0O0O0O DN WA S S5 [=]=] ~ ~No o SO oro OPIER: JSR DISPLY JSR JSR Lol ¥] — NN OO0 oo OO00O0 JSR JSR JSR MOV OPIER1: MOV JSR en JSR JSR OO0 1$%: NOOM LEM31 C,LINE PC,LINE OF ERROR MESSAGE OF ERROR MESSAGE & OF ERROR MESSAGE PC.LINE& PC. INCSOF ‘* AS A SOFT DATA ERROR DDED FOR RPO7 PC,INCTOT TOTAL ERROR COUNT #BIT13,MASK #3,RETRY PC.SRETRY 1% PC,LINE6C PC.LINE7 P( JSR PC.LINE7 JSR 1 pc.%xnz1 RTS RTS oo orocNONSONS~O NNNNNNVINNNN NINNNINNS NINN O WWO WWO WWWW OO VIV OIS BN WNINIANIND = =2 oo ViAW -t b — d e d D D e D e d b — d d D d D [elelelelelelelelelele B elelelelele] :REPORY 'OP1' ERROR LIMIT THE ORDER UNSUCESSFUL *CORRECTED ON N RETRY(S)® LINE 7 OF ERROR MESSAGE 'UNCORRECTABLE AFTER N RETRY(S)' LINE 7 OF ERROR MESSAGE PC,LINE6D PC JREPORT *DTE' ERROR DTEER: JSR DISPLY JMP PC,LINET LINE 1 OF ERROR MESSAGE ERROR PROCESSING THE ,EM32 DCKERT 'DTE' ERROR DISPLY P(.%§N51 LE JSR JSR JSR PC.LINE3E PC.LINEL PC.INCTOT MOV #3,RETRY JSR MOV s NN pr ey JSR 1%: JSR BR JSR JSR 6(.Llu£§ cgitos.nusx PC . SRETRY 28 PC,LINE6C PC.LINE7 sPRINT LINE 1 OF ERROR MESSAGE sREPORT 'PAR PRINY LINE 2 OF ERROR MESSAGE LINE 3E OF ERROR MESSAGE PRINY LINE & OF ERROR MESSAGE lNCREHENT TOTAL ERROR COUNT N N RETRY(S)* O PARER: (=3 = OwWOnONNN S &~ o0y NNVINNNNNNNSN &~ o o NN NNNNNN ~ NN O NN NN N NN b i e e o o il o h oo NONNININN JREPORT 'PAR' ERROR [elelelelelelelelelele e S882<R W W) - JSR DISPLY JSR 89 & B 8 B NN w O o000 RTS JREPORT POSSIBLE POSITIONING ERROR [=T=1=] N N NN N N N N NN NN N NN NN 0o 0o CONNNNNNNNY oo WV WN =000 ~NOoN D co~w ONO oorONOr VYW WN = OON=OOVONOWVISWN—=O VOOV 334 012404 ROR MESSAGE CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 15=6 MAIN PROGRAM 404 012660 405 012662 28? 012666 000;27 004737 000772 024024 2%: 283 410 012670 411 012676 412 012700 004737 1044614 004737 o§%214 052423 02%262 416 012710 415 01%714 004737 004737 026122 024056 413 012704 2}9 012720 004737 000207 fii PC PC,LINE6D 1% JEXIT ;PRINT "UNCORRECTABLE AFTER N RETRY(S)' :FINISH ERROR MESSAGE ;REPIRT "IAE' ERROR IAEER: JSR DISPLY JSR Pc.g§u£1 LEM PC.LINE% ;PRINT LINE 1 OF ERROR MESSAGE ;REPORT 'IAE' :PRINT LINE ¢ OF ERROR MESSAGE JSR JSR PC,INCTOT PC,LINE7 ; INCREMENT TOTAL ERROR (OUNT ;PRINT LINE 7 OF ERROR MESSAGE 023110 JSR RTS 2}3 PC,LINE3F PC PRINT LINE $r OF ERROR MESSAGE :RETURN ;REPORT 'WLE' ERROR 420 012722 004737 022214 422 012732 423 012736 424 012742 004737 004737 004737 022262 026122 024056 421 012726 232 012746 104414 000207 WLEER: 052461 JSR PC,LINE1 ;PRINT LINE JSP JSR JSR PC,LINE2 PC,INCTOT PC,LINE? *PRINT LINE 2 OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT *PRINT LINE 7 OF ERROR MESSAGE DISPLY RTS 25; ,EM36 PC 1 *REPORT ‘WLE' OF ERROR MESSAGE sRETURN :REPORT FORMAT ERROR 429 012750 430 012754 431 012760 432 012764 433 012770 434 012774 435 436 437 438 439 RTS JSR , 013002 013004 013010 013014 013020 22? 013024 004737 104414 004737 004737 004737 032760 001402 004737 004737 004737 004737 000207 022214 052072 022262 022716 023366 040000 FMTER: 1%: 004737 104414 004737 022214 052117 022262 4L4R 013046 004737 0233%66 450 013060 451 013062 Asg 013066 453 013072 454 013076 225 013102 222 459 013104 460 013110 PC,LINET ,EM26 PC,LINE2 PC,LINE3 :PRINT LINE 1 OF ERROR MESSAGE :FORMAT ERROR :PRINT LINE 2 OF ERROR MESSAGE :PRINT LINE 3 OF ERROR MESSAGE 1% PC,LINES PC,LINESA PC,INCTOT PC,LINE? :BR NOT DlSPL Y WORDS WHICH CAUSED °*WCE"® *PRINT LINE SA OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT ;PRINT LINE 7 OF ERROR MESSAGE PC,LINES ‘PR INT LINE 4 OF ERROR MESSAGE #BIT14,8RPCS2(RO) ; ucs' ERROR ALSO ? PC ;REPORT HEADER COMPARE ERROR 444 013026 445 013032 446 013036 449 013052 BEQ JSR JSR JSR JSR RTS :2% W47 012042 JSR BIT 000176 023456 023666 026122 024056 JSR DISPLY JSR JSR 004737 032760 001402 004737 004737 004737 004737 000207 004737 104414 HCEER: 02;?16 047000 023456 023566 026122 024056 JSR DISPLY JSR PC,LINET ,EM27 PC,LINE ;PRINT LINE 1 OF ERROR MESSAGE :HEADER COMPARE ERROR :PRINT LINE ; OF ERROR MESSAGE JSR PC,LINES :PRINT LINE & OF ERROR MESSAGE JSR 000176 BIT 1%: BEQ JSR JSR JSR JSR RTS PC.LINE :PRINT LINE 3 OF ERROR MESSAGE #BIT14,8RPCS2(RO) ;°'WCE' ERROR ALSO ? 1% PC,LINES PC,LINESA PC,INCTOT PC,LINE? PC :BR IF NOT :DISPLAY WORDS WHICH CAUSED °‘WCE® :PRINT LINE SA OF ERROR MESSAGE : INCREMENT TOTAL ERROR COUNT :PRINT LINE 7 OF ERROR MESSAGE REIURN PC,LINEY :PRINT LINE 1 OF ERROR MESSAGE ;PROCESS CONTROL/INTERFACE TRANSFER ERROR 022214 052564 TRFER: JSR DISPLY LEMLO :RHXX OR UNIBUS TRANSFER ERROR SEQ 0084 CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 15-7 H 7 SEQ 0085 MAIN PROGRAM 461 462 463 464 013114 013120 01 154 013130 004737 004737 004737 004737 466 013142 467 013144 001415 012737 465 013134 468 013152 469 470 471 ari 473 4764 013156 013162 013164 o1§170 013172 013176 2;2 013202 032760 005037 004737 000403 004737 oooao; 00473 004737 000207 0 ;62 022716 023366 026122 121400 000176 ooogos 001324 001 25 024016 024024 024056 1%: 2%: 004737 ozz§1a 481 013214 004737 022262 4B3 013224 484 013230 4B8S 013234 004737 004737 004737 239 013240 104414 004737 000207 SKIER: 053355 022732 026122 026052 024176 004737 022214 492 013252 004737 022262 494 013262 495 013266 496 013272 004737 004737 004737 104414 004737 497 013276 498 013304 012737 012737 500 013316 000405 499 013312 501 013320 502 013324 503 013330 504 013332 ?82 013336 004737 004737 004737 ooo;or 004737 000772 WCFER: 052361 022724 023366 026122 016356 000003 000040 017040 001324 001322 RTS P¢ ERROR ERROR ERROR ERROR MESSAGE MESSAGE MESSAGE COUNT ;'DLT', UPE®,"MXF*, *MDPE’ SET ? :CLEAR ERROR MASK JSR PC,LINE1 ;PRINT LINE JSR PC LINE2 :PRINT LINE 2 OF ERROR MESSAGE JSR JSR JSR PC,INCTOT PC.INCSKI PC,LINE7A DISPLY LEMSO PC,LINESB PC 1%: 024024 2%: :'SKI' ERROR 1 OF ERROR MESSAGE sPRINT LINE 38 OF ERROR MESSAGE JINCREMENT TOTAL ERROR COUNT sINCREMENT °'SKI®* OR *OCYL® ERROR COUNT sPRINT LINE 7A OF ERROR MESSAGE ('WCF*) JSR PC,LINE1 JSR PC,LINE2 JSR JSR JSR PC,LINES PC,INCTOT PC,PRTBAD JPRINT LINE & OF ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT JSEE IF BAD SECTOR TO BE PRINTED PC, SRE!RV JRETRY THE ORDER DISPLY .EHS PC,LINEBA MOV MOV #3 RETRY #B1705,MASK BR 28 JSR 024056 JSR PC,LINEGC RTS JSR PC PC,LINEGD JSR BR PC,Lth? 18’ :PRINT LINE 1 OF ERROR MESSAGE JREPORT WRITE CLOCK FAILURE sPRINT LINE g OF ERROR MESSAGE :PRINT LINE 3A OF ERROR MESSAGE *RETRY COUNT :ERROR MASK :RETURN HERE IF RETRY UNSUCESSFUL sPRINT "CORRECTED ON N RETRY(S)® :PRINT LINE 7 OF ERROR MESSAGE ;PRINT "UNCORRECTABLE AFTER N RETRY(S) ;PROCESS DRIVE UNSAFE ERROR 004737 02%214 Slg 013354 513 013360 004737 004737 022716 026122 516 013400 517 013404 :RETRY THE OPERATION *RETURN HERE IF RETRY UNSUCESSFUL sPRINT "CORRECTED ON N RETRY(S)® :FINISH THE ERROR REPORT sPRINT "UNCORRECTABLE AFTER N RETRY(S)' sPRINT LINE 7 OF ERROR MESSAGE MASK JSR 024016 509 013340 514 013364 518 013372 PC,SRETRY 1% PC,LINEGC 28 PC,LINEGD PCLLINE7 CLR JSR BR JSR BR JSR JSR RTS gg; 510 013344 511 013350 :BR IF 'NONE SET SRETRY LIMIT sREPORT WRIRE CLOCK FAILURE 490 013242 493 013256 c$ #3,RETRY #BIT15!BIT13!BITY!BITE, SRPCS2(RO) JSR 238 491 013246 :PRINT LINE § OF :PRINT LINE 3 OF :PRINT LINE & OF lNCRSHENT TOTAL ;PROCESS 'SKI' ERRORS 479 013204 48% 013220 PC.LINE§ PC,LINE PC.LINEL PC lN%TO BIT BEQ MOV 01704 2;; 480 013210 JSR JSR JSR JSR 104414 ooargr 012737 012737 004737 000403 UNSAF: 05 525 ogz;o 040000 000003 017040 001322 001324 JSR PC,LINEY JPRINT LINE 1 OF ERROR ME SSAGE JSR JSR PC,LINE PC,INCTOY JPRINT LINE OF ERROR MESSAGE .IN(RE ENT TOTAL ERROR COUNT DISPLY JSR MOV MOV JSR BR EM60 PC,LINE tgim MASK RE TRY PC,SRETRY 18’ R PORT DRIVE UNSAFE SPRINT LINE or ERROR ME SSAGE RETK, MASK SRETRY (GUNT RETRV THE ORDER SRETRY WAS UNSUCESSFUL . 518 01 40 519 0134 520 01 514 521 013420 024016 0%1302 024024 1$: 523 013424 524 013430 525 526 527 528 013432 5%9 013436 530 013440 531 013446 532 013450 533 013454 534 013456 535 013464 536 013466 537 013472 538 013474 539 013500 540 013504 541 013510 542 013514 543 013522 544 013530 545 013534 546 013536 547 013542 548 013544 549 013550 550 551 552 553 554 555 013554 556 013560 563 013562 564 013566 565 013570 013574 566 567 013600 3604 36 024056 2%: it SEQ 0086 sPRINT "CORRECTED ON N RETRY(S)' PC,LINEGD DROP :CONTINUE WITH ERROR REPORT ;PRINT "UNCORRECTABLE AFTER N RETRY(S)' :DROP UNSAFE DRIVE PC,LINE? PRINT LINE 7 OF ERROR MESSAGE 2% PC :RETURN 000230 BR BIT B 1%: 053624 BR DISPLY JSR 2%: 3%: EH?O EM71 $ ¢ LEM72 PC,LINE2 PC.LINE3 48’ JSR JMP SET? lngZ,SRPER3(R0) " #7.MASK #3,RETRY 4%: 3'TPE® F NO sPRINT TEMPERATURE WARNING ERROR sTYPE REHQ{?;NGSE¥§OR MESSAGE PC,INCTOT s~ —_— NN sSKIP LINES qng1.SRPER3(R0) 053545 000004 PC,LINET 000230 (=3=4 (=l =O=ON—=—=O0 MW EWNERR: PC,LINE6C PC PC,LINE6D DROP :BR IF NO ;'AIR SYSTEM WARNING ERROR' ;'EARLY WARNING ERROR,AIR TPE NOT SET' sERROR MESSAGE sPRINT OUT s INCREMENT TOTAL ERROR COUNT sSET UP ERROR MASK sRETRY COUNT sRETRY THE ORDER :RETRY UNSUCESSFUL RETURN :RINT *CORRECTED ON N RETRY(S)'* ETURN :PRINT 'UNCORRECTABLE AFTER N RETRY(S)® :DROP DRIVE sREPORT AN 'UNKNOWN' CATA PATTERN 1%: TST BNE 1STB 2%: 3%: 4%: sWAS (*C) TYPED? :BRIF YES 2% :BR IF NOT OR IF PROCESSING °*DCKER' LEMG3 s"CAN'T MATCH DATA WITH PATTERN' :PRINT LINE g OF ERROR MESSAGE FRSTER J J J R PC,LINE PC.LINE3A PC.LINES D SPLY DISPLY DISPLY JEM43 TST DATA BUFFER 5% PC,LINE B B B O O = = B et CFLAG 38 $CRLF LINGI CFLAG o WO N NOMTCH: NN NN B NN = = =2 O NN =2 N = = POINTER FIRST WORD OF W NO N ‘R1 o FRSSSES 000002 024024 ) s S NWNON) = b =2 oNONNOONNONNON SO 022214 024016 D o oo VWA JSR RTS PC,LINEGC PC,SRETRY OO0O0O0O NN JSR BR JSR JMP sREPORT EARLY WARNING ERROR D e D D ) e o e D D AN AN N o e e 0000000000000 NAWAVAWWAVWAVIVAWZWNWAWY oo NNNNNNNNNNO W =00 OOVTMN WV {a) >~ —-fi JOAD R PO? PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 15-8 N PROGRA R1,=-(SP) PC BINOCI WRDPOS WRDPOS , = (SP) PC,$5B2D :FIRST ERROR IN THE SECTOR ? sTYPE LINE *PRINT LINE 1 OF ERROR MESSAGE 3A OF ERROR MESSAGE SPRINT LINE & OF ERROR MESSAGE :CONTINUE PROCESSING ERROR :ESAr;I MATCH DATA WITH PATTERN' :HEADER FOR DATA PRINTOUT ‘WAS (*C) TYPED? :BR IF YES :ADDRESS OF WORD POSITION s TYPE WORD NUMBER :INC WORD POSITION :PUT THE WORD POS ON THE STACK :CONVERT IT TO DECIMAL MoV 0" — 5%: NN RS,SREPLZ 6 ACE LEADING ZEROS) .PERIOD .BLNKS2 (R1)+,=(SP) PC,LINOCT +SCRLF L TA WORD CR=L 6% D?NE ALL WORDS ? :BR IF NO R2 ;CLEAR ‘WORDS TO COHPARE COUNT IN R2 WRDPOS ,#3 000003 (== OWWO O SN = N = = OW NNNN=S NSNS SONN .WORD DISPLY DISPLY #<252.+2.> R #-1,FRSTER CMPLMT,LIMIT PC INCREHENT BUFFER POINTER = & MATCHING WORDS : SET_ERROR FOUNR INDIC ;RESET THE COMPARE ERROR TVPEOUT LIMIT sRETURN nmoo snpcszmb) $RPER3(RO) 005760 000416 000226 $RPER2(RO) 2% 004737 B ONMANNINOWNIY O = NNNON VINOON = ON 5 = [ a1 o LN IV D 000207 1% 1%: PC,LINET LEMGL PC,LINE2 PC.LINE3 PC.LINEG PC, INCTOT 2%: PC,LINE7 :BR s ANY BlYS SET _IN ER1 :BR IF ANY SET s ANY BITS SET IN ER3 ? :BR IF YES ANYIBIT SET mmmym 000230 001003 NONORLNINOWNT Y 1% SgPER1(R0) SEE IF *TRE' OR "MCPE®' SET T EITHER SET ISEE IFSERROR BITS IN (CS2 SET ST 000176 ggooooLSRP(S1 uw) m 177400 CKERR: ~mreeeoe 000166 OO0O0O0O0O00 060000 sRETURN PC IN ER2 F ERROR MESSAGE . BUT NO ERROR BITS SET F ERROR MESSAGE F ERROR MESSAGE F ERROR MESSAGE L ERROR COUNT F ERROR MESSAGE sCHECK BUS ADDRESS REGISTER & WORD COUNT REGISTER (KBUS: 000020 000006 000172 sCHECK WORD COUNT :BR IF NOT ZERO SURDL(RO) -(SP) ;WORD LENGTF (SP ) sCHANGE INTO BYTE COUNT :ADD THE STARTING LOCATION $BUF (RO), (SP) ?RPHC(RO) (SP)+,$RPBA(RO) :BUFFER ADDRESS PROPER ? PRINT LINE 1 OF ERROR MESSAGE — TMm O - M —ammm r=r=-i5»r- :BR IF OK ~NO SN 2%: s T o ot e D o = 4ot 4+ 4 4 1%: Mol 000170 VOOVOVOOO N alalalalalalslal ] « s s s s B 005760 [elelelelelel=] NNONORONOWND S OnwrornONON O =N VINRODOMNONND = [« LNTe0LN L VD 621 014046 622 014052 623 014054 624 014060 625 014062 626 0146066 627 014072 628 014074 629 014100 630 014104 631 014110 632 014114 633 014120 634 0161%4 635 014130 JSR 000202 &~ N = 618 619 620 032662 SEQ 0087 sCHECK ERROR BITS IN THE RHXX & RPO7 REGISTERS N AN NN = 581 013662 S8§ 013666 583 013670 584 013674 585 013700 586 013702 587 013706 588 013712 589 013720 590 013722 591 013726 59§ 01%7 0 993 013736 594 013744 595 596 597 598 013746 599 013754 600 013756 601 013764 602 013766 603 013772 604 013774 605 014000 606 607 014002 608 014006 609 610 014010 611 014014 61% 014020 014024 613 614 014030 615 014034 616 014040 617 014044 EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 15-9 [elelelelel el e e ot "o O==0O0ONOO 0000 OWNIWVIN =N NSO S NNNONWNSN= S OW = >~ —0 JOAQ ORPR; PERF N PROGR BUS DRESS OR WORD COUNT INCORRECT NT LINE PRIN! LINE 2 OF ERROR MESSAGE 3D OF ERROR MESSAGE ;PRINT LINE & OF ERROR MESSAGE s INCREMENT TOTAL ERROR COUNT sPRINT LINE 7 OF ERROR MESSAGE CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 16 SEQ 0088 MAIN PROGRAM 1 :COMPARE g 014132 005037 001352 S 014136 132760 000004 6 014144 g 014146 001001 000207 9 014150 10 014154 005037 016001 001362 000006 1; 014166 13 014174 066037 001901 000170 11 014160 016037 000020 }g 014176 000207 16 014200 17 014206 18 014214 016037 052737 016037 000012 150000 000010 20 014230 21 014236 22 014242 23 014246 24 014252 25 014260 26 014262 27 014266 28 014272 29 014274 30 014300 31 014306 §§ 014314 005237 012737 005037 005037 023760 101005 013702 005037 000405 016002 166037 126027 001034 001364 177777 001356 001360 001366 19 014222 013737 001460 000024 FRSTER ;CLEAR 'FIRST ERROR' AND "NO DCK®' INDICATOR CMPARD: BITB BNE RTS #4,$CODE(RO) 1$ PC :SEE _IF READ COMMAND :BR_IF IT IS 1$: ERCTR $BUF (RO) ADD BNE 2%: 001364 001350 CMSTR: 000022 001366 000005 1$: 2%: JRETURN ;CLEAR THE ERROR COUNTER sBUFFER ADDRESS $WRDL (RO , CMCNT ;WORD COUNT TO WORKING LOCATiION $RPWC (RO) , CMCNT sCALCULATE WORDS TRANSFERED ,R1 2% RTS PC sEXIT==NO WORDS XFERED MOV BIS MOV $CYL(RO),CMCYL #150000,CMCYL $SEC(RO), CMSEC sCYLINDER ADDRESS WORKING LOCATION INC MOV CLR CLR CMP BHI MOV CLR BR MOV SUB CMPB BNE LIMIT #-1,ZROIND SAVER1 SAVERS CMCNT,$SSEC (RO) 1% CMCNi ,R2 CMCNT 2% $SSEC(RO) ,R2 $SSEC(RO) . CMCNT $CODE (RV) ,#5 CMDAT MOV 001366 001366 000022 000022 000024 CLR MOV MOV 001366 §§ CMPLMT,LiMIT ;SET MFG, USER AND FMT BITS :SECTOR € TRACK ADDRESSES TO WORKING LOCNS ;DISPLAY LIMIT ; CONVERT PARAMETER INTO LIMIT VALUE ;CLEAR THE 'ZERO'S' INDICATOR 'EtEAR THE R1 SAVE WORD EAR THE R5 SAVE WORD ;1S ?gf;gklglli GREATER THAN ONE SECTOR ? .8 ;LESS THAN, USE REMAINING BUFFER sSET COUNTER TO 0 : COMPARE SECTOR ;DECREMENT WORD COUNT ;READ HEADER & DATA? :BR IF NOT :COMPARE HEADER WORDS 36 014316 012705 38 014326 39 014330 022521 001405 37 014322 40 014332 41 014340 42 CMPAR: (LR 001366 001370 001370 001372 THE BUFFER 014344 43 014346 44 014350 45 014356 052711 012737 004737 022521 001405 127§7 004737 001370 177777 014374 177776 014374 46 014362 47 014366 162702 003007 000137 015010 50 014374 51 014400 gg 014404 005237 004737 000207 001362 015016 :g 014370 CMHED: 150000 001374 18: 001374 000002 28: MOV #CMCYL RS CMP BEQ (RS)+,(R1)+ 1$ BIS MOV JSR #-1,WRDPOS PC,CMSTR2 BEQ MOV 2% #-2,WRDPOS SUB BGT #2,.R2 CMDAT CMP JSR JMP CMSTR2: gg #150000, (R1) INC JSR RTS (R§)+,(R1)+ PC,CMSTR2 CMPRX ERCTR PC,CMPRT PC sADDRESS OF COMPARING CYLINDER sSET BITS INCASE BAD SECTOR ENCOUNTER sCHECK CYLINDER :BR _IF COMPARE 0K s INDICATE WORD POSITION IS HEADER WRD 1 sREPORT ERROR s COMPARE SECTOR/TRACK :BR IF EQ sINDICATE WORD POSITION IS HEADER WRD 2 :REPORT ERROR ; SUBTRACT HEADER LENGTH FROM SIZE *BR IF NOT FINISHED :COMPARE THE DATA PORTION s INCREMENT THE ERROR COUNT sREPORT THE COMPARISON ERROR sCHECK THE REST OF THE HEADER :COMPARE DATA FIELD 56 014406 Q12737 57 0164414 (04737 # 177777 015444 001374 CMDAT: MOV JSR #-1,WRDPOS PC,MATCH IALIZE WORD POSITION THE PATTERN & >~ — 0 - {m) OAO RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 16=1 i SEQ 0089 PROGRAM 58 014420 59 0164%2 0004 00472% 013554 29 014426 000463 014430 64 014436 65 014442 66 014444 67 014446 68 014452 69 014454 005237 022125 001016 005737 001406 032777 001402 70 014462 ;1 014464 004737 76 014472 75 014474 76 014476 0034461 005303 001357 7% 014470 005302 ;g 014500 79 014502 005761 001410 012737 005237 004737 000760 86 014530 87 014534 88 014536 89 014542 90 014546 91 014552 92 014560 93 014562 105737 100412 005037 010137 010537 013737 000743 005737 001740 004737 000735 MOV 2%: INC CMP BNE IST BEQ BIT 001362 164472 015016 3%: BEQ JSR 177776 177777 001362 015016 4s: 001350 001352 001350 001356 001360 001374 5%: 001354 001350 6%: 015016 126027 001414 013702 020227 002474 162737 003667 012702 000664 000400 108 014636 109 014644 110 014646 111 014652 11% 014660 113 014662 114 014666 023727 002461 105237 123760 1016%6 105037 105237 001366 000002 001372 001372 000152 000024 000005 001366 000004 000400 00137§ 00137 7%: 8s: 001366 sFOUND A PATTERN 7% ;BYPASS COMPARE ROUTINE RS #16.,R3 OF PATTERN ADDRESS IN R4 ;R3 IS PATTERN POS COUNTER (R4) WRDPOS (R1)+,(R5)+ 3] ERCTR 3% #SW3,aSWR ¢RETURN HERE IF NO MATCH WITH PATTERN MADE ;ADDRESS : INCREMENT TO CURRENT WORD POSITION : COMPARE BUFFER WITH PATTERN :BR IF NOT EQUAL sERRORS DETECTED ? :BR IF NO ERRORS sSWITCH 3 SET ? :BR _IF NOT SET :DISPLAY THE WORD BLE DEC BNE 7% R3 2% :BR WHEN AT END sDECREMENT PATT POS COUNT :BR IF NOT AT END OF PATT TST =2(R1) DEC R2 1% ;DECREMENT SIZE COUNT sRESTART THE PATTERN ;1S MISCOMPARED CHARACTER=0 BEQ MoV INC JSR BR 5% #-1,ZROIND ERCTR PC,CMPRT 3% :BR_IF YES sSET NON-ZERO MISCOMPARED INDCATOR s INCREMENT THE ERROR COUNTER ;REPORT ERROR s CONTINUE COMPARE TSTB BM] CLR MOV MoV MOV BR TST FRSTER 6% ZROIND R1,SAVERT RS,SAVERS WRDPOS,SAVPOS 3% ZROIND 3% PC,CMPRT 3% sFIRST ERROR? :BR_IF NOT sSET _THE ZERO INDICATOR :SAVE CURRENT R1 +SAVE CURRENT RS ;SAVE CURRENT WORD POSITION : CONTINUE COMPARE sANY MISCOMPARIONS NOT ZEROS ? sBR _IF NONE-ALL ERRORS=ZERO +REPORT ERROR : CONTINUE COMPARING CMPB BEQ MOV CMP BLT SuB BLE $CODE(RO) ,#5 9% CMCNT ,R2 R2, ¥4 CMPRX #256. ,CMCNT CMDAT sREAD HEAD AND DATA ? sYES sSET_COUNTER = REMAIN BUFFER LENGTH :1S THERE AT LEAST 4 WORDS TO MATCH PATTERN ? :BR_IF NO :GREATER THAN A SECTOR ? sNO,RETURN TO COMPARE LOOP CMP BLT INCB CMPB BLOS CLRB INCB CMCNT , #2 :1S THERE AT LEAST 2 WORDS TO COMPARE HEADER ? CMPRX :BR _IF NO CMSEC s INCREMENT COUNTER CMSEC,SECLMT(RO) sMAX SECTOR # ? 10% :NO CMSEC sRESET SECTOR # CMTRK s INCREMENT TRACK # BEQ JSR BR MOV BR 9%: 1% PC,CMPRT BR 98 014576 99 014604 100 014606 101 014612 102 014616 103 014620 104 014626 105 014630 }89 014634 Mov 1$: 000753 80 014506 81 014510 82 014516 83 014522 gg 014526 96 014566 95 014570 39 014574 001374 000010 PC,NOMTCH BR 6% 014432 011405 01%703 000020 62 JSR BR #256. ,R2 CMDAT :SET COUNTER =SECTOR SIZE sRETURN TO COMPARE LOOP CIRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 16-2 SEQ 0090 - VIVY SR ONNNNO SN MNOON—=S W00 NS OONONNINSO NNSWVINNSWVWNN WWONIWWON=O NNV YN N N OW - 004737 000207 000154 W AW ANV A WA VIV 001373 10% CMTRK :N 108: z ING CYLINDER 6 ;GET_COMPAR ) AVE ONLY THE CYLINDER BITS *NORMAL RETURN,NOT WRAP AROUND #CMCYL RS sADDRESS OF 11% :ggHPARE 1ST HEADER WORD TMATCH 177776 001374 000002 001366 COMPARING CYLINDER sSET BITS INCASE BAD SECTOR ENCOUNTER *INDICATE WORD POSITION IS HEADER WRD 1 *NOT MATCH :segguo WORD OF HEADER 11%: 014374 SLAST CYLINDER ? 10% CMPRX #150000, (R1) (R5)+, (R1)+ 001374 sMAX TRACK # ? sRESET TRACK # s l INCREMENT CYLINDER NUMBER (SP)+,CYLLMT(RO) w SINDICATE WORD POSITION IS HEADER WRD 2 INOT MATCH sADJUST WORD COUNT s COMPARE IS DONE 12%: sRETURN TO COMPARE LOOP 015376 CMPRX: 001356 JSR RTS CMPRT: NOP 1$: TST BNE JSR JSR BR D ) D 015124 015206 2%: — e e SV e eb AN NN = NN NN [elelelelelelelel=] OO0 ==0000 OO0 adDOOO = b cd cd b O SNININWVNE SN WNWWWNO OO0 - OWV [ i ~]l~]=]l=lelelelelelelelele o] nNOS O SNONONNY ororN — s — -.dddd-.°°°°°°°2 o S D D e e e D e i — D o i i WA = OO0 Ng VNN CMTRK, TRKLMT (RO) E:‘:‘ (SP) 0150560 (SP) 000240 005737 D e purd o pury o o OCO0OO0OOOOOOOOOOO0O0O0O0O0OO e I NSNNNOoOOO e e b e NNNNNSN — CMPB S O—=OO00O0O—=—— COO0O0O0O0O0O0O0O0 g O=ONO—-=0ONWNI= OONNM=000N S NSNS N=NONN O =NINIANWN =N Py WSS D e e o D D D BB BB D o i o D D D i B2 =l-B-leleBelelelelelelelelele B elelelelelelelele) 0034 000677 001373 PC,ENDCMP °C ;PRINT LAST LINE IF ERRORS s TYPE DATA (COMPARE ERRORS OO0 — o O OO O O i e ch D e D i D e i D e N NN LSS B 5N W e o D e i D o e i D D e i D i D i o N NN N NN NN NI NI NN NI NI NI NI NI D = ) el D s b b b b mbuNdOONdOONOOONO\nwa-flgom%mbw-ooa%\fl MAIN PROGRAM 015206 001352 SAVER1 2% SAVER1,R1 RS SAVERS SAVPOS ,WRDPOS PC,4% PC,7% SAVER1 SAVERS (SP)+ ,WRDPOS 3%: 48: :BR IF YES sPRINT INITIAL MESSAGE INFO ;P:{?T REMAINDER OF MESSAGE ::PUSH R1 WRDPOS,=(SP) 001374 sPRINT SAVED VALUES ? (SP)+ RS (SP)+,R1 PC,7% PC FRSTER 9% 5% ON STACK :sPUSH RS ON STACK ;:PUSH WRDPOS ON STACK sDISPLAY SAVED R 1 :DISPLAY SAVED R 5 sDISPLAY SAVED W OR D POSITION sPRINT INITIAL M ES SAGE INFO v JPRINT SAVED V A LUES sCLEAR SAVED R E g IST ER INDICATORS ONE E ::POP STACK IN T0 0 v WRDPOS ::POP STACK INT 0 R ::POP _STACK INTO R sPRINT REMAINDER 0 F MESSAGE 3 sRETURN sFIRST ERROR ? :BR IF N071 : :BR IF FIRST ERROR AND PROCESSING °'DCK' ERROR, N CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 16-3 SEQ 0091 MAIN PROGRAM 180 181 012134 004737 o§5214 183 015144 004737 022262 }gg 015160 000404 18% 015140 184 015150 185 015154 104414 052666 004737 004737 oggraa 023306 188 015162 189 015166 190 015172 104414 104414 104414 055613 001203 055642 192 015176 012737 177777 195 015206 196 015212 197 015214 198 015220 199 015222 005737 10041; 005737 001403 005337 001334 191 }32 015204 200 015226 201 015230 202 015236 582 015240 000207 001005 032777 001001 000207 217 015312 218 015320 219 015322 023727 001003 104414 001374 221 015330 22; 015336 223 015340 023727 001003 104414 001374 013746 001374 227 015356 228 015362 229 015364 230 015370 2;} 015374 004537 000006 104414 104414 000207 032662 236 015402 001417 224 015344 225 015346 000420 000411 5%: €5 EMG :DATA COMPARE ERROR W/0 °'DCK' ERROR :PRINT LINE 2 OF ERROR MESSAGE PC.LINE3A PC.LINEG :PRINT LINE 3A OF ERROR MESSAGE SPRINT LINE & OF ERROR MESSAGE :GO TO TYPE HEADER ;PRINT *DATA COMPARISON ERRORS' SCR=LF *PRINT ° WORD EXPCTD RECEVD MOV #-1,FRSTER SSET FIRST ERROR FLAG ST BM] ST BEQ DEC CFLAG 9% LIMIT 13 LIMIT 108: MOV SUB JSR JSR MOV JSR DISPLY MOV JSR DISPLY RTS R1,=(SP) #2.(SP) PC.LINOCT PC,118 -2(RS),=(SP) PC,LINOCT ,BLNKS2 <2(R1),=(SP) PC,LINOCT ,SCRLF PC :BUFFER ADDRESS *ADJUST ADDRESS STYPE IT SGET WORD POSITION :PUT EXPECTED DATA ON THE STACK STYPE IT sTYPE 2 BLANKS :RECEIVED DATA STYPE IT sCR=LF *RETURN 177777 11%: CMP BNE DISPLY WRDPOS , #=1 12% MSHW1 ;1S 1T HEADER WORD 1 ? *BR IF NO sTYPE HW1 * 177776 12%: cMP BNE DISPLY WRDPOS ,#-2 138 ,MSHW2 ;1S IT HEADER WORD 2 ? ‘BR IF NO STYPE ' HW2 ° MOV WRDPOS ,=(SP) sPUT THE WORD POS ON THE STACK JSR LWORD DISPLY DISPLY RTS RS.SREPLZ 6 ,PERIOD .BLNKS2 PC STYPE STYPE sTYPE :TYPE 6%: 001352 RTS 78: 163716 8%: 057055 057065 13%: 226 015352 004737 033332 g%z 335 015376 105737 001353 BR FIRST ERROR AND COMPARE ERROR W/0 *DCK’ :PRINT LINE 1 OF ERROR MESSAGE ,LIN9B .SCRLF ,LINSH 177776 024306 001203 057711 056530 PC,LINE ;ELSE, DISPLY DISPLY DISPLY 000002 024306 015312 177776 024306 056530 " JSR JSR JSR 98: 010146 162716 004737 004737 016546 004737 104414 016146 004737 104414 000207 220 015326 , 001364 205 015242 206 015244 207 015250 208 015254 209 015260 210 015264 211 015270 212 015274 213 015300 214 015304 5}2 015310 pc.L5u51 DISPLY 001364 000200 JSR - 14%: BNE BIT BNE RTS BR BR JSR PC ; 108 #SW07,3SWR 108 PC f4$ fa8 PC,$SB2D ; ADDR POS DATA *RETURN ;WAS (*C) TYPED? ‘BR IF YES STYPEOUT LIMIT REACHED ? ‘BR IF IT HAS :DECREMENT LIMIT COUNTER BR IF NOT AT LIMIT sPRINT ALL DATA COMPARE ERRORS ? ‘BR IF YES *RETURN *CONVERT IT TO DECIMAL IT (REPLACE LEADING ZEROS) 6 DIGITS *.° 2 BLANKS : JLAST LINE OF COMPARE ERROR REPORTING ENDCMP: TSTB FRSTER+1 ;ANY COMPARE ERRORS FOUND ? BEQ 2% DATA’ ‘BR IF NOT CIZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 16-4 SEQ 0092 " r * a r * a R r a r a r a r a n r O ~ u w O X A x E & e » o ~ w [ ] S — o _ s i t ) —_oun>auveEawv wsaew.—o WD§OEQ—OWEJIXxF2D wa02aOoco xEoaN =—2uV|- [4w+ OoONOMNIND 1% 2%: a)-d => [+ 9 -~ (=] — — (=1 >wa DoaW"mH0"Hax>2—VD= xooa wLn]g- NONM J= Or= MAIN PROGRAM x OE = CIRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B83 12:06:52 PAGE 17 SEQ 0093 MAIN PROGRAM 1 :ROUTINE TO MATCH THE DATA WITH A PATTERN, ONLY WHEN LOCATION "PATTERN' § ‘?E{ERN THE ADDRESS OF THE EXPECTED FIXED DATA PATTERN IN Ré. g *1S EQUAL TO O (RANDON DATA PATTERN MODE). OTHERWISE, 1 1; 1 }g ; : : MOV #BUFFER,R1 JSR PC,MATCH RE TURN1 :BUFFER ADDRESS MATCH: MOV R1,=(SP) :SAVE R1 1% ‘BR IF YES : 16 015444 010146 gg 015452 00140 21 015446 013704 001476 000416 012704 011601 28 015472 29 015474 30 015500 001413 016405 012703 32 015506 33 015510 34 015512 35 015514 36 015520 37 015522 38 015530 zg 015532 001366 005303 001374 062704 000403 062766 012601 000207 27 015466 31 0155064 162704 022125 000044 1%: 28: 000002 002314 000004 38: 002314 000002 000002 2} 43 015534 4 015542 45 015546 46 015552 47 01555¢ 48 015556 49 015560 50 015562 51 015566 sg 015572 53 015574 54 015576 55 015600 56 015604 57 015612 58 015614 59 015622 60 015624 61 015632 4%: * S3: 68: PATTERN,R% ASL R&4 SUB #2,Ré BR MOV MOV BEQ MOV MOV CMP BNE DEC BNE ADD BR ADD MOV RTS 4 244 R (SP) ,R1 5% STNDAT(R4) ,RS ¥4 R3 (RT)+,(RS)+ 28 R3 38 #STNDAT R4 6% #2,2(SP) (SP)+,R1 PC :PATTERN ADDRESS IN R4 sCOULDN'T MATCH PATTERN ON THE STACK *WAS RANDOM PATTERN ENABLED ? e 2 ‘USE KNOWN PATTERN ‘PATTERN TABLE INDEX *RELOAD R1 :DECREMENT INDE ‘BR IF PATTERN NOT MATCH :ADDRESS OF PATTERN ADDRESS ‘NUMBER OF LOCATIONS TO CHECK :COMPARE THE BUFFER AGAINST THE PATTERN :BR IF NOT EQUAL, TRY NEXT PATTERN :FINISHED CHECKING? ‘BR IF NOT FINISHED sMAKE PATTERN ADDRESS ABSOLUTE CEXIT * INCREMENT RETURN ADDRESS ‘RESTORE R1 *RETURN ;USE ECC TO CORRECT THE DATA ERROR 016037 016046 066016 001002 005726 000207 005045 016046 004737 005716 001413 006316 161637 122760 oo1og7 062737 000403 165737 062706 000172 000170 001400 013737 gagrgr ECC: 000020 000022 032046 001400 000005 000024 000004 001400 001000 000004 001400 091 76 177760 001406 001376 og 015636 o16g 000232 001376 63 015644 005337 001376 64 015650 65 015656 MOV BEQ 0154564 006304 24 015456 25 015460 26 015466 RETURN? THIS ROUTINE WILL 66 015664 062737 000017 67 015672 006237 001406 001406 MOV MOV 1%: ADD BMT TS, RTS CLR is: $: CMPB BNE ADD BR SUB ADD MOV JSR ST BEQ ASL SUB MOV DEC MOV BIC BIC ASR $RPBA(RO) ,ECSEC ;ADDRESS OF LAST LOCN XFERED $RPWC(RO) .=(SP} :ACT WORDS XFERED (2'S COMP) $WRDL (RO) . (SP) 1% (SP)+ PC -(SP) $SSEC(RO),~(SP) PC,SDIV (SP) 2% (SP) ($°) ,ECSEC #5,8CODE(RO) 38 #4 ,ECSEC 3¢ #256.+2,ECSEC 04SP :ADD WORDS REQUESTED ;RESTCRE STACK . SEXIT==NO WORDS XFERRED SCLEAR NEXT STACK LOCN :SECTOR SIZE :DIVIDE WORDS XFERED BY SECTOR SIZE :PARTIAL SECTOR XFERED ? ‘BR IF NOT :CONVERT INTO NUMBER OF BYTES :SUBTRACT SECTOR RESIDUE :WAS OPERATION, READ HEAD & DATA ‘BR IF NOT SADD MEADER SIZE (IN BYTES) BACK IN 160 ADJUST THE STACK POINTER :SUBTRACT SECTOR DATA FIELD SIZE (IN BYTES) SADJUST THE STACK POINTER $RPEC1(RO) ,ECBIT ECC POSITION COUNT ECBIT :ADJUST BIT POSITION ECBIT,ECWRD #5C17.ECBIT 917, ECWRD ECWRD *LOAD THE WORD COUNT LOCATION SSAVE THE BIT OFFSET COUNT :CLEAR THE BIT OFFSET SCHANGE T0 BYTE COUNT(DIVIDE BY 2) D 8 SEQ 0094 N PROGRAM 68 015676 006237 001406 ASR ASR ECWRD DISPLY ,LINTOA ECWRD :CHANGE TO BYTE COUNT(DIVIDE BY &) 71 0157212 013746 001406 MOV ECWRD, = (SP) *PUT THE WORD COUNT ON THE STACK 091374 ASR MOV ‘GET STARTING WORD FOR MESSAGE(DIVIDE BY 16.) *GET CURRENT WORD POSITION 032446 JSR 69 015702 006537 001406 70 015706 104414 056065 7§ 015716 73 015720 74 o1s7§a 006216 011637 004737 03332 104414 057711 78 015744 063737 001400 80 015760 g; 015762 1 190; 000137 83 015766 86 015774 85 016000 86 016004 87 016006 88 016012 33 016016 016037 005037 005337 002405 006337 006137 000770 000234 001404 001376 91 92 93 94 016020 016026 016032 016036 017737 013746 047716 043777 163362 001402 163350 001402 97 016050 98 016054 99 016056 100 016064 101 016072 005737 001415 013737 062737 026037 001404 103 016102 005737 001402 105 016110 }89 016114 005037 000414 001414 108 016116 109 0161§L 017737 013746 163272 001404 001420 111 016136 043777 0014064 163252 104414 056265 004737 024306 75 015730 76 015734 77 015740 79 015752 32 016046 102 016100 104 016106 110 016130 }}g 016142 114 016146 004737 104414 086037 052677 101006 001516 047716 052677 118 016152 013746 119 016162 013746 016156 056121 000172 12; 016176 123 016200 124 016%0& 129 016210 016214 DISPLY DISPLY 001406 001406 001402 &$: 001406 000002 000172 163260 163246 001406 ,PERIOD .LIN10B 43 ECC2 ‘BR IF IN DATA READ *NOT IN DATA READ = REPORT 'T $RPBA(RO) ,ECWRD ;SEE IF BURST WAS IN DATA READ $RPEC2(RO) ,ECMSKO :GET THE ERROR BIT MASK ECMSK1 :CLEAR THE UPPER MASK WORD ECBIT :DECREMENT THE BIT OFFSET COUNT I ‘BR IF DONE ECMSKO SSHIFT THE ERROR MASK ECMSK1 SSHIFT THE LOWER INTO THE UPPER 31 :CONTINUE THE SHIFT 163342 MOV MOV BIC BIC SECWRD,ECBADO ECMSKO.=(SP) SECWRD . (SP) ECMSKO.QECWRD 001414 001414 001414 ST BEQ MOV ADD CMP ECMSK1 :DOES ERROR GO INTO NEXT WORD ? 7 ‘BR IF NO ECWRD,ECWRDY :DUPLICATE ADDRESS #2 ,ECWRDY : INCREMENT ERROR ADDRESS $RPBA(R0) ,ECWRD1 1S NEXT WORD IN THE BUFFER ? ST ECMSKO 5%: 001412 68: BIS BH] 7%: 8$: BEQ ;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 13 :BR IF YES, ELSE, ECC2 *BR IF NO & *WAS ERROR’IN FIRST WORD 2 CLR BR ECWRD1 ECC MOV MOV SECWRD1,ECBADY ECMSK1,=(SP) ;SAVE THE SECOND BAD WORD :PUT THE UPPER MASK ON THE STACK BIC ECMSK1,3ECWRDY :CLEAR ERRONEOUS ONE BITS FROM DATA WORD BIC 8IS ECC1: (SP)+,3ECWRD DISPLY StCWRDT,(SP) (SP)+,3ECWRDY LLINTOW MOV WRDPOS,=(SP) 004537 032662 JSR RS . SREPLZ 1064414 057711 056530 004737 024306 IN DATA FIELD OF ERROR SECTOR' BHI JMP 001374 001412 :' (LEFT JUSTIFIED) SFIND THE BEGINNING OF THE ERROR BURST ECWRD,=(SP) 013746 STYPE *.° ECSEC,ECWRD MOV 000006 104414 SCONVERT IT TO DECIMAL STYPE IT MOV CLR DEC BLT ASL ROL BR 001402 001404 163336 PC,$$B2D PC . $SUPRL ADD CMP 016344 120 016166 004737 033332 121 016172 JSR (SP) (SP) ,WRDPOS :CHANGE TO BYTE COUNT(DIVIDE BY 8.) *"ERROR BURST BEGINS AT * JSR JSR. WORD DISPLY DISPLY MOV JSR PC,LINOCT PC,$5B82D 6 ,PERIOD :CLEAR 2Nu WORD ADDRESS *PRINT WORD CORRECTED :CILEAR ERRONEOUS ONE BITS FROM UPPER MASK :SET DROPPED BITS ;HEADER :PUT ECWRD ON THE STACK *TYPE ECWRD :PUT THE WORD POS ON THE STACK *CONVERT IT TO DECIMAL STYPE IT (REPLACE LEADING ZEROS) .BLNKS?2 STYPE 6 DIGITS STYPE *.° :TYPE 2 BLANKS PC,LINOCT :TYPE ECBADO ECBADO,=(SP) :PUT ECBADO ON THE STACK -~ JOAQ RPO7 PERF EXER MACRO V0&4.00 1=JAN=83 12:06:52 PAGE 17-1 CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B83 12:06:52 PAGE 17-2 SEQ 0095 NKS2 ;TYPE 2 BLANKS PC,LINOCT ,BUNKS2 STYPE @ECWRD :TYPE 2 BLANKS ECWRD1 'PRI?; TgE NEXT WORD ? DV ~ETVMa TMM éscuao -(SP) « VMs DD Ms O e e xn [l [l mm » PLY OO O BN LS = B O NN =2 S NS = SN OSSNSO NNOONNONS =N 000207 PLY W W N BURWNIN = - S OO0 OO NN OIS NONONONOCNOSOONNONNVON SO VIS SO8& Qo e i oo~ SrNWN=O 0 056530 VIO VTNV O WY oo QoYY gor S o 104414 104414 Qoo RS N S ) e O BB OWHWN—=OYV00 P PR ViAW 4 ooorororrOrOFOCOCOCOOCOCOOOOOO - - W JWNWNWN NWN—-O ——— pury [=leloBielelelelelelelelelelelelelelelelelele BNele] o 016§ §0 = NS = NS MAIN PROGRAM F D1 ,=(SP) IN oct 0s .~(SP) SB 2D RE PL 10D KS2 D1 IN KS RD IN KS :PUT @ECWRD ON THE STACK :CR=LF :PUT ECURD1 ON THE STACK :TYPE _ECWR :PUT THE HORD POS ON THE STA(K :INC TO SECOND WORD OF BURST ;CONVERT IT TO DECIMA TYPE IT (REPLACE LEADING ZEROS) GIT SP) TVPE 2 BLANK :PUT ECBAD 1 ON :TYPE ECBA 01 ;TYPE 2 BLA NKS THE STACK :PUT BECWRD1 ON THE STACK :TYPE @ECWRD1 :TYPE 2 BLANKS :EXIt ;E:ng? BURST WAS NOT :RETURN TRANSFERED TO MEMORY CIRJOAQ RPO7 PERF EXER MACRO VvC4.00 1-JAN-83 12:06:52 PAGE 18 SEQ 0096 MAIN PROGRAM 1 :ROUTINE TO DISPLAY THE SECTOR WHICH GAVE §& 016356 032777 000010 162570 PRTBAD: BEQ BIT 016364 001520 #5u3,aSWR 8% 10 016406 PC 5 016366 . o1sg72 7 016376 8 016402 9 016404 016001 016046 066016 001002 005726 11 016410 005046 1; 13 14 15 16 17 000172 000020 000170 000207 016412 016616 016422 016424 0164%6 016430 016049 004737 005716 001403 006316 161601 000022 032046 19 016436 162701 001000 18 016432 000410 20 016440 21 016446 22 016450 23 016456 24 016460 25 016466 26 016470 122760 001002 162701 062706 104414 104414 122760 28 016500 29 016506 30 016506 31 016512 32 016516 33 016520 3, 016524 35 016530 36 016532 ;g 016536 104414 010146 004737 104414 012146 004737 104414 012146 004737 104414 27 016476 39 016542 40 41 42 43 001021 104414 016546 016552 016554 016560 012702 010146 004737 104414 45 016570 001412 4 01osga 46 016572 47 016576 48 016600 49 016606 020160 104414 012146 004737 005302 50 016606 001366 51 016610 104414 52 016614 000754 53 016616 54 016622 104414 104414 gz 016626 000207 57 MOV MOV ADD BNE ST 000005 000004 000004 001203 05641 000005 1%: 000024 28: 38: 000024 056466 024306 056531 024306 001203 000010 024306 056530 000172 4$: 5%: 6%: 056531 MOV JSR 3 BEQ ASL SUB B8R 7%: 8s: $SSEC(RO),=(SP) PC,SDIV (SP) 28 (SP) (SP) ,R1 143 #256.+2,R1 BNE 4 C(MPB BNE SUB ADD DISPLY DISPLY CMPB DISPLY #5.$CODE(RO) 33 ¥ ,R1 #4,SP ,SCRLF ,LINTIH #5,SLODE(RO) ‘EXIT==NO WORDS XFERRED ‘MAKE THE UPPER DIVIDEND 0 :DIVIDE THE WORDS XFERED BY THE SECTOR SIZE :DIVIDE *REMANDER = 0 ? :BR IF IT IS = COMPLETE SECTOR TRANSFERED *CONVERT THE RESIDUAL SECTOR INTO BYTE COUNT $SUBTRACT IT FROM THE END ADDRESS SFINISH THE SIZING $SUBTRACT FULL SECTOR FROM END ADDR (IN BYTES) :WAS OPERATION READ HEADER & DATA ? ‘BR IF NOT :SUBTRACT HEADER SIZE FROM ADDR ‘RESTORE THE STACK POINTER SCR=LF ‘PRINT THE HEADER :WAS OPERATION READ HEADER & DATA ? :BR IF NOT :TYPE 'ADDR R1,$RPBACRO) :PRINTED ALL THE SECTOR ? 4 ,BLNKS1 MOV JSR (R1)+,=(SP) PC,LINOCT BNE DISPLY BR 63 ,SCRLF 1 RTS ;RESTORE STACK ,LINTIA BEQ DISPLY DISPLY :PUT THE END ADDRESS INTO R1 :FIND THE BEGINNING OF THE SECTOR :SUBTRACT THE WORDS NOT TRANSFERED STYPE "ADDR HEADER® :PUT THE ADDRFSS ON THE STACK STYPE THE ADDRESS *TYPE 3 BLANKS *PUT WORD ON STACK STYPE THE 15T HEADER WORD STYPE 1 BLANK *PUT WORD ON STACK STYPE THE 2ND HEADER WORD SCR=LF #8. ,R2 R1.=(SP) PC,LINOCT ,BLNKS2 CMP :PRINT THE BAD SECTOR ? ‘BR IF NOT ,LINT R1,=(SP) PC.LINOCT ,BLNKS3 (R1)+,=(SP) PC,LINOCT ,BLNKS1 (R1)+,=(SP) PC,LINOCT ,SCRLF MOV MOV JSR DISPLY DEC 001203 -(SP) SUB DISPLY 024306 001203 001203 CLR DISPLY MOV JSR DISPLY MOV JSR DISPLY MOV JSR DISPLY 024306 056527 056507 RTS $RPBA (RO’ ,R1 $SWRDL (RO) .=(SP) SRPWC (RO) . (SP) 1% (SP)+ THE HARD ERROR R2 ,S$CRLF .SCRLF PC DATA® 8. DATA WORDS PER LINE :PUT THE ADDRESS ON THE STACK STYPE THE ADDRESS STYPE 2 BLANKS ‘BR IF ALL PRINTED STYPE 1 BLANK SPUT THE DATA ON THE STACK STYPE THE DATA ‘DECREMENT THE HORIZONTAL COUNT :BR IF NOT AT THE END OF THE LINE SCR=LF *RESTORE THE WORDS/LINE COUNT SCR=LF SCR=-LF *RETURN ;ROUTINE TO DO A RECALIBRATE USING ACTIVE DPB CZRJOAO RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 18=1 G 8 SEQ 0097 MAIN PROGRAM 58 sCALL: 60 ; 59 21 6§ 016630 010037 016654 64 016636 116060 000166 66 016650 004037 041304 70 016664 71 016666 001775 004737 5 016648 67 016654 68 016656 69 016660 7; 016672 73 74 75 76 ;g 016676 016702 016706 016712 016716 112760 000000 000774 005760 012660 112660 112660 005060 005060 000207 000107 000027 000002 ; MOV ; RE TURN RECALT: MOV MOVB 1%: 28: 000016 JSP 38: 024364 000034 000033 000032 000012 000010 MOVB JSR #0PB,R0 :DPB ADDRESS RO,2$ :LOAD THE DPB ADDRESS PC,RECALT $RPCS1(RO),SPREVO(RO) #RECAL,$COMND(RO) :START THE RECALIBRATE 3¢ PC,READDR :IF EQ NO *DECREMENT THE ADDRESSES O 1% $TATUS (RO) MOV (SP)+,$PREVA+2(RD) MOVB MOVB CLR CLR RTS :DPB ADDRESS ‘DRIVER DIDN'T ACCEPT THE COMMAND SSEE IF FINISHED :FctgtLJEmE TO A RECAL WITH NO uPB ACTIVE 81 82 ; ; gz 85 016720 86 016726 87 016732 88 016734 89 016736 90 016742 13& 016744 : 112737 004037 050654 000774 005737 001775 000207 000107 041304 050656 050672 RE TURN RECALO: MOVB 1$: 28: JSR GENDPB BR ST BEQ RTS :MOVE THE CYLINDER ADDRESS (SP)+,$PREVA+1(R0) ‘MOVE THE TRACK ADDRESS (SP)+.SPREVA(RO) *MOVE THE SECTOR ADDRESS $CYL (RO) :CLEAR THE CURRENT CYLINDER ADDRESS $SEC (RO) :CLEAR THE CURRENT TRK/SEC ADDRESS PC *RETURN gg MOVB JSR :LOAD THE NEW COMMAND RO,RPO? LWORD BR ST BEQ JSR ;SAVE THE PREVIOUS COMMAND #DRIVE,GENDPB PC,RECALOD :DRIVE ADDRESS #RECAL ,GENDPB+SCOMND RO,RPO? ;RELCALIBRATE COMMAND :DRIVER ENTRANCE 1% GENDPB+$1 .TUS 28 PC 109 110 11 ;UTILITY READ HEADER ROUTINE sCALL: ; MOV #DPB,RO :DPB ADDRESS 113 : STRACK ADDRESS 112 114 115 }}9 118 016746 116637 000004 111037 050654 119 016754 120 016762 116637 016637 12; 016774 115737 121 016770 123 017002 124 017010 125 017014 012737 004037 050654 126 017016 000774 157 017020 128 017024 129 017026 130 017032 005737 001775 011666 062706 000006 000002 000173 177776 041304 050672 000006 000006 050665 050664 050666 ; MOV #SECTOR,=(SP) : ; : MOV JSR RE TURN #CYLINDER,=(SP) PC,READDR READHD: MOVB MOVB MOV MOVB 050656 050660 MOV MOVB 1%: 2s: MOV JSR GENDPB B8R ST BEQ MOV ADD #TRACK,=(SP) :SECTOR ADDRESS ;CYLINDER ADDRESS &4 (SP),GENDPB+S$TRK 6(SP).GENDPB+$SEC 2(SP) .GENDPB+S$CYL (RO),GENDPB . ‘DPB ADDRESS FOR COMMAND ‘DRIVER DIDN'T ACCEPT THE COMMAND :SEE IF FINISHED ‘BR IF NOT FINISHED ;TRACK ADDRESS *SECTOR ADDRESS :CYLINDER ADDRESS :DRIVE NUMB #RDHD,GENDPB+$COMND ; COMMAND #-2,GENDPB+SWCNT “WORD CTR = 2 RO,RPO7 :DRIVER ENTRANCE 13 GENDPB+STATUS 2% (SP),6(SP) #6,5P :DPB ADDRESS FOR COMMAND SDRIVER DIDN'T ACCEPT COMMAND :F INISHED? ‘BR IF NOT SADJUST STACK FOR RETUKN *ADJUST RETRUN POINTER CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 18-2 SEQ 0098 MAIN PROGRAM 000207 RTS 000016 2%: 001322 000202 000415 000007 001322 000002 000200 001322 000202 001325 001324 001325 3%: A ¥ 5%: 6%: S5O OSSO 8%: sRETURN PRESENT OPERATION #COUNT ,RETRY MOV JSR RE TURN1 PC,$RE FRY sRETRY COUNT sRETRY UNSUCESSFUL s SUCESSFUL RETRY RETURNZ2 sNOTE: ;RETRY, IF A DIFFERENT ERROP OCCURS DURING THE ROUTINE EXITS TC 'ERPRC =D —D sRE=START ORDER @ ;ORDER FINISHED? :BR IF NOT :BR IF ERROR s INCREMENT RETRY COUNT : INCREMENT RETURN ;GO TO EXIT #BIT7,$TATUS(RO) ;DID ORDER TERMINATE NORMALLY ? 8% :BR:BR 1iF NOT MASK 3% $RPER1(RO) 7% 5% #7 ,MASK ;1S ERROR MASK 0 ? :BR IF NOT ;HAKEFSUS$ :BR IF N THAT THE DRIVE IS CLEAR ;EWN ERROR? :BR IF NO 5% :SET, RETRY MASK,$RPER1T(RO) 7% RETRY#+1 RETRY,RETRY+1 SRETRY : SAME ERROR? :BR IF NOT :lNCREgENT RETRY COUNT sDONE ? PC ERROR REG s CONTINUE RETRY 4 #BIT1,8RPDS(RO) 4] ' NNYN O 022737 PC MMt D — &~ purd o o o o 000200 THE OP—DD DOZTMUNWV -t $: OO0 NONONESO RETRY: 7%: N) NN OOWVESE W NSNS NONNNNNN b et od b adad o wd NSNS NNNNN do d WWNIN = NINNNSNNSY OO0 2adD o NNON NOS ~N oSOy SNNNNNNY O0O0O0O0O0O oAV B S OSMNOSO [=l=ENlelele Blelelelelele BNelelelele B elelelelelele BNelélelelelele] —_— — —b b b =D —_— D D d s D P R Jo Y — i e d d nd D P e — i i cd D il e e e e D e e D e i D e D e D i D e D e e e D e i i D e e i Sevsvsnn, D i D i sCALL: OO —~<DOD® DVDZ2V2UVMee sRETRY i NNNNNNNNOOOOOOOONOO NWVIWNWNWIWIVIWAVNES IS BN IS IS 05 85 8 0 S NN NN NN NN W= OV NV NN = O V00NN NN = OO0 N WV I AWN = OO 00 NN SN 31 017036 SYEWN' STILL SET? :NO, REPORT DIFFERENT ERROR sBR _IF NOT DONE sRETURN sREPORT DIFFERENT ERROR sPRINT LINE 7 sADJUST STACK POINTER FOR DIRECT RETURN sRETURN ;'DIFFERENT ERROR DURING RETRY® sREPORT THE ERROR CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 19 SEQ 0099 MAIN PROGRAM 1 ‘?23{‘"5 TO UPDATE THE PERFORMANCE SUMMARY STATISTICS § : MOV 2 : RETURN 4 : 7 017210 032760 10 o172§6 166037 8 017216 9 017220 001533 016037 000300 000016 000172 017510 000006 11 017234 oo1s§4 006237 017510 16 017242 15 017250 122760 001404 000002 17 017260 001043 }g 017236 16 017252 18 017262 19 017270 20 017274 005560 063760 017510 000044 017510 21 017302 005560 000064 23 017306 016046 000062 2% 017312 016046 000064 24 017316 25 017322 012746 012746 041100 000017 27 017332 28 017336 005766 001412 000004 30 017344 012660 000062 26 0173%6 29 017340 31 017350 000024 004737 000042 000064 062760 000001 000056 005560 063760 005560 017510 000040 017510 000074 000036 48 017450 49 017454 S0 017456 51 017462 005766 001412 012660 012660 ADC MOV 4%: 54 017500 55 017502 56 017506 57 017506 000401 022626 005726 000207 ADC BR cMP ST CMPB BEQ #2,$CODE (RO) 1% #0,$CODE (RO) 43 :BR IF NO DATA TRANSFER SCONVERT TO A WORD COUNT :SEE IF COMMAND WAS A WRITE ‘BRANCH IF YES *PRESENT OPERATION AN AUTO WRITE CHECK ? ‘BR IF NO FACTOR, SWTPAS (RO} ;ADD WORDS WRITTEN PER PASS $SWTPAS+2(R0) :ADD ANY' CARRY FACTOR,SWTCTL+4 (RO) ;ADD WORDS WRITTEN TO REP COUNTER $SWTOTL+6(RO) :ADD ANY CARRY SWTOTL+4(RO) ,=(SP) JGET LOW DIVIDEND SWTOTL+6(R0O) . =(SF) *GET HIGH DIVIDEND PC,$0BDIV :DIVIDE BY 1 X10%6 (SP)+,SWTOTL+6(RD) #1,8WTOTL(RO) $WioTL+2(RO) 3s (SP)+, (SP)+ (SP)+ #2,$CODE (RO) 7% :GET HIGH REMAINDER “GET LOW REMAINDER JUPDATE iHE TOTAL WRDS WRITTEN :ADD ANY CARRY :GET HIGH & LOW REMAINDER OFF STACK SGET QUOTIENT OFF STACK :SEE IF COMMAND WAS A WRITE ‘BRANCH IF YES FACTOR,SRDPAS (RO} ;ADD WORDS READ PER PASS SRTOTL+4(RO) ,=(SP) ;GET LOW DIVIDEND $ROPAS+2(R0) ;ADD ANY' CARRY FACTOR,SRTOTL+4 (RO ;:ADD WORDS READ TO REP COUNTER $RTOTL+6(RO) :ADD ANY CARRY MOV SRTOTL +6(R0) .=(SP) MOV MOV ADD ADC 5%: 6%: 7%: FACTOR ADC ADD ADC ST BEQ 52 017466 062760 000001 000066 53 0174764 005560 000070 7% (SP)+.SWTOTL +4(RO) MOV MOV JSR 000072 $BUF (RO) ,FACTOR ;SUBTRACT THE INITIAL ADDRESS MOV 041100 000017 032114 000074 :CHECK FOR DATA TERMINATION 7% :BR IF NOT DATA TERMINATION $RPBA(RO) ,FACTOR :STORE THE FINAL BUFFER ADDRESS :DID REP COUNTER REACH LIMIT YET ? ‘BR IF NO MOV 000004 #BIT07'BIT06,$TATUS(RO) 4L (SP) 2% 000072 000074 :DPB ADDRESS TST BEQ ADD 000072 PC,STATIS ;GET LOW DIVISOR SGET HIGH DIVISOR ADD 2%: 38: #DPB,RO #041100,-(SP) #7,-(5P) MOV 40 017406 41 017412 &2 017420 012746 012746 004737 ADC ADD JSR 000024 016046 000060 ADD MOV MOV 000002 016046 18$: 032114 012660 063760 CMPB BNE MOV 122760 001443 4S 017436 46 017440 47 017446 CMPB BEQ 000062 37 017370 38 017376 4 017430 SUB BEQ ASR 005560 000401 022626 005726 43 017424 BEQ MOV 017510 sg 017356 33 017362 3, 017364 gz 017366 39 017400 STATIS: BIT 122760 000000 000024 063760 JSR BR CMP ST RTS #041100,-(SP§ M7,-(5P) PC,$0BDIV 4(SP) 5 ‘DID REP COUNTER REACH LIMIT YET ? BR IF NO (SP)+,SRTOTL+6(RD) (SP)+.SRTOTL +4 (RO) #1,3RTOTL(RO) $RTOTL+2(RO) &3 (SP)+,(SP)+ (SP)+ P( SGET WIGH DIVIDEND “;GET LOW DIVISOR SGET WIGH DIVISOR ‘DIVIDE BY 1 X10%6 :GET HIGH REMAINDER ‘GET LOW REMAINDER ;UPDATE THE TOTAL WRDS READ SADD ANY CARRY :GET HIGH & LOW REMAINDER OFF STACK SGET QUOTIENT OFF STACK 2:2; PERF EXER MACRO V04.00 1-JAN=B3 12:06:52 PAGE O 000 SO ViV & -0 0 017510 ~ el 000000 FACTOR: .WORD 0 19-1 J SEQ 0100 sUSED FOR WORDS TRANSFERED CZRJOAD RPO ; PERF EXER MACRO V04.00 1=JAN-83 12:06:52 PAGE 20 SEQ 0101 MAIN PROGRA : sROUTINE TO GET A BUFFER s CALL: ; MOV #DPB,RO 5 : ; JSR RETURN PC,GE TBUF : 'A 6 7 8 9 017512 10 017514 11 017516 12 017520 13 017524 14 017526 15 017532 16 017540 17 017542 18 017544 19 017546 001654 001656 000020 MOV CMP #BUF TBL+2,R1 $WRDL (RO) .2(R1) ADD #4,R1 BEQ 1% 28: COMNONIN) = NNONONO =N NOOOMNNNNN = S NS W COOONONNOOOO N =2 NN SN N = NN NN 000020 000020 000020 OO0 Ca a0 =0 0000 R1,=(SP) ai.-(sp) R3,=(SP) gurraL.az 000010 000020 001654 000004 BLOS DEC BEQ BR MOV SUB BEQ ASL ADD ASR 3$: 48: 5% BR DEC BEC DEC BEQ MOV ADD MOV MOV DEC BNE MOV MOV MOV RTS $ 2% R2 5$ :DPB ADDRESS sCLEAR THE STACK ;BUFFER ADDRESS WILL BE ON THE STACK sSTACK WILL BE ZERO IF NO BUFFER AVAILABLE ;SAVE R1 sSAVE R sSAVE R sNUMBER OF SEPARATE BUFFERS sBR IF NONE AVAILABLE sFIRST ADDRESS OF ALLOCATION TABLE JSEE IF THERE IS A BLOCK LARGE ENOUGH JBRANCH IF IT IS sDECREMENT TABLE COUNT sBR IF THROUGH TABLE s INCREMENT TABLE POINTER sCONTINUE LOOKING sBUFFER ADDRESS TO STACK 1% (R1),10(SP) $WRDL (RO) ,2(R1) :ADJUST BUFFER WRD CNT 3 sBR IF DIFFERENCE IS ZERO $WRDL (RO) $WRDL (RO), (R1) SgRDL(RO) 5 BUF TBL 5 R2 5% R1,R3 #4°R3 (R$)+, (R1)+ (R3)+.(R1)+ R2 X (SP)+,R3 (SP)+.R2 (SP)+.R1 PC sCONVERT # WORDS TO BYTES :MAKE NEW STARTING ADDRESS sRETURN # BYTES TO WORDS sRETURN sDECREMENT ENTRY COUNT sBR IF ALLOCATION TABLE EMPTY sDECREMENT TABLE COUNT sBR IF ITEM WERE LAST ENTRY sMOVE TABLE POINTER sPOINT TO NEXT ENTRY sMOVE ITEMS sDECREMENT TABLE COUNT s CONT INUE if NOT AT END OF TABLE sRESTORE R sRESTORE R? sRESTORE R1 sRETURN sROUTINE TO PUT BUFFER BACK IN TABLE JCALL: #DPB,RO MOV : :DPB ADDRESS PC,RELBUF JSR : RETURN : se e ) 50 017650 51 017652 32 017654 53 017656 54 017660 55 017664 56 017670 57 017672 -(52) MOV MOV MOV 000004 O = WO OOOO O S NN NN — oNOOS S W=D 41 017644 42 43 44 45 46 47 48 49 017646 GETBUF: MOV [e]lelelelelelelele) 20 017552 21 0175564 22 017560 23 017566 24 017570 25 017574 26 017600 27 017604 28 017606 29 017612 30 017614 31 017616 32 017620 33 017622 3% 017626 35 017630 36 017632 37 017634 38 017636 39 017640 40 017642 CLR RELBUF: MOV R1,-(SP) MoV MOV R3,=(SP) R4 ,=(SP) MOV 001656 001654 000120 MoV MOV MOV BEQ MOV Ri.-(SP) RS5,=(SP) #BUFTBL+2,R1 BUFTBL ,R2 2% $HLDWC (RO) ,R3 :SAVE R1 sSAVE R :SAVE R sSAVE Ré sSAVE RS sBEGINNING OF TABLE JENTRY COUNT :BR IF EMPTY TABLE :TRIAL ADDRESS CZRJOAO RPO7? PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 20-1 L 8 SEQ 0102 MAIN PROGRAM 58 017676 59 017700 60 017704 61 017706 6§ 017710 63 017714 64 017716 65 017720 00630 066003 02110 001424 osg701 005302 001372 016011 66 017724 016061 000006 000004 000006 67 017732 68 017736 69 017740 70 017742 005537 005202 000414 016921 72 017752 005237 0016564 000006 28: 000120 73 017756 000443 016011 000006 75 017764 066061 000120 000002 74 017760 76 017772 77 017774 78 020000 79 020004 80 020010 81 020012 82 020014 83 020016 84 oggozo 85 020024 86 020026 87 020030 88 020032 010246 013702 012705 016504 006304 061504 020411 001406 062705 005302 001366 005726 001654 001656 000002 012602 066165 005337 010105 062705 95 020060 96 020062 97 020064 98 020 99 020070 100 020072 101 020074 102 020076 }82 020100 012521 005302 001374 012605 012604 012603 012602 012601 000207 9% 020056 012521 3%: 4$: 5%: 000004 000002 001654 000002 000004 6$: 7%: 8s: }83 INC INC BR MOV BUF TBL R2 43 $BUF (RO), (R1)+ : INCREMENT ENTRY COUNT *INCREMENT R2 FOR USE LATER ‘SEE IF A LOWER ADJACENT BLOCK IS IN THE TABLE :BLOCK ADDRESS TO TABLE INC BUF TBL : INCREMENT ENTRY COUNT R2,=(SP) BUF TBL ,R2 #BUFTBL+2,RS 2(RS),R& R4 (RS) ,R& ;SAVE R2 *ENTRY COUNT :BEGINNING OF TABLE ‘BLOCK SIZE (IN WORDS) :CHANGE TO BYTE COUNT *ADD BLOCK BEGINNING ADDRESS 8% *END MOV B8R MOV ADD MOV MOV MOV MOV ASL ADD BR $HLDWC (RO) ,2(R1) SHLOWC (RO) , (R1)+ :BLOCK WRD CNT :WRD CNT TO TABLE 8% SEXIT $BUF (RO) , (R1) sRELEASED BUFFER IS LOWER ADJACENT $SHLDWC (RO) ,2(R1) : INCREMENTED WRD CNT R4, (R1) £% #4 RS R2 5¢ (SP)+ tR1 STILL POINTS TO INSERTED ENTRY :LOWER ADJACENT TN TABLE : INCREMENT POINT R :DECREMENT ENTR' 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 RTS (R5)+,(R1)+ R2 78 (SP)+,RS (SP)+.R& (SP)+.R3 (SP)+.R2 (SP) +.R1 PC ‘MOVE SIZE FIELD DOWN :DECREMENT ENTRY COUNT ‘BR IF NOT FINISHED *RESTORE RS ‘RESTORE R& *RESTORE R3 ‘RESTORE R2 *RESTORE R1 "RETURN MOV (R§)+, (R1)+ :COMPRESS TABLE ;Eltt THE ASSIGNED BUFFER (IF WRi '~ OR WRITE CHECK COMMAND) 107 : MOV : MOVB 108 : 110 : 109 }}1 11§ 020102 104412 114 0201064 :CHANGE TO BYTE COUNT :ADDRESS OF HIGHER ADJACENT BLOCK ‘UPPER ADJACENT BLOCK ‘BR IF YES * INCREMENT POINTER :DECREMENT ENTRY COUNT ;CONTINUE SEARCHING :PUT THE BUFFER BLOCK INTO THE TABLE CMP BEQ ADD DEC BNE ST 000415 89 020034 90 020036 91 020044 92 020050 93 020052 R3 saur<ag).a3 (R1),R 3 #4,R1 R2 1% $BUF (RO),(R1) MOV 000120 000002 001654 71 017746 0160;1 1%: ASL ADD CMP BEQ ADD DEC BNE MOV 132760 ; 000004 000024 #DPB,RO MOV #BUF ADR, $BUF (RO) JSR PC,FILBUF RE TURN :DFs ADDRESS #PATTERN,SPATTC(RO) FILBUF: BITB SAVREG #4,$CODE(RO) :LOAD BUFFER ADDRESS INTO THE DPB SPATTERN CODE :SAVE THE REGISTERS *SEE IF READ COMMAND JOAQD RPO7 PERF EXER MACRO V0&4.00 1-JAN-B3 12:06:52 PAGE 20-2 SEQ 0103 N PROGRAM 115 020112 116 0%0114 117 020120 118 020124 119 020130 120 020134 121 020140 122 020142 123 020144 126 020146 125 020150 126 020152 127 020154 128 020156 129 130 130 132 133 134 135 136 020160 137 020162 138 020166 139 020172 140 020174 141 020176 142 020200 001020 816001 016002 116004 016405 012703 01%521 005302 003403 005303 001373 4%: 43 MOV MOVB $WRDL (RO} SPATTC(ROS MOV MOV MOV MOV DEC BLE DEC BNE B8R RESREG TS MOV JSR RETURN 150 020246 000207 149 020242 3%: BNE $BUF (RO) :BR_IF READ sBUFFER ADDRES COUNT ;POSITIVE WORD sRELATIVE PATTERN ADDRESS ,R STNDAT (R4) #16. ,R3 (RS)+, (R1) sPATTERN ADDR sPA TTERN _COU NT MOVE THE PATTERN INTO THE BUFFER R2 4$ R3 38 sDECREMENT THE WORD COUNT ;BR _IF DONE_(WORD COUNT = 0) :DECREMENT THE PA T TERN COUNT ‘BR IF MORE PATT ER N sCONTINUE DISTRIBUTING THE PATTERN 2 :RESTgRE THE REGISTERS PC +RETURN sSTART THE COMMAND FOR THE DPB IN RO s CALL: 020212 020220 020222 020230 020234 143 020206 2%: 000762 10441 000207 010046 010037 004037 000000 000000 012600 062760 005560 026060 001412 062760 005560 062760 1446 145 146 147 148 1%: 005560 GODRIV: MOV MOV 1$: JSR 2%: WORD HALT MOV ADD ADC 000052 000034 000012 000001 000046 000100 CMP BEQ 000076 3%: ADD ADC ADD ADC RTS #DPB,RO PC,GODRIV :DPB ADDRESS RO,=(SP) RO,2$ sSAVE RO :CURRENT DPB ADDRESS sCALL THE DRIVE HANDLER ;DRIVE BLOCK ADDRESS GOES HERE ;DRIVER RESECTED REQUEST RO.RPO7 O (SP)+,R0 #1,S0PERC( $OPERC+2(R $PREVA+2(R 3g #1,8SEEKS( $SEEKS+2(R #1,$STOTL $sTOTL+2(R PC sRESTORE : INCREMENT THE OPERATION COUNT .SCVLé:O}F N&”‘” COMMAND REQUIRE A CYLINDER CHANGE ? : INCREMENT SEEK COUNT PER PASS (RO) +ADD ANY CARRY s INCREMENT SEEK COUNT TOTAL +ADD ANY CARRY CZRJOAD RPO7 PERF EXER MACRO Vv04.00 1-JAN-B3 12:06:52 PAGE 21 SEQ 0104 S WA — MAIN PROGRAM NO NI ANIN = O Y00 NN :RREElNE TO SETUP PARAMETERS FOR A SEQUENTIAL READ OR WRITE OF THE DISK : MOV #DPB,R ;DPB ADDRESS ; : JSR RET PC,SEQPAR *CALL ROUTINE MOV #NN ‘PACK(RO) ;GET COMMAND NUMBER WHERE 'uu' _CAN BE ONE OF THE FOLLOW NUMBERS; bd bb ; ; ; ; b bb e 000054 'u' *T* 'R* * "COMMAND= =2 COMMAND= =1 COMMAND= 0 COMMAND= 1 SEQPAR: TST BNE ;IS THIS THE FIRST OPERATION ? :BR IF NO MOV #SSEC,RG *GET INDEX TO SECTOR ADDR STORAGE IN DPB BR 3$ :BR IF NOT AT END OF SEGUENTIAL ADDRESSING NN <OV N W NN W AANN N NI NI N NI NI NINI N = JSR VNS WN2LO OO NO WV 1%: o ~ OO0O0O0O—-— OOWOON O=NH =N MOV $RPDA (RO, $SEC (RO) :CURRENT SECTOR & TRACK ADDRESS oWV ~ $SEC(RO) , $PREVA(RO) SCVL(RO).SPREVA*Z(RO) $RPDC (RO) . $CYL (RO) *SAVE PREVIOUS TRACK/SECTOR ADDRESS *SAVE PREVIOUS CYLINDER ADDRESS :CURRENT CYLINDER ADDRESS MOV #$SEC,RG :GET INDEX TO SECTOR ADDR STORAGE IN DPB B8R 3s :BR IF NOT AT END OF SEQUENTIAL ADDRESSING JSR PC,CKLMTS 16O CHECK DISK ADDRESS LIMITS MOVB MOVB MOV MINSEC(RO),$SEC(RO) MINTRK(RO).$TRK(RO) MINCYL (RO) ;$CYL (RO) BEQ 8s BIT BEQ o ~N 5 OOO0OO0O=OO0O0O000 =O ==t =0 -t OQON fowvn O OWV=NONNN -t et -0 NN N [olele BNTelelelelelelelelol~ OO 160 CHECK DISK ADDRESS LIMITS ;SAVE CURRENT PARAMETERS JSR BR ;RESET SECTOR ADDRESS PRESET TRACK ADDRESS ‘RESET CVLINDER ADDRESS #4,$CODE(RO) #-2,$PACK(RO) ;SET CODE TO READ DAT :WAS WRITE DATA IN PROGESS PC,$EOP STHIS IS THE END OF PASS #5U04, aSWR 9% 28 ‘DO NOT DROP DRIVE AT EOT (SW04=1) ? *BR IF NO *MUST SURE ADDRESS IS NOT °*BSF*® TRACK MOV MOV JSR MOV gfig WRDCNT, as PC, CHKWC RS'SWRDL(RO) 2277 $WRDL (RO) 4$: INCB MOV MOV *SET TO ONE SECTOR SWRDL+1(RO) $WRDL (RO) , SWCNT (RO) ;STORE FOR 2'S COMPLEMENT WORD SURDL(RO)SHLDHC(RO) :HOLD WORD FOR_RELBUF* ROUTINE MOV czsb..ssscc(ao> SSECTOR SIZE FOR READ OR WRITE 000026 5%: #$SEC.R :BR IF YES (START tesrxnc. "T* COMMAND) 3s NEG 000024 PC,CKLMTS és }uxsotue FIRST OPERATION ? SRPCS1(R0O),$SPREVO(RO) MOV MOV MOVB CMPB 000004 ¥gpsac(a0) MOVB MOV 28 (NOT USED IN ROUTINE) SOPERC+2(RO) 1% ggg 000052 N NN NN = DO NN W= OOV WAV S 85 85 85 85 8 8N 5 8 5N W : :GET INDEX TO SECTOR S!ORAGE SWORD COUNT IS MAXIMU $CHECK WORD COUNT roa HAXCVL/HAXTRK :GET WORD COUNT é {l LSSS THAN ONE SECTOR WORD COUNT ? $WCNT (RO) :CHANGE WORD COUNT TO 2'S COMPLEMENT ISTB $PACK(RO) ;'R on °u° COMMAND FOR THIS DRIVE ? MOVB #4,$CODE(RO) :CODE FOR READ DATA BM] 6% ‘BR IF WRITE 8 9 SEQ 0105 MAIN PROGRAM S8 0205 3 115760 000171 61 ogos 2 °§ 020536 63 020540 005737 001366 11%760 001424 110560 000030 59 020530 67 020546 68 020554 69 020560 70 020564 ;1 020572 000415 11 720 004737 012760 000207 000002 000161 021272 177777 7% 020574 105060 000026 74 020600 75 020604 76 020606 005960 005726 000137 000130 006340 000002 6$: 000024 000002 000130 MOVE #RDDAT,$COMND(RO) ST BNE MOVB RDONLY 5 #2,$CODE(RO) BR MOVB JSR 7%: 8$ 9% MOVB 7% RS.SPATTC(RO) :PATTERN CODE PC ‘RETURN #-1,SNEXT(RO) CLRB $PACK(RO) CLR ST JMP SLOCKED IN ''READ ONLY'' ‘BR IF YES CODE FOR WRTDAT . MODE ? #WRTDAT,S$COMND(RD) 0P CODE PC,GE TPAT :GET PATTERN CODE MOV RTS :DRIVE CODE FOR OPERATION ;SET UP FOR EXIT SNEXT(RO) (SP)+ MAIN :SET PARAMETERS SELECTED INDICATOR ;SET 'T* COMMAND FLAG IN DPB TABLE :CLEAR 'PARAMETER SELECTED® INDICATOR SCLEAR STACK LEVEL ;JUMP TO MAIN BACKGROUND LOOP f_flfl CZRJOAO RPO7 PERF EXER MACRO V04.00 1=JAN=B3 12:06:52 PAGE 21=1 CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 22 SEQ 0106 MAIN PROGRAM 1 ,g:rERAYE PARAMETERS FOR THE OPERATION § :: 4 g : MOV JSR #LPB, RO PC,GENPAR :DPB ADDRESS PC,SRAND RDONLY 1% #5W0,aSWR 1% #8. RS ;CYCLE THE RANDOM NUMBER GENERATOR SLOCKED IN ‘'READ ONLY'' MODE ? ‘BR IF YES SSEE IF SWO SET ‘BR IF SET = READ ONL ‘READ/WRITE SELECTION DIVISOR #2,RS SSELECT WRITE DATA COMMAND RETURN 7 020612 9 020616 10 020622 1; ozoega 13 020632 14 o%oesa 004727 005737 001019 032777 001012 012705 037126 001424 000010 GENPAR: JSR ST BNE BIT BNE MOV 18 020652 012705 000002 MOV 15 020640 16 020644 17 020650 53 020656 004737 020537 103003 000407 000001 p 160322 032022 001502 JSR CMP BHIS BR 21 020660 013705 037226 22 020664 23 020666 000305 042705 000004 000122 000174 000222 29 020716 005737 001510 31 020724 005760 000054 32 020730 33 020732 gg 020736 001003 005760 001405 36 020740 012704 40 020760 41 020766 &2 020774 116060 016060 000761 37 020744 38 020750 39 020752 22 020776 004737 000412 116060 000137 MOV 2%: ADD MOVB MOV MOV 177776 24 020672 062705 25 020676 110560 26 020702 016060 %g 020710 016060 30 020722 001427 1$: 000124 000126 THEAD: 000124 1%: 021332 000146 000142 000136 021150 000124 000125 $LONUM, RS RS #°C1,RS TST RANDOM TST $SOPERC+2(R0O) BEQ SGET SELECTION VALUE :DETERMINE IF EAD OR WRITE ‘BR IF READ *SELECT ADDRESS ;SELECT READ OPERATION CODE :SWAP BYTES IN RS :MASK_OUT ALL BUT BIT 0 # RS STABLE OFFSET FOR READ CODE RS,SN(ODE\RO) .COHHAND SELECTION CODE TO CONTROL BLOCK $RPDA (RO) , SNSEC (RO) :SECTOR AND TRACK $RPDC (RO) -SNCYL(RO) :CYLINDER NUMBER RANCYL 1% $OPERC (RO) 2% ENABLE RANDOM ADDRESS SELECT ? SYES lS THIS THE FIRST OPERATION ? ‘BR IF NO YIS THIS THE FIRST OPERATION ? ‘BR IF YES MOV #SNSEC ,RG MOVB MOV BR MINTRK(RO) ,SNTRK(RO) :RESEY TRACK ADDRESS MINCYL (RO) . SNCYL (RO) *RESET CYLINDER ADDRESS 1% JRE=CHECK FOR 'BSF' TRACK 2%: JSR BR MOVB 38: JMP 000126 28 SWAB BIC BNE ST BEQ 000052 PC,GETREM RS RATIO 1%’ :GET INDEX TO SECTOR ADDR STORAGE IN DPB PC,CKLMTS *G0 CHECK DISK ADDRESS LIMITS 3s :BR IF NOT AT END OF SEQUENTIAL ADDRESSING MINSEC(RO),SNSEC(RO) ;RESET SECTOR ADDRESS RANS 12 160 CHECK FOR RANDOM WORD SIZE gi?JOAO RPO7 PERF EXER MACRO Vv04.00 1-JAN-83 12:06:52 PAGE 23 SEQ 0107 CMP MAXCYL(RO) ,RS MINCYL(RO) ,R5 000136 H%NCYL(RO).RS 032022 000136 000126 MINCYL (RO) ,RS 1$: MOV :GET MAXIMUM CYLINDER ADDRESS :"MINCYL® AND °'MAXCYL® :BR IF THEY ARE THE SAME ? ET NUMBER OF ALLOWABLE CYLINDERS NZOr—O RANCYL: MOV L 000134 000136 DX - [eleleletd=l"]=] =P OOOrv— OO VO =O0O VIONNO SO0 OCOWOOOOO OWVINWVWI NUWA WA = = OO OO SN e -i i o D o [elelelolelelwl=] [elelelelololel=] RSN LS N LN NN,V] ;GENERATE A RANDOM CYLINDER ADDRESS BETWEEN VALUES 'MINCYL' & °'MAXCYL' PC,GETREM s INC REMENT DIFFERENCE TO USE AS DIVISOR sGET THE RANDOM AUGMENT RS, SNCYL(RO) :STO RE CYLINDER ADDRESS sNEW CYLINDER ADDRESS IN DPB VIONNO SO0 OO HOOOOO OWVINWVIWINWIWN -=OO0O0—=000 - OOON = (=T F VT e Xo [(o]lelelelelelels] OOV SN [+ .S T ¥ X To J NT0 3 D D bD Dde D NNNNNININND [elelelelelelele] sGENERATE A RANDOM TRACK ADDRESS BETWEEN VALUES 'MINTRK' & °'MAXTRK' 000140 000142 RANTRK: MOV CMP 000142 032022 000142 000125 MAXTRK(RO) ,RS MINTRK(RO ,RS ) 1% :gNYRK(RO).RS PC,GETREM 1$: MovBe MINTRK (RO) ,RS RS, SNTRK (R0) sGET MAXIMUM TRACK ADDRESS s'MINTRK®' AND °'MAXTRK' THE SAME ? sBR _IF THEY ARE sGET NUMBER OF ALLOWABLE TRACKS s INCREMENT DIFFERENCE TO USE AS DIVISOR sGET THE RANDOM AUGMENT sNEW TRACK ADDRESS :STORE TRACK ADDRESS IN DPB e e e OO N2 ad OO NN NOTNVO SO ) e R S B OCOO0O00O000 LS LS NN NN NN ;GENERATE A RANDOM SECTOR ADDRESS BETWEEN VALUES °'MINSEC' & °"MAXSEC' 000144 000146 RANSEC: MOV CMP MAXSEC(RO) ,RS ?£NSEC(RO).R5 000146 :%NSEC(RO).RS 032022 PC,GETREM 110560 1%: MOVB MINSEC (RO) ,RS RS, $NSEC(RO) sGET MAXIMUM SECTOR ADDRESS s "MINSEC' AND °"MAXSEC' THE SAME ? :BR_IF THEY ARE sGET NUMBER OF ALLOWABLE SECTORS s INCREMENT DIFFERENCE TO USE AS DIVISOR sGET THE RANDOM AUGMENT sNEW SECTOR ADDRESS sSTORE SECTOR ADDRESS IN DPB WSS SN osroone e b e D e b o cd — — [elelelelel=] o N sMAKE SURE ADDRESS JUST GENERATED IS NOT 'BAD SECTOR FILE' 012704 MOV JSR 2%: BR JSR JMP #SNSEC,R& PC,CKLMTS 2% PC,SRAND RANCYL sGET INDEX TO SECTOR ADDR STORAGE IN DPB ;GO CHECK DISK ADDRESS LIMITS sBR _IF NOT AT END OF SEQUCNTIAL ADDRESSING sCYCLE THE RANDOM NUMBER GENERATOR ;GO GENERATE NEW ADDRESS SN R RINSRRSRS — o — 0O N ) = ) D ) ) i i — OO0 ONONDRONONONONON ;GENERATE A RANDOM BUFFER LENGTH BETWEEN 6 & THE VALUE IN "WRDCNT' NN WAV AV IV IV IV IV IV Y 2 o 20 ol NN NN = O OO NS S fiwwngWWWWWNNNNNNN'\)NNJ—o—._o_n e =d bO O 00 N - OV~ NN = O OO0 NNV W) = OO 00 N WV AN N IS Wiy — N PROGRAM 001466 001500 RANSIZ: MOV TST RANDWC 2% RS 032022 000006 037126 WRDCNT RS PC,GETREM R5.,#6 1%: JSR 2%: MOV PC,SRAND RANSIZ #SNSEC, RS PC,CHKWC sGET MAX WORD COUNT sSELECT A _RANDOM WORD COUNT ? :BR _IF NOT s INCREMENT THE MAXIMUM WRD CNT :DIVIDE BY MAX VALUE :WORD COUNT LESS THAN 6 ? :BR _IF NO sCYCLE THE RANDOM NUMBER GENERATOR INDEX TO SECTOR STORAGE If WORD COUNT IS TOO LARGE TO FIT EMAINDER OF TRACK. IF SO, THEN ADJUST CZRJOAD RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 23=1 E 9 SEQ 0108 MAIN PROGRAM 58 59 021214 60 021222 61 021226 6% 021230 . 051 32 gg 021236 122760 001005 062705 001005 012705 010560 000002 000122 000377 000400 000020 (: gg 68 021242 69 021250 70 021252 71 021256 72 021262 ;2 021270 . 3%: (MPB BNE BIC BNE MOV MOV 122760 oo1og4 004737 110560 012760 000207 000002 000122 021275 00012 177777 RANPAT: CMPB BNE 02 sucoo£(a0) NXIT MOVB RANXIT: MOV RS,SNPATC(RO) #-1,SNEXT(RO) JSR 000130 RTS SWORN COUNT uaxre OPERATION ? ‘BR IF NO PC GETPAT :GET PATTERN CODE PC *RETURN :MOVE PATTERN CODE TO CONTROL BLOCK :SET PARAMETERS SELECTED INDICATOR ;ROUTINE TO SELECT A PATTERN 77 021272 012705 000020 GETPAT: MOV 80 021304 81 021310 82 021312 83 021316 013705 000406 004737 004737 001476 MOV BR JSR JSR 84 021322 85 021324 86 021326 87 021330 RS, SWRDL (RO) :WORD COUNT TO FIT ON TRACK. URITE OPERA ION ‘BR IF wnxrrxnc PARTIAL SECTOR ? :BR IF NO, ELSE, ‘WRITE AT "LEAST 'ONE SECTOR :GET A RANDOM PATTERN NUMBER ;g 78 021276 79 021302 #2,$NCODE (RO) 43 #377,R5 4% #256. ,RS 005737 001403 005705 001762 006305 000207 001476 037126 032022 ST BEQ 1%: 2%: ST BEQ ASL RTS #16. ,RS LSEILFCT PATTERN PATTERN,RS 28 PC, SRAND PC.GE TREM use INDEXED PATTERN NO CVCLE tue RANDOM NUMBER GENERATOR :GET CODE PATTERN 1% RS GETPAT RS PC :ENABLE RANDOM PATTERN SELECTION ? ‘YES ;WAS PATTERN ZERO SELECTED ? :BR IF YES ‘MAKE CODE INTO TABLE INDEX : :THIS ROUTINE IS USED TO CHECK ADDRESS LIMITS BEFORE THE NEXT COMMAND 115 PERFORMED, ALSO, IT WILL CHECK FOR MAXIMUM ADDRESS LIMITS TO LOOK :FOR AN END TO THE SEQUENTIAL ADDRESSING AND WILL MAKE SURE THE CURRENT :egftess IS NOT THE *BAD SECTOR FILE' 4 5 6 : 8 9 ; ; i : 7 10 }1 15 021322 16 021334 17 021342 18 021344 19 021352 #0PB,RO :DPB ADDRESS JSR BR eeeee- PC,CKLMTS 274 :CALL ADDRESS LIMITS ROUTINE *RETURN HERE IF NOT END OF SEQUENTIAL ADDRESSING ‘ELSE, RETURN MERE TO RESET DISK ADDRESS MOV #POINTER,RG *POINTER TO SECTOR STORAGE ($SEC OR SNSEC) IN DPB ‘R4 = POINTER TO SECTOR STORAGE BEFORE 060004 20 021360 21 021362 22 021370 23 021374 24 021376 25 26 27 28 29 021402 30 021406 31 021410 32 021414 33 021420 34 021426 35 021430 36 021434 37 021442 38 021446 39 021454 000002 000136 000136 000001 00000 00014 000142 000146 000001 CKLMTS: ADD ggg 1$: 28: 000146 RO,R& MINCYL (RO),2(R&) BGE 2% CMPB :POINT TO SECTOR STORAGE POINT IN DPB %ékk).HlNCVL(RO) MOV 1(R&),MINTRK(RO) 4 1S CYLINDER ADDRESS BELOW MIN. ? ;RESET CYLINDER TO MIN. :1S TRACK ADDRESS BELOW MIN. ? :BR IF NO MOVB MINTRK(RO),1(R&)" MOVB MINSEC(RO),(R&) ggge CALLING THE ROUTINE ‘RESET TRACK TO MIN. §§4).nxnsettao> .éb §ecr6a ADDRESS BELOW MIN. ? :RESET SECTOR TO MIN. ;LOOK FOR MAXIMUM LIMITS, FOR END OF SEQUENTIAL ADDRESSING AND 000144 000146 000001 000001 000146 000002 40 021456 41 021462 &2 43 021464 ;ALSO CHECK THAT ADDRESS IS NOT °'BAD SECTOR FILE' 3s: gga),MAXSEC (RO) ;és §Ecrga ADDRESS AT MAXIMUM ? MOVB MINSEC(RO),(R4) :RESET SECTOR ADDRESS BLE 6% :BR IF NO INC gr: 2(R4) lucasneur TO NEXT CYLINDER ADDRESS ;;aa»JMAXCYL(RO)’il;1S CYLINDER ADDRESS OVER MAXIMUM ? 000140 48: 5%: 000134 63: 7%: 000002 000207 INCB CMPB MOVB MOVB 000001 000156 000001 gp:a |8 000002 46 021470 45 021472 46 021476 &7 021500 4«8 021506 49 021510 MoV ‘RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 18 14 " 000154 8$: 1(R&) :INCREMENT TO NEXT TRACK ADDRESS 1(R4) ,MAXTRK(RO)® ;1S TRACK ADDRESS OVER MAXIMUM ? MINSEC(RO), (aa) SRESET SECTOR ADDRESS MINTRK(RO).1(R&)’ RESET TRACK ADDRESS sgo g%.(sp> *ADJUST RETURN TO RESET DISK ADDRESS PARAMETERS MOV FET1(RO),=(SP) CMP 2(R4),(SP)+ ;CHECK NOT TO READ OR WRITE BAD ssctoa TRACK :GET 1ST FE CYLINDER (LAST CYL*1) :LOOK AT LAST USER CYLINDER DEC (SP) *ARE WE ON LAST USER CYLINDER ? BNE CMPB 8$ :BR IF NO 1(R&),TRKLMT(RO) 1S THIS THE BAD SECTOR TRACK ? RTS PC BEQ 4% :BR IF VES *RETURN TM SEQ 0109 N CZRJUAD RPO7 PERF EXER MACRO Vv04.00 1-JAN-B3 12:06:52 PAGE 24 MAIN PROGRAM CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN=83 MAIN PROGRAM JAN=B3 12:06:52 12:06:52 PA PAGE 25 1 ;THIS ROUTINE SEQ 0110 IS USED TO CALCULATE AND CHECK THE WORD COUNT FOR THE 2 3 ;DRIVE THAT IS TO DO A DATA TRANSFER ON THE MAXIMUM TRACK OF THE MAXIMUM sCYLINDER, IF THE CALCULATED MAXIMUM WORD COUNT, EXCEEDS THE DESIRED WORD 2 :E:ELHORD COUNT WILL NOT CAUSE A TRACK OVERFLOW DURING THE TRANSFER. 4 7 ¥ 9 060004 105760 001023 20 021530 21 021532 22 021536 23 021540 24 021546 25 26 001017 105760 001010 126060 101004 28 021550 29 021556 30 021560 31 021566 32 026064 001022 126064 001016 , 43 021620 126060 111404 016046 160416 005004 062704 005316 002374 000144 000140 000154 000134 000002 000140 000001 000144 000400 RETURN #DPB,R0 #POINTER,RG PC,CHKWC :DPB IS CHANGED, SO THAT ADDRESS sPOINTER TO SECTOR STORAGE ($SEC OR SNSEC) sCALL CHECK WORD COUNT ROUTINE IN DPB sRETURN WITH RS CONTAINING THE DESIRED WORD COUNT 1%: 2%: 3%: 000156 48 021632 026426 000002 001010 016046 005316 005046 116416 022626 001744 000207 ‘$: 000001 5%: IN DPB 2% :BR IF NO MINTRK (RO) ;ALLOW SPIRAL RD/WRT ? 1 :BR IF NO MAXTRK , TRKLMT(RO) (RO) :;ALLOW SPIRAL RD/WRT ? 1% :BR IF NO ;WHEN SPIRAL RD/WRT IS ALLOWED, THEN CHECK ;70 MAKE SURE YOU DO NOT SPIRAL OVER MAXIMUM CMP BNE CMPB BNE MAXCYL (RO),2(R&) ;ON MAXIMUM CYLINDER ? 43 :BR IF NO MAXTRK (RO) ,1(R4) ;ON MAXIMUM TRACK ? 43 :BR IF NO sADJUST WORD COUNT TO FIT ON REMAINDER OF MOVB MOV SUB CLR ADD DEC BGE ;TRACK ON MAXIMUM CYLINDER TRACK (R4) R4 ;GET STARTING SECTOR ($SEC OR SNSEC) ADDRESS MAXSEC(RO) ,=(SP) :GET MAXIMUM SECTOR R&4, (SP) ;GET NUMBER SECTORS TO BE XFERD A ;CLEAR Ré #256. R4 ;ADD 1 SECTOR OF WORDS TO Ré& (SP) sDONE ALL SECTORS YET ? 3% :BR IF NO ST CMP BLE (SP)+ RS,R4 5% B 5% R4 RS ;RESTORE STACK :T00 MANY WORDS FOR TRACK ? :BR IF NO :YES, CHANGE WORD COUNT MOV FE1(RO),=(SP) C(MP 2(R&),(SP)+ MOV DEC CLR MOVB CMP BEQ RTS TRKLMT(RO) ,=(S") :GET LAST TRACK (SP) :LOOK AT NEXT TO LAST TRACK -(SP) :PUSH STACK 1(R4), (SP) :GET CURRENT TRACK (SP)+,(SP)+ ;1S 1T TRACK BEFORE BAD SECTOR TRACK ? 2% :BR IF YES (DON'T ALLOW SPIRAL TO BAD SEC TRK) PC DEC BNE 000154 RO,R& ;POINT TO SECTOR STORAGE POINT MINSEC (RO) ;ALLOW SPIRAL RD/WRT ? 2% :BR IF NO MAXSEC(RO) ,SECLMT(RO) :;ALLOW SPIRAL RD/WRT ? BNE TSTB BNE CMPB BNE MOV 016046 005316 ADD 1ST8 BNE (MPB 005726 020504 003420 010405 46 0216%& 50 021640 51 021644 sg 021646 53 021650 54 021654 55 021656 56 021660 000152 000142 000416 49 021636 CHKWC: 000146 2g 021622 47 021630 MOV JSR THEN THE DESIRED WORD COUNT ;RS = DESIRED WORD COUNT BEFORE CALLING THE ROUTINE 16 021512 17 021514 18 021520 40 021612 41 021614 42 021616 MOV RS), ;RO = DPE ADDRESS BEFORE CALLING THE ROUTINE :R& = POINTER TO SECTOR STORAGE BEFORE CALLING THE ROUTINE }2 33 021570 34 021572 35 021576 36 021600 37 021602 38 021606 39 021610 : : 1§ 1 27 (CONTENTS OF : : }? 19 021s§2 sCOUNT (SP) 5% ;GET 1ST FE CYLINDER (LAST CYL+1) ;LOOK AT LAST USER CYLINDER $ART r 2, LAST USER CYLINDER ? :BR IfF NO CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 26 SEQ 011 MAIN PROGRAM 1 ’?23{’"‘ TO GET THE PREVIOUSLY SELECTED PARAMETER VALUES 4 i :: MOV JSR ? 3 RETURN S ; 8 021662 9 021664 10 021670 11 021672 1; 051700 13 021706 14 021714 010546 105760 001127 116060 14%760 132760 001007 LODPAR: MOV TSTB 000026 000166 177701 000006 15 021716 016060 000012 18 02173¢ 004737 024364 20 021744 112660 000033 000027 oooogr 000122 000034 55 021750 012660 112660 000032 23 021754 24 021760 25 021762 26 021770 27 021776 28 022000 29 022006 30 022010 005337 002007 013737 032777 001413 122760 001060 112760 gg 022024 000451 34 022026 35 022034 36 022040 37 022046 38 022054 39 022056 31 022016 112760 MOVB (SP)+.$PREVA+1(R0) 3$: 000024 112760 000171 000002 MOVB 116060 000153 000030 016060 000126 000012 47 0221§4 012760 132760 001403 000124 000400 000001 000010 MOVB 5$: 000022 000002 000022 sg 022156 53 022164 54 022170 gg 022172 016060 005460 012605 000207 000020 000004 000120 §7 022174 000000 (SP)+.$PREVA(ROD) $SECTOR ADDRESS :TRACK ADDRESS #WRTDAT,SCOMND(RD) :PU. WRITE DATA COMMAND BACK FOR LOOP $NCODE (RO),$CODE (RO) ;:LOGICAL CODE FOR OPERATION SNCODE(RO).RS :;LOAD RS FOR USE AS TABLE INDEX COMTBL(RS).$COMND(RO) ;COMMAND CODE #WCKD,SCOMND (RO) :IS NEW COMMAND A WRITE CHECK DATA ? 5$ :BR IF NO #60,$PREVO(R0O) :WAS PREVIOUS COMMAND A WRITE DATA ? 6 ‘BR #4,$CODE(RO) :CODE NUMBER CHANGED TO READ DATA #RDDAT,$COMND (RO} IF Y :CHANGE WRITE CHECK TO READ DATA COMMAND MOVB SNPATC(RO),SPATTC(RO) ;PATTERN CODE MOV SNCYL (RO) ,$CYL (RO) :CYLINDER ADDRESS MOV MOV 000024 062760 51 022150 016060 BEQ 000024 ;CYLINDER ADDRESS £% 000027 000004 GET THE DECREMENTED SECTOR AND TRACK ADDRESSES (SP)+,SPREVA+2(RD) BR 000060 000002 000002 *SAVE STARTING SECTOR AND TRA(K ITCNT+2 :REPEAT THIS COMMAND AGAIN ? 3 ‘BR IF YES ITCNT,ITCNT+2 :RESTORE ITERATION COUNT #5406, aSWR :LOOP ON PREVIOUS VALUES (SW6=1) ? 13 :BR IF NO #WCKD,S$COMND (RO) ;1S COMMAND A WRITE CHECK DATA ? 6% :BR IF NO #2,$CODE(RO) CODE FOR WRTDAT MOVB &$: :;SAVE STARTING CYLINDER gummfinwum) DEC BGE MOV BIT BEQ CMPB BNE MOVB MOVB MOVB MOVB CMPB BNE CMPB 016060 S0 022142 PC,READDR 000024 ¢S 022110 49 022140 000002 000002 JSR MOV 000122 000122 002076 000151 112760 48 022132 000151 ‘BR IF EITHER $CYL(RO),$PREVA+2(RO) 116060 116005 116560 122760 001012 122760 2§ 022074 46 022116 022176 157156 ;SEE IF NEXT OPERATION IS READ OR WRITE MOV 000002 001431 46 022102 022174 000100 #6,3NCODE(RO) 1% 000161 40 022064 41 022066 28: :SAVE RS SVT* COMMAND FOR THIS DRIVE ? :LOAD THE PARAMETERS JUST GENERATED BNE MOVB 022176 RS,=(SP) $PACK(RO) PC,LODPAR 6% :BR IF NO SRPCS1(RO),$PREVO(RO) ;SAVE CURRENT PARAMETERS #*(76,$PREVO(RO) :STRIP GO,AND IE BITS gv 1%: 000034 :DPB ADDRESS *GENERATE THE PARAMETERS BNE MOVB BICB BITB }9&3% %fi% 000010 000032 19 021740 JSR #DP8,RO PC,GENPAR BITB $NSEC (RO) , $SEC(RO) #256. ,$SSEC(RO) ; INITIAL VALUE OF SECTOR SIZE #1,$CODE(RO) :HEADER OPERATION ? #2,$5SEC(RO) “ADD HEADER SIZE BEQ 6% $WRDL (RO) , SWCNT (RO) ADD 000020 000004 6%: MOV 000000 ITCNT: .WORD MOV NEG MOV RTS STRACK AND SECTOR ADDRESSES :BR IF NOT :GET WORD COUNT AND $WRDL (RO) . SHLDWC (RO) *HOLD WORD FOR "RELBUF* ROUTINE $WCNT(RO) :MAKE IT°2'S COMPLEMENT (SP)+,RS *RESTORE RS PC *RETURN 0,0 :*ITCNT® CONTAINS THE NUMBER OF TIMES 10 = CZRJOAD RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 26~1 SEQ 0112 MAIN PROGRAM 58 ;REPEAT THE COMMAND 28 s'ITCNT#2' IS THE COUNTER g} :?REEM TO COMPRESS A LIST 63 ; 64 22 67 022200 68 022204 69 022206 70 022210 71 022212 ; : 016111 001402 005721 000773 000207 000002 " MoV JSR RETURN CMPRES: MOV BEQ ST 1$: BR RTS #ADDRS,R1 :COMPRESS LIST STARTING AT THIS ADDRESS 2(R1), (R1) 1% (R1)+ :COMPRESS THE TABLE IN R1 ‘BR WHEN ZERO FOUND *INCREMENT R1 PC,CMPRES CMPRE S PC *CONTINUE COMPRESSING TABLE *RE TURN CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 27 SEQ 0113 ERROR MESSAGE GENERATION ROUTINES 1 .SBTTL i sPRINT LINE 1 OF ERROR MESSAGE: g :"HH:MM:SS* 6 022214 7 022222 “ ozgzga 9 02 % 0 10 022236 11 022240 1; 02%%46 13 ERROR MESSAGE GENERATION ROUTINES 022250 146 022254 }2 022260 032777 002000 156732 LINE1: BIT 104401 001176 020000 156716 1%: BIT 001402 032777 001010 104401 104401 004737 104401 000207 BEQ TYPE 001203 001203 BNE TYPE TYPE 056531 TYPE 026146 JSR 28: 17 RTS :PRINT LINE 2 OF .SBE&L sRING THE BELL 2% ,SCRLF SCRLF :BR IF gg s'RPBA = XXXXXX 42 022354 43 022356 &6 022360 45 022364 46 022366 47 022372 48 022374 PREVIOUS ORDER = Xxxx* RPCS1 RPCS2 RPDS1 RPER1 RPER2 RPER3 :"RPEC2 RPW(C RPBA RPDA RPAS RPLA RPDB RPCC STATUS' s'RPDT RPSN RPOF RPD(C : "RPBAE RPCS3*' (RH70 ONLY) :*BUS ADDRESS OR WORD COUNT NOT ,CONSISTENT® RPWC = XXXXXX ;'BUFFER ADR = XXXXXX 010346 010446 010546 104414 005037 005004 012737 1160064 042704 004737 005737 001440 012737 116004 042704 004737 000426 005005 126504 001405 105765 100402 005205 LINE2: 001203 022422 054536 000166 177701 022356 022422 054556 0000¢7 022422 006305 006305 006305 012737 060537 177701 022356 BIC JSR 1$: 2%: 002104 002104 3%: 002124 022426 ov MOV MOV DISPLY CLR CLR MOV MOVB BIC JSR ST BEQ MOV MOVB 022426 49 022376 000770 50 022400 §1 022402 52 0224064 §3 022606 54 022614 sTYPE 1 BLANK sRETURN & TYPE DESCRIPTION ERROR MESSAGE S'DRIVE 40 022344 61 ozziso sTYPE ELAPSED TIME ,BLNKS1 :'* ERROR AT BAD TRACK/SECTOR' 21 22 23 24 YES sCR=LF s CR=LF PC,STIME 20 36 ozzs;« 37 022330 38 022332 39 022340 ;INHIBIT TYPEOUT (SW13=1) ? #SW13,aSuWR s"PRESENT ORDER = XXXX 27 28 022262 022262 022264 022266 29 022270 30 022274 31 022300 32 022302 33 022310 3, 022314 75 022320 :BR IF NOT 1% 18 19 ;SWITCH 10 SET ? #SW10,aSWR 022426 B8R WRD CNT = XXXX R3,=(SP) R4 ,=-(SP) RS, =(SP) ,$CRLF is R& #LIN2C,4$ $RPCS1(RO),R& #4076 R4 PC,1$ 5% LINE2A #LINZP,4S $PREVO(RO) ,R4 #*C76 R4 PC. 18 L INE2A CLR CMPB BEQ 1STB BM] INC RS gPtBL(RS).RA $ OPTBL(RS) 3s RS ASL ASL ASL MOV ADD RS RS RS #MNTBL,SS RS,5% B8R 2% ~ RPE(C1' RPMR1' NMBR WRDS XFRD = Xxx* ;:PUSH R3 ON STACK ;:PUSH R4 ON STACK :é:us? RS ON STACK sCR=L JCLEAR MESSAGE ADDRESS STORAGE :WORKING REGISTER sADDRESS OF °‘PRESENT ORDER = ' MSG sGET THE OPCODE sSAVE ONLY SIGNIFICANT BITS sTYPE THE FIRST MNEMONIC sTYPE THE PREVIJUS MNEMONIC sSEE IF MNEMONIC ENTRY FOUND :BR IF NOT sADDRESS CFf °‘PREVIOUS ORDER = ' MSG sPREVIOUS OPERATION CODE sSAVE ON ~ SIGNIFICANT BITS s CONTINUE sCLEAR THE TABLE INDEX :LO0K FOR THE OPCODE sBR WHEN OPCODE COUNT = OPCODE :Lgox foz END OF TABLE sBR IF END s INCREMENT THE POINTER sCONTINUE = NOT END OF TABLE sSHIFT INDEX sSHIFT THE INDEX sSHIFT THE INDEX sADDRESS OF ASCII TEXT TABLE sADD THE INDEX CIRJOAQ RPO7 PERF EXER MACRO V04,00 1-JAN-83 12:06:52 PAGE 27-1 ERROR MESSAGE GENERATION ROUTINES 55 0224 g 56 022422 57 0224264 58 022426 28 022430 104414 000000 104414 000000 000207 61 022432 eg 022436 6 ogzaao 64 022446 65 022450 b ozsasa 005737 001404 104414 104414 104414 104414 001336 oo1§03 054577 001203 054156 LINE2A: TST BEQ DISPLY DISPLY LINE2B: DISPLY DISPLY 68 022464 69 022470 004737 104414 024306 056530 JSR DISPLY 67 022460 013746 70 022476 ;1 022500 012705 004737 74 022512 75 022514 76 022520 4$: 5%: 001320 MOV 79 022530 9 SEQ 0114 O PC sTYPE IT *ADDRESS OF 'PRESENT' OR 'PREVIOUS' MESSAGE STYPE THE OPERATION MNEMONIC :ADDRESS OF MESSAGE SRETURN TO MAIN ROUTINE BADSEC LINEZB .sca5r .LINZS .SCRLF .DH14 ;PRINT THE BAD SECTOR LiINE ? ‘BR IF NOT tCR=LF *ERROR ADDRESS DEFINED AS BAD AREA ‘CR=LF :STANDARD RPO7 REGISTER HEADER PC,LINOCT ,BLNKS STYPE IT :TYPE 2 BLANK O DRVNO, = (SP) *PUT THE DRIVE NUMBER ON THE STACK 054450 022662 MOV JSR #0714 ,RS PC,3% *REGISTER INDEXES :PRINT THE REGISTERS 001031 106414 012705 054225 054470 BNE DISPLY MOV 1% ,DH15 #DT15,RS :BR IF NOT *STANDARD RP07 REGISTER HEADER *SECOND DATA LINE 75 022504 032777 000040 156442 ;g 022524 DISPLY MORD DISPLY MORD RTS K 004737 BIT 022662 80 022534 g; 022540 012705 004737 104414 054324 83 022544 013746 001234 85 022554 86 022560 87 022562 88 022566 89 022572 90 022576 91 022604 92 022606 93 022612 9% 022616 95 022620 96 ozzeg« 97 022630 98 ozgogg 99 022636 100 022642 }85 855223 022726 001006 104414 012705 004737 032760 001422 016046 066016 006316 066016 022660 001410 106414 104414 004737 004737 030000 022652 JSR PC.3$ :PRINT THE OPTIONAL REGISTERS ? SPRINT THEM MOV JSR #0T16,RS PC,38 ,DH16 :STANDARD RPO7 REGISTER HEADER MOV $CPUOP, = (SP) ;CHECK THE CPU (RH) TYPE CMP BNE DISPLY MOV JSR BIT BEQ MOV ADD ASL ADD CMP BEQ DISPLY DISPLY JSR JSR #30000,(SP)+ :SEE IF RW70 1% :BR IF NO ,DH17 *STANDARD RP07 REGISTER HEADER #DT17,RS SOPTIONAL FOURTH DATA LINE PC,38 *PRINT THE REGISTERS #B8176,8TATUS(RO) " ;DATA ERROR ? 2% :BR IF NOT $WRDL (RO) ,=(SP) :TRANSFER SIZE $SRPWC(RO).(SP) :ADD REMAINING WORD COUNT (SP) $CONVERT TO AN BYTE INCREMENT $BUF (RO),(SP) :BUFFER STARTING ADDRESS (SP)+,$RPBA(RO) :CORRECT BUFFER ADDRESS ? 2% ‘BR IF YES ,EM46 :'BUS ADDRESS AND WORD COUNT ARE NOT CONSISTENT® .SCRLF SCR=LF PC,LINE3D SPRINT LINE 3D OF ERROR MESSAGE PC,LINEL *PRINT LINE & OF ERROR MESSAGE 012605 MOV (SP)+,RS ;:POP STACK INTO RS 022656 012603 MOV (SP)+.R3 $:POP STACK INTO R3 105 022662 012546 84 022550 042716 DISPLY #5405, aSWR 054512 022662 003777 054404 054530 022662 000100 BIC 000016 1$: 000020 000170 000006 000172 053226 001203 022754 023366 . 022654 012604 MOV ;82 022660 000207 106 022664 107 022666 108 022672 060016 017646 004737 RTS 3$: 000000 024306 MOV ADD MOV JSR #%c174000,(SP) (SP) ¢+ R4 PC STHIRD DATA LINE :PRINT THE REGISTERS :LEAVE THE CPU BITS $:POP STACK INTO Ré *RETURN TO ERROR PROCESSING ROUTINE (RS)+,=(SP) :PUT THE REGISTER INDEX ON THE STACK PC,LINOCT STYPE RO, (SP) a($P),=(SP) SADD DRIVE'S TABLE ADDRESS :VALUE IT CZRJOAQ RPO7 PERF EXER MACRO V04.00 1=JAN-83 12:06:52 PAGE 27-2 ERROR MESSAGE GENERATION ROUTINES 109 022676 005726 111 11; 113 }}g 005715 001365 104414 000207 53 110 022700 104414 056530 0227064 022706 022710 022714 DISPLY 001203 4%: 116 ;CORRECT THE STACK POINTER .aguxsz STYPE S BLANKS {(RS) 3$ ,SCRLF PC :AT END OF LINE ? ‘BR IF NOT JCR=LF *RETURN sPRINT LINE 3 OF ERROR MESSAGE }}g s"ERROR AT CCC TT SS 119 022716 }59 022722 104414 000517 054633 LINE3: 122 }gz DISPLY BR PREVIOUS ADR = CCC TT SsS° ,LINM3 LIN3.1 sLINE 3 ENTRANCE SFINISH PRINTOUT sPRINT LINE 3A OF ERROR MESSAGE ;"START CYL=CCC END CYL= CCC' 125 }59 1064414 000514 054651 LINE3A: DISPLY BR 128 }gg ,LINN3 LIN3.1 sLINE 3A ENTRANCE *FINISH ERROR LINE sPRINT LINE 3B OF ERROR MESSAGE ;"START CYL= CCC END CYL= CCC ACTUAL CyL= ccC® 131 022732 132 022736 }gz 022742 004737 104414 000207 023270 001203 LINE3B: JSR DISPLY RTS 135 }%9 PC,LIN3.3 ,SCRLF ;LINE 3B ENTRANCE PC sPRINT LINE 3C OF ERROR MESSAGE s'START CYL= CCC END CYL= CCC ACTUAL CYL= CCC 138 022744 }23 022750 004737 000137 023270 LINE3C: JSR 023322 JMP 14641 pc.gxus.s LINS.4 TRK= TT® ;LINE 3C ENTRANCE ‘FINISH MESSAGE sPRINT LINE 3D OF ERROR MESSAGE }2% s'RPBA = XXXXXX 144 022754 145 022762 146 022764 147 022770 148 022774 149 023000 150 023004 151 023010 152 053014 }gz 023020 032777 001416 104414 000040 055010 016046 000172 104414 016046 004737 104414 055017 000170 024306 001203 004737 000207 156172 LINE3D: BIT BEQ DISPLY 024306 155 }gg #5W05,aSWR 1% ,LINB3 ;SWITCH § SET 2 BR IF IT IS PC,LINOCTY sCONVERT TO OCTAL AND TYPE S'RPBA = 159 023026 160 023032 023036 023042 023046 023050 165 023054 104414 016046 004737 ‘RPBA(RO).'(SP) DISPLY MOV JSR DISPLY ,LiNw3 SYRPWC = ‘RPHC(RO).-(SP) sWORD COUNT REGISTER CONTENTS PC,LINOCT sCONVERT TO OCTAL AND TYPE IT ,SCRLF RTS 104414 104414 005046 116016 004737 054712 LINE3E: DISPLY 056530 055030 DISPLY DISPLY CLR MOVB 000012 024340 000011 024340 ° MOV JSR 1%: RPWC = XXXXXX°' JBUFFER ADDR REG CONTENTS PC ;PRINT LINE 3E OF ERROR MESSAGE J'START CYL = CCC START TRK =TT 158 023022 161 162 162 164 TsT BNE DISPLY RTS (SP)+ SEQ 0115 MOV JSR JSR LINS3 START SEC = SS° s"START CYL = °* $CYL(RO),=(SP) PC,LINDEC :MOVE CYL TO STACK :TYPE IT IN DECIMAL PC,L INDEC STYPE IT IN DECIMAL .8LNKS§ ,LINST =(SP) STRK(R0),(SP) STYPE 2 BLANKS S'START TRK = ° :CLEAR STACK :TRACK TO STACK 1IT 0 o moe o~ JOAD RPO7 PERF EXER MACRO V04,00 1=JAN=83 12:06:52 PAGE 27-3 SEQ 0116 OR MESSAGE GENERATION ROUTINES 166 023060 104414 168 023070 169 023072 005046 116016 };g 023106 000207 056530 DISPLY ooog1o 167 o%§oea 104414 055044 170 ozgora 171 023102 004737 104414 024340 001203 174 };Z 177 oz§11o 178 0231:6 179 023120 032777 001420 104414 000040 156036 PC,LINOCT ,BLNKS?2 .LINCA3 STYPE IT *TYPE 2 BLANKS 2V RPDC = ° 004737 104414 024306 001203 JSR DISPLY PC,LINOCT ,SCRLF STYPE 000207 MOV 000222 004737 004737 104414 004737 104414 004737 104414 024364 024340 054646 024340 054667 024340 054672 104414 005046 054646 004737 116016 203 023240 204 023244 205 023250 206 023252 004737 104414 005046 116016 208 023262 598 023266 104414 000207 004737 024340 000033 024340 054667 000032 024340 001203 5}1 21§ 023270 104414 054712 214 023274 215 023300 216 023306 217 023310 016046 004737 104414 016046 253 023320 000207 004737 000034 024340 054726 000222 024340 ‘RPDA(RO).'(SP) sPUT SECTOR/TRACK ADDRESS ON THE STACK MOV 18: ‘RPDC(RO).°(SP) sPUT DESIRED CYLINDER ADDRESS ON THE STACK RTS ;°CCC TT SS 200 023226 201 023232 221 222 PC JSR DISPLY DISPLY 000034 513 023314 RTS 024306 056530 054771 000174 016046 207 023256 :TYPE IT IN DECIMAL PC,LINDEC ,SCRLF 004737 104414 104414 198 023216 202 023234 $CLEAR STACK :SECTOR ADDR TO STACK $'START SEC = ° 055001 }gg 199 023222 JSR DISPLY =(SP) $SEC(RO),(SP) ;SWITCH § SET 2 ‘BR IF NOT S'RPDA = ' 016046 191 023162 192 023166 193 023172 194 023176 195 023202 196 023206 197 023212 CLR MOVB #5WS,aSWR 1% ,LINDA3 184 023144 }gg 023160 :TYPE 2 BLANKS LINE3F: BIT BEQ DISPLY 016046 185 023150 186 023154 ,BLNKS ;PRINT LINE 3F OF ERROR MESSAGE s"RPDA = XXXXXX RPCA = XXXXXX' 180 023124 181 053130 182 023134 183 023140 DISPLY .LlNSSg IT PC PREV ADR = CCC TT SS° LIN3.1: JSR JSR DISPLY JSR DISPLY JSR DISPLY PC,READDR PC.LINDEC T PC,LINDEC .S PC,LINDEC ,LINP3 JDECREMENT TRACK AND SECTOR ADDRESS STYPE IT IN DECIMAL SPRINT °T° JTYPE TRACK IN DECIMAL SPRINT 'S* *TYPE SECTOR ADDRESS *PRINT °PREV ADDR® PC,L INDEC sTYPE MOV $PREVA+2(R0) ,=(SP) :;PREVIOUS CYLINDER DISPLY CLR T <(SP) JSR MOVB JSR DISPLY CLR MOvVB JSR DISPLY RTS SPREVA*l(RO).(SPS ;PREVIOUS TRACK ADDRESS PC,LINDEC ;TYPE IT IN DECIMAL .S SPRINT °S* =(SP) *MAKE ROOM ON THE STACK $PREVA(RO) ,(SP) :PREVIOUS SECTOR DDRESS PC,LINDEC ,SCRLF PC ;*START CYL= CCC LIN3.3: DISPLY IT IN DECIMAL SPRINT 'T° :MAKE ROOM ON THE STACK END CYL= CCC® ,LINS3 ;TYPE IT IN DECIMAL :LINE *38 & 3C' ENTRANCE MOV JSR DISPLY MOV $PREVA+2(R0) ,=(SP) ;PREVIOUS CYLINDER PC,L INDEC ;TYPE IT IN DECIMAL ,LINEN3 SPRINT * END CYL® $RPDC (RO),=(SP) :PRESENT CYLINDER RTS PC JSR PC,LINDEC ;*ACTUAL CYL= CCC TRK= TT° STYPE IT IN DECIMAL CZRJOAQ RPO7 PERF ERROR MESSAGE GE 04,00 1-JAN-83 12:06:52 PAGE 27-4 = NN O=O—=0—=000— [elelelelelelelel] o LIN3.4: DISPLY MOV BI(C JSR DISPLY CLR MOvVB JSR DISPLY RTS 000016 N T S N Te N To SN Te 3Pe el=l=lelelelelelelelelelelal=4 BB DN S B NWNNIN = <200 NN JPRINT LI :'"BUFFER LINEG: LINA3 CYLNDR,=(SP) #BIT12.(SP) ;PRINT *ACTUAL CYL= ° :ACTUAL CYLINDER :CLEAR THE FORMAT BIT PC,LINDEC STYPE IT IN DECIMAL =(SP) *CLEAR STACK WORD LLINT3 SPRINT *TRK= * $RPDA+1(R0), (SP)° ;PUT TRACK ON STACK PC,LINDEC |5gcau ;TYPE IT IN DECIMAL F ERROR MESSAGE XXXXX WRD CNT= XXXX NMBR WRDS XFRD= XXX' #BIT06,$TATUS(RO) ;DATA ERROR ? 1% :BR IF NOT :PRINT 'BUFFER ADR= L INM& $BUF (RO) ,=(SP) PC,LINOCT LiNSG :PRINT 'WRD CNT= ° PC,L INDEC STYPE IT $BUF (R0O), (SP) :SUBTRACT STARTING ADDRESS E ol aN 1o (SP) PC,LINDEC L SCRLF PC :CONVERT STYPE IT SCR=-LF ONWOW OO0 PEY P PETTYY o] S NO OO ON oocoorNvNoO O OO NO R ~N~ SR R Ao = S F =oAL NTe N NT. N Te N NP S NP SREISRF & NN oo -0 NN VIV Y N N L 000172 LINES: RECEVD DATA= XXXXXX ;PRINT "EXPCTD DATA® $CPUOP, =(SP) SCHECK THE CPU (RH) TYPE #30000,(SP)+ 1% #4 ,$RPBA(RO) :SEE IF RH70 :BR IF NO BACKUP THE BUFFER POINTER #0176000,(SP) 000172 1%: MOV WORD POS= Xxx' ,LINDS $SRPBA(RO) 000172 000240 INTO A WORD COUNT IN DECIMAL *RETURN sPRINT LINE ~ OF ERROR MESSAGE N IN DECIMAL LINX& :* NMBR WRDS XFRD = ' $RPBA(RO) ,=(SP) ‘;VALUE IN BUFFER ADDR REGISTER ;"EXPCTD DATA= XXXXXX CO0O00O0O0O00O0O0O0OCOOOO0O0O0O000O0 ° :BUFFER ADDR ON STACK :CONVERT TO OCTAL & PRINT $WRDL (RO) ,=(SP) :BUFFER SIZE 1$%: MNONONLNINININONURONDL L A3 OOONO\hbWN-‘OOGNOM&UN—DOOONg LS LN ELNLNLNL NN SNLSS NTNT NN NININININININ NN NI NININIA AN NN NN NN N NN NN NN NI NN N RO NN NN N O OO VWA VIVIWAWWNLS SN IS S S OSBS5BI WWIN N WNININN NNNN NNNNNNNNNN oo w W) VIS NN = OV~ W V®WNO WV W =000 SEQ 0117 NES :BACK THE ADDRESS UP :LEAVE THE CPU BITS #8iT11,$RPCS3(ROS SEE WHICH WORD HALF DIDN'T COMPARE 1$ :IF EQ, EVEN HALF DIDN'T COMPARE #2,$RPBA(RO) ‘BACKUP THE BUFFER POINTER AGAIN SRPBA(RD) ,=(SP) PC,LINOCT L INBS STYPE 1T :YEXPCTD® DATA = AT THE BUFFER LOCATION *PRINT 'RECEVD DATA' $RPDB(RO) ,=(SP) :RECEVD DATA FROM BUFFER PC,LINOCT STYPE IT SWRDL (RO) . (SP) :MAKE INTO A POSITIVE NUMBE $RPWC (RO) ,=(SP) :WORD LENGTH ON STACK -(SP) *UPPER DIVIDEND TO ZERO $SSEC(RO),=(SP) :SECTOR SIZE ON THE STACK PC,SDIV :DIVIDE WORDS XFERED BY SECTOR SIZE 000176 (SP)+, (SP) (SP) *MOVE REMAINDER UP THE STACK *DECREMENT WORD POSITION BY 1 #B1T14,$RPCS2(ROS +1S ‘WCE® SET ? 2% :BR IF NO CZRJOAO RPO7 PERF EXER MACRO _V04.00 1-JAN-83 12:06:52 PAGE 27-5 ERROR MESSAGE GENERATION ROUTINES 8 10 SE@ 0118 o o~ NoNA NOYFM&oATS¥I3MN]lO+tTSN w=oLOWn—W>N)D~+Inw-O ~<[b=aox>CN) CoOW2wDsT>OwwoawODdDWwW [(Ox—"3]0. —<a-¥bo4 o o ~5 o o(=] ev~ - €2 KW c10 CZRJOAC RPO7 PERF EXER MACRO V04,00 1-JAN-83 12:06:52 PAGE 27-6 ERROR MESSAGE GENERATION ROUTINES 104414 000403 055355 LINE6C: DISPLY BR 3 £ %42 024024 104414 055405 343 024030 355 356 357 358 024032 359 024034 360 024040 361 024044 362 024050 363 024054 364 365 366 367 377 024056 378 024062 379 024066 380 024072 381 024076 382 024102 383 024104 384 0264110 385 0264114 386 0264120 387 024124 388 024130 389 024134 390 024136 91 024142 392 024146 393 024152 394 024156 395 024162 396 024170 397 024172 298 024174 99 400 «0 402 61% 024176 413 024202 414 0264206 615 416 417 418 024510 026214 026220 025%%6 419 024230 420 054%54 421 024240 ;TYPE THE REST OF THE LINE sPRINT LINE 6D O £ : "UNCORRECTABLE AFT : "UNCORRECTABLE AFTER N RETRY(S)' LINE6D: DISPLY 000400 INISH B8R sRETRY COUNT 005046 113716 004737 104414 104414 000207 :"CORRECTED ON N RE RY(S)' { TYPEOUT LIN6.2: CLR 001325 024340 055373 001203 Move JSR DISPLY DlgPLV -(SP) neravo1 (SP) .Liunb %CRLF DECIMAL LINDEC sPRINT LINE 7 OF THE ERROR MESSAGE ;"TOTALS; ERRORS:XXX WRDS WRITN:XXXXX X10%6 WRDS READ:XXXXX X10%6' 104414 016046 004737 104414 012746 060016 004737 004737 104414 104414 104414 012746 060016 004737 004737 104414 104414 104414 032777 001401 002000 000207 055514 000102 024340 955535 000056 LINE7: DISPLY s TOTALS; ERRORS T0 STACK lT IN DECIMAL PC,LINDEC s TYPE #SWTOTL = (SP) RO, (SP) ;APJRESS OF LOW WORD ON STACK LLIN7X PC.$DB2D PC . $SUPRL ,PERIOD nscx1o 037324 032446 057711 057552 055553 000066 037324 032446 057711 057552 001203 100000 LIN?T $TOTAL (RO) ,=(SP)° IN7R ISRTOI%,=(SP) :PRINT ' WRDS WRITN' s CONVERT sPRINT ;TYPE *.° (TYPE * X10%6° :PRINT * WRDS READ' :LOW WORD ADDRESS s CONVERT PRINT I7 s TYPE TVPEF. "X10%6" +SCRLF ‘ 154764 #SW15,3SWR 1% 1%: PC :CR gsfllf 'HALT ON ERROR' = SWITCH 15 ;SWITCH 15 HALT sPRINT LINE 7A OF ERROR MESSAGE ;*TOTALS; SEEKS= XXXXX MIS POS ERRORS= XXX 104414 012746 060016 004737 004737 104414 104414 016069 00473 104414 055455 000076 037324 03;666 057711 055635 00011 054340 055475 LINE7A: ngPLV LlNTP fifiO“ 336 024016 3%; 024022 SEQ 0119 IL.'(SP) t Ltb 3 UPRL ;*TOTALS; SEEK:= ° STOTAL SEEKS SLEVICE TABLE ADDRESS *CONVERT THE SEEK COUNT :PRIN 11 RO) -(SP) : TYPE l! NDEC SKI ERRORS= Xxx' ' i ¢ Ci 0D 10 SEQ 0120 ROR MESSAGE GENERATION ROUTINES 42% o§4 50 004739 084349 422 024244 016046 000110 MOV 424 024254 124414 00120 DISPLY 425 054 60 426 024266 427 024270 223 024272 4%0 032777 001401 000000 000207 100000 JSR 154666 1%: BIT BEQ HAL T RTS PC,LINDEC ,stagr #5W15,aSWR 1% PC ;CONVERT & PRINT [T :TYPE IT IN DECIMAL ‘CR=LF SSEE IF HALT ON ERROR = SWITCH 15 SET BR IF NOT sSWITCH 15 HALT :PRINT LINE 8 OF THE ERROR MESSAGE 2%} :*DIFFERENT ERROR DURINS RETRY® 433 054574 434 024300 2%2 024304 104414 004737 000207 NE7,70 LINEB: 022262 DISPLY JSR RTS 437 (38 439 440 ,LINBM PC,LINE2 PC ;:0CTAL TYPEOUT ROUTINE sCALL: : MOV NUM, = (SP) : 225 3 443 024306 444 024312 445 0243°6 016646 004737 012637 447 024330 448 024332 449 024334 104414 000000 012616 446 024322 229 024336 042737 000002 033362 024337 000005 024332 JSR RETURN LINOCT: MOV JSR MOV ADD 18: 000207 DISPLY .WORD MOV RTS 452 453 454 455 456 235 PC,LINOCT ;PRINT LINE 2 OF ERROR MESSAGE ;PUT THE NUMBER ON THE STACK 2(SP),=(5P) PC,$S820 (SP)+,1$ ;PUT NUMBER IN PROPER LOCATION ON STACK :CONVERT THE NUMBER TO OCTAL :GET THE ADDRESS OF THE ASCII STRING O (SP)+,(SP) STYPE IT *ADDRESS SCORRECT THE STACK #5..1% PC :ADDRESS THE LAST 6 ASCII DIGITS *RETURN ;ROUTINE TO CONVERT THE INPUT NUMBER TO DECIMAL AND TYPE [T SLEFT JUSTIFIED sCALL: ; MOV NUM, = (SP) ;PUT THE NUMBER ON THE STACK ; JSR PC,LINDEC : RE TURN 459 024340 016646 000002 LINDEC: MOV 461 024350 004737 032446 SR 460 024344 462 463 $SKI1(R0O),=(SP) 024354 024360 2gg 024362 00473/ 104414 012616 033332 057711 000207 2(SP) ,=(SP) :SET UP STACK FOR CONVERT PC,$SUPRL :TYPE JSR PC,$5820 DISPLY MOV ,PERIOD (SP)+,(SP) RTS PC :CONVERT IT TO DECIMAL 22; .SBTTL 468 ;:DECREMENT THE SECTOR=TRACK ADDRESS 470 : MOV : RETURN Py 4 2; » ~ ~ 474 475 476 sCALL: : (LEFT JUSTIFIED) GENERAL SUPPORT SUBROUTINES JSR #0PB,RO PC,READDR :DPB ADDRESS SON RETURN THE STACK CONTAINS THE FOLLOWING: : 4(SP) = SECTOR ADDRESS : 2(SP) = TRACK ADDRESS (SP) = CYLINDER ADDRESS cenen 469 IT STYPE *.° TRESTORE STACK POINTER TM RJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 27-7 CZRJOAO RPO7 PEFF EXER _MACRO V04.00 1-JAN-83 12:06:52 PAGE 27-8 E 10 SEQG 0121 GENERAL SUPPORT SUBROUTINES 479 024364 162706 000006 482 4LB3 024400 024404 005066 116066 000004 000174 4B6 024426 00576? 000006 READDR: SUB 480 024370 016616 000006 481 024374 005066 000000 4B4 024412 116066 000175 485 024420 016066 000222 487 024432 00140 Mov CLR 000004 000002 488 024434 105366 000006 489 024440 000424 490 0%4442 005766 000004 493 024456 105366 000152 000004 005766 000002 491 024446 492 024450 (01406 116066 494 024462 000413 496 024470 001410 495 024464 497 024472 498 024500 499 024506 500 024512 116066 000152 116066 005366 000207 000154 000002 CLR MOovB 000006 1$: 2%: 000006 Move MoV 000006 4$: sDCCREMENT THE STACK POINTER :MOVE THF RETURN ADDR DOWN THE STACK ;CLEAR STACK FOR SECTOR 4 (SP) .CLEAR STACK _FOR TRACK $RPDA(RO) ,6(SP) :SECTOR ON STACK $RPDA+1(R0) , 4 (SPS : TRACK _ADDRESS $RPDC(RO) ,2(SP) .CVLINDEfi ADDRESS 6(SP) 0 ;SECTOR DECB BR 6(SP) 4% :DECREMENT ONE SECTOR :BRANCH 10 EX BEQ Movs 3% :BRANCH IF SO SECLMT(RO) ,6(SP) sLAST SECTOR 1ST 2% 4 (SP) :BRANCH IF sALSO ON TRACK 0 ? 4&(SP) ;DECREMENT ONE TRACK 2(SP) :ALSO ON CYLINDER 0 ? BR 4% BEQ 3] mMove DEC TRKLMT(RO) ,4 (SP) sGET LAST TRACK 2(SP) :DECREMENT ONE CYLINDER COUNT 1ST Move 000004 6($P), (SP) 6(SP) 1ST BEQ DECB 3%: #6,5P RTS SEXIT :BRANCH IF SO SECLMT(RO),6(SP)” PC sRETURN ;LAST SECTOR CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 28 KW11 SEQ 0122 CLOCK CHECK ROUTINE 1 % 005037 013743 001310 800094 8 024532 005777 154540 7 024526 01273 gas 6 000004 015737 000001 001310 11 024550 1; csassa 012721 015711 926§7 +00300 16 024566 ;2 024574 012777 000442 000131 17 024576 18 024602 19 024604 012716 ooooo; 012737 024604 9 ogas B 10 024544 024560 013701 012777 001305 174575 024650 20 024612 21 024616 22 024624 23 024630 24 024634 25 024640 59 024646 005777 o1§737 013701 012721 012711 012777 000415 154466 177777 001306 026272 000300 000100 28 024650 29 024654 30 024656 012716 000002 104401 024656 32 33 3% gg 024666 024670 0246764 24676 001402 000137 000000 000137 37 gg 024702 24706 012637 000207 31 kW11 CKCLK: CLR MOV 024662 105737 MOV ST MOV MOV 154512 000004 057634 ;SETUP RETURN ADDRESS #CKCLK2,ERRVEC ;SETUP ERROR TRAP VECTOR FOR L=-CLOCK CHECK ”s$, (SP) ;SETUP RETURN ADDRESS ST MOV MOV MOV MOV MOV BR 2%: 003522 000004 BEQ JMP HALT JMP CKCLK3: :E:ff ROUTINE :% : 44 024710 024714 024716 0264720 024726 024730 S0 024736 005737 001410 100404 042777 000403 062777 000207 001310 CLKOFF : 000101 154350 000100 154346 18%: 28: ;SET P=CLOCK FLAG :KW11=P VECTOR ADDRESS s, (SP) 1STB 031744 #1,CLKFLG SLAVEC,R1 ERROR TRAP VECTOR FOR P=CLOCK CHECK :SET kW11=P INTERRUPT, CNT UP, CKCLK2: MOV RT] 1%: TYPE 001150 :CHECK FOR KW11=P #131,38LKCSR CKOLKT: MOV RTI 1$: MOV 1546436 aSLKCSR #CKCLKT EnnrVEC MOV BR 001310 ;ASSUME ''NO CLOCK'' AVAILABLE ::PUSH ERRVEC ON STAC #KWSVR,(R1)+ #PR6, (R1) MOV 154502 CLKFLG ERRVEC,=(S" MOV MOV 22 45 46 47 48 49 CLOCK CHECK ROUTINE ;ROUTINE TO CHECK FOR KW11=L OR KW11=P CLOCKS S 024514 6 024520 13 JSBTTL :SETUP KW11=P VECTOR :SET INTERRUPT PRIORITY 10 6 #-1687, ,a8LKCSB :LOAD COUNTER BUFFER WITH 16.67 CKCLK3 asLKS #-1,CLKFLG SLLVEC,R1 #KWSVR.(RI)+ #PR6, (R1) #100,a$LKS CKCLK3 NEDCLK $AUTOB 2% $GET42 START (SP)+,ERRVEC PC :CHECK FOR KW11=L :SET L=CLOCK FLAG :KW11=L VECTOR ADDRESS :SETUP KWil=L VECTOR SET INTERRUPT PRIORITY T0 6 :SET KW11=L INTERRUPT s"P OR L CLOCK MUST BE ON SYSTEM® :RUNNING IN AUTO MODE ? ‘BR IF NOT :ABORT PROGRAM THALT STRY AGAIN JRESTORE THE ERROR VECTOR IS USED TO SHUT OFF INTERRUPT TO THE SYSTEM CLOCK PC,CLKOFF sCALL ROUTINE CLKFLG ;1S CLOCK AVAILABLE 28 1% #101,38LKCSR 2% #100,38LKS PC 10US, REPEAT MODE ? :BR IF NO :BR IF L=CLOCK :SHUT OFF KWi1=P INTERRUPT ;SHUT OFF ku11=L SEXLT INTERRUPT CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:05:52 PAGE 29 KW11 G 10 SEQ 0123 CLOCK CHECK ROUTINE 1 % ‘?28{’"5 TO DISPLAY STATISTICS FOR ASSIGNED DRIVES & g : : 7 024740 024740 024742 8 024744 9 024750 21 024752 2% 024754 23 024760 24 024762 25 024766 26 024770 27 024776 28 025000 010046 010446 005737 001431 005004 104401 006304 016400 006204 136437 001412 104401 29 025004 004737 32 025020 004737 30 025010 31 025014 33 025024 34 025026 35 025032 36 025034 025034 025036 gg 025040 104401 104401 005204 020427 001352 JSR RE TURN PC,STATER MOV MOV ST BEQ (LR RO,=(SP) R4 ,=(SP) ASNLST 5% R4 : ;PUSH RO ON STACK ::PUSH R4 ON STA :ANY DRIVES Assxcneo ? ‘BR IF NOT CLEAR THE DRIVE INDEX 001203 BEQ TYPE 4$ L SCRL :BR IF NOT :CR=LF 057321 057345 TYPE TYPE ,DASHS LMSGSUM STYPE ‘eeeee STYPE 'SUMMARY, STATPR: 001542 3%: 002056 045550 001542 026146 025070 000010 TYPE ASL MO\ AR BITB JSR 4%: 5%: 012604 012600 000207 23 .scaLr sCR=LF R4 CHANGE T0 _INDEX WORDS BLKADR(R4) ,R0 :GeT THE DRIVE'S BLOCK ADDRESS R4 ‘RESTORE P& ATABIT(R4) ,ASNLST :1S THIS DRIVE ASSIGNED ? PC, srlne JSR PC,TYPSUM MoV MOV RTS (s R4 (SP)+.RO PC INC rmp LNE : : : 45 025042 025044 025046 025050 025052 S0 025056 51 025062 §2 025064 gz 025066 ° STYPE THE SUMMARY R& R4, #8. 3% 010046 010446 005004 111004 004737 104401 012604 012600 MOV JSR RE TURN S INCREMENT THE INDEX sFINISHED ? sBR IF NO ::POP STACK INTO Ré& ::POP STACK INTO RO :RETURN #DPB,RO PC,ONESUM :DPB ADDRESS ONESUM: MOV RO,=(SP) :SAVE RO TYPE MOV MOV .DASH13 (SP)+,R4 (SP)+,RO STYPE 'ecccccccccces : *RESTORE R&4 *RESTORE RO MOV CLR MOVB JSR % 025070 057327 000207 RTS R4 ,=(SP) R& (RO) R4 PC,TYP_UM :TYPE THE SUMMARY sCALL: : MOV #ORIVE R4 23 : 58 g: 025070 68 025072 : 000240 104401 MOV RE TURN :SAVE R4 :CLEAR R4 FOR DRIVE NUMBER :DRIVE NUMBER :TYPE THE SUMMARY B 55 56 57 67 rvpe ELAPSED TIME ‘?2”{'"5 TO TYPE THE SUMMARY FOR ONLY ONE DRIVE JCALL: 41 42 :2 46 47 48 49 28: 001203 RETURN :DRIVE NUMBER #0PB, R0 :DPB ADDRESS TYPSUM: NOP 056601 :TYPE ntsr OF TYPE SUMMARY LINE .DRVMSG 1 ;TYPE ‘DRIVE® CZRJOAD RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 29-1 KW11 H1 CLOCK CHECK ROUTINE 69 025076 025100 02510% 02510 70 025106 71 025110 72 025114 73 025120 74 025126 75 02513¢ 76 77 78 79 025136 025144 025146 025150 80 025154 81 025160 82 025164 025170 025202 83 025202 84 025206 85 025212 86 025216 gg 025220 010446 104403 002 000 104401 104401 1044?1 012737 122764 001403 012737 104401 000000 104401 104401 004737 104401 000404 016046 004737 004537 000003 104401 MOV 056531 056575 056531 057075 TYPOS BYTE .BYTE 000005 025146 040464 057102 025146 056573 TYPE TYPE TYPE MOV 1%: 28: 056531 032764 025172 ::65% 000114 64$: 033332 032552 R&,=(SP) 2 0 ,BLNKS1 "DASH LBLNKS1 #SRPO7,2% #5,DRVIYP(R4) 1% #SRPO7P, 28 O , COMMA ,BLNKS1 PC, TYDRV TYPE BR JASCIZ 65s 64$ /, PASS / MOV $PASSC(RO) ,=(SP) JSR JSR LWORD TYPE 057711 89 CMPB BEQ MOV TYPE WORD TYPE TYPE JSR PC,$582D RS.REPLZ 3 LPERIOD ;TYPE LINE 2 OF SUMMARY 3? i 92 93 025224 025230 104401 000407 025232 ;TYPE 3 DIGITS STYPE *.° :CR=LF ::TYPE ASCIZ STRING 057552 TYPE “MSGX10 104401 057711 108 109 025330 104401 025336 062716 HE PASS COUNT ON THE STACK 000056 037324 032362 104401 112 025362 sPUT ;CONVERT IT STYPE IT TMSTOTL RO,=(SP #SWTOTL, (SP) PC,$DB2D PC.SUPRS }89 025324 104401 010046 $:TYPE ASC'2 STRING $3GET OVE. THE ASCIZ TYPE MOV ADD JSR JSR 057542 110 025354 111 025360 :IS DEVICE AN RPO7 ? ‘BR IF YES *ADDRESS OF RPO7+ MESSAGE :TYPE THE DRIVE TYPE MESSAGE :MESSAGE ADDRESS HERE STYPE *,° sTYPE 1 BLANK ;TYPE DRIVE SERIAL NUMBER ;TYPE '/ PASS ° :GET ADDRESS OF DPB sPOINT TO LOW NUMBER OF WRDS WRITIEN PFR PASS :CONVERT DECIMAL NUMBER *SUPPRESS LEADING ZEROS AND TYPE 106401 010046 062716 004737 004737 ozsgsa ‘TYPE 1 BLANK STYPE '=' :TYPE 1 BLANK :ADDRESS OF RPO7 MESSAGE LMSPASS RO,=(SP) #SWTPAS, (SP) PC,$DB2D PC,SUPRS ozsgro 025302 025304 025310 025314 000407 DRIVE NUMBER ;:G0 TYPE==OCTAL ASCII ssTYPE 2 DIGIT(S) : :SUPPRESS LEADING ZEROS TYPE MOV ADD JSR JSR 100 101 102 10T 106 02533¢ sTYPE LINE 3 OF SUMMARY TYPE ,67% ::678: 057532 105 ogsszo ,$CRLF ::SAVE R4 FOR TYPEOUT ;:TYPE $:GET OVER THE ASCIZ 104401 010046 062716 004737 004737 104401 TYPE SEQ 0124 (13 025250 94 025250 95 025254 96 025256 97 025262 98 025266 99 025272 . 66$: 000042 037324 032362 057711 TYPE TYPE 000036 <CRLF>/WRDS WRiTN'/ ,PERIOD LPERIOD ;TYPE LINE & OF SUMMARY TYPE 69% ::698: 057532 .ASCIZ éBs: STYPE *.° STYPE ' TOTAL ° :GET ADDRESS OF DPB ;POINT 10 LOW NUMBER OF WRDS WRITTEN :CONVERT DECIMAL NUMBER :SUPPRESS LEADING 2EROS AND TYPE STYPE *.° STYPE ' X10%6° ::TYPE ASCIZ STRING BR .ASCIZ £1 1:GET OVER THE ASCIZ <CRLF>/WRDS READ’ "/ TYPE MOV LMSPASS RO, =(SP) ADD lSfiDPAS.(SP) ;TYPE '/ PASS ° :GET ADDRESS OF DPB JPOINT TO LOW NUMBER Of WRDS READ PER "ASS CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 29-2 KW11 CLOCK CHECK ROUTINE 113 025366 004737 037324 114 ozs§72 004737 o%;sez JSR 115 025376 057711 TYPE PC,SUPRS 116 025402 104401 JSR TYPE MSTOTL 117 025406 118 025410 119 025414 120 025420 121 025424 }%§ 025430 124 125 025434 025440 025460 126 025460 127 025464 128 025466 129 025472 104401 010046 062716 004737 004737 104401 104401 104401 000407 104401 010046 05,716 004737 057542 , 000066 037324 03;362 057532 037324 032362 057711 147 148 025534 104401 025542 025566 149 025566 025572 025604 150 025604 025610 151 025612 152 025616 025622 025634 153 025634 025640 154 025642 155 025646 025652 025662 156 025662 025666 157 025670 158 025674 104401 000404 016046 104405 104401 104401 00404 016046 104405 104401 104401 025700 000404 BR ASCIZ TYPE JSR TYPE MOV ADD JSR JSR TYPE 0$ nspAss ::738: 7es: R 76%: 057711 025702 BR LASCIZ TYPE BR 78s YPE rvps *TX10%6* $:GET OVER THE ASCIZ / :TYPE '/ PASS ° ;PUT $STOTL ON THE STACK :POINT TO LOW NUMBER OF SEEK COUNT :CONVERT DECIMAL NUMBER suppaess LEADING ZEROS AND TYPE YPE ‘MSTOTL RO,=(SP) rvpe *" 10TAL * :PUT $STOTL ON THE STACK PC,$DB2D PC,SUPRS ,PERIOD :CONVERT DECIMAL NUMBER *SUPPRESS LEADING ZEROS AND TYPE STYPE *.° #$ST07TL, (SP) SUMMARY 28 :POINT TO LOW NUMBER OF SEEK COUNT ..rvpe ASCIZ STRING :GET OVER THE ASCIZ <CRLF>/CUMULATIVE ERRORS:/ 75% ::TYPE ASCIZ STRING LASCIZ 748 <CRLF>/SOFT / ::GET OVER THE ASCIZ MOV TYPDS TYPE $SOFT(KO),=(SP) ;;SAVE $SOFT(RO) FOR TYPEOUT ..GO TYPE-=DECIMAL ASCII WITH SIGN YPE TYPE ,PERIOD 77% .ASCIZ / HARD / MOV SHARD(RO),=(SP) TYPE LPERIOD 79% BR TYPDS TYPE :-79%: 000110 PC SUPRS JTYPE LINES 6 AND 7 OF TYPE 73 ::77%: 104401 000403 708 057711 025624 057711 025654 DPB <CRLF>/SEEKS :75%: 000106 104405 104401 * ::718: 000076 016046 TOTAL :GET ADDRESS OF ::TYPE ASCIZ STRING 057542 000104 *.° ' SUMMARY 71% 032362 (025574 STYPE ;TYPE LINE 5 OF TYPE ,PERIOD 004737 004737 104401 000412 ,PERIOD JMSGX10 TYPE 135 025520 136 025524 }2; 025530 025540 TYPE TYPE :SUPPRESS LEADING ZEROS AND TYPE :POINT TO LOW NUMBER OF WRDS READ ;CONVERT DECIMAL NUMBER suppness LEADING zeaos AND TYPE 057711 104401 010046 062716 RO,=(SP) 000046 037324 132 025506 133 025512 134 025514 STYPE RO,=(SP) OSSEEKS (SP) C,$DB2D 004737 104401 ,PERIOD MOV ADD JSR 130 025476 131 025502 ;CONVERT DECIMAL NUMBER #SRTOTL, (SP) PC,$DB2D PC,SUPRS 057711 057552 025442 PC,$DB2D MOV ADD JSR JSR 1 b 6% BR 788 MOV $SKI(R0),=(SP) LASCIZ TYPDS TYPE TYPE BR /7 SKI / PERIOD 1% 8os ,.rvps ASCIZ STRING S:GET OVER THE ASCIZ ;;SAVE SHARD(RO) FOR TYPEOUT :GO_TYPE==DECIMAL ASCI1 WITH SIGN s TYPE 1:TYPE ASCIZ STRING $:GET OVER THE ASCIZ ;;SAVE $SKI(R)) FOR TYPEOUT :GC_TYPE==DE CIMAL ASCII WITH SIGN sTYPE $:TYPE ASCIZ STRING $iGET OVER THE ASCIZ ; EQ 0125 CZRJOAD RPO7 PERF EXER MACRO v04.00 1-JAN-83 12:06:52 PAGE 29-3 SEQ 0126 CLOCK CHECK ROUTINE 0%571% :-81%: 159 025712 016046 000112 160 025720 161 025724 104401 104401 057711 025732 025730 025742 104405 000404 162 025742 165 025746 016046 166016 166 167 168 169 104405 104401 104401 000207 055752 025756 025762 025766 025770 025774 026000 166016 166216 166016 80s: LASCIZ / MISP / SMISPO(RO) ,=(SP) B2s: :SAVE SMISPO(RO) FOR iv 2% S:GET OVER THE ASCiZ / OTHER / $TOTAL (RO) ,=(SP) .,rvpe ASCIZ STRING :CALCULATE NUMBER OF OTHER ERRORS $SOFT(RO),(SP) $HARD(RO). (SP) $SKI1(R0O),(SP) $MISPO(RD). (SP) ;SUBTRACT $SOFT FROM $TOT :SUBTRACT S$HARD FROM STOTAL :SUBTRACT $SKI FROM $TOTAL :SUBTRACT SMISPO FROM STOTAL ,PERIOD STYPE é%CRLF TYPEOQUT GO rvpé--oscanL ASCI] ux SIGN .PgRlOD 83$ :-83%: O0O0O0O 0%5716 OO0 KW11 J 10 $:60 TYPE==DECIMAL ASCII WITH SIGN S CR=LF *.° CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 30 K 10 SEQ 0127 KW11 CLOCK CHECK ROUTINE 1 15 16 EROUY]NE INOTE: $SOFT WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCSOF: 1ST 001336 000104 TO INCREMENT $SOFT 077777 000104 1%: CMP BHIS INC RTS BADSEC 1% sSEE sBR ?SOFT(RO).‘77777 $ : $SOFT(RO) PC _IF BAD TRK/SEC IF ‘ INDICATOR SET IT'S SET, DON'T INCREMENT COUNT IT sRETURN ilS $SOFT ALREADY AT MAXIMUM ? IS : s INCREMENT $SOFT / sROUTINE TO INCREMENT $HARD ENOYE: 001336 000106 18 026050 » 000207 INCHRD: 077777 000106 1%: sROUTINE 005737 005260 BeDSEC CMP $SHARD (RO) ,#77777 INC $HARD (R0) RTS 077777 000110 1%: 19 1 ;SEE IF BAD TRK/SEC SBR IF INDICATOR SET IT'S SET, DON'T INCREMENT COUNT :1S SHARD ALREADY AT MAXIMUM ? 1% :BR IF 1T IS PC :RETURN ; INCREMENT $HARD TO INCREMENT $SKI $SK1 WILL NOT BE INCREMENTED BEYOND 77777 (32767.) INCSKI: TST 001336 000110 1ST BNE BHIS INOTE: 026052 $HARD WILL NOT BE INCREMENTED BEYOND 77777 (32767.) BNE CMP BHIS INC RTS BADSEC sSEE IF BAD TRK/SEC PC sRETURN INDICATOR SET 1% sBR IF IT'S SET, DON'T INCREMENT COUNT $SKI(RO) ,#77777 ;1S $SKI ALREADY AT MAXIMUM ? 1% sBR IF IT IS $SK1(RO) s INCREMENT $SKI sROUTINE TO INCREMENT $M1SPO ENOTE: 001336 000112 INCM]S: BHIS 1%: 20 TST BNE CMP 077777 000112 SMISPO WILL NOT BE iNCREMENTED BEYOND 77777 (32767.) INC RTS BADSEC 1$ :SEE IF BAD TRK/SEC INDICATOR SET ‘BR | F IT'S SET, DON'T INCREMENT COUNT ?HlSPO(RO),#????? $ :BR IF PC sRETURN $MISPO(RO) IT ixsssnlspo ALREADY AT MAXIMUM ? | : INCREMENT SMISPO sROUTINE TO INCREMENT STOTAL & BN ENO!E: INCTOT: ST 001336 000102 000207 000102 $TOTAL WILL NOT BE INCREMENTED BEYOND 77777 (32767.) BNE 077777 1%: ?ADSEC “ sSEE CMP $TOTAL(RO) ,#77777 RTS PC BHIS INC 1% $TOTAL (RO) IF BAD TRK/SEC ‘BR IF IT'S SET, :BR IF :RETURN IT INDICATOR SET DON'T INCREMENT COUNT 1S $TOTAL ALREADY AT MAXIMUM ? 1S ; INCREMENT $TOTAL CZRJOAD RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PA kW11 CLOCK CHECK ROUTINE 1 § L 10 01 SEQ a 0128 sROUTINE TO TYPE THE ELAPSED CPU RUN TIME & 026146 S 026152 001446 005737 001310 6 026154 7 026162 01§737 000002 8 026166 9 026172 021627 002407 001340 000144 013746 10 0261764 11 026200 1; ozego« 005237 021627 oog&g; 14 026212 15 026216 004737 004537 13 GE 3 1 026206 16 026222 17 ozezga 18 026230 19 026234 0052 000000 104401 013746 004737 20 026240 21 026244 22 026246 23 026252 004537 000002 104401 013746 25 026262 26 026266 55 026270 004537 000002 000207 24 026256 004737 $TIME: 026222 ozezgg 1$: 28: 060074 001342 033332 40 026336 41 026342 42 026350 43 026352 44 026356 45 026362 005337 001037 013737 005237 023727 103426 005037 005237 005237 005237 023727 10341; 005037 oos;sr 023727 101402 005037 015746 S0 026410 51 026412 001402 012716 Sg 026416 53 026422 54 ozoage 55 026430 56 026636 57 026440 #2,2% CMP BLT (SP) .#100. 1% HOUR, = (SP) INC CMP BLT INC JSR JSR WORD TYPE MOV 0 ,COLON MINUTE ,=(SP) JSR WORD TYPE MOV RS.FILLZ 2 ,COLON SECOND ,=(SP) 060074 001344 033332 3$: JSR LWORD RTS :BR IF NO :ASSUME 2 DIGITS TO TYPE ;PUT "HOURS® ON THE STACK :100. HOURS OR MORE ? :BR IF NO 28 (SP),#1000. 1% STYPE 3 DIGITS $1000. HOURS OR MORE ? :BR IF NO pg.ssezo RS.FILLZ :CONVERT TO DECIMAL STYPE IT 28 JSR 032546 ;1S CLOCK AVAILABLE ? STYPE & DIGITS *NUMBER OF HOUR DIGITS TO TYPE s sPUT "MINUTES®' ON THE STACK PC,$SB2D *CONVERT TO DECIMAL PC,$SB2D *CONVERT TO DECIMAL RS,FILLZ 2 PC STYPE IT STYPE 2 DIGITS P sPUT SECONDS ON THE STACK STYPE IT STYPE 2 DIGITS ;KW11 CLOCK INTERRUPT SERVICE ROUTINE 46 026370 47 026372 48 026376 49 026402 MOV JSR 032546 gg 31 026272 32 026276 33 026300 34 026306 35 026312 36 026320 37 026322 38 026326 39 026332 LKFLG §s MOV 026222 001750 0333 032546 TST BEQ 023727 004737 005737 001411 023737 002405 012737 001346 001312 001344 001344 KWSVR: 001346 000074 001344 001472 001464 001342 001342 001342 001340 001340 001340 000024 001312 000074 023417 000062 000020 044322 001470 001470 177777 001314 ONESEC 1% HERTZ,ONESEC SECOND SECOND, #60. 1s SECOND INTRVL¢+2 CMPT [M+2 1%: ; INCREMENT THE 1/60 SECOND COUNTER :BR IF A SECOND NOT COUNTED :RESTORE THE VALUE *COUNT THE SECOND SAT MAXIMUM ? ‘BR IF NOT :CLEAR THE SECOND'S COUNTER sCOUNT SUMMARY INTERVAL COUNTER :COUNT COMPARE TIME INTERVAL COUNTER INC CMP BLO CLR INC MINUTE MINUTE, #60. 1% MINUTE HOUR :COUNT THE MINUTE SAT MAXIMUM 2 ‘BR IF NOT :CLEAR THE MINUTE'S COUNTER :COUNT THE HOURS BLOS CLR MOV 1% HOUR #20.,-(SP) :BR IF NOT :CLEAR THE HOURS :20MS ON THE STACK @ SOHWZ BEQ MOV 2% #16.,(SP) ‘BR IF YES :16MS ON THE STACK @ 60HZ CMP 2%: 001472 DEC BNE MOV INC CMP BLO CLR INC INC HOUR , #9999. CMP JSR 1ST BEQ CMP BLT MOV HERTZ,#50. . PC RfiTHR NfRVI. $ iNTRVL02.lNlRVL $ #-1,STATIN TAT MAXIMUM :CPU RUNNING @ S0HZ ? JDRIVER TIMER ROUTINE sDISPLAY THE PERFORMANCE SUMMARY ? ‘BR IF NOT *DISPLAY INTERVAL FINISHED ? ‘BR IF NO *SET PERFORMANCE SUMMARY DISPLAY FLAG CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 31-1 m10 SEQ 0129 KW11 CLOCK CHECK ROUTINE 58 026446 59 026452 005037 000002 001472 3%: CLR RTI INTRVL +2 ;CLEAR THE PERFORMANCE INTERVAL COUNTER CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 32 KW11 CLOCK CHECK ROUTINE 1 i ;cgrrAno DECODE ROUTINE 4 3 MOV #1,CFLAG 7 ; RE TURN1 JSR PC.KSR S B ; ; g : 10 005737 040546 14 013704 040560 104401 001203 }1 1§ 15 19 20 RE TURN2 MOV RPADR, R4 :GET RP/RH BASE ADDRESS MOV CLR TYPE #CLR,RPCS2(R4) CFLAG LSCRLF 004737 026146 JSR PC,STIME 25 017746 MOV asSWR,=(SP) 104402 26 27 004737 004737 30 31 32 33 34 35 gg 104411 012605 005737 001405 005737 001141 000137 38 39 004737 005205 53 40 PR 42 43 o4 45 104401 0 & 6 2 24 30 4 47 48 49 S0 51 32 026636 026640 026646 026652 53 54 §5 sg 56 57 58 122715 001465 122715 001410 121527 101117 056573 056531 034656 152414 060001 001542 003522 024514 000124 000067 026656 026662 2bo7g 026672 122765 001003 004737 0001064 026 026 122765 001003 000123 177770 000126 177777 030030 027620 177777 :CR=LF :TYPE ELAPSED TIME STYPE *,° STYPE 1 BLANK :TYPE *SWR = * $:SAVE aSWR FOR TYPEOUT ::CONTENTS OF SWITCH REGISTER 1360 TYPE=-=OCTAL ASCII(ALL DIGITS) RDLIN MOV ST BEQ ST BNE JMP (SP)+,RS CFLAG 2% ASNLST 138 START ;READ THE KEYBOARD :GET ADDRESS OF INPUT STRING ‘WAS (“C) TYPED? :BR IF NO *ANY DRIVES ASSIGNED ? ‘BR IF YES :JUMP TO START JSR INC PC,CKCLK RS ;START SYSTEM CLOCK :POINT TO SECOND CHARACTER CMPB BLO BICB CMPB BNE LENTCOM #'T,(RS) 9 #'A,(RS) (RS).#'7 12% (RS),#'0 12% #*(7.(RS) #'T,=1(RS) 43 SINITIALIZE TTY KEYBOARD SSHUT OFF CLOCK INTERRUPT WHILE WAITING SYENTER COMMAND" EQ TO SYES :EQ TO ‘BR IF :DRIVE SBR IF A °'T' 2 AN ‘A’ IT IS NUMBER GREATER THAN AN ASCIl IT IS 7 ? PC ,NEWASN ‘DRIVE NUMBER LESS THAN AN ASCII 0 ? SBR IF IT IS : SLEAVE ONLY LOWER 3 BITS IF CHAR NOT °*A° ‘EQ TO °T° ‘BR IF NOT EQ *ASSIGN DRIVE FOR TEST CMPB BNE JSR #°D,=1(RS) 5% pg DROPD :EQ TO *p* ? ‘BR IF NOT EQ *DRCP DRIVE (MPB BNE #'S,=1(RS) 6% JSR 177777 :CLEAR MASSBUS CONTROLLER SCLEAR THE 'CONTROL C*' FLAG PC,STKINT PC.CLKOFF CMPB BEQ CMPB BEQ CMPB BHI 000101 , COMMA "BLNKS1 TSMSWR+2 :gzvértzssnsclsrsns SSET PRIORITY TO & JSR JSR TYPE 001334 000060 026676 000500 TYPOC 033430 024710 121527 103514 142715 122765 oo1og3 004737 26660 000507 TYPE TYPE TYPE TTY SERVICE ;SYSTEM BUSY RETURN ;ANY DATA TRANSFERS UNDER WAY ? 012764 005037 106401 104401 104401 IS NORMALLY SET BY THE :ROUTINE IN INTERRUPT MODE DTUW b3 22 23 24 ;'CFLAG' ST g:baec MOV #PRG ,PS 000010 01 SEQ a 0130 *RETURN AFTER KEYBOARD SERVICED }822{5 01273; 000200 177776 000040 001334 o BR BR 13§ 134 CEXIT TEXIT ‘EQ TO *S* ‘BR IF NOT EQ KW11 CLOCK CHECK ROUTINE 59 026710 004737 027726 61 0%6716 62 026724 64 026726 65 026732 67 02673¢ 68 026742 69 026744 70 026750 71 026752 122765 00101; 005737 00105; 032777 001047 004737 000453 122765 000127 73 004737 030040 122765 000127 78 027000 79 027004 005737 001026 001424 82 027014 83 027016 84 027024 85 027026 001022 122765 001413 126527 87 027036 88 027044 89 027046 60 026714 030471 7; 026760 026762 74 026766 75 026770 76 026776 001043 000444 001034 81 027006 032777 177777 6%: 001424 000001 152212 030052 000122 78: 177777 8%: 177777 9%: 000001 152140 000101 000001 000001 000067 126527 103411 142765 000001 000060 177770 000001 92 027062 104401 057713 118: 94 027070 057756 128: 86 02703¢ 101015 90 027054 91 027060 004737 000407 93 027066 000601 95 027074 000137 97 027102 005777 96 027100 98 027106 99 027114 }8? 027120 104401 104413 052777 005037 000207 030064 026472 152054 000100 177776 }8§ 104 027122 111504 005037 005037 108 027140 104411 104401 109 027142 110 027144 012600 005737 11; 027152 113 0271564 114 027156 115 027162 116 0271664 105710 001414 105760 001006 122710 111 027150 117 027170 118 027172 119 027176 PC, CMPB BNE ST BNE BIT BNE JSR BR (MPB #'W,=1(RS) 8$ RDONLY 11% #5W0, CWR 1% PC,DATAPK 13 #'R,-1(RS) JSR PC ,KEDAPK CMPB c-u =1(RS) ST BNE RDONL Y 11% BNE CMPB BEQ CMPB 118 #'A,"/"5) 10$ 1(RS),#'7 BNE BR BNE BIT 108: 13$: 152044 1§£ SCMND 12%° 13§ 1(RS),#'0 12% #*C7.1(RS) ‘BR IF NOT EQ *READ DATA SEXIT ‘WT COMMAND ? *LOCKED IN ''READ ONLY'' MODE ? ‘BR IF YES ‘BR IF SET, CAN'T DO 'W' COMMAND *ALL DRIVES ? SYES ‘GREAT THAN 7 SYES iLESS THAN 0 ‘YES SCHOP OFF THE HIGHER BITS ASSIGN DRIVES WITH WT COMMAND MSWRO :TYPE *CAN'T WRITE IN READ ONLY MODE' INVLD STYPE BR is JMP is ST asTKE BIS CLR RTS ‘EQ TO 'W° ‘BR IF NOT EQ :LOCKED IN "READ ONLY'' MODE ? ‘BR IF YES SIS SWITCH O SET ? SBR IF SET, CAN'T DO 'W*' COMMAND *WRITE DATA SEXIT ‘EQ TO 'R* ? :1S SWITCH 0 SET ? PC,WATPAK 13§ RESREG CEXIT #SWG0,aSWR JSR BR TYPE ;TYPE STATISTICS *NO 12% TYPE SEQ 0131 128" BHI CMPB BLO BICB n #BI1T06,38TKS PS PC STRY AGAIN ‘INVALID COMMAND® MESSAGE STRY AGAIN *RESTORE RO = RS ‘CLEAR THE TTY BUFFER :SET TTY INTERRUPT ENABLE SEt PRIORITY BACK TO ZERO :RETURN ;ROUTINE TO FROCESS THE ASSIGN REQUEST (°'T', 105 02712¢ 106 027130 107 0271364 JSR BR . 001365 001410 122710 001403 001334 001426 060164 ASSIGN: MOVB 1%: CLR CLR TYPE RDLIN (RS),Ré& :PUT DRIVE # IN R4 ,MSPRM STYPE 'CHANGE onxve PARAMETERS 2° CFLAG DRVPAR 001334 MOV ST (SP)+,R0 CFLAG 000001 1ST8 BEQ 1STB BNE CMPB (RO) 3s 1(RO) 28 #'Y,(RO) 000131 000116 BNE BEQ CMPB BEO °*R', OR 'W' COMMANDS) 1% 13 #°'N, (RO) 3$ SCLEAR CONTROL C FLAG :ASSUME CHANGING DRIVE PARAMETERS SREAD THE ENT *SAVE ADDRESS or RESPONSE ‘WAS <‘c> TYPED? :BR IF YES ‘WAS RESPONSE A CARRIAGE RETURN (DEFAULT °*N*)? ‘BR IF YES ‘WAS xr TERMINATED WITH CARRIAGE RETURN? :BR IF NO ‘WAS lt A 'Y' RESPONSE ? an IF YES WAS IT A *N' RESPONSE ? .aa IF YES — CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 32-1 027200 104401 060103 28: 027206 027212 027216 ogs;sr 122704 001426 001426 000101 3$: 4$: 027220 027226 027232 027234 027240 8 ;ggs o127§7 005737 001407 123704 001004 86533; 056652 001430 027260 001003 027204 000747 001430 056761 031276 ASGN1: . 031276 027252 1364%7 040550 001542 1$: 027262 027266 027270 027274 027276 0273064 027310 027312 027316 027320 027326 027330 027336 027340 027344 027346 027352 02735¢ 027356 027362 027364 004737 000207 000137 005004 012737 005737 001407 123704 001004 012737 000413 136437 001007 004737 005204 020427 003751 000207 004737 000770 027364 031252 056652 001430 056761 031276 040550 001542 027364 031252 0273764 027400 027402 027406 057412 027416 027420 0574 2 027424 027430 027434 110437 006304 016400 004737 006204 105764 001451 100443 004737 004737 032760 050654 027444 027450 027452 027456 005737 001015 104401 104401 001426 027442 001461 027462 010446 ASGN2: 18: 4$: 001542 002056 016720 040454 030104 031010 000004 001203 056601 2%: 38: 000007 040550 001056 031276 001430 136437 027372 28: 000200 ASGN3: TYP" cn SEQ 0132 BADENT ;TYPE BAD ENTRY MESSAGE INC CMF3 BEQ DRVPAR #'A,Ré4 ASGN2 ‘D0 NOT CHANGE DRIVE PARAMETERS *ASSIGN ALL DRIVES ? ' ‘BR IF YES MOV ST BEQ CMPB BNE 32” SUNTASN,ASNMSG XXDP 1% XXDP,R&4 1$ gkooev.nsnnse ;ERROR MESSAGE :LOADED FROM THIS DEVICE ? ‘BR IF NO SLOADED FROM THIS DRIVE ? ‘AR IF NO S'LOAD DEVICE® MESSAGE ADDRESS BNE 2% :BR IF IT IS CLR MOV ST BEQ CMPB BNE MOV BR BITB BNE JSR INC CMP BLE RTS JSR BR R :START WITH DRIVE 0 $UNTASN,ASNMSG : ERROR MESSAGE XXDP :LOADED FROM THIS DEVICE ? 2% :BR IF NO X)DP,R&4 :LOADED FROM THIS DRIVE ? 24 ‘BR IF NO #_ODEV,ASNMSG :°'LOAD DEVICE® MESSAGE ADDRESS “$ A'AB.T(R&4),ASNLST :ALREADY ASSIGNED ? L% YES PC,ASGN3 SASSIGN THE DRIVE RG" *INCREMENT DRIVE # RG,# :ALL DRIVE CHECKED ? 1% *NO PC SYES PC,ASNERR *ERROR MESSAGE 3$ :T0 LOOP BITB ATABIT(R4),ASNLST MOVB ASL MOV JSR ASR TSTB BEQ BM] JSR JSR BIT R&,GENDPB R4 BLKADR(R4) ,RO PC,RECALO RG DRVSTA(RG) ASGN7 ASGN6 PC,CLRDPB PC.GETID #1LV,SRPDS(RO) ST BNE TYPE TYPE DRVPAR 1% JSCRLF DRVMSG BR is STRY AGAIN BITB ATABIT(R&) ,ASNLST JSR RTS JMP BNE BEQ MOV PC,ASGN3 PC ASNERR :DRIVE ALREADY ASSIGNED ? :SEE IF DRIVE ON THE SYSTEM *RETURN :EXIT ERROR :DRIVE ALREADY ASSIGNED ? ASGN& :BR IF IT IS ASGNS ‘BR IF NO R4, =(SP) :GET DRIVE NUMBER ‘MAKE R& WORD INDEX :PUT BLOCK'S ADDR INTO RO *RECALIBRATE DRIVE ‘MAKE R4 BYTE INDEX ‘DRIVE AVAILABLE? :BR IF DRIVE OFFLINE OR NONEXISTENT :BR IF DRIVE UNSAFE *CLEAR BLOCK FOR DRIVE JUST ASSIGNED :GET DRIVE SERIAL NUMBER :INTERLEAVE SECTOR SET ? :CHANGE DRIVE PARAMETERS ? :BR IF NO SCR=LF STYPE *DRIVE' 1:SAVE R4 FOR TYPEOUT :3sTYPE DRIVE NUMBER (o V) o> WA =TS SONOVSWN=O ro A At AR At i S SR NS Nt N+ e NagU‘WWWNNNNNNNNN » T NI ~~ N oo R A 0 (o Yo Yo Jo JUIV IV IV IV IV VIV IV IV I 00 22a8 o88oF oF oF o F LV VIV dddd—dd“ddddddddddd‘dddddddddadddflfldadddddddddddad‘dflddd RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 32-2 0CK CHECK ROUTINE CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 32-3 KW11 CLOCK CHECK ROUTINE 027464 027466 027467 176 027470 177 027474 178 027500 179 027504 180 ogrsoe 10440 00 00 104401 1044g1 004737 006304 007737 TYPOS .BYTE .BYTE 056573 056531 032770 030322 181 027512 016464 002056 001566 1s§ 027520 18 113760 030102 o§7s§e 006204 186 027532 }gg 027540 012737 000137 056751 031252 105764 040464 012737 }gg 027530 189 027544 1$: 000026 000207 031276 ASGN6: ASGN7: 190 027550 191 027552 001405 100010 193 027562 194 027564 195 027572 000407 012727 000403 056700 031276 056715 031276 18: 012737 000137 056607 031252 031276 2%: 012737 056776 031276 ASGNB: 192 027554 196 0275764 }gg 027602 199 027606 200 027614 000137 031252 3%: n s SEQ 0133 ::60 TYPE==OCTAL ASCI!I $:TYPE 2 DIGIT(S) ::SUPPRESS LEADING ZEROS TYPE TYPE JSR , COMMA "BLNKS1 éc TYPDRY MOV PC DRVPRM -naxe R4 WORD INDEX THE DRIVE'S ADDRESS LIMITS PACK $PACK(RO) ;SET COMMAND INDICATOR RTS PC *RETURN MOV JMP #NOTSAF ,ASNMSG ; "UNSAFE® MESSAGE ADDRESS ASNERR :T0 ERROR ROUTINE TSTB DRVTYP(R4) omwvnumv MOV #NOTRP,ASNMSG :ADDRESS Gf 'NOT RPO7' MSG ASL JSR MOVB ASGN4: . ASR BEQ BPL BR MOV BR MOV JMP MOV JMP stype v, STYPE 1 BLANK :TYPE DRIVE SERIAL NUMBER BLKADR(R&), neuun?<n4> 1% 2% 3¢ #NOTPRS ,ASNMSG t NUNTOFF ,ASNMSG ASNERR #NINLEV,ASNMSG ASNERR :DPB ADDRESS ‘MAKE R4 BYTE INDEX ‘BR IF NOT ‘BR IF DRIVE OFFLINE SEXIT :ADDRESS OF SEXIT 'NOT PRESENT' MSG :ADDRESS OF 'DRIVE OFFLINE' ;ADDRESS OF 'NON=INTERLEAVED® MESSAGE :TO ERROR ROUTINE :T0 FRROR ROUTINE MESSAGE (ZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 33 EN Sra 0134 KW11 CLOCK CHECK ROUTINE : :'D* COMMAND (ROUTINE TO DROP A DRIVE) & 027620 005004 7 027632 (01403 5 027622 ¢ 027606 8 0o7e3t 9 027636 10 027642 11 027650 12 0g7652 13 027660 14 027666 15 027670 16 Dare76 17 027700 18 027702 19 027704 000010 000101 111504 012703 136437 040550 001542 040850 040550 00154 03202 002056 001544 001417 146437 146437 006304 016464 006204 005303 001410 005204 20 027706 21 027710 22 027716 23 027722 26 037724 ¢s 26 27 28 027726 027726 29 027732 30 027736 31 027740 32 027742 33 027746 3, 027750 35 027756 013746 122715 001416 111506 13641 001404 116437 000411 37 027760 40 027774 41 030000 42 030002 43 030006 44 030012 38 027766 39 027772 45 030016 47 030022 030022 48 030026 000755 012737 004737 000766 000207 _ 000001 056630 031252 G 031276 #'A.(RS) 1% (RS) ,Ré& #.R ;START WITH DRIVE 0 *COUNTER :DROP ALL DRIVES ? sBR IF YES :GET DRIVE NUMBER “SET R3 FOR ONE DRIVE ATABIT(R4) ,ASNLST :DRIVE ASSIGNED ? ATABIT(R4) ,ASNLST :DELETE THE DRIVE FROM THE ASSIGNED LIST 3s :BR IF NOT ATABIT(R4) JAUTLST *DELETE DRIVE FROM AUTO ASSIGN LIST R4 :MAKE ADDR INTO A WORD INDEX ngADR(RA).DDRVS(Rk) :PUT ADDRESS IN DROP LIST 2%: DEC 3$: MOV 4%: RTS 040550 012737 056630 031276 108737 001410 004737 104401 104403 012637 000207 001542 000137 R& #8.,R3 R3 4% :ANY MORE DRIVES ? ‘BR IF NOT SUNTNOT,ASNMSG PC,ASNERR ;ADDR OF °'NOT ASSIGNED® MESSAGE ‘REPORT IT it i MOV 001542 2%: 1S18 024740 037327 001203 3s: JSR 2% :BR IF YES SALL STATISTICS ? (RS) ,R& ATABIT(R&),(SP) 1 ‘GET DRIVE NUMBER :IS THIS DRIVE ASSIGNED ? BR IF NO SUNTNOT,ASNMSG :ADDR OF ASNLST SANY DRIVE ASSIGNED ? 'DASN1S :tvPE .----- ........ . *TYPE *CONTINUING..." :g.asusnn 48 PC.STATPR "S$CRLF 057513 027122 ::PUSH ASNLST ON STACK g;ABIT(Ra).ASNLSf 1$%: 031252 ASNLST,=(SP) #'A, (RS) 001542 106401 M BITB SCMND: 001542 000101 040550 004737 000413 1$: (LR :'S" COMMAND (ROUTINE TO TYPE DRIVE PERFORMANCE SUMMARY) i 33 030030 005037 030102 éz 030034 DROPD: 012703 122713 "MSGCON 4s: ;EP)O.ASNLSI :GET DRIVE ASSIGN BIT °*NOT ASSIGNED® MSG :E;7$ ERROR MESSAGE ‘BR IF NO STYPE ALL STATISTICS PCR=LF ::POP STACK INTO ASNLST ;'T" COMMAND (POUTINE TO TEST A DRIVE) NEWASN: CLR JMP PACK ASSIGN sSET _*T' COMMAND INDICATOR ;G0 TO THE ASSIGN ROUTINC ;'R* COMMAND (ROUTINE TO DO SEQUENTIAL READ DATA) CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 33-1 F1N SEQ 0135 KW11 CLOCK CHECK ROUTINE 56 §/ 030040 ss 0300646 o1zr§7 000137 000001 027122 030102 go REDAPK: MOV JMP ;'W' 030052 g‘ 030060 012737 000137 177777 027122 030102 gg 67 030064 68 03CN70 99 030076 0 71 030102 #1,PACK ASSIGN ;SET "R* COMMAND INDICATO *ASSIGN THE REQUESTED DR xve COMMAND (ROUTINE TO DO SEOUENTIAL WRITE DATA) DATAPK: MOV JMP #-1,PACK ASSiGN ;SET *W' COMMAND INDICATOR *ASSIGN REQUESTED DRIVE ;'WI' COMMAND (ROUTINE TO DO WRITE DATA AND TEST A DRIVE) 116515 012737 000137 000000 000001 177776 027122 030102 WATPAK: MOVB PACK: MOV JMP #-2,PACK ASS TGN 1(RS), (RS) ;ADJUST DRIVE NUMBER ADDRESS .WORD 0 : TEMPORARY STORAGE FOR COMMAND INDICATOR SSET *WT' COMMAND INDICATOR :JUMP TO ASSIGN ROUTINE CZRJOAD RPO7 PERF EXER MACRO Vv04.00 1=JAN=-83 12:06:52 PAGE 34 kWil c~ocx CHECK ROUTINE . 1A SEQ 0136 1 ‘?23{‘"‘ 4 s ; ‘RO= DPB ADDRESS BEFORE CALLING THE ROUTINE § g 9 030104 030104 030106 030110 030112 10 030114 11 030120 12 030122 13 0301%4 010146 010346 010446 070546 005737 001073 010004 062704 000002 19 030144 062704 000002 21 030154 22 030156 gz 030162 005024 1462703 001374 000002 25 030164 062704 000026 27 030170 28 030174 29 030176 gg 030202 012703 005024 162703 001374 000062 113760 013701 001514 001514 36 osozga 113760 001512 37 030232 196360 000030 gs 030236 013760 001516 32 33 0302064 34 030212 RE TURN 1%: 2%: :SKIP OVER THE *SREG' CLEAR LOCAIIONS 'SYAIUS' - "SNEXT' ‘DONE CLEARING YET ? :BR IF NO BEGPAT,S$PATTC(RO) *PATTERN CODE SPATTC(RO) convear CODE T0 A TABLE INDEX BEGWC, SWRDL (RO) :BEGINNING WORD COUN NEG SWCNT(RO) MOVB 000020 000004 MOV MOV 000114 000024 - ;SKIP OVER "SFIRST', MIN/MAX ADRS LlHlTS AND °‘CYL, YRK SEC, FE1' LIMITS ;INITIALIZE SOME OTHER LOCATIONS conraLin1> sconubcao> BEGWC ,SWCNT(RO) ;INITIAL COMMAND CODE THE ACTUAL OP CODE ;OPERATION CODE ;VALUE FOR DATA IRANSFER SMAKE IT INTO 2°'S COMPLEMENT #256. ,$SSEC(RO) :INITIAL VALUE OF SE(TOR SIZE MOV BITB BEQ #1,8PASSC(RO) #1.$CODE(RO) 48’ :PRESET PASS COUNT 10 1 *HEADER COMMAND? :BR IF NOT ADD #2,8SSEC(RO) *ADD HEADER SIZE TO SECTOR SIZE 030310 030312 012605 012604 MOV MOV (SP)+,RS (SP)+ R4 ::POP STACK INTO RS :POP STACK INTO R4 030316 030320 012601 000207 MOV RTS (5P)+.R1 PC :PCP_STACK INTO Ri * TURN 815603 IN DPB MOVB ASLB MOV 000022 030314 LOCATION ;NUMBER OF LOCNS TO BE CLEARED 000030 000002 oS :BR IF NO l<‘NExt-$|ATUS>02 w3 oz as 28 IN DPB BEGCOD, scooe<ao> BEGCO 000022 Voo~ JNUMBER OF LOCNS TO BE CLEARED sCLEAR LOCATIONS "SCOMND*® = °*SCYL' ‘DONE CLEARING YET ? MOVB MOV 000400 062760 STACK STACK STACK STACK 000024 012760 22 8?8%?5 ON ON ON ON RETURNING FROM POWER FAIL ? ‘BRANCH IF YES ‘GET THE DPB ADDRESS sADDRESS OF FIRST LOCN TO BE CLEARED 0<§CVL-SC0HND>02 R3 cz as R1 R3 R4 RS ¢<SRPCS3-SDRVSN>02 R3 NUHBER OF LOCNS TO BE CLEARED .CLEAR LOCATIONS 'SDRVSN' - 'SRPCS3' IN DPB az as :DONE CLEARING YET ? 3s :BR IF NO 41 (%0256 000001 000001 CLR SUB BNE PWRFLG 4% ao.aa ::PUSH *:PUSH ::PUSH ::PUSH MOV CLR SUB BNE 3%: 001516 012760 132760 001403 MOV R1,=(SP) R3,=(SP) R&,=(SP) RS,=(SP) :DPB ADDRESS #<SDRVSN=$F IRST> R4 013760 4; 0:)264 43 030272 44 030300 CLR SUB #DPB,RO PC,CLRDPB ADD 000002 00000 MOV ADD 9 030244 005460 MOV MOV MOV MOV BNE 35 030216 116160 002076 000002 40 030252 JSR TST BNE MOV ADD 20 030150 012703 000114 26 : 0000C2 005024 162703 001374 MOV 040020 14 030130 012703 000012 }g 030142 : CLRDPB: 15 030134 16 030136 TO CLEAR THE DPB FOR THE ASSIGNED DRIVE MoV (SP)+,RS ..POP STACK INTO R3 sROUTINE TO GET ADDRESS LIMITS FRUM THE OPERATOR CZRJOAO RPO7 PERF EXER MACRO %04.00 1=JAN=-B83 12:06:52 PAGE 341 KW11 H1 SEQ 0137 CLOCK CHECK ROUTINE 50 51 gg sCALL: : : §§ ;RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 56 030322 57 030324 58 030326 59 030332 60 030340 61 0§0345 6% 030350 63 030356 65 030364 66 030370 67 030372 68 030400 69 030402 70 030406 ;; 030412 010346 010446 04737 06%760 103426 016060 0162ty 016020 005737 001004 016060 000402 9005060 005060 005060 78 030416 79 030422 105737 001074 80 030424 81 030430 82 030432 83 030436 84 030440 85 030444 86 030452 87 030460 88 030466 89 030474 90 030502 91 030510 3; 030514 005737 003071 005737 001066 016403 016063 016063 016063 016063 016063 016063 104401 004737 94 030520 016003 95 030524 96 030530 97 030532 98 030534 99 ogosao 016004 020304 003404 010360 010460 100 030544 101 030550 1o§ 030554 103 030556 104 030560 105 030564 106 030570 107 030574 108 030600 109 030602 016003 01600& 020304 003404 010360 010460 016003 016004 020304 003404 }}3 030610 010460 110 030604 010360 MOV JSR 000146 DRVPRM: MQY MOV 1%: JSR ADD 8(S MOV MOV MOV TST BNE MOV BR 2%: CLR 3s: CLR CLR 001150 ($: 030706 177777 000132 000150 000154 000152 001422 000134 000140 000144 000156 000136 000136 000142 001332 TST BGT TST BNE MOV MOV MOV MOV MOV MOV MOV TYPE JSR 001426 061604 000150 000150 000154 000154 000152 000152 060022 031110 000002 000010 000016 000024 000032 000040 000136 MOV 000134 000134 000136 000142 000140 000140 000142 000146 000144 000144 000146 TSTB BNE 5%: 6$: MOV (MP BLE MOV MOV #DPB,RO PC,DRVPRM ;:DPB ADDRESS *CALL ROUTINE R3,=(SP) :SAVE R3 R&4,=(SP) :SAVE Ré& PC,GETLMT ;GET ADDRESS LIMITS #-1,SFIRST(RO) :SEE IF FIRST TIME STARTED 48 :BR IF NOT CYLLMT(RO) ,MAXCYL(RO) ;LOAD MAXIMUM CYLINDER TRKLMT(RO) ,MAXTRK(RO) :LOAD MAXIMUM TRACK SECLMT(RO) ,MAXSEC(RO) :LOAD MAXIMUM SECTOR TSTANY ;ARE YOU TESTING ANYWHERE ON MEDIA ? . 2% ‘BR IF YES FE1(RO) ,MINCYL (RD) sRESET MINIMUM CYLINDER ADDRESS 3$ FINCYL (RO) ;CLEAR MINIMUM CYLINDER MINTRK (RO) ;CLEAR MINIMUM TRACK $AUTOB 7% ;RUNNING IN AUTO MODE :BR IF YES MINSEC (RO) ;CLEAR MINIMUM SECTOR CHGADR ;PROGRAM STARTED AT 200 ? 7% :BR IF YES DRVPAR ;CHANGE DRIVE PARAMETERS ? 7% :BR IF NO TABLE (R4) ,R3 ;PARAMETER TABLE ADDRESS CYLLMT(RO) ,2(R3) sLOAD CYLINDER LIMIT FOR MINCYL CYLLMT(RO) ,10(R3) sLOAD CYLINDER LIMIT FOR MAXCYL TRKLMT(RO) .16(R3) ;LOAD TRACK LIMIT FOR MINTRK taant(ao>.§a<a3) ;LOAD TRACK LIMIT FOR MAXTRK SECLMT(RO) ,32(R3) ;LOAD SECTOR LIMIT FOR MINSEC SECLMT(RO) ,40(R3) ;LOAD SECTOR LIMIT FOR MAXSEC LENTLMT :* ADDRESS LIMITS:® PC,PARENT ;GET THE DRIVE'S PARAMETERS MINCY! (RO),R3 MAXCY' (RO) ,R& R3,.R4 5% R3,MAXCYL(RO) aa.nxucvb(no) ;STORE MINCYL VALUE ;STORE MAXCYL VALUE :1S MIN. LESS THAN OR EQUAL TO MAX. :BR IF YES ;SWAP MIN. TO MAX. ;SWAP MAX. TO MIN. MOV MOV CMP BLE MOV MOV MOV MOV CMP BLE MINTRK(RO) ,R3 MAXTRK(RO) ,Ré R3,R4 6% R3,MAXTRK(RO) R4, MINTRK(RO) MINSEC(RO) ,R3 MAXSEC(RO) ,R& R3,R4 7% ;STORE MINTRK :STORE MAXTRK ;1S MIN. LESS :BR IF YES :SWAP MIN. TO :SWAP MAX. TO :STORE MINSEC ;STORE MAXSEC ;1S MIN. LESS :BR IF YES MOV R4, MINSEC(RO) ;SWAP MAX. TO MIN. MOV ? R3,MAXSEC(RO) :SWAP MIN. ? VALUE VALUE THAN OR EQUAL TO MAX. ? MAX. MIN. VALUE VALUE THAN OR EQUAL TO MAX. ? TO MAX. (2 RJOAO RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 34=2 KW 11 In SEQ 0138 CLOCK CHECK ROUTINE 114 030614 115 030620 005737 001016 117 030630 118 030632 119 030640 10300 016060 026060 116 0306 S 120 030646 }%1 030650 ogeosg 103003 016060 001422 7%: 000136 000156 000156 000134 000136 000156 000150 000134 }gg 030704 116060 116060 012504 012603 000142 000146 000011 000010 TSTANY 9% BHIS MOV CMP 8% FE1(RO) ,MINCYL (RO) MAXCYL(RO) ,FET(RO) CMP 8%: 1z§ 030656 016060 000136 000012 9%: 127 030664 153 ogoe7z 129 030700 030702 ST BNE 000207 BHIS MOV MOV MOVB MOVB MOV MOV RTS :ARE YOU TESTING ANYWHERE ON MEDIA ? ‘BR IF YES MINCYL’RO),FE1(RD) 9% CYLLMT(RO) ,MAXCYL(RO) MINCYL(RO),$CYL(RO) " ;1S MIN. CYLINDER < 1ST FE CYLINDER ? ‘BR IF NO *RESET MINIMUM CYLINDER ADDRESS SIS MAX. CYLINDER < 1ST FE CYLINDER ? :BR IF N ;RESET MAXIMUM CYLINDER ADDRESS sINITIAL CYLINDER VALUE MINTRK(RO).$TRK(RO) SINITIAL MINSEC(RO),S$SEC(RO) SINITIAL (SP)+,R4 ::POP STACK INTO (SP)+.R3 1:POP STACK INTO PC *RETURN TRACK VALUE SECTOR VALUE R& R3 }gg ‘@23{1N5 TO GET THE ADDRESS LIMITS FOR THE CURRENT DRIVE TYPE }%‘é $ }gg ‘RO = DPB ADDRESS BETORE CALLING THE ROUTINE 138 030706 139 140 141 142 143 144 145 146 147 148 149 030706 030710 030712 030720 030726 030734 030742 030744 030752 030754 030762 030770 005001 012760 012760 012760 012760 111001 122761 001414 012760 012760 012760 031004 012601 }gg 8%?552 152 031006 GETLMT: 010146 012760 000207 001057 001060 000035 000041 000156 000150 000154 000152 000005 040464 001166 001166 000037 000061 000156 000150 000154 000152 - JSR MOV CLR MOV MOV MOV ¥V MOVB CMPB BEQ MOV MOV MOV MOV MOV RTS PC,GETLMT :CALL ROUTINE R1,=(SP) ::PUSH R1 ON STACK #49..SECLMT(RO) :GET SECTOR LIMIT (SP)+ R1 ;:POP STACK INTO R? R1 :START FRESH #559.,FE1(RO) :GET ADDRESS OF 1ST FE CYLINDER #560. .CYLLMT(RO) :ASSUME CYLINDER LIMIT FOR RPO7 #29..TRKLMT(RO) ;ASSUME TRACK LIMIT " #33..SECLMT(RO) :ASSUME SECTOR LIMIT (RO) ,R1 :GET DRIVE NUMBER #5,DRVTYP(R1) :IS DRIVE AN RPO7 ? 1% ‘BR IF YES #630.,FE1(RD) :GET ADDRESS OF 1ST FE CYLINDER #630.,CYLLMT(RD) sGET CYLINDER Llnll FOR RPQ7+ #31.,TRKLMT(RO) ;GET TRACK LIMIT - PC *RETURN CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 35 KW11 CLOCK CHECK ROUTINE ! n SEQ 0139 1 g :ROUTINE TO GET THE DRIVE SERIAL NUMBER FROM RPSN REGISTCR :THIS NUMBERS CONTAINED IN THE REGISTER ARE ONLY THE & LSD'S OF 5 : g :RO = DPB ADDRESS BEFORE CALLING THE ROUTINE : :SEE{AL NUMBER. 9 ; 10 031010 031010 031012 031014 031016 11 031020 12 031022 13 031026 14 031032 15 031036 16 031040 17 031042 18 031044 19 031046 010002 004737 012702 016001 005005 006101 006105 006101 006105 20 031050 21 031052 22 0310564 23 031056 24 031060 006101 006105 006101 006105 062705 26 031070 27 031072 28 031074 29 031076 031100 031102 031104 30 031106 005200 005302 003360 012605 012602 012601 012600 000207 25 031064 GETID: 010046 010146 010246 010546 110560 262 000004 216 000060 000160 1%: MOV JSR #DPB,RO PC,GETID THE :DPB ADDRESS :CALL ROUTINE MOV MOV MOV MOV RO, =(SP) R1,=(SP) R2.=(SP) RS.=(SP) ::PUSH $3PUSH *3PUSH $:PUSH ROL ROL ROL ROL ADD R1 RS R1 RS #'0,RS ;MAKE IT ASCII RO R2 1% (SP)+,RS (SP)+.R2 (SP)+.R1 (SP)+.R0 PC SGET NEXT INDEX FOR DRIVE SERIAL NUMBER PALL DIGITS TYPED? ‘NO == BRANCH $;POP STACK INTO RS $:POP STACK INTO R2 1:POP STACK INTO R1 1:POP STACK INTO RO *RETURN MOV JSR MOV MOV CLR ROL ROL ROL ROL MOVR INC DEC BGT MOV MOV MOV MOV RTS D RO,R2 PC . SVRHXX 2R $RPSN(R0) ,R1 R R1 RS R1 RS RS,$DRVSN(RO) RO R1 R2 RS ON ON ON ON STACK STACK STACK STACK :GET INDEX TO DPB *SAVE ALL REGISTERS :FOUR DIGITS TO STORE *SERIAL NUMBER : SPUT THE NEXT DIGIT *INTO RS :SAVE DRIVE SERIAL NUMBER DIGIT CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 36 KN SEQ 0140 PARAMETER ENTRY ROUTINE 1 g .SBTTL PARAMETER ENTRY ROUTIRNE [PARAMETER ENTRY ROUTINE S 6 : ; MOV JSR WADR,R3 PC,PARENT ;PARAMETER TABLE ADDRESS :GET THE PARAMETERS PARENT: MOV R3,=(SP) :SAVE THE PARAMETER TABLE ADDRESS 18: MOV BEQ (R3)+,28 78 :ADDRESS_OF PARAMETER NAME :BR_IF AT END OF TABLE 0 (R3)+,R2 (R3)+,RS (R5),=(SP) PC,$$82D 8 031110 010346 10 031116 11 031122 012337 001451 13 031126 14 031130 15 031132 16 031136 17 031136 000200 012302 012305 011546 004737 033332 .WORD MOV MOV MOV JSR 20 031146 104401 056531 TYPE LBLNKSI 22 031156 23 031162 24 031164 25 031166 26 031172 27 031176 031200 031202 031204 031206 031210 104401 104411 012601 005737 001021 004537 031116 031246 031220 031214 031220 056531 TYPE RDLIN MOV ST BNE JSR ik 7% 4$ 38 4$ ,BLNKS1 9 031112 1 031124 18 031142 19 21 031152 031212 28 031214 29 031216 30 031220 31 031226 32 031230 33 031232 34 031234 35 031236 36 031242 37 031244 38 031246 9 031250 005037 001334 031126 10401 004737 104401 031232 010215 000737 104401 162703 000732 28: 032346 033174 3: 010215 000404 005037 011603 000724 005726 000207 TYPE 001334 000006 4$: 5$: 001334 TYPE JSR 056567 060103 (LR 68: 7%: CFLAG \ :CLEAR THE "CONTROL C' FLAG TYPE THE PARAMETER NAME :ADDRESS OF PARAMETER NAME TEXT MAXIMUM PARAMETER VALUE :ADDRESS OF PARAMETER :CURRENT VALUE OF PARAMETER :CONVERT IT TO DECIMAL PC,SUPRSL STYPE IT (LEFT JUSTIFIED) STYPE THE CURRENT VALUE OF STYPE 1 BLANK ,QUES THE PARAMETER P2 FTYPE 1 BLANK READ THE KEYBOARD xupur ASCII STRING ADDRESS :WAS (~C) TYPED? :BR IF IT WAS :CHECK THE DIGIT(S) :CARRIAGE RETURN ONLY ENTERED :PERIOD ONLY ENTERED :ILLEGAL INPUT :TERMINATED WITH A CARRIAGE RETURN :TERMINATED WITH A *." (SP)+,R1 CFLAG 68 RS5,CK.DIG 5% MOV Bk R2.(RS) 1} :TERMINATED WITH A :MOVE NEW VALUE T0 PARAHETER LOCATION {GET MORE PARAMETERS SUB #6.R3 :DECREMENT THE TABLE POINTER MOV R2,(RS) BF 1} TYPE BR Br (LR MOV TSI RTS ,BADENT : 'BAD_ENTRY 18 7% CFLAG (SP),R3 (SP)e PC :TRY AGAIN :NEW_VALUE ~ SEXIT :CLEAR THE "CONTROL C' FLAG ! :RELOAD THE PARAMETER TABLE ADDRESS :TRY_AGAIN coanec: THE STACK POINTER :RETURN CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 37 PARAFCTER ENTRY ROUTINE 1 ; MOV 2 : RETURN 8 7 031252 10 031266 031270 03127§ 03127 11 031274 12 031276 }2 031300 : 104401 104401 104401 010446 001203 ASNERR: 056567 056601 104403 902 000 104401 000000 ASNMSG: 000207 15 16 17 20 031302 005037 043460 26 031312 27 031320 146437 146437 040550 040550 JSR TYPE TYPE TYPE RG,=(SP) TYPOS BYTE .BYTE TYPE 2 0 ::TYPE DRIVE NUMBER ..GO TYPE"OCTAL ASCII :TYPE 2 DIGIT(S) :SUPPRESS LEADING ZEROS ?vps SPECIFIC MESSAGE RTS PC .WORD 0 ::SAVE R4 FOR TYPEOUT :MESSAGE ADDRESS 005004 111004 : RE TURN DROP: CLR PERM BICB Bi(2 ATABIT(R4),ASNLST ATABIT(Rk)CAUTLST 001542 032020 CLR MOVB 006204 010446 MOV 031360 031362 031363 36 031364 gg 031370 104403 002 000 104401 000207 TYPOS BYTE BYTE TYPE RTS 104401 001544 001203 057561 057616 056601 001203 1$: R (RO),R& ASL MOV TYPE TYPE TYPE ao ooavs(aa> ,$CRL .oaopuc "MSGON ASR R4 TYPE 23 DRVMSG R4, =(SP) :CLR PERMENANT ERROR FLAG :CLEAR R4 FOR DRIVE NUMBER :MOVE DRIVE NUMBER TO Ré4 ;REMOVE DRIVE FROM ASSIGNED LIST *DELETE DRIVE FROM AUTO ASSIGN LIST ;MAKE DRIVE NUMBER INTO A TABLE INDEX :PUT DRIVE IN DROP LIST sTYPE '?FATAL OR EXCESSIVE ERRORS' :TYPE "ON' :TYPE *DRIVE' :DRIVE NUMBER 1:SAVE R4 FOR TYPEOUT ::TYPE DRIVE NUMBER 2 0 LSCRLF PC 160 rvpe--ocrAL ASCII $:TYPE 2 DIGIT ..suppnsss LEADING ZEROS :CR=LF ;ROUTINE TO DROP DRIVE IF ERRORS BECOMES EXCESSIVE 41 031372 ag 0314200 032777 001006 000020 147554 001456 000102 52 031412 gz 031416 000137 000207 031302 gz :CR=LF MOV 3% 031354 43 031402 4 031410 ,SCRLF 3°7° :TYPE 'DRIVE' 006304 010064 104401 104401 104401 35 031356 #MESADR,ASNM SG ;ERROR MESSAGE ADDRESS PC,ASNERR .QUES "DRVMSG 28 031326 29 031330 30 031334 31 031340 32 031344 33 031350 SEQ 0141 :DROP DRIVE IF A FATAL ERROR OCCURS PCALL: ; JSR PC,DROP }3 24 031306 25 031310 n :Exonur ASSIGN/DROP ERROR MESSAGE i 8 031256 9 031262 ’ 023760 101002 ABNRML: BIT BNE 1%: CMP BHI JMP RTS #5404, ASWR 1% sSEE IF SWITCH & SET R IF IT'S SET DROP PC DROP THE DRIVE :RETURN MAXER,STOTAL (RO)" :CHECK TOTAL ERROR VALUE 1% :BR IF ERRORS DO NOT EXCEED MAX ;ROUTINE TO CHECK FOR END OF PASS AND END OF TEST 2:06 CZRJOAO RPO7 PERF EXER MACRO VO04.00 1-JAN-83 12:06:52 PAGE END OF PASS ROUTINE 1 .SBTTL E3 38 11 014 SEQ a 0142 END OF PASS ROUTINE R s 'INCREMENT THE PASS NUHBER (3PASS) ;*IF THERES A HONXTOR GO TO IT ;*1F THERE ISN'T JUMP TO RTURN 031420 031420 010446 031454 031430 105737 001410 031440 001110 031450 000441 031452 031460 031462 031470 031472 031476 031502 031506 031422 031432 031442 031512 111004 032020 156437 040550 032020 026037 103435 032777 001031 104401 104401 104401 104401 000114 001474 000020 147464 146437 010064 105737 001062 005237 031544 031552 042737 000452 031554 031562 031564 031570 031574 031600 031604 031610 031614 031620 031624 031630 031632 001150 040550 031532 03153¢ 031540 1$: 136437 031520 006304 031522 031526 $EOP: 005237 032777 001022 104401 104401 104401 104401 104401 004737 104401 104401 004737 010346 010004 031634 062704 031640 012703 031644 005024 031646 162703 031652 001374 031654 012603 031656 005260 001203 001203 057327 057417 040550 2%: 001542 001214 000400 147372 $AUTOB 2% ;RUNNING IN AUTO MODE ? ‘BR IF NO BNE 6$ :BR IF YES BR 3s o§6145 057321 057345 025042 5%: ATABIT(R4),AUTLST :1S DRIVE ALREADY ASSIGNED TO AUTO LIST ? ATABIT(R4),AUTLST ;ADD DRIVE TO AUTG ASSIGN LIST ASL R&4 BNE INC 7% $DEVCT ‘BR IF NO *INCREMENT DEVICE COUNT BIC BR #100000,8PASS 7% :AVOID NEGATIVE NUMBER BIT BNE TYPE TYPE TYPE TYPE TYPE JSR TYPE TYPE JSR 48: :MOVE DRIVE NUMBER $PASSC(RO) ,PASSES ;SEE IF AT END OF TEST 3s :BR IF NOT #SW04, aSWR STYPE END OF TEST MESSAGE (SW04=1) ? 33 ‘BR IF NO ,SCRLF tCR=-LF .SCRLF $CR=-LF DASH13 'IYPE lecccccccccces . .MSGEOT TYPE "END OF TEST-e=eecccececccaaes EOT* INC 3%: (RO) R4 CMP BLO BIT BNE TYPE TYPE TYPE TYPE BICB 001203 001203 057327 057371 001203 000114 TSTB BEQ MOV TSTB 100000 000002 :SAVE Ré& BISB 001216 000036 000016 R&,=(SP) MOVB BITB 001544 001542 001214 MOV MOV MOV ADD MOV CLR SUB BNE MOV INC ATABIT(R4), AsuLsi ao DDRVS(R4) ASNLST $PASS #5W08,aswR 4$ ,SCRLF ,SCRLF .DASH13 .MSGEOP .SCRLF PC.ST;HE DASH MSGSUM PC,ONESUM R3,=(SP) RO.R& :DELETE DRIVE FROM ASSIGNED LIST MAKE DRIVE NUMBER INTO TABLE INDEX :PUT BLOCK ADDRESS INTO DROP LIST SALL DRIVES ARE DROPPED ? P INCREMENT THE PASS COUNT ;INHIBIT END OF PASS TYPEOUT (SW08=1) ? ‘BR IF YES $CR=-LF tCR-LF STYPE 'eeeocccccccas ¢ .rvpe YEND OF PASS' PCR-LF tvps ELAPSED TIME STYPE ‘eeeeSTYPE 'SUMMARY' STYPE ONE DRIVE SUMMARY :SAVE _R3 oax E'S BLOCK ADDRESS #SRDPAS ,RG ADD THE STARTING ADDR OF SECTIONS TO CLEAR 0<SOPERC-SRDPAS>02 R3 :NUMBER OF LOCNS TO BE CLEARED ;CLEAR LOCATIONS 'saopAs' - 'SOPERC' IN DPB az as *DONE CLEARING YET ? 5% ‘BR IF NO (SP)+,R3 *RESTORE R3 $PASSC (RO) *INCREMENT THE PASS COUNT CZRJOAO RPO7 PERF EXER MACRO VO04.00 1-JAN-83 12:06:52 PAGE 38-1 END OF PASS ROUTINE 031662 10 001150 021666 83}2;2 00 8% 031700 031702 01 00 031704 031710 00 00 032020 021716 00 001214 031712 001542 00 001216 031722 031730 031732 03173 031736 031740 031742 04 00 00 00 01 00 03 100000 031750 031752 031754 031756 031760 031762 031764 031764 . 031766 00 031744 01 3 031770 000042 177776 & 031774 S 032000 001100 001212 7 032010 024514 6 032004 aunnxnc IN AUTO MODE ? 7%: MOV RTS (SP)+,R4 PC *RESTORE R& *RETURN 8s: INC BNE AUTLST 8$ c;eun AUTO ASSIGN LIST FOR NEXT PASS AND :WAIT FOR INC $PASS ..1~cnenenr THE PASS NUMBER 032020 BEO ggg INC BIC DEC $EUPCT: .WORD BGT MOV $ENDCT: .WORD $EOPCT $GET42: MOV BEQ RESET $ENDAD: JSR NOP NOP NOP $DOAGN: JMP SRTNAD: .WORD RTURN: CLR 7% SENLST.AUTLST SDEVCT #100000,8PASS (PC)+ 1 $DOAGN (PC)+,a(PC)+ 1 ane2, R0 $DOAGN PC, (RO) ‘BR IF NO gavi AL%SDRIVES COMPLETED PASS IN AUTO MODE ? : INCREMENT oevxce COUNT ::DON'T ALLOW A NEG. NUMBER ::LOOP? ::YES ::RESTORE COUNTER ;:GET MONITOR ADDRESS $:BRANCH IF NO MONITOR :2CLEAR THE WORLD :3G0 TO MONITOR ::SAVE ROOM ::FOR ssACTN A(PC)+ RTURN : :RETURN PS sSET PRIORITY TO 0 PC,STKINT ‘MAKE SURE KEYBOARD INTERRUPT AND MOV INC #STACK,SP $TESTN JSR PC.CKCLK JSR AUTLST: }% JMP MAIN .WORD O *RESTORE STACK S INCREMENT THE TEST NUMBER IN THE MAIL BOX SSYSTEM CLOCK ARE STILL ON. ‘RETURN TO LOOP ;AUTO ASSTGN LIST (USED IN AUTO RUN MODE :?RUZINE TO GET THE REMAINDER OF THE RANDOM NUMBER +CALL: 14 15 : : : }9 18 032022 0 20 032032 21 032036 22 032040 23 032042 0 0O 0 0 g 032046 $AUTOB 006340 }2 032020 14 SEQ 0143 TSTB 033430 g 032014 19 032026 6$: N 0 037226 037224 MOV JSR RETURN GETREM: MOV MOV MCV JSR MOV ST 032046 0 RTS NUMBER,RS PC,GE TREM ;:DIVISOR INTO RS :REMAINDER IS IN RS $LONUM, =(SP) :STORE RANDOM NUMBER ON THE STACK FOR DIVIDE RS,=(SP) PC solv (SP)+, (SP)+ :PUT THE DIVISOR ONTO THE STACK onvxoe THE RANDOM NUMBERS PUT THE REMAINDER INTO RS SADJUST THE STACK POINTER $SHINUM, =(SP) PC SUPPER PART 39 LSBTTL INTEGER DIVIDE ROUTINE 28 :.'..lt..t"t.'0'.""".'Oi'l"'ltfilt.!t...t.ll."t"tt't..l..". 29 S*THIS ROUTINE WILL DIVIDE A 32-BIT TWO'S COMPLEMENT INTEGER —4 0 fl"_ SEQ 0144 ;*DIVIDEND BY A 16=BIT TWO'S COMPLEMENT INTEGER DIVISOR GIVING i*A 16=BIT TWO'S COMPLEMENT INTEGER QUOTIENT AND A 16=BIT REMAINDER. ;+DIVISION WILL BE Pearonneo SO THAT THE REMAINDER IS OF THE ::g:rf SIGN AS THE DIVIDEN v MOV 1OW DIVIDEND,=(SP) e MOV DIVISOR,=(SP) e MOV HIGH oxvxoeND,=(SP) ::THE HIGH DIVIDEND MUST BE < 1/2 ::AS LARGE AS THE DIVISOR JSR RETURN PC,$DIV i STACK NO_ERROR OVERFLOW DIVIDE BY ZERO i +2 QUOT IENT ALL ZEROS ALL ONES v e e T0P ::QUOTIENT & REMAINDER ARE ON THE STACK REMAINDER ALL ZEROS ALL ONES . S#NOTE: O O NIV UV B = OVRNFVNSWN=OO 2N B 12 RPO7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 38-2 DIVIDE ROUTINE 62 032046 032050 032054 032056 032062 032056 032070 032072 032076 032 032 032 032 104412 016605 005004 016602 016603 005000 005001 004737 010166 010366 104413 012616 000207 000026 $DIV: THIS ROUTINE WILL LINK TO THE DIVISION SUBROUTINE SAVREG MOV CLR MOV 000030 000032 MOV CLR CLR JSR MOV MOV RESREG MOV RTS 032170 000030 000032 .SBTTL ('M.DPID*). :SIiORE RO = RS 26(SP) RS :DIVISOR ‘OTHER DIVISOR WORD u PER DIVIDEND WORD SO(SP) R2 32(SP).R3 *LOWER DIVIDEND WORD RO R1 PC,M.DPID R1.30(SP) R3.32(5P) CLEAR OTHER DIVIDEND REGISTERS ;G0 TO THE DIVIDE ROUTINE *REMAINDER ON THE STACK TQUOTIENT ON THE STACK ‘RESTORE RO = RS ‘MOVE RETURN UP THE STACK (SP)+, (SP) PC DOUBLE DIVIDE ROUTINE 3232222222222 020022 2200222222 23R 2R R R RRRRRRRRRR0) .'YHIS ROUTINE WILL DIVIDE A 32-BIT TWO'S COMPLEMENT INTEGER .'DlVIDEND BY A 32-BIT TWO'S COMPLEMENT INTEGER DIVISOR GIVING 16-B1T TUO S_COMPLEMENT INTEGER QUOTIENT AND A 32-BIT REMAINDER. s*DIVISION WILL BE PERFORMED SO THAT THE REMAINDER !S OF THE ;+SAME SIGN AS THE DIVIDEND. i* MOV LOW DIVIDEND,=(SP) i i MOV MOV LOW DIVISOR,=(SP) H1GH DIVISOR, = (SP) i MOV HlG DIVIDEND,=(SP) JSR PC,$DBDIV X RETURN || meees STACK NO ERROR i i TOP SEeREREe® +2 +4 REMAINDER it i i i X ‘t REMAINDER QUOT [ENT ::THE HIGH DIVIDEND MUST BE < 1/2 ::AS LARGE AS THE DIVISOR ::QUOTIENT & REMAINDER ARE ON THE STACK OVERFLOW 22090909092 eeeeeess ALL ZEROS ALL ZEROS ALL ZEROS 8323 DIVIDE BY ZERO S eaeoeoesmemes e s ALL ONES (MSD) ALL ONES (LSD) ALL ONES : THIS ROUTINE wILL LINK TO THE DIVISION SUBROUTINE ('M.DPID*). CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 38-3 DOUBLE DIVIDE ROUTINE 87 88 032114 89 032116 90 032122 9 0351 6 9; 032132 93 032136 9% 03%140 95 032142 96 032146 104412 016604 016605 01660§ 016603 005000 005001 004737 010066 }85 032166 000207 97 98 99 100 032152 03%156 032162 032164 010166 01036g 10441 012616 ooooge 000030 000032 000034 032170 000030 000032 000034 $DBDIV: SAVREG MOV MOV MOV MOV CLR CLR JSR MOV MOV MOV RESREG MOV RTS SEQ 0145 gotsp).na 0(SP) 'RS 32(59).n§ 34(SP) R RO R1 PC,M.DPID RO.30(SP) R1.32(5P) R334 (SP) (SP)+, (SP) PC :STORE RO = RS *HIGH DIVISOR WORD 1LOW DIVISOR WORD *UPPER DIVIDEND uono :LOWER DIVIDEND WORD :CLEAR OTHER DIVIDEND REGISTERS ;60 TO THE DIVIDE ROUTINE ‘REMAINDER ON THE STACK (M5D) *REMAINDER ON THE STACK (LSD’ *QUOTIENT ON rn; STACK *RESTORE RO = R ‘MOVE RETURN UP THE STACK }82 .SBTTL DOUBLE PRECISION DIVISION SUBROUTINE 105 }89 sCALL: : JSR 108 ; DIVIDEND = RO-R1-R2-R3 (RO=MSD) }}5 :RETURN 113 : }(1)8 : }}g 116 117 118 119 : 03 03 03 03 012746 010446 010546 005466 000040 121 03 122 03 005666 061601 000002 066600 000002 120 03 123 03 124 032216 125 03 126 03 127 03 128 032230 129 032232 130 03 131 0 135 0 133 0 005416 005500 103445 005046 000002 006103 006102 006101 M.DPID: MOV MOV MOV NEG 137 0 066600 000004 005516 00404 RO :PERFORM THE INITIAL SUBTRACTION M."P50 -(_P) :IF CARRY THEN OVERFLOW HAS OCCURRED STHIS IS A LONGER LASTING CARRY BIT ADD BCS CLR R3 R2 R1 RO asP ADD ADC 2(SP) .R1 RO ADC ADD asP ADC asP M.DP42: ADC RS,R1 RO RG,RO asP . S1F NO = "'CARRY"* INDICATOR “‘CARRY'* THEN ADD ELSE SUBTRACT *CLEAR UP FOR NEXT TIME ; 4(SP) ,RO: <= M.DP42 ADD :TEST asP BR 060400 005516 2(SP) RO M.DP41 14; 0 0 2(SP) asP,R1 BEQ M.DP41: ADD ADC 143 ;COUNTER FOR DIVISION CYCLES *HIGH ORDER :LOW ORDER DIVISOR TO THE STACK *FORM NEGATIVE ADC 60501 005500 005516 - SVERSION OF THE DIVISOR 139 0 140 0 141 0 (RO=MSD) aspP SBC ADD CLR 000002 #40,=(SP) R4, =(SP) RS.=(SP) 205P) = RO-R1 = R2-R3 (R2=MSD) NEG 005016 066601 005500 138 0 REMAINDER AFTER D QUOTIENT AFTER DI 006100 005716 134 0 135 0 136 0 DIVISOR = R&=RS (R&=MSD) M.DP40: ROL ROL ROL ROL ST 001410 PC,M.DPID :ADD =(DIVISOR) SSET "'CARRY ;ADD #(DIVISOR) SSET :SET z) "'CARRY "‘CARRY » D 12 CZRIOAO RPO? PERF 3 EXER MACRO V04,00 1-JAN-83 12:06:52 PAGE 38-4 SEQ 0146 —_Oouwvwu-rEvavavwJda>uvma>uwy w5 >4=ZYe1etW o ( o = ] o ( — = ] o O o —STWVOMNOCONMIWNONOO [elelelelelalelelelelelelelelelelele] OCO0O0O0O0O~O0O0ODOCO00O N o . O Vo Oy _=b 2AXO-~WE g ¥V[ L OoOwoWNlAoWTlAoIOdNaANOdNTIolINmoIlVnonlmOondINoOmoTAdOo0OdooTVoTlOgTNlTTNSL=To DOUBLE PRECISION iON DIVISION SUBROUTINE = (o=)a "Smrars 1v A) - gv- —-—LxaoxEX 2<0a OWo-[@4V«o ew <w»nOa [+ o4 CZRJOAO RPO7 PERF EXER MACRO V04,00 1-JAN-83 12:06:52 PAGE 39 SUPRS = TYPE ASCIZ, REPLACE LEADING 0°'S WITH BLANKS 1 .SBTTL SEQ 0147 1 SUPRS = TYPE ASCIZ, REPLACE LEADING 0'S WITH BLANKS % .SBTTL ‘ ::t'ttttttt't'l""""""""'t'ttQt"'t."i.t"tt"""ttt'QQ' 5 sCALL: - ; 9 : g 3 }? - ; 1; 032346 010046 14 032354 005037 13 g 032350 }g 032360 016500 000405 17 032362 010046 19 032370 010037 18 032364 20 032374 21 032374 016600 22 032376 23 032400 24 032406 25 032406 26 032412 27 032414 28 032416 105710 001406 122710 001006 112720 000770 005300 112710 30 032426 31 032430 32 032434 33 032436 34 032440 35 032442 36 032444 001002 010037 104401 000000 012600 012616 005207 000004 032436 032436 :;FIRST ADDRESS OF ASCIZ STRING MOV #NUMADR,=(SP) :;FIRST ADDRESS OF ASCIZ STRING RO,=(SP) ;SAVE RO JSR CLR BR SUPRS: SUPR1: 1s: 000040 29 032422 005737 032436 #NUMADR,=(SP) JSR MOV 000060 000060 MOV SUPRSL: MOV 032436 000004 SUPRSL =TYPE ASCIZ, LEFT JUSTIFY 28: 38: 4$: SUPR2: MOV PC,SUPRS PC, SUPRSL 4($P) RO SUPR2 SUPR1 RO,={SP) :SAVF RO RO, SUPR2 SGET POINTER FOR TYPING MOV 4($P) RO 1STB BEQ CMPB BNE MOVB BR DEC MOVB (RO) 2 #'0,(RO) 3s #40,(RO)+ 18 RO #°'0, (RO) BNE MOV TYPE .WORD MOV MOV RTS 43 RO, SUPR2 MOV ST ‘GET POINTER TO MESSAGE SUPR?2 O (SP)+,RO (SP)+, (SP) PC ‘GET POINTER TO MESSAGE :TEST FOR TERMINATOR SYES b SIS THIS A ''0"* ? *NO . . SREPLACE IT WiTH A "BLANK INEXT CHAR, :BACKUP 1 :MAKE IT 0 SLEFT JUSTIFY ? :NO SYES ;RESTORE RO *RESTORE STACK CZRJOAO RPO? PERF EXER MACRO V04 oo -JAN-83 12:06:52 PAGE 40 F 12 SEQ 0148 - TYPE ASCIZ, REPLACE LEADING 0°'S WITH BLANKS 1 .SBTTL = TYPE ASCIZ, REPLACE LEADING o S WITH BLANKS % .SBTTL $SUPRL = TYPE ASCIZ, LEFT JUSTIFY ‘ ::t"l"Q.."."""""""""'!Ql'.".tt"t't't't".""."Q" s . 5 :THIS ROUTINE IS SAME AS 'SUPRSL' AND 'SUPRS®, EXCEPT THAT [T 3 tcliwc THE TRAP CALL °*DISPLY', INSTEAD OF °*TYPE®. 7 *WILL SUPPRESS THE ERROR TYPEOUT 10 #NUMADR,=(SP) :FIRS) ADDRESS OF ASCIZ STRING : MOV #NUMADR,=(SP) :FIRST ADDRESS OF ASCIZ STRING RO,=(SP) 4($P) RO ;SAVE RO ‘GET POINTER TG MESSAGE }g : 010046 016600 53 032460 000405 21 032462 22 032464 010046 016600 18 0324564 23 032470 26 032474 25 032474 26 032476 27 032500 005037 010037 105710 001406 122710 28 032504 29 032506 001006 112720 31 032514 32 032516 005300 112710 3, 032526 35 032530 36 032534 37 032536 38 032540 39 032542 001002 010037 104414 000000 012600 012616 30 032512 000770 33 032522 40 032544 005737 000207 000004 032536 000004 032536 000060 032536 032536 JSR JSR $SUPRL: MOV MOV CLR BR PC,$SUPRS PC, $SUPRL - $SUPR? $SUPR1 $SUPRS: MOV MOV RO,=(SP) 4($P) RO :SAVE RO ‘GET POINTER TO MESSAGE $SUPR1: 1%: 1STB BEQ (RO) 2% ;TEST FOR TERMINATOR SYES - cao.<ao>o *NO . = SREPLACE IT WITH A "BLANK RO #'0,(RO) :BACKUP 1 ‘MAKE IT 4% RO, $SUPR2 : MOV C(MPB BNE MOVB 000040 000060 ruxs IS ACCOMPLISHED BY MOV = 16 032446 17 032450 cw13=1, : }1 1% IF 28: 3s: B8R DEC MOVB ST BNE MOV 48: DISPLY $SUPR2: .WORD MOV MOV RTS RO, $SUPR2 #'0,(RO) 1% ssupaz 0 (SP)+,R0 (SP)+. (SP) PC SGET POINTER FOR TYPING xs THIS A *'0" ? INEXT CHAR. .LEFT JUSTIFY 2 YES STYPE, UNLESS SW13=1 ;RESTORE RO *RESTORE STACK CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 41 $SUPRL = TYPE ASCIZ, LEFT JUSTIFY 61 ; SEQ 0149 1 ’?23{'"5 TO REPLACE LEADING ZEROS IN A NUMERIC STRING WITH SPACES g E f& :: - MOV JSR #ADR =(SP) RS,REPLZ ;ADDRESS OF NUMBER (IN ASCII) ;REPLACE PRECEDING ZEROS WITH BLANKS LMORD N :*N' IS NUMBER OF DIGITS TO BE TYPED 7 : MOV #ADR,=(SP) ;ADDRESS OF NUMBER (IN ASCII) 18 : .WORD N :*N' IS NUMBER OF DIGITS TO BE TYPED INC FILLO :LEAVE 2ERO'S MOV 4($P) RO *ADDRESS OF NUMBER TO RO BNE CMPB 3 #'0,(RO) BR 1S18 BNE DEC MOVB MOV TSTB BNE DEC SUB 18 (RO) 3g RO #°0, (RO) 4(SP),RO (RO)+ 4% RO (RS)+,R0 8 ; }1 032546 005237 032654 14 032554 016600 000004 16 032564 17 032566 001014 122710 1§ 032552 010946 15 032560 18 032572 19 03257¢ 20 032600 21 032602 22 032606 23 032606 24 032610 25 032612 26 032616 27 032622 28 032624 §9 032626 0 032630 31 032632 32 032636 005737 001004 112710 005200 000771 105710 001003 005300 112710 016600 105720 001376 005300 162500 010037 104401 33 032640 000000 35 032646 012616 3, 032642 36 032646 gg 032652 23 032654 FILLZ: 000060 1%: BNE MOVB INC 28: 38: 4$: 032640 MOV FILLO 2% #40,(RO) RO RO,S5$ TYPE 5%: FILLO: :TYPE PRECEDING ZEROS :SAVE RO - :LEAVE PRECEDING ZEROS ? ‘BR IF YES :BYTE EQUAL TO ASCII *0' ? ‘BR IF NOT ‘REPLACE THE 2ERO WITH A SPACE S INCREMENT THE BYTE ADDRESS 1GO BACK AND LOOK FOR MORE LEADING ZEROS *SEE IF ZERO BYTE TERMINATOR :BR IF NOT :BACKUP STRING POINTER :PUT A 2ERO BACK IN *PUT ADDRESS OF FIRST CHARACTER ON STACK SSEE IF ZERO BYTE TERMINATOR ‘BR IF NOT :BACKUP STRING POINTER tADJUST ADDRESS :GET ADDRESS FOR TYPEOUT STYPE THE NUMBER WORD O MOV CLR RTS (SP)+. (SP) FILLO RS .SRESTORE STACK .WORD O :1F SET, LEAVE PRECEDING ZEROS FOR TYPE MOV 0326564 000000 RO, =(SP) ST 000040 000060 000004 RS,FiLLZ REPLZ: MOV 032654 012600 005037 000205 JSR (SP)+,R0 :ADDRESS OF NUMBER ::POP STACK INTO RO SRESET FILL FLAG *RETURN 41 sTHIS ROUTINE 22 ;ngE TRAP CALL °DISPLY', : MOV #ADR,=(SP) ;ADDRESS OF NUMBER (IN ASCII) 42 IS SAME AS 'REPLZ® AND 'rith' EXCEPT THAT [T ‘WILL SUPPRESS THE ERROR TYPEOUT IF SWi3=1, THIS ACCOMPLISHED BY 45 46 2; : b - JSR LWORD RS, SREPLZ N INSTEAD OF °‘TYPE'. :REPLACE PRECEDING 2EROS WITH BLANKS SN IS NUMBER OF DIGITS TO BE TYPED 49 : MOV #ADR,=(SP) ;ADDRESS OF NUMBER (IN ASCII) ga ; LMORD N S*N' 50 ; g‘ 032656 005237 §S 032662 010046 §7 032670 005737 56 032664 016600 032654 000004 032654 JSR RS,SFILLZ STYPE PRECEDING ZEROS IS NUMBER OF DIGITS TO BE $FILLZ: INC FILLO ;LEAVE ZERO'S SREPLZ: MOV RO, =(SP) :SAVE RO FILLO ‘LEAVE PRECEDING 2EROS ? MOV ST 4($P) RO *ADDRESS OF NUMBER TO RO TYPED CIRJOAO RPO7 PERF EXER MACRO V04,00 1-JAN=-83 12:06:52 PAGE 41-1 H 12 SEQ 0150 58 032674 59 032676 60 032702 61 032704 6% 0 713 63 032712 64 032714 65 032716 66 032720 67 033722 68 032726 69 Og 732 70 032734 71 032736 7% 032740 73 032742 76 032746 75 032750 76 032752 77 032754 78 032756 79 032762 80 001014 122710 001904 11g 10 00 ;00 000771 105712 00100 005300 112710 016600 1057;0 001376 005300 162500 010037 104414 000000 012600 012616 005037 000205 000060 1%: 116 033020 117 0330%6 118 033030 119 033034 120 033040 121 033044 12; 12 124 MOVB #40, (RO) INC B8R 2%: 000060 000004 1STB 032750 BNE DEC SUB 43 RO (RS)+,¢0 MORD MOV CLR RTS sROUTINE sCALL: OR (RO) 4(SP),RO MOV 032654 1% MOV MOV DISPLY 5%: RO 3¢ RO TSTB 4%: 2% BNE DEC MOVE 3%: #°0, (RO) (RO)+ DDRESS D LOOK FOR MORE LEADING ZEROS 0 BYTE TERMINATOR ING POINTER ACK NG POINTER ESS FOR TYPEOUT RO,5$ O (SP)+,R0 (SP)+. (SP) FILLO RS TO TYPE THE DRIVE IN OF FIRST CHARACTER ON STACK BYTE TERMINATOR S SwWi3= BE R *ADDRESS $:POP STACK INTO RO *RESTORE STACK SRESET FILL FLAG *RETURN SERIAL NUMBER IN DECIMAL MOV JSR #DPB,RO PC,TYDRV ;ADDRESS OF MOV JSR #0PB,RO PC, TYPDRV sADDRESS OF DRIVE PARAMEER BLOCK sCALL ROUTINE(WITH NO HEADER MESSAGE) DRIVE PARAMETER BLOCK sCALL ROUTINE :RO = DPB ADDRESS BEFORE CALLING THE ROUTINE 104401 104401 010037 062737 104401 000000 104401 000207 060152 057052 033010 000160 TYDRV: TYPDRV: 033010 1%: 05771 110 m 112 113 e 113 #'0,(RO) BNE 000040 91 92 93 i 95 96 97 98 99 100 101 032764 102 032770 103 032774 104 033000 105 033006 106 033010 107 033012 108 033016 109 BNE (MPB swmwvvwwmcs—-zwwm POMCCPOMOZMD<D $SUPRL = TYPE ASCIZ, LEFT JUSTIFY sROUTINE sCALL TYPE TYPE MOV ADD TYPE .DRVSN ,MSGPG RO,1% #SDRVSN,1$ 001004 005037 000137 062716 000002 020000 177776 035652 000002 146126 DRV S/N: PG’ sADDRESS OF ' DPB sINDEX TO DRIVE S 3 RIAL NUMBER .WORD 0 sTYPE THE DRIVE S E RIAL NUMBER sADDRESS OF DRIVE SERIAL NUMBER FIELD RTS PC *RETURN' TYPE ,PERIOD :TYPE '.' TO TYPE ERRORS ;MUST DEFINED IN ‘TRAP' DISPLY sADDRESS OF MESSAGE MESADR RETURN 032777 sTYPE sTYPE $DSPLY: BIT BNE CLR JMP 1%: ADD RTI s THIS ROUTINE sASCII CHARACT #BIT13,35uWR 1% afpPs $TYPE #2,(5P) IN H I8l T E RROR TYPEOUT ? :BR IF YES : SE 1 PR I0R I1TY TO ZERO s TY [ ET HE ME SSAGE : IN C REM ENT THE RETURN RE T URN USED TO CH 3 (K _IF AN IS A DIGIT BETWEEN O AND 7, TABLE (ZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 41-2 $SUPRL = TYPE ASCIZ, LEFT JUSTIFY 125 126 127 sCALL ; ; RQ 3 128 129 : : 13; osgoas 133 033052 134 033056 121127 103407 121127 1%6 osgoez 137 033066 138 033070 111105 042702 005725 135 033060 }zg 033072 101004 000060 CK.OCT: 000067 177770 000205 1$: MOV JSR RE TURN1 RE TURN2 CMPB BLO CMPB BHI MOVB BIC 1ST ;T 1S ROUTINE 144 ; ;2§ ; 146 : 147 }zg 150 151 152 153 154 155 033074 033100 033102 033106 033110 033112 15¢ 033116 }gg 033120 121127 103407 121127 101004 111102 042702 005725 000205 000060 MOV JSR RE TURN1 RETURNZ CK.DEC: CMPB BLO CMPB BHI MOVB BIC ST 000071 000060 1%: RTS :CHARACTER IS NOT BETWEEN 0=7 :CHARACTER IS IN R2 AS A :LESS THAN ZERO? SYES == BRANCH *GREATER THAN SEVEN? RS *RETURN :YES == BRANCH :GET THE CHARACTER SSTRIP AWAY THE ASCII ADJUS! FOR RETURN IS USED TO CHECK AN ASCII : ; ;ADDRESS OF ASCII CHARACTER :CHECK THE CHARACTER (R1),#'0 1% (R1),#'7 1% ;zgftoerennxus IF 145 SEQ 0151 :0CTAL DIGIT (R1),R #AC7.R (RS)+ RTS 141 #ADR,R1 RS,CK.OCT 112 CHARACTER IT IS A DIGIT BETWEEN O AND 9. #ADR,R1 RS,CK.DEC ;ADDRESS OF ASCII CHARACTER SCHECK THE CHARACT s *NOT BETWEEN O AND 9 QETHEEN 0 AND 9 ‘R. = DIGIT (R1),4# 0 1% (R1),#'9 1% (R1),R2 #'0,R2 (RS)+ RS .LESS THAN ZERO? YES == BRANCH GREATER THAN NINE? $YES == BRANCH ‘GET THE CHARACTER SSTRIP AWAY THE ASCII sADJUST FOR RETURN *RETURN 159 }g? :THIS ROUTINE WILL CHECK AN ASCII ;QEIERHINE WHAT IT IS. 162 163 164 165 166 : : . ; : MOV JSR RETURN RETURN RETURN #ADR,R1 RS,CK.CHR ADR1 ADR2 ADR3 ;ADDRESS OF ASCll CHARACTER $CHECK CHARACTER UNKNOUN CHARACTER :CARRIAGE RETURN * (R1)=ADR+1 SCOMMA * (R1)=ADR+1 168 : RETURN ADRS ‘DIGIT BETWEEN O AND 7 167 ; 169 : ¢ };? 172 033122 105711 173 033124 174 oss1§e 175 033132 176 033136 177 033140 001417 121127 001413 121127 80"'97 179 033146 000410 181 033154 005725 178 033142 180 033150 RETURN RETURN (K.CHR: TSTB 000054 000056 004537 033074 004537 033046 ADR& ADRG (R1) CHARACTER TO SPERIOD * (R1)=ADR+1 sR2 = DIGIT » (R1)=ADR+1 *DIGIT BETWEEN 8 AND 9. :""CARRIAGE RETURN'"? BEQ CMPB BEQ CMPB BEQ 3$ (R1),#', 2% (R1),#'. 1% .,gs - BRA NCH " 'COMM :YES - g ANCH S PERIOD "2 :YES --flaamcn BR o’ iNO == BRANCH JSR JSR 151 RS,CK.DEC RS,CK.OCT (RS)+ SDIGIT'TM ‘0CTAL ? :DIGIT BETWEEN 8-9 Dv~QeIE.raLJWb0QOaeNU@)OL0lAaYlORFabU2FleA=aDRlb=aM2A~Tl0baDlQ+0aR4]Ol==[Ca-lMNaVLlOaUNlCaOl0aAXlaTWlHNaO2lBQAawTW=J~lDRIax>TAlCaaRClOxaJxldAawlaax@NlNoxa“OlZOxawmaNDlaVElNalEalrTalXIaaCwl—aTowl>aVxldalIcal=—Jxa3lcXowOaxlEal0xalWmOP-TREnwOOXWxIAMViNCwWEwIaCOxSTW2wEUeTxVSW—GEIZw>=XSv-@—WW)=x.m:.~El‘_-.WbVOM)N2xMOEUI0w—e~MVXN-IoMNNotMbZNNOI3—tNY oo~ o< oo ww oo — wa wo [~ 222222 ) =— NOaV—ONVONM7dYYLWCNNMMMONMO—I0IOFNOMNO4R0oM7NO—VTUOVeVWO7>ML0NyO1OIMOAT3ON=N~@0MBM.1eO-= vYOV2FNrMOOm0MOA~V2NMTAOMOIR0IM3NOOF0NOONM[N-CTNO3Na)OMIVT4NCJ~NIOIOIeN0OVWC4OeNMON‘VNOOe—ITN50IOV-&TNOO50NoOM5O0AV\o=N])6MONOM0MODVe6OIOMMV0IMeTOON7MVI0AOMOoCM( M( -[ 7TY0INM~oO0TTVlONoNl%MOIOOeNVl0NNMCMeVOOVlOMNI(eWlT0ONV=OUNeloL.1I1OO 0MTTM=OoeJ4lWel*D4N=osl-*IeOa4)rDaOe-IMcoaD4eJrIo-aOeDcMNo44 reaMJcTaYWcoaVcWNenJOrw—oIaNaIJcx<4_Xwoa=TC.IeecMJTo<egOI[d«lold(MVOW=Mo=CodB4lW=TOMJNE[UEVNleE0IeNWVlMoKoONlTeOVN0URlooNeNWOeolMeA0VlAeNeIoRWMlLeOVNlL0OeooNWYll] w—T>2-WDEO<O—n+OE-«~aXZ0DE—AwE2~X(EW~—-XDeZ=x—Tm0o=F3V2s-aTM-~.XOiAxExXFZUXXIw2Ska+TEEUVMuZ2XkXWwaA—E=22w- oVax<-X-eOT--1Oe.xW>1|2A|1sND2o(]W—<AOoULQOS-O =CWOxDwOJ24T-~Dw[xM—=w-W.I4owWi«2xXL]ZoEX[2+—2*-o~a&xa,n«.-+*tLM~IMTEO>oD®—MawWQE=H~.«WVwA—2O4=O[~rAo+-2— a—x4Ty=2w[]+oNaM0I.NtT||oQWL(oDWe-xAJ)=dULgo<o-<DexR2l:wa(4-2[T»TFx4}M,[][%M++NINcIx—wT->CwaMucO=~-.MLs<<o< wJoaUn|v-~uSc>IwnoWaB~wcnOC—3avae~Nm[xcXoEAI4aNTECJx'to[VZawtean2EcOOa-wXCt-9WNaxOxXVWt=XECD—Za02=gO0aEa—XOtw0xDa[<W>2ZZD.=rNNOom-Y0aOIWE©gaCw@0t2"—1M&nadMLJIIer[—-o<TZedZtyIrIO2—N2V0u—“WOxale=VwOVNoDOA‘N0oMW.GxD@.WaOes=EO-Mw2ZXUOZ~oW-Ex<>—Ww=M~4Vd4—U>odE<OwE<ZJDu<I*—0OVQEaSOtwXx.w40W<2ENPa3EA[Wyoc-Eo—0<o xw@>FFVaO-<2~rXoEO+—DE—aCVe2XVc—I0OrX~WEaWgZDc>QWa<2O~EDDcXowa@=~N—W+eXOHW* JT4e-o&—a[M}+[V<2a[@4vVdV[)+ —ww o2 oW 4[-p+ wLb—<4 (=-wo=4-]4&4(o"=~[]+4=4][[++ ow—a< CZRJOAO RPO7 P ERF EXER MACR 0 V04.00 1-JAN-83 12:06:52 PAGE 41-3 $SUPRL = TYPE ASCIZ, LEFT J USTIFY J 12 e< SEQ 0152 e )8 a o =? R PAST '"'CR'* & "'PERIOD'* RE TURNS CZRJOAO RPO7 PERF EXER MACRO V0&4.00 1-JAN-83 12:06:52 PAGE 41-4 $SUPRL = TYPE ASCIZ, LEFT JUSTIFY 227 033312 005725 228 033314 060405 2;9 033316 810302 230 033320 005726 033322& 01%603 231 osg 012604 ST MOV (RS)+ R4 ,RS R3.R2 (SP)+ R3 (SP)+, (SP)+.R& (RS) ,RS RS SEQ 0153 ; INCREMENT RETURN *SETUP RETURN POINTER ‘ENTERED VALUE OF STACK TCLEAN MAX, SIZE OFF ‘RESTORE R$ ‘RESTORE Ré& *GET RETURN ADDRESS *RETURN T A 16-BIT UNSIGNED BINARY NUMBER TO AN :THIS ROUTINE WILL CONVERNUMBER . ‘%{E{5"E° DECIMAL ASCIZ :PUT THE NUMBER ON THE STACK NUMBER,=(SP) MOV : S CALL PC,$SB2D JSR : ADDRESS OF THE 1ST ASCIZ CHAR IS ON THE STACK 236 %gg 239 240 RE TURN : THIS FORM OF *$SB2D', NOT THE VERSION ON AM REQUIRES REV NOTE: THE PROGR C AND LATER THE SYSMAC LIBRARY, : %2} 243 546 033332 247 033340 248 033344 949 033350 03] ADD MOV MOV MOV RTS zsg 233 033326 011505 %gg 033330 000205 %22 7%: 8$: 9% K 12 016637 012746 004737 012666 250 033354 000207 000002 033356 $SB2D: MOV MOV 033356 JSR 037324 MOV 000002 RTS %g; 033356 000000 000000 2(sP),1% #$,-(SP) PC,$0B2D (SP)+,2(SP) PC 0,0 :SAVE THE BINARY NUMBER *SET THE POINTER LENGTH CONVERT *CALL THE DOUBLE ER POINT THE UP "PICK *RETURN 1%: .WORD :NOTE: R IS ON THE STACK RESS OF THE 1ST ASCIZ CHAVERSI N AM REQUIRES THISADDFORM RETHETURPROGR ON ON OF '$SB20", NOT THE 256 257 T A 16-BIT UNSIGNED BINARY NUMBER TO AN :THIS ROUTINE WILL CONVER :ggfl{cuso OCTAL ASCIZ NUMBER. :PUT THE NUMBER ON THE STACK NUMBER,=(SP) MOV : $CALL 20 PC,$5B JSR : gga : 253 ggls' %23 260 563 033362 264 033370 265 033374 266 033400 016637 012746 004737 012666 267 033404 000207 268 033406 000000 000002 033406 $SB20: 033406 037520 000002 000000 1%: THE SYSMAC LIBRARY, REV C AND LATER MOV MOV JSR MOV RTS .WORD 2(5P) 1% #$,-(sP) pc,$0820 (SP)+,2(SP) PC 0,0 :SAVE THE BINARY NUMBER *SET THE POINTER *CALL THE DOUBLE LENGTH CONVERT *PICKUP THE POINTER *RETURN L 12 CZRJOAOD RPO7 PERF EXER MACRO V04.00 1=JAN=-83 12:06:52 PAGE 42 TTY SEQ 0154 INPUT ROUTINE 1 LSBTTL M 033412 033414 033416 033420 AL E2A 2232 ‘ENABL 000000 000000 €00000 TTY INPUT ROUTINE LSB 2R $TKCNT: .WORD $TKGIN: .WORD $TKQOUT: .WORD $TKQSRT: .BLKB $TKQEND=. .EVEN 033427 2R 2R 2222222222223 2222332222322 O 0 0 7 «TK INITIALIZE ROUTINE *THIS ROUTINE WILL INITIALIZE 22X222222%2] ::NUMBER OF ITEMS IN QUEUE $:INPUT POINTER +:0UTPUT POINTER ::TTY KEYBOARD QUEUE THE TTY KEYBOARD INPUT QUEUE ;*SETUP THE INTERRUPT VECTOR AND TURN ON THE KEYBOARD INTERRUPT s*CALL: v n 033430 005037 033412 033442 033450 033456 033464 013737 012737 012737 005777 033414 033500 000200 145472 033434 033470 033476 012737 012777 000207 033420 000100 033414 JSR RETURN $TKINT: CLR 033416 000060 000062 $TKCNT ::CLEAR COUNT OF ITEMS IN QUEUE MOV #$TKQSRT, srxuxn *MOVE THE STARTING ADDRESS OF THE MOV RTS 0100 asTKS PC MOV MOV MOV ST 145462 PC,S$TKINT $TKQIN,$TKQZUT ::QUEUE INTO THE INPUT & OUTPUT POINTERS. #STKSRV actxvec ..INIIIALIZE rne KEYBOARD VECTOR czoo aNfKVEC+2 ::'BR' LEVEL K8 ::CLEAR oons FLAG $SENABLE TTY KEYBOARD INTERRUPT $:RETURN TO CALLER ;*TK SERVICE ROUTINE :*THIS ROUTINE WILL SERVICE THE TTY KEYBOARD INTERRUPT s*BY READING THE CHARACTER FROM THE INPUT BUFFER AND PUTTING :#IT IN THE QUEUE. :#1F THE CHARACTER IS A "'CONTROL=C'* (*C) STKINT IS CALLED AND s*UPON RETURN EXIT IS MADE TO THE ''CONTROL=C'® RESTART ADDRESS (CTRAP) 033500 033504 033510 033514 033516 osssgo 033522 033522 osssgo 033530 033534 033540 033542 033546 033552 033554 033562 033564 033564 033572 033574 117746 042716 021627 145456 177600 000021 021627 001007 104401 000003 001002 005726 000002 004737 005726 000137 021627 001004 ‘YKSRV: MOVB BIC CMP 308: 034635 03343C 034676 000007 1%: 022737 000176 001154 001500 022737 001004 104401 000007 001176 033412 BNE TST RTI CMP BNE TYPE J:PICKUP THE CHARACTER J:STRIP IHE JUNK $31S ITA RANDOM XON? (SP),#3 1% JOCNTLC ;:1S IT A CONTROL C? : ;BRANCH IF NO sTYPE A CONTROL=C (*C) (SP)+ CTRAP (SP) ,#7 28 ::CLEAN UP STACK ..CONTROL C RESTART :IS IT A CONTROL 6? $:BRANCH IF NO 308 (SP)+ JSR PC,STKINT CMP #SWREG, SWR CMP BNE TYPE #7,8TKCNT 3 $BELL ST JMP CMP BNE BEQ 28: o%TKB,=-(SP) J‘C177 (SP) (SP) , #$XON 33 ::BRANCH IF NO ssCLEAN RANDOM XON OFF STACK : SRETURN S3INIT THE KEYBOARD $31S SOFT=SWR SELECTED? 1360 TO SWR CHANGE ::1S THE oueue FULL? $:BRANCH IF NO PSRING THE TTY BELL CZRJOAO RPO7 PERF EXER MACRO VO04.00 1=JAN=B3 12:06:52 PAGE 42-1 TTY m12 SEQ 0155 INPUT ROUTINE 033600 og 602 033604 033610 033612 03%616 033620 0336264 033626 033632 005726 000451 021627 001021 005077 0057;6 105777 100375 117746 042716 033636 033642 033644 033652 033654 033660 033664 033666 033672 033674 022627 001366 012777 000002 005237 021627 002405 021627 003002 042716 033704 033710 033716 033720 033726 005237 023727 001003 012737 000002 033700 112677 000023 38: 145342 145334 31$: 145330 177600 BIC 000021 000100 ST BR CMP BNE CLR ST ISTB BPL MOVB 145306 033412 000140 32%: 000175 000040 177510 4$: 033414 033414 033427 033420 033414 5%: (SP)+ 5¢ (SP),#23 32¢ asTKS (SP)+ @a$TKS 3¢ a$TKB,=(SP) ::CLEAN CHARACTER OFF OF STACK SIEXIT IS IT A CONYROL-S’ :BRANCH IF NO ::DISABLE TTY KEYBOARD INTERRUPTS :3CLEAN CHAR OFF STACK $:WAIT FOR A CHAR ::LOOP UNTIL ITS THERE ::GET THE CHARACTER (SP)+,#21 31 #100,3$7kS ::1S IT A CONTROL=Q? ::BRANCH IF NO :REENABLE TTY KEYBOARD INTERRUPTS : sRETURN ::COUNT THIS CHARACTER $31S IT UPPER CASE? ::BRANCH IF YES ::1S IT A SPECIAL CHAR? : iBRANCH IF YES :MAKE IT UPPER CASE #4177, (SP) SIMAKE IT 7-BIT ASCII CMP BNE MOV RTI INC CMP BLT CMP BGT BIC $TKCN (SP) ,#140 4$ (SP),#175 4% #40, (SP) INC CMP BNE MOV RTI $TKQIN *UPDATE THE POINTER srxoxn,nsrxoeno ..so OFF rue euov 13 *BRANCH IF #STKQSRT,STKQIN ..aeser THE POINTER :SRETUR MOVB (SP)+,as$TKQIN ..AND PUT IT IN QUEUE ."t't'ttttttt'""'tt"""".ttt'ttttt.t"ittt""!tt'ttt'ttt asorruuae SWITCH REGISTER CHANGE ROUTINE. ;*ROUTINE 033730 033736 033740 033744 033746 033752 033756 033762 022737 001124 105777 100121 117746 042716 021627 001300 000176 001154 IS ENTERED FROM THE TRAP HANDLER, AND WILL :#SERVICE THE TEST FOR CHANGE IN SOF TWARE SWITCH REGISTER TRAP :*CALL WHEN OPERATING IN TTY INTERRUPT MODE. $CKSWR: CMP eue TSTB BPL MOVB 145214 145210 177600 000007 BIC CMP BNE #SWREG, SWR 15% a$TKS 15% a$TKB,=(SP) #4C177,(SP) (SP) ,#7 2% ::1S THE SOFT=-SWR SELECTED SSEXIT IF NOT ::1S A CHAR UAIYING’ ::IF NOT, EXIT Y SIMAKE IT 7-BIT ASCII ::1S IT A CONTROL=G? ::1F NOT, PUT IT IN THE TTY QUEUE SIAND EXIT .ttt'itttttt.ttttt't"itt't"t.t'lttltttttt.'tt.'ttttttttttltQt -cournoL IS PASSED TO THIS POINT FROM EITHER THE TTY INTERRUPT SERVICE :*ROUTINE OR FROM THE SOFTWARE SWITCH REGISTER TRAP CALL., AS A RESULT OF 033764 123727 001150 033772 033774 033776 001674 00572 004737 034006 112737 000001 034014 104401 034647 034024 013746 000176 034002 034020 034030 005077 104401 104402 000001 033430 145152 034654 001151 :«CONTROL=G BEING TYPED, AND THE SOF TWARE SWITCH REGISTER BEING SELECTED. &%: CMPB $AUTOB, M :3ARE WE RUNNING IN AUTO=-MODE? BEQ ST JSR 2% (SP)+ PC,STKINT :BRANCH IF YES ::CLEAR CONTROL=G OFF STACK :iFLUSH THE TTY INPUT QUEUE MOVB 01.81NIAG :3SET INTERRUPT MODE INDICATOR TYPE LSCNTLG ..;cuo THE CONTROL=G (*G) MOV SWREG, = (SP) :3SAVE SWREG FOR TYPEOUT CLR $GTSWR: TYPE TYPOC asfks $SMSWR :DISABLE TTY KEYBOARD INTERRUPTS YPE CURRENT CONTENTS 1360 TYPE==OCTAL ASCII(ALL DIGITS) A CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 42-2 TTY INPUT ROUTINE 034032 034036 034040 034042 034046 034050 104401 005046 034665 005046 105777 100375 145112 034054 042716 117746 145106 034060 021627 000003 104401 034635 034064 034066 001015 19$: 7%: 177600 034106 034114 012777 000137 000100 034676 8$: 034120 034124 034126 034132 021627 001005 104401 062706 000025 9%: 034642 000006 208: 034140 034144 034146 034152 034154 034162 034166 021627 001022 005766 001403 016677 062706 104401 000015 108: 034200 034202 034210 034212 034216 034222 0342§4 034230 034232 034536 034242 034544 034246 034250 034252 001003 012777 ooooo; 004737 021627 002420 021627 003015 042726 oosrog 00140 006316 006316 006316 005266 034136 034172 034256 034262 034264 034270 001003 000737 123727 056616 000667 104401 000720 000002 000006 001203 001151 000001 000100 144750 036064 000060 118: 14%: 15¢: 168: 000067 000060 000002 000002 17%: 001202 18%: s 177776 #c17?,(5P) (SP),#3 .CLEAR COUNTER ::PICK UP CHAR SIMAKE IT 7-BIT ASCII ;1S IT A CONTROL=C? BNE 9% SBRANCH IF NOT ADD (MPB #6,SP $INTAG,M S:CLEAN UPSTACK $REENABLE TTY KEYBOARD INTERRUPTS? MOV JMP #100,38$7KS CTRAP BNE 000004 :iTHE NEW_SWR **CHAR THERE? *:IF NOT TRY AGAIN @$TKB,=(SP) TYPE 000006 001151 -(5P) @$Tk$ 7% MOVB CMP os§7oe 123727 : :PROMPT FOR NEW SWR <(SP) CLR TSTB BPL 0156 SEQ a0 ,SMNEW (LR BIC 034072 034076 034104 TYPE . $CNTLC 8$ P3YES, ECHO CONTROL=C (*C) :BRANCH IF NO SIALLOW TTY KEYBOARD INTERRUPTS S S CONTROL=C RESTART CMP BNE TYPE ADD (SP) ,#25 108 LSCNTLU #6,SP ;:1S 1T A CONTROL=U? $:BRANCH IF NOT :3YES, ECHO CONTROL=U (*U) :1GNORE PREVIOUS INPUT CMP BNE 1ST BEQ MOV ADD TYPE (SP),#15 16% 4L (SP) 11% 2(SP),aSWR #6,SP $CRLF ;218 IT A <CR>? : :BRANCH IF NO 23YES, IS IT THE FIRST (HAR? $:BRANCH IF YES 1 :SAVE NEW SWR :3CLEAR UP STACK ::ECHO <CR> AND <LF> BNE MOV RTI JSR CMP BLT CMP BGT BIC ST BEQ ASL ASL ASL INC 15% #100,387kS ::BRANCH IF NOT P RE-ENABLE TTY KBD INTERRUPTS : SRETURN 1SECHO CHAR $:CHAR < 0? P BRANCH IF YES SiCHAR > 77 $SBRANCH IF YES $iSTRIP=OFF ASCII 2315 THIS THE FIRST CHAR P:BRANCH IF YES :iNO, SHIFT PRESENT i3 "CHAR OVER TO MAKE i _ROOM FOR NEW ONE. SIKEEP COUNT OF CHAR BR (MPB BIS BR TYPE fge 19$ $INTAG.M PC.STYPEC (€5),060 188 (SP), W67 18% #60, (SP)+ 20SP) 17% (SP) (SP) (SP) 2(SP) =2(5P), (SP) 7% $QUES 208 TILET'S TRY IT AGAIN SSRE-ENABLE TTY KBD INTERRUPTS? SSSET IN NEW CHAR :3GET THE NEXT ONE ::IVPE 2<CRYSLF> *SIMULATE CONTROL=-U CIZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 42-3 TTY INPUT ROUTINE 1 g SEQ 0157 'Exls ROUTINE WILL INPUT A SINGLE CHARACTER FROM THE TTY e e i 034272 011646 034302 034306 005066 005046 034274 016666 000004 012746 034316 034316 034322 034324 005737 001775 005337 033412 034336 005237 033416 034350 001003 034310 83:;}2 034330 0364342 034352 034360 000902 117766 023727 012737 00C002 000004 03341 000002 000004 033416 033427 033420 033416 (SP),=(SP) ; ;PUSH_ DOWN THE PC AND 4(SP) -(SP} ..GET READY FORA CHARACTER ‘PUT NEW PS ON STACK MOV #64$,-(SP) RTI i e i 101456 104410 112613 122713 001022 034414 034416 034426 034430 001007 112737 104401 81%716 034434 034436 034442 034446 034450 000177 INC $TKQOUT UPDATE THE POINTER asrxoour 4(SP) 111337 104401 000134 034614 177777 005716 001406 eer ONE CHARACTER $TKQOUT,#STKAEND ..oxo IT GO OFF OF THE END? MOV #$TKQSRT,$TKAOUT' ..RESET THE POINTER RTI 2% : 'BRANCH IF NO ; SRETUR 034614 122713 001003 000025 034614 RETURN HERE CMP BLOS RDCHR MOVB CMPB BNE ::TERMINATOR WILL BE A BYTE OF ALL 0°'S ::SAVE R3 ::CLEAR THE RUBOUT KEY $:GET ADDRESS 4$ R IF YES 1360 READ ONE CHARACTER FROM THE TTY #STTYIN+15. R3S (SP)+,(R3) #177,(R3) 5 (sp) 6% #°'\,0% 9s #-1,(SP) MOVB (R3),9% DEC CMP BLO ;INPUT A STRING FROM THE TTY ,.ADDRESS OF FIRST CHARACTER WILL BE ON THE STACK R3,=(SP) -($P) #STTYIN,R3 BNE MOVE TYPE MOV R3 R3,ASTTVIN X1 9% ..aurren FULL? $3GET CHARACTER 2315 1T A RUBOUT ‘BR IF NO ..lS THIS THE FIRST RUBOUT? ‘BR IF NO S:TYPE A BACK SLASH ::SET THE RUBOUT KEY BACKUP BY ONE ..s ACK EMPTY? :BR IF YES ..SE!UP T0 TYPEOUT THE DELETED CHAR. TYPE B8R b1 $260 READ ANOTHER CHAR. MOVB #°'\,9% SSTYPE A BACK SLASH ST BEQ TYPE 7%: INPUT A STRING FROM THE TTY RDLIN TYPE 5%: 104401 oosong 6%: 034614 112737 000134 034476 034502 034614 034614 034462 034474 108: 034616 000746 034470 ::DECREMENT THE COUNTER CMP ST 034454 034456 034460 28: 005716 005303 ozosgr 103434 STACK $:POP NEW PC AND PS ;:WAIT ON A CHARACTER $RDLIN: MOV CLR 1$: MOV ; 034616 034372 022703 034635 034412 ;;pur NEW PC ON t"t'.t't'."t""t"""'t"."tttt'tt.'t"'t't"'t"tt'.t't" e 034376 034400 034402 034406 034410 PS $TKCNT 1% $TKCNT BNE L 010346 005046 012703 ‘THE ST BEQ DEC 'Efitf ROUTINE WILL 034362 034364 034366 ::WITH PARITY BIT STRIPPED OFF 4(SPY,2(SP) MOVB 28: ..CHARACTER IS ON THE STACK MOV CLR CLR 1$: :GET A CHARACTER FROM THE QUEUE RETURN HERE $SRDCHR: MOV pom 177062 RDCHR CLR (MPB BNE (5P) 7% 9% (sP) #25,(R3) 8$ ..RUBOUI KEY SET? ‘BR IF NO ::CLEAR THE RUBOUT KEY $31S CHARACTER A CTRL U? PiBR IF NO CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 42-4 TTY ¢ 13 SEQ 0158 INPUT ROUTINE 034504 034510 034512 104401 034642 122713 000022 000726 034516 001011 034520 034522 034526 001203 034616 104401 001202 4$: 111337 104401 034614 034614 38: 000717 034540 ooo71; 034542 034546 034552 122723 034556 034560 034564 034570 034572 0345764 001305 105063 104401 005726 012603 011646 034604 034612 012766 000002 034615 034616 034635 034642 034647 034654 . 024665 000 034576 034614 8$: 105013 104401 104401 034532 034534 TYPE 016666 000015 034616 000002 000004 000 9% 136 136 136 015 040 $TTYIN: SCNTLC: SCNTLU: S$CNTLG: $MSWR: SMNEW: 103 125 107 012 040 015 015 015 123 116 2 S 034676 6 034704 7 034710 8 034716 9 034722 10 034730 11 034732 12 034740 012737 000001 001334 112777 000015 176476 005237 005237 023727 001003 012737 000002 033412 033414 033414 033427 033420 033414 ;:TYPE A CONTROL ''U" CMPB #22,(R3) $31S CHARACTER A ""*R'"? CLRB TYPE TYPE (R3) JOCRLF $TTYIN BNE {s 3s BR b1 BR is C(MPB #15,(R3)+ MOY 4(SP),2(SP) .BYTE 0 TYPE MOVB TYPE BNE CLRB TYPE TST MOV MOV 177777 001204 000004 $CNTLU BR MOV RTI BYTE .BLKB .ASCIZ .ASCIZ .ASCIZ .ASCIZ .ASCIZ $QUES (R3),9% 9% 2% =1(R3) JSLF (SP)+ (SP)+,R3 (SP),=(5P) #STTYIN,4(SP) 0 15, /*C/<15><12> /*U/<15><12> /7°G/<15><12> <15><12>/SWR = / NEW = / ::G0 START QVER :SBRANCH IF NO PSCLEAR THE CHARACTER s:TYPE A '"'CR"" & "'LF’ ::TYPE THE INPUT STRING 1360 PICKUP ANOTHER CHACTER SSTYPE A *2° i3 CLEAR THE BUFFER AND LOCP ::ECHO THE CHARACTER :CHECK FOR RETURN ..LOOP IF NOT RETURN ::CLEAR aerunu (THE 15) SSTYPE A LINE FEED ..CLEAN RUBOUT KEY FROM THE STACK :RESTORE R3 ;iADJUST THE STACK AND PUT ADDRESS OF THE i ;RETURN ..STORAGE FOR ASCII CHAR. TO TYPE : STERMINATOR ..aeseave 1s. BYTES FOR TTY INPUT ::CONTROL ' ..CONTROL'j{. ::CONTROL ''G ;THIS ROUTINE WILL PROCESS THE (*C) CTRAP: CHARACTER MOV #1,CFLAG ;SET THE MOVB #15,98TKQIN PUT INC INC CMP 1%: FIRST ASCII CHARACTER ON IT BNE MOV RTI $TKCNT "CONTROL C' FLAG COUNT THIS CHARACTER 'RETURN' CHARACTER IN QUEUE $TKQIN UPDAIE THE POINIER STKQIN,#STKQEND :GO OFF THE END ? 1% :BR IF YES #STKQSRT,STKQIN RESET THE POINTER ‘RETUR D 13 CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 43 ERROR HANDLER ROUTINE 1 .SBTTL SEQ 0159 ERROR HANDLER ROUTINC R L T R TR T TR TR R T Y :*THIS 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 ::THE SWITCH OPTIONS PROVIDED BY THIS ROUTINE ARE: HALT ON ERROR 1eSW15=1 teSW13= INHIBIT ERROR TYPEOQUTS ;:E:E?:l 1 034742 034746 034750 0347564 034760 034766 034770 034774 035000 035006 035010 035012 035020 035026 035030 105037 104407 010337 010137 032777 001004 104401 104401 004737 105237 001775 013777 032777 001402 104401 035330 035040 011637 001132 035034 035044 005237 162737 001316 001320 020000 144166 001203 001203 026146 001117 001116 002000 144136 144126 001176 001126 000002 144054 001132 117737 035066 035070 001060 122737 035100 035106 035106 105737 001047 022737 035330 035116 oss1§2 035130 035136 035140 013746 015737 013737 oooagg 012737 000004 035140 177766 000004 035326 177777 035326 035152 035154 ooooo; 012637 000004 035160 022737 177777 035326 035170 035176 035200 035206 032737 00C1414 oagrgr 113737 000001 035326 oooog1 0011 9 1777?3 0353 035060 032777 001000 035076 035114 001454 001445 000177 177777 035146 012716 035154 035166 oo14§o 035214 112737 000177 035222 000402 ERROR $SERROR: CLRB CKSWR MOV MOV BIT BNE TYPE TYPE JSR 7%: INCB BEQ MOV BIT BEQ TYPE 18: 035052 BELL ON ERROR INC MOV SUB N : ;ERROR=EMT AND N=ERROR ITEM NUMBER IBSAVE ::CLEAR THE ITEM BYTE SAVE LOCATION SSTEST FOR CHANGE IN SOF T=SWR R3,ATTN *SAVE THE ATTENTION REGISTER CONTENTS R1.DRVNO ‘DRIVE NUMBER #5W13,3SWR *INHIBIT PRINTOUTS ? 412 ‘BR IF YES SCRLF :CR=LF "$CRLF tCR=LF PC,STIME STYPE ELAPSED TIME SERFLG ::SET THE ERROR FLAG 78 S3DON'T LET THE FLAG GO TG ZERO $TSTNM,aDISPLAY ::DISPLAY TEST NUMBER AND ERROR FLAG #BIT10,aSWR ::BELL ON ERROR? 1% $iNO = SKIP $BELL $3RING BELL $ERTTL (SP) ,SERRPC #2,$ERRPC ::COUNT THE NUMBER OF ERRORS $:GET ADDRESS OF ERR.R INSTRUCTION 001130 MOVB Q@SERRPC,SITEMB ;:STRIP AND SAVE THE ERROR ITEM CODE 001130 BNE CMPB 1004$ #177,S1TEMB : SBRANCH AROUND ROUTINE IF SO SSSEE IF THIS IS THE POWER FAIL CALL 035326 TSTB BNE CMP IBSAVE 1003$ #-1,CPSAVE S:SEE IF THIS IS THE 2ND ERROR CALL IN THIS ROUTINE :BRANCH IF SO $3SEE IF CPSAVE HAS CPU ERR REG TIMEOUT INDICATION 10008: MOV MOV MOV BR MOV ERRVEC,=(SP) #10008 ERRVEC 177766.CPSAVE 1001% #-1,CPSAVE 1001$: RT] MOV (SP)+,ERRVEC ;:RESTORE CONTENTS OF ERROR VECTOR CMP #-1,CPSAVE ::SEE IF CPSAVE HAS CPU ERR REG TIMEOUT INDICATION BIT BEQ BIC MOVB #BIT00,CPSAVE 1004$ #B1100,177766 Sl!;fla IBSAVE ::SEE IF POWER MONITOR BIT IS SET IN CPU ERR REG $:BRANCH IF OK ::CLEAR THE BIT FOUND SET ::MAKE IBSAVE NON-ZERO FOR DUAL ERROR CALL B8R 1004$ 144066 001130 BIT BEQ BEQ 1002%: MOV BEO MOVB #BI1T09,35WR 1004$ 1004$ 1001$, (SP) 1004$ #177,8i1EmB $:SEE IF LOOP ON ERROR IS SET : *BRANCH AROUND ROUTINE IF IT IS :BRANCH IF SO ::SAVE CONTENTS OF ERROR VECTOR ::SETUP 'TRAP' RETURN ADDRESS ::MOVE CPU ERROR REGISTER TO CPSAVE FOR TEST ::SET CPU ERROR REGISTER TIMEOUT INDICATOR $:SETUP RETURN ADDRESS $:BRANCH IF SO SISET SITEMB T0 SPECIAL POWER FAJL POINTER ::BRANCH OVER IBSAVE CLEARING CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 43-1 ERROR HANDLER ROUTINE 8%22%8 105037 035330 035230 035236 035240 032777 001004 004737 020000 035250 035256 122737 0061007 000001 001226 035266 ossgri 03527 035274 oss§7e 035302 035306 035310 035312 004737 900 000 000777 105737 001005 005777 100002 000000 001130 036676 035272 035316 035322 035324 035326 035330 105737 001230 000002 000000 000000 8§§ ga 035260 8%3%12 104401 113737 }8822= 143716 03533 00120 035330 - 22%: 2%: 143644 104407 - 035330 13 SEQ 0160 C(LRB IBSAVE ;:CLEAR IBSAVE SO 2ND TIME THROUGH EXITS BIT BNE JSR #BIT13,aSWR 208 PC,SERRTYP ::SKIP TYPEOUT IF SET $iSKIP TYPEOUTS 1360 TO USER ERROR ROUTINE CMPB BNE WAPTENV,SENV 28 ::RUNNING IN APT MODE $iNO,SKIP APT ERROR REPORT JSR BYTE BYTE BR TSTB BNE ST BPL HAL T PC,S8ATYS 0 0 22% IBSAVE 3% aSWR 3% ;sREPORT FATAL ERROR TO APT TYPE MOVB 21%: ’ LSCRLF SITEMB,21% CKSWR TSTB BNE RTI CPSAVE: .WORD IBSAVE: .WORD SSSET ITEM NUMBER AS ERROR NUMBER ::APT ERROR LOOP *3SEE IF IBSAVE IS LOADED :BRANCH IF NOT = NO HALT ON PWR MON BIT ERROR 1:HALT ON ERROR TiSKIP IF CONTINUE P:HMALT ON ERROR' SSTEST FOR CHANGE IBSAVE 7% O O IN SOF T=SWR ::SEE IF ITEM BYTE SAVE LOCATION HAS AN ERROR CALL : :BRANCH BACK TO CALL ORIGINAL ERROR : SRETURN P:LOCATION TO SAVE CPU ERROR REG CONTENTS S:LOCATION TO SAVE ITEM BYTE F13 CZRJOAOD RPO7 PERF EXER MACRO V04.00 1=JAN-83 12:06:52 PAGE 44 ERROR MESSAGE TYPEOUT ROUTINE .SBTTL SEQ 0161 ERROR MESSAGE TYPEOUT ROUTINE HLAAAALALALALAAAAAARAAASAAAAA AR AR AR AR ARRRRARAAR Rl llld) 'THIS ROUTINE USES THE '"ITEM CONTROL BYTE'' (SITEMB) TO DETERMINE WHICH :*ERROR 1S TO BE REPORTED. IT THEN OBTAINS, FROM THE ''ERROR TABLE'' (SERRTB), ;*AND REPORTS THE APPROPRIATE INFORMATION CONCERNING THE ERROR. oggg;g 0 104401 001203 ossgaz 035346 153700 001904 001130 035350 013746 035354 035356 035360 SERRTYP: i & ""LINE FEED'' $CRLF :."CARRIAGE RETURN'' BISB BNE aasxrens RO 18 ::1F ITEM NUMBER IS zeao JUST 001132 MOV $ERRPC,=(SP) 104402 000437 122700 000177 TYPOC BR CMPB 6$ #177,R0 :3SAVE SERRPC FOR rvpsour ::ERROR ADDRESS 2:G0 TYPE==OCTAL ASCIICALL DIGITS) SIGET OUT :3SEE IF THIS ERROR CALL IS SPECIAL POWER FAIL CALL 035366 013737 001212 MOV STESTN,PFTSTN ::GET TEST NUMBER 035400 035402 000406 005300 10008: BR DEC 1001$ RO 1001%: MoV 035336 035340 035364 035374 010046 005000 001006 012700 035404 035406 035410 035412 006300 006300 006300 062700 035422 0354246 035426 001404 104401 000000 035416 035430 035434 035440 035442 035444 035446 035452 035454 035456 035460 333222 035466 035470 035472 ogsar4 035476 012037 104401 012037 001404 104401 000000 104401 011000 001004 012600 104401 000207 035510 03552 035602 035634 MOV CLR 1%: 035650 003360 035426 28: 001203 035444 3%: 4s: 001203 5%: 68: 001203 10440 00571 001770 BNE MOV 7‘ 013046 ASL ASL ASL ADD BEQ TYPE .WORD TYPE MOV BEQ TYPE .WORD TVPE MOV BNE MOV 040 000 035520 osseo; 035634 124 105 123 PFECH2: .eegzz 035326 PFECH3: .WORD 035650 001132 TYPE PFECH: RO RO RO #SERRTB,RO (RO)’.Z‘ 3% B8R esg:z :SAVE RO S:PICKUP THE ITEM INDEX 1:TYPE THE PC OF THE ERRO i BRANCH IF NOT :sMOVE POWER FAIL ERROR CALL TABLE TO RO ::BRANCH TO CALL ERROR $3ADJUST THE INDEX SO THAT IT WILL HH WORK FOR THE ERROR TABLE ;;FORM TABLE POINTER ::PICKUP ''ERROR MESSAGE'' POINTER ..SKIP TYPEOUT IF NO POINTER ::TYPE THE ''ERROR MESSAGE'' ::, ERROR MESSAGE'* POINTER GOES WERE 0 LSCRLF (RO)+,4% 5$ 0 JOCRLF ::"'CARRIAGE RETURN'' & "LINE FEED ::PICKUP ‘'DATA ntADER'' POINTER ..sle TYPEOUT IF 0 . ::TYPE THE 'bA[A HEADER' :i,DATA HEADER' POINTER GOES HERE CARRIAGE RETURN & INE FEED 7% (SP)+,RO 1360 TYPE THE DATA ..aesto E RO (RO) ,RO S:PICKUP "DATA TABLE'* a(R0O)+,=(SP) 040 1 #PFECH,RO MOV 035504 150 1000$ JSCRLF PC TYPOC 1ST BEO 8$: fio -(SP) TYPE RTS 104401 035502 600771 035504 035510 TYP POINTER S“'CARRIAGE RETURN'' & "‘LINE FEED : SRETURN (RO) 33 8% . :SAVE a(RO)+ FOR TYPEOUT 2120 TYPE-=OCTAL ASCII(ALL DIGITS) ..IS THERE ANOTHER NUMBER? :BR IF NO ..rvps TWO(2) SPACES s LOOP !/ ..tuo(z) SPACES PFECH1,PFECH2,PFECHS,PFECHG ;:WORDS DEFINING TABLES BELOW 127 PFECHI: .ASCIZ ?POWER MONITOR BIT IN CPU ERROR REGISTER FOUND SET? TESTNO ERR PC CPUERREG? PFTSTN,SERRPC ,CPSAVE,O ERROR MESSAGE TYPEOUT ROUTINE 035644 000 000 035650 000000 W SSVIRTS 000 PF$ CHé : JBY T 8Y1e PF STN: ,WORD CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=B3 12:06:52 PAGE ol 0.0 0.0. O &4&=1 G 13 SEQ 0162 sCONTAINS TEST NUMBER FOR PF BIT ERROR CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 45 TYPE H1 ROUTINE .SBTTL HLAALAAA v SEQ 0163 TYPE ROUTINE AR A AR A A S A A A A A AR A AR AR AR AR AR ARl ll ) s*ROUTINE TO TYPE ASCIZ MESSAGE. MESSAGE MUST TERMINATE WITH A O BYTE. s*THE ROUTINE WILL INSERT A NUMBER OF NULL CHARACTERS AFTER A LINE FEED. s*NOTE1: $NULL CONTAINS THE CHARACTER TO BE USED AS THE FILLER CHARACTER. s*NOTE?2: $FILLS CONTAINS THE NUMBER OF FILLER CHARACTERS REQUIRED. ::NOTE : SFILLC CONTAINS THE CHARACTER TO FILL AFTER. s«CALL: :*1) USING A TRAP INSTRUCTION ;'OR TYPE +MESADR JsMESADR IS FIRST ADDRESS OF AN ASCIZ STRING - I MESADR $TYPE: TSTB BPL HALT B MOV MOV CMPB BNE BITB BEQ $TPFLG 1% PC,SATY3 0 #APTCSUP,SENVM 60% (RO)+,-(SP) 4% (SP)+ (SP)+,RO #2,(SP) #CRLF,(SP) 5% (SP)+ ;s BRANCH JF NOT <CRLF> SCHARCNT 2% PC,STYPEC s3CLEAR CHARACTER COUNT 23GET NEXT CHARACTER. 2:60 TYPE THIS CHARACTER 2% $NULL ,=(,P) 231F NO GO GET NEXT CHAR, 23GET # OF FILLER CHARS. NEEDED ;' 035652 035656 035660 035662 035664 035666 035672 035700 035702 035710 105737 100002 000000 000430 010046 017600 122737 001011 132737 001405 001173 035716 035722 035724 035732 035734 035736 035740 035742 035744 035750 035752 004737 000000 132737 001003 112046 001005 005726 012600 062716 000002 122716 036666 035760 035764 035766 035770 035772 035774 036000 036002 122716 001006 005726 104401 001203 105037 000755 004737 035712 035756 036006 010037 001430 001350 013746 036020 036024 0360;6 105366 002770 004737 036032 036036 001226 000100 001227 035722 105337 000770 MOV 000002 60%: 3%: 000011 A ¥ JSR .WORD BITB BNE MOVB BNE TST MOV ADD RTI CMPB 5%: CMPB BNE 1St TYPE S$CRLF CLRB BR JSR 000040 001227 61%: 62%: 2%: 000200 036202 0.6064 123726 001172 036012 036014 1%: 000002 0000017 TYPE H 6%: 001170 000001 036064 036202 7%: BEOQ CMPB BNE MOV DECB BLTY JSR DECB fai ::1S THERE A TERMINAL? ::BR IF YES :sHALT HERE IF NO TERMINAL 3% :sLEAVE RO,=(SP) :SAVE RO 22(SP) RO :3GET ADDRESS OF ASCIZ STRING #APTENV,SENV :sRUNNING IN APT MODE 62% :3NO,GO CHECK FOR APT CONSOLE #APTSPOOL ,$ENVM ;;SPOOL MESSAGE TO APT 62% 23NO,GO CHECK FOR CONSOLE RO,61% #HT,(SP) 8% SFiLLC.(SP)O 1(SP) 6% PC,STYPEC $SCHARCNT 7% :3SETUP MESSAGE ADDRESS FOR APT ::SPOOL MESSAGE TO APT s sMESSAGE ADDRESS ;:APT (CONSOLE SUPPRESSED :sYES,SKIP TYPE OUT 2:PUSH CHARACTER TO BE TYPED ONTO STACK 22BR IF IT ISN'T THE TERMINATOR :21F TERMINATOR POP T OFF THE STACK :sRESTORE RO :2ADJUST RETURN PC : *RETURN :.BRANCH IF <HT> ::POP <CR><LF> EQUIV ::TYPE A CR AND LF s:1S IT TIME FOR FILLER CHARS.? s3AND THE NULL CHAR. sDOES A NULL NEED TO BE TYPED? ::BR IF NO=-=GO POP THE NULL OFF OF STACK 360 TYPE A NULL 2:D0 NOT COUNT AS A COUNT ::LO0P CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=B3 12:06:52 PAGE 45-1 TYPE ROUTINE 1 . o SEQ 0164 sHORIZONTAL TAB PROCESSOR 036040 036044 112716 000040 024737 036064 036050 036056 036060 036062 036064 036064 036070 036072 132737 001372 0057%6 000724 105777 100022 017746 143070 036102 036106 036110 036110 036114 036116 122716 001012 000023 105777 100375 117716 143044 122716 001366 000021 036076 036122 036126 036132 036134 036134 036136 036136 036142 036144 036152 036160 036162 036166 036170 036176 036200 036202 0362064 06%716 042716 000007 8s: 036202 STYPEC: 143064 177600 101$: 143040 177600 108: 143022 143014 000002 036202 000012 000002 #' ,(SP) ;:REPLACE TAB WITH SPACE JSR PC,ETYPEC #7.$CHARCNT 9% (SP)+ 28 $:BRANCH IF NOT AT $:TAB STOP 1:POP SPACE OFF STACK $SGET NEXT CHARACTER TSTB BPL MOV as$TKS 10% as$TKB,=(SP) ;:CHAR IN KYBD BUFFER? ::BR IF NOT P:GET CHAR CMPB BNE #SXOFF, (SP) 102$ TSTB BPL MOVB as$TKS 101% a$TKB, (SP) CMPB BNE #$XON, (SP) 101$ BITB BNE ST BR BIC 1028: 000002 000015 MOVBE BIC 005726 105777 100375 116677 122766 001003 105037 000406 122766 001402 105227 000000 000207 9% : 13 ISTB BPL MOVB CMPB BNE CLRB BR 1%: CMPB BEQ INCB $CHARCNT: .WORD $TYPEX: RIS #177600,(SP) #177600, (SP) S:TYPE A SPACE ::STRIP EXTRANEOUS BITS P:WAS CHAR XOFF 1:BR IF NOT ;:WAIT FOR CHAR ::GET CHAR SISTRIP IT SIWAS IT XON? 1:BR IF NOT (SP)+ ;:FIX STACK a$TPS 10% 2(SP),asTPB #CR,2(SP) 1% SCHARCNT $TYPEX #LF,2(SP) STYPEX (PC)+ O PC ;sWAIT UNTIL PRINTER IS READY ::LOAD CHAR TO BE TYPED INTO DATA REG. :31S CHARACTER A CARRIAGE RETURN? ::BRANCH IF NO $3YES==CLEAR CHARACTER COUNT SIEXIT $:1S CHARACTER A LINE FEED? P:BRANCH IF YES ::COUNT THE CHARACTER :CHARACTER COUNT STORAGE CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 4% BINARY TO OCTAL (ASCII) AND TYPE .SBTTL o SEQ 0165 1 BINARY TO OCTAL (ASCII) AND TYPE LR T L e s*THIS ROUTINE IS USED TO CHANGE A 16-BIT BINARY NUMBER TO A 6-DIGIT ;*OCTAL (ASCII) NUMBER AND TYPE IT. ::%1:{05"'ENTER HERE TO SETUP SUPPRESS ZEROS AND NUMBER OF DIGITS TO TYPE e : o o o I 8 MOV TYPOS .BYTE BYTE NUM,=(SP) N M . :sNUMBER TO BE TYPED ssCALL FOR TYPEOUT :sN=1 T0O 6 FOR NUMBER OF DIGITS TO TYPE ::M=1 OR 0 ::1=TYPE LEADING ZEROS ::0=SUPPRESS LEADING ZEROS :. ;*$TYPON====ENTER HERE TO TYPE OUT WITH THE SAME PARAMETERS AS THE LAST ;*$TYPOS OR $TYPOC s*CALL: o TM :. MOV TYPON NUM,=(SP) :sNUMBER TO BE TYPED :sCALL FOR TYPEOUT :'%xltoc---ENTER HERE FOR TYPEOUT OF A 16 BIT NUMBER M H 036206 036212 036220 036224 036230 017646 116637 112637 062216 000406 036266 005404 036232 036240 036246 036254 036256 036260 036262 036270 036274 036300 036304 0363510 036312 036314 036316 036320 036322 036324 0363;6 036330 036334 036333 03634 036344 036346 036350 000000 000001 036433 000002 112?}7 112¢27 112737 010346 010446 010546 113704 000001 000006 000005 062704 110437 113704 016605 005003 006105 000404 006105 006105 006105 010503 000006 036432 036431 000012 0061?3 105337 100016 862703 01002 036433 036431 036431 036433 036430 $TYPOS: MOV MOvVB MOVB ADD BR S$TYPOC: MOVB MOVB STYPON: MOV3 MOV MOV MOV MOVB NEG 1%: 2%: 036432 3%: 177770 005204 ADD MOVB MOVB MOV (LR ROL BR ROL ROL ROL MOV ROL DECB BPL BIC BNE 1ST 005704 001403 MoV TYPOC 4$: BEQ INC NUM,=(SP) :sNUMBER TO BE TYPED ssCALL FOR TYPEOUT a(SP) ,=(5P) 1(SP) ,SOFILL (SP)+,$0MODE+1 #2,(SP) $TYPON ::PICKUP THE MODE :3L0AD ZERO FILL SWITCH ;:NUMBER OF DIGITS TO TYPE :sADJUST RETURN ADDRESS #1,80FILL #6,30MODE +1 #5,80CNT R3,=(SP) R&,=(SP) RS,=(SP) $OMODE+1,R4 :2SET THE ZERO FILL SWITCH ssSET FOR SIX(6) DIGITS ::SET THE ITERATION COUNT :sSAVE R3 ;SAVE Ré& ::SAVE RS :2GET THE NUMBER OF DIGITS TO TYPE #6 R4 R4, SOMODE $OFILL R4 12(SP) RS R3 5] 3% RS By RS RS,.R3 ssSUBTRACT 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 R& R3 $OMODE 7% #\77770,R3 4% ::GET LSB OF THIS DIGIT ::TYPE THIS DIGIT? s:BR IF NO :sGET RID OF JUNK ::TESY FOR O 5% 2:BR !f YES R4 R& ::SUPPRESS THIS 0? ::DON'T SUPPRESS ANYMORE 0'S CZRJOAD RPO7 PERF EXER MACRO V04.00 1=JAN=B3 12:06:52 PAGE 46-1 K13 SEQ 0166 BINARY TO OCTAL (ASCII) AND TYPE 36352 052703 000060 036362 036%66 036372 110337 106401 105;37 036426 036426 036430 osegse os%rg§ 000040 036376 036400 036402 036404 036406 036410 036412 036414 036422 036424 036426 036427 036430 036431 036432 003347 oogaoz 005204 000744 012605 012604 012603 016566 012616 000002 000 000 000 000 000000 58: 7%: 6%: 000002 000004 8$: $OCNT: $SOFILL: $OMODE: BIS BIS #'0,R ::MAKE THIS DIGIT ASCII MOVB TYPE DECB 'R BGT BLT INC BR R3,8% g8 $OCNT 2% 13 Rl 28 (SP)+,RS (SP)+.R& (SP)+.R3 2(SP),4(SP) (SP)+,(SP) $:SAVE FOR TYPING 1360 TYPE THIS DIGIT $SCOUNT BY 1 *:BR IF MORE TO DO ::BR IF DONE :INSURE LAST DIGIT ISN'T A BLANK 1360 DO THE LAST DIGIT MOV MOV MOV MOV MOV RT] BYTE RYTE .BYTE .BYTE .WORD 0 0 0 0 0 $'MAKE ASCII IF NOT ALREADY ::RESTORE P:RESTORE $:RESTORE JsSET THE RS Ré& R STACK FOR RETURNING : sRETURN *:STORAGE FOR ASCII DIGIT ssTERMINATOR FOR TYPE ROUTINE ;s0CTAL DIGIT COUNTER $32ERO FILL SWITCH :sNUMBER OF DIGITS TO TYPE CZRJOAQD RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE &7 CONVERT BINARY TO DECIMAL AND TYPE ROUTINE .SBTTL b 1% SEQ 0167 CONVERT BINARY TO DECIMAL AND TYPE ROUTINE RL T R e T R Y 'YNIS 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 IS POSITIVE OR NEGATIVE A SPACE OR A MINUS SIGN WILL BE TYPED s*BEFORE THE FIRST DIGIT OF THE NUMBER. LEADING ZEROS WiILL ALWAYS BE :'gi:tl(fo WITH SPACES. e 036434 036434 036436 036440 036442 036444 010 010 010 010 010 036452 036456 036460 016 100 005 036446 036252 012 020200 112 000055 036470 036472 005 012 036502 0365064 036510 036512 036514 036516 036520 036522 036524 ososge 036530 036532 036534 036536 005 016 160 036476 036544 036550 036554 036556 036560 036564 $TYPDS: 112 000040 036640 1%: 28: 38: 4%: cg: 000001 000060 000040 6%: 7%: 036606 036610 036612 036614 036616 MOV MOV MOV MOV MOV RO,=(SP) R1,=(SP) R2,=(SP) R3.=(SP) RS . =(SP) ::PUSH ::PUSH ::PUSH :3PUSH $3PUSH MOV BPL NEG 20(SP) .RS 1% RS S:GET THE INPUT NUMBER S:BR IF INPUT IS POS. PiMAKE THE BINARY NUMBER POS. MOVB CLR MOV Move #' ,(R%)+ STACK STACK STACK STACK STACK $3SET BLANK SWITCH AND SIGN SiMAKE THE ASCII NUMBER NEG. ::7ERO THE CONSTANTS INDEX $:SETUP THE OUTPUT POINTER $:SET THE FIRST CHARACTER TO A BLANK BIS MOVB 8 .R? R2,(R3)+ S:MAKE IT A SPACE IF NOT ALREADY A DIGIT $3PUT THIS CHARACTER IN THE OUTPUT BUFFER BIS MOV 9%: RO #$DBLK ,R3 ON ON ON ON ON ::CLEAR THE BCD NUMBER $3GET THE CONSTANT : SFORM ru:s BCD DIGIT ::BR IF DONE ..xucnense THE BCD DIGIT BY 1 BGT 1727777 #'=,1(SP) RO R1 R2 R3 RS ROUTINE R2 $DTBL (RO) ,R1 1,RS 43 R2 38 R1,RS 2 5% (SP) 7% (SP) 33 1(SP),=1(R3) BLT 8s: #20200,-(sP) $3G0 TO THE CLR MOV SUB BLT INC BR ADD ST BNE 1STB BM] ASLB BCC MOVB CMP 036570 036600 ::PUT _THE BINARY NUMBER ON THE STACK ST 000010 036566 036572 036574 036576 NUM, = (SP) TYPDS MOV 000020 036650 MoV #'0,R2 (RO) + RO,#10 ..Jusr INCREMENT ING :CHECK THE TABLE INDEX ..co oo THE NEXT DIGIT RS,R2 ..cew THE so 2 33 (SP)+ 9% CLRB (R3) MOV MOV MOV MOV :3MAKE THE BCD DIGIT ASCII gs BR TSTB BPL MOVB ::ADD BACK THE CONSTANT :3CHECK IF BCD DIGIT 0 :sFALL THROUGH IF 0 ..STILL DOING LEADING 0°'S? ..e IF YES MSD? ::BR IF NO SIYES==SET THE SIGN =1(SP),=2(R3) (SP)+,RS (SP)+,R3 (SP)+.R2 (SP)+.R1 0 EXIT ..co CHANGE TO ASCII WAS THE LSD THE FIRST NON-ZERO? :iBR IF NO ::YES==SET THE SIGN FOR TYPING ..ser THE TERMINATOR $:PCP $:POP 1:POP $:POP STACK STACK STACK STACK INTO RS INTO R3 INTO R2 INTO R1 -83 12:06:52 PAGE 47-1 1-JAN 0 V04.0 MACRO EXER PERF RPO7 AO CZRJO NE ROUTI TYPE AND CONVERT BINARY TO DECIMAL 036620 0126010 036650 036622 10440 6 000002 000004 036626 016666 036634 036636 036640 036642 01261 000002 023420 001750 036644 000144 036646 000012 036650 Mov TYPE Mov (SP)+,RO $DBLK 2(SP),4(SP) 100. 10. .BLKW & MoV RTI $DTBL: 10000. 1000. $DBLK: (SP)+,(SP) SEQ 0168 mi13 RO ;:POP STACK_INTO R NUMBE THE TYPE ::NOW STACK THE UST ;sADJ ;sRETURN TO USER CZRJOAD kPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 48 N 13 SEQ 0169 APT COMMUNICATIONS ROUTINE .SBTTL 036660 1127;7 036674 000403 036704 036706 010046 010146 036666 8%2952 036710 026714 036716 036724 ossr§ 03673¢ 036736 036742 036750 036754 36756 036762 112737 112737 037126 $ATY1: 000001 037124 g:};t: 000001 037122 010037 001222 1057;0 000100 001227 000004 000002 001206 000004 037030 833332 004737 000000 035652 037036 037042 037044 037050 037052 037056 037060 037066 105737 001416 005737 001413 005737 001375 017637 062766 037124 037100 037104 037110 037114 037116 037120 osr12§ 03712 037124 105037 105037 105037 012601 012600 000207 000 000 000 037154 037123 037122 000001 000100 000040 SATY3: 1%: 28: 00122¢ 001224 000004 0G:206 000004 000002 037034 000004 177776 3$: gg: 108: 001206 000004 000002 AR MOVB A MOVB BR MOVB 1STB BEQ CMPB BNE BITB BEQ MOV ADD ST BNE 118: 001210 000004 12%: $MFLG: $LFLG: $FFLG: ARl #1,$FFLG R R0 R0 ::70 REPORT FATAL ERFOR R #1.SMFLG ::T0 TYPE A MESSAGE #1,3FFLG ::T0 ONLY REPORT FATAL ERROR RO,=(SP) R1.=(SP) ::PUSH RO ON STACK $:PUSH R1 ON STACK 1% SITF NOT: $SATYC $MFLG 5$ ¥APTENV,SENV 33 WAPTSPOOL,SENVM 3 a4 (SP) ,RO #2,4(SP) $MSGTYPE WAIT RO, SMSGAD 8NE SUB ASR MOV MOV BR MOV ADD 2% $MSGAD , RO RO RO, SMSGLGT #4.SMSGTYPE 5$ 34 (SP) .48 #2,4(SP) JSR LMORD PC,STYPE O 179776,-(SP) ::PUSH 177776 ON STACK TSTB BEQ 1ST BEQ ST BNE MOV ADD S$FFLG 12% SENV 128 $MSGTYPE 1% 84(SP) ,$FATAL #2,4(5P) : :SHOULD REPORT FATAL ERROR? $:1F NOT: BR :sRUNNING UNDER APT? :SIF NOT: BR SiFINISMED LAST MESSAGE? SI1F NOT: WAIT ::GET ERROR # : :BUMP RETURN ADDR. C(LRB CLRB CLRB MOV MOV KIS .BYTE .BYTE '?5‘5 S$FFLG SLFLG SMFLG (5P)+,R1 (SP)+.RO PC 0 0 0 PSCLEAR FATAL FLAG $:CLEAR LOG FLAG ::CLEAR MESSAGE FLAG SPOP STACK INTO R1 $POP STACK INTO RO : SRETURN PIMESSG. FLAG 13L0G FLAG ::FATAL FLAG 178 INC APTSIZ2E = 250 APTENV = )01 APTSPOOL= 100 APTCSUP = 040 (RO)+ $SMSGTYPE 2R $:SHOULD TYPE A MESSAGE? ::1F NCT: BR ;;OPERATING UNDER APT? ::1F NOT: BR ;;SHOULD SPOOL MESSAGES? ::1F NOT: BR :3GET MESSAGE ADDR. ;sBUMP RETURN ADDR. ::SEE IF DONE W/ LAST XMISSION? MOV MOV 001226 037074 005237 001206 000200 AR MOV MOV 001226 001376 163700 006200 010037 012737 000413 017637 oogree 013746 037122 000001 036764 036766 036772 0367764 037000 037006 037010 037016 037026 AR R 000001 105737 og1aso 122737 001031 132737 001425 017600 062766 005737 001375 A APT COMMUNICATIONS ROUTINE ::PUT ADDR IN MAILBOX ::FIND END OF MESSAGE ::SUB START OF MESSAGE ::GET MESSAGE LNG'4 IN WORDS S:PUT LENGTH IN MAILBOX S:TELL APT TO TAKE MSG. ;:PUT MSG ADDR IN JSR LINKAGE - BUMP RETJRN ADDRESS $:CALL TYPE MACRO ::TELL APT TO TAKE ERROR ] ) CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 49 4 RANDOM NUMBER GENERATGR ROUTINE .SBTTL A Pk SEQ 0170 RANDOM NUMBER GENERATOR ROUTINE AAASAAA A A AR AR A AR AR AR iRl ARl illlld) 'THIS ROUTINE IS A DOUBLE PRECISION PSEUDO RANDOM NUMBER GENERATOR ;*WITH A RANGE OF 0 TO 2(+33)- :'CALL: B 1 o M 027126 037126 037130 037132 037134 037140 037144 037150 037152 010946 010146 010246 013700 013701 012702 006300 006101 037156 037160 037164 001374 053700 005501 037154 037166 037172 03717¢ 037200 037204 037210 037214 037216 037220 037222 037224 037226 $RAND: 037226 037224 177771 005202 063701 062700 005501 062701 010037 010137 012602 012601 012600 000207 176543 123456 1%: JSR RETURN 037224 001057 047401 037226 037224 ssCALL THE ROUTINE ssRETURN HERE THE RANDOM s sNUMBER WILL BE IN 2 sSHINUM, $LONUM MOV MOV MOV MOV MOV MOV ASL ROL RO,=(SP) R1,=(SP) R2,=(SP) $SLONUM,RO $HINUM,R1 #-7,R2 RO R1 ssPUSH RO ON STACK ::PUSH R1 ON STACK ssPUSH R2 ON STACK ssSET RO WITH LOW :2SET R1 WITH HIGH ssSET SHIFT COUNT ::SHIFT RO LEFT AND sROTATE CARRY INTO R1 AND BNE ADD ADC 1% $LONUM, R0 R1 +sCONTINUE SHIFT LOOP :+sADD NUMBER TO MAKE X 129 : :PROPOGATE CARR INC 037226 PC,$RAND ADD ADD ADC ADD MOV MoV MOV MOV MOV RTS $HINUM: .WORD $LONUM: .WORD R2 $SHINUM,R1 $:CHECK FOR DONE :sADD NUMBER TO HAKE X 129 #1057,RC R1 #47401,R1 RO, SLONUM R1,SHINUM (SP)+ ,R2 (SP)+,R1 ssADD LOW CONSTANT : sPROPOGATE CARRY :sADD HIGH CONSTANT ..SAVE RO JSAVE R1 ::POP STACK INTO R2 ;sPOP STACK INTO R1 PC 176543 123456 s sRETURN (SP)+,R0O ..POP STACK INTO RO CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 50 SAVE AND RESYORE RO=R5 ROUTINES .SBTTL . 14 SEQ 0171 SAVE AND RESTORE RO=R5 ROUTINES """""'Q""'"""""t".'t"'.'"'.""'Q"".""t"." 'SAVE RO-R5 CAL " SAVREG 'UPON RETURN FROM $SAVREG THE STAC¥ WILL LOOK LIKE: 'TOP---(*16) .'01 2---R1 s*+14--=R0 037230 037230 037232 037234 03723 037240 037242 037244 037250 037 037 037264 $SAVREG: 0 0 0 0 0 0 0 MoV RO,=(SP) :sPUSH RO ON STACK MOV MOV MOV RTI 22(SP) ,=(SP) 22(SP) ,=(SP) 22(SP) ,=(SP) s:SAVE PC OF MAIN FLOW +sSAVE PS OF CALL s sSAVE PC OF CALL MOV MOV MOV MOV MOV MOV 0 0 000002 R1,=-(SP) R2,=(SP) R3,=(SP) R4 ,=(SP) R5,=(SP) 22(SP) ,=(SP) :sPUSH R1 :sPUSH R2 ::PUSH R3 :sPUSH R4 ::sPUSH R5 ::SAVE PS ON STACK ON STACK ON STACK ON STACK ON STACK OF MAIN FLOW ssRESTORE ssRESTORE s;RESTORE s;RESTORE PC PS PC PS *RESTORE RO-R5 s*CALL: 037266 037266 037272 037276 037302 037306 037310 037312 037314 037316 037320 037322 :* 012666 012666 012666 012666 012605 012604 012603 012602 012601 012600 000002 000022 000022 000022 000022 $RESREG: RESREG MoV MOV MOV MOV MOV MOV MOV MOV MOV MOV RTI (SP)+,22(SP) (SP)+,22(SP) (SP)*.%Z(SP) (SP)+,22(SP) (SP)+,R5 (SP)+ R4 (SP)+,R3 (SP)+,R2 (SP)+ ,R1 (SP)+,RO ::POP ::POP ::POP ::POP ::POP ::POP STACK STACK STACK STACK STACK STACK OF CALL OF CALL OF MAIN FLOW OF MAIN FLOW INTO R5 INTO R4 INTO R3 INTO R2 INTO R1 INTO RO CZRJOAOD RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 51 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE SBTTL A y 14 SEQ 0172 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE AR A Al A A R R R R R R R R R R R R R 2R R 2 22222 I ;*THIS ROUTINE WILL CONVERT A 32-BIT BINARY NUMBER TO AN UNSIGNED :'gSCIH?bE(ASCII) NUMBER. THE SIGN OF THE BINARY NUMBER MUST BE ;*POSIT teCALL e MOV ie RETURN $DB2D: SAVREG MOV MOV MOV I 037324 037326 037332 037336 037342 037344 037346 037354 037360 037364 037366 104412 016602 012700 010066 012201 01220; 012737 0127064 012705 005003 005602 161502 oozaog 00520 000772 062401 005502 062402 022525 037416 037420 037422 037424 037456 037430 037432 037436 037436 037440 037442 037444 037446 037450 037452 037454 037456 110320 005327 000000 001357 105020 104413 000207 145000 035632 160400 oogros 113200 000230 041100 000017 103240 000001 83;223 052703 853‘53 037464 oorgso 037466 037470 037472 000012 037434 037436 161401 037370 037372 037374 037376 037400 037402 037404 037406 037410 037412 000002 037504 000002 000000 000144 000000 1$: 38: PC,an$DB2D ;:POINTER TO LOW WORD OF BINARY NUMBER ::THE FIRST ADDRESS OF $31S ON THE STACK 2(SP) ,R2 #SDECVL ,RO RO,2(SP} ASCIZ ::SAVE REGISTERS ::PICKUP THE DATA POINTER 1:GET ADDRESS OF *'SDECVL'' STRING ::PUT ADDRESS OF ASCIZ STRING ON STACK ;:PICKUP THE BINARY NUMBER MOV MOV #10.,4$ #STNPWR, R4 ;:SET UP TO DO 10 CONVERSIONS :;ADDRESS OF TEN POWER SUB (R&) ,R1 MOV 037422 #PNTR,=(SP) (RE)+,R1 MOV 28: 000060 JSR MOV CLR SBC SUB BLT INC BR ADD ADC ADD CMP BIS MOVB DEC 48: .WORD BNE CLRB RESREG RTS $TNPWR: 145000 35632 160400 2765 113200 230 041100 17 103240 1 33420 1750 0 144 0 (R2)+.R2 #STNPWR+2,RS R3 R2 (RS) ,R2 3 R3 2% (R4)+,R1 R2 (R&)+,R2 (RS)+ . (RS)+ #'0,RS R3,(R0)+ (PC)+ 0 1% RO+ PC ::CLEAR PARTIAL P:SUBTRACT TEN POWER ::BR IF TEN POWER TO LARGE S3ADD 1 TO PARTIAL ::L00P :RESTORE SUBTRACTED VALUE ;:MOVE TO NEXT TEN POWER +:CHANGE PARTIAL TO ASCII SISAVE IT : ;DONE? ::BR IF NO : STERMINATOR ::RESTORE REGISTERS :RETURN 131.0E09 ::1.0€08 ::1.0€07 ::1.0E06 ::1.0€05 ::1.0E04 ::1.0€03 ::1.0€02 (ZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 51-1 E 14 SEQ 0173 DOUBLE LENGTH BINARY TO DECIMAL ASCII CONVERT ROUTINE 037474 037476 €37500 037)02 037504 000012 000000 000001 000000 12 0 1 0 $DECVL: .BLKB ::1.0€E01 ::1.0€00 12. : sRESERVE STORAGE FOR ASCIZ STRING F 14 CIZRJOAO RPO7 PERF EXER MACRO VO 4,00 1-JAN=83 12:06:52 PAGE 52 DOUBLE LENGTH BINARY TO OCTAL ASCII CONVERT ROUTINE .SBTTL SEQ 0174 DOUBLE LENGTH BINARY TO OCTAL ASCII CONVERT ROUTINE AL AASAALASAAAAL LA RA AR AR AR ARl lllllll) 'THIS ROUTINE WILL CONVERT A 32-BIT UNSIGNED BINARY NUMBER TO AN 'UNSIGNED OCTAL ASCIZ NUMBER. *CALL .~ MOV e RETURN $0B20: SAVREG MOV e 037520 037522 104412 016501 ooooo; 037532 037536 01%706 012703 000014 177770 0375%6 037542 037544 037546 037550 037552 03755¢ 037556 037560 037562 037566 037570 037572 012705 012100 015101 005002 110245 010002 005304 003007 001405 005205 010566 104413 000207 037574 006203 037600 006000 037576 000002 006001 006000 006001 006000 040302 037620 037622 00075 062702 3s 000060 PC,ar$DB20 (R1)+.R1 R2 RZ,=(RS) RO,R2 RG 3g 28 RS R5,2(SP) PC ROR R1 ROR ROR ROR ROR BIC ADD BR $OCTVL: .BLKB THE FIRST ASCIZ CHAR. ..DO ELEVEN CHARACTERS *MASK RESREG RTS ROR t:THE ADDRESS OF #12..R4 #°C7.R3 (R1)+,R0 ASR $3CALL THE ROUTINE :sSAVE ALL REGISTERS ‘PICKUP THE POINTER TO LOW WORD MOV MOV CLR MOVB MOV DEC BGT BEQ INC ::POINTER TO LOW WORD OF BINARY NUMBER 2(SP),R1 #$OCTVL+13..RS MOV 28: #PNTR,=(SP) MOV MOV MOV 1%: 006001 037602 037604 037606 037610 037612 037614 03763 JSR R3 RO ::POINTER TO DATA TABLE ..LOUER WORD HIGH WORD :STERMINATOR :3PUT CHARACTER IN DATA TABLE PSGET THIS DIGIT :COUNT THIS_CHARACTER en IF NOT THE LAST DIGIT R IF IT IS THE LAST DIGIT ALL DIGITS DONE-ADJUST POINTER FOR FIRST “ASCIZ CHAR. & PUT 1T ON THE STACK i*RESTORE ALL ascxsrens SRETURN TO USER ..POSITION THE MASK FOR THE LAST DIGIT ‘POSITION THE BINARY *UMBER FOR i THE NEXT OCTAL DIGIT R1 RO R1 RO R3,R2 ::MASK OUT ALL JUNK 1% 14, 2360 PUT IT IN THE DATA TABLE :RESERVE DATA TABLE #0,R2 IS ON THE $iMAKE THIS CHAR. ASCII STACK CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 53 POWER DOWN AND UP ROUTINES .SBTTL 012737 037654 037656 037660 010046 010146 01o§46 037666 010546 040012 000026 037646 0157§7 000340 oooogc 037662 037664 037670 037674 037700 037706 037710 010637 012737 000000 000776 AR AR R0 R0 RRdd000RRRRR]]) 3345 NPWRVEC+ ..#ax 0:7 MOV MOV -(SP) R&.=(SP) MOV -(SP) a1 .=(SP) a;,=(SP) RS.=(59) MOV aSWR, = (SP) HALT BR .2 MOV MOV 000024 ;:SET ron FAST UP MOV MOV MOV MOV 141260 040016 037712 SEQ 0175 *BOWER DOWN ROUTINE $PWRDN: MOV #SILLUP,#PURVEC 010346 010446 017746 14 POWER DOWN AND UP ROUTINES MAAAALAAA 037640 ’ :PUSH RO ON STACK $:PUSH R1 ON STACK ::PUSH R2 ON STACK ::PUSH R3 ON STACK $3PUSH R4 ON STACK ::PUSH RS ON STACK ~::PUSH aSWR ON STACK SP,$SAVRG ¥SAVE SP aspuaup Q#PWRVEC :;SET UP VECTOR : ;HANG UP t"t"'tttttt'tt'"'t"""tt'Qtt!ttt'tttttltt'ttt't'l"ttt"it 037712 015737 040012 osrrga 005037 (40016 037720 037730 037734 013706 005237 001375 040016 000024 040016 003775 012677 012605 012604 012603 012602 012601 012600 040000 040002 104401 040022 037764 037772 040004 040006 040010 040012 040014 040016 012737 012737 28: 1461204 037640 000340 000024 000026 012716 040044 DEC BLE MOV MOV MOV MOV MOV MoV MOV TYPE .WORD RT] SILLUP: HALT BR $SAVR6: 0 012 7 8 13 11 040044 1; 040050 13 040052 14 060054 INC BNE MOV $PWRAD: .WORD 000002 000000 000776 000000 200 CLR MOV MOV $PWRMG: E 040020 000000 2 040022 MOV 1$: 037736 005337 040020 037742 037744 037750 037752 037754 037756 037760 037762 POUER UP ROUTINE fPHRUP MOV 042 #SILLUP,a#PWRVEC .. SET FOR FAST DOWN $SAVRG, SP SGET SP $SAVR6 ..unxr LOOP FOR THE TTY PWRFLG -itv WAIT LOOP & SET POWER FAIL FLAG $SAVR6 1% ..qur FOR THE INC ::0F WORD 2% (SP)+,aSWR (SP)+,RS (SP)+,R4 (SP)+,R3 (SP)+ ,R2 (SP)+,R1 (SP)+ RO ‘WAIT ..POP ::POP ::POP .,POP :POP ..POP :POP FOR FLAG= 1 STACK INTO aSWR STACK INTO RS STACK INTO R4 STACK INTO R3 STACK INTO R2 STACK INTO R1 STACK INTO RO MSGPWR ..REPOR! THE POWER FAILURE ssPOWER FAIL MESSAGE POINTER #$PWRON, a#PWRVEC' ..ser UP THE POWER DOWN VECTOR #340,9#PURVEC+2 ;:PRIO:7 (PC)+,(SP) PWRUP =2 RESTAR! AT PWRUP ..RESTARt ADDRESS ,.THE POWER UP SEQUENCE WAS STARTED 3 BEFORE THE POWER DOWN WAS COMPLETE 2:PUT THE SP HERE PWRFLG: .WORD O "ESE:"‘ <CRLF>SLF>/"'POWER UP'* AT / LASCIZ ;POWER FAIL FLAG GOES HERE; ‘& .LED= 1 sTHIS ROUTINE HANDLES INE RE!URN ON POWER UP. WAIT THREE (3) MINUTES AND DO AN AUTO RE=START TO *SIZMEM® 005;27 001375 000005 005037 000000 177776 PWRUP: INC BNE RESET CLR #0 .= PS :TTY LOOP, WAIT FOR INCREMENT :0F WORD :CLEAR rns WORLD ‘CLEAR PSW a — Q. NONTVGNNINIMM=OOSN *ar*acr-et4x<[=atoatDatOLatat[a=~t.a2-tataW«oAtaCUaWtuVnataOOtoaV-oVar—vt2waxWrvwa4OorhrVCwe<eSO—4R-[ N2©WO—MO-NACT-nON2OeT-O~O05(©©A00N-NMTONVA9NML00-TOP%ANOTO0VL-OUTNO40OMo0TM0PMeN00Tt0VNOO©O =O O1TONJ0~0iITTOe0=MOAO0O10NT=0=NNMr0TBOT0ItPrO01T=IO0=TON0MIOLTNV0T0OCFO=W01TO=tTNO00YMTN~OON0AN0V1TT<=M70MAO0W—O=eTDFNN=0I—10eTONDN—O-TNtP=J0OOA0MLON1eOIOlNM0OT0—TOD TM~ VvoY NV LV TN IT MIN —SNNYVU~/£OLNA-ORoO@WZOOIRA3X«T€N&RxXOZS-Oo NO >-@ED3MAV<3D=—MVEVOLAACTCJD=KITNEVUXINZTNMUV-DVEOLsVEIZSOr—s—DEWOLwSILbSrACO-LSADM.OS%VO-v)Lr[VI¥WJo[24xxVaoo=9XOv2< m0 w—W2—Ow=EO=2-xw>0ZnAaT—2ZEwWJ>= WI2XYu—0IudCMO2—w>¢SO 0VOWT> O0-Duw~JwWVXw@—INxed>Wo4DWWDUII¢u|W XVn—QJWC—I_2OEmUMWVNIOWXEEA2EVUOOtAGX -w@ w.v— |x2-=Lwp 39 OMNMN~MNM .EVEN o[=) =E 2 We-—2gx @M oO o< a— o[k > Oo MmN POWER DOWN AND UP ROUTINES CZRJOAO RPO7 PERF EXER MACRO Vv 04.00 1=-JAN=83 12:06:52 PAGE 53-1 H 14 SEQ 0176 <CRLF>/TYPE “C TG ABORT/ <CRLF>/WAITING 3 MINUTES...TO START/<(CRLF> W(2w0GE> [+ 4— - I 14 CZRJOAQ RTM07 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 54 SEQ 0177 TRAP DECODER 1 .SBTTL TRAP DECODER HAAAALAAL LA A A A AR A AR AR AR AR A AN AR AR AR A ARl lll]) 'TNIS 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. 040256 010046 040264 040266 040270 040272 040276 005740 111goo 006300 016000 000200 040260 016600 $TRAP: 000002 040312 MOV RO, =(SP) ST MOVB ASL MOV RTS =(R0} (RO).RO RO $TRPAD(RO) ,RO RO MOV :SAVE RO 2($P) RO ..cer TRAP ADDRESS ::BACKUP BY 2 S3GET RIGHT BYTE OF TRAP ..POSITION FOR INDEXING ;;INDEX TO TABLE :360 TO ROUTINE ;sTHIS IS USE TO HANDLE THE "'GETPRI'' MACRO 040300 040302 040310 011646 016666 000002 000004 000002 $TRAP2: MOV MOV RTI .SBTTL (SP) ,=(SP) 6(SP) 2(SP) :sMOVE THE PC DOWN ::MOVE THE PSW DOWN :sRESTORE THE PSW TRAP TABLE s*THIS TABLE CONTAINS THE STARTING ADDRESSES OF ;*BY THE "'TRAP'' INSTRUCTION. ; 040312 040300 040326 034020 040330 040332 040334 0403 040340 2 0460342 03373 4%7 03436 040314 040316 040320 040322 040324 035652 036232 036206 036246 036434 THE ROUTINES CALLED ROUT INE $TRPAD: .WORD S$TYPE $TYPOC $TYPOS $TYPON $TYPDS $GTSWR $CKSWR $RDCHR SROLIN $SAVREG SRESREG $ DSPLY $TERM=,-$TRPAD $TRAP2 s sCALL=TYPE ;:CALL=TYPOC ::CALL=TYPOS ;;CALL=TYPON ::CALL=TYPDS TRAP+1(104401) TRAP+2(104402) TRAP+3(104403) TRAP+4(104404) TRAP+5(104405) TTY TYPEOUT ROUTINE TYPE OCTAL NUMBER (WITH LEADING ZEROS) TYPE OCTAL NUMBER (NO LEADING ZEROS) TYPE OCTAL NUMBER (AS PER LAST CALL) TYPE DECIMAL NUMBER (WITH SIGN) ::CALL=GTSWR TRAP+6(104406) GET SOFT=SWR SETTING ::CALL=CKSWR ;;CALL=RDCHR ::CALL=RDLIN ; ; CALL=SAVREG ::CALL=RESREG ;:CALL=DISPLY TRAP+7(104407) TRAP+10(104410) TRAP+11(104411) raApo1§(1oaa1§ TRAP+13(104413) TRAP+14(104414) TEST FOR CHANGE IN SOF T=SWR TTY TYPEIN CHARACTER ROUTINE TTY TYPEIN STRING ROUTINE SAVE RO-RS ROUTINE RESTORE RO-RS ROUTINE ROUTINE TO TYPE ERROR MESSAGES CZRJOAQ RPO7 PERF EXER MACRO VO04.00 1-JAN-83 12:06:52 PAGE 55 J 14 - RPO7 DRIVER .SBTTL S % 16 040344 040354 040364 040374 040404 040414 0604%& 17 040434 ;STORAGE FOR RPDS, RPER1, RPER2, AND RPER3 000000 000000 000000 000000 000000 000000 000000 000000 18 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 RPSTUO: RPSTU1: RPSTUZ2: RPSTUS: RPSTU4: RPSTUS: RPSTU6: RPSTU7: .WORD .WORD .WORD .WORD .wWwORD .wWwORD .WORD .wWwORD 8.0.0.0 .0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 0,0,0,0 :DS, :DS, :DS, :DS, :DS, :DS, :DS, :DS, ER1, ER1, ER1, ER1, ER1, ER1, ER1, ER1, :DRVACT=0 IF DRIVE IS IDLE 20 g} 000 000 000 000 000 000 000 000 DRVACT: .BYTE .BYTE .BYTE .BYTE BYTE .BYTE .BYTE .BYTE 0 0 0 0 0 0 0 0 ;DRIVE :DRIVE :DRIVE :DRIVE :DRIVE :DRIVE ;DRIVE :DRIVE 0 1 % & 5 6 7 ;TABLE OF DRIVE STATUS INDICATORS (DRVSTA=8 BYTES) ;DRVSTA=0 IF DRIVE IS OFFLINE OR NONEXSITENT sDRVSTA>0 IF DRIVE IS ONLINE :DRVSTA<O IF DRIVE IS UNSAFE 37 040454 38 040455 39 040456 000 000 000 DRVSTA: .BYTE .BYTE .BYTE 0 0 O ;DRIVE 0 ;DRIVE 1 :DRIVE g 42 0460461 43 040462 :g 0460463 000 000 000 .BYTE .BYTE .BYTE 0 0 0 :DRIVE 5 ;ORIVE 6 :DRIVE 7 000 000 46 4“7 48 49 zg 04047 61 BYTE .BYTE O 0 :DRIVE JORIVE & ;TABLE OF DRIVE TYPES (DRVTYP=8 BYTES) ;DRVTYP= 0 IF DRIVE IS NONEXISTENT (DRVSTA=0, ALSO) :DRVTYP= & IFf DRIVE 1S RPQ7+ ;DRVIYP= 5 IF DRIVE IS RPO7 MOVING HEAD OPTION :DRVTYP==1 [F NOT RPO7 g? 52 040464 53 040465 54 040466 55 040467 56 040470 57 040471 58 04047 FOR DRIVE 0 FOR DRIVE 1 FOR DRIVE i FOR DRIVE FOR DRIVE & FOR DRIVE 5 FOR DRIVE 6 FOR DRIVE 7 :DRVACT>0Q IF DRIVE IS ACTIVE WITH A COMMAND sDRVACT<O0 IF DRIVE IS ACTIVE WITH AN ERROR RECOVERY OPERATION 32 33 34 gg 40 0460457 41 0460460 ER2 & ER3 STORAGE ER2 € ER3 STORAGE ERZ2 & ER3 STORAGE ERZ & ER3 STORAGE ER2 & ER3 STORAGE ER2 & ER3 STORAGE ER2 & ER3 STORAGE ER2 & ER3 STORAGE ;TABLE OF DRIVE ACTIVE INDICATORS (DRVACT=8 BYTES) 19 23 0460444 24 040445 25 040446 26 040447 27 040450 28 040451 29 040452 g? 040453 RPO7 DRIVER 000 000 000 000 000 000 000 000 DRVTYP: .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE .BYTE 0 0 0 0 0 0 8 :DRIVE 0 ;DRIVE 1 :DRIVE ; :DRIVE :DRIVE & :DRIVE 5 :DRIVE 6 :DRIVE 7 ;TABLE OF DUAL PORT INITIALIZATION INDICATORS SEQ 0178 CIRJOAOlRP07 PERF EXER MACRO V04.00 '=JAN-83 12:06:52 PAGE 55-1 K 14 SEQ 0179 RPO7 68 65 040474 (==l =l=l=l=lele] j=i=l{=l=lellel=] (=lelelelelelel)] sDPINT=0 IF INITIALIZATION IS NOT ACTIVE ON THE DRIVE sDPINT<O IF INITIALIZATION IS IN PROGRESS DPINT: _.BYTE .BYTE BYTE BYTE .BYTE .BYTE .BYTE .BYTE 0 0 0O O 0 0 0 0 sDRIVE sDRIVE sDRIVE :DRIVE :DRIVE sDRIVE :DRIVE sDRIVE 0 1 g & § 6 7 sTABLE OF PENDING DUAL PORT REQUESTS sDPRQS=0 IF THAT A DUAL PORT REQUEST IS NOT PENDING FOR THAT DRIVE DPROS(O IF THAT A DUAL PORT REQUEST IS PENDING FOR THAT DRIVE DPRQS: 85 040513 .BYTE .BYTE BYTE .BYTE .BYTE .BYTE .BYTE BYTE 0 0 0 0 0 0 0 O sDRIVE 0 sDRIVE sDRIVE sDRIVE sDRIVE sDRIVE sDRIVE sDRIVE 1 2 3 & § 6 7 :IRANSFER WAIT FLAG (TRNSWT=1 WORD) THIS 1S A ONE WORD QUEUE. IT WILL CONTAIN THE ADDRESS OF :"DPB'* OF THE 1/0 OPERATION. 91 040514 000000 TRNSWT: .WORD O sSEARCH WAIT KEYS (SRCHWT=1 WORD) sTHIS IS A ONE WORD QUEUE THAT WILL :THE DRIVES THAT ARE PERFORMING A SE :REQUEST THAT IS AT THE TOP OF THEIR NPV B b e T e e e ek b i S S S R . e Y b 2 O OO OCOOOOOO W =OOVONPWVSWN -0V :EACH DRIVE IS ASSIGNED ONE BIT, STAR 000000 SRCHWT: .WORD AIN A KEY FOR EACH OF OMMAND FOR THE 1/0 ST QUEUE. AT BITOO FOR DRIVE 0. 0 :RPO7 DRIVER ACTIVE FLAG (ACTDRv=1 BYTE) sACTDRV=0 IF DRIVER IS INACTIVE :ACTDRV>0 IF DRIVER IS ACTIVE 040520 000 ACTDRV: .BYTE 0 : SOF TWARE TIHER RO "INE ACTIVE FLAG (ACTSTR=1 BYTE) sACTSTR=0 . SOFTWARE TIMER ROUTINE IS INAC :ACTSTR>0 i SOFTWARE TIMER ROUTINE IS ACTI 040521 000 ACTSTR: .BYTE 0 sSAVE REGISTERS F AG (SAVEFG=1 WORD) sSAVEFG <0 IF SAVE THE RHXX/RPO7 REGISTERS WHEN THE :OPERATION IS COMPLETED AS PER_(DPB+14) ;SAVEFG=0 IF SAVE THE RHXX/RPO? REGISTERS, AS PER :(DPB+14), AFTER AN ERROR. L 14 F-lal o~N o JOAQ cgg7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 55-2 SEQ 0180 7 DRI 119 040522 1%0 SAVEFG: 000000 128 129 130 131 132 040526 133 040530 134 060532 135 040534 136 040536 137 040540 138 040542 139 040544 140 14 142 143 144 145 040546 146 147 148 149 150 151 040550 152 040551 153 040552 154 040553 155 040554 156 040555 157 040556 158 040557 159 sFOR A DATA TRANSFER START A SEARCH COMMAND s SEEKFG<O IF DATA TRANSFER WILL DO IMPLIED SEEKS, sDISREGARD THE WINDOW 177777 SEEXKFG: 166 167 168 169 040570 170 n 17% 173 17 175 .WORD =1 ; TIMEOUT TABLE (TIMER=8 WORDS) sTHIS TABLE CONTAINS THE TIME ALLOWED FOR AN OPERATION 177777 177777 177777 177777 177777 177777 177777 177777 TIMER: .WORD +WORD WORD +WORD +WORD .WORD +WORD WORD =1 =1 =1 -1 =1 =1 =1 =1 ;DRIVE ;DRIVE :DRIVE :DRIVE :DRIVE ;DRIVE :DRIVE ;DRIVE 0 1 g & 5 6 7 ;DATA TRANSFER UNDERWAY INDICATOR (DTUW=1 WORD) ;DTUWCO IF NO DATA TRANSFER UNDERWAY :DTUW=+N (WHERE N=0 TO 7) IMPLIES DATA TRANSFER UNDERWAY ON DRIVE N DTUW: 177777 .WORD =1 AITENTION BITS TABLE (ATABIT=8 BYTES) THIS TABLE CONTAINS THE CORRESPONDING BIT TO EACH DRIVES :ATTENTION BIT ATABIT: 001 002 004 010 020 040 100 200 .BYTE BYTE .BYTE .BYTE 1 2 & 10 .BYTE 40 .BYTE .BYTE .BYTE ;DRIVE :DRIVE :DRIVE :DRIVE 0 1 2 3 20 :DRIVE & 100 200 :DRIVE 6 :DRIVE 7 :DRIVE 5 ;STORAGE FOR RPADR (THE FIRST ADDRESS (776700) OF THE RHXX/RPQ7), 160 161 162 162 040560 164 040562 165 040566 O ;SEEK FLAG_(SEEKFG=1 WORD) sSEEKFG=0 IF WHEN THE DISK ADDRESS ISN'T IN THE WINDOW il i 1264 125 126 127 040524 .WORD *RPVEC (THE VECTOR ADDRESS (254)), AND RPVEC+2 (THE BR LEVEL (5)). 176700 000254 000050 000240 RPADR: RPVEC: RHEXT: ,.WORD .WORD .WORD 176700 g54.5'32. 0 sRHXX/RPO7 CONTROL STATUS REGISTER :VECTOR ADDRESS & BR LEVEL 5 ;OFFSET TO RPBAE sSEARCH DIFFERENCE IS 1 SECTOR 000001 MXWNDW: .WORD 1 ;DEFINITIONS OF THE RHXX/RPO7 ADDRESS INDEXES 000000 000002 000004 RPCST RPW( RPBA =0 =2 =4 ;CONTROL AND STATUS REGISTER #1 (DRIVE REG. 00) :WORD COUNT REGISTER (NOT A DRIVE REG) :UNIBUS ADDRESS REGISTER (NOT A DRIVE REG) v 1-JAN-83 V04.00 EXER MACRO V04.00 RPO7 PERF CZRJOAQ 12:06:52 PAGE 55-3 1-JAN-83 12:06: EXE ERF ORIVER "0; SEQ 0181 —JZWEWDEN= 0 0ON-A0-0000 M1 =N-W—M SCW—O>—N-OEXxw [«< B-L) ov - gg JOA olngor PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 56 1 SEQ 0182 RHXX/RPO7 DRIVER INITIALIZATION CODE § sTHIS ROUTINE WILL DETERMINE WHICH RPO7 DRIVES ARE :AVAILABLE FOR TESTING AND SET THE DRVSTA INDICATOR :TO THE PROPER STATE FOR EACH DRIVE. A 2 :NOTE: THIS ROUTINE CALLS DRVINT JSR PC,RPINIT g sCALL 9 ; }i sNOTE: THE 'P' OR 'L' CLOCK MUST BE STARTED 3 }? 14 040572 15 040574 16 040600 17 040606 10 01 01 O 177776 000240 045772 19 040616 O1 0460524 24 060630 01 040546 29 040644 00 0460454 18 040612 20 040622 21 0606264 gg 040626 25 0460634 26 060640 gg 040642 O1 00 02 10 01 02 10 040344 177777 RETURN RPINIT: SAVREG MOV MOV JSR MOV 1%: 28: MOV CLR CMP BLO aNPS,=(SP) #<5+%82.5>,3#PS PC, CLRQUE ;SAVE RO = RS *SAVE THE PRESENT PROCESSOR STATUS :CHANGE THE PRIORITYT0O 5 :CLEAR ALL REQUEST oueues #SEEKFG.R2 SLAST ADDRESS TO BE CLEARED #RPSTUO,R1 (R1) + R1,R? 18 *FIRST ADDRESS TO BE CLCARED :CLEAR :ARE WE DONE? :BRANCH IF NO MOV #DTUW,R2 ;LAST ADDRESS CLR DRVSTA ;SET ALL DRIVES TO OFFLINE MOV CMP BLOS #-1,(R1)+ R1,R2 2% : INITIALIZE :DONE? $LOOP IF NO 30 040650 31 040654 32 040660 33 040664 00 00 00 01 040456 040460 040462 040562 CLR CLR CLR MOV DRVSTA+2 DRVSTA+4 DRVSTA+6 RPVEC,R3 :SETUP THE RHXX/RP07 VECTOR 36 040700 01 040560 MOV RPADR FIRST ADDRESS OF RHXX/RP07 3% 040670 35 040674 O1 01 37 040704 01 38 040712 39 040714 40 040720 :1 040722 043174 040564 000040 040750 ef 040724 04604564 45 040732 177770 47 060740 48 060744 127776 44 060730 46 060736 49 060746 MOV MOV MOV 38: 4$: 5%: CLR JSR #ISR, (R3)+ apveéoz (R3) caxros RPCS2(R4)" :MASSBUS INIT R1 xuxr THE DRIVE 5% :NORMAL RETURN BR 43 CLRB DRVSTA(R1) BIC #°C7.R1 8R INC BNE MOV RESREG RTS +START WITH DRIVE © ao DRVINT R1 $ (SP)+,a#Ps P( S'DVA' NOT SET OR PARITY ERROR ;SET DRIVE STATUS TO OFFLINE :G0 TO NEXT DRIVE *MASK OUT UNUSED elts *BR IF MORE DRIVES TO GO assvons THE PROCESSOR STATUS ‘RESTORERO= RS :BYE-BYE CZRJOAO RPO7 PERF EXER MACRO V04.00 1=JAN=-83 12:06:52 PAGE 57 SEQ 0183 RPO7 DRIVER 1 :DRIVE % INITILIZATION ROUTINE -THIS R?UT!NE DETERMINES IF A DRIVE EXIST AND Ii (AN RPO7, A 5 g ok MOV }g 3 RE TURN2 14 15 040750 177777 040474 18 040762 023420 040526 21 040772 040454 33 040770 22 040776 23 041002 24 041006 25 041014 26 041022 27 041024 23 041030 040464 000010 000111 010000 000000 000010 040454 32 041044 33 041046 3% 041052 045474 004000° 000000 28: gz 041054 37 041056 ga 041062 045036 3s: 9 041064 40 041066 41 041070 ag 041076 43 041102 000005 020040 4 821104 024040 46 041112 000004 45 041110 47 841150 48 041124 49 0611%6 50 041132 51 041134 sg 0461142 ga 041144 55 041150 56 041154 57 061156 020042 040464 040464 8001;1 45130 :NORPAL RETURN ;SAVE RS a1oooo..11nsa(a1> CLRB DRVSTA(R1) BEQ JSR BR $ PC,SET.IE CLRB MOV MovB BIT SET THE DUAL PORT INITIALIZE FLAG ;START 10. SECOND TIMER :DRIVE ADDRESS ;START DRIVE STATUS AS OFFLINE DRVTYP(R1) R1,RPCS2(R4) #111,RPCS1(R4) #B1Ti2,RPCS2(R4) :CLEAR THE DRIVE TYPE INDICATOR SELECT A DRIVE :DO A DRIVE CLEAR COMMAND (& SEIZE DRIVE) " ;NONEXISTENT DRIVE? CLRB DRVSTA(R1) :SET DRIVE STATUS TO OFFLINE BNE TSTB BNE BR $ DPINT(R1) 1% 6% ;BRANCH IF DVA SET :SOF TWARE TIMEOUT ON DUAL PORT INITIALIZE ? :BRANCH IF NOT JSR RPDT 8s RO,RD.RP ;READ THE DRIVE TYPE REG. CMP czaoao RS MOVB W& oavrvr‘a1) BIT uo---en NCH laga :6G0 SET "'IE'* WITHOUT A ''TRE :LEAVE THIS ROUTINE #BIT17,RPCS1(R4)" ;SEE IF DRIVE AVAILABLE :OTHERWISE EXIT ;ERROR RETURN ADDRESS MOV MOVB CMP BEQ (SP)+,RS ns onvvvr(al) c6 BEQ 48 ‘BR IF ;s o6 :SINGLE PORT RPO7+ CMP 324042 RS B8R 63 BEQ MOVB 48: RS, =(SP) :DRIVE NU as :CALLED BY A JSR {ERROR occuaneo (PARITY) MOV BEQ 177777 040464 IT IS IS ISSUED AND FMT22 ;UNIBUS ** .RESS OF RHXX/RP07 (RPCS1) g;{ DPINTC(R1) CMP 024042 "READ=IN PRESET'' :gze ASR 045426 fo 041032 31 041036 DRVINT: MOV 18: RPADR, R4 MOV #DRVNUM,R1 JSR RO,DRVINT RETURN1 g }9 828;25 A :DRVSTA IS SET TO THE PROPER CONDITION. ; : ; ; 1T°1S, ;1S SET 70 A “1''."fHEN MOL, DPR, DRY, AND VV ARE CHECKED TO :INSURE THEY ARE ALL ON A """, AND DEPENDING ON THEIR STATE, 4 9 10 1 IF _ MOV JSR RPCS1 8s 43 #-1,DRVIYP(R1) #121,-(SP) RO,WRT.RP :PUT DRIVE TYPE IN RS SSET RPO7 INDICATOR :SINGLE PORT RPO7 :BR IF YES :DUAL PORT RPO7 *SET RPO7+ INDICATOR *BRANCH IF SO :DUAL PORT RPO7+ *BRANCH IF SO :SET INDICATOR TO °‘OTHER® SEXIT ;D0 A "READ=IN PRESET" CZRJOAD RPO7 PERF EXER MACRO V04.00 1=-JAN=-83 12:06:52 PAGE 57=1 RPO7 DRIVER 58 041160 012746 60 041170 61 0641172 e§ 041174 63 041200 b4 0641202 65 041204 66 041506 ooogs 04126 004037 00001 04126 01260 100015 012000 MOV §9 041164 004037 843120 67 041210 68 061216 69 041552 041224 70 71 7% 73 ;g 116164 004037 000014 oa1z§e 041230 041232 041240 061262 006126 100004 112761 000407 76 0641242 005105 78 041250 79 041252 001003 112761 77 041244 80 041260 81 041262 82 041262 83 041264 84 041272 85 041274 86 041300 gg 041302 042705 005720 006301 012761 006201 105061 012605 000200 040550 045036 177777 177777 ;SET FMT16=1 RO,RD.RP ;READ RPDS MOVB JSR (SP)+,RS 5% ;AND SAVE IT IN RS ‘BRANCH IF ATA=0 ATABIT(R\).RPAS(&«) :CLEAR ATTENTION BIT RO,RD.RP ;FIND OUT WHY ATA=1 ROL BPL MOVB (SP)+ 5% #-1,DRVSTA(RT) ;1S 1T UNSAFE? sBR IF NOT ;SET UNSAFE INDICATOR RS : CHECK "05’ DPR, DRY, AND VV 6$ #1,DRVSTA(R1) ;BRANCH IF MOL, DPR, DRY, OR VV IS CLEAR :SET DRIVE STATUS TO ONLINE RPER1 8$ 040454 BR 5%: 167077 000001 RO,WRT.RP RPOF 8$ JSR RPDS 8$ MOV BPL 000016 040454 040526 6%: 7%: 8$: 040474 SEQ 0184 #BIT12,-(SP) JSR 045036 €15 COM 63 SEXIT BIC #*C<BIT12'BITO8!'BITO7'BITO6>,RS 1ST (Ré)b JSTEP OVER THE ERROR RETURN R1 #-1,TIMER(R1) R1 DPINT(R1) (SP)+,RS RO ;WORD INDEX :STOP THE CLOCK :DRIVE ADDRESS BNE MOVB ASL MOV ASR CLRB MOV RTS :RESTORE RS SEXIT 33 ;REQUEST PRE=-PROCESSOR-HANDLES SUBSYSTEM REQUEST g} s CALL 93 : JSR 95 96 : . RE TURN1 RE TURN2 94 : gg 99 041304 013746 101 821;16 112737 100 041310 1o§ 10 1326 013737 104412 0613%6 011005 105 041334 111;01 104 041330 177776 040564 000001 005062 000016 106 041336 013704 040560 108 041346 003006 }}? 041354 000421 107 041342 109 041350 11; 041356 1 041§oz 114 061364 105761 177776 RPO7: 040520 040504 POINTER OF DRIVES PARAMETER BLOCK *RETURN HERE IF QUEUE IS FULL :RETURN HERE IF REQUEST IS IN QUEUE OR THERE :1S AN ERROR CONDITION MOVB #1,ACTDRV :SET "'ACTIVE DRIVER'' RPVEC+2,a#PS (RO) ,R2 CLR 16(R3) MOV RPADR, R4 B8GT 1% TSTB (R2),R1 DRVSTA(R1) JSR RO,DRVINT 1518 BLE 1S18 gRVS!A(R\) 1 DPRQGS(R1) BR 1%: ;ADDRESS OF :SAVE THE CALLING STATUS MOVB 040454 sCALL THE RPO7 DRIVER aNPs,=(SP) MOV MOV 040454 RO,RPO7 MOV SAVREG 004037 - 040750 105761 003435 105761 PNTADR 3s IDON'T ALLOW ANY RPO7 INTERRUPTS :SAVE RO = RS FLAG sPICKUP THE DRIVE PARAMETER BLOCK POINTER :CLEAR THE STATUS/ERROR INDICATOR :PICKUP THE DRIVE NUMBER :UNIBUS ADDRESS OF RPCS1 :CHECK DRIVES STATUS *BRANCH IF ONLINE :G0 INIT. THE DRIVE ‘ERROR RETURN ;1S DRIVE STATUS ONLINE? ‘BR IF NOT JOUTSTANDING PORT REQUEST FOR THE DRIVE ? BV OO0O0Oo OO0O—-0O OO~ o OO0 OO0 Db adad OO000O0 OO0~ 00~ add 8 W 040454 ) i e 000036 140000 040464 000016 100002 000016 110000 000016 — 1STB BNE DRVACT(R1) 7% :1S THIS DRIVE ACTIVE? :BR IF YES BR 7% PC,OPT ;CALL THE OPTIMIZER JSR BR PC.CI7 7% ;GO HANDLE THE PARITY ERROR JSR RO,DRVQUE ;PUT REQUEST IN QUEUE MOV #0,RPCC(R&) ;WRITE THE CURRENT CYL REG JSR BR PC,SET.IE 7% s YES :SET THE sRETURN 1STB BLT DRVSTA(R1) 6$ sSEE IF DRIVE OFFLINE OR UNSAFE ‘BR | F _UNSAFE TSTB DRVTYP(R1) ;SEE " BR BNE 8$ ;gitoe.(RA) ;QUEUE IS FULL S1E BIT SET ? #BIT1S'BIT14,16(R2) 7% INTERRUPT :SET OFFLINE ERROR INDICATOR IF OFFLINE OR NONEXISTENT ‘BR IF OFFLINE MOV #BIT15!BITO1,16(R2) MOV RESREG #BIT15'BIT12,16(R2) :DRIVE IS UNSAFE :RESTORE RO = RS BR 9 BR 8$: 98: ST RESREG ST CLRB MOV RTS 7 (RO) + (RO) + ACTDRV (SP)+,a#Ps RO ;REPORT DRIVE NONEXISTENT ;60 TO EXIT :SETUP FOR NORMAL RETURN :FINISH UP, THEN EXIT ;RESTORE RO = RS :CORRECT THE RETURN ADDRESS :CLEAR "ACTIVE DRIVER" FLAG :RETURN *PS'* TO USER LEVEL *RETURN TO CALLER ;OPTIMIZER=CALLED FOR A PARTICULAR DRIVE $CALL : MOV #0PB,R2 ;ADDRESS OF DRIVE PARAMETER BLOCK ; JSR PC,OPT SSETUP A COMMAND WS — N-‘l‘flug-'flb : OO0 —=—=0O— - =0O000 DO NO =WVNVONNS 7§ 041570 73 061572 74 041576 :BR IF YES sSELECT THE DRIVE sPUT THIS REQUEST IN QUEUE ;QUEUE IS FULL MOV 6$: 7%: SEQ 0185 4% R1,RPCS2(R4) RO,DRVQUE 8% BIT 5%: i D D e D e e e e o o 70 041562 71 0461566 4$: 045426 VIV WY VAWV S WHNN NN == b D B D VWA B ONNOOWVY b Db ad e D 000000 000100 3%: D15 BNE MOV JSR BR JSR BB VNS oOro0Ns MOOoO 8°O~b~0 SO0 NN SO ONNO S O i O ~ ~N -~ 046070 bbbt 2820 SO 8 N 323:\: S OOVONOWVSWN =OVONO WV WOONO WS NN = O VONONVN NN =20 V00 ~NOMWVY DO o0 COO0O0O0O0O0 O0O0O0O OO0 OO0 O00O0 OO0 < BB PEPEESES PP P P PP e MO RRR|R\R 2°°° [= O b b = B e D D ) ) D D i e D D i D e ) i e N NN W NN N NN NN D D i i ) D i il D i D i INES B 55 NN W D e 042670 2$: D e e e D D i i D i (o Lo To SEIVL IV, IV IV IV IV IV IV V.V 3 2 7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 57-2 66 041542 67 041544 68 041550 69 041556 e e o CIRJ RPO7 177776 oPT 040516 MOV SAVREG #DRVNUM,R1 :DRIVE NUMBER :SAVE RO = RS MOV ampPs,=(SP) CLRB DPRQS(R1) ;RESET THE PORT REQ FLAG 1S7 R2 :1S THERE A REQUEST IN QUEUE? JICB JSR BEQ MOV MOV :SAVE PROC. STATUS ATABIT(R1),SRCHwE PC,GE TREQ 13 R1,RPCS2(R4) #111,RPCST(R4) :CLEAR SEARCH FLAG ‘GET "'DPBTM POINTER OF REQUEST *NO--BRANCH TO EXIT SLOAD THE DRIVE ADDRESS :CLEAR THE DRIVE ~N— oTM F-la) o~ 03213227 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 57-3 175 041604 176 041612 177 0616164 178 041620 179 041622 032764 001446 105761 003014 004737 181 041634 18; 041640 183 041642 105761 100056 012705 040454 110000 000016 186 041652 187 041660 188 041662 189 041670 190 041672 }31 041676 12%76; 00240 12276§ 00140 004737 000437 000150 000002 000135 000002 194 195 196 197 oogooe 005737 100003 004737 180 041626 my& }gg 041650 00045 004000 000000 040454 1%: 046166 140000 000016 041704 041706 041712 041714 ;gg 041720 000426 200 041722 004737 581 041726 000423 MOV 28%: 38: 040524 042006 4$: 042200 5%: SEQ 0186 #BIT11,RPCST(RG) ;DVA SET ? % ;10 PROT REQUEST ,IF NOT DRVSTA(RY) :1S DRIVE ONLINE? b1 $YES==BRANCH PC,POPQUE :NO=--REMOVE REQUEST FROM QUEUE #BIT15'B ;SET IT14 OFFLINE STATUS/ERROR ,16(INDICATOR R2) TSTB BPL MOV DRVSTA(RY) :1S DRIVE UNSAFE ? 9% ‘BR TO EXIT IF NOT #BIT15'BIT12,16(R2) :SET UNSAFE STATUS/ERROR INDICATOR 9 :BRANCH TO EXIT C(MPB BLT CMPB BEQ JSR BR #150,2(R2) 3g #135,2(R2) 3s PC,CI4 9s ;1S THE REQUEST FOR 1/0? :YES==BRANCH 2 ;1S IT A DIAGNOSTIC COMMAND ? *BRANCH IF SO :CALL THE COMMAND INITIATOR ‘BRANCH TO EXIT BGE ST BPL JSR 5$ SEEKFG 13 PC,CIN ‘BR IF YES :D0 IMPLIED SEEKS ? :NO, DO SEARCH :START A DATA TRANSFER BR 042312 19% 041700 005737 040546 BIT BEQ TSTB BGT JSR E 15 ST B8R JSR BR DTUW 9% PC,CI3 9$ :DATA TRANSFER UNDERWAY? ;START A SEARCH ON TARGET SECTOR =1 160 TO THE EXIT zo% 041730 112761 177777 040504 6$: 204 041736 010103 MOVB 206 041742 207 041750 MOV MOV #15000.,TIMER(R3) ;START 15. SECOND TIMER #0,RPCC(R&) :SET PORT REQUEST aq SEXIT JSR BIT PC,CL17 #81T06, (R4) ;PROCESS THE PARITY ERROR *SEE IF 'IE' ALREADY SET 205 041740 006303 583 041756 012763 012764 000402 035230 000000 210 041760 211 041764 004737 032714 042670 000100 78: 8s: 045426 177776 9%: 212 041770 213 0641772 214 041776 215 042002 2}9 042004 513 00110 004737 012637 104413 000207 BR BNE JSR MOV RESREG RTS #-1,DPRQS(R1) R1,R3 R3 9% PC,SET.IE (SP)+,aNPS PC 3 TZALL : : 2 : 224 : 225 MOV MOV JSR #DPB,R2 #DRVNUM,R1 PC,C122%2 : 226 :SET UP TO ADDRESS WORDS CONVERT TO WORD INDEX ‘BR IF SET e SSET "IETM WITHOUT A '‘TRE' *RESTORE PROC. STATUS :RESTORE RO = RS i §2§ 59 042006 004737 046166 040514 : CI1: :ADDRESS OF DRIVE PARAMETER BLOCK :URIVE NUMBER ;€122722 = CI1, €13, OR Cl4 JWHERE: : CI1 = DATA TRANSFER : 010237 010203 :SET PORT REQUEST INDICATOR ;COMMAND INITIATOR 219 220 221 32; 230 042012 231 0462016 (40526 000036 MOV ASL : CI3 = SEARCH REQUESTED BY DATA XFER JSR MOV MOV PC,POPQUE ag.tansut R2.R3 : C14 = NO DATA TRANSFER ;REMOVE REQUEST FROM '‘DRIVES WAIT'* QUEUE :PUT REQ. IN TRANSFER WAIT QUEUE :DPB ADDRESS TO R3 S OOONNON—-N NNNW=SS 00O &~ &~ OSSN O =PI NS W 045130 #B1T165, (5P) Ak 4(R2),=(SP) RO,WRT.RP :RPCS1 ADDRESS SELECT DRIVE :1S IT A DIAGNOSTIC COMMAND ? :BRANCH IF NOT :GET THE ROUTINE NUMBER, PARAMETERS SSET THE DIAGNOSTIC MODE BIT ‘WRITE THE RPMR1 REG 28 :LOAD THE COMMAND AND EXIT ADD ADD #4,R3 #2 R4 ;DESIRED WORD COUNT ‘RPWC ADDRESS MOV (R3)+. (R&)+ :LOAD BUFFER ADDRESS JSR RO,WRT.RP ‘CALL THE LOAD(WRITE) ROUTINE 045130 17 MOV JSR (R3)+,=(SP) RO,WRT.RP 042152 JSR PC,C12 ;SEE IF BIT15 SHOULD BE SET IN RPMR1 1%: MOV MOV 045130 BB WUIN OMNOOMNNOY FRESenORS BIS SEQ 0187 BR 045130 NN NN c135.$(n2) 1% JSR F 15 RPADR,R& R1,RPES2(R4) BNE MOV 100020 000012 NN CMPB 000004 OVt oN O OWWW NN OWSH IO O 000004 000002 MOV MOV ooo1sg 000002 o o - 040560 00001 000002 NN = = O SNNOSO S » N o RRRRRRR 2°°°O°° [ X Sl b R o~ o0 NN O RO B SOEITTTTR W ~ NN = OOV WS W 0 o NN DS O00NNNO NOONNOONSOONSNoNNY oo sroo MACRO V04.00 1=JAN=83 12:06:52 PAGE 57<4 RPDA 28: 045130 040546 042632 MOV CI2: 100000 (R3)+.=(SP) *LOAD WORD COUNT SLOAD SECTOR AND TRACK :INDEX OF REGISTER TO LOAD *ERROR RETURN ADDRESS :LOAD CYLINDER ADDRESS JSR RO,WRT.RP 2(R2),=(SP) :LOAD "'COMMAND+GO'', "‘A178A16'', AND ''PSEL"’ MOV R1,DTUW ;SET "DATA TRANSFER UNDERWAY'' CMP 12(R2),FE1(R2) :DATA XFER TO FE CYLINDERS ? MOV #BIT15,-(SP) :SET THE DIAGNOSTIC MODE BIT JMP 000156 (R$)+, (R4)+ BLT JSR RPMR1 c17 c1s 1% RO,WRT.RP ‘BR IF NO ‘WRITE THE RPMR1 REG 1%: RTS PC CI13: MoV MOV MOV JSR RPADR, R4 R1,RPCS2(R4) 12(R2),=(SP) RO,WRT.RP :RPCS1 ADDRESS :SELECT DRIVE :DESIRED CYLINDER ADDRESS 042152 JSR PC,CI2 ;SEE IF BIT15 SHOULD BE SET IN RPMR1 000010 040570 MOVB ggg 10(R2),R3 ?gunou.as ;PICKUP SECTOR ADDRESS :gec§¥;>gy°nnx. SEARCH FOR 1/0 WINDOW MOV MOVB R3,=(SP) 11(R2),1(SP) ;:COMBINE THE ADJUSTED SECTOR WITH :THE DESIRED TRACK 040560 000010 000012 045130 000062 000011 045130 000001 1%: ADD #50. ,R3 iggh RO,WRT.RP 17 TADD MAXIMUM SECTOR COUNT BACK *LOAD DESIRED TRACK & SECTOR 49 062510 gSO 042514 51 042516 =4 H VIWSNOW ONOoOO~NO SOOCOONONN—=N V=000 &~ =W o NOWHOOOO &~ o NIWNWNWNES = O WOONO'"NWWES WVINOSNNO Clé: ;START A SEARCH s}galt(n1).sacnut sSET "'SEARCH WAIT' KEY RPADR,R& a1.apcs§(a4) :RPCS1 ADDRESS :SELECT DRIVE #131,R3 1$ 10(R2) ,=(SP) RO,WRT.RP :BRANCH IF NO :LOAD DESIRED TRACK & SECTOR 2(R2),R :PICKUP THE REQUESTED COMMAND 21S IT A SEARCH COMMAND? 2%: 12(R2),=(SP) RO,WRT.RP :LOAD DESIRED CYLINDER 000115 WW—=O00O00O0O ONNS W= SW o NUNN =2 NN - o NONNOONNWW 000012 045130 a4 WVNOOONON ;G0 LOAD CYLINDER WVWOOONOOOON 28 ;1S IT A SEEK COMMAND 042152 3$ :BRANCH IF NO Eféc'z ;SEE IF BIT1S SHOULD BE SET IN RPMR1 045036 #115,R3 4$ RO,RD.RP ;1S IT AN “'OFFSET'* COMMAND ? :BR IF NO *MERGE THE OFFSET VALUE INTO RPOF 000001 045130 RO,WRT.RP 3%: 1(R2), 000107 000143 (SP) :BUT DON'T CHANGE THE UPPER :BYTE WHEN LOADING THE *REGISTER (RFOF) c16 :G0 START THE COMMAND 4%: #107,R3 c16 #117,R3 ;1S IT A “RECALIBRATE'' COMMAND? :BRANCH IF YES ;IS IT A RETURN TO CENTER? 5%: #143,R3 :IS IT A "'SET FORMAT'' COMMAND? 000117 045036 Cl1é6 [ RO,RD.RP 1(R2),1(SP) 000001 ooNN 6 065506 6; 042506 040516 W NN 45 0462502 RP;SI Cl BIsS8 BR #131,-(SP) RO,WRT.R ] #105,R3 nNO 36 042444 37 0462450 38 06;452 39 042456 40 065660 1 0462464 g 062466 042470 & 062476 JSR SEQ 0188 1%: R=s ¥ gB& 042436 gSS 062442 MoV 1 o 000105 O= O N oNO (V1L) 3%% 0462434 O—-0000 OWVNSiOO-— OO NN 3 03 042312 304 Ofi%316 305 042322 gO6 04 ggb 07 042332 308 042334 309 042340 310 042344 311 042346 312 042350 313 314 042352 315 042356 316 042360 317 042364 318 042370 319 042372 320 042374 321 042400 322 323 042402 324 042406 325 042410 326 042414 ;27 04%416 28 0462420 329 042424 330 042430 331 062432 O0O00O0O—-=-00 OfOO—-ON—==as ONOSO—=NOCOW 00 04¢302 01 042310 O00O0O00O0O~ COfOO0O—-ON OfNOSON=N %99 042300 OO0~ :2°°°-'°-'°—‘ s ON OCOONONON [=l=l=l=T OFO0OO0O—=Hr00 » Og oo B === ONOSONO S 295 296 042266 297 042272 298 042276 [=l=l=l=] 07 DRI 3227 PERF EXER MACRO V0&4.00 1-JAN-83 12:06:52 PAGE 57-5 oo - F-lad N RJOAQ RO,WRT.RP :BRANCH IF YES :BRANCH IF NO :READ THE OFFSET REGISTER :COMBINE "'FMT16'","'ECI'', AND *‘WCI" 12% 000141 6%: #141,R3 ;1S IT A "'GET REGISTER'' COMMAND? 000006 7%: 6(R2),R3 :POINTS TO 1ST ADDRESS OF WHERE 10% :BRANCH IF NO CLRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 57-6 338 0425 2 116237 000010 042540 326 5 042530 §5 042536 356 062540 30 Qugsuz 58 042544 359 Qugdue 360 042552 361 0625564 362 042562 116205 004037 000000 0ugerg 01262 023705 001414 062737 000764 64 042564 365 042570 366 042572 122703 001405 010346 68 0462600 369 062602 370 042606 000000 042670 004737 372 062616 373 062622 374 062626 375 042630 005737 100002 006737 000207 377 042632 378 062636 379 062642 380 042644 006301 012761 006201 112761 67 062576 371 062610 004037 052762 000011 045036 042540 000002 046166 000200 040522 045262 040526 000001 040444 384 042656 385 042662 386 062664 387 042666 004037 000000 042670 000761 389 042670 390 042672 391 042674 005702 001001 000207 012762 104000 94 062704 012746 000111 96 042714 000000 95 062710 397 062716 398 042720 399 4grou 400 042730 401 062734 402 062740 403 062742 404 062746 405 042754 407 062756 408 062760 004037 042756 004737 105061 103061 020237 001005 005037 012737 000207 104412 005001 045130 18: 128 .= (SP) ;1S ITA “SELECT DRIVE'* COMMAND? :BRANCH IF ECOAD THE' COMMAND 128: RPCS1 c17 JSR PC,POPQUE ;REMOVE REQ. FROM QUEJE TST 8L JSR RIS SAVEFG 138 PC,SVRHXX #oC :SAVE_RHXX/RPO7 REGISTERS ? :BR_IF _NO :YES--GO_SAVE THE REGISTERS RETURN TO USER ASL MOV ASR MOVB RI #10000.,TIMER(R1) ;START 10. SECOND TIMER RI #1,DRVACT(R1) ;SET THE DRIVE ACTIVE MOV JSR RO,WRT.RP CIS: JSR_ ROLWRT AP BIS cexto7 16(R2) RTS R3,=(SP) BIT RETURN TO THE USER ;LOAD THE COMMAND c1s A2 1S: MOV pC ;ANYTHING IN QUEUE ? iBRANCH IF QUEUE IS’ THERE :OTHERWISE EXIT ~ CI7B: MOV #111,=(SP) :D0 A "DRIVE CLEAR" PC,EMPTYQ DPRAS(R1) ;EMPTY THE QUEUE CLEAR THE PORT REQUEST FLAG JSR RP(S1 C18 JSR CLRB 040ucs 040514 040546 PC SET THE "DONE'' azsIsT BNE RIS 046050 040504 040514 177777 GET THE CONTENTS OF RHXK//RPO7 REG. :LAST REG, BEEN READ OF LAST REG, 10 MOVE :READ RHXX/RPO7 REGISTER : INDEX OF REG. TO READ #145,R3 RP(S1 C17 BR 000016 {§PAge(RBIe 9% ,RS RO,RD.RP ;10 PUT_THE REGISTER(S) (MPB Bt~ MOV C16: 045130 :INIT. THE INDEX FOR_THE FIRST REG. :INDEX :GET OUT iF YES : INCREASE THE IND:X BY 2 :LOOP-=MORE TO READ 138: 023420 000207 392 062676 000016 C17 MOV (MP 10(R2).98 11(R2).RS 12 #2,9% 8s 108: 045130 JSR_ RP(SI SEQ 0189 BEQ ADD ER 042540 000145 381 042652 385 0u2654 010346 8s: 98: MOVB MOvB H 15 1: CI8: #BITIS!BITIN,16(R2) RO,WRT.RP CLRB CMP BNE CLR MOV RIS DRVACT(R1) R2, TRNSWT 13 TRNSWT #-1,DTUM PC SAVREG (LR R :3ET "PARITY'* ERROR INDICATOR :DRIVE 1S IDLE :1F THIS DRIVE HAD AN 1/0 REQUEST :IN PROGRESS CLEAR ALL OF THE FLAGS :SAVE RO = RS .] MO D0 040444 1%: 040504 R3 BNE 2$ TSTB 100002 000016 NO 000010 *PORT REQUEST JSR R1,DTUW 3 PC,CETREQ :GET THE DPB POINTER BEQ MOV BR (s :BR IF NOT #BIT15'BITO1,16(R2) :SET 'DRIVE NON=EXISTENT' INDICATOR 5% : CONTINUE MOV #BIT15'BIT10,16(R2) #=1,TIMER( ;STOP THE TIMER CLRB CLRB CMP BNE DRVACT(R1) DPRQS(R1) R1,DTUW 6% :SET "DRIVE ACTIVE'' TO IDLE :CLEAR PORT REQUEST FLAG :IS THIS DRIVE SETUP FOR A TRANSFER ‘BR IF NOT 6$: INC ADD BIC BNE MOV CLR JSR MOV BR R1 :MOVE TO THE NEXT DRIVE #2,R3 #5C7.R1 1$ :BRANCH IF MORE DRIVES #-1,DTUN :NO DATA TRANSFERS UNDERWAY TRNSWT :CLEAR THE 'TRANSFER WAIT' QUEUE PC, CLRQUE :CLEAR ALL OF THE REQUEST QUEUES #BITOS,RPCS2(R4) ;DO A MASSBUS INIT. 8$ ; CONTINUE 7%: JSR CLRB CLRB PC,EMPTYQ DRVSTA(R1) DRVTYP(R1) ;CLEAR THE DRIVE'S QUEUE :SET DRIVE TO OFFLINE :CLEAR THE DRIVE TYPE INDICATOR PC *RESTORE RO *RETURN O 5$: 040546 ON :BRANCH IF IN ACTIVE ‘BRANCH IF NOT 4%: 040546 000010 045426 DPRQS(R1) :DRIVE ACTIVE? I3 38: 010000 DRVACT(R1) SEQ 0190 BEQ 28: 046144 &N CLR TSTE 040514 040546 oSN b N = NN = WVIVA - BB BINNON = 2 O S5O CCOSTrONOSOO YN N = s ONWNNVONO =00 WWNOOOWWOWOOS wn NN OO0 3 NSNS NN SN NONO OO —=OWOWOSrorooNO WA 8 8 AN NN NINAN =3 (N =N BB WWNN NININ NN (=4 OCOO0O0O0O0O0O0OONNNNYN &H» WWNNIN) = = S O O NNNOO o NONOONO SONNNO SN 8$: MOV CMP BEQ ST BEQ BIT MOV MOV CLR JSR RESREG RTS TRNSWT,R2 *GET ''DPB'' FROM THE "‘TRANSFER WAIT'' QUEUE :DID THIS DRIVE HAVE AN 1/0 IN PROGRESS? *BRANCH IF YES R2 *QUEUE ENTRY FOR DRIVE ? 5% :BR IF NOT #BIT12,RPCS2(R4)" :*NED' SET ? #-1,DTUM TRNSWT PC,SET.IE ;SET ''NON-CLEARABLE PARITY'' ERROR INDICATOR *RESET THE INDICATOR SCLEAR THE TRANSFER QUEUE SSET “'IE'* WITHOUT = R “'TRE NONWNNN =S NON bOONObcgivl‘ QO NNS OW= WWO OO =W s INTERRUPT SERVICE ROUTINE WNNIN = = = OO N — [elelelelelelolelelelolelelet-a0 ~N< o ©= o W W N NN A NI PO RO NI NIND = b d e ed b d d cd b o [+ ] NONWD SN = NOVSS NN = O VNS W =00 o F-la o~ 7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 57-7 000001 040520 ISR: 040560 040546 043236 043550 040520 1$: MOovB SAVREG MOV MOV BLT JSR JSR RESREG CLRB RTI #1,ACTDRV RPADR, R4 DTUW,R1 sSET ""ACTIVE DRIVER' FLAG JSAVE RO - RS ;ADDRESS OF RP(S1 :GET "'DATA TRANSFER UNDERWAY'' INDICATOR PC,SC :BRANCH IF NO DATA TRANSFER UNDERWAY JCALL TRANSFER DONE sCALL SPECIAL CONDITIONS ACTDRV sCLEAR 1% PC,TD s TRANSFER DONE ROUTINE ;RESTORE RO = R3 ;RETURN “'ACTIVE DRIVER' > FLAG CZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 57-8 J 15 . RPO7 DRIVER 293 043236 471 043242 005037 043460 105061 040444 177777 040546 012761 177777 040526 01 o; 005037 040514 040514 000200 000010 045036 47; 04§ 46 473 043254 012737 006301 475 043264 oog;o1 474 043256 476 043266 477 043272 478 063%76 479 043306 480 oa§31o 481 043314 482 063316 483 043320 484 043322 485 04332¢ 486 043330 487 043332 05%762 010164 004037 000900 042670 ooelge 100430 005737 10000; 004737 489 043344 001003 493 494 498 499 488 043336 490 043346 043354 043360 043364 043366 000002 116164 040550 000016 004737 004737 005702 001403 043462 046144 004737 000207 012714 000207 505 043404 (S2762 507 063416 004737 ggg 043622 040111 g}g 043450 000207 §16 043452 012714 g}g 043460 000000 g}g 043456 100100 012714 116164 000207 28: 000113 046050 032764 001406 005237 3s: 000016 040000 043460 040550 gzr 043500 553 043504 004037 000420 525 043470 526 043476 12276§ oo1o§ 000012 000016 000113 000161 046070 ;CLR PERMENANT ERROR FLAG CLRB DRVACT(R1) ;SET DRIVE ACTIVE INDICATOR TO IDLE MOV #-1,TIMER(R1) ;CANCEL TIMEOUT MOV CLR TRNSWT,R2 TRNSWT #B1707,16(R2) R1,RPCS2(R4) RO.RD.RP ;GET ''DPB'' FROM THE "‘TRANSFER WAIT'* QUEUE :TRANSFER WAIT QUEUE=--CLEAR QUEUE :SET DONE :SELECT THE DRIVE :TRANSFER ERROR(TRE=1)? (SP)+ 48 SAVEFG 1% :BR IF YES :SAVE RHXX/RP07? REGISTERS ? ‘BR IF NO (MPB #135,2(R2) *1E FROM DIAGNOSTIC COMMAND ? MOVB ATABIT(R1),RPAS(R&) JSR JSR ST BEQ PC,WC. HK PC.GETREQ R2 3$ BIS MOV JSR RPCS1 c17 ROL BM] ST BPL JSR BNE #-1,0TUW R1 R1 PC, SVRHXX 2% SYES==SAVE THE REGISTERS *BRANCH IF NOT BIS #BIT15'BIT06,16(R2) JSR ;RESET THE ATA BIT ;SEE IF WRITE CHECK TO BE PUT IN QUEUE *GET DPB POINTER *ENTRY FOR DRIVE ? ‘BR IF NOT PC,OPT PC #113, (R&) PC :CALL OPTIMIZER *RETURN *RELEASE THE DRIVE *RETURN :SET DATA ERROR FLAG PC,EMPTYQ ;EMPTY THE "DRIVE'S WAIT'' QUEUE MOV #40111, (RG) :1SSUE A ''DRIVE CLEARTM BIT BEQ INC #BIT14,RPDS(R4) ;DID ERROR BIT CLEAR? 13 :BR IF YES PERM “SET PERM ERROR FLAG RTS PC :RETURN MOVB PC ; SVRHXX :SAVE THE RHXX/RPO7 REGISTERS ATABIT(R1),RPAS(R&) :CLR ATA BIT 5%: MOV #113, (R4) ;ISSUE A RELEASE TO THE DRIVE PERM: .WORD O ;PERMENANT ERROR FLAG RTS PC ;FORCE WRITE CHECK ROUTINE WC.HK: TST 000002 :NO DATA TRANSFERS UNDERWAY JSR RTS MOV RTS JSR szg 043462 005737 001506 001427 4&$: 045262 351 524 063466 1$%: 041542 004737 510 043426 511 043434 512 043436 513 043442 045262 PERM ASR 040522 000135 CLR MOV ASL 000016 122762 500 043370 501 043374 502 043376 382 043402 506 043412 TM: BEQ CMPB BNE JSR BR WRTCHK 1% *RETURN ;D0 WRITE CHECK ? ‘BR IF NO WWRTDAT,$COMND (R2) :LAST COMMAND A WRITE COMMAND ? 1% :BRANCH IF NOT RO, DRVQUE 1% :PUT INTO THE QUEUE :BRANCH IF QUEUE IS FuLL SEQ 0191 ~NGe N oTM 03313237 PERF EXER MACRO VO04.00 1-JAN=83 12:06:52 PAGE 579 000016 s§1 oa§s15 005062 116262 000166 oooo§7 53§ 043520 016262 $30 043506 53 oags 6 §34 043534 5§35 043540 ggg 043546 016262 105060 112762 000207 000012 000010 000024 000151 ggg 116403 001013 004937 000000 042756 106126 100404 000401 549 043574 5§50 043576 gg; 043602 104001 004737 000207 §53 043604 554 043606 §55 043610 556 043612 §57 043616 005046 110316 005001 012703 030316 558 043620 §59 043622 000034 000032 000002 SEQ 0192 CLR $TATUS(R2) MOV MOV CLRB MOVB RTS 8(YL(RS).S§REVA02(R ) $SEC(R2) .SPREVA(R2) $CODE(R2} ;CHANGE #WCKD,$COMND (R2) P ; :CLEAR *DONE® BIT IN DPB sarcs1<a3) 3pa£vb(a §) ;PREVIOUS COMMAND :PREVIOUS CYLINDER ADDRESS :PREVIOUS SEC , TRK ADDRESSES WRITE DATA TO WRITE CHECK DATA ;CHANGE FUNCTION CODE TO WRITE CHECK sSPECIAL CONDITION ROUTINE 540 043550 541 043554 sag 043556 543 043562 §44 043564 545 043566 546 043570 5§47 043572 548 MOVB K 15 000016 045036 045426 18: 2%: 000001 001005 005201 560 043624 561 043626 562 043630 ggz 043632 106303 001373 005726 000207 565 043634 566 043640 ggg 043642 105761 001402 000137 040504 569 043646 570 043652 §71 043656 572 043660 573 043664 574 575 043670 576 063674 §77 043676 578 043702 §79 0437064 580 581 043710 sag 0437164 583 043716 58 043722 585 oasrgs 586 043730 105761 003011 004737 004737 004737 040454 105761 003405 105761 oo1o§o 004737 040454 105761 100412 0127a9 004037 oogooo 043772 SC: sc3: (SP)+ 1% 18-4 EMT JSR RTS 1 PC,SET.IE PC ;1S “IE''=1? :YES, NO DRIVES TO CHECK :BRANCH OVER ERROR, REPLACE BRANCH WITH *NOP® :1F ERROR REPORT IS DESIRED :REPORT ILLEGAL INTERRUPT *SET INTERRUPT ENABLE *RETURN CLR MOVB CLR MOV -(SP) R3,(SP) R1 #1,R3 R3'(5P) BIT BNE scé ;PROCESS ALL DRIVES THAT HAVE :STORE ATA BITS ON STACK :SETUP R1 & R3 TO CHECK DRIVE 0 ;1S THIS ATA BIT SET ? ‘BR IF YES R1 R3 SC3 (SP)+ PC :MOVE TO THE NEXT DRIVE :ANY MORE DRIVES TO CHECK ? ‘BR IF YES *CLEAN OFF THE STACK SCS: TSTB BEQ JMP DPRAS(R1) 1% sC13 ;1S THERE PORT REQUEST OUTSTANDING ? ‘BR IF NO :START THE OUTSTANDING COMMAND 1$: TSTB BGT JSR JSR JSR DRVSTA(R1) 28 PC,GETREQ PC . SVRHXX PC.SC12 ISTB BLE TSTB BNE JSR DRVSTA(RY) 3$ DRVACT(R1) $C6 PC,SC12 TSTB BM] MOV JSR RPCS1 SC8 DRVSTA(R1) 4 #111,-(SP) RO,WRT.RP ;1S THIS DRIVE ON=-LINE ? ‘BR IF YES :GET DPB POINTER *SAVE THE RHXX/RP0O7 REGISTERS :SAVE RPDS, RPER1, RPER2 AND RPER3 ;ALSO DO A'DRIVE INIT (DRVINT) :DID DRIVE COME ON~-LINE ? :BR IF NO :DRIVE ACTIVE WITH COMMAND OR ERROR RECOVERY ? ‘BR IF EITHER :SAVE R®DS, RPER1, RPER2 AND RPER3 :ALSO D) A'DRIVE INIT (DRVINT) SCHECK ON DRIVE'S STATUS ‘BR IF UNSAFE :DRIVE CLEAR ‘WRITE THE COMMAND INTO RPCS1 *REGISTER INDEX :PARITY EXIT ADDRESS 2%: 044120 000111 045130 ;READ "'RPAS'' REGISTER :BRANCH IF ANY 'ATA® BITS SET ;READ CONTROL AND STATUS REGISTER INC ASLB BNE ST RTS 046144 045262 044120 040454 RPAS(R4),R3 28 RO,RD.RP $Ch: 044204 040444 MOVB BNE JSR RPCS1 C18 ROLB BM] BR 3%: o~ o °331R287 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 57=10 587 043732 588 04374 ggi 043742 116164 ooo;ao 000727 §94 043744 006301 595 063746 596 043754 597 063756 598 043762 599 043766 012761 006201 004737 010164 000137 040550 48: 177777 040526 105761 001405 004737 040444 607 044012 004737 042704 610 044022 105061 040444 SC8: 046144 042670 1%: 1 613 044034 136137 001012 040550 28: 040516 614 044036 004737 615 044042 052762 616 044050 005737 046166 000200 000016 040522 618 044056 004737 045262 620 044070 621 044076 146137 006301 040550 623 044106 624 044110 006201 004737 627 044120 628 044124 629 044126 630 044130 631 044132 010164 006301 006301 006301 016461 000010 000012 633 044146 634 0644154 016461 016461 000040 000042 617 044054 619 044062 100002 116164 622 044100 012761 625 064114 006201 006201 006201 004037 639 044174 000401 640 0464176 ooo;or 641 044200 005726 gzg 044202 000673 649 044206 650 044210 000016 040516 1%: 177777 040526 010164 $C12: ASL R1 ;SETUP TO ADDRESS WORDS TSTB BEQ JSR DRVACT(R1) 1% PC,GETREQ ;1S DRIVE IDLE? :YES==BRANCH ‘GET DPB POINTER JSR PC,C178B sPROCESS THE UNCORRECTABLE PARITY ERROR CLRB DRVACT(R1) +:SET DRIVE IDLE BNE 1% :BRANCH IF YES 1% :BR IF NO JMP BITB #-1,TIMER(R1) R1 PC,GETREQ RT,RPCS2(R4) scii PC,Cl? 28’ $C4 :STOP THE TIMER :RESTORE THE DRIVE ADDRESS ‘GET THE DPB POINTER FROM THE QUEUE :SELECT DRIVE *PROCESS THE SEARCH .PROCESS THE PARITY ERROR : CONT INUE :CHECK MORE DRIVES ATABIT(R1),SRCHH? ;DOING A SEARCH OPERATION FOR *AN 1/0 COMMAND? JSR BIS ST PC,POPQUE csxto7 16(R2) SAVEFG JSR PC,SVRHX BICB ASL ATABIT(R1).SRCHWT ;CLEAR IMPLIED SEEK SET R1 ;WORD INDEX MOVB RE.OyE REOUEST FROM QUEUE :SET 'DONE'’ :SAVE THE aecxsreasv :YES==SAVE ALL OF THE RHXX/RPQO7 REG'S ATABIT(R1) RPAS(Rk) sCLEAR ATTENTION BIT MOV #-1,TIMER(R1) :STOP CLOCK JMP sch *CHECK FOR MORE DRIVES R1 PC,OPT ‘RESTORE R1 JSTART A REQUEST 040344 R1,RPCS2(R4) ;SELECT DRIVE R1 R1 R1 RPDS (R4) ,RPSTUO(R1) ;STORE DRIVE STATUS 040350 040352 MOV MOV RPER%(R&).RPSYUO*‘(Rl) RPER3(R4) ,RPSTUO+6(R1) 040346 MOV ASR ASR ASR JSR 1$: 116164 040550 000016 651 044216 105761 060474 ;CHECK FOR MORE DRIVES MOV ASR JSR MOV JMP :CLR ATTN BIT MOV ASL ASL ASL MOV 040750 000010 $C4 ASR JSR 041542 000014 ATABIT(R1),RPAS(R&) BPL 000137 043622 632 064140 016461 635 044162 636 044166 637 044166 638 044170 040550 SC11: SEQ 0193 MOVB NOP BR JSR BR 688 044016 000137 043622 611 044026 §C6: 046144 000010 044022 601oa§77z 602 043776 603 044000 604 044004 004737 282 044010 000402 000016 L 15 $C13: 1$: B8R RTS 1sT BR MOV MOVB ISTB RPERl(Rk‘.RPSTUO*Z(RI) :STORE ERROR REG #1 :STORE ERROR REG #2 ;STORE ERROR REG #3 R1 K1 R1 ao DRVINT ;INIT. THE STATE OF THE DRIVE R1,RPCS2(R4) SELECI THE DRlVE 18’ PC (SP)+ SC8 rnxs ERROR EXIT *RE TURN ‘CLEAR THE STACK *PROCESS THE PARITY ERROR ATABIT(R1) RPAS(fi DPINT(R1) CLEAR THE ATTENTION BIT lNlIiALlllNG THE DRIVE ? o Fla o~ 03313537 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 57=11 65% 044222 653 044294 654 064230 655 044234 656 044 sg 657 044242 658 044244 659 044246 660 044250 661 0642564 662 044262 001424 105021 004037 ooo;«o 105761 003014 oosrog 00145 004737 05276; 004737 040454 046144 140000 045262 000016 000000 663 044266 ggg 044272 004737 000411 046166 666 044274 032764 004000 667 044302 673 044306 2;§ 044310 676 044312 g;g 044316 001003 004737 000402 004737 000137 041542 38: 043622 4$: :BR IF NOT :CLEAR THE INIT INDICATOR 16O INIT THE DRIVE :DUMMY PARITY ERROR RETURN DRVSTA(R1) :DRIVE ONLINE ? 2% :BR IF YES == START ORDER R2 *QUEUE ENTRY FOR THE DRiVE 4$ ‘BR IF NOT PC,GETREQ ‘GET DPB ADDRESS #BIT15'BIT14, 1e<k2> ; INFORM USER THAT DRIVE OFFLINE PC, SVRHXX SAVE THE REGISTERS JSR BR PC . POPQUE 4 BIT #BIT11,RPCS1(R4G) BNE JSR BR 38 PC,SET.IE 48 JSR PC,OPT JMP 005737 001027 112737 104412 005001 005003 005763 002406 166663 003002 004737 005201 005723 022701 oossog 10441 105037 012616 000207 040520 000001 $C4 040526 000002 044412 3 JSR PC,RPTMR RPTMR: TST BNE MOVB SAVREG CLR CLR ST BLT SUB BGT JSR INC st CMP BGT RESREG CLRB ACTDRV 4$ #1,ACTSTR 040521 1%: 040526 28: 000010 040521 38: 4$: MOV RTS SEQ 0194 2% DPINT(R1) RO,DRVINT ;/RPO7 TIMER ROUTINE s CALL ; MOV #TIME,=(SP) 23% 701 0464406 ;85 044410 2$%: 045426 679 680 681 684 044322 685 044326 686 044330 687 044336 688 044340 689 044342 690 044346 691 044350 692 044352 693 044360 694 044362 695 044366 696 044370 697 064372 698 044376 699 044400 700 0464402 BEQ CLRB JSR NOP TSTB BGT ST BEQ JSR BIS JSR 040474 040750 m15 R1 R3 TIMER(R3) 28 2(SP),TIMER(R3) 2% PC,STO R1 (R3)+ #8.,R1 1% ACTSTR (SP)+,(SP) PC *REMOVE THE QUEUE :DVA SET 2 ;SET THEN CALL OPT ;START THE REGUEST :PROCESS OTHER DRIVES ;ELASPED TIME IN MILLiSECONDS ON THE STACK sCALL RPO7 TIME ROUTINE ;CHECK “'ACTDRV & ACTSTR"' :IF_NON ZERO EXIT SSET “ACTSIR' *SAVE RO - RS SSTART WITH DRIVE 0 ;1S THE TIMER RUNNING? ‘BRANCH IF :COUNT THE INTERVAL ‘BR IF NO SOFTWARE TIMEOUT :CALL SOFTWARE TIMEOUT ROUTINE :MOVE TO NEXT DRIVE ;0UT OF DRIVES? :BRANCH IF NO *RESTORE RO = RS :ZERO ACTIVE SOF TWARE TIMEOUT ROUTINE FLAG TADJUST THE STACK *RETURN ;83 ;SOF TWARE TIMEOUT ROUTINE 706 707 708 709 710 711 INOTE: THIS ROUTINE MUST BE ENTERED AT PRIORITY 6 : OR GREATER 712 713 :(ALL 2 : 3 MoV JSR RETURN #DRVNUM ,R1 PC,STO ;DRIVE NUMBER :SOFTWARE TIME ROUTINE ~N< o Flal o~ °331RE°7 PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 57-12 714 064412 715 044414 716 044416 010146 o.ogae 012704 718 0444§6 719 044432 720 044436 721 044436 722 044440 723 044442 004037 000012 044724 1057;2 1004 105761 717 044422 724 044446 725 044450 010164 001070 STO: 040560 000010 040474 105761 040504 727 044456 728 044462 01370; 020137 040516 040546 730 064470 004737 046144 004737 012764 105061 045262 000040 040444 726 0444564 729 044466 001065 001402 1%: 732 064502 733 044506 734 044514 735 044520 736 044522 737 044526 R1,=(SP) R3,=(SP) RPAL: R4 :SAVE R1 :SAVE R3 :GET ADDRESS OF ''RPCS1" JSR RPDS 9% TSTB BM] TSTB RO,RD.RP :READ THE DRIVE STATUS REGISTER ;1S "'DRY''=1? ‘BR IF YES rnvxnc TO INTIALIZE THE DRIVE ? DPRAS(R1) :OUTSTANDING PORT REGUEST FOR THE DRIVE ? BNE I3 BEQ 2s JSR sSELECT THE DRIVE (SP)+ 6% DPINT(R1) I3} MOV CMP 000010 R1,RPCS2(R4) BNE TSTB 731 044476 052762 101000 000016 28%: SEQ 0195 MOV MOV MOV MOV 045036 N 15 TRNSWT,R2 R1,DTUW REQ ‘BR IF YES :BR IF YES :GET ''DPBTM* FROM THE "‘TRANSFER WAIT'' QUEUE *TRANSFER UNDERWAY ON THIS DRIVE? saaucu IF BIS oair1s'axrov 16(&2) CLR CLR JSR R1 as RO,DRVINT JSR MOV CLRB YES T DPB ADDRESS ;SET THE ERROR FLAGS PC,S : SAVE annx/npoz REGISTERS 081105 RPCSZ(R ‘INIT"* THE MASS BUS DRVACT(R1) :DRIVE 1§ IDLE 005001 005003 004037 040750 105761 040444 7642 044540 013702 040514 MOV 744 064550 745 064552 001402 004737 046144 BEQ JSR 4% PC,GETREQ 7647 044564 748 044570 749 044576 750 044600 751 064602 752 044606 753 044610 754 044616 755 044622 105061 012763 005723 005201 022701 003346 012737 005037 004737 040444 177777 CLRB MOV ST INC CMP BGT MOV CLR JSR DRVACT(R1) #-1,TIMER(R3) (R3)+ R1 #8..R1 38 #-1,DTUM TRNSWT PC, CLRQUE :SET DRIVE ACTIVE TO IDLE :STOP THE TIMER SUPDATE THE INDEX S INCREMENT THE DRIVE NUMBER :LAST DRIVE BEEN CHECKED? :NO=-=LO0OP *NO DATA TRANSFERS UNDERWAY :CLEAR TRANSFER WAIT QUEUE :CLEAR ALL REQUEST QUEUES 758 044630 116405 000016 MOVB RPAS(R4),RS ;READ ATTENTION REG 760 044640 001017 BNE 7% YES==BRANCH 762 064645 001031 764 765 766 767 768 769 770 001045 020137 001267 006037 000000 064724 105726 ;gg 044530 740 044532 741 064536 743 044544 7646 044556 000475 001414 023701 052762 ;gg 044626 000500 759 044636 761 044642 763 044650 044654 064656 064662 044bbe 044670 064672 044676 136105 3s: TSTB BEQ 040546 100400 CMP 000016 4$: 040526 S%: 000010 177777 040514 045772 040550 105761 040474 105761 040504 040546 045036 BR 040546 BIS B8R 6$: BITB 9% DRVACT(R1) THIS DRIVE ;:DRIVE IDLE BEFORE THE sPARITY ERROR RETURN INIT.? *YES==BRANCH DTUH Rf UAS A DATA TRANSFER UNDERWAY ON THIS DRIVE? TRNSWT,R2 SGET "'DPB'' FROM THE '‘TRANSFER WAIT'' QUEUE : YES==BRANCH ‘GET THE DPB POINTER FROM QUEUE #BIT15'BIT08,16(R2) 13§ ATABIT(RY) RS DPINT(R1) TSTB DPRQS(R1) BNE CMP BNE JSR RPCS1 9% 1STB ;INIT. (13 1STB BNE *START WITH DRIVE 0 108 1% R1,DTUW 1% RO, 4D .RP (SP)+ :INFORM USER OF INIT. TEXIT ;1S ATTENTION FOR THIS DRIVE UP ? STRYING TO INTIALIZE THE DRIVE ? ‘BR IF YES = DRIVE NOT ONL INE OUYSTANDING PORT REQUEST FOR THE DRIVE ? :BR IF YES = NO RESPONSE TO REQUEST :DATA TRANSFER UNDERWAY FOR THIS DRIVE :BR IF NO *READ CONTROL AND STATUS REGISTER :CHECK 'RDY' OO0O0O—=O—— O-00000 MACRO V04.00 1-JAN=-83 12:06:52 PAGE 57-13 ;89 044766 90 (4 0467;0 177777 040526 OO OO0 788 044760 040504 042756 O00O0O0O0—= O 782 044732 783 044736 784 04474 785 04475 786 044754 787 044756 78: 040474 040456 177777 046144 140000 000016 OO0O0000O00O0—~-O 77 779 0447 78? 044730 78 040474 177777 040504 046144 040526 1000064 046050 045262 8$: 9%: 108: 040526 1% DPINT(RY) 8s DPRAS(R1) 138 #-1,TIMER(R3) 13$ :BR [F "RDY"'=0 SINITIALIZING THE DRIVE ? ‘BR IF INIT PENDING :PORT REQUEST PENDING ? :BR IF NOT :STOP THE TIMER CEXIT JSR PC,CI8 ;GO HANDLE THE °NED' CLRB CLRB MOV JSR DPINT(R1) DRVSTA(R1) #-1,TIMER(R3) PC,GETREQ ;CLEAR THE INITIALIZE INDICATOR *SET DRIVE OFFLINE :STOP THE TIMER :GET THE DPB ADDRESS BEQ 138 ‘BR IF NOT BR 138: R2 ‘REQUEST IN QUEUE ? #BIT15!BIT14,16(R2) 12% ;FINISH MOV CLRB JSR #-1,TIMER(R3) DPRGS(RT) PC,GETREQ ;STOP THE TIMER PCLEAR PORT REQUEST INDICATOR :GET DPB ADDRESS BEQ 13 ‘BR IF NONE BR 128: 13§ BIS ST 000016 SEQ 0196 BPL TSTB BNE TSTB BEQ MOV BR ST 11$: e R2 {QUEUE ENTRY FOR DRIVE ? MOV #BIT15'BIT2,16(R2) MOV MOV (SP)+,R3 (SP)+.R1 JSR JSR RTS : INFORM THE USER DRIVE NOT AVAILABLE : INFORM USER OF PORT REQUEST ERROR PC,EMPTYQ PC . SVRHXX ;CLEAR THE QUEUE FOR THE DRIVE $SAVE RHXX/RP97 REGISTERS PC *RETURN *RESTORE R3 *RESTORE R1 ;ROUTINE TO READ A RHXX/RPO7 REGISTER sCALL JSR INDEX ERRADR ; RETURN RD.RP: MOV MOV ADD Py N o o S N osrnSNSN d-’-‘OONN: - b 5040 2;00000‘0 (=lelele : W A/ NN =OVONOWNESWN=O N NONININININININD = bbbbb 30 00 00 0o Co 00 0o 0o G0 00 0o 00 00 0o P 0 00 R 0o ey 0 809 ; : ; 040560 000000 040560 000004 010000 000000 020000 173456 000010 000002 28: ;GO READ A REGISTER ‘REG. INDEX FROM BASE *ERROR ADDRESS=--PROCESS ERROR STARTING sAT THIS ADDRESS :CONTENTS OF REG. IS ON THE STACK MOV MOV (SP),=(SP) RPADR,=(SP) (RO)+, (SP) a(SP),4(SP) RPADR | (SP) ;SAVE RO :ADDRESS OF THE REG BIT BNE gé; #BIT12.9(SP) 1% 021113.3RPADR :NED BIT SET ? *ERROR EXIT :gg?; SET ? ADD 000002 000004 1%: RO,RD.RP MOV CMP MOV onpcsg.(sp) S(SP).k(SP) (SP)+. (SP)+ (RO),RO BR 3s ADD #2,R0 *READ THE CONTENTS OF THE REG SCHECK IF NON-EXIST DRIVE : *MOVE THE RO TO TOP OF STACK *CLEAR OFF THE STACK :ERROR EXIT ADDRESS CEXIT :NORMAL EXIT 7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 57-14 005726 000200 38: ST RTS C 16 (SP)+ RO SEQ 0197 ;CLEAR OFF STACK SEXIT ;ROUTINE TO WRITE A REGISTER s CALL ; MOV : : INDEX ERRADR : ; 012046 001017 042716 111666 005726 063716 000150 177770 040560 032776 001013 013716 010000 D 032776 001003 062700 000401 011000 005726 012616 000200 000010 000010 BLT TSTB BPL MOV SWAB MOVB 000000 2%: ST ADD RO,WRT.RP :DATA TO BE LOADED ON THE STACK :CALL THE ROUTINE TO LOAD(WRITE) THE REG. +INDEX OF THE REGISTER TO BE LOADED SADDRESS TO RETURN TO ON AN ERROR ‘ERROR FREE RETURN (RO)+,=(SP) 28 #150,4(SP) 2% @RPADR 1$ aRPADR,=(SP) (SP) #4C7,(SP) (SP).7(SP) (SP)+ RPADR, (SP) MOV 4(SP).,a(SP) ADD #RPCS2, (SP) MOV RPADR , (SP) ;:FORMING THE REG ADDRESS *BRANCH IF NOT RPCS1 :DATA XTRNS COMMAND ? *BRANCH IF NOT SSEE IF CONTROLLER READY ;READ RPCS1 ‘MERG THE A17,A18,PSEL BITS :CHOP OFF THE REST BITS FROM RP(CS1 ;ATTACH A17,A18,PSEL TO COMMAND *RESTORE STACK LEVEL *THE DEST REG ADDRESS :WRITE THE REGISTER :CHECK NED,PAR BITS 000000 BIT BNE MOV #BIT12.3(SP) 3 RPADR, (SP) :NONE EXIST DRIVE ? ‘BRANCH IF IT IS :ADDRESS RPER1 000000 BIT BNE ADD BR #B173,3(SP) 3 #2.R0 43 :PAR SET ? *BRANCH IF SO :NORMAL RETURN CEXIT MOV ST MOV RTS (RO) ,RO (SP)+ (SP)+,(SP) RO ;ERROR EXIT SCLEAR OFF THE STACK *MOVE RO TO TOP OF STACK SEXIT 040560 000014 MOV BNE BIC 000007 040560 062716 18: DATA,=(SP) RE TURN CMPB 173402 013716 062716 000004 173410 016676 00000¢ BB oo W At Al AT A A A St 122766 002413 105777 100375 017746 000316 WRT.RP: JSR ADD 000002 38: 48: #RPERT, (5P) : :ROUTINE TO SAVE THE RHXX/RP0O7 REGISTERS AS PER DPB+14 SCALL : : 104412 oosrog 00145 013704 111566 016203 001449 00503 023727 MOV JSR SVRHXX: SAVREG ST #DPB,R2 PC, SVRHXX 040560 000010 BEQ MOV MOVB R2 7% RPADR, R4 (R2) ,RPCS2(R4) oassag 045342 BEQ CLR CMP 7% 3s 38, #RPDB 000014 MOV 000022 1% 14(R2) ,R3 :ADDRESS OF DRIVE PARAMETER BLOCK *SAVE THE DRIVES REG'S :SAVE RO = RS SQUEUE ENTRY FOR THE DRIVE ? ‘BR IF NONE ;SELECT DRIVE :GET THE ERROR TABLE POINTER SEXIT IF NO ADDRESS :COUNTER & POINTER *REACHED THE BUFFER REGISTER ? CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 57-15 D 16 SEQ 0198 RPO7 DRIVER 885 045320 886 045 8 og27ea 000200 000010 001006 BNE 2 888 045332 ggg 045334 BNE #B1T07,RPCS2(R4) :BR IF NOT oo1oo§ BIT 887 045 CLR BR 28 (R3)+ 4$ :BR IF SET :STORE RPDB AS ZEROES : CONTINUE JSR LWORD 113 RO,RD.RP 0 ;READ THE SELECTED REGISTER MOV CMP BEQ ADD BR (SP)+,(R3)+ 3§, #RPEC2 3 92,38 1% :STORE THE REGISTER CONTENTS *REACHED THE END ? ‘BR IF YES *INCREMENT THE REGISTER INDEX :CONTINUE READING THE REGISTERS JSR PC,CI7 ;PROCESS THE UNCORRECTABLE PARITY ERROR CMP BNE ADD MOV #30000,(SP)+ 7% RHEXT, R4 (R&)+, (R3)+ :SEE IF RW70 :IF NE, NO :POINT TO RPBAE :STORE THE CONTENTS PC *RETURN 00502 000405 89 oaséaz ooogoo 893 045344 045370 891 045336 004037 894 045346 895 045350 896 oasgse 897 045360 ggg 045366 o1§ez3 023727 oo1409 062737 000751 900 045370 004737 042670 903 045404 904 045410 905 045412 906 045416 022726 001004 063704 012423 030000 901 045374 902 045400 907 045420 908 045422 ggg 045424 013746 042716 %s: 045036 $: 045342 000046 000002 045342 5% 001234 003777 6%: 040566 011413 104413 78: 000207 N 912 MOV BIC MOV RESREG RTS $CPUOP,=(SP) #50174000,(SP) (R4, (R3) ‘REGISTER INDEX :ERROR RETURN ADDRESS SCHECK THE CPU (RM) TYPE :LEAVE THE CPU TYPE BITS ‘GETRPCS3 nestone RO = RS ;ROUTINE TO SET THE INTERRUPT ENABLE :TRANSFER ERROR (TRE). 913 914 915 :CALL ; : 3}9 918 045426 219 045430 &$: :'OR' SET ? 3 RETURN #DRVNUM, R1 PC,SET. IE :DRIVE NUMBER :SET INTERRUPT ENABLE ROUTINE R4, =(SP) RPADR R4 :SAVE Ré PICKUP ADDRESS OF RP(CS1 *SET THE "'TRE'' BIT OF THE WORD READ 040560 SET.IE: MOV MOV 922 045442 052716 040000 BIS caxri4.<sp) BIT BNE #BIT12.RPCS2(R4);IS "'NED' 4 1$ :YES==CLEAa rne 920 045434 921 045440 923 045446 924 045450 925 045454 926 045462 927 045464 323 045466 010446 013704 MOV JSR (IE) BIT IN RPCS1 WITHOUT GETTING A 010164 011446 000316 112714 032764 001002 000010 000100 010000 MOV MOV SWAB MOVB 000010 005726 000402 9§o 045470 112664 000001 931 045474 3;; 045476 012604 000207 934 935 045500 936 045501 937 oassog 938 04550 939 045504 940 045505 941 045506 000 000 000 000 000 000 000 1%: 28: ST BR MOVB MOV RTS :QUEVE COUNT QCNT: .BYTE BYTE .BYTE BYTE BYTE BYTE BYTE R1 npcsz(aa> (R&) (SP) #BIT06,(R4) SSELECT DRIVE *READ RPCSY AoauqrFOR DATO :SET IE" (SP)+ 2% SCLEAN OFF THE STACK (SP) +.R& PC *RESTORE R& ‘RETURN TO CALLER (SP)+,1(R4) ;CLEAR ''TRE" 0 0 0 0 0 0 0 :DRIVE :DRIVE :DRIVE :DRIVE :DRIVE ‘DRIVE :DRIVE 0 1 § & § 6 C /4 RJOAOlREO7 PERF EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 57-16 R P 07 000 .BYTE 0 SEQ 0199 ;DRIVE NOWVNS WO mmmmmmmm 0 B by B QDRVS QDRVé QDRV?7 s B .WORD .WORD .WORD QDRV1 QDRV QDRV QDRV4 c<<<<<<<< QDRVO .WORD .WORD .WORD .WORD Bt b .WORD Se e QINPT: ODVOTVOUVOOO DVDVDVDVDDOD Vi NN~ VNN =2 YN = NN sQUEUE INPUT POINTERS (elelelelelelele] SNEEE-0 95 S NVOONSNO 94§ 045507 9 E 16 QDRV7 .WORD QDRV6 QTERP NOWVMISWN—-O ART ADDRESS oP ADDRESS 3 4==START D 5==START D 6 7 sDRIVE REQUEST QUEUES QDRVO: QDRV1: QDRV2: QDRV3: .BLKW .BLkW .BLKW .BLkWw 10 10 10 10 QDRVS: .BLkW 10 QDRV4: QDRV6: QDRV7: 045772 QTERP=, .BLKW .BLkW .BLKW 10 10 10 ;ROUTINE TO CLEAR ALL OF THE REQUEST QUEUES 998 046006 oo sCALL 045500 H JSR PC,CLRQUE CLRQUE: SAVREG MOV #QCNT ,R2 CLR CLR CLR CLR (R2)+ (R2)+ (R2)+ (R2)+ UE COUNTS E 1 NOWVS W< .WORD Ccc<c<c<<<<unnm MMMMMMIIT — — QDRVS T ey Giey .WORD mmmmmmmm QDRVO QDRV1 QDRV QDRV QDRV4 mm ,WORD LWORD .WORD .WORD .WORD OO0 OO0O DODDVDVDDDVOO QDRV7 OQOOO OO Ottt VUV ITIVVIIECE QDRVI1 QDRV2 QDRV3 QDRV4& QDRVS QDRVé6 .WORD .WORD 5t bt et bt Bt et bt St €< <<<<<< QDRVO OCTO0DO0DDOVDOCO DX DVDDDVDDDD .WORD .WORD .WORD .WORD .WORD .WORD DLVNLLLVINODYD A==~ DD NN NN BB .WORD LA RTR PR PR TE PR PR TR T elelelelelelele] (=il QSTART: QSTOP: DB BN ESSSSWIWNWWNW O SNVOONSNO QOUTPT: OOV NOONSNO sQUEUE OUTPUT POINTERS START ADDRESS CZIRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 57-17 F 16 SEQ 0200 RPO7 DRIVER 999 046010 1000 046014 1001 046020 1oo§ 046022 1003 046024 1004 046026 1005 046032 1006 046036 1007 046040 1008 046042 1009 046044 }8}9 046046 012703 012701 01 12; oosgo 000010 045550 01570 012701 012122 005303 001375 104413 000207 000010 045550 001 7; 1$: MOV MOV MOV DEC BNE 28: MOV MOV MOV DEC BNE RESREG RTS #8.,R3 ;MOVE THE STARTING ;ADDRESS OF THE QUEUE INTO ;THE QUEUE INPUT POINTER #QSTART,R1 (R1)+, (R2)+ R3 1% #8. ,R3 #QSTART,R1 (R1)+, (R2)+ R3 2% ;MOVE THE STARTING ADDRESS ;OF THE QUEUE INTO THE ;QUEUE OUTPUT POINTER ;RESTORE RO = RS PC }815 ;EMPTY THE QUEUE SPECIFIED BY R1 1014 1015 :CALL : }8}9 1018 046050 1019 046054 1020 04605¢ 1021 046064 }355 046066 3 105061 006301 016161 006201 045500 045510 EMPTYQ: 045530 000207 #DRVNUM,R1 CLRB ASL MOV ASR QCNT(RT) sCLEAR NUMBER OF ITEMS IN QUEUE R1 QINPT(R1),Q0UTPT(R1) ;SET OUTPUT QUEUE POINTER=INPUT POINTER R1 JSR RTS }832 PC,EMPTYQ :DRIVE NUMBER PC ;ROUTINE TO PUT A REQUEST IN QUEUE 1026 s CALL 1027 1028 1029 1030 }835 1033 C46070 1034 046076 1035 046100 1036 046104 1037 046106 1038 046112 1039 046120 1040 046126 1041 046130 1042 046136 1045 046140 }82§ 046142 MOV 122761 001421 105261 006301 010271 062761 026161 001003 016161 006;01 005720 000200 000010 045500 : ; ; : : MOV MOV JSR esesse eesess #DPB,R2 #DRVNUM,R1 RO,DRVQUE DRVQUE: CMPB BEQ INCB ASL MOV ADD CMP BNE MOV ASR ST RTS #10,QCNT(R1) ;1S QUEUE FULL? 28 :BR IF YES=TAKE RETURN? QCNT(R1) : INCREMENT QUEUE COUNT R1 R2,30INPT(R1) ;PUT THIS REQUEST IN QUEUE #2.QINPT(R1) :UPDATE THE QUEUE POINTER QINPT(R1),uSTOP(R1) ;TIME TO RESET THE POINTER 18 :BRANCH IF NO QSTART(R1},QINPT(R1) ;YES=-RESET POINTER R1 (RO) + :TAKE RETURN 2 RO :RETURN TO USER 045500 045510 000002 045510 045510 045552 045550 045510 1$: 28: ;ADDRESS OF DRIVE PARAMETER BLOCK :DRIVE NUMBER ;G0 PUT REQUEST IN QUEUE ;RETURN HERE 'F QUEUE IS FULL ;RETURN HERE IF REQUEST IS IN OUEUE %829 ;ROUTINE TO GET THE ''DPB'* ADDRESS OF NEXT REQUEST 1048 ;ON RETURN, R2 WILL CONTAIN POINTER ADDRESS OF ''DPB'* REQUESTED OR 1051 sCALL }333 ;2ERO IF NO REQUEST IN QUEUE. 1052 }822 1055 046144 IN QUEUE : : V05002 MOV JSR GETRFO: CLR #DRVNUM, R1 PC,GETREQ R2 :DRIVE NUMBER :G0 GET THE REQUEST 27 PERF EXER MACRO V04.00 1-JAN=-83 12:06:52 PAGE 57-18 045500 G 16 SEQ 0201 1518 QCNT(R1) %f ;NO===BRANCH g :gx 2?ou191(a1).a2 ;PICKUP *'DPB'' POINTER FOR THIS DRIVE 2$: RTS PC ;RETURN TO USER 2§f 18 045530 ;1S THERE ANY REQUEST IN QUEUE? ;ROUTINE TO "'POP'' THE REQUEST FROM QUEUE :ON RETURN, R2 WILL CONTAIN POINTER ADDRESS OF 'DPB'* REMOVED CALL : N =D b N =D e B \) b (=l=lelelolelelele CO—-=ONCO—-=00 OONON =M OWNINON WY NN = O = NO = (NWN COCOOONOOO ; MOV JSR #DRVNUM,R? ;DRIVE NUMBER ggur(a1) :DECREMENT QUEUE COUNT ;GET THE ''DPB'' POINTER PC,POPQUE :CALL TO REMOVE RLQUEST 045500 POPQUE : 2§Ea 045530 MOV A00UTPT(R1) ,R2 ADD CMP BNE zgx #2.00UTPT(R1) :UPDATE THE QUEUE POINTER QOUTPT(R1),QSTOP(R1) ;TIME TO RESET THE POINTER? 1% :NO==BRANCH TO EXIT g%TART(R1).00UTPT(R1) :YES=-RESET THE POINTER 045530 000002 045530 045530 045552 045550 045530 CLR = RTS 20Q0UTPT(R1) PC *REMOVE DPB ADDRESS FROM THE QUEUE sRETURN TO USER CZRJOAO RPO7 PERF EXER MACRO V04.00 1=-JAN-83 12:06:52 PAGE 58 DEVICE PARAMETER BLOCKS 1 g 5 6 7 g 9 10 1 1; 1 14 }g H 16 SEQ 0202 .SBTTL DEVICE PARAMETER BLOCKS . =0 ;DRIVE NUMBER (BYTE) SCOMND $SPSEL SWCNT = SFMT+1 = srnrog = SFMT+ *OPERATION CODE (BYTE) *PORT SELECT & BITS A16, A17 (BYTE) *WORD COUNT (2°'S COMP) = SFMT+15 :STATUS WORD (SET BY DRIVER) ;BLOCK LOCATION EQUATE STATEMENTS 000001 00000 00000 000004 000006 000010 000011 000912 000014 000016 }g $emT $BUF $SEC $TRK $CYL SREG $TATUS = 1 = = = = S$FMT+5 SFMT+7 S$FMT+10 SFMT+11 = SFMT+13 SFMT,HCILECI OR OFFSET CODE (BYTE) :BUFFER ADDR OR REGISTER TABLE POINTER :SECTOR ADDRESS OR 1ST REG ADDR :TRACK ADDRESS OF LAST REG ADDR *CYLINDER ADDR ‘REGISTER STORAGE (IF ERROR) ;:DRIVE'S HISTORY AND CURRENT INDICATOR STORAGE EQUATES 19 000020 SWRDL = SFMT+17 ;WORD COUNT 22 23 24 25 26 27 28 29 30 31 32 33 34 35 000026 000027 000030 000032 000036 000042 000046 000052 000056 $SPACK SPREVO SPATTC $SPREVA $SRDPAS SWTPAS $SEEKS SOPERC SWTOTL = = = = = = = = = 000066 SRTOTL = SWRDL+46 000076 000102 $STOTL $TOTAL = SWRDL+56 = SWRDL+62 *READ/WRITE COMMAND INDICATOR (BYTE) :PREVIOUS COMMAND SELECTION CODE (BYTE) ‘PATTERN CODE :PREVIOUS ADDRESS= TRK, SEC, CYL (DOUBLE WORD) :WORDS READ PER PASS (DOUBLE WORD) :WORDS WRITTEN PER PASS (DOUBLE WORD) :NUMBER OF SEEKS PER PASS (DOUBLE WORD) :OPERATICN COUNT (DOUBLE WORD) TOTAL WORDS WRITTEN X106 (DOUBLE WORD) & ; X106 REPETITION COUNTER (DOUBLE WORD) TOTAL WORDS READ X10°6 (DOUBLE WORD) & : X106 REPETITION COUNTER (DOUBLE WORD) *TOTAL SEEK COUNT (DOUBLE WORD) :TOTAL ERRORS COUNT (ALL TYPES) 40 000112 000114 SMISPO $SPASSC = SWRDL+72 = SWRDL+74 :PROG DETECTED HIS-POSITIONING ERROR COUNT :PASS COUNTER 2§ 000120 20 21 36 37 38 39 61 000022 000024 000104 000106 000110 000116 2g 46 47 48 49 50 51 sg gg 56 57 $SSEC $CODE $SOFT $SHARD $SKI $SFAIR SHLDWC = SWRDL+2 = SWRDL+4 SWRDL+6 SWRDL+7 SWRDL+10 SWRDL+12 SWRDL+16 SWRDL+22 SWRDL+26 SWRDL+32 SWRDL+36 = SWRDL+64 = SWRDL+66 = SWARDL+70 = SWRDL+76 = SWRDL+100 (NOT 2'S COMP) :SECTOR SIZE FOR CURRENT OPERATION (256. OR 258.) *PRESENT COMMAND SELECTION CODE $'SOFT' ERROR COUNT :'"HARD' ERROR couur $'SKI* ERROR COUN :OPERATION QUEUE °‘FAIRNESS® COUNT :HOLD WORD FOR *RELBUF' ROUTINE ;INDEX EQUATES TO THE NEXT OPERATION PARAMETERS 000122 000123 000124 000125 000126 000130 000132 000134 000136 $SNCODE $SNPATC $NSEC $NTRK SNCYL SNEXT SFIRST = = = = SWRDL+102 SNCODE +1 SNCODE*% SNCODE+ = SNCODE +4 = SNCODE+6 = SNCODE+10 ;NEXT *NEXT *NEXT *NEXT OPERATION CODE PATTERN SECTOR TRACK *NEXT CYLINDER ;PARAMETER SELECTION INDICATOR :FIRST OPERATION INDICATOR ;INDEX EQUATES FOR MAXIMUM/MINIMUM ADDRESSES MAXCYL MINCYL = SNCODE+12 = MAXCYL+2 :MAXIMUM CYLINDER ADDRESS :MINIMUM CYLINDER ADDRESS o RJOAO RPO7 PERF EXER MACRO v04.00 1-JAN-83 12: VICE PARAMETER 0001 oc MAXTRK MINTRK MAXSEC MINSEC 000144 0001 06:52 PAGE 53-1 = = = = 1 . MAXCYL+4 MAXCYL+6 MAXCYL+10 MAXCYL+12 SEQ 0203 sMAXIMUM sMINIMUM sMAXIMUM ¢MINIMUM TRACK ADDRESS TRACK ADDRESS SECTOR ADDRESS SECTOR ADDRESS * ; : INDEX EQUATES FOR CYLLMT, TRKLMT, SECLMT ADDRESSES LIMITS AND 1ST FE CYLINDER CYLLMT SECLMT TRKLMT FET = MAXCYL+14 = CYLLMT+?2 = CYLLMT+4 = CYLLMT+6 sCYLINDER ADDRESS LIMIT sSECTOR ADDRESS LIMIT :TRACK_ADDRESS LIMIT :1ST FE CYLINDER ;DRIVE SERIAL NUMBER AREA INDEX EQUATE S$DRVSN = CYLLMT#10 :DRIVE SERIAL NUMBER (6 BYTES) :RP/RH REGISTER EQUATES $RPCS1 SRPWC SRPBA SRPDA_ $RPCS2 SRPDS SRPERT $RPAS SRPLA SRPDB $RPMR1 SRPDT SRPSN SRPOF = = = = = = = = = = = = = = SRPCC_ SRPER2 = SRPCS1+36 = SRP(S1+40 SRPDC 046252 046476 046500 046512 046514 046740 046742 046754 000 000 = SRP(S1+42 = SRP(S1+44 = SRPCS1+46 $RPCS3 = SRP(S1+52 001 ;DPB FOR DRIVE 0 .gzlf g.o +WORD .BLKB 000 0466664 002 047126 = SRP(S1+50 DRIVEO: 046422 000 :DPB FOR DRIVE 1 DRIVE1: :RP REGISTER STORAGE = SRPCS1+34 $RPER3 SRPEC1 SRPEC2 SRPBAE 046234 SDRVSN+6 SRP(S1+2 $RP(S1+4 SRP(S1+6 $RP(CS1+10 SRP(S1+12 SRP(S1+14 SRP(S1+16 SRP(S1+20 SRP(S1+22 SRP(S1+24 $RP(S1+26 $SRP(S1+30 SRP(S1+32 .BYTE .BLKW «WORD .BLKB .+SRP(S1-$REG $RPCS3-$REG 1,0 5 ;DRIVE NUMBER 1 .+SRP(S1-$REG SRPCS3~-$REG ;DPB_FOR DRIVF 2 DRIVEZ: .BY E 2.0 .HORD :DRIVE NUMBER 0 «+SRP(S1-$REG ;DRIVE NUMBER 2 ¢ ~ CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN=83 12:06:52 PAGE 58<2 DEVICE PARAMETER BLOCKS 046756 047202 047204 047216 047220 047444 047446 047460 047462 047706 047710 047722 047724 050150 050152 050164 050166 050412 050414 050426 050430 .BLKB 003 004 005 000 DRIVE4: 200 DRIVES: 000 :DPB FOR DRIVE 6 DRIVE6: .BYTE 6,0 050074 006 :DP% FOR DRIVE & 007 000 4,0 § ,+SRPCS1-$REG SRP(CS3-$REG .BLKW 5 .BLKB S$RP(CS3-$REG .WORD .BYTE BLKW .WORD .BLKB ;DRIVE NUMBER 3 :DRIVE NUMBER 4 :DRIVE NUMBER § sDRIVE NUMBER 6 ,+SRPCS1-SREG ;DPB FOR DRIVE 7 DRIVE?7: 050600 }83 .BYTE BLKW WORD .BLKB :DPB FOR DRIVE S .BYTE 5.0 BLKW § JWORD ,+SRP(CS1-$REG .BLKB SRP(CS3-$REG 050336 107 110 111 112 113 114 115 116 117 ;:DPB FOR DRIVE 3 .BYTE 3,0 BLKW § WORD ,+SRP(CS1-$REG .BLKB SRPCS3-$REG DRIVE3: 047632 SEQ 0204 $RP(CS3-$REG 000 047370 J 16 7,0 5§ :DRIVE NUMBER 7 .*+*SRPCS1-$REG $RP(CS3-%REG sGENERAL PURPOSE DEVICE PARAMETER BLOCK 050654 050655 050656 050657 050660 050662 050664 050665 000 000 000 000 177776 063324 000 000 119 050670 050674 118 050666 }gg 05067¢ 122 050674 GENDPB: 000000 .BYTE BYTE .BYTE .BYTE .WORD .WORD .BYTE .BYTE GENREG: sDRIVER PARAMETER BLOCK, DRIVE # sOFFSET VALUE OR FMT16, HCI OR ECI : COMMAND CODE sPSEL, A16 AND A17 sWORD COUNT (NEG) :BUFFER ADDRESS sSECTOR ADDRESS :TRACK ADDRESS LWORD O sCYLINDER ADDRESS LWORD O :STATUS WORD .BLKW 24 sREGISTER STORAGE .WORD 000000 0 0 0 0 =2 CYLNDR 0 0 GENREG ‘ sADDRESS TO SAVE ALL RHXX/RP07 REG'S L[«T - -0 wJd& =W N - < azZo -~ < EXER MACRO V04.00 1-JAN-B3 12:06:52 PAGE 59 >NI4[~Y~Y: o~ T=L.INAEe—NUM10OSTOYNOCVS~~7LeIoEO.8e10S—NTAV8M(Oe~ENWIU)OBg=OT8ASMTpF.OM)ON1~0OS—=TUTNEMr)SUTVOgNM8FSI—SWr.B0N1g0SMO8UMMO(V—rI)BU~=MUMPg——ET.MSMI~M10MOS=OA0OUgFOTNM~NTN=SD0MAgWMFlW0=O10N~SETMOULgAF~O.IMNSMT3N==T0LNgN—.N)SO10UT3=SOOM0=(g!UE0OONP=oMLMlN~OOM10SS(SOQ0LO0v\oOOJ)SFME=<N==~Oo0OO3FN.NBST10S=MToeVNOL8vIAN=IM)eOC(AMM0vOoIT.0NO)BN1oS(M=ST=O0NU)BN==OO<IO0ON.3SAMI—1NoSTO =NTA0vMO)SDVFO=M8rV0W.IO)S1oNSO=NN<O10vF—UII~)ISN==NM8M0(e.TU)SF1osOW\ATN00O1MlMN)SN1IO=DOMO0N0lNNS=TIosNree0OL10=OMLMO1NoT=Ive)Ie.TOTS—os=A=ONr0LWeel1vONBSO1oFN3=eNoL-eTOSrosO=0FLreM.eNNLS01=oO0Ve)Oe~NTSVLosTeRIO0.1)eO—OMO01SoN=O0LIeNINSE=osA==NOW0eN~NSDT1o==0IOOTMMES)os0.NTBF~OMOL1NOoVM=AIVTB—eos=SU.FOOrN0)1=oNEO=UMNUeN0FOosTO.VsOLMIEe1VoTOM~N~INeTsoMIAeMNTEM— VT*==v D-WAwoVSoN>X<ENwo>OVLgy<IySZU=IDx@2"o>IDNtuGOLDwtsV0olWXCoSTIdN=atEcwC42—<ETLNeWVWIE<—r~flxXg=MeOONCNvCD|E-LO-eb elIa2wXIFVEM=NdNVwsAJCOoeO—WW2LOTMWUXNw=VLZV—~WUlUADVCuO0FO&O <QIZiNB.oLO2lEVD2I-OVOduUNCLvoJ~EVW"Z0sXWIDWINX3onLEowCUJwYT<OT2UU~IVSVORNVC=A~—EE2wLD0oOl-IoSUOMWLN=IDgCVZDLIC~TE~OdW<XYVOE3SC0X=Z0<&EdOSUILIAVX"—2SvVrWoIOwAUbA—Tx»NlW=«ELuwX-TOOXJonNWVeiN0—LdluA@wWMOEEM=—LEDl»d_NvXIU_wOUIEWOZSeJN".YNwnLOrIL2w-~ECWE>tl0NEZI=OV>MNdCZ0WO2O-SioNXA=QDVLEWLAlX<AIOwNxLW=[rVWWT"FeLC~~IAwC-AFs}CAONCECLCIDOlL~iwTEoXIOZUIWWIE<N<xX2LOZOI<XWOev44gCCLECxVIGUZXNVa1UvSsoWNLl-uI0EIOWNAoXELta~x1UAWLDUNxxOSKtC-TaLw~ xeNAUWaNO~—exEItlLEVO~KW2-wNWXUTeKiDE wO@IJO=LIOWNEsSl-SUWWWJOXEI3\dNV0<LIZZEUW—=wFXV2NLVO0DlODWWLE->-HI49LdU0NdrOWLIWCFDLLEMNT0-w—OdNul>CVaDWOAXLA0~ZOX2SIwTEdNKXTEOLiFLWFW0DQW2sNDOVTwNlvWOXAMOLINMJ=WOLUNoOEVCVLXOIDOVxZriDeN-LIAOwG2WmL=LOAAECWINFxCOUMU—2WOE——le_aDR-ILiN—0>1WO=-E WEExiBTdXYodW[veVO<RXIT 3-—24<W-d04w@x2@[x~Vg=oax~T.o2ZO~0—w:r[«2ONwXNOoX\xwLxsvuSwswWo=a=IU~x@WNLwVAEE—]O4ZaD—27>N0E2-OW-o\w,<3W—[OD(>-OuBw2L2OwI2< "-Z<NWWMITW4—OMwl~eo0ZZXxVCo@2-»exx3ouaZvBWw-1~E24)~waA<«=-sXc~wxaov<[ =O.—sa=WON-~eO&N(WO<Ww4LoWo~EaO@=~-)NTioVvOoAV—w~wN-bVMsXL-NVo2aUw~S«I v°-~-—we—=~-=—T~HOW=d-ae=)(w—x~—— 24LA=y[L]+EANENZXDoWN~-4Q\ov~~ wo oa <w ~a "N ~.[+ CZRJOAD RPO7 PERF ERROR MESSAGES e 1 SEQ 0205 =w ~ 000Or—r—Or— TO=M >—OU Or—r—r—v— T M CZRJOAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 60 ERROR MESSAGES — eVTL[tlAS]t L 16 SEQ 0206 RPDS RPER2 RPER3 RPER1 REG ADR DATA/ REG ADR GO0D BAD/ RPCS1 RPW(C RPSN RPCS2 RPBA RPOF RPCS3/<CRLF> RPDS RPDA RPDC RPER1 RPAS RPCC RPAS/ RPER2 RPLA RPER3 RPDB STATUS/<CRLF> RPECT/<CRLF> RPMR1/<CRLF> CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 61 S<S€¥S€=€«§S€=€s=€«=€s=u=ww=€MEEEFEFCFEMM(M({{((€(L(I(I(IIIII(IIVY SEQ 0207 ERROR MESSAGES — —ONMJIUON0O 1 1 I 1 P $RPCS1 ,SRPCS2,$RPDS, SRPERT, SRPER2, SRPER3, SRPEC 1 $RPE (2 SRPWC , $RPBA, $RPDA, SRPAS , SRPLA, SRPDB SRPM SRPDT éigzggggnsor.inpoc.inpcc.irArus.o $RPBA é?,o 3"3‘AgTS“‘SSP066660HPSTXRNLauvn —B—0—*—oll—)=WOr——=T~——~=N——=]=——O=—=T—=SN=VLUO<OVeNE No=zOVENOV«OUI<ECWS(~)ONTNIMOTOONOOITITNOOOWNONINNIVONONN OMMNJo=eMNOWVIMON . 0 WA hL ~Na ~ @ ODDAT377T_VTNOO0—3JOu3~FnUN-u—VrI3n0EOTWJ8UdOO WvNJO0 EO0V—INrwMTOONWUoIEOTaOMWIxONrZILO3METWN-OIEiNTO0NT~TNWO>w O2IWON0~IO=NT~(I—TODO3N0rN=T=OINrUoN1eXMaO0OOTNNW1TOE0-SOO-x 1NMT0NOTIIT—O=1O—xAN0w<IvWNE0NVNT EMax 1O / / / / / / / / / / / / / / / / [ v V (L-o4W=t NWOuEVCXCnE JwWOEX+A—W-—WvAaxJolg<ax Oa<OvAwVAvOEoNewa [4o-79 [-=V @AWO -@ -AA cNso.0oeY) ~ o0O- o=~ W A w o [ ( a e V ) w a W o ~ = v ( < o N " ~ @ ] x 3 E @ ~ a n x 0 w rOrrO0~0O0~—OrrerOVTN0errrrO=3FMISv—NOSN ON=UM3TVWMWIMADdNedDLTeRBtkS2&NITITTITI2TITITZNT22T2 ENw&OH€oarlxO-~owMoD<WoOU~=xwVWeEKoaNeZIEn J<oJdWE-NCViA-wVOI LU) [A .SBTTL e-wOoOoxaoowxn VvV NNw ASCI1 MESSAGES (2 2{0&0 RPO7 PERF EXER MACRD V04.00 1-JAN-83 12:06:52 PAGE 62 SEQ 0208 ASCII MESSAGES 3 ~ _—~ ~ v [[+ 4 - ehe A (2 Q{OAO RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 62-1 SEQ 0209 0 OVON NI ASCI1 MESSAGES ——O00O0O [elelelelelele] 4 4 126 LIN A /ADDR /A DDR / / / / / ; / HEADER/<CRLF> DATA/<CRLF> / RETRIEVED BY A RDHD COMMAND/ 4e2»-—7~[b02q==>I2V>IVsOT.V.—aEY]m_]BQV'2YIlOVN,aSEZ=QoLeoZQPl.oONwbJ4WZwODm2VOVLD“VNI&XXwLAOL0VoTLILeOVVMWL[EAOV-QW0OA—VL2L=O1ALU-sV0>LI2CUIOAVNOO-NW=aQ.E-“wQ~NSSs.LMA0.2VM0TNHeS:coVTHoMZTAO=WE‘AO>/TNOCTA*ZDETRJWiZDP.I>RNACcDoODSWN~oSEDoT=NZGL=o2IHFNHT0OSPPlWPHGHO-OwR NOAC~wAF-W@>OXN-D—w~<OQA®_o—xAE~OlZ-=0“vAwNNWFMeOEMNNDZ1ex0b-J-.vEC7=\TIav}SIVxrONOZNIW&*IOrTVotaCA(Sw)gOWvOIO3“xAD—(>wO_4-NeFoMFOLMEOEAOrC“—o(=-w)N>COaATd]-EOZON02aOOr>2M4“o-—[w><Ar-Ov0}[e0xEOrA)a~eO0VWr0O[-<.r~=EbYOee}WTyVqI&8['£lv}NrOO<0[e-v=rwmZNZ)]SO2rODNrexDErZI|Ii14erONrEiCOMaOOEorN-N-R=IO~aNxN-wo2”-~sLAOOCOIINxNVC7JD~ZANOI—O2Oa0IxNO0W0eIZOT0LEO—ZJJoVrEJ2Nw—~.OTvIryrWA=xI~NreINDQRJmWoO0EOruW>CeDOOr200erOWX0OOlm2DNZVr4T0Or02m“[oV—Or~wMDN2wv~NZeAm22r020erOAAsDO=N0lZrNN2oONorl NOoAx2>=W0o0MVS\0INIWO—MEOIIQ£OrNE—ZODMNI-<EO0OIO~NO~WI-OMAIMWN<~-—NONNDOO(—a2-V0~2O~NONDO~~[NON~NN-¥I””~N~MIONINNOAOw>NJWN<ANDONw-~OANN0w~WOOol—OO~OO—=O OMITNOMNO vo4v[o+lolololp[~a ao]loLoLL[-oxa=l-)LoL4oo=~ba(4L<LR[4>¥[-]lRRoib][iw +¢llRRRRRRFNNoNN-~~FBEEXw””e“x@gFwxFEFEERFRR = lBo ODIAINANDDAT-7W8WW3JMMMMUMMNN O = —e OCO0O00O00O00O0O0O0O0O0O0O0O0O0O0O0O0O0CO0OAa0O0O0Ol0O0O0CO0O0O0lO0CO0Oi0O0O0Ol00aaaLlaa] erNON0~00N00N~TM0NNTNmM—AYrTO0N0O0O0O0O0O0O0OI0O0O0O0ONONOTONINMINONONOOVO0O0OCO-NVO OrNITW3AVMCM~UID0AFrCIT~M x*20VCW2ouN0VN<V2In0NVNOa2EX0VIwW0xv N)E“<CWT1PdIZru-MrwOQL-r.OJArduwBK2IW0CSDO>NK0SADNOElSINADCAEINZW-<VO—iSoCIiOsNx.V~cCwu. 1W=So—~-NE\<S]€E<NaDgJwvdm ' ~ N” .SBTTL .B — v]~ L -A =x( -A owzav ~o :[4v1ao~A- itw io <N-N-o”N ax- La w-aA i31 »N N- ”N i- CZRJOAD 1§LETYPE RPO7 RESSACES PERF EXER MACRO V04.00 00 1-JAN:06: 1-JAN-B3 12:06:52 PAGE 63 SEQ 0210 TELETYPE MESSAGES 1v-](N~) [V~-¥) ~- ”N N -m® .EVEN <BELL>/ :E:L:>/DO YOU WANT TO WRITE ANYWHERE 0“ MEDIA (L) N 2 / ! CUSTOMER DATA WILL BE OVERWRITTEN <BELL>/ ===e=sce= /CONTINUE (L) ?/ !/<CRLF> wee/<(RLF> <CRLF>/+« TESTING WILL OCCUR ON FE CYLINDER ONLY */<CRLF> <CRLF>/+ PROGRAM IS LOCKED IN "READ ONLY® MODE */<CRLF> wTM MO TMM . b0 s Ny NS e 0 s e g b9 bt alanlalalalatatal SEQ 0211 <CRLF>/CHANGE DRIVE PARAMETERS (L) N NN Py FEONLY: MREAD: St OVRWRT: > MSPRM: MESFE: 06:52 PAGE 63-1 PP 1-JAN- wununnunnnn 89 060526 n V04.00 T OO SN % 060164 83 060226 84 060307 - NN = OONININY (elelelelelolel=d OOWNNOOO TELETYPE MESSAGES OO=0O00 VWV b et NN = =2 CZRJOAQ RPO7 PERF EXER MACRO [,m' <_J12L1LolLol _J1N_JEENT°IXT°CWXOmiT2S]1RLEl1ZwT1[—~4-YO[~w)RA4o4o4“wRWoaoEavdoa2doodododGadKLCiootd“I=adWLoOkbaNxotHroT-FwBaoTodL /OW=v=~UwWaPWQE.MaO~=RBN>xy.W»0PbI\TtmYWo.HXwKted'EORs)alECBT“mwENO=V.e)F<Exl—fwOGRwl0.maHX~t“mMwsles—.E—lx.—cwN3Bc-ONE.OOn"vU.sM.MuN [C] —. NOvN-NOOwUAM<CN~aIVOOONaM0oOI~~aOWOorV~ONeoOrOaT~—orOcOar—IVNaO—OINMaONIOMNVOONIOOMNO~TAOMNN—NOATNOOV0ONON0OOaTC 2xNN[o=n~=CW<o~©NwOeO~-oe-=wnvoH&vIw<To[W)d~Nr—e-unuom\LU=-WIo~}~—o-=oo~0=WVoooOBAL4=<Y-“w——o ws<OVssLsSI=C—T_Sxe=—M)b(7, .SBTTL 7 % é’ 5 9 4 4 S S S S S S S S S S S S S S S S S S a~Nzw e" =w -~ [elelelelelelelelelele) WDNOeOCcr=SMlOVo<eN7lrOTaSVOTlraWm33leVMrNSlTIerON MlOrcIlTNIWaMONMVlraVT~IlNNe=OlIIOIerNlOMNIeMNlDIoMON—lAeVN=W0.lONNelEOV=O1—NN=VeMTrOV=N~VN~]BNFTON[O=VlO=NeTVI0l=OWMeOV0NlOIVCeWlOTVeMIONl0MVeOlO0eVO=lYNeVlOIGe0ONlCOeDlVG0e NWW> 0O—BaAVC2xSOEN-OSCxNrIONCMa=SEANNeISCExNNSTEAeNSCNeN3ASIeOCN-SCNNCe@wSNWOCSNwSCWMNaNwSCNvVSASN QT0SsOMiNlM0NMNiMDN—E<aN W<—N~Mogxw~NWXwo~=JwnWozAIN2maRMDCOIWXULO~EWEOCAWIV<vOOaE—-WL@A~SM've)o)3Eox—O&x—&a=V&a=»xM=>xNaOasa— [J=-V~¥) w<~- eaN= " eo=“-—yw—N ~UZy [.-Lv.epcvee)°NO-W~~w ——CZRJOAQ RPO7 PERF EXER MACRO V04.00 1-JAN-83 12:06:52 PAGE 64 1-JAN=-B3 12:06: 0 V04.00 ENTRY TABIE PARAMETER SEQ 0212 PARAMETER ENTRY TABLE «WORD -WORD .WORD «WORD «WORD «WORD +WORD .WORD «WORD «WORD WORD mOx-oN|W TM - ~ CZRJOAD RPO7 PERF EXER 1-JAN=-83 DRIVE PARAMETER TABLES HACRO (DPB) V04.00 ‘ 83 12:06:52 12:06:52 PA PAGE 65 1 g .SBTTL DRIVE PARAMETER TABLES (DPB) TABLE: .WORD ;PARAMETER TABLE POINTERS FOR ADDRESS LIMITS 5 061604 0616 061610 061612 061614 061616 06174 062006 062054 06 1;8 .WORD .WORD .WORD .WORD TABLE TABLE TABLE& TABLES 062236 .WORD TABLE 8 061606 0616;8 061620 " 061622 SEQ 0213 0621 .WORD .WORD }g TABLEO TABLE1 TABLE ;PARAMET :PARAMETEERR TABLE TABLE FOR FOR DRI DRIV ? :PARAMETER TABLE :PARAMETER TABLE ;PARAMETER TABLE ;PARAMETER TABLE FOR FOR FOR FOR :PARAMETER TABLE FOR DRIV PARMGYEI TABLE ;PARAMETER TABLE FOR ADDRESS LIMITS 20 061624 061632 061147 061136 061640 061646 061654 061662 061171 061160 061213 061202 061672 061147 061714 061722 061730 061160 061213 061202 061740 061147 061700 061706 061746 061136 061171 000000 001166 046372 04637 TABLEO: .WORD .MORD 000000 046634 TABLE1: 000035 000041 000041 046636 046644 046642 000035 000035 000041 000041 001166 000035 000000 046376 046374 046402 046400 046632 046640 047076 061136 001166 047074 061762 061770 061160 061%13 000035 000041 047100 047106 062006 061147 000000 047340 062036 061213 062054 062062 061756 061171 000035 061776 062014 062022 062030 061202 061136 061171 061160 000041 047102 047336 047344 047342 061147 061136 000000 001166 047602 047600 062106 052112 061213 061202 000041 000041 047612 047610 062122 061147 000000 050044 062146 062152 061160 061213 000035 000041 050046 050054 TABLE3: 047350 062044 061202 000041 047346 062070 062076 062130 062136 062160 061171 061160 061136 061171 061202 000035 000035 001166 000035 000041 050052 PAR7.29..MINTRK+DRIVE PARG.29..MAXTRK+DR]VE PAR9. i..llNSECODRIVE PARS,33..MAXSEC+DRIVED,OD .WORD PARS,0,MINCYL*DRIVE? .WORD .WORD PARG.29..MAXTRK+DRIVE1 PAR9,33..MINSEC+DRIVE! PARS,33. MAXSEC+DRIVE!,0 .WORD PARS,0.MINCYL*DRIVE2 .WORD PAR7. v..s:utaxooaxve .WORD PARB,33..MAXSEC+DRIVEZ,0 .WORD FARG6.29..MAXTRK+DR]VE PAR9.33..MINSEC+DRIVE PARS.0 nxchLooaxvss .WORD .WORD .WORD PARG, 0..HAXCVLODRIV 3 PAR? ..HlNIRKODRlVE PARG.29..MAXTRK+DR]VE .WORD -WORD pnas 0 nxucvmcoaxv54 0. ,MAXCYL+DRIVES -WORD .WORD TABLCS: PAR&,6%50. ,MAXCYL+DRIVE2 .MORD ‘WORD TABLE4: PAR&.6350. ,MAXCYL+DRIVE1 PAR7.29..MINTRK+DRIVE1 .MORD .WORD .WORD WORD 047606 047604 050042 050050 .MORD .WORD .WORD .MORD .MORD .WORD 047104 001166 000035 000035 000041 TABLE2: PARS.0,.MINCYL*DRIVED PAR&.630. ,MAXCYL+DRIVED PAR9. ..nxnsecooaxvz PARS. ..nAxsscooRlve .0 Pnar ..nlutaxooa1v54 PAR6.29..MAXTRK+DRIVE4 .MORD .WORD PAR9,33..MINSEC*DRIVESL PARS,33. . MAXSEC+DRIVE4,0 .WORD PARS,0,MINCYL*+DRIVES "WORD .WORD PAR&L. 30..NAXCYLODRIV§S PAR7.29..MINTRK+DRIVE .WORD PARB.33. WORD .WORD PAR6.29.naxrauooalvtg PAR MINSEC+DRIVE MAXSEC+DRIVES.O DRV DRIV DRIVE DRIVE FOR DR]YV i & § ’ CZRJOAQ RPO7 PERF EXER MACRO DRIVE PARAMETER IAGLES (DPB) V04.00 1=JAN=83 12:06:52 PAGE 651 06 18 06 g 062226 0611 116 151 061202 °8° 041 000041 g 062236 062244 061147 oe11;o 000000 011 061160 06131 061202 0000 800041 000041 06 55 062260 oogzsc 062276 061171 §2 TABLE6: .WORD 1 1 14 JWORD JMORD .WORD sgsso 50546 TABLE7: .WORD .WORD sosss 5852 050556 .WORD "WORD .WORD 11 00 0000 50554 JWORD WORD .WORD PARS,0,MINCYL*DRI PARG.630. ...Svl.xi?v 5 PAR7.29..MINTRK+DR]V PARG.29. PAR9.33. PARS,33. . MAXTRK+DR]V MINSEC+DRIV MAXSEC+DRIVES.O PARS,0,.MINCYL*DRIVE? PAR4.63%0. naxCVLoonxvsr PAR7. ..filntlxoollvs PARG,29..MAXTRK*DRIVE? PAR9.33. MINS cooaxvir PARB,33. MAXSEC+DRIVE?,0 R AAARARARAAAS PRARRR AR 062206 11;? APRPARAAA AR AR AR AR AR 061147 PANARAAANP ARV ARAN 062176 AP A 062170 SEQ 0214 RF_EXER MACRO Vv04.00 I;EKK)" 00 1=JAN-B3 83 12:06:52 12:06:52 PPAGE 66 .SBTTL $EQ 0215 ROUTINE TO SIZE MEMORY :;".'."'.'..'"'.'".".."".'...'..."..."'..'.Q"..Q....... s*CALL: ; JSR PC.SSI1ZE i RE TURN $SI1ZE: Mov MOV :? -(SP) MOV e "?” MOV RT] 6 0 & %%éo 5 2 ggo ‘“ g 06237 0623764 062400 402 062412 062416 062422 062426 0 gz 10146 13746 01 114 749 1 012737 00000 013746 010600 000006 0127 13746 11 000004 888"‘ 057;1 775 162701 01 012637 012637 012637 012637 010137 015601 012600 000207 000000 000002 000006 00000¢ 000116 000114 062434 MOV MOV 116 126 012737 82”392 000004 012701 ozSooo 05711 ~ 0 O00O0DOO0O0O 1 16 010046 R 04 08 OCO00~- FFIFIIILI s*SLSTAD WILL CONTAIN THE LAST AVAILABLE MEMORY LOCATION MOV MOV ,~($P) arf1e,-(5m) 011’.601 4 30116 SFERAVEC,=(SP) i ON THE ::2:3 :? ON T STACK gl:ft ;:SAVE MEMORY t!-m VECTOR PS & PC ::1GNORE PARITY ERRORS WMILE SIZING ;:SAVE PRESENT ERROR VECTOR PS § PC MOV SPERRVEC+2,=(SP) SP,RO ::SAVE THE STACK POINTER vv MOV PUSH OLD PSW AND PC ON STACK ('?‘ SP)+, APERRVEC+2 " " THE PSW IN SPERRVE(C+2 SPERRVEC ::sst FORi f?zgour #20000,R1 $:FIRST ADDRESS BR SUB MOV 18 '8"‘ RO, SP $:TRY ANOTHER :;DROP BACK SRESTORE THE STACK MOV MOV MOV (SP)+,@#ERRVEC (SP)+.a#116 (SP)+.am 14 :;RESTORE MEMORY ERROR VECTOR ;iSET '"?aip"m PS TO THE msc(a! PS is: 28: 157 187 MOV MOV MOV MOV RTS $LSTAD: .WORD (R1) (R1)+ ;;t;s THIS ADDRESS :STEP TO NEXT ADDRESS (SP)+,QPERRVEC+2" : ;RESTORE ERROR VECTOR R1,8LSTAD (SP)+,R1 (SPY+.RO PC O ::LAST ADDRESS ::RESTORE R $:RESTORE RO ::CONTAINS THE LAST ADDRESS CZRJOAD RPO7 PERF EXER MACRO BUSADR = GET BUS ADDRESS SND VECioN R T, PAGEit & 67 SEQ 02¢ 1=JAN=83 12:06:52 .SBTTL § BUSADR = GET BUS MSS AND VECTOR ADDRESS ms 3 T D1 s 012 go 04401 9 06247 10‘48 0624 g 01104 062476 104401 1%: 1272 062576 012780 0625 ono/.g 526 104401 005737 001334 537 062614 43 06 ssg 44 06255 45 062556 oaggga 1341 000760 28: 49 06 srg 81 021 21 062574 000297 54 062605 122 50 062572 sf 062576 120 MOV (RO) ,~($P) 3s: TS TS e n m RPCS1 ADDRESS .t m"‘5 ov ASC 1 TEXT us( 1 PlaNTER |mo smt THE NEW ADDRESS SERROR E VECTOR ADZRESS ms n RHXX/RPO7 VECTOR ADDRESS ON THME STACK -u 'E ,BLNKS2 :E iy umxs (SP)+,R1 ASCH m 12 ‘BR y YES 2% SERROR EXIT *READ NTRY ADDRESS JSR RS, CK.NUM MOV MOV #SRPADR,RO #RPADR, R1 :FIRST ADDRESS OF NEW PARAME TERS SFIRST mntss OF WHERE TO PUT THEM MOV (RO) :VECTOR ADDRESS BR (RO)+, (R1)+ . (R1)+ RTS PC .ASCIZ @RPVEC=a :WAS (*C) TYPED? SENTER AND STORE NEW ADDRESS :BUS ADDRESS SRETURN e S S B e Bt REQUEST FLAG f su counok C FLAG MRPVE C 103 MRPCS1: .ASCIZ @RPCS1:=3 MRPVEC: nn CFLAG MOV 126 s-c c MO ST BNE 056 150 ,BLNKS2 #SRPVEC,RO TYPE MOV 012021 122 (RO) ,=(5P) MOV TYPOC TYPE ROLIN 49 062560 012700 no1g 5 012701 #SRPADR RO MRP(S1 1% ~ 48 062564 sc:kr :35" (SP)+,R1 ST FLAG JSR RS, CK.NUM R B8R 1274 :.g 062544 41 06254 MOV TYPE TYPE 062605 056530 éFL TYPOC 056530 06 g ‘8:‘0 9 06 1064401 40 06 s:.g 104411 (LR MOV 306 382 "1’“‘} 83 504 803??7 001334 i} 06251 537 062614 fstt dnis 516 000756 S 062520 3 R e 460 49‘ 001 L ?m PR PR GRS SR R A PP sg 7 1 i J § 0624 133 T X X 106622 1 ‘§1 X 15 06244 wur mn TTY REQUESTED? X J PC,BUSADR 3 Iaw BUSADR: TST szcm X : ‘1|1 115 82 :2§ %?n; 001332 X T X X L L X X 10 :(N.L: X nott THIS ROUTINE umovs RO-R PR L K ? S r m "y u REQU] 8 I m am 4(%: 5%: LEVEN ac.-;sr) :2:5; ai :SAVE R& (R1)+ R Ecl?‘tuan$=$ '3&2$so lvt$ "ERMINATOR DETECTED JYES Exii SSMALLER THAN ASCII=0 SLARGER guau A;(llor ? SYES saaoa Exl LEFT SSHIFT g s ONE R SOCTAL #177770.R4 R&,R2 R3 SCHOP OFF MWIGMER BITS SAPPEND ING CURRENT DIGIT TO NUMBER SDECREMENT |vt§ COUNT 5 gs :ERROR IF CARRY 81T SET SBRANCH, IF LAST BYTE :LOOPING BACK (R1)+,Ré4 ;CHECK TERMINATOR (RE)+ :ADJUST FOR NORMAL RE TURN (SP)+,Ré& (SP)+.R3 (gp)o.nz -} U 'E Y Y DIGIT % 5$ ai 4 R2, (RO) T Y Y g SERROR EXIT :FINAL VALUE= 0 SYES,THEN NOT REPLACE THE ORIGINAL VALUE *REPLACE THE ORIGINAL VALUE TRESTORE R4 Y < SBRANCH, IF Y S RG, 87 llelts IN THE NUMBER Y RG,8°0 :?Al ocs( YN N 33 R T ’ ‘R : T T R2,=(SP) T ai.-tsv) YYCSYCYSCOCTCCTYSCYTYT"CO°UTMY OCCTOTOUTYT O :NORMAL EXIT T ;ERROR EXI 2 OF ASCIZ STRING CHANGED N 3s: : ‘RS N OOPDODPE®PO mm o 2%: SADR,R1 RS, CK.NUM N VIO =N WVINON = — OO SEQ 017 . :RESTORE ag *RESTORE R SEXIT 0 ;ALLOCATE 200 OCTAL LOCATIONS FOR PATCHING 258. ;:ONE SECTOR OF WORDS R — gS5Er=s1?§‘§§ii;1?¥fiia~ b - CYLNDR: ENDPGM=, Py 282888 NOININOWNO =N =N ~N NN S NO (= l=l=] °°§~d°°2 oS 2od g 177770 064330 TRRRRR B SO rvOS RS o SRERUPCECPESS sfl;'(“ 3o 2303323 o o bdw8?:§;~°-fluflb EAVEN-NA 000067 N N N nNO 1%: PATCH: g & N N NN~ N =Y CK.NUM: N N s oo N~ 8 O — e 00 NON WSS AN = O O 00 e e e e O W8S WM e :8—‘-‘-“ = O 0 00 mm 0 W O CALL: 79 063324 80 P P aolt MGSREREY (90T ron weon, commacrens £3 S iy = - ST —— -5 RPO7 PERF EXER MACRO v04.00 1=-JAN-B3 12:06:52 = CHMECK NUMBER (OCTAL) <CRLF>/ S#<(CR > <CRLF> <CRLF>/ type t he performance SUMMARY report/ # is the drive number (0=7 or °'A' for all drives)/ <CRLF>/SW0S e o e o N 0400 0200 0100 0040 0020 0010 0004 N NN <CRLF>/SW0 <CRLF>/SW0 7 <CRLF>/SW0 6 1000 " N PN <CRLF>/SW10 <CRLF>3$UO§ 2000 N 3 % 0000 4000 [elelelelelelelelelele] <CRLF>/SW15= N PN~ <CRLF> <CRLF>/SWITCH REGISTER SETTINGS:/ = (000020) C <CRLF>/SW03= (000010) <CRLF>/ <CRLF>/ <CRLF>/SW02= (000004) <CRLF>/ <CRLF>/ <CRLF>asSW01= <CRLF>/SW00= <CRLF> <CRLF>/NOTE: <CRLF>/ <CRLF>/ <CRLF> ;nhibit error typeout/ / ring tty bell on error/ ghaqgg end of pass to 1/4 of normald inhibit end of pass messages/ display all data compare errors/ don't change parameters (loop on present values)/ A. partial register display it error/ B. no ECC correction results displayed if error/ A. do not check for maximum error count/ . do not drop drive at end of test/ A. display error sector if DCK, DTE or WCF error/ B. display sector if DCK uncorrectable after 28th ret C. if data compare error & SWO7 set, display remainde : A. do not type drive status at program start/ tim specified after report 8. do not type performance C. prompt ‘write anywhere' question during auto test inhibit data compare after read without D(K errora read only mode/ If a DCK error occurs, the program will execute/ a data ¢ ompare on the data in memory, reguardless/ of the s etting in SW01./ <CRLF>/Type control=c <CRLF> 9alt on error/ (*C) to HALT the program/ <CRLF>/To change RHXX adresses, start program at address 204/ MM DD DBDDBD2E2E B — S S <CRLF>/DRIVE PARAMETERS:/ <CRLF>/MAXCYL imax cylinder adrs/ <CRLF>/MINCYL min cylinder adrs/ <CRLF>/MAXTRK max track adrs/ <CRLF>/MINTRK min track adrs/ <CRLF>/MAXSEC tmax sector adrs/ <CRLF>/MINSEC min sector adrs/ <CRLF> <CRLF>/THE FOLLOWING ARE VALID COMMANDS:/ <CRLF>/ W#<(R > assign drive and SEQUENTIAL WRITE data/ <CRLF>/ R#<CR > assign drive and do SEQUENTIAL READ data/ <CRLF>/ T#<(R > assign drive to do {(random or sequential) TEST/ <CRLF>/WTP<CR> assign drive, to do SEQUENTIAL WRITE data and/ <CRLF>/ to do (random or sequential) TEST/ <CRLF>/ D#<(R > DROP a drive from test/ S :E:t::loo YOU WANT IT TYPED (L) ? / L :gEtt;/tnE HELP MESSAGE CAN ONLY BE TYPED ONCE./ [elelelelelelelelele 4 <CRLF> PN - » e 0 & & & e L] HELPTX: wvn wvVuLuLVIunuUInuvInuvumumunmnunmnumoumoom D le e lelelTM alalnlalnlnlealelslnlelalalelalelele e lelels] alalalalalaslalalalalslalslalalalalalalalalelelelele e 0 s 6t e St 5t e B 0t ot G et Bt Dot g G Bt B G Gt Bt Bt § ) et By By G Bt B ) Bt B Bt By Bt G Bt et Bt et B Bt ey Bt B e B Bt e Bt Bt Bt Bt Bt s g Gt ) G Bt Bt St Bt B P Gt B ot G Bt S Gy B e B B G B Bt Bt Bt § ) Bt Bt Bt B Bt G e ) Pt Bt B B e Bt Bt B -~ R T S s wununununnununununonunununnunnununnnununnunnnnnununnnnm LO=O -0 —waaaanNn o ol s — e (D) e NNOSTVINNIN = WSO FMNINDG &» o o a0 OO RO =2 b b b e e e ld e e i NSNS S NSNS NONNININRDNDNONINONNON NNOONOONONONNNNNNNNNNNN OO0 S = OON N WM OOONOOOH S = MONSSNSSNSNSNINNDRDNDNIRONONNNON 3 WWOOWOOWO WO WWWWNWWWWWWWW OO f 124 s e v b acd ald it SSadas = OO BB COO o b i e e e e i O =t O b = OO -t et OO & OO — N Sogoo & 2 g 17 MSHELP: & 110 NNEESEN 8888888838838 on MORLNLNLNLALNINLALNINININININY elelelelelelelelel=] (=1 elelelelelslelelel) WSS S UV S VN = N ST QR R R REEE o 288222 333 2332332223203 I3RS OOO0OOOONNNNNNNNY VWASS SN 8S 8 W = O NOWN SN = OO NNOONON VNS B 5N NN o N W= O 8N SO OWWN N WVININ=WNO =N SNWNWNWES NN NN Oomwbbooslgg gmoow FERNNER —-On WNW—=OWN —=O QO==0O~N NWNO NNV NNO VASS SN NN NINN) = = 'S 124 HELP TEXT MESSAGE @ .SBTTL B 23 =2 S S p— N e N . SEQ 0218 7 ;Ezg EXER MACRO Vv04.00 1=JAN=-B3 12:06:52 PAGE 69 W &~ = OO0 00 N VSN NN WA = O O O YO WV BN (NN = O O 00 N b [a e X IV IV IV AV IV IVIV IV Y ¥ 2 2P o Ll N =DONO NS W= OO VIS W ~ 2 Ve F3 i (ZRJOAD RPO7 PERF EXER MACRO V04.00 1-JAN=B3 12:06:52 PAGE 69-1 HELP TEXT MESSACGE 63 070§Sg 65 07034 g? 07034 69 056 LASCII 105 LASCII LASCII 000 JASCIZ .END 200 <CRLF> . <CRLF>/.END OF HcLP/ <CRLF> <CRLF> SEQ 0219 Qr—-uwv[vV]RCGM.IG'w)ada’L&J&WE—NMT OT2TP=wY-TLra=CKUoMNaITWNNNEOrTO=~ENFTMSVILNGONKN>‘DZOWS‘S4%bIS(?=1Z4[-IGTBWCSdTLCOJIEXAZFTT2MHAVILDLoslAC-T.OAIrA.—>CKA2RLMR-WCWYWDENWMTOWPTCWREWPONWMWTPOAW 000000000F0O0ON0O—0N~I0O0O0OONCONOTOO=0OOOOMF0=VOONNOO0VOON0TOTO0 4DoSO-1V0OCSR—70T&ON-TVNO&7GOeIIC0-Ve&O1ONV0=4=-oWI1~OV4oe3-004N—VYvTLOOt=NX4MIvUWTYOM&oON=IT0VUWI0g&YoOMOTIpUmT(ueN0TpWUSLE0VlYO:MN7oIMOlI]e0NotNNVl7AToII=l0OToNeMoO7lerTL1O0W—UNNMloN0wOM3eIorTlVNOeIgLlONWN0mooILNrlOTTO"[ 7MToOm1oTt-0MWeNoI(IONlNO=D-oltcT=0N0NUol-IaWOAA3-OlI~O1W2a-o0lLM1JA&I2aFOMlT2>oaV0Wl=42NOa<Oe4loLeL0OO4AlNOWe4owtlN—a4SIO0lE4NadZ0lOAOOL4eLlOd4AaL>0—l4NOVJOadOV4laSM4AlILN4aOdF&Il04I-~eMTFlOV4TdaO=NNlAO>e=4LOl>0OxVnMeNT>OlIONuN4>e>~enUOlTNM.>t=aMeN.>1lt=a>PNO 4O1MO5t~2eIb41got>l-MMg14aFN>O-tT402Mlto-a>=04eAMTMt~O4t5HNa0t4u=l.nYNta0-ullOY(Tn0QaMNnY(tAL0=nWeY C0WV3DSJ—)aWxC"TaOADxWaxO1OWEC]tSS>]SI0C<0T"qWC-F&eluTITaSF3eECIgFeIAISTeTUQCTMWROoIAeTTITeCOSDTTORAO—eeFdIDmNT(AeSOOTdTMT"OeIIDaTOTvweMOSOTTnOvDEa(eORUMVO&—> TOeCSNTEOTOMTIDSI"DTVL~OOOUOnTSAOFNNNZT-OIAOMO—OONTNn0roOINPuPLNeDnDSRNrOI<TTDLSNorFSNOSeWT0P7rITRxeTTNONFS(MSOTXIUSIO—RwMSN=ONDR0TISSNMC=DNTMWS0SONIATSO-NSNBO=Xa—D"OONT[MOOFsO3DLMM"OOMO[-ANONI"EODR>oQO~OAueNa—LWOOoY(T—MVoY]_NTONOeON=ETOaOStFeMOsX=NSoOoIOTIRNlN"F<EBT=(,DeNC=">l SYMBOL TABLE CZRJOAO RPO7 PERF EX ER MACRO V04.00 1-JAN-83 12:06:52 PAGE 69-2 { | | i | | | | | eP e e e o P P o e b= b= = b b b b b o e e CWWON QOO DONZVNIVO ZZVICICWO~NMIN v -aEX0—r-2OOy0 2..0BL88n"1o8}uo).-n" EwXMWDQ=OTSWai—vMtYa0w= SEQ 0220 SITOoItTdgTdIST)Gt2)ToLeSTD2SToe)2GIdgLTgedZSIdgTeZSI)SZdgIZ)g2D§ZO2gg2T-)g6DyD0y)gd50d0Xdewd4e0DO WM-—MOOoIwOO>OTM — TflLPflVJLflLXfLlmLmLMHLHIH—IH-LHfCLlOfCllI"-WfNllZs2fl0lsfall.sfllTsfllNfslLfI—l-fIl_f-lIfl-"If.lfLlL"LfLlL"NLLNLLNLLNLLNLWLLHLMLLLHLMI.HLLLL' SoE3FaSEsbasEaaassuansasv aRESERlEEEEHEW A3VCOY0OMY6CVU0MNYWoA=50~NF3M6Y0(MV‘o?U=08M)M0‘=2ON0ONIA0O.M!OWA0)=1o)N3OO)~1FCFA7OOCA03N)OO2IOAMGlOvi07O=AO=OCA0OOL1LOeOA3N0e1OeO2Ne7OOeW5NeNCTAOIeA40)OvVOMA0)rN=‘OPOA~70)O2eOeI5)TIA)T‘LI))OIA~)0eL—6OL‘MO°OMA A6NZA—o<KlI<NXW2=2@.ILN>1olM‘Wr.=Hlw2aoNIROn1PAAN.DqXR.2lw“W!C)MENWSC“cLXAMADD'01l-oMTWoAENXEDl0Ao.MNX0”&’%Dl5AoTMZMNOENloP<AMDGTVO6oST~NT“El5PoNTsLM'Ix3®=TsSRNE—lP®OMFSVNZ43sAAEWl8oTSDN=0JR—IlELlD1SZVMoMrwNII3g+bOwEVT=LlF5-DN¢LIxN.NN3TTMWEulNV0AIWnAZVVEAIlE“NTN5P<ORR‘TVr1WALXTOE=lMNcAOrI5OAU=IlLZ1PNReWAlO=UN.7”ZTNlO0ONqlUcVZ5HS>NWTl1OVN.lZOocIO20EwCNlWXKWOwOgO2PMbOO4NfWW?323wZ.VAooN=SIONaAo7?NIA=o0M==N6?vL2Maf0.loiNeNdt=2)Mo)'M5.=vgO1Bm.Wtt=7g-oglIwD0I.VrmS4-oylOi1”vurSmWiN5rieyIktOrl8gEiM.N]IrS5I5VTXi)erVI>6VT6tAEa«eIBVI3TxV-SIOw“VENTeI1VEMIO‘EvT.O1SVe—21TO[2P CIRJOAD RPO7 PERF EXER MACRO VO04.00 1-JAN=B3 12:06:52 PAGE 69-3 SYMBOL TABLE 1] | | i | | | i I i | D- C SEQ 0221 CZRJOAO_RPO? PERF EXER MACRO V04.00 1=JAN=83 12:06:52 PAGE 694 SYMBOL TABLE NOOP = NOTA NOTPR NOTRP NOTSAF NSA pRave= POPQ& POSER PROCES PRTIN [ Sk 6= OFFDIR= OFFON = OFLIN PRO PR1 ep = = = RESVEC= RETRY REV ONESEC PR& = z ONES oPl OPIER PR = ORDERG. OVRWRT PACK PAR PARENT PARER = 01 aids 1 10 1 03111 012576 Pl S PARTY 001234 PARIS PARIE 001209 061491 PARZ. 061001 doEe s “i% | PAR PAR PAR | = PR 4 01 . OPTBL i REL RELSE = REP PRTBAD = %170 =z PR? RPAS = PSEL = = PURFLG PSW PWRUP PURVEC= QCNT QDRV RHEXT RPBA 00003 § 044 4 §5 = = RPCC. = ::E? : RPCSS = RPDA = RPDB = RPDC RPDS = PERIOD FECH 057711 3460 035510 R i FEcn 035644 8 FECHe FISTN S = 00010( SWl = 00000 Sw1 = ( SW07 = 000200 SU08 = 00040 S = 0( l‘ll SC‘; Sw1 SC1 SC s gE 0 = gs}‘ gggo = 33 $C4 3¢ SC SEARCH= i SEGPAR e, fikc STARTY RANDWC 0015 7 RPOF | = PSN RPSTU& RPST RDCHR = RODAT = ROHD = 10441 00017 H% mWogus "op RD.RP % = 520000 READHD 024 364 016746 RECAL = 000197 000121 RPO RIC = SEEK START SAVER1 SAVEFG SWg = 0000 = 0001 s = ::: e S TABLE 061 = 001 TABLES 06174 TABLED 062006 TABLES O¢ ?;’8' L], f e= 0o TCF 000 4 323¢ TABLES 061 i¢ 000400 THEAD STATPR TPE STNDAT TRAPVE= (000G $T0 RHXX VR =% - 220000 START R S o“o‘c _ SKIER SUPRS R? = g RTURN _ B=% swe sW9 B o RPSTUS 04333 : WS Sw BE.E Pen il RANPAT 02124 OSTART = = 002000 SWis = 100000 : :*:*: Swé = 00002 SECLMT= e 1€ SIZE RPDT SW03 = 00001¢ SSW0S W0& == 000020 00004( SC1 = €10 §C1§o == RPINIT RPLA = OoRY QINPT READIN= 1 (3: z ¢ CMND COPE = 73 343 I READDR ~ = 100000 == 000002 00000 Y RPERT = ODRVE 61 = 000001 Su01 04367 DRV S SAVPOS AVREG= SECOND 035650 GE SEQ 0222 = PATCH PERM 2 SAVERS R RECALO RED . b TRE W0 SWTIM = :g:: TREER 013104 pe! SWREG = 00000 e B TRTVEC= 00001 000014 TRTVEC= TSTANY = 18T 001422 003540 TYPoRY 033730 nmw.uano..."uaup»o.zo'zpon' "sTWm....MMaDO.l..?RssLm‘-dOyExsaGcnEs@zas‘.PefWl-‘aOA<Nd6.<“s%—Jo“lO’.X3—sEWEVSO“—»MT“2Me>O2?W8M"HL-Q8u”nOouZWGmA'hbnWZvWMnEWRoE&N1EHmIfREl'mUl6fm'2“l'4flS'““M“l"““W(H“(T.]("fRllJRf:WRl'HwR 4D2”Of5SlOE3fSlNE2“NS“VSD"O9iTCD%O.%’I-e“0B.Ef8OSlS,E0“OolC"w0ngesO2eN82¥nCaIO2t8iTosE~OHRNaENNBj—uiOas08CV,Ol=unOlA8S<0pbl5oE4gl3eS900yAlkERORlSA.xOfTesRlslEAeREAHoREl3AEuE2Rdu8Ses5TaRA8oA82E3.R8EsBA3AoE2RLyFsSPA —-o—o=oe(>gbOTMeLkNol— -pAC-DS-R‘l> A RA RARA RARA NA UUWUHUUUU&KNWNWHNWHIVHZS 333 ettbtt 2sMENOiOObE OMNOOEMEOEOOLMPtOEOiMNCSN2 T SOPROOOCP ~—YlOea-laeNalaaoYlR3eeslala-l2ealelelOelSealCe.aRlevolOelR=eoNleeolNecleoSleolNeocIleoSleabXlEevecZNle0blOwTeebAa=l=BeAaBlLeX=blelbe—OleEelWBaVlbaElMDbalobMWoUblM—e=b0eClee0WleelWe—eVle~elNneU=l v CIRJOAD RPO7 PERF EXER MACRO V04.00 1=JAN=B3 12:06:52 PAGE 69-5 SYMBOL TABLE 2 SE0 0223 VPRAWD aECE=25Zuw34 ‘ F.5 = T, noav AAz nsgi ga ’gsi“ e CIRJOA.BIC,CZKJOA/ (= CIRJOA.DOC,CZRJOA. MIS,CZRJOA,[20,0)SYSMAC/M OO T N ANANAARANTRAARARRNAMTM ovm rermrceatetetae TTXTITITITITIIOON VIRT N . ABS. SEQ 0224 ey gmw "07 PERF EXER MACRO v04.00 1-JAN-83 12:06:52 PAGE 696 2‘5‘%;{%“ . 'f' (ago&w’t-ms 12:06:52 PAGE $-1 tgflg 15=160 40 oty 1 15-26% 15-308 15-352 46=1e 4f=1e 11277 11=7¢4 11112 112187 11205 7 &2+ 5% 1805 &2+ 42N 62-1 1910 (3-1 30-90 4S5-10 451 (5= £5=1e ; 11=25 “2- ? 11=25 “2- “2-18 17-33. 1.:‘ $COMND f;. 7 ,Z' 070 20-7% 20116 27-95 27-240 27-247 $5-200 1’-;}‘. 1::%6 19-16 19-37 20=114 21=35¢ 2157+ 2163+ 26~30¢ ! =122+ 3#- . 167+ . S . S S 1 26- L 148 1;—}g‘ 30058 “-Sgg $'.¥=° 27-4615 $OBLK SDECVL 47~ 51-1 &7-1 1-1# 7= DEVM v 7= 17=51 8=1¢ 38=1+ 18-13 27=275 34-14 34-35« 55-197 §7-52% 1 1=24 21-26* 21-34+ PR 2997 29-103 29-113 29-119 38-21 38-49# -f‘ =21 3-1 3- 26-15 26=46* 29-129 29-135 -1 -1 1 27-159 34-14 34-123+ 55-203 41-248 S1-1# 44-1 57-532 O T 26-410 e e 18-120¢ 1 26-37 O P 14 18=75+ 451 1 2636+ " - 1 3 36- 1 1- B L2-1» GHERR 1 &5-1 e ——— — — . ‘ ‘ B 6521. 1 Socds - B $C - B 7 ? 11=2§ 2= &2-10 ? 1 - B cn M MTAG CNTLC CNTLG CNTLY 5¢-1 42«1 S -1 38-1 . B K 381 . HARC 34=78 S $COV D2 2831 — — — — - 1387 . B ‘O(Lt' $8UF 12416 B $BDADR 11-283 e G =310 1 0;2 e $AUTOB $BASE 0 “B-1# 4“B-1» e 1" SATYS SATYC DEV( 15-379 B B Hh b He M BT ORI BIE EN B g R 10 U $EQ 0229 0 3 15-212 il - 1» 43-1e (310 uf 431 1 441 4= ~ ok ok o o - & L af o &35-1 ” 45-1 1 2Bl 1- :i:l — ;2. 7 1= ok o 58-41# af ali 48-1¢ 3 ¢ 1 11-98¢ SFN 49-1 49-14 6§-1 (3= 62-1 42+ Pfllfiflfl-.gr‘nxa—— nzigi 2go XS 20-75% 21=51» 58-42# g &3-1 b6-1 Lot et ad 58-37# 554 30=17« ol ol ol ol o P 58-9 ot 11 ~ * et at ot ok Y SrerssstmssessestroTies CRAREEA EEE L BL SEQ 0226 ST s CROSS RETERENCE TABLE (CAESOVB0o00 ) |~\N-83 12:06:52 PAGE $-2 EE’ gg:to :gflVSC 1-104 58-720 25+ 58-76 "2 peorn s 47 49-1 «9-1s £9=1+ 11-19 11-25 1= 43-1 7-00 451 Lot el kol ol kol 49-1 ol ok ol oo =49 PP P 30-19+ 58-47 58-48 58-49 i 32-182+ 58-22¢ 26=16* 26=19« 58-52 $8-51» ‘z“ $RPO7 n-i;. 26~39 §7-531¢ 58-23# ‘ q‘z' a123 T o - — ~ © et Nt 19=39¢ 13194 ,} o B ~ — ' ‘ 49-12 ~ ' — B3 = SerE £ 5T feet eu33% ”d 3 WA 335 42-1 o " %~ t S1.=0 S 191 SROPAS msz ~ WV 10 ‘éd lhuniqg 32 ~ =P £ C 1 STOWN VA = AN ;M Lol3 58-48# 19-40e 5-282 45-1 45-1 29-112 58-264 58-106 58-106 58-106 58-106 15-469 15-499 15-516 41-55# 15-327 18-1420 58-%¢ P PP PP P 381 s€o 0227 ot E $-3 PAG 52 06: 12: s m ' , @ m ‘ ? & ' l f m % & m m i J 2 EROS REr ERENCE TABLE (CREF wBl p00, 1-oan-83 12:06:52 PAGE $~¢ . 'm N=led M58 415 6723 s€0 0228 6747 ;g@@@é@@fi@afiu 17-7% 17101 t; it f5- u-sss AT-WT ¢ 18=119¢ 27=25Te 27202« 27-206 34~128¢ $5-201 u-oy 617 IB4e 13300 19eSte 19-52e 19-53e 27-308 29-118 S6-320 17-120 17=140 27-460 29-84 51-14 1-19 N-H 36-17 41-2460 21-18 21-23 21-25¢ 21-28 21-32¢ 143 26-16 26-45¢ 27-169 I I 27-205+ B U aer 2 ?331 $8-7 27-93 204150 2-am se-r7e 61-8 P43 27206 O e i i.' ‘fi' 1§E 1‘8’%l% :ii‘; ZE,J% 21-530 2647+ 26-50% 27-274 34~4)+ 34~4Se 58-20# 5-3100 5-310¢ 531084 5-3108 S5-310¢ Z-3108 5-310# o S5-3108 S5-310# 3 A A come F A7 F &F A Or 3r O & 2 & o $E€Q 0229 {mw"i%&il(&'n&w’lu&” 12:06:52 PAGE $-5 i“i.i*i-:‘”a Wl ut e WP BR ‘ X BB KR NN SIS NN e e e aaow - B & b b e © - 42e1v &2elv -1 - -1 -1 -1 [ J - 1 -1 -18 -1 -1 -12 -;0 -;: -1 19 -18 - &6;: S~ 4 45~ &5-1» L &2+1e &2e1e 45=) 63-1 6;:1 S6-1 £5-1 -1 -1 &2-1 12¢ -1 - 1 1 -1 -1 4= -1 -1 -1 1 -1 1 -1 1 12 -1 -1 -1 1 -1 1 -1 \[J &2-1# S6-1 L5-1» = g @ 3 b kB - 42<1e s-foz 1n-Nn 55 ZREUS © 7 vy Po®me g B = NN =N R L WO - 58-35¢ 4 » 57-43 G2+1e .‘2 it 2> -.-?;N b > wP g53 .f?' L 127 it PR v S4- 11-1%¢ 4241 I - 45~ (5~ g‘- 11-19 L U - 61-119 w o< e D W »eSn — £232555383 s; 1 £5-1 S4- B % -t ) = ) —y g << 4 g &7-1 Ea:@{{“ 11 1 s -1 S;E: ,.“ & gvxu & .?' 62: YPBN -~ ~ - cRRRnnen -10 =33 - ‘t 1 ®R 6241 =3 -0 e o~ " - 1 1 TRP g = ) N 1 AR . RAP2 L £5-1 -1 ' . PS ?dflflflfldflflg? - u"éé*" “ '* e| ? e c = o £ 23% orz L St~ . CRRRRRRRnn e gosTzEs Az ol BB B B R ow oW B 1929« 19-30¢ 19-31¢ 19-32¢ 27-381 29-102 58-30# CROIS ReTERENCE TABLE (CREF vBL<0g s '~/A-83 12:06:52 PAGE 5-8 acrsth ~ : W — ) —a b 4 < s TMm b = 6 Nflflflflfl?flflflflflflflfl N~ : E Y O WV W SN NI A NI NI NI NI NI N NN Y N NI N NI NN NN (] & B 233253 F3%53 i $Emafte Brigdle BPoiggn STeeser Sedete s7ees 62-10 45-1 “8-1» 48-1 48-1 4«8-1# 4«8-1» L 2 st 0230 oe~§SJL33v015le§%‘03eoo[)7EYa[l"“o0a3l29DL053m”.I0l3G§ezso08GOB—oML73'w8fYlM'c7T*®VN!‘UOLV='Ra3lOOYSN8TTLLM“Y5IWL4M'TNa7l-!NEOL'E1B0”~3NYo1I-y-~Lo—al5"l—mal8NJaFnO8=NR2IyM5NI5NO5eS—Ne“'nC5xN%NI”WEa2OV]5<TLM~~eM0=5alys2LPNal5n.f1Sav5in‘2510‘m531353*“5325 -— — - & 3 - ks ; ~ - P— U"HL & o b LU i "\ L LU P0 4 oUL W ¢)« e —- 2 - O* »xe—- g CowweI~o&2-NOOTBJA)E~SLNITweONnI&Jt<OVT(iNORgJU0CSIVNEOLl~O-a<NYMS10SV.MNwKNMe-NNMGOo8["ONTmAI0OCNSMMoNNUMSUTDulAOVL\a~~MNNOw0BNGIVnOOoDDA—e0NReTONWtTgN—SD0ReORI~sWv~oe<MLDSTU3N~tTWOVLNeANtD=OoVa~~OWMwLOT<]LMDe10))[l+TAeLOPL05AOLl€eLDNe-A—O(o~aLo[ooo-eYN—N-))l=GbP8 Y"4 LaN~.]elL0]Oo0anoNMD—=-5e@a0]ldlOASINDV-0oa.oLOaMNM~M—TeOU-ao23lolLL-=mL®Oa)——*y&—w"A)ITTRR<TI-<eAP]—aL~M~MowoML0M-TT N-NO-NU"U a[U )U 0alNmg—lwLL.3o"V—Sd~eNaOlNaAM5lyleCeeAdeCeCoRebCDSU03aNgiMO0OTMM<lLeLl.aMoaa~Oo=O5OWNeIl}liOl—P0])N[mo~aoOL3GMlllO&CN0nAU!NoraNV~MNMlLNo~aLN)MvNoalN0a0eOaTllOwMOln¥%M~N)y—oa8NAL¥dIXV,”-§gTlaTI0IC0aLd0LtowL TML0e~d~gD0d [QO-—(NVU0a_l0~Lw5o~V—0aN) L~~LM-MoN-aoU"alNNlS~n’L\oOOaO5ayl NNNMMNeo)-&@bB)mm~N°NN-L--~-~oa4oNl E n:ga&mz&n;&gu(ago&wo)wwu 12:06:52 PAGE S$-7 S€Q 025 Lal"al 3334 ”-—bolnN~oNoVo3Na~0 4~£~””“.“G92NNAMN-~O—IANWONNa~0eNo["©aOl—-NOooe0—esOOOY—o~~OONNMONWWNNAOle—VolONWOV—=ONMMONOTONOIIOMw-Y0WN—~~AW=No=QO o~~*L-~BSJ&AoNl—lE”la6E3lo~LbeA2Nld“0'WM~[Yfo-~¥0k§Na)—)‘-"00-30.—(0”“WDNN*mteTOo~~K91L-M)lsln0ds[a4Nw[Oa3GWMMNNVAL“Nl¥"4LlOl0aaBNllQ~o"~alwg~o"”0L"3~GAWlMs)2AaOaD)1OlLUNNo1"MaaVaVuOAMY)lWWr23aO"Nalo0ao6aw~m7LNoNWB¥seN2n’id=M[FX—03WM~--=NT«XMI"N0La-C-oCLMN-N-"aooaaV0M"=llN00nNlYoWoLOWaO<—D-aoBLNylllG-N-W-&""<e~oo—oL-0---]0ooA-]Lo-aih*AyN~————d[[0lPW>SVRMWyvT~O0o-O=UF40RaRnLM~~O0MNo—O~lM)o2"lN\0NNleoOO-0MNk~l)3<MVMEvNgOV(Na—~3-"o—6NElola—5e=dtrANMw~MoOv-=6elUAte0AL\O=7eNRlr8eOt=9MetNAeOWVKe—Rot0OVNPWuMM0oUoSnlOdO0NWaauLNOOV-N=TN(SelV~no\O—TnoOLNN-IaW4GVN-koMEi~NlTunVVTIO=nO0AR—aVOO0LMtIgNNlENMVNoww---g~e~NN-Mo|i~MNOUOXVnoNOtoOTlWD.lSaVlINw-vo[MNi~N]MWNNL4eO—8"UvB~B[Oaeek0NtVyOOwly==leNEvaX w1| =Ed -ot N~o(2l 2: - 2eMNOs—LI ~Nw-"0 o~wNl o~w-"N~0l ~ M o N N N~ w ~ (CREF v04.00 = *- CROSS REFERENCE TABL E LI £ 0U"L9 IL*L[I E4K" id U8U0ULL )" MU0L0UO08 NUUP "L L~ -9" 1Y 23 TW TW vWTY ¢T%3¥ ys1 T UO0O0O0O ORRRuaaRORiVONVNO—NO&OR~kOOB~ WDwD0ITMIeUN0IaVlI7LOo”kNV’ A-oC0Om¢Er*oM~- ILUWVOLUWUUMWYM=O7“5WM9VU&5o'6OS2OWvrDwOOV—oMiTye®00O0(NWSNN—YOxO=—ATXVCx2TsOeO—M&e.O0NMTNRObORNeTNTbMVNOeTeTV0eTTOVNeTeMVOANTeeOTVTNee(B®TbNON"BVNeBNUA=dObTN0X©M-T0IONoAbT0XWA0NNTN0wOBV0yReoTbNL0—oDTBN 4 eo& l [(ae~NN"U"aLol0"aLl) 0NMMO["NTNMN3CN--O0-—-We""lN0O0=—— MNOOO%NN0nOeU~NO—0Y«ON—~NwO WwO ow-'( )1 =NoTNV000oOlMPPN~—400A00OlFALNMO W—""\eN\= CZRJOAO RPO7 PERF EXER MACRO VO0& 80 1=JAN=83 12:06:52 PAGE $-8 ) SEQ 0232 10“30',,,',""VOWNe—NOVB|O=e=OITWO OOOD0ODO0O0OO0OCOO0OITM=MOWNOyMoeO)V]O~-N[O~OSNTMOoNNINOeO—N0O=ONoFTOTNMOOOTWVO==O3MNeMEMTNENe—e=—Mreo~n-rN~eerE=N OM0O0M00N00ON0MNNMCo-O—OPNMINOOVWvMOWeMON-MNOI—M~—OTO=MNnOeMM~—ANOMNOUOAINMNFDIO=MMN—NO@IMIOOOCY=~—V MF=ONMNTM=VMevOOO—OVVMT=Ne0MoOO0~NV0OM—00~OOW UONL~w0obNUO)a4l2'O7aM)V00R*LOMTooOOkdaO0“VUaDlaALlFO0~LL—oH a~M<o —I0N3 - L vwoooooaooooOoUMLoNOoAoTVNNoO~oDOOVOIOTORWONVOeSW =WeWrOBLMWeONNWJOLI|u0WNnNRTneSOePeW0sMO0OTSF—[STeTe L3RNO"W'wO-0=Iwk N-MU""U"n—wLLONMN3~nnNM—=M0NNE000OTOOOWEONEONM0V0O—EVWE0nNOWVION]N0NO8To0~DNOOOM\=OTNB8W00VMM0VYIoNRI=NNO0WOOe~¥F-F N=«*o5I 3Y)«WOW&O"NNoo]] ==BLNN=~aePP—e-S4——~)B"00eb00rM\kN—0r=—v— GwVO«oe OO NOOoOOMNM=IOONYOOOONOOMO r <-3 oO—~~ aawLi!lvo NUOT00MOCW0N0ON—Oo0O0MVFO0O— ([Mo2)i«t CMDAT CMHED CMPAR rs35IOT+.S€=03354353=5 TARPLI VOMNDVMON=IVOCON=IOT0PO8 ko“=2' - N —ONM O NONO M O~ b ¥=MO-VOmVONVOO E*3® I~—MONOOD ~NOMIOOO NTwVN—OnVwOVnOO 0 NOOOOOOO0EOE0VNO)0O B0VTO O1 * [Ya) 16-108 — T - e—————v Tyr - —o- 16=103+ ew elN = PRLalalMsRUSalat 16=100 a o 3 YT—ONNOVO 16-30 16-12 2] [ OO oMoo ~ 28-44 L")L 28=21+ oy CZRJOAQ RPO7 PERF EXER MACRO 826680)1-JAN-83 12:06:52 PAGE $-9 CROSS REFERENCE TABLE (CREF Vv SEQ 0233 31-4 16-136+ o < O—3NGVNNON b e WAi — &&oOoGeGoeoeoooa5800— eXOWITEITITITLEO C ~o0oo[—~*"1al NNN}OAIV0OIVeT0OVeOIRVe0BVeOVe0TVT0O«ITRVNNFNo'*B¥YBN0ONAiVL NUO.gO)(BNAUMAIMOBSNABVe=oN==OMoOI=E~2IoDoI==oFv<eT—MUOMNUEFCUOLF-—M RKywww(owM~~~4~~—~-KB]+3=F—]ANMNOONoOOR00NODBOIB00EAWVNO0ERIWNAWVO0EEI0eWO0NEN0WINOOVNE0OI0RWWOI0N0OWVOBORWVAG0AWwWOBNwNTWOTo0~A-NI1&&BkMs]NM)mRNvWOaVWwL"-NI«4UTU3imWMWKRS~aOTWOOOO-NW23lNRaVoBINNeO——Ale}lOUUW0=FNIMOOa-1NNMOAelT0a1NVIL3"OWOYR3]eoOANNM-0¥NALNVbo=—N—e=oEMtoOTGOolOA0=AMEVal=AN=N—NNRN"—N—LFM—==MBaUERoTNNATnVMOo—OoEWOWNOoN=OoL-lNVoAEO=BLaLNVT~NNWFl-TBIL0.MoIWTLRTVNo—=—TAlOIV=[IA=«AVLA0SAANmNq——~-—o- =M =7 iy—a—'———@Tg )L~oUalLNN=OO0MO0O0O=0OEMONM-E*e3UO—NM—QO~=N=ONMNeE—NO=mENNR.~....Ni)e—L)i —oOxnVOVNW>wNO2>ORM§eW—sV0MsVStD0=V0¢t0=StV0=St500W0"=W«JQLOY=¢oWNwO-NeIOTNOITONMe=0n1.5'“a.,l%.lS.!Ocl..lS.I)“O“ss'SV~DFWXawM000~]<= eooocoococobocboocococococaoncaoacnon vFTW@oNAV=—aW~OaOAEa"BEN1R3REMe[O5a<CWU—0l0)=’00aN) N[FWOw=—oVOOaOMOA2~NlO[-N~IL]ERVEN4I-9)ENER]E.) O2NOWw-0—O0]VAMNW[ON~NLNNANN OAaNO[YUlV~NNRVAByNE5|NB)REREE NwO-NNCY vG—O]INR - - ® C e - v -— NMOM WO LE (CREF v8£ 06 580)1-JA~°03 12:06:52 PAGE $-10 v @= 0 > M =N TN F - 1 YER MACRO o® thoSS REFERENC RF wh O VOO0OOO0 N W NN— - CIRJOAD RPO7 SEQ 0234 16 27-80 57-76 " o33 ol 1€ TEER Sy T VA ve CBADO CBAD1 (BIT €C 1 CC2 CCX CGD CGD1 cH cl CMSKO MK CSEC CURD CWRD1 " Mo M1 10-37 12 61-10 61-7# 61-8# 61-98 101 4120 &1-4- 10-41 61-5# 32-10 S58-145# 56-24 §7=193 57=267+ 57=404* 17-91+¢ 17-108¢ 17-620 17-4 17-1140 17-129 17-149 17-63: 17-64 17=65+ 17-85¢ 17-1064 17-150 17-15 17-15 15-8 15-151 17-83¢ 17-84e 17-87+ 17-88 1717-86e 17-9 17=-58+ 17=67+ 17-109 17-60+ 17-68+ 17-94 17-103 17-111 17-78 17-69« 17-7 17-100¢ 17-101 17=105¢+ 17-108 17-110 5-189# 14-201 57-753 1578 2698 B-0F 8-0 §-08 15101 17-1 17-81 17-132 H -183¢ =260 B~ B-OF 17118 B-0° 10-4 lé-80 14-87 57449 o~ ————————— 16 =14 57-107 - e -189 . 15-3850 37-765 17-43¢ 17-64s 17-129 17-9b¢ 9-38 33-5s 39-10# . 1S .29 . 10-6 ° <70 -370 - it 14 1128 e - S1iw 5158 3160 5178 <5180 5190 2 5039-7¢ 57=-:33» 57-415 57=435+ 57441 57472+ 57-743 .A S 10 104 105 106 10 108 7-0 : - — . DSUR 21008 rey 25138 B 12=137 11-357 7- 63-8# 17=-9 L S S S S S SN S oRVIYP -1 89-1 §3-61s 7-737 7-3 N DRVSTA 12~ S7=117 41-101 11-329 sr-ile 11-335 i 7 43=1» 2:?71 34-82 SEQ 0235 pa— DRVPRA DRVOUE DRVSN PERF EXER MACRO 826680’1-JAN'03 12:06:52 PAGE S~-11 (CREF v TABL 17-99 17111 17<112¢ amam e CIRJOAD RPO7 CROSS REFERENCE 4LS3«[e043vL7w43S.23«T4+A2)0d4z3S(5-LI—YgASIL4w8sRI1IT3a2ioLyRTdSSRBT2%NRAS%TADIdNABIwLTIL»TwAoCR»w»Rww3»»3wNBSy 0o05~ii o~~=-vi~N . o (~L)@~]N oeI4 —.~i8 §SZO—4-4-z<alX~xV—ELLoAo=lcxEa—EHO=NN0J£OM"a~d0NNLE!oWWNWn£@—- Wew[~~~ gV=eaN)mMEe»3eEw4£HEXEHELnoo HlEWHSTMWLH‘MSERMS‘RMEEMTEMERAEHEoHEERPEy‘EEEeES‘xREE 0~~L-aNN—l a--l——NL ~~ ATURLTUPAFERSS Sea s = - SEQ 0236 — L. a -— o — B -— ] e o~ 11el3e 111700 286 gl‘m SEQ 0237 EROLS R ERENCE TABLE (CREr vi0 00, 1-oAN-83 12:06:52 PAGE $-13 RROR 1 1= 1127 1125 M11tliV!( e Lsgee 1-162 19-59# W L0 WPt Lofl ;“;g: 1910 19<12¢ et :gnu re ig 3 34-6 f FILL 3 “ 1;«14‘ -1 1- ;:;c': 15=429# ;gm FRSTER % -,2' ' GENREG 1 -m g-w -0 o - - £ WNERR L4 f f H 15-5280 i 15=109¢ 1130 -;g- 1- 18-89 15-111 19«18 19=20 19=39 19«4} 34116 34=118 34=119 34=140% 34=147¢ 57-2/0 u-gu 4153 41-57 41-78¢ =112 -119 3.7 23-778 2385 GE TREQ 5-1;0 6-&17 6-494 3-;91 g;:& “'REH ;- GNS -. 1 155 = -}?" GODRIV 13-1 0 GTSWR 11-31 HCE 'WCEER .1820 15~ ueu%x 11-1?& g E:: 2 &2 ['A 1 158 ;oou 13-148 Se=14 15 -1 4=1 - 16=3+ 1 -‘9 -‘ 11-45 4=1 11-56 4=1 18-14 e 4=1 1 e 15~ - 28-19 28370 430 16=177 16=192¢ 16-235 18=127 32-159« S58-110# 7-730 57745 57785 57793 57-:55# 4=1 4=1 4=1 §4=1 1220 - 11-31 gl.-t 4=1 15179 ’ 1“ 3-597 f; 33 3-f ot o ?l-g§‘ 12-90 g}:;S 1-49 ¢ 1391 1=44e R & -1 o4 1 .?10‘ 431 431 43-1 13-123 1;-12' 13-173#» 15-2178 270 - o 29:630 11-6 4=1 gl.-l. 4=1 4= ?z 9-93 4=1 15=444N - NN—- 1 Dok el alv 1V ] DR 0t by =2 =2 2 s E o - ~rm = MERTZ - 14=1 111 HCRCER -1 -19 15-592¢ . SR-68# 13-11 . u-ns- 13-?20- 133?31- 13-122- 13-12: 1“25 15-563 - GE TBUF CETLAT <1700 ” 15- - - o 314 “3-12 - R 1-47 43-1 -] 43-1 -le 43-1 -l 109 4=1 12 4=1 148 52:1 4=2 149 4=1 §4=2 io-m 41 RPO7 FERE PERF &il“flé'n&&’idfifl 12:06:52 PAGE $-14 1 s B:“. 32-169 $=202 15-229 13- 31-38« 31-53 e 122 e 51-55 51-55 3:132" 26=25 26~57# o ) 9 28-2% 31=-31» 1 45-1 : 98¢ 1619« £5-1 16-20+ -55# - 1 - 3 - -4l ;- -s‘ 7-1 7-1%9 7-3%1 741 7-41; 77-2;} So88853 2338 32-11 1 q; e e et alat ettt e e 52-10¢ 77- S5- }bflfi, 7-1 & 7-§8z 1 ~blll =418 27=343 27-358# =176 27-433 62-46# -4 % :fiz i e A g g i,.g- el 7= .1“ 1L 7=2134 i -320 3-? 6-197 $6-150 63-60 SEQ 0238 i -113 1 i3 QR w4 R ) R ot R W 444 53-28 64~4 mfi&ama(&n‘as‘go 1=JAN-83 12:06:52 PAGE $-15 lzzt - e {1 7-207 7=21§ T 7= o TR T 7= oo St Bt BTt 15=128 15-173 15-223 is:i %k}?i i?;;fiz 15-273 15-318 15-362 15-39¢ 1506!3‘”-“. AN TR } - i A 15247 15<272 15317 15361 - }1 :61’ i_g 15432 15-447 i ;'gi$ 1%«& Lg ?33.. & ;% 7-4120 1 OEE R OB ER OB RO Yo o D il s Al il D il L * UL D i 7= 27-1440 D D o D D D Dl Dl i E}‘o 14~ ig' 27-a330 <74 o & ~No ) - ~N~ N = —_~ "N s w "N ~N~ “3 e ~ K e 6 - A = ~~ " — oo o s PP R ~N SRR aane - S —- 30 IEEEREEEREEEREEERERE R RetE ~ > ] § N N~ " =228 SNNNNYNYNYNYNYNYYYY SgALOLYS Fumswey w *~ — o = U R 25355 fziiZ IS5 RERZZZZZ Z2ZZRZZ A e cee -l Y g R R EEE - %fiuflffif‘ fi:‘tfi g:’xg ?fif’ ;z:;;; §t§z ;z:;ax §t§£ ;z:;; ;3:;.:; LINE2 2 SEQ 0239 i ”382 3’332 39:3% 6 mmfi.‘“%&l‘mw,"ml 12:06:52 PAGE $-1 SEQ 0240 ain "= 58-8 15<2%1¢ 15-2800 15-325¢ 63~400 15498+ 15-514e 58-57 58-58 58-59 34-110¢ S58-60# 65-20 65-20 34-101 34104 S58-58# 65-20 65-20 65-20 34-94 34-99« oonng 34=107 oe ¢ 15-468¢ RARAE 25-34 63-38# 15398 (itg oDA o i 882" o} 29122 15-366¢ el olel ok el 15125+ 15-542¢ 18-152 58-61 65-20 65-20 65-20 65-20 65-20 34-116 34=118¢ 54-123 25-17 34=111e 34-128 54=70¢ 54-127 58-59¢ mm.a'gfll‘wV504,00, 1=san-83 12:06:52 PAGE $-17 I3 gRUEess 37 T m OR 'm’ 1%' ‘.l PAR 'PAR1 P”‘i @ it e s i 12:’1 - 8-0 15«60 15-81 18-92 27-344 13-149 13173 ;m R:r' 51=31¢ 51-33e 15-357# -iee g:ufl g:zr 57626 57-676 ‘a;' 13-5 15=111 13-122 ‘ ¢ - | PAR PAR2Y :i . 7TM PARS 633 63-¢8s -1 | PARY 3 Sr-287 PAR PARY PARY 29-132 J - =420 -4 - 3357« 33-62¢ 33-68¢ 33-710 5331 o0 621 mwfiw‘wx 23332 &32 s s s = - T D A A SEQ 0262 R-Q{? “ete : *:;5 : 'OOM! 12:06:52 PAGE $-18 “-mo S7-370 S7-614 28-12 28-2¢4 15-496 18-3¢ 1188+ 32«13« 57-663 S7-:T0 35299« 38-3¢ e T I I - 1 PS sho) PSW -1 PSEL B PROCES farea | 32-13 1 19en - Rt ""‘t'c' 1:?2:' . PWRVE(C ' QCNT ;oocv‘ “'m'g QDR = 7 ; : g‘S: - 4 12-37 e 1 7 ; 7 QDR ' QDRY QINPY wr QSTARY QsST0P QTERP 4 ; 5?7 4 }-x ? : S 41=118+ 53140 53-30 1 $3-1 56 z;::"o - L] 4 7-97 (] 14 ’ 7-974 -2 . 7-97 T=:57e 7-:;‘ T=: T=:76 =141 175 ST7=:76 S57=:78¢ 56-15 $3-1 & S6=160 S6=47¢ S57-99 §7=100¢ S§57<=156 mwfifi. %“&"w 1=An=83 12:06:52 PAGE $-19 R L SEQ 0243 B i & 23-53 $i-ts $7-340 Hh $7-355 $7-480C $7-542 S7-718 57- 767 fi-3s 31480 33 -18 -64 $2-98 67-40 2618 27191 27-479¢ $1=1 521 Skl 56-48 57149 57451 $57-463 57-699 12-166' 15=543¢ 1:-1070 18=146 r=h 37-3%% 15=252¢ 57-303 57-458 57650+ 57-758 -l 13338 3 $7-8120 57-891 18-85 38-59 “36e 11=149» ;:521' 38-99 15-367s 1359, 15-79 13-487¢ 13-497¢ 13-31%s ' - 11-15!0 11-159 3 -138 "5 . 2 -669' 9-;?:0 §7-56 78330 Hf 7-8% §7-83 =249 RPEC2 S=192# 57-895 57-293 §5-1654 57-905 ;7-1 3R 7-387¢ gr—c’o§7-174s $7-175 57265 57-298 57-356 7-25_ S7-116+ 5717 11 7=279+ 7817 57-310 §7-719 3r-ass 37-ssoe 7-920+ 57~ 7é 57-813 57-816 57-820 57-845 57~ 368 57-385 57-396 57-481 57-543 57-420 §S7=44br 57479+ 57-598+ 7= gggo 7~ MACRO ° 1=JAN-83 12:06:52 PAGE $-20 S‘Oggigt'tlil( ((lif fg, i‘sgig 55-1794 57-69 57-632 57-8%9 R A . Z'-fi’ RFMRI -1 KPLN RPST RPSTU RPSTU RPSTU RPSTUL RPSTUS RPST RPSTU RPTMR RPVEC -1 =164 -16# =164 -16# =164 -16# =164 -1 1-§ 1-81+ RPOF - RPW(C IRTC -1 §5S5=174» S-¥920 RTURN - ' RWU1 RWU ' RWU 'S ' SAVEFG | SAVER1 -255# =257# 27=195 11=317+ g-OO 'SC 'SC11 .SC1§ 57599 57=-573 | SC2 !SC§0 'SC S-Zgl’ S-g 1 S7=557# 'S8 37-386 Finl e |sc1oo | SC1 3d0 |i SCS SC6 I SCMND | SCOPE z7oi7£ 57-330 57-341 57-345 57-631¢ 57-632¢ 57-633+ 57-634e 56-33 56-35 57-100 §2302 16-89+ 57-485 57-616 16=166 16=172+ 16=171+ 38-49 38-88 51-1 52-1 54=1# 57-625 57-677 34-89 31-35 34-90 31-37+ 38-3# 16-90+ 16-168 16-160 16-167 56-14 57-102 57-166 34=150+ 58-66#4 = S-g 3 57=-567 42308 5?-;5‘ §7-578 32-59 57-627# 57-608 57-642 =104# =2948 | SEARCH A 27-492 1393 57-195 SEOPAR SEQ 0244 -256# -0 8-0# 20-11; 7=-99 7=-462 SAVERS | SAVPOS - SAVREG 7-6840 5=164# V82‘68 1 21=14# 34-63 31-34+ 57-407 57-457 57-687 57-876 CZRJOAQ RPO7 PERF EXER MACRO 80 1=JAN=-83 12:06:52 PAGE S-21 SEQ 0245 CROSS REFERENCE TABLE (CREF v 4 .0 SET.IE SETFMT SETVEC SIZE70 SIZMEM SK1 SKIER 57-27 5-297# 11-199 11-140#4 11-174# 5=273# 14-21 57-134 57-213 57-450 57-550 57-673 11-284 11-292 11-298 11-306 11=312# 57=168+ 57-30C+* 57-611 57-620+ 28-35 11-18# 13=221+ 31-57+ 57-918# 53-35 15=479# SLASH g?guflt g‘- L 15-320 START START1 START2 STATIN STATIS STATPR STRLMT STNDAT ST0 SUPR1 6-3 6-1 11-16 -0% 13-180 13-225 5-104» 9-0# 7-694 9-15 11-15# A1-11 11=21# 11-82* 19-7# 29-7# SUPRS | SUPRSL | SVRHXX SW0 Sw00 98 18 36° =1047 -10¢ 9106 9-150 5=1 11-106 -104# 29-114 29-120 29-130 29-136 39-17# 57-374 22-12 57-487 32-67 57-507 32-81 57-572 S7-618 =104 =104 =104 -}82 =104 =104# -1044 -}8:: 11-210 11-322 13-213 21-39 z-7g 37-41 27=144 38-1 STACK . SUPR2 SwWO1 ‘SUO; Sw0 - SW04 Sw0S ‘5003 %-1040 11-25 9=14* =104 =104 17-;9 7=7140 9-20# 9=19+ -104# 11-87 13-219 17-35 39-29 14-50 =104# 16-%01 =108 <. =1048 =108 27-6 27-9 431 Sw1s 1048 14-93 27-395 =1)48 20-119 39-31+ 39-334 38- 27-425 EzEt ¢egesepes SWwie =104# =104# 53=15 33-42 Sw08 ' SW09 sl Sw Sw1 Sw! sw1 =104 8-4 2-36 2% 1"M=-5N 2= 62.! S57-662 57-732 S57-798 57-876#4 Oeb Sy0SyPS0ySlYlgSySySyoyStelol eBeeeeleeeeeeeee[ EL=ENL3NT,NOONTNTIMSNOIMNNINMTNSNT=OM=3SVNueiwN.~siTMEN*msoNCwSE0Hwo~~ 3-— f=1208383880, sw2 OOTw~sMOOV3TTT3Ov ~—SSeOONN—OOONMAONNWNOIWnUMSMOITMMNNON==NOND=—— wNNn~~m~MN@5 woo wM o~~5 N T3—ONoNOWRBN=INOE33oNe=OVToSS=IENO=OoO¢=NOMUIMEy\NOe(O=NoINU=OoNM=TMVnONvOa0MOIBO=NMo=NM=N=ONOOMON5—IM o~O 4N~= ]0n~ WL0o ooB w~o~~@ ~[1il GOeW8TOWN—]UeMON—=WM=0NNTvIoN-O=T~vGOENGvETON(NENNoVIVEE=NOMORo=D=EMNov=eEN—OBNM==NIOTeNBIN=MTMNM=—.o=N=>oe=Ne—>==0MNNN—oilem—N-5r540lnNw-Vo(w~-iH)eNWOMOrONVMOVIONOVtNO>O-0 VORoVOiCN3IEVON—aw—~D-9U]LCOWXMN~NMIOoT\ND=NTOD3RNE©O—oGI=eMOEvMVNM0(ITOORNEoVTODNWQ=OOVOBDUNV](oOOMN-.~=MNONR—ILvNOM=ONFMSCNEVNovP=OONI=OO(WNN~~NS=BOeNuVME—-O©ZVRE>NOa—ZwN4EevXXTOZRE0EhNN==9"INid~N®WMMVO3NNMw5@~~[iPImI}>NWOT>OV-«USONV>OORNvRNa[aow~~“Yo44eUo0a~~N)xMNMo~NMIe“>O—M—MMA3VMWA3MD“W3“WAB3WDBWC.WO¢WJNV=IXIX(MNo=3o[L ol o ~ e EIWAORGSNOIS B0¥i8PR6U9N0Ly0ONv@~VYaW+-NLWN2O»I®)NIO]MNOMN o—=N-~wO—N3MNY~aN3—M@OeoINr~M[NOWwMN3TL"V¥mAa) & £ * a W« LORNoOMwV~N4UMNoe~aONl EN[Bi¢]EERNEE RENB.€[t]EERONE~v=VOIeMTN—VWN NIMN5eL~—ONIN ~oNv~O ON©Y<MIo~—INMI— eOYr0=oWN—OlM~N £Eld S2:06:52 PAGE PAGE §-22 - - Ed &Ed & ONMON o= 00 v o= e= 00 = o= &= o= FOIVNONOMN V04,00 1-JAN-83 12:06:52 60 ) <3NNVCE8N3TO$IEOUFOUE—MOVNIWMN==OBB-— w v5 CZRJOAD RPO7 PERF EXER MACRO -= & CROSS REFERENCE TABLE (CREF VD4 SEQ 0246 §7=784+ o)Lala] CZIRJOAD RPO7 ] $ 540, SEQ 0247 63-9# 13-99 $72490" 12-1210 26-28 13-115 26-57 13-158 57-535 w® - fiiz;tnn<>-k§u1z.. == ¥ IV NSRINO N oS ' ZEROS ;IROIND 6- 1 oo k= (¥ [« R} ' WRYUNS | XXDP “c z v,] et —_ - P = oogg. V=t WY =N v eL - D COOOW S5 NN S NN SNNNV GO b s NN [ UL L 000 LU N on s a e ) D e d R RWNO cooo &~ NN SN 5~ UNSAF UNTASN RF EXER MACRO 826680)1-JAN-I3 12:06:52 PAGE $-23 TABL (CREF Vv Ee::e'~ ey CROSS REFERENC 21-44 23-45 1664+ 64-3 16-91 16=129+ 16=133¢ 16-165 16-168¢ 16=173¢ 57=264 57-273 57-281 57=292 57-297 57-309 57=-317 57-329 57-344 11=47 11-58 11-348 11-350 12-24 1226 32-127 32-129 32-141 11=307+ 16=44 17-138 16=-56+ c JOAO RPO? ar EXER MACRO V04,00 1=JAN=B3 12:06:52 PAGE M=1 S mm TABLE (CREF v&.bgoa SCMRE SCMTH tsesca sngul $SSET 7-0 11-19 S4=1 $$SETM fa‘B 11-25# $$SK1P SACTY ga 9- "SAPTB 8.7 "SAPTY ‘SCATC 5-798 §-77# 4B8-1 2-1 5-77# 43-1 -7 &2-1 "SAPTH 5-798 SCMTA ) go .$DB20 -$EOP 778 -7 §-7 -798 "SERRT - 5-778 -798 "SERROD +SREAD - 3-11 50=1 26-1 STYPD 778 &7-1 "STYPE STYPO JEQUAT JMEADE JSETUP JSWRHI CSWRLO CKCHR (KDIG KNUM OMMEN NDCOM RENTR RROR SCAPE GETPRI GETSWR MORETA MUL T NEWTST POP PUSH REPORT SETPRI §e7 778 5-76# 5-76# S5-76# 5-76# S-76# 30-2¢ 178 278 -408 5-104# §-104# 42-1 54=1 S4=1 54=1 54=1 54=1 54=1 5-89 30-18 5-90 30-19 5-92 30-20 5=9¢4 5=99 5=101 5=102 16-173 9-1 g =102 3-1 3347 34-46 34-129 28-6 29-36 3.1 29-7 33-28 34-9 54 54=1 54-1 54-1 54=1 S4=12 54=2 36-151 35-29 61-34 41-76 &7-1 34-138 35-10 47-1 48-1 48-1 48-1 54-1 54-1 54-1 S54=1# 54=2 7-08 -1 451 461 -104 -85 -310 -87 -878 30-16 61-299 36-2 5-88 30-17 1-217 43-1 ~1040 57-549 5-104# 5-104# 5-104# 66-1 11-31 11-31# -104# §-104# -104# 48-1 11-19 15-305 ‘2" 15-342 49-1 49-1 50~-1 §3-1 6-14# S=104# 5=104# 7=0 15-300 5-1048 42-1 1068 -104# -104# 11-25 SETTRA S&=1 SETUP SKIP SLASH S4=1 4i=1 531 5.7 5-78# -7 541 -599 1-1 -1 -1 JSSAVE $SI2E STRAP SEQ 0248 S54=1 16-165 g <28 54=1 §54=1 -1 CIRJOAD RPO7 CROSS REFERENC STARS PER Eiov826680)1°Jl-03 12:06:52 PAGE M=2 TABLE (CR f -104# gi? $535-1 WRSU =104# =3 RMTRP S54-1# 34-8 lvPlgl -1 &2-1 30 TYPDEC TYPr TYPL =104# =104# =104# TYPOC TYPIXT «1040 =-104# i -658 381 o UPCODE XXEP 29=161 2-2# 1 &2+ 15 1= R n =R n 29-153 29-156 29-159 12-6‘ 14-9 pm 11=45 11-56 SEQ 0249 7 o S 14 = [4 7= 22:? 9 32-175 37-10 7-1 37-35 11-62 29-82 29-93 29-109 3o-1 §91 $8) i 29=149 29-152 29-155 29-158 -25# 42-1 29-125 29-148
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies