
Rettelser til fejlmeddelelser.

Jeg har vedlagt C64-fejlmeddelelsesbeskrivelsen og rettet den til i
nogen grad.

Flgende meddelelser skal fjernes:

  Not a simple variable       (s. 5)
  IMPORT error		      (s. 6)
  Array redefined	      (s. 6)
  String not dimensioned      (s. 6)
  15: Bad COMAL code	      (s. 8)
  32: Illegal shape number    (s. 9)
  33: Shape length must be 64 (s. 9)
  34: Illegal sprite number   (s. 9)
  35: Illegal voice	      (s. 10)
  36: Illegal note	      (s. 10)
  74: Checksum error in object file (s. 12)
  75: Memory area protected   (s. 12)
  76: Too many libraries      (s. 13)
  212-215: kasette medd.      (s. 16)


Og flgende meddelelser skal tilfjes:

  navn: Not a label		(s. 6)
  navn: Ukendt etikette

     Der er gjort forsg p at RESTORE til en etikette, der ikke
     findes eller ikke er synlig i det givne virkefelt.


  navn: Wrong dimension 	(s. 6)
  navn: Forkert dimension

     Forsg p at bruge en tabel, men den angivne dimension stemmer
     ikke overens med hvad tabellen er DIMemsioneret til.


  009:	Expression too complex	(s. 8)
	Udtryk for kompliceret

     Kan kun gives af den COMAL-version, der benytter matematik-
     coprocessor. For at ge regnehastigheden, udnyttes at matematik-
     coprocessoren har en stak til otte mellemresultater. Derfor er
     det ikke muligt at udregne udtryk med mere end otte mellemresul-
     tater. Det skal bemrkes, at visse trancendente funktioner
     benytter to til tre mellemresultater.


  012:	Wrong type of DATA constant   (s. 8)
	DATA-konstant har forkert type

     Der er gjort forsg p at lse (READ) et element i en DATA-
     stning over i en variabel af en anden type (eks. tekst til
     numerisk variabel).


  013:	Not-A-Number		      (s. 8)
	Not-A-Number

     Reelle variable kan have vrdier, som ikke er tal. Sdanne vrdier
     kaldes NaN's (Not-A-Number). Hvis en NaN indgr i en beregning,
     gives denne fejlmeddelelse. En NaN kan komme ind i en reel variabel
     enten ved READ FILE eller ved kald af en procedure i en pakke, hvor
     variablen er angivet som en REF-parameter.


  018:	Insufficient memory	      (s. 9)
	Utilstrkkeligt med lager

     Gives hvis der ikke lager til at indlse en EXTERNAL procedure-funktion,
     pakke (ved LINK) eller et program ved PASS. Lageret tages fra Other/Andet-
     omrdet (se SIZE-kommandoen). Dette omrde kan forges ved at formindske
     COMAL's data omrde.


  019:	Nonconformant arrays	      (s. 9)
	Tabeller er forskelligt DIMensioneret

     Fs ved en tabeltildeling, hvor hjre og venstre side tabeller er af
     forskellig strrelse. F.eks. kan man ikke tildele en 3*4 matrix til
     til en 4*4 matrix.


  073:	Parameter must be simple      (s. 12)
	Parameter kan ikke vre en tabel

     Der er angivet en tabel som aktuel parameter til en procedure
     eller funktion, hvor den tilsvarende formelle parameter er en
     simpel variabel (d.v.s. ikke en tabel).


  080:	No DATA statements at label   (s. 13)
	Ingen DATA-stninger ved etikette

     Forsg p at RESTORE til en etikette, som ikke efterflges
     af DATA-stninger.


  107:	There are lines in the destination range  (s. 14)
	RENUM kan ikke overlejre andre linier

     Der er gjort forsg p at flytte en blok af stninger til et andet
     omrde, hvor der allerede er stninger. Dette tillader RENUM ikke.

  208:	Record too long 			  (s. 16)
	Post for lang

     Der er forsgt lst/skrevet ud over enden af en post i en random-fil.

  213:	Drive not ready 			  (s. 16)
	Diskettedrev ikke klar

     Der er ingen diskette i det drev, der refereres til.


  214:	Printer out of paper or not ready	  (s. 16)
	Ikke mere papir eller printer ikke klar


  219:	I/O break				  (s. 16)
	I/O afbrydelse

     En I/O-operation, som kan afbrydes, er blevet afbrudt af
     operatren ved tryk p ctrl-break.


  220:	Path not found				  (s. 16)
	Path ikke fundet

     I et filnavn er angivet en sti (path) til en fil, men stien
     eksisterer ikke.


  221:	Attempt to write on write-protected diskette (s. 16)
	Forsg p at skrive p en skrivebeskyttet diskette


  222:	Attempted to remove current directory	  (s. 16)
	Forsg p at fjerne det aktuelle katalog

     Forsg p at fjerne det aktuelle katalog med RMDIR. Dette
     er ikke tilladt.


  223:	Not same device 			  (s. 16)
	Ej samme enhed

     Forsg p at RENAME en fil til et andet drev.


  224:	Disk full				  (s. 16)
	Disk fuld

     Disken/disketten er blevet fyldt op.





