larswad / uno2iec Goto Github PK
View Code? Open in Web Editor NEWA commodore (CBM) 1541 emulator on the Arduino Uno, using any desktop PC (or raspberry PI with raspbian) as a media host.
Home Page: http://larswad.github.io/uno2iec/
A commodore (CBM) 1541 emulator on the Arduino Uno, using any desktop PC (or raspberry PI with raspbian) as a media host.
Home Page: http://larswad.github.io/uno2iec/
First is a warning:
"-std=gnu++0x" is not valid on Windows, qmake gives a warning, then during the build:
1>cl : Command line warning D9002: ignoring unknown option '-std=gnu++0x'
Then the build errors:
not, not_eq and friends are macros. A few #include <iso646.h> is missing. (The best would be to remove the use of them all together, it makes to read the code hard.)
It builds with the following patch: http://pastebin.com/GhMZASZC
I wanted to load a game named Planet X2 on my C64 via uno2iec, because it was the most affordable FDD emulator in my area. After loading the main program (the game itself) I was able to start it. After the main menu it kinda freezes, because it wants to load maps but seems not to be able to do that.
Here's the error stuff I got from the log:
2019-05-04 19:47:59:040 I IFACE processOpenCommand, cmd: M-W
2019-05-04 19:47:59:040 W DOSCMD M-W 0x500:32
2019-05-04 19:47:59:040 S IFACE CmdChannel_Response code: 0 = '00,OK'
2019-05-04 19:47:59:040 I IFACE processOpenCommand, cmd: M-W ?? ?7 ? ????< `C
???????8FHU
2019-05-04 19:47:59:056 W DOSCMD M-W 0x520:32
2019-05-04 19:47:59:056 S IFACE CmdChannel_Response code: 0 = '00,OK'
2019-05-04 19:47:59:056 I IFACE processOpenCommand, cmd: M-E
2019-05-04 19:47:59:056 E IFACE CmdChannel_Response code: 98 = '98,NOT IMPLEMENTED'
2019-05-04 19:47:59:228 I IFACE processOpenCommand, cmd: M-R;
2019-05-04 19:47:59:228 E IFACE CmdChannel_Response code: 98 = '98,NOT IMPLEMENTED'
2019-05-04 19:47:59:228 I IFACE processOpenCommand, cmd:
2019-05-04 19:47:59:228 I IFACE CmdChannel Status Response code: 98 = '98,NOT IMPLEMENTED'
I also tried to load a SID file into a C64 SID player and it also won't load, causing the program to freeze.
Thanks in advance.
Greetings from Germany!
EDIT: Just asked the developer. He says that the maps are "sequential (SEQ) files. Maybe the uno2iec is not able to handle these files. and yes, I am using an Arduino Uno.
I can't get past this particular issue. About one in 50 tries I manage to get a directory listing, but it usually fails with something like the following. I have tried an Uno and a Nano using /dev/ACM0 as well as /dev/AMA0 and /dev/ttyS0 (switching the two UARTS on RP3).
2017-06-11 18:53:02:917 S MAIN Now connected to Arduino.
2017-06-11 18:53:04:071 S R:MAIN CONNECTED, READY FOR IEC DATA WITH CBM AS DEV 8.
2017-06-11 18:53:04:073 I R:MAIN IEC pins: ATN:5 CLK:4 DATA:3 RST:7 SRQIN:2
2017-06-11 18:53:04:074 I R:MAIN Arduino time set to: 2017-06-11.18:53:02
2017-06-11 18:53:07:178 E R:IFACE ATNCMD: IEC_ERROR!
2017-06-11 18:53:12:961 I R:IFACE ATN code:240 cmd: * (len: 1) retATN: 1
2017-06-11 18:53:12:962 I IFACE processOpenCommand, cmd: *
2017-06-11 18:53:12:963 W IFACE File * not found. Returning FNF to CBM.
2017-06-11 18:53:12:965 E IFACE Open ReadPRG Response code: 0
2017-06-11 18:53:13:665 I R:IFACE ATN code:96 cmd: (len: 0) retATN: 3
2017-06-11 18:53:16:274 I R:IFACE ATN code:240 cmd: $ (len: 1) retATN: 1
2017-06-11 18:53:16:650 I IFACE processOpenCommand, cmd: $
2017-06-11 18:53:16:651 I IFACE Producing directory listing for FS: ""...
2017-06-11 18:53:16:693 I NATIVEFS Listing 20 entrie(s) to CBM.
2017-06-11 18:53:16:695 S IFACE Directory listing ok (21 lines). Ready waiting for line requests from arduino.
2017-06-11 18:53:16:697 S IFACE Open ReadPRG Response code: 3
2017-06-11 18:53:16:824 I R:IFACE ATN code:96 cmd: (len: 0) retATN: 3
2017-06-11 18:53:18:179 E R:IFACE Ending at char: 3.
2017-06-11 18:53:19:738 E R:IFACE L�
2017-06-11 18:53:20:094 I R:IFACE ATN code:224 cmd: (len: 0) retATN: 1
So I build from Teki's fork as I was unable to get qextserialport to build at all... makefile error etc...
I have both gcc 4.4.7 and 4.8.2 but I'm not sure qtcreator is picking up on gcc 4.8.2 when I set it via the environment variables of the shell I run it from.
I also removed the Mac OS X ifdefs as for some reason it wouldn't build with those... I still have the following errors.
20:27:01: Running steps for project uno2iec-gui...
20:27:01: Configuration unchanged, skipping qmake step.
20:27:01: Starting: "/usr/bin/make"
g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIE -DCONSOLE_DEBUG -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SERIALPORT_LIB -DQT_CORE_LIB -I/usr/lib/qt5/mkspecs/linux-g++ -I../uno2iec-gui -isystem /usr/include/qt5 -isystem /usr/include/qt5/QtWidgets -isystem /usr/include/qt5/QtGui -isystem /usr/include/qt5/QtSerialPort -isystem /usr/include/qt5/QtCore -Idebug/.moc -Idebug/.ui -I. -o debug/.objnix/main.o ../uno2iec-gui/main.cpp
In file included from ../uno2iec-gui/interface.hpp:6,
from ../uno2iec-gui/mainwindow.hpp:10,
from ../uno2iec-gui/main.cpp:26:
../uno2iec-gui/filedriverbase.hpp:82:26: error: macro "putc" requires 2 arguments, but only 1 given
In file included from ../uno2iec-gui/interface.hpp:9,
from ../uno2iec-gui/mainwindow.hpp:10,
from ../uno2iec-gui/main.cpp:26:
../uno2iec-gui/m2idriver.hpp:42:18: error: macro "putc" requires 2 arguments, but only 1 given
In file included from ../uno2iec-gui/x00fs.hpp:4,
from ../uno2iec-gui/interface.hpp:10,
from ../uno2iec-gui/mainwindow.hpp:10,
from ../uno2iec-gui/main.cpp:26:
../uno2iec-gui/nativefs.hpp:51:18: error: macro "putc" requires 2 arguments, but only 1 given
In file included from ../uno2iec-gui/interface.hpp:6,
from ../uno2iec-gui/mainwindow.hpp:10,
from ../uno2iec-gui/main.cpp:26:
../uno2iec-gui/filedriverbase.hpp:82: error: 'putc' declared as a 'virtual' field
make: *** [debug/.objnix/main.o] Error 1
20:27:03: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project uno2iec-gui (kit: Desktop)
When executing step 'Make'
20:27:03: Elapsed time: 00:03.
qextserialport only iterates serial ports, but my UNO uses a USB-Serial driver, so it doesn't show up at all in settings.
A quick hack to make it work: http://pastebin.com/KVGgRGy1
(this patch is not 100% right, it removes serial com support, it should be easy to add it, qextserialport did support multiple classes, they just have to be iterated)
Hi, me again.
Since I own a working 1541, I was wondering if I can copy files onto physical diskettes from d64s using the Uno2IEC as a source drive. Given standard floppy format it seems possible. But I found somebody claims he checked "every dual-drive copier known to man, and they all crash" (https://www.lemon64.com/forum/viewtopic.php?t=53429).
Is there any prospect for this? Since it's possible with SD2IEC https://www.youtube.com/watch?v=khyATbkEYDI
Thanks in advance
Hardware: Arduino UNO R3 (ATMEGA328P-PU board with ATMEGA16U2), PC with Windows 7 x64
Software: Qt 5.11.1 with MinGW32 compiler, Arduino IDE 1.8.5
I've double checked connections
but it goes into an infinite reconnect loop:
I've tried compiling sketch with older IDE version - Arduino 1.5.2 but it made no difference.
Can UNO2IEC be used with Windows 7 x64 and Arduino UNO R3 ? Can someone confirm this setup is possible ?
How to debug/log messages between PC and UNO if port is occupied for communication purpose ?
Do you think this will work on an ESP32?
It would be great to have it and using wifi too :D or an sdcard connected to the ESP32
@Larswad , Thanks for the amazing job you have done here. You have inspired me to get back into a bit of hardware tinkering. Just wondering if you had plans to continue with this project? It would be so handy to be able to write files and software with use fast loaders.
I tried doing some research to pickup up where you left off, and promptly realised I have no idea where to start :) thanks again!
Hello im attempting to build the project and every version of QT ive used has failed to build it stating it has multiple syntax errors any idea what i may be doing wrong?(compiling for windows)
Hi There,
I love this product. I dont actually have an issue as my setup is working as the readme suggests (can run most single disk programs that have no built in fastloader using Arduino Nano). I was just curious to see if there was any plans to implement file saving from 3rd party programs (example - saving a file from a word processor) and/or support for support for some fastloaders?
Thanks for all the hard work!
using this BASIC program:
10 OPEN 1,8,1,"TEST
20 PRINT#1,"TEST1"
30 PRINT#1,"TEST2"
40 CLOSE1
the c64 will be blocked in execution of line 30 waiting a response from the arduino side.
the problem is that the handleATNCmdCodeOpen will leave its reply in the serial buffer, which is correctly handled the first time handleATNCmdCodeDataListen or handleATNCmdCodeDataTalk are executed, but, if the c64 wants to send more data like in my BASIC example, the arduino code will wrongly wait for another open response on the pc serial communication.
the delayed handling seems pretty much deliberate, fixing this bug would require a bit of different "high level" thinking, that's why i didn't work on a patch. (yanking out the open return handling will make it work, that's as far as i got)
Easyprog reports an error "Cannot open this file" when trying to load a cartridge image filename crt to burn to EasyFlash.
So since i had a teensy2.0++ just laying around and teensy boards apparently run arduino code I decided to give this a shot. Compiling everything went fine and the board accepted the code perfectly but during runtime I get a protocol ver mismatch (apparently the board sends 0 but the program expects 2).
Is there any way to get this program to work with teensy?
Hi there,
I installed Qt on a WIN 10 box, and built the rp2iec.exe from source. Then I took an Arduino Uno Rev 3 SMD and successfully uploaded the sketch. Next, I created a cable with a soldering iron by doing the following connection of Arduino (A) pins to a female 6-pin DIN connector (D) according to the instruction
A3 -> D5 DATA,
A4 -> D4 CLOCK,
A5 -> D3 ATN,
A6 -> D1 SRQ,
A7 -> D6 RESET,
AGND -> D2 GND.
After connecting anything properly I started the executable and got the following messages in the log window:
2021-01-11 20:37:35:311 S MAIN Application Started, using port COM10 @ 115200
2021-01-11 20:37:35:323 S MAIN Application Initialized.
2021-01-11 20:37:36:314 S MAIN Now connected to Arduino.
2021-01-11 20:37:36:817 S R:c%c CONNECTED, READY FOR IEC DATA WITH CBM AS DEV 8.
2021-01-11 20:37:36:822 I R:c%c IEC pins: ATN:5 CLK:4 DATA:3 RST:7 SRQIN:2
2021-01-11 20:37:36:825 I R:c%c Arduino time set to: 2021-01-11.20:37:36
So far, so good. Next step was to mount a d64-file on my WIN 10 host box which led to:
2021-01-11 20:46:24:691 I IFACE processOpenCommand, cmd: Summer_Games_I+II_(HF)_Disk_1.d64
2021-01-11 20:46:24:692 I IFACE Trying image mount using driver: D64|D64
2021-01-11 20:46:24:696 S IFACE Mount OK of image: Image: Summer_Games_I+II_(HF)_Disk_1.d64
with corresponding information to be found in the "Current T64 / D64 Internal Directory Listing" section.
On the C64 I typed the usual LOAD"$",8
.
The reply was:
SEARCHING FOR $
? DEVICE NOT PRESENT ERROR.
What is going wrong? The message IEC pins: ATN:5 CLK:4 DATA:3 RST:7 SRQIN:**2**
is a bit strange since it says that SRQ is assumed to be on A2 pin instead of A6 as I wired it up. Is that the reason?
Thanks in advance for any kind of suggestions.
https://ram-e-shop.com/product/atmel-avr-usb-development-system-eta32mini/
Eta32mini key features:
Hi!
I don't know why but the app doesn't want to compile with QT 5.1, tried with 4.8 and doesn't work either.
What version of Qt is used to compile it ?
Thanks
PS : i'm using the v0.2.1-alpha , i'm going to try compiling with master tomorrow. Plus i'm on mac 10.9. But it should break ?
Hi,
it seems that uno2iec freezes (on RPi 2) if strange chars are in filenames. Have a look at the Novaterm 9.6c examples:
http://i.imgur.com/y1BNsDT.jpg
and
http://i.imgur.com/oVSVLOL.jpg
I had a look at the source codes (RPi and Qt). I didn't found the place where both creates the names. Can we patch this issue?
When I go to build it in Qt Creator, it says that I need to import a build. I tried building it, but the buttons are all grayed out.
hi,
successfull ran uno2iec (with its limits) today - great work!
Wanted to activate the 7219 LED matrix - which arduino library do you use? I've tried several ("LedControl", minimalistic max7219, etc.) but non compiled, either because the header <max7219,h> is even missing or the defined classes are different.
thanks for any input.
pottendo
PS: is anybody trying to improve the compatibility, these days? I've also stumbled of the strange-char crash, etc.
I get the error: Error: /MP: No such file or directory when I try to compile the rpi2iec.pro in QT Creator. Have I done something wrong or is this an issue? Thanks.
Having just built my first uno2iec with a nano clone I found a glitch in the logging code that will cause some cheap Chinese nano clones to constantly hardware reset after sending the 'connect_arduino:2' message.
With five Nano's to test from (4 being the same type) - 4 had the ch341 USB chip and 1 had a genuine FTDI USB chip. The 4 with the ch341 all presented the same reset problem while the 5th FTDI version had no issues. I don't believe the USB chip is the problem but I've written the chip type here as an easy way to identify the clone Nano's. I also disabled the auto-reset on power up from the ch341 USB chip in case that was the culprit.
Diving deeper and debugging the code to find out where the Nano was resetting lead me into the registerFacilities() function inside log.cpp
Commenting out one line at a time narrowed down the offending/resetting code to this one line:
strcat_P(strBuf, (PGM_P)facilities[i].string); /* this line seems to cause the nano3 clone to continuously reset */
My guess is some sort of RAM buffer overflow or address corruption is happening on these cheap nasty clones...
What registerFacilities() does or is need for, I don't know but I've commented out the call to that function and have not had an issue with the operation or performance of uno2iec. Also just commenting out the offending line of code also produces a working uno2iec with no undue effects.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.