home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh2x
/
sh23b.d64
/
sid-director
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
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