ASMB,A,B,C,L     06/30/76  13184A/7970E DIAGNOSTIC
      HED ** HP - 13184A/7970E DIAGNOSTIC  **  13184 - 19001  **
* 
*     GENERAL OPERATING PROCEDURE 
* 
*       A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP.
*       B. LOAD DIAGNOSTIC MAIN PROGRAM.
*       C. LOAD ADDRESS 100B. 
*       D. LOAD SWITCH REG. WITH SELECT CODE, TAPE SPEED AND
*          DMA CHANNEL DESIRED. 
* 
*            BITS 0 - 5    SELECT CODE
*            BIT  6        12.5 IPS 
*             "   7        25.0  "
*             "   8        37.5  "
*             "   9        45.0  "
*             "   11       SET   -  USE DMA CHANNEL 2 
*                          NOT SET - USE DMA CHANNEL 1
* 
*       E. PRESS RUN AND WAIT FOR HALT 102074B. 
*       F. LOAD SWITCH REGISTER:
* 
*            IF SET:
* 
*              15 = HALT AT END OF EACH TEST
*              14 = SUPPRESS ERROR HALTS
*              13 = LOOP ON TEST(S) 
*              12 = LOOP ON DIAGNOSTIC
*              11 = SUPPRESS ERROR MESSAGES 
*              10 = HALT AT EOT WITH MEMORY DATA REGISTER = 
*                   NEXT FORMAT I.D.
*               9 = NOT USED
*               8 
*                 = FORMAT I.D. 
*               6 
*               5 = INHIBIT DMA TRANSFERS, USE SKIP-FLAG READ 
*               4 = SUPPRESS REWIND TO LOAD POINT TESTS 
*               3 = SELECT UNIT 3 
*               2 = SELECT UNIT 2 
*               1 = SELECT UNIT 1 
*               0 = SELECT UNIT 0 
* 
*       G. PRESS RUN. 
*       H. RESTART - LOAD ADDRESS 2000B.
*       I. RECONFIGURE - LOAD ADDRESS 100B. 
* 
*       CONTROL PROGRAM HALTS 
* 
*       102077    DIAGNOSTIC COMPLETED
*       102076    NORMAL HALT AFTER CURRENT TEST(A=TEST #)
*       102074    CONFIGURATION COMPLETED 
*       102073    CONFIGURATION HALT,NO SELECT CODE ENTERED 
*                 IN SWITCH REGISTER
*       102072    CONFIGURATION HALT,NO TAPE DRIVE SPEED
*                 ENTERED IN SWITCH REGISTER
*       102071    UNIT SELECTED IS BUSY OR OFF-LINE 
*       102070    NO UNIT SELECTED IN SWITCH REGISTER 
* 
*       102057    DATA RECORD COULD NOT BE READ SUCCESSFULLY
*       102056    ERROR BUFFER IS FULL
*       102055    ERROR HALT (A= TEST #)
* 
*       10200X    FORMAT ERROR HALT, EXCEPT IF SWITCH REGISTER
*                 BIT 10 IS SET 
* 
*       106077    TRAP CELL HALT
* 
      ORG 100B
      SUP 
START JMP INITI,I 
* 
*     LINKS TO DIAGNOSTIC CONFIGURATOR
* 
FSTIN BSS 1        FAST INPUT DEVICE
SLWOT BSS 1        SLOW OUTPUT DEVICE 
FSTOT BSS 1        FAST OUTPUT DEVICE 
SLWIN BSS 1        SLOW INPUT DEVICE
FWAM  DEF END       FIRST WORD AVAIL. MEMORY
LWAMX BSS 1        LAST WORD AVAIL. MEMORY
MGTP  BSS 1        MAGNETIC TAPE LINK 
TMC   BSS 1        1 MILL. SEC. TIME OUT CONSTANT 
      BSS 1        FAST INPUT SELECT CODE 
OTSC1 BSS 1        SLOW OUTPUT SELECT CODE
      BSS 1        FAST OUTPUT SELECT CODE
      BSS 1        SLOW INPUT SELECT CODE 
CPTO  BSS 1        COMPUTER TYPE & OPTIONS
      BSS 1        USERS CARD TYPE & SC 
MEM   BSS 1        MEMORY SIZE
      BSS 1        INTERNAL SWITCH REGISTER 
TIMR  BSS 1        1 MILL. SEC. TIMER 
SWRC  BSS 1         SWITCH REGISTER CHECK 
I2ASC BSS 1        INTEGER TO ASCII CONVERSION
O2ASC BSS 1        OCTAL TO ASCII CONVERSION
ASCIO BSS 1        ASCII TO OCTAL OR INTEGER
DSN   OCT 112102   DIAG. SERIAL NUMBER
FMTR  BSS 1        FORMATTER ROUTINE
EWORD OCT 125252    PARITY ERROR WORD 
      SPC 1 
A     EQU 0         A - REGISTER
B     EQU 1         B - REGISTER
DATA  EQU 0         DATA CHANNEL
CMMD  EQU DATA+1    COMMAND CHANNEL 
SWRG  EQU 1         SWITCH REGISTER 
DMA   EQU 6         DMA CHANNEL 1 
.INBF EQU 5700B     INPUT BUFFER
 SPC 1
ANBUF BSS 1 
ANPAT BSS 1 
AREG  BSS 1 
AREG0 BSS 1 
AREG1 BSS 1 
AREG2 BSS 1 
AREG3 NOP 
BASE1 BSS 1 
BREG  BSS 1 
BREG1 BSS 1 
BREG2 NOP 
BUFAD BSS 1         CURRENT INPUT BUFFER STARTING ADDR. 
CNT1  BSS 1 
CNT11 BSS 1 
COUNT BSS 1 
CYCNT BSS 1         CYCLE COUNT 
DGCNT NOP 
DMACW BSS 1         DMA CONTROL WORD 1
ERBUF BSS 1 
EXSTA NOP 
FLAG7 BSS 1 
ID    BSS 1         CURRENT TAPE FORMAT I.D.
ITCNT BSS 1 
RECNT BSS 1         DMA WORD COUNT AFTER READ 
..SEP NOP 
SELCM BSS 1 
SPACE ASC 1,
STAT1 BSS 1 
STAT2 NOP 
STATU BSS 1       CURRENT STATUS
SWREG BSS 1 
TBF00 BSS 1 
TBF01 BSS 1 
TBF02 BSS 1 
TBF04 BSS 1 
TBF05 BSS 1 
TBF06 BSS 1 
TBF08 BSS 1 
TBF09 BSS 1 
TMCN1 BSS 1 
TMCN2 BSS 1 
TNUMB BSS 1       CURRENT TEST NUMBER 
TIME  BSS 1 
WDCNT BSS 1         - (CURRENT EXPECTED RECORD LENGTH)
 SPC 1
THIRD DEC -3
N1    DEC -1
N2    DEC -2
N3    DEC -3
N4    DEC -4
N5    DEC -5
N8    DEC -8
N9    DEC -9
N11   DEC -11 
N64   DEC -64 
N400  DEC -400
N408  DEC -408
N1024 DEC -1024 
D0    DEC 0 
D1    DEC 1 
D2    DEC 2 
D4    DEC 4 
D8    DEC 8 
D16   DEC 16
D3    DEC 3 
D6    DEC 6 
D10   DEC 10
D12   DEC 12
D13   DEC 13
D14   DEC 14
D18   DEC 18
D19   DEC 19
D20   DEC 20
D21   DEC 21
D23   DEC 23
D25   DEC 25
D26   DEC 26
D39   DEC 39
D50   DEC 50
D9999 DEC 9999
N4000 DEC -4000 
LWAM  DEF IENT1 
SWRCK DEF SW
TG    NOP 
* 
ADD1  DEF INTR1 
ADD2  DEF INTR2 
ADD3  DEF INTR3 
ADD4  DEF INTR4 
ADD5  DEF INTR5 
ADD6  DEF INTR6 
ADD7  DEF INTR7 
ADD8  DEF INTR8 
ANSI. DEF ANSI
.ANSA DEF ANSIA 
.ANSB DEF ANSIB 
BASE. DEF BASE
CMDS0 DEF RRF 
CMDS1 DEF BSR 
.CSRB DEF CSRB
DEL0  DEF DELY0 
      DEF DELY0+2 
      DEF DELY0+4 
      DEF DELY0+6 
DHT55 DEF HLT55 
ERRBF DEF ERBFR 
.HEAD DEF HEAD
IDPT  DEF IDFOR 
INBUF DEF .INBF 
.IDFO DEF IDFOR 
INITI DEF IENT1 
.LBF  DEF LBF 
..LBF DEF LBF 
MDIAI DEF STRT1 
.MS00 DEF MS00
.MS01 DEF MS01
.MS02 DEF MS02
.MS03 DEF MS03
.MS04 DEF MS04
.MS05 DEF MS05
.MS06 DEF MS06
.MS07 DEF MS07
.MS12 DEF MS12
.MS13 DEF MS13
.MS14 DEF MS14
.MS16 DEF MS16
.MS17 DEF MS17
.MS19 DEF MS19
.MS20 DEF MS20
NTSTI DEF NTEST 
ONES  DEF D0
PRSTI DEF PRSTA 
RECYL DEF RECYC 
SELCT DEF ATSEL 
SLCMS DEF ATSEL 
TBF10 DEF TBF09 
TMPRD DEF .TMPR 
 SPC 1
ERWRD DEF EWORD 
.KEYP DEF KEY 
KEYPT DEF KEY 
.TSRB DEF TSRB
.TSAW DEF TSAW
.CSAW DEF CSAW
      SPC 1 
DATAC NOP           DATA CHANNEL SELECT CODE
CMMDC NOP           COMMAND CHANNEL SELECT CODE 
DEFLG NOP           DATA ERROR RECORD FLAG
LPCYC NOP           LOOP ENABLE FLAG
ODD   NOP           ODD BYTE RECORD FLAG
RDOP  NOP           READ OPERATION FLAG 
 SPC 1
ASCZ  OCT 30060 
B7    OCT      7
B17   OCT     17
B37   OCT     37
B40   OCT     40
B100  OCT    100
B200  OCT    200
B377  OCT    377
B400  OCT    400
B500  OCT    500
B760  OCT 760 
B1001 OCT   1001
B2000 OCT   2000
B3000 OCT   3000
B4000 OCT   4000
B3777 OCT   3777
B70K  OCT  70000
DMAMS OCT 177737
MASK7 OCT  37477
MSK2M OCT 140000
MSKT8 OCT 177400
NOT15 OCT  77777
NOTET OCT  17737
NOTTM OCT  17577
PADAT OCT    401
STRIP OCT  17773
HLT55 OCT 102055
BHLT  OCT 106077
      SPC 1 
* 
*     SWITCH REGISTER MASKS 
* 
SW4   EQU D16 
SW5   EQU B40 
SW10  EQU B2000 
SW11  EQU B4000 
SW12  OCT 10000 
SW13  OCT 20000 
SW14  OCT 40000 
SW15  OCT 100000
 SPC 1
ATSEL EQU * 
      OCT   1400
      OCT   2400
      OCT   4400
      OCT  10400
      OCT      0
RRF   OCT     23
FSR   OCT      3
FSF   OCT    203
      OCT    110
BSR   OCT     41
BSF   OCT    241
REW   OCT    101
CLR   OCT    110
RWO   OCT    105
RRFPE OCT  20023
      SPC 1 
*     THESE VALUES OVERLAID BY CONFIGURATION SECTION
* 
DELY0 DEC 10        1600 CPI  45.0 IPS
      DEC 2          "    "    "    " 
      DEC 20        800   "    "    " 
      DEC 3          "    "    "    " 
      DEC 30        556   "    "    " 
      DEC 4          "    "    "    " 
      DEC 84        200   "    "    " 
      DEC 10         "    "    "    " 
* 
TIM1  NOP           THESE VALUES USED BY TESTS
TIM2  NOP              28-30
TIM3  NOP              *
* 
*     TIMING CONSTANTS FOR COMMAND EXERCISE TIMER 
* 
.TMPR DEC 30        30 MSEC. FOR CMMD EXERCISE
      DEC 15        15 MSEC. FOR CMMD EXERCISE
      DEC 10        10 MSEC. FOR CMMD EXERCISE
 SPC 1
      SKP 
*     TRACK SINGLE ROTATING BIT PATTERN 
* 
TSRB  EQU * 
      OCT   2001
      OCT  10000
      OCT  20100
      OCT 100002
      OCT   4004
      OCT    420
      OCT     40
      OCT  40200
      OCT   1010
* 
*     TRACK SAWTOOTH PATTERN
* 
TSAW  EQU * 
      OCT 177773
      OCT 175352
      OCT 145212
      OCT   5010
      OCT      0
* 
*     CHANNEL SAWTOOTH PATTERN
* 
CSAW  EQU * 
      OCT 177577
      OCT  37437
      OCT   7407
      OCT   1401
      OCT    377
* 
*     CHANNEL SINGLE ROTATING BIT PATTERN 
* 
CSRB  EQU * 
      OCT    402
      OCT   2010
      OCT  10040
      OCT  40200
* 
MSIGN EQU SW15
 SPC 1
JSUBA JSB ANSI.,I 
JSUBR JSB RAND
TRAD1 JSB ADD1,I
TRAD2 JSB ADD2,I
TRAD3 JSB ADD3,I
TRAD4 JSB ADD4,I
TRAD5 JSB ADD5,I
TRAD6 JSB ADD6,I
TRAD7 JSB ADD7,I
TRAD8 JSB ADD8,I
      SKP 
*    FORMAT ID TABLE    * 
 SPC 1
IDFOR OCT 102000    9 TRACK PE 1600 CPI 
      OCT 102001    9 TRACK NRZ 800 CPI 
      OCT 102002    7 TRACK NRZI 800 CPI EVEN PARITY
      OCT 102003    "   "    "   556  "   "     " 
      OCT 102004    "   "    "   200  "   "     " 
      OCT 102005    "   "    "   800  "  ODD    " 
      OCT 102006    "   "    "   556  "   "     " 
      OCT 102007    "   "    "   200  "   "     " 
      OCT 0         START OVER
      SPC 1 
*    ANSI FORMAT "A" PATTERN WORDS    * 
 SPC 1
ANSIA EQU * 
      OCT 177777
      OCT  67557
      OCT  20040
      OCT 130260
      OCT 177660
      OCT  67440
      OCT  20157
      OCT 130377
 SPC 1
*    ANSI FORMAT "B" PATTERN WORDS    * 
 SPC 1
ANSIB EQU * 
      OCT 177777
      OCT 137276
      OCT      0
      OCT  40501
      OCT 177501
      OCT 137000
      OCT    276
      OCT  40777
      SKP 
KEY   EQU * 
      OCT  61470
      OCT  22533
      OCT  65552
      OCT  22004
      OCT  20452
      OCT  26412
      OCT  22004
      OCT  20045
      OCT  22413
      OCT   4312
      OCT   6353
      OCT   4312
      OCT   6740
      OCT   2642
      OCT   6740
      OCT   2642
      OCT   6740
      OCT   2642
      OCT    140
      OCT   6042
      OCT   2100
      OCT   6003
      OCT  73635
      OCT  20755
      OCT  22554
      OCT 134500
* 
*    DECREMENT THE TEST NUMBER    * 
 SPC 1
DECNO NOP 
      LDB TNUMB 
      ADB N1
      STB TNUMB 
      JMP DECNO,I 
 SPC 1
*    RANDOM NUMBER GENERATOR    * 
 SPC 1
RAND  NOP 
      LDA BASE      LOAD THE BASE 
      ADA PRIME     SUBTRACT THE PRIME
      SSA           SKIP IF IT'S STILL POSITIVE 
      LDA BASE      THE BASE ISN'T BIG ENOUGH 
      CLE,ELA       DOUBLE THE BASE OR REMAINDER
      STA BASE      -FOR THE NEXT TRY 
      JMP RAND,I
 SPC 1
PRIME DEC -31069
BASE  BSS 1 
 SKP
EOTTS NOP 
      JSB STATS     GET STATUS
      AND B40       TEST FOR EOT
      CPA B40 
      JMP EENT0     CHECK FOR THE HALT
      ISZ EOTTS     EXIT P+2
      JMP EOTTS,I 
EENT0 LDB SW10      SWITCH 10 SET?
      JSB SWRCK,I 
      RSS 
      JMP REWD      NO, REWIND THE TAPE 
      JMP EOTTS,I   YES, EXIT AND STOP
REWD  LDA REW       START THE DRIVE REWINDING 
      JSB ACMMD 
      JSB RWDET     WAIT FOR IT TO FINISH 
      CLA,CLE 
      LDB .MS06 
      JSB FMTR,I   'EOT'
      JSB PCYCT     ADD THE CYCLE COUNT 
      JMP RECYL,I 
 SPC 1
RWDET NOP           REWIND DETECT ROUTINE 
      JSB FLGWT     WAIT FOR THE COMMAND FLAG 
      JSB STATS     GET STATUS
      AND B3000 
      CPA B3000 
      JMP *-3       LOOP UNTIL FINISHED REWINDING 
      JMP RWDET,I 
* 
RWDWT NOP 
      JSB FLGWT     WAIT FOR COMMAND FLAG 
      JSB STATS    GET THE STATUS AND KEEP
      AND B3000     -CHECKING FOR REWIND STATUS 
      CPA B3000 
      JMP *-3      LOOP UNTIL FINISHED REWINDING
      LDA STATU     RETRIEVE THE STATUS AND 
      SLA           -CHECK THE OFF-LINE BIT 
      JMP BENT0     IT'S SET, HALT
      JMP RWDWT,I 
 SPC 1
*       **  PROGRAM'S FORMAT FLAG SET  ** 
 SPC 1
FORFL NOP 
      CLA 
      JSB FORID     CHECK THE RECORDING FORMAT
      JMP *+3       IT'S 9 TRACK
      INA,RSS       IT'S 7 TRACK EVEN PARITY
      IOR MSIGN     IT'S "   "    ODD   " 
      STA FLAG7     SET THE PROGRAM'S FORMAT FLAG 
      JMP FORFL,I 
 SKP
*             **  TAPE MARK STATUS CHECK  **
 SPC 1
*    CALL:  "A" - CONTAINS THE CURRENT STATUS WORD
* 
*  RETURN:  P+1 - NO TAPE MARK FOUND OR HAS EXTRA STATUS
*           P+2 - GOOD TAPE MARK FOUND
*           "A" - CONTENTS ARE LOST 
 SPC 1
TMARK NOP 
      SZA,RSS       IS THERE ANY STATUS ? 
      JMP TMARK,I   NO, EXIT P+1
      AND NOTTM     MASK OUT THE TAPE MARK BIT
      SZA,RSS       IS THERE ANYOTHER STATUS ?
ENT39 ISZ TMARK     NO, INCREMENT THE RETURN ADDRESS
      JMP TMARK,I 
 SPC 1
*    TELEPRINTER CHECK ROUTINE    * 
 SPC 1
*  RETURN:  P+1 - THERE ISN'T A TELEPRINTER IN THE SYSTEM 
*           P+2 - THERE IS A TELEPRINTER IN THE SYSTEM
 SPC 1
TTYCK NOP 
      STA AREG1    SAVE A REGISTER
      LDA OTSC1 
      CPA D0        IS THERE A TTY SELECT CODE? 
      JMP *+2      NO TTY 
      ISZ TTYCK 
      LDA AREG1    RESTORE A REG. 
      JMP TTYCK,I 
 SPC 1
*             **  SWITCH 15 CHECK ROUTINE  ** 
 SPC 1
S15CK NOP 
      LDB SW15
      JSB SWRCK,I   SWITCH 15 SET?
      RSS           YES 
      JMP S15CK,I   IT'S NOT SET, EXIT
      LDA TNUMB    LOAD TEST NUMBER 
      LDB STATU      AND STATUS 
      HLT 76B       STOP !
      JMP S15CK,I 
 SPC 1
* 
*     SWITCH 11 CHECK 
* 
*        JSB S11CK
*        < SWITCH 11 SET >
*        < SWITCH 11 NOT SET >
* 
                                                                                                                                                                                                                                          