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

Subversion Repositories tv80

[/] [tv80/] [trunk/] [tests/] [alu_optest.ast] - Rev 115

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

; Test of load opcodes
;
; Goes through most varieties of load opcode and tests for
; correct behavior.

    .module load_optest

;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
_sim_ctl_port   =       0x0080
_msg_port       =       0x0081
_timeout_port   =       0x0082
_max_timeout_low        =       0x0083
_max_timeout_high       =       0x0084
_intr_cntdwn    =       0x0090
_cksum_value    =       0x0091
_cksum_accum    =       0x0092
_inc_on_read    =       0x0093
stack_end       =       0xFFFF

    .area INIT (ABS)
    .org  0

    jp      init


init:
    ld      sp, #stack_end
    jp      start


passed:
                ld      a, #0x0
                out     (_sim_ctl_port), a
                halt

failed:
                ld      a, #0x0
                out     (_sim_ctl_port), a
                halt




        ;; subroutine to print a message
        ;; called from within the "print" macro
        ;; expects address to be printed in hl
        ;; preserves all other registers
print_sub:
        push    bc
        ld      b, a

print_sub_loop: 
        ld      a, (hl)
        cp      #0x0
        jp      z, print_sub_exit
        out     (_msg_port), a
        inc     hl
        jp      print_sub_loop
        
print_sub_exit:
        ld      a, b
        pop     bc
        ret

        ;; print a hex number between 0-255, stored in the A register
print_number:
        push    bc
        ld      b, a            ; store number to be printed in b

        and     #0xF0
        sra     a
        sra     a
        sra     a
        sra     a
        cp      a, #10
        jp      p, alpha_0
        add     #48             ; ordinal value of '0'
        out     (_msg_port), a
        jp      second_digit
alpha_0:
        add     #55              ; 'A' - 10
        out     (_msg_port), a

second_digit:   
        ld      a, b
        and     #0x0F
        
        cp      a, #10
        jp      p, alpha_1
        add     #48
        out     (_msg_port), a
        jp      print_number_exit

alpha_1:
        add     #55              ; 'A' - 10
        out     (_msg_port), a

print_number_exit:      
        pop     bc
        ret

fail_text: .ascii   "Test failed at checkpoint #"
        .db     #0x0

; expects failing message number in B
fail_routine:
        ld      hl, #fail_text
        call    print_sub       ; print out boilerplate text
        ld      a, b

        call    print_number    ; print out error number

        ld      a, #0x0a                ; print carriage return
        out     (_msg_port), a
        jp      failed
        


starting_test:  .ascii "Starting test"
        .db 0x0A .db 0x00

push_message: .ascii "push_0"
        .db 0xa
        .db 0x0

msg_ex_0: .ascii "ex_0" .db 0xa .db 0x0
msg_add_0: .ascii "add_0" .db 0xa .db 0x0
msg_adc_0: .ascii "adc_0" .db 0xa .db 0x0
msg_sub_0: .ascii "sub_0" .db 0xa .db 0x0
msg_sbc_0: .ascii "sbc_0" .db 0xa .db 0x0
msg_and_0: .ascii "and_0" .db 0xa .db 0x0
msg_or_0: .ascii "or_0" .db 0xa .db 0x0
msg_xor_0: .ascii "xor_0" .db 0xa .db 0x0
msg_cp_0: .ascii "cp_0" .db 0xa .db 0x0
msg_inc: .ascii "inc" .db 0xa .db 0x0
msg_dec: .ascii "dec" .db 0xa .db 0x0
msg_neg: .ascii "neg" .db 0xa .db 0x0

error_cnt:
        .db     0

        ;; Ordering of segments for the linker.
        .area   _HOME
        .area   _CODE
        .area   _GSINIT
        .area   _GSFINAL
        
        .area   _DATA
        .area   _BSS
        .area   _HEAP

        .area   _CODE

;------------------------------------------------------------
;   Beginning of test
;------------------------------------------------------------

start:

                ld      hl, #starting_test
                call    print_sub

                ld      a, #0x1
                ld      hl,#error_cnt
                ld      (hl),a                  ;clear error count


push_0:         ld      sp,#stack_end
                ld      hl, #push_message
                call    print_sub
                ld      bc,#0x1234
                push    bc
                ld      bc,#0
                pop     bc
                ld      a,#0x12      ;bjp was >#0x1234
                cp      b
                jr      z,push_1
        ld      b, #0
        jp      fail_routine
push_1:         ld      a,#0x34      ;bjp was >#0x1234
                cp      c
                jr      z,push_2
        ld      b, #1
        jp      fail_routine
push_2:         ld      de,#0x55aa
                push    de
                ld      de,#0
                pop     de
                ld      a,#0x55
                cp      d
                jr      z,push_3
        ld      b, #2
        jp      fail_routine
push_3:         ld      a,#0xaa
                cp      e
                jr      z,push_4
        ld      b, #3
        jp      fail_routine
push_4:         ld      hl,#0x7fff
                push    hl
                ld      hl,#0
                pop     hl
                ld      a,#0x7f
                cp      h
                jr      z,push_5
        ld      b, #4
        jp      fail_routine
push_5:         ld      a,#0xff
                cp      l
                jr      z,push_6
        ld      b, #5
        jp      fail_routine
push_6:         ld      a,#0x80
                push    af                      ;f depends on previous compare
                ld      hl,#0
                pop     hl
                cp      h
                jr      z,push_7
        ld      b, #6
        jp      fail_routine
push_7:         ld      a,l
                cp      #0x42
                jr      z,push_8
push_8:         ld      h,#0x55
                ld      l,#0x80+#0x41
                ld      a,#0
                push    hl
                pop     af
                jp      m,push_9
        ld      b, #8
        jp      fail_routine
push_9:         jr      z,push_10
        ld      b, #9
        jp      fail_routine
push_10:        jr      c,push_11
        ld      b, #10
        jp      fail_routine
push_11:        cp      #0x55
                jr      z,push_12
        ld      b, #11
        jp      fail_routine
push_12:        ld      ix,#0xaa55
                ld      bc,#0
                push    ix
                pop     bc
                ld      a,#0xaa
                cp      b
                jr      z,push_13
        ld      b, #12
        jp      fail_routine
push_13:        ld      a,#0x55
                cp      c
                jr      z,push_14
        ld      b, #13
        jp      fail_routine
push_14:        ld      iy,#0x7fff
                ld      de,#0
                push    iy
                pop     de
                ld      a,#0x7f
                cp      d
                jr      z,push_15
        ld      b, #14
        jp      fail_routine
push_15:        ld      a,#0xff
                cp      e
                jr      z,push_16
        ld      b, #15
        jp      fail_routine
push_16:        ld      de,#0x1234
                ld      ix,#0
                ld      hl,#0
                push    de
                pop     ix
                ld      sp,ix
                add     hl,sp
                ld      a,#0x12      ;bjp was >#0x1234
                cp      h
                jr      z,push_17
        ld      b, #16
        jp      fail_routine
push_17:        ld      a,#0x34      ;bjp was >#0x1234
                cp      l
                jr      z,push_18
        ld      b, #17
        jp      fail_routine
push_18:        ld      sp,#stack_end
                ld      bc,#0x55aa
                ld      iy,#0
                ld      hl,#0
                push    bc
                pop     iy
                ld      sp,iy
                add     hl,sp
                ld      a,#0x55
                cp      h
                jr      z,push_19
        ld      b, #18
        jp      fail_routine
push_19:        ld      a,#0xaa
                cp      l
                jr      z,push_20
        ld      b, #19
        jp      fail_routine
push_20:        ld      sp,#stack_end
        ld hl, #msg_ex_0
        call print_sub
ex_0:           ld      de,#0x1234
                ld      hl,#0xffff
                ex      de,hl
                ld      a,#0xff
                cp      d
                jr      z,ex_1
        ld      b, #0
        jp      fail_routine
ex_1:           cp      e
                jr      z,ex_2
        ld      b, #1
        jp      fail_routine
ex_2:           ld      a,#0x12      ;bjp was >#0x1234
                cp      h
                jr      z,ex_3
        ld      b, #2
        jp      fail_routine
ex_3:           ld      a,#0x34      ;bjp was >#0x1234
                cp      l
                jr      z,ex_4
        ld      b, #3
        jp      fail_routine
ex_4:           ld      h,#0
                ld      l,#0
                push    hl
                pop     af
                ex      af,af'
                ld      h,#0x7f
                ld      l,#0x80+#0x41
                push    hl
                pop     af
                ex      af,af'
                cp      #0
                jr      z,ex_5
        ld      b, #4
        jp      fail_routine
ex_5:           ex      af,af'
                jp      m,ex_6
        ld      b, #5
        jp      fail_routine
ex_6:           jr      z,ex_7
        ld      b, #6
        jp      fail_routine
ex_7:           cp      #0x7f
                jr      z,ex_8
        ld      b, #7
        jp      fail_routine
ex_8:           ld      hl,#0
                ld      bc,#0
                ld      de,#0
                exx
                ld      hl,#0x1234
                ld      bc,#0x7fff
                ld      de,#0xaa55
                exx
                ld      a,#0
                cp      h
                jr      z,ex_9
        ld      b, #8
        jp      fail_routine
ex_9:           cp      l
                jr      z,ex_10
        ld      b, #9
        jp      fail_routine
ex_10:          cp      d
                jr      z,ex_11
        ld      b, #10
        jp      fail_routine
ex_11:          cp      e
                jr      z,ex_12
        ld      b, #11
        jp      fail_routine
ex_12:          cp      b
                jr      z,ex_13
        ld      b, #12
        jp      fail_routine
ex_13:          cp      c
                jr      z,ex_14
        ld      b, #13
        jp      fail_routine
ex_14:          exx
                ld      a,#0x12      ;bjp was >#0x1234
                cp      h
                jr      z,ex_15
        ld      b, #14
        jp      fail_routine
ex_15:          ld      a,#0x34      ;bjp was >#0x1234
                cp      l
                jr      z,ex_16
        ld      b, #15
        jp      fail_routine
ex_16:          ld      a,#0xaa
                cp      d
                jr      z,ex_17
        ld      b, #16
        jp      fail_routine
ex_17:          ld      a,#0x55
                cp      e
                jr      z,ex_18
        ld      b, #17
        jp      fail_routine
ex_18:          ld      a,#0x7f
                cp      b
                jr      z,ex_19
        ld      b, #18
        jp      fail_routine
ex_19:          ld      a,#0xff
                cp      c
                jr      z,ex_20
        ld      b, #19
        jp      fail_routine
ex_20:          ld      bc,#0x55aa
                ld      hl,#0x7fff
                push    bc
                ex      (sp),hl
                pop     bc
                ld      a,#0x7f
                cp      b
                jr      z,ex_21
        ld      b, #20
        jp      fail_routine
ex_21:          ld      a,#0xff
                cp      c
                jr      z,ex_22
        ld      b, #21
        jp      fail_routine
ex_22:          ld      a,#0x55
                cp      h
                jr      z,ex_23
        ld      b, #22
        jp      fail_routine
ex_23:          ld      a,#0xaa
                cp      l
                jr      z,ex_24
        ld      b, #23
        jp      fail_routine
ex_24:          ld      bc,#0xffff
                ld      ix,#0x8000
                ld      hl,#0
                push    bc
                ex      (sp),ix
                pop     bc
                ld      sp,ix
                add     hl,sp
                ld      a,#0x80
                cp      b
                jr      z,ex_25
        ld      b, #24
        jp      fail_routine
ex_25:          ld      a,#0
                cp      c
                jr      z,ex_26
        ld      b, #25
        jp      fail_routine
ex_26:          ld      a,#0xff
                cp      h
                jr      z,ex_27
        ld      b, #26
        jp      fail_routine
ex_27:          cp      l
                jr      z,ex_28
        ld      b, #27
        jp      fail_routine
ex_28:          ld      sp,#stack_end
                ld      bc,#0x1234
                ld      iy,#0x7fff
                ld      hl,#0
                push    bc
                ex      (sp),iy
                pop     bc
                ld      sp,iy
                add     hl,sp
                ld      a,#0x7f
                cp      b
                jr      z,ex_29
        ld      b, #28
        jp      fail_routine
ex_29:          ld      a,#0xff
                cp      c
                jr      z,ex_30
        ld      b, #29
        jp      fail_routine
ex_30:          ld      a,#0x12      ;bjp was >#0x1234
                cp      h
                jr      z,ex_31
        ld      b, #30
        jp      fail_routine
ex_31:          ld      a,#0x34      ;bjp was >#0x1234
                cp      l
                jr      z,add_0
        ld      b, #31
        jp      fail_routine
add_0:          ld      sp,#stack_end ; reset stack after EX operations
                ld      hl, #msg_add_0
                call    print_sub
                ld      a,#0
                ld      b,#0x7f
                add     a,b
                cp      #0x7f
                jr      z,add_1
        ld      b, #0
        jp      fail_routine
add_1:          ld      a,#0
                ld      b,#0
                add     a,b
                jr      z,add_2
        ld      b, #1
        jp      fail_routine
add_2:          ld      b,#0x55
                add     a,b
                jr      nz,add_3
        ld      b, #2
        jp      fail_routine
add_3:          cp      #0x55
                jr      z,add_4
        ld      b, #3
        jp      fail_routine
add_4:          ld      a,#0xff
                ld      b,#1
                add     a,b
                jr      c,add_5
        ld      b, #4
        jp      fail_routine
add_5:          add     a,b
                jr      nc,add_6
        ld      b, #5
        jp      fail_routine
add_6:          ld      a,#0xff
                ld      b,#0
                add     a,b
                jp      m,add_7
        ld      b, #6
        jp      fail_routine
add_7:          ld      b,#1
                add     a,b
                jp      p,add_8
        ld      b, #7
        jp      fail_routine
add_8:          ld      a,#0x7f
                ld      b,#1
                add     a,b
                jp      pe,add_9
        ld      b, #8
        jp      fail_routine
add_9:          add     a,b
                jp      po,add_10
        ld      b, #9
        jp      fail_routine
add_10:         ld      a,#0x55
                ld      c,#2
                add     a,c
                cp      #0x55+2
                jr      z,add_11
        ld      b, #10
        jp      fail_routine
add_11:         ld      a,#0x80
                add     a,c
                cp      #0x80+2
                jr      z,add_12
        ld      b, #11
        jp      fail_routine
add_12:         ld      a,#0xaa
                ld      d,#0x55
                add     a,d
                cp      #0xaa+0x55
                jr      z,add_13
        ld      b, #12
        jp      fail_routine
add_13:         ld      a,#0xaa
                ld      e,#2
                add     a,e
                cp      #0xaa+2
                jr      z,add_14
        ld      b, #13
        jp      fail_routine
add_14:         ld      a,#0x55
                ld      h,#24
                add     a,h
                cp      #0x55+24
                jr      z,add_15
        ld      b, #14
        jp      fail_routine
add_15:         ld      a,#0x7f-10
                ld      l,#10
                add     a,l
                cp      #0x7f
                jr      z,add_16
        ld      b, #15
        jp      fail_routine
add_16:         ld      a,#1
                add     a,#0x7f
                jp      pe,add_17
        ld      b, #16
        jp      fail_routine
add_17:         jp      m,add_18
        ld      b, #17
        jp      fail_routine
add_18:         jr      nz,add_19
        ld      b, #18
        jp      fail_routine
add_19:         cp      #0x80
                jr      z,add_20
        ld      b, #19
        jp      fail_routine
add_20:         ld      a,#0x55
                add     a,#1
                jp      po,add_21
        ld      b, #20
        jp      fail_routine
add_21:         jp      p,add_22
        ld      b, #21
        jp      fail_routine
add_22:         jr      nc,add_23
        ld      b, #22
        jp      fail_routine
add_23:         cp      #0x55+1
                jr      z,add_24
        ld      b, #23
        jp      fail_routine
add_24:         ld      a,#0xff
                add     a,#1
                jr      c,add_25
        ld      b, #24
        jp      fail_routine
add_25:         jr      z,add_26
        ld      b, #25
        jp      fail_routine
add_26:         add     a,#1
                jr      nc,add_27
        ld      b, #26
        jp      fail_routine
add_27:         jr      nz,add_28
        ld      b, #27
        jp      fail_routine
add_28:         cp      #1
                jr      z,add_29
        ld      b, #28
        jp      fail_routine
add_29:         ld      hl,#var2
                ld      a,#2
                add     a,(hl)
                jp      po,add_30
        ld      b, #29
        jp      fail_routine
add_30:         jp      p,add_31
        ld      b, #30
        jp      fail_routine
add_31:         jr      nz,add_32
        ld      b, #31
        jp      fail_routine
add_32:         jr      nc,add_33
        ld      b, #32
        jp      fail_routine
add_33:         cp      #0x55+2
                jr      z,add_34
        ld      b, #33
        jp      fail_routine
add_34:         ld      hl,#var1
                ld      a,#1
                add     a,(hl)
                jr      c,add_35
        ld      b, #34
        jp      fail_routine
add_35:         jr      z,add_36
        ld      b, #35
        jp      fail_routine
add_36:         ld      hl,#var5
                ld      a,#1
                add     a,(hl)
                jp      m,add_37
        ld      b, #36
        jp      fail_routine
add_37:         jp      pe,add_38
        ld      b, #37
        jp      fail_routine
add_38:         cp      #0x80
                jr      z,add_39
        ld      b, #38
        jp      fail_routine
add_39:         ld      ix,#var3
                ld      a,#1
                add     a,-1(ix)
                jp      po,add_40
        ld      b, #39
        jp      fail_routine
add_40:         jp      p,add_41
        ld      b, #40
        jp      fail_routine
add_41:         jr      nz,add_42
        ld      b, #41
        jp      fail_routine
add_42:         jr      nc,add_43
        ld      b, #42
        jp      fail_routine
add_43:         cp      #0x55+1
                jr      z,add_44
        ld      b, #43
        jp      fail_routine
add_44:         ld      a,#1
                add     a,2(ix)
                jp      pe,add_45
        ld      b, #44
        jp      fail_routine
add_45:         jp      m,add_46
        ld      b, #45
        jp      fail_routine
add_46:         cp      #0x80
                jr      z,add_47
        ld      b, #46
        jp      fail_routine
add_47:         ld      a,#1
                add     a,-2(ix)
                jr      c,add_48
        ld      b, #47
        jp      fail_routine
add_48:         jr      z,add_49
        ld      b, #48
        jp      fail_routine
add_49:         add     a,#1
                jr      nc,add_50
        ld      b, #49
        jp      fail_routine
add_50:         jr      nz,add_51
        ld      b, #50
        jp      fail_routine
add_51:         cp      #1
                jr      z,add_52
        ld      b, #51
        jp      fail_routine
add_52:         ld      iy,#var3
                ld      a,#10
                add     a,-1(iy)
                jp      po,add_53
        ld      b, #52
        jp      fail_routine
add_53:         jp      p,add_54
        ld      b, #53
        jp      fail_routine
add_54:         jr      nz,add_55
        ld      b, #54
        jp      fail_routine
add_55:         jr      nc,add_56
        ld      b, #55
        jp      fail_routine
add_56:         cp      #0x55+10
                jr      z,add_57
        ld      b, #56
        jp      fail_routine
add_57:         ld      a,#1
                add     a,2(iy)
                jp      pe,add_58
        ld      b, #57
        jp      fail_routine
add_58:         jp      m,add_59
        ld      b, #58
        jp      fail_routine
add_59:         add     a,#1
                jp      po,add_60
        ld      b, #59
        jp      fail_routine
add_60:         cp      #0x80+1
                jr      z,add_61
        ld      b, #60
        jp      fail_routine
add_61:         ld      a,#1
                add     a,-2(iy)
                jr      z,add_62
        ld      b, #61
        jp      fail_routine
add_62:         jr      c,add_63
        ld      b, #62
        jp      fail_routine
add_63:         add     a,#1
                jr      nc,add_64
        ld      b, #63
        jp      fail_routine
add_64:         jr      nz,add_65
        ld      b, #64
        jp      fail_routine
add_65:         cp      #1
                jr      z,add_66
        ld      b, #65
        jp      fail_routine
add_66:         ld      a,#0xff
                add     a,#0x80
                jp      p,add_67
        ld      b, #66
        jp      fail_routine
add_67:         jp      pe,add_68
        ld      b, #67
        jp      fail_routine
add_68:         jr      c,add_69
        ld      b, #68
        jp      fail_routine
add_69:         add     a,#1
                jp      pe,add_70
        ld      b, #69
        jp      fail_routine
add_70:         jp      m,add_71
        ld      b, #70
        jp      fail_routine
add_71:         jr      nc,add_72
        ld      b, #71
        jp      fail_routine
add_72:         add     a,#1
                jp      po,add_73
        ld      b, #72
        jp      fail_routine
add_73:         cp      #0x80+1
                jr      z,adc_0
        ld      b, #73
        jp      fail_routine
adc_0:          nop
        ld hl, #msg_adc_0
        call print_sub
                ld      a,#0                 ;clear cry 
                add     a,#0
                ld      b,#0x7f
                adc     a,b                  ;a=7f cry=0
                jp      p,adc_1
        ld      b, #0
        jp      fail_routine
adc_1:          jp      po,adc_2
        ld      b, #1
        jp      fail_routine
adc_2:          jr      nc,adc_3
        ld      b, #2
        jp      fail_routine
adc_3:          jr      nz,adc_4
        ld      b, #3
        jp      fail_routine
adc_4:          ld      b,#1
                adc     a,b                     ;a=80 cry=0  
                jp      pe,adc_5                ;jp  ofl
        ld      b, #4
        jp      fail_routine
adc_5:          jp      m,adc_6
        ld      b, #5
        jp      fail_routine
adc_6:          cp      #0x80
                jr      z,adc_7                 ;z=0  ofl=0 cry=0 (borrow)
        ld      b, #6
        jp      fail_routine
adc_7:          ld      a,#0xff
                ld      b,#1
                adc     a,b                      ;ff+1+0
                jr      c,adc_8
        ld      b, #7
        jp      fail_routine
adc_8:          jr      z,adc_9
        ld      b, #8
        jp      fail_routine
adc_9:          adc     a,b
                jr      nc,adc_10
        ld      b, #9
        jp      fail_routine
adc_10:         jr      nz,adc_11
        ld      b, #10
        jp      fail_routine
adc_11:         cp      #2
                jr      z,adc_12
        ld      b, #11
        jp      fail_routine
adc_12:         ld      a,#0xff
                ld      c,#0
                adc     a,c
                jp      m,adc_13
        ld      b, #12
        jp      fail_routine
adc_13:         jr      nc,adc_14
        ld      b, #13
        jp      fail_routine
adc_14:         ld      c,#2
                adc     a,c
                jp      p,adc_15
        ld      b, #14
        jp      fail_routine
adc_15:         jr      c,adc_16
        ld      b, #15
        jp      fail_routine
adc_16:         ld      c,#0
                adc     a,c
                cp      #2
                jr      z,adc_17
        ld      b, #16
        jp      fail_routine
adc_17:         ld      a,#0xff
                ld      d,#1
                adc     a,d
                jr      c,adc_18
        ld      b, #17
        jp      fail_routine
adc_18:         ld      d,#0
                adc     a,d
                jr      nc,adc_19
        ld      b, #18
        jp      fail_routine
adc_19:         cp      #1
                jr      z,adc_20
        ld      b, #19
        jp      fail_routine
adc_20:         ld      a,#0xaa
                ld      e,#0x7f
                adc     a,e
                jr      c,adc_21
        ld      b, #20
        jp      fail_routine
adc_21:         ld      e,#0x2
                adc     a,e
                cp      #0x55
                jr      z,adc_22
        ld      b, #21
        jp      fail_routine
adc_22:         ld      a,#0xff
                ld      h,#1
                adc     a,h
                jr      c,adc_23
        ld      b, #22
        jp      fail_routine
adc_23:         adc     a,h
                cp      #2
                jr      z,adc_24
        ld      b, #23
        jp      fail_routine
adc_24:         ld      a,#0xff
                ld      l,#1
                adc     a,l
                jr      c,adc_25
        ld      b, #24
        jp      fail_routine
adc_25:         adc     a,l
                cp      #2
                jr      z,adc_26
        ld      b, #25
        jp      fail_routine
adc_26:         ld      a,#0
                adc     a,#0x7f
                jp      po,adc_27
        ld      b, #26
        jp      fail_routine
adc_27:         jp      p,adc_28
        ld      b, #27
        jp      fail_routine
adc_28:         jr      nc,adc_29
        ld      b, #28
        jp      fail_routine
adc_29:         jr      nz,adc_30
        ld      b, #29
        jp      fail_routine
adc_30:         adc     a,#1
                jp      pe,adc_31
        ld      b, #30
        jp      fail_routine
adc_31:         jp      m,adc_32
        ld      b, #31
        jp      fail_routine
adc_32:         cp      #0x80
                jr      z,adc_33
        ld      b, #32
        jp      fail_routine
adc_33:         ld      a,#0xff
                adc     a,#1
                jr      c,adc_34
        ld      b, #33
        jp      fail_routine
adc_34:         jr      z,adc_35
        ld      b, #34
        jp      fail_routine
adc_35:         adc     a,#1
                jr      nc,adc_36
        ld      b, #35
        jp      fail_routine
adc_36:         jr      nz,adc_37
        ld      b, #36
        jp      fail_routine
adc_37:         cp      #2
                jr      z,adc_38
        ld      b, #37
        jp      fail_routine
adc_38:         ld      hl,#var5
                ld      a,#0
                adc     a,(hl)
                jp      p,adc_39
        ld      b, #38
        jp      fail_routine
adc_39:         jp      po,adc_40
        ld      b, #39
        jp      fail_routine
adc_40:         jr      nz,adc_41
        ld      b, #40
        jp      fail_routine
adc_41:         jr      nc,adc_42
        ld      b, #41
        jp      fail_routine
adc_42:         ld      a,#1
                adc     a,(hl)
                jp      m,adc_43
        ld      b, #42
        jp      fail_routine
adc_43:         jp      pe,adc_44
        ld      b, #43
        jp      fail_routine
adc_44:         cp      #0x80
                jr      z,adc_45
        ld      b, #44
        jp      fail_routine
adc_45:         ld      hl,#var1
                ld      a,#1
                adc     a,(hl)
                jr      z,adc_46
        ld      b, #45
        jp      fail_routine
adc_46:         jr      c,adc_47
        ld      b, #46
        jp      fail_routine
adc_47:         ld      hl,#var2
                adc     a,(hl)
                jr      nc,adc_48
        ld      b, #47
        jp      fail_routine
adc_48:         jr      nz,adc_49
        ld      b, #48
        jp      fail_routine
adc_49:         cp      #0x55+1
                jr      z,adc_50
        ld      b, #49
        jp      fail_routine
adc_50:         ld      ix,#var3
                ld      a,#0
                adc     a,2(ix)
                jp      p,adc_51
        ld      b, #50
        jp      fail_routine
adc_51:         jp      po,adc_52
        ld      b, #51
        jp      fail_routine
adc_52:         jr      nc,adc_53
        ld      b, #52
        jp      fail_routine
adc_53:         jr      nz,adc_54
        ld      b, #53
        jp      fail_routine
adc_54:         ld      a,#1
                adc     a,2(ix)
                jp      m,adc_55
        ld      b, #54
        jp      fail_routine
adc_55:         jp      pe,adc_56
        ld      b, #55
        jp      fail_routine
adc_56:         cp      #0x80
                jr      z,adc_57
        ld      b, #56
        jp      fail_routine
adc_57:         ld      a,#1
                adc     a,-2(ix)
                jr      c,adc_58
        ld      b, #57
        jp      fail_routine
adc_58:         jr      z,adc_59
        ld      b, #58
        jp      fail_routine
adc_59:         adc     a,-1(ix)
                jr      nc,adc_60
        ld      b, #59
        jp      fail_routine
adc_60:         jr      nz,adc_61
        ld      b, #60
        jp      fail_routine
adc_61:         cp      #0x55+1
                jr      z,adc_62
        ld      b, #61
        jp      fail_routine
adc_62:         ld      iy,#var3
                ld      a,#0
                adc     a,2(ix)
                jp      p,adc_63
        ld      b, #62
        jp      fail_routine
adc_63:         jp      po,adc_64
        ld      b, #63
        jp      fail_routine
adc_64:         jr      nc,adc_65
        ld      b, #64
        jp      fail_routine
adc_65:         jr      nz,adc_66
        ld      b, #65
        jp      fail_routine
adc_66:         ld      a,#1
                adc     a,2(iy)
                jp      m,adc_67
        ld      b, #66
        jp      fail_routine
adc_67:         jp      pe,adc_68
        ld      b, #67
        jp      fail_routine
adc_68:         cp      #0x80
                jr      z,adc_69
        ld      b, #68
        jp      fail_routine
adc_69:         ld      a,#1
                adc     a,-2(iy)
                jr      c,adc_70
        ld      b, #69
        jp      fail_routine
adc_70:         jr      z,adc_71
        ld      b, #70
        jp      fail_routine
adc_71:         adc     a,-1(iy)
                jr      nc,adc_72
        ld      b, #71
        jp      fail_routine
adc_72:         jr      nz,adc_73
        ld      b, #72
        jp      fail_routine
adc_73:         cp      #0x55+1
                jr      z,adc_74
        ld      b, #73
        jp      fail_routine
adc_74:         ld      a,#0xff
                add     a,#0
                adc     a,#0x80
                jp      p,adc_75
        ld      b, #74
        jp      fail_routine
adc_75:         jp      pe,adc_76
        ld      b, #75
        jp      fail_routine
adc_76:         jr      nz,adc_77
        ld      b, #76
        jp      fail_routine
adc_77:         adc     a,#0
                jp      m,adc_78
        ld      b, #77
        jp      fail_routine
adc_78:         jp      pe,adc_79
        ld      b, #78
        jp      fail_routine
adc_79:         adc     a,#1
                jp      po,adc_80
        ld      b, #79
        jp      fail_routine
adc_80:         cp      #0x80+1
                jr      z,sub_0
        ld      b, #80
        jp      fail_routine
sub_0:          nop
        ld hl, #msg_sub_0
        call print_sub
                ld      a,#0
                ld      b,#1
                sub     a,b
                jp      m,sub_1
        ld      b, #0
        jp      fail_routine
sub_1:          jp      po,sub_2
        ld      b, #1
        jp      fail_routine
sub_2:          jr      c,sub_3
        ld      b, #2
        jp      fail_routine
sub_3:          jr      nz,sub_4
        ld      b, #3
        jp      fail_routine
sub_4:          sub     a,b
                jr      nc,sub_5
        ld      b, #4
        jp      fail_routine
sub_5:          cp      #0xff-1
                jr      z,sub_6
        ld      b, #5
        jp      fail_routine
sub_6:          ld      a,#1
                ld      b,#0
                sub     a,b
                jr      nz,sub_7
        ld      b, #6
        jp      fail_routine
sub_7:          jp      p,sub_8
        ld      b, #7
        jp      fail_routine
sub_8:          ld      b,#1
                sub     a,b
                jr      z,sub_9
        ld      b, #8
        jp      fail_routine
sub_9:          sub     a,b
                jp      m,sub_10
        ld      b, #9
        jp      fail_routine
sub_10:         cp      #0xff
                jr      z,sub_11
        ld      b, #10
        jp      fail_routine
sub_11:         ld      a,#0x80
                ld      b,#0x7f
                sub     a,b
                jp      pe,sub_12
        ld      b, #11
        jp      fail_routine
sub_12:         sub     a,b
                jp      po,sub_13
        ld      b, #12
        jp      fail_routine
sub_13:         cp      #0x80+2
                jr      z,sub_14
        ld      b, #13
        jp      fail_routine
sub_14:         ld      a,#0x55
                ld      c,#0x55
                sub     a,c
                jr      z,sub_15
        ld      b, #14
        jp      fail_routine
sub_15:         ld      c,#1
                sub     a,c
                jp      m,sub_16
        ld      b, #15
        jp      fail_routine
sub_16:         jr      c,sub_17
        ld      b, #16
        jp      fail_routine
sub_17:         cp      #0xff
                jr      z,sub_18
        ld      b, #17
        jp      fail_routine
sub_18:         ld      a,#0x55
                ld      d,#0x7f
                sub     a,d
                jr      c,sub_19
        ld      b, #18
        jp      fail_routine
sub_19:         cp      #0x55-0x7f
                jr      z,sub_20
        ld      b, #19
        jp      fail_routine
sub_20:         ld      a,#0
                ld      e,#0xff
                sub     a,e
                jr      c,sub_21
        ld      b, #20
        jp      fail_routine
