| KLEINES POKE+PEEK TESTPROGRAMM FÜR DEN C64
von Olaf Zimmermann

Das Programm schreibt "OLAF" in 6 x 6 Datenblöcke, färbt sie ständig unterschiedlich ein und wechselt die Rahmenfarbe.
Die Hintergrundfarbe kann der Benutzer selbst [Return] ändern. Die aktuellen POKE-Farbwerte der Buchstaben,
des Rahmens und des Hintergrundes werden hexadezimal, also im Zahlensystem zur Basis 16 (0 - 9 und A = 10, B = 11, C = 12,
D = 13, E = 14, F = 15), angezeigt. Hier kann man es auf YouTube in Aktion ansehen!
Hier der Code:
1000 REM ****************************************************
1010 REM POKE + PEEK-TESTPROGRAMM
1050 REM ****************************************************
1060 PRINT CHR$(147)
1070 REM VIC-II-Grafikchip des C64 IN TEXTMODUS
1080 POKE 56576,(PEEK(56576)AND252)OR3
1090 POKE 53265,27
1100 POKE 53270,8
1110 POKE 53272,21
1120 REM ZEICHENCODES
1130 BL=160
1140 SP=32
1145 H$="0123456789ABCDEF"
1150 REM KOPFZEILEN OBEN (STATISCH)
1160 R=0:C=0:GOSUB 8000:PRINT " "
1170 R=1:C=0:GOSUB 8000:PRINT "RETURN=BG+1 Q=ENDE"
1180 R=2:C=0:GOSUB 8000:PRINT "BORDER 53280 = "
1190 R=3:C=0:GOSUB 8000:PRINT "BG 53281 = "
1200 R=4:C=0:GOSUB 8000:PRINT "O:"
1210 R=5:C=0:GOSUB 8000:PRINT "L:"
1220 R=6:C=0:GOSUB 8000:PRINT "A:"
1230 R=7:C=0:GOSUB 8000:PRINT "F:"
1240 REM POSITION DES WORTES
1250 Y=10
1260 X=6
1270 SB=1024+Y*40+X
1280 CB=55296+(SB-1024)
1290 REM BUCHSTABEN-OFFSETS (SPALTEN)
1300 DIM XO(3)
1310 XO(0)=0
1320 XO(1)=7
1330 XO(2)=13
1340 XO(3)=20
1350 REM OLAF EINMALIG ZEICHNEN (DATA 0/1)
1360 FOR L=0 TO 3
1370 FOR RR=0 TO 5
1380 FOR CC=0 TO 5
1390 READ V
1400 IF V=1 THEN CH=BL
1410 IF V=0 THEN CH=SP
1420 A=SB+RR*40+XO(L)+CC
1430 POKE A,CH
1440 NEXT CC
1450 IF L=1 THEN GOTO 1490
1460 A=SB+RR*40+XO(L)+6
1470 POKE A,SP
1490 NEXT RR
1500 NEXT L
1510 REM STARTFARBEN
1520 B=6
1530 POKE 53281,B
1540 POKE 53282,B
1550 POKE 53283,B
1560 T=0
1570 REM *************** HAUPTSCHLEIFE ********************
1580 T=T+1:IF T>255 THEN T=0
1590 GET K$
1600 IF K$=CHR$(13) THEN GOSUB 8100
1610 IF K$="Q" THEN END
1620 RB=T AND 15
1630 POKE 53280,RB
1640 REM 4 BUCHSTABENFARBEN (EIN WERT PRO BUCHSTABE)
1650 F0=(T+0)AND15
1660 F1=(T+4)AND15
1670 F2=(T+8)AND15
1680 F3=(T+12)AND15
1690 REM NICHT GLEICH HINTERGRUND, WEIL ONST UNSICHTBAR
1700 IF F0=B THEN F0=(F0+1)AND15
1710 IF F1=B THEN F1=(F1+1)AND15
1720 IF F2=B THEN F2=(F2+1)AND15
1730 IF F3=B THEN F3=(F3+1)AND15
1740 REM JEDEN BUCHSTABENBLOCK FAERBEN (NUR COLOR-RAM)
1750 L=0:CL=F0:GOSUB 9000
1760 L=1:CL=F1:GOSUB 9000
1770 L=2:CL=F2:GOSUB 9000
1780 L=3:CL=F3:GOSUB 9000
1790 REM ANZEIGE AKTUALISIEREN (BORDER/BG)
1800 R=2:C=14:NN=RB:GOSUB 8390
1810 R=3:C=14:NN=B :GOSUB 8390
1820 REM JE BUCHSTABE: ADRESSE + WERT
1830 AD=CB+XO(0):R=4:C=3:NN=F0:GOSUB 8400
1840 AD=CB+XO(1):R=5:C=3:NN=F1:GOSUB 8400
1850 AD=CB+XO(2):R=6:C=3:NN=F2:GOSUB 8400
1860 AD=CB+XO(3):R=7:C=3:NN=F3:GOSUB 8400
1870 FOR XW=1 TO 80:NEXT XW
1880 GOTO 1580
8000 POKE 781,R
8010 POKE 782,C
8020 SYS 65520
8030 RETURN
8100 B=B+1:IF B>15 THEN B=0
8110 POKE 53281,B
8120 POKE 53282,B
8130 POKE 53283,B
8140 RETURN
8390 GOSUB 8000:PRINT MID$(H$,NN+1,1);" ";:RETURN
8400 GOSUB 8000:PRINT AD;"=";MID$(H$,NN+1,1);" ";:RETURN
9000 FOR RR=0 TO 5
9010 FOR CC=0 TO 5
9020 A=SB+RR*40+XO(L)+CC
9030 IF PEEK(A)<>SP THEN OF=A-SB:POKE CB+OF,CL
9040 NEXT CC
9050 NEXT RR
9060 RETURN
9000 REM DATENBLOCK FUER O
9200 DATA 0,1,1,1,1,0
9210 DATA 1,1,0,0,1,1
9220 DATA 1,1,0,0,1,1
9230 DATA 1,1,0,0,1,1
9240 DATA 1,1,0,0,1,1
9250 DATA 0,1,1,1,1,0
9299 REM DATENBLOCK FUER L
9300 DATA 1,1,0,0,0,0
9310 DATA 1,1,0,0,0,0
9320 DATA 1,1,0,0,0,0
9330 DATA 1,1,0,0,0,0
9340 DATA 1,1,0,0,0,0
9350 DATA 1,1,1,1,1,0
9399 REM DATENBLOCK FUER A
9400 DATA 0,1,1,1,1,0
9410 DATA 1,1,0,0,1,1
9420 DATA 1,1,0,0,1,1
9430 DATA 1,1,1,1,1,1
9440 DATA 1,1,0,0,1,1
9450 DATA 1,1,0,0,1,1
9499 REM DATENBLOCK FUER F
9500 DATA 1,1,1,1,1,1
9510 DATA 1,1,0,0,0,0
9520 DATA 1,1,0,0,0,0
9530 DATA 1,1,1,1,1,0
9540 DATA 1,1,0,0,0,0
9550 DATA 1,1,0,0,0,0
|