zasm: add support for "$" symbol

Allows for the ".fill x-$" pattern.
This commit is contained in:
Virgil Dupras 2019-05-20 09:17:50 -04:00
parent 207adbc2f8
commit e18f9b53a9
7 changed files with 25 additions and 3 deletions

View File

@ -226,7 +226,13 @@ parseLiteral:
parseNumberOrSymbol: parseNumberOrSymbol:
call parseLiteral call parseLiteral
ret z ret z
; Not a number. Try symbol ; Not a number. Try PC
push de
ld de, .sDollar
call strcmp
pop de
jr z, .returnPC
; Not PC either, try symbol
call symSelect call symSelect
call symFind call symFind
jr nz, .notfound jr nz, .notfound
@ -244,3 +250,12 @@ parseNumberOrSymbol:
; Otherwise return error. Z is already unset, so in fact, this is the ; Otherwise return error. Z is already unset, so in fact, this is the
; same as jumping to zasmIsFirstPass ; same as jumping to zasmIsFirstPass
jp zasmIsFirstPass jp zasmIsFirstPass
.returnPC:
push hl
call zasmGetPC
push hl \ pop ix
pop hl
ret
.sDollar:
.db '$', 0

View File

@ -1,5 +1,5 @@
.equ USER_CODE 0x4800 .equ USER_CODE 0x4800
.equ USER_RAMSTART 0x5800 .equ USER_RAMSTART 0x6000
.equ FS_HANDLE_SIZE 8 .equ FS_HANDLE_SIZE 8
; *** JUMP TABLE *** ; *** JUMP TABLE ***

Binary file not shown.

View File

@ -13,6 +13,9 @@ jp test
zasmIsFirstPass: zasmIsFirstPass:
jp unsetZ jp unsetZ
zasmGetPC:
ret
testNum: .db 1 testNum: .db 1
s1: .db "2+2", 0 s1: .db "2+2", 0

View File

@ -3,6 +3,9 @@ jp test
#include "core.asm" #include "core.asm"
#include "parse.asm" #include "parse.asm"
zasmGetPC:
ret
testNum: .db 1 testNum: .db 1
sFoo: .db "Foo", 0 sFoo: .db "Foo", 0

View File

@ -6,6 +6,7 @@ jp test
#include "zasm/parse.asm" #include "zasm/parse.asm"
; mocks. aren't used in tests ; mocks. aren't used in tests
zasmGetPC:
zasmIsFirstPass: zasmIsFirstPass:
symSelect: symSelect:
symFind: symFind:

View File

@ -27,4 +27,4 @@ label2: .dw 0x42
rlc c rlc c
cp '-' cp '-'
sbc hl, de sbc hl, de
.fill 0x10 .fill 0x50-$