OpenCores
URL https://opencores.org/ocsvn/socgen/socgen/trunk

Subversion Repositories socgen

[/] [socgen/] [trunk/] [Projects/] [opencores.org/] [Mos6502/] [sw/] [inst_test/] [inst_test.asm] - Rev 135

Go to most recent revision | Compare with Previous | Blame | View Log


        
  include ../io_module/io_module.asm
        
        ;;  page zero variables used during test

             * = $0060
t_cnt          db 00    
var_1          = $04    ;
var_2          = $05    ;
var_3          = $06    ;       
var_4          = $07    ;       
c_test         = $40    ;
n_test         = $41    ;
v_test         = $42    ;       
z_test         = $43    ;
pointer        = $44    ;       


        * = $c000 
               code

                   jmp  .nmi_vec               ;
                   jmp  .irq_vec               ;
        
.start             nop
                   lda #$34
                   sta t_cnt
                   lda #$00
                   sta var_1
                   sta var_2
                   sta var_3
                   sta var_4
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda io_base+io_gpio_0
                   inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda io_base+io_gpio_0
                   jmp .lab_00
                   lda #$00
                   jmp .error
.lab_00            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda io_base+io_gpio_0
                   inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda io_base+io_gpio_0
                   clc
                   bcc .lab_01
                   lda #$01
                   jmp .error
.lab_01            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda io_base+io_gpio_0        
                   sec
                   bcc .lab_02
                   jmp .lab_025
.lab_02            lda #$02
                   jmp .error
.lab_025           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda io_base+io_gpio_0
                   sec
                   bcs .lab_03
                   lda #$01
                   jmp .error

.lab_03            clc
                   bcs .lab_04
                   jmp .lab_045
.lab_04            lda #$02
                   jmp .error
.lab_045           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$05
                   cmp #$04
                   beq .lab_05
                   cmp #$05
                   beq .lab_06
.lab_05            lda #$03
                   jmp .error
.lab_06            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$c4
                   cmp #$e4
                   bne .lab_07
                   lda #$04
                   jmp .error
.lab_07            cmp #$C4 
                   bne .lab_08
                   jmp .lab_085
.lab_08            lda #$05
                   jmp .error
.lab_085           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$42
                   cpx #$32     
                   beq  .lab_09
                   cpx #$42
                   beq .lab_10
.lab_09            lda #$06
                   jmp .error
.lab_10            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$C3
                   cpy #$D3
                   beq .lab_11
                   cpy #$C3
                   beq  .lab_12
.lab_11            lda #$07
                   jmp  .error
.lab_12            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$00
                   dex
                   cpx #$FF
                   beq .lab_13
                   lda #$08 
                   jmp .error
.lab_13            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$00
                   dey
                   cpy #$FF
                   beq .lab_14
                   lda #$09
                   jmp .error
.lab_14            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$0F
                   inx
                   cpx #$10
                   beq  .lab_15 
                   lda #$10
                   jmp .error
.lab_15            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$7F
                   iny
                   cpy #$80
                   beq  .lab_16
                   lda #$11
                   jmp .error
.lab_16            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$ED
                   jsr  .lab_165
                   cmp #$42
                   beq  .lab_17
                   lda #$12
                   jmp .error
.lab_165           lda #$42
                   rts
.lab_17            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$35
                   tax
                   cpx #$35
                   beq .lab_18
                   lda #$12
                   jmp .error
.lab_18            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$76
                   tay
                   cpy #$76
                   beq  .lab_19
                   lda #$13
                   jmp .error
.lab_19            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$52
                   txa
                   cmp #$52
                   beq  .lab_20
                   lda #$14
                   jmp .error
.lab_20            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$52
                   tya
                   cmp #$52
                   beq  .lab_21
                   lda #$15
                   jmp .error
.lab_21            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   clc
                   lda #$23
                   adc #$45
                   cmp #$68
                   beq  .lab_22
                   lda #$16
                   jmp .error
.lab_22            sec
                   lda #$42
                   adc #$63
                   cmp #$A6
                   beq  .lab_23
                   lda #$17
                   jmp .error
.lab_23            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$36
                   and #$f0
                   cmp #$30
                   beq  .lab_24
                   lda #$18
                   jmp .error
.lab_24            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   clc
                   lda #$36
                   asl a
                   cmp #$6C
                   beq  .lab_25
                   lda #$19
                   jmp .error
.lab_25            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$89
                   eor #$96
                   cmp #$1F
                   beq  .lab_26
                   lda #$20
                   jmp .error
.lab_26            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   clc
                   lda #$52
                   lsr a
                   cmp #$29
                   beq  .lab_27
                   lda #$21
                   jmp .error
.lab_27            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$B6
                   ora #$4D
                   cmp #$FF
                   beq  .lab_28
                   lda #$22
                   jmp .error
.lab_28            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0 
                   clc
                   lda #$23
                   rol a
                   cmp #$46
                   beq  .lab_29
                   lda #$23
                   jmp .error
.lab_29            sec
                   lda #$42 
                   rol a
                   cmp #$85
                   beq  .lab_30
                   lda #$24
                   jmp .error
.lab_30            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   clc
                   lda #$23
                   ror a
                   cmp #$11
                   beq  .lab_31
                   lda #$25
                   jmp .error
.lab_31            sec
                   lda #$42
                   ror a
                   cmp #$A1
                   beq  .lab_32
                   lda #$26
                   jmp .error
.lab_32            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   sec
                   lda #$86
                   sbc #$45
                   cmp #$41
                   beq  .lab_33
                   lda #$27
                   jmp .error
.lab_33            clc
                   lda #$89
                   sbc #$23
                   cmp #$65
                   beq  .lab_34
                   lda #$28
                   jmp .error
.lab_34            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$42
                   sta $0200
                   lda #$9F
                   sta $0201
                   lda $0200
                   cmp #$42
                   beq  .lab_35 
                   lda #$29
                   jmp .error
.lab_35            lda $0201
                   cmp #$9F
                   beq  .lab_36
                   lda #$30
                   jmp .error
.lab_36            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$94
                   sta $0201 
                   lda #$41
                   sta $0200  
                   lda #$53
                   clc
                   adc $0200
                   cmp $0201 
                   beq .lab_37
                   lda #$31
                   jmp .error 
.lab_37            lda #$8D
                   sta $0201
                   lda #$98
                   sta $0200 
                   lda #$F4
                   sec
                   adc $0200 
                   cmp $0201
                   beq  .lab_38
                   lda #$32
                   jmp .error
.lab_38            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$84
                   sty $0201
                   ldx #$B4
                   stx $0200
                   lda #$86
                   and $0200
                   cmp $0201
                   beq  .lab_39
                   lda #$33
                   jmp .error
.lab_39            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$55
                   stx $0200
                   asl $0200
                   lda $0200
                   cmp #$AA
                   beq  .lab_40
                   lda #$34
                   jmp .error
.lab_40            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$53
                   sta $0200
                   lda #$00
                   ldx #$53
                   cpx $0200
                   beq  .lab_41
                   lda #$35
                   jmp .error
.lab_41            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$45 
                   sta $0200
                   lda #$00
                   ldy #$45
                   cpy $0200
                   beq  .lab_42
                   lda #$36
                   jmp .error
.lab_42            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$EF
                   sta $0200
                   dec $0200
                   lda #$EE
                   cmp $0200
                   beq  .lab_43
                   lda #$37
                   jmp .error
.lab_43            lda #$01
                   sta $0200
                   dec $0200
                   beq  .lab_44
                   lda #$38
                   jmp .error
.lab_44            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$EF
                   sta $0200
                   inc $0200
                   lda #$F0
                   cmp $0200
                   beq  .lab_45
                   lda #$39
                   jmp .error
.lab_45            lda #$FF
                   sta $0200
                   inc $0200
                   beq  .lab_46
                   lda #$40
                   jmp .error
.lab_46            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$32
                   sty $0201
                   ldx #$B4
                   stx $0200
                   lda #$86
                   eor $0200
                   cmp $0201
                   beq  .lab_47
                   lda #$41
                   jmp .error
.lab_47            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$B6
                   sty $0201
                   ldx #$B4
                   stx $0200
                   lda #$86
                   ora $0200
                   cmp $0201
                   beq  .lab_48
                   lda #$42
                   jmp .error
.lab_48            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   clc
                   ldx #$AA
                   stx $0200
                   rol $0200
                   bcs .lab_49
                   lda #$43
                   jmp .error
.lab_49            lda $0200
                   cmp #$54
                   beq  .lab_50
                   lda #$44
                   jmp .error
.lab_50            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   clc
                   ldx #$55
                   stx $0200
                   ror $0200
                   bcs .lab_51
                   lda #$45 
                   jmp .error
