BILAGOR

K. BILAGA K

ÄNDRING AV STANDARD BASIC-PROGRAM TILL COMMODORE 64 BASIC

Om du har ett program skrivet i en annan BASIC-dialekt än Commodore BASIC, kan en del mindre justeringar erfordras innan det kan köras på Commodore 64. Vi har tagit med en del tips hur man gör denna ändring.

STRÄNG-DIMENSIONERING

Avlägsna alla uttryck som används för att deklarera längden på strängar. Ett uttryck som DIM A$(I, J), som dimensionerar en sträng J anta, element av längden I, ska ändras till Commodore BASIC uttrycket DIM A$(J).

En del BASIC-dialekter använder ett komma eller & för att sammanfoga strängar.

Vid Commodore BASIC används MID$-, RIGHT$- och LEFT$-funktionerna för att ta ut delar av strängar. Uttryck såsom A$(I) för att ta ut I:te tecknet i strängen A$, eller A$(I,J) för att ta ut en delsträng från tecknet I till J, måste andras enligt följande:
ANNAN BASIC COMMODORE 64 BASIC
A$(I) = X$ A$ = LEFT$(A$, I-1) + X$ + MID$(A$, I+1)
A$(I,J) = X$ A$ = LEFT$(A$, I-1) + X$ + MID$(A$, J+1)

MULTIPEL TILLDELNING

För att sätta B och C till 0, används vissa uttryck med formen:

  10 LET B=C=0

Commodore 64 kommer att tolka det sista likhetstecknet som en logisk operand och sätta C = -1 om C = 0. Ändra istället detta uttryck till:

  10 C=0:B=0

MULTIPEL INSTRUKTIONER

En del BASIC-dialekter använder snedstreck för att separera flera instruktioner på samma rad. Vid Commodore BASIC separeras instruktionerna med kolon (:).

MAT-FUNKTIONEN

Program som använder MAT funktionen som finns i vissa BASIC-dialekter måste skrivas om och använda FOR...NEXT-loopar för att arbeta riktigt.

L. BILAGA L

FELMEDDELANDEN

Denna bilaga innehåller en komplett lista på felmeddelanden som ges av 64, med en beskrivning av orsaken.

BAD DATA
Textdata lästes in av en fil, men programmet väntade sig numeriska data.
BAD SUBSCRIPT
Programmet försökte referera till ett element i en matris som ligger utanför området i DIM-kommandot.
CAN'T CONTINUE
CONT-kommandot fungerar inte om, programmet aldrig körts, det har blivit ett fel eller en rad har blivit redigerad.
DEVICE NOT PRESENT
Den begärda in/ut-enheten finns inte tillgänglig för ett OPEN, CLOSE, CMD, PRINT#, INPUT#, eller GET#.
DIVISION BY ZERO
Division med noll är en matematisk orimlighet och tillåts inte.
EXTRA IGNORED
För många svar har givits in på ett INPUT-kommando. Endast de första svaren räknas.
FILE NOT FOUND
Filen som specificerades i ett CLOSE, CMD, PRINT#, INPUT# eller GET#, har ej hittats.
FILE NOT OPEN
Den fil som specificerats i ett CLOSE, CMD, PRINT#, INPUT# eller GET#, måste först öppnas.
FILE OPEN
Ett försök att öppna en fil med ett nummer som redan används av en annan fil.
FORMULA TOO COMPLEX
Uttrycket bör delas upp i minst två separata delar.
ILLEGAL DIRECT
Input-kommandot kan endast användas i program och inte i direktmode.
ILLEGAL QUANTITY
Ett värde som använts som parameter i en funktion ligger utanför det tillåtna området.
LOAD
Det är problem med läsning av programmet från bandet.
NEXT WITHOUT FOR
Detta orsakas av oriktigt kapslade slingor eller att variabeln i NEXT-kommandot inte stämmer överens med den i FOR-kommandot.
NOT INPUT FILE
Ett försök att göra INPUT eller GET till en fil som öppnats för enbart skrivning.
NOT OUTPUT FILE
Ett försök har gjorts att använda PRINT till en fil som öppnats enbart för läsning.
OUT OF DATA
Ett READ-kommando utförs utan att det finns data kvar som är oläst.
OVERFLOW
Resultatet av en operation är större än det största tal som tillåts, vilket är 1.70141884E+38
REDIM'D ARRAY
En matris kan bara dimensioneras en gång. Om en matrisvariabel används innan den dimensioneras sker en automatdimensionering och sätter antalet element till 10 och ett efterföljande DIM-kommando orsakar detta fel.
REDO FROM START
Text skrevs in i ett INPUT-kommando där det förväntades ett numeriskt värde. Skriv bara om ditt svar så fortsätter programmet av sig själv.
STRING TOO LONG
En sträng får inte vara längre än 255 tecken.
SYNTAX
Ett kommando är givet som inte C-64an kan förstå. En missad parentes eller ett felstavat kommando.
TYPE MISMATCH
Detta förekommer när en sträng skrivs istället för en numerisk variabel eller tvärtom.
UNDEF'D FUNCTION
En användardefinierad funktion har använts utan att den tidigare har definierats.
UNDEF'D STATEMENT
Ett försök att göra ett GOTO, GOSUB eller ett RUN-kommando till en programrad som inte finns.
VERIFY
Program på band eller diskett stämmer inte överens med det i C-64ans minne.

M. MUSIKTONERS POKE-VÄRDEN

Denna bilaga innehåller en komplett lista på NOT#(nummer), notbeteckningar och de värden som ska POKEas in i "ljudchipet's" HÖG- och LÅG-frekvensregister för att skapa önskad ton
NOT#NOT-OKTAVHÖG FREKVENSLÅG FREKVENS
0 C-0 1 18
1 C#-0 1 35
2 D-0 1 52
3 D#-0 1 70
4 E-0 1 90
5 F-0 1110
6 F#-0 1132
7 G-0 1155
8 G#-0 1179
9 A-0 1205
10A#-0 1233
11B-0 2 6
12C-1 2 37
13C#-1 2 69
14D-1 2104
15D#-1 2140
16E-1 2179
17F-1 2220
18F#-1 3 8
19G-1 3 54
20G#-1 3103
21A-1 3155
22A#-1 3210
23B-1 4 12
24C-2 4 73
25C#-2 4139
26D-2 4208
27D#-2 5 25
28E-2 5103
29F-2 5185
30F#-2 6 16
31G-2 6108
32G#-2 6206
33A-2 7 53
34A#-2 7163
35B-2 8 23
36C-3 8147
37C#-3 9 21
38D-3 9159
39D#-3 10 60
40E-3 10205
41F-3 11114
42F#-3 12 32
43G-3 12216
44G#-3 13156
45A-3 14107
46A#-3 15 70
47B-3 16 47
48C-4 17 37
49C#-4 18 42
50D-4 19 63
51D#-4 20100
52E-4 21154
53F-4 22227
54F#-4 24 63
55G-4 25177
56G#-4 27 56
57A-4 28214
58A#-4 30141
59B-4 32 94
60C-5 34 75
61C#-5 36 85
62D-5 38126
63D#-5 40200
64E-5 43 52
65F-5 45198
66F#-5 48127
67G-5 51 97
68G#-5 54111
69A-5 57172
70A#-5 61126
71B-5 64188
72C-6 68149
73C#-6 72169
74D-6 76252
75D#-6 81161
76E-6 86105
77F-6 91140
78F#-6 96254
79G-6 102194
80G#-6108223
81A-6 115 88
82A#-6122 52
83B-6 129120
84C-7 137 43
85C#-7145 83
86D-7 153247
87D#-7163 31
88E-7 172210
89F-7 183 25
90F#-7193252
91G-7 205133
92G#-7217189
93A-7 230176
94A#-7244103

FILTERINSTÄLLNINGAR

Adress Innehåll
54293 Undre gränsfrekvens (0-7)
54294 Övre gränsfrekvens (0-255)
54295 Resonans (bit 4-7)
Filter stämma 3 (bit 2)
Filter stämma 2 (bit 1)
Filter stämma 1 (bit 0)
54296 Högpass (bit 6)
Bandpass (bit 5)
Lågpass (bit 4)
Volym (bit 0-3)

N. BILAGA N

LITTERATURFÖRTECKNING

handic Programmeringshandbok, 3 delar
Förlagsgruppen BASIC på C 64
Förlagsgruppen Grafik och ljud på C 64
Förlagsgruppen System - 64
Förlagsgruppen Grafisk konst
Förlagsgruppen Avancerad programmering
Förlagsgruppen Matematik på C 64
Förlagsgruppen Comal på C-64, lärobok för nybörjare

O. BILAGA O

SPRITEREGISTERKARTA

