         ; *************************
         ; ***   Basic-ROM.inc   ***
         ; *************************

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

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

BCOLD    .equ  $a000    ;Basic-Kaltstartvektor ($e394)
BWARM    .equ  $a002    ;Basic-Warmstartvektor ($e37b)
FNDFOR   .equ  $a38a    ;Prüft Stack auf Eintrag für FOR
BLTU     .equ  $a3b8    ;Schafft Lücke für neue Zeile im Basic-Text
BLTUC    .equ  $a3bf    ;Verschiebt Block
GETSTIK  .equ  $a3fb    ;Prüft, ob Stack noch A*2 Bytes faßt
REASON   .equ  $a408    ;Prüft, ob Zeiger in A/Y unterhalb FRETOP zeigt
ERROR    .equ  $a437    ;Gibt Fehlermeldung Nr. X aus
READY    .equ  $a474    ;Startet Basic neu
MAIN     .equ  $a480    ;Nimm Zeile in Eingabepuffer und fügt 0 an
INSLIN   .equ  $a4a4    ;Fügt Zeile ein/ersetzt Zeile ($14/$15)
FINI     .equ  $a52a    ;Führt nach Zeileneinfügung RUNC und CONT aus
LNKPRG   .equ  $a533    ;Verkettet die Bindezeiger im Basicprogramm
INLIN    .equ  $a560    ;Holt Bildschirmzeile in Basicpuffer ($200)
CRUNCH   .equ  $a579    ;Tokenisiert Basicbefehle im Puffer
FNDLIN   .equ  $a613    ;Durchsucht Basictext nach Zeile
FNDLNC   .equ  $a617    ;Durchsucht Basictext ab A/Y nach Zeile ($14/$15)
SCRATH   .equ  $a642    ;NEW springt hier ein, dann:
SCRTCH   .equ  $a644    ;Setzt Basiczeiger zurück (NEW-Befehl)
RUNC     .equ  $a659    ;Setzt Zeiger auf Anfang des Basictexts, dann:
CLEAR    .equ  $a65e    ;Setzt Variablenzeiger zurück (CLR-Befehl)
STXPT    .equ  $a68e    ;Setzt Zeiger auf Anfang zurück
LIST     .equ  $a69c    ;Einsprung LIST-Befehl
LIST1    .equ  $a6c9    ;Listet Basiczeile
OPLOP    .equ  $a717    ;Bearbeitet zu listendes Zeichen
FOR      .equ  $a742    ;Bearbeitung von FOR-Befehl
NEWSTT   .equ  $a7ae    ;Führt Basic-Programm aus
CKEOL    .equ  $a7c4    ;Hält an, wenn Textende erreicht
GONE     .equ  $a7e1    ;Bearbeitet Anweisung der momentanen Zeile
GONE3    .equ  $a7ed    ;Führt Basic-Schlüsselwort aus
RESTORE  .equ  $a81d    ;Setzt Datenzeiger auf Anfang (RESTORE-Befehl)
STOP     .equ  $a82c    ;Bricht Programm ab (STOP-Befehl)
CONT     .equ  $a857    ;Setzt Programm fort (CONT-Befehl)
RUN      .equ  $a871    ;Startet Programmbearbeitung (RUN-Befehl)
GOSUB    .equ  $a883    ;Springt in Unterprogramm (GOSUB-Befehl)
GOTO     .equ  $a8a0    ;Sprungbefehl (GOTO-Befehl)
RETURN   .equ  $a8d2    ;Rücksprung aus Unterprogramm (RETURN-Befehl)
DATA     .equ  $a8f8    ;Überspringt DATA-Befehl
DATAN    .equ  $a906    ;Sucht nach Endemarkierung der Anweisung
REMN     .equ  $a909    ;Sucht nach Ende einer Basic-Zeile
IF       .equ  $a928    ;Bedingte Verzweigung (IF-Befehl)
REM      .equ  $a93b    ;Sucht Ende der Zeile
DOCOND   .equ  $a940    ;Setzt IF-Befehl fort
ONGOTO   .equ  $a94b    ;ON GOTO-Befehl
LINGET   .equ  $a96b    ;Liest Ganzzahl aus Basictext
LET      .equ  $a9a5    ;Weist Variable Wert zu (LET-Befehl)
PUTINT   .equ  $a9c4    ;Rundet FAC1
PTFLPT   .equ  $a9d6    ;Setzt FAC1 in die in $49 angegebene Stelle
PUTTIM   .equ  $a9e3    ;Ordnet die Systemvariable TI$ zu
ASCADD   .equ  $aa27    ;Addiert ASCII-Ziffer zu FAC1
GETSPT   .equ  $aa2c    ;LET für Zeichenketten
PRINTN   .equ  $aa80    ;löscht I/O-Kanäle und setzt Standardgeräteadr.
CMD      .equ  $aa86    ;Setzt Ausgabegerät (CMD-Befehl)
STRDON   .equ  $aa9a    ;Gibt Zeichenkette aus
PRINT    .equ  $aaa0    ;PRINT-Befehl
VAROP    .equ  $aab8    ;Gibt Variable aus
CRDO     .equ  $aad7    ;Gibt CR aus
STROUT   .equ  $ab1e    ;Druckt Zeichenkette, auf die A/Y zeigt
STRPRT   .equ  $ab21    ;Druckt Zeichenkette, auf die FAC1+3 zeigt
OUTSTR   .equ  $ab24    ;eigentliche Zeichenkettenausgabe
OUTSPC   .equ  $ab3b    ;Cursorschritt rechts/Space
PRTSPC   .equ  $ab3f    ;Gibt Leerzeichen aus
OUTSKP   .equ  $ab42    ;Gibt Cursorschritt rechts aus
OUTQST   .equ  $ab45    ;Gibt Fragezeichen vor Fehlermeldung aus
OUTDO    .equ  $ab47    ;Gibt Zeichen in A aus
TRMNOK   .equ  $ab4d    ;Gibt Fehlermeldungen für GET/INPUT/READ aus
GET      .equ  $ab7b    ;Holt Zeichen von Tastatur/Datei (GET-Befehl)
INPUTN   .equ  $aba5    ;Holt Zeichenkette von Datei
INPUT    .equ  $abbf    ;Gibt Hinweistext des Benutzers aus, dann:
QINLIN   .equ  $abf9    ;Holt Zeichenkette von Tastatur (INPUT-Befehle)
READC    .equ  $ac06    ;READ: Routine für GET/INPUT
INPCON   .equ  $ac0d    ;Einsprung für INPUT
INPCO1   .equ  $ac0f    ;Einsprung für GET
DATLOP   .equ  $acb8    ;Geht Text durch und liest DATA-Anweisungen
VAREND   .equ  $acdf    ;Prüft auf Null am Textende
EXINT    .equ  $acfc    ;Gibt spez. Fehlermeldungen aus
NEXT     .equ  $ad1e    ;NEXT-Befehl
FRMNUM   .equ  $ad8a    ;Berechnet numerischen Ausdruck (FRMEVL), dann:
CHKNUM   .equ  $ad8d    ;Prüft, ob FRMEVL Zahl geliefert hat
CHKSTR   .equ  $ad8f    ;Prüft, ob FRMEVL Zeichenkette geliefert hat
FRMEVL   .equ  $ad9e    ;Wertet Basic-Formelausdruck aus
EVAL     .equ  $ae83    ;Wertet einzelnes Ausdrucksglied aus
PIVAL    .equ  $aea8    ;Liefert Wert für PI
PARCHK   .equ  $aef1    ;Wertet Klammerausdrücke aus
CHKCLS   .equ  $aef7    ;Prüft auf ")"
CHKOPN   .equ  $aefa    ;Prüft auf "("
CHKCOM   .equ  $aefd    ;Prüft auf ","
SYNCHR   .equ  $aeff    ;Prüft auf Byte in A
SYNERR   .equ  $af08    ;Gibt SYNTAX ERROR aus
DOMIN    .equ  $af0d    ;Berechnet NOT
TSTROM   .equ  $af14    ;Setzt Übertragsflag, wenn FAC1+3 auf ROM zeigt
ISVAR    .equ  $af28    ;Sucht Variable in Variablenliste
TISASC   .equ  $af48    ;Liest Taktzähler und bildet TI$
ISFUN    .equ  $afa7    ;Stellt Funktionstyp fest und wertet ihn aus
OROP     .equ  $afe6    ;OR-Funktion
ANDOP    .equ  $afe9    ;AND-Funktion
DOREL    .equ  $b016    ;Vergleiche: < = > prüfen die Variablentypen,dann:
NUMREL   .equ  $b01b    ;Führt mittels FCOMP numerische Vergleiche aus
STRREL   .equ  $b02e    ;Führt Zeichenkettenvergleich aus
DIM      .equ  $b081    ;DIM-Befehl
PTRGET   .equ  $b08b    ;Prüft Variablennamen auf Zulässigkeit
ORDVAR   .equ  $b0e7    ;Durchsucht Variablenliste nach Name in VARNAM
ISLETC   .equ  $b113    ;Setzt Übertragsflag, wenn A gleich Buchstabe
NOTFNS   .equ  $b11d    ;Erstellt einfache Variable
FMAPTR   .equ  $b194    ;Berechnet Zeigerwert in $5f/$60
FACINX   .equ  $b1aa    ;Verwandelt FAC1 in Ganzzahl in A/Y
INTIDX   .equ  $b1b2    ;Holt positiven Ganzzahlausdruck
AYINT    .equ  $b1bf    ;Wandelt FAC1 in Ganzzahl
ISARY    .equ  $b1d1    ;Holt Feldparameter aus Basic-Text
FNDARY   .equ  $b218    ;Sucht nach Feldnamen in VARNAM
BSERR    .equ  $b245    ;BAD SUBSCRIPT/ILLEGAL QUANTITY ERROR
NOTFDD   .equ  $b261    ;Definiert unbekanntes Feld mit 10 Elem.
INPLN2   .equ  $b30e    ;Macht Feldelement ausfindig
UMULT    .equ  $b34c    ;Berechnet Abstand Feldelement - Feldadresse
FRE      .equ  $b37d    ;FRE-Anweisung
GIVAYF   .equ  $b391    ;Bringt 2-Byte-Zahl in A/Y in FAC1
POS      .equ  $b39e    ;POS-Funktion mittels:
SNGET    .equ  $b3a2    ;Wandelt Byte in Y in FLPT in FAC1 um
ERRDIP   .equ  $b3a6    ;Prüft auf Direktmodus
DEF      .equ  $b3b3    ;Erzeugt Funktionsdefinition (DEF-Befehl)
GETFNM   .equ  $b3e1    ;Prüft Syntax von FN
FNDOER   .equ  $b3f4    ;Wertet Funktion aus
STRD     .equ  $b465    ;STR$-Funktion
STRINI   .equ  $b475    ;Schafft Platz für Einfügung v. Zeichenkette
STRLIT   .equ  $b487    ;Kopiert Zeichenkette in Zeichenkettenbereich
GETSPA   .equ  $b4f4    ;Weist Platz für Zeichenkette zu
GARBA2   .equ  $b526    ;Führt Garbage Collection durch
DVARS    .equ  $b606    ;Sucht nach durch GC zu sichernder Zeichenkette
CAT      .equ  $b63d    ;Verknüpft zwei Zeichenketten
MOVINS   .equ  $b67a    ;Verschiebt Zeichenkette in Zeichenkettenbereich
ERESTR   .equ  $b6a3    ;Verwirft Zeichenkette
FRETMS   .equ  $b6db    ;Löscht Descriptor-Stapel
CHRD     .equ  $b6ec    ;CHR$-Funktion
LEFTD    .equ  $b700    ;LEFT$-Funktion
RIGHTD   .equ  $b72c    ;RIGHT$-Funktion
MIDD     .equ  $b737    ;MID$-Funktion
PREAM    .equ  $b761    ;Holt Zeiger für Zeichenkette-Descriptor
LEN      .equ  $b77c    ;LEN-Funktion
LEN1     .equ  $b782    ;Ermittelt Länge der Zeichenkette
ASC      .equ  $b78b    ;ASC-Funktion
GTBYTC   .equ  $b79b    ;Holt Bytewert aus Basictext nach X
VAL      .equ  $b7ad    ;VAL-Funktion
GETNUM   .equ  $b7eb    ;Liest Parameter für WAIT und POKE
GETADR   .equ  $b7f7    ;Wandelt FAC1 und 2-Byte-Zahl
PEEK     .equ  $b80d    ;PEEK-Funktion
POKE     .equ  $b824    ;POKE-Befehl
WAIT     .equ  $b82d    ;WAIT-Befehl
FADDH    .equ  $b849    ;Addiert 0.5 zu FAC1 (Rundung)
FSUB     .equ  $b850    ;Fließkomma-Subtraktion: FAC1 = A/Y-FAC1
FSUBT    .equ  $b853    ;Fließkomma-Subtraktion: FAC1 = FAC2-FAC1
FADD     .equ  $b867    ;Fließkomma-Addition: FAC1 = A/Y+FAC1
FADDT    .equ  $b86f    ;Fließkomma-Addition: FAC1 = FAC1+FAC2
COMPLT   .equ  $b947    ;Ersetzt FAC1 durch sein Zweierkomplement
OVERR    .equ  $b97e    ;Gibt ?OVERFLOW ERROR aus
MULSHF   .equ  $b983    ;Multipliziert mit einem Byte
LOG      .equ  $b9ea    ;LOG-Funktion: Logarithmus von FAC1 Basis e
FMULT    .equ  $ba28    ;Fließkomma-Multiplikation: FAC1 = A/Y*FAC1
FMULTT   .equ  $ba30    ;Fließkomma-Multiplikation: FAC1 = FAC2*FAC1
MLTPLY   .equ  $ba59    ;Multipliziert FAC1 mit einem Byte
CONUPK   .equ  $ba8c    ;Lädt FAC1 mit MFLPT-Wert und bildet FLPT-Wert
MULDIV   .equ  $bab7    ;Prüft Akkumulatoren für Multipl./Division
MUL10    .equ  $bae2    ;FAC1 = FAC1 * 10
DIV10    .equ  $bafe    ;FAC1 = FAC1 / 10
FDIVF    .equ  $bb07    ;FAC1 = FAC2 / A/Y
FDIV     .equ  $bb0f    ;FAC1 = A/Y / FAC1
FDIVT    .equ  $bb14    ;FAC1 = FAC2 / FAC1
MOVFM    .equ  $bba2    ;Lädt FAC2 mit MFLPT A/Y und bildet FLPT-Format
MOV2F    .equ  $bbc7    ;Verwandelt FAC1 in MFLPT nach $5c-$60,TEMPFP2
MOV1F    .equ  $bbca    ;Verwandelt FAC1 in MFLPT nach $57-$5b,TEMPFP1
MOVVF    .equ  $bbd0    ;Verwandelt FAC1 in MFLPT nach Adresse in $49
MOVMF    .equ  $bbd4    ;Verwandelt FAC1 in MFLPT nach A/Y
MOVFA    .equ  $bbfc    ;Kopiert FAC2 in FAC1
MOVAF    .equ  $bc0c    ;Rundet FAC1 und kopiert in FAC2
ROUND    .equ  $bc1b    ;Rundet FAC1
SIGN     .equ  $bc2b    ;Ermittelt Vorzeichen von FAC1
SGN      .equ  $bc39    ;SGN-Funktion
ABS      .equ  $bc58    ;ABS-Funktion
FCOMP    .equ  $bc5b    ;Vergleicht FAC1 mit MFLPT bei A/Y
QINT     .equ  $bc9b    ;Verwandelt FAC1 in 32-Bit-Wert
INT      .equ  $bccc    ;INT-Funktion
FIN      .equ  $bcf3    ;Wandelt ASCII-Zeichenkette in FAC1
AADD     .equ  $bd7e    ;Addiert A zu FAC1
INPRT    .equ  $bdc2    ;Druckt IN gefolgt von Zeilennummer
LINPRT   .equ  $bdcd    ;Gibt Ganzzahl in A/Y aus
FOUT     .equ  $bddd    ;Verwandelt FAC1 in Zeichenkette
FOUTIM   .equ  $be68    ;Verwandelt TI in Zeichenkette
SQR      .equ  $bf71    ;SQR-Funktion
FPWRT    .equ  $bf7b    ;Führt Potenzberechnung aus
NEGOP    .equ  $bfb4    ;Macht FAC1 negativ
EXP      .equ  $bfed    ;EXP-Funktion
