-
Notifications
You must be signed in to change notification settings - Fork 160
Open
Description
This is the affected part:
Lines 435 to 444 in 5de2eb1
| if (FP_SEG(buf) >= 0xa000 && numblocks == 1 && bufloc != LOC_CONV) | |
| { | |
| IoReqHdr.r_trans = deblock_buf; | |
| if (mode == DSKWRITE) | |
| fmemcpy(deblock_buf, buf, dpbp->dpb_secsize); | |
| execrh((request FAR *) & IoReqHdr, dpbp->dpb_device); | |
| if (mode == DSKREAD) | |
| fmemcpy(buf, deblock_buf, dpbp->dpb_secsize); | |
| } | |
| else |
If I call int 25h using the lDebug l F001:0 A: 0 1 command (there's a free UMB in my dosemu2 setup at this address) then this code is tripped. The problem is that according to
Lines 412 to 414 in 5de2eb1
| case DSKREADINT25: | |
| case DSKREAD: | |
| IoReqHdr.r_command = C_INPUT; |
DSKREADINT25 but this isn't recognised by the bounce code, which expects only DSKREAD for a read.
This can also be demonstrated by running the lDebug command l F001:0 A: 0 2 which doesn't trip the bounce (despite it likely should) and actually reads the data into the UMB.
The write side for int 26h is likely affected in the same way.
Metadata
Metadata
Assignees
Labels
No labels