URL
https://opencores.org/ocsvn/socgen/socgen/trunk
Subversion Repositories socgen
[/] [socgen/] [trunk/] [Projects/] [opencores.org/] [Mos6502/] [sw/] [prog_test/] [prog_test.asm] - Rev 131
Compare with Previous | Blame | View Log
include ../io_module/io_module.asm;; page zero variables used during testc_test = $40 ;n_test = $41 ;v_test = $42 ;z_test = $43 ;pointer = $44 ;* = $c000 ; assemble at $f000codejmp .nmi_vecjmp .irq_vec.start noplda #$00sta $04sta $05sta $06sta $07lda #$00sta io_base+io_gpio_0lda io_base+io_gpio_0lda #$01sta io_base+io_gpio_0lda io_base+io_gpio_0jmp .lab_00lda #$00jmp .error.lab_00 lda #$01sta io_base+io_gpio_0lda io_base+io_gpio_0lda #$02sta io_base+io_gpio_0lda io_base+io_gpio_0clcbcc .lab_01lda #$01jmp .error.lab_01 lda #$03sta io_base+io_gpio_0lda io_base+io_gpio_0secbcc .lab_02jmp .lab_025.lab_02 lda #$02jmp .error.lab_025 lda #$04sta io_base+io_gpio_0lda io_base+io_gpio_0secbcs .lab_03lda #$01jmp .error.lab_03 clcbcs .lab_04jmp .lab_045.lab_04 lda #$02jmp .error.lab_045 lda #$05sta io_base+io_gpio_0lda #$05cmp #$04beq .lab_05cmp #$05beq .lab_06.lab_05 lda #$03jmp .error.lab_06 lda #$06sta io_base+io_gpio_0lda #$c4cmp #$e4bne .lab_07lda #$04jmp .error.lab_07 cmp #$C4bne .lab_08jmp .lab_085.lab_08 lda #$05jmp .error.lab_085 lda #$07sta io_base+io_gpio_0ldx #$42cpx #$32beq .lab_09cpx #$42beq .lab_10.lab_09 lda #$06jmp .error.lab_10 lda #$08sta io_base+io_gpio_0ldy #$C3cpy #$D3beq .lab_11cpy #$C3beq .lab_12.lab_11 lda #$07jmp .error.lab_12 lda #$09sta io_base+io_gpio_0ldx #$00dexcpx #$FFbeq .lab_13lda #$08jmp .error.lab_13 lda #$0Asta io_base+io_gpio_0ldy #$00deycpy #$FFbeq .lab_14lda #$09jmp .error.lab_14 lda #$0Bsta io_base+io_gpio_0ldx #$0Finxcpx #$10beq .lab_15lda #$10jmp .error.lab_15 lda #$0Csta io_base+io_gpio_0ldy #$7Finycpy #$80beq .lab_16lda #$11jmp .error.lab_16 lda #$0Dsta io_base+io_gpio_0lda #$EDjsr .lab_165cmp #$42beq .lab_17lda #$12jmp .error.lab_165 lda #$42rts.lab_17 lda #$0Esta io_base+io_gpio_0lda #$35taxcpx #$35beq .lab_18lda #$12jmp .error.lab_18 lda #$0Fsta io_base+io_gpio_0lda #$76taycpy #$76beq .lab_19lda #$13jmp .error.lab_19 lda #$10sta io_base+io_gpio_0ldx #$52txacmp #$52beq .lab_20lda #$14jmp .error.lab_20 lda #$11sta io_base+io_gpio_0ldy #$52tyacmp #$52beq .lab_21lda #$15jmp .error.lab_21 lda #$12sta io_base+io_gpio_0clclda #$23adc #$45cmp #$68beq .lab_22lda #$16jmp .error.lab_22 seclda #$42adc #$63cmp #$A6beq .lab_23lda #$17jmp .error.lab_23 lda #$13sta io_base+io_gpio_0lda #$36and #$f0cmp #$30beq .lab_24lda #$18jmp .error.lab_24 lda #$14sta io_base+io_gpio_0clclda #$36asl acmp #$6Cbeq .lab_25lda #$19jmp .error.lab_25 lda #$15sta io_base+io_gpio_0lda #$89eor #$96cmp #$1Fbeq .lab_26lda #$20jmp .error.lab_26 lda #$16sta io_base+io_gpio_0clclda #$52lsr acmp #$29beq .lab_27lda #$21jmp .error.lab_27 lda #$17sta io_base+io_gpio_0lda #$B6ora #$4Dcmp #$FFbeq .lab_28lda #$22jmp .error.lab_28 lda #$18sta io_base+io_gpio_0clclda #$23rol acmp #$46beq .lab_29lda #$23jmp .error.lab_29 seclda #$42rol acmp #$85beq .lab_30lda #$24jmp .error.lab_30 lda #$19sta io_base+io_gpio_0clclda #$23ror acmp #$11beq .lab_31lda #$25jmp .error.lab_31 seclda #$42ror acmp #$A1beq .lab_32lda #$26jmp .error.lab_32 lda #$20sta io_base+io_gpio_0seclda #$86sbc #$45cmp #$41beq .lab_33lda #$27jmp .error.lab_33 clclda #$89sbc #$23cmp #$65beq .lab_34lda #$28jmp .error.lab_34 lda #$21sta io_base+io_gpio_0lda #$42sta $0200lda #$9Fsta $0201lda $0200cmp #$42beq .lab_35lda #$29jmp .error.lab_35 lda $0201cmp #$9Fbeq .lab_36lda #$30jmp .error.lab_36 lda #$22sta io_base+io_gpio_0lda #$94sta $0201lda #$41sta $0200lda #$53clcadc $0200cmp $0201beq .lab_37lda #$31jmp .error.lab_37 lda #$8Dsta $0201lda #$98sta $0200lda #$F4secadc $0200cmp $0201beq .lab_38lda #$32jmp .error.lab_38 lda #$23sta io_base+io_gpio_0ldy #$84sty $0201ldx #$B4stx $0200lda #$86and $0200cmp $0201beq .lab_39lda #$33jmp .error.lab_39 lda #$24sta io_base+io_gpio_0ldx #$55stx $0200asl $0200lda $0200cmp #$AAbeq .lab_40lda #$34jmp .error.lab_40 lda #$25sta io_base+io_gpio_0lda #$53sta $0200lda #$00ldx #$53cpx $0200beq .lab_41lda #$35jmp .error.lab_41 lda #$26sta io_base+io_gpio_0lda #$45sta $0200lda #$00ldy #$45cpy $0200beq .lab_42lda #$36jmp .error.lab_42 lda #$27sta io_base+io_gpio_0lda #$EFsta $0200dec $0200lda #$EEcmp $0200beq .lab_43lda #$37jmp .error.lab_43 lda #$01sta $0200dec $0200beq .lab_44lda #$38jmp .error.lab_44 lda #$28sta io_base+io_gpio_0lda #$EFsta $0200inc $0200lda #$F0cmp $0200beq .lab_45lda #$39jmp .error.lab_45 lda #$FFsta $0200inc $0200beq .lab_46lda #$40jmp .error.lab_46 lda #$29sta io_base+io_gpio_0ldy #$32sty $0201ldx #$B4stx $0200lda #$86eor $0200cmp $0201beq .lab_47lda #$41jmp .error.lab_47 lda #$2Asta io_base+io_gpio_0ldy #$B6sty $0201ldx #$B4stx $0200lda #$86ora $0200cmp $0201beq .lab_48lda #$42jmp .error.lab_48 lda #$2Bsta io_base+io_gpio_0clcldx #$AAstx $0200rol $0200bcs .lab_49lda #$43jmp .error.lab_49 lda $0200cmp #$54beq .lab_50lda #$44jmp .error.lab_50 lda #$2Csta io_base+io_gpio_0clcldx #$55stx $0200ror $0200bcs .lab_51lda #$45jmp .error.lab_51 lda $0200cmp #$2Abeq .lab_52lda #$46jmp .error.lab_52 lda #$2Dsta io_base+io_gpio_0ldx #$96stx $0200lsr $0200lda $0200cmp #$4Bbeq .lab_53lda #$47jmp .error.lab_53 lda #$2Esta io_base+io_gpio_0ldx #$42stx $0200ldx #$9Fstx $0201ldx $0200cpx #$42beq .lab_54lda #$48jmp .error.lab_54 ldx $0201cpx #$9Fbeq .lab_55lda #$49jmp .error.lab_55 lda #$2Fsta io_base+io_gpio_0ldy #$34sty $0200ldy #$75sty $0201ldy $0200cpy #$34beq .lab_56lda #$4Ajmp .error.lab_56 ldy $0201cpy #$75beq .lab_57lda #$4Bjmp .error.lab_57 lda #$30sta io_base+io_gpio_0lda #$12sta $0201lda #$41sta $0200lda #$53secsbc $0200cmp $0201beq .lab_58lda #$4Cjmp .error.lab_58 lda #$5Bsta $0201lda #$98sta $0200lda #$F4clcsbc $0200cmp $0201beq .lab_59lda #$4Djmp .error.lab_59 lda #$31sta io_base+io_gpio_0lda #$42phalda #$EDphalda #$BEphalda #$00placmp #$BEbne .lab_60placmp #$EDbne .lab_60placmp #$42bne .lab_60jmp .lab_605.lab_60 lda #$4Ejmp .error.lab_605 lda #$32sta io_base+io_gpio_0ldx #$00clclda #$03sta $0200,Xadc #$07inxsta $0200,Xadc #$07inxsta $0200,Xadc #$07inxsta $0200,Xadc #$07inxsta $0200,Xadc #$07inxsta $0200,Xadc #$07inxsta $0200,Xldx #$00clclda $0200,Xcmp #$03bne .lab_61inxlda $0200,Xcmp #$0Abne .lab_61inxlda $0200,Xcmp #$11bne .lab_61inxlda $0200,Xcmp #$18bne .lab_61inxlda $0200,Xcmp #$1Fbne .lab_61inxlda $0200,Xcmp #$26bne .lab_61inxlda $0200,Xcmp #$2Dbne .lab_61jmp .lab_615.lab_61 lda #$4Fjmp .error.lab_615 lda #$33sta io_base+io_gpio_0ldy #$00clclda #$03sta $0200,Yadc #$07inysta $0200,Yadc #$07inysta $0200,Yadc #$07inysta $0200,Yadc #$07inysta $0200,Yadc #$07inysta $0200,Yadc #$07inysta $0200,Yldy #$00clclda $0200,Ycmp #$03bne .lab_62inylda $0200,Ycmp #$0Abne .lab_62inylda $0200,Ycmp #$11bne .lab_62inylda $0200,Ycmp #$18bne .lab_62inylda $0200,Ycmp #$1Fbne .lab_62inylda $0200,Ycmp #$26bne .lab_62inylda $0200,Ycmp #$2Dbne .lab_62jmp .lab_625.lab_62 lda #$50jmp .error.lab_625 lda #$34sta io_base+io_gpio_0lda #$52sta $0200lda #$24sta $0201lda #$78sta $0202lda #$00ldx #$00clcadc $0200,Xclcinxadc $0200,Xclcinxadc $0200,Xcmp #$EEbeq .lab_63lda #$51jmp .error.lab_63 lda #$35sta io_base+io_gpio_0lda #$68sta $0200lda #$13sta $0201lda #$95sta $0202lda #$00ldy #$00clcadc $0200,Yclcinyadc $0200,Yclcinyadc $0200,Ycmp #$10beq .lab_64lda #$52jmp .error.lab_64 lda #$36sta io_base+io_gpio_0lda #$34sta $0200lda #$54sta $0201lda #$97sta $0202lda #$FFldy #$00and $0200,Yinyand $0200,Yinyand $0200,Ycmp #$14beq .lab_65lda #$53jmp .error.lab_65 lda #$37sta io_base+io_gpio_0lda #$34sta $0200lda #$54sta $0201lda #$97sta $0202lda #$FFldx #$00and $0200,Xinxand $0200,Xinxand $0200,Xcmp #$14beq .lab_66lda #$54jmp .error.lab_66 lda #$38sta io_base+io_gpio_0lda #$64sta $00lda #$39clcadc $00cmp #$9Dbeq .lab_67lda #$55jmp .error.lab_67 lda #$39sta io_base+io_gpio_0lda #$95sta $00lda #$76sta $01lda #$45sta $02ldx #$00lda #$00clcadc $00,Xinxclcadc $00,Xinxclcadc $00,Xcmp #$50beq .lab_68lda #$56jmp .error.lab_68 lda #$3Asta io_base+io_gpio_0lda #$64sta $00lda #$39and $00cmp #$20beq .lab_69lda #$57jmp .error.lab_69 lda #$3Bsta io_base+io_gpio_0lda #$95sta $00lda #$76sta $01lda #$45sta $02ldx #$00lda #$FFand $00,Xinxand $00,Xinxand $00,Xcmp #$04beq .lab_70lda #$58jmp .error.lab_70 lda #$3Csta io_base+io_gpio_0lda #$97sta $0200lda #$78sta $0201lda #$45sta $0202ldx #$00lda #$97cmp $0200,Xbne .lab_71lda #$78inxcmp $0200,Xbne .lab_71lda #$45inxcmp $0200,Xbne .lab_71jmp .lab_715.lab_71 lda #$59jmp .error.lab_715 lda #$3Dsta io_base+io_gpio_0lda #$97sta $0200lda #$78sta $0201lda #$45sta $0202ldy #$00lda #$97cmp $0200,Ybne .lab_72lda #$78inycmp $0200,Ybne .lab_72lda #$45inycmp $0200,Ybne .lab_72jmp .lab_725.lab_72 lda #$5Ajmp .error.lab_725 lda #$3Esta io_base+io_gpio_0lda #$97sta $0200lda #$78sta $0201lda #$45sta $0202ldx #$00lda #$97cmp $0200,Xbne .lab_73lda #$78inxcmp $0200,Xbne .lab_73lda #$45inxcmp $0200,Xbne .lab_73jmp .lab_735.lab_73 lda #$5Bjmp .error.lab_735 lda #$3Fsta io_base+io_gpio_0lda #$95sta $02lda #$00lda #$95cmp $02beq .lab_74lda #$5Cjmp .error.lab_74 lda #$75sta $02lda #$67cmp $02bne .lab_75lda #$5Djmp .error.lab_75 lda #$40sta io_base+io_gpio_0lda #$36sta $02lda #$00ldx #$36cpx $02beq .lab_76lda #$5Ejmp .error.lab_76 lda #$57sta $02ldx #$39cpx $02bne .lab_77lda #$5Fjmp .error.lab_77 lda #$41sta io_base+io_gpio_0lda #$75sta $02lda #$00ldy #$75cpy $02beq .lab_78lda #$60jmp .error.lab_78 lda #$43sta $02ldy #$24cpy $02bne .lab_79lda #$61jmp .error.lab_79 lda #$42sta io_base+io_gpio_0nop ; was clilda #$00sta $05lda #$01sta $04lda #$10sta io_base+io_tim0_endsta io_base+io_tim0_startldx #$00inxinxinxinxinxinxinxinxinxinxinxinxinxinxinxinxcpx #$10beq .lab_80lda #$62jmp .error.lab_80 lda $05cmp #$00 ; was 1 if int servicedbeq .lab_81lda #$63jmp .error.lab_81 nop ; was sei to disable interruptlda #$00sta $05lda #$01sta $04lda #$10sta io_base+io_tim0_endsta io_base+io_tim0_startldx #$00inxinxinxinxinxinxinxinxinxinxinxinxinxinxinxinxcpx #$10beq .lab_82lda #$62jmp .error.lab_82 lda $05cmp #$00beq .lab_83lda #$63jmp .error.lab_83 lda #$00sta $04sta io_base+io_tim0_endlda #$43sta io_base+io_gpio_0lda #$00sta $07lda #$01sta $06lda #$10sta io_base+io_tim0_end ; change to tim1 for nmista io_base+io_tim0_start ; change to tim1 for nmildx #$00inxinxinxinxinxinxinxinxinxinxinxinxinxinxinxinxcpx #$10beq .lab_84lda #$64jmp .error.lab_84 lda $07cmp #$00 ; change to 1 if nmi servicedbeq .lab_85lda #$65jmp .error.lab_85 lda #$00sta $06sta io_base+io_tim1_endlda #$44sta io_base+io_gpio_0jmp .lab_865.lab_86 jmp .lab_866.lab_865 secbcs .lab_86nopnopnoplda #$66jmp .error.lab_866 lda #$45sta io_base+io_gpio_0seclda #$34sbc #$75bcc .lab_87lda #$67jmp .error.lab_87 lda #$46sta io_base+io_gpio_0tsxstx $00lda #$42phalda #$00tsxinxlda $0100,Xcmp #$42beq .lab_88lda #$68jmp .error.lab_88 lda #$69sta $0112lda #$00ldx #$11txsplacmp #$69beq .lab_89lda #$69jmp .error;; Break test;;.lab_89 ldx $00txslda #$47sta io_base+io_gpio_0lda #$24 ; keep int disabledphaplpstx $08lda #$00sta $05lda #$01sta $04sta $06ldx #$59brk ; was brkinxlda #$00sta $04lda $05cmp #$01 ; was 1 if brk takenbeq .lab_92lda #$70jmp .error.lab_92 lda #$48sta io_base+io_gpio_0lda #$53sta $30lda #$00ldx #$40lda $F0,Xcmp #$53beq .lab_93lda #$73jmp .error.lab_93 lda #$49sta io_base+io_gpio_0clclda #$FFadc #$01bcs .lab_94lda #$74jmp .error.lab_94 lda #$4Asta io_base+io_gpio_0seclda #$7Fsbc #$7Ebvc .lab_95lda #$75jmp .error.lab_95 lda #$4Bsta io_base+io_gpio_0lda #$FFphaplpphpplacmp #$FFbeq .lab_96lda #$76jmp .error.lab_96 lda #$4Csta io_base+io_gpio_0lda #$40ldx #$00sta $0200,Xinxlsr asta $0200,Xinxlsr asta $0200,Xinxlsr asta $0200,Xinxlsr asta $0200,Xinxlsr asta $0200,Xinxlsr asta $0200,Xldx #$00asl $0200,Xinxasl $0200,Xinxasl $0200,Xinxasl $0200,Xinxasl $0200,Xinxasl $0200,Xinxasl $0200,Xlda #$00clccldadc $0200adc $0201adc $0202adc $0203adc $0204adc $0205adc $0206cmp #$FEbeq .lab_97lda #$77jmp .error.lab_97 lda #$4Dsta io_base+io_gpio_0ldx #$42ldy #$00stx $0200ldx #$9Fstx $0201ldx $0200,Ycpx #$42beq .lab_98lda #$48jmp .error.lab_98 ldx $0201,Ycpx #$9Fbeq .lab_99lda #$78jmp .error.lab_99 lda #$4esta io_base+io_gpio_0ldy #$00ldx #$00lda #$00sta c_teststa n_teststa v_teststa z_teststa pointerlda #$ffsta pointer+1clc.lab_100 adc (pointer,x)bpl .lab_105bne .lab_103inc n_testinc z_testjmp .lab_110.lab_103 inc n_testjmp .lab_110.lab_105 bne .lab_110inc z_test.lab_110 bcc .lab_115inc c_test.lab_115 bvc .lab_120inc v_test.lab_120 inc pointerbne .lab_100cmp #$07bne .errorlda c_testcmp #$4ebne .errorlda n_testcmp #$90bne .errorlda v_testcmp #$32bne .errorlda z_testcmp #$03bne .error;; pass end loop.good seilda #$FFsta io_base+io_gpio_0lda #$FFsta io_base+io_gpio_1jmp .end_lp;; error & end loop.error seista io_base+io_gpio_1.end_lp lda #$00phaplpjmp .end_lp;; Interrupt service routine.nmi_vec phatxaphatyaphatsxinxinxinxinxlda $0100,Xsta $08lda $04cmp #$00bne .nmi_001lda #$E0jmp .error.nmi_001 sta io_base+io_tim0_endinc $05platayplataxplarti;; Interrupt service routine.irq_vec phatxaphatyaphalda $06cmp #$00bne .irq_001lda #$E0jmp .error.irq_001 sta io_base+io_tim1_endinc $07inc $05platayplataxplarti* = $ce00 ; addition table.table db $01,$02,$03,$04,$05,$06,$07,$08 ;db $09,$a1,$b2,$c3,$d4,$e5,$f6,$07 ;db $80,$09,$01,$02,$03,$04,$05,$06 ;db $70,$8a,$b9,$c1,$d2,$e3,$f4,$05 ;db $60,$70,$80,$09,$01,$02,$03,$04 ;db $50,$6a,$7b,$8c,$d9,$e1,$02,$03 ;db $40,$50,$60,$70,$80,$09,$f1,$00 ;db $30,$4a,$5b,$6c,$7d,$8e,$09,$01 ;db $20,$30,$40,$50,$60,$70,$8f,$09 ;db $19,$2a,$3b,$4c,$5d,$6e,$70,$80 ;db $08,$19,$20,$30,$40,$50,$6f,$70 ;db $07,$a8,$19,$2c,$3d,$4e,$50,$60 ;db $06,$07,$b8,$19,$20,$30,$4f,$50 ;db $05,$a6,$07,$08,$19,$2e,$30,$40 ;db $04,$05,$b6,$c7,$08,$19,$2f,$30 ;db $03,$a4,$05,$06,$d7,$08,$19,$20 ;db $02,$03,$b4,$c5,$06,$e7,$f8,$19 ;db $00,$a2,$03,$04,$d5,$06,$07,$08 ;db $91,$00,$b2,$c3,$04,$e5,$f6,$07 ;db $80,$91,$00,$02,$d3,$04,$05,$06 ;db $70,$8a,$91,$c0,$02,$e3,$f4,$05 ;db $60,$70,$8b,$91,$d0,$02,$03,$04 ;db $50,$6a,$70,$8c,$91,$e0,$f2,$03 ;db $40,$50,$6b,$70,$80,$91,$00,$02 ;db $30,$4a,$50,$6c,$7d,$8e,$91,$00 ;db $20,$30,$4b,$50,$60,$70,$8f,$91 ;db $00,$2a,$30,$4c,$5d,$6e,$70,$80 ;db $10,$00,$2b,$30,$40,$50,$6f,$70 ;db $00,$1a,$00,$2c,$3d,$4e,$50,$60 ;db $00,$00,$1b,$00,$20,$30,$4f,$50 ;db $00,$0a,$00,$1c,$0d,$2e,$30,$40 ;db $00,$00,$0b,$00,$10,$00,$2f,$00 ;* = $cf00 ; addition table.table2 db $01,$02,$03,$04,$05,$06,$07,$08 ;db $09,$a1,$b2,$c3,$d4,$e5,$f6,$07 ;db $80,$09,$01,$02,$03,$04,$05,$06 ;db $70,$8a,$b9,$c1,$d2,$e3,$f4,$05 ;db $60,$70,$80,$09,$01,$02,$03,$04 ;db $50,$6a,$7b,$8c,$d9,$e1,$02,$03 ;db $40,$50,$60,$70,$80,$09,$f1,$00 ;db $30,$4a,$5b,$6c,$7d,$8e,$09,$01 ;db $20,$30,$40,$50,$60,$70,$8f,$09 ;db $19,$2a,$3b,$4c,$5d,$6e,$70,$80 ;db $08,$19,$20,$30,$40,$50,$6f,$70 ;db $07,$a8,$19,$2c,$3d,$4e,$50,$60 ;db $06,$07,$b8,$19,$20,$30,$4f,$50 ;db $05,$a6,$07,$08,$19,$2e,$30,$40 ;db $04,$05,$b6,$c7,$08,$19,$2f,$30 ;db $03,$a4,$05,$06,$d7,$08,$19,$20 ;db $02,$03,$b4,$c5,$06,$e7,$f8,$19 ;db $00,$a2,$03,$04,$d5,$06,$07,$08 ;db $91,$00,$b2,$c3,$04,$e5,$f6,$07 ;db $80,$91,$00,$02,$d3,$04,$05,$06 ;db $70,$8a,$91,$c0,$02,$e3,$f4,$05 ;db $60,$70,$8b,$91,$d0,$02,$03,$04 ;db $50,$6a,$70,$8c,$91,$e0,$f2,$03 ;db $40,$50,$6b,$70,$80,$91,$00,$02 ;db $30,$4a,$50,$6c,$7d,$8e,$91,$00 ;db $20,$30,$4b,$50,$60,$70,$8f,$91 ;db $00,$2a,$30,$4c,$5d,$6e,$70,$80 ;db $10,$00,$2b,$30,$40,$50,$6f,$70 ;db $00,$1a,$00,$2c,$3d,$4e,$50,$60 ;db $00,$00,$1b,$00,$20,$30,$4f,$50 ;db $00,$0a,$00,$1c,$0d,$2e,$30,$40 ;db $00,$00;* = $cffa ; vectorsdw $c000 ;dw $c006 ;dw $c003 ;code
