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

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