home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 81
/
64er_Magazin_Sonderheft_81_19xx_Markt__Technik_de_Side_A.d64
/
sid-director
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
7KB
|
213 lines
1 iflc=0thenlc=1:load"mc",8,8
2 iflc=1thenlc=2:load"p.cursor",8,8
3 iflc=2thenlc=3:printchr$(147)chr$(142)chr$(8);:load"c.mask",8,8
4 iflc=3thenlc=4:poke53280,11:poke53281,11:load"mask",8,8
5 poke55,63:poke56,156:clr:dim vi(39,24),jr(26)
6 dimsx(17),sy(17),mx(15),my(15)
7 def fn jy(x) =jr(peek(x)-101)
8 def fn xb(x) =int((x-24)/8)
9 def fn yb(y) =int((y-50)/8)
20 def fn pw(x) =int(x*40.96)
21 def fn fr(x) =int(x*17.02841156)
22 def fn gr(x) =int(((x*1000)-30)/5.8182)
23 def fn hi(x) =int(x/256)
24 def fn lo(x) =x-256*fn hi(x)
25 def fn po(n1)=n1+16*n2
26 def fn xk(x) =peek(700)+peek(701)*256
27 def fn yk(x) =peek(702)
28 def fn sx(x) =x*8+24
29 def fn sy(y) =y*8+50
30 def fn od(w) =w and 1
31 def fn gh(x) =int(x/8)
32 def fn gl(x) =x-8*fn gh(x)
36 s=54272:fori=0to2:a=i+1:b=s+7*i:fl(a)=b:fh(a)=b+1:pl(a)=b+2:ph(a)=b+3
37 ko(a)=b+4:ad(a)=b+5:sr(a)=b+6:nexti
40 gl=s+21:gh=s+22:rf=s+23:ml=s+24
43 vo=0:fu=0:fo=3848.568011:ug=0.03:og=11.9398554:pu=0:po=100:v=1:cs=58640
44 jo=56320:fori=0to24:pokes+i,0:nexti
50 fori=1to7:readx,y,m:vi(x,y)=m:vi(x,y+1)=m:vi(x,y+2)=m:sx(i)=fnsx(x)
51 sy(i)=fnsy(y):nexti:fori=1to10:readx,y,m:vi(x,y)=m:vi(x+1,y)=m:vi(x+2,y)=m
52 sx(i+7)=fnsx(x):sy(i+7)=fnsy(y):nexti:fori=0to26:readjr(i):nexti
55 poke2041,14:poke2042,15:fori=896to919:pokei,255:nexti:fori=960to1022:pokei,0
56 nexti:fori=920to958:pokei,0:nexti:fori=960to995step3:pokei,255:nexti
57 poke53271,4:poke53275,14:poke700,32:poke701,0:poke702,58
58 fori=0to3:poke53287+i,1:nexti
59 fori=1to15:readmx(i),my(i):next
60 poke2043,14:poke53254,248:poke53255,138
200 poke53269,(do*8)*-(v=3):sys40000:x=fnxk(0):y=fnyk(0):m=vi(fnxb(x),fnyb(y))
201 ifx>255thenpoke700,peek(700)-1
202 ifm=0goto200
203 poke53269,(do*8)*-(v=3):xp=53252:yp=53253:a=4
210 ifm>7thenxp=53250:yp=53251:a=2
211 pokeyp,sy(m):ifx<256thenpokexp,sx(m)
212 ifx>255thenpokexp,sx(m)-255:poke53264,a
213 poke53269,peek(53269)or a
214 onmgosub300,320,340,360,380,400,420,440,460,480,500,520,540,560,580,600,620
220 goto200
300 w=a(v):gosub650:a(v)=w:n2=a(v):pokead(v),fnpo(d(v)):return
320 w=d(v):gosub650:d(v)=w:n2=a(v):pokead(v),fnpo(w):return
340 w=s(v):gosub650:s(v)=w:n2=s(v):pokesr(v),fnpo(r(v)):return
360 w=r(v):gosub650:r(v)=w:n2=s(v):pokesr(v),fnpo(w):return
380 w=vo:gosub650:vo=w:pokeml,vo+fi+do*128:return
400 w=rs:gosub650:rs=w:pokerf,rs*16+f(1)+f(2)+f(3):return
420 iffi=16thenf=2
421 iffi=32thenf=3
422 iffi=64thenf=1
423 iffi=80thenf=4
425 gosub850:pokeml,fi+vo+do*128:return
440 gv=3:gosub1000:if(a<ug)or(a>og)goto440
441 gr=fngr(a):pokegl,fngl(gr):pokegh,fngh(gr):return
460 gv=4:gosub1000:if(a<fu)or(a>fo)goto460
461 fr$(v)=b$:fr(v)=fnfr(a):pokefl(v),fnlo(fr(v)):pokefh(v),fnhi(fr(v)):return
480 gv=3:gosub1000:if(a<pu)or(a>po)goto480
481 pw$(v)=b$:pw(v)=fnpw(a):pokepl(v),fnlo(pw(v)):pokeph(v),fnhi(pw(v)):return
500 w=0:ifri(v)>0thenw=1
501 gosub950:ri(v)=w*4:pokeko(v),ra(v)+re(v)+sa(v)+dr(v)+ri(v)+sc(v):return
520 w=0:ifsc(v)>0thenw=1
521 gosub950:sc(v)=w*2:pokeko(v),ra(v)+re(v)+sa(v)+dr(v)+ri(v)+sc(v):return
540 w=0:iff(v)>0thenw=1
541 gosub950:f(v)=w*2^(v-1):pokerf,rs*16+f(1)+f(2)+f(3):return
560 kr=0
561 ifra(v)=128thenkr=1
562 ifre(v)= 64thenkr=2
563 ifsa(v)= 32thenkr=3
564 ifdr(v)= 16thenkr=4
565 ifv=3thengosub800:goto570
566 gosub750
570 pokeko(v),kr+ri(v)+sc(v)
571 pokeml,fi+vo+do*128:return
580 vv=v:w=v:gosub1100
581 poke211,mx(9):poke214,my(9):syscs:fori=1to8-len(fr$(v)):print"[153] ";:nexti
582 print"";fr$(v):poke211,mx(10):poke214,my(10):syscs:fori=1to7-len(pw$(v))
583 print"[153] ";:nexti:print"";pw$(v)
584 p=160:m=1:w=a(vv):gosub1252:m=2:w=d(vv):gosub1252:m=3:w=s(vv):gosub1252
585 m=4:w=r(vv):gosub1252
586 poke1024+mx(14)+(my(14)-ki(vv))*40,160
587 if v=3 then if do=1 then poke53269,peek(53269) or 8
588 if v=3 then if do=0 then poke53269,peek(53269) and 247
594 w=a(v):m=1:gosub1250:w=d(v):m=2:gosub1250:w=s(v):m=3:gosub1250:w=r(v):m=4
595 gosub1250:va=1024+mx(14)+my(14)*40:pokeva-ki(v)*40,192
596 m=11:w=ri(v):gosub1300:m=12:w=sc(v):gosub1300:m=13:w=f(v):gosub1300
599 return
600 a$=",":c$(1)="100 data":fori=1to3:fl(i)=fnlo(fr(i)):fh(i)=fnhi(fr(i))
601 pl(i)=fnlo(pw(i)):ph(i)=fnhi(pw(i))
602 ki(i)=ra(i)+re(i)+sa(i)+dr(i)+ri(i)+sc(i):ad(i)=a(i)*16+d(i)
603 sr(i)=s(i)*16+r(i):nexti:c$(2)="101 data"
604 fori=1to3:b$(i)=str$(fl(i))+a$+str$(fh(i))+a$+str$(pl(i))+a$+str$(ph(i))+a$
605 b$(i)=b$(i)+str$(ki(i))+a$+str$(ad(i))+a$+str$(sr(i)):nexti
606 a$(1)=c$(1)+b$(1)+a$+b$(2):a$(2)=c$(2)+b$(3)+a$:gl=fngl(gr):gh=fngh(gr)
607 a$(2)=a$(2)+str$(gl)+a$+str$(gh)+a$+str$(rs*16+f(1)+f(2)+f(3))+a$
608 a$(2)=a$(2)+str$(fi+vo+do*128):a$(4)="103 ":a$(5)="104 "
609 a$(3)="102 s=54272:fori=0to24:readd:pokes+i,d:nexti"
610 ifki(1)>15thena$(4)=a$(4)+"poke"+str$(ko(1))+","+str$(ki(1)+1)
611 ifki(2)>15thena$(4)=a$(4)+":poke"+str$(ko(2))+","+str$(ki(2)+1)
612 ifki(3)>15thena$(4)=a$(4)+":poke"+str$(ko(3))+","+str$(ki(3)+1)
613 a$(4)=a$(4)+":fori=1to1000:nexti"
614 ifki(1)>15thena$(5)=a$(5)+"poke"+str$(ko(1))+","+str$(ki(1))
615 ifki(2)>15thena$(5)=a$(5)+":poke"+str$(ko(2))+","+str$(ki(2))
616 ifki(3)>15thena$(5)=a$(5)+":poke"+str$(ko(3))+","+str$(ki(3))
617 print"[147]";"new":printa$(1):printa$(2):printa$(3):printa$(4):printa$(5)
619 poke631,19:fori=1to6:poke631+i,13:nexti:poke198,7:poke53269,0:end
620 fori=1to3:kr=ra(i)+re(i)+sa(i)+dr(i):ifkr>0thenpokeko(i),kr+ri(i)+sc(i)+1
621 nexti:wait56320,16,239:fori=1to3:kr=ra(i)+re(i)+sa(i)+dr(i)+ri(i)+sc(i)
622 pokeko(i),kr:nexti:return
650 x=mx(m):y=my(m):va=1024+x+(y-int(w/2))*40
651 j=fnjy(jo)
652 if(j<9)or(j=18)thenreturn
655 ifj=10 thenifw<15thenw=w+1
656 ifj=14 thenifw> 0thenw=w-1
660 if fn od(w)=1thenp=197
661 if fn od(w)=0thenp=210
665 v2=va:va=1024+x+(y-int(w/2))*40:pokeva,p:ifv2<>vathenpokev2,160
669 goto651
750 x=mx(m):y=my(m):va=1024+x+(y-kr)*40:p=192
751 j=fnjy(jo)
752 if(j<9)or(j=18)thengosub770:return
755 ifj=10 thenifkr<4thenkr=kr+1
756 ifj=14 thenifkr>0thenkr=kr-1
765 v2=va:va=1024+x+(y-kr)*40:pokeva,p:ifv2<>vathenpokev2,160
769 goto751
770 ra(v)=0:re(v)=0:sa(v)=0:dr(v)=0:ki(v)=kr
771 ifkr=1thenra(v)=128:kr=128
772 ifkr=2thenre(v)=64 :kr= 64
773 ifkr=3thensa(v)=32 :kr= 32
774 ifkr=4thendr(v)=16 :kr= 16
775 return
800 x=mx(m):y=my(m):va=1024+x+(y-kr)*40:p=192
801 j=fnjy(jo)
802 if(j<9)or(j=18)thengosub820:return
805 ifj=10 thenifkr<4thenkr=kr+1
806 ifj=14 thenifkr>0thenkr=kr-1
807 ifj=12 then do=0:poke53269,peek(53269)and 247
808 ifj=16 then do=1:poke53269,peek(53269)or 8
815 v2=va:va=1024+x+(y-kr)*40:pokeva,p:ifv2<>vathenpokev2,160
816 goto801
820 ra(v)=0:re(v)=0:sa(v)=0:dr(v)=0:ki(v)=kr
821 ifkr=1thenra(v)=128:kr=128
822 ifkr=2thenre(v)=64 :kr= 64
823 ifkr=3thensa(v)=32 :kr= 32
824 ifkr=4thendr(v)=16 :kr= 16
825 pokeml,vo+fi+do*128
826 return
850 x=mx(m):y=my(m):va=55296+x+y*40
851 j=fnjy(jo):f2=f
852 if(j<9)or(j=18)thenreturn
855 ifj=10 theniff<4thenf=f+1
856 ifj=14 theniff>1thenf=f-1
860 iff2=fthen851
862 iff=1thenfori=5to7:pokeva-i*40,7:next:fori=0to4:pokeva-i*40,0:next:fi=64
863 iff=1goto851
864 iff=2thenfori=0to2:pokeva-i*40,7:next:fori=3to7:pokeva-i*40,0:next:fi=16
865 iff=2goto851
866 iff=3thenfori=0to7:pokeva-i*40,0:next:fori=2to5:pokeva-i*40,7:next:fi=32
867 iff=3goto851
868 iff=4thenfori=0to7:pokeva-i*40,7:next:fori=2to5:pokeva-i*40,0:next:fi=80
869 goto851
950 x=mx(m):y=my(m):va=1024+x+y*40:p=189:v2=55296+x+y*40
951 j=fnjy(jo)
952 if(j<9)or(j=18)thenreturn
955 ifj=16 thenw=0
956 ifj=12 thenw=1
960 if w=1thenpokeva-4,160:pokeva-3,p :pokev2,7
961 if w=0thenpokeva-4,p :pokeva-3,160:pokev2,0
965 goto951
1000 x=mx(m):y=my(m):kf=0:ns=0:vs=0:b$="":va=1024+x+y*40
1001 fori=0to4+gv:pokeva+i,160:nexti
1010 geta$:ifa$=""goto1010
1011 a=asc(a$):if((a<48)or(a>57))and(a<>46)and(a<>13)and(a<>20)goto1010
1012 if(a<>13)goto1015
1013 if(kf=0)or((kf=1)and(ns<2))goto1010
1014 a=val(b$):return
1015 if(a<>20)goto1020
1016 if(vs>0)thenb$=left$(b$,len(b$)-1)
1017 if((kf=0)and(vs>0))thenvs=vs-1
1018 if((kf=1)and(ns=0))thenkf=0
1019 if((kf=1)and(ns>0))thenns=ns-1
1020 if((a=46)and(vs=0))or((a=46)and(kf=1))then1010
1021 b=((a>47)and(a<58)):if(a=46)thenkf=1
1022 if b and((vs=gv)and(kf=0))goto1010
1023 if b and(ns=2)goto1010
1024 if b and(kf=1)thenns=ns+1
1025 if b and(kf=0)thenvs=vs+1
1026 if((a<>20)and(a<>13))thenb$=b$+a$
1030 poke211,x:poke214,y:syscs:fori=1to(4+gv)-len(b$):print"[153] ";:nexti
1031 print"";b$:goto1010
1100 x=mx(m):y=my(m)
1101 j=fnjy(jo)
1102 if(j<9)or(j=18)thenreturn
1103 ifj=10 thenifv<3thenv=v+1
1104 ifj=14 thenifv>1thenv=v-1
1105 poke211,x:poke214,y:syscs:print"[153]";right$(str$(v),1):goto1101
1250 if fn od(w)=1thenp=197
1251 if fn od(w)=0thenp=210
1252 va=1024+mx(m)+(my(m)-int(w/2))*40:pokeva,p:return
1300 q=mx(m)+my(m)*40:ifw>0thenpoke55296+q,7:poke1020+q,160:poke1021+q,189
1301 ifw=0thenpoke55296+q,0:poke1020+q,189:poke1021+q,160
1302 return
60000 data 3,20,1,6,20,2,9,20,3,12,20,4,15,20,5,18,20,6,21,20,7
60001 data 16,3,8,16,7,9,33,3,10,31,15,11,31,18,12,31,21,13,20,7,14
60002 data 35,18,15,35,16,16,35,14,17
60003 data 13,11,12,0,15,17,16,0,14,10,9,0,0,0,0,0,4,2,3,0,6,8,7,0,5,1,18
60004 data 3,18,6,18,9,18,12,18,15,18,18,18,21,18,3,3,3,7,22,3
60005 data 29,15,29,18,29,21,25,11,36,21