BOSS - OpenSYS

die Offenlegung des BOSS-Systems

BOSS ist eine graphische Benutzeroberfläche für ATARI-8-Bit-Rechner. Es exisiteren zwei unterschiedliche Konzepte: BOSS-XL für Computer, die nur über einen Hauptspeicher von 64kB verfügen und BOSS-XE für welche, die einen zusätzlichen Speicher, der als RAM-Disk (D8:) angemeldet ist, haben. Ich führe Euch so an das System heran, wie ich mich selber herangeführt habe, als ich BOSS-XE programmiert habe.

am Anfang war GEOS

Eines Tages während meiner Lehre unterhielt ich mich mit einem Mit-Azubi über seinen C64 und meinen ATARI 800XL. Dabei ging es auch um GEOS. Tja, auf dem ATARI gab es so etwas nicht. Doch ich verteidigte die Ehre des ATARI's und wettete, dass ich das Programm GEOPaint auch selber programmieren könne, so dass es das selbe Aussehen hatte und voll funktionsfähig war. Nach zwei Tagen war es soweit. Ich hatte das Programm fertig aber meinen Kumpel interessierte das nicht mehr. Er konnte das eh nicht kontrollieren, denn er hatte nur einen C64. Wie auch immer, GEOPaint nutzte für die Text-Funktion Proportionalschrift. So auch meine ATARI-Version. Ich programmierte GEOPaint so, dass sein Erscheinungsbild geändert werden kann (Hintergrundmuster, Farben). Dies sollte auch nach einem Neustart (RUN) erhalten bleiben.
GEOPaint gefiel mir so gut, dass ich beschloss, eine Dateiauswahl mit dem selben Lay-Out zu schreiben. Das war der erste Desktop. Ich nannte ihn sinnigerweiste "GEOS". Es kamen weitere Programme hinzu. Mit GEOPara stellte man die Parameter für Hintergrundmuster, Joystick-Pfeil und Farben ein. Irgendwann sagte ich mir: Das ist MEIN Programm, das soll auch einen von MIR gewählten Namen tragen. Ich erinnerte mich an eine frührere Oberfläche, mit der ich mal GEM (PC-Version) nachmachen wollte. Das Ding nannte ich ganz überheblich "BOSS-Softmaster", dabei ist das Programm ein misslungener Versuch. Nun, für mein GEOS fiel mir kein besserer Name ein, da ich sowieso nicht sehr kreativ bin, was Namen angeht. Und so wurde aus GEOS-XL BOSS-XL. Ich glaube, von dieser Version (vor 1.0) habe ich nicht mal mehr ein Exemplar.

meine erste Veröffentlichung

Als ich das erste mal an einem PC saß und Unterverzeichnisse sah, war ich sofort süchtig danach (nicht nach dem PC, sondern nach Unterverzeichnissen). Also musste kurzerhand ein MS-DOS für der ATARI her. Aber nicht mit Unterverzeichnissen, denn alles basierte auf Turbo-BASIC und ATARI-DOS, sondern Direktoryspezifikationen. Das hieß soviel wie "D1:*.*" oder "D1:*.TUR" für Turbo-BASIC-Dateien. Zwischen diesen Spezifikationen wechselte man mit "CD", genau wie beim PC. Ich nannte das Programm MS-DOS, wobei MS für meine Initialien stand. Das ganze wurde mit samt BOSS-XL V1.0 bei KE-SOFT als PD veröffentlicht. Um dem PC noch ähnlicher zu werden, sollten jetzt auch alle meine Programme nach dem Beenden zu MS-DOS springen. Als dann BOSS kam, sollten sie automatisch in das vorher geladene System zurückkehren. Dazu musste eine Kennung her: die Systemkennung.

Bilder sagen mehr...

1995, als ich mal wieder einen PC aus meinem ATARI machen wollte und Langeweile hatte, dachte ich daran, Icons in mein System aufzunehmen bzw. mein System zu ikonisieren (iconized Desktop). Ich erinnerte mich an einen fehlgeschlagenen Versuch (BOSS1) von früher (16x16 Pixel, für jede Datei ein Ikon). Diesmal musste ich das anders machen. Der Windows-Programm-Manager war mein Vorbild. In einer Datei sollten Verknüpfungen mit einzelnen Dateien samt Icons und besserem Namen (mehr als 8 Zeichen und Groß-/Kleinschreibung) gespeichert sein. Diesmal sollten die Icons aber etwas aussagekräftiger sein. Deshalb sollten sie schon 24x24 Pixel groß sein. Gesägt, tun getan - aber nicht effizient. So versank das Projekt als BOSS-XL V3.0 in der Versenkung, denn die Icons darzustellen dauerte in Turbo-BASIC zu lange. Ein Bild-Refresh nahm einem schon die Geduld, denn ich ging die Sache falsch an, was sich später aber ändert sollte.

Es gibt soviel zu sehen

Ein anderes Thema war meine Proportionalschrift. Ich wollte ein BOSS, das sich mit einem System-Zeichensatz in allen Programmen zeigte, ohne den Zeichensatz immer von Diskette nachzuladen. Naja, das alles missglückte, denn es war zu wenig Speicher da, die 32kB in Turbo-BASIC waren zu schnell voll. In dieser als BOSS3XL bezeichneten Version nutzte ich das erste mal das Verfahren der externen Betrachtungsprogramme, die bei BOSS-XE als Treiber bezeichnet sind. Das bedeutet, mit dem DESKTOP eine Datei aufzurufen, die in einem anderen Programm geladen und angezeigt wird, ungefär wie in WINDOWS: Doppelklick im DATEIMANAGER auf eine BMP-Datei und PAINTBRUSH wurde geladen, welches dann erst die BMP-Datei lädt und anzeigt. Dieses Projekt war ohne RAM-Disk allerdings auch zum Scheitern verurteilt.

Langweilig...

Das Jahr 2000. BOSS-XE in der Version 8.2 (Veröffentlicht als 8.1 Ausgabe 2000) wurde immer besser. Leider sieht man davon nicht viel. Man bemerkt zwar während der Arbeit mit BOSS, dass sich da einiges tut, aber die Optik ist noch immer dieselbe. Deshalb musste ein neues BOSS her. Da ich sowieso mal mit Unterverzeichnissen arbeiten wollte, bot sich mir auch gleich ein DOS an, das ich für meine Zwecke nutzen konnte: MyDOS. Und so beschloss ich, das neue BOSS in MyBOSS umzutaufen. MyBOSS habe ich sehr farbenfroh gestaltet, nachdem ich bereits von einigen ATARI-Freunden gefragt wurde, ob ich so etwas nicht realisieren wollte. Nun, damals hätte ich nicht vor gehabt, in einer seriösen Benutzeroberfläche mit PM-Grafik und DLI's zu spielen, da ich diese ja auch Spielen vorbehalten glaubte. Aber beim Release von MyBOSS in der Version PreBeta/0 kam dieses Konzept großartig an. Auf der Messe in Schreiersgrün 2000 stellte ich MyBOSS nämlich vor und es war eigentlich ein voller Erfolg. Leider setzte ich dadurch keine Kopie von BOSS-XE Ausgabe 2000 ab, da die Vorgänger-Version erst kürzlich beim ABBUC als Jahresgabe erschien (das einzig Große, was ich je geleistet habe) und ein Update jetzt noch keiner haben wollte. Die gesamte BOSS-Fangemeinde, die sich tatsächlich gebildet hatte, wartet auf die stabile MyBOSS-Version, die im Herbst zur JHV in Herten rauskommt. Tja, was sollt's, genug Geld für die Rückfahrt hatte ich sowieso noch und MyBOSS war ein Erfolg, also war es eine tolle Messe für mich.

0. Systemkennung

-gespeichert in Zelle $06ff (Ende der Page 6):
"D" = MS-DOS
"B" = BOSS (ab XL V2.0)

ab BOSS-XE oder Systeme mit RAM-Disk:
in der Datei
"D8:VER. ":

BOSS (Return) \
XE   (Return)   ergibt BOSS-XE V8.1
8.1  (Return) /

also:
-(Systemname) (Return)
-(weitere Kennung) (Return)
-(Versionsnummer) (Return)
dargestellt als (Systemname)-(weitere Kennung) V(Versionsnummer)

1. MS-DOS

Kennung "D"
Boot-Kennung in Zelle 1536
Prompt ab Zelle 1537

2. BOSS-XL

V1.0
Lay-Out-Erscheinung:

Speicherzelle Byte Bedeutung Default Ziel
1638-1645 8 PM-Zeigepfeil Zeigepfeil PM
1646-1647 2 Hintergrundmuster 170, 85 Screen
1648 max. Joystickgeschwindigkeit (1-8) 8
1649 Helligkeit Vordergrund 0 709
1650 Farbe/Helligkeit Hintergrund 15 710
1651 Rahmenfarbe 0 712
1652 Pfeilfarbe 112 707

ab V2.0:
Kennung "B"

ab V4.0: DESKTOP initialisiert BOSS selbst, das heißt, er braucht kein BOSS-Starter (BOSS.TUR). Der Desktop kann als eigenständiges Turbo-BASIC-Programm genutzt werden.

In dieser BOSS-Version werden die Desktop-Symbole eingefürt. Nachdem bei Version 3 (nicht veröffentlicht) die Symboldarstellung noch entwickelt wurde, wurde sie mit Version 4 endlich benutzertauglich.
Symbole:
-12 Symbole pro Diskettenseite
-95 Byte pro Symbol
-gespeichert in Datei "DESKTOP.INI":

(Anzahl Symbole)Return-Zeichen (ATASCII 155) dann:
Byte Zelle ab Beginn Bedeutung
2 +0 X-, Y-POS. des Symbols (x8 nehmen)
72 (24x24 Px) +2 Symbol als Bitmap (3x-/24y-Byte)
1 +74 Länge des Symbolnamens (0-8)
8 +75 Symbolname
12 +83 Dateiname
=95 Byte pro Symbol

Symbol optimiert für TEXT-Befehl in Turbo-BASIC

ab V4.5
Oberfläche wie WIN95 (Startleiste unten)

