This post is principally for all you RETRO HARDWARE LIBRARIANS hoarding literal stacks of C128DCR, floor to ceiling ! Thanks for keeping this stuff out of landfill, for now, but ... give some love to the flat128 in preference, please !
The mos6502 crew has a neat article on the C128DCR and its deficiencies, which I thought would be useful to link here (lest we forget). I remember much of this noise during the relevant time period and is one of the reasons I never held onto a DCR for very long. (For the record: I have NINE flat128's in my own degenerating floor-to-ceiling stack. Glad I stopped hoarding 15 yrs ago.)
To quote the C-128 hardware lead, of whom we all know is Bil Herd ... "The D was a simple and sensible thing as originally envisioned, leave it to the post-Tramiel brain-dead management to screw up something already done at great cost and not a little bit of trauma."
Shortly after the introduction of the DCR, reports started to come in that software which ran just fine on the C128 and C128D was performing badly on the DCR. Putting the two mainboards on one and replacing the ROMs had its toll…
I used to think that the biggest 'crime' with the DCR was the internal 1571's MOS 5710 in lieu of a proper 6526 CIA. However, given how much relevance the SID chip has gained to the 'upkeep' of 64/128 scene, I now believe the biggest 'crime' is the inclusion of the 8580 SID instead of the proper and True SID(s) we know as 6581. =)
I don’t see the ROM upgrade as a big incompatibility problem. I mean, the 1541 also had ROM upgrades. I like the DCR since it is quiet and made of metal, but I’d like to have the 128D keyboard compartment actually when storing or moving it.Nov 20, 2018 [...] What made the MOS 5710 worse?
Programs that relied on the ROM routines of mainly the 1571 suddenly found themselves amidst different routines, which of course caused them to fail.
The new DOS caused several routines to be “shifted” by a couple of bytes. A program that used to jump to $877C (control of the LED) now found itself in the middle of a different routine.
So would switching back to the old DOS be an option then? Sadly no, as the components from the 1571 mainboard were now integrated into the C128 mainboard and drastically changed.
MOS 5710 For instance, the 2 controllers (The WD1710 and the 251828) together with the CIA 6526 (the VI, VII and VIII on the image above) were now integrated along a new concept (see IX, X, XI below), making for a completely different usage as neither a timer, nor real-time clock, nor programmalble port were now available due to the missing 6526.
"making for a completely different usage as neither a timer, nor real-time clock, nor programmalble port were now available due to the missing 6526."
The 71 board had a different chipset. They used a custom chip to replace the "thick layer"thingy, and to implement the shiftregister from one of the CIAs, so they could use VIAs instead of CIAs (Cheap Production:)
Because of these changes, it has an other DOS (3.1 instead of 3.0) too...) Martijn ('PINO') van Buul, mart...@stack.urc.tue.nl
There are 2 versions of the US/110V/NTSC metal case 128D. The later version was the CR version with the cheapie drive mech. The mother boards between the original metal D (V1 I guess you'd call it?), and the second CR are identical.
1) The 3.1 version is for the 1571CR only. Only one revision is known to exist. It won't work on any other 1571, and this rom known to be more incompatible with 1541 fastloaders and native 1571 software than DOS 3.0. Unclear what revision of DOS 3.0 ROM forks to 3.1, though we "should" "assume" DOS 3.0 revision 5.
2) Stand-alone 1571 units and plastic C128D all implement DOS 3.0. There are five revisions of DOS 3.0, with Revision 5 being the last one. Early DOS 3.0 revisions have a bug in the burst load routine prventing the drive to load locked files. Another bug would cause the drive to take a loooooooong time to determine whether a disk is double or single sided. All these bugs were fixed starting with Revision 4 of the ROM.
MOS 5710 pinout description, for the record (this is clearly not a CIA) C128DCR MOS5710 Custom Floppy Controller and Gate Array
_____________ Floppy Drive Controller (*) | |_| | 1541/1571 Mode Control (#) SRQ OUT | 1 48 |-DATA OUT CIA Serial Port TED |#2 47 | SRQ IN 16 MHz Clock & phi0 phi0 | 3 46 |-DATA IN RAM & VIA Select CK |#4 45 |-IRQ -ACCL |#5 44 |-RESET VIA1 PA5 |#6 43 | phi2 | 7 42 | Address Decode D7 | 8 41*|-INDEX D6 | 9 40*| WG A 15 14 13 12 10 4 3 D5 | 10 39*|-WPRT RAM 0 0 0 0 x x x D4 | 11 38*|-RD VIA1 0 0 0 1 0 x x Vss | 12 37*| WD VIA2 0 0 0 1 1 x x Vcc | 13 36 | Vcc FDC 0 0 1 0 x 0 0 D3 | 14 35 | Vss CIA 0 1 0 0 x 0 x D2 | 15 34 |-VIA1 FDC2 0 1 0 0 0 1 x D1 | 16 33 |-RAM RAM 0 1 1 x x x x D0 | 17 32 |-VIA2 A15 | 18 31 | R/W A14 | 19 30 | 16MHz A13 | 20 29 | XTL1 Registers A12 | 21 28 | XTL2 A10 | 22 27 | A0 2000 FDC Status Register A4 | 23 26 | A1 2001 FDC Track Register A3 | 24 25 | A2 2002 FDC Sector Register |_____________| 2003 FDC Data Register 2004 FDC Control for 2001, 2002 2005 FDC Control/Counter for 2001, 2002
400C CIA Serial Data Register 400D CIA Interrupt Control Register 400D CIA Control Register A
4010 FDC2 used in 2002, 2004 4011 FDC2 used in 2002 4012 FDC2 used in 2001 4013 FDC2 used in 2001 4014 FDC2 used in 2002 4015 FDC2 used in 2002 4016 FDC2 used in 2003 4017 FDC2
In fairness: The 1571 3.0 ROM revisions also leads to some software not working anymore. E.g. I have a program called "Thirty Seconds" that can copy a disk-side in 30 seconds using the 1571 and "Double Touch" - a program for TWO 1571s that can copy a disk-side in 8 seconds over the serial port. Both only work with ROM-revision 3 though, since ROM-revision 5 changes some addresses. I'm not sure how much the programmer could have avoided these incompatibilities by using the internal jump-table of the ROM, but it shows that you should not trust the ROMs too much.
Apparantly DOS 3.1 was based on Rev. 5 of DOS 3.0, but they missed the fix for 3 bugs, see here:
The C128 itself has ROM revisions, you can easily spot these in the power-up-message. If it says 1985 there you have an older ROM, if it says 1986 it is newer and fixes some bugs which are detailed here: www.devili.iki.fi/Computers/Commodore/Techtopics/C128-ROM/ As far as I know the C128DCR uses the newer 1986-ROM for the 128-part.
In double fairness .. with standalone 1571 you can always revert back on roms .. if you're so inclined ..
.........................with 128DCR you're LOCKED into this MOS 5710-friendly DOS 3.1 rom "forever" (not counting jiffydos, et al).
.. and yes, the system kernal/basic upgrades are obvious change, but not the source of most of the complaints (serious flat128 users upgrading their system mods didn't scream much over system roms .. i know i didnt).
It goes without saying that Bil Herd, Our Lord and Saviour himself, seems to think the DCR basically sucks, as quoted on that site.
Only really new (and good) thing that C128DCR brings to the table is the new VDC + its extra register, for all that is worth. Remainder of the "improvements" can be easily backported to other 128s.
Allow me to give the DCR some propz in this reply ....... before everyone thinks I completely hate it .. !
ROM integration and board fixes from earlier 128s.. fine fine.. this is Good stuff, I agree.
The prior 128 boards are clearly less integrated with four 16K ROM chips vs two 32K ROM chips in the DCR. Chipcount-wise, the other big improvement of the DCR is the presence of 128K RAM in four chips versus 16 chips in the older versions.
Since DCR clearly points to a good spot in terms of ROM consolidation, let's just harvest a post from the past .. for guidance and inspiration:
From: Nicolas Welte <email@example.com> Subject: Re: C128D/C128 Differences Date: Mon, 18 Jan 1999 10:47:14 +0100
The old 128 has several jumper locations which are documented in the schematics at funet. There are three jumpers which should allow the user to select if he wants to use 16k or 32k ROM chips. The first jumper (J3), if closed, tells the PLA to use 32k ROMs instead of 16k ones. It changes the way the four ROM select lines ROM1...ROM4 are used. The second jumper (J4) selects if the address line A14 is supplied to the ROM chip at U34, and the jumper at J6 controls if the 64/128 mode line is supplied to the ROM chip at U32.
This sounds easy, but if you just close all three jumpers, the C128 won't work in native mode. This is because the old boards have a design error which was later corrected for the 128DCR, which works fine with the 32k ROMs while still using the same PLA.
The difference is that the 128DCR does not supply A14 to the ROM at U34, but A15. I won't explain here why that is necessary, but if you look at the memory map you will understand it. So we need to do the same for our old board and we can use the 32k ROMs.
Where to get A15? I simply took a multimeter and tested which of the jumper pads of J4 is connected to pin 27 of U34. On my board it is the right pad if looking from the front onto the board. A15 is available on pin 5 of the nearby Z80 CPU, so I just soldered a cable between this pin and the jumper pad. The cable is approximately 4cm long.
Now the jumpers J3 and J6 have to be closed. Congratulations! Your board is now ready to accept ROMs of the 23256 type or EPROMs of the 27256 type. You can use the same ROMs as the C128DCR uses, that means a combined C64/C128 kernal at U32 and the whole C128 BASIC at U34.
If you just want to copy the old ROMs into new EPROMs, do the following:
The first EPROM which will be at U32, has the former U32 at offset $0000 and the former U35 at $2000. The new EPROM at U34 has the former U33 at $0000 and the former U34 at $2000. But I wouldn't do this, because there are updated versions on funet. I just copied them from my 128DCR, which already has the new versions.
What are the advantages? I did it because I was in the process of changing the kernals of both the C128 and the C64 mode, and it is a big advantage if they're in one chip. I wanted to be able to switch between the original and the changed ones, so I used a 64k EPROM and put it into U32. I bent the pin with A15 out of the socket and connected a switch to it. Without the modification, I would've had to connect the switch to both EPROMs at U32 and U35.
If 27C256 EPROMs are used, you will save some power and your computer will produce less heat. Not that you will notice it, but it is an effect. The old ROMs get warm, the CMOS EPROMs not.
"This sounds easy, but if you just close all three jumpers, the C128 won't work in native mode. This is because the old boards have a design error which was later corrected for the 128DCR, which works fine with the 32k ROMs while still using the same PLA."