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

Subversion Repositories wb_z80

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 24 to Rev 25
    Reverse comparison

Rev 24 → Rev 25

/trunk/asm/BJS80TST.ASM
1,5 → 1,15
 
; bjp modified to assemble on as80.
; minor mods to account for changes in interrupt structure and I/O
; all such are flagged with my initials.....
;
; The origional code used operators < and > on symbols to extract the
; lower and higher bytes respectively. It appears that as80 has no equivaltent.
; I have hand coded such ---- hopefully correctly.
; This is only a significant issue with such constructs as <stack_end.
; My solution forces the stack to remain in its present location.
;
; WARNING If you must move the stack -- check comments and fix code for my kludges
;
;z80 simulator test routine
;total error count is left in a at end of test routine
;
51,7 → 61,7
pass: db 'passed'
message_addr: equ #be58
in_port: equ #ff
out_port: equ #20
out_port: equ #10
;
data_55: equ #55
data_7f: equ #7f
66,7 → 76,7
data_aa55: equ #aa55
data_ffff: equ #ffff
;
;inc_error_cnt macro ;bjp change for initial test
;inc_error_cnt macro ;bjp change for initial test to halt on error
; ld hl,error_cnt
; inc (hl)
; endm
653,44 → 663,47
ld i,a
ld a,data_55
ld a,i
jr z,ld_117
jr z,ld_125
inc_error_cnt
ld_117: ld a,data_55
ld r,a
ld a,0
ld a,r
jp p,ld_118
inc_error_cnt
ld_118: jr nz,ld_119
inc_error_cnt
ld_119: ld a,data_ff
ld r,a
ld a,0
ld a,r
jp m,ld_120
inc_error_cnt
ld_120: ld a,4 ;totally sequence dependent
ld r,a
ld a,data_55
ld a,r
jr z,ld_121
inc_error_cnt
ld_121: ei ;set iff2
ld a,i
jp pe,ld_122 ;iff2 was set
inc_error_cnt
ld_122: di ;clear iff2
ld a,i
jp po,ld_123 ;iff2 was cleared
inc_error_cnt
ld_123: ei ;set iff2
ld a,r
jp pe,ld_124 ;iff2 was set
inc_error_cnt
ld_124: di ;clear iff2
ld a,r
jp po,ld_125 ;iff2 was cleared
inc_error_cnt
; refresh register not implemented
; test for ie ?
;ld_117: ld a,data_55
; ld r,a
; ld a,0
; ld a,r
; jp p,ld_118
; inc_error_cnt
;ld_118: jr nz,ld_119
; inc_error_cnt
;ld_119: ld a,data_ff
; ld r,a
; ld a,0
; ld a,r
; jp m,ld_120
; inc_error_cnt
;ld_120: ld a,4 ;totally sequence dependent
; ld r,a
; ld a,data_55
; ld a,r
; jr z,ld_121
; inc_error_cnt
;ld_121: ei ;set iff2
; ld a,i
; jp pe,ld_122 ;iff2 was set
; inc_error_cnt
;ld_122: di ;clear iff2
; ld a,i
; jp po,ld_123 ;iff2 was cleared
; inc_error_cnt
;ld_123: ei ;set iff2
; ld a,r
; jp pe,ld_124 ;iff2 was set
; inc_error_cnt
;ld_124: di ;clear iff2
; ld a,r
; jp po,ld_125 ;iff2 was cleared
; inc_error_cnt
;
ld_125: ld bc,data_1234
ld a, #12 ;bjp guess >data_1234
cp b
1430,10 → 1443,10
add_73: cp data_80+1
jr z,adc_0
inc_error_cnt
adc_0: ld a,0
adc_0: ld a,0 ;clear cry
add a,0
ld b,data_7f
adc a,b
adc a,b ;a=7f cry=0
jp p,adc_1
inc_error_cnt
adc_1: jp po,adc_2
1443,17 → 1456,17
adc_3: jr nz,adc_4
inc_error_cnt
adc_4: ld b,1
adc a,b
jp pe,adc_5
adc a,b ;a=80 cry=0
jp pe,adc_5 ;jp ofl
inc_error_cnt
adc_5: jp m,adc_6
inc_error_cnt
adc_6: cp data_80
jr z,adc_7
jr z,adc_7 ;z=0 ofl=0 cry=0 (borrow)
inc_error_cnt
adc_7: ld a,data_ff
ld b,1
adc a,b
adc a,b ;ff+1+0
jr c,adc_8
inc_error_cnt
adc_8: jr z,adc_9
3466,2659 → 3479,2658
add ix,sp
jr nc,add_110
inc_error_cnt
add_110 jp inc_pass
;add_110: push ix
; pop hl
; ld a,h
; cp a,(stack_end+1) ; >stack_end
; jr z,add_111
; inc_error_cnt
;add_111: ld a,l
; cp a,(stack_end) ; <stack_end
; jr z,add_112
; inc_error_cnt
;add_112: ld ix,data_7fff
; ld bc,data_aa55
; add ix,bc
; jr c,add_113
; inc_error_cnt
;add_113: add ix,bc
; jr nc,add_114
; inc_error_cnt
;add_114: push ix
; pop hl
; ld a,h
; cp a,#d4
; jr z,add_115
; inc_error_cnt
;add_115: ld a,l
; cp a,#a9
; jr z,add_116
; inc_error_cnt
;add_116: ld ix,data_1234
; ld de,data_1234
; add ix,de
; push ix
; pop hl
; ld a,h
; cp a,#24 ;>(data_1234+data_1234)
; jr z,add_117
; inc_error_cnt
;add_117: ld a,l
; cp a,#68 ;<(data_1234+data_1234)
; jr z,add_118
; inc_error_cnt
;add_118: ld ix,data_1234
; add ix,ix
; push ix
; pop bc
; ld a,b
; cp a,#24 ;>(data_1234+data_1234)
; jr z,add_119
; inc_error_cnt
;add_119: ld a,c
; cp a,#68 ;<(data_1234+data_1234)
; jr z,add_120
; inc_error_cnt
;add_120: ld sp,stack_end
; ld iy,0
; add iy,sp
; jr nc,add_121
; inc_error_cnt
;add_121: push iy
; pop hl
; ld a,h
; cp a,stack_end+1 ;stack_end
; jr z,add_122
; inc_error_cnt
;add_122: ld a,l
; cp a,(stack_end) ;<stack_end
; jr z,add_123
; inc_error_cnt
;add_123: ld iy,data_7fff
; ld bc,data_aa55
; add iy,bc
; jr c,add_124
; inc_error_cnt
;add_124: add iy,bc
; jr nc,add_125
; inc_error_cnt
;add_125: push iy
; pop hl
; ld a,h
; cp a,#d4
; jr z,add_126
; inc_error_cnt
;add_126: ld a,l
; cp a,#a9
; jr z,add_127
; inc_error_cnt
;add_127: ld iy,data_1234
; ld de,data_1234
; add iy,de
; push iy
; pop hl
; ld a,h
; cp a,#24 ;>(data_1234+data_1234)
; jr z,add_128
; inc_error_cnt
;add_128: ld a,l
; cp a,#68 ;<(data_1234+data_1234)
; jr z,add_129
; inc_error_cnt
;add_129: ld iy,data_1234
; add iy,iy
; push iy
; pop bc
; ld a,b
; cp a,#24 ;>(data_1234+data_1234)
; jr z,add_130
; inc_error_cnt
;add_130: ld a,c
; cp a,#68 ;<(data_1234+data_1234)
; jr z,inc_54
; inc_error_cnt
;inc_54: ld bc,data_1234
; inc bc
; ld a,b
; cp a,#12 ;bjp was >data_1234
; jr z,inc_55
; inc_error_cnt
;inc_55: ld a,c
; cp a,#34+1 ;bjp was >data_1234+1
; jr z,inc_56
; inc_error_cnt
;inc_56: ld de,data_55aa
; inc de
; ld a,d
; cp a,#55 ;>data_55aa
; jr z,inc_57
; inc_error_cnt
;inc_57: ld a,e
; cp a,#ab ;<data_55aa+1
; jr z,inc_58
; inc_error_cnt
;inc_58: ld hl,data_7fff
; inc hl
; ld a,h
; cp a,#80 ;>data_7fff+1
; jr z,inc_59
; inc_error_cnt
;inc_59: ld a,l
; cp a,#00 ;<data_7fff+1
; jr z,inc_60
; inc_error_cnt
;inc_60: ld hl,0
; inc sp
; add hl,sp
; ld sp,stack_end
; ld a,h
; cp a,(stack_end+2) ;>stack_end+1
; jr z,inc_61
; inc_error_cnt
;inc_61: ld a,l
; cp a,(stack_end+1) ;<stack_end+1
; jr z,inc_62
; inc_error_cnt
;inc_62: ld ix,data_8000
; inc ix
; push ix
; pop de
; ld a,d
; cp a,#80 ;>data_8000
; jr z,inc_63
; inc_error_cnt
;inc_63: ld a,e
; cp a,#01 ;<data_8000+1
; jr z,inc_64
; inc_error_cnt
;inc_64: ld iy,data_7fff
; inc iy
; push iy
; pop bc
; ld a,b
; cp a,#80 ;>data_7fff+1
; jr z,inc_65
; inc_error_cnt
;inc_65: ld a,c
; cp a,#00 ;<data_7fff+1
; jr z,dec_46
; inc_error_cnt
;dec_46: ld bc,data_1234
; dec bc
; ld a,b
; cp a,#12 ;bjp was >data_1234
; jr z,dec_47
; inc_error_cnt
;dec_47: ld a,c
; cp a,#34-1 ;bjp was >data_1234-1
; jr z,dec_48
; inc_error_cnt
;dec_48: ld de,data_8000
; dec de
; ld a,d
; cp a,#7f ;>data_7fff
; jr z,dec_49
; inc_error_cnt
;dec_49: ld a,e
; cp a,#ff ;<data_7fff
; jr z,dec_50
; inc_error_cnt
;dec_50: ld hl,data_aa55
; dec hl
; ld a,h
; cp a,#aa ;>data_aa55
; jr z,dec_51
; inc_error_cnt
;dec_51: ld a,l
; cp a,#54 ;<data_aa55-1
; jr z,dec_52
; inc_error_cnt
;dec_52: ld hl,0
; dec sp
; add hl,sp
; ld a,h
; cp a,(stack_end) ;>stack_end-1
; jr z,dec_53
; inc_error_cnt
;dec_53: ld a,l
; cp a,(stack_end-1) ;<stack_end-1
; jr z,dec_54
; inc_error_cnt
;dec_54: ld sp,stack_end
; ld ix,data_ffff
; dec ix
; push ix
; pop bc
; ld a,b
; cp a,#ff ;>data_ffff
; jr z,dec_55
; inc_error_cnt
;dec_55: ld a,c
; cp a,#00 ;<data_ffff-1
; jr z,dec_56
; inc_error_cnt
;dec_56: ld iy,data_aa55
; dec iy
; push iy
; pop de
; ld a,d
; cp a,#aa ;>data_aa55
; jr z,dec_57
; inc_error_cnt
;dec_57: ld a,e
; cp a,#54 ;<data_aa55-1
; jr z,rlca_0
; inc_error_cnt
;rlca_0: ld a,data_80
; rlca
; jr c,rlca_1
; inc_error_cnt
;rlca_1: rlca
; jr nc,rlca_2
; inc_error_cnt
;rlca_2: cp a,2
; jr z,rlca_3
; inc_error_cnt
;rlca_3: ld a,data_55
; rlca
; cp a,data_aa
; jr z,rla_0
; inc_error_cnt
;rla_0: scf
; ccf
; ld a,data_80
; rla
; jr c,rla_1
; inc_error_cnt
;rla_1: rla
; jr nc,rla_2
; inc_error_cnt
;rla_2: cp a,1
; jr z,rla_3
; inc_error_cnt
;rla_3: ld a,data_7f
; rla
; cp a,data_ff-1
; jr z,rrca_0
; inc_error_cnt
;rrca_0: scf
; ccf
; ld a,1
; rrca
; jr c,rrca_1
; inc_error_cnt
;rrca_1: rrca
; jr nc,rrca_2
; inc_error_cnt
;rrca_2: cp a,data_7f-#3f
; jr z,rrca_3
; inc_error_cnt
;rrca_3: ld a,data_aa
; rrca
; cp a,data_55
; jr z,rra_0
; inc_error_cnt
;rra_0: scf
; ccf
; ld a,1
; rra
; jr c,rra_1
; inc_error_cnt
;rra_1: rra
; jr nc,rra_2
; inc_error_cnt
;rra_2: cp a,data_80
; jr z,rra_3
; inc_error_cnt
;rra_3: ld a,data_aa
; rra
; cp a,data_55
; jr z,rlc_0
; inc_error_cnt
;rlc_0: ld a,data_80
; rlc a
; jr c,rlc_1
; inc_error_cnt
;rlc_1: jp p,rlc_2
; inc_error_cnt
;rlc_2: jr nz,rlc_3
; inc_error_cnt
;rlc_3: jp po,rlc_4
; inc_error_cnt
;rlc_4: rlc a
; jr nc,rlc_5
; inc_error_cnt
;rlc_5: rlc a
; rlc a
; rlc a
; rlc a
; rlc a
; rlc a
; jp m,rlc_6
; inc_error_cnt
;rlc_6: ld a,data_55
; rlc a
; jp m,rlc_7
; inc_error_cnt
;rlc_7: jp pe,rlc_8
; inc_error_cnt
;rlc_8: cp a,data_aa
; jr z,rlc_9
; inc_error_cnt
;rlc_9: ld a,0
; rlc a
; jr z,rlc_10
; inc_error_cnt
;rlc_10: ld b,data_7f
; rlc b
; ld a,b
; cp a,data_ff-1
; jr z,rlc_11
; inc_error_cnt
;rlc_11: ld c,data_aa
; rlc c
; jr c,rlc_12
; inc_error_cnt
;rlc_12: ld a,c
; cp a,data_55
; jr z,rlc_13
; inc_error_cnt
;rlc_13: ld d,data_80
; rlc d
; jr c,rlc_14
; inc_error_cnt
;rlc_14: ld a,d
; cp a,1
; jr z,rlc_15
; inc_error_cnt
;rlc_15: ld e,data_ff
; rlc e
; jr c,rlc_16
; inc_error_cnt
;rlc_16: ld a,e
; cp a,data_ff
; jr z,rlc_17
; inc_error_cnt
;rlc_17: ld h,data_55
; rlc h
; jp m,rlc_18
; inc_error_cnt
;rlc_18: ld a,h
; cp a,data_aa
; jr z,rlc_19
; inc_error_cnt
;rlc_19: ld l,data_80
; rlc l
; jp p,rlc_20
; inc_error_cnt
;rlc_20: ld a,l
; cp a,1
; jr z,rlc_21
; inc_error_cnt
;rlc_21: ld hl,t_var1
; ld a,data_55
; ld (hl),a
; rlc (hl)
; jp m,rlc_22
; inc_error_cnt
;rlc_22: jp pe,rlc_23
; inc_error_cnt
;rlc_23: jr nc,rlc_24
; inc_error_cnt
;rlc_24: jr nz,rlc_25
; inc_error_cnt
;rlc_25: rlc (hl)
; jp p,rlc_26
; inc_error_cnt
;rlc_26: jr c,rlc_27
; inc_error_cnt
;rlc_27: ld a,(hl)
; cp a,data_55
; jr z,rlc_28
; inc_error_cnt
;rlc_28: ld a,data_7f
; ld (hl),a
; rlc (hl)
; jp po,rlc_29
; inc_error_cnt
;rlc_29: ld a,(hl)
; cp a,data_ff-1
; jr z,rlc_30
; inc_error_cnt
;rlc_30: ld a,0
; ld (hl),a
; rlc (hl)
; jr z,rlc_31
; inc_error_cnt
;rlc_31: ld ix,t_var3
; ld a,data_55
; ld (ix-2),a
; rlc (ix-2)
; jp m,rlc_32
; inc_error_cnt
;rlc_32: jp pe,rlc_33
; inc_error_cnt
;rlc_33: jr nz,rlc_34
; inc_error_cnt
;rlc_34: jr nc,rlc_35
; inc_error_cnt
;rlc_35: rlc (ix-2)
; jp p,rlc_36
; inc_error_cnt
;rlc_36: jr c,rlc_37
; inc_error_cnt
;rlc_37: ld a,(ix-2)
; cp a,data_55
; jr z,rlc_38
; inc_error_cnt
;rlc_38: ld a,data_7f
; ld (ix+2),a
; rlc (ix+2)
; jp po,rlc_39
; inc_error_cnt
;rlc_39: ld a,(ix+2)
; cp a,data_ff-1
; jr z,rlc_40
; inc_error_cnt
;rlc_40: ld a,0
; ld (ix-1),a
; rlc (ix-1)
; jr z,rlc_41
; inc_error_cnt
;rlc_41: ld iy,t_var3
; ld a,data_55
; ld (iy+2),a
; rlc (iy+2)
; jp m,rlc_42
; inc_error_cnt
;rlc_42: jp pe,rlc_43
; inc_error_cnt
;rlc_43: jr nc,rlc_44
; inc_error_cnt
;rlc_44: jr nz,rlc_45
; inc_error_cnt
;rlc_45: rlc (iy+2)
; jp p,rlc_46
; inc_error_cnt
;rlc_46: jr c,rlc_47
; inc_error_cnt
;rlc_47: ld a,(iy+2)
; cp a,data_55
; jr z,rlc_48
; inc_error_cnt
;rlc_48: ld a,data_7f
; ld (iy-2),a
; rlc (iy-2)
; jp po,rlc_49
; inc_error_cnt
;rlc_49: ld a,(iy-2)
; cp a,data_ff-1
; jr z,rlc_50
; inc_error_cnt
;rlc_50: ld a,0
; ld (iy+1),a
; rlc (iy+1)
; jr z,rl_0
; inc_error_cnt
;rl_0: scf
; ccf
; ld a,data_55
; rl a
; jp m,rl_1
; inc_error_cnt
;rl_1: jp pe,rl_2
; inc_error_cnt
;rl_2: jr nc,rl_3
; inc_error_cnt
;rl_3: jr nz,rl_4
; inc_error_cnt
;rl_4: rl a
; jp p,rl_5
; inc_error_cnt
;rl_5: jp po,rl_6
; inc_error_cnt
;rl_6: jr c,rl_7
; inc_error_cnt
;rl_7: rl a
; cp a,data_aa-1
; jr z,rl_8
; inc_error_cnt
;rl_8: ld a,0
; rl a
; jr z,rl_9
; inc_error_cnt
;rl_9: ld b,data_aa
; ld c,data_7f
; rl b
; jr c,rl_10
; inc_error_cnt
;rl_10: rl c
; jr nc,rl_11
; inc_error_cnt
;rl_11: ld a,b
; cp a,data_55-1
; jr z,rl_12
; inc_error_cnt
;rl_12: ld a,c
; cp a,data_ff
; jr z,rl_13
; inc_error_cnt
;rl_13: ld d,data_ff
; ld e,data_80
; rl e
; jr c,rl_14
; inc_error_cnt
;rl_14: rl d
; jr c,rl_15
; inc_error_cnt
;rl_15: ld a,d
; cp a,data_ff
; jr z,rl_16
; inc_error_cnt
;rl_16: ld a,e
; cp a,0
; jr z,rl_17
; inc_error_cnt
;rl_17: ld h,data_7f
; ld l,data_55
; rl h
; jp m,rl_18
; inc_error_cnt
;rl_18: rl l
; jp m,rl_19
; inc_error_cnt
;rl_19: ld a,h
; cp a,data_ff-1
; jr z,rl_20
; inc_error_cnt
;rl_20: ld a,l
; cp a,data_aa
; jr z,rl_21
; inc_error_cnt
;rl_21: ld hl,t_var5
; ld a,data_55
; ld (hl),a
; rl (hl)
; jp m,rl_22
; inc_error_cnt
;rl_22: jp pe,rl_23
; inc_error_cnt
;rl_23: jr nc,rl_24
; inc_error_cnt
;rl_24: jr nz,rl_25
; inc_error_cnt
;rl_25: rl (hl)
; jp p,rl_26
; inc_error_cnt
;rl_26: jp po,rl_27
; inc_error_cnt
;rl_27: jr c,rl_28
; inc_error_cnt
;rl_28: ld a,(hl)
; cp a,data_55-1
; jr z,rl_29
; inc_error_cnt
;rl_29: ld a,0
; ld (hl),a
; rl (hl)
; jr z,rl_30
; inc_error_cnt
;rl_30: ld ix,t_var3
; ld a,data_55
; ld (ix-2),a
; rl (ix-2)
; jp m,rl_31
; inc_error_cnt
;rl_31: jp pe,rl_32
; inc_error_cnt
;rl_32: jr nc,rl_33
; inc_error_cnt
;rl_33: jr nz,rl_34
; inc_error_cnt
;rl_34: rl (ix-2)
; jp p,rl_35
; inc_error_cnt
;rl_35: jp po,rl_36
; inc_error_cnt
;rl_36: jr c,rl_37
; inc_error_cnt
;rl_37: ld a,(ix-2)
; cp a,data_55-1
; jr z,rl_38
; inc_error_cnt
;rl_38: ld a,0
; ld (ix+2),a
; rl (ix+2)
; jr z,rl_39
;rl_39: ld iy,t_var3
; ld a,data_55
; ld (iy-1),a
; rl (iy-1)
; jp m,rl_40
; inc_error_cnt
;rl_40: jp pe,rl_41
; inc_error_cnt
;rl_41: jr nc,rl_42
; inc_error_cnt
;rl_42: jr nz,rl_43
; inc_error_cnt
;rl_43: rl (iy-1)
; jp p,rl_44
; inc_error_cnt
;rl_44: jp po,rl_45
; inc_error_cnt
;rl_45: jr c,rl_46
; inc_error_cnt
;rl_46: ld a,(iy-1)
; cp a,data_55-1
; jr z,rl_47
; inc_error_cnt
;rl_47: ld a,0
; ld (iy+1),a
; rl (iy+1)
; jr z,rrc_0
; inc_error_cnt
;rrc_0: ld a,data_aa
; rrc a
; jp p,rrc_1
; inc_error_cnt
;rrc_1: jp pe,rrc_2
; inc_error_cnt
;rrc_2: jr nz,rrc_3
; inc_error_cnt
;rrc_3: jr nc,rrc_4
; inc_error_cnt
;rrc_4: rrc a
; jp m,rrc_5
; inc_error_cnt
;rrc_5: jr c,rrc_6
; inc_error_cnt
;rrc_6: cp a,data_aa
; jr z,rrc_7
; inc_error_cnt
;rrc_7: ld a,1
; rrc a
; jr c,rrc_8
; inc_error_cnt
;rrc_8: cp a,data_80
; jr z,rrc_9
; inc_error_cnt
;rrc_9: ld a,data_7f
; rrc a
; jp po,rrc_10
; inc_error_cnt
;rrc_10: cp a,#bf
; jr z,rrc_11
; inc_error_cnt
;rrc_11: ld b,data_80
; ld c,data_55
; rrc b
; jr nc,rrc_12
; inc_error_cnt
;rrc_12: rrc c
; jr c,rrc_13
; inc_error_cnt
;rrc_13: ld a,b
; cp a,#40
; jr z,rrc_14
; inc_error_cnt
;rrc_14: ld a,c
; cp a,data_aa
; jr z,rrc_15
; inc_error_cnt
;rrc_15: ld d,data_aa
; ld e,1
; rrc d
; jp p,rrc_16
; inc_error_cnt
;rrc_16: rrc e
; jp m,rrc_17
; inc_error_cnt
;rrc_17: ld a,d
; cp a,data_55
; jr z,rrc_18
; inc_error_cnt
;rrc_18: ld a,e
; cp a,data_80
; jr z,rrc_19
; inc_error_cnt
;rrc_19: ld h,data_55
; ld l,data_ff
; rrc h
; jr c,rrc_20
; inc_error_cnt
;rrc_20: rrc l
; jr c,rrc_21
; inc_error_cnt
;rrc_21: ld a,h
; cp a,data_aa
; jr z,rrc_22
; inc_error_cnt
;rrc_22: ld a,l
; cp a,data_ff
; jr z,rrc_23
; inc_error_cnt
;rrc_23: ld hl,t_var4
; ld (hl),data_aa
; rrc (hl)
; jp p,rrc_24
; inc_error_cnt
;rrc_24: jp pe,rrc_25
; inc_error_cnt
;rrc_25: jr nz,rrc_26
; inc_error_cnt
;rrc_26: jr nc,rrc_27
; inc_error_cnt
;rrc_27: rrc (hl)
; jp m,rrc_28
; inc_error_cnt
;rrc_28: jr c,rrc_29
; inc_error_cnt
;rrc_29: ld a,(hl)
; cp a,data_aa
; jr z,rrc_30
; inc_error_cnt
;rrc_30: ld (hl),data_7f
; rrc (hl)
; jp po,rrc_31
; inc_error_cnt
;rrc_31: ld a,(hl)
; cp a,#bf
; jr z,rrc_32
; inc_error_cnt
;rrc_32: ld (hl),0
; rrc (hl)
; jr z,rrc_33
; inc_error_cnt
;rrc_33: ld ix,t_var3
; ld a,data_aa
; ld (ix+2),a
; rrc (ix+2)
; jp p,rrc_34
; inc_error_cnt
;rrc_34: jp pe,rrc_35
; inc_error_cnt
;rrc_35: jr nc,rrc_36
; inc_error_cnt
;rrc_36: jr nz,rrc_37
; inc_error_cnt
;rrc_37: rrc (ix+2)
; jp m,rrc_38
; inc_error_cnt
;rrc_38: jr c,rrc_39
; inc_error_cnt
;rrc_39: ld a,(ix+2)
; cp a,data_aa
; jr z,rrc_40
; inc_error_cnt
;rrc_40: ld a,1
; ld (ix-2),a
; rrc (ix-2)
; jp po,rrc_41
; inc_error_cnt
;rrc_41: ld a,(ix-2)
; cp a,data_80
; jr z,rrc_42
; inc_error_cnt
;rrc_42: ld a,0
; ld (ix+1),a
; rrc (ix+1)
; jr z,rrc_43
; inc_error_cnt
;rrc_43: ld iy,t_var3
; ld a,data_aa
; ld (iy+2),a
; rrc (iy+2)
; jp p,rrc_44
; inc_error_cnt
;rrc_44: jp pe,rrc_45
; inc_error_cnt
;rrc_45: jr nc,rrc_46
; inc_error_cnt
;rrc_46: jr nz,rrc_47
; inc_error_cnt
;rrc_47: rrc (iy+2)
; jp m,rrc_48
; inc_error_cnt
;rrc_48: jr c,rrc_49
; inc_error_cnt
;rrc_49: ld a,(iy+2)
; cp a,data_aa
; jr z,rrc_50
; inc_error_cnt
;rrc_50: ld a,1
; ld (iy-2),a
; rrc (iy-2)
; jp po,rrc_51
; inc_error_cnt
;rrc_51: ld a,(iy-2)
; cp a,data_80
; jr z,rrc_52
; inc_error_cnt
;rrc_52: ld a,0
; ld (iy+1),a
; rrc (iy+1)
; jr z,rr_0
; inc_error_cnt
;rr_0: scf
; ccf
; ld a,data_aa
; rr a
; jp p,rr_1
; inc_error_cnt
;rr_1: jp pe,rr_2
; inc_error_cnt
;rr_2: jr nc,rr_3
; inc_error_cnt
;rr_3: jr nz,rr_4
; inc_error_cnt
;rr_4: rr a
; jr c,rr_5
; inc_error_cnt
;rr_5: jp po,rr_6
; inc_error_cnt
;rr_6: cp a,#2a
; jr z,rr_7
; inc_error_cnt
;rr_7: scf
; ld a,0
; rr a
; jp m,rr_8
; inc_error_cnt
;rr_8: cp a,data_80
; jr z,rr_9
; inc_error_cnt
;rr_9: ld a,0
; rr a
; jr z,rr_10
; inc_error_cnt
;rr_10: ld b,data_55
; ld c,data_aa
; rr b
; jr c,rr_11
; inc_error_cnt
;rr_11: rr c
; jr nc,rr_12
; inc_error_cnt
;rr_12: ld a,b
; cp a,#2a
; jr z,rr_13
; inc_error_cnt
;rr_13: ld a,c
; cp a,#d5
; jr z,rr_14
; inc_error_cnt
;rr_14: ld d,data_7f
; ld e,data_80
; rr d
; jr c,rr_15
; inc_error_cnt
;rr_15: rr e
; jr nc,rr_16
; inc_error_cnt
;rr_16: ld a,d
; cp a,#3f
; jr z,rr_17
; inc_error_cnt
;rr_17: ld a,e
; cp a,#c0
; jr z,rr_18
; inc_error_cnt
;rr_18: ld hl,t_var2
; ld (hl),data_55
; rr (hl)
; jp p,rr_19
; inc_error_cnt
;rr_19: jp po,rr_20
; inc_error_cnt
;rr_20: jr c,rr_21
; inc_error_cnt
;rr_21: jr nz,rr_22
; inc_error_cnt
;rr_22: rr (hl)
; jp m,rr_23
; inc_error_cnt
;rr_23: jp pe,rr_24
; inc_error_cnt
;rr_24: jr nc,rr_25
; inc_error_cnt
;rr_25: ld a,(hl)
; cp a,#95
; jr z,rr_26
; inc_error_cnt
;rr_26: ld (hl),0
; rr (hl)
; jr z,rr_27
; inc_error_cnt
;rr_27: ld ix,t_var3
; ld a,data_55
; ld (ix-2),a
; rr (ix-2)
; jp p,rr_28
; inc_error_cnt
;rr_28: jp po,rr_29
; inc_error_cnt
;rr_29: jr c,rr_30
; inc_error_cnt
;rr_30: jr nz,rr_31
; inc_error_cnt
;rr_31: rr (ix-2)
; jp m,rr_32
; inc_error_cnt
;rr_32: jp pe,rr_33
; inc_error_cnt
;rr_33: jr nc,rr_34
; inc_error_cnt
;rr_34: ld a,(ix-2)
; cp a,#95
; jr z,rr_35
; inc_error_cnt
;rr_35: ld a,0
; ld (ix+2),a
; rr (ix+2)
; jr z,rr_36
; inc_error_cnt
;rr_36: ld iy,t_var3
; ld a,data_55
; ld (iy+2),a
; rr (iy+2)
; jp p,rr_37
; inc_error_cnt
;rr_37: jp po,rr_38
; inc_error_cnt
;rr_38: jr c,rr_39
; inc_error_cnt
;rr_39: jr nz,rr_40
; inc_error_cnt
;rr_40: rr (iy+2)
; jp m,rr_41
; inc_error_cnt
;rr_41: jp pe,rr_42
; inc_error_cnt
;rr_42: jr nc,rr_43
; inc_error_cnt
;rr_43: ld a,(iy+2)
; cp a,#95
; jr z,rr_44
; inc_error_cnt
;rr_44: ld a,0
; ld (iy-1),a
; rr (iy-1)
; jr z,sla_0
; inc_error_cnt
;sla_0: ld a,data_55
; sla a
; jp m,sla_1
; inc_error_cnt
;sla_1: jp pe,sla_2
; inc_error_cnt
;sla_2: jr nc,sla_3
; inc_error_cnt
;sla_3: jr nz,sla_4
; inc_error_cnt
;sla_4: sla a
; jp p,sla_5
; inc_error_cnt
;sla_5: jp po,sla_6
; inc_error_cnt
;sla_6: jr c,sla_7
; inc_error_cnt
;sla_7: cp a,data_55-1
; jr z,sla_8
; inc_error_cnt
;sla_8: ld a,0
; sla a
; jr z,sla_9
; inc_error_cnt
;sla_9: ld b,data_80
; ld c,data_7f
; sla b
; jr c,sla_10
; inc_error_cnt
;sla_10: ld a,b
; cp a,0
; jr z,sla_11
; inc_error_cnt
;sla_11: sla c
; jp m,sla_12
; inc_error_cnt
;sla_12: ld a,c
; cp a,data_ff-1
; jr z,sla_13
; inc_error_cnt
;sla_13: ld d,data_aa
; ld e,data_55
; sla d
; jr c,sla_14
; inc_error_cnt
;sla_14: ld a,d
; cp a,data_55-1
; jr z,sla_15
; inc_error_cnt
;sla_15: sla e
; jp m,sla_16
; inc_error_cnt
;sla_16: ld a,e
; cp a,data_aa
; jr z,sla_17
; inc_error_cnt
;sla_17: ld h,#12 ;bjp was >data_1234
; ld l,#34 ;bjp was >data_1234
; sla h
; jp p,sla_18
; inc_error_cnt
;sla_18: ld a,h
; cp a,#24
; jr z,sla_19
; inc_error_cnt
;sla_19: sla l
; jp p,sla_20
; inc_error_cnt
;sla_20: ld a,l
; cp a,#68
; jr z,sla_21
; inc_error_cnt
;sla_21: ld hl,t_var3
; ld (hl),data_55
; sla (hl)
; jp m,sla_22
; inc_error_cnt
;sla_22: jp pe,sla_23
; inc_error_cnt
;sla_23: jr nc,sla_24
; inc_error_cnt
;sla_24: jr nz,sla_25
; inc_error_cnt
;sla_25: sla (hl)
; jp p,sla_26
; inc_error_cnt
;sla_26: jp po,sla_27
; inc_error_cnt
;sla_27: jr c,sla_28
; inc_error_cnt
;sla_28: ld a,(hl)
; cp a,data_55-1
; jr z,sla_29
; inc_error_cnt
;sla_29: ld (hl),0
; sla (hl)
; jr z,sla_30
; inc_error_cnt
;sla_30: ld ix,t_var3
; ld a,data_55
; ld (ix-2),a
; sla (ix-2)
; jp m,sla_31
; inc_error_cnt
;sla_31: jp pe,sla_32
; inc_error_cnt
;sla_32: jr nc,sla_33
; inc_error_cnt
;sla_33: jr nz,sla_34
; inc_error_cnt
;sla_34: sla (ix-2)
; jp p,sla_35
; inc_error_cnt
;sla_35: jp po,sla_36
; inc_error_cnt
;sla_36: jr c,sla_37
; inc_error_cnt
;sla_37: ld a,(ix-2)
; cp a,data_55-1
; jr z,sla_38
; inc_error_cnt
;sla_38: ld a,data_80
; ld (ix+2),a
; sla (ix+2)
; jr z,sla_39
; inc_error_cnt
;sla_39: jr c,sla_40
; inc_error_cnt
;sla_40: ld iy,t_var3
; ld a,data_55
; ld (iy+2),a
; sla (iy+2)
; jp m,sla_41
; inc_error_cnt
;sla_41: jp pe,sla_42
; inc_error_cnt
;sla_42: jr nc,sla_43
; inc_error_cnt
;sla_43: jr nz,sla_44
; inc_error_cnt
;sla_44: sla (iy+2)
; jp p,sla_45
; inc_error_cnt
;sla_45: jp po,sla_46
; inc_error_cnt
;sla_46: jr c,sla_47
; inc_error_cnt
;sla_47: ld a,(iy+2)
; cp a,data_55-1
; jr z,sla_48
; inc_error_cnt
;sla_48: ld a,data_80
; ld (iy-2),a
; sla (iy-2)
; jr z,sla_49
; inc_error_cnt
;sla_49: jr c,sra_0
; inc_error_cnt
;sra_0: ld a,data_55
; sra a
; jp p,sra_1
; inc_error_cnt
;sra_1: jp po,sra_2
; inc_error_cnt
;sra_2: jr c,sra_3
; inc_error_cnt
;sra_3: jr nz,sra_4
; inc_error_cnt
;sra_4: sra a
; jp po,sra_5
; inc_error_cnt
;sra_5: jr nc,sra_6
; inc_error_cnt
;sra_6: sra a
; jp pe,sra_7
; inc_error_cnt
;sra_7: cp a,#0a ;data_aa.and.#0f
; jr z,sra_8
; inc_error_cnt
;sra_8: ld a,1
; sra a
; jr c,sra_9
; inc_error_cnt
;sra_9: jr z,sra_10
; inc_error_cnt
;sra_10: ld a,data_80
; sra a
; jp m,sra_11
; inc_error_cnt
;sra_11: cp a,#c0
; jr z,sra_12
; inc_error_cnt
;sra_12: ld b,data_7f
; ld c,data_aa
; sra b
; jr c,sra_13
; inc_error_cnt
;sra_13: ld a,b
; cp a,#3f
; jr z,sra_14
; inc_error_cnt
;sra_14: sra c
; jr nc,sra_15
; inc_error_cnt
;sra_15: ld a,c
; cp a,#d5
; jr z,sra_16
; inc_error_cnt
;sra_16: ld d,data_55
; ld e,data_ff
; sra d
; jr c,sra_17
; inc_error_cnt
;sra_17: ld a,d
; cp a,#2a
; jr z,sra_18
; inc_error_cnt
;sra_18: sra e
; jp m,sra_19
; inc_error_cnt
;sra_19: ld a,e
; cp a,data_ff
; jr z,sra_20
; inc_error_cnt
;sra_20: ld h,data_aa
; ld l,data_7f
; sra h
; jp m,sra_21
; inc_error_cnt
;sra_21: ld a,h
; cp a,#d5
; jr z,sra_22
; inc_error_cnt
;sra_22: sra l
; jr c,sra_23
; inc_error_cnt
;sra_23: ld a,l
; cp a,#3f
; jr z,sra_24
; inc_error_cnt
;sra_24: ld hl,t_var1
; ld (hl),data_55
; sra (hl)
; jp p,sra_25
; inc_error_cnt
;sra_25: jp po,sra_26
; inc_error_cnt
;sra_26: jr c,sra_27
; inc_error_cnt
;sra_27: jr nz,sra_28
; inc_error_cnt
;sra_28: sra (hl)
; jr nc,sra_29
; inc_error_cnt
;sra_29: sra (hl)
; jp pe,sra_30
; inc_error_cnt
;sra_30: ld a,(hl)
; cp a,#0a ;data_aa.and.#0f
; jr z,sra_31
; inc_error_cnt
;sra_31: ld (hl),data_80
; sra (hl)
; jp m,sra_32
; inc_error_cnt
;sra_32: ld a,(hl)
; cp a,#c0
; jr z,sra_33
; inc_error_cnt
;sra_33: ld (hl),1
; sra (hl)
; jr c,sra_34
; inc_error_cnt
;sra_34: jr z,sra_35
; inc_error_cnt
;sra_35: ld ix,t_var3
; ld a,data_55
; ld (ix-2),a
; sra (ix-2)
; jp p,sra_36
; inc_error_cnt
;sra_36: jp po,sra_37
; inc_error_cnt
;sra_37: jr c,sra_38
; inc_error_cnt
;sra_38: jr nz,sra_39
; inc_error_cnt
;sra_39: sra (ix-2)
; jr nc,sra_40
; inc_error_cnt
;sra_40: sra (ix-2)
; jp pe,sra_41
; inc_error_cnt
;sra_41: ld a,(ix-2)
; cp a,#0a ;data_aa.and.#0f
; jr z,sra_42
; inc_error_cnt
;sra_42: ld a,data_80
; ld (ix+2),a
; sra (ix+2)
; jp m,sra_43
; inc_error_cnt
;sra_43: ld a,(ix+2)
; cp a,#c0
; jr z,sra_44
; inc_error_cnt
;sra_44: ld a,1
; ld (ix-1),a
; sra (ix-1)
; jr c,sra_45
; inc_error_cnt
;sra_45: jr z,sra_46
; inc_error_cnt
;sra_46: ld iy,t_var3
; ld a,data_55
; ld (iy-2),a
; sra (iy-2)
; jp p,sra_47
; inc_error_cnt
;sra_47: jp po,sra_48
; inc_error_cnt
;sra_48: jr c,sra_49
; inc_error_cnt
;sra_49: jr nz,sra_50
; inc_error_cnt
;sra_50: sra (iy-2)
; jr nc,sra_51
; inc_error_cnt
;sra_51: sra (iy-2)
; jp pe,sra_52
; inc_error_cnt
;sra_52: ld a,(iy-2)
; cp a,#0a ;data_aa.and.#0f
; jr z,sra_53
; inc_error_cnt
;sra_53: ld a,data_80
; ld (iy+2),a
; sra (iy+2)
; jp m,sra_54
; inc_error_cnt
;sra_54: ld a,(iy+2)
; cp a,#c0
; jr z,sra_55
; inc_error_cnt
;sra_55: ld a,1
; ld (iy-1),a
; sra (iy-1)
; jr c,sra_56
; inc_error_cnt
;sra_56: jr z,srl_0
; inc_error_cnt
;srl_0: ld a,data_55
; srl a
; jr c,srl_1
; inc_error_cnt
;srl_1: jp po,srl_2
; inc_error_cnt
;srl_2: srl a
; jr nc,srl_3
; inc_error_cnt
;srl_3: srl a
; jp pe,srl_4
; inc_error_cnt
;srl_4: cp a,#0a ;data_aa.and.#0f
; jr z,srl_5
; inc_error_cnt
;srl_5: ld a,data_80
; and a
; jp m,srl_6
; inc_error_cnt
;srl_6: srl a
; jp p,srl_7
; inc_error_cnt
;srl_7: ld a,2
; srl a
; jr nz,srl_8
; inc_error_cnt
;srl_8: srl a
; jr z,srl_9
; inc_error_cnt
;srl_9: jr c,srl_10
; inc_error_cnt
;srl_10: ld b,data_aa
; srl b
; jp p,srl_11
; inc_error_cnt
;srl_11: ld a,b
; cp a,data_55
; jr z,srl_12
; inc_error_cnt
;srl_12: ld c,data_7f
; srl c
; jr c,srl_13
; inc_error_cnt
;srl_13: ld a,c
; cp a,#3f
; jr z,srl_14
; inc_error_cnt
;srl_14: ld d,data_55
; srl d
; jr c,srl_15
; inc_error_cnt
;srl_15: ld a,d
; cp a,#2a
; jr z,srl_16
; inc_error_cnt
;srl_16: ld e,data_ff
; srl e
; jr c,srl_17
; inc_error_cnt
;srl_17: ld a,e
; cp a,data_7f
; jr z,srl_18
; inc_error_cnt
;srl_18: ld h,#12 ;bjp was >data_1234
; srl h
; jr nc,srl_19
; inc_error_cnt
;srl_19: ld a,h
; cp a,9
; jr z,srl_20
; inc_error_cnt
;srl_20: ld l,#34 ;bjp was >data_1234
; srl l
; jr nc,srl_21
; inc_error_cnt
;srl_21: ld a,l
; cp a,#1a
; jr z,srl_22
; inc_error_cnt
;srl_22: ld hl,t_var1
; ld (hl),data_55
; srl (hl)
; jr c,srl_23
; inc_error_cnt
;srl_23: jp po,srl_24
; inc_error_cnt
;srl_24: srl (hl)
; jr nc,srl_25
; inc_error_cnt
;srl_25: srl (hl)
; jp pe,srl_26
; inc_error_cnt
;srl_26: ld a,(hl)
; cp a,#0a ;data_aa.and.#0f
; jr z,srl_27
; inc_error_cnt
;srl_27: ld (hl),data_80
; and (hl)
; jp z,srl_28
; inc_error_cnt
;srl_28: srl (hl)
; jp p,srl_29
; inc_error_cnt
;srl_29: ld a,(hl)
; cp a,#40
; jr z,srl_30
; inc_error_cnt
;srl_30: ld (hl),2
; srl (hl)
; jr nz,srl_31
; inc_error_cnt
;srl_31: srl (hl)
; jr z,srl_32
; inc_error_cnt
;srl_32: jr c,srl_33
; inc_error_cnt
;srl_33: ld ix,t_var3
; ld a,data_55
; ld (ix+2),a
; srl (ix+2)
; jr c,srl_34
; inc_error_cnt
;srl_34: jp po,srl_35
; inc_error_cnt
;srl_35: srl (ix+2)
; jr nc,srl_36
; inc_error_cnt
;srl_36: srl (ix+2)
; jp pe,srl_37
; inc_error_cnt
;srl_37: ld a,(ix+2)
; cp a,#0a ;data_aa.and.#0f
; jr z,srl_38
; inc_error_cnt
;srl_38: ld a,data_80
; ld (ix-2),a
; and (ix-2)
; jp m,srl_39
; inc_error_cnt
;srl_39: srl (ix-2)
; jp p,srl_40
; inc_error_cnt
;srl_40: ld a,(ix-2)
; cp a,#40
; jr z,srl_41
; inc_error_cnt
;srl_41: ld a,2
; ld (ix+1),a
; srl (ix+1)
; jr nz,srl_42
; inc_error_cnt
;srl_42: srl (ix+1)
; jr z,srl_43
; inc_error_cnt
;srl_43: jr c,srl_44
; inc_error_cnt
;srl_44: ld iy,t_var3
; ld a,data_55
; ld (iy+2),a
; srl (iy+2)
; jr c,srl_45
; inc_error_cnt
;srl_45: jp po,srl_46
; inc_error_cnt
;srl_46: srl (iy+2)
; jr nc,srl_47
; inc_error_cnt
;srl_47: srl (iy+2)
; jp pe,srl_48
; inc_error_cnt
;srl_48: ld a,(iy+2)
; cp a,#0a ;data_aa.and.#0f
; jr z,srl_49
; inc_error_cnt
;srl_49: ld a,data_80
; ld (iy-2),a
; and (iy-2)
; jp m,srl_50
; inc_error_cnt
;srl_50: srl (iy-2)
; jp p,srl_51
; inc_error_cnt
;srl_51: ld a,(iy-2)
; cp a,#40
; jr z,srl_52
; inc_error_cnt
;srl_52: ld a,2
; ld (iy+1),a
; srl (iy+1)
; jr nz,srl_53
; inc_error_cnt
;srl_53: srl (iy+1)
; jr z,srl_54
; inc_error_cnt
;srl_54: jr c,rld_0
; inc_error_cnt
;rld_0: ld hl,t_var5
; ld a,data_55
; ld (hl),data_aa
; rld
; jp p,rld_1
; inc_error_cnt
;rld_1: cp a,data_55+5
; jr z,rld_2
; inc_error_cnt
;rld_2: ld a,(hl)
; cp a,data_aa-5
; jr z,rld_3
; inc_error_cnt
;rld_3: ld (hl),data_7f
; ld a,data_80
; rld
; jp m,rld_4
; inc_error_cnt
;rld_4: jp pe,rld_5
; inc_error_cnt
;rld_5: rld
; jp po,rld_6
; inc_error_cnt
;rld_6: cp a,data_80+15
; jr z,rld_7
; inc_error_cnt
;rld_7: ld a,(hl)
; cp a,7
; jr z,rld_8
; inc_error_cnt
;rld_8: ld a,#05 ;data_55.and.#0f
; ld (hl),#0a ;data_aa.and.#0f
; rld
; jr z,rld_9
; inc_error_cnt
;rld_9: ld a,(hl)
; cp a,#a5
; jr z,rrd_0
; inc_error_cnt
;rrd_0: ld hl,t_var3
; ld a,data_55
; ld (hl),data_aa
; rrd
; jp p,rrd_1
; inc_error_cnt
;rrd_1: jp pe,rrd_2
; inc_error_cnt
;rrd_2: jr nz,rrd_3
; inc_error_cnt
;rrd_3: cp a,data_55+5
; jr z,rrd_4
; inc_error_cnt
;rrd_4: ld a,(hl)
; cp a,data_55+5
; jr z,rrd_5
; inc_error_cnt
;rrd_5: ld (hl),data_7f
; ld a,data_80
; rrd
; jp m,rrd_6
; inc_error_cnt
;rrd_6: jp po,rrd_7
; inc_error_cnt
;rrd_7: cp a,data_80+15
; jr z,rrd_8
; inc_error_cnt
;rrd_8: ld a,(hl)
; cp a,7
; jr z,rrd_9
; inc_error_cnt
;rrd_9: ld a,8
; ld (hl),0
; rrd
; jr z,rrd_10
; inc_error_cnt
;rrd_10: ld a,(hl)
; cp a,data_80
; jr z,bit_0
; inc_error_cnt
;bit_0: ld a,data_ff
; bit 0,a
; jr nz,bit_1
; inc_error_cnt
;bit_1: bit 1,a
; jr nz,bit_2
; inc_error_cnt
;bit_2: bit 2,a
; jr nz,bit_3
; inc_error_cnt
;bit_3: bit 3,a
; jr nz,bit_4
; inc_error_cnt
;bit_4: bit 4,a
; jr nz,bit_5
; inc_error_cnt
;bit_5: bit 5,a
; jr nz,bit_6
; inc_error_cnt
;bit_6: bit 6,a
; jr nz,bit_7
; inc_error_cnt
;bit_7: bit 7,a
; jr nz,bit_8
; inc_error_cnt
;bit_8: ld a,0
; bit 0,a
; jr z,bit_9
; inc_error_cnt
;bit_9: bit 1,a
; jr z,bit_10
; inc_error_cnt
;bit_10: bit 2,a
; jr z,bit_11
; inc_error_cnt
;bit_11: bit 3,a
; jr z,bit_12
; inc_error_cnt
;bit_12: bit 4,a
; jr z,bit_13
; inc_error_cnt
;bit_13: bit 5,a
; jr z,bit_14
; inc_error_cnt
;bit_14: bit 6,a
; jr z,bit_15
; inc_error_cnt
;bit_15: bit 7,a
; jr z,bit_16
; inc_error_cnt
;bit_16: ld b,data_80
; bit 2,b
; jr z,bit_17
; inc_error_cnt
;bit_17: bit 7,b
; jr nz,bit_18
; inc_error_cnt
;bit_18: ld c,data_55
; bit 7,c
; jr z,bit_19
; inc_error_cnt
;bit_19: bit 0,c
; jr nz,bit_20
; inc_error_cnt
;bit_20: ld d,data_aa
; bit 7,d
; jr nz,bit_21
; inc_error_cnt
;bit_21: bit 4,d
; jr z,bit_22
; inc_error_cnt
;bit_22: ld e,data_7f
; bit 7,e
; jr z,bit_23
; inc_error_cnt
;bit_23: bit 3,e
; jr nz,bit_24
; inc_error_cnt
;bit_24: ld h,#12 ;bjp was >data_1234
; bit 4,h
; jr nz,bit_25
; inc_error_cnt
;bit_25: bit 2,h
; jr z,bit_26
; inc_error_cnt
;bit_26: ld l,#34 ;bjp was >data_1234
; bit 3,l
; jr z,bit_27
; inc_error_cnt
;bit_27: bit 2,l
; jr nz,bit_28
; inc_error_cnt
;bit_28: ld hl,t_var4
; ld (hl),data_55
; bit 0,(hl)
; jr nz,bit_29
; inc_error_cnt
;bit_29: bit 1,(hl)
; jr z,bit_30
; inc_error_cnt
;bit_30: bit 2,(hl)
; jr nz,bit_31
; inc_error_cnt
;bit_31: bit 3,(hl)
; jr z,bit_32
; inc_error_cnt
;bit_32: bit 4,(hl)
; jr nz,bit_33
; inc_error_cnt
;bit_33: bit 5,(hl)
; jr z,bit_34
; inc_error_cnt
;bit_34: bit 6,(hl)
; jr nz,bit_35
; inc_error_cnt
;bit_35: bit 7,(hl)
; jr z,bit_36
; inc_error_cnt
;bit_36: ld ix,t_var3
; ld a,data_aa
; ld (ix-2),a
; bit 0,(ix-2)
; jr z,bit_37
; inc_error_cnt
;bit_37: bit 1,(ix-2)
; jr nz,bit_38
; inc_error_cnt
;bit_38: bit 2,(ix-2)
; jr z,bit_39
; inc_error_cnt
;bit_39: bit 3,(ix-2)
; jr nz,bit_40
; inc_error_cnt
;bit_40: bit 4,(ix-2)
; jr z,bit_41
; inc_error_cnt
;bit_41: bit 5,(ix-2)
; jr nz,bit_42
; inc_error_cnt
;bit_42: bit 6,(ix-2)
; jr z,bit_43
; inc_error_cnt
;bit_43: bit 7,(ix-2)
; jr nz,bit_44
; inc_error_cnt
;bit_44: ld iy,t_var3
; ld a,data_55
; ld (iy+2),a
; bit 0,(iy+2)
; jr nz,bit_45
; inc_error_cnt
;bit_45: bit 1,(iy+2)
; jr z,bit_46
; inc_error_cnt
;bit_46: bit 2,(iy+2)
; jr nz,bit_47
; inc_error_cnt
;bit_47: bit 3,(iy+2)
; jr z,bit_48
; inc_error_cnt
;bit_48: bit 4,(iy+2)
; jr nz,bit_49
; inc_error_cnt
;bit_49: bit 5,(iy+2)
; jr z,bit_50
; inc_error_cnt
;bit_50: bit 6,(iy+2)
; jr nz,bit_51
; inc_error_cnt
;bit_51: bit 7,(iy+2)
; jr z,set_0
; inc_error_cnt
;set_0: ld a,0
; set 0,a
; set 2,a
; set 4,a
; set 6,a
; cp a,data_55
; jr z,set_1
; inc_error_cnt
;set_1: set 1,a
; set 3,a
; set 5,a
; set 7,a
; cp a,data_ff
; jr z,set_2
; inc_error_cnt
;set_2: ld b,0
; set 1,b
; set 3,b
; ld a,b
; cp a,#0a ;data_aa.and.#0f
; jr z,set_3
; inc_error_cnt
;set_3: ld c,0
; set 1,c
; set 4,c
; ld a,c
; cp a,#12 ;bjp was >data_1234
; jr z,set_4
; inc_error_cnt
;set_4: ld d,0
; set 2,d
; set 4,d
; set 5,d
; ld a,d
; cp a,#34 ;bjp was >data_1234
; jr z,set_5
; inc_error_cnt
;set_5: ld e,0
; set 7,e
; ld a,e
; cp a,data_80
; jr z,set_6
; inc_error_cnt
;set_6: ld h,0
; set 0,h
; set 2,h
; set 4,h
; set 6,h
; ld a,h
; cp a,data_55
; jr z,set_7
; inc_error_cnt
;set_7: ld l,0
; set 1,l
; set 3,l
; set 5,l
; set 7,l
; ld a,l
; cp a,data_aa
; jr z,set_8
; inc_error_cnt
;set_8: ld hl,t_var5
; ld (hl),0
; set 0,(hl)
; set 2,(hl)
; set 4,(hl)
; set 6,(hl)
; ld a,(hl)
; cp a,data_55
; jr z,set_9
; inc_error_cnt
;set_9: ld (hl),0
; set 1,(hl)
; set 3,(hl)
; set 5,(hl)
; set 7,(hl)
; ld a,(hl)
; cp a,data_aa
; jr z,set_10
; inc_error_cnt
;set_10: ld ix,t_var3
; ld a,0
; ld (ix-2),a
; ld (ix+2),a
; set 0,(ix-2)
; set 2,(ix-2)
; set 4,(ix-2)
; set 6,(ix-2)
; ld a,(ix-2)
; cp a,data_55
; jr z,set_11
; inc_error_cnt
;set_11: set 1,(ix+2)
; set 3,(ix+2)
; set 5,(ix+2)
; set 7,(ix+2)
; ld a,(ix+2)
; cp a,data_aa
; jr z,set_12
; inc_error_cnt
;set_12: ld iy,t_var3
; ld a,0
; ld (iy-1),a
; ld (iy+1),a
; set 0,(iy-1)
; set 2,(iy-1)
; set 4,(iy-1)
; set 6,(iy-1)
; ld a,(iy-1)
; cp a,data_55
; jr z,set_13
; inc_error_cnt
;set_13: set 1,(iy+1)
; set 3,(iy+1)
; set 5,(iy+1)
; set 7,(iy+1)
; ld a,(iy+1)
; cp a,data_aa
; jr z,res_0
; inc_error_cnt
;res_0: ld a,data_ff
; res 7,a
; cp a,data_7f
; jr z,res_1
; inc_error_cnt
;res_1: res 5,a
; res 3,a
; res 1,a
; cp a,data_55
; jr z,res_2
; inc_error_cnt
;res_2: ld a,data_ff
; res 0,a
; res 2,a
; res 4,a
; res 6,a
; cp a,data_aa
; jr z,res_3
; inc_error_cnt
;res_3: ld b,data_ff
; res 7,b
; ld a,b
; cp a,data_7f
; jr z,res_4
; inc_error_cnt
;res_4: ld c,data_ff
; res 0,c
; res 1,c
; res 2,c
; res 3,c
; res 4,c
; res 5,c
; res 6,c
; ld a,c
; cp a,data_80
; jr z,res_5
; inc_error_cnt
;res_5: ld d,data_ff
; res 0,d
; res 2,d
; res 4,d
; res 6,d
; ld a,d
; cp a,data_aa
; jr z,res_6
; inc_error_cnt
;res_6: ld e,data_ff
; res 1,e
; res 3,e
; res 5,e
; res 7,e
; ld a,e
; cp a,data_55
; jr z,res_7
; inc_error_cnt
;res_7: ld h,data_ff
; res 0,h
; res 2,h
; res 3,h
; res 5,h
; res 6,h
; res 7,h
; ld a,h
; cp a,#12 ;bjp was >data_1234
; jr z,res_8
; inc_error_cnt
;res_8: ld l,data_ff
; res 0,l
; res 1,l
; res 3,l
; res 6,l
; res 7,l
; ld a,l
; cp a,#34 ;bjp was >data_1234
; jr z,res_9
; inc_error_cnt
;res_9: ld hl,t_var3
; ld (hl),data_ff
; res 0,(hl)
; res 2,(hl)
; res 4,(hl)
; res 6,(hl)
; ld a,(hl)
; cp a,data_aa
; jr z,res_10
; inc_error_cnt
;res_10: res 1,(hl)
; res 3,(hl)
; res 5,(hl)
; res 7,(hl)
; ld a,(hl)
; cp a,0
; jr z,res_11
; inc_error_cnt
;res_11: ld ix,t_var3
; ld a,data_ff
; ld (ix-2),a
; ld (ix+2),a
; res 1,(ix-2)
; res 3,(ix-2)
; res 5,(ix-2)
; res 7,(ix-2)
; ld a,(ix-2)
; cp a,data_55
; jr z,res_12
; inc_error_cnt
;res_12: res 0,(ix+2)
; res 2,(ix+2)
; res 4,(ix+2)
; res 6,(ix+2)
; ld a,(ix+2)
; cp a,data_aa
; jr z,res_13
; inc_error_cnt
;res_13: ld iy,t_var3
; ld a,data_ff
; ld (iy-1),a
; ld (iy+1),a
; res 1,(iy-1)
; res 3,(iy-1)
; res 5,(iy-1)
; res 7,(iy-1)
; ld a,(iy-1)
; cp a,data_55
; jr z,res_14
; inc_error_cnt
;res_14: res 0,(iy+1)
; res 2,(iy+1)
; res 4,(iy+1)
; res 6,(iy+1)
; ld a,(iy+1)
; cp a,data_aa
; jr z,jp_0
; inc_error_cnt
;jp_0: jp jp_1
; nop
; nop
; inc_error_cnt
;jp_1: ld a,0
; and a
; jp z,jp_2
; inc_error_cnt
;jp_2: jp nc,jp_3
; inc_error_cnt
;jp_3: ld b,1
; sub a,b
; jp nz,jp_4
; inc_error_cnt
;jp_4: jp c,jp_5
; inc_error_cnt
;jp_5: jp jp_7
; inc_error_cnt
;jp_6: jp jr_0
; inc_error_cnt
;jp_7: jp jp_6
; inc_error_cnt
;jr_0: jr jr_2
; inc_error_cnt
;jr_1: jr jr_3
; inc_error_cnt
;jr_2: jr jr_1
; inc_error_cnt
;jr_3: ld hl,jp_9
; jp (hl)
; inc_error_cnt
;jp_8: ld ix,jp_10
; jp (ix)
; inc_error_cnt
;jp_9: jp jp_8
; inc_error_cnt
;jp_10: ld iy,djnz_0
; jp (iy)
; inc_error_cnt
;djnz_0: ld b,5
; ld a,0
;djnz_1: inc a
; djnz djnz_1
; cp a,5
; jr z,call_0
; inc_error_cnt
;call_0: ld a,0
; call sub1
; cp a,data_7f
; jr z,call_1
; inc_error_cnt
;call_1: ld a,0
; and a
; call z,sub2
; cp a,data_55
; jr z,call_2
; inc_error_cnt
;call_2: ld a,data_aa
; and a
; call nz,sub3
; cp a,data_aa+1
; jr z,call_3
; inc_error_cnt
;call_3: ld a,0
; cp a,0
; call nc,sub4
; cp a,data_ff
; jr z,call_4
; inc_error_cnt
;call_4: ld a,0
; sub a,1
; call c,sub5
; cp a,data_ff-1
; jr z,call_5
; inc_error_cnt
;call_5: ld a,data_7f
; sla a
; call po,sub6
; cp a,data_7f
; jr z,call_6
; inc_error_cnt
;call_6: ld a,data_aa
; srl a
; call pe,sub7
; cp a,data_aa
; jr z,call_7
; inc_error_cnt
;call_7: ld a,data_80
; sra a
; call m,sub8
; cp a,data_80
; jr z,call_8
; inc_error_cnt
;call_8: ld a,data_7f
; sra a
; call p,sub9
; cp a,data_7f
; jr z,rst_0
; inc_error_cnt
;rst_0: rst #00
; cp a,1
; jr z,rst_1
; inc_error_cnt
;rst_1: rst #08
; cp a,2
; jr z,rst_2
; inc_error_cnt
;rst_2: rst #10
; cp a,3
; jr z,rst_3
; inc_error_cnt
;rst_3: rst #18
; cp a,4
; jr z,rst_4
; inc_error_cnt
;rst_4: rst #20
; cp a,5
; jr z,rst_5
; inc_error_cnt
;rst_5: rst #28
; cp a,6
; jr z,rst_6
; inc_error_cnt
;rst_6: rst #30
; cp a,7
; jr z,rst_7
; inc_error_cnt
;rst_7: rst #38
; cp a,8
; jr z,in_0
; inc_error_cnt
;in_0: in a,(in_port)
; cp a,data_7f
; jr z,in_1
; inc_error_cnt
;in_1: ld c,in_port
; in a,(c)
; jr nz,in_2
; inc_error_cnt
;in_2: jp p,in_3
; inc_error_cnt
;in_3: jp pe,in_4
; inc_error_cnt
;in_4: cp a,data_55
; jr z,in_5
; inc_error_cnt
;in_5: in a,(c)
; jp m,in_6
; inc_error_cnt
;in_6: jp po,in_7
; inc_error_cnt
;in_7: jr nz,in_8
; inc_error_cnt
;in_8: cp a,data_80
; jr z,in_9
; inc_error_cnt
;in_9: in a,(c)
; jr z,in_10
; inc_error_cnt
;in_10: in b,(c)
; jp m,in_11
; inc_error_cnt
;in_11: ld a,b
; cp a,data_ff
; jr z,in_12
; inc_error_cnt
;in_12: in d,(c)
; jp pe,in_13
; inc_error_cnt
;in_13: ld a,d
; cp a,data_aa
; jr z,in_14
; inc_error_cnt
;in_14: in e,(c)
; jp p,in_15
; inc_error_cnt
;in_15: ld a,e
; cp a,data_7f
; jr z,in_16
; inc_error_cnt
;in_16: in h,(c)
; jp pe,in_17
; inc_error_cnt
;in_17: ld a,h
; cp a,data_55
; jr z,in_18
; inc_error_cnt
;in_18: in l,(c)
; jp m,in_19
; inc_error_cnt
;in_19: ld a,l
; cp a,data_80
; jr z,in_20
; inc_error_cnt
;in_20: in c,(c)
; jr z,in_21
; inc_error_cnt
;in_21: ld c,in_port
; ld b,2
; ld hl,t_var1
; ini
; jr nz,in_22
; inc_error_cnt
;in_22: ini
; jr z,in_23
; inc_error_cnt
;in_23: ld hl,t_var1
; ld a,(hl)
; cp a,data_ff
; jr z,in_24
; inc_error_cnt
;in_24: inc hl
; ld a,(hl)
; cp a,data_aa
; jr z,in_25
; inc_error_cnt
;in_25: ld b,5
; ld c,in_port
; ld hl,t_var1
; inir
; jr z,in_26
; inc_error_cnt
;in_26: ld hl,t_var1
; ld a,(hl)
; cp a,data_7f
; jr z,in_27
; inc_error_cnt
;in_27: inc hl
; ld a,(hl)
; cp a,data_55
; jr z,in_28
; inc_error_cnt
;in_28: inc hl
; ld a,(hl)
; cp a,data_80
; jr z,in_29
; inc_error_cnt
;in_29: inc hl
; ld a,(hl)
; cp a,0
; jr z,in_30
; inc_error_cnt
;in_30: inc hl
; ld a,(hl)
; cp a,data_ff
; jr z,in_31
; inc_error_cnt
;in_31: ld b,2
; ld c,in_port
; ld hl,t_var5
; ind
; jr nz,in_32
; inc_error_cnt
;in_32: ind
; jr z,in_33
; inc_error_cnt
;in_33: ld hl,t_var5
; ld a,(hl)
; cp a,data_aa
; jr z,in_34
; inc_error_cnt
;in_34: dec hl
; ld a,(hl)
; cp a,data_7f
; jr z,in_35
; inc_error_cnt
;in_35: ld b,5
; ld c,in_port
; ld hl,t_var5
; indr
; jr z,in_36
; inc_error_cnt
;in_36: ld hl,t_var5
; ld a,(hl)
; cp a,data_55
; jr z,in_37
; inc_error_cnt
;in_37: dec hl
; ld a,(hl)
; cp a,data_80
; jr z,in_38
; inc_error_cnt
;in_38: dec hl
; ld a,(hl)
; cp a,0
; jr z,in_39
; inc_error_cnt
;in_39: dec hl
; ld a,(hl)
; cp a,data_ff
; jr z,in_40
; inc_error_cnt
;in_40: dec hl
; ld a,(hl)
; cp a,data_aa
; jr z,ldi_0
; inc_error_cnt
;ldi_0: ld hl,t_var1
; ld a,#12 ;bjp was >data_1234
; ld (hl),a
; inc hl
; ld a,#34 ;bjp was >data_1234
; ld (hl),a
; dec hl
; ld de,t_var3
; ld bc,2
; ldi
; jp pe,ldi_1
; inc_error_cnt
;ldi_1: ldi
; jp po,ldi_2
; inc_error_cnt
;ldi_2: ld hl,t_var3
; ld a,(hl)
; cp a,#12 ;bjp was >data_1234
; jr z,ldi_3
; inc_error_cnt
;ldi_3: inc hl
; ld a,(hl)
; cp a,#34 ;bjp was >data_1234
; jr z,ldir_0
; inc_error_cnt
;ldir_0: ld hl,var1
; ld de,t_var1
; ld bc,5
; ldir
; jp po,ldir_1
; inc_error_cnt
;ldir_1: ld hl,t_var1
; ld a,(hl)
; cp a,data_ff
; jr z,ldir_2
; inc_error_cnt
;ldir_2: inc hl
; ld a,(hl)
; cp a,data_55
; jr z,ldir_3
; inc_error_cnt
;ldir_3: inc hl
; ld a,(hl)
; cp a,data_80
; jr z,ldir_4
; inc_error_cnt
;ldir_4: inc hl
; ld a,(hl)
; cp a,data_aa
; jr z,ldir_5
; inc_error_cnt
;ldir_5: inc hl
; ld a,(hl)
; cp a,data_7f
; jr z,ldd_0
; inc_error_cnt
;ldd_0: ld hl,t_var5
; ld a,#12 ;bjp was >data_1234
; ld (hl),a
; dec hl
; ld a,#34 ;bjp was >data_1234
; ld (hl),a
; inc hl
; ld bc,2
; ld de,t_var3
; ldd
; jp pe,ldd_1
; inc_error_cnt
;ldd_1: ldd
; jp po,ldd_2
; inc_error_cnt
;ldd_2: ld hl,t_var3
; ld a,(hl)
; cp a,#12 ;bjp was >data_1234
; jr z,ldd_3
; inc_error_cnt
;ldd_3: dec hl
; ld a,(hl)
; cp a,#34 ;bjp was >data_1234
; jr z,lddr_0
; inc_error_cnt
;lddr_0: ld bc,5
; ld hl,var5
; ld de,t_var5
; lddr
; jp po,lddr_1
; inc_error_cnt
;lddr_1: ld hl,t_var1
; ld a,(hl)
; cp a,data_ff
; jr z,lddr_2
; inc_error_cnt
;lddr_2: inc hl
; ld a,(hl)
; cp a,data_55
; jr z,lddr_3
; inc_error_cnt
;lddr_3: inc hl
; ld a,(hl)
; cp a,data_80
; jr z,lddr_4
; inc_error_cnt
;lddr_4: inc hl
; ld a,(hl)
; cp a,data_aa
; jr z,lddr_5
; inc_error_cnt
;lddr_5: inc hl
; ld a,(hl)
; cp a,data_7f
; jr z,cpi_0
; inc_error_cnt
;cpi_0: ld hl,t_var1
; ld bc,5
; ld a,data_7f
; cpi
; jp pe,cpi_1
; inc_error_cnt
;cpi_1: jp m,cpi_2
; inc_error_cnt
;cpi_2: jr nz,cpi_3
; inc_error_cnt
;cpi_3: cpi
; jp pe,cpi_4
; inc_error_cnt
;cpi_4: jp p,cpi_5
; inc_error_cnt
;cpi_5: jr nz,cpi_6
; inc_error_cnt
;cpi_6: cpi
; jp pe,cpi_7
; inc_error_cnt
;cpi_7: jp m,cpi_8
; inc_error_cnt
;cpi_8: jr nz,cpi_9
; inc_error_cnt
;cpi_9: cpi
; jp pe,cpi_10
; inc_error_cnt
;cpi_10: jp m,cpi_11
; inc_error_cnt
;cpi_11: jr nz,cpi_12
; inc_error_cnt
;cpi_12: cpi
; jp po,cpi_13
; inc_error_cnt
;cpi_13: jp p,cpi_14
; inc_error_cnt
;cpi_14: jr z,cpir_0
; inc_error_cnt
;cpir_0: ld a,data_aa
; ld hl,var1
; ld bc,5
; cpir
; jr z,cpir_1
; inc_error_cnt
;cpir_1: jp pe,cpir_2
; inc_error_cnt
;cpir_2: ld a,b
; cp a,0
; jr z,cpir_3
; inc_error_cnt
;cpir_3: ld a,c
; cp a,1
; jr z,cpir_4
; inc_error_cnt
;cpir_4: ld a,data_7f
; ld hl,var1
; ld bc,5
; cpir
; jp po,cpir_5
; inc_error_cnt
;cpir_5: jr z,cpir_6
; inc_error_cnt
;cpir_6: ld a,#34 ;bjp was >data_1234
; ld hl,var1
; ld bc,5
; cpir
; jp po,cpir_7
; inc_error_cnt
;cpir_7: jr nz,cpir_8
; inc_error_cnt
;cpir_8: jp m,cpir_9
; inc_error_cnt
;cpir_9: ld a,data_aa
; ld hl,var1
; ld bc,3
; cpir
; jp po,cpir_10
; inc_error_cnt
;cpir_10: jp p,cpir_11
; inc_error_cnt
;cpir_11: jr nz,cpd_0
; inc_error_cnt
;cpd_0: ld a,data_ff
; ld hl,var5
; ld bc,5
; cpd
; jp m,cpd_1
; inc_error_cnt
;cpd_1: jp pe,cpd_2
; inc_error_cnt
;cpd_2: jr nz,cpd_3
; inc_error_cnt
;cpd_3: cpd
; jp p,cpd_4
; inc_error_cnt
;cpd_4: jp pe,cpd_5
; inc_error_cnt
;cpd_5: jr nz,cpd_6
; inc_error_cnt
;cpd_6: cpd
; jp p,cpd_7
; inc_error_cnt
;cpd_7: jp pe,cpd_8
; inc_error_cnt
;cpd_8: jr nz,cpd_9
; inc_error_cnt
;cpd_9: cpd
; jp m,cpd_10
; inc_error_cnt
;cpd_10: jp pe,cpd_11
; inc_error_cnt
;cpd_11: jr nz,cpd_12
; inc_error_cnt
;cpd_12: cpd
; jp p,cpd_13
; inc_error_cnt
;cpd_13: jp po,cpd_14
; inc_error_cnt
;cpd_14: jr z,cpdr_0
; inc_error_cnt
;cpdr_0: ld a,data_80
; ld hl,var5
; ld bc,5
; cpdr
; jp pe,cpdr_1
; inc_error_cnt
;cpdr_1: jp p,cpdr_2
; inc_error_cnt
;cpdr_2: jr z,cpdr_3
; inc_error_cnt
;cpdr_3: ld a,b
; cp a,0
; jr z,cpdr_4
; inc_error_cnt
;cpdr_4: ld a,c
; cp a,2
; jr z,cpdr_5
; inc_error_cnt
;cpdr_5: ld a,#34 ;bjp was >data_1234
; ld hl,var5
; ld bc,5
; cpdr
; jp po,cpdr_6
; inc_error_cnt
;cpdr_6: jr nz,cpdr_7
; inc_error_cnt
;cpdr_7: jp p,cpdr_8
; inc_error_cnt
;cpdr_8: ld a,#34 ;bjp was >data_1234
; ld hl,var5
; ld bc,3
; cpdr
; jp po,cpdr_9
; inc_error_cnt
;cpdr_9: jr nz,cpdr_10
; inc_error_cnt
;cpdr_10: jp m,out_0
; inc_error_cnt
;;
;;the file portfe.xxx must be examined to see if the proper output is generated
;;
;out_0: ld a,#30
; out (out_port),a
; ld c,out_port
; ld a,#31
; out (c),a
; ld b,#32
; out (c),b
; ld d,#33
; out (c),d
; ld e,#34
; out (c),e
; ld h,#35
; out (c),h
; ld l,#36
; out (c),l
; out (c),c ;output value divider
;outi_0: ld a,#31 ;set up output values
; ld b,5
; ld hl,t_var1
;outi_1: ld (hl),a
; inc a
; inc hl
; djnz outi_1
;outi_2: ld c,out_port
; ld b,5
; ld hl,t_var1
;outi_3: outi
; jr nz,outi_3
;otir_0: out (c),c ;output value divider
; ld hl,t_var1
; ld b,5
; otir
; jr z,outd_0
; inc_error_cnt
;outd_0: out (c),c
; ld hl,t_var5
; ld b,5
;outd_1: outd
; jr nz,outd_1
;otdr_0: out (c),c
; ld b,5
; ld hl,t_var5
; otdr
; jr z,otdr_1
; inc_error_cnt
;otdr_1: out (c),c
; ld a,#0d
; out (c),a
; ld a,#0a
; out (c),a
add_110: push ix
pop hl
ld a,h
cp a,#71 ; >stack_end
jr z,add_111
inc_error_cnt
add_111: ld a,l
cp a,#80 ; <stack_end
jr z,add_112
inc_error_cnt
add_112: ld ix,data_7fff
ld bc,data_aa55
add ix,bc
jr c,add_113
inc_error_cnt
add_113: add ix,bc
jr nc,add_114
inc_error_cnt
add_114: push ix
pop hl
ld a,h
cp a,#d4
jr z,add_115
inc_error_cnt
add_115: ld a,l
cp a,#a9
jr z,add_116
inc_error_cnt
add_116: ld ix,data_1234
ld de,data_1234
add ix,de
push ix
pop hl
ld a,h
cp a,#24 ;>(data_1234+data_1234)
jr z,add_117
inc_error_cnt
add_117: ld a,l
cp a,#68 ;<(data_1234+data_1234)
jr z,add_118
inc_error_cnt
add_118: ld ix,data_1234
add ix,ix
push ix
pop bc
ld a,b
cp a,#24 ;>(data_1234+data_1234)
jr z,add_119
inc_error_cnt
add_119: ld a,c
cp a,#68 ;<(data_1234+data_1234)
jr z,add_120
inc_error_cnt
add_120: ld sp,stack_end
ld iy,0
add iy,sp
jr nc,add_121
inc_error_cnt
add_121: push iy
pop hl
ld a,h
cp a,#71 ;>stack_end
jr z,add_122
inc_error_cnt
add_122: ld a,l
cp a,#80 ;<stack_end
jr z,add_123
inc_error_cnt
add_123: ld iy,data_7fff
ld bc,data_aa55
add iy,bc
jr c,add_124
inc_error_cnt
add_124: add iy,bc
jr nc,add_125
inc_error_cnt
add_125: push iy
pop hl
ld a,h
cp a,#d4
jr z,add_126
inc_error_cnt
add_126: ld a,l
cp a,#a9
jr z,add_127
inc_error_cnt
add_127: ld iy,data_1234
ld de,data_1234
add iy,de
push iy
pop hl
ld a,h
cp a,#24 ;>(data_1234+data_1234)
jr z,add_128
inc_error_cnt
add_128: ld a,l
cp a,#68 ;<(data_1234+data_1234)
jr z,add_129
inc_error_cnt
add_129: ld iy,data_1234
add iy,iy
push iy
pop bc
ld a,b
cp a,#24 ;>(data_1234+data_1234)
jr z,add_130
inc_error_cnt
add_130: ld a,c
cp a,#68 ;<(data_1234+data_1234)
jr z,inc_54
inc_error_cnt
inc_54: ld bc,data_1234
inc bc
ld a,b
cp a,#12 ;bjp was >data_1234
jr z,inc_55
inc_error_cnt
inc_55: ld a,c
cp a,#34+1 ;bjp was >data_1234+1
jr z,inc_56
inc_error_cnt
inc_56: ld de,data_55aa
inc de
ld a,d
cp a,#55 ;>data_55aa
jr z,inc_57
inc_error_cnt
inc_57: ld a,e
cp a,#ab ;<data_55aa+1
jr z,inc_58
inc_error_cnt
inc_58: ld hl,data_7fff
inc hl
ld a,h
cp a,#80 ;>data_7fff+1
jr z,inc_59
inc_error_cnt
inc_59: ld a,l
cp a,#00 ;<data_7fff+1
jr z,inc_60
inc_error_cnt
inc_60: ld hl,0
inc sp
add hl,sp
ld sp,stack_end
ld a,h
cp a,#71 ;>stack_end+1
jr z,inc_61
inc_error_cnt
inc_61: ld a,l
cp a,#81 ;<stack_end+1
jr z,inc_62
inc_error_cnt
inc_62: ld ix,data_8000
inc ix
push ix
pop de
ld a,d
cp a,#80 ;>data_8000
jr z,inc_63
inc_error_cnt
inc_63: ld a,e
cp a,#01 ;<data_8000+1
jr z,inc_64
inc_error_cnt
inc_64: ld iy,data_7fff
inc iy
push iy
pop bc
ld a,b
cp a,#80 ;>data_7fff+1
jr z,inc_65
inc_error_cnt
inc_65: ld a,c
cp a,#00 ;<data_7fff+1
jr z,dec_46
inc_error_cnt
dec_46: ld bc,data_1234
dec bc
ld a,b
cp a,#12 ;bjp was >data_1234
jr z,dec_47
inc_error_cnt
dec_47: ld a,c
cp a,#34-1 ;bjp was >data_1234-1
jr z,dec_48
inc_error_cnt
dec_48: ld de,data_8000
dec de
ld a,d
cp a,#7f ;>data_7fff
jr z,dec_49
inc_error_cnt
dec_49: ld a,e
cp a,#ff ;<data_7fff
jr z,dec_50
inc_error_cnt
dec_50: ld hl,data_aa55
dec hl
ld a,h
cp a,#aa ;>data_aa55
jr z,dec_51
inc_error_cnt
dec_51: ld a,l
cp a,#54 ;<data_aa55-1
jr z,dec_52
inc_error_cnt
dec_52: ld hl,0
dec sp
add hl,sp
ld a,h
cp a,#71 ;>stack_end-1
jr z,dec_53
inc_error_cnt
dec_53: ld a,l
cp a,#7f ;<stack_end-1
jr z,dec_54
inc_error_cnt
dec_54: ld sp,stack_end
ld ix,data_ffff
dec ix
push ix
pop bc
ld a,b
cp a,#ff ;>data_ffff
jr z,dec_55
inc_error_cnt
dec_55: ld a,c
cp a,#fe ;<data_ffff-1
jr z,dec_56
inc_error_cnt
dec_56: ld iy,data_aa55
dec iy
push iy
pop de
ld a,d
cp a,#aa ;>data_aa55
jr z,dec_57
inc_error_cnt
dec_57: ld a,e
cp a,#54 ;<data_aa55-1
jr z,rlca_0
inc_error_cnt
rlca_0: ld a,data_80
rlca
jr c,rlca_1
inc_error_cnt
rlca_1: rlca
jr nc,rlca_2
inc_error_cnt
rlca_2: cp a,2
jr z,rlca_3
inc_error_cnt
rlca_3: ld a,data_55
rlca
cp a,data_aa
jr z,rla_0
inc_error_cnt
rla_0: scf
ccf
ld a,data_80
rla
jr c,rla_1
inc_error_cnt
rla_1: rla
jr nc,rla_2
inc_error_cnt
rla_2: cp a,1
jr z,rla_3
inc_error_cnt
rla_3: ld a,data_7f
rla
cp a,data_ff-1
jr z,rrca_0
inc_error_cnt
rrca_0: scf
ccf
ld a,1
rrca
jr c,rrca_1
inc_error_cnt
rrca_1: rrca
jr nc,rrca_2
inc_error_cnt
rrca_2: cp a,data_7f-#3f
jr z,rrca_3
inc_error_cnt
rrca_3: ld a,data_aa
rrca
cp a,data_55
jr z,rra_0
inc_error_cnt
rra_0: scf
ccf
ld a,1
rra
jr c,rra_1
inc_error_cnt
rra_1: rra
jr nc,rra_2
inc_error_cnt
rra_2: cp a,data_80
jr z,rra_3
inc_error_cnt
rra_3: ld a,data_aa
rra
cp a,data_55
jr z,rlc_0
inc_error_cnt
rlc_0: ld a,data_80
rlc a
jr c,rlc_1
inc_error_cnt
rlc_1: jp p,rlc_2
inc_error_cnt
rlc_2: jr nz,rlc_3
inc_error_cnt
rlc_3: jp po,rlc_4
inc_error_cnt
rlc_4: rlc a
jr nc,rlc_5
inc_error_cnt
rlc_5: rlc a
rlc a
rlc a
rlc a
rlc a
rlc a
jp m,rlc_6
inc_error_cnt
rlc_6: ld a,data_55
rlc a
jp m,rlc_7
inc_error_cnt
rlc_7: jp pe,rlc_8
inc_error_cnt
rlc_8: cp a,data_aa
jr z,rlc_9
inc_error_cnt
rlc_9: ld a,0
rlc a
jr z,rlc_10
inc_error_cnt
rlc_10: ld b,data_7f
rlc b
ld a,b
cp a,data_ff-1
jr z,rlc_11
inc_error_cnt
rlc_11: ld c,data_aa
rlc c
jr c,rlc_12
inc_error_cnt
rlc_12: ld a,c
cp a,data_55
jr z,rlc_13
inc_error_cnt
rlc_13: ld d,data_80
rlc d
jr c,rlc_14
inc_error_cnt
rlc_14: ld a,d
cp a,1
jr z,rlc_15
inc_error_cnt
rlc_15: ld e,data_ff
rlc e
jr c,rlc_16
inc_error_cnt
rlc_16: ld a,e
cp a,data_ff
jr z,rlc_17
inc_error_cnt
rlc_17: ld h,data_55
rlc h
jp m,rlc_18
inc_error_cnt
rlc_18: ld a,h
cp a,data_aa
jr z,rlc_19
inc_error_cnt
rlc_19: ld l,data_80
rlc l
jp p,rlc_20
inc_error_cnt
rlc_20: ld a,l
cp a,1
jr z,rlc_21
inc_error_cnt
rlc_21: ld hl,t_var1
ld a,data_55
ld (hl),a
rlc (hl)
jp m,rlc_22
inc_error_cnt
rlc_22: jp pe,rlc_23
inc_error_cnt
rlc_23: jr nc,rlc_24
inc_error_cnt
rlc_24: jr nz,rlc_25
inc_error_cnt
rlc_25: rlc (hl)
jp p,rlc_26
inc_error_cnt
rlc_26: jr c,rlc_27
inc_error_cnt
rlc_27: ld a,(hl)
cp a,data_55
jr z,rlc_28
inc_error_cnt
rlc_28: ld a,data_7f
ld (hl),a
rlc (hl)
jp po,rlc_29
inc_error_cnt
rlc_29: ld a,(hl)
cp a,data_ff-1
jr z,rlc_30
inc_error_cnt
rlc_30: ld a,0
ld (hl),a
rlc (hl)
jr z,rlc_31
inc_error_cnt
rlc_31: ld ix,t_var3
ld a,data_55
ld (ix-2),a
rlc (ix-2)
jp m,rlc_32
inc_error_cnt
rlc_32: jp pe,rlc_33
inc_error_cnt
rlc_33: jr nz,rlc_34
inc_error_cnt
rlc_34: jr nc,rlc_35
inc_error_cnt
rlc_35: rlc (ix-2)
jp p,rlc_36
inc_error_cnt
rlc_36: jr c,rlc_37
inc_error_cnt
rlc_37: ld a,(ix-2)
cp a,data_55
jr z,rlc_38
inc_error_cnt
rlc_38: ld a,data_7f
ld (ix+2),a
rlc (ix+2)
jp po,rlc_39
inc_error_cnt
rlc_39: ld a,(ix+2)
cp a,data_ff-1
jr z,rlc_40
inc_error_cnt
rlc_40: ld a,0
ld (ix-1),a
rlc (ix-1)
jr z,rlc_41
inc_error_cnt
rlc_41: ld iy,t_var3
ld a,data_55
ld (iy+2),a
rlc (iy+2)
jp m,rlc_42
inc_error_cnt
rlc_42: jp pe,rlc_43
inc_error_cnt
rlc_43: jr nc,rlc_44
inc_error_cnt
rlc_44: jr nz,rlc_45
inc_error_cnt
rlc_45: rlc (iy+2)
jp p,rlc_46
inc_error_cnt
rlc_46: jr c,rlc_47
inc_error_cnt
rlc_47: ld a,(iy+2)
cp a,data_55
jr z,rlc_48
inc_error_cnt
rlc_48: ld a,data_7f
ld (iy-2),a
rlc (iy-2)
jp po,rlc_49
inc_error_cnt
rlc_49: ld a,(iy-2)
cp a,data_ff-1
jr z,rlc_50
inc_error_cnt
rlc_50: ld a,0
ld (iy+1),a
rlc (iy+1)
jr z,rl_0
inc_error_cnt
rl_0: scf
ccf
ld a,data_55
rl a
jp m,rl_1
inc_error_cnt
rl_1: jp pe,rl_2
inc_error_cnt
rl_2: jr nc,rl_3
inc_error_cnt
rl_3: jr nz,rl_4
inc_error_cnt
rl_4: rl a
jp p,rl_5
inc_error_cnt
rl_5: jp po,rl_6
inc_error_cnt
rl_6: jr c,rl_7
inc_error_cnt
rl_7: rl a
cp a,data_aa-1
jr z,rl_8
inc_error_cnt
rl_8: ld a,0
rl a
jr z,rl_9
inc_error_cnt
rl_9: ld b,data_aa
ld c,data_7f
rl b
jr c,rl_10
inc_error_cnt
rl_10: rl c
jr nc,rl_11
inc_error_cnt
rl_11: ld a,b
cp a,data_55-1
jr z,rl_12
inc_error_cnt
rl_12: ld a,c
cp a,data_ff
jr z,rl_13
inc_error_cnt
rl_13: ld d,data_ff
ld e,data_80
rl e
jr c,rl_14
inc_error_cnt
rl_14: rl d
jr c,rl_15
inc_error_cnt
rl_15: ld a,d
cp a,data_ff
jr z,rl_16
inc_error_cnt
rl_16: ld a,e
cp a,0
jr z,rl_17
inc_error_cnt
rl_17: ld h,data_7f
ld l,data_55
rl h
jp m,rl_18
inc_error_cnt
rl_18: rl l
jp m,rl_19
inc_error_cnt
rl_19: ld a,h
cp a,data_ff-1
jr z,rl_20
inc_error_cnt
rl_20: ld a,l
cp a,data_aa
jr z,rl_21
inc_error_cnt
rl_21: ld hl,t_var5
ld a,data_55
ld (hl),a
rl (hl)
jp m,rl_22
inc_error_cnt
rl_22: jp pe,rl_23
inc_error_cnt
rl_23: jr nc,rl_24
inc_error_cnt
rl_24: jr nz,rl_25
inc_error_cnt
rl_25: rl (hl)
jp p,rl_26
inc_error_cnt
rl_26: jp po,rl_27
inc_error_cnt
rl_27: jr c,rl_28
inc_error_cnt
rl_28: ld a,(hl)
cp a,data_55-1
jr z,rl_29
inc_error_cnt
rl_29: ld a,0
ld (hl),a
rl (hl)
jr z,rl_30
inc_error_cnt
rl_30: ld ix,t_var3
ld a,data_55
ld (ix-2),a
rl (ix-2)
jp m,rl_31
inc_error_cnt
rl_31: jp pe,rl_32
inc_error_cnt
rl_32: jr nc,rl_33
inc_error_cnt
rl_33: jr nz,rl_34
inc_error_cnt
rl_34: rl (ix-2)
jp p,rl_35
inc_error_cnt
rl_35: jp po,rl_36
inc_error_cnt
rl_36: jr c,rl_37
inc_error_cnt
rl_37: ld a,(ix-2)
cp a,data_55-1
jr z,rl_38
inc_error_cnt
rl_38: ld a,0
ld (ix+2),a
rl (ix+2)
jr z,rl_39
rl_39: ld iy,t_var3
ld a,data_55
ld (iy-1),a
rl (iy-1)
jp m,rl_40
inc_error_cnt
rl_40: jp pe,rl_41
inc_error_cnt
rl_41: jr nc,rl_42
inc_error_cnt
rl_42: jr nz,rl_43
inc_error_cnt
rl_43: rl (iy-1)
jp p,rl_44
inc_error_cnt
rl_44: jp po,rl_45
inc_error_cnt
rl_45: jr c,rl_46
inc_error_cnt
rl_46: ld a,(iy-1)
cp a,data_55-1
jr z,rl_47
inc_error_cnt
rl_47: ld a,0
ld (iy+1),a
rl (iy+1)
jr z,rrc_0
inc_error_cnt
rrc_0: ld a,data_aa
rrc a
jp p,rrc_1
inc_error_cnt
rrc_1: jp pe,rrc_2
inc_error_cnt
rrc_2: jr nz,rrc_3
inc_error_cnt
rrc_3: jr nc,rrc_4
inc_error_cnt
rrc_4: rrc a
jp m,rrc_5
inc_error_cnt
rrc_5: jr c,rrc_6
inc_error_cnt
rrc_6: cp a,data_aa
jr z,rrc_7
inc_error_cnt
rrc_7: ld a,1
rrc a
jr c,rrc_8
inc_error_cnt
rrc_8: cp a,data_80
jr z,rrc_9
inc_error_cnt
rrc_9: ld a,data_7f
rrc a
jp po,rrc_10
inc_error_cnt
rrc_10: cp a,#bf
jr z,rrc_11
inc_error_cnt
rrc_11: ld b,data_80
ld c,data_55
rrc b
jr nc,rrc_12
inc_error_cnt
rrc_12: rrc c
jr c,rrc_13
inc_error_cnt
rrc_13: ld a,b
cp a,#40
jr z,rrc_14
inc_error_cnt
rrc_14: ld a,c
cp a,data_aa
jr z,rrc_15
inc_error_cnt
rrc_15: ld d,data_aa
ld e,1
rrc d
jp p,rrc_16
inc_error_cnt
rrc_16: rrc e
jp m,rrc_17
inc_error_cnt
rrc_17: ld a,d
cp a,data_55
jr z,rrc_18
inc_error_cnt
rrc_18: ld a,e
cp a,data_80
jr z,rrc_19
inc_error_cnt
rrc_19: ld h,data_55
ld l,data_ff
rrc h
jr c,rrc_20
inc_error_cnt
rrc_20: rrc l
jr c,rrc_21
inc_error_cnt
rrc_21: ld a,h
cp a,data_aa
jr z,rrc_22
inc_error_cnt
rrc_22: ld a,l
cp a,data_ff
jr z,rrc_23
inc_error_cnt
rrc_23: ld hl,t_var4
ld (hl),data_aa
rrc (hl)
jp p,rrc_24
inc_error_cnt
rrc_24: jp pe,rrc_25
inc_error_cnt
rrc_25: jr nz,rrc_26
inc_error_cnt
rrc_26: jr nc,rrc_27
inc_error_cnt
rrc_27: rrc (hl)
jp m,rrc_28
inc_error_cnt
rrc_28: jr c,rrc_29
inc_error_cnt
rrc_29: ld a,(hl)
cp a,data_aa
jr z,rrc_30
inc_error_cnt
rrc_30: ld (hl),data_7f
rrc (hl)
jp po,rrc_31
inc_error_cnt
rrc_31: ld a,(hl)
cp a,#bf
jr z,rrc_32
inc_error_cnt
rrc_32: ld (hl),0
rrc (hl)
jr z,rrc_33
inc_error_cnt
rrc_33: ld ix,t_var3
ld a,data_aa
ld (ix+2),a
rrc (ix+2)
jp p,rrc_34
inc_error_cnt
rrc_34: jp pe,rrc_35
inc_error_cnt
rrc_35: jr nc,rrc_36
inc_error_cnt
rrc_36: jr nz,rrc_37
inc_error_cnt
rrc_37: rrc (ix+2)
jp m,rrc_38
inc_error_cnt
rrc_38: jr c,rrc_39
inc_error_cnt
rrc_39: ld a,(ix+2)
cp a,data_aa
jr z,rrc_40
inc_error_cnt
rrc_40: ld a,1
ld (ix-2),a
rrc (ix-2)
jp po,rrc_41
inc_error_cnt
rrc_41: ld a,(ix-2)
cp a,data_80
jr z,rrc_42
inc_error_cnt
rrc_42: ld a,0
ld (ix+1),a
rrc (ix+1)
jr z,rrc_43
inc_error_cnt
rrc_43: ld iy,t_var3
ld a,data_aa
ld (iy+2),a
rrc (iy+2)
jp p,rrc_44
inc_error_cnt
rrc_44: jp pe,rrc_45
inc_error_cnt
rrc_45: jr nc,rrc_46
inc_error_cnt
rrc_46: jr nz,rrc_47
inc_error_cnt
rrc_47: rrc (iy+2)
jp m,rrc_48
inc_error_cnt
rrc_48: jr c,rrc_49
inc_error_cnt
rrc_49: ld a,(iy+2)
cp a,data_aa
jr z,rrc_50
inc_error_cnt
rrc_50: ld a,1
ld (iy-2),a
rrc (iy-2)
jp po,rrc_51
inc_error_cnt
rrc_51: ld a,(iy-2)
cp a,data_80
jr z,rrc_52
inc_error_cnt
rrc_52: ld a,0
ld (iy+1),a
rrc (iy+1)
jr z,rr_0
inc_error_cnt
rr_0: scf
ccf
ld a,data_aa
rr a
jp p,rr_1
inc_error_cnt
rr_1: jp pe,rr_2
inc_error_cnt
rr_2: jr nc,rr_3
inc_error_cnt
rr_3: jr nz,rr_4
inc_error_cnt
rr_4: rr a
jr c,rr_5
inc_error_cnt
rr_5: jp po,rr_6
inc_error_cnt
rr_6: cp a,#2a
jr z,rr_7
inc_error_cnt
rr_7: scf
ld a,0
rr a
jp m,rr_8
inc_error_cnt
rr_8: cp a,data_80
jr z,rr_9
inc_error_cnt
rr_9: ld a,0
rr a
jr z,rr_10
inc_error_cnt
rr_10: ld b,data_55
ld c,data_aa
rr b
jr c,rr_11
inc_error_cnt
rr_11: rr c
jr nc,rr_12
inc_error_cnt
rr_12: ld a,b
cp a,#2a
jr z,rr_13
inc_error_cnt
rr_13: ld a,c
cp a,#d5
jr z,rr_14
inc_error_cnt
rr_14: ld d,data_7f
ld e,data_80
rr d
jr c,rr_15
inc_error_cnt
rr_15: rr e
jr nc,rr_16
inc_error_cnt
rr_16: ld a,d
cp a,#3f
jr z,rr_17
inc_error_cnt
rr_17: ld a,e
cp a,#c0
jr z,rr_18
inc_error_cnt
rr_18: ld hl,t_var2
ld (hl),data_55
rr (hl)
jp p,rr_19
inc_error_cnt
rr_19: jp po,rr_20
inc_error_cnt
rr_20: jr c,rr_21
inc_error_cnt
rr_21: jr nz,rr_22
inc_error_cnt
rr_22: rr (hl)
jp m,rr_23
inc_error_cnt
rr_23: jp pe,rr_24
inc_error_cnt
rr_24: jr nc,rr_25
inc_error_cnt
rr_25: ld a,(hl)
cp a,#95
jr z,rr_26
inc_error_cnt
rr_26: ld (hl),0
rr (hl)
jr z,rr_27
inc_error_cnt
rr_27: ld ix,t_var3
ld a,data_55
ld (ix-2),a
rr (ix-2)
jp p,rr_28
inc_error_cnt
rr_28: jp po,rr_29
inc_error_cnt
rr_29: jr c,rr_30
inc_error_cnt
rr_30: jr nz,rr_31
inc_error_cnt
rr_31: rr (ix-2)
jp m,rr_32
inc_error_cnt
rr_32: jp pe,rr_33
inc_error_cnt
rr_33: jr nc,rr_34
inc_error_cnt
rr_34: ld a,(ix-2)
cp a,#95
jr z,rr_35
inc_error_cnt
rr_35: ld a,0
ld (ix+2),a
rr (ix+2)
jr z,rr_36
inc_error_cnt
rr_36: ld iy,t_var3
ld a,data_55
ld (iy+2),a
rr (iy+2)
jp p,rr_37
inc_error_cnt
rr_37: jp po,rr_38
inc_error_cnt
rr_38: jr c,rr_39
inc_error_cnt
rr_39: jr nz,rr_40
inc_error_cnt
rr_40: rr (iy+2)
jp m,rr_41
inc_error_cnt
rr_41: jp pe,rr_42
inc_error_cnt
rr_42: jr nc,rr_43
inc_error_cnt
rr_43: ld a,(iy+2)
cp a,#95
jr z,rr_44
inc_error_cnt
rr_44: ld a,0
ld (iy-1),a
rr (iy-1)
jr z,sla_0
inc_error_cnt
sla_0: ld a,data_55
sla a
jp m,sla_1
inc_error_cnt
sla_1: jp pe,sla_2
inc_error_cnt
sla_2: jr nc,sla_3
inc_error_cnt
sla_3: jr nz,sla_4
inc_error_cnt
sla_4: sla a
jp p,sla_5
inc_error_cnt
sla_5: jp po,sla_6
inc_error_cnt
sla_6: jr c,sla_7
inc_error_cnt
sla_7: cp a,data_55-1
jr z,sla_8
inc_error_cnt
sla_8: ld a,0
sla a
jr z,sla_9
inc_error_cnt
sla_9: ld b,data_80
ld c,data_7f
sla b
jr c,sla_10
inc_error_cnt
sla_10: ld a,b
cp a,0
jr z,sla_11
inc_error_cnt
sla_11: sla c
jp m,sla_12
inc_error_cnt
sla_12: ld a,c
cp a,data_ff-1
jr z,sla_13
inc_error_cnt
sla_13: ld d,data_aa
ld e,data_55
sla d
jr c,sla_14
inc_error_cnt
sla_14: ld a,d
cp a,data_55-1
jr z,sla_15
inc_error_cnt
sla_15: sla e
jp m,sla_16
inc_error_cnt
sla_16: ld a,e
cp a,data_aa
jr z,sla_17
inc_error_cnt
sla_17: ld h,#12 ;bjp was >data_1234
ld l,#34 ;bjp was >data_1234
sla h
jp p,sla_18
inc_error_cnt
sla_18: ld a,h
cp a,#24
jr z,sla_19
inc_error_cnt
sla_19: sla l
jp p,sla_20
inc_error_cnt
sla_20: ld a,l
cp a,#68
jr z,sla_21
inc_error_cnt
sla_21: ld hl,t_var3
ld (hl),data_55
sla (hl)
jp m,sla_22
inc_error_cnt
sla_22: jp pe,sla_23
inc_error_cnt
sla_23: jr nc,sla_24
inc_error_cnt
sla_24: jr nz,sla_25
inc_error_cnt
sla_25: sla (hl)
jp p,sla_26
inc_error_cnt
sla_26: jp po,sla_27
inc_error_cnt
sla_27: jr c,sla_28
inc_error_cnt
sla_28: ld a,(hl)
cp a,data_55-1
jr z,sla_29
inc_error_cnt
sla_29: ld (hl),0
sla (hl)
jr z,sla_30
inc_error_cnt
sla_30: ld ix,t_var3
ld a,data_55
ld (ix-2),a
sla (ix-2)
jp m,sla_31
inc_error_cnt
sla_31: jp pe,sla_32
inc_error_cnt
sla_32: jr nc,sla_33
inc_error_cnt
sla_33: jr nz,sla_34
inc_error_cnt
sla_34: sla (ix-2)
jp p,sla_35
inc_error_cnt
sla_35: jp po,sla_36
inc_error_cnt
sla_36: jr c,sla_37
inc_error_cnt
sla_37: ld a,(ix-2)
cp a,data_55-1
jr z,sla_38
inc_error_cnt
sla_38: ld a,data_80
ld (ix+2),a
sla (ix+2)
jr z,sla_39
inc_error_cnt
sla_39: jr c,sla_40
inc_error_cnt
sla_40: ld iy,t_var3
ld a,data_55
ld (iy+2),a
sla (iy+2)
jp m,sla_41
inc_error_cnt
sla_41: jp pe,sla_42
inc_error_cnt
sla_42: jr nc,sla_43
inc_error_cnt
sla_43: jr nz,sla_44
inc_error_cnt
sla_44: sla (iy+2)
jp p,sla_45
inc_error_cnt
sla_45: jp po,sla_46
inc_error_cnt
sla_46: jr c,sla_47
inc_error_cnt
sla_47: ld a,(iy+2)
cp a,data_55-1
jr z,sla_48
inc_error_cnt
sla_48: ld a,data_80
ld (iy-2),a
sla (iy-2)
jr z,sla_49
inc_error_cnt
sla_49: jr c,sra_0
inc_error_cnt
sra_0: ld a,data_55
sra a
jp p,sra_1
inc_error_cnt
sra_1: jp po,sra_2
inc_error_cnt
sra_2: jr c,sra_3
inc_error_cnt
sra_3: jr nz,sra_4
inc_error_cnt
sra_4: sra a
jp po,sra_5
inc_error_cnt
sra_5: jr nc,sra_6
inc_error_cnt
sra_6: sra a
jp pe,sra_7
inc_error_cnt
sra_7: cp a,#0a ;data_aa.and.#0f
jr z,sra_8
inc_error_cnt
sra_8: ld a,1
sra a
jr c,sra_9
inc_error_cnt
sra_9: jr z,sra_10
inc_error_cnt
sra_10: ld a,data_80
sra a
jp m,sra_11
inc_error_cnt
sra_11: cp a,#c0
jr z,sra_12
inc_error_cnt
sra_12: ld b,data_7f
ld c,data_aa
sra b
jr c,sra_13
inc_error_cnt
sra_13: ld a,b
cp a,#3f
jr z,sra_14
inc_error_cnt
sra_14: sra c
jr nc,sra_15
inc_error_cnt
sra_15: ld a,c
cp a,#d5
jr z,sra_16
inc_error_cnt
sra_16: ld d,data_55
ld e,data_ff
sra d
jr c,sra_17
inc_error_cnt
sra_17: ld a,d
cp a,#2a
jr z,sra_18
inc_error_cnt
sra_18: sra e
jp m,sra_19
inc_error_cnt
sra_19: ld a,e
cp a,data_ff
jr z,sra_20
inc_error_cnt
sra_20: ld h,data_aa
ld l,data_7f
sra h
jp m,sra_21
inc_error_cnt
sra_21: ld a,h
cp a,#d5
jr z,sra_22
inc_error_cnt
sra_22: sra l
jr c,sra_23
inc_error_cnt
sra_23: ld a,l
cp a,#3f
jr z,sra_24
inc_error_cnt
sra_24: ld hl,t_var1
ld (hl),data_55
sra (hl)
jp p,sra_25
inc_error_cnt
sra_25: jp po,sra_26
inc_error_cnt
sra_26: jr c,sra_27
inc_error_cnt
sra_27: jr nz,sra_28
inc_error_cnt
sra_28: sra (hl)
jr nc,sra_29
inc_error_cnt
sra_29: sra (hl)
jp pe,sra_30
inc_error_cnt
sra_30: ld a,(hl)
cp a,#0a ;data_aa.and.#0f
jr z,sra_31
inc_error_cnt
sra_31: ld (hl),data_80
sra (hl)
jp m,sra_32
inc_error_cnt
sra_32: ld a,(hl)
cp a,#c0
jr z,sra_33
inc_error_cnt
sra_33: ld (hl),1
sra (hl)
jr c,sra_34
inc_error_cnt
sra_34: jr z,sra_35
inc_error_cnt
sra_35: ld ix,t_var3
ld a,data_55
ld (ix-2),a
sra (ix-2)
jp p,sra_36
inc_error_cnt
sra_36: jp po,sra_37
inc_error_cnt
sra_37: jr c,sra_38
inc_error_cnt
sra_38: jr nz,sra_39
inc_error_cnt
sra_39: sra (ix-2)
jr nc,sra_40
inc_error_cnt
sra_40: sra (ix-2)
jp pe,sra_41
inc_error_cnt
sra_41: ld a,(ix-2)
cp a,#0a ;data_aa.and.#0f
jr z,sra_42
inc_error_cnt
sra_42: ld a,data_80
ld (ix+2),a
sra (ix+2)
jp m,sra_43
inc_error_cnt
sra_43: ld a,(ix+2)
cp a,#c0
jr z,sra_44
inc_error_cnt
sra_44: ld a,1
ld (ix-1),a
sra (ix-1)
jr c,sra_45
inc_error_cnt
sra_45: jr z,sra_46
inc_error_cnt
sra_46: ld iy,t_var3
ld a,data_55
ld (iy-2),a
sra (iy-2)
jp p,sra_47
inc_error_cnt
sra_47: jp po,sra_48
inc_error_cnt
sra_48: jr c,sra_49
inc_error_cnt
sra_49: jr nz,sra_50
inc_error_cnt
sra_50: sra (iy-2)
jr nc,sra_51
inc_error_cnt
sra_51: sra (iy-2)
jp pe,sra_52
inc_error_cnt
sra_52: ld a,(iy-2)
cp a,#0a ;data_aa.and.#0f
jr z,sra_53
inc_error_cnt
sra_53: ld a,data_80
ld (iy+2),a
sra (iy+2)
jp m,sra_54
inc_error_cnt
sra_54: ld a,(iy+2)
cp a,#c0
jr z,sra_55
inc_error_cnt
sra_55: ld a,1
ld (iy-1),a
sra (iy-1)
jr c,sra_56
inc_error_cnt
sra_56: jr z,srl_0
inc_error_cnt
srl_0: ld a,data_55
srl a
jr c,srl_1
inc_error_cnt
srl_1: jp po,srl_2
inc_error_cnt
srl_2: srl a
jr nc,srl_3
inc_error_cnt
srl_3: srl a
jp pe,srl_4
inc_error_cnt
srl_4: cp a,#0a ;data_aa.and.#0f
jr z,srl_5
inc_error_cnt
srl_5: ld a,data_80
and a
jp m,srl_6
inc_error_cnt
srl_6: srl a
jp p,srl_7
inc_error_cnt
srl_7: ld a,2
srl a
jr nz,srl_8
inc_error_cnt
srl_8: srl a
jr z,srl_9
inc_error_cnt
srl_9: jr c,srl_10
inc_error_cnt
srl_10: ld b,data_aa
srl b
jp p,srl_11
inc_error_cnt
srl_11: ld a,b
cp a,data_55
jr z,srl_12
inc_error_cnt
srl_12: ld c,data_7f
srl c
jr c,srl_13
inc_error_cnt
srl_13: ld a,c
cp a,#3f
jr z,srl_14
inc_error_cnt
srl_14: ld d,data_55
srl d
jr c,srl_15
inc_error_cnt
srl_15: ld a,d
cp a,#2a
jr z,srl_16
inc_error_cnt
srl_16: ld e,data_ff
srl e
jr c,srl_17
inc_error_cnt
srl_17: ld a,e
cp a,data_7f
jr z,srl_18
inc_error_cnt
srl_18: ld h,#12 ;bjp was >data_1234
srl h
jr nc,srl_19
inc_error_cnt
srl_19: ld a,h
cp a,9
jr z,srl_20
inc_error_cnt
srl_20: ld l,#34 ;bjp was >data_1234
srl l
jr nc,srl_21
inc_error_cnt
srl_21: ld a,l
cp a,#1a
jr z,srl_22
inc_error_cnt
srl_22: ld hl,t_var1
ld (hl),data_55
srl (hl)
jr c,srl_23
inc_error_cnt
srl_23: jp po,srl_24
inc_error_cnt
srl_24: srl (hl)
jr nc,srl_25
inc_error_cnt
srl_25: srl (hl)
jp pe,srl_26
inc_error_cnt
srl_26: ld a,(hl)
cp a,#0a ;data_aa.and.#0f
jr z,srl_27
inc_error_cnt
srl_27: ld (hl),data_80
and (hl)
jp z,srl_28
inc_error_cnt
srl_28: srl (hl)
jp p,srl_29
inc_error_cnt
srl_29: ld a,(hl)
cp a,#40
jr z,srl_30
inc_error_cnt
srl_30: ld (hl),2
srl (hl)
jr nz,srl_31
inc_error_cnt
srl_31: srl (hl)
jr z,srl_32
inc_error_cnt
srl_32: jr c,srl_33
inc_error_cnt
srl_33: ld ix,t_var3
ld a,data_55
ld (ix+2),a
srl (ix+2)
jr c,srl_34
inc_error_cnt
srl_34: jp po,srl_35
inc_error_cnt
srl_35: srl (ix+2)
jr nc,srl_36
inc_error_cnt
srl_36: srl (ix+2)
jp pe,srl_37
inc_error_cnt
srl_37: ld a,(ix+2)
cp a,#0a ;data_aa.and.#0f
jr z,srl_38
inc_error_cnt
srl_38: ld a,data_80
ld (ix-2),a
and (ix-2)
jp m,srl_39
inc_error_cnt
srl_39: srl (ix-2)
jp p,srl_40
inc_error_cnt
srl_40: ld a,(ix-2)
cp a,#40
jr z,srl_41
inc_error_cnt
srl_41: ld a,2
ld (ix+1),a
srl (ix+1)
jr nz,srl_42
inc_error_cnt
srl_42: srl (ix+1)
jr z,srl_43
inc_error_cnt
srl_43: jr c,srl_44
inc_error_cnt
srl_44: ld iy,t_var3
ld a,data_55
ld (iy+2),a
srl (iy+2)
jr c,srl_45
inc_error_cnt
srl_45: jp po,srl_46
inc_error_cnt
srl_46: srl (iy+2)
jr nc,srl_47
inc_error_cnt
srl_47: srl (iy+2)
jp pe,srl_48
inc_error_cnt
srl_48: ld a,(iy+2)
cp a,#0a ;data_aa.and.#0f
jr z,srl_49
inc_error_cnt
srl_49: ld a,data_80
ld (iy-2),a
and (iy-2)
jp m,srl_50
inc_error_cnt
srl_50: srl (iy-2)
jp p,srl_51
inc_error_cnt
srl_51: ld a,(iy-2)
cp a,#40
jr z,srl_52
inc_error_cnt
srl_52: ld a,2
ld (iy+1),a
srl (iy+1)
jr nz,srl_53
inc_error_cnt
srl_53: srl (iy+1)
jr z,srl_54
inc_error_cnt
srl_54: jr c,rld_0
inc_error_cnt
rld_0: ld hl,t_var5
ld a,data_55
ld (hl),data_aa
rld
jp p,rld_1
inc_error_cnt
rld_1: cp a,data_55+5
jr z,rld_2
inc_error_cnt
rld_2: ld a,(hl)
cp a,data_aa-5
jr z,rld_3
inc_error_cnt
rld_3: ld (hl),data_7f
ld a,data_80
rld
jp m,rld_4
inc_error_cnt
rld_4: jp pe,rld_5
inc_error_cnt
rld_5: rld
jp po,rld_6
inc_error_cnt
rld_6: cp a,data_80+15
jr z,rld_7
inc_error_cnt
rld_7: ld a,(hl)
cp a,7
jr z,rld_8
inc_error_cnt
rld_8: ld a,#05 ;data_55.and.#0f
ld (hl),#0a ;data_aa.and.#0f
rld
jr z,rld_9
inc_error_cnt
rld_9: ld a,(hl)
cp a,#a5
jr z,rrd_0
inc_error_cnt
rrd_0: ld hl,t_var3
ld a,data_55
ld (hl),data_aa
rrd
jp p,rrd_1
inc_error_cnt
rrd_1: jp pe,rrd_2
inc_error_cnt
rrd_2: jr nz,rrd_3
inc_error_cnt
rrd_3: cp a,data_55+5
jr z,rrd_4
inc_error_cnt
rrd_4: ld a,(hl)
cp a,data_55+5
jr z,rrd_5
inc_error_cnt
rrd_5: ld (hl),data_7f
ld a,data_80
rrd
jp m,rrd_6
inc_error_cnt
rrd_6: jp po,rrd_7
inc_error_cnt
rrd_7: cp a,data_80+15
jr z,rrd_8
inc_error_cnt
rrd_8: ld a,(hl)
cp a,7
jr z,rrd_9
inc_error_cnt
rrd_9: ld a,8
ld (hl),0
rrd
jr z,rrd_10
inc_error_cnt
rrd_10: ld a,(hl)
cp a,data_80
jr z,bit_0
inc_error_cnt
bit_0: ld a,data_ff
bit 0,a
jr nz,bit_1
inc_error_cnt
bit_1: bit 1,a
jr nz,bit_2
inc_error_cnt
bit_2: bit 2,a
jr nz,bit_3
inc_error_cnt
bit_3: bit 3,a
jr nz,bit_4
inc_error_cnt
bit_4: bit 4,a
jr nz,bit_5
inc_error_cnt
bit_5: bit 5,a
jr nz,bit_6
inc_error_cnt
bit_6: bit 6,a
jr nz,bit_7
inc_error_cnt
bit_7: bit 7,a
jr nz,bit_8
inc_error_cnt
bit_8: ld a,0
bit 0,a
jr z,bit_9
inc_error_cnt
bit_9: bit 1,a
jr z,bit_10
inc_error_cnt
bit_10: bit 2,a
jr z,bit_11
inc_error_cnt
bit_11: bit 3,a
jr z,bit_12
inc_error_cnt
bit_12: bit 4,a
jr z,bit_13
inc_error_cnt
bit_13: bit 5,a
jr z,bit_14
inc_error_cnt
bit_14: bit 6,a
jr z,bit_15
inc_error_cnt
bit_15: bit 7,a
jr z,bit_16
inc_error_cnt
bit_16: ld b,data_80
bit 2,b
jr z,bit_17
inc_error_cnt
bit_17: bit 7,b
jr nz,bit_18
inc_error_cnt
bit_18: ld c,data_55
bit 7,c
jr z,bit_19
inc_error_cnt
bit_19: bit 0,c
jr nz,bit_20
inc_error_cnt
bit_20: ld d,data_aa
bit 7,d
jr nz,bit_21
inc_error_cnt
bit_21: bit 4,d
jr z,bit_22
inc_error_cnt
bit_22: ld e,data_7f
bit 7,e
jr z,bit_23
inc_error_cnt
bit_23: bit 3,e
jr nz,bit_24
inc_error_cnt
bit_24: ld h,#12 ;bjp was >data_1234
bit 4,h
jr nz,bit_25
inc_error_cnt
bit_25: bit 2,h
jr z,bit_26
inc_error_cnt
bit_26: ld l,#34 ;bjp was >data_1234
bit 3,l
jr z,bit_27
inc_error_cnt
bit_27: bit 2,l
jr nz,bit_28
inc_error_cnt
bit_28: ld hl,t_var4
ld (hl),data_55
bit 0,(hl)
jr nz,bit_29
inc_error_cnt
bit_29: bit 1,(hl)
jr z,bit_30
inc_error_cnt
bit_30: bit 2,(hl)
jr nz,bit_31
inc_error_cnt
bit_31: bit 3,(hl)
jr z,bit_32
inc_error_cnt
bit_32: bit 4,(hl)
jr nz,bit_33
inc_error_cnt
bit_33: bit 5,(hl)
jr z,bit_34
inc_error_cnt
bit_34: bit 6,(hl)
jr nz,bit_35
inc_error_cnt
bit_35: bit 7,(hl)
jr z,bit_36
inc_error_cnt
bit_36: ld ix,t_var3
ld a,data_aa
ld (ix-2),a
bit 0,(ix-2)
jr z,bit_37
inc_error_cnt
bit_37: bit 1,(ix-2)
jr nz,bit_38
inc_error_cnt
bit_38: bit 2,(ix-2)
jr z,bit_39
inc_error_cnt
bit_39: bit 3,(ix-2)
jr nz,bit_40
inc_error_cnt
bit_40: bit 4,(ix-2)
jr z,bit_41
inc_error_cnt
bit_41: bit 5,(ix-2)
jr nz,bit_42
inc_error_cnt
bit_42: bit 6,(ix-2)
jr z,bit_43
inc_error_cnt
bit_43: bit 7,(ix-2)
jr nz,bit_44
inc_error_cnt
bit_44: ld iy,t_var3
ld a,data_55
ld (iy+2),a
bit 0,(iy+2)
jr nz,bit_45
inc_error_cnt
bit_45: bit 1,(iy+2)
jr z,bit_46
inc_error_cnt
bit_46: bit 2,(iy+2)
jr nz,bit_47
inc_error_cnt
bit_47: bit 3,(iy+2)
jr z,bit_48
inc_error_cnt
bit_48: bit 4,(iy+2)
jr nz,bit_49
inc_error_cnt
bit_49: bit 5,(iy+2)
jr z,bit_50
inc_error_cnt
bit_50: bit 6,(iy+2)
jr nz,bit_51
inc_error_cnt
bit_51: bit 7,(iy+2)
jr z,set_0
inc_error_cnt
set_0: ld a,0
set 0,a
set 2,a
set 4,a
set 6,a
cp a,data_55
jr z,set_1
inc_error_cnt
set_1: set 1,a
set 3,a
set 5,a
set 7,a
cp a,data_ff
jr z,set_2
inc_error_cnt
set_2: ld b,0
set 1,b
set 3,b
ld a,b
cp a,#0a ;data_aa.and.#0f
jr z,set_3
inc_error_cnt
set_3: ld c,0
set 1,c
set 4,c
ld a,c
cp a,#12 ;bjp was >data_1234
jr z,set_4
inc_error_cnt
set_4: ld d,0
set 2,d
set 4,d
set 5,d
ld a,d
cp a,#34 ;bjp was >data_1234
jr z,set_5
inc_error_cnt
set_5: ld e,0
set 7,e
ld a,e
cp a,data_80
jr z,set_6
inc_error_cnt
set_6: ld h,0
set 0,h
set 2,h
set 4,h
set 6,h
ld a,h
cp a,data_55
jr z,set_7
inc_error_cnt
set_7: ld l,0
set 1,l
set 3,l
set 5,l
set 7,l
ld a,l
cp a,data_aa
jr z,set_8
inc_error_cnt
set_8: ld hl,t_var5
ld (hl),0
set 0,(hl)
set 2,(hl)
set 4,(hl)
set 6,(hl)
ld a,(hl)
cp a,data_55
jr z,set_9
inc_error_cnt
set_9: ld (hl),0
set 1,(hl)
set 3,(hl)
set 5,(hl)
set 7,(hl)
ld a,(hl)
cp a,data_aa
jr z,set_10
inc_error_cnt
set_10: ld ix,t_var3
ld a,0
ld (ix-2),a
ld (ix+2),a
set 0,(ix-2)
set 2,(ix-2)
set 4,(ix-2)
set 6,(ix-2)
ld a,(ix-2)
cp a,data_55
jr z,set_11
inc_error_cnt
set_11: set 1,(ix+2)
set 3,(ix+2)
set 5,(ix+2)
set 7,(ix+2)
ld a,(ix+2)
cp a,data_aa
jr z,set_12
inc_error_cnt
set_12: ld iy,t_var3
ld a,0
ld (iy-1),a
ld (iy+1),a
set 0,(iy-1)
set 2,(iy-1)
set 4,(iy-1)
set 6,(iy-1)
ld a,(iy-1)
cp a,data_55
jr z,set_13
inc_error_cnt
set_13: set 1,(iy+1)
set 3,(iy+1)
set 5,(iy+1)
set 7,(iy+1)
ld a,(iy+1)
cp a,data_aa
jr z,res_0
inc_error_cnt
res_0: ld a,data_ff
res 7,a
cp a,data_7f
jr z,res_1
inc_error_cnt
res_1: res 5,a
res 3,a
res 1,a
cp a,data_55
jr z,res_2
inc_error_cnt
res_2: ld a,data_ff
res 0,a
res 2,a
res 4,a
res 6,a
cp a,data_aa
jr z,res_3
inc_error_cnt
res_3: ld b,data_ff
res 7,b
ld a,b
cp a,data_7f
jr z,res_4
inc_error_cnt
res_4: ld c,data_ff
res 0,c
res 1,c
res 2,c
res 3,c
res 4,c
res 5,c
res 6,c
ld a,c
cp a,data_80
jr z,res_5
inc_error_cnt
res_5: ld d,data_ff
res 0,d
res 2,d
res 4,d
res 6,d
ld a,d
cp a,data_aa
jr z,res_6
inc_error_cnt
res_6: ld e,data_ff
res 1,e
res 3,e
res 5,e
res 7,e
ld a,e
cp a,data_55
jr z,res_7
inc_error_cnt
res_7: ld h,data_ff
res 0,h
res 2,h
res 3,h
res 5,h
res 6,h
res 7,h
ld a,h
cp a,#12 ;bjp was >data_1234
jr z,res_8
inc_error_cnt
res_8: ld l,data_ff
res 0,l
res 1,l
res 3,l
res 6,l
res 7,l
ld a,l
cp a,#34 ;bjp was >data_1234
jr z,res_9
inc_error_cnt
res_9: ld hl,t_var3
ld (hl),data_ff
res 0,(hl)
res 2,(hl)
res 4,(hl)
res 6,(hl)
ld a,(hl)
cp a,data_aa
jr z,res_10
inc_error_cnt
res_10: res 1,(hl)
res 3,(hl)
res 5,(hl)
res 7,(hl)
ld a,(hl)
cp a,0
jr z,res_11
inc_error_cnt
res_11: ld ix,t_var3
ld a,data_ff
ld (ix-2),a
ld (ix+2),a
res 1,(ix-2)
res 3,(ix-2)
res 5,(ix-2)
res 7,(ix-2)
ld a,(ix-2)
cp a,data_55
jr z,res_12
inc_error_cnt
res_12: res 0,(ix+2)
res 2,(ix+2)
res 4,(ix+2)
res 6,(ix+2)
ld a,(ix+2)
cp a,data_aa
jr z,res_13
inc_error_cnt
res_13: ld iy,t_var3
ld a,data_ff
ld (iy-1),a
ld (iy+1),a
res 1,(iy-1)
res 3,(iy-1)
res 5,(iy-1)
res 7,(iy-1)
ld a,(iy-1)
cp a,data_55
jr z,res_14
inc_error_cnt
res_14: res 0,(iy+1)
res 2,(iy+1)
res 4,(iy+1)
res 6,(iy+1)
ld a,(iy+1)
cp a,data_aa
jr z,jp_0
inc_error_cnt
jp_0: jp jp_1
nop
nop
inc_error_cnt
jp_1: ld a,0
and a
jp z,jp_2
inc_error_cnt
jp_2: jp nc,jp_3
inc_error_cnt
jp_3: ld b,1
sub a,b
jp nz,jp_4
inc_error_cnt
jp_4: jp c,jp_5
inc_error_cnt
jp_5: jp jp_7
inc_error_cnt
jp_6: jp jr_0
inc_error_cnt
jp_7: jp jp_6
inc_error_cnt
jr_0: jr jr_2
inc_error_cnt
jr_1: jr jr_3
inc_error_cnt
jr_2: jr jr_1
inc_error_cnt
jr_3: ld hl,jp_9
jp (hl)
inc_error_cnt
jp_8: ld ix,jp_10
jp (ix)
inc_error_cnt
jp_9: jp jp_8
inc_error_cnt
jp_10: ld iy,djnz_0
jp (iy)
inc_error_cnt
djnz_0: ld b,5
ld a,0
djnz_1: inc a
djnz djnz_1
cp a,5
jr z,call_0
inc_error_cnt
call_0: ld a,0
call sub1
cp a,data_7f
jr z,call_1
inc_error_cnt
call_1: ld a,0
and a
call z,sub2
cp a,data_55
jr z,call_2
inc_error_cnt
call_2: ld a,data_aa
and a
call nz,sub3
cp a,data_aa+1
jr z,call_3
inc_error_cnt
call_3: ld a,0
cp a,0
call nc,sub4
cp a,data_ff
jr z,call_4
inc_error_cnt
call_4: ld a,0
sub a,1
call c,sub5
cp a,data_ff-1
jr z,call_5
inc_error_cnt
call_5: ld a,data_7f
sla a
call po,sub6
cp a,data_7f
jr z,call_6
inc_error_cnt
call_6: ld a,data_aa
srl a
call pe,sub7
cp a,data_aa
jr z,call_7
inc_error_cnt
call_7: ld a,data_80
sra a
call m,sub8
cp a,data_80
jr z,call_8
inc_error_cnt
call_8: ld a,data_7f
sra a
call p,sub9
cp a,data_7f
jr z,rst_0
inc_error_cnt
rst_0: rst #00
cp a,1
jr z,rst_1
inc_error_cnt
rst_1: rst #08
cp a,2
jr z,rst_2
inc_error_cnt
rst_2: rst #10
cp a,3
jr z,rst_3
inc_error_cnt
rst_3: rst #18
cp a,4
jr z,rst_4
inc_error_cnt
rst_4: rst #20
cp a,5
jr z,rst_5
inc_error_cnt
rst_5: rst #28
cp a,6
jr z,rst_6
inc_error_cnt
rst_6: rst #30
cp a,7
jr z,rst_7
inc_error_cnt
rst_7: rst #38
cp a,8
jr z,in_0
inc_error_cnt
in_0: in a,(in_port)
cp a,data_7f
jr z,in_1
inc_error_cnt
in_1: ld c,in_port
in a,(c)
jr nz,in_2
inc_error_cnt
in_2: jp p,in_3
inc_error_cnt
in_3: jp pe,in_4
inc_error_cnt
in_4: cp a,data_55
jr z,in_5
inc_error_cnt
in_5: in a,(c)
jp m,in_6
inc_error_cnt
in_6: jp po,in_7
inc_error_cnt
in_7: jr nz,in_8
inc_error_cnt
in_8: cp a,data_80
jr z,in_9
inc_error_cnt
in_9: in a,(c)
jr z,in_10
inc_error_cnt
in_10: in b,(c)
jp m,in_11
inc_error_cnt
in_11: ld a,b
cp a,data_ff
jr z,in_12
inc_error_cnt
in_12: in d,(c)
jp pe,in_13
inc_error_cnt
in_13: ld a,d
cp a,data_aa
jr z,in_14
inc_error_cnt
in_14: in e,(c)
jp p,in_15
inc_error_cnt
in_15: ld a,e
cp a,data_7f
jr z,in_16
inc_error_cnt
in_16: in h,(c)
jp pe,in_17
inc_error_cnt
in_17: ld a,h
cp a,data_55
jr z,in_18
inc_error_cnt
in_18: in l,(c)
jp m,in_19
inc_error_cnt
in_19: ld a,l
cp a,data_80
jr z,in_20
inc_error_cnt
in_20: in c,(c)
jr z,in_21
inc_error_cnt
in_21: ld c,in_port
ld b,2
ld hl,t_var1
ini
jr nz,in_22
inc_error_cnt
in_22: ini
jr z,in_23
inc_error_cnt
in_23: ld hl,t_var1
ld a,(hl)
cp a,data_ff
jr z,in_24
inc_error_cnt
in_24: inc hl
ld a,(hl)
cp a,data_aa
jr z,in_25
inc_error_cnt
in_25: ld b,5
ld c,in_port
ld hl,t_var1
inir
jr z,in_26
inc_error_cnt
in_26: ld hl,t_var1
ld a,(hl)
cp a,data_7f
jr z,in_27
inc_error_cnt
in_27: inc hl
ld a,(hl)
cp a,data_55
jr z,in_28
inc_error_cnt
in_28: inc hl
ld a,(hl)
cp a,data_80
jr z,in_29
inc_error_cnt
in_29: inc hl
ld a,(hl)
cp a,0
jr z,in_30
inc_error_cnt
in_30: inc hl
ld a,(hl)
cp a,data_ff
jr z,in_31
inc_error_cnt
in_31: ld b,2
ld c,in_port
ld hl,t_var5
ind
jr nz,in_32
inc_error_cnt
in_32: ind
jr z,in_33
inc_error_cnt
in_33: ld hl,t_var5
ld a,(hl)
cp a,data_aa
jr z,in_34
inc_error_cnt
in_34: dec hl
ld a,(hl)
cp a,data_7f
jr z,in_35
inc_error_cnt
in_35: ld b,5
ld c,in_port
ld hl,t_var5
indr
jr z,in_36
inc_error_cnt
in_36: ld hl,t_var5
ld a,(hl)
cp a,data_55
jr z,in_37
inc_error_cnt
in_37: dec hl
ld a,(hl)
cp a,data_80
jr z,in_38
inc_error_cnt
in_38: dec hl
ld a,(hl)
cp a,0
jr z,in_39
inc_error_cnt
in_39: dec hl
ld a,(hl)
cp a,data_ff
jr z,in_40
inc_error_cnt
in_40: dec hl
ld a,(hl)
cp a,data_aa
jr z,ldi_0
inc_error_cnt
ldi_0: ld hl,t_var1
ld a,#12 ;bjp was >data_1234
ld (hl),a
inc hl
ld a,#34 ;bjp was >data_1234
ld (hl),a
dec hl
ld de,t_var3
ld bc,2
ldi
jp pe,ldi_1
inc_error_cnt
ldi_1: ldi
jp po,ldi_2
inc_error_cnt
ldi_2: ld hl,t_var3
ld a,(hl)
cp a,#12 ;bjp was >data_1234
jr z,ldi_3
inc_error_cnt
ldi_3: inc hl
ld a,(hl)
cp a,#34 ;bjp was >data_1234
jr z,ldir_0
inc_error_cnt
ldir_0: ld hl,var1
ld de,t_var1
ld bc,5
ldir
jp po,ldir_1
inc_error_cnt
ldir_1: ld hl,t_var1
ld a,(hl)
cp a,data_ff
jr z,ldir_2
inc_error_cnt
ldir_2: inc hl
ld a,(hl)
cp a,data_55
jr z,ldir_3
inc_error_cnt
ldir_3: inc hl
ld a,(hl)
cp a,data_80
jr z,ldir_4
inc_error_cnt
ldir_4: inc hl
ld a,(hl)
cp a,data_aa
jr z,ldir_5
inc_error_cnt
ldir_5: inc hl
ld a,(hl)
cp a,data_7f
jr z,ldd_0
inc_error_cnt
ldd_0: ld hl,t_var5
ld a,#12 ;bjp was >data_1234
ld (hl),a
dec hl
ld a,#34 ;bjp was >data_1234
ld (hl),a
inc hl
ld bc,2
ld de,t_var3
ldd
jp pe,ldd_1
inc_error_cnt
ldd_1: ldd
jp po,ldd_2
inc_error_cnt
ldd_2: ld hl,t_var3
ld a,(hl)
cp a,#12 ;bjp was >data_1234
jr z,ldd_3
inc_error_cnt
ldd_3: dec hl
ld a,(hl)
cp a,#34 ;bjp was >data_1234
jr z,lddr_0
inc_error_cnt
lddr_0: ld bc,5
ld hl,var5
ld de,t_var5
lddr
jp po,lddr_1
inc_error_cnt
lddr_1: ld hl,t_var1
ld a,(hl)
cp a,data_ff
jr z,lddr_2
inc_error_cnt
lddr_2: inc hl
ld a,(hl)
cp a,data_55
jr z,lddr_3
inc_error_cnt
lddr_3: inc hl
ld a,(hl)
cp a,data_80
jr z,lddr_4
inc_error_cnt
lddr_4: inc hl
ld a,(hl)
cp a,data_aa
jr z,lddr_5
inc_error_cnt
lddr_5: inc hl
ld a,(hl)
cp a,data_7f
jr z,cpi_0
inc_error_cnt
cpi_0: ld hl,t_var1
ld bc,5
ld a,data_7f
cpi
jp pe,cpi_1
inc_error_cnt
cpi_1: jp m,cpi_2
inc_error_cnt
cpi_2: jr nz,cpi_3
inc_error_cnt
cpi_3: cpi
jp pe,cpi_4
inc_error_cnt
cpi_4: jp p,cpi_5
inc_error_cnt
cpi_5: jr nz,cpi_6
inc_error_cnt
cpi_6: cpi
jp pe,cpi_7
inc_error_cnt
cpi_7: jp m,cpi_8
inc_error_cnt
cpi_8: jr nz,cpi_9
inc_error_cnt
cpi_9: cpi
jp pe,cpi_10
inc_error_cnt
cpi_10: jp m,cpi_11
inc_error_cnt
cpi_11: jr nz,cpi_12
inc_error_cnt
cpi_12: cpi
jp po,cpi_13
inc_error_cnt
cpi_13: jp p,cpi_14
inc_error_cnt
cpi_14: jr z,cpir_0
inc_error_cnt
cpir_0: ld a,data_aa
ld hl,var1
ld bc,5
cpir
jr z,cpir_1
inc_error_cnt
cpir_1: jp pe,cpir_2
inc_error_cnt
cpir_2: ld a,b
cp a,0
jr z,cpir_3
inc_error_cnt
cpir_3: ld a,c
cp a,1
jr z,cpir_4
inc_error_cnt
cpir_4: ld a,data_7f
ld hl,var1
ld bc,5
cpir
jp po,cpir_5
inc_error_cnt
cpir_5: jr z,cpir_6
inc_error_cnt
cpir_6: ld a,#34 ;bjp was >data_1234
ld hl,var1
ld bc,5
cpir
jp po,cpir_7
inc_error_cnt
cpir_7: jr nz,cpir_8
inc_error_cnt
cpir_8: jp m,cpir_9
inc_error_cnt
cpir_9: ld a,data_aa
ld hl,var1
ld bc,3
cpir
jp po,cpir_10
inc_error_cnt
cpir_10: jp p,cpir_11
inc_error_cnt
cpir_11: jr nz,cpd_0
inc_error_cnt
cpd_0: ld a,data_ff
ld hl,var5
ld bc,5
cpd
jp m,cpd_1
inc_error_cnt
cpd_1: jp pe,cpd_2
inc_error_cnt
cpd_2: jr nz,cpd_3
inc_error_cnt
cpd_3: cpd
jp p,cpd_4
inc_error_cnt
cpd_4: jp pe,cpd_5
inc_error_cnt
cpd_5: jr nz,cpd_6
inc_error_cnt
cpd_6: cpd
jp p,cpd_7
inc_error_cnt
cpd_7: jp pe,cpd_8
inc_error_cnt
cpd_8: jr nz,cpd_9
inc_error_cnt
cpd_9: cpd
jp m,cpd_10
inc_error_cnt
cpd_10: jp pe,cpd_11
inc_error_cnt
cpd_11: jr nz,cpd_12
inc_error_cnt
cpd_12: cpd
jp p,cpd_13
inc_error_cnt
cpd_13: jp po,cpd_14
inc_error_cnt
cpd_14: jr z,cpdr_0
inc_error_cnt
cpdr_0: ld a,data_80
ld hl,var5
ld bc,5
cpdr
jp pe,cpdr_1
inc_error_cnt
cpdr_1: jp p,cpdr_2
inc_error_cnt
cpdr_2: jr z,cpdr_3
inc_error_cnt
cpdr_3: ld a,b
cp a,0
jr z,cpdr_4
inc_error_cnt
cpdr_4: ld a,c
cp a,2
jr z,cpdr_5
inc_error_cnt
cpdr_5: ld a,#34 ;bjp was >data_1234
ld hl,var5
ld bc,5
cpdr
jp po,cpdr_6
inc_error_cnt
cpdr_6: jr nz,cpdr_7
inc_error_cnt
cpdr_7: jp p,cpdr_8
inc_error_cnt
cpdr_8: ld a,#34 ;bjp was >data_1234
ld hl,var5
ld bc,3
cpdr
jp po,cpdr_9
inc_error_cnt
cpdr_9: jr nz,cpdr_10
inc_error_cnt
cpdr_10: jp m,out_0
inc_error_cnt
;
;the file portfe.xxx must be examined to see if the proper output is generated
;
out_0: ld a,#30
out (out_port),a
ld c,out_port
ld a,#31
out (c),a
ld b,#32
out (c),b
ld d,#33
out (c),d
ld e,#34
out (c),e
ld h,#35
out (c),h
ld l,#36
out (c),l
out (c),c ;output value divider
outi_0: ld a,#31 ;set up output values
ld b,5
ld hl,t_var1
outi_1: ld (hl),a
inc a
inc hl
djnz outi_1
outi_2: ld c,out_port
ld b,5
ld hl,t_var1
outi_3: outi
jr nz,outi_3
otir_0: out (c),c ;output value divider
ld hl,t_var1
ld b,5
otir
jr z,outd_0
inc_error_cnt
outd_0: out (c),c
ld hl,t_var5
ld b,5
outd_1: outd
jr nz,outd_1
otdr_0: out (c),c
ld b,5
ld hl,t_var5
otdr
jr z,otdr_1
inc_error_cnt
otdr_1: out (c),c
ld a,#0d
out (c),a
ld a,#0a
out (c),a
inc_pass: ld a,(pass_count)
inc a
ld (pass_count),a
/trunk/rtl/z80_core_top.v
37,10 → 37,10
///////////////////////////////////////////////////////////////////////////////////////////////
// CVS Log
//
// $Id: z80_core_top.v,v 1.3 2004-05-13 14:58:53 bporcella Exp $
// $Id: z80_core_top.v,v 1.4 2004-05-18 22:31:21 bporcella Exp $
//
// $Date: 2004-05-13 14:58:53 $
// $Revision: 1.3 $
// $Date: 2004-05-18 22:31:21 $
// $Revision: 1.4 $
// $Author: bporcella $
// $Locker: $
// $State: Exp $
47,6 → 47,9
//
// Change History:
// $Log: not supported by cvs2svn $
// Revision 1.3 2004/05/13 14:58:53 bporcella
// testbed built and verification in progress
//
// Revision 1.2 2004/04/27 21:38:22 bporcella
// test lint on core
//
121,6 → 124,7
wire [15:0] ixr, iyr;
wire [7:0] wb_dat_i, wb_dat_o, sdram_do, cfg_do;
wire [15:0] add16; // ir2 execution engine output for sp updates
wire [7:0] alu8_out, sh_alu, bit_alu;
 
 
 
