/* * Character I/O */ /* * print a string */ #include "boot.h" extern putchar (); prs (a) char *a; { for (; *a; a++) { if (*a == '\n') putchar ('\r'); putchar (*a); } } /* * Run a single command on a disk controller */ run (state, status) char *state, *status; { *status = BUSY; *state = ACTIVE; devwait (status); } /* * wait for a contoller status to change */ #define TIME 170000 devwait (a) char *a; { long t; for (t = TIME; t; t--) if (*a != BUSY) break; #ifdef DEBUG if (t == 0) prs ("Timeout.\n"); #endif } /* prn (a) unsigned a; { unsigned b; if (b = a / 16) prn (b); putchar ("0123456789abcdef" [a % 16]); } */