[zxspectrum] Re: zxmmc

  • From: "Alessandro" <apoppi@xxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Fri, 2 Mar 2007 21:46:47 +0100

On Friday, March 02, 2007 9:32 PM [GMT+1],
Paolo Ferraris <pieffe8@xxxxxxxxx> wrote:

Grandioso! 48K in meno di un quarto di secondo! 30 frame al secondo
per i video! (beh... c'e` il problema della memoria contesa, ma forse
a 25 frames ci va, no?)

:-)

Una cosa che mi ha fatto perdere tempo, a parte la modifica alla logica della porta SPI, e` stato il fatto che la seriale hardware funzionasse in modo discontinuo. Alla fine mi sono accorto di aver sottovalutato un particolare: quando accedo ad una porta I/O qualunque, anche se ha A0 alto, l'ULA mi puo` sospendere il clock se la parte alta dell'indirizzo cade nel range $40 - $7F, perche` crede che voglia accedere alla memoria contesa.

Inutile sottolineare quanto male possa funzionare una seriale veloce alla quale viene sospeso il clock ogni tanto :-)

Quando ho scoperto il problema ho ovviato in modo piuttosto banale: invece di IN A,(PORT), faccio

LD BC,PORT
IN A,(C)

In questo modo la parte alta e` 0 e tutto ha subito funzionato perfettamente. Dopo questa premessa, ecco il punto: le INIR (oppure le catene di INI) purtroppo sono soggette al problema, perche` la parte alta in questo caso e` B che e` il contatore!! Probabilmente funzionerebbe meglio mettendo 8 sequenze da 16 INI in cui B parta da $40 invece di 0 ($100)... sarebbe piu` comodo usare la porzione superiore ($FF - $80), che e` larga il doppio, ma poi diventa piu` difficile il test JRNZ. Mah.

E sul badaloc si hanno i famosi 25 frame/secondo ad alta risoluzione,
vero? :-)

A 21.25MHz sono quasi 28, compreso tutto l'overhead. La velocita` di picco durante l'esecuzione di una catena di INI e` 1,3 megabytes/sec. Il caricamento di uno snapshot da 48K impiega 46 millisecondi (misurati) :-)

Ciao!


Other related posts: