Trying for the first time in a long time to use the serial printer port (on an A15 interface card) installed in a C8PDF using os65DV3.3. Also installed with this C8P is the CA-15 Universal Telephone Interface.
Specifically, trying to send commands to an old HeathKit GD-1530 which has a RS-232C port and is designed to take serial input at 1200 Baud/8N1 and send signals down the AC power line to BSR X10 devices. (Running some voltage checks on the GD-1530, it looks as if some electrolytic capacitors need replacing, so that is another thing. I actually know this GD-1530 can/could/did work based on testing with another computer a few years ago).
Anyway, when I try to send test commands to the printer port (Ex/ PRINT#1,"A1" -- which addresses the X10 device assigned unit #1 in House A), the C8P hangs forever, until the C8P is reset. Ctrl-C does not interrupt the hang. Is that a normal response? Must the C8P receive some response on the port for the system to return to immediate/command mode? Could the presence of the CA-15 board create a conflict when addressing the serial printer port? PRINT#3 works okay.
When I try sending the test commands using direct addressing of the ACIA, the machine does not hang. For example:
Poke 64512, 21 -- to set port to 1200 Baud/8N1
Poke 64513,ASC("A"):Poke 64513,ASC("1"):Poke 64513,13 (carriage return)
Tom
Machine hangs when trying to send data to serial port
-
- Posts: 9
- Joined: Sat Aug 31, 2024 4:58 pm
Machine hangs when trying to send data to serial port
Last edited by Lowrybt2 on Sun Jan 05, 2025 3:22 am, edited 1 time in total.
-
- Posts: 460
- Joined: Thu Apr 16, 2015 2:27 pm
- Location: Bronx, NY USA
Re: Print#1 command, machine hangs
Perhaps the ACIA is waiting for a "clear to send" signal? Check the voltage on pin 24 of the 6850, with and without the printer connected. It should be low for writing data to the port to complete. If it is high, bit 1 of the status port (64512) will remain low, and the device #1 output driver will loop until the bit goes high. Does PRINT#1 complete if the printer is NOT connected?
-
- Posts: 246
- Joined: Sun Mar 08, 2015 3:42 pm
- Location: New York State
Re: Print#1 command, machine hangs
Thanks Danny. It hangs (does not complete) when no device is attached. I'll check the voltage on pin 24. Tom
C8PDF w. 48K, 2x 520 24K RAM boards and Glitchworks 64K board
OSI 567 Telephony board
Spare 8" drives
Klyball D-13
OSI 567 Telephony board
Spare 8" drives
Klyball D-13
-
- Posts: 9
- Joined: Sat Aug 31, 2024 4:58 pm
Re: Machine hangs when trying to send data to serial port
Here's the testing I've done so far:
1)Removed the CA-15 (UTI) board from the bus in case somehow there was a conflict with the ACIA on that board. This had no effect. When utilizing PRINT#1, "WORD", system locks.
2)Attached RS-232C tester to serial printer port and then modem port. Then ran a test program that pokes a sequence of characters to 65413. Whether or not the program is running, the tester shows no signals on either port. The test program does not cause the system to lock up.
3)Checked voltage on pin 24 of the 6850 that is closest to the 6502. This is U1C according to SAMS. There is no voltage on pin 24 of the 6850. That is true whether or not the RS-232C is attached and/or the aforementioned test program is running.
4)Checked voltage on pin 24 of the 6850 furthest from the 6502. This is U1D according to SAMS. The voltage on that pin sometimes is 5V before reset is pressed. Thereafter, the voltage on pin 24 is basically 4V (3.95-4.01) under any of the test conditions noted above.
5)On the A15, I checked the two points where 5V power is fed to the board and the voltages are a steady 5V. I looked at the 40-pin ribbon cable connection, that runs from the 505B. Made certain the orientation is correct (pin 1 lines up correctly.) Did not check the connector on the 505B side (will need to remove the board gingerly from the bus; the bus pins are delicate), so that is perhaps a next step.
6) Also on the A15, I checked voltages on directly on the traces that connect to the DB-25s with and without the test program running. There were occasional readings of 0.01-0.04V which maybe is just noise.
Next question is which of the 6850's (U1C or U1D) drives the printer/modem serial ports?
Thanks for any and all insights.
Tom
1)Removed the CA-15 (UTI) board from the bus in case somehow there was a conflict with the ACIA on that board. This had no effect. When utilizing PRINT#1, "WORD", system locks.
2)Attached RS-232C tester to serial printer port and then modem port. Then ran a test program that pokes a sequence of characters to 65413. Whether or not the program is running, the tester shows no signals on either port. The test program does not cause the system to lock up.
3)Checked voltage on pin 24 of the 6850 that is closest to the 6502. This is U1C according to SAMS. There is no voltage on pin 24 of the 6850. That is true whether or not the RS-232C is attached and/or the aforementioned test program is running.
4)Checked voltage on pin 24 of the 6850 furthest from the 6502. This is U1D according to SAMS. The voltage on that pin sometimes is 5V before reset is pressed. Thereafter, the voltage on pin 24 is basically 4V (3.95-4.01) under any of the test conditions noted above.
5)On the A15, I checked the two points where 5V power is fed to the board and the voltages are a steady 5V. I looked at the 40-pin ribbon cable connection, that runs from the 505B. Made certain the orientation is correct (pin 1 lines up correctly.) Did not check the connector on the 505B side (will need to remove the board gingerly from the bus; the bus pins are delicate), so that is perhaps a next step.
6) Also on the A15, I checked voltages on directly on the traces that connect to the DB-25s with and without the test program running. There were occasional readings of 0.01-0.04V which maybe is just noise.
Next question is which of the 6850's (U1C or U1D) drives the printer/modem serial ports?
Thanks for any and all insights.
Tom
-
- Posts: 460
- Joined: Thu Apr 16, 2015 2:27 pm
- Location: Bronx, NY USA
Re: Machine hangs when trying to send data to serial port
U1C is part of the disk interface. U1D is the serial port.
I see that the /CTS signal (input to pin 24) comes from U1E, a 74157 Quad 2-Line to 1-Line Data Selectors/Multiplexer, selecting between signals that come from the printer and modem ports. I'm not sure just what is supposed to control that multiplexer. It's unlikely that you'd ever want a modem to hold up output, so you might want to bypass the multiplexer and take the /CTS signal right from U1G pin 3, the 1489 receiver that buffers the CTS signal from the printer. At any rate, it is a handshaking line that needs to connect to the printer's BUSY output (which might also be called Ready or Request to Send [RTS]).
P.S. Keep in mind that RS-232 uses negative voltage to indicate a logic 1, and positive voltage to indicate a logic 0. So the 1488 and 1489 driver and receiver chips invert voltage levels, but do not invert the logical meaning of signals. That's the theory, at least.
I see that the /CTS signal (input to pin 24) comes from U1E, a 74157 Quad 2-Line to 1-Line Data Selectors/Multiplexer, selecting between signals that come from the printer and modem ports. I'm not sure just what is supposed to control that multiplexer. It's unlikely that you'd ever want a modem to hold up output, so you might want to bypass the multiplexer and take the /CTS signal right from U1G pin 3, the 1489 receiver that buffers the CTS signal from the printer. At any rate, it is a handshaking line that needs to connect to the printer's BUSY output (which might also be called Ready or Request to Send [RTS]).
P.S. Keep in mind that RS-232 uses negative voltage to indicate a logic 1, and positive voltage to indicate a logic 0. So the 1488 and 1489 driver and receiver chips invert voltage levels, but do not invert the logical meaning of signals. That's the theory, at least.
-
- Posts: 246
- Joined: Sun Mar 08, 2015 3:42 pm
- Location: New York State
Re: Machine hangs when trying to send data to serial port
Thanks for this. Digging a bit deeper into the inner-workings of the peripheral I'm trying to drive, I'm seeing that it is wired only to receive signals on pin 3. RX wire on pin 3. Ground at pin 7 (DB-25 configuration). There is no wiring for flow control -- no RTS generated (and no CTS, DCD or TX). It's just waiting to receive and convert ASCII codes to X10 commands that propagate to X10 devices.
Here comes some not-fully-informed thoughts on potential ways around this problem.
Idea 1) Use RTS (pin 5) of the 6850 to drive CTS of . The 6850 datasheet shows that bits 5 and 6 can be used to control RTS on the ACIA. If I were to set RTS low and jumper pin 5 to pin 24 (I guess bend pin 24 up so it's not seated), would that force bit 1 of 6850 to go high and transmit? Alternatively, maybe just bend pin 24 up and leave it that way without messing with pin 5?
Idea 2) Jumper the RTS line of the modem interface (J9-pin 20) to the CTS line of the printer interface (J8-pin 5). Poke bit 6 of the ACIA to force RTS high? Your mentioning of the multiplexer makes me wonder if this will work since it sounds as if its purpose is to force signals over the modem port to trump the printer port.
Idea 3) Supply a constant -5V to the CTS line on the peripheral side and make certain it's flowing to pin 5 of the DB25 connector on the OSI side?
Lastly, are there any other intermediate components on the 505B or A15 between the 6850 and the DB25 connector that could create problems with RS-232 signals? Based on my rudimentary comprehension of schematics, it looks as if the 40-pin flat ribbon cable or a break in a trace might be the only other factors. (I haven't inspected the underside of the 505 board to see if any mods exist that might affect the 6850.)
Here comes some not-fully-informed thoughts on potential ways around this problem.
Idea 1) Use RTS (pin 5) of the 6850 to drive CTS of . The 6850 datasheet shows that bits 5 and 6 can be used to control RTS on the ACIA. If I were to set RTS low and jumper pin 5 to pin 24 (I guess bend pin 24 up so it's not seated), would that force bit 1 of 6850 to go high and transmit? Alternatively, maybe just bend pin 24 up and leave it that way without messing with pin 5?
Idea 2) Jumper the RTS line of the modem interface (J9-pin 20) to the CTS line of the printer interface (J8-pin 5). Poke bit 6 of the ACIA to force RTS high? Your mentioning of the multiplexer makes me wonder if this will work since it sounds as if its purpose is to force signals over the modem port to trump the printer port.
Idea 3) Supply a constant -5V to the CTS line on the peripheral side and make certain it's flowing to pin 5 of the DB25 connector on the OSI side?
Lastly, are there any other intermediate components on the 505B or A15 between the 6850 and the DB25 connector that could create problems with RS-232 signals? Based on my rudimentary comprehension of schematics, it looks as if the 40-pin flat ribbon cable or a break in a trace might be the only other factors. (I haven't inspected the underside of the 505 board to see if any mods exist that might affect the 6850.)
C8PDF w. 48K, 2x 520 24K RAM boards and Glitchworks 64K board
OSI 567 Telephony board
Spare 8" drives
Klyball D-13
OSI 567 Telephony board
Spare 8" drives
Klyball D-13
-
- Posts: 460
- Joined: Thu Apr 16, 2015 2:27 pm
- Location: Bronx, NY USA
Re: Machine hangs when trying to send data to serial port
If you have no intention of using any flow control with the serial port, you can just tie pin 24 of the ACIA to ground (breaking W19) and be done with it.
If you are thinking you might want to use a serial printer with it, that would need flow control, you could instead connect pull-up resistors to pins 1 and 13 of U1G (the 1489A). That way, when nothing was connected to those inputs, they would be pulled to +5V, forcing the outputs of the 1489 (pins 3 and 11) low, which would effectively ground the ACIA /CTS input regardless which one was selected by the multiplexer chip (U1E).
As you probably know, the 540B board actually has its own circuitry for controlling BSR X-10 modules, but it requires some complex software (the 65D Home Control OS) to work, so an external unit that can do the controlling with simple ASCII commands probably makes more sense.
If you are thinking you might want to use a serial printer with it, that would need flow control, you could instead connect pull-up resistors to pins 1 and 13 of U1G (the 1489A). That way, when nothing was connected to those inputs, they would be pulled to +5V, forcing the outputs of the 1489 (pins 3 and 11) low, which would effectively ground the ACIA /CTS input regardless which one was selected by the multiplexer chip (U1E).
As you probably know, the 540B board actually has its own circuitry for controlling BSR X-10 modules, but it requires some complex software (the 65D Home Control OS) to work, so an external unit that can do the controlling with simple ASCII commands probably makes more sense.
-
- Posts: 246
- Joined: Sun Mar 08, 2015 3:42 pm
- Location: New York State
Re: Machine hangs when trying to send data to serial port
Cutting one trace sounds pretty good.
If I were to try the pull-up resistors, something I've not done before but sounds intriguing, would the following sound right?
1) For pin 13, placing a 300-500ohm 1/4w resistor with one terminal connected to W41 and the other terminal connected to a pad feeding 5V somewhere near U1G
2) For pin 1, same type of resistor with one terminal connected to W39 and the other terminal connected to the closest pad that feeds 5V
Why 300-500ohms 1/4w? Google AI, not necessarily to be trusted, says a rule of thumb for pull-up resistors is to aim for an impedance that is about a 1/10 of the input impedance which according to the 1489 datasheet is 3K-7K.
If I were to try the pull-up resistors, something I've not done before but sounds intriguing, would the following sound right?
1) For pin 13, placing a 300-500ohm 1/4w resistor with one terminal connected to W41 and the other terminal connected to a pad feeding 5V somewhere near U1G
2) For pin 1, same type of resistor with one terminal connected to W39 and the other terminal connected to the closest pad that feeds 5V
Why 300-500ohms 1/4w? Google AI, not necessarily to be trusted, says a rule of thumb for pull-up resistors is to aim for an impedance that is about a 1/10 of the input impedance which according to the 1489 datasheet is 3K-7K.
C8PDF w. 48K, 2x 520 24K RAM boards and Glitchworks 64K board
OSI 567 Telephony board
Spare 8" drives
Klyball D-13
OSI 567 Telephony board
Spare 8" drives
Klyball D-13
-
- Posts: 460
- Joined: Thu Apr 16, 2015 2:27 pm
- Location: Bronx, NY USA
Re: Machine hangs when trying to send data to serial port
I would have guessed a higher value for those "pull-up" resistors, but I'm not really too knowledgeable about that. I was thinking perhaps as much as 5k ohms, because conceivably there could be as much as 20 volts across them (-15 to +5 volts). They really would only be pulling "up" when the 1489 inputs were otherwise unconnected. A 500 ohm resistor with 20 volts across it would have a current of 40 mA, and would dissipate 0.8 watt, clearly no good for a 1/4 watt resistor. A 1600 ohm resistor with 20 volts across it would dissipate exactly 1/4 watt. Apply a safety factor of 2 and round up to the next standard value and a 3300 ohm resistor is really the minimum. Anyway, 4.7 k-ohm pullups seem to be pretty standard on OSI boards. I welcome comments on this from anyone who has more experience with such things.
In the meantime, cutting W19 and grounding pin 24 is probably the more sensible approach. If you ever do want to use a printer that needs handshaking, you change things then.
In the meantime, cutting W19 and grounding pin 24 is probably the more sensible approach. If you ever do want to use a printer that needs handshaking, you change things then.
-
- Posts: 246
- Joined: Sun Mar 08, 2015 3:42 pm
- Location: New York State
Re: Machine hangs when trying to send data to serial port
Thanks Danny.
Just to be certain since this is my first time working on 505B board modifications:
to ground pin 24, I should run a bodge wire from the pin-side of the cut to W19 to the nearest pad connected to ground? Does that sound right?
Tom
Just to be certain since this is my first time working on 505B board modifications:
to ground pin 24, I should run a bodge wire from the pin-side of the cut to W19 to the nearest pad connected to ground? Does that sound right?
Tom
C8PDF w. 48K, 2x 520 24K RAM boards and Glitchworks 64K board
OSI 567 Telephony board
Spare 8" drives
Klyball D-13
OSI 567 Telephony board
Spare 8" drives
Klyball D-13