diff --git a/kernel/config.c b/kernel/config.c index 33b62c7..9b08cea 100644 --- a/kernel/config.c +++ b/kernel/config.c @@ -1714,12 +1714,11 @@ STATIC void config_init_buffers(int wantedbuffers) else { LoL->bufloc = LOC_HMA; - LoL->deblock_buf = KernelAlloc(SEC_SIZE, 'B', 0); /* space in HMA beyond requested buffers available as user space */ firstAvailableBuf = pbuffer + wantedbuffers; } } - + LoL->deblock_buf = DiskTransferBuffer; LoL->firstbuf = pbuffer; DebugPrintf(("init_buffers (size %u) at", sizeof(struct buffer))); diff --git a/kernel/fatfs.c b/kernel/fatfs.c index 2da5e1a..764666a 100644 --- a/kernel/fatfs.c +++ b/kernel/fatfs.c @@ -2085,6 +2085,9 @@ STATIC int rqblockio(unsigned char command, struct dpb FAR * dpbp) MediaReqHdr.r_command = command; MediaReqHdr.r_mcmdesc = dpbp->dpb_mdb; MediaReqHdr.r_status = 0; + + if (command == C_BLDBPB) /* help USBASPI.SYS & DI1000DD.SYS (TE) */ + MediaReqHdr.r_bpfat = (boot FAR *)DiskTransferBuffer; execrh((request FAR *) & MediaReqHdr, dpbp->dpb_device); if ((MediaReqHdr.r_status & S_ERROR) || !(MediaReqHdr.r_status & S_DONE)) { diff --git a/kernel/globals.h b/kernel/globals.h index 1489896..b99f195 100644 --- a/kernel/globals.h +++ b/kernel/globals.h @@ -336,6 +336,7 @@ extern UBYTE ASM BootDrive, /* Drive we came up from */ extern keyboard ASM kb_buf; extern char ASM local_buffer[LINEBUFSIZE0A]; +extern UBYTE DiskTransferBuffer[SEC_SIZE]; extern struct cds ASM TempCDS; diff --git a/kernel/init-mod.h b/kernel/init-mod.h index 15380ea..d9416b0 100644 --- a/kernel/init-mod.h +++ b/kernel/init-mod.h @@ -271,6 +271,8 @@ extern UWORD DOSFAR LBA_WRITE_VERIFY; /* floppy parameter table, at 70:xxxx */ extern unsigned char DOSTEXTFAR ASM int1e_table[0xe]; +extern char DOSTEXTFAR DiskTransferBuffer[SEC_SIZE]; /* in dsk.c */ + struct RelocationTable { UBYTE jmpFar; UWORD jmpOffset;