/VEP210 FLOPPY DISK EXORCISER 2-AUG-79 *17 1014 / MULTIPLE SYSTEM + CHECK, INITLP / GENERALIZED STATUS ACCUMULATION, HANDLER SPEEDUP. / START ADDRESS IS 0200 / TYPES ID, ASKS "DRIVE #'S" / OPERATOR SHOULD RESPOND WITH DESIRED DRIVE #'S "012" /RESTART ADDRESS IS 0201 / TYPES LIST OF OPTIONS : "A, B, D, F, S, R OR V" / OPERATOR TYPES KEY LETTER TO SELECT DESIRED OPTION / (A) ACCEPTANCE TEST - DOES SET-TEST ERROR FLAGS, (B)UFFER TEST / (S)EQUENTIAL WRT/READ / (R)ANDOM WRT/READ, AND (S)EQ READ ONLY-TESTS / (B) BUFFER FILL-EMPTY TEST - FILLS, EMPTIES, CHECKS SECTOR BUF / CHECKS COMPUTER<=>CONTROLLER DATA PATH / TYPES "F E F8E8" BEFORE STARTING SUBTEST. / (S) SEQUENTIAL WRITE/READ / TYPES "W" OR "R" BEFORE WRITE OR READ PASS BEGINS / (R) RANDOM WRITE/READ / TYPES "*" TO INDICATE IN RANDOM MODE / (D) SET UP DEVICE CODE(S) USER TYPES IN 3 DIGIT DEVICE CODE / EX. FOR DEVICE 76 TYPE "760 " / PROGRAM RETURNS WITH NEXT ENTRY, USER TYPES / FOR MULTIPLE SYSTEMS TYPE DESIRED CODES / AND TERMINATE WITH A CR TO DEVICE: 0 / AFTER LAST DESIRED CODE. / THE LOW DIGIT TYPED E.G. 3 IN 753 OVERRIDES / THE INITIAL DRIVE # VALUES TYPED IN IF IT IS / NOT ZERO.. 751= SINGLE DRIVE, 752 = DUAL DRIVE / AND 753 = 3 DRIVE. / TYPING SPACE ALLOWS EXAMINATION WITHOUT MODIFYING / (V) VERIFY ALL SYSTEMS FUNCTIONAL. DOES SHORT (A) THEN GOES / AND DOES A FULL LENGTH (A) ON ALL SELECTED UNITS. / (F) FORMAT DISKETTE: ASKS "FORMAT UNIT #:" / OPERATOR TYPES DESIRED DRIVE # AND . / ASKS "SEQUENTIAL FORMAT? " RESPOND WITH "Y" FOR / STANDARD SEQUENTIAL FORMAT, "N" FOR 4 WAY INTER- / LEAVED FORMAT FOR SLOWER PROCESSORS. / (CTRL T) TYPES TOTAL SYSTEM STATUS OF ALL SYSTEMS, DRIVES. / (W) OPEN SOFTWARE SWITCH REGISTER FOR MODIFICATION. / ANY NON-ZERO VALUE ENTERED SUPERCEDES VALUE IN / FRONT PANEL SWITCHES. /SWITCH 0 UP SUPPRESSES PRINTING OF ERROR MESSAGES /SWITCH 1 UP SUPPRESSES USE OF INTERRUPT BY DRIVER. / ALSO DISABLES INTERRUPT RELATED ERROR CHECKS. /SWITCH 2 UP SUPPRESSES PRINTING OF HARDWARE STATUS ERRORS /SWITCH 4 UP INHIBITS USE OF HARDWARE SWR (DEFAULTS TO SOFTWARE SWR) /SWITCH 5 UP INHIBITS CYCLING WHEN MULTIPLE SYSTEMS ARE SELECTED / USING "D. THE PROGRAM IS THEN FROZEN AT THE CURRENT DEVICE /SWITCH 8 UP USES SEQUENTIALLY INCREMENTING DATA /SWITCH 9 UP USES CONSTANT DATA (PRIORITY OVER 8) /SWITCH 10 UP ALLOWS PRINT OF ALL COMPARE ERRORS /SWITCH 11 UP ENABLES READ ONLY MODE /SWITCHES 3 AND 6-7 NOT USED / /CONTROL C RETURN TO MONITOR (7605) /CONTROL D INTERRUPT DISPATCH TO 200 /CONTROL R INTERRUPT DISPATCH TO 201 /CONTROL I INTERRUPT INIT THEN RESTART /CONTROL K INTERRUPT DISPATCH TO KPAK / ( R DOES INVISIBLE RETURN) /CONTROL T TYPE CUMMULATIVE STATUS: CONTINUE / A ACCEPTANCE TEST (DOES B,S,R) / B BUFFER FILL - EMPTY TEST / ALSO CHECKS THAT ERROR FLAG CAN BE SET / F FORMAT SELECTED DISKETTE. / S SEQUENTIAL TEST / R RANDOM TEST / D SET DEVICE CODES. / / USEFUL PARAMETER - VARIABLE LOCATIONS. / / 021 BLKLIM: HIGHEST BLOCK TESTED / 022 NUMSCT: # PAGES TRANSFERRED EACH FLOPPY CALL / 025 PRNTER: # ERRORS PRINTED EACH SECTOR. / 063 MAXERR: MAX # ERROR LINES PRINTED BEFORE INHIBIT / 064 BUFPT: POINTER TO DATA BUFFER / 1400-1403 FIRST BLOCKS FOR UNITS 0-3 / 1404-1407 LAST BLOCKS FOR UNITS 0-3 / 142 DATA1: FIXED DATA, USED WHEN SW9=1 / 143 DATA2: DATA STORED PREVIOUS TO READ / 144 N: OFFSET DATA, USED WHEN SW8=1 / 200 START: START OF VEP (ASKS LOGICAL DISK NO.'S) / RESETS ALL STATUS COUNTS / 201 CONT: RESTART ADDRESS (ASKS "A,B,F,S,R,D OR V) / / ERROR HALT LOCATIONS AND MEANINGS / 457, 466, 471, 474, 477 UNEXPECTED DISK INTERRUPT / 501 UN IDENTIFIED INTERRUPT SA2000=CLA STL RTR SA4000=CLA STL RAR SA1=CLA IAC SA2=CLA STL RTL SA3= CLA STL IAC RAL SA4=CLA CLL IAC RTL SAM2=7344 SAM3=7346 INITS= JMS I IINITS SDNFS= JMS I ISDNFS X0=10 X1=11 X2=12 X3=13 X4=14 / DEFS FOR FIELD 1 MULTI DEVICE STATUS AND BUFFER ALLOCATION NUMDEV=10 / MAX # DEVICES RUNNABLE NUMDRV=3 / MAX # DRIVES EACH DEVICE STLDRV=40 / # WORDS ALLOCATED FOR STATUS ACCUM EACH DRIVE RTOTL=0 / OFFSET INTO DEV-DRV STATUS WTOTL=2 / OFFSET FOR # WRITES INTO DEV-DRV STATUS CETOTL=4 / OFFSET FOR # COMPARISON ERRRORS DETECTED. HETOTL=6 / OFFSET FOR # HARDWARE ERRORS DETECTED. STTOTL=10 STLDEV=140 / STATUS LENGTH FOR EACH DEVICE STTBUF=2000 / 0-STTBUF = CIRC DUMP BUFFER / MUST HAVE ONLY 1 BIT SET IN ADDRESS. STTBFL=STTBUF+1400 / MAXDRV*STLDRV*NUMDEV+STTBUF DATBUF=3600 / ALLOWS 10(8) PAGE TRANSFERS BEFORE WIPING OUT OS8 PRINT= JMS I PTEXTX /PRINT A TEXT STRING PRNT2C= JMS I IPRN2C /PRINT 2 CHARS FOLLOWING CALL. PRNTO= JMS I POCTX /PRINT AC IN OCTAL PRINTO= PRNTO PRNTCR= JMS I PCRLFX /PRINT A CR AND LF / FLOPPY DISK INTERFACE OPERATION FOR DSD 210-8 / DEFS FOR INTERFACE OPERATION. LCDR=6751 / LOAD COMMAND REG: CLEAR AC. / XX XX XX XX MA SZ DH DR FN FN FN XX / MA = 1 FOR MAINTAINANCE MODE. / SZ = DATA WORD SIZE: 0=>12 BITS, 1=>8 BITS. / DH = HIGH DRIVE SELECT IF 3 DRIVES. / DR = DRIVE SELECT. 0=>DRIVE 0, 1=>DRIVE 1 / FN = FUNCTION (0 - 7) / 0=FILL BUFFER: GET 64 12 BIT WDS OR 128 8 BIT WDS / 1=EMPTY BUFFER(VERIFIES DATA: DOESEN'T CHANGE BUF) / 2=WRITE SECTOR 3 = READ SECTOR / 4= NOP 5 = READ STATUS (.25 SEC) SEE XDR BIT DEF / 6= WRITE DELETED DATA SECTOR / 7= READ ERROR REG: SEE PAGE 3 ERROR CODES. XDR=6752 / TRANSFER DATA REGISTER: BIDIRECTIONAL. / IF READ JAMS DATA INTO AC / IF WRITE LOADS FROM AC, AC UNCHANGED. / AC4= DRIVE READY / AC5= DELETED DATA MARK DETECTED IN ID / AC9= INITIALIZE COMPLETE. / AC10=PARITY ERROR ON CONTROL INF. / AC11=CRC ERROR DETECTED IN DATA. / NOTE: AFTER A LCD COMMAND FINISHED STATUS IS AVAILABLE. / XX XX XX XX DR DD XX XX WP ID PA CRC / DR =1 DRIVE READY - SELECTED UNIT READY AND UP TO SPEED / DD =1 DELETED DATA WAS READ BY LAST LCD COMMAND. / WP =1 (LCD 5 ONLY) DISKETTE IS WRITE PROTECTED. / ID =1 INITIALIZE DONE - SET AFTER INIT OR POWER FAIL / PA =1 PARITY ERROR / CRC=1 CRC ERROR DETECTED ON DATA READ. STRF=6753 / SKIP ON TRANSFER REQUEST. / AN XDR INSTRUCTION IS DESIRED. SERF=6754 / SKIP ON ERROR FLAGS SET. / DONE FLAG ALSO SET WHEN TRUE. SDNF=6755 / SKIP ON DONE FLAG SET AND CLEAR DONE. / ATTACHED TO INTERRUPT LINE. SINTR=6756 / SET INTERRUPT STATE / AC11=1 ENABLES INTERRUPT ON DONE FLAG SET. / AC11=0 DISABLES FLOPPY INTERRUPT. INIT=6757 / INIT THE FLOPPY CONTROLLER - INTERFACE. / ERROR CODES GIVEN BY READ ERROR REGISTER FUNCT (MODE 7) / CODE LIGHT # MEANING / 10 2 DRIVE 0 FAILED TO HOME ON INIT OR DIDN'T SELECT / 20 2 DRIVE 1 FAILED TO HOME ON INIT OR DIDN'T SELECT / 30 2 FOUND HOME WHEN STEPPING OUT 10 TRACKS FOR INIT. / 40 2 TRACK GREATER THAN 77. OR UNIT SELECT ERROR. / 50 2 HOME BEFORE DESIRED TRACK FOUND. / 70 2 DESIRED SECTOR COULD NOT BE FOUND AFTER 2 REVS. / / 100 3 WRITE PROTECT ERROR. / 110 MORE THAN 40 USEC AND NO SEPERATED CLOCK FOUND. / 120 0 NO PREAMBLE WAS FOUND ( 24 BITS OF 0'S) / 130 0 PREAMBLE FOUND BUT NO I/O MARK WITHIN WINDOW. / 140 0 CRC ERROR ON WHAT APPEARED TO BE HEADER. / 150 2 HEADER TRACK ADDRESS OF A GOOD HEADER DIDN'T / MATCH DESIRED TRACK. / 160 0 TOO MANY TRIES FOR AN I.D. ADDRESS MARK. / 170 0 DATA ADDRESS MARK NOT FOUND IN ALLOTED TIME. / 200 0 CRC ERROR ON READING SECTOR FROM DISK. / RXES STATUS BIT 11 ALSO SET. / 210 1 PARITY ERROR (INTERFACE <=> CONTROLLER) / RXES STATUS BIT 10 ALSO SET. / 220 2 DRIVE 2 FAILED TO HOME ON INIT. / 230 2 DRIVE 3 FAILED TO HOME ON INIT. / 240 3 FORMATTER ENABLE ERROR. / 250 0 EXPECTED HEADER NOT FOUND AFTER TRACK FORMAT. / 260 0 INDEX MARK NOT FOUND IN EXPECTED RANGE. / (FORMAT NOT BEGUN) / 270 0 INDEX MARK NOT FOUND IN EXPECTED RANGE. / (FORMAT HAS OCCURED) *0 ZERO, 0; JMP I IPIPRO /THIS OCCURS DURING AN INTERRUPT / AUTO INDEX REGISTERS X0 - X4 (10-14) RESERVED / *20 MFIELD, 10 /MEMORY FIELD USED AS BUFFER (MULTIPLE OF 10) BLKLIM, 755 /HIGHEST BLOCK NO. TESTED VERMAX, 0 / OVERRIDES BLKLIM VALUE WHEN NONZERO. NUMSCT, 16 / MAX NUM PAGES TRANSFERRED AT ONE CALL. NMSCT, 16 / ACTUAL # PAGES TRANSFERRED: LOADED BY BDOK. PRNTER, -3 / MAX # DATA ERRS PRINTED EACH SECTOR. SECTOR, 0 / LAST SECTOR ACCESSED TRACK, 0 / LAST TRACK ACCESSED. BLKN, 0 /CURRENT BLOCK NUMBER DSKN, 0 /CURRENT DRIVE NUMBER PASCNT, -1 /COUNT OF NUMBER OF PASSES DBPT, DRVB0 /POINTER TO BEGIN BLOCK NO. TABLE DEPT, DRVE0 /POINTER TO END BLOCK NO. TABLE DCOUNT, 0 /COUNTING VARIABLE USED IN DATGEN,DATCOM TEMP, 0 / AVAILABLE TEMPORARY. (FORMAT, XDSUB) RXA, 0123 /RXA,RXB,RXC IS A TRIPLE PRECISION RXB, 4567 /RANDOM NUMBER RXC, 7654 ERRSTT, 0 / ERROR STATUS FROM HANDLER. ERRCNT, 0 /COUNT OF THE NUMBER OF ERRORS IN A BUFFER. SEQERR, 0 / FLAG FOR ERRORS DETECTED IN A PASS. JLOOKTB, LOOKTB / START OF LOOK UP TABLE OF STATUS ERRORS. JSTLDRV, STLDRV / LENGTH OF STATUS LENGTH EACH DRIVE. JSTBUF, STTBUF / START OF STATUS IN FIELD 1 STTPTS, 0 / STATUS POINTER FOR CURRENT SYSTEM DSK0: STTPTD, 0 / STATUS FOR CURRENT DRIVE, DEVICE STTPTR, 0 / WORKING STATUS TABLE POINTER. BLKPTR, 0 /7*U%*U%pT61@`0B C!$Ri4