Compare commits
10 Commits
1.1.2
...
189526cab8
Author | SHA1 | Date | |
---|---|---|---|
189526cab8 | |||
595dd4fbac | |||
ba6d8037d2 | |||
208bda92c8 | |||
4c5038b001 | |||
98481ea1ce | |||
346dc4e4c9 | |||
b2eee58df4 | |||
170b93dd69 | |||
34d6873a6a |
@ -61,11 +61,13 @@ docgen:
|
|||||||
script:
|
script:
|
||||||
- ./compile_sourcelist.sh
|
- ./compile_sourcelist.sh
|
||||||
- ./compile_docs.sh
|
- ./compile_docs.sh
|
||||||
- ln -s doc public
|
# Remove comments when we want to use gitlab pages.
|
||||||
|
#- cp doc public
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- doc
|
||||||
- ./sources.list
|
#- public/*
|
||||||
|
#- ./sources.list
|
||||||
needs:
|
needs:
|
||||||
- versions
|
- versions
|
||||||
|
@ -4,4 +4,4 @@ echo "======================="
|
|||||||
echo " "
|
echo " "
|
||||||
echo "Compiling FPC Sources..."
|
echo "Compiling FPC Sources..."
|
||||||
echo " "
|
echo " "
|
||||||
fpc -Aelf -gw -n -va -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* src/kernel.pas
|
fpc -Aelf -gw -g -gl -n -vlewn -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -CfSSE -CfSSE2 -Rintel -Pi386 -Tlinux -FElib/ -Fusrc/* -Fusrc/driver/* -Fusrc/driver/net/* src/kernel.pas
|
@ -2,7 +2,7 @@ ENTRY(loader)
|
|||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0xC0100000;
|
. = 0xC0100000;
|
||||||
|
kernel_start = .;
|
||||||
.text : AT(ADDR(.text) - 0xC0000000)
|
.text : AT(ADDR(.text) - 0xC0000000)
|
||||||
{
|
{
|
||||||
text = .; _text = .; __text = .;
|
text = .; _text = .; __text = .;
|
||||||
@ -33,4 +33,5 @@ SECTIONS
|
|||||||
. = ALIGN(4096);
|
. = ALIGN(4096);
|
||||||
}
|
}
|
||||||
end = .; _end = .; __end = .;
|
end = .; _end = .; __end = .;
|
||||||
|
kernel_end = .;
|
||||||
}
|
}
|
||||||
|
@ -31,11 +31,11 @@ We welcome everyone to give building/breaking/fixing/shooting Asuro a go, feel f
|
|||||||
7. Clone this repository.
|
7. Clone this repository.
|
||||||
8. Run the following command in the root of the repo to build the docker image:
|
8. Run the following command in the root of the repo to build the docker image:
|
||||||
```powershell
|
```powershell
|
||||||
docker-compose build builder
|
docker compose build builder
|
||||||
```
|
```
|
||||||
9. Run the following command to compile Asuro:
|
9. Run the following command to compile Asuro:
|
||||||
```powershell
|
```powershell
|
||||||
docker-compose run builder
|
docker compose run builder
|
||||||
```
|
```
|
||||||
10. Create a new virtual machine in Virtualbox and mount the `Asuro.iso` generated in step 9 as a boot image.
|
10. Create a new virtual machine in Virtualbox and mount the `Asuro.iso` generated in step 9 as a boot image.
|
||||||
11. Add the virtualbox installation directory to your `%PATH%` environment variable, usually:
|
11. Add the virtualbox installation directory to your `%PATH%` environment variable, usually:
|
||||||
@ -78,4 +78,4 @@ We welcome everyone to give building/breaking/fixing/shooting Asuro a go, feel f
|
|||||||
14. Congratulations! You can now play with Asuro!
|
14. Congratulations! You can now play with Asuro!
|
||||||
|
|
||||||
### Gotchas
|
### Gotchas
|
||||||
- It was noted that Windows builds above `20H2` seem to have issues installing WSL2. We may have to wait for a patch from Microsoft to fix this. Our devs are currently using build `20H2`.
|
- It was noted that Windows builds above `20H2` seem to have issues installing WSL2. We may have to wait for a patch from Microsoft to fix this. Our devs are currently using build `20H2`.
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
Include->Strings - String Manipulation.
|
Include->Strings - String Manipulation.
|
||||||
|
|
||||||
@author(Kieron Morris <kjm@kieronmorris.me>)
|
@author(Kieron Morris <kjm@kieronmorris.me>)
|
||||||
|
@author(Aaron Hance <ah@aaronhance.me>)
|
||||||
}
|
}
|
||||||
unit strings;
|
unit strings;
|
||||||
|
|
||||||
@ -33,6 +34,10 @@ function stringCopy(str : pchar) : pchar;
|
|||||||
function stringNew(size : uint32) : pchar;
|
function stringNew(size : uint32) : pchar;
|
||||||
function stringSize(str : pchar) : uint32;
|
function stringSize(str : pchar) : uint32;
|
||||||
function stringConcat(str1, str2 : pchar) : pchar;
|
function stringConcat(str1, str2 : pchar) : pchar;
|
||||||
|
function stringTrim(str : pchar; length : uint32) : pchar;
|
||||||
|
function stringSub(str : pchar; start, size : uint32) : pchar;
|
||||||
|
function stringReplace(str, find, replace : pchar) : pchar;
|
||||||
|
function stringIndexOf(str, find : pchar) : sint32;
|
||||||
function stringContains(str : pchar; sub : pchar) : boolean;
|
function stringContains(str : pchar; sub : pchar) : boolean;
|
||||||
function stringToInt(str : pchar) : uint32;
|
function stringToInt(str : pchar) : uint32;
|
||||||
function hexStringToInt(str : pchar) : uint32;
|
function hexStringToInt(str : pchar) : uint32;
|
||||||
@ -151,6 +156,94 @@ begin
|
|||||||
stringConcat:= result;
|
stringConcat:= result;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// Trim the string to the specified length.
|
||||||
|
function stringTrim(str : pchar; length : uInt32) : pchar;
|
||||||
|
var
|
||||||
|
result : pchar;
|
||||||
|
begin
|
||||||
|
result:= stringNew(length);
|
||||||
|
memcpy(uint32(str), uint32(result), length);
|
||||||
|
stringTrim:= result;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Return a substring of the string.
|
||||||
|
function stringSub(str : pchar; start, size : uint32) : pchar;
|
||||||
|
var
|
||||||
|
result : pchar;
|
||||||
|
begin
|
||||||
|
result:= stringNew(size);
|
||||||
|
memcpy(uint32(str)+start, uint32(result), size);
|
||||||
|
stringSub:= result;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Replace first instance of a string with another.
|
||||||
|
function stringReplace(str, find, replace : pchar) : pchar;
|
||||||
|
var
|
||||||
|
result : pchar;
|
||||||
|
i, j, k : uint32;
|
||||||
|
found : boolean;
|
||||||
|
begin
|
||||||
|
|
||||||
|
// Find the first instance of the find string.
|
||||||
|
i:= 0;
|
||||||
|
found:= false;
|
||||||
|
while (i < stringSize(str)) and (not found) do begin
|
||||||
|
if stringEquals(str+i, find) then begin
|
||||||
|
found:= true;
|
||||||
|
end else begin
|
||||||
|
inc(i);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// If we found the find string, replace it.
|
||||||
|
if found then begin
|
||||||
|
result:= stringNew(stringSize(str) - stringSize(find) + stringSize(replace));
|
||||||
|
j:= 0;
|
||||||
|
k:= 0;
|
||||||
|
while i < stringSize(str) do begin
|
||||||
|
if stringEquals(str+i, find) then begin
|
||||||
|
memcpy(uint32(replace), uint32(result+j), stringSize(replace));
|
||||||
|
j:= j + stringSize(replace);
|
||||||
|
inc(i, stringSize(find));
|
||||||
|
end else begin
|
||||||
|
result[j]:= str[i];
|
||||||
|
inc(j);
|
||||||
|
inc(i);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
stringReplace:= result;
|
||||||
|
end else begin
|
||||||
|
stringReplace:= stringCopy(str);
|
||||||
|
end;
|
||||||
|
|
||||||
|
// Return the result.
|
||||||
|
stringReplace:= result;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
// Find the index of the first instance of a string.
|
||||||
|
function stringIndexOf(str, find : pchar) : sint32;
|
||||||
|
var
|
||||||
|
i : uint32;
|
||||||
|
found : boolean;
|
||||||
|
begin
|
||||||
|
i:= 0;
|
||||||
|
found:= false;
|
||||||
|
while (i < stringSize(str)) and (not found) do begin
|
||||||
|
if stringEquals(str+i, find) then begin
|
||||||
|
found:= true;
|
||||||
|
end else begin
|
||||||
|
inc(i);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if found then begin
|
||||||
|
stringIndexOf:= i;
|
||||||
|
end else begin
|
||||||
|
stringIndexOf:= -1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function stringContains(str : pchar; sub : pchar) : boolean;
|
function stringContains(str : pchar; sub : pchar) : boolean;
|
||||||
var
|
var
|
||||||
strEnd, subEnd, i, j, count : uint32;
|
strEnd, subEnd, i, j, count : uint32;
|
||||||
|
@ -143,6 +143,22 @@ type
|
|||||||
|
|
||||||
PText = ^Text;
|
PText = ^Text;
|
||||||
|
|
||||||
|
var
|
||||||
|
AK_START : uint32; external name 'kernel_start';
|
||||||
|
AK_END : uint32; external name 'kernel_end';
|
||||||
|
ASURO_KERNEL_START : uint32;
|
||||||
|
ASURO_KERNEL_END : uint32;
|
||||||
|
ASURO_KERNEL_SIZE : uint32;
|
||||||
|
|
||||||
|
procedure init();
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
procedure init();
|
||||||
|
begin
|
||||||
|
ASURO_KERNEL_START := uint32(@AK_START);
|
||||||
|
ASURO_KERNEL_END := uint32(@AK_END);
|
||||||
|
ASURO_KERNEL_SIZE:= ASURO_KERNEL_END - ASURO_KERNEL_START;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -125,6 +125,9 @@ var
|
|||||||
HM : PHashMap;
|
HM : PHashMap;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
{ Init the base system unit }
|
||||||
|
System.init();
|
||||||
|
|
||||||
{ Serial Init }
|
{ Serial Init }
|
||||||
serial.init();
|
serial.init();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user