1MByte mod für 512k SRAM upgrade von Bernd/Wolfram
1,
21MByte mod für 512k SRAM upgrade von Bernd/Wolfram
von Beetle » Mo 9. Jun 2008, 11:55
Hallo,
Ich hab da mal was gebastelt. Tuxie und Wolfram haben mir da wichtige Tips gegeben, auf die
Lösung bin ich dann spät nachts auch noch gekommen.
Um auch mal die wenige 1MByte Software nutzen zu können, habe ich die 512k SRAM
Erweiterung auf 1MB umgebaut.
Das müsste in dieser Form auch noch für die Erweiterung von Hias funktionieren, wo ein SRAM
in OS ROM Größe verwendet wird.
Benötigt wird: ein SRAM gleicher Bauform, ein UM-Schalter (also so ein 3 poliger), ein 7404 und
ein 7432. Ich habe F-Typen verwendet die ich einem PC Mainboard entlöten konnte.
Pin 22 des alten SRAMS wird von der Platine abgelötet und hochgebogen. Pin 22 des neuen
SRAMS wird ebenso hochgebogen. Dann kann das neue IC huckepack auf das erst gelötet werden.
PB1 der PIA aus dem Sockel biegen, ein Kabel an den mittleren Pin des Schalters legen. An einen
anderen Pin des Schalters ein Kabel zurück an die Stelle wo PB1 im Sockel steckte (bei der
Herale/Mega-Hz Platine ist ja das PB1 Lötpad). Den letzten Pin des Schalters verbinde mit
Pin 1 des 7404 und pin 2 des 7432.
Pin 2 des 7404 mit Pin 5 des 7432 verbinden. Dann ein Kabel von Pin 1 des 7432 zum Pin 4 des 7432.
Von dort auch ein Kabel zum Lötpad vom Pin 22 des alten SRAMs. Pin 3 des 7432 geht an den CS
Pin 22 von einem SRAM, Pin 6 des 7432 zum CS Pin 22 des anderen SRAM.
Mit dem Schalter kannst du dann zwischen 1088k ohne BASIC und dem 576k Mode mit BASIC
umschalten.
Läuft gut!
PS: Und die Brullwurfel Demo (ein 720k großes .xex) ist mit SIO2IDE Highspeed auch in 3:35 Minuten geladen.
Von Festplatte dauerts auch noch eine Minute (wegen entpacken).
von Bernd » Mo 9. Jun 2008, 12:57
Hallo Stefan,
gratuliere zur erfolgreichen 1MB Aufrüstung der 512k SRam Speichererweiterung.
Bei der Entwicklung hatte ich damals die 1MB verworfen. Es gibt bis auf sehr wenige Demos, eine Ramdisk und einigen Diskettenkopier-Programmen keine Anwendungen die auch 1MB unterstützen. Der zusätzliche Hardwareaufwand, ein 2tes GAL, ein 2tes SRAM und ein größere Platine hätten den Preis der Erweiterung nur verteuert. Mir war es wichtig kompatibel zur CompyShop und Rambo Erweiterung zu sein.
Für den Fall dass ich eine neue Speichererweiterung generiere, würde diese wie folgt aussehen:
256 Seiten a 16k = 4096 = 4MB.
Besonderheit: Der Zugriff auf die Bänke kann im Basic oder auch mit abgeschalteten Betriebssystem OHNE Absturz durchgeführt werden.
Die Schaltungsskizze ist schon seit langer Zeit fertig. Guss hatte mich da auf eine Möglichkeit hingewiesen......
Bernd
von tuxie » Mo 9. Jun 2008, 17:47
Hallo Stefan,
das muß ich mir mal mit einer Wahrheitstabelle durchdenken, wie du es jetzt gemacht hast. Denn mit dem Oder kann es irgendwie garnicht funzen. Oder ich habe einen denkfehler, naja ich werde es auch mal Testen, allerdings mit nem 2. GAL.
Tschau Ingo
von Beetle » Mo 9. Jun 2008, 20:41
Danke Bernd,
die beiden TTL Bausteine und der Schalter sind vom Aufwand her für ein solches Mod gut überschaubar. Der Kompromiss ist natürlich das verloren Basic im 1088k Mode.
Tuxie, Tatsache ist nun aber, das dein Vorschlag mit dem UND nicht funzte. Aus dem #atari chat kam der Vorschlag ein ODER zu nehmen, da der Chip selektiert sein müsste wenn PB1 oder CS der Erweiterung das so wollen. Schlussendlich funktioniert es ja nun

.
von tfhh » Mo 9. Jun 2008, 20:53
Moin,
Beetle hat geschrieben:Danke Bernd,
die beiden TTL Bausteine und der Schalter sind vom Aufwand her für ein solches Mod gut überschaubar. Der Kompromiss ist natürlich das verloren Basic im 1088k Mode.
Nur vom Verständnis her... was spricht dagegen, PB1 genauso zu maskieren wie PB7, was als /MAP-Signal nur geschaltet wird, wenn PB4+PB5 high (oder low? Gucke jetzt nicht extra nach, ihr wißt, was ich meine) sind?
Da das Atari Basic-ROM keinerlei Interrupt-Routinen bedient und/oder ausführt, sehe ich da kein Problem.
Gruß, Jürgen
von Mathy » Mo 9. Jun 2008, 20:59
Hallo Leute
Ich wundere mich jetzt auch wieso PB1 auf der alten Art und nicht nach "Mathy's 1MB XEGS" Art angeschlossen ist. Das ist doch gerade der Trick der Sache.
Tschüß
Mathy
von tuxie » Mo 9. Jun 2008, 21:40
Wie Stefan schon sagte, es handelt sich um eine Modifizierung der 512K SRAM Erweiterung. Und in dem GAL ist kein Platz mehr, da alle Pins belegt sind. Daher geht es nur durch einen extra GAL oder durch eine andere Logic.
Oder sehe ich jetzt was falsch?
Tschau Ingo
von Mathy » Mo 9. Jun 2008, 22:05
Hallo Ingo
tuxie hat geschrieben:Oder sehe ich jetzt was falsch?
So wie der Stefan das jetzt gemacht hat, passt es meines Erachtens nicht im Konzept der Erweiterung. Man kauft sich auch keinen Rolls-Royce um sich dann bei MediaMarkt ein Radio für 20 Euro zu besorgen.
Tschüß
Mathy
von Beetle » Mo 9. Jun 2008, 23:29
Tuxie sieht das schon richtig, Mathy. Es ist nur ein Mod, so billig wie möglich auch mal die beiden 1M Programme nutzen zu können.
Klar ist deine "1MB SIMM im XEGS"- Lösung eleganter und praktikabler. Aber ich hab nunmal kein XEGS, sondern die gennannte Erweiterung auf einem 1200XL Board.
Wenn mir wer erklärt, wie man das BASIC Bit trotzdem für BAISC nutzen kann, ohne ein XEGS in den 1250XLD einzubauen, nur voran.

Denn deine Methode Mathy, so muss ich zugeben, habe ich noch nicht verstanden. Irgendwo hören meine Logikkenntnisse auf.
Leider etwas zu früh

von Mathy » Mo 9. Jun 2008, 23:38
Hallo Stefan
Du brauchst keinen XEGS in deinem 1250XLD ein zu bauen. Eine Erweiterung sollte auch in anderen XL/XE Rechner laufen.
Beetle hat geschrieben:Denn deine Methode Mathy, so muss ich zugeben, habe ich noch nicht verstanden. Irgendwo hören meine Logikkenntnisse auf.
Kann ich dir auf der Fujiama erklären.
UPS, das ist ja schon in einem Monat. Vielleicht sollte ich schon mal mit den Vorbereitungen anfangen, damit ich dieses Mal auch alles dabei habe was ich brauche. Und vielleicht sollte ich vorher noch mal meinen Atari auspacken.

