         ; **************************
         ; ***   Kernel-ROM.inc   ***
         ; **************************

; Includedatei für CrossAss V1.0. Enthält Adressen der C64-Kernel-ROM-Routinen
; Entnommen: 64'er Magazin Ausgaben 2/3 86

KROM_ok  .equ  0        ;Prüflabel für Include-Test

POLYX    .equ  $e059    ;Routine zur Reihenberechnung
RND      .equ  $e097    ;RND-Funktion
RNDO     .equ  $e09e    ;FAC1 wird von CIA-Registern geladen
QSETNR   .equ  $e0be    ;Neue Zufallszahl wird erzeugt
RND1     .equ  $e0d3    ;FAC1 wird mit vermischten Bytes geladen
RNDRNG   .equ  $e0e5    ;Zwingt FAC1 in den Bereich 0...1,0 und C gesp.
BIOERR   .equ  $e0f9    ;Fehlerbehandlung für best. Basicaufrufe d. Kernels
BCHOUT   .equ  $e10c    ;Zeichenausgabe per CHROUT
BCHIN    .equ  $e11e    ;Zeicheneingabe per CHRIN
BCKOUT   .equ  $e118    ;Richtet per CHKOUT Ausgabedatei ein
BCKIN    .equ  $e11e    ;Richtet per CHKIN Eingabedatei ein
BGETIN   .equ  $e124    ;Holt Zeichen mittels GETIN
SYS      .equ  $e12a    ;SYS-Befehl
SAVET    .equ  $e156    ;SAVE-Befehl
VERFYT   .equ  $e165    ;VERIFY-Befehl
LOADT    .equ  $e168    ;LOAD-Befehl
LOADR    .equ  $e16f    ;Lädt vom Gerät ins RAM ab Adresse in $2b
LDFIN    .equ  $e195    ;Beendet das Laden
OPENT    .equ  $e1be    ;OPEN-Befehl
CLOSET   .equ  $e1c7    ;CLOSE-Befehl
SLPARA   .equ  $e1d4    ;Holt Parameter für LOAD/SAVE/VERIFY
COMBYT   .equ  $e200    ;Prüft auf Komma, holt Byte-Wert
CMMERR   .equ  $e20e    ;Prüft auf Komma + weitere Zeichen
OCPARA   .equ  $e219    ;Holt Parameter für OPEN/CLOSE
COS      .equ  $e264    ;COS-Funktion: FAC1 = COS(FAC1)
SIN      .equ  $e26b    ;SIN-Funktion: FAC1 = SIN(FAC1)
TAN      .equ  $e2b4    ;TAN-Funktion: FAC1 = TAN(FAC1)
ATN      .equ  $e30e    ;ATN-Funktion: FAC1 = ARCTAN(FAC1)
BASSFT   .equ  $e37b    ;Basic-Warmstart-Routine
INIT     .equ  $e394    ;Basic-Kaltstart-Routine
CHRCPY   .equ  $e3a2    ;Kopiert CHRGET ins RAM
INITCZ   .equ  $e3bf    ;Initialisiert Vektoren
INITMS   .equ  $e422    ;Gibt Einschaltmeldung aus
INITV    .equ  $e453    ;Initialisiert Vektoren
CPATCH   .equ  $e4da    ;Korrektur: Farb-RAM Nibbles = Hintergr. Farbe
IOBASE   .equ  $e500    ;Holt Startadresse des I/O-Bausteins
SCRENK   .equ  $e505    ;Holt Anzahl von Zeilen und Spalten
PLOTK    .equ  $e50a    ;Setzt Cursor
CINT     .equ  $e518    ;Allgemeine Bildschirminitialisierung
HOME     .equ  $e566    ;Bringt Cursor in Homeposition
INITVC   .equ  $e5a0    ;Initialisiert VIC
GETKBC   .equ  $e5b4    ;Holt Zeichen aus Tastaturpuffer
INPPRO   .equ  $e5ca    ;Liest SHIFT-STOP, RETURN etc.
QTSWC    .equ  $e684    ;Kehrt Quote-Flag um
PRT      .equ  $e716    ;Gibt Zeichen in A auf Bildschirm aus
CHKCOL   .equ  $e8cb    ;Prüft A auf Farbcodezeichen
SCROL    .equ  $e8ea    ;Scrollt Bildschirm
CLRIN    .equ  $e9ff    ;Löscht bis zur X-ten Bildschirmzeile
DSPP     .equ  $ea13    ;Setzt Zeichen in A an Cursorpos auf Bildschirm
KEY      .equ  $ea31    ;IRQ-Routine
SCNKEY   .equ  $ea87    ;Tastaturabfrage
SHFOG    .equ  $eb48    ;Logische Behandlung der SHIFT-Taste
TALK     .equ  $ed09    ;Schaltet Gerät am ser. Bus auf Senden
LISTN    .equ  $ed0c    ;Schaltet Gerät am ser. Bus auf Empfang
SEND     .equ  $ed16    ;Sendet mit OR behandeltes Zeichen
SET      .equ  $ed62    ;Sendet 8 Datenbits
SECND    .equ  $eec0    ;Sendet Sek-Adr nach Listen über ser. Bus
SCATN    .equ  $edbe    ;Gibt ATN frei
TKSA     .equ  $edc7    ;Sendet Sek-Adr nach Talk über ser. Bus
CIOUT    .equ  $eddd    ;Gibt Byte zum ser. Bus aus
UNTLK    .equ  $edef    ;desaktiviert sendendes Gerät am ser. Bus
UNLSN    .equ  $edfe    ;desaktiviert empf. Gerät am ser. Bus
DLABYE   .equ  $ee03    ;Gibt alle Leitungen frei
ACPTR    .equ  $ee13    ;Holt Byte vom ser. Gerät
ACPOOC   .equ  $ee47    ;Timeout Ausführung
ACPO1    .equ  $ee56    ;Empfängt 8 Datenbits
CLKHI    .equ  $ee85    ;Clock-Leitung high
CLKLO    .equ  $ee8e    ;Clock-Leitung low
DATAHI   .equ  $ee97    ;Data-Leitung high
DATALO   .equ  $eea0    ;Data-Leitung low
DEBCIA   .equ  $eea9    ;CIA-Entprellung
WLMS     .equ  $eeb3    ;Verzögerungsschleifen
RSTRAB   .equ  $eebb    ;Teil der Routine, die vom RS232-NMI benutzt wird
RSTO10   .equ  $eed7    ;Berechnet Parität
RSTO50   .equ  $ef00    ;Verarbeitung der Stop-Bits
RSTBGN   .equ  $ef06    ;Einsprung: Byteübertragung
RSTO60   .equ  $ef13    ;Bereitet das Senden des nächsten Bytes vor
DSRERR   .equ  $ef2e    ;Legt RS232-Fehler in ST ab
BITCNT   .equ  $ef4a    ;Ermittelt Zahl der zu sendenden Bytes
RSRCVR   .equ  $ef59    ;Sammelt Bits zu einem Byte während NMI
RSRO30   .equ  $ef97    ;Überträgt Daten in Puffer für Paritätsprüfung
ECERR    .equ  $efca    ;Meldet Empfangsfehler
CKO232   .equ  $efe1    ;Gibt Datei über RS232 aus
BSO232   .equ  $f014    ;Gibt Zeichen über RS232 aus
BSO110   .equ  $f02e    ;Macht NMIs von Timer 1 scharf
CKI232   .equ  $f040    ;Liest Datei über RS232 ein
BSI232   .equ  $f086    ;Liest Zeichen über RS232 ein
RSP232   .equ  $f0a4    ;Schützt ser. Bus und Bandbetrieb von NMIs
SPMSG    .equ  $f12b    ;Gibt Betriebsmeldung aus
NGETIN   .equ  $f13e    ;Holt ein Zeichen
NBASIN   .equ  $f157    ;Holt ein Zeichen
JTGET1   .equ  $f179    ;Holt Zeichen von Band
BSCOUT   .equ  $f1ca    ;Gibt ein Zeichen aus
CASOUT   .equ  $f1dd    ;Sendet Zeichen zum Band
NCHKIN   .equ  $f20e    ;Eröffnet Eingabedatei
NCKOUT   .equ  $f250    ;Eröffnet Ausgabedatei
NCLOSE   .equ  $f291    ;Schließt eine Datei
NOPEN    .equ  $f34a    ;Öffnet Datei zum Lesen/Schreiben
OP152    .equ  $f38b    ;Open für Kassettendatei
OPENI    .equ  $f3d5    ;Open für ser. Bus-Datei
OPN232   .equ  $f409    ;Open für RS232-Datei
LOASP    .equ  $f49e    ;Lädt ein Programm
LD25     .equ  $f4bf    ;LOAD für Diskette
LD102    .equ  $f539    ;LOAD für Kassette
SAVESP   .equ  $f5dd    ;Speichert Speicherbereich als Programm
SV21     .equ  $f5fa    ;SAVE für Diskette
SV102    .equ  $f65f    ;SAVE für Kassette
UDTIMK   .equ  $f69b    ;Addiert 1 zum Taktzähler
RDTIMK   .equ  $f6dd    ;Liest Taktzähler
SETTMK   .equ  $f6e4    ;Setzt Taktzähler
NSTOP    .equ  $f6ed    ;Prüft auf Stop-Taste
FAH      .equ  $f72c    ;Lädt nächsten Kassettenvorspann
TAPEH    .equ  $f76a    ;Schreibt Kassettenvorspann
FAF      .equ  $f7ea    ;Lädt angegebenen Kassettenvorspann
TRD      .equ  $f84a    ;Lädt vom Kassettengerät
TWRT     .equ  $f867    ;Schreibt zum Kassettengerät
READ     .equ  $f92c    ;Kassetten-Lese-Routine
WRITE    .equ  $fba6    ;Kassetten-Schreib-Routine
START    .equ  $fce2    ;Reset-Routine
RESTOR   .equ  $fd15    ;Restauriert Standard-Ein/Ausgabevektoren
VECTOR   .equ  $fd1a    ;Speichert/Setzt Standard-E/A-Vektoren
RAMTAS   .equ  $fd50    ;Testet und setzt RAM
IOINIT   .equ  $fda3    ;Initialisiert Ein/Ausgabechips
SETNAM   .equ  $fdf9    ;Setzt Dateinamen
SETFLS   .equ  $fe00    ;Setzt Dateinummer, Gerät, Sekundäradr.
READST   .equ  $fe07    ;Liest Status-Byte nach A ein
SETMSG   .equ  $fe18    ;Gibt Meldung zum Bildschirm aus
SETTMO   .equ  $fe21    ;Setzt TIMEOUT für ser. Bus
MEMTOP   .equ  $fe25    ;Liest/setzt obere Speichergrenze
MEMBOT   .equ  $fe34    ;Liest/setzt untere Speichergrenze
NMI      .equ  $fe43    ;NMI-Routine
TIMB     .equ  $fe66    ;POST-Restore
NMI232   .equ  $fe72    ;NMI-Routine für RS232-Betrieb
T2NMI    .equ  $fed6    ;Behandelt Eingang eines RS232-Bits
FLNMI    .equ  $ff07    ;Zeitliche Abstimmung des Start-Bits
PULS     .equ  $ff48    ;Einsprung für IRQ oder BRK
CINTV    .equ  $ff81    ;CINT-Einsprung
IOINITV  .equ  $ff84    ;IOINIT-Einsprung
RAMTASV  .equ  $ff87    ;RAMTAS-Einsprung
RESTORV  .equ  $ff8a    ;RESTOR-Einsprung
VECTORV  .equ  $ff8d    ;VECTOR-Einsprung
SETMSGV  .equ  $ff90    ;SETMSG-Einsprung
SECONDV  .equ  $ff93    ;SECOND-Einsprung
TKSAV    .equ  $ff96    ;TKSA-Einsprung
MEMTOPV  .equ  $ff99    ;MEMTOP-Einsprung
MEMBOTV  .equ  $ff9c    ;MEMBOT-Einsprung
SCNKEYV  .equ  $ff9f    ;SCNKEY-Einsprung
SETTMOV  .equ  $ffa2    ;SETTMO-Einsprung
ACPTRV   .equ  $ffa5    ;ACPTR-Einsprung
CIOUTV   .equ  $ffa8    ;CIOUT-Einsprung
UNTALKV  .equ  $ffab    ;UNTALK-Einsprung
UNLSNV   .equ  $ffae    ;UNLISTEN-Einsprung
LISTNV   .equ  $ffb1    ;LISTEN-Einsprung
READSTV  .equ  $ffb7    ;READST-Einsprung
SETFLSV  .equ  $ffba    ;SETFLS-Einsprung
SETNAMV  .equ  $ffbd    ;SETNAM-Einsprung
OPENV    .equ  $ffc0    ;OPEN-Einsprung
CLOSEV   .equ  $ffc3    ;CLOSE-Einsprung
CHKINV   .equ  $ffc6    ;CHKIN-Einsprung
CHKOUTV  .equ  $ffc9    ;CHKOUT-Einsprung
CLRCHNV  .equ  $ffcc    ;CLRCHN-Einsprung
CHRINV   .equ  $ffcf    ;CHRIN-Einsprung
CHROUTV  .equ  $ffd2    ;CHROUT-Einsprung
LOADV    .equ  $ffd5    ;LOAD-Einsprung
SAVEV    .equ  $ffd8    ;SAVE-Einsprung
SETTIMV  .equ  $ffdb    ;SETTIM-Einsprung
RDTIMV   .equ  $ffde    ;RDTIM-Einsprung
STOPV    .equ  $ffe1    ;STOP-Einsprung
GETINV   .equ  $ffe4    ;GETIN-Einsprung
CLALLV   .equ  $ffe7    ;CLALL-Einsprung
UDTIMV   .equ  $ffea    ;UDTIM-Einsprung
SCREENV  .equ  $ffed    ;SCREEN-Einsprung
PLOTV    .equ  $fff0    ;PLOT-Einsprung
IOBASEV  .equ  $fff3    ;IOBASE-Einsprung
