Fix mis-documentation in 8086 boot code comments

This commit is contained in:
Virgil Dupras 2020-11-14 20:28:44 -05:00
parent c939c7e84a
commit 7722db0762
2 changed files with 11 additions and 12 deletions

19
blk.fs
View File

@ -2533,19 +2533,14 @@ sure it goes back to its previous level before next is called.
(cont.) (cont.)
( ----- 441 ) ( ----- 441 )
STABLE ABI: As a compatible binary, this binary follows the PS CHECKS: chkPS, is a bit different than in z80: it is para-
same stable ABI as its z80 counterpart. metrizable. The idea is that we always call chkPS, before pop-
ping, telling the expected size of stack. This allows for some
interesting optimization. For example, in SWAP, no need to pop,
chkPS, then push, we can chkPS and then proceed to optimized
swapping in PS.
PS CHECKS: Unlike z80 boot code, we don't check PS at each next Load range: B445-B461
call (we do check RS though). It is the responsibility of every
native PSP-modifying word to call chkPS, . Also, chkPS, is a
bit different than in z80: it is parametrizable. The idea is
that we always call chkPS, before popping, telling the expected
size of stack. This allows for some interesting optimization.
For example, in SWAP, no need to pop, chkPS, then push, we can
chkPS and then proceed to optimized swapping in PS.
To assemble, load blocks 445 through 461
( ----- 445 ) ( ----- 445 )
VARIABLE lblexec VARIABLE lblnext VARIABLE lblexec VARIABLE lblnext
H@ ORG ! H@ ORG !

View File

@ -51,6 +51,10 @@ Stack underflow and overflow: In each native word involving
PS popping, we check whether the stack is big enough. If it's PS popping, we check whether the stack is big enough. If it's
not we go in "uflw" (underflow) error condition, then abort. not we go in "uflw" (underflow) error condition, then abort.
This means that if you implement a native word that involves
popping from PS, you are expected to call chkPS, for under-
flow situations.
We don't check RS for underflow because the cost of the check We don't check RS for underflow because the cost of the check
is significant and its usefulness is dubious: if RS isn't is significant and its usefulness is dubious: if RS isn't
tightly in control, we're screwed anyways, and that, well tightly in control, we're screwed anyways, and that, well