Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
lc80:41_programme:lc802 [2017/03/14 08:07] – ↷ Links angepasst weil Seiten im Wiki verschoben wurden volkerplc80:41_programme:lc802 [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== 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) 
- 
- 
-{{:lc80:lc80roms.jpg|}} 
- 
-===== 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. [[lc80: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,        ;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)| 
- 
-===== 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/41_programme/lc802.1489478847.txt.gz
  • Zuletzt geändert: 2017/03/14 08:07
  • von volkerp