diff --git a/emul/forth/z80c.bin b/emul/forth/z80c.bin index 1a1bd62..8bee94b 100644 Binary files a/emul/forth/z80c.bin and b/emul/forth/z80c.bin differ 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 +