Mit dem BOSS-Startup-Programm konnt man ab sofort ins ATARI-BASIC starten. Dies tut man mit dem Bootmanager, den man aufruft, indem man die ESC-Taste drückt, während Turbo-BASIC oder das BOSS-Titelbild geladen wird. Der Bootvorgang ist zwar schon lange abgeschlossen wenn der Bootmanager erschien, jedoch kann der ja wieder eingeleitet werden, wenn man ins ATARI-BASIC will. Damit der Computer dann auch wirklich ATARI-BASIC startet und nicht Turbo-BASIC lädt, werden folgende Vorgänge durchgeführt:

  1. Kontrolle der Diskette:
    die Diskette wird nach diesen Dateien durchsucht:
    • TURBOBAS.BAS - ein Programm, das später in ATARI-BASIC automatisch gestartet wird
    • AUTORUN.ATB - ein Maschinenprogramm, welches TURBOBAS.BAS automatisch laden wird
  2. Diskette für einen Neustart vorbereiten
    folgende Dateien werden umbenannt:
    • AUTORUN.SYS -> TURBOBAS.COM - das ist das Turbo-BASIC, wird umbenannt, damit es 1. nicht mehr starten und 2. damit eine andere Datei in AUTORUN.SYS umbenannt werden kann
    • AUTORUN.ATB -> AUTORUN.SYS - wird umbenannt, damit es automatisch startet und TURBOBAS.BAS starten kann
  3. Booten der Diskette
  4. Originalzustand der BOSS-Diskette wiederherstellen:
    Geladen wird DOS.SYS
    DOS.SYS startet AUTORUN.SYS
    AUTORUN.SYS startet TURBOBAS.BAS
    TURBOBAS.BAS kontrolliert ob sich diese Dateien auf Diskette D1: befinden:
    • AUTORUN.SYS
    • TURBOBAS.COM
  5. und benennt diese um:
    • AUTORUN.SYS -> AUTORUN.ATB
    • TURBOBAS.COM -> AUTORUN.SYS
  6. Somit ist die Originaldiskette wiederhergestellt. Wird diese Diskette das nächste mal gebootet, wird BOSS wieder gestartet.

3. BOSS-XE

ab V5.0
RAM-Disk-Unterstützung: Treiber
Der Desktop von BOSS ist nicht nur eine Oberfläche mit Symboldarstellung, sondern auch ein universelles Bild- und Textbetrachtungsprogramm. Um Dateien anzeigen zu können, braucht BOSS genaue Kenntnisse über dessen Datenformat, d.h. eine kurze Anzeigeroutine. Diese Anzeigeroutinen waren bisher im Desktop-Programm enthalten. Ab BOSS-XE änderte sich dies. Die Anzeigeroutinen wurden aus dem Desktop entfernt und sind als eigenständige Programme in der RAM-Disk gespeichert. Der Desktop von BOSS-XE ruft jetzt den Datei-Extensionen entsprechend sogenannte Treiber aus der RAM-Disk auf und übergibt ihnen den Dateinamen der anzuzeigenen Datei. Dabei handelt es sich nicht um Treiber im eigentlichen Sinne, denn Treiber sind mit einer Hardware verknüpft und nicht mit einem Softwareformat. Aber als ich BOSS-XE schrieb hatte ich noch keine Ahnung von Computern und nannte diese Viewer einfach Treiber. Die Anzeigeprogramme in der RAM-Disk werden nun wie folgt aufgerufen:
  1. Feststellen, ob Ext der anzuzeigenden Datei bekannt ist. Dazu "D8:DAUSW.INI" öffnen und prüfen, falls nicht, dann eine "DAUSW.INI" vom aktuellen Laufwerk prüfen (falls vorhanden)
  2. Namen der anzuzeigenden Datei ab Speicherzelle 1262 ablegen (17 Bytes, mit Laufwerk...)
  3. Aus "DAUSW.INI" das Betrachtungsprogramm für die Datei suchen und aus RAM-Disk oder von Diskette laden (aktuelles Laufwerk). Andere Betrachter außer "*.DRV"-sollten nicht in RAM-Disk installiert werden (werden sie von BOSS auch nicht).

ab V8.0
-Systemzeichensatz in RD ("D8:SYSTEM.FNT") /PP
-neuer Text-Viewer, nutzt Systemzeichensatz
-neues Grundgerüst für BOSS-Programme (nutzen Systemzeichensatz)

ab V8.1
-Titelzeichensatz ("D8:TITEL.FNT") /PP
-Textviewer nutzt auch Titelzeichensatz

ab V8.2 (veröffentlicht als Ausgabe 2000)
-neue Treiber als Systemfunktionen: DRIVER.DRV gibt Infos über Treiber (zum Beispiel, welche Dateien kann PICTURES.DRV anzeigen)
-SCRNSAVE.DRV installiert Bildschirmschoner
-inaktive Treiber (*.DRI), die nicht in RD geladen werden
-neue Symboldateiart: *.SYM für Text-Befehl optimiert

Aufbau der "DAUSW.INI"

PIC,MIC,IKB,SYM,SMPReturn-Zeichen (155) 1. Zeile: die Extensionen, die unterstützt werden, wird mit dem INPUT-Befehl geladen
wenn A=(LEN(DAUSW$)+%1)/4, dann A=Anzahl installierter Dateitypen
PICTURES.DRVReturn-Zeichen (155)
PICTURES.DRVReturn-Zeichen (155)
PICTURES.DRVReturn-Zeichen (155)
PICTURES.DRVReturn-Zeichen (155)
SAMPLE.DRVReturn-Zeichen (155)
dann die Namen der Betrachtungsprogramme
mehrere Dateitypen können von einem DRV-Programm aufgerufen werden. Dieses Programm muss die Dateien jedoch erneut unterscheiden können. Diese Unterscheidung nimmt sonst BOSS-XE vor.
Bild (allgemein)Return-Zeichen (155)
Micropainter-BildReturn-Zeichen (155)
SymbolbankReturn-Zeichen (155)
SymbolbankReturn-Zeichen (155)
Sound-SampleReturn-Zeichen (155)
anschließend folgen nähere Erläuterungen, die als Dateityp angezeigt werden
(also ein aussagekräftiges "Symbol-Bank" anstatt eines hässlichen "IKB-Datei")

Diese Daten können mit dem Programm "DAUSWED.DLL" einigermaßen komfortabel editiert werden.

4. MyBOSS

MyBOSS ist der bislang letzte Meilenstein in der BOSS-Entwicklung. Dabei wurde mit Speicher nicht mehr gegeizt. In MyBOSS wurden farbige Symbole eingeführt, die im Hover-Modus aufleuchten. D.h. also, sobald sich der Joystick-Pfeil über einem Symbol befindet erscheint dieses Farbig. Außerdem sind jetzt 16 anstatt 12 Symbolen möglich. Noch dazu können mehrere Symbolordner auf dem Desktop abgelegt werden, die wiederum Symbole enthalten. Also ist die Datei DESKTOP.INI nicht die einzige Datei, die Symbolverknüpfungen enthält. So kann z.B. ein Symbol in der DESKTOP.INI mit einer Datei HILFE.INI verknüpft sein. in der Datei HILFE.INI sind wiederum Verknüpfungen mit Hilfs-Texten. Zur besseren Übersicht sind jetzt 16-Zeichen-lange Symbolbezeichnungen möglich anstatt der bisher 8 Zeichen. Das Dateiformat einer .INI-Datei sieht folgendermaßen aus:
2Return-Zeichen (155) Anzahl Symbole, im Beispiel 2 (wie bei BOSS-XL/XE)
95 Byte 1. Symbol die gleichen Symbol-Daten wie bei BOSS-XL/XE
95 Byte 2. Symbol für die Kompatibelität
Titel der DisketteReturn-Zeichen (155) wie bei BOSS-XL/XE
Name 1. SymbolReturn-Zeichen (155) in 16 Zeichen
Verzeichnis 1. SymbolReturn-Zeichen (155) .INI-Dateien liegen grundsätzlich in der Wurzel, aber die verknüpften Dateien können in Unterverzeichnissen liegen
Name 2. SymbolReturn-Zeichen (155) 16 Zeichen
Verzeichnis 2. SymbolReturn-Zeichen (155)  
49 Byte Farbe 1. Symbol davon 48 Byte PM-Daten, dann 1 Byte der Farbwert.
49 Byte Farbe 2. Symbol  

Desweiteren werden noch Standard-Symbole eingeführt, die für gezielte Bildschirmausgaben genutzt werden. Als optische Änderung gegenüber der Vorgängerversionen ziert noch ein DLI-Streifen die Titelleiste aller BOSS-Programme inklusive Desktop. Das neue System braucht auch noch einige Bytes mehr in der Page 6:

$06F5-$06F6 "D8" Laufwerksbezeichnung für das permanente Systemlaufwerk, auf dem die Daten festgehalten werden, die bisher in der RAM-Disk gespeichert waren. Das kann immernoch die RAM-Disk sein, das kann aber auch eine schnelle Festplatte (z.B. H1) oder ein Diskettenlaufwerk (z.B. D2) sein
$06F7-$06FE 12, 10, 8, 6, 6, 8, 10, 12. Das sind die Farben für die neue DLI-Titelleiste in allen MyBOSS-Programmen
$06EB Farbe von Menüs und Verzeichnissen im Dateiauswahl-Dialog
$06EC-$06ED Farbe der blinkenden Hauptschaltflächen (hell und dunkel)
Diese Farben sollten miteinander korrenspondieren, z.B. $74 + $7A für blau-blinkend.
Hat die Farbe für die dunkle Schaltfläche einen größeren Wert, stürzt BOSS-X ab, da ich hier keine Kontrolle in den Programmablauf programmiert habe.
$06EE Farbe von Schaltflächen.
$06FF "B" als Systemkennung. Aus Kompatibelitätsgründen wurde auf ein "M" für MyBOSS verzichtet, da sich sonst ältere BOSS-XE-Programme nicht mehr starten ließen.

BOSS-X

BOSS-X ist der neue Name für MyBOSS da es sich wieder ein klein wenig von MyDOS entfernt. Als modernes Desktop-System ist es so konzipiert, dass es auf allen ATARI's einsetzbar ist. Somit werden die Unterverzeichnisse von MyDOS zwar unterstützt, aber nicht mehr vorausgesetzt. Außerdem soll das Eingabegerät frei gewählt werden können. Das geht nur unter der Zuhilfenahme von Maschinensprache, aus meiner Sicht auch ein Schritt in Richtung Modernisierung. Das BOSS-X-Treiber-Konzept wird genau hier entwickelt. Ein BOSS-X-Treiber in diesem Fall treibt diesmal tatsächlich eine Hardware an. Um für diese Treiber Speicherplatz freizumachen wird auf die vier zusätzlich darstellbaren Symbole verzichtet. Doch das nur nebenbei. Ein BOSS-X-Treiber hat die Endung .BXD und informiert über die Art und die Startadresse der Maschinenroutine. So sieht die Datei aus:

"BX" als BOSS-X-Gerätetreiberkennung
die Start-Adresse als 16-Bit-Zahl
das Statusbyte
der Treiber

Der Treiber muss bei $9C00 enden, da dort die PM-Grafik für Pfeil, farbige Symbole und Schaltflächen beginnt. Man sollte beim assemblieren eines Treibers darauf achten, dass die Startadresse möglichst hoch und so nah wie möglich an der Grenze ist. Da Treiber somit an verschiedenen Stellen beginnen, werden ihre Startadressen mitgeliefert. Im Statusbyte wird angezeigt, ob es sich um einen VBI- oder einen normalen Treiber handelt. Ein VBI-Treiber wird mit Beginn eines BOSS-X-Programmes aufgerufen und liefert ständig die X- und Y-Werte in die Adressen $06F2 (x) und $06F3 (y). Die Zahlen liegen in Graphics-7-Auslösung vor, d.h. sie müssen verdoppelt werden, damit sie mit dem Desktopbildschirm übereinstimmen. Das Statusbyte gibt auch Auskunft, für welchen Port der Treiber entwickelt wurde. Die Aufschlüsselung sieht wie folgt aus:

0 *128
0 *64
0 *32
0 *16
0 *8
0 *4
0 *2 = normaler Treiber, 1 *2 = VBI-Treiber
0 *1 = Port 1, 1 *1 = Port 2

Es wird in Adresse $06F4 abgelegt. Die Startadresse wird beim Laden eines Treibers übriges bei $06F0 abgelegt. Natürlich als 16-Bit-Wert. Demächst wird BOSS-X auch die Drag-And-Drop-Funktion einführen. Somit wird ein normaler Treiber eine zweite X-Y-Adresse brauchen, eine, wo die Taste gedrückt wurde und eine, wo die Taste losgelassen wurde. Diese Adresse wird wohl dann die $06ED (x) und $06EE (y) sein. Unterscheiden sich die beiden Werte, liegt eine Drag-And-Drop-Bewegung vor.

BOSS-X Version 10.1

Dies ist das erste große Update von BOSS-X. Die wichtigste Neuerung ist die ML-Routine für den Proportional-Text. Damit dauert ein Bild-Refresh auf dem Desktop nur noch einen Bruchteil der bisherigen Zeit und kommt somit wieder an das Niveau von BOSS-XE (mit Blockschrift) heran. Endlich bremst die Proportionalschrift nicht mehr das System aus. Diese ML-Routine stammt von Ron Hamilton, einem Mitglied der Newsgroup comp.sys.atari.8bit, der sich bereit erkärt hat, diese Routine zu schreiben.

BOSS-X Version 10.2

Dieses Update unternimmt zwar den gleichen Versionssprung wie das Update von BOSS-X auf BOSS-X.1, jedoch hat das System ansich nicht viel neues erfahren. Lediglich einige Verbesserungen und Bugfixes wurden gemacht. Zu den Verbesserungen zählt der BASIC-Loader, einem Programm in ATARI-BASIC, welches durch MyDOS-Verzeichnisse browsen und BASIC-Programme starten kann.
Der Desktop zeigt nun Befehle und Dateien auch in Proportionalschrift an, nicht wie vorher in Blockschrift.
Der Dateimanager zeigt Dateinamen nun etwas logischer an. So wird bei Verzeichissen der Extender nicht mehr durch einen Punkt vom Namen getrennt, wenn der Name bereits acht Zeichen lang ist (Program.me -> Programme). Bei Dateien und Verzeichnissen ohne Extender wird der Punkt auch weggelassen (VER. -> VER).

BOSS-X Version 10.3

BOSS-X lässt sich ab sofort in ein MyDOS-unterverzeichnis installieren. Dazu haben einige Programme geändert werden müssen. Bei einem Update von BOSS-X.2 auf BOSS-X.3 müssen folgende Programme aktualisiert werden:

Einige dieser Programme werden vom Setup-Programm aktualisiert, genaugenommen die, die sich auf der ersten Diskettenseite der BOSS-X.3-Diskette befinden. SETUP.TUR sollte ja sowieso von der BOSS-X.3-Diskette gestartet werden, denn man kann BOSS-X.3 nicht mit Setup-Programmen früherer (oder gar späterer) Versionen installieren. Die anderen müssen selbst aktualisiert werden.
Eine Neuerung erfuhr das Programm "DISKINFO.BEF", der als externer Befehl vom Desktop aus aufgerufen werden kann. Das Programm berücksichtigt nun endlich auch MyDOS-Unterverzeichnisse. Bisher musste der Anwender erst den Dateimanager ("DISCOVER.BOS") starten, um genaue Angaben über Ordner und Verzeichnisse zu erhalten.
Die Datei "BOSS.SYS" in der Wurzel des BOSS-X.3-Laufwerks beinhaltet den Pfad, in den BOSS-X.3 installiert wurde. Die Datei wird geöffnet und mit INPUT #%1,s$ wird der Pfad abgefragt, fertig.

