ASMB,A,B,L,C HED 7900/7901 CARTRIDGE DISC DIAGNOSTIC FOR 2100 SERIES * 7900/7901 CARTRIDGE DISC DIAGNOSTIC FOR 2100 SERIES COMPUTERS * * CONFIGURATION ADDRESS = 100B * * STARTING ADDRESS = 2000B * * SWITCH REGISTER DURING CONFIGURATION * BITS 0-5 SELECT CODE FOR THE I/O CHANNEL CONTAINING THE * DATA INTERFACE FOR THE DISC * THE COMMAND CHANNEL INTERFACE BOARD IS THE NEXT * HIGHER SELECT CODE * BITS 6-13 SPARES * BIT 14 SET TO ZERO FOR DMA CHANNEL 6 * * SWITCH REGISTER DURING EXECUTION * * BIT 0 NOT USED * BIT 1 SKIP TO END OF SECTION ONCE WHEN SET * BIT 2 IF SET TO ONE,ALTER CYLINDER TABLE AND/OR * PATTERN TABLE AND/OR SELECT HEADS * AND/OR CHANGE UNIT REMOVAL THRESHOLD * AND/OR ALTER UNIT TABLE * BIT 3 IF SET TO ONE,EXECUTE OPERATOR DESIGN PROGRAM * BIT 4 IF SET TO ONE, EXECUTE WRITE * ADDRESS PART OF S1 * BIT 5 IF SET TO ONE,SHORTEN TEST IN S2,S3,S4 AND S5 * BIT 6 IF SET TO ONE,RESTRICT CYLINDER SELECTION * BIT 7 IF SET TO ONE,REPEAT LAST SECTION * BIT 8 SUPPRESS SPACES,PRINT H65 INDEPENDENT OF BIT 10 * IF ERROR OCCURS. * BIT 9 IF SET TO ONE,HALT AFTER EACH SECTION OF THE * PROGRAM * BIT 10 IF SET TO ONE,ALL NON-ERROR MESSAGES FOR THE * TELEPRINTER WILL BE SUPPRESSED,EXCEPT CURRENT * OPERATION MESSAGES AND H51 * BIT 11 IF SET TO ONE,ALL MESSAGES FOR THE TELEPRINTER * WILL BE SUPPRESSED * BIT 12 IF SET TO ONE, PRINT TIMING MESSAGES * IN S2 AND S4 * BIT 13 IF SET TO ONE,LOOP ON LAST STEP * BIT 14 IF SET TO ZERO,PROGRAM HALTS AFTER EACH ERROR * BIT 15 IF SET TO ONE,PROGRAM WILL COME TO AN ORDERLY * HALT AT THE END OF CURRENT STEP * ORG 100B JMP CNFIG,I CONFIGURE PROGRAM ORG 105B TO DEFINE ENDING ADDRESS FOR SIO DUMP DEF PEND ENDING LOCATION OF PROGRAM ORG 126B OCT 151302 DSN=151302,REV=1805 (1-10-78) ORG 130B * * CURRENT OPERATION (LOOP ADDRESS) * COPR NOP STA STEPN CAPTURE RETURN JMP COPR,I ADDRESS * A EQU 0 A REGISTER ADDRESS B EQU 1 B REGISTER ADDRESS CC EQU 0 THIS SYMBOL IS USED AT ALL PLACES * WHERE THE COMMAND CHANNEL NUMBER * IS STORED CH EQU 0 THIS SYMBOL IS USED AT ALL * PLACES WHERE BOTH CHANNELS ARE * STORED IN BASIC I/O DC EQU 0 THIS SYMBOL IS USED AT ALL * PLACES WHERE THE DATA CHANNEL * NUMBER IS STORED DMAC EQU 2 DMA CONTROL CHANNEL DMAD EQU DMAC+4 DMA INTERRUPT CHANNEL SIOLO EQU 102B ENTRY ADDRESS FOR SIO LIST OUTPUT SIOFO EQU 103B ENTRY ADDRESS FOR FAST OUTPUT * SZREF EQU 0 APPEARS WHERE A REFERENCE DEPENDS * ON THE SECTOR SIZE. * MSIZE EQU 117B MEMORY SIZE TMR EQU 121B LINK TO ONE MSEC TIME DELAY I2ASC EQU 123B LINK TO INTEGER TO ASCII CONV. O2ASC EQU 124B LINK TO OCTAL TO ASCII CONV. * ATTN BSS 1 BILD BSS 1 BPTRA BSS 1 BUFAD BSS 1 PRIMARY BUFFER ADDRESS BUFAE BSS 1 SECONDARY BUFFER ADDRESS CC7 OCT 0 CCHAR BSS 1 CCNT BSS 1 CH13 NOP CLOAD BSS 1 COPRN NOP CPNT BSS 1 CPONT BSS 1 CSAVE BSS 1 CSTOR BSS 1 CYL BSS 1 CYLINDER NUMBER CYLX BSS 1 DC14 OCT 0 DFLT BSS 1 DMRF BSS 1 DMA ERROR INDICATOR ELOC BSS 1 LAST ERROR NUMBER ERR BSS 1 NUMBER OF ERRORS FIRST BSS 1 USED IN S4 FL6 BSS 1 FSAVE BSS 1 GLOB1 BSS 1 GLOB2 BSS 1 GLOB3 BSS 1 GLOB4 BSS 1 GLOB5 BSS 1 GLOB6 BSS 1 HDON OCT 0 HEAD BSS 1 BITS 6 - 0 HEAD NUMBER HFLAG OCT 0 IFRST BSS 1 ISR BSS 1 LABEL BSS 1 LABLC OCT 0 LBLP1 BSS 1 LBLP2 BSS 1 LCNT BSS 1 LOCAL BSS 1 LWAM BSS 1 LAST WORD OF AVAILABLE MEMORY MAX DEC 20 NO. OF ERRORS FOR UNIT REMOVAL MDFLG BSS 1 SET TO 14B FOR MULTI-DRIVE NEWBD OCT 0 INDICATE IF TESTING NEW BOARD NI BSS 1 NUMP DEC 1 OPCNT BSS 1 OPSRT BSS 1 PASS BSS 1 PASS NUMBER STORED HERE PCNT BSS 1 PCNTA BSS 1 PFLAG BSS 1 PLOAD BSS 1 PSAVE NOP PSTOR BSS 1 S400 DEF S40 S40 BSS 4 S4BUG BSS 1 S6CNT BSS 1 SAV6 BSS 1 SECTN BSS 1 CURRENT SECTION NUMBER SECTR BSS 1 SECTOR WHERE CURRENT OPERATION * WILL START SFLAG BSS 1 SHTAS BSS 1 STAUS BSS 1 DEVICE STATUS STORED HERE STEPN OCT 0 STRF BSS 1 ERROR POINTER OR ZERO IF NO SVCTA BSS 1 USED TO TIME SEEKS IN S2 AND S4 TEMP1 BSS 1 TEMP2 BSS 1 TEMP3 BSS 1 UNITS DEF UNITA UNITA OCT 0 BSS 3 UNITC OCT 1 UNIT OCT 0 VAL1 BSS 1 VAL2 BSS 1 VALUE BSS 1 WCNT BSS 1 POSITIVE WORD COUNT FOR * CURRENT OPERATION WD0 DEF * WD1 BSS 1 WD2 BSS 1 WD3 BSS 1 WD4 BSS 2 CVT3 EQU WD1 CVT1 EQU WD2 CVT2 EQU WD3 CVT DEF WD1 SKP D0 DEC 0 B1 DEC 1 D1 EQU B1 D2 DEC 2 CRLFL EQU D2 BIT1 EQU D2 D3 DEC 3 B3 EQU D3 D4 DEC 4 BIT2 EQU D4 B4 EQU D4 D5 DEC 5 D6 DEC 6 D7 DEC 7 B7 EQU D7 D8 DEC 8 BIT3 EQU D8 B10 EQU D8 D9 DEC 9 B11 EQU D9 D10 DEC 10 D11 DEC 11 D12 DEC 12 B14 EQU D12 D13 DEC 13 B15 EQU D13 D14 DEC 14 B16 EQU D14 D15 DEC 15 B17 EQU D15 BIT4 DEC 16 B20 EQU BIT4 D16 EQU BIT4 D17 DEC 17 B21 EQU D17 D18 DEC 18 B22 EQU D18 D19 DEC 19 B23 EQU D19 D20 DEC 20 B24 EQU D20 B25 DEC 21 D21 EQU B25 B26 DEC 22 D22 EQU B26 D23 DEC 23 B27 EQU D23 B30 DEC 24 D24 EQU B30 D25 DEC 25 B31 EQU D25 B32 DEC 26 D26 EQU B32 D27 DEC 27 B33 EQU D27 D28 DEC 28 B34 EQU D28 D29 DEC 29 B35 EQU D29 D30 DEC 30 B36 EQU D30 B37 DEC 31 D31 EQU B37 B40 DEC 32 BIT5 EQU B40 D32 EQU B40 B41 DEC 33 D33 EQU B41 B42 DEC 34 D34 EQU B42 B43 DEC 35 D35 EQU B43 B44 DEC 36 D36 EQU B44 B45 DEC 37 D37 EQU B45 B46 DEC 38 D38 EQU B46 B47 DEC 39 B51 DEC 41 B52 DEC 42 B53 DEC 43 B54 DEC 44 B55 DEC 45 D45 EQU B55 B56 DEC 46 D46 EQU B56 B57 DEC 47 D47 EQU B57 B60 DEC 48 D48 EQU B60 B61 DEC 49 D49 EQU B61 B62 DEC 50 D50 EQU B62 D51 DEC 51 B64 DEC 52 D52 EQU B64 B65 DEC 53 D53 EQU B65 B66 DEC 54 D54 EQU B66 B67 DEC 55 D55 EQU B67 B70 DEC 56 D56 EQU B70 B71 DEC 57 D57 EQU B71 B100 DEC 64 BIT6 EQU B100 B103 DEC 67 B104 DEC 68 B105 OCT 105 D72 DEC 72 D95 DEC 95 B142 OCT 142 D106 DEC 106 BIT7 OCT 200 BIT8 OCT 400 B401 OCT 401 BIT9 OCT 1000 BIT10 OCT 2000 B2011 OCT 2011 A2400 OCT 2400 BIT11 OCT 4000 A4400 OCT 4400 BIT12 OCT 10000 BIT13 OCT 20000 C0001 OCT 20001 C1440 OCT 21440 C7461 OCT 27461 BIT14 OCT 40000 E2001 OCT 42001 BIT15 OCT 100000 B7777 OCT 17777 BB OCT 20040 B2060 OCT 20060 CRLF OCT 6412 D7777 OCT 37777 H7777 OCT 77777 HA OCT 40400 HB OCT 1400 HC EQU BIT8 JMPI OCT 126000 JSB1 JSB R1,I MEM OCT 70000 NN OCT 47000 P7400 OCT 177400 P7700 OCT 177700 THLT2 OCT 106002 HLTC OCT 102010 YY OCT 13400 B77 OCT 77 B177 OCT 177 B377 OCT 377 B1777 OCT 1777 B3777 OCT 3777 D128 EQU BIT7 D129 DEC 129 D202 DEC 202 D203 DEC 203 D256 EQU BIT8 D384 DEC 384 D512 EQU BIT9 B6000 OCT 6000 D1024 EQU BIT10 PAGE8 OCT 16000 MM1 DEC -1 MM2 DEC -2 MM3 DEC -3 MM4 DEC -4 MM5 OCT -5 MM6 DEC -6 MM7 DEC -7 MM8 DEC -8 MM10 DEC -10 MM13 DEC -13 MM16 DEC -16 MM31 DEC -31 MM48 OCT -60 MM56 OCT -70 MM58 OCT -72 MM64 EQU P7700 MM105 DEC -105 M124 DEC -124 M175 DEC -175 M256 EQU P7400 MM512 DEC -512 MM650 DEC -650 M1024 DEC -1024 M3000 DEC -3000 M7936 DEC -7936 * * ASCD0 ASC 1,.0 ASCZZ ASC 1,00 UPD ASC 1,U/ LRD ASC 1,L/ BPTR DEF BUFB WRITE BUFFER BPTR1 DEF BUFB+128 BPTS DEF BUFB+1024 READ BUFFER BPTO DEF BUFB+2048 DMACW ABS 120000B+DC SKP * * * BASE PAGE LINKS AND POINTERS * * .E6 DEF E6 ADDOI DEF ADDO ADDRS DEF INTPT+1 CNFIG DEF INIT CRLFI DEF CRLF DDD DEF D0 EFER DEF FER EFERC DEF FERC ELER DEF LER ERHTI DEF ERHLT FCYKI DEF FCYCK FTR DEF FTRBN GETNI DEF GETN JE6 JMP .E6,I LONG DEF JP65C OPDNI DEF OPDSN P001A DEF J001A P002A DEF J002A P003A DEF J003A P004A DEF J004A P005A DEF J005A P013A DEF JP13A P013B DEF JP13B P023A DEF JP23A P024A DEF JP24A P027A DEF JP27A P033A DEF JP33A P037A DEF JP37A P037B DEF JP37B P040A DEF JP40A P040B DEF JP40B P041A DEF JP41A P042A DEF JP42A P047A DEF JP47A P047B DEF JP47B P047C DEF JP47C P050A DEF JP50A P050B DEF JP50B P051A DEF JP51A P051B DEF JP51B P051C DEF JP51C P051D DEF JP51D P052A DEF JP52A P052B DEF JP52B P052C DEF JP52C P052D DEF JP52D P052E DEF JP52E P052F DEF JP52F P053A DEF JP53A P053B DEF JP53B P054A DEF JP54A P054B DEF JP54B P056A DEF JP56A P057A DEF JP57A P064A DEF JP64A P064B DEF JP64B P065A DEF JP65A P065B DEF JP65B P065E DEF JP65E P070A DEF JP70A PO72A DEF JP72A PATR DEF PATTR PATTI DEF GLOB4 USED IN PCHK PCHKI DEF PCHK PCOPI DEF PCOPR PFMI DEF FMI PPT1 JSB TV1,I PPT2 JSB TV2,I PPT4 JSB TV4,I PPT5 JSB TV5,I PPT6 JSB TV6,I PPT7 JMP OPDNI,I PPT8 JSB TV8,I PPT9 JSB TV9,I PPT10 JSB TV10,I PPT13 JSB TV13,I PPT14 JMP TV14,I PPT15 JSB TV15,I R1 DEF RETRN RNCHI DEF RNCH RNSCI DEF RNSC SHORT DEF JP65D SKIPI DEF SKIP ST32I DEF STP32 ST35I DEF STP35 THRUI DEF THRU TRT DEF TRTBP TV1 DEF TVP1 TV2 DEF TVP2 TV4 DEF TVP4 TV5 DEF TVP5 TV6 DEF TVP6 TV8 DEF TVP8 TV9 DEF TVP9 TV10 DEF TVP10 TV13 DEF TVP13 TV14 DEF TVP14 TV15 DEF TVP15 VAL DEF VALUE WADI DEF WADR WADRI DEF WADRA * * SECT DEF *,I * DEF S1 * DEF S2 * DEF S3 * DEF S4 * DEF S5 * * * * THE FOLLOWING WORDS AND EQUATES DETERMINE THOSE * STATUSES, COMMANDS, SIZES, ETC. THAT MIGHT * VARY BECAUSE OF DESIGN CHANGES * * CYCHK OCT 060000 CYCLIC CHECK COMMAND CYPP EQU D203 NUMBER OF CYLINDERS PER PACK DFTB EQU BIT8 DEFECTIVE TRACK BIT FOR ADDRESSES LCYL EQU 202 LAST CYLINDER PALT OCT 130000 ALTERNATE POSITION COMMAND POSIT OCT 030000 POSITION COMMAND READC EQU BIT13 READ COMMAND RFINE OCT 050000 SCPT EQU B30 NUMBER OF SECTORS PER TRACK WPCYL DEC 6144 WORDS PER CYLINDER (=TRPC*SCPT*WORDS PER * SECTOR (128 FOR HP 7900)) STATS EQU D0 STATUS COMMAND TRPC EQU D2 NUMBER OF TRACKS PER CYLINDER WRILB EQU BIT9 WRITE LOCKOUT BIT FOR ADDRESSES WRITA OCT 110000 WRITE ADDRESS COMMAND WRITC EQU BIT12 WRITE COMMAND * * BIT0 ANY ERROR BIT * BIT1 DATA ERROR BIT PBBIT EQU BIT2 DRIVE BUSY BIT FLBIT EQU BIT3 FLAGGED CYLINDER BIT * BIT4 ADDRESS ERROR BIT * BIT5 END OF CYLINDER BIT NRBIT EQU BIT6 NOT READY BIT * BIT7 NOT USED * BIT8 SEEK CHECK BIT * BIT9 ENABLE INITIALIZATION BIT * BIT10 SURFACE PROTECT BIT * BIT11 DRIVE UNSAFE BIT * BIT12 NOT USED * BIT13 OVERRUN ERROR BIT * BIT14 FIRST SEEK BIT * BIT15 NOT USED * * SCST EQU D8 SECTOR WHERE SECOND THIRD STARTS SCLT EQU D16 SECTOR WHERE LAST THIRD STARTS WCFT EQU BIT10+SZREF WORD COUNT FOR FIRST THIRD WCLT EQU BIT10+SZREF WORD COUNT FOR LAST THIRD * NFFB OCT 177777 HED RAND * * * * RANDOM NUMBER GENERATOR * * THIS ROUTINE GENERATES BIT PATTERNS FOR * THE DISK DIAGNOSTIC. NO CLAIM IS MADE FOR * STATISTICAL RANDOMNESS. * * EXITS WITH PATTERN IN A, * B UNCHANGED, * * * RAND NOP LDA BASE LOAD BASE ADA PRIME SUBTRACT THE PRIME SSA SKIP IF STILL POSITIVE LDA BASE OOPS, BASE NOT BIG ENOUGH CLE,ELA DOUBLE BASE OR REMAINDER STA BASE FOR NEXT TRY JMP RAND,I * PRIME DEC -31069 * THIS PRIME NUMBER LOOPS EVERY * 31068 TIMES IN ITS RECIPROCAL * EXPANSION BASE ABS 034521B HED SEEK,SEES,SEEH,STAT,COMMD,DADO,WAITD * * * ROUTINES TO DO COMMONLY REQUIRED OPERATIONS. * * SEEK NOP LDB B44 CURRENT OPERATION CODE LDA CYL PUT CYLINDER NUMBER OUT BEFORE JSB DADO GIVING THE COMMAND LDA POSIT LOAD COMMAND FOR POSITION SEEK1 JSB COMMD ISSUE COMMAND JSB WAITD LDA HEAD IOR HDON SELECT SURFACE ALF,ALF HEAD NUMBER TO LEFT HALF IOR SECTR PLUG IN SECTOR NUMBER JSB DADO OUTPUT HEAD-SECTOR JSB WAITD JMP SEEK,I * * SEES NOP SEEH EQU SEES LDB B15 CURRENT OPERATION CODE LDA CYL LOAD CYLINDER NUMBER JSB DADO PUT OUT ON DATA CHANNEL LDA SEES STA SEEK LDA PALT LOAD ALTERNATE POSITION COMMAND JMP SEEK1 * * STAT NOP STATUS CHECK ROUTINE LDA STATS LOAD THE DCU STATUS COMMAND DC23 STC DC,C SET UP DATA CHANNEL FOR INPUT LDB COPRN DON'T CHANGE CURRENT OPERATION JSB COMMD OUTPUT COMMAND NOP ALLOW SOME TIME CLA,INA DC15 SFS DC BACK YET? JSB TMR,I NO- DELAY 1 MS DC12 SFC DC STATUS SHOULD BE BACK JMP STABK AFTER 1 MS JSB PCOP PRINT CURRENT OPERATION MESSAGE E12 JSB ERROR NO DC FLAG WHILE CHECKING STATUS JSB ADDOI,I * FALLOUT OKAY STABK EQU * DC01 LIA DC AND NFFB STA STAUS SAVE STATUS JMP STAT,I RETURN STATUS IN A * * COMMD NOP IOR UNIT PLUG IN UNIT NUMBER CC01 OTA CC CC02 CLC CC MAKE SURE ENCODE IS ZERO CC03 STC CC,C NOW SET ENCODE STB COPRN SET UP CURRENT OPERATION NUMBER JMP COMMD,I * * DADO NOP DC02 OTA DC DC03 STC DC,C JMP DADO,I * * WAITD NOP WAIT ON DATA CHANNEL LDA MM16 ALLOW A SHORT COUNT WALP EQU * DC04 SFC DC JMP WAITD,I SSA,INA JMP WALP JSB PCOP PRINT CURRENT OPERATION MESSAGE DC13 SFS DC CHECK FOR FLAG NOW JMP E63 E11 JSB ERROR LATE DC FLAG JMP *+2 E63 JSB ERROR NO DC FLAG JSB ADDOI,I JMP WAITD,I HED WAITS,WAIH,WAIS * * THE WAITS ROUTINE WAITS FOR UP TO 105 MILLISECONDS * FOR THE COMMAND CHANNEL FLAG. WHEN THE FLAG SETS, * WAITS CALLS STAT FOR THE STATUS * WAITS NOP LDA MM105 WAX EQU * STA LCNT SET EXTRA CLOCK COUNTER WASD EQU * CLA,INA JSB TMR,I ONE MSEC TIME DELAY CC05 SFS CC SKIP IF SEEK DONE JMP WASQ CC15 LIA CC GET ATTENTION FOR POSSIBLE CHECK STA ATTN LDA LCNT CALCULATE ADA D106 TIME SPENT BEFORE FLAG SET, ADA SVCTA ADD TO ACCUMULATED AMOUNT STA SVCTA AND SAVE IT JSB STAT CALL FOR STATUS JMP WAITS,I * WASQ EQU * ISZ LCNT SKIP WHEN TIMED OUT JMP WASD KEEP LOOPING JSB MC WIPE OUT THE CARDS JSB PCOP PRINT CURRENT OPERATION MESSAGE E10 JSB ERROR NO CC FLAG JSB ADDOI,I JMP WAITS,I RETURN * * * WAIH ALLOWS ENOUGH TIME FOR HEAD * SWITCHING TO OCCUR. * WAIH NOP LDA WAIH LOAD RETURN ADDRESS STA WAITS SAVE FOR RETURN LDA MM2 ALLOW TWO MILLISECONDS JMP WAX * * * WAIS ALLOWS TIME FOR SECTOR SWITCHING TO * OCCUR. * WAIS EQU WAIH HED FSEEK,FSEEH,FSEES * FSEEK,FSEEH,FSEES * PERFORM JSB SEEK OR SEEH * JSB WAITS OR WAIH * JSB WCHK * WITH EXPECTED STATUS = 0 * FSEEK NOP JSB SEEK PERFORM SEEK JSB WAITS WAIT FOR SEEK TO COMPLETE LDA ATTN CHECK ATTENTION JSB GETNI,I DETERMINE BIT NUMBER RSS OK SO FAR JMP *+3 ERROR - NONE SET CPB UNIT CORRECT UNIT JMP ATTEN OK JSB PCOP START ERROR REPORT LDA B21 STA ELOC JSB FPRNT E21 MISSING OR DUP. ATTENTION JSB ADDOI,I ATTEN EQU * FSK LDA SHTAS STA FSAVE SAVE STATUS-EXPECTED FOR OTHER CLA OPERATION STA SHTAS EXPECTED STATUS FOR SEEK IS 0 JSB WCHK CHECK STATUS LDA FSAVE STA SHTAS RESTORE EXPECTED STATUS JMP FSEEK,I FSEES EQU * FSEEH NOP JSB SEEH SWITCH HEADS JSB WAIH WAIT FOR HEADS TO SWITCH LDA FSEEH STA FSEEK JMP FSK