* .FDV DOES A FLOATING POINT DIVIDE.
* 
.FDV  NOP 
      STA A1        SAVE HIGH PART OF DIVIDEND
      JSB .FLUN     UNPACK LOW PART 
      STA EXPOM     SAVE EXPON. 
      STB B1        SAVE LOW PART OF DIVIDEND MANT. 
      LDA .FDV,I    GET ADDRESS OF DIVISOR. 
      ISZ .FDV      BUMP RETURN ADDRESS.
      DLD 0,I       GET DIVISOR.
      SZA,RSS       DIVIDE BY 0?
      JMP DVZRO      YES! GO EXIT.
      STA A2        SAVE HIGH PART OF DIVISOR 
      JSB .FLUN     UNPACK LOW PART.
      STB B2        SAVE LOW PART OF DIVISOR MANT.
      CMA,INA       COMPUTE EXPONENT DIFFERENCE 
      INA             PLUS 1
      ADA EXPOM        AND
      STA EXPOM           STORE.
      LDA B1        GET DOUBLE LENGTH DIVIDEND
      LDB A1          IN REGISTERS. 
      ASR 2         ARS 2 TO PREVENT OVFLOW.
      DIV A2        PERFORM FIRST DIVISION. 
      STA A1        SAVE FIRST QUOTIENT.
      BRS           DIVIDE REMAINDER BY 2 TO PRE- 
      CLA             VENT DIVISION OVERFLOW. 
      DIV A2        PERFORM SECOND DIVISION 
      STA B1        SAVE LOW PART OF QUOTIENT.
      LDB B2        GET LOW PART
      CLA,CLE        OF DIVISOR MANTISSA. 
      ERB,BRS       SCALE TO
      BRS            PREVENT OVERFLOW.
      DIV A2        OBTAIN Q2 
      CMA,INA       COMPUTE 
      MPY A1         -Q*Q2. 
      BLS,CLE,ELB   SHIFT 2 & GET SIGN TO E.
      LDA B1        TEST SIGN OF Q1.
      SSA           IF NEGATIVE, SET A
      CCA,RSS        TO -1 AS EXTENSION OF Q1.
      CLA           OTHERWISE,SET TO 0 AS POS. EXTENSION. 
      CMA,SEZ       IF E IS SET ALSO, SUBTRACT 1 MORE 
      INA             AS EXTENSION OF PRODUCT.
      CMA,CLE       CLEAR E FOR FOLLOWING TEST. 
      ADB B1
      SEZ           IF ADD OVERFLOWS, 
      INA              CARRY INTO A.
      CLE,ELB       NOW LONG SHIFT TO POSITION
      ELA              FOR FINAL ADDITION.
      ADA A1
NORM  JSB .PACK     PACK RESULT 
EXPOM BSS 1 
      JMP .FDV,I    RETURN
DVZRO LDA INF1      SET DIVIDE
      STA EXPOM      BY ZERO
      JMP NORM        EXIT. 
      SKP 
* .FMP EXECUTES A FLOATING POINT MULTIPLY.
* 
.FMP  NOP 
      STA A1        SAVE HIGH PART OF MULTIPLICAND. 
      JSB .FLUN     UNPACK LOW PART.
      STA EXPON     SAVE EXPONENT.
      RBR           POSITION LOW PART AND 
      STB B1         SAVE IT. 
      LDA .FMP,I    GET ADDRESS OF MULTIPLIER.
      DLD 0,I       GET SECOND ARGUMENT.
      STA A2        SAVE HIGH PART. 
      JSB .FLUN     UNPACK LOW PART.
      ADA EXPON     ADD TO MULTIPLIER EXPONENT
      INA              AND ADD 1. 
      STA EXPON     PUT RESULT BACK.
      RBR           POSITION LOW PART AND 
      STB 0           PUT IT IN A REG.
      MPY A1        COMPUTE FIRST CROSS PRODUCT.
      STA B2        SAVE RESULT 
      LDA B1          AND COMPUTE 
      STB B1            SECOND CROSS
      MPY A2              PRODUCT.
      ADB B1        ADD THE 
      CLE            TWO CROSS
      ADA B2           PRODUCTS.
      SEZ           CARRY FROM LOW PART?
      INB            YES! INCREMENT PRODUCT.
      STB B2        SAVE HIGH PART OF RESULT. 
      LDA A1        COMPUTE HIGH PART OF
      MPY A2          PRODUCT.
      CLE,ERA       POSITION LOW PART.
      ADA B2        ADD IN CROSS TERMS. 
      CLE,ELA       REPOSITION. 
      SEZ,RSS       TEST FOR OVERFLOWS: IF E=1, ADD 
      JMP *+4        1 TO B IF OVERFLOW OCCURRED, -1
      SOC             IF NOT. OVERFLOW SET? 
      INB,RSS           YES! INCREMENT PRODUCT. 
      ADB M1            NO! DECREMENT PRODUCT.
      STA A1        EXCHANGE
      LDA 1          THE
      LDB A1          REGISTERS.
      JSB .PACK     NORMALIZE AND PACK
EXPON BSS 1 
      ISZ .FMP
      JMP .FMP,I    RETURN
.PACK NOP           ENTRY POINT 
      STA HOLD      SAVE A REGISTER.
      CLA           SET THE EXPONENT
      STA EXPOX      TO ZERO
      LDA HOLD      IF A & B ARE
      SZA,RSS         BOTH ZERO 
      SZB              RETURN IMMEDIATELY 
      JMP NORML           ELSE GO TO NORMALIZING SECTION. 
BACK  CLO           CLEAR OVERFLOW FOR GOOD RETURN. 
      ISZ .PACK     BUMP RETURN ADDRESS PAST X. 
      JMP .PACK,I   RETURN
* NORMALIZING SECTION * 
SHIFT ISZ EXPOX     COUNTS # OF LEFT SHIFTS.
NORML CLE,ELB       ROTATE A & B LEFT 
      ELA            INTO E.
      SEZ,SSA,RSS   TEST THE ORIGINAL 2 HIGH BITS.
      JMP SHIFT     BOTH WERE 0--# WAS + UNNORMALIZED.
      SEZ,SSA 
      JMP SHIFT     BOTH WERE 1--# WAS - UNNORMALIZED.
      ERA           UNDO THE SHIFT, PRODUCING A 
      ERB,CLE          NORMALIZED MANTISSA. 
      ADB B177      ADD IN SUFFICIENT ROUND FOR NEG-
      SSA,RSS        ATIVE NUMBERS. 
      INB           IF POSITIVE, 1 MORE IS NECESSARY. 
      CLO           CLEAR TO TEST FOR A-REG OVFLOW
      SEZ           TEST FOR OVERFLOW OUT OF B. 
      CLE,INA       IF SO, BUMP A REGISTER. 
      SOS           IF THE BUMP CAUSES OVERFLOW,
      RAL            SKIP THIS SHIFT (A=100000,B=0).
      SSA,SLA,RSS   TEST FOR TOP 2 BITS=1.
      JMP *+3 
* THIS LAST TEST IS NECESSARY TO OBTAIN THE CORRECT RESULT
* WHEN THE UNROUNDED MANTISSA WAS 101...1 AND A ROUND OCCURRED, 
* PRODUCING 110...0, WHICH IS UNNORMALIZED. 
      ISZ EXPOX     BECAUSE GOING TO LEFT SHIFT 
      ARS,SLA,ALS   PRODUCES A=10...0 AND SKIPS.
      RAR           UNDOES THE RAL ABOVE. 
* AT THIS POINT, A & B ARE NORMALIZED & ROUNDED, AND THE
* TRUE EXPONENT IS .PACK,I-EXPON(+1 IF OVFF=1). 
      STA HOLD      SAVE A REGISTER.
      LDA 1         REMOVE LOW ORDER 8 BITS OF B. 
      AND MASKH     MASK THEM 
      STA 1          AND SAVE RESULT. 
      LDA EXPOX     COMPUTE 
      CMA,INA        TRUE 
      ADA .PACK,I     EXPONENT. 
      SOC           OVERFLOW OCCUR? 
      INA            YES! INCREMENT RESULT. 
      ADA P200      TEST FOR EXPONENT UNDERFLOW.
      SSA           UNDERFLOW?
      JMP XUNDR      YES! GO EXIT.
      ADA MASKH     TEST FOR EXPONENT OVERFLOW
      SSA,RSS       OVERFLOW? 
      JMP XOVER      YES! GO EXIT.
      ADA P200      RESTORE ORIGINAL EXPONENT.
      RAL           POSITION SIGN TO LSB. 
      AND B377      MASK TO 8 BITS. 
      ADB 0         PACK INTO B.
      LDA HOLD      RESTORE HIGH PART 
      JMP BACK      RETURN
      SKP 