Register#          
DecHexDB7DB6DB5DB4DB3DB2DB1DB0 
0 0 S0X7      S0X0SPRITE 0 X Komponent
1 1 S0Y7      S0Y0SPRITE 0 Y Komponent
2 2 S1X7      S1X0SPRITE 1 X
3 3 S1Y7      S1Y0SPRITE 1 Y
4 4 S2X7      S2X0SPRITE 2 X
5 5 S2Y7      S2Y0SPRITE 2 Y
6 6 S3X7      S3X0SPRITE 3 X
7 7 S3Y7      S3Y0SPRITE 3 Y
8 8 S4X7      S4X0SPRITE 4 X
9 9 S4Y7      S4Y0SPRITE 4 Y
10 A S5X7      S5X0SPRITE 5 X
11 B S5Y7      S5Y0SPRITE 5 Y
12 C S6X7      S6X0SPRITE 6 X
13 D S6Y7      S6Y0SPRITE 6 Y
14 E S7X7      S7X0SPRITE 7 X Komponent
15 F S7Y7      S7Y0SPRITE 7 Y Komponent
1610 S7X8S6X8S5X8S4X8S3X8S2X8S1X8S0X8MSB of X COORD.
1711 RC8 ECM BMMBLNKRSELYSCL2YSCL1YSCL0Y SCROLL Mode
1812 RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0RASTER
1913 LPX7      LPX0Ljuspenna X
2014 LPY7      LPY0Ljuspenna Y
2115 SE7       SE0SPRITE ENABLE (ON/OFF)
2216 N.C.N.C. RST MCMCSELXSCL2XSCL1XSCL0SCROLL/MODE
2317 SEX7      SEX0SPRITE EXPAND Y
2418 VS13VS12VS11VS10CB13CB12CB11N.C.SCREEN Char Memory
2519 IRQ N.C.N.C.N.C.LPIRQISSCISBCRIRIQInterrupt Request's
261A N.C.N.C.N.C.N.C.MLPIMISSCMISBCMRIRQInterrupt Request MASKS
271B BSP7      BSP0Background Sprite PRIORITY
281C SCM7      SCM0MULTICOLOR SPRITE SELECT
291D SEXX7      SEXX0SPRITE EXPAND X
301E SSC7      SSC0Sprite-Sprite COLLISION
311F SBC7      SBC0Sprite-Background COLLISION
  FÄRGKODER       
  DECHEXFÄRG      
3220 0 0 BLACK EXT 1   EXTERIOR COL
3321 1 1 WHITE BKGD0   BACKGROUND 0
3422 2 2 RED BKGD1   BACKGROUND 1
3523 3 3 CYAN BKGD2   BACKGROUND 2
3624 4 4 PURPLE BKGD3   BACKGROUND 3
3725 5 5 GREEN SMC 0    SPRITE MULTICOLOR 0
3826 6 6 BLUE SMC 1    SPRITE MULTICOLOR 1
3927 7 7 YELLOW S0COL   SPRITE 0 COL
4028 8 8 ORANGE S1COL   SPRITE 1 COL
4129 9 9 BROWN S2COL   SPRITE 2 COL
422A 10 A LT RED S3COL   SPRITE 3 COL
432B 11 B GRAY 1 S4COL   SPRITE 4 COL
442C 12 C GRAY 2 S5COL   SPRITE 5 COL
452D 13 D LT GREEN S6COL   SPRITE 6 COL
462E 14 E LT BLUE S7COL   SPRITE 7 COL
   15 F GRAY 3      

LEGEND: ONLY COLORS 0-7 MAY BE USED IN MULTICOLOR CHARACTER MODE.

P. BILAGA P

COMMODORE 64 LJUDREGISTER

Denna tabell ger dig de viktiga värdena du behöver använda i dina ljudprogram, beroende på vilka av Commodore 64s stämmor du vill använda. För att sätta eller ändra ljudkontrollvärde i ditt BASIC-program, behöver du endast POKEa en adress från tabellens andra kolumn följt av ett komma(,) och ett värde från tabellen...så här: POKE 54296,17 (välj triangelvåg åt stämma 1).

Kom ihåg att att du måste sätta på VOLYM innan du kan generera ljud. POKE 54296 följt av ett tal från 0 till 15 sätter gemensam volym för samtliga stämmor.

Det krävs 2 separata POKEs för att generera varje musikton. Exempelvis: POKE 54273,34: POKE 54272,75 skapar låga C enligt skalan på sidan 153.

Dessutom är du inte begränsad av de tal som står i tabellen. Om 34 inte låter "rent" för ett lågt C kan du prova 35. För att möjliggöra ett högre attack- eller sustain-förhållande än vad som visas, kan du addera två eller flera SUSTAINvärden tillsammans. Exempelvis: POKE 54277,96 kombinerar två attackförhållande (32 och 64) för att ge ett kombinerat högre värde.

[Ljudregister, del 1]
[Ljudregister, del 2]

FÖRKLARING AV LJUDTERMER
ADSR -- Attack/Decay/Sustain/Release
Attack -- Tiden till ljudet når sin högsta styrka
Decay -- Tiden för ljudet att falla till sustainnivå
Sustain -- Förlänga tonen på en speciell nivå
Release -- Tiden för ljudet att avta från sustainnivå
Vågform -- "Formen" på ett ljud
Puls -- Tonkvalitet på pulsvågform

OBS. Attack/Decay- och Sustain/Release-inställningarna ska alltid POKEas i programmet INNAN vågformen POKEas in.

[ ← Föregående | Innehållsförteckning ]
[HTML 4.01]
Peter Krefting / $Date: 2009-08-13 18:55:29 $ / peter@softwolves.pp.se