sslxy

c128

Drie modi. Twee CPU’s. Eén systeem dat meerdere rollen tegelijk moest dragen.

De C128 is voor mij een van de meest onthullende Commodore-systemen. Niet omdat hij bijzonder gesloten of bijzonder elegant zou zijn, maar omdat zijn architectuur meerdere doelen tegelijk moest dragen: volledige C64-compatibiliteit, een zelfstandig 128-kilobyte-systeem en daarnaast nog een bruikbare CP/M-werking. Juist deze gelaagdheid maakt hem interessant.

In mijn omgeving waren C128 en C128D werkmachines, geen pronkstukken. De wissel tussen de modi, de logica van het geheugenmodel en de twee volledig gescheiden videosystemen waren geen bijzaak, maar de eigenlijke kern van het systeem. Of dat alles in elke situatie overtuigend uitpakte, is een andere vraag. Dat Commodore deze ambitie überhaupt zo ver in hardware heeft gegoten, is de nuchter belangrijkere vaststelling.

System Diagnostic

> C128 / C128D ANALYSIS
TOPIC Commodore 128 / C128D – architectuur met drie modi CPU(s) MOS 8502 (C64/C128-modus) · Zilog Z80A (CP/M-modus) VIDEO VIC-IIe 40 kolommen · VDC 8563 80 kolommen / RGBI – volledig gescheiden RAM 128 KB (twee banken van 64 KB) · MMU 8722 als schakelcentrum MODI C64 / C128 native / CP/M Plus 3.0 MINDSET begrijpen in plaats van tonen – architectuur als leesstof STATUS technische analyse / geen handelsbelang
Een systeem met meerdere rollen – en de open vraag wat zo’n constructie in het dagelijks gebruik werkelijk draagt.
[origin/context]

Context en positionering

De C128 verscheen in 1985 in een fase waarin Commodore nog altijd sterk was, maar intern al meerdere richtingen tegelijk volgde. De C64 liep nog steeds, de markt veranderde, en de vraag naar een opvolger was niet eenvoudig te beantwoorden. Juist dat zie je aan de C128: hij is geen helder enkelconcept, maar de poging om meerdere eisen tegelijk in één systeem onder te brengen.

In mijn omgeving was de C128 nooit alleen maar een tussenobject op weg naar de Amiga. Het was een serieus genomen computer. CP/M draaide erop, BASIC 7.0 was het meest uitgebreide BASIC dat Commodore ooit heeft geleverd, en het 80-kolommensysteem opende mogelijkheden die er op de C64 eenvoudig niet waren. Wie hem alleen als uitgebreide C64 leest, leest hem te eng.

Tegelijk was de terugwaartse compatibiliteit met de C64 geen decoratieve extra functie, maar een diepe systeembeslissing. Ze reikt tot in de geheugenlogica, in de videosystemen en in het algemene opstartgedrag. Juist daardoor ontstaat een computer die meer lagen heeft dan zijn buitenkant doet vermoeden.

[1985] Release_Context: Commodore 128
> Marktsituatie: druk uit meerdere richtingen / intern geen eenvoudige opvolgingslijn
> Doel: C64-compatibiliteit + eigen architectuur + CP/M-mogelijkheid
> Resultaat: technisch ambitieus overgangssysteem
> Beoordeling: vooral leerzaam daar waar meerdere doelen tegelijk zichtbaar blijven

Technisch interessant is de C128 daarom vooral op zijn overgangspunten. Daar zie je hoe echte ontwikkelpraktijk eruitziet wanneer compatibiliteit, uitbreiding en marktdruk niet na elkaar, maar tegelijk beantwoord moeten worden.

[architecture/three_modes]

Architectuur met drie modi

Het opvallendste kenmerk van de C128 is zijn concept met drie modi. Daarmee wordt niet zomaar een opstartoptie bedoeld, maar een echte hardwarebeslissing: het systeem kent drie duidelijk van elkaar gescheiden bedrijfstoestanden, en elk daarvan grijpt op een ander deel van dezelfde architectuur terug.

Modus 1: C64

