Kurzvorstellung neue Version BonnyDOS/286

  • Tja, ich stelle hier einmal mein Projekt vor, dem ich seit 2008 mal mehr, mal weniger, nachgehe. Gemeint ist mein kleines DOS für alle PCs mit mind. 80286-Prozessor: BonnyDOS/286.


    Nachdem ich mich damals sehr für x86-Assembler interessiert habe, aber das Programmieren für bestehende Systeme recht langweilig war, hab ich mal angefangen, mit Bootladern/Bootsektoren zu experimentieren. Als das geklappt hat, kamen rudimentäre Funktionen für die Textausgabe dazu. Dann wurde das Projekt immer komplexer - es folgen Disk-Routinen, ein Kommandozeilen-Interpreter und diverse Programme. Später dann kamen HD-Routinen dazu, so das man das ganze auch auf Festplatte installieren konnte. Mittlerweile ist das Betriebssystem recht komplex (aber noch nicht fertig) und hat auch einen "grafischen Bruder" GOS/286 (Graphical Operating System) bekommen.


    Wie der Name verrät, hat das System seinen Ursprung am CPC - bis auf das Grundprinzip des Dateisystems für Festplatten - aber nichts mit diesem gemeinsam. Hier einmal einige Stichpunkte:


    - Eigenes BFS16-Dateisystem für Festplatten
    - Admin-Modus (Schutz von Dateien/Verzeichnissen/Floppy usw.)
    - Eigener Bootmanager
    - Bis auf einige zusätzliche Programme alles in 80286-Asm geschrieben (mit FASM)


    - integrierte RAM-Disk (320K bis 1.44 MB größe, je nach extended Memory)


    Da sich hier ja viele Fans von alten Maschinen herumtreiben, und der ein oder andere sicher einen alten PC hat, würde ich mich auf Tester/User freuen :) Weitere Informationen (Handbuch, Downloads) gibt es auf http://lulu423gina.funpic.de


    Ebenso willkommen sind Anregungen und Kritik (solange diese konstruktiv ist ;) ).


    Den angehängten Screenshot habe ich an meinem 486SX-25 gemacht, direkt nach dem Booten.

  • Klaro :D


    Hab auch mal eben die V1.30g hochgeladen. Jetzt dürften die Cursor-Probleme auf bisher 2 PCs endlich behoben sein ;) Getestet wurde das Update auf meinen 4 Maschinen - natürlich erfolgreich:


    NCR 486SX-25 (Cirrus Logic 5426 onboard)
    Pentium I (NoName, mit ATI Mach 64 PCI)
    Toshiba P1-Notebook (Toshiba-eigener Chipsatz(?))
    Canon Notebook (NoName-VGA)

  • So, um dieses Thema etwas wieder zu beleben und auf den aktuellsten Stand zu halten, hier einige Neuerungen, die sich zwischenzeitlich so ergeben haben.


    BonnyDOS/286 liegt aktuell in der Version 1.31a vor - einige neue Programme (DELTREE, VIEWROMS, eine aktualisierte und überarbeitete HELP, sowie Tetris) liegt nun bei. Ebenfalls wurden einige Interna überarbeitet. In Kürze wirds noch ein Update geben, dass ein sicheres Arbeiten per Netzwerk-Boot erlaubt. So können dann mehrere User auf ein und das gleiche Platten-Image zugreifen, ohne sich gegenseitig Daten zu überschreiben.


    Bei GOS/286 gibts die meisten Neuerungen. Die Festplatten-Installation wurde komplett neu geschrieben (SETUP). Die ab und zu aufgetretenen "Ich-Kopiere-bis-ich-schwarz-werde-an-einer-Datei-herum"-Fehler sind nun beseitigt. Zwischenzeitlich gibts auch ein neues Programm für GOS: All Write! - einen Text-Editor. Wie? Noch einer? Doch, doch! Diesmal aber einer, der sich (hoffentlich) sehen lassen kann:


    - Texte mit einer Länge von bis zu 10800 Zeilen (zu je 160 Zeichen) möglich
    - Zugriff auf die GOS-API für Fonts (10 frei wählbare Schriften mit 8 bis 48 Punkt pro Dokument)
    - Kontext-Menüs (rechte Maustaste)
    - BMP-Support
    - ASCII-Im/Export
    - 9 frei definierbare Textbausteine mit jeweils bis zu 50 Zeichen länge.
    - Word-Wrapping
    - Font-Remapping (schnelles Austauschen von Schriftarten im Dokument)


    Außerdem liegt mit der "B-View Disk #1" die erste Ausgabe eines kleinen Disk-Mags vor. Es beinhaltet einige Spiele und Artikel. Laufen tut es unter GOS/286 (PC wird einfach von Disk gebootet - mehr ist nicht notwendig).


    Und am Schluß noch ein Bild von All Write!

  • Sehr schön. Kann ich das als besseres MS-DOS / IBM-DOS verstehen? Meine wichtigste Frage ist, wie weit ist das zu MS-DOS Programmen kompatibel? Kann ich Anwendungen von dort auch mit BonnyDOS ausführen? Ich würde mir es tatsächlich auch gerne installieren, ich finde solche Projekte immer sehr interessant.

    Ich mag alle Computer vom XT bis zum P3

  • Hallo,


    Sorry, hab deinen Beitrag gar nicht gesehen.


    Also: Mit MS-DOS hat BDOS nichts am Hut und umgekehrt. Du kannst also die jeweiligen Programme nicht unter dem anderen Betriebssystem starten. Man kann mit etwas Tricks aus einer EXE eine BonnyDOS-APL machen - aber da gibts einiges zu beachten und die Kompatibilität ist bescheiden. Eigentlich nutze ich sowas nur für meine Turbo Pascal-Programme (da hab ich aber auch TPUs für BonnyDOS und GOS).

    • Offizieller Beitrag

    Ich hab mir BonnyDOS zum ausprobieren mal auf einen 386SX installiert.
    Nachdem ich ein bißchen rumprobiert habe, habe ich jetzt auch mal ein paar Fragen:


    -Welche einfacheren Methode zum Datenaustausch, als Sneaker-Netzwerk (Disketten) gibt es ?
    -Kann man wirklich nur ein einziges Diskettenlaufwerk benutzen ?


    Gruß
    Christian

  • Hallo,


    tatsächlich gibts im Moment nur die Möglichkeit, per Diskette die Daten auszutauschen. Allerdings ist da schon etwas in Arbeit, so dass man bequem größere Datenmengen von einer MS-DOS-Partition hin- und herkopieren kann (mit dem hoffentlich positiven Nebeneffekt, die Programmentwicklung zu vereinfachen... aber dazu sag ich erst was, wenns wirklich klappt).


    DEVB: gibt es grundsätzlich, ist aber für eine RAM-Disk reserviert. Um diese zu aktivieren gibst Du ein:
    EXTMEM 1M
    FORMAT DEVB:


    und schon hast du eine Ram-Disk auf DEVB:


    Im Moment ist die Nachfrage nach anderen Laufwerken/Kapazitäten sehr gering, so dass ich hier ehrlich gesagt recht faul war und mich immer mit 1.44 MB DEVA: zufrieden gegeben habe :)

    • Offizieller Beitrag

    Hallo


    Kann es sein, das die Seite http://lulu423gina.funpic.de/ down ist? Da kommt im Moment nur ein 404 Error... letzte Woche ging es noch. Ich versuche gerade, meinen Toshiba T3200SX mit BonnyDOS zu beglücken.


    Gruss- Georg B. aus H.

    Denn Feindschaft wird durch Feindschaft nimmermehr gestillt; Versöhnlichkeit schafft Ruh’ – ein Satz, der immer gilt. Man denkt oft nicht daran, sich selbst zurückzuhalten; Wer aber daran denkt, der lässt den Zorn erkalten. Sprüche von Buddha, aus dem ‹Dhammapada›.


    Mein Netz: Acorn | Atari | Milan | Amiga | Apple //e und IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation und Decstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c und III | Commodore 128D | Sinclair QL | Amstrad | PDAs

  • Ja, die ist aktuell down. Habe ich gestern abend stillgelegt. Nachdem schon wieder so seltsame Sachen mit meinen im Impressum hinterlegten Daten passiert ist und außerdem seit einiger Zeit der FTP-Zugang bei Funpic spinnt, suche ich aktuell eine andere (einfachere) Möglichkeit, ein paar Zip-Archive zu parken und werde keine offizielle Homepage mehr online stellen. Falls Du was brauchst, schick mir eine PN mit deiner Mail-Adresse und ich schicke dir alles, was du brauchst.

  • FTP-Zugang zu einem per Browser erreichbaren Ordner auf meinem Server kann ich dir anbieten. Da kannst du dann einfach ZIPs reinladen und die erscheinen im Browser automatisch als Datei-Liste.

  • Das wäre cool. Die Datenmengen halten sich auch in Grenzen :)

    • Offizieller Beitrag

    Falls Du was brauchst, schick mir eine PN mit deiner Mail-Adresse und ich schicke dir alles, was du brauchst.


    Danke für das Angebot- ich hatte mir einiges schon mal gesaugt, aber eben nicht alles. Wenn das mit dem FTP Server bei Timo was wird, wäre es natürlich am besten.


    ... ansonsten: Tolle Leistung- wäre schade, wenn BonnyDOS/286 verschwinden würde!


    Gruss- Georg B. aus H.

    Denn Feindschaft wird durch Feindschaft nimmermehr gestillt; Versöhnlichkeit schafft Ruh’ – ein Satz, der immer gilt. Man denkt oft nicht daran, sich selbst zurückzuhalten; Wer aber daran denkt, der lässt den Zorn erkalten. Sprüche von Buddha, aus dem ‹Dhammapada›.


    Mein Netz: Acorn | Atari | Milan | Amiga | Apple //e und IIGS | Macintosh | SUN Sparc | NeXT |SGI | IBM RS/6000 | DEC Vaxstation und Decstation| Raspberry Pi | PCs mit OS/2, BeOS, Linux, AROS, Windows, BSD | Stand-alone: Apple //c und III | Commodore 128D | Sinclair QL | Amstrad | PDAs

  • :anbet::thumbup:


    Vielen Dank -das ging ja schnell. Ich werde mal die Software zusammen stellen und hochladen. Den Link poste ich dann hier - kann aber noch 1-2 Tage dauern. :)

  • So, den ersten Schwung habe ich mal schnell hochgeladen. Erreichbar auf http://bonnydos.retro-net.de
    Fehlt eigentlich nur noch GOS/286 und ein paar Tools (z. B. LEDIT) - die schiebe ich später nach.

  • Ich habe jetzt mal das aktuelle GOS/286-Paket hochgeladen und die neue Ausgabe des Diskmags (BViewDisk2.ZIP). Viel Spaß :)


    P.S.: Damit das Diskmag funzt, den Inhalt des ZIP-Archivs auf eine 3.5" HD-Disk kopieren und mit BOOTGEN.EXE (benötigt BOOTLD.SYS - beides liegt dem BonnyDOS- und GOS-Archiv bei) bootbar machen. Um die Disk wieder unter MS-DOS/WIN nutzbar zu machen, beendet den Schreibtisch und gebt ein: INSTALL /R

  • Im nächsten Urlaub werde ich endlich mal weiter an BDOS arbeiten können... Vielleicht baue ich den alten Task-Switcher in einer Neuauflage wieder in GOS ein :D Ein paar Programme zeitgleich im Speicher halten zu können war schon nicht schlecht :D

  • Nach einer längeren Pause geht's weiter! :) Allerdings betreffen die Neuerungen wieder GOS/286.
    1. Ich hoffe noch dieses Wochenende kommt das GOS-Update - der Grafiktreiber wird aktualisiert und der Task-Switcher soll wieder eingefügt werden, so das man mehrere Anwendungen starten kann und per Tastenkombination das Programm umschalten kann. Das Update zum Grafiktreiber soll dann auch neue (bessere) Programme nach sich ziehen (ein verbessertes Paint, sowie einen neuen Publisher). Diese beiden Punkte haben oberste Priorität. Bei bestehenden Installationen reicht es, die Systemdateien auszutauschen.
    2. Jedes Betriebssystem hat Solitär - auch GOS soll es bekommen (siehe Bild).
    3. Laufen die Arbeiten an einer Textadventure-Engine, wobei Eingaben per Mausklick gemacht werden sollen


    Weiteres in Kürze!

  • So, die wichtigsten Updates sind durch - abschließende Tests laufen noch. Sollte sich alles als ok rausstellen, dann lade ich das neue Archiv hoch. Nebenbei habe ich noch gleich SETUP so geändert, dass GOS nicht immer nur voll installiert werden kann, sondern auch nur die Systemdateien aktualisiert werden können.

  • Ich habe hier einmal das BDOS/286-Handbuch angehängt, da ich noch kein Exemplar auf bonnydos.retro-net.de habe ;)


    EDIT: Bitte die E-Mail-Adresse im Handbuch nicht mehr verwenden - die gibt es nicht mehr (Spam-Sei-Dank). :D

  • Damit endlich mal was voran geht und man nicht immer MS-DOS benötigt, um ein Programm für BDOS zu schreiben, habe ich ein neues Projekt begonnen: Einen Compiler, der direkt unter BDOS läuft.


    Anforderungen: Er soll etwas BASIC-artiges verarbeiten, Er soll direkt Maschinencode erzeugen und er soll ziemlich alle Aspekte vom DOS nutzen (inkl. Maus-Support).


    Geplant war eigentlich ein Compiler, der einen Quellcode in Pseudo-Codes übersetzt und dann einen Runtime-Interpreter dazu linkt. Aber wenn dann gleich richtig und Maschinencode erzeugen. :) Ich werde berichten. Das Grundgerüst steht schon und der Compiler kann aus dem Quelltext Variablen und Zahlen, sowie Strings extrahieren. Das ganze werde ich wohl aber noch verfeinern - aktuell werden nur drei Var-Typen unterstützt: & - Real, % - LongInt (32 Bit), $ Strings.


    Übersetzt wird bereits ein einfaches Programm wie
    PEN 15 : PAPER 0:CLS
    SYSTEM


    Auf jeden Fall soll man aber noch beliebige Bytes in den Quelltext einfügen können (=Assembler-Code usw.) und mit Includes arbeiten können. Dazu arbeitet der Compiler bereits intern mit einer Seg:Ofs-Adressierung. So ist man später nicht mehr auf 64K beschränkt. Lediglich die Variablen dürfen nur 64K belegen (Arrays sollen aber nicht dort abgelegt werden, sondern im freien Hauptspeicher). Eine fertige Anwendung wird in etwa so aufgebaut sein:


    I. APL-Header
    II. RunTime-EXE-Relocator (für diversen TP-Code, der für Laufzeit-Funktionen genutzt wird)
    III. Kompilierter Code
    IV. RunTime-Code (mit TP erzeugt)
    -------------- Freier Hauptspeicher --------------------
    Max. 64K Variablen
    --------------------------------------------------------------
    Arrays o. freier Hauptspeicher
    ----------------------- HIMEM -----------------------------
    ...ab hier beginnt KRNL286.SYS...

  • Aktuell klappt LET mit Strings und mit Integer und Real-Zahlen. Leider wollen die Bytes noch nicht wie ich es will. Aber das sollte in Kürze laufen :)

  • Weil es nun doch wieder weitergeht, gibt es eine Homepage, die zwar nicht unbedingt regelmäßig, aber doch befüllt wird: bdos286.bplaced.net.
    Die Page ist aber noch nicht fertig, die Rubriken werden nach und nach hochgeladen.

  • Sooo.... Wieder etwas Neues.
    LET für Numerische Vars klappt jetzt.


    Daneben wurde der Compiler etwas verbessert und bei der Gelegenheit noch BYTE nn,nn,nn,nn,.... integriert (damit lassen sich beliebige Daten in den Quellcode einfügen).


    Beispiel:
    LABEL bild
    BYTE ....hier liegen Grafikdaten....


    Als aktuelle Baustelle sind noch
    IF, LOCATE, INCLUDE - wenn die laufen gibt es eine erste Vorab-Version. :)

  • So, mal wieder etwas Neues :)


    INCLUDE läuft, IF läuft zu 99%, und auch sonst kommt das Projekt gut voran.


    Es gibt jetzt neben INCLUDE, BYTE (fügt Bytes in den Code ein) auch die Möglichkeit mit RAW "datei" ganze Dateien 1:1 in das kompilierte Programm zu übernehmen. Neben Tönen, Grafiken und sonstigen Daten könnten dies natürlich auch Assembler-Codes sein, die man sich mal assembliert hat.


    Mit SYS (ja, ich fand den Befehl am C64 immer cool, daher musste der auch hier rein) kann man nun solchen Code aufrufen und auch bis zu 9 Variablen übergeben. Zum Beispiel so:


    DECLARE name$, zeiger%


    LET name$ ="MOUSE " : REM aktuell noch selbst auf 9 Zeichen bringen.


    SYS detect, name$, zeiger%
    IF zeiger% = -65536 then PRINT "KEINE MAUS!":END
    .
    .
    .
    END


    LABEL detect
    RAW "detect.bin" : REM das ist das Assembler-Modul, dass die entsprechende BDOS-Funktion aufruft


    Ansonsten kann man schon fröhlich unter BDOS eigene Programme kompilieren. Jetzt fehlen noch einige grundlegende Anweisungen und dann lüppts ;)


    Neu sind auch dazugekommen:
    INK
    SYMBOL
    IF..THEN...
    LOCATE
    PNT( )
    und einiges mehr. Ein Handbuch ist in Arbeit.

  • Sehr hübsch. Jemand, der im Jahr 2017 ein BASIC schreibt. Das ist mal ein spannendes Projekt. (wie auch schon das OS dazu)


    Ich will mal dazu ein paar kleine Anmerkungen machen, die vielleicht auch als Vorschläge zur Optimierung der nächsten Version gesehen werden können, so der Programmierer es denn wolle.


    a.) die Anweisung LET ist "elend", die will man nicht haben und auch nicht tippen müssen und sieht nur im Anleitungsbuch gut aus. Viel besser ist da m.E. so eine Trennung der Notation des Gleichheitszeichens, wie es C und Pascal vormachen. Mein Wunschoptimum und darum auch Vorschlag wäre, daß man ":=" (DoppelpunktGleich) für Zuweisungen benutzt ( VAR ergibt sich aus DATUM ). Dann hat man entweder das "=" für Vergleiche frei, oder man vergibt, aus formalen Gründen und weil das Symbol dadurch überhaupt nicht belegt wird, für Vergleiche ein ähnliches Doppelzeichen, wie z.B. "==" (wie in C) oder etwa "?=" , was ich ziemlich witzig finde.
    (Wobei "==" sicher besser ist und "?=" eigentlich auch super für ein Kurz-IF-THEN wäre. ( VAR ?= 12 EXEC $2000 )) ; ":=" wäre also quasi "LET", liest und schreibt sich aber besser


    b.) Da ja Schleifen anscheinend noch nicht da sind, solltest Du Dir da mal eine Woche rein theoretische Gedanken machen, wie das verbessert werden könnte. Rein vom Schreibstil her. Mir gefiel bisher am besten sowas wie in den Commodore Basics auf C16. Da gab es als Schlüsselworte DO und LOOP und als Modifikatoren WHILE und UNTIL. Also ( DO WHILE .... LOOP ) und ( DO ... LOOP UNTIL ).


    c.) Reine Zählschleifen sollte es mit +1 / -1 als Kurzform geben. Bsp: ( DO Countervariable% UPTO Max% .... LOOP ) für +1 und ( DO Countervariable% TONULL ... LOOP ) für -1. Also zumindest so, daß man die Variable nicht manuell anfassen muß und vom Befehl her klar ist, daß es um Einzelschrittweite 1 geht.


    d.) Letzter Punkt zu Schleifen. Das Ding soll ja auch schnell sein, denk ich mal. Dafür wäre, und das ist meines Wissens dann auch ein echtes Novum, eine Option gut, wo der Programmierer entscheiden kann, ob die Schleife im Code tatsächlich als Schleife vorliegen soll, oder als viele Einzelbefehle hintereinander. Also quasi der Schleife-Ausrollen Effekt der "neueren" C64 Demos. So etwas in der Art eines einfachen Zusatzes ( was letztlich eine Art Compilerschalter ist, aber nicht so aussieht ) wie z.B. ( DO UNROLL Countervariable% ... LOOP ) oder ( DO UNROLL WHILE ... LOOP ).



    Und noch zwei Sachen, die mir im Handbuch zum BDOS aufgefallen sind. Zum einen das Root-Paßwort. "0123456789" kann man sich zwar merken, aber "1234567890" wäre genauso gut und paßt besser zur Tastenanordnung auf dem Keyboard. Aber (!) aus Marketinggründen und auch weils ja vielleicht auch so nett wäre, sollte doch eigentlich der voreingestellte StandardRoot das Paßwot "bonny" haben. :)


    Zum anderen waren da die Abbruchinhalte von Variablen bei den INC und DEC Befehlen. Ich habe das so verstanden, daß bei DEC die Variable unterhalb Null nicht weiter verringert wird, aber der Wert auf "65535" stehen bleibt. Analog beim INC. Der Überlauf wird jeweils noch gemacht, aber danach abgewiesen. Das ist nicht das Verhalten, was man da erwarten würde. Entweder man beachtet die Grenzen gar nicht, dann müßte es einfach über die Überläufe drüberlaufen und dann weiter - oder man beachtet sie, dann sollten aber als unterster Wert die und als oberster Wert eben das Maximum in den Variablen auftauchen.
    Zumindest hatte ich beim Lesen das Gefühl, daß das mal irgendwann jemandem gewaltig auf die Füße fällt, wenn er die Befehle in Skripten benutzt. Etwa wenn die Variable z.B. Sektoren enthält und nach unten gezählt wird zum Überschreiben, als letzter dann aber noch zusätzlich der allerletzte mit gelöscht wird. Oder noch schlimmer andersherum, wo es dann den Bootsektor nullt. OK, nur ein Beispiel (und sicher kein gutes), aber Du weißt nicht, was die Leute damit machen wollen.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries