mirror of https://github.com/zxdos/zxuno.git
Merge branch 'master' of https://github.com/antoniovillena/zxuno
This commit is contained in:
commit
21063ecead
|
@ -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.
|
@ -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.
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
Binary file not shown.
After Width: | Height: | Size: 298 KiB |
Binary file not shown.
After Width: | Height: | Size: 436 KiB |
|
@ -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:;
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Binary file not shown.
|
@ -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/
|
Binary file not shown.
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
# SPDX-FileCopyrightText: 2021 Ivan Tatarinov <ivan-tat@ya.ru>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
conf.mk
|
12
sdk/Makefile
12
sdk/Makefile
|
@ -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)) $@
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
115
sdk/src/Makefile
115
sdk/src/Makefile
|
@ -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)
|
||||||
|
|
|
@ -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
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue