git-svn-id: https://spexeah.com:8443/svn/Asuro@496 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
parent
7303cb9dd7
commit
82a497430f
BIN
bin/kernel.bin
BIN
bin/kernel.bin
Binary file not shown.
Binary file not shown.
BIN
lib/E1000.ppu
BIN
lib/E1000.ppu
Binary file not shown.
BIN
lib/IDE.ppu
BIN
lib/IDE.ppu
Binary file not shown.
BIN
lib/PCI.ppu
BIN
lib/PCI.ppu
Binary file not shown.
BIN
lib/USB.ppu
BIN
lib/USB.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/console.o
BIN
lib/console.o
Binary file not shown.
BIN
lib/console.ppu
BIN
lib/console.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/eth2.ppu
BIN
lib/eth2.ppu
Binary file not shown.
BIN
lib/gdt.ppu
BIN
lib/gdt.ppu
Binary file not shown.
BIN
lib/idt.ppu
BIN
lib/idt.ppu
Binary file not shown.
BIN
lib/ipv4.ppu
BIN
lib/ipv4.ppu
Binary file not shown.
BIN
lib/irq.ppu
BIN
lib/irq.ppu
Binary file not shown.
BIN
lib/isr.ppu
BIN
lib/isr.ppu
Binary file not shown.
BIN
lib/isr0.ppu
BIN
lib/isr0.ppu
Binary file not shown.
BIN
lib/isr1.ppu
BIN
lib/isr1.ppu
Binary file not shown.
BIN
lib/isr10.ppu
BIN
lib/isr10.ppu
Binary file not shown.
BIN
lib/isr11.ppu
BIN
lib/isr11.ppu
Binary file not shown.
BIN
lib/isr12.ppu
BIN
lib/isr12.ppu
Binary file not shown.
BIN
lib/isr13.ppu
BIN
lib/isr13.ppu
Binary file not shown.
BIN
lib/isr14.ppu
BIN
lib/isr14.ppu
Binary file not shown.
BIN
lib/isr15.ppu
BIN
lib/isr15.ppu
Binary file not shown.
BIN
lib/isr16.ppu
BIN
lib/isr16.ppu
Binary file not shown.
BIN
lib/isr17.ppu
BIN
lib/isr17.ppu
Binary file not shown.
BIN
lib/isr18.ppu
BIN
lib/isr18.ppu
Binary file not shown.
BIN
lib/isr2.ppu
BIN
lib/isr2.ppu
Binary file not shown.
BIN
lib/isr3.ppu
BIN
lib/isr3.ppu
Binary file not shown.
BIN
lib/isr32.ppu
BIN
lib/isr32.ppu
Binary file not shown.
BIN
lib/isr33.ppu
BIN
lib/isr33.ppu
Binary file not shown.
BIN
lib/isr4.ppu
BIN
lib/isr4.ppu
Binary file not shown.
BIN
lib/isr40.ppu
BIN
lib/isr40.ppu
Binary file not shown.
BIN
lib/isr44.ppu
BIN
lib/isr44.ppu
Binary file not shown.
BIN
lib/isr5.ppu
BIN
lib/isr5.ppu
Binary file not shown.
BIN
lib/isr6.ppu
BIN
lib/isr6.ppu
Binary file not shown.
BIN
lib/isr7.ppu
BIN
lib/isr7.ppu
Binary file not shown.
BIN
lib/isr76.ppu
BIN
lib/isr76.ppu
Binary file not shown.
BIN
lib/isr8.ppu
BIN
lib/isr8.ppu
Binary file not shown.
BIN
lib/isr9.ppu
BIN
lib/isr9.ppu
Binary file not shown.
BIN
lib/kernel.ppu
BIN
lib/kernel.ppu
Binary file not shown.
BIN
lib/keyboard.ppu
BIN
lib/keyboard.ppu
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
lib/libpsystem.a
BIN
lib/libpsystem.a
Binary file not shown.
BIN
lib/lists.ppu
BIN
lib/lists.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/mouse.ppu
BIN
lib/mouse.ppu
Binary file not shown.
BIN
lib/net.ppu
BIN
lib/net.ppu
Binary file not shown.
BIN
lib/netutils.ppu
BIN
lib/netutils.ppu
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
lib/strings.ppu
BIN
lib/strings.ppu
Binary file not shown.
BIN
lib/terminal.ppu
BIN
lib/terminal.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/tss.ppu
BIN
lib/tss.ppu
Binary file not shown.
BIN
lib/util.ppu
BIN
lib/util.ppu
Binary file not shown.
Binary file not shown.
@ -37,6 +37,8 @@ procedure init();
|
||||
procedure clear();
|
||||
procedure setdefaultattribute(attribute : char);
|
||||
|
||||
procedure disable_cursor;
|
||||
|
||||
procedure writechar(character : char);
|
||||
procedure writecharln(character : char);
|
||||
procedure writecharex(character : char; attributes : char);
|
||||
@ -121,6 +123,12 @@ var
|
||||
Console_Matrix : P2DVideoMemory = P2DVideoMemory($C00b8000);
|
||||
Console_Cursor : TCoord;
|
||||
|
||||
procedure disable_cursor;
|
||||
begin
|
||||
outb($3D4, $0A);
|
||||
outb($3D5, $20);
|
||||
end;
|
||||
|
||||
procedure init(); [public, alias: 'console_init'];
|
||||
Begin
|
||||
Console_Properties.Default_Attribute:= console.combinecolors(White, Black);
|
||||
|
@ -3,6 +3,7 @@ unit USB;
|
||||
interface
|
||||
|
||||
uses
|
||||
tracer,
|
||||
Console,
|
||||
PCI,
|
||||
drivertypes,
|
||||
@ -49,6 +50,7 @@ var
|
||||
MMR : POHCI_MMR;
|
||||
|
||||
begin
|
||||
push_trace('USB.loadOHCI');
|
||||
devices:= PCI.getDeviceInfo($0C, $03, $10, count);
|
||||
console.output('USB-OHCI Driver', 'Found ');
|
||||
console.writeint(count);
|
||||
@ -70,6 +72,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
loadOHCI:= true;
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
function loadUHCI(ptr : void) : boolean;
|
||||
@ -79,6 +82,7 @@ var
|
||||
i : uint32;
|
||||
|
||||
begin
|
||||
push_trace('USB.loadUHCI');
|
||||
devices:= PCI.getDeviceInfo($0C, $03, $00, count);
|
||||
console.output('USB-UHCI Driver','Found ');
|
||||
console.writeint(count);
|
||||
@ -96,6 +100,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
loadUHCI:= true;
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure init;
|
||||
@ -103,6 +108,7 @@ var
|
||||
UHCI_ID, OHCI_ID : TDeviceIdentifier;
|
||||
|
||||
begin
|
||||
push_trace('USB.init');
|
||||
console.outputln('USB Driver', 'INIT BEGIN.');
|
||||
|
||||
UHCI_ID.Bus:= biPCI;
|
||||
@ -125,6 +131,7 @@ begin
|
||||
drivermanagement.register_driver('USB-OHCI Driver', @OHCI_ID, @loadOHCI);
|
||||
|
||||
console.outputln('USB Driver', 'INIT END.');
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
end.
|
@ -3,7 +3,7 @@ unit testdriver;
|
||||
interface
|
||||
|
||||
uses
|
||||
console, drivermanagement;
|
||||
tracer, console, drivermanagement;
|
||||
|
||||
procedure init;
|
||||
|
||||
@ -11,7 +11,9 @@ implementation
|
||||
|
||||
function load(ptr : void) : boolean;
|
||||
begin
|
||||
console.outputln('DUMMY DRIVER', 'LOADED.')
|
||||
push_trace('testdriver.load');
|
||||
console.outputln('DUMMY DRIVER', 'LOADED.');
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure init;
|
||||
@ -19,6 +21,7 @@ var
|
||||
devID : TDeviceIdentifier;
|
||||
|
||||
begin
|
||||
push_trace('testdriver.init');
|
||||
devID.bus:= biPCI; { PCI BUS }
|
||||
devID.id0:= idANY; { ANY DEVICE ID }
|
||||
devID.id1:= $00000006; { CLASS }
|
||||
@ -27,6 +30,7 @@ begin
|
||||
devID.id4:= idANY;
|
||||
devID.ex:= nil; { NO EXTENDED INFO }
|
||||
drivermanagement.register_driver('DUMMY DRIVER', @devID, @load);
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
end.
|
13
src/idt.pas
13
src/idt.pas
@ -45,6 +45,12 @@ procedure set_gate(Number : uint8; Base : uint32; Selector : uint16; Flags : uin
|
||||
|
||||
implementation
|
||||
|
||||
procedure load(idt_pointer : uint32); assembler; nostackframe;
|
||||
asm
|
||||
MOV EAX, idt_pointer
|
||||
LIDT [EAX]
|
||||
end;
|
||||
|
||||
procedure set_gate(Number : uint8; Base : uint32; Selector : uint16; Flags : uint8);
|
||||
begin
|
||||
IDT_Entries[Number].base_high:= (Base and $FFFF0000) SHR 16;
|
||||
@ -55,12 +61,7 @@ begin
|
||||
console.output('IDT','GATE ');
|
||||
console.writeint(Number);
|
||||
console.writestringln(' SET.');
|
||||
end;
|
||||
|
||||
procedure load(idt_pointer : uint32); assembler; nostackframe;
|
||||
asm
|
||||
MOV EAX, idt_pointer
|
||||
LIDT [EAX]
|
||||
load(uint32(@IDT_Pointer));
|
||||
end;
|
||||
|
||||
procedure init();
|
||||
|
@ -16,6 +16,7 @@ interface
|
||||
uses
|
||||
bios_data_area, tracer;
|
||||
|
||||
function INTE : boolean;
|
||||
procedure CLI();
|
||||
procedure STI();
|
||||
procedure GPF();
|
||||
@ -32,6 +33,7 @@ procedure outl(port : uint16; val : uint32);
|
||||
function inb(port : uint16) : uint8;
|
||||
function inw(port : uint16) : uint16;
|
||||
function inl(port : uint16) : uint32;
|
||||
procedure io_wait;
|
||||
|
||||
procedure memset(location : uint32; value : uint8; size : uint32);
|
||||
procedure memcpy(source : uint32; dest : uint32; size : uint32);
|
||||
@ -52,6 +54,38 @@ implementation
|
||||
uses
|
||||
console;
|
||||
|
||||
function INTE : boolean;
|
||||
var
|
||||
flags : uint32;
|
||||
begin
|
||||
asm
|
||||
PUSH EAX
|
||||
PUSHF
|
||||
POP EAX
|
||||
MOV flags, EAX
|
||||
POP EAX
|
||||
end;
|
||||
INTE:= (flags AND (1 SHL 9)) > 0;
|
||||
end;
|
||||
|
||||
procedure io_wait;
|
||||
var
|
||||
port : uint8;
|
||||
val : uint8;
|
||||
begin
|
||||
port:= $80;
|
||||
val:= 0;
|
||||
asm
|
||||
PUSH EAX
|
||||
PUSH EDX
|
||||
MOV DX, port
|
||||
MOV AL, val
|
||||
OUT DX, AL
|
||||
POP EDX
|
||||
POP EAX
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure printmemory(source : uint32; length : uint32; col : uint32; delim : PChar; offset_row : boolean);
|
||||
var
|
||||
buf : puint8;
|
||||
@ -269,6 +303,7 @@ var
|
||||
z : uint32;
|
||||
|
||||
begin
|
||||
disable_cursor;
|
||||
if not BSOD_ENABLE then exit;
|
||||
console.setdefaultattribute(console.combinecolors(white, Red));
|
||||
console.clear;
|
||||
|
10
src/irq.pas
10
src/irq.pas
@ -21,15 +21,25 @@ procedure init();
|
||||
begin
|
||||
console.outputln('IRQ','INIT START.');
|
||||
outb($20, $11);
|
||||
io_wait;
|
||||
outb($A0, $11);
|
||||
io_wait;
|
||||
outb($21, $20);
|
||||
io_wait;
|
||||
outb($A1, $28);
|
||||
io_wait;
|
||||
outb($21, $04);
|
||||
io_wait;
|
||||
outb($A1, $02);
|
||||
io_wait;
|
||||
outb($21, $01);
|
||||
io_wait;
|
||||
outb($A1, $01);
|
||||
io_wait;
|
||||
outb($21, $00);
|
||||
io_wait;
|
||||
outb($A1, $00);
|
||||
io_wait;
|
||||
console.outputln('IRQ','INIT END.');
|
||||
end;
|
||||
|
||||
|
@ -97,9 +97,11 @@ var
|
||||
|
||||
|
||||
begin
|
||||
{ Store Multiboot info }
|
||||
multibootinfo:= mbinfo;
|
||||
multibootmagic:= mbmagic;
|
||||
|
||||
{ Ensure tracer is frozen }
|
||||
tracer.freeze();
|
||||
|
||||
{ Console Init }
|
||||
@ -144,16 +146,25 @@ begin
|
||||
tss.init();
|
||||
scheduler.init();
|
||||
|
||||
{ Management Interfaces }
|
||||
{ Call Tracer }
|
||||
tracer.init();
|
||||
|
||||
{ Management Interfaces }
|
||||
tracer.push_trace('kmain.DRVMGMT');
|
||||
drivermanagement.init();
|
||||
tracer.pop_trace;
|
||||
tracer.push_trace('kmain.STRMGMT');
|
||||
storagemanagement.init();
|
||||
tracer.pop_trace;
|
||||
|
||||
{ Hook Timer for Ticks }
|
||||
tracer.push_trace('kmain.TMR');
|
||||
STI;
|
||||
isr32.hook(uint32(@bios_data_area.tick_update));
|
||||
tracer.pop_trace;
|
||||
|
||||
{ Device Drivers }
|
||||
tracer.push_trace('kmain.DEVDRV');
|
||||
console.outputln('KERNEL', 'DEVICE DRIVERS: INIT BEGIN.');
|
||||
keyboard.init(keyboard_layout);
|
||||
mouse.init();
|
||||
@ -161,26 +172,36 @@ begin
|
||||
E1000.init();
|
||||
IDE.init();
|
||||
console.outputln('KERNEL', 'DEVICE DRIVERS: INIT END.');
|
||||
tracer.pop_trace;
|
||||
|
||||
{ Bus Drivers }
|
||||
tracer.push_trace('kmain.BUSDRV');
|
||||
console.outputln('KERNEL', 'BUS DRIVERS: INIT BEGIN.');
|
||||
USB.init();
|
||||
pci.init();
|
||||
console.outputln('KERNEL', 'BUS DRIVERS: INIT END.');
|
||||
|
||||
tracer.pop_trace;
|
||||
|
||||
{ Network Stack }
|
||||
tracer.push_trace('kmain.NETDRV');
|
||||
net.init;
|
||||
tracer.pop_trace;
|
||||
|
||||
{ End of Boot }
|
||||
tracer.push_trace('kmain.EOB');
|
||||
console.writestringln('');
|
||||
console.setdefaultattribute(console.combinecolors(Green, Black));
|
||||
console.writestringln('Asuro Booted Correctly!');
|
||||
console.setdefaultattribute(console.combinecolors(White, Black));
|
||||
console.writestringln('');
|
||||
console.writestringln('Press any key to boot in to Asuro Terminal...');
|
||||
tracer.pop_trace;
|
||||
|
||||
tracer.push_trace('kmain.KEYHOOK');
|
||||
keyboard.hook(@temphook);
|
||||
tracer.pop_trace;
|
||||
|
||||
tracer.push_trace('kmain.END');
|
||||
util.halt_and_dont_catch_fire;
|
||||
end;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user