


       NAM MXFIT
**********************************
*                                     *
*          MPU INSTRUCTION TSET       *
*                                     *
**********************************
*
*       STARTING ADDRESS = $200
*       THE PROGRAM WILL EXECUTE THE TEST ONE TIME
*       AND UPON SUCCESSFUL COMPLETION WILL 
*       PRINT "ALL IS WELL ON FIRST PASS" THEN REQUEST
*       THAT THE OPERATOR INDICATE HOW OFTEN HE WANTS
*       AN X PRINTED TO VERIFY THAT THE MPU IS STILL
*       CYCLING. IF THE MEGGAGE DOES NOT GET PRINTED
*       THE OPERATOR MUST DEPRESS THE EXORCISER ABORT
*       AND DETERMINE FROM THE P-REG THE ADDRESS OF THE 
*       FAILURE.
*
*       TO STOP PROGRAM THE EXORCISER ABORT
*       MUST BE DEPRESSED.
*
*       EXBUG SUBROUTINES USED
*        PDATA  PRINT DATA
*        INCHNP INPUT CHARACTER WITH NO PARITY
***
*
       OPT NOG
       OPT SYMBOL 
PDATA  EQU $FA33
INCHNP EQU $FAA0
        SPC 1 
        ORG 0 
DTEMP  RMB 2 DIRECT TEMP STORAGE 
K0     RMB 2 ( FDB 0   ) SET BY PGM 
KD1    RMB 2 ( FDB 1   ) SET BY PGM
KD400  RMB 2 ( FDB 400 ) SET BY PGM  
K1     RMB 1 ( FCB 1   ) SET BY PGM 
       SPC 1  
       ORG $100   
ETEMP  RMB 2 EXTENDED TEMP STORAGE   
       RMB 20 
STACK  RMB 1 START OF STACK  
EXIT1  TST PASS THIS FIRST PASS
       BEQ EXT2 YES
       JMP START1
EXT2   INC PASS BUMP PASS COUNT
       CLR INTCNT
       CLR INTCNT+1
       CLR INTRV NUMBER OF PASS BEFORE PRNT
       CLR INTRV+1
       LDAA #$FF
       STAA CNT
INTINP LDX #MSG1 INTERVAL 0000-9999
       JSR PDATA
INPCH  JSR INCHNP INPUT CHAR NO PARITY
       CMPA #'L LONG INTERVAL
       BEQ LINP YES
       CMPA #'S SHORT INTERVAL
       BEQ SINP YES
       CMPA #'0 NO INTERVAL WANTED
       BEQ ZERO
       LDX #MSG3 RETRY MESSAGE
       JSR PDATA
       BRA INPCH
LINP   LDAA #120 # 30 SECS IN 1 HOUR
       STAA CNT
SINP   LDX INT30 # CYCLES IN 30 SECS
       STX INTRV
ZERO   JMP START1
       PAGE
       ORG $200
START  CLR PASS INIT PASS COUNT
       LDX #EXIT1
       STX $FFFA RESET SWI VECTOR
START1 LDS #STACK INIT STACK POINTER
       SPC 1  
*      INZ DIRECT (ADDRESSED) CONSTANTS  
       CLRA   
       STAA K0
       STAA K0+1
       STAA KD1   
       INCA   
       STAA KD1+1 
       STAA KD400 
       STAA K1
       LDAA #$90  
       STAA KD400+1   
       SPC 1  
       ADDA #$BF  
       ADDA K1 (A) 50 
       ADDA EK200 (A) 18  
       SPC 1  
        LDX EKX   
       ADDA 8,X (A) 20
       CMPA #$20  
       BNE *  
       CLRA   
       BNE *  
       COMA   
        INCA  
       NEG A  
       BNE *  
       SPC 1  
       LDAA 11,X
       TAB
       ASLA   
       ASLA   
       ASLA   
       ASLA   
       ABA
       INCA   
       SPC 1  
       BEQ *+4
       WAI FAILURE
       WAI FAILURE
       SPC 1  
       LDAA #0
       TAP
       BCC *+4
        BRA * 
       BCS *  
       BEQ *  
       BGE  *+4   
       BRA *  
       BGT  *+4   
       BRA *  
       BHI *+4
       BRA *  
       BLE *  
       BLS *  
       BLT *  
       BMI *  
       BNE *+4
       BRA *  
       BPL *+4
       BRA *  
       BVC *+4
       BRA *  
       BVS *  
       SPC 1  
       LDX #$FFFE 
       INX
       CPX #$FFFF 
       BNE *  
       SPC 1  
       LDX KD1
       BEQ *  
       DEX   (X) 0000 
       BNE *  
       SPC 1  
       LDX EKX
       LDX 2,X  (X) 0203  
       CPX #$0203 
       BNE *  
       SPC 1  
       CLR DTEMP  
       INC DTEMP = 01 
       ASL DTEMP = 02 
       ROL DTEMP = 04 
       LDAA DTEMP (A) 04  
       CMPA #4
       BNE *  
       SPC 1  
       ADDA DTEMP (A) 08  
       CMPA #8
        BNE * 
       SUBA K1 (A) 07 
       SUBA EKB0+8  (A) FF
       TST B  
       SPC 1  
       LDAB #$AA  
       PSH B  
       CLR B  
       BNE *  
       PULB   
       BNE *  
       CMPB #$AA  
       BNE *  
       SPC 1  
SKIP   EQU *  
       LDAA #$80  
       SPC 1  
       PSHA   
       CLRA   
       PULA   
       BNE *  
       TSTA   
       BPL *  
       ASLA  (A) 00   
       TPA
       CMPA #$C7  
       BNE *  
       LDAB #$55  
       COMB   
       ASLB   
       BVC *  
       BCC *  
       CLC
       ROL B  (B) FD  
       EORB #7  (B) AF
       SUBB K1 (B) AE 
       ANDB #$C3 (B) 82   
       LSRB (B) 41
       ASRB   
       TBA
       RORB   
       NEGB   
       CMPB #$70  
       BNE *  
       SPC 2  
       LSRA   
       RORA   
       SEC
       ASRA   
       ASRA   
       SEC
       ROLA (A) 05
       ABA (A) 75  (B) 70 
       CMPA #$75  
       BNE *  
       CMPB #$70  
       BNE *  
       CLRA   
       ORAA #$5A  
        SUBA #$F0 (A) 6A C 
       SBCA #1 (A) 68 
       CMPA #$68  
       BNE *  
       SPC 1  
       CLRB   
       ORA B EKB0  
       ADDB #$F0  
       ANDB #$36 (B) 38   
       BITB #$63  
       BEQ *  
       SPC 1  
       CLR DTEMP  
       CLR DTEMP+1
       LDX #0 
       LDS #STACK 
       CPX #0 
       BNE *  
       STS DTEMP  
       STS ETEMP  
       LDX ETEMP  
       INX
       TXS
        STS DTEMP 
       LDX DTEMP  
       CPX #STACK 
       BNE *  
       CPX DTEMP  
       BNE *  
       CPX ETEMP  
       BNE *  
       CLR ETEMP  
       CLR ETEMP+1
       STX ETEMP  
       CPX ETEMP  
       BNE *  
       SPC 1  
       LDX #$F00F 
       STX DTEMP  
       LDAA DTEMP 
       ADDA DTEMP+1   
       CMPA #$FF  
       BNE *  
       LDX #ETEMP 
       STX ETEMP  
       CPX X  
       BNE *  
       CPX 1,X
       BEQ *  
       SPC 1  
       LDAA #$3F  
       TAP
       CLC
       TPA
       CMPA #$FE  
       BNE *  
       TAP
       CLV
       TPA
       CMPA #$FC  
       BNE *  
       TAP
       CLI
       TPA
       CMPA #$EC
       BNE *  
       SPC 1  
       CLRA   
       TAP
       SEC
       SEI
       SEV
       TPA
       CMPA #$D3  
       BNE *  
       SPC 1  
*      DAA   
       LDA A #$0  
       ADDA #$99  
       DAA  (A) 99
       ADC A #$01 
       DAA (A) 00 ZVC 
       ADCA #$88  
       DAA (A) 89 
       ADCA #$09  
       DAA (A) 98 
       ADCA #$25  
       DAA (A) 23 C   
       ADCA #$75  
       DAA (A) 99 
       SEC (A) 99 B   
       ADCA #$99  
       DAA (A) 99 C   
       BCC *  
       CMPA #$99  
       BNE *  
       SPC 2  
       LDX #ETEMP 
       STX X  
       LDAA AETEMP
       LDAB AETEMP+1  
       SUBB 1,X   
       SUBA X 
       BNE *  
       CBA
       BNE *  
       SPC 3  
*      A-B=A  00-03=FD   
       CLRA   
       LDAB #3
       SBA
       BCC *  
       CMPA #$FD  
       BNE *  
       CMPB #3
       BNE *  
       SPC 3  
       LDX #ETEMP 
       CLR X  
       LDAA X 
       BNE *  
       INC X  
       ROL X  
       ASL X  04  
       LDAA #4
       CMPA X 
       BNE *  
       DEC X  03  
       ORAA X (A) 07  
       CMPA #$07  
       BNE *  
       COM X  
       ASR X FC
       ROR X 7F
       LSR X 3F   
       LDAA #$3F  
       CMPA X 
       BNE *  
       BRA PAST   
       PAGE   
       FCB $55
*      TEST PATTERN FOR PRODUCTION TEST OF MC6830D   
       SPC 1  
SUB7   LDAA #3
       PSHA IXL 03
       INCA   
       PSHA IXH 04
       INCA   
       PSH A A 05 
       INCA   
       PSHA B 06  
       INCA   
       PSHA CC 07 
       RTI
EKX    FDB EKB0
       FCB $55,$AA
       SPC 2  
       FCB 0,0,0,0,0,0,0,0
       FCB 0,0,0,0,0,0
EKB0   FCB 0,1,2,3,4,5,6,7,8,9
       SPC 1  
EK200  FCB 200   
       SPC 1  
       FCB 15,16  
       PAGE   
AETEMP FDB ETEMP ADDR OF ETEMP  
PAST   EQU *  
       BSR SUB7   
       CMPA #5
       BNE *  
       CMPB #6
       BNE *  
       CPX #$0403 
       BNE *  
       LDX #EKB0  
       CLRB   
       ADDB EK200 
       ADDB 3,X   
       SUBB #203  
       BNE *  
       ORAB EK200 
       ORAB 11,X  
       CMPB #$CF  
       BNE *  
       SUBB EK200 
       SBCB 7,X  (B) 00   
       BNE *  
       SPC 2  
       CLR ETEMP  
       DEC ETEMP  
       CLC
       ROR ETEMP  
       ASR ETEMP  
       LSR ETEMP  
       NEG ETEMP  
       LDAB ETEMP 
       SUBB #$E1  
       BNE *  
       COM ETEMP  
       LDAB #$1E  
       CMPB ETEMP 
       BNE *  
       LDAB #$E1  
       BITB ETEMP 
       BNE *  
       SPC 2  
       LDX #STACK 
       STX ETEMP+2
       LDX #ETEMP 
       LDS 2,X
       CPX #ETEMP 
       BNE *  
       TSX
       CPX #STACK+1   
       BNE *  
       SPC 1  
       LDX #ETEMP 
       STS X  
       LDX ETEMP  
       CPX #STACK 
       BNE *  
       SPC 2  
       LDX #EKB0  
       LDAB #$F0  
       EORB #$FF  
       CMPB #$0F  
       BNE *  
       TST 1,X
       BEQ *  
       ADCB 11,X  
       CMPB  #$1E 
       BNE *  
       ANDB 7,X   
       CMPB 6,X   
       BNE *  
       CMPB #6
       BNE *  
       BITB 2,X   
       BEQ *  
       CMPB #6
       BNE *  
       SPC 1  
       LDAB 11,X  
       CMPB #15   
       BNE *  
       LDX #ETEMP 
       STAB X 
       CLC
       SBCB ETEMP 
       BNE *  
       SEC
       TST ETEMP  
       BCS *  
       NEG X  
       CLR B  
       ORAB #$F1  
       EORB X 
       BNE *  
       SEC
       TST X  
       BCS *  
       BEQ *  
       SPC 2  
       CLR B  
       EORB EK200 
       CMPB #200  
       BNE *  
       STAB ETEMP 
       SEC
       ADCB ETEMP 
       BVS *  
       CMPB #145  
       BNE *  
       SPC 2  
       LDS #STACK 
       LDX #THERE 
       JMP 3,X
       BRA *  
       WAI
THERE  WAI   
       WAI
       WAI
       BRA *+4
       BRA *  
       CLRA   
       BSR SUB3   
       JSR SUB3   
       LDX #SUB3  
       DEX
       JSR 1,X
       CMPA #9
       BNE *  
       JSR SUB3   
       CMPA #12   
       BNE *  
       BRA OVER   
       WAI FAILURE
       WAI FAILURE
       SPC 3  
SUB3   ADDA #3
       RTS
       SPC 1  
       SPC 3  
