;:sys36864 ;.opt oo ; sys 49152,text$,farbe,modus,zeilenlaenge,speed ; modus funkt ; 1 mit verzoeg ; 2 wordwarp ; 4 blocksatz ; 8 mit sound ; 16 zentriert ; 32 rueckwaerts ; 64 return am ende ; sys 49155, ... (wie oben) puffer leeren ; falls farbe = 255, keine fa. aenderung ; falls speed = 0, keine verzoeg *= $c000 hunt jmp textout jmp wartleer lda #0 sta flag rts getx =$b7f1 print =$ffd2 frmevl =$ad9e frestr =$b6a3 stradr =$22 komma =$aefd farb =646 err =$a445 sid =$d400 tmp =2 stop =$a82c latch =$cf00 spalte =211 setcr =58732 axout =$bdcd latch2 =$ce00 return =$aad7 buffer =$cd00 bdata =$a8f8 ptr =122 mod .byt 0 speed .byt 0 reallg .byt 0 lenght .byt 0 temp .byt 0 maxlen .byt 0 mark .byt 0 last .byt 0 flag .byt 0 merk1 .byt 0 merk2 .byt 0 errtab .word e0,e1,e2,e3,e4 e0 .byte "colourcodE" e1 .byte "modE" e2 .byte "screenlenghT" e3 .byte "center positioN" e4 .byte "buffer overfloW" pause lda mod and #1 beq nopaus ldx speed beq nopaus ldy #255 px dey nop bne px dex bne px nopaus rts setptr lda stradr sta tmp lda stradr+1 sta tmp+1 rts real ldy #0 sty reallg l1 cpy lenght bcs nopaus lda (tmp),y cmp #32 bcc nein cmp #128 bcc ja cmp #149 bcc nein cmp #156 bcc ja cmp #160 bcs ja nein cmp #157 beq rueck cmp #20 beq rueck iny bne l1 ja inc reallg bne nein rueck dec reallg iny bne l1 sound lda mod and #8 beq nopaus jsr sidmake ldx #0 ldy #10 waso dex bne waso dey bne waso lda #0 sta sid+24 rts sidmake lda #0 ldx #24 sim sta sid,x dex bpl sim lda #200 sta sid+1 lda #9 sta sid+5 lda #240 sta sid+6 lda #6 sta sid+3 lda #65 sta sid+4 lda #30 sta sid+24 rts errx txa asl tax lda errtab,x sta stradr lda errtab+1,x jmp err illfa ldx #0 beq errx textout jsr komma jsr frmevl jsr frestr sta lenght jsr setptr jsr nochwas nodat jsr real jsr getx inx beq nofb dex cpx #16 bcs illfa stx farb nofb jsr getx cpx #128 bcc modok ldx #1 bne er modok stx mod jsr getx stx maxlen lda mod and #22 beq nosp lda maxlen cmp #41 bcc nosp ldx #2 er jmp errx nosp jsr getx stx speed lda lenght beq fin jsr setlat jsr rueckvor ldy #0 out sty temp lda (tmp),y jsr print jsr stop jsr sound jsr pause ldy temp iny cpy lenght bcc out lda mod and #64 beq fin jsr return fin rts setlat lda mod and #22 bne achtung rts achtung jsr tolatch lda mod and #16 beq nocenter ce lda maxlen sec sbc reallg lsr clc adc spalte cmp #80 bcs i sta spalte jmp setcr i ldx #3 jmp errx nocenter lda mod and #2 beq blocks ldy maxlen cpy lenght bcs blocks suchspac lda (tmp),y cmp #" " beq leerz cpy #0 beq blocks dey jmp suchspac leerz tya pha ldx #0 iny tobuf lda (tmp),y sta buffer,x inx beq buv iny cpy lenght bcc tobuf stx flag pla tay sty lenght jsr real jmp blocks buv ldx #4 jmp errx blocks lda mod and #4 beq noblock jsr kuerz lda lenght lsr sta last blo lda lenght cmp maxlen bcs noblock jsr suchleer bcc cen jsr insy jmp blo cen jmp ce noblock rts rueckvor lda mod and #32 beq nospi lda lenght beq nospi jsr tolatch ldy #0 ldx lenght dex spi lda (tmp),y sta latch2,x cpx #0 beq spiend dex iny bne spi spiend ldy lenght rue dey lda latch2,y sta (tmp),y cpy #0 bne rue nospi rts tolatch ldy #0 tl lda (tmp),y sta latch,y dey bne tl lda #latch sta tmp sty tmp+1 rts insy sty mark ldx #255 insert lda latch-1,x sta latch,x dex cpx mark bne insert lda #" " sta latch,x inc lenght beq over inc reallg rts over jmp buv kuerz ldy lenght krz cpy #0 beq kuend dey lda (tmp),y cmp #" " bne kuend dec lenght jmp krz kuend lda lenght cmp #0 bne kok pla pla pla pla rts kok rts suchleer ldy last sule iny cpy lenght bcc nonu ldy #0 inc last nonu cpy last bne nochok clc rts nochok lda (tmp),y cmp #" " bne sule iny sty last dey sec rt rts nochwas lda flag beq rt pha jsr tolatch pla clc adc #1 ph pha ldy #0 jsr insy pla sec sbc #1 bne ph en ldy #0 bufto lda buffer,y sta (tmp),y iny cpy flag bcc bufto ldy #0 sty flag rts wartleer lda ptr sta merk1 lda ptr+1 sta merk2 leeren lda flag beq leer lda merk1 sta ptr lda merk2 sta ptr+1 jsr hunt jmp leeren leer jmp bdata .end end