BOSS-X Version 10.31

BOSS-X erfährt einige optische Änderungen: die Menüs im Desktop sind jetzt mit Schatten unterlegt und das BOSS-X-Startprogramm (BOSS.TUR) zeigt einen neuen Ladebalken, der Mac OS 7.5 ähnelt, und kann einen Willkommens-Bildschirm laden (falls vorhanden), der dann im Desktop vor dem ersten Bildschirmaufbau zu sehen ist (anstatt wie bisher einen schwarzen Bildschrim).
Desweiteren ist das Titelbild jetzt anders gestaltet. Die zusätzlichen Elemente (Sterne, Mond und Mondspiegelung) wurden auf dem ATARI erzeugt.

BOSS-X Version 10.31 die zweite

Weitere optische Änderungen am System: Das BOSS-X-Startprogramm blendet jetzt das Titelbild noch sanfter ein als bisher. Das Setup-Programm wirkt etwas aufgeräumter und die Fortschrittsanzeige beim Kopieren ist jetzt farbig. Eine nützliche Neuerung erfährt der Dateimanager, der jetzt die Anzahl der gerade gezeigten Objekte (Dateien und Ordner) anzeigt. So kann man genau sehen, ob ein Verzeichnis voll ist (64 Dateien/Ordner) und ein neues angelegt werden muss.

BOSS-X und USB

Demnäst wird für BOSS-X ein neuer Geräte-Treiber erscheinen - und zwar der lang ersehnte USB-Maus-Treiber. Derzeit kämpfen Carsten, der Autor des Treibers und Mitentwickler der USB-Cartridge, und ich noch mit einigen kleinen Problemen, die den Treiber nicht so richtig reifen lassen wollen.

Problem 1:
Gesucht ist eine Möglichst kurze Assembler-Routine, die folgendem Pseudo-Code entspricht:
jx=AKTUELLE_HORIZONTALE_MAUSPOSITION
jy=AKTUELLE_VERTIKALER_MAUSPOSITION

if jx<0 then jx=0;
if jx>159 then jx=159;

if jy<0 then jy=0;
if jy>95 then jy=95;
In diesem Code-Segment wird die aktuelle Mausposition einfach mit den gültigen Werten verglichen, so wie man es in jedem einfachen BASIC- oder C-Programm machen würde.
Vorteil: springt der Mauszieger einmal aus dem Gültigkeitsbereich, so wird er wieder zurückgeholt.
Nachteil: in Assembler schwer zu implementieren
Eine Alternative:
dx=ANZAHL_PIXEL_DIE_DIE_MAUS_HORIZONTAL_BEWEGT_WURDE
dy=ANZAHL_PIXEL_DIE_DIE_MAUS_VERTIKAL_BEWEGT_WURDE

# dx und dy sind vorzeichenbehaftet
plus=1; if dx&$80 then plus=-1;
while dx+=plus AND dx!=0 AND dx!=159
    jx+=plus

plus=1; if dy&$80 then plus=-1;
while dy+=plus AND jy!=0 AND jy!=95
    jy+=plus;

Dieses Code-Segment bewegt den Zeiger um je ein Pixel, und zwar solange, bis die Mausdifferenz (dx, dy) zurückgelegt wurde. Während der Bewegung wird kontrolliert, ob der Rand des Gütigkeitsbereiches erreicht wurde.
Vorteil: in Assembler vermutlich leichter zu implementieren
Nachteil: Vorwärts- und Rückwärtsbewegungen müssen einzeln berücksichtigt werden.

Problem 2:
Aus Speicherplatzgründen muss am BOSS-X-Treiberkonzept eine Kleinigkeit geändert werden. Dazu müssen aber sämtliche BOSS-X-Programme geändert werden, um neue Treiber korrekt zu laden. Die neuen Treiber sollen möglichst mit alten Treibern kompatibel bleiben - das ist kein Problem.
Neue Treiber werden automatisch von alten Programmen abgelehnt (Fehlermeldung "SK"), da sie als zu groß erkannt werden. Somit ist sichergestellt, dass neue Treiber in alten Programmen den ATARI nicht zum Absturz bringen.
Eine Kleinigkeit kann ich an dieser Stelle schonmal verraten: wenn der Fehler "SK" gemeldet wird, dann einfach mal die STOP-Zeile auflisten und den Teil "$9C00-DPEEK($06F0)" durch "1024" ersetzen. Das Programm abspeichern und fertig! Schon ist das alte Programm fit für den neuen Treiber.
Nochmal im Klartext: die Zeile
525 TRAP 526:BGET #%1,DPEEK($06F0),$9C00-DPEEK($06F0):? "SK":STOP
durch
525 TRAP 526:BGET #%1,DPEEK($06F0),1024:? "SK":STOP
ersetzen. Die Zeilennummer kann dabei variieren. Diese Änderung macht das BOSS-X-Programm grundsätzlich kompatibel zu den neuen Treibern, jedoch wird es in Verbindung mit dem USB-Treiber zu Darstellungsfehlern bei der PM-Grafik kommen.
Die nächste Version von BOSS-X wird sämtliche Optimierungen inne haben, die diese Darstellungsfehler wieder ausbügelt.
Die weitere Abwärtskompatibelität wird nicht beeinträchtigt.

