Infos über mein DOS

Infos über mein DOS

Beitragvon Brueggi » Fr 22. Jul 2011, 07:24

Hallo User, hallo Wobo :-)

An die Mods: Falls das Thema hier nix verloren hat, bitte Bescheid geben und ggf. dicht machen / löschen. Aber ich denke, dass "Off Topic" ein guter Bereich dafür ist.
Seit einiger Zeit schreibe ich ja mein eigenes DOS für den PC. Zur Vorgeschichte: Vor einigen Jahren hab ich mal für den Schneider CPC (kennt den jemand hier?) eine Festplattenerweiterung geschrieben - da hat es mich schon in den Fingern gejuckt, da mal ein richtiges DOS zu machen. Irgendwann hab ich dann (mehr durch Zufall) angefangen, mit Bootsektoren und Bootcode zu experimentieren. Naja, und bis zum ersten Mini-Kernel waren es dann nur noch wenige Schritte :-)
Ein Kumpel hat irgendwann mal vorgeschlagen, ich soll es nach unserem Dackel benennen - und so kam es dann zum Namen "BonnyDOS"...

Geschrieben ist das DOS, sowie alle zugehörigen Programme in Maschinensprache. Mindestanforderung an den Computer ist ein 80286 Prozessor, 3.5"-HD Floppy und eine 256K-VGA-Karte (MCGA dürfte auch gehen) und 640K konventioneller Speicher. Der Grund, warum ich mich auf genau diese Konfiguration festgenagelt habe, ist der, das diese Konfig halt am meisten verbreitet ist. Und ich hatte mal 2 IBM PS/2-286er - da war sowas wohl normal :-) Allerdings muss beachtet werden, das es natürlich besser ist, wenn eine Festplatte vorhanden ist. Wer das DOS installieren möchte, muss nur dafür sorgen, das die Partition/en in dem Bereich liegen, der vom BIOS unterstützt wird (50x MB bei alten Rechnern, oder max. im Bereich bis zu 8 GB). BonnyDOS/286 hat einen integrierten Bootmanager - hat man also MS-DOS oder sonst was zusätzlich auf Platte, kann man bequem auswählen, welches Betriebssystem gebootet wird (dabei muss aber BonnyDOS die Bootpartition sein).
Dieses "Multi-OS-Feature" wurde auf verschiedenen Rechnern getestet - inkl. auf einem P2 mit 4 GB SCSI-Platte und Windows NT. Bisher verträgt sich alles ausgezeichnit.
Brueggi
 

Re: Infos über mein DOS

Beitragvon Brueggi » Fr 22. Jul 2011, 07:36

Da BonnyDOS/286 eine komplette Eigenentwicklung ist, kommt (auf Festplatte) natürlich auch ein eigenes Dateisystem zum Einsatz: BFS16. Eigentlich für den CPC entwickelt, wurde es leicht modifiziert und läuft nun unter V2.0 am PC. Disketten verwenden natürlich FAT12 - das erleichtert den Datenaustausch enorm, bis andere Treiber mal fertig sind. Folgende Leistungsmerkmale (neudeutsch "Features") fallen mir so spontan ein:

- Administrator-Modus (sperrt Zugriff auf Dateien/Verzeichnisse, sperren von FORMAT oder Disklaufwerken, usw.)
- Natürlich dürfen Env-Variablen nicht fehlen
- Autovervollständigung von Dateinamen (TAB-Taste)
- Schnelles Öffnen von Dateien mit SmartOpen (man gibt z. B. BUCH.TXT ein, und schon öffnet sich die mit .TXT-Dateien verknüpfte Anwendung samt Dokument)
- Online Hilfe (ala HELP <kapitel>)
- Validate-Funktion (sollte mal eine Datei nicht ordnungsgemäß geschlossen worden sein, wird dies beim nächsten Start "angeprangert" und Schreibzugriffe so lange gesperrt, bis sich der Anwender bemüht, das beiliegende HDDIAG auszuführen)

Bei der Entwicklung habe ich versucht, alles, was mir an anderen Systemen gefällt, einzubauen. So kann man z. B. mit Hilfe des Befehls RESIDENT Programme in den Arbeitsspeicher laden - ruft man das Programm dann von der Eingabeaufforderung auf, wird die Kopie im Speicher verwendet. Gerade wenn man nur mit einem Disklaufwerk ausgerüstet ist, oder nichts installieren möchte, spart man u. U. viel Zeit, da nicht mehr alles nachgeladen werden muss.

Die meisten Dinge sind optional und können natürlich auf Wunsch deaktiviert werden. So auch die Farbausgabe an der Eingabeaufforderung. So hebt DIR z. B. bis zu 14 beliebige Dateitypen farblich hervor, um diese schnell unterscheiden zu können. Von Haus aus werden APL-Dateien (Anwendungen) grün, SCR-Dateien (Scripts) Lila, Directories dunkelgrau und Textdateien (TXT) türkis gekennzeichnet (lässt sich aber ändern).
Brueggi
 

Re: Infos über mein DOS

Beitragvon Brueggi » Fr 22. Jul 2011, 07:41

Erstmal ein paar Screenshots, um einen besseren Einblick zu erhalten. Die Bilder wurden zum Teil mit BMPSAVER (eigenes Tool, das den Textbildschirm als BMP-Datei speichert), Teils unter QEMU (PC-Emulator) gemacht.
Dateianhänge
BILD3.jpg
Die Partitionierungs-Software
BILD3.jpg (39.96 KiB) 5616-mal betrachtet
BILD2.jpg
INFO zeigt Speicher/Programme/File-Kommentare.
BILD2.jpg (56.09 KiB) 5616-mal betrachtet
BILD1.jpg
Direkt nach dem Bootvorgang
BILD1.jpg (35.52 KiB) 5616-mal betrachtet
Brueggi
 

Re: Infos über mein DOS

Beitragvon Brueggi » Fr 22. Jul 2011, 08:01

Ein paar Programme (meist kleinere Tools) sind auch schon fertig, zum Beispiel ein Sokoban-Clone mit 100 Levels, oder ein Programmpaket, das es erlaubt, Boot-Pictures (320*200/256 Farben) zu verwenden. Weitere Software kommt natürlich - aber als Ein-Mann-Baustelle ist es etwas schwierig, schnell für Nachschub zu sorgen. Nach langer Zeit ist dann auch ein Handbuch fertig geworden - zwar noch nicht 100% (Rechtschreibprüfung fehlt z. B.), aber ich hoffe, das sich Neulinge damit zurecht finden werden. Vor kurzem hab ich dann noch ein "Schmankerl" vom CPC übernommen, auf Wunsch werden von Dateien vor dem Überschreiben (unabhängig von der laufenden Anwendung) BAK-Dateien angelegt, so das man den letzten Stand noch griffbereit hat.... Ich hoffe die Neugier ist befriedigt - Bei Fragen: Einfach fragen :-) Falls jemand das Handbuch mal haben möchte, einfach eine PN an mich.

Anbei noch ein Screenshot der Eingabeaufforderung von BDOS, und ein paar Bilder von GOS/286 (grafische Benutzeroberfläche bzw. Betriebssystem-Aufsatz).
Dateianhänge
TASKMAN.jpg
Der "Taskmanager"
TASKMAN.jpg (64.29 KiB) 5614-mal betrachtet
DESKTOP2.JPG
Eigenschaften einer Verknüpfung....
DESKTOP2.JPG (51.6 KiB) 5614-mal betrachtet
DESKTOP.JPG
GOS/286 - Schreibtisch (About-Box)
DESKTOP.JPG (126.31 KiB) 5614-mal betrachtet
BILD4.jpg
Das (bunte) Verzeichnis.
BILD4.jpg (22.65 KiB) 5614-mal betrachtet
Brueggi
 

Re: Infos über mein DOS

Beitragvon Dosenware » Fr 22. Jul 2011, 11:53

Fast: Wo kann man es herunterladen? ;)
Benutzeravatar
Dosenware
DOS-Gott
 
Beiträge: 3529
Registriert: Mi 24. Mai 2006, 19:29

Re: Infos über mein DOS

Beitragvon Brueggi » Fr 22. Jul 2011, 18:34

Einen Download gibts nicht, weil die Seite uralt ist :-) Aber ich schick dir mal das Archiv wenn du magst :-)
Brueggi
 

Re: Infos über mein DOS

Beitragvon wobo » Fr 22. Jul 2011, 19:50

Wow! Der erste Eindruck übertrifft all' meine Erwartungen. So etwas Aufwendiges und anscheinend weit Fortgeschrittenes habe ich nicht erwartet. Ich war eher auf was "rohgerüstigeres" vorbereitet. Ich gebe hiermit meine Bestellung auf: Einmal die Testversion bitte nebst Handbuch! PN kommt.
wobo
DOS-Guru
 
Beiträge: 555
Registriert: So 17. Okt 2010, 13:40

Re: Infos über mein DOS

Beitragvon Brueggi » Sa 23. Jul 2011, 09:02

@Wobo: Mail ist raus. Und jetzt bist Du dran - ich warte auf dein Spiel :-)
Brueggi
 

Re: Infos über mein DOS

Beitragvon Brueggi » So 24. Jul 2011, 13:38

Neuigkeiten: Mit Hilfe eines selbstgebastelten Tools kann man compilierte (EXE-File) TP-Programme schonmal direkt unter BDOS laufen lassen :-)
Dateianhänge
TP.JPG
TP.JPG (42.06 KiB) 5561-mal betrachtet
Brueggi
 

Re: Infos über mein DOS

Beitragvon Brueggi » Mo 25. Jul 2011, 10:10

Giana32K.EXE funzt als konvertiertes Programm ebenfalls, sogar mit SB-Unterstützung :-)

Leider ist der "MS-DOS-API-Emulator", der in den Lader eingefügt wird, noch etwas mager, bisher werden nur unterstützt:
DisplayString
DirectConsoleIO
ReadKeyboard
AllocMem (abgespeckt)
GetIntVec
SetIntVec
TerminateProgram und
TerminateProcess

TP macht bisher keine Zicken, nur Randomize liefert immer die selben Zufallszahlen - muss noch herausfinden, woran das liegt... :-)
Über BDOS286.TPU kann man immerhin schon Dateien auslesen, residente Programme suchen und den Cursor an/abschalten. Kommandozeilen-Parameter laufen ja weiterhin über ParamStr und ParamCount :-)

Gruß,

Brueggi
Brueggi
 

Re: Infos über mein DOS

Beitragvon Brueggi » Di 26. Jul 2011, 12:07

Keine Ahnung wieso, aber GRAPH.TPU geht jetzt auch :-) Offenbar hab ich wohl nen Pointer falsch gesetzt im PAS-File - nun klappts :-)
Voraussetzung: BGI-File in die EXE linken mit $L.
Brueggi
 

Re: Infos über mein DOS

Beitragvon DOSferatu » Di 26. Jul 2011, 18:19

Was randomize angeht: Der Befehl initialisiert bekanntlich den randseed auf einen "Zufallswert", von dem ausgehend die RANDOM() Funktion dann eine Folge von Zufallswerten generiert. Soweit ich weiß, holt randomize dazu Daten für Datum und Uhrzeit und glaub noch irgendwo aus einem Chip. Ich könnte ja mal ein kleines TP Programm schreiben, das randomize ausführt und dann im compilierten Code nachschauen, wo genau er die Daten dafür hernimmt. Sollten es Speicherstellen oder Ports oder wasweißich sein, die Dein OS nicht supportet (nicht mit Werten befüllt, etc), so wäre geklärt, wieso randomize immer dieselben Startwerte liefert.
DOSferatu
DOS-Übermensch
 
Beiträge: 1095
Registriert: Di 25. Sep 2007, 11:05

Re: Infos über mein DOS

Beitragvon elianda » Di 26. Jul 2011, 20:17

Code: Alles auswählen
   TITLE   RAND

   INCLUDE   SE.ASM

DATA   SEGMENT   WORD PUBLIC

; Externals

   EXTRN   RandSeed:DWORD

DATA   ENDS

CODE   SEGMENT   BYTE PUBLIC

   ASSUME   CS:CODE,DS:DATA

; Publics

   PUBLIC   RandInt,RandReal,RandFloat,InitRand

; Random standard function (Integer)

RandInt:

   CALL   NextRand
   MOV   BX,SP
   MOV   CX,DX
   MUL   WORD PTR SS:[BX+4]
   MOV   AX,CX
   MOV   CX,DX
   MUL   WORD PTR SS:[BX+4]
   ADD   AX,CX
   ADC   DX,0
   MOV   AX,DX
   RETF   2

; Random standard function (Real)

RandReal:

   CALL   NextRand
   XCHG   AX,BX
   MOV   AX,80H
   MOV   CX,32
@@1:   TEST   DH,80H
   JNE   @@2
   SHL   BX,1
   RCL   DX,1
   DEC   AL
   LOOP   @@1
   XOR   AL,AL
@@2:   AND   DH,7FH
   RETF

; Random standard function (8087)

RandFloat:

   CALL   NextRand      ;Compute next random number
   FILD   CS:ConstScale      ;Load -32
   FILD   RandSeed      ;Load 32-bit random integer
   FADD   CS:ConstDelta      ;Scale to 32-bit positive integer
   FSCALE            ;Scale so 0<=ST<1
   FSTP   ST(1)         ;Remove scaling factor
   FWAIT            ;Wait for result
   RETF

; Scaling constants

ConstDelta   DD   2147483648.0
ConstScale   DW   -32

; Compute next random number
; New := 8088405H * Old + 1
; Out   DX:AX = Next random number

NextRand:

   MOV   AX,RandSeed.w0
   MOV   BX,RandSeed.w2
   MOV   CX,AX
   MUL   CS:Factor      ;New = Old.w0 * 8405H
   SHL   CX,1         ;New.w2 += Old.w0 * 808H
   SHL   CX,1
   SHL   CX,1
   ADD   CH,CL
   ADD   DX,CX
   ADD   DX,BX         ;New.w2 += Old.w2 * 8405H
   SHL   BX,1
   SHL   BX,1
   ADD   DX,BX
   ADD   DH,BL
   MOV   CL,5
   SHL   BX,CL
   ADD   DH,BL
   ADD   AX,1         ;New += 1
   ADC   DX,0
   MOV   RandSeed.w0,AX
   MOV   RandSeed.w2,DX
   RET

; Multiplication factor

Factor      DW   8405H

; Randomize standard procedure

InitRand:

   MOV   AH,dosGetTime
   INT   DOS
   MOV   RandSeed.w0,CX
   MOV   RandSeed.w2,DX
   RETF

CODE   ENDS

   END


Also nichts weiter als die Uhrzeit... (Source von BP7)
Diverse Retro-Computer vorhanden.
elianda
DOS-Übermensch
 
Beiträge: 1140
Registriert: Mi 31. Jan 2007, 19:04
Wohnort: Halle

Re: Infos über mein DOS

Beitragvon Brueggi » Mi 27. Jul 2011, 16:39

Vielen Dank für Eure Hilfe, Problem ist bereits gelöst (offenbar) - ich hab einfach noch die DOS-Funktion GetTime in den "Emulator" aufgenommen, und schon klappts auch mit Randomize :-) Hatte einen Blick in die TP-Hilfe geworden, da stand was von der System-Clock - warum man das dann aber per MS-DOS, und nicht per BIOS macht, weiss ich nicht, aber egal - es klappt :-)
Brueggi
 

Re: Infos über mein DOS

Beitragvon Brueggi » Di 9. Aug 2011, 14:29

So, nächste Woche gibts hoffentlich eine neue Version und (daumen drücken!) ne Homepage, wo man das komplette Material auch herunter laden kann :-)
Brueggi
 

Nächste

Zurück zu Programmierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste