;:poke56,117:clr ;:sys36864 ;.opt oo picmem =$c000 tmp =2 print =$ffd2 setcr =$e56c farb =646 spalte =211 zeile =214 return =$aad7 col1 =53280 col2 =col1+1 home =$e566 tmp2 =tmp+2 axout =$bdcd cr =13 getkey =65508 clrx =$e9ff rvs =199 tab1 =2 tab2 =17 spri =704 vic =$d000 ptr =2040 vicinit =65409 irqvec =$314 rpt =650 adrx =$e9f0 bild =$d1 latch =820 vc =vic+17 setnam =$ffbd setpar =$ffba close =$ffc3 open =$ffc0 saver =$ffd8 loadr =$ffd5 tast =198 clrchn =$ffcc chkin =$ffc6 flop =8 input =$ffcf sa =$b9 ioflag =$9d fnlen =$b7 status =$90 blank =$ab3f chkout =$ffc9 sid =vic+$400 *= 30000 jmp init jmp init2 symb .byte "\x12 \xaa\x11\x9d\x9d\xaf\xba\x91" .byt 0 syart1 .byte "\x12 \xaa\x11\x9d\x9d\xaf\xba" syart2 .byte "\x12 \x11\x9d\x9d " syart3 .byte "\x92\xac\xbb\x11\x9d\x9d\xbc\xbe" sytab .word syart1,syart2,syart3 info .byte "-_wp" grbit .byt 1,2,4,8,$10,$20,$40 grbit2 .byt $fe,$fd,$fb,$f7,$ef,$df,$bf mem .byt 0 mem2 .byt 0 spflag .byt 0 edx .byt 0 edy .byt 0 spsp .byt 0 temp .byt 0 ed .word 0 runp .word 0 flag .byt 0 richt .byt 0 speed .byt 0 tmp3 .word 0 far1 .byt 7 far0 .byt 9 tit .byte "\x08\x93\x12\x9a === programmierbare lichterwand === " .byt 0 mentxt .byte "\x92\x1e - menue -" .byt cr .byte "\x11 \x9a(e) \x9eedit \x9a(r) \x9estart" .byt cr .byte " \x9a(l) \x9emuster laden \x9a(s) \x9espeichern" .byt cr .byte " \x9a(x) \x9eende \x9a(d) \x9edirectory" .byt cr .byte " \x9a(b) \x9edisk befehl \x9a(f) \x9eanz.format" .byt 0 waehl .byte " -- bitte waehlen -- " .byt 0 surtxt .byte "sind sie sicher ? [j/n] " .byt 0 matxt .byte "dieses (m)uster oder (a)lle ? [m/a] " .byt 0 ta .byte "druecken sie bitte eine taste ! " .byt 0 edtxt .byte "\x92\x1e - edit -" .byt cr .byte "\x11 \x9a\x12x\x92 \x9ezurueck \x9a\x12l\x92 \x9eloeschen" .byt cr .byte " \x12\x9ai\x92 \x9einvertieren \x9a\x12crsr\x92 \x9ecursor" .byt cr .byte " \x9a\x12home\x92 \x9ehome \x12\x9aclr\x92 \x9eanfang" .byt cr .byte " \x9a\x12+\x92 \x9evor \x9a\x12-\x92 \x9ezurueck" .byt 0 edt2 .byte "\x13\x11\x11\x11" .byt cr .byte "\x10}\x9a\x12<\x92 \x9e-10 \x9a\x12>\x92 \x9e+10" .byt cr .byte "\x10}\x9a\x12[\x92 \x9ep.loesch \x9a\x12]\x92 \x9ep.setzen" .byt cr .byte "\x10}\x9a\x12w\x92 \x9eroll auf \x9a\x12z\x92 \x9eroll ab" .byt cr .byte "\x10}\x9a\x12a\x92 \x9er.links \x9a\x12s\x92 \x9er.rechts" .byt cr .byte "\x10}\x9a\x12c\x92 \x9eletztes holen" .byt cr .byte "\x10}\x9a\x12_\x92 \x9e= \x12+\x92 + \x12c" .byt cr .byte "\x10}\x9a\x12del\x92 \x9eausfuegen" .byt cr .byte "\x10}\x9a\x12inst\x92 \x9eeinfuegen" .byt cr .byte "\x10}\x9a\x12h\x92 \x9ehochziehen" .byt cr .byte "\x10}\x9a\x12n\x92 \x9einfo" .byt 0 fitxt .byte ": filename ? \x05" .byt 0 lodtxt .byte "\x92\x9claden" .byt 0 savtxt .byte "\x92\x9cspeichern" .byt 0 runtxt .byte "\x92\x1e - start -\x11" .byt cr .byte "\x9a (x) \x9eende \x9a(+)\x9e geschw. hoch" .byt cr .byte "\x9a (v) \x9evon vorn \x9a(-)\x9e geschw. runter" .byt cr .byte "\x9a (r) \x9erichtung \x99geschw.:" .byt 0 dirtxt .byt cr .byte "\x99\x11files auf der disk \x12" .byt 0 disk .byte "\x92\x9bdisk befehl eingeben: \x05i0\x9d\x9d" .byt 0 noerr .byt cr .byte "\x9e** kein fehler **" .byt 0 fotxt .byte "\x92\x1e - anzeigeformat -\x11" .byt cr .byte "\x9a (x) \x9eende \x9a(n)\x9e normal" .byt cr .byte "\x9a (1) \x9enormal, mit trennlinien" .byt cr .byte "\x9a (2) \x9evoll \x9a(i)\x9e farbe 1" .byt cr .byte "\x9a (3) \x9emini \x9a(o)\x9e farbe 0" .byt 0 copr .byte "\x13\x11\x11\x11" .byt cr .byte "\x10}\x98programmiert von" .byt cr .byte "\x10}nicki heusler" .byt cr .byte "\x10}5. - 9. mai 1986" .byt cr .byte "\x11\x10}(c) nig software" .byt cr .byte "\x10} service n.s.s." .byt cr .byte "\x10}all rights reserved" .byt cr .byte "\x10}version 1.5" .byt 0 file .byte "lig." name .byte "------------" i .byte "i0" dirchr .byte "$0:lig.????????????" menchr .byte "fexrslbd" .byt 0 menadr .word form,edit,exit,run,save,load,befehl,dir edchr .byte "xil\x11\x91\x1d\x9d\x13\x93+-,.:;wzasc_\x94hn" .byt 20,0 edadr .word back,edinv,edclr,down,up,right,left .word hom,shom,vor,rueck,mi10,pl10,reset,set .word roauf,roab,roli,rore,last,next,insert,hochz .word setinf,delete strout sta tmp sty tmp+1 ldy #0 s0 lda (tmp),y beq s1 cmp #"\x10}" beq s3 jsr print s2 inc tmp bne s0 inc tmp+1 bne s0 s1 rts s3 lda #tab2 sta spalte jsr setcr ldy #0 beq s2 adrxa sei and #1 pha lda #0 stx tmp2 sta tmp2+1 ldx #3 a0 asl tmp2 rol tmp2+1 dex bne a0 lda tmp2+1 clc adc #>picmem sta tmp2+1 pla beq a1 lda tmp2+1 clc adc #8 sta tmp2+1 a1 cli rts outxa pha tay txa pha tya jsr adrxa jsr home jsr irqaus sei ldy #-1 o0 tya pha txa pha jsr return jsr return lda #tab1 sta spalte jsr setcr pla tax pla tay iny cpy #7 bcs o1 sty mem ldx #7 o2 dex bmi o0 stx mem2 lda (tmp2),y and grbit,x beq o3 lda far1 bne o9 o3 lda far0 o9 sta farb lda #symb jsr strout ldx mem2 ldy mem clc bcc o2 o1 lda #tab1+15 sta spalte lda #2 sta zeile jsr setcr lda #10 sta farb lda #"#" jsr print pla tax pla jsr axout ldx #2 o8 jsr blank dex bne o8 lda #15 sta zeile lda #tab2 sta spalte jsr setcr ldy #7 lda (tmp2),y tay lda info,y jsr print jmp setirq clrmen ldx #17 clmn jsr clrx inx cpx #24 bcc clmn ldx #17 zeilx stx zeile ldx #0 stx spalte jmp setcr get jsr getkey beq get rts clear lda #picmem sta tmp sty tmp+1 ldy #0 ldx #16 cl sta (tmp),y iny bne cl inc tmp+1 dex bne cl rts invert lda #picmem sta tmp sty tmp+1 ldy #0 ldx #16 in lda (tmp),y eor #-1 sta (tmp),y iny bne in inc tmp+1 dex bne in rts getmen lda #waehl jsr statout jmp get statout pha tya pha lda #1 sta rvs ldx #24 jsr clrx jsr zeilx lda #12 sta farb pla tay pla jmp strout screen jsr vicinit lda #0 sta col1 sta col2 lda #tit jsr strout ldx #63 lda #0 sc0 sta spri,x dex bpl sc0 lda #255 sta spri lda #128 sta spri+1 ldx #3 ldy #7 sc1 lda #128 sta spri,x lda #128 sta spri+1,x inx inx inx dey bne sc1 lda #255 sta spri+24 lda #128 sta spri+25 lda #1 sta vic+23 sta vic+29 lda #11 sta ptr setirq lda irqvec+1 cmp #>irq beq deja sta oldirq+2 lda irqvec sta oldirq+1 lda #irq irqset sei sta irqvec sty irqvec+1 deja lda #1 sta spsp cli rts irqaus lda oldirq+1 ldy oldirq+2 bne irqset irq bit spflag bmi an lda #0 sta vic+21 beq oldirq an lda #1 sta vic+21 ldx #4 lda edx iq0 asl dex bne iq0 clc adc #38 sta vic ldx #4 lda edy iq1 asl dex bne iq1 clc adc #64 sta vic+1 jsr blink oldirq jmp 0 blink dec spsp bne iq2 lda #5 sta spsp inc vic+39 iq2 rts sure lda #surtxt jsr statout su0 jsr get cmp #"n" beq no cmp #"j" beq ja cmp #"y" bne su0 ja sec rts no clc rts mual lda #matxt jsr statout mu0 jsr get cmp #"a" beq all cmp #"m" bne mu0 sec rts all clc rts showed ldx ed lda ed+1 jmp outxa adred ldx ed lda ed+1 jmp adrxa clred ldx #3 ce0 jsr adrx ldy #39 lda #" " ce1 sta (bild),y dey cpy #tab2 bcs ce1 inx cpx #15 bcc ce0 rts taste lda #ta jsr statout lda #0 sta tast jsr get clrstat ldx #24 jmp clrx error jsr sidinit lda #9 sta sid+5 lda #240 sta sid+6 lda #15 sta sid+24 sei ldx #0 ldy #0 inc col1 lda #17 sta sid+4 er0 dex bne er0 inc col2 sty sid+1 dey dey bne er0 dec col1 cli sidinit lda #0 ldx #24 si sta sid,x dex bpl si rts norm lda #7 sta far1 lda #9 sta far0 lda sytab sta tmp lda sytab+1 sta tmp+1 ldy #0 ldx #syart2-syart1 no0 lda (tmp),y sta symb,y iny dex bne no0 rts run jsr clrmen lda #runtxt jsr strout ru5 lda #0 sta runp sta runp+1 jmp ru8 ru0 lda runp+1 ldx runp jsr outxa jsr pause lda richt beq ru1 lda runp sec sbc #1 sta runp lda runp+1 sbc #0 sta runp+1 jmp ru2 ru1 inc runp bne ru2 inc runp+1 ru2 lda runp+1 and #1 sta runp+1 jsr control jsr getkey beq ru0 cmp #"x" bne ru3 rts ru3 cmp #"r" bne ru4 lda richt eor #-1 sta richt jmp ru0 ru4 cmp #"v" beq ru5 cmp #"+" bne ru6 jmp faster ru6 cmp #"-" bne ru0 jmp slower pause sei ldy #0 pa0 ldx speed inx pa1 dex bne pa1 dey bne pa0 cli rts ru8 lda #21 sta zeile lda #26 sta spalte jsr setcr lda #1 sta farb lda speed lsr lsr lsr sta temp lda #32 sec sbc temp tax lda #0 jsr axout jsr blank jmp ru0 faster ldx #8 fa0 jsr fa1 dex bne fa0 beq ru8 fa1 dec speed lda speed cmp #255 bne fa2 lda #0 sta speed fa2 rts slower ldx #8 sl0 jsr sl1 dex bne sl0 beq ru8 sl1 inc speed bne fa2 lda #255 sta speed rts control ldy #7 lda (tmp2),y beq co0 cmp #2 bcs co1 lda #0 sta runp sta runp+1 co0 rts co1 cmp #3 bcs co2 jmp pause co2 jsr pause jsr pause jmp pause form jsr clrmen lda #fotxt jsr strout fo0 jsr getmen cmp #"x" bne fo3 rts fo3 cmp #"i" bne fo4 inc far1 jmp fo5 fo4 cmp #"o" bne fo7 inc far0 jmp fo5 fo7 cmp #"n" bne fo6 jsr norm jmp fo5 fo6 cmp #"1" bcc fo0 cmp #"4" bcs fo0 sec sbc #"1" asl tax lda sytab,x sta tmp lda sytab+1,x sta tmp+1 ldy #0 ldx #syart2-syart1 fo2 lda (tmp),y sta symb,y iny dex bne fo2 fo5 jsr showed jmp fo0 init jsr clear jsr norm init2 jsr screen lda #128 sta rpt jsr shom jsr showed lda #64 sta ioflag ldx #0 stx richt ldx #96 stx speed menue jsr clred lda #copr jsr strout jsr clrmen lda #mentxt jsr strout ldx #0 stx spflag me1 jsr getmen ldx #0 sta temp me0 lda menchr,x beq me1 cmp temp beq me2 inx bne me0 me2 txa asl tax lda menadr,x sta gt+1 lda menadr+1,x sta gt+2 gt jsr 0 jmp menue rts edit jsr hom lda #-1 sta spflag jsr showed jsr clred jsr clrmen lda #edtxt jsr strout lda #edt2 jsr strout ed0 jsr getmen ldx #0 sta temp ed1 lda edchr,x beq ed0 cmp temp beq ed2 inx bne ed1 ed2 txa asl tax lda edadr,x sta go+1 lda edadr+1,x sta go+2 go jsr 0 jsr showed jmp ed0 back pla pla rts edinv jsr mual bcc invall jsr adred ldy #6 ed3 lda (tmp2),y eor #255 sta (tmp2),y dey bpl ed3 rts invall jmp invert edclr jsr sure bcc noclr jsr mual bcc clrall jsr adred ldy #7 lda #0 ed4 sta (tmp2),y dey bpl ed4 noclr rts clrall jmp clear down ldx edy cpx #6 bcs noset inc edy noset rts up ldx edy beq noset dec edy rts right ldx edx cpx #6 bcs noset inc edx rts left ldx edx beq noset dec edx rts hom lda #3 sta edx sta edy rts shom lda #0 sta ed sta ed+1 beq hom vor inc ed bne noinc inc ed+1 lda ed+1 and #1 sta ed+1 noinc rts rueck dec ed lda ed cmp #-1 bne noinc dec ed+1 lda ed+1 and #1 sta ed+1 rts pl10 ldx #10 ed5 jsr vor dex bne ed5 rts mi10 ldx #10 ed6 jsr rueck dex bne ed6 rts reset jsr adred ldy edy lda #6 sec sbc edx tax lda (tmp2),y and grbit2,x sta (tmp2),y rts set jsr adred ldy edy lda #6 sec sbc edx tax lda (tmp2),y ora grbit,x sta (tmp2),y rts roauf jsr adred ldy #0 lda (tmp2),y pha ro0 iny lda (tmp2),y dey sta (tmp2),y iny cpy #6 bcc ro0 pla sta (tmp2),y jmp up roab jsr adred ldy #6 lda (tmp2),y pha ro1 dey lda (tmp2),y iny sta (tmp2),y dey bne ro1 pla sta (tmp2),y jmp down roli jsr adred ldy #6 ro2 lda (tmp2),y asl pha and #128 sta temp beq ro3 lda #1 sta temp ro3 pla ora temp and #127 sta (tmp2),y dey bpl ro2 jmp left rore jsr adred ldy #6 ro4 lda (tmp2),y and #127 lsr bcc ro5 ora #64 ro5 sta (tmp2),y dey bpl ro4 jmp right next jsr vor last jsr rueck jsr adred ldy #6 la0 lda (tmp2),y sta latch,y dey bpl la0 jsr vor jsr adred ldy #6 la1 lda latch,y sta (tmp2),y dey bpl la1 rts insert jsr adred lda tmp2 sta tmp3 lda tmp2+1 sta tmp3+1 lda #vic-8 sta tmp2+1 is0 lda tmp2 tay sec sbc #8 sta tmp lda tmp2+1 pha sbc #0 sta tmp+1 pla cpy tmp3 bne is1 cmp tmp3+1 beq is2 is1 ldy #7 is3 lda (tmp),y sta (tmp2),y dey bpl is3 lda tmp sta tmp2 lda tmp+1 sta tmp2+1 bne is0 is2 lda #0 ldy #7 is4 sta (tmp2),y dey bpl is4 rts delete jsr adred de0 lda tmp2+1 cmp #>vic bcs de1 lda tmp2 clc adc #8 sta tmp lda tmp2+1 adc #0 sta tmp+1 ldy #7 de2 lda (tmp),y sta (tmp2),y dey bpl de2 lda tmp sta tmp2 lda tmp+1 sta tmp2+1 bne de0 de1 ldy #7 lda #0 de3 sta vic-8,y dey bpl de3 rts hochz jsr adred ldy #6 ho0 lda (tmp2),y and #127 bne ho1 dey bpl ho0 jmp error ho1 ldy #0 lda (tmp2),y and #127 bne ho2 jsr roauf jmp ho1 ho2 ldy #0 lda (tmp2),y and #64 bne ho3 jsr roli jmp ho2 ho3 rts setinf jsr adred ldy #7 lda (tmp2),y clc adc #1 cmp #4 bcc si0 lda #0 si0 sta (tmp2),y rts exit jsr error jsr sure bcc noexit pla pla jsr irqaus jmp vicinit noexit rts finame bcc sav lda #lodtxt bne out sav lda #savtxt out pha tya pha jsr clrmen pla tay pla jsr strout lda #fitxt jsr strout ldx #11 lda #" " fi0 sta name,x dex bpl fi0 inx fi1 jsr input cmp #cr beq fi2 sta name,x inx cpx #12 bcc fi1 fi2 stx flag lda #16 ldy #>file ldx #i jsr setnam lda #15 tay ldx #flop jsr setpar jmp open geterr ldx #15 jsr chkin jsr input cmp #"0" beq ge1 pha jsr error jsr return pla jsr print ge0 jsr input jsr print cmp #cr bne ge0 jsr clrchn jsr taste sec rts ge1 jsr clrchn clc rts clo15 lda #15 jmp close save jsr opnerr clc jsr finame jsr clrstat lda flag beq abort ldx #vic lda #picmem sta tmp2+1 lda #tmp2 sta sa jsr saver jmp geterr abort jmp clo15 load jsr opnerr sec jsr finame jsr clrstat lda flag beq abort ldx #picmem lda #0 sta sa jsr loadr jsr geterr jsr clo15 jmp showed befehl jsr clrmen lda #disk jsr strout ldx #0 cm0 jsr input cmp #cr beq cm1 sta latch,x inx bne cm0 cm1 lda #0 sta latch,x jsr opnerr ldx #15 jsr chkout lda #latch jsr strout jsr clrchn jsr geterr bcs cm2 lda #noerr jsr strout jsr taste cm2 jmp clo15 dir jsr screen lda #dirtxt jsr strout jsr opnerr ldx #dirchr lda #19 jsr setnam lda #6 jsr close ldx #flop ldy #0 lda #6 jsr setpar jsr open jsr geterr bcc di0 di1 jsr clrchn lda #6 jsr close jsr clo15 jsr screen jmp showed di0 ldx #6 jsr chkin jsr suchquot bcs di1 di2 jsr input cmp #34 beq di3 cmp #" " beq di2 jsr print bcc di2 di3 lda #0 sta rvs lda #":" jsr print jsr return di5 jsr return jsr blank jsr blank jsr such0 jsr skip4 jsr suchquot bcs di6 jsr skip4 di4 jsr input cmp #34 beq di5 jsr print bcc di4 jmp di5 di6 jsr clrchn jsr taste jmp di1 suchquot jsr input cmp #34 beq sq0 lda status beq suchquot sec rts sq0 clc rts such0 jsr input cmp #0 beq sq0 lda status beq such0 sec rts skip4 ldx #4 sk0 jsr input dex bne sk0 rts