die Idee von BOSS-X Version 10.4

Eigentlich sollte BOSS-X ab dieser Version endlich auch unter BeWe-DOS laufen. Grundsätzlich läuft BOSS ja unter BeWe-DOS, jedoch nützt es da nicht viel, da es dann keine Unterverzeichnisse unterstützt. Dieser Missstand sollte beseitigt werden. Jedoch ist es aus Speichermangel nicht möglich, dies so einfach zu bewerkstelligen. Eine Möglichkeit, BOSS-X doch zu BeWe-DOS kompatibel zu machen, ist, für BeWe-DOS eine eigenständige BOSS-Version zu schreiben. Dann allerdings sind Updates eine langwidrige Aufgabe, da immer zwei Produkte aktualisiert werden müssen. Aber dies wäre nicht der Nachteil des Users, so dass dieses Konzept wohl ins Auge gefasst werden kann, besonders, da nur bestimmte Anwendungen in zwei Versionen vorliegen müssten. Das Setup-Programm kann auch so umgeschrieben werden, dass nur MyDOS-Programmversionen auf einer MyDOS-Platte bzw. BeWe-DOS-Versionen auf BeWe-DOS-Datenträgern installiert werden.

das tatsächliche BOSS-X Version 10.4

Die einfachste aller Methoden, BOSS auch BeWe-DOS kompatibel zu machen, ist, BOSS komplett neu zu schreiben. BOSS-X 10.4 ist allerdings kein komplett neu geschriebenes BOSS, dazu wäre der Aufwand viel zu groß, sondern nur ein neu geschriebenes Grundgerüst. Alle BOSS-X 10.4-Applikationen sind zwar komplett neu, jedoch ist der jeweilige Programmkern noch gleich geblieben. Lediglich das Grundgerüst ist ausgetauscht worden. Selbstverständlich muss der Programmkern noch weitgehend angepasst werden, dies betrifft jedoch nur ein paar Variablennamen. Allein die Tatsache, dass BOSS-X jetzt keine eigene Ordnerverwaltung mehr besitzt, sondern die Ordnerverwaltung des jeweiligen DOS-Systems verwendet, setzt dies voraus.

(kein) Multitasking in BOSS-X Version 10.4

BOSS-X 10.4-Programme werden nach Möglichkeit in die RAM-Disk geladen bevor sie gestartet werden. Somit kann das Programm verlassen und ein anderes zwischendurch aufgerufen werden. Selbstverständlich ermöglicht dies kein echtes oder unechtes Multitasking, jedoch ist es damit möglich, die Arbeit zu erleichtern, wenn man mittels zwei Klicks zwischen geladenen Anwendungen hin und her wechseln kann.

Lokalisierbarkeit

