I'd be curious to know also what the market is for these sort of parts. It's possible that it's some sort of government/military/aerospace thing with an extensive existing codebase where certifying a new design is extremely expensive
In addition to that the corrupted bytes containing character data were unstable too; I was actually getting randomly flashing characters on screen. Whole bytes were randomly alternating between $FF and the originally programmed values. But something miraculous happened when I removed the blob of Blu-tak covering the glass window, allowing in light - all of the data magically uncorrupted itself! It's completely reliable too. So long as there is a certain amount of light shining on the chip all is fine, but if I progressively block out the light by lowering my thumb towards the window at a certain threshold the data goes whoopie.
Usually covering the UV window, when you are using the EPROM, is important. Otherwise there can be the odd, crash or data corruption, now and then (usually but not always, sometimes they seemed to work fine, WITHOUT any opaque labels etc). But then there was the risk of stray light (especially sunlight) from erasing it over time as well.
So maybe (speculation), the EPROM has exceeded its 10/20 year write retention lifespan, and is actually helped by the stray light, causing some raising of voltages or something.
If it was me, I'd read the data when it works (or get it from a proper source or even write it from scratch), and burn it into a "fresh" EPROM. But I guess UV erasing and rewriting that EPROM may work as well.
In addition to that the corrupted bytes containing character data were unstable too; I was actually getting randomly flashing characters on screen. Whole bytes were randomly alternating between $FF and the originally programmed values. But something miraculous happened when I removed the blob of Blu-tak covering the glass window, allowing in light - all of the data magically uncorrupted itself! It's completely reliable too. So long as there is a certain amount of light shining on the chip all is fine, but if I progressively block out the light by lowering my thumb towards the window at a certain threshold the data goes whoopie.
Usually covering the UV window, when you are using the EPROM, is important. Otherwise there can be the odd, crash or data corruption, now and then (usually but not always, sometimes they seemed to work fine, WITHOUT any opaque labels etc). But then there was the risk of stray light (especially sunlight) from erasing it over time as well.
So maybe (speculation), the EPROM has exceeded its 10/20 year write retention lifespan, and is actually helped by the stray light, causing some raising of voltages or something.
If it was me, I'd read the data when it works (or get it from a proper source or even write it from scratch), and burn it into a "fresh" EPROM. But I guess UV erasing and rewriting that EPROM may work as well.
Oh, this old EPROM was pulled from a proto board I built 17 years ago. The project in question was a Space Invaders clone, which I never finished as my "CPU" was a 16F874 and I ran out of RAM to store all of the working variables, LOL. I don't think that a sticker has been in place over that window for a good 15 of those 17 years, so it's little wonder that it is operating funky now, if not a miracle that I can still recover the data at all. As a matter of fact that EPROM, on a 1kb page not accessible by my current design, there is the complete Space Invaders character set, including all of the animated aliens, which I copied pixel-pixel verbatim from screen images of the original arcade game. When my programmer arrives I'll read the content and safely file the binary, just for nostalgia, or if I ever feel like rebooting the project.
I'm surprised that it is NOT 6845 based (which I somehow thought it was). Which was typical of that era (but I may have the dates a bit wrong).
https://en.wikipedia.org/wiki/Motorola_6845
I'd mostly forgotten about the 'Fast' 'Slow' video writing modes. If I remember correctly, even when there is interference, it is mainly/fully being BLACK where it could have been white, rather than a snowy effect, and is quite fast.
So I don't think it is TOO bad, even with the 'artifacts'.
Partly because the screen was not that sharp or easy to read RELATIVELY, compared to other (probably much more expensive), computer/monitor/terminals of that era.
It was OK, and nice, in its own right. But it was possible to get much nicer looking displays, with text which looked more like typewritten print. I.e. less visible pixels and nicer colours etc. It was also a bit shaky as well, even when the text was stationary and nothing was being written to the screen.
tl;dr
I think it was "Cost reduced", and used a cheap black and white crt from a large production TV set, and had other cost saving measures. Which perhaps explain what I mean.
E.g. An expensive computer of that era would have a hard disk, or at least floppies (I know later models of the Pet, did have such things, and plug in ones were available at some point), rather than a built in tape cassette unit.
The keyboard was also on the 'cheap' side, with these small plastic, key like things. Rather than a proper, full sized, mechanical keyboard, of the day, then.
Nope, no 6848; just generic ROM, RAM and TTL. Here is the schematic: http://www.zimmers.net/anonftp/pub/cbm/schematics/computers/pet/2001/320081-3.gif
The "extended" character set used in the PET was carried, essentially unchanged, over to the VIC20 and C64. The PET's video generator circuitry was about as primitive as a 40x25 character generator can be made. There was not provision for user-defined characters and no bitmapping. The characters stored in the ROM as supplied by CBM were the only things that could be printed to the screen. These limitations were why the character set produced (dubbed "PETSCII") went well beyond the standard ASCII set, with all those extra "graphics" characters useful for drawing pretty displays.
My favorite feature of the PET is the IEEE-488 (otherwise known as GPIB) interface bus. When I get this clone finished I'm going to install it on my bench an put it to actual serious use controlling my test gear.
HP certainly made plotters that had GPIB, or rather HP-IB as they called it. I think there were printers too but I don't know for sure. I'm not sure what Commodore peripherals used it but it seems like there was a disk drive. While generally considered exotic on a computer, GPIB is rather simple to implement, in some cases it was done with discrete logic without even having a microprocessor involved.
Commodore periphery used the IEEE-488 bus: so there where disk drives, printers and even a hard drive with IEEE-488 interface. At school we used some of those later PETs.
On the computer side there is rather little hardware to make the interface. So it was a sensible decision. So they could use existing periphery and might sell there parts for use with HP computers.
The funny thing was that the disk drives had more processing power than the PET. Some had 2 6502 CPUs (even the 2 MHz version, to get some spare timing) working on a shared memory: one mainly to do the floppy raw signal decoding. I might still have a board from such a floppy.
The first thing that struck me about it was the 8 MHz crystal. Usually I'm use to it being some weird/complicated frequency, such as 3.579545 MHz or 4.43361875 MHz (yes, I know those are for transmission to TV's for NTSC/PAL), but usually I see funny numbers, such as 12.13643636797 MHz (hypothetical number), because it divides up to eventually make 60/50 Hz with the required number of scan lines and pixels, etc.
I see.
Yes, long term (decades) uncovered UV windowed EPROM's, are suppose to be in significant risk of dataloss, I agree!
I see.
Yes, long term (decades) uncovered UV windowed EPROM's, are suppose to be in significant risk of dataloss, I agree!
The funky UV-EPROM behaviour has now been solved! When an EPROM is erased all bytes attain a value of $FF. It appears that all those years of storage in almost complete darkness without the window covered brought my EPROM to the very precipice of total erasure. What I was seeing on the screen (and you are literally seeing the individual bits of whole bytes here), with those bytes randomly alternating between $FF and the programed values were bytes that couldn't make their mind up if they were erased or not! It's curious to note that there was a hysteresis-like effect, where, initially, the application of light through the window for a short time actually restored the unstable data, but guess what? I went out for dinner this evening neglecting to stick that blob of Blu-Tack back over the window and now my EPROM is giving me nothing but $FFs! Well F me, now I'm screwed until my programmer turns up.
Are you sure you don't have the out enable, or chip select, or upper address IO pin on your bread board open? These CMOS eproms inputs can behave like 74HC logic and my just begin working due to charge on such an IO. Try partially re-seating your eprom, bend the pinst and re-seat the wiring around it.
Such lemon breadboarding has caused me such headaches in the past. Usually holding 1 finger on VCC and stroking the eprom IO pins, then once again with you finger on GND might reveal the true nature of your problem which I bet isn't a sensitivity to a little light entering the eprom window.
But something miraculous happened when I removed the blob of Blu-tak covering the glass window, allowing in light - all of the data magically uncorrupted itself! It's completely reliable too. So long as there is a certain amount of light shining on the chip all is fine, but if I progressively block out the light by lowering my thumb towards the window at a certain threshold the data goes whoopie.
The first thing that struck me about it was the 8 MHz crystal. Usually I'm use to it being some weird/complicated frequency, such as 3.579545 MHz or 4.43361875 MHz (yes, I know those are for transmission to TV's for NTSC/PAL), but usually I see funny numbers, such as 12.13643636797 MHz (hypothetical number), because it divides up to eventually make 60/50 Hz with the required number of scan lines and pixels, etc.
The PET used a combination of PAL horizontal timing and NTSC (60Hz) vertical timing. In reality, the horizontal (line scan) frequency difference between PAL and NTSC is so small it makes no difference. The major timing difference between the two standards is in the number of lines and the resultant frame rate. NTSC has a lower vertical resolution, so the frame rate is faster. The PAL line rate of 15625Hz is evenly divisible into 8M, while the NTSC rate of 15750Hz would have required an odd-ball crystal frequency of 8.064MHz. The 1MHz clock for the 6502 was derived from this 8MHz clock, and there are probably good reasons for wanting a round figure of exactly 1MHz here (simplified serial baud rate calculations, etc), so a standard 8MHz crystal master clock just makes sense.
8MHz was the pixel clock; a period of 125nS, giving 512 pixels for each complete 64uS (1/15625) line period. The characters themselves consist of an 8x8 pixel grid and for the 40 column display 320 (40x8) pixels (40uS) of those 512 total form the visible portion of each line period. The vertical resolution thus required for the 25 rows of characters is 200 lines. The display is non-interlaced, with ~260 lines total, of which all but the 200 are blanked, for a frame rate very close to 60Hz.
The PET-2001 was provided a video and sync breakout for connection to an eternal 60Hz monitor, but I've not found any evidence that a 50Hz (PAL-timing compatible) version of the motherboard was ever made. Since most users probably would have never used anything but the internal monitor, I guess it's not surprising that CBM never bothered with a 50Hz version. Maybe if you lived in a PAL/50Hz region/country and wanted to connect to an external screen CBM may have offered to internationally ship you a 60Hz one!
Living in a 50Hz land, I've designed my video generator board to operate at a 50Hz (actually 50.08Hz to be precise) frame rate, with 312 vertical lines. This just results in the vertical height of the 200-line visible portion of the display on a 50Hz monitor/TV being a bit less than the original 60Hz one as displayed on a 60Hz monitor/TV. In the final build I will provide line count and vertical synchronization decode logic for both 50Hz and 60Hz field rates, jumper-selectable on board.
One thing to keep in mind though, is that in the 50Hz display mode, the PET will actually run proportionately slower in some operations. The vertical video blanking interval signal interrupts the CPU via one of the two PIA chips and clocks the internal timing module in the single VIA chip. When updating masses of characters on the screen in the "slow" update mode (such as scrolling a screen of text, which requires reading almost all locations of screen memory and writing back to row-shifted positions), the CPU does only what it can fit in during the vertical blanking periods. Also programs using the internal "real time clock" module of the VIA (actually just a presettable counter that overflows after accumulating 24 hours worth of 60Hz cycles) won't keep accurate time with the display in 50Hz mode, as they would have originally been written assuming a 60Hz clock.
I'm not 100% certain yet, but it looks to me like the frame rate processor interrupt is handled by PIA#1 totally independently of the RTC of the VIA. For video RAM writing to operate as it should the processor interrupt must remain locked to the video generator regardless of the frame rate, but I currently cannot see a reason why I cannot simply get around the RTC issue by providing a separate (always) 60Hz clock source for the timer input of the VIA.

I see.
Yes, long term (decades) uncovered UV windowed EPROM's, are suppose to be in significant risk of dataloss, I agree!
The funky UV-EPROM behaviour has now been solved! When an EPROM is erased all bytes attain a value of $FF. It appears that all those years of storage in almost complete darkness without the window covered brought my EPROM to the very precipice of total erasure. What I was seeing on the screen (and you are literally seeing the individual bits of whole bytes here), with those bytes randomly alternating between $FF and the programed values were bytes that couldn't make their mind up if they were erased or not! It's curious to note that there was a hysteresis-like effect, where, initially, the application of light through the window for a short time actually restored the unstable data, but guess what? I went out for dinner this evening neglecting to stick that blob of Blu-Tack back over the window and now my EPROM is giving me nothing but $FFs! Well F me, now I'm screwed until my programmer turns up.
I have seen millions of arguments, as to if EPROMS can be erased by allowing "normal" light into its uncovered window. Some people say they left an EPROM outside, for weeks on end, in an attempt to erase it, without an expensive UV eraser. With NO luck, it remains programmed.
While others, say that an uncovered UV window, under florescent lighting, managed to erase itself (unintentionally), after a few weeks of such abuse.
So I don't know who to believe.
There are also rumours (or theories), that poor quality, cheap, EPROM programmers can too weakly or poorly program EPROMS, so that the program/data prematurely erases/corrupts itself. Apparently expensive ones use complicated techniques to both very quickly and yet very reliably program them. E.g. extended voltage ranges to ensure it is done right (as already mentioned in this thread by someone else).
EPROMS were at least "fun", in the past, when they were a lot more commonly used.
I vaguely remember that the extended voltage range is for something like, that if it is programmed at the highest possible voltage, it will be fine at lower voltages. But if it were programmed at a lower voltage, it may be in trouble at higher voltages.
Or maybe it's the other way round, I can't remember the exact details.
Obviously (for non-RETRO projects) Flash is the modern day EPROM at the moment.
Sooner or later (or now if you count FRAM, but it tends to be pricey, a bit fussy and relatively low capacity), I guess something more ideal, will turn up. Which is economically priced, high capacity, low power, fast, extremely long term data-retention, infinite or very high write/erase cycle lifetimes, and easy/straightforward to use.
I dunno, I don't really have an issue with flash for retro, it's all data and the early DIP flash chips were pin compatible so it's not that much of a stretch in my mind.
I still like EPROM and I've just got hold of a really nice, old EPROM programmer so I'm going to dig out all the old ROMs I've got kicking around and read them out, might be informative as to data retention as I've not taken great amounts of care to ensure they were stored well. A lot of them have checksums written on labels or chip bodies.