Adattatore Telematico 6499 per Commodore 64

()

Download 6499.zip

30 aprile 2013


Ho adorato questo modem perché è stato il mio primo contatto “telematico” col resto del mondo (diciamo Italia!). Pareva una cosa straordinaria collegarsi con altri computer tanto lontani.
Ho usato tantissimo il servizio Videotel.
A causa di una forte nostalgia (!) mi sono comprato su eBay un 6499 solo per il gusto di rivederne le schermate, altrimenti introvabili su Internet.
Ho dunque avuto l’idea di crearci l’immagine .CRT per utilizzarla sull’emulatore Commodore 64 VICE: e ci sono riuscito!
Non mi dilungo oltre, ne ho già parlato altrove e lo scopo di questa pagina è strettamente tecnico.

Non è stato facile, di seguito riporto ciò che ho capito e fatto per riuscire nell’impresa. Forse non servirà mai a nessuno, ma siccome non ho trovato nulla su Internet e mi dispiace che questa ricerca venga dimenticata, preferisco scrivere qualche appunto su questa pagina.
Impagabile, durante le varie prove, l’aver scritto qualche riga di assembler come ai vecchi tempi… (sì, dovrei chiamarlo assembly, ma non mai digerito sto nome qundi mi ostino a sbagliare con assembler!)

Premetto che da giovane avevo stampato tutto il contenuto della ROM del modem e me l’ero studiato. Mi sembra di aver pure realizzato una sorta di protocollo di trasferimento da usare col 6499, ma il ricordo è vaghissimo o magari è solo presunzione.
Di certo avevo fatto, non so dire se per Commodore 64 o Amiga, un utility che permetteva di trasformare un file in caratteri ASCII inviabili tramite mailbox del Videotel (l’equivalente della moderna email). In seguito poi scoprirò che la mia “invenzione” altro non era che la codifica UUencode.


Ecco i passi che ho compiuto per realizzare l’immagine cartridge per l’emulatore.

> Non ricordo assolutamente come ho fatto, tanti anni fa, ad accedere alla ROM del 6499. Ho provato tramite locazione $01 ma senza risultati. Internet non m’è stato d’aiuto, se non suggerendo il metodo del kernel ‘speciale’.
Deve esserci anche un modo via software perché da giovane il kernel del mio C64 era assolutamente originale.

> Mi sono servito di un Commodore 64 dotato di ROM kernel con SpeedDOS che consente di avviare il suo monitor linguaggio macchina tenendo premuto il tasto Commodore all’accensione.
Questo mi ha permesso di bypassare l’autorun del 6499 e accedere ai suoi 16KByte di ROM, visibili dall’indirizzo $8000 a $BFFF. Ho così subito salvato su file quest’area di memoria.

> Il trasferimento del file da floppy disk a moderno computer, per essere poi usato sull’emulatore, l’ho fatto per mezzo del C64SD Infinity di Manosoft.

> La conversione in formato cartridge .CRT l’ho fatta per mezzo del programma cartconv già presente nel pacchetto dello stesso VICE. L’operazione è stata semplice ed ha subito funzionato… o quasi! La sezione Videotel, tasto F5, non funzionava… come mai?!

> Da una rapida analisi del contenuto della ROM noto subito che non c’è alcun testo con riferimento alla sezione Videotel… possibile?!
Allora cerco di saperne di più sulle cartridge tramite Internet e scopro che 16K sono sì la dimensione massima di una ROM visibile dal C64, ma queste possono essere sovrapposte! Ovvero possono coesistere 16+16 KB (e anche più) agli stessi indirizzi di memoria e agendo su certe locazioni del computer si può selezionare l’una o l’altra!

> Ma come fare fare?!
Fortunatamente un tempo tutto era semplice e comprensibile.
Ho approfondito il funzionamento di una cartridge: banalmente il computer se all’accensione rileva una cartridge inserita ed una particolare sequenza di caratteri salta all’indirizzo specificato nei primi byte.

      00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F          ASCII
      - - - - - - - - - - - - - - - - - - - - - - - -     - - - - - - - -
8000  35 80 35 80 C3 C2 CD 38 30 .. .. .. .. .. .. ..     5.5.CBM80.......

Al RESET, il C64 verifica la presenza della stringa ‘CBM80’ a partire dalla locazione $8004. Se presente salta all’indirizzo contenuto nelle locazioni $8000-$8001 (low/high) in questo caso $8035 (cold start). Gli altri due byte che seguono, sono l’indirizzo a cui saltare se premuti i tasti RunStop+Restore (warm start).

> A questo punto grazie al debugger di VICE ho disassemblato e seguito ciò che accade quando premo F5 per accedere alla sezione Videotel… ed eccola lì! La locazione $DE01 che permette di scambiare i due banchi di memoria! Preciso che non è una regola per tutte le cartridge, ognuna usa un suo metodo e altre locazioni (limitrofe) per la selezione del banco di ROM.

> Così, tornato al vero C64, scrivo sulla $DE01 e… magia, ecco svelato il secondo banco, anche lui allocato dalla $8000 alla $BFFF che salvo immediatamente su disco.

> Felicissimo, pensavo di aver finito. Certamente il programma di conversione in formato .CRT di VICE mi permetterà di integrare i due dump della ROM di cui ora dispongo… macché, nient’affatto!
Nella conversione in .CRT va specificato il tipo di cartridge: l’emulatore quando carica l’immagine deve sapere a priori che “se viene scritto NN alla locazione AAAA” va attivato un certo banco di memoria.
In altre parole un file .CRT può sì contenere più banchi ROM ma deve trattarsi di una cartridge già conosciuta dall’emulatore che quindi sa come gestirla. E naturalmente il 6499, essendo solo italiano, non è tra i modelli contemplati!

> Disperazione… stavo per rinunciare. Del resto a che serve ciò che sto facendo?! A chi?! Potrei anche fermarmi qui. Tutto sommato il primo banco funziona, il menù principale sull’emulatore si avvia… è già qualcosa!

> C’è un documento interessante (CRT.txt) che descrive il contenuto dei file in formato .CRT e dei vari tipi di cartridge riconosciuti dagli emulatori.
Grazie a questo noto che la cartridge Comal-80 somiglia al mio caro 6499, ovvero è strutturata in banchi da 16KB selezionabili scrivendo su di una certa locazione… ma accidenti, altri valori su altra locazione! Come fare?!
Semplice, modifico le routine del 6499 relative allo scambio dei banchi!
L’idea è buona ma… funzionerà?! Basta così poco??
Le routine interessate sono due:

6499 ORIGINALE - banchi 0 e 1
800D  AD 01 DE    LDA $DE01
8010  49 08       EOR #$08
8012  8D 01 DE    STA $DE01
[..]
802A  AD 01 DE    LDA $DE01
802D  49 08       EOR #$08
802F  8D 01 DE    STA $DE01

6499 MODIFICATO - banco 0
800D  AD 00 DE    LDA $DE00
8010  A9 81       LDA #$81
8012  8D 00 DE    STA $DE00
[..]
802A  AD 00 DE    LDA $DE00
802D  A9 81       LDA #$81
802F  8D 00 DE    STA $DE00

6499 MODIFICATO - banco 1
800D  AD 00 DE    LDA $DE00
8010  A9 80       LDA #$80
8012  8D 00 DE    STA $DE00
[..]
802A  AD 00 DE    LDA $DE00
802D  A9 80       LDA #$80
802F  8D 00 DE    STA $DE00

SSSSSIIIIIIIIIIII funziona!
Che soddisfazione! 😆 😆


Download 6499.zip
Qui potete scaricare l’immagine .CRT dell’Adattatore Telematico 6499; l’ho provata solo con VICE e funziona.
Troverete anche un’immagine floppy in formato .D64 contenente delle schermate (frame) salvate tanti anni fa.
Sono un’assoluta rarità: in quato originali, provengono direttamente dal Videotel e qualcuna da ITAPAC (mi pare Arkimede e BlackJack). Originali perchè contengono esattamente i byte ricevuti dal modem (non banali screenshot, ma sono in formato Prestel CEPT3).
Nel .zip ho incluso anche i dump dei due banchi di ROM del 6499.


Infine qualche immagine del software del 6499:

…e i frame provenienti dal passato:

28 risposte a Adattatore Telematico 6499 per Commodore 64

  1. Herve Warin scrive:

    Hi Gianni,

    You may have a look there by exemple :
    http://teletel.org/index-teletel.html
    https://forum.museeminitel.fr/
    https://github.com/64rulez/PyMoIP
    https://hackaday.com/2021/11/25/bring-a-minitel-terminal-back-to-life-with-an-esp32/ (*)
    https://glasstty.com/?p=1

    (*) Notice : This hack might NOT work directly with your SIP terminal and should possibly need adjustments

Rispondi a Roberto Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *