Jump to content
IGNORED

COmmodore 64 vs 128


markheus

Recommended Posts

Hey guys.

 

I came across an old Commodore 64 programming book I had from years ago and was reading it.

 

So, I got to thinking about getting another one as I sold mine years and years ago.

 

Anyway, I only had the 64. But since money is no object now (yeah right) I thought about getting a 128 instead.

 

Other than the memory and case design differences. Is there a reason to prefer a 64 over a 128 or the other way around?

 

Are 128's fully compatible with 64 cartridges and programs? If I remember correctly, there was a switch on the 128 to run in 64 mode. Is this a true 64 mode?

 

FOr instance, if I was learning assembly for the 64 would it apply to the 128?

 

Ok, enough of my rambling questions, whad'ya think?

Link to comment
Share on other sites

Are 128's fully compatible with 64 cartridges and programs? If I remember correctly, there was a switch on the 128 to run in 64 mode. Is this a true 64 mode?

 

The Commodore 128 in C64 mode is very nearly identical to the Commodore 64. There is a small change to the Kernel ROM which affects compatibility with a few programs, but most of those would have had problems with the first-rev kernel ROMs anyway. Old Commodore 64's would set color memory to all white on a clear-screen command; later ones would set it to match the background color. The Commodore 128 (even in 64 mode) sets it to match the current character color. I think the newest C64's do this as well. Not sure why they made the second change, really, since any code that relied upon it would break on older machines.

 

Once Commodore 64 mode is switched in, the MMU becomes inaccessible and hardware logic disconnects the disk drive from the PIA's higher-speed serial port. The 80-column chip remains accessible at $D600, and a couple of new VIC registers become available, but otherwise the hardware is like that of the C64.

 

It's too bad Commodore made the MMU inaccessible at its $D500 address when in C64 mode. Leaving it accessible wouldn't have harmed compatibility, and would have allowed for some very useful "hybrid" modes. For example, a fast loader could have most of itself located outside the normal C64 address space; when invoked, it could switch to Commodore 128 mode, do the load, and then switch back. Alternatively, if it were possible to make a mode that was reasonably C64 compatible without actually switching into C64 mode, that would have been useful as well. Unfortunately, Commodore seems to have not been even remotely interested in attempting such a thing. If they had, they could have packed the new hardware into the existing I/O space (e.g. put the VDC at $D0FE-$D0FF, and put the MMU at $D480). They could then have mapped 768 bytes of RAM at $D100-$D3FF and another 768 bytes at $D500-$D7FF.

Link to comment
Share on other sites

Addendum: Commodore actually did a few very nice things with the memory design of the C128. Unfortunately, they didn't do them in such fashion as to be completely useful. For example, on the 6502, it's very useful to have a page of address space which can be freely banked anywhere in memory. The 4A50 banking method provides such a page at $1E00-$1FFF; the C128 has two such pages, both independent: $0002-$00FF, and $0100-$01FF. While there are certainly applications where stack switching is useful, having another such page or two (probably in the $Dxxx address space) would have been enormously powerful. Given that 4A50 is implimented entirely within a cheap CPLD, it wouldn't have cost much at all.

Link to comment
Share on other sites

Addendum: Commodore actually did a few very nice things with the memory design of the C128. Unfortunately, they didn't do them in such fashion as to be completely useful. For example, on the 6502, it's very useful to have a page of address space which can be freely banked anywhere in memory. The 4A50 banking method provides such a page at $1E00-$1FFF; the C128 has two such pages, both independent: $0002-$00FF, and $0100-$01FF. While there are certainly applications where stack switching is useful, having another such page or two (probably in the $Dxxx address space) would have been enormously powerful. Given that 4A50 is implimented entirely within a cheap CPLD, it wouldn't have cost much at all.

 

 

Thanks for your awesome explanation - Totally lost on me - But thanks!

So what your saying is that there's no fundamental difference between a true C64 and a 128 being run in 64 mode?

Link to comment
Share on other sites

So what your saying is that there's no fundamental difference between a true C64 and a 128 being run in 64 mode?

 

Pretty much. It is possible to access some enhanced C128 features within C64 mode, though unfortunately not some of the ones I really wanted (faster disk I/O!). A few games took advantage of those features; whether that's a good or bad thing could be a matter of taste, I suppose.

Link to comment
Share on other sites

Andrew Braybrook wrote some of his games to exploit the 2MHz CPU speed over the C64's 1MHz if you were playing his games on a 128 in 64 mode. Would add extra enemies and small features.

How is that possible? I was under the impression that in order to switch to 2MHz mode, the VIC-II chip had to be disabled, which would make C64 mode useless.

 

