[zxspectrum] ZX81 fast load save

  • From: "Stefano Bodrato" <stefano_bodrato@xxxxxxxxxxx>
  • To: "zx" <zxspectrum@xxxxxxxxxxxxx>
  • Date: Tue, 5 Aug 2008 19:32:15 +0200

Ciao raga,
mi è capitato tra le mani un programmino per lo ZX81 che mi ha incuriosito.

Per chi non lo sapesse lo ZX81 lavora su cassetta a una lentezza esasperante (è 
lento addirittura come il C64).. e come se non bastasse è anche poco affidabile.
Il problema è legato alla tecnica utilizzata (vado a memoria, perdonate le 
imprecisioni): invece di distinguere 1 e 0 con periodi (frequenze) diverse, 
produce treni di impulsi (se non sbaglio di circa 3khz) in e conta le 
oscillazioni: una sequenza di circa 3/4 impulsi rappresenta uno zero, se siamo 
intorno ai 6 impulsi abbiamo l'uno.    Il silenzio tra un treno di impulsi e 
l'altro separa i singoli bit.   zzzz....  Assomiglia molto alla tecnica della 
trasmissione "morse", anzi, l'unico vantaggio di questa tecnica è che si può 
migliorare molto il segnale applicando filtri aggressivi (mi è anche capitata 
una cassetta commerciale che a causa di questo conteneva impulsi perfettamente 
squadrati dove non dovevano essercene).

Il tool della Musamy promette cose mai viste: rilocabile in qualsiasi area di 
memoria, compatto e veloce fino a 4800 baud.
http://www.zx81stuff.org.uk/zx81/generated/tapeinfo/Musamy_Tapes.html
http://www.sincuser.f9.co.uk/021/softwre.htm
Per quel che ho potuto vedere è tutto vero !!

Non ho provato, come l'autore, a salvare su un HI-FI per vedere se reggeva le 
velocità dichiarate, ma l'ho disassemblato e nel limite del possibile, 
collaudato con EightyOne.
La velocità di SAVE è impostabile, e per quel che ho capito, il LOAD si calibra 
automaticamente, leggendo un primo treno di impulsi che funge da header.
La codifica è analoga a quella dello Spectrum, e varia il "duty cycle" 
dell'onda per distinguere 1 da 0 e il codice è costruito *esclusivamente* con 
jump relativi (e naturalmente tante belle DJNZ).  All'interno dellla parte di 
programma che gestisce il "LOAD" ci sono inseriti dei jump in avanti che, come 
i pilastri di un ponte, arrivano alla sezione del "SAVE", ma sono isolati dai 
loop in cui sono immersi: temporizzare quella roba deve essere stato 
allucinante.
Inoltre il programma usa praticamente tutti i registri alternativi, mi sembra 
che si permetta anche di toccare AF', cosa abbastanza pericolosa sullo ZX81 
(per liberare almeno un registro indice con Z88DK ho dovuto modificare la 
gestione delle interrupt, che nel caso dello ZX81 significa ritoccare la parte 
software che genera il quadro video).  Comunque, chi tocca IX, muore.

Prima del tool principale c'è un programma di diagnostica, ripetuto nella 
cassetta originale tre volte, registrato a volumi differenti (Alto, Giusto, 
Basso), che rileggendo se stesso da una sequenza numerica piuttosto precisa, 
evidenziando chiaramente l'eventuale effetto "WOW" del registratore, anche se, 
lo sappiamo bene noi Spectrumisti, quel tipo di codifica è estremamente stabile.

Che volete, mi affascina il piccoletto !   In questo caso, sia 
l'auto-calibrazione che i diagnostici sarebbero servii anche sul gommoso,,

Other related posts: