Add possibly useful /UG012, it is a 6800 instruction set exerciser
authorNick Downing <nick@ndcode.org>
Thu, 17 Jul 2025 00:12:17 +0000 (10:12 +1000)
committerNick Downing <nick@ndcode.org>
Thu, 17 Jul 2025 00:12:17 +0000 (10:12 +1000)
UG012 [new file with mode: 0644]

diff --git a/UG012 b/UG012
new file mode 100644 (file)
index 0000000..59874d9
--- /dev/null
+++ b/UG012
@@ -0,0 +1,705 @@
+* see https://test.dankohn.info/~myhome/projects/68HC11/AXIOM_HC11/Source/Users%20Group/UG012
+
+
+
+       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