COMMUNICATOR RS232 v1.0

COMMUNICATOR RS232 v1.0

by Pac on 17-05-2014, 16:50
Topic: Software
Languages:

Spanish user Manuel Villegas (Manel46) has dusted off a tool he developed in the 90's, a communication program that enables us to load files in our MSX computers from a PC through a serial cable. Manuel, who recently came back to the MSX scene, brings us the cheapest and easiest way to take advantage of those MSX computers without FDD nor HDD/SD interface. Yes, perhaps nothing new seeing modern solutions like Nowind but keep in mind it was coded in 1994!

The program concept is simple, select the start and end address, store the data in RAM and then run it by DEFUSR command. For the moment .BIN and small .ROM files have been tested successfully. Please note that some knowledge about how the MSX memory works is required in order to use the program properly. This is why some improvements are expected in future versions such as a bit more automated process and a more friendly interface accessible to everyone. Suggestions and support are welcome.

Requirements/features:

  • MSX with at least 32Kb RAM (recommended)
  • Transfer rate 9600 bauds

The cable diagram is included along with documentation, WAV file and source code.

Relevant link: Communicator RS232 v1.0

Comments (31)

By Grauw

Ascended (10820)

Grauw's picture

17-05-2014, 17:00

This is great! Very handy for development. I read the developer of R-Type for ZX Spectrum used a similar set-up. I don’t have a Nowind so if I ever need to test my programs frequently on a real MSX I would probably use this method.

By Manel46

Paladin (674)

Manel46's picture

17-05-2014, 20:55

Thanks for the comment, Grauw.

By mtn

Champion (269)

mtn's picture

18-05-2014, 13:21

Very nice of you to include the source aswell.

By anonymous

incognito ergo sum (116)

anonymous's picture

18-05-2014, 13:30

Download have been updated with the WAV file (also newspost). If we have an MSX without extrenal drives, how to load the program? Tongue Please download it again in that case.

By Manel46

Paladin (674)

Manel46's picture

18-05-2014, 14:14

Thanks a lot friend PAC, and also to
mtn, for the comments.

By Pat

Expert (71)

Pat's picture

26-05-2014, 22:16

For those without a com port nowadays, check out the ftdi cables to bridge between usb and uart/rs232: various voltage levels available.

By Manel46

Paladin (674)

Manel46's picture

26-05-2014, 23:32

Pat. Thanks.
I bought a USB-RS232 DP9, cable for about 15 Euros.

By msxholder

Champion (399)

msxholder's picture

03-06-2014, 20:51

All these times Ascii provided that in the tools.
Spectravideo had it also with it's RS232
Any program ,data, Ml can be send trough serial cable

By Manel46

Paladin (674)

Manel46's picture

04-06-2014, 15:50

msxholder
Thanks for the imformation
Experiences that we have with the program?

By Manel46

Paladin (674)

Manel46's picture

17-05-2017, 16:30

I want to take advantage of this entry to remind you that the version, more practical is v2.1, which is the one I am using to test small roms in real HW, including Powergraph.
I tried to increase the transfer speed, but for lack of knowledge of the rs232 protocol, I could not get it. It is now 100% safe at 9600 baud, due to the large data entry tolerance of the receiver. There is no communication with the sender during the transfer.
Is very practical, as I say I use it to test roms up to 48 KBs in my TR ST with MFR.
Has anyone tried it?

By Louthrax

Prophet (2492)

Louthrax's picture

17-05-2017, 16:59

Hi Manel,

I have not tried that yet, but had in mind a "disk-driver" interface for your system: the MSX would first need to load a modified "disk driver ROM" (that could be placed in memory mapper or in a ROM device). This modified "disk driver ROM" would send the sector number to read or write to the PC, and the PC would send the sector data back or modify the disk image accordingly with the sector data sent from MSX.

I'm pretty sure that this would work (assuming communication can be done in both ways). That would be the cheapest MSX disk system available (OK, maybe not the fastest).

Won't have time to work on this, but I can help if someone's interested.

By Manel46

Paladin (674)

Manel46's picture

17-05-2017, 17:21

Hi Louthrax,

Communication is effective in both directions. But to load roms only the receiver is used .

The problem I see, in what you say, is that you would have to implement a program on the PC, for this dialogue, with the MSX. This is beyond my means.

But maybe somebody wants to help ...

By Louthrax

Prophet (2492)

Louthrax's picture

17-05-2017, 17:56

Yes, but that program could be quite simple (and probably portable to Linux or Mac). We just need to define a simple protocol for the communication, and a (text?) interface on the PC to swap disks.

By Manuel

Ascended (19676)

Manuel's picture

17-05-2017, 18:07

Not sure why the baud rate is only 9600 bauds... on my Sony RS-232C (in my Sony HB-G900P) I could use a 14k4 modem at full speed 20 years ago. It should be able to handle 19200 baud, the double.

By Louthrax

Prophet (2492)

Louthrax's picture

17-05-2017, 18:10

Manuel wrote:

Not sure why the baud rate is only 9600 bauds... on my Sony RS-232C (in my Sony HB-G900P) I could use a 14k4 modem at full speed 20 years ago. It should be able to handle 19200 baud, the double.

Transfer speed for the diskROM idea above could then be faster than some Sony real disk drivers Smile ?

By Manel46

Paladin (674)

Manel46's picture

17-05-2017, 18:20

In the nineties I communicated my MSX1 with PC 486 bidirectionally, MS DOS with BAT files, and some program in gwbasic compiled.

