From fa6bcd37dad9312da7320b992f2a264baab07cd0 Mon Sep 17 00:00:00 2001 From: Stephen Toth Date: Wed, 27 Jun 2018 13:07:20 -0400 Subject: [PATCH] added strtow changed SET command to use word instead of byte for arg 2 --- bin/FSHa.8xp | Bin 2130 -> 2301 bytes includes/Memory.asm | 0 includes/String.asm | 103 ++++++++++++++++++++++++++++++++++++++ includes/commands/SET.asm | 22 +++++--- 4 files changed, 117 insertions(+), 8 deletions(-) delete mode 100644 includes/Memory.asm diff --git a/bin/FSHa.8xp b/bin/FSHa.8xp index 4133eccb97d26073d18723320dcb08543ef11bf8..814de8fe150a7d613cdca80ec8b0070559c953cd 100644 GIT binary patch delta 1070 zcmZ{iO-vI(6vwyQZo4H|*dSOmLB=W?5kV5Mf}$h}n5e`My;M*V4tP^B3PDT!hzAlx zGSS2kjwCH@cejCqi5>*x(1kI5B<;a?a1R?11c@gxv2k{{1r*uCeEi>k-uvyFnalkx zJU?3Up5Mld@%H-W#yZCM#`q}zy@wp&S;F%yq8fQD4*C!~A`beCEP2u43QOHg7|_Tl zz-)aGR4pNlj{?!P*Bdl3WNKrfb>Gvp)`wl}o_rc1wLwsn5D0zg^)Nom-p{{Fckdi5 zx=ABeO3*3;`H7Qkal<~T@+B8X{tX5$ZMYnPMHE_y-}ZE(;6hxW=&cD|xZ-JD1hN_d zvf^N;xG*pb_FCImB;q0Ku~T_rn3@d$`VxSdXGo?e8^b2pxiAQw>Gd7zdKCuEuRHD; z<_~Jjg4(cPJ7{@=PuTWaMsS<$TCa=orx@i@1YAt=NUGXv^|+U{?v!=T69Ip++{>q` zD{P)@_qS4ivZARJ$b0}kQajz*v&gRiJZvi6sI{9~H%!E)6Bhbcdis@r({po=%=Eo~ z<=6e08uSdUp`k3=Fg6IzGZ$2|P$tm6Rbbw_#fjYgYXSYKT)zPm*v%Dlde@HQlUzx9 z)xlM6H?%OQF>N|wXY}hKt61cAo$i-FOCWl!!hi&XJ}FR%%(GGh`4I#%Btoi6$(A7H zRd&)bN2#HsQ+XgkQ&(ci*DqnG{jhUVgf7~bNfE0Kcfr~YH1vXtU!;!|4M;eL-%&to z2(*@2M-SdowW&!wWG}4t$r+Fq`r!Tt;#IyH2wAd@a9%bMd@^3P@3utnXGdXvL^43= zv|hReyLfj8O}e=<^;Iz>z_Yc*WZc235TlJrXiLpy(F{y^bSs!Q6eCCZWWW?fO_;JM ie(UhCJ+je=9@(Iw(>hIgRByx~nsze|HEzbKx%vkmQ6Coo delta 905 zcmZ{hO=uHA6vsD{uZdvH($qvM+HItWLT!uIAQ-J5RXntZdXb8yAnHYn2)03qw6r&o z)=|-eP!B@VYFGb)EmS{D==VE(FD0B(BB91VW~K)uQqD{#b~*g7p0_)?-^n1ooCR3w zNkPdhi1V|+Ep6c+EtR%4CB5Mrt7((WPg)wW!ec4WvuO|~Yx}3{G`ZV&6SFs7B3;Ld z6A50cz<;qKX+F`Sc0O?%QoNo40n)3+h?H72MC86?Wj)pe*LZIR_zy2x6l7pWokQey zhRrw+AM?wwxReCxYZBf+kTg7ZQnr~+$spdS?T69zNCq=uIYz4H52c(#y2!S>_Brmc zZr2{i47=hQ3@0jrel7!kq1aJ55_Lwx-^_T$ncvAiyP6_cNEF*WTX;DMV}1MiN)kTR zw9B>@XK&ptZmaDJQ9_p%F~rsK;Bm<0)ciTFhUj?V!l zu2G_%;XhM2at110`j7&Zs6LEwn?8lnr{@*u8!fC2EGul@)8-2)FpA_Mh25v&1Aj9x zrN?fg7av%{%SCKrH;6U6_=1-N%GCmM(1!DPrc2;SN@C4?-b+f5LqwrquJvo`I^Y~W zVm-j99#bu}L5x2Ag=(W|DtqSLO^9kSwGp*Sh|2~O-dCS#j&*p0{pj6{WD$*P>qHaU t|A+#bMbv@Or{B_SqH&E~r4eG-M21a-%LWnNSD$F&Aq|Gmx)~@-{{S1~$C3a5 diff --git a/includes/Memory.asm b/includes/Memory.asm deleted file mode 100644 index e69de29..0000000 diff --git a/includes/String.asm b/includes/String.asm index cd49632..94ccc87 100644 --- a/includes/String.asm +++ b/includes/String.asm @@ -121,6 +121,7 @@ strchrNoCharFound: strtob: push bc push de + ld c, 0 strtobNumFind: ld a, (hl) cp $00 @@ -175,6 +176,108 @@ strtobExit: pop bc ret +;; strtow +;; Converts a string to a byte +;; Inputs: +;; HL: string pointer +;; Outputs: +;; HL: byte +strtow: + push bc + push de + ld bc, 0 +strtowNumFind: + ld a, (hl) + cp $00 + jp z, strtowEXIT + ld c, 0 + sub '1' + cp '9' + 1 + jr c, strtowNumWhile + inc hl + jr strtowNumFind +strtowNumWhile: + push hl +strtowNumWhileLoop: + ld a, c + cp 5 + jp nc, strtowConvert + ld a, (hl) + sub '0' - 1 + jr c, strtowConvert + cp '9' + 1 + jr nc, strtowConvert + inc hl + inc c + jr strtowNumWhileLoop +strtowConvert: + dec hl + ld a, (hl) + sub '0' + ld bc, 0 + ld c, a + dec hl + + pop de + call cpHLDE + jp c, strtowExit + ld a, (hl) + sub '0' + push hl + ld hl, 10 + call mulAbyHL + add hl, bc + ld b, h + ld c, l + pop hl + dec hl + + call cpHLDE + jp c, strtowExit + ld a, (hl) + sub '0' + push hl + ld hl, 100 + call mulAbyHL + add hl, bc + ld b, h + ld c, l + pop hl + dec hl + + call cpHLDE + jp c, strtowExit + ld a, (hl) + sub '0' + push hl + ld hl, 1000 + call mulAbyHL + add hl, bc + ld b, h + ld c, l + pop hl + dec hl + + call cpHLDE + jp c, strtowExit + ld a, (hl) + sub '0' + push hl + ld hl, 10000 + call mulAbyHL + add hl, bc + ld b, h + ld c, l + pop hl + +strtowExit: + ld hl, 0 + ld h, b + ld l, c + pop de + pop bc + ret + ;; toLower [Strings] ;; Converts every alpha character of a string to lowercase. ;; Inputs: diff --git a/includes/commands/SET.asm b/includes/commands/SET.asm index 159eaa8..0c63833 100644 --- a/includes/commands/SET.asm +++ b/includes/commands/SET.asm @@ -42,23 +42,29 @@ fshcmdSETfArg1Get: ld hl, fshcmdSETfDValue call _PutS ld hl, fshcmdSETfInputBuffer - ld de, 3 + ld de, 5 call inputnumstr - call strtob + call strtow + ex de, hl ld hl, FshCmdArg1 - ld (hl), a + ld (hl), d + inc hl + ld (hl), e fshcmdSETfExe: ld hl, FshCmdArg0 ld de, 0 ld e, (hl) - ld hl, FshCmdArg1 - ld b, (hl) - ld hl, 0 - ld l, b + push de + ld hl, FshCmdArg1 + ld d, (hl) + inc hl + ld e, (hl) + ex de, hl + pop de call fshvarset call _NewLine jp ErrCatch -fshcmdSETfInputBuffer: .db $00,$00,$00,$00 +fshcmdSETfInputBuffer: .db $00, $00, $00, $00, $00, $00 fshcmdSETfDIndex: .db "Index= ", 0 fshcmdSETfDValue: .db "Value= ", 0