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.
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.
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.
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.
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.
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.
-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)
Kennung "D"
Boot-Kennung in Zelle 1536
Prompt ab
Zelle 1537
Speicherzelle | Byte | Bedeutung | Default | Ziel |
---|---|---|---|---|
1638-1645 | 8 | PM-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) 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:
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,SMP | 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.DRV PICTURES.DRV PICTURES.DRV PICTURES.DRV SAMPLE.DRV |
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) Micropainter-Bild Symbolbank Symbolbank Sound-Sample |
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.
2 | 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 Diskette | wie bei BOSS-XL/XE |
Name 1. Symbol | in 16 Zeichen |
Verzeichnis 1. Symbol | .INI-Dateien liegen grundsätzlich in der Wurzel, aber die verknüpften Dateien können in Unterverzeichnissen liegen |
Name 2. Symbol | 16 Zeichen |
Verzeichnis 2. Symbol | |
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 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.
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.
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 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 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.
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.
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
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.
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;
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
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.
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;
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.
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.
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.
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.
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ändercode
$VARIABLE=Bildschirmtext
$VARIABLE=Bildschirmtext
...
Ländercode
$VARIABLE=Bildschirmtext
$VARIABLE=Bildschirmtext
...
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.
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.
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.
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!