But with Windows, I do not know how to do it.

Maybe some colleague will help us. Smile

By Manel46

Paladin (674)

Manel46's picture

17-05-2017, 18:28

Manuel.
I tried triple and double speed, long ago.
And the results were unreliable.
As I said the 9600 baud version has a lot of tolerance. But sure I'll try again

By Manel46

Paladin (674)

Manel46's picture

17-05-2017, 18:46

Louthrax
I have no experience writing and reading DSK, in asm.
I think using the basic rom routines would be feasible.

By Louthrax

Prophet (2492)

Louthrax's picture

17-05-2017, 19:24

Manel46 wrote:

Louthrax
I have no experience writing and reading DSK, in asm.
I think using the basic rom routines would be feasible.

Basically, you need to create a "patched" version of the MSX-DOS ROM (16KB). The reverse-engineered sources of this ROM are available on the net. Basically, you just need to replace the low-level function that read and write a sector to use RS-232 instead. SofaRunIt works like that: instead of reading/writing sector from the physical disk, it reads/writes from an MSX-DOS 2 file.

By Manel46

Paladin (674)

Manel46's picture

17-05-2017, 22:49

Thanks for the explanations, Louthrax. I'll look at what you say.
I would like to write directly to DSK, as this is the way to load megaroms, although, at the moment the transfer time, would be long.
This is for DSK basic.Other option would be to write routine in MSX DOS, with which I have no experience.

By Manuel

Ascended (19676)

Manuel's picture

17-05-2017, 22:50

Louthrax wrote:
Manuel wrote:

Not sure why the baud rate is only 9600 bauds... on my Sony RS-232C (in my Sony HB-G900P) I could use a 14k4 modem at full speed 20 years ago. It should be able to handle 19200 baud, the double.

Transfer speed for the diskROM idea above could then be faster than some Sony real disk drivers Smile ?

I guess I'm missing the point... real disk speed is about 17kB/s (bulk measured with DOSSCAN). 19200 baud is less than 2kB/s...

By Louthrax

Prophet (2492)

Louthrax's picture

17-05-2017, 23:23

Yeah, I was kind of joking about the reported slowness of some Sony disk drives (and definitely did not do the math!). But still, another thing to consider is that this RS232 disk drive won't have "seek times" between tracks. Darn, now I really feel like starting coding stuff Running Naked in a Field of Flowers

By Manel46

Paladin (674)

Manel46's picture

18-05-2017, 15:02

Hello friends.
Currently, my priority is on other issues: V9990.
But, please, any contribution to improve the communicator, will be welcome.
Thank you very much.

By ducasp

Paladin (712)

ducasp's picture

26-04-2019, 00:37

Isn't this too risky? I mean, a PC RS232 port voltage level is floating between +/- 12V while the parallel port works with 5V and GND... The cable seems to connect that voltage levels to BUSY and D0, am I missing something on this?

By Wlcracks

Hero (572)

Wlcracks's picture

26-04-2019, 07:16

Indeed its more luck then wisdom. I guess when using a real hardware RS232 port it needs a transceiver like MAX232 IC. Some Chinese USB RS232 are so crap they don't level at all so maybe your safe with using them. I would not risk my MSX Engine on this wiring.

By ducasp

Paladin (712)

ducasp's picture

26-04-2019, 16:09

Perhaps it would be safer if PC TX is connected to a diode anode, diode cathode connected to an 1k5 resistor, that 1k5 resistor connected to msx parallel port busy and to an 1K resistor going to ground would be safe (12.4*0.4 is almost 5V and 1K should be enough to pull down 74LS buffers usually used in the external input)

By Wlcracks

Hero (572)

Wlcracks's picture

26-04-2019, 17:49

And the MSX TX???.....

By ducasp

Paladin (712)

ducasp's picture

26-04-2019, 18:57

That should not be a problem, on the PC side it is receiving, so no voltage goes from PC to MSX TX, and 5V probably is more than enough to be detected by the PC UART as logical 0 and 0 volts to be detected as logical 1.

By NYYRIKKI

Enlighted (6091)

NYYRIKKI's picture

26-04-2019, 22:01

Guys... For 0.63€ (Including shipping) you can get this...

I bet Louthrax meant using normal MSX RS-232 interface... I actually did these kind of test ~15 years ago, but for some reason I ended up having about 0.3% of errors in transfer... That does not sound too bad, but practically it meant that when I tried to load game from my virtual diskdrive I had load error on practically every sector! (This was a firmware update for Sunrise IDE+RS232) I tried different speeds from 9600 to 38400, but that did not change anything, so the problem must have been somewhere else. I started to suspect my cheap Chinese USB adapter, but then all of sudden Nowind project came out to public and I decided to wait that I can buy that instead. As it did exactly same that I had planned, I newer looked back to that project again.

By Manel46

Paladin (674)

Manel46's picture

13-05-2019, 15:21

To try small roms, I still use the communicator. Version 2.1, which solves all problems. I do it with my TR ST, and it has not been broken yet.
I remember using this system with the C64, which initially did not read the information. But I solved it by means of a transistor (MC140) that acted as a static relay, powered by three 1.5V batteries.
I think this is the solution to preserve the MSX, but I do not remember what the scheme was like.
I tried more speed, without success.

By RvS

Expert (95)

RvS's picture

14-05-2019, 20:09

This is very similar to what I am working on here:
Virtual disk drive
If I replace the arduino with an usb to serial part, it would be a lot slower but also a lot simpler.