#include "arch/lapic.h" #include "boot/startup_ap.h" #include "debug/output.h" #include "arch/cga.h" #include "arch/textwindow.h" #include "arch/serial.h" #include "device/serialstream.h" // Main function // (the bootstrap processor starts here)} extern "C" int main() { unsigned int numCPUs = Core::count(); DBG_VERBOSE << "Number of CPUs: " << numCPUs << endl; ////test cga implemantation //CGA::setCursor(1, 2); //unsigned x,y; //CGA::getCursor(x, y); //CGA::setCursor(x+1, y+1); //for(uint8_t i = 0; i < 10; i++) // CGA::show(i, i, i+0x30, CGA::Attribute()); ////test textwindow implemantation //TextWindow tw_global = TextWindow(0, 80, 0, 25, true); //tw_global.reset(' ', CGA::Attribute(CGA::LIGHT_GREEN, CGA::BLUE, false)); //TextWindow tw = TextWindow(0, 10, 0, 10, true); //tw.reset(); //tw.setPos(0,0); //tw.print("lorem ipsum dolor sit amit", 26); //tw.setPos(0,-1); //tw.print("test", 4, CGA::Attribute(CGA::BLACK, CGA::BLUE)); //int x,y; //tw.getPos(x,y); //tw.setPos(x+1,y); ////test Serial //Serial s = Serial(); //s.write('a'); // test SerialStream SerialStream ss = SerialStream(); ss.print("test", 4); ss.setAttribute(SerialStream::UNDERSCORE); ss.print("test", 4); ss.setAttribute(SerialStream::RESET); ss.setForeground(SerialStream::MAGENTA); ss.print("test", 4); ss.setBackground(SerialStream::CYAN); ss.print("test", 4); ss.setPos(10, 10); ss.print("test\n", 5); ss.setBackground(SerialStream::BLACK); kout << "Test -> " << endl; kout << "bool: " << true << " -> true" << endl; kout << "zero: " << 0 << " -> 0" << endl; kout << "binary: " << bin << 42 << dec << " -> 0b101010" << endl; kout << "octal: " << oct << 42 << dec << " -> 052" << endl; kout << "hex: " << hex << 42 << dec << " -> 0x2a" << endl; kout << "uint64_t max: " << ~((uint64_t)0) << " -> 18446744073709551615" << endl; kout << "int64_t max: " << ~(1ll<<63) << " -> 9223372036854775807" << endl; kout << "int64_t min: " << (1ll<<63) << " -> -9223372036854775808" << endl; kout << "some int64_t: " << (-1234567890123456789) << " -> -1234567890123456789" << endl; kout << "some int64_t: " << (1234567890123456789) << " -> 1234567890123456789" << endl; kout << "pointer: " << reinterpret_cast(1994473406541717165ull) << " -> 0x1badcafefee1dead" << endl; kout << "smiley: " << static_cast(1) << endl; /* Start application processors * To avoid unexpected behaviour, make sure that interrupts are not * enabled before the APs are booted. Otherwise it might interfere with the * Startup IPIs or even block devices like keyboard because of a missing EOI */ ApplicationProcessor::boot(); return 0; } // Main function for application processors extern "C" int main_ap() { DBG_VERBOSE << "CPU core " << static_cast(Core::getID()) << " / LAPIC " << static_cast(LAPIC::getID()) << " in main_ap()" << endl; return 0; }