MMC2IEC

Historie / Hintergr�nde

Statt einer Floppy 1541, welche doch auch irgendwann mal das Zeitliche segnen wird, k�nnte man auch ein etwas moderneres und dabei deutlich kleineres Speichermedium verwenden. Aus dieser Idee entstand die 1541-III von Jan Derogee, welche mit einem PIC-Microcontroller arbeitet. Pyrofer hatte bereits mit dem MMieC Projekt etwas �hnliches geschaffen. Als dann der C64DTV auf den Markt kam, hat sich Pyrofer zusammen mit Jussi Saily daran gemacht, die 1541-III und das MMieC umzubauen, damit das Resultat am C64DTV betrieben werden kann. Daraus entstand die 1541-III DTV - immer noch mit einem PIC. Lars Pontoppidan hat dann die 1541-III DTV f�r seinen C64DTV Mod auf einen AVR chip umgezogen - einen ATMega32. So entstand sein MMC2IEC device (Schema). Er hat dann auch noch eine Version erstellt, welche wiederum an den C64 angeschlossen werden konnte (Schema) - damit hat sich der Kreis zur urspr�nglichen 1541-II wieder geschlossen. Das letzte, was Lars gebaut hat ist en MMC2IEC, welches sowohl am C64DTV als auch am C64 arbeitet - diese hat er auch zum Verkauf angeboten (Schema der Rev2). Basierend auf den Schematics von Lars gab es dann im Forum64 einige Nachbauten f�r den C64DTV. Im Gegensatz zu Lars verwendete mancher dabei nicht den ATMega32 als TQFP (44pin SMD) sondern als DIP (40pin), da dieser deutlich einfacher zu handhaben ist. AndyDTV benutzte dabei die L-Variante (3.3V) f�r seinen Nachbau. Im Gegensatz dazu verwendete Shadowolf zwar den TQFP, �nderte aber ein paar Ports.

Mein Nachbau

Da mir der Nachbau mit SMD nicht so liegt, habe ich mich f�r einen Nachbau auf Lochraster entschieden. Programmiert habe ich mit dem Pollin Eval. Board. Hier der mmc2iec.zip HEX-File.

Hier die fuses Einstellungen f�r Ponyprog:

Hier mein Lochrasterschaltplan auf Basis von Antabaka:

Anstatt dem LF33 3,3V Regler kann man auch z.B LP2950 3V Regler verwenden.. Der LF33 im TO-220 Geh�use ist halt ziemlich gro�.

Hier ein Photo des fertigen Aufbaus (SD-Slot wird noch mit Hei�kleber fixiert) Wie man sieht, habe ich die 3 IEC Leitungen direkt an der rechten Seite des ATmega32 angeschlossen. Die beiden 560 Ohm Widerst�nde zu den LED's sind unterhalb des ATmega im Sockel 'verstaut':

Hier ein weiterer Aufbau in einen USB Multicard Reader (Reichelt 4,30�).
Usb Reader 'zerlegt' und SD-Slot abgel�tet:

Aufbau auf Lochraster. Noch ohne ATmega32. Man sieht die beiden im Sockel liegenden 560 Ohm Widerst�nde f�r die LED's:

Hier im Geh�useboden eingepasst:

Hier im Betrieb. (In den Deckel mu�te ein Loch gedrehmelt werden f�r den 3,3V Regler im TO-220 Geh�use ;-) ):

Bildschirmmeldungen:

Tips und Hinweise:

Ich habe SD Card Detect und SD Write Protect fest auf GND gelegt. Falls der verwendete SD Slot entsprechende Signale 
anbietet, kann man diese aber nat�rlich auch nutzen. Dann sind die PIN's entsprechend mit den Slot-Anschl�ssen zu 
verbinden und die GND Verbindung zu trennen!

+5V kann man z.B am Tapeport entnehmen:

 
  1  2  3  4  5  6
  === |===========
  A  B  C  D  E  F 



Wenn man von hinten auf den Stecker schaut.
Der untere Kontakt (A-F) ist mit dem jeweils oberen verbunden (A-1, B-2.. F-6)

+5V ist an B/2
GND ist an A/1

---

IEC-Buchse (in der Mitte ist Pin 6)

       
    5 o       o 1
          6o
    4 o       o 2
          3o


3 - ATN
4 - CLK
5 - DATA

---

SD-Card
  
+------------------------
|8
|7 - Data OUT
|6 - GND
|5 - CLK
|4 - +3,3V
|3 - GND
|2 - Data IN
|1 - Select
\
 \ 9
  ------------------------


---

LED
Das l�ngere Bein ist + (Anode).


Befehle:
Initialisieren gibt:
LOAD "<<",8
SEARCHING FOR <<
LOADING
READY
und die rote+gr�ne LED sind kurz an (ca. 0,5s)..?

USAGE GUIDE:
------------
The MMC2IEC device implements accessing FAT16 filesystems on MMC or SD
flash media. The CBM IEC protocol is implemented and the kernel load and save
routines on the C64 works, loading from either PRG, D64 or T64 files, and
saving only to PRG type files in FAT.

Selecting directories and images is possible through LOAD"xxx" commands
issued on the CBM.

This is a quick overview of the commands, say MMC2IEC is IEC device 8:
 
  LOAD"<<",8      Reset SD card state. Do this if the SD card is exchanged.
                  Read < as the petscii back-arrow.
                  If SDCARD_DETECT signals is available, this operation is
                  rarely needed.
                 
In FAT mode: (the default mode)

  LOAD"$",8            Gets directory listing, equivalent to LOAD".",8
  LOAD"gamesdir",8     Enter the "gamesdir" directory, and get listing.
  LOAD"..",8           Up one directory and get directory listing.
  LOAD"tetris.prg",8   Loads the "tetris.prg" program file.
  SAVE"example.prg",8  Save into "example.prg" which is a FAT file.
  LOAD"disk.d64",8     Loads the disk.d64 image and enters D64 mode.
  LOAD"tape.t64",8     Loads the tape.t64 image and enters T64 mode.

In D64 mode:

  Load "$", "*", wildcards, filenames works (almost) as espected on a 1541.
  LOAD"<",8            (back-arrow). Escape D64 mode, and back to FAT mode.
  SAVE"abc",8          Fools the CBM, but has no effect. Saves in D64 are
                       not implemented

In T64 mode:

  Load "$", "*", wildcards, filenames works as if it was a D64.
  LOAD"<",8            (back-arrow). Escape T64 mode, and back to FAT mode.
  SAVE"abc",8          Fools the CBM, but has no effect.


Now Save-With-Replace works with SAVE"@:FILE", which will erase FILE first if it did exist.
I have not implemented the Save-With-Replace bug, though ;)

The "N:" operation initializes a new special disk "image", which is not readonly! I came up a with new file format for
this read/write disk simulation, the .M2I file. The file is just an index with 16 char petscii filenames, the FAT
filesystem is still utilized for file management.

When the M2I file is open, scratch and rename works, even with wildcards.

M2I files can also be entered with LOAD"FILE.M2I" and exited with LOAD"?", just like D64 and T64. It should be noted 
that scratch and rename also works in FAT mode, but not with wildcards.

The M2I disks has no limit on size and can be utilized for emulating multidisk games.

Finally, a little tip I discovered. If you want to change directory or mode with MMC2IEC, without loading and messing up
what's in memory, use an OPEN operation instead of LOAD. For instance, to go to parent directory:

OPEN 15,8,0,"..":CLOSE 15

Auslesen Fehlerkanal:
10 OPEN15,8,15:INPUT#15,A$,B$,C$,D$
20 CLOSE15
30 PRINT A$,B$,C$,D$
RUN

Sollte:
00    OK    00    00
geben.
Nach dem ersten Einschalten:
73    MMC2IEC DOS V0.8     00    00

Fehler:
74    DRIVE NOT READY        00    00


Neue Firmware sd2iec!

Unseen aus dem forum64 hat eine neue Firmware entwickelt! Diese ist Jiffydos Kompatibel und unterst�tzt auch Turboload. Allerdings mu� dazu ein Quartz und 2 dazu passende Kondensatoren best�ckt werden (XTAL1+XTAL2) und die Fuses entsprechen programmiert werden (Low=0xAF; High=0xD9)!
Das ZIP Archive: sd2iec.zip enth�lt sd2iec.hex Version 0.5.1, turbo.prg+turbo2.prg (Turboload Versionen 2.1+2.2) und speed.prg (Speedtest - sys2085 = ohne Format!), und weitere Informationen..

Die jeweils aktuelle Firmware stellt Unseen hier ins Netz:
http://snowcat.de/mmc2iec/
Darauf achten, das die *lp f�r die LarsP Pinbelegung verwendet wird!

Im Unterschied zur orig. LarsP Firmware, erfolgt der Wechsel in ein Unterverzeichnis/M2I/D64 so:
open1,8,15,"CD:[name]":close1 und nicht �ber load...!!

Lochrasteraufbau mit Quartz:

Speed-Hardcopy:

Hosted by www.Geocities.ws

1