comparison zruntime.S @ 253:3b34deba4ca0

Squashing some bugs introduced when I switched the register assignments for z80_write_byte around.
author Mike Pavone <pavone@retrodev.com>
date Mon, 29 Apr 2013 22:32:21 -0700
parents 63b9a500a00b
children d9417261366f
comparison
equal deleted inserted replaced
252:63b9a500a00b 253:3b34deba4ca0
86 86
87 .global z80_write_byte 87 .global z80_write_byte
88 z80_write_byte: 88 z80_write_byte:
89 call z_inccycles 89 call z_inccycles
90 z80_write_byte_noinc: 90 z80_write_byte_noinc:
91 cmp $0x4000, %r13w 91 cmp $0x4000, %r14w
92 jb z80_write_ram 92 jb z80_write_ram
93 cmp $0x8000, %r13w 93 cmp $0x8000, %r14w
94 jae z80_write_bank 94 jae z80_write_bank
95 cmp $0x6000, %r13w 95 cmp $0x6000, %r14w
96 je z80_write_bank_reg 96 je z80_write_bank_reg
97 /* TODO: YM-2612, PSG/VDP */ 97 /* TODO: YM-2612, PSG/VDP */
98 ret 98 ret
99 z80_write_ram: 99 z80_write_ram:
100 and $0x1FFF, %r13 100 and $0x1FFF, %r14
101 mov %r14b, (%r11, %r13) 101 mov %r13b, (%r11, %r14)
102 mov %r13d, %r14d 102 mov %r14d, %r13d
103 shr $7, %r14d 103 shr $7, %r13d
104 bt %r14d, 152(%rsi) 104 bt %r13d, 152(%rsi)
105 jnc not_code 105 jnc not_code
106 call z80_save_context 106 call z80_save_context
107 mov %r13d, %edi 107 mov %r14d, %edi
108 call z80_handle_code_write 108 call z80_handle_code_write
109 mov %rax, %rsi 109 mov %rax, %rsi
110 not_code: 110 not_code:
111 ret 111 ret
112 z80_write_bank: 112 z80_write_bank:
113 and $0x7FFF, %r13 113 and $0x7FFF, %r14
114 cmp $0, %r12 114 cmp $0, %r12
115 je slow_bank_write 115 je slow_bank_write
116 /* 68K memory is byte swapped */ 116 /* 68K memory is byte swapped */
117 xor $1, %r13 117 xor $1, %r14
118 mov %r14b, (%r12, %r13) 118 mov %r13b, (%r12, %r14)
119 ret 119 ret
120 slow_bank_write: 120 slow_bank_write:
121 /* TODO: Call into C to implement this */ 121 /* TODO: Call into C to implement this */
122 ret 122 ret
123 z80_write_bank_reg: 123 z80_write_bank_reg:
124 and $1, %r14w 124 and $1, %r13w
125 shl %r15w 125 shl %r15w
126 or %r14w, %r15w 126 or %r13w, %r15w
127 and $0x1FF, %r15w 127 and $0x1FF, %r15w
128 xor %r12, %r12 128 xor %r12, %r12
129 cmp $0x80, %r15w 129 cmp $0x80, %r15w
130 jb update_bank_ptr 130 jb update_bank_ptr
131 ret 131 ret
152 .global z80_write_word_highfirst 152 .global z80_write_word_highfirst
153 z80_write_word_highfirst: 153 z80_write_word_highfirst:
154 call z_inccycles 154 call z_inccycles
155 push %r14 155 push %r14
156 push %r13 156 push %r13
157 add $1, %r13w 157 add $1, %r14w
158 shr $8, %r14w 158 shr $8, %r13w
159 call z80_write_byte_noinc 159 call z80_write_byte_noinc
160 pop %r13 160 pop %r13
161 pop %r14 161 pop %r14
162 call z_inccycles 162 call z_inccycles
163 call z80_write_byte_noinc 163 call z80_write_byte_noinc
169 push %r14 169 push %r14
170 push %r13 170 push %r13
171 call z80_write_byte_noinc 171 call z80_write_byte_noinc
172 pop %r13 172 pop %r13
173 pop %r14 173 pop %r14
174 add $1, %r13w 174 add $1, %r14w
175 shr $8, %r14w 175 shr $8, %r13w
176 call z_inccycles 176 call z_inccycles
177 call z80_write_byte_noinc 177 call z80_write_byte_noinc
178 ret 178 ret
179 179
180 .global z80_retrans_stub 180 .global z80_retrans_stub