void mauINIT() { textattr(atrINIT); cprintf("\nStarting Memory Allocation Unit..."); textattr(atrBORDER); cprintf("\n\tMemory: "); textattr(atrIMPTEXT); cprintf("%ld", mem); textattr(atrBORDER); cprintf(" kB"); // povolenie linky A20 EnableA20(); cprintf("\n\tLink A20 enabled..."); // max. pocet poloziek if (mem < MAX_ITEMS) max_items = mem - 36; else max_items = MAX_ITEMS - 36; // cistenie tabulky pamate clear_mem(); // zaciatok alokovania pamate MemStart = MK_FP(0x3400,0); //(fyzicka adresa) textattr(atrBORDER); cprintf("\n\tFree memory: "); textattr(atrIMPTEXT); cprintf("%ld", coreleft()); textattr(atrBORDER); cputs(" kB"); }
void main(int argc, char *argv[]) { int i; unsigned short port; void v86task(void); SetUpGDT(); EnableA20(); SetUpIDT(3); InitDisp(); SetV86(v86task); SetUpV86IOmon(); if (argc < 2) { fprintf(stderr, "usage: %s port-number...", argv[0]); exit(1); } for (i=1; i<argc; i++) { sscanf(argv[i], "%x", &port); SetV86IOmonAddr(port); } RealToV86(); }