[zxspectrum] una resistenza per abu simbel
- From: "Alessandro" <apoppi@xxxxxxxx>
- To: <zxspectrum@xxxxxxxxxxxxx>
- Date: Sat, 1 Jul 2006 17:10:29 +0200
Signire e signori, ecco la puttan*ta del primo luglio:
"Lo zx-badaloc e` in grado di far girare Abu Simbel Profanation solo se si
aggiunge una resistenza da 33K".
:-)
Mi spiego meglio (prima di essere buttato fuori)
Abu simbel profanation, che ho scaricato sul clone dopo aver visto la
versione flash reclamizzata in area qualche tempo fa, non proseguiva oltre
il menu` principale: la pressione dei tasti 2, 3 o 4 non sortiva alcun
effetto. Inutile dire che su RealSpectrum funzionava tutto alla perfezione.
Grazie a quest'ultimo, ho potuto scoprire una routine di lettura della
tastiera a dir poco machiavellica, che fa affidamento su tutti e 8 i bit
letti dalla porta $FE, per fare poi confronti e calcoli vari nei quali non
mi sono addentrato oltre un certo punto (l'inizio). :-)
Dato che su 8 bit ce ne sono 5 per la tastiera e due fissi a '1', non poteva
essere che un problema del bit EAR, che la mia CPLD riporta a '0' in assenza
di segnale audio. Per fare un esperimento l'ho negato ('1' in assenza di
segnale) e, come per magia, i tasti del menu` hanno preso a funzionare.
C'era pero` un problema: l'ometto si muoveva da solo come se tutti i tasti
fossero tenuti premuti, compreso il salto.
Mi sono allora letto la documentazione dell'originale, che riporto
testualmente:
Bit 6 of IN-Port 0xfe is the EAR input bit. The value read from this port is
not trivial, as can be seen from the following program:
10 OUT 254,BIN 11101111
20 PRINT IN 254
30 OUT 254,BIN 11111111
40 PRINT IN 254
50 GOTO 10For a correct test do not press any key while running, and
have no EAR input.
a.. If the output is 191,255,191,255 etc, you are on real Spectrum Issue
3.
b.. If output is always 191 or always 255, change the value in line 10 to
BIN 11100111.
c.. If output is then 191,255,191,255 etc, then you are on Spectrum Issue
2.
d.. If output is still always 191 or always 255 you are on Spectrum
emulator.
La mia interfaccia cassette non prevedeva alcun feedback fra l'output dei
bit SPK e MIC (D4 e D3 su $FE) e la lettura del bit EAR (D6 su $FE), per cui
il programma riportava sempre 255 (con la cpld modificata) oppure 191 (con
la versione originale). Riguardando lo schema che avevo sviluppato a suo
tempo, ho visto che sarebbe bastato inserire una resistenza (33K) fra il pin
1 e 5 dell'LM358. Grazie ad essa, il feedback ora funziona come su di uno
spectrum issue 3. Ho anche eliminato la modifica alla CPLD in quanto negava
il risultato, e questo non deve accadere.
Con la resistenza il gioco funziona perfettamente (sia i tasti nel menu` che
quelli durante il gioco).
Credo che non finiro` mai di trovare rogne.
Ciao!
Other related posts: