Using PUTCH on the Orton 3C

57 views
Skip to first unread message

James Harland

unread,
Feb 21, 2026, 3:19:33 AM (7 days ago) Feb 21
to RC2014-Z80
Hello everyone,

I am happy to have my ROM unit on the Orton 3C up and running. I am able to run the CLRAMLOOP routine, and have examined the memory where the PUTCH routine is from my Orton 3C, so I know that the computer can access that memory.

However, I am having difficulty transmitting even one character over serial.

I am connected via USB as I do routinely with my Classic ][.

I have set up Minicom according to the Orton Z80 computer manual (9600 baud, no parity, 1 stop bit - 8N1, or I18n as it then appears on Minicom).

I first call SPINIT (JP $4003). This HALTs as expected. 

I then enter the following code:

1     0000                      org 0
2     0000
3     0000                      PUTCH   =$400A
4     0000 3E 41           LD A,'A'
5     0002 CD 0A 40    CALL PUTCH ( I have also tried C3 0A 40 JMP PUTCH instead)
6     0005 76                 HALT

When I run this, I get a lot of nonsense on minicom, which continues until I kill the RUN switch, but I do not see my letter A.

For example:

Screenshot from 2026-02-21 13-17-16.png
Any ideas how I can troubleshoot this?

Thanks and all the best,

James




James Harland

unread,
Feb 21, 2026, 3:39:18 AM (7 days ago) Feb 21
to RC2014-Z80
This may have been because of a loose USB CDC converter. Having made sure it is sitting snugly, I am no longer getting the neverending stream of nonsense, but I am not seeing my A come through either - just no response from minicom. I also get nothing if I cat /dev/ttyACM0. Before I was getting a similar nonsense stream there. Also my routine never reaches the HALT command.

James Harland

unread,
Feb 21, 2026, 5:08:52 AM (7 days ago) Feb 21
to RC2014-Z80
Hi Spencer,

Ok last message as I'm giving up on this for now! Having read the annotations on the code on Codeberg, I see that someone (you?) replaced presumably RET with HALT in SPINIT, but then I am confused as to where to put my own code, as 0000 is occupied with E9 JMP (HL) command after SPINIT has run. I have tried putting my code starting at 0001 and then running as usual, and I wanted to also try running my code from 0001, but I am not sure how to do that, as I normally run code with the RESET swtich down, so only starting from 0000.

Please could you explain how to use PUTCH afer SPINIT with the current ROM?

Thanks and all the best,

James

Spencer

unread,
Feb 22, 2026, 12:43:14 PM (6 days ago) Feb 22
to rc201...@googlegroups.com
Hi James,

I can't take the credit for this code... so I don't want to take the blame either :-)

The Serial Echo routine was written by Karen Orton.  There are essentially 3 parts to it. The SPINT which sets up the stack pointer stuff, then the main loop which just runs the GETCH and PUTCH parts.  You should be able to run the GETCH and PUTCH on their own as long as SPINT has been run through first. I suggest taking a close look at the SPINT to understand how that works.

Remember that A15 is not connected to any memory.  So looking at Peters excellent explanation of how addressing works on the Z80, you should see how the lower 32k of memory appears in the upper 32k too. So adress 0000 0000 0000 0000 is the same as address 1000 0000 0000 0000 (0x00 and 0x80 respectively).  It is only the lower 15 bits (A0 - A14) that select the memory on the Orton 3C.

Hope that helps

Spencer

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+...@googlegroups.com.
To view this discussion, visit https://groups.google.com/d/msgid/rc2014-z80/ef18f7f3-291b-445c-90cd-282fbfa6f8cdn%40googlegroups.com.

James Harland

unread,
Feb 22, 2026, 7:52:20 PM (5 days ago) Feb 22
to RC2014-Z80
Hi Spencer,

Thanks for your reply. So you haven't got PUTCH to work yourself? I've tried to follow what it's doing, but I'm still a beginner with Z80 machine code.

Do you have the original code? I'm wondering if I should replace HALT with RET, and try to call both SPINIT and PUTCH without HALTing in between.
Reply all
Reply to author
Forward
0 new messages