From e18f9b53a9945a20018f4af539e52b11ba7970d0 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Mon, 20 May 2019 09:17:50 -0400 Subject: [PATCH] zasm: add support for "$" symbol Allows for the ".fill x-$" pattern. --- apps/zasm/parse.asm | 17 ++++++++++++++++- tools/emul/user.h | 2 +- tools/emul/zasm/zasm.bin | Bin 4001 -> 4022 bytes tools/tests/unit/test_expr.asm | 3 +++ tools/tests/unit/test_parse.asm | 3 +++ tools/tests/unit/test_parse_z.asm | 1 + tools/tests/zasm/test1.asm | 2 +- 7 files changed, 25 insertions(+), 3 deletions(-) diff --git a/apps/zasm/parse.asm b/apps/zasm/parse.asm index f3bf07d..af8858a 100644 --- a/apps/zasm/parse.asm +++ b/apps/zasm/parse.asm @@ -226,7 +226,13 @@ parseLiteral: parseNumberOrSymbol: call parseLiteral 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 symFind jr nz, .notfound @@ -244,3 +250,12 @@ parseNumberOrSymbol: ; Otherwise return error. Z is already unset, so in fact, this is the ; same as jumping to zasmIsFirstPass jp zasmIsFirstPass + +.returnPC: + push hl + call zasmGetPC + push hl \ pop ix + pop hl + ret +.sDollar: + .db '$', 0 diff --git a/tools/emul/user.h b/tools/emul/user.h index fdfd203..cf0a76e 100644 --- a/tools/emul/user.h +++ b/tools/emul/user.h @@ -1,5 +1,5 @@ .equ USER_CODE 0x4800 -.equ USER_RAMSTART 0x5800 +.equ USER_RAMSTART 0x6000 .equ FS_HANDLE_SIZE 8 ; *** JUMP TABLE *** diff --git a/tools/emul/zasm/zasm.bin b/tools/emul/zasm/zasm.bin index f6c9b9a7a0c76d201378f0a03e5b5f074f746b9e..f842fac705d8cda1d955db5b8f30288aa4d5765c 100644 GIT binary patch delta 1721 zcmY*aZD?Cn7{2!=P1~eRo6OO>rXMG{wY|G#QX{UA$#olQljft<LVY9#6xA5TOr4o(sF^cq-16t9CV3M z^oO;azgyYFAh0R*D1xs?F=~WMiOrk3WCw>$Oj03Vr-G$Ug>UmR4Brd_+%N#k46^Bx z72FyLMwk-S4&Htzq)WDa?F*m{c$8&KhM0mEcu0)Q0s-wRJI*TF9rh^58hg!lEF!j& z#l@>!8=Eb=eh8CDup}NPUna?X64}cHC(F7~%HtxJGKo87>V|;_7;-(lUN*_?uu;PD zF!?3Cu^pC=(e>}JEYY{2lamdy$TggaJJT5m88`HT(J_=H{5#*I)yx@$ImmGMI$0qcQ6|Al;Eo1BY;8sLzrxm*uLBmiy=)t47kg4ez%l(eAO{fHfUJ_gMr6%CP z!%Aa$2I>ut1ey~g-iYW12#BUqR>XK(wNuUWF0g>+sO#<5ZC|CyXjHVzHac|MIlhZrj4g}KG4Iym*UkOh zp}DAKdIo(1GL05MI?$T7(VAy}(>}9bXg(YDq!~1&?bt6u-uE15`t7ma^fYqDdS@JH z2=)#%9P4$=pi>~z=+(ua9sO*!J8>%UR$?x3BXKif0wr&sLOu_QF1R?lXT)Ka48+aQcR+ubTS3;w=z16-k8}R{^ZveTHPbtP z-q)vk=jVI~q~i0b#wG@J-!-c4Qyc0zP|scggZ$hI%*dK9`BbS-t)4?F`7wcdbU_zL zTX4i_j_BqpwVXDfr@uo!-U_7it2!{APl|rCOgzB}(vw79vrOZ)xN{(@RtV1+@UZa7 zji-s?gM@CH<;q?bc-X{Fn#M-c@Q*2IlkOW(^CbgdtLFyPqMMm@F$x)AuDDw0lJgI# zeo6HYtK_F3F%s~E4yvR#RUj{ha=Tj`7*y*l4h*UFEQ@`Tip!D&pVXrqfp<9&BBQCo zOuY`DQG>q#Y9b3Mz5*1_kI&TEjYz7_ZA_->7O}lv$LZpQi8Q&L$Ya|4mXz25Un2I? zQSKnuQ~Y6iY#=!3U{?(2BI0tm(T}5{VfdH$M72Q@i07a&4@w$L GdHgR}QtK=L delta 1638 zcmY*ZZ){Ul6o2ovYsdPBbz|CvhTsteeJG>?hX#mX~K9gqxO`{9x2p_1P+cAtE-nsYw z&hMUc-nr+TtNy%SD1UoFxUH#SuUd}8B7N#S@{toUsk`dwQprxPGG8M1GYYo^1S)eX zz1t{+`_xqo0-JKb8VdHSMuXHdl6{rR9Y9#cBpVBMs#xw+MQ4EHL^}weVKA(4$VO!= z&{_^gxC%qJeg9^R%C-&kSwJIRbsm!;t`vYcWKQ8B0R0R<%B%Wyemlqp|B+2hNSny) z+!?{iYvfFZoXen&D)~B7rADQQ%k>O78(*rLOEqd%%K13C5iilLMci6VqqcW{{Z*418^9v@A=)}N$CjE&9a*>V z$MxOTJ^YvY39Gn!Hh}`lm>6;=$xs5hLo=aJ^DwfybE4p$B%rnAM4R%DD0usf$|8mg zE|v58H`b7LaN_C4RBtb_ajUfoZ{;9~hbKf!;Ejn@zMZ>P&r5B8tR=(;#`J|3ilTLq zZ03wbys$Kntgywz$q`#Z5=3DEo44OFZ_gNHE@6~Hr-!jgO~?&h;Lw)9%@m#C$)g0? z6!;ak0&J;aU`3;%pgaoGROD8w$)R@TZg?f-7O&Efv1QEN<|APr0p_sX;UTKO@>#YX{cNv;vSEO&&f$azFseA;?(< z;yVTmr4FtkuqWP>J%GX`<_Y|@Ts%<%vi9B+z1#BNHMr5++uMqrUE6Xe1=@9R8~_#$ z)!()CKNlXSGgk2Fp{Z^+PiNZZp_s2*K9nq7-A1UAoh}@WAl>xvd@A`QDtSm=mt1~} z3hSuLyG!K{aP=#X_4zmy;4u|ijwqSJVg*{T7-L;XO{4rU(>my%xdvTEid>39r&K@o zJWT07xdx6L4g01WW?=Sc(5D4vr-BHi8VqX2DhAj$&0wF_f~NqUng)gP%mSw7H7W-+ z*{9WyAdM`fQ9ljQ5OGFF+|VJ5pwRcbdwR}gq_9~f-sm{7XHdYbGP-`;J*a6lB64gJ zSTf7^(&ZazYMRyBW1}Pyl{%SK8?!3@4Xq-!(cqv~tQge5^&^8?xr>|fa4H$(rakR! zDTIf#u&jlLHF7ITeon)@+oqBBY>DiS71p;nvQ2C9I5MO)H690L4Oe9u{-9so3PUs! zBf)HGve|?RYQV@wZRC7btU-uxjZQZC<-OUau)HtZv`DUI6X(hk<2iCUUBv8(?q{UU z@F$X=RorIsL00Tx$Cd>LtG}87Z-ayaZgu_k*f0$Kpro~egun~%4&+`M24$Lz#AHc> LVb6jFRT2LSrSZ5G diff --git a/tools/tests/unit/test_expr.asm b/tools/tests/unit/test_expr.asm index 0924ba6..eec8984 100644 --- a/tools/tests/unit/test_expr.asm +++ b/tools/tests/unit/test_expr.asm @@ -13,6 +13,9 @@ jp test zasmIsFirstPass: jp unsetZ +zasmGetPC: + ret + testNum: .db 1 s1: .db "2+2", 0 diff --git a/tools/tests/unit/test_parse.asm b/tools/tests/unit/test_parse.asm index 6654f9b..fa12fee 100644 --- a/tools/tests/unit/test_parse.asm +++ b/tools/tests/unit/test_parse.asm @@ -3,6 +3,9 @@ jp test #include "core.asm" #include "parse.asm" +zasmGetPC: + ret + testNum: .db 1 sFoo: .db "Foo", 0 diff --git a/tools/tests/unit/test_parse_z.asm b/tools/tests/unit/test_parse_z.asm index ff88dac..30333c9 100644 --- a/tools/tests/unit/test_parse_z.asm +++ b/tools/tests/unit/test_parse_z.asm @@ -6,6 +6,7 @@ jp test #include "zasm/parse.asm" ; mocks. aren't used in tests +zasmGetPC: zasmIsFirstPass: symSelect: symFind: diff --git a/tools/tests/zasm/test1.asm b/tools/tests/zasm/test1.asm index da2fcb9..04b1691 100644 --- a/tools/tests/zasm/test1.asm +++ b/tools/tests/zasm/test1.asm @@ -27,4 +27,4 @@ label2: .dw 0x42 rlc c cp '-' sbc hl, de -.fill 0x10 +.fill 0x50-$