niedziela, 22 kwietnia 2018

UNO2IEC, czyli emulator stacji dysków 1541

UNO2IEC to emulator stacji dysków 1541 na Arduino UNO lub Nano.

Komunikacja odbywa poprzez port serial Commodore 64, a z komputerem poprzez port USB.
Komputer stanowi rodzaj hosta z którego poprzez specjalny program montujemy obrazy programów lub gier i ładujemy do Commodore 64.

Do budowy wystarczy wtyk DIN 6 pin, przewody połączeniowe i Arduino UNO lub Nano z przewodem USB.

Gotowy projekt UNO2IEC


Projekt nie wymaga specjalnych układów, czy elektroniki i jest prosty w wykonaniu, jedyne co musimy zrobić, to przylutować przewody połączeniowe do wtyku DIN 6 pin.

Wtyk DIN 6 pin.


Gniazdo serial ma takie sygnały.


Podłączenie wtyku do Arduino.


Po wykonaniu połączeń należy ściągnąć i zainstalować program Arduino -> Link

Po zainstalowaniu uruchamiamy raz i zamykamy program, w folderze Moje dokumenty zostanie utworzony folder Arduino, a w nim libraries.
Do tego folderu kopiujemy potrzebne biblioteki.

Do działania wymagana jest ta biblioteka -> Link
Po rozpakowaniu folder arduino_max7219-master kopiujemy do libraries.

Program do wgrania do Arduino -> Link

Po rozpakowaniu w folderze uno2iec jest program uno2iec.ino, klikamy w niego 2 razy, uruchomi się program Arduino, wybieramy odpowiedni rodzaj Arduino i odpowiedni port COM w menu Narzędzia.



Teraz wystarczy wgrać program do Arduino klikając w strzałkę u góry po lewej stronie.


