4th Apr 2021, 4:05 pm | #1301 |
Octode
Join Date: May 2012
Location: Perth, Scotland
Posts: 1,818
|
Re: Non-working Commodore PET 3016
Slothie EPROM - cycles through some characters and pretty quickly (c. 5 seconds) ends with
zero page error - stopped Daver2 EPROM - puts characters in PETSCII sequence from 32-63 then the same in inverse on the screen. At a random time afterwards, it changes to the second screen, and then flips between the two after a minute or two of showing the previous screen - see attached photos. Colin. |
4th Apr 2021, 4:42 pm | #1302 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,583
|
Re: Non-working Commodore PET 3016
That sounds to me like they are both doing what they are meant to, but in both cases encountering a problem and proceeding no further, much as we probably expected at this stage. The fact that both lots of test code show something on the screen - the character set in correct order - confirms that the screen memory and associated display hardware is all working as it should.
Slothie's code is telling us that even the critical first 256 bytes of memory (Zero Page) which the 6502 uses for some special purposes is not working, so that explains why the CPU does not get very far when trying to initialise with the normal PROMs fitted, as they rely on working RAM in zero page for correct operation of subroutine calls and interrupts. Could you please capture between 8 and 16 cycles of the waveform(s) on UI11 pin 1 and UI11 pin 19 - (both at the same time), and also capture whatever there is on pin 3 of UJ2 - both to be taken with Slothie's EPROM fitted and in the interval between start-up and the appearance of the Zero Page error message. |
4th Apr 2021, 7:55 pm | #1303 |
Octode
Join Date: May 2012
Location: Perth, Scotland
Posts: 1,818
|
Re: Non-working Commodore PET 3016
I'll to the traces as above. Note now that when I put UD8 back in and replace UD9 with the Slothie EPROM, I get the following message:
:%2/ 0!`% %22/2 - 34/00%$ I note that the UD9 socket is now very easy to push/replace the EPROM into - I wonder whether the turned pin socket has damaged the original motherboard scket in any way? Colin. |
4th Apr 2021, 8:12 pm | #1304 |
Octode
Join Date: May 2012
Location: Perth, Scotland
Posts: 1,818
|
Re: Non-working Commodore PET 3016
Pin 3 of UJ2 attached. Note I have had to change the voltage setting to get the waves readable. I'm finding it more difficult to get readings from UI11 - I need a third hand so I'll be with you as soon as I can.
Colin |
4th Apr 2021, 8:17 pm | #1305 |
Octode
Join Date: May 2012
Location: Perth, Scotland
Posts: 1,818
|
Re: Non-working Commodore PET 3016
UI11/1 (yellow) and UI11 19 (green) attached. Again note I have had to change the voltage setting on the scope software.
Colin. |
4th Apr 2021, 8:50 pm | #1306 |
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: Non-working Commodore PET 3016
|
4th Apr 2021, 9:30 pm | #1307 | |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,583
|
Re: Non-working Commodore PET 3016
Quote:
You can try putting the original UD9 and / or the Slothie EPROM in its adaptor into UD9 socket and checking continuity from all UD9 pins to the associated UD9 PCB pads to see if you can identify which, if any of the connections, is not making. Bear in mind that on the Slothie EPROM adaptor pin 18 of the upper socket is intentionally not connected to pin 18 of the lower socket and is instead connected to pin 20 of both the upper and lower sockets. It's not clear whether the readings you go with the curiously low waveform height were taken before or after this problem arose? |
|
4th Apr 2021, 9:33 pm | #1308 |
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: Non-working Commodore PET 3016
My diagnostic ROM does the following:
1) Writes characters $FF (Checkerboard) to $20 (Space) to every screen location, to clear the screen and also show something on the screen. This takes about 5 seconds as noted and leaves the screen blank. 2) Checks memory locations $00-$FF by writing $55 and $AA to them and making sure they read back correctly. These patterns are chosen because they will reveal stuck, shorted or broken bits. 3) If 2 fails, displays the "Zero page error" message and then sits in a jump loop, so the processor should just be fetching instructions continually and not doing much else. 4) Memory from $200-$2FF (The stack area) is tested as in 2 & 3 above. 5) If the zero page and stack are OK then the I/O chips are initialised, a banner is printed to the screen, and it uses the zero page registers to test $0300-$7FFF (up to 32k) using the two patterns described above. It then writes the page number (the upper byte of the address, e.g. $03-$7F) into the memory location and moves on. 6) Due to a slight buglet, only if step 5 finds 32k of memory it will check that the page number written into each location is correct. It should test 4K, 8K and 16K machines too. This test should detect memories that get selected on multiple address ranges by bad address decoding by having the wrong page number written to them. I intend to add other features including a better memory test that shows which blocks have been checked, and what the actual and expected values are when a test fails. I just need to write a non-interrupt version of the keyboard scan so options can be selected. Like an option to keep testing a "bad" block of memory so signals can be traced. The two main points are: 1) This may not work on dynamic RAM pets if the refresh logic is SNAFU, but will always do the characters on the screen, banner message and bad zero page message even if there is no RAM at all (well, you have to have screen RAM at $8000-$83FF but you get what I mean), If you see the flashing characters then the screen ram is at least partially working, it the banner is garbled then the RAM or character ROM may be kaput (or the logic connected to it etc). 2) You need at least the first 0.75K to be working for the diagnostic to complete, although you will get a message if the ZP or Stack memory fails. Comments/Suggestions always welcome. |
4th Apr 2021, 9:33 pm | #1309 | ||
Octode
Join Date: May 2012
Location: Perth, Scotland
Posts: 1,818
|
Re: Non-working Commodore PET 3016
The waveforms were after.
I think I'll go for a socket replacement tomorrow and update you with the results. Colin. Quote:
|
||
4th Apr 2021, 10:00 pm | #1310 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,583
|
Re: Non-working Commodore PET 3016
A warning in advance that if you do fit a new socket and you go to plug the Slothie test eprom + adaptor into that, only insert it just far enough so it 'sticks', don't push it all the way in because those sockets are not really designed to have the round pins of turned-pin sockets plugged into them.
If you do shove it all the way in you will find that a normal IC (with flat pins) will be a very slack fit afterwards, exactly the same problem as the one you are trying to fix now. To remove a conventional socket the method, as originally suggested by AJ, is to cut the spars which join the two sides of the socket together and then gently rock each side of the socket from side to side until all the pins snap leaving only the remains of the pins in the board. Turn the board over, melt the solder on each pin in turn and pick them out with a pair of tweezers. Note this only applies to conventional sockets, turned-pin sockets are one of the most difficult things you could ever try to remove from an old double sided PCB (so try not to ever need to do that). Slothie, thanks for the breakdown on what the code does in its current form. As you've already seen, it would be useful if, on failure to write to and read back from a specific RAM location or block, it would produce the error message but then continue to attempt the failed task so that the reason for the failure could be traced more easily. From what you've said above it would actually be very difficult to catch the failure in the act at the moment because it's just a brief flurry which happens at the end of the 5-second screen memory test. I think we'll have to use BANK SEL as the trigger since that only activates when the system is writing to or reading from system RAM. Last edited by SiriusHardware; 4th Apr 2021 at 10:06 pm. |
4th Apr 2021, 10:06 pm | #1311 | |
Octode
Join Date: May 2012
Location: Perth, Scotland
Posts: 1,818
|
Re: Non-working Commodore PET 3016
Does that also apply if I fit a turned pin socket?
Colin. Quote:
|
|
4th Apr 2021, 10:10 pm | #1312 |
Dekatron
Join Date: Aug 2011
Location: Newcastle, Tyne and Wear, UK.
Posts: 11,583
|
Re: Non-working Commodore PET 3016
You've quoted my entire post so I'm not sure what, specifically, you are asking about. If you fit a turned pin socket then be careful not to push the adaptor (which is also a turned pin socket) all the way into it, otherwise it will open out the holes in the newly fitted socket.
The 'cut and rock' method should never be used to remove a turned-pin socket. |
4th Apr 2021, 10:19 pm | #1313 | |
Octode
Join Date: May 2018
Location: Northampton, Northamptonshire, UK.
Posts: 1,440
|
Re: Non-working Commodore PET 3016
Quote:
Other Sinclair / Commodore etc. diagnostic ROM's will tell you IC number, but with so many different PET boards, then that's probably not too practical. Although I have also seen some using bars in the border to indicate which Databits are faulty. So may be able to do something similar to indicate where fault is if screen RAM isn't entirely working and there's no audio beep feedback available. May also be able to pulse some user port etc. lines to indicate this. Regarding the screen error message now mostly changing to different characters, that looks more like the screen memory has gone a bit faulty (or the character generator ROM - assuming this is using one - has connections to it a bit intermittent). As if there was a problem with the Data pins on the diagnostic EPROM socket, then the code wouldn't run on the 6502 correctly. Last edited by ortek_service; 4th Apr 2021 at 10:26 pm. |
|
4th Apr 2021, 10:36 pm | #1314 | |
Octode
Join Date: Mar 2020
Location: Kitchener, Ontario, Canada
Posts: 1,297
|
Re: Non-working Commodore PET 3016
Quote:
For dynamic ram, a write followed by a read may not detect a fault. It might be best to write to every location, then a delay calculated from dram spec, then read from every location. Then repeat with a different pattern. This would be in addition to a read followed by write and read from each location not instead, as you want to check for address errors. |
|
4th Apr 2021, 10:47 pm | #1315 | |
Octode
Join Date: May 2012
Location: Perth, Scotland
Posts: 1,818
|
Re: Non-working Commodore PET 3016
That was my question - well divined and apologies.
I'll check continuity from the pins in the EPROM you sent me first before I make any changes, but I may go for a new socket; I'll let you know tomorrow. And if I do I'll be careful pushing another socket into it - I don't want to have to fight with trying to remove a turned-pin socket from this motherboard. Colin. Quote:
|
|
4th Apr 2021, 11:11 pm | #1316 | ||
Octode
Join Date: May 2018
Location: Northampton, Northamptonshire, UK.
Posts: 1,440
|
Re: Non-working Commodore PET 3016
Quote:
Yes, for DRAM's it's a bit more involved and important to know which bit is at fault. But I recall Slothie saying his code didn't support DRAM PET's at present, due to extra complexity of doing this on a PET (Which presumably doesn't have hardware-based refreshing, which computers with CRTC's / ULA's have that does this for you) |
||
4th Apr 2021, 11:24 pm | #1317 | |
Octode
Join Date: May 2018
Location: Northampton, Northamptonshire, UK.
Posts: 1,440
|
Re: Non-working Commodore PET 3016
Quote:
If a motherboard's IC socket's pins have got opened up a bit too much, and you were going to replace it at some point anyway, then inserting an extra turned-pin one into it temporarily may at least provide a better contact to it just for testing / eliminating things for now. With normal rectangular pin type IC sockets, you could probably also fit one of these into the board's sockets, as a sacrificial 'saver' when inserting turned-pin adaptors to prevent damage to the board's ones. - Although at least turned pins are usually only 0.64mm, whereas attempting to force 0.64x0.64mm square headers into IC sockets, that I have seen used before on some adaptor boards, almost certainly opens the socket's contacts out too much (if they even go in at all, on some types) |
|
4th Apr 2021, 11:30 pm | #1318 | |
Octode
Join Date: Apr 2018
Location: Newbury, Berkshire, UK.
Posts: 1,287
|
Re: Non-working Commodore PET 3016
Quote:
|
|
5th Apr 2021, 12:08 am | #1319 |
Octode
Join Date: May 2018
Location: Northampton, Northamptonshire, UK.
Posts: 1,440
|
Re: Non-working Commodore PET 3016
Although the problem maybe that the screen memory originally used separate RAM IC's, so any video logic that runs through the screen RAM, refreshing it, won't see the main (D)RAM memory.
However it seems that the later 8296 at least PET's did have single RAM area, rather than dedicated video RAM IC's, and also used a 6545/6845 CRTC so this may have refreshed all of the DRAM's. But 2001-(8/16)N versions in between these used DRAM's, that may have not all been accessed by the video circuitry. However, it seems the later PET's may still have been all character generator only based, with bit-mapped graphics not available until the VIC-20 etc. Last edited by ortek_service; 5th Apr 2021 at 12:25 am. |
5th Apr 2021, 12:19 am | #1320 |
Dekatron
Join Date: May 2008
Location: Derby, UK.
Posts: 7,735
|
Re: Non-working Commodore PET 3016
If you fit new turned-pin sockets on the motherboard, you won't have to worry too much about loosening the contacts with repeated insertions and removals. A turned-pin socket will happily accommodate the round pins of another turned-pin socket and not lose any ability to grip the flat pins of an IC. If you are very concerned about damaging sockets (they are a nightmare to replace), you can just stack two together; if you damage the top one, you can always swap in a brand new one.
The DRAM refreshing is all done in hardware, between processor memory accesses for transparency. As far as the 6502 is concerned, it might as well be static RAM. (In fact, it was, in very early PETs .....) P.S. That error message looks like it could be a corruption of ZERO PAGE ERROR ..... That'll be my mis-spent youth again .....
__________________
If I have seen further than others, it is because I was standing on a pile of failed experiments. |