600D replica problem (test 6)

andrewh
Posts: 22
Joined: Fri Sep 16, 2022 10:40 am

600D replica problem (test 6)

Post by andrewh »

I'm working on building my 600D replica and resolved several problems (my soldering, mainly). I've got the screen of tanks, so now I'm on test process 6 (CPU, memory, ROM) and I'm getting the attached screen. I'm at a bit of a loss on how to proceed. Any suggestions?
Attachments
8D656CFE-2662-4CC8-88A7-0809A1050ED8.jpeg
8D656CFE-2662-4CC8-88A7-0809A1050ED8.jpeg (3.84 MiB) Viewed 1726 times
Mark
Posts: 297
Joined: Tue Sep 16, 2008 6:04 am
Location: Madison, WI
Contact:

Re: 600D replica problem (test 6)

Post by Mark »

Do you have an automatic RESET on powerup? (A capacitor resistor pair on the 6502 RESET line)?
If not, does the display change at all when you RESET the 6502?

It looks like video RAM is being clocked out to the screen correctly. It seems it could be a pattern of random characters. The fact that it is not exactly the same pattern throughout the screen is a good sign that video counters & video RAM is working. If you turn power on and off and on quickly, does the display change? The character values displayed are $09, $06, $18, $19, $1D, $04. Different data values from both video RAM chips.

The display does not rely on the 6502 working, so it could still be a system logic problem.

On RESET
Is there any activity on U13 pin 18/20 (Monitor ROM)
Is there any activity on U20 pin 7 (Write video enable) and on corresponding pins of 8T28 U24 & U25
Is there any activity on U20 pin 15 or 11? - tests if keyboard is being polled.

Is there any activity on address and data lines?

The SAMS manual has waveforms and test items which may help: https://osiweb.org/manuals/C1P_sams_jf_600dpi.pdf

From a previous post:

What happens to my C1P upon RESET?

The first thing that happens is the 6502 reads the reset vector at @ FFFC, FFFD
With the standard SYN600 OSI ROM, these addresses contain the values 00, FF which in low,hi 6502 order means the 1st instruction is read from $FF00.

Code at $FF00 starts by clearing 6502 decimal mode, the stack pointer is set to $28, which is just below the OSI NMI vector at $0130 set by location $FFFA,$FFFB. (IRQ vector at $FFFE,$FFFF is set to $01C0 by OSI.) The initial I/O redirection vectors and flags for C1P are initialized at $0200-$0221.

Next a JSR instruction calls a subroutine at $FCA6 to initalize the ACIA (serial port) at $F000. This means another page of kernel ROM is present. You should see a pulse on the ACIA 6850 pin 9 upon access. The RTS at the end is the 1st instruction that relies on working memory (stack) at $0128 and below. If $100 page RAM is not working the CPU will likely stop booting here.

Next the screen clear is initiated. $20 (space) is written to $D000-$D3FF all within ROM.

Then the D/C/W/M? prompt is written to the screen using the BASIC screen print routine at $BF2D, accessing BASIC4.
If the screen clears, but you do not get a D/C/W/M? prompt, then something is wrong with the BASIC 4 ROM access or RAM at $200

At this point the OSI waits in a loop, using the normal Keyboard/ACIA input routine waiting for a keypress. Since the $200 page I/O vectors have been initialized, the OSI is not looking for input from ACIA, just keyboard. It waits in the keypoller code at $FD00 until a key has been pressed.

The C1P keyboard uses a low value to select a row by writing to $DF00, and reads the result at $DF00 detecting a low value as a keypress. The keypoller relies on the SHIFT-LOCK key being set to return normal characters.

Once the keypoller has decided a key is pressed, it returns the ASCII value.
The OSI ROM looks for the keys M, W, C, D. 'M' jumps to the ROM Monitor at $FE00. 'W' Jumps to the Warm Start vector at $0000, 'C' jumps to the BASIC ROM Cold Start Entry Point at $BD11, and 'D' jumps to the Disk Drive Boot Loader at $FC00

Pressing 'C' should result in a "Memory Size?" prompt. Pressing <RETURN> will perform a memory test. The top of memory value will be seen in a following bytes free message.
andrewh
Posts: 22
Joined: Fri Sep 16, 2022 10:40 am

Re: 600D replica problem (test 6)

Post by andrewh »

Many thanks for this.

It looks like I've got R83 and C60 on the RESET line. The display changes if I turn it off and on again quickly, although it always seems to be the same if I do it slowly. Note at this point I'm on test process 6, so I would only expect it to respond to keys M and BREAK. ROMS are 28C16s if this is relevant, but removing the ROMs produces the same effect.

At power on, U13 pin 18 briefly has a waveform and pin 20 has 1MHz. Pressing BREAK also produces a waveform on pin 18. U20 pin 7 is at 4V (is this right?) Nothing is happening on U20 pins 11 and 15 (but I think this is expected at the moment?). The 8T28s have waveforms around 600KHz and 0.2V on pin 15.

Address lines have 0.5V and some of the data lines appear to have 1MHz at 0.4V.

Any more suggestions would be appreciated!
Mark
Posts: 297
Joined: Tue Sep 16, 2008 6:04 am
Location: Madison, WI
Contact:

Re: 600D replica problem (test 6)

Post by Mark »

The display changes are good with a quick power glitch. The 2114s get different values randomly.

Does ACIA U14 pin 9 get accessed? Since it is one of the first things done by the boot ROM it is a good indication of general system working. If not then look for shorted address or data lines , select logic problems, bad ROM or enable logic... etc. Perhaps pull the CPU and use resistors on the upper address lines & phase2 clock to set various addresses to check select logic?

If ACIA is accessed, then you are getting ROM access & code execution but no screen clear, so either the CPU gets lost trying to "RTS" after ACIA initialization, which means low system memory may be bad or the CPU is not able to write to video RAM. Since OSI wouldn't care if video RAM was inaccessible and would go on to keyboard polling and you are not seeing that, it has to be a problem before that in the startup order.

Check RAM access, um I believe the 1st 1K memory is U31 and U45. All the other system RAM is optional. Check pin 8 for access & R/W signal pin 10.
Good Luck!
-Mark
andrewh
Posts: 22
Joined: Fri Sep 16, 2022 10:40 am

Re: 600D replica problem (test 6)

Post by andrewh »

ACIA pin 9 is at 4V. If I hold down BREAK it goes to 0V briefly, so it looks like I have code execution (if I understand correctly).

I have swapped the memory and video memory as it looked like the video memory was good, and I get a new set of random characters. Pin 8 on both 2114s is a constant 4V and pin 10 is a constant 3.5V. This does not appear to change on a BREAK, which would suggest it's not even trying to access memory?
andrewh
Posts: 22
Joined: Fri Sep 16, 2022 10:40 am

Re: 600D replica problem (test 6)

Post by andrewh »

Correction, I see around 4 cycles on pin 8 when I hold down BREAK, so it is accessing memory.
andrewh
Posts: 22
Joined: Fri Sep 16, 2022 10:40 am

Re: 600D replica problem (test 6)

Post by andrewh »

The BOM at https://github.com/jefftranter/6502/blo ... 600bom.csv says that some of the ICs should not be LS types, which would seem to disagree with the original parts list. Any idea which is correct?
andrewh
Posts: 22
Joined: Fri Sep 16, 2022 10:40 am

Re: 600D replica problem (test 6)

Post by andrewh »

Hmm, I have 50K of resistance between my datalines and the 5V rail and 150K between my datalines. This seems suspicious, but I have run out of time.
Mark
Posts: 297
Joined: Tue Sep 16, 2008 6:04 am
Location: Madison, WI
Contact:

Re: 600D replica problem (test 6)

Post by Mark »

If removing the system ROM does not change the behavior of the problem then perhaps it is not being selected at all?
I know OSI supported both 2316B ROMS and 2716 EPROMS which have different chip select logic. I believe you had to change a jumper based on what you are using. I think W7 controls /CS and pin 21 should be tied high for a 28c16 monitor ROM.

There should be 10 memory accesses at @$02xx just after reset before the ACIA is accessed.
andrewh
Posts: 22
Joined: Fri Sep 16, 2022 10:40 am

Re: 600D replica problem (test 6)

Post by andrewh »

The replica has been modified for pin 21 to be high, and I've just checked it's at 5V. We know (at least one of) the 28C16s are good because I'm getting valid characters on the screen. Pulling the system ROM has no effect, so it looks like I have been looking for the wrong problem.
Post Reply