RST/Interrupt-Sprungtabelle (8085-CPU)
Adresse (h) | Bezeichnung | Version | Beschreibung | Vektor Sprungziel |
---|---|---|---|---|
0008 | RST 1 | 1.8 | RST 1 Kommando (User) | JMP CMDUSER |
0010 | RST 2 | 1.8 | RST 2 Anwender-Restart | JMP FC8C |
0018 | RST 3 | 1.8 | RST 3 Anwender-Restart | JMP FC8F |
0020 | RST 4 | 1.8 | RST 4 Breakpoint | JMP BREAK |
0024 | TRAP | 1.8 | Nicht maskierbarer Interrupt | JMP TRAP |
0028 | RST 5 | 1.8 | RST 3 Anwender-Restart | JMP FC92 |
002C | RST 5.5 | 1.8 | RST 5.5 Anwender-Interrupt | JMP FC95 |
0030 | RST 6 | 1.8 | RST 6 Anwender-Restart | JMP FC98 |
0034 | RST 6.5 | 1.8 | RST 6.5 Anwender-Interrupt | JMP FC9B |
0038 | RST 7 | 1.8 | RST 7 – Abort Programmabbruch | JMP 024D |
003C | RST 7.5 | 1.8 | RST 7.5 Anwender-Interrupt | JMP FC9E |
0040 | RST V | – | Restart bei Überlauf (V = 1) | in MAT85 nicht verwendet |
Unterroutinen in MAT85
Adresse (h) | Bezeichnung | Version | Beschreibung |
---|---|---|---|
0040 | CMD | 1.8 | MAT85 Kommandoaufforderung (KMD >) |
0043 | RCHAR | 1.8 | Ein Zeichen von der Konsole lesen |
0046 | 1.8 | Reserve | |
0049 | 1.8 | Reserve | |
004F | BSTIME | 1.8.6 | Zeitschleife (ca. 0,24 sec) |
0052 | WCHAR | 1.8 | Ein Zeichen auf der Konsole ausgeben |
0055 | WCHARI | 1.8 | Ein Zeichen nach CALL ausgeben |
0058 | WAHEX | 1.8 | Zwei Hex-Stellen als ASCII ausgeben (A) |
005B | WHLHEX | 1.8 | Vier Hex-Stellen als ASCII ausgeben (HL) |
005E | WABIN | 1.8 | Binärwerte als ASCII ausgeben (A) |
0061 | WADEZ | 1.8 | Drei Dezimalstellen als ASCII ausgeben (A) |
0064 | WAFOR | 1.8 | Als ASCII ausgeben (A), abhängig von C-Register: 0=ASCII 1=BIN 2=DEZ 3=HEX |
00xx | WAFORB | 1.8 | Wie WAFOR mit anschließendem Blank ‚ ‚ |
0067 | WBLANK | 1.8 | Leerzeichen ausgeben |
006A | WBUF | 1.8 | Text ausgeben, (Zeiger: HL), Ende mit $0 |
006D | WBUFI | 1.8 | Text nach dem CALL ausgeben, Ende mit $0 |
0070 | WCRLF | 1.8 | CR/LF ausgeben (neue Zeile) |
0073 | WCRLFI | 1.8 | CR/LF und Text nach CALL ausgeben, Ende mit $0 |
0076 | 1.8 | Reserve | |
0079 | 1.8 | Reserve | |
007C | 1.8 | Reserve | |
0228 | PSTAR | 1.8 | Gebe ‚***‘ + [TEXT] + ‚***‘ aus |
03B8 | PKLIST | 1.8 | Gebe Kommandoliste aus (Zeiger: HL) |
0A74 | HSTART | 1.8 | Hole Startadresse (in HL) |
0B93 | WBLNKI | 1.8 | Gebe X mal ein Space aus ‚ ‚ (Anzahl im Akku) |
0CAA | BUFCLR | 1.8 | Lösche den MAT85 Eingabepuffer |
0D0A | BREAD | 1.8 | Lese ein Zeichen aus dem Eingabepuffer |
0EB0 | TEST | 1.8 | Prüfe ob ein Zeichen in einer Tabelle enthalten ist (Zeiger: HL, Zeichen A) |
0EE9 | GROSS | 1.8 | Wandle ein Zeichen in Großbuchstaben |
1039 | SUB2 | 1.8 | Subtrahiere DE von HL: HL = HL – DE |
Unterroutinen in MAT85-SP1
Adresse (h) | Bezeichnung | Version | Beschreibung |
---|---|---|---|
215B | HSTOP | 1.8 SP1 | Hole Stopp-Adresse (in HL) |
219E | COPY | 1.8 SP1 | Kopiert einen Speicherinhalt Anfangsadresse (Quelle): in HL Endadresse (Quelle): in DE Anfangsadresse (Ziel). in BC Fehlermeldung, wenn Zielberiech nicht vollständig mit RAM bestückt ist -> Rücksprung zur Kommandoeingabe MAT85+ |
219F | COPY0 | 1.8 SP1 | Kopiert einen Speicherinhalt Anfangsadresse (Quelle): in DE Endadresse (Quelle): in HL Anfangsadresse (Ziel). in BC Fehlermeldung, wenn Zielberiech nicht vollständig mit RAM bestückt ist -> Rücksprung zur Kommandoeingabe MAT85+ |
21A8 | COPY1 | 1.8 SP1 | Kopiert einen Speicherinhalt Anfangsadresse (Quelle): in DE Endadresse (Quelle): in BC Anfangsadresse (Ziel). in HL Fehlermeldung, wenn Zielberiech nicht vollständig mit RAM bestückt ist -> Rücksprung zur Kommandoeingabe MAT85+ |
2371 | FLOOP | 1.8 SP1 | Liest einen Wert von der Tastatur im Format (C-Register: 0=ASCII, 1=BIN, 2=DEZ, 3=HEX) in die Speicherzelle ein, deren Adresse im HL-Registerpaar steht. Die Eingabe kann mit Space oder CR abgeschlossen werden. Nach dem Return steht das Abschlusszeichen (Space/CR) im Akku. Der Inhalt des Registerpaares ist um eins erhöht. Das eingelesene Zeichen steht in Register D |
2815 | INCHAR | 1.8 SP1 | Liest ein Zeichen von der Tastatur. Falls CTRL-P eingegeben wurde, wird der Drucker umgeschaltet (Ein/Aus) Kleinbuchstaben werden in Großbuchstaben gewandelt. Nach dem Rücksprung steht das eingelesene Zeichen im Akku. |
2823 | TSTINP | 1.8 SP1 | Prüft, ob das Zeichen im Akku in einer Wertetabelle enthalten ist. Die Anfangsadresse der Tabelle steht im HL-Registerpaar. Die Tabelle muss mit einem Null-Byte (00) enden. Wenn das Zeichen in der Tabelle steht, ist das Zero-Flag beim Rücksprung gesetzt. |
2878 | TSTBS | 1.8 SP1 | Prüft, ob das Zeichen im Akku 08 (Backspace) oder 7F (Delete) ist. Beim Rücksprung ist das Zero-Flag gesetzt, wenn einer der beiden Werte im Akku steht. |
31F4 | R4 (COMPHD) | 1.8 SP1 | Vergleiche HL / DE HL < DE : Zero: 0, Carry: 1 HL = DE : Zero: 1, Carry: 0 HL > DE : Zero: 0, Carry: 0 |
31FA | COMPDH | 1.8 SP1 | Vergleiche DE / HL HL < DE : Zero: 0, Carry: 0 HL = DE : Zero: 1, Carry: 0 HL > DE : Zero: 0, Carry: 1 |
320B | R5 | 1.8 SP1 | Suche naechstes Zeichen ungleich Space ‚ ‚ |
326F | TSTNUM | 1.8 SP1 | Wandelt eine Dezimalzahl im ASCII-Format in eine Binärzahl um Die ASCII-Zahl muss um Speicher stehen. Wobei die höherwertigen Stellen die niedrigeren Speicherzellen belegen. Beispiel für die Zahl 123 Adresse E000 1 E001 2 E003 3 E004 00 als nicht numerisches Abschlusszeichen Der erlaubte Wertebereich reicht von 0 bis 65535. Führende Leerzeichen sind erlaubt. Die Adresse der ersten Ziffer muss beim Unterprogrammaufruf im Registerpaar DE stehen. Die ASCII-Zahl muss mit einem nichtnumerischen Zeichen abgeschlossen sein. Die Binärzahl, die der ASCII-Zahl entspricht, befindet sich nach der Rückkehr im HL-Registerpaar. Die Anzahl der Ziffern steht im B-Register. Fehler: wird keine Ziffer gefunden, so enthält das B-Register den Wert 00. Wird der zulässige Zahlenbereich überschritten, so enthält das B-Register den Wert $FF. Nach dem Rücksprung wird daher folgender Fehlertest empfohlen: INR b JZ UEBERLAUF DCR b JZ KEINE_ZIFFER |
3272 | TN0 | 1.8 SP1 | Wie TSTNUM, aber keine führenden Leerzeichen erlaubt |
348C | CLEAR | 1.8 SP1 | Loesche Basic-Programm und Variablen |
3AFE | DIVIDE | 1.8 SP1 | Dividiert den Inhalt des Registerpaares HL durch den Inhalt des Registerpaares DE. Das Ergebnis steht im Registerpaar B, der Rest im Registerpaar HL. BC = HL / DE (Rest in HL) Keine Fehlermeldung bei Division durch Null |
3C43 | PRTNUM | 1.8 SP1 | Druckt eine Zahl in der dezimalen Schreibweise. Die Zahl muss beim Unterprogrammaufruf als Zweierkomplement im HL-Registerpaar stehen (FFFF = -1) Vor positiven Zahlen wird ein Leerzeichen ausgegeben, vor negativen Zahlen wird ein „-“ ausgegeben. Nach der Zahl wird ein Leerzeichen angehängt. Zahlenbereich: -32768 bis +32767 |
3C46 | PRTLNN | 1.8 SP1 | Wie PRTNUM, Die Zahl im HL-Registerpaar muss jedoch in normaler Binärcodierung vorliegen (FFFF = 65535) Ist beim Aufruf von PRTLNN das Sign-Bit im Flag-Register gleich Null, so wird eine positive Zahl ausgegeben. Ist das Sign-Bit gleich Eins, so wird eine negative Zahl (mit voangestellten „-„) ausgegeben. Beim Aufruf von PRTLNN + 1 wird das Sign-Bit automatisch auf Null (positiv) gesetzt. |
3ECE | DRUSWP | 1.8 SP1 | Drucker umschalten (Ein <-> Aus) |
3EDA | DRUOFF | 1.8 SP1 | Drucker einschalten |
3EF3 | DRUON | 1.8 SP1 | Drucker ausschalten |
3FD6 | BCLEAR | 1.8 SP1 | Loesche Bildschirmspeicher ! Fehlerhafte Implementierung bei Video 8.2/8.4/TTY |