;:poke56,128:clr ;:ifpeek(776)<>228then:exit ;:sys36864:.goto 10 print"****** fehler nummer"en"*****" print"****** "err$(en) ifel>-1thenprint"****** zeile:"el resume print"****** direktmodus" end ;.opt oo *= $8000 jmp init basvec =776 chrgot =121 yptr =$a8fb strout =$ab1e mem =55 chrget =115 prg =43 t2 =$e460 axout =$bdcd frame =53280 screen =frame+1 clrvec =$e453 tmp =247 basic =$a7e7 inter =$a7ae ptr =122 funvec =basvec+2 typ =$d funcold =$ae8d pk =$aea8 memfac =$bba2 yfac =$b3a2 getklam =$aef1 facasc =$bddd num =$100 error =$a445 stradr =34 exp =$61 facmem =$bbd4 facarg =$bc0c argfac =$bbfc vergl =$bc5b int =$bccc abs =$bc58 afac =$bc3c memdiv =$bb0f pl05 =$b849 getx =$b79e return =$aad7 chkauf =$aefa chkzu =$aef7 frmnum =$ad9e overflow =$b97e komma =$aefd memhoch =$bf78 memmult =$ba28 sin =$e26b cos =$e264 tan =$e2b4 memarg =$ba8c div =$bb12 memmin =$b850 konf =1 integer =$b7f7 tor =$b0 lat =182 byt =20 varb =$2d link =$a533 clr =$a659 eingabe =$e39d tast =198 get =$ab92 intfac =$bc49 fac =$62 latch =704 org =tmp+2 space =$ab3f out =$ffd2 print =$aaa0 findlin =$a613 linenr =$a96b adr =$5f ready =$a474 line =$39 undefd =$a8e3 errvec =$300 olderr =$e38b nextst =$a906 ffac =$65 integer2 =$bc9b sign =$66 polynom =$e059 illquan =$b248 memplus =$b867 frestr =$b6a3 fremevl =$ad9e sendnam =$f3d5 fnadr =$bb fnlen =$b7 ga =$ba sa =$b9 talk =$ffb4 sectalk =$ff96 iecin =$ffa5 status =144 clsfil =$f642 spalte =211 stop =$ffe1 strres =$b47d zeig =$62 desc =$b4ca errtab =$a328 kbuf =631 key =203 wf1 =4 wf3 =5 wf5 =6 wf7 =3 irqvec =788 oldirq =$ea31 clrvec2 =$ff8a shift =653 work =254 toolong =$a571 teststack =$a3fb suchstack =$a38a varnam =$49 clrx =59903 setcr =$e56c zeile =214 tend =$80 untalk =$ffab listen =$ffb1 seclist =$ff93 unlist =$ffae iecout =$ffa8 float =$5d addziff =$bd7e var =$47 typ1 =$d typ2 =$e typemiss =$ad99 intflg =$10 suchvar =$b08b des =$64 sid =$d400 page =648 scroll =$e8ea flp .byt 0,0,0,0,0 dvs .byt 0,0,0,0,0 flt .byt 0,0,0,0,0 fme .byt 0,0,0,0,0 fl2 .byt $82,0,0,0,0 fl180 .byt $86,$65,$2e,$e0,$d4 fl34 .byt $86,$07,$2b,$9e,$4b flm1 .byt $81,$80,0,0,0 fl27 .byt $82,$2d,$f8,$54,$58 flvic .byt $90,$50,0,0,0 flsid .byt $90,$54,0,0,0 flcol .byt $90,$58,0,0,0 koeff .byt 8 .byt $7c,$12,$ea,$af,$02 .byt $7e,$c6,$2c,$28,$05 .byt $7f,$76,$e2,$d6,$ca .byt $80,$c1,$b7,$5b,$c5 .byt $80,$6b,$0f,$9a,$c5 .byt $80,$e5,$a5,$85,$fd .byt $80,$7c,$fb,$20,$78 .byt $80,$93,$c2,$d5,$04 fl1 .byt $81,0,0,0,0 ee1 .byte "integeR" ee2 .byte "using parameteR" ee3 .byte "using exponenT" ee4 .byte "using placE" ee5 .byte "can't resumE" ee6 .byte "error numbeR" ee7 .byte "keynumbeR" ee8 .byte "until without repeaT" ee9 .byte "pop without gosuB" eea .byte "illegal koordinateS" et .word ee1,ee2,ee3,ee4,ee5 .word ee6,ee7,ee8,ee9,eea chain .byt wf1,wf3,wf5,wf7 y1 .word ba,bb,bc,bd .word be,bf,bg,bh,bi .word bj,bk,bl,bm,bn .word bo,bp,bq,br,bs .word bt,bu,bv,bw,bx .word by,bz,b1,b2 .word 0 ba .byte "pi" .byt 0 bb .byte "sum" .byt 0 bc .byte "prim" .byt 0 bd .byte "div" .byt 0 be .byte "root" .byt 0 bf .byte "deg" .byt 0 bg .byte "rad" .byt 0 bh .byte "rez" .byt 0 bi .byte "cot" .byt 0 bj .byte "sec" .byt 0 bk .byte "csc" .byt 0 bl .byte "mod" .byt 0 bm .byte "ram" .byt 0 bn .byte "chr" .byt 0 bo .byte "deek" .byt 0 bp .byte "ex" .byt tor,0 bq .byte "el" .byt 0 br .byte "en" .byt 0 bs .byte "odd" .byt 0 bt .byte "fac" .byt 0 bu .byte "err$" .byt 0 bv .byte "$" .byt 0 bw .byte "%" .byt 0 bx .byte "ex" .byt 0 by .byte "vic" .byt 0 bz .byte "sid" .byt 0 b1 .byte "col" .byt 0 b2 .byte "vid" .byt 0 y2 .word pi .word sum,prim,diiv,root,deg,rad,rez .word cot,sek,csc,mod,ram,chr,deek .word xor,errl,errn,odd,fak,err,hex .word bin,ex,cvic,csid,ccol,cvid x1 .word aa,ab,ac,ad .word ae,af,ag,ah,ai .word aj,ak,al,am,an .word ao,ap,aq,ar,as .word at,au,av .word 0 aa .byte "exit" .byt 0 ab .byte "restart" .byt 0 ac .byte "old" .byt 0 ad .byte "inkey" .byt 0 ae .byte "use" .byt 0 af .byte "trap" .byt 0 ag .byte "off" .byt 0 ah .byte "resume" .byt 0 ai .byte "dir" .byt 0 aj .byte "key" .byt 0 ak .byte "repeat" .byt 0 al .byte "until" .byt 0 am .byte "pop" .byt 0 an .byte "erase" .byt 0 ao .byte "at" .byt 0 ap .byte "s" .byt tend,0 aq .byte "disk" .byt 0 ar .byte "swap" .byt 0 as .byte "beep" .byt 0 at .byte "doke" .byt 0 au .byte "scroll" .byt 0 av .byte "mark" .byt 0 x2 .word exit,init,old,inkey,use .word trap,toff,resume,dir,setkey .word repeat,until,pop,erase,pat .word send,disk,swap,beep,doke .word scroll,mark t1 .byte "\x93\x05\x08\x8e\x11 **** nss mathematical basic ****" .byt 13,13 .byte " 64k ram system " .byt 0 t3 .byt 13 .byte "-- bye bye ! --" .byt 13,13,0 t4 .byte "lO " .byt 0 t5 .byte ",8,1 (" .byt 0 t6 .byt 13 .byte "\x91\x12files found: " .byt 0 t7 .byt ".",13,0 t8 .byte " error" .byt 0 t9 .byte "key " .byt 0 ktab .word f1,f2,f3,f4,f5,f6,f7,f8 f1 .byte "lI_\x01-------" f2 .byte "rU_\x01-------" f3 .byte "dir_\x01------" f4 .byte "send" .byt 34 .byte "\x01-----" f5 .byte "key_\x01------" f6 .byte "exit_\x01-----" f7 .byte "disk_\x01-----" f8 .byte "sY4096*\x01---" en .byt 0 el .word 0 ea .word 0 ep .word 0 last .byt 0 exit jsr clrvec sei jsr clrvec2 cli lda #t3 jmp strout dump jmp (tmp) pi lda #pk piend jsr memfac lda #0 sta typ rts ex lda #fl27 jmp piend errx dex txa asl tax lda et,x sta stradr lda et+1,x jmp error cvic lda #flvic jmp piend csid lda #flsid jmp piend ccol lda #flcol jmp piend cvid lda #0 sta fac+1 lda page sta fac ldx #$90 sec jmp intfac sum jsr getklam jsr facasc ldy #0 sty tmp dey add iny lda num,y beq sumend cmp #"1" bcc add cmp #"9"+1 bcs add sec sbc #"0" clc adc tmp sta tmp jmp add sumend ldy tmp jsr yfac jmp back prim1 jsr getklam jsr abs jsr ganz beq priok ldx #1 jmp errx priok lda #fl2 jsr vergl cmp #1 beq facgr ldx #dvs jsr facmem prim0 lda #0 jmp aus facgr ldx #flp jsr facmem lda #fl2 jsr memfac testdiv ldx #dvs jsr facmem lda #flp jsr memdiv jsr ganz beq prim0 lda #dvs jsr memfac jsr pl05 jsr pl05 lda #flp jsr vergl bmi testdiv lda #-1 aus pha jsr afac pla rts prim jsr prim1 back lda #0 sta typ lda #-1 rts diiv jsr prim1 beq filz lda #flp jmp piend filz lda #dvs jmp piend ganz ldx #flt jsr facmem jsr int lda #flt jsr vergl cmp #0 rts deg jsr getklam lda #fl180 jsr memmult jmp back rad jsr getklam lda #fl180 jsr memdiv jmp rezi facout ldx #fme jsr facmem jsr facasc jsr strout jsr return lda #fme jmp memfac root jsr chkauf jsr frmnum jsr rezi ldx #flp jsr facmem jsr komma jsr frmnum jsr chkzu jsr facarg lda #flp jsr memhoch jmp back rez jsr getklam rezi lda #fl1 jsr memdiv jmp back ram lda #48 jmp writeln chr lda #49 writeln sta lat jsr getklam lda byt pha lda byt+1 pha jsr integer lda konf pha sei lda lat sta konf ldy #0 lda (byt),y tay pla sta konf cli pla sta byt+1 pla sta byt jmp yfac cot jsr getklam jsr tan jmp rezi csc jsr getklam jsr sin jmp rezi sek jsr getklam jsr cos jmp rezi mod jsr chkauf jsr frmnum ldx #flp jsr facmem jsr komma jsr frmnum jsr chkzu ldx #dvs jsr facmem lda #flp jsr memarg lda exp jsr div jsr int lda #dvs jsr memmult lda #flp jsr memmin jmp back old lda #1 tay sta (prg),y jsr link lda stradr ldy stradr+1 clc adc #2 bcc noiny iny noiny sta varb sty varb+1 jsr clr jmp eingabe init jsr clrsid jsr clrvec lda #exnw sta basvec sty basvec+1 lda #func sta funvec sty funvec+1 lda #irq sta irqvec sty irqvec+1 lda mem+1 bpl klei lda #128 sta mem+1 klei lda #t1 jsr strout lda mem sec sbc prg tax lda mem+1 sbc prg+1 jsr axout lda #t2 jsr strout lda #6 sta frame sta screen rts exnw jsr chrget ldx #$ff nss inx txa asl tay lda x1,y sta tmp lda x1+1,y sta tmp+1 bne nofin lda tmp bne nofin jsr chrgot jmp basic nofin ldy #255 ssuch iny lda (tmp),y beq wirkl cmp (ptr),y beq ssuch bne nss wirkl txa asl tax lda x2,x sta tmp lda x2+1,x sta tmp+1 jsr yptr jsr chrgot jsr dump jmp inter func lda #0 sta typ jsr chrget ldx #$ff ssn inx txa asl tay lda y1,y sta tmp lda y1+1,y sta tmp+1 bne noinf lda tmp bne noinf jsr chrgot jmp funcold noinf ldy #$ff naja iny lda (tmp),y beq sowas cmp (ptr),y beq naja bne ssn sowas txa asl tax lda y2,x sta tmp lda y2+1,x sta tmp+1 jsr yptr jsr dump jmp chrgot inkey lda #0 sta tast wk lda tast beq wk jmp illquan deek jsr getklam lda byt pha lda byt+1 pha jsr integer ldy #0 lda (byt),y sta fac+1 iny lda (byt),y sta fac rest ldx #$90 sec jsr intfac pla sta byt+1 pla sta byt jmp back xor jsr chkauf jsr frmnum lda byt pha lda byt+1 pha jsr integer lda byt pha lda byt+1 pha jsr komma jsr frmnum jsr integer jsr chkzu pla eor byt+1 sta fac pla eor byt sta fac+1 jmp rest use1 jsr getx dex cpx #30 bcc gut1 ill ldx #2 jmp errx gut1 txa pha jsr komma jsr getx cpx #30 bcs ill txa pha jsr komma jsr frmnum jsr facasc pla sta tmp pla sta tmp+1 ldx #0 suchp lda num,x beq fnd cmp #"e" beq illexp cmp #"." beq fnd inx bne suchp fnd dex stx org lda tmp+1 sec sbc org cmp tmp+1 beq gut2 bcs plc gut2 tax beq mn vorzeit jsr space dex bne vorzeit ldx #0 mn lda num,x beq totalend cmp #"." beq end jsr out inx bne mn end jsr out ldy #0 inx after lda num,x beq tt jsr out inx iny cpy tmp bcc after rts tt jsr space iny cpy tmp bcc tt rts totalend jsr space ldy #0 beq tt illexp ldx #3 jmp errx plc ldx #4 jmp errx use jsr use1 jsr chrgot jmp print trapon txa bpl feh jmp ready feh lda line sta el lda line+1 sta el+1 stx en jsr current lda ea sta ptr lda ea+1 sta ptr+1 jmp inter current jsr nextst tya clc adc ptr sta ep lda ptr+1 adc #0 sta ep+1 rts errn ldy en jmp yfac errl lda el+1 cmp #255 beq mi1 sta fac lda el sta fac+1 ldx #$90 sec jmp intfac mi1 lda #-1 jmp afac trap jsr linenr jsr findlin bcs f jmp undefd f lda adr sec sbc #1 sta ea lda adr+1 sbc #0 sta ea+1 lda #trapon es sta errvec sty errvec+1 rts toff lda #olderr jmp es resume lda el+1 cmp #255 bne ttt x5 ldx #5 jmp errx ttt ldx ep+1 beq x5 sta line+1 lda el sta line lda ep sta ptr lda ep+1 sta ptr+1 rts odd jsr getklam jsr integer2 lsr ffac bcc ger lda #0 .byt $2c ger lda #-1 jmp afac fak jsr getklam ldx #flp jsr facmem bit sign bpl facpos jmp illquan facpos lda #fl34 jsr vergl bmi kl34 jmp overflow kl34 lda exp beq glcheins lda #fl1 jsr vergl bmi poly schlei lda #flm1 jsr memplus lda #fl1 jsr vergl bmi next ldx #dvs jsr facmem lda #flp jsr memmult ldx #flp jsr facmem lda #dvs jsr memfac jmp schlei next lda #fl1 jsr vergl bne weiter lda #flp jmp memfac weiter jsr poly lda #flp jmp memmult glcheins lda #fl1 jmp memfac poly lda #koeff jmp polynom dir lda #"$" sta latch lda #"0" sta latch+1 ldx #2 jsr chrgot beq nopara jsr fremevl jsr frestr sta tmp ldy #-1 ldx #3 lda #":" sta latch+2 trns iny cpy tmp bcs nopara lda (stradr),y sta latch,x inx bne trns nopara stx fnlen lda #latch sta fnadr sty fnadr+1 lda #8 sta ga lda #$60 sta sa jsr sendnam lda ga jsr talk lda sa jsr sectalk lda #0 sta status ldy #3 lda #0 sta dvs l1 sty tmp jsr iecin sta tmp+1 ldy status bne l4 jsr iecin ldy status bne l4 ldy tmp dey bne l1 sta tmp jsr l5 lda #0 sta flp l3 jsr iecin ldx status bne l4 ldx flp bne l7 l8 tax beq l2 jsr out jsr stop beq l9 lda spalte cmp #22 bne l3 lda #t5 jsr strout lda #1 sta flp jmp l3 l4 jsr clsfil lda #t6 jsr strout ldx dvs dex dex lda #0 jsr axout lda #t7 jmp strout l5 lda #t4 jsr strout l6 jsr iecin and #127 cmp #32 beq l6 cmp #160 beq l6 jmp out l2 lda #")" jsr out jsr space ldx tmp+1 lda tmp jsr axout inc dvs jsr return ldy #2 jmp l1 l7 and #127 cmp #32 beq l3 cmp #160 bne l8 jmp l3 l9 inc dvs jmp l4 err jsr getklam jsr integer lda byt+1 beq hi0 th ldx #6 jmp errx hi0 ldx byt beq th cpx #31 bcs th ldy #0 dex txa asl tax lda errtab,x sta stradr lda errtab+1,x sta stradr+1 text lda (stradr),y pha and #$7f sta latch,y iny pla bpl text ldx #0 post lda t8,x beq fin sta latch,y iny inx bne post fin tya pha jsr strres pla tay transd dey cpy #255 beq finn lda latch,y sta (zeig),y jmp transd finn jmp desc irq jsr tastirq jmp oldirq tastirq lda key ldy #3 cmp last beq rt sta last sucht cmp chain,y beq daisy dey bpl sucht rt rts daisy iny tya asl tay lda shift and #1 bne sft dey sft dey tya asl tay lda ktab,y sta work lda ktab+1,y sta work+1 ldy #-1 putbuf iny lda (work),y cmp #"\x01" beq fnsh cmp #"_" bne nocr lda #13 nocr sta kbuf,y jmp putbuf fnsh sty tast rts setkey beq showkey jsr getx cpx #1 bcs gross illnr ldx #7 jmp errx gross cpx #9 bcs illnr txa pha jsr komma jsr fremevl jsr frestr cmp #11 bcc enough jmp toolong enough sta flp pla sec sbc #1 asl tay sei lda ktab,y sta work lda ktab+1,y sta work+1 ldy #-1 settext iny cpy flp bcs full lda (stradr),y sta (work),y jmp settext full lda #"\x01" sta (work),y cli rts showkey ldx #1 keyloop stx flp dex txa asl tax lda ktab,x sta tmp lda ktab+1,x sta tmp+1 lda #t9 jsr strout lda #0 ldx flp jsr axout lda #"," jsr out jsr space lda #34 ldy #0 jsr out letter lda (tmp),y cmp #"\x01" beq nextkey jsr out iny bne letter nextkey lda #34 jsr out jsr return ldx flp inx cpx #9 bcc keyloop rts repeat pla sta flp pla sta dvs lda #3 jsr teststack lda ptr pha lda ptr+1 pha lda line pha lda line+1 pha lda #"r" pha lda dvs pha lda flp pha rts until tsx inx inx lda num+1,x cmp #"r" bne un2 txs jsr fremevl tsx lda exp bne un1 jsr ew1 bne un3 ew1 lda num+2,x sta line+1 lda num+3,x sta line lda num+4,x sta ptr+1 lda num+5,x sta ptr rts un1 txa clc adc #5 tax txs un3 jmp inter un2 ldx #8 jmp errx pop lda #-1 sta varnam+1 jsr suchstack txs cmp #$8d bne poperr pla pla pla pla pla rts poperr ldx #9 jmp errx erase jsr getx cpx #25 bcc eraok illk ldx #10 jmp errx eraok jmp clrx pat jsr getx cpx #25 bcs illk txa pha jsr komma jsr getx cpx #40 bcs illk stx spalte pla sta zeile jsr setcr jsr chrgot cmp #"," bne at1 jsr komma jmp print at1 rts disk lda #0 sta status jsr return lda #8 sta ga jsr talk lda #$6f sta sa jsr sectalk erri jsr iecin bit status bvs endc jsr out bcc erri endc jmp untalk send jsr fremevl jsr frestr sta flp lda #8 sta ga jsr listen lda #$6f sta sa jsr seclist ldy #0 cmdout cpy flp bcs cmdouted lda (stradr),y iny sty dvs jsr iecout ldy dvs bne cmdout cmdouted jmp unlist clrfac lda #0 ldx #$a cfac sta float,x dex bpl cfac rts hex jsr clrfac jsr chrgot jmp frm gethx jsr chrget frm bcc ziffer cmp #"a" bcc hend cmp #"g" bcs hend sec sbc #7 ziffer sec sbc #"0" pha lda exp beq nochnull clc adc #4 bcs over sta exp nochnull pla beq gethx jsr addziff jmp gethx hend rts over jmp overflow bin jsr clrfac jsr chrgot jmp fmr getbi jsr chrget fmr cmp #"2" bcs hend cmp #"0" bcc hend sbc #"0" pha lda exp beq nnull inc exp beq over nnull pla beq getbi jsr addziff jmp getbi swap lda #0 sta intflg jsr suchvar sta des sty des+1 jsr komma lda typ2 pha lda typ1 pha jsr suchvar pla cmp typ1 bne swerr pla cmp typ2 bne swerr ldy #4 tausch lda (var),y tax lda (des),y sta (var),y txa sta (des),y dey bpl tausch rts swerr jmp typemiss beep jsr getx inx stx flp jsr clrsid lda #15 sta sid+24 lda #150 sta sid+1 lda #240 sta sid+6 lda #9 sta sid+5 lda #33 sta sid+4 klang jsr paus dec flp bne klang jsr clrsid ldx #255 bne paus1 paus ldy #0 ldx #69 paus1 dey bne paus1 dex bne paus1 rts clrsid ldy #24 lda #0 clrsi sta sid,y dey bpl clrsi rts doke jsr frmnum jsr integer pha tya pha jsr komma jsr frmnum jsr integer ldy #0 pla sta tmp pla sta tmp+1 lda byt sta (tmp),y iny lda byt+1 sta (tmp),y drin rts mark jsr fremevl jsr frestr cmp #11 bcc passt jmp toolong passt tay sty tast bufcop dey bmi drin lda (stradr),y sta kbuf,y clc bcc bufcop