;:sys36864 *= $c000 ;.opt oo vic =$d000 tmp =166 anfang =168 text =$4000 setnam =65469 setpar =65466 load =65493 shift =657 look =2092 bsout =65490 clrscr =$e544 basic =157 font =14336 key =198 tend =text+11800 crscol =646 quote =212 get =65508 crs1 =204 crs2 =205 crs3 =207 insert =216 reset =64738 sid =54272 keybuf =631 return =$aad7 cint =65409 sprite =704 sprptr =2040 oldirq =$ea31 irqvec =788 konf =1 chars =53632 numspr =sprite+24 keyrep =650 input =$ffcf name =820 iecin =$ffa5 sa =$b9 talk =$ffb4 sectalk =$ff96 untalk =$ffab open =$ffc0 close =$ffc3 clrchn =$ffcc chkout =$ffc9 test1 =2049 test2 =2051 test3 =2057 test4 =2076 zeile =214 spalte =211 tmp2 =247 fac =$62 intflt =$bc49 space =$ab3f facarg =$bc0c div =$bb12 facout =$bdd7 fac10 =$bae2 jmp begin title .byte "\x93\x08\x9aN\x19&\xb7M\xb4\x19\x08 \x9ethe message-maker v1.0\x19\x08 \x9a\xaa" .byte "\xb4\x19\x03 \x9ewritten by nicki heusler 240987\x19\x03 \x9a\xaa" .byte "\xb4\x19\x05 \x9ea nss programm - [c] nss '87\x19\x05 \x9a\xaaM\x19&\xafN\x11\x03" disk .byte "\x18N\x19&\xb7M\xb4\x19\x09 \x9einsert systemdisk !\x19\x09 \x9a\xaa" .byte "M\x19&\xafN\x03" men .byte "\x18N\x19&\xb7M\xb4\x19\x0e \x9emain-menu:\x19\x0e \x9a\xaa" .byte "\xb4 \x9e (f1) write message\x19\x11 \x9a\xaa" .byte "\xb4 \x9e (f3) quit\x19\x1a \x9a\xaa" .byte "\xb4 \x9e (f5) help\x19\x1a \x9a\xaa" .byte "M\x19&\xafN\x03" help .byte "\x93N\x19&\xb7M\xb4\x9e editorfunctions:\x19\x15 \x9a\xaa" .byte "\xb4\x19& \xaa\xb4 \x9epress (f1), then press:\x19\x0e \x9a\xaa\xb4\x19& \xaa" .byte "\xb4\x9e\x19\x04 s: show message\x19\x13 \x9a\xaa" .byte "\xb4\x9e\x19\x04 a: abort\x19\x1a \x9a\xaa" .byte "\xb4\x9e\x19\x04 stop: return\x19\x16 \x9a\xaa" .byte "\xb4\x9e\x19\x04 1: change frame\x19\x13 \x9a\xaa" .byte "\xb4\x9e\x19\x04 2: change background\x19\x0e \x9a\xaa" .byte "\xb4\x9e\x19\x04 _: save message\x19\x13 \x9a\xaa" .byte "\xb4\x9e\x19\x04 v: set new speed\x19\x12 \x9a\xaa" .byte "\xb4\x9e\x19\x04 p: pause\x19\x1a \x9a\xaa" .byte "\xb4\x9e\x19\x04 k: wait for a key\x19\x11 \x9a\xaa" .byte "\xb4\x9e\x19\x04 d: delete last 10 chars\x19\x0b \x9a\xaa" .byte "\xb4\x9e\x19\x04 *: set start/end for repeat\x19\x07 \x9a\xaa" .byte "\xb4\x9e\x19\x04 =: store/recall cursor-position\x19\x03 \x9a\xaa" .byte "M\x19&\xafN\x03" endtxt .byte "\x18N\x19&\xb7M\xb4\x9ewhat now ?\x19\x1c \x9a\xaa" .byte "\xb4 \x9e (f1) save message to disk\x19\x0a \x9a\xaa" .byte "\xb4 \x9e (f3) show message, then continue\x19\x03 \x9a\xaa" .byte "\xb4\x19\x08 \x9eediting\x19\x17 \x9a\xaa" .byte "M\x19&\xafN\x03" endtxt2 .byte "\x19\x05\x91\x19\x06\x1d\x9ethen ?\x1a" .byte "\x19\x09\x1dreset\x19\x0f \x1a" .byte "\x91\x19\x09\x1drestart message\x19\x0c \x1a" .byte "\x19\x04\x1d(f5) 'ready.'\x03" namtxt .byte "\x1a\x1efilename ? \x03" diskerr .byte "\x11\x1a\x96\x12error\x92: \x03" paktxt .byte "\x18N\x19&\xb7M\xb4\x9epackage...\x19\x1c \x9a\xaaM\x19&\xafN\x91\x19\x1c\x9d\x05\x03" file1 .byte "mess.kopf" file2 .byte "mess.font" menchr .byte "\x03s12kd_vap*=" menadr .word back,show,frame,hign,press,del10,saveit .word veloc,abort,pause,point,cursor zsin brk speed brk spd brk stelle brk zif brk acht brk raru .byt 1 delay .byt 1 old brk ende .word 0 kopfend .word 0 ldflag brk startend brk times brk merkzeil brk merkspal brk oldlen brk endneu .word 0 sprtab .byt %00010011,%00111011,%10110000 .byt %00101010,%10100010,%00101000 .byt %00100010,%10100010,%00101000 .byt %00010011,%00110011,%10101000 .byt %00001010,%00100010,%00101000 .byt %00101010,%00100010,%00101000 .byt %00010010,%00111011,%10110000 zeher .byt 100,10,1 raufru .byt 12,15,1,15,12,11 sures .byt %00010010,%10110011,%10110000 .byt %00101010,%10101010,%00001000 .byt %00100010,%10101010,%00001000 .byt %00010010,%10110011,%00010000 .byt %00001010,%10110010,%00010000 .byt %00101010,%10101010,%00000000 .byt %00010001,%00101011,%10010000 erga .byte "w,p," sers .byt %01001110,%11001110,%11100100 .byt %10101000,%10100100,%10001010 .byt %10001000,%10100100,%10001000 .byt %01001100,%11000100,%11000100 .byt %00101000,%11000100,%10000010 .byt %10101000,%10100100,%10001010 .byt %01001110,%10101110,%11100100 lentab .byt 0,0,1,1,1,2,0,1,0,0,0 begin jsr cint jsr setmob lda #0 sta vic+32 sta vic+33 sta basic sta ldflag ldx #24 clrsid sta sid,x dex bpl clrsid lda zsin bne drin inc zsin lda #disk jsr strout jsr waitkey ldx #8 ldy #0 jsr setpar lda #9 ldx #file2 jsr setnam lda #0 tax ldy #>font jsr load inc ldflag drin clc lda test1 adc test2 adc test3 adc test4 cmp #54 beq meme lda ldflag bne dirload lda #disk jsr strout jsr waitkey dirload ldx #8 ldy #1 jsr setpar lda #9 ldx #file1 jsr setnam lda #0 sta ldflag jsr load stx kopfend sty kopfend+1 jmp drin meme lda #men jsr strout getmen jsr get beq getmen cmp #"\x85" beq start cmp #"\x86" bne weiter jmp reset weiter cmp #"\x87" bne getmen lda #help jsr strout jsr waitkey jmp meme start lda #text sta tmp sty tmp+1 lda #31 sta vic+24 lda #11 sta vic+32 sta vic+33 pha pha jsr nullput lda #3 jsr put pla jsr put jsr nullput lda #4 jsr put pla jsr put lda #"\x9e" jsr bsout jsr put jsr return jsr clrscr lda #50 sta speed ldx #0 stx startend dex stx merkzeil main jsr crsan wak jsr get beq wak jsr crsof cmp #"\x85" beq menue cmp #5 beq ok cmp #13 beq ok cmp #17 bcc main cmp #21 bcc ok cmp #28 bcc main cmp #128 bcc ok cmp #141 beq ok cmp #129 beq ok cmp #144 bcc main ok pha jsr put pla jsr bsout lda #0 sta quote sta insert beq main menue jsr tonan getm jsr get beq getm ldx #menadr-menchr-1 suchm cmp menchr,x beq found dex bpl suchm bmi getm found txa asl tax lda menadr,x sta goto+1 lda menadr+1,x sta goto+2 jsr tonaus goto jsr 0 jmp main press jsr nullput lda #10 bne qput show lda #text sta anfang sty anfang+1 lda tmp pha lda tmp+1 pha jsr nullput lda #9 jsr put lda #31 sta vic+24 jsr look pla sta tmp+1 pla sta tmp back rts frame inc vic+32 jsr nullput lda #3 jsr put lda vic+32 bne qput hign inc vic+33 jsr nullput lda #4 jsr put lda vic+33 qput jmp put del10 ldx #10 stx key lda #20 dl10 sta keybuf-1,x dex bpl dl10 rts saveit lda #21 sta vic+24 lda #endtxt jsr strout lda #0 sta vic+32 sta vic+33 emen jsr get cmp #"\x86" beq show cmp #"\x85" bne emen jmp savecont veloc jsr clrspr setspr lda sprtab,x sta sprite,x dex bpl setspr lda speed sta old spdlop lda #0 sec sbc speed jsr numout spdkay jsr get cmp #13 bne nocer dec vic+21 lda speed cmp old bne neu rts neu jsr nullput lda #2 jsr put lda speed jmp put nocer cmp #"\x9d" beq up cmp #"\x11" beq up cmp #"\x1d" bne spdkay lda speed cmp #2 bcc gross dec speed bne spdlop gross lda #-1 sta speed bne spdlop up inc speed bne spdlop beq up abort jsr clrspr setspr2 lda sures,x sta sprite,x dex bpl setspr2 jsr getjn php dec vic+21 plp bcs jaa rts jaa pla pla jmp begin pause jsr nullput lda #8 jmp put point lda startend bne zwei inc startend jsr nullput lda #6 jmp put zwei dec startend jsr clrspr setspr3 lda sers,x sta sprite,x dex bpl setspr3 lda #2 sta times replop lda times jsr numout repkay jsr get cmp #13 beq cer cmp #"\x1d" beq plus cmp #"\x9d" beq minus cmp #"\x91" bne repkay minus ldx times cpx #3 bcs min2 ldx #0 min2 dex stx times jmp replop plus inc times bne replop inc times bne plus cer dec vic+21 jsr nullput lda #7 jsr put lda times jmp put cursor lda merkzeil bpl satschon lda zeile sta merkzeil lda spalte sta merkspal rts satschon lda #"\x13" jsr putout lo1 lda spalte cmp merkspal beq lo2 lda #"\x1d" jsr putout jmp lo1 lo2 lda zeile cmp merkzeil beq lo3 lda #"\x11" jsr putout jmp lo2 lo3 lda #-1 sta merkzeil rts strout tax lda tmp pha lda tmp+1 pha stx tmp sty tmp+1 so ldy #0 lda (tmp),y cmp #"\x03" bne nostop pla sta tmp+1 pla sta tmp rts nostop cmp #"\x1a" bne nocr lda #13 nocr cmp #"\x19" beq repeat cmp #"\x18" beq tit jsr bsout cont inc tmp bne so carry inc tmp+1 bne so repeat iny lda (tmp),y tax iny lda (tmp),y rep jsr bsout dex bne rep lda tmp clc adc #3 sta tmp bcc so bcs carry tit jsr clrscr lda #title jsr strout jmp cont waitkey lda #0 sta key wk cmp key beq wk sta key rts getc ldy #0 lda (tmp),y .byt $2c nullput lda #0 put ldy #0 sta (tmp),y incr inc tmp bne ru inc tmp+1 ru rts putout jsr bsout bcc put get2 ldy #0 lda (tmp2),y inc tmp2 bne ru inc tmp2+1 rts clrspr ldx #63 lda #1 sta vic+21 lda #0 clrsp sta sprite,x dex bne clrsp ldx #20 rts crsan ldx #0 stx crs1 rts crsof ldx #2 stx crs2 wc ldx crs3 bne wc inc crs1 rts tonan lda #15 sta sid+24 lda #200 sta sid+1 lda #9 sta sid+5 lda #240 sta sid+6 lda #17 sta sid+4 rts tonaus lda #0 sta sid+4 rts numout ldx #0 sta spd lda #51 sei sta konf lop10 lda #0 sta zif lda spd lop11 cmp zeher,x bcc lop12 sbc zeher,x inc zif bne lop11 lop12 sta spd stx stelle lda zif asl asl asl tay lda #8 sta acht lop13 lda chars,y sta numspr,x inx inx inx iny dec acht bne lop13 ldx stelle inx cpx #3 bcc lop10 lda #55 sta konf cli rts setmob sei lda #<mobirq ldy #>mobirq sta irqvec sty irqvec+1 cli lda #1 sta vic+16 sta vic+29 lda #36 sta vic lda #55 sta vic+1 lda #11 sta sprptr lda #128 sta keyrep rts mobirq dec delay bne goon lda #4 sta delay ldx raru dex bpl legal ldx #5 legal stx raru lda raufru,x sta vic+39 goon jmp oldirq getjn jsr get cmp #"j" beq ja cmp #"y" beq ja cmp #"n" bne getjn clc ja rts savecont lda #<endtxt2 ldy #>endtxt2 jsr strout pla pla jsr nullput gett jsr get cmp #"\x85" beq f1 cmp #"\x86" beq f3 cmp #"\x87" bne gett lda #9 .byt $2c f1 lda #0 .byt $2c f3 lda #1 jsr put jsr packer lda tmp ldy tmp+1 sta ende sty ende+1 namein lda #<namtxt ldy #>namtxt jsr strout lda #2 jsr close ldx #0 getname jsr input cmp #13 beq finnam sta name,x inx cpx #16 bcc getname finnam ldy #3 ergnam lda erga,y sta name,x inx dey bpl ergnam txa ldx #<name ldy #>name jsr setnam lda #2 tay ldx #8 jsr setpar jsr open lda #8 jsr talk lda #$6f sta sa jsr sectalk jsr iecin cmp #"0" bne fehler rest jsr iecin cmp #13 bne rest jsr untalk jmp speichern fehler pha lda #<diskerr ldy #>diskerr jsr strout pla diskin jsr bsout jsr iecin cmp #13 bne diskin jsr untalk jsr return jmp namein speichern ldx #2 jsr chkout lda #1 sta tmp jsr bsout lda #8 sta tmp+1 jsr bsout outl1 lda tmp cmp kopfend bne weiter1 lda tmp+1 cmp kopfend+1 bne weiter1 jmp teil2 weiter1 jsr getc jsr bsout bcc outl1 teil2 lda #<text ldy #>text sta tmp sty tmp+1 outl2 lda tmp cmp ende bne weiter2 lda tmp+1 cmp ende+1 bne weiter2 jmp teil3 weiter2 jsr getc jsr bsout bcc outl2 teil3 jsr clrchn lda #2 jsr close jmp begin packer lda #<paktxt ldy #>paktxt jsr strout lda tmp ldy tmp+1 sta ende sty ende+1 lda #<text ldy #>text sta tmp sty tmp+1 sta tmp2 sty tmp2+1 lda #"\x85" sta old lda #0 sta oldlen pr1 jsr get2 tay bne warwas jsr leeren jsr nullput jsr get2 tax jsr put lda lentab,x beq nocast tax pr2 jsr get2 jsr put dex bne pr2 nocast lda tmp2+1 cmp ende+1 bcc pr1 bne prx lda tmp2 cmp ende bcc pr1 prx jmp eval warwas cmp old bne neus inc oldlen bne pr1 dec oldlen neus pha jsr leeren pla sta old inc oldlen bne pr1 leeren ldx oldlen bne aha rts aha cpx #5 bcs lohnt lda old pry jsr put dex bne pry prr lda #0 sta oldlen rts lohnt jsr nullput lda #5 jsr put lda oldlen jsr put lda old jsr put jmp prr eval lda ende sec sbc #<text pha lda ende+1 sbc #>text pha lda tmp sec sbc #<text sta fac+1 lda tmp+1 sbc #>text sta fac ldx #$90 sec jsr intflt jsr facarg pla sta fac pla sta fac+1 ldx #$90 sec jsr intflt lda fac-1 jsr div jsr fac10 jsr fac10 jsr facout jsr space lda #"%" jsr bsout jmp return