.lab_51            lda $0200
                   cmp #$2A
                   beq  .lab_52
                   lda #$46
                   jmp .error
.lab_52            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$96
                   stx $0200
                   lsr $0200
                   lda $0200
                   cmp #$4B
                   beq  .lab_53
                   lda #$47
                   jmp .error
.lab_53            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$42
                   stx $0200
                   ldx #$9F
                   stx $0201
                   ldx $0200
                   cpx #$42
                   beq  .lab_54
                   lda #$48 
                   jmp .error
.lab_54            ldx $0201
                   cpx #$9F
                   beq  .lab_55
                   lda #$49
                   jmp .error
.lab_55            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$34
                   sty $0200
                   ldy #$75
                   sty $0201
                   ldy $0200
                   cpy #$34
                   beq  .lab_56
                   lda #$4A
                   jmp .error
.lab_56            ldy $0201
                   cpy #$75
                   beq  .lab_57
                   lda #$4B
                   jmp .error
.lab_57            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$12
                   sta $0201 
                   lda #$41
                   sta $0200
                   lda #$53
                   sec
                   sbc $0200
                   cmp $0201
                   beq  .lab_58 
                   lda #$4C
                   jmp .error
.lab_58            lda #$5B
                   sta $0201
                   lda #$98
                   sta $0200
                   lda #$F4
                   clc
                   sbc $0200
                   cmp $0201
                   beq  .lab_59
                   lda #$4D
                   jmp .error
.lab_59            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$42
                   inc t_cnt
                   pha
                   lda #$ED
                   inc t_cnt    
                   pha
                   lda #$BE
                   inc t_cnt
                   pha
                   lda #$00
                   pla
                   cmp #$BE
                   bne .lab_60
                   pla
                   cmp #$ED
                   bne .lab_60
                   pla
                   cmp #$42
                   bne .lab_60
                   jmp  .lab_605
.lab_60            lda #$4E
                   jmp .error
.lab_605           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldx #$00
                   clc
                   lda #$03 
                   sta $0200,X
                   adc #$07
                   inx
                   sta $0200,X
                   adc #$07
                   inx
                   sta $0200,X
                   adc #$07
                   inx
                   sta $0200,X
                   adc #$07
                   inx
                   sta $0200,X
                   adc #$07
                   inx
                   sta $0200,X
                   adc #$07
                   inx
                   sta $0200,X
                   ldx #$00
                   clc
                   lda $0200,X
                   cmp #$03
                   bne .lab_61
                   inx
                   lda $0200,X
                   cmp #$0A
                   bne .lab_61
                   inx
                   lda $0200,X
                   cmp #$11
                   bne .lab_61
                   inx
                   lda $0200,X
                   cmp #$18
                   bne .lab_61
                   inx
                   lda $0200,X
                   cmp #$1F
                   bne .lab_61
                   inx
                   lda $0200,X
                   cmp #$26
                   bne .lab_61
                   inx
                   lda $0200,X
                   cmp #$2D
                   bne .lab_61
                   jmp .lab_615
.lab_61            lda #$4F
                   jmp .error
.lab_615           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   ldy #$00 
                   clc
                   lda #$03
                   sta $0200,Y
                   adc #$07
                   iny
                   sta $0200,Y
                   adc #$07
                   iny
                   sta $0200,Y
                   adc #$07
                   iny
                   sta $0200,Y
                   adc #$07
                   iny
                   sta $0200,Y
                   adc #$07 
                   iny
                   sta $0200,Y
                   adc #$07
                   iny
                   sta $0200,Y
                   ldy #$00
                   clc
                   lda $0200,Y
                   cmp #$03
                   bne .lab_62
                   iny
                   lda $0200,Y
                   cmp #$0A
                   bne .lab_62
                   iny
                   lda $0200,Y 
                   cmp #$11
                   bne .lab_62
                   iny
                   lda $0200,Y
                   cmp #$18
                   bne .lab_62
                   iny
                   lda $0200,Y 
                   cmp #$1F
                   bne .lab_62
                   iny
                   lda $0200,Y
                   cmp #$26
                   bne .lab_62
                   iny
                   lda $0200,Y 
                   cmp #$2D
                   bne .lab_62
                   jmp .lab_625
.lab_62            lda #$50
                   jmp .error
.lab_625           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$52
                   sta $0200
                   lda #$24
                   sta $0201
                   lda #$78
                   sta $0202 
                   lda #$00
                   ldx #$00
                   clc
                   adc $0200,X
                   clc
                   inx
                   adc $0200,X
                   clc
                   inx
                   adc $0200,X
                   cmp #$EE
                   beq .lab_63
                   lda #$51
                   jmp .error
.lab_63            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0 
                   lda #$68
                   sta $0200
                   lda #$13
                   sta $0201
                   lda #$95
                   sta $0202
                   lda #$00
                   ldy #$00
                   clc
                   adc $0200,Y
                   clc
                   iny
                   adc $0200,Y
                   clc
                   iny
                   adc $0200,Y
                   cmp #$10
                   beq  .lab_64
                   lda #$52
                   jmp .error
.lab_64            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$34
                   sta $0200
                   lda #$54
                   sta $0201
                   lda #$97
                   sta $0202
                   lda #$FF 
                   ldy #$00
                   and $0200,Y
                   iny
                   and $0200,Y
                   iny
                   and $0200,Y
                   cmp #$14
                   beq .lab_65
                   lda #$53
                   jmp .error
.lab_65            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$34
                   sta $0200 
                   lda #$54
                   sta $0201
                   lda #$97
                   sta $0202
                   lda #$FF
                   ldx #$00
                   and $0200,X
                   inx
                   and $0200,X
                   inx
                   and $0200,X
                   cmp #$14
                   beq .lab_66
                   lda #$54
                   jmp .error
.lab_66            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$64
                   sta $00
                   lda #$39
                   clc
                   adc $00 
                   cmp #$9D
                   beq  .lab_67
                   lda #$55
                   jmp .error
.lab_67            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$95 
                   sta $00
                   lda #$76
                   sta $01
                   lda #$45
                   sta $02
                   ldx #$00
                   lda #$00
                   clc
                   adc  $00,X
                   inx
                   clc
                   adc $00,X
                   inx
                   clc
                   adc $00,X
                   cmp #$50
                   beq  .lab_68
                   lda #$56
                   jmp .error
.lab_68            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$64
                   sta $00
                   lda #$39
                   and $00
                   cmp #$20
                   beq  .lab_69
                   lda #$57
                   jmp .error
.lab_69            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$95
                   sta $00
                   lda #$76
                   sta $01
                   lda #$45
                   sta $02
                   ldx #$00
                   lda #$FF
                   and $00,X
                   inx 
                   and $00,X
                   inx
                   and $00,X
                   cmp #$04
                   beq  .lab_70
                   lda #$58
                   jmp .error
.lab_70            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$97
                   sta $0200
                   lda #$78
                   sta $0201
                   lda #$45
                   sta $0202
                   ldx #$00
                   lda #$97
                   cmp $0200,X
                   bne .lab_71
                   lda #$78
                   inx
                   cmp $0200,X
                   bne .lab_71
                   lda #$45
                   inx
                   cmp $0200,X
                   bne .lab_71
                   jmp .lab_715
.lab_71            lda #$59 
                   jmp .error
.lab_715           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$97
                   sta $0200
                   lda #$78
                   sta $0201
                   lda #$45
                   sta $0202
                   ldy #$00
                   lda #$97
                   cmp  $0200,Y
                   bne .lab_72
                   lda #$78
                   iny
                   cmp $0200,Y
                   bne .lab_72
                   lda #$45
                   iny
                   cmp $0200,Y
                   bne .lab_72 
                   jmp .lab_725
.lab_72            lda #$5A
                   jmp .error
.lab_725           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$97
                   sta $0200
                   lda #$78
                   sta $0201
                   lda #$45
                   sta $0202
                   ldx #$00
                   lda #$97 
                   cmp $0200,X
                   bne .lab_73
                   lda #$78
                   inx
                   cmp $0200,X
                   bne .lab_73
                   lda #$45
                   inx 
                   cmp $0200,X
                   bne .lab_73
                   jmp .lab_735
.lab_73            lda #$5B
                   jmp .error
.lab_735           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$95
                   sta $02
                   lda #$00
                   lda #$95
                   cmp  $02
                   beq  .lab_74
                   lda #$5C 
                   jmp .error
.lab_74            lda #$75
                   sta $02
                   lda #$67
                   cmp  $02
                   bne .lab_75
                   lda #$5D
                   jmp .error
.lab_75            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$36
                   sta $02
                   lda #$00
                   ldx #$36
                   cpx $02
                   beq  .lab_76
                   lda #$5E
                   jmp .error
.lab_76            lda #$57
                   sta $02
                   ldx #$39
                   cpx $02 
                   bne .lab_77
                   lda #$5F
                   jmp .error
.lab_77            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$75
                   sta $02 
                   lda #$00
                   ldy #$75
                   cpy $02
                   beq  .lab_78
                   lda #$60
                   jmp .error
.lab_78            lda #$43
                   sta $02
                   ldy #$24
                   cpy $02
                   bne .lab_79
                   lda #$61
                   jmp .error
.lab_79            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   nop          ; was cli
                   lda #$00
                   sta var_2
                   lda #$01
                   sta var_1
                   lda #$10

        
                   sta io_base+io_tim0_end
                   sta io_base+io_tim0_start   
                   ldx #$00
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx 
                   inx
                   inx
                   inx
                   inx
                   cpx  #$10
                   beq .lab_80
                   lda #$62
                   jmp .error
.lab_80            lda var_2
                   cmp #$00     ; was 1 if int serviced
                   beq  .lab_81
                   lda #$63
                   jmp .error
.lab_81            nop          ;   was sei to disable interrupt
                   lda #$00
                   sta var_2
                   lda #$01
                   sta var_1
                   lda #$10
                   sta io_base+io_tim0_end
                   sta io_base+io_tim0_start   
                   ldx #$00
                   inx
                   inx
                   inx
                   inx
                   inx 
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   cpx #$10
                   beq .lab_82
                   lda #$62
                   jmp .error
.lab_82            lda var_2
                   cmp #$00
                   beq  .lab_83
                   lda #$63
                   jmp .error
.lab_83            lda #$00
                   sta var_1
                   sta io_base+io_tim0_end
                   inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$00
                   sta var_4
                   lda #$01
                   sta var_3
                   lda #$10
                   sta io_base+io_tim0_end ; change to tim1 for nmi
                   sta io_base+io_tim0_start   ; change to tim1 for nmi
                   ldx #$00
                   inx
                   inx
                   inx 
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   inx
                   cpx  #$10
                   beq  .lab_84
                   lda #$64
                   jmp .error
.lab_84            lda var_4
                   cmp #$00     ; change to 1 if nmi serviced
                   beq  .lab_85
                   lda #$65
                   jmp .error
.lab_85            lda #$00
                   sta var_3
                   sta io_base+io_tim1_end
                   inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   jmp .lab_865
.lab_86            jmp .lab_866
.lab_865           sec
                   bcs .lab_86
                   nop
                   nop
                   nop
                   lda #$66
                   jmp .error
.lab_866           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   sec
                   lda #$34
                   sbc #$75
                   bcc .lab_87
                   lda #$67
                   jmp .error
.lab_87            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0

        ;;  Break test
        ;; 
.lab_89            ldx $00 
                   
                   inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$24     ; keep int disabled
                   pha
                   plp
                   stx $08     
                   lda #$00
                   sta var_2 
                   lda #$01
                   sta var_1
                   sta var_3
                   ldx #$59
                   nop          ; was brk
                   inx
                   lda #$00
                   sta var_1
                   lda var_2
                   cmp #$00     ; was 1 if brk taken
                   beq  .lab_92
                   lda #$70
                   jmp .error
        
.lab_92            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0 
                   lda #$53
                   sta $30
                   lda #$00
                   ldx #$40
                   lda $F0,X
                   cmp #$53
                   beq  .lab_93
                   lda #$73 
                   jmp .error
.lab_93            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   clc
                   lda #$FF
                   adc #$01
                   bcs .lab_94
                   lda #$74
                   jmp .error
.lab_94            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   sec
                   lda #$7F
                   sbc #$7E
                   bvc  .lab_95 
                   lda #$75
                   jmp .error
.lab_95            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$FF
                   pha
                   plp
                   php
                   pla
                   cmp #$FF
                   beq  .lab_96
                   lda #$76
                   jmp .error