OVER   NOP
       SPC 2  
       LDX #ETEMP 
       CLRA   
       ORAA EK200 (A) C8  
       STAA X (ETEMP) C8  
       BITA X 
       BEQ *  
       CLC
       ADCA X 
       BCC *  
       ADCA X (A) 59 VC   
       BCC *  
       BVC *  
       ANDA X (A) 48  
       BCC *  
       BVS *  
       SEC
       SBCA X (A) 7F  
       CMPA #$7F  
       BNE *  
       LDAA #$C8 (A) C8   
       EORA X 
       BNE *  
       SPC 1  
       LDAA K1 (A) 01 
       EORA K1 (A) 00 
       BNE *  
       ORAA K1 (A) 01 
       SEV
       BITA #1
       BEQ *  
       BVS *  
       CMPA K1
       BNE *  
       EORA K1  (A) 00
       BNE *  
       SPC 1  
       LDAA #$FF (A) FF   
       SEC
       SBCA K1 (A) FD 
       CMPA #$FD  
       BNE *  
       ADCA K1 (A) FE 
       CMPA #$FE  
       BNE *  
       STAA DTEMP 
       ANDA #0
       BNE *  
       ORAA DTEMP 
       CMPA #$FE  
       BNE *  
       BITA K1
       BNE *  
       ANDA K1
       BNE *  
       SPC 2  
       LDAA #$1F  
       STAA ETEMP 
       SEC
       ADCA ETEMP 
       EORA #$3F  
       BNE *  
       LDAA #$1F (A) 1F   
        CMPA ETEMP
       BNE *  
       SEC
       SBCA ETEMP (A) FF  
       BCC *  
       ANDA ETEMP (A) 1F  
       CMPA #$1F  
       BNE *  
       EORA ETEMP 
       BNE *  
       SPC 2  
       LDAB K1 (B) 01 
       CLC
       ADCB #$44 (B) 45   
       STAB DTEMP 
       CMPB DTEMP 
       BNE *  
       BCS *  
       ADDB K1 (B) 46 
       BITB DTEMP 
       BEQ *  
       ANDB K1 (B) 00 
       BNE *  
       ORAB DTEMP (B) 45  
       CMPB #$45  
       BNE *  
       EORB DTEMP 
       BNE *  
       ADDB DTEMP (B) 45  
       SEC
       ADCB DTEMP (B) 8B  
       BVC *  
       CMPB #$8B  
       BNE *  
       SBCB DTEMP (B) 46  
       CMPB #$46  
       BNE *  
       SEC
       ADCB #$B9  
       BNE *  
       SEC
       SBCB #0
       CMPB #$FF  
       BNE *  
       AND B EK200 (B) C8 
       CMPB #$C8  
       BNE *  
       TST PASS THIS FIRST PASS
       BEQ ENDPAS YES
       LDX INTRV SHOULD MESSAGE BE PRINTED
       BEQ ENDPAS NO
       LDX INTCNT NO. PASSES CPT
       CPX INTRV TIME TO PRINT
       BNE INXCT
       TST CNT
       BMI PRTX GO PRINT
       LDX #0 INIT COUNTER
       DEC CNT
       BEQ PRTX GO PRINT
INXCT  EQU *
       INX 
       STX INTCNT SAVE UPDATED COUNT
       BRA ENDPAS
PRTX   CLR INTCNT
       CLR INTCNT+1
       TST CNT
       BMI PRTX1
       LDAA #120
       STAA CNT
PRTX1  EQU *
       LDX #MSG2 PRINT X
       JSR PDATA
ENDPAS RMB 0
       SPC 1  
*      STROBE FOR ADDED HARDWARE 
        STAB $8020
       SWI EXIT THIS PGM  
       SPC 1  
INTRV  FDB 0
INTCNT RMB 2
CNT    RMB 1
TEMP   RMB 1
PASS   FCB 0
MSG1   FCC /ALL IS WELL ON FIRST PASS/
       FDB $A,$D
       FCC /TO CONTINUE ENTER ONE OF THE/
       FDB $A,$D
       FCC /FOLLOWING:/
       FDB $A,$D
MSG3   FCC /L = VERIFY RUN ONCE AN HOUR/
       FDB $A,$D
       FCC /S = VERIFY RUN EVERY THIRTY SECONDS/
       FDB $A,$D
       FCC /0 = DO NOT VERIFY. CYCLE CONTINUOUSLY/
       FDB $0A0D
       FDB $20,$4
MSG2   FCC /X/
       FDB $20,$4
INT30  FDB $3A98
       SPC 1  
*      EXIT BY IRQ (I/O) INTERRUPT   
EXIT2  BRA * ILEGAL INTERUPT
       SPC 3  
       ORG $FFF8
       FDB EXIT2 IRQ (I/O) VECTOR 
       FDB EXIT1 SOFTWARE INTERRUPT VECTOR
       FDB EXIT2 NMI VECTOR
       FDB START RESTART VECTOR   
       END
       MON