Tschüß
Mathy
von Beetle » Di 10. Jun 2008, 00:22
Ich komme leider nicht zur Fujiama.
von Mathy » Di 10. Jun 2008, 00:24
Hallo Stefan
Beetle hat geschrieben:Ich komme leider nicht zur Fujiama.
Wie denn, wo denn, was denn?
Tschüß
Mathy
von Bernd » Di 10. Jun 2008, 18:32
Beetle hat geschrieben:Ich komme leider nicht zur Fujiama.
Was ist dir dazwischengekommen??????
Bernd
von Cash » Di 10. Jun 2008, 20:15
Bernd hat geschrieben:Beetle hat geschrieben:Ich komme leider nicht zur Fujiama.
Was ist dir dazwischengekommen??????
Bernd
Ich glaube beetle ist zu einer Hochzeit eingeladen wenn ich mich recht erinnere..

von PacMan » Di 10. Jun 2008, 20:37
Hallo Mathy,
Dieses Thema interessiert bestimmt auch noch andere Leute. Vielleicht könntest Du mal einen Artikel zu Deiner Erweiterung schreiben.
Zu den wenigsten Erweiterungen gibt es einen Logik-Schaltplan. Und wo die Funktion mal genauer erklärt wird fällt mir jetzt auch nichts ein. Bei den Neuentwicklungen sind ja GALs verbaut. Da kann man sich leider auch keine Schaltlogik herleiten um daraus zu lernen.
Viele Grüße,
Steffen
von Beetle » Di 10. Jun 2008, 20:58
Hi
Cash hat recht, ich bin den Samstag auf einer Eheschliessungsfeier.
Mit meiner Frau, die Kinder sind bei Oma...

von Mathy » Di 10. Jun 2008, 23:50
Hallo Steffen
Wenn ich mich nicht irre, gab's schon einen Artikel zum meiner Erweiterung im ABBUC Magazin. Ich kann aber leider im Moment nicht finden in welches.
Tschüß
Mathy
von HiassofT » Mi 11. Jun 2008, 13:44
Hallo Jürgen!
tfhh hat geschrieben:Nur vom Verständnis her... was spricht dagegen, PB1 genauso zu maskieren wie PB7, was als /MAP-Signal nur geschaltet wird, wenn PB4+PB5 high (oder low? Gucke jetzt nicht extra nach, ihr wißt, was ich meine) sind?
Das ist grundsätzlich eine sehr gute Idee. Vor einiger Zeit hatte ich eine 1MB DRAM Erweiterung gebastelt bei der das so gelöst war. Sie war u.a. zwischen 1MB und 256k umschaltbar, im 1MB Modus waren Basic und Selftest deaktiviert, sobald PB4 oder PB5 auf Low waren.
Die Logik hat in ein 20V8 gepasst, mit einem extra Schalter wurde PB5 umgeschaltet: entweder als Adressleitung zum MUX (der PB5 Eingang am GAL wurde dann mit PB4 verbunden) oder als PB5 Signal zur Steuerung des Antic Zugriffes (die Adressleitung am Mux wurde dann auf GND gelegt).
Ich muss mal meine alten Unterlagen rauskramen und dann ggf. eine Anleitung dazu machen. Diese Erweiterung funktioniert aber nur mit XLs, da zur Erzeugung des automatischen Refreshes (CAS-before-RAS Refresh) ein Signal aus der Delay-Line verwendet wird. Bei Tests bin ich draufgekommen, dass die bisherigen Lösungen für CAS-before-RAS Refresh (einfach das HALT Signal mit in die CAS-Logik reinverknüpfen) nicht 100% korrekt ist und zu Timing-Problemen führen kann (manchen DRAMs ist das egal, aber etliche SIMMs die ich durchprobiert hatte reagierten darauf allergisch).
Durch die ganzen Probleme mit dem DRAM Refresh hatte ich dann nicht mehr viel Lust die Erweiterung auf anderen Ataris zu testen und so wurde die nächste Erweiterung eine mit SRAMs.
Bei der SRAM Logik hatte ich dann die diversen Umschalt-Varianten (Rambo, Atari-Mag, 512k) ins GAL integriert, gesteuert durch 2 extra Eingänge (anstatt der externen Schalter - dafür sind nun auch Konfigurationen wie Rambo/AtariMag einfacher möglich). Dadurch war dann kein Platz mehr für die Basic-Logik.
Bernds Erweiterung und meine sind übrigens fast identisch. Das kommt daher, daß wir beide parallel entwickelt haben und uns dabei regelmässig über den aktuellen Stand und Implementationsdetails (zB wie man den separaten Antic-Zugriff hinbekommt) ausgetauscht haben. Abgesehen von ein paar kleinen Details (bei Bernd sind die Config-Eingänge glaube ich Active-High, bei mir Active-Low und die interne Logik ist etwas anders strukturiert) ist das Endergebnis bei uns beiden das selbe geworden. Es gibt halt auch nicht viel mehr als die eine Möglichkeit eine SRAM-Erweiterung korrekt zu bauen :-)
so long,
Hias
von HiassofT » Mi 11. Jun 2008, 14:01
Hi Steffen!
PacMan hat geschrieben:Zu den wenigsten Erweiterungen gibt es einen Logik-Schaltplan. Und wo die Funktion mal genauer erklärt wird fällt mir jetzt auch nichts ein. Bei den Neuentwicklungen sind ja GALs verbaut. Da kann man sich leider auch keine Schaltlogik herleiten um daraus zu lernen.
Ich denke im Magazin war zu Bernds Erweiterung auch die GAL-Logik mit dabei (bin mir aber nicht 100% sicher).
Hier ist jedenfalls die aktuelle Version meiner GAL-Logik, wie schon geschrieben ist sie Bernds Erweiterung sehr ähnlich.
Noch 3 Hinweise dazu:
- Die beiden Pins NPHI2_IN (Pin1) und NPHI2_OUT (Pin 23) am Gal müssen miteinander verbunden werden.
- Bitte beachtet die Definition der Input/Outputs: viele Signale sind Active-Low, damit die Logik übersichtlicher wird (und ich intern mit Active-High Logik arbeiten kann) sind die I/Os explizit als Active-Low definiert. zB das "/CE" Signal: Durch Voranstellen des Schrägstriches wird der IO automatisch invertiert. Schreibe ich also CE = VCC (also quasi CE = HIGH, für "ja, Zugriff") liegt am Ausgang ein Low-Signal an.
- Vor kurzem hab' ich die Logik so abgeändert, daß das CE Signal zum SRAM auch mit PHI2 maskiert wird (die Zeile "CE = PHI2" war früher "CE = VCC"). Das sollte eigentlich nicht notwendig sein (immerhin werden ja schon /OE und /WE mit PHI2 und/oder PHI0 verknüpft), aber aus irgendeinem unerfindlichen Grund gibt's sonst Timing-Probleme (Absturz bei Numen) wenn man SRAMs von BSI verwendet.
Also, hier ist die komplette Logik:
- Code: Alles auswählen
;PALASM Design Description
;---------------------------------- Declaration Segment ------------
TITLE 512k SRAM extension for Atari XL
PATTERN
REVISION 1.2
AUTHOR Matthias Reichl
COMPANY HiassofT
DATE 02/03/08
CHIP ramdisk PALCE22V10
;SIGNATURE HIAS
;---------------------------------- PIN Declarations ---------------
; connect to NPHI2_OUT
PIN 1 NPHI2_IN COMBINATORIAL ; INPUT
; signals from CPU
PIN 2 A14 COMBINATORIAL ; INPUT
PIN 3 A15 COMBINATORIAL ; INPUT
PIN 4 HALT COMBINATORIAL ; INPUT
PIN 5 RW COMBINATORIAL ; INPUT
PIN 6 PHI2 COMBINATORIAL ; INPUT
; signals from PIA
PIN 7 PB4 COMBINATORIAL ; INPUT
PIN 8 PB5 COMBINATORIAL ; INPUT
PIN 9 PB7 COMBINATORIAL ; INPUT
; mode select input - active low!
PIN 10 /EN5 COMBINATORIAL ; INPUT
PIN 11 /EN7 COMBINATORIAL ; INPUT
;PIN 12 GND
; signal from CPU (used to shorten write cycles)
PIN 13 PHI0 COMBINATORIAL ; INPUT
; signal to MMU socket pin 16
PIN 14 /CASINH_OUT COMBINATORIAL ; OUTPUT
; signal to MMU pin 6
PIN 15 MAP COMBINATORIAL ; OUTPUT
; signal from MMU pin 16
PIN 16 /CASINH_IN COMBINATORIAL ; INPUT
; signals to RAM
PIN 17 /OE COMBINATORIAL ; OUTPUT
PIN 18 /CE COMBINATORIAL ; OUTPUT
PIN 19 /WE COMBINATORIAL ; OUTPUT
PIN 20 RA17 COMBINATORIAL ; OUTPUT
PIN 21 RA15 COMBINATORIAL ; OUTPUT
; leave unconnected!
PIN 22 RHALT REGISTERED ; OUTPUT
; connect to NPHI2_IN
PIN 23 NPHI2_OUT COMBINATORIAL ; OUTPUT
;PIN 24 VCC
; ramdisk modes (set by EN5 and EN7, active low!)
; /EN7 = 1 /EN5 = 1 : RD off
; /EN7 = 1 /EN5 = 0 : 256k Rambo style RD
; /EN7 = 0 /EN5 = 1 : 256k CompyShop ramdisk, separate ANTIC access
; /EN7 = 0 /EN5 = 0 : 512k ramdisk
; separate cpu access in compy shop mode
; or cpu/antic access in other modes
STRING CPU_ACCESS '((EN7 * /EN5 * /PB4 * RHALT) + (EN5 * /PB4))'
; separate antic access only available in compy shop mode
STRING ANTIC_ACCESS '(EN7 * /EN5 * /PB5 * /RHALT)'
;----------------------------------- Boolean Equation Segment ------
EQUATIONS
; negate phi2 for HALT register
NPHI2_OUT = /PHI2
; create a register for HALT, clocked by the falling edge of phi2
RHALT := HALT
RHALT.CLKF = NPHI2_IN
; check for extended RAM access
; SRAM signal timing:
; - CASINH is set as soon as extended RAM access is detected
; - CE is set in the second half of cycle (PHI2 = high)
; - read access: OE set in second half of cycle, WE cleared
; - write access: WE set when both PHI0 and PHI2 are high
; (slightly shortened cycle), OE cleared
IF /CASINH_IN * /A15 * A14 * (CPU_ACCESS + ANTIC_ACCESS) THEN
BEGIN
CE = PHI2
CASINH_OUT = VCC
IF RW THEN
BEGIN
OE = PHI2
WE = GND
END
ELSE
BEGIN
OE = GND
WE = PHI2 * PHI0
END
END
ELSE
BEGIN
CASINH_OUT = CASINH_IN
CE = GND
OE = GND
WE = GND
END
; disable selftest if EN7 and ramdisk enabled
IF EN7 * (/PB4 + (/PB5 * /EN5)) THEN
BEGIN
MAP = VCC
END
ELSE
BEGIN
MAP = PB7
END
; set RAM address line, depending on current mode settings
IF EN5 THEN
BEGIN
RA15 = PB5
END
ELSE
BEGIN
RA15 = GND
END
IF EN7 THEN
BEGIN
RA17 = PB7
END
ELSE
BEGIN
RA17 = GND
END
;----------------------------------- Simulation Segment ------------
SIMULATION
SETF PHI0 PHI2 /EN5 /EN7 PB4 PB5 PB7 /CASINH_IN
CHECK /CE /CASINH_OUT
; check halt register
SETF /HALT
CLOCKF NPHI2_IN
CHECK /RHALT
SETF HALT
CLOCKF NPHI2_IN
CHECK RHALT
; check PB5/PB7 address pass-through
SETF /EN5 /EN7 PB5 PB7
CHECK /RA15 /RA17
SETF EN5 /EN7 PB5 PB7
CHECK RA15 /RA17
SETF /EN5 EN7 PB5 PB7
CHECK /RA15 RA17
; check MAP pass-through
SETF /EN7 PB7
CHECK MAP
SETF /EN7 /PB7
CHECK /MAP
SETF /PB4 EN7 PB7
CHECK MAP
SETF /PB7
CHECK MAP
; check standard ram access
SETF /EN5 /EN7 PB4 PB5 PB7
SETF /A14 /A15
CHECK /CE /CASINH_OUT
SETF A14 /A15
CHECK /CE /CASINH_OUT
SETF /A14 A15
CHECK /CE /CASINH_OUT
SETF A14 A15
CHECK /CE /CASINH_OUT
; check 512k ramdisk access
SETF EN5 EN7 /PB4
SETF /A14 /A15
CHECK /CE /CASINH_OUT
SETF A14 /A15
CHECK CE CASINH_OUT
SETF /A14 A15
CHECK /CE /CASINH_OUT
SETF A14 A15
CHECK /CE /CASINH_OUT
; check 256k rambo mode
SETF EN5 /EN7 /PB4 PB5
SETF /A14 /A15
CHECK /CE /CASINH_OUT
SETF A14 /A15
CHECK CE CASINH_OUT
SETF /A14 A15
CHECK /CE /CASINH_OUT
SETF A14 A15
CHECK /CE /CASINH_OUT
; check 256k compy-shop mode
SETF /EN5 EN7 /PB4 /PB5 HALT
CLOCKF NPHI2_IN
SETF /A14 /A15
CHECK /CE /CASINH_OUT
SETF A14 /A15
CHECK CE CASINH_OUT
SETF /A14 A15
CHECK /CE /CASINH_OUT
SETF A14 A15
CHECK /CE /CASINH_OUT
; check CPU only access
SETF A14 /A15 /PB4 PB5 HALT
CLOCKF NPHI2_IN
CHECK CE CASINH_OUT
SETF PB4 /PB5
CHECK /CE /CASINH_OUT
SETF PB4 /PB5 /HALT
CLOCKF NPHI2_IN
CHECK CE CASINH_OUT
SETF /PB4 PB5
CHECK /CE /CASINH_OUT
; check CE, OE AND WE timing
SETF EN5 EN7 /PB4 PB5 PB7 A14 /A15 /PHI0 /PHI2 RW
CHECK /CE CASINH_OUT /OE /WE
; CE, OE depend on PHI2
SETF PHI2
CHECK CE CASINH_OUT OE /WE
; WE depends on PHI2 * PHI0
SETF /RW PHI0
CHECK CE CASINH_OUT /OE WE
;-------------------------------------------------------------------
so long,
Hias
von PacMan » Mi 11. Jun 2008, 15:37
Hallo Mathy,
Vielen Dank für die Infos. Dein Artikel zu den Vorzügen der XEGS-Erweiterung ist im Abbuc Magazin 59 (S.30,31) zu finden. Aber wenn es nur mit einem GAL geht ist mir sie Sache zu kompliziert. Einen GAL-Prommer will ich mir deswegen nicht extra kaufen.
Viele Grüße,
Steffen
1,
2