BILAGOR

C. BILAGA C:

Commodore 64 BASIC

Denna handbok har hittills introducerat för dig ett fåtal kommandon i språket BASIC. Du vet litet om programmering och hur program ser ut. l denna bilaga finns en komplett lista på alla regier (dvs den SYNTAX) som gäller för de olika BASIC-kommandona, plus en beskrivning av vad de utför. Du rekommenderas an experimentera med alla kommandon för att komma ihåg att du inte kan skada din C-64 genom att skriva program. Det bästa sättet att lära sig är att undersöka saker.

Denna bilaga har delats upp i fyra olika delar. Dessa delar är:

  1. Variabler och operationer: beskriver olika typer av variabler och de olika aritmetiska och logiska operationer som kan göras på dessa.
  2. Kommando: beskriver de kommandon som används för att arbeta med programmen, editera, spara och radera dem.
  3. Programinstruktioner: beskriver de kommandon som används i programmen.
  4. Funktioner: beskriver sträng- och numeriska utskriftsfunktioner.

I varje sektion finner du kommandona listade i bokstavsordning. En komplett beskrivning av alla BASIC-kommandon finner du i C-64ans programmeringshandbok. Den finns där du köpte din dator.

1. VARIABLER OCH OPERATIONER

a. Variabler

C-64an använder tre typer av variabler i BASIC. Dessa är: decimaltal, heltal och strängvariabler.

DECIMALTAL är numeriska variabler inom området 10E-38 till 10E+38 med en noggrannhet av nio siffror. När talet blir längre än 9 siffror skrivs det ut i exponentform: Ett tal med en siffra och 8 decimaler följt av ett E och ett tal som är 10-exponenten av talet. Till exempel, kommer talet 123456789001 att skrivas som 1.2345689E+11.

HELTAL är variabler för tal inom intervallet -32768 till 32767, utan decimaler. En heltalsvariabel kräver mindre plats i minnet. Skillnaden är inte värd att lägga märke till om du inte har stora mängder med variabler i så kallade matriser. Exempel på heltal är 5, 10 och -103.

STRÄNGAR eller TEXTSTRÄNGAR används för att lagra tecken av olika slag, bokstäver, siffror eller andra tecken som VIC kan skriva ut. Ett exempel på en strängvariabel är "Commodore 64".

Ett variabelnamn kan bestå av en eller två bokstäver eller också av en bokstav följt av en siffra. Egentligen kan det vara längre, men datorns Basic "ser" bara de två första tecknen.

En heltalsvariabel specificeras genom att variabelnamnet följs av ett %-tecken. Strängvariabler har ett $-tecken som sista tecken i namnet.

EXEMPEL:
Namn på: A, A5, BZ
Namn på heltal: A%, A5%, BZ%
Namn på strängar: A$, A5$, BZ$

MATRISER används för att samla ihop en större mängd variabler under samma namn. Detta gör man genom att använda ett antal extra siffror i variabelnamnet. Vilken typ av variabel och hur många anges i DlM-kommandot. Alla typer av variabler kan användas. Efter DlM-kommandot anges variabelnamnen och inom parentes hur många variabler de får innehålla.

EXEMPEL: DIM A(7), BZ%(11), A$(87)

Matriserna kan ha mer än en dimension. En tvådimensionell matris kan ses som en tabell med rader och kolumner där första siffran innanför parentesen anger raden och den andra kolumnen.

EXEMPEL: DIM A(7,2), BZ%(2,3,4), Z$(3,2)

Det finns tre variabelnamn som är reserverade för C-64ans interna bruk och normalt inte kan användas. Dessa variabler är ST, TI och TI$. ST är en status(läges)variabel för kommandon som berör in/ut-operationer. Värdet på ST kommer till exempel att ändra sig när det är problem med en programladdning från kassettband eller flexskivminne. En mera detaljerad beskrivning av ST finns i programmeringshandboken för C-64an.

TI OCH TI$ är variabler som berör den inbyggda klocka som finns i C-64an. Variabeln TI ökas med 1 varje 1/60 sekund. Den börjar på noll när din C-64 slås på. Värdet kan endast ändras genom att förändra värdet i TI$.

TI$ är en sträng som kontinuerligt uppdateras av systemet. De första två tecknen innehåller antalet timmar, det tredje och fjärde antalet minuter och det femte och sjätte antalet sekunder. Denna variabel kan ges ett annat värde (så länge tecknen är siffror) och kommer automatiskt att uppdateras från detta tal.

EXEMPEL: TI$ = "101530" ställer klockan till 10:15:30.

Klockan nollställs när datorn slås på.

b. OPERATIONER

De aritmetiska operationerna anges med följande tecken:
+addition
-subtraktion
*multiplikation
/division
exponentiering eller potensupphöjning

På en rad som innehåller flera utförs operationerna i en bestämd ordning. Om flera operatorer används tillsammans ger datorn följande prioritetsordning på dem: Först exponering, sedan multiplikation och division, och sist addition och subtraktion. Om du vill att operationerna skall ske i en viss ordning, tillåter C-64ans BASIC att du isolerar en beräkning genom att omge den med parenteser. Operationer inom parentes görs först av alla. Var noga med att formeln innehåller lika många vänsterparenteser som högerparenteser, annars får du ett "SYNTAX ERROR" när du kör programmet.

Det finns också operatorer för att jämföra två värden:
=lika med
<mindre än
>större än
<= eller =<mindre eller lika med
>= eller =>större eller lika med
<> eller <>inte lika med

Till slut så finns det tre logiska operaturer:
AND
OR
NOT

Dessa används oftast för att lägga ihop flera villkor i ett IF...THEN-kommando.

EXEMPEL:
IF A=B AND C=D THEN 100både A=B och C=D skall vara sanna.
IF A=B OR C=D THEN 100någon av A=B eller C=D skall vara sann.

2. KOMMANDON

CONT (continue = fortsätt)

Kommandot används för att starta upp ett program där programmet blev avbrutet t ex genom att STOP-tangenten trycktes, ett STOP eller END-kommando i programmet. Programmet körs igång på samma ställe där det blev avbrutet.

CONT fungerar inte om du ändrat något i programmet inte ens om du bara flyttat markören upp till en rad och tryckt RETURN utan att ändra någonting i raden. Inte ens om programmet stannades genom ett fel, eller om du gör ett fel innan du kör igång programmet med CONT. I dessa fall svarar C-64an med "CAN'T CONTINUE ERROR".

LIST

LIST-kommandot tillåter att du tittar på de programrader som du skrivit eller laddat in i C-64ans minne. Skriver du LlST-kommandot utan några siffror kommer hela programmet att listas ut på din skärm. (Listningshastigheten kan sänkas genom att trycka på CTRL eller stoppas genom att trycka på STOP-tangenten.) Om LIST fölls av ett radnummer listas endast raden med det numret ut. Anges två nummer med ett streck emellan listas alla rader mellan dessa två nummer ut. Skriver du LIST med ett nummer följt av ett streck listas raderna från och med denna rad till programmets slut. Och skriver du LIST med ett streck och ett nummer listas alla rader till och med det numret. Med dessa variationer på kommandot kan du lista vilken del av programmet du vill och få fram raderna på skärmen för att göra ändringar.

EXEMPEL:
LIST Listar hela programmet.
LIST 10- Listar rad 10 till programmets slut.
LIST 10 Listar rad 10.
LIST -10 Listar programmet från början till rad 10.
LIST 10-20 Listar rad 10 till 20.

LOAD

Detta kommando används när du har ett program på kassettband eller flexskiva och vill hämta programmet för att köra det. Om du bara skriver LOAD och trycker RETURN, kommer C-64an att ladda in det första program den hittar på kassettbandet. Programmet kan du sedan köra, lista eller göra vad du vill med. Du kan också skriva LOAD följt av ett programnamn mellan citationstecken. Efter citationstecknet kan du lägga till ett kommatecken och ett tal eller en numerisk variabel som visar varifrån programmet skall laddas. Om inget nummer anges antar C-64an att den skall ladda från enhet nr 1, kassettenheten.

En annan vanlig enhet som program laddas in från är flexskivminnet, enhet nr 8.

EXEMPEL:
LOAD Läser in första programmet från kassettbandet.
LOAD "HEJSAN" Söker efter programmet med namnet "HEJSAN" på kassettbandet och läser in det om den hittar det.
LOAD A$ Söker efter programmet med namnet som finns i A$ och läser in det.
LOAD "HEJSAN",8 Söker efter programmet med namnet HEJSAN" flexskiveminnet.
LOAD "*",8 Laddar in det första programmet på flexskivan.

LOAD-kommandot kan användas i ett program för att ladda in och köra nästa program på bandet.

NEW

Detta kommando raderar hela programmet som ligger i C-64ans minne och nollställer alla variabler som har använts. Om du inte tidigare sparat undan programmet på kassettband eller flexskiva så är ditt program borta för evigt om du inte skriver in det igen. VAR FÖRSIKTIG när du använder detta kommando!

