2MB Speichererweiterung

1, 2

2MB Speichererweiterung

von Bernd » Sa 26. Jul 2008, 19:07
Hallo,

nachdem wir zu dritt, Mathy, HardwareDoc und ich auf der Fuijama nach einer Lösung für das Problem der Selbsthaltung für PB0 + PB1 (Rom + Basic) gesucht hatten,
entwickelt sich diese zu einer echten großen Herausforderung. Selbst bei Benutzung nur von Phi0 kommt es zu abstürzen vom Bios. Was ich bereits ermitteln konnte: Die Pufferung (latchen) der beiden Signale muss vor dem aktivieren der Speichererweiterung erfolgen. Nur so ist sichergestellt dass es zur keiner Signaländerung kommen kann. Das Latch muss den letzten Dateninhalt besitzen. Eine Idee dazu habe ich schon jedoch wird der Hardwareaufwand immer grösser. Jetzt verstehe ich auch warum es KEINE ECHTE 2MB Erweiterung überhaupt für den Atari gibt. Die ich bislang gesehen haben schalten automatisch das Basic aus und setzten immer das ROM auf ein.

Ist vielleicht jemanden eine funktionierende 2MB Erweiterung bekannt?


Bernd

PS: Die 1MB von Satantronic kenne ich schon

von Mathy » Sa 26. Jul 2008, 19:21
Hallo Bernd

Was ich nicht ganz kapiere, ist das meine 1MB Erweiterung im XEGS funktioniert, obwohl ich PB0, PB1, PB6 und PB7 latche (oder eigentlich "flipfloppe") aber es bei deiner Erweiterung mit nur ein gelätchtes Signal schief geht. Ich muß aber dazu sagen, das ich kein GAL benutze, sondern 74LSnochwas Bauteile.

Tschüß

Mathy

von tuxie » Sa 26. Jul 2008, 20:57
Hi Mathy,

also bei der 1MB wird ja nur das Basic abgeschalten was nicht ganz so schlimm ist. Schlimmer ist das abschalten des OS was abgefangeb werden muß und gehandelt. Daher ist eine 1MB erweiterung nicht das große Problem.

Cu

von Mathy » Sa 26. Jul 2008, 23:05
Hallo Bernd

Das gilt aber nur, wenn man keinen separaten ANTIC Zugriff drin hat. In meiner Erweiterung ist aber der separater ANTIC Zugriff drin. (Wollte ich unbedingt) Bei mir wird also auch der OS RAM/ROM Bit mit eingefroren. Funktioniert wunderbar. Ich kann sogar TurboBASIC laden von der RAMdisk. Der Rechner stürzt auch nicht ab, wenn ich nachher TurboBASIC benutze.

Tschüß

Mathy

von Bernd » So 27. Jul 2008, 00:13
Mathy hat geschrieben:Hallo Bernd

Das gilt aber nur, wenn man keinen separaten ANTIC Zugriff drin hat. In meiner Erweiterung ist aber der separater ANTIC Zugriff drin. (Wollte ich unbedingt) Bei mir wird also auch der OS RAM/ROM Bit mit eingefroren. Funktioniert wunderbar. Ich kann sogar TurboBASIC laden von der RAMdisk. Der Rechner stürzt auch nicht ab, wenn ich nachher TurboBASIC benutze.

Tschüß

Mathy


Hallo Mathy,

du meinst sicherlich CU....und nicht mich....

Was das Latchen angeht sind TTL´s sehr gutmütig zu den Signalverläufen. Bei den GAL´s wird sofort jede Veränderung des Eingangspegel mit der Logik beantwortet und, so wie es aussieht, leider viel zu schnell. Da hilft nur ein Abgriff parallel zur Quelle. Für die Umsetzung brauche ich jetzt noch ein drittes GAL.

Viele Grüße,
Bernd

von Mathy » So 27. Jul 2008, 00:23
Hallo Bernd

Ich hab nicht richtig hingeguckt und irgendwie gedacht, Du werst es.

Man kann so ein GAL wohl nicht mitteilen es soll noch etwas warten? Oder zuerst den Systemtakt negieren und dann erst zum einfrieren benutzen? Die Flanke an der eingefroren wird, kommt so ja eine halbe Fase später.

Tschüß

Mathy

von Bernd » So 27. Jul 2008, 09:20
Mathy hat geschrieben:Hallo Bernd

Ich hab nicht richtig hingeguckt und irgendwie gedacht, Du werst es.

Man kann so ein GAL wohl nicht mitteilen es soll noch etwas warten? Oder zuerst den Systemtakt negieren und dann erst zum einfrieren benutzen? Die Flanke an der eingefroren wird, kommt so ja eine halbe Fase später.

Tschüß

Mathy



Hi Mathy,

ich habe alle Variationen auch die mit negierter Flanke schon ausprobiert. Ein Zeitglied besitzt so ein GAL leider nicht. Ich sehe nur noch eine Möglichkeit auf Bit4 parallel zur Pia zu reagieren. Das GAL ist viel schneller und kann so die Ausgänge von PB0 und PB1 bereits vor der nächsten Änderung einfrieren. Gelöst wird die Schaltung wenn PB4 auf "1" springt.

Tschau,
Bernd

von Yellow_Man » So 27. Jul 2008, 19:49
Hallo Hardwarebastler,

ich habe hier mal einige "Denkanstöße".

Da ich ja auch nur (wie Walter so schön sagte) mit Legosteinen bastle, bitte nicht gleich meckern.

1. Es gab mal eine Erwiterung vom Irata-Verlag für den PBI des XL mit 512 Kb. Diese hatten 2 Freunde von mir damals. Die Erweiterung funktionierte einwandfrei. Fragt mich nun nicht welche Bit's sie genommen hat. Jedenfalls lies einer der Beiden die Erwiterung auf 1MB aufstocken. Danach lief nichts mehr und Irata war Pleite. Also hatten die auch schon Schwierigkeiten.

2. Die Adr. $D301 PORTB steuert die Erweiterung im XL/XE, beim 400/800 liest sie dei Daten der Joy 3 und 4 richtig? Also gibt es theoretisch nur 8 Bits (0-7) für die Adressierung.
Was ganz Verrücktes. Kann man nicht einen zweiten 6520 (PIA) einbauen und hier die $D301 (Im zweiten) mitbenutzen. Hätte man dann nicht theoretisch 4 MB??

Gruß,
Yellow_Man

von Mathy » So 27. Jul 2008, 20:37
Hallo Dirk

Eine PBI-Speichererweiterung währe super. Nur ist es nicht ganz einfach sie so machen, das andere PBI-Geräte dann auch noch benutzt werden können. Wie es mit den Irata-Sachen aussieht weiss ich nicht, aber alles was de ARGS damals entwickelt hat, war definitief nicht kompatibel zu anderen PBI-Sachen.

Ein anderes "Problem" währe, das man nur ein 256 Byte großes "Venster" hat am PB. Also müßte man die Speichererweiterung in 256 Byte "Bänke" unterverteilen. Bei 65536 Bänke x 256 Byte hat man dann aber schon 16MB.

'ne zweite PIA währe schön, aber an einer PIA ist ziemlich viel dran was man nicht braucht (in diesem Fall). Besser währe da ein Latch (hab' ich mir sagen lassen). Wenn man aber 'ne zweite Adresse benutzt, ergibt das 8 Bytes die man nutzen könnte. Aus Kompatibilitätsgründen (wenn man $D301+(4.x) benutzt), würde ich die Bits 4 und 5 der neuen Adresse nicht benutzen. Bleiben 6 Bits. Plus den 6 Bits die ich sowieso schon benutze währen 12 Bits. Oder 2 hoch 12 Bänke zu je 16kB. Macht 4096 Bänke x 16 kB gleich 65536 kB. Oder 64MB.

Bevor hier jetzt die Realistiker alle schreiben: "Was soll man mit soviel Speicherplatz?", sollte ich vielleicht sagen, das es sich hierbei nur um die Theorie geht. Also spart euch die Mühe.

Tschüß

Mathy

von GoodByteXL » Mo 28. Jul 2008, 15:21
Hallo Dirk & Co.!

Also, das Thema Speicher ist ja immer noch brandheiß ...

Auf der Fujiama wurde fleißig daran gewerkelt.

Selber habe ich in meinem langen ATARI-Leben nur wenige Speichererweiterungen über 256 MB persönlich erlebt, die ohne Probleme und fehlerfrei liefen.

Newell 1 & 4 MB im 800XL (NTSC)

Scott Petersons Eigenbau für 130XE (mit 16 DRAMS)

MIO von ICD.

Selber habe ich mit SIPPs und SIMMs experimentiert, aber keine stabilen Ergebnisse erreicht. Es waren wohl immer Timing-Probleme.

Dazu kommt, dass sich XL- und XE-Boards der verschiedenen Revisionen wohl auch nicht exakt gleich verhalten.

Den Sinn (außer das hingefummelt zu kriegen) im Zeitalter von schnellen externen Massenspeichern am 8-Bit-ATARI sollte man hier nicht hinterfragen.

Gruß

Walter

von Bernd » Di 29. Jul 2008, 17:56
GoodByteXL hat geschrieben:Hallo Dirk & Co.!

Also, das Thema Speicher ist ja immer noch brandheiß ...

Auf der Fujiama wurde fleißig daran gewerkelt.

Selber habe ich in meinem langen ATARI-Leben nur wenige Speichererweiterungen über 256 MB persönlich erlebt, die ohne Probleme und fehlerfrei liefen.

Newell 1 & 4 MB im 800XL (NTSC)

Scott Petersons Eigenbau für 130XE (mit 16 DRAMS)

MIO von ICD.

Selber habe ich mit SIPPs und SIMMs experimentiert, aber keine stabilen Ergebnisse erreicht. Es waren wohl immer Timing-Probleme.

Dazu kommt, dass sich XL- und XE-Boards der verschiedenen Revisionen wohl auch nicht exakt gleich verhalten.

Den Sinn (außer das hingefummelt zu kriegen) im Zeitalter von schnellen externen Massenspeichern am 8-Bit-ATARI sollte man hier nicht hinterfragen.

Gruß

Walter


Hallo Walter,

eine stabile und funktionsfähige 512k SRam Erweiterung gibt es schon. Die läuft in allen XL/XE Rechnern und sogar in einer XEG´s.
Auch im 1200XL rennt das Teil ohne Probleme. Schau mal hier.

Viele Grüße,
Bernd

von GoodByteXL » Mi 30. Jul 2008, 18:16
Yep, Bernd, das weiß ich, habe es aber noch nicht persönlich erlebt (damit gearbeitet).

Vielleicht habe ich nach der Games Convention dafür mal Zeit. Gehört habe ich allerdings, dass dann nicht mehr alle Module laufen sollen und einige Programme damit nicht funzen sollen.

Bin schon länger an einem (einfachen) Konzept zum pimpen eines 600XL dran, den ich für das Wohnmobil nutzen will. 64+min256K (CompyShop), internes SIO2SD und Akkus mit Ladegerät und Anschluss für 12 Volt im Auto.

von Bernd » Mi 30. Jul 2008, 22:44
GoodByteXL hat geschrieben:Gehört habe ich allerdings, dass dann nicht mehr alle Module laufen sollen und einige Programme damit nicht funzen sollen.


Hallo Walter,

bislang sind mir keinerlei Probleme mit nicht laufenden Programmen die die Speichererweiterung nutzen bekannt.
Es liegt auch daran dass sich die Erweiterung auf 256k CompyShop oder 256k Rambo umschalten lässt.
Eine davon passt immer.

Viele Grüße,
Bernd

von Bernd » Do 31. Jul 2008, 13:13
Hallo zusammen,
so etwas verrücktes!
Ich habe gerade ein Oszi an PB4 angeschlossen. Der Speichertest läuft ohne Rechnerverabschiedung durch........
Scheinbar reicht die kleine Kapazität im Abtastkopf schon aus um kurze Spikes zu unterdrücken. Einen Impuls von 1,8V konnte ich aber dennoch messen.

Der alte PIA Baustein ist die Fehlerquelle. Wird der Port neu beschrieben so kann sich auch der nichtangesteuerte Ausgang kurzfristig richtig 5V begeben.
Alte TTL-Bausteine reagieren im Gegensatz zu GALs recht träge auf sofortige Änderungen.
Dies ist der Grund weshalb Mathy in seiner XEGs Speichererweiterung keine Probleme damit hat.

Mal sehen was sich da noch machen lässt, meine Versuche gehen weiter....

Tschau,
Bernd

von Beetle » Do 31. Jul 2008, 18:00
Dann mach doch einfach kleine Kondensatoren an die fraglichen Portbits bzw. GAL Eingänge, oder ist das nun zu einfach?

von Bernd » Do 31. Jul 2008, 19:53
Beetle hat geschrieben:Dann mach doch einfach kleine Kondensatoren an die fraglichen Portbits bzw. GAL Eingänge, oder ist das nun zu einfach?


Hallo Beetle,
den Kondensator habe ich ausprobiert aber leider geht es nicht. Das Signal wird zu lange gepuffert und verursacht einen Speicherfehler.
Auch eine parallele Löschdiode hilft da nicht weiter. Das Zeitfenster mit dem passiven Bauteil zu treffen ist zu gering.

Hier meine ursprüngliche Idee des Latchens.

TAKT = PHI0 & PB4;

PB0OUT := PB0IN;
PB1OUT := PB1IN;

Mit Phi1 läuft es überhaupt nicht.

Was macht die Schaltung: Ist PB4 auf "High" wird der PHI0 Takt zum Latchen der nachfolgenden Signale verwendet.
Geht PB4 auf "0" (Speichererweiterung EIN) wird der Takt angehalten.

Viele Grüße,
Bernd

von Bernd » So 3. Aug 2008, 01:20
Hallo erstmal,

die 2MB Speichererweiterung funktioniert endlich. Ein Latch parallel zum PIA sorgt für ein stabiles PB4 Signal. Beim Beschreiben von $D301 wird nicht nur das PIA sonder auch ein GAL-Ausgang gesetzt.
Dank der Erfahrung aus der Modultechnik war es doch einfacher als ich es dachte. Die Erweiterung besteht aus 3 GALs und 4 Speicherbausteinen. Beim Einschalten gibt es noch eine Macke. Ich werde die Schaltung mit dem Resetsignal des Atari´s koppeln dann sollte alles behoben sein. Anschließend fehlt noch ein Dauertest und einige Logikoptimierungen in 2 GALs..

Schönes Wochenende euch allen,
Bernd

von GoodByteXL » So 3. Aug 2008, 08:53
Hey Bernd!

Klasse!

Und wenn die letzten Details geklärt sind, was ist der nächste Schritt auf der nach oben offenen "Bernd-Skala" für XL-Erweiterungen?

Jetzt bräuchte man noch Software, um das zu nutzen. Ich meine natürlich Anwendersoftware....

Movies ?

von HiassofT » So 3. Aug 2008, 15:30
Hallo Bernd!

Ich hab' noch eine Idee, wie es vielleicht noch etwas einfacher gehen kann:

Mit der ursprünglichen Logik "TAKT = PHI0 & PB4" gibt's das Problem, daß evtl. öfters das Register getaktet wird als Du möchtest (das Register im GAL wird ja durch eine steigende Flanke am Taktsignal gesetzt).

Sicherer wäre es, den genauen Zeitpunkt zu finden bei der das Register beschrieben werden soll (zB hier bei der steigenden Flanke von PHI0), einen Edge-Detektor zu bauen, der nur bei der Flanke ein Signal liefert und das dann mit PB4 zu verknüpfen. Glücklicherweise geht so ein Edge-Detektor recht einfach (hier für die steigende Flanke von PHI0).

PHI0 in einen Inverter schicken, ergibt IPHI0 (mit einer kleinen Verzögerung). Am besten, Du machst das mit einem 74LSxx oder spendierst einen eigenen IPHI0 Ausgang und Eingang, ansonsten wird Dir der GAL Assembler die Logik wegoptimieren (die Verzögerung des Signals ist hier wichtig).

Im GAL (oder auch wieder mit einem 74LSxx) bastelst Du Dir nun den Edge-Detektor ganz einfach als (PHI0 & IPHI0). Für die fallende Flanke geht's analog mit (!PHI0 & !IPHI0).

Anschaulicher ist's wenn man sich das Zeit-Diagramm ansieht:
Code: Alles auswählen
             +------+      +------+
 PHI0        |      |      |      |
        -----+      +------+      +-----

        ------+      +------+      +----
IPHI0         |      |      |      |
              +------+      +------+

             ++            ++
 TAKT        ||            ||
        -----++------------++-----------


Den Zeitpunkt, wo Du den Zustand der PIA Pins sampelst musst Du natürlich auch so wählen, daß sich die PBx da gerade nicht ändern. Leider gibt das Datenblatt des 6520 dazu nicht viel her, dort steht nur, daß bei der 2MHz Version maximal 0.5µS später (also genau zum Beginn des nächsten Takt-Zyklus) die Ausgänge stabil sind.

Versuch's mal mit der fallenden Flanke von PHI2 (dann wird aber die Bankumschaltung erst einen Zyklus später aktiv), mit der steigenden Flanke von PHI0 ist's recht knapp vom Timing (der internen RAM-Ansteuerung) her, evtl. könnte es sich aber dennoch ausgehen, daß der PIA seine Signale da schon stabil hat und das Signal für die interne RAM-Ansteuerung noch nicht zu spät ist.

so long,

Hias

von Bernd » So 3. Aug 2008, 18:48
Hallo Hias,

Danke für deinen Schaltungsvorschlag. Dadurch bin ich auf folgende Verknüpfung gekommen deren Ergebnis sowas wie ein Edge-Detektor sein könnte und ohne weitere Hardware auskommt.
TAKT = PHI0 & /PHI2 & PB4;

PHI0 ist das erste Signal, das auf High wechselt, gefolgt von PHI2. Durch das Negieren von PHI2 dürfte nur noch ein kleiner Inpuls übrig bleiben.

Einige Leitungen muss ich noch verbinden anschließend Teste ich die neue Verknüpfung mit dem Oszi.

Nochmals Danke für die Hilfe,
Bernd
1, 2