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
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
FDPP