Skip to content

Int2f / 4a03 HMA detail got updated in RBIL #292

@andrewbird

Description

@andrewbird

At long last there's a facility for updating RBIL. After some detective work @ecm-pushbx has updated this page with findings from some HMA experiments. See here https://github.com/LoopZ/TheList/blob/main/source/Interrupt%20List/INT%202F%20Multiplex/Windows/INT%202F4A03%20Windows95%20DOS%20KERNEL%20DEALLOCATE%20HMA%20MEMORY%20BLOCK.txt. Anyway the salient part is that we now know what the Int2f/AX=4a03/DL=1 does. It's not realloc, but alloc in a downward direction from the top of the largest free block. I'm updating the HMA test, which now passes on MS-DOS 7.10, consequently FDPP will need to be updated to pass the test.

Here's an output from the updated test.

MS-DOS 7.10
C:\>c:\hmaalloc
INFO: Int2f/4a03, dl=0 alloc upwards
INFO: HMA size returned 48
INFO: HMA block allocated at FFFF:DFB0
INFO: "MS" // signature
INFO: 0274 // owner, our CS = 0274
INFO: 0030 // size (hex bytes)
INFO: DFE0 // offset to next HMA block
INFO: Int2f/4a03, dl=2 free (FFFF:DFB0)

INFO: Int2f/4a03, dl=1 alloc downwards
INFO: HMA size returned 64
INFO: HMA block (2) allocated at FFFF:EAC0
INFO: "MS" // signature
INFO: 0274 // owner, our CS = 0274
INFO: 0040 // size (hex bytes)
INFO: EB00 // offset to next HMA block
INFO: Int2f/4a03, dl=2 free (FFFF:EAC0)

PASS: HMA alloc fn03 / free successful

C:\>rem end
FDPP
C:\>c:\hmaalloc
INFO: Int2f/4a03, dl=0 alloc upwards
INFO: HMA size returned 48
INFO: HMA block allocated at FFFF:3D70
INFO: "MS" // signature
INFO: 02A5 // owner, our CS = 02A5
INFO: 0030 // size (hex bytes)
INFO: 3DA0 // offset to next HMA block
INFO: Int2f/4a03, dl=2 free (FFFF:3D70)

INFO: Int2f/4a03, dl=1 alloc downwards
INFO: HMA size returned 64
INFO: HMA block (2) allocated at FFFF:3D70
INFO: "MS" // signature
INFO: 02A5 // owner, our CS = 02A5
INFO: 0040 // size (hex bytes)
INFO: 3DB0 // offset to next HMA block
INFO: Int2f/4a03, dl=2 free (FFFF:3D70)

FAIL: second block address <= first block address

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions