commodore Comal 80 User guide

Page 1

Comal-80 cartridge VERSION 2.01

Comal-80 er computersproget for alle, der gerne hurtigt vil lære at propgrammere, og for alle, der gerne vil kunne skrive større og bedre computerprogrammer eller undervise i, hvordan man skriver programmer.

Det indeholder de gode egenskaber fra både BASIC, Logo og Pascal. Blandt de mange egenskaber COMAL 80

rummer, er:

  • * COMAL (COMmon Algorithmic Language) er en udvidelse af BASIC med mange af Pascals stærkeste instruktioner.
  • * COMAL 80 er nemt at gå til som BASIC og Logo.
  • * COMAL 80 har de samme brugervenlige omgivelser som BASIC, og mange COMAL-ordrer vil være bekendte for den tidligere BASIC-programmør.
  • * COMAL 80 til Commodore 64 rummer den ligefremme turtle grafik, som lanceredes i Logo-sproget.
  • COMAL 80 yder vejledende hjælp ved fejlindtastninger og indeholder strukturer til håndtering af fejl, som måtte opstå under udførelse af et program.
  • COMAL 80 indbyder til struktureret programmering med gentagelsessætninger som:

REPEAT – UNTIL WHILE – DO – ENDWHILE

sætninger til styring af betingelser og forgreninger som:

  • IF THEN ELIF ELSE ENDIF CASE – OF – WHEN – OTHERWISE – ENDCASE
  • * og værdifulde byggeklodser som prodcedurer og funktioner.
  • * Comal 80 foretager syntaksanalyse under programindtastningen. D.v.s. at en syntaksfejl straks vil afstedkomme en dynamisk fejludskrift. På denne måde kan programmøren f. eks. »spørge« sig frem til den rette syntaks.
  • * COMAL 80 til Commodore 64 indeholder foruden standard COMAL en række pakker (11 stk.), der gør det let for brugeren at udnytte alle de mange avancerede faciliteter, der findes i computeren. Pakkerne er:

DANSK – ENGLISH – SYSTEM – GRAPHICS – TURTLE – SPRITES – FONT – SOUND – PADDLES – JOYSTICS – LIGHTPEN

Pakkerne DANSK og ENGLISH foranlediger udskrift af dansk henholdsvis engelsk tekst ved fejl – eller vejledetekster.

SYSTEM-pakken indeholder en række praktiske kommandoer til styring af printer, diskettestation, programlister etc.

FONT-pakken muliggør opbygningen af et brugerdefineret tegnsæt.

SOUND-pakken letter udnyttelsen af lydkredsen i Commodore 64 og giver desuden mulighed for opbygning af partiturer.

SPRITES-pakken styrer små figurer på grafikskærmen. Flere bevægelsesforløb kan fastlægges og afvikles for ialt otte figurer samtidig.

GRAPHICS- og TURTLE-pakkerne er specielt værd at fremhæve, idet de gør COMAL 80 til Commodore 64 til den første COMAL 80 version med fuld og direkte grafik. GRAPHIC-pakken giver almindelig xy-grafik og TURTLE-pakken indeholder LOGO-kompatible kommandoer. Dette giver helt nye muligheder, ikke mindst i undervisningen i skolerne.

PADDLES-, JOYSTICKS- og LIGHTPENpakkerne letter brugen af henholdsvis paddles, styrepind og lyspen.

COMAL 80 til Commodore 64 leveres med dansk brugervejledning og demonstrationsdiskette. Brugervejledningen er velegnet til undervisning såvel som selvstudium, idet den leder brugeren igennem alle trin fra installationen over de første spæde forsøg på at programmere og frem til den helt erfarne programmørs vigtigste værktøj: referenceog opslagsdelen. Hvor det overhovedet har været muligt, er stoffet uddybet med programlister og illustrationer.

COMAL 80, fremtidens programmeringssprog!

Page 2
0100 DHTR 2.4.78.45.23.-2.56.45.199.43

0110 DHTR 2.0.100.34.-19.34.67.88.4.10

0120

0130 //data hentes ind

0140 DIM Flads(100)

0150 nr# =0

0160 WHILE NOT EOD DO

0170 nr#+1

0180 FERD Flads(nr#)

0190 ENDWHILE

0200

0210 FAGE

0220 PRINT "Usorterede tal:"

0230 udskrift(nr#,Plads())

0240 FFINT

0250 FFINT "Sorterede tal:"

0250 FFINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorterede tal:"

0250 PRINT "Sorteres tal:"

0250 PRINT "Sorteres tal:"

0250 PRINT "Sorteres tal:"

0250 PRINT "Sorteres tal:"

0250 PRINT "Sorteres tal:"

0250 PRINT "Sorteres tal:"

0350 FOR mr#:=1 TO antal DO PRINT tal(nr#).

0350 Val() Sorteres tal:

0410 husk:=a; a:=b; b:=husk "

0420 PROC ombst

0430 PROC boblesortering(antal.REF tal()) CLOSED

0440 PROC boblesortering(antal.REF tal()) CLOSED

0440 PROC boblesortering(antal.REF tal()) CLOSED

0450 Val() Sorteres tal:

0450 PROC mobst

0450 PROE ombst

0450 PROE ombst

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0450 PROE boblesortering(antal.REF tal()) CLOSED

0550 PROE boblesortering(antal.REF tal()) PROE bobl

COMAL fortolkeren sørger selv for, at opstille programmet, således at det under udskrift vil fremstå med tydelig adskillelse mellem de forskellige strukturer. Dette opnås med trinvis indrykning. Det ses i ovenstående eksempel, hvor også underrutinerne, de såkaldte procedurer er tydeligt markerede. Læg også mærke til, at COMAL selv lister alle nøgleord med stort. Disse ting, sammenholdt med f. eks. lange variabelnavne, gør COMAL-programmerne let at læse. Det er især af stor værdi ved senere programændringer.

COMAL gør ikke blot programmeringen lettere. Som det ses herunder, er der mulighed for, at COMAL kan opfange og reagere på operatørfejl. Det gør programmer skrevet i COMAL meget behagelige at arbejde med, idet man ikke kommer ud for »mystiske« systemfejludskrifter.

0100 PROC tal'inPut(linie.Pos.dPos.tekst$,REF tal) 0110 // tal-sikkert inPut 0120 // kun (STOP) afbryder 0130 0140 LOOP 0150 0150 TRAP 0150 PRINT AT linie.Pos: SPC$(LEN(tekst$)+dPos);" *" 0150 INPUT AT linie.Pos: dPos: tekst$: tal 0240 0220 HANDLER 0240 HANDLER 0240 HANDLER 0250 CASE ERR OF 0250 CASE ERR OF 0260 WHEN 20 0270 PRINT AT 24,1: "Tallet var for stort" 0280 WHEN 20 0390 THERWISE 0310 PRINT AT 24,1: "Tallet var for stort" 0320 ENDCASE 0320 ENDCASE IN 1000 NULL 0340 PRINT AT 24,1: SPC$(20) 0350 ENDTAP 0380 ENDLOOP 0390 ENDPROC tal'inPut

COMAL-edi tor kommandoer
AUTO
BASIC
CAT
DEL
DISCARD
DISPLAY
SAVE
SCAN
SETEXEZ
EDIT
ENTER
FIND
LINK
LIST
CON
SIZE
VERIFY
TRACE
LOAD
MAIN
MERGE
RENUM
RUN
NEW
COMAL-80 ng
ABS
AND
APPEND
AT
ATN
BITAND
BITOR
BITYOP
igleord:
CLOSED
COPY
COS
CREATE
CURSOR
DATA
DELETE
DIM
ELSE
END
ENDCASE
ENDFOR
ENDFUNC
ENDIF
ENDLOOP
CASE
CHAIN
CHR$
CLOSE
ERR
ERRFILE
ERRTEXT$
ESC
DIR
DIV
DO
ELIF
MOD
MOUNT
NEXT
NOT
ENDITROE
ENDTRAP
ENDWHILE
EOD
EOF
SELECT
SGN
SIN
SPC$
EXEC
EXIT
EXP
EXTERNAL
FALSE
FILE
FOR
FUNC
NULL
OF
OPEN
OR
ORD
OTHERWISE
OUTPUT
PAGE
SQR
STATUS$
STEP
STOP
STR$
SYS
TAB
TAN
GET$
GOTO
HANDLER
IF
IMPORT
IN
INPUT
INT
PASS
PEEK
POKE
PRINT
PROC
RANDOM
RANDOMIZE
READ
THEN
TIME
TO
TRAP
TRUE
UNIT
UNTIL
USE
INTERRUPT
KEY$
LABEL
LEN
LET
LOG
LOOP
REFF
RENAME
REPEAT
REPORT
RESTORE
RETURN
RND
USING
VAL
WHEN
WHILE
WRITE
ZONE
PI
DANSK-pakke:

Danske fejltekster Indeholder ingen kommandoer

ENGLISH-pakke

Engelske fejltekster Indeholder ingen kommandoer

SYSTEM-pakke setprinter setrecorddelav setpage inkey$ keaywords'in'upper'cas names'in'upper'case quote'mode currow textcolors defkev showkeys settime gettime$ GRAPHICS-pakke: window viewport draw plot moveto circle arc arcl plottext pencolor getcolor fill . background textbackground graphiscreen

fullscreen clearscreen clear showturtle hideturtle turtlesize xcor ycor setxy setheading left right forward back penup pendown home wrap nowrap inq savescreen loadscreen printscreen

TURTLE-pakke:

splitscreen

bkcshtpcbgfdltpdwindowbaclviewporttextdrawtoborddrawtextplotgrapmovetotextcirclefullsarccleaarclcleaarcrshowtextstylehidd

pu seth

pd rt s background textbackground border textborder graphicscreen textscreen splitscreen fullscreen clearscreen clear showturtle hideturtle

Page 3

plottext pencolor textcolor getcolor paint ycor setxy setheading heading left right forward fill

turtlesize xcor back penup pendown home wrap nowrap inq savescreen loadscreen printscreet

SPRITES-pakke: define

identify spritecolor spritepos spritesize hidesprite spriteback spritecollision datacollision priority linksprite

movesprite stopsprite animate moving startsprites spritex spritey spriteinq stampsprite

loadsprite

saveshape

FONT-pakke:

linkfont loadfont keepfont savefont getcharacter putcharacter

SOUND-pakke:

note filtertype
oulse volume
gate env3
oundtype osc3
ringmod frequency
sync setscore
ıdsr playscore
ilterfreq stopplay
esonance waitscore
ilter setfrequency

PADDLES-pakke: paddle

JOYSTICKS-pakke: joystick

LIGHTPEN-pakke:

timeon
delay
accuracy

: offset penon readpen

Udover at være den mest komplette COMAL-fortolker af i dag er COMAL til COMMODORE 64 meget mere end det: Der er indlagt 11 forskellige pakker i COMAL-kapslen. Hver af disse pakker indeholder kommandoer og funktioner, det sætter programmøren og brugeren i stand til på en hidtil uhørt let måde at udnytte de mange fantastiske egenskaber Commodore 64 er udstvret med Pakkebegrebet er indført for stedse at holde COMAL-fortolkeren kompatibel med den fastsatte standard og samtidig give brugeren adgang til selv at kunne tilføje maskinkodeprogrammer i pakkeform. For brugeren og computeren er der altså ingen forskel på, om der anvendes en eller flere af de 11 faste pakker, eller en eller flere pakker frembragt

af programmøren. Det giver en fleksibilitet i programmeringen, der ikke findes i andre programmeringssprog til Commodore 64.

Eksemplet herunder viser et udsnit af de grafik-, plotte- og tegnemuligheder, der ligger i COMAL 80 til COMMODORE 64.

USE graphics fullscreen window(-175,144, -115,95) textstyle(1,2,0,1) pencolor(5)

pencolor(5) ring(0,0) ring(56,0) ring(112,0) ring(28,-25) ring(84,-25)

pencolor(7) plottext(5,40, "OLYMPIC GAMES") plottext(-8,-80, "Los Angeles 1984")

ROC ring(x0,y0) FOR p:=45 TO 53 DO circle(x0,y0,p/2) ENDFOR p NDPROC ring

GRAPHICS example:

OLYMPIC GAMES

Los Angeles 1984

Page 4

SOFT WARE

COMMODORE 64 adskiller sig fra sine artsfæller på mange områder. Men et af de steder, hvor COMMODORE 64 virkelig træder frem, er, når talen falder på lydfrembringelse. Den indbyggede syntheziser åbner således muligheder for lydfrembringelse, der er egentlige professionelle synthezisere værdig. Problemet er blot at kunne programmere den på en let og frem for alt tilgængelig måde. Det er nu muligt med SOUND-pakken i COMAL. Nedenstående eksempel viser, hvor let det er at indtaste noder, som COMAL derefter kan give »liv«. Det er muligt at indprogrammere hele partituret, som COMAL derefter kan afspille som »basgrundsjob«, medens et normalt COMAL-program afvikles.

FONT-pakken tillader brugeren at udstyre sin computer med lige netop det tegnsæt han/hun har brug for.

Det er således muligt, f. eks. at tilføje matematiske eller græske tegn, alt efter opgaven.

Kommandoer til understøttelse af de forskellige former for kontrol- og styrehåndtag er et yderligere bevis for, at COMAL 80 til COMMODORE 64 er fremtidens programmeringssprog.

Tekniske data:

Version: 2.01 (Opadkompatibel med 2.0Y). Programkapsel: 64K ROM.

Hukommelseskapacitet:

30714 bytes fri til brugerprogrammer. Brug af grafik berører ikke frit lager.

Maskinkode:

Navnebaseret maskinkodeinterface med parameteroverførsel. Hukommelseskapacitet: 16K RAM (udover brugerlager), eller 8K/16K eller 32K EPROM. Placeres i sokkel i programkapslen. Autoopstart af EPROM-program mulig.

Medleveres:

Programkapsel. Demonstrationsdiskette. Brugervejledning (300 sider).

commodore data a/s Bjerrevej 67 · 8700 Horsens Telefon 05 - 64 11 55 C. F. Richsvej 103 · 2000 København F Telefon 01 - 88 15 05

AMPER BOGTRYK/OFFSET, HORSENS

Loading...