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 |