RS232

From vice-emu
Revision as of 23:18, 25 July 2019 by Gpz (talk | contribs) (= driver stack)
Jump to: navigation, search

here i will track some things regarding rs232 emulation, and perhaps fix things while at it Gpz (talk) 19:29, 25 July 2019 (CEST)

for all first tests i will use some version of CCGMS, and regular user-port rs232 emulation at 2400 baud.

using a real RS232 port

This works by using the device name of your OS, VICE uses physical RS232 ports.

linux

RsUserEnable = 1
RsUserBaud = 2400
RsUserDev = 1
RsDevice1 = /dev/ttyUSB0
RsDevice1Baud = 2400

status: working out of the box

windows

RsUserEnable = 1
RsUserBaud = 2400
RsUserDev = 1
RsDevice1 = com6
RsDevice1Baud = 2400
  • the windows driver understands various options passed in the so called "mode string" after a colon after the ports name
COMx[:][baud=b][parity=p][data=d][stop=s][to={on|off}][xon={on|off}][odsr={on|off}][octs={on|off}][dtr={on|off|hs}][rts={on|off|hs|tg}][idsr={on|off}]
  • finding out what COM port the usb adapter ended up might be tricky, you can use a tool like "Keyspan Serial Assistant"

status: working after some massaging of the code

rs232 over ip

This works by using the IP and port you are connecting to, VICE will use a TCP socket.

connect two VICE instances on the same host

$ socat tcp-listen:25232 tcp-listen:25231

config instance #1

RsUserEnable = 1
RsUserBaud = 2400
RsUserDev = 2
RsDevice2 = 127.0.0.1:25232
RsDevice2Baud = 2400

config instance #2

RsUserEnable = 1
RsUserBaud = 2400
RsUserDev = 2
RsDevice2 = 127.0.0.1:25231
RsDevice2Baud = 2400

linux

status: works

windows

status: works

connect two VICE instances on different hosts

status: untested

piping to an external program

linux

"calling" a telnet BBS

$ tcpser -v 25232 -p 6400 -s 2400 -l 4
RsUserEnable = 1
RsUserBaud = 2400
RsUserDev = 4
RsDevice4 = |nc 127.0.0.1 25232
RsDevice4Baud = 2400

in CCGMS:

atdtantidote.hopto.org:64128

status: works

windows

status: untested

TODO

  • whether the "UP9600" (daniel dallmann) hack is being used seems to depend on the baudrate(?). this should be a seperate option

driver issues

  • handling of DTR and RTS seems to be completely missing. rs232dev_set_status, rs232dev_get_status, rs232dev_set_bps apparently are not called by the layer above

user interface

  • a couple of typical rs232 settings should probably be configurable for at least "real rs232 port at host". (behavior of DTR, RTS...)

ip232 protocol

This is the protocol used by some modified WinVICE 1.19 to talk to tcpser

tcpser->vice ip232.c:ip232_write

0xff  -> 0xff 0xff
other -> unchanged

vice->tcpser ip232.c:ip232_read

0xff nn ->
 nn = 0      DTR = false
 nn = 1      DTR = true
 nn = 255    literal 0xff
other   ->   unchanged

driver stack

rsuser.c    -> rs232drv.c -> rs232.c -> shared/rs232dev.c
aciacore.c                              rs232net.c

links