sub_21:         cp      #1
                jr      z,sub_22
        ld      b, #21
        jp      fail_routine
sub_22:         ld      a,#0xff
                ld      h,#0x80
                sub     a,h
                jp      p,sub_23
        ld      b, #22
        jp      fail_routine
sub_23:         cp      #0x7f
                jr      z,sub_24
        ld      b, #23
        jp      fail_routine
sub_24:         ld      a,#0xaa
                ld      l,#0xff
                sub     a,l
                jr      c,sub_25
        ld      b, #24
        jp      fail_routine
sub_25:         cp      #0xaa+1
                jr      z,sub_26
        ld      b, #25
        jp      fail_routine
sub_26:         ld      a,#0x7f
                sub     a,#0xff
                jp      pe,sub_27
        ld      b, #26
        jp      fail_routine
sub_27:         jp      m,sub_28
        ld      b, #27
        jp      fail_routine
sub_28:         sub     a,#1
                jp      p,sub_29
        ld      b, #28
        jp      fail_routine
sub_29:         sub     a,#1
                jp      po,sub_30
        ld      b, #29
        jp      fail_routine
sub_30:         jr      nz,sub_31
        ld      b, #30
        jp      fail_routine
sub_31:         sub     a,#0x7f-1
                jr      z,sub_32
        ld      b, #31
        jp      fail_routine
sub_32:         ld      a,#0
                sub     a,#0xff
                jr      c,sub_33
        ld      b, #32
        jp      fail_routine
sub_33:         sub     a,#1
                jr      z,sub_34
        ld      b, #33
        jp      fail_routine
sub_34:         jr      nc,sub_35
        ld      b, #34
        jp      fail_routine
sub_35:         ld      hl,#var1
                ld      a,#0x7f
                sub     a,(hl)
                jp      m,sub_36
        ld      b, #35
        jp      fail_routine
sub_36:         jp      pe,sub_37
        ld      b, #36
        jp      fail_routine
sub_37:         jr      c,sub_38
        ld      b, #37
        jp      fail_routine
sub_38:         ld      hl,#var3
                sub     a,(hl)
                jp      p,sub_39
        ld      b, #38
        jp      fail_routine
sub_39:         jp      po,sub_40
        ld      b, #39
        jp      fail_routine
sub_40:         
        jr      nc,sub_41
        ld      b, #40
        jp      fail_routine
sub_41:
        jr      z,sub_42
        ld      b, #40
        jp      fail_routine
sub_42:         ld      hl,#var2
                sub     a,(hl)
                jr      nz,sub_43
        ld      b, #42
        jp      fail_routine
sub_43:         cp      #0xaa+1
                jr      z,sub_44
        ld      b, #43
        jp      fail_routine
sub_44:         ld      ix,#var3
                ld      a,#0x7f
                sub     a,-2(ix)
                jp      m,sub_45
        ld      b, #44
        jp      fail_routine
sub_45:         jp      pe,sub_46
        ld      b, #45
        jp      fail_routine
sub_46:         jr      c,sub_47
        ld      b, #46
        jp      fail_routine
sub_47:         sub     a,(ix)
                jp      p,sub_48
        ld      b, #47
        jp      fail_routine
sub_48:         jp      po,sub_49
        ld      b, #48
        jp      fail_routine
sub_49:         jr      nc,sub_50
        ld      b, #49
        jp      fail_routine
sub_50:         jr      z,sub_51
        ld      b, #50
        jp      fail_routine
sub_51:         sub     a,2(ix)
                jr      nz,sub_52
        ld      b, #51
        jp      fail_routine
sub_52:         cp      #0x80+1
                jr      z,sub_53
        ld      b, #52
        jp      fail_routine
sub_53:         ld      iy,#var3
                ld      a,#0x7f
                sub     a,-2(iy)
                jp      m,sub_54
        ld      b, #53
        jp      fail_routine
sub_54:         jp      pe,sub_55
        ld      b, #54
        jp      fail_routine
sub_55:         jr      c,sub_56
        ld      b, #55
        jp      fail_routine
sub_56:         jr      nz,sub_57
        ld      b, #56
        jp      fail_routine
sub_57:         sub     a,(iy)
                jp      p,sub_58
        ld      b, #57
        jp      fail_routine
sub_58:         jp      po,sub_59
        ld      b, #58
        jp      fail_routine
sub_59:         jr      nc,sub_60
        ld      b, #59
        jp      fail_routine
sub_60:         jr      z,sub_61
        ld      b, #60
        jp      fail_routine
sub_61:         sub     a,2(iy)
                jr      nz,sub_62
        ld      b, #61
        jp      fail_routine
sub_62:         cp      #0x80+1
                jr      z,sbc_0
        ld      b, #62
        jp      fail_routine
sbc_0:          nop
        ld hl, #msg_sbc_0
        call print_sub
                ld      a,#0x7f
                ld      b,#0
                sub     a,b                     ;clear carry flag
                ld      b,#0xff
                sbc     a,b
                jp      m,sbc_1
        ld      b, #0
        jp      fail_routine
sbc_1:          jp      pe,sbc_2
        ld      b, #1
        jp      fail_routine
sbc_2:          jr      c,sbc_3
        ld      b, #2
        jp      fail_routine
sbc_3:          jr      nz,sbc_4
        ld      b, #3
        jp      fail_routine
sbc_4:          ld      b,#0x7f
                sbc     a,b
                jp      p,sbc_5
        ld      b, #4
        jp      fail_routine
sbc_5:          jp      pe,sbc_6
        ld      b, #5
        jp      fail_routine
sbc_6:          jr      nc,sbc_7
        ld      b, #6
        jp      fail_routine
sbc_7:          jr      z,sbc_8
        ld      b, #7
        jp      fail_routine
sbc_8:          ld      b,#0xff
                sbc     a,b
                jp      po,sbc_9
        ld      b, #8
        jp      fail_routine
sbc_9:          jr      nz,sbc_10
        ld      b, #9
        jp      fail_routine
sbc_10:         ld      b,#0
                sbc     a,b
                jr      z,sbc_11
        ld      b, #10
        jp      fail_routine
sbc_11:         ld      a,#0xaa
                ld      c,#0xff
                sbc     a,c
                jr      c,sbc_12
        ld      b, #11
        jp      fail_routine
sbc_12:         ld      c,#0
                sbc     a,c
                jr      nc,sbc_13
        ld      b, #12
        jp      fail_routine
sbc_13:         cp      #0xaa
                jr      z,sbc_14
        ld      b, #13
        jp      fail_routine
sbc_14:         ld      a,#0x55
                ld      d,#0xff
                sbc     a,d
                jr      c,sbc_15
        ld      b, #14
        jp      fail_routine
sbc_15:         ld      d,#0
                sbc     a,d
                jr      nc,sbc_16
        ld      b, #15
        jp      fail_routine
sbc_16:         cp      #0x55
                jr      z,sbc_17
        ld      b, #16
        jp      fail_routine
sbc_17:         ld      a,#0xaa
                ld      e,#0xff
                sbc     a,e
                jr      c,sbc_18
        ld      b, #17
        jp      fail_routine
sbc_18:         ld      e,#0
                sbc     a,e
                jr      nc,sbc_19
        ld      b, #18
        jp      fail_routine
sbc_19:         cp      #0xaa
                jr      z,sbc_20
        ld      b, #19
        jp      fail_routine
sbc_20:         ld      a,#0x55
                ld      h,#0xff
                sbc     a,h
                jr      c,sbc_21
        ld      b, #20
        jp      fail_routine
sbc_21:         ld      h,#0
                sbc     a,h
                jr      nc,sbc_22
        ld      b, #21
        jp      fail_routine
sbc_22:         cp      #0x55
                jr      z,sbc_23
        ld      b, #22
        jp      fail_routine
sbc_23:         ld      a,#0xaa
                ld      l,#0xff
                sbc     a,l
                jr      c,sbc_24
        ld      b, #23
        jp      fail_routine
sbc_24:         ld      l,#0
                sbc     a,l
                jr      nc,sbc_25
        ld      b, #24
        jp      fail_routine
sbc_25:         cp      #0xaa
                jr      z,sbc_26
        ld      b, #25
        jp      fail_routine
sbc_26:         ld      a,#0x7f
                sbc     a,#0xff
                jp      m,sbc_27
        ld      b, #26
        jp      fail_routine
sbc_27:         jp      pe,sbc_28
        ld      b, #27
        jp      fail_routine
sbc_28:         jr      c,sbc_29
        ld      b, #28
        jp      fail_routine
sbc_29:         jr      nz,sbc_30
        ld      b, #29
        jp      fail_routine
sbc_30:         sbc     a,#0x7f
                jp      p,sbc_31
        ld      b, #30
        jp      fail_routine
sbc_31:         jp      pe,sbc_32
        ld      b, #31
        jp      fail_routine
sbc_32:         jr      nc,sbc_33
        ld      b, #32
        jp      fail_routine
sbc_33:         jr      z,sbc_34
        ld      b, #33
        jp      fail_routine
sbc_34:         sbc     a,#0xff
                jr      nz,sbc_35
        ld      b, #34
        jp      fail_routine
sbc_35:         cp      #1
                jr      z,sbc_36
        ld      b, #35
        jp      fail_routine
sbc_36:         ld      hl,#var1
                ld      a,#0x7f
                sbc     a,(hl)
                jp      m,sbc_37
        ld      b, #36
        jp      fail_routine
sbc_37:         jp      pe,sbc_38
        ld      b, #37
        jp      fail_routine
sbc_38:         jr      c,sbc_39
        ld      b, #38
        jp      fail_routine
sbc_39:         jr      nz,sbc_40
        ld      b, #39
        jp      fail_routine
sbc_40:         ld      hl,#var5
                sbc     a,(hl)
                jp      p,sbc_41
        ld      b, #40
        jp      fail_routine
sbc_41:         jp      pe,sbc_42
        ld      b, #41
        jp      fail_routine
sbc_42:         jr      nc,sbc_43
        ld      b, #42
        jp      fail_routine
sbc_43:         jr      z,sbc_44
        ld      b, #43
        jp      fail_routine
sbc_44:         ld      hl,#var2
                sbc     a,(hl)
                jr      nz,sbc_45
        ld      b, #44
        jp      fail_routine
sbc_45:         cp      #0xaa+1
                jr      z,sbc_46
        ld      b, #45
        jp      fail_routine
sbc_46:         ld      ix,#var3
                ld      a,#0x7f
                sbc     a,-2(ix)
                jp      m,sbc_47
        ld      b, #46
        jp      fail_routine
sbc_47:         jp      pe,sbc_48
        ld      b, #47
        jp      fail_routine
sbc_48:         jr      c,sbc_49
        ld      b, #48
        jp      fail_routine
sbc_49:         jr      nz,sbc_50
        ld      b, #49
        jp      fail_routine
sbc_50:         sbc     a,2(ix)
                jp      p,sbc_51
        ld      b, #50
        jp      fail_routine
sbc_51:         jp      pe,sbc_52
        ld      b, #51
        jp      fail_routine
