Schlagwort: amiga

Small testrig for old DRAM 64kx4 Chips

I bought some old DRAM Chips from Ebay for the repair of an Amiga, so i looked for a way to test those chips to know if they are in working order before putting them in the board. There are some chip testers available on the market but i thought i could build one myself and maybe use it for testing other kinds of chips later by expanding on the code.

So here is my first try on a chip tester for TMS4464 / NEC 41464 and other compatible chips, those are 64k x 4 Bit organised, DIL18 case. I had some Teensy 3.2 and a 24 pin ZIF Socket in my storage, so i did a quick layout and etched a pcb. The schematic is quite simple, each connection of the ZIF Socket is connected to some header pins and the GPIOs of a Teensy 3.2 (since the Teensy is 5V tolerant), additionally i added 3 pins with GND, 5V and 3,3V to supply power to the chip with some jumper wires. Since i wanted it as versatile as possible you have to use the jumpers, but be carefull, the Ram chips have GND and VCC exchanged compared to 74xx TTL Chips. I recommend reading the datasheet of a chip before connecting it. Sadly i had no easy accessible GPIOs left to make the powersupply for the chip switchable in software, so i always have to power down the teensy to change chips, nobody is perfect. 🙂

The first firmware can test the Databus, Adressbus and the complete Memory for errors.

And yes, that is a 7404 in the picture, i tried my pcb on a cheap chip first before trying on out of production drams.

Have fun! Please leave a comment if you build one yourself, have suggestions or improvements on the source.

New ADF-Drive Firmware 0.621 with Amiga File System support


I made some progress with the ADF-Drive firmware, now with Amiga Filesystem Support included, you can access the Amiga Disk like a usb thumb drive. It should be fully compatible with the ADF-Copy Application. There will be a new version soon.

Working:

  • Read / Write Files
  • Create Directories, delete empty Directories
  • Format DF0:
  • HD Disks should work, but they are very fragile, writes might fail.

Not (yet) working:

  • delete full diretories
  • rename files
  • time and date of files
  • some other stuff i forgot 🙂
  • when writing an adf image with drag and drop on DF0: the Name of the filesystem drive isnt updating correctly.
  • the MTP function won’t work with Windows XP, because of the missing MTP drivers on Win XP

Bugs: perhaps some you will discover, so always use write protect on your important disks.

Important things:

  • When using the ADF-Copy Application the USB funtion will be disabled, to reenable just remove the disk and reinsert it, then the image and filesystem drive will show up again.
  • After a write access wait for the drive light to go off and the motor stop before removing the disk, due to avoid excessive disk access i use some methods to cache the track and write modified track only on track change or shortly before stopping the motor.

You can find the new experimental Firmware „ADF-Drive 0.621“ in the download section, have fun!

ADF-Drive is here

Lange war es Still um ADF-Copy, nun habe ich in meinem Urlaub die Zeit gefunden die Firmware etwas weiter zu entwickeln und es ist ADF-Drive bei rausgekommen. Und das schöne ist, sie lÀuft auf der vorhandenen ADF-Copy Hardware!

 

ADF-Drive ist die Erweiterung um ein USB Speicherinterface was das Media Transfer Protokoll benutzt (MTP), dieses wird in der Regel von Handies,

Kameras und MP3 Playern benutzt und ermöglicht den Zugriff auf Dateien mit einem universellen Dateisystem was nicht Betriebssystem spezifisch ist. MTP wird von Windows ab Vista (und XP mit Media Player 10 update), MacOS, manchen Linux Versionen die libmtp installiert haben. Ich habe gelesen es gibt auch fĂŒr AmigaOS einen Treiber, aber da beißt sich die Schlange in den eigenen Schwanz 😉

 

