From: Nick Downing Date: Thu, 17 Jul 2025 00:12:17 +0000 (+1000) Subject: Add possibly useful /UG012, it is a 6800 instruction set exerciser X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=8e79f268c624de42b42f8b2b5fcfceb714d89048;p=multi_emu.git Add possibly useful /UG012, it is a 6800 instruction set exerciser --- diff --git a/UG012 b/UG012 new file mode 100644 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