NEW-kommandot kan också användas i programmet. När C-64an kommer fram till detta kommando raderar den allt som finns i minnet och stannar. Detta är bra om man vill lämna allt städat och klart när ett program har körts.

RUN

När du har ett program i minnet och vill köra det, skriver du RUN och C-64an börjar utföra alla kommandon i programmet. Om inget radnummer anges börjar C-64an på raden med det lägsta numret. Om numret finns börjar körningen på det radnumret.

EXEMPEL:
RUN Programmet kör igång från första raden.
RUN 100 Programmet kör igång i rad 100.
RUN X SYNTAX ERROR (Du måste alltid skriva ut numret och inte använda bokstäver.)

SAVE

Detta kommando sparar undan det program som för tillfället finns i C-64ans minne på kassettband eller flexskiva. Skriver du bara SAVE försöker C-64an att spara programmet på kassettbandet. Det finns ingen kontroll att bandet redan innehåller ett program, så var försiktig så inget program går förlorat när du sparar ditt program. Om du anger ett namn efter SAVE-kommandot så skrivs det namnet in på bandet eller flexskivan. Det blir då enklare att hitta programmet när du skall hämta det igen. Efter namnet, mellan citationstecknen, kan du lägga till ett kommatecken och ett nummer eller en variabel. Numret talar om på vilken enhet som programmet skall sparas. Enhet nummer 1 är kassettenheten och nummer 8 är flexskivminnet. Efter det första numret kan det läggas ett kommatecken och ett nummer till, som kan vara 1 eller 2. Om numret är en 2:a skrivs end slut på bandet markering (end of tape) in på bandet. Om C-64an söker efter ett program och finner denna markering så skriv "FILE NOT FOUND ERROR" ut.

EXEMPEL:
SAVE Sparar programmet på kassettband utan namn.
SAVE "HEJSAN" Sparar programmet med namnet HEJSAN på bandet.
SAVE A$ Sparar programmet med namnet som finns i A$.
SAVE "HEJSAN",8 Sparar programmet med namnet HEJSAN på flexskivan.
SAVE HEJSAN",1,2 Sparar programmet med namnet HEJSAN och lägger in en "end of tape" dvs bandslut-markering på bandet.

VERIFY

Detta kommando gör att C-64an går tillbaka och jämför programmet på bandet eller flexskivan med det i minnet. Har programmet utförts utan klagomål så är det ett bevis på att ditt program blev sparat korrekt. Det kunde ha varit ett dåligt band du sparade programmet på. Detta kommando är bra om du vill lägga in ett program på första tomma position på bandet. Vad du gör är att säga åt VIC att jämföra det sista programmet med det i minnet. Detta kommer den att göra och upptäcka att programmen inte stämde överens, vilket du redan visste. Nu är bandet där du vill ha det. Nu kan du spara nästa program utan någon risk att förstöra något annat program.

Enbart VERIFY gör att C-64an jämför det första program den hittar på bandet, oavsett namn, med det som finns i minnet. VERIFY med ett namn eller citationstecken söker efter programmet med det namnet för att jämföra det med minnet. Dessutom kan du lägga till ett kommatecken och ett nummer elkar en variabel som talar om för C-64an vilken enhet den skall söka på (1 för kassettband, 8 för flexskiva).

EXEMPEL:
VERIFY Jämför med nästa program på band.
VERIFY "HEJSAN" Söker efter "HEJSAN" på band, och jämför det med minnet.
VERIFY "HEJSAN",8 Söker efter "HEJSAN" på flexskiva, och jämför det med minnet.

3. PROGRAMINSTRUKTIONER

CLOSE

Detta kommando stänger en fil som du tidigare öppnat med OPEN-kommandot. Det nummer som följer efter kommandot är det filnummer som skall stängas.

EXEMPEL:
CLOSE 2 Endast fil nr 2 stängs.

CLR

Kommandot raderar alla variabler som finns i minnet, men lämnar programmet intakt. Detta kommando utförs automatiskt när du kör i gång programmet (RUN).

CMD

Ändrar den normala utenheten (skärmen) till en annan. Alla PRINT- och LlST-utskrifter kommer istället att göras på den angivna enheten. Denna enhet kan vara en skrivare, kassettenhet, flexskivminne eller något annat. Innan CMD-kommandot utföres måste en fil öppnas till önskad enhet (OPEN). I CMD-kommandot skall anges filnumret som använts i OPEN-satsen.

EXEMPEL:
OPEN 1,4 Öppnar en fil till enhet nr 4 (skrivare).
CMD 1 All normal utskrift går nu till skrivaren.
LIST Listningen av programmet går ut till skrivaren, inte till skärmen - till och med ordet LIST.

