Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
C 64-Kurs
Grafik-Grundlagen
J Rf::.M~ ilt-it'lt ... lo.·Il.· .. ~~* ,...**jt P. ~*'**'*.;( it"*j(*~M1t'*'«.·***IHf,**~**+'***********iHf******************"*
2 ht-Jh +.
~ fFfH *
~ Ht,.M~ S F' "- 1 L U
~ kl:.11* "*
" HEH* *
• R1011* MI·,'~rr<ED TH ~IA + HEIMO PONWHH 2102 HAMBURG 93 VERINGSTRASSE 82 *
8 nEMI( .jt.
I h~M~*~~~~~**~*"*~~***~********~~**~~,***********~~***** ***********************
10 POI~E52.48: PUKE~,o.48:POVE532SiI.6: POI<E5.52S1 .b: POV!:.646. I
.0 TE~~" ADRESSE DEZ. HEXA BINA!:.R GRAFIK"
1l:J0 PRI Nl CHR$ ( 147 I .. DAH Tt,.L UNG VON ZE; 1CHEN UND SPE I CHER"
10 4 , >-'kIN r: PRINTCHR.t (18): 1 B (10) : "~=~====-============="
lJ0 PkltHCIIR$(18,: 1,~E«10) "lHO/1A/PONNATH HAMBURG"
115 PkUllr HR$ (18) ; 1 AB (111J) ; "==~=================="
1<101 PRHJ I: ;-Rlin : ~'I-drH" (1) EINSEHEN IN EINEN SPE lLHER"
1':'0 "'<INT:I-Rll<'" (2) D,~RSTELLUNG ElI.ES ZEICHENS"
1~,0 PRIN I: I-'R I NT: PRIN I" DI/TE KENNZIFFER l,jAEHLEN , ..
1"1Il '1:.11',$: IF ,l= .... IHENI611l
110 A=\'AL (An : 1F , I ORA. 11'1'-'.11160
1811l uN(~GOSUBI0ß0. ,'1.100
1'10 GmUII2l121
H'IlIllll I'HIlllCHR.t (J 4/): CllRt (18) ; H\ß (:c) ; "DARSTELLUNG EINES SPEICIIERPLA rZES:"
1010 F'RINT :PRINT" - SPEICHERADRESSE II1l-65535) EHJGE8EN"
lIIl2l1l PRINT"ZURLIECK Mll ZAHL I\U6SERIIRLEi 0 UND 65535":PRINT
112130 INPUT"ADRESSE. : ";AD: IFAD<001~(4D,'65535lHENRETUt<N
11214121 [IE~PEE.V (ADI : PRHn: PRINl: GOSLJBJ 011l1110: GOSLlB211l000: PRINTTE$: PRINT: GOSUB311112111l0
105111 ~'I<HJT: PRI I·n : Gm 0 1010
2121011l PRINICHR$1147IiCHRSI(8): TAB(~):"ZEICHEN-DARSTELLUNGICHARACTERI"
2010 IFTS~IIITHENG06UB411l1ll11l11l
20:2111 PRI" I : ;-R I N-' " GEBE DEN BI LDSCH 1RM COQE' DES"
205111 PRall" DARZUSTELLENDEN ZEICIIENS EIN"
204121 F'RIN I" = SIEIIE. HI\NDBUL.H SEI'] E 1.53 - 1-54 ="
21115121 PRINT:pr--:INT" ZURLIECK NI r ZRHL AUSSE;kHALB 0 UND 51!":F'RINT
L0611l PRIN r .: INPU r"CODE :", A: IFA<1Il0RA>51I I HENFIETURN
20/121 PRINT:F'F<lNTlE$:PRINI
212180 F OkAU~12288+8"ATO 1228s->e*A+7
2100 DE=PEEK(RDI:GOSUBII11121121I21:GOSU820i2112li21:GOSUß312111111l11l:NEXTAD
2110 GETA$: IFA-l>=" "THEN711121
2J20 RETURN
11211'112l0 11 $="":H$="0123456789ABCDEF":D~INr'DE/16):HE$=MID$(H$.D+1,1):D=DE-D*16
1012110 HE$=Ht$+MID$(H$.D+I.II:RETURN
200011l BI$="":DI=DE
01211121 DI-DI/2:D$="I2I":IFD1,>INT(DII IHEND$="I"
2011120 DI=INl (DII:BI =D$+BI$:lfDI>l2lTHEN2001121
2011130 IFLEN(BI$I<81HENBI$="Iil"+BI$:GOT0201113111
21211114121 RETURN
301111110 PßINI rAB' 7-LEN ,SlR-l> (AD) ) i AD: fAB' 13-LEN (STR$ <OE) I) DE, -, AB (16) HE$: TAB (21) BI$,
312112110 FORI=ll0B:W$=MID$(BI$.1.11
3002111 IFW$=" I" I HENPRIN I TAB (3121+1 1CHR$ (18) ;" ": CHR$ (1461;: GOl 0 .$01214121
30030 PRIN" lAB (30+1) ". ":
31111214121 NEXTI
3012150 PR I N r: RETURN
4001111il PRINT: PRIt-H"I(OP IEREN DER ZEICHEN INS R;~M lAB 12288)"
4001111 PRINl" BInE WARTEN"
400LIII POKE56334.PEEK(56334)AND254:POkEI.PEEKI1)AND251
411H2I3111 FORI =I2IT0412195: POKE12288, ] • PEEJ( I 53L'l8+] I: NEXTI
40040 PUKEI,PEEKII)OR4:POKE56334.PEEK(56334)ORI
4012150 POI(E53272, (PEEK (532/21 RND240) +12: r6=1: RE-I URN
READY.
55296 und 56295. Wie er aufgeteilt
ist (Bild 7) steht im Handbuch Seite
139 zusammen mit den Farbkennzahlen.
Wenn wir jetzt zum Beispiel noch
eingeben:
POKE 55296,1 :POKE 55297,3:POKE
55298,7 »Return«
dann sehen wir ein weißes A, ein
cyanfarbenes B und ein gelbes C.
Übrigens, wenn Ihnen die aktuelle
Farbe des Cursors oder der gerade
verwendeten Zeichen nicht
gefällt, dann probieren Sie doch
mal
POKE 646, Farbkennzahl.
Und weil wir gerade bei den Farben
sind, die Speicherzellen 53280
und 53281 steuern, mit Farbkennzahlen
belegt, die Rahmen- und die
Hintergrundfarbe. Mir persönlich
gefällt zum Beispiel folgende Kombination
sehr gut (auf Schwarzweiß
Bildschirm)
POKE 53280,Il:POKE 53281,11:
POKE 646,0 »Return«
Nun zu den Zeichen. Woher weiß
der Computer, daß er ein A
L1stlng. Das Programm
»SpeiLu(( (Speicherlupe)
drucken muß, wenn eine 1 im Bildschirrnspeicher
steht? Das sagt ihm
das Betriebsystem. Es teilt ihm mit,
daß im Byte 53272 des VIC-II-Chips
eine Kennzahl steht (Bit 1-3, Bit 0
wird nicht beachtet), die ihm wiederum
sagt, wo die Muster für alle
Zeichen zu finden sind. Merkwürdigerweise
deutet diese Kennzahl auf
eine Startadresse der Zeichenmuster
von 4096! Das Zeichen-ROM,
das wir bei unserer anfänglichen
Speicherbegehung als 2. Stock im
Bereich 53248 bis 57343 kennengelernt
haben, ist davon meilenweit
entfernt! 4096 liegt außerdem mitten
in einem Bereich, der ständig
von Basic-Programmen überschrieben
wird.
Die genaue Lösung des Rätsels soll
erst in einer der nächsten Folgen
gegeben werden. Aufgrund einer
technischen Eigenart des VIC-II
Chips werden vom Zeichen-ROM
zwei Geisterbilder im Bereich 4096
bis 8 191 und im Bereich 36864 bis
40959 erzeugt. Der VIC-II-Chip
»meint«, er hole seine Zeichen-Mu-
ster aus diesen Bereichen. In Wirklichkeit
bezieht er sie im Normalfall
immer aus dem Zeichen-ROM. Das
ist eine Eigenart, die so recht in Alices
Wunderland paßt!
paßt!
Wie sehen diese Zeichen-Muster
aus? Auch dazu können Sie das
Programm »SpeiLu« benutzen.
Wenn Sie sich damit beispielsweise
mal das A ansehen, finden Sie ein
Muster, wie es in Bild 8 dargestellt
ist.
Dieses 8 x 8-Gitter (auch Matrix
genannt) enthält also das Abbild
des Zeichens A. Alle Zeichen sind
auf diese Weise als Punktmuster
gespeichert in jeweils acht Speicherzellen
(hier also von 53256 bis
53263). Ein dunkles Feld bedeutet
ein gesetztes Bit (= I; im Zimmer ist
etwas drin), ein helles Feld ein gelöschtes
Bit (= 0; das Zimmer enthält
nichts).
Das Zeichen-ROM hat an nullter
Stelle von 53248 bis 53255 das Zeichen
mit dem Bildschirmeode 0
(den Klammeraffen @), an erster
Stelle von 53256 bis 53263 - wie
wir sehen - das Zeichen mit dem
Bildschirmeode 1 (also das A) und
so weiter nacheinander in Form
von je acht Bytes als Bit-Muster gespeichert.
Wenn Sie im Handbuch
die Seite 133 f. aufschlagen, dann
können Sie die Tabelle 2 mit dem
Inhalt des Charakter-ROMs besser
verstehen.
Probieren Sie mal aus, sich die
einzelnen Zeichen mit dem Programm
»SpeiLu« durch Eingabe der
Bildschirmeodes (im Handbuch bis
127 als Pokes bezeichnet) abbilden
zu lassen.
Das Programm IISpeiLuc1 (der Name
kommt von »Speicher-Lupe(I)
enthält noch einige für Sie bislang
noch geheimnisvolle Einzelheiten:
die Hexadezimal- und die Binärzahlen,
das Interrupt-System, das Kopieren
des Zeichen-ROMs. Dies alles
hängt zusammen mit der Frage:
Wie kann man sich eigene Zeichen
bauen und verwenden? Wir werden
sie in der nächsten Folge gemeinsam
beantworten.
Mit dem bisher zurückgelegten
Weg durch das Dornengestrüpp
sind wir unserem Ziel, der hochauflösenden
Grafik, schon ein ganzes
Stück nähergekommen. Ich hoffe,
daß Sie nach der Ruhepause bis
zur nächsten Folge die zweite Etappe
der Expedition zu Dornröschen
zusammen mit mir durchführen
werden.
(Heimo Ponnath)
4
Ausgabe 4/April1984
~Y126