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:
REPEAT – UNTIL WHILE – DO – ENDWHILE
sætninger til styring af betingelser og forgreninger som:
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!
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 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 |
Danske fejltekster Indeholder ingen kommandoer
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
splitscreen
bkcshtpcbgfdltpdwindowbaclviewporttextdrawtoborddrawtextplotgrapmovetotextcirclefullsarccleaarclcleaarcrshowtextstylehidd
pu seth
pd rt s background textbackground border textborder graphicscreen textscreen splitscreen fullscreen clearscreen clear showturtle hideturtle
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
identify spritecolor spritepos spritesize hidesprite spriteback spritecollision datacollision priority linksprite
movesprite stopsprite animate moving startsprites spritex spritey spriteinq stampsprite
loadsprite
saveshape
linkfont loadfont keepfont savefont getcharacter putcharacter
| 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
| 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.
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:
Los Angeles 1984
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.
30714 bytes fri til brugerprogrammer. Brug af grafik berører ikke frit lager.
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.
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...