[abc80] ABC80 kasettrutiner

Anders Jansson andj at hem.utfors.se
Sön Okt 11 15:06:51 PDT 2009


Hej!

Skickar du ut signalen till en riktig ABC80 när du testar? Blir det samma sak om du skriver "LOAD CAS:filnamn" ?

Jag har Arne Stockmans disassemblering med kommentarer. Om jag förstår kommentarerna rätt för "prepare" och "skriv record" så 
består kasettfiler av records med följande format (se nedan). Men jag kan ha missuppfattat ett och annat så det är nog bättre jag 
skickar kopior så får du kolla själv.

CAS_record:
1 byte 0x00
32 byte 0xFF
3 byte 0x16 <SYN>
1 byte 0x02 <STX>
256 bytes Record_buffer
1 byte 0x03 <ETX>
1 byte checksumma
1 byte 0x00

Record_buffer för filnamsrecord:
3 byte 0xFF
11 byte filnamn
resten 0x00

Record_buffer för datarecord:
2 bytes recordnummer (startar på 0x0000)
1 byte 0x00 (filnummer)
252 bytes data
1 byte 0x03 <ETX> (ger dubbelt ETX?)

Koden för inläsning tycks leta efter record som startar med 3 bytes 0xFF och sedan jämförs filnamnet med angivet filnamn. Om
första tecknet i angivet filnamn är ascii(32) utgår filnamnstestet. Detta händer när inget filnamn är angivet, tex LOAD CAS:.

Hälsn.
Anders



----- Original Message ----- 
From: "Erik Isaksson" <exon at lysator.liu.se>
To: <abc80 at abc80.org>
Sent: Sunday, October 11, 2009 4:08 PM
Subject: [abc80] ABC80 kasettrutiner


Hej listan!

Är det någon som har bra koll på hur ABC80s kassettrutiner fungerar i
detalj? Jag försöker få emulatorn att läsa och skriva via CAS:, men det
går inget vidare. 'Mikrodatorns ABC' har en hyfsad beskrivning av
elektroniken och formaten, så jag trodde det skulle vara en kakbit att
implementera, men någonstans går det fel. Inspelning funkar troligen,
jag har fått ut en CAS:-fil i något vi kan kalla raw-format genom att
sampla PIO CHB bit 6 i 15,6kHz (en gång per scan-line), och den både ser
och låter OK ut. Avspelning funkar däremot inte alls, troligtvis hittar
den inte ens SYN-bytarna i början av blocken eftersom jag bara får
"HITTAR EJ FILEN" ett tag efter "LOAD CAS:" (annars borde det väl bli
checksummefel eller liknande). I princip triggar jag en PIO
CHB-interrupt på varje flank i insignalen genom att dra bit 7 låg, och
det ser ut som om rutinerna reagerar på rätt sätt och nollställer
latchen som de ska. Ibland ser jag dock att jag får en "extra"
nollställning utan synbar anledning. Jag har ingen större lust att börja
disassemblera kassettrutinerna för att lista ut vad som går fel, så om
någon kan komma med lite input vore det trevligt!

Tack på förhand
/ E

_______________________________________________
ABC80 mailing list
ABC80 at abc80.org
http://www.abc80.org/mailman/listinfo/abc80



More information about the ABC80 mailing list