/ /RK8E DISKLESS CONTROL TEST / /MAINDEC-08-DHRKA-E-D / /COPYRIGHT (C) 1972, 1975 DIGITAL EQUIP. CORP. / /MAYNARD, MASS. 01754. / FIELD 1 / /CONSOL SRC -V2-R0- CONSOLE PACKAGE /LAS=CALL C8CKSW OR JMS XC8SW /THIS WILL READ THE SWITCH REGISTER FROM THE PLACE SPECIFIED /BY LOCATION 20 BIT 0. /THE PROGRAM SHOULD CHECK FOR A CONTROL CHARACTER FROM THE TERMINAL /EVERY FIVE(5) SECONDS OR SOONER. /LOCATIONS THAT NEED TO BE SET UP FOR USING THE CONSOLE PACKAGE. /CNTVAL IN XC8PASS THIS LOCATION DETERMINDS THE NUMBER OF /PROGRAM COMPLETIONS THAT ARE NEEDED BEFORE THE PASS MESSAGE IS TYPED /THE VALUE SHOULD PUT THE PASS MESSAGE OUT IN THE RANGE OF 1 TO 5 MINUTES. /THIS SHOULD BE A POSITIVE NUMBER. /C8STRT THIS IS FOUND IN CNTRL ROUTINE CONTROL R PART /IT IS THE RETURN WHEN CONTROL R IS ENTERED (RESTART PROGRAM) /THE RETURN JUMPS TO SDOSW WHICH CONTAINS C8STRT SO PUT THE LABEL C8STRT /WHERE YOU WANT TO RESTART THE PROGRAM. /SETUP1 IN XC8ERP THIS IS THE MASK BIT FOR HALT ON ERROR /PLACE THE CORRECT BIT IN THIS LOCATION FOR HALTING ON ERRORS. /SETUP2 IN XC8PASS THIS IS THE MASK FOR HALT A END OF PASS. /THE CALL TABLE IS A CONDITIONAL ASSEMBLY. /TO ASSEMBLE THE CALL REMOVE THE / BEFORE CONSOL=0. /IN COMBINING THE CONSOL PACKAGE TO A DIAGNOSTIC, /THE CALL TABLE IS TO BE AT THE BEGINNING OF A PROGRAM. CONSOL=0 PSKF= 6661 PCLF= 6662 PSKE= 6663 PSTB= 6664 PSTE= 6665 GTF= 6004 ACL= 7701 CAF= 6007 MQL= 7421 MQA= 7501 / *20 / F1SWR, 0 /PSEUDO SWITCH REGISTER F1OP1, 0 /CONTROL 1 F1OP2, 0 /CONTROL 2 / / IFDEF CONSOL < *24 C8PASS= JMS I . XC8PAS /C8 PASS COMPLETION ROUTINE C8CKSW= JMS I . XC8SW /CHECK SW REG SETTING C8TTYI= JMS I . XC8TTY /FETCH CONSOL CHAR C8CNTR= JMS I . XC8CNT /CHECK FOR CONTROL CHAR C8PRNT= JMS I . XC8PNT /C8 PRINT A BUFFER C8SWIT= JMS I . XC8PSW /SET UP PSEUDO SW. REG C8OCTA= JMS I . XC8OCT /CONVERT TO ASCII AND PRINT C8CRLF= JMS I . XC8CRL /DO A CARRIAGE RETURN + LINE FEED C8ECHO= JMS I . XC8ECH /CHECK INPUT CHAR C8TYPE= JMS I . XC8TYP /C8 PRINT ONE CHAR C8ERR= JMS I . XC8ERR /C8 ERROR HANDLER C8INQU= JMS I . XC8INQ /LOOK FOR OPERATOR INTERVENTION C8CKPA= JMS I . XC8CKP /CHECK IF CONTROL CHAR C8PAUS= JMS I . XC8PAU /IF CONSOL PACKAGE RETURN CALL PLUS ONE /IF NOT USING CONSOL REPLACE CALL WITH /A HLT AND THEN GO TO THE HALT /*************************************************************** /*20 /PSEUDO SWITCH REGISTER /*21 /HARDWARE INDICATORS /4000=USE FRONT PANEL SWITCH REGISTER /0000=USE THE PSEUDO SWITCH REGISTER LOC.20 /*22 /SYSTEM CONFIGURATION /400=CONSOL PACKAGE SET ACTIVE /0000=CONSOLE PACKAGE SET DEACTIVE /*23 /RESERVED FOR FUTURE USE > *200 /************************************************************* /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 COMPLETE THIS MANY C8PASS TO BE IN THE 1 TO 4 MINUTE /RANGE / C8PASS=JMS XC8PASS /EX. OF CALL 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 PLUS2 AC=0 /THE LOCATION SETUP2 IS THE MASK BIT FOR THE HALT AT END OF PASS /CHECK THAT IT IS CORRECT FOR THE CURRENT PROGRAM /CALLS USED BY XC8PAS ARE CHKCLA-XC8CRLF-XC8OCTA-XC8SW-XC8PNT-XC8INQ- XC8PAS, 0 CLA JMS I (CHKCLA /IS WORD 22 BIT 3 ACTIVE CONSOLE? JMP DOPACK /IS CLASSIC JMS I (C8GET /GET ALL REGISTERS. JMS XC8SW /DEACTIVE CONSOL CHECK SR SETTING AND (400 /FOR HALT ON END OF C8PASS SZA CLA /1= HALT 0 CONTINUE JMP I XC8PAS /GO TO HALT 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 JMS I (XC8CRLF JMS XC8PNT /C8PRNT BUFFER MESPAS / TAD PASCNT /GET NUMBER JMS I (XC8OCTA /CONVERT IT TO ASCII JMS I (XC8CRLF /DO A CARRIAGE RETURN JMS I (C8GET /GET ALL REGISTERS. JMS XC8SW /CHECK A HALT AT END OF C8PASS SETUP2, AND (400 /MASK BIT SZA CLA /HALT =1 NO SKIP CONTINUE =0 JMS I (XC8INQ /STOP PROGRAM EXECUTION-LOOK FOR INPUT C8BY1, ISZ XC8PAS /BUMP RETURN JMP I XC8PAS CKCOUT, 0 TAD DOSET /CHECK IF SET UP NEEDED SZA CLA /0=SET UP C8PASS COUNT VALUE JMP NOSET /C8PASS COUNT VALUE ON TAD CNTVAL /GET COUNT VALUE FOR THIS PROG CMA /SET TO NEGATIVE DCA DOCNT /STORE IN HERE ISZ DOSET /INDICATE VALUE SET UP NOSET, ISZ DOCNT /COUNT THE NUMBER OF PASSES JMP C8BY1 /EXIT FOR ANOTHER PASS DCA DOSET /SET TO C8PRINT C8PASS ISZ CKCOUT /BUMP RETURN FOR JMP I CKCOUT /C8PASS C8TYPE OUT DOCNT, 0 PASCNT, 0 / DOSET, 0 CNTVAL, 0 MESPAS, TEXT "DHRKAE PASS " /********************************************************************* /C8CKSW /THIS ROUTINE CAN BE USED INPLACE OF A READ THE SWITCHES LAS. /ROUTINE THAT WILL CHECK WHERE TO READ THE /C8 SWITCHES FROM IE. FROM PANEL OR PSEUDO SWITCH REGISTER /THE SELECTION IS DETERMINED BY THE STATE OF BIT 0 IN LOCATION 21. /C8CKSW= JMS XC8SW /EX. JMS XC8SW /READ THE C8SWIT REGISTER /RETURN WITH THE CONTENTS OF SWITCH REGISTER /RETURN TO NEXT LOCATION FOLLOWING CALL WITH THE AC= TO VALUE OF C8SWIT SETTING /CALLS USED ARE-XC8CKPA- XC8SW, 0 JMS I (XC8CKPA /GO CHECK THE IF ANY CONTROL NOP TAD F1OP1 /GET WD FOR INDICATOR SPA CLA /CHECK IF FROM PANEL 4000 7614 /DO LAS AND SKIP GET FROM PANEL WITH LAS TAD F1SWR /PSEUDO SWITCH JMP I XC8SW /EXIT WITH STATUS BIT IN AC /************************************************************** /C8TTYI /THIS ROUTINE WILL LOOK FOR A INPUT FROM THE TERMINAL /AND REMOVE ANY PARITY BITS, THEN MAKE IT 8 BIT ASCI. / C8TTYI= JMS XC8TTY /EX. JMS XC8TTYI /READ CHAR FROM THE CONSOL DEVICE / /RETURN TO CALL PLUS ONE AC CONTAINS THE CHAR /CALLS USED -NONE- BUT C8CHAR IS OFF PAGE AND IN ROUTINE CALLED XC8ECHO / / XC8TTY, 0 KSF /LOOK FOR KEYBOARD FLAG JMP .-1 KRB /GET CHAR AND (177 /MASK FOR 7 BITS TAD (200 /ADD THE EIGHTH BIT DCA I (C8CHAR /STORE IT TAD I (C8CHAR JMP I XC8TTY /EXIT /********************************************************************* /C8PRNT /THIS ROUTINE WILL TYPE THE CONTENTS OF THE C8 PRINT BUFFER, THE LOCATION /OF THE BUFFER WILL BE IN THE ADDRS FOLLOWING THE CALL. PRINTING OF THE BUFFER /WILL STOP WHEN A 00 CHAR IS DETECTED. CHARACTERS ARE PACKED 2 PER WORD. / C8PRNT= JMS XC8PNT /EX. JMS XC8PNT /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 /CALLS USED ARE-XC8TYPE-XC8PNT- XC8PNT, 0 CLA CLL TAD I XC8PNT /GET C8PRNT BUFFERS STARTING LOCATION DCA PTSTOR /STORE IN PTSTOR ISZ XC8PNT /BUMP RETURN C8D01, 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 CHART IN BITS 4-11 MAKE IT 8 BIT ASCII JMS I (XC8TYPE /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 I (XC8TYPE /C8TYPE ONLY BITS 4-11 ISZ PTSTOR /BUMP POINTER FOR NEXT WORD JMP C8D01 /DO AGAIN PTSTOR, 0 /STOR FOR X8PRNT BUFFER /************************************************************************** /C8PAUS /THIS ROUTINE WILL CHECK IF THE CONSOL PACKAGE IS ACTIVE.IF ACTIVE /IT WILL RETURN TO CALL PLUS ONE AC= 0, AND DO THAT INSTRUCTION. /IF THE CONSOL PACKAGE IS NOT ACTIVE THE CALL WILL BE REPLACED /WITH A 7402 HALT AND THEN RETURN TO THE HALT. / C8PAUS= JMS XC8PAU / / /EX. JMS XC8PAUS /CHECK IF ON ACTIVE CONSOL IF NOT HALT HERE / ANYTHING /RETURN HERE IF ON ACTIVE CONSOL / / /CALLS USED ARE -CHKCLA- XC8PAU, 0 CLA CLL JMS I (CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT JMP C8DO3 /GO DO CONSOL PART RETURN CALL+1 CMA /DEACTIVE CONSOLE PACKAGE PUT HLT IN CALL TAD XC8PAU /GET CORRECT RETURN ADDRS DCA XC8PAU /SET UP RETURN TAD (7402 /GET CODE FOR HLT DCA I XC8PAU /PUT HALT IN CALL LOCATION C8DO3, JMP I XC8PAU /GO TO HALT OR RETURN TO NEXT LOCATION PAGE /************************************************************************** /C8CNTR /THIS ROUTINE WILL CHECK FOR THE PRESENCE OF CONTROL CHARACTERS /IT WILL CHECK FOR THE FOLLOWING CHAR C-R-Q-L-S / C8CNTR= JMS XC8CNT /EX. JMS XC8CNTR /CHECK FOR CONTROL CHARACTER / JMP ANYTHING /LOC FOLLOWING THE CALL IS FOR CONTINUING THE PROGRAM / JMP ANYTHING /LOC. IS FOR RETURN IF INMODE SET AND NOT CNTRL CHAR / /RETURN IS TO CALL PLUS ONE IF CONTINUE /RETURN IS TO CALL PLUS TWO IF INMODE SET AND NOT CONTROL CHAR /RETURN IS TO CALL PLUS TWO IF INMODE IS NOT SET AND NO /CONTROL CHAR ..THIS WILL PRINT THE CHARACTER AND A ? /CLEAR THE AC AND RETURN CALL+2. /CALLS USED ARE-CHKCLA-XC8TYPE-XC8CRLF-C8GET-UPAROW-XC8TYI-XC8PSW- / / / XC8CNT, 0 DCA I (ACSAVE /SAVE THE AC JMS I (CHKCLA /CHECK LOC.22 BIT3 FOR CONSOLE BIT JMP .+3 /ON ACTIVE CONSOLE TAD I (ACSAVE /DEACTIVE CONSOLEGET AC FOR RETURN JMP I XC8CNT /EXIT NOT ON ACTIVE CONSOLE GTF DCA I (FLSAVE MQA DCA I (MQSAVE /SAVE THE MQ DCA INDEXA /SET DISPLACEMENT INTO TABLE B TAD XTABLA /GET ADDRS OF TABLE A DCA GETDAT /CONTAINS POINTER TO CONTROL CHAR REDOA, TAD I GETDAT /GET CONTROL CHAR FROM TABLE SNA /CHEC FOR A 0 END OF TABLE JMP DONEA /END OF TABLE NO CONTROL CHAR TAD I (C8CHAR /COMPARE CHAR TO CONTROL CHAR SNA CLA /0 IF MATCH JMP GOITA /MATCH ISZ INDEXA /NO MATCH NOT END OF TABLE REDO ISZ GETDAT /BUMP INDEX FOR EXIT WHEN CONTROL FOUND JMP REDOA /BUMP GETDAT FOR CONPARE OF NEXT CNTRL CHAR, DONEA, TAD I (INMODE /CHECK IF PROGRAM EXPECTS CHAR SZA CLA /1=CHAR EXPECT 0= NO CHAR EXPECTED JMP EXITA /CHAR EXPECTED TAD I (C8CHAR /GET CHAR - NOT CONTROL + NOT EXPECTED JMS I (XC8TYPE /C8PRNT CHAR TAD (277 /GET CODE FOR "?" JMS I (XC8TYPE JMS I (XC8CRLF ISZ XC8CNT /BUMP RETURN JMP I XC8CNT /EXIT CALL+2 EXITA, ISZ XC8CNT /BUMP RETURN FOR MAIN PROGRAM CHECK OF CHAR TAD I (C8CHAR /PUT CHAR IN AC. JMP I XC8CNT /EXIT GOITA, TAD I (C8CHAR /GET THE CONTENTS OF CHAR TAD (100 /ADD 100 TO FORM A GOOD ASCII CHARACTER DCA I (C8CHAR /RESTORE COFFECT CHAR TAD XTABLB /GET START OF TABLE B TAD INDEXA /GET HOW FAR INTO TABLE DCA GOTOA /STORE IT TAD I GOTOA /GET THE ROUTINE STARTING ADDRESS DCA GOTOA /STORE IT IN HERE JMP I GOTOA /GO TO THE CONTROL CHAR ROUTINE GOTOA, 0000 /ADD OF CNTRL ROUTINE TO EXECUTE INDEXA, 0000 /DISPLACEMENT INTO CNTRL TABLE GETDAT, 0000 /LOCATION OF ADDRS OF CONTROL CHAR. XTABLA, TABLA /ADDRS OF TABLEA XTABLB, TABLB /ADDRS OF TABLEB TABLA, 7575 /CNTRL C BACK TO MONITOR 203 7564 /CNTRL L SWITCH ERROR PRINTTING DEVICE 214 7557 /CNTRL Q START DISPLAYING CHAR, AGAIN 221 7556 /CNTRL R BACK TO BEGINNING OF PROGRAM 222 7555 /CNTRL S STOP SENDING CHAR TO DISPLAY WAIT FOR CNTRL Q 223 7573 /CNTRL E CONTINUE WITH PROGRAM 205 7574 /CONTROL D CHANGE SWITCH REGISTER ON FLY 0000 TABLB, CNTRLC CNTRLL CNTRLQ CNTRLR CNTRLS CNTRLE CNTRLD / /CONTROL Q /START SENDING CHAR. TO THE DISPLAY /THIS WILL RETURN CONTROL TO THE CALL THAT WAS SET BY /THE CALL FOR CONTROL S. / CNTRLQ, DCA I (INMODE /SET SOFT FLAG FOR UNEXPECTED CHAR TAD C8SETS /CHECK IF CONTROL S TYPED IN SZA CLA JMP BYRETR /CONTROL S TYPED IN JMS I (C8GET /NO CONTROL S TYPED PREVIOUSLY JMP I XC8CNT /LEAVE BIA CNTR ENTRY ADDRESS BYRETR, DCA C8SETS /CLEAR THE SOFT FLAG JMS I (C8GET /RESTORE REGISTERS JMP I C8RETR /EXIT TO ADDRESS SET BY CONTROL S / / /CONTROL R /GO TO THE QUESTION C8SWIT CNTRLR, DCA I (TTYLPT /CLEAR THE TYPE FLAG SET TO TTY DCA C8SETS /CLEAR SOFT FLAG FOR CNTRL S DCA I (INMODE JMS I (UPAROW /PRINT THE ^ AND C8CHAR C8BY4, DCA I (C8SWST /CLEAR FLAG FOR CNTRL D OR R CDF CIF 00 JMP I XDOSW /GO TO ADDRS OF C8SWIT XDOSW, BGN /DOSW IS LABEL FOR C8SWIT QUESTION / / /CONTROL S /STOP SENDING CHAR. TO DISPLAY UNTIL A ^Q IS RECEIVED / / CNTRLS, TAD C8SETS /IF1 DO NOT STORE IN C8RETR SZA CLA JMP C8DO7 /DONT SET UP C8RETR IAC /MAKE RETURN CALL PLUS 2 TAD XC8CNT /GET RETURN FOR THIS CALL DCA C8RETR /STORE IT HERE FOR USE BE CONTROL Q C8DO7, ISZ C8SETS /SET FLAG TO SAVE CALL JMS I (XC8TTYI /LOOK FOR THE INPUT JMS I (C8GET /GET REGISTERS JMS XC8CNT /CHECK FOR THE CONTROL CHAR CLA JMP CNTRLS /IF NOT A CNTRL Q R C REASK C8SETS, 0 C8RETR, 0 / /SWITCH OUTPUT FROM ONE OUTPUT DEVICE TO ANOTHER - THE TWO OUTPUTS ARE THE /CONSOLE AND THE PRINTER WITH DEVICE CODE 66. / / CNTRLL, TAD I (TTYLPT /GET PRESENT C8SWIT INDICATOR CMA /COMPLEMENT IT DCA I (TTYLPT /STOR NEW C8SWIT JMS I (UPAROW /C8PRNT ^ AND CHAR ON NEW DEVICE JMS I (C8GET /RESTORE THE REGISTERS JMP I XC8CNT /EXIT / /CONTROL E /CONTINUE RUNNING FROM A INQUIRE OR ERROR / / CNTRLE, JMS I (UPAROW /PRINT THE CONTROL CHAR DCA I (C8SWST /CLEAR FLAG. JMS I (C8GET /GET THE REGISTERS JMP I XC8CNT /RETURN TO CALL PLUS ONE / /CONTROL C /RETURN TO MONITOR CONTROL C CNTRLC, DCA I (TTYLPT /CLEAR THE LPT FLAG TO PRINT ON DISPLAY DCA I (C8SWST /CLEAR FLAG. JMS I (UPAROW /C8PRINT A^ AND LETTER IN CHAR CDF CIF 00 /GO TO 0 FLD CAF /CLEAR THE WORLD JMP I (7600 /GO TO DIAGNOSTIC MONITOR /********************************************************************** / / / PAGE / /CONTROL D /CHANGE THE SWITCH REGISTER ANYTIME CNTRL D AND RETURN TO /THE PROGRAM RUNNING. CNTRLD, JMS UPAROW TAD C8SETD /CHECK IF THE RETURN ADDRS IS SAFE SZA CLA JMP C8DO11 /DO NOT CHANGE THE RETURN ADDRS TAD I (XC8CNT /GET THE RETURN ADDRS AND SAVE IT DCA C8RETD /SAVE THE RETURN HERE ISZ C8SETD /INDICATE RETURN SAVED DONT DESTROY C8DO11, JMS XC8PSW /GO CHANGE THE SWITCH REGISTER DCA C8SETD /CLEAR THE FLAG JMS C8GET /RESTORE THE AC MQ LINK ETC JMP I C8RETD /RETURN TO THE PROGRAM / C8SETD, 0 C8RETD, 0 /THIS WILL TYPE A UP ARROW AND THE CHAR IN C8CHAR. UPAROW, 0 /C8RNT THE "^" AND THE CHAR TYPED IN TAD (336 /CODE FOR ^ JMS I (XC8TYPE TAD I (C8CHAR /C8TYPE THE CHAR JMS I (XC8TYPE JMS I (XC8CRLF JMP I UPAROW /EXIT /******************************************************************** C8GET, 0 CLA TAD I (MQSAVE MQL /RESTORE QM TAD I (FLSAVE RAL /RESTORE THE LINK CLA TAD I (ACSAVE /RESTORE THE AC JMP I C8GET /GET THE REGISTERS /******************************************************************** /C8INQU /C8INQU ROUTINE WILL PRINT A WAITING /AND THE PROGRAM IS EXPECTING A CONTROL CHAR INPUT /IF CONTINUE FROM CONTROL CHAR RETURN IS CALL PLUS ONE /IF NO CONTROL CHAR ENTERED THEN WAITING IS REPRINTED /AND PROGRAM WAITS FOR A CONTROL CHAR AGAIN. / C8INQU = JMS XC8INQ /EX. JMS XC8INQ /C8 WILL PRINT A WAITINGAND WAIT FOR INPUT / DO ANYTHING /RETURN IS CALL PLUS ONE AC =0 CONTINUE /CALLS USED ARE -CHKCLA-XC8PNT-XC8TYI-C8GET-XC8CNTR- XC8INQ, 0 CLA CLL JMS I (CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT SKP /ACTIVE CONSOLE PACKAGE JMP I XC8INQ /NOT CONSOLE LEAVE JMS I (XC8PNT WATMES /INQUIR WAITING JMS I (XC8TTYI /GET CHARACTER JMS C8GET JMS I (XC8CNTR /CHECK IF CONTROL CHARACTER JMP I XC8INQ /EXIT AND CONTINUE JMP XC8INQ+1 /REASK WATMES, TEXT "WAITING " /******************************************************************** /C8SWIT /ROUTINE WILL CHECK IF CONSOL IS ACTIVE IF IT IS ACTIVE DISPLAY /SW QUESTION. IF NOT ACTIVE IT WILL NOT PRINT THE SW QUESTION BUT /RETURN TO CALL PLUS ONE AC=0. /C8SWIT WILL SET UP THE PSEUDO SWITCH /REGISTER WITH THE NEW DATA ENTERED / / C8SWIT = JMS XC8PSW /EX. JMS XC8PSW /SET UP PSEUDO C8SWIT REGISTER IF /ON THE CONSOL PACKAGE. RETURN IS CALL PLUS ONE AC = 0 /CALLS USED ARE -CHKCLA-XC8PSW-XC8PNT-XC8OCTA-XC8TYPE- XC8PSW, 0 JMS I (CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT SKP /ACTIVE CONSOLE JMP I XC8PSW /DEACTIVE CONSOLE PACKAGE /RETURN WITHOUT ASKING PSEUDO SWITCH TAD C8SWST /IS THE SOFT FLAG SET FOR SWITCH? SZA CLA /SKIP IF ONE ENTRY AT ATIME OK JMP I (C8BY4 /SECOND ENTRY WITHOUT A EXIT GO TO SW QUESTION ISZ C8SWST /FIRST ENTRY SET FLAG C8RDPS, JMS I (XC8PNT /C8PRINT SR= MESA TAD F1SWR /GET CONTENTS OF SW JMS I (XC8OCTA /CONVERT IT TO ASCII TAD (40 /GET SPACE JMS I (XC8TYPE ISZ I (INMODE /SET FLAG FOR CHAR EXPECTED JMS I (XC8ECHO /LOOK FOR INPUT JMS TSTCHA /NOT CONTROL TEST IT IS LEGAL TAD I (C8CHAR /STORE NEW CHAR IN SW REG DCA F1SWR TAD (-3 /GET A MINUS 3 DCA TMPCNT /STORE IN TEMP COUNT GETCH1, JMS I (XC8ECHO /GET NEXT CHAR JMS TSTCHA /CHECK IF CR + GOOD CHAR TAD F1SWR /GET C8SWIT REGISTER CLL RTL /ROTATE IT LEFT 3 PLACES RAL TAD I (C8CHAR /GET CHAR + ADD IT TO PREVIOUS CONTENTS DCA F1SWR /SAVE NEW CONTENTS ISZ TMPCNT /BUMP COUNT JMP GETCH1 /JMP BACK + GET NEXT CHAR JMP ENDIT /END 4 CHAR C8TYPED IN TSTCHA, 0 CIA /CMPL CHAR IN AC TAD (215 /TEST IF IT IS A CARRIAGE RETURN SNA CLA /SKIP IF NOT CR. JMP ENDIT /WAS CARRIAGE RETURN TAD I (C8CHAR /NOT CR, GET CHAR TAD (-260 /CHECK IF IT IS IN RANGE SPA CLA /IF NOT POSITIVE C8ERR CHAR SMALLER THAN 260 JMP ERR1 /C8ERR - CHAR TOO SMALL TAD I (C8CHAR /GET CHAR TAD (-270 /GET A -270 + CHECK IF IT IS LARGER THAN 7 SMA CLA /SKIP IF LESS THAN 7 JMP ERR1 /C8ERR ON CHAR NOT IN RANGE TAD I (C8CHAR /GET CHAR AND (7 /MASK FOR RIGHT BYTE DCA I (C8CHAR /STORE IN CHAR /GET CHAR IN AC JMP I TSTCHA /EXIT ERR1, TAD (277 /C8PRNT JMS I (XC8TYPE /? JMS I (XC8CRLF / JMP C8RDPS /EXIT + ASK AGAIN ENDIT, JMS I (XC8CRLF /DO A CR LF DCA C8SWST /CLEAR THE PSW ENTRY FLAG JMP I XC8PSW /EXIT ROUTINE C8SWST, 0 TMPCNT, 0 MESA, TEXT "SR= " PAGE /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 TERMINAL / C8OCTA= JMS XC8OCT / /EX. JMS XC8OCTA /AC CONTAINS THE NUMBER TO BE CHANGE / RETURN IS TO CALL PLUS ONE AC=0 / /CALLS USED ARE -XC8TYPE- XC8OCT, 0 CLL RTL RTL /POSITION THE FIRST CHAR FOR PRINTING DCA C8TMP1 /SAVE CORRECT 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 XC8TYP /TYPE THE NUMBER TAD C8TMP1 / RTL RAL /PUT 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 /********************************************************************* /C8CRLF /C8TYPE CR AND LF WITH FILLERS FOLLOWING EACH LF AND CR / / C8CRLF= JMS XC8CRL / /EX. JMS XC8CRLF /C8PRNT A CR AND LF WITH FILL / /RETURN TO CALL PLUS ONE AC =0 /CALLS USED ARE -XC8TYPE- XC8CRL, 0 CLA CLL TAD (215 /GET CODE FOR CR JMS XC8TYP TAD FILLER CMA DCA FILCNT /STORE FILLER IN HERE TAD (212 /GET CODE FOR LF C8DO2, JMS XC8TYP ISZ FILCNT /CHECK ON FILLER CHAR JMP C8DO2 /TYPE A NON PRINTING CHAR JMP I XC8CRL /EXIT FILLER, 0004 /FILLER SET FOR 4 CHAR FILCNT, 0 /COUNTER FOR FILL //************************************************************* /C8CKPA /THIS ROUTINE WILL CHECK IF A CHARACTER WAS ENTERED FROM THE /TERMINAL. IF THE FLAG IS SET AND THE CONSOLE PACKAGE IS /ACTIVE A CHECK IS MADE TO DETERMINE IF IT IS A CONTROL CHAR. /IF IT WAS A CONTROL CHAR THEN ITS CONTROL FUNCTION IS PERFORMED. /IF NOT A CONTROL CHARACTER OR A CONTROL E-D-L-O- IT WILL DO /THE CONTROL FUNCTION AND RETURN TO CALL PLUS 2. /A NON CONTROL CHARACTER WILL BE PRINTED AND A "?" IT WILL RETURN TO /CALL PLUS 2. /IF NO FLAG IS SET OR THE CONSOL IS NOT ACTIVE THE RETURN IS TO /CALL PLUS 1. / C8CKPA= JMS XC8CKP /EX. JMS XC8CKPA /CALL TO CHECK IF CONTROL CHAR SET / ANYTHING(SKIP) /RETURN IF NOT FLAG OR NOT CONSOLE ACTIVE / ANYTHING(JMP EXIT SKIP CHAIN) /RETURN IF NOT CONTROL OR CONTINUE CONTROL /CALLS USE ARE -XC8TTYI-XC8CNTR-C8GET- XC8CKP, 0 DCA I (ACSAVE /SAVE THE AC GTF /SAVE THE FLAGS DCA I (FLSAVE /SAVE THE FLAGS MQA /PUT MQ IN AC DCA I (MQSAVE /SAVE THE MQ KSF /CHECK THE KEYBOARD FLAG JMP C8BY3 /EXIT TO CALL PLUS 1 JMS I (CHKCLA /CHECK LOC 22 BIT 3 CONSOLE BIT SKP /ACTIVE CONSOLE PACKAGE JMP C8BY3 /EXIT TO CALL PLUS 1 JMS I (XC8TTYI /GET THE CHAR JMS I (C8GET /GET THE FLAGS JMS I (XC8CNTR /CHECK IF CONTROL CHAR. NOP /RETURN IF A CONTINUE CHAR. ISZ XC8CKP /BUMP RETURN FOR CALL PLUS 2 C8BY3, JMS I (C8GET /GET REGISTERS JMP I XC8CKP /SAY GOOD BYE //********************************************************************* /C8ECHO /THIS ROUTINE WILL LOOK FOR A CHAR FROM THE KEYBOARD. STORE IT IN LOCATION CHAR /CHECK IF IT WAS A CONTROL CHARACTER - SET INMODE - PRINT CHARACTER / C8ECHO = JMS XC8ECH /EX. JMS XC8ECHO /LOOK FOR CONSOL CHAR C8PRNT IT /RETURN CALL PLUS ONE AC = CHAR C8TYPED IN /CALLS USE ARE -XC8TTYI-XC8CNTR-C8GET-XC8ECH-XC8TTYPE / XC8ECH, 0 JMS I (XC8TTYI /WAIT FOR CHAR FROM KEYBOARD JMS I (C8GET /RESTORE THE REGISTERS ISZ INMODE /SET INMODE IDENTIFING THIS AS A EXPECTED CHAR JMS I (XC8CNTR /GO CHECK IF IT IS A CONTROL CHAR JMP I XC8ECH /WAS A CONTROL CHAR - CONTINUE RUNNING JMS XC8TYP /NOT A CONTROL CHAR C8PRINT IT DCA INMODE /CLEAR FLAG THAT CHAR EXPECTED TAD C8CHAR /GET CHAR IN AC JMP I XC8ECH /EXIT C8CHAR, 0 INMODE, 0 /********************************************************************** /C8TYPE /THIS ROUTINE WILL C8PRINT ON THE CONSOLE OR THE LPT WITH DEVICE CODE 66. / / C8TYPE= JMS XC8TYP /EX. JMS XC8TYPE /C8PRNT THE CHAR IN THE AC. / /RETURN CALL PLUS ONE AC =0000 /DO NOT CLEAR THE LINK IN THIS ROUTINE NEEDED BYC8OCT /CALLS USED ARE -C8CHANG-XC8CNTR-XC8PNT-XC8CRLF-XC8INQU- XC8TYP, 0 DCA PNTBUF /STORE CHAR TAD TTYLPT /CHECK 0=TTY 7777=LPT SZA CLA JMP XDOLPT /DO OUT PUT ON LPT TAD PNTBUF TLS TSF JMP .-1 TCF JMP C8BY5 XDOLPT, TAD PNTBUF /GET CHAR PSTB PCLF /C8PRNT IT JMS C8HANG /CHECK KEYBOARD FLAG IF HUNG PCLF /CLEAR THE FLAG C8BY5, 7600 CLA /CLEAR THE AC JMP I XC8TYP /EXIT PNTBUF, 0 TTYLPT, 0 C8HANG, 0 CLA / TAD C8BY5 /GET CONSTANT 7600 DCA PNTBUF /PNTBUF IS NOW A COUNTER PSKF /SKIP ON PRINTER DONE SKP /NOT DONE YET JMP I C8HANG /SAW FLAG DONE ISZ C8CONT /FIRST COUNTER FAST ONE JMP .-4 /CHECK IF FLAG SET YET ISZ PNTBUF /MADE 4096 COUNTS ON FAST COUNTER JMP .-3 /KEEP IT UP FOR 5 SEC TAD I (XC8CNTR /GET THE RETURN ADDRESS IN CONTROL DCA C8HANG /SAVE IT IN HANG DCA TTYLPT /ALLOW PRINTING ON TTY JMS I (XC8PNT MESHAN /LPT ERROR JMS XC8CRL JMS I (XC8INQU /PRINT WAITING JMP I C8HANG /CONTINUE TO SAVE ADDRESS C8CONT, 0 /COUNTER FOR TIMER MESHAN, TEXT "LPT ERROR" PAGE /******************************************************************* /******************************************************************* /THIS ROUTINE WILL CHECK LOCATION 22 THE HARD WARE CONFIG WORD, /TO SEE IF THE CONSOLE BIT 3 (400) IS SET IF SET THEN RETURN /TO CALL PLUS TWO FO A ACTIVE CONSOLE PACKAGE AC=0 /IF NOT SET THEN TO CALL PLUS ONE FOR A DEACTIVE CONSOLE PACKAGE. CHKCLA, 0 CLA TAD F1OP2 /GET THE CONTENTS OF LOCATION 22 AND (400 /MASK FOR BIT 3 (400 SNA CLA / ISZ CHKCLA /ACTIVE CONSOLE PACKAGE RETURN /CALL PLUS ONE (1) FOR ACTIVE JMP I CHKCLA /DEACTIVE CONSOLE PACKAGE RETURN /CALL PLUS TWO (2) /C8ERR /THIS ROUTINE WILL DETERMINE WHAT TO DO WHEN A C8ERR IS ENCOUNTERED /WILL CHECK IF CLASSIC SYSTEM, WILL CHECK X8SWIT REGISTERS. / C8ERR= JMS XC8ERR /EX. JMS XC8ERR /GO TO C8ERR CALL IF NOT CONSOL / /RETURN IS CALL PLUS ONE AC =0000 /CALLS USE ARE -CHKCLA-XC8CRLF-XC8SW-XC8INQU-XC8PNT-XC8OCTA- XC8ERR, 0 IOF DCA ACSAVE /SAVE AC GTF DCA FLSAVE /SAVE THE FLAGS MQA DCA MQSAVE /SAVE THE MQ CLA CLL CMA /SUBTRACT A 1 FOR TRUE LOCATION TAD XC8ERR /GET RETURN LOCATION DCA PCSAVE /SAVE ADD OF C8ERR CALL CDF 0 CLA CLL CMA TAD I (CLASIK DCA REALPC /SAVE REAL PC. CDF 10 JMS CHKCLA /CHECK LOC.22 BIT 3 CONSOL BIT SKP /ACTIVE CONSOLE PACKAGE JMP NTCLAS /NOT CLASSIC SYSTEM JMS I (C8GET /GET ALL REGISTERS. JMS I (XC8SW /CHECK SWITCH REG FOR BIT THAT INDICATES /NO ERROR MESSAGE SETUP1, AND (0000 /MASK FOR BIT FOR NO ERROR PRINTING /IF THIS ERROR MESSAGE IS TO ALWAYS /BE PRINTED LEAVE AND VALUE AT 0000 SZA CLA /SKIP IF BIT IS 0 PRINT ERROR MESSAGE JMP C8DO10 /DO NOT PRINT JMS I (XC8CRLF JMS I (XC8PNT ERRMES /PRINT THE ERROR MESSAGE JMS I (XC8PNT MESPC /PRINT THE PC STATEMENT TAD REALPC JMS I (XC8OCTA /CONVERT 4 DIGIT PC TO ASCII JMS I (XC8PNT MESAC /PRINT THE AC MESS TAD ACSAVE JMS I (XC8OCTA JMS I (XC8PNT MESMQ /PRINT MQ TAD MQSAVE JMS I (XC8OCTA JMS I (XC8PNT MESFL TAD FLSAVE JMS I (XC8OCTA JMS I (XC8CRLF C8DO10, JMS I (C8GET /GET ALL REGISTERS. JMS I (XC8SW /CHECK THE SWITCH REGISTER SKP CLA /SKIP IF BIT 0 SET JMP C8BY2 /LEAVE JMS I (XC8INQ /GO TO THE INQUIRE ROUTINE JMP C8BY2 /LEAVE NTCLAS, JMS I (C8GET /GET ALL REGISTERS. JMS I (XC8SW /CHECK PSEUDO SWITCH REGISTER /CHECK THE C8SWIT REGISTER SKP CLA /SKIP IF HALT JMP I XC8ERR /NO HALT CONTINUE TAD (7402 /CODE FOR HLT DCA I PCSAVE /PUT IT IN CALL LOC. JMS I (C8GET JMP I PCSAVE /EXIT TO CALL AND HALT C8BY2, JMS I (C8GET /GET THE REGISTERS JMP I XC8ERR ROUINS, HLT /PUT INSTRUCTIONS TO EXECUTE HERE!!!! NOP DCA MYAC /SAVE AC. CDF 0 TAD F1SWR DCA I (SWR /MOVE SWITCHES DOWN. TAD I (CLASIK DCA CLRTRN TAD MYAC CIF 00 JMP I CLRTRN CLRTRN, 0 REALPC, 0 MYAC, 0 ERRMES, TEXT "DHRKAE FAILED " MESPC, TEXT " PC:" MESAC, TEXT " AC:" MESMQ, TEXT " MQ:" MESFL, TEXT " FL:" PCSAVE, 7777 ACSAVE, 7777 MQSAVE, 7777 FLSAVE, 7777 / FIELD 0 / /ALL KNOWN HLTS. / / ERHLT1 /UNDEFINED INTERRUPT ERHLT2 /SKIP TRAP FOR DCLR ERHLT3 /SKIP TRAP FOR DLAG ERHLT4 /SKIP TRAP FOR DLCA ERHLT5 /SKIP TRAP FOR DRST ERHLT6 /SKIP TRAP FOR DLDC ERHLT7 /SKIP TRAP FOR DMAN ERHLT9 /RECOVERABLE ERROR HALT ENDHLT /END OF TEST HALT STPHLT /HALT FROM SWR4=1 CHNHLT /IOT CHANGE HALT / DSKP=6741 /SKIP ON TRANSFER DONE OR ERROR DCLR=6742 /CLEAR DISK CONTROL LOGIC DLAG=6743 /LOAD ADDRESS AND GO DLCA=6744 /LOAD CURRENT ADDRESS DRST=6745 /READ STATUS REGISTER DLDC=6746 /LOAD COMMAND REGISTER DMAN=6747 /LOAD MAINTENANCE / SET=JMS I XSET TICK=JMS I XTICK AERRO=JMS I XAERRO APT8A=JMS I XAPT8A LAS=JMS I XLAS CLASIC=JMS I XCLAS IOTCHN=JMP I XCHANG MANUAL=JMP I MANTST ENMAN1=JMS I XMAIN1 ENMAN2=JMS I XMAIN2 NERROR=JMS I XNERRO ERROR=JMS I XERRO IONWAT=JMS I XIONWT ACCMP1=JMS I XCOMP1 ACCMP2=JMS I XCOMP2 RDSTAT=JMS I XRDST RDCMD=JMS I XRDCM RDADD=JMS I XRDAD LDBUF=JMS I XUPPER LDADD=JMS I XLDAD DSKSKP=JMS I XSDKP LDCMD=JMS I XLDCM LDCUR=JMS I XLDCA CLRALL=JMS I XCLDR RDCRC=JMS I XRDCR LDMAN=JMS I XLDMN RDBUF=JMS I XRDBF PRNTER=JMS I XPRN OCTEL=JMS I XFROCT TWOCT=JMS I XTOCT TYPE=JMS I XPRINT CRLF=JMS I XCRLF / *0 / 305 /REV E 5001 0002 0003 / XLAS, MYLAS XSET, SETUP XCLAS, CLASIK SAVEND, 0 / *10 / AUTO10, 0 / *20 / SWR, 0 OP1, 4000 OP2, 0 / XAPT8A, APT8 XTICK, KTICK XAERRO, WAERRO XCHANG, CHANG XUPPER, UPPER MANTST, MANUL INTRQ, INTADD XEND, ENDTST THSFLD, PRSFLD XPRINT, PRINT XNERRO, NERRO XERRO, ERRO XIONWT, IONWT XCOMP1, COMP1 XCOMP2, COMP2 XRDST, RDST XRDCM, RDCM XMAIN1, MAIN1 XMAIN2, MAIN2 XRDAD, RDAD XSDKP, SDKP XLDCM, LDCM XLDCA, LDCA XLDAD, LDAD XCLDR, CLDR XRDCR, RDCR XLDMN, LDMN XRDBF, RDBF XPRN, PRN XFROCT, FROCT XTOCT, TOCT XCRLF, UPONE K0260, 0260 K0000, 0000 K0001, 0001 K0002, 0002 K0003, 0003 K0004, 0004 K0006, 0006 K0007, 0007 K0010, 0010 K0020, 0020 K0037, 0037 K0040, 0040 K0100, 0100 K0200, 0200 K0207, 0207 K0400, 0400 K1000, 1000 K2000, 2000 K3777, 3777 K4000, 4000 K7000, 7000 K7776, 7776 K7775, 7775 K7700, 7700 K7740, 7740 K0070, 0070 K0077, 0077 K0377, 0377 K0177, 0177 K2525, 2525 K5252, 5252 K3737, 3737 K7717, 7717 K4100, 4100 K7600, 7600 K5000, 5000 K5777, 5777 K7774, 7774 K7771, 7771 K7777, 7777 / DECIMAL / M4, -4 M5, -5 M7, -7 M12, -12 M16, -16 M48, -48 M128, -128 M191, -191 M255, -255 M300, -300 / OCTAL / K0017, 0017 K0215, 0215 K0212, 0212 KCDF, CDF KRMF, RMF MTS85, -TST85-1 REG1, 0 REG2, 0 SBCNT1, 0 TCNTR1, 0 TCNTR2, 0 TCNTR3, 0 TCNTR4, 0 / GDREG1, 0 GDREG2, 0 CRREG1, 0 CRREG2, 0 STREG, 0 DBREG, 0 CMREG, 0 DAREG, 0 ADREG, 0 DTREG, 0 ACREG, 0 HOMEMA, 0 FLDMAX, 0 STCON, 2200 / *0200 / /SETUP POINTERS FOR AMOUNT OF EXTENDED /BANKS OF MEMORY, INTERRUPT SERVICE, CURRENT /FIELD , AND TESTS FOR CLASSIC PACKAGE OR APT SYSTEM. /IF CONSOLE IS ACTIVE APT FUNCTIONS OR NOP. / BGN, JMP .+3 /RUN DISKLESS MANUAL /TO MANUAL SCOPE TEST IOTCHN /TO IOT CHANGE ROUTINE RIF DCA HOMEMA TAD HOMEMA TAD KCDF /MAKE HOMEDF DCA PRSFLD PRSFLD, HLT /MAKE DF=IF SET /SETUP FIELD 0 TAD FLDMAX /GET FIRST PASS POINTER SZA CLA /IS IT FIRST PASS JMP .+3 /NO, MUST BE A RESTART TAD I K7777 /GET LAST LOCATION DCA SAVEND /SAVE IT FOR A RESTORE APT8A /NOP CONSOLE IF ON APT8A CLASIC /CHECK FOR CONSOLE CLASSIC C8SWIT /CHECK FOR SWITCH SR=. NOP LAS AND K0007 /MASK 9-11 CMA DCA FLDMAX /SAVE AMOUNT OF EXTENDED MEMORY TAD OP2 AND K0400 SZA CLA /ON CLASSIC. CAF /YES, THEN CLEAR ALL FLAGS. / /VERIFY THAT THE DISK MOTOR IS OFF. THE /STATUS REGISTER SHOULD ONLY CONTAIN NOT READY TO /SEEK, READ, OR WRITE AND NOT DISK FILE READY. /INITIALIZE SHOULD HAVE CLEARED ALL OTHER BITS / DCA REG1 TAD STCON /GET EXPECTED STATUS DCA GDREG2 /SETUP TEST HANDLER / TST0, TAD REG1 /GET AC VALUE RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /AC O.K. 4096 LOOPS ERROR /ERROR "INITIALIZE" CLEAR STATUS /REGISTER FAILED TST0 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT SKIP CONDITIONS WERE CLEARED /BY "INITIALIZE" ON START OF TEST. / TST1, DSKSKP /ISSUE "DSKP" IOT NERROR /DSKP O.K. 4096 LOOPS ERROR /ERROR, "INITIALIZE" CLEAR /SKIP CONDITIONS TST1 /SCOPE LOOP POINTER 0006 /TEXT POINTER / /VERIFY THAT INTERRUPT REQUESTS WERE /CLEARED BY "INITIALIZE" AT START OF TEST / TST2, IONWAT /GO WAIT FOR INT. NERROR /INT. O.K. 4096 LOOPS ERROR /ERROR "INITIALIZE" CLEAR /INT. CONDITION TST2 /SCOPE LOOP POINTER 0007 /TEXT POINTER / /VERIFY THAT COMMAND REGISTER WAS CLEARED /BY "INITIALIZE" AT START OF TEST. READ COMMAND /REGISTER WITH "DMAN" (MAINTENANCE IOT) / DCA GDREG2 /SETUP COMPARE REGISTER TST3, RDCMD /READ COMMAND REGISTER SNA CLA /AC SHOULD BE 0 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, "INITIALIZE" CLEAR /COMMAND REGISTER TST3 /SCOPE LOOK POINTER 4201 /TEXT POINTER / /VERIFY THAT ALL DRIVES ON CONTROL ARE OFF. /THE STATUS SHOULD BE 2200 WHEN DRIVES ARE SELECTED. / TST4, TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /DCLR "CLR ALL" TAD REG1 /GET AC VALUE LDCMD /LOAD COMMAND RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, STATUS TST4 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT IOT "DSKP" DOES NOT AFFECT /AC REGISTER. TRY ALL COMBINATIONS IN AC. / TST5, TAD REG1 /GET AC VALUE DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 DSKSKP /ISSUE "DSKP" IOT NOP ACCMP1 /CHECK AC, COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, "DSKP" CHANGED AC. TST5 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT "DLCA" LOAD CURRENT ADDRESS /REGISTER CLEARS THE AC. TRY ALL COMBINATIONS IN AC / DCA GDREG2 /SETUP COMPARE REGISTER TST6, TAD REG1 /GET AC VALUE LDCUR /LOAD CURRENT ADDRESS "DLCA" ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DLCA CLEAR AC TST6 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT "DLDC" LOAD COMMAND REGISTER /CLEARS THE AC. TRY ALL COMBINATIONS IN AC. / TST7, TAD REG1 /GET AC VALUE LDCMD /"DLDC" LOAD COMMAND REGISTER ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DLDC CLEAR AC TST7 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT "DLAG" CLEARS THE AC REGISTER. /TRY ALL COMBINATIONS IN AC. / TST8, CLA CLL IAC CLRALL /CLEAR CONTROL TAD REG2 /GET DATA LDADD /LOAD DISK ADDRESS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, DLAG, CLEAR AC TST8 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT IOT "DCLR" CLEARS THE AC. /TRY ALL COMBINATIONS IN AC. / TST9, TAD REG1 CLRALL /DCLR "CLR ALL" ACCMP1 /CHECK AC, COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DCLR CLEAR AC TST9 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT THE COMMAND REGISTER CAN BE LOADED /AND SHIFTED INTO THE LOWER DATA BUFFER WITH /THE MAINTENANCE IOT. USE DATA PATTERN 0000 + 7777. / TST10, CLA CLL IAC CLRALL /CDLR "CLR ALL" TAD REG1 CLL RAR SZL CLA /DATA 7777 IF LINK IS SET CLA CMA DCA GDREG2 /SET UP COMPARE REGISTER TAD GDREG2 CMA LDCMD /SET COMMAND TO OPPOSITE TAD GDREG2 LDCMD /SET COMMAND TO VALUE EXPECTED RDCMD /READ COMMAND REGISTER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, COMMAND REGISTER TST10 /SCOPE LOOP POINTER 4201 /TEXT POINTER / /VERIFY THAT THE COMMAND REGISTER CAN BE LOADED /AND SHIFTED INTO THE LOWER DATA BUFFER WITH /THE MAINTENANCE IOT. USE DATA PATTERN 2525 + 5252 / TST11, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 CLL RAR SZL CLA /DATA 5252 IF LINK IS SET TAD K2525 TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 CMA LDCMD /SET COMMAND TO OPPOSITE TAD GDREG2 LDCMD /SET COMMAND TO VALUE EXPECTED RDCMD /READ COMMAND REGISTER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, COMMAND REGISTER TST11 /SCOPE LOOP POINTER 4201 /TEXT POINTER / /VERIFY THAT THE COMMAND REGISTER /BE LOADED AND THEN SHIFTED INTO THE LOWER /DATA BUFFER. TRY ALL COMBINATIONS. / TST12, TAD REG2 /GET AC VALUE LDCMD /LOAD COMMAND REGISTER TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDCMD /LOAD COMMAND REGISTER RDCMD /READ COMMAND REGISTER ACCMP1 /CHECK AC, COMPARE TO DGREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, LOAD OR READ /COMMAND REGISTER TST12 /SCOPE LOOP POINTER 4201 /TEXT POINTER / /VERIFY THAT DCLR DOES NOT CLEAR COMMAND /REGISTER WHEN AC10=0 AND AC11=0 / TST13, TAD REG1 LDCMD /LOAD COMMAND REGISTER TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER TAD REG2 LDCMD /LOAD COMMAND REGISTER CLRALL /DCLR "CLR ALL" RDCMD /READ COMMAND REGISTER ACCMP1 /CHECK AC, COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DCLR CLEAR COMMAND /REGISTER WHEN AC10=0 + AC11=0 TST13 /SCOPE LOOP POINTER 4201 / /VERIFY THAT DCLR DOES CLEAR COMMAND /REGISTER WHEN AC10=0 AND AC11=1 / DCA GDREG2 /SETUP COMARE REGISTER TST14, TAD REG1 LDCMD /LOAD COMMAND REGISTER CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /DCLR "CLR ALL" RDCMD /READ COMMAND REGISTER SNA CLA /CHECK AC, SHOULD EQUAL 0 NERROR /AC O.K. LOOP 4096 ERROR /ERROR, DCLR CLEAR COMMAND /REGISTER WHEN AC10=0+AC11=1 TST14 /SCOPE LOOP POINTER 4201 /TEXT POINTER / /VERIFY THAT DLAG DOES LOAD THE SURFACE AND SECTOR /REGISTER. USE DATA PATTERN 00 + 37. / TST15, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL TAD M12 DCA TCNTR1 /SETUP 12 BIT SHIFT COUNTER TAD REG1 CLL RAR SZL CLA /DATA 00 + 37? CLA CLL CMA /37! LDADD /LOAD DISK ADDRESS "DLAG" TAD DAREG AND K0037 /MASK EXPECTED VALUE DCA GDREG2 /SETUP COMPARE VALUE ENMAN2 /ENTER MAINTENANCE TAD K0200 /ENABLE SHIFT LOWER BUFFER LDMAN /LOAD MAINTENANCE ISZ TCNTR1 /COUNT 12 SHIFTS JMP .-2 CLA CLL TAD K0020 /ENABLE READ LOWER BUFFER LDMAN /LOAD MAINTENANCE DCA DAREG /SAVE VALUE FOUND TAD DAREG ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, SURFACE AND SECTOR SHIFT TST15 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT DLAG LOADS THE SURFACE AND /SECTOR REGISTER. USE DATA PATTERN ALL /COMBINATIONS. / TST16, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL TAD M12 DCA TCNTR1 /SETUP 12 BIT SHIFT COUNTER TAD REG1 AND K0037 /MASK EXPECTED VALUE DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDADD /LOAD DISK ADDRESS "DLAG" ENMAN2 /ENTER MAINTENANCE TAD K0200 /ENABLE SHIFT LOWER BUFFER LDMAN /LOAD MAINTENANCE ISZ TCNTR1 /COUNT 12 SHIFTS JMP .-2 CLA CLL TAD K0020 /ENABLE READ LOWER BUFFER LDMAN /LOAD MAINTENANCE DCA DAREG /SAVE VALUE FOUND TAD DAREG ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, SURFACE AND SECTOR SHIFT TST16 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT THE DISK ADDRESS REGISTER CAN BE LOADED /AND SHIFTED TO LOWER DATA BUFFER WITH THE MAINTENANCE /IOT. USE DATA PATTERN 0000 + 7777 /SHIFT THE SURFACE AND SECTOR FROM THE SURFACE AND SECTOR /REGISTER. SHIF THE LOWER CYLINDER BITS FROM THE CRC REGISTER. / TST17, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 CLL RAR SZL CLA /USE DATA 7777 IF LINK IS SET CLA CMA DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 CMA LDADD /SET DISK ADDRESS TO OPPOSITE TAD GDREG2 LDADD /SET DISK ADDRESS TO EXPECTED RDADD /READ DISK ADDRESS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, DISK ADDRESS REGISTER TST17 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT THE DISK ADDRESS REGISTER CAN BE LOADED /AND SHIFTED TO LOWER DATA BUFFER WITH THE MAINTENANCE /IOT. USE DATA PATTERN 2525 + 5252. /SHIFT THE SURFACE AND SECTOR FROM THE SURFACE AND SECTOR /REGISTER. SHIFT THE LOWER CYLINDER BITS FROM THE CRC REGISTER. / TST18, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 CLL RAR SZL CLA /USE DATA 5252 IF LINK IS SET TAD K2525 TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 CMA LDADD /SET DISK ADDRESS TO OPPOSITE TAD GDREG2 LDADD /SET DISK ADDRESS TO EXPECTED RDADD /READ DISK ADDRESS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, DISK ADDRESS REGISTER TST18 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT THE DISK ADDRESS REGISTER /CAN BE LOADED AND SHIFTED INTO THE LOWER /DATA BUFFER. TRY ALL COMBINATIONS IN AC /SHIFT THE SURFACE AND SECTOR FROM THE SURFACE AND SECTOR /REGISTER. SHIFT THE LOWER CYLINDER BITS FROM THE CRC REGISTER. / TST19, TAD REG1 /GET AC VALUE DCA GDREG2 /SET UP COMPARE REGISTER TAD REG1 LDADD /LOAD DISK ADDRESS REGISTER RDADD /READ DISK ADDRESS REGISTER ACCMP1 /CHECK AC, COMPARE TO GDREG2 NERROR /AC O.K. LOOP 4096 TIMES ERROR /ERROR, LOAD OR READ DISK /ADDRESS REGISTER TST19 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT DCLR DOES NOT AFFECT THE SURFACE /AND SECTOR WHEN AC10=0 + AC11=0 / TST20, TAD REG1 /GET AC VALUE DCA GDREG2 /SETUP COMPARE REGISTER TAD REG2 /AC VALUE, COMPLEMENT OF REG1 LDADD /LOAD DISK ADDRESS TAD REG1 LDADD /LOAD DISK ADDRESS CLRALL /DCLR "CLR ALL" RDADD /READ DISK ADDRESS ACCMP1 /CHECK AC, COMPARE TO GDREG2 NERROR /AX O,K, LOOP 4096 TIMES ERROR /ERROR, LOAD OR READ DISK /ADDRESS OR DCLR CLEAR TST20 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT "DCLR" DOESN'T CLEAR SURFACE AND SECTOR /REGISTERS WHEN A10=0 + A11=1 / TST21, TAD REG1 /GET AC VALUE DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDADD /LOAD DISK ADDRESS CLA CLL IAC /ENABLE "CLR ALL" BIT CLRALL /DCLR "CLR ALL" RDADD /READ DISK ADDRESS ACCMP1 /CHECK RESULTS NERROR /AC O.K. LOOP 4096 ERROR /ERROR, LOAD, READ, OR CLEAR /DISK ADDRESS TST21 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT THE CRC CAN BE LOADED BY "DLAG" /AND "DLDC". USE DATA PATTERN 0000 + 7777. /THIS WILL VERIFY THAT THE CRC CAN BE LOADED /BY THE EXTENDED CYLINDER BIT IN THE COMMAND REGISTER /BY THE "DLAG" IOT. / TST22, CLA CLL IAC CLRALL /DCLR TAD REG1 CLL RAR SZL CLA /USE DATA 7777 IF LINK IS SET CLA CMA AND K7740 DCA GDREG2 /SET UP COMPARE # 1 RAL /LINK FOR EXTENDED BIT DCA GDREG1 /SETUP COMPARE REGISTER TAD GDREG1 /GET DATA LDCMD /LOAD CRC TAD GDREG2 LDADD /LOAD CRC RDCRC /READ CRC ACCMP2 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST22 /SCOPE LOOP POINTER 6004 /TEXT POINTER / /VERIFY THAT THE CRC CAN BE LOADED BY "DLAG" /AND "DLDC". USE DATA PATTERN 2525 + 5252. /THIS WILL VERIFY THAT THE CRC CAN BE LOADED /BY THE EXTENDED CYLINDER BIT IN THE COMMAND REGISTER /BY THE "DLAG" IOT. / TST23, CLA CLL IAC CLRALL /DCLR TAD REG1 CLL RAR SZL CLA /USE DATA 5252 IF LINK IS SET TAD K2525 TAD K2525 AND K7740 DCA GDREG2 /SET UP COMPARE # 1 RAL /LINK FOR EXTENDED BIT DCA GDREG1 /SETUP COMPARE REGISTER TAD GDREG1 /GET DATA LDCMD /LOAD CRC TAD GDREG2 LDADD /LOAD CRC RDCRC /READ CRC ACCMP2 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST23 /SCOPE LOOP POINTER 6004 /TEXT POINTER / /VERIFY THAT THE CRC CAN BE LOADED BY "DLAG" /AND "DLDC". USE DATA PATTERN ALL COMBINATIONS. /THIS WILL VERIFY THAT THE CRC CAN BE LOADED /BY THE EXTENDED CYLINDER BIT IN THE COMMAND REGISTER /BY THE "DLAG" IOT. / TST24, TAD REG1 /GET AC VALUE CLL RTL RTL RAL AND K7740 DCA GDREG2 /SETUP COMPARE REGISTER RAL /LINK FOR EXTENDED BIT DCA GDREG1 /SETUP COMPARE REGISTER TAD GDREG1 /GET DATA LDCMD /LOAD COMMAND REGISTER TAD GDREG2 LDADD /LOAD DISK ADDRESS RDCRC /READ CRC REGISTER ACCMP2 /CHECK AC, COMPARE TO GDREG1 + GDREG2 NERROR /AC O.K. LOOP 4096 ERROR /ERROR, CRC REGISTER LOAD BY /DLAG OR DLDC. TST24 /SCOPE LOOP POINTER 6004 /TEXT POINTER / / /VERIFY THAT DCLR DOES NOT AFFECT CRC REGISTER. /LOAD CRC WITH DLAG + DLDC. / TST25, TAD REG2 CLL RTL RTL RAL AND K7740 DCA GDREG2 /SETUP COMPARE REGISTER RAL /LINK FOR EXTENDED BIT DCA GDREG1 /SETUP COMPARE REGISTER TAD GDREG1 LDCMD /LOAD COMMAND REGISTER TAD GDREG2 LDADD /LOAD DISK ADDRESS TAD REG2 AND K7775 /DON'T DO RECAL. CLRALL /DCLR "CLR ALL" RDCRC /READ CRC REGISTER ACCMP2 /CHECK RESULTS, COMPARE TO GDREG1 /AND GDREG2 NERROR /O.K. 4096 LOOPS ERROR /ERROR, LOAD, READ, CLEAR CRC /REGISTER TST25 /SCOPE LOOP POINTER 6004 /TEXT POINTER / /VERIFY THAT THE CRC REGISTER IS NOT AFFECTED BY /"DLDC", "DSKP", "DRST", "RDBUF", OR "DLCA". /USE DATA PATTERN 2525 + 5252. / TST26, CLA CLL IAC CLRALL /DCLR TAD REG1 CLL RAR SZL CLA /USE DATA 5252 IF LINK IS SET TAD K2525 TAD K2525 AND K7740 DCA GDREG2 /SETUP COMPARE REGISTER RAL /LINK FOR EXTENDED BIT DCA GDREG1 /SETUP COMPARE REGISTER TAD GDREG1 /GET UPPDER DATA LDCMD /LOAD COMMAND TAD GDREG2 LDADD /LOAD DISK ADDRESS TAD REG2 RDSTAT /READ STATUS TAD REG2 DSKSKP /"DSKP" NOP RDBUF /READ BUFFER TAD REG2 LDCUR /LOAD CURRENT ADDRESS TAD REG2 LDCMD /LOAD COMMAND TAD REG1 LDBUF /LOAD UPPER BUFFER RDCRC /READ CRC REGISTER ACCMP2 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST26 /SCOPE LOOP POINTER 6004 /TEXT POINTER / /VERIFY THAT WRITE LOCK INHIBITS LOAD ADDRESS /WHEN IT IS SET. / TST27, CLA CLL IAC CLRALL /CLEAR CONTROL DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 /GET AC VALUE LDADD /LOAD DISK ADDRESS TAD K2000 LDCMD /SET WRITE LOCK TAD REG2 /GET AC VALUE LDADD /TRY TO LOAD DISK ADDRESS RDADD /READ DISK ADDRESS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR LOAD DISK ADDRESS TST27 /SCOPE LOOP POINTER 4102 / /VERIFY THAT THE DISK ADDRESS REGISTER IS NOT /AFFECTED BY "DCLR", "DLCA", "DRST", "DLDC", "DSKP" /OR "RDBUF". USE DATA PATTERN ALL COMBINATIONS. / TST28, TAD REG1 /GET AC VALUE DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDADD /LOAD DISK ADDRESS TAD REG2 AND K5777 /MASK OUT WRITE LOCK LDCMD /LOAD COMMAND REGISTER TAD REG2 LDCUR /LOAD CURRENT ADDRESS TAD REG2 DSKSKP /DSKP NOP RDSTAT /READ STATUS TAD REG2 LDBUF /LOAD BUFFERS RDBUF /READ LOWER BUFFER CLA CLL CLRALL /CLEAR STATUS RDADD /READ DISK ADDRESS ACCMP1 /CHECK AC, COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DISK ADDRESS AFFECTED TST28 /SCOPE LOOP POINTER 4102 /TEXT POINTER / /VERIFY THAT THE COMMAND REGISTER IS NOT AFFECTED BY /"DCLR", "DLCA", "DRST", "DLAG", "DSKP" OR "RDBUF". /USE DATA PATTERN ALL COMBINATIONS. / TST29, CLA CLL IAC CLRALL /CLEAR CONTROL TAD REG1 /GET AC VALUE DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDCMD /LOAD COMMAND REGISTER TAD REG2 LDADD /LOAD DISK ADDRESS TAD REG2 LDCUR /LOAD CURRENT ADDRESS TAD REG2 DSKSKP /DSKP NOP RDSTAT /READ STATUS TAD REG2 LDBUF /LOAD UPPER BUFFER RDBUF /READ LOWER BUFFER CLA CLL CLRALL /CLEAR STATUS CLA CLL CML RTL CLRALL /RECALIBRATE RDCMD /READ COMMAND REGISTER ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, COMMAND REGISTER TST29 /SCOPE LOOP POINTER 4201 /TEXT POINTER / /VERIFY THAT RECALIBRATE INHIBITS LOAD COMMAND / TST30, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL /ENABLE RECALIBRATE CLRALL /RECALIBRATE CLA CLL CML RTL /ENABLE RECALIBRATE CLRALL /RECALIGRATE DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDCMD /TRY TO LOAD COMMAND RDCMD /READ COMMAND ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR IDLE (1) TST30 /SCOPE LOOP POINTER 4201 /TEXT POINTER / /VERIFY THAT RECALIBRATE INHIBITS /LOAD DISK ADDRESS DLAG / TST31, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE TAD REG1 /GET AC VALUE DCA GDREG2 /SETUP COMPARE TAD GDREG2 LDADD /LOAD DISK ADDRESS (DLAG) CLA CLL CML RTL /ENABLE RECAL. CLRALL /RECALIBRATE TAD REG2 LDADD /LOAD DISK ADDRESS (DLAG) RDADD /READ DISK ADDRESS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, ON INHIBIT TST31 /SCOPE POINTER 4102 /TEXT POINTER / /VERIFY THAT "DMAN" (MAINTENANCE) DOES NOT /AFFECT AC WHEN AC0=0 AND AC7=1 OR 0 / TST32, CLA CLL IAC /CLEAR ENABLE BIT CLRALL /DCLR "CLR ALL" TAD REG1 AND K3737 /MASK OUT 0 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 LDMAN /LOAD MAINTENANCE "DMAN" ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, "DMAN" AFFECTED AC TST32 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT "DMAN" DOES NOT AFFECT AC WHEN /AC7=0 AND AC0=1 OR 0. / TST33, CLA CLL IAC /CLEAR ENABLE BIT CLRALL /DCLR "CLR ALL" TAD REG1 /GET AC VALUE AND K7717 /MASK OUT BIT 7 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 LDMAN /LOAD MAINTENANCE ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR DMAN AFFECT AC TST33 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT "DMAN" ONLY GETS CLEARED BY /DCLR NOT BY ANOTHER DMAN. / TST34, CLA CLL IAC /CLEAR ENABLE BIT CLRALL /DCLR "CLR ALL" TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDCMD /LOAD COMMAND REGISTER TAD M12 /NO. OF SHIFTS DCA TCNTR1 /STORE IN COUNTER ENMAN2 /ENTER MAINTENANCE MODE + DB4=1 TAD K0400 /GET ENABLE COMMAND REG. LDMAN /LOAD MAINENANCE ISZ TCNTR1 /COUNT + SHIFT 12 JMP .-2 CLA CLL LDMAN /"DMAN" TRY TO CLEAR MAIN FLOP TAD K0020 /ENABLE BIT FOR READ BUFFER LDMAN /READ BUFFER DCA DBREG /SAVE FOR PRINTER TAD DBREG ACCMP1 /CHECK AC NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, MAIN FLIP FLOP TST34 /SCOPE LOOP POINTER 4405 / /VERIFY THAT "DMAN" GETS CLEARED BY DCLR /"CLR ALL" TST35, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD K0020 DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 LDCMD /LOAD COMMAND REGISTER TAD M12 DCA TCNTR1 /SHIFT 12 COUNTER ENMAN2 /ENTER MAINTENANCE MODE + DB4=1 TAD K0400 LDMAN /LOAD MAINTENANCE "DMAN" ISZ TCNTR1 JMP .-2 /12 COUNT CLA CLL IAC CLRALL /CLEAR ALL "DCLR" TAD K0020 LDMAN /LOAD MAINTENANCE ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DMAN AFFECTED AC TST35 /SCOPE LOOP POINTER 4010 /TEXT POINTER / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED TO /CRC REGISTER, THEN READ CRC REGISTER. /TRY ALL 1'S AND ALL 0'S. / TST36, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 CLL RAR SZL CLA /SKIP IF ALL 0'S DATA CLA CLL CMA /ALL ONE'S DATA DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 AND K0017 DCA GDREG1 /SETUP COMPARE REGISTER TAD M16 DCA TCNTR1 /SHIFTER FOR CRC ENMAN1 /ENTER MAINTENANCE MODE TAD REG1 CLL RAL AND K0002 TAD K1000 /ENABLE BITS LDMAN /LOAD MAINTENANCE ISZ TCNTR1 JMP .-2 /16 COUNT RDCRC /READ CRC REGISTER ACCMP2 /COMPARE RESULTS NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST36 /SCOPE LOOP POINTER 6004 /TEXT POINTER / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED TO /CRC REGISTER, THEN READ CRC REGISTER. /TRY PATTERN "125252" / TST37, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD K5252 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 AND K0017 DCA GDREG1 /SETUP COMPARE REGISTER TAD M16 DCA TCNTR1 /SETUP 16 COUNT ENMAN1 /ENTER MAINTENANCE MODE T37R, CLA CLL TAD TCNTR1 RAL AND K0002 /SETUP DATA BIT TAD K1000 /ENABLE BITS LDMAN /LOAD MAINTENANCE ISZ TCNTR1 JMP T37R /16 COUNT RDCRC /READ CRC REGISTER ACCMP2 /CHECK RESULTS NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST37 /SCOPE LOOP POINTER 6004 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST38 / PAGE / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED /TO CRC REGISTER, THEN READ CRC REGISTER. /TRY PATTERN "052525" / TST38, CLA CLL IAC CLRALL /CLEAR ALL "DCLR" TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 AND K0017 DCA GDREG1 /SETUP COMPARE REGISTER TAD M16 DCA TCNTR1 /16 COUNTER SHIFTER ENMAN1 /ENTER MAINTENANCE MODE T38R, CLA CLL TAD TCNTR1 CMA RAL AND K0002 /SETUP "AC 10 DATA" TAD K1000 /ENABLE BITS LDMAN /LOAD MAINTENANCE ISZ TCNTR1 JMP T38R /16 COUNT RDCRC /READ CRC REGISTER ACCMP2 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST38 /SCOPE LOOP POINTER 6004 /TEXT POINTER / / / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED TO CRC /REGISTER. /TRY ALL COMBINATIONS. / TST39, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 AND K0017 DCA GDREG1 /SETUP COMPARE REGISTER CLA CLL IAC DCA TCNTR1 /SETUP BIT MASKER TAD M16 DCA TCNTR2 /SETUP FIRST SHIFT COUNTER ENMAN1 /ENTER MAINTENANCE MODE T39R, TAD REG1 AND TCNTR1 SZA CLA /SKIP IF 0 TAD K0002 /WAS A 1 TAD K1000 /ENABLE BITS LDMAN /LOAD MAINTENANCE CLA CLL TAD TCNTR1 RAL /ROTATE BIT MASKER DCA TCNTR1 SZL CLA /WAIT FOR FIRST LINK THEN JMP .-3 /RESET BIT 11 IN MASKER ISZ TCNTR2 JMP T39R /LOOP BACK RDCRC /READ CRC REGISTER ACCMP2 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST39 /ERROR, CRC REGISTER 6004 /TEXT POINTER / /VERIFY THAT "DLAG" CLEARS ALL OF THE /CRC REGISTER. TRY ALL COMBINATIONS IN CRC. / TST40, CLA CLL IAC CLRALL /DCLR "CLR ALL" DCA GDREG2 DCA GDREG1 /SETUP COMPARE REGISTERS CLA CLL IAC DCA TCNTR1 /SETUP BIT MASKER TAD M16 DCA TCNTR2 /SETUP FIRST SHIFT COUNTER ENMAN1 /ENTER MAINTENANCE MODE T40R, TAD REG2 AND TCNTR1 SZA CLA /SKIP IF 0 TAD K0002 /WAS A 1 TAD K1000 /ENABLE BITS LDMAN /LOAD MAINTENANCE CLA CLL TAD TCNTR1 RAL /ROTATE BIT MASKER DCA TCNTR1 SZL CLA /WAIT FOR FIRST LINK THEN JMP .-3 /RESET BIT 11 IN MASKER ISZ TCNTR2 JMP T40R /LOOP BACK LDADD /LOAD DISK ADDRESS RDCRC /READ CRC REGISTER ACCMP2 /CHECK RESULTS NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, CRC REGISTER TST40 /ERROR, CRC REGISTER 6004 /TEXT POINTER / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED TO /UPPER DATA BUFFER THEN SINK TO LOWER DATA /BUFFER. TRY ALL 1'S AND 0'S. / TST41, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 CLL RAR SZL CLA CLA CMA DCA GDREG2 TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER RDBUF /READ LOWER BUFFER ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DATA REGISTERS TST41 /SCOPE LOOP POINTER 4405 /TEXT POINTER / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED TO /UPPER DATA BUFFER THEN SINK TO LOWER DATA /BUFFER. TRY PATTERN 2525 + 5252 / TST42, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 CLL RAR SZL CLA /WHAT DATA???? TAD K2525 /DATA 5252 TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER RDBUF /READ LOWER DATA BUFFER ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DATA BUFFERS TST42 /SCOPE LOOP POINTER 4405 /TEXT POINTER / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED TO /UPPER DATA BUFFER THEN SINK TO LOWER /DATA BUFFER. TRY PATTERN ALL COMBINATIONS / TST43, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG2 /GET VALUE TO LOAD DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 /GET IT LDBUF /LOAD UPPER BUFFER RDBUF /READ LOWER DATA BUFFER ACCMP1 /CHECK AC NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DATA REGISTERS TST43 /SCOPE LOOP POINTER 4405 /TEXT POINTER / /VERIFY THAT "AC10 DATA" CAN BE SHIFTED /TO UPPER DATA BUFFER THEN SINK TO LOWER /DATA BUFFER. TRY ALL COMBINATIONS / TST44, CLA CLL IAC CLRALL TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER RDBUF /READ DATA BUFFER ACCMP1 /CHECK AC. COMPARE TO GDREG2 NERROR /AC O.K. 4096 LOOPS ERROR /ERROR, DATA REGISTERS TST44 /SCOPE LOOP POINTER 4405 /TEXT POINTER / /VERIFY THAT ALL DATA BUFFERS CAN BE FULL /AT ONCE. TRY ALL COMBINATIONS / TST45, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG1 DCA TCNTR4 TAD M4 DCA TCNTR3 /COUNTER FOR # OF BUFFERS T45R1, TAD TCNTR4 LDBUF /LOAD UPPER BUFFER CLA CLL IAC TAD TCNTR4 DCA TCNTR4 ISZ TCNTR3 JMP T45R1 /4 COUNT, SKIP WHEN BUFFERS FULL TAD REG1 DCA GDREG2 /SETUP FOR FIRST COMPARE TAD M4 DCA TCNTR3 T45R3, RDBUF /READ BUFFER ACCMP1 /CHECK SKP CLA /OK, CHECK NEXT JMP T45E /ERROR, DATA BUFFERS ISZ GDREG2 NOP ISZ TCNTR3 JMP T45R3 NERROR /AC O.K. 4096 LOOPS T45E, ERROR /ERROR, DATA BUFFERS TST45 /SCOPE LOOP POINTER 4405 /TEXT POINTER / /VERIFY THAT THE SILO BUFFERS ARE NOT AFFECTED BY /"DLCR", "DLAG", "DLDC", "DLCA", "DSKP", OR "DRST" IOTS. /USE DATA PATTERN ALL COMBINATIONS / TST46, CLA CLL IAC CLRALL /DCLR TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER TAD M4 DCA TCNTR1 /COUNTER FOR AMOUNT OF BUFFERS T46A1, TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER ISZ TCNTR1 /COUNT AMOUNT JMP T46A1 /MORE TO LOAD TAD REG1 LDADD /LOAD DISK ADDRESS TAD REG1 LDCUR /LOAD CURRENT ADDRESS TAD REG1 AND K3777 /MASK OFF WRITE LDCMD /LOAD COMMAND REGISTER TAD REG1 DSKSKP /DSKP NOP RDSTAT /READ STATUS CLA CLL CLRALL /CLEAR STATUS TAD M4 DCA TCNTR1 /SETUP COUNTER T46A2, CLA CLL TAD K0020 /ENABLE READ BUFFER LDMAN /DMAN DCA DBREG /SAVE RESUTLS TAD DBREG ACCMP1 /CHECK RESULTS SKP CLA /DATA O.K. JMP T46E /ERROR ISZ TCNTR1 /READ ALL FOUR JMP T46A2 /LOOP NERROR /O.K. 4096 LOOPS T46E, ERROR /ERROR, BUFFER AFFECTED TST46 /SCOPE LOOP POINTER 4405 /TEXT POINTER / /VERIFY THAT THE UPPER BUFFER CAN BE LOADED /THEN SINK TO LOWER BUFFER. USE A FLOATING /1'S PATTERN. / DCA TCNTR1 /START AT 0 TST47, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL TAD TCNTR1 /GET VALUE TO LOAD DCA GDREG2 /SETUP COMPARE REGISTER TAD TCNTR1 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER RDBUF /READ LOWER BUFFER ACCMP1 /CHECK RESULTS SKP CLA /DATA O.K. JMP T47E /ERROR TAD TCNTR1 CLL RAL SNA IAC DCA TCNTR1 /SET ONE TO LEFT NERROR /LOOP 4096 TIMES T47E, ERROR /ERROR SILO BUFFERS TST47 /SCOPE LOOP POINTER 4405 /TEXT POINTER / /VERIFY THAT THE UPPER BUFFER CAN BE LOADED /THEN SINK TO LOWER BUFFER. USE A FLOATING /0'S PATTERN. / DCA TCNTR1 /START AT 7777 TST48, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL TAD TCNTR1 /GET VALUE TO LOAD CMA /INVERT FOR 0'S DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER RDBUF /READ LOWER BUFFER ACCMP1 /CHECK RESULTS SKP CLA /DATA O.K. JMP T48E /ERROR TAD TCNTR1 CLL RAL SNA IAC DCA TCNTR1 /SET ONE TO LEFT NERROR /LOOP 4096 TIMES T48E, ERROR /ERROR SILO BUFFERS TST48 /SCOPE LOOP POINTER 4405 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST49 / PAGE / /VERIFY THAT "DRL" OCCURS WHEN BUFFER /EMPTY. / TST49, CLA CLL IAC CLRALL /"DCLR CLEAR ALL TAD STCON /GET EXPECTED BITS DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS SKP CLA /O.K. JMP T49E /ERROR, STATUS REGISTER TAD STCON TAD K0004 /GET EXPECTED BITS DCA GDREG2 /SETUP COMPARE REGISTER ENMAN1 /ENTER MAINTENANCE MODE TAD K1000 LDMAN /LOAD MAINTENANCE CLA CMA RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS SKP CLA /O.K. JMP T49E /ERROR, STATUS REGISTER TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER CLRALL /DCLR "CLEAR STATUS" RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /STATUS O.K., 4096 LOOPS T49E, ERROR /ERROR, STATUS REGISTER TST49 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT BUFFER FULL CAUSES "DRL". / TST50, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER TAD REG2 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS SKP CLA /O.K. JMP T50E /ERROR, STATUS REGISTER TAD M48 DCA TCNTR1 /48 COUNTER ENMAN1 /ENTER MAINTENANCE MODE TAD K0100 /ENABLE BITS LDMAN /LOAD MAINTENANCE ISZ TCNTR1 JMP .-2 /SKIP WHEN BUFFERS ARE FULL CLA CLL RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS SKP CLA JMP T50E /ERROR, STATUS REGISTER TAD K0100 LDMAN /CAUSE "DRL" DMAN CLA CLL TAD STCON TAD K0004 /BIT EXPECTED DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /STATUS O.K., 4096 LOOPS T50E, ERROR /ERROR, STATUS REGISTER TST50 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT "DSKP" SKIPS ON "DRL" ERROR / TST51, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD K1000 LDMAN /SET "DRL" "DMAN" CLA CLL DSKSKP /"DSKP" JMP T51E /ERROR, "DSKP" DSKSKP /"DSKP" JMP T51E /ERROR, "DSKP" CLRALL /CLEAR STATUS "DCLR" DSKSKP /"DSKP" SKIP NERROR /SKIP O.K. 4096 LOOPS T51E, ERROR /ERROR, "DSKP" SKIP ON "DRL" TST51 /SCOPE LOOP POINTER 0006 /TEXT POINTER / /VERIFY THAT "DRL" DOES CAUSE DISK "INTERRUPT" IF /ENABLED BY "ENABLE INTERRUPT" BIT IN COMMAND REGISTER. / TST52, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD K0400 LDCMD /SET INT. ENABLE "LOAD COMMAND REG." ENMAN1 /ENTER MAINTENANCE MODE TAD K1000 LDMAN /"SET DRL" "DMAN" IONWAT /WAIT FOR INTERRUPT SKP CLA /ERROR, NO INT. RQ. NERROR /O.K., INT. OCCURRED ERROR /ERROR, INT. REQUEST TST52 /SCOPE LOOP POINTER 0007 /TEXT POINTER / /VERIFY THAT "DRL" SHOULD CAUSE INT. RQ. ONLY /WHEN "INT. ENABLE" BIT IS SET. DOES LDCMD CLEAR INT. / TST53, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD K1000 LDMAN /SET "DRL" DMAN IONWAT /WAIT FOR INT. SKP CLA /O.K., NO INT. JMP T53E /ERROR, INT. OCCURRED TAD K0400 LDCMD /SET INT. ENABLE AND CLEAR INT. IONWAT /WAIT FOR INT. SKP CLA /O.K., NO INT. RQ. JMP T53E /ERROR, INT. OCCURRED TAD K1000 LDMAN /SET "DRL" DMAN IONWAT /WAIT INT., SHOULD INT. SKP CLA /ERROR, NO INT. NERROR /O.K. INT. OCCURRED T53E, ERROR /ERROR, INT. RQ. TST53 /SCOPE LOOP POINTER 0007 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST54 / PAGE / /VERIFY THAT "LDCMD" CLEARS STATUS REGISTER / TST54, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD STCON TAD K0004 DCA GDREG2 /SETUP COMPARE REGISTER ENMAN1 /ENTER MAINTENANCE MODE TAD K1000 /ENABLE LDMAN /SET "DRL" DMAN CLA CLL TAD REG2 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS SKP CLA /O.K., CHECK CLEAR JMP T54E /STATUS REGISTER ERROR LDCMD /CLEAR STATUS, "LOAD COMMAND" TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER TAD REG1 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /STATUS O.K. 4096 LOOPS T54E, ERROR /ERROR, STATUS REGISTER TST54 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT RECALIBRATE DOES SET DRIVE STATUS /ERROR IN THE STATUS REGISTER. / TST55, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /CLEAR CONTROL TAD STCON DCA GDREG2 /SETUP EXPECTED COMPARE RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T55E /ERROR, STATUS CLA CLL CML RTL /ENABLE RECALIBRATE TAD STCON DCA GDREG2 /SETUP EXPECTED COMPARE CLA CLL CML RTL /ENABLE RECALIBRATE CLRALL /RECALIBRATE RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T55E, ERROR /ERROR< STATUS TST55 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT "LOAD DISK ADDRESS" CAUSES "DRIVE STATUS ERROR" / TST56, CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL LDADD TAD STCON TAD K0002 DCA GDREG2 TAD REG1 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /STATUS O.K. 4096 LOOPS ERROR /ERROR, STATUS REGISTER TST56 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT "DRIVE STATUS ERROR" CAUSES INT. RQ. / "DOES LDCMD CLEAR INT." / TST57, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD K0400 LDCMD /SET INT. ENABLE "LOAD COMMAND" LDADD /SET "SELECT", LOAD DISK ADDRESS IONWAT /WAIT FOR EXPECTED INT. JMP T57E /ERROR, NO INT. TAD K0400 LDCMD /CLEAR INT. "LOAD COMMAND" IONWAT NERROR /O.K. INT. WORKED T57E, ERROR /ERROR, SELECT ERROR INT. TST57 /SCOPE LOOP POINTER 0007 /TEXT POINTER / /VERIFY THAT "LOAD DISK ADDRESS" CAUSES /"DRIVE STATUS ERROR". TEST WITH DISK SKIP / TST58, CLA CLL IAC CLRALL /DCLR "CLR ALL" LDADD /LOAD DISK AND GO DSKSKP /DSKP DISK SKIP IOT JMP T58E /ERROR, NO SKIP DSKSKP /DSKP DISK SKIP IOT JMP T58E /ERROR, NO SKIP NERROR /STATUS O.K. T58E, ERROR /ERROR, STATUS REGISTER TST58 /SCOPE LOOP POINTER 0006 /TEXT POINTER / /VERIFY THAT SELECT ERROR CAUSES "DSKP" TO SKIP ON ERROR / TST59, CLA CLL IAC CLRALL /DCLR "CLR ALL" LDADD /LOAD DISK ADDRESS AND GO DSKSKP /DSKP "SKIP ON ERROR" JMP T59E /ERROR, NO SKIP CLRALL /CLEAR SKIP DSKSKP /DSKP NERROR /O.K. 4096 LOOPS T59E, ERROR /ERROR, "DSKP SKIP" TST59 /SCOPE LOOP POINTER 0006 /TEXT POINTER / / / /VERIFY THAT SELECT ERROR CAUSES "DSKP" TO SKIP ON ERROR /THEN INTERRUPT / TST60, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD K0006 DCA T60E+2 /SETUP TEXT POINTER TAD K0400 LDCMD /SET INT. ENABLE LDADD /LOAD DISK AND GO DSKSKP /DSKP DISK SKIP JMP T60E /ERROR, NO SKIP TAD K0007 DCA T60E+2 /SETUP TEXT POINTER IONWAT /WAIT FOR INT. SKP CLA /ERROR, NO INT. OCCURRED NERROR /SKIP AND INT. O.K. T60E, ERROR /ERROR, DSKP OR INT. TST60 /SCOPE LOOP POINTER 0006 /MODIFIED TEXT POINTER / JMP I .+1 /TO NEXT TEST TST61 PAGE / /VERIFY THAT "DRL" CAUSES AND INT. THEN SKIP / TST61, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD K0007 DCA T61E+2 /SETUP TEXT POINTER TAD K0400 LDCMD /SETUP INT. ENABLE ENMAN1 /ENTER MAINTENANCE MODE TAD K1000 LDMAN /SET "DRL" DMAN IONWAT /WAIT FOR INT. JMP T61E /ERROR, NO INT. TAD K0006 DCA T61E+2 /SETUP TEXT POINTER DSKSKP /"DSKP" SHOULD SKIP SKP CLA /ERROR, NO SKIP NERROR /O.K. 4096 LOOPS T61E, ERROR /ERROR, SKIP OR INT. TST61 /SCOPE LOOP POINTER 0007 /MODIFIED TEXT POINTER / /VERIFY THAT MAINTENANCE DOES INHIBIT /DRIVE STATUS ERROR SKIP / TST62, CLA CLL IAC CLRALL /CLEAR CONTROL DSKSKP /DISK SKIP SKP CLA /O.K. NO SKIP JMP T62E /ERROR, SKIP CLA CLL CML RTL CLRALL /RECALIBRATE DSKSKP /DISK SKIP JMP T62E /ERROR, NO SKIP ENMAN1 /SET MAIN DSKSKP /DISK SKIP SKP CLA /O.K. NO SKIP JMP T62E /ERROR, SKIP CLA CLL CML RTL CLRALL /RECALIBRATE DSKSKP /DISK SKIP NERROR /O.K. 4096 LOOPS T62E, ERROR /ERROR, DISK SKIP TST62 /SCOPE LOOP POINTER 0006 /TEXT POINTER / /VERIFY THAT "RECALIBRATE" THEN DCLR DOES SET BUSY /AND DRIVE STATUS ERROR / TST63, CLA CLL IAC CLRALL /CLEAR CONTROL TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T63E /ERROR, STATUS ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER CLA CLL CML RTL CLRALL /"RECALIBRATE" DCLR RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T63E /ERROR, STATUS TAD REG1 AND K7776 /MASK OUT CLEAR CONTROL CLRALL /DCLR CLA CLL CML RTL TAD STCON TAD K0100 /BUSY BIT DCA GDREG2 /SETUP COMPARE REGISTER TAD REG2 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /STATUS, O.K. 4096 LOOPS T63E, ERROR /ERROR, RECALIBRATE TST63 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT "RECALIBRATE" THEN "DRL" RESULTS IN DRL, /DRIVE STATUS, AND TRANSFER DONE / TST64, CLA CLL IAC CLRALL /CLEAR CONTROL TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T64E /ERROR, STATUS ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER CLA CLL CML RTL CLRALL /DCLR RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T64E /ERROR, STATUS CLA CLL CML RTL TAD STCON TAD K4000 TAD K0004 /EXPECTED STATUS DCA GDREG2 TAD K1000 /ENABLE BIT LDMAN /LOAD MAINTENANCE SET DRL TAD REG1 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T64E, ERROR /ERROR, STATUS REGISTER TST64 /SCOPE LOOP POINTER 5000 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST65 / PAGE / /VERIFY THAT "RECALIBRATE" THEN "DLCA" SETS /DRIVE STATUS, AND BUSY ERROR IN STATUS REGISTER / TST65, CLA CLL IAC CLRALL /CLEAR CONTROL TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T65E /ERROR, STATUS ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER CLA CLL CML RTL CLRALL RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T65E /ERROR, STATUS CLA CLL CML RTL TAD K0100 TAD STCON /EXPECTED STATS DCA GDREG2 LDCUR /LOAD CURRENT ADDRESS TAD REG2 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T65E, ERROR /ERROR, STATUS REGISTER TST65 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT "RECALIBRATE" THEN "DLDC" /DOES SET BUSY ERROR IN STATUS / TST66, CLA CLL IAC CLRALL /CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL CLRALL CLA CLL CML RTL TAD K0100 TAD STCON /EXPECTED STATUS DCA GDREG2 LDCMD /LOAD COMMAND REGISTER TAD REG2 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, STATUS REGISTER TST66 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT RECALIBRATE THEN DLAG RESULTS IN /BUSY AND DRIVE STATUS ERROR. / TST67, CLA CLL IAC CLRALL /CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL TAD K0100 TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP EXPECTED COMPARE CLA CLL CML RTL /ENABLE RECALIBRATE CLRALL LDADD /LOAD DISK ADDRESS RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, BUSY OR DRIVE STATUS TST67 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT SKIP OCCURS ON BUSY ERROR / TST68, CLA CLL IAC CLRALL /CLEAR CONTROL DSKSKP /DSKP SKP CLA /SKIP O.K. JMP T68E /ERROR, DISK SKIP ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL CLRALL /DCLR LDCUR /LOAD CURRENT ADDRESS DSKSKP /DSKP DISK SKIP JMP T68E /ERROR, NO SKIP DSKSKP /DSKP JMP T68E /ERROR, NO SKIP NERROR /O.K. 4096 LOOPS T68E, ERROR /ERROR, DSKP TST68 /SCOPE LOOP POINTER 0006 /TEXT POINTER / /VERIFY THAT DCLR CLEARS ALL OF STATUS REGISTER / TST69, CLA CLL IAC CLRALL /CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL CLRALL /DCLR CLA CLL CML RTL TAD STCON TAD K4000 TAD K0004 /EXPECTED STATUS DCA GDREG2 TAD K1000 /ENABLE SHIFT LDMAN /LOAD MAINTENANCE SET DRL TAD REG1 RDSTAT /READ STATUS REGISTER ACCMP1 /CHECK RESULTS SKP CLA /O.K. JMP T69E /ERROR CLRALL /DCLR TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER TAD REG2 RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T69E, ERROR /ERROR, STATUS REGISTER TST69 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT INTERRUPT OCCURS ON BUSY ERROR / TST70, CLA CLL IAC CLRALL /CLEAR CONTROL TAD K0400 /ENABLE INT. BIT LDCMD /LOAD COMMAND ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL CLRALL /DCLR IONWAT /WAIT FOR INT. SKP CLA /INT. O.K. JMP T70E /ERROR, DISK INT. CLRALL /CLEAR STATUS IONWAT /WAIT FOR INTERRUPT JMP T70E /ERROR, NO INT. CLRALL /DCLR IONWAT /WAIT FOR INT. SKP CLA /INT. O.K. NERROR /O.K. 4096 LOOPS T70E, ERROR /ERROR, INT. TST70 /SCOPE LOOP POINTER 0007 /TEXT POINTER / /VERIFY THAT "RDBUF", "DLCA", "DRST", "DLAG" /OR "DSKP" DOES NOT AFFECT STATUS REGISTER. / TST71, CLA CLL IAC CLRALL /CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE CLA CLL CML RTL CLRALL /DCLR TAD K1000 /ENABLE SHIFT LDMAN /LOAD MAINTENANCE CLA CLL CML RTL TAD STCON TAD K0004 TAD K4000 /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER RDBUF /READ BUFFER TAD REG1 RDSTAT /READ STATUS TAD REG2 LDCUR /LOAD CURRENT ADDRESS TAD REG1 DSKSKP /DSKP NOP LDADD /LOAD DISK ADDRESS TAD REG1 LDBUF /LOAD BUFFER REGISTER TAD REG2 RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T71E /ERROR, STATUS CLRALL /CLEAR STATUS TAD STCON /EXPECTED STATUS DCA GDREG2 /SETUP COMPARE REGISTER RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T71E, ERROR /ERROR, STATUS REGISTER TST71 /SCOPE LOOP POINTER 5000 /TEXT POINTER / /VERIFY THAT "WORD COUNT" OVERFLOWS AND SETS /TRANSFER DONE ONLY AFTER 256 (12 BIT COUNTS). /TRANSFER DONE SHOULD SET ON THE 11 TH. SHIFT /OF THE 256 TH. WORD. / TST72, CLA CMA DCA REG1 /SET FOR 1 PASS PER TEST CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER CLA CLL CML RTL /TWO TAD M12 DCA TCNTR1 /FOR FINAL WORD! TAD M255 DCA TCNTR2 /ONE LESS THAN "LAST WORD" ENMAN1 /ENTER MAINTENANCE MODE T72R, TAD M12 DCA TCNTR3 /FOR EACH 12 BIT WORD TAD K0100 /ENABLE BITS TO SHIFT SILO LDMAN /LOAD MAINTENANCE ISZ TCNTR3 /SKIP ON EVERY "12 BIT WORD" JMP .-2 RDBUF /THIS SHOULD PREVENT A "DRL" RDSTAT /GET STATUS ACCMP1 /CHECK RESULTS SKP CLA JMP T72E /STATUS ERROR ISZ TCNTR2 JMP T72R /COUNT 255 "12 BIT WORDS" TAD K0100 /ENABLE SHIFT SILO LDMAN /LOAD MAINTENANCE ISZ TCNTR1 /BIT COUNTER JMP .-2 /COUNT 11 BITS RDSTAT /READ STATUS ACCMP1 /CHECK RESULTS SKP CLA /STATUS O.K. JMP T72E /ERROR, STATUS CLA CLL CML RAR TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER TAD K0100 LDMAN /SHIFT IN LAST WORD RDSTAT /READ STATUS ACCMP1 /ONLY TRANSFER DONE NERROR /STATUS O.K. T72E, ERROR /ERROR, 12 BIT COUNTER TST72 /SCOPE LOOP POINTER 5000 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST73 / PAGE / /VERIFY THAT DCLR DOES CLEAR 12 BIT COUNTER / TST73, CLA CMA DCA REG1 /SET FOR 1 PASS PER TEST TAD M255 DCA TCNTR4 /SETUP COUNTER T73R1, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD TCNTR4 DCA TCNTR1 T73R2, TAD M12 DCA TCNTR2 /12 BIT WORD COUNTER ENMAN1 /ENTER MAINTENANCE MODE TAD K0100 /ENABLE SHIFT LDMAN /LOAD MAINTENANCE ISZ TCNTR2 /COUNT SHIFTS JMP .-2 /MORE TO GO RDBUF /PREVERN DRL ISZ TCNTR1 /DO IT 12 TIMES JMP T73R2 /MORE 12 BIT COUNTS CLA CLL IAC /ENABLE CLEAR CONTROL CLRALL /AND CLEAR THE COUNTER TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER TAD M12 DCA TCNTR1 /FOR FINAL WORD! TAD M255 DCA TCNTR2 /FOR ONE LESS THAN "LAST WORD" ENMAN1 /ENTER MAINTENANCE MODE T73R3, TAD M12 DCA TCNTR3 /FOR EACH 12 BIT WORD TAD K0100 /ENABLE BITS TO SHIFT SILO LDMAN /LOAD MAINTENANCE ISZ TCNTR3 /SKIP ON EVERY "12 BIT WORD" JMP .-2 RDBUF /THIS SHOULD PREVENT A "DRL" RDSTAT /GET STATUS ACCMP1 /CHECK RESULTS SKP CLA JMP T73E /STATUS ERROR ISZ TCNTR2 JMP T73R3 /COUNT 255 "12 BIT WORDS" CLA CLL CML RAR TAD STCON DCA GDREG2 /SETUP COMPARE REGISTER TAD K0100 LDMAN /SHIFT IN LAST WORD ISZ TCNTR1 JMP .-2 RDSTAT /READ STATUS ACCMP1 /ONLY TRANSFER DONE SKP CLA /STATUS O.K. JMP T73E /ERROR, STATUS ISZ TCNTR4 /UPDATE SPECIAL COUNTER JMP T73R1 /MORE TO TEST NERROR /STATUS OK T73E, ERROR /ERROR, 12 BIT COUNTER TST73 /SCOPE LOOP POINTER 5000 /TEXT POINTER / / /VERIFY THAT 12TH BIT O.K. H DOES INHIBIT /SETTING DB CONT1=1, THIS IS WHAT STOPS /HALF BLOCK DATA BREAKS ON A READ BREAK. / TST74, CLA CLL IAC CLRALL /CLEAR CONTROL TAD K0100 /HALF BLOCK TRANSFERS LDCMD /LOAD COMMAND CLA CLL CMA DCA REG1 /SET UP FOR 1 PASS TAD M128 DCA TCNTR1 /COUNTER FOR 128 WORDS ENMAN1 /ENTER MAINTENANCE MODE T74R1, DCA GDREG2 /SETUP COMPARE REGISTER T74R1A, TAD M12 DCA TCNTR2 /12 BIT WORD COUNTER T74R2, CLA CLL TAD K0100 /ENABLE SHIFT LDMAN /LOAD MAINTENANCE ISZ TCNTR2 /COUNT BITS JMP .-2 /MORE TO GO RDBUF /READ LOWER BUFFER ACCMP1 /CHECK RESULTS SKP CLA /DATA O.K. JMP T74E /ERROR ISZ TCNTR1 /COUNT 128 WORDS JMP T74R1 /MORE TO GO TAD M128 DCA TCNTR1 /SETUP COUNTER T74R3, TAD M12 DCA TCNTR2 /SETUP BIT COUNTER CLA CLL CML RTL TAD K0100 /ENABLE SHIFT LDMAN /LOAD MAINTENANCE ISZ TCNTR2 /COUNT BITS JMP .-2 /MORE TO GO RDBUF /READ LOWER BUFFER ACCMP1 /CHECK RESULTS SKP CLA /DATA O.K. JMP T74E /ERROR ISZ TCNTR1 /UPDATE COUNTER JMP T74R3 /TEST 128 TIMES NERROR /TO NEXT TEST T74E, ERROR /ERROR, 128 WORD TST74 /SCOPE LOOP POINTER 4405 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST75 / /VERIFY THAT TRANSFER DONE "ALONE" CAUSES /DSKP TO SKIP. / PAGE TST75, CLA CLL CMA DCA REG1 /SET FOR 1 PASS PER TEST CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD M255 DCA TCNTR1 /ONE LESS THAN "LAST WORD" TAD M12 DCA TCNTR2 /FINAL WORD ENMAN1 /ENTER MAINTENANCE MODE T75R, TAD M12 DCA TCNTR3 /"12 BIT" WORD COUNTER TAD K0100 LDMAN /LOAD MAINTENANCE ISZ TCNTR3 JMP .-2 /COUNT 12 BIT WORDS RDBUF /PREVENT "DRL" DSKSKP /SHOULD NOT SKIP HERE SKP CLA /O.K. JMP T75E /ERROR, DSKP ISZ TCNTR1 JMP T75R /COUNT 255 WORDS TAD K0100 LDMAN /LOAD MAINTENANCE ISZ TCNTR2 JMP .-2 /DO ONE MORE WORD DSKSKP /DSKP "SKIP" SKP CLA /ERROR, DSKP DID NOT SKIP NERROR /O.K. 4096 LOOPS T75E, ERROR /ERROR, DSKP TST75 /SCOPE LOOP POINTER 0006 /TEXT POINTER / /VERIFY THAT TRANSFER DONE CAUSES "INT. RQ." / TST76, CLA CLL CMA DCA REG1 /SETUP FOR ! PASS PER TEST CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD M255 DCA TCNTR1 /ONE LESS THAN "LAST WORD" TAD M12 DCA TCNTR2 /FINAL WORD TAD K0400 /ENABLE INT. BIT LDCMD /LOAD COMMAND REGISTER ENMAN1 /ENTER MAINTENANCE MODE T76R, TAD M12 DCA TCNTR3 /"12 BIT" WORD COUNTER TAD K0100 /ENABLE SHIFT SILO LDMAN /LOAD MAINTENANCE ISZ TCNTR3 JMP .-2 /COUNT "12 BIT" WORDS RDBUF /PREVENT "DRL" IONWAT /WAIT FOR INT. SKP CLA /O.K. NO INT. JMP T76E /ERROR, INT. OCCURRED ISZ TCNTR1 JMP T76R /COUNT 255 WORDS TAD K0100 LDMAN /LOAD MAINTENANCE ISZ TCNTR2 JMP .-2 /DO ONE MORE WORD IONWAT /WAIT FOR EXPECTED INT. SKP CLA /ERROR, INT. DIDN'T OCCUR NERROR /O.K. 4096 LOOPS T76E, ERROR /ERROR, INT. TST76 /SCOPE LOOP POINTER 0007 /TEXT POINTER / / / / /VERIFY "DATA BREAK" FROM CURRENT FIELD LOCATION 0 /USE DATA PATTERN 0000 AND 7777. "DO A WRITE" / TST77, CLA CLL IAC CLRALL /DCLR ENMAN1 /ENTER MAINTENANCE MODE TAD HOMEMA /CURRENT FIELD BITS TAD K4000 /ENABLE "WRITE" LDCMD /LOAD COMMAND TAD REG1 CLL RAR SZL CLA CLA CLL CMA /MAKE "DATA WORD" DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA 0 /STORE OUTBOUND DATA CLA CLL CMA LDCUR /SET CURRENT ADDRESS TO 7777 LDCUR /LOAD CURRENT ADDRESS TO 0 TAD K0040 /ENABLE "BREAK" LDMAN /LOAD AND GO RDBUF /READ DATA BUFFER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T77E, ERROR /ERROR, DATA BREAK TST77 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT "DATA BREAK" WORKS FROM LOCATION 0 /OF CURRENT FIELD. DO "A WRITE" AND USE DATA /PATTERN "2525 AND 5252" / TST78, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD REG1 CLL RAR SZL CLA TAD K2525 TAD K2525 /TAKE DATA WORD DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA 0 /STORE OUTBOUND DATA TAD HOMEMA /GET CURRENT FIELD BITS TAD K5000 /GET "WRITE ENABLE BIT" LDCMD /LOAD COMMAND REGISTER TAD REG2 LDCUR /SET CURRENT ADDRESS TO 7777 LDCUR /LOAD CURRENT ADDRESS TO 0 TAD K0040 /DATA BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /READ DATA BUFFER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T78E, ERROR /ERROR, DATA BREAK TST78 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT "DATA BREAK" WORKS FROM LOCATION 7777 /OF CURRENT FIELD. DO "A WRITE" AND USE DATA PATTERN /"0000 AND 7777" / TST79, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD REG1 CLL RAR SZL CLA CLA CLL CMA /MAKE DATA WORD DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA I K7777 /STORE OUTBOUND DATA TAD REG1 LDCUR /SET CURRENT ADDRESS CLA CLL CMA LDCUR /LOAD CURRENT ADDRESS TO 7777 TAD HOMEMA /CURRENT FIELD BITS TAD K4000 /WRITE ENABLE LDCMD /LOAD COMMAND REGISTER TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /READ DATA BUFFER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T79E, ERROR /ERROR, DATA BREAK TST79 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY "DATA BREAK" FROM LOCATION 7777 OF /CURRENT FIELD. DO A "WRITE" AND USE DATA /PATTERN 2525 AND 5252. / TST80, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD REG1 CLL RAR SZL CLA TAD K2525 TAD K2525 /MAKE DATA WORD DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA I K7777 /STORE OUTBOUND DATA TAD HOMEMA /CURRENT FIELD BITS TAD K5000 /FUNCTION "WRITE" LDCMD /LOAD COMMAND TAD REG2 LDCUR /SET CURRENT ADDRESS CLA CLL CMA LDCUR /LOAD CURRENT ADDRESS TO 7777 TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD MAINTENANCE AND GO RDBUF /READ BUFFER ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T80E, ERROR /ERROR, DATA BREAK TST80 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT "DATA BREAK" WORKS FROM CURRENT FIELD /LOCATION 0. DO A "WRITE" AND USE ALL COMBINATION PATTERN /ALSO VERIFY THAT DATA IN LOCATION 0 DOESN'T CHANGE /ON A WRITE BREAK. (NOTE: DATA FROM LOCATION 0 PUT /IN INDICATOR "DT:") / TST81, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA 0 /STORE OUTBOUND DATA LDCUR /SET CURRENT ADDRESS TO 0 TAD HOMEMA /CURRENT FIELD BITS TAD K4000 /WRITE FUNCTION LDCMD /LOAD COMMAND TAD K0040 /DATA BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /READ BUFFER ACCMP1 /CHECK RESULTS SKP CLA JMP T81E /ERROR TAD 0 DCA DTREG /SAVE IN CASE OF ERROR TAD DTREG ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T81E, ERROR /ERROR, DATA BREAK TST81 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY "DATA BREAK" FROM LOCATION 7777 OF /CURRENT FIELD. DO A "WRITE" AND USE ALL COMBINATIONS. /ALSO VERIFY THAT OUTBOUND DATA IN LOCATION 7777 /DOESN'T CHANGE WHEN DOING A WRITE BREAK. (NOTE: DATA FROM /LOCATION 7777 PUT IN INDICATOR "DT:") / TST82, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA I K7777 /STORE OUTBOUND DATA CLA CLL CMA LDCUR /SET CURRENT ADDRESS TO 7777 TAD HOMEMA /CURRENT FIELD BITS TAD K5000 /WRITE FUNCTION LDCMD /LOAD COMMAND REGISTER TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /READ BUFFER ACCMP1 /CHECK RESULTS SKP CLA JMP T82E /ERROR TAD I K7777 DCA DTREG /SAVE IN CASE OF ERROR TAD DTREG ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS T82E, ERROR /ERROR, DATA BREAK TST82 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT "DCLR" CLEARS CURRENT ADDRESS /FIRST DO A DATA BREAK FROM LOCATION 7776 /THEN "DCLR" FROM LOCATION 0000. DO "A WRITE" /AND USE DATA PATTERN ALL COMBINATIONS. / TST83, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA I K7776 /STORE OUTBOUND DATA BREAK 1 TAD REG2 DCA 0 /STORE OUTBOUND DATA BREAK 2 TAD HOMEMA /CURRENT FIELD BITS TAD K4000 /WRITE FUNCTION LDCMD /LOAD COMMAND CLA CLL CMA RAL LDCUR /LOAD CURRENT ADDRESS TO 7776 TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /READ BUFFER ACCMP1 /CHECK RESULTS SKP CLA /O.K. TRY LOCATION 0 JMP T83E /ERROR, DATA BREAK CLA CLL IAC CLRALL /DCLR "CLEAR CURRENT ADDRESS" ENMAN1 /ENTER MAINENANCE MODE DCA ADREG /SETUP FOR ERROR PRINTER TAD HOMEMA /CURRENT FIELD BITS TAD K5000 /FUNCTION WRITE LDCMD /LOAD COMMAND TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /READ BUFFER ACCMP1 /CHECK RESULTS NERROR /ALL WORKED 4096 LOOPS T83E, ERROR /ERROR, DATA BREAK TST83 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT CURRENT ADDRESS DOES INCREMENT FROM 7777 /TO 0000. DO A WRITE DATA BREAK AND USE DATA PATTERN /ALL COMBINATION. / TST84, CLA CLL IAC CLRALL /CLEAR CONTROL TAD REG1 DCA 0 /STORE OUTBOUND DATA TAD REG2 DCA I K7777 /STORE OUTBOUND DATA CLA CLL CMA LDCUR /LOAD CURRENT ADDRESS ENMAN1 /ENTER MAINTENANCE MODE TAD K5000 /WRITE FUNCTION TAD HOMEMA /CURRENT FIELD BITS LDCMD /LOAD COMMAND CLA CLL CMA RAL DCA TCNTR1 /2 BREAK COUNTER TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD MAINTENANCE ISZ TCNTR1 /COUNT BREAKS JMP .-2 /DO 2 CLA CLL TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER RDBUF /GET FIRST WORD ACCMP1 /CHECK IT SKP CLA /FIRST O.K. JMP T84E /ERROR, FIRST WORD DCA ADREG /SETUP ERROR PRINTER TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER RDBUF /GET SECOND WORD ACCMP1 /CHECK IT NERROR /O.K. 4096 LOOPS T84E, ERROR /DATA BREAK TST84 /SCOPE LOOP POINTER 4263 /TEXT POINTER / / /VERIFY THAT CURRENT ADDRESS DOES INCREMENT /ADDRESS. TEST FROM 0200 TO TST85 OF CURRENT /FIELD. DO A WRITE DATA BREAK. / TST85, CLA CLL IAC CLRALL /DCLR "CLR ALL" CLA CLL CMA DCA REG1 /SETUP FOR 1 PASS PER TEST TAD K0200 DCA TCNTR2 /START AT ADDRESS 0200 TAD K0200 LDCUR /LOAD CURRENT ADDRESS T85R1, ENMAN1 /ENTER MAINTENANCE MODE LDADD /KEEP WRITE INHIBIT CLEAR TAD I TCNTR2 /GET INSTRUCTION DCA TCNTR1 /SAVE INSTRUCTION TAD TCNTR2 CLL RAR SZL CLA CLA CMA /USE DATA 7777 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 DCA I TCNTR2 /STORE OUTBOUND DATA TAD HOMEMA /CURRENT FIELD BITS TAD K4000 /WRITE FUNCTION LDCMD /LOAD COMMAND REGISTER TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO CLA CLL TAD TCNTR1 /GET INSTRUCTION DCA I TCNTR2 /REPLACE INSTRUCTION TAD TCNTR2 DCA ADREG /ADDRESS OF BREAK RDBUF /GET DATA ACCMP1 /CHECK RESULTS SKP CLA JMP T85E /ERROR, DATA BREAK TAD TCNTR2 TAD MTS85 /SPECIAL POINTER FOR START OF SNA CLA /THIS TEST. JMP T85OK /TEST O.K. ISZ TCNTR2 JMP T85R1 /LOOP DO 0200 TO TST60 T85OK, NERROR /THIS ADDRESS WORKED TRY NEXT T85E, ERROR /ERROR, DATA BREAK TST85 /SCOPE LOOP POINTER 4263 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST86 / /VERIFY THAT 8 LAST BREAK SETS AFTER 256 WRITE DATA BREAKS /AND VERIFY THAT DCLR CLEARS WRITE INHIBIT COUNTER. / PAGE TST86, CLA CLL CMA DCA REG1 /SETUP FOR 1 PASS PER TEST TAD M255 DCA TCNTR1 /SPECIAL COUNTER T86R1, CLA CLL IAC CLRALL /CLEAR CONTROL TAD TCNTR1 DCA TCNTR2 /AMOUNT OF BREAKS TO DO ENMAN1 /ENTER MAINTENANCE MODE TAD HOMEMA /CURRENT FIELD BITS TAD K4000 /WRITE FUNCTION LDCMD /LOAD COMMAND T86R2, LDCUR /LOAD CURRENT ADDRESS CLA CLL CMA DCA 0 /STORE OUTBOUND DATA CLA CLL CMA DCA GDREG2 /SETUP COMPARE REGISTER TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /GET WORD ACCMP1 /CHECK RESULTS SKP CLA JMP T86E /DATA ERROR ISZ TCNTR2 JMP T86R2 /DO 0-255 BREAKS CLA CLL IAC CLRALL /CLEAR CONTROL AND COUNTER CLA CLL CMA TAD M255 DCA TCNTR2 /256 BREAK COUNTER T86R3, CLA CLL /MAKE DATA PATTERN DCA 0 /STORE OUTBOUND DATA DCA GDREG2 /SETUP COMPARE REGISTER ENMAN1 /ENTER MAINTENANCE MODE LDCUR /LOAD CURRENT ADDRESS TAD K5000 /WRITE FUNCTION TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD MAINTENANCE RDBUF /GET WORD ACCMP1 /CHECK RESULTS SKP CLA /WORD O.K. JMP T86E /DATA ERROR ISZ TCNTR2 JMP T86R3 /DO 256 WRITE BREAKS TAD K7000 DCA TCNTR3 /CLEAR COUNTER T86R4, CLA CLL CMA DCA 0 /STORE NOT OUTBOUND DATA LDCUR /LOAD CURRENT ADDRESS TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD "SHOULD NOT BREAK" RDBUF /GET DATA ACCMP1 /CHECK IT SKP CLA /DATA O.K. JMP T86E /ERROR, DATA BREAK INHIBIT ISZ TCNTR3 JMP T86R4 /DO "1000 FAKE" BREAKS ISZ TCNTR1 JMP T86R1 /START ALL OVER WITH ONE LESS NERROR /TO NEXT TEST T86E, ERROR /ERROR, DATA BREAK TST86 /SCOPE LOOP POINTER 4263 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST87 / / /VERIFY THAT 8 LAST BREAK SETS AFTER 128 BREAKS IF /HALF BIT IS SET. ALSO MAKE SURE LOAD DISK ADDRESS LOADS /THE INHIBIT COUNTER CORRECTLY. / TST87, CLA CLL CMA DCA REG1 /SETUP FOR 1 PASS PER TEST TAD M255 DCA TCNTR1 /SPECIAL COUNTER T87R1, CLA CLL IAC CLRALL /CLEAR CONTROL TAD TCNTR1 DCA TCNTR2 /AMOUNT OF BREAKS TO DO ENMAN1 /ENTER MAINTENANCE MODE TAD K0100 /HALF BIT TAD HOMEMA /CURRENT FIELD BITS TAD K4000 /WRITE FUNCTION LDCMD /LOAD COMMAND T87R2, LDCUR /LOAD CURRENT ADDRESS CLA CLL CMA DCA 0 /STORE OUTBOUND DATA CLA CLL CMA DCA GDREG2 /SETUP COMPARE REGISTER TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO RDBUF /GET WORD ACCMP1 /CHECK RESULTS SKP CLA JMP T87E /DATA ERROR ISZ TCNTR2 JMP T87R2 /DO SO MANY BREAKS LDADD /LOAD ADDRESS AND INHIBIT COUNT TAD M128 DCA TCNTR2 /128 BREAK COUNTER T87R3, CLA CLL /MAKE DATA WORD DCA 0 /STORE NOT OUTBOUND DATA DCA GDREG2 /SETUP COMPARE REGISTER LDCUR /LOAD CURRENT ADDRESS TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD MAINTENANCE RDBUF /GET WORD ACCMP1 /CHECK RESULTS SKP CLA /WORD O.K. JMP T87E /DATA ERROR ISZ TCNTR2 JMP T87R3 /DO 128 WRITE BREAKS TAD K7000 DCA TCNTR3 /CLEAR COUNTER T87R4, CLA CLL CMA DCA 0 /STORE NOT OUTBOUND DATA LDCUR /LOAD CURRENT ADDRESS TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD "SHOULD NOT BREAK" RDBUF /GET DATA ACCMP1 /CHECK IT SKP CLA /DATA O.K. JMP T87E /ERROR, DATA BREAK INHIBIT ISZ TCNTR3 JMP T87R4 /DO "1000 FAKE" BREAKS ISZ TCNTR1 JMP T87R1 /START ALL OVER WITH ONE LESS NERROR /TO NEXT TEST T87E, ERROR /ERROR, DATA BREAK TST87 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT "DATA BREAK" WORKS WITH A "READ" /TO LOCATION 0 OF CURRENT FIELD. USE DATA /PATTERN 0000 AND 7777. / TST88, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND TO 0 TAD REG1 CLL RAR SZL CLA CLA CMA DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER TAD K0040 LDMAN /LOAD AND GO CLA CLL DCA ADREG /ADDRESS FOR PRINTER TAD 0 /GET INBOUND WORD DCA DTREG /SAVE IT TAD DTREG ACCMP1 /CHECK NERROR /O.K. 4096 LOOPS ERROR /ERROR, DATA BREAK TST88 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY WITH A "READ" THAT "DATA BREAK" WORKS /FROM LOCATION "7777" OF CURRENT FIELD USE /DATA PATTERN 0000 AND 7777. / TST89, CLA CLL IAC CLRALL TAD K1000 TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND FOR READ TAD REG1 CLL RAR SZL CLA CLA CMA DCA GDREG2 /SETUP COMPARE REGISTER CLA CMA LDCUR /LOAD CURRENT ADDRESS TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD AND GO CLA CLL TAD I K7777 /GET "WORD" DCA DTREG /SAVE INBOUND WORD TAD DTREG ACCMP1 /CHECK IT NERROR /O.K. 4096 LOOPS ERROR /ERROR, DATA BREAK TST89 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT "DATA BREAK" WITH A "READ" TO /CURRENT FIELD LOCATION 0 USE DATA PATTERN /5252 AND 2525 / TST90, CLA CLL IAC CLRALL /DCLR TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND TO READ TAD REG1 CLL RAR SZL CLA /WHAT DATA TAD K2525 /DATA 5252 TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER LDCUR /LOAD CURRENT ADDRESS TO 0 TAD K0040 /ENABLE BREAK LDMAN /LOAD AND GO CLA CLL TAD 0 DCA DTREG /SAVE DATA TAD 0 ACCMP1 /CHECK NERROR /O.K. 4096 LOOPS ERROR /ERROR, DATA BREAK TST90 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT "DATA BREAK" WORD WITH A "READ" /TO CURRENT FIELD LOCATION 7777. /USE DATA PATTERN 5252 AND 2525 / TST91, CLA CLL IAC CLRALL TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND CLA CMA LDCUR /LOAD CURRENT ADDRESS TAD REG1 CLL RAR SZL CLA /WHAT DATA TO USE TAD K2525 /DATA 5252 TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD MAINTENANCE CLA CLL TAD I K7777 /GET BREAK WORD DCA DTREG /SAVE FOR ERROR PRINTER TAD DTREG ACCMP1 /CHECK NERROR /O.K. 4096 LOOPS ERROR /ERROR, DATA BREAK TST91 /SCOPE LOOP POINTER 4263 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST92 / / /VERIFY THAT "DATA BUFFERS" CAN BE FILLED /ON A WRITE DATA BREAK FROM LOCATION /0 OF CURRENT FIELD. USE ALL COMBINATIONS. / PAGE TST92, CLA CLL IAC CLRALL /DCLR "CLR ALL" ENMAN1 /ENTER MAINTENANCE MODE TAD M4 DCA TCNTR1 /FOR FOUR WORDS TAD REG1 DCA TCNTR2 /DATA START TAD HOMEMA /CURRENT FIELD TAD K4000 /WRITE FUNCTION LDCMD /LOAD COMMAND T92R1, LDCUR /LOAD CURRENT ADDRESS TO 0 TAD TCNTR2 DCA 0 /STORE OUTBOUND DATA TAD K0040 /ENABLE BREAK BIT LDMAN /LOAD AND GO CLA CLL ISZ TCNTR2 /UPDATE DATA WORD NOP ISZ TCNTR1 JMP T92R1 /FILL BUFFER TAD M4 DCA TCNTR1 TAD REG1 DCA GDREG2 T92R2, RDBUF ACCMP1 SKP CLA JMP T92E ISZ GDREG2 NOP ISZ TCNTR1 JMP T92R2 NERROR /O.K. 4096 LOOPS T92E, ERROR /ERROR, DATA BREAK TST92 /SCOPE LOOP POINTER 4263 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST93 / / /VERIFY THAT "DATA BREAK" WORKS WITH /A "READ" TO CURRENT FIELD LOCATION 0 /TRY ALL COMBINATIONS. / TST93, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND FOR READ DCA ADREG /SAVE ADDRESS TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 /GET VALUE TO LOAD LDBUF /LOAD UPPER BUFFER TAD K0040 /BREAK ENABLE BIT LDMAN /LOAD AND GO CLA CLL TAD 0 /GET DATA WORD DCA DTREG /SAVE FOR ERROR PRINTER TAD DTREG ACCMP1 /CHECK NERROR /O.K. 4096 LOOPS ERROR /ERROR, DATA BREAK TST93 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT READ DATA BREAK DOES OCCUR /WHEN FUNCTION = 2 / TST94, CLA CLL IAC CLRALL /DCLR TAD REG1 /GET VALUE TO LOAD DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 LDBUF /LOAD UPPER BUFFER TAD GDREG2 CMA DCA 0 LDCUR /SET CURRENT ADDRESS TO 0 TAD HOMEMA /CURRENT FIELD TAD K2000 LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE BREAK LDMAN /GO CLA CLL TAD 0 DCA DTREG /SAVE FOR ERROR PRINTER TAD DTREG ACCMP1 /DID 0 CHANGE NERROR /ALL O.K. ERROR /ERROR, DATA BREAK TST94 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT A READ DATA BREAK DOES OCCUR /WHEN FUNCTION = 3 / TST95, CLA CLL IAC CLRALL /DCLR TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 LDBUF /LOAD UPPER BUFFER TAD GDREG2 CMA DCA 0 LDCUR /SET CURRENT ADDRESS TO 0 TAD HOMEMA /CURRENT FIELD TAD K1000 TAD K2000 LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE BREAK LDMAN /GO CLA CLL TAD 0000 DCA DTREG /SAVE FOR ERROR PRINTER TAD DTREG ACCMP1 /DID 0 CHANGE NERROR /ALL O.K. T95E, ERROR /ERROR, DATA BREAK TST95 /SCOPE LOOP POINTER 4263 /TEXT POINTER / JMP I .+1 /TO NEXT TEST TST97 PAGE / / /VERIFY THAT A READ DATA BREAK DOES OCCUR /WHEN FUNCTION = 6 / TST97, CLA CLL IAC CLRALL /DCLR TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 LDBUF /LOAD UPPER BUFFER TAD GDREG2 CMA DCA 0 LDCUR /SET CURRENT ADDRESS TO 0 TAD HOMEMA /CURRENT FIELD TAD K4000 TAD K2000 LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE BREAK LDMAN /GO CLA CLL TAD 0 DCA DTREG /SAVE FOR ERROR PRINTER TAD DTREG ACCMP1 /DID 0 CHANGE NERROR /ALL O.K. T97E, ERROR /ERROR, DATA BREAK TST97 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT A READ DATA BREAK DOES OCCUR /WHEN FUNCTION = 7 / TST98, CLA CLL IAC CLRALL /DCLR TAD REG2 DCA GDREG2 /SETUP COMPARE REGISTER TAD GDREG2 LDBUF /LOAD UPPER BUFFER TAD GDREG2 CMA DCA 0 LDCUR /SET CURRENT ADDRESS TO 0 TAD HOMEMA /CURRENT FIELD TAD K4000 TAD K1000 TAD K2000 LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE BREAK LDMAN /GO CLA CLL TAD 0 DCA DTREG /SAVE FOR ERROR PRINTER TAD DTREG ACCMP1 /DID 0 CHANGE NERROR /ALL O.K. T98E, ERROR /ERROR, DATA BREAK TST98 /SCOPE LOOP POINTER 4263 /TEXT POINTER / /VERIFY THAT ALL DATA BUFFERS CAN BE FULL /AT ONCE. USE A READ BREAK AND PATTERN /ALL COMBINATIONS. / TST99, CLA CLL IAC CLRALL /DCLR "CLR ALL" TAD REG2 DCA TCNTR4 TAD M4 DCA TCNTR3 /COUNTER FOR # OF BUFFERS T99R1, TAD TCNTR4 LDBUF /LOAD UPPER BUFFER CLA CLL CMA TAD TCNTR4 DCA TCNTR4 ISZ TCNTR3 JMP T99R1 /4 COUNT, SKIP WHEN BUFFERS FULL TAD REG2 DCA GDREG2 /SETUP FOR FIRST COMPARE TAD M4 DCA TCNTR3 TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND T99R2, LDCUR /LOAD CURRENT ADDRESS TAD K0040 /GET ENABLE BREAK LDMAN /LOAD MAINTENANCE CLA CLL TAD 0 /GET DATA DCA DTREG /SAVE FOR PRINTER TAD DTREG ACCMP1 /CHECK SKP CLA /O.K. CHECK NEXT JMP T99E /ERROR DATA BUFFERS CLA CLL CMA TAD GDREG2 DCA GDREG2 /SETUP FOR NEXT ISZ TCNTR3 JMP T99R2 NERROR /O.K. 4096 LOOPS T99E, ERROR /ERROR, DATA BUFFERS TST99 /SCOPE LOOP POINTER 4263 /TEXT POINTER / / /VERIFY A WRITE THEN READ BREAK FROM /LOCATIONS 7777 THEN 0000 OF THE /CURRENT FIELD. USE PATTERN 0-7777. / TST100, CLA CLL IAC CLRALL /CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE CLA CLL CMA LDCUR /LOAD CURRENT ADDRESS TAD REG2 DCA I K7777 /STORE OUTBOUND DATA TAD HOMEMA /CURRENT FIELD TAD K4000 /WRITE FUNCTION LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE BREAK LDMAN /ISSUE MAINTENANCE IOT CLA CLL /READ FUNCTION TAD HOMEMA /CURRENT FIELD LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE BREAK LDMAN /ISSUE MAINTENANCE IOT CLA CLL ISZ ADREG NOP TAD REG2 DCA GDREG2 /SETUP COMPARE TAD 0000 DCA DTREG /STORE DATA READ FOR PRINTER TAD 0000 ACCMP1 /CHECK RESULTS NERROR /O.K. 4096 LOOPS ERROR /ERROR, WRITE OR READ TST100 /SCOPE LOOP POINTER 4263 /TEXT POINTER CLA CLL IAC TAD FLDMAX SNA CLA /IS IT TEST EXTENDED MEM. JMP I XEND /NO, END OF TEST / JMP I .+1 /TO NEXT TEST EXTFLD / PAGE / /ROUTINE TO CHECK IF CONSOLE PACKAGE ACTIVE. /IF SO, THEN INHIBIT EXTENDED MEMORY TESTS. / TSTLAS, ENDTST EXTFLD, TAD OP2 AND K0400 /MASK CLASSIC BIT SZA CLA /ON CLASSIC SYSTEM? JMP I TSTLAS /BY-PASS EXT. TESTS. / /VERIFY THAT DATA BREAK WORKS WITH A WRITE FROM /LOCATION 0000 IN ALL EXISTING EXTENDED FIELDS. /USE DATA PADDERN 0000 + 7777. / TST101, CLA CLL IAC CLRALL /DCLR ENMAN1 /ENTER MAINTENANCE MODE TAD KCDF DCA TOFLD2 /START FIELD 0 TAD FLDMAX DCA TCNTR1 /FIELDS TO TEST -1 TAD I THSFLD DCA RTFLD2 /RETURN FIELD CDF TAD REG1 CLL RAR SZL CLA /USE DATA 7777 IF LINK IS SET CLA CMA DCA GDREG2 /SETUP COMPARE REGISTER T101R, LDCUR /SET CURRENT ADDRESS TO 0000 TAD TOFLD2 CIA TAD RTFLD2 SNA CLA /CURRENT FIELD? JMP NEXFL2 /YES, NOT THIS ONE TAD GDREG2 /OUTBOUND DATA TOFLD2, HLT /MODIFIED CDF DCA I K0000 /STORE DATA RTFLD2, HLT /HOME CDF TAD TOFLD2 AND K0070 TAD K4000 /WRITE LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE WRITE BREAK LDMAN /GO RDBUF /GET RESULTS ACCMP1 /CHECK RESULTS SKP CLA /O.K. TRY NEXT JMP T101E /ERROR NEXFL2, ISZ TCNTR1 SKP CLA JMP T101D /DONE WITH ALL TAD TOFLD2 TAD K0010 DCA TOFLD2 /SET TO NEXT FIELD JMP T101R /TRY IT T101D, NERROR /O.K. 4096 LOOPS T101E, ERROR /ERROR, DATA BREAK TST101 /SCOPE LOOP POINTER 4263 / / / /VERIFY THAT DATA BREAK WORKS WITH A WRITE FROM /LOCATION 0000 IN ALL EXISTING EXTENDED FIELDS. /USE DATA PATTERN 2525 + 5252. / TST102, CLA CLL IAC CLRALL /DCLR ENMAN1 /ENTER MAINTENANCE MODE TAD KCDF DCA TOFLD3 /START FIELD 0 TAD FLDMAX DCA TCNTR1 /FIELDS TO TEST -1 TAD I THSFLD DCA RTFLD3 /RETURN FIELD CDF TAD REG1 CLL RAR SZL CLA /USE DATA 5252 IF LINK IS SET TAD K2525 TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER T102R, LDCUR /SET CURRENT ADDRESS TO 0000 TAD TOFLD3 CIA TAD RTFLD3 SNA CLA /CURRENT FIELD JMP NEXFL3 /YES, NOT THIS ONE TAD GDREG2 /OUTBOUND DATA TOFLD3, HLT /MODIFIED CDF DCA I K0000 /STORE DATA RTFLD3, HLT /HOME CDF TAD TOFLD3 AND K0070 TAD K4000 /WRITE LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE WRITE BREAK LDMAN /GO RDBUF /GET RESULTS ACCMP1 /CHECK RESULTS SKP CLA /O.K. TRY NEXT JMP T102E /ERROR NEXFL3, ISZ TCNTR1 SKP CLA JMP T102D /DONE WITH ALL TAD TOFLD3 TAD K0010 DCA TOFLD3 /SET TO NEXT FIELD JMP T102R /TRY IT T102D, NERROR /AC O.K. 4096 LOOPS T102E, ERROR /ERROR, DATA BREAK TST102 /SCOPE LOOP POINTER 4263 /TEXT POINTER JMP I .+1 TST103 PAGE / /VERIFY THAT DATA BREAK WORKS WITH A WRITE FROM /LOCATION 7777 IN ALL EXISTING EXTENDED FIELDS. /USE DATA PATTERN 0000 + 7777. / TST103, CLA CLL IAC CLRALL /DCLR ENMAN1 /ENTER MAINTENANCE MODE TAD KCDF DCA TOFLD4 /START FIELD 0 TAD FLDMAX DCA TCNTR1 /FIELDS TO TEST -1 TAD I THSFLD DCA RTFLD4 /RETURN FIELD CDF TAD REG1 CLL RAR SZL CLA /USE DATA 7777 IF LINK IS SET CLA CMA DCA GDREG2 /SETUP COMPARE REGISTER T103R, CLA CMA LDCUR /SET CURRENT ADDRESS TO 7777 TAD TOFLD4 CIA TAD RTFLD4 SNA CLA /CURRENT FIELD JMP NEXFL4 /YES, NOT THIS ONE TAD GDREG2 /OUTBOUND DATA TOFLD4, HLT /MODIFIED CDF DCA I K7777 /STORE DATA RTFLD4, HLT /HOME CDF TAD TOFLD4 AND K0070 TAD K4000 /WRITE LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE WRITE BREAK LDMAN /GO RDBUF /GET RESULTS ACCMP1 /CHECK RESULTS SKP CLA /O.K. TRY NEXT JMP T103E /ERROR NEXFL4, ISZ TCNTR1 SKP CLA JMP T103D /DONE WITH ALL TAD TOFLD4 TAD K0010 DCA TOFLD4 /SET TO NEXT FIELD JMP T103R /TRY IT T103D, NERROR /O.K. 4096 LOOPS T103E, ERROR /ERROR, DATA BREAK TST103 /SCOPE LOOP POINTER 4263 /TEXT POINTER / / / /VERIFY THAT DATA BREAK WORKS WITH A WRITE FROM /LOCATION 7777 IN ALL EXISTING EXTENDED FIELDS. /USE DATA PATTERN 2525 + 5252. / TST104, CLA CLL IAC CLRALL /DCLR ENMAN1 /ENTER MAINTENANCE MODE TAD KCDF DCA TOFLD5 /START FIELD 0 TAD FLDMAX DCA TCNTR1 /FIELDS TO TEST -1 TAD I THSFLD DCA RTFLD5 /RETURN FIELD CDF TAD REG1 CLL RAR SZL CLA /USE DATA 5252 IF LINK IS SET TAD K2525 TAD K2525 DCA GDREG2 /SETUP COMPARE REGISTER T104R, CLA CMA LDCUR /SET CURRENT ADDRESS TO 7777 TAD TOFLD5 CIA TAD RTFLD5 SNA CLA /CURRENT FIELD JMP NEXFL5 /YES, NOT THIS ONE TAD GDREG2 /OUTBOUND DATA TOFLD5, HLT /MODIFIED CDF DCA I K7777 /STORE DATA RTFLD5, HLT /HOME CDF TAD TOFLD5 AND K0070 TAD K4000 /WRITE LDCMD /LOAD COMMAND REGISTER TAD K0040 /ENABLE WRITE BREAK LDMAN /GO RDBUF /GET RESULTS ACCMP1 /CHECK RESULTS SKP CLA /O.K. TRY NEXT JMP T104E /ERROR NEXFL5, ISZ TCNTR1 SKP CLA JMP T104D /DONE WITH ALL TAD TOFLD5 TAD K0010 DCA TOFLD5 /SET TO NEXT FIELD JMP T104R /TRY IT T104D, NERROR /O.K. 4096 LOOPS T104E, ERROR /ERROR, DATA BREAK TST104 /SCOPE LOOP POINTER 4263 /TEXT POINTER JMP I .+1 TST105 PAGE / /VERIFY THAT DATA BREAK WORKS FROM ALL LOCATIONS /IN ALL EXISTING EXTENDED FIELDS. /USE DATA PATTERN ALL COMBINATIONS. / TST105, TAD KCDF DCA TOFLD1 TAD FLDMAX DCA TCNTR1 TAD I THSFLD DCA RTFLD1 TAD REG1 DCA GDREG2 /SETUP COMPARE REGISTER T105R, CLA CLL IAC CLRALL /DCLR ENMAN1 /ENTER MAINTENANCE MODE TAD TOFLD1 CIA TAD RTFLD1 SNA CLA /IS IT CURRENT FIELD JMP NEXFL1 /YES, BYPASS TAD GDREG2 TOFLD1, 0 /MODIFIED CDF DCA I REG2 /STORE DATA WORD TAD TOFLD1 AND K0070 /MASK DF BITS TAD K4000 LDCMD /LOAD COMMAND REGISTER TAD REG2 LDCUR /LOAD CURRENT ADDRESS TAD K0040 /ENABLE BREAK LDMAN /GO CLA CLL IAC TAD REG2 DCA ADREG /SETUP BREAK TO ADDRESS TAD TOFLD1 AND K0070 /MASK FIELD BITS LDCMD /LOAD COMMAND TAD K0040 LDMAN /LOAD MAINTENANCE CLA CLL TAD I ADREG /GET DATA READ RTFLD1, 0 /CURRENT FIELD CDF DCA DTREG /STORE FOR PRINTER TAD DTREG ACCMP1 /CHECK RESULTS SKP CLA /THIS FIELD O.K. JMP T105E /ERROR ISZ GDREG2 /UPDATE WORD NOP NEXFL1, ISZ TCNTR1 SKP CLA JMP T105D /ALL DONE TAD TOFLD1 TAD K0010 DCA TOFLD1 JMP T105R /TRY NEXT FIELD T105D, NERROR /O.K. NEXT ADDRESS T105E, ERROR /ERROR, DATA BREAK TST105 /SCOPE LOOP POINTER 4263 /TEXT POINTER / ENDTST, SET /SETUP FIELD 0 TAD SAVEND DCA I K7777 /REPLACE BINARY TAD OP2 AND K4000 /TEST FOR APT SNA CLA /APT?? JMP .+3 /NO, NORMAL RUN ISZ PCOUNT JMP ENDHLT+1 /LOOP PROGRAM CLASIC /CHECK FOR CONSOLE CLASSIC C8PASS /CHECK FOR PASS COMPLETE TYPEOUT. SKP CLA JMP .+4 /BYPASS NORMAL TYPEOUT. CRLF PRNTER /PRINT END OF TEST MESSAGE TEXEND /POINTER LAS RAL SPA CLA JMP .+4 /NO STOP CLASIC /CHECK FOR CLASSIC. C8INQU /ROUTINE TO EXECUTE ENDHLT, HLT /END OF TEST CLA CLL IAC CLRALL /DCLR JMP I .+1 /LOOP ON PROGRAM TST4 / / /MANUAL TEST FOR 16 BIT COUNTER. /SET SWITCH REGISTER TO 0201 AND PRESS /LOAD ADDRESS. SET THE SWITCH REGISTER TO 0000. /THEN PRESS CLEAR AND CONTINUE. /SCOPE THE 16TH CARRY OUTPUT TEST POINT /FOR A GROUND TO +3 VOLT SIGNAL. / MANUL, CLA CLL IAC CLRALL /FIRST, CLEAR CONTROL ENMAN1 /ENTER MAINTENANCE MODE TAD K0100 /ENABLE SHIFT PULSES LDMAN /ISSUE MAINTENANCE IOT AND JMP .-1 /CAUSE HI MAIN SHIFTS TO THE JMP .-2 /INPUT OF THE 16 BIT COUNTER. / /THIS ROUTINE WILL BE A SKIP INSTRUCTION FOR SYSTEMS WITHOUT CLASSIC /OTHERWISE IT WILL EXECUTE THE NEXT INSTRUCTION IN FIELD 0 AND THEN /SKIP THE INSTRUCTION AFTER THAT ONE. / CLASIK, 0 DCA SAVAC /SAVE CURRENT AC. TAD I CLASIK /GET INSTRUCTION DCA ROUTMP /SAVE THE CLASSIC ROUTINE. ISZ CLASIK /BUMP AFTER THE CALL. TAD OP2 AND (400 SZA CLA /IS THIS A CLASSIC SYSTEM? JMP .+3 /YES TAD SAVAC /NO, THEN RETURN TO PROGRAM. JMP I CLASIK ISZ CLASIK CDF 10 TAD SWR DCA I (SWR /MOVE POINTERS TO FIELD 1. TAD OP1 DCA I (OP1 TAD OP2 DCA I (OP2 TAD ROUTMP DCA I (ROUINS /SAVE ROUTINE IN FIELD 1. TAD SAVAC CIF 10 JMP I (ROUINS /GO EXECUTE ROUTINE. / ROUTMP, 0 SAVAC, 0 / /ROUTINE TO GET SWITCHES. / MYLAS, 0 CLASIC /CHECK IF CLASSIC. C8CKSW /GET SWITCHES 7604 /NOP IF ON APT JMP I MYLAS /EXIT / PCOUNT, 0 / PAGE / /SUBROUTINE TO WAIT FOR INTERRUPTS /IF INTERRUPT OCCURS, GO BACK +1 / IONWT, 0 CLA CLL TAD K7700 DCA COMP1 ION /TURN IT ON ISZ COMP1 JMP .-1 IOF /TURN IT OFF JMP I IONWT /NO INT OCCURRED INTADD, ISZ IONWT DSKSKP /DISK SKIP IOT SKP /ERROR JMP I IONWT /EXIT. CLA CMA TAD IONWT DCA IONWT /RESET RETURN ADDRESS. TAD OP2 AND K0400 /MASK CLASSIC. SZA CLA /ON CLASSIC? KSF /IF SO ALLOW KEY FLAG. JMP .+3 /NO KEY! KCC /WAS CLEAR FLAG. JMP IONWT+1 /RETURN AND WAIT. CLASIC /CHECK FOR CLASSIC. C8ERR /ROUTINE TO EXECUTE. ERHLT1, HLT /ERROR, ILLEGAL INTERRUPT JMP .-3 /NON-RECOVERABLE ERROR. / /ROUTINE TO COMPARE AC TO GDREG2 / COMP1, 0 DCA ACREG TAD ACREG /SAVE AC CIA TAD GDREG2 SZA CLA /SKIP IF O.K. ISZ COMP1 /ERROR, DON'T COMPARE TICK /GENERATE TIMING IF NEEDED. JMP I COMP1 / /ROUTINE TO COMPARE CRREG1 AND CRREG2 TO /GDREG1 AND GDREG2. / COMP2, 0 CLA CLL TAD GDREG1 AND K0017 CIA TAD CRREG1 SZA CLA JMP CRERR /NOT THE SAME TAD CRREG2 CIA TAD GDREG2 SZA CLA CRERR, ISZ COMP2 /ERROR, NOT THE SAME TICK /TIMING FOR APT IF NEEDED JMP I COMP2 / /SUBROUTINE TO READ STATUS REGISTER / RDST, 0 IOT5, DRST /READ STATUS IOT JMP .+5 /O.K. NO SKIP CLASIC /CHECK FOR CLASSIC. ERROR /ROUTINE TO EXECUTE. ERHLT5, HLT /SKIP TRAP JMP .-3 /NON-RECOVERABLE ERROR. DCA STREG /SAVE RESULTS TAD STREG JMP I RDST /EXIT / /SUBROUTINE TO LOAD CURRENT ADDRESS REGISTER / LDCA, 0 DCA ADREG /SAVE IN ADDRESS TAD ADREG IOT4, DLCA /LOAD CURRENT ADDRESS IOT JMP I LDCA /EXIT CLASIC /CHECK FOR CLASSIC. ERROR /ROUTINE TO EXECUTE ERHLT4, HLT /SKIP TRAP ERROR JMP .-3 /NON-RECOVERABLE ERROR. / / /SUBROUTINE TO LOAD DISK ADDRESS REGISTER / LDAD, 0 DCA DAREG /SAVE OUTBOUND DATA TAD DAREG IOT3, DLAG /LOAD DISK ADDRESS REGISTER JMP I LDAD /EXIT CLASIC /CHECK FOR CLASSIC ERROR /ROUTINE TO EXECUTE ERHLT3, HLT /SKIP TRAP ERROR JMP .-3 /NON-RECOVERABLE ERROR. / / /SUBROUTINE TO LOAD COMMAND REGISTER / LDCM, 0 DCA CMREG /SAVE OUTBOUND DATA TAD CMREG IOT6, DLDC /LOAD COMMAND REGISTER JMP I LDCM /EXIT CLASIC /CHECK FOR CLASSIC. ERROR /ROUTINE TO EXECUTE. ERHLT6, HLT /SKIP TRAP ERROR. JMP .-3 /NON-RECOVERABLE ERROR. / /SUBROUTINE TO ISSUE "DSKP" DISK SKIP IOT / SDKP, 0 IOT1, DSKP /DISK SKIP IOT SKP /DID NOT SKIP ISZ SDKP JMP I SDKP /EXIT / /SUBROUTINE TO ISSUE "DCLR" CLEAR IOT / CLDR, 0 IOT2, DCLR /DCLR "CLEAR IOT" JMP I CLDR /EXIT CLASIC /CHECK FOR CLASSIC. ERROR /ROUTINE TO EXECUTE. ERHLT2, HLT /SKIP TRAP ERROR JMP .-3 /NON-RECOVERABLE ERROR. / /SUBROUTINE TO ISSUE "DMAN" MAINTENANCE IOT / LDMN, 0 IOT7, DMAN /"DMAN" MAINTENANCE IOT JMP I LDMN /EXIT CLASIC /CHECK FOR CLASSIC. ERROR /ROUTINE TO EXECUTE. ERHLT7, HLT /SKIP TRAP ERROR. JMP .-3 /NON-RECOVERABLE ERROR. PAGE / /SUBROUTINE TO SHIFT, THEN READ DISK /ADDRESS INTO DATA BUFFER, 12 SHIFTS / RDAD, 0 ENMAN2 /ENTER MAINTENANCE MODE + DB4=1 TAD M5 DCA SBCNT1 /SETUP COUNTER TAD K1000 /ENABLE SHIFT CRC TAD K0200 /ENABLE SHIFT SURFACE AND SECTOR LDMAN /LOAD MAINTENANCE ISZ SBCNT1 /FOUR SHIFTS JMP .-2 /MORE TO GO CLA CLL TAD M7 DCA SBCNT1 TAD K1000 /SHIFT CRC LDMAN /LOAD MAINTENANCE IOT ISZ SBCNT1 JMP .-2 /SHIFT 12 BITS CLA CLL TAD K0020 LDMAN /READ DATA BUFFER DCA DAREG /SAVE RESULTS TAD DAREG JMP I RDAD /EXIT / /SUBROUTINE TO READ DATA BUFFER TO AC / RDBF, 0 CLA CLL CML RAR LDMAN /ENTER MAINTENANCE MODE TAD K0020 LDMAN /LOAD MAINTENANCE DCA DBREG TAD DBREG DCA DTREG TAD DTREG JMP I RDBF /EXIT / /SUBROUTINE TO SHIFT COMMAND REGISTER TO /DATA BUFFER THEN READ DATA BUFFER / RDCM, 0 ENMAN2 /ENTER MAINTENANCE MODE + DB4=1 TAD M12 DCA SBCNT1 /12 BIT SHIFT TAD K0400 /ENABLE BIT FOR SHIFT COMMAND LDMAN /LOAD AND GO ISZ SBCNT1 JMP .-2 /SHIFT 12 CLA CLL TAD K0020 /ENABLE READ BUFFER LDMAN /LOAD AND GO DCA CMREG /SAVE IT TAD CMREG JMP I RDCM /EXIT / /ROUTINE TO ENTER MAINTENANCE MODE / MAIN1, 0 CLA CLL CML RAR /ENABLE MAINTENANCE BIT LDMAN /ENTER MAINTENANCE MODE CLA CLL JMP I MAIN1 / / / / /SUBROUTINE TO SHIFT CRC REGISTER TO DATA /BUFFER THEN READ IT. / RDCR, 0 ENMAN2 /ENTER MAINTENANCE MODE + DB4=1 TAD M12 DCA SBCNT1 /12 SHIFTER TAD K1000 /ENABLE SHIFT CRC LDMAN /LOAD AND GO ISZ SBCNT1 JMP .-2 /12 BIT SHIFT CLA CLL TAD K0020 /ENABLE READ BUFFER LDMAN DCA CRREG2 /SAVE IT ENMAN2 /ENTER MAINTENANCE MODE + DB4=1 TAD M12 DCA SBCNT1 /12 BIT SHIFTER TAD K1000 /ENABLE SHIFT CRC LDMAN /LOAD AND GO ISZ SBCNT1 JMP .-2 /12 BIT SHIFT CLA CLL TAD K0020 /ENABLE READ BUFFER LDMAN AND K0017 DCA CRREG1 /SAVE OTHER HALF JMP I RDCR /EXIT / / /SUBROUTINE TO PRINT TWO OCTAL / TOCT, 0 DCA SBCNT1 /SAVE AC TAD SBCNT1 RAR RTR AND K0007 TAD K0260 TYPE /PRINT FIRST BYTE TAD SBCNT1 AND K0007 TAD K0260 TYPE /PRINT SECOND BIT JMP I TOCT /EXIT / / / /ROUTINE TO DO CRLF / UPONE, 0 CLA CLL TAD K0215 TYPE TAD K0212 TYPE TYPE /TYPE ONE NULL JMP I UPONE PAGE / /ROUTINE TO PRINT FOUR OCTAL / FROCT, 0 RTL RTL DCA I (UPONE TAD K7774 DCA I (TOCT TAD I (UPONE AND K0007 TAD K0260 TYPE TAD I (UPONE RTL RAL DCA I (UPONE ISZ I (TOCT JMP .-11 TAD K0240 TYPE JMP I FROCT / /SUBROUTINE TO PRINT TEXT / PRN, 0 CLA CLL TAD I PRN /GET POINTER ISZ PRN DCA FROCT TAD I FROCT AND K7700 SNA JMP EXIT SMA CML IAC RTR RTR RTR TYPE TAD I FROCT AND K0077 SNA JMP EXIT TAD K3740 SMA TAD K4100 TAD K0240 TYPE ISZ FROCT CLA CLL JMP PRN+5 EXIT, CLA CLL JMP I PRN / K0240, 0240 K3740, 3740 / /ROUTINE TO TYPE / PRINT, 0 CLASIC /CHECK FOR CLASSIC C8TYPE /ROUTINE TO EXECUTE. SKP JMP I PRINT /INHIBIT TYPE. TLS TSF JMP .-1 TCF CLA JMP I PRINT / /ROUTINE TO GET ALL REGISTERS AFTER "ERHLT9" / DUMP, 0 LAS AND K0400 /MASK SWITCH 3 SNA CLA /WAS IT GET ALL JMP I DUMP /NO RDSTAT /GET STATUS RDBUF /READ BUFFER CLA CLL TAD M12 DCA PRINT /12 BIT COUNTER TAD K0200 /ENABLE SHIFT SECTOR AND SURFACE LDMAN /LOAD MAINTENANCE ISZ PRINT /12 BIT SHIFT JMP .-2 CLA CLL TAD K0020 /ENABLE READ BUFFER LDMAN /LOAD MAINTENANCE DCA DAREG /SAVE SURFACE AND SECTOR RDCRC /READ CRC RDCMD /READ COMMAND CRLF TAD K7600 ISZ DUMP JMP I DUMP /REPORT / PAGE / /SUBROUTINE FOR "ERRORS", SCOPE LOOPS, AND /ERROR TYPEOUTS. / ERRO, 0 CLA CLL AERRO /REPORT ERROR TO APT IF NEED BE. TAD I ERRO /GET SCOPE LOOP POINTER DCA SERRO /SAVE FOR RETURN LAS /GET SWR0 SMA CLA /IS IT SCOPE LOOP JMP .+10 LAS /GET SWITCH 2 RTL SPA CLA /INHIBIT ERROR BELL JMP I SERRO /YES TAD K0207 TYPE JMP I SERRO /NO ISZ ERRO CRLF CRLF TAD I ERRO /GET TEXT POINTER AND K0017 /MASK 8-11 TAD HEDTAD /MAKE ERROR HEADER TAD DCA .+1 HLT /MODIFIED HEADER TAD DCA .+2 PRNTER /MODIFIED HEADER POINTER HLT CRLF PRNTER /PRINT PC: TEXPC CLA CLL CMA TAD ERRO /GET PC POINTER OCTEL /PRINT PC STORED TAD I ERRO /GET TEXT POINTER CLL RAL SNL JMP NTDG /NOT GD: REGISTER DCA ERRO PRNTER /PRINT GD: TEXGD TAD ERRO SMA CLA /WAS IT A 6 BIT OCTAL BYTE JMP .+3 /NO TAD GDREG1 /GET DATA TWOCT /PRINT TWO OCTAL TAD GDREG2 OCTEL /PRINT FOUR OCTAL SKP CLA NTDG, DCA ERRO TAD ERRO /GET TEXT POINTER CLL RAL SNL JMP NTCRC DCA ERRO PRNTER /PRINT CR: TEXCR TAD CRREG1 TWOCT /PRINT TAD CRREG2 OCTEL /PRINT FOUR OCTAL SKP CLA NTCRC, DCA ERRO TAD XTEXT DCA PCNTR2 TAD XREG DCA AUTO10 TAD K7771 DCA PCNTR1 /COUNTER FOR # OF HEADS STRAUT, TAD ERRO /GET TEXT POINTER SMA JMP NOTEX /NOT THIS ONE CLL RAL DCA ERRO TAD PCNTR2 /GET TEXT MESSAGE POINTER ISZ PCNTR2 ISZ PCNTR2 DCA .+2 /STORE FOR PRNTER PRNTER /PRINT XX: HLT /MODIFIED TEXT POINTER TAD I AUTO10 OCTEL /PRINT FOUR OCTAL BAKPNT, ISZ PCNTR1 JMP STRAUT /CHECK FOR NEXT CC: TAD SAVEND /GET CONSTANT SAVED DCA I K7777 /REPLACE LAST LOCATION CLASIC /CHECK FOR CLASSIC. C8ERR /ROUTINE TO EXECUTE!!!! ERHLT9, HLT /ALL RECOVERABLE ERROR HALTS JMS I XDUMP /CHECK FOR GET ALL REGISTERS JMP I SERRO /TRY SAME TEST AGAIN JMP NTDG /GET ALL REGISTERS NOTEX, CLL RAL DCA ERRO ISZ PCNTR2 ISZ PCNTR2 ISZ AUTO10 JMP BAKPNT / SERRO, 0 XDUMP, DUMP XTEXT, TEXST XREG, CRREG2 PCNTR1, 0 PCNTR2, 0 HEDTAD, TAD HEDLST HEDLST, ERTX1 ERTX2 ERTX3 ERTX4 ERTX5 ERTX6 ERTX7 ERTX8 ERTX9 / / /ROUTINE TO ENTER MAINTENANCE MODE AND /SET DB4=1 TO ENABLE SHIFT TO LOWER SILO / MAIN2, 0 CLA CLL CML RAR /ENABLE SET MAINTENANCE MODE LDMAN /LOAD MAINTENANCE RAR /ENABLE SET DB4=1 LDMAN /LOAD MAINTENANCE CLA CLL JMP I MAIN2 PAGE / /SUBROUTINE FOR "NO ERRORS" AND SCOPE /LOOPS. UPDATE UP COUNTER "REG1" AND /DOWN COUNT "REG2" ON EVERY ENTRY. / NERRO, 0 CLASIC /CHECK FOR CLASSIC. C8CKPA /ROUTINE TO EXECUTE. NOP LAS /GET SWITCH 4 AND K0200 /MASK SNA CLA /WAS IT SET JMP STPHLT+1 /NO DON'T HALT TAD SAVEND /GET BINARY END DCA I K7777 /REPLACE IT CLASIC /CHECK FOR CLASSIC C8INQU /WAIT FOR OPERATOR. STPHLT, HLT /STOP PROGRAM HALT ISZ NERRO /UPDATE PC STORE TAD I NERRO /GET SCOPE LOOP POINTER DCA SNERRO /STORE FOR RETURN LAS /GET SWITCH 0 SPA CLA /ENTER SCOPE LOOP JMP I SNERRO /YES ISZ REG1 /UPDATE UPCOUNTER SKP CLA JMP NEXTST /END OF PARTICULAR TEST TAD REG1 CLL CMA DCA REG2 /SETUP DOWN COUNTER NEXT, TICK /REPLACED WITH TIMING OF ON APT JMP I SNERRO /BACK TO SAME TEST NEXTST, ISZ NERRO /UPDATE PC STORE ISZ NERRO /UPDATE PC STORE JMP I NERRO /TO NEXT SEQUENTIAL TEST / TOTST, 0 SNERRO, 0 / /SUBROUTINE TO SET UP FIELD 0 / SETUP, 0 TAD I THSFLD /GET HOME DF DCA BAKFLD TAD KRMF /GET RMF FOR INT. RETURN CDF 0 /SWITCH TO FIELD 0 DCA I K0001 TAD K5403 /JMP I 3 FOR LOC. 2 DCA I K0002 TAD INTRQ /GET ADDRESS RETURN DCA I K0003 BAKFLD, HLT /HOME DF JMP I SETUP / K5403, 5403 / /ROUTINE TO LOAD UPPER BUFFER / UPPER, 0 DCA TOTST /SAVE DATA CLA CLL IAC DCA SNERRO /SETUP SHIFTER MASKER TAD M12 DCA NERRO /SETUP COUNTER ENMAN1 /ENTER MAINTENANCE MODE UPPR1, TAD TOTST /GET DATA AND SNERRO /MASK SZA CLA /A ONE OR ZERO???? TAD K0002 /A ONE!!!! TAD K0100 /ENABLE SHIFT LDMAN /LOAD MAINTENANCE CLA CLL TAD SNERRO CLL RAL DCA SNERRO ISZ NERRO /COUNT BITS JMP UPPR1 /MORE TO GO JMP I UPPER /UPPER BUFFER LOADED / /ROUTINE TO CHANGE PROGRAM DEVICE CODES / CHANG, CLASIC /CHECK FOR CLASSIC. C8SWIT /ROUTINE TO EXECUTE. NOP LAS AND A0770 DCA TOTST /SAVE DESIRED TAD CHNPOT DCA UPPER TAD CCNTR1 DCA SNERRO /A FEW POINTERS CHANGR, TAD I UPPER /GET ADDRESS POINTER DCA SETUP /SAVE IT TAD I SETUP /GET OLD IOT CODE AND A7007 TAD TOTST /ADD IN DESIRED DCA I SETUP /CHANGE CODE ISZ UPPER /UPDATE POINTER ISZ SNERRO /UPDATE CHANGE COUNTER JMP CHANGR CLASIC /CHECK FOR CLASSIC. C8ERR /ROUTINE TO EXECUTE. CHNHLT, HLT /DEVICE CODES CHANGED. PRESS JMP I XBGN /CONTINUE PR IF ON CONSOLE /PACKAGE HIT CONTROL E. / XBGN, BGN / A7007, 7007 A0770, 0770 CCNTR1, 7771 CHNPOT, CHNPOT+1 IOT1 IOT2 IOT3 IOT4 IOT5 IOT6 IOT7 / PAGE /THIS ROUTINE TEST FOR BEING ON THE APT OR ACT SYSTEMS. /IF ON APT CONSOLE PACKAGE AND SWITCH REGISTER FUNCTIONS /ARE NOP'S. / / APT8, 0 TAD OP2 /HARDWARE CONFIGURATION AND K4000 SNA CLA /SKIP IF ON ACT OR APT JMP I APT8 /RETURN TO MAIN PROGRAM TAD OP2 AND K7377 /MAKE SURE CONSOLE DISABLED DCA OP2 TAD K7000 DCA I XMYLAS /NOP SWITCH REGISTER FUNCTIONS TAD APT8 TAD K0004 DCA APT8 TAD OP1 /GET MEMORY SIZE RTR /SET UP MEMORY SIZE JMP I APT8 /NOW ON APT. RETURN IS PLUS 4. / /THIS ROUTINE WILL GENERATE THE RIMING REQUIRED BY /APT OR ACT. / KTICK, 0 TAD OP2 AND K4000 /SEE IF ON APT SNA CLA JMP I KTICK /NOT ON APT ISZ CLKCNT /INCREMENT COUNTER JMP I KTICK /NO IOF /DISABLE INTERRUPTS RDF /GET PRESENT DATA FIELD TAD KCDF DCA .+1 /ESTABLISHES CURRENT DATA FIELD HLT /REPLACED WITH CURRENT DATA FIELD CIF 70 /FIELD 7, LOCATION OF UV PROM JMS I (6500 TAD (-2777 /ABOUT 1.5 SEC ON MOST TESTS DCA CLKCNT JMP I KTICK / /THIS ROUTINE WILL NOTIFY APT OF AN ERROR AND SEND PC TO /APT SYSTEM / WAERRO, 0 TAD OP2 AND K4000 /SEE IF ON APT SNA CLA JMP I WAERRO /NO IOF /DISABLE INTERRUPTS CLA TAD I (ERRO /GET PC DCA SAVPC RDF /GET CURRENT DATA FIELD TAD I (KCDF DCA .+2 TAD SAVPC HLT /REPLACED WITH CURRENT DATA FIELD CIF 70 /FIELD OF UVPROM JMP I (6520 /NOTIFY APT OF ERROR CLA JMP I WAERRO / XMYLAS, MYLAS+3 K7377, 7377 SAVPC, 0 CLKCNT, -2777 PAGE TEXPC, TEXT "PC:" TEXGD, TEXT "GD:" TEXCR, TEXT "CR:" TEXST, TEXT "ST:" TEXDB, TEXT "DB:" TEXCM, TEXT "CM:" TEXDA, TEXT "DA:" TEXAD, TEXT "AD:" TEXDT, TEXT "DT:" TEXAC, TEXT "AC:" ERTX1, TEXT "STATUS REGISTER ERROR" ERTX2, TEXT "COMMAND REGISTER ERROR" ERTX3, TEXT "DISK ADDRESS REGISTER ERROR" ERTX4, TEXT "DATA BREAK ERROR" ERTX5, TEXT "CRC REGISTER ERROR" ERTX6, TEXT "DATA REGISTER ERROR" ERTX7, TEXT "DISK SKIP ERROR" ERTX8, TEXT "DISK INTERRUPT ERROR" ERTX9, TEXT "AC REGISTER ERROR" TEXEND, TEXT "RK8E DISKLESS PASS COMPLETE" / $$$ / / Add cruft to match the available binary. / Delete this cruft once everything else matches up. / These are artifacts of the available binary, which / was created from a .SV image. / Be careful not to override a location actually loaded / by the program. /Assembler bugs: / BUGBUG: Seems to be a problem with doing FIELD before PAGE. / BUGBUG: Expressions of the form "X +1" don't work. / BUGBUG: Expressions of the form "X -1" OR -1 and X, instead of decrementing. / PAGE FIELD 1 *4 1571 1344 *7 3122 *23 4345 *43 6234 *120 1142 0300 1053 2026 *150 1642 0067 *153 6736 *170 1641 0071 0271 7266 1707 1251 0 2305 *1360 1367 *1363 4513 0705 PAGE FIELD 0 *0011 2222 0000 1004 7773 1723 1011 *1375 0067 5001 5461 *1774 7001 7110 5765 0037 *2163 0105 0407 0420 7754 1505 1517 6200 0000 0450 7773 0411 2324 2200 *2361 7235 7241 2423 7666 1234 4000 7235 7241 2423 4000 7235 7241 2423 7241 2423 *2551 5237 7774 0411 2230 0204 0407 6067 7757 0410 2213 0403 0407 6067 7767 0410 2213 0307 0407 6067 7755 0410 1315 0302 *3122 0005 0105 1177 3414 4562 0006 7006 7620 5222 4760 4562 0006 7006 7112 4563 0006 5222 1034 4762 3410 5271 4535 7701 2207 0000 5534 3665 3665 3647 0034 3262 3242 3331 3200 3311 1224 3506 2200 5261 5361 5341 5301 5321 2273 7761 0015 *3345 0005 0351 1023 5731 4177 3126 5260 4631 1224 5340 5300 5320 5360 5261 5341 5723 5301 5321 5361 3035 3000 2752 2600 0276 5163 2611 7752 *4113 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 6063 6023 *4542 7773 2125 1124 0000 2326 2345 7776 1005 1420 0000 2326 3457 7770 2213 1406 1524 2326 3457 7767 7252 7300 7305 7440 5316 7666 1234 4000 7235 7241 2423 *4755 2226 1501 4207 7757 2401 2313 0000 1501 4207 7771 1116 1124 0000 0315 6017 7777 1116 1124 *5175 7235 7241 2423 *5342 0216 4056 7775 2424 3114 2520 0216 4056 7776 2411 1505 2201 0216 4056 7774 0420 7005 0000 0216 4056 7774 0403 6062 0000 0216 4056 7776 0403 6070 0100 *5537 0103 0407 1307 7771 2431 2023 0524 0407 2746 7766 0465 0502 0400 0407 3516 7765 0465 0601 6060 0407 3516 7773 7252 7300 7305 7440 5316 7666 1234 4000 7235 7241 2423 *5772 0407 *6153 2425 0523 0000 2705 0416 0523 0000 2410 2522 2300 0622 1100 4302 0104 4015 1716 1124 1722 0000 6202 7770 *6341 4306 6213 5740 5307 5306 0375 7650 6501 4100 0060 7760 0072 7766 7271 5557 6446 6437 6451 6443 6472 0010 0070 7707 7777 7770 7520 6002 7440 6474 0040 7750 *6526 4015 0515 1722 3140 1411 1511 2440 2710 1114 0540 2225 1616 1116 0740 0201 2403 1000 0000 0003 0004 0000 0002 0005 0000 0003 0006 0001 0004 0006 4523 2520 0522 2305 0411 1607 0000 4503 0116 4724 4022 *6767 2515 0205 2200 4311 1414 0507 0114 4052 4017 *7144 6301 4055 4003 0314 4026 6106 0000 0504 1124 0000 0217 1724 0000 0617 2224 0000 0664 0000 0000 0211 2415 0120 2322 0303 1715 0203 1715 2000 *7267 2405 0000 0303 1400 0000 1005 1420 0000 1501 0322 0514 1411 1613 0000 0244 0312 0317 0302 0215 0212 0256 0000 0256 0322 0240 0306 0317 0324 0320 0215 0212 0252 0323 0331 0323 0272 0303 0303 0302 0324 0303 0310 0256 0324 0315 0257 0304 0244 0215 0212 0244 0305 0316 0304 0215 0212 0032 0000 0303 0224 0310 2415 1420 2400 2426 *7371 2424 3100 /These are different because the .SV wants the console package. *21 0000 0400 $$$