VOGONS


Reply 2382 of 2838, by Grafix

User metadata
Rank Newbie
Rank
Newbie
sharangad wrote on 2025-02-13, 17:52:

Largey's upcoming text file 'diffing' feature is proving useful for getting ICR2 to use 512 MB of RAM (ICR2 custom track support doesn't work yet. It will be a while yet before that works):

https://youtu.be/8QUgBUbmJwI

It would be just awesome if you manage this. You've already breathed amazing new life into ICR2 though!

Reply 2383 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t
Grafix wrote on 2025-02-15, 15:29:
sharangad wrote on 2025-02-13, 17:52:

Largey's upcoming text file 'diffing' feature is proving useful for getting ICR2 to use 512 MB of RAM (ICR2 custom track support doesn't work yet. It will be a while yet before that works):

https://youtu.be/8QUgBUbmJwI

It would be just awesome if you manage this. You've already breathed amazing new life into ICR2 though!

It certainly would. I'm Feeling really impatient now.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2384 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

Does anyone know where I can find documentation on Dos4gw's Int 31h?

What I've found so far is this:
https://rgmroman.narod.ru/Dos4g.htm

which helpfully says:
"[will be added later]"

[EDIT]
This https://www.delorie.com/djgpp/doc/rbinter/ix/31/00.html could be it, but the AX register looks like an invalid value (0x502) doesn't seem to correspond.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2387 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

ICR2 status update:

I've managed to patch icr2 to do these things:
1) Allocate a full block of RAM, as much as himem reports (register edx [EDIT]by change the int call's function function 0x09 to 0x89 which takes the entire value of the 32 bit EDX register instead of its lower 16 bits (DX) [/EDIT]) .
2) Register more than 65536 of RAM per memory block.
3) there's an int 31 call which does something strange and I have no idea what it's supposed to do. Need to find some documentation on dos/4gw. I have some info, but the specific call is missing. This call might be allocating selectors for memory blocks, but I don't know., if it is it needs to be changed to use a universal selector.

Rest assured the work is ongoing.

Last edited by sharangad on 2025-02-22, 07:22. Edited 1 time in total.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2389 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

@Makus, would you happen to know if this call requires memory allocated through a standard HIMEM call (function 0x09 or ox89) beforehand or whether this can be called directly. I'll be doing some tests on this later today:

INT 31 P - DPMIsee DOS Protected-Mode Interface 0.9+ - ALLOCATE MEMORY BLOCK
AX = 0501h
BX:CX = size in bytes
Return: CF clear if successful
BX:CX = linear address of block
SI:DI = memory block handle for resizing and freeing block
CF set on error
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #03143)
Notes: no selectors are allocated
the memory block is allocated unlocked (can be locked with AX=0600h)
allocations are often page granular (see AX=0604h)
under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
for this function to fail even if AX=0500h indicates that enough
memory is available
SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
SeeAlso: INT 2F/AX=FB42h/BX=0002h

For instance, can this be called independently of a main memory allocation from HIMEM or does it sub-allocate from an existing block?

I ask because ICR2 allocates memory from HIMEM and then this call is made. I would guess the HIMEM call is how dos4gw allocated RAM if HIMEM is present. This call (maybe) allocates from the block HIMEM supplied.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2390 of 2838, by Makus

User metadata
Rank Newbie
Rank
Newbie

@sharangad, I'm sorry but I'm not a professional programmer, I don't know this subject so in depth.

Reply 2391 of 2838, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

DPMI well this reminds me only a some games, Quake especially which not works without CWSDPMI.EXE, which allocate memory for 32bit DJGPP compiled apps/games. Some alternative to cwsdmpi I think I saw them.
https://github.com/jayschwa/cwsdpmi
HX DOS extender

For question nothing comes to mind.

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 2392 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

Thanks guys, I'm didn't have time to test this yesterday. I'm going to do this right now. Will post my results.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2393 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

It looks like the XMS handler address is a real pointer and not a flat 32 bit one which means calling it from dos4gw is difficult. There is a call to convert a real address to a flat address, but I'm not sure the xms handler can deal with it.

I should also try this with xms disabled, dos4gw also appears to work without it.

I should also try directly converting the address to a physical pointer. The address appears to be 0000:0010, which as a physical pointer would be 0x00000010, so not that different. Does anyone know if Call far [address] with seg:off address works in protected mode?

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2394 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

I got the Scorched Planet videos working without strobing and the menus render correctly (mostly). If anyone's interested I can post an Alpha, but it will be a very Alpha release because lots of things have been modified for ICR2 testing.

This won't make it to the store anytime soon.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2395 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

