Interfacciare arduino a lettore commodore64 modello 1541

Buonasera bella gente,
Oggi ho messo mano al mio vecchio commodore 64, purtroppo la tastiera che fa gran parte del lavoro è andata bruciata… Ma il lettore floppy modello 1541 funziona.
Dunque mi è venuta un ideuzza:
Con il mio Arduino UNO posso interfacciarmi al lettore ed emulare il commodore??
grazie per i consigli che verranno !!

il presidente della Commodore, Jack Tramiel, il quale voleva che i chip formassero la base per un computer con 64 kB di RAM, il doppio del quantitativo di RAM di molti dei personal computer disponibili nel tardo 1981
All'epoca della sua introduzione negli anni ottanta le capacità grafiche del C64 erano uguagliate solo dalla famiglia Atari a 8 bit

Diventerebbe un commodore 32 senza interfaccia video e audio :grin:

eheheh..
niente??? Nessun idea??

Quale idea? il commodore aveva i doppio di Ram di arduino, aveva un interfaccia video, un interfaccia keyboard, interfaccia audio ....
Vedi un po' tu ...

pablos:
Quale idea? il commodore aveva i doppio di Ram di arduino, aveva un interfaccia video, un interfaccia keyboard, interfaccia audio ....
Vedi un po' tu ...

o pablos, Il C64 aveva 64kByte RAM (anche se certi blocchi per esempio sotto la ROM usabili solo con trucchi)
e visto che arduino UNO ne ha 2kByte il C64 aveva 32 volte di piú. Il C64 aveva 8kByte di ROM dove risiedeva il il sistema Operativo e l' interprete Microsoft Basic. Si potevano caricare programmi nella RAM tramite mangianastri o Floppi monolato da 360kByte.
Ciao Uwe

Già, ho confuso la RAM con la flash :grin:
L'ho avuto anch'io il commodore ho cominciato con quello a programmare, a parte tutto non vedo arduino giocare a pac-man o a space invader, il 328 è un MCU non una CPU

come riesci con arduino a fare un interprete dei comandi ed eseguire a video un listato simile? con 32K di flash non riesci nemmeno a creare 1/100 dell'interprete, figuriamoci a gestire periferiche .... ci vogliono eeprom su eeprom e librerie, insomma un piccolo SO basic

1060 graphic 0,1
1070 color 5,2:color 0,1:color 4,7
1080 sound 1,0,0:sound 2,0,0
1090 sound 3,0,0:vol 0
1100 print chr$(142)
1110 for a=1 to 8
1120 sprite a,0:next a
1140 graphic 1,1:color 1,2:color 0,1
1150 dx=30:dy=0
1160 d=int(rnd(1)*2)
1170 if d=1 then w=dx:dx=dy:dy=w
1180 x =30+int(rnd(1)*131)
1190 y=30+int(rnd(1)*99)
1200 sr=int(rnd(1)*4)
1210 if sr=0 then gosub 1240
1220 if sr=1 or sr=2 or sr=3 then gosub 1290
1230 goto 1160
1240 draw 1,x,y to x-dx,y-dy
1250 draw 1,319-x,y to 319-x+dx,y-dy
1260 draw 1,x,199-y to x-dx,199-y+dy
1270 draw 1,319-x,199-y to 319-x+dx,199-y+dy
1280 return
1290 draw 0,x,y to x-dx,y-dy
1300 draw 0,319-x,y to 319-x+dx,y-dy
1310 draw 0,x,199-y to x-dx,199-y+dy
1320 draw 0,319-x,199-y to 319-x+dx,199-y+dy
1330 return

pablos:
a parte tutto non vedo arduino giocare a pac-man o a space invader, il 328 è un MCU non una CPU

Una MCU è una CPU completa di varie periferiche dentro lo stesso IC, in pratica un piccolo computer autosufficiente.
Con Arduino è possibile riprodurre i vecchi videogame, almeno per la parte video con la grafica a pixeloni, eccoti pacman fatto con Arduino :slight_smile:
Un interprete basic come quello del commodore/sinclair lo metti dentro meno di 8k di flash, la fregatura è che ogni volta che devi caricare un programma devi riscrivere la flash perché la ram del 328 è troppo poca per contenere i programmi in basic.
Sotto il profilo potenza di calcolo il 328 prende a calci nelle terga il vetusto 6502 del commodore, però usava degli ic verticalizzati per la gestione del audio e del video che gli permettevano di fare quello che tutti sappiamo, cosa fattibilissima anche col 328 e in questo caso ottieni facilmente un computer nettamente superiore al commodore.

il C64 non aveva il 6510?
Ciao Uwe

uwefed:
il C64 non aveva il 6510?
Ciao Uwe

Si hai ragione, il 6510 era un 6502 come potenza di calcolo e codice macchina, la differenza era che poteva gestire direttamente l'acquisizione dei dati dal registratore a cassette, la vera forza del C64 era nei due chip aggiuntivi per il video, il VIC II con risoluzione 320x200 a 16 colori, e quello audio, il SID, lasciando alla cpu solo il compito di eseguire il software.
Se non mi ricordo male il C64 ha un clock leggermente inferiore a 1 MHz, con il 6502 che ci mette da 2 a 7 cicli macchina per ogni istruzione assembly, il che si traduce in una velocità reale, media, inferiore a 0.3 mips contro i circa 9 mips del 328 con clock a 16 MHz.

6502 su Atari 800 XL (io avevo quello) ;D

Ciao,

leggere e scrivere i floppy sicuramente si, l’interfaccia del drive è una seriale IEEE-488 a 2400baud (mi sembra), quindi facilmente interfacciabile all’arduino. Il sistema operativo del drive è implementato direttamente nel drive stesso, per cui sulla seriale transitano comandi di “alto” livello. Prova a guardare qui, questo è un emulatore del drive per usare un pc come sostituto (esattamente il contrario di quel che vuoi fare tu) :slight_smile:

Per l’emulazione C64 la vedo più dura, se cerchi in rete ci sono diverse implementazioni open di emulatori di C64. Guardando i sorgenti ti potrai fare un’idea precisa della fattibilità (magari con un 2560).

Bye, Ste

Ilste:
l'interfaccia del drive è una seriale IEEE-488 a 2400baud (mi sembra),

La IEEE-488 è il bus GPIB, ancora in uso anche se vetusto, ed un è bus parallelo a 8 bit e non seriale, la sua caratteristica più interessante è che permette il daisy chain consentendo di collegare fino a 15 dispositivi sullo stesso bus.
Il floppy 1541 del C64 usava un'interfaccia seriale proprietaria derivata dal GPIB solo per il concetto del daisy chain, dal punto di vista hardware era una RS232 con una configurazione molto simile a quella delle porte midi in modo da consentire la coesistenza di più device sullo stesso bus, come connettore utilizzava il semplice din a 5 poli tipico delle applicazioni audio/midi.
Per il drive 1541 c'era una modifica del firmware che ne portava la velocità fino a 4000 bps, quella standard era 1200 bps, mentre la cassetta lavorava a solo 300 bps.