Other than the memory and case design differences. Is there a reason to prefer a 64 over a 128 or the other way around?

Sure, there are plenty of other features of the 128 that make it desirable... Some of the main ones I can think of:

  • The VDC chip lets you do 80-column mode, assuming you have an RGB monitor hooked up.
  • You can experience all the benefits of the 1571 disk drive while in C128 mode (faster, read both sides of the disk at once, autobooting, etc).
  • Enhanced BASIC with a lot of new graphics, sound, and file commands that the C64 doesn't have.
  • The Z80 chip allows you to run CP/M on the machine.
  • Built-in Sprite Editor and Machine Language Monitor.
  • Fast mode is available (2MHz rather than 1MHz).
  • The keyboard has a numeric keypad, dedicated cursor keys and a few other keys that the C64 lacks.
  • The C128 has an MMU, although I'm not sure what actually makes use of it (GEOS perhaps?)

Are 128's fully compatible with 64 cartridges and programs? If I remember correctly, there was a switch on the 128 to run in 64 mode. Is this a true 64 mode?

As has been mentioned, there are a few incompatibilities, but they are relatively minor. The vast majority of programs will work without any problems (In fact, Ultima VI will actually have music when you play it on the 128, whereas it doesn't on the 64).

FOr instance, if I was learning assembly for the 64 would it apply to the 128?

Yes, the 8502 processor in the C128 is fully compatible with the 6502 in the C64. In fact, the C128 has some extra features that will be of use if you really want to do assembly... speciflcally, the built in monitor program, extra system calls, and the MMU. Keep in mind though, that if you rely on some of these extra features, any program you write will be incompatible with a "regular" C64.

 

--Zero

Link to comment
Share on other sites

Thanks for all the great information. I guess the trick now is to find one at a reasonable price.

 

Prices for 128's seem to be all over the place - from 30 to 100. There's a system right now that's going for almost $250 though it looks like its MIB with all kinds of accesories

 

What's a reasonable price to pay for the console + PS + original mauals. Let's just say CIB.

 

How much for just the console + PS + any necessary cables?

Link to comment
Share on other sites

Andrew Braybrook wrote some of his games to exploit the 2MHz CPU speed over the C64's 1MHz if you were playing his games on a 128 in 64 mode. Would add extra enemies and small features.

How is that possible? I was under the impression that in order to switch to 2MHz mode, the VIC-II chip had to be disabled, which would make C64 mode useless.

It wasn't a full-on 2MHz, but it was still a large boost. Basically, you switch to 2MHz during the vertical border. Especially on PAL, you'd gain quite a bit of CPU time that way.

Link to comment
Share on other sites

Thanks for all the great information. I guess the trick now is to find one at a reasonable price.

Well, that's kinda the problem. The C128 has nice features, but the C64 is just WAY easier to find, and MUCH cheaper overall... whether the added benefits are worth the extra cost is up to you. I managed to get a great deal on my C128 when I bought it off of my high school about 10 years ago... I got the system, 1902 RGB monitor, 1571 disk drive, all the included software and manuals, and a huge programmers reference guide all to the tune of $25. Probably the best $25 I've ever spent.

 

It wasn't a full-on 2MHz, but it was still a large boost. Basically, you switch to 2MHz during the vertical border. Especially on PAL, you'd gain quite a bit of CPU time that way.

Ah, that makes more sense then... not quite twice the speed, but you'd get a nice chunk of extra cycles while the raster beam is off.

 

--Zero

Link to comment
Share on other sites

The 128 was a great machine (it's what I had growing up) but the 64 outsold it probably 10 to 1. I don't think the 128 sold more than 2.5 million units total, and I know there were single years that the 64 topped 2 million units. It was a chicken and egg problem. Nobody wanted to make software unless people bought the machine, but who wanted to pay double when there was so little software that took advantage of the better capabilities? By the time software came out that really took advantage of it, it was too late.

 

Compatibility wasn't quite 100% but I only ever found a single title that wouldn't run on my 128. I think it was an early version of Archon II. I'm sure it was revised to run on the 128, since Archon II was a popular title and still had miles left in it when the 128 came out.

 

As far as price, one thing you could do is get a cheap 64 and wait for a 128 at your price. Grab a $10 64, wait for a 128 at $30, then flip the 64 if and when you find one. The disk drives are compatible (I recommend a 1581 if you can find one; for 5.25-inch disks the 1571 was a great drive but the 1541 is a lot easier to find.)

Link to comment
Share on other sites

As has been mentioned, there are a few incompatibilities, but they are relatively minor. The vast majority of programs will work without any problems (In fact, Ultima VI will actually have music when you play it on the 128, whereas it doesn't on the 64).

 

I thought it was Ultima V that had the music for 128s?

Link to comment
Share on other sites

Not all changes on the 128 were for the better. The 128 has vertical lines running through the display on the TV output caused by some sort of noise in the signal where the C64 doesn't. I know my 128D has them. If you compare the 128 and 64 side by side you'll notice it.

I think there was a couple cartriges that had a problem on the 128 too but then I have a 128 and not a 64.

Link to comment
Share on other sites

I thought it was Ultima V that had the music for 128s?

Whoops, you're right... typo on my part. Although maybe if they had made Ultima VI a 128 game instead of a 64 game, it wouldn't have been so crummy. I'm still amazed they even tried to make that one on the 64.

 

I think there was a couple cartriges that had a problem on the 128 too but then I have a 128 and not a 64.

Actually, now that you mention it, I remember there were some cartridges that actually didn't fit into the 128's cartridge slot due to the case design. I think it was Sega's games. I never had any myself, so I don't know whether it just meant you had to really shove them in hard or if they didn't fit at all.

 

--Zero

Link to comment
Share on other sites

Yeah, some cartridges would do weird stuff (from Secret Weapons of Commodore):

 

64 mode compatibility became another issue (here's Herd's post on that topic); paradoxically, the Z-80, which was not in the original specs for the D128 either, became the solution and saving grace. In the opinions of much of the 128's designers, Commodore marketing had once again looked before they leaped by announcing the 128 as "100% compatible" (even now owners of 128s can attest they are extremely compatible but not wholly compatible). At that point in design the Z-80 was not part of the specification, and Herd et al. were noticing that the 64's Z-80 cartridge would barely work 20% of the time in prototype 128s. (It didn't even work fully reliably in 64s.) When it did work, it drew an extra 0.5A that was just not workable into the power supply requirements, so Herd "accidentally" designed the Z-80 into the system board instead. This strange solution turned out to be the fix to another host of problems. In between the intricacies of the 64's memory mapping and video architecture (Bil muses about 'colour character mode with I/O swapped out under UltiMax mode'), and under the onus of achieving full compatibility, the designers started investigating three of Commodore's own cartridges that would not work in the 128. Two of the cartridges turned out to be a bad batch of ROMs. The third was the Commodore Magic Voice Cartridge, which behaved rather rudely with the expansion port lines (as soon as it saw the processor going for reset vectors, it would pull GAME low and hopefully swap out the 64's ROMs for the cartridge's). Since these signals were never meant to be altered in real time, the 128 would behave erratically (i.e. crash) because the CPU would never get to initialize the MMU to 64 mode before the cartridge had snatched its ROMs (and therefore its bootstrap code) away from it. So the Z-80 was recruited, since it boots from a different memory location, and given the job of polling for cartridges and making the command decision for which mode to start up in. Specifically, it would do an equivalent of the POLL routine and initialize the MMU to 64 mode if it saw activity on the expansion port (or if the C= key is held down). Not everyone liked this idea: Commodore Australia called the RandD labs to complain that they would rip the Z-80s off the board if the 128 arrived down under with the chip still there. Nevertheless, whenever you turn on your 128, the Z-80 chip is the master processor on startup to this day.

 

Given all the office politics that surrounded the C128 project, it's amazing that the system did as good as it did.

Edited by LocalH
Link to comment
Share on other sites

A bunch of comments all rolled together here:

 

Other than the memory and case design differences. Is there a reason to prefer a 64 over a 128 or the other way around?

One very significant thing (to me, anyway) is that the C128 power supply is pretty heavy duty compared to the C64's standard supply. If you want to use any fun expansion hardware like REUs, SuperCPUs, Swiftlinks, etc. the C128 power supply is up to the task, while the C64's is questionable at best.

 

Not all changes on the 128 were for the better. The 128 has vertical lines running through the display on the TV output caused by some sort of noise in the signal where the C64 doesn't. I know my 128D has them. If you compare the 128 and 64 side by side you'll notice it.

Newer C64s (aka the 64C) also have this problem. It does vary from machine to machine though - the C128 I've been using lately isn't all that bad.

 

It was a chicken and egg problem. Nobody wanted to make software unless people bought the machine, but who wanted to pay double when there was so little software that took advantage of the better capabilities? By the time software came out that really took advantage of it, it was too late.

This is true for entertainment software, but the C-128 was very well supported with productivity software - spreadsheets, word processors, that sort of thing. And really, that's the only area the C-128 was clearly stronger than the C-64 anyway. Most of it's advantages were of little use to games.

 

The Commodore 128 in C64 mode is very nearly identical to the Commodore 64. There is a small change to the Kernel ROM which affects compatibility with a few programs, but most of those would have had problems with the first-rev kernel ROMs anyway. Old Commodore 64's would set color memory to all white on a clear-screen command; later ones would set it to match the background color. The Commodore 128 (even in 64 mode) sets it to match the current character color. I think the newest C64's do this as well. Not sure why they made the second change, really, since any code that relied upon it would break on older machines.

The 2nd and 3rd Kernal revisions were actually made pretty early in the C64's life - I think by mid to late '84 all new machines had the 3rd revision, so the vast majority of C64s ever produced and all C128s had the final Kernal. This is the one VICE uses. Strangely, CCS64 seems to use a slightly modified 2nd Kernal.

Link to comment
Share on other sites

Given all the office politics that surrounded the C128 project, it's amazing that the system did as good as it did.

Wow, very interesting! I find it weird that they were at all concerned about retaining UltiMax compatibility, although I suppose there's probably some software that actually did rely on that... It also sheds some more light on why they bothered with a Z80 when CP/M was mostly dead at the time.

 

This is true for entertainment software, but the C-128 was very well supported with productivity software - spreadsheets, word processors, that sort of thing. And really, that's the only area the C-128 was clearly stronger than the C-64 anyway. Most of it's advantages were of little use to games.

Indeed. I got a LOT of use out of DESterm back in the BBS days, and trying to do any kind of spreadsheet or word processor in 40 columns was absolute hell.

 

I was always disappointed that the VDC chip was so limited in it's capabilities compared to the VIC-II... I was looking forward to pulling off some nifty high-res graphics, but the chips abilities really only work well for displaying text :(

 

--Zero

Link to comment
Share on other sites

Speaking of Bil Herd and interviews, Bil did a huge post to comp.sys.cbm in 1998 describing the entire C128 background. It's very informative and hilarious. The post is: here

 

Garak

Edited by Garak
Link to comment
Share on other sites

Yeah, one of my best friends from my days messing around with Commodores (we're still good friends and he was the best man at my wedding) pointed that story out to me sometime around 1998. Every once in a while one of us runs across it again and it's always good for a few giggles.

 

Amazingly enough, the 8563 had a lot of interesting and mostly unused capabilities. Of course its secrets took several years to surface. Its biggest drawback was its lack of sprites, but of course the chip had been originally designed for a machine that had no use for sprites.

 

We still get the biggest chuckle out of the popcorn popper cup story.

Link to comment
Share on other sites

Yeah, one of my best friends from my days messing around with Commodores (we're still good friends and he was the best man at my wedding) pointed that story out to me sometime around 1998. Every once in a while one of us runs across it again and it's always good for a few giggles.

 

Yeah, it's a great writeup. Bil did a great job of telling all that happened with a great mixture of humor and technical details.

 

Amazingly enough, the 8563 had a lot of interesting and mostly unused capabilities. Of course its secrets took several years to surface.

 

Which is unfortunate it took so long. Some of that was Commodore's fault though, IIRC, in their manuals and even in the C128's programmers reference guide they kind of hinted that the VDC wasn't capable of the graphics it can do (demonstrated in the aforementioned and linked demo above). But really the VDC is a very flexible display device. It's just that the access to it is a bit of a bottleneck.

 

We still get the biggest chuckle out of the popcorn popper cup story.

 

Ah, the ice cube in the popper cup story. Classic.

 

Yep, some great stuff in there like the "come on pretty please register" (aka the "Damn Texan register") and the nightly programmer beatings by the hardware guys. :D

 

Garak

Link to comment
Share on other sites

Amazingly enough, the 8563 had a lot of interesting and mostly unused capabilities. Of course its secrets took several years to surface. Its biggest drawback was its lack of sprites, but of course the chip had been originally designed for a machine that had no use for sprites.

Yes, I suppose I shouldn't have been too disappointed, since the machine still has the wonderful VIC-II chip at it's disposal... but the allure of high-resolution mode was very attractive. Having both of these chips in the computer really made it the perfect machine for both games AND productivity (assuming of course you have a monitor like the 1902 or 1084S with a nice switch on it).

 

It's really too bad the C65 never saw the light of day, as the array of video modes it's VIC-III chip could do would easily meet any hopes I ever had for the VDC (and then some!!)

 

The 8568 found in the C128DCR could actually be programmed to output to an EGA monitor.

Wow, neat. My knowledge of monitors is sort of fuzzy when it comes to CGA and EGA, but I was under the impression that RGBI monitors (like the 1902) were essentially EGA as it was. I guess I was mistaken, I had no idea EGA ran at 21kHz.

 

--Zero

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...