127,7 → 131,6
 
 
 
 
//-------1---------2---------3--------Registers--5---------6---------7---------8---------9--------0
//-------1---------2---------3--------Assignments----------6---------7---------8---------9--------0
//-------1---------2---------3--------State Machines-------6---------7---------8---------9--------0
153,6 → 156,9
.wb_dat_i(cfg_do), .wb_ack_i(cfg_ack_o),
.int_req_i(int_req_i),
.add16(add16),
.alu8_out(alu8_out),
.sh_alu(sh_alu),
.bit_alu(bit_alu),
.wb_clk_i(wb_clk_i),
.rst_i(wb_rst_i) // keep this generic - may turn out to be different from wb_rst
);
163,7 → 169,9
.cr_eq0(cr_eq0),
.upd_ar(upd_ar), .upd_br(upd_br), .upd_cr(upd_cr), .upd_dr(upd_dr), .upd_er(upd_er), .upd_hr(upd_hr), .upd_lr(upd_lr),.upd_fr(upd_fr),
.ar(ar), .fr(fr), .br(br), .cr(cr), .dr(dr), .er(er), .hr(hr), .lr(lr), .intr(intr),
.ixr(ixr), .iyr(iyr), .add16(add16),
.ixr(ixr), .iyr(iyr), .add16(add16), .alu8_out(alu8_out),
.sh_alu(sh_alu),
.bit_alu(bit_alu),
.exec_ir2(exec_ir2),
.exec_decbc(exec_decbc), .exec_decb(exec_decb),
.ir2(ir2),
/trunk/rtl/z80_testbed.v
38,10 → 38,10
///////////////////////////////////////////////////////////////////////////////////////////////////
// CVS Log
//
// $Id: z80_testbed.v,v 1.1 2004-05-13 14:57:35 bporcella Exp $
// $Id: z80_testbed.v,v 1.2 2004-05-18 22:31:21 bporcella Exp $
//
// $Date: 2004-05-13 14:57:35 $
// $Revision: 1.1 $
// $Date: 2004-05-18 22:31:21 $
// $Revision: 1.2 $
// $Author: bporcella $
// $Locker: $
// $State: Exp $
48,6 → 48,9
//
// Change History:
// $Log: not supported by cvs2svn $
// Revision 1.1 2004/05/13 14:57:35 bporcella
// testbed files
//
// Revision 1.1.1.1 2004/04/13 23:47:42 bporcella
// import first files
//
117,7 → 120,7
begin
clk = 0;
// timeout if u hang up -- always a good idea.
#50000 $finish;
#500000 $finish;
$display("simulation timeout");
end
 
/trunk/rtl/opcodes.v
64,10 → 64,10
//
//-------1---------2---------3--------CVS Log -----------------------7---------8---------9--------0
//
// $Id: opcodes.v,v 1.1 2004-04-17 18:26:06 bporcella Exp $
// $Id: opcodes.v,v 1.2 2004-05-18 22:31:20 bporcella Exp $
//
// $Date: 2004-04-17 18:26:06 $
// $Revision: 1.1 $
// $Date: 2004-05-18 22:31:20 $
// $Revision: 1.2 $
// $Author: bporcella $
// $Locker: $
// $State: Exp $
74,6 → 74,9
//
// Change History:
// $Log: not supported by cvs2svn $
// Revision 1.1 2004/04/17 18:26:06 bporcella
// put this here to try an end-run around lint mikefile problem
//
// Revision 1.1.1.1 2004/04/13 23:47:56 bporcella
// import first files
//
426,9 → 429,9
ED_RETN = 7'b1001___101, // compair with {ir[9:6],ir[2:0]} and !reti
DBL_REG_BC = 2'b00, // compair with ir[5:4]
DBL_REG_DE = 2'b00, // compair with ir[5:4]
DBL_REG_HL = 2'b00, // compair with ir[5:4]
DBL_REG_SP = 2'b00, // compair with ir[5:4]
DBL_REG_DE = 2'b01, // compair with ir[5:4]
DBL_REG_HL = 2'b10, // compair with ir[5:4]
DBL_REG_SP = 2'b11, // compair with ir[5:4]
 
