59 lines
754 B
C
59 lines
754 B
C
#include <u.h>
|
|
#include "dat.h"
|
|
#include "fn.h"
|
|
|
|
|
|
void (*probe1[])(void) = {
|
|
a20up,
|
|
};
|
|
void (*probe2[])(void) = {
|
|
};
|
|
|
|
BootProbe probes[] = {
|
|
{"probing", probe1, elem(probe1) },
|
|
{"disk", probe2, elem(probe2) },
|
|
};
|
|
|
|
ConDev condev = {
|
|
.getc = pcgetc,
|
|
.putc = pcputc,
|
|
};
|
|
|
|
// https://wiki.osdev.org/BIOS
|
|
void
|
|
machdep(void)
|
|
{
|
|
for(int i = 0; i < elem(probes); ++i){
|
|
BootProbe bp = probes[i];
|
|
for(int j = 0; j < bp.cnt; ++j)
|
|
bp.probes[j]();
|
|
}
|
|
}
|
|
|
|
static void
|
|
puts(char *s)
|
|
{
|
|
for(;*s;++s)
|
|
putchar(*s);
|
|
}
|
|
|
|
void
|
|
boot(int bootdev)
|
|
{
|
|
char buf[8192];
|
|
|
|
machdep();
|
|
putchar('\n');
|
|
for(;;){
|
|
int i=0, c=0;
|
|
|
|
puts("\nboot >> ");
|
|
do{
|
|
c = getchar();
|
|
buf[i++] = c;
|
|
}while(c != '\n' && i < sizeof(buf) - 1);
|
|
buf[i-1] = 0;
|
|
puts(buf);
|
|
}
|
|
}
|