Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Vorhergehende Überarbeitung | |||
— | lc80:programme:lc802 [2022/10/28 12:59] (aktuell) – [U2716/2732 ADR #0B00] volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Monitor LC 80.2 ====== | ||
+ | |||
+ | Monitor LC80.2 von Eckart Buschendorf/ | ||
+ | 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. [[lc80: | ||
+ | 1k starten. Wegen des negativen | ||
+ | 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 | ||
+ | |||
+ | Die RST-Adr. wurden im ROM festgelegt, um häufig benutzte | ||
+ | nutzen. Gleichzeitig werden | ||
+ | |||
+ | RST 08 #CF DAK 1 (zerstört AF und Hintergrundreg.) | ||
+ | RST 10 #D7 | ||
+ | RST 18 #DF | ||
+ | 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 | ||
+ | RST 28 #EF | ||
+ | |||
+ | ==== Starttabelle | ||
+ | |||
+ | Die ziemlich überflüssige Anzeige RST 38 wurde in eine Art Inhaltsverzeichnis | ||
+ | abgeändert, | ||
+ | (Anzeige: " | ||
+ | |||
+ | RST 38 #FF | ||
+ | |||
+ | Taste | ||
+ | 0 #2400 | ||
+ | 1 #0B00 U 2716/2732 | ||
+ | 2 #0C00 Tape | ||
+ | 3 #0D00 | ||
+ | 4 #0C90 | ||
+ | 5 #1700 | ||
+ | 6 #1300 | ||
+ | 7 #0FD0 1 kHz-Dauerton | ||
+ | 8 #0B80 Shift | ||
+ | 9 #0D50 | ||
+ | A #1500 | ||
+ | B #5700 | ||
+ | C #2000 | ||
+ | D #2100 - " - #2100 | ||
+ | E #2200 - " - #2200 | ||
+ | F #2300 - " - #2300 | ||
+ | + #0BC0 | ||
+ | - | ||
+ | DAT | ||
+ | ADR #0000 | ||
+ | |||
+ | Ein Druck auf die angegebene Taste in dieser Tabelle während der | ||
+ | Anzeige " | ||
+ | in RAM oder ROM. Die Startadresstabelle kann in jedem Nutzer-ROM | ||
+ | ab #800 neu vereinbart werden. Als Beispiel | ||
+ | z.Z. gängige ROM mit den im folgenden | ||
+ | angegeben. | ||
+ | |||
+ | |||
+ | ==== Eingabe-Routine ==== | ||
+ | |||
+ | Das EPROM auf #800 enthält eine Routine zur Eingabe, die universell genutzt werden kann. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | LD | ||
+ | LD | ||
+ | LD | ||
+ | LD | ||
+ | CALL #0ABA ; | ||
+ | |||
+ | 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, | ||
+ | |||
+ | | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | 1 Byte zu höheren Adressen verschoben, um Platz | ||
+ | zu schaffen und 00 eingetragen. | ||
+ | " | ||
+ | scht und der Rest des RAM um 1 Byte zu niede- | ||
+ | ren Adressen verschoben. | ||
+ | !ACHTUNG! | ||
+ | | ||
+ | " | ||
+ | | ||
+ | | ||
+ | dem NMI gedrückt wurde und Eintrag des Ergeb- | ||
+ | | ||
+ | |||
+ | ==== U2716/ | ||
+ | |||
+ | Eprommer-Software für [[lc80: | ||
+ | |||
+ | Der Einsprung erfolgt aus der " | ||
+ | Danach wird der Typ angezeigt. | ||
+ | |||
+ | Taste Anzeige | ||
+ | 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. | ||
+ | !-0 | ||
+ | !-1 | ||
+ | !-2 | ||
+ | !-3 | ||
+ | !-4 | ||
+ | !-C | ||
+ | !-EX Start der Funktion/ | ||
+ | Rücksprung in die Grundanzeige (U 2716/2732) | ||
+ | ST Abbruch von " | ||
+ | oder " | ||
+ | ADR Start Rücksprung in das Betriebssystem | ||
+ | |||
+ | |||
+ | ==== Tape ADR #0C00 ==== | ||
+ | |||
+ | Mit " | ||
+ | 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 " | ||
+ | |||
+ | Taste | ||
+ | A A - XXXX Eingabe Anf.-Adr. | ||
+ | E E - XXXX Eingabe End.-Adr. | ||
+ | F F - XXXX Eingabe File-Name | ||
+ | ST out | ||
+ | LD in Einlesen von Band | ||
+ | EX Start nach " | ||
+ | Eingabe/ | ||
+ | |||
+ | ==== Breakpoint | ||
+ | |||
+ | |||
+ | Mit " | ||
+ | Dieses Programm arbeitet ein USER-Programm von der Anfangsadresse (A-XXXX) bis zum Breakpoint | ||
+ | und springt dann zur Registeranzeige. Dabei ist folgendes zu beachten: | ||
+ | |||
+ | * Die Endadresse (Breakpoint) | ||
+ | | ||
+ | * Die Abarbeitung verläuft 100* langsamer, daraus | ||
+ | * Es wird der Hilfsstack (# | ||
+ | * 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 | ||
+ | EX A - XXXX Anf.-Adr. des zu testenden Programms | ||
+ | EX E - XXXX letzte Adr., die selbständig | ||
+ | abgearbeitet wird (Haltepunkt) | ||
+ | eingeben | ||
+ | |||
+ | |||
+ | |||
+ | ==== Taktzahlermittlung | ||
+ | |||
+ | Ab Adresse #2000 werden Befehle oder Befehlsfolgen eingetragen, | ||
+ | deren Taktzahl ermittelt werden sollen, und mit RET (#C9) abgeschlossen. | ||
+ | " | ||
+ | muß kleiner als 65535 sein. Hardwareseitig | ||
+ | | ||
+ | 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 | ||
+ | |||
+ | |||
+ | Das Programm SHIFT (Anzeige " | ||
+ | |||
+ | Taste | ||
+ | bel. A-XXXX | ||
+ | EX E-XXXX | ||
+ | Ex bYXXXX | ||
+ | EX StArt | ||
+ | |||
+ | |||
+ | ==== Code-Suchen (1,2 oder 3 Byte) ADR #0D50 ==== | ||
+ | |||
+ | Dieses Programm sucht ab einer Anfangsadresse | ||
+ | oder einer Bytefolge bis zu 3 Byte und kehrt beim letzten | ||
+ | der ersten gefundenen Code (-folge) in die Adressanzeige zurück. | ||
+ | |||
+ | Taste | ||
+ | bel. A-XXXX | ||
+ | | ||
+ | EX bY1 XX erstes Byte eingeben | ||
+ | " | ||
+ | " | ||
+ | |||
+ | |||
+ | Nach Eingabe des 1., 2. oder 3. Byte wird die Suche mit " | ||
+ | Bytefolge nicht vorhanden ist. | ||
+ | |||
+ | ==== Checksummenbildung | ||
+ | |||
+ | Mit der Taste " | ||
+ | erfolgt eine einfache Addition. Mit diesem | ||
+ | bei [nderungen des Betriebssystems das LOW-Byte | ||
+ | ermitteln, die in der Speicherzelle #7FF abgelegt sein muß, um | ||
+ | den ROM-Check positiv zu bestehen. (Anf.-adr. #0000, #7FF Bytes) | ||
+ | |||
+ | Taste | ||
+ | EX A-XXXX | ||
+ | EX bYXXXX | ||
+ | EX XXXX | ||
+ | |||
+ | |||
+ | |||
+ | ==== System - RAM ==== | ||
+ | |||
+ | ^Adresse | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |# | ||
+ | |||
+ | ===== Unterschiede zum Original-Monitor ===== | ||
+ | |||
+ | (2K-Eprom-Variante) | ||
+ | |||
+ | ^Bereich ^Inhalt Original-Monitor| | ||
+ | |0000-011A |Start, | ||
+ | |0224 |ERROR, | ||
+ | |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, | ||
+ | |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 | ||
+ | |||
+ | |||