;:sys36864 ;.opt oo,p ; ; eval routine c 64 by nicki heusler ; -nh-230186- ; speziell fuer m. bochtler ; syntax = sys 52222,variable ; die variable muss vom typ real ; (also nicht $ oder %, sondern ; z.b. sys 52222,x) sein. nach dem ; sys befehl, der auch im programm ; stehen darf, kann mit dem cursor ; ein wert eingegeben werden, der ; nicht nur zahlen, sondern auch ; variablen und rechenzeichen ent- ; halten darf. nach druck auf return ; bekommt die variable den wert des ; eingegebenen ausdrucks. ; fuer c 64 oder c 128 (64er modus) ; input = $a560 ; zeile holen chrget = 115 ; zeichen lesen chrptr = 122 ; zeiger auf eingabe frmnum = $ad8a ; ausdruck auswerten komma = $aefd ; komma nach sys holen adr1 = $49 ; zeiger auf variable adr2 = $47 descr = 251 ; speicher crunch = $a579 ; eingegebene zeile codieren facvar = $bbd0 ; fac nach variable suchvar = $b08b ; variable holen testnum = $ad8d ; auf real testen *= 52222 ; startadresse init jsr komma ; komma holen jsr suchvar ; variable holen jsr testnum ; numerisch testen lda adr2 ; adresse speichern sta descr lda adr2+1 sta descr+1 jsr input ; eingabe erwarten lda chrptr ; zeiger auf basic merken pha lda chrptr+1 pha stx chrptr ; zeiger setzen sty chrptr+1 jsr chrget ; flags setzen jsr crunch ; zeile codieren ldx #$ff ; zeiger neu setzen ldy #1 stx chrptr sty chrptr+1 jsr chrget jsr frmnum ; ausdruck ausrechnen pla ; zeiger zurueckholen sta chrptr+1 pla sta chrptr lda descr ; var. adresse holen sta adr1 lda descr+1 sta adr1+1 jmp facvar ; wert an variable ; ende