.lab_96            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0
                   lda #$40 
                   ldx #$00
                   sta $0200,X
                   inx
                   lsr a
                   sta $0200,X
                   inx
                   lsr a
                   sta $0200,X
                   inx 
                   lsr a
                   sta $0200,X
                   inx
                   lsr a
                   sta $0200,X
                   inx
                   lsr a
                   sta $0200,X
                   inx
                   lsr a 
                   sta $0200,X
                   ldx #$00
                   asl $0200,X
                   inx
                   asl $0200,X
                   inx
                   asl $0200,X
                   inx
                   asl $0200,X
                   inx
                   asl $0200,X
                   inx
                   asl $0200,X
                   inx
                   asl $0200,X
                   lda #$00
                   clc
                   cld
                   adc $0200
                   adc $0201
                   adc $0202
                   adc $0203
                   adc $0204
                   adc $0205
                   adc $0206
                   cmp #$FE
                   beq  .lab_97
                   lda #$77
                   jmp  .error 
.lab_97            inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0 
                   ldx #$42
                   ldy #$00
                   stx $0200
                   ldx #$9F
                   stx $0201
                   ldx $0200,Y
                   cpx #$42
                   beq  .lab_98
                   lda #$48
                   jmp .error
.lab_98            ldx $0201,Y
                   cpx #$9F
                   beq  .lab_100
                   lda #$78
                   jmp .error


        ;; indirectx test

        
.lab_100           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0 
                   ldy #$00
                   ldx #$00
                   lda #$00
                   sta c_test
                   sta n_test
                   sta v_test
                   sta z_test
                   sta pointer
                   lda #$ff
                   sta pointer+1
                   clc
.lab_101           adc (pointer,x)
                   bpl .lab_103
                   bne .lab_102
                   inc n_test
                   inc z_test
                   jmp .lab_104
.lab_102           inc n_test
                   jmp .lab_104
.lab_103           bne .lab_104
                   inc z_test   
.lab_104           bcc .lab_105
                   inc c_test
.lab_105           bvc .lab_106 
                   inc v_test 
.lab_106           inc pointer
                   bne .lab_101

                   cmp #$07
                   bne .error
                   lda c_test
                   cmp #$4e
                   bne .error
                   lda n_test
                   cmp #$90
                   bne .error
                   lda v_test
                   cmp #$32
                   bne .error
                   lda z_test
                   cmp #$03
                   bne .error





        ;; indirecty test

        
.lab_110           inc t_cnt
                   lda t_cnt
                   inc io_base+io_gpio_0 
                   ldy #$00
                   ldx #$00
                   lda #$00
                   sta c_test
                   sta n_test
                   sta v_test
                   sta z_test
                   sta pointer
                   lda #$ff
                   sta pointer+1
                   clc
.lab_111           adc (pointer),y
                   bpl .lab_113
                   bne .lab_112
                   inc n_test
                   inc z_test
                   jmp .lab_114
.lab_112           inc n_test
                   jmp .lab_114
.lab_113           bne .lab_114
                   inc z_test   
.lab_114           bcc .lab_115
                   inc c_test
.lab_115           bvc .lab_116 
                   inc v_test 
.lab_116           iny
                   bne .lab_111

                   cmp #$07
                   bne .error
                   lda c_test
                   cmp #$4e
                   bne .error
                   lda n_test
                   cmp #$90
                   bne .error
                   lda v_test
                   cmp #$32
                   bne .error
                   lda z_test
                   cmp #$03
                   bne .error
        









        





        

        ;;  pass end loop
.good              sei
                   lda #$FF
                   sta io_base+io_gpio_0 
                   lda #$FF
                   sta io_base+io_gpio_1
                   jmp .end_lp

        ;; error  & end loop
.error             sei
                   sta io_base+io_gpio_1
.end_lp            lda #$00
                   pha
                   plp
                   jmp .end_lp
        

        ;; Interrupt service routine
.nmi_vec           pha
                   txa
                   pha 
                   tya
                   pha
                   lda var_1
                   cmp #$00 
                   bne .nmi_001
                   lda #$E0
                   jmp .error
.nmi_001           sta io_base+io_tim0_end
                   inc var_2
                   pla
                   tay
                   pla
                   tax 
                   pla
                   rti

        ;; Interrupt service routine
        
.irq_vec           pha
                   txa
                   pha
                   tya
                   pha
                   lda var_3
                   cmp #$00
                   bne .irq_001
                   lda #$E0
                   jmp .error
.irq_001           sta io_base+io_tim1_end
                   inc var_4
                   inc var_2
                   pla
                   tay
                   pla
                   tax
                   pla
                   rti


        
    
 * = $cffa  ; vectors


        
     dw $0000          ;
     dw $0000                  ;
     dw $0000          ;


        


 code
    





Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.