duskos

dusk os fork
git clone git://git.alexwennerberg.com/duskos
Log | Files | Refs | README | LICENSE

commit 5a048ae822205dbd4cea44613dacd14bf1a461ab
parent 8e4589dd5e53a06626eb21706fa1c73c2b2e5906
Author: Virgil Dupras <hsoft@hardcoded.net>
Date:   Thu, 16 Mar 2023 20:39:15 -0400

hal i386: fix broken findmod routine

EAX=5678 at bye

Diffstat:
Mfs/xcomp/bootlo2.fs | 4++--
Mfs/xcomp/i386/kernel.fs | 32+++++++++++++++-----------------
2 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/fs/xcomp/bootlo2.fs b/fs/xcomp/bootlo2.fs @@ -67,5 +67,5 @@ code 1- -1 W+n, exit, : 8b EMETA_8B MOD ! ; immediate : , HERE @!+ ; -: foo HERE @ 4 - @ bye ; -$1234 , foo +: foo HERE @ 4 - 16b @ bye ; +$12345678 , foo diff --git a/fs/xcomp/i386/kernel.fs b/fs/xcomp/i386/kernel.fs @@ -329,11 +329,6 @@ xcode branch! ret, \ Regular words -xcode execute - bx ax mov, - xdrop, - bx jmp, - xcode - si 0 d) ax sub, xdrop, ret, @@ -479,26 +474,27 @@ pc to lblerrmsg \ ecx=sl ebx=sa wcall, rtype wjmp, abort -xcode findmeta ( id ll -- ll-or-0 ) +xcode findmeta ( id ll -- ll-or-0 ) \ Preserves dx bx si 0 d) mov, xnip, pc to L1 \ bx=id ax ax test, - forward8 jz, + lblret abs>rel jz, bx ax 4 d) cmp, - forward8 jz, + lblret abs>rel jz, ax ax 0 d) mov, L1 absjmp, -forward! forward! - ret, +pc to L2 \ mod not found, restore dx + ax dx mov, ret, xcode findmod ( w -- w ) lblmod m) -1 i) test, lblret abs>rel jz, - ax 9 i) sub, + dx ax mov, + ax ax -9 d) mov, bx lblmod m) mov, - L1 abs>rel call, + L1 abscall, ax ax test, - lblret abs>rel jz, + L2 abs>rel jz, lblmod m) 0 i) mov, ax 8 i) add, ret, @@ -655,7 +651,9 @@ pc to L2 ( -- w ) \ find in sys dict ret, pc to L1 \ execute imm word - wcall, execute + bx ax mov, + xdrop, + bx call, wjmp, stack? xcode compword ( str -- ) @@ -717,9 +715,9 @@ xcode code pc to L1 \ bx=meta-id cx lblsysdict m) mov, - dx lblhere m) mov, - dx cx -4 d) xchg, - dx dwrite, dx dwrite, + bp lblhere m) mov, + bp cx -4 d) xchg, + bp dwrite, bx dwrite, ret, xcode code16b bx EMETA_16B i) mov, L1 absjmp,