NEWTIM S ======== Das Programm NEWTIM S ist ein sehr vielseitiger Monitor mit 40 zusätzlichen Befehlen, umfangreicher Druckerausgabe und Floppy- steuerung. Es ist außerdem, auch von Basic erreichbar, ein er- weitertes "DOS HELP" implementiert. Die beiden Kassettenspeicher werden durch NEWTIM S nicht belegt. Der NMI-Vektor wird bei der Initialisierung auf den Monitor gerichtet. Eine implementierte REPEAT-Funktion wird bei der Initialisierung automatisch einge- schaltet (Achtung! Keine Kassettenoperation möglich). Die EPROM-Version des NEWTIM S belegt die Adressen $9000 bis $9FFF des Speichers. Für diese Beschreibung gilt die folgende Vereinbarung: (R) = Taste RETURN drücken aaaa = Hexadezimale Anfangsadresse bzw. Operand eeee = Hexadezimale Endadresse bzw. Operand zzzz = Hexadezimale Zieladresse xx = Hexadezimale Variable n = Dezimale Variable (+) = Sowohl im Monitor als auch in BASIC verwendbar (*) = Gleichzeitige Ausgabe auf Drucker und Bild- schirm möglich (PE Command, Punkt 16.) _ = Zeichen für "Pfeil nach links" (auf CBM-Tastatur als Character vorhanden) A. BASIC-Betrieb ---------------- Durch sys36864 (R) kann der Programmteil "DOS-HELP" sowohl EIN- als auch AUS- geschaltet werden. Der Monitor wird gleichzeitig mit initialisiert. In der Folge kann der Monitor durch sys4 (R) bzw. sys1024 (R) (BREAK) aufgerufen werden. Die Befehle müssen grundsätzlich am Zeilenanfang stehen. 1. E = Exit DOS-HELP AUS (Monitor bleibt initialisiert) E (R) 2. G = Groß/Grafik Groß/Klein-Umschaltung und zurück G (R) 3. M = Monitor Sprung zum NEWTIM S (wie sys1024) M (R) 4. U = Umschalten Dauertaste REPEAT EIN (+) U (R) Siehe auch Punkt 23. (kein Kassettenbetrieb möglich) 5. Floppy-Disc-Kurzbefehle (+) a. § bzw. > ersetzt OPENn,8,15:PRINT n," z.B. §I0 (R) Initialisieren von Drive 0 >$1 (R) Liest Directory von Drive 1 > (R) Liest Error-Kanal b. / ersetzt den Befehl LOAD"... ",8 z.B. /ABC (R) Programm ABC wird geladen c. ^ ersetzt den Befehl LOAD"... ",8:RUN Das Programm wird nach dem Laden gestartet; sonst wie b. d. _ ersetzt den Befehl SAVE"... ",8 z.B. _0:ABC (R) "ABC" wird auf Drive 0 gespeichert e. ! ersetzt den Befehl VERIFY"... ",8 6. Z = IRQ Dauertaste REPEAT AUS (+) Z (R) Siehe auch Punkt 28. (Kassettenbetrieb wieder möglich) B. Monitorbetrieb ----------------- Der Aufruf und die Initialisierung erfolgt durch sys36864 (R). Jeder weitere Aufruf kann über BREAK z.B. mit sys4 (R) erfolgen. 1. A = Miniassembler (Syntax wie Disassembler) Umsetzung und Ablage eines Mnemonic-Codes ab Startadresse aaaa. Der Maschinencode und die nächste folgende Startadresse werden automatisch an der richtigen Stelle dargestellt. Es ist in jeder Zeile durch Positionieren des Cursors ein Editieren möglich. Bereits bestehende und nicht mehr benötigte Eingaben bzw. Ausgaben werden durch Trennung mittels zweier Spaces ignoriert und nach Drücken von (R) durch die aktuellen, neu eingegebenen Werte überschrieben. A aaaa Mnemonic Operand (R) z.B. A 0510 LDA#$FA (R) A9 FA A 0512 STA$8000,X (R) 9D 00 80 A 0515 RTS (R) 60 A 0516 ? 2. B = Breakpoint und Durchlaufzähler für Execute setzen Im "Execute-Mode" (E) wird das Programm bis zur gesetzten Software- Breakpoint-Adresse abgearbeitet und der Durchlaufzähler dekrementiert. Bei einem Zählerstand von 00 wird nach Erreichen der Breakpoint- Adresse in den "One-Step-Mode" (O) übergegangen. Es werden die näch- sten Befehle disassembliert und die aktuellen Registerinhalte ange- zeigt. Im folgenden Beispiel wird im "Execute-Mode" im 26. Durchlauf bei PC-Stand $FFD2 in den "One-Step-Mode" übergegangen. B FFD2,1A (R) Breakpoint-Adresse = $FFD2 Zähler = $1A B 0512 (R) " " = $0512 " = $00 B (R) " " = $FFFF " = $00 3. C = Kopieren von Speicherbereichen Das Programm wird von der Anfangs- bis zur Endadresse ab der neuen Anfangsadresse kopiert. Die Speicherbereiche dürfen sich dabei sowohl nach vorne als auch nach hinten überschneiden. C aaaa,eeee,zzzz (R) zzzz = neue Anfangsadresse 4. CU = Kopieren und Umrechnen von Speicherbereichen Es werden alle innerhalb der Programmgrenzen in das Programm zeigende Sprünge bzw. Adressen umgerechnet. Wird vor dem Start ein Listenanfang z. B. durch FF (nicht zulässiger Befehl) gekennzeichnet, so wird ab dieser Adresse nicht mehr umgerechnet, jedoch kopiert. Das zu kopierende Programm muß sich im RAM-Bereich befinden, da die umgerechneten Werte im Ursprungsprogramm abgelegt werden und erst danach das Kopieren erfolgt. Es ist deshalb das Ursprungsprogramm auf der alten Adresse nicht mehr lauffähig. CU aaaa,eeee,zzzz (R) zzzz = neue Anfangsadresse 5. D = Disassembler (*) Pro Zeile können vier Bytes direkt geändert werden. Der Programmablauf kann durch "RUN/STOP" unterbrochen werden. In diesem Mode kann zu- sätzlich gedruckt werden (siehe Punkt 16.). D aaaa,eeee (R) Es wird von der Anfangs- bis zur Endadresse dis- assembliert. Durch (R) wird danach seitenweise weiter disassembliert. D aaaa (R) Es wird ab Anfangsadresse eine Bildschirmseite disassembliert. Durch (R) wird die nächste Seite disassembliert. D aaaa- (R) Es wird von der Anfangsadresse bis $FFFF disassem- bliert. 6. E = Execute bis Breakpoint Verzögertes Abarbeiten des Programms unter Softwarekontrolle. Dieser Mode kann durch "RUN/STOP" verlassen werden. Es können vor und nach der Befehlsausführung die Register (Punkt 19.) geändert werden und/ oder ein Breakpoint (Punkt 2.) gesetzt werden. Das Programm kann durch E (R) bzw. O (R) bzw. W (R) weiter abgearbeitet werden. z. B. E E7F7 (R) Abarbeiten der Monitor-Error-Routine "?" Druck. Die nachfolgenden Befehle werden im Execute-Mode abge- arbeitet. E (R) Abarbeiten bis PC-Stand. 7. F = Fill Speicher füllen Es wird der RAM-Bereich von Anfangs- bis Endadresse mit xx beschrieben. F aaaa,eeee,xx (R) 8. G = Goto siehe CBM-Handbuch 9. H = Hunt Byte-/Stringsuche (*) Es können - zwischen frei wählbaren Begrenzern - bis zu 32 Bytes bzw. Strings mit max. 32 Zeichen gesucht werden; dabei kann der zweite Begrenzer weggelassen werden. Dazwischenliegende, vom Programmierer nicht definierte Bytes werden durch Eingabe von "FF" nicht mitgesucht. Dieser Wert kann in Speicherstelle 03FF durch den Benutzer geändert werden. Die gefundenen Adressen werden auf dem Bildschirm (* und be- darfsweise auf dem Drucker) gedruckt. H aaaa,eeee,%xx,xx,xx,....,...% (R) % = Begrenzer z.B. H aaaa,eeee,%4C,FF,FD% (R) Es werden von Anfangs- bis End- adresse alle Sprünge in die Page $FD gesucht. H aaaa-,%20,CA,FD% (R) Es werden von Anfangsadresse bis $FFFF alle JSR $FDCA gesucht. H aaaa,eeee,'%Hallo% (R) ' = Stringbezeichnung. Es werden von Anfangs- bis Endadresse alle Strings "Hallo" gesucht. 10. H = Hunt/Change Byte/-Stringaustausch (*) Die Bytes bzw. der String zwischen den ersten zwei Begrenzern werden durch die Bytes bzw. den String zwischen dem 2. und 3. Begrenzer er- setzt. Die Länge des Suchwertes muß der Länge des Austauschwertes ent- sprechen. Die Begrenzer sind frei wählbar, ausgenommen ' = Stringbe- zeichnung und Komma. Es kann sowohl im Such- als auch im Austauschwert ein nicht zu bearbeitendes Zeichen (FF) eingesetzt werden. Siehe dazu auch Punkt 9. H aaaa,eeee,%4C,FF,FD%20,FF,FD% (R) Es werden zwischen Anfangs- und Endadresse alle Werte 4C,xx,FD durch 20,xx,FD ausgetauscht. H aaaa,eeee,'%ABCD%UVWX% (R) Austauschen eines Strings. 11. I = Display (*) Es werden ab Anfangsadresse pro Zeile 8 Byte und die entsprechenden ASCII-Zeichen revers auf dem Bildschirm (* und bedarfsweise auf dem Drucker) gedruckt. Der Programmablauf kann durch "RUN/STOP" unter- brochen werden. Durch (R) geht es im "Display-Mode" weiter. Es kann direkt in der Zeile editiert werden. Die sich ändernden ASCII-Zeichen werden sofort dargestellt. Steuerzeichen werden als "." gekennzeichnet. I aaaa,eeee (R) Display von Anfangs- bis Endadresse I aaaa (R) Display von Anfangsadresse bis $FFFF 12. K = Kontrolle Mit diesem Befehl können unzulässige OP-Codes bzw. Listen und Tabellen schnell gesucht werden. Es wird ab einer gefundenen Adresse disassem- bliert. Durch (R) kann weitergesucht werden. K aaaa,eeee (R) K aaaa (R) 13. L = Load siehe CBM-Handbuch 14. M = Memory siehe CBM-Handbuch 15. O = One-Step (*) Einzelschritt-Abarbeiten mit Darstellung des PC, des folgenden Befehls, auch disassembliert, und der aktuellen Registerinhalte auf dem Bild- schirm (* und bedarfsweise auf dem Drucker). Durch "Space" (Busy-Taste "&") wird schnell, durch "OFF/RVS" (Busy- Taste "_") langsam und durch "<" (Busy-Taste "9") im Einzelschritt abgearbeitet. Dieser Mode kann durch "RUN/STOP" verlassen werden. Bei Bedarf können nur die Register geändert und das Programm durch O (R) bzw. W (R) bzw. E (R) weiter abgearbeitet werden. O aaaa (R) Abarbeiten ab Anfangsadresse O (R) Abarbeiten ab PC-Stand 16. PE = Printer EIN Es wird das Drucker-Flag gesetzt. Bei allen mit (*) gekennzeichneten Befehlen wird die Bildschirmzeile auf dem Bildschirm dargestellt und zum Drucker gesandt. Der Zeilenzähler wird auf 00 gesetzt. Nach 66 gedruckten Zeilen werden 6 Zeilenvorschübe zum Drucker gesandt. PE (R) Drucker mit Geräteadresse 04 "EIN" PE xx (R) Drucker mit Geräteadresse xx "EIN" 17. PT = Textzeile zum Drucker PT Überschrift (R) Es wird CR+LF, der Text und CR+LF zum Drucker gesandt (auf Drucker CBM 3022 in Breitschrift). Der Zeilenzähler wird entsprechend inkrementiert. 18. PA = Printer AUS PA (R) 19. R = Registeranzeige siehe CBM-Handbuch 20. TE = Texteingabe in den Speicher Es wird Text ab Anfangsadresse im ASCII-Code abgelegt. Folgt auf die Adresse kein "Space", so wird am Textende der Wert 00 abgespeichert. TE aaaa HALLO (R) Textende kein 00 TE aaaa,HALLO (R) Textende = 00 22. TA = Textausgabe auf dem Bildschirm Es wird ab Anfangsadresse der ASCII-Code bis zum Wert 00 auf dem Bildschirm dargestellt. TA aaaa (R) 23. U = Umschaltung auf Dauertaste = REPEAT EIN (+) Achtung! IRQ wird umgesetzt (kein Kassettenbetrieb). U (R) 24. V = Vergleichen von Speicherbereichen (*) Es werden die Speicherbereiche "aaaa" bis "eeee" mit dem Speicher- bereich ab "zzzz" verglichen. Ungleiche Adressen werden auf dem Bild- schirm (* und bedarfsweise auf dem Drucker) gedruckt. V aaaa,eeee,zzzz (R) 25. W = Walk Wie Punkt 15., jedoch Reversdarstellung des PC, des Befehls und der aktuellen Registerinhalte direkt in der Zeile 1 des Bildschirms. Der programmgemäße Bildschirmausschnitt wird nicht beeinträchtigt. W aaaa (R) Abarbeiten ab Anfangsadresse W (R) Abarbeiten ab PC-Stand C. Zusatzroutinen ----------------- 1. UN-NEW mit sys40711 (R) wird ein durch NEW gelöschtes Programm wieder zu- gänglich. 2. DISK-APPEND Durch sys40773 (R) in Verbindung mit DOS können drei Programme (-teile) mit unterschiedlichen Zeilennummern (aufsteigende Nummern!) zu einem Programm verbunden werden. Beispiel: a. Programme A, B, und C umnummerieren (RENUMBER) und im Laufwerk 0 abspeichern. b. Verbindung mittels COPY zu einem Programm: >C1:NEUNAME=0:A,0:B,0:C Das Programm laden. c. /NEUNAME d. sys40773 (R) eingeben: damit wird das Programm verbunden. Abspeichern. e. _$1:NEUNAME 3. Zusatzbefehle im Monitorbetrieb .x Rückkehr zu BASIC .y Status (Floppy oder Drucker oder ?) .# Zahl: Umrechnung von Dez nach Hex .$ Zahl: Umrechnung von Hex nach Dez .% Zahl: Umrechnung von Hex nach Bin .! Zahl: (8 Stellen!) Umrechnung von Bin nach Hex .*e xxxx, .*e yyyy : EX-OR-Verknuepfung .*a xxxx, .*a yyyy : AND-Verknuepfung .*o xxxx, .*o yyyy : OR-Verknuepfung .*+ xxxx, .*+ yyyy : Summe .*- xxxx, .*- yyyy : Differenz Sämtliche Verknüpfungen erfolgen mit Carry-Flag.