Google Analytics

29 september 2021

Bouw: PI1541 floppy drive emulator

In deze Blog beschrijf ik de bouw van de PI1541 floppy drive emulator met behulp van een de PI1541 print die op een Raspberry PI 3 gestoken kan worden. Met deze hardware en bijbehorende software wordt een VIC-1541 floppy drive exact geëmuleerd.

Als eerste voorzie ik de Raspberry Pi van koelblokjes omdat de IC's bij langdurig gebruik vrij heet kunnen worden. Zo'n koelset, bestaande uit 3 precies passende koelblokjes en voorzien van 3M thermisch geleidende plakfolie, kan bv. besteld worden bij Reichelt.

Hierboven zie je de Raspberry PI 3 met twee koelblokjes geplaatst aan de bovenkant van de print en één aan de onderkant.

De PI1541 is een IO adapter die op de 40 polige GPIO connector van de Raspberry PI kan worden aangesloten.

Aan de voorkant zitten twee DIN aansluitingen: 1 om aan te sluiten op de Commodore computer en de andere om een tweede floppy drive of printer door te lussen. Aan de zijkant zitten 5 knoppen die gebruikt worden om door de bestanden te navigeren die op de SD kaart aanwezig zijn.

Op de PI1541 zien we linksboven een jumper t.b.v. aan- uitschakelen van de ronde speaker eronder die de originele floppy drive geluiden nabootst. Daarnaast zit een aansluiting voor een externe speaker. Verder een rode en groene led voor de power en de disk activiteit. Voor de interface is een 74LS08 IC aanwezig (4 voudige AND gate) en het blauwe opsteekprintje is een bi- directionele level converter tussen de 5V van de Commodore en de 3.3V van de Raspberry PI. Rest nog een resetknop en in het midden een 4polige connector t.b.v. een 0.96 inch OLED scherm. Hierdoor is de module ook zonder beeldscherm te gebruiken. 

De PI1541 kan nu op de Raspberry PI worden geplaatst zoals op de foto hieronder.

Nu kan de PI1541 software op de Micro SD kaart worden gezet. Details hierover staan  beschreven op: https://cbm-pi1541.firebaseapp.com/

Nu kan het geheel worden getest, mijn PI1541 blijkt te werken, echter het OLED display werkt niet, er is alleen beeld via de HDMI uitgang. Dit bleek twee oorzaken te hebben. De eerste was een fout in het configuratiebestand options.txt. Hieronder staat een gedeelte hiervan. De geel gemarkeerde instellingen zijn van belang voor het gebruikte OLED display en de aansluitingen van de PI1541 op de Raspberry PI.

// If you are using a LCD screen then specify it here
LCDName = ssd1306_128x64
//LCDName = ssd1306_128x32
//LCDName = sh1106_128x64
// If you are using a LCD screen and you would like PageUp and PageDown keys to work with it (rather than the HDMI screen) then specify this option
//KeyboardBrowseLCDScreen = 1
// change startup logo on oled - 1541ii or 1541classic
//LcdLogoName = 1541ii
LcdLogoName = 1541classic
//LcdLogoName = customfile.raw
// If you are using I2C LCD you can optionally change what pins it is connected to.
// (defaults to 0 for non-split lines (Option A) or 1 for split lines (Option B))
//i2cBusMaster = 0 //SDA - pin 27 SCL - pin 28
i2cBusMaster = 1 //SDA - pin 3 SCL - pin 5
i2cLcdAddress = 60 // I2C display address in decimal and shifted. 60 == 0x78, 61 == 0x7A

Ik heb de PI1541 printsporen van het OLED display voor de data (SDA) en de clock (SCL) gevolgd en deze kwamen uit op GPIO pin 3 en 5. In de configuratie stond i2cBusMaster default op 0 dus op pin 27 en 29. Aanpassing van deze instelling hielp echter niet.
Daarna heb ik het I2C adres van het OLED scherm bepaald m.b.v. een proefopstelling met een Arduino Nano waarbij ik de I2C uitgangen heb verbonden met het OLED display. Ik heb software gemaakt en geladen die alle I2C adressen scant en bij een reactie van het display het gevonden adres toont. Dit adres bleek te kloppen.

Daarna heb ik de PI1541 print geïnspecteerd en zag dat de soldeerbruggen aan de onderkant van de print waren gesoldeerd voor Bus 1 ipv Bus 0. Nadat ik deze had aangepast werkte het OLED display.

Nu kan het geheel (m.u.v. het OLED display) worden ingebouwd in een 3D geprint kastje. Als laatste wordt het OLED display bovenop het kastje aangesloten en wordt nog een afdekkapje geplaatst.

Het opstart logo

Bestandsselectie d.m.v. de drukknoppen

De complete PI1541 klaar voor gebruik

28 september 2021

Toepassing: SD2IEC floppy drive emulator

Oude Commodore computers zijn nog steeds populair en daarom vinden er ook moderne hardware ontwikkelingen plaats zoals oplossingen om programma's te laden via een SD kaart in plaats van de oude tape- of floppy drive.

In deze Blog beschrijf ik de SD2IEC oplossing van The Future Was 8 bit (TFW8b)

In de afkoring hierboven verwijst "SD" naar de Secure Digital geheugenkaart, "2" naar "to" en IEC naar International Electrotechnical Commission. Dit is een standaard die gebruikt is voor de seriële IEEE-488 bus die op de Commodore computers is toegepast voor floppy drives en printers.


Aan de voorkant is een sleuf aanwezig waar een full size SD geheugenkaart in past.

Aan de bovenkant zijn drie knoppen aanwezig waarvan 2 transparant met een rode en groene led die net als op een 1541 floppy drive de Power-on en diskactiviteit laat zien. De knoppen (vlnr) zijn voor "volgend bestand", "vorig bestand" en "reset" die ook meteen de hoofdmap selecteert. Als het volgend/vorig bestand een diskimage betreft kan hiermee een floppy wissel worden nagebootst.

Er zijn twee aansluitingen aanwezig, de blauwe connector wordt aangesloten op de cassettepoort (let daarbij op dat de markering "TOP" aan de bovenkant zit). Deze connector  levert de 5V voedingsspanning. Per ongeluk omgekeerd aansluiten levert geen schade op aan de Commodore computer. De andere aansluiting is de IEC DIN plug die in de floppy drive aansluiting wordt gestoken.

De software die op de SD moet worden geplaatst is te downloaden op thefuturewas8bit.com Als je er voor zorgt dat je op het geheugenkaartje als eerste bestand de filebrowser (fb) zet dan kun je deze direct laden en starten met LOAD"*",8:RUN
Je kunt nu op de Commodore met de pijltjes toetsen tussen bestanden en mappen navigeren en met een druk op de RETURN toets wordt het betreffende programma of disk image geladen.

Ook ondersteund deze SD2IEC oplossing diverse speed loaders zoals de al in een eerder blog beschreven JiffyDos en ook Geos, Final Cartridge III, Exos, Turbodisk, Epyx fastload, Speeddisk en Dreamload. Zie ook de sd2iec-info voor meer informatie.

Het standaard device nummer is 8. Aangezien deze al in gebruik is voor de VIC-1541 floppy drive, geven we deze nummer 9 m.b.v. het volgende commando:

OPEN 15,8,15:PRINT#15,"U0>"+CHR$(9):CLOSE 15

Deze wijziging kan nu permanent worden opgeslagen in het EEPROM geheugen m.b.v.:

OPEN 15,9,15:PRINT#15,"XW":CLOSE 15

Nu kunnen beide "floppy" drives naast elkaar worden gebruikt.

19 september 2021

Reparatie: Amstrad NC100

De Amstrad NC100 is een notebook computer ongeveer ter grootte van een A4-tje, uitgebracht in 1992. Hij bevat een ingebouwde tekstverwerker een calculator met basis functies en een dagboek. Het geheel is ontworpen om het zo eenvoudig mogelijk te gebruiken.


Het toetsenbord bevat gekleurde knoppen waarmee tussen de diverse functies kan worden geschakeld. Het LCD display kan 8 regels van 80 tekens weergeven (480 x 64 pixels).

Het probleem met deze computer is dat de blauwe toets rechtsonder niet werkt.