Neue BOSS-X 10.4-Programme können samt Ressource-Dateien in die RAM-Disk geladen werden. Diese Eigenschaft nutzt X.4 auch, um Sprach-Dateien zu laden, um Programme leichter lokalisierbar zu machen.
Um zu wissen, welche Sprache aktiv ist, verwendet X.4 genau 5 Speicherzellen ab Byte 1653. Schreibt man hier einen Ländercode ein, so versucht BOSS-X die dort hinterlegte Sprache zu laden. Wird die Sprache nicht gefunden, so lädt X.4 den Ländercode en_US für US-Englisch. Wird auch dieser nicht gefunden, so wird die Lokalisierung ignoriert, was jedoch zur Folge hat, dass, sofern vorhanden, die Ersetzungsvariablen auf dem Bildschirm gezeigt werden.
Die Lokalizierung ist nicht so weit fortgeschritten, wie in modernen Betriebssystemen auf dem PC. So kann die Reihenfolge von Variablen nicht geändert werden und die Grammatik bestimmter Sprachen wird auf der Strecke bleiben. Grund hierfür ist die fehlende Möglichkeit von Turbo-BASIC, einer PROCedur Variablen zuzusenden. Sollte ich irgendwann einmal die Programmiersprache wechseln, so werde ich diese Möglichkeit auch einbauen.
Die Sprachdatei ist wie folgt aufgebaut:
LändercodeReturn
$VARIABLE=BildschirmtextReturn
$VARIABLE=BildschirmtextReturn
...Return
LändercodeReturn
$VARIABLE=BildschirmtextReturn
$VARIABLE=BildschirmtextReturn
...Return
Unschwer zu erkennen ist, dass alle verfügbaren Sprachen in einer Datei abgelegt werden. Dies könnte Schwierigkeiten in der Entwicklung geben, wenn mehrere Sprachdateien von unabhängigen Entwicklern erstellt werden ... da ich die Oberhand über BOSS-X behalten werde, organisiere ich das von Hand.
Die Reihenfolge der Sprachen ist übrigens egal. Eine Sprache darf nicht größer als ein kB (1024 Bytes) sein! Aus Geschwindigkeitsgründen lade ich nämlich die gesamte Sprache in den Speicher, die Strings werden also nicht aus der RAM-Disk geholt! Ich habe die Obergrenze für Sprachen auf 1024 kB festgesetzt.
Wird für eine Anwendung einmal doch mehr Platz für die Sprache gebraucht, so kann diese Zahl auch variiert werden. Dazu muss die BASIC-Variable TRI$ entsprechend DIMensioniert werden und entsprechend viele Bytes in der PROCedur LT geladen werden (in der Zeile TRI$(1024)="x":BGET #4,ADR(TRI$),1024).

Als Beispiel für die Lokalisierung stelle ich kurz folgenden Code vor:
BEISPIEL.LNG
de_DE
$WELCOME=Willkommen
en_US
$WELCOME=Welcome

Code in BOSS-X:
10000 PROC WELCOME
10010 MOVE ADR("de_DE"),1653,5:EXEC LT
10010 T$="$WELCOME":X=0:Y=0:EXEC TEXT
10099 ENDPROC

zeigt auf dem Bildschirm das Wort "Willkommen" an.
Hingegen
10000 PROC WELCOME
10010 MOVE ADR("en_US"),1653,5:EXEC LT
10010 T$="$WELCOME":X=0:Y=0:EXEC TEXT
10099 ENDPROC

wird das Wort "Welcome" auf dem Bildschirm ausgeben.
Jeder Text wird auf Variablen überprüft und lokalisiert. Will man das nicht, so setzt man die Variable NO_TRANS auf 1: NO_TRANS=1.
Die Prozedur LT lädt die Sprache in den Speicher. Wechselt man die Sprache, so muss LT aufgerufen werden, um die Änderung sofort wirksam werden zu lassen.
Auch Menüs werden so lokalisiert.
Auch die Prozedur L, welche die Länge eines Proportional-Textes in Pixel misst, berücksichtigt die Lokalisierung und schaltet automatisch die diese anschließend ab, um nicht versehentlich eventuell vorhandene Dollar-Zeichen herauszufiltern, wenn der gemessene Text anschließ auf dem Bildschirm ausgegeben wird.

die Zukunft

In der Zukunft ist ein neues System geplant, welches ich am liebsten durch den Compiler jagen würde. Jedoch müsste ich mir dann ein neues Gerätetreiber-Konzept einfallen lassen, da sich das derzeitige Treiberkonzept fest auf den Turbo-BASIC Speicherplan verlässt. Doch prinzipiell wäre das möglich. Dieses neue System wird dann auch eine Art Multi-Tasking bieten, allerdings sehr eingeschränkt. Es werden zwar mehrere Programme gleichzeigtig geladen werden können, diese werden aber nicht gleichzeitig laufen. Es wird lediglich so sein, dass man zwischen diesen Programmen umschalten kann (wie unter Windows bzw. MacOS).
Wahrscheinlich werde dieses Multi-Präsents-Konzept unter Turbo-BASIC noch in das aktuelle BOSS-X einbauen. Dazu brauche ich die bestehenden BOSS-X-Programme nur zu modifizieren. Das wird dann wohl BOSS-X 11 werden. Doch fragt bitte nicht nach dem Wann und Wie und Ob überhaupt.

Anhang

Joystickführung:
S=STICK(%0):TR=STRIG(%0):IF S=15 THEN FST=%1:GO #WEITER
JX=JX+((S<8)-(S>8 AND S<13))*FST
JY=JY+((INT(S/4)*4=S-%1)-(INT(S/%2)=S/%2))*FST
FST=FST+%1
#WEITER
...weiter im Programm
10 14 6
11 15 7
9 13 5

Seit BOSS-X wird allerdings eine ML-Routine für die Joystick-Routine verwendet. Länge eines Dateinamens in der Directory und im Gebrauch

D 1 : f i l e n a m e . e x t
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
* < f i l e n a m e e x t > 1 2 3
D1:filename.ext
12345678901234567
*<filenameext>123

Umwandeln eines Dateinamens:

Aus N$=" BILD MIC 062" soll F$="D1:BILD.MIC" gemacht werden. Dies wird geschieht folgendermaßen:
F$="D1:":F$(4)=N$(%3):F$(12)=" ":P=INSTR(F$," "):F$(P)=".":F$(P+%1)=N$(11,13)


der Proportionalzeichensatz:
Dies ist das Datenformat meiner Proportionalzeichensätze: 1024 Byte Zeichensatz (128*8 Byte) Standard
128 Byte Breite der einzelnen Zeichen als Zahl ("0"-"8") FOR P=%1 TO LEN(T$)
E=ASC(T$(P))&$7F+%1
TEXT X,Y,T$(P,P):X=X+VAL(FL$(E,E))+%1
NEXT P
Ab der Version 10.1 von BOSS-X wird eine ML-Routine für den Proportionaltext verwendet, da die BASIC-Routine einfach zu langsam ist.

Kreativität

Um selber BOSS-Programme zu schreiben, steht ein vorprogrammiertes Grundgerüst zur Verfügung, welches bestimmte Routinen enthält, wie z.B. Dateiauswahl, Fenster zeichnen, Joystick-Pfeil, Graphik vorbereiten, Menü und Menüauswahl und und und. Dieses Grundgerüst ist Bestandteil von BOSS-X, welches von meiner Homepage heruntergeladen werden kann. So das soll es erstmal gewesen sein. Falls interesse daran besteht, eigene BOSS-Programme zu schreiben, dann meldet Euch mal bei mir!