BILAGOR

D. BILAGA D

FÖRKORTNINGAR FÖR BASIC-ORD

För att spara tid när du skriver in programkommandon tillåter C-64an att du förkortar de flesta ord. Förkortningen för PRINT är ett frågetecken. Förkortningen för de övriga orden görs genom att skriva första eller de två första tecknen i ordet och sedan hålla SHIFT nedtryckt medan du trycker nästa tecken. När förkortningen används i programmet kommer den att skrivas ut i sin längre form när programmet listas. Notera att en del ord innehåller första parantesen, andra gör det inte.

[Kommandoförkortningar, del 1]
[Kommandoförkortningar, del 2]

E. BILAGA E

SKÄRMKODER

Följande tabell visar alla tecken som finns inbyggda i Commodore 64. Tabellen, visar vilket nummer du skall lägga in (POKE) i skärmminnet för att få det önskade tecknet. Det visar också vilket värde tecknet får om du PEEKar (läser av) minnespositionen. Skärmens adress är 1024-2023.

Det finns två uppsättningar med tecken, men du kan bara använda en i taget. Med detta menas att tecken från den ena uppsättningen inte kan visas samtidigt som tecken från den andra. Du byter teckenuppsättning genom att hålla skift nedtryckt och trycka på C=-tangenten.

Från BASIC kan du ändra teckensats med POKE-kommando. POKE 53272,29 ändrar till stora bokstäver och grafik. POKE 53272,31 ändrar till små och stora bokstäver (gemener och VERSALER).

Alla tecken i tabellen kan också visas i omvänd form (reverse mode). De omvända tecknen erhålles genom att addera 128 till de angivna värdena.

Om du vill visa en fylld cirkel i skärmpositionen 1504, så lägg in koden för fylld cirkel (81) i minnespositionen 1504: POKE 1504,81.

Det finns en motsvarande minnesposition för att kontrollera färgen på varje tecken som visas på skrämen (positionerna 55296-56295). För att förändra cirkelns färg till gul (färgkod 7) måste motsvarande minnesposition (55776) innehålla denna teckenfärg. Skriv därför: POKE 55776,7

Se även BILAGA G för kompletta skärm- och färgminneskartor samt färgkoder.

SKÄRMKODER

[Skärmkoder, del 1]
[Skärmkoder, del 2]
[Skärmkoder, del 3]

Koderna 128-255 är omvända (reverserade) versioner av koderna 0-127.

F. BILAGA F

ASCII OCH CHR$-KODER

Denna tabell visar vad som skrivs ut när du ger kommandot PRINT CHR$(X), där X är alla värden mellan 0 och 255. Den visar också viket värde du får om du skriver PRINT ASC("X") är X är vilket tecken som helst. Detta är användbart när du skall analysera tecken från ett GET-kommando, eller konvertera stora/små bokstäver.

[Commodore-ASCII-koder, del 1]
[Commodore-ASCII-koder, del 2]
[Commodore-ASCII-koder, del 3]

  1. Koderna 192-223 är samma som 96-127
  2. Koderna 224-254 är samma som 160-190
  3. Koden 255 är samma som 126

G. BILAGA G

SKÄRM- OCH FÄRGMINNESKARTOR

Följande rutnät visar vilka minnespositioner som kontrollerar de tecken som visas på skärmen, och de minnespositioner som används för de individuella tecknens teckenfärg. Dessutom finns en tabell med teckenfärgkoderna.

SKÄRMMINNESKARTA
[Skärmminneskarta]

De värden som används för att POKEa i färgminnespositionerna för att ändra ett teckens färg är:
0SVART 8ORANGE
1VIT 9BRUN
2RÖD 10LJUS RÖD
3CYAN 11GRÅ 1
4PURPUR 12GRÅ 2
5GRÖN 13LJUS GRÖN
6BLÅ 14LJUSBLÅ
7GUL 15GRÅ 3

För att som exempel ändra färgen på tecken, placerat i skärmens övre vänstra hörn, till rött, skriv: POKE 55296,2

FÄRGMINNESKARTA
[Färgminneskarta]

H. BILAGA H

HÄRLEDDA MATEMATISKA FUNKTIONER