Aan de achterkant zien we aansluitingen voor een 6V gelijkstroom voeding. Let op de polariteit bij het aansluiten van een adapter, op de pin zit de negatieve polariteit, terwijl bij veel apparaten dit juist de positieve polariteit heeft. Verder zien we de aansluitingen voor een RS-232 seriële poort en een parallelle poort t.b.v. een printer.

Aan de linkerkant zit een uitsparing voor het plaatsen van een PCMCIA geheugenkaart van maximaal 1Mb.

en aan de rechterkant een knop waarmee het contrast van het LCD display worden ingesteld.

Aan de onderkant zien we een batterij compartiment t.b.v. 4 AA batterijen en een compartiment voor een CR2032 knoopcel t.b.v. backup voor het het geheugen.


Onder het klepje met de rode stip zit een 256kB ROM, waar alle software in is opgeslagen. Het handige hiervan is dat de ROM vervangen kan worden door een ROM met meer functionaliteit of een andere taal, zonder dat de kast open hoeft.


Met 5 schroeven (waarvan er een onder het klepje van het batterij compartiment zit) kan de kast worden opengeschroefd.


We zien nu een metalen afscherming die uit twee delen bestaat, het bovenste deel bevat het toetsenbord en het onderste deel de elektronica. De sticker rechtsboven laat zien dat de Amstrad (of in ieder geval het toetsenbord) is geproduceerd door het Japanse Nakajima, bekend van de elektrische typemachines.

Als we het onderste deel voorzichtig optillen zien we 2 connectoren waarmee we het toetsenbord kunnen loskoppelen.

Daarna kan de printplaat naar links worden gekanteld en zien we een bandkabel die het moederbord met het display verbind. Ook deze kan worden losgemaakt en ook de kleine witte connector voor de speaker, deze is net onder de bandkabel zichtbaar.

Nu is de PCB van het LCD goed zichtbaar, er zijn 6 OKI MSM5299C IC's aanwezig die elk een deel (80x16 pixels) van het display aansturen. De display unit is geproduceerd door Citizen.

De display unit kan met 4 schroeven worden losgeschroefd.
Op het LCD gedeelte zijn een viertal vlekken te zien, deze worden veroorzaakt doordat het polarisatie folie heeft losgelaten en op die plek een beetje gewelfd is.

Het blauwkleurige LCD heeft niet zo'n hoog contrast maar is met voldoende omgevingslicht goed leesbaar. Voor nu laten we dit nog zo, er bestaan betere high contrast LCD units en mocht er een voor een redelijk prijs voorbij komen kan het display altijd nog worden vervangen.

Nu zijn we aangekomen bij het onderdeel waar waarschijnlijk het probleem in zit: het toetsenbord.



Het blik aan de achterkant van het toetsenbord kan voorzichtig worden los geklikt.

We zien dat het binnenwerk bestaat uit een folie met opgedampte metaal lagen. Daarachter zitten per toets een kunststof bol cupje die ervoor zorgt dat de toets terugveert nadat deze is losgelaten en het folie op de plaats van de toets doorverbind als deze wordt ingedrukt.


Er zijn 3 lagen folie, de bovenkant en onderkant bevatten de opgedampte sporen en een geperforeerde tussenlaag zorgt voor afstand tussen de lagen zodat er alleen contact kan worden gemaakt als een toets wordt ingedrukt.


De lagen folie zijn maar op een paar plaatsen met elkaar versmolten zodat er gemakkelijk stof en vuil tussen de lagen kan komen en dat is ook precies de oorzaak van het probleem. Nadat stof en vuil is weggeblazen blijkt het contact voor de betreffende toets weer prima te werken en kan alles weer in elkaar worden gezet. Gelukkig een heel eenvoudig reparatie klusje.


De functionaliteit van de NC100 is natuurlijk niet meer van deze tijd, maar vanwege de aanwezigheid van de seriële- en parallelle poort is hij geschikt om dienst te doen als compacte seriële terminal voor aansturing/uitlezen of het testen van apparatuur die over een parallelle poort beschikt.

17 september 2021

Upgrade: C128 JiffyDOS

