Hier für die Nachwelt der Schaltplan, den ich mit Eagle 6.6.0 unter wine exportiert habe.
Eagle 7.7 Free gibt es auch für OSX
Danke! Ich hatte erstmal das älteste genommen was geht, da das Projekt von 2002 ist...
Hier für die Nachwelt der Schaltplan, den ich mit Eagle 6.6.0 unter wine exportiert habe.
Eagle 7.7 Free gibt es auch für OSX
Danke! Ich hatte erstmal das älteste genommen was geht, da das Projekt von 2002 ist...
Ich schau morgen nochmal drauf. Ist "my first GAL"
Dito! Ich muss jetzt erstmal die 8050 wieder montieren, die liegt in Einzelteilen herum, dann mit openCBM den Interpreter rüberkopieren und mal testen! Ich werde auch Benchmarks machen, um zu sehen, ob die 8K Cache was bringen!
So, also mit der Streichung von ROM9 in den beiden Logikzeilen gehts schon mal. Wenn zitruskeks das andere File auch noch auf Vordermann bringt kann ich das auch noch mal testen, aber so ist zumindest schon mal fix 9000-AFFF frei für SoftROM:
Die Änderung ist folgende:
--- PETFLASH.PLD 2003-02-03 23:00:00
+++ PET-ROM9.PLD 2024-06-04 19:50:09
@@ -54,8 +54,8 @@
* Logic:
*/
-OEROM = (BLK9 # BLKB # BAS2 # KERN) & RW & ROMON;
-WEROM = (PHI2 & !RW & WE & (BLK9 # BLKB # BAS2 # KERN));
+OEROM = (BLKB # BAS2 # KERN) & RW & ROMON;
+WEROM = (PHI2 & !RW & WE & (BLKB # BAS2 # KERN));
CSRAM = RAM & RAMON;
WERAM = (PHI2 & !RW);
MUX = (BLK9 & !WE) # (WE & !RW);
Alles anzeigen
Alles anzeigenKönnte so funktionieren:
Switches 1-3 sind jetzt ROM-Control
Alles Ersatz-ROM = 111
011 = KERNAL (F000..FFFF) ausblenden
101 = EDITOR (E000..E7FF) ausblenden
001 = BASICD (D000..DFFF) ausblenden
110 = BASICC (C000..CFFF) ausblenden
010 = BASICB (B000..BFFF) ausblenden
100 = OPTION (9000-AFFF) ausblenden
000 = Kein ROM ersetzen
CodeAlles anzeigen/* * INPUT: SIGNALS */ Pin 9 = PHI2; Pin 11 = RW; Pin [4..8] = [a15..11]; /* * INPUT: SWITCHES */ Pin 1 = ROM1; Pin 2 = ROM2; Pin 3 = ROM3, Pin 18 = RAM0; Pin 19 = RAM1; /* * Outputs: * */ Pin 12 = !CSRAM; Pin 13 = MUX; Pin 14 = !OEROM; Pin 15 = !WERAM; Pin 16 = OD_BUS; Pin 17 = !WEROM; /* * Equations: */ field addr = [a15..11]; IOAREA = addr:[E800..EFFF] ROMSET = addr:[9000..FFFF] & ( ROM1 & ROM2 & ROM3) & !IOAREA; KERNAL = addr:[F000..FFFF] & !(!ROM1 & ROM2 & ROM3); EDITOR = addr:[E000..E7FF] & !( ROM1 & !ROM2 & ROM3); BASICD = addr:[D000..DFFF] & !(!ROM1 & !ROM2 & ROM3); BASICC = addr:[C000..CFFF] & !( ROM1 & ROM2 & !ROM3); BASICB = addr:[B000..BFFF] & !(!ROM1 & ROM2 & !ROM3); OPTION = addr:[9000..AFFF] & !( ROM1 & !ROM2 & !ROM3); RAM4 = addr:[0000..0FFF] & !RAM0 & !RAM1; RAM8 = addr:[0000..1FFF] & RAM0 & !RAM1; RAM16 = addr:[0000..3FFF] & !RAM0 & RAM1; RAM32 = addr:[0000..7FFF] & RAM0 & RAM1; ROM = ROMSET # KERNAL # EDITOR # BASICD # BASIC B # OPTION; RAM = RAM4 # RAM8 # RAM16 # RAM32; /* * Logic: */ OEROM = ROM & RW; CSRAM = RAM; WERAM = (PHI2 & !RW); MUX = (addr:[9000..FFFF] & !WE); OD_BUS = CSRAM # OEROM;
2-3 Semikolons fehlen und so, und noch ein Problem: WE ist keinem Pin mehr zugeordnet!
Abeer.. ein GAL was die Schalter nutzt um Roms gezielt ein und auszublenden (wie bei DD) wäre nice. Und nun ja auch kein Ding mehr.
Ja, ich probiere es heute oder dieser Tage mal aus! Was ist DD?
Oh, naja im Zweifel kann man Tynemouth's Erweiterung benutzen, die kann das auch schon:
Aber ich habe nun mal schon die andere Erweiterung und will die nun auch nutzen. ![]()
Ja, da kann ich ja zur Not selber irgendwo was hosten. Und außerdem werden die Daten auch hier im Thread herumfliegen.
Gute Idee. Ich habe inzwischen auch eine Testversion von Bit Shifter's Z3 Infocom Interpreter. Der würde von 8K mehr RAM echt profitieren. 32K sind da hart an der Grenze des Machbaren. Mein Ziel ist es die ultimative 70er Jahre Infocom Maschine zu bauen, mit echtem 8050 Diskettenlaufwerk. ![]()
Ja, die 4040 wäre noch passender, habe ich aber nicht.
Dann poste doch bitte hier das geänderte PLD und JED.
Kann ich dann gleich übernehmen und mein Softrom in Betrieb nehmen.
Ja sicher! Vielleicht kann man auch mittelfristig die Variante machen wo man einen Switch ummünzt auf "Option ROM 9-A einblenden". Das ist im Readme angedeutet, wurde aber scheinbar nie umgesetzt. Dafür fällt ein RAM Switch weg, so dass man nur 16k oder 32k auswählen kann.
Und WinCUPL generiert dann aus dem PLD ein JED, und das wird ins GAL gebrannt?
Exakto!
Ja super. Dann werde ich das heute Abend mal ausprobieren!
Alles anzeigenNaja, rödeln wir es doch von hinten auf
Auf die Erweiterungsroms greift der Pet zu, wenn _SEL9 oder _SELA aktiv (low) sind.
Die select lines werden aus Adressen 12,13,14,15 in einem 4zu16 decoder erzeugt. Dabei ist
_SEL9=
A12=H
A13=L
A14=L
A15=H
und _SELA =
A12=H
A13=L
A14=H
A15=L
Das Gal muss diese Signale abfangen (GALPin 12=A15, GALPin 13=A14, GALPin 14=A13, GALPin 15=A12) und wenn sie zutreffen das _OE signal für das Rom generieren (_CE ist daueraktiv). Das _OE fürs ROM ist Pin14 am GAL.
Der gepostete Ausschnitt aus den GAL Gleichungen ist zu kurz um da sinnvoll was sagen zu können.
Kein Problem: hier ist der komplette Source:
Name PETflash;
Partno GAL0001;
Revision 01;
Date 2002-07-16;
Designer N. Welte;
Company C= Research;
Location None;
Assembly None;
Device g16v8as;
/*
* Inputs:
*/
Pin 1 = WE;
Pin [4..8] = [a15..11];
Pin 2 = ROMON;
Pin 3 = RAMON;
Pin 9 = PHI2;
Pin 11 = RW;
Pin 18 = RAM0;
Pin 19 = RAM1;
/*
* Outputs:
*
*/
Pin 12 = !CSRAM;
Pin 13 = MUX;
Pin 14 = !OEROM;
Pin 15 = !WERAM;
Pin 16 = OE245;
Pin 17 = !WEROM;
/*
* Equations:
*/
field addr = [a15..11];
BLK9 = addr:[9000..AFFF];
BLKB = addr:[B000..BFFF];
BAS2 = addr:[C000..E7FF];
KERN = addr:[F000..FFFF];
RAM4 = addr:[0000..0FFF];
RAM8 = addr:[0000..1FFF];
RAM16 = addr:[0000..3FFF];
RAM32 = addr:[0000..7FFF];
RAM = (RAM4 & !RAM0 & !RAM1) # (RAM8 & RAM0 & !RAM1) #
(RAM16 & !RAM0 & RAM1) # (RAM32 & RAM0 & RAM1);
/*
* Logic:
*/
OEROM = (BLK9 # BLKB # BAS2 # KERN) & RW & ROMON;
WEROM = (PHI2 & !RW & WE & (BLK9 # BLKB # BAS2 # KERN));
CSRAM = RAM & RAMON;
WERAM = (PHI2 & !RW);
MUX = (BLK9 & !WE) # (WE & !RW);
OE245 = CSRAM # OEROM # WEROM;
Alles anzeigen
Hier für die Nachwelt der Schaltplan, den ich mit Eagle 6.6.0 unter wine exportiert habe. ![]()
Wow, absoluter Hammer. Für welche Rechner ist das? Bin auf Details gespannt.
detlef Okay! Dann habe ich ja was zu tun.
Zwischenzeitlich habe ich WinCUPL unter macOS zum Fliegen gebracht. ![]()
Also kann ich jetzt editieren und auch das GAL ändern. Wenn ich wüsste, wie. ![]()
Also wenn ich das richtig verstehe: Ich muss eigentlich "nur" BLK9 aus den Gleichungen rausnehmen:
OEROM = (BLK9 # BLKB # BAS2 # KERN) & RW & ROMON;
WEROM = (PHI2 & !RW & WE & (BLK9 # BLKB # BAS2 # KERN));
CSRAM = RAM & RAMON;
WERAM = (PHI2 & !RW);
MUX = (BLK9 & !WE) # (WE & !RW);
OE245 = CSRAM # OEROM # WEROM;
Wird zu:
OEROM = (BLKB # BAS2 # KERN) & RW & ROMON;
WEROM = (PHI2 & !RW & WE & (BLKB # BAS2 # KERN));
CSRAM = RAM & RAMON;
WERAM = (PHI2 & !RW);
MUX = (BLK9 & !WE) # (WE & !RW);
OE245 = CSRAM # OEROM # WEROM;
Nur... was mache ich mit dem MUX? Was MACHT MUX überhaupt?
Ne, das klappt nicht: Das RAM/ROM überschreibt das SoftROM.
Es MUSS das GAL angepasst werden, so dass man den Option ROM Bereich 9000-AFFF weiter vom Board nutzen kann.
x1541 Kann man von dir eigentlich noch das GAL File bekommen um das Option ROM freizumachen? Ich will halt nur die Möglichkeit zwischen BASIC 4.0 und 2.0 zu switchen.
Was genau hast du vor? BASIC 4.0 braucht eines der drei Option ROMs, damit ist es für BASIC 2.0 quasi auch "verloren" in dem Sinne, dass dieses dann immer in der gleichen Bank liegt wie das BASIC selbst.
Ich hatte nur mal eine Version angedacht, wo man dieses eine ROM zusammen mit den restlichen Option ROMs schalten kann. Die müsste ich aber suchen oder neu erstellen
So, nachdem mein SoftROM läuft: Ziel ist es das RAM/ROM Board für BASIC4.0 zu nutzen, und da dann so weit ich weiß immer noch $9000-AFFF frei ist dies auch frei zu lassen, so dass das SoftROM darauf reagieren kann. Ich habe die JED & PLD Files hier, habe aber keine Ahnung, was ich da machen muss.
Bin Informatiker, aber GAL-Gleichungen habe ich noch nie geschrieben. ![]()
EDIT: Im PLD ist ja der "Quellcode". Das sieht ja fast übersichtlich aus...
EDIT2: Hatte im falschen PLD geschaut. Das PET PLD sieht auch sinnvoll aus, ich überlege gerade wie man da das Option ROM ausblendet...
Es lebt!
Jetzt muss ich es nur noch mit dem ROM/RAM Modul testen, ob man dort $9000-$AFFF freischalten kann, ohne dass man BASIC4.0 deaktivieren muss.
Ne so klug war ich noch.
Nur beim CS war ich nicht clever genug.
Fehler gefunden:
du hast die Leitung für das Chip Select Signal auf Pin8 statt auf Pin 20 gelegt, weil deine Chips "auf dem Kopf" stehen, und du das Bild von der Webseite als referenz genommen hast. "5ter pin von oben rechts"
Ja, das probier ich heute Abend direkt mal aus.
Ähh... das universelle nicht-CRTC Board...? Ich glaube 320349, finde aber kein Bild mit der Assy Nummer. Hier eins von vor der Reinigung:
Ich werde es nochmal durchmessen. Sowohl am SoftROM unter den Pins als auch mal mit dem Oszi alle Daten und Adressleitungen.
Ok, das habe ich verstanden, hatte ich aus dem Datenblatt so nicht entnehmen können. Die Frage ist: wo kann der Fehler dann jetzt noch liegen? Ich habe die Pins schon mal fast alle durchgepiept, und nichts gefunden. Ich kann natürlich weitersuchen mit dem Oszi, nur die Frage ist: wonach...?
Also aus irgendeinem Grund ist CE2 high. Laut Datenblatt muss CE2 aber CE1 invertiert sein. Das klappt so natürlich nicht. Ich schlage vor das Signal an Pin 8 vom TTL abzugreifen und dann nach CE2 zu füttern. Ergibt das Sinn?
AHA! CE2 ist dauernd HIGH! Das darf ja nicht sein! Wie wird das denn generiert...? Der 6264 muss ja CE1 HIGH und CE2 low haben.
Ich habe mal A0 angeschaut. Manchmal gibt es für circa 1s Aktivität, dann dauer-HIGH. Manchmal gibt es weiter Aktivität:
Und gleiches bei D0 auf dem Datenbus. Manchmal kurz Aktivität, dann HIGH. Manchmal weiter so:
Also zunächst habe ich nochmal den SRAM getestet. Der ist fein:
Dann habe ich !CE1 getestet:
Das ist okay, da high == aus.
Dann !OE, das ist an, sollte aber okay sein laut detlef:
Und auch Phi2 mal am Pfostenstecker getestet. Sieht gut aus:
Kann ja eigentlich nur sein, dass der Bus durch das Modul blockiert wird. Also CE und/oder OE werden fehlerhafterwiese aktiviert, würde ich vermuten.
Gute Idee. Ich hänge mal das Scope dran.