uDOS (ultra small DOS)

1, 2

uDOS (ultra small DOS)

von Dietrich » Mo 25. Mai 2020, 18:30
Hi,

ich habe ein ultrakleines DOS namens uDOS geschrieben. Die Idee dazu stammt von tebe und später xxl auf Atari Age - deren Versionen haben aber einige Fehler und Ungereimtheiten und sind auch nur spärlich dokumentiert. Geeignet ist uDOS für Spiele, die aus mehreren Dateien bestehen, z.B. mit Leveldateien oder Highscore-Listen.

Features:
- uDOS passt in die 3 Bootsektoren, LOMEM liegt bei $938, also 5-6 KB mehr frei
- Kann Dateien mittels D:-Handler lesen und überschreiben wie jedes andere DOS
- Unterstützt DOS 2.x und MyDOS-Dateien, Single/Medium/Double Density
- Startet beim Booten die COM-Datei "D:AUTORUN" (statt AUTORUN.SYS)
- Unterstützt XIO 40 zum Laden von OBJ/COM-Dateien (AUX1 muss 0 sein)

Einschränkungen:
- Kein DUP-Menü oder DUP-Kommandozeile vorhanden
- Ist nicht resetfest, RESET macht Kaltstart
- Funktioniert nur mit XL/XE-kompatiblem OS (nicht 400/800-OS)
- Funktioniert nur mit D1:, max. 1 Datei gleichzeitig offen
- Kann keine Dateien erzeugen oder verlängern (mehr Sektoren)
- Keine XIO-Funktionen außer XIO 40 (wie Rename, Delete usw.)
- Keine Joker (? und *) in Dateinamen
- Kein Diskwechsel von Single/Medium nach Double Density oder umgekehrt

Weitere Details siehe udosde.txt bzw. udosen.txt im ZIP oder in Kurzform in udos.txt im ATR im ZIP. Das ATR enthält auch ein paar Tools zum BASIC-Ein-/Ausschalten samt Start eines COM/XEX/BASIC-Programms. Dazu kommt noch ein leicht geändertes Turbo-BASIC 1.5, das sich auch ohne normales DOS starten lässt.

Re: uDOS (ultra small DOS)

von CharlieChaplin » Mo 25. Mai 2020, 19:41
Hehe,

nach XBDOS und FoxDos nun uDOS - klasse! Wobei dieses Tool durchaus auch ein Release im Abbuc Magazin verdient gehabt hätte...

Was ist eigentlich aus der neuen Version von XDOS geworden, die du mir mal auf der JHV gezeigt hattest (mit vielen externen Tools und daher deutlich niedrigerem memlo als XDOS 2.4x)...?!?

Re: uDOS (ultra small DOS)

von pps » Di 26. Mai 2020, 14:44
Cool, das passt sowas von genial... Ich bin gerade am schreiben... Das DOS werde ich sehr bald ausprobieren.

Re: uDOS (ultra small DOS)

von Dietrich » Di 26. Mai 2020, 18:27
Das freut mich! Ich hatte schon befürchtet, dass das niemand brauchen kann - das Einsatzgebiet für uDOS ist ja recht speziell. Es ist schon cool, was man in den Bootsektoren so unterbringen kann!

Ich habe überlegt, ob ich uDOS fürs Magazin vorsehe. Aber da es fürs nächste wohl zu spät ist und es ähnliche DOSse bereits gibt, habe ich es nun hier untergebracht. Ich habe aber nichts dagegen, wenn es auch in ein ABBUC-Magazin kommt.

XDOS 2.5 habe ich schon länger im Einsatz. Allerdings bin ich mit ein paar Kleinigkeiten noch nicht zufrieden. Außerdem fehlen noch ein paar Treiber und Tools, darunter die 3 größeren Brocken Editor, Konfig-Programm und Filemanager. Am Editor bin ich gerade dran - dank Corona mache ich jetzt Dauer-Homeoffice und spare so jeden Tag 90-120 Minuten Fahrtzeit - echt toll :)

So niedrig ist LOMEM bei XDOS 2.5 aber nicht, ohne Treiber sind wir bei $1D60, mit RAM-Disk-Treiber bei $1DF0 wie bisher.

Re: uDOS (ultra small DOS)

von pps » Di 26. Mai 2020, 19:01
Ich habe ja noch nie mit Nachladen gearbeitet, außer zusammengehängte Dateien mit ini, aber halt nicht über Dos. Daher tippe ich mal, dass ich Dir einige Fragen per PM schicken werde, wie ich das korrekt machen muss. CIO etc. ist noch komplettes Neuland für mich, aber für das Spiel wird es dringend benötigt.
Es ist noch nicht abschließend sicher, aber momentan muss ich schon ab $1700 laden. Das könnte bei den meisten DOS schon nicht mehr gehen. Ich habe den Code noch nicht komplett optimiert, aber so viel geht nicht mehr und einige Sachen müssen noch rein... Es soll aber auf 64k Rechnern und auch ohne Modul laufen, also passt Dein DOS wohl perfekt.

