C64 Basic Online
The program is a alpha version, more to come...
But it seem to work good :)
Copy / Paste the example codes (unfold them)
inside the C64 windows, jump a line and type RUN + ENTER!
Example code 03
10 PRINT CHR$(147):V=53248:POKE 2040,13:POKE V+21,1:POKE V+39,7
20 FOR I=0 TO 62:READ A:POKE 832+I,A:NEXT
30 FOR I=0 TO 24:POKE 1024+I*40+30,160:POKE 55296+I*40+30,2:NEXT
40 X=60:Y=130
50 J=PEEK(56320):IF (J AND 4)=0 THEN X=X-2
60 IF (J AND 8)=0 THEN X=X+2
70 IF (J AND 1)=0 THEN Y=Y-2
80 IF (J AND 2)=0 THEN Y=Y+2
85 IF X<24 THEN X=24
86 IF Y<50 THEN Y=50
87 IF Y>229 THEN Y=229
90 POKE V,X AND 255:POKE V+1,Y:POKE V+16,-(X>255)
92 W=TI
94 IF TI=W THEN 94
100 IF PEEK(V+31) AND 1 THEN POKE V+39,2:X=60:Y=130:FOR T=1 TO 200:NEXT
110 POKE V+39,7:GOTO 50
120 DATA 0,0,0,0,0,0,0,24,0,0,126,0,1,255,128,3,255,192,7,255,224
130 DATA 7,255,224,15,255,240,15,255,240,15,255,240,15,255,240,15,255,240,7,255,224
140 DATA 7,255,224,3,255,192,1,255,128,0,126,0,0,24,0,0,0,0,0,0,0
Example code 02
10 PRINT CHR$(147);:POKE 53280,0:POKE 53281,0:DIM X(30),V(30),Y(30)
20 FOR I=0 TO 30:X(I)=INT(RND(1)*40):Y(I)=INT(RND(1)*25)
25 V(I)=1+INT(RND(1)*3):NEXT
30 FOR I=0 TO 30:POKE 1024+Y(I)*40+X(I),32
40 X(I)=X(I)-V(I):IF X(I)<0 THEN X(I)=X(I)+40:Y(I)=INT(RND(1)*25)
50 A=1024+Y(I)*40+X(I):POKE A,42:POKE A+54272,9+V(I)*2
60 NEXT:T=TI+2
65 IF TI<T THEN 65
70 GOTO 30
Example code 01
10 PRINT CHR$(147);:POKE 53280,0:POKE 53281,0
20 DIM U(6,3),W(6,3),E(3),F(3),G(3),H(3)
30 FOR P=0 TO 6:FOR I=0 TO 3:READ U(P,I),W(P,I):NEXT:NEXT
40 DATA -1,0,0,0,1,0,2,0,0,0,1,0,0,1,1,1,-1,0,0,0,1,0,0,1
50 DATA 0,0,1,0,-1,1,0,1,-1,0,0,0,0,1,1,1
60 DATA -1,0,0,0,1,0,1,1,-1,0,0,0,1,0,-1,1
70 FOR R=2 TO 22:A=R*40:POKE 1024+A+14,160:POKE 1024+A+25,160
75 POKE 55296+A+14,11:POKE 55296+A+25,11:NEXT
80 FOR C=14 TO 25:POKE 1024+880+C,160:POKE 55296+880+C,11:NEXT
85 PRINT CHR$(19);CHR$(5);TAB(14);"T E T R I S"
90 SC=0:L=0:GOSUB 900
110 P=INT(RND(1)*7):K=P+2:X=4:Y=1
115 FOR I=0 TO 3:E(I)=U(P,I):F(I)=W(P,I):NEXT
120 GOSUB 500:IF R THEN 800
130 V=160:GOSUB 600:T0=TI:DL=30-INT(L/5)*3:IF DL<6 THEN DL=6
150 GET A$:DX=0:DY=0:RT=0
160 IF A$="A" OR A$=CHR$(157) THEN DX=-1
170 IF A$="D" OR A$=CHR$(29) THEN DX=1
180 IF A$="W" OR A$=CHR$(145) THEN RT=1
190 IF A$="S" OR A$=CHR$(17) THEN DY=1
200 IF TI-T0>=DL THEN DY=1:T0=TI
210 IF DX=0 AND DY=0 AND RT=0 THEN 150
220 V=32:GOSUB 600
230 IF DX=0 AND RT=0 THEN 300
240 OX=X:FOR I=0 TO 3:G(I)=E(I):H(I)=F(I):NEXT
250 X=X+DX:IF RT AND P<>1 THEN FOR I=0 TO 3:T=E(I):E(I)=-F(I):F(I)=T:NEXT
260 GOSUB 500:IF R=0 THEN 300
270 X=OX:FOR I=0 TO 3:E(I)=G(I):F(I)=H(I):NEXT
300 IF DY=0 THEN 400
310 Y=Y+1:GOSUB 500:IF R=0 THEN 400
320 Y=Y-1:V=160:GOSUB 600:GOTO 700
400 V=160:GOSUB 600:GOTO 150
500 R=0:FOR I=0 TO 3:A=X+E(I):B=Y+F(I)
510 IF A<0 OR A>9 OR B<0 OR B>19 THEN R=1:A=0:B=0
520 IF PEEK(1024+(B+2)*40+A+15)<>32 THEN R=1
530 NEXT:RETURN
600 FOR I=0 TO 3:A=1024+(Y+F(I)+2)*40+X+E(I)+15
610 POKE A,V:POKE A+54272,K:NEXT:RETURN
700 N=0:R=19
710 F1=1:FOR C=0 TO 9:IF PEEK(1024+(R+2)*40+C+15)=32 THEN F1=0
720 NEXT
730 IF F1=0 THEN R=R-1:GOTO 790
735 IF R=0 THEN 760
740 FOR Q=R TO 1 STEP -1:FOR C=0 TO 9:A=1024+(Q+2)*40+C+15
750 POKE A,PEEK(A-40):POKE A+54272,PEEK(A+54232):NEXT:NEXT
760 FOR C=0 TO 9:POKE 1104+C+15,32:NEXT:N=N+1:GOTO 710
790 IF R>=0 THEN 710
795 SC=SC+N*N*100+10:L=L+N:GOSUB 900:GOTO 110
800 PRINT CHR$(19);:FOR I=1 TO 10:PRINT:NEXT:PRINT TAB(15);"GAME OVER":END
900 PRINT CHR$(19);CHR$(17);CHR$(154);"SCORE";SC;" LIGNES";L;" ";:RETURN
| Updated | 2 hours ago |
| Published | 2 days ago |
| Status | In development |
| Platforms | HTML5 |
| Rating | Rated 5.0 out of 5 stars (1 total ratings) |
| Author | CreepyCat |
| Genre | Educational |
| Tags | basic, Commodore 64, dev, game, programming |
| Content | No generative AI was used |

Comments
Log in with itch.io to leave a comment.
Cool
Thanks! :)