sbc_52:         jr      nc,sbc_53
        ld      b, #52
        jp      fail_routine
sbc_53:         jr      z,sbc_54
        ld      b, #53
        jp      fail_routine
sbc_54:         sbc     a,-1(ix)
                jr      nz,sbc_55
        ld      b, #54
        jp      fail_routine
sbc_55:         cp      #0xaa+1
                jr      z,sbc_56
        ld      b, #55
        jp      fail_routine
sbc_56:         ld      iy,#var3
                ld      a,#0x7f
                sbc     a,-2(ix)
                jp      m,sbc_57
        ld      b, #56
        jp      fail_routine
sbc_57:         jp      pe,sbc_58
        ld      b, #57
        jp      fail_routine
sbc_58:         jr      c,sbc_59
        ld      b, #58
        jp      fail_routine
sbc_59:         jr      nz,sbc_60
        ld      b, #59
        jp      fail_routine
sbc_60:         sbc     a,2(ix)
                jp      p,sbc_61
        ld      b, #60
        jp      fail_routine
sbc_61:         jp      pe,sbc_62
        ld      b, #61
        jp      fail_routine
sbc_62:         jr      nc,sbc_63
        ld      b, #62
        jp      fail_routine
sbc_63:         jr      z,sbc_64
        ld      b, #63
        jp      fail_routine
sbc_64:         sbc     a,1(ix)
                jr      nz,sbc_65
        ld      b, #64
        jp      fail_routine
sbc_65:         cp      #0x55+1
                jr      z,and_0
        ld      b, #65
        jp      fail_routine
and_0:          nop
        ld hl, #msg_and_0
        call print_sub
                ld      a,#0xff
                add     a,#1                    ;set carry
                ld      a,#0xff
                ld      b,#0xaa
                and     a,b
                jr      nc,and_1
        ld      b, #0
        jp      fail_routine
and_1:          jp      m,and_2
        ld      b, #1
        jp      fail_routine
and_2:          jp      pe,and_3
        ld      b, #2
        jp      fail_routine
and_3:          jr      nz,and_4
        ld      b, #3
        jp      fail_routine
and_4:          ld      b,#0x55
                and     a,b
                jp      p,and_5
        ld      b, #4
        jp      fail_routine
and_5:          jr      z,and_6
        ld      b, #5
        jp      fail_routine
and_6:          ld      a,#0xff
                ld      b,#0x7f
                and     a,b
                jp      po,and_7
        ld      b, #6
        jp      fail_routine
and_7:          ld      b,#0x55
                and     a,b
                jp      pe,and_8
        ld      b, #7
        jp      fail_routine
and_8:          ld      a,#0xff
                ld      c,#0x80
                and     a,c
                jp      m,and_9
        ld      b, #8
        jp      fail_routine
and_9:          cp      #0x80
                jr      z,and_10
        ld      b, #9
        jp      fail_routine
and_10:         ld      a,#0xff
                ld      d,#0x7f
                and     a,d
                jp      p,and_11
        ld      b, #10
        jp      fail_routine
and_11:         cp      #0x7f
                jr      z,and_12
        ld      b, #11
        jp      fail_routine
and_12:         ld      a,#0xff
                ld      e,#0xaa
                and     a,e
                jp      m,and_13
        ld      b, #12
        jp      fail_routine
and_13:         cp      #0xaa
                jr      z,and_14
        ld      b, #13
        jp      fail_routine
and_14:         ld      a,#0xff
                ld      h,#0x55
                and     a,h
                jp      p,and_15
        ld      b, #14
        jp      fail_routine
and_15:         cp      #0x55
                jr      z,and_16
        ld      b, #15
        jp      fail_routine
and_16:         ld      a,#0xff
                ld      l,#0xaa
                and     a,l
                jp      m,and_17
        ld      b, #16
        jp      fail_routine
and_17:         cp      #0xaa
                jr      z,and_18
        ld      b, #17
        jp      fail_routine
and_18:         ld      a,#0xff
                and     a,#0xaa
                jp      m,and_19
        ld      b, #18
        jp      fail_routine
and_19:         jr      nz,and_20
        ld      b, #19
        jp      fail_routine
and_20:         and     a,#0x55
                jp      p,and_21
        ld      b, #20
        jp      fail_routine
and_21:         jr      z,and_22
        ld      b, #21
        jp      fail_routine
and_22:         ld      a,#0xff
                and     a,#0x7f
                jp      po,and_23
        ld      b, #22
        jp      fail_routine
and_23:         and     a,#0x55
                jp      pe,and_24
        ld      b, #23
        jp      fail_routine
and_24:         jr      nz,and_25
        ld      b, #24
        jp      fail_routine
and_25:         and     a,#0xaa
                jr      z,and_26
        ld      b, #25
        jp      fail_routine
and_26:         ld      a,#0xff
                and     a,#0xaa
                cp      #0xaa
                jr      z,and_27
        ld      b, #26
        jp      fail_routine
and_27:         ld      hl,#var4
                ld      a,#0xff
                and     a,(hl)
                jp      m,and_28
        ld      b, #27
        jp      fail_routine
and_28:         jr      nz,and_29
        ld      b, #28
        jp      fail_routine
and_29:         ld      hl,#var2
                and     a,(hl)
                jp      p,and_30
        ld      b, #29
        jp      fail_routine
and_30:         jr      z,and_31
        ld      b, #30
        jp      fail_routine
and_31:         ld      a,#0xff
                ld      hl,#var5
                and     a,(hl)
                jp      po,and_32
        ld      b, #31
        jp      fail_routine
and_32:         ld      hl,#var2
                and     a,(hl)
                jp      pe,and_33
        ld      b, #32
        jp      fail_routine
and_33:         cp      #0x55
                jr      z,and_34
        ld      b, #33
        jp      fail_routine
and_34:         ld      ix,#var3
                ld      a,#0xff
                and     a,1(ix)
                jp      m,and_35
        ld      b, #34
        jp      fail_routine
and_35:         jr      nz,and_36
        ld      b, #35
        jp      fail_routine
and_36:         and     a,-1(ix)
                jp      p,and_37
        ld      b, #36
        jp      fail_routine
and_37:         jr      z,and_38
        ld      b, #37
        jp      fail_routine
and_38:         ld      a,#0xff
                and     a,2(ix)
                jp      po,and_39
        ld      b, #38
        jp      fail_routine
and_39:         and     a,-1(ix)
                jp      pe,and_40
        ld      b, #39
        jp      fail_routine
and_40:         cp      #0x55
                jr      z,and_41
        ld      b, #40
        jp      fail_routine
and_41:         ld      iy,#var3
                ld      a,#0xff
                and     a,1(iy)
                jp      m,and_42
        ld      b, #41
        jp      fail_routine
and_42:         jr      nz,and_43
        ld      b, #42
        jp      fail_routine
and_43:         and     a,-1(iy)
                jp      p,and_44
        ld      b, #43
        jp      fail_routine
and_44:         jr      z,and_45
        ld      b, #44
        jp      fail_routine
and_45:         ld      a,#0xff
                and     a,2(iy)
                jp      po,and_46
        ld      b, #45
        jp      fail_routine
and_46:         and     a,-1(iy)
                jp      pe,and_47
        ld      b, #46
        jp      fail_routine
and_47:         cp      #0x55
                jr      z,or_0
        ld      b, #47
        jp      fail_routine
or_0:           nop
        ld hl, #msg_or_0
        call print_sub
                ld      a,#0
                ld      b,#0x7f
                or      a,b
                jp      p,or_1
        ld      b, #0
        jp      fail_routine
or_1:           jp      po,or_2
        ld      b, #1
        jp      fail_routine
or_2:           ld      b,#0x80
                or      a,b
                jp      m,or_3
        ld      b, #2
        jp      fail_routine
or_3:           jp      pe,or_4
        ld      b, #3
        jp      fail_routine
or_4:           cp      #0xff
                jr      z,or_5
        ld      b, #4
        jp      fail_routine
or_5:           ld      a,#0
                ld      b,#0
                or      a,b
                jr      z,or_6
        ld      b, #5
        jp      fail_routine
or_6:           ld      b,#0x55
                or      a,b
                jr      nz,or_7
        ld      b, #6
        jp      fail_routine
or_7:           cp      #0x55
                jr      z,or_8
        ld      b, #7
        jp      fail_routine
or_8:           ld      a,#0xff
                add     a,#1
                jr      c,or_9
        ld      b, #8
        jp      fail_routine
or_9:           ld      b,#0x7f
                or      a,b
                jr      nc,or_10
        ld      b, #9
        jp      fail_routine
or_10:          cp      #0x7f
                jr      z,or_11
        ld      b, #10
        jp      fail_routine
or_11:          ld      a,#0
                ld      c,#0x55
                or      a,c
                cp      #0x55
                jr      z,or_12
        ld      b, #11
        jp      fail_routine
or_12:          ld      c,#0xaa
                or      a,c
                cp      #0xff
                jr      z,or_13
        ld      b, #12
        jp      fail_routine
or_13:          ld      a,#0
                ld      d,#0xaa
                or      a,d
                cp      #0xaa
                jr      z,or_14
        ld      b, #13
        jp      fail_routine
or_14:          ld      e,#0x55
                or      a,e
                cp      #0xff
                jr      z,or_15
        ld      b, #14
        jp      fail_routine
or_15:          ld      a,#0
                ld      h,#0x80
                or      a,h
                cp      #0x80
                jr      z,or_16
        ld      b, #15
        jp      fail_routine
or_16:          ld      l,#0x7f
                or      a,l
                cp      #0xff
                jr      z,or_17
        ld      b, #16
        jp      fail_routine
or_17:          ld      a,#0
                or      a,#0x7f
                jp      p,or_18
        ld      b, #17
        jp      fail_routine
or_18:          jp      po,or_19
        ld      b, #18
        jp      fail_routine
or_19:          or      a,#0x80
                jp      m,or_20
        ld      b, #19
        jp      fail_routine
or_20:          jp      pe,or_21
        ld      b, #20
        jp      fail_routine
or_21:          cp      #0xff
                jr      z,or_22
        ld      b, #21
        jp      fail_routine
or_22:          ld      a,#0
                or      a,#0
                jr      z,or_23
        ld      b, #22
        jp      fail_routine
or_23:          or      a,#0x7f
                jr      nz,or_24
        ld      b, #23
        jp      fail_routine
or_24:          ld      a,#0xff
                add     a,#1
                jr      c,or_25
        ld      b, #24
        jp      fail_routine
or_25:          or      a,#0x55
                jr      nc,or_26
        ld      b, #25
        jp      fail_routine
or_26:          cp      #0x55
                jr      z,or_27
        ld      b, #26
        jp      fail_routine
or_27:          ld      hl,#var5
                ld      a,#0
                or      a,(hl)
                jp      p,or_28
        ld      b, #27
        jp      fail_routine
or_28:          jp      po,or_29
        ld      b, #28
        jp      fail_routine
or_29:          ld      hl,#var3
                or      a,(hl)
                jp      m,or_30
        ld      b, #29
        jp      fail_routine
or_30:          jp      pe,or_31
        ld      b, #30
        jp      fail_routine
or_31:          cp      #0xff
                jr      z,or_32
        ld      b, #31
        jp      fail_routine
or_32:          ld      hl,#t_var1
                ld      a,#0
                ld      (hl),a
                or      a,(hl)
                jr      z,or_33
        ld      b, #32
        jp      fail_routine
or_33:          ld      hl,#var2
                or      a,(hl)
                jr      nz,or_34
        ld      b, #33
        jp      fail_routine
or_34:          cp      #0x55
                jr      z,or_35
        ld      b, #34
        jp      fail_routine
or_35:          ld      ix,#var3
                ld      a,#0
                or      a,2(ix)
                jp      p,or_36
        ld      b, #35
        jp      fail_routine
or_36:          jp      po,or_37
        ld      b, #36
        jp      fail_routine
or_37:          or      a,(ix)
                jp      m,or_38
        ld      b, #37
        jp      fail_routine
or_38:          jp      pe,or_39
        ld      b, #38
        jp      fail_routine
or_39:          cp      #0xff
                jr      z,or_40
        ld      b, #39
        jp      fail_routine
or_40:          ld      ix,#t_var3
                ld      a,#0
                ld      -2(ix),a
                or      a,-2(ix)
                jr      z,or_41
        ld      b, #40
        jp      fail_routine
or_41:          ld      2(ix),#0xaa
                or      a,2(ix)
                jr      nz,or_42
        ld      b, #41
        jp      fail_routine
or_42:          cp      #0xaa
                jr      z,or_43
        ld      b, #42
        jp      fail_routine
or_43:          ld      iy,#var3
                ld      a,#0
                or      a,2(iy)
                jp      p,or_44
        ld      b, #43
        jp      fail_routine
or_44:          jp      po,or_45
        ld      b, #44
        jp      fail_routine
or_45:          or      a,(iy)
                jp      m,or_46
        ld      b, #45
        jp      fail_routine
or_46:          jp      pe,or_47
        ld      b, #46
        jp      fail_routine
or_47:          cp      #0xff
                jr      z,or_48
        ld      b, #47
        jp      fail_routine
or_48:          ld      iy,#t_var3
                ld      a,#0
                ld      -2(iy),a
                or      a,-2(iy)
                jr      z,or_49
        ld      b, #48
        jp      fail_routine
or_49:          ld      2(iy),#0x55
                or      a,2(iy)
                jr      nz,or_50
        ld      b, #49
        jp      fail_routine
or_50:          cp      #0x55
                jr      z,xor_0
        ld      b, #50
        jp      fail_routine
xor_0:          nop
        ld hl, #msg_xor_0
        call print_sub
                ld      a,#0xff
                ld      b,#0x55
                xor     a,b
                jp      m,xor_1
        ld      b, #0
        jp      fail_routine
xor_1:          jp      pe,xor_2
        ld      b, #1
        jp      fail_routine
xor_2:          ld      b,#0x80
                xor     a,b
                jp      p,xor_3
        ld      b, #2
        jp      fail_routine
xor_3:          jp      po,xor_4
        ld      b, #3
        jp      fail_routine
xor_4:          cp      #0x2
                jr      z,xor_5
        ld      b, #4
        jp      fail_routine
xor_5:          ld      a,#0xff
                ld      b,#0xff
                xor     a,b
                jr      z,xor_6
        ld      b, #5
        jp      fail_routine
xor_6:          ld      b,#0x55
                xor     a,b
                jr      nz,xor_7
        ld      b, #6
        jp      fail_routine
xor_7:          cp      #0x55
                jr      z,xor_8
        ld      b, #7
        jp      fail_routine
xor_8:          ld      a,#0xff
                add     a,#1
                jr      c,xor_9
        ld      b, #8
        jp      fail_routine
xor_9:          ld      b,#0xaa
                xor     a,b
                jr      nc,xor_10
        ld      b, #9
        jp      fail_routine
xor_10:         cp      #0xaa
                jr      z,xor_11
        ld      b, #10
        jp      fail_routine
xor_11:         ld      a,#0xff
                ld      c,#0x7f
                xor     a,c
                jp      m,xor_12
        ld      b, #11
        jp      fail_routine
xor_12:         cp      #0x80
                jr      z,xor_13
        ld      b, #12
        jp      fail_routine
xor_13:         ld      a,#0xff
                ld      d,#0x55
                xor     a,d
                jp      m,xor_14
        ld      b, #13
        jp      fail_routine
xor_14:         cp      #0xaa
                jr      z,xor_15
        ld      b, #14
        jp      fail_routine
xor_15:         ld      e,#0x55
                xor     a,e
                jp      m,xor_16
        ld      b, #15
        jp      fail_routine
xor_16:         cp      #0xff
                jr      z,xor_17
        ld      b, #16
        jp      fail_routine
xor_17:         ld      a,#0xff
                ld      h,#0x7f
                xor     a,h
                jp      po,xor_18
        ld      b, #17
        jp      fail_routine
xor_18:         ld      l,#0x7f
                xor     a,l
                jp      pe,xor_19
        ld      b, #18
        jp      fail_routine
xor_19:         cp      #0xff
                jr      z,xor_20
        ld      b, #19
        jp      fail_routine
xor_20:         ld      a,#0xff
                add     a,#1
                jr      c,xor_21
        ld      b, #20
        jp      fail_routine
xor_21:         ld      b,#0x7f
                xor     a,b
                jr      nc,xor_22
        ld      b, #21
        jp      fail_routine
xor_22:         cp      #0x7f
                jr      z,xor_23
        ld      b, #22
        jp      fail_routine
xor_23:         ld      a,#0xff
                xor     a,#0x7f
                jp      po,xor_24
        ld      b, #23
        jp      fail_routine
xor_24:         jp      m,xor_25
        ld      b, #24
        jp      fail_routine
xor_25:         xor     a,#0x7f
                jp      pe,xor_26
        ld      b, #25
        jp      fail_routine
xor_26:         jp      m,xor_27
        ld      b, #26
        jp      fail_routine
xor_27:         xor     a,#0xaa
                jp      p,xor_28
        ld      b, #27
        jp      fail_routine
xor_28:         cp      #0x55
                jr      z,xor_29
        ld      b, #28
        jp      fail_routine
xor_29:         ld      a,#0xff
                xor     a,#0xff
                jr      z,xor_30
        ld      b, #29
        jp      fail_routine
xor_30:         xor     a,#0x80
                jr      nz,xor_31
        ld      b, #30
        jp      fail_routine
xor_31:         cp      #0x80
                jr      z,xor_32
        ld      b, #31
        jp      fail_routine
xor_32:         ld      hl,#var5
                ld      a,#0xff
                xor     a,(hl)
                jp      m,xor_33
        ld      b, #32
        jp      fail_routine
xor_33:         jp      po,xor_34
        ld      b, #33
        jp      fail_routine
xor_34:         xor     a,(hl)
                jp      m,xor_35
        ld      b, #34
        jp      fail_routine
xor_35:         jp      pe,xor_36
        ld      b, #35
        jp      fail_routine
xor_36:         ld      hl,#var3
                xor     a,(hl)
                jp      p,xor_37
        ld      b, #36
        jp      fail_routine
xor_37:         cp      #0x7f
                jr      z,xor_38
        ld      b, #37
        jp      fail_routine
xor_38:         ld      hl,#var1
                ld      a,#0xff
                xor     a,(hl)
                jr      z,xor_39
        ld      b, #38
        jp      fail_routine
xor_39:         ld      hl,#var2
                xor     a,(hl)
                jr      nz,xor_40
        ld      b, #39
        jp      fail_routine
xor_40:         cp      #0x55
                jr      z,xor_41
        ld      b, #40
        jp      fail_routine
xor_41:         ld      ix,#var3
                ld      a,#0xff
                xor     a,2(ix)
                jp      m,xor_42
        ld      b, #41
        jp      fail_routine
xor_42:         jp      po,xor_43
        ld      b, #42
        jp      fail_routine
xor_43:         xor     a,2(ix)
                jp      m,xor_44
        ld      b, #43
        jp      fail_routine
xor_44:         jp      pe,xor_45
        ld      b, #44
        jp      fail_routine
xor_45:         xor     a,1(ix)
                jp      p,xor_46
        ld      b, #45
        jp      fail_routine
xor_46:         cp      #0x55
                jr      z,xor_47
        ld      b, #46
        jp      fail_routine
xor_47:         ld      a,#0xff
                xor     a,-2(ix)
                jr      z,xor_48
        ld      b, #47
        jp      fail_routine
xor_48:         xor     a,1(ix)
                jr      nz,xor_49
        ld      b, #48
        jp      fail_routine
xor_49:         cp      #0xaa
                jr      z,xor_50
        ld      b, #49
        jp      fail_routine
xor_50:         ld      iy,#var3
                ld      a,#0xff
                xor     a,2(iy)
                jp      m,xor_51
        ld      b, #50
        jp      fail_routine
xor_51:         jp      po,xor_52
        ld      b, #51
        jp      fail_routine
xor_52:         xor     a,2(iy)
                jp      m,xor_53
        ld      b, #52
        jp      fail_routine
xor_53:         jp      pe,xor_54
        ld      b, #53
        jp      fail_routine
xor_54:         xor     a,1(iy)
                jp      p,xor_55
        ld      b, #54
        jp      fail_routine
xor_55:         cp      #0x55
                jr      z,xor_56
        ld      b, #55
        jp      fail_routine
xor_56:         ld      a,#0xff
                xor     a,-2(iy)
                jr      z,xor_57
        ld      b, #56
        jp      fail_routine
xor_57:         xor     a,-1(iy)
                jr      nz,xor_58
        ld      b, #57
        jp      fail_routine
xor_58:         cp      #0x55
                jr      z,cp_0
        ld      b, #58
        jp      fail_routine
cp_0:           nop
        ld hl, #msg_cp_0
        call print_sub
                ld      a,#0
                ld      b,#0
                cp      a,b
                jr      z,cp_1
        ld      b, #0
        jp      fail_routine
cp_1:           jp      p,cp_2
        ld      b, #1
        jp      fail_routine
cp_2:           jr      nc,cp_3
        ld      b, #2
        jp      fail_routine
cp_3:           ld      b,#0x55
                cp      a,b
                jr      nz,cp_4
        ld      b, #3
        jp      fail_routine
cp_4:           jp      m,cp_5
        ld      b, #4
        jp      fail_routine
cp_5:           jr      c,cp_6
        ld      b, #5
        jp      fail_routine
cp_6:           ld      a,#0x80
                ld      b,#0x7f
                cp      a,b
                jp      pe,cp_7
        ld      b, #6
        jp      fail_routine
cp_7:           jr      nc,cp_8
        ld      b, #7
        jp      fail_routine
cp_8:           ld      a,#0x7f
                ld      b,#0x80
                cp      a,b
                jp      pe,cp_9
        ld      b, #8
        jp      fail_routine
