File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed
Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -1922,6 +1922,7 @@ extern intvec FAR ASM BIOSInt19;
19221922/* WARNING: modifications in `r' are used outside of int2F_12_handler()
19231923 * On input r.AX==0x12xx, 0x4A01 or 0x4A02
19241924 * also handle Windows' DOS notification hooks, r.AH==0x16 and r.AH==0x13
1925+ * along with DRIVER.SYS/DRIVPARAM r.AH=0x08 calls
19251926 */
19261927VOID ASMCFUNC int2F_12_handler (struct int2f12regs FAR * pr )
19271928{
@@ -2203,6 +2204,30 @@ VOID ASMCFUNC int2F_12_handler(struct int2f12regs FAR *pr)
22032204#endif
22042205 return ;
22052206 }
2207+ else if (r .AH == 0x08 ) /* DRIVER.SYS / DRIVPARAM */
2208+ {
2209+ switch (r .AL )
2210+ {
2211+ case 0x00 : /* installation check */
2212+ r .AL = 0xff ; /* installed, 0=not installed */
2213+ break ;
2214+
2215+ case 0x01 : /* add new block device */
2216+ /* TODO, see push_ddt() */
2217+ break ;
2218+
2219+ case 0x02 : /* execute device driver request */
2220+ /* TODO */
2221+ break ;
2222+
2223+ case 0x03 : /* get drive data table */
2224+ r .DS = FP_SEG (& nul_dev );
2225+ r .DI = FP_OFF (getddt (0 ));
2226+ break ;
2227+ }
2228+
2229+ return ;
2230+ }
22062231 /* else (r.AH == 0x12) */
22072232
22082233 switch (r .AL )
Original file line number Diff line number Diff line change @@ -340,6 +340,9 @@ STATIC void init_kernel(void)
340340 LoL -> lastdrive = 26 ;
341341
342342 /* init_device((struct dhdr FAR *)&blk_dev, NULL, 0, &ram_top); */
343+ /* WARNING: dsk_init() must be called prior to update_dcb() to ensure
344+ _Dyn (start of Dynamic memory block) is the start of drive data table (see getddt() in dsk.c)
345+ */
343346 blk_dev .dh_name [0 ] = dsk_init ();
344347
345348 PreConfig ();
You can’t perform that action at this time.
0 commit comments