Die neue Firmware stellt ein Laufwerk zur VerfĂŒgung das sich formatieren lĂ€sst und mit Drag & Drop ADF Dateien von der Diskette erzeugen kann, aber auch auf eine Diskette schreiben kann. Die ADF-Datei wird einfach auf DF0: gezogen und der Schreibvorgang beginnt, bitte nicht auf das Icon von ADF-Drive ziehen, sonst gibts Murks beim schreiben. Wenn man im DF0: Verzeichnis ist muss man ggf. F5 drĂŒcken damit der Diskettenname aktualisiert wird.

Die FunktionalitĂ€t das es sich auch von der App steuern lĂ€sst ist weiterhin vorhanden, nur man sollte nicht beides gleichzeitig versuchen, das kann zu ungewollten Ergebnissen fĂŒhren.

Die neue Firmware findet sich wie immer im Downloadbereich.

ADF-Copy auf dem ESP32

In den letzten Wochen hab ich ein wenig mit dem ESP32 rumgebastelt, dies ist ein Mikrocontroller mit 2 CPUs, ne Menge RAM und integrierten WiFi. Mittlerweile lĂ€uft die ADF-Copy Firmware auf dem kleinen Ding 🙂

Verkompliziert wurde die Portierung durch mehrere Faktoren:

  • auf dem Ding lĂ€uft RTOS, steht fĂŒr Real Time Operating System, dies wird u.a. benötigt damit die 2 CPUs zusammen laufen können und das WiFi funktioniert, leider verkompliziert das die Sache ein wenig.
  • die Interruptlatenz ist gigantisch, teilweise bis zu 700ns. Das ist zwar fĂŒr einen Menschen eine unfaßbar kleine Zeitspanne, aber wenn man bedenkt das die Transitionen bei einer HD Diskette einen Abstand von 2”s (2000ns) haben können ist das schon gewaltig. Und die Interrupt Routinen die das Arduino Framework zur VerfĂŒgung stellt machens nur noch schlimmer.
  • die Timer können kein Input Capture. Bei einem Input Capture weißt man einem Timer einen Eingang des Chips zu der bei einem Wechsel (z.B. LO->HI) des Eingangspegels einen Interrupt auslöst und gleichzeitig den ZĂ€hler des Timers in ein spezielles Register sichert wĂ€hrend der Timer weiterlaufen kann oder von Null neu startet.
  • zum Schreiben einer Diskette benutzte ich auch einen Timer der alle 2/4”s (HD/SD) einen Interrupt auslöst, mit der Latenz von bis zu 700ns natĂŒrlich auch keine Lösung.
  • Erschwerend kam noch hinzu das das RTOS alle 1ms den SystemTick (Uhrzeit) aktualisiert und mir dazwischen gehackt hat.

Bisherige Lösung ist es alles von Hand zu machen ohne Interrupts zu benutzen, ist nicht schön aber bisher die einzige Lösung die ich gefunden habe.Grob gesagt mache ich folgendes:

  1. Das Multitasking abstellen
  2. Alle Interrupts abstellen
  3. Timer starten
  4. Warten bis die Leseleitung auf High wechselt (Read ist negiert und somit low aktiv)
  5. Warten bis die Leseleitung auf Low wechselt (Transition der Magnetisierung der Diskette)
  6. Auslesen des Timers, ZĂ€hler auf Null setzen und neu starten
  7. Auswerten des ZÀhler -> 4,6,8”s Transition (oder 2,3,4”s bei HD) und ablegen im Streambuffer
  8. Auswerten ob gerade ein Sektoranfang vorliegt (Magicbytes) und merken.
  9. PrĂŒfen ob der Streambuffer voll ist, wenn nein weiter bei 4.
  10. Interrupt wieder anstellen
  11. Multitasking erlauben.

Hiernach wird der Streambuffer anhand der gemerkten SektoranfÀnge decodiert.

Ähnlich lĂ€uft das schreiben ab, bloss das ich dort stĂ€ndig den Timer auslese ob 4”s (2”s bei HD) vergangen sind und ich das nĂ€chste Bit schreiben kann.

