Monatsarchiv: Dezember 2012

ATR Open

Kleiner Erfolg. Alle „Kernel- Routinen“ laufen. Die erste höher Funktion ist auf dem Weg: „rfile“, wir können nun eine Datei lesen. Das tracen funktioniert, nur das Kopieren der Daten in den Buffer muss noch richtig programmiert werden.

"rfile" liest eine Datei und ermittelt dabei die exakte Dateigröße.

„rfile“ liest eine Datei und ermittelt dabei die exakte Dateigröße.

 

Advertisements

Inside Atari DOS

Unerlässlich für jeden der verstehen möchte wie der ATARI Disketten verwaltet. Die digitale Ausgabe findet sich bei: http://www.atariarchives.org/iad/

Compiled by Bill Wilkinson,  Optimized Systems Software, Inc.  Published 1982

Compiled by Bill Wilkinson,
Optimized Systems Software, Inc.
Published 1982


ATARI DOS 2.x unter MAC OS X…..

….derzeit eine Sammlung grundlegender Funktionen in „C“. Nicht mehr.

Mit grundlegend bezeichne ich derzeit zwei Hauptgruppen von C- Subroutinen die ich zur Zeit entwickele. Die eine möchte ich gerne als „Kernel- Funktionssatz“ benennen. Das sind solche Programmteile die als Bausteine der zweiten Funktionsgruppe dienen, die wiederum komplexere Aufgaben übernehmen und sich aus Funktionen der ersteren zusammensetzen.

Zur Gruppe der „Kernel- Funktionen“ gehören beispielsweise:

  • fgetstart
    Liefer den Startsektor eines Files zurück
  • fgetnext
    Liefert die Nummer des nächsten Sektors in der File- Sektor- Kette zurück
  • fgetstat
    Liefert den Status eines Files zurück
  • fgetscnt
    Liefer die Anzahl der Sektoren die durch das File belegt werden zurück
  • fgetfno
    Liefert den Index des Files entsprechend seines Auftretens im Directory zurück

Die Zweite Funktionsgruppe „Komplexe Funktionen:

Als Beispiel dazu der Funktionsteil „readfile“.

Der Funktion „readfile“ übergeben wir den Dateinamen und den Speicherbereich in dem wir die gelesenen Daten ablegen möchten. Die Funktion tut nun das Folgende:

  1. Rufe „fgetstart“ -> Der Startsektor der Datei ist nun bekannt. Falls die Datei nicht existiert, wir Null  zurückgegeben.
  2. Lese 125* Datenbytes ab dem ermittelten ersten Sektors in den Buffer.
  3. Rufe „fgetnext“ -> der nächste Sektor ist nun bekannt. Wird Null zurückgegeben, dann war das der letzte Datensektor der Datei.
  4. Lese 125* Datenbytes ab dem ermittelten Sektor und fahre ab Schritt 3 fort.

Das War’s DOS 2.x macht es nicht anders……

DOS= Disk Operating System:

Das DOS – oder genauer: Das (F)ile (M)anagement (S)ystem  des Atari DOS –  hat die Aufgabe die Sektoren einer Diskette geordnet nach Datei- Namen zu verwalten. Dazu legt das DOS drei wesentliche Datenstrukturen an. Die erste ist das schon erwähnte „Directory“. Die zweite Struktur ist die „Volume Table of Contents“ die VTOC und die Dritte der Datensektor selbst.

Das Directory identifiziert die Dateien eindeutig, enthält den Status einer Datei, den Starsektor und die Anzahl der Sektoren die die Datei auf der Diskette belegt. Die VTOC gibt Auskunft über die Anzahl der verfügbaren Sektoren, der belegten Sektoren und zeigt für jeden Sektor auf der Diskette ob er belegt oder frei ist. Der Datensektor selbst enthält die Daten der Datei und Informationen darüber, wieviele Bytes des Sektors für Daten genutzt werden, die Nummer der Datei zu dem die Daten gehören und schließlich den Zeiger auf den nächsten Datensektor der zur Datei gehört (Steuerbytes. In diesem Fall 3=3 x 8 Bit=24 BIT). Enthält der Zeiger auf den nächsten Sektor eine „0“, handelt es sich um den letzten Sektor der Datei.

Ausgabe der VTOC einer DOS 2.x formatierten Diskette

Ausgabe der VTOC einer DOS 2.x formatierten Diskette.

Die VTOC besteht im wesentlichen aus 90 Bytes. Jedes Bit repräsentiert einen Sektor (90 x 8=720 mögliche Sektoren). Bit gesetzt bedeutet: Sektor frei.

Eine Kleine Einschränkung: Einen DOS 2.x Emulator kann und will sich die angestrebte Funktionssammlung für die Programmiersprache „C“ nicht nennen . Das DOS welches auf der original Hardware eines Atari Computers läuft, ist wesentlich umfangreicher und komplexer. So kann das original DOS bis zu 8 Laufwerke und in der Summe max. 8 geöffnete Dateien verwalten. Weder das letztere noch die damit zusammenhängende Verwaltung des RAM- Speichers leistet die beschriebene Funktionssammlung. Ziel des Projektes ist es lediglich die wichtigsten Teile des DOS 2.x in C abzubilden um Disk Image- Files auf MAC OS  oder, einer beliebig anderen Platform , ohne den „Umweg“ über einen Emulator bearbeitbar zu machen.

Tiefer Einblicke zum original DOS gewährt das (Standard?)Werk: „Inside Atari DOS“ .

*Jeder Sektor einer im single density Format formatierten Diskette kann mit 128 Bytes beschrieben werden, Jeder Sektor einer im double density Format formatierten Diskette kann mit 256 Bytes beschrieben werden. Nach Abzug der 3 Steuer- Bytes bleiben jew. 125/ 253 Datenbytes übrig.


Mac Emulation…

..Mini vMac ist ein guter Einstieg:

Link zur offiziellen Homepage der Entwickler, hier im Blog, dort: Mini vMac

Etwas Hilfestellung:
Ausser den System ROM’s benötigt man die System Disk’s. Letztere finden sich bei Apple selbst auf Apple’s „older software page“.
Die System ROM’s sollte man sich von seinem eigenen Mac mit einem eigens dafür erhältlichen Utility ziehen. Näheres dazu auf der offiziellen Page der Entwickler des Emulators.

mini vMac :-)

mini vMac 🙂

Software:

Viel Spass beim ausprobieren.


Die Disketten des Atari, Dos und Co.

Aktuell versuche ich mich daran einige grundelgende Atari Dos 2.x Routinen in C zu entwickeln. Grundlage: Das bekannte ATR- File Format. Letzteres enthält, bis auf einige Header- Bytes, die Rohdaten einer Atari Diskette.

Näheres dazu hier im Blog

Den Aktuellen Stand meier Bemühungen findet man da: main.c 17.52.25
Anmerkung: Ich lerne noch! Eine der wichtigsten Fragen: Wie bestimme ich große einer Datei unter Mac OS X in C?

Im Folgenden einiges zur Organisation einer Disk im Dos 2.x Format.

Directory 

  • Ab Sektor 361
  • 8 Sektoren lang

Jeder Eintrag ist 16 Bytes lang und hat die Folgende Struktur:

  • Byte 0: Flag
  • Byte 1+2: Sektor Count. Filegröße in Sektoren (Low + High Byte)
  • Byte 3+4: File Start. Erster Sektor des Files
  • Ab Byte 5: File Name

Programmierte Grafik…..

….oder, dass Titelbild für Projekt Rock.

Der Titel macht es offiziell, Projekt Rock heißt nun „Dirt, Rocks, Diamonds and other Perils“. Wichtiger jedoch ist die Technik die im Aushängeschild meines DIY Spielchens steckt.

Verantwortlich für das Erscheinungsbild sind: Eine modifizierte Display List (Antic-Programm), das Scrolling läuft während des Vertical Blank Interrupts (VBI) und der Regenbogeneffekt wird im Hauptprogramm ausgeführt das in einer Endlosschleife läuft.

Photoshop laden und einfach zeichnen ging früher halt nicht, man musste nehmen, was man hatte……