cp_9:           jr      c,cp_10
        ld      b, #9
        jp      fail_routine
cp_10:          ld      b,#0
                cp      a,b
                jp      po,cp_11
        ld      b, #10
        jp      fail_routine
cp_11:          jr      nc,cp_12
        ld      b, #11
        jp      fail_routine
cp_12:          ld      a,#0x80
                ld      c,#0
                cp      a,c
                jp      m,cp_13
        ld      b, #12
        jp      fail_routine
cp_13:          ld      c,#0x80
                cp      a,c
                jr      z,cp_14
        ld      b, #13
        jp      fail_routine
cp_14:          ld      a,#0x7f
                ld      d,#0x55
                cp      a,d
                jp      p,cp_15
        ld      b, #14
        jp      fail_routine
cp_15:          jr      nz,cp_16
        ld      b, #15
        jp      fail_routine
cp_16:          ld      e,#0x7f
                cp      a,e
                jr      z,cp_17
        ld      b, #16
        jp      fail_routine
cp_17:          ld      a,#0x80
                ld      h,#0xff
                cp      a,h
                jp      m,cp_18
        ld      b, #17
        jp      fail_routine
cp_18:          jr      c,cp_19
        ld      b, #18
        jp      fail_routine
cp_19:          ld      l,#0x80
                cp      a,l
                jr      z,cp_20
        ld      b, #19
        jp      fail_routine
cp_20:          ld      a,#0x80
                cp      a,#0x7f
                jp      p,cp_21
        ld      b, #20
        jp      fail_routine
cp_21:          jp      pe,cp_22
        ld      b, #21
        jp      fail_routine
cp_22:          jr      nz,cp_23
        ld      b, #22
        jp      fail_routine
cp_23:          cp      a,#0x80
                jp      p,cp_24
        ld      b, #23
        jp      fail_routine
cp_24:          jp      po,cp_25
        ld      b, #24
        jp      fail_routine
cp_25:          jr      z,cp_26
        ld      b, #25
        jp      fail_routine
cp_26:          ld      a,#0x55
                cp      a,#0x7f
                jr      c,cp_27
        ld      b, #26
        jp      fail_routine
cp_27:          jp      m,cp_28
        ld      b, #27
        jp      fail_routine
cp_28:          cp      a,#0x55
                jr      nc,cp_29
        ld      b, #28
        jp      fail_routine
cp_29:          jr      z,cp_30
        ld      b, #29
        jp      fail_routine
cp_30:          ld      a,#0x80
                ld      hl,#var5
                cp      a,(hl)
                jp      p,cp_31
        ld      b, #30
        jp      fail_routine
cp_31:          jp      pe,cp_32
        ld      b, #31
        jp      fail_routine
cp_32:          jr      nz,cp_33
        ld      b, #32
        jp      fail_routine
cp_33:          ld      hl,#var3
                cp      a,(hl)
                jp      p,cp_34
        ld      b, #33
        jp      fail_routine
cp_34:          jp      po,cp_35
        ld      b, #34
        jp      fail_routine
cp_35:          jr      z,cp_36
        ld      b, #35
        jp      fail_routine
cp_36:          ld      a,#0x55
                ld      hl,#var5
                cp      a,(hl)
                jr      c,cp_37
        ld      b, #36
        jp      fail_routine
cp_37:          jp      m,cp_38
        ld      b, #37
        jp      fail_routine
cp_38:          ld      hl,#var2
                cp      a,(hl)
                jr      nc,cp_39
        ld      b, #38
        jp      fail_routine
cp_39:          jp      p,cp_40
        ld      b, #39
        jp      fail_routine
cp_40:          jr      z,cp_41
        ld      b, #40
        jp      fail_routine
cp_41:          ld      a,#0x80
                ld      ix,#var3
                cp      a,2(ix)
                jp      p,cp_42
        ld      b, #41
        jp      fail_routine
cp_42:          jp      pe,cp_43
        ld      b, #42
        jp      fail_routine
cp_43:          jr      nz,cp_44
        ld      b, #43
        jp      fail_routine
cp_44:          cp      a,(ix)
                jp      p,cp_45
        ld      b, #44
        jp      fail_routine
cp_45:          jp      po,cp_46
        ld      b, #45
        jp      fail_routine
cp_46:          jr      z,cp_47
        ld      b, #46
        jp      fail_routine
cp_47:          ld      a,#0x55
                cp      a,-2(ix)
                jr      nz,cp_48
        ld      b, #47
        jp      fail_routine
cp_48:          jr      c,cp_49
        ld      b, #48
        jp      fail_routine
cp_49:          cp      a,-1(ix)
                jr      z,cp_50
        ld      b, #49
        jp      fail_routine
cp_50:          jr      nc,cp_51
        ld      b, #50
        jp      fail_routine
cp_51:          ld      iy,#var3
                ld      a,#0x80
                cp      a,2(iy)
                jp      p,cp_52
        ld      b, #51
        jp      fail_routine
cp_52:          jp      pe,cp_53
        ld      b, #52
        jp      fail_routine
cp_53:          jr      nz,cp_54
        ld      b, #53
        jp      fail_routine
cp_54:          cp      a,(iy)
                jp      p,cp_55
        ld      b, #54
        jp      fail_routine
cp_55:          jp      po,cp_56
        ld      b, #55
        jp      fail_routine
cp_56:          jr      z,cp_57
        ld      b, #56
        jp      fail_routine
cp_57:          ld      a,#0x55
                cp      a,-2(iy)
                jr      nz,cp_58
        ld      b, #57
        jp      fail_routine
cp_58:          jr      c,cp_59
        ld      b, #58
        jp      fail_routine
cp_59:          cp      a,-1(iy)
                jr      z,cp_60
        ld      b, #59
        jp      fail_routine
cp_60:          jr      nc,inc_0
        ld      b, #60
        jp      fail_routine
inc_0:          nop
        ld hl, #msg_inc
        call print_sub
                ld      a,#0x7f
                cp      a,#0x7f
                jr      z,inc_1
        ld      b, #0
        jp      fail_routine
inc_1:          inc     a
                jp      pe,inc_2
        ld      b, #1
        jp      fail_routine
inc_2:          jp      m,inc_3
        ld      b, #2
        jp      fail_routine
inc_3:          jr      nz,inc_4
        ld      b, #3
        jp      fail_routine
inc_4:          ld      a,#0x55
                inc     a
                jp      po,inc_5
        ld      b, #4
        jp      fail_routine
inc_5:          jp      p,inc_6
        ld      b, #5
        jp      fail_routine
inc_6:          cp      a,#0x55+1
                jr      z,inc_7
        ld      b, #6
        jp      fail_routine
inc_7:          ld      a,#0xff-1
                inc     a
                jr      nz,inc_8
        ld      b, #7
        jp      fail_routine
inc_8:          jp      m,inc_9
        ld      b, #8
        jp      fail_routine
inc_9:          inc     a
                jr      z,inc_10
        ld      b, #9
        jp      fail_routine
inc_10:         ld      b,#0xaa
                inc     b
                jp      m,inc_11
        ld      b, #10
        jp      fail_routine
inc_11:         ld      a,b
                cp      a,#0xaa+1
                jr      z,inc_12
        ld      b, #11
        jp      fail_routine
inc_12:         ld      c,#0x80
                inc     c
                jp      m,inc_13
        ld      b, #12
        jp      fail_routine
inc_13:         ld      a,c
                cp      a,#0x80+1
                jr      z,inc_14
        ld      b, #13
        jp      fail_routine
inc_14:         ld      d,#0xff
                inc     d
                jr      z,inc_15
        ld      b, #14
        jp      fail_routine
inc_15:         ld      e,#0x55
                inc     e
                jp      p,inc_16
        ld      b, #15
        jp      fail_routine
inc_16:         ld      a,e
                cp      a,#0x55+1
                jr      z,inc_17
        ld      b, #16
        jp      fail_routine
inc_17:         ld      h,#0x7f
                inc     h
                jp      pe,inc_18
        ld      b, #17
        jp      fail_routine
inc_18:         ld      a,h
                cp      a,#0x80
                jr      z,inc_19
        ld      b, #18
        jp      fail_routine
inc_19:         ld      l,#0xaa
                inc     l
                jp      m,inc_20
        ld      b, #19
        jp      fail_routine
inc_20:         ld      a,l
                cp      a,#0xaa+1
                jr      z,inc_21
        ld      b, #20
        jp      fail_routine
inc_21:         ld      hl,#t_var1
                ld      a,#0x7f
                ld      (hl),a
                cp      a,(hl)
                jr      z,inc_22
        ld      b, #21
        jp      fail_routine
inc_22:         inc     (hl)
                jp      m,inc_23
        ld      b, #22
        jp      fail_routine
inc_23:         jp      pe,inc_24
        ld      b, #23
        jp      fail_routine
inc_24:         ld      a,#0x55
                ld      (hl),a
                inc     (hl)
                jp      p,inc_25
        ld      b, #24
        jp      fail_routine
inc_25:         jp      po,inc_26
        ld      b, #25
        jp      fail_routine
inc_26:         ld      a,(hl)
                cp      a,#0x55+1
                jr      z,inc_27
        ld      b, #26
        jp      fail_routine
inc_27:         ld      a,#0xff
                ld      (hl),a
                inc     (hl)
                jr      z,inc_28
        ld      b, #27
        jp      fail_routine
inc_28:         inc     (hl)
                jr      nz,inc_29
        ld      b, #28
        jp      fail_routine
inc_29:         ld      a,(hl)
                cp      a,#1
                jr      z,inc_30
        ld      b, #29
        jp      fail_routine
inc_30:         ld      a,#0xaa
                ld      (hl),a
                inc     (hl)
                jp      m,inc_31
        ld      b, #30
        jp      fail_routine
inc_31:         ld      a,(hl)
                cp      a,#0xaa+1
                jr      z,inc_32
        ld      b, #31
        jp      fail_routine
inc_32:         ld      ix,#t_var3
                ld      a,#0x7f
                ld      -2(ix),a
                cp      a,#0x7f
                jr      z,inc_33
        ld      b, #32
        jp      fail_routine
inc_33:         inc     -2(ix)
                jp      m,inc_34
        ld      b, #33
        jp      fail_routine
inc_34:         jp      pe,inc_35
        ld      b, #34
        jp      fail_routine
inc_35:         ld      a,#0x55
                ld      2(ix),a
                inc     2(ix)
                jp      p,inc_36
        ld      b, #35
        jp      fail_routine
inc_36:         jp      po,inc_37
        ld      b, #36
        jp      fail_routine
inc_37:         ld      a,2(ix)
                cp      a,#0x55+1
                jr      z,inc_38
        ld      b, #37
        jp      fail_routine
inc_38:         ld      a,#0xff
                ld      -1(ix),a
                inc     -1(ix)
                jr      z,inc_39
        ld      b, #38
        jp      fail_routine
inc_39:         inc     -1(ix)
                jr      nz,inc_40
        ld      b, #39
        jp      fail_routine
