Fixed IRQs(ish)+

git-svn-id: https://spexeah.com:8443/svn/Asuro@69 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
kieron 2017-05-17 15:45:34 +00:00
parent d54e43cca9
commit 96dfb38124
40 changed files with 37 additions and 6 deletions

BIN
Asuro.iso

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -15,6 +15,8 @@ uses
util,
bios_data_area;
const DEBUG = FALSE;
type
TColor = ( Black = $0,
Blue = $1,
@ -371,7 +373,7 @@ begin
end;
Console_Cursor.X:= 0;
console._update_cursor;
psleep(500);
if DEBUG then psleep(500);
end;
procedure _newline(); [public, alias: '_console_newline'];

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Divide by Zero Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Debug Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Bad TSS Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Segment Not Present Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Stack Fault Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('General Protection Fault.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Page Fault.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Unknown Interrupt Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Coprocessor Fault Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Alignment Check Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Machine Check Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('NMI Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Breakpoint Exception');
util.halt_and_catch_fire;
end;

View File

@ -28,12 +28,13 @@ implementation
procedure Main; interrupt; //IRQ0, called every 55ms
begin
//CLI;
CLI;
console.writestringln('helo1');
if(procedure_ptr <> nil) then begin
procedure_ptr();
end;
outb($20, $20);
STI;
end;
procedure register();

View File

@ -28,12 +28,13 @@ implementation
procedure Main; interrupt; //IRQ1, Keyboard Interrupt
begin
//CLI;
CLI;
console.writestringln('helo2');
if(procedure_ptr <> nil) then begin
procedure_ptr(inb($60));
end;
outb($20, $20);
STI;
end;
procedure register();

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('IDO Exception.');
util.halt_and_catch_fire;
end;

View File

@ -28,12 +28,13 @@ implementation
procedure Main; interrupt; //IRQ0, called every 55ms
begin
//CLI;
CLI;
console.writestringln('helo3');
if(procedure_ptr <> nil) then begin
procedure_ptr();
end;
outb($20, $20);
STI;
end;
procedure register();

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('OOB Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,8 +23,8 @@ implementation
procedure Main(); interrupt;
begin
console.writestringln('Invalid OPCode Exception.');
CLI;
console.writestringln('Invalid OPCode Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('No Coprocessor Exception.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Double Fault.');
util.halt_and_catch_fire;
end;

View File

@ -23,6 +23,7 @@ implementation
procedure Main(); interrupt;
begin
CLI;
console.writestringln('Coprocessor Seg Overrun Exception.');
util.halt_and_catch_fire;
end;

View File

@ -44,6 +44,8 @@ begin
isr.init();
irq.init();
asm STI end;
asm
MOV dds, CS
end;

View File

@ -14,6 +14,7 @@ unit util;
interface
procedure CLI();
procedure STI();
function hi(b : uint8) : uint8;
function lo(b : uint8) : uint8;
function switchendian(b : uint8) : uint8;
@ -45,6 +46,11 @@ asm
CLI
end;
procedure STI(); assembler; nostackframe;
asm
STI
end;
function switchendian(b : uint8) : uint8; [public, alias: 'util_switchendian'];
begin
switchendian:= (lo(b) SHL 4) OR hi(b);