In article <1@cup.portal.com> Chris_F_Chi@cup.portal.com writes:
> In an article whose header Portal doesn't pull into the reply, Jean Goulet
>writes:
>> I'm looking for 6502 source code for the handler for the Atari 850
>> interface module. [...]
>The actual 6502 code that handles the 850 Interface Module is downloaded from
>the 850 itself at boot time, through a sequence of SIO commands that I've never
>seen documented but which I have investigated on my own.
> ... (And, while you're at it,
>tell me more about this "other" handler you've obtained? I've never heard
>of it.)
>Cordially,
> Chris Chiesa
I too found out that the handler is in ROM in the 850. Thing is, I don't
have an 850 (it's awfully tough to disassemble code that you don't have).
Luckily if you use FTP and OPEN 36.8.0.46, and go to the 8-bit directory,
you'll find ATARIRS.UUE, which you download and uudecode, and you get an
ARC file, and then you deARC that, and you get the object code for the
handler (apparently a debugged version). Naturally when you disassemble
this you get no descriptive comments, and since the program probably uses
all sorts of tricks, it would be very hard to understand. Hence my
call for source code.
Now why would I want to understand this thing? The answer is that I was
wondering how tough it would be to build the equivalent of an 850,
or an R-verter (or both in fact).
This leads me to ask, if you open up the R-verter, what hardware do you see?
My guess is that it's got chips for converting RS-232 signals to TTL signals
(and vice-versa, using the MC1488 and MC1489). The problem with this guess
is that one of these chips needs a +/- 12V supply, and that's a problem if
your only voltage source is +5V (from the serial port; that *is* where
the R-verter plugs in, right?). Does the R-verter have an external power
supply? What is the maximum baud rate of the R-verter? Also, I once heard
that there was already a public-domain version of the R-verter (a schematic at
least), so if anyone has/knows of this, let me know.
Now I have a few questions regarding the 850:
- which serial port on the 850 do you connect a modem to? (1-4)
- which pins are used on the atari SIO cable, and which RS232 signal does
each pin correspond to? The table below is waiting for the answer.
(I added a column for the R-verter in case it's different)
from 850
from R-verter
RS-232 signal
SIO port pin # SIO port pin #
--------------------------------------------------------------
TD (transmit data)
5?
5?
RD
(receive data)
3?
3?
CD (carrier detect)
?
?
RTS (request to send) ?
?
CTR (clear to send)
?
?
DSR (data set
ready) ?
?
DTR (data terminal ready) ?
?
SG (signal ground)
6?
6?
Once I get this info, I plan on using my unused 64K 400 (yes, they exist,
contrary to a message from someone saying that you could only fit 48K in that
machine; the 64K board was called the Mosaic 64K Ram Select) as the brains
for the 850 emulation. That is, the modem will connect to my RS-232-to-TTL
converter, and that will be connected to the 400's joystick port, and the
400's SIO port will be connected to the XE's SIO port. The 400 will appear
to be the 850 as far as the XE is concerned. That way any software written
for the 850 (i.e. virtually every terminal program) will run without any
modification.
I'll have to write two programs to make it work: one to handle the RS-232-to-
joystick port interface, and another to handle the joystick port/SIO port
communication interface.
The first program will have to do serial-parallel conversion quickly enough
to operate at 1200 bps. Timing will be critical too, so I plan on using
interrupts triggered by POKEY's hardware timers. If you have any comments
of the type 'it is impossible' then let me know. I figure it's possible
because I think Supra/MPP has a 1200 bps modem that connects to the
joystick ports, and one of the Volksmodems does that too.
The second program that'll be running on the 400 will be the one that sends all
the right responses to the XE. I think that'll be the hard part. From what
I can tell, I need to know the codes that are send out through SIO that
do things like identify the device (R:), say how many bytes are coming, do a
checksum, and differentiate between sending *text* to R:, and sending
*commands* to R: (such as setting the baud rate or setting parity). If
this information is already described briefly in a manual somewhere, it would
certainly be a great help to have that transcribed in Email here.
Otherwise, I'll have to disassemble the 850 handler to find out.
Does anyone have documented source code for the 850 handler, or other modem
handlers?
Jean Goulet
Electrical Engineering
Class of '89
Concordia University
Montreal, Canada