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)

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

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)

(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