La routine e` gia` quasi al massimo della velocita`. Solo alcune cose si
possono migliorare, secondo me:
1) Evitare l'uso di un counter
2) usare JP invece di JR: JP condizionato e` piu` veloce del JR
condizionato quando il salto avviene.
spiinbyte push bc push hl
ld b,8 ; bit count
con ld l,1
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)
con jp nc,l_spirx ; 10T always
ld a,l cpl ; input bit is complemented by hardware pop hl pop bc ret
-p