diff --git a/.gitignore b/.gitignore index 527337e..441d41d 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,6 @@ cores/Oric/source/_impact.cmd cores/Oric/source/_impact.log cores/Oric/build/oric.v4_my.bit + +sdk/bin/sjasmplus +sdk/src/sjasmplus diff --git a/firmware/firmloader.bat b/firmware/firmloader.bat index 3807e56..4717545 100644 --- a/firmware/firmloader.bat +++ b/firmware/firmloader.bat @@ -1,5 +1,6 @@ +@call ..\sdk\setvars.bat sjasmplus firmware.asm zx7b firmware_strings.rom firmware.rom.zx7b sjasmplus bootloader.asm bin2hex bootloader.rom -copy /y bootloader.hex ..\cores\Spectrum\bootloader_hex.txt \ No newline at end of file +copy /y bootloader.hex ..\cores\Spectrum\bootloader_hex.txt diff --git a/firmware/make.bat b/firmware/make.bat index 42b2476..0c170c6 100644 --- a/firmware/make.bat +++ b/firmware/make.bat @@ -1,3 +1,4 @@ +@call ..\sdk\setvars.bat echo define version 1 > version.asm sjasmplus firmware.asm fcut firmware_strings.rom 7e00 -7e00 strings.bin diff --git a/firmware/scroll/scroll.bat b/firmware/scroll/scroll.bat index 0eda417..2540a9e 100644 --- a/firmware/scroll/scroll.bat +++ b/firmware/scroll/scroll.bat @@ -1,3 +1,4 @@ +@call ..\..\sdk\setvars.bat FuenteABin Png2Rcs fondo.png fondo.rcs -a fondo.atr sjasmplus scroll.asm diff --git a/hardware/kartusho/amstrad/manic.bat b/hardware/kartusho/amstrad/manic.bat index 449e9c5..b392bbd 100644 --- a/hardware/kartusho/amstrad/manic.bat +++ b/hardware/kartusho/amstrad/manic.bat @@ -1,3 +1,4 @@ +@call ..\..\..\sdk\setvars.bat rem 51F0-A4FF ep 6e3f rem b900-bf7f fcut Manic.sna 52F0 4a30 Manic.bin diff --git a/hardware/kartusho/roms/_make.bat b/hardware/kartusho/roms/_make.bat index d7be2ce..ff65177 100644 --- a/hardware/kartusho/roms/_make.bat +++ b/hardware/kartusho/roms/_make.bat @@ -1,3 +1,4 @@ +@call ..\..\..\sdk\setvars.bat genMenu rcs screen.scr screen.rcs fcut screen.rcs 0 1800 screen.cut diff --git a/hardware/kartusho/snapshots/makev4.bat b/hardware/kartusho/snapshots/makev4.bat index 431c634..8a27b0f 100644 --- a/hardware/kartusho/snapshots/makev4.bat +++ b/hardware/kartusho/snapshots/makev4.bat @@ -1,3 +1,4 @@ +@call ..\..\..\sdk\setvars.bat genMenu 1 rcs screen.scr screen.rcs fcut screen.rcs 0 1000 screen.cut diff --git a/hardware/kartusho/snapshots/makevROM.bat b/hardware/kartusho/snapshots/makevROM.bat index a41f1ea..b759207 100644 --- a/hardware/kartusho/snapshots/makevROM.bat +++ b/hardware/kartusho/snapshots/makevROM.bat @@ -1,3 +1,4 @@ +@call ..\..\..\sdk\setvars.bat genMenu 0 rcs screen.scr screen.rcs fcut screen.rcs 0 1000 screen.cut diff --git a/hardware/kartusho/snapshots/sjasmplus.exe b/hardware/kartusho/snapshots/sjasmplus.exe deleted file mode 100644 index a69ce5b..0000000 Binary files a/hardware/kartusho/snapshots/sjasmplus.exe and /dev/null differ diff --git a/modflash/Makefile b/modflash/Makefile new file mode 100644 index 0000000..4736e50 --- /dev/null +++ b/modflash/Makefile @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Supported environments: +# * GNU/Linux +# * Windows NT (using MinGW/MSYS/Cygwin/WSL) + +ifeq ($(OS),Windows_NT) +GENROM = GenRom.exe +ADDITEM = AddItem.exe +else +GENROM = GenRom +ADDITEM = AddItem +endif + +.PHONY: all +all: | FLASHempty.ZX1 $(GENROM) $(ADDITEM) ./addroms.sh ./addcores.sh roms.txt cores.txt + cp FLASHempty.ZX1 FLASH.ZX1 + ./addroms.sh + ./addcores.sh + +ifneq ($(OS),Windows_NT) +$(GENROM): GenRom.c + $(CC) $(CFLAGS) $< -o $@ + +$(ADDITEM): AddItem.c + $(CC) $(CFLAGS) $< -o $@ +endif + +.PHONY: clean +clean: +ifeq ($(OS),Windows_NT) + # Nothing to do +else + rm -f $(GENROM) $(ADDITEM) +endif + +.PHONY: dist-clean +dist-clean: clean + rm -f FLASH.ZX1 diff --git a/modflash/README.md b/modflash/README.md new file mode 100644 index 0000000..8a3178d --- /dev/null +++ b/modflash/README.md @@ -0,0 +1,43 @@ +# Authors + +2021 Ivan Tatarinov + +# Contributors + +No one yet. + +# License + +This document is under [GNU FDL-1.3 or later](http://www.gnu.org/licenses/fdl-1.3.html) license. + +# Target + +File `FLASH.ZX1`. + +# Windows + +## Build + +```batch +make.bat +``` + +# GNU/Linux + +## Build + +```bash +make +``` + +## Clean + +```bash +make clean +``` + +or even to remove `FLASH.ZX1` file: + +```bash +make dist-clean +``` diff --git a/modflash/README.md.license b/modflash/README.md.license new file mode 100644 index 0000000..8393cb5 --- /dev/null +++ b/modflash/README.md.license @@ -0,0 +1,5 @@ +SPDX-FileType: TEXT + +SPDX-FileCopyrightText: 2021 Ivan Tatarinov + +SPDX-License-Identifier: GFDL-1.3-or-later diff --git a/modflash/addcore.bat b/modflash/addcore.bat deleted file mode 100644 index aa942b4..0000000 --- a/modflash/addcore.bat +++ /dev/null @@ -1,89 +0,0 @@ -GenRom 0 "Apple 2" cores\Apple2.ZX1 Apple2.tap -GenRom 0 "Atari 2600" cores\Atari2600.ZX1 Atari2600.tap -GenRom 0 "Atari 800 XL" cores\Atari800XL.ZX1 Atari800XL.tap -GenRom 0 "Acorn Atom" cores\Atom.ZX1 Atom.tap -GenRom 0 "BBC Micro" cores\BBCMicro.ZX1 BBCMicro.tap -GenRom 0 "C16" cores\C16.ZX1 C16.tap -GenRom 0 "C64" cores\C64.ZX1 C64.tap -GenRom 0 "Test" cores\Test.ZX1 Test.tap -GenRom 0 "ColecoVision" cores\Coleco.ZX1 Coleco.tap -GenRom 0 "CPC464" cores\CPC464.ZX1 CPC464.tap -GenRom 0 "CPC6128" cores\CPC6128.ZX1 CPC6128.tap -GenRom 0 "Acorn Electron" cores\Electron.ZX1 Electron.tap -GenRom 0 "Galaksija" cores\Galaksija.zx1 Galaksija.tap -GenRom 0 "Jupiter Ace" cores\JupAce.ZX1 JupAce.tap -GenRom 0 "Spectrum Kyp" cores\Kyp.ZX1 Kyp.tap -GenRom 0 "MSX" cores\MSX.ZX1 MSX.tap -GenRom 0 "Nintendo NES" cores\NES.ZX1 NES.tap -GenRom 0 "Oric" cores\Oric.ZX1 Oric.tap -GenRom 0 "PC" cores\PC.ZX1 PC.tap -GenRom 0 "PC2M" cores\PC2M.ZX1 PC2M.tap -GenRom 0 "Sam Coupe" cores\SamCoupe.ZX1 SamCoupe.tap -GenRom 0 "Sega Master System" cores\SMS.ZX1 SMS.tap -GenRom 0 "TBBlue" cores\TBBlue.ZX1 TBBlue.tap -GenRom 0 "Vectrex" cores\Vectrex.ZX1 Vectrex.tap -GenRom 0 "VIC-20" cores\VIC20.ZX1 VIC20.tap -GenRom 0 "Arcade Pacman" cores\Arcades\pacman.ZX1 pacman.tap -GenRom 0 "Arcade Galaxian" cores\Arcades\galaxian.ZX1 galaxian.tap -GenRom 0 "Arcade Phoenix" cores\Arcades\phoenix.ZX1 phoenix.tap -GenRom 0 "Arcade The Glob" cores\Arcades\theblob.ZX1 theblob.tap -GenRom 0 "Arcade Scramble" cores\Arcades\scramble.ZX1 scramble.tap -GenRom 0 "Arcade Frogger" cores\Arcades\frogger.ZX1 frogger.tap -GenRom 0 "Arcade Moon Cresta" cores\Arcades\mooncresta.ZX1 mooncresta.tap -GenRom 0 "Arcade Jump Shot" cores\Arcades\jumpshot.ZX1 jumpshot.tap -GenRom 0 "Arcade Amidar" cores\Arcades\amidar.ZX1 amidar.tap -GenRom 0 "Arcade Black Hole" cores\Arcades\blackhole.ZX1 blackhole.tap -GenRom 0 "Arcade Crush Roller" cores\Arcades\crush2.ZX1 crush2.tap -GenRom 0 "Arcade Galaga" cores\Arcades\galaga.ZX1 galaga.tap -GenRom 0 "Arcade Gorkans" cores\Arcades\gorkans.ZX1 gorkans.tap -GenRom 0 "Arcade Lizard Wizard" cores\Arcades\lizwiz.ZX1 lizwiz.tap -GenRom 0 "Arcade Mr. Do" cores\Arcades\mrdo.ZX1 mrdo.tap -GenRom 0 "Arcade Ms. Pacman" cores\Arcades\mspacman.ZX1 mspacman.tap -GenRom 0 "Arcade Orbitron" cores\Arcades\orbitron.ZX1 orbitron.tap -GenRom 0 "Arcade Pac Miner" cores\Arcades\pacminer.ZX1 pacminer.tap -GenRom 0 "Arcade Pacman Plus" cores\Arcades\pacplus.ZX1 pacplus.tap -AddItem CORE2 Apple2.tap -AddItem CORE3 Atari2600.tap -AddItem CORE4 Atari800XL.tap -AddItem CORE5 Atom.tap -AddItem CORE6 BBCMicro.tap -AddItem CORE7 C16.tap -AddItem CORE8 C64.tap -AddItem CORE9 Test.tap -AddItem CORE10 Coleco.tap -AddItem CORE11 CPC464.tap -AddItem CORE12 CPC6128.tap -AddItem CORE13 Electron.tap -AddItem CORE14 Galaksija.tap -AddItem CORE15 JupAce.tap -AddItem CORE16 Kyp.tap -AddItem CORE17 MSX.tap -AddItem CORE18 NES.tap -AddItem CORE19 Oric.tap -AddItem CORE20 PC.tap -AddItem CORE21 PC2M.tap -AddItem CORE22 SamCoupe.tap -AddItem CORE23 SMS.tap -AddItem CORE24 TBBlue.tap -AddItem CORE25 Vectrex.tap -AddItem CORE26 VIC20.tap -AddItem CORE27 pacman.tap -AddItem CORE28 galaxian.tap -AddItem CORE29 phoenix.tap -AddItem CORE30 theblob.tap -AddItem CORE31 scramble.tap -AddItem CORE32 frogger.tap -AddItem CORE33 mooncresta.tap -AddItem CORE34 jumpshot.tap -AddItem CORE35 amidar.tap -AddItem CORE36 blackhole.tap -AddItem CORE37 crush2.tap -AddItem CORE38 galaga.tap -AddItem CORE39 gorkans.tap -AddItem CORE40 lizwiz.tap -AddItem CORE41 mrdo.tap -AddItem CORE42 mspacman.tap -AddItem CORE43 orbitron.tap -AddItem CORE44 pacminer.tap -AddItem CORE45 pacplus.tap -del *.tap diff --git a/modflash/addcores.bat b/modflash/addcores.bat new file mode 100644 index 0000000..fd98da5 --- /dev/null +++ b/modflash/addcores.bat @@ -0,0 +1,24 @@ +@echo off +rem SPDX-FileCopyrightText: 2021 Ivan Tatarinov +rem +rem SPDX-FileNotice: Based on code by Antonio Villena <_@antoniovillena.es> +rem +rem SPDX-License-Identifier: GPL-3.0-or-later + +set /a i=2 +for /f "eol=# tokens=1,2,3 delims=;" %%a in (cores.txt) do call :AddCore %%a %%b %%c +exit /b + +:AddCore +echo Adding core %i%: %2 (%3)... +GenRom %1 %2 %3 %~n3.tap +if not %ERRORLEVEL% == 0 goto Error +AddItem CORE%i% %~n3.tap +if not %ERRORLEVEL% == 0 goto Error +del %~n3.tap +set /a i+=1 +exit /b + +:Error +echo ERROR: Exit status %ERRORLEVEL%. Stopped. +exit /b %ERRORLEVEL% diff --git a/modflash/addcores.sh b/modflash/addcores.sh new file mode 100755 index 0000000..123c3c0 --- /dev/null +++ b/modflash/addcores.sh @@ -0,0 +1,33 @@ +#!/bin/bash -e +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-FileNotice: Based on code by Antonio Villena <_@antoniovillena.es> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +GENROM=./GenRom +ADDITEM=./AddItem +i=2 + +Error() { + echo "ERROR: Exit status $1. Stopped." >&2 + exit $1 +} + +AddCore() { + local f=${3%.*}.tap + echo "Adding core $i: \"$2\" ($3)..." + $GENROM $1 "$2" $3 $f || Error $? + $ADDITEM CORE$i $f || Error $? + rm -f $f + let i+=1 +} + +OnExit() { + rm -f addcores.tmp +} + +trap OnExit EXIT + +awk -F \; '/^[^#]+/{print "AddCore " $1 " " $2 " " gensub(/\\/, "/", "g", $3)}' cores.txt >addcores.tmp +. ./addcores.tmp diff --git a/modflash/addrom.bat b/modflash/addrom.bat deleted file mode 100644 index 067ea06..0000000 --- a/modflash/addrom.bat +++ /dev/null @@ -1,55 +0,0 @@ -GenRom xdnlh17 "ZX Spectrum 48K" roms\48.rom 48.tap -GenRom xtdnh1 "ZX Spectrum 128K EN" roms\128en.rom 128en.tap -GenRom xt "ZX Spectrum +2A EN" roms\plus3en41.rom plus3en41.tap -GenRom xdlh "48K Cargando Leches" roms\leches.rom leches.tap -GenRom xdnlh17 "Inves Spectrum+" roms\inves.rom inves.tap -GenRom xdnlh17 "Microdigital TK95" roms\tk95.rom tk95.tap -GenRom xdnlh17 "Looking Glass 1.07" roms\lg18v07.rom lg18v07.tap -GenRom xdnmlh17 "Timex Computer 2048" roms\tc2048.rom tc2048.tap -GenRom xmh1 "Timex Computer 2068" roms\tc2068.rom tc2068.tap -GenRom xpch1 "Pentagon 128" roms\pentagon.rom pentagon.tap -GenRom xdlh17 "Pokemon" roms\pokemon.rom pokemon.tap -GenRom xdnlh17 "Gosh Wonderful v1.33" roms\gw03v33.rom gw03v33.tap -GenRom xdh1 "SE Basic IV 4.0 Anya" roms\se.rom se.tap -GenRom xtdnh1 "Derby+" roms\derbyp.rom derbyp.tap -GenRom xt "DivMMC +3e ES 1.43" roms\plus3es143.rom plus3es143.tap -GenRom xt "Next +3e 1.53" roms\next.rom next.tap -GenRom xth1ru "BBC Micro" roms\BBCBasic.rom BBCBasic.tap -GenRom xth1ru "Jupiter Ace" roms\jupace.rom jupace.tap -GenRom xth1ru "ZX81" roms\zx81.rom zx81.tap -GenRom xlh17ru "Manic Miner (1983)" roms\ManicMiner.rom ManicMiner.tap -GenRom xlh17ru "Jet Set Willy (1984)" roms\JetSetWilly.rom JetSetWilly.tap -GenRom xlh17ru "Jet Pac (1983)" roms\JetPac.rom JetPac.tap -GenRom xlh17ru "Cookie (1983)" roms\Cookie.rom Cookie.tap -GenRom xlh17ru "Tranz Am (1983)" roms\TranzAm.rom TranzAm.tap -GenRom xlh17ru "Planetoids (1983)" roms\Planetoids.rom Planetoids.tap -GenRom xlh17ru "Space Raiders (1983)" roms\SpaceRaiders.rom SpaceRaiders.tap -GenRom xlh17ru "Misco Jones (2013)" roms\MiscoJones.rom MisĀ­coJones.tap -AddItem ROM 0 48.tap -AddItem ROM 1 128en.tap -AddItem ROM 3 plus3en41.tap -AddItem ROM 7 leches.tap -AddItem ROM 8 inves.tap -AddItem ROM 9 tk95.tap -AddItem ROM 10 lg18v07.tap -AddItem ROM 11 tc2048.tap -AddItem ROM 12 tc2068.tap -AddItem ROM 14 pentagon.tap -AddItem ROM 16 pokemon.tap -AddItem ROM 17 gw03v33.tap -AddItem ROM 18 se.tap -AddItem ROM 20 derbyp.tap -AddItem ROM 22 plus3es143.tap -AddItem ROM 26 next.tap -AddItem ROM 30 BBCBasic.tap -AddItem ROM 32 jupace.tap -AddItem ROM 34 zx81.tap -AddItem ROM 36 ManicMiner.tap -AddItem ROM 37 JetSetWilly.tap -AddItem ROM 38 JetPac.tap -AddItem ROM 39 Cookie.tap -AddItem ROM 40 TranzAm.tap -AddItem ROM 41 Planetoids.tap -AddItem ROM 42 SpaceRaiders.tap -AddItem ROM 43 MisĀ­coJones.tap -del *.tap diff --git a/modflash/addroms.bat b/modflash/addroms.bat new file mode 100644 index 0000000..60ada8f --- /dev/null +++ b/modflash/addroms.bat @@ -0,0 +1,25 @@ +@echo off +rem SPDX-FileCopyrightText: 2021 Ivan Tatarinov +rem +rem SPDX-FileNotice: Based on code by Antonio Villena <_@antoniovillena.es> +rem +rem SPDX-License-Identifier: GPL-3.0-or-later + +set /a i=0 +for /f "eol=# tokens=1,2,3 delims=;" %%a in (roms.txt) do call :AddROM %%a %%b %%c +exit /b + +:AddROM +set /a i1=i+(%~z3)/16384-1 +echo Adding ROM in slots %i%-%i1%: %2 (%3)... +GenRom %1 %2 %3 %~n3.tap +if not %ERRORLEVEL% == 0 goto Error +AddItem ROM %i% %~n3.tap +if not %ERRORLEVEL% == 0 goto Error +del %~n3.tap +set /a i=i1+1 +exit /b + +:Error +echo ERROR: Exit status %ERRORLEVEL%. Stopped. +exit /b %ERRORLEVEL% diff --git a/modflash/addroms.sh b/modflash/addroms.sh new file mode 100755 index 0000000..ae36632 --- /dev/null +++ b/modflash/addroms.sh @@ -0,0 +1,35 @@ +#!/bin/bash -e +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-FileNotice: Based on code by Antonio Villena <_@antoniovillena.es> +# +# SPDX-License-Identifier: GPL-3.0-or-later + +GENROM=./GenRom +ADDITEM=./AddItem +i=0 + +Error() { + echo "ERROR: Exit status $1. Stopped." >&2 + exit $1 +} + +AddROM() { + local n=`stat --printf "%s" $3` + local i1=$((i+n/16384-1)) + local f=${3%.*}.tap + echo "Adding ROM in slots $i-$i1: \"$2\" ($3)..." + $GENROM $1 "$2" $3 $f || Error $? + $ADDITEM ROM $i $f || Error $? + rm -f $f + let i=i1+1 +} + +OnExit() { + rm -f addroms.tmp +} + +trap OnExit EXIT + +awk -F \; '/^[^#]+/{print "AddROM " $1 " " $2 " " gensub(/\\/, "/", "g", $3)}' roms.txt >addroms.tmp +. ./addroms.tmp diff --git a/modflash/cores.txt b/modflash/cores.txt new file mode 100644 index 0000000..cf52814 --- /dev/null +++ b/modflash/cores.txt @@ -0,0 +1,44 @@ +0; "Apple 2"; cores\Apple2.ZX1 +0; "Atari 2600"; cores\Atari2600.ZX1 +0; "Atari 800 XL"; cores\Atari800XL.ZX1 +0; "Acorn Atom"; cores\Atom.ZX1 +0; "BBC Micro"; cores\BBCMicro.ZX1 +0; "C16"; cores\C16.ZX1 +0; "C64"; cores\C64.ZX1 +0; "Test"; cores\Test.ZX1 +0; "ColecoVision"; cores\Coleco.ZX1 +0; "CPC464"; cores\CPC464.ZX1 +0; "CPC6128"; cores\CPC6128.ZX1 +0; "Acorn Electron"; cores\Electron.ZX1 +0; "Galaksija"; cores\Galaksija.zx1 +0; "Jupiter Ace"; cores\JupAce.ZX1 +0; "Spectrum Kyp"; cores\Kyp.ZX1 +0; "MSX"; cores\MSX.ZX1 +0; "Nintendo NES"; cores\NES.ZX1 +0; "Oric"; cores\Oric.ZX1 +0; "PC"; cores\PC.ZX1 +0; "PC2M"; cores\PC2M.ZX1 +0; "Sam Coupe"; cores\SamCoupe.ZX1 +0; "Sega Master System"; cores\SMS.ZX1 +0; "TBBlue"; cores\TBBlue.ZX1 +0; "Vectrex"; cores\Vectrex.ZX1 +0; "VIC-20"; cores\VIC20.ZX1 +0; "Arcade Pacman"; cores\Arcades\pacman.ZX1 +0; "Arcade Galaxian"; cores\Arcades\galaxian.ZX1 +0; "Arcade Phoenix"; cores\Arcades\phoenix.ZX1 +0; "Arcade The Glob"; cores\Arcades\theblob.ZX1 +0; "Arcade Scramble"; cores\Arcades\scramble.ZX1 +0; "Arcade Frogger"; cores\Arcades\frogger.ZX1 +0; "Arcade Moon Cresta"; cores\Arcades\mooncresta.ZX1 +0; "Arcade Jump Shot"; cores\Arcades\jumpshot.ZX1 +0; "Arcade Amidar"; cores\Arcades\amidar.ZX1 +0; "Arcade Black Hole"; cores\Arcades\blackhole.ZX1 +0; "Arcade Crush Roller"; cores\Arcades\crush2.ZX1 +0; "Arcade Galaga"; cores\Arcades\galaga.ZX1 +0; "Arcade Gorkans"; cores\Arcades\gorkans.ZX1 +0; "Arcade Lizard Wizard"; cores\Arcades\lizwiz.ZX1 +0; "Arcade Mr. Do"; cores\Arcades\mrdo.ZX1 +0; "Arcade Ms. Pacman"; cores\Arcades\mspacman.ZX1 +0; "Arcade Orbitron"; cores\Arcades\orbitron.ZX1 +0; "Arcade Pac Miner"; cores\Arcades\pacminer.ZX1 +0; "Arcade Pacman Plus"; cores\Arcades\pacplus.ZX1 diff --git a/modflash/make.bat b/modflash/make.bat index 06cb5f5..89304dc 100644 --- a/modflash/make.bat +++ b/modflash/make.bat @@ -1,3 +1,6 @@ +@rem SPDX-FileCopyrightText: 2019 Antonio Villena <_@antoniovillena.es> +@rem +@rem SPDX-FileContributor: 2021 Ivan Tatarinov copy /Y FLASHempty.ZX1 FLASH.ZX1 -call addrom -call addcore +call addroms.bat +call addcores.bat diff --git a/modflash/roms.txt b/modflash/roms.txt new file mode 100644 index 0000000..c30ade6 --- /dev/null +++ b/modflash/roms.txt @@ -0,0 +1,27 @@ +xdnlh17; "ZX Spectrum 48K"; roms\48.rom +xtdnh1; "ZX Spectrum 128K EN"; roms\128en.rom +xt; "ZX Spectrum +2A EN"; roms\plus3en41.rom +xdlh; "48K Cargando Leches"; roms\leches.rom +xdnlh17; "Inves Spectrum+"; roms\inves.rom +xdnlh17; "Microdigital TK95"; roms\tk95.rom +xdnlh17; "Looking Glass 1.07"; roms\lg18v07.rom +xdnmlh17; "Timex Computer 2048"; roms\tc2048.rom +xmh1; "Timex Computer 2068"; roms\tc2068.rom +xpch1; "Pentagon 128"; roms\pentagon.rom +xdlh17; "Pokemon"; roms\pokemon48.rom +xdnlh17; "Gosh Wonderful v1.33"; roms\gw03v33.rom +xdh1; "SE Basic IV 4.0 Anya"; roms\se.rom +xtdnh1; "Derby+"; roms\derbyp.rom +xt; "DivMMC +3e ES 1.43"; roms\plus3es143.rom +xt; "Next +3e 1.53"; roms\next.rom +xth1ru; "BBC Micro"; roms\BBCBasic.rom +xth1ru; "Jupiter Ace"; roms\jupace.rom +xth1ru; "ZX81"; roms\zx81.rom +xlh17ru; "Manic Miner (1983)"; roms\ManicMiner.rom +xlh17ru; "Jet Set Willy (1984)"; roms\JetSetWilly.rom +xlh17ru; "Jet Pac (1983)"; roms\JetPac.rom +xlh17ru; "Cookie (1983)"; roms\Cookie.rom +xlh17ru; "Tranz Am (1983)"; roms\TranzAm.rom +xlh17ru; "Planetoids (1983)"; roms\Planetoids.rom +xlh17ru; "Space Raiders (1983)"; roms\SpaceRaiders.rom +xlh17ru; "Misco Jones (2013)"; roms\MiscoJones.rom diff --git a/sdk/Makefile b/sdk/Makefile new file mode 100644 index 0000000..3b82f73 --- /dev/null +++ b/sdk/Makefile @@ -0,0 +1,28 @@ +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Supported environments: +# * GNU/Linux +# * Windows NT (using MinGW/MSYS/Cygwin/WSL) + +include common.mk + +ifeq ($(OS),Windows_NT) +SJASMPLUS := sjasmplus.exe +else +SJASMPLUS := sjasmplus +endif + +TOOLS:=\ + bin/$(SJASMPLUS) + +.PHONY: all +all: $(TOOLS) + +$(TOOLS): | src/Makefile + $(MAKE) -w -C src ../bin/$(@F) + +.PHONY: clean +clean: | src/Makefile + $(MAKE) -w -C src clean diff --git a/sdk/README.md b/sdk/README.md new file mode 100644 index 0000000..d176571 --- /dev/null +++ b/sdk/README.md @@ -0,0 +1,137 @@ +# Authors + +2021 Ivan Tatarinov + +# Contributors + +No one yet. + +# License + +This document is under [GNU FDL-1.3 or later](http://www.gnu.org/licenses/fdl-1.3.html) license. + +# 1. General information + +The source code of all tools is in `src` directory. All compiled binaries are placed in `bin` directory. + +## 1.1. Copyright and licensing information for files + +We try to follow [REUSE recommendations](https://reuse.software/tutorial/) on how to easely specify copyright and licensing information to our files. +So we added this information to each source file we used according to [SPDX specification](https://spdx.dev/specifications/). +Check it out by using this [reuse-tool](https://github.com/fsfe/reuse-tool). + +# 2. Using SDK in GNU environment on Linux, FreeBSD etc. + +## 2.1. Build tools + +To build all tools type: + +```bash +make +``` + +To build only **sjasmplus** type: + +```bash +make bin/sjasmplus +``` + +## 2.2. Clean tools + +To clean everything type: + +```bash +make clean +``` + +## 2.3. Tools usage + +These tools are supposed to be used mainly in Makefiles and Bash scripts invoked from Makefiles. + +### 2.3.1. In Makefiles + +To use these tools in a Makefile just include `common.mk` file at the beginning of one like this: + +```make +include ../sdk/common.mk +``` + +Remember to specify correct relative path to it. + +This will set "ZXUNOSDK" environment variable (on first inclusion only) and update your "PATH" environment variable to point to SDK's tools. +These changes are actual for current invocation of "make" utility and all child processes. + +### 2.3.2. In Bash scripts + +Bash scripts are supposed to be invoked from Makefiles where the correct environment is already prepared by "make" utility so nothing must be done for such scripts. + +In other cases you must source `setvars.sh` file in a Bash script like this: + +```bash +source ../sdk/setvars.sh +``` + +or + +```bash +. ../sdk/setvars.sh +``` + +Remember to specify correct relative path to it. + +This has the same behavior as the inclusion of `common.mk` file in a Makefile. + +# 3. Using SDK in GNU environment on Windows + +**NOTE**: compilation of the following tools: + +* sjasmplus + +on Windows platform is disabled right now because of presence of precompiled binaries of them in repository. They are not deleted when cleaning. + +## 3.1. Build tools + +To build all tools type: + +```bash +make +``` + +To build only **sjasmplus** type: + +``` +make bin/sjasmplus.exe +``` + +## 3.2. Clean tools + +To clean everything type: + +```bash +make clean +``` + +## 3.3. Tools usage + +### 3.3.1. In Makefiles + +The usage is similar to one for GNU/Linux, FreeBSD etc. See [2.3.1](#231-in-makefiles). + +### 3.3.2. In Bash scripts + +The usage is similar to one for GNU/Linux, FreeBSD etc. See [2.3.2](#232-in-bash-scripts). + +# 4. Using SDK on Windows without GNU environment + +## 4.1. In batch scripts + +To use these tools in a batch script just call `setvars.bat` file at the beginning of one like this: + +```batch +call ..\sdk\setvars.bat +``` + +Remember to specify correct relative path to it. + +This will set "ZXUNOSDK" environment variable (on first call only) and update your "PATH" environment variable to point to SDK's tools. +These changes are actual for current invocation of command shell and all child processes. diff --git a/sdk/README.md.license b/sdk/README.md.license new file mode 100644 index 0000000..8393cb5 --- /dev/null +++ b/sdk/README.md.license @@ -0,0 +1,5 @@ +SPDX-FileType: TEXT + +SPDX-FileCopyrightText: 2021 Ivan Tatarinov + +SPDX-License-Identifier: GFDL-1.3-or-later diff --git a/hardware/kartusho/roms/sjasmplus.exe b/sdk/bin/sjasmplus.exe similarity index 100% rename from hardware/kartusho/roms/sjasmplus.exe rename to sdk/bin/sjasmplus.exe diff --git a/sdk/bin/sjasmplus.exe.license b/sdk/bin/sjasmplus.exe.license new file mode 100644 index 0000000..aadfbe1 --- /dev/null +++ b/sdk/bin/sjasmplus.exe.license @@ -0,0 +1,17 @@ +SPDX-FileName: sjasmplus.exe + +SPDX-FileType: BINARY + +SPDX-FileChecksum: SHA1: 0fea7c17d5e83c03466ab99141add32551f16714 + +SPDX-LicenseConcluded: Zlib + +SPDX-LicenseComments: The concluded license is taken from external sources showed in program's banner after program was started. + +SPDX-FileCopyrightText: Copyright 2004-2008 by Aprisobal / http://sjasmplus.sf.net / my@aprisobal.by / + +SPDX-FileComment: SjASMPlus Z80 Cross-Assembler v1.08 (build 07-04-2016) + +SPDX-FileNotice: based on code of SjASM by Sjoerd Mastijn / http://www.xl2s.tk / + +SPDX-FileContributor: Modified 2016 AntonioVillena diff --git a/sdk/common.mk b/sdk/common.mk new file mode 100644 index 0000000..ff29570 --- /dev/null +++ b/sdk/common.mk @@ -0,0 +1,19 @@ +# Common declarations for Makefiles. +# +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Supported environments: +# * GNU/Linux +# * Windows NT (using MinGW/MSYS/Cygwin/WSL) + +ifndef ZXUNOSDK + +ZXUNOSDK := $(patsubst %/,%,$(abspath $(dir $(lastword $(MAKEFILE_LIST))))) +PATH := $(ZXUNOSDK)/bin:$(PATH) + +export ZXUNOSDK +export PATH + +endif diff --git a/sdk/setvars.bat b/sdk/setvars.bat new file mode 100644 index 0000000..ffe8fac --- /dev/null +++ b/sdk/setvars.bat @@ -0,0 +1,9 @@ +@echo off +rem SPDX-FileCopyrightText: 2021 Ivan Tatarinov +rem +rem SPDX-License-Identifier: GPL-3.0-or-later + +if not x%ZXUNOSDK% == x exit /b +set ZXUNOSDK=%~dp0 +set ZXUNOSDK=%ZXUNOSDK:~0,-1% +set PATH=%ZXUNOSDK%\bin;%PATH% diff --git a/sdk/setvars.sh b/sdk/setvars.sh new file mode 100644 index 0000000..9a41831 --- /dev/null +++ b/sdk/setvars.sh @@ -0,0 +1,10 @@ +#!/bin/bash -e +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-License-Identifier: GPL-3.0-or-later + +if [[ "x$ZXUNOSDK" == x ]]; then + ZXUNOSDK=$(dirname $(realpath "$BASH_SOURCE")) + PATH=$ZXUNOSDK/bin:$PATH + export ZXUNOSDK +fi diff --git a/sdk/src/Makefile b/sdk/src/Makefile new file mode 100644 index 0000000..6cdabdd --- /dev/null +++ b/sdk/src/Makefile @@ -0,0 +1,39 @@ +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Supported environments: +# * GNU/Linux +# * Windows NT (using MinGW/MSYS/Cygwin/WSL) + +include ../common.mk + +ifeq ($(OS),Windows_NT) +SJASMPLUS := sjasmplus.exe +else +SJASMPLUS := sjasmplus +endif + +.PHONY: all +all: \ + ../bin/$(SJASMPLUS) + +ifneq ($(OS),Windows_NT) +../bin/$(SJASMPLUS): sjasmplus/build/$(SJASMPLUS) + cp $< $@ + +sjasmplus/build/$(SJASMPLUS): | sjasmplus sjasmplus.mk + $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk + +sjasmplus: + git clone https://github.com/sjasmplus/sjasmplus.git $@ +endif + +.PHONY: clean +ifeq ($(OS),Windows_NT) +clean:; +else +clean: | sjasmplus sjasmplus.mk + $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk clean + rm -f ../bin/$(SJASMPLUS) +endif diff --git a/sdk/src/sjasmplus.mk b/sdk/src/sjasmplus.mk new file mode 100644 index 0000000..859cc39 --- /dev/null +++ b/sdk/src/sjasmplus.mk @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: 2021 Ivan Tatarinov +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# Supported environments: +# * GNU/Linux +# * Windows NT (using MinGW/MSYS/Cygwin/WSL) +# +# Build: +# make -w -C sjasmplus -f ../sjasmplus.mk +# Clean: +# make -w -C sjasmplus -f ../sjasmplus.mk clean + +ifeq ($(OS),Windows_NT) +SJASMPLUS := sjasmplus.exe +else +SJASMPLUS := sjasmplus +endif + +build/$(SJASMPLUS): | build/Makefile + $(MAKE) -w -C build + +build/Makefile: | build + cd build && cmake .. + +build: + mkdir -p build + +.PHONY: clean +clean: | build/Makefile + $(MAKE) -w -C build clean