@@ -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 |
@@ -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 *** | ||||
@@ -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 | ||||
@@ -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 | ||||
@@ -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: | ||||
@@ -27,4 +27,4 @@ label2: .dw 0x42 | |||||
rlc c | rlc c | ||||
cp '-' | cp '-' | ||||
sbc hl, de | sbc hl, de | ||||
.fill 0x10 | |||||
.fill 0x50-$ |