Figured out why ICR2 won't accept large texture heap sizes:

mov  es,[ebx]                   ds:[0037EEF0]=01800188 E
mov bp,[ebx+0006] ds:[0037EEF6]=0188 E
mov eax,[edi] ds:[003315A8]=00000501 E
mov ebx,[edi+0004] ds:[003315AC]=000004DA E
mov ecx,[edi+0008] ds:[003315B0]=0000FC57 E
mov edx,[edi+000C] ds:[003315B4]=00000000 E
mov esi,[edi+0010] ds:[003315B8]=00000006 E
mov edi,[edi+0014] ds:[003315BC]=00001317 E
mov ds,bp E
ret E
int 31 E

Int 31h is being used to allocate 0x04DAFC57 bytes (81460311 bytes ~80 MB from the memory pool allocated from HIMEM.SYS).
This call sets the carry flag (indicating failure) which causes this:

0180:002A6609  sbb  eax,eax                                           EAX:00000501 EBX:000004DA ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EEC4 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:0 OF:0 AF:0 PF:1 IF:1
0180:002A660B mov [edi+0018],eax ds:[003315C0]=00000000 EAX:FFFFFFFF EBX:000004DA ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EEC4 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A660E pop eax EAX:FFFFFFFF EBX:000004DA ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EEC4 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A660F pop ebx EAX:00000188 EBX:000004DA ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EEC8 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A6610 pop ebx EAX:00000188 EBX:003315A8 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EECC DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A6611 pop ebx EAX:00000188 EBX:00000188 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EED0 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A6612 mov [ebx+0006],ax ds:[0037EEF6]=0188 EAX:00000188 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EED4 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A6616 mov [ebx],es ds:[0037EEF0]=0188 EAX:00000188 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EED4 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A6619 pop es EAX:00000188 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EED4 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A661A pop ebp EAX:00000188 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:0037EEC0 ESP:0037EED8 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A661B ret EAX:00000188 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:003315A8 ESP:0037EEDC DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A12AF mov eax,[ebp] ss:[003315A8]=00000501 EAX:00000188 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:003315A8 ESP:0037EEE0 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A12B2 pop ebp EAX:00000501 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:003315A8 ESP:0037EEE0 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A12B3 pop edi EAX:00000501 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:003315A8 EBP:00000003 ESP:0037EEE4 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A12B4 pop esi EAX:00000501 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00000006 EDI:00331618 EBP:00000003 ESP:0037EEE8 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A12B5 ret EAX:00000501 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00331618 EDI:00331618 EBP:00000003 ESP:0037EEEC DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A1298 add esp,000C EAX:00000501 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00331618 EDI:00331618 EBP:00000003 ESP:0037EEF0 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
0180:002A129B pop ecx EAX:00000501 EBX:0037EEF0 ECX:0000FC57 EDX:00000000 ESI:00331618 EDI:00331618 EBP:00000003 ESP:0037EEFC DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:0 ZF:0 SF:0 OF:0 AF:0 PF:1 IF:1
0180:002A129C ret EAX:00000501 EBX:0037EEF0 ECX:04DAFC57 EDX:00000000 ESI:00331618 EDI:00331618 EBP:00000003 ESP:0037EF00 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:0 ZF:0 SF:0 OF:0 AF:0 PF:1 IF:1
0180:0028EE55 cmp dword [003315C0],0000 ds:[003315C0]=FFFFFFFF EAX:00000501 EBX:0037EEF0 ECX:04DAFC57 EDX:00000000 ESI:00331618 EDI:00331618 EBP:00000003 ESP:0037EF04 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:0 ZF:0 SF:0 OF:0 AF:0 PF:1 IF:1
0180:0028EE5C setz al EAX:00000501 EBX:0037EEF0 ECX:04DAFC57 EDX:00000000 ESI:00331618 EDI:00331618 EBP:00000003 ESP:0037EF04 DS:0188 ES:0188 FS:0000 GS:0020 SS:0188 CF:0 ZF:0 SF:1 OF:0 AF:0 PF:1 IF:1

This instruction should look like this if it's working

0180:0028EE55  cmp  dword [003315C0],0000      ds:[003315C0]=00000000

The failure is in int31, which suggests this should be fixable by patching Dos4/4GW.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2396 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

Sure enough this block of code fails in Dosbox-Rendition (and Staging-R) with 512 MB of RAM available:

