Jump to content
IGNORED

Serial port speed


danwinslow

Recommended Posts

Are there any techniques to speed up the available R: handlers to faster than 19.2k? I was wondering if anyone has done anything similar to hiassoft's SIO speed increase patches.

Actually, the standard R: handler goes only up to 9600 baud, not 19200 baud. The reason for this is mostly due to the firmware of the 850, and the hardware of the 850. The firmware of the 850 delivers the settings for the POKEY timer depending on the baud rate setting, and this table is part of the ROM firmware. The hardware of the 850 also limits the available baud-rate - it uses a standard 6532 RIOT (IIRC) which is clocked by approximately 1Mhz - another limiting factor.

 

Thus, in order to speed up the 850, you would not only need to provide higher baud rates, you would also need to patch the firmware of the 850, and - very likely - upgrade its firmware. Since the firmware is in ROM and the 850 has very little RAM and provides no upload functionality, you would need to burn a new EPROM for that, and possibly upgrade the hardware as well.

 

Greetings,

Thomas

Link to comment
Share on other sites

Hello Thomas

 

With the right pokes you can get the 850 to do 19k2 baud. Unfortunately, you need hardware handshake for anything over 4k8 baud. The 850 seems to be able to do some kind of hardware handshaking, but it's not 100% clear is it will do it in such a manner, that it works as intended/needed.

 

greetings

 

Mathy

Link to comment
Share on other sites

Well, actually I wasn't talking about the 850 specifically, more just about the capabilities of a custom R: handler on the computer itself, rather than downloaded from the device. I was being dumb, actually, I guess I wasn't realizing that the R: handler just uses SIO anyways, so obviously Hiassoft's patches would have some effect, maybe with a re-written native R: handler.

 

Does the R: handler poll the external device or does the external device use VINTER or whatever to signal bytes needing to be received? My understanding is that SIO is a request-only bus, that is, you have to request to be able to get anything. Normally a PC-style serial driver uses interrupts to feed the buffers, but over SIO I don't see how that's possible.

Link to comment
Share on other sites

AFAIK, the 850 has no means to send/receive at other than 19.2 kb/sec over SIO.

 

In any case, raising the rate wouldn't be of great use unless the rate the 850 talked to peripherals at the other end was boosted accordingly.

 

For your old printers, 19.2k is probably plenty anyway - even in bitmap mode it's probably still outpacing the rate at which it can print stuff.

Link to comment
Share on other sites

OK, I should probably specify that I am not talking about the 850. I shouldn't have said R: handler in the first place, since tha'ts just using SIO and if I wanted to read any kind of serial from any device its going to be over SIO, I was confused in my thinking about that.

 

My latest question is whether or not the devices that R: handlers talk to can push bytes unasked-for across SIO. As far as I know, you have to poll the device to get anything...I know there is a VINTER line on SIO that iis supposed to be like a device interrupt, but I can't find out much about it.

 

Well, MIO has a serial port I guess, and that doesn't use SIO...it's using the PBI for transmission. It's limited to 19.2 according to docs, but I wonder if it could be pushed further.

Link to comment
Share on other sites

Hello Dan

 

I'm not sure which chip the MIO uses, but the BlackBox uses a 6551. As is, it won't go faster then 19k2. But if you connect a certain pin of this chip to an oscilator or quartz or whatever, the chip will go faster. Drivers for the BlackBox have been written by Bob Puff years ago. So you can go higher, but you have to be sure the hardware will support that.

 

BTW IIRC the drivers for the BlackBox should be on my BlackBox page. I'll check later.

 

greetings

 

Mathy

Link to comment
Share on other sites

OK, I should probably specify that I am not talking about the 850. I shouldn't have said R: handler in the first place, since tha'ts just using SIO

 

Well, maybe you'd have to specify what you actually mean.

 

There's no such thing as "an R: handler". Each device (850/P:R:/BB/MIO/etc.) has it's own with it's own (little or big) differences.

Link to comment
Share on other sites

OK, I should probably specify that I am not talking about the 850. I shouldn't have said R: handler in the first place, since tha'ts just using SIO

 

Well, maybe you'd have to specify what you actually mean.

 

There's no such thing as "an R: handler". Each device (850/P:R:/BB/MIO/etc.) has it's own with it's own (little or big) differences.

 

Yes, for example the ARGS RS232 Cartride Module has an R: handler, but because it is a Cartridge using the Atari Module interface it is not using SIO at all: http://wiki.strotmann.de/wiki/Wiki.jsp?page=ARGS%20RS232%20Cartridge

Link to comment
Share on other sites

Hello Dan

 

I'm not sure which chip the MIO uses, but the BlackBox uses a 6551. As is, it won't go faster then 19k2. But if you connect a certain pin of this chip to an oscilator or quartz or whatever, the chip will go faster. Drivers for the BlackBox have been written by Bob Puff years ago. So you can go higher, but you have to be sure the hardware will support that.

 

BTW IIRC the drivers for the BlackBox should be on my BlackBox page. I'll check later.

 

greetings

 

Mathy

 

Actually, mathy, you got that completely wrong..

 

First, both the MIO and blackbox use the 6551 UART.. Yes, the max speed that the built in rom based R: handler on either device will do is 19.2k.. You can turn this ROM based handler OFF in the MIO (or blackbox) configuration menus.

 

The 6551, itself, is capable of 115.2kbps if you manipulate it's registers directly.. However, it remains to be seen whether anyone could write an actual useable "handler" that would not drop data at this speed.. There should be no problem doing this in raw assembly language, banging the hardware directly.. I have seen it done on the Apple II.**

 

The 115,200 bps is a /16 divisor of the oscilator (1,843,200 hz) that is hooked across pins 6 and 7 of the 6551.

 

The way to enable this mode is by setting the baud rate bits (0-3) of the ACIA control register ($D1C3 on the MIO) to 0000..

 

The data transmit/recieve register is $D1C0

The ACIA command register is $D1C2

the ACIA control register is $D1C3

 

You can find all this info in one place, along with the 6551 datasheet which has detailed programming discussions, in the MIO Service manual.

 

http://www.megaupload.com/?d=0EUGQJBB

 

The relevant register locations for the black box are available on CSS website (and probably mathy's as well).. You just have to read through the stuff..

 

**One last note I'll make is that anyone who is in the Apple II retro scene knows that 115.2k is in fact very possible with the 6551.. The Apple IIc, IIe super serial card, Laser 128, etc.. all use the 6551 clocked at 1.8432mhz, and the disk transfer programs that they use to get floppys/images back & forth from the PC do in fact work at that speed, and they are fast as hell.. If you look at any of apple's programming documentation, they only claim the ports are capable of 19.2k...

Edited by MEtalGuy66
Link to comment
Share on other sites

Thanks, Ken, good stuff. I've got a little serial to ethernet board...its easy enough to interface with a serial port, but I was thinking that at 19.2 its probably not worth the effort. By the way, I'm going to try that stability mod myself...but if I hork the boards then I'm sending them to you :)

Link to comment
Share on other sites

Hello Thomas

 

With the right pokes you can get the 850 to do 19k2 baud. Unfortunately, you need hardware handshake for anything over 4k8 baud. The 850 seems to be able to do some kind of hardware handshaking, but it's not 100% clear is it will do it in such a manner, that it works as intended/needed.

Hi Mathy,

 

I wonder how this is possible since it is not Pokey that establishes the serial communication with the serial devices attached to the 850, but rather the 680x microprocessor within the 850. IOW, if a poke would do that, it would be a poke the 850 CPU would have to do to its own hardware, and not any piece of software on the main CPU could reach that.

 

Confused,

 

Thomas

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...