;:ifpeek(44)<>65thenprint"{clr}erst: pO44,65:pO65*256,.:new !":end ;:poke56,144:clr ;:ifpeek(789)<234thensys49155 ;:sys36864 ;.opt oo sid =$d400 vic =$d000 irqvec =$314 tmp =247 tmp2 =249 konf =1 chr =$3800 chr1 =15240 prg =$4000 sound =sid+14 taf =$42e repeat =650 print =$ffd2 clrscr =$e544 vicinit =$ff81 cr =$d lu =$7e7 getkey =$ffe4 clrx =$e9ff setcr =$e56c zeile =$d6 spalte =$d3 home =$e566 basic =$e385 blank =$ab3f insdel =20 setpar =$ffba setnam =$ffbd ckout =$ffc9 clrchn =$ffcc open =$ffc0 close =$ffc3 printer =4 fn =4 return =$aad7 input =$ffcf flop =8 sppnt =2040 spr =704 chkin =$ffc6 tast =198 latch =$334 st =$90 *= $c000 jmp init jmp irqaus char .byt 0,$7e,$42,$42,$42,$42,$7e,0 .byt $00,$7e,$7e,$7e,$7e,$7e,$7e,$00 .byt $20,$60,$fe,$fe,$66,$26,$06,$06 .byt $00,$00,$00,$00,$10,$00,$00,$00 .byt $18,$24,$3c,$7e,$7e,$7e,$18,$00 .byt $e0,$e0,$e0,$60,$60,$30,$18,$07 .byt $00,$3c,$00,$3c,$00,$3c,$00,$00 .byt $00,$ff,$00,$00,$00,$00,$ff,$00 .byt $01,$07,$1f,$3f,$3f,$7f,$7f,$ff .byt $ff,$7f,$7f,$3f,$3f,$1f,$07,$01 .byt $80,$e0,$f8,$fc,$fc,$fe,$fe,$ff .byt $ff,$fe,$fe,$fc,$fc,$f8,$e0,$80 .byt $18,$18,$18,$18,$7e,$3c,$18,$00 .byt $3c,$42,$99,$a1,$a1,$99,$42,$3c zeig .byt 0 yet .byt 0 speed .byt 0 showflag .byt 0 ton .byt 0 tp .byt 0 edmark .byt 0 mark1 .byt 0 mark2 .byt 0 mark3 .byt 0 fname .byte "dru'" name .byte "123456789012,s," smod .byt 0 spflag .byt 0 sspeed .byt 0 adrmod .word leise,laut,start,nix .word bell,delay,thick menuetab .word exit,tonau,clr,setspd,edit .word tostart,druck,save,load,cat,cmd menuechr .byte "xtlgezdsico" .byt 0 edtab .word ks,k1,k3,k5,k7,spa,hom,unhome .word vor,rueck,ende,copy,ins,goend,del,markend edchr .byte "*\x85\x86\x87\x88 \x13\x93\x1d\x9dmk\x94\x03" .byt insdel,cr,0 chartab .word dc0,dc1,dc2,dc3,dc4,dc5,dc6 dc0 .byt 255,193,193,193,193,193,255,0 dc1 .byt 255,255,255,255,255,255,255,0 dc2 .byt 136,156,170,136,136,248,0 dc3 .byt 152,152,0 dc4 .byt 176,186,253,186,176,0 dc5 .byt 131,140,144,160,160,192,192,0 dc6 .byt 170,170,170,0 tafel .byte "\x13\x9e\x1d\x1d\x1d\x1d\x1d\xb9\x12 \xbd \x92\xbb" .byt cr .byte "\x1d\x1d\x1d\x1d\x1d\x12 \x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1d " .byt 13 .byte "\x1d\x1d\x1d\x1d\x1d\xba\x12 ^ \x92\xbc" .byt 0 menue .byte "\x9a\x08 \x12-menue-" .byt cr .byte "\x11 \x99e: \x81edit" .byt cr .byte " \x99x: \x81ende" .byt cr .byte " \x99g: \x81geschwindigkeit" .byt cr .byte " \x99l: \x81loeschen" .byt cr .byte " \x99z: \x81zurueck zum start" .byt cr .byte " \x99t: \x81ton an/aus" .byt cr .byte " \x99d: \x81druck" .byt cr .byte " \x99s: \x81speichern" .byt cr .byte " \x99i: \x81laden" .byt cr .byte " \x99c: \x81directory" .byt cr .byte " \x99o: \x81disk befehl" .byt 0 symbols .byte "\x12\x98 \xb2: laut \xb1: leise \xb6:" .byte " effekt \xb5: glocke \x92\xba\x12 \xb3: zurueck zum start \xb7" .byte ": takt \xb4: leer " .byt 0 st1 .byte "\x9b\x92\xb9\x12 ton: " .byt 0 jn .byte " ? [j/n]" .byt 0 sure .byte "sicher" .byt 0 st2 .byte " takt: " .byt 0 st3 .byte " zeiger: " .byt 0 st4 .byte " ed: " .byt 0 settxt .byte "bitte mit \x12crsr\x92 tasten geschw. setzen !" .byt cr .byte "(\x12return\x92) = ende" .byt 0 edtxt .byte "\x9a \x12-edit-" .byt cr .byte "\x11 \x99return: \x81textende\xa0\xb3" .byt cr .byte " \x99crsr : \x81cursor bewegen" .byt cr .byte " \x99m : \x81zum menue" .byt cr .byte " \x99f1 : \x81\xb1" .byt cr .byte " \x99f3 : \x81\xb2" .byt cr .byte " \x99f5 : \x81\xb6" .byt cr .byte " \x99f7 : \x81\xb7" .byt cr .byte " \x99* : \x81\xb5" .byt cr .byte " \x99space : \x81\xb4" .byt cr .byte " \x99home : \x81an anfang" .byt cr .byte " \x99clr : \x81ans ende" .byt cr .byte " \x99k : \x81kopieren" .byt cr .byte " \x99del : \x81korrektur" .byt cr .byte " \x99inst : \x81einfuegen" .byt cr .byte " \x99stop : \x81ans textende" .byt 0 endetxt .byte "muster abschalten" .byt 0 sutxt .byt cr .byte "\x11bitte stelle markieren, \x12return\x92 = ende" .byt cr .byte "\x12 q \x92 = abbruch" .byt 0 coptxt1 .byte "von wo ?" .byt 0 coptxt2 .byte "bis wo ?" .byt 0 coptxt3 .byte "wohin ?" .byt 0 savtxt .byte "save" .byt 0 lodtxt .byte "load" .byt 0 fitxt .byte ": filename ? *\x9d" .byt 0 key .byte "(taste druecken)" .byt 0 adv .byte "\x9a\xb9\xba\xbb \x9eelectronic\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9a\x11\xba\xbb\xbc \x9emusic" .byte " \x05\xbenss" .byt 0 dc .byte "$:dru'????????????" dt .byte "dir von disk " .byt 0 bef .byte "disk befehl ? i\x9d" .byt 0 setchar sei lda konf pha lda #51 sta konf lda #vic sta tmp sty tmp+1 lda #chr sta tmp2 sty tmp2+1 ldx #8 ldy #0 copyloop lda (tmp),y sta (tmp2),y iny bne copyloop inc tmp+1 inc tmp2+1 dex bne copyloop pla sta konf cli lda #31 sta vic+24 ldx #zeig-1-char copychr lda char,x sta chr1,x eor #255 sta chr1+$400,x dex bpl copychr rts setirq sei lda irqvec+1 cmp #>irq beq deja sta oldirq+2 lda irqvec sta oldirq+1 lda #irq sta irqvec sty irqvec+1 deja cli rts irq jsr sprite bit ton bpl nt jsr trommel nt bit showflag bpl oldirq ldx zeig beq sho dex sho jsr showx oldirq jmp 0 fix ldy #0 txa fillp sta prg,y iny bne fillp rts clear sei ldx #3 jsr fix lda #2 sta prg ldx #0 stx zeig cli rts initsound lda #0 ldx #6 l1 sta sound,x dex bpl l1 lda #15 sta sid+24 rts setcol ldx #27 lda #10 l4 sta taf+sid,x dex bpl l4 rts showx txa cpx #13 bcc kx cpx #242 bcs g7 sec sbc #13 tax ldy #0 l3 lda prg,x clc adc #113 sta taf,y inx iny cpy #28 bcc l3 jmp setcol kx sec sbc #13 tax ldy #0 lda #120 l7 sta taf,y iny inx bne l7 beq l3 g7 sec sbc #13 tax ldy #0 l8 lda prg,x clc adc #113 sta taf,y iny inx bne l8 lda #120 l9 sta taf,y iny cpy #28 bcc l9 jmp setcol picture jsr clrscr lda #tafel jsr strout ldx #63 lda #0 spempy sta spr,x dex bpl spempy ldx #7 lda #-1 ldy #0 spfill sta spr,y iny iny iny dex bpl spfill lda #11 sta sppnt lda #176 sta vic lda #58 sta vic+1 lda #1 sta vic+27 lda #3 sta vic+39 rts strout sta tmp sty tmp+1 ldy #0 l14 lda (tmp),y beq l13 jsr print inc tmp bne l14 inc tmp+1 bne l14 l13 rts symbout lda #124 sta lu ldx #23 jsr zeilx lda #12 sta sid+lu lda #symbols bne strout status ldx #22 jsr zeilx lda #st1 jsr strout lda ton jsr io lda #st2 jsr strout lda speed jsr hexdez lda #st3 jsr strout lda zeig jsr hexdez lda #st4 jsr strout lda edmark jsr hexdez jsr blank lda #"\x92" jsr print lda #"\xbb" jsr print jmp home io beq l17 lda #"1" .byt $2c l17 lda #"0" jmp print screen jsr vicinit lda #0 sta vic+32 sta vic+33 rts clrmen ldx #3 l15 jsr clrx inx cpx #22 bcc l15 jsr ad ldx #4 zeilx lda #0 sta spalte stx zeile jmp setcr irqaus sei lda oldirq+1 sta irqvec lda oldirq+2 sta irqvec+1 cli rts yn lda #jn jsr strout xx jsr status jsr getkey cmp #"n" beq nein cmp #"j" bne xx sec rts nein clc rts hexdez ldx #0 stx tp hu cmp #100 bcc kl100 sec sbc #100 inc tp bne hu kl100 pha lda tp clc adc #"0" jsr print lda #0 sta tp pla ze cmp #10 bcc kl10 sec sbc #10 inc tp bne ze kl10 pha lda tp clc adc #"0" jsr print pla clc adc #"0" jmp print suchletzt ldx #-1 ly lda prg,x cmp #3 bne got dex bne ly got rts goend jsr suchletzt stx edmark jmp showed druck lda #fn jsr close lda #fn ldx #printer ldy #0 jsr setpar lda #0 jsr setnam jsr open ldx #fn jsr ckout lda #8 jsr print jsr suchletzt stx mark1 ldx #0 stx mark2 d1 ldx mark2 cpx mark1 bcc d2 beq d2 lda #15 jsr print jsr return jsr clrchn lda #fn jmp close d2 inc mark2 lda prg,x asl tax lda chartab+1,x tay lda chartab,x jsr strout lda #128 jsr print jsr print jmp d1 ad lda #19 sta zeile lda #25 sta spalte jsr setcr lda #adv jmp strout trommel lda speed beq null dec yet beq null rts null lda speed bne nonu lda #1 nonu sta yet ausw ldx zeig lda prg,x inc zeig cmp #7 bcs nix asl tax lda adrmod,x sta goto+1 lda adrmod+1,x sta goto+2 goto jmp 0 nix rts start lda #0 sta zeig lda prg cmp #2 bne ausw rts laut ldx #30 jsr an ldx #80 release ldy #0 rel dey bne rel dex bne rel jmp initsound an lda #9 sta sound+5 lda #9 sta sound+6 stx sound+1 lda #129 sta sound+4 rts leise ldx #40 jsr an ldx #30 bne release bell ldx #120 stx sound+1 ldx #168 stx sound+5 ldx #8 stx sound+3 ldx #169 stx sound+6 lda #65 sta sound+4 lda #64 sta sound+4 ldy #110 ldx #0 l12 dex bne l12 dey bne l12 jmp initsound thick ldx #100 jsr an ldx #100 l2 ldy #20 l16 dey bne l16 dex bne l2 jmp initsound delay ldx #0 jsr an ldx #100 l10 ldy #0 stx sound+1 l11 dey bne l11 dex bne l10 jmp initsound sprite bit spflag bmi on rts on dec sspeed beq we rts we lda #20 sta sspeed lda vic+21 eor #1 sta vic+21 rts init jsr clear jsr screen jsr setchar lda #4 sta speed sta sspeed jsr picture jsr initsound jsr setirq lda #0 sta edmark sta ton lda #128 sta repeat jsr ad men ldx #4 stx spflag jsr zeilx lda #menue jsr strout jsr symbout lda #-1 sta showflag lda #0 sta vic+21 m1 jsr status jsr getkey beq m1 ldx #-1 sta tmp m2 inx lda menuechr,x beq m1 cmp tmp bne m2 txa asl tax lda menuetab,x sta stat+1 lda menuetab+1,x sta stat+2 stat jsr 0 jmp men tonau sei lda ton eor #255 sta ton lda #1 sta yet cli rts exit jsr clrmen lda #endetxt jsr strout jsr yn bcc anlass jsr irqaus anlass lda #0 sta showflag jsr clrscr jmp basic clr jsr clrmen lda #sure jsr strout jsr yn bcc noclr jsr clear noclr jmp clrmen setspd jsr clrmen lda #settxt jsr strout spst jsr status jsr getkey cmp #cr beq noclr cmp #"\x11" bne nopl10 ldx #10 s1 jsr pl1 dex bne s1 beq spst pl1 sei ldy speed cpy #255 beq ns inc speed ns cli rts nopl10 cmp #"\x91" bne nomi10 ldx #10 s2 jsr mi1 dex bne s2 beq spst mi1 sei ldy speed beq ns1 dec speed ns1 cli rts nomi10 cmp #"\x1d" bne nou1 jsr pl1 jmp spst nou1 cmp #"\x9d" bne wasdann jsr mi1 wasdann jmp spst tostart lda #0 sta zeig rts suchmark lda #sutxt jsr strout sulp jsr status jsr getkey beq sulp cmp #cr bne nocr lda edmark sec rts nocr cmp #"q" bne noquit clc rts noquit cmp #"\x1d" bne novor jsr vor jmp sulp novor cmp #"\x9d" bne norueck jsr rueck jmp sulp norueck cmp #"\x13" bne nohome jsr hom jmp sulp nohome cmp #"\x93" bne nclr jsr unhome jmp sulp nclr cmp #"\x03" bne sulp jsr goend jmp sulp edit ldx #0 stx showflag inx stx sspeed jsr showed jsr clrmen lda #edtxt jsr strout lda #-1 sta spflag edlp jsr status jsr getkey beq edlp ldx #-1 sta tmp edsu inx lda edchr,x beq edlp cmp tmp bne edsu txa asl tax lda edtab,x sta goed+1 lda edtab+1,x sta goed+2 goed jsr 0 jmp edlp ende pla pla jmp clrmen markend lda #2 mark ldx edmark sta prg,x vor ldx edmark cpx #255 beq wro inc edmark wro jmp showed showed ldx edmark jmp showx rueck ldx edmark beq wro dec edmark jmp showed hom ldx #0 stx edmark beq showed unhome ldx #255 stx edmark bne showed spa lda #3 bne mark ks lda #4 bne mark k1 lda #0 beq mark k3 lda #1 bne mark k5 lda #5 bne mark k7 lda #6 bne mark copy jsr clrmen pla pla lda #coptxt1 jsr strout jsr suchmark bcs weiter abbruch cli jmp edit weiter sta mark1 ge2 jsr clrmen lda #coptxt2 jsr strout jsr suchmark bcc abbruch sta mark2 cmp mark1 bcc ge2 ge3 jsr clrmen lda #coptxt3 jsr strout jsr suchmark bcc abbruch sta mark3 cmp mark1 bcc sok cmp mark2 bcc ge3 beq ge3 sok sei ldx mark1 ldy mark3 cplp lda prg,x sta prg,y cpx mark2 bcs abbruch inx iny bne cplp beq abbruch del sei ldx edmark beq dl dex dl cpx #-1 beq delend lda prg+1,x sta prg,x inx jmp dl delend lda #3 sta prg+255 jmp rueck ins sei ldx #-1 ist cpx edmark beq inst lda prg-1,x sta prg,x dex jmp ist inst lda #3 sta prg,x cli jmp showed finame php ldx #11 lda #32 fifi sta name,x dex bpl fifi jsr clrmen plp bcc laden lda #"w" sta smod lda #savtxt bne out laden lda #"r" sta smod lda #lodtxt out jsr strout jsr opnerr lda #fitxt jsr strout lda #fn jsr close ldx #0 getnam jsr input cpx #12 bcs toolong cmp #cr beq toolong cmp #"*" beq getnam cmp #":" beq getnam cmp #"," beq getnam cmp #"?" beq getnam cmp #"@" beq getnam sta name,x inx bne getnam toolong txa bne noinull sec rts noinull lda #20 ldx #fname jsr setnam lda #fn tay ldx #flop jsr setpar jmp open errch jsr return ldx #15 jsr chkin jsr input pha jsr print geterr jsr input jsr print cmp #cr bne geterr all jsr clrchn pla cmp #"0" bne derr clc rts derr lda #key jsr strout lda #0 sta tast waitkey lda tast beq waitkey dec tast sec rts opnerr lda #15 tay ldx #flop jsr setpar lda #0 jsr setnam jmp open save sec jsr finame bcs abort jsr errch bcs abort jsr irqaus ldx #fn jsr ckout jsr suchletzt txa pha jsr print lda speed jsr print lda edmark jsr print lda ton jsr print pla sta mark1 ldx #-1 wprg inx lda prg,x jsr print cpx mark1 bcc wprg abort jsr clrchn lda #fn jsr close lda #15 jsr close jsr setirq jmp clrmen load clc jsr finame bcs abort jsr errch bcs abort jsr irqaus ldx #fn jsr chkin jsr clear jsr input pha jsr input sta speed jsr input sta edmark jsr input sta ton pla sta mark1 ldx #-1 getprg jsr input inx sta prg,x cpx mark1 bcc getprg bcs abort cat jsr irqaus lda #fn jsr close jsr opnerr ldx #dc lda #18 jsr setnam jsr clrmen ldx #flop lda #fn ldy #0 jsr setpar jsr open jsr errch bcs ab ldx #fn jsr chkin ldy #4 jsr skip jsr suchq bcs ab ldx #0 c2 jsr input cmp #34 beq c1 sta latch,x inx bne c2 c1 lda #0 sta latch,x jsr diskname c3 jsr zend bcs c4 ldy #2 jsr skip jsr suchq bcs c4 jsr blaetter jsr return ldy #4 jsr skip jsr blank c5 jsr input cmp #34 beq c3 jsr print bcc c5 c4 ldx #20 jsr zeilx jsr derr ab jmp abort skip jsr input dey bne skip rts suchq lda st bne so jsr input cmp #34 bne suchq clc rts so sec rts zend lda st bne so jsr input bne zend clc rts blaetter lda zeile cmp #18 bcc so ldx #20 jsr zeilx jsr derr diskname jsr clrmen lda #
dt jsr strout lda #latch jsr strout jmp return cmd jsr clrmen lda #bef jsr strout ldx #0 o1 jsr input cmp #cr beq o2 sta latch,x inx bne o1 o2 txa ldx #latch jsr setnam ldx #flop lda #15 tay jsr setpar jsr open jsr errch bcs o3 jsr derr o3 lda #15 jsr close jmp clrmen