int main(int argc, char* argv[])
{

union REGPACK r;
memset(&r, 0, sizeof(r));
r.w.ax = 0x0501;
r.w.bx = 0x000004DA;
r.w.cx = 0x0000FC57;

intr(0x31, &r);

if (r.w.flags & 0x01)
{
printf("Could not allocate memory\n");
}
else
printf("Allocated memory successfully\n");


return 0;
}

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2397 of 2838, by RaVeN-05

User metadata
Rank Oldbie
Rank
Oldbie

Call far seg:off
Interesting question, need practically to try it.
As for dos extenders like cwsdpmi or HX DOS extender, googling those answers they not alloc memory on real mode, only protected and max size ig 4gbytes

https://www.youtube.com/user/whitemagicraven
https://go.twitch.tv/whitemagicraventv

Reply 2398 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

Found the memory allocator block in Dos/4GW. Yup the memory code's all there.

Not entirely sure how feasible it is to turn a 16 bit variable into a 32 bit one. The RAM allocated (in KB) is stored at dword[0x0ECC].

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda

Reply 2399 of 2838, by sharangad

User metadata
Rank l33t
Rank
l33t

Dos4GW stores free mem in KB as a 16 bit value, so maximum size is 64 MB:

C849:00000015  callback 002E  (XMS Handler)                           EAX:00000800 EBX:00000301 ECX:00000A43 EDX:00000000 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001524 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:0 OF:0 AF:1 PF:0 IF:1
**** XMS: Querying Free Memory, total free 521792 (7F640), largest free 521792 (7F640)
C849:00000019 retf EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001524 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:0 OF:0 AF:1 PF:0 IF:1
03DA:00006CB6 sub ax,cs:[1DF5] cs:[00001DF5]=0000 EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:0 OF:0 AF:1 PF:0 IF:1
03DA:00006CBB jnc 00006CBF ($+2) (down) EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:1 OF:0 AF:0 PF:0 IF:1
03DA:00006CBF or ax,ax EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:1 OF:0 AF:0 PF:0 IF:1
03DA:00006CC1 mov [0ECE],ax ds:[00000ECE]=FFFE EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:1 OF:0 AF:0 PF:0 IF:1
03DA:00006CC4 je 00006D23 ($+5d) (no jmp) EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:1 OF:0 AF:0 PF:0 IF:1
03DA:00006CC6 cmp ax,[0ECC] ds:[00000ECC]=FBFE EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:1 OF:0 AF:0 PF:0 IF:1
03DA:00006CCA jc 00006CCF ($+3) (down) EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
03DA:00006CCF mov [0ECC],ax ds:[00000ECC]=FBFE EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
03DA:00006CD2 xchg dx,ax EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
03DA:00006CD3 mov ah,09 EAX:0007F640 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
03DA:00006CD5 call far word [0AEC] ds:[00000AEC]=0010 EAX:00070940 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
C849:00000010 jmp short 00000015 ($+3) (down) EAX:00070940 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001524 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
C849:00000015 callback 002E (XMS Handler) EAX:00070940 EBX:00000300 ECX:00000A43 EDX:0007F640 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001524 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
**** XMS: Allocating 64552960 (F640 kb) bytes (63040.000000 KB, 61.562500 MB)
C849:00000019 retf EAX:00070001 EBX:00000300 ECX:00000A43 EDX:00070001 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001524 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
03DA:00006CD9 or ax,ax EAX:00070001 EBX:00000300 ECX:00000A43 EDX:00070001 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:1 ZF:0 SF:1 OF:0 AF:1 PF:1 IF:1
03DA:00006CDB je 00006D23 ($+46) (no jmp) EAX:00070001 EBX:00000300 ECX:00000A43 EDX:00070001 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:0 OF:0 AF:0 PF:0 IF:1
03DA:00006CDD mov [0ADC],dx ds:[00000ADC]=0000 EAX:00070001 EBX:00000300 ECX:00000A43 EDX:00070001 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:0 OF:0 AF:0 PF:0 IF:1
03DA:00006CE1 mov ah,0C EAX:00070001 EBX:00000300 ECX:00000A43 EDX:00070001 ESI:00000000 EDI:00000A43 EBP:00001546 ESP:00001528 DS:01A2 ES:C849 FS:0000 GS:0000 SS:01A2 CF:0 ZF:0 SF:0 OF:0 AF:0 PF:0 IF:1
03DA:00006CE3 call far word [0AEC] ds:[00000AEC]=0010

In this case, Dos4GW isn't patched to use XMS function 0x89 (required memory size in EDX); it's using function 0x09 (required memory size in DX).

Last edited by sharangad on 2025-02-23, 09:18. Edited 2 times in total.

Developer of RReady - Rendition Verité Wrapper.
https://www.youtube.com/@sharangadayananda