[zxspectrum] Re: zx-badaloc news
- From: "Alessandro" <apoppi@xxxxxxxx>
- To: <zxspectrum@xxxxxxxxxxxxx>
- Date: Tue, 25 Apr 2006 19:16:45 +0200
On Tuesday, April 25, 2006 5:29 PM [GMT+1],
Mario <mario.prato@xxxxxxxx> wrote:
dunque, fra una battuta e l'altra ho piazzato una pausa di circa 60
millisecondi
...che sono senza dubbio piu` che sufficienti a non perdere nessun
carattere.
Io non ho messo nessun ritardo sulle singole battute (pensando erroneamente
che sulla tastiera originale non c'e' nessun "ritardo" tra polpastrello e
superficie del tasto) :-) ma ho dovuto per forza metterlo nella routine che
gestisce le macro o cmq i tasti che implicano piu` di una battuta, come ad
esempio le frecce, l'EDIT, il caps lock, etc.
Ecco quindi un pezzetto del commento che ho messo nel sorgente (ultimamente
sono diventato molto ligio nei commenti):
; TIMER1 is clocked by system clock/4 and through a 1:2 prescaler.
; The system frequency is 85MHz/6 (14.167MHz) and TMR1 is
; reloaded with $5000. The resulting rollover frequency is 39.3Hz.
; This is slow enough for the zx-spectrum keyboard scan routine
; (that runs at 50Hz) to detect any change.
Questa e` la temporizzazione che scandisce l'invio dei keystrokes per le
sequenze di tasti. 39.3Hz corrispondono a 25ms contro i tuoi 60 e questo
spiega l'intera faccenda. La temporizzazione di cui parlo e` implementata
ovviamente sia per la pressione che per il rilascio, ovvero pressione del
tasto, 25ms, rilascio del tasto, 25ms, pressione del tasto, etc.
Posso affermare che 25ms vanno benissimo per tutte le sequenze che ho
implementato, quindi in effetti corrisponde con la scansione eseguita in
interrupt a 50Hz dallo zx-spectrum, TRANNE il caso in cui ci sia una doppia
battuta sullo stesso tasto. Curioso, eh? Funziona perfettamente anche per le
sequenze di shift, ovvero caps_shift, 25ms, "1", 25ms, rilascio "1", 25 ms,
rilascio caps_shift esegue regolarmente la funzione EDIT.
Dato che la flash in cui sono memorizzate le sequenze ha una larghezza di 14
bit, ho potuto sbizzarrirmi ad usare i 6 bit eccedenti (il codice e` 8 bit)
per implementare vari flag. Tra questi, qualche bit viene utilizzato come
contatore msb per timer1. In pratica diventa un contatore (a scalare) di
rollover, quindi ne moltiplica la durata. Per le virgolette ho usato un *4,
ovvero 100ms, ma volendo potrei fare delle prove per trovare il minimo
valore funzionante.
Corollario: e` possibile che per ogni cosa che aggiungo, mi salti fuori una
nuova str... anezza?
Ciao!
- Follow-Ups:
- [zxspectrum] Re: zx-badaloc news
- From: Mario
- [zxspectrum] Re: zx-badaloc news
- From: Stefano
- References:
- [zxspectrum] zx-badaloc news
- From: Alessandro
- [zxspectrum] Re: zx-badaloc news
- From: Paolo Ferraris
- [zxspectrum] Re: zx-badaloc news
- From: Alessandro
- [zxspectrum] Re: zx-badaloc news
- From: Stefano
- [zxspectrum] Re: zx-badaloc news
- From: Mario
Other related posts:
- » [zxspectrum] zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
- » [zxspectrum] Re: zx-badaloc news
dunque, fra una battuta e l'altra ho piazzato una pausa di circa 60 millisecondi
- [zxspectrum] Re: zx-badaloc news
- From: Mario
- [zxspectrum] Re: zx-badaloc news
- From: Stefano
- [zxspectrum] zx-badaloc news
- From: Alessandro
- [zxspectrum] Re: zx-badaloc news
- From: Paolo Ferraris
- [zxspectrum] Re: zx-badaloc news
- From: Alessandro
- [zxspectrum] Re: zx-badaloc news
- From: Stefano
- [zxspectrum] Re: zx-badaloc news
- From: Mario