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

  • lc80/programme/lc802.txt
  • Zuletzt geändert: 2022年10月28日 12:59
  • von volkerp
Anmelden