Beitrag aus c't, Ausgabe 9/86

Solid-State-Disk
auch fr Atari ST

Schneller Nur-Lesespeicher am ROM-Port

Gregor von Stangen, Peter Glasmacher

Seit  der  Vorstellung der "EPROM-Bank fr Atari ST"  in  c't 1/86 
haben viele Anwender die Frage gestellt,  ob man die kleine  Karte 
nicht  auch  als  schnellen Floppy-Ersatz  nutzen  knne.  Es  ist 
schlielich  nicht jedermanns Sache,  Software fr  ROM-Module  zu 
entwickeln.  Verwendet man die EPROM-Bank jedoch als  "Halbleiter- 
Floppy", dann kann man jedes beliebige Programm ohne spezielle An- 
passung darauf unterbringen. Grund genug also, nach einer simplen, 
praktikablen Lsung zu suchen. Hier ist sie.

Im Unterschied zum ROM-Modul wird die "Solid-State-Diskette"  oder 
auch  "EPROM-Floppy" nach dem Installieren eines geeigneten  Trei-
berprogramms  wie ein gewhnliches Laufwerk vom  Rechner  bedient. 
Whrend  Programme  fr ein ROM-Modul in  dem  dafr  vorgesehenen 
Speicherbereich  lauffhig  und  nach  speziellen  Regeln   (siehe 
c't 1/86) programmiert sein mssen,  kann man von der EPROM-Floppy 
jede beliebige Datei wie von einer normalen Floppy laden.

Dem Nachteil,  da ein Programm zur Ausfhrung nach wie vor in den 
Arbeitsspeicher geladen werden mu, stehen also handfeste Vorteile 
gegenber:

- Jede Datei (bis maximal 128 KByte Umfang) kann auf der EPROM-
  Bank untergebracht werden.

- Die Dateien sind gegen Stromausfall, Rechnerabsturz,  versehent-
  liches Lschen absolut sicher geschtzt.

- Der Zugriff erfolgt blitzschnell, wie bei einer RAM-Disk 
  (Beispiel: 1st_WORD wird in rund zwei Sekunden geladen).

Zum Abspeichern der Dateien in den EPROMs gengt  Treiber-Software 
allein  leider nicht;  dafr bentigt man  ein  EPROM-Programmier-
gert. Geeignet ist der "PROMMER 520" aus c't 7/86, aber natrlich 
auch jedes andere Programmiergert,  das die 16-Bit-Programmierung 
untersttzt und sich am Atari ST betreiben lt.

Da  der  Inhalt dieser "Hard-Disk fr den kleinen  Mann"  nur  mit 
Hilfe der UV-Lampe gelscht werden kann, benutzt man sie tunlichst 
nur  fr solche Programme,  die vom Anwender nicht mehr  verndert 
werden  sollen.  Sie  eignet sich zum Beispiel  ausgezeichnet  fr 
Compiler und Interpreter,  soweit diese einen Umfang von 128 KByte 
nicht berschreiten,  also etwa fr den LOGO-Interpreter oder  das 
GfA-BASIC.  Man  kann aber auch ausgewachsene  Anwendungsprogramme 
wie  etwa  1st-WORD  darauf unterbringen,  wenn  diese  nicht  mit 
speziellen  Kopierschutztricks  an ihre  Master-Diskette  gekettet 
sind.


Organisieren :
 
Die  Datenorganisation  in  den EPROMs entspricht  der  auf  einer 
Diskette.  Sie haben richtig gelesen,  so richtig mit Verzeichnis, 
FAT und logischen Sektoren.  Aber keine Sorge: Die mssen Sie beim 
Herstellen  der EPROMs nicht selbst anlegen.  Es ist nicht  einmal 
ein spezielles Treiberprogramm (wie etwa PIP-EF bei unserer Solid- 
State-Floppy  fr ECB-Rechner) erforderlich.  Beim Atari  ST  geht 
alles viel einfacher.

Das  hngt  damit zusammen,  da der ST auch in  seiner  "kleinen" 
Version  gengend Arbeitsspeicher bietet,  um den gesamten  Inhalt 
der  EPROM-Diskette darin unterbringen zu knnen.  Dies  macht  es 
mglich,  zunchst einmal eine RAM-Disk im Speicher anzulegen,  in 
der  man dann in aller Ruhe den gewnschten Inhalt der  EPROM-Disk 
zusammenstellen kann. 

Das  erste  der abgedruckten  Programme,  ROMINIT  genannt,  macht 
nichts  weiter  als das:  Es erstellt eine einfache  RAM-Disk  mit 
einer Kapazitt von 128 KByte,  die fest als Laufwerk "D:" instal- 
liert wird (und angemeldet werden mu).  In  diesem Fall wurde auf 
alle  Feinheiten  der Implementierung  verzichtet,  die  virtuelle 
Disketten  aufweisen sollten (siehe "Noch 'ne RAM-Disk" in  dieser 
c't-Ausgabe).  Diese Spezial-RAM-Disk bernimmt lediglich die  Or- 
ganisation  der  Daten,  die  der  Benutzer  dort  hineinschreibt. 
Auerdem kann man auf diese Weise berprfen,  ob die  gewnschten 
Dateien   in   den  verfgbaren  Speicher   passen   und   korrekt 
funktionieren. 

Im   Fall  von  1st_WORD  beispielsweise  mu  die   entsprechende 
Resource-Datei  (1ST_WORD.RSC)  unbedingt mit auf  die  EPROM-Disk 
kopiert werden. Fr den Druckertreiber (1ST_PRNT) reicht der Platz 
jedoch  nicht  mehr aus.  Man kann also mit dem 1st_WORD  auf  der 
EPROM-Diskette "nur" Texte bearbeiten und auf der Diskette abspei-
chern; zum Ausdrucken mu das Textprogramm wieder von der normalen 
Diskette geladen werden.


Abspeichern :

Wenn Sie alle gewnschten Dateien in der RAM-Disk zusammengestellt 
haben,  kommt das zweite Programm zum Zuge:  ROMCOPY erstellt  aus 
dem Inhalt der RAM-Disk zwei 64 k-Byte groe Dateien und  schreibt 
diese  auf  die aktuelle Diskette.  Dabei darf es  sich  natrlich 
nicht um die RAM-Floppy "D:" handeln;  das Programm berprft  die 
Laufwerksauswahl und bricht ab, wenn dies der Fall ist. Die beiden 
Dateien  werden unter den Namen "ROMDISK1.DAT" und  "ROMDISK2.DAT" 
abgespeichert;  erstere  Datei  enthlt die Daten fr  den  Adre- 
bereich FA0000...FAFFFF, letztere fr den Bereich FB0000...FBFFFF. 


Programmieren :

Nun  aktivieren  Sie Ihr EPROM-Programmiergert  und  brennen  die 
beiden Binrdateien in vier EPROMs vom Typ 27256. (Kleinere EPROMs 
knnen nicht benutzt werden,  weil damit der Adressraum der EPROM-
Bank nicht zusammenhngend belegt wrde.) Zum Betrieb am Modulport 
gengen  brigens  Standard-EPROMs  mit  einer  Zugriffszeit   von 
250**ns.

Achten  Sie  darauf,   das  Programmiergert  im  16-Bit-Modus  zu 
betreiben. Beim "PROMMER 520" luft der Programmiervorgang etwa so 
ab:

- Funktion (l)oad aufrufen

- EPROM-Gre 27256 angeben

- EPROM-Nummer 0 und (u)pper data angeben

- Laufwerk und Dateinamen angeben, z.B. "A:ROMDISK1.DAT"

- Funktion (p)rog aufrufen

- EPROM-Typ und Vpp angeben

- EPROM einsetzen, <Return> drcken

Mit den aufgefhrten Parametern wird das EPROM fr die Position 4U 
gebrannt;  fr 4L geben Sie bitte ebenfalls EPROM-Nummer  0,  aber 
"(l)ower  data" an.  Entsprechend wird der Vorgang mit  der  Datei 
"ROMDISK2.DAT" wiederholt:  fr EPROM 3U geben Sie an EPROM-Nummer 
0, "(u)pper data", fr 3L EPROM-Nummer 0 und "(l)ower data".
Das wr's...


Aktivieren :

...noch  nicht ganz:  Da steckt die hoffnungsvoll  gebrannte  Nur-
Lese-Diskette nun im Modul-Port und harrt ihrer  Aktivierung.  Das 
Problem  ist:  wie bringe ich dem ST das Vorhandensein der  EPROMs 
bei?  Von Haus aus kennt TOS nur die ROM-Module,  die von den Ent-
wicklern  nicht als Massenspeicher,  sondern als  Programmspeicher 
vorgesehen wurden. Jetzt ist das dritte Programm an der Reihe.

"ROMDISK" sieht einem normalen RAM-Disk-Treiber sehr hnlich,  und 
das nicht zufllig.  Einmal im Speicher des Atari  verankert,  be-
dient er die EPROM-Diskette wie ein normales Laufwerk -- mit  zwei 
wesentlichen Unterschieden: Das Lesen erfolgt sehr viel schneller, 
und schreiben kann man berhaupt nicht. 

Letzteres  sorgt fr eine erhebliche Vereinfachung.  Versucht  der 
Benutzer einen Schreibzugriff, sollte das Programm an das TOS nach 
der Atari-Dokumentation eigentlich den Fehlercode -13 zurckgeben. 
Erstaunlicherweise reagiert das Betriebssystem darauf jedoch ber-
haupt nicht. Der Wert -1 veranlat aber eine Fehlermeldung, in der 
unter anderem vermutet wird,  da die Diskette vielleicht nicht im 
Laufwerk steckt. Ein bichen seltsam, aber immerhin...

Da man sich darauf verlassen kann,  da das TOS die Puffer, die es 
zum  Laden  eines Programms bentigt,  immer auf  gerade  Adressen 
legt,  lt sich zum Laden die schnellste Methode des  Datentrans-
fers verwenden: Mit jedem Befehl wird ein Langwort bertragen, bei 
jedem Schleifendurchlauf 16 Bytes "in einem Rutsch".

Den Treiber bringt man am besten im AUTO-Ordner unter.  Das  Lauf-
werk  wird beispielsweise als Drive "E:" angemeldet  (anschlieend 
"Arbeit sichern").  Bei jedem Kaltstart des Rechners wird dann die 
EPROM-Diskette automatisch installiert,  vorausgesetzt,  die  ent-
sprechend programmierte EPROM-Bank befindet sich im Modul-Port.


"AUTO"-Tips :

Noch  ein  paar  Worte  zu  residenten  Programmen:   Verschiedene 
Treiber,  Print-Spooler und hnliche Dienstprogramme werden in der 
Regel einmal geladen.  Der Einfachheit halber geschieht dies meist 
whrend des Boot-Vorgangs,  indem man die Programme, die man resi-
dent haben mchte, in den Auto-Folder der Boot-Diskette stellt. Da 
aber TOS die Programme einfach hintereinander ldt und im Speicher 
behlt,  sollte man sich schon einige Gedanken ber deren  Reihen-
folge machen.

Neben der Mglichkeit, da man Programme resident halten kann, ge-
stattet TOS auch noch, Programme aus dem Speicher zu entfernen.
Bei  dieser Funktion kennt das Betriebssystem jedoch  keine  Hemm-
ungen  und gibt den gesamten Speicher vom Beginn der  betreffenden 
Routine  bis  zum Anfang der  normalen  Transient-Area  frei.  Man 
stelle sich vor, was passiert, wenn man ein Programm aus der Mitte 
der Kette entfernen will:  Alle nachfolgenden Programme samt ihrer 
Datenbereiche sind dann futsch.

Demnach sollte man seinen Auto-Folder etwa in dieser Reihenfolge 
anlegen:

- alle nicht-residenten Autostart-Programme (Uhr stellen, 
  Morgenlied abspielen etc.)

- alle Einheitentreiber, und zwar interrupt-getriebene Routinen 
  wie Print-Spooler, RAM-Disk-Treiber, die EPROM-Diskette

- Kommando-Interpreter

Ein Programm wie der Kommando-Interpreter mu zwangslufig an  das 
Ende der Kette gestellt werden.  Irgendwann wird man sicher einmal 
den GEM-Desktop aktivieren.  Der Kommando-Interpreter sollte  dann 
korrekt  aus dem Speicher entfernt werden.  Liegt er in der  Mitte 
der Kette,  bleibt er im besten Fall als Mll im  Speicher.  Meist 
fhrt der Versuch,  das Programm zu entfernen,  jedoch zu diversen 
Bomben auf dem Bildschirm.

Die Reihenfolge der Programme im AUTO-Folder ist brigens  "histo-
risch" bedingt:  was zuerst hineingeschrieben wurde, wird auch zu-
erst geladen.  Das hat nichts mit der sortierten Directory-Anzeige 
des Desktop zu tun.  Um die Reihenfolge zu verndern, gibt es des-
halb nur einen praktikablen Weg:  Ordner vollstndig leeren und in 
der gewnschten Reihenfolge neu auffllen.

Ein  letzter  Punkt:  Versucht man  zweimal  hintereinander,  eine 
EPROM-Diskette  zu installieren,  fhrt dies (aus noch  nicht  ge-
klrter  Ursache)  zu einem  Systemabsturz.  Das  ROMDISK-Programm 
testet  daher,  ob bereits vorher eine EPROM-Diskette  installiert 
worden ist und terminiert sich in diesem Fall.

