C 64
64'er Extra

64'er Extra

Das 64'er Extra bringt geballte Information über Ihren C 64 zum Heraustrennen und Sammeln.

In dieser siebten Ausgabe finden Sie den dritten Teil einer Übersicht über alle ROM-Routinen des C 64. Statt ziellos in ROM-Listings zu blättern, finden Sie hier im Klartext die Funktionsbeschreibung aller irgendwie nutzbaren Routinen.

LINES $ECF0
Niederwertiges Byte der Tabelle der Bildschirmzeilen.

TALK $ED09
Kernel-Routine TALK.

LISTN $ED0C
Kernel-Routine LISTN.

SEND $ED16
Sendet mit OR behandeltes Zeichen.

SET $ED62
Sendet 8 Datenbits.

SECND $EEC0
Kernel-Routine SECOND.

SCATN $EDBE
Gibt ATN frei.

TKSA $EDC7
Kernel-Routine TKSA.

CIOUT $EDDD
Kernel-Routine CIOUT.

UNTKL $EDEF
Kernel-Routine UNTALK.

UNLSN $EDFE
Kernel-Routine UNLSN.

DLABYE $EE03
Gibt alle Leitungen frei.

ACPTR $EE13
Kernel-Routine CPTR.

ACP00C $EE47
»TIMEOUT« Ausführung.

ACP01 $EE56
Empfängt 8 Datenbits.

CLKHI $EE85
Clock-Leitung high

CLKLO $EE8E
Clock-Leitung low

DATAHI $EE97
Data-Leitung high

DATALO $EEA0
Data-Leitung low

DEBCIA $EEA9
CIA-Entprellung.

WLMS $EEB3
Verzögerungsschleifen.

RSTRAB $EEBB
Teil der Routine, die von NMI verwendet wird, wenn er RS232-Ubertragung bedient.

RST010 $EED7
Berechnet Parität. Beim Eintritt ist NXTBIT=O.

RST050 $EF00
Verarbeitung der Stop-Bits.

RSTBGN $EF06
Einsprung: Beginnt die Übertragung eines Bytes.

RST060 $EF13
Bereitet das Senden des nächstens Bytes vor.

DSRERR $EF2E
Legt RS232-Fehler in ST ab.

BITCNT $EF4A
Ermittelt die Zahl der zu sendenden Bits+1.

RSRCVR $EF59
Sammelt Bits zu einem Byte während NMI.

RSR030 $EF97
Überträgt Daten in den Puffer für Paritätsprüfung.

ECERR $EFCA
Meldet Empfangsfehler.

CKO232 $EFE1
Gibt über die RS232-Schnittstelle am USER-Port eine Datei aus.

BSO232 $F014
Gibt ein RS232-Zeichen aus.

BSO110 $F02E
Macht die MNIs des Timers 1 in CIA scharf (unterschiedlich zwischen den Kernelversionen 0 und 3).

CKI232 $F04D
Liest über die RS232-Schnittstelle (über den Usen-Port) eine Datei ein.

BSI232 $F086
Liest ein RS232-Zeichen ein.

RSP232 $F0A4
Schützt seriellen Bus und Bandbetrieb vor NMIs.

SPMSG $F12B
Gibt die Bandbetriebsmeldung von der Tabelle ab $F0BD aus, falls durch Flag bei $9D freigegeben.

NGETIN $F13E
Kernel-Routine GETIN.

NBASIN $F157
Kernel-Routine CHRIN.

JTGET1 $F179
Holt ein Zeichen vom Band.

BSCOUT $F1CA
Kernel-Routine CHROUT.

CASOUT $F1DD
Sendet ein Zeichen zum Kassettengerät.

NCHKIN $F20E
Kernel-Routine CHKIN.

NCKOUT $F250
Kernel-Routine CHKOUT.

NCLOSE $F291
Kernel-Routine CLOUSE.

NCLALL $F32F
Kernel-Routine CLALL.

NOPEN $F34A
Kernel-Routine OPEN.

OP152 $F38B
OPEN für Kassettendatei.

OPENI $F3D5
OPEN für Datei für ein serielles Gerät (Drucker, Diskettenlaufwerk).

OPN232 $F409
OPEN für eine RS232-Datei.

LOASP $F49E
Kernel-Routine LOAD.

LD25 $F4BF
LOAD für Diskette.

LD102 $F539
LOAD für Kassettengerät.

SAVESP $F5DD
Kernel-Routine SAVE.

SV21 $F5FA
SAVE für Diskette.

SV102 $65F
SAVE für Kassettengerät.

UDTIMK $F69B
Kernel-Routine UDTIM.

RDTIMK $F6DD
Kernel-Routine RDTIM.

SETTMK $F6E4
Kernel-Routine SETTIM.

NSTOP $F6ED
Kernel-Routine STOP.

ERROR1 $F6FB
Tabelle der I/O-Fehlernummern 1…9 und -meldungen.

FAH $F72C
Lädt nächsten Kassettenvorspann.

TAPEH $F76A
Schreibt Kassettenvorspann.

FAF $F7EA
Lädt angegebenen Kassettenvorspann.

TRD $F84 A
Lädt vom Kassettengerät.

TWRT $F867
Schreibt zum Kassettengerät.

READ $F92C
Kassetten-Lese-Routinen.

WRITE $FBA6
Routinen für Schreiben auf Kassette.

START $FCE2
Reset-Routine. Einschalten des »64« oder ein Reset-Schalter verursachen einen Sprung hierher, SYS 64738 springt hierher, es sei denn, das RAM unter dem Kernel ist aktiviert. Ist bei $8000 ein Modul vorhanden, erfolgt JMP ($8000), andernfalls laufen RAMTAS, RESTOR, IOINIT, CINT und ein Basic-Kaltstart ab. Sonstiges RAM bleibt unverändert; Basic-Programme lassen sich daher wiedergewinnen.

RESTOR $FD15
Kernel-Routine RESTOR.

VECTOR $FD1A
Kernel-Routine VECTOR.

RAMTAS $FD50
Kernel-Routine RAMTAS.

IOINIT $FDA3
Kernel-Routine IOINIT.

SETNAM $FDF9
Kernel-Routine SETNAM.

SETLFS $FE00
Kernel-Routine SETFLS.

READST $FE07
Kernel-Routine READST.

SETMSG $FE18
Kernele-Routine SETMSG.

SETTMO $FE21
Kernel-Routine SETTMO.

MEMTOP $FE25
Kernel-Routine MEMTOP.

MEMBOT $FE34
Kernel-Routine MEMBOT.

NMI $FE43
NMI-Routine. Alle NMIs laden hier (es sei denn, der Kernel wurde im RAM modifiziert) und werden über den Vektor in ($0318) gelenkt. STOP-RESTORE, RS232-Betrieb und benutzerdefinierte NMIs werden sämtlich hier verarbeitet.

TIMB $FE66
POST-RESTORE oder die BRKs »Not-Rücksetz-Routine«.

NNM121 $FE66
Prüft RS232-Schnittstelle und sendet Bit, wenn möglich.

NNM130 $FEA3
Prüft RS232-Schnittstelle und empfängt Bit, wenn möglich.

BAUDOT $FEC2
Baudaten-Tabelle für RS232

T2NMI $FED6
Behandelt Eingang eines RS232-Bits.

FLNMI $FF07
Behandelt zeitliche Abstimmung des Startbits für RS232.

PULS $FF48
Einsprung für IRQ oder BRK. Alle IRQ-Interrupts laufen über diesen Punkt (es sei denn, der Kernel wurde am RAM modifiziert). IRQ lenkt ein Vektor in ($0314), BRK-Befehle ein Vektor in ($0316); Änderungen beider Routinen durch den Benutzer sind daher häufig.

CINT $FF81
Setzt die Interrupt-Frequenz.

IOINIT $FF84
Initialisiert die Ein-/Ausgabe-Chips.

RAMTAS $FF87
Testet und setzt RAM.

RESTOR $FF8A
Restauriert Standard-Ein-/Ausgabevektoren.

VECTOR $FF8D
Speichert/setzt Ein/Ausgabevektoren.

SETMSG £FF90
Gibt Meldung zum Bildschirm aus.

SECOND $FF93
Sendet Sekundäradresse nach LISTEN über den seriellen Bus.

TKSA $FF96
Sendet Sekundäradresse nach TALK über den seriellen Bus.

