Windows installer in beta!
This commit is contained in:
parent
0c83e2a535
commit
8536240e75
74 changed files with 307 additions and 657 deletions
|
@ -23,6 +23,14 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: This script depends on "Toolchains" bein installed in a parallel
|
||||||
|
# directory to the directory that contains this script.
|
||||||
|
#
|
||||||
|
# https://skunkworks.kangaroopunch.com/skunkworks/toolchains
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
ROOT=$(pwd)
|
ROOT=$(pwd)
|
||||||
INSTALL=${ROOT}/llvm-mos
|
INSTALL=${ROOT}/llvm-mos
|
||||||
|
|
||||||
|
@ -40,6 +48,8 @@ function buildOverlayTool() {
|
||||||
pushd tools/overlay
|
pushd tools/overlay
|
||||||
${CC} overlay.c ../shared/util.o -o ${TARGET} -lm
|
${CC} overlay.c ../shared/util.o -o ${TARGET} -lm
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
rm tools/shared/util.o
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,6 +78,10 @@ pushd distro
|
||||||
cp -Rf ${ROOT}/f256lib .
|
cp -Rf ${ROOT}/f256lib .
|
||||||
cp -Rf ${ROOT}/include .
|
cp -Rf ${ROOT}/include .
|
||||||
cp -f ${ROOT}/f256lib.h .
|
cp -f ${ROOT}/f256lib.h .
|
||||||
|
cp -f ${ROOT}/pgz-thunk.py .
|
||||||
|
|
||||||
|
cp -f ../f256build.bat .
|
||||||
|
cp -f ../f256run.bat .
|
||||||
|
|
||||||
buildOverlayTool linux x86_64 $(pwd)/overlay.linux
|
buildOverlayTool linux x86_64 $(pwd)/overlay.linux
|
||||||
buildOverlayTool macos aarch64 $(pwd)/overlay.macos
|
buildOverlayTool macos aarch64 $(pwd)/overlay.macos
|
||||||
|
|
|
@ -26,7 +26,8 @@
|
||||||
TARGET=f256lib.h
|
TARGET=f256lib.h
|
||||||
|
|
||||||
|
|
||||||
cat f256lib/stddclmr.h > ${TARGET}
|
cat f256lib/docs.h > ${TARGET}
|
||||||
|
cat f256lib/stddclmr.h >> ${TARGET}
|
||||||
|
|
||||||
echo "#ifndef F256LIB_AMALGAMATED_BUILD" >> ${TARGET}
|
echo "#ifndef F256LIB_AMALGAMATED_BUILD" >> ${TARGET}
|
||||||
echo "#define F256LIB_AMALGAMATED_BUILD" >> ${TARGET}
|
echo "#define F256LIB_AMALGAMATED_BUILD" >> ${TARGET}
|
||||||
|
|
|
@ -37,12 +37,37 @@ set LOCAL2=llvm-mos-f256.7z
|
||||||
set REMOTE3=https://aka.ms/vs/16/release/vc_redist.x64.exe
|
set REMOTE3=https://aka.ms/vs/16/release/vc_redist.x64.exe
|
||||||
set LOCAL3=vc_redist.x64.exe
|
set LOCAL3=vc_redist.x64.exe
|
||||||
|
|
||||||
|
set REMOTE4=https://github.com/pweingar/FoenixMgr/archive/refs/heads/master.zip
|
||||||
|
set LOCAL4=master.zip
|
||||||
|
|
||||||
|
|
||||||
if exist llvm-mos\ (
|
if exist llvm-mos\ (
|
||||||
echo You already have an llvm-mos directory. Exiting.
|
echo You already have an llvm-mos directory. Exiting.
|
||||||
exit /B
|
exit /B
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if exist "%ProgramFiles%\7-Zip\7z.exe" (
|
||||||
|
set UNPACK="%ProgramFiles%\7-Zip\7z.exe"
|
||||||
|
) else (
|
||||||
|
if exist "%ProgramFiles%\WinRAR\WinRAR.exe" (
|
||||||
|
set UNPACK="%ProgramFiles%\WinRAR\WinRAR.exe"
|
||||||
|
) else (
|
||||||
|
echo Unable to find 7-Zip or WinRAR. Exiting.
|
||||||
|
exit /B
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
where /q python.exe
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Unable to find Python. Exiting.
|
||||||
|
exit /B
|
||||||
|
)
|
||||||
|
where /q pip.exe
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Unable to find Python. Exiting.
|
||||||
|
exit /B
|
||||||
|
)
|
||||||
|
|
||||||
where /q curl.exe
|
where /q curl.exe
|
||||||
if errorlevel 1 (
|
if errorlevel 1 (
|
||||||
where /q bitsadmin.exe
|
where /q bitsadmin.exe
|
||||||
|
@ -53,39 +78,38 @@ if errorlevel 1 (
|
||||||
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE1% "%~dp0%LOCAL1%"
|
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE1% "%~dp0%LOCAL1%"
|
||||||
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE2% "%~dp0%LOCAL2%"
|
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE2% "%~dp0%LOCAL2%"
|
||||||
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE3% "%~dp0%LOCAL3%"
|
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE3% "%~dp0%LOCAL3%"
|
||||||
|
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE4% "%~dp0%LOCAL4%"
|
||||||
)
|
)
|
||||||
) else (
|
) else (
|
||||||
curl.exe -L %REMOTE1% > %LOCAL1%
|
curl.exe -L %REMOTE1% > %LOCAL1%
|
||||||
curl.exe -L %REMOTE2% > %LOCAL2%
|
curl.exe -L %REMOTE2% > %LOCAL2%
|
||||||
curl.exe -L %REMOTE3% > %LOCAL3%
|
curl.exe -L %REMOTE3% > %LOCAL3%
|
||||||
|
curl.exe -L %REMOTE4% > %LOCAL4%
|
||||||
)
|
)
|
||||||
|
|
||||||
%LOCAL3% /install /passive
|
%LOCAL3% /install /passive
|
||||||
|
|
||||||
if exist "%ProgramFiles%\7-Zip\7z.exe" (
|
%UNPACK% x -y %LOCAL1%
|
||||||
"%ProgramFiles%\7-Zip\7z.exe" x %LOCAL1%
|
%UNPACK% x -y %LOCAL2%
|
||||||
"%ProgramFiles%\7-Zip\7z.exe" x %LOCAL2%
|
%UNPACK% x -y %LOCAL4%
|
||||||
) else (
|
|
||||||
if exist "%ProgramFiles%\WinRAR\WinRAR.exe" (
|
|
||||||
"%ProgramFiles%\WinRAR\WinRAR.exe" x %LOCAL1%
|
|
||||||
"%ProgramFiles%\WinRAR\WinRAR.exe" x %LOCAL2%
|
|
||||||
) else (
|
|
||||||
echo Unable to find 7-Zip or WinRAR. Exiting.
|
|
||||||
del %LOCAL1%
|
|
||||||
del %LOCAL2%
|
|
||||||
del %LOCAL3%
|
|
||||||
exit /B
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
del %LOCAL1%
|
del %LOCAL1%
|
||||||
del %LOCAL2%
|
del %LOCAL2%
|
||||||
del %LOCAL3%
|
del %LOCAL3%
|
||||||
|
del %LOCAL4%
|
||||||
|
|
||||||
del overlay.linux
|
del overlay.linux
|
||||||
del overlay.macos
|
del overlay.macos
|
||||||
ren overlay.windows overlay.exe
|
ren overlay.windows overlay.exe
|
||||||
|
|
||||||
|
if exist *.sh del *.sh > NUL
|
||||||
|
|
||||||
|
ren FoenixMgr-master FoenixMgr
|
||||||
|
copy FoenixMgr\foenixmgr.ini . > NUL
|
||||||
|
pushd FoenixMgr
|
||||||
|
pip.exe install -r requirements.txt
|
||||||
|
popd
|
||||||
|
|
||||||
echo @"%%~dp0mos-clang++.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang++.bat
|
echo @"%%~dp0mos-clang++.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang++.bat
|
||||||
echo @"%%~dp0mos-clang-cpp.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang-cpp.bat
|
echo @"%%~dp0mos-clang-cpp.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang-cpp.bat
|
||||||
echo @"%%~dp0mos-clang.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang.bat
|
echo @"%%~dp0mos-clang.exe" --config mos-f256.cfg %%* > llvm-mos\bin\mos-f256-clang.bat
|
||||||
|
@ -100,6 +124,9 @@ echo.
|
||||||
echo -----------------------------------------------------------------------------
|
echo -----------------------------------------------------------------------------
|
||||||
echo Installation complete!
|
echo Installation complete!
|
||||||
echo.
|
echo.
|
||||||
|
echo Please visit https://github.com/pweingar/FoenixMgr to learn how to configure
|
||||||
|
echo FoenixMgr for your machine. Edit the foenixmgr.ini file in this directory.
|
||||||
|
echo.
|
||||||
echo NOTE: The following has been added to your PATH:
|
echo NOTE: The following has been added to your PATH:
|
||||||
echo %~dp0llvm-mos\bin
|
echo %~dp0llvm-mos\bin
|
||||||
echo -----------------------------------------------------------------------------
|
echo -----------------------------------------------------------------------------
|
||||||
|
|
62
distro/f256build.bat
Normal file
62
distro/f256build.bat
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
@echo off
|
||||||
|
goto top
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
:top
|
||||||
|
set ROOT=%cd%
|
||||||
|
|
||||||
|
if "%~1%" neq "" goto checkSrc
|
||||||
|
echo.
|
||||||
|
echo No project folder provided.
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:checkSrc
|
||||||
|
if exist "%1%\src\*.c" goto foundSrc
|
||||||
|
echo.
|
||||||
|
echo No src folder containing C files found.
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:foundSrc
|
||||||
|
set PROJECT=%ROOT%\%1%
|
||||||
|
set SOURCE=%PROJECT%\src
|
||||||
|
set BUILD=%PROJECT%\.builddir
|
||||||
|
if "%PROJECT:~-1%" == "\" set "PROJECT=%PROJECT:~0,-1%"
|
||||||
|
for %%f in ("%PROJECT%") do set "NAME=%%~nxf"
|
||||||
|
pushd "%PROJECT%"
|
||||||
|
if exist .builddir rd /s /q .builddir
|
||||||
|
mkdir .builddir
|
||||||
|
cd .builddir
|
||||||
|
"%ROOT%\overlay.exe" 5 "%BUILD%" "%SOURCE%"
|
||||||
|
if not exist "%PROJECT%\f256.ld" copy /y "%ROOT%\llvm-mos\mos-platform\f256\lib\link.ld" "%PROJECT%\f256.ld" > NUL
|
||||||
|
call mos-f256-clang -T ..\f256.ld -Wl,-Map=%NAME%.map -o %NAME% -I"%ROOT%" -Wall -lm *.c
|
||||||
|
if errorlevel 1 goto failed
|
||||||
|
ren %NAME% %NAME%.pgz
|
||||||
|
llvm-nm %NAME%.elf > %NAME%.sym
|
||||||
|
llvm-objdump --syms -d --print-imm-hex %NAME%.elf > %NAME%.lst
|
||||||
|
python %ROOT%\pgz-thunk.py %NAME%.pgz
|
||||||
|
move %NAME%.pgz ..\. > NUL
|
||||||
|
:failed
|
||||||
|
popd
|
46
distro/f256run.bat
Normal file
46
distro/f256run.bat
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
@echo off
|
||||||
|
goto top
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
:top
|
||||||
|
set ROOT=%cd%
|
||||||
|
|
||||||
|
if "%~1%" neq "" goto checkPgz
|
||||||
|
echo.
|
||||||
|
echo No project folder provided.
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:checkPgz
|
||||||
|
set PROJECT=%ROOT%\%1%
|
||||||
|
if "%PROJECT:~-1%" == "\" set "PROJECT=%PROJECT:~0,-1%"
|
||||||
|
for %%f in ("%PROJECT%") do set "NAME=%%~nxf"
|
||||||
|
if exist "%PROJECT%\%NAME%.pgz" goto foundPgz
|
||||||
|
echo.
|
||||||
|
echo No PGZ found.
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:foundPgz
|
||||||
|
python.exe "%ROOT%/FoenixMgr/FoenixMgr/fnxmgr.py --run-pgz "%PROJECT%\%NAME%.pgz"
|
|
@ -1,50 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
# This is only to make my IDE happy.
|
|
||||||
# We can't actually build with it until I get llvm-mos integrated into
|
|
||||||
# toolchains. -- SCD
|
|
||||||
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.22)
|
|
||||||
set(CMAKE_C_STANDARD 17)
|
|
||||||
project(cube)
|
|
||||||
|
|
||||||
set(DEFINES ${CMAKE_SOURCE_DIR}/../../include)
|
|
||||||
set(F256LIB ${CMAKE_SOURCE_DIR}/../../f256lib)
|
|
||||||
|
|
||||||
set(CUBE_SOURCE
|
|
||||||
${F256LIB}/f256.h
|
|
||||||
${F256LIB}/f256.c
|
|
||||||
cube.c
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${CMAKE_PROJECT_NAME}
|
|
||||||
${CUBE_SOURCE}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
|
|
||||||
${CMAKE_SOURCE_DIR}
|
|
||||||
${DEFINES}
|
|
||||||
${F256LIB}
|
|
||||||
)
|
|
|
@ -1,53 +0,0 @@
|
||||||
#!/bin/bash -ex
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
PROJECT=cube
|
|
||||||
START=0x200
|
|
||||||
|
|
||||||
|
|
||||||
F256=$(pwd)/../..
|
|
||||||
LLVM=${F256}/llvm-mos
|
|
||||||
SETTINGS=${LLVM}/mos-platform/f256k/lib/settings.ld
|
|
||||||
PATH=${LLVM}/bin:${PATH}
|
|
||||||
|
|
||||||
echo "__f256_start = ${START};" > ${SETTINGS}
|
|
||||||
|
|
||||||
CLANG="mos-f256k-clang -I${F256}/include -I${F256}/f256lib -O3"
|
|
||||||
|
|
||||||
${CLANG} -c ${F256}/f256lib/f256.c
|
|
||||||
${CLANG} -c ${PROJECT}.c
|
|
||||||
${CLANG} -o ${PROJECT} ${PROJECT}.o f256.o
|
|
||||||
|
|
||||||
mv -f ${PROJECT} ${PROJECT}.bin
|
|
||||||
|
|
||||||
${F256}/header \
|
|
||||||
pgz 24 \
|
|
||||||
${PROJECT}.pgz \
|
|
||||||
${START} \
|
|
||||||
${PROJECT}.bin ${START}
|
|
||||||
|
|
||||||
#llvm-nm ${PROJECT}.elf > ${PROJECT}.lst
|
|
||||||
llvm-objdump -d --print-imm-hex ${PROJECT}.elf > ${PROJECT}.lst
|
|
||||||
hexdump -C ${PROJECT}.pgz > ${PROJECT}.hex
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
python ../../FoenixMgr/FoenixMgr/fnxmgr.py --run-pgz cube.pgz
|
|
|
@ -24,7 +24,8 @@
|
||||||
// Ported from https://github.com/root42/doscube
|
// Ported from https://github.com/root42/doscube
|
||||||
|
|
||||||
|
|
||||||
#include "f256.h"
|
#define F256LIB_IMPLEMENTATION
|
||||||
|
#include "f256lib.h"
|
||||||
|
|
||||||
|
|
||||||
#define FIX_PREC 9
|
#define FIX_PREC 9
|
||||||
|
@ -172,12 +173,13 @@ void draw_cube(byte p, int16_t t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(void) {
|
int main(int argc, char *argv[]) {
|
||||||
byte i;
|
byte i;
|
||||||
int16_t t = 0;
|
int16_t t = 0;
|
||||||
byte p = 0;
|
byte p = 0;
|
||||||
|
|
||||||
f256Init();
|
(void)argc;
|
||||||
|
(void)argv;
|
||||||
|
|
||||||
textSetCursor(0); // No cursor.
|
textSetCursor(0); // No cursor.
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
# This is only to make my IDE happy.
|
|
||||||
# We can't actually build with it until I get llvm-mos integrated into
|
|
||||||
# toolchains. -- SCD
|
|
||||||
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.22)
|
|
||||||
set(CMAKE_C_STANDARD 17)
|
|
||||||
project(lines)
|
|
||||||
|
|
||||||
set(DEFINES ${CMAKE_SOURCE_DIR}/../../include)
|
|
||||||
set(F256LIB ${CMAKE_SOURCE_DIR}/../../f256lib)
|
|
||||||
|
|
||||||
set(LINES_SOURCE
|
|
||||||
${F256LIB}/f256.h
|
|
||||||
${F256LIB}/f256.c
|
|
||||||
lines.c
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${CMAKE_PROJECT_NAME}
|
|
||||||
${LINES_SOURCE}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
|
|
||||||
${CMAKE_SOURCE_DIR}
|
|
||||||
${DEFINES}
|
|
||||||
${F256LIB}
|
|
||||||
)
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/bin/bash -ex
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
PROJECT=lines
|
|
||||||
START=0x200
|
|
||||||
|
|
||||||
F256=$(pwd)/../..
|
|
||||||
LLVM=${F256}/llvm-mos
|
|
||||||
SETTINGS=${LLVM}/mos-platform/f256k/lib/settings.ld
|
|
||||||
PATH=${LLVM}/bin:${PATH}
|
|
||||||
|
|
||||||
echo "__f256_start = ${START};" > ${SETTINGS}
|
|
||||||
|
|
||||||
CLANG="mos-f256k-clang -I${F256}/include -I${F256}/f256lib -O3"
|
|
||||||
|
|
||||||
${CLANG} -c ${F256}/f256lib/f256.c
|
|
||||||
${CLANG} -c ${PROJECT}.c
|
|
||||||
${CLANG} -o ${PROJECT} ${PROJECT}.o f256.o
|
|
||||||
|
|
||||||
mv -f ${PROJECT} ${PROJECT}.bin
|
|
||||||
|
|
||||||
${F256}/header \
|
|
||||||
pgz 24 \
|
|
||||||
${PROJECT}.pgz \
|
|
||||||
${START} \
|
|
||||||
${PROJECT}.bin ${START}
|
|
||||||
|
|
||||||
#llvm-nm ${PROJECT}.elf > ${PROJECT}.lst
|
|
||||||
llvm-objdump -d --print-imm-hex ${PROJECT}.elf > ${PROJECT}.lst
|
|
||||||
hexdump -C ${PROJECT}.pgz > ${PROJECT}.hex
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
python ../../FoenixMgr/FoenixMgr/fnxmgr.py --run-pgz lines.pgz
|
|
|
@ -21,10 +21,11 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "f256.h"
|
#define F256LIB_IMPLEMENTATION
|
||||||
|
#include "f256lib.h"
|
||||||
|
|
||||||
|
|
||||||
int main(void) {
|
int main(int argc, char *argv[]) {
|
||||||
uint16_t x;
|
uint16_t x;
|
||||||
uint16_t y;
|
uint16_t y;
|
||||||
uint16_t x2;
|
uint16_t x2;
|
||||||
|
@ -34,7 +35,8 @@ int main(void) {
|
||||||
byte l;
|
byte l;
|
||||||
byte c = 0;
|
byte c = 0;
|
||||||
|
|
||||||
f256Init();
|
(void)argc;
|
||||||
|
(void)argv;
|
||||||
|
|
||||||
for (l=0; l<TEXTCOLORS_COUNT; l++) {
|
for (l=0; l<TEXTCOLORS_COUNT; l++) {
|
||||||
graphicsDefineColor(0, l, textColors[l].r, textColors[l].g, textColors[l].b);
|
graphicsDefineColor(0, l, textColors[l].r, textColors[l].g, textColors[l].b);
|
|
@ -1,54 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
# This is only to make my IDE happy.
|
|
||||||
# We can't actually build with it until I get llvm-mos integrated into
|
|
||||||
# toolchains. -- SCD
|
|
||||||
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.22)
|
|
||||||
set(CMAKE_C_STANDARD 17)
|
|
||||||
project(overlay)
|
|
||||||
|
|
||||||
set(DEFINES ${CMAKE_SOURCE_DIR}/../../include)
|
|
||||||
set(F256LIB ${CMAKE_SOURCE_DIR}/../../f256lib)
|
|
||||||
|
|
||||||
set(OVERLAY_SOURCE
|
|
||||||
${F256LIB}/f256.h
|
|
||||||
${F256LIB}/f256.c
|
|
||||||
overlay.c
|
|
||||||
)
|
|
||||||
|
|
||||||
add_executable(${CMAKE_PROJECT_NAME}
|
|
||||||
${OVERLAY_SOURCE}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
|
|
||||||
${CMAKE_SOURCE_DIR}
|
|
||||||
${DEFINES}
|
|
||||||
${F256LIB}
|
|
||||||
)
|
|
||||||
|
|
||||||
#target_link_libraries(${CMAKE_PROJECT_NAME}
|
|
||||||
# -lm
|
|
||||||
#)
|
|
|
@ -1,60 +0,0 @@
|
||||||
#!/bin/bash -ex
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
PROJECT=overlay
|
|
||||||
|
|
||||||
F256=$(readlink -f $(pwd)/../..)
|
|
||||||
LLVM=${F256}/llvm-mos
|
|
||||||
PATH=${LLVM}/bin:${PATH}
|
|
||||||
|
|
||||||
CLANG="mos-f256k-clang -I${F256}/include -I${F256}/f256lib -Os"
|
|
||||||
|
|
||||||
pushd ${F256}
|
|
||||||
./build-tools.sh
|
|
||||||
popd
|
|
||||||
|
|
||||||
[[ -d .builddir ]] && rm -rf .builddir
|
|
||||||
mkdir -p .builddir
|
|
||||||
|
|
||||||
# Do not use relative paths.
|
|
||||||
${F256}/overlay 5 ${F256}/examples/overlay/.builddir ${F256}/examples/overlay
|
|
||||||
|
|
||||||
pushd .builddir
|
|
||||||
${CLANG} -c ${PROJECT}.c
|
|
||||||
|
|
||||||
${CLANG} -T ../f256.ld \
|
|
||||||
-Wl,-Map=overlay.map \
|
|
||||||
-o ${PROJECT} \
|
|
||||||
${PROJECT}.o
|
|
||||||
|
|
||||||
mv ${PROJECT} ${PROJECT}.pgz
|
|
||||||
|
|
||||||
llvm-nm ${PROJECT}.elf > ${PROJECT}.sym
|
|
||||||
llvm-objdump -d --print-imm-hex ${PROJECT}.elf > ${PROJECT}.lst
|
|
||||||
hexdump -C ${PROJECT}.pgz > ${PROJECT}.hex
|
|
||||||
python ${F256}/pgz-thunk.py ${PROJECT}.pgz
|
|
||||||
|
|
||||||
mv ${PROJECT}.pgz ../.
|
|
||||||
popd
|
|
|
@ -1,96 +0,0 @@
|
||||||
/* fake C Stack */
|
|
||||||
PROVIDE(__stack = 0xA000);
|
|
||||||
/* entry point to my program */
|
|
||||||
PROVIDE(__f256_start = 0x300);
|
|
||||||
/* page size of a block of memory */
|
|
||||||
PROVIDE(__BLOCK_SIZE = 0x2000);
|
|
||||||
/* swappable block address */
|
|
||||||
PROVIDE(__SLOT_ADDR = 0xA000);
|
|
||||||
|
|
||||||
/* f256k uses first 16 bytes of ZP for mmu control? */
|
|
||||||
__rc0 = 0x10;
|
|
||||||
INCLUDE imag-regs.ld
|
|
||||||
ASSERT(__rc0 == 0x10, "Inconsistent zero page map.")
|
|
||||||
ASSERT(__rc31 == 0x2f, "Inconsistent zero page map.")
|
|
||||||
|
|
||||||
MEMORY {
|
|
||||||
/* kernel uses 0xf0-0xff for parameter passing */
|
|
||||||
zp : ORIGIN = __rc31 + 1, LENGTH = 0xF0 - (__rc31 + 1)
|
|
||||||
ram (rw) : ORIGIN = __f256_start, LENGTH = 0xA000-__f256_start
|
|
||||||
}
|
|
||||||
|
|
||||||
/* LMAs */
|
|
||||||
__block8_lma = ( 8<<24)|__SLOT_ADDR;
|
|
||||||
__block9_lma = ( 9<<24)|__SLOT_ADDR;
|
|
||||||
__block10_lma = (10<<24)|__SLOT_ADDR;
|
|
||||||
__block11_lma = (11<<24)|__SLOT_ADDR;
|
|
||||||
__block12_lma = (12<<24)|__SLOT_ADDR;
|
|
||||||
__block13_lma = (13<<24)|__SLOT_ADDR;
|
|
||||||
__block14_lma = (14<<24)|__SLOT_ADDR;
|
|
||||||
__block15_lma = (15<<24)|__SLOT_ADDR;
|
|
||||||
__block16_lma = (16<<24)|__SLOT_ADDR;
|
|
||||||
__block17_lma = (17<<24)|__SLOT_ADDR;
|
|
||||||
__block18_lma = (18<<24)|__SLOT_ADDR;
|
|
||||||
__block19_lma = (19<<24)|__SLOT_ADDR;
|
|
||||||
__block20_lma = (20<<24)|__SLOT_ADDR;
|
|
||||||
__block21_lma = (21<<24)|__SLOT_ADDR;
|
|
||||||
__block22_lma = (22<<24)|__SLOT_ADDR;
|
|
||||||
__block23_lma = (23<<24)|__SLOT_ADDR;
|
|
||||||
|
|
||||||
MEMORY {
|
|
||||||
block8 : ORIGIN = __block8_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block9 : ORIGIN = __block9_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block10 : ORIGIN = __block10_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block11 : ORIGIN = __block11_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block12 : ORIGIN = __block12_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block13 : ORIGIN = __block13_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block14 : ORIGIN = __block14_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block15 : ORIGIN = __block15_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block16 : ORIGIN = __block16_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block17 : ORIGIN = __block17_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block18 : ORIGIN = __block18_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block19 : ORIGIN = __block19_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block20 : ORIGIN = __block20_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block21 : ORIGIN = __block21_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block22 : ORIGIN = __block22_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
block23 : ORIGIN = __block23_lma, LENGTH = __BLOCK_SIZE
|
|
||||||
}
|
|
||||||
|
|
||||||
REGION_ALIAS("c_writeable", ram)
|
|
||||||
REGION_ALIAS("c_readonly", ram)
|
|
||||||
|
|
||||||
SECTIONS {
|
|
||||||
INCLUDE c.ld
|
|
||||||
.block8 : { *(.block8 .block8.*) } >block8 end_block8 = .;
|
|
||||||
.block9 : { *(.block9 .block9.*) } >block9 end_block9 = .;
|
|
||||||
.block10 : { *(.block10 .block10.*) } >block10 end_block10 = .;
|
|
||||||
.block11 : { *(.block11 .block11.*) } >block11 end_block11 = .;
|
|
||||||
.block12 : { *(.block12 .block12.*) } >block12 end_block12 = .;
|
|
||||||
.block13 : { *(.block13 .block13.*) } >block13 end_block13 = .;
|
|
||||||
.block14 : { *(.block14 .block14.*) } >block14 end_block14 = .;
|
|
||||||
.block15 : { *(.block15 .block15.*) } >block15 end_block15 = .;
|
|
||||||
.block16 : { *(.block16 .block16.*) } >block16 end_block16 = .;
|
|
||||||
.block17 : { *(.block17 .block17.*) } >block17 end_block17 = .;
|
|
||||||
.block18 : { *(.block18 .block18.*) } >block18 end_block18 = .;
|
|
||||||
.block19 : { *(.block19 .block19.*) } >block19 end_block19 = .;
|
|
||||||
.block20 : { *(.block20 .block20.*) } >block20 end_block20 = .;
|
|
||||||
.block21 : { *(.block21 .block21.*) } >block21 end_block21 = .;
|
|
||||||
.block22 : { *(.block22 .block22.*) } >block22 end_block22 = .;
|
|
||||||
.block23 : { *(.block23 .block23.*) } >block23 end_block23 = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
OUTPUT_FORMAT {
|
|
||||||
BYTE(0x5A) /* pgZ */
|
|
||||||
/* ram segment */
|
|
||||||
SHORT(ORIGIN(ram)) /* where to load it, 24 bits */
|
|
||||||
BYTE(0x00)
|
|
||||||
SHORT(__bss_start-ORIGIN(ram)) /* size to load */
|
|
||||||
BYTE(0x00)
|
|
||||||
TRIM(ram)
|
|
||||||
|
|
||||||
INCLUDE output.ld
|
|
||||||
|
|
||||||
/* Launch the program, at _start */
|
|
||||||
SHORT(_start)
|
|
||||||
LONG(0)
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
|
||||||
* in the Software without restriction, including without limitation the rights
|
|
||||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
* copies of the Software, and to permit persons to whom the Software is
|
|
||||||
* furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in
|
|
||||||
* all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
* SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "f256.h"
|
|
||||||
#include "f256.c"
|
|
||||||
|
|
||||||
|
|
||||||
void firstSegment(int arg1, int arg2);
|
|
||||||
void secondSegment(int arg1, int arg2);
|
|
||||||
void moreFirstSegment(int arg1, int arg2);
|
|
||||||
|
|
||||||
|
|
||||||
// This is the first segment we've defined. The linker will place this code in
|
|
||||||
// the first available far memory slot (default 0x10000).
|
|
||||||
#define SEGMENT_FIRST
|
|
||||||
|
|
||||||
void firstSegment(int arg1, int arg2) {
|
|
||||||
printf("firstSegment = %d\n", arg1 + arg2);
|
|
||||||
secondSegment(arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is the second segment we've defined. The linker will place this code in
|
|
||||||
// the next available far memory slot (default 0x12000).
|
|
||||||
#define SEGMENT_SECOND
|
|
||||||
|
|
||||||
void secondSegment(int arg1, int arg2) {
|
|
||||||
printf("secondSegment = %d\n", arg1 + arg2);
|
|
||||||
moreFirstSegment(arg1, arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Back to the first segment. The linker will place this code immediately
|
|
||||||
// after the previous first segment code.
|
|
||||||
#define SEGMENT_FIRST
|
|
||||||
|
|
||||||
void moreFirstSegment(int arg1, int arg2) {
|
|
||||||
printf("moreFirstSegment = %d\n", arg1 + arg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Back to near memory, the 64k visible to the processor. By default, this
|
|
||||||
// segment begins at 0x300.
|
|
||||||
#define SEGMENT_MAIN
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
|
||||||
// The overlay tool will generate trampoline macros for each function
|
|
||||||
// that is located in a far segment so no code changes are required.
|
|
||||||
firstSegment(1, 2);
|
|
||||||
|
|
||||||
// Spin.
|
|
||||||
for (;;);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
python ../../FoenixMgr/FoenixMgr/fnxmgr.py --run-pgz overlay.pgz
|
|
Binary file not shown.
117
f256lib/docs.h
Normal file
117
f256lib/docs.h
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configuration DEFINEs
|
||||||
|
*
|
||||||
|
* Before including this file, you may define one or more of the following
|
||||||
|
* to customize the library for your application:
|
||||||
|
*
|
||||||
|
* SWAP_RESTORE
|
||||||
|
*
|
||||||
|
* When using functions such as FAR_PEEK or bitmap features, return the
|
||||||
|
* swap slot back to it's original memory location before returning. By
|
||||||
|
* default, the swap slot is left in whatever state the last function that
|
||||||
|
* used it switched it to.
|
||||||
|
*
|
||||||
|
* WITHOUT_GRAPHICS
|
||||||
|
*
|
||||||
|
* Shortcut for WITHOUT_BITMAP, WITHOUT_TILE, and WITHOUT_SPRITE.
|
||||||
|
*
|
||||||
|
* WITHOUT_BITMAP
|
||||||
|
*
|
||||||
|
* Disables bitmap functions.
|
||||||
|
*
|
||||||
|
* WITHOUT_TILE
|
||||||
|
*
|
||||||
|
* Disables tilemap functions.
|
||||||
|
*
|
||||||
|
* WITHOUT_SPRITE
|
||||||
|
*
|
||||||
|
* Disables sprite functions.
|
||||||
|
*
|
||||||
|
* WITHOUT_FILE
|
||||||
|
*
|
||||||
|
* Disables file handling support.
|
||||||
|
*
|
||||||
|
* WITHOUT_KERNEL
|
||||||
|
*
|
||||||
|
* Disables microkernel support. Also disables FILE, PLATFORM, and MAIN.
|
||||||
|
*
|
||||||
|
* WITHOUT_TEXT
|
||||||
|
*
|
||||||
|
* Disables text functions. Also disables PLATFORM.
|
||||||
|
*
|
||||||
|
* WITHOUT_MATH
|
||||||
|
*
|
||||||
|
* Disables math coprocessor support. Also disables TEXT, PLATFORM and
|
||||||
|
* BITMAP.
|
||||||
|
*
|
||||||
|
* WITHOUT_MAIN
|
||||||
|
*
|
||||||
|
* Removes support for the standardized "int main(int argc, char *argv[])"
|
||||||
|
* function and replaces it with "int main(void)". You must also manually
|
||||||
|
* call "f256Init()" at the start of your program.
|
||||||
|
*
|
||||||
|
* WITHOUT_PLATFORM
|
||||||
|
*
|
||||||
|
* Removes basic C library I/O support for "getchar()" and "__putchar()".
|
||||||
|
* This removes printf().
|
||||||
|
*
|
||||||
|
* WITHOUT_DMA
|
||||||
|
*
|
||||||
|
* Removes DMA support. In the future, will also disable BITMAP.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Usage Example:
|
||||||
|
*
|
||||||
|
* #define WITHOUT_FILE
|
||||||
|
* #define WITHOUT_SPRITE
|
||||||
|
* #define WITHOUT_TILE
|
||||||
|
* #define F256LIB_IMPLEMENTATION
|
||||||
|
* #include "f256lib.h"
|
||||||
|
*
|
||||||
|
* int main(int argc, char *argv[]) {
|
||||||
|
* return 0;
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Library documentation at this point is basically "Use the Source, Luke!"
|
||||||
|
* Each section of the library has it's own header file in the non-amalgamated
|
||||||
|
* build. Look through the headers in the "include/" and "f256lib/"
|
||||||
|
* directories.
|
||||||
|
*
|
||||||
|
* Examples of using the various features of the library are in the "examples/"
|
||||||
|
* directory. Source code for helpful utilities and tools that run on the
|
||||||
|
* host computer can be found in "tools/".
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define END_OF_DOCS__BEYOND_LIE_DRAGONS
|
|
@ -21,70 +21,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Configuration DEFINEs
|
|
||||||
*
|
|
||||||
* Before including this file, you may define one or more of the following
|
|
||||||
* to customize the library for your application:
|
|
||||||
*
|
|
||||||
* SWAP_RESTORE
|
|
||||||
*
|
|
||||||
* When using functions such as FAR_PEEK or bitmap features, return the
|
|
||||||
* swap slot back to it's original memory location before returning. By
|
|
||||||
* default, the swap slot is left in whatever state the last function that
|
|
||||||
* used it switched it to.
|
|
||||||
*
|
|
||||||
* WITHOUT_GRAPHICS
|
|
||||||
*
|
|
||||||
* Shortcut for WITHOUT_BITMAP, WITHOUT_TILE, and WITHOUT_SPRITE.
|
|
||||||
*
|
|
||||||
* WITHOUT_BITMAP
|
|
||||||
*
|
|
||||||
* Disables bitmap functions.
|
|
||||||
*
|
|
||||||
* WITHOUT_TILE
|
|
||||||
*
|
|
||||||
* Disables tilemap functions.
|
|
||||||
*
|
|
||||||
* WITHOUT_SPRITE
|
|
||||||
*
|
|
||||||
* Disables sprite functions.
|
|
||||||
*
|
|
||||||
* WITHOUT_FILE
|
|
||||||
*
|
|
||||||
* Disables file handling support.
|
|
||||||
*
|
|
||||||
* WITHOUT_KERNEL
|
|
||||||
*
|
|
||||||
* Disables microkernel support. Also disables FILE, PLATFORM, and MAIN.
|
|
||||||
*
|
|
||||||
* WITHOUT_TEXT
|
|
||||||
*
|
|
||||||
* Disables text functions. Also disables PLATFORM.
|
|
||||||
*
|
|
||||||
* WITHOUT_MATH
|
|
||||||
*
|
|
||||||
* Disables math coprocessor support. Also disables TEXT, PLATFORM and
|
|
||||||
* BITMAP.
|
|
||||||
*
|
|
||||||
* WITHOUT_MAIN
|
|
||||||
*
|
|
||||||
* Removes support for the standardized "int main(int argc, char *argv[])"
|
|
||||||
* function and replaces it with "int main(void)". You must also manually
|
|
||||||
* call "f256Init()" at the start of your program.
|
|
||||||
*
|
|
||||||
* WITHOUT_PLATFORM
|
|
||||||
*
|
|
||||||
* Removes basic C library I/O support for "getchar()" and "__putchar()".
|
|
||||||
* This removes printf().
|
|
||||||
*
|
|
||||||
* WITHOUT_DMA
|
|
||||||
*
|
|
||||||
* Removes DMA support. In the future, will also disable BITMAP.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef F256_H
|
#ifndef F256_H
|
||||||
#define F256_H
|
#define F256_H
|
||||||
|
|
||||||
|
@ -100,6 +36,7 @@ extern "C"
|
||||||
|
|
||||||
|
|
||||||
#ifndef F256LIB_AMALGAMATED_BUILD
|
#ifndef F256LIB_AMALGAMATED_BUILD
|
||||||
|
#include "docs.h"
|
||||||
#include "stddclmr.h"
|
#include "stddclmr.h"
|
||||||
#include "f_api.h"
|
#include "f_api.h"
|
||||||
#include "f256_dma.h"
|
#include "f256_dma.h"
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#include "../shared/util.h"
|
#include "../shared/util.h"
|
||||||
|
|
||||||
|
@ -323,6 +324,7 @@ void trimEnd(char *string) {
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
FILE *out;
|
FILE *out;
|
||||||
int x;
|
int x;
|
||||||
|
int r;
|
||||||
int nearSlot;
|
int nearSlot;
|
||||||
char *targetDir;
|
char *targetDir;
|
||||||
char *sourceDir;
|
char *sourceDir;
|
||||||
|
@ -335,7 +337,7 @@ int main(int argc, char *argv[]) {
|
||||||
int thisOffset;
|
int thisOffset;
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *dirent;
|
struct dirent *dirent;
|
||||||
struct stat sb;
|
struct stat fileStat;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Command line:
|
* Command line:
|
||||||
|
@ -414,15 +416,17 @@ int main(int argc, char *argv[]) {
|
||||||
}
|
}
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if ((dirent = readdir(dir)) == NULL) break;
|
if ((dirent = readdir(dir)) == NULL) break;
|
||||||
stat(dirent->d_name, &sb);
|
cFile = utilCreateString("%s%s", sourceDir, dirent->d_name); // May not be a C file. We check later.
|
||||||
|
r = stat(cFile, &fileStat);
|
||||||
|
if (r < 0) printf("stat() failed with %d! %s\n", r, strerror(errno));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (S_ISREG(sb.st_mode)) {
|
//printf("%s = %d\n", dirent->d_name, S_ISREG(fileStat.st_mode));
|
||||||
|
if (S_ISREG(fileStat.st_mode)) {
|
||||||
#else
|
#else
|
||||||
if (S_ISREG(sb.st_mode) || S_ISLNK(sb.st_mode)) {
|
if (S_ISREG(fileStat.st_mode) || S_ISLNK(fileStat.st_mode)) {
|
||||||
#endif
|
#endif
|
||||||
// Is this a C file?
|
// Is this a C file?
|
||||||
if ((dirent->d_name[strlen(dirent->d_name) - 2] == '.') && (dirent->d_name[strlen(dirent->d_name) - 1] == 'c')) {
|
if ((dirent->d_name[strlen(dirent->d_name) - 2] == '.') && (dirent->d_name[strlen(dirent->d_name) - 1] == 'c')) {
|
||||||
cFile = utilCreateString("%s%s", sourceDir, dirent->d_name);
|
|
||||||
targetFile = utilCreateString("%s%s%s", targetDir, &sourceDir[sourceDirOffset], dirent->d_name);
|
targetFile = utilCreateString("%s%s%s", targetDir, &sourceDir[sourceDirOffset], dirent->d_name);
|
||||||
thisDir = utilGetUpToLastPathComponent(targetFile);
|
thisDir = utilGetUpToLastPathComponent(targetFile);
|
||||||
utilFixPathSeparators(&thisDir, false);
|
utilFixPathSeparators(&thisDir, false);
|
||||||
|
@ -439,10 +443,10 @@ int main(int argc, char *argv[]) {
|
||||||
free(thisDir);
|
free(thisDir);
|
||||||
parseCFile(cFile, targetFile, out, trampolineFile, nearSlot + 8);
|
parseCFile(cFile, targetFile, out, trampolineFile, nearSlot + 8);
|
||||||
//printf("%s --> %s\n", cFile, targetFile);
|
//printf("%s --> %s\n", cFile, targetFile);
|
||||||
free(cFile);
|
|
||||||
free(targetFile);
|
free(targetFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(cFile);
|
||||||
}
|
}
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
free(sourceDir);
|
free(sourceDir);
|
||||||
|
|
BIN
work/sprites/assets/apache.xcf
(Stored with Git LFS)
Normal file
BIN
work/sprites/assets/apache.xcf
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Add table
Reference in a new issue