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.