Monatsarchiv: April 2014

FAT

Wie das MS- DOS Dateisystem funktioniert…

Wer könnte das nicht besser beschreiben als der Autor der ersten Version des bekannten Betriebssystems selbst, Tim Paterson:

Inside look at MS- DOS
Verlinkt: 16.6.2014

Advertisements

Gary Kildall

Ein Special über den Macher des CP/M aus dem Jahr 1995 auf Computer Chronicles

Verlinkt: 16.6.2014

Ein paar Stichworte:

  • 1974: CP/M erscheint. Historischer Kontext: CP/M und Unix = „Zeitgenossen“
  • BDOS: Basic Disk Operating System= Hardware unabhängig
  • BIOS: Basic Input/ Output System= Hardware abhängig
  • Sonderheit und „das erste Mal“: Trennung von Physischer und Software- Ebene, also von BDOS und BIOS
  •  Kernel: BDOS, monolitisch

Plot Routine, ein Geschwindigkeitsvergleich

Im Basic Grafik- Modus 7 des Atari 8- Bit soll an beliebiger Stelle ein Bildpunkt ein/ ausgeschaltet werden. Vergleichbar mit dem Plot- Befehl des Atari Basic.

Die Routine die das tut, soll in 6502- Assembler laufen. Farbe und X- sowie die Y Koordinate werden an das Programm übergeben. Aus den Koordinaten muss nun die Adresse des Bytes im Bildspeicher berechnet werden, in dem sich das gesuchte Bit – der Bildpunkt/ das Pixel – befindet. Schließlich wird das Bit und damit der Bildpunkt gesetzt.

In der Grafikstufe 7 besteht eine Zeile auf 160 Bildpunkten und belegt 40 Bytes. Aus der Y- Koordinate ergibt sich die Zeilenadresse indem man die mit der Anzahl der Bytes multipliziert. Je Größer Y, desto mehr Zeit vergeht, bis die Zeilenadresse berechnet ist. Film 1 zeigt die Variante der Routine, die für jeden Bildpunkt die Zeilenadresse immer wieder neu berechnet.


Film 1

Film 2 zeigt eine Variante bei der die Zeilenadressen einmal berechnet und dann in einer Tabelle abgelegt wurden. Das Ergebnis: Es geht schneller.


Film 2

Ganz ähnlich habe ich das im Rahmen eines Spiels verwirklicht. Auch hier wurde es vermeiden, dass Selbe zu wiederholen, sondern, zeitaufwendiges wurde nur einmal gemacht und die benötigten Ergebnisse in einer Tabelle abgelegt von wie die dann nur noch abgeholt werden müssen. Näheres dazu da: Rock, Determinismus in Assembler

Viel Spass!


Sweet 16

Sweet 16 ist eine Betriebssystem Routine im ROM des Apple II, eine Erweiterung des 6502 Befehlssatzes die dem 8- Bit Prozessor zu 16- Bit Funktionalität verhilft.

Näheres dazu hier im Blog:
Artikel zu „Sweet 16“ (Digi Barn Computer Museum)

Aber, Sweet 16 ist nicht nur eine geniale Betriebssystem Routine, Sweet 16 steht stellvertretend als Model dafür, wie sich der Befehlssatz des 6502- Prozessors erweitern lässt. Nebeneffekt – gewünscht oder nicht – der Source obfuskiert sich quasi von selbst.

Grundsätzlich lässt sich Sweet 16 auf dem Apple ][ folgendermaßen nutzen:

JSR SW16

20140406-210651.jpg
Sweet 16, Diassembliert

Der vollständige Source Code findet sich in:
Wozniak, Steve (1977): The Woz Wonderbook.  A compendium of notes, diagrams, articels, instructions and code that describes the Apple ][ Computer and how to program it.

Auf das JSR folgt der Sweet 16 Befehlssatz, der dann schrittweise von der Subroutine (SW16) interpretiert wird.

Genutzt wird die Funktion des 6502 Befehls Jump to Subroutine (JSR). Der Befehl springt die angegebene Adresse an, merk sich aber die Adresse des auf den Befehl JSR folgenden Bytes, indem er diese auf den Stack rettet. Zuerst das High- Byte, dann das Low Byte.

Man denk sich nun die so auf den Stack geschriebene Rückkehradresse sollte auf den nächsten Befehl zeigen. dem ist aber – wie obe beschrieben – nicht so. Dieser „Fehler“ wird korrigiert, indem das RTS die Rückkehradresse automatisch um eins erhöht. Vergleiche in: N.N. (1976) : MCS 6500 Microcomputer Family Programing Manual. Januar 1976. Norristown: MOS Technology Inc.

Um einen Fehler handelt es sich dabei eigendlich nicht. Die oben beschriebene Tatsache entspringt vielmehr der Festlegung, dass Adressen auf dem Stack immer auf die nächste freie Stelle im Speicher zeigen sollen (ebenfalls nachzulesen in der o.g. Quelle).