För att få tillbaka utskriften till skärmen, stäng bara filen, men observera att före CLOSE-satsen måste skrivas en PRINT#-sats till den aktuella filen.

DATA

Kommandot följs av en lista med data som används av kommandot READ. Data kan vara numeriska variabler eller text och separeras med kommatecken. Text behöver inte omges av citationstecken, om inte texten innehåller något av följande tecken: Blanktecken, kolon, kommatecken. Om det finns två kommatecken utan någonting mellan dem, tas det som värdet 0 eller en tom textsträng.

EXEMPEL:

DATA 100,100,FRED,"HEJ MAMMA",,3.14,ABC123

Eftersom DATA-kommandot inte behöver utföras för att data skall bli läsbar, så är det en god idé att lägga alla DATA-kommandon sist i programmet. Detta gör att ditt program går fortare att köra.

DEF FN

Med detta kommando kan du definiera en komplex funktion som du sedan kan anropa i programmet på ett enkelt sätt. Så här kan mycket plats sparas i programmet om det innehåller samma beräkning flera gånger.

Funktionens namn blir FN plus ett variabelnamn (1 eller 2 tecken). Först måste funktionen definieras genom att du skriver DEF följt av funktionsnamnet. Efter namnet följer ett par med parenteser med en variabel innanför (i exemplet ett X). Därefter kommer likhetstecknet och formeln för funktionen. När du vill använda funktionen byter du ut X mot det aktuella värdet, som i rad 20 i exemplet nedan:

EXEMPEL:

  10 DEF FNA(X)=12*(34.75-X/.3) ←- Asterisk används som
                          ↑        multiplikationstecken
  20 PRINT FNA(7) ←-------+- Talet 7 byts mot X i formeln

DIM

Innan du kan använda matrisvariabler som har fler än 11 variabler, måste ett DlM-kommando utföras för matrisvariabeln. DlM-kommandot följs av variabelnamnet på matrisen (ett normalt variabelnamn, 1 eller 2 tecken). Efter namnet kommer två parenteser med värden (eller numeriska variabler) innanför, som betecknar antalet variabler i varje dimension. Antalet dimensioner är inte begränsat, men kom ihåg att minnesutrymmet inte räcker till för hur stora matriser som helst. För att beräkna antalet variabler som ett DlM-kommando skapar så multiplicerar du antalet element i varje dimension i matrisen.

EXEMPEL:

  10 DIM A$(40),B7(15),CC%(4,4,4)  ← 125 element
           ↑       ↑
   41 element    16 element

Du kan dimensionera fler matriser i samma DlM-kommando genom att separera dem med kommatecken. Om programmet försöker att utföra ett DlM-kommando på samma variabel mer än en gång, får du ett felmeddelande. Det är bäst att placera DlM-kommandot i början på programmet.

END

När C-64an kommer till detta kommando på en rad slutar den att köra programmet precis som om det vore sista raden i programmet. Du kan använda CONT-kommandot för att starta upp programmet igen.

FOR...TO...STEP

Detta kommando används tillsammans med NEXT för att lägga upp en sektion i programmet som skall repeteras ett antal gånger (en loop eller slinga). Du vill kanske bara att C-64an räknar upp till ett högt tal, för att få den att vänta ett tag (tidsfördröjning), eller du kanske vill räkna någonting. Detta är det mest förekommande BASIC-kommandot i programmen.

Uppställningen för kommandot är följande:

FOR (loopvariabel) = (startvärde) TO (slutvärde). Loopvariabel är en helt vanlig variabel som kan ändras under pågående loop. Start och slutvärdet är gränserna för loopvariabeln.

Följande händer vid FOR-kommandot. Loopvariabel tilldelas värdet "startvärde". Slutvärdet lagras undan i C-64an för senare referens. När datorn kommer fram till ett NEXT-kommando, ökar den värdet av loopvariabeln med 1. Variabeln jämförs sedan med slutvärdet. Om loopvariabeln inte är större än slutvärdet hoppar C-64an tillbaka till raden efter FOR-kommandot. Är loopvariabeln större fortsätter C-64an med nästa rad efter NEXT-kommandot.

EXEMPEL:

  10 FOR L=1 TO 10
  20 PRINT L
  30 NEXT L
  40 PRINT "FÄRDIG! L="L

Detta program skriver ut talen från 1 till 10 på skärmen följt av meddelandet "FÄRDIG! L=11". Förstår du hur det fungerar? Om inte, läs då igenom texten och följ med i programmet steg för steg.

Slutvärdet kan följas av ordet STEP och ett värde eller en variabel. I detta fall kommer C-64an att använda värdet och addera till loopvariabeln vid NEXT-kommandot (istället för 1). Detta gör det möjligt att räkna baklänges eller med decimaler.

Du kan lägga upp slingor inuti en annan slinga. Detta kallas för kapslade slingor. Du skall vara försiktig vid kapslade slingor och komma ihåg att den första slingan slutar sist.

EXEMPEL:

  10 FOR L=1 TO 100
  20 FOR A=5 TO 11 STEP 2  ←+- Denna FOR...NEXT-loop är nästlad innanför
  30 NEXT A   ←-------------'  den större
  40 NEXT L
Felaktigt:
  10 FOR L=1 TO 100
  20 FOR A=5 TO 11 STEP 2
  30 NEXT L
  40 NEXT A

GET

GET-kommandot används för att läsa data från tangentbordet, ett tecken i taget. När GET-kommandot utföres läses det tecken som trycks på tangentbordet in. Har ingen tangent tryckts ned, fås ett "tomtecken" tillbaks. RETURN-tangenten behöver inte tryckas ned för att inläsning skall ske (jämför INPUT). RETURN kan också läsas av.

Efter ordet GET så följer ett variabelnamn, vanligen en strängvariabel. Används en numerisk variabel kommer C-64an att svara med ett felmeddelande (om någon annan än en siffertangent trycks ned). GET används mest för att konstruera en slinga som väntar på att en tangent skall tryckas ned.

EXEMPEL:

  10 GET A$:IF A$="" THEN 10 ←--- Denna rad väntar på att en tangent ska
                                  tryckas ned. Trycks någon tangent
                                  fortsätter programmet.

GET#

Används tillsammans med en tidigare öppnad fil (OPEN) för att läsa in ett tecken i taget.

EXEMPEL:

  GET#1,A$

GOSUB

Detta kommando gör likadant som GOTO men den kommer dessutom ihåg var den kom ifrån. När C-64an kommer till en rad med kommandot RETURN, så hoppar den tillbaka till raden efter det senaste GOSUB-kommandot. Detta är användbart om du vill ha samma programsektion utförd på flera ställen i programmet. Istället för att upprepa programsektionen på varje ställe så läggs GOSUB-kommandot in med ett efterföljande radnummer, som visar var programsektionen ligger. GOSUB 800 betyder att C-64an hoppar till rad 800 och fortsätter programkörningen där.

GOTO eller GO TO

När C-64 kommer till ett GOTO-kommando, hoppar den till raden som anges efter kommandot.

IF...THEN

IF...THEN-kommandot gör det möjligt för C-64an att analysera en situation och välja en av två möjliga vägar. Om uttrycket som beräknas blir sant (dvs <>0), utförs ordet som står efter THEN. Ordet kan vara ett tal som C-64an då hoppar till. Det kan också vara ett kommando av något slag. Om uttrycket är falskt (dvs >0) fortsätter C-64an på nästa programrad (inte nästa kommando på raden).

Uttrycket som undersöks kan vara en variabel eller en formel, där sant är skilt från noll (<>0) och falskt lika med noll (=0). Ofta används relationsoperanderna i uttrycken (=, <, >, AND, OR, NOT). Om uttrycket är sant blir värdet -1 och falskt 0. Se kapitlet om relationsoperatorer och hur de fungerar.

INPUT

INPUT-kommandot gör det möjligt för C-64an att låta personen som sitter vid tangentbordet skriva in värdet på en variabel. Programmet stannar, skriver ut ett frågetecken och väntar på att personen i fråga skall skriva in svaret och trycka på RETURN-tangenten.

Kommandot följs av ett eller flera variabler separerade med kommatecken. Det kan också förekomma ett meddelande mellan citationstecknen innan variablerna. Detta meddelande (eng.prompt) måste följas av ett semikolon efter sista citationstecknet. Om fler variabler skall skrivas in måste de separeras med kommatecken vid inskriften.

EXEMPEL:

  10 INPUT "SKRIV ETT VÄRDE PÅ A";A
  20 INPUT "OCH DITT NAMN TACK";A$
  30 INPUT B$
  40 PRINT "NU HADE DU INGEN ANING OM VAD JAG VILLE VETA"

INPUT#

Fungerar som INPUT men tar data från en tidigare öppnad (OPEN) fil.

LET

Ordet LET används mycket sällan i program, eftersom det inte har någon praktisk betydelse, men det är faktiskt grunden till alla BASIC-program. Variabeln som skall få resultatet av beräkningen finns på vänstra sidan av likhetstecknet medan formeln och värdena finns på den högra.

EXEMPEL:

  10 LET A=5
  20 B=6
  30 C=A*B+3
  40 D$="HEJSAN"

NEXT

NEXT-kommandot används alltid tillsammans med FOR-kommandot. När programmet kommer till ett NEXT-kommando går det tillbaka till FOR-kommandot för att kontrollera slingan. (Se FOR-kommandot för mera information.) Om slingan är slut fortsätter programmet till nästa kommando efter NEXT. NEXT kan följas av ett variabelnamn eller flera variabelnamn separerade med kommatecken. Om inget variabelnamn anges utförs den senast påbörjade slingan. Om flera variabler anges utförs de från vänster till höger.

EXEMPEL:

  10 FOR L=1 TO 10:NEXT
  20 FOR L=1 TO 10:NEXT L
  30 FOR L=1 TO 10:FOR M=1 TO 10:NEXT M,L

ON

Detta kommando gör GOTO och GOSUB till specialvarianter av IF-kommandot. Ordet ON följs av en formel som ger ett värde. Efter ordet GOTO eller GOSUB följer en lista med radnummer skilda åt med kommatecken. Om resultatet av beräkningen blir 1, hoppar programmet till det första radnumret i listan. Är resultatet 2 hoppar den till det 2:a radnumret. Om resultatet är negativt, 0 eller större än antalet radnummer i listan, hoppar programmet till raden efter ON-kommandot.

EXEMPEL:

  10 INPUT X
  20 ON X GOTO 10,50,50,50
  30 PRINT "NäHä"
  40 GOTO 60
  50 PRINT "HÄPP!"
  60 ON X GOTO 10,30,30

OPEN

OPEN-kommandot gör att C-64an kan kommunicera med andra enheter såsom kassettenhet, flexskivminne, skrivare eller skärmen. Ordet OPEN följs av ett nummer som övriga BASIC-kommandon refererar till. Detta nummer är mellan 1 och 255. Efter det första numret kommer ett andra separerat med kommatecken. Detta är enhetsnumret, 0 för tangentbordet, 1 för kassettenheten, 2 för RS232, 3 för bildskärm, 4 för skrivare och 8 för flexskivminne. Det är bäst att använda samma filnummer som enhetsnummer, det blir lättare att hålla reda på filerna då. Efter det andra numret kan ett kommatecken och ett tredje nummer förekomma, vilket är sekundäradressen. Detta talar om för kassettenheten om den ska skriva eller läsa. 0 för läsning, 1 för skrivning och 2 för skrivning med "end of tape"-markering på slutet. Är enheten flexskivminne så betyder numret ett visst buffer- eller kanalnummer. I skrivaren betyder numret olika kommandon. (Se C-64ans programmeringshandbok för mera detaljer om detta.) Efter det tredje numret kan det dessutom finnas en sträng med text som ger ett kommando till flexskivminnet eller ger ett programnamn på kassetten.

EXEMPEL

  10 OPEN 1,0        Öppnar en fil till skärmen.
  20 OPEN 2,1,0,"D"  Öppnar en fil för läsning på kassettenheten. Filen som
                     den skall söka efter heter "D".
  30 OPEN 3,4        Öppnar en fil till skrivaren.
  40 OPEN 4,8,15     Öppnar kommandokanalen till skivminnet.

Se också: CLOSE, CMD, GET#, INPUT#, PRINT#, systemvariabeln ST och appendix B.

POKE

POKE-kommandot följs alltid av två stycken nummer eller formler. Det första numret är positionen i C-64ans minne. Positionsnumret kan vara mellan 0 och 65000. En del av positionerna kan du använda till att ändra på färg eller ljud som du sett i tidigare kapitel. En del positioner använder C-64an för att hålla reda på progrannet och så vidare. Om du experimenterar med POKE-kommandot kan du säkert få en del intressanta effekter. Om någonting händer och du inte kan stoppa det, är det bara att stänga av datorn eller trycka på STOP och RESTORE.

Det andra numret har ett värde mellan 0 och 255, och placeras i den position som angavs i det första numret.

EXEMPEL:

  10 POKE 36879, 8
  20 POKE 9*16↑3+15, 27

PRINT

PRINT-kommandot är det första kommando som de flesta lär sig att använda, men det finns många finesser med kommandot som man får lära sig använda. Tillsammans med PRINT-kommandot kan man ha:

Tecken innanför citationstecken skrivs ut som de är. Namn utanför citationstecken tas för ett variabelnamn och värdet på denna variabel skrivs ut. Funktionernas värden kommer också att skrivas ut. Formateringstecken används för att få en snygg utskrift. Kommat används för att dela in skärmen i fyra delan, medan semikolon inte ger några blanktecken alls mellan utskrifterna. Båda tecknen kan användas sist i kommandot. Detta får då effekten att nästa utskrift skrivs ut som om den fanns på samma rad.

EXEMPEL:

  10 PRINT "HEJSAN"
  20 PRINT "HEJSAN," A$
  30 PRINT A+B
  50 PRINT J;
  60 ? A,B,C,D

Se också: POS()-, SPC()-, TAB()-funktionerna

PRINT#

Det finns några skillnader mellan det vanliga PRINT-kommandot och PRINT#-kommandot. För det första följs kommandot av ett nummer som refererar till en fil som du nyss öppnade (OPEN) till någon enhet. Efter numret kommer ett kommatecken och en lista med de saker som skall skrivas ut. Kommatecknet och semikolonet har samma effekt, de adderar blanktecken. TAB och SPC kan på vissa enheter fungera dåligt.

EXEMPEL:

  100 PRINT#1,"HEJSAN DU!";A$,B$

READ

Detta kommando används för att läsa information från rader med DATA-kommandon och lägga in information i variabler. Du bör se upp med att försöka läsa in text när READ-kommandot vill ha ett numeriskt värde. Om så sker svarar datorn med "TYPE MISMATCH ERROR" (dvs typefel).

REM

REMark (anmärkning) används för att lägga in kommentarer i programmet. Detta gör att den som läser programmet har lättare att förstå vad programmeraren menat med sina kommandon. REM-kommandot påverkar inte på något sätt programmet utom att det blir större. Texten efter kommandot kan vara vilken text som helst, men grafiska tecken ger konstiga resultat. (Se Programmerarens handbok för mera information).

RESTORE

Den pekare, som anger vilket objekt i DATA-kommandot som ligger på tur för att läsas av READ-kommandot, nollställs till det första objektet när detta kommando utförs.. Detta gör det möjligt att läsa om informationen från början. Kommandot RESTORE skall stå ensamt på en rad för sig utan extra text.

RETURN

Detta kommando används alltid tillsammans med GOSUB-kommandot. När C-64an kommer till ett RETURN-kommando hoppar den tillbaka till första kommandot efter GOSUB. Om inget GOSUB-kommando fanns före, svarar den med "RETURN WITHOUT GOSUB ERROR" (dvs ett RETURN utan GOSUB-fel). Ingen extra text på RETURN.

STOP

Detta kommando stannar programmet. C-64an skriver ut, "BREAK IN LINE xxxx" (dvs avbrott på rad xxxx), där xxxx är raden som innehåller STOP-kommandot. Med CONT-kommandot kan programmet startas om igen där det stannade. STOP-kommandot används för att leta fel i program.

SYS

Kommandot följs av ett nummer eller en numerisk variabel i området 0-65535. När C-64an får detta kommando hoppar den ner i minnet och utför det maskinspråksprogram som finns på den angivna adressen. Det påminner om USR-funktionen, men den kan inte överföra parametrar.

WAIT

Kommandot används för att stanna programmet till dess en viss minnesposition ändrar sitt värde på ett specificerat sätt. Ordet WAIT följs av ett nummer som är den position som skall kontrolleras. Därefter kommer ett kommatecken och ett nummer. Det kan även finnas ännu ett kommatecken och ett tredje nummer. Dessa två sista nummer måste vara inom området 0-255.

På innehållet i minnespositionen görs först en exklusive-OR med det tredje numret om det finns, sedan görs AND med det andra numret. Om resultatet är 0 går C-64an tillbaka och kontrollerar innehållet igen. Är resultatet inte 0 fortsätter programmet till nästa kommando.

4. FUNKTIONER

a. NUMERISKA

ABS(X)

Du får tillbaka absolutvärdet av talet, utan tecken. resultatet är alltid positivt.

ATN(X)

Ger vinkeln i radianer, vars tangent är X, (dvs arcus tangens för X).

COS(X)

Ger cosinus för vinkel X i radianer.

EXP(X)

Ger värdet av den matematiska konstanten e (2.71827183) upphöjd med X.

FNXX(X)

Ger värdet av den användardefinierade funktionen XX skapad genom FNXX-kommandot.

INT(X)

Ger ett avkortat värde av X, det vill säga utan decimaler. Resultatet blir alltid mindre eller lika med värdet av X. Detta gäller även negativa tal.

Om INT-funktionen används för att avrunda uppåt eller nedåt ser formeln ut så här.

EXEMPEL:

  X = INT(X*100+.5)/100  Avrundar till närmaste öre.
LOG(X)

Ger den naturliga logaritmen av X. Naturliga logaritmen har basen e (Se EXP(X)). För att konvertera till bas 10 så dividerar du med LOG(10).

PEEK(X)

Detta används för att ta reda på innehållet i minnespositionen X (X=0-65535). Resultatet blir 0-255. Denna funktion används ofta tillsammans med POKE-kommandot.

RND(X)

Denna funktion ger som resehat ett slumptal mellan 0 och 1. Detta är användbart i spel, där du vill simulera tärningskast eller olika utfall. Det kan också användas i vissa statistiska sammanhang. Det första slumptalet bör genereras genom formeln RND(-TI), så att det första värdet blir olika varje gång. Efter detta bör värdet X vara 1 eller något positivt värde. Om X är 0 blir resultatet samma som föregående slumptal. Ett negativt värde sätter ett nytt "frö" i slumpgeneratorn. Användningen av samma negativa tal ger samma sekvens av slumptal.

För att simulera ett tärningskast använd formeln INT(RND(1)*6+1). Först multipliceras slumptalet från 0-1 med 6 och intervallet utökas till 0-6 (större än 0 och mindre än 6). Addering med 1 ger 1-7. INT-funktionen tar bort alla decimaler och kvar finns ett heltal mellan 1 och 6.

För att simulera 2 tärningar adderar du värdet från två stycken slumptal enligt ovanstående formel.

EXEMPEL:
100 X=INT(RND(1)*6)+ INT(RND(1)*6) Simulerar två tärningar
100 X=INT(RND(1)*1000)+1 Ett heltal från 1-1000.
100 X=INT(RND(1)*150)+100 Ett heltal från 100-249.

SGN(X)

Ger tecknet på värdet X, om det är positivt, negativt eller lika med 0. Resultatet blir +1 om positivt, 0 om noll och -1 om negativt,

SIN(X)

Ger sinus av vinkeln X. Vinkel X anges i radianer.

SQR(X)

Ger kvadratroten ur värdet X. Om X är positivt. Om X är negativt svarar datorn med "ILLEGAL QUANTITY ERROR".

TAN(X)

Ger tangenten av X där X är vinkeln i radianer.

USR(X)

När denna funktion används hoppar C-64an till ett maskinspråksprogram vars startadress finns i minnespositionerna 785 och 786. Parametern X överförs till maskinspråksprogrammet, vilken kommer att ge tillbaka ett annat värde. Se C-64ans PROGRAMMERINGSHANDBOK för mera detaljer om detta och maskinspråksprogram.

b. STRÄNGFUNKTIONER

ASC(X$)

Funktionen ger som resultat ASCII-koden för första tecknet i X$.

CHR$(X)

Detta är motsatsen till ASC, den ger tecknet vars ASCII-kod är X.

LEFT$(X$,X)

Ger X stycken tecken av den vänstra delen av X$.

LEN(X$)

Ger antal tecken i X$ (inkluderar blanktecken och symboler).

MID$(X$,S,X)

Ger som resultat X stycken tecken ur strängen X$ med början i det S-te tecknet.

Ger X stycken tecken av den högra delen av X$.

STR$(X)

Ger en sträng som motsvarar den utskrift du får av variabeln X.

VAL(X$)

Denna funktion är motsatsen till STR$. Funktionen omvandlar en sträng till ett numeriskt värde. Strängen söks av från vänster till höger så länge den innehåller numeriskt format. Upptäcker C-64an ett tecken som inte hör dit slutar den att konvertera.

EXEMPEL:
10 X=VAL("123.456") X = 123.456
10 X=VAL("12A13B") X = 12
10 X=VAL("RIUO17") X = 0
10 X=VAL("-1.23.23.23") X = -1.23

c. ÖVRIGA FUNKTIONER

FRE(X)

Denna funktion ger antalet lediga minnespositioner, oavsett värdet på X.

POS(X)

Funktionen visar i vilken kolumn (0-39) nästa utskrift kommer att börja. X kan vara vilket värde som helst och används inte.

SPC(X)

Används i PRINT-kommandot för att skriva ut X stycken blanktecken.

TAB(X)

Används i PRINT-kommandot för att påbörja nästa utskrift i kolumnen X.

[ ← Föregående | Innehållsförteckning | Nästa → ]
[HTML 4.01]
Peter Krefting / $Date: 2009-10-08 13:34:08 $ / peter@softwolves.pp.se