DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦725efbaa8⟧ TextFile

    Length: 15168 (0x3b40)
    Types: TextFile
    Notes: Mikados_K
    Names: »INDFØRIN.K«

Derivation

└─⟦e5337a0bc⟧ Bits:30008987 DDE SPC/1 COMAL programmer: BUD, GR85, LØN
    └─⟦this⟧ »INDFØRIN.K« 

Mikados K File

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.

Full view