Po wgraniu powinien pokazać się nap[is na dole ładowanie zakończone.

Możemy zamknąć program Arduino.

Do ładowania obrazów dyskietek d64 i programów z komputera służy ten program -> Link

Po rozpakowaniu uruchamiamy go klikając 2 razy w uno2iec.exe.

Po uruchomieniu wchodzimy w górne menu Main -> Settings i ustawiamy jak pokazano niżej.


COM port - wybieramy port com na jakim pracuje Arduino.
Serial Speed ustawiamy na 57600
Device number - ustawiany numer stacji
Piny ustawiamy kolejno 6, 5, 4, 3 jak na obrazku wyżej.
Folder D64 wybieramy folder z obrazami d64 lub programami.

Po poprawnym połączeniu powinno być tak.


Teraz wybieramy obraz d64 lub program i klikamy Mount Selected Image.


Teraz mamy emulowaną stację dysków i możemy wpisać w Commodore:

LOAD"$",8


Teraz wpisujemy LIST ,aby wyświetlić listę plików.


Teraz wpisujemy LOAD"nazwa_programu",8


W programie na komputerze zacznie się ładować program.


Teraz wpisujemy RUN , aby uruchomić program.


Program powinien zacząć się uruchamiać.


Aby uruchomić inny program w programie na komputerze wybieramy Unmount i montujemy nowy program.

To tyle, jest to dosyć dobre i proste rozwiązanie, jeżeli nie chcemy ładować gier z magnetofonu lub stacji dyskietek.

17 komentarzy:

  1. Biblioteka arduino_max7219 jest wymagana tylko wtedy jeżeli chcemy korzystać z wyświetlacza MAX7219. Po za tym warto wspomnieć że niestety ale ten emulator nie uruchomi nawet połowy tego co SD2IEC choć nie ukrywam jest dużo tańszy w konstrukcji

    OdpowiedzUsuń
    Odpowiedzi
    1. Bez tej biblioteki nie chciało się skompilowac.

      Usuń
    2. wystarczy zakomentować odpowiednie linijki w pliku global_definies.h

      Usuń
  2. To jest mój pierwszy projekt na Commodore 64, nie mialem nic poza samym C64 i zasilaczem, ale miałem Arduino.
    Wkrótce opis budowy SD2Iec.

    OdpowiedzUsuń
  3. Hello, I'm the author uno2iec and want to thank the guy who wrote this guide. I'm surprised every time I see people experiment with it. It was just a summer project I made for fun a few years ago. It's great to see people in Poland to try it out. BTW, I made a port of SD2IEC for the mega2560,it works just fine. I recommend that for the bang and wistles on that project. It's on github as well in my profile. Cheers!

    OdpowiedzUsuń
  4. Nie wiem czy tutaj można ale mam problem zbudowałem wszystko tak jak w poradniku i podłączyłem wgrałem kod do Arduino UNO R3. I wpisuje LOAD"$",8 a Commodore nie ładuje gier, pomógłbyś jako twórca tego poradnika ?

    OdpowiedzUsuń
  5. A program na komputerze uruchomiony i wszystko ustawione jak na zdjęciu?

    OdpowiedzUsuń
  6. Czy to działa z Arduino uno z innymi układami

    OdpowiedzUsuń
  7. Bardzo ładne opracowanie. Zastanawiam się czy aplikacja uno2iec.exe została napisana specjalnie pod ten właśnie hardware (Arduino Uno lub Nano) czy może hardware na Artuino było zastąpieniem jakiegoś pierwowzoru? Tak zakładam, z uwagi na domyślnie inną konfigurację numerów pinów oraz prędkości UART-a. Ktoś kojarzy pierwowzór?

    Próbował ktoś podłączyć wyświetlacz do hardware na Arduino?
    Jeśli użyto biblioteki max7219, zgaduję, że będzie to coś takiego:

    https://i.imgur.com/QZ8HIm8.png

    lub takiego:

    https://i.imgur.com/aPStX6B.png

    Podłączał ktoś? Jak efekty?

    PS. Widzę, że w kodzi mamy coś takiego:

    static Max7219* pMax;
    // Put ANYTHING cool in here you want to scroll as an initial text on your MAX7219!
    static const byte myText[] PROGMEM = " WELCOME TO THE NEW PORT OF MMC2IEC ARDUINO BY LARS WADEFALK IN 2013... ";
    // Note: This is the pin configuration for the MAX7219 display, if used (not IEC related).
    static const byte PROGMEM MAX_INPIN = 11, MAX_LOADPIN = 13, MAX_CLOCKPIN = 12;
    #endif

    Sprawdzał ktoś co się wyświetla na wyświetlaczu poza napisem startowym?

    OdpowiedzUsuń
  8. Przetestowałem na Arduino Nano. Działa bardzo fajnie, niestety wyłączenie z jednoplikowanym grami czy programami, dogranie czegoś lub uruchmoienie gry całodyskowej nie jest możliwe (a szkoda). Zakładam, że to ograniczenie wyłącznie softwareowe aplikacji Arduino2IEC. Gdyby autor ją rozwinął do pełnej kompatybilności (albo przynajmniej takiej, którą oferuje SD2IEC) byłaby rewelacja - dla mnie rozwiązanie dużo fajniejsze, elastyczne i prostsze niż SD2IEC z kartą SD.

    OdpowiedzUsuń
  9. Trzeba też dodać, że rozwiązanie nie działa z fast loaderami (testowałem na Final 3 i Action Reply 7.

    OdpowiedzUsuń
  10. Fajne to UNO2IEC wczoraj sobie złożyłem. Pierwsze moje zetknięcie z Arduino. Zamówiłem części i będę niebawem sd2iec składał.

    OdpowiedzUsuń
  11. Pod W10 się kompilowało, pod Windowsem XP coś Arduino zawiodło...

    processing.app.debug.RunnerException
    at cc.arduino.Compiler.callArduinoBuilder(Compiler.java:317)
    at cc.arduino.Compiler.loadPreferences(Compiler.java:216)
    at cc.arduino.Compiler.build(Compiler.java:175)
    at processing.app.SketchController.build(SketchController.java:664)
    at processing.app.Editor$BuildHandler.run(Editor.java:1624)
    at java.lang.Thread.run(Thread.java:748)
    Caused by: java.io.IOException: Cannot run program "C:\Program Files\Arduino\arduino-builder": CreateProcess error=193, %1 nie jest prawidłową aplikacją systemu Win32
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at processing.app.helpers.ProcessUtils.exec(ProcessUtils.java:26)
    at cc.arduino.Compiler.callArduinoBuilder(Compiler.java:297)
    ... 5 more
    Caused by: java.io.IOException: CreateProcess error=193, %1 nie jest prawidłową aplikacją systemu Win32
    at java.lang.ProcessImpl.create(Native Method)
    at java.lang.ProcessImpl.(ProcessImpl.java:386)
    at java.lang.ProcessImpl.start(ProcessImpl.java:137)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 7 more

    OdpowiedzUsuń
  12. Proponuję zmienić mylący tytuł na emulator interfejsu IEC. Emulator stacji dyskietek to mamy np w VICE, PI1541 albo w Ultimate.

    OdpowiedzUsuń
  13. Czy w zamontowanym pliku .d64 można zapisywać dane czy tylko odczytywać?

    OdpowiedzUsuń