;:poke56,56:clr:printfre(9)"free ;:sys49161:sys36864:.opt oo *= $c000 jmp init jmp scfetch jmp scsave jmp irqoff jmp goto jmp setspeed jmp turn jmp edit jmp scspeich jmp sclade jmp mainstart jmp stellen charmem =$3800 getx =$b7f1 konf =1 tmp =166 vic =$d000 tmp2 =tmp+2 tmp3 =tmp2+2 screens =$4000 sperre =$291 illquan =$b248 vid =$288 farbram =$d800 col =$286 sprmem =$2c0 pointer =$7f8 irqvec =$314 oirq =$ea31 offx =24 offy =50 calcx =$e9f0 bild =$d1 b =$d020 entgl =247 joystick =$dc00 shift =$28d key =$cb komma =$aefd getpar =$e1d4 sa =$b9 save =$ffd8 load =$ffd5 screens2 =$5000 vicinit =$ff81 calcfarb =$ea24 farb =$f3 maxy =19 nmbkey =198 sid =$d400 satz =* .byt 112,0,0,$f,$12,$2a,$27,$3c,$24 .byt 109,$24,$3c,$27,$2a,$12,$f,0,$0 .byt 125,$24,$3c,$e4,$54,$48,$f0,0,0 .byt 110,0,0,$f0,$48,$54,$e4,$3c,$24 .byt 66,$24,$3c,$24,$3c,$24,$3c,$24,$3c .byt 67,0,0,-1,$55,$55,-1,0,0 .byt 91,$24,$24,-1,$25,$25,-1,$24,$3c .byt 113,0,$18,$18,$3c,$3c,$7e,$7e,0 .byt 114,0,$7e,$7e,$3c,$3c,$18,$18,0 .byt 107,0,0,-1,$45,$45,$e7,$24,$3c .byt 0 kugel .byt $3c,$7e,-1,-1,-1,-1,$7e,$3c x .byt 0 y .byt 0 spx .word 0 spy .byt 0 gleise .byt 66,67,112,109,125,110,91,107,0 command .word updwn,lftrgt,krv1,krv2,krv3,krv4,immerok,weiche zuweis .byt 2,1,1,3,0,2,0 richt .byt 0 bereit .byt 0 speed .byt 1 temp .byt 0 flag .byt 0 dir .byt 0 darf .byt 0 ldir .byt 0 ox .byt 0 oy .byt 0 rfg .byt 0 temp2 .byt 0 colch .byt 0 rotz .byt 0,11,205 sneuf .byt 0 snief .byt 0 dauer .byt 3,2,4 weg .byt 0 lkey .byt 0 charset lda #51 sei sta konf ldy #vic sta tmp+1 sty tmp2 lda #>charmem sta tmp2+1 ldx #7 copichar lda (tmp),y sta (tmp2),y iny bne copichar inc tmp+1 inc tmp2+1 dex bpl copichar lda #55 sta konf cli lda #31 sta vic+24 lda #satz sta tmp sty tmp+1 holchar ldy #0 lda (tmp),y beq cfinish sta tmp2 lda #0 sta tmp2+1 ldx #3 mal8lp asl tmp2 rol tmp2+1 dex bne mal8lp lda tmp2+1 clc adc #>charmem sta tmp2+1 clc adc #4 sta tmp3+1 lda tmp2 sta tmp3 holdata iny cpy #9 bcs finish1 lda (tmp),y dey sta (tmp2),y eor #-1 sta (tmp3),y iny bne holdata finish1 lda #9 clc adc tmp sta tmp lda #0 adc tmp+1 sta tmp+1 bne holchar cfinish lda #$80 sta sperre rts clrscrs ldx #15 ldy #0 sty tmp lda #>screens sta tmp+1 lda #32 clrscrslp sta (tmp),y iny bne clrscrslp inc tmp+1 dex bpl clrscrslp rts getsc jsr getx cpx #4 bcc scnrok jmp illquan scnrok txa asl asl clc adc #>screens sta tmp+1 ldy #0 sty tmp sty tmp2 lda vid sta tmp2+1 ldx #3 rts scsave jsr getsc sclp2 lda (tmp2),y sta (tmp),y iny bne sclp2 inc tmp2+1 inc tmp+1 dex bpl sclp2 rts scfetch jsr getsc sclp1 lda (tmp),y sta (tmp2),y iny bne sclp1 inc tmp2+1 inc tmp+1 dex bpl sclp1 farb2 lda #>farbram sta tmp+1 ldx #2 lda col fillcol sta (tmp),y iny bne fillcol inc tmp+1 dex bpl fillcol ldy #31 fillcnt sta (tmp),y dey bpl fillcnt rts fillfarb ldy #0 sty tmp beq farb2 setsprite lda #0 ldx #63 clrsprite sta sprmem,x dex bpl clrsprite ldx #7 ldy #7*3 setkugel lda kugel,x sta sprmem,y dey dey dey dex bpl setkugel lda #11 sta pointer rts setirq sei sta irqvec sty irqvec+1 cli rts irqon lda #irq bne setirq irqon2 lda #edirq bne setirq irqoff sei lda #0 sta sid+24 lda #oirq bne setirq home lda #0 sta x sta y sta richt lda #offx sta spx lda #0 sta spx+1 lda #offy sta spy rts calc lda x asl asl asl php clc adc #offx sta spx lda #0 adc #0 plp adc #0 sta spx+1 lda y asl asl asl clc adc #offy sta spy rts irq lda speed sta temp zugloop jsr movesprit lda bereit bne schon dec temp bne zugloop beq back schon lda entgl bne back jsr exec lda entgl bne back jsr fahr jsr rausch back jmp oirq movesprit lda #-1 sta bereit lda vic+1 cmp spy beq yok lda #0 sta bereit bcc kly dec vic+1 clc bcc yok kly inc vic+1 yok lda vic+16 and #1 cmp spx+1 bcc erhoe bne ernied lda vic cmp spx bcc erhoe beq xok ernied lda #0 sta bereit dec vic ldx vic inx bne xok lda vic+16 and #$fe sta vic+16 jmp xok erhoe lda #0 sta bereit inc vic bne xok lda vic+16 ora #1 sta vic+16 xok rts exec jsr getchar ldx #0 sty temp suchakt lda gleise,x beq entgleis cmp temp beq found inx bne suchakt entgleis lda #-1 sta entgl lda #0 sta sid+24 rts found txa asl tax lda command,x sta jump+1 lda command+1,x sta jump+2 jump jsr 0 rts getchar lda bild pha lda bild+1 pha ldx y jsr calcx ldy x jsr effect ef2 lda (bild),y tay pla sta bild+1 pla sta bild rts getchar2 lda bild pha lda bild+1 pha ldx y jsr calcx ldy x jmp ef2 setspeed jsr getx stx speed rts goto jsr getx stx x jsr getx stx y jsr calc jmp gleisauf turn lda richt eor #1 sta richt rts fahrpl ldx richt beq richt0 dex beq richt1 dex beq richt2 inc y rts richt2 dec y rts richt1 dec x rts richt0 inc x rts fahr jsr fahrpl jmp calc effect lda colch beq nixeff lda farb pha lda farb+1 pha jsr calcfarb lda colch cmp #2 bcs eff2 lda (farb),y clc adc #1 sta (farb),y endeff pla sta farb+1 pla sta farb nixeff rts eff2 lda (farb),y and #$f beq wei lda #0 .byt $2c wei lda #1 sta (farb),y jmp endeff gleisauf jsr getchar ldx #0 sty temp suchakt2 lda gleise,x beq fehl cmp temp beq found2 inx bne suchakt2 fehl jmp entgleis found2 lda zuweis,x sta richt lda #0 sta entgl rts setsp jsr calc ldx #0 ldy #20 pause dex bne pause dey bne pause waitfert lda bereit beq waitfert rts krv1 lda #2 .byt $2c krv2 lda #3 ldx #1 bne kurve krv3 lda #3 .byt $2c krv4 lda #2 ldx #0 kurve sta tmp stx tmp+1 lda richt cmp tmp beq ja1 cmp tmp+1 beq ja2 wr jmp entgleis ja1 lda tmp+1 .byt $2c ja2 lda tmp eor #1 sta richt immerok rts weiche ldx richt bne weichn0 lda weg beq immerok bne krv4 weichn0 dex bne weichn1 rts weichn1 dex beq krv4 jmp entgleis updwn lda richt and #2 beq wr rts lftrgt lda richt and #2 bne wr inc y jsr getchar2 dec y tya sec sbc #113 sta weg rts init jsr vicinit jsr home jsr charset jsr clrscrs jsr setsprite lda #1 sta speed lda #0 sta vic+32 sta vic+33 jmp irqoff mainstart jsr getx stx colch lda #1 sta vic+21 sta vic+39 sta sneuf lda #0 sta richt sta entgl sta vic+27 jsr irqon jmp schnaufi edit jsr irqon2 lda #0 sta flag sta dir sta ldir sta darf sta rfg lda #12 sta y sta oy lda #20 sta x sta ox lda #1 sta vic+27 sta vic+21 lda #2 sta speed jsr setsp jsr fillfarb dec speed edloop lda darf bne darfnot lda joystick and #16 bne noturn lda flag eor #-1 sta flag lda #7 sta darf jmp noturn darfnot dec darf noturn lda flag beq tonix lda shift beq setz lda #32 jsr set0 tonix jmp nixakt setz ldx dir beq dir0 dex beq dir1 dex beq dir2 bne dir3 dir0 lda ldir beq stra1 cmp #1 beq dummy cmp #2 bne no02 lda #112 bne out no02 lda #109 bne out dir1 lda ldir beq dummy cmp #1 beq stra1 cmp #2 bne no12 lda #110 bne out no12 lda #125 bne out dir2 lda ldir bne no20 lda #125 bne out no20 cmp #2 beq stra2 cmp #3 beq dummy lda #109 bne out dir3 lda ldir bne no30 lda #110 bne out no30 cmp #2 beq dummy cmp #3 beq stra2 lda #112 out jsr set1 lda #1 sta rfg lda dir sta ldir jsr setz jmp dummy stra1 lda #67 .byt $2c stra2 lda #66 jsr set0 lda rfg beq dummy lda #0 sta rfg rts dummy nop nixakt lda key cmp #63 bne wow2 lda joystick and #31 cmp #31 bne wow2 lda #0 sta nmbkey rts wow2 jsr tasten lda x sta ox lda y sta oy lda dir sta ldir lda y beq noup lda joystick and #1 bne noup dec y lda #2 sta dir noup lda y cmp #maxy bcs nodown lda joystick and #2 bne nodown inc y lda #3 sta dir nodown lda x beq noleft lda joystick and #4 bne noleft dec x lda #1 sta dir noleft lda x cmp #38 bcs noright lda joystick and #8 bne noright inc x lda #0 sta dir noright jsr setsp jmp edloop set0 sta temp2 ldx y jsr calcx ldy x lda temp2 cmp #67 beq tes cmp #66 bne setnr tes lda (bild),y cmp temp2 beq setnr cmp #66 beq setkr cmp #67 beq setkr cmp #91 bne setand setkr lda #91 sta temp2 setnr lda temp2 sta (bild),y rts setand cmp #32 beq setnr cmp #96 beq setnr rts set1 pha ldx oy jsr calcx ldy ox pla sta (bild),y rts edirq lda speed sta temp zugloop2 jsr movesprit lda bereit bne schon2 dec temp bne zugloop2 schon2 lda flag beq brwn lda #12 .byt $2c brwn lda #9 sta vic+39 jmp oirq sclade jsr irqoff jsr komma jsr getpar lda #0 sta sa ldx #screens jmp load scspeich jsr irqoff jsr komma jsr getpar ldx #screens2 lda #>screens stx tmp sta tmp+1 lda #tmp sta sa jmp save rausch lda #15 sta sid+24 dec sneuf bne nosneuf inc snief ldx snief cpx #3 bcc hatschi ldx #0 stx snief hatschi lda rotz,x sta sid+1 lda dauer,x sta sneuf nosneuf rts schnaufi lda #0 ldx #24 clrsnau sta sid,x dex bpl clrsnau lda #128 sta sid+6 lda #132 sta sid+5 lda #129 sta sid+4 rts tasten cmp #56 bne not1 lda #1 xs sta speed rts not1 cmp #59 bne not2 lda #2 bne xs not2 cmp #9 bne notw ldx y cpx #maxy bcs notw jsr calcx ldy x lda #67 sta (bild),y iny lda #107 sta (bild),y tya clc adc #39 tay lda #113 sta (bild),y notw rts stellen lda vid sta tmp+1 ldy #0 sty tmp ldx #4 stx lkey stel1 lda (tmp),y cmp #114 beq stel2 cmp #113 beq stel2 inc tmp bne stel1 inc tmp+1 dex bne stel1 rts stel2 lda #1 jsr tmpfarb stel3 lda key cmp lkey beq stel3 sta lkey cmp #63 bne stel4 lda farbram bne tmpfarb stel4 cmp #60 bne stel5 lda farbram jsr tmpfarb stel6 inc tmp bne stel7 inc tmp+1 dex bne stel7 lda vid sta tmp+1 ldx #4 stel7 lda (tmp),y cmp #113 beq stel9 cmp #114 bne stel6 stel9 lda #1 jsr tmpfarb bne stel3 stel5 cmp #40 bne stel8 lda #113 sta (tmp),y bne stel3 stel8 cmp #43 bne stel3 lda #114 sta (tmp),y bne stel3 tmpfarb pha lda tmp sta farb lda tmp+1 and #3 ora #>farbram sta farb+1 pla sta (farb),y rts