In de C64-modus neemt de MOS 8502 de rol van zijn voorganger volledig over. Hij draait op 1 MHz, de VIC-IIe gedraagt zich in wezen als een VIC-II, en de computer presenteert zich voor een programma als een C64. De 128-kB-uitbreiding blijft op de achtergrond, de eigen MMU houdt zich terug.

Compatibiliteit was hier geen bewering, maar een constructieprincipe. De meeste C64-programma’s liepen zonder aanpassing – wat op hardwareniveau aanzienlijke inspanning betekende.

Modus 2: C128 native

In de native C128-modus werkt de 8502 met 2 MHz, ontsluit de MMU de 128 KB RAM, is BASIC 7.0 beschikbaar en wordt het VDC-videosysteem voor 80 kolommen praktisch bruikbaar.

Dat is de eigenlijke zelfstandigheid van het systeem: meer geheugen, hogere kloksnelheid, een serieus tekstgeoriënteerd videosysteem en een BASIC dat duidelijk meer direct meebrengt dan zijn voorganger.

Modus 3: CP/M Plus

In de CP/M-modus neemt de ingebouwde Zilog Z80A over. Het systeem boot CP/M Plus 3.0 van diskette, de Z80 wordt de actieve CPU, terwijl de 8502 naar de achtergrond verdwijnt. De uitvoer loopt via het 80-kolommensysteem van de VDC.

Daarmee was de C128 als CP/M-machine daadwerkelijk bruikbaar – niet als theoretische optie, maar als reële uitbreiding voor een destijds nog relevante softwarewereld.

Moduswissel

De wissel tussen de modi gebeurt bij het opstarten: C64-modus door de Commodore-toets ingedrukt te houden, CP/M via systeemdiskette en bootproces. Tijdens het lopende gebruik is geen transparante wissel voorzien.

Elke modus is dus een eigen werkomgeving – geen emulatie, geen simulatie, maar een echte omschakeling op systeemniveau.

Juist het naast elkaar bestaan van deze drie modi maakt de C128 technisch ongewoon. Je kunt erover twisten hoe consequent elke afzonderlijke modus in het dagelijks gebruik werd benut. Dat zo’n opbouw in één enkele computer überhaupt zo ver werd doorgevoerd, blijft de nuchter opmerkelijke kant van de constructie.

“Drie modi betekenden drie verschillende bedrijfslogica’s in één behuizing – en daarmee ook drie verschillende vormen van compromis.”

[hardware/dual_cpu]

Twee CPU’s: MOS 8502 en Zilog Z80A

Twee CPU’s in een computer uit 1985 lijken op het eerste gezicht overdreven. Bij de C128 is dat echter geen decoratieve complexiteit, maar het directste antwoord op een concreet probleem: hoe maak je een CP/M-geschikte computer zonder de eigen CPU-lijn en de volledige C64-compatibiliteit op te geven?

De MOS 8502 is een doorontwikkeling van de 6510. Net als deze heeft hij een ingebouwde 8-bit-I/O-poort en kan hij schakelen tussen 1 MHz in C64-bedrijf en 2 MHz in de native C128-modus. Die 2-MHz-optie was in de praktijk merkbaar: programma’s liepen sneller, berekeningen voelden minder traag aan en het systeem had in het algemeen wat meer reserve.

De Z80A en de CP/M-logica

De Zilog Z80A is voor een duidelijk begrensd doel ingebouwd: de CP/M-modus. Hij loopt nominaal op 4 MHz, maar deelt de bus met de 8502, wat in de praktijk leidt tot een duidelijk verminderde effectieve benutting. Dat zag je ook aan CP/M-toepassingen: werkbaar, maar niet buitengewoon snel.

De omschakeling tussen de CPU’s gebeurt hardwarematig. In C64- en C128-modus is de Z80 uitgeblend. In CP/M-modus neemt hij over, terwijl de 8502 inactief blijft. Het gaat dus niet om parallel rekenen, maar om een coöperatief dual-CPU-concept op gedeelde busbasis.

[CPU_Analysis] Dual-CPU Architecture
> MOS 8502: uitgebreide 6510 / 1 MHz (C64) of 2 MHz (C128 native)
> Zilog Z80A: 4 MHz klok / effectieve busbenutting duidelijk gereduceerd
> Bus-sharing: gedeelde adres- en databus / geen parallelle uitvoering
> Omschakellogica: hardwarematig / niet transparant tijdens lopend gebruik
> Conclusie: pragmatische oplossing voor het CP/M-probleem, geen academische elegantie

Voor mij is juist dat een goed voorbeeld van nuchtere architectuurarbeid. Men had de CP/M-vraag ook anders kunnen beantwoorden – trager, ingewikkelder of helemaal niet. Commodore koos in plaats daarvan voor twee echte CPU’s met helder gescheiden verantwoordelijkheden. Niet bijzonder mooi in theoretische zin, maar direct.

[hardware/memory]

MMU en geheugenbeheer

128 kilobyte RAM lijkt vandaag klein. Interessant wordt de C128 pas door de vraag hoe dat RAM überhaupt bruikbaar wordt gemaakt. Een 6502-afgeleide kan van zichzelf slechts 64 kilobyte direct adresseren. Het tweede geheugengebied moet dus georganiseerd, geschakeld en in de zichtbare adresruimte ingeblendeerd worden. Daarvoor is de MOS 8722 verantwoordelijk.

De 8722 is geen MMU in moderne zin met virtuele adressering of beschermingsmechanismen. Hij is eerder een configureerbare geheugenschakelaar. Hij bepaalt welke RAM-bank op dat moment zichtbaar is, welke ROM-gebieden ingeschakeld worden en welke I/O-bereiken actief blijven. Juist daardoor krijgt de C128 een geheugenmodel dat duidelijk complexer is dan dat van de C64.

Twee banken van 64 kB

Het fysieke RAM van de C128 is verdeeld in twee banken van 64 kB. Beide zijn aanwezig, maar de CPU ziet telkens slechts een bepaald deel dat door de MMU bemiddeld wordt. BASIC 7.0 gebruikt deze structuur op zijn eigen manier: programmacode, variabelen en systeemberijken kunnen over verschillende banken verdeeld worden.

Daarbij komt de configureerbare ROM-inblending. In C64-modus gedraagt het geheugen zich grotendeels zoals bij de C64. In C128-modus krijgt de programmeur duidelijk meer controle over welke gebieden zichtbaar zijn en hoe de adresruimte gebruikt wordt. Dat opent mogelijkheden, maar maakt de zaak ook minder doorzichtig.

[MMU_Diagnostic] MOS 8722
> fysiek RAM: 128 KB / verdeeld in bank 0 en bank 1 (elk 64 KB)
> CPU-adresruimte: 64 KB / MMU bemiddelt tussen CPU en fysiek RAM
> ROM-inblending: KERNAL / BASIC / tekenset per modus configureerbaar
> I/O-bereik: configureerbaar / in C64-modus als C64 / in C128-modus flexibeler
> Beoordeling: meer controle dan bij de voorganger, maar tegen een hogere prijs in complexiteit

In de praktijk betekende dat: wie het geheugenmodel werkelijk begreep, kon de machine zeer doelgericht benutten. Wie het maar half begreep, liep al snel tegen gedrag aan dat op het eerste gezicht onlogisch leek. Juist dat is voor mij typisch voor overgangsarchitectuur: meer mogelijkheden, maar niet zonder tegenprestatie.

“De MMU was geen comfortfunctie. Ze was het noodzakelijke antwoord op een echt probleem van de adresruimte.”

[hardware/video_systems]

Twee videosystemen: VIC-IIe en VDC

Het ongewoonste kenmerk van de C128 is vanuit mijn perspectief zijn dubbele videosysteem. Daarmee wordt geen eenvoudige omschakeloptie bedoeld, maar twee daadwerkelijk gescheiden videologica’s met eigen hardware, verschillende doelstellingen en een van elkaar onafhankelijke werkwijze.

VIC-IIe – het vertrouwde 40-kolommensysteem

De VIC-IIe is een lichte doorontwikkeling van de VIC-II uit de C64. Hij produceert het bekende 40-kolommenbeeld, werkt met hetzelfde sprite-principe, kent de vertrouwde grafische modi en grijpt net als zijn voorganger terug op het normale systeem-RAM. In C64-modus is hij de enige weergave-eenheid.

Daardoor blijven echter ook de bekende beperkingen bestaan: dezelfde conflicten bij geheugentoegang, dezelfde beperkingen qua kleur en resolutie en dezelfde nauwe koppeling aan het systeem-RAM.

VDC 8563 – het zelfstandige 80-kolommensysteem

De MOS 8563 VDC is een fundamenteel andere constructie. Hij bezit zijn eigen videogeheugen – standaard 16 KB, uitbreidbaar tot 64 KB – en grijpt niet terug op het systeem-RAM. De CPU spreekt hem alleen via registers aan. Dat betekent: de VDC werkt onafhankelijk van het normale geheugentransport en belast de systeembus niet op dezelfde manier als de VIC-IIe.

Zijn uitvoer verloopt via RGBI en richt zich daarmee op monitoren die voor serieus tekstwerk veel geschikter waren dan typische 40-kolommenschermen. Voor CP/M en andere tekstgerichte toepassingen was dat een echt verschil in praktisch nut.

[Video_Diagnostic] Dual-Video-Architecture
> VIC-IIe (8564 PAL): 40 kolommen / spritesysteem / Composite+RF / systeem-RAM
> VDC 8563: 80×25 tekens / RGBI / eigen 16 KB VRAM (uitbreidbaar tot 64 KB)
> Toegang: VIC-IIe deelt de bus / VDC volledig onafhankelijk / alleen registertoegang
> Werking: beide systemen tegelijk actief / twee monitoren theoretisch mogelijk
> Beoordeling: ongewoon uitgebreide oplossing met duidelijk verschillende doelstellingen

Opmerkelijk is daarbij niet alleen de scheiding van beide systemen, maar ook het feit dat ze tegelijkertijd actief kunnen zijn. In de praktijk werd dat zelden benut, omdat er meestal maar één monitor aanwezig was. Technisch was het systeem er echter wel op voorbereid.

  • VIC-IIe – grafische modi: Hi-Res-Bitmap (320×200), Multicolor-Bitmap (160×200), tekenmodi en sprites binnen het vertrouwde Commodore-kader.
  • VDC – tekstmodi: 80×25 standaard, bij voldoende VRAM uitbreidbaar. Hardwarecursor en tekstgerichte werkwijze.
  • VDC – grafische modi: bitmapgrafiek in principe voorzien, maar in de dagelijkse praktijk duidelijk minder gebruikt.
  • VRAM-uitbreiding: standaard 16 KB. Met 64 KB werden extra mogelijkheden van de VDC pas echt bruikbaar.

De VDC is voor mij een van de onderschatte kenmerken van de C128. Niet omdat hij spectaculair was, maar omdat hij de computer juist daar serieus maakte waar de C64 duidelijk beperkt bleef: bij tekstwerk, bij CP/M en bij alles wat een scherper, rustiger beeld vereiste.

“Twee gescheiden videosystemen in zo’n computer waren geen vanzelfsprekendheid, maar een aanzienlijke constructieve inspanning.”

[hardware/storage]

De 1571-drive

De C128 werd niet toevallig met de 1571 verbonden. Deze drive hoort functioneel bij het systeemidee van de machine. Vergeleken met de 1541 is ze geen kleine stap, maar een serieuze uitbreiding van het hele massastorage-concept.

De 1571 is een dubbelzijdige 5,25-inch-drive. Ze gebruikt beide zijden van de diskette via twee koppen en verdubbelt daarmee de bruikbare capaciteit vergeleken met de 1541 aanzienlijk. Alleen dat al was in het dagelijks gebruik relevant.

MFM en CP/M-compatibiliteit

Technisch nog belangrijker is het vermogen van de 1571 om naast Commodores GCR ook MFM te verwerken. Pas daardoor wordt de CP/M-modus van de C128 praktisch interessant. Zonder deze eigenschap was CP/M op de C128 vooral een demonstratie gebleven. Met haar werd een reële uitwisseling met vreemde diskformaten tenminste in zekere mate mogelijk.

Burst-modus

In combinatie met de C128 ondersteunt de 1571 een Burst-modus, die de seriële overdracht duidelijk versnelt. Juist hier zie je dat Commodore niet alleen de computer zelf, maar ook de randapparatuur als onderdeel van dezelfde systeembeslissing begreep.

[Drive_Diagnostic] Commodore 1571
> Type: dubbelzijdige 5,25-inch-drive / twee schrijf-/leeskoppen
> Formaat: GCR (Commodore) + MFM (CP/M / MS-DOS-achtig)
> Capaciteit: tot 1328 blokken in dubbelzijdig GCR-bedrijf
> Burst-modus: duidelijk hogere overdrachtsnelheid in C128-bedrijf
> Betekenis: maakte de uitgebreidere systeemambitie pas praktisch tastbaar

Voor mij is de 1571 daarom een goed voorbeeld van het feit dat de C128 niet alleen op printplaatniveau serieus bedoeld was. Ook de drive laat zien dat hier meerdere eisen niet alleen werden geclaimd, maar tot in de randapparatuur toe werden mee-ontworpen.

[hardware/c128d]

C128D – behuizingsvorm, verschillen en de DCR-variant

De C128D is in de kern dezelfde computer in een andere behuizingsvorm. Deze behuizing is echter niet louter cosmetiek. Ze verandert het praktische karakter van het systeem merkbaar.

Terwijl de standaard-C128 met geïntegreerd toetsenbord nog duidelijk als afstammeling van de C64 overkomt, werkt de C128D eerder als een compacte werkstation-computer: los toetsenbord, geïntegreerde 1571-drive, meer orde op het bureau, minder losse apparaten in gebruik.

Ingebouwde voeding

Een wezenlijk verschil ligt in de ingebouwde voeding. Dat vereenvoudigt de opstelling, maar verplaatst de warmteontwikkeling wel volledig naar de behuizing. In het dagelijks gebruik is dat handiger, technisch is het niet alleen maar een voordeel.

De C128DCR-variant

Later verscheen de C128DCR (Cost Reduced). Die verving de metalen behuizing van de vroege C128D door kunststof en bracht revisiewijzigingen op het moederbord met zich mee. Voor normaal gebruik is het verschil klein. Voor iemand die de machine nauwkeuriger bekijkt, is het echter zichtbaar: ander materiaalgevoel, andere thermische eigenschappen, andere interne revisies.

[Form_Factor_Comparison] C128 vs C128D vs C128DCR
> C128: platte toetsenbordeenheid / externe voeding / geen geïntegreerde drive
> C128D: desktopbehuizing / geïntegreerde 1571 / interne voeding / metalen behuizing
> C128DCR: zoals C128D / kunststof behuizing / printrevisie / herwerkte bestukking
> Kernarchitectuur: gelijk / praktisch karakter: duidelijk verschillend

Juist voor het dagelijks gebruik met 1571 en 80-kolommenmonitor was het D-model daarom meer dan een wijziging van verpakking. Het maakte de computer rustiger en gesloten in opbouw, zonder de innerlijke systeemlogica fundamenteel te veranderen.

[software/basic_cpm]

BASIC 7.0 en CP/M Plus

Met BASIC 7.0 bracht de C128 het meest uitgebreide BASIC dat Commodore ooit standaard heeft uitgeleverd. Vergeleken met BASIC 2.0 op de C64 is het verschil niet cosmetisch, maar fundamenteel: grafiek, geluid, diskettegebruik en meer gestructureerde besturingscommando’s zijn direct geïntegreerd.

Wat BASIC 7.0 direct meebracht

  • Grafische commando’s: DRAW, BOX, CIRCLE, PAINT – vectorgraphics zonder extra routines.
  • Sprite-commando’s: direct spritebeheer zonder omweg via machinetaal.
  • Geluid-commando’s: PLAY, SOUND, ENVELOPE – SID-nabij werken rechtstreeks vanuit BASIC.
  • Disk-commando’s: DLOAD, DSAVE, DIRECTORY – veel dichter bij het echte dagelijks gebruik.
  • Controlestructuren: DO/LOOP, WHILE/WEND, EXIT – minder starre GOTO-logica.
  • Foutafhandeling: TRAP voor rudimentaire afhandeling van runtime-fouten.

Daarmee was de C128 in BASIC voor het eerst als zelfstandige werkcomputer serieus te nemen, zonder dat men meteen naar uitbreidingen of machinetaal hoefde uit te wijken.

CP/M Plus 3.0

De CP/M-modus van de C128 is gebaseerd op CP/M Plus 3.0 en niet meer op de oudere 2.2-tak. Dat bracht onder meer verbeterde bankschakeling en een uitgebreid geheugenbeheer mee. Technisch was dat belangrijk, omdat de computer daardoor meer uit zijn 128 KB kon halen dan een ouder CP/M-model gekund zou hebben.

Praktisch betekende dat toegang tot een aanzienlijke softwarebasis: WordStar, dBase, Turbo Pascal en vele andere programma’s werden daarmee überhaupt een realistisch onderdeel van de C128-wereld. Zonder deze softwaretoegang zou de CP/M-modus aanzienlijk minder relevant zijn geweest.

[Software_Stack] C128
> BASIC 7.0: grafiek / sprites / geluid / disk / structuren – alles ingebouwd
> CP/M Plus 3.0: uitgebreid geheugenbeheer / bankschakeling
> CP/M-softwarebasis: WordStar / dBase / Turbo Pascal en meer
> ML-monitor: ingebouwde machinetaalmonitor direct in de KERNAL
> Resultaat: breedste softwarefundament van een Commodore-computer in deze klasse

Daarbij komt de ingebouwde machinetaalmonitor, die zonder extra diskette direct beschikbaar was. Ook dat hoort bij de zelfstandigheid van het systeem: minder omwegen, meer directe toegang tot de machine zelf.

“BASIC 7.0 was niet alleen groter dan zijn voorganger. Het was het eerste Commodore-BASIC-dialect dat in het dagelijks gebruik duidelijk minder naar extra werk vroeg.”

[meaning/continuity]

Wat de C128 over overgangen zegt

De C128 is voor mij een precies voorbeeld van wat een overgangssysteem kan leisten – en wat het daarvoor moet aanvaarden. Hij wilde tegelijk compatibel en zelfstandig zijn, tegelijk homecomputer en werkmachine, tegelijk onderdeel van de Commodore-lijn en CP/M-platform. Juist deze meervoudige belasting maakt hem leesbaar.

Op veel plaatsen in zijn architectuur zie je beslissingen die uit echte problemen zijn ontstaan: de MMU als antwoord op de te kleine adresruimte, de Z80 als directe oplossing voor CP/M, de dubbele videologica als scheiding tussen compatibiliteit en tekstwerk, de 1571 als noodzakelijke aanvulling op hetzelfde systeemidee. Niets daarvan werkt vrijblijvend.

Wat daaronder lijdt, is conceptuele scherpte. De C128 heeft niet één enkel, volledig helder profiel. Precies dat is echter geen zwakte in morele zin, maar een gevolg van zijn ambitie. Overgangssystemen lossen meerdere problemen tegelijk op en tonen juist daarom aan hun naden vaak meer dan pure serieconcepten.

Wie zo’n computer serieus neemt, moet daarom niet alleen zijn sterke kanten zien, maar ook de punten waarop zijn architectuur onder belasting zichtbaar wordt. Precies daar wordt hij interessant.

[Lesson_Transfer] C128 -> techniekbegrip
> Compromissen zijn geen fouten – het zijn beslissingen onder reële omstandigheden
> Overgangsarchitectuur toont meer over ontwikkeling dan gladde eindtoestanden
> Compatibiliteit en zelfstandigheid sluiten elkaar niet uit – maar kosten altijd iets
> Resultaat: systemen serieus nemen betekent hun naden kunnen lezen

Voor mij hoort de C128 daarom eerder tot de categorie van leesbare systemen dan tot die van luidruchtige systemen. Hij toont geen perfectie, maar structuur onder meerdere eisen. En juist dat is vaak leerzamer.

Wat blijft, is een computer die in opmerkelijk krap kader drie werkomgevingen, twee CPU’s en twee videologica’s samenbrengt en daarbij nog volledige C64-compatibiliteit meedraagt. Dat is geen kleine technische prestatie.

“De C128 is niet interessant omdat hij alles ideaal oplost. Hij is interessant omdat men er meerdere echte beslissingen tegelijk aan kan aflezen.”

↑ Naar boven