Funktioner som inte innefattas i Commodore 64 BASIC kan beräknas på följande sätt:
FUNKTIONC-64 BASIC MOTSVARANDE
SECANT SEC(X)=1/COS(X)
COSECANT CSC(X)=1/SIN(X)
COTANGENT COT(X)=1/TAN(X)
INVERSE SINE ARCSIN(X)=ATN(X/SQR(-X*X+1))
INVERSE COSINE ARCCOS(X)=-ATN(X/SQR(-X*X+1))+{pi}/2
INVERSE SECANT ARCSEC(X)=ATN(X/SQR(X*X-1))
INVERSE COSECANT ARCCSC(X)=ATN(X/SQR(X*X-1))+(SGN(X)-1*{pi}/2
INVERSE COTANGENT ARCOT(X)=ATN(X)+{pi}/2
HYPERBOLIC SINE SINH(X)=(EXP(X)-EXP(-X))/2
HYPERBOLIC COSINE COSH(X)=(EXP(X)+EXP(-X))/2
HYPERBOLIC TANGENT TANH(X)=EXP(-X)/(EXP(X)+EXP(-X))*2+1
HYPERBOLIC SECANT SECH(X)=2/(EXP(X)+EXP(-X))
HYPERBOLIC COSECANT CSCH(X)=2/(EXP(X)-EXP(-X))
HYPERBOLIC COTANGENT COTH(X)=EXP(-X)/(EXP(X)-EXP(-X))*2+1
INVERSE HYPERBOLIC SINE ARCSINH(X)=LOG(X+SQR(X*X+1))
INVERSE HYPERBOLIC COSINE ARCCOSH(X)=LOG(X+SQR(X*X-1))
INVERSE HYPERBOLIC TANGENT ARCTANH(X)=LOG((1+X)/(1-X))/2
INVERSE HYPERBOLIC SECANT ARCSECH(X)=LOG((SQR(-X*X+1)+1/X)
INVERSE HYPERBOLIC COSECANT ARCCSCH(X)=LOG((SGN(X)*SQR(X*X+1/X)
INVERSE HYPERBOLIC COTANGENT ARCCOTH(X)=LOG((X+1)/(X-1))/2

I. BILAGA I

KONTAKTDON FÖR I/O

Denna bilaga är gjord för att visa vilka anslutningar som kan göras till Commodore 64.

  1. SPEL I/O
  2. Kassettslits
  3. Audio/video
  4. SERIE I/O (Skivminne och skrivare)
  5. Modulatorutgång
  6. Kassett
  7. Användarport
[Kontrollport]
KONTROLLPORT 1
StiftTypAnm.
1JOYA0 
2JOYA1 
3JOYA2 
4JOYA3 
5POT AY 
6KNAPP A/LJUSPENNA 
7+5VMax. 50mA
8GND 
9POT AX 
KONTROLLPORT 2
StiftTypAnm.
1JOYB0 
2JOYB1 
3JOYB2 
4JOYB3 
5POT BY 
6KNAPP B 
7+5VMax. 50mA
8GND 
9POT BX 

Minnesexpansion/spelkassettslists
StiftTypeStiftTyp
12 BA 1 GND
13 /DMA 2 +5V
14 D7 3 +5V
15 D6 4 /IRQ
16 D5 5 R/W
17 D4 6 Dot Clock
18 D3 7 I/O1
19 D2 8 /GAME
20 D1 9 /EXROM
21 D0 10 I/O2
22 GND 11 /ROML
StiftTypStiftTyp
N A9 A GND
P A8 B /ROMH
R A7 C /RESET
S A6 D /NMI
T A5 E 02
U A4 F A15
V A3 H A14
W A2 J A13
X A1 K A12
Y A0 L A11
Z GND M A10

[Expansionsport] [Audio/Video]
Audio/Video
StiftTypeAnm.
1LUMINANS 
2GND 
3AUDIO UT 
4VIDEO UT 
5AUDIO IN 

[Serie-I/O]
SERIE I/O
StiftTyp
1SERIAL /SRQIN
2GND
3SERIAL ATN OUT
4SERIAL CLK IN/OUT
5SERIAL DATA IN/OUT
6/RESET

[Kassett]
KASSETT
StiftTyp
A-1GND
B-2+5V
C-3Kassettmotor
D-4Kassett READ
E-5Kassett WRITE
F-6Kassett SENSE

Användarport
1 GND  
2 +5V MAX. 100 mA
3 /RESET  
4 CNT1  
5 SP1  
6 CNT2  
7 SP2  
8 /PC2  
9 SER. ATN IN  
10 9 VAC MAX. 100 mA
11 9 VAC MAX. 100 mA
12 GND  
StiftTypAnm.
A GND  
B /FLAG2  
C PB0  
D PB1  
E PB2  
F PB3  
H PB4  
I PB5  
K PB6  
L PB7  
M PA2  
N GND  
[Användarport]

J. BILAGA J

PROGRAM DU KAN PRÖVA

Vi har inkluderat ett program som du kan pröva med din Commodore 64. Detta program är både underhållande och användbart.

(Hämta)

 90 REM piano keyboard
 100 PRINT"{CLEAR} {REVERSE ON} {RIGHT} {RIGHT} {194} {RIGHT} {RIGHT} \
     {RIGHT} {194} {RIGHT} {RIGHT} {194} {RIGHT} {RIGHT} "
 110 PRINT" {REVERSE ON} {RIGHT} {RIGHT} {194} {RIGHT} {RIGHT} {RIGHT} \
     {194} {RIGHT} {RIGHT} {194} {RIGHT} {RIGHT} "
 120 PRINT" {REVERSE ON} {RIGHT} {RIGHT} {194} {RIGHT} {RIGHT} {RIGHT} \
     {194} {RIGHT} {RIGHT} {194} {RIGHT} {RIGHT} "
 130 PRINT" {REVERSE ON} {194} {194} {194} {194} {194} {194} {194} \
     {194} {194} {194} {194} {194} "
 140 PRINT" {REVERSE ON}q{194}w{194}e{194}r{194}t{194}y{194}u{194} \
     i{194}o{194}p{194}@{194}*{194}↑"
 150 PRINT"{DOWN}'space' for solo or polyphonic"
 160 PRINT"{DOWN}'f1,f3,f5,f7' octave selection"
 170 PRINT"{DOWN}'f2,f4,f6,f8' waveform{DOWN}"
 180 PRINT"hang on, setting up frequency table..."
 190 S=13*4096+1024: DIM F(26): DIM K(255)
 200 FOR I=0 TO 28: POKE S+I,0: NEXT
 210 F1=7040: FOR I=1 TO 26: F(27-I)=F1*5.8+30: F1=F1/2↑(1/12): NEXT
 220 K$="q2w3er5t6y7ui9o0p@-*£↑"
 230 FOR I=1 TO LEN(K$): K(ASC(MID$(K$,I)))=I: NEXT
 240 PRINT "{UP}{SPACE*38}"
 250 AT=0:DE=0:SU=15:RE=9:SV=SU*16+RE:AV=AT*16+DE:WV=16:W=0:M=1:OC=4:\
     HB=256:Z=0
 260 FOR I=0 TO 2: POKE S+5+I*7,AT*16+DE: POKES+6+I*7,SU*16+RE
 270 POKE S+2+I*7,4000 AND 255: POKE S+3+I*7,4000/256: NEXT
 280 POKE S+24,15: REM+16+64:poke s+23,7
 300 GET A$:IF A$="" THEN 300
 310 FR=F(K(ASC(A$)))/M: T=V*7: CR=S+T+4: IF FR=Z THEN 500
 320 POKE S+6+T,Z: REM finish dec/sus
 325 POKE S+5+T,Z: REM finish att/rel
 330 POKE CR,8: POKE CR,0: REM fix off
 340 POKE S+T,FR-HB*INT(FR/HB): REM set lo
 350 POKE S+1+T,FR/HB: REM set hi
 360 POKE S+6+T,SV: REM set dec/sus
 365 POKE S+5+T,AV: REM set att/rel
 370 POKE CR,WV+1: FOR I=1 TO 50*AT: NEXT
 375 POKE CR,WV: REM pulse
 380 IF P=1 THEN V=V+1: IF V=3 THEN V=0
 400 GOTO 300
 500 IF A$="{F1}" THEN M=1: OC=4: GOTO 300
 510 IF A$="{F3}" THEN M=2: OC=3: GOTO 300
 520 IF A$="{F5}" THEN M=4: OC=2: GOTO 300
 530 IF A$="{F7}" THEN M=8: OC=1: GOTO 300
 540 IF A$="{F2}" THEN W=0: WV=16: GOTO 300
 550 IF A$="{F4}" THEN W=1: WV=32: GOTO 300
 560 IF A$="{F6}" THEN W=2: WV=64: GOTO300
 570 IF A$="{F8}" THEN W=3: WV=128: GOTO300
 580 IF A$=" " THEN P=1-P: GOTO 300
 590 IF A$="{CLEAR}" THEN 200
 600 GOTO 300
 800 PRINT"hit a key"
 810 GET A$: IF A$="" THEN 810: WAIT FOR A KEY
 820 PRINT A$: RETURN
[ ← Föregående | Innehållsförteckning | Nästa → ]
[HTML 4.01]
Peter Krefting / $Date: 2012-09-24 19:22:42 $ / peter@softwolves.pp.se