;:remprint"{clr}vorsicht ! quelltext direkt auf floppy !":stop ;:poke56,128:clr ;:rem open2,8,2,"code,p,w ;:sys36864 ;.opt oo *= $8000 ; 2141 ;***** vic =$d000 bsout =$ffd2 tmp =2 puffer =$c100 ;***** cr =$d clall =$ffe7 cint =$ff81 setcr =58732 spalte =211 satcr =$e56a crscol =646 crs1 =204 crs2 =205 crs3 =207 get =65508 key =198 txtptr =$7a chrgot =121 round =$bc1b ascflt =$bcf3 integer =$b7f7 return =$aad7 axout =$bdcd zeile =214 space =$ab3f open =$ffc0 close =open+3 setpar =$ffba setnam =$ffbd clrchn =$ffcc chkout =$ffc9 chkin =$ffc6 fa =$ba sa =$b9 talk =$ffb4 sectalk =$ff96 iecin =$ffa5 untalk =$ffab textanf =$c200 ;***** textend =$d000 status =144 word = $c000 ;***** textocr =$5f konf =1 tmp2 =tmp+2 deal =$d020 ; deadlock bei fehler reset =$fffc bm =1023 workpos =56231 clrx =59903 quote =212 textost =$a3 home =$e566 textotr =$a2 keybuf =631 jsr efirst jmp packmas tit .byte "\x93\x17\x9bU\x08\x19\x16\xc0I\x1a\x17\xdd \x05mehrspaltenkonverter \x97\xdd" .byte "\x9b\x1a\x17\xdd\x05 fuer textomat plus \x97\xdd\x1a\x17\x9b\xdd \x05(c) nss 3/87" .byte "\x19\x04 v1.2 \x97\xdd\x1a\x17J\x19\x16\xc0K\x1a\x03" mask1 .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90textname alt:\x19\x0f t \x97\xdd\x1a\x16J\x19\x1f\xc0K" .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90textname neu:\x19\x0f t \x97\xdd\x1a\x16J\x19\x1f\xc0K" .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90anzahl der spalten:\x19\x0b \x97\xdd\x1a\x16J\x19\x1f\xc0K" .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90breite einer spalte:\x19\x0a \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x16\x9b" .byte "U\x19\x1f\xc0I\x1a\x16\xdd \x90zeichen pro zeile (schirm): \x97\xdd\x1a\x16J\x19\x1f\xc0K" .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd\xa0" err3 .byte "\x90erechn. abstand d. spalten: \x97\xdd\xa0" .byte "\x1a\x16\x9b\xdd\x90 ok ? [j/n]\x19\x14 \x97\xdd\x1a\x16J\x19\x1f\xc0K\x03" bsp .byte "\x9d \x9d\x03" err1 .byte "\x13\x19\x16\x11\x16\x1d \x05eingabefehler !! (return) \x1a" .byte "\x16\x1d\x19\x0b \x03" err2 .byte "\x13\x19\x16\x11\x16\x1d \x03" source .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90quelldiskette einlegen !" .byte "\x19\x06 \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x03" errmask .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90diskettenfehler !!" .byte "\x19\x0c \x97\xdd\x1a\x9b\x16\xdd\x19\x1f \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x91\x91\x16\x1d \x05\x03" fullt .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x05textspeicher voll !" .byte "\x19\x0b \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x03" numbt .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90anz. zeilen pro spal" .byte "te:\x19\x07 \x97\xdd\x1a\x16\x9b\xdd \x90ok ? [j/n]\x19\x14 \x97\xdd" .byte "\x1a\x16J\x19\x1f\xc0K\x05\x1a\x91\x91\x91\x16\x19\x1a\x1d\x03" desti .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90zieldiskette einlegen !" .byte "\x19\x07 \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x03" opend .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90operation erfolgreich" .byte "\x19\x09 \x97\xdd\x1a\x16\x9b\xdd \x90beendet. noch ein text ?\x19\x06 \x97\xdd" .byte "\x1a\x16J\x19\x1f\xc0K\x1a\x05\x91\x91\x03" workt .byte "\x13\x19\x16\x11\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd\x19\x0c \x90working\x19\x0c \x97\xdd\x1a\x16J\x19\x1f\xc0K\x13\x19\x09\x11\x03" trennt .byte "\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90trennvorschlag ?\x19\x0e \x97\xdd" .byte "\x1a\x16\x9b\xdd\x19\x1f \x97\xdd\x1a\x16\x9b\xdd\x19\x1f \x97\xdd\x1a\x16\x9b\xdd\x19\x1f \x97\xdd\x1a\x16\x9b\xdd \x90crsr tasten" .byte ", return = ende\x19\x04 \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x19\x05\x91\x16\x05\x1d\x1d\x03" trenncr .byte " \x12\xa9\xdf\x92 \x11\x19\x04\x9d \xbc\xbe \x03" warwas .byte "\x13\x19\x0f\x11\x16\x9bU\x19\x1f\xc0I\x1a\x16B \x90vorsicht: ich habe\x19\x0c \x97\xdd" .byte "\x1a\x16\x9b\xdd \x90steuerzeichen gefunden !\x19\x06 \x97\xdd\x1a" .byte "\x16J\x19\x1f\xc0K\x05\x03" disk .byte "\x1a\x1a\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd \x90textomat \xdb disk einlegen !" .byte "\x19\x04 \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x03" service .byte "\x1a\x1a\x1a\x16\x9bU\x19\x1f\xc0I\x1a\x16\xdd\x90 textomat plus nach" .byte "laden ?\x19\x05 \x97\xdd\x1a\x16J\x19\x1f\xc0K\x1a\x91\x91\x05\x03" ladt .byte "\x93\x90textomat plus wird nachgeladen !\x1a" .byte "\x98loA" .byt 34 .byte ":*" .byt 34 .byte ",8,1\x19\x05\x11rU\x03" firt .byte "\x93\x19\x05\x11\x17\x9bU\x08\x19\x1b\xc0I\x1a\x17\xdd\x90 mehrspaltenkonverter fuer" .byte " \x97\xdd\x1a\x17\x9b\xdd\x90\x19\x03 'textomat plus', v1.2\x19\x03 \x97\xdd" .byte "\x1a\x17\x9b\xdd\x19\x1b \x97\xdd\x1a\x17\x9b\xdd \x90 von nikolaus heusler \x97\xdd" .byte "\x1a\x17\x9b\xdd\x90 (c) nss maerz/april 1987 \x97\xdd\x1a\x17J\x19\x1b\xc0K\x03" pufft .byt 19,141,13,13 oldname .byte " T,p,r" newname .byte " T,p,w" numflg brk maxln brk pos brk anzspa brk breit brk cpz brk zw1 brk zw2 brk abst brk anzzl .word 0 wordlen brk posit brk momlen brk daspace brk vonda brk worth brk endflg brk anzline .word 0 puffpos brk nums brk reest brk t1 .word 0 t2 .word 0 an .word 0 flag brk stz .word 0 ymerk brk tpos brk wordlin brk adrs .word 0,0,0,0,0,0,0,0,0 titout lda #tit strout tax lda tmp pha lda tmp+1 pha stx tmp sty tmp+1 sout ldy #0 lda (tmp),y beq fin cmp #"\x03" beq fin cmp #"\x1a" bne nocr lda #cr nocr cmp #"\x19" beq repeat cmp #"\x17" beq tab cmp #"\x16" beq spa jsr bsout next inc tmp bne sout inc tmp+1 bne sout fin pla sta tmp+1 pla sta tmp rts repeat iny lda (tmp),y tax iny lda (tmp),y rep jsr bsout dex bne rep lda #3 clc adc tmp sta tmp bcc sout inc tmp+1 bne sout spa lda #2 .byt $2c tab lda #6 sta spalte jsr setcr jmp next inform sta maxln stx numflg pha jsr satcr ldx #1 stx crscol dex stx key pla tax lda spalte pha clrplz jsr space dex bne clrplz pla sta spalte jsr setcr ldx #0 inloop stx pos inloop2 lda #0 sta crs1 sta quote ilp jsr get beq ilp ldx #2 stx crs2 ipp ldx crs3 bne ipp inc crs1 ldx pos cmp #cr beq cer cmp #20 bne nodel txa beq inloop dex stx pos lda #bsp jsr strout jmp inloop2 nodel cmp #32 bcc inloop2 tay bpl okay cmp #149 bcc inloop2 cmp #156 bcc okay cmp #160 bcc inloop2 okay ldy numflg beq okay2 cmp #"0" bcc inloop2 cmp #"9"+1 bcs inloop2 okay2 cpx maxln bcs inloop2 sta puffer,x inx jsr bsout bcc inloop cer lda #0 sta puffer,x lda numflg bne ahanoch rts ahanoch lda txtptr pha lda txtptr+1 pha lda #puffer sta txtptr sty txtptr+1 jsr chrgot jsr ascflt jsr round jsr integer tax pla sta txtptr+1 pla sta txtptr rts askzpar lda #24 sta spalte ldy #13 ldx #1 lda #1 jsr inform cpy #2 bcc askzpar sty anzspa dey sty zw2 askbrei lda #25 sta spalte ldy #16 ldx #1 lda #2 jsr inform cpy #8 bcc askbrei sty breit askcpz lda #31 sta spalte ldy #19 ldx #1 lda #3 jsr inform cpx #1 bcs askcpz cpy #30 bcc askcpz cpy #241 bcs askcpz sty cpz stx zw1 ldx anzspa mallp lda zw1 clc adc breit sta zw1 bcs fehl dex bne mallp lda cpz sec sbc #1 sbc zw1 bcc fehl ldx #-1 div inx sec sbc zw2 bcs div txa beq fehl sta abst pha ldy #31 sty spalte ldy #22 jsr satcr pla tax lda #0 jsr axout fill ldx spalte cpx #34 bcs flend jsr space bcc fill flend rts fehl lda #err1 jsr strout jsr getkey jmp errc getkey lda #0 sta key wk lda key beq wk dec key rts errc lda #err2 jsr strout lda #err3 jsr strout jmp askzpar asknames lda #17 sta spalte ldy #7 lda #15 ldx #0 jsr inform ldx #0 setnam1 lda puffer,x beq endn1 sta oldname,x inx bne setnam1 endn1 lda #32 filln1 cpx #15 bcs full1 sta oldname,x inx bne filln1 full1 lda #17 sta spalte ldy #10 lda #15 ldx #0 jsr inform ldx #0 setnam2 lda puffer,x beq endn2 sta newname,x inx bne setnam2 endn2 lda #32 filln2 cpx #15 bcs full2 sta newname,x inx bne filln2 full2 rts diskerr lda #8 sta fa jsr talk lda #$6f sta sa jsr sectalk ldx #0 errin jsr iecin cmp #cr beq erred sta puffer,x inx bne errin erred lda #0 sta puffer,x jsr untalk lda puffer cmp #"0" bne falsch rts falsch pla pla lda #errmask jsr strout lda #puffer jsr strout jsr escape jsr return jmp return getny lda endflg beq doit pla pla jmp escape doit jsr iecin sta worth lda status beq nullsta inc endflg nullsta lda worth rts ram lda #54 .byt $2c rom lda #55 sta konf rts put sta !0 inc put+1 bne rtt inc put+2 rtt lda put+2 cmp #>textend bcc passt pla pla pla pla pla pla lda #fullt jsr strout escape ldx #22 clr2224 jsr clrx inx cpx #25 bcc clr2224 jsr clrchn lda #2 jmp close passt rts readtext lda #0 sta anzzl sta anzzl+1 sta endflg sta stz sta stz+1 ldx #2 jsr chkin lda #textanf sta put+1 sty put+2 readline ldx #0 readaword ldy #0 readword jsr getny cmp #textocr beq qlineend cmp #32 beq wordend cmp #textost bne normword jsr steuer bne readword qlineend jmp lineend normword cmp #textotr beq readword sta word,y iny bne readword wordend tya beq readword sty wordlen txa clc adc wordlen cmp breit beq setmot bcs passnedmer setmot ldy #0 transmot lda word,y sta puffer,x inx iny dec wordlen bne transmot lda #" " sta puffer,x inx bne readaword passnedmer lda #0 sta puffer-1,x jsr puffr lda breit cmp wordlen bcs bigenough jsr trennv tratew lda word,x sta puffer,x dex bpl tratew ldx tpos dec wordlen lda #"-" sta puffer+1,x lda #0 sta puffer+2,x jsr puffrein ldy #0 ldx tpos restword lda word+1,x sta word,y iny inx cpx wordlen bcc restword ldx #0 beq wordend bigenough ldx #0 beq setmot lineend sty wordlen txa clc adc wordlen cmp breit beq dasnch bcs passnidmer dasnch ldy #0 transmt2 lda word,y sta puffer,x inx iny dec wordlen bne transmt2 jsr bundpuf jmp readline passnidmer lda #0 sta puffer-1,x jsr puffr lda breit cmp wordlen bcs bigen jsr trennv tratwe lda word,x sta puffer,x dex bpl tratwe ldx tpos dec wordlen lda #"-" sta puffer+1,x lda #0 sta puffer+2,x jsr puffrein ldy #0 ldx tpos restw lda word+1,x sta word,y iny inx cpx wordlen bcc restw ldx #0 beq lineend bigen ldx #0 beq dasnch bundpuf lda #160 bundit cpx breit bcs bound sta puffer,x inx bne bundit bound lda #0 sta puffer,x jmp puffrein puffr txa bne puffrein rts puffrein jsr testlen txa lsr sta posit puffrei2 jsr testlen cpx breit beq formed stx momlen ldx posit suchs lda puffer,x cmp #" " beq foundsp inx cpx momlen bcc suchsp2 ldx #0 suchsp2 cpx posit bne suchs lda breit sec sbc momlen lsr clc adc momlen tax dex ldy momlen dey stx vonda center lda puffer,y sta puffer,x dex dey bpl center lda #160 fillli sta puffer,x dex bpl fillli ldx vonda fillre inx cpx breit bcs fauchd sta puffer,x jmp fillre fauchd lda #0 sta puffer,x beq formed foundsp stx daspace ldx momlen rueckhi lda puffer,x sta puffer+1,x dex cpx daspace bcs rueckhi inx inx inx stx posit bne puffrei2 formed jsr blink ldx #0 frmd lda puffer,x beq erled jsr put inx bne frmd erled inc anzzl bne noinc inc anzzl+1 noinc rts testlen ldx #0 tlen lda puffer,x beq found0 inx bne tlen found0 rts blink sty ymerk ldy #6 blk lda workpos,y eor #12 sta workpos,y dey bpl blk ldy ymerk rts writetext ldx anzline ldy anzline+1 lda #0 sta tmp sta tmp+1 sta flag cpx #0 bne nox0 dey nox0 dex multy lda tmp clc adc breit sta tmp bcc multy2 inc tmp+1 multy2 dex cpx #-1 bne multy dey cpy #-1 bne multy inx ldy #8 lda #>textanf stx tmp2 sta tmp2+1 putty lda tmp2 sta adrs,x inx lda tmp2+1 sta adrs,x inx lda tmp2 clc adc tmp sta tmp2 lda tmp2+1 adc tmp+1 sta tmp2+1 dey bne putty ldx #2 jsr chkout lineput jsr ram ldy #0 sty puffpos sty nums spaput lda nums asl tax lda adrs,x sta tmp lda adrs+1,x sta tmp+1 ldx puffpos trans1 lda (tmp),y sta puffer,x inx iny cpy breit bcc trans1 stx puffpos jsr weiters ldx nums inx cpx anzspa bcs puffvoll stx nums ldy abst ldx puffpos lda #32 trennspa sta puffer,x inx dey bne trennspa stx puffpos beq spaput puffvoll lda #textocr ldx puffpos sta puffer,x lda #0 sta puffer+1,x lda flag beq pass1 txa sec sbc breit sbc abst tax lda #textocr sta puffer,x lda #0 sta puffer+1,x pass1 jsr rom jsr rausda lda an cmp #2 bcs qqlineput lda an+1 beq qqrom qqlineput dec an lda an cmp #-1 bne qlineput dec an+1 qlineput jmp lineput qqrom lda flag bne rausen dec flag lda reest beq rausen sta an lda #0 sta an+1 beq qlineput rausda jsr blink ldx #0 rada lda puffer,x beq rausen cmp #32 bne no32 lda #160 no32 jsr bsout inx bne rada rausen rts weiters lda nums asl tax lda adrs,x clc adc breit sta adrs,x lda adrs+1,x adc #0 sta adrs+1,x rts trennv ldx breit dex cpx #29 bcc trennx ldx #28 trennx stx tpos lda wordlen cmp #30 bcc trenny lda #30 trenny sta wordlin jsr clrchn lda #trennt jsr strout ldy #0 wordout lda word,y jsr bsout iny cpy wordlin bcc wordout jsr return lda #0 sta key tlp lda tpos clc adc #2 sta spalte ldy #13 jsr satcr lda #trenncr jsr strout getlr jsr get cmp #cr beq cerr cmp #"\x11" beq left cmp #"\x9d" beq left cmp #"\x1d" bne getlr ldx tpos inx cpx breit bcs getlr cpx #29 bcs getlr inc tpos bne tlp left ldx tpos dex beq getlr dec tpos bne tlp cerr ldx #10 clr1020 jsr clrx inx cpx #17 bcc clr1020 jsr return ldy #9 jsr satcr ldx #2 jsr chkin dec tpos ldx tpos rts calcall lda #0 sta tmp sta tmp+1 lda anzzl ldy anzzl+1 sta tmp2 sty tmp2+1 div1 lda tmp2+1 bne div11 lda tmp2 cmp anzspa bcc div12 div11 lda tmp2 sec sbc anzspa sta tmp2 lda tmp2+1 sbc #0 sta tmp2+1 inc tmp bne div1 inc tmp+1 bne div1 div12 ldx anzspa lda #0 sta tmp2 sta tmp2+1 mul1 lda tmp2 clc adc tmp sta tmp2 lda tmp2+1 adc tmp+1 sta tmp2+1 dex bne mul1 lda tmp2 cmp anzzl bne norm lda tmp2+1 cmp anzzl+1 bne norm lda #0 sta reest lda tmp ldy tmp+1 sta an sty an+1 rts norm lda tmp clc adc #1 sta t1 lda tmp+1 adc #0 sta t1+1 lda #0 sta t2 sta t2+1 lda t1 ldy t1+1 sta tmp sty tmp+1 mul2 lda t2 clc adc zw2 sta t2 lda t2+1 adc #0 sta t2+1 lda tmp+1 bne mul21 lda tmp cmp #1 beq mul22 mul21 lda tmp sec sbc #1 sta tmp lda tmp+1 sbc #0 sta tmp+1 jmp mul2 mul22 lda anzzl sec sbc t2 sta an lda anzzl+1 sbc t2+1 sta an+1 lda t1 sec sbc an sta reest lda t1+1 sbc an+1 beq gut dl inc deal jmp dl gut rts steuer inc stz bne stend inc stz+1 stend rts viellst lda stz bne aberja lda stz+1 bne aberja rts aberja lda #warwas jsr strout lda #23 sta spalte ldy #16 jsr satcr ldx stz lda stz+1 jsr axout jsr home ldy #9 jmp satcr packmas jsr init jsr titout lda #mask1 jsr strout neunam jsr asknames jsr askzpar lda #0 sta key lda #15 sta spalte ldy #23 jsr satcr ggjn lda #0 sta crs1 gjn jsr get beq gjn ldx #2 stx crs2 waus ldx crs3 bne waus inc crs1 cmp #"n" beq neunam cmp #"j" bne ggjn jsr titout lda #source jsr strout jsr getkey ldx #oldname lda #20 jsr setnam lda #2 tay ldx #8 jsr setpar jsr open jsr diskerr lda #workt jsr strout jsr readtext jsr diskerr jsr viellst lda #numbt jsr strout jsr calcall lda reest clc adc an sta anzline lda an+1 adc #0 sta anzline+1 ldx anzline lda anzline+1 jsr axout jsr return lda #15 sta spalte jsr setcr ggjn2 lda #0 sta crs1 gjn2 jsr get beq gjn2 ldx #2 stx crs2 waus2 ldx crs3 bne waus2 inc crs1 cmp #"n" beq qpackmas cmp #"j" bne ggjn2 clc bcc zweivor qpackmas jmp packmas zweivor jsr titout lda #desti jsr strout jsr getkey ldx #newname lda #20 jsr setnam ldx #8 lda #2 tay jsr setpar jsr open jsr diskerr lda #workt jsr strout jsr writetext jsr escape jsr diskerr lda #opend jsr strout lda #29 sta spalte jsr setcr ggjn3 lda #0 sta crs1 gjn3 jsr get beq gjn3 ldx #2 stx crs2 waus3 ldx crs3 bne waus3 inc crs1 cmp #"j" beq qpackmas cmp #"n" bne ggjn3 lda #service jsr strout lda #30 sta spalte jsr setcr ggjn4 lda #0 sta crs1 gjn4 jsr get beq gjn4 ldx #2 stx crs2 waus4 ldx crs3 bne waus4 inc crs1 cmp #"j" beq postload cmp #"n" bne ggjn4 jmp (reset) postload lda #disk jsr strout jsr getkey lda #ladt jsr strout ldx #4 stx key dex filp lda pufft,x sta keybuf,x dex bpl filp rts efirst jsr init lda #firt jsr strout jmp getkey init jsr cint lda #12 sta vic+33 sta vic+32 jmp clall