aboutsummaryrefslogtreecommitdiff
path: root/asm
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeff@approximatrix.com>2024-11-20 20:37:21 -0500
committerJeffrey Armstrong <jeff@approximatrix.com>2024-11-20 20:37:21 -0500
commitff1d2f48a76842c4f7e1754375df2f81c63b2152 (patch)
treef7706fc3f2ccd991a8dc019e08381f797224f12c /asm
parent3b2001b6dc43724e73cba3160cb05c0302b09303 (diff)
downloadGWFetch-ff1d2f48a76842c4f7e1754375df2f81c63b2152.tar.gz
GWFetch-ff1d2f48a76842c4f7e1754375df2f81c63b2152.zip
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.
Diffstat (limited to 'asm')
-rw-r--r--asm/386q.asm7
-rw-r--r--asm/dosver.asm4
2 files changed, 8 insertions, 3 deletions
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