From ff1d2f48a76842c4f7e1754375df2f81c63b2152 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Wed, 20 Nov 2024 20:37:21 -0500 Subject: Modified how assembly array is addressed to avoid memory corruption. Address could change at any moment, especially when vars are created, so care is taken to never generate a variable when we need to call or modify instructions. --- asm/386q.asm | 7 +++++-- asm/dosver.asm | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'asm') diff --git a/asm/386q.asm b/asm/386q.asm index 250825a..e95dabe 100644 --- a/asm/386q.asm +++ b/asm/386q.asm @@ -10,7 +10,8 @@ push bp - mov bp, sp + mov bp, sp ; needs to be &H8B, &HEC + pushf ; push zero onto the stack and pop it into flags. ; some bits won't change @@ -66,7 +67,7 @@ lessthantwoeightsix: ; INLINE assembler doesn't understand above - must be replaced after... ; because we need a lods with ES as a parameter ; so drop a 3-byte nonsense call to be replaced - mov cx, 0x0f99 ; replace with 0xF3, 0x26, 0xAC + mov cx, 0x0f99 ; replace with 0xF3, 0x26, 0xAC or &HF3, &H26, &HAC pop si @@ -113,5 +114,7 @@ alldone: mov di, [bp]+6 mov [di], dx + + popf pop bp retf 2 \ No newline at end of file diff --git a/asm/dosver.asm b/asm/dosver.asm index 8406663..9bbb0e0 100644 --- a/asm/dosver.asm +++ b/asm/dosver.asm @@ -1,5 +1,6 @@ push bp - mov bp, sp + mov bp, sp ; needs to be &H8B, &HEC + pushf mov al, 0 mov ah, 0x30 @@ -71,6 +72,7 @@ alldone: mov di, [bp]+8 mov [di], ax + popf pop bp retf 4 \ No newline at end of file -- cgit v1.2.3