MEMTOP $FF99
Liest/setzt die obere Grenze des Speichers für Basic.

MEMBOT $FF82
Liest/setzt die untere Grenze des Speichers für Basic.

SCNKEY $FF9F
Naturabfrage.

SETTMO $FFA2
Setzt TIMEOUT für seriellen Bus.

ACPTR $FFA5
Holt ein Byte von einem seriellen Gerät (gewöhnlich Floppy-Disk).

CIOUT $FFA8
Gibt ein Byte zum seriellen Bus aus (gewöhnlich für Drucker oder Floppy-Disk).

UNTALK $FFAB
desaktiviert sendende Geräte am seriellen Bus.

UNLSN $FFAE
desaktiviert empfangende Geräte am seriellen Bus.

LISTN $FFB1
Schaltet Gerät am seriellen Bus auf Empfang (gewöhnlich Drucker oder Floppy-Disk).

READST $FFB7
Liest das Status-Byte nach A ein.

SETLFS $FFBA
Setzt Dateinummer, Gerät, Sekundäradresse.

SETNAM FFBD
Setzt Dateinamen.

OPEN $FFC0
Öffnet Datei zum Lesen/Schreiben.

CLOSE $FFC3
Schließt eine Datei.

CHKIN $FFC6
Eröffnet Eingabekanal.

CHKOUT $FFC9
Eröffnet Ausgabekanal.

CLRCHN $FFCC
Schließt Kanal, stellt die Standardbedingungen für I/O wieder her.

CHRIN $FFCF
Holt ein Zeichen.

CHROUT $FFD2
Gibt ein Zeichen aus.

LOAD $FFD5
Lädt ein Programm (von Diskette oder Band).

SAVE $FFD8
Speichert einen Bereich als Programm (auf Diskette oder Band).

SETTIM $FFDB
Setzt Taktzähler. (BASIC 2 VERIFY)

RDTIM $FFDE
Liest Taktzähler. (BASIC 2 SYS)

STOP $FFE1
Prüft auf die STOP-Taste.

GETIN $FFE4
Holt ein Zeichen (gewöhnlich von der Tastatur — GET).

CLALL $FFE7
Beendet jeglichen I/O-Betrieb und schließt alle Dateien.

UDTIM $FFEA
Addiert 1 zum Taktzähler; auf Null stellen, wenn 240 000.

SCREEN $FFED
Holt Anzahl von Zeilen und Spalten.

PLOT $FFF0
Liest/setzt Cursor.

OBASE $FFF3
Startadresse des Tastatur-VIA.

Nützliche PEEKs und POKEs

PRINT PEEK(17)
Anzeige von 0: die letzte Eingabe wurde über die Anweisung INPUT vorgenommen
Anzeige von 64: die letzte Eingabe wurde über die Anweisung GET vorgenommen
Anzeige von 152: die letzte Eingabe wurde über READ vorgenommen

PRINT PEEK(43)+256*PEEK(44)
Ausgabe der Adresse, von wo aus das Basic-Programm gespeichert ist

PRINT PEEK(45)+256*PEEK(46)
Ausgabe der Adresse, bis wohin das Basic-Programm reicht

PRINT PEEK(47)+256*PEEK(48)
Ausgabe der Adresse, bis wohin die Variablen reichen

PRINT PEEK(49)+256*PEEK(50)
Ausgabe der Adresse, bis wohin die Felder reichen

PRINT PEEK(55)+256*PEEK(56)
Ausgabe der Adresse, bis wohin der Basic-Arbeitsspeicher reicht

PRINT PEEK(57)+256*PEEK(58)
Ausgabe der Nummer der momentan bearbeiteten Programmzeile

PRINT PEEK(63)+256*PEEK(64)
Ausgabe der Nummer derjenigen DATA-Zeile, aus der Daten entnommen werden (READ-Befehl)

PRINT CHR$(PEEK(69)AND127) + CHR$(PEEK(70)AND127)
Ausgabe des zuletzt benutzten Variablennamens

PRINT PEEK(198)
Ausgabe der Anzahl der im Tastaturpuffer gespeicherten Zeichen

POKE 198,0
Der Tastaturpuffer wird geleert

PRINT PEEK(214)
Ausgabe der Nummer der Zeile, in der sich der Cursor befindet; dabei werden die Zeilen von 0 bis 24 ( = 25 Zeilen) gezählt

POKE 214,Z : POKE 211,S : SYS 58640
Diese Befehlssequenz setzt den Cursor unmittelbar auf die mittels Z und S angegebene Zeilen- beziehungsweise Spaltenposition, wobei die Zeilen von 0 bis 39 und die Spalten von 0 bis 24 gezählt werden

PRINT PEEK(641)+256*PEEK(642)
Ausgabe der Adresse, von wo ab der für Basic nutzbare RAM-Bereich beginnt

PRINT PEEK(643)+256*PEEK(644)
Ausgabe der Adresse, bis wohin der für Basic nutzbare RAM-Bereich reicht

POKE 641,AL : POKE 642,AH : SYS 58260
Die Anfangsadresse für Basic-Programme wird auf den Wert AL+256*AH festgelegt

POKE 643,EL : POKE 644,EH : SYS 58260
Die Endadresse für den Basic-Arbeitsspeicher wird auf den Wert EL+256*EH festgelegt

PRINT PEEK(646)
Anzeige der Nummer der momentanen Zeichenfarbe

POKE 646,F
Einstellen der Zeichenfarbe, wobei F der Farbnummer entspricht

POKE 649,MX
MX ist eine Zahl zwischen 0 und 10; diese POKE-Anweisung legt fest, wieviele Zeichen sich maximal im Tastaturpuffer befinden dürfen (der Grundwert ist 10); wenn also MX=0 gewählt wird, ist die Tastatur völlig abgeschaltet und keine Eingabe mehr ist möglich (Vorsicht!!)

POKE 650,128
Die Tasten-Wiederholungs-Automatik wird auf alle Tasten ausgedehnt

POKE 650,64
Die Tasten-Wiederholungs-Automatik wird für alle Tasten abgeschaltet

POKE 650,0
Die Tasten-Wiederholungs-Automatik wird für die INST DEL-, die Leertaste und die Cursortasten eingeschaltet (Grundwert)

PRINT PEEK(653) AND 7
Anzeige von 0: keine der Tasten SHIFT, CBM oder CTRL gedrückt
Anzeige von 1: die SHIFT-Taste ist gedrückt
Anzeige von 2: die CBM-Taste befindet sich in gedrückter Haltung
Anzeige von 4: die CTRL-Taste befindet sich in gedrückter Haltung
Anzeige von 3,5,6,7: diese Zahlen ergeben sich aus der Addition zweier oder aller drei oben beschriebenen Werte und geben somit an, daß sich die den Summanden zugeordneten Tasten in gedrückter Haltung befinden

POKE 657,128
Umschaltungsverriegelung von dem Großschrift/Grafik-Modus in den Klein-/Großschrift-Modus

POKE 657,0
Aufheben der Verriegelung (siehe voriger POKE-Befehl)

POKE 775,200
LIST-Schutz einschalten

POKE 775,167
LIST-Schutz ausschalten

POKE 788,52
RUN-STOP-Taste wirkungslos machen

POKE 788,49
RUN-STOP-Taste reaktivieren

POKE 801,0 : POKE 802,0 :
Nach dieser Befehlssequenz wird das Speichern eines Programms unmöglich gemacht

POKE 808,225
RUN-STOP- + RESTORE-Taste wirkungslos machen, außerdem erscheint ein »verrücktes« Listing

POKE 808,237
RUN-STOP- + RESTORE-Taste reaktivieren

POKE 53265,11
Bildschirminhalt unsichtbar machen, ohne daß dessen Inhalt verlorengeht

POKE 53265,27
Bildschirminhalt wieder sichtbar machen

WAIT 56320,16,16
Warten, bis beim Joystick Port 2:
der Feuerknopf gedrückt wird,

WAIT 56320,4,4
Linksbewegung vorgenommen wird,

WAIT 56320,1,1
Bewegung nach oben erfolgt,

WAIT 56320,2,2
Bewegung nach unten erfolgt,

WAIT 56320,8,8
Rechtsbewegung vorgenommen wird

WAIT 56321,16,16
Warten, bis beim Joystick Port 1:
der Feuerknopf gedrückt wird,
(Richtungsabfragen analog zu Joystick Port 2)

PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →