Christoffer
Experienced Member
Here I am again, with a hardware development project.
I'm building a semi-altair-compatible 8085 computer, based on the europe card bus (ECB) standard.
So far I've made a CPU card, 4K SRAM card, and a 8800B-turnkey-ish card featuring monitor ROM and a serial port.
The goal is, at first, to get that card running the altair turnkey monitor.
And I've run into a brick wall in getting the ACIA to communicate. I made it run a small test routine, that should just display some characters, and then mirror any characters you send to it.
But it won't reciprocate my sent characters. I assume it's not receiving them, but I can't for the life of me figure out why. I've traced the rx signal all the way to the ACIA (null modem'd of course) - but it doesn't react to it at all.
Here's the code:
It's based on this code snippet I found: http://www.solivant.com/altair_bootloaders/index.php?album=altair_bootloaders&pagen=1
And here's the schematic:
The data/address/control signals are standard buffered 8085 signals.
When the program runs, I do get my "HELLO[CR]>" thrown back at the terminal, so I assume the rom part of the circuit is fine. Handshaking and baudrate generation must be as well.
I had some issues with driving the "E" signal since it's a thing native to the 6800 family processors, but I created that by NAND'ing /WR and /RD, again, very similar to what the turnkey card did, generating a pulse whenever it reads or writes, and I use S1 as a R//W line.
Any help with what's going on would be much appreciated.
I'm building a semi-altair-compatible 8085 computer, based on the europe card bus (ECB) standard.
So far I've made a CPU card, 4K SRAM card, and a 8800B-turnkey-ish card featuring monitor ROM and a serial port.
The goal is, at first, to get that card running the altair turnkey monitor.
And I've run into a brick wall in getting the ACIA to communicate. I made it run a small test routine, that should just display some characters, and then mirror any characters you send to it.
But it won't reciprocate my sent characters. I assume it's not receiving them, but I can't for the life of me figure out why. I've traced the rx signal all the way to the ACIA (null modem'd of course) - but it doesn't react to it at all.
Here's the code:
Code:
0001 0000 ;***************************************************************
0002 0000 ; UART REFLECTOR TEST *
0003 0000 ; SHOULD REFLECT ANY INPUT TO ACIA. *
0004 0000 ;***************************************************************
0005 0000
0006 0000
0007 0000 SIORST .EQU 03H ; ACIA MASTER RESET
0008 0000 SIOINIT .EQU 35H ; 8/N/1, /16
0009 0000 ACIACR .EQU 00H ; SIO STATUS AND COMMAND REGISTER
0010 0000 ACIADR .EQU ACIACR+1 ; SIO DATA REGISTER /AT IO ADDRESS 01H
0011 0000
0012 0000 .ORG 0000H
0013 0000 INIT:
0014 0000 3E 03 MVI A,SIORST
0015 0002 D3 00 OUT ACIACR ;RESET ACIA
0016 0004 3E 35 MVI A,SIOINIT
0017 0006 D3 00 OUT ACIACR ;SETUP ACIA
0018 0008 3E 54 MVI A,54H
0019 000A D3 01 OUT ACIADR
0020 000C 3E 45 MVI A,45H
0021 000E D3 01 OUT ACIADR
0022 0010 3E 53 MVI A,53H
0023 0012 D3 01 OUT ACIADR
0024 0014 3E 54 MVI A,54H
0025 0016 D3 01 OUT ACIADR
0026 0018 3E 0D MVI A,0DH
0027 001A D3 01 OUT ACIADR
0028 001C 3E 3E MVI A,3EH
0029 001E D3 01 OUT ACIADR ;"TEST"CR">"
0030 0020
0031 0020 DB 00 LOOP: IN ACIACR ;READ STATUS REG.
0032 0022 0F RRC
0033 0023 D2 20 00 JNC LOOP ;WAIT FOR IN CHARACTER
0034 0026 DB 01 IN ACIADR ;GET CHAR
0035 0028 D3 01 OUT ACIADR ;WRITE CHAR BACK
0036 002A C3 20 00 JMP LOOP ;REPEAT FOREVER
0037 002D .END
0038 002D
0039 002D
tasm: Number of errors = 0
It's based on this code snippet I found: http://www.solivant.com/altair_bootloaders/index.php?album=altair_bootloaders&pagen=1
And here's the schematic:
The data/address/control signals are standard buffered 8085 signals.
When the program runs, I do get my "HELLO[CR]>" thrown back at the terminal, so I assume the rom part of the circuit is fine. Handshaking and baudrate generation must be as well.
I had some issues with driving the "E" signal since it's a thing native to the 6800 family processors, but I created that by NAND'ing /WR and /RD, again, very similar to what the turnkey card did, generating a pulse whenever it reads or writes, and I use S1 as a R//W line.
Any help with what's going on would be much appreciated.