Go to the FreeLists Home Page Home Signup Help Login
 



Browse zxspectrum: This Month's ArchiveMain Archive PageRelated postsPrevious by DateNext by Date

[zxspectrum] Re: poveri processori

  • From: "Alessandro Poppi" <apoppi@xxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Wed, 1 Mar 2006 18:28:55 +0100
On Wednesday, March 01, 2006 5:21 PM [GMT+1],
Mario <mario.prato@xxxxxxxx> wrote:

beh, pensandoci bene costa poco aggiungere un microcontrollore con
interfaccia seriale hardware che faccia il lavoro sporco al posto
dello Z80, a quel punto viste le velocita' delle sd/mmc attuali ci
vorrebbero pochi secondi a caricare tutti e 128K. Dal punto di vista
"sinclair style" invece sarebbe un gravissimo reato... :D

Uno dei problemi che mi hanno fatto passare la voglia di implementarlo in quel modo era la comunicazione efficiente fra micro e Z80. Il micro fa fatica a seguire i tempi di esecuzione di un ciclo I/O Z80 mediante semplice polling (ma forse a 3.5MHz neanche tanto, io volevo farlo andare a 21)... c'e` un pic che ha una porta a 8 bit che funziona come una periferica I/O, solo che i deficienti non hanno integrato una logica che consenta di capire sui due lati quando e se un byte viene letto/scritto. Che non convenga fare una spi con una cpld?


Visto che non mi viene in mente nessuna altra puttanata da aggiungere al badaloc, sto cercando di ottimizzare al massimo il loop di lettura di un byte. Ho gia` limato parecchio tempo scegliendo piu` oculatamente le istruzioni. Adesso sono passato da 2,5 a 1,8 secondi per 48K. L'attuale loop di lettura di un byte e` allegato, cosi` mi date un parere.

Certo che scrivere una routine dedicata per la lettura di 512 bytes sarebbe un bel passo avanti... non dovrei nemmeno perdere tempo a salvare i registri. Vedro`.

Ciao!
spiinbyte
        push bc
        push hl
        ld b,8                  ; bit count
        in a,(SPI_OUTREG)       ; output register state
        ld c,a                  ; clock HIGH
        res CLOCK_BIT,a
        ld h,a                  ; clock LOW
l_spirx
        ld a,h                  ; 4T
        out (SPI_OUTREG),a      ; 11T
        ld a,c                  ; 4T
        out (SPI_OUTREG),a      ; 11T

        in a,(SPI_INREG)        ; 11T
        rlca                    ; 4T input bit D7 --> carry
        rl l                    ; 8T carry shifted in
        djnz l_spirx            ; 8T (13T if jump takes place)
        ld a,l
        cpl                     ; input bit is complemented by hardware
        pop hl
        pop bc
        ret

Other related posts:

  • [zxspectrum] poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori
  • [zxspectrum] Re: poveri processori




  • [ Home | Signup | Help | Login | Archives | Lists ]

    All trademarks and copyrights within the FreeLists archives are owned by their respective owners.
    Everything else ©2008 Avenir Technologies, LLC.