Atari WozMon ist eine Atari 8-Bit Adaption des Maschinensprache-Monitors, der im Apple I eingebaut war. Da dieser damals von Steven Wozniak programmiert wurde, wird diese Software seither liebevoll „WozMon“ genannt. Besonders bemerkenswert ist, dass dieses Programm mit weniger als 256 Byte Speicherplatz auskommt und trotzdem die Grundfunktionen eines Maschinensprache-Monitors zur Verfügung stellt: Man kann damit Einzelwerte oder ganze Speicherblöcke auslesen bzw. verändern sowie gezielt bestimmte Speicheradressen anspringen, um ein Programm zu starten.
Auch heute ist so ein Tool noch äußerst nützlich, wenn man noch direkt auf der „echten“ Hardware programmiert. Denn anstatt lange Reihen von POKEs zu schreiben, um Speicherstellen zu ändern (oder unter DOS dazu überhaupt erst einmal die Möglichkeit dazu zu haben), kann man mit einem kurzen Aufruf von Atari WozMon die Werte direkt in die gewünschten Speicherstellen schreiben. Wer die Hexadezimalwerte von Assembler-Befehlen kennt, kann somit auch unter BASIC direkt in Maschinensprache programmieren.
Eben mal die Display-List ändern und eine kleine Maschinensprach-Routine für den Display-List-Interrupt ablegen? Kein Problem (Screenshot 4).
Schnell direkt auf den Bildschirmspeicher zugreifen? Wird fix erledigt (Screenshot 3).
Einmal kurz einen Speicherbereich auslesen? Nichts leichter als das (Screenshot 2).
Atari WozMon wird beim Laden in der Page 6 abgelegt, wo sie geschützt vor BASIC, DOS oder anderen Programmen ist und bei Bedarf immer wieder aufgerufen werden kann.
Um die ABBUC-Regeln zu befolgen, wurde noch ein extra Startbildschirm in der Page 4 abgelegt, der für den Rest des Programms aber nicht gebraucht wird. Man kann das Tool dann von BASIC aus mit X=USR(1024) (mit Startbildschirm/Kurzanleitung) bzw. X=USR(1536) (direkt zum Monitor) oder von DOS aus über M (Run Address) und dann 401 bzw. 601 aufrufen.
Atari WozMon hat gegenüber dem Original einige Vorteile, darunter die Verwendung der Bildschirm-Routinen des Atari Betriebssystems. Dadurch fügt sich Atari WozMon z.B. nahtlos in den BASIC-Editor ein, so dass z.B. der Bildschirminhalt von BASIC erhalten bleibt, wenn man Atari WozMon aufruft, und auch nach dem Beenden wird der Bildschirm nicht gelöscht wird, wie man auf den Screenshots sehen kann.
Atari WozMon ist somit ein nützliches Tool, das man als AUTORUN.SYS einfach auf der DOS-Diskette mitlaufen lassen kann, das keinen BASIC-Speicher verbraucht und dann immer bereit ist, wenn man es braucht.
Die Funktionen von Atari WozMon anhand von Beispielen:
(Alle Speicherstellen werden hexadezimal notiert, Buchstaben müssen immer Großbuchstaben sein, die maximale Eingabelänge sind 36 Zeichen pro Zeile)
Auslesen der Speicherstelle $0600:
Code: Alles auswählen
600
0600: D8
Code: Alles auswählen
600 604 60B
0600: D8
0604: 01
060B: A9
Code: Alles auswählen
.60F
05 9D 42 03
Code: Alles auswählen
600.60F
0600: D8 A5 06 F0 01 68 A9 9B
0608: 20 DD 06 A9 05 9D 42 03
Schreiben der Speicherstelle $A800 mit dem Wert $A0:
Code: Alles auswählen
A800:A0
A800: 00
Code: Alles auswählen
A800
A800: A0
Code: Alles auswählen
A800:A9 03 8D 00 A9
A800: A0
Code: Alles auswählen
A800.A807
A800: A9 03 8D 00 A9 00 00 00
Code: Alles auswählen
A79F R
(Springt zur DOS 2.5 Startadresse. Empfohlener Weg anstatt „X“, um unter DOS von Atari WozMon zurück zu DOS zu gelangen)
WozMon verlassen (und ggf. zurück zu BASIC gelangen):
Code: Alles auswählen
X
Screenshot 1: Start von Atari WozMon mit Kurzanleitung aus BASIC heraus (Startadresse 1024), Auslesen des Speicherbereichs von $0600 bis $0607: Screenshot 2: Direkter Start des Monitors von AtariWozMon (Startadresse 1536), Auslesen von Speicherbereich $0600 bis $063F: Screenshot 3: Auslesen des Bildschirmspeicher-Vektors ($58/$59, dez. 88/89), dann direktes Schreiben in den Bildschirmspeicher ($9C40 und $9F60): Screenshot 4: Ändern der Graphics 0 Display-List durch setzen des DLI-Bits, erstellen einer DLI-Routine ab $400, Rücksprung in BASIC, Aktivieren des DLI durch POKEs: