[zxspectrum] [OT] ZX81 e Memotech HRG

  • From: "Stefano Bodrato" <stefano_bodrato@xxxxxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Thu, 29 Apr 2010 10:46:49 +0200

Eugenio, con una pazienza da me apprezzatissima, si è prestato, o meglio ha 
prestato i suoi cuccioli neri per collaudare il codice che avevo preparato per 
z88dk.

La grafica ad alta risoluzione sullo ZX81 ora gira anche sulla Memotech HRG !
Allego un link a una delle foto gentilmente fornitemi:
http://www.z88dk.org/wiki/doku.php?id=library:zx81#high_resolution_library_related_functions

Estratto dalle mail che ci siamo scambiati:

....

Yeah !!
Non sai che emozione !
Ti rendi conto che è il primo gioco in L/M mai fatto girare su quel tipo di 
hardware ?
 
 
Il meccanismo originale prevede il patching della ROM (con il giochino della 
shadow RAM di cui parlavo), ma con z88dk non mi basta, perchè devo riscrivere 
le interrupt per salvare almeno un registro indice (ovvero IY). 
Le interrupt video sono eseguite alla locazione puntata da IX, che quindi NON 
SI PUO' toccare (quindi ho modificato z80asm inserendo un'opzione che scambia 
tra loro i registri indice (-IXIY), così tutte le funzioni di z88dk invece di 
pasticciare con IX di fatto stanno usando IY).
A questo punto si è trattato di riscrivere l'interrupt del modo SLOW 
compensando la temporizzazione dei cicli di ritardo perchè le istruzioni extra 
che avevo inserito per salvare IY aggiungevano del delay.
 
L'HRG del tipo WRX si basa su delle interrupt alternative, che anche in questo 
caso ho dovuto sistemare come sopra.. ma nel caso della Memotech non servivano 
a nulla, perchè la 'grafica' lì è prodotta con meccanismi simili al testo SLOW.
Quindi ho copiato le meccaniche di patching che la Memotech HRG fa nella ROM e 
le ho inserite nella mia interrupt modificata..  e già che c'ero ho escluso del 
tutto il BASIC, ricostruendo i meccanismi di allocazione della memoria.
 
EightyOne a dire il vero si è dimostrato molto ben fatto, è solo troppo 
tollerante (ad esempio l'emulazione del raster TV aggancia frequenze degne di 
monitor multisync da fantascenza).
 
Ora devo solo mascherare la prima colonna a sinistra.. o tranciare quella più a 
destra, e la cosa dovrebbe stabilizzarsi.
 
Sono molto indeciso su come procedere, forse sarebbe astuto modificare 
'pixeladdress' in modo che sovrapponga i due byte più a destra, così la 
risoluzione 'virtuale' resta sempre di 256 punti.
 
..chissà se il primo byte, con qualche accorgimento può essere utilizzato ?
Forse basta evitare di cascare nella casistica dell'End Of Line:  non è un caso 
che nel set di caratteri dello ZX81 ENTER ha il codice dell'istruzione HALT 
dello Z80.
 

Other related posts:

  • » [zxspectrum] [OT] ZX81 e Memotech HRG - Stefano Bodrato