Skip to content

Commit 0503a2a

Browse files
committed
bugfix: 32bit operations bug
Many 32 bit operations might fail (i.e. division) because the SWAP32 routine was buggy upon last optimization. Fixed.
1 parent 7dd3cd3 commit 0503a2a

24 files changed

Lines changed: 337 additions & 88 deletions

library-asm/swap32.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
__SWAP32:
55
pop bc ; Return address
66
ex (sp), hl
7-
dec sp
8-
dec sp
7+
inc sp
8+
inc sp
99
ex de, hl
1010
ex (sp), hl
1111
ex de, hl
12-
inc sp
13-
inc sp
12+
dec sp
13+
dec sp
1414
push bc
1515
ret
1616

tests/functional/divf16c.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -345,13 +345,13 @@ __ENDF16DIV: ; Put the sign on the result
345345
__SWAP32:
346346
pop bc ; Return address
347347
ex (sp), hl
348-
dec sp
349-
dec sp
348+
inc sp
349+
inc sp
350350
ex de, hl
351351
ex (sp), hl
352352
ex de, hl
353-
inc sp
354-
inc sp
353+
dec sp
354+
dec sp
355355
push bc
356356
ret
357357

tests/functional/divi32c.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,13 @@ __MODI32: ; 32bits signed division modulus
263263
__SWAP32:
264264
pop bc ; Return address
265265
ex (sp), hl
266-
dec sp
267-
dec sp
266+
inc sp
267+
inc sp
268268
ex de, hl
269269
ex (sp), hl
270270
ex de, hl
271-
inc sp
272-
inc sp
271+
dec sp
272+
dec sp
273273
push bc
274274
ret
275275

tests/functional/divu32c.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,13 @@ __MODI32: ; 32bits signed division modulus
263263
__SWAP32:
264264
pop bc ; Return address
265265
ex (sp), hl
266-
dec sp
267-
dec sp
266+
inc sp
267+
inc sp
268268
ex de, hl
269269
ex (sp), hl
270270
ex de, hl
271-
inc sp
272-
inc sp
271+
dec sp
272+
dec sp
273273
push bc
274274
ret
275275

tests/functional/gef16.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,13 @@ checkParity:
156156
__SWAP32:
157157
pop bc ; Return address
158158
ex (sp), hl
159-
dec sp
160-
dec sp
159+
inc sp
160+
inc sp
161161
ex de, hl
162162
ex (sp), hl
163163
ex de, hl
164-
inc sp
165-
inc sp
164+
dec sp
165+
dec sp
166166
push bc
167167
ret
168168

tests/functional/gei32.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,13 +171,13 @@ checkParity:
171171
__SWAP32:
172172
pop bc ; Return address
173173
ex (sp), hl
174-
dec sp
175-
dec sp
174+
inc sp
175+
inc sp
176176
ex de, hl
177177
ex (sp), hl
178178
ex de, hl
179-
inc sp
180-
inc sp
179+
dec sp
180+
dec sp
181181
push bc
182182
ret
183183

tests/functional/geu32.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,13 @@ __SUB32:
144144
__SWAP32:
145145
pop bc ; Return address
146146
ex (sp), hl
147-
dec sp
148-
dec sp
147+
inc sp
148+
inc sp
149149
ex de, hl
150150
ex (sp), hl
151151
ex de, hl
152-
inc sp
153-
inc sp
152+
dec sp
153+
dec sp
154154
push bc
155155
ret
156156

tests/functional/gtf16.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,13 @@ checkParity:
165165
__SWAP32:
166166
pop bc ; Return address
167167
ex (sp), hl
168-
dec sp
169-
dec sp
168+
inc sp
169+
inc sp
170170
ex de, hl
171171
ex (sp), hl
172172
ex de, hl
173-
inc sp
174-
inc sp
173+
dec sp
174+
dec sp
175175
push bc
176176
ret
177177

tests/functional/gti32.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,13 @@ checkParity:
180180
__SWAP32:
181181
pop bc ; Return address
182182
ex (sp), hl
183-
dec sp
184-
dec sp
183+
inc sp
184+
inc sp
185185
ex de, hl
186186
ex (sp), hl
187187
ex de, hl
188-
inc sp
189-
inc sp
188+
dec sp
189+
dec sp
190190
push bc
191191
ret
192192

tests/functional/gtu32.asm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,13 @@ __CALL_BACK__:
134134
__SWAP32:
135135
pop bc ; Return address
136136
ex (sp), hl
137-
dec sp
138-
dec sp
137+
inc sp
138+
inc sp
139139
ex de, hl
140140
ex (sp), hl
141141
ex de, hl
142-
inc sp
143-
inc sp
142+
dec sp
143+
dec sp
144144
push bc
145145
ret
146146

0 commit comments

Comments
 (0)