Compare commits
32
Commits
1.1.3
...
07e9095582
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07e9095582 | ||
|
|
72769fbef7 | ||
|
|
95599c0e7c | ||
|
|
fcaafa0d12 | ||
|
|
e490b95f1d | ||
|
|
b601080960 | ||
|
|
27177979a2 | ||
|
|
f88a282893 | ||
|
|
ff4c597ff3 | ||
|
|
24c371cab1 | ||
|
|
7588a4c9cb | ||
|
|
5cb415c76b | ||
|
|
118d8b0c03 | ||
|
|
28caca3bcc | ||
|
|
6476a774dc | ||
|
|
e791edb02a | ||
|
|
da36f6fabb | ||
|
|
97e1a18253 | ||
|
|
88a850e8fc | ||
|
|
10c9194c5f | ||
|
|
346dc4e4c9 | ||
|
|
b2eee58df4 | ||
|
|
170b93dd69 | ||
|
|
34d6873a6a | ||
|
|
e69d06ea4f | ||
|
|
2939afa729 | ||
|
|
ad8e80913a | ||
|
|
33cb042b8c | ||
|
|
4d25ceef77 | ||
|
|
439d4ef8ac | ||
|
|
94b477d8f7 | ||
|
|
ba38f4fd19 |
No files matched your search
@@ -10,5 +10,3 @@
|
||||
/*.sh~
|
||||
/*.img
|
||||
src/include/asuro.pas
|
||||
.vscode/launch.json
|
||||
.vscode
|
||||
+28
-54
@@ -1,25 +1,23 @@
|
||||
stages:
|
||||
- Generate Stub and Versions
|
||||
- Generate Version Files
|
||||
- Compile Versions
|
||||
- Compile Sources
|
||||
- Link
|
||||
- Generate ISO
|
||||
- Generate Sources List
|
||||
- Generate Documentation
|
||||
- Deploy
|
||||
|
||||
compile_stub:
|
||||
stage: Generate Stub and Versions
|
||||
script:
|
||||
- chmod +x ./compile_stub.sh
|
||||
- ./compile_stub.sh
|
||||
artifacts:
|
||||
cache:
|
||||
- key: ${CI_COMMIT_REF_SLUG}
|
||||
paths:
|
||||
- lib/stub.o
|
||||
- lib/*.o
|
||||
- bin/kernel.bin
|
||||
- doc
|
||||
|
||||
vergen:
|
||||
stage: Generate Stub and Versions
|
||||
before_script:
|
||||
- chmod +x *.sh
|
||||
|
||||
versions:
|
||||
stage: Compile Versions
|
||||
script:
|
||||
- chmod +x ./compile_vergen.sh
|
||||
- ./compile_vergen.sh
|
||||
artifacts:
|
||||
paths:
|
||||
@@ -29,71 +27,47 @@ vergen:
|
||||
compile_sources:
|
||||
stage: Compile Sources
|
||||
script:
|
||||
- chmod +x ./compile_sources.sh
|
||||
- rm -f lib/*.so
|
||||
- ./compile_sources.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- lib/*.o
|
||||
dependencies:
|
||||
- compile_stub
|
||||
- vergen
|
||||
needs:
|
||||
- vergen
|
||||
- compile_stub
|
||||
- versions
|
||||
|
||||
link:
|
||||
stage: Link
|
||||
script:
|
||||
- chmod +x ./compile_link.sh
|
||||
- ./compile_stub.sh
|
||||
- ./compile_link.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- bin/kernel.bin
|
||||
dependencies:
|
||||
- compile_sources
|
||||
needs:
|
||||
- versions
|
||||
- compile_sources
|
||||
|
||||
isogen:
|
||||
stage: Generate ISO
|
||||
stage: Deploy
|
||||
script:
|
||||
- chmod +x ./compile_isogen.sh
|
||||
- ./compile_isogen.sh
|
||||
- chmod +x ./compile_sumgen.sh
|
||||
- ./compile_sumgen.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- ./Asuro.iso
|
||||
- ./release/checksum.svg
|
||||
dependencies:
|
||||
- link
|
||||
needs:
|
||||
- link
|
||||
|
||||
sourcelist:
|
||||
stage: Generate Sources List
|
||||
script:
|
||||
- chmod +x ./compile_sourcelist.sh
|
||||
- ./compile_sourcelist.sh
|
||||
artifacts:
|
||||
paths:
|
||||
- ./sources.list
|
||||
dependencies:
|
||||
- vergen
|
||||
needs:
|
||||
- vergen
|
||||
|
||||
docgen:
|
||||
stage: Generate Documentation
|
||||
only:
|
||||
- master
|
||||
- develop
|
||||
script:
|
||||
- chmod +x ./compile_docs.sh
|
||||
- ./compile_sourcelist.sh
|
||||
- ./compile_docs.sh
|
||||
# Remove comments when we want to use gitlab pages.
|
||||
#- cp doc public
|
||||
allow_failure: true
|
||||
artifacts:
|
||||
paths:
|
||||
- ./doc/*
|
||||
dependencies:
|
||||
- vergen
|
||||
- sourcelist
|
||||
- doc
|
||||
#- public/*
|
||||
#- ./sources.list
|
||||
needs:
|
||||
- vergen
|
||||
- sourcelist
|
||||
- versions
|
||||
Vendored
+3
-10
@@ -3,18 +3,11 @@
|
||||
{
|
||||
"name":"Run",
|
||||
"request": "launch",
|
||||
"type": "coreclr",
|
||||
"type": "PowerShell",
|
||||
"preLaunchTask": "Build",
|
||||
"program": "VBoxSDL",
|
||||
"args": [
|
||||
"--comment",
|
||||
"Asuro",
|
||||
"--startvm",
|
||||
"7d395c96-891c-4139-b77d-9b6b144b0b93"
|
||||
],
|
||||
"script": "${workspaceFolder}/virtualbox-wrapper.ps1",
|
||||
"args": ["-MachineName", "7d395c96-891c-4139-b77d-9b6b144b0b93"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
-9
@@ -2,18 +2,22 @@ FROM ubuntu:latest
|
||||
|
||||
VOLUME ["/code"]
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN dpkg --add-architecture i386
|
||||
RUN apt-get update
|
||||
RUN apt-get install nasm curl make:i386 binutils:i386 xorriso grub-pc-bin dos2unix -y
|
||||
RUN apt-get clean
|
||||
RUN curl https://sourceforge.net/projects/freepascal/files/Linux/2.6.4/fpc-2.6.4.i386-linux.tar/download --output fpc.tar -L && \
|
||||
tar -xf fpc.tar
|
||||
RUN apt-get update && apt-get install -y \
|
||||
curl dos2unix wget git make nasm binutils:i386 xorriso grub-pc-bin && \
|
||||
apt-get clean my room
|
||||
|
||||
WORKDIR ./fpc-2.6.4.i386-linux
|
||||
RUN ./install.sh
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
ARG FPC_VERSION=2.6.4
|
||||
RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSION/fpc-$FPC_VERSION.i386-linux.tar/download | tar -xf - && \
|
||||
pushd fpc-$FPC_VERSION.i386-linux && ./install.sh && popd && \
|
||||
rm -rf fpc-$FPC_VERSION.i386-linux
|
||||
|
||||
COPY compile.sh /compile.sh
|
||||
RUN mkdir /code
|
||||
ADD https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver /usr/bin/semver
|
||||
RUN mkdir /code && chmod +x /usr/bin/semver
|
||||
WORKDIR /code
|
||||
RUN find . -type f -print0 | xargs -0 dos2unix
|
||||
ENTRYPOINT ["/bin/bash", "/compile.sh"]
|
||||
ENTRYPOINT ["/bin/bash", "-c"]
|
||||
CMD ["/compile.sh"]
|
||||
+19
-36
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
ERRCOUNT=0
|
||||
echo " "
|
||||
echo "======================="
|
||||
@@ -7,49 +7,32 @@ echo "Asuro Compilation"
|
||||
echo " "
|
||||
|
||||
#Compile Stub.asm
|
||||
./compile_stub.sh
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Failed to compile stub!"
|
||||
ERRCOUNT=$((ERRCOUNT+1))
|
||||
else
|
||||
echo "Success."
|
||||
fi
|
||||
rm lib/*
|
||||
|
||||
runOrFail() {
|
||||
local binary=$1
|
||||
local errorText=$2
|
||||
if $binary; then
|
||||
echo "Success."
|
||||
else
|
||||
echo "$errorText"
|
||||
ERRCOUNT=$((ERRCOUNT+1))
|
||||
fi
|
||||
}
|
||||
|
||||
runOrFail $(pwd)/compile_stub.sh "Failed to compile stub!"
|
||||
|
||||
#Generate .pas with versioning headers.
|
||||
./compile_vergen.sh
|
||||
runOrFail $(pwd)/compile_vergen.sh "Versions failed to compile"
|
||||
|
||||
#Compile all .pas sources
|
||||
./compile_sources.sh
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo " "
|
||||
echo "Failed to compile FPC Sources!"
|
||||
ERRCOUNT=$((ERRCOUNT+1))
|
||||
else
|
||||
echo " "
|
||||
echo "Success."
|
||||
fi
|
||||
runOrFail $(pwd)/compile_sources.sh "Failed to compile FPC Sources!"
|
||||
|
||||
#Link into a binary.
|
||||
./compile_link.sh
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Failed linking!"
|
||||
ERRCOUNT=$((ERRCOUNT+1))
|
||||
else
|
||||
echo "Success."
|
||||
fi
|
||||
runOrFail $(pwd)/compile_link.sh "Failed linking!"
|
||||
|
||||
#Generate an ISO with GRUB as the Bootloader.
|
||||
./compile_isogen.sh
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Failed to create ISO!"
|
||||
ERRCOUNT=$((ERRCOUNT+1))
|
||||
else
|
||||
echo "Success."
|
||||
fi
|
||||
runOrFail ./compile_isogen.sh "Failed to create ISO!"
|
||||
|
||||
#Call generate final artifacts based on failure or success of the above.
|
||||
if [ "$ERRCOUNT" -ne "0" ]
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
echo > checksums.md5
|
||||
for directory in $(find src/ -maxdepth 10 -type d); do
|
||||
for filename in $directory/*.pas; do
|
||||
|
||||
+1
-2
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
@@ -15,4 +15,3 @@ rm -rf ./doc/*
|
||||
echo "Generating Docs..."
|
||||
./pasdoc/bin/pasdoc -N "Asuro" -T "Asuro OS Documentation" -O "html" -E ./doc/ -S sources.list --use-tipue-search
|
||||
echo "Docgen finished."
|
||||
exit 0
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
#/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
if [ "$1" == "failed" ]
|
||||
if [[ "$1" == "failed" ]]
|
||||
then
|
||||
echo "Errors Occurred, please review."
|
||||
wget -q https://img.shields.io/badge/build-failed-red.svg -O release/build.svg 2>/dev/null
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
|
||||
+1
-2
@@ -1,8 +1,7 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
echo "Compiling Stub..."
|
||||
echo " "
|
||||
rm lib/*
|
||||
nasm -f elf src/stub/stub.asm -o lib/stub.o
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
|
||||
+55
-43
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
echo " "
|
||||
echo "======================="
|
||||
echo " "
|
||||
@@ -8,56 +9,67 @@ chmod +x ./compile_checksum.sh
|
||||
./compile_checksum.sh
|
||||
outfile="src/include/asuro.pas"
|
||||
file="version"
|
||||
while IFS=: read -r line;do
|
||||
major=$(echo $line | awk '{print $1}')
|
||||
minor=$(echo $line | awk '{print $2}')
|
||||
sub=$(echo $line | awk '{print $3}')
|
||||
release=$(echo $line | awk '{print $4}')
|
||||
done <"$file"
|
||||
{
|
||||
# this script requires semver tool
|
||||
wget -q https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver -O bin/semver && chmod +x bin/semver
|
||||
export PATH="$(pwd)/bin:$PATH"
|
||||
}
|
||||
tagref=$(git describe --tags)
|
||||
revision=$(git rev-parse --short=8 HEAD)
|
||||
major=$(semver get major $tagref)
|
||||
minor=$(semver get minor $tagref)
|
||||
sub=$(semver get patch $tagref)
|
||||
version=$(semver get release $tagref)
|
||||
release=$(semver get prerel $tagref)
|
||||
build=$(semver get build $tagref)
|
||||
linecount=$(./loc.sh | awk '{print $1}')
|
||||
sourcecount=$(find src -type f | wc -l)
|
||||
drivercount=$(find src/driver -type f | wc -l)
|
||||
revision=$(git rev-list --all --count)
|
||||
fpcversion=$(fpc -h | grep -m 1 version | awk '{print $5}')
|
||||
makeversion=$(make -v | grep GNU | awk '{print $3}' | grep -v GNU)
|
||||
nasmversion=$(nasm -v | awk '{print $3'})
|
||||
compiledate=$(date +"%d/%m/%y")
|
||||
compiletime=$(date +"%T")
|
||||
checksum=$(md5sum checksums.md5 | awk '{print $1}')
|
||||
echo "unit asuro;" > $outfile
|
||||
echo " " >> $outfile
|
||||
echo "interface" >> $outfile
|
||||
echo " " >> $outfile
|
||||
echo "const" >> $outfile
|
||||
echo " VERSION = '$major.$minor.$sub-$revision$release';" >> $outfile
|
||||
echo " VERSION_MAJOR = '$major';" >> $outfile
|
||||
echo " VERSION_MINOR = '$minor';" >> $outfile
|
||||
echo " VERSION_SUB = '$sub';" >> $outfile
|
||||
echo " REVISION = '$revision';" >> $outfile
|
||||
echo " RELEASE = '$release';" >> $outfile
|
||||
echo " LINE_COUNT = $linecount;" >> $outfile
|
||||
echo " FILE_COUNT = $sourcecount;" >> $outfile
|
||||
echo " DRIVER_COUNT = $drivercount;" >> $outfile
|
||||
echo " FPC_VERSION = '$fpcversion';" >> $outfile
|
||||
echo " NASM_VERSION = '$nasmversion';" >> $outfile
|
||||
echo " MAKE_VERSION = '$makeversion';" >> $outfile
|
||||
echo " COMPILE_DATE = '$compiledate';" >> $outfile
|
||||
echo " COMPILE_TIME = '$compiletime';" >> $outfile
|
||||
echo " CHECKSUM = '$checksum';" >> $outfile
|
||||
echo " " >> $outfile
|
||||
echo "implementation" >> $outfile
|
||||
echo " " >> $outfile
|
||||
echo "end." >> $outfile
|
||||
|
||||
[[ -n "$release" ]] && version="$version-$release"
|
||||
cat > $outfile <<EOF
|
||||
unit asuro;
|
||||
|
||||
interface
|
||||
|
||||
const
|
||||
VERSION = '$version';
|
||||
VERSION_MAJOR = '$major';
|
||||
VERSION_MINOR = '$minor';
|
||||
VERSION_SUB = '$sub';
|
||||
REVISION = '$revision';
|
||||
RELEASE = '$release';
|
||||
LINE_COUNT = $linecount;
|
||||
FILE_COUNT = $sourcecount;
|
||||
DRIVER_COUNT = $drivercount;
|
||||
FPC_VERSION = '$fpcversion';
|
||||
NASM_VERSION = '$nasmversion';
|
||||
MAKE_VERSION = '$makeversion';
|
||||
COMPILE_DATE = '$compiledate';
|
||||
COMPILE_TIME = '$compiletime';
|
||||
CHECKSUM = '$checksum';
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
EOF
|
||||
echo "Generating release info..."
|
||||
wget -q https://img.shields.io/badge/version-$major.$minor.$sub--$revision$release-blue.svg -O release/version.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/revision-$revision-blue.svg -O release/revision.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/release-$release-blue.svg -O release/release.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/lines-$linecount-blueviolet.svg -O release/lines.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/files-$sourcecount-blueviolet.svg -O release/files.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/drivers-$drivercount-blueviolet.svg -O release/drivers.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/FPC_version-$fpcversion-lightgrey.svg -O release/fpcversion.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/NASM_version-$nasmversion-lightgrey.svg -O release/nasmversion.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/MAKE_version-$makeversion-lightgrey.svg -O release/makeversion.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/release_date-$compiledate-lightgrey.svg -O release/date.svg 2>/dev/null
|
||||
wget -q https://img.shields.io/badge/fingerprint-$checksum-important.svg -O release/fingerprint.svg 2>/dev/null
|
||||
set +e # These can fail on branches and such, for now
|
||||
wget -q https://img.shields.io/badge/version-$major.$minor.$sub--$revision$release-blue.svg -O release/version.svg
|
||||
wget -q https://img.shields.io/badge/revision-$revision-blue.svg -O release/revision.svg
|
||||
wget -q https://img.shields.io/badge/release-$release-blue.svg -O release/release.svg
|
||||
wget -q https://img.shields.io/badge/lines-$linecount-blueviolet.svg -O release/lines.svg
|
||||
wget -q https://img.shields.io/badge/files-$sourcecount-blueviolet.svg -O release/files.svg
|
||||
wget -q https://img.shields.io/badge/drivers-$drivercount-blueviolet.svg -O release/drivers.svg
|
||||
wget -q https://img.shields.io/badge/FPC_version-$fpcversion-lightgrey.svg -O release/fpcversion.svg
|
||||
wget -q https://img.shields.io/badge/NASM_version-$nasmversion-lightgrey.svg -O release/nasmversion.svg
|
||||
wget -q https://img.shields.io/badge/MAKE_version-$makeversion-lightgrey.svg -O release/makeversion.svg
|
||||
wget -q https://img.shields.io/badge/release_date-$compiledate-lightgrey.svg -O release/date.svg
|
||||
wget -q https://img.shields.io/badge/fingerprint-$checksum-important.svg -O release/fingerprint.svg
|
||||
echo "Done versioning."
|
||||
@@ -0,0 +1,32 @@
|
||||
#Flat filesystem
|
||||
|
||||
A super simple filesystem for asuro. Folders are emulated in filenames.
|
||||
|
||||
Starts with disk info sector, sector 0 of volume
|
||||
|
||||
---
|
||||
#### disk info
|
||||
|
||||
jmp2boot : ubit24;
|
||||
OEMName : array[0..7] of char;
|
||||
version : uint16 // numerical version of filesystem
|
||||
sectorCount : uint16;
|
||||
fileCount : uint16
|
||||
signature : uint32 = 0x0B00B1E5
|
||||
|
||||
|
||||
the Rest of the sector is reserved
|
||||
|
||||
---
|
||||
|
||||
Starting from sector 1 is the file table. Table size is determined by entry size (64) * fileCount
|
||||
|
||||
---
|
||||
####File entry
|
||||
|
||||
name : array[0..59] of char //file name max 60 chars
|
||||
fileStart : 16bit // start sector of data
|
||||
fileSize : 16bit // data size in sectors
|
||||
|
||||
---
|
||||
|
||||
@@ -13,8 +13,8 @@ We welcome everyone to give building/breaking/fixing/shooting Asuro a go, feel f
|
||||
I don't think this needs an explaination.
|
||||
* [VSCode (Optional, but highly recommended)](https://code.visualstudio.com/)
|
||||
Visual Studio code is our IDE of choice, and we have a number of recommended plugins.
|
||||
* [C# Plugin by Microsoft](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp)
|
||||
This plugin gives you the ability to use the 'coreclr' task type, allowing the automatic launching of virtualbox with the resulting image generated during compilation of Asuro.
|
||||
* [PowerShell Plugin by Microsoft](https://marketplace.visualstudio.com/items?itemName=ms-vscode.powershell)
|
||||
This plugin gives you the ability to use the 'PowerShell' task type, allowing the automatic launching of virtualbox with the resulting image generated during compilation of Asuro.
|
||||
* [VirtualBox](https://www.virtualbox.org/)
|
||||
Virtualbox is our Virtualisation environment of choice, don't ask why, it just is.
|
||||
|
||||
@@ -27,15 +27,15 @@ We welcome everyone to give building/breaking/fixing/shooting Asuro a go, feel f
|
||||
3. Install Docker for Windows.
|
||||
4. Install Git for Windows.
|
||||
5. Install VSCode & the listed plugins.
|
||||
6. Install VirtualBox.
|
||||
6. Install VirtualBox (v7+).
|
||||
7. Clone this repository.
|
||||
8. Run the following command in the root of the repo to build the docker image:
|
||||
```powershell
|
||||
docker-compose build builder
|
||||
docker compose build builder
|
||||
```
|
||||
9. Run the following command to compile Asuro:
|
||||
```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.
|
||||
11. Add the virtualbox installation directory to your `%PATH%` environment variable, usually:
|
||||
@@ -57,18 +57,11 @@ We welcome everyone to give building/breaking/fixing/shooting Asuro a go, feel f
|
||||
{
|
||||
"name":"Run",
|
||||
"request": "launch",
|
||||
"type": "coreclr",
|
||||
"type": "PowerShell",
|
||||
"preLaunchTask": "Build",
|
||||
"program": "VBoxSDL",
|
||||
"args": [
|
||||
"--comment",
|
||||
"Asuro",
|
||||
"--startvm",
|
||||
"<YOUR UUID HERE>"
|
||||
],
|
||||
"script": "${workspaceFolder}/virtualbox-wrapper.ps1",
|
||||
"args": ["-MachineName", "7d395c96-891c-4139-b77d-9b6b144b0b93"],
|
||||
"cwd": "${workspaceFolder}",
|
||||
"console": "internalConsole",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -77,5 +70,6 @@ We welcome everyone to give building/breaking/fixing/shooting Asuro a go, feel f
|
||||
13. Open your project folder in VSCode, use CTRL+SHIFT+B to build & F5 to build + run in VBox.
|
||||
14. Congratulations! You can now play with Asuro!
|
||||
|
||||
### Gotchas
|
||||
### Notes & Gotchas
|
||||
- The above process has been updated to be compatible with VirtualBox 7+, in which VBoxSDL was removed and vboxmanage should be used in its place. A small wrapper powershell script is used to achieve this.
|
||||
- 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`.
|
||||
@@ -12,15 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
{ ************************************************
|
||||
* Asuro
|
||||
* Unit: Drivers/AHCI
|
||||
* Description: AHCI SATA Driver
|
||||
************************************************
|
||||
* Author: Aaron Hance
|
||||
* Contributors:
|
||||
************************************************ }
|
||||
{
|
||||
Drivers->Storage->AHCI - AHCI SATA Driver.
|
||||
|
||||
@author(Aaron Hance <[email protected]>)
|
||||
}
|
||||
unit AHCI;
|
||||
|
||||
interface
|
||||
|
||||
@@ -12,15 +12,11 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
{ ************************************************
|
||||
* Asuro
|
||||
* Unit: Drivers/ISR46
|
||||
* Description: Primary ATA IRQ
|
||||
************************************************
|
||||
* Author: Aaron Hance
|
||||
* Contributors:
|
||||
************************************************ }
|
||||
{
|
||||
Drivers->Storage->ATA_ISR - Primary ATA IRQ.
|
||||
|
||||
@author(Aaron Hance <[email protected]>)
|
||||
}
|
||||
unit ATA_ISR;
|
||||
|
||||
interface
|
||||
|
||||
@@ -21,7 +21,9 @@ uses
|
||||
lmemorymanager,
|
||||
storagemanagement,
|
||||
strings,
|
||||
tracer;
|
||||
tracer,
|
||||
drivemanager,
|
||||
storagetypes;
|
||||
|
||||
type
|
||||
TPortMode = (P_READ, P_WRITE);
|
||||
@@ -267,6 +269,7 @@ var
|
||||
slaveDevice : TStorage_Device;
|
||||
buffer : puint8;
|
||||
i : uint8;
|
||||
test : PStorage_device;
|
||||
begin
|
||||
push_trace('ide.load');
|
||||
console.writestringln('[IDE] (LOAD) BEGIN');
|
||||
@@ -288,14 +291,15 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
masterDevice.hpc:= uint32(IDEDevices[0].info[3] DIV IDEDevices[0].info[1]);
|
||||
// masterDevice.hpc:= uint32(IDEDevices[0].info[3] DIV IDEDevices[0].info[1]); //TODO wtf is hpc
|
||||
|
||||
masterDevice.sectorSize:= 512;
|
||||
if masterDevice.maxSectorCount <> 0 then begin
|
||||
IDEDevices[0].exists:= true;
|
||||
masterDevice.readCallback:= @dread;
|
||||
masterDevice.writeCallback:= @dwrite;
|
||||
storagemanagement.register_device(@masterDevice);
|
||||
// storagemanagement.register_device(@masterDevice);
|
||||
drivemanager.register_device(@masterDevice);
|
||||
end;
|
||||
|
||||
end;
|
||||
@@ -330,10 +334,14 @@ var
|
||||
device: uint8;
|
||||
data: uint16;
|
||||
begin
|
||||
if not validate_28bit_address(LBA) then begin
|
||||
push_trace('IDE.readPIO28');
|
||||
|
||||
if not validate_28bit_address(LBA) then begin
|
||||
console.writestringln('IDE (writePIO28) ERROR: Invalid LBA!');
|
||||
end;
|
||||
|
||||
// push_trace('IDE.readPIO28.2');
|
||||
|
||||
//Add last 4 bits of LBA to device port
|
||||
if IDEDevices[drive].isMaster then begin
|
||||
device:= ATA_DEVICE_MASTER;
|
||||
@@ -344,6 +352,8 @@ begin
|
||||
device_select($F0 or ((LBA and $0F000000) shr 24)); //LBA primary slave
|
||||
end;
|
||||
|
||||
// push_trace('IDE.readPIO28.3');
|
||||
|
||||
no_interrupt(device);
|
||||
port_write(ATA_REG_ERROR, 0);
|
||||
|
||||
@@ -353,6 +363,8 @@ begin
|
||||
port_write(ATA_REG_LBA1, (LBA and $0000FF00) shr 8);
|
||||
port_write(ATA_REG_LBA2, (LBA and $00FF0000) shr 16);
|
||||
|
||||
// push_trace('IDE.readPIO28.4');
|
||||
|
||||
//send read command
|
||||
port_write(ATA_REG_COMMAND, ATA_CMD_READ_PIO);
|
||||
if not is_ready() then exit;
|
||||
@@ -368,6 +380,8 @@ begin
|
||||
|
||||
i:= i + 2;
|
||||
end;
|
||||
|
||||
// push_trace('IDE.readPIO28.5');
|
||||
end;
|
||||
|
||||
procedure writePIO28(drive : uint8; LBA : uint32; buffer : puint8);
|
||||
@@ -430,8 +444,10 @@ procedure dread(device : PStorage_device; LBA : uint32; sectorCount : uint32; bu
|
||||
var
|
||||
i : uint16;
|
||||
begin
|
||||
push_trace('IDE.dread');
|
||||
for i:=0 to sectorCount-1 do begin
|
||||
readPIO28(device^.controllerId0, LBA, puint8(@buffer[512*i]));
|
||||
readPIO28(device^.controllerId0, LBA + i, puint8(@buffer[512*i]));
|
||||
psleep(100)
|
||||
end;
|
||||
end;
|
||||
|
||||
@@ -440,7 +456,8 @@ var
|
||||
i : uint16;
|
||||
begin
|
||||
for i:=0 to sectorCount-1 do begin
|
||||
writePIO28(device^.controllerId0, LBA, puint8(@buffer[512*i]));
|
||||
writePIO28(device^.controllerId0, LBA + i, puint8(@buffer[512*i]));
|
||||
psleep(100)
|
||||
end;
|
||||
// writePIO28(device^.controllerId0, LBA, puint8(buffer));
|
||||
end;
|
||||
|
||||
Loaded 20 of 32 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user