0100H
geladen und ausgeführt werden, kann dies beim SOL prinzipiell jede Adresse sein.
Sehr oft wird ein Programm in Adresse 0000H
geladen und ausgeführt, was bei CP/M zu Kollisionen mit Systemadressen führen kann.
Um den Ablauf von SOL-Programmen zu analysieren, speziell den Zugriff auf den Videospeicher, habe ich ein Simulationsprogramm geschrieben.
Alle mir bekannten SOL-Programme laufen ausschließlich auf der INTEL 8080-CPU, was den Simulator vereinfacht, da die Simulation der Z80-Befehle entfällt.
INTSOL20 Datei [Startadresse]
C000H
.
CC00H
.
Jede der 16 Zeilen ist 64 Zeichen lang.
Damit endet der Speicher bei (CC00H
+16*64)-1 = D000H
-1 = CFFFH
.
Port | Funktion |
---|---|
0FAH | Tastatur Statusport |
0FCH | Tastatur Datenport |
0FEH | Video Parameter Port |
XOFF
) wird der Simulator bis zur Eingabe eines ^Q (XON
) angehalten.
Speicherbereich ⇒ | 0000...BFFF | C000-CBFF | CC00-CFFF | D000-FFFF |
---|---|---|---|---|
Bedeutung ⇒ | Programmspeicher | SOLOS | Video-Speicher | ???? |
Instruktion ⇓ | Aktion ⇓ | |||
PUSH (CALL) | Normal | Fehler | ||
POP (RET) | ||||
LD xx,(mem) | Warnmeldung | Videospeicher abbilden | Fehler | |
LD (mem),xx | Fehlermeldung | |||
INC, DEC mem | ||||
RET, JP, CALL | SOLOS-Routine ausführen | Fehlermeldung |
Normal | Die Instruktion wird entsprechend dem Original simuliert und ausgeführt. |
Videospeicher abbilden | Die Adresse im Video-Bereich wird vor der Ausführung der Instruktion umgewandelt in eine Adresse des Simulators. |
SOLOS-Routine ausführen | Soweit bekannt wird ein Unterprogramm ausgeführt, das der Funktion der SOLOS-Routine entspricht. (Ein Listing der Version 1.3 des SOLOS findet sich hier.) |
Warnmeldung | Es wird eine Meldung mit der Adresse der Instruktion ausgegeben und die Instruktion wird ausgeführt. Der geladene Wert ist aber nicht der der Originaladresse entsprechende. |
Fehlermeldung | Es wird eine Meldung mit der Adresse der Instruktion ausgegeben und der Simulator beendet. |
Fehler | Es wird eine Meldung ausgegeben und der Simulator beendet. |
Port | Bedeutung | Port | Bedeutung |
---|---|---|---|
0F8H | Status des seriellen Ports | 0FCH | Tastatur Daten |
0F9H | Serielle Daten | 0FDH | Parallele Daten |
0FAH | Allgemeiner Status Port Tape Status |
0FEH | Video Parameter |
0FBH | Tape Daten | 0FFH | Bewegungsschalter |