/RX8 RX01 DIAGNOSTINC DIRXA-D FIELD 1 / CONSOL PACKAGE /PROGRAM SHOULD CHECK FOR A CONTROL CHARACTER FROM THE CONSOL /EVERY FIVE SECONDS OR LESS /SETUP CNTVAL FOR A RANGE OF 1 TO 4(8/E) MINUTES FOR C8PASS TO PRINT PASS /SETUP OF CNTVAL WILL BE FOUND IN C8PASS /THIS VALUE SHOULD BE A POSITIVE NUMBER. /CHANGE 1-7 APRIL ,1975 /VT78 MODIFICATIONS JUNE ,1977 / 1. NEW CONSOLE PACKAGE / 2. CAPABILITY OF TESTING 2 FLOPPY UNITS(4 DRIVES) / 3. MODIFIED INTERLEAVING PSKF= 6661 PCLF= 6662 PSKE= 6663 PSTB= 6664 PSIE= 6665 GTF= 6004 ACL= 7701 CAF= 6007 MQL= 7421 HLT= HALT /#6 MQA= 7501 /#6 /XLIST /IFDEF CONSOL < /XLIST *24 C8PASS= JMS I . XC8PASS /C8 PASS COMPLETION ROUTINE C8CKSW= JMS I . XC8SW /CHECK SW SETTING C8PRNT= JMS I . XC8PNT /C8 PRINT A BUFFER C8OCTA= JMS I . XC8OCT /CONVERT TO ASCII AND PRINT /*20 /PSEUDO SWITCH REGISTER /4000=DO NOT INHIBIT ERROR HALT /2000=LOOP ON ERROR /1000=LOOP ON TEST IN SR 4-11 /400=HALT AT END OF PASS /*21 /HARDWARE INDICATORS /4000=USE HARDWARE SWITCH REGISTER /*22 /SYSTEM CONFIGURATION /400=CONSOL PACKAGE SET ACTIVE /*23 /RESERVED FOR FUTURE USE /XLIST> / C O N S O L E P A C K A G E / / /IF ENTERED WITH C8CHAR=0000 THE SWITCH REGISTER /MODIFICATION ROUTINE IS ENTERED AUTOMATICALLY. /IF ENTERED WITH C8CHAR NOT EQUAL TO 0000, THE /KEYBOARD INPUT DECODER IS ENTERED AND IT IS ASSUMED /THAT THE AC CONTAINS THE ASCII CODE TO BE /CHECKED FOR A VALID CONTROL CHARACTER. / / / / / BSW=7002 / C8TEMP, 0 / TEMPRARY WORK AREA C8CHAR, 0 C8CDI, CIF CDF /USED TO CREATE CDI TO PROGRAM FIELD C8CDF, CDF /USED TO CREATE CDF TO CONSOLE FIELD C8SWR, 0 /SWITCH REGISTER SAVE AREA C8MODE, 0 /PRINT MODE SWITCH C8CNTR, 0 /USED AS A COUNTER C8M3, -3 /CONSTANT C8M4, -4 /CONSTANT C8M5, -5 /CONSTANT C8M10, -10 /CONSTANT C8M260, -260 /CONSTANT C8K7, 0007 /CONSTANT C8K240, 0240 /CONSTANT C8K260, 0260 /CONSTANT C8K275, 0275 /CONSTANT C8K277, 0277 /CONSTANT C8K322, 0322 /CONSTANT C8K323, 0323 /CONSTANT / / *200 C8ENTR, 0 TAD I (21 /GET MCW1 FROM PROGRAM FIELD SPA CLA /SKIP IF USING PSEUDO SWR CLA OSR SKP /GET HARDWARE SWR AND SKIP TAD I (20 /GET PSEUDO SWR DCA C8SWR /SAVE SWITCH REGISTER TAD I (INMODE /GET MESSAGE ACTIVE FLAG DCA C8MODE /SAVE IT CDF 10 /CHANGE DATA FIELD TO CONSOLE PACKAGE TAD C8ENTR /GET RETURN ADDRESS DCA C8RTN /SAVE FOR EXIT TAD C8CHAR /GET CHARACTER SAVED IN MAIN PROGRAM SZA /SKIP IF IT WAS ZERO JMP C8CNTL /AC NOT ZERO, GO CHECK CONTROL CHAR / /PRINT OUT SR=XXXX WHERE XXXX IS THE CURRENT CONTENTS /OF THE SWITCH REGISTER BEING USED (EITHER PSEUDO OR HARDWARE) / C8PSW, JMS C8CRLF /DO A AND TAD C8K323 /GET ASCII CODE FOR "S" JMS C8TYP /PRINT "S" TAD C8K322 /GET ASCII CODE FOR "R" JMS C8TYP /PRINT "R" TAD C8K275 /GET ASCII CODE FOR "=" JMS C8TYP /PRINT "=" TAD C8M4 /AC=-4 DCA C8CNTR /SET UP OCTAL DIGIT COUNTER TAD C8SWR /GET SWITCH REGISTER RAL /EXTRA ROTATE FOR LINK C8LOPA, RAL RTL /ROTATE OCTAL DIGITS FOR PRINTING DCA C8SWR /SAVE ROTATED SWR TAD C8SWR /GET ROTATED SWR AND C8K7 /MASK OFF DIGIT TO PRINT TAD C8K260 /ADD ASCII BASE CODE JMS C8TYP /PRINT AN OCTAL DIGIT TAD C8SWR /GET SWR ISZ C8CNTR /INCREMENT LOOP COUNTER JMP C8LOPA /GO PRINT NEXT DIGIT / /ACCEPT KEYBOARD INPUT OF OCTAL DIGITS, , /CTRL/C OR CTRL/G. ALL OTHER CHARACTERS ARE INVALID /AND WILL BE ECHOED, FOLLOWED BY A "?", /A CARRIAGE RETURN, LINE FEED, AND A RESTART OF /THE SR=XXXX ROUTINE / CLA CLL TAD C8M5 /AC=-5 DCA C8CNTR /SET UP TO ACCEPT 5 CHARACTERS DCA C8BLD /CLEAR SWITCH REG. BUILD AREA DCA C8FLG /CLEAR SWR CHANGE SWITCH TAD C8K240 /GET ASCII CODE FOR SPACE JMS C8TYP /SPACE OVER ONE POSITION C8SRLP, JMS C8TTY /GO WAIT FOR KEYBOARD INPUT DCA C8TEMP /SAVE INPUT CHARACTER TAD C8TEMP /GET CHARACTER TAD (-203 SNA /SKIP IF NOT CTRL/C JMP C8CTLC /GO TO CTRL/C ROUTINE TAD C8M4 /AC-=4 SNA /SKIP IF NOT CTRL/G JMP C8CTLG /GO TO CTRL/G ROUTINE TAD C8M3 /SUBTRACT 3 SNA /SKIP IF NOT LINE FEED JMP C8EXT1 /GO TO LINE FEED EXIT TAD C8M3 /SUBTRACT 3 SNA CLA /SKIP IF NOT CARRIAGE RETURN JMP C8EXT2 /GO TO CARRIAGE RETURN EXIT TAD C8TEMP /GET CHARACTER JMS C8TYP /ECHO IT TAD C8TEMP /GET CHARACTER TAD C8M260 SPA /SKIP IF >= TO ASCII CODE FOR ZERO JMP C8ERR /INVALID CHARACTER NOT OCTAL DIGIT TAD C8M10 SMA CLA /SKIP IF <= ASCII CODE FOR SEVEN JMP C8ERR /INVALID CHARACTER NOT OCTAL DIGIT STA /AC=7777 DCA C8FLG /SET SWR CHANGE FLAG TAD C8TEMP /GET CHARACTER AND C8K7 /MASK TO 3 BITS DCA C8TEMP /SAVE OCTAL DIGIT TAD C8BLD /GET SWR BUILD AREA CONTENTS CLL RTL RAL /ROTATE TO BUILD SWR TAD C8TEMP /ADD NEXT OCTAL DIGIT DCA C8BLD /SAVE NEW SWR ISZ C8CNTR /INCREMENT OCTAL DIGIT COUNTER JMP C8SRLP /CONTINUE ACCEPTING OCTAL DIGITS / C8ERR, CLA CLL TAD C8K277 /GET ASCII CODE FOR "?" JMS C8TYP /PRINT "?" JMS C8CRLF /DO A AND JMP C8PSW /GO START OVER / / PAGE C8BLD, 0 /SWITCH REGISTER BUILD AREA C8STRT, RSTART /ADDRESS OF START OF PROGRAM C8RTN, 0 /STORAGE FOR RETURN ADDRESS C8FLG, 0 /SWR CHANGE SWITCH C8SFLG, 0 /CTRL/S ACTIVE FLAG C8K177, 0177 /CONSTANT C8K200, 0200 /CONSTANT C8K77, 0077 /CONSTANT C8M40, -40 /CONSTANT C8K100, 0100 /CONSTANT C8K215, 0215 /CONSTANT C8K212, 0212 /CONSTANT C8K303, 0303 /CONSTANT C8K307, 0307 /CONSTANT C8K336, 0336 /CONSTANT C87600, 7600 /CONSTANT / / C O N T R O L C H A R A C T E R / / D E C O D E R O U T I N E / C8CNTL, TAD (-203 SNA /SKIP IF NOT CTRL/C JMP C8CTLC /CTRL/C TYPED EXIT TO MONITOR TAD (-4 SNA /SKIP IF NOT CTRL/G JMP C8CTLG /CTRL/G TYPED GO PRINT "^G" TAD (-12 SNA /SKIP IF NOT CTRL/Q JMP C8CTLQ /CTRL/Q TYPED TAD (-2 SNA /SKIP IF NOT CTRL/S JMP C8CTLS /CTRL/S TYPED DCA C8MODE /SET MESSAGE ACTIVE FLAG ISZ C8SFLG /TEST CTRL/S ACTIVE FLAG JMP C8ECHO /GO ECHO CHARACTER AND RETURN TO PROGRAM / /CTRL/S HANDLER / C8CTLS, STA /AC=7777 DCA C8SFLG /SET CTRL/S ACTIVE FLAG TAD C8MODE /GET MESSAGE ACTIVE FLAG SNA CLA /SKIP IF CTRL/S TYPED WHILE MESSAGE ACTIVE JMP C8PFLD-1 /RETURN TO PROGRAM / C8WAIT, STA /AC=7777 DCA C8SFLG /SET CTRL/S ACTIVE FLAG JMS C8TTY /WAIT FOR KEYBOARD INPUT TAD (-203 SNA /SKIP IF NOT CTRL/C JMP C8CTLC /CTRL/C TYPED EXIT TO MONITOR TAD (-16 SZA CLA /SKIP IF CTRL/Q JMP C8WAIT /NOT CTRL/C OR CTRL/Q CONTINUE WAITING C8CTLQ, DCA C8SFLG /CLEAR CTRL/S ACTIVE FLAG JMP C8PFLD-1 /RETURN TO MAIN PROGRAM / /CONTROL G HANDLER / C8CTLG, JMS C8CRLF /DO A AND TAD C8K336 /GET ASCII CODE FOR UP ARROW JMS C8TYP /PRINT UP ARROW TAD C8K307 /GET ASCII CODE FOR "G" JMS C8TYP /PRINT "G" JMP C8PSW /GO TO "SR=XXXX" ROUTINE / /CONTROL C HANDLER / C8CTLC, DCA C8SFLG /CLEAR CTRL/S ACTIVE FLAG TAD C8K336 /GET ASCII CODE FOR UP ARROW JMS C8TYP /PRINT UP ARROW TAD C8K303 /GET ASCII CODE FOR "C" JMS C8TYP /PRINT "C" CDF CIF /CHANGE TO IF AND DF ZERO CAF JMP I C87600 /RETURN TO MONITOR / C8ECHO, TAD C8CHAR /GET CHARACTER JMS C8TYP /ECHO IT TAD C8K277 /CODE FOR ? JMS C8TYP /TYPE QUESTION MARK JMP C8PFLD-1 /RETURN TO PROGRAM / / / / /PRINT ONE CHARACTER / C8TYP, 0 ISZ C8SFLG /TEST CTRL/S ACTIVE FLAG SKP /SKIP IF CTRL/S NOT ACTIVE JMP C8WAIT /GO WAIT FOR CTRL/Q OR CTRL/C TLS /TRANSMIT CHARACTER TSF /TEST TTY FLAG JMP .-1 /WAIT FOR TTY FLAG TCF /CLEAR TTY FLAG CLA /CLEAR AC DO NOT CLEAR LINK JMP I C8TYP /RETURN / /WAIT FOR KEYBOARD INPUT THEN EXIT WITH ASCII CODE IN AC / C8TTY, 0 KSF /SKIP IF KEYBOARD FLAG SET JMP .-1 /WAIT FOR KEYBOARD INPUT KRB /READ KEYBOARD BUFFER CLEAR FLAG AND C8K177 /MASK TO 7 BITS TAD C8K200 /SET BIT 4 JMP I C8TTY /RETURN / /EXECUTE A CARRIAGE RETURN AND LINE FEED / C8CRLF, 0 TAD C8K215 /GET ASCII CODE FOR CARRIAGE RETURN JMS C8TYP /GO EXECUTE THE CARRIAGE RETURN C8RET2, TAD C8K212 /GET ASCII CODE FOR LINE FEED JMS C8TYP /GO EXECUTE THE LINE FEED JMP I C8CRLF /RETURN / /CONSOLE PACKAGE EXIT IF TERMINATED WITH LINE FEED / C8EXT1, JMS C8CRLF /DO A AND DCA C8CHAR /CLEAR IT CDF CIF 0 /MODIFIED TO PROGRAM FIELD ISZ C8FLG /TEST SWR CHANGE FLAG JMP I C8STRT /RESTART PROGRAM WITHOUT CHANGE OF SWR TAD C8BLD /GET NEW SWITCH REGISTER DCA I (20 /SAVE IT IN PROGRAM FIELD JMP I C8STRT /RESTART PROGRAM WITH NEW PSEUDO SWR / /EXIT FROM CONSOLE PACKAGE IF TERMINATED WITH CARRIAGE RETURN / C8EXT2, JMS C8CRLF /DO A AND DCA C8CHAR /CLEAR IT C8PFLD, CDF CIF 0 /MODIFIED TO PROGRAM FIELD CLA CLL /CLEAR AC AND LINK FOR RETURN ISZ C8FLG /TEST SWR CHANGE FLAG JMP I C8RTN /RETURN TO PROGRAM WITHOUT CHANGE OF SWR TAD C8BLD /GET NEW SWITCH REGISTER DCA I (20 /SAVE IT IN PROGRAM FIELD JMP I C8RTN /RETURN TO PROGRAM / / / PAGE /********************************************************************* /C8PASS /THIS IS CALLED AT THE END OF EACH PROGRAM COMPLETION /THE VALUE OF **CNTVAL** WILL BE DETERMINED BY THE TIME IT TAKES /THE PROGRAM TO COMPLEATE THIS MANY C8PASS TO BE IN THE 1 TO 4 MINUTE /RANGE / C8PASS=JMS XC8PAS /EX. C8PASS / HLT /HALT IF NON CONSOL PACKAGE / JMP START1 /CONTINUE RUNNING THIS PROGRAM /RETURN TO LOCATION CALL PLUS ONE WITH THE AC=0 IF NON CONSOL PACKAGE AND HLT /IF CONTINUE TO RUN THEN RETURN TO CALL PLUS 2 AC=0 XC8PAS, 0 CDF 10 /CHANGE DATA FIELD TO CONSOLE PACKAGE JMS C8CK22 /CHECK IF CONSOL IS ACTIVE JMP DOPACK /IS CLASSIC JMS XC8SW /CHECK SR SETTING AND (400 /FOR HALT ON END OF C8PASS SZA CLA /1= HALT 0 CONTINUE HLT JMP C8BY1 /CONTINUE ON RUNNING PROGRAM DOPACK, JMS CKCOUT /CLASS CHECK C8PASS COUNT JMP C8BY1 /C8PASS COUNT NOT DONE REDO PROGRAM ISZ PASCNT /C8PASS COUNT DONE SET C8PASS COUNT /#2 JMS C8CRLF /#2 JMS XC8PNT /C8PRNT BUFFER MESPAS / TAD PASCNT /GET NUMBER JMS XC8OCT /CONVERT IT TO ASCII CDF 0 TAD I XMX /GET THE CHAR TO PRINT CDF 10 DCA CKCOUT /STORE FOR PRINTING JMS XC8PNT /PRINT IT CKCOUT JMS C8CRLF /DO A CARRIAGE RETURN JMS XC8SW /CHECK A HALT AT THE END OF C8PASS AND (400 /MASK BIT SNA CLA /HALT =1 NO SKIOP CONTINUE =0 JMP C8BY1 /NO HALT TAD XC8PAS /GET RETURN ADDRESS DCA C8ENTR /PLACE IT AT THE START OF CONSOLE PACKAGE CDF 0 JMP C8ENTR+1 /GO TO CONSOLE PACKAGE TO PRINT PSR C8BY1, CDF CIF 0 JMP I XC8PAS CKCOUT, 0 TAD DOSET /CHECK IF SET UP NEEDED SZA CLA /0=SET UP C8PASS COUNT VALUE JMP NOSET /1=C8PASS VALUE OK TAD CNTVAL /GET COUNT VALUE FOR THIS PROG CMA /SET TO NEGATIVE DCA DOCNT /STORE IN HERE ISZ DOSET /INDICATE VALUE SET UP /#2 NOSET, ISZ DOCNT /COUNT THE NUMBER OF PASSES /#2 JMP C8BY1 /EXIT FOR ANOTHER PASS DCA DOSET /SET TO C8PRNT C8PASS ISZ CKCOUT /BUMP RETURN FOR JMP I CKCOUT /C8PASS C8TYPE OUT XMX, MX /LOCATION OF CHAR TO PRINT AT PASS FROM FLD 0 DOCNT, 0 PASCNT, 0 / DOSET, 0 CNTVAL, 0 MESPAS, TEXT "DIRXA-D PASS " /********************************************************************* /C8CKSW /ROUTINE THAT WILL CHECK WHERE TO READ THE /C8 SWITCHES FROM IE. FROM PANEL OR PSEUDO C8SWIT REGISTER / /RETURN WITH AC = TO CONTENTS OF SWITCH REGISTER XC8SW, 0 CLA /CLEA AC CDF 00 TAD I (21 /GET WD FOR INDICATOR CDF 10 SPA CLA /CHECK IF FROM PANEL 4000 SKP CLA OSR /DO LAS AND SKIP GET FROM PANEL WITH LAB JMP C8GET1 /GET CONTENTS OF LOC 20 FLD 00 JMP C8EXTB /EXIT COMMON C8GET1, CDF 0 TAD I (20 /PSEUDO SW CDF 10 C8EXTB, JMP I XC8SW /EXIT WITH STATUS BIT IN AC. PAGE /********************************************************************* /C8PRNT /THIS ROUTINE WILL TYPE THE CONTENTS OF THE C8 PRINT BUFFER. THE LOCATION /OF THE BUFFER WILL BE IN THE ADDRESS FOLLOWING THE COALL. C8 PRINTING OF THE BUFFER /WILL STOP WHEN A 00 CHAR IS DETECTED. CHARACTERS ARE PACKED 2 PER WORD. / C8PRNT=JMS XC8PNT /EX. C8PRNT /C8PRNT THE CONTENTS OF THE FOLLOWING BUFFER / MESS77 /LOCATION OF C8PRNT BUFFER /C8PRNT WILL USE THE LOCATION FOLLOWING THE CALL AS THE POINTER FOR THE /C8PRNT ROUTINE. RETURN TO CALL PLUS TWO WITH AC=0 /********************************************************************* XC8PNT, 0 CLA CLL TAD I XC8PNT /GET C8PRNT BUFFERS STARTING LOCATION DCA PTSTOR /STORE IN STSTOR ISZ XC8PNT /BUMP RETURN C8DO1, TAD I PTSTOR /GET DATA WORD AND (7700 /MASK FOR LEFT BYTE SNA /CHECK IF 00 TERMINATE JMP I XC8PNT /EXIT SMA /IS AC MINUS CML /MAKE CHAR A 300 AFTER ROTATE IAC /MAKE CHAR A 200 AFTER ROTATE RTR RTR RTR /PUT CHAR IN BITS 4-11 MAKE IT 8 BIT ASCII JMS C8TYP /C8PRNT IT ON CONSOLE TAD I PTSTOR /GET DATA WORD AND (0077 /MASK FOR RIGHT BYTE SNA /CHECK IF 00 TERMINATOR JMP I XC8PNT //EXIT TAD (3740 /ADD FUDGE FACTOR TO DETERMINE IF 200 SMA /OR 300 IS TO BE ADD TO CHAR TAD (100 /ADD 100 TAD (240 /ADD 200 JMS C8TYP /C8TYPE ONLY BITS 4-11 ISZ PTSTOR /BUMP POINTER FOR NEXT WORD JMP C8DO1 /DO AGAIN PTSTOR, 0 /STOR FOR C8PRNT BUFFER STOPNT, 0 /0000 C8PRNT 7777=DO NOT C8PRNT /********************************************************************* /********************************************************************* /C8OCTA /OCTAL TO ASCII CONVERSION /THIS ROUTINE WILL TAKE THE OCTAL NUMBER IN THE AC AND CONVERT IT TO ASCII /THE RESULT WILL BE PRINTED ON THE CONSOL DISPLAY / C8OCTA=JMS XC8OCT / /EX. C8OCTA /AC CONTAINS NUMBER TO BE CHANGE / XC8OCT, 0 CLL RTL RTL /POSITON THE FIRST CHAR FOR PRINTING DCA C8TMP1 /SAVE CORREC POSITIONED WORD HERE TAD (-4 DCA C8CKP /STORE COUNTER IN HERE C8DO4, TAD C8TMP1 /GET FIRST NUMBER AND (0007 /MASK TAD (260 /ADD THE PRINT CONSTANT JMS C8TYP /TYPE THE NUMBER TAD C8TMP1 / RTL RAL /PUT THE NEXT NUMBER IN POSITION DCA C8TMP1 /STORE IT ISZ C8CKP /DONE YET WITH FOUR NUMBERS JMP C8DO4 /NOT YET DO MORE JMP I XC8OCT /DONE WITH FOUR C8TMP1, 0 C8CKP, 0 /********************************************************************* /********************************************************************* /CHECK LOCATION 22 FIELD 0 C8CK22, 0 CLA CDF 0 TAD I (22 /GET LOC 22 FIELD 0 CDF 10 AND (400 SNA CLA ISZ C8CK22 JMP I C8CK22 /EXIT / FIELD 0 / RX8/RX01 DIAGNOSTIC - MAINDEC-08-DIRXA-D / /STARTING ADDRESS 200 - (AC) = STARTUP SWITCHES / /STARTING ADDRESS 201 - RESTART (PARAMETERS ALREADY SELECTED AT START 200) / /STARTING ADDRESS 202 - CHANGE DEVICE CODES. / /START-UP AC SWITCH DEFINITIONS (WHEN THE STARTING ADDRESS IS 200) / / AC 0 1 2 3 4 5 6 7 8 9 10 11 / U U U/C X X X U T T T T T / / X=DEVICE CODE (0 DEFAULTS TO 75) / T=TESTS (0 FOR ALL TESTS) / C=RX01 MICROCONTROL CABLED TO RX8 INTERFACE / U=UNIT/DRIVES SELECTED FOR TEST / WHERE: UNIT DRIVE(S) / 0000 = A 0,1 / 1000 = B 0,1 / 2000 = A 0 / 3000 = B 0 / 4000 = A 1 / 5000 = B 1 / 6000 = TEST CONTROL AND INTERFACE ONLY (NO DRIVES) / 7000 = TEST INTERFACE ONLY (NO CONTROL OR DRIVES) / VT78 0040 = TEST UNITS A & B (ALL DRIVES) / 4040 = DRIVES 1 BOTH UNITS / 2040 = DRIVES 0 BOTH UNITS / /THE PRETEST IS NOT SWITCH SELECTABLE - THIS PRETEST IS ALWAYS /EXECUTED PRIOR TO THE FIRST TTTTT SELECTION / /PRETEST = VERIFICATION OF INI (KEY) / / (PRETEST) IB = INIT PART I (KEY) / FLAG DETECTION PART I / /INTERFACE / CONTROL TESTS / /NOTE: * THE KEYBOARD IS " ALIVE " DURING TESTS 6, 7, 10, AND 11, AND 12 /IF A CHARACTER IS STRUCK AN ERROR MAY OCCUR / / TTTTT / / 0 I - FLAG DETECTION PART II / " C " LINES PART I / 1 IB - DIRECTION OF IOT XDR PART I / IOT DECODING PART I / - " C " LINES PART II / 2 IB - FLAG DETECTION PART II / " C " LINES PART III / 3 IB - IOT DEVICE CODE VERIFICATION / 4 IB - DIRECTION OF IOT XDR PART II / " C " LINES PART IV / 5 I - IOT DECODING PART II / * 6 IB/I - INTERRUPT TESTING PART I / IOT DECODING PART III / * 7 IB - INTERRUPT TESTING PART II / * 10 IB - INTERRUPT TESTING PART III / * 11 I - INTERRUPT TESTING PART IV / * 12 IB/I - IOT DECODING PART II /RX01 CONTROL TESTS / / 13 C - FILL BUFFER 12-BIT MODE / 14 C - EMPTY BUFFER 12-BIT MODE / 15 C - VERIFICATION OF PREVIOUS TEST / 16 C - FILL BUFFER 8-BIT MODE / 17 C - EMPTY BUFFER 8-BIT MODE / 20 C - VERIFICATION OF PREVIOUS TEST / 21 C - FILL BUFFER 8-BIT MODE (ALL 0'S) / 22 C - FILL BUFFER 8-BIT MODE (ALL 1'S) / /DISKETTE DRIVE TESTS / / 23 D - STATUS BIT "DRIVE READY" / 24 D - B-CODE VERIFICATION (70) PART I / 25 D - B-CODE VERIFICATION (70) PART II / 26 D - B-CODE VERIFICATION (70) PART III / 27 D - B-CODE VERIFICATION (70) PART IV / 30 D - SEEK AND CRC VERIFICATION / 31 D - WRITE TEST / 32 D - INIT PART III [PROGRAMMED] IMPLIED READ TRACK 1 SECTOR 1 / 33 D - READ TEST / 34 D - WRITE-READ-PROGRAM VERIFY 12 BIT MODE / 35 D - WRITE-READ-PROGRAM VERIFY 8 BIT MODE / 36 D - WRITE-READ-PROGRAM VERIFY 12 BIT MODE WITH DELETED DATA / 37 D - WRITE-READ-PROGRAM VERIFY 8 BIT MODE WITH DELETED DATA / / I - MEANS RX8 INTERFACE TEST / B - MEANS RX01 MAY BE CABLED TO RX8 / C - MEANS AN RX01 MUST BE CABLED TO THE RX8 / D - MEANS A DRIVE MUST BE READY / /OPERATIONAL AC SWITCH DEFINITIONS / / AC 0 - (1) CONTINUE ON DETECTION OF ERROR / AC 1 - (1) LOCK SCOPE LOOP ON ERROR / AC 2 - (1) LOCK SCOPE LOOP ON TEST / AC 3 - (1) HALT AT END OF PASS / AC 4 - (1) DON'T PRINT AN ERROR MESSAGE / AC 5 - (1) LONG DATA COMPARISON ERROR PRINTOUT / AC 6 - (1) DISABLE THE ISSUING OF (INIT) / AC 7 - (1) HALT AT END OF A TEST / AC 8 - / AC 9 - / AC 10- / AC 11- (1) DISABLE RINGING OF BELL AT ARROR /THE FOLLOWING MAP IS A SUMMARY OF ALL ERRORS. / / / ERA TEST BLANK EAC GOOD COMMENT: / / E0PRE / PRETEST - - - UNEXPECTED TRANSFER REQUEST FLAG E2PRE / - - - UNEXPECTED ERROR FLAG E3PRE / - - - MISSING DONE FLAG E1PRE / STATUS STATUS / FROM MINUS 4, STATUS NOT = INIT DONE, OR / TR DEL 204 DRIVE READY + INIT DONE / DATA E4PRE / - - - UNEXPECTED DONE FLAG / / E0 / T0 - X 0 IOT 67X1 DIDN'T CLEAR AC E1 / - - - UNEXPECTED TRANSFER REQUEST FLAG E2 / - - - UNEXPECTED ERROR FLAG E3 / - - - UNEXPECTED DONE FLAG / / E11 / T1 - X 0 IOT 67X1 FAILED TO CLEAR AC E10 / - X 200 TR NOT = 200 (DRIVE READY) / / E20 / T2 - - - MISSING DONE FLAG E21 / - - - MISSING TR FLAG E22 / - - - MISSING ERROR FLAG E23 / - - - MISSING DONE FLAG E24 / - - - MISSING TR FLAG E25 / - - - MISSING ERROR FLAG E26 / - X 7777 IOT 67X6 CLEARED AC E27 / - X 7777 IOT 67X3 CLEARED AC E28 / - X 7777 IOT 67X4 CLEARED AC / / / E30 / T3 - X 67X5 (EAC) = ILLEGAL DEVICE CODE / / / E42 / T4 7776 X 200 IOT 67X1 CLEARED AC / / E56 / T5 - X 0 (TR) NOT = 0 E50 / - - - MISSING DONE FLAG E53 / - - - UNEXPECTED DONE FLAG E51 / - - - MISSING TR FLAG E54 / - - - UNEXPECTED TR FLAG E52 / - - - MISSING ERROR FLAG E55 / - - - UNEXPECTED ERROR FLAG / / / E60 / T6 - - - UNEXPECTED RX01 FLAG E61 / - - - MISSING DONE FLAG E62 / - - - MISSING TR FLAG E63 / - - - MISSING ERROR FLAG / / / E70 / T7 - - - MISSING RX01 IRQ / / / E100 / T10 - - - UNEXPECTED RX01 IRQ / / / E110 / T11 - - - UNEXPECTED RX01 IRQ / / / E124 / T12 - - - UNEXPECTED RX01 IRQ E120 / - - - UNEXPECTED DONE FLAG E121 / - - - UNEXPECTED TR FLAG E122 / - - - UNEXPECTED ERROR FLAG E123 / - X 0 (TR) NOT = 0 EA120 / ALT 12 - - - UNEXPECTED TR FLAG EA121 / - - - UNEXPECTED DONE FLAG EA122 / ACTUAL ACTUAL 4 OR / STATUS MINUS 204 STATUS NOT = 4, OR 204 / DEL DAT EA123 / - X 0 THE B-CODE NOT = 0 /THE " XRSTB " SUBROUTINE WHICH READS THE B-CODE STATUS BY ISSUING /COMMAND # 7 IS ENTERED FROM TESTS: *** ALT12, (T24, T25, T26), AND T27 / /THE CONTENTS OF " BLANK " = THE COTENTS OF GOOD FROM TEST: ALT12 / E7000 / 4/204 - - UNEXPECTED TR FLAG E7001 / 4/204 STATUS - UNEXPECTED ERROR FLAG E7002 / 4/204 X 7000 SHIFT REGISTER NOT SHIFTING / / / /THE " XRST " SUBROUTINE TO READ THE STATU REGISTER BY ISSUING COMMAND # 5 /IS ENTERED FROM TESTS: *** ALT12, AND T23 / E7003 / 4/204 - - UNEXPECTED TR FLAG E7004 / 4/204 STATUS - UNEXPECTED ERROR FLAG E7006 / 4/204 X 5000 SHIFT REGISTER NOT SHIFTING E7005 / 4/204 X 0/200 / / / /SUBROUTINE " FBEB " TO FILL AND EMPTY THE BUFFER IS ENTERED FROM TESTS: / T13, T16 (FILL THE BUFFER) / T14, T17 (EMPTY THE BUFFER) / E130 / COMMAND - - UNEXPECTED ERROR FLAG E131 / COMMAND ACTUAL EXPECT # OF TR FLAGS NOT ON / (EAC) = # OF FLAGS / NEG. # MEANS NOT ENOUGH / > 0 MEANS TOO MANY / / / /ERROR # 140 MAY OCCUR WITHIN TESTS T14, T17, T15, AND T20 / /THE CONTENTS OF " BLANK " IS EQUIVALENT TO THE WORD/BYTE COUNT AT THE ERROR / /THE CONTENTS OF THE " EAC " IS EQUIVALENT TO THE ACTUAL DATA FROM THE SECTOR /BUFFER (8 OR 12-BIT MODE) / E140 / * # ACTUAL EXPECT DATA COMPARISON ERROR / " FB128BYTES " IS A SUBROUTINE WHICH FILLS THE SECTOR BUFFER WITH 128 BYTES /OF DATA (ALL 1'S OR ALL 0'S) AND IS ENTERED FROM TESTS T21, AND T22 / E210 / * - - - UNEXPECTED ERROR FLAG / / /SUBROUTINE " TX " EMPTIES THE SECTOR BUFFER AND COMPARES THE DATA TO AN /EXPECTED PATTERN / /THIS SUBROUTINE IS ENTERED FROM TESTS: *** T21, T22, (T24, T25, T26), AND T27 / E211 / # ACTUAL EXPECT DATA COMPARISON ERROR E212 / - - - UNEXPECTED ERROR FLAG / / / /ERRORS E240, E245, E241, AND E242 MAY OCCUR WITHIN TESTS: T24, T25, T26 / / / E240 / * CMND X 2 # OF TR FLAGS NOT OK E245 / CMND - - MISSING ERROR FLAG E241 / ACTUAL X T24/200,300 / T25/200 / T26/300 E242 / - X 70 B-CODE NOT = 70 / / / E270 / T27 115 # OF 2 # OF TR FLAGS NOT OK / XFERS E271 / - - - MISSING ERROR FLAG E272 / - X 40 B-CODE NOT = 40 *0 303 / C IS THE REVISION *1 JMP I IPI / /PROGRAM LOCATION 2 CONTAINTS THE INTERRUPT RETURN ADDRESS / /PROGRAM LOCATION 2 IS MODIFIED WITHIN CERTAIN TESTS / IPI, PI / / /AUTO INDEX REGISTER DEFINITION. / *10 A10, 0 A11, 0 A12, 0 A13, 0 /TEST Q *20 / /THE FOLLOWING PROGRAM LOCATIONS (20, 21, AND 22, 23) ARE RESERVED FOR ACT8/A / 0000 /SET FOR DRIVES 0 AND 1 DEVICE CODE 75 0000 /0000=PSEUDO SWITCH REGISTER IF ON ACTIVE CONSOLE /0000=VT78 /4000=USE HARDWARE SWITCH REGISTER 0400 /0000=NOT ACTIVE CONSOLE PACKAGE /0400= ACTIVE CONSOLE PACKAGE /1400= VT78 *24 /******************************************************************* /THE FOLLOWING CALLS ARE USED FOR THE CONSOLE PACKAGE CHECKC8= JMS I . XCHECK /USED TO CHECK IF THE CONSOLE IS ACTIVE XC8ENTR= JMS I . C8ENTR C8PASS= JMS I . XC8PASS /END OF PASS FOR CONSOL RSTART=200 /RESTART ADDRESS FOR CONSOLE PACKAGE /********************************************************************* / /THE FOLLOWING PROGRAM LOCATIONS "OD", "ID", "FIRST", AND "LAST" MAY BE /CHANGED BY THE OPERATOR MANUALLY HOWEVER FOLLOWING THESE RESTRICTIONS. / / 1. THE CONTENTS OF " OD " (MIN VAL 0) MUST BE <= THE / CONTENTS OF " ID " (MAX VALUE 114). / / 2. THE CONTENTS OF " FIRST " (MIN VAL 1) MUST BE <= THE / CONTENTS OF " LAST " (MAX VALUE 32) / /THE PROGRAM INITIALLY SETS THESE VALUES AT PROGRAM LOAD TIME / / (OD) = 52, AND (ID) = 53 / /BECAUSE TRACK 53 IS THE TRACK AT WHICH THE RX01 MICROCONTROLLER WILL /DECREASE THE WRITE CURRENT IN HALF / OD, 1 /OUTSIDE DIAMETER (MIN VALUE 0) ID, 114 /INSIDE DIAMETER (MAX VALUE 114) FIRST, 1 /FIRST SECTOR TO ACCESS (MIN VAL 1) LAST, 32 /LAST SECTOR TO ACCESS (MAX VAL 32) / /PDP-8/E AUGMENTED INSTRUCTIONS / BSW= JMS I . XBSW /BYTE SWAP ION=6001 IOF=6002 LAS=CKSWIT MQA=7501 / "OR" (MQ) WITH (AC) MQL=7421 / MQ=AC (THEN CLEAR AC) / /DISKETTE IOT SUBROUTINES / TY8OCT=JMS I . XTY8OCT /TYPE EIGHT OCTAL DIGITS SEL=JMS I . XSEL LCD=JMS I . XLCD LCDA=JMS I . XLCDA LCDB=JMS I . XLCDB XDRIN=JMS I . XXDRIN XDROUT=JMS I . XXDROUT STR=JMS I . XSTR SER=JMS I . XSER SDN=JMS I . XSDN INTR=JMS I . XINTR INIT=JMS I . XINIT INITB=JMS I . XINITB CKUNIT=JMS I . XCKUNT /OPERATING SYSTEM SUBROUTINES / ERROR=JMS I . XERROR EXIT=JMP I . MORETESTS /EXIT FROM A TEST (IF RX8 ONLY) DONE=JMS I . XDONE /FORM: "DONE; NO; YES" GETAPATTERN=JMS I . XGETAPATTERN GETASECTOR=JMS I . XGETASECTOR GETATRACK=JMS I . XGETATRACK /GET A TRACK FOR IOT LCD=8 (TRACK #) GETUNIT=JMS I . XGETUNIT /SELECT A DISKETTE DRIVE HLT=HALT HALT=JMS I . XHALT INITSECTORS=JMS I . XINITSECTORS INITTRACKS=JMS I . XINITTRACKS LOCKUP=JMS I . XLOCKUP NOTEST=EXIT OK=JMS I . XOK /SKIP IF NOT ON APT. TICK=JMS I . XTICK AERROR=JMS I . XAERRO APT8=JMS I . XAPT8 WAIT=JMS I . XWAIT CHEK22=JMS I . XCHK22 /CHECK FOR APT SYSTEM. PRINT=JMS I . XPRINT /PRINT A MESSAGE; FORM: "PRINT; MESSAGE" READ=JMS I . XREAD READCOMPARE=JMS I . XREADCOMPARE RST=JMS I . XRST /STATUS AFTER "RST" COMMAND (12) / 5 TIMES 2 RSTB=JMS I . XRSTB /STATUS AFTER READ B-CODES COMMAND (16) 7 X 2 SETUP=JMS I . XSETUP SPECIALTYPEIT=JMS I . XSPECIALTYPE SCOPE=JMS I . XSCOPE SUBSCOPE=JMS I . XSSCOP TAB=JMS I . XTAB /FORM: " TAB; N " TY4OCT=JMS I . XTY4OCT /TYPE (4) OCTAL; FORM: " TY4OCT; OCTAL " TYPEIT=JMS I . XTYPEIT /TYPE 1 8 BIT ASCII, AC =ASCII. WAITTY=JMS I . XWAITTY WRITE=JMS I . XWRITE / /ACCUMULATOR SWITCH REGISTER DEFINITIONS / SW0=4000 SW1=2000 SW2=1000 SW3=400 SW4=200 SW5=100 SW6=40 SW7=20 SW8=10 SW9=4 SW10=2 SW11=1 /OPERATING SYSTEM ALLOCATED STORAGE REFERENCES / BUSY, 0 / = 1 - PROCESSING AN RX01 PROGRAM INTERRUPT COMMAND, 0 /DISKETTE COMMAND; (AC) AT LCD COMPRERROR, 0 /PROGRAM DATA COMPARE ERRORS DTESTP, 0 /DIAGNOSTIC TEST PARAMETERS (SELECTED AT D/S) FIRSTERROR, 7777 / (7777) IF 1ST ERROR; (0) IF NOT HANGER, 0 /COUNTER TO DETECT DEVICE TEST HUNG K7777, -1 / RDC, 0 / = 0 IF A RDC TEST, = 7777 IF NOT KRETRY, -13 / 1 ORIGINAL TRY + 10 RETRIES SECTORS, -32 /NEGATIVE # OF SECTORS PER TRACK (1-32 OCTAL) SSTART, 0 /SECTOR LAS ACCESSED ( 0 = "NONE" ) STARGET, 0 /TARGET SECTOR OF (UNITX) START, 0 /TRACK LAST ACCESSED ASTATUS, 0 /DISKETTE STATUS AT ERROR OR DONE BSTATUS, 0 /RX01 DEFINITIVE ERROR CODE REGISTER CSTATUS, 0 /STATUS FROM THE "READ STATUS" COMMAND TARGET, 0 /TARGET TRACK OF (UNITX) TESTP, 0 /TEST PARAMETERS (DYNAMIC BY PROGRAM) XA10, 0 XA11, 0 UNITCK, 0 /VT78/AC11 (0)=RXA (1)=RXB MASK, 7677 /VT78/ 7677 FOR STANDARD 8 =277 FOR VT78 / /PROGRAM LOCATION XXX IS A TEMPORARY STORAGE REGISTER FOR DATA /OR ADDRESSES OF DATA WHICH ARE CALLED WITHIN SUBROUTINES WHICH /DO NOT CALL SUBROUTINES WHICH CALL THESE STORAGE REGISTERS / /XXX IS CALLED WITHIN THE FOLLOWING SUBROUTINES / /D,D/RX-ERROR (2) /COMPARE (2) /XGETPATTERN (6) /RDORWR (2) / XXX, 0 / R1RETRY, -13 /WERRORS /PARITY ERROR RECOVERY R2RETRY, -13 /RERRORS /PARITY ERROR RECOVERY DWSLOG, 0 /DATAERRORS /DATA ERROR WITH CRC STATUS ERROR DNSLOG, 0 /DNSERRORS /DATA ERROR BUT NO CRC STATUS ERROR SNDLOG, 0 /SNDERRORS /CRC STATUS ERROR BUT NO DATA ERROR SRETRY, -13 /SERRORS /SEEK ERROR RECOVERY PRETRY, -13 /PERRORS /PARITY ERROR RECOVERY / (TRACKS) ARE SET TO THE NEGATICE DIFFERENCE BETWEEN (OD) AND (ID) / IN THE SUBROUTINE " INITTRACKS " TRACKS, -115 / -# OF TRACKS PER DISKETTE (-115 TO -1 DYNAMIC DECREMENT) TTRACKS, 115 / # OF TRACKS PER DISKETTE (115 TO 1 STATIC) XTARGET, 0 / ; (AC) = TRACK+SECTOR AT IOT LCD=8; DESTINATION ECOMMAND, 0 H1, 0 GOBIT, 0 / > 0 MEANS EXPECTING AN RX01 PI <= 0 MEANS NOT EXPECTING / / (PAT-SUMCHECK) IS A NUMBER GENERATED WITHIN SUBROUTINE " XGETAPATTERN " /EQUIVALENT TO SUMCHECK OF 60/124 [ 12/8 BIT MODE ] DATA WORDS / PATSUMCHECK, 0 / / (WORDX) IS AN ADDRESS WHOSE CONTENTS = : (PAT-SUMCHECK) + (WBUFFER) + (WBUFFER+1) / / (WORDY) IS AN ADDRESS FOR WHICH THE CONTENTS REPRESENT THE NEATIVE-1 /OF 2 TIMES THE CONTENTS OF THE ADDRESS WITHIN PROGRAM LOCATION " WORDX " / /THE CONTENTS OF BOTH WORDX AND WORDY ARE GENERATED WITHIN SUBROUTINE " XGETASECTOR " / WORDX, 0 WORDY, 0 LSB, 0 MSB, 0 TTYBUSY, 0 PASS, 0 0 /PASS COUNT TO A MAGNITUDE OF 16777215(10) RXHERE, 0 / = 7000 IF AN RX01 IS NOT CABLED TO THE RX8 GOOD, 0 /EXPECTED RESULT EAC, 0 / (AC) AT ERROR "BAD" (ACTUAL RESULT) BLANK, 0 TEST, T0 /ADDRESS OF STARTING ADDRESS OF TEST /******************************************************************* /ADDITIONAL CALL FOR CONSOLE PACKAGE CKSWIT= JMS I . XCKSWIT /CHECK IF LAS TO USE LOC 22 OR HARDWARE K7000, 7000 K0007, 0007 XCNT, -1 FORCE=JMS I . XXFORCE /STARTING ADDRESS 200 - (AC) = STARTUP SWITCHES / /STARTING ADDRESS 201 - (AC) = RESTART (PARAMETERS ALREADY SELECTED AT START 200) / / *200 / /************* /CONSOLE /************* C8START, JMP .+2 /NORMAL PROGRAM ACTIVITY. JMP .+2 /RESTART WITH SAME PARAMETERS. /THIS SECTION IS NORMAL PROGRAM ACTIVITY. /DEVICE CODE 75 IS ASSUMED. ANY OTHER WILL CAUSE ERRORS. STA DCA A10 DCA TTYBUSY DCA BUSY DCA GOBIT BELL, DCA PASS DCA PASS+1 CDF 10 /CHANGE TO DATA FIELD OF CONSOLE PACKAGE DCA PASCNT /CLEAR CONSOLE PASS COUNTER CDF 0 /CHANGE BACK TO PROGRAM DATA FIELD TAD (-40) DCA HANGER DCA SSTART DCA TARGET TAD A10 SNA CLA JMP AROUND /USE EXISTING PARAMETERS. /*********************** JMS PNTID /PRINT ID AND REMOVE DIAGNOSTIC /*********************** CHECKC8 /CONSOLE ACTIVE XC8ENTR /ASK SR QUESTION. JMP .+2 HALT LAS /GET PARAMETERS. DCA DTESTP JMS CHNDEV /CHANGE DEVICE CODES. AROUND, TAD DTESTP /GET PARAMETERS CMA AND (7000 /MASK BITS 0-2 SNA CLA TAD (7000 DCA RXHERE / = 0 IF RX01 CABLED TO RX8 TAD DTESTP CMA AND (SW0+SW1) DCA UNITS / = UNITS(DRIVES) TO TEST JMS SELUNT /VT78/SELECT WHICH FLOPPY TO USE PRINT MDTESTP /TEST PARAMETER CONFIRMATION MESSAGE TY4OCT DTESTP /THE PROGRAM WILL VERIFY THAT THE CONTENTS OF PROGRAM LOCATIONS: / / OD, ID, FIRST, AND LAST / /WHICH ARE VARIABLE BY THE USER ARE WITHIN SELECTABLE LIMITS / / 0 <= OD <= 114 / TAD OD SMA CLA JMP .+3 TAD (52) DCA OD TAD (-114) TAD OD SMA SZA CLA JMP .-5 PRINT MOD TY4OCT OD / 0 <= ID <= OD / TAD ID SMA CLA JMP .+3 TAD (53) DCA ID TAD ID CIA TAD OD SZA SMA CLA JMP .-6 PRINT MID TY4OCT ID / 0 < (FIRST) <= 32 / TAD FIRST SZA SMA CLA JMP .+3 CLA CLL IAC DCA FIRST TAD FIRST TAD (-32) SZA SMA CLA JMP .-5 PRINT MFIRST TY4OCT FIRST JMP TADLAST /IF THE TELEPRINTER IS BUSY (TTYBUSY = X), AND / /IF A KEYBOARD FLAG HAS OCURRED, / /THEN STOP TELEPRINTER OUTPUTS (IF A KRB = S), OR / /THEN RESUME TELEPRINTER OUTPUTS (IF A KRB = Q /AND A PREVIOUS Q HAD OCURRED) / XKCC, KRB /READ THE KEYBOARD BUFFER STATIC AND (177 TAD (200 /MAKE IT 8 BIT CODE CDF 10 DCA I XC8CHAR /STORE IN FIELD ONE CHAR CDF 0 TAD TTYBUSY /=1 IF BUSY RTR SPA CLA /WAS TELEPRINTER BUSY? CMA /YES DCA INMODE /==NOT BUSY 7777=BUSY DCA TTYBUSY /CLEAR FLAG /******** /CONSOLE /******** C8TEST, CHECKC8 /CONSOLE ACTIVE. XC8ENTR /CHECK CONSOLE CONTROL CHARACTERS NOP CLA TAD INMODE SNA CLA /SKIP TO RESUME TYPEOUT JMP PIEXIT /EXIT DCA INMODE /CLEAR ACTIVE MESSAGE FLAG JMP XTCF /RESUME TYPEOUT XC8CHAR, C8CHAR /LOC IN FIELD 1 INMODE, 0 /MESSAGE ACTIVE FLAG /******** /CONSOLE /******** PAGE /PRETEST - INITIALIZE [KEY] PART I / FLAG DETECTION PART I / / (A) IF AN RX01 MICROCONTROLLER IS [NOT] CABLED TO THE RX8 INTERFACE, / THEN ALL FLAGS (DONE, TRANSFER REQUEST, AND ERROR), AND THE RX8 / INTERFACE TRANSFER REGISTER SHOULD HAVE BEEN CLEARED BY "KEY" / INITIALIZE (IF THEY WERE EVER SET). / / (B) IF AN RX01 MICROCONTROLLER [IS] CABLED TO THE RX8 INTERFACE, / THEN "KEY" INITIALIZE SHOULD HAVE [SET] THE DONE FLAG BECAUSE / ANY [INIT] OF THE RX01 MICROCONTROLLER IS AN IMPLIED [READ SECTOR] / OF TRACK 0 SECTOR 1 (FOR SYSTEM PROGRAMMING BOOTSTRAP APPLICATIONS). / / THEREFORE, ANY ERROR (EXCEPT PARITY) THAT MAY OCCUR FROM A NORMAL / "READ SECTOR" COMMAND MAY OCCUR HERE CAUSING THE ERROR FLAG TO SET, AND / DISPLAYING THE ERROR STATUS WITHIN THE TRANSFER REGISTER AT "DONE". / / THE TRANSFER REQUEST FLAG SHOULD BE CLEARED. / /NOTE: / /SCOPE LOOPING IS NOT OFFERED BECAUSE THE "INIT" FUNCTION / PRETEST, STA DCA FIRSTERROR /FOR FIRST ERROR EVER THIS PASS DCA ERRORS /CLEAR "ERRORS" FOR FIRST "SCOPE" EVER SCOPE /THIS "SCOPE" TO REFRESH "FAT" IF ERROR TAD PCSCOPE DCA TEST /TO REFRESH "FAT" FOR "ERROR" CAF /VT78/ CKUNIT /VT78/SETUP FOR UNIT A OR B STR OK E0PRE, ERROR /UNEXPECTED TRANSFER REQUEST FLAG SER OK E2PRE, ERROR /UNEXPECTED ERROR FLAG / /************************************************************************ /************************************************************************ / /IF AN RX01 MICROCONTROLLER [IS] CABLED TO THE RX8 INTERFACE /THEN THE DONE FLAG SHOULD BE SET / TAD RXHERE SZA CLA JMP NORX01 WAIT SDN JMP .-2 /WAIT FOR DONE FLAG SKP E3PRE, ERROR /MISSING DONE FLAG / /************************************************************************ /************************************************************************ /THE ENTIRE STATUS WORD IS DISPLAYED IN THE TRANSFER REGISTER AT ERROR/DONE TIME. / /IF AN RX01 CONTROLLER IS CABLED TO THE RX8 INTERFACE / (AND DRIVE 0 IS READY THEN THE STATUS SHOULD INDICATE " SEL DRV RDY "), ALSO /DELETED DATA [MAX] = 1 IF TRACK 0/SECTOR 1 WAS WRITTEN WITH DELETED DATA /AND "INIT DONE" SHOULD BE SET. / JMP TSTUNT /OFF PAGE BECAUSE OF ROOM. / / TAD (40 /PROGRAM EXPECTS DRIVE 0 TO BE READY / / ///////////////////////////////////////////////////////////////////////// / / 4 5 - - 8 9 10 11 / / / SEL WRITE INIT PAR / / DRIVE DD PROTECT [DONE] CRC / / RDY (N/A) / / ///////////////////////////////////////////////////////////////////////// / / CLL IAC RTL / 4 [INIT] DONE OR 204 NORX01, DCA GOOD XDRIN DCA BLANK /ACTUAL STATUS FROM [INIT] TAD BLANK AND COMP DCA EAC /STATUS MINUS DELETED DATA (BIT 5) TAD EAC CIA TAD GOOD /EXPECTED SNA CLA JMP .+3 /OK TAD EAC E1PRE, ERROR / [INIT] STATUS NOT = EXPECTED / /IF AN RX01 MICROCONTROLLER [IS] CABLED TO THE RX8 INTERFACE /THEN THE PREVIOUS "SDN" SHOULD HAVE CLEARED THE DONE FLAG, BUT / /IF AN RX01 MICROCONTROLLER IS [NOT] CABLED TO THE RX8 INTERFACE /THEN "KEY" INITIALIZE SHOULD HAVE CLEARED THE DONE FLAG / /TECHNICAL NOTE: / /IF THE DONE FLAG IS SET, AND IF THE INTERRUPT ENABLE FLIP-FLOP IS SET ILLEGALLY, /THEN AN "UNEXPECTED RX01 INTERRUPT" WILL OCCUR IN T0 (IF AN RX01 CONTROLLER / [IS] CABLED TO THE RX8 INTERFACE) OR IN T1 WHEN THE MAINTENANCE FLIP- /FLOP "SETS ALL FLAGS" / SDN OK E4PRE, ERROR /UNEXPECTED DONE FLAG / /END OF PRE-TEST / JMP REBEGIN / MORETESTS, LOCKUP FIRSTTEST, DCA ERRORS TAD I A13 DCA TEST / FAT (FIRST ADDRESS OF TEST) TAD TEST DCA PCSCOPE / EQUIVALENT TO " SCOPE " DCA WUNITS /FOR FIRST ENTRY INTO XGETUNIT THIS TEST JMP I TEST / /THERE ARE NO MORE TESTS / /PRINT AN END OF PASS INDICATOR / / A - INTERFACE TEST OK (ONLY RX8 TO TEST) / C - RX8 AND RX01 TEST OK / D - RX8 AND RX01 AND DRIVE TESTING OK / / - - AN ERROR OCURRED (DURING A, B, OR D) / XD=400 ISZ CHECKU /VT78/ARE WE DONE ALL SELECTED UNITS? JMP NXTUNT /VT78/NO - DO NEXT UNIT TAD (XD) NOMORETESTS, DCA MX / (XI), (XC), (XD), OR 0 JMS SELUNT /RESET UNIT COUNTER(CHECKU) / /NOTE:IF THE CONTENTS OF PROGRAM LOCATION FIRSTERROR = 0 /THEN AN ERROR HAS OCCURRED FOR THIS PASS / TAD FIRSTERROR SZA CLA JMP .+3 TAD (5500) DCA MX / - /************* /CONSOLE /******** CHECKC8 C8PASS JMP C8RET2 / /************* PRINT MX ISZ PASS JMP .+3 ISZ PASS+1 NOP LAS AND (SW3) SZA CLA HALT REBEGIN, TAD DTESTP AND (37) TAD (TESTS-1) DCA A13 STA DCA FIRSTERROR /FIRST ERROR SWITCH FOR EACH PASS CLA CLL CMA DCA CLKCNT /FOR APT TIMING JMP FIRSTTEST / MX, TEXT "I" / I, C, OR D NXTUNT, CLA IAC DCA UNITCK /SET UP TO TEST UNIT B JMP PRETEST /START OVER /****************************************** /ROUTINTE FOR CONSOLE PASS C8RET2, ION /CONSOLE PASS ISZ PASS JMP .+3 ISZ PASS+1 NOP JMP REBEGIN /CONTINUE WITH PROGRAM RETURN /:***************************************** PAGE /TEST 0 - FLAG DETECTION PART II / " C " LINES VERIFICATION PART I / /********************************************************************* /********************************************************************* / /IF AN RX01 MICROCONTROLLER IS CABLED TO THE RX8 INTERFACE /THEN DON'T EXECUTE THIS TEST /BECAUSE ISSUING THE IOT LCD WITH THE AC = 177 /RESEMBLED A COMMAND TO THE RX01 / T0, TAD RXHERE SNA CLA NOTEST DCA GOOD /*************************************************************************** /*************************************************************************** / /THE PURPOSE OF THIS TEST IS TO VERIFY THAT THE LCD (LOAD COMMAND REGISTER) /IOT 67X1 DOES [NOT] SET THE MAINTENANCE FLIP-FLOP WHEN THE CONTENTS /OF THE AC = 177 AT THE TIME THE IOT IS ISSUED. / / /TECHNICAL NOTE: / /IF AN ERROR OCCURS, THEN IT IS ASSUMED [KEY] INIT FAILED TO CLEAR THE /MAINTENANCE FLIP-FLOP, OR, THAT THE ISSUING OF THE LCD IOT REALLY / [SET] THE MAINTENANCE FLIP-FLOP INSTEAD OF [CLEARING]. / / " C " LINES VERIFICATION PART I / TAD (177) LCD /MAINTENANCE MODE /THE (AC) SHOULD = 0 BECAUSE IOT LCD 67X1 SHOULD CLEAR THE AC / SZA E0, ERROR / IOT 67X1 DID NOT CLEAR THE AC SUBSCOPE / /FLAG DETECTION PART II / /THE PURPOSE OF THIS TEST IS TO VERIFY THAT ISSUING IOT LCD 67X1 WITH /THE AC = 1777 DOES NOT SET THE MAINTENANCE FLIP-FLOP /WHICH IN TURN WOULD SET ALL FLAGS / /THEREFOR ALL FLAGS SHOULD BE CLEARED / STR OK E1, ERROR /UNEXPECTED TRANSFER REQUEST FLAG SUBSCOPE SER OK E2, ERROR /UNEXPECTED ERROR FLAG SUBSCOPE SDN OK E3, ERROR /UNEXPECTED DONE FLAG SCOPE EXIT /END OF TEST 0 / /TEST 1 - DIRECTION OF IOT XDR (67X2) PART I / IOT DECODING PART I / / - " C " LINES VERIFICATION PART II / /THE PURPOSE OF THIS TEST IS TO VERIFY THAT /ISSUING IOT XDR (TRANSFER DATA REGISTER) 67X2 DOES [NOT] CLEAR /THE MAINTENANCE FLIP-FLOP / /TECHNICAL NOTE: / /IF THE CONTENTS OF THE TRANSFER REGISTER IS NOT = 200, THEN IT MUST /BE ASSUMED THAT THE SECOND LCD IOT CLEARED THE MAINTENANCE FLIP-FLOP /OR THAT IOT XDR CLEARED THE MAINTENANCE FLIP_FLOP / T1, DCA GOOD TAD (200) LCD /MAINTENANCE MODE /THE (AC) SHOULD = 0 AFTER ISSUING IOT LCD 67X1 SZA E11, ERROR /IOT LCT 67X1 FAILED TO CLEAR AC SUBSCOPE / TAD (200) LCD /MAINTENANCE MODE , AGAIN XDRIN /CONTENTS OF TRANSFER REGISTER DCA EAC /SAVE TAD EAC TAD (-200) /COMPARE WITH "EXPECTED" SNA CLA JMP .+5 / OK TAD (200) DCA GOOD / "EXPECTED" RESULT TAD EAC / "ACTUAL" RESULT E10, ERROR /TRANSFER REGISTER NOT =200 SCOPE EXIT /END OF TEST 1 /TEST 2 - FLAG DETECTION PART III / " C " LINES VERIFICATION PART III / / (A) THE SETTING OF THE MAINTENANCE FLIP-FLOP SHOULD "DIRECT SET" ALL / FLAGS (DONE, TRANSFER REQUEST, AND ERROR). / / (B) IF AN RX01 MICROCONTROLLER [IS] CABLED TO THE RX8 INTERFACE, / THEN THE SETTING OF THE MAINTENANCE FLIP-FLOP WILL ASSERT THE "RUN" / LINE (RESEMBLING A FILL BUFFER COMMAND) THUS CAUSING THE RX01 / CONTROLLER TO SETUP FOR A "FILL BUFFER", BUT, HOWEVER, BECAUSE THE / MAINTENANCE FLIP-FLOP [IS] SET, THE RX8 INTERFACE RECEIVERS / SHOULD BE DISABLED AND NOT REACTIVE TO THE RX01 MICROCONTROLLER. / /WITH ALL FLAGS SET, THE RX8 INTERFACE IOT'S: / / SDN - "SKIP ON DONE" (67X5), AND / SER - "SKIP ON ERROR" (67X4), AND, / STR - "SKIP ON TRANSFER REQUEST" (67X3) SHOULD SKIP / /TECHNICAL NOTE: / /IF FLAGS ARE "MISSING", IS THE MAINTENANCE MODE FLIP-FLOP REALLY SET ? / T2, TAD (200) LCD /MAINTENANCE MODE SDN E20, ERROR /MISSING DONE FLAG SUBSCOPE STR E21, ERROR /MISSING TRANSFER REQUEST FLAG SUBSCOPE SER E22, ERROR /MISSING ERROR FLAG SUBSCOPE / /ALL FLAGS SHOULD REMAIN " DIRECT SET " /BECAUSE THE MAINTENANCE FLIP-FLOP SHOULD STILL BE SET / /TECHNICAL NOTE: / /IF THE FLAGS ARE "MISSING" THEN IT IS ASSUMED THAT THE PREVIOUS /FLAG TESTING ACTUALLY [CLEARED] THE FLAGS. / SDN E23, ERROR /MISSING DONE FLAG SUBSCOPE STR E24, ERROR /MISSING TRANSFER REQUEST FLAG SUBSCOPE SER E25, ERROR /MISSING ERROR FLAG SUBSCOPE / " C " LINES VERIFICATION PART III / /THE FOLLOWING RX8 INTERFACE IOT'S SHOULD NOT CLEAR THE AC: / /IOT'S: SDN(67X5), SER(67X4), OR STR(67X3) / STA DCA GOOD TAD GOOD K67X5B, 6755 NOP SNA CLA E26, ERROR / IOT SDN (67X5) CLEARED THE AC SUBSCOPE TAD GOOD K67X3B, 6753 NOP SNA CLA E27, ERROR / IOT STR (67X3) CLEARED THE AC SUBSCOPE TAD GOOD K67X4B, 6754 NOP SNA CLA E28, ERROR / IOT SER (67X4) CLEARED THE AC SCOPE EXIT / END OF TEST 2 /TEST 3 / /RX8 IOT DEVICE CODE VERIFICATION / /THE PURPOSE OF THIS TEST IS TO VERIFY THAT ONLY THE DEVICE CODE SELECTED /BY THE OPERATOR (AC SWITCHES 3-4-5 AT THE START OF THE PROGRAM) IS ACTIVE. / /FIRST SET THE MAINTENANCE FLIP-FLOP, WHICH HAS PREVIOUSLY BEEN VERIFIED TO /DIRECT SET ALL FLAGS, THEN SEQUENCE THROUGH ALL DEVICE CODES (EXPECT THE /DEVICE CODE SELECTED AT THE START OF THIS PROGRAM) BY ISSUING IOT SDN 67X5 / (SKIP ON DONE FLAG), WHICH HAS ALSO PREVIOUSLY BEEN VERIFIED TO "SKIP AND /CLEAR" SUCESSFULLY. / /NOTE: / /THE PROGRAM DOES NOT ISSUE THE DEVICE CODE 67X5 WHERE X = POSITION OF AC /SWITCHES 3-4-5 AT THE START 200 OF THIS PROGRAM. /**************************************************************** /****************************************************************** /THIS TEST HAS BEEN REMOVED /THIS TEST IS NOT NEEDED IN A SYSTEM ENVIRONMENT. /TO REPLACE TEST T3 CHANGE LOCATIONS: / LOCATION FROM TO / -------- ---- -- / 734 5464 1367 / 767 XXXX 0200 /REMOVED MAY 16,1975 /// / T3, EXIT LCD / MAINTENANCE TAD K67X5A DCA GOOD TAD (-7) DCA A10 TAD (6705) DCACTIVE, DCA ACTIVE SCOPE /REFRESH PROGRAM LOCATION PCSCOPE TAD GOOD CIA TAD ACTIVE SNA CLA JMP NEXTACTIVE ACTIVE, 6775 JMP NEXTACTIVE TAD ACTIVE E30, ERROR SCOPE / (AC) = ILLEGAL DEVICE CODE NEXTACTIVE, TAD (10) TAD ACTIVE ISZ A10 JMP DCACTI EXIT /END OF TEST 3 PAGE /TEST 4 - TRANSFER REGISTER DIRECTION TESTING (PART II) / / - " C " LINES VERIFICATION PART IV / /WITH THE MAINTENANCE FLIP-FLOP SET THE PROGRAM WILL VERIFY THE DIRECTION /AND TRANSFER MODE (8-BIT MODE INCLUSIVE "OR", AND 12-BIT MODE "JAM") /TRANSFERS INTO THE ACCUMULATOR FROM THE RX8 TRANSFER REGISTER BY ISSUING /IOT "XDR" (TRANSFER DATA REGISTER) 67X2 AFTER PREVIOUSLY [LOADING] THE /TRANSFER REGISTER WITH THE CONTENTS OF THE ACCUMULATOR REPRESENTATIVE /OF THE FOLLOWING PATTERNS WHEN THE "LCD" IOT 67X1 IS ISSUED. / / (1) 200 - MAINTENANCE MODE / (2) 376 - / (3) 375 - / (4) 373 - (BYTES 2 THRU 7) / (5) 367 - (INCLUSIVE "OR") / (6) 357 - / (7) 337 - / (8) 7677 - (WORD - 8 "JAM") / /THE 1ST LCD IOT WILL BE ISSUED WITH THE AC = 200 WHICH INITIALLY SETS THE /MAINTENANCE FLIP-FLOP THEREBY GUARANTEEING THE CONTENTS OF THE TRANSFER /REGISTER [AFTER] EACH SUCCEEDING LCD IOT. / /LCD IOT'S 2 THRU 8 ARE ISSUED WITH THE ACCUMULATOR CONTAINING THE PATTERNS /DESCRIBED ABOVE. / /ALL PATTERNS EXCEPT WORD 8 (7677) TEST THE INCLUSIVE "OR" TRANSFER OF /THE RX8 INTERFACE TRANSFER REGISTER. WORD 8 TESTS THE 12-BIT "JAM" TRANSFER. / T4, TAD (200) LCD /MAINTENANCE MODE CLL STA RAR / 3777 DCA BLANK T4B, TAD BLANK STL SMA CLL RAL DCA BLANK SCOPE / REFRESH PROGRAM LOCATION PCSCOPE TAD BLANK / (BLANK) = (AC) BEFORE LCD IOT 67X1 LCD / T0 / / " C " LINES VERIFICATION PART IV / /THE PURPOSE OF THIS TEST IS TO VERIFY THAT SUCCEEDING LCD IOT'S(67X1) /TRANSFER THE (AC) INTO THE DATA REGISTER CLEARING THE ACUMULATOR / DCA EAC / (AC) AFTER ISSUING IOT LCD (67X1) DCA GOOD / PROGRAM EXPECTS AC = 0 TAD EAC SZA E42, ERROR / IOT LCD (67X1) DIDN'T CLEAR THE AC SUBSCOPE / /TRANSFER DIRECTION PART II / XDRIN / FROM DCA EAC TAD (100) AND BLANK CLL RTL RTL / LINK = 1 FOR 8 BIT MODE RTL TAD BLANK SZL AND (377) / 8-BIT BYTE "GOOD" MASK DCA GOOD TAD GOOD /EXPECTED RESULT CIA TAD EAC /ACTUAL RESULT SNA CLA JMP .+3 /COMPARED OK TAD EAC E40, ERROR / TRANSFER REGISTER NOT = "GOOD" /CHECK TO SEE IF RUNNING ON A VT78 SYSTEM JMS VT78CK /VT78/ RETURN +1 IF NOT VT78 JMP E41+1 /VT78 - SKIP FOLLOWING SUBTESTS SUBSCOPE / /THE TRANSFER REGISTER SHOULD REMAIN UNCHANGED /FROM THE PREVIOUS XDR IOT (NOT SO ON VT78) / XDRIN / FROM DCA EAC TAD EAC /ACTUAL CIA TAD GOOD /EXPECTED SNA CLA JMP .+3 /COMPARED OK TAD EAC E41, ERROR / TRANSFER REGISTER NOT = "GOOD" SCOPE TAD BLANK AND (100) SZA CLA JMP T4B /UNTIL (BLANK) = 7677 EXIT / END OF TEST 4 /TEST 5 / /RX8 IOT DECODING VERIFICATION PART II / /************************************************************************ /************************************************************************ / /IF AN RX01 CONTROL IS CABLED TO THE RX8 INTERFACE /THEN DON'T EXECUTE THIS TEST /BECAUSE THE CLEARING OF THE MAINTENANCE F/F /RESEMBLES A FILL BUFFER COMMAN D (NOT SO ON VT78) / /CHECK TO SEE IF RUNNING ON A VT78 SYSTEM JMS VT78CK /VT78/ RETURN +1 IF NOT VT78 JMP .+4 /VT78 -ALWAYS EXECUTE TEST T5, TAD RXHERE SNA CLA NOTEST DCA GOOD /************************************************************************ /************************************************************************ / /THE MAINTENANCE FLIP-FLOP HAS PREVIOUSLY BEEN VERIFIED TO SET AND CLEAR, /THE IOT UNDER TEST SHOULD "SKIP AND CLEAR" [ONLY] ITS RESPECTIVE FLAG, /ALL OTHER FLAGS SHOULD REMAIN UNCHANGED / / (I.E. THE SDN IOT 67X5 SHOULD SKIP AND CLEAR ONLY THE DONE FLAG, ALL /OTHER FLAGS SHOULD REMAIN SET) / TAD (200) LCD LCD /MAINTENANCE MODE / XI, XDRIN SZA E56, ERROR /TRANSFER REGISTER NOT = 0 SUBSCOPE SDN E50, ERROR /DONE FLAG WASN'T SET, OR SUBSCOPE /IOT LCD OR XDR CLEARED THE DONE FLAG SDN OK E53, ERROR SUBSCOPE /IOT SDN DIDN'T "SKIP AND CLEAR" STR E51, ERROR /TRANSFER FLAG WASN'T EVER SET, OR SUBSCOPE /IOTS LCD, OR SDN OR XDR CLEARED THE TR FLAG STR OK E54, ERROR SUBSCOPE /IOT STR DIDN'T "SKIP AND CLEAR" SER E52, ERROR /ERROR FLAG WASN'T EVER SET, OR SUBSCOPE /IOTS LCD OR SDN OR XDR OR STR CLEARED THE ERROR FLAG SER OK E55, ERROR SCOPE /IOT SER DIDN'T "SKIP AND CLEAR" EXIT / END OF TEST 5 /TEST 6 - INTERRUPT TEST PART I / IOT DECODING VERIFICATION PART III / /INTERRUPT TEST PART I / /THEN MAINTENANCE FLIP-FLOP HAS PREVIOUSLY BEEN VERIFIED TO DIRECT / [SET] ALL FLAGS AND THE INTERFACE IOT -SKIP ON DONE- "SDN" 67X5 WAS /FOUNT TO "SKIP AND CLEAR" SUCESSFULLY, / /FIRST SET THE MAINTENANCE FLIP-FLOP WHICH IN TURN SETS ALL FLAGS. / /THEN ISSUE IOT INTR 67X6 WITH THE AC = 0 [CLEARING] THE RX8 INTERRUPT ENABLE /NO INTERRUPT SHOULD OCCUR / T6, WAITTY TAD (E60) DCA IPI TAD (200) LCD INTR /INTERRUPT ENABLE FLIP-FLOP NOP /...WAIT / NOP /...PLENTY SKP /...OF TIME E60, ERROR /UNEXPECTED INTERRUPT SUBSCOPE / /************************************************************************ /************************************************************************ / /IF AN RX01 MICRO-CONTROLLER IS CABLED TO THE RX8 INTERFACE /THEN DON'T EXECUTE THE REMAINING PORTION OF THIS TEST /BECAUSE THE CLEARING OF THE MAINTENANCE FLIP-FLOP RESEMBLES A FILL BUFFER COMMAND /TO THE RX01 MICROCONTROLLER (NOT SO ON VT78) / /CHECK TO SEE IF RUNNING ON A VT78 SYSTEM JMS VT78CK /VT78/ RETURN +1 IF NOT VT78 JMP .+4 /VT78 -ALWAYS EXECUTE TEST TAD RXHERE SNA CLA NOTEST / /************************************************************************ /************************************************************************ / /IOT DECODING VERIFICATION PART III- IOT INTR 67X6 DECODING VERIFICATION / /TECHNICAL NOTE: / /ALL FLAGS SHOULD REMAIN SET /IF ANY FLAG IS MISSING, /THEN IT IS ASSUMED THAT IOT INTR 67X6 CLEARED THE FLAG(S) / LCD /MAINTENANCE MODE INTR /DISABLE THE INTERRUPT ENABLE F/F SDN E61, ERROR /MISSING DONE FLAG SUBSCOPE STR E62, ERROR /MISSING TRANSFER REQUEST FLAG SUBSCOPE SER E63, ERROR /MISSING ERROR FLAG SCOPE EXIT /END OF TEST 6 /ROUTINE TO CHECK IF RUNNING ON A VT78 SYSTEM / VT78CK, 0 TAD 22 /GET LOC 22 (HCW2) AND (1000 /TEST BIT 2 SNA CLA /IS THIS A VT78 SYSTEM? ISZ VT78CK /NO - BUMP RETURN JMP I VT78CK /RETURN PAGE / /TEST 7 - INTERRUPT TEST PART II / /INTERUPT TEST PART II / /THE MAINTENANCE FLIP-FLOP HAS PREVIOUSLY BEEN VERIFIED TO DIRECT / [SET] ALL FLAGS AND THE INTERFACE IOT -SKIP ON DONE- "SDN" 67X5 WAS /FOUND TO "SKIP AND CLEAR" SUCCESSFULLY. / /FIRST SET THE MAINTENANCE FLIP-FLOP /WHICH SHOULD DIRECT SET THE DONE FLAG, /THEN BY SETTING THE RX01 INTERRUPT ENABLE /BY ISSUING THE IOT "INTR" 67X6 WITH THE AC = 1, / /AN INTERRUPT REQUEST SHOULD BE ASSERTED. / /THE PROGRAM IS EXPECTING AN INTERRUPT. / /TECHNICAL NOTE: / /IF AN INTERRUPT DOES NOT OCCUR, THEN IT IS ASSUMED THAT ISSUING THE IOT / "INTR" 67X6 DID NOT SET THE RX8 INTERRUPT ENABLE, OR INTERRUPT REQUEST / T7, WAITTY TAD (200) LCD /MAINTENANCE TAD (T7OK) DCA IPI ION /*SEE FOOTNOTE NEXT PAGE CLA IAC INTR /RX01 INTERRUPT ENABLE NOP / NOP /PROGRAM NOTE: / /CLEAR PROGRAM LOCATION "GOBIT" BECAUSE THE TIME FOR THE INTERRUPT /TO OCCUR HAS EXPIRED (IF IT WAS EVER GOING TO OCCUR THAT IS) / DCA GOBIT E70, ERROR /MISSING INTERRUPT T7OK, SCOPE EXIT /END OF TEST 7 /TEST 10 / /INTERUPT TEST (PART III) / /IOT INTR 67X6 SHOULD CLEAR THE INTERRUPT ENABLE FLIP-FLOP, THEN / /WITH ALL FLAGS SET, NO INTERRUPTS SHOULD OCCUR / /TECHNICAL NOTE: / /IF AN UNEXPECTED PROGRAM INTERRUPT OCCURS FROM APPROXIMATELY THIS PC /THEN THE RX PROGRAM INTERRUPT REQUEST TOOK TOO LONG TO SET /FROM THE PREVIOUS TEST. / / * FOOTNOTE: / /THIS IOT "ION" IS ISSUED HERE BECAUSE - IF AN UNEXPECTED PROGRAM /INTERRUPT HAD OCCURRED IN THE PREVIOUS TEST AND AC SW3 = 1 DIRECTING /THE PROGRAM NOT TO PRINT AN ERROR - THEN THE PDP'S INTERRUPT FACILITY /WOULD BE - THEREFORE NEVER EXECUTING THIS TEST PROPERLY / T10, WAITTY INTR /DISABLE RX8 INTERRUPT ENABLE TAD (E100) DCA IPI ION / *SEE FOOTNOTE ABOVE TAD (200) LCD NOP SKP E100, ERROR /UNEXPECTED INTERRUPT SCOPE EXIT / END OF TEST 10 /TEST 11 / /INTERRUPT TEST (PART IV) / /************************************************************************ /************************************************************************ / /IF AN RX01 CONTROL IS CABLED TO THE RX8 INTERFACE /THEN DON'T EXECUTE THIS TEST /BECAUSE THE CLEARING OF THE MAINTENANCE F/F /RESEMBLES A FILL BUFFER COMMAND / /CHECK TO SEE IF RUNNING ON A VT78 SYSTEM JMS VT78CK /VT78/ RETURN +1 IF NOT VT78 JMP .+4 /VT78 -ALWAYS EXECUTE TEST T11, TAD RXHERE SNA CLA NOTEST /************************************************************************ /************************************************************************ / /TOGGLING THE MAINTENANCE MODE / SETS ALL FLAGS AND / /PERMITS IOT SDN TO CLEAR THE DONE FLAG / /THEREFOR NO INTERRUPTS SHOULD OCCUR (ONLY DONE FLAG RAISES AN INTERRUPT REQUEST) / / (EVEN THOUGH THE RX01 INTERRUPT ENABLE IS 1) / WAITTY / TAD (200) LCD LCD /MAINTENANCE MODE / SDN NOP / NOP /CLEAR THE DONE FLAG TAD (E110) DCA IPI CLA IAC INTR /RX01 INTERRUPT ENABLE NOP / NOP STL CLA RAR E110, INTR /RX01 INTERRUPT ENABLE TAD GOBIT SMA CLA ERROR /UNEXPECTED INTERRUPT SCOPE EXIT /END OF TEST 11 /TEST 12 - INITIALIZE TEST PART II [PROGRAMMED] / INTERRUPT TEST PART V / /************************************************************************ /************************************************************************ / /IF AN RX01 IS CABLED TO THE RX8 THEN DON'T EXECUTE T12 / /BUT EXECUTE ALT12 (THE ALTERNATIVE TEST) / T12, TAD RXHERE SNA CLA JMP ALT12 /************************************************************************ /************************************************************************ / /INTERRUPT TEST PART V / INITIALIZE TEST PART II [PROGRAMMED] / /THE PURPOSE OF THIS TEST IS TO VERIFY THAT IOT INIT CLEARS THE INTERRUPT /ENABLE FLIP-FLOP WHEN SET / TAD (E124) DCA IPI CLA IAC INTR / SET THE RX8 INTERRUPT ENABLE F/F INITB CKUNIT /VT78/SETUP FOR UNIT A OR B DCA GOBIT / ISSUE INIT IOT 67X7 /...BUT AN INTERRUPT SHOULD NOT OCCUR / /IF AN INTERRUPT OCCURS THEN IOT INIT FAILED TO CLEAR / /THE RX8 INTERRUPT ENABLE FLIP-FLOP / TAD (200) LCD LCD /MAINTENANCE MODE / / /THE DONE FLAG SHOULD BE SET, BUT NO INTERRUPTS SHOULD OCCUR / STL CLA RAR E124, INTR / RX8 INTERRUPT ENABLE TAD GOBIT SMA CLA ERROR / IOT INIT 67X7 DID NOT CLEAR THE IE F/F SUBSCOPE / /IOT "INIT" 67X7 SHOULD CLEAR THE RX8 INTERFACE TRANSFER REGISTER, THE /MAINTENANCE FLIP-FLOP, AND ALL FLAGS (DONE, TRANSFER REQUEST, AND ERROR). / STA LCD /ALL 1'S TO TRANSFER REGISTER INITB / IOT 67X7 CKUNIT /VT78/SETUP FOR UNIT A OR B SDN OK E120, ERROR /UNEXPECTED DONE FLAG SUBSCOPE STR OK E121, ERROR /UNEXPECTED TRANSFER REQUEST FLAG SUBSCOPE SER OK E122, ERROR /UNEXPECTED ERROR FLAG SUBSCOPE DCA GOOD / PROGRAM EXPECTS TRANSFER REGISTER = 0 XDRIN SZA E123, ERROR /TRANSFER REGISTER NOT = 0 SCOPE / /************************************************************************ /************************************************************************ / /NO MORE RX8 INTERFACE TESTS EXIST / /IF AN RX01 CONTROL IS CABLED TO THE RX8 INTERFACE / /THEN CONTINUE WITH THE NORMAL FLOW OF TESTING / X1=1100 / / END OF PASS " 1 " / LOCKUP TAD (XI) JMP NOMORETESTS /************************************************************************ /************************************************************************ XSCOPE, . CLA CLL TAD ERRORS SZA CLA JMP SCOPING /NO ERROR HAS BEEN DETECTED HERE / /JUST SET (PCSCOPE)=THE FIRST ADDRESS OF THE SCOPE LOOP / / (IN CASE ANY ERRORS ARE EVER DETECTED LATER) / NOSCOPE, DCA ERRORS TAD XSCOPE DCA PCSCOPE JMP I XSCOPE / " SUBSCOPE " / XSSCOPE, . TAD XSSCOPE DCA XSCOPE TAD ERRORS SNA CLA JMP I XSCOPE /ERRORS DO EXIST / /IF THIS ERROR IS THE SAME AS THE ADDRESS WITHIN THE PROGRAM LOCATION /PCSSCOPE, THEN THIS IS A SCOPE LOOP / /IF NOT, THEN EXIT / TAD XSCOPE CIA TAD EPCSCOPE SZA CLA JMP I XSCOPE /THIS IS A SCOPING LOOP / SCOPING, LAS /TEST BIT 1 RAL SMA CLA JMP NOSCOPE JMP I PCSCOPE EPCSCOPE, 0 /ADDRESS +1 OF "SCOPE" OR "SUBSCOPE" ERRORS, 0 / > 0 IF AN ERROR HAS BEEN DETECTED (FOR THIS TEST) PCSCOPE, 0 / FIRST ADDRESS OF SCOPE LOOP PAGE /ALTERNATE TEST 12 - VERIFICATION OF [INIT] / /INITIALIZE TEST PART II / /THIS TEST IS EXECUTED IN PLACE OF T12 / /BECAUSE AN RX01 CONTROLLER IS CABLED TO THE RX8 INTERFACE / /IOT "INIT" 67X7 WILL PERFORM AN IMPLIED READ OF TRACK 0 SECTOR 1 / / (IF DRIVE 0 IS READY) / /THEREFORE THE DONE FLAG SHOULD SET AT THE END OF THAT IMPLIED READ. / /TECHNICAL NOTE: / /IF AN ERROR FLAG IS SET (AND DRIVE 0 IS READY) THEN THE ERROR MAY HAVE /BEEN THE RESULT FROM THE (IMPLIED READ SECTOR 0) / ALT12, SCOPE INITB CKUNIT /VT78/SETUP FOR UNIT A OR B ALT12LOOP, STR SKP JMP EA120 /UNEXPECTED TRANSFER REQUEST FLAG SDN JMP ALT12LOOP /WAIT FOR THE DONE FLAG STR OK EA120, ERROR /UNEXPECTED TRANSFER REQUEST SUBSCOPE SER OK EA121, ERROR /UNEXPECTED ERROR FLAG SUBSCOPE TAD UNITS /UNITS SELECTED BY OPERATOR SPA CLA TAD (40 /PROGRAM EXPECTS DRIVE 0 TO BE READY / / ///////////////////////////////////////////////////////////////////////// / / 4 5 - - 8 9 10 11 / / / SEL WRITE INIT PAR / / DRIVE DD PROTECT [DONE] CRC / / RDY (N/A) / / ///////////////////////////////////////////////////////////////////////// / / CLL IAC RTL / 4 [INIT] DONE, OR 204 DCA GOOD XDRIN / "ACTUAL" STATUS AT DONE DCA BLANK TAD BLANK AND MASK /7677 FOR STANDARD 8 - 277 FOR VT78 DCA EAC / "ACTUAL" STATUS MINUS DELETED DATA (IF ANY) TAD EAC CIA TAD GOOD /EXPECTED STATUS SNA CLA JMP .+3 /COMPARED OK TAD EAC EA122, ERROR /TRANSFER REGISTER NOT = "GOOD" SUBSCOPE /NOTE:DRIVES UNDER TEST MUST HAVE DOORS OPEN / /READ THE B-CODE STATUS AND EXPECT = 0 / /PROGRAMMING NOTE: / /THE PROGRAM SAVES THE CONTENTS OF "GOOD" FOR REFERENCES WITHIN SUBROUTINE "XRST" / /BECAUSE "GOOD" IS REFRESHED WITHING PROGRAM SUBROUTINE "XRSTB" / TAD GOOD DCA BLANK RSTB SNA CLA JMP .+4 DCA GOOD /PROGRAM EXPECTS 0 TAD EAC EA123, ERROR /B-CODE NOT = 0 SUBSCOPE / /READ THE CONTENTS OF THE RX01 STATUS REGISTER USING THE COMMAND # 5 / /THIS STATUS SHOULD = THE STATUS IN THE TRANSFER REGISTER AT ERROR/DONE / RST / "READ STATUS" (COMMAND #5) / EXIT / END OF TEST ALT12 (TEST 12) /THE PURPOSE OF THESE TESTS IS TO VERIFY THE TRANSFER LENGTH OF THE FUNCTION / "FILL BUFFER" AND "EMPTY BUFFER" OF THE RX01 MICROCONTROLLER / /64 TRANSFERS SHOULD OCCUR FOR 12-BIT MODE, AND /128 TRANSFERS SHOULD OCCUR FOR 8-BIT MODE / /THE SECTOR BUFFER IS FILLED WITH A COUNT PATTERN / / WORD/BYTE 0 = 0 / / WORD 2 = 0202 / BYTE 2 = 2 / / WORD 77 = 7777 / BYTE 177 = 177 / /FILL BUFFER 8-BIT MODE / T16, TAD (100) / /FILL BUFFER 12-BIT MODE / T13, LCD /ISSUE THE COMMAND TAD (100) AND COMMAND SZA CLA CLL CLA IAC RTL / 4 TAD (6000) DCA TESTP GETAPATTERN TAD (WBUFFER-1) DCA A10 /PROGRAMS "WRITE" BUFFER TAD (-WBUFFER+1) DCA XA10 / -STARTING ADDRESS OF WRITE BUFFER FB, JMS FBEB EXIT / ** END OF TESTS 13, OR 16 TAD I A10 XDROUT JMP FB / AND "FILL THE BUFFER" / FILL / EMPTY BUFFER SUBROUTING FOR TESTS: *** 13, 16, / 14, 17 *** / FBEB, . STR JMP .+3 /WAIT FOR TRANSFER REQUEST FLAG ISZ FBEB JMP I FBEB SDN JMP FBEB+1 /WAIT FOR THE DONE FLAG DCA 6 /FIRST TIME FOR WAIT. TAD COMMAND DCA BLANK SER OK E130, ERROR /UNEXPECTED ERROR FLAG SUBSCOPE / / 64 OR 128 BYTES SHOULD HAVE BEEN TRANSFERRED IN OR OUT / TAD (100) AND COMMAND / 200 FOR 8-BIT MODE TAD (100) DCA GOOD TAD GOOD CIA / 100 FOR 12-BIT MODE TAD A10 TAD XA10 SZA /SKIP IF TRANSFERS OK E131, ERROR / (AC) = - # MEAN NOT ENOUGH TRANSFERS SCOPE / (AC) > 0 MEANS TOO MANY TRANSFERS JMP I FBEB /RETURN IS TO EXIT /****************** /CONSOLE PACKAGE /****************** /************ /CONSOL /************ PNTID, 0 /PRINT BEGIN MESSAGES CAF /TO REPLACE A CLEAR SWITCH APT8 /TEST FOR APT SYSTEM. PRINT MIDENTIFICATION /ID MESSAGE PRINT REMOVE /REMOVE DIAGNOSTIC DISKETTE PRINT MSELECT /SELECT PARAMETERS CLA DCA UNITCK /CLEAR IT JMP I PNTID /EXIT PNTID / / / / / /ROUTINE TO DETERMINE IF ON APT-8. IF APT-8 IS SELECTED /THEN CONSOLE AND TEST PARAMETER SELECTION FUNCTIONS ARE NOP, /IF NOT ROUTINE IS NOP. / XAPT8, 0 CLA CLL CHEK22 SKP /ON APT-8 JMP I XAPT8 TAD 22 AND K7377 /NOP CONSOLE PACKAGE DCA 22 /RESTORE 22 TAD K7000 DCA I HLTNOP TAD 20 /GET TEST PARAMETERS, JMP AROUND-2 /MAIN FLOW OF PROGRAM. K7377, 7377 HLTNOP, C8RET4-1 PAGE /SECTOR BUFFER ADDRESSING VERIFICATION TESTS / /OPERATIONAL NOTE: / / (1). FOR TEST 14 TO EMPTY THE BUFFER IN 12-BIT MODE SUCESSFULLY, TEST 13 / MUST HAVE FILLED THE BUFFER IN 12-BIT MODE SUCESSFULLY. / / (2). FOR TEST 17 TO EMPTY THE BUFFER IN 8-BIT MODE SUCESSFULLY, TEST 16 / MUST HAVE FILLED THE BUFFER IN 8-BIT MODE SUCESSFULLY / /THE PURPOSE OF THESE TESTS IS TO VERIFY THAT THE CONTENTS OF THE SECTOR /BUFFER REMAIN UNCHANGED AFTER THE PREVIOUS EMPTY BUFFER 8-BIT MODE TEST, AND /AFTER THE PREVIOUS EMPTY BUFFER 12-BIT MODE TEST / T20, SKP /VERIFY EMPTY BUFFER 8-BIT MODE / T15, SKP /VERIFY EMPTY BUFFER 12-BIT MODE / /THE PURPOSE OF THESE TESTS IS TO VERIFY THE CONTENTS OF THE SECTOR BUFFER AFTER /THE PREVIOUS FILL BUFFER 8-BIT MODE TEST, AND THE PREVIOUS FILL BUFFER /12-BIT MODE TEST. / /EMPTY BUFFER 8-B IT MODE / T17, TAD (40 / /EMPTY BUFFER 12-B IT MODE / T14, CLL IAC RAL LCD /ISSUE THE COMMAND 2 OR 102 TAD (100) AND COMMAND SZA CLA CLL CLA IAC RTL TAD (6000) DCA TESTP GETAPATTERN /COUNT PATTERN (PATTERN #6) TAD (RBUFFER-1) DCA A10 /PROGRAMS "READ" BUFFER TAD (-RBUFFER+1) DCA XA10 / -STARTING ADDRESS OF READ BUFFER TAD A10 DCA A11 / EB, JMS FBEB JMP EBCOMPARE DCA I A10 XDRIN DCA I A11 / AND "EMPTY THE BUFFER" JMP EB /COMPARE THE CONTENTS OF THE SECTOR BUFFER / /WITH THE GOOD DATA IN "WBUFFER" / EBCOMPARE, TAD (WBUFFER-1) DCA XA10 /EXPECTED TAD (RBUFFER-1) DCA XA11 /ACTUAL DCA COMPRERROR / = 1 IF COMPARE ERROR EBLOOP, ISZ XA10 ISZ XA11 CLL TAD (100) AND COMMAND SZA CLA STL /SET LINK IF 8-BIT MODE TAD I XA10 SZL AND (377) DCA GOOD TAD GOOD CIA TAD I XA11 SNA CLA JMP EBOK /A COMPARE ERROR HAS OCCURRED / /INCORRECT DATA WAS TRANSFERRED FROM THE RX01 CONSTROL SECTOR BUFFER /TO THE RX8 INTERFACE AND SAVED WITHIN PROGRAM LOCATIONS BEGINNING WITH "RBUFFER" / /THAT DATA, HOWEVER, MAY HAVE BEEN TRANSFERRED INCORRECTLY, *TO* /THE RX01 CONTROL FROM THE RX8 INTERFACE PREVIOUSLY WITHING T12, OR T13 / TAD (-WBUFFER) TAD XA10 DCA BLANK TAD I XA11 /ACTUAL WORD/BYTE FROM SECTOR BUFFER E140, ERROR /IS NOT = EXPECTED SCOPE EBOK, TAD (100) AND COMMAND TAD (100) CIA TAD XA10 TAD (-WBUFFER+1) SZA CLA JMP EBLOOP /END OF TESTS 14, 15, 17, OR 20 / /...ALSO / /END OF TESTS 31, 32, OR 33 / EXIT / /SECTOR BUFFER DATA TESTING / /THE PURPOSE OF THESE TESTS IS TO VERIFY THAT ALL 1'S AND ALL 0'S CAN BE /SET INTO THE SECTOR BUFFER / /SECTOR BUFFER DATA TESTING / /FILL THE SECTOR BUFFER WITH ALL 1'S / T22, TAD (377) / " GOOD " - ALL 1'S / /FILL THE SECTOR BUFFER WITH ALL 0'S / /FILL THE SECTOR BUFFER WITH 128 BYTES OF "GOOD" / T21, JMS FB128BYTES JMS TX / "GOOD" = ALL 0'S /************************************************************************ /************************************************************************ / /IF THIS IS TEST #22 / /THEN TEST FOR A DRIVE SELECTION / /IF NO DRIVES ARE ENABLED WITHIN PROGRAM LOCATION " DTESTP " / /THEN THERE ARE NO MORE RX01 CONTROL TESTS TO EXECUTE / TAD TEST TAD (-T22) SZA CLA EXIT / END OF TEST 21 TAD UNITS SZA CLA EXIT / END OF TEST 22 XC=300 / / END OF PASS " C " / CLL CLA CMA DCA COUNT /INIT TIMING FOR APT IF ONLY /INTERFACE IS TO BE TESTED. JMS XTICK LOCKUP TAD (XC) JMP NOMORETESTS /************************************************************************ /************************************************************************ T24, CLA STL IAC RTL JMP IRDWR / 6 (READ) T25, CLL CLA IAC RTL JMP IRDWR / 4 (WRITE) T26, TAD (14) JMP IRDWR / 14 (WRITE DELETED DATA) / /THE PURPOSE OF THESE TESTS IS TO VERIFY /THE RX01 CONTROL CLOCK SET OF THE ERROR FLAG / /BY FORCING A SEE ERROR TO OCCUR / (ATTEMPTING TO PERFORM A FUNCTION ON AN NON-EXISTANT SECTOR 0) / /NOTE:THE CONTENTS OF THE SECTOR BUFFER SHOULD REMAIN UNCHANGED AND CONTAIN / THE PATTERN OF ALL 1'S AS FILLED WITHIN TEST 22 BECAUSE THE READ SHOULD / HAVE NEVER OCCURRED. / / 1. THE STATUS WITHIN THE TRANSFER REGISTER AT ERROR SHOULD = 0 / 2. THE B-CODE STATUS SHOULD = 70 (UNABLE TO FIND SECTOR) / 3. THE STATUS FROM THE RST COMMAND (12) SHOULD = DRIVE READY (200) / /THE LENGTH (# OF TRANSFERS TO THE RX01 CONTROL) SHOULD BE TWO / (ONE EACH FOR THE SECTOR AND FOR THE TRACK) / /GET THE ONE UNIT ONLE (UNIT 1 IF UNIT 0 IS NOT READY) / /ROUTINE TO WAIT FOR SKIP ON AN IOT. IF SKIP DOES NOT OCCUR /THE ROUTINE WILL PRINT PC POINT IN ERROR AND GO BACK ABOUT ITS /BUSINESS. / XWAIT, 0 TAD 6 SNA CLA JMP .+3 STA DCA 6 ISZ H1 JMP I XWAIT ISZ HANGER JMP I XWAIT TAD XWAIT /GET ERROR PC TAD (-E3PRE SPA CLA /DID CALL COME FROM PRETEST. JMP E3PRE /YES. REPORT ERROR. TAD XWAIT /GET BACK ERROR JMP HUNGUP / PAGE IRDWR, DCA COMMAND DCA WUNITS GETUNIT TAD COMMAND TAD UNIT DCA BLANK TAD BLANK LCD / 6, 4, OR 14 DCA EAC JMP .+3 ISZ EAC XDROUT STR SKP JMP .-4 /SECTOR 0 - TRACK 0 SDN JMP .-4 /WAIT FOR DONE FLAG CLL STA RAL TAD EAC SNA CLA JMP .+5 CLL CLA IAC RAL DCA GOOD / 2 TRANSFERS WERE EXPECTED TAD EAC E240, ERROR / # OF TRANSFER REQUEST FLAGS NOT OK SUBSCOPE / (AC) = # OF TRANSFERS OCCURRED / /THE ERROR FLAG SHOULD = 1 / SER E245, ERROR /MISSING ERROR FLAG SUBSCOPE /IF THIS IS T24, THEN DELETED DATA [MAY] BE SET (BUT THAT'S OK FOR NOW), /THE STATUS AT ERROR SHOULD = X (100 MAYBE DELETED DATA)+200 DRIVE READY / /IF THIS IS T25, THEN DELETED DATA [SHOULD NOT] BE SET, THEREFORE /THE CONTENTS OF THE TRANSFER REGISTER (THE STATUS AT THE ERROR) SHOULD = 200 / /IF THIS IS T26, THEN DELETED DATA [MUST] BE SET, THEREFORE /THE STATUS SHOULD = 300 (200 DRIVE READY)+(100 DELETED DATA) / TAD TEST /FOR T # TAD (-T25 SNA CLA JMP .+5 / T25 THEN " JUMP .+5 " TAD TEST TAD (-T26 SNA CLA TAD (100) / T26 MEANS EXPECT DELETED DATA DCA GOOD / T24 XDRIN /ACTUAL STATUS DCA BLANK TAD BLANK AND (377 /VT78/ DCA EAC / /IF THIS IS T24, THEN DELETED DATA [MAY] BE SET (BUT THAT'S OK FOR NOW) / TAD TEST / FOR T # TAD (-T24 SZA CLA / T24 ? JMP .+4 TAD MASK / YES AND BLANK /ACTUAL STATUS MINUS DELETED DATA DCA EAC TAD EAC CIA TAD GOOD /EXPECTED SNA CLA JMP .+3 TAD EAC E241, ERROR /STATUS NOT = "GOOD" SUBSCOPE / /THE B-CODE SHOULD = 70 (UNABLE TO FIND SECTOR) / RSTB /RETURN WITH AC = CODE TAD (-70) SNA CLA JMP .+5 TAD (70) DCA GOOD TAD EAC E242, ERROR /B-CODE STATUS NOT = CODE # 70 SCOPE /THE CONTENTS TO THE SECTOR BUFFER SHOULD REMAIN UNCHANGED / /THE CONTENTS OF THE SECTOR BUFFER SHOULD = ALL BYTES OF 1'S / TAD (377) DCA GOOD /EXPECT ALL 1'S JMS TX /VERIFY SECTOR BUFFER SUBROUTINE EXIT / END OF TEST 24, 25, 26 / / TEST 27 - SEEK AND CRC VERIFICATION (FIRST PROGRAMMED HEAD MOVEMENT) / /THE PURPOSE OF THIS TEST IS TO VERIFY THAT SUPPLYING THE RX01 WITH A TRACK /WHOSE VALUE IS GREATER THAN 114 (OCTAL) EXPECTS A B-CODE ERROR OF 40 / T27, TAD (115) DCA BLANK STL CLA IAC RTL LCD /ISSUE READ COMMAND DCA EAC SKP ISZ EAC / + TO TRANSFER COUNT TAD BLANK / SECTOR TRACK XDROUT /TO RX01 CONTROL STR / WAIT FOR TRANSFER REQUEST FLAG SKP JMP .-5 SDN / WAIT FOR DONE FLAG JMP .-4 DCA 6 /WAIT POINTER CLL STA RAL / ONLY 2 TRANSFER REQUESTS WERE EXPECTED TAD EAC / ACTUAL # OF TRANSFER REQUEST OCCURRED SNA CLA JMP .+5 CLL CLA IAC RAL DCA GOOD TAD EAC E270, ERROR / # OF TRANSFER REQUEST FLAGS NOT OK SUBSCOPE / (AC) CONTAINS THE # OF REQUEST OCCURRED / /THE ERROR FLAG SHOULD = 1 / SER E271, ERROR / MISSING ERROR FLAG SUBSCOPE /THE B-CODE SHOUD = 40 / RSTB TAD (-40) SNA CLA JMP .+5 TAD (40 DCA GOOD TAD EAC E272, ERROR / B-CODE NOT = 40 SCOPE / /THE CONTENTS OF THE SECTOR BUFFER SHOULD REMAIN UNCHANGED / TAD (377) DCA GOOD / EXPECT ALL 1'S JMS TX / EXIT /END OF TEST 27 PAGE /TEST 30 - SEEK AND CRC VERIFICATION / /READ ALL SECTORS OF ALL TRACKS / /IF THE DATA IS OF KNOWN QUALITY THEN MONITOR FOR CRC ERRORS / T30, DCA TESTP JMP TEST4 /TEST 31 - FIRST WRITE EVER / /WRITING TO THE DISK SHOULD NOT DESTROY THE CONTENTS OF THE SECTOR BUFFER / /TECHNICAL NOTE: / /THIS TEST WRITES ON ONE UNIT ONLY - UNIT 0, BUT IF UNIT 0 WAS /NOT SELECTED B?Y THE OPERATOR AT THE START OF THIS PROGRAM /THEN THIS TEST WRITES ON UNIT 1 / /PROGRAMMING NOTE: / /THIS "DCA WUNITS" IS NECESSARY IF THIS TEST IS LOCKED WITH SWS / T31, DCA WUNITS / CLL CLA IAC RTL / 4 (WRITE 8-BIT MODE) TAD (6000) DCA TESTP /COUNT PATTERN 6 STA DCA RDC / "GETATRACK" / TAD OD DCA TARGET / TRACK = (OD) / "GETASECTOR" / TAD FIRST DCA STARGET / SECTOR = (FIRST) /GET UNIT 0 (OR UNIT 1 IF UNIT 0 NOT SELECTED) / GETUNIT / / "INITSECTOR" / STA DCA SECTORS / 1 SECTOR (FIRST) TO WRITE TAD (.+3) DCA XWRITE / RETURN ADDRESS FROM WRITE SUBROUTINE JMP REWRITE+1 / JMP TO WRITE SUBROUTINE / /RETURN HERE FROM SUBROUTINE " XWRITE " / / JMP TO T17 TO VERIFY THE CONTENTS OF THE SECTOR BUFFER / JMP T17 /TEST 32 - INIT [PROGRAMMED] PART III / IMPLIED READ OF TRACK 1 SECTOR 1 / /************************************************************************ /************************************************************************ / /IF THE CONTENTS OF PROGRAM LOCATIONS: / / " OD " = 1, AND / " FIRST " = 1, / /AND IF UNIT 0 WAS SELECTED BY THE OPERATOR AT THE START OF THIS PROGRAM / /THEN EXECUTE THIS TEST / T32, TAD FIRST CLL RAR SZA CLA NOTEST TAD OD CLL RAR SZA CLA NOTEST TAD UNITS SMA CLA NOTEST /************************************************************************ /************************************************************************ / / /THE PURPOSE OF THIS TEST IS TO VERIFY THE "IMPLIED READ" OF TRACK 1 SECTOR 1 /AS PART OF THE INITIALIZE FUNCTION / /FIRST FILL THE SECTOR BUFFER WITH ALL 0'S, THEN ISSUE IOT INIT 67X7 / /INIT SHOULD READ THE CONTENTS OF TRACK 1 SECTOR 1 OF UNIT 0 / /INTO THE SECTOR BUFFER / JMS FB128BYTES / FILL THE SECTOR BUFFER INIT /OF UNIT 0 / /JMP TO TEST 17 TO VERIFY THE CONTENTS OF THE SECTOR BUFFER / JMP T17 /TEST 33 - FIRST READ [PROGRAMMED] EVER / /FIRST FILL THE SECTOR BUFFER WITH ALL 0'S / /THEN READ FROM THE DISK TRACK # (OD), SECTOR (FIRST) / /THE CONTENTS OF THE SECTOR BUFFER SHOULD BE THAT OF THE PREVIOUS TEST / /PROGRAMMING NOTE: / /THIS "DCA WUNITS" IMPERATIVE IF T27 WAS EXECUTED PREVIOUSLY THIS PASS / T33, DCA WUNITS JMS FB128BYTES / FILL THE SECTOR BUFFER CLL CLA IAC RTL DCA TESTP / 4 (READ 8-BIT MODE) /PROGRAMMING NOTE: / /THE FOLLOWING CODE TO " JMP T17 " IS IMPERATIVE HOUSKEEPING PRIMING THE / " READ " SUBROUTINE / STA DCA RDC / "GETATRACK" / TAD OD DCA TARGET / "GETASECTOR" / TAD FIRST DCA STARGET /GET ONE UNIT ONLY (UNIT 1 IF UNIT 0 IS NOT READY) / GETUNIT / SELECT A UNIT STA DCA R1RETRY /SO NO "REWRITES" OCCUR / "INITSECTOR" / STA DCA SECTORS / 1 SECTOR TO READ (#FIRST) TAD (.+4) DCA XREAD /RETURN ADDRESS FROM " READ " SUBROUTINE JMP READRETRY / JMP TO READ SUBROUTINE /THIS "WRITE" IS IMPERATIVE FOR REFERENCES WITHIN "XREAD" / WRITE / "WRITE" FOR PROGRAM REFERENCES ONLY / /RETURN HERE FROM SUBROUTINE " XREAD " / JMP T17 / TO TEST 17 /TEST 23 - DRIVE READY SELECTION (ALL UNITS SELECTED BY OPERATOR) / /THE PURPOSE OF THIS TEST IS TO VERIGY THE "SEL DRV RDY" STATUS BIT 4 / T23, TAD (200) DCA BLANK GETUNIT TAD UNIT RST DONE JMP T23 EXIT / END OF TEST 27 / /THE PURPOSE OF THESE TESTS IS TO WRITE-READ AND PROGRAM VERIFY THE DATA /ON ALL TRACKS FROM (OD) TO (ID), AND ALL SECTORS FROM (FIRST) TO (LAST), /EXERCISING 8-BIT MODE, 12-BIT MODE, AND DELETED DATA / /A PATTERN OF ALL 1'S ARE WRITTEN TO THE DISK / / WORD/BYTE 1 IS THE TRACK ID (BITS 5-11) / WORD/BYTE 2 IS THE SECTOR ID (BITS 7-11) / / WORDS 3 THRU 62 IS THE ALL 1'S DATA / / BYTES 3 THRU 126 IS THE ALL 1'S DATA / / WORDS 63, AND 64 ARE SPECIAL SUMCHECK WORDS / / BYTES 127, AND 128 ARE SPECIAL SUMCHECK WORDS / /TEST 37 - 8 BIT MODE WITH DELETED DATA / T37, CLL CLA IAC RAL / 6 (DELETED DATA - 8/BIT MODE) / /TEST 35 - 8 BIT MODE / T35, TAD (2) / 4 (8/BIT MODE) / /TEST 36 - 12 BIT MODE WITH DELETED DATA / T36, TAD (2) / 2 (DELETED DATA - 12/BIT MODE) / /TEST 34 - 12 BIT MODE / T34, TAD (1000) /ALL 1'S PATTERN DCA TESTP / (12/BIT MODE) JMP THETEST /THIS SUBROUTINE IS ENTERED FROM TESTS: *** T21, T22, (T24, T25, T26), T27 / /EMPTY THE BUFFER TO VERIFY THE CONTENTS = ALL 1'S OR ALL 0'S / TX, . DCA BLANK / BYTE # 1 TO 128 TAD (102) LCD /EMPTY BUFFER 8-BIT MODE JMP T20STR-1 T20XDRIN, XDRIN DCA EAC /DATA FROM SECTOR BUFFER TAD EAC CIA TAD GOOD /COMPARED WITH EXPECTED DATA SNA CLA JMP .+3 TAD EAC E211, ERROR /DATA "TO" NOT = DATA "FROM" SUBSCOPE ISZ BLANK / 1 TO 128 T20STR, STR SKP JMP T20XDRIN SDN JMP T20STR SER OK E212, ERROR /UNEXPECTED ERROR FLAG SCOPE JMP I TX /VT78/ ROUTINE TO RESELECT UNIT UNDER TEST. /ON VT78 A CAF OR INIT INSTRUCTION AUTOMATICALLY /RESELECTS UNIT A(RXA). /THE FLAGS ARE CLEARED AT THIS TIME DUE TO POSSIBLE /GLITCHES IN THE RX8 INTERFACE. XCKUNT, 0 CLA CLL TAD UNITCK /0=UNIT A 1=UNIT B SEL /RESETS UNIT SELECT TO UNIT UNDER TEST SDN /CLEAR FLAGS NOP SER NOP STR CLA CLL JMP I XCKUNT PAGE /READ THE B-CODE STATUS / /THIS SUBROUTINE IS ENTERED FROM TESTS: *** ALT12, (T24, T25, T26), T27 / XRSTB, XRSTB TAD (16) LCD /ISSUE COMMAND # 7 STR OK E7000, ERROR /UNEXPECTED TRANSFER REQUEST FLAG SUBSCOPE SDN JMP .-5 XDRIN DCA EAC /ACTUAL STATUS SER JMP .+3 TAD EAC E7001, ERROR /UNEXPECTED ERROR FLAG JMS VT78CK /GO CHECK IF ON VT78 SYSTEM JMP E7002+1 /VT78 - SKIP THIS SUBTEST SUBSCOPE TAD EAC AND (7000) /BITS 0,1,2 ARE RESIDUAL FROM COMMAND SHIFT TAD (1000) SNA CLA JMP .+5 TAD (7000) DCA GOOD TAD EAC E7002, ERROR / SHIFT REGISTER NOT SHIFTING OK SUBSCOPE TAD EAC AND (377) DCA EAC TAD EAC JMP I XRSTB / /READ STATUS SUBROUTINE / /THE CONTENTS OF THE AC AT ENTRY = BIT 7 (UNIT SELECT) / /READ THE STATUS AT DONE BY ISSUING COMMAND # 5 / /THIS SUBROUTINE IS ENTERED FROM TESTS: *** ALT12, AND T27 / XRST, . TAD (12) LCD / ISSUE COMMAND # 5 (AC AT ENTRY = UNIT) STR OK E7003, ERROR /UNEXPECTED TRANSFER REQUEST FLAG SUBSCOPE SDN JMP .-5 /WAIT FOR DONE FLAG XDRIN DCA EAC /ACTUAL STATUS SER JMP .+3 TAD EAC E7004, ERROR /UNEXPECTED ERROR FLAG JMS VT78CK /GO CHECK IF ON VT78 SYSTEM JMP E7006+1 /VT78 = SKIP THIS SUBTEST SUBSCOPE / /THE PURPOSE OF THIS SUBTEST IS TO VERIFY THE SHIFTING OF THE RX8 INTERFACE / /TRANSFER REGISTER BY THE RX01 MICROCONTROLLER / /BITS 0, 1, AND 2 OF THE RX8 INTERFACE TRANSFER REGISTER SHOULD BE REMNANTS / /OF THE PREVIOUS COMMAND (COMMAND # 5), THEREFORE BITS 0, 1, AND 2 SHOULD = 101 (BINARY) /(NOT TRUE ON VT78) TAD EAC AND (7000) TAD (3000) SNA CLA JMP .+5 TAD (5000) DCA GOOD TAD EAC E7006, ERROR SUBSCOPE / /THE CONTENTS OF RST STATUS SHOULD = DRIVE READY (200) / / (IF UNIT-S WERE SELECTED AT L/S 200 OTHERWISE THE STATUS SHOULD = 0) / TAD BLANK / (GOOD) SAVED PRIOR TO ENTRY INTO " XRST " AND (-4-1) / MINUS " INIT DONE " BIT DCA GOOD TAD EAC / ACTUAL STATUS MINUS " DELETED DATA " AND (277) DCA BLANK TAD GOOD /EXPECTED CIA TAD BLANK /ACTUAL (MASSAGED) SNA CLA JMP .+3 TAD EAC /ACTUAL ERROR STATUS E7005, ERROR /EXPECTED STATUS NOT = (GOOD) SCOPE JMP I XRST /SUB-TEST SELECTIONS / / / TEST 0 - " THE TEST " / TEST 001 - WRITE - READ (PARITY CHECK) / TEST 010 - WRITE - READ - READ CHECK (PROGRAM VERIFY) / TEST 011 - READ - READ CHECK (COMPATIBILITY) / TEST 100 - READ (PARITY CHECK) / TEST 5 - WRITE ONLY / TEST 110 - EMPTY BUFFER / TEST 111 - / / TEST4, TAD (READ) SKP TEST3, TAD (READCOMPARE) DCA DOB TAD (NOP) JMP DCADOA TEST2, TAD (READCOMPARE) SKP TEST1, TAD (READ) SKP TEST5, TAD (NOP) DCA DOB TAD (WRITE) DCADOA, DCA DOA / TESTX, GETAPATTERN INITTRACKS GETUNIT TESTXL, GETATRACK DOA, WRITE DOB, READ ISZ TRACKS JMP TESTXL DONE JMP TESTX EXIT /AC SW 7 = 1 TO HALT AT END OF TEST / XLOCKUP, . LAS AND (SW7) SZA CLA HLT /AC SW 2 = 1 TO LOCK SCOPE LOOP ON TEST / LAS AND (SW2) SZA CLA JMP I TEST JMP I XLOCKUP PAGE / /BYTE SWAP SUBROUTINE / /THE CONTENTS OF THE AC AT ENTRY WILL BE SWAPPED / XBSW, . DCA BSWAC RAR DCA BSWLINK TAD (-6) DCA BSWRAL TAD BSWAC CLL SPA CLL CML RAL ISZ BSWRAL JMP .-5 DCA BSWAC TAD BSWLINK CLL RAL TAD BSWAC JMP I XBSW BSWRAL, -6 BSWAC, 0 BSWLINK, 0 XERROR, . DCA EAC TAD EAC /GET ERROR PC AERROR ISZ BUSY TAD XERROR IAC DCA EPCSCOPE / ERROR RETURN ADDRESS + 1 CLL CLA IAC DCA ERRORS /IF AC SW 4 = 0 THEN PRINT AN ERROR MESSAGE / LAS AND (SW4) SZA CLA JMP XNOPRINT /IF THIS IS THE FIRST ERROR FOR THIS PASS THEN PRINT THE HEADER LINE / ISZ FIRSTERROR JMP .+3 PRINT MXEHEADER PRINT MCRLF / ERR FAT FAST EAC GOOD PASS / / ERR = ERROR ADDRESS ( E # ) / FAT = FIRST ADDRESS OF TEST / FAST = FIRST ADDRESS OF SUB-TEST / =*SEE MAP / EAC = CONTENTS OF THE ACCUMULATOR AT THE ERROR / PASS = PASS IN WHICH ERROR OCCURRED / STA TAD XERROR DCA LSB TY4OCT LSB TAB 5 TAD TEST DCA LSB TY4OCT LSB TAB 12 TY4OCT PCSCOPE TAB 17 TY4OCT BLANK TAB 24 TY4OCT EAC TAB 31 TY4OCT GOOD TAB 36 TY8OCT PASS LAS SMA CLA JMP .+3 TAB 43 BELL=207 / XNOPRINT, LAS AND (SW11) SZA CLA JMP .+3 SPECIALTYPEIT BELL DCA FIRSTERROR LAS SMA CLA HLT / DCA BUSY ION JMP I XERROR / / /ROUTINE TO DETERMINE WHETHER TO TEST DRIVE ZERO /OR IF NO DRIVES ARE TO BE TESTED. / TSTUNT, JMS VT78CK /GO CHECK IF ON VT78 SYSTEM JMS CHGMSG /VT78/ GO CHANGE MASKING CONSTANT TAD UNITS /UNITS SELECTED BY OPERATOR AND (4000 /ISOLATE DRIVE ZERO. SZA CLA /IS DRIVE ZERO THERE? JMP DRVZRO /YES. TAD MASK1 /DON'T TEST DRIVE ZERO. DCA COMP /IT IS NOT AN ERROR IF DRIVE /ZERO IF OPERATIONAL. JMP NORX01-1 DRVZRO, TAD MASK DCA COMP JMP NORX01-2 /DRIVE ZERO IS THERE, SO INDICATE IT. COMP, 0 MASK1, 7477 / /ROUTINE TO CHANGE MASKING CONSTANT FOR USE ON VT78 /BITS 0-2 ARE NOT RESIDUAL ON VT78 / CHGMSG, 0 TAD (277 DCA MASK TAD (77 DCA MASK1 JMP I CHGMSG / PAGE / THETEST, GETAPATTERN INITTRACKS GETUNIT / /FORCE THE ACTUATOR SEQUENCE = 0 (INCREMENTAL 0-114) / THEL, TAD (XTHEL) DCA XGETATRACK TAD TARGET DCA START TAD TTRACKS TAD TRACKS SZA CLA JMP SEQ000 TAD OD DCA TARGET JMP SEQ000 XTHEL, WRITE READCOMPARE ISZ TRACKS JMP THEL DONE JMP THETEST+1 /ACTUATOR MOVEMENT IS THAT SELECTED OF BITS 6,7,8 OF (TESTP) / XXTHEL, INITTRACKS GETUNIT XYTHEL, GETATRACK READCOMPARE ISZ TRACKS JMP XYTHEL DONE JMP XXTHEL EXIT /GET A PATTERN / XGETAPATTERN, . / /ONLY GENERATE A PATTERN, HOWEVER, IF THE CONTENTS OF PROGRAM LOCATIONS / /ERRORS = 0 (MEANS NO ERRORS), / /AND AC SW2 = 0 (NOT TO LOCK ON TEST OK) / /AND TEST = T13, T16, T34, T35, T36, T37 / LAS AND (SW2) TAD ERRORS SZA CLA JMP I XGETAPATTERN TAD (GENTESTS-1) DCA A12 TAD I A12 SNA JMP I XGETAPATTERN TAD TEST SZA CLA JMP .-5 TAD (WBUFFER+1) DCA A10 DCA PATSUMCHECK CLL CLA IAC RTL AND TESTP / 8/12 MODE MASK SZA CLA TAD (-100) /124 DATA WORDS TAD (-74) DCA A11 /60 DATA WORDS /WORD X AND WORD Y CONTAIN THE ADDRESSES OF THE LAST 2 SUMCHECK WORDS / TAD A11 CIA TAD (WBUFFER+2) DCA WORDX CLL CLA IAC TAD WORDX DCA WORDY TAD (7000) AND TESTP CLL RTL RTL TAD (TAD PATTERNS) DCA .+1 TAD PATTERNS DCA XPATTERNS XPATTERNS, JMS RANGEN DCA XXX /DEVELOP A 12 BIT SUMCHECK FOR THE 60/124 DATA WORDS / /NOTE: / /THE SUMCHECK WRITTEN IS THIS DEVELOPED SUMCHECK WITH THE FIRST 2 ID WORDS, AND /THE LAST 2 OVERALL SUMCHECK WORDS APPENDED WITHIN SUBROUTINE XGETASECTOR / TAD PATSUMCHECK TAD XXX DCA PATSUMCHECK TAD XXX DCA I A10 ISZ A11 JMP XPATTERNS JMP I XGETAPATTERN /THE FOLLOWING ARE THE ALLOCATED PATTERN POINTERS / PATTERNS, JMS RANGEN STA / 1 TAD PAT2 TAD PAT3 TAD PAT4 TAD PAT5 JMP PAT6 CLA / / 12 BIT MODE 8 BIT MODE PAT2, 1463 / 63 / 0011 00110011 PAT3, 6314 / 314 / 1100 11001100 PAT4, 5252 / 252 / 1010 10101010 PAT5, 2525 / 125 / 0101 01010101 / GENTESTS, -T13 -T16 -T34 -T35 -T36 -T37; 0 /PROGRAMMING NOTE: / /PATTERN 6 IS A COUNT PATTERN FROM 0 TO 7777, OR FROM 0 TO 177 / /THIS COUNT PATTERN IS A " PURE " PATTERN / /A CHECKSUM IS NOT GENERATED FOR THIS PATTERN AS FOR ALL OTHER PATTERNS / / WORD/BYTE 0 = 1 / WORD/BYTE 1 = 1 / / WORD 2 = 0202 / BYTE 2 = 2 / / WORD 77 = 7777 / BYTE 177 = 177 / PAT6, CLL CLA IAC RTL / 4 AND TESTP SZA STL / LINK = 1 FOR 8-BIT MODE (128 BYTES) JMP .+5 XPAT6, IAC SNL TAD (100) TAD XXX DCA XXX TAD XXX DCA I A10 ISZ A11 JMP XPAT6 JMP I XGETAPATTERN PAGE /WRITE ONLY / /WRITE ALL SELECTED SECTORS OF THAT TRACK / XWRITE, . STL CLA RAR DCA RDC / THIS IS A WRITE (RDC = 4000) / INITSECTORS WRITEL, GETASEECTOR SKP REWRITE, TAD (JMP WHICHREAD) DCA JMPWHICHREAD /THE PROGRAM WILL ISSUE AN INIT FOR ALL SEEK ERRORS / /NOTE: / /THE FUNCTION OF THE INIT IS TO SEEK TRACK 0/SECTOR 1, AND /TRANSFER INTO THE SECTOR BUFFER THE CONTENTS OF SECTOR 1. THEREFORE /TO RECOVER FROM A SEEK ERROR, THE PROGRAM MUST RE-FILL THE SECTOR BUFFER /THEN RE-SEEK / TAD KRETRY DCA SRETRY WRESEEK, TAD KRETRY DCA PRETRY /PARITY RETRY COUNTER /FILL RX01 SECTOR BUFFER / REFILL, TAD (WBUFFER-1) DCA A10 LCDA JMP FILLOK JMP FILLERRROR /RETURN TO HERE IS FROM SUBROUTINE XLCDA / FILL, STR JMP FILL TAD I A10 XDROUT JMP FILL /AC SW (4) = 0 ; INHIBIT INTERFACE PARITY RECOVERY / FILLERROR, ISZ PRETRY SKP JMP I XWRITE LAS AND (SW1) SZA CLA JMP REFILL DCA PRETRY JMP I XWRITE /THE SECTOR BUFFER HAS SUCESSFULLY BEEN FILLED AND CONTAINS THE /PATTERN SELECTED - ALL SOFT PARITY ERRORS HAVE BEEN LOGGED / FILLOK, TAD KRETRY DCA PRETRY CLL CLA IAC RAL / 2 AND TESTP /TESTP FOR DELETED DATA SELECTION IAC RTL / 4 IF WRITE OR 14 IF WRITE DELETED DATA LCDB JMP WRITEOK /RETURN TO HERE IS FROM A PI (IF AN RX01 ERROR FLAG) / /AC SW (1) = 0 ; INHIBIT WRITE RETRY / WRITERROR, ISZ SRETRY SKP JMP WNOTOK LAS AND (SW1) SZA CLA JMP WRESEEK DCA SRETRY JMP WNOTOK /NOTE: THE ONLY ERROR EXPECTED HERE EVER IS A "SEEK" ERROR / /RETURN TO HERE IS FROM A PI (IF ONLY AN RX01 DONE FLAG) / WRITEOK, TAD TARGET DCA START TAD STARGET DCA SSTART JMPWHICHREAD, JMP WHICHREAD /CONTAINS 0 OR MODIFIED TO JMP WHICHREAD / WNOTOK, ISZ SECTORS JMP WRITEL JMP I XWRITE /IF THIS IS A WRITE AFTER READ, "JMP READRETRY", BUT / /IF A HARD SEEK ERROR, "JMP NOREAD" / WHICHREAD, TAD SRETRY SNA CLA JMP NOREAD /HARD SEEK ERROR JMP READRETRY /SOFT / / 0 < (LAST) => (FIRST) / TADLAST, TAD LAST SMA SZA CLA JMP .+3 TAD (32) DCA LAST TAD LAST CIA TAD FIRST SMA SZA CLA JMP .-6 PRINT MLAST TY4OCT LAST TAB 5 /************ /CONSOLE /************ CHECKC8 /IS CONSOLE ACTIVE XC8ENTR /YES PRINT SWITCH REGISTER QUESTION /FOR RUNNING SWITCHES JMP C8RET4 HALT C8RET4, JMP PRETEST /ENTRY TO HERE IS FROM RX01 PI ERROR SERVICE ROUTINE / /CONTROLLER FAILURES / SDNUNEXPECTED, TAD (MSDNUNEXPECTED) SKP NOSER, TAD (MNOSER) DCA XMESSAGE LAS AND (SW4) SZA CLA JMP QUIET FORCE TAD XMESSAGE /POINTS TO ERROR MESSAGE THAT WOULD HAVE BEEN PRINTED AERROR /REPORT ERROR TO APT IF REQUIRED PRINT XMESSAGE, 0 QUIET, LAS SPA CLA HLT JMP ERETURN / /ENTRY TO HERE FROM SUBROUTINES XSER, OR XSDN / HUNGUP, ISZ BUSY DCA HUNGPC FORCE / /THE LABEL "XHUNG" MUST RESIDE HERE BECAUSE OF REFERENCES MADE WITHIN "FORCE" / XHUNG, PRINT MHUNGPC TY4OCT HUNGPC TAD (-40) DCA HANGER NOTEST HUNGPC, 0 / PAGE / /ROUTINE IS USE IN PLACE OF THE LAS INSTRUCTION WILL READ CORRECT SWITCHES / / XCKSWIT, 0 CLA TAD 22 /CHECK BIT 0 FOR APT SPA CLA /ON APT? JMP I XCKSWIT /YES RETURN WITH CLEARED AC TAD 21 /CHECK STATUS WORD SPA CLA /0=ACTIVE CONSOLE SKP CLA OSR /LAS AND SKIP TAD 20 /GET PSEUDO SW REG JMP I XCKSWIT /EXIT XCKSWIT /READ VERIFY / XREADCOMPARE, . TAD XREADCOMPARE DCA XREAD JMP XRDC /READ AND READ AFTER WRITE SUBROUTINE / /************************************************************************ / /IF THIS IS A READ AFTER WRITE, THEN 1 PROGRAM LOCATION PRECEEDING /THE PROGRAM LOCATION CONTAINING THE "READ" WILL CONTAIN "WRITE" / /************************************************************************ / /IF THIS IS A READ ONLY, THEN THE CONTENTS OF " RDC " WILL = 1 / /IF THIS IS A READ VERIFY, THEN THE CONTENTS OF " RDC " WILL = 0 / /READ ALL SELECTED SECTORS OF THAT TRACK / XREAD, . CLL CLA IAC XRDC, DCA RDC INITSECTORS READL, TAD KRETRY DCA R1RETRY GETASECTOR READRETRY, TAD KRETRY DCA R2RETRY /REFRESH PROGRAM LOCATION SNDLOG BECAUSE THE CONTENTS MIGHT BE RESIDUAL /IF A PREVIOUS SND (STATUS NO DATA) ERROR EVER OCCURRED / DCA SNDLOG DCA DWSLOG DCA DNSLOG / REREAD, TAD KRETRY DCA SRETRY RESEEK, TAD KRETRY DCA PRETRY CLA STL IAC RTL LCDB JMP READOK /RETURN TO HERE IS FROM A PI (IF AN RX01 ERROR FLAG) / /AN ERROR HAS BEEN DETECTED / /IF NOT A CRC ERROR THEN ASSUME A SEEK ERROR / READERROR, CLL CLA IAC AND ASTATUS /CRC MASK SZA CLA JMP CRCERR ISZ SRETRY SKP JMP RLOGGED LAS AND (SW1) SZA CLA JMP RESEEK DCA SRETRY JMP RLOGGED / /PROGRAMMING NOTE: / /ANY RECOVERABLE SEEK ERRORS ARE NOTED AT PROGRAM LOCATION " DNS " / /AN ERROR HAS OCCURRED / SND=DNS DWS=SND / /THE SECTOR BUFFER CONTAINS THE DATA READ / /ANY PARITY ERRORS WOULD HAVE PREVIOUSLY BEEN DETECTED AND LOGGED / /THIS ERROR IS NOT A SEEK ERROR, THEREFORE IT IS ASSUMED TO BE A / / CRC ERROR / /COMPARE THE DATA WITHIN THE SECTOR BUFFER TO DETECT CRC STATUS /WITHOUT DATA ERRORS (SND) / /IF AT THE END OF THE COMPARE, STATUS NO DATA ERRORS HAVE BEEN DETECTED /THEN PRINT AN APPROPRIATE MESSAGE / CRCERR, TAD RDC SZA CLA JMP XCRCERROR JMS COMPARE TAD COMPRERROR SNA TAD INSUMCHECK SZA CLA JMP DWS ISZ SNDLOG / /IF AC SW (4) = 1 THEN DO NOT PRINT THE ERROR INFORMATION / LAS AND (SW4) SZA CLA JMP XCRCERROR JMS RDORWR JMP .+4 PRINT MWRITE JMP .+3 PRINT MREAD PRINT MSNDERROR XCRCERROR, LAS SMA CLA HLT7, HLT / DNS, TAD KRETRY DCA SRETRY ISZ R2RETRY SKP JMP UREAD /AC SW (1) = 0 ; INHIBIT READ RETRY / LAS AND (SW1) SZA CLA JMP REREAD /A HARD FILL BUFFER PARITY ERROR OR A HARD PARITY ERROR ON THE COMMAND/ /SECTOR/TRACK WORDS, OR /A HARD SEEK ERROR WHICH HAS BEEN LOGGED WITHIN THE WRITE SUBROUTINE, OR /A HARD CRC ERROR WHICH OCCURRED WHILE WITHIN THE READ SUBROUTINE / NOREAD, DCA R1RETRY DCA R2RETRY JMP RLOGGED /IF THIS IS A READ AFTER WRITE THE RE-WRITE THE SECTOR IN ERROR / /BECAUSE THIS IS A HARD PROGRAM COMPARE DATA ERROR / UREAD, JMS RDORWR JMP NOREAD ISZ R1RETRY JMP REWRITE JMP RLOGGED /IF THIS IS A READ COMPARE TEST / /THEN " JMS COMPARE ", BUT ... / /IF A STATUS ERROR WITH NO DATA ERROR HAS PREVIOUSLY BEEN DETECTED / /THEN DO NOT RE- " JMS COMPARE ", AND / /DO NOT RESET PROGRAM LOCATION " START " WITH " TARGET " / /PROGRAMMING NOTE: / /ANY RECOVERABLE SEEK ERRORS WHICH OCCURRED PRIOR TO CRC OR DATA ERRORS / /ARE LOGGED AT PROGRAM LOCATION " DNS " / READOK, TAD SNDLOG TAD RDC SZA CLA JMP ROK JMS COMPARE TAD COMPRERROR SNA TAD INSUMCHECK SZA CLA JMP DNS ROK, TAD TARGET DCA START TAD STARGET DCA SSTART RLOGGED, ISZ SECTORS JMP READL JMP I XREAD /IF THE PROGRAMMED INSTRUCTION IMMEDIATELY BEFORE " READ " /IS A " WRITE ", THEN THIS IS A WRITE DATA ERROR. IF NOT, /THEN THIS IS A READ DATA ERROR / /FORM: JMS RDORWR; (READ RETURN); (WRITE RETURN) / RDORWR, . CLL STA RAL TAD XREAD DCA XXX TAD I XXX TAD (-WRITE) SNA CLA ISZ RDORWR JMP I RDORWR PAGE JMPICOMPARE, JMP I COMPARE / /THE FOLLOWING INFORMATION IS ALWAYS PRINTED IF A PROGRAM COMPARE DATA ERROR / / DATA ERROR / WORD GOOD BAD / /WHERE " WORD " IS THE WORD NUMBER (0-127), /AND " GOOD " IS THE DATA WORD WRITTEN, /AND " BAD " IS THE DATA WORD READ (IN ERROR) / /WORDS 0 AND 1 ARE HEADER WORDS (8 BIT BYTES) / / WORD 0 - TRACK # (BITS 5-11) / WORD 1 - SECTOR (BITS 7-11) / / /AC SW (4) = 1 ; INHIBIT READ DATA ERROR TYPEOUT / / COMPARE, . / /EMPTY BUFFER / /SAVE THE PREVIOUS READ'S A-STATUS REGISTER / CLL CLA IAC AND ASTATUS DCA XASTATUS TAD KRETRY DCA PRETRY DCA INSUMCHECK JMS EMPTYL TAD TESTP AND (4 SZA CLA /IS IT 12 BIT MODE? TAD (7400 /NO (-377) CMA /YES DCA BITMODE /SAVE MASK /AC SW (4) = 1 ; INHIBIT FURTHER READ DATA ERROR TYPEOUTS / /...BUT STAY IN THIS LOOP UNTIL THE RX01 SECTOR BUFFER IS EMPTIED / EMPTY, STR JMP EMPTY / /DISABLE THE RX01 INTERRUPT / CLA CLL K67X6B, 6756 / /TRANSFER DATA FROM THE SECTOR BUFFER INTO THE ACCUMULATOR / K67X2C, 6752 / "ACTUAL" (BAD) DATA DCA XA10 / /ASSUME A 12 BIT SUMCHECK EVEN IF 8 BIT MODE FOR NOW / /NOTE: THE CONTENTS OF PROGRAM LOCATION " INSUMCHECK " SHOULD = 0 / (AFTER ALL WORDS HAVE COME IN) / TAD XA10 TAD INSUMCHECK DCA INSUMCHECK TAD I XA11 AND BITMODE /377 FOR 8 BIT MODE 7777 FOR 12 BIT CIA TAD XA10 SZA CLA JMP DATAER ENDCOMPARE, CLA CLL IAC K67X6C, 6756 ISZ XA11 ION JMP EMPTY / /A PROGRAM COMPARE DATA ERROR HAS BEEN DETECTED / /NOTATION: / /THE CONTENTS OF PROGRAM LOCATION XASTATUS REFLECTS THE STATUS OF THE /RX01 AT THE COMPLETION OF THE PREVIOUS " READ SECTOR " / /IF A CRC ERROR EXISTS THEN THIS IS A DATA ERROR WITH STATUS ERROR / /IF A CRC ERROR DOESN'T EXIST THEN THIS IS A DATA ERROR WITH NO ERROR STATUS / DATAERR, TAD XASTATUS / A-STATUS OF PREVIOUS READ SNA ISZ DNSLOG /NO CRC STATUS SZA CLA ISZ DWSLOG /CRC STATUS / /AC SW (4) TO INHIBIT ERROR PRINTOUT / /IF THIS IS A READ ONLY TEST (NOT READ COMPARE) OR IF AC SW 4 = 1 /THEN DO NOT PRINT ERROR INFORMATION / /BUT, / /IF THIS IS A READ COMPARE TEST AND AC SW 4 = 0 /THEN PRINT ERROR INFORMATION / LAS AND (SW4) TAD RDC SZA CLA JMP ISZCOMPRERROR /IF THIS IS THE FIRST COMPARE ERROR THEN PRINT HEADER INFORMATION / TAD COMPRERROR SZA CLA JMP CNOTFIRST / /IF A DATA NO CRC STATUS ERROR (DNS) THEN PRINT ENTIRE ERROR INFORMATION / TAD DNSLOG SZA CLA FORCE /IF THE PROGRAMMED INSTRUCTION IMMEDIATELY BEFORE " READ " /IS A " WRITE ", THEN THIS IS A WRITE DATA ERROR. IF NOT, /THEN THIS IS A READ DATA ERROR / XCOMPARE, JMS RDORWR JMP .+4 PRINT MWRITE JMP .+3 PRINT MREAD /NOTATION: / /THE CONTENTS OF PROGRAM LOCATION XASTATUS REFLECTS THE STATUS OF THE /RX01 AT THE COMPLETION OF THE PREVIOUS " READ SECTOR " / /IF A CRC ERROR EXISTS THEN THIS IS A DATA ERROR WITH STATUS ERROR / /IF A CRC ERROR DOESN'T EXIST THEN THIS IS A DATA ERROR WITH NO ERROR STATUS / TAD XASTATUS SZA CLA JMP DWESERROR PRINT MDNSERROR JMP .+3 DWESERROR, PRINT MDWESERROR PRINT MDATAERROR /PRINT " WORD " IF 12-BIT MODE, OR PRINT " BYTE " IF 8-BIT MODE / TAD (MWORD) DCA XFLENGTH CLL CLA IAC RTL AND TESTP SNA CLA JMP .+3 TAD (MBYTE) DCA XFLENGTH PRINT XFLENGTH, MWORD PRINT MGB / AC 5 = 0 - PRINT ONLY FIRST 3 COMPARE ERRORS / AC 5 = 1 - PRINT ALL COMPARE ERRORS / CNOTFIRST, LAS AND (SW5) SZA CLA JMP .+5 CLL STA RTL TAD COMPRERROR SMA CLA JMP ISZCOMPRERROR PRINT MCRLF TAD (-WBUFFER) TAD XA11 DCA LSB TY4OCT LSB TAB 5 CLL CLA IAC RTL AND TESTP CLL RTR RAR TAD I XA11 SZL AND (377) DCA LSB TY4OCT LSB TAB 12 TY4OCT XA10 ISZCOMPRERROR, ISZ COMPRERROR JMP ENDCOMPARE /THE CONTENTS OF THE XASTATUS PROGRAM LOCATION REFLECTS THE STATUS AT THE /COMPLETION OF THE PREVIOUS READ FUNCTION / /THE PREVIOUS STATUS IS SAVED BECAUSE A SUCCEEDING ERROR / (PARITY ERROR ON THE COMMAND WORD) MAY OCCUR / XASTATUS, 0 / /THE CONTENTS OF " INSUMCHECK " IS THE SUMCHECK DERIVED FROM THE SUM OF ALL /DATA WORDS COMING IN (THE SUM OF ALL " BAD "), AND /SHOULD BE EQUIVALENT TO 0 AT THE END OF THE EMPTY BUFFER / INSUMCHECK, 0 BITMODE, 0 PAGE / EMPTYL, 0 TAD (WBUFFER) DCA XA11 CLL CLA IAC RAL LCDA JMP EMPTYOK JMP EMPTYERROR /RETURN TO HERE FROM SUBROUTINE XLCDA / DCA COMPRERROR JMP I EMPTYL /RETURN / /THIS INTERFACE PARITY ERROR MUST BE ON THE COMMAND WORD TO "EMPTY BUFFER" / /NOTE: IT CAN'T BE ANY OTHER ERROR / EMPTYERROR, ISZ PRETRY SKP JMP XEMPTYOKNOTOK LAS AND (SW1) SZA CLA JMP EMPTYL DCA PRETRY JMP XEMPTYOKNOTOK /IF AC SW (4) = 0 / /PRINT A VALUE SYMBOLIC OF THE TOTAL # OF COMPARE ERRORS DETECTED / /IF 8-BIT MODE THEN THE "SUMCHECK" WILL OVERFLOW INTO BITS 0 TO 3 / /THEREFORE MASK THE CONTENTS OF " INSUMCHECK " / /THE RESULT OF THE SUBTRACTION SHOULD = 0 / /NO MASK IS NEEDED FOR 12-BIT MODE / EMPTYOK, CLL CLA IAC RTL AND TESTP CLL RTR RAR TAD INSUMCHECK SZL AND (377) DCA INSUMCHECK LAS AND (SW4) SZA CLA JMP XEMPTYOK /IF A SUMCHECK ERROR EXISTS WITHOUT A "COMPRERROR" THEN "FORCE" A TYPEOUT / TAD COMPRERROR SZA CLA JMP .+5 TAD INSUMCHECK SNA CLA JMP XEMPTYOK FORCE PRINT MSUMCHECK TAD INSUMCHECK SZA CLA JMP .+4 PRINT MOK JMP .+4 TY4OCT INSUMCHECK JMP .+4 TAD COMPRERROR SNA CLA JMP XEMPTYOK PRINT MDESUMMARY TY4OCT COMPRERROR TAB 5 JMP XEMPTYOK / /AC SW 0 = 1 ; HALT ON ERROR / XEMPTYOK, TAD COMPRERROR SNA TAD INSUMCHECK SNA CLA JMP JMPICOMPARE LAS SPA CLA HLT6, HALT JMP JMPICOMPARE XSETUP, . WAITTY TAD (ANDRETURN) DCA XPRINT TAD I XSETUP DCA XANDRETURN ISZ XSETUP JMP I XSETUP / /AND RETURN TO HERE WAITING FOR ENTIRE NUMERICAL OUTPUT / ANDRETURN, WAITTY / /THEN EXIT FROM HERE FOR MAIN LINE CODE / THENEXIT, TAD I XANDRETURN DCA XANDRETURN DCA TTYBUSY JMP I XANDRETURN XANDRETURN, . / XHALT, . WAITTY /************ /CONSOLE /************ CHECKC8 XC8ENTR JMP C8RET3 / /************ STA TAD XHALT 7402 C8RET3, CLA JMP I XHALT / /ROUTINE TO NOTIFY OF OF RUNNING IF NEED BE DONE / XTICK, 0 CHEK22 SKP /ON APT. JMP I XTICK ISZ CLKCNT JMP I XTICK TAD COUNT DCA CLKCNT /INIT CLOCK COUNTER IOF CDF 00 CIF 70 JMS I K6500 /NOTIFY APT-8 JMP I XTICK /EXIT. / K6500, 6500 CLKCNT, -1 COUNT, -15 PAGE /SEQUENCE TO THE NEXT AVAILABLE DISKETTE / XGETUNIT, . DCA UNITZ /CLEAR FOR A NEW DISKETTE TAD WUNITS /WORKING UNIT COUNTER SNA TAD UNITS /EXHAUSTED ALL DISKETTES ; RESET DCA WUNITS DCA POLL /CLEAR POLLER STL /START NEXT, TAD POLL RAR /NEXT DCA POLL TAD POLL SZL /DISKETTE HLT /NO UNITS AVAILABLE ; CATASTROPHIC AND WUNITS SNA ISZ UNITZ /ACTIVE DISKETTE SNA JMP NEXT /TRY AGAIN /A DISKETTE IS AVAILABLE AND SELECTED FOR OPERATIONS DCA UNITX /A CODED VERSION OF UNIT TAD UNITX CMA /...DELETE FROM AND WUNITS /...AVAILABLE UNIT LIST (WUNITS) DCA WUNITS /...AND CREATE NEW LIST TAD UNITZ CLL RTL RTL /BIT 7 OF COMMAND REGISTER DCA UNIT /FOR COMMAND REGISTER LOAD LATER JMP I XGETUNIT UNITS, 6000 /AVAILABLE UNIT LIST (MAX SYS CONFIGURATION) WUNITS, 0 /CODED WORKING UNIT LIST (UNITS YET TO BE EXERCISED) POLL, 0 /DISKETTE POLL / /UNITZ ; UNIT 1 LOOKS LIKE 0001 /UNITX ; UNIT 1 LOOKS LIKE 2000 /UNIT ; UNIT 1 LOOKS LIKE 0020 (RX01 COMMAND WORD BIT 7) / UNITZ, 0 /ACTIVE DISKETTE UNITX, 0 /ACTIVE DISKETTE IN CODED FORM UNIT, 0 /A CODED VERSION OF UNIT Z (FOR COMMAND REGISTER LOAD) / /IF (WUNITS) = 0 ; ALL SELECTED DISKETTE DRIVES HAVE SEQUENCED / XDONE, . TAD WUNITS SNA CLA ISZ XDONE / DONE ; (WUNITS) = 0 JMP I XDONE /INITIALIZE THE NUMBER OF TRACKS ACCESSED VIA THE DIFFERENCE BETWEEN /THE CONTENTS OF PROGRAM LOCATIONS " OD " AND " ID ". / XINITTRACKS, . TAD ID CMA TAD OD DCA TRACKS TAD TRACKS CIA DCA TTRACKS JMP I XINITTRACKS / OD (OUTSIDE DIAMETER) ACTUATOR POSITION INITIALIZED TO (0) / / ID (INTSIDE DIAMETER) ACTUATOR POSITION INITIALIZED TO 114 (76 DECIMAL) / / " XGETATRACK " WILL GET A TRACK VALUE BETWEEN THE LIMITS OF THE CONTENTS OF /PROGRAM LOCATION OD (MIN 0), AND THE CONTENTS OF ID (MAX 114). / /GET A DISKETTE TRACK TO BE (AC) WITHIN IOT LCD-B / / IF THIS IS THE " FIRSTMOVE ", (START) IS NOT APPLICABLE HERE, BUT / WILL BECOME APPLICABLE WITHIN SUBROUTINE " XGETASECTOR ". / XGETATRACK, . TAD TARGET /present actuator position (from previous lcd-b) OUTPUT, DCA START /bacomes starting actuator position TAD (70) AND TESTP CLL RAR RTR TAD (TAD SEQ) DCA .+1 TAD SEQ DCA .+2 RESEQUENCE, JMP I .+1 SEQ000 /TRACK ACCESS SEQUENCE IS SELECTED VIA AC SWITCHES 6,7,8 AT L/S 200 / / 0 - INCREMENTAL (1-114-0) / 1 - DECREMENTAL (114-0) / 2 - 1-114, 1130-0 / 3 - BOUNCE ID TO OD ONLY / 4 - BOUNCE: (114, 0; 113, 1 ; 112, 2 ; ...ETC TO 47, 45) / 5 - / 6 - STROBE: (77, 0 ; 76, 0 ; 75, 0 ; ...ETC TO 1, 0) / 7 - RANDOM / SEQ, SEQ000 SEQ001 SEQ010 SEQ3 SEQ100 NOTEST SEQ6 SEQ111 / /INCREMENTAL ACTUATOR ACCESS (OD INCREMENTALLY TO ID) / SEQ000, TAD TTRACKS TAD TRACKS SZA CLA JMP .+3 TAD OD JMP DCATARGET TAD TARGET IAC JMP DCATARGET /DECREMENTAL ACTUATOR ACCESS (ID TO OD) / SEQ001, TAD TTRACKS TAD TRACKS SZA CLA JMP .+3 TAD ID JMP DCATARGET TAD TARGET TAD K7777 JMP DCATARGET /RANDOM ACTUATOR ACCESS / SEQ111, JMS RANGEN AND (177) DCATARGET, DCA TARGET /PREVIOUSLY AT L/S THE FOLLOWING CONDITION WAS TRUE / / 0 <= (OD) <= (ID) <= 32 / /THEREFORE TEST FOR THE CONDITION / / (TARGET) <= (ID) / XSEQ, TAD ID CIA TAD TARGET SMA SZA CLA JMP RESEQUENCE /AND TEST FOR THE CONDITION / / (OD) <= (TARGET) / TAD TARGET CIA TAD OD SMA SZA CLA JMP RESEQUENCE JMP I XGETATRACK / /ERROR REPORTER FOR APT. INDICATES TEST PC IN ERROR, THE ONLY EXCEPTIONS /ARE FOR AN UNEXPECTED RX01 INTERRUPT, /AND A MISSING ERROR FLAG. / XAERRO, 0 DCA XXX /STORE ERROR PC. CHEK22 SKP JMP I XAERRO IOF TAD XXX /GET BACK ERROR PC. CDF 00 CIF 70 JMP I K6520 HLT /SOMETHING WENT WRONG /ON REPORTING ERROR TO APT K6520, 6520 PAGE / OD+1 INCREMENTALLY TO ID; ID-1 DECREMENTALLY TO OD / SEQ010, TAD TTRACKS TAD TRACKS SZA CLA JMP XSEQ2 TAD TRACKS CLL RAL TAD (2) DCA TRACKS / (TRACKS X 2)-2 = 152(MAX VAL) TAD TRACKS CIA DCA TTRACKS /INCREMENT IF (TRACKS) < [ (ID)-(OD) ] /DECREMENT IF (TRACKS) >= [ (ID)-(OD) ] XSEQ2, TAD OD CIA TAD ID TAD TRACKS SMA CLA JMP SEQ001 / ID-1 TO OD JMP SEQ000 / OD+1 TO ID / /BOUNCE: ID,OD ONLY / SEQ3, TAD TTRACKS TAD TRACKS SZA CLA JMP XSEQ3 CLL STA RAL DCA TRACKS TAD TRACKS CIA DCA TTRACKS XSEQ3, TAD TARGET CIA TAD OD SNA CLA TAD ID SNA TAD OD DCA TARGET JMP XSEQ /BOUNCE: ID TO OD / /THEREFORE 76 (NOT 77) TRACKS ARE TESTED / SEQ100, TAD TTRACKS TAD TRACKS SZA CLA JMP Q40D /FIRST ENTRY ONTO SEQUENCE # 4 / /IF (TRACKS) = [ (ID)-(OD) ] IS A NEGATIVE ODD THEN INCREMENT TRACK / CLA IAC AND TRACKS SZA CLA ISZ TRACKS /IF (TRACKS) = -ODD ; BOUNCE TO OUTSIDE DIAMETER, BUT / /IF (TRACKS) = -EVEN ; BOUNCE TO INSIDE DIAMETER / Q40D, CLA IAC AND TRACKS SNA CLA JMP Q46ID STA TAD TTRACKS TAD TRACKS CLL RAR JMP Q46OD // (TRACKS) = -EVEN ; THEREFORE THE BOUNCE IS TO THE INSIDE DIAMETER // /Q4ID, TAD TTRACKS; TAD TRACKS; CLL RAR; CIA; TAD ID; DCA TARGET; JMP XSEQ /STROBE ID, OD ; ID-1, OD ; ID-2, OD ; ...ETC... / SEQ6, TAD TTRACKS TAD TRACKS SZA CLA JMP Q60D /FIRST ENTRY INTO SEQUENCE #6 / TAD TRACKS CLL IAC RAL DCA TRACKS TAD TRACKS CIA DCA TTRACKS JMP Q46ID / / IF (TARGET) = (OD), THEN STROBE TO INSIDE DIAMETER / Q60D, TAD TARGET CIA TAD OD SZA CLA JMP Q46OD / / / Q46ID, TAD TTRACKS TAD TRACKS CLL RAR CIA TAD ID SKP Q46OD, TAD OD DCA TARGET JMP XSEQ /************ /CONSOLE /************ XCHECKC8, 0 CLA /CHECK IF CONSOL IS ACTIVE TAD 22 AND (400 SNA CLA JMP NOTCL8 /NOT ON ACTIVE CONSOLE TAD I XCHECKC8 /GET CONSOLE CALL DCA PACKDO /STORE IT IN THIS LOC WAITTY /WAIT FOR PRINTING TO FINISH IOF /KILL INTERRUPT CIF 10 /CHANGE INST FIELD TO FIELD ONE PACKDO, 0000 /DO CONSOLE CALL NOP ION /RETURN FROM CONSOLE CALL EXITCK, ISZ XCHECKC8 /BUMP RETURN CLA JMP I XCHECKC8 /EXIT XCHECK NOTCL8, ISZ XCHECKC8 /BUMP FOR NOT CONSOL CALL +2 JMP EXITCK /LEAVE IT BY THIS MEANS /************ /CONSOLE /************ /THIS SUBROUTINE IS ENTERED FROM TESTS: T21, T22, T32, T33 / /THE CONTENTS OF THE AC AT ENTRY IS THE PATTERN TO FILL THE BUFFER WITH / FB128BYTES, . DCA GOOD /THE CONTENTS OF GOOD IS THE PURE PATTERN TAD (100) LCD /FILL BUFFER (8-BIT MODE) JMP .+3 /START BY WAITING FOR TRANSFER REQUEST TAD GOOD XDROUT /TRANSFER OUT TO SECTOR BUFFER STR SKP JMP .-4 /WAIT FOR TRANSFER REQUEST FLAG SDN JMP .-4 /WAIT FOR DONE FLAG SER OK E210, ERROR /UNEXPECTED ERROR FLAG SCOPE JMP I FB128BYTES PAGE /INITIALIZE THE NUMBER OF SECTORS AVAILABLE TO ACCESS (PER TRACK) VIA THE /DIFFERENCE BETWEEN THE CONTENTS OF PROGRAM LOCATIONS " FIRST " AND " LAST ". / XINITSECTORS, . TAD LAST CMA TAD FIRST DCA SECTORS DCA XSTARGET JMP I XINITSECTORS / /GET A SECTOR / /SECTOR ACCESS 1-32 (OCTAL) / XGETASECTOR, . / /SET (SSTART) / XXGETASECTOR, CLL CLA IAC / 1 DCA IF TAD RDC SNA ISZ IF / + 1 RDC SPA CLA JMP .+4 / + 1 WRITE CLL CLA IAC RTL AND TESTP SZA CLA ISZ IF / + 1 8-BIT MODE JMS VT78CK /GO CHECK IF ON VT78 SYSTEM ISZ IF /INCREASE (IF) FOR VT78 NEXTSECTOR, TAD XSTARGET SZA TAD IF /INTERLEAVE FACTOR 1, 2, 3 IAC /NOW INTERLEAVE FACTOR IS 2, 3, 4 DCA XSTARGET TAD XSTARGET TAD (-33) SPA JMP OKSTARGET / < 33 SZA CLA / SKIP OF = 33 STA TAD (-31) TAD XSTARGET DCA XSTARGET OKSTARGET, CLA TAD XSTARGET DCA STARGET / /PREVIOUSLY AL L/S THE FOLLOWING CONDITION WAS TRUE / / 0 < (FIRST) <= (LAST) / /THEREFORE TEST FOR THE CONDITION / / (STARGET) <= (LAST) / TAD LAST CIA TAD STARGET SMA SZA CLA JMP NEXTSECTOR / /AND FOR THE CONDITION / / (FIRST) <= (STARGET) / TAD STARGET CIA TAD FIRST SMA SZA CLA JMP NEXTSECTOR /FORMAT (XTARGET) BITS 0-6 TRACK ; AND BITS 7-11 SECTOR / TAD TARGET CLL RAL RTL RTL TAD STARGET DCA XTARGET /AND SET THE HEADER WORDS 0, AND 1 OF THE WRITE BUFFER FOR RDC I.D. / /WORD 0 IS THE TRACK /WORD 1 IS THE UNIT (BIT 4) AND THE SECTOR (BITS 7-11) / TAD TARGET DCA WBUFFER TAD UNITZ CLL RTL RTL RTL RAL TAD STARGET DCA WBUFFER+1 /WORDS 63 AND 64 OR 127 AND 128 ARE OUT-SUMCHECK WORDS / TAD PATSUMCHECK TAD WBUFFER TAD WBUFFER+1 DCA I WORDX TAD I WORDX TAD I WORDX CIA DCA I WORDY JMP I XGETASECTOR / IF, 0 XSTARGET, 0 / 1 TO 32 / /RANDOM NUMBER GENERATOR / (EXIT IS WITH THE RANDOM # IN THE ACCUMULATOR) RANGEN, . CLL CLA IAC TAD R1 TAD R2 CLL RTL DCA R1 TAD R2 RTR TAD R1 DCA R2 TAD R2 JMP I RANGEN R1, 1234 R2, 0765 / /TESTS / TESTS, T0 T1 T2 T3 T4 T5 T6 T7 T10 T11 T12 T13 T14 T15 T16 T17 T20 T21 T22 T23 T24 T25 T26 T27 T30 T31 T32 T33 T34 T35 T36 T37 NOMORE-3 PAGE / /TYPE 4 OCTAL / XTY4OCT, . SKP DCA TTYBUSY /INITIALIZE TTYBUSY INDICATOR. SETUP XTY4OCT TAD I XTY4OCT ISZ XTY4OCT DCA XOCTAL /FOR " OCTAL " ADDRESS TAD I XOCTAL DCA XOCTAL /OCTAL CLL STA RTL / -3 TAD K7777 / -1 DCA DIGITS SHIFT, CLL STA RTL / -3 DCA SHIFTS TAD XOCTAL XSHIFT, CLL SPA CML RAL ISZ SHIFTS JMP XSHIFT DCA XOCTAL /NEW TAD XOCTAL AND K0007 /OCTAL MASK SNA JMPDIG, JMP ISZDIG /DO NOT PRINT LEADING ZEROS. DCA XXDMP /STORE NUMBER TO BE PRINTED TAD K7000 DCA .-3 /NOP JMP ISZDIG, LEADING ZEROS WILL NOT BE PRINTED TAD XXDMP /RETURN VALUE TO BE PRINTED. TAD (260) /FOR ASCII COMPONENT TYPEIT ISZ CCNT /INDICATES A CHARACTER HAS BEEN PRINTED ISZDIG, ISZ DIGITS /INDEX DIGIT COUNT JMP SHIFT ISZ XCNT /TY8OCT? JMP XTY4OCT+2 /YES TAD CCNT SNA CLA /PRINT ONLY A ZERO?? JMP ZERO /YES CLL CLA CMA DCA XCNT /INIT COUNTER DCA CCNT TAD (JMP ISZDIG) /ESTABLISH FIRST TIME SWITCH. DCA JMPDIG JMP THENEXIT ZERO, TAD (260) TYPEIT JMP .-10 XOCTAL, 0 / " OCTAL " FOR TYPEOUT DIGITS, -3 XXDMP, 0 SHIFTS, -3 CCNT, 0 /THIS ROUTINE WILL DETERMINE DEVICE CODE TO USE IN PLACE /OF THE STANDARD 75 CODE. / /************************************************************* CHNDEV, 0 TAD DTESTP /GET TESTING PARAMETERS. AND (700 /ISOLATE DEVICE CODE TO USE SNA /USE 75? JMP I CHNDEV /YES. CLL RTR RAR /MOVE TO BIT POSITION 6-8. TAD (6700) /PROPER DEVICE CODE SHOULD NOW BE ESTABLISHED. /IF THE OPERATOR HAS MADE AN ERROR THE PROGRAM HAS NO WAY /OF KNOWING IT. / DCA A10 /SET DEVICE CODE = 67X- TAD (XDEVICE-1) DCA A11 /INTO APPLICABLE PROGRAM TAD I A11 SNA JMP .+6 /DEVICE CODE LOCATIONS DCA GOOD TAD A10 DCA I GOOD /SPECIFIED AT ISZ A10 JMP .-7 /PROGRAM LOCATION "DEVICE" TAD I XK67X2A DCA K67X2B /DUPLICATE IOT CODE 67X2 TAD I XK67X2A DCA K67X2C /DUPLICATE IOT CODE 67X2 TAD I XK67X3A DCA K67X3B /DUPLICATE IOT CODE 67X3 TAD I XK67X4A DCA K67X4B /DUPLICATE IOT CODE 67X4 TAD I XK67X5A DCA K67X5B /DUPLICATE IOT CODE 67X5 TAD I XK67X6A DCA K67X6B /DUPLICATE IOT CODE 67X6 TAD I XK67X6A DCA K67X6C /DUPLICATE IOT CODE 67X6 TAD I XK67X7A DCA K67X7B /DUPLICATE IOT CODE 67X7 JMP I CHNDEV /EXIT AND RUN PROGRAM. /PROGRAM DEVICE CODE TABLE / XDEVICE, K67X0 /VT78/SEL - SELECT UNIT A OR UNIT B K67X1 XK67X2A, K67X2A /XDR TRANSFER DATA REGISTER XK67X3A, K67X3A / STR (SKIP ON TRANSFER REQUEST FLAG) XK67X4A, K67X4A / SER (SKIP ON ERROR FLAG) XK67X5A, K67X5A / SDN (SKIP ON DONE FLAG) XK67X6A, K67X6 / CLEAR (AC = 0) / SET (AC = 1) INTERRUPT ENABLE XK67X7A, K67X7A / INIT (INITIALIZE / IMPLIED READ TRACK 0 SECTOR 1) 0 / / / / / / / /ROUTINE TO DETERMINE IF ON APT. / XCHK22, 0 TAD 22 AND (4000 SZA CLA JMP I XCHK22 ISZ XCHK22 JMP I XCHK22 PAGE / /ROUTINE TO TYPE 8 OCTAL DIGITS. /FORMAT TY8OCT; MSB(STARTING ADDRESS OF DOUBLE LOG TO BE PRINTED). / XTY8OCT, 0 TAD I XTY8OCT /GET STARTING ADDRESS DCA .+10 TAD I XTY8OCT IAC /SECOND ADDRESS DCA .+4 CLL CLA CMA RAL /-2 DCA XCNT TY4OCT NOP /REPLACED WITH POINTER TO BE NOP /PRINTED ISZ XTY8OCT /UPDATE RETURN JMP I XTY8OCT /EXIT /SUBROUTINE ; TAB /ENTRY ; TAB ; +N /COMMENT ; PRINT " N " SPACES WHERE N IS VIA INDEXED XTAB / XTAB, . SETUP JMP XTAB DCA XXTAB /FOR COUNT XTABD, CLA TAD XXTAB TAD I XTAB /FOR " N " DCA XXTAB TAD CHARLINE / # OF CHARACTERS ALREADY TYPED ON THIS LINE TAD (110) / 72 CHARACTER LINE STANDARD CIA TAD XXTAB SPA SNA JMP XTABD CIA DCA XXTAB ISZ XTAB TAD (240) TYPEIT ISZ XXTAB JMP .-3 JMP THENEXIT XXTAB, 0 / /SUBROUTINE ; PRINT /ENTRY ; /COMMENT ; PRINT A " MESSAGE ", AND A AT EACH _ / / CALL SYNTAX FOR PRINT / / 1. PRINT; MTEXT / XPRINT, . CHEK22 JMP PNTEXT WAITTY TAD I XPRINT / " TEXT " ISZ XPRINT DCA MESSAGE /ADDRESS NOWORD, TAD I MESSAGE OUTPUT /LEFT BYTE TAD I MESSAGE ISZ MESSAGE BSW OUTPUT /RIGHT BYTE JMP NOWORD MESSAGE, 0 OUTPUT=JMS . XOUTPUT, . AND (-100) /MASK MS BITS 0-5 SZA JMP .+3 DCA TTYBUSY JMP PIEXIT TAD (4100) SNA JMP NULINE / TAD (-4100+2) /CODE 200 SMA IAC /CODE 300 BSW TYPEIT JMP I XOUTPUT NULINE, TAD XOUTPUT DCA XTYPEIT JMP XNULINE XTYPEIT, . JMS TY1ASC ISZ CHARLINE JMP I XTYPEIT XNULINE, TAD (15) / JMS TY1ASC TAD (12) / JMS TY1ASC TAD (-110) / 72 CHARACTER LINE (NEGATIVE NOTATION) DCA CHARLINE JMP I XTYPEIT CHARLINE, -110 / # CHARACTERS PER LINE ARE COUNTED HERE / A14=14 / TY1ASC, . IOF DCA A14 CHEK22 JMP PNTEXT JMS CKSFLG /GO CHECK IF ^S IS ACTIVE TAD A14 TLS CLA TAD TTYBUSY SZA CLA JMP PIEXIT ISZ TTYBUSY TAD (PI) DCA IPI SKP PNTEXT, ISZ XPRINT /UPDATE RETURN. ION JMP I XPRINT / / XTCF, TCF TAD A14 TAD (-207) SNA CLA JMP I XTYPEIT JMP I TY1ASC / / / XSPECIALTYPEIT, . SETUP XSPECIALTYPEIT TAD I XSPECIALTYPEIT ISZ XSPECIALTYPEIT TYPEIT JMP THENEXIT PAGE /ROUTINE TO CHECK IF ^S IS ACTIVE / CKSFLG, 0 IAC /AC=1 CDF 10 TAD C8SFLG /GO GET FLAG (7777 IF SET) CDF 0 SZA CLA /IS FLAG SET? JMP I CKSFLG /NO - RETURN CIF 10 /CHANGE INSTR FIELD TO CONSOLE PACKAGE JMS C8ENTR /GO TO CONSOLE PACKAGE JMP I CKSFLG /RETURN / / / / XWAITTY, . TAD TTYBUSY SZA CLA JMP .-2 JMP I XWAITTY /ENTRY TO THIS POINT WAS CAUSED BY A PROGRAM INTERRUPT REQUEST / PI, DCA XAC RAR DCA XLINK /SAVE (AC) AND (LINK) KSF SKP JMP XKCC /IGNORE KEYBOARD IRQ TSF JMP PISDN /IF THIS TELEPRINTER FLAG IS EXPECTED (TTYBUSY) = 1 /THEN "JMP XTCF" /IF NOT THEN "JMP PIEXIT" / TAD TTYBUSY SMA SZA CLA JMP XTCF TCF JMP PIEXIT /IF (BUSY) = 1, THEN AN RX01 PI IS ALREADY BEING PROCESSED / /IF (GOBIT) = 0, THEN THIS DISKETTE IRQ IS UNEXPECTED / /DISABLE RX01 INTERRUPT / /READ RX01 STATUS REGISTER / PISDN, TAD TTYBUSY TAD BUSY SZA CLA JMP PIEXIT ISZ BUSY /REFRESH PROGRAM LOCATION " FORCE " / DCA XXFORCE / SDN JMP UNKNOWN TAD GOBIT SPA SNA CLA JMP SDNUNEXPECTED INTR XDRIN AND (377) DCA ASTATUS /IF THIS IS TEST # 30 THEN IGNORE DELETED DATA MARKS (IF ANY) / TAD TEST TAD (-T30) SNA CLA JMP DDIGNORE /TECHNICAL NOTE: / /THE COMMANDS "FILL BUFFER" (0), AND "EMPTY BUFFER" (2) /NEVER SHOULD ATTRACT THE "DELETED DATA" STATUS (100) / TAD (16) /COMMAND MASK AND COMMAND /FB(0), OR EB(2) SZA /SKIP IF FILL BUFFER COMMAND (0) CLL RTR SZA CLA /SKIP IF EMPTY BUFFER COMMAND (2) CLL CLA IAC RAL / 2 AND TESTP CLL RTR /PUT TO LINK TAD (100) / 100 AND ASTATUS / A STATUS D.D. MASK / /IF (L) = 0 AND (AC) = 0, o.k. - NO D.D. MARK / /IF (L) = 0 AND (AC) > 0, (=100), UNEXPECTD D.D. / /IF (L) = 1 AND (AC) = 0, D.D. MARK EXPECTED DIDN'T OCCUR / /IF (L) = 1 AND (AC) > 0, o.k. - D.D. MARK OCURRED / SZL SZA CLA / (L) = 1 SZA / (L) = 0, OR (L) = 1 AND (AC) > 0 JMP DDERROR / (L) = 0 AND (AC) > 0 (=100), OR (L) = 1 AND (AC) = 0 DDIGNORE, SER JMP VERIFY /RK01 OK - RETURN TO INLINE CODE JMP RXERROR / /VERIFY THAT THE CONTENTS OF THE A-STATUS REGISTER = 0 / /WHEN NO RX01 ERROR FLAG EXISTS / /MASK BITS 4 (DRIVE READY); AND 5 (DELETED DATA) / VERIFY, TAD ASTATUS AND (73) SZA CLA JMP NOSER JMP XRETURN / /AN UNKNOWN PROGRAM INTERRUPT OCCURED / UNKNOWN, PRINT MUNKNOWN DCA BUSY / PIEXIT, TAD XLINK CLL RAL TAD XAC ION JMP I 0 XAC, 0 XLINK, 0 /THE CONTENTS OF RETURN ARE SETUP WITHIN THE SUBROUTINES "LCD-A" AND "LCD-B" /TO REPRESENT THE RETURN ADDRESS OF THE INLINE TESTING / RETURN, 0 / ERETURN, ISZ RETURN /INCREMENT FOR ERROR RETURN ADDRESS / /ENTRY TO HERE FOR PI SERVICE / /NO RX01 ERROR FLAG EXISTS / XRETURN, DCA BUSY TICK /TIMING FOR APT IF NEEDED. ION JMP I RETURN /...ENTRY TO THIS POINT MAY HAVE BEEN FROM WITHIN THE SUBROUTINE "COMPARE" /WHICH DETECTED A DATA NO STATUS ERROR (DNS), OR /...ENTRY TO THIS POINT MAY HAVE BEEN FROM ROUTINES "XHUNGUP" OR "HUNGUP" /THEREBY FORCING AN ERROR INFORMATION PRINTOUT / XXFORCE, 0 ISZ BUSY JMP RXERROR XFORCE, STA TAD BUSY DCA BUSY ION JMP I XXFORCE DTYPE, MEDDDIDNOT MUDDDID /A DISKETTE DELETED DATA MALFUNCTION HAS BEEN DETECTED / / IF (AC) = 0 - EXPECTED D.D. DIDN'T OCCUR / IF (AC) = 100 - UNEXPECTED D.D. OCCURRED / DDERROR, SZA CLA / 0 OR 1 IAC TAD (DTYPE) DCA XXX /PROGRAMMING NOTE: "SER" TO CLEAR ACCOMPANYING ERROR FLAG (IF ANY) / SER NOP TAD I XXX JMP RXERROR PAGE /A DISKETTE ERROR HAS BEEN DETECTED / / (DMTYPE) NOT = 0 IF A D.D ERROR EXISTS / (DMTYPE) = 0 IF NO D.D ERROR EXISTS / RXERROR, DCA DMTYPE / TAD COMMAND DCA ECOMMAND TAD XXFORCE TAD (-XHUNG) SNA CLA JMP EERROR TAD XXFORCE TAD (-XCOMPARE SNA CLA JMP EERROR SAVEBSTATUS, TAD (16) LCD WAIT SDN JMP .-2 DCA 6 /WAIT POINTER SER NOP XDRIN AND (377) DCA BSTATUS SAVECSSTATUS, TAD UNIT TAD (12) LCD WAIT SDN JMP .-2 DCA 6 /WAIT POINTER SER NOP XDRIN AND (377) DCA CSTATUS /PRINT AN ERROR MESSAGE IF AC SW 4 = 0 / LASSW4, LAS AND (SW4) SZA CLA JMP NOPRINT /THE FOLLOWING INFORMATION IS PRINTED FOR ALL ERRORS DETECTED / /THE ERROR HEADER TEXT IS INHIBITED IF THE ERROR IS NOT THE FIRST ERROR EVER / / / / FAT CMND XDR CODE RST START TARGET XXXX PASS / / / EERROR, TAD TEST /GET TEST IN ERROR AERROR /REPORT ERROR TO APT. ISZ FIRSTERROR JMP NOHEADER PRINT MEHEADER JMP ONECRLF /IF THIS IS "NOT" A FORCED TYPEOUT, AND IF THERE ARE NO DATA COMPARE /ERRORS (COMPRERROR=0), THEN PRINT ONLY 1-CRLF /BECAUSE / /THIS ERROR MUST BE AN ERROR AT THE END OF THE EMPTY BUFFER DONE FLAG /WHICH WOULD BE ASSOCIATED TO ANY PREVIOUS FORCED TYPEOUT OF DATA ERRORS / NOHEADER, TAD XXFORCE SNA CLA JMP TWOCRLF TAD COMPRERROR SZA CLA JMP ONECRLF /IF THIS IS A FORCED TYPEOUT FROM " XINIT " THEN PRINT 1 CRLF / TAD XXFORCE TAD (-XXINIT) SNA CLA JMP ONECRLF TWOCRLF, PRINT MCRLF ONECRLF, PRINT MCRLF TY4OCT TEST TAB 5 JMS INITSWITCH JMP .+5 /IF AN ERROR FROM THE RECAL THEN PRINT (INIT) FOR THE COMMAND / TAD XXFORCE TAD (-XXINIT) SZA CLA JMP .+4 PRINT MINIT JMP TAB12 TY4OCT ECOMMAND TAB12, TAB 12 / /IF THE DEVICE TEST IS HUNG, THEN THE A-, B-, AND C- STATUS IS NOT APPLICABLE / TAD XXFORCE TAD (-XHUNG) SNA CLA JMP DASHALL /IF THIS IS A " FORCED " TYPEOUT THEN THE B- AND C-STATUS REGISTERS /ARE NOT APPLICABLE TO THIS TYPEOUT BECAUSE THEY ARE RESIDUAL FROM THE /PREVIOUS COMMAND WHICH WOULD HAVE HAD A PREVIOUS ERROR TYPE OUT /RELATING TO THE B- AND C-STATUS REGISTERS IF AN ERROR HAD OCCURRED / /A DATA NO ERROR STATUS HAS BEEN DETECTED PRIOR TO THE COMPLETION OF /THE EMPTY BUFFER FUNCTION / TAD XXFORCE TAD (-XCOMPARE) SZA CLA JMP TYASTATUS JMP DASHBC DASHALL, PRINT MDASH TAB 17 DASHBC, PRINT MDASH TAB 24 PRINT MDASH; JMP TAB31 TYASTATUS, TY4OCT ASTATUS TAB 17 TY4OCT BSTATUS TAB 24 JMP TYCSTATUS PAGE TYCSTATUS, TY4OCT CSTATUS TAB31, TAB 31 JMS INITSWITCH JMP .+4 /IF (SSTART) = 0 THEN PRINT "HOME" BECAUSE A RECAL HAS TAKEN PLACE /THEREFORE THE ACTUATOR IS AT TRACK 0 (HOME) / TAD SSTART SZA CLA JMP .+4 PRINT MHOME JMP TAB43 TY4OCT START TAB 36 TY4OCT SSTART TAB43, TAB 43 JMS INITSWITCH JMP PHOME /IF (FORCE) = THE ADDRESS OF "XXINIT" THEN ALSO PRINT [HOME] FOR THE TARGET / TAD XXFORCE TAD (-XXINIT) SZA CLA JMP .+4 PHOME, PRINT MHOME JMP .+7 TY4OCT TARGET TAB 50 TY4OCT STARGET TAB 55 TY4OCT TESTP TAB 2 TY8OCT PASS PASS+1 TAD DMTYPE SNA CLA JMP .+3 PRINT DMTYPE, 0 / /AC SW 11 TO INHIBIT RINGING OF BELL AT ERROR / NOPRINT, DCA FIRSTERROR LAS AND (SW11) SZA CLA JMP .+3 SPECIALTYPEIT BELL /IF ENTRY WAS FROM A "JMS FORCE" THEN EXIT BY A "JMP I FORCE" / TAD XXFORCE SZA CLA JMP XFORCE / /definitive error codes and meanings / / 0 /NO ERROR / 10 /DRIVE 0 FAILED TO SEE HOME ON INITIALIZE / 20 /DRIVE 1 FAILED TO SEE HOME ON INITIALIZE / 30 /FOUND HOME WHEN STEPPING OUT 10 TRACKS FOR INIT / 40 /TRIED TO ACCESS A TRACK GREATER THAN 77 / 50 /HOME WAS FOUND BEFORE DESIRED TRACK WAS REACHED / 60 /SELF DIAGNOSTIC ERROR / 70 /DESIRED SECTOR COULD NOT BE FOUND AFTER LOOKING AT 52 HEADERS / 100 /WRITE PROTECT ERROR / 110 /MORE THAN 40US AND NO SEP CLOCK SEEN / 120 /A PREAMBLE COULD NOT BE FOUND / 130 /PREAMBLE FOUND BUT NO ID MARK FOUND WITHIN ALLOWABLE TIME / 140 /HEADER CRC ERROR / 150 /THE HEADER TRACK ADDRESS OF A GOOD HEADER DOES NOT COMPARE / /WITH THE DESIRED TRACK / 160 /TOO MANY TRIES FOR A IDAM / 170 /DATA AM NOT FOUND WITHIN ALLOTTED TIME / 200 /DATA CRC ERROR / 210 /ALL PARITY ERRORS / /RECAL IF DEFINITIVE ERROR CODE IS A SEEK ERROR / / (NOT CODES 140, 200, OR 210) / RECALIF, LAS AND (SW6) SZA CLA JMP LASSW0 TAD BSTATUS TAD (-140) SNA JMP LASSW0 TAD (-40) SNA JMP LASSW0 TAD (-10) SZA CLA INIT LASSW0, LAS SMA CLA HLT16, HLT /AC SW 0 = 1 (HALT ON ERROR) JMP ERETURN / INITSWITCH, . TAD XWAIT TAD (-SDNSECOND) SZA CLA ISZ INITSWITCH JMP I INITSWITCH / /GENERATES TIMING FOR APT IF NEEDED. / XOK, 0 NOP ISZ XOK /SKIP. JMP I XOK / /VT78/ROUTINE TO SELECT WHICH FLOPPY UNITS TO TEST / SELUNT, 0 TAD DTESTP /GET TEST PARAMETERS AND (40 /TEST BIT 6 SZA CLA /DO ONE OR BOTH UNITS? IAC /BOTH CMA /EITHER A OR B DCA CHECKU /7777=EITHER, 7776=BOTH TAD CHECKU IAC SZA CLA JMP SETUNT /BOTH UNITS SELECTED- DO A THEN B TAD DTESTP AND (1000 /TEST BIT 2 SZA CLA /A OR B? IAC /B ONLY SETUNT, DCA UNITCK /UNIT A=0 UNIT B=1 CKUNIT /SET UP FOR UNIT A OR UNIT B JMP I SELUNT /RETURN CHECKU, 0 PAGE /VT78/ SELECTY IOT TO SELECT EITHER UNIT A OR UN IT B /IF AC11 (0) SELECT UNITA, IF AC11 (1) SELECT UNIT B / XSEL, 0 K67X0, 6750 JMP I XSEL /THE CONTENTS OF THE AC AT ENTRY ARE THE CONTENTS OF PROGRAM LOCATION "TCOMMAND" / XLCD, . DCA COMMAND TAD COMMAND K67X1, 6751 JMP I XLCD /LOAD THE COMMAND FOR: FILL BUFFER, AND EMPTY BUFFER /WITH THE RX01 INTERRUPT ENABLED / /FORM: (AC) IS COMMAND; LCDA; NORMAL RETURN; ERROR RETURN / XLCDA, . TAD UNIT DCA COMMAND /THE CONTENTS OF THE AC WILL = 100 IF 8 BIT MODE / CLL CLA IAC RTL AND TESTP SZA CLA TAD (100) TAD COMMAND DCA COMMAND TAD COMMAND LCD TAD XLCDA DCA RETURN ISZ XLCDA ISZ XLCDA TAD (PI) DCA IPI CLA IAC INTR ION JMP I XLCDA / /LOAD THE COMMAND AND THE TRACK AND SECTOR ADDRESSES AND GO WITH INTERRUPT ENABLE 1 / /FORM: (AC) IS COMMAND; LCDB; NORMAL RETURN; ERROR / XLCDB, . TAD UNIT / 0 OR 20 DCA COMMAND /TEMPORARY STORAGE / /WHEN CONTENTS OF " GOBIT " ARE = 0 ; NO PROGRAM IRQ IS EXPECTED FROM THE DISK / CLL CLA IAC RTL / 4 AND TESTP /TESTP FOR 8/12 BIT MODE SELECTION SZA CLA TAD (100) / 100 FOR 8 BIT MODE SELECTION TAD COMMAND / 4, 14, OR 6 DCA COMMAND LCDBL, TAD COMMAND LCD / /LOAD THE TRACK AND SECTOR ADDRESSES FOR THE COMMANDS: / /WRITE, OR WRITE DELETED DATA, OR READ SECTOR / TAD (LCDBRETURN) DCA RETURN TAD (NOP) DCA XLCDBRETURN CLA IAC INTR /ENABLE RX01 INTERRUPT STR JMP .-1 /SKIP ON TRANSFER REQUEST FLAG TAD STARGET XDROUT /SECTOR STR JMP .-1 /SKIP ON TRANSFER REQUEST FLAG TAD TARGET XDROUT /TRACK TAD (PI) DCA IPI / /WAIT FOR A PROGRAM INTERRUPT REQUEST / / ; BUT WHILE WAITING, DISPLAY IN THE MQ THE CODED INFORMATION /AS INDICATED BY ACCUMULATOR SWITCHES 9, 10, AND 11 AT RUN-TIME / / 0 = TARGET TRACK AND SECTOR / 1 = TEST PARAMETERS (SELECTED FROM SA 200) / 2 = " A " STATUS / 3 = " COMMAND " WORD TO RX01 / XPI, ION TAD (-40) DCA HANGER LAS AND (SW10+SW11) TAD (TAD I DISPLAY) DCA .+1 TAD I DISPLAY MQL ISZ H1 JMP XPI+3 ISZ HANGER JMP XPI+3 CLA TAD (XPI) JMP HUNGUP DISPLAY, XTARGET TESTP ASTATUS COMMAND /RETURN TO HERE IF ANY ERROR OCCURS (OR IF "DONE" FLAG OCCURS) / /IF A PARITY ERROR OCCURS THEN RETRY TO LOAD THE COMMAND / /IF NOT A PARITY ERROR THEN THIS MUST BE THAT "DONE" FLAG I MENTIONED / LCDBRETURN, JMP OTHERRORS / "JMP OTHERRORS" IF RETURN IS OK XLCDBRETURN, NOP CLL CLA IAC RAL AND ASTATUS SNA CLA JMP OTHERRORS /PARITY ERROR - RETRY / ISZ PRETRY JMP LCDBL SCOPE EXIT / /THESE ARE ALL OTHER ERRORS WHICH MAY OCCUR / OTHERRORS, TAD (JMP OTHERRORS) DCA XLCDBRETURN / TAD (LCDBRETURN) CIA TAD RETURN TAD XLCDB DCA XLCDB JMP I XLCDB /TRANSFER DATA REGISTER (FROM) THE RX01 CONTROL / PAGE XXDRIN, . K67X2A, 6752 JMP I XXDRIN /TRANSFER DATA REGISTER (TO) THE RX01 CONTROL / XXDROUT, . K67X2B, 6752 CLA JMP I XXDROUT /SKIP ON TRANSFER REQUEST / XSTR, . K67X3A, 6753 JMP I XSTR ISZ XSTR JMP I XSTR / XSER, . K67X4A, 6754 JMP I XSER ISZ XSER JMP I XSER /SKIP ON RX01 DONE FLAG / XSDN, . K67X5A, 6755 JMP I XSDN ISZ XSDN JMP I XSDN /ENABLE / DISABLE RX01 INTERRUPT ENABLE / / AC = 1 AT ENTRY TO ENABLE INTERRUPT / /FORM: (AC = 0, OR 1); INTR / / (GOBIT) = 0, NO RX01 PI IS EXPECTED / / (GOBIT) = 1, AN RX01 PI IS EXPECTED / XINTR, . DCA GOBIT TAD GOBIT K67X6, 6756 CLA JMP I XINTR /INITIALIZE (POWER CLEAR) THE RX01 SUBSYSTEM / XINIT, . K67X7A, 6757 /THE LABEL " SDNSECOND " MUST RESIDE HERE BECAUSE OF REFERENCES WITIN " ERROR " / CKUNIT /GO CHECK IF ON UNIT A(RXA) OR UNIT B WAIT SDNSECOND, SDN JMP .-2 DCA 6 /WAIT POINTER SER JMP XXINIT /AN ERROR HAS OCCURRED FROM THE "INIT" / / [HOME] WAS THE TARGET / FORCE XXINIT, DCA SSTART JMP I XINIT / / / XINITB, . K67X7B, 6757 JMP I XINITB REMOVE, TEXT "__REMOVE DIAGNOSTIC DISKETTE" MIDENTIFICATION, TEXT "__MAINDEC-08-DIRXA-D" MSELECT, TEXT "__SELECT PARAMETERS (INCLUDING DEVICE CODE)" MDTESTP, TEXT "__TEST PARAMETERS: " MXEHEADER, TEXT "__ERR FAT FAST EAC GOOD PASS" MX2HEADER, TEXT "_WORD GOOD BAD" MCOMMA, TEXT ", " MCRLF, TEXT "_" MEOT, TEXT "_END OF TEST " MHUNGPC, TEXT "_DEVICE TEST HUNG AT PC " MEHEADER, TEXT "__FAT CMND XDR CODE RSTA START TARGET TEST PASS" MHOME, TEXT "[HOME]" MINIT, TEXT "INIT" MOD, TEXT "__OD = " MID, TEXT " ID = " MFIRST, TEXT " FIRST = " MLAST, TEXT " LAST = " MWRITE, TEXT "_WRITE-" MREAD, TEXT "_READ-" MDNSERROR, TEXT "NO CRC BUT" MDWESERROR, TEXT "CRC AND" MSNDERROR, TEXT "CRC BUT NO DATA ERROR" MDATAERROR, TEXT " DATA ERROR_" MWORD, TEXT "WORD" MBYTE, TEXT "BYTE" MGB, TEXT " GOOD BAD" MSUMCHECK, TEXT "_SUM-CHECK IS " MOK, TEXT "OK" MDESUMMARY, TEXT "_TOTAL BAD = " MCOLON, TEXT ":" MDASH, TEXT "-" MEDDDIDNOT, TEXT "_MISSING DD MARK" MUDDDID, TEXT "_UNEXPECTED DD MARK" MSDNUNEXPECTED, TEXT "_UNEXPECTED RX01 IRQ" MNOSER, TEXT "_MISSING ERROR FLAG" MUNKNOWN, TEXT "__UNKNOWN IRQ" MDEV, TEXT "_DEVICE CODE TO BE USED " /THE FOLLOWING IS THE WRITE BUFFER ALLOCATED STORAGE / WBUFFER=. RBUFFER=.+200 *RBUFFER+200 *200 /AUTO START BINARY $$$