[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: