1MByte mod für 512k SRAM upgrade von Bernd/Wolfram

1, 2

von Mathy » Mi 11. Jun 2008, 20:04
Hallo Steffen

Schau doch mal auf meiner Internetseite. Das funktioniert auch mit altmodischen IC's.

Tschüß

Mathy

von GoodByteXL » Mi 11. Jun 2008, 20:51
Hey Mathy!

Wenn man das versucht erscheint folgendes

Forbidden

You don't have permission to access /memory_expansion/The slightly different memory.htm on this server.

von Beetle » Mi 11. Jun 2008, 21:05
Mathy, du bist doch MyDOS-Kenner

Ich bekomme die RD unter MyDOS nicht eingerichtet, es erkennt zwar die RD und fragt ob es die Standardeinstellungen für 1024k nutzen soll, aber egal, ob ich die nun nehme oder die 64 bytes lange Pagesequenz von Hand eingebe (gefolgt von 0):
Die Ramdisk hat unter MyDOS 4.50 8170 Sektoren von denen sich evtl das erste Viertel beschreiben lässt, dann gibts Error 137 oder ähnlich.
Meine 1,44MB Floppy hat 5760 DD Sektoren, zeigt MyDOS die RD immer als SD Sektoren an? Oder kommt MyDOS erst ab einer bestimmten Version mit derartigen RDs klar?

Die Ramdisk an sich sollte okay sein, RealDOS hat keine Probleme, Brullwurfel Demo läuft fehlerfrei, und Numen auch, egal, in welches Viertel der RD ich es laden lasse.

Am liebsten hätte ich eine Pagesequenz, die mir die Standard-130XE Bänke und die von 320k Demos benutzten Bänke frei lässt. So machen derartige Programme die RD unter DOS nicht leer.

Gruss,
Stefan

von Mathy » Mi 11. Jun 2008, 21:08
Hallo Leute

@Walter: Jetzt sollte es funktionieren. Wenn nicht, dann bitte nochmal melden.

@Beetle: ich melde ich zum Thema MyDOS später heuteabend nochmal.

Tschüß

Mathy

von tfhh » Mi 11. Jun 2008, 21:33
Moin Hias,

HiassofT hat geschrieben: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).

Erstmal Danke für Deine Ausführungen, sehr interessant!

Wofür wurde das "Umbiegen" von PB5 gemacht - welchen tieferen Sinn hatte es? Es sollte doch im Interesse sein, möglichst nahe am 130 XE "Original" zu bleiben, und die differenzielle Möglichkeit, CPU und/oder Antic auf das Zusatz-RAM zugreifen zu lassen, ist ja auch eine feine Sache.

HiassofT hat geschrieben: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).

Diese Unterlagen würden mich auch interessieren, da ja leider leider die Seite von Bernd Pahl auf einmal verschwunden war und ich kein lokales BackUp habe (hat jemand die Seite komplett gesichert?).

Ich habe ganz aktuell auch ein wenig gebastelt und die gesamte "Compy-Shop" TTL-Geschichte in ein 16V8 gepackt, was im 800XE/130XE als Ersatz für CO25953 herhalten kann.

Bei den Tests dazu habe ich diverse "größere" RAMs verwendet, 414256er in ZIP/DIP Bauform und ein paar 1 MByte SIMMs vom PC. Es liefen nur sehr, sehr wenige RAMs stabil, die meisten bestehen Numen oder MEMDRV.COM nicht :-(

Mangels Zeit - das ewige Problem - habe ich da bisher nicht weiter geforscht. Die meisten sagen ja sowieso, laß das, nimm SRAMs... daher wurstele ich mal im Stillen weiter :->

Gruß, Jürgen

von Mathy » Mi 11. Jun 2008, 22:52
Hallo Stefan

MyDOS hat leider einen Fehler wenn's um die Erkennung von 1MB Speichererweiterungen geht. Der Fehler ist wenn ich mich recht entsinnen die Folge eines Denkfehlers den Bob Puff unterlaufen ist. Deswegen gibt es auch die Sonderversion von MyDOS für die Newell 1MB Erweiterung.

Richtig gelösst, wird das Problem erst in MyDOS 4.55. Diese Version ist noch nicht auf meiner MyDOS Page. Du könntest aber MyRD2 mal ausprobieren. Ich bin mir nicht mehr sicher, ob es schon mit 4.53 funktioniert.

Bei MyDOS ist die RAMdisk immer in SD. Bei nur 64kB macht DD keinen Sinn, da die Directorysektoren ausserhalb der RAMdisk fallen würden.

Leider habe ich in den letzten zwei Jahren wenig am Atari gemacht. Deswegen hatte ich auch nicht mehr soviel Kontakt mit Lee Barnes, der MyDOS bearbeiten wollte. Dazu kommt noch, das der Lee gesundheitlich nicht mehr ganz 100%ig ist.

Tschüß

Mathy

von PacMan » Mi 11. Jun 2008, 23:03
Hallo Mathy,

Das sind die Infos die ich gesucht habe. Sehr interessant - Danke Dir !

Viele Grüße,
Steffen

von HiassofT » Mi 11. Jun 2008, 23:58
Hi Jürgen!

tfhh hat geschrieben:Wofür wurde das "Umbiegen" von PB5 gemacht - welchen tieferen Sinn hatte es? Es sollte doch im Interesse sein, möglichst nahe am 130 XE "Original" zu bleiben, und die differenzielle Möglichkeit, CPU und/oder Antic auf das Zusatz-RAM zugreifen zu lassen, ist ja auch eine feine Sache.

Das hat mehrere Gründe: Zum einen erhält man durch PB5 einen weiteren Pin als Adressleitung, zum anderen gibt's einige Erweiterungen (zB die Atari Magazin Erweiterung), die PB2-3 und PB5-6 benutzt. Dadurch kann die SRAM Erweiterung kompatibel dazu geschaltet werden.

In einem eigenen Modus unterstützt sie natürlich auch PB5 für den separaten Antic-Zugriff, aber der wird ohnehin kaum von Programmen verwendet.

Die Idee mit dem separaten Antic Zugriff war zwar schon ganz gut, aber die Umsetzung leider etwas holprig. Es wäre besser gewesen, wenn es nicht nur das PB5 Bit gegeben hätte, sondern ein separates Register, sozusagen mit dem PB5 Bit plus eigenem Bank-Register für den Antic. Dann hätte man wirklich unabhängig für CPU und Antic die Bank-Nummer bzw. den Zugriff auf standard/erweitertes RAM steuern können. zB folgendermassen:

Antic greift auf Bank 1 zu während die CPU die neuen Bilddaten in Bank 2 aufbaut. Danach wird umgeschaltet und Antic stellt Bank 2 dar.

Das wäre viel flexibler gewesen, aber natürlich hätte sich das nicht mehr nur mit den freien Bits in der PIA machen lassen.

Diese Unterlagen würden mich auch interessieren, da ja leider leider die Seite von Bernd Pahl auf einmal verschwunden war und ich kein lokales BackUp habe (hat jemand die Seite komplett gesichert?).

Leider hab' ich auch keine Sicherung von Bernhard Pahls Seite, aber ich habe mal ein wenig in meinen Unterlagen gekramt.

Ich bin mir nicht ganz sicher, ob das wirklich die letzte Version war, aber hier mal die wichtigsten Punkte:

- Das HALT Signal (für den separaten Antic Zugriff) muss mit der fallenden Flanke von PHI2 in ein Register übernommen werden. Siehe zB die Logik der SRAM Erweiterung, bei der DRAM Erweiterung habe ich dafür noch einen Inverter (LS04) und ein Flip-Flop (LS74) verwendet.

- Nachdem man A15, A14 und PB4 (bzw. plus PB5 und das registered Halt Signal) miteinander verknüpft hat, muss das Ergebnis gelatcht werden. Genauso wie im Atari das Cas-Inhibit Signal mit dem LS375 gelatcht wird. Ich habe dafür einfach einen freien Teil des LS375 im Atari missbraucht. Das gelatchte Signal kann dann von der weiteren Logik verwendet werden um das CAS-Signal zum internen RAM und zum erweiterten RAM zu schalten. Der Grund für das Latch ist folgender: im XL geht das CAS Signal zeitlich über den CPU-Zyklus hinaus. Latcht man nicht, wird am Ende des DRAM-Zugriffes ggf. kurz das falsche RAM aktiviert und es gibt Timing Fehler (das alte Problem der AtariMagazin Erweiterung...).

- Zur Generierung des CAS-before-RAS Refresh habe ich im GAL folgendes Hilfssignal generiert: CBREF = REF * /PHI2 * /D440. D440 ist der Pin 8 von der Delay Line im 800XL (U29). REF ist hier das Invertierte /REF Signal vom Antic (also sozusagen / /REF). Ich hatte damals mit einem kleinen Programm das RAM Zugriffs Timing simuliert und bin dann genau auf diese Kombination gekommen.

- Der GAL Code zur Generierung der CAS-Signale sieht nun wie folgt aus (achtung: CAS_IN, CAS_MAIN, und CAS_BANK sind active low definiert, werden also automatisch invertiert!):
Code: Alles auswählen
IF LACCESS THEN
  BEGIN
        CAS_BANK = CAS_IN + CBRREF
        CAS_MAIN = GND
  END
ELSE
  BEGIN
        CAS_BANK = CBRREF
        CAS_MAIN = CAS_IN
  END


Ich bin jetzt gerade etwas zu müde die Active-Low Signale mit den De Morganschen Regeln umzudrehen, aber ich glaube das schaffst Du auch selber. Falls nicht, gib Bescheid, wenn ich wieder munterer bin ist's kein Problem für mich :-)

so long,

Hias

von Beetle » Do 12. Jun 2008, 01:52
Ich hab das MyDOS derweil hinbekommen.

Auf Mathys Seite gabe folgenden Test zu finden:
Code: Alles auswählen
 
MyDOS will correctly store the proper banking bytes
into the banking bytes tables, but then MyDOS will
mangle those bytes such that they don't work in BASIC,
as well as the other situations outlined above.
Here is the offending code which may vary somewhat
both in location and content depending on the exact
version you are dealing with:

LDA $D301   ;0C0C AD 01 D3
ORA #$1C   ;0C0F 09 1C
STA $31      ;0C11 85 31
ORA #$1C   ;0C13 09 1C
AND $0BBA,Y   ;0C15 39 BA 0B
STA $D301   ;0C18 8D 01 D3

   The offensive parts are the logic OR operations
and the AND operation as well.  To correct, substitute
NOP for the ORs and a LDA for the AND.  The patched
code looks like this:

LDA $D301   ;0C0C AD 01 D3
NOP      ;0C0F EA
NOP      ;0C10 EA
STA $31      ;0C11 85 31
NOP      ;0C13 EA
NOP      ;0C14 EA
LDA $0BBA,Y   ;0C15 B9 BA 0B
STA $D301   ;0C18 8D 01 D3


Das hab ich gemacht, dann die Pagesequenz für 1024k von Hand eingegeben und den Bereich nochmals kontrolliert.
Anstelle des NOP an 0$C13 hatte sich wieder was verändert. Ich hab den Wert $EA nochmals reingeschrieben und mein DOS gespeichert.

Schwere Geburt. Aber nu gehts.
Mann, passt da was rein! :-)
1, 2