Ramdisk fr das Kassetten-Forth des Commodore C-16


Stichworte: Ramdisk, Commodore C-16/Plus4, Kassetten-Forth,
Datenabstraktion, Supertape


Abstract: Das beschriebene Programm simuliert ein Diskettenlaufwerk
im Speicher. Es entstand fr die Kassettenversion des volksforth fr
den Commodore C-16 und benutzt ein Speicherverfahren, daá normale
Forth-Quelltexte durch Verdichten aufeinanderfolgender Leerzeichen
auf ca. die H„lfte bis 1/3 komprimiert. Anhand des Programmes werden
die Konzepte von 'information hiding' und 'Datenabstraktion' erl„utert,
die eine Žnderung des Datenformats und somit eine leichte Anpassung an
spezifische Anforderungen erm”glichen.


Problemstellung:
Fr das - inzwischen als Testversion erh„ltliche - volksFORTH fr die
Rechner Commodore C-16,C-116 und Plus4 stellte sich folgendes Problem:
Da diese Rechner ca. 100-200 DM kosten, ein Diskettenlaufwerk aber gleich
300 DM h„tte eine nur mit Floppy lauff„hige Forth-Version den
Verbreitungsgrad dieser Sprache fr obengenannte Rechner stark
eingeschr„nkt. Wer kauft sich ein so teures Laufwerk, wenn er
vielleicht das Programm nur mal so 'irgendwo abgestaubt' hat.
Es erschien mir - als Autor der C-16-Version daher wnschenswert,
eine Kassettenversion zus„tzlich zu erstellen.

  Wie aber Forth von seiner traditionellen Disketten-Untersttzung
befreien? Mehrere Konzepte wurden angedacht:

 - eine 'Batch-Version', die - mittels externem Editor erstellte - Files
   kompiliert, h„tte Forth seines groáen Vorzugs der inkrementellen
   Programmentwicklung beraubt.
 - eine zweite Variante sah einen Sprachaufsatz vor, der ein einfaches
   Decompilieren des kompletten Quelltextes mit Kommentaren, Layout, etc.
   erm”glicht h„tte. Die daraus resultierende Arbeitsweise h„tte so
   ausgesehen, daá die Quelltexte im Direkt-Modus eingegeben werden
   und am Ende der Sitzung vom Decompiler auf ein einfaches
   Kassetten-File geschrieben wrden. Ein solcher Sprachaufsatz
   erschien mir allerdings als zu aufwendig und fehleranf„llig, als
   daá ich ihn mit meinen geringen Forth-Kenntnissen zuwege gebracht
   h„tte.
 - die dritte ( und klassische ) Variante benutzt eine	Ram-Disk,
   die mit den Load- und Save-Routinen des Betriebssystems am
   Anfang der Sitzung von Kassette geladen wird, anschlieáend
   von Forth aus wie ein physikalisches Laufwerk benutzt werden
   kann und am Ende komplett wieder zurckgeschrieben wird. Dieser
   Variante wurde der Vorzug gegeben, sie wird im folgenden beschrieben.

Spezielle Anforderungen an eine Ram-Disk fr Kassettenbetrieb:

Beim vorgestellten Problem mssen folgende Anforderungen befriedigt
werden:

- Mit dem vorhandenen Speicherplatz muá sparsam umgegangen werden,
  dahinter stehen Geschwindigkeits-Anforderungen jederzeit zurck.
- Die Ramdisk sollte Absturz fest sein und m”glichst das Forth
  berleben. D.h., daá sie mit vertretbarem Aufwand restauriert
  werden kann, wenn sie nicht allzu stark gesch„digt wurde,
  selbst wenn das Forth-System neu geladen wurde.
- Wnschenswert w„re, den Speicherbereich hardwarem„áig gegen
  fehlerhaftes šberschreiben zu sichern, was mit Bankswitching
  m”glich w„re.
- Es sollte eine schnelle Kassetten