Das DOS von XXL habe ich natürlich schon gesehen, aber er schreibt gerne so, dass einige Rechner außen vor bleiben... Das wäre dann nicht so schön.

Re: uDOS (ultra small DOS)

von CharlieChaplin » Di 26. Mai 2020, 19:48
@pps:
Wenn dein Programm kein RAM unter dem OS benutzt, dann könntest du DOS 2XL vom Autor von Atari++ (thorfdgb oder so ) benutzen. Dieses DOS kann zwar nur 90k und 130k, es nutzt aber fast ausschließlich RAM unter dem OS und hat daher ein memlo von $0794. Es ist, wie zu erwarten, dem DOS XL nachempfunden und daher auch DOS 2 kompatibel (laden + speichern geht normal) und unterstützt auch Autorun.SYS...

Wenn du doch das RAM unter dem OS benötigst, könntest du dir mal LiteDOs 2.x oder 3.x von Mr. Atari anschauen. Dies hat ein memlo von $1000, unterstützt alle möglichen und unmöglichen Formate bis 16MB, ist jedoch leider nicht mehr 100% DOS 2 kompatibel. (LiteDOs kann DOS 2 und MyDOs Formate lesen und ins LiteDOs Format umkopieren; DOS 2 kann wiederum nur die DIR von LiteDOs anzeigen und weder Dateien davon laden, noch darauf schreiben.)

@Dietrich:
Ich freue mich immer über gute Bootloader, mini-DOSse, etc., mit denen ich A8 Programme laden kann, die sonst unter keinem DOS laufen wollen, z.B. alte Abtipplistings die für Betrieb mit dem Datenrekorder gemacht wurden und das DOS überschreiben. (Als nicht-Programmierer kann ich solche Listings ja nicht ändern, also suche ich immer nach Programmen, mit denen ich sowas trotzdem von Diskette laden kann.)

Von C.Strotmann gab/gibt es das 3-Sektor-DOs für Basic-Programme, leider lädt es absolut nix automatisch, man erhält nur den READY Prompt und muss alle Basic Programme manuell laden (oder ich habe noch nicht rausgefunden, wie das dort automatisch geht). In meiner Sammlung habe ich noch ein altes Antic oder Analog Listing, namens "Sequential DOS", damit kann man Basic-Dateien mit dem Befehl CLOAD oder RUN"C:" von Diskette (sic!) laden - aber auch nur manuell, nach dem Erscheinen des Ready-Prompts. (Und es wird ein eigenes Bootformat verwendet, so dass man die Dateien recht umständlich dazu umkopieren muss.) Von XXL gibt es das XbootDOS, es hat mir schon recht gute Dienste geleistet - doch wie schon erwähnt, hat XXL ja die böse Angewohnheit best. A8 Hardware zu boykottieren (U1MB, Incognito, 65816/65802, etc.) und baut absichtlich Code in seine Programme ein (Spiele, Demos, etc.), damit sie damit nicht funktionieren. Zwar besitze ich diese A8 Hardware nicht und es könnte mir dann egal sein, doch unterstütze ich so ein Verhalten nur ungern. Von x0F gab es das FoxDos, das ich bisher aber noch nicht getestet habe, vermutlich lädt es auch nur ML-Dateien... Werde nun also dein uDOS ausführlich testen. Bei meinem Tape2Disk Projekt sind ja auch div. Basic-Tapes dabei, die mit DOS nicht laufen wollen (und die meisten CSIM. unterstützen kein Basic).

War auch so böse, bei (Atari) DOS 2.5 mal das absolute minimum zu konfigurieren, nämlich 1 Laufwerk und 1 Buffer. Damit hat DOS 2.5 ein memlo von 1Bxx oder 1Cxx und lädt zumindest immer noch Basic Dateien anstandslos (auch wenn diese aus mehreren Dateien bestehen und neben Run"D:..." scheint auch Open"D:..." weiter zu funkt.). Ist aber nur eine Notlösung für einige kommerz. Basic-Tapes.

Re: uDOS (ultra small DOS)

von pps » Di 26. Mai 2020, 20:03
CharlieChaplin hat geschrieben:Wenn dein Programm kein RAM unter dem OS benutzt, dann könntest du DOS 2XL vom Autor von Atari++ (thorfdgb oder so ) benutzen. Dieses DOS kann zwar nur 90k und 130k, es nutzt aber fast ausschließlich RAM unter dem OS und hat daher ein memlo von $0794. Es ist, wie zu erwarten, dem DOS XL nachempfunden und daher auch DOS 2 kompatibel (laden + speichern geht normal) und unterstützt auch Autorun.SYS...

Hallo Andreas,

Das DOS habe ich bisher noch nicht registriert... Hoffe ich werde nicht gesteinigt, wo ich doch die Domain für den ATARI++ spende seitdem er damals nur noch schwer auf der alten Domain zu erreichen war, weil alles voller Werbung und Popups war ;)

Dennoch reicht sehr wahrscheinlich das uDOS aus und nur im Bootsektor ist natürlich dann auch schnell geladen ;)

Re: uDOS (ultra small DOS)

von Dietrich » Di 26. Mai 2020, 20:19
@pps:
Beachte, dass uDOS nur wenige Fehlerchecks auf unzulässige Aufrufe hat (384 Bytes für ein DOS sind echt wenig). Wenn du noch keine Erfahrung mit CIO hast, teste deine Routinen am besten erst mit einem normalen DOS (mit Prüfung des CIO-Returncodes), bevor du uDOS benutzt.

Ich habe mal etwas Beispielcode für dich geschrieben (ungetestet!):
(Ich musste das txt in ein zip verpacken, weil das Forum txt-Dateien nicht erlaubt.)

Re: uDOS (ultra small DOS)

von pps » Di 26. Mai 2020, 20:36
Dietrich hat geschrieben:@pps:
Beachte, dass uDOS nur wenige Fehlerchecks auf unzulässige Aufrufe hat (384 Bytes für ein DOS sind echt wenig). Wenn du noch keine Erfahrung mit CIO hast, teste deine Routinen am besten erst mit einem normalen DOS (mit Prüfung des CIO-Returncodes), bevor du uDOS benutzt.

Ich habe mal etwas Beispielcode für dich geschrieben (ungetestet!):
(Ich musste das txt in ein zip verpacken, weil das Forum txt-Dateien nicht erlaubt.)

Danke für die Hilfe. Ich habe schon begonnen im Profibuch zu lesen (auf dem Weg zur/von Arbeit, jetzt darf ich ja wieder da hin), wie das alles geht. Ich muss nämlich unterschiedliche Levels laden können. Das geht mit der Methode alles zusammenzuhängen ja eher nicht. Abspeichern könnte auch noch dazu kommen, sollte ich noch Platz für eine schöne Statistikfunktion übrig haben... Aber wir schauen mal, was geht. Derzeit bin ich dabei einen passenden PM Multiplexer zum basteln, da ich noch etwas mehr Farbe im Spiel benötige ;)

uDOS (ultra small DOS)

von Erhard » Do 28. Mai 2020, 13:11
Hi,

Dietrich hat geschrieben:Hi,
- Kann Dateien mittels D:-Handler lesen und überschreiben wie jedes andere DOS

- Kann keine Dateien erzeugen oder verlängern (mehr Sektoren)


was ist mit "überschreiben" gemeint, wenn es keine Datei erzeugen oder verlängern kann?

MfG, Erhard

Re: uDOS (ultra small DOS)

von atarixle » Do 28. Mai 2020, 14:47
Ich vermute mal, dass es eine Datei, die 1024 Bytes groß ist, mit weniger oder genau 1024 Bytes überschreiben kann.

Re: uDOS (ultra small DOS)

von Dietrich » Do 28. Mai 2020, 18:46
Genau, man kann vorhandene Dateien überschreiben. Die neu beschriebene Datei kann auch länger als die alte sein, soweit die Daten in die Sektoren der Datei noch reinpassen (uDOS kann nicht auf die VTOC zugreifen). Genaue Details zum Schreiben siehe udosde.txt im Zip.

uDOS (ultra small DOS)

von Erhard » Fr 29. Mai 2020, 14:26
Hi,

verstanden, danke.

CU, Erhard

Re: uDOS (ultra small DOS)

von CharlieChaplin » Fr 29. Mai 2020, 15:54
Hallo Stefan,

heute kam ich endlich dazu uDOs zu testen - und es funkt. leider nicht. Vermutlich mache ich irgendetwas falsch. Wollte testweise ein Atari Basic Programm mit uDOS laden und bekam nur den Ready Prompt. Das gleiche Programm mit XBootDOS lief. Hier meine Vorgehensweise:

XBootDOS (memlo $0980):
1) Disk mit 90k formatiert und XBootDOs darauf initialisiert
2) Autorun draufkopiert (es lädt Basic und ML Dateien, Start.BAS bzw. Start.COM)
3) das kurze Basic Titelprogramm draufkopiert und in Start.BAS umbenannt (es zeigt einen Gr. 2 Titel an und lädt sodann das Spiel)
4) das Basic Spiel draufkopiert
5) neu gebootet - Titel wird angezeigt, Spiel wird geladen und läuft

uDOS (memlo $0937):
1) Disk mit 90k formatiert und uDOs darauf initialisiert
2) RUNBAS.COM draufkopiert und in Autorun umbenannt (es lädt Basic Dateien mit Namen Autorun.BAS)
3) das kurze Basic Titelprogramm draufkopiert und in Autorun.BAS umbenannt (es zeigt einen Gr. 2 Titel an und lädt sodann das Spiel)
4) das Basic Spiel draufkopiert
5) neu gebootet - es erscheint nur der Ready Prompt (entweder wird die Autorun Datei oder die Autorun.BAS Datei nicht geladen) ?!?

Damit du das genauer begutachten kannst, schicke ich dir mal beide Varianten als ATR Images zu. Vielleicht findest du ja den Fehler, vermutlich von mir verursacht...

Re: uDOS (ultra small DOS)

von Dietrich » Fr 29. Mai 2020, 22:28
Hi Andreas,

danke für den Test. Das Problem ist das RUNBAS.COM: Die hier benutzte Methode zum BASIC-Pgm-Start funktioniert nicht, wenn das Pgm nachlädt. Ich habe nun einen anderen Weg zum BASIC-Pgm-Start benutzt. Außerdem habe ich noch einen kleinen Fehler in RUNUDOS.COM gefunden, der dazu führt, dass manchmal "Disk #1 Status error" angezeigt wird. Im angehängten Zip ist beides korrigiert (alle anderen Dateien - auch uDOS selbst - sind unverändert).

Re: uDOS (ultra small DOS)

von CharlieChaplin » Sa 30. Mai 2020, 12:58
Danke Stefan!

Jetzt funktioklappt uDOS mit Basic Dateien so wie ich es möchte... prima!

Re: uDOS (ultra small DOS)

von pps » Mo 1. Jun 2020, 17:25
@Dietrich: Du hast PN ;)

Re: uDOS (ultra small DOS)

von Dietrich » Mo 19. Okt 2020, 18:09
Übrigens kommt uDOS auf den aktuellen ABBUC-Disks (Mag 142, Sondermag 52) gleich dreimal zum Einsatz:

Einmal in der Bootsektor-Version auf der "go lucky"-Disk und zweimal als RUNUDOS.COM zum Starten des Shooters Last Squadron und der Twiddles Demo, weil diese Pgme ein niedriges LOMEM haben und Dateien nachladen.

Und Oxygene Be wird zwar mit LiteDOS ausgeliefert, funktioniert aber auch mit uDOS.

Scheint ein neuer Trend zu sein, nicht alles in ein Riesen-XEX zusammenzuklatschen, sondern einfach das benötigte nachzuladen, wenn der Speicher knapp wird.

Re: uDOS (ultra small DOS)

von pps » Mo 19. Okt 2020, 18:20
Also für mein Game hat das einfach am besten gepasst - und bei Dir bin ich mir sicher, dass Du nicht extra den Code so schreibst, dass das DOS auf bestimmten Rechnern nicht läuft. uDOS lief mir genau im richtigen Moment über den Weg, da ich genau das machen wollte: mehrere Level in einer Auswahl haben, die dann geladen werden können.

XXL hatte ja gerade auch sowas am Start - aber er hat ja was gegen die U1MB. Da habe ich garnicht mehr probiert. Schade, dass er so vehement seine Programme so schreibt, dass alle Rechner mit dieser Erweiterung inkompatibel sind. Wie gesagt, das xDOS ist vielleicht ja nicht so, aber ich habe es sofort nach Erscheinen von uDOS nicht mehr probieren wollen.

Vielen Dank für diese Arbeit.

uDOS (ultra small DOS)

von Erhard » Di 20. Okt 2020, 15:45
Hi Dietrich,

wie sieht denn der Unterschied zwischen OPEN 8 und OPEN 12 genau aus?

Da NOTE und POINT nich verfügbar sind kann bei OPEN 12 ja auch nur vom Dateianfang an geschrieben werden.

Und die Anmerkung "Dateilänge sollte 1 Sektor sein (sonst wird die überschriebene Datei evtl. zu lang" bei OPEN 8 verstehe ich auch nicht so wirklich.

Was passiert denn, wenn man eine Datei hat, die was weiß ich 3 Sektoren lang ist, eine Länge von 301 Byte hat und man schreibt z.B. 267 Bytes?

Atari DOS 2.0 hat ja im Sektor am jeweiligen Sektorende 3 Byte zur Verlinkung, zur Benennung der Dateinummer und zur Füllstandsanzeige des Sektors. Das ist ja meiner Erinnerung nach beim MyDOS-Format anders. Den ganzen Krempel hast Du in die 384 Bytes bekommen?

CU, Erhard
1, 2