DOS-Fragen


DOS-Fragen

von eda70 » Mi 3. Mär 2010, 17:11
Wie bekomt man denn unter mydos 4.53 die autorun.sys gestartet?
Muss die anders heißen oder wie oder was?

Wie kann ich denn bei einer Diskette die Sektorengröße via Programm abfragen?

Hat hierauf jemand eine Antwort (aus dem xdos-Thread):
wenn ich unter xdos eine Datei öffne und mit get lese,
dann zeigt er mir - wenn die Datei über den toc/diskinhaltsverzeichnis (Sec. 160-168) reicht- auch diesen an.
Ist das normal?
Machen das andere Dosse auch so?
Im meine wenn ich mit Input lese, macht er das nicht.

Re: DOS-Fragen

von HiassofT » Mi 3. Mär 2010, 18:16
eda70 hat geschrieben:Wie bekomt man denn unter mydos 4.53 die autorun.sys gestartet?
Muss die anders heißen oder wie oder was?

Nenn' sie mal AUTORUN.AR0, dann klappt's :-)

Wie kann ich denn bei einer Diskette die Sektorengröße via Programm abfragen?

Am einfachsten mit dem "Get Status" SIO Kommando. Dann ins erste der 4 Bytes schauen:
Ist Bit 7 ($80) gesetzt, handelt es sich um eine Enhanced Density Diskette.
Ist Bit 5 ($20) gesetzt, handelt es sich um eine Double Density Disk.
Ansonsten ist die Disk in SD.

Zur Unterscheidung ob es 128 oder 256 Bytes pro Sektor sind genügt es also Bit 5 auszuwerten.

wenn ich unter xdos eine Datei öffne und mit get lese,
dann zeigt er mir - wenn die Datei über den toc/diskinhaltsverzeichnis (Sec. 160-168) reicht- auch diesen an.
Ist das normal?
Machen das andere Dosse auch so?
Im meine wenn ich mit Input lese, macht er das nicht.

Nein, das ist nicht normal.

Ich verwende "Get" zB in meiner Flasher Software um die Daten in 8kb Blöcken von einem MyDos 4.53 Disk-Image zu lesen, die Daten sind dabei mehrere 100k groß und da klappt es problemlos. Gerade getestet: ein 512k File auf einem 2087 Sektor DD Image, das File belegt Sektor 4 bis 2086 (insgesamt 2073 Sektoren). Alles einwandfrei (ich verwende dabei natürlich MyDos).

so long,

Hias

Re: DOS-Fragen

von eda70 » Do 4. Mär 2010, 14:25
.AR0 hat geklappt, danke.
Als ich den Post gelesen habe, fiel mir auch weider ein so etwas in der Mydos Doku gelesen zu haben (AR0...AR9 oder so)
Kann man in MyDos auch abfragen, wie groß der 'gesperrte' Bereich rund um Sector 360 ist?
Also nach oben ist wohl fix bis 368,256, aber nach unten hängt es ja von der Diskgröße ab.

Gibt es in Mydos auch ein 'Flag' woran mans das DOs und die Version erkennen kann?
(Bei xdos $0700=$80)

Re: DOS-Fragen

von Mathy » Fr 5. Mär 2010, 00:06
Hallo Eda70

Ob's da irgendwo 'nem Flagg gibt kann ich dir nicht sagen. Es gab aber mal 'ne Liste.

MyDOS benutzt immer Sektor 360 für die VTOC (Tabelle in der vermerkt wird ob ein Sektor benutzt wird oder nicht). Ist darin nicht genügend Platz, wird zusätzlich auch noch Sektor 359 genommen, dann 358, 357, 356, usw. Der Bereich um die VTOC und die Directory ist aber in Sektor 360. Die ersten 10 Byte im VTOC Sektor geben DOS-Typ (1 Byte), Anzahl der Sektoren (2 Byte) und Anzahl der freien Sektoren (2 Byte) an (Bytes 5 - 9 waren bei DOS 2.0 reserviert oder ungenutzt, für MyDOS kann ich so schnell keine Liste finden). Ab Byte 10 (das 11. Byte also) heisst eine null "belegt" eine eins "frei".

Tschüß

Mathy

Re: DOS-Fragen

von eda70 » Fr 5. Mär 2010, 16:58
Die Nutzung 359, 358, 357, ... abwärts bei MyDos ist ja abhängig von der Disk-Größe (ausschließlich?)
Kann man bei gegebener Größe den Platzbedarf berechnen? Oder sind Start- und Endwert irgendwo abgelegt (wenn ja wie kommt man da ran?)

Re: DOS-Fragen

von Mathy » Fr 5. Mär 2010, 23:43
Hallo eda70

Hängt nur von der Disk-Größe ab und ist, wenn man die Info's in meinem vorigem Posting sich mal gut ansieht, einfach zu berechnen.

Tschüß

Mathy

Re: DOS-Fragen

von atarixle » Sa 6. Mär 2010, 18:58
eda70 hat geschrieben:Wie bekomt man denn unter mydos 4.53 die autorun.sys gestartet?
Muss die anders heißen oder wie oder was?

Wie kann ich denn bei einer Diskette die Sektorengröße via Programm abfragen?


1. siehe oben ... kann auch anders heißen, also TURBOBAS.AR0 ginge auch

2. ich rufe unmittelbar nach einem Diskettenzugriff DPEEK(776) auf, das zeigt an, wie viele Byte der zuletzt gelesene Sektor hatte (funktioniert nicht bei der MyDOS-Ram-Disk).

Beispiel:
Code: Alles auswählen
100 OPEN #1,6,0,"D:*.*":CLOSE #1
110 S=PEEK(776)+PEEK(777)*256:REM oder DPEEK(776) bei Turbo-BASIC
120 PRINT S;" Bytes pro Sektor":REM PRINT DPEEK(776) funktioniert nicht, da der PRINT-Befehl das Ergebnis immer auf 0 setzt