diff options
author | Jeffrey Armstrong <jeff@approximatrix.com> | 2024-11-20 20:37:21 -0500 |
---|---|---|
committer | Jeffrey Armstrong <jeff@approximatrix.com> | 2024-11-20 20:37:21 -0500 |
commit | ff1d2f48a76842c4f7e1754375df2f81c63b2152 (patch) | |
tree | f7706fc3f2ccd991a8dc019e08381f797224f12c /asm | |
parent | 3b2001b6dc43724e73cba3160cb05c0302b09303 (diff) | |
download | GWFetch-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.asm | 7 | ||||
-rw-r--r-- | asm/dosver.asm | 4 |
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 |