# include "bi.h" biosread () { static char *p; static s; p = biosbuf; for (s = BIOSSTART; s < BIOSEND; s++, p += RECSIZE) { if (sio (READ, p, BIOSTRACK, s)) { fatal ("Can't read bios\n"); } } } bioswrite () { static char *p; static s; p = biosbuf; for (s = BIOSSTART; s < BIOSEND; s++, p += RECSIZE) if (sio (WRITE, p, BIOSTRACK, s, s == BIOSEND - 1)) fatal ("Can't write bios\n"); } sio (op, addr, track, sector, last) { static char selected [5] = {NO}; bios (SETDRV, drive, selected[drive]); selected[drive] = YES; bios (SETTRK, track, 0); bios (SETSEC, sector, 0); bios (SETDMA, addr, 0); if (op == READ) return bios (BIORED, 0, 0); else return bios (BIOWRT, last, 0); } cputc (a) char a; { if (a == '\n') cpm (PUTC, '\r'); cpm (PUTC, a); } prs (a) { cputs (a); } put (a) { cputs (a); } cputs (a) register char *a; { for (; *a; a++) cputc (*a); } prn (a) { prs (itoa (a)); } char * itoa (a) { static char buf [8]; buf [itob (buf, a, 16)] = NULL; return buf; } putchar (a) { cputc (a); } getch () { static char c; c = cpm (GETC); if (c == 3) exit (); c &= 0177; c = tolower (c); return c; } fatal (a) char *a; { put (a); exit (NO); }