From daeb3b3c690bf04a29c7070c0830abeb29e03415 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sun, 5 Jul 2020 14:13:01 -0400 Subject: [PATCH] Extract (n) code from stable ABI --- blk/283 | 2 +- blk/285 | 1 + blk/286 | 11 ----------- blk/306 | 20 ++++++++++---------- blk/307 | 23 +++++++++-------------- blk/308 | 22 +++++++++++++++------- blk/309 | 16 +++++++++------- blk/397 | 4 ++-- blk/805 | 7 +++---- blk/807 | 5 ----- blk/810 | 10 ++++++++++ blk/811 | 17 ++++++++--------- blk/812 | 10 ++++------ cvm/forth.bin | Bin 5422 -> 5422 bytes cvm/xcomp.fs | 2 ++ 15 files changed, 74 insertions(+), 76 deletions(-) delete mode 100644 blk/286 diff --git a/blk/283 b/blk/283 index bae9859..0368d13 100644 --- a/blk/283 +++ b/blk/283 @@ -6,7 +6,7 @@ NOP, NOP, ( 06, uflw ) NOP, NOP, ( 08, LATEST ) NOP, ( unused ) NOP, NOP, NOP, ( unused ) 0 JP, ( 1a, next ) NOP, NOP, NOP, ( unused ) 0 JP, ( RST 20 ) -NOP, NOP, NOP, NOP, NOP, ( unused ) +0 A, 0 JP, ( 23, (n) ) NOP, ( unused ) 0 JP, ( RST 28 ) 0 A, 0 JP, ( 2b, (s) ) NOP, ( unused ) 0 JP, ( RST 30 ) diff --git a/blk/285 b/blk/285 index 7296d8c..e6319c0 100644 --- a/blk/285 +++ b/blk/285 @@ -13,3 +13,4 @@ CODE (loop) ( 0x80 ) A 1 IX+ LDrIXY, 1 IX- CP(IXY+), JRNZ, L2 BWR ( branch ) ( don't branch ) IX DECd, IX DECd, IX DECd, IX DECd, JR, L1 BWR +( END OF STABLE ABI ) diff --git a/blk/286 b/blk/286 deleted file mode 100644 index 1aa2046..0000000 --- a/blk/286 +++ /dev/null @@ -1,11 +0,0 @@ -ORG @ 0xb9 + HERE ! -CODE (n) ( 0xbf, number literal ) - ( Literal value to push to stack is next to (n) reference - in the atom list. That is where IP is currently pointing. - Read, push, then advance IP. ) - E 0 IY+ LDrIXY, - D 1 IY+ LDrIXY, - IY INCd, IY INCd, - DE PUSH, -;CODE -( END OF STABLE ABI ) diff --git a/blk/306 b/blk/306 index fddc699..ac1b21f 100644 --- a/blk/306 +++ b/blk/306 @@ -1,11 +1,11 @@ -CODE (s) ( string literal ) -PC ORG @ 0x2d + ! ( stable ABI JP ) -( Like (n) but instead of being followed by a 2 bytes - number, it's followed by a string. When called, puts the - string's address on PS ) - IY PUSH, HL POP, ( <-- IP ) - E (HL) LDrr, D 0 LDri, - DE INCd, - DE ADDIYd, - HL PUSH, +CODE (n) ( number literal ) +PC ORG @ 0x25 + ! ( stable ABI JP ) + ( Literal value to push to stack is next to (n) reference + in the atom list. That is where IP is currently pointing. + Read, push, then advance IP. ) + E 0 IY+ LDrIXY, + D 1 IY+ LDrIXY, + IY INCd, IY INCd, + DE PUSH, ;CODE +( END OF STABLE ABI ) diff --git a/blk/307 b/blk/307 index 59f5a16..fddc699 100644 --- a/blk/307 +++ b/blk/307 @@ -1,16 +1,11 @@ -CODE ROT ( a b c -- b c a ) - HL POP, ( C ) DE POP, ( B ) BC POP, ( A ) chkPS, - DE PUSH, ( B ) HL PUSH, ( C ) BC PUSH, ( A ) -;CODE -CODE DUP ( a -- a a ) - HL POP, chkPS, - HL PUSH, HL PUSH, -;CODE -CODE ?DUP - HL POP, chkPS, +CODE (s) ( string literal ) +PC ORG @ 0x2d + ! ( stable ABI JP ) +( Like (n) but instead of being followed by a 2 bytes + number, it's followed by a string. When called, puts the + string's address on PS ) + IY PUSH, HL POP, ( <-- IP ) + E (HL) LDrr, D 0 LDri, + DE INCd, + DE ADDIYd, HL PUSH, - HLZ, IFNZ, HL PUSH, THEN, -;CODE -CODE DROP ( a -- ) - HL POP, ;CODE diff --git a/blk/308 b/blk/308 index 8c0ece3..59f5a16 100644 --- a/blk/308 +++ b/blk/308 @@ -1,8 +1,16 @@ -( a b -- b a ) -CODE SWAP - HL POP, ( B ) - DE POP, ( A ) - chkPS, - HL PUSH, ( B ) - DE PUSH, ( A ) +CODE ROT ( a b c -- b c a ) + HL POP, ( C ) DE POP, ( B ) BC POP, ( A ) chkPS, + DE PUSH, ( B ) HL PUSH, ( C ) BC PUSH, ( A ) +;CODE +CODE DUP ( a -- a a ) + HL POP, chkPS, + HL PUSH, HL PUSH, +;CODE +CODE ?DUP + HL POP, chkPS, + HL PUSH, + HLZ, IFNZ, HL PUSH, THEN, +;CODE +CODE DROP ( a -- ) + HL POP, ;CODE diff --git a/blk/309 b/blk/309 index b365db8..ff456e1 100644 --- a/blk/309 +++ b/blk/309 @@ -1,9 +1,11 @@ -( a b -- a b a ) -CODE OVER - HL POP, ( B ) - DE POP, ( A ) +CODE SWAP ( a b -- b a ) + HL POP, ( B ) DE POP, ( A ) chkPS, - DE PUSH, ( A ) - HL PUSH, ( B ) - DE PUSH, ( A ) + HL PUSH, ( B ) DE PUSH, ( A ) +;CODE + +CODE OVER ( a b -- a b a ) + HL POP, ( B ) DE POP, ( A ) + chkPS, + DE PUSH, ( A ) HL PUSH, ( B ) DE PUSH, ( A ) ;CODE diff --git a/blk/397 b/blk/397 index d190732..785dd81 100644 --- a/blk/397 +++ b/blk/397 @@ -1,9 +1,9 @@ -( Now we have "as late as possible" stuff. See B70 and B270. ) +( Now we have "as late as possible" stuff. See B70 and B260. ) : _bchk DUP 0x7f + 0xff > IF LIT< br-ovfl (print) ABORT THEN ; : DO 0x33 ( 2>R ) , H@ ; IMMEDIATE : LOOP 0x80 ( loop ) , H@ - _bchk , ; IMMEDIATE ( LEAVE is implemented in low xcomp ) -: LITN 0xbf ( n ) , , ; +: LITN 0x23 ( n ) , , ; ( gets its name at the very end. can't comment afterwards ) : _ BEGIN LIT< ) WORD S= UNTIL ; IMMEDIATE : _ ( : will get its name almost at the very end ) diff --git a/blk/805 b/blk/805 index a0c8dd4..5ba4e42 100644 --- a/blk/805 +++ b/blk/805 @@ -6,10 +6,9 @@ JMPn, 0 A,, ( 00, main ) 0 A, ( 03, boot driveno ) 0 A, JMPn, 0 A,, ( unused ) 0 A,, ( unused ) JMPn, 0 A,, ( unused ) JMPn, 0 A,, ( unused ) 0 A, 0 A,, ( unused ) -JMPn, 0 A,, ( 1a, next ) 0 A, 0 A,, ( unused ) -0 A, 0 A, 0 A, 0 A, ( unused ) -0 A, 0 A, 0 A, 0 A, ( unused ) -0 A, 0 A,, ( unused ) +JMPn, 0 A,, ( 1a, next ) 0 A,, 0 A,, 0 A,, ( unused ) +0 A, JMPn, 0 A,, ( 23, (n) ) +0 A,, 0 A,, ( unused ) 0 A, JMPn, 0 A,, ( 2b, (s) ) 0 A, ( unused ) 0 A, 0 A,, ( unused ) 0 A, JMPn, 0 A,, ( 33, 2>R ) 0 A, 0 A, 0 A,, ( unused ) diff --git a/blk/807 b/blk/807 index d180dbf..9fcf6f2 100644 --- a/blk/807 +++ b/blk/807 @@ -5,9 +5,4 @@ CODE (loop) ( 0x80 ) JNZ, L2 @ RPCs, ( branch ) ( don't branch ) BP 4 SUBxi, JMPs, L1 @ RPCs, -ORG @ 0xb9 + HERE ! -CODE (n) ( 0xbf, number literal ) - DI DX MOVxx, DI [DI] MOVx[], DI PUSHx, - DX INCx, DX INCx, -;CODE ( END OF STABLE ABI ) diff --git a/blk/810 b/blk/810 index 7c36afe..a62bc11 100644 --- a/blk/810 +++ b/blk/810 @@ -3,3 +3,13 @@ lblchkPS BSET ( CX -> expected size ) AX CX CMPxx, IFNC, ( we're good ) RETn, THEN, ( underflow ) DI 0x06 MOVxm, JMPs, lblexec @ RPCs, + +PC 3 - ORG @ 1+ ! ( main ) + DX POPx, ( boot drive no ) 0x03 DL MOVmr, + SP PS_ADDR MOVxI, BP RS_ADDR MOVxI, + DI 0x08 MOVxm, ( LATEST ) +( HERE begins at CURRENT ) + SYSVARS 0x4 ( HERE ) + DI MOVmx, + SYSVARS 0x2 ( CURRENT ) + DI MOVmx, + DI 0x04 ( BOOT ) MOVxm, + JMPn, lblexec @ RPCn, ( execute ) diff --git a/blk/811 b/blk/811 index 66789d6..cabbdca 100644 --- a/blk/811 +++ b/blk/811 @@ -1,9 +1,8 @@ -PC 3 - ORG @ 1+ ! ( main ) - DX POPx, ( boot drive no ) 0x03 DL MOVmr, - SP PS_ADDR MOVxI, BP RS_ADDR MOVxI, - DI 0x08 MOVxm, ( LATEST ) -( HERE begins at CURRENT ) - SYSVARS 0x4 ( HERE ) + DI MOVmx, - SYSVARS 0x2 ( CURRENT ) + DI MOVmx, - DI 0x04 ( BOOT ) MOVxm, - JMPn, lblexec @ RPCn, ( execute ) +( native words ) +CODE EXECUTE 1 chkPS, + DI POPx, JMPn, lblexec @ RPCn, +CODE EXIT +PC 0x0f - ORG @ 0x0d + ! ( stable abi ) + DX [BP] 0 MOVx[]+, BP DECx, BP DECx, ( popRS ) +;CODE + diff --git a/blk/812 b/blk/812 index d0adf9e..2b01c01 100644 --- a/blk/812 +++ b/blk/812 @@ -1,9 +1,7 @@ -( native words ) -CODE EXECUTE 1 chkPS, - DI POPx, JMPn, lblexec @ RPCn, -CODE EXIT -PC 0x0f - ORG @ 0x0d + ! ( stable abi ) - DX [BP] 0 MOVx[]+, BP DECx, BP DECx, ( popRS ) +CODE (n) ( number literal ) +PC 0x27 - ORG @ 0x25 + ! ( stable abi ) + DI DX MOVxx, DI [DI] MOVx[], DI PUSHx, + DX INCx, DX INCx, ;CODE CODE (s) ( string literal, see B287 ) PC 0x2f - ORG @ 0x2d + ! ( stable abi ) diff --git a/cvm/forth.bin b/cvm/forth.bin index 7848cc666e63fe6da27944ab7a8c04c375e8c868..1cd046e5d5056b69fd0994bc62cc91a4bbb6a0af 100644 GIT binary patch delta 2191 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