Ich hab noch nicht geprĂŒft ob die WiFi Verbindung dadurch abbricht da ich den ESP32 fĂŒr 200ms „dumm“ stelle, aber erstmal mussten die Grundfunktionen laufen.

Ziel ist es ein Standalone GerÀt zu haben auf das man mit einem Webbrowser zugreifen kann um ADFs zu lesen/schreiben, Disketten formatieren, vielleicht sogar einen FTP Server drauf laufen zu lassen.

Mal sehen wie weit ich komme.

Neue Version der Applikation mit Multiplatform Support

Ich war mal wieder fleißig und habe in das Frontend Support fĂŒr Linux und Raspberry Pi hinzugefĂŒgt. Ebenso das Interface mit hĂŒbscheren Buttons versehen und etwas schlanker gemacht.app_0967

Die App setzt auf allen Systemen eine saubere Java Runtime Envoronment (JRE) 8.x Installation voraus. Ich habe auf folgenden Platformen getestet:
Raspberry Pi 3 Model B, Ubuntu 16.04.1 Desktop amd64, Windows 7 32 bit, Windows XP Home, Windows 10 Home.

Bei WIndows XP und vermutlich Vista ist darauf zu achten das man die Seriellen Treiber fĂŒr den Teensy installiert – http://www.pjrc.com/teensy/td_download.html

Bei Linux sollte man die udev rules installieren weil man sonst ohne root rechte nicht auf den seriellen Port des Teensy zugreifen kann.

Die App gibts im Download Bereich.

Have Fun!

Neue Hardware Revision

So, meine Platine v2 ist jetzt fertig und funktioniert auch diesmal wie gewollt
adf_v5.1print2print1bohren

In der Firma darf ich netterweise einen UV-Drucker benutzen, damit lĂ€sst sich direkt aufs Kupfer drucken, die Tinte wird mit UV Licht ausgehĂ€rtet und ist sĂ€urebestĂ€ndig. Nach dem Ätzen lĂ€sst sich die Farbe einfach mit einer TopfbĂŒrste abschrubben. Anschließend wurde gebohrt, da meine Augen nicht mehr so gut sind hab ich das mit meiner CNC gemacht, leider nicht 100% mittig die Löcher, aber das tut der Funktion keinen Abbruch, mit Hand wĂ€rs auch kaum hĂŒbscher geworden.

Anschliessend bestĂŒckt und das Endprodukt sieht dann so aus:

platine oben platine unten
Das Layout entspricht meiner neuen Pinbelegung. Durch die neue Pinbelegung konnte ich das Layout so vereinfachen das man mit nur eine DrahtbrĂŒcke auskommt, und die kann man optional setzten wenn man den Anschluss fĂŒr die SD Karte (noch nicht implementiert in der Firmware) nutzen will. Ebenso habe ich im Layout noch einige freie Pins auf Pinheader gefĂŒhrt um sie fĂŒr spĂ€tere Entwicklungen wie Knöpfe, Display oder Leds zu nutzen. Stromversorgung der Floppy geht ĂŒber eine extra USB Buchse, gepuffert ĂŒber einen Kondensator.

Das Problem das es nun unterschiedliche Hardware Versionen gibt und eigentlich unterschiedliche Firmware erfordert hab ich gestern in langer Fummelarbeit gelöst sodaß eine Firmware mit beiden Pinbelegungen klar kommt und automatisch erkennt. Da die AusgĂ€nge der Floppy komplett in OpenCollector ausgelegt sind war das nicht so einfach ein Signal zu finden was ich abfragen kann und bei den unterschiedlichen Hardwares unterscheidbar ist. Meine Firmware versucht nun einfach den Kopf auf Track0 zu fahren und schaut ob das Track0 Signal nach 85 Steps oder frĂŒher auf Low geht, falls nicht wird die andere Ansteuerung probiert und dort das selbe gemacht. Funktioniert soweit ganz gut und hat den Nebeneffekt das der Kopf beim Einschalten auf Track0 gefahren wird. Das funktioniert auch wenn keine Diskette eingelegt ist.
D.h. kĂŒnftige Firmwares werden beide Hardwares bis auf weiteres unterstĂŒtzen, kann sein das es sich Ă€ndert wenn ich SD Karten Funktionen einbaue.

Hier noch das Pinout der neuen Hardware Revision:

Pinout_v2

Adf-Copy Pinout Update

Kleines Update auf der Projektseite wie man die Floppy an den Teensy anschließt. Die Signal Bezeichnungen mit Pin x waren mehr als verwirrend und auch irrefĂŒhrend, das kommt davon wenn man nur noch Signal Pins im Kopf hat und nicht die Physikalischen Pins. 😉

Pinout_small

Erster Release

So nun ist es soweit, ich entlasse die erste einigermaßen brauchbare Version meines Amiga Disketten Lese und Schreib Programms „ADF-Copy“ in die Wildnis unter der GNU Public License v3. D.h. jeder darfs benutzen, weiter entwickeln und kopieren solange die Copyright Informationen erhalten bleiben und darauf hingewiesen wird das eine Weiterentwicklung auf meinem Werk beruht. Ebenso mĂŒssen Weiterentwicklungen daraus auch unter der GPLv3 lizensiert werden.

Hier der Download:

ADF-Copy_v0.8

Ist alles noch recht Beta und hat kaum Fehlerabfragen, wenn ihr also eurer Superseltenes Retro Game ĂŒberschreibt weil ihr den Writeprotect Nupsi vergessen habt und das falsche klickt, nicht mein Fehler McFly! 😉

Zur Hardware

Das ganze lÀsst sich auf einem Steckbrett mit ein paar Strippen aufbauen. Ansonsten kann man auch anhand der Pin Definitionen im Sourcecode des Arduino Sketches arbeiten.

 

Pinout_small

Als Bauteile werden benötigt:

  • Teensy 3.2 – ganz wichtig das es die 3.2 Version ist, denn nur diese ist 5V tolerant!
  • ein Micro USB Kabel, denn beim Teensy wird keines mitgeliefert.
  • ein Steckbrett, das kleine aus dem Conrad Weihnachtskalender reicht vollkommen aus.
  • 14 Steckbrettkabel mittlerer LĂ€nge mit Male/Female, es reicht wenn ein Masse Pin der Floppy mit dem Teensy verbunden ist. Im Layout sind alle verbunden weil man das eben so macht. 🙂
  • von einem alten Netzteil ein Kabel mit Floppy Stromstecker, man muss nur Masse an Schwarz und 5V an Rot anlegen, die gelbe 12V Strippe wird nicht benötigt.
  • ein 5V Netzteil fĂŒr die Stromversorgung der Floppy was mindestens 1A liefert, wenn der Steppermotor loslegt zieht der kurz 0,7A und wenn die Spannung zusammenbricht kommt die Floppy durcheinander und Steppt in die falsche Richtung (Schon erlebt und Stunden nach dem Fehler gesucht)

Über USB reicht der Strom leider nicht fĂŒr die Floppy, naja, man kann nicht alles haben.

Über Feedback wĂŒrde ich mich freuen und ansonsten: Have fun and keep the Amiga alive!

kleines Update

Da der Schreibmodus nun funktioniert habe ich nun auch Verify eingebaut, nach dem Schreiben eines Track wird dieser gelesen und mit den zu schreibenden Daten verglichen, bei Unterschieden oder schlimmeren wird der Track nochmal geschrieben und geprĂŒft, maximal 10 Mal, falls es dann immer noch nicht geklappt hat bricht der Schreibvorgang ab. So eine Diskette sollte man besser entsorgen.

Das Frontend hab ich grafisch auch ĂŒberholt und etwas hĂŒbscher und kompakter gestaltet, aber seht selbst.

frontend02