This commit is contained in:
antoniovillena 2021-05-10 17:16:38 +02:00
commit 21063ecead
32 changed files with 1582 additions and 838 deletions

View File

@ -1,10 +1,10 @@
= ZXUNO+ Manual = ZXUNO+ Manual
:author: kounch :author: kounch
:revnumber: 0.13 :revnumber: 1.0.0
:doctype: book :doctype: book
:front-cover-image: image:img/portadauno.jpg[] :front-cover-image: image:img/portadauno.jpg[]
:email: kounch@users.noreply.github.com :email: kounch@users.noreply.github.com
:Revision: 0.11 :Revision: 1.0
:description: English ZXUNO+ Manual :description: English ZXUNO+ Manual
:keywords: Manual, English, ZXUNO+ :keywords: Manual, English, ZXUNO+
:icons: font :icons: font
@ -1012,7 +1012,7 @@ Once downloaded and extracted, the contents of `BIN` and `SYS` directories have
Copy `ESXMMC.BIN` (or `ESXMMC.ROM`, depending on version) to the root of the SD card. Copy `ESXMMC.BIN` (or `ESXMMC.ROM`, depending on version) to the root of the SD card.
Start ZXUNO+ with the card inserted and press `F2` to access BIOS setup. Select the `Upgrade` menu and choose __"Upgrade esxdos for ZX"__. In the dialog that appears choose __"SD file"__ and, when it asks __"Load from SD"__ answer __"Yes"__ to the question __"Are you sure?"__. The content of the file `ESXDOS...` will be read, written to the flash storage and you will be notified when it is updated. Start ZXUNO+ with the card inserted and press `F2` to access BIOS setup. Select the `Upgrade` menu and choose __"Upgrade esxdos for ZX"__. In the dialog that appears choose __"SD file"__ and, when it asks __"Load from SD"__ answer __"Yes"__ to the question __"Are you sure?"__. The content of the file `ESXMMC...` will be read, written to the flash storage and you will be notified when it is updated.
Do a Hard-reset, or turn it off and on. Do a Hard-reset, or turn it off and on.
@ -1169,17 +1169,22 @@ Main features:
==== SD card format ==== SD card format
And SD card with the first partition in FAT16 or FAT32 format is needed to load software from it. A special ROM inside the core (Smart SPI) An SD card with the first partition in FAT16 or FAT32 format is needed to load software from it. A special ROM inside the core (Smart SPI)
reads a special file with disk images inside. reads a special file with disk images inside.
The file must have the name `BEEB.MMB` and it has to be in the root directory. You can make one with `MMBImager` for Windows, available at https://guest:zxuno@svn.zxuno.com/svn/zxuno/cores/Acorn_electron/test1/varios/[ZX-Uno SVN Repository] (Usuario `guest`, contraseña `zxuno`) or with MMB/SSD Utils in perl, available at https://github.com/sweharris/MMB_Utils[GitHub]. The file must have the name `BEEB.MMB` and it has to be in the root directory. You can make one with `MMBImager` for Windows, available at https://guest:zxuno@svn.zxuno.com/svn/zxuno/cores/Acorn_electron/test1/varios/[ZX-Uno SVN Repository] (Usuario `guest`, contraseña `zxuno`) or with MMB/SSD Utils in perl, available at https://github.com/sweharris/MMB_Utils[GitHub].
The file has to be whole across the SD (not fragmented). You can use some any program that can defrag files or FAT filesystems or use the following method: The file has to be whole across the SD (not fragmented). You can use a program that can defrag files or FAT filesystems (like https://www.ccleaner.com/defraggler[Defraggler for Windows]) or use the following method:
. Format the first SD partition using FAT16 or FAT32, but *NOT with quick format* (when using Windos, uncheck that option). . Format the first SD partition using FAT16 or FAT32, but *NOT with quick format* (when using Windos, uncheck that option).
. Copy `BEEM.MB` making sure it is the *FIRST file* being copied. . Copy `BEEM.MB` making sure it is the *FIRST file* being copied.
. If you want you can add any other file to the SD (e.g. for using with other cores), but keep *ALWAYS* `BEEB.MMB` as the first file copied to the card. . If you want you can add any other file to the SD (e.g. for using with other cores), but keep *ALWAYS* `BEEB.MMB` as the first file copied to the card.
[TIP]
====
Since the `MMB` file has the same name as the one for <<#_bbc_micro,BBC Micro core>>, you can use another core with full access to the SD card (like a a ZX Spectrum core with esxdos), with both `MMB` files with a different name, and then rename the one for Acorn Electron as `BEEB.MMB` before running this core
====
==== Keyboard ==== Keyboard
===== Special keys and buttons ===== Special keys and buttons
@ -1212,7 +1217,7 @@ Disc 0 from the image file is mounted automatically, and you can see it's conten
*CAT *CAT
---- ----
To load, for example, the mene available with some image files available on internet, use the command: To load, for example, the menu available with some image files available on internet, use the command:
[source] [source]
---- ----
@ -1564,6 +1569,115 @@ The following options are available:
<<< <<<
=== BBC Micro
The https://en.wikipedia.org/wiki/BBC_Micro[BBC Micro], was a series of microcomputers and associated peripherals designed and built by the Acorn Computer company in the 1980s for the BBC Computer Literacy Project, operated by the British Broadcasting Corporation.
The ZX-Uno core has been made by Quest y and enhanced after by azesmbog y hoglet.
Some of its features are:
- RGB and VGA (with optional scanlines) video output
- SD/MMC support, using `.MMB` files
- PS/2 keyboard
- Joystick support on port 1 (Emulating an analog joy)
- sn76489 sound chip implementation from https://github.com/wsoltys/pacedev[PACE project] (Programmable Arcade Circuit Emulation)
==== SD card format
An SD card with the first partition in FAT16 or FAT32 format is needed to load software. A special ROM inside the core (MMFS in the more recent core versions, Smart SPI on older ones) which reads a `BEEB.MMB` file with disk images inside.
The file must have the name `BEEB.MMB` and it has to be in the root directory. You can make one with `MMBImager` for Windows, available at https://guest:zxuno@svn.zxuno.com/svn/zxuno/cores/Acorn_electron/test1/varios/[ZX-Uno SVN Repository] (Usuario `guest`, contraseña `zxuno`) or with MMB/SSD Utils in perl, available at Github https://github.com/sweharris/MMB_Utils[here] or https://github.com/sweharris/MMB_Utils[here].
The file has to be whole across the SD (not fragmented). You can use a program that can defrag files or FAT filesystems (like https://www.ccleaner.com/defraggler[Defraggler for Windows]) or use the following method:
. Format the first SD partition using FAT16 or FAT32, but *NOT with quick format* (when using Windos, uncheck that option).
. Copy `BEEM.MB` making sure it is the *FIRST file* being copied.
. If you want you can add any other file to the SD (e.g. for using with other cores), but keep *ALWAYS* `BEEB.MMB` as the first file copied to the card.
[TIP]
====
Since the `MMB` file has the same name as the one for <<#_acorn_electron,Acorn Electron core>>, you can use another core with full access to the SD card (like a a ZX Spectrum core with esxdos), with both `MMB` files with a different name, and then rename the one for BBC Micro as `BEEB.MMB` before running this core
====
<<<
==== Keyboard
[.text-center]
image:img/keyboardbbc.png[pdfwidth=80%]
===== Special keys and buttons
While the core is running:
- `Scroll Lock`: change between RGB and VGA video mode
- `-` (numeric keyboard): Enable or disable scanlines in VGA mode
- `F12`: Reset
- `Shift+F12`: Soft Reset trying to load automatically the selected disk at `BEEB.MMB`
- `Ctrl+Alt+Backspace`: Hard reset. Backspace is the delete key, located in the top-right portion of the keyboard, above `Enter`.
<<<
==== Basic guide
[.text-center]
image:img/bbcmicro.png[pdfwidth=80%]
Once the SD card is inserted and the core running, if `BEEB.MMB` file was created correctly, on start, you should see:
[source]
----
BBC Computer 32k
Model B MMFS
BASIC
>
----
Or, for a core with Smart SPI
[source]
----
BBC Computer 32k
Smart SPI
BASIC
----
Disc 0 from the image file is mounted automatically, and you can see it's contents using the command:
[source]
----
*CAT
----
To load, for example, a file name `MENU`, use the command:
[source]
----
*MENU
----
To show the list of available discs inside `BEEB.MMB` file:
[source]
----
*DCAT
----
To load a particular virtual disc:
[source]
----
*DIN discnum
----
[TIP]
====
Remember that, after inserting a disc, if it has automatic boot, you can start it pressing `Shift+F12`.
====
<<<
=== Camputers Lynx === Camputers Lynx
https://en.wikipedia.org/wiki/Camputers_Lynx[The Lynx] was an 8-bit British home computer that was first released in early 1983 as a 48kB model.Several models were available with 48kB, 96kB or 128 kB RAM. https://en.wikipedia.org/wiki/Camputers_Lynx[The Lynx] was an 8-bit British home computer that was first released in early 1983 as a 48kB model.Several models were available with 48kB, 96kB or 128 kB RAM.
@ -2555,6 +2669,63 @@ See the <<#_cores,corresponding section>> for instructions of how to install the
<<< <<<
=== Vectrex
The https://en.wikipedia.org/wiki/Vectrex[Vectrex] was a vector display-based home video game console. It also had an integrated monochrome CRT monitor.
The ZX-Uno core is based on https://sourceforge.net/projects/darfpga/files/Software%20VHDL/vectrex/[DarFPGA`s original work].
Some of its features are:
- VGA video out
- OSD Menu
- Joystick and keyboard controles
- Maximum supported ROM size: 8K
==== SD card format
You need a SD card with the first partition in FAT16 or FAT32 format to store `BIN` or `VEC` files of the software to to load. Those files can be inside subdirectories.
At https://archive.org/details/GCE_Vectrex_TOSEC_2012_04_23[archive.org] you can obtain software for Vectrex.
See the <<#_cores,corresponding section>> for instructions of how to install the Vectrex core in ZXUNO+.
==== Keyboard
===== Special keys and buttons
During the core execution:
- Cursor or joystick: Directional controls
- `Z`: Fire button 1
- `X` or main joystick button: Fire button 2
- `C` or secondary joystick button: Fire button 3
- `V`: Fire button 4
- `Esc`: Show or hide the menu
- `Ctrl+Alt+Backspace`: Hard reset
- `F12`: Reset
<<<
==== Basic guide
By default, Vectrex starts with the built in game (Mine Storm).
[.text-center]
image:img/vectrex.png[pdfwidth=80%]
Pressing `Esc` shows or hides the configuration menu. Cursor keys and `Enter` are used to select and choose menu options.
The following options are available:
- Reset core
- Disable bluish color and enable white color for vectors
- Load ROM file from SD
- Exit the menu
<<<
=== Videopac === Videopac
https://en.wikipedia.org/wiki/Magnavox_Odyssey_2[Philips Videopac], also known as Magnavox Odyssey², Philips Videopac G7000 o Philips Odyssey², is a second generation home video game console that was released in 1978. https://en.wikipedia.org/wiki/Magnavox_Odyssey_2[Philips Videopac], also known as Magnavox Odyssey², Philips Videopac G7000 o Philips Odyssey², is a second generation home video game console that was released in 1978.

Binary file not shown.

View File

@ -1,10 +1,10 @@
= Manual de ZXUNO+ = Manual de ZXUNO+
:author: kounch :author: kounch
:revnumber: 0.13 :revnumber: 1.0.0
:doctype: book :doctype: book
:front-cover-image: image:img/portadauno.jpg[] :front-cover-image: image:img/portadauno.jpg[]
:email: kounch@users.noreply.github.com :email: kounch@users.noreply.github.com
:Revision: 0.11 :Revision: 1.0
:description: Manual en castellano de ZXUNO+ :description: Manual en castellano de ZXUNO+
:keywords: Manual, Castellano, ZXUNO+ :keywords: Manual, Castellano, ZXUNO+
:icons: font :icons: font
@ -1020,7 +1020,7 @@ Una vez descargado y descomprimido, se ha de copiar, a la raíz de la tarjeta, e
Copiar `ESXMMC.BIN` (o `ESXMMC.ROM`, según la versión) en la raíz de la tarjeta SD. Copiar `ESXMMC.BIN` (o `ESXMMC.ROM`, según la versión) en la raíz de la tarjeta SD.
Iniciar el ZXUNO+ con la tarjeta insertada y pulsar F2 para acceder a la configuración de BIOS. Seleccionar el menú `Upgrade` y elegir __"Upgrade esxdos for ZX"__. En el diálogo que aparece elegir __"SD file"__ y, cuando pregunte __"Load from SD"__ contestar __"Yes"__ a la pregunta __"Are you sure?"__. Se leerá el contenido del fichero `ESXDOS...`, se grabará en la flash y avisará cuando esté actualizado. Iniciar el ZXUNO+ con la tarjeta insertada y pulsar F2 para acceder a la configuración de BIOS. Seleccionar el menú `Upgrade` y elegir __"Upgrade esxdos for ZX"__. En el diálogo que aparece elegir __"SD file"__ y, cuando pregunte __"Load from SD"__ contestar __"Yes"__ a la pregunta __"Are you sure?"__. Se leerá el contenido del fichero `ESXMMC...`, se grabará en la flash y avisará cuando esté actualizado.
Realizar un Hard-reset, o apagar y encender. Realizar un Hard-reset, o apagar y encender.
@ -1197,12 +1197,17 @@ Se debe de utilizar una tarjeta SD con la primera partición en formato FAT16 o
El archivo debe llamarse `BEEB.MMB` y estar en el directorio raíz. Se puede crear con la utilidad `MMBImager` para Windows, disponible en https://guest:zxuno@svn.zxuno.com/svn/zxuno/cores/Acorn_electron/test1/varios/[el repositorio SVN de ZX-Uno] (Usuario `guest`, contraseña `zxuno`) o con la utilidades MMB/SSD en perl, disponibles en https://github.com/sweharris/MMB_Utils[GitHub]. El archivo debe llamarse `BEEB.MMB` y estar en el directorio raíz. Se puede crear con la utilidad `MMBImager` para Windows, disponible en https://guest:zxuno@svn.zxuno.com/svn/zxuno/cores/Acorn_electron/test1/varios/[el repositorio SVN de ZX-Uno] (Usuario `guest`, contraseña `zxuno`) o con la utilidades MMB/SSD en perl, disponibles en https://github.com/sweharris/MMB_Utils[GitHub].
El fichero debe estar sin fragmentar en la SD. Se puede utilizar algún programa que defragmente ficheros o sistemas de archivos FAT, o bien usar el siguiente método: El fichero debe estar sin fragmentar en la SD. Se puede utilizar algún programa que defragmente ficheros o sistemas de archivos FAT (como https://www.ccleaner.com/defraggler[Defraggler para Windows]), o bien usar el siguiente método:
. Formatear la primera partición de la SD en FAT16 o FAT32, pero *NO en formato rápido* (en Windows, desmarcar la casilla de formato rápido). . Formatear la primera partición de la SD en FAT16 o FAT32, pero *NO en formato rápido* (en Windows, desmarcar la casilla de formato rápido).
. Copiar a la SD el archivo `BEEB.MMB`, de modo que este sea el *PRIMER archivo* que se copia a la SD. . Copiar a la SD el archivo `BEEB.MMB`, de modo que este sea el *PRIMER archivo* que se copia a la SD.
. Si se desea, ya se pueden copiar otros archivos a la SD para usar con otros cores, pero *SIEMPRE debe mantenerse el `BEEB.MMB`* como el primero que se copió a la SD. . Si se desea, ya se pueden copiar otros archivos a la SD para usar con otros cores, pero *SIEMPRE debe mantenerse el `BEEB.MMB`* como el primero que se copió a la SD.
[TIP]
====
Como el fichero `MMB` se llama igual que el que utiliza el <<#_bbc_micro,core de BBC Micro>>, se puede usar otro core con acceso completo a la tarjeta SD (Como uno de ZX Spectrum con esxDOS), teniendo dos ficheros `MMB` distintos, y renombrar el de Acorn Electron como `BEEB.MMB` antes de ejecutar este core
====
==== Teclado ==== Teclado
===== Teclas especiales y botones ===== Teclas especiales y botones
@ -1573,6 +1578,115 @@ En él se pueden activar, desactivar o configurar las siguientes opciones:
<<< <<<
=== BBC Micro
El https://es.wikipedia.org/wiki/BBC_Micro[BBC Micro], fue uno de los primeros ordenadores domésticos, diseñado y construido por Acorn Computers para la British Broadcasting Corporation (BBC).
El core para ZX-Uno ha sido creado por Quest y mejorado posteriormente por azesmbog y hoglet.
Algunas de sus características son:
- Salida vídeo RGB y VGA (con scanlines opcionales)
- Soporte SD/MMC, vía archivos de imagen `.MMB`
- Teclado PS/2 (mapeado a teclado inglés)
- Soporte de joystick en el puerto 1 (Emula Joy analógico)
- Implementación del chip de sonido sn76489 desde el https://github.com/wsoltys/pacedev[proyecto PACE] (Programmable Arcade Circuit Emulation)
==== Formato de Tarjeta SD
Se debe de utilizar una tarjeta SD con la primera partición en formato FAT16 o FAT32. El core usa una ROM especial (MMFS en los cores más recientes, Smart SPI en los más antiguos) que lee de la SD un archivo `BEEB.MMB`, que contiene imágenes de disquete.
El archivo debe llamarse exactamente `BEEB.MMB` y estar en el directorio raíz. Se puede crear con la utilidad `MMBImager` para Windows, disponible en https://guest:zxuno@svn.zxuno.com/svn/zxuno/cores/Acorn_electron/test1/varios/[el repositorio SVN de ZX-Uno] (Usuario `guest`, contraseña `zxuno`) o con la utilidades MMB/SSD en perl, disponibles en Github https://github.com/hoglet67/MMFS/tree/master/tools/mmb_utils[aquí] o https://github.com/sweharris/MMB_Utils[aquí].
El fichero `MMB` debe estar sin fragmentar en la SD. Se puede utilizar algún programa que defragmente ficheros o sistemas de archivos FAT (como https://www.ccleaner.com/defraggler[Defraggler para Windows]), o bien usar el siguiente método:
. Formatear la primera partición de la SD en FAT16 o FAT32, pero *NO en formato rápido* (en Windows, desmarcar la casilla de formato rápido).
. Copiar a la SD el archivo `BEEB.MMB`, de modo que este sea el *PRIMER archivo* que se copia a la SD.
. Si se desea, ya se pueden copiar otros archivos a la SD para usar con otros cores, pero *SIEMPRE debe mantenerse el `BEEB.MMB`* como el primero que se copió a la SD.
[TIP]
====
Como el fichero `MMB` se llama igual que el que utiliza el <<#_acorn_electron,core de Acorn Electron>>, se puede usar otro core con acceso completo a la tarjeta SD (Como uno de ZX Spectrum con esxDOS), teniendo dos ficheros `MMB` distintos, y renombrar el de BBC Micro como `BEEB.MMB` antes de ejecutar este core
====
<<<
==== Teclado
[.text-center]
image:img/keyboardbbc.png[pdfwidth=80%]
===== Teclas especiales y botones
Durante la ejecución del core:
- `Bloq. Despl.`: Cambia de modo video compuesto a VGA y viceversa.
- `-` (del teclado numérico): Activa o desactiva scanlines
- `F12`: Reset
- `Mayús+F12`: Soft Reset intentando cargar automáticamente el disco seleccionado en `BEEB.MMB`
- `Ctrl+Alt+Backspace`: Hard reset. Backspace es la tecla de borrar hacia atrás, encima de `Enter`.
<<<
==== Guía básica
[.text-center]
image:img/bbcmicro.png[pdfwidth=80%]
Una vez introducida la SD en el ZX-UNO y arrancado el core, si el archivo de `BEEB.MMB` está correctamente creado, al arrancar debería aparecer:
[source]
----
BBC Computer 32k
Model B MMFS
BASIC
>
----
O bien, si es un core con Smart SPI
[source]
----
BBC Computer 32k
Smart SPI
BASIC
----
Automáticamente se monta el disco 0 de la imagen, y se puede ver su contenido con el comando:
[source]
----
*CAT
----
Para cargar, por ejemplo, un programa llamado `MENU`, y que esté en el disco usar el comando:
[source]
----
*MENU
----
Para ver una lista de los discos disponibles en el fichero `BEEB.MMB`:
[source]
----
*DCAT
----
Para insertar un disco concreto:
[source]
----
*DIN numerodisco
----
[TIP]
====
Recordar, tras insertar un disco, que si este tiene arranque automático, se puede iniciar pulsando `Mayús+F12`.
====
<<<
=== Camputers Lynx === Camputers Lynx
@ -2548,7 +2662,7 @@ image:img/sms.png[pdfwidth=70%]
=== SmartROM === SmartROM
https://github.com/Utodev/smartROM[SmartROM] es un nuevo firmware para el core de Spectrum del ZX-UNO pensado para funcionar en placas FPGA que no tengan flash, o en las que no se pueda usar. Está basado en una versión del core de McLeod hay había hecho un core "sin flash", que contiene la ROM y ESXDOS dentro del propio core. El proyecto SmartROM incluye una versión ligeramente modificada de ese core, junto con un fichero que en la SD que permite cargar una ROM de Spectrum distinta y, además, cambiar algunos ajustes. https://github.com/Utodev/smartROM[SmartROM] es un nuevo firmware para el core de Spectrum del ZX-UNO pensado para funcionar en placas FPGA que no tengan flash, o en las que no se pueda usar. Está basado en una versión del core de McLeod hay había hecho un core "sin flash", que contiene la ROM y esxdos dentro del propio core. El proyecto SmartROM incluye una versión ligeramente modificada de ese core, junto con un fichero que en la SD que permite cargar una ROM de Spectrum distinta y, además, cambiar algunos ajustes.
==== Formato de Tarjeta SD ==== Formato de Tarjeta SD
@ -2562,6 +2676,62 @@ Si no estuviera ya, <<#_cores,instalar el core smartROM>> en el ZXUNO+.
<<< <<<
=== Vectrex
La https://es.wikipedia.org/wiki/Vectrex[Vectrex] era una consola con pantalla integrada y con los gráficos basados en vectores, en vez de píxeles.
El core para ZX-Uno está basado en el https://sourceforge.net/projects/darfpga/files/Software%20VHDL/vectrex/[trabajo original de DarFPGA].
Algunas de sus características son:
- Soporte VGA
- Menú OSD
- Controles vía teclado y vía joystick
- Tamaño máximo de la ROM a cargar: 8K
==== Formato de Tarjeta SD
Se debe de utilizar una tarjeta SD, con la primera partición en formato FAT16 o FAT32, para almacenar los ficheros con las imágenes (extensión `.BIN` o `.VEC`) de los juegos que se desee cargar. Los ficheros pueden estar en subdirectorios.
En https://archive.org/details/GCE_Vectrex_TOSEC_2012_04_23[archive.org] se puede obtener software para Vectrex.
Si no estuviera ya, <<#_cores,instalar el core de Vectrex>> en el ZXUNO+.
==== Teclado
===== Teclas especiales y botones
Durante la ejecución del core:
- Cursor o el joystick 1: Controles de dirección
- `Z`: Botón de disparo 1
- `X` o el botón principal de joystick: Botón de disparo 2
- `C` o el botón secundario de joystick: Botón de disparo 3
- `V`: Botón de disparo 4
- `Esc`: para mostrar u ocultar el menú.
- `Ctrl+Alt+Backspace`: Hard reset.
- `F12`: Reset
<<<
==== Guía básica
Por defecto la Vectrex arranca con el juego que trae en memoria de fábrica (Mine Storm).
[.text-center]
image:img/vectrex.png[pdfwidth=80%]
Pulsando `Esc` se muestra el menú de configuración. Se usan las teclas de cursor y `Enter` para elegir y seleccionar en el menú.
En él se pueden activar, desactivar o configurar las siguientes opciones:
- Reiniciar el core (Reset)
- Utilizar blanco neutro para los vectores (Disable bluish vectors)
- Cargar un fichero desde la SD (Load ROM)
- Salir del menú (Exit)
<<<
=== Videopac === Videopac
La https://es.wikipedia.org/wiki/Magnavox_Odyssey²[Philips Videopac], también conocida como Magnavox Odyssey², Philips Videopac G7000 o Philips Odyssey² es una videoconsola lanzada en 1978. La https://es.wikipedia.org/wiki/Magnavox_Odyssey²[Philips Videopac], también conocida como Magnavox Odyssey², Philips Videopac G7000 o Philips Odyssey² es una videoconsola lanzada en 1978.

Binary file not shown.

BIN
doc/img/bbcmicro.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
doc/img/keyboardbbc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

BIN
doc/img/vectrex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

73
firmware/scroll/Makefile Normal file
View File

@ -0,0 +1,73 @@
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Supported environments:
# * GNU on Linux, FreeBSD etc.
# * GNU on Windows NT (using MinGW/MSYS/Cygwin/WSL)
#
# Build:
# make
# Clean:
# make clean
include ../../sdk/common.mk
FUENTEABIN = tools/build/FuenteABin$(EXESUFFIX)
AS = sjasmplus
ifeq ($(USE_SJASMPLUS_VERSION),sjasmplus)
AFLAGS = --nobanner
else ifeq ($(USE_SJASMPLUS_VERSION),z00m128)
AFLAGS = --nologo
else
AFLAGS =
endif
AFLAGS += -I../../sdk/include
.PHONY: all
all: scroll.tap
scroll.tap: scrolldesc.bin
GenTape $@ basic "SCROLL" 0 $<
scrolldesc.bin: scrolldesc.asm define.asm scroll.bin.zx7b
$(AS) $(AFLAGS) --raw=$@ $<
define.asm: scroll.bin
echo ' define filesize $(shell stat -c %s $<)' >$@
scroll.bin.zx7b: scroll.bin
zx7b $< $@
scroll.bin: scroll.asm string.asm music.bin fuente6x8.bin lineas.asm fondo.rcs
$(AS) $(AFLAGS) --raw=$@ $<
music.bin: playstc.bin music.stc
cat $^ >$@
fuente6x8.bin: fuente6x8.png | $(FUENTEABIN)
$(FUENTEABIN) $< $@
$(FUENTEABIN): | tools
ifeq ($(OS),Windows_NT)
$(MAKE) -w -C $| BUILD=mingw32
else
$(MAKE) -w -C $|
endif
fondo.rcs: fondo.png fondo.atr
Png2Rcs $< $@ -a fondo.atr
.PHONY: install
install:;
.PHONY: uninstall
uninstall:;
.PHONY: clean
clean: | tools
$(MAKE) -w -C $| $@
rm -f music.bin fuente6x8.bin fondo.rcs scroll.bin scroll.bin.zx7b define.asm scrolldesc.bin scroll.tap
.PHONY: distclean
distclean:;

View File

@ -0,0 +1,9 @@
SPDX-FileName: fondo.atr
SPDX-FileType: OTHER
SPDX-FileChecksum: SHA1: 9214a48d573cfe87145d32a461a0c3f6abccfdc6
SPDX-FileCopyrightText: Copyright (C) 2016 Samuel Baselga (a.k.a. Quest)
SPDX-License-Identifier: CC-BY-SA-4.0

View File

@ -0,0 +1,9 @@
SPDX-FileName: fondo.png
SPDX-FileType: IMAGE
SPDX-FileChecksum: SHA1: f3ad5c77329ae235982fbd67feb8c0d85269e37c
SPDX-FileCopyrightText: Copyright (C) 2016 Samuel Baselga (a.k.a. Quest)
SPDX-License-Identifier: CC-BY-SA-4.0

View File

@ -0,0 +1,9 @@
SPDX-FileName: fuente6x8.png
SPDX-FileType: IMAGE
SPDX-FileChecksum: SHA1: 740d34e262db2f3fa2989592027d1907f861ba37
SPDX-FileCopyrightText: Copyright (C) 2016 Samuel Baselga (a.k.a. Quest)
SPDX-License-Identifier: CC-BY-SA-4.0

View File

@ -1,3 +1,10 @@
; SPDX-FileCopyrightText: Copyright (C) 2016, 2017, 2020, 2021 Antonio Villena
;
; SPDX-License-Identifier: GPL-3.0-only
; Compatible compilers:
; SJAsmPlus, <https://github.com/sjasmplus/sjasmplus/>
macro linea src1, src2, src3, dst1, dst2, dst3 macro linea src1, src2, src3, dst1, dst2, dst3
ld sp, $4005+$800*src1+$100*src3+$20*src2 ld sp, $4005+$800*src1+$100*src3+$20*src2
pop hl pop hl

View File

@ -1,89 +1,96 @@
include define.asm ; SPDX-FileCopyrightText: Copyright (C) 2016, 2017, 2020, 2021 Antonio Villena
output loader.bin ;
org $5ccb ; SPDX-License-Identifier: GPL-3.0-only
ld de, $8000
di ; Compatible compilers:
defb $de, $c0, $37, $0e, $8f, $39, $96 ; Basic de Paolo Ferraris ; SJAsmPlus, <https://github.com/sjasmplus/sjasmplus/>
ld hl, finload-1
ld de, $baff include define.asm
call dzx7b output loader.bin
inc hl org $5ccb
inc hl ld de, $8000
ld bc, $4000 ; filtro RCS inverso (jamorski) di
ld a, b defb $de, $c0, $37, $0e, $8f, $39, $96 ; Basic de Paolo Ferraris
init xor c ld hl, finload-1
and $f8 ld de, $baff
xor c call dzx7b
ld d, a inc hl
xor b inc hl
xor c ld bc, $4000 ; filtro RCS inverso (jamorski)
rlca ld a, b
rlca init xor c
ld e, a and $f8
init2 inc bc xor c
ldi ld d, a
inc bc xor b
ld a, b xor c
cp $58 rlca
jr c, init rlca
sub $5b ld e, a
jr nz, init2 init2 inc bc
ld hl, $5e6d-2 ldi
ld de, compsize inc bc
call $07f4 ld a, b
di cp $58
ld de, $5e6d+rawsize-1 jr c, init
ld hl, $5e6d-2+compsize-1 sub $5b
call dzx7b jr nz, init2
jp $7be4 ld hl, $5e6d-2
ld de, compsize
; ----------------------------------------------------------------------------- call $07f4
; ZX7 Backwards by Einar Saukas, Antonio Villena di
; Parameters: ld de, $5e6d+rawsize-1
; HL: source address (compressed data) ld hl, $5e6d-2+compsize-1
; DE: destination address (decompressing) call dzx7b
; ----------------------------------------------------------------------------- jp $7be4
dzx7b ld bc, $8000
ld a, b ; -----------------------------------------------------------------------------
copyby inc c ; ZX7 Backwards by Einar Saukas, Antonio Villena
ldd ; Parameters:
mainlo add a, a ; HL: source address (compressed data)
call z, getbit ; DE: destination address (decompressing)
jr nc, copyby ; -----------------------------------------------------------------------------
push de dzx7b ld bc, $8000
ld d, c ld a, b
defb $30 copyby inc c
lenval add a, a ldd
call z, getbit mainlo add a, a
rl c call z, getbit
rl b jr nc, copyby
add a, a push de
call z, getbit ld d, c
jr nc, lenval defb $30
inc c lenval add a, a
jr z, exitdz call z, getbit
ld e, (hl) rl c
dec hl rl b
sll e add a, a
jr nc, offend call z, getbit
ld d, $10 jr nc, lenval
nexbit add a, a inc c
call z, getbit jr z, exitdz
rl d ld e, (hl)
jr nc, nexbit dec hl
inc d sll e
srl d jr nc, offend
offend rr e ld d, $10
ex (sp), hl nexbit add a, a
ex de, hl call z, getbit
adc hl, de rl d
lddr jr nc, nexbit
exitdz pop hl inc d
jr nc, mainlo srl d
getbit ld a, (hl) offend rr e
dec hl ex (sp), hl
adc a, a ex de, hl
ret adc hl, de
lddr
loadscr incbin loadscr.rcs.zx7b exitdz pop hl
finload jr nc, mainlo
getbit ld a, (hl)
dec hl
adc a, a
ret
loadscr incbin loadscr.rcs.zx7b
finload

BIN
firmware/scroll/music.stc Normal file

Binary file not shown.

View File

@ -0,0 +1,13 @@
SPDX-FileName: music.stc
SPDX-FileType: OTHER
SPDX-FileChecksum: SHA1: c45309ee13cc7cb0cbb7becb2eda9ecc4d905788
SPDX-FileCopyrightText: Copyright (C) 2016 Michal B. (a.k.a Yerzmyey)
SPDX-FileNotice: Exclusive track for ZX-Uno project.
SPDX-License-Identifier: CC-BY-SA-4.0
SPDX-FileComment: https://zxart.ee/eng/authors/y/yerzmyey/

BIN
firmware/scroll/playstc.bin Normal file

Binary file not shown.

View File

@ -0,0 +1,9 @@
SPDX-FileName: playstc.bin
SPDX-FileType: BINARY
SPDX-FileChecksum: SHA1: 163afa437d12a65e0b78a4cfddf87959ca1502ee
SPDX-FileCopyrightText: Copyright (C) 2016 Antonio Villena
SPDX-License-Identifier: GPL-3.0-only

View File

@ -1,336 +1,364 @@
output scroll.bin ; scroll.asm - an easteg egg showing the list of people who participated
org $5e6d ; in the crowdfunding of the ZX-Uno project through Verkami:
display $6d35+string-music ; https://www.verkami.com/projects/14074-zx-uno
string include string.asm ;
music ld (vari+2), ix ; We put the nick that they agreed. Some of them decided to put their
incbin music.bin ; complete names.
fuente incbin fuente6x8.bin ;
start ld hl, $c000 ; Copyright (C) 2016, 2017, 2020, 2021 Antonio Villena
ld de, $c001 ;
ld bc, $017f ; This program is free software: you can redistribute it and/or modify
ld (hl), l ; it under the terms of the GNU General Public License as published by
ldir ; the Free Software Foundation, version 3.
ld hl, fuente ;
ld b, 3 ; This program is distributed in the hope that it will be useful,
ldir ; but WITHOUT ANY WARRANTY; without even the implied warranty of
ld hl, fondo ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ld b, $40 ; filtro RCS inverso ; GNU General Public License for more details.
start0 ld a, b ;
xor c ; You should have received a copy of the GNU General Public License
and $f8 ; along with this program. If not, see <https://www.gnu.org/licenses/>.
xor c ;
ld d, a ; SPDX-FileCopyrightText: Copyright (C) 2016, 2017, 2020, 2021 Antonio Villena
xor b ;
xor c ; SPDX-License-Identifier: GPL-3.0-only
rlca
rlca ; Compatible compilers:
ld e, a ; SJAsmPlus, <https://github.com/sjasmplus/sjasmplus/>
inc bc
ldi output scroll.bin
inc bc org $5e6d
ld a, b display $6d35+string-music
sub $58 string include string.asm
jr nz, start0 music ld (vari+2), ix
ld b, 3 incbin music.bin
ldir fuente incbin fuente6x8.bin
out ($fe), a start ld hl, $c000
inc a ld de, $c001
ex af, af' ld bc, $017f
; ld de, $401f ld (hl), l
;rever ld hl, $ffe1 ldir
; add hl, de ld hl, fuente
; ld c, (hl) ld b, 3
; ld a, $80 ldir
;revl1 rl c ld hl, fondo
; rra ld b, $40 ; filtro RCS inverso
; jr nc, revl1 start0 ld a, b
; ld (de), a xor c
; inc hl and $f8
; dec de xor c
; ld c, (hl) ld d, a
; ld a, $80 xor b
;revl2 rl c xor c
; rra rlca
; jr nc, revl2 rlca
; ld (de), a ld e, a
; inc hl inc bc
; dec de ldi
; ld c, (hl) inc bc
; ld a, $80 ld a, b
;revl3 rl c sub $58
; rra jr nz, start0
; jr nc, revl3 ld b, 3
; ld (de), a ldir
; inc hl out ($fe), a
; dec de inc a
; ld c, (hl) ex af, af'
; ld a, $80 ; ld de, $401f
;revl4 rl c ;rever ld hl, $ffe1
; rra ; add hl, de
; jr nc, revl4 ; ld c, (hl)
; ld (de), a ; ld a, $80
; ld hl, $23 ;revl1 rl c
; add hl, de ; rra
; ex de, hl ; jr nc, revl1
; ld a, d ; ld (de), a
; cp $58 ; inc hl
; jr nz, rever ; dec de
; ld c, (hl)
ld hl, $c000 ; ld a, $80
ld de, $c400 ;revl2 rl c
start1 ld b, $08 ; rra
start2 ld a, (hl) ; jr nc, revl2
rrca ; ld (de), a
ld (de), a ; inc hl
inc de ; dec de
cpi ; ld c, (hl)
jp pe, start2 ; ld a, $80
jr nc, start1 ;revl3 rl c
ld a, $c9 ; rra
ld ($c006), a ; jr nc, revl3
ld hl, $716f ; ld (de), a
call music+7 ; inc hl
start3 call $6e77 ; dec de
ei ; ld c, (hl)
halt ; ld a, $80
di ;revl4 rl c
ld bc, 5 ; rra
start4 djnz start4 ; jr nc, revl4
dec c ; ld (de), a
jr nz, start4 ; ld hl, $23
include lineas.asm ; add hl, de
ld sp, $401b+$800*2+$100*7+$20*7 ; ex de, hl
sbc hl, hl ; ld a, d
push hl ; cp $58
push hl ; jr nz, rever
push hl
push hl ld hl, $c000
push hl ld de, $c400
push hl start1 ld b, $08
push hl start2 ld a, (hl)
push hl rrca
push hl ld (de), a
push hl inc de
push hl cpi
ld sp, hl jp pe, start2
vari ld ix, string jr nc, start1
ld hl, start3 ld a, $c9
push hl ld ($c006), a
ld hl, music ld hl, $716f
push hl call music+7
ex af, af' start3 call $6e77
rrca ei
jr c, start5 halt
ex af, af' di
ret ld bc, 5
start5 ex af, af' start4 djnz start4
linea 3, 1, 0, 3, 0, 0 dec c
linea 3, 2, 0, 3, 1, 0 jr nz, start4
linea 3, 3, 0, 3, 2, 0 include lineas.asm
linea 3, 4, 0, 3, 3, 0 ld sp, $401b+$800*2+$100*7+$20*7
linea 3, 5, 0, 3, 4, 0 sbc hl, hl
linea 3, 6, 0, 3, 5, 0 push hl
linea 3, 7, 0, 3, 6, 0 push hl
linea 3, 0, 1, 3, 7, 0 push hl
linea 3, 1, 1, 3, 0, 1 push hl
linea 3, 2, 1, 3, 1, 1 push hl
linea 3, 3, 1, 3, 2, 1 push hl
linea 3, 4, 1, 3, 3, 1 push hl
linea 3, 5, 1, 3, 4, 1 push hl
linea 3, 6, 1, 3, 5, 1 push hl
linea 3, 7, 1, 3, 6, 1 push hl
linea 3, 0, 2, 3, 7, 1 push hl
linea 3, 1, 2, 3, 0, 2 ld sp, hl
linea 3, 2, 2, 3, 1, 2 vari ld ix, string
linea 3, 3, 2, 3, 2, 2 ld hl, start3
linea 3, 4, 2, 3, 3, 2 push hl
linea 3, 5, 2, 3, 4, 2 ld hl, music
linea 3, 6, 2, 3, 5, 2 push hl
ld sp, $fffc ex af, af'
ld b, (ix) rrca
djnz start6 jr c, start5
ld ix, string ex af, af'
start6 inc ix ret
ld hl, $5ac5 start5 ex af, af'
ld (hl), b linea 3, 1, 0, 3, 0, 0
ld de, $5ac6 linea 3, 2, 0, 3, 1, 0
ld bc, 21 linea 3, 3, 0, 3, 2, 0
ldir linea 3, 4, 0, 3, 3, 0
xor a linea 3, 5, 0, 3, 4, 0
push ix linea 3, 6, 0, 3, 5, 0
pop hl linea 3, 7, 0, 3, 6, 0
ld bc, $172b linea 3, 0, 1, 3, 7, 0
cpir linea 3, 1, 1, 3, 0, 1
srl c linea 3, 2, 1, 3, 1, 1
ld a, c linea 3, 3, 1, 3, 2, 1
jr c, prn2 linea 3, 4, 1, 3, 3, 1
and %11111100 linea 3, 5, 1, 3, 4, 1
ld d, a linea 3, 6, 1, 3, 5, 1
xor c linea 3, 7, 1, 3, 6, 1
ld c, a linea 3, 0, 2, 3, 7, 1
ld e, a linea 3, 1, 2, 3, 0, 2
jr z, prn1 linea 3, 2, 2, 3, 1, 2
dec e linea 3, 3, 2, 3, 2, 2
prn1 ld a, d linea 3, 4, 2, 3, 3, 2
rrca linea 3, 5, 2, 3, 4, 2
ld d, a linea 3, 6, 2, 3, 5, 2
rrca ld sp, $fffc
add a, d ld b, (ix)
add a, e djnz start6
ld e, a ld ix, string
ld a, b start6 inc ix
and %00011000 ld hl, $5ac5
or %01000000 ld (hl), b
ld d, a ld de, $5ac6
ld a, b ld bc, 21
and %00000111 ldir
rrca xor a
rrca push ix
rrca pop hl
add a, e ld bc, $172b
ld e, a cpir
rr c srl c
jr c, pos26 ld a, c
jr nz, pos4 jr c, prn2
pos0 ld a, (ix) and %11111100
inc ix ld d, a
add a, a xor c
ret z ld c, a
ld h, $c0 >> 2 ld e, a
call simple jr z, prn1
pos2 ld a, (ix) dec e
inc ix prn1 ld a, d
add a, a rrca
ret z ld d, a
ld h, $d8 >> 2 rrca
ld bc, $04fc add a, d
call doble add a, e
pos4 ld a, (ix) ld e, a
inc ix ld a, b
add a, a and %00011000
ret z or %01000000
ld h, $d0 >> 2 ld d, a
ld bc, $04f0 ld a, b
call doble and %00000111
pos6 ld a, (ix) rrca
inc ix rrca
add a, a rrca
ret z add a, e
ld h, $c8 >> 2 ld e, a
call simple rr c
inc de jr c, pos26
jr pos0 jr nz, pos4
pos26 rr c pos0 ld a, (ix)
jr c, pos6 inc ix
jr pos2 add a, a
prn2 and %11111100 ret z
ld d, a ld h, $c0 >> 2
xor c call simple
ld c, a pos2 ld a, (ix)
cp 2 inc ix
adc a, -1 add a, a
ld e, a ret z
ld a, d ld h, $d8 >> 2
rrca ld bc, $04fc
ld d, a call doble
rrca pos4 ld a, (ix)
add a, d inc ix
add a, e add a, a
ld e, a ret z
ld a, b ld h, $d0 >> 2
and %00011000 ld bc, $04f0
or %01000000 call doble
ld d, a pos6 ld a, (ix)
ld a, b inc ix
and %00000111 add a, a
rrca ret z
rrca ld h, $c8 >> 2
rrca call simple
add a, e inc de
ld e, a jr pos0
rr c pos26 rr c
jr c, pos37 jr c, pos6
jr nz, pos5 jr pos2
pos1 ld a, (ix) prn2 and %11111100
inc ix ld d, a
add a, a xor c
ret z ld c, a
ld h, $cc >> 2 cp 2
ld bc, $04e0 adc a, -1
call doble ld e, a
pos3 ld a, (ix) ld a, d
inc ix rrca
add a, a ld d, a
ret z rrca
ld h, $c4 >> 2 add a, d
call simple add a, e
pos5 ld a, (ix) ld e, a
inc ix ld a, b
add a, a and %00011000
ret z or %01000000
ld h, $dc >> 2 ld d, a
ld bc, $04fe ld a, b
call doble and %00000111
pos7 ld a, (ix) rrca
inc ix rrca
add a, a rrca
ret z add a, e
ld h, $d4 >> 2 ld e, a
ld bc, $04f8 rr c
call doble jr c, pos37
jr pos1 jr nz, pos5
pos37 rr c pos1 ld a, (ix)
jr c, pos7 inc ix
jr pos3 add a, a
ret z
simple ld b, 4 ld h, $cc >> 2
ld l, a ld bc, $04e0
add hl, hl call doble
add hl, hl pos3 ld a, (ix)
simple2 ld a, (de) inc ix
xor (hl) add a, a
ld (de), a ret z
inc d ld h, $c4 >> 2
inc l call simple
ld a, (de) pos5 ld a, (ix)
xor (hl) inc ix
ld (de), a add a, a
inc d ret z
inc l ld h, $dc >> 2
djnz simple2 ld bc, $04fe
ld hl, $f800 call doble
add hl, de pos7 ld a, (ix)
ex de, hl inc ix
ret add a, a
ret z
doble ld l, a ld h, $d4 >> 2
add hl, hl ld bc, $04f8
add hl, hl call doble
doble2 ld a, (de) jr pos1
xor (hl) pos37 rr c
and c jr c, pos7
xor (hl) jr pos3
ld (de), a
inc e simple ld b, 4
ld a, (hl) ld l, a
and c add hl, hl
ld (de), a add hl, hl
inc d simple2 ld a, (de)
inc l xor (hl)
ld a, (hl) ld (de), a
and c inc d
ld (de), a inc l
dec e ld a, (de)
ld a, (de) xor (hl)
xor (hl) ld (de), a
and c inc d
xor (hl) inc l
ld (de), a djnz simple2
inc d ld hl, $f800
inc l add hl, de
djnz doble2 ex de, hl
ld hl, $f801 ret
add hl, de
ex de, hl doble ld l, a
ret add hl, hl
fondo incbin fondo.rcs add hl, hl
doble2 ld a, (de)
xor (hl)
and c
xor (hl)
ld (de), a
inc e
ld a, (hl)
and c
ld (de), a
inc d
inc l
ld a, (hl)
and c
ld (de), a
dec e
ld a, (de)
xor (hl)
and c
xor (hl)
ld (de), a
inc d
inc l
djnz doble2
ld hl, $f801
add hl, de
ex de, hl
ret
fondo incbin fondo.rcs

View File

@ -1,5 +1,8 @@
@rem SPDX-FileCopyrightText: 2016, 2021 Antonio Villena
@rem
@rem SPDX-License-Identifier: GPL-3.0-only
@call ..\..\sdk\setenv.bat @call ..\..\sdk\setenv.bat
FuenteABin FuenteABin fuente6x8.png fuente6x8.bin
Png2Rcs fondo.png fondo.rcs -a fondo.atr Png2Rcs fondo.png fondo.rcs -a fondo.atr
sjasmplus scroll.asm sjasmplus scroll.asm
call :getfilesize scroll.bin call :getfilesize scroll.bin

View File

@ -1,59 +1,68 @@
include define.asm ; scrolldesc.asm
output scrolldesc.bin ;
org $5ccb ; SPDX-FileCopyrightText: Copyright (C) 2016, 2017, 2020, 2021 Antonio Villena
ld de, $5e6d+filesize-1 ;
di ; SPDX-License-Identifier: GPL-3.0-only
defb $de, $c0, $37, $0e, $8f, $39, $96
jr aqui ; Compatible compilers:
getbit ld a, (hl) ; SJAsmPlus, <https://github.com/sjasmplus/sjasmplus/>
dec hl
adc a, a include define.asm
ret output scrolldesc.bin
aqui ld hl, fin-1 org $5ccb
ld de, $5e6d+filesize-1
; ----------------------------------------------------------------------------- di
; ZX7 Backwards by Einar Saukas, Antonio Villena defb $de, $c0, $37, $0e, $8f, $39, $96
; Parameters: jr aqui
; HL: source address (compressed data) getbit ld a, (hl)
; DE: destination address (decompressing) dec hl
; ----------------------------------------------------------------------------- adc a, a
dzx7b ld bc, $8000 ret
ld a, b aqui ld hl, fin-1
copyby inc c
ldd ; -----------------------------------------------------------------------------
mainlo add a, a ; ZX7 Backwards by Einar Saukas, Antonio Villena
call z, getbit ; Parameters:
jr nc, copyby ; HL: source address (compressed data)
push de ; DE: destination address (decompressing)
ld d, c ; -----------------------------------------------------------------------------
defb $30 dzx7b ld bc, $8000
lenval add a, a ld a, b
call z, getbit copyby inc c
rl c ldd
rl b mainlo add a, a
add a, a call z, getbit
call z, getbit jr nc, copyby
jr nc, lenval push de
inc c ld d, c
jr z, exitdz defb $30
ld e, (hl) lenval add a, a
dec hl call z, getbit
sll e rl c
jr nc, offend rl b
ld d, $10 add a, a
nexbit add a, a call z, getbit
call z, getbit jr nc, lenval
rl d inc c
jr nc, nexbit jr z, exitdz
inc d ld e, (hl)
srl d dec hl
offend rr e sll e
ex (sp), hl jr nc, offend
ex de, hl ld d, $10
adc hl, de nexbit add a, a
lddr call z, getbit
exitdz pop hl rl d
jr nc, mainlo jr nc, nexbit
jp $7be4 inc d
incbin scroll.bin.zx7b srl d
fin offend rr e
ex (sp), hl
ex de, hl
adc hl, de
lddr
exitdz pop hl
jr nc, mainlo
jp $7be4
incbin scroll.bin.zx7b
fin

View File

@ -1,3 +1,12 @@
; string.asm
;
; SPDX-FileCopyrightText: Copyright (C) 2016, 2017, 2020, 2021 Antonio Villena
;
; SPDX-License-Identifier: GPL-3.0-only
; Compatible compilers:
; SJAsmPlus, <https://github.com/sjasmplus/sjasmplus/>
; 01234567 01234567 01234567 01234567 ; 01234567 01234567 01234567 01234567
; abcdefab cdefabcd efabcdef 0642 ; abcdefab cdefabcd efabcdef 0642
; abcde fabcdefa bcdefabc def 3175 ; abcde fabcdefa bcdefabc def 3175
@ -187,7 +196,7 @@
dz $48, 'Pagantipaco' dz $48, 'Pagantipaco'
dz $48, 'Pedro Romero' dz $48, 'Pedro Romero'
dz $48, 'Peter Robert Jones' dz $48, 'Peter Robert Jones'
dz $48, 'Peter \'Sweetlilmre\' Edwards' dz $48, "Peter 'Sweetlilmre' Edwards"
dz $48, 'peterthedark' dz $48, 'peterthedark'
dz $48, 'princemegahit' dz $48, 'princemegahit'
dz $48, 'Radastan' dz $48, 'Radastan'
@ -280,4 +289,4 @@
dz $48 dz $48
dz $48 dz $48
dz $48 dz $48
defb 1 defb 1

View File

@ -1,327 +1,350 @@
output UPGRADE ; upgrade.asm
;
define FA_READ 0x01 ; Copyright (C) 2016, 2020, 2021 Antonio Villena
define M_GETSETDRV 0x89 ;
define F_OPEN 0x9a ; This program is free software: you can redistribute it and/or modify
define F_CLOSE 0x9b ; it under the terms of the GNU General Public License as published by
define F_READ 0x9d ; the Free Software Foundation, version 3.
define F_SEEK 0x9f ;
; This program is distributed in the hope that it will be useful,
define zxuno_port $fc3b ; but WITHOUT ANY WARRANTY; without even the implied warranty of
define flash_spi 2 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
define flash_cs 48 ; GNU General Public License for more details.
;
macro wreg dir, dato ; You should have received a copy of the GNU General Public License
call rst28 ; along with this program. If not, see <https://www.gnu.org/licenses/>.
defb dir, dato ;
endm ; SPDX-FileCopyrightText: Copyright (C) 2016, 2020, 2021 Antonio Villena
;
org $2000 ; comienzo de la ejecución de los comandos ESXDOS ; SPDX-License-Identifier: GPL-3.0-only
Main xor a ; Compatible compilers:
rst $08 ; SJAsmPlus, <https://github.com/sjasmplus/sjasmplus/>
db M_GETSETDRV ; A = unidad actual
jr nc, SDCard output UPGRADE
call Print
dz 'SD card not inserted' define FA_READ 0x01
ret define M_GETSETDRV 0x89
SDCard ld b, FA_READ ; B = modo de apertura define F_OPEN 0x9a
ld hl, FileName ; HL = Puntero al nombre del fichero (ASCIIZ) define F_CLOSE 0x9b
rst $08 define F_READ 0x9d
db F_OPEN define F_SEEK 0x9f
ld (handle+1), a
jr nc, FileFound define zxuno_port $fc3b
call Print define flash_spi 2
dz 'File FLASH not found' define flash_cs 48
ret
FileFound ld l, 0 macro wreg dir, dato
ld bc, 0 call rst28
ld de, 0 defb dir, dato
rst $08 endm
db F_SEEK
call Print org $2000 ; comienzo de la ejecución de los comandos ESXDOS
dz 'No '
ld a, (puerto+2) Main xor a
add a, $30 rst $08
rst $10 db M_GETSETDRV ; A = unidad actual
call repe jr nc, SDCard
jr nz, nfallo call Print
; call hex dz 'SD card not inserted'
call Print ret
dz 'Flash error' SDCard ld b, FA_READ ; B = modo de apertura
jr Next ld hl, FileName ; HL = Puntero al nombre del fichero (ASCIIZ)
nfallo halt rst $08
halt db F_OPEN
;jr Verify;call hex ld (handle+1), a
ld ixl, 0 jr nc, FileFound
ld de, $0000 call Print
exx dz 'File FLASH not found'
Bucle ld a, ixl ret
inc a FileFound ld l, 0
and $0f ld bc, 0
jr nz, punto ld de, 0
ld a, '.' rst $08
exx db F_SEEK
push de call Print
rst $10 dz 'No '
pop de ld a, (puerto+2)
exx add a, $30
punto ld hl, $8000 rst $10
ld bc, $4000 call repe
handle ld a, 0 jr nz, nfallo
rst $08 ; call hex
db F_READ call Print
jr nc, ReadOK dz 'Flash error'
call Print jr Next
dz 'Read Error' nfallo halt
ret halt
ReadOK ld a, $40 ;jr Verify;call hex
ld hl, $8000 ld ixl, 0
exx ld de, $0000
call wrflsh exx
inc de Bucle ld a, ixl
exx inc a
dec ixl and $0f
jr nz, Bucle jr nz, punto
ld a, '.'
halt exx
halt push de
rst $10
Verify ld de, $8000 pop de
ld hl, $0040 exx
ld a, 2 punto ld hl, $8000
call rdflsh ld bc, $4000
ld de, $8000 handle ld a, 0
ld hl, 0 rst $08
Verify1 ex de, hl db F_READ
ld c, (hl) jr nc, ReadOK
inc l call Print
ld b, (hl) dz 'Read Error'
inc hl ret
ex de, hl ReadOK ld a, $40
add hl, bc ld hl, $8000
bit 1, d exx
jr z, Verify1 call wrflsh
ld a, h inc de
call hex exx
ld a, l dec ixl
call hex jr nz, Bucle
halt
halt halt
halt
; ld de, $371a
; sbc hl, de Verify ld de, $8000
; jr z, Next ld hl, $0040
; call Print ld a, 2
; dz 'CRC Error' call rdflsh
Next ld a, 13 ld de, $8000
rst $10 ld hl, 0
ld a, (puerto+2) Verify1 ex de, hl
inc a ld c, (hl)
ld (puerto+2), a inc l
cp $10 ld b, (hl)
ld a, (handle+1) inc hl
jp nz, FileFound ex de, hl
rst $08 add hl, bc
db F_CLOSE bit 1, d
ret jr z, Verify1
ld a, h
Print pop hl call hex
db $3e ld a, l
Print1 rst $10 call hex
ld a, (hl) halt
inc hl halt
or a
jr nz, Print1 ; ld de, $371a
jp (hl) ; sbc hl, de
; jr z, Next
; ------------------------ ; call Print
; Write to SPI flash ; dz 'CRC Error'
; Parameters: Next ld a, 13
; A: number of pages (256 bytes) to write rst $10
; DE: target address without last byte ld a, (puerto+2)
; BC': zxuno_port+$100 (constant) inc a
; HL': source address from memory ld (puerto+2), a
; ------------------------ cp $10
wrflsh ex af, af' ld a, (handle+1)
wrfls1 call puerto jp nz, FileFound
wreg flash_spi, 6 ; envío write enable rst $08
call flashcs db F_CLOSE
call puerto ret
wreg flash_spi, $20 ; envío sector erase
out (c), d Print pop hl
out (c), e db $3e
out (c), a Print1 rst $10
call flashcs ld a, (hl)
wrfls2 call waits5 inc hl
call puerto or a
wreg flash_spi, 6 ; envío write enable jr nz, Print1
call flashcs jp (hl)
call puerto
wreg flash_spi, 2 ; page program ; ------------------------
out (c), d ; Write to SPI flash
out (c), e ; Parameters:
out (c), a ; A: number of pages (256 bytes) to write
ld a, $20 ; DE: target address without last byte
exx ; BC': zxuno_port+$100 (constant)
ld bc, zxuno_port+$100 ; HL': source address from memory
wrfls3 inc b ; ------------------------
outi wrflsh ex af, af'
inc b wrfls1 call puerto
outi wreg flash_spi, 6 ; envío write enable
inc b call flashcs
outi call puerto
inc b wreg flash_spi, $20 ; envío sector erase
outi out (c), d
inc b out (c), e
outi out (c), a
inc b call flashcs
outi wrfls2 call waits5
inc b call puerto
outi wreg flash_spi, 6 ; envío write enable
inc b call flashcs
outi call puerto
dec a wreg flash_spi, 2 ; page program
jr nz, wrfls3 out (c), d
exx out (c), e
call flashcs out (c), a
ex af, af' ld a, $20
dec a exx
jr z, waits5 ld bc, zxuno_port+$100
ex af, af' wrfls3 inc b
inc e outi
ld a, e inc b
and $0f outi
jr nz, wrfls2 inc b
ld hl, wrfls1 outi
push hl inc b
waits5 call puerto outi
wreg flash_spi, 5 ; envío read status inc b
in a, (c) outi
waits6 in a, (c) inc b
and 1 outi
jr nz, waits6 inc b
outi
flashcs push af inc b
ld a, (puerto+2) outi
rrca dec a
jr c, flashcs1 jr nz, wrfls3
wreg flash_cs, $ff exx
pop af call flashcs
ret ex af, af'
flashcs1 wreg flash_cs+1, $ff dec a
pop af jr z, waits5
ret ex af, af'
inc e
puerto push af ld a, e
ld a, 0 and $0f
srl a jr nz, wrfls2
push af ld hl, wrfls1
ld bc, zxuno_port push hl
ld a, flash_cs waits5 call puerto
adc a, 0 wreg flash_spi, 5 ; envío read status
out (c), a in a, (c)
pop bc waits6 in a, (c)
inc b and 1
ld a, $7f jr nz, waits6
puerto1 rlca
djnz puerto1 flashcs push af
ld bc, zxuno_port + $100 ld a, (puerto+2)
out (c), a rrca
pop af jr c, flashcs1
ret wreg flash_cs, $ff
pop af
rst28 ld bc, zxuno_port + $100 ret
pop hl flashcs1 wreg flash_cs+1, $ff
outi pop af
ld b, (zxuno_port >> 8)+2 ret
outi
jp (hl) puerto push af
ld a, 0
repe ld e, 0 srl a
repe1 call puerto push af
wreg flash_spi, 6 ; envío write enable ld bc, zxuno_port
call flashcs ld a, flash_cs
call puerto adc a, 0
wreg flash_spi, 1 ; envío write register status out (c), a
out (c), 0 pop bc
ld a, 2 inc b
out (c), a ld a, $7f
call flashcs puerto1 rlca
call puerto djnz puerto1
wreg flash_spi, $35 ; envío write register status ld bc, zxuno_port + $100
in a, (c) out (c), a
in a, (c) pop af
call flashcs ret
and 2
ret nz rst28 ld bc, zxuno_port + $100
dec e pop hl
jr nz, repe1 outi
ret ld b, (zxuno_port >> 8)+2
outi
; ------------------------ jp (hl)
; Read from SPI flash
; Parameters: repe ld e, 0
; DE: destination address repe1 call puerto
; HL: source address without last byte wreg flash_spi, 6 ; envío write enable
; A: number of pages (256 bytes) to read call flashcs
; ------------------------ call puerto
rdflsh ex af, af' wreg flash_spi, 1 ; envío write register status
xor a out (c), 0
push hl ld a, 2
call puerto out (c), a
wreg flash_spi, 3 ; envio flash_spi un 3, orden de lectura call flashcs
pop hl call puerto
push hl wreg flash_spi, $35 ; envío write register status
out (c), h in a, (c)
out (c), l in a, (c)
out (c), a call flashcs
ex af, af' and 2
ex de, hl ret nz
in f, (c) dec e
rdfls1 ld e, $20 jr nz, repe1
rdfls2 ini ret
inc b
ini ; ------------------------
inc b ; Read from SPI flash
ini ; Parameters:
inc b ; DE: destination address
ini ; HL: source address without last byte
inc b ; A: number of pages (256 bytes) to read
ini ; ------------------------
inc b rdflsh ex af, af'
ini xor a
inc b push hl
ini call puerto
inc b wreg flash_spi, 3 ; envio flash_spi un 3, orden de lectura
ini pop hl
inc b push hl
dec e out (c), h
jr nz, rdfls2 out (c), l
dec a out (c), a
jr nz, rdfls1 ex af, af'
call flashcs ex de, hl
pop hl in f, (c)
ret rdfls1 ld e, $20
rdfls2 ini
hex push af inc b
and $f0 ini
rrca inc b
rrca ini
rrca inc b
rrca ini
cp $0a inc b
jr c, mayo ini
add a, 7 inc b
mayo add a, $30 ini
rst $10 inc b
pop af ini
and $0f inc b
cp $0a ini
jr c, maya inc b
add a, 7 dec e
maya add a, $30 jr nz, rdfls2
rst $10 dec a
ret jr nz, rdfls1
call flashcs
FileName dz 'FLASH.ZX1' pop hl
ret
hex push af
and $f0
rrca
rrca
rrca
rrca
cp $0a
jr c, mayo
add a, 7
mayo add a, $30
rst $10
pop af
and $0f
cp $0a
jr c, maya
add a, 7
maya add a, $30
rst $10
ret
FileName dz 'FLASH.ZX1'

View File

@ -1,10 +1,10 @@
# Authors # Authors
2021 Ivan Tatarinov <ivan-tat@ya.ru> 2021 Antonio Villena
# Contributors # Contributors
No one yet. 2021 Ivan Tatarinov <ivan-tat@ya.ru> (Makefile)
# License # License

5
sdk/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: CC0-1.0
conf.mk

View File

@ -6,6 +6,8 @@
# * GNU on Linux, FreeBSD etc. # * GNU on Linux, FreeBSD etc.
# * GNU on Windows NT (using MinGW/MSYS/Cygwin/WSL) # * GNU on Windows NT (using MinGW/MSYS/Cygwin/WSL)
# #
# Configure:
# make configure [<CFG_PARAMS>]
# Build: # Build:
# make [<FLAGS>] build | build-<TARGET> # make [<FLAGS>] build | build-<TARGET>
# Install: # Install:
@ -17,6 +19,8 @@
# make [<FLAGS>] distclean | distclean-<TARGET> # make [<FLAGS>] distclean | distclean-<TARGET>
# #
# where: # where:
# <CFG_PARAMS> is a set of parameters of type <CFG_VAR>=<VALUE>
# USE_SJASMPLUS_VERSION: sjasmplus, z00m128 (default).
# <FLAGS> are these flags: # <FLAGS> are these flags:
# [BUILD=<BUILD>] [FORCEBUILD=<FB_FLAG>] [FORCECLEAN=<FC_FLAG>] # [BUILD=<BUILD>] [FORCEBUILD=<FB_FLAG>] [FORCECLEAN=<FC_FLAG>]
# where values are: # where values are:
@ -62,8 +66,14 @@ $(TARGETS): | src
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install-$@ $(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) install-$@
.PHONY:\ .PHONY:\
build install uninstall clean distclean\ configure build install uninstall clean distclean\
$(foreach t,$(TARGETS),build-$(t) install-$(t) uninstall-$(t) clean-$(t) distclean-$(t)) $(foreach t,$(TARGETS),build-$(t) install-$(t) uninstall-$(t) clean-$(t) distclean-$(t))
configure:
@echo '# This is a local configuration file for Make.' >conf.mk;\
echo '# This file is generated automatically by `make configure`.' >>conf.mk;\
echo 'USE_SJASMPLUS_VERSION=$(USE_SJASMPLUS_VERSION)' >>conf.mk
build install uninstall clean distclean \ build install uninstall clean distclean \
$(foreach t,$(TARGETS),build-$(t) install-$(t) uninstall-$(t) clean-$(t) distclean-$(t)): | src $(foreach t,$(TARGETS),build-$(t) install-$(t) uninstall-$(t) clean-$(t) distclean-$(t)): | src
$(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) $@ $(MAKE) -w -C $| prefix=$(shell realpath --relative-to=$| $(prefix)) $@

View File

@ -10,6 +10,7 @@ No one yet.
This document is under [GNU FDL-1.3 or later](https://spdx.org/licenses/GFDL-1.3-or-later.html) license. This document is under [GNU FDL-1.3 or later](https://spdx.org/licenses/GFDL-1.3-or-later.html) license.
SJAsmPlus Z80 Assembler is distributed under [zlib](https://spdx.org/licenses/Zlib.html) license. SJAsmPlus Z80 Assembler is distributed under [zlib](https://spdx.org/licenses/Zlib.html) license.
SJAsmPlus Z80 Assembler by aprisobal (*z00m128*) is distributed under [BSD 3-Clause "New" or "Revised"](https://spdx.org/licenses/BSD-3-Clause.html) license.
z88dk is distributed under [Clarified Artistic](https://spdx.org/licenses/ClArtistic.html) license. z88dk is distributed under [Clarified Artistic](https://spdx.org/licenses/ClArtistic.html) license.
LodePNG C/C++ library is distributed under [zlib](https://spdx.org/licenses/Zlib.html) license. LodePNG C/C++ library is distributed under [zlib](https://spdx.org/licenses/Zlib.html) license.
@ -71,6 +72,8 @@ Go to the project's root directory, enter `sdk` sub-directory and type one of th
Command | Description Command | Description
----|---- ----|----
`make configure` | Configure build with default values (on first call)
`make configure <CFG_PARAMS>` | Configure build with explicit values
`make` | Build and install all tools from sources `make` | Build and install all tools from sources
`make <TARGET>` | Build and install only the TARGET from sources `make <TARGET>` | Build and install only the TARGET from sources
`make BUILD=<BUILD>` | Cross-build and install all tools from sources for Windows platform `make BUILD=<BUILD>` | Cross-build and install all tools from sources for Windows platform
@ -78,6 +81,12 @@ Command | Description
where: where:
`<CFG_PARAMS>` is a series of parameters of type `<CFG_VAR>=<VALUE>`.
Value of `<CFG_VAR>` | Possible values | Description
----|----|----
`USE_SJASMPLUS_VERSION` | `sjasmplus`, `z00m128` | Version of SJAsmPlus Z80 Compiler to use. Default is `z00m128` (aprisobal).
Value of `TARGET` | Origin | Description Value of `TARGET` | Origin | Description
----|----|---- ----|----|----
`sjasmplus` | downloaded | SJAsmPlus Z80 Assembler `sjasmplus` | downloaded | SJAsmPlus Z80 Assembler
@ -194,6 +203,8 @@ Go to the project's root directory, enter `sdk` sub-directory and type one of th
Command | Description Command | Description
----|---- ----|----
`make configure` | Configure build with default values (on first call)
`make configure <CFG_PARAMS>` | Configure build with explicit values
`make` | **Quick setup** of all tools (download precompiled binaries and install them) `make` | **Quick setup** of all tools (download precompiled binaries and install them)
`make <TARGET>` | **Qucik setup** of the TARGET only `make <TARGET>` | **Qucik setup** of the TARGET only
`make FORCEBUILD=1` | Build and install all tools from sources `make FORCEBUILD=1` | Build and install all tools from sources
@ -201,6 +212,8 @@ Command | Description
where: where:
`<CFG_PARAMS>` is a series of parameters as described in [2.2](#22-build-tools).
Value of `TARGET` | Sources origin | Binaries origin (**Quick setup**) | Build from sources Value of `TARGET` | Sources origin | Binaries origin (**Quick setup**) | Build from sources
----|----|----|---- ----|----|----|----
`sjasmplus` | downloaded | downloaded (**yes**) | available `sjasmplus` | downloaded | downloaded (**yes**) | available
@ -280,6 +293,7 @@ These changes are actual for current invocation of command shell and all child p
* [cmd](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cmd) - command interpreter in Windows * [cmd](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cmd) - command interpreter in Windows
* [Windows commands](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands) * [Windows commands](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands)
* [SJAsmPlus](https://github.com/sjasmplus/sjasmplus) - Z80 Assembler * [SJAsmPlus](https://github.com/sjasmplus/sjasmplus) - Z80 Assembler
* [SJAsmPlus by aprisobal](https://github.com/z00m128/sjasmplus) - Z80 Assembler
* [Z88DK](https://github.com/z88dk/z88dk) - The Development Kit for Z80 Computers * [Z88DK](https://github.com/z88dk/z88dk) - The Development Kit for Z80 Computers
* [LodePNG](https://github.com/lvandeve/lodepng) - PNG encoder and decoder in C and C++ * [LodePNG](https://github.com/lvandeve/lodepng) - PNG encoder and decoder in C and C++
* [Open Source FPGA Foundation Formed to Accelerate Widespread Adoption of Programmable Logic](https://osfpga.org/osfpga-foundation-launched/) - news article (April 8, 2021) * [Open Source FPGA Foundation Formed to Accelerate Widespread Adoption of Programmable Logic](https://osfpga.org/osfpga-foundation-launched/) - news article (April 8, 2021)

View File

@ -31,6 +31,11 @@ export PATH
endif # !ZXSDK endif # !ZXSDK
-include $(ZXSDK)/conf.mk
# Default values
USE_SJASMPLUS_VERSION ?= z00m128
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
EXESUFFIX := .exe EXESUFFIX := .exe
DLLSUFFIX := .dll DLLSUFFIX := .dll

0
sdk/lib/liblodepng.dll Normal file → Executable file
View File

5
sdk/src/.gitignore vendored
View File

@ -9,6 +9,11 @@ sjasmplus-win32.7z
sjasmplus-win32.7z.sha256 sjasmplus-win32.7z.sha256
sjasmplus-win64.7z sjasmplus-win64.7z
sjasmplus-win64.7z.sha256 sjasmplus-win64.7z.sha256
sjasmplus-z00m128
sjasmplus-z00m128-src.tgz
sjasmplus-z00m128-src.tgz.sha256
sjasmplus-z00m128-win32.zip
sjasmplus-z00m128-win32.zip.sha256
z88dk z88dk
z88dk-src.tgz z88dk-src.tgz
z88dk-src.tgz.sha256 z88dk-src.tgz.sha256

View File

@ -53,25 +53,24 @@ distclean: $(foreach t,$(TARGETS),distclean-$(t))
_DoBuild:=1 _DoBuild:=1
_UsePrecompiledOnWindows:=0 _UsePrecompiledOnWindows:=0
_DoClean:=1
ifeq ($(OS),Windows_NT) ifeq ($(OS),Windows_NT)
ifneq ($(FORCEBUILD),1) ifneq ($(FORCEBUILD),1)
_DoBuild:=0 _DoBuild:=0
_UsePrecompiledOnWindows:=1 _UsePrecompiledOnWindows:=1
endif endif
endif
_DoClean:=1
ifeq ($(OS),Windows_NT)
ifneq ($(FORCECLEAN),1) ifneq ($(FORCECLEAN),1)
_DoClean:=0 _DoClean:=0
endif endif
endif endif # $(OS)==Windows_NT
# sjasmplus # sjasmplus
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-sjasmplus) .PHONY: $(foreach a,build install uninstall clean distclean,$(a)-sjasmplus)
ifeq ($(USE_SJASMPLUS_VERSION),sjasmplus)
ifeq ($(_DoBuild),1) ifeq ($(_DoBuild),1)
build-sjasmplus: | sjasmplus/.extracted sjasmplus.mk build-sjasmplus: | sjasmplus/.extracted sjasmplus.mk
@ -95,14 +94,14 @@ install-sjasmplus: | sjasmplus/.extracted sjasmplus.mk
ifeq ($(_DoClean),1) ifeq ($(_DoClean),1)
uninstall-sjasmplus: | sjasmplus.mk uninstall-sjasmplus: | sjasmplus.mk
if test -f sjasmplus; then\ if test -d sjasmplus; then\
$(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix)) uninstall;\ $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk prefix=$(shell realpath --relative-to=sjasmplus $(prefix)) uninstall;\
else\ else\
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX);\ rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX);\
fi fi
clean-sjasmplus: | sjasmplus.mk clean-sjasmplus: | sjasmplus.mk
if test -f sjasmplus; then $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk clean; fi if test -d sjasmplus; then $(MAKE) -w -C sjasmplus -f ../sjasmplus.mk clean; fi
else # !_DoClean else # !_DoClean
@ -176,6 +175,108 @@ distclean-sjasmplus:;
endif # !_DoClean endif # !_DoClean
else ifeq ($(USE_SJASMPLUS_VERSION),z00m128)
ifeq ($(_DoBuild),1)
build-sjasmplus: | sjasmplus-z00m128/.extracted sjasmplus-z00m128.mk
$(MAKE) -w -C sjasmplus -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix))
sjasmplus-z00m128/.extracted: sjasmplus-z00m128-src.tgz
echo '114807bf53d3526b4d1ae7d40f3050b9ee98220df74931efc1e6d1fe5aba3d02 $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D) sjasmplus-1.18.2
tar -xzf $<
mv sjasmplus-1.18.2 $(@D)
touch $@
sjasmplus-z00m128-src.tgz:
wget -c https://github.com/z00m128/sjasmplus/archive/refs/tags/v1.18.2.tar.gz -O $@
install-sjasmplus: | sjasmplus-z00m128/.extracted sjasmplus-z00m128.mk
$(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix)) install
ifeq ($(_DoClean),1)
uninstall-sjasmplus: | sjasmplus-z00m128.mk
if test -d sjasmplus-z00m128; then\
$(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk prefix=$(shell realpath --relative-to=sjasmplus-z00m128 $(prefix)) uninstall;\
else\
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX);\
fi
clean-sjasmplus: | sjasmplus-z00m128.mk
if test -d sjasmplus-z00m128; then $(MAKE) -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk clean; fi
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _DoBuild
ifeq ($(_UsePrecompiledOnWindows),1)
build-sjasmplus: sjasmplus-z00m128/sjasmplus$(EXESUFFIX)
sjasmplus-z00m128/sjasmplus$(EXESUFFIX): | sjasmplus-z00m128/.extracted
SJASMPLUS_ARCHIVE := sjasmplus-z00m128-win32.zip
SJASMPLUS_ARCHIVE_SHA256 := 848bca2522d6febbf3e3c48c634731ecd61899166f5922ed15857e8063c3dc4b
sjasmplus-z00m128/.extracted: $(SJASMPLUS_ARCHIVE)
echo '$(SJASMPLUS_ARCHIVE_SHA256) $<' >$<.sha256
sha256sum -c $<.sha256
rm -f $<.sha256
rm -rf $(@D)
unzip -nq $<
mv sjasmplus-1.18.2.win $(@D)
touch $@
sjasmplus-z00m128-win32.zip:
wget -c https://github.com/z00m128/sjasmplus/releases/download/v1.18.2/sjasmplus-1.18.2.win.zip -O $@
install-sjasmplus: $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
$(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX): sjasmplus-z00m128/sjasmplus$(EXESUFFIX)
$(INSTALL_PROGRAM) $< $@
ifeq ($(_DoClean),1)
uninstall-sjasmplus:
rm -f $(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX)
clean-sjasmplus:
rm -rf sjasmplus-z00m128
else # !_DoClean
uninstall-sjasmplus clean-sjasmplus:;
endif # !_DoClean
endif # _UsePrecompiledOnWindows
ifeq ($(_DoClean),1)
distclean-sjasmplus:
rm -rf sjasmplus-z00m128
rm -f\
sjasmplus-z00m128-src.tgz\
sjasmplus-z00m128-src.tgz.sha256\
sjasmplus-z00m128-win32.zip\
sjasmplus-z00m128-win32.zip.sha256
else # !_DoClean
distclean-sjasmplus:;
endif # !_DoClean
else
$(error Unknown SJAsmPlus version selected: `$(USE_SJASMPLUS_VERSION)')
endif
# z88dk # z88dk
.PHONY: $(foreach a,build install uninstall clean distclean,$(a)-z88dk) .PHONY: $(foreach a,build install uninstall clean distclean,$(a)-z88dk)

View File

@ -0,0 +1,58 @@
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Supported environments:
# * GNU on Linux, FreeBSD etc.
# * GNU on Windows NT (using MinGW/MSYS/Cygwin/WSL)
#
# Build:
# make [BUILD=<BUILD>] -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk
# Install / Uninstall:
# make [BUILD=<BUILD>] [prefix=<PREFIX>] -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk install | uninstall
# Clean:
# make [BUILD=<BUILD>] -w -C sjasmplus-z00m128 -f ../sjasmplus-z00m128.mk clean
#
# where:
# <BUILD> - see included `common.mk'.
# <PREFIX> is a prefix directory to install files into.
include ../../common.mk
srcdir = .
prefix ?= /usr/local
exec_prefix ?= $(prefix)
bindir ?= $(exec_prefix)/bin
INSTALL ?= install
INSTALL_PROGRAM ?= $(INSTALL)
BINS = sjasmplus$(EXESUFFIX)
.PHONY: all
all: $(foreach t,$(BINS),build/$(t))
build\
$(DESTDIR)$(bindir):
mkdir -p $@
sjasmplus$(EXESUFFIX): | Makefile
$(MAKE) clean
$(MAKE)
.PHONY: install
install: $(foreach t,$(BINS),$(DESTDIR)$(bindir)/$(t))
$(DESTDIR)$(bindir)/sjasmplus$(EXESUFFIX): sjasmplus$(EXESUFFIX) | $(DESTDIR)$(bindir)
$(INSTALL_PROGRAM) $< $@
.PHONY: uninstall
uninstall:
rm -f $(foreach t,$(BINS),$(DESTDIR)$(bindir)/$(t))
.PHONY: clean
clean:
$(MAKE) clean
.PHONY: distclean
distclean: clean

View File

@ -29,9 +29,6 @@ INSTALL_PROGRAM ?= $(INSTALL)
BINS = sjasmplus$(EXESUFFIX) BINS = sjasmplus$(EXESUFFIX)
.PHONY: all
all: $(foreach t,$(BINS),build/$(t))
ifeq ($(BUILD),mingw32) ifeq ($(BUILD),mingw32)
CMAKEFLAGS := -DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake CMAKEFLAGS := -DCMAKE_TOOLCHAIN_FILE=../Toolchain-mingw32.cmake
else ifeq ($(BUILD),mingw64) else ifeq ($(BUILD),mingw64)