Standardized to standard types in types.pas

git-svn-id: https://spexeah.com:8443/svn/Asuro@31 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
kieron 2017-05-16 22:25:41 +00:00
parent 7da445635c
commit 7a24ea11ba
17 changed files with 186 additions and 161 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.

View File

@ -4,24 +4,24 @@ interface
type
TBDA = bitpacked record
COM1 : WORD;
COM2 : WORD;
COM3 : WORD;
COM4 : WORD;
LPT1 : WORD;
LPT2 : WORD;
LPT3 : WORD;
EBDA : WORD;
Hardware_Flags : WORD;
Keyboard_Flags : WORD;
Keyboard_Buffer : ARRAY[0..31] OF BYTE;
Display_Mode : BYTE;
BaseIO : WORD;
Ticks : WORD;
HDD_Count : BYTE;
Keyboard_Start : WORD;
Keyboard_End : WORD;
Keyboard_State : Byte;
COM1 : uint16;
COM2 : uint16;
COM3 : uint16;
COM4 : uint16;
LPT1 : uint16;
LPT2 : uint16;
LPT3 : uint16;
EBDA : uint16;
Hardware_Flags : uint16;
Keyboard_Flags : uint16;
Keyboard_Buffer : ARRAY[0..31] OF uint8;
Display_Mode : uint8;
BaseIO : uint16;
Ticks : uint16;
HDD_Count : uint8;
Keyboard_Start : uint16;
Keyboard_End : uint16;
Keyboard_State : uint8;
end;
PBDA = ^TBDA;

View File

@ -26,33 +26,33 @@ type
procedure init();
procedure clear();
procedure setdefaultattribute(attribute : char);
procedure setdefaultattribute(attribute : sint8);
procedure writechar(character : char);
procedure writestring(str: PChar);
procedure writeint(i: Integer);
procedure writeword(i: DWORD);
procedure writehex(i: DWORD);
procedure writechar(character : sint8);
procedure writestring(str: psint8);
procedure writeint(i: sint32);
procedure writeword(i: uint32);
procedure writehex(i: uint32);
procedure writecharln(character : char);
procedure writestringln(str: PChar);
procedure writeintln(i: Integer);
procedure writewordln(i: DWORD);
procedure writehexln(i: DWORD);
procedure writecharln(character : sint8);
procedure writestringln(str: psint8);
procedure writeintln(i: sint32);
procedure writewordln(i: uint32);
procedure writehexln(i: uint32);
procedure writecharex(character : char; attributes : char);
procedure writestringex(str: PChar; attributes : char);
procedure writeintex(i: Integer; attributes : char);
procedure writewordex(i: DWORD; attributes : char);
procedure writehexex(i : DWORD; attributes : char);
procedure writecharex(character : sint8; attributes : sint8);
procedure writestringex(str: psint8; attributes : sint8);
procedure writeintex(i: sint32; attributes : sint8);
procedure writewordex(i: uint32; attributes : sint8);
procedure writehexex(i : uint32; attributes : sint8);
procedure writecharlnex(character : char; attributes : char);
procedure writestringlnex(str: PChar; attributes : char);
procedure writeintlnex(i: Integer; attributes : char);
procedure writewordlnex(i: DWORD; attributes : char);
procedure writehexlnex(i: DWORD; attributes : char);
procedure writecharlnex(character : sint8; attributes : sint8);
procedure writestringlnex(str: psint8; attributes : sint8);
procedure writeintlnex(i: sint32; attributes : sint8);
procedure writewordlnex(i: uint32; attributes : sint8);
procedure writehexlnex(i: uint32; attributes : sint8);
function combinecolors(Foreground, Background : TColor) : char;
function combinecolors(Foreground, Background : TColor) : sint8;
procedure _increment_x();
procedure _increment_y();
@ -64,12 +64,12 @@ implementation
type
TConsoleProperties = record
Default_Attribute : Char;
Default_Attribute : sint8;
end;
TCharacter = bitpacked record
Character : Char;
Attributes : Char;
Character : sint8;
Attributes : sint8;
end;
PCharacter = ^TCharacter;
@ -80,8 +80,8 @@ type
P2DVideoMemory = ^T2DVideoMemory;
TCoord = record
X : Byte;
Y : Byte;
X : uint8;
Y : uint8;
end;
var
@ -98,7 +98,7 @@ end;
procedure clear(); [public, alias: 'console_clear'];
var
x,y: Byte;
x,y: uint8;
begin
for x:=0 to 79 do begin
@ -111,64 +111,64 @@ begin
Console_Cursor.Y:= 0;
end;
procedure setdefaultattribute(attribute: char); [public, alias: 'console_setdefaultattribute'];
procedure setdefaultattribute(attribute: sint8); [public, alias: 'console_setdefaultattribute'];
begin
Console_Properties.Default_Attribute:= attribute;
end;
procedure writechar(character: char); [public, alias: 'console_writechar'];
procedure writechar(character: sint8); [public, alias: 'console_writechar'];
begin
console.writecharex(character, Console_Properties.Default_Attribute);
end;
procedure writestring(str: PChar); [public, alias: 'console_writestring'];
procedure writestring(str: psint8); [public, alias: 'console_writestring'];
begin
console.writestringex(str, Console_Properties.Default_Attribute);
end;
procedure writeint(i: Integer); [public, alias: 'console_writeint'];
procedure writeint(i: sint32); [public, alias: 'console_writeint'];
begin
console.writeintex(i, Console_Properties.Default_Attribute);
end;
procedure writeword(i: DWORD); [public, alias: 'console_writeword'];
procedure writeword(i: uint32); [public, alias: 'console_writeword'];
begin
console.writewordex(i, Console_Properties.Default_Attribute);
end;
procedure writecharln(character: char); [public, alias: 'console_writecharln'];
procedure writecharln(character: sint8); [public, alias: 'console_writecharln'];
begin
console.writecharlnex(character, Console_Properties.Default_Attribute);
end;
procedure writestringln(str: PChar); [public, alias: 'console_writestringln'];
procedure writestringln(str: psint8); [public, alias: 'console_writestringln'];
begin
console.writestringlnex(str, Console_Properties.Default_Attribute);
end;
procedure writeintln(i: Integer); [public, alias: 'console_writeintln'];
procedure writeintln(i: sint32); [public, alias: 'console_writeintln'];
begin
console.writeintlnex(i, Console_Properties.Default_Attribute);
end;
procedure writewordln(i: DWORD); [public, alias: 'console_writewordln'];
procedure writewordln(i: uint32); [public, alias: 'console_writewordln'];
begin
console.writewordlnex(i, Console_Properties.Default_Attribute);
end;
procedure writecharex(character: char; attributes: char); [public, alias: 'console_writecharex'];
procedure writecharex(character: sint8; attributes: sint8); [public, alias: 'console_writecharex'];
begin
Console_Matrix^[Console_Cursor.Y][Console_Cursor.X].Character:= character;
Console_Matrix^[Console_Cursor.Y][Console_Cursor.X].Attributes:= attributes;
console._safeincrement_x();
end;
procedure writehexex(i : dword; attributes: char); [public, alias: 'console_writehexex'];
procedure writehexex(i : uint32; attributes: sint8); [public, alias: 'console_writehexex'];
var
Hex : Array[0..7] of Byte;
Res : DWORD;
Rem : DWORD;
c : Integer;
Hex : Array[0..7] of uint8;
Res : uint32;
Rem : uint32;
c : sint32;
begin
for c:=0 to 7 do begin
@ -209,25 +209,25 @@ begin
end;
end;
procedure writehex(i : dword); [public, alias: 'console_writehex'];
procedure writehex(i : uint32); [public, alias: 'console_writehex'];
begin
console.writehexex(i, Console_Properties.Default_Attribute);
end;
procedure writehexlnex(i : dword; attributes : char);
procedure writehexlnex(i : uint32; attributes : sint8);
begin
console.writehexex(i, attributes);
console._safeincrement_y();
end;
procedure writehexln(i : dword);
procedure writehexln(i : uint32);
begin
writehexlnex(i, Console_Properties.Default_Attribute);
end;
procedure writestringex(str: PChar; attributes: char); [public, alias: 'console_writestringex'];
procedure writestringex(str: psint8; attributes: sint8); [public, alias: 'console_writestringex'];
var
i : integer;
i : sint32;
begin
i:= 0;
@ -237,11 +237,11 @@ begin
end;
end;
procedure writeintex(i: Integer; attributes : char); [public, alias: 'console_writeintex'];
procedure writeintex(i: sint32; attributes : sint8); [public, alias: 'console_writeintex'];
var
buffer: array [0..11] of Char;
str: PChar;
digit: DWORD;
buffer: array [0..11] of sint8;
str: psint8;
digit: uint32;
minus: Boolean;
begin
str := @buffer[11];
@ -255,7 +255,7 @@ begin
end;
repeat
Dec(str);
str^ := Char((digit mod 10) + Byte('0'));
str^ := sint8((digit mod 10) + uint8('0'));
digit := digit div 10;
until (digit = 0);
if (minus) then begin
@ -265,11 +265,11 @@ begin
console.writestringex(str, attributes);
end;
procedure writewordex(i: DWORD; attributes : char); [public, alias: 'console_writedwordex'];
procedure writewordex(i: uint32; attributes : sint8); [public, alias: 'console_writedwordex'];
var
buffer: array [0..11] of Char;
str: PChar;
digit: DWORD;
buffer: array [0..11] of sint8;
str: psint8;
digit: uint32;
begin
for digit := 0 to 10 do buffer[digit] := '0';
str := @buffer[11];
@ -277,45 +277,45 @@ begin
digit := i;
repeat
Dec(str);
str^ := Char((digit mod 10) + Byte('0'));
str^ := sint8((digit mod 10) + uint8('0'));
digit := digit div 10;
until (digit = 0);
console.writestringex(@Buffer[0], attributes);
end;
procedure writecharlnex(character: char; attributes: char); [public, alias: 'console_writecharlnex'];
procedure writecharlnex(character: sint8; attributes: sint8); [public, alias: 'console_writecharlnex'];
begin
console.writecharex(character, attributes);
console._safeincrement_y();
end;
procedure writestringlnex(str: PChar; attributes: char); [public, alias: 'console_writestringlnex'];
procedure writestringlnex(str: sint8; attributes: sint8); [public, alias: 'console_writestringlnex'];
begin
console.writestringex(str, attributes);
console._safeincrement_y();
end;
procedure writeintlnex(i: Integer; attributes: char); [public, alias: 'console_writeintlnex'];
procedure writeintlnex(i: sint32; attributes: sint8); [public, alias: 'console_writeintlnex'];
begin
console.writeintex(i, attributes);
console._safeincrement_y();
end;
procedure writewordlnex(i: DWORD; attributes: char); [public, alias: 'console_writewordlnex'];
procedure writewordlnex(i: uint32; attributes: sint8); [public, alias: 'console_writewordlnex'];
begin
console.writewordex(i, attributes);
console._safeincrement_y();
end;
function combinecolors(Foreground, Background: TColor): char; [public, alias: 'console_combinecolors'];
function combinecolors(Foreground, Background: TColor): sint8; [public, alias: 'console_combinecolors'];
begin
combinecolors:= char(((ord(Background) shl 4) or ord(Foreground)));
combinecolors:= sint8(((ord(Background) shl 4) or ord(Foreground)));
end;
procedure _update_cursor(); [public, alias: '_console_update_cursor'];
var
pos : word;
b : byte;
pos : uint16;
b : uint8;
begin
pos:= (Console_Cursor.Y * 80) + Console_Cursor.X;
@ -366,7 +366,7 @@ end;
procedure _newline(); [public, alias: '_console_newline'];
var
x, y : byte;
x, y : uint8;
begin
for x:=0 to 79 do begin

View File

@ -7,18 +7,18 @@ uses
type
TGDT_Entry = bitpacked record
limit_low : int16;
base_low : int16;
base_middle : int8;
access : int8;
granularity : int8;
base_high : int8;
limit_low : uint16;
base_low : uint16;
base_middle : uint8;
access : uint8;
granularity : uint8;
base_high : uint8;
end;
PGDT_Entry = ^TGDT_Entry;
TGDT_Pointer = bitpacked record
limit : int16;
base : int32;
limit : uint16;
base : uint32;
end;
var
@ -29,7 +29,7 @@ procedure init();
implementation
procedure flush_gdt(gdt_pointer : int32); assembler; nostackframe;
procedure flush_gdt(gdt_pointer : uint32); assembler; nostackframe;
asm
MOV EAX, gdt_pointer
LGDT [EAX]
@ -40,13 +40,11 @@ asm
MOV GS, AX
MOV SS, AX
db $EA // Bypass stupid inline ASM restrictions-
dw @@flush, $08 // by assembling the farjump instruction ourselves.
// It's just data, honest gov'.
@@flush:
RET
dw @@flush, $08 // by assembling the farjump instruction ourselves.
@@flush: // It's just data, honest gov'.
end;
procedure set_gate(Gate_Number : int32; Base : int32; Limit : int32; Access : int8; Granularity : int8);
procedure set_gate(Gate_Number : uint32; Base : uint32; Limit : uint32; Access : uint8; Granularity : uint8);
begin
gdt_entries[Gate_Number].base_low := (Base AND $FFFF);
gdt_entries[Gate_Number].base_middle := (Base SHR 16) AND $FF;
@ -59,13 +57,13 @@ end;
procedure init();
begin
gdt_pointer.limit := (sizeof(TGDT_Entry) * 5) - 1;
gdt_pointer.base := int32(@gdt_entries);
gdt_pointer.base := uint32(@gdt_entries);
set_gate($00, $00, $00, $00, $00);
set_gate($01, $00, $FFFFFFFF, $9A, $CF);
set_gate($02, $00, $FFFFFFFF, $92, $CF);
set_gate($03, $00, $FFFFFFFF, $FA, $CF);
set_gate($04, $00, $FFFFFFFF, $F2, $CF);
flush_gdt(int32(@gdt_pointer))
flush_gdt(uint32(@gdt_pointer))
end;
end.

16
src/idt.pas Normal file
View File

@ -0,0 +1,16 @@
unit idt;
interface
uses
system,
types;
type
TIDT_Entry = bitpacked record
end;
implementation
end.

View File

@ -14,12 +14,12 @@ procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: DWORD); stdcall;
implementation
procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: DWORD); stdcall; [public, alias: 'kmain'];
procedure kmain(mbinfo: Pmultiboot_info_t; mbmagic: uint32); stdcall; [public, alias: 'kmain'];
var
c : byte;
c : uint8;
mbi : Pmultiboot_info_t;
mbm : DWORD;
dds : DWORD;
mbm : uint32;
dds : uint32;
begin
mbi:= mbinfo;
@ -41,8 +41,6 @@ begin
console.setdefaultattribute(console.combinecolors(Red, Black));
if dds = $08 then console.setdefaultattribute(console.combinecolors(Green, Black));
console.writehexln(dds);
util.halt_and_catch_fire;
console.setdefaultattribute(console.combinecolors(Green, Black));
console.writestringln('Asuro Booted Correctly!');
console.writestringln('');
@ -57,11 +55,11 @@ begin
console.writeint(((mbinfo^.mem_upper + 1000) div 1024) +1);
console.writestringln('MB');
console.setdefaultattribute(console.combinecolors(lYellow, Black));
while true do begin
{while true do begin
c:= keyboard.get_scancode;
console.writehexln(c);
end;
util.halt_and_catch_fire;
util.halt_and_catch_fire;}
end;
end.

View File

@ -7,13 +7,13 @@ interface
uses
util;
function get_scancode() : byte;
function get_scancode() : uint8;
implementation
function get_scancode() : byte; [public, alias: 'get_scancode'];
function get_scancode() : uint8; [public, alias: 'get_scancode'];
var
c : byte;
c : uint8;
begin
c:= 0;

View File

@ -9,40 +9,40 @@ const
type
Pelf_section_header_table_t = ^elf_section_header_table_t;
elf_section_header_table_t = packed record
num: DWORD;
size: DWORD;
addr: DWORD;
shndx: DWORD;
num: uint32;
size: uint32;
addr: uint32;
shndx: uint32;
end;
Pmultiboot_info_t = ^multiboot_info_t;
multiboot_info_t = packed record
flags: DWORD;
mem_lower: DWORD;
mem_upper: DWORD;
boot_device: DWORD;
cmdline: DWORD;
mods_count: DWORD;
mods_addr: DWORD;
flags: uint32;
mem_lower: uint32;
mem_upper: uint32;
boot_device: uint32;
cmdline: uint32;
mods_count: uint32;
mods_addr: uint32;
elf_sec: elf_section_header_table_t;
mmap_length: DWORD;
mmap_addr: DWORD;
mmap_length: uint32;
mmap_addr: uint32;
end;
Pmodule_t = ^module_t;
module_t = packed record
mod_start: DWORD;
mod_end: DWORD;
name: DWORD;
reserved: DWORD;
mod_start: uint32;
mod_end: uint32;
name: uint32;
reserved: uint32;
end;
Pmemory_map_t = ^memory_map_t;
memory_map_t = packed record
size: DWORD;
base_addr : QWORD;
length : QWORD;
mtype: DWORD;
size: uint32;
base_addr : uint64;
length : uint64;
mtype: uint32;
end;
implementation

View File

@ -4,21 +4,34 @@ interface
type
//Standard Types
Int8 = BYTE;
Int16 = WORD;
Int32 = DWORD;
Int64 = QWORD;
uInt8 = BYTE;
uInt16 = WORD;
uInt32 = DWORD;
uInt64 = QWORD;
sInt8 = shortint;
sInt16 = smallint;
sInt32 = integer;
sInt64 = longint;
Float = Single;
//Pointer Types
PByte = ^Byte;
PInt8 = PByte;
PInt16 = ^Int16;
PInt32 = ^Int32;
PInt64 = ^Int64;
PuByte = ^Byte;
PuInt8 = PuByte;
PuInt16 = ^uInt16;
PuInt32 = ^uInt32;
PuInt64 = ^uInt64;
Void = ^Int32;
PsInt8 = ^sInt8;
PsInt16 = ^sInt16;
PsInt32 = ^sInt32;
PsInt64 = ^sInt64;
PFloat = ^Float;
PDouble = ^Double;
Void = ^uInt32;
implementation

View File

@ -4,35 +4,35 @@ unit util;
interface
function hi(b : byte) : byte;
function lo(b : byte) : byte;
function switchendian(b : byte) : byte;
procedure outb(port : word; val : byte);
procedure outw(port : word; val : word);
procedure outl(port : word; val : longword);
function hi(b : uint8) : uint8;
function lo(b : uint8) : uint8;
function switchendian(b : uint8) : uint8;
procedure outb(port : uint16; val : uint8);
procedure outw(port : uint16; val : uint16);
procedure outl(port : uint16; val : uint32);
procedure halt_and_catch_fire();
function inb(port : word) : byte;
function inw(port : word) : word;
function inl(port : word) : dword;
function inb(port : uint16) : uint8;
function inw(port : uint16) : uint16;
function inl(port : uint16) : uint32;
implementation
function hi(b : byte) : byte; [public, alias: 'util_hi'];
function hi(b : uint8) : uint8; [public, alias: 'util_hi'];
begin
hi:= (b AND $F0) SHR 4;
end;
function lo(b : byte) : byte; [public, alias: 'util_lo'];
function lo(b : uint8) : uint8; [public, alias: 'util_lo'];
begin
lo:= b AND $0F;
end;
function switchendian(b : byte) : byte; [public, alias: 'util_switchendian'];
function switchendian(b : uint8) : uint8; [public, alias: 'util_switchendian'];
begin
switchendian:= (lo(b) SHL 4) OR hi(b);
end;
procedure outl(port : word; val : longword); [public, alias: 'util_outl'];
procedure outl(port : uint16; val : uint32); [public, alias: 'util_outl'];
begin
asm
PUSH EAX
@ -45,7 +45,7 @@ begin
end;
end;
procedure outw(port : word; val : word); [public, alias: 'util_outw'];
procedure outw(port : uint16; val : uint16); [public, alias: 'util_outw'];
begin
asm
PUSH EAX
@ -58,7 +58,7 @@ begin
end;
end;
procedure outb(port : word; val : byte); [public, alias: 'util_outb'];
procedure outb(port : uint16; val : uint8); [public, alias: 'util_outb'];
begin
asm
PUSH EAX
@ -79,7 +79,7 @@ begin
end;
end;
function inl(port : word) : dword; [public, alias: 'util_inl'];
function inl(port : uint16) : uint32; [public, alias: 'util_inl'];
begin
asm
PUSH EAX
@ -92,7 +92,7 @@ begin
end;
end;
function inw(port : word) : word; [public, alias: 'util_inw'];
function inw(port : uint16) : uint16; [public, alias: 'util_inw'];
begin
asm
PUSH EAX
@ -105,7 +105,7 @@ begin
end;
end;
function inb(port : word) : byte; [public, alias: 'util_inb'];
function inb(port : uint16) : uint8; [public, alias: 'util_inb'];
begin
asm
PUSH EAX