;:poke56,96:poke52,96:clr ;:sys36864 ;.opt oo *= $6000 ; sys 24576 jmp anfang tsys =$9e tclr =$9c trun =$8a tprint =$99 strout =$ab1e tlet =$88 frmnum =$ad8a komma =$aefd integer =$b7f7 byte =$14 mem1 =251 mem2 =252 mem3 =253 mem4 =254 mem5 =255 tend =$80 prg =43 axout =$bdcd nr =2 return =$aad7 out =$ffd2 warm =$e385 break =$a82f tstop =$90 chrgot =121 ascflt =$bcf3 round =$bc1b txtptr =$7a facout =$bdd7 fehler =$a445 stradr =$22 trem =$8f tgl =$b2 tpoke =$97 tgoto =$89 konf =1 ptr1 =4 ptr2 =181 ptr3 =139 ptr4 =141 tgosub =$8d tif =$8b tthen =$a7 treturn =$8e interr =$a437 tpl =$aa tmi =$ab tma =$ac tdu =$ad testop =$a82c brkflg =6 getkey =65508 tgro =$b1 tkle =$b3 sys =$e130 tpeek =$c2 head =168 mem3h =167 pro =166 uhr =161 mul ldx mem3 ldy mem3h lda #0 sta mem4 sta mem5 z602 cpx #0 bne z605 cpy #0 beq z609 z605 lda mem4 clc adc mem1 sta mem4 lda mem5 adc mem2 sta mem5 z608 dex cpx #255 bne z602 dey clc bcc z602 z609 rts tei ldx #255 stx mem5 stx mem4 z614 inc mem4 bne z616 inc mem5 z616 lda mem1 sec sbc mem3 sta mem1 lda mem2 sbc mem3h sta mem2 bcs z614 rts div lda mem3 bne tei lda mem3h bne tei lda #255 sta mem4 sta mem5 rts clr lda #0 ldx #52 z632 sta $ffff,x dex bne z632 rts plu lda mem1 clc adc mem3 sta mem4 lda mem2 adc mem3h sta mem5 rts min lda mem1 sec sbc mem3 sta mem4 lda mem2 sbc mem3h sta mem5 rts qflg .byt 0 ra .word 0 ;relat. adr. add rs .word 0 ;relat. adr. sub rm .word 0 ;relat. adr. mult rd .word 0 ;relat. adr. div rc .word 0 ;relat. adr. clr rv .word 0 ;relat. adr. var ru .word 0 ;relat. adr. prg t1 .byte " zeile " .byt 0 t6 .byte "ende. letztes byte bei " .byt 0 t7 .byte "found illegal byte " .byt 0 t8 .byte "protokollieren ? [j/n]" .byt 13,0 t2 .byte "- pass 2" .byt 13,0 t3 .byte " suche zeile " .byt 0 t4 .byte "\x11\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\x12\x11\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9dcompiling" .byt 13 .byte "- pass 1" .byt 13,0 t5 .byte "\x11\x12run stop\x92 erlauben ? [j/n]" .byt 13,0 e1 .byte "missing leT" e2 .byte "invalid statemenT" e3 .byte "illegal parameteR" e4 .byte "wrong chaR" e5 .byte "leT" e6 .byte "missing chaR" e7 .byte "line not founD" e8 .byte "prograM" e9 .byte "illegal pseudO" ez .word e1,e2,e3,e4,e5,e6,e7,e8,e9 errx dex txa asl tax lda ez,x sta stradr lda ez+1,x jmp fehler put .byt $8d adr .word 0 inc adr bne nocy inc adr+1 nocy rts getbase jsr komma jsr frmnum jsr integer lda byte ldy byte+1 sta adr sty adr+1 rts copy ldx #0 l1 lda mul,x jsr put inx cpx #qflg-mul bne l1 rts calc lda byte+1 sta ra+1 sta rs+1 sta rm+1 sta rd+1 sta rc+1 lda byte clc adc #3 sta rm clc adc #69 sta rd clc adc #15 sta rc clc adc #11 sta ra clc adc #14 sta rs rts fillvar ldx #52 lda #0 l2 jsr put dex bne l2 rts get .byt $ad in .word 0 inc in bne z1065 inc in+1 z1065 bit head bpl z1066 jmp rt z1066 cmp #34 bne z1070 lda qflg eor #255 sta qflg lda #34 z1070 bit qflg bmi rt cmp #32 beq get rt cmp #0 rts gette cmp #"0" bcs ner3 er3 ldx #3 jmp errx ner3 cmp #"9"+1 bcc zahl cmp #"a" bcc er3 cmp #"z"+1 bcs er3 sec sbc #"a" asl clc adc rv tax lda #0 adc rv+1 tay clc rts zahl lda byte pha lda byte+1 pha lda txtptr pha lda txtptr+1 pha lda in sec sbc #1 sta txtptr lda in+1 sbc #0 sta txtptr+1 jsr chrgot jsr ascflt jsr round jsr integer lda txtptr+1 sta in+1 lda txtptr sta in pla sta txtptr+1 pla sta txtptr ldx byte ldy byte+1 pla sta byte+1 pla sta byte sec rts initptr lda #0 sta ptr1 sta ptr2 sta ptr3 sta ptr4 lda #$e0 sta ptr1+1 lda #$f0 sta ptr2+1 lda #$a0 sta ptr3+1 lda #$b0 sta ptr4+1 rts gru1 lda ptr1 clc adc #2 sta ptr1 lda ptr1+1 adc #0 sta ptr1+1 lda ptr2 clc adc #2 sta ptr2 lda ptr2+1 adc #0 sta ptr2+1 rts gru2 lda ptr3 clc adc #2 sta ptr3 lda ptr3+1 adc #0 sta ptr3+1 lda ptr4 clc adc #2 sta ptr4 lda ptr4+1 adc #0 sta ptr4+1 rts down lda in sec sbc #1 sta in lda in+1 sbc #0 sta in+1 rts runst lda #t5 jsr strout wait jsr getkey cmp #"n" beq nein cmp #"j" bne wait lda #1 sta brkflg rts nein lda #0 sta brkflg rts prolog pha lda #t7 jsr strout pla tax lda #0 jsr axout jsr return ldx #8 jmp errx prot lda #t8 jsr strout wiat jsr getkey cmp #"n" beq na cmp #"j" bne wiat lda #1 sta pro rts na lda #0 sta pro rts getterm jsr get cmp #"#" beq base cmp #"&" beq random jmp gette base ldx byte ldy byte+1 sec rts random ldx #uhr clc rts pseudo jsr get cmp #"e" bne nxe jmp go2 nxe cmp #"c" bne nxc lda #32 jsr put lda #return jsr put jmp sea nxc cmp #"r" bne nxr lda #104 jsr put jsr put jmp sea nxr ldx #9 jmp errx anfang jsr getbase jsr initptr jsr runst jsr prot lda #t4 jsr strout lda #76 jsr put jsr put jsr put jsr copy jsr calc lda rc sta mem1 lda rc+1 sta mem1+1 lda adr ldy adr+1 sta rv sty rv+1 ldy #5 lda rv sec sbc #1 sta (mem1),y iny lda rv+1 sbc #0 sta (mem1),y jsr fillvar ldy #1 lda adr sta (byte),y sta ru iny lda adr+1 sta (byte),y sta ru+1 lda #32 jsr put lda rc jsr put lda rc+1 jsr put lda prg ldy prg+1 sta in sty in+1 line jsr down lda #255 sta head jsr get beq prgok jmp prolog prgok jsr get sta nr jsr get bne l3 lda nr bne l3 go2 lda #96 jsr put jmp pass2 l3 jsr get sta nr jsr get sta nr+1 lda pro beq spar lda #t1 jsr strout ldx nr lda nr+1 jsr axout jsr return spar ldy #0 sty qflg sty head lda nr sta (ptr3),y iny lda nr+1 sta (ptr3),y dey lda adr sta (ptr4),y iny lda adr+1 sta (ptr4),y jsr gru2 lda brkflg beq noo lda #32 jsr put lda #testop jsr put noo jsr get beq line cmp #";" bne q0 jmp sea q0 cmp #tsys bne qq1 jsr getterm bcs zff lda #173 jsr put txa jsr put tya jsr put inx bne z2224 iny z2224 lda #172 jsr put txa jsr put tya jsr put susi jsr store lda #32 jsr put lda #sys jsr put sea jsr get bne sea jmp line zff lda #169 jsr put txa jsr put lda #160 jsr put tya jsr put jmp susi store lda #133 jsr put lda #byte jsr put lda #132 jsr put lda #byte+1 jsr put rts qq1 cmp #tend bne q2 lda #76 jsr put lda #warm jsr put jmp sea q2 cmp #tstop bne q3 lda #56 jsr put lda #76 jsr put lda #break jsr put jmp sea q3 cmp #tclr bne q4 lda #32 jsr put lda rc jsr put lda rc+1 jsr put jmp sea q4 cmp #trun bne q5 lda #76 jsr put lda ru jsr put lda ru+1 jsr put jmp sea q5 cmp #trem bne q6 jmp sea q6 cmp #tprint bne q7 jsr get cmp #34 beq qu jmp numerisch q7 jmp qq7 qu lda adr clc adc #10 sta mem1 lda adr+1 adc #0 sta mem2 lda #169 jsr put lda mem1 jsr put lda #160 jsr put lda mem2 jsr put lda #32 jsr put lda #strout jsr put lda #76 jsr put lda adr sta mem1 lda adr+1 sta mem2 jsr put jsr put holtxt jsr get beq fin3 cmp #34 beq fin2 jsr put jmp holtxt fin lda #0 tay jsr put lda adr sta (mem1),y lda adr+1 iny sta (mem1),y jmp line fin2 jsr get beq fin3 cmp #";" beq fin4 er4 ldx #4 jmp errx fin3 lda #13 jsr put jmp fin fin4 jsr get beq fin jmp er4 numerisch jsr down jsr getterm bcc varia lda #162 jsr put txa jsr put lda #169 jsr put tya jsr put l4 lda #32 jsr put lda #axout jsr put jmp testse varia lda #174 jsr put txa jsr put tya jsr put inx bne z2435 iny z2435 lda #173 jsr put txa jsr put tya jsr put jmp l4 testse jsr get beq nosem cmp #";" bne eer4 jsr get jmp line nosem lda #32 jsr put lda #return jsr put jmp line eer4 ldx #4 jmp errx qq7 cmp #tlet bne qq8 jsr getterm bcc nolog ldx #5 jmp errx qq8 jmp q8 nolog stx mem4 sty mem5 jsr get cmp #tgl beq z2511 ldx #6 jmp errx z2511 jsr get cmp #tpeek bne z2512 jmp lpeek z2512 jsr down jsr getterm bcc vaiva lda #169 jsr put txa jsr put lda #160 jsr put tya jsr put jmp set2 setok lda #141 jsr put lda mem4 jsr put lda mem5 jsr put lda #140 jsr put inc mem4 bne l5 inc mem5 l5 lda mem4 jsr put lda mem5 jsr put jmp sea vaiva lda #173 jsr put txa jsr put tya jsr put lda #172 jsr put inx bne l6 iny l6 txa jsr put tya jsr put set2 jsr get cmp #tpl beq wei cmp #tmi beq wei cmp #tma beq wei cmp #tdu beq wei jsr down jmp setok wei sta mem3 lda #133 jsr put lda #mem1 jsr put lda #132 jsr put lda #mem2 jsr put jsr getterm bcc para2v lda #169 jsr put txa jsr put lda #160 jsr put tya jsr put jmp weitso para2v lda #173 jsr put txa jsr put tya jsr put inx bne po iny po lda #172 jsr put txa jsr put tya jsr put weitso lda #133 jsr put lda #mem3 jsr put lda #132 jsr put lda #mem3h jsr put lda mem3 cmp #tpl bne mit lda ra ldy ra+1 jmp se1 mit cmp #tmi bne mat lda rs ldy rs+1 jmp se1 mat cmp #tma bne dut lda rm ldy rm+1 jmp se1 dut lda rd ldy rd+1 se1 pha lda #32 jsr put pla jsr put tya jsr put lda #165 jsr put lda #mem4 jsr put lda #164 jsr put lda #mem5 jsr put jmp setok q8 cmp #tpoke bne q9 jsr getterm php stx mem4 sty mem5 jsr get cmp #"," beq z2620 ldx #6 jmp errx z2620 jsr getterm bcc pokvar cpy #0 beq y0 ldx #14 jmp interr y0 lda #169 jsr put txa jsr put jmp l7 q9 jmp qq9 pokvar lda #173 jsr put txa jsr put tya jsr put l7 plp bcc nachvar lda #141 jsr put lda mem4 jsr put lda mem5 jsr put jmp sea nachvar lda #72 jsr put lda #173 jsr put lda mem4 jsr put lda mem5 jsr put inc mem4 bne l8 inc mem5 l8 lda #172 jsr put lda mem4 jsr put lda mem5 jsr put lda #133 jsr put lda #mem1 jsr put lda #132 jsr put lda #mem2 jsr put lda #160 jsr put lda #0 jsr put lda #104 jsr put lda #145 jsr put lda #mem1 jsr put jmp sea qq9 cmp #tgoto bne qqa lda #76 sta z2706+1 go jsr getterm bcs z2706 ldx #3 jmp errx qqa jmp qa z2706 lda #76 jsr put then sty mem1 ldy #0 txa sta (ptr1),y lda mem1 iny sta (ptr1),y dey lda adr sta (ptr2),y iny lda adr+1 sta (ptr2),y jsr gru1 jsr put jsr put jmp sea lpeek jsr get cmp #"(" beq z2752 ldx #6 jmp errx z2752 jsr getterm bcc peekv lda #160 jsr put lda #0 jsr put lda #173 jsr put txa jsr put tya jsr put jmp setok peekv lda #173 jsr put txa jsr put tya jsr put inx bne z2764 iny z2764 lda #172 jsr put txa jsr put tya jsr put lda #133 jsr put lda #mem1 jsr put lda #132 jsr put lda #mem2 jsr put lda #160 jsr put lda #0 jsr put lda #177 jsr put lda #mem1 jsr put jmp setok qa cmp #"." bne qb jmp pseudo qb cmp #tgosub bne qc lda #32 sta z2706+1 jmp go qc jmp qqc klei lda #173 jsr put lda mem1 jsr put lda mem2 jsr put inc mem1 bne z2824 inc mem2 z2824 lda #172 jsr put lda mem1 jsr put lda mem2 jsr put jsr getterm php pla and #1 sta mem3 beq z2829 lda #192 jsr put tya jsr put jmp z2832 z2829 stx mem1 sty mem2 inx bne z2830 iny z2830 lda #204 jsr put txa jsr put tya jsr put z2832 lda #144 jsr put lda #1 sec sbc mem3 clc adc #6 jsr put lda #208 jsr put lda #1 sec sbc mem3 clc adc #7 jsr put lda mem3 beq z2840 lda #201 jsr put txa jsr put jmp z2842 z2840 lda #205 jsr put lda mem1 jsr put lda mem2 jsr put z2842 lda #176 jsr put lda #3 jsr put jmp tete gros lda #173 jsr put lda mem1 jsr put lda mem2 jsr put inc mem1 bne z2854 inc mem2 z2854 lda #172 jsr put lda mem1 jsr put lda mem2 jsr put jsr getterm php pla and #1 sta mem3 beq z2859 lda #192 jsr put tya jsr put jmp z2862 z2859 stx mem1 sty mem2 inx bne z2860 iny z2860 lda #204 jsr put txa jsr put tya jsr put z2862 lda #144 jsr put lda #1 sec sbc mem3 clc adc #11 jsr put lda #208 jsr put lda #1 sec sbc mem3 clc adc #6 jsr put lda mem3 beq z2870 lda #201 jsr put txa jsr put jmp z2872 z2870 lda #205 jsr put lda mem1 jsr put lda mem2 jsr put z2872 lda #144 jsr put lda #5 jsr put lda #240 jsr put lda #3 jsr put jmp tete qqc cmp #tif bne qd jsr getterm bcc ifok ldx #3 jmp errx qd jmp qqd ifok stx mem1 sty mem2 jsr get cmp #tgl beq z2930 cmp #tkle beq klein cmp #tgro beq gross ldx #6 jmp errx klein jmp klei gross jmp gros z2930 lda #173 jsr put lda mem1 jsr put lda mem2 jsr put lda #172 jsr put inc mem1 bne z2942 inc mem2 z2942 lda mem1 jsr put lda mem2 jsr put jsr getterm php pla and #1 sta mem3 beq z2950 lda #201 jsr put txa jsr put jmp z2955 z2950 lda #205 jsr put txa jsr put tya jsr put z2955 lda #208 jsr put lda #1 sec sbc mem3 clc adc #7 jsr put lda mem3 beq z2962 lda #192 jsr put tya jsr put jmp z2965 z2962 lda #204 jsr put inx bne z2964 iny z2964 txa jsr put tya jsr put z2965 lda #208 jsr put lda #3 jsr put tete lda #76 jsr put jsr get cmp #tthen beq z2972 ldx #6 jmp errx z2972 jsr getterm bcs z2974 ldx #3 jmp errx z2974 jmp then qqd cmp #treturn bne qe lda #96 jsr put jmp sea qe nop cmp #128 bcc igv cmp #$cc bcs igv ldx #2 jmp errx igv ldx #1 jmp errx pass2 lda #t2 jsr strout lda #53 sei sta konf lda ptr1 sta mem1 lda ptr1+1 sta mem2 lda ptr3 sta mem3 lda ptr3+1 sta mem4 jsr initptr online lda ptr1 cmp mem1 bcc z10050 lda ptr1+1 cmp mem2 bcc z10050 lda #55 sta konf cli jmp last z10050 ldy #0 lda (ptr1),y sta nr iny lda (ptr1),y sta nr+1 lda pro beq suchz lda #55 sta konf cli lda #t3 jsr strout ldx nr lda nr+1 jsr axout jsr return lda #53 sei sta konf suchz lda ptr3 cmp mem3 bcc z10065 lda ptr3+1 cmp mem4 bcc z10065 lda #55 sta konf cli ldx #7 jmp errx z10065 ldy #0 lda (ptr3),y cmp nr beq wtr z10070 jsr gru2 jmp suchz wtr iny lda (ptr3),y cmp nr+1 bne z10070 ldy #0 lda (ptr2),y sta nr iny lda (ptr2),y sta nr+1 ldy #0 lda (ptr4),y sta (nr),y sta 6 iny lda (ptr4),y sta (nr),y sta 143 jsr gru1 lda #0 sta ptr3 sta ptr4 lda #$a0 sta ptr3+1 lda #$b0 sta ptr4+1 jmp online last lda #t6 jsr strout lda adr sec sbc #1 tax lda adr+1 sbc #0 jsr axout jmp return