Es ist vollbracht !

   BasiCode-3 für Mallard Basic auf Amstrad PCW / Schneider JOYCE  

 

Im vergangenen Oktober konnte ich auf dem Ittenbacher Klubtreffen zum ersten Mal an einem realen JOYCE in die Tasten hauen - selbst habe ich nach wie vor nur einen virtuellen:

John Elliotts Emulator [1] für MS Windows. Wenigstens habe ich inzwischen einen transportablen JOYCE, indem ich sehr günstig ein gebrauchtes Notebook ergattern konnte und auf diesem die Emulation (nicht nur des JOYCE) funktioniert. Nun kann ich endlich auch mit Computer und nicht nur mit Papier zu Klubtreffen anreisen, ich bin nicht motorisiert, da sind dem Gepäck Grenzen gesetzt ...

Auf dem Treffen justierte ich an der realen Hard ware das Zeitnehmen und damit zusammenhängend die Soundausgabe des Bascoders. Nach noch ein paar Feinarbeiten ist der JOYCE-Bascoder so weit gediehen, daß ich ihm die Versionsnummer 1.0 geben kann.

Das möchte ich mit einigen Informationen zum Drum und Dran ergänzen.

BasiCode, der Basic-Dialekt, der von fast allen Heimcomputern (aber auch CP/M- und DOS-PCs) verstanden werden kann, wurde in den achtziger bis Anfang der neunziger Jahre entwickelt. Die Idee kam ein paar niederländischen Tüftlern, die es störte, daß Programme sich nicht von einem Homecomputer des einen Herstellers auf einen eines anderen Herstellers übertragen ließen. In der Praxis fand BasiCode weniger Anklang als dem genialen Konzept bestimmt angemessen gewesen wäre. In der "alten" Bundesrepublik gab es, wie ich einem Zeitschriftenartikel [2] entnehmen kann, 1984 im WDR III, auf NDR und bei der Studiowelle Saar Sendungen mit BasiCode-Programmen. Wohlversorgte Bürger einer marktwirtschaftlichen Gesellschaft mit Spitzenprogrammen für ihre jeweiligen Computer (hier spreche ich wieder von den 8-Bit-Oldies) fanden BasiCode-Programme verständlicherweise vom äußeren Erscheinungsbild her simpel und reagierten mit Desinteresse. Programme, die auf allen Modellen laufen, können natürlich nicht die jeweiligen Raffinessen der einzelnen Geräte herauskitzeln.

Auf größeres Interesse stieß BasiCode außer in seinem Herkunftsland wohl nur in der damaligen DDR. Hier war es nicht nur um die Hard-, sondern auch um die Softwareversorgung für private Interessenten nicht so toll bestellt - etwas besseres als ein Freeware-Pool von Programmen, die ohne Änderung auf allen Computern lauffähig waren, konnte doch gar nicht erfunden werden; ab September 1989 konnte man sogar Programme im DDR-Rundfunk aufnehmen. Doch auch in "Neufünfland" ebbte das Interesse an BasiCode nach der Grenzöffnung rapide ab.

Letzten Endes fiel dieses "Computer-Esperanto" der rasanten Entwicklung der Computertechnologie zum Opfer, es setzten sich, wie wir alle wissen, IBM und Microsoft durch. Die 16-Bit-PCs alterten moralisch so schnell, daß die ausgemusterten Computer sich in den privaten Stuben wiederfanden. So gewann allmählich eine mehr oder weniger einheitliche (jedenfalls im Vergleich zur Vielfalt der Dutzenden 8-Bit-Modelle) Hardwarebasis Überhand. Die Bedienung wurde durch die Entwicklung von DOS zu Windows auch immer einfacher handhabbar, sodaß es inzwischen ganz normal ist, daß Lieschen Müller sich im Lebensmitteldiscounter mit Otto Normalverbraucher um den letzten PC des Wochenangebotes streitet ...

Nichtsdestotrotz bin ich noch heute vom BasiCode-Konzept und seiner Umsetzung begeistert und versuche ein wenig, die Erinnerung daran wachzuhalten. So schrieb ich gemeinsam mit zwei weiteren Usern vom ZX 81 und KC 85 Clubs für verschiedene 8-Bit-Modelle an, auf welchem Wege auch der Kontakt zur JUAG entstand.

BasiCode kannte ich vom Schneider CPC, also interessierte mich, ob es auf dem JOYCE auch bekannt war. Alles, was ich ausfindig machen konnte, war eine Version für MBasic unter CP/M [3]. Auf diese Version (oder eine ähnliche) bezieht sich offenbar auch der Text von O. Becker auf der DiskPost 11 [4]. Diese Version erfüllt allerdings nur die Norm 2 von 1984, kann also weder Dateiarbeit noch Pixelgrafik oder Sound. Das verwunderte mich, so üppig ist doch der JOYCE auch nicht mit Software gesegnet. Wäre nicht übel, wenn der JOYCE auf den Vorrat an BasiCode-Programmen der verschiedensten Anwendungsbereiche zugreifen könnte. So entstand die Idee, mich an der Version 3 für den Amstrad PCW zu versuchen.

Als erstes stand die Frage, spezifisch für den JOYCE oder allgemein für CP/M? Dank GSX ist auch auf CP/M-PCs Pixelgrafik möglich, doch hieran hätte ich mich vermutlich verhoben. Selbst, wenn ich es hinbekommen hätte, wäre es doch nicht auf den Geräten nutzbar, für die es GSX nicht gibt. Daher entschloß ich mich zur ersten Variante.

Nach intensiver Suche in meinen Beständen an Zeitschriften fand sich außer einer Lösung für die Pixelgrafik [5] sogar eine für den Sound [6]. Es brauchte also nicht das Rad neu erfunden zu werden, sondern ich konnte vorhandene Lösungen nachnutzen. Nur gut, denn der JOYCE war in Hardware- und Software-Aufbau Neuland für mich. Überhaupt konnte ich mich erst in diese Arbeit stürzen, nachdem endlich der JOYCE-Emulator auf meinem PC lief (mit den DOS-Vorläufern hatte ich überhaupt kein Glück, erst die Version 1.9.4 für Windows [1] brachte den Durchbruch).

Eine Frage schien offenbleiben zu müssen, das war das Zurücklesen von Zeichen aus dem Bildschirm. Doch nach nochmaliger Durchsicht der Zeitschriftenartikel fand sich auch hier ein Ansatz [7], der sich zur Lösung dieses Problems ausbauen ließ. Diese Lösung wäre aber mit mindestens einer BIOS-Version nicht gelaufen, worauf mich Werner Cirvosius hinwies und mir auch gleich einen Vorschlag zur dynamischen Sprungvektor-Bestimmung mitschickte - großes Dankeschön!

Doch nun endlich zu den Details, was umsetzbar war und was (noch?) nicht gelöst ist.

Im ursprünglichen Sinn komplett ist der Bascoder eigentlich nur zusammen mit den CP/M-Programmen BCREAD.COM und BCWRIT.COM, vgl. [3]. Weil man bei CP/M- und DOS-PCs auf jeden Fall ein Diskettenlaufwerk zur Verfügung hat, werden hier die Übertragung der Programme und deren Nutzung getrennt voneinander gehalten. So weit treibe auch ich die Nostalgie nicht, daß ich die Programme unbedingt an einem Kassetten-Interface einlesen will, da gibt es inzwischen glücklicherweise bequemere Lösungen.

Hiermit im Zusammenhang stehen die Routinen zur Arbeit mit Datenbeständen. BasiCode sieht drei Varianten zur Abspeicherung vor: das BasiCode-eigene Kassettenaufzeichnungsformat (gekennzeichnet durch die Werte 0 <Lesen> und 1 <Schreiben> für die Variable NF), die computereigene Kassetten- (oder ggf. Disketten-)Aufzeichnung (NF=2 <Lesen> oder 3 <Schreiben>) und die Diskettenspeicherung auf weiteren Laufwerken (NF=4 oder 6 =Lesen>, 5 oder 7 <Schreiben> ). Wird am JOYCE das BasiCode-eigene Kassettenformat angefordert, erscheint nur in der Statuszeile ein Hinweis auf BCREAD und BCWRIT, alle anderen Operationen werden auf dem aktuellen Laufwerk ausgeführt.

Für die Pixelgrafik legt BasiCode lediglich fest, daß Breite und Höhe im Verhältnis 4:3 stehen sollen. Auf dem weitverbreiteten Commodore 64 sind das 200*288 Pixel. Hier liegt der JOYCE mit 248*660 Pixeln deutlich in Führung (kein Rechenfehler: in Y-Richtung sprechen jeweils zwei benachbarte Werte die gleiche Pixelzeile an, das Breite-/Höhe-Verhältnis ist also 660:496).

Bei BasiCode-Programmen soll man (für den Textmodus) nicht mehr als 40 Buchstaben pro Zeile annehmen, damit die Ausgabe auf allen beteiligten Computertypen möglich ist. Von dieser Schriftgröße gehen entsprechend auch die Grafikprogramme aus. Somit bestand bisher bei beschrifteten Grafiken auf dem JOYCE oft eine Disproportion, die Schrift war zu schmal. Deshalb lasse ich nun im Grafikmodus die Schrift in doppelter Breite ausgeben.

BasiCode-3 sieht auch die Ausgabe von Sound vor. Hier kann der JOYCE leider nur mit Einschränkungen mitreden, P.-R. Wolter hatte eine Lösung gefunden, den Piepser so anzusteuern, daß er unterschiedlich hohe Töne hervorbringt. Der Klang ist natürlich weit entfernt von HiFi-Normen... Wer z.B. bei Weeske den Joystickadapter mit dreikanaligem Soundsynthesizer gekauft hat, kann gern dessen Nutzung einbinden, ich bin nur von der Ursprungsausstattung ausgegangen.

Insgesamt sind somit alle Normen von BasiCode-3 umgesetzt, doch 1991 gab es eine letzte Weiterentwicklung zum Standard 3C, der vor allem die Arbeit mit farbiger Schrift und Grafik hinzufügt. Hier muß unser monochromer JOYCE leider passen, allenfalls ließen sich (wie in einigen kommerziellen Programmen) Flächen durch unterschiedliche Schraffuren "färben", aber wie soll man Punkte, Linien und Schriftzeichen schraffieren?

Außerdem ermöglicht BasiCode-3C auch die Auswertung, ob Funktionstasten gedrückt wurden. Ich gebe zu, daß ich hierfür keine Lösung finden konnte (Freiwillige vor!), aber nach meiner Ansicht ist es ohnehin nicht besonders sinnvoll. Ziel von BasiCode ist es, Programme zu schreiben, die auf möglichst vielen Computern nutzbar sind. Wenn viele 8-Bit-Oldies gar keine F-Tasten haben, warum soll man dann ihre Nutzung programmieren wollen?

Die nicht realisierten Details habe ich versucht durch Bedienkomfort auszugleichen, insbesondere muß das Laden von Programmen nicht mehr "von Hand" durch Hinzu-MERGEn durchgeführt werden.

Thomas Rademacher, im Januar 2004

 

Beinahe wäre nicht der KC Compact, sondern ein Selbstbausatz mein erster Computer gewesen:

   DDR-Selbstbausatz Z 1013  

KLICK = downloaden     Download - basicode.joy etc.