From 7c9d799d936c5b7d9a2866a18e23e905cc6b8d29 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sat, 28 Mar 2020 15:14:15 -0400 Subject: [PATCH] forth: Forth-ify "SCMP" --- emul/forth/z80c.bin | Bin 1051 -> 1075 bytes forth/forth.asm | 22 +++++----------------- forth/z80c.fs | 12 ++++++++++++ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index 1a1bd6236aa4178cffebfffe7f482018af915db7..8bee94b5433efde23a67df09a0ab44ec295d0aae 100644 GIT binary patch delta 167 zcmV;Y09gN<2(t*V>H!^7LrqW(00b8R(c#S<0L?1^%_soH!x{iZO-WQ0lkWj21y~cW z3p0}(0x1D6lSTp|0r!(=0xAPp2``hC0!IPClidOy5!?xB1`q}y0097*2AKp`2EmgI z12zHslS2a|8>0!)1tkXG1rP>70!dC(MN&{wMN~fk2@U}JlYs+B6NCyu0y-T4fervd V3LpRu00;y7liUL#0VtFH10BD;EmQyi delta 173 zcmdnYF`HwBg0I#nJnRKD<`Wk zn=w9~9L=oE*gd(PSrW*e$?PGV!{x|iCCkvr$DqXp)W^WV{CM&gW<@yxu6m|hKtruf VL2?Q}YdDx|IV{;6nd12w7y%IJDV6{L diff --git a/forth/forth.asm b/forth/forth.asm index f3872a0..db6cd21 100644 --- a/forth/forth.asm +++ b/forth/forth.asm @@ -122,6 +122,8 @@ LIT: .dw litWord .dw INITIAL_SP .dw WORDBUF + jp flagsToBC + jp strcmp ; *** Code *** forthMain: @@ -180,7 +182,7 @@ INTERPRET: .dw DROP .dw EXECUTE -.fill 56 +.fill 50 ; STABLE ABI ; Offset: 00cd @@ -980,25 +982,11 @@ PLUS: push hl jp next -.fill 18 - -; ( a1 a2 -- b ) - .db "SCMP" - .dw $-PLUS - .db 4 -SCMP: - .dw nativeWord - pop de - pop hl - call chkPS - call strcmp - call flagsToBC - push bc - jp next +.fill 42 ; ( n1 n2 -- f ) .db "CMP" - .dw $-SCMP + .dw $-PLUS .db 3 CMP: .dw nativeWord diff --git a/forth/z80c.fs b/forth/z80c.fs index 1639b10..cdc5925 100644 --- a/forth/z80c.fs +++ b/forth/z80c.fs @@ -254,3 +254,15 @@ CODE (resSP) ( INITIAL_SP == JTBL+28 ) SP JTBL 28 + @ LDdd(nn), ;CODE + +CODE SCMP + DE POPqq, + HL POPqq, + chkPS, + ( JTBL+35 == strcmp ) + JTBL 35 + CALLnn, + ( JTBL+32 == flagsToBC ) + JTBL 32 + CALLnn, + BC PUSHqq, +;CODE +