Make stack change safer

Setting the stack to zero is hosing the image somehow in 86box.
This change appears to fix it. Would be nice to learn more.
This commit is contained in:
Justine Tunney 2021-11-27 20:58:26 -08:00
parent 920babb3e7
commit d5afd05ef8

View file

@ -36,13 +36,13 @@ kCdr: .asciz "CDR" # ordering matters
kCons: .asciz "CONS" # ordering matters kCons: .asciz "CONS" # ordering matters
kEq: .asciz "EQ" # needs to be last kEq: .asciz "EQ" # needs to be last
begin: xor %sp,%sp # use highest address as stack begin: mov $0x8000,%sp # uses higher address as stack
# set independently of SS! # and set independently of SS!
# 8088 doesn't stop interrupts # 8088 doesn't stop interrupts
# after SS is set, and PC BIOS # after SS is set, and PC BIOS
# sets SP to a value that will # sets SP to a value that will
# damage our code if int fires # damage our code if int fires
# between setting SS and SP # between it setting SS and SP
push %cs # that means ss = ds = es = cs push %cs # that means ss = ds = es = cs
pop %ds # noting ljmp set cs to 0x7c00 pop %ds # noting ljmp set cs to 0x7c00
push %cs # that's the bios load address push %cs # that's the bios load address
@ -50,7 +50,7 @@ begin: xor %sp,%sp # use highest address as stack
push %cs # terminated NIL string above! push %cs # terminated NIL string above!
pop %ss # errata exists but don't care pop %ss # errata exists but don't care
mov $2,%bx mov $2,%bx
main: mov $0x8000,%cx # dl (g_look) is zero or cr main: mov %sp,%cx
call GetToken call GetToken
call GetObject call GetObject
call Eval call Eval