REG8_B = 3'b000,
REG8_C = 3'b001,
/trunk/rtl/z80_inst_exec.v
71,10 → 71,10
//
//-------1---------2---------3--------CVS Log -----------------------7---------8---------9--------0
//
// $Id: z80_inst_exec.v,v 1.2 2004-05-13 14:58:53 bporcella Exp $
// $Id: z80_inst_exec.v,v 1.3 2004-05-18 22:31:21 bporcella Exp $
//
// $Date: 2004-05-13 14:58:53 $
// $Revision: 1.2 $
// $Date: 2004-05-18 22:31:21 $
// $Revision: 1.3 $
// $Author: bporcella $
// $Locker: $
// $State: Exp $
81,6 → 81,9
//
// Change History:
// $Log: not supported by cvs2svn $
// Revision 1.2 2004/05/13 14:58:53 bporcella
// testbed built and verification in progress
//
// Revision 1.1 2004/04/27 21:27:13 bporcella
// first core build
//
103,7 → 106,7
cr_eq0,
upd_ar, upd_br, upd_cr, upd_dr, upd_er, upd_hr, upd_lr,upd_fr,
ar, fr, br, cr, dr, er, hr, lr, intr,
ixr, iyr, add16,
ixr, iyr, add16, alu8_out, sh_alu, bit_alu,
exec_ir2,
exec_decbc, exec_decb,
ir2,
121,6 → 124,10
output [7:0] ar, fr, br, cr, dr, er, hr, lr, intr;
output [15:0] ixr, iyr;
output [15:0] add16;
output [7:0] alu8_out; // used for INCs6HL7 and DECs6HL7 types --- flags need updating
// also so need to do with alu8.
output [7:0] sh_alu;
output [7:0] bit_alu;
//-------1---------2---------3--------Input Ports----------6---------7---------8---------9--------0
input exec_ir2;
input exec_decbc; // in general this needs to happen at different time from exec
162,6 → 169,7
wire alu8_nf ;
wire c_8out7 ;
wire alu8_cry ;
wire alu8_pvf ;
wire alu8_hcry ;
wire [7:0] alu8_out ;
wire add16_ofl ;
312,12 → 320,12
// sf zf f5f hf
assign alu8_fr ={alu8_out[7], ~|alu8_out, alu8_out[5], alu8_hcry,
// f3f fpv fn fc
alu8_out[3], alu8_out[7], alu8_nf, c_8out7 };
alu8_out[3], alu8_pvf, alu8_nf, alu8_cry };
// excludeINC_r DEC_r AND XOR OR
assign alu8_pvf = ir2[7] & (ir2[5:3]==7'b100 | ir2[5:3]==7'b101 | ir2[5:3]==7'b110) ?
~^alu8_out : // even parity
(src_aor_cnst[7]==src_pqri[7]) & (src_aor_cnst[7]!=alu8_out[7]) ; // ofl
 
//assign alu8_pvf = (ir2[9:3]==5'b10100 | ir2[9:3]==5'b10101 | ir2[7:3]==5'b10110) ?
// ~^alu8_out : // even parity
// (src_aor_cnst[7]==src_pqri[7]) & (src_aor_cnst[7]!=alu8_out[7]) ; // ofl
 
assign alu8_nf = (ir2[7:3]==5'b10010) |
(ir2[7:3]==5'b10011) |
(ir2[7:6]==2'b00) & ir2[0] |
340,15 → 348,15
 
{19{ir2[7] & ir2[5:3]==3'b000}} & ({c_8out7,c_8out3, add_8bit, src_pqr20, 1'b0} ) |// a+src
{19{ir2[7] & ir2[5:3]==5'b001}} & ({c_8out7,c_8out3, add_8bit, src_pqr20, cf} ) |// a+src+cf
{19{ir2[7] & ir2[5:3]==5'b010}} & ({c_8out7,c_8out3, add_8bit, ~src_pqr20, 1'h1} ) |// a-src
{19{ir2[7] & ir2[5:3]==5'b011}} & ({c_8out7,c_8out3, add_8bit, ~src_pqr20, ~cf } ) |// a-src-cf
{19{ir2[7] & ir2[5:3]==5'b010}} & ({~c_8out7,c_8out3, add_8bit, ~src_pqr20, 1'h1} ) |// a-src
{19{ir2[7] & ir2[5:3]==5'b011}} & ({~c_8out7,c_8out3, add_8bit, ~src_pqr20, ~cf } ) |// a-src-cf
{19{ir2[7] & ir2[5:3]==5'b100}} & ({1'b0 ,1'b1 , ar & src_pqr20, src_pqr20, 1'b0} )|// a&src
{19{ir2[7] & ir2[5:3]==5'b101}} & ({1'b0 ,1'b0 , ar ^ src_pqr20, src_pqr20, 1'b0} )|// a^src
{19{ir2[7] & ir2[5:3]==5'b110}} & ({1'b0 ,1'b0 , ar | src_pqr20, src_pqr20, 1'b0} )|// a|src
{19{ir2[7] & ir2[5:3]==5'b111}} & ({c_8out7,c_8out3, add_8bit, ~src_pqr20, 1'h1}) |// a-src
{19{ir2[7] & ir2[5:3]==5'b111}} & ({~c_8out7,c_8out3, add_8bit, ~src_pqr20, 1'h1}) |// a-src
{19{(ir2[7:6]==2'b00)& ~ir2[0] }}& ({ cf,c_8out3, add_8bit, src_pqr53, 1'h1}) |// inc_r main
{19{(ir2[7:6]==2'b00)& ir2[0] }}& ({ cf,c_8out3, add_8bit, src_pqr53, 1'h0}) |// dec_r
{19{(ir2[7:6]==2'b01) }}& ({c_8out7,c_8out3, add_8bit, ~ar, 1'h1}) ;// ed44 -a
{19{(ir2[7:6]==2'b01) }}& ({~c_8out7,c_8out3, add_8bit, ~ar, 1'h1}) ;// ed44 -a
 
 
// do some hand decoding here
553,7 → 561,7
if (ir2 == ED_RRD & exec_ir2) ar[3:0] <= nn[3:0];
if (ir2 == ED_RLD & exec_ir2) ar[3:0] <= nn[7:4];
if ({ir2[9:6], ir2[2:0]} == ED_NEG & exec_ir2) ar <= alu8_out; // ED44 this done by alu8 for flags
if (ir2 == ED_LDsA_I & exec_ir2) ar <= ir2[7:0] ;
if (ir2 == ED_LDsA_I & exec_ir2) ar <= intr ;
end
 
 
612,7 → 620,8
assign upd_br = upd_b_alu8 | up_b_src_pqr | up_b_add16 | LDsBC_NN == ir2 |
POPsBC == ir2 | EXX == ir2 | LDsB_N == ir2 |
ir2[2:0] == REG8_B & bit_alu_act | ir2[2:0] == REG8_B & sh_alu_act |
DJNZs$t2 == ir2 | (ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_B);
DJNZs$t2 == ir2 | (ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_B) |
(ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_BC);
 
 
always @(posedge clk)
633,8 → 642,8
// use |br. If we need more speed add
// a ff.
if (exec_decb | exec_decbc) br <= decb_alu;
if ( (ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_B) & exec_ir2 )
br <= nn[7:0];
if ( (ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_B) & exec_ir2 ) br <= nn[7:0];
if ( (ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_BC) & exec_ir2 ) br <= nn[15:8];
end
 
 
666,7 → 675,8
assign upd_cr = upd_c_alu8 | up_c_src_pqr | up_c_add16 | LDsBC_NN == ir2 |
POPsBC == ir2 | EXX == ir2 | LDsC_N == ir2 |
ir2[2:0] == REG8_C & bit_alu_act | ir2[2:0] == REG8_C & sh_alu_act |
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_C);
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_C) |
(ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_BC);
 
 
 
686,7 → 696,8
if ( exec_decbc) cr <= decc_alu;
if ((ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_C) & exec_ir2)
cr <= nn[7:0];
if ( (ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_BC) & exec_ir2 ) cr <= nn[7:0];
 
end
 
 
721,13 → 732,14
assign upd_dr = upd_d_alu8 | up_d_src_pqr | up_d_add16 | LDsDE_NN == ir2 |
POPsDE == ir2 | EXX == ir2 | EXsDE_HL == ir2 | LDsD_N == ir2 |
ir2[2:0] == REG8_D & bit_alu_act | ir2[2:0] == REG8_D & sh_alu_act |
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_D);
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_D) |
(ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_DE);
 
 
 
 
 
 
wire ed_ld_dereg = (ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_DE);
always @(posedge clk)
begin
if ( upd_d_alu8 & exec_ir2) dr <= alu8_out;
745,6 → 757,8
if ((ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]})
& (ir2[5:3] == REG8_D) & exec_ir2)
dr <= nn[7:0];
if ( ed_ld_dereg & exec_ir2 )
dr <= nn[15:8];
 
end
 
776,18 → 790,11
 
 
assign upd_er = upd_e_alu8 | up_e_src_pqr | up_e_add16 | LDsDE_NN == ir2 |
POPsDE == ir2 | EXX == ir2 | EXsDE_HL == ir2 | LDsD_N == ir2 |
POPsDE == ir2 | EXX == ir2 | EXsDE_HL == ir2 | LDsE_N == ir2 |
ir2[2:0] == REG8_E & bit_alu_act | ir2[2:0] == REG8_E & sh_alu_act |
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_E);
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_E) |
(ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_DE);
 
 
 
 
 
 
 
 
 
always @(posedge clk)
begin
if ( upd_e_alu8 & exec_ir2) er <= alu8_out;
804,7 → 811,9
sh_alu_act & exec_ir2) er <= sh_alu;
if ((ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_E) & exec_ir2)
er <= nn[7:0];
if ( ed_ld_dereg & exec_ir2 )
er <= nn[7:0];
end
 
 
814,6 → 823,9
ADDsHL_DE == ir2 | // ADD HL,DE ; 19
ADDsHL_HL == ir2 | // ADD HL,HL ; 29
ADDsHL_SP == ir2 | // ADD HL,SP ; 39
ED_SBCsHL_REG == {ir2[9:6],ir2[3:0]} | // compair with {ir[9:6],ir[3:0]}
ED_ADCsHL_REG == {ir2[9:6],ir2[3:0]} | // compair with {ir[9:6],ir[3:0]}
 
INCsHL == ir2 | // INC HL ; 23
DECsHL == ir2 ; // DEC HL ; 2B
assign upd_h_alu8 =
848,7 → 860,8
assign upd_hr = upd_h_alu8 | upd_h_src_pqr | up_h_add16 | LDsHL_NN == ir2 | LDsHL_6NN7== ir2 |
POPsHL == ir2 | EXX == ir2 | EXsDE_HL == ir2 | LDsH_N == ir2 |
ir2[2:0] == REG8_H & bit_alu_act | ir2[2:0] == REG8_H & sh_alu_act |
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_H);
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_H) |
(ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_HL);
 
 
 
873,6 → 886,8
sh_alu_act & exec_hlir2) hr <= sh_alu;
if ((ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_H) & exec_ir2)
hr <= nn[7:0];
if ( (ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_HL) & exec_ir2 )
hr <= nn[15:8];
 
end
 
882,6 → 897,8
ADDsHL_DE == ir2 |// ADD HL,DE ; 19
ADDsHL_HL == ir2 |// ADD HL,HL ; 29
ADDsHL_SP == ir2 |// ADD HL,SP ; 39
ED_SBCsHL_REG == {ir2[9:6],ir2[3:0]} | // compair with {ir[9:6],ir[3:0]}
ED_ADCsHL_REG == {ir2[9:6],ir2[3:0]} | // compair with {ir[9:6],ir[3:0]}
INCsHL == ir2 |// INC HL ; 23
DECsHL == ir2 ;// DEC HL ; 2B
assign upd_l_alu8 =
911,7 → 928,8
assign upd_lr = upd_l_alu8 | upd_l_src_pqr | up_l_add16 | LDsHL_NN == ir2 | LDsHL_6NN7== ir2 |
POPsHL == ir2 | EXX == ir2 | EXsDE_HL == ir2 | LDsL_N == ir2 |
ir2[2:0] == REG8_L & bit_alu_act | ir2[2:0] == REG8_L & sh_alu_act |
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_L);
(ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_L) |
(ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_HL);
 
 
 
932,8 → 950,10
if (ir2[2:0] == REG8_L &
sh_alu_act & exec_hlir2) lr <= sh_alu;
if ((ED_INsREG_6C7 == {ir2[9:6],ir2[2:0]}) & (ir2[5:3] == REG8_L) & exec_ir2)
lr <= nn[7:0];
lr <= nn[7:0];
if ( (ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_HL) & exec_ir2 )
lr <= nn[7:0];
end
//------------------------ ixr ---------------------------------------------
wire exec_ixir2 = exec_ir2 & ir2dd;
1073,8 → 1093,9
ADDsA_E == ir2 | CPsE == ir2 | SBCsD == ir2 | XORsE == ir2 | INCsH == ir2 |
ADDsA_H == ir2 | CPsH == ir2 | SBCsE == ir2 | XORsH == ir2 | INCsL == ir2 |
ADDsA_L == ir2 | CPsL == ir2 | SBCsH == ir2 | XORsL == ir2 | INCs6HL7 == ir2 |
ADDsA_6HL7== ir2| CPs6HL7 ==ir2 | SBCsL == ir2 | XORs6HL7 == ir2 | DECs6HL7 == ir2 |
CPsN == ir2 |
ADDsA_6HL7== ir2| CPs6HL7 == ir2 | SBCsL == ir2 | XORs6HL7 == ir2 | DECs6HL7 == ir2 |
ADDsA_N == ir2| SUBsN == ir2 | ANDsN == ir2 | ORsN == ir2 |
ADCsA_N ==ir2 | SBCsA_N ==ir2 | XORsN ==ir2 | CPsN == ir2 |
ED_NEG == {ir2[9:6],ir2[2:0]} ; //7'b1001___100, A<= -A
 
1095,7 → 1116,7
ED_SBCsHL_REG == {ir2[9:6],ir2[3:0]} | // compair with {ir2[9:6],ir2[3:0]}
ED_ADCsHL_REG == {ir2[9:6],ir2[3:0]} ; // compair with {ir2[9:6],ir2[3:0]}
 
 
wire borrow = ED_SBCsHL_REG == {ir2[9:6],ir2[3:0]};
// the shifts probably muck with all flags (some operations are
// guarenteed not to change certain flags )
// docs say sf and zf never change for these ops.
1198,7 → 1219,7
if ( upd_fr_alu8 ) fr <= alu8_fr; // assembled above with 8 bit ALU
if ( upd_fr_add16) fr <= {sf, zf, add16[13], c_16out11, add16[11], pvf, 1'b0, c_16out15};
if ( upd_fr_edadd16) fr <= {add16[15], ~|add16, add16[13], c_16out11,
add16[11], add16_ofl, ~ir2[3], c_16out15};
add16[11], add16_ofl, ~ir2[3], borrow ^ c_16out15};
if ( upd_fr_sh ) fr <= {sf, zf, sh_alu[5], 1'b0, sh_alu[3], pvf, 1'b0, sh_cry};
if ( upd_fr_cbsh ) fr <= {sh_alu[7], ~|sh_alu, sh_alu[5], 1'b0,
sh_alu[3], ~^sh_alu, 1'b0, sh_cry};
1217,11 → 1238,12
ar[3], ~^{ar[7:4],nn[3:0]}, 1'b0 , cf };
if (ED_RLD == ir2) fr <= { sf, ~|{ar[7:4],nn[7:4]}, ar[5], 1'b0,
ar[3], ~^{ar[7:4],nn[7:4]}, 1'b0 , cf };
if (ED_LDsA_I == ir2) fr <= { ir2[7], ~|ir2, ir2[5], 1'b0, ir2[3], iff2, 1'b0, cf }; // iff2 ?
if (ED_LDsA_I == ir2) fr <= { intr[7], ~|intr, intr[5], 1'b0, intr[3], iff2, 1'b0, cf }; // iff2 ?
if (ir2 == EXsAF_AFp) fr <= fp;
if (ir2 == EXX ) fr <= fp;
if (ir2 == POPsAF) fr <= nn[7:0];
 
end
// in the case of blk_cp the update above is executed 2nd - and so these are don't cares.
if (exec_decb ) fr <= {decb_alu[7], ~|decb_alu, decb_alu[5], hf,
/trunk/rtl/z80_memstate2.v
109,10 → 109,10
// complete before starting the ir1 operation
//-------1---------2---------3--------CVS Log -----------------------7---------8---------9--------0
//
// $Id: z80_memstate2.v,v 1.2 2004-05-13 14:58:53 bporcella Exp $
// $Id: z80_memstate2.v,v 1.3 2004-05-18 22:31:21 bporcella Exp $
//
// $Date: 2004-05-13 14:58:53 $
// $Revision: 1.2 $
// $Date: 2004-05-18 22:31:21 $
// $Revision: 1.3 $
// $Author: bporcella $
// $Locker: $
// $State: Exp $
119,6 → 119,9
//
// Change History:
// $Log: not supported by cvs2svn $
// Revision 1.2 2004/05/13 14:58:53 bporcella
// testbed built and verification in progress
//
// Revision 1.1 2004/04/27 21:27:13 bporcella
// first core build
//
160,6 → 163,9
wb_dat_i, wb_ack_i, wb_clk_i, rst_i,
int_req_i,
add16,
alu8_out,
sh_alu,
bit_alu,
wb_clk_i,
rst_i
 
200,8 → 206,9
input wb_ack_i, wb_clk_i, rst_i;
input int_req_i;
input [15:0] add16; // ir2 execution engine output for sp updates
 
 
input [7:0] alu8_out;
input [7:0] sh_alu; // rmw shifts
input [7:0] bit_alu;
//-------1---------2---------3--------Parameters-----------6---------7---------8---------9--------0
`include "opcodes.v" // states of the main memory sequencer
 
287,8 → 294,11
DEC_INT5 = 6'h36,
DEC_RET = 6'h37,
DEC_NNJMP = 6'h38,
DEC_RET2 = 6'h39 ;
DEC_DDN = 6'h39,
DEC_RET2 = 6'h3a,
DEC_EXSPHL = 6'h3b,
DEC_RMWDD1 = 6'h3c,
DEC_RMWDD2 = 6'h3d ;
// initial decode assignemnts. These assignemens are made to wires on an initial decode
// to help document next state transitions
parameter I1_CB = 4'h0,
397,7 → 407,8
wire [5:0] next_dec_state;
wire [4:0] next_mem_state;
wire [3:0] next_pipe_state;
wire ed_dbl_rd;
wire ed_dbl_rd;
wire [15:0] hl_or_ixiy;
//-------1---------2---------3--------Registers------------6---------7---------8---------9--------0
 
reg [15:0] pc;
429,6 → 440,7
reg flag_os1;
reg int_en, en_int_next;
reg wb_irq_sync;
reg ex_tos_hl; // special flag to help implement EXs6SP7_HL
//-------1---------2---------3--------Assignments----------6---------7---------8---------9--------0
//
// ir is 10 bits most significant codes ir1[9:8] = { EDgrp, CBgrp } DDgrp and FDgrp are modifiers
444,7 → 456,9
assign de = {dr, er};
assign bc = {br, cr};
 
 
assign hl_or_ixiy = ir1dd ? ixr :
ir1fd ? iyr :
hl ;
// this "groups" the instructions to determine first memory operation
 
parameter I1DCNT = 4; // parameter used below simply to make possible change easier.
694,7 → 708,7
{I1DCNT {RETsPO== ir1 & ~pvf}} & I1_RET |// RET PO ; E0
{I1DCNT {RETsNZ== ir1 & ~zf }} & I1_RET |// RET NZ ; C0
{I1DCNT {RETsZ == ir1 & zf }} & I1_RET |// RET Z ; C8
{I1DCNT {EXs6SP7_HL == ir1}} & I1_RMW |// EX (SP),HL ; E3
{I1DCNT {EXs6SP7_HL == ir1}} & I1_POP |// EX (SP),HL ; E3
{I1DCNT {DECs6HL7 == ir1}} & I1_RMW |// DEC (HL) ; 35
{I1DCNT {INCs6HL7 == ir1}} & I1_RMW |// INC (HL) ; 34
{I1DCNT {RSTs0 == ir1}} & I1_RST |// RST 0 ; C7
862,33 → 876,46
 
wire os_b = LDs6HL7_B == ir1 | // LD (HL),B ; 70
ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_BC == ir1[5:4] |
PUSHsBC == ir1 | // PUSH BC
ED_OUTs6C7_REG == {ir1[9:6],ir1[2:0]} & REG8_B == ir1[5:3] ;
wire os_c = LDs6HL7_C == ir1 | // LD (HL),C ; 71
PUSHsBC == ir1 | // PUSH BC
ED_OUTs6C7_REG == {ir1[9:6],ir1[2:0]} & REG8_C == ir1[5:3] ;
wire os_d = LDs6HL7_D == ir1 | // LD (HL),D ; 72
PUSHsDE == ir1 | // PUSH DE
ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_DE == ir1[5:4] |
ED_OUTs6C7_REG == {ir1[9:6],ir1[2:0]} & REG8_D == ir1[5:3] ;
wire os_e = LDs6HL7_E == ir1 | // LD (HL),E ; 73
PUSHsDE == ir1 | // PUSH DE
ED_OUTs6C7_REG == {ir1[9:6],ir1[2:0]} & REG8_E == ir1[5:3] ;
wire os_h = LDs6HL7_H == ir1 | // LD (HL),H ; 74
LDs6NN7_HL == ir1 | // LD (NN),HL ; 22 XX XX
ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_HL == ir1[5:4] |
PUSHsHL == ir1 | // need this here for hazard detect
ED_OUTs6C7_REG == {ir1[9:6],ir1[2:0]} & REG8_H == ir1[5:3] ;
 
wire os_l = LDs6HL7_L == ir1 | // LD (HL),L ; 75
PUSHsHL == ir1 |
ED_OUTs6C7_REG == {ir1[9:6],ir1[2:0]} & REG8_L == ir1[5:3] ;
 
 
// these need special treatment of nn register, but as each is an NN type, there
// is no risk of a hazard.
wire os_bc = ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_BC == ir1[5:4];
wire os_de = ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_DE == ir1[5:4];
wire os_sp = ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_SP == ir1[5:4];
 
 
wire os_hl = LDs6NN7_HL == ir1 & ~(ir1dd | ir2dd) |
ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_HL == ir1[5:4] ;
wire os_ixr = LDs6NN7_HL == ir1 & ir1dd;
wire os_iyr = LDs6NN7_HL == ir1 & ir1fd;
 
 
// wire os_sp = ED_LDs6NN7_REG == {ir1[9:6],ir1[3:0]} & DBL_REG_SP == ir1[5:4]; not used ?
 
wire os_f = PUSHsAF == ir1 ;
// wire os_f = PUSHsAF == ir1 ;
 
 
//---------------- inst hazard ----------------------------------------------------------
943,11 → 970,14
LDsE_6HL7 == ir1 | LDs6HL7_H == ir1 |
LDsH_6HL7 == ir1 | LDs6HL7_L == ir1 |
LDsL_6HL7 == ir1 | JPsHL == ir1 |
ORs6HL7 == ir1 | DECs6HL7 == ir1 ;
ORs6HL7 == ir1 | DECs6HL7 == ir1 |
PUSHsHL == ir1;
wire use_bc_exec = LDsA_6BC7 == ir1 |
LDs6BC7_A == ir1 ;
LDs6BC7_A == ir1 |
PUSHsBC == ir1 ;
wire use_de_exec = LDs6DE7_A == ir1 |
LDsA_6DE7 == ir1 ;
LDsA_6DE7 == ir1 |
PUSHsDE == ir1 ;
wire use_sp_exec = MEM_OFSP == next_mem_state |
MEM_OSSP == next_mem_state ;
961,7 → 991,8
RETsPE == ir1 |
RETsPO == ir1 |
RETsNZ == ir1 |
RETsZ == ir1 ) ;
RETsZ == ir1 |
PUSHsAF == ir1 ) ;
 
assign hazard = (dec_state == DEC_EXEC & exec_ir2 ) & ( upd_fr & use_fr_exec |
upd_ar & os_a |
1047,8 → 1078,7
// MEM_OSSP MEM_OSSP_P MEM_OSADRP1 MEM_IFINT MEM_OS_HL_N
//
 
wire src_sp = next_mem_state == MEM_OF1 & EXs6SP7_HL == ir1 | //special case rmw
next_mem_state == MEM_OFSP |
wire src_sp = next_mem_state == MEM_OFSP |
next_mem_state == MEM_OSSP |
next_mem_state == MEM_CALL ;
wire src_pc = next_mem_state == MEM_IFPP1 |
1072,10 → 1102,8
// this gets messy as we use wb_adr_o for some of these.
//
wire src_hl = next_mem_state == MEM_OF1 &
(dec_state == DEC_EXEC) &
!src_de & !src_bc & !src_sp |
next_mem_state == MEM_OS1 &
(dec_state == DEC_EXEC) &
!src_de & !src_bc |
next_mem_state == MEM_OFHL_PM |
next_mem_state == MEM_OSHL_PM |
1123,6 → 1151,8
next_mem_state ==MEM_IFPP1 |
next_mem_state ==MEM_OSSP_PCM2 |
next_mem_state ==MEM_IFNN |
next_mem_state ==MEM_OFNN |
next_mem_state ==MEM_OSNN |
next_mem_state ==MEM_OSSP_P ;
 
wire dec = next_mem_state ==MEM_OFHL_PM & ~block_mv_inc |
1151,6 → 1181,9
next_mem_state == MEM_REL2PC |
next_mem_state == MEM_OFIXpD |
next_mem_state == MEM_OSIXpD |
next_mem_state == MEM_OFADRP1 |
next_mem_state == MEM_OSADRP1 |
next_mem_state == MEM_OSSP ;
 
 
1210,7 → 1243,7
I1_POP : next_state = {DEC_POP, MEM_OFSP, IPIPE_EN12};
I1_PUSH : next_state = {DEC_PUSH, MEM_OSSP, IPIPE_EN12};
I1_RET : next_state = {DEC_RET, MEM_OFSP, IPIPE_EN12};
I1_RMW : next_state = {DEC_RMW, MEM_OF1, IPIPE_EN12};//can't activate till data rdy
I1_RMW : next_state = {DEC_RMW, MEM_OF1, IPIPE_EN12};//can't gronk ir1 - blow off if
I1_RST : next_state = {DEC_IF2, MEM_IFRST, IPIPE_ENN};
I1_R2R : next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_EN12A2};
I1_JMPR : next_state = {DEC_N, MEM_NOP, IPIPE_ENN};
1221,21 → 1254,24
else next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_EN12A2};
DEC_DDFD: // except for CB and EB these all act the same H and L get modified by prefix
case (mem_exec_dec)
I1_CB : next_state = {DEC_PFxCB,MEM_IFPP1, IPIPE_EN1};// IF2_NOP -> nn <= (MEM)
I1_CB : next_state = {DEC_PFxCB,MEM_IFPP1, IPIPE_ENN};// IF2_NOP -> nn <= (MEM)
I1_DDFD : next_state = {DEC_DDFD, MEM_IFPP1, IPIPE_EN1};
I1_ED : next_state = {DEC_ED, MEM_IFPP1, IPIPE_EN1};//How do we clear the prefix?
I1_JMP : next_state = {DEC_IF2, MEM_JMPHL, IPIPE_NOP};
I1_N : next_state = {DEC_N, MEM_IFPP1, IPIPE_ENN};
I1_N : next_state = {DEC_DDN, MEM_IFPP1, IPIPE_ENN};
I1_NN : next_state = {DEC_NN, MEM_IFPP1, IPIPE_ENN};
I1_OF : next_state = {DEC_DDOF, MEM_IFPP1, IPIPE_ENN}; // d to nn - need to get d
// LD A,(BC) LD A,(DE) will
// become ix+d - do we care ?
// i hope not
// 5/13/04 the dd mods the index op
// but NOT the operand -- gotta kill
// the prefix on these
I1_OS : next_state = {DEC_DDOS, MEM_IFPP1, IPIPE_ENN}; // d to nn
I1_POP : next_state = {DEC_POP, MEM_OFSP, IPIPE_EN12};
I1_PUSH : next_state = {DEC_PUSH, MEM_OSSP, IPIPE_EN12};
I1_RET : next_state = {DEC_RET, MEM_OFSP, IPIPE_EN12};
I1_RMW : next_state = {DEC_RMW, MEM_OF1, IPIPE_EN12};
I1_RMW : next_state = {DEC_RMWDD1, MEM_IFPP1, IPIPE_ENNEN2};
I1_RST : next_state = {DEC_IF2, MEM_IFRST, IPIPE_NOP}; // just dump next inst
I1_R2R : next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_EN12A2}; //I1_R2R
I1_JMPR : next_state = {DEC_N, MEM_NOP, IPIPE_ENN};
1243,7 → 1279,7
default : next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_EN12A2}; //I1_R2R
endcase
DEC_ED:
if (ed_nn) next_state = {DEC_EDNN1, MEM_IFPP1, IPIPE_ENN};
if (ed_nn) next_state = {DEC_EDNN1, MEM_IFPP1, IPIPE_ENNEN2};
// we need to set inc and io and repeat flags on this state for continued block
// processing -- keep the states of this machine somewhat manageable.
else if (ed_blk_cp ) next_state = {DEC_EDBCP1, MEM_OFHL_PM, IPIPE_EN12};// MEM_OFHL_PM triggers --BC
1253,13 → 1289,13
else if (ed_retn ) next_state = {DEC_RET, MEM_OFSP, IPIPE_EN12};// see int logic below
else next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_EN12A2};
// double register reads and writes here
DEC_EDNN1: next_state = {DEC_EDNN2, MEM_NOP, IPIPE_ENN}; // address to nn
DEC_EDNN1: next_state = {DEC_EDNN2, MEM_IFPP1, IPIPE_ENN}; // address to nn
DEC_EDNN2:
if (ed_dbl_rd) next_state = {DEC_EDRD1, MEM_OFNN, IPIPE_NOP};
else next_state = {DEC_EDWR, MEM_OSNN, IPIPE_NOP};// OSNN selects data ok?
if (ed_dbl_rd) next_state = {DEC_EDRD1, MEM_OFNN, IPIPE_EN12};
else next_state = {DEC_EDWR, MEM_OSNN, IPIPE_EN12};// OSNN selects data ok?
DEC_EDRD1: next_state = {DEC_EDRD2, MEM_OFADRP1, IPIPE_ENN}; // 1st byte 2n
DEC_EDRD2: next_state = {DEC_IF2, MEM_IFPP1, IPIPE_ENNA2}; // 2nd byte 2nn
DEC_EDWR: next_state = {DEC_IF1, MEM_OSADRP1, IPIPE_NOP};
DEC_EDRD2: next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_ENNA2}; // 2nd byte 2nn
DEC_EDWR: next_state = {DEC_IF2A, MEM_OSADRP1, IPIPE_NOP};
// ED block moves
DEC_EDBCP1:
1293,10 → 1329,16
DEC_N:
if (INsA_6N7== ir1) next_state = {DEC_NIN, MEM_IOF_N, IPIPE_EN12};
else if (OUTs6N7_A==ir1) next_state = {DEC_IF2A, MEM_IOS_N, IPIPE_EN1};
else if (LDs6HL7_N==ir1) next_state = {DEC_IF1, MEM_OS_HL_N, IPIPE_EN12};
else if (LDs6HL7_N==ir1) next_state = {DEC_IF2A, MEM_OS_HL_N, IPIPE_EN12};
else if (jmpr_true) next_state = {DEC_IF1, MEM_REL2PC, IPIPE_NOP};
else if (jmpr) next_state = {DEC_IF2, MEM_IFPP1, IPIPE_NOP};
else next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_EN12A2};//r2r
DEC_DDN:
if (INsA_6N7== ir1) next_state = {DEC_NIN, MEM_IOF_N, IPIPE_EN12};
else if (OUTs6N7_A==ir1) next_state = {DEC_IF2A, MEM_IOS_N, IPIPE_EN1};
else if (LDs6HL7_N==ir1) next_state = {DEC_IF1, MEM_OSIXpD, IPIPE_ENN};
else next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_EN12A2};//r2r
DEC_NIN: next_state = {DEC_IF2, MEM_IFPP1, IPIPE_ENNA2};
1326,13 → 1368,14
// general solution if not DEC_EXEC we get op frmo nn high byte.
// note that first MEM_OSNN trabsferrs nn to wb_adr_o.
DEC_NNOS1: next_state = {DEC_NNOS2, MEM_OSNN, IPIPE_EN1};
DEC_NNOS2: next_state = {DEC_IF2A, MEM_OSNN, IPIPE_NOP};
DEC_NNOS2: next_state = {DEC_IF2A, MEM_OSADRP1, IPIPE_NOP};
DEC_NNOS3: next_state = {DEC_IF2A, MEM_OSNN, IPIPE_EN1};
DEC_NNOF1: next_state = {DEC_NNOF2, MEM_OFNN, IPIPE_EN12};
DEC_NNOF2: next_state = {DEC_NNOF4, MEM_OFNN, IPIPE_ENN};
DEC_NNOF2: next_state = {DEC_NNOF4, MEM_OFADRP1, IPIPE_ENN};
DEC_NNOF3: next_state = {DEC_NNOF4, MEM_OFNN, IPIPE_EN12};
DEC_NNOF4: next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_ENNA2};
DEC_NNOF4: if (ex_tos_hl) next_state = {DEC_EXSPHL, MEM_NOP, IPIPE_ENNA2};
else next_state = {DEC_EXEC, MEM_IFPP1, IPIPE_ENNA2};
DEC_DDOS: next_state = {DEC_IF2A, MEM_OSIXpD, IPIPE_EN12};
DEC_DDOF: next_state = {DEC_OF , MEM_OFIXpD, IPIPE_EN12};
1347,7 → 1390,7
DEC_RET2: next_state = { DEC_NNJMP, MEM_NOP, IPIPE_ENN };
// blow off a tick so we don't gronk adr
DEC_RMW: next_state = {DEC_RMW2, MEM_NOP, IPIPE_ENNA2}; //activate
DEC_RMW2: next_state = {DEC_IF1 , MEM_OSADR, IPIPE_NOP }; // from nn
DEC_RMW2: next_state = {DEC_IF2A , MEM_OSADR, IPIPE_NOP }; // from nn
// IF memory -- rmw else these are all reg 2 reg
1361,10 → 1404,10
// of assembler code that count but the number of bytes assembled. Oh well I signed
// up for this...... and had a notion of what I was getting into.
//
DEC_PFxCB: next_state = { DEC_PFxCB2, MEM_IFPP1, IPIPE_ENN}; // this gets d
DEC_PFxCB2: next_state = { DEC_PFxCB3, MEM_OFIXpD, IPIPE_EN1}; //actual inst
DEC_PFxCB3: next_state = { DEC_PFxCB4, MEM_IFPP1, IPIPE_ENNEN2A2};
DEC_PFxCB4: next_state = { DEC_IF2A, MEM_OSADR, IPIPE_EN1}; //execute ir2
DEC_PFxCB: next_state = { DEC_PFxCB2, MEM_IFPP1, IPIPE_EN1}; // this gets inst
DEC_PFxCB2: next_state = { DEC_PFxCB3, MEM_OFIXpD, IPIPE_EN12}; //next inst - get op
DEC_PFxCB3: next_state = { DEC_PFxCB4, MEM_NOP, IPIPE_ENNA2};
DEC_PFxCB4: next_state = { DEC_IF2A, MEM_OSADR, IPIPE_NOP}; //execute ir2
// crap gotta subtract 2 (we always increment pc 2 times relative to the inst
// that got interrupted. also can't push and dec pc without 2 adders.
1377,6 → 1420,8
DEC_INT3: next_state = {DEC_INT4, MEM_INTA, IPIPE_NOP};
DEC_INT4: next_state = {DEC_INT5, MEM_NOP, IPIPE_ENN};
DEC_INT5: next_state = {DEC_IF2, MEM_IFINT, IPIPE_NOP};
DEC_EXSPHL: next_state = {DEC_PUSH, MEM_OSSP, IPIPE_NOP};
DEC_RMWDD1: next_state = {DEC_RMW, MEM_OFIXpD, IPIPE_EN1};
default: next_state = {DEC_IDLE, MEM_NOP, IPIPE_NOP};
endcase
end
1390,12 → 1435,12
//-----------------------instruction register #1 ----------------------------------
// // next_pipe_state {ir1,ir2,nn,act_ir2}
 
wire update_prefix = dec_state == DEC_EXEC | dec_state == DEC_DDFD;
wire update_prefix = dec_state == DEC_EXEC | dec_state == DEC_DDFD | dec_state == DEC_PFxCB;
wire iext_ed = update_prefix & (ir1[7:0]==8'hed);
wire iext_cb = update_prefix & (ir1[7:0]==8'hcb);
always @(posedge wb_clk_i or posedge rst_i)
if (rst_i) ir1 <= NOP;
else if (wb_rdy_nhz & next_pipe_state[3]) ir1 <= {2'b0, wb_dat_i} ;
else if ( wb_rdy_nhz &update_prefix ) ir1 <= {ir1[7:0]==8'hed, ir1[7:0]==8'hcb, ir1[7:0]};
else if (wb_rdy_nhz & next_pipe_state[3]) ir1 <= {iext_ed, iext_cb, wb_dat_i} ;
 
//----------- prefix states -----------------------------------------
// strings of prefix insts are ignored up to last one. Also dded and fded are ignored
1420,6 → 1465,7
if (rst_i) ir2 <= 10'h0;
else if (wb_rdy_nhz & next_pipe_state[2]) ir2 <= ir1;
wire kill_prefix = next_mem_state == MEM_OFIXpD;
always @(posedge wb_clk_i or posedge rst_i)
if (rst_i)
begin
1428,14 → 1474,21
end
else if (wb_rdy_nhz & next_pipe_state[2])
begin
ir2dd <= ir1dd;
ir2fd <= ir1fd;
ir2dd <= ir1dd & ~kill_prefix;
ir2fd <= ir1fd & ~kill_prefix;
end
always @(posedge wb_clk_i )
if (wb_rdy_nhz & next_pipe_state[0]) exec_ir2 <= 1'b1;
else exec_ir2 <= 1'b0;
//-------------- special instruction flag ---------------------------
// need this because the POP flow we use gronks ir1 early. I guess we could use
// ir2, but keeping the dec_state sequencer independent from ir2 seems like a good idea.
//
 
always @(posedge wb_clk_i)
if ((dec_state == DEC_EXEC) | (dec_state == DEC_DDFD))
ex_tos_hl <= (ir1 == EXs6SP7_HL);
 
 
 
1521,7 → 1574,9
//
//issue: how is EXs6SP7_HL implemented -- it is known as a rmw - and only trick for this file is
// that nn must be properly updates with ir2
// 5/17/04 Sure didn't get EXs6SP7_HL right first time through. After some serious thought
// decided to hop onto the POP flow with this --- POP - exchange - PUSH biggest trick
// is modified SP updating.
 
// 4/30/04 changed else if (we_next) we had a hazard and this term
// seemed to be gronking nn. see if it works now. Pretty tricky stuff.
1530,7 → 1585,11
else if ((DEC_EXEC == next_dec_state) & wb_rdy) flag_os1 <= 1'b0;
else if ( we_next & wb_rdy_nhz ) flag_os1 <= 1'b1;
 
wire ir2_cb_shift = (ir2[9:6] == 4'b01_00) ; // I'll hand or the 8 defined terms here
wire ir2_cb_bit = (ir2[9:6] == CB_RES ) |
(ir2[9:6] == CB_SET ) ;
 
 
wire [15:0] pc_2 = pc - 16'h2;
always @(posedge wb_clk_i or posedge rst_i)
if (rst_i) nn <= 6'h00;
1537,29 → 1596,43
else if (wb_rdy_nhz)
begin
if ( we_next & flag_os1) nn <= { nn[7:0], nn[15:8] } ;
else if(we_next & ( next_mem_state == MEM_CALL)) nn <= {pc};
else if(we_next & ( next_mem_state == MEM_OSSP_PCM2)) nn <= {pc_2[7:0], pc_2[15:8]};
else if(EXs6SP7_HL== ir2 & ir2dd & exec_ir2) nn <= ixr;
else if(EXs6SP7_HL== ir2 & ir2fd & exec_ir2) nn <= iyr;
else if(EXs6SP7_HL== ir2 & exec_ir2) nn <= hl;
else if((INCs6HL7==ir2 | DECs6HL7==ir2) & exec_ir2) nn[15:8] <= alu8_out;
else if( ir2_cb_shift & MEM_OSADR == next_mem_state ) nn[15:8] <= sh_alu;
else if( ir2_cb_bit & MEM_OSADR == next_mem_state ) nn[15:0] <= bit_alu;
else if (next_pipe_state[1]) nn <= { wb_dat_i, nn[15:8] }; // ENN overides os stuff
// these are the general cases with ir1 providing register specification
// let PUSH have priority (we need os_h for some indexed stores under ir1dd)
else if (we_next & ir1 == PUSHsHL) nn <= hl_or_ixiy; // use for PUSHsHL
else if(we_next & ( next_mem_state == MEM_OS1 |
next_mem_state == MEM_OSIXpD |
next_mem_state == MEM_OSSP |
next_mem_state == MEM_IOS_N |
next_mem_state == MEM_OSNN ) )
// oh my god -- operands go out in different order to stack than they
// do to normal stores. Oh well, guess that makes ordering consistent in
// memory
begin
if (os_a) nn[15:8] <= ar;
if (os_b) nn[15:8] <= br;
if (os_c) nn <= {br, cr }; // use for PUSHsBC
if (os_d) nn[15:8] <= dr;
if (os_e) nn <= {dr, er }; // use for PUSHsDE
if (os_h) nn[15:8] <= hr;
if (os_l) nn <= {hr, lr }; // use for PUSHsHL
if (os_f) nn <= {ar, fr }; // use for PUSHsAF
if (os_a) nn <= {ar, fr }; // use for PUSHsAF
if (os_b) nn <= {br, cr }; // use for PUSHsBC
if (os_c) nn[15:8] <= cr;
if (os_d) nn <= {dr, er }; // use for PUSHsDE
if (os_e) nn[15:8] <= er;
if (os_h) nn <= {hr, lr };
if (os_l) nn[15:8] <= lr;
if (os_bc) nn <= {cr, br };
if (os_de) nn <= {er, dr };
if (os_sp) nn <= {sp[7:0], sp[15:8] };
if (os_hl) nn <= {lr, hr };
if (os_ixr) nn <= {ixr[7:0], ixr[15:8] };
if (os_iyr) nn <= {iyr[7:0], iyr[15:8] };
end
// 4/19/2004 previously no if here - if not needed we don't need next_pipe_state[1] eithor
else if (next_pipe_state[1]) nn <= { wb_dat_i, nn[15:8] };
end
 
1598,21 → 1671,21
//
// ED_LDs6NN7_REG REG== SP // needs to be done from ir2
// ED_LDsREG_6NN7 REG== SP // do from ir2 - no hazard as executed on IF2 - refill pipe
wire ed_ld_spreg = (ED_LDsREG_6NN7 == {ir2[9:6],ir2[3:0]}) & (ir2[5:4] == DBL_REG_SP);
 
always @(posedge wb_clk_i )
begin
if (exec_ir2 ) // this has priority of course
begin
if (LDsSP_NN == ir2) sp <= nn;
if (ED_LDsREG_6NN7 == ir2) sp <= nn;
if (LDsSP_NN == ir2) sp <= nn;
if (ed_ld_spreg) sp <= nn;
if ( DECsSP == ir2 ) sp <= add16;
if ( INCsSP == ir2 ) sp <= add16;
end
if (wb_rdy_nhz) //the no hazard term should kill these if any abvove is happening in parallel
begin
if ( DECsSP == ir1 & dec_state == DEC_EXEC) sp <= adr_alu;
if ( INCsSP == ir1 & dec_state == DEC_EXEC) sp <= adr_alu;
if ( LDsSP_HL == ir1 & dec_state == DEC_EXEC) sp <= {hr,lr};
if ( LDsSP_HL == ir1 & dec_state == DEC_EXEC) sp <= hl_or_ixiy;
if ( LDsSP_HL == ir1 & dec_state == DEC_DDFD) sp <= hl_or_ixiy;
if (next_mem_state == MEM_OFSP ) sp <= adr_alu;
if (next_mem_state == MEM_OSSP ) sp <= adr_alu;
if (next_mem_state == MEM_OSSP_PCM2 ) sp <= adr_alu;

powered by: WebSVN 2.1.0

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