2SIO Configuration and Jumpers

80 views
Skip to first unread message

Hendrik Magilsen

unread,
Jul 1, 2024, 11:28:38 AMJul 1
to Altair-Duino
Ok.  Getting tangled up in too many variables to keep straight :-) 

I have the experimenter which already has a single serial port.  I have built 2 x Serial Expansion cards to support a modem and serial printer.  Desired end state is to have the built in port (monitor), plus 2 additional serial ports (modem / printer).  I have disabled mapping in the configuration editor..

I think I'm getting still conflict between the on board serial port and the first card.  Fairly certain the card itself is good because I either get some kind of corrupted mirroring, or the configuration screen shows up on the built in port, but when I load 16K basic the memory  prompts shows up on the 2SIO serial card.  I have not been able to transmit keystrokes successfully though but I can see my RXC LED's flashing.  I think the mirroring is occuring when I reboot and the mapping returns and I forget to remove it again (I don't want to save configurations until I have it correct to avoid compounding errors)..

Trying to follow a few threads.  I think what's not helping is I'm also getting tangled up in address conversions from hex/octal/binary..  Expansion card is jumpered 0001000.  Second card not tested yet, but I think I have to jumper it 0001010 to get the next address pair..

I'm persistent but looking for a few breadcrumbs to follow.

Hendrik Magilsen

unread,
Jul 1, 2024, 12:25:43 PMJul 1
to Altair-Duino

Further testing.

  1.  If I remove mapping from 2SIO Port 1 then the onboard serial port stops working when booting into basic
  2.  If I set the address high (30) on the expansion card and try to write to 30/31 or 48/49 I can’t see any traffic on the port.

 Because I have one port already on the experimenter, do I have to enable 2SIO2 and treat this like a second pair of IO ports?

da...@hansels.net

unread,
Jul 1, 2024, 3:26:35 PMJul 1
to Altair-Duino
I think you are correct in that you have a conflict between the built-in (emulated) port and the external card.
Only one of the two should be used at a time. So if you have jumpered your card for port 16 (10h)
then you need to disable (i.e. set to "not mapped") the 2SIO port 1 in the configuration menu. 

Basic and other programs (e.g. CP/M) use 2SIO port 1 for their I/O so if you set the emulated 2SIO port 1
to "not mapped" you will not see any output there from Basic.

You probably want to jumper your external card to an address that is not used for the primary
communication so you can use it for your modem and/or serial printer. Port 20/22 (14h or 16h) could
be a good choice for additional 2SIO ports. Port 30h is used by the emulated Cromemco disk controller
so if you ever want to use that you may run into trouble.

The reason that you're not seeing output when writing to 30h/31h right now is most likely that you
haven't initialized the card. You need to reset it and then configure the serial parameters
(stop bits etc). This is done by writing to the card's control register (see pages 4-7 in the original
2SIO user's guide): https://github.com/dhansel/Altair8800-IOBus/blob/main/02-serial-port/doc/88-2SIO.pdf

David

Hendrik Magilsen

unread,
Jul 1, 2024, 8:33:05 PMJul 1
to da...@hansels.net, Altair-Duino
Thanks David. Had a quick Look.  I did try a test at 20/22 but no joy, so probably not initializing properly.  I have confidence the card works because of the accidental mirroring of the ports. 

Still not sure I understand initializing.  The clock timing is likely confusing me. Chalking it up to a difficult day. I will give it another go tomorrow and stare at the docs a while longer to try and make sense of it. 

Thanks for taking some time to respond. I may have to reach out again for bigger bread crumbs :-). I’ll get there eventually. 

Sent from my iPhone

On Jul 1, 2024, at 3:26 PM, da...@hansels.net <da...@hansels.net> wrote:


--
You received this message because you are subscribed to a topic in the Google Groups "Altair-Duino" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/altair-duino/DFrGpgBQSZE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/e31fd734-453d-4eeb-89d1-1ce345f2b41cn%40googlegroups.com.

da...@hansels.net

unread,
Jul 1, 2024, 8:41:17 PMJul 1
to Altair-Duino
Take a look at this thread:
The 3rd post has an example BASIC program

da...@hansels.net

unread,
Jul 1, 2024, 8:43:28 PMJul 1
to Altair-Duino
Just noticed there's a typo in the example program, line 40 should read: 40 OUT 21,I

ve3...@gmail.com

unread,
Jul 2, 2024, 1:20:23 PMJul 2
to Altair-Duino

Further testing.

 

  • If I remove mapping from 2SIO Port 1 then the onboard serial stops working when booting into basic

 

  • If I set the address high (30) on the expansion card and try to write to 30/31 or 48/49 I can’t see any traffic on the port.

 

Because I have one port already on the experimenter, do I have to enable 2SIO2 and treat this like a second pair of IO ports?

 

--

You received this message because you are subscribed to a topic in the Google Groups "Altair-Duino" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/altair-duino/DFrGpgBQSZE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to altair-duino...@googlegroups.com.

Hendrik Magilsen

unread,
Jul 3, 2024, 7:54:03 PMJul 3
to Altair-Duino
Ok, that was a merry little chase.  I figured it out (or something else is wrong).
  • The OUT command is expressed in decimal  (20)
  • The jumpers are expressed in Binary (00010100) = 20 decimal
  • There are only 7 jumpers.  (A1 through A7) A0 is not present on the board!
  • The correct jumper setting is 0001010 = 20 even though it looks like 10
So my final questions.  
  • I'm making the assumption when you say use port 20 you actually mean port 20 (Decimal)
  • Since these are single port cards, when I set up the second card, do I address it for 22  (0001011)

da...@hansels.net

unread,
Jul 3, 2024, 9:35:53 PMJul 3
to Altair-Duino
Glad you figured it out! I always find it very rewarding when I get something to work.
Things almost get a bit boring once everything is set up and working correctly.

A0 is not present on the board because each card uses two ports and where
the control/status port is always even and the data port is always odd.
That's why the jumpers are labeled J1-J7, not J0-J6. Probably not the most
obvious thing to notice I guess. Other cards that use more ports
(for example the disk controller) have even fewer address jumpers.

When I said "Port 20/22 (14h or 16h)", I meant port 20 decimal or 14 hex. Sorry if that wasn't clear.

For the second card you would use port 22 as you suggest.

David
Reply all
Reply to author
Forward
0 new messages