* OVERFLOW UNDERFLOW SECTION *
XUNDR CLA           RETURN
      CLB            A=B=0
      JMP SETOV       FOR UNDERFLOW.
XOVER LDA NB15      RETURN +INFINITY
      LDB M2          FOR OVERFLOW. 
SETOV STO           SET OVERFLOW FLAG FOR OVERFLOW
      JMP BACK+1       OR UNDERFLOW.
EXPOX BSS 1 
.FLUN NOP 
      LDA 1         MOVE ARGUMENT TO A
      AND B377          GET EXPONENT BITS AND 
      CMB                SUBTRACT 
      ADB 0               FROM
      CMB                  B-REG. 
      SLA,RAR       POSITION & TEST SIGN. IF MINUS, 
      IOR XSEXP        PUT IN EXTRA BITS. 
      JMP .FLUN,I   RETURN
* 
* .FIX EXECUTES A FLOATING POINT FIX SOFTWARE INSTRUCTION.
* 
.FIX  NOP 
      STA A1        SAVE MANTISSA 
      JSB .FLUN     UNPACK TO GET EXP IN A
      CLO           CLEAR OVERFLOW BIT
      SSA           SKIP IF EXP NEGITIVE
      JMP UNFLO     IF NOT NEG RETURN 0 IN A REG
      ADA M16       COMPUTE SHIFT COUNT 
      SSA,RSS       SKIP IF EXP < 16
      JMP OVFLO     IF 16 OR GREATER SET FOR OVERFLOW 
      CLE,SZB       IF B = 0 CLEAR E
      CME           IF B NOT 0 SET E
      STA 1         SAVE THE SHIFT COUNT IN B 
      LDA A1        RESTORE VALUE OF A REG
LOOP1 ISZ 1         INCREMENT SHIFT CNT SKIP IF DONE. 
      JMP SHFT1     SHIFT NEXT BIT
      SEZ,SSA       SKIP IF NUMBER NEG & FRAC 0 
      INA           OTHERWISE BUMP RESULT 
      JMP .FIX,I    RETURN
SHFT1 SLA,ARS       SHIFT RIGHT & TEST FOR LOST BIT 
      CCE           IF 1, SET E TO 1
      JMP LOOP1     RETURN TO SHIFTING LOOP 
UNFLO CLA           SET A TO ZERO 
      JMP .FIX,I    RETURN
OVFLO LDA NB15      SET A TO 32767
      STO           SET OVERFLOW BIT
      JMP .FIX,I    RETURN
* 
* FLOAT EXECUTES A SOFTWARE FLOATING POINT FLT INSTRUCTION. 
* 
FLOAT NOP 
      CLB           CLEAR B 
      JSB .PACK     GO TO PACKING ROUTINE 
      DEC 15
      JMP FLOAT,I   RETURN
      HED MESSAGES
INTRO ASC 18,2100-21MX FLOATING POINT DIAGNOSTIC/ 
ERMSG ASC 04,E00X FIX 
      OCT 6412
      ASC 13,   TEST PATTERN IN A AND B 
      OCT 6412
ABPAT ASC 14,     A= XXXXXX   B= XXXXXX/
OPERP ASC 13,   TEST PATTERN IN OPERAND 
      OCT 6412
OPPAT ASC 14,        XXXXXX      XXXXXX/
ACRES ASC 09,   ACTUAL RESULT 
      OCT 6412
APNTR ASC 18,     A= XXXXXX   B= XXXXXX  OVF= X 
      OCT 6412
      ASC 10,   EXPECTED RESULT 
      OCT 6412
EPNTR ASC 19,     A= XXXXXX   B= XXXXXX  OVF= X/
ACPNT DEF *+1 
      DEF APNTR+4 
      DEF APNTR+10
      DEF EPNTR+4 
      DEF EPNTR+10
      DEF ABPAT+4 
      DEF ABPAT+10
      DEF OPPAT+4 
      DEF OPPAT+10
OPERD DEF OPERP 
ACPTR DEF ACRES 
ACTOP DEF APNTR+16
EXPOP DEF EPNTR+16
INSTP DEF *+1 
      ASC 2, FIX
      ASC 2, FLT
      ASC 2, FAD
      ASC 2, FSB
      ASC 2, FMP
      ASC 2, FDV
ERINT DEF ERMSG+2 
ZTSTF DEF *+1 
      ASC 3,TEST
ZTSTN ASC 2,XX//
ZRTLF ASC 1,//
ZPSC  ASC 6,PASS XXXXXX/
      HED DIAGNOSTIC CONTROL
      ORG 2000B 
ZSTEX CLC 0,C       TURN I/O SYSTEM OFF 
      JSB MSGC,I    DO CRLF 
      DEF ZRTLF      ON CONSOLE.
      JSB MSGC,I    OUTPUT HEADER MESSAGE 
      DEF INTRO       TO THE CONSOLE. 
      CLA           CLEAR PASS
      STA ZEOLC       COUNT.
      LDB BIT9      USER TEST 
      JSB SWRT       SELECTION? 
      JMP ZUSR        YES! GO GET USER INPUT. 
ZNUSR LDA STDA        NO! GET THE STANDARD
      LDB STDB              TEST SET. 
      JMP ZEXC      GO SAVE TEST SET. 
ZUSR  LDA ZSINA     RETRIEVE PREVIOUS 
      LDB ZSINB      TEST SET.
      HLT 75B       WAIT FOR USER INPUT 
ZEXC  STA ZUINA     SAVE
      STB ZUINB       USER
      STA ZSINA         INPUT 
      STB ZSINB           TEST SET. 
      LDB BIT9      CHECK IF SW9 IS DOWN
      JSB SWRT      IS IT?
      JMP ZUSR       NO! GO HALT AGAIN. 
      CCA            YES! SET THE TEST
      STA TSTN          NUMBER TO -1. 
      STA ZCFTT     SET TEST NUMBER.
      CLA           CLEAR 
      STA ZTSTA      TEST RUN FLAG
ZEXCL LDA ZUINA     RESTORE A REG.
      LDB ZUINB     RESTORE B REG.
      ERA,RAL       ROTATE
      ERB             FIRST 
      ERA               TEST BIT
      STA ZUINA     SAVE TEST BIT 
      STB ZUINB      POSITIONS. 
      ISZ TSTN      MOVE TEST NUMBER UP ONE 
      NOP 
ZXCL1 LDA TSTN      GET TEST NUMBER.
      ADA TSTP      GET THE TEST SECTION
      LDA A,I        STARTING ADDRESS.
      CPA M1        IS THIS THE END OF TESTS? 
      JMP ZEOL       YES! GO TO THE END OF TEST.
      LDB ZUINB      NO! GET TEST INDICATOR.
      SSB,RSS       SHOULD THIS TEST BE RUN?
      JMP ZEXCL      NO! GO TRY NEXT TEST.
      STA ZTSTA      YES! SAVE STARTING ADDRESS.
      JSB ZTSTA,I   GO DO TEST
      CLA           CLEAR THE FIX 
      STA FIXTT      TEST INDICATOR.
      LDA TSTN      GET THE TEST NUMBER.
      LDB BIT15     CHECK FOR HALT AT END OF TEST 
      JSB SWRT      HALT REQUESTED? 
      HLT 76B        YES! WAIT FOR OPERATOR.
      LDB BIT9      CHECK FOR USER SELECTION. 
      JSB SWRT      IS USER SELECTION REQUESTED?
      JMP ZUSR       YES! GO HALT.
      LDB BIT13     CHECK FOR LOOP ON TEST SECTION. 
      JSB SWRT      LOOP REQUESTED? 
      JMP ZXCL1      YES! GO DO TEST AGAIN. 
      JMP ZEXCL      NO! DO NEXT TEST.
ZEOL  LDA ZTSTA     WERE ANY TESTS
      SZA,RSS        RUN? 
      JMP ZNUSR       NO! GET STANDARD TEST SET.
      LDA ZEOLC     UPDATE
      INA            PASS 
      STA ZEOLC       COUNT.
      CCE           READY FOR CONVERSION. 
      LDB ZPSCA     GET PASS COUNT
      ADB TWO         ADDRESS.
      JSB O2AS,I    CONVERT IT TO ASCII.
      JSB MSGC,I    CALL PRINT ROUTINE
ZPSCA DEF ZPSC      MESSAGE POINTER.
      LDB BIT12     CHECK FOR LOOP ON DIAG. 
      JSB SWRT      LOOP ON DIAGNOSTIC REQUESTED? 
      JMP *+3        YES! BYPASS HLT 77B. 
      LDA ZEOLC      NO! GET PASS COUNT.
      HLT 77B             AND HALT. 
      LDA ZSINA     RESTORE ORIGINAL
      LDB ZSINB      TEST SET.
      JMP ZEXC      GO DO ALL TESTS AGAIN.
* 
*         MESSAGE OUTPUT WITHOUT HALT 
* 
ZMSGC NOP           ENTRY 
      JSB ZMSG      OUTPUT MESSAGE
      OCT 2000      S-REG 10 CHECK
      JMP ZMSGC,I   RETURN TO CALLER
* 
*         ERROR MESSAGE WITH HALT 
* 
ZERMS NOP           ENTRY 
      JSB ZMSG      OUTPUT MESSAGE
B4000 OCT 4000      S-REG 11 CHECK
      CLA 
      LDB BIT14     CHECK SWR BIT 14 TO 
      JSB SWRT       SUPPRESS HALTS.
      STA ZHLT      PUT HALT IN LINE
      LDA NOPT      SUPPRESS
      SZA            MESSAGE? 
      JMP FIXHT       YES! GO HALT. 
      LDA TSTN      GET TEST NUMBER.
      ARS,CLE       SHIFT OUT BIT 0.
      SZA,RSS       IS THIS TEST 0 OR 1?
      JMP DOOPR      YES! DON'T PRINT OPERAND.
      CLA             NO! READY FORMATTER.
      LDB OPERD     PRINT 
      JSB FMTR,I      OPERAND MESSAGE.
DOOPR CLA           PRINT REST OF THE 
      LDB ACPTR      ERROR
      JSB FMTR,I      MESSAGE.
FIXHT DLD HA1       GET TEST PATTERN. 
ZHLT  NOP           HALT FOR OPERATOR 
      LDB BIT14     DID OPERATOR
      JSB SWRT       SUPPRESS ERROR HALTS?
      JMP ZERMS,I    YES! DID OPERATOR
      LDB B4000           GET A PRINTOUT ON 
      JSB SWRT             THE CONSOLE? 
      RSS 
      JMP ZERMS,I    YES! DON'T DO SECONDARY HALT.
      LDA TSTN      GET TEST NUMBER.
      ARS           IS THIS 
      SZA,RSS        TEST 0 OR 1? 
      JMP NOHT6        YES! DON'T HALT. 
      DLD HA2       GET OPERAND PATTERN.
      HLT 6         SECONDARY ERROR HALT. 
NOHT6 LDA ACTOV     GET FP OVERFLOW SETTING 
      JSB CHNGO      AND SET OR CLEAR ACTUAL REG. 
      DLD ACTA      GET ACTUAL A AND B VALUES 
      HLT 7            FOR  FLT. PT. INSTRUCTION. 
      LDA EXPOV     GET EXPECTED OVF. 
      JSB CHNGO     GO SET OR CLEAR OVF.
      DLD EXPA      GET EXPECTED A AND B VALUES.
      HLT 10B        FOR FLT.PT. INSTRUCTION. 
      JMP ZERMS,I   RETURN TO CALLER
* 
*         OUTPUT MESSAGE
* 
ZMSG  NOP 
      STA ZSAVA     SAVE A AND B REGISTERS
      STB ZSAVB 
      LDB ZMSG,I    GET SWITCH REGISTER BIT 
      LDA ZMSG      GET RETURN ADDRESS. 
      ADA M2        DECREMENT AND 
      STA ZMSG       RESTORE RETURN ADDRESS.
      STA NOPT      SAVE MESSAGE INDICATOR. 
      JSB SWRT      CHECK TO SUPPRESS MESSAGES
      JMP ZMSG0      YES? DON'T PRINT MESSAGE.
      LDA ZMSG,I     NO? GET ERROR
      LDA A,I            MESSAGE
      LDA A,I               POINTER.
      ALF,ALF       CHECK IF
      AND B177       THIS IS AN 
      CPA ZA.E        ERROR MESSAGE. IS IT? 
      JMP ZCFTN      YES!CHECK TO OUTPUT TEST NUMBER
ZRTN  LDA ZMSG,I     NO! RETRIEVE FORMAT
      LDB A,I         ADDRESS 
      CLA,CLE           AND 
      STA NOPT           PRINT
      JSB FMTR,I          MESSAGE.
ZMSG0 LDA ZMSG,I    CONVERT HALT CODE 
      LDB A,I         FROM ASCII STRING 
      CCA,CCE          TO 
      JSB AS2N,I        OCTAL.
      LDB HLT0      SET  HALT CODE
      AND STDA      MASK TO SC. 
      IOR B         MERGE IN HALT CODE. 
      LDB ERMSG     GET EX OF EXXX MESSAGE. 
      SLB           IS THIS AN INDIRECT FAILURE?
      IOR BIT9       YES! FORCE TO 1030XX HALT. 
      STA ZHLT      SAVE IT.
      ISZ ZMSG,I    ADJUST RETURN POINTERS
      ISZ ZMSG
      ISZ ZMSG
      ISZ ZMSG
      LDA ZSAVA     RESTORE A AND B REGISTERS 
      LDB ZSAVB 
      JMP ZMSG,I    RETURN. 
ZCFTN LDA TSTN      GET TEST NUMBER 
      CPA ZCFTT     IS IT THE SAME ONE? 
      JMP ZRTN        YES! SKIP OUTPUT
      STA ZCFTT       NO!  THEN UPDATE IT 
      STA ZIOAD     SAVE NUMBER 
      AND B7        CONVERT FIRST 
      IOR B60         NUMBER
      STA B         SAVE IT 
      LDA ZIOAD     GET 
      RAR,RAR         SECOND
      RAR               NUMBER
      AND B7        CONVERT 
      IOR B60         IT
      ALF,ALF       MOVE TO UPPER HALF
      IOR B         ADD LOWER NUMBER
      STA ZTSTN     PUT IT IN STRING
      CLA           DO A CRLF 
      JSB SLOP,I     TO CONSOLE.
      CLA,CLE       INDICATE START OF FORMAT
      LDB ZTSTF     GET TEST # MESG. POINTER. 
      JSB FMTR,I    PRINT TEST # MESSAGE. 
      JMP ZRTN      RETURN
      HED MAIN FLOATING POINT DIAGNOSTIC
      SKP 
* 
* FIX TEST
* 
TST00 NOP 
      JSB SDATA     SET TEST DATA.
      STA FIXTT     MARK AS FIX TEST. 
TST0L JSB SETOP     GET DATA PATTERN. IF END OF 
      JMP TST00,I    TEST THEN EXIT.
      JSB TOROT     GO TO ROTATE TEST.
      JSB .FIX      FIX SOFTWARE MACRO. 
      NOP           INDICATES NO OPERAND USED.
      OCT 105100    FIX FIRMWARE MACRO. 
      DLD HA2       GET OPERAND DATA. 
      DST HA1       PUT IT IN A & B LOCATIONS.
      JSB TOROT     GO DO ROTATE TEST.
      JSB .FIX      FIX SOTWARE MACRO.
      NOP           INDICATES NO SOFTWARE MACRO.
      OCT 105100    FIX FIRMWARE MACRO. 
      JMP TST0L     DO NEXT PATTERN.
      SKP 
* 
* FLT TEST
* 
TST01 NOP 
      CLA           CLEAR INDIRECT
      STA ILINE      OPERAND POINTER. 
      CCA           SET TEST PATTERN. 
TST1L CLB           SAVE A AND
      DST HA1        B PATTERN. 
      STA HOLDX     SAVE PATTERN. 
      JSB FLOAT     GO DO A FLT.
      JSB SAVRE     SAVE RESULTS. 
      LDA HOLDX     RESTORE PATTERN.
      OCT 105120    GO DO FIRMWARE FLT. 
      JSB ERROR     CHECK RESULTS.
      LDA HOLDX     GET TEST PATTERN. 
      INA           INCREMENT IT. 
      CPA M1        END IF PATTERNS?
      JMP TST01,I     YES! EXIT TEST. 
      JMP TST1L       NO! GO DO NEXT PATTERN. 
      SKP 
* 
* FAD TEST
* 
TST02 NOP 
      JSB SDATA     SET TEST DATA.
TST2L JSB SETOP     GET DATA PATTERN. IF END OF 
      JMP IND02      DATA GO TO INDIRECT TEST.
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FAD      FAD SOFTWARE MACRO. 
      DEF HA2       OPERAND POINTER.
      OCT 105000    FAD FIRMWARE MACRO. 
      JMP TST2L     DO ANOTHER PATTERN. 
IND02 JSB SDATA     SET TEST DATA.
TSI2L JSB SETOP     GET DATA PATTERN. IF END
      JMP TST02,I    OF TEST THEN EXIT. 
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FAD      FAD SOFTWARE MACRO. 
      DEF INDTS,I   OPERAND POINTER.
      OCT 105000    FAD FIRMWARE MACRO. 
      JMP TSI2L     DO ANOTHER PATTERN. 
      SKP 
* 
* FSB TEST
* 
TST03 NOP 
      JSB SDATA     SET TEST DATA.
TST3L JSB SETOP     GET DATA PATTERN. IF END OF 
      JMP IND03      DATA GO TO INDIRECT TEST.
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FSB      FSB SOFTWARE MACRO. 
      DEF HA2       OPERAND POINTER.
      OCT 105020    FSB FIRMWARE MACRO. 
      JMP TST3L     DO ANOTHER PATTERN. 
IND03 JSB SDATA     SET TEST DATA.
TSI3L JSB SETOP     GET DATA PATTERN. IF END
      JMP TST03,I    OF TEST THEN EXIT. 
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FSB      FSB SOFTWARE MACRO. 
      DEF INDTS,I   OPERAND POINTER.
      OCT 105020    FSB FIRMWARE MACRO. 
      JMP TSI3L     DO ANOTHER PATTERN. 
      SKP 
* 
* FMP TEST
* 
TST04 NOP 
      JSB SDATA     SET TEST DATA.
TST4L JSB SETOP     GET DATA PATTERN. IF END OF 
      JMP IND04      DATA GO TO INDIRECT TEST.
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FMP      FMP SOFTWARE MACRO. 
      DEF HA2       OPERAND POINTER.
      OCT 105040    FMP FIRMWARE MACRO. 
      JMP TST4L     DO ANOTHER PATTERN. 
IND04 JSB SDATA     SET TEST DATA.
TSI4L JSB SETOP     GET DATA PATTERN. IF END
      JMP TST04,I    OF TEST THEN EXIT. 
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FMP      FMP SOFTWARE MACRO. 
      DEF INDTS,I   OPERAND POINTER.
      OCT 105040    FMP FIRMWARE MACRO. 
      JMP TSI4L     DO ANOTHER PATTERN. 
      SKP 
* 
* FDV TEST
* 
TST05 NOP 
      JSB SDATA     SET TEST DATA.
TST5L JSB SETOP     GET DATA PATTERN. IF END OF 
      JMP IND05      DATA GO TO INDIRECT TEST.
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FDV      FDV SOFTWARE MACRO. 
      DEF HA2       OPERAND POINTER.
      OCT 105060    FDV FIRMWARE MACRO. 
      JMP TST5L     DO ANOTHER PATTERN. 
IND05 JSB SDATA     SET TEST DATA.
TSI5L JSB SETOP     GET DATA PATTERN. IF END
      JMP TST05,I    OF TEST THEN EXIT. 
      JSB TOROT     GO TO ROTATING DATA TEST. 
      JSB .FDV      FDV SOFTWARE MACRO. 
      DEF INDTS,I   OPERAND POINTER.
      OCT 105060    FDV FIRMWARE MACRO. 
      JMP TSI5L     DO ANOTHER PATTERN. 
      SPC 3 
FWAA  EQU * 
      END 
        