Monitor LC 80.2
Monitor LC80.2 von Eckart Buschendorf/Bama, last update: 28-11-91 09:48 Umfang 4K, 2x 2K-Eproms (D4 und D5)
Beschreibung
Das Betriebs-System LC 80.2 ist in Bezug auf die in der Bedienungsanleitung erwähnten Unterprogramme voll kompatibel.
Das geänderte Betriebssystem benötigt 4k RAM. (Umbauhinweise s. Erweiterungen). Es läßt sich jedoch auch mit 1k starten. Wegen des negativen RAM-Check geht der Rechner in HALT und kann jetzt mit NMI in die Registeranzeige und von dort mit der ADR-Taste ins Betriebsystem gelangen.
Der RAM- und ROM-Check wird aus Zeitgründen nur noch beim Einschalten durchgeführt. RESET setzt dann nur noch den Stack neu und geht in die Grundanzeige. Aus Gründen der Speicherplatzeinsparung wurde die Anfangsmelodie verkürzt und die Laufschrift weggelassen.
Die RST-Adr. wurden im ROM festgelegt, um häufig benutzte UP's einfacher zu nutzen. Gleichzeitig werden die meisten Register gerettet.
RST 08 #CF DAK 1 (zerstört AF und Hintergrundreg.) RST 10 #D7 ADR (zerstört keine Register) RST 18 #DF DADP (zerstört keine Register) RST 30 #F7 DAK 2 (zerstört AF und Hintergrundreg.)
Die folgenden beiden RST dürfen nur symmetrisch (wie PUSH und POP) benutzt werden!
RST 20 #E7 PUSH alle Register RST 28 #EF POP alle Register
Starttabelle ADR #0FD8
Die ziemlich überflüssige Anzeige RST 38 wurde in eine Art Inhaltsverzeichnis abgeändert, welches den Ansprung von USER-Programmen vereinfacht (s.u.). (Anzeige: „StArt“)
RST 38 #FF Sprung zum Sprungverteiler
Taste Startadresse Programmname 0 #2400 USER-Programm ab #2400 1 #0B00 U 2716/2732 2 #0C00 Tape 3 #0D00 Breakpoint 4 #0C90 Taktermittlung 5 #1700 6 #1300 7 #0FD0 1 kHz-Dauerton 8 #0B80 Shift 9 #0D50 Code-Suchen A #1500 B #5700 C #2000 USER-Programm ab #2000 D #2100 - " - #2100 E #2200 - " - #2200 F #2300 - " - #2300 + #0BC0 Checksummenbildung - DAT ADR #0000 Rücksprung ins Betriebssystem.
Ein Druck auf die angegebene Taste in dieser Tabelle während der Anzeige „StArt“ bewirkt einen Sprung zur nachfolgenden Adresse in RAM oder ROM. Die Startadresstabelle kann in jedem Nutzer-ROM ab #800 neu vereinbart werden. Als Beispiel wird sie für das z.Z. gängige ROM mit den im folgenden erläuterten Programmen angegeben.
Eingabe-Routine
Das EPROM auf #800 enthält eine Routine zur Eingabe, die universell genutzt werden kann.
Beispiel:
LD HL,PUFFER ;Eingabepuffer LD C,#0A ;es werden die Tasten 0-9 akzeptiert LD B,#03 ;3 Ziffern werden angezeigt LD E,2 ;und in 2 Byte des Puffers geschrieb. CALL #0ABA ;Eingaberoutine, mit "EX" RETURN
CALL #0AB5 erlaubt die Eingabe einer 4-stelligen HEX-Zahl in einen mit HL adressierten Puffer.
NMI - Routine
Ebenso wurde die NMI-Taste sinnvoller belegt. Beim Einschalten oder RAM löschen wird auf der Adresse #2340 ein Sprung zur neuen NMI-Routine ab #031B eingetragen. Damit bleibt eine vom Nutzer erwünschte Änderung möglich.
Nach Drücken der NMI-Taste befindet man sich in einer Auswahlschleife, die mit jeder beliebigen Taste außer „ST“ weiterschaltet. Wenn die gewünschte Anzeige erscheint, kann mit der Taste „ST“ das Programm gestartet werden.
Anzeige Bemerkung " rEG " Registeranzeige gemäß Anleitung ab Adr.#690 " StEP " Stepbetrieb gemäß Anleitung ab Adr. #790 " InS " Ab der aktuellen Adresse wird alles im RAM um 1 Byte zu höheren Adressen verschoben, um Platz zu schaffen und 00 eingetragen. " dEL " Das Byte auf der aktuellen Adresse wird gelö- scht und der Rest des RAM um 1 Byte zu niede- ren Adressen verschoben. !ACHTUNG! " DEL " und " INS" dürfen nur oberhalb des STACK (#2400) angewendet werden, da es sonst zum Absturz kommt!! " rEL " Berechnung des relativen Sprunges zu dem ein- zugebenden Ziel (E-XXXX) von dem Byte (sinn- vollerweise OP-Code des Sprungbefehles), bei dem NMI gedrückt wurde und Eintrag des Ergeb- nisses im nächsten Byte.
U2716/2732 ADR #0B00
Eprommer-Software für Eprommer
Der Einsprung erfolgt aus der „StArt“-Anzeige mit Taste „1“. Danach wird der Typ angezeigt.
Taste Anzeige Bemerkung A rA 2400 Eingabe des Speicheranfangs (RAM od. ROM) E EP 0000 Eingabe der ersten EPROM-Adresse (#0000 - #07FF bei U 2716) (#0000 - #0FFF bei U 2732) B bY 0800 Eingabe der Anzahl der Bytes F Funct. Funktion !-0 LEEr? Leerkontrolle !-1 LESEn Einlesen ab Speicheranfang RAM !-2 ProG Programmieren (10ms je Zelle) !-3 IdEnt Vergleichen !-4 tESt Test, ob ]berprogammieren möglich ist !-C COPY kopieren mit Leerkontrolle und Vergleich (5*) !-EX Start der Funktion/Quittung der Eingabe sowie Rücksprung in die Grundanzeige (U 2716/2732) ST Abbruch von "Copy" während der Anzeige "PASS" oder "FAIL" nach jeweils 10ms pro Zelle ADR Start Rücksprung in das Betriebssystem
Tape ADR #0C00
Mit „2“ aus der Anzeige „StArt“ wird das Programm TAPE aufgerufen. Es entspricht dem Aufzeichnungsverfahren des POLY-Computers und wurde um einen Programmnamen erweitert, der, wenn nicht eingelesen wird, wie beim LC-80 angezeigt wird und so eine Orientierung auf der Kassette ermöglicht. (Anzeige „tAPE“)
Taste Anzeige Bemerkung A A - XXXX Eingabe Anf.-Adr. E E - XXXX Eingabe End.-Adr. F F - XXXX Eingabe File-Name ST out Ausgabe auf Band LD in Einlesen von Band EX Start nach "in" oder "out" - Quittunng der Eingabe/Rücksprung in die Grundanzeige
Breakpoint ADR #0D00
Mit „3“ wird das Programm gestartet. (Anzeige „br.Pnt“) Dieses Programm arbeitet ein USER-Programm von der Anfangsadresse (A-XXXX) bis zum Breakpoint (E-XXXX) interruptgesteuert ab und springt dann zur Registeranzeige. Dabei ist folgendes zu beachten:
- Die Endadresse (Breakpoint) muß bei Mehrbytebefehlen
unbedingt auf das erste Byte zeigen.
- Die Abarbeitung verläuft 100* langsamer, daraus resultieren Probleme, wenn z.B. bei DAK1 oder DAK2.
- Es wird der Hilfsstack (#22D5-#2307) für STEP belegt.
- In #23EA wird der Status gespeichert. #00 bedeutet, daß kein Stepbetrieb von Hand möglich ist. Falls Breakpoint mit RESET abgebrochen wird, muß in diese Zelle #FF eingetragen werden.
Taste Anzeige Bemerkung EX A - XXXX Anf.-Adr. des zu testenden Programms EX E - XXXX letzte Adr., die selbständig abgearbeitet wird (Haltepunkt) eingeben
Taktzahlermittlung ADR #0C90
Ab Adresse #2000 werden Befehle oder Befehlsfolgen eingetragen, deren Taktzahl ermittelt werden sollen, und mit RET (#C9) abgeschlossen. Danach wird ab Adresse #0C90 oder aus der „StArt“-Anzeige mit Taste „4“ gestartet. Die Anzahl der Takte muß kleiner als 65535 sein. Hardwareseitig müssen die CTC-Kanäle 0,1 und 2 verbunden werden.
USER-Steckverbinder ZC/TO 0 - C/TRG 1 A08 - B12 ZC/TO 1 - C/TRG 2 A09 - A11 ZC/TO 2 - C/TRG 3 A10 - A12
Speicherbereich verschieben ADR #0B80
Das Programm SHIFT (Anzeige „SHIFt“) verschiebt Speicherbereiche, die sich auch überlappen können. Start mit Taste 8.
Taste Anzeige Bemerkung bel. A-XXXX Eingabe der Anfangsadresse des Quellbereiches EX E-XXXX Eingabe der Anfangsadresse des Zielbereiches Ex bYXXXX Eingabe der Bytezahl EX StArt Ausführung beendet
Code-Suchen (1,2 oder 3 Byte) ADR #0D50
Dieses Programm sucht ab einer Anfangsadresse nach einem Byte oder einer Bytefolge bis zu 3 Byte und kehrt beim letzten Byte der ersten gefundenen Code (-folge) in die Adressanzeige zurück.
Taste Anzeige Bemerkung bel. A-XXXX Anfangsadresse des zu durchsuchenden Bereichs eingeben EX bY1 XX erstes Byte eingeben "+" bY2 XX zweites Byte eingeben "+" bY3 XX drittes Byte eingeben
Nach Eingabe des 1., 2. oder 3. Byte wird die Suche mit „ST“ gestartet. Die Anzeige „not Fnd“ (not found) erscheint, wenn die Bytefolge nicht vorhanden ist.
Checksummenbildung ADR #0BC0
Mit der Taste „+“ wird die Bildung einer Prüfsumme gestartet. Es erfolgt eine einfache Addition. Mit diesem Programm läßt sich bei [nderungen des Betriebssystems das LOW-Byte der Prüfsumme ermitteln, die in der Speicherzelle #7FF abgelegt sein muß, um den ROM-Check positiv zu bestehen. (Anf.-adr. #0000, #7FF Bytes)
Taste Anzeige Bemerkung EX A-XXXX Eingabe der Anf.-adr. des zu ber. Bereiches EX bYXXXX Eingabe der Länge des Bereichs EX XXXX Prüfsumme (einfache Addition aller Bytes)
System - RAM
Adresse | Verwendung |
---|---|
#23E9 | Stack - Top nach RESET |
#23EA | darzustellendes Zeichen bei „LOAD“ Hilfszelle bei Breakpoint (0=Step selbständig) |
#23EB/EC | Programmname (Tape), Bytezahl (U2716,Shift) |
#23ED/EE | Anf.-Adresse (Tape, Shift, Code), RAM-Adr. (U2716) |
#23EF/F0 | End-Adr. (Tape, Brk.p), EPROM-Adr., Zieladr. (Shift) |
#23F1 | Checksumme (Tape) , Hilfszelle Code #FE = 1 Byte, #FF = 2 Bytes |
#23F2 | L S D Datenanzeige-Speicher (IX zeigt hierher) |
#23F3 | M S D - „ - |
#23F4 | L S D Adressenanzeige-Speicher |
#23F5 | - “ - |
#23F6 | - „ - |
#23F7 | M S D - “ - |
#23F8/F9 | User-PC (akt. Adr.-anzeige, Breakp. auch Anf.-adr.) |
#23FA | AT - Flag |
#23FB | aktueller Tastencode |
#23FC | Init.-Flag 80 = keine Neuinitialisierung |
#23FD | Funkt.- und Fehler-Flag |
#23FE | L - Teil gelesenes File, Byte 1 (Code) |
#23FF | H - Teil (Tape, LOAD) , Byte 2 (code) |
Unterschiede zum Original-Monitor
(2K-Eprom-Variante)
Bereich | Inhalt Original-Monitor |
---|---|
0000-011A | Start, RST, NMI, … |
0224 | ERROR, SPR. ZUR ANZEIGE |
029C-02A7 | INI |
031B-035D | INIDIP |
03E7-03FF | im Original-Monitor freier Bereich |
0574-0588 | DISP1 |
059F-05A4 | DISP6 |
0617-068F | SONG |
06D6-06D7 | DAK, CALL DAK1 |
0788-07A4 | im Original-Monitor freier Bereich, STEPUP |
07E8-07FF | im Original-Monitor freier Bereich |
2. Eprom 0800-0FFF komplett neu.
Unterschied Assembler-Quelle lc80-2 zum Binary lc80.com: im Original-Binary 0649h: 0bh statt 0ah