The Real Story of Hacking Together the Commodore C128
szczys writes "Bil Herd was the designer and hardware lead for the Commodore C128. He reminisces about the herculean effort his team took on in order to bring the hardware to market in just five months. At the time the company had the resources to roll their own silicon (that's right, custom chips!) but this also meant that for three of those five months they didn't actually have the integrated circuits the computer was based on."
The people I knew with 128s back then all used the 64 mode but used the 128 as an excuse to buy a better monitor. I never knew anyone using the CP/M mode.
Mostly random stuff.
From the Article: "Commodore C-128, the last mass production 8 bit computer and first home computer with 40 and 80 column displays"
C-128 was in 1985, the Acorn BBC had 20, 40 & 80 column modes (and a teletext mode) in 1981.
Bil will be teaching a class at the Vintage Computer Festival East next spring. He also lectured about the 128 and Commodore repair at the same event in 2012. Details are on c128.com.
He is claiming a lot of "firsts" that I would swear were in my Apple ][e prior to Winter '85...
Want to do a crazy program you can't write on modern computers?
What?
Simply loop through a sequence of poking two random numbers, and incrementing a number that you print.
What?
Every time, the system will do different things.
What ?
If you did this on a modern computer, eventually it'd corrupt system files and the thing wouldn't boot.
WHAT?
It makes you wonder why modern OSes aren't hardened with the theory: No matter what the user does, allow the computer to boot up safely next time.
You're an idiot.
CLI paste? paste.pr0.tips!
Ah, but you weren't a true C64 department-store hacker until you entered the couple of POKEs that disabled RUN/STOP and RESTORE keys before entering that loop.
A lot of early personal computers have a similar story. Software is often written with breadboarded or nonexistent hardware.
What is unique about the idea of custom silicon LSI chips for a 1980's PC?
The original Atari 800 (a design later copied by Commodore for the VIC-20 and Commodore-64 computers) had three custom chips (ANTIC, CTIA, POKEY) which made up the majority of the machine's circuitry when designed in 1978. And the OS and other early programs were written without the benefits of that completed hardware.
Only two LSI parts were off the shelf; the 6502 CPU and the 6520 PIA. Atari later replaced the CTIA with the GTIA (delayed by design issues) and the 6502 with a custom "sally" variant that built in formerly external tristate allowing the ANTIC to shut off the CPU's access to RAM every-other clock cycle so the RAM could be accessed by the ANTIC graphics chip.
That design was in active production for over ten years.
Even the lowly 2600 was a basically a custom TIA chip that originally existed as discrete logic parts wirewrapped together.
I fail to see how this story is either unique or great. If anything, it seems average.
Want to do a crazy program you can't write on modern computers?
What?
Yeah, can't is a blatant lie.
Yeah, that's trivial to do on a modern computer too. A trivial loadable kernel module in linux could do so, for example.
Simply loop through a sequence of poking two random numbers, and incrementing a number that you print.
What?
That is what it says, write a random value to a random memory location in a loop.
Every time, the system will do different things.
What ?
Of course it will. Sometimes you random memory location will be the memory mapped to the screen and a character will show up. Sometimes you'll change a return address on the stack and run some random code.
If you did this on a modern computer, eventually it'd corrupt system files and the thing wouldn't boot.
WHAT?
That's true, eventually you'll write over some file data just before it is flushed to disk and trash a file required for booting. Or screw with memory the file system is using and mess that up on the next write (though given the use of checksums that's pretty unlikely). The key is eventually since you'll have to run it a *lot* of times before it does something like that before crashing itself.
And of course not when running as a normal user process.
It makes you wonder why modern OSes aren't hardened with the theory: No matter what the user does, allow the computer to boot up safely next time.
You're an idiot.
Yes he is.
Computers that have the OS on ROM unsurprisingly aren't susceptible to making the system unbootable by screwing with boot files. The same is true of a modern computer hardwired to boot off of ROM as well though. And of course it makes upgrading that base OS essentially impossible (short of replacing the ROM, or actually using an EEPROM - and of course if software can do the upgrade then the random memory setting could also cause it to happen and screw up booting)
I talked to someone back in the win3x days that deleted his DOS directory because he didn't know what it was, so he figured it wasn't important.
True. I was one of those guys initially. I was a CS major in 1985 and my computer experience consisted of mainframes, CP/M machines and IBM PCs. Anything else was a "toy". I had a new girlfriend who suggested I could do my CS homework at her house because her dad "had a computer". She didn't know what kind it was, but he was an engineer so I figured it was probably pretty nice. I took her up on her offer, figuring that the suggestion was nothing more than a ploy to get me to come over to her house. When we got to her house she took me to the room he used as his office and pointed. I literally guffawed. It was a Commodore 64. She was somewhat offended at my reaction and I quickly apologized. Over the next few weeks I was a frequent visitor to her house and I began playing with the C64. The more I worked with it, the more respect I had for the platform. I especially liked the serial interface and how components could be daisy-chained. Far from being a toy, the C64 had the capability to do some pretty advanced stuff. And it was a LOT less expensive than an IBM PC. Eventually, the girlfriend became my wife, and her dad gave me the Commodore after he moved on to a PC. The wife and I broke several years ago. I still have the C64.
Proverbs 21:19
It past the spell choker.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
...to play Ultima V in dual SID mode.
After several C=64s and the 128, I moved to the Amiga, which got me into the VFX business thanks to the Video Toaster and Lightwave.
Looking forward to reading this article. If it's good I'll stash a copy next to my "Rise and Fall of Commodore" book.
a couple of weeks later the marketing department in a state of delusional denial put out a press release guaranteeing 100% compatibility with the C64. We debated asking them how they (the Marketing Department) were going to accomplish such a lofty goal but instead settled for getting down to work ourselves.
"First they came for the slanderers and i said nothing."
I was in 5th or 6th grade, and I woke up to a new computer in my room. The printer immediately broke and I noticed the desk was half up-side down. My dad had assembled it and the desk in the dark, during the night, while I was asleep (I'm a heavy sleeper). He was no technician, but I appreciated the effort. I traded c64 games with kids at school and stacks of 5.25 floppies via mail. Commodore games were fantastic; much better than NES. Junior year of High School, I finally had the initiative to figure out what my dad had done to the printer, and it turned out to be a simple problem that I fixed. I used 80 column mode to type and print essays for school for the next two years. Much praise to my old man. Granted, first year of college and he helped me acquire a 386 with Windows 3.0, which I had for three years, then built my own. I'll never forget my C=128. Thanks, dad!
I was a big fan, and a game developer for the C64. Those were the days that a machine could be fully understood by an untrained person with a knack for programming. When the C128 came out, I was interested, especially in the 80 column screen and CP/M software compilers. But there were too many limits on the machine (no hard drive easily added, no real OS, etc.) and it didn't feel like enough of an advancement over the C64. My grandfather did buy one, and I had some time with his, but that never really sparked much either. My next machine would be the Amiga, and as soon as that become somewhat affordable by a college student (the A500), I never looked back.
RM
}#q NO CARRIER
THe 6502 was an amazing processor. the Apple II was also a 6502. Unlike it's near contemporaries, the 8086 and Z-80 (and 6800), the instruction set was reduced. It had only 2 data registers (A,B) and two 8 bit address registers ( X Y) and fewer complicated ways to branch. Instead it effectively memory mapped the registers by using instructions like, offset Y by A, treat that as an address and get the byte at that location. Because it could do all that in one clock cycle, This effectively gave it 256 memory mapped registers. It also didn't have separate input lines for perifprials, and instead memory mapped those.
Nearly every instruction took a microsecond. Thus while the clock rate was 1 Mhz, it was much faster than a 4 Mhz 8080 series chip since those could take multiple cycles to do one instruction. Few memory chips (mainly static memory) could keep pace with that clock rate so the memory would inject wait states that further slowed the instruction time. The 6502's leisurley microsecond time was well matched to meory speeds. Moreover, on the 6502 only half the clock cycle was used for the memory fetch. This left the other half free for other things to access memory on a regular basis.
The regularity of that free memory access period was super important. it meant you could do two things. First you could backside the video memory access onto that period. On the 8080s using main memory you could often see gltiches on video displays that would happens when the video access was overridden by the CPU access at irregular clock cycles. As a result most 8080 series based video systems used dedicated video card like a CGA or EGA. Hence we had all these ugly character based graphics with slow video access by I/O in the Intel computer world. In the 6502 world, we had main memory mapped graphics. This is why the C64/Amiga/Apple were so much better at games.
This regular clock rate on the main meory had a wonderful side effect. It meant you could use Dynamic memory which was faster, cheaper, denser, and MUCH MUCH lower power than static memory. With the irregular access rates of the 8080 refreshing a page of dynamic memory requird all sorts tricky circuitry that trried to opportunistically find bus idle times to increment the dynamic refresh address, occasionally having to halt the CPU to do an emergency refresh cycle before the millisecond window of memory lifetime expired. As a result, the 8080 seris computers like Cromenco, Imsai, altair and Northstar all had whopper power supplies and big boxes to supply the cooling and current the static memory needed.
So the C64s and Apples were much nicer machines. However they had a reputation of being gaming machines. At the time that didn't mean "high end" like it does now. It mean toys. the Big Iron micros were perceived as bussiness machines.
Oddly that was exactly backwards. But until Visicalc, the bussiness software tended to be written for the 8080 series.
I think it was this memory mapping style rather than formal I/O lines to dedicated cards for periphrials (keyboard decoders, video, etc..) that lead apple to strive for replacing chips with software. they software decoed the serial lines (rather than using USART chips) they soft sectored the floppy drives rather than using dedicated controller chips, etc... And that was what lead to making the macintosh possible: less hardware to fit in the box, lower cost chip count, lower power more efficient power supplies.
Eventually however the megahertz myth made the PCs seem like more powerful machines than the 68000 and powerPC.
Some drink at the fountain of knowledge. Others just gargle.
Well, he's saying that you can't write a program that simply twiddles random memory regions because all modern OSs employ protected memory schemes to avoid exactly this. Modern computers are multi-tasking systems that do hundreds or thousands of things at once and doing so would be disasterous.
On an older computer without protected memory you can write such a program and the results are beyond bizzare. Most forget that these old systems are very very "Bare metal". They don't have the layers of abstraction, exception handlers, memory protection, etc that you take for granted. The theory operation for a modern system is to look for dangerous program behavior and to stop, halt, throw an exception, or otherwise bring everything to a screeching halt. The idea is that there is nothing worse than data corruption (Especially silent corruption!) and it's safer to stop than let an unknown or erroneous state continue. Old systems didn't have any of those luxuries, and the aftermath of a program randomly changing memory regions is fascinating. Weird video, weird sounds, drives making odd noises. Those computers were simple and changing a single register would often bring very significant results.
I once read an account from a guy who wrote a simple "game of life" implantation. It worked great, but he forgot to add bounds. A self replicating/crawling pattern "escaped" the edge of the screen and continued crawling through other memory regions not intended for the game space. It said it was fascinating watching watching the computer glitch and and misbehave as the pattern activated registers for all sorts of things from keyboard lights to disk drives.
This is such a Slashdot story :)
"A girl invited me to her house on several occasions. Each time, I spent more and more time being impressed with the Commodore 64"
My opinions are my own, and do not necessarily represent those of my employer.
Well, you know, there was other stuff going on, as her father and step mother were out of town that winter, but this is Slashdot, not Penthouse forum, so...
Hey, I eventually married the girl. ;-)
Proverbs 21:19
you never saw smooth scrolling and sprite movement on a PC.
This was true of CGA, but after EGA and VGA became popular, John Carmack figured out how to use these newer cards' scroll registers and built Commander Keen in 1990.
Excellent, my wife's been on me to upgrade my C64
Table-ized A.I.
Since I designed, wirewrapped, and programmed embedded 6502 and 8080 system in that era I am well prepared to assess your claims. In a nut shell you are an arrogant tard and the original poster is figuratively accurate inexact.
Your post is really bizarre.
Ok, with you there.
Well, that's just a bunch of crap: http://www.obelisk.demon.co.uk/6502/reference.html (look at the "Cycles" column.)
What the original poster was likely saying, since it becomes clear later in the article, was that all the 6502 instructions were divided up into alternating cycles of memory fetches and internal calculations with an exact period of 1 microsecond for those. The 8080 series would use 1,2,3,4 and more with wait states cycles for an instruction with no regular pattern (in terms of future predictable times) of when the bus would be busy.
So you are wrong, have a reading comprehension problem, and are an ass about it.
The Wikipedia article on the 6502 indicates that DRAM access times were on the order of 250ns - 450ns. In particular, 250ns access times are well-matched to 4 MHz clock rates; do the math. At 1 MHz, 250ns DRAM has time to go make a sandwich before it needs to supply the next memory cells.
Sigh, again you have a reading comprehension problem. The original author was discussing static memory. Moreover, the cycle time for memory access always involves some overhead. The time when the CPU reads the data bus needs to occur after the bus has settled which is not at the start of the memories data valid period. But most of all 250ns memory was rare and expensive. Most computers in that time period did use wait states. Why do you think processors even allowed wait states?
Again you are being an ass about this as well.
No. Then, as now, video display glitches were caused by updating video RAM directly outside of a VSync pulse. You could just as easily get video glitches on 6502s as on 808x machines.
that was an additional restriction on 8080 machines. But on 6502 machines one did not have to wait for the vertical sync to update the video memory. In fact that is EXACTLY what the original poster was pointing out, without trying to flaunt jargon like you.
This makes you look stupid now.
Which leads us to:
Patently false. Video memory on an 808x machine (even on CGA and EGA cards) was most certainly memory mapped.
yes it could be done. But then you had the problem of glitches or waiting for VSYNC (or if you liked to live dangerously, HSYNC). It wasn't pretty to build hardware or write code for. Your interaction with it didn't treat it like main memory but rather so
sorry it should be SYS64767
Getting old here.
READY.
PRINT ""+-0
I called it "Commode-odor". I was an Atari fan, but most of my friends had C=64s. A few years later, though, I got an Amiga.
Assuming you mean the 8-bit Atari 400 and 800 (and its compatible redesigns, the XL and XE series), I did pretty much the same thing- was an Atari fanboy, but ended up with an Amiga. When one knows a little more about the "Commodore" Amiga and "Atari", it all seems a bit silly.
The major irony is that the Amiga developers included a number of ex-Atari staff- most significantly Jay Miner- who had worked on the 400/800 and the VCS/2600 before that. It represented (some have argued) a continued thread of architectural design that the 400/800 had significantly improved upon from the VCS, and had the same state-of-the-art custom chipset approach as its predecessors. (Indeed, just as happened with the 400 and 800, the Amiga was originally meant to be a console, before it evolved into a computer).
Also worth noting that "Amiga" was originally an independent company and it was only later bought by Commodore (after some legal wrangling with Atari, who'd had some involvement with them).
Meanwhile, Jack Tramiel had left Commodore (after falling out with the management), bought Atari Inc's computer and console division (i.e. the one that brought us the VCS and 400/800), which formed his new Atari Corp. The latter was a very different company to Atari Inc. (very obviously a much more shoestring operation). The Atari ST was designed by a different team after Tramiel had sacked most of the old Atari Inc. engineers, and very much reflected the "new" Atari; affordable, but much more off-the-shelf parts.
Atari Corp continued selling the XL and XE (cost-reduced versions of the 400 and 800), but they didn't design it; they merely milked the profits from a design they'd inherited while they focused on *their* Atari ST.
So... which was really the "true" successor to the Atari 400 and 800? By any measure, it was the "Commodore" Amiga. Who cares who made it? I briefly owned an ST because I couldn't afford an Amiga, but I ended up selling it and buying the latter a year later.
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
Several times in the article, he mentions that the C128 was the last 8-bit computer to be designed. This isn't true -- a year later, Tandy announced the CoCo3, also with 128KB and capable of 80 column text display. It didn't run CP/M, but instead it ran Microware OS-9.
While not originally designed under the auspices of Commodore, the Amiga was also designed with VLSI custom chips. The prototype did not have the chips available, either. Instead, their larger-scale prototypes were the size of a small room. The booth they used at a trade show to demonstrate the Amiga was designed to hide the fact that the walls of the booth itself consisted of the prototypes of the custom chips hidden behind curtains.
It would be cool if we could find a photograph of it.
RIP Jay Miner.
Kriston