ENGLISH READERS SCROLL DOWN A LITTLE BIT
Compresor/decompresor aPPack para ZX Basic
; aPPack decompressor
; original source by dwedit
; very slightly adapted by utopian
; optimized by Metalbrain
; Adapted for ZX Basic by na_th_an
Tenemos aquí un descompresor de appack directamente utilizable desde ZX Basic. Se trata de una subrutina a la que pasamos la dirección de un bloque comprimido en memoria con appack y una dirección donde descomprimir los datos.
Para utilizar el sistema, primero tendremos que usar el compresor desde una ventana de linea de comandos. En el paquete se encuentra el binario para Windows. Para mostrar el ejemplo, comprimiremos una pantalla completa, un archivo de 6912 bytes llamado pantalla.scr. El binario comprimido se almacenará en pantalla-c.bin:
$this->bbcode_second_pass_code('', 'apack pantalla.scr pantalla-c.bin')
El programa hará su trabajo y obtendremos pantalla-c.bin.
Para nuestro proyecto ZX Basic, crearemos un archivo almacen.bas donde almacenaremos nuestros archivos comprimidos incluyéndolos con INCBIN desde bloques Asm/End Asm, usando etiquetas para poder referirnos a cada bloque binario:
$this->bbcode_second_pass_code('', '' almacen.bas
Sub AlmacenDummyContainer()
pantalla1:
Asm
incbin "pantalla-c.bin"
End Asm
End Sub')
En nuestro proyecto principal, incluiremos este archivo de almacén y aplib.bas, donde se encuentra el descompresor:
$this->bbcode_second_pass_code('', '#include once "aplib.bas"
#include once "almacen.bas"')
Para descomprimir nuestra pantalla en la RAM de video, llamaremos al procedimiento aplibUnpack pasando primero la dirección del bloque comprimido, o sea, @pantalla1, seguido de la dirección de destino, esto es, 16384:
$this->bbcode_second_pass_code('', 'aplibUnpack (@pantalla1, 16384)')
aPPack Compresor/decompresor for ZX Basic
; aPPack decompressor
; original source by dwedit
; very slightly adapted by utopian
; optimized by Metalbrain
; Adapted for ZX Basic by na_th_an
Here's an appack decompressor you can use directly from ZX Basic. The routine gets a source address (where the compressed binary is) and a destination address (where to decompress the binary to).
We first need to compress our binaries. For example, let's compress a whole screen (6912 bytes) from a file called screen.scr. The compressor must be used from a command line window:
$this->bbcode_second_pass_code('', 'apack screen.scr screen-c.bin')
The compressor will do its job and we'll get screen-c.bin
In our ZX Basic project, we'll create an storage.bas file where we'll store our compressed binaries using INCBIN from within Asm/End Asm blocks, using labels to be able to refere to them:
$this->bbcode_second_pass_code('', '' storage.bas
Sub AlmacenDummyContainer()
screen1:
Asm
incbin "screen-c.bin"
End Asm
End Sub')
In our main BAS file, we include the decompressor and our storage file:
$this->bbcode_second_pass_code('', '#include once "aplib.bas"
#include once "storage.bas"')
To decompress our screen in video RAM, we just call the aplibUnpack sub passing the compressed binary address first, then the destination address:
$this->bbcode_second_pass_code('', 'aplibUnpack (@screen1, 16384)')
Aplib para ZX Basic
Moderador: na_th_an
Aplib para ZX Basic
- Adjuntos
-
aplib.zip
- (26.47 KiB) Descargado 526 veces
Como diría Rorshach: "Urm..."
-
- Mensajes: 3
- Registrado: Mar, 01 Oct 2013, 17:53
Re: Aplib para ZX Basic
i need to try this library for stuff like this: https://dl.dropboxusercontent.com/u/795 ... 2e.tar.bz2 (an uncompressed slideshow made on ZX Basic, for msx2+ (laced screen12, in a 4mb .rom file, using ascii16 memory paging) - btw, i'm also curious to see more stuff done on ZX Basic on non-zxspectrum machines! ![Guiño ;)](./images/smilies/icon_e_wink.gif)
![Guiño ;)](./images/smilies/icon_e_wink.gif)
¿Quién está conectado?
Usuarios navegando por este Foro: YaCy [Bot] y 106 invitados