|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 15168 (0x3b40)
Types: TextFile
Notes: Mikados_K
Names: »INDFØRIN.K«
└─⟦e5337a0bc⟧ Bits:30008987 DDE SPC/1 COMAL programmer: BUD, GR85, LØN
└─⟦this⟧ »INDFØRIN.K«
INDFØRING I BRUGEN AF COMAL PÅ MIKRODATAMATSYSTEMET FRA
DANSK DATA ELEKTRONIK.
Det er tanken med denne vejledning at lette overgangen
fra anvendelse af COMAL, BASIC eller andre BASIC-lignende
programmeringssprog på andre datamater, til anvendelse af
COMAL på skolens mikrodatamatanlæg fra Dansk Data Elek-
tronik (DDE). Der er således ikke tale om et materiale
til brug for undervisning i programmering, ligesom mate-
rialet ikke skal erstatte den af DDE leverede manual til
COMAL.
Vejledningen indeholder en behandling af følgende emner i
nævnte rækkefølge, i hvilken vejledningen i øvrigt med
fordel kan læses:
Opstart af maskinen.
Indlæsning af operativsystemet MIKADOS.
Indlæsning af den interaktive fortolker COMAL.
Kommandoer til COMAL.
I forbindelse med programindtastning.
NEW, LIST, OUTPUT P, DELETE, AUTO, RENUMBER, EDIT.
I forbindelse med programafprøvning.
RUN, ESC, CONTINUE, OUTPUT P, LET, PRINT.
Opbevaring og genfinding af programmer på pladelager.
PUT, PUTOLD, GET, MERGE
SAVE, SAVEOLD, LOAD, CHAIN
CAT
Behandling af data opbevaret på pladelager.
Forskellige COMAL-sætningstyper, der typisk adskiller sig
fra BASIC og nogle COMAL-versioner.
OPSTART AF MASKINEN.
Indlæsning af operativsystemet MIKADOS.
Mens kassen med centralenheden og pladedrevene er slukket
(kontakten på bagsiden af centralenheden), sættes pladen
mærket "MIKADOS SYSTEM DISC ...." i drev 1 (nummereret
fra venstre), og drevet lukkes.
Plader isættes altid med det i kanten udskårne hak vend-
ende opad og udad.
Centralenheden tændes, og på en af skærmene udskriver sy-
stemet en oversigt over, hvormeget arbejdslager, der er
tilsluttet centralenheden, hvor det er placeret, og om
det fungerer fejlfrit. Er dette tilfældet skrives nu på
alle tilsluttede tændte skærme:
MIKADOS VERSION ......
Dette markerer, at operativsystemet MIKADOS nu er indlæst
i en del af arbejdslageret, der er fælles for ale skærme,
og er klar til at modtage kommandoer fra de tilsluttede
terminaler. En sådan kommando afgives ved at nedtrykke
tasten "ESC", hvorved tegnet ">" fremkommer på skærmen.
Efter ">" skrives kommandoen, og der trykkes RETURN.
Indlæsning af COMAL.
En af de kommandoer, MIKADOS kan udføre, er at indlæse et
oversat assemblerprogram og begynde at udføre det.
Dette er netop, hvad vi ønsker at gøre, da fortolkeren
COMAL er et sådant program.
Vi sætter nu pladen mærket "COMAL" i drev 1, trykker på
"ESC", skriver:
>COMAL
og trykker RETURN.
Efter et stykke tid er COMAL indlæst i den del af ar-
bejdslageret, der er tilsluttet den kommandoafgivende
terminal. Dette markeres ved, at der øverst på skærmen
skrives:
* * * DDE COMAL VERSION 2.19 * * *
COMAL angiver endvidere, at der kan indtastes kommandoer
eller programlinier, ved at udskrive en stjerne "*".
KOMMANDOER TIL COMAL.
Alle kommandoer til COMAL afgives ved at indtaste komman-
doen efter stjernen og trykke RETURN. Såfremt COMAL ikke
kan genkende kommandoen, eller der er noget andet galt,
vil der i skærmens øverste linie blive skrevet en fejl-
meddelelse.
De i det følgende nævnte kommandoer er forsøgt delt op i
de faser af programmeringen, hvor de hyppigst anvendes.
Alle kommandoer har kun direkte virkning for COMAL-
programmet i det arbejdslager, der er tilknyttet termina-
len.
Programindtastning.
NEW : et eventuelt COMAL-program i arbejdslageret
slettes.
LIST : hele programmet udskrives.
LIST m : linie nr. m udskrives.
LIST m,n : linierne m til n udskrives.
OUTPUT P : en efterfølgende LIST-kommando bevirker ud-
skrift på printeren.
OUTPUT T : terminalen bruges til udskrift (unødvendig).
DELETE m : linie m slettes.
DELETE m,n:linierne m til n incl. slettes.
AUTO : skriver automatisk linienumre efter stjernen
startende med 100 og med spring på 10. Stop-
pes ved at trykke ESC. Ved indtastning af
lange programmer er det en lettelse ikke at
skulle indtaste linienumre.
AUTO m,n : linienumrene starter med linie m og får
spring på n.
RENUMBER : ændrer programmets linienumre, så de starter
med linie 100 og får spring på 10.
RENUMBER m,n: linierne starter med linie 100 og får
spring på n.
EDIT m : linie m bliver hentet frem, så det bliver
ligt at foretage ændringer i den uden at
skrive den om. Hertil bruges pil-op, pil-ned
pil-højre og pil-venstre.
EDIT m,n : linierne m til n hentes frem.
EDIT : linierne hentes frem i stigende nr-orden til
ESC nedtrykkes.
Programafprøvning.
RUN : Alle variable nulstilles, og programmet bli-
ver udført.
RUN m : Alle variable nulstilles, og programmet bli-
ver udført fra linie m.
ESC : et kørende program stoppes ved tryk på ESC.
CONTINUE : Programmets udførelse fortsætter, hvor den
blev stoppet.
CON m : Programmets udførelse fortsætter fra linie m
OUTPUT P : Alle udskrifter fra programmet skrives på
printeren. Dette gælder dog ikke ledetekster
fra INPUT-sætninger.
LET A=17 : Når et program er stoppet med ESC, kan en
variabel tildeles en ny værdi, inden pro-
met sættes til at fortsætte med CONTINUE.
PRINT A : Når programmet er stoppet med ESC, eller med
en fejl, kan værdien af en variabel, eller
et udtryk, udskrives. Denne facilitet er
yderst anvendelig ved fejlfinding i program-
mer.
Opbevaring og genfinding af programmer på pladelager.
For at det skal have nogen mening at udvikle programmer
til en datamaskine, må man kunne gemme disse programmer
til senere brug, også selvom de eventuelt ikke er fær-
dige.
Dette gøres ved at gemme programmet i et område på plade-
lageret, en såkaldt programfil.
En programfil identificeres dels ved navnet, etiketten,
på den plade, den ligger på, dels ved et filnavn. F. eks.
er DDE:COMAL identifikationen af programfilen COMAL
på pladen med etiketten DDE. Både etiket og filnavn inde-
holder højst 8 tegn.
Et COMAL-program kan gemmes på to forskellige måder, nem-
lig dels som tekst, dels på en mere pakket form, såkaldt
binær form. Begge former har deres fordele og ulemper.
Generelt kan man imidlertid sige, at tekstformen er mest
anvendelig under programudvikling, mens den binære form
er fordelagtig ved rutinekørsler med programmerne. Ved
flytning af programmer udviklet i en COMAL-version, til
en ny COMAL-version, bør (skal) tekstformen anvendes.
Når et program i arbejdslageret ønskes gemt på tekstform
i en NY programfil, skrives:
PUT etiket:filnavn
Operativsystemet opretter nu en ny fil med navnet
"filnavn" på pladen med etiketten "etiket", og kopierer
programmet fra arbejdslageret ud på filen.
Når et således gemt program ønskes indlæst i arbejdsla-
geret skrives:
GET etiket:filnavn
Når programmet er indlæst, kan det både ændres og afprø-
ves som beskrevet i forrige afsnit, og det ændrede pro-
gram kan senere gemmes i den SAMME programfil ved kom-
mandoen:
PUTOLD etiket:filnavn
Såfremt en programfil indeholder en programstump gemt på
tekstform, kan denne programstump indsættes i et program,
der allerede er i arbejdslageret, ved kommandoen:
MERGE etiket:filnavn
Hvis de to programstumper indeholder linier med sammen-
faldende linienumre, vil de nyindlæste linier blive de
gældende.
Ønskes programmet gemt på binær form, anvendes kommando-
erne SAVE, LOAD og SAVEOLD i stedet for hhv. PUT, GET og
PUTOLD. MERGE kan ikke anvendes ved binært gemte program-
mer.
Der er imidlertid den fordel ved binært gemte programmer,
at det er muligt fra et program at starte et andet binært
gemt program, nemlig ved brug af kommandoen CHAIN.
Indeholder et program f. eks. linien
1000 CHAIN "DDE:NYTPROG"
vil udførelsen af linie 1000 bevirke, at det igangværende
program stoppes, hvorefter det binært gemte program
NYTPROG indlæses og startes i den første programlinie.
Det er på denne måde muligt f. eks. at lade en hel kæde
af programmer starte hinanden i en programstyret række-
følge.
Det er muligt at få udskrevet en indholdsfortegnelse for
en hel plade, nemlig ved at skrive
CAT etiket
eller, såfremt etiketten ikke kendes
CAT #N
hvor # er tegnet over 3-tallet, og N er nummeret på det
drev, hvor pladen er monteret.
BEHANDLING AF DATA OPBEVARET PÅ PLADELAGER.
Til opbevaring af data på pladelageret anvendes såkaldte
datafiler, der navngives som nævnt under programfiler.
Der skelnes mellem to typer datafiler, nemlig filer med
sekventiel tilgang og filer med direkte tilgang.
CREATE.
Før en datafil kan anvendes, skal den oprettes.
Dette gøres ved kommandoen CREATE, der både kan benyttes
som en COMAL-kommando og som en programlinie. Anvendt som
programlinie skal "etiket:filnavn" dog omgives af " ".
En sekventiel datafil oprettes således:
CREATE etiket:filnavn, antal_sektorer
hvor "antal_sektorer" angiver filens startstørrelse i
sektorer a 256 bytes.
En sekventiel datafil kan udvides maksimalt 60 gange,
hver gang med størrelsen "antal_sektorer".
En direkte datafil oprettes således:
CREATE etiket:filnavn, antal_poster, bytes_pr_post
Datafilen, der ikke senere kan udvides, oprettes med
plads til "antal_poster" poster på hver "bytes_pr_post"
bytes. Den kommer således til at fylde det mindste antal
sektorer a 256 bytes, der kan indeholde
"antal_poster" * "bytes_pr_post" bytes.
OPEN.
Før et program kan læse fra en datafil, eller skrive på
filen, skal den åbnes. Dette gøres ved kommandoen OPEN,
der skal udføres i en programlinie.
Sekventielle og direkte filer åbnes på samme måde, nemlig
med enten kommandoen
10 OPEN "etiket:filnavn", R eller
10 OPEN "etiket:filnavn", W
hvor den første form angiver, at man kun ønsker at læse
(Read-mode) fra filen, mens den anden angiver, at man øn-
sker at ændre filen, skrive på den (Write-mode).
GET.
Til indlæsning af en post fra en datafil bruges kommando-
en GET. Fra en sekventiel fil kan man selvfølgelig kun
indlæse den "næste" post i filen, mens man fra en fil med
direkte tilgang kan indlæse en vilkårlig post ved angi-
velse af dens nummer.
Da der i COMAL ikke findes et egentligt postbegreb i form
af en post-variabel, må en post angives som en liste over
de variable, den tænkes at bestå af.
For at indlæse den næste post fra den sekventielle fil
DDE:ELEVREG, skrives f. eks.:
100 GET "DDE:ELEVREG":ELEVNAVN$,ELEVNR
idet en elevpost tænkes at bestå af en tekstvariabel:
ELEVNAVN$, og en talvariabel: ELEVNR.
Ved indlæsning fra en direkte fil skal man som nævnt an-
give postens nummer i filen. Dette gøres således:
100 GET "DDE:KLASREG",KLASNR:KLASSENAVN$,ANTALELEVER
hvor talvariablen KLASNR indeholder nummeret på den post,
der ønskes indlæst, mens posten består af en tekstvari-
abel: KLASSENAVN$ og en talvariabel: ANTALELEVER.
PUT.
Til skrivning af poster på sekventielle og direkte data-
filer anvendes kommandoen PUT. Denne anvendes på nøjagtig
samme måde som GET, dog er det kun tilladt at anvende PUT
i forbindelse med en datafil, der er åbnet for skrivning,
altså med OPEN "etiket:filnavn", W .
CLOSE.
Når en datafil ikke længere skal anvendes af programmet,
bør den lukkes. Dette gøres med kommandoen CLOSE.
Man kan lukke alle åbne filer med programlinien
100 CLOSE
eller man kan lukke en enkelt fil med programlinien
100 CLOSE "etiket:filnavn"
Det gælder for alle filkommandoerne: CREATE, OPEN, GET,
PUT og CLOSE, når de anvendes i programlinier, at angi-
velsen af "etiket:filnavn" skal omgives af " ", eller
være en tekstvariabel. For eksempel:
10 DIM FIL$(20),KLASSENAVN$(30)
20 FIL$="DDE:KLASREG"
30 OPEN FIL$,R
40 FOR I= 1 TO 10
50 GET FIL$,I:KLASSENAVN$,ANTALELEVER
60 PRINT I;KLASSENAVN$,ANTALELEVER
70 NEXT I
80 CLOSE FIL$
90 END
Programmet åbner filen "DDE:KLASREG", indlæser klasserne
fra nr. 1 - 10 og skriver posterne på skærmen, hvorefter
filen lukkes igen.
FORSKELLIGE COMAL-SÆTNINGSTYPER.
Tildelingssætningen.
I lærebogen er angivet, at COMAL's tildelingsoperator er
:= . I DDE-COMAL skal det blot være = .
Altså IKKE
10 LET ANTAL := ANTAL + 1
men
10 LET ANTAL = ANTAL + 1 .
INPUT-sætningen.
I lærebogen står f. eks.
10 INPUT 'Indtast et tal ':TAL
I DDE-COMAL skrives:
10 INPUT "Indtast et tal ",TAL
^ ^^
Løkker.
I lærebogen gennemgås løkker konstrueret v.hj.a.
WHILE - ENDWHILE sætninger. Denne løkkestruktur undersø-
ger altså, om løkke-fortsættelses-betingelsen er opfyldt
ved INDGANGEN til løkken.
En noget anderledes løkkestruktur kan opnås ved at under-
søge, om løkke-ophørs-betingelsen er opfyldt ved UDGANGEN
fra løkken. Dette gøres ved brug af REPEAT - UNTIL sæt-
ninger. F.eks.
10 ANTAL=0; SUM=0
20 REPEAT
30 INPUT "Indtast et tal ",TAL
40 IF TAL<>0 THEN
50 SUM=SUM+TAL
60 ANTAL=ANTAL+1
70 ENDIF
80 UNTIL TAL=0
90 IF ANTAL=0 THEN
100 GSNIT=0
110 ELSE
120 GSNIT=SUM/ANTAL
130 ENDIF
140 PRINT "Gennemsnit, antal ";GSNIT,ANTAL
150 END
Forgreninger.
Forgreninger i programmet konstrueres ved brug af
IF - THEN sætninger. I hhv. linie 40 - 70 og linie
90 - 130 er vist to forskellige eksempler på disse kon-
struktioner. En tredie mulighed er konstruktionen:
10 IF TAL <> 0 TEN SUM=SUM + TAL .
Der er principielt ikke flere konstruktionsmuligheder,
idet det er tilladt at indlejre en ny IF-THEN-ELSE-ENDIF
konstruktion i de to i eksemplet viste konstruktioner.
F. eks.
10 INPUT TAL
20 IF TAL > 0 THEN
30 PRINT "Tallet er positivt"
40 ELSE
50 IF TAL < 0 THEN
60 PRINT "Tallet er negativt"
70 ELSE
80 PRINT "Tallet er nul"
90 ENDIF
100 ENDIF
Forskellen mellem lærebogens beskrivelse og DDE-COMALs
sætninger er altså, at bogens ELIF-sætninger skal erstat-
tes af en ELSE-sætning og en ny IF-sætning på hver sin
linie, samt at en IF-THEN konstruktion på mere end en
linie altid skal afsluttes med ENDIF.