Na de ombouw van de VIC-1541 naar JiffyDOS is het tijd voor aanpassing van de C128. De originele JiffyDOS ROM's voor de C128 kunnen worden aangeschaft bij b.v. de Duitse Restore-Store. De laatste versie is 6.01 uitgebracht door CMD in 1989.

De bestaande ROM's die vervangen moeten worden zijn U32 (251913-01, C64 Kernal) en U35 (318020-03, C128 Kernal)

Deze ROM's hebben een geheugen capaciteit van 16k x 8 bits. Ze zullen worden vervangen door 32k x 8 bits EPROM's. (EPROM's zijn ROM's die kunnen worden geprogrammeerd en weer worden gewist m.b.v. UV licht). We kiezen hier voor type M27C256B, deze heeft dezelfde pin layout als de originele ROM.

Aansluitingen van de M27C246B

Deze EPROM is qua geheugencapaciteit 2x zo groot, dus passen zowel de originele ROM alsmede de JiffyDOS ROM in hetzelfde IC. Met adreslijn A14 (pin 27) kan dan tussen de originele ROM of de JiffyDOS ROM worden geschakeld m.b.v. een schakelaar die op de achterkant van de C128 kast wordt gemonteerd. A14 (pin 27) wordt dan met een 4k7 weerstand verbonden met +5V (VCC, pin 28). De schakelaar maakt via draden verbinding tussen A14 (pin 27) en de massa (VSS, pin 14). Dus bij een onderbroken schakelaar is A14 'H' via de pull-up weerstand en als de schakelaar verbinding maakt is A14 'L'. Dit kan voor beide EPROM's op dezelfde schakelaar.

Waarom beide ROM's en maken we deze schakelbaar? JiffyDOS gebruikt de ruimte in de originele ROM waar de routines voor de cassette tape zijn gehuisvest. Daardoor werkt de tape drive niet meer en offer je deze dus op voor een hogere floppy drive snelheid.

Als we alles hebben gesoldeerd kunnen de EPROM's in de voetjes worden gestoken (let daarbij op de juiste richting).

Verder is er nog een aanpassing noodzakelijk aan het moederbord. Door jumper J6 te verbinden wordt aangegeven dat er een 32k x 8 ROM wordt gebruikt in U32.

Jumper J6 kan worden doorverbonden met een soldeerbrug, maar ik heb ervoor gekozen om hier een (vanwege de beperkte hoogte) haakse jumper te solderen zodat de C128 weer gemakkelijk in originele staat kan worden teruggebracht.

Nu kunnen we alles gaan testen, eerst in de C128 modus. Met de schakelaar in de ene stand zien we het originele scherm (originele ROM):

Het lukt nog steeds om zonder fouten een directory te laden van de VIC-1541 floppy drive.
Hetzelfde doen we in de C64 modus via het commando Go64.

Nu starten we de C128 op, met de schakelaar in de andere stand en zien we dat de JiffyDOS actief is. Met het @ commando kan de status van de JiffyDOS op de VIC-1541 floppy drive worden opgevraagd en weten we of alles goed werkt.

We doen weer hetzelfde in de C64 modus.

De upgrade is geslaagd en nu is het tijd om te meten hoeveel sneller het geheel is geworden. Het laden van een programma van 39 blokken duurt met de originele ROM 24 sec. en met de JiffyDOS ROM slechts 5 sec. Dat is de moeite waard!

De JiffyDOS handleiding kan van de jbrain.com website worden gedownload.

15 september 2021

Upgrade: C128 Aanpassing koeling

In deze blog volgt de C128 aanpassing aan de koeling. Deze aanpassing is noodzakelijk voor toekomstige modificaties, zoals de nog geplande VDC 64k upgrade en de Lumafix128 upgrade. De bestaande koeling zal vervangen worden door losse koelblokken (heatsinks) op de IC's zelf.

Als de kast is opengeschroefd zien we het binnenwerk van de C128. Wat meteen opvalt is de grote metalen plaat die behalve als RF afscherming ook als koeling voor de IC's dient, waarbij delen metaal naar binnen buigen en op een aantal van de IC's rusten.

Tussen de metalen delen en de IC’s zit nog een thermische pasta om de warmte beter te kunnen geleiden. Als de koelplaat is verwijderd wordt de printplaat zichtbaar met o.a. 63 IC's.


Het grote blik linksboven van het midden bevat de video IC's. Als we hier de deksel van afhalen zien we ook twee metalen strippen aan de binnenkant van het deksel die voor de koeling op de IC's drukken. Links zit de 80 kolommen VDC IC (U22) en rechts de VIC II video IC (U21).


Op een aantal IC's zijn nog resten van de witte thermische pasta aanwezig die ik verwijder en ontvet met 99,9% isopropanol alcohol.
Nadat alles is schoongemaakt worden de koelblokken geplaatst op de volgende IC's: U5, U6, U7, U11, U13, U18, U20, U21, U33 en U34. De koelblokken zijn voorzien van thermisch geleidende plakstrips zodat ze direct op de IC's kunnen worden geplakt. De ROM's U32 en U35 zijn nog niet van koelblokken voorzien omdat deze nog vervangen gaan worden door de JiffyDOS ROM's. De ROM in U36 is standaard niet aanwezig, deze is gereserveerd voor evt. uitbreiding.


De koelblokken voor IC's U11 (links) en U18 (rechts) in de afbeelding hieronder kunnen niet over de hele lengte naar beneden van het IC worden geplakt, aangezien daar geen ruimte voor is i.v.m. het schuin aflopende toetsenbord wat erboven zit.


Nu kan de metalen plaat worden weggelaten en de C128 weer worden dichtgeschroefd.

14 september 2021

Inspectie: C128

Voordat ik mijn C128 ga aanpassen heb ik deze eerst uitvoerig geïnspecteerd.
Het betreft volgens de sticker aan de onderkant een:

MODEL NO. C 128  SERIAL NO. DA4 175481  MADE IN W.-GERMANY

Het moederbord is een revisie 7 PCB:

Motherboard PCB assy #310379 Rev. 7, Artwork #310381 Rev. 7

Op het moederbord is ook nog een andere cryptische tekst te lezen:

RIP: HERD/FISH/GUAY/PAR

Dit is een verwijzing naar de ontwerpers Bil Herd, Terry Fisher, Claude Quay en Paul Rubino. RIP verwijst naar het enorme werk van deze heren om alle print sporen tussen de IC's passend te krijgen in een hele beperkte ruimte. Ze hebben als grap "hun leven gegeven" om het werk op tijd af te krijgen.

Op de printplaat zijn 62 IC's aanwezig en 1 lege IC voet (U36). In de tabel hieronder heb ik deze geregistreerd voor toekomstige referentie:


Er is wat corrosie aanwezig op het blik van de RF modulator, maar bij het openen ziet alles er van binnen nog prima uit.

Ook de elco's zien er goed uit, ze hebben nog de juiste capaciteit en een lage ESR waarde en hoeven nog niet te worden vervangen.

Aan de achterkant van de printplaat is te zien dat er al eerder reparatiewerk is verricht, waarbij het soldeerwerk niet zo goed is uitgevoerd. Het lijkt wel of er een bruine soldeerpasta is gebruikt in plaats van tin met flux.

Hierdoor is wel goed af te leiden welke IC's zijn vervangen, nl. U6 (8502 CPU), U11 (PLA), U13 (Buffer), U14, U15 (Multiplexers), U55 (Tranceiver), U62 (AND gates) en de 4164 RAM IC's. Waarschijnlijk waren ze niet allemaal defect, maar zijn ze er eruit gehaald om ze te testen of om de foutoorzaak te vinden.

Er zijn 6 jumpers op het moederbord te vinden die de volgende functionaliteit hebben:


J1 is te vinden bij IC U28 in het VIC II video gedeelte, J2 en J3 zijn rechtsonder U11 (PLA IC) te vinden, J5 is niet aanwezig, die was waarschijnlijk gereserveerd voor de ROM grootte selectie van U33 of U35, J4, J6 en J7 zijn rechts van IC U12 te vinden.

De contacten van de connectoren waren vuil en zijn gereinigd. Nu is alles voorbereid voor de aanpassingen die ik in de volgende blogs zal beschrijven.