mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-23 23:48:05 +11:00
zasm: fix 3-digit hex parsing
This commit is contained in:
parent
cdb6cce914
commit
f44c3e5413
@ -27,6 +27,8 @@
|
|||||||
; intoDE
|
; intoDE
|
||||||
; intoHL
|
; intoHL
|
||||||
; findchar
|
; findchar
|
||||||
|
; parseHex
|
||||||
|
; parseHexPair
|
||||||
; blkSel
|
; blkSel
|
||||||
; fsFindFN
|
; fsFindFN
|
||||||
; fsOpen
|
; fsOpen
|
||||||
|
@ -72,12 +72,21 @@ parseHexadecimal:
|
|||||||
call strlen
|
call strlen
|
||||||
cp 3
|
cp 3
|
||||||
jr c, .single
|
jr c, .single
|
||||||
|
cp 4
|
||||||
|
jr c, .doubleShort ; 0x123
|
||||||
cp 5
|
cp 5
|
||||||
jr c, .double
|
jr c, .double ; 0x1234
|
||||||
; too long, error
|
; too long, error
|
||||||
jr .error
|
jr .error
|
||||||
.double:
|
.double:
|
||||||
call parseHexPair ; moves HL to last char of pair
|
call parseHexPair
|
||||||
|
jr c, .error
|
||||||
|
inc hl ; now HL is on first char of next pair
|
||||||
|
ld ixh, a
|
||||||
|
jr .single
|
||||||
|
.doubleShort:
|
||||||
|
ld a, (hl)
|
||||||
|
call parseHex
|
||||||
jr c, .error
|
jr c, .error
|
||||||
inc hl ; now HL is on first char of next pair
|
inc hl ; now HL is on first char of next pair
|
||||||
ld ixh, a
|
ld ixh, a
|
||||||
|
@ -17,6 +17,7 @@ jp unsetZ
|
|||||||
jp intoDE
|
jp intoDE
|
||||||
jp intoHL
|
jp intoHL
|
||||||
jp findchar
|
jp findchar
|
||||||
|
jp parseHex
|
||||||
jp parseHexPair
|
jp parseHexPair
|
||||||
jp blkSel
|
jp blkSel
|
||||||
jp fsFindFN
|
jp fsFindFN
|
||||||
|
@ -7,13 +7,14 @@ unsetZ .equ 0x0f
|
|||||||
intoDE .equ 0x12
|
intoDE .equ 0x12
|
||||||
intoHL .equ 0x15
|
intoHL .equ 0x15
|
||||||
findchar .equ 0x18
|
findchar .equ 0x18
|
||||||
parseHexPair .equ 0x1b
|
parseHex .equ 0x1b
|
||||||
blkSel .equ 0x1e
|
parseHexPair .equ 0x1e
|
||||||
fsFindFN .equ 0x21
|
blkSel .equ 0x21
|
||||||
fsOpen .equ 0x24
|
fsFindFN .equ 0x24
|
||||||
fsGetC .equ 0x27
|
fsOpen .equ 0x27
|
||||||
fsSeek .equ 0x2a
|
fsGetC .equ 0x2a
|
||||||
fsTell .equ 0x2d
|
fsSeek .equ 0x2d
|
||||||
|
fsTell .equ 0x30
|
||||||
|
|
||||||
.equ FS_HANDLE_SIZE 8
|
.equ FS_HANDLE_SIZE 8
|
||||||
.equ STDERR_PORT 0x04
|
.equ STDERR_PORT 0x04
|
||||||
|
@ -16,6 +16,7 @@ testNum: .db 1
|
|||||||
|
|
||||||
s99: .db "99", 0
|
s99: .db "99", 0
|
||||||
s0x99: .db "0x99", 0
|
s0x99: .db "0x99", 0
|
||||||
|
s0x100: .db "0x100", 0
|
||||||
s0b0101: .db "0b0101", 0
|
s0b0101: .db "0b0101", 0
|
||||||
s0b01010101: .db "0b01010101", 0
|
s0b01010101: .db "0b01010101", 0
|
||||||
sFoo: .db "Foo", 0
|
sFoo: .db "Foo", 0
|
||||||
@ -35,6 +36,17 @@ test:
|
|||||||
jp nz, fail
|
jp nz, fail
|
||||||
call nexttest
|
call nexttest
|
||||||
|
|
||||||
|
ld hl, s0x100
|
||||||
|
call parseLiteral
|
||||||
|
jp nz, fail
|
||||||
|
ld a, ixh
|
||||||
|
cp 1
|
||||||
|
jp nz, fail
|
||||||
|
ld a, ixl
|
||||||
|
or a
|
||||||
|
jp nz, fail
|
||||||
|
call nexttest
|
||||||
|
|
||||||
ld hl, sFoo
|
ld hl, sFoo
|
||||||
call parseLiteral
|
call parseLiteral
|
||||||
jp z, fail
|
jp z, fail
|
||||||
|
Loading…
Reference in New Issue
Block a user