inc_40:         ld      a,-1(ix)
                cp      a,#1
                jr      z,inc_41
        ld      b, #40
        jp      fail_routine
inc_41:         ld      a,#0xaa
                ld      1(ix),a
                inc     1(ix)
                jp      m,inc_42
        ld      b, #41
        jp      fail_routine
inc_42:         ld      a,1(ix)
                cp      a,#0xaa+1
                jr      z,inc_43
        ld      b, #42
        jp      fail_routine
inc_43:         ld      iy,#t_var3
                ld      a,#0x7f
                ld      2(iy),a
                cp      a,#0x7f
                jr      z,inc_44
        ld      b, #43
        jp      fail_routine
inc_44:         inc     2(iy)
                jp      m,inc_45
        ld      b, #44
        jp      fail_routine
inc_45:         jp      pe,inc_46
        ld      b, #45
        jp      fail_routine
inc_46:         ld      a,#0x55
                ld      -2(iy),a
                inc     -2(iy)
                jp      p,inc_47
        ld      b, #46
        jp      fail_routine
inc_47:         jp      po,inc_48
        ld      b, #47
        jp      fail_routine
inc_48:         ld      a,-2(iy)
                cp      a,#0x55+1
                jr      z,inc_49
        ld      b, #48
        jp      fail_routine
inc_49:         ld      a,#0xff
                ld      1(iy),a
                inc     1(iy)
                jr      z,inc_50
        ld      b, #49
        jp      fail_routine
inc_50:         inc     1(iy)
                jr      nz,inc_51
        ld      b, #50
        jp      fail_routine
inc_51:         ld      a,1(iy)
                cp      a,#1
                jr      z,inc_52
        ld      b, #51
        jp      fail_routine
inc_52:         ld      a,#0x80
                ld      -1(iy),a
                inc     -1(iy)
                jp      m,inc_53
        ld      b, #52
        jp      fail_routine
inc_53:         ld      a,-1(iy)
                cp      a,#0x80+1
                jr      z,dec_0
        ld      b, #53
        jp      fail_routine
dec_0:          nop
        ld hl, #msg_dec
        call print_sub
                ld      a,#0x80
                cp      a,#0x80
                jr      z,dec_1
        ld      b, #0
        jp      fail_routine
dec_1:          dec     a
                jp      p,dec_2
        ld      b, #1
        jp      fail_routine
dec_2:          jp      pe,dec_3
        ld      b, #2
        jp      fail_routine
dec_3:          ld      a,#0
                dec     a
                jp      m,dec_4
        ld      b, #3
        jp      fail_routine
dec_4:          jp      po,dec_5
        ld      b, #4
        jp      fail_routine
dec_5:          cp      a,#0xff
                jr      z,dec_6
        ld      b, #5
        jp      fail_routine
dec_6:          ld      a,#1
                dec     a
                jr      z,dec_7
        ld      b, #6
        jp      fail_routine
dec_7:          dec     a
                jr      nz,dec_8
        ld      b, #7
        jp      fail_routine
dec_8:          cp      a,#0xff
                jr      z,dec_9
        ld      b, #8
        jp      fail_routine
dec_9:          ld      a,#0xaa
                dec     a
                cp      a,#0xaa-1
                jr      z,dec_10
        ld      b, #9
        jp      fail_routine
dec_10:         ld      b,#0x7f
                dec     b
                ld      a,b
                cp      a,#0x7f-1
                jr      z,dec_11
        ld      b, #10
        jp      fail_routine
dec_11:         ld      c,#0x55
                dec     c
                ld      a,c
                cp      a,#0x55-1
                jr      z,dec_12
        ld      b, #11
        jp      fail_routine
dec_12:         ld      d,#0xaa
                dec     d
                ld      a,d
                cp      a,#0xaa-1
                jr      z,dec_13
        ld      b, #12
        jp      fail_routine
dec_13:         ld      e,#0x80
                dec     e
                ld      a,e
                cp      a,#0x80-1
                jr      z,dec_14
        ld      b, #13
        jp      fail_routine
dec_14:         ld      h,#0xff
                dec     h
                ld      a,h
                cp      a,#0xff-1
                jr      z,dec_15
        ld      b, #14
        jp      fail_routine
dec_15:         ld      l,#0x55
                dec     l
                ld      a,l
                cp      a,#0x55-1
                jr      z,dec_16
        ld      b, #15
        jp      fail_routine
dec_16:         ld      hl,#t_var5
                ld      a,#0x80
                ld      (hl),a
                cp      a,(hl)
                jr      z,dec_17
        ld      b, #16
        jp      fail_routine
dec_17:         dec     (hl)
                jp      p,dec_18
        ld      b, #17
        jp      fail_routine
dec_18:         jp      pe,dec_19
        ld      b, #18
        jp      fail_routine
dec_19:         ld      a,#0
                ld      (hl),a
                dec     (hl)
                jp      m,dec_20
        ld      b, #19
        jp      fail_routine
dec_20:         jp      po,dec_21
        ld      b, #20
        jp      fail_routine
dec_21:         ld      a,(hl)
                cp      a,#0xff
                jr      z,dec_22
        ld      b, #21
        jp      fail_routine
dec_22:         ld      a,#1
                ld      (hl),a
                dec     (hl)
                jr      z,dec_23
        ld      b, #22
        jp      fail_routine
dec_23:         dec     (hl)
                jr      nz,dec_24
        ld      b, #23
        jp      fail_routine
dec_24:         ld      a,(hl)
                cp      a,#0xff
                jr      z,dec_25
        ld      b, #24
        jp      fail_routine
dec_25:         ld      a,#0xaa
                ld      (hl),a
                dec     (hl)
                ld      a,(hl)
                cp      a,#0xaa-1
                jr      z,dec_26
        ld      b, #25
        jp      fail_routine
dec_26:         ld      ix,#t_var3
                ld      a,#0x80
                ld      -2(ix),a
                cp      a,-2(ix)
                jr      z,dec_27
        ld      b, #26
        jp      fail_routine
dec_27:         dec     -2(ix)
                jp      p,dec_28
        ld      b, #27
        jp      fail_routine
dec_28:         jp      pe,dec_29
        ld      b, #28
        jp      fail_routine
dec_29:         ld      a,#0
                ld      2(ix),a
                dec     2(ix)
                jp      m,dec_30
        ld      b, #29
        jp      fail_routine
dec_30:         jp      po,dec_31
        ld      b, #30
        jp      fail_routine
dec_31:         ld      a,2(ix)
                cp      a,#0xff
                jr      z,dec_32
        ld      b, #31
        jp      fail_routine
dec_32:         ld      a,#1
                ld      -1(ix),a
                dec     -1(ix)
                jr      z,dec_33
        ld      b, #32
        jp      fail_routine
dec_33:         dec     -1(ix)
                jr      nz,dec_34
        ld      b, #33
        jp      fail_routine
dec_34:         ld      a,-1(ix)
                cp      a,#0xff
                jr      z,dec_35
        ld      b, #34
        jp      fail_routine
dec_35:         ld      a,#0x7f
                ld      1(ix),a
                dec     1(ix)
                ld      a,1(ix)
                cp      a,#0x7f-1
                jr      z,dec_36
        ld      b, #35
        jp      fail_routine
dec_36:         ld      iy,#t_var3
                ld      a,#0x80
                ld      -2(iy),a
                cp      a,-2(iy)
                jr      z,dec_37
        ld      b, #36
        jp      fail_routine
dec_37:         dec     -2(iy)
                jp      p,dec_38
        ld      b, #37
        jp      fail_routine
dec_38:         jp      pe,dec_39
        ld      b, #38
        jp      fail_routine
dec_39:         ld      a,#0
                ld      2(iy),a
                dec     2(iy)
                jp      m,dec_40
        ld      b, #39
        jp      fail_routine
dec_40:         jp      po,dec_41
        ld      b, #40
        jp      fail_routine
dec_41:         ld      a,2(iy)
                cp      a,#0xff
                jr      z,dec_42
        ld      b, #41
        jp      fail_routine
dec_42:         ld      a,#1
                ld      1(iy),a
                dec     1(iy)
                jr      z,dec_43
        ld      b, #42
        jp      fail_routine
dec_43:         dec     1(iy)
                jr      nz,dec_44
        ld      b, #43
        jp      fail_routine
dec_44:         ld      a,1(iy)
                cp      a,#0xff
                jr      z,dec_45
        ld      b, #44
        jp      fail_routine
dec_45:         ld      a,#0xaa
                ld      -1(iy),a
                dec     -1(iy)
                ld      a,-1(iy)
                cp      a,#0xaa-1
                jr      z,cpl_0
        ld      b, #45
        jp      fail_routine
cpl_0:          ld      a,#0xff
                cpl
                cp      a,#0
                jr      z,cpl_1
        ld      b, #0
        jp      fail_routine
cpl_1:          ld      a,#0xaa
                cpl
                cp      a,#0x55
                jr      z,cpl_2
        ld      b, #1
        jp      fail_routine
cpl_2:          cpl
                cp      a,#0xaa
                jr      z,neg_0
        ld      b, #2
        jp      fail_routine
neg_0:          nop
        ld hl, #msg_neg
        call print_sub
                ld      a,#0x80
                cp      a,#0x80
                jp      po,neg_1
        ld      b, #0
        jp      fail_routine
neg_1:          neg
                jp      pe,neg_2
        ld      b, #1
        jp      fail_routine
neg_2:          jr      nz,neg_3
        ld      b, #2
        jp      fail_routine
neg_3:          jr      c,neg_4
        ld      b, #3
        jp      fail_routine
neg_4:          ld      a,#0
                neg
                jp      po,neg_5
        ld      b, #4
        jp      fail_routine
neg_5:          jr      z,neg_6
        ld      b, #5
        jp      fail_routine
neg_6:          jr      nc,neg_7
        ld      b, #6
        jp      fail_routine
neg_7:          ld      a,#0x55
                cp      a,#0x55
                jp      p,neg_8
        ld      b, #7
        jp      fail_routine
neg_8:          neg
                jp      m,neg_9
        ld      b, #8
        jp      fail_routine
neg_9:          neg
                jp      p,neg_10
        ld      b, #9
        jp      fail_routine
neg_10:         cp      a,#0x55
                jr      z,end_of_test
        ld      b, #10
        jp      fail_routine

end_of_test:
        jp      passed


var1:           .db     #0x0
var2:           .db     #0x0
var3:           .db     #0x0
var4:           .db     #0x0
var5:           .db     #0x0

w_var1:         .dw     #0x0
w_var2:         .dw     #0x0
w_var3:         .dw     #0x0
w_var4:         .dw     #0x0
w_var5:         .dw     #0x0
w_var6:         .dw     #0x0

.area    _DATA


t_var1:         .db     0
t_var2:         .db     0
t_var3:         .db     0
t_var4:         .db     0
t_var5:         .db     0


tw_var1:        .dw     0
tw_var2:        .dw     0
tw_var3:        .dw     0
tw_var4:        .dw     0
tw_var5:        .dw     0
tw_var6:        .dw     0
tw_var7:        .dw     0

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.