OM PAKKER.


Brug af assemblerkodede rutiner er en integreret del af COMAL-
systemet. Ved designet af faciliteter til anvendelse af
sdanne rutiner, er flgende tre ml forsgt opnet:

  * Assemblerkodede rutiner skal vre lette at anvende, ogs
    for personer uden kendskab til maskinsprog.

  * Adgang til assemblerkodede rutiner skal ske ved brug af
    navne. Herved skjules detaljer ssom addresser.

  * Assemblerkodede rutiner skal kunne pvirkes af kommandoer
    som NEW eller RUN. Herved opnr man, at disse ser ud som
    om de er en del af COMAL-systemet.

Assemblerkodede rutiner programmeres v.hj.a. COMAL-systemets
pakke-facilitet. Der er tre kommandoer/stninger i COMAL,
som anvendes ved definition, brug og sletning af pakker.
Der er tale om:

  LINK <filnavn>	Indlsning af modul-fil.
  USE <pakke>		Definer procedurer og funktioner.
  DISCARD		Slet alle moduler.

Disse kommandoer (USE kan ogs anvendes som programstning)
vil blive forklaret nrmere. Assemblerkodede rutiner
anvender procedure- og funktionskaldsmekanismen i COMAL,
og tillader derved alle parametertyper.


MODULER

LINK-kommandoen henter et assemblerkodet maskinsprogsmodul, som
genereres med assembleren, LINKeren og EXE2BIN. Dette modul
indeholder information, som specificerer pakker, procedurer,
funktioner og maskinkode. Standard filnavnsextension for
moduler er .PKG.

Eksempel:

  LINK "test"           indlser TEST.PKG


Nr SIZE-kommandoen gives, fs f.eks. denne udskrift:

  SIZE
		Brugt	 Frit
  Program :	    0	64240
  Variable:	    0	64100
  Andet   :	    0	43324

Lageret er delt op i tre omrder, nemlig programlager, variabellager
og andet lager. Andet-omrdet anvendes til moduler og til lager
for PASS-stningen. Hvis der er 0 bytes frit i andet-omrdet,
m man begrnse programlager eller variabellageret, hvis man
nsker at LINKe moduler.

COMAL kan styre et vilkrligt antal moduler ad gangen. Der er
altid defineret mindst et modul. Dette modul indeholder
SYSTEM-pakken og indlses altid sammen med COMAL-
systemet. Det skal alts ikke LINKes p noget program.
Desuden kan moduler specificeres i en environmentstreng,
sledes at disse lses ind ved opstart af COMAL. Disse
moduler fr da samme status som SYSTEM, d.v.s. de skal
ikke LINKes. Environmentstrengen sttes fra DOS ved f.eks.

  SET comalpkg=\graph88
  SET comalpkg=A:mypack, A:sound, A:rs232


Moduler kan slettes igen v.hj.a. DISCARD-kommandoen. Dog
kan modulet, der indeholder SYSTEM-pakken eller moduler,
der er angivet i COMALPKG-strengen, ikke slettes.
Da moduler ikke har navne, kan man ikke slette et bestemt
modul, men vil altid slette alle moduler. Moduler kan gres
permanente, hvis de specificeres i COMALPKG-environment-
strengen. Disse moduler indlses da sammen med COMAL-systemet.
Ikke-permanente (LINKede) moduler opfattes som om de er en del af
det aktulle COMAL-program. Ved SAVE gemmes alle ikke-perma-
nente moduler sammen med COMAL-programmet i den samme .CML-
fil. Ved LOAD <filnavn>, RUN <filnavn>, CHAIN <filnavn>
eller ved kald af en EXTERNAL procedure eller funktion
lses de ind igen (LINKes).

Udover at fjerne moduler fra hukommelsen, sletter DISCARD
alle variable fra det aktuelle program og gr alle navne
ukendte. Dette gr at procedurer i moduler ikke kan kaldes
efter DISCARD.

USE-stningen gr de procedurer og funktioner, der er i det
angivne modul, kendte, d.v.s. de kan herefter kaldes. Det
skal bemrkes, at hvis SCAN, RUN eller DISCARD udfres,
bliver navnene igen ukendte. Navnene kan gres kendte igen ved
at udfre USE en gang til.

