diff --git a/blk/302 b/blk/302 index 0aad349..8fa1aa4 100644 --- a/blk/302 +++ b/blk/302 @@ -1,16 +1,16 @@ -L1 BSET PC ORG @ 0x0f + ! ( compiledWord ) -( 1. Push current IP to RS - 2. Set new IP to the second atom of the list - 3. Execute the first atom of the list. ) - IY PUSHqq, HL POPqq, ( <-- IP ) - L4 @ ( pushRS ) BCALL, - EXDEHL, ( HL points to PFA ) -( While we inc, dereference into DE for execute call later. ) - LDDE(HL), +PC ORG @ 0x2c + ! ( doesWord ) +( The word was spawned from a definition word that has a + DOES>. PFA+2 (right after the actual cell) is a link to the + slot right after that DOES>. Therefore, what we need to do + push the cell addr like a regular cell, then follow the + linkfrom the PFA, and then continue as a regular + compiledWord. ) + DE PUSHqq, ( like a regular cell ) + EXDEHL, HL INCss, - HL PUSHqq, IY POPqq, ( --> IP ) - JR, L3 BWR ( execute-B301 ) - - - + HL INCss, + E (HL) LDrr, + HL INCss, + D (HL) LDrr, + ( continue to compiledWord ) diff --git a/blk/303 b/blk/303 new file mode 100644 index 0000000..46a5967 --- /dev/null +++ b/blk/303 @@ -0,0 +1,16 @@ +PC ORG @ 0x0f + ! ( compiledWord ) +( 1. Push current IP to RS + 2. Set new IP to the second atom of the list + 3. Execute the first atom of the list. ) + IY PUSHqq, HL POPqq, ( <-- IP ) + L4 @ ( pushRS ) BCALL, + EXDEHL, ( HL points to PFA ) +( While we inc, dereference into DE for execute call later. ) + LDDE(HL), + HL INCss, + HL PUSHqq, IY POPqq, ( --> IP ) + JR, L3 BWR ( execute-B301 ) + + + + diff --git a/blk/304 b/blk/304 deleted file mode 100644 index 87bbec8..0000000 --- a/blk/304 +++ /dev/null @@ -1,16 +0,0 @@ -PC ORG @ 0x2c + ! ( doesWord ) -( The word was spawned from a definition word that has a - DOES>. PFA+2 (right after the actual cell) is a link to the - slot right after that DOES>. Therefore, what we need to do - push the cell addr like a regular cell, then follow the - linkfrom the PFA, and then continue as a regular - compiledWord. ) - DE PUSHqq, ( like a regular cell ) - EXDEHL, - HL INCss, - HL INCss, - E (HL) LDrr, - HL INCss, - D (HL) LDrr, - JR, L1 BWR ( compiledWord-B302 ) - diff --git a/emul/forth.bin b/emul/forth.bin index 7d6cb26..39751d9 100644 Binary files a/emul/forth.bin and b/emul/forth.bin differ