static void autoexec(void) { struct { BYTE reserved[21]; BYTE attr; WORD time; WORD date; LONG size; BYTE name[14]; } dta; WORD err; if (kbshift(-1) & MODE_CTRL) /* check if Control is held down */ return; bootstrap(); /* try to boot the new OS kernel directly */ if( ! blkdev_avail(bootdev) ) /* check, if bootdev available */ return; trap1( 0x1a, &dta); /* Setdta */ err = trap1( 0x4e, "\\AUTO\\*.PRG", 7); /* Fsfirst */ while(err == 0) { #ifdef TARGET_PRG if (!strncmp(dta.name, "EMUTOS", 6)) { KDEBUG(("Skipping %s from AUTO folder\n", dta.name)); } else #endif { run_auto_program(dta.name); /* Setdta. BetaDOS corrupted the AUTO load if the Setdta * not repeated here */ trap1( 0x1a, &dta); } err = trap1( 0x4f ); /* Fsnext */ } }
/* * Routine to load in desk accessories. Files by the name of *.ACC * will be loaded. */ static void ldaccs(void) { register WORD i; WORD ret; strcpy(&D.g_dir[0], "*.ACC"); dos_sdta((LONG)D.g_dta); /* if Control is held down then skip loading of accs */ if ((kbshift(-1) & (1<<2))) return; ret = TRUE; for(i=0; (i<NUM_ACCS) && (ret); i++) { ret = (i==0) ? dos_sfirst(D.g_dir, F_RDONLY) : dos_snext(); if (ret) sndcli(&gl_dta[30]); } }
static LONG bios_b(WORD flag) { return kbshift(flag); }