• No results found

Procedures voor de programmeerbare lijnen generator (PLG)

N/A
N/A
Protected

Academic year: 2021

Share "Procedures voor de programmeerbare lijnen generator (PLG)"

Copied!
54
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Procedures voor de programmeerbare lijnen generator (PLG)

Citation for published version (APA):

Gerritsen, R. M. W. (1987). Procedures voor de programmeerbare lijnen generator (PLG). (IPO-Rapport; Vol. 588). Instituut voor Perceptie Onderzoek (IPO).

Document status and date: Gepubliceerd: 01/01/1987

Document Version:

Uitgevers PDF, ook bekend als Version of Record

Please check the document version of this publication:

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.

• The final author version and the galley proof are versions of the publication after peer review.

• The final published version features the final layout of the paper including the volume, issue and page numbers.

Link to publication

General rights

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain

• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:

www.tue.nl/taverne Take down policy

If you believe that this document breaches copyright please contact us at: openaccess@tue.nl

providing details and we will investigate your claim.

(2)

Instituut voor Perceptie Onderzoek

Postbus 513, 5600 MB Eindhoven

Rapport no. 588

Procedures voor de programmeerbare lijnen generator (PLG)

(3)

GEBRUIK VAN DE PROGRAMMEERBARE LIJNEN GENERATOR (PLG)

Met de PLG is het mogelijk om een TV-beeld van 512 lijnen te genereren, waarbij iedere lijn

programmeerbaar is: de intensiteit kan O, 1, •.. , 255 zijn. De relatie tussen intensiteit en waarde is met een aantal jumpers in te stellen, bijvoorbeeld een lineair of logaritmisch verband. Callibratie is niet met software mogelijk.

De PLG kan worden geprogrammeerd met een aantal plaatjes (100). Een zogenaamde sequencer in de PLG

bepaalt welk plaatje hoelang te zien is en er kan zelfs op bepaalde condities worden getest (bijvoorbeeld

schakelaars) en de volgorde kan daardoor worden beinvloed.

Een beeld is opgebouwd uit twee rasters van ieder 256 onafhankelijk programmeerbare lijnen. Voor meer

informatie over de werking van de PLG zie het verslag van J.Jonker.

De software is in twee delen te splitsen, te weten een programma voor de besturing van de hardware, de

generator zelf, en een programma om de besturingsfiles mee te maken.

Het eerste programma, de besturing van het apparaat, is met geringe aanpassingen overgenomen van J. Jonker. Het

is met dit programma mogelijk om een file met akties (sequencer data) over te zenden naar de PLG. Zie voor de beschrijving en de mogelijkheden het verslag van Jonker. Ook kan met dit programma de file met plaatjes worden overgestuurd (de pattern data).

Verder kan het weergeven worden onderbroken, hervat of op de voet gevolgd (ieder plaatje dat vertoond wordt, wordt gemeld door de Apple).

Hoe kunnen we te werk gaan?

In eerste instantie moeten de plaatjes worden gemaakt. Dit kan worden gedaan in PASCAL. Hiervoor zijn een aantal procedures en funkties geschreven die dat werk moeten verlichten. Deze procedures zijn opgenomen in de libraries PATLIBl en PATLIB2 (pattern library). In een programma ziet dat er zo uit:

(4)

program demo; (*$s+*)

uses LABIEEE,PATLIB1,PATLIB2;

const var

De library LABIEEE is nodig omdat daarin het type BYTE

=

o ••

255 is gedefinieerd (wordt gebruikt in PATLIBl en 2), verder staan er in LABIEEE routines om de IEEE interface (tussen Aplle en PLG) te besturen. (helaas vrij langzaam)

De PATLIB libraries bevatten diverse routines die per raster werken. De selectie gebeurt met een parameter die nul moet z1Jn voor een effect op het eerste raster, een voor het tweede raster en twee voor het hele beeld.

Omdat de plaatjes ieder 512 bytes vragen en er onder Pascal niet veel geheugen vrij is, heb ik besloten om de data gecodeerd op te slaan, zowel in het geheugen van de computer als op de schijf. Het programma kan nu met een veel grotere snelheid van disk lezen en

schrijven en ook de communicate met de PLG wordt er iets sneller door. Bij plaatjes met weinig intensiteit-wisselingen zal er geen probleem zijn met het geheugen.

De plaatjes kunnen in plaats van met Pascal ook

interaktief worden gemaakt. De computer zal dan steeds om een lijnnummer en een intensiteit vragen. De data wordt op dezelfde manier gecodeerd en opgeslagen. Het voordeel van de Pascal-methode is dat aan het programma te zien is welke intensiteiten de lijnen hebben. Er is ook een routine die de gecodeerde data omzet naar een tabel van regelnummers en bijbehorende intensiteiten, maar (om debug-redenen) alleen maar een afdruk op het scherm. Om het op de printer te krijgen zal een kleine aanpassing nodig zijn.

Er zijn om mee te werken twee schijven nodig: de data-schijf en de Pascal compiler (indien je plaatjes wil

(5)

TIPS voor programmeurs

Het werken met Apple-Pascal is anders dan het werken met Pascal op een VAX, Burroughs of IBM PC. Je hebt voortdurend ruimte-problemen en de snelheid is laag. Het geheugen probleem is met wat truken te omzeilen door delen van het programma in libraries op te nemen. Maak een source file niet te lang, vanaf ongeveer 10 Kbyte source (en dat is al snel vol) wordt het

compileren kritisch. Behalve het geheugen-probleem omzeil je zo ook langdurig compileren.

Let erop dat je geen types definieert die ook in andere libraries vorkomen. Dit leidt tot errors en vaak

opnieuw compileren.

De compiler kent een aantal directives, een soort opdrachten aan de compiler, bijvoorbeeld om

array-indices niet te controleren (sneller maar onveiliger) of om meer gebruik te maken van de disk tijdens het compileren (swapping mode). Helaas moet die bijna altijd aan worden gezet (*$S+*).

Ik ben mij ervan bewust dat de ondersteunende

programmatuur voor de gebruiker van de PLG vaak niet ideaal zal zijn. Ik hoop dat mijn programmatuur een basis kan zijn om de fantasie de loop te laten gaan en zelf het een en ander er bij te schrijven, voor hemzelf en voor gebruikers daarna.

Succes,

Reinier Gerritsen.

(6)

UNIT PATLIBl

procedures om een pattern record te maken

CONST MAXBUFFERSIZE

=

4095;

TYPE byte

=

0 .. 255;

lines

=

array[0 .. 511] of byte; { een volledig beeld}

ras

=

o ..

2; {

o:

raster 1; 1 : raster 2; 2 : beiden}

patbuffer

=

array[O .. maxbuffersize] of byte; {alle patterns}

PROCEDURE showerror(code

.

.

integer);

FUNCTION cladd(a,b

.

.

byte) byte;

FUNCTION clsub(a,b

.

.

byte) byte;

FUNCTION clmult(k

.

.

real; a: byte)

FUNCTION patmean(raster

.

.

ras; var b

PROCEDURE patbar(raster: ras; intens var b : lines);

byte;

lines) : real; byte; start, stop

PROCEDURE patbackground(raster: ras; intens: byte; var b

PROCEDURE patclear(raster: ras; var b : lines);

PROCEDURE patcopy(rasa, rasb: ras; var b : lines);

PROCEDURE patadd(rasa, rasb ras; var b : lines);

PROCEDURE patsub(rasa, rasb ras; var b : lines);

integer;

lines);

PROCEDURE patshift(raster: ras; shift: integer; var b : lines);

PROCEDURE patswapraster(var b : lines);

PROCEDURE patgrayscale(var b : lines);

PROCEDURE patmult(raster: ras; k : real; var b : lines);

(7)

PROCEDURE showerror(code: integer):

parameters

code code is de errorcode die de functie IORESULT aflevert

beschrijving

De procedure showerror drukt de bij de errorcode behorende fout-melding af. Indien code= O dan is er geen error en wordt er niets afgedrukt. De volgende meldingen worden afgedrukt:

code 2 3 5 6 7 8 9 10 11 12 13 14 15 16 64 melding

bad device number illegal operation

lost device -- no langer on line

lost file file is no langer in directory bad title illegal filename

no room -- insufficient space on diskette no device -- volume is not on line

no such file on specified volume duplicate file title

attempt to open an already open file attempt to access a closed file

bad input format~- error in reading real or integer ring buffer overflow -- input arriving too fast

write-protect error -- diskette is write-protected device error -- bad address or data on diskette

(8)

FUNCTION cladd(a,b: byte) : byte:

parameters:

a,b : 2 getallen van

o ••

255 (bytes)

beschrijving:

De functie cladd geeft als resultaat de som a+b, maar wel 'geclipt' tot 255, dus als a+b >= 255 dan wordt cladd 255. Het resultaat is dus weer een byte. Deze functie wordt gebruikt bij het optellen van patterns.

(9)

FUNCTION clsub(a,b: byte) : byte;

parameters

a,b 2 getallen van

o ••

255 (bytes)

beschrijving:

De functie clsub geeft als resultaat het verschil b-a, maar met

ondergrens

o,

dus als b-a <=O dan is clsub O. Het resultaat is dus weer

een byte. Deze functie wordt gebruikt bij het aftrekken van patterns.

(10)

FUNCTION elmult(k: real; a: byte) : byte;

parameters

k

a

beschrijving

vermenigvuldigings-factor, een real een getal van 0 .. 255 (bytes)

Deze functie berekent k*a maar het resultaat is weer een byte, dus wordt k*a afgerond en als dat kleiner dan O is of groter dan 255 dan wordt het resultaat O resp. 255.

(11)

FUNCTION patmean(raster: ras: var b: lines) : real:

parameters

raster b

beschrijving

o:

le raster, 1 : 2e raster, 2 : hele beeld array met beeldlijnen (512 bytes)

Deze functie berekent de gemiddelde intensiteit van het aangegeven

raster. Dit gebeurt door de intensiteiten van de aangegeven lijnen op te tellen en te delen door 256 of 512, afhankelijk van raster=O of 1, of raster=2.

Het resultaat is een real. Wellicht zal een andere gemiddelde moeten worden gedefinieerd om zinvol te kunnen gebruiken.

(12)

PROCEDURE patbar(raster: ras; intens: byte; start, stop: integer; var b: lines); parameters raster intens start stop b beschrijving

O: le raster, 1 : 2e raster, 2 : hele beeld

o ••

255, geeft de intensiteit aan van de balk eerste lijn waar de balk moet beginnen

laatste lijn die nog bij de balk hoort array met beeldlijnen (512 bytes)

De procedure patbar vult een pattern met een balk die loopt van lijnnummer start tot en met stop. De lijnen krijgen de opgegeven intensiteit. De procedure werkt alleen in het opgegeven raster.

(13)

PROCEDURE patbackground(raster: ras; intens: byte; var b: lines);

parameters

raster intens b

: o

! 1e raster, 1 : 2e raster, 2 : hele beeld

: intensiteit van de beeldlijnen array met beeldlijnen (512 bytes)

beschrijving

Deze procedure vult het opgegeven raster met intensiteit. Dit is meestal de eerste stap bij het maken van een pattern. Voor het vullen met nullen is een eigen procedure beschikbaar, maar ook met deze is het mogelijk.

(14)

PROCEDURE patclear(raster: ras; var b: lines);

parameters

raster b

o:

le raster, 1 : 2e raster, 2 : hele beeld : array met beeldlijnen (512 bytes)

beschrijving:

Deze procedure vult het opgegeven raster met nullen. Dit is meestal de eerste stap bij het maken van een pattern.

(15)

PROCEDURE patcopy(rasa, rasb: ras; var a, b: lines); parameters rasa rasb a b

: werkzame raster(s) van pattern a : werkzame raster(s) van pattern b

te copieren beeldlijnen (blijft ongewijzigd) : hierin komt het resultaat

beschrijving

Deze procedure maakt het mogelijk om pattern b te vullen met gegevens uit pattern a. Door met de rasa en rasb parameter te spelen heb je nogal wat mogelijkheden:

rasa rasb handeling

0 0 le raster van b wordt gelijk aan le raster van a 0 1 2e raster van b wordt gelijk aan le raster van a

0 2 le en 2e raster van b worden gelijk aan le raster van a

1 0 le raster van b wordt gelijk aan 2e raster van a

1 1 2e raster van b wordt gelijk aan 2e raster van a

1 2 le en 2e raster van b worden gelijk aan 2e raster van a

2 2 b wordt gelijk aan a

(16)

PROCEDURE patadd(rasa, rasb: ras; var a, b: lines); parameters rasa rasb a b

werkzame raster(s) van pattern a werkzame raster(s) van pattern b

: op te tellen beeldlijnen (blijft ongewijzigd) : hierin komt het resultaat

beschrijving

Deze procedure telt bij array b de elementen van a op, dus b:=b+a, met dien verstande dat het alleen werkt bij de opgegeven rasters en dat de optelling gebeurt binnen de grenzen 0 .• 255. (via function cladd)

rasa rasb handeling

0 0 le raster van b wordt verhoogd met le raster van a 0 1 2e raster van b wordt verhoogd met le raster van a

0 2 le en 2e raster van b worden verhoogd met le raster van a

1 0 le raster van b wordt verhoogd met 2e raster van a

1 1 2e raster van b wordt verhoogd met 2e raster van a

1 2 le en 2e raster van b worden verhoogd met 2e raster van a

(17)

PROCEDURE patsub(rasa, rasb: ras; var a, b: lines); parameters rasa rasb a b beschrijving

werkzame raster(s) van pattern a werkzame raster(s) van pattern b

af te trekken beeldlijnen (blijft ongewijzigd) hierin komt het resultaat

Deze procedure trekt van array b de elementen van a of, dus b:=b-a, met dien verstande dat het alleen werkt bij de opgegeven rasters en dat de aftrekking gebeurt binnen de grenzen

o ••

255. (via function clsub)

rasa rasb handeling

0 0 le raster van b wordt verminderd met le raster van a 0 1 2e raster van b wordt verminderd met le raster van a

0 2 le en 2e raster van b worden verminderd met le raster van a

1 0 le raster van b wordt verminderd met 2e raster van a

1 1 2e raster van b wordt verminderd met 2e raster van a

1 2 le en 2e raster van b worden verminderd met 2e raster van a

2 2 b wordt verminderd meta

(18)

PROCEDURE patshift(raster: ras: shift: integer: var b: lines); parameters raster shift b werkzame raster(s)

verschuiving van het beeld over shift*2 lijnen : te bewerken array met beeldlijnen

beschrijving:

Met deze procedure is het mogelijk om het beeld te verschuiven.

Als shift> O dan een verschuiving omhoog, anders omlaag. De verschoven lijnen blijven in hetzelfde raster, dus een verschuiving over 2*shift lijnen. Met de parameter raster kan worden gekozen voor het hele beeld

(2) of voor één raster (0 of 1). De nieuwe lijnen aan de rand (dus die er in worden geschoven) worden gevuld met intensiteit

o.

(19)

PROCEDURE patswapraster(var b : lines);

parameters

b te bewerken array met beeldlijnen

beschrijving:

Deze procedure verwisselt de inhoud van de twee rasters.

(20)

PROCEDURE patgrayscale(var b: lines);

parameters

b te bewerken array met beeldlijnen

beschrijving:

Deze procedure maakt een test-figuur. De bovenste lijnen beginnen met intensiteit

o,

oplopend tot 255 bij de onderste lijnen.

(21)

PROCEDURE patmult(raster: ras: k: real: var b: lines):

parameters

raster k

b

: raster dat bewerkt wordt vermenigvuldigings-factor : te bewerken beeldlijnen

beschrijving:

Met deze procedure kan een raster of het hele beeld worden

vermenigvuldigd met een willekeurige factor. De vermenigvuldiging

geschiedt met behulp van de functie clmult zodat het resultaat van de vermenigvuldiging weer een byte is (afronding en clipping op

o ••

255).

(22)

PROCEDURE patinvert(raster: ras; var b: lines);

parameters:

raster b

: raster dat bewerkt wordt : te bewerken beeldlijnen

beschrijving:

Patinvert inverteert de beeldlijnen, dat wil zeggen dat elke lijn (geselecteerd met parameter raster) van intensiteit verandert:

b[i]:=255-b[i]. Het effect is dat donkere lijnen licht worden en vice versa.

(23)

PROCEDURE initbuffer(var buffer: patbuffer);

parameters

buffer : buffer van MAXBUFFERSIZE die patterns kan bevatten

beschrijving:

Deze procedure initialiseert een buffer die de geproduceerde patterns bevatten kan. Bij 'normale' patterns, patterns met weinig intensiteit overgangen tusen opeenvolgende lijnen, is er ruimte voor vele patterns. Er wordt alleen maar een soort end-of-file teken op de eerste plaats van de buffer gezet.

(24)

PROCEDURE readwrd(var s : char);

parameters

s : resultaat na aanroep, de aangeslagen toets

beschrijving:

Deze procedure wacht op de toetsen 'Y' of 'N'. Na een van deze toetsten moet een 'return' of 'spatie' worden gegeven te bevestiging. Editten is niet mogelijk maar het is wel mogelijk om opnieuw een toets aan te slaan alvorens de bevestiging te geven, dus 'YN return' geeft s:='N'.

(25)

PROCEDURE readgetal(min, max: integer; var d: integer);

parameters

.

.

min

.

.

ondergrens van het in te lezen getal max bovengrens van het in te lezen getal

d

.

.

ingelezen getal

beschrijving

Deze procedure maakt het mogelijk om een getal in te lezen dat tussen min en max moet liggen (grenzen zelf zijn ook toegestaan). Afsluiten met

return of spatie. Er is geen edit-mogelijkheid, maar als je een ongeldig getal invoert wordt het getal gewist en kan opnieuw worden begonnen. Het

is alleen maar mogelijk om positieve, gehele getallen in te voeren.

(26)

UNIT PATLIB2

procedures om een patterns te maken

USES PATLIBl

TYPE smallbuffer

=

array (0 .. 520) of byte; { nodig tijdens coderen}

VAR id file; { file-id, moet helaas als global variable in unit}

PROCEDURE encrypt(patnr: byte; var b : lines; var mem: smallbuffer; var count: integer);

PROCEDURE correctroom(count, p t : integer; var buffer patbuffer);

PROCEDURE pattobuffer(patnr: byte; var b : lines;

var buffer: patbuffer; var error boolean);

PROCEDURE patfrombuffer(patnr: byte; var b : lines;

var buffer: patbuffer; var error boolean);

(27)

PROCEDURE encrypt(patnr: byte: var b: lines: var mem: smallbuffer:

var count:

integer):

parameters patnr b mem count

.

.

.

.

.

.

nummer van het pattern array met beeldlijnen

buffergeheugen, nodig tijdens coderen

lengte van het gecodeerde pattern in bytes

beschrijving:

Deze procedure wordt aangeroepen in de procedure pattobuffer en is de feitelijke coderings-procedure. In mem wordt de gecodeerde data

opgeslagen. De lengte van de code is gegarandeerd kleiner dan 516 bytes. In het ergste geval wordt er gewoon niet gecodeerd, maar meestal zal het rond de 15 bytes zijn voor een pattern met niet te veel intensiteits-wisselingen.

(28)

PROCEDURE correctroom(count, pt: integer: var buffer: patbuffer);

parameters:

count pt buffer

: lengte van het gecodeerde pattern in bytes; vrij te maken : pointer naar end-of-pattern-file

: patternbuffer waarin plaats is voor veel patterns

beschrijving:

Deze procedure wordt aangeroepen door de procedure pattobuffer en wordt gebruikt om bytes zodanig te verschuiven in 'buffer' dat het nieuwe, gecodeerde pattern er zonder problemen precies in past.

(29)

PROCEDURE pattobuffer(patnr: byte: var b: linea: parameters: patnr b buffer error beschrijving

var buffer: patbuffer: var error: boolean);

nummer van het pattern array met beeldlijnen

pattern buffer, bevat veel patterns

nog niet geimplementeerd; onveranderd na aanroep

De procedure pattobuffer maakt het mogelijk om een array met beeldlijnen gecodeerd in een (geheugen)buffer te zetten. De patterns worden op

volgorde opgeslagen. Eventuele overschrijving is mogelijk, de ruimte wordt indien nodig vergroot of verkleind (binnen de grootte van de buffer, MAXBUFFERSIZE). Indien gewenst kan men meerdere buffers in het geheugen hebben en kunnen buffers naar schijf worden geschreven.

Indien de ruimte te klein is om de code op te slaan, wordt het programma beeindigd zonder mededeling.

(30)

PROCEDURE patfrombuffer(patnr: byte; var b: lines; parameters patnr b buffer error

var buffer: patbuffer; var error: boolean);

nummer van het pattern array met beeldlijnen

pattern buffer, kan veel patterns bevatten true indien pattern niet gevonden in buffer

beschrijving:

Deze procedure haalt patterns terug uit de buffer en decodeert ze. Indien er geen pattern gevonden kan worden met nummer patnr, dan wordt de parameter error:=true. Een test hierop is zinvol. Indien de buffer gevuld is met ongeldige gegevens kan het programma worden beeindigd met de mededeling 'bad input file'.

(31)

PROCEDURE patprinter(patnr: byte; var buffer: patbuffer);

parameters

nummer van het pattern patnr

buffer : pattern buffer, kan veel patterns bevatten

beschrijving:

Deze procedure was in eerste instantie bedoeld om de gegevens van een pattern naar de printer te sturen, maar om debug-redenen is dat bij het scherm gebleven. Afgedrukt worden vier kolommen met per kolom het regel-nummer en de intensiteit. Met een eenvoudige wijziging is het mogelijk om deze procedure zijn gegevens naar een file of naar de printer te sturen.

Indien het patnr een verwijzing is naar een niet bestaand pattern in de buffer, dan wordt een errormelding afgedrukt: 'pattern not found'.

(32)

PROCEDURE pattodisk(var buffer: patbuffer);

parameters

buffer pattern buffer, kan veel patterns bevatten

beschrijving:

Deze procedure schrijft de buffer met patterns naar floppy. De gebruiker

kan zelf een filename opgeven. Dit wordt op errors gecontroleerd met de procedure showerror uit PATLIBl. De grootte van de file is altijd 4 Kb.

(33)

PROCEDURE patfromdisk(var buffer: patbuffer);

parameters

buffer pattern buffer, wordt van schijf ingelezen

beschrijving:

Deze procedure leest een door de gebruiker op te geven disk-file in, in de buffer. Er wordt op errors gecontroleerd met de procedure showerror uit PATLIBl. De ingelezen file is altijd 4 Kbyte groot.

(34)

PROCEDURE patinput(var b: linea; var patmem: patbuffer);

parameters

b

patmem

: array met ingevoerde beeldlijnen

: pattern buffer, kan veel patterns bevatten

beschrijving

De procedure patinput laat de gebruiker via een vraag en antwoord methode een pattern maken. Gevraagd wordt om het patternnurnrner, de achtergrond-intensiteit en welke lijnen eventueel daarvan moeten

afwijken. Het zo aangemaakte pattern wordt in de buffer opgeslagen en er kan weer een (nieuw) pattern worden ingevoerd. De edit-mogelijkheden zijn beperkt, maar de gebruiker kan altijd weer een pattern maken met het vorige nummer. De eerste wordt dan overschreven (= gewist) in de buffer.

(35)

OPMERKINGEN BETREFFENDE STUDENT-ASSISTENTSCHAP

Ik wil ter afsluiting van mijn periode dat ik voor het IPO werkzaam ben geweest een aantal opmerkingen maken over mijn

functioneren en het verdere verloop van het project.

Ik ben bezig geweest met de ontwikkeling van software voor de PLG, de Programmeerbare Lijnen Generator. Omdat ik als eerste hier mee ben begonnen (even afgezien van Johan Jonker), moest ik eigenlijk alles zelf uitzoeken. Ik vind dat er niet helemaal is uitgekomen wat ik er zelf van

verwacht had. Daar zijn een aantal redenen voor te geven die belangrijk kunnen zijn voor het verdere verloop.

Ten eerste was er het probleem van de computer. Ik had geen enkele ervaring met APPLE ][ en apple-pascal. Dit heeft mij af en toe een beetje tijd gekost. Ook was de computer wat laat ter beschikking en een printer heb ik ook pas op het laatste moment gekregen. Maar het grootste probleem met de computer is toch wel de snelheid (traagheid) en het

(on)gemak van de compiler. Er valt eigenlijk niet normaal te werken met zo'n traag programma. Het debuggen en testen van

software wordt een ware crime. Een zo mogelijk nog groter probleem is het geheugen van de computer. Bij een beetje source-listing is het geheugen te klein om het programma te kunnen compileren (nog afgezien van de lange tijd) en moet het programma worden opgedeeld in meerdere stukken. Dat

betekent weer veel werk om de library in orde te krijgen, in het bijzonder als er nog foutjes in zitten of indien er

wijzigingen gemaakt moeten worden.

Een minder groot probleem voor de software-schrijver is de traagheid van de resulterende code. Voor de gebruiker zal dat zeker wel een probleem zijn. Dit probleem vloeit voort uit de van nature trage methode waarmee het operating system

(36)

de programma's (p-code) moet uitvoeren. Alleen het direct schrijven in machinetaal van de tijd-kritische routines kan dit probleem oplossen (in feite het hele programma .•. ).

Een andere oorzaak voor het voor mijzelf tegenvallende resultaat is dat ik te veel tijd heb gestoken in de voorbereidingen. Ik ging er van uit dat ik het hele programma klaar zou krijgen binnen de tijd van mijn contract. Ik heb mij verdiept in de communicatie tussen computer en PLG (IEEE-bus), achteraf gezien zonde van de tijd. Wel heb ik voor mijn opvolger (en voor mijzelf) heel wat velletjes aantekeningen gemaakt, ook van zaken waar ik zelf niet aan toe ben gekomen, bijvoorbeeld een uittreksel van een boekje over de IEEE-bus.

Ook ging er een middag verloren met pogingen om een

programma (thuis gemaakt) van de VAX over te zetten maar APPLE. De programmatuur bleek niet opgewassen tegen de nieuwe VMS-release. Overigens, bij de faculteit

Elektrotechniek heeft onlangs iemand als stage het kermit-protocol geimplementeerd voor apple-pascal, het is daarnaast ook in de public-domain sfeer te verkrijgen. (dubbel werk). Het lijkt mij raadzaam een van beide programma's aan te schaffen (kosten nihil). Daarmee is een eenvoudige

communicatie te bewerkstelligen met iedere computer die het kermit-protocol ondersteunt (oa VAX).

Mijn opvolger kan zich het beste niet te lang bezighouden met zaken die hij (zij?) niet direct nodig heeft. Een combinatie van gebruiker/programmeur zou misschien zinvol

(37)

Mijns inziens is het beter om voor volgende projecten niet meer met een APPLE te werken, maar met een IBM-compatible personal computer. Er zitten uiteraard wel een aantal

nadelen aan verbonden zoals het moeten opbouwen van nieuwe kennis en software. Maar de voordelen zijn groter:

- De computer is goedkoper {goede clone: fl 3000 à 5000). - Er is een overvloed van goede hard- en software te koop. - Het rekencentrum van de TUE ondersteunt PC's.

Er is onder studenten veel kennis van PC's, de animo om met een PC te werken is veel groter dan met een APPLE. - De computer is snel, er ziJn snelle compilers beschikbaar. - Er is veel meer geheugen, zowel werk- als schijfgeheugen. - Er is goede {gratis!) communicatie-software beschikbaar,

ook goed bruikbaar als VAX-terminal.

- Het toepassingsgebied is veel groter dan dat van een APPLE

Afgezien van de APPLE heb ik met veel plezier op het IPO gewerkt. De sfeer is er goed. Helaas ontbreekt het mij aan tijd om verder te gaan met het programmeren.

Reinier Gerritsen.

(38)

...

.

LlJ .,, '1 : ::;:: UJ t-· z <1 : <l '. Ci n : C"J u LJJ u: -, , . a :: UJ t-·· ~ . <1 : CL

...

r LIJ r · • lJJ (JJ • 0)

.

::~ ~ -lJJ Cl LIJ .. , • (J} _J . L . t---Ul i,-1 .-t (Tl ... , LIJ U . ü: •• Ui a: Cl : <I . : L U> n :

=:,

>-:: J > .. □~ UJ Cl Ct. 2:: !: 1- --(!) l.JJ < C < C c 1 c..1 a : -) u , :, ::;: c., a, Q . ~ : Cl: t-• O l • H Q '. ll.. _J :-~ : . · • • • • ♦ ":z. : • v 1) J UJ Cl CJ (_) [_J •-• lJ) 2: H u : t-· 2: ÛJ

....

_ J t-· c: t : • 0 . ➔ li J ,-... tt• 1--1

..

.:::: ,,, ~ : l : 1 j-· , c ff ,i:. _ .J (. ) UJ (.j f.J ► · • -, 1 u~

=

1

0 . • UJ c , <J.: ü . ll : UI

....

-. • &. , ,-, Ul a i ( : ) ,cl UJ

,

.

,

...

.

Ul u : UJ u u " = .1 OJ ;~ ~

~=

► · · LIJ 2: c, r_, U l 2: !JJ 2: -,

....

_ J U) lll • ('..j (Il -♦ 2 : o : r--1 LU ~ t-· z. ... ~ -· <1 : _) , .. 0 .. Uj CJ Cl lJI _J .... _J LlJ lJJ _J UJ Cl.l <C al

..

,.

t!) .-... ('J Cl UJ _ J UJ _ J r · -1 t-· Cl > --::'> o : 0) UJ :.:: t-· u. W U) Cl UJ <C 0:. ,-,. " UJ ,._,

....

Ul o : LIJ LIJ t-· u . :. -· -lJ .. OJ

=,

u : 0) Ll. LIJ> :. CJ 1-· <1 : u , r. <1 : o : f:1 UJ >-( :)

~-.

Ul >· C' · I < !'. (>J <1: o : n : <1 : o : 0: [ ' J lS <t:: o: w ~ u. u . ::) lil Il LIJ UJ 1-· 2'. lil >-... <1 : Qj _Jo : LIJ Q , >· 1--m t-er : o.

_,

1" t J J _ J 1 ,) Ul U i u : ,1: _J Ll ~ LIJ LIJ l!) wJ a : f -· <C 2: ::) <r: U . lJJ Ci l1J o : t-· f ·· u:. :~-• u, -► -· U l -u : LJ J U> UJ ~~ (.JI UJ IJ) LJJ ==~

...

.

• . • J m o : . <1 : . =.) ... ~l ~!l o : .• J "' · "'· LJJ ~-""4 .,_,. l...!.1 _ J _J ()) ~-·; . • lJJ LJ J ,-'. U) ;:; UJ t --~: I • .J ) ~~ -J UJ t-· · 2: ... >· H llJ <1: OJ ÜJ IJ) _j -· f-· o : <1. : • l : LJJ 2 1-· ... . .. :, . ÜJ <1: 1-· · 0, Lll u . Ul <1 : _ , ü '. U . U , UJ <t: <1: ..-1 llJ l f>

.::,

=•

:i : :2: UJ Ul LJJ z ··• _J U) llJ lll 2: u : ...

_ , , 1: UJ UJ <r: .. .J u : l 1 J L1 . u . -, u : o : ~-., . ÜJ t-· • I:

=.,

0 ~ ll. 111 i._!".) LIJ f ·· .., . ~

-...

, t:J u : < L

ll : lJJ o: t-· LIJ >· l.!l UJ UJ Ui UJ t-• • -· Ll : · IJl <t: -.) er : :: : u : u , <1: U) .., . ,. 2: _ _ J 1-1 : .r : _J UJ l! . ) LIJ i -· 4

....

>· > .. OJ Ol

LJJ 1-· · UI ..::.... n : , 1 : ül , --. LU n : u : (J) <. l : u : C.('J e t.: Ul n : <l: IJl ,, [: u : ü : LIJ t-· 2~ ... UJ 1-· lil lu >· t-· Cl m > · C ) CU 0 o : OJ Cl • UJ r,: ül <t : t-· (Jj '-.( : O : IJ] U ) IJl û ~ ( JJ ~ i: ma : <1 : •t: •1: U> O , <J : IJ . U '. l.l : o : u . n : tJJ 111 o : -, c ui u . 11.

=~

m .• J v UJ < C < J : u; -, a : t-· u : u · 1 > : :J < t: l :;: : <1 : O : ll : Cl 1-• D : (J '. 1-· (L UJ Ol < l: UI Z UJ UJ llJ ~ : c •, s.1 : IJ> UJ UJ f-· <1 : -, ..., a : ► ·· t-·

=

1

,1 : u, ,i: , 1 : ,1: f ·· _ J u, a : U J Ul Cl u : 1 J : lO lll o : Ul "1 : c:t : ü : n: :;: : <1 : < I : <t : Cl : CJ: ,i: •C •Cl:. l. J Cl'. 1 -· LJJ _ _ J O : . u : t!J u : :1 : CJ: f-• O : U> ~ -n : ll . . _ .. ,r: (J '. <.t: • :., : ~ .::.: • J' >· U . 0 . f-· LJJ lJ . Cl t-· o: c. L UJ -~ -· C J 111 Cl C J _1 :X <t : UI U' l _ _ J _J uu ::.: n~ i:__1 l...1.J n . C J ü J • -◄ < t ~ ( J : _ _ ,1 =-·

=

J

n : tJJ t-· <1 : , · 1 : <I: 0 C 1 ::l J' : ::-< a: ::: 1 ;; '. Ul .:C: <!J _ j llJ (I J DJ (_J (_ ; c. t: { I ) IJ) ( Il I!) l. : • -· Cl LJ :, l: : t-· f-· f · f ·· 1-· f-· 1 -· t-· · t -► ·· 1 ·· ,-. < C • t: }:: t-· <'.!: <1 : ...; : , -1 : , i: •t: s.1: • t: <t: , t: <.1 : . 2'. UJ lJJ _ J <l . fJ . Q . U . Q . U . a . Ü . [ l . ll . 0 , l.l . .... n : o : l_l l1 ~ LIJ U J ,~J lil LIJ UJ l1J Ll J U . I UJ UJ lil l lJ lll UJ u : z :::: :;;;: ::: u : LI : u . n : u : u : o : u : o : n : n : ,1 : u : n :

=

)

C) C l C > CJ :.: ) ::1 . : 1 =--,J = J ~: J .:--=) ·:-:, ""':° l -.:.J :: > _ .l ··1 --:, Cl t-1 ._ .. l'-i .,_" C J CJ LJ CJ C: l Cl C J CJ C.J C l C l 1 : :i. L .i Cl UJ f-· t-· f-· f-· Ld LIJ LIJ lil t1J llJ UJ LJJ UI l1J LIJ lJJ lil LJJ (.J .___:i (. J (._ ; (.) I _ _ ) (_ ) l . l l . l l _ J t. l (. J ,._J (_) l) ~-) (..1 l. l c~ ~: ~: ;~ ~: c~ c;~ c~ l -: ! C ! ( :: ! C l (_~ c~ c : C.1 ~~ l ? c ~ 0 . _ J _) _l -· ' U . U. rt . IJ . U . U . ü: U " U . 0 . ll . U . Cl . Û . Cl.. U . lJ.. lJ.. U . 0.. IL U . a . il . u . u. ll . Q . u . il . ll . u . a. "'· Cl

....

f -· <1 : f-· -;:: lil :;:: UI _ J u .. 2: :

....

a: 0 o : a: UJ

6

:r (J) >-0: 0 t-· Ll LJJ 0:

....

Cl z w .... z -er: JWWWZ w~oo zz~~ OOZ~f-0 JUJ~OW u: UJ r.!J z 0 Z •► O _J UI t-1 o : :i: Cl UJ UJ O :Z _J Ol t-< ,_. r. 1-• 1 u. =i q : ' z er , WWI

-UJ 0. (.l (.l Cl .,., UJ ~ -• ::,, _J

,.

=•

_J UJ .,., UJ q : 0 U Cl U)

~=

1-· 1-Cl Cl <1 : U) IJl _J _J C) Ci ... _J _J VI ai UJ u. _J C, _J <r.: .::: ~~ z:

~=

_ J _J _J _J UJ UJ W UJ UJ C:J ♦ ~ ... t--~ 0---~-HOC~OCOCOCOC~OC U OCOCO:U::~U::OC33333333 UJ o : -) Cl UJ lJJ :.:: IJ ) (_ ) l'-t '1: 0 (.!JU o;: UJ ::::t:::::333::3~ CSJ N I<) Ul Ul O . Ul

(39)

ELSE CLADD:=A+E:

END: !• CLIPPINE SUM OF A~B TO MAX!MUM OF 255 • l

FU~!CT!C!N CL.S'..JB;

E'E::l~l IF 8-A-'.1 mm CL:'....'E:=0 ELSE CLSUB:=B-A;

END; !~ CLIPP!NS suesTRACTlON A-e TO MINIMUM OF 2 • l

r:11r.1r TTrït,I rlM\i\ T

-: . . . ,. ·- . .... . . . . . , _, .. . . - - 1 '

IF HULP' 254 THEN CLMULT:=25~;

IF HULP·. THEN CLMULT:=0 ELSE

END;

FUNCT!ON PATMEAN;

VAR HULP, I : !NTESfR; eEG r i,i !·-UL0 : -0;

F0R l:=0 •O 5! 1 DO

('1.,..,_\ Ml , ,._ Il ..... T ' :l-.. .111 ... ._C • , f

!F !RASTER=2 1 OR <RASTER=!! MOD 21> THEN HULP:=HULP+B[IJ;

!F R~~TER=: THEN PATMEAN:= HULP1512 ELSE P~7~EAN:=HUL0125S;

PPOCEOUPE PAT~~c;

1"JA:: I : I~.,r:-E·2E:.;

eE!'·!

~~

,n

.

1,..., ... 1 PR:JCEC·L1F:~ IIAC!

..

.

,,, T ... ,k' ., . CP..SE ~'. OF 00 FL'P ! :=0

01 FOP ! : =c, TO 25~ DC1 B[::'.•!-L1 J:=A[:~IJ;

e2 FOR I : .. ,zi TO 255 DO BES!N 8[2•!+!J:•A[2•ll;

10 FrïC ~" I:=~ TC' 255 1 1 FOR ! : =0 TO 255 12 FOR ! : :z:@ TO 255 22 FOR I : .. 0 TO 5 l l t:"'lrï • - ~ · - 1 END: PROCEDURE PATADD; VAR!.~ : !NTEEER; BEEIN K:=!0•RASA+RA~B: CASE ~: OF DO DO DO DO Ef2•IJ_:-.,Ar2•!•! J; B f 2 • I+ 1 1: •M 2 + ! + 1 J ; BEGIN er2"!J:•Ar2•I+1 ); 8[2+!+1 J:xAf2+I+l J; END; Bf ! J: cA[ I); 0'!.· FOF. !:=1i TO 255 QQ ~r2--1J:=CLA[1[)(A[:? .. I4 ,B[2•:J '; T rdTt:t•::, .. , •• _ , ... 1 01 FOR !:=0 TO 255 DO 8!2•!+1 J:•CLADQ1Af2•!J,Bf2 .. !+!J ';

0~ FOP I:=1~ TO ?~c QO BE{:IN 8f2•!+1J:=CL.ADD(A[2•I 1,;[2•I-' 1J .,

B[2+IJ:=Cl..AC'D'.A!2'"!,,Bf2•IJ 1; EN!:.•; !0 FO~ !:=0 TO 255 DO 8[::?+IJ:=CLADD!Ar2•I+1J,Bf2•!J);

11 FOF: !:=0 TO 255 ::;io 8[2•I+!J:=CLADD<Ar2•I+1J,Bf2•I+!J);

FOP I:=0 ~O 25~ ['Q BEGIN 8[2•IJ:=CLADC11:A[2•!•1J,8[~•! 1

~; Bf::?•I+\ J:=CLA['[>(f\f2•!+1} ,Bf'.:•I+l J 1; Fr·R I::0 T(· 5!\ :.10 BfIJ:=CLAJD(P;f!],B[l} );

(40)

END; Et, ... f ,1r,.

PROCEDURE Pt.TC:

.

, ... i IC::, .._'

l.,IAR T

.

, .V . : INTEGER:

BEGIN ~:: =? 0•RASA+P.AS5;

CA~E !<'. OF 00 FOF I ::.::0 TO

:ss

e,1 F~•? I : =Z· TO 25~

-0:

FOP I :=0 TD -:'C::" 1 f'.' FOP ! :=0 TO 255 1 1 FOR ' !=0 TO 255 12 FOR !:=0 TO 255 22 FDR J:,c0 TC 51 1 END; E,,1, ... r,. ' PROCEQURE PATSH!FT; D·'.: [î[i

~o

QO DO DO DO ~[2•1 J:=CLSL1B•:A[2+I J IB[2•!] ); BL?•!~~ J::::C'LSUe(f-.C2•I J ,6(2•2~~ J ~;

BE1:IN S'.2•I+1 J:=CLSL1~• F,[::: ♦ ! J ,E~2•!•1} \;

Bf2•1 J:"'C~SUB•:At:Z<t.1} ,8[2•1 J ); H!D;

er 2" I J : =CL. s 1 •• }8,; Ar 2 l + 1 } JE~ 2 4 I } 'i !

B

r

2 • I + ! J: :rCLSUB UH 2 • !+ 1 J , ~H 2 • I • 1 J ) ;

eEG!N et2•! }:"'CLSUB(A[2q+1 J ,8(2+! J );

5L2•1+1 J:=CLSUB·:M2•!+1 J ,E[::::♦ H1 J ); E!-JD;

H( IJ :=CL SUS( Ar! J ,B[ ! J);

VAR r·; START, STOP : INTEGER;

EE!:!N IF SH!FT>0 THEN eEGIN ~TA~.T:=t·; :~·:~~-:~5~ !-S~!~T: ene T•:CTnc~, Tn c, 1 n~ , ..,,. ~ - ._ , ,_, . , , ,_, _,, , L.w E~!:J ~1 , : ~ ~-CC.T~d C ►!r-t. ,_ .. ,_' V. : BYTE 1 : EE~!N FOR I:•© TO 255 DO eEGI!\J V.:=Br!}; er 1 J:=-ersi 1-1 }; CH C 1 1 - Tl• ::k', '""&. ._,, , 4 . 1 ' • t 1 END; END;

(41)

PROCEDURE !N!TBUFCER: BEGIN 81JFFER[0J:=255 J;:"f\ln . _, ... ' PPOCEQURE READWSD; 1 l-"P RI IC:• r·I-JAO. ~ ' .. •. """ ....

-

.. ...., ' ,, , . ' ' PEG!N REDEA7 ocAnt~cvon~cn c: 1. • •- • ,,_, ••- • ._ ,_., r, ,_, r.., , ' UNT IL S. IN

r

.

Y . , . N. } ~ \·JF !TE'·~ ) ; REPEf'.T CHIC:• ,.c; • """ ... ...,.

-

' P.EPEAT READ!KEYSOARD,S!; UNT!L S IN ( . Y. ,' N' , . 'J 1 1.} P. I TE'. S 1 ;

UNT!L

s=

·

!• SPATIE OF RETURNTOETS1 t ! )

S:=BU:: EN!:'; PROCED~RE PEAQEETAL; :,., ~, ,C 1 l • l ~:TC,':.CC:·, , .. ... : ... ,. '

-

...,._.,' REFEAT PEPE~T

PEF::::-, 1 ~'.E '!'EQAC[:'·

I: = I + 1 ; WP.ITE1

s

\;

PEPEAT PECE~T ocon1vcvon~cr c ;. ,

.

._, ... ' ., ...

-

···

-

, .... , ' . •, ' 4- ' C: _, . U~·1T ! L S ! N [ . 0' , . 1 ' , ':? . , -· 3' , . i1. 1 'S. . S , . 7. , -

e

.

1 -8. . J; rr:: ! ·s THEN EE0H! IF

S

<

>'

'

THE!-! D:.,!J•!0+<0RD(S)-ORD! ·0· )); I:=-1+!; \:.IRITE!S :; END ELSE WRITE!CHR(07l!; UNT!L S • . . ;

FOR J:= 1 TO I-1 DO WR!TE<CHR!0Bl>;

!F !!D<MINl OR !D) MAX!! THEN

BEGIN

FOR J :=1 TO ! DO \..lR!TE! . . ) ;

FOR J:=! TO IDO WRITE!CHR(08! );

t:r~••w,1r,. "

UNT!L <<D~•M!N) AND !D<•MA~>);

~ 1RITE!D!;

END; BE6IN

WP.:TEU·l-: 'PA:TEP.f,i L!BRAP':•

(42)

< C:p,,; i ;~! • !

!• IPO !985, !9S7 •)

(• R~W EERR!TSEN •)

,: • 1-; FEeP1• 1AR 1 1 9B'"7 ,. )

UN!T 0ATL!52; !NTR!N~!C CODE 17 DATA !5;

nn

E~F ::-.CE

USES FA.:L!S 1;

TYPE SMALLBUFFER = ARRAY[~ .. 5201 OF BYTE!; (• EEN PATTERN TIJDENS CODEREN• 1

1.'AF: ID: FILE;

PROCEDURE ENCRYPT(PATNR : BYTE!; VAR B : L!NES; VAR MEM

VAR COUNT : INTEGER);

SMALLBUFFER;

VAR BUFFER : PATBUFFER !;

PROCEDURE CORRECTROOM!COUNT, PT: INTEEER;

PROCEDURE PATTOBUFFER(PATNR : BYTE!; VAR 8

ERROR : BOOLEAN!;

PROCEDURE PATFROMBUFFER\PATNR : BYTE!; VAR 8

L!NES; VAR BUFFER : PATB~FFE~:

L!NES; VAR BUFFER

VAR ERROR : BOOLEANl;

PC(', .... t':'ftt ,t::- ~,-.1r-;:, \'C: T.

: ' ' ~ . ...,.,_..., .... , '- ... ·~ '' '' ' f

EEG~:.

~R!TELN' 'PATTEPN . ,PATNR,· WORDT NU EECOCEERD 1;

CON!!NJE:=TRUE: LAST~lNE:=0; LASTI~TEHS:=0; COUN1 :=3; LINE:=0;

!• DEFAU~T WAARQE VAN LIJN NUL !5 N~L • 1

1• ~~ HET EERSTE RASTEF CODEREN • l

IF

s

r

LINE J •.

u,s n

!HE!'!~ :HEN BEG HJ

MEM[COUN7 ]:=L!NE O!V 2 ; MEM[COUNT+! J:=B[L!NEJ;

,~--.:l;if,.,_, ... , ..!T•:-:. . . .1 ... .... ïtl!t, ... , ,1T.J..,..• _ , '• ._1 AC,, _.~I ,_ . , _Tf,\l, _ .. t:"•:l Thlt:'. _ ... ,.1 - 7 1 _ A, , . . .C:T l t... , .~ITC:r,_ ,1:C ,.,_ • •;:Ofl .., ... . , _ . , , _ . . , Tf\lC-·1

~Mr,,

_

... '

L!NE:=L!NE ... 2;

IF CQUNT~S\4 THEN CDNT!NUE:=FA~5E; (• ~ORTER 7c DM NIE~ TE CO~EREN

END; ( • tJH!LE •)

!F CONTINUE THEN BEGIN

LINE:=1; FOUND:•FALSE; <• INITIALISATIE RASTER 2 • )

WHILE <LINE<512l AND !NOT FOUNDl 00 BEGIN

FOUND:=CB[LINEl<>LASTINTENS);

(43)

FOR !:==0 TO S1! DC.1 ME:~?~l+Z:J:=E[!J;

END; ( • IF •)

I• WE HEBBEN NU DE LENGTE EN VUNNEN HET BEGIN INVULLEN •l

MCMf0\1•=PATt.i

~-~

·-

'

' .. "" ., . '

.

'

.

'.,' '

ME~(! ]:=COUNT DIV 255;

MEM!ZJ:=COUNT MOD 75S:

<• NU !S MEM[0 .. COUNT-1J OP DE JUISTE WIJZE GEVULD• ) END: ( • ENCRff'T • l

PROCE~UFE C0RRECTROO~;

VAR I, OUDELENGTE : INlEGER:

BEGIN

OUOELENGTE:=BUFFER[PT+l l•255+8UFFER[PT+2l;

!• LENGTE VAN HET TE OVERSCHRIJVEN PATTERN •l

IF OUDELENGTE>COUNT THEN (+ IN~RIMPEN •)

FOR I:=PT+OUDELENGTE TO MAXeUFFERS!ZE DO

BUFFER[I-OUDELEN5TE+CDUNTJ:•BUFFER!Il ELSE IF OUDELENfTE<COUNT THE~

!• HIER MOET RUIMTE WORDEN GEMAA~T •)

FOP I:=MAXBUFFERSI!E DOWNTO PT+COUNT DO

B0FFER[IJ:=BUFFEF[!-COUNT~OUDELENGTEJ; ENG; !• CORRECTROG~ • ! CT r,-,i !~IT 1 CT ~~"7 ' • , ...._. - ~ •• r 1 " 1 •. J ' • • • , ' r~EM : B[l:!H !• EERST ENTRY Z□E~E~ ~)

PT:=0; !~SEFT:=FALSE: STAPT:=l; !• START !S NU ALS VLAG BEQOELC • )

~1HI!_E ·:et_1;FEF.[P:"J ::-:ss: C'C1 E::-:-:t-1 ·:• ZOE~: E~•1:, OF ~!~t • )

IF 8L1!="FER[ PT J=PATNR THE~,j ST~RT: =PT; 1, + STA~T <~ 1 • ~

ENCRYFT!PATNR,B,ME~.COUNT,;

!F PT4 COUNT~!~M~XBUFFERS!ZE THEN ERROR:=TRUE t ELLENDE, GEHEUGEN TE KLEIN 1 (• HIER MOET NOG EENS IETS kOMEN DAT HET PROGRAMMA OP DISK VERDER GAAT >

(• DEZE TEST IS EIGENLIJK NIET HELEMAAL CORRECT eIJ OVERSCHRIJVEN ... • l

<•

DE BESTE OPLOSSING ZOU ZIJN HET 6E8RUI~ VAN LINKED LISTS <POINTERS ) • l

ELSE BEGIM

!F START ~>l THEN EEE!N (• RUIMTE MAKEN OF OVERSCHRIJVEN• !

CORRECTPOOMCCOUNT, PT, BUFFER ); (• LOS HET RUIMTEPROBLEEM OP•!

INSE~T: =TRUE;

END

ELSE START :•PT; <• WE ~UNNEN VANAF PT INVULLEN ZONDER PROBLEMEN • l

FOR !:•0 TO COUNT-1 DO BUFFER(START+IJ:•MEM[IJ;

<• COP!EER GECODEERDE DATA lN DE PATTERN-BUFFER •)

IF NOT INSERT THEN BUFFER!PT+COUNTJ1•2SS;

<•

END OF IPATTERNlFILE +)

END; I• WEL GENOEG GEHEUSEN •l

END; !• PATTERN TO BUFFER •l

PROCEDURE PATFROMBUFFER; 1 /AD DT T T I C-t,·1: ~C ., , f /. ' , , • 1 .... , _ . . _,, .... ~ LAST!~JTENS QVTCl. L-< r •- • 'f E-ES!N PT:=~; ERP.OR:=FALSE; !:=0:

WH!LE !BUFFER[PTJ<>255) AND IBUFFEP[PTJ<>PATNP1 DO BEE!N

PT:=PT+BUFFER[PT~! J•255+BUC-FER[PT+2J;

IF PT\=MAXBUFFERS!ZE THEN BEGIN WRITELN! 'BAD INPUT FILE' l;HALT; END;

END; (• WHILE +:,

!F BUFFER[PTl=255 THEN ERROR:=TRUE (• FATTERN NIET GEVONDEN 1 1 • l

ELSE BEGIN 1 • PATTERN SEVONDEN •)

LAST!NTENS:=0; LENETE:•EUFFER(PT+:l•25E+EVFFER[PT+2J-3;

(44)

FOR !:=0 TO 511 DO B[!]:•eur::FER[PT•!J

ELSE !• WEL GECODEERD, DUS DECODEREN •l

FOR J:=0 TO 1 DO BEGIN

FOR !:=0 TO 255 DO BEGIN(+ GA ALLE LIJNEN AF VAN EEN RASTER• l

IF LENSTE \0 THEN <• ER ZIJN NOG ~ERANDERINGEN MOGEL!J~ •)

re

BUFFER~PTJ= ! THEN BEGIN !• EEN LIJN 5EVO~OEN •1

LASTINTEN5:=BUFFERfPT•! J; PT:=PT+2: LENGTE:•LENGTE-2; ENO; 1. IF ) E[2•!•J]:•LAST!NTENS; END; (• FOR I • ) END: !• FOP J • !

END; !• ELSE, PATTERN GEVONDEN •l END; !• PATFROMBUFFER •l PROCEDURE PATPRINTER; l.lr\R 8 : LIMES; CPPn.::> • pnn1 C At,i, . _ f i 1 • _ . , • • _ . ... ..., • . _ - 1 H ~ f ! : INTEGER; EE0 !t·,

i::ATCCr,MOIICC-CPICAT1'1P P c:;1u:::r::cc:· coonc:; \,

• 1 ,. , • , , . . ~, , .... .., , ~ . _ r , , : , , , , •, , J ._ ; ,_. ~, • ._ , ,

1 ._, , , , t.., , , ,

lF ERROR THEN WRITELN!CHR'. 7! , PATTERN NOT FOUND

ELS!:

E:

>::~

~

l

~-~1R ! TELN ~ . PA ï TERrJ . , PA T~·lR: 4 ) ; WP. ! TELr·~;

t,1 R ! TE U·l ,: ' P AS TER ! . : 1 S , . RAS TER 2 . : 1 E , P. A:, TER . : l 5 , . P. A: TE~ 2 . : 1 :: .' ;

:=

c

1 ;, ! : == ~ : ·= -:

~>=

i-.1 P : , ~ · ~ I : l ~ ! ! •: T ~ ~·f: · ~ 1 E:. " ; t~1F.!TE~~!; !:=0; J..JH!L.~ I<~~E QO eEGl!-~ u;:, ! TE~ I : 5 , E f I J : t , ' . : E : ! + 1 : 4 ,

e

[

! + 1 J : 4 . . , : E ) ; 1,10 T T.:-1 t,.I, \.,1 ... , - -••1 PROCEC'UP.E . PATTr,nrc:1, .1. '' ' ,__...,

...

.

' ' NAME (. !D EES;N I:-lTEGf~; C ~ TP , r ~ Tt.., r ' ..lt:, ...,. 1

FILE ; IS !S GLQBAL, ANDERS ERRORS1 ~1

\JRITELN< '• u S.A'.'E PATTERNS TO DIS!-'. lJRITELN;

REPEAT

WR!TE< 'ENTER FILENAME

READLN(NAME),

.

\ .

(45)

PROCEDURE PATFROMDIS~;

VAR!, ERRORCODE INTEGER;

NAME STRING;

( • ID F ! LE; • .'

BEGH-l

\JRITE"N•: . • u REAC· PA:TERt-J= FROM DIS~ •++ .';

\i.1R!TELN;

REDEF.T

t.,,•D.ITE( 'ENTER FILEl·lAME

READLN<NAMEl;

P.ESET( 1D ,NAME \;

ERRORCODE:•IORESULT:

SHOWERROR!ERRORCODE );

UNT!L ERRORCD □ E=0;

I:=BLOCKREAD!ID, BUFFER, 8, el; (+ DOE NIETS MET ! (!=8! •)

ERRORCODE:c!ORESULT;

SHOWERRORCERRORCDDE1;

IF ERRORCODE=0 THEN \JRITELN! 'PATTERNS IN MEMORY NOli.l' !

ELSE WP!TELN< . NO PATTERNS LOADED' ) ;

CLOSE{!D); ~•!+4 _ ! END; !• PATFROMD!S~ •l P.:ITt.i::.' ' ' 1 , ~ • • ' , C: EP.P·'.;D INTn!S : INTSGf:R; r•µAR, v~ •· ., ' , ERP,:i?: =F'A~SE; ~1R ! TE ( CHR 1~ 2 ) :·; l,1P.ITEl_!,,('+ ♦ ♦ p AT TED !·l \JF. l:EU!; RSPEAT

<

0 .. 255 . : ; READGETAL(0,255,!NTENS !; WRITELN; PAT8ACKGROUNQ12,1NTENS,Bl; REPE/H

\i.lRITE! . CHANGE SINGLE L!NES7 < YIN >' );

REAQWRD(Sl; WR!TELN;

IF

s=

·y·

THEN BESIN

W.R!TE( 'LINE NR'i" w'i •• 5 ! ! >, ) ;

REA!::'G!:TAU 0 ,S! 1 ,LH-JENP); l\1R!TEL.N;

l:.!R!TE{ . !NENS!TY?

<

0 •• ,255

>'

);

REAOGETAL!0,255,INTENS!;

8[L!NENRJ:•!NTENS; WR!TELN;

ENC,;

UNT!L S• 'N.;

WR!TE< 'MORE PATTERNS?

READWRD(S l; WR!TELN;

PATTOBUFFER!PATNR,B,PATMEM,ERROR);

!F ERROR THEN WRITELN< 'ERROR: PATTERN BUFFER FULL! ');

UNT1L S='N':

WR!TELN! 'PATTERNS SA~ED TO MEMORY BUFFER' t; WR!TELN<'El<!T FR.OM PATTERN INPUT NOl-.1. · l ;

END;

BE1

:: ! ~'1

(46)

~ • C~p~.ir-·.ig~-: • ' < • ! P C1 1 9E 5 ~ ~ C• JON~ER ! GERR!TSEN • 1 ( • 23 JF:NUA~l l 9t?7 • ) ,: •::+• ,\ PROE~AM F:lef:l!~: USES I ~PTC'CÇ . _' ,..., .... . _ _ . _ 1 (• LnB!EEE SLECHTS

TYPE DOUELESLOC~ = PACKED ARSA~ [0, .!023J OF CHAR;

S : CHAP.; NAME : STR!MG; R • 1 T!\11::C:, LJ .. - . . . ... ' BUFFER : PATBUFFER; BB: DOL'BLEBLO~:; T • T r-1Tl:",':1:"Q • .& • .& ~ • • . _ V - r' ' STATE,CNTR,PTRNNR:INTEGER~ El8~!.s,EP~ORC.iJ[1E :!~!TEG~P.: l,..'C•~_!-: : EC:0!...EAt•J; VAP CNTR:!NTEEER!; 7 :: . ; - ; ·~ t: ~ ~:::r.:~.::.:• T T , .. ~t::.., , T :.:::::..-;_:--;,, , ~ 1 ... '-~- .. • J. . , •• ~- . J .... / . - • -" .• , - -.... ' ' PCAnr-CT"-! ( t~ ?CC., Tl MCC: \. 1 t - 1 : __, ,._ - 1 < ·- ' '-' ) - '-' - ) 1 .... 1 • . , _ ._, • 1 C~!TR: =cr,:TP• ~; EErCNTRJ:mCH~!TIMfS :~ 1,1•• .;, .TTi:;-. _ _1 1\,,. f 1, l,~I~: T ~L..h,: l.'PEE< CAS::: !!•/FUT OF .. 1 ; Y: THEN GOTO STATE Y X := 1; WHILE < Y0 0) DO EEGHJ \:.!R!TELN; :=

(47)

! F Z ,,

>

•~

T HEN EEG IN r1-,1n:,. =rt-iT0-4-, . ... ' ,, . . . ... . . 1 SS[CNTRJ~=CHR!:.Z ~; El'JD; 8Bl8UCNTRJ:=CHR!CNTR-8UCNTF 1; EEE-! ~! !N!TBUFCER(BUFFER l; l:.1R ! TE\ . +++·H·++' ) ; WRITELN\ ·++~~+-4-+~-4-+++-4-•+++++++++++++++++++++++++~~+++++~++~-4-++~-4-~+~-4-+++~·

1;.iRlTE( . ++++++++++ lNPUT FATTERN ? <Y ,N> •.... ) ;

READ~1RD( S); IF sc·y· THEN BEGIN PATINPUT(B,BUFFER!; PATTODJS~<BUFFERl; Er,JC·; t·.1 F: ! TE,: -C - - - - - - - - ' ) ,

WRITE(

---=•--

ENTER SEQUENCE DATA?

---a-•---

~Y ,N~

PE A~L1 ~~ ''. : > ~ ~..' ~ : T ~ : =-=.-= ~ :... = -= --- - --= -- -- -= = ~ = .. -= = -- -:: - ~ ; !.:.1~ I 1 E~N'. , -·---c:a.s:. .... -=c.-----=--- ' ) ; \. '' REA[!~N~ NA!'--fE·,; PC:,.iCTïÇi C:. t-\1~:.,c ·1 •

.

'

...

..

..

, ._ ' .... ' '.' '' ,._ . ' ERRQRCOCE:=IORES~~•: E~QWER~OR:ERRORC~D~:; L!~!T IL. , Nf\14::·, :·'. l f:N-:.: ·'. ERRQP.CODE=f:.' :: (..., ·1\... lTO • =Ol . ' ' . .. ... ~ 1.-JHILE 1)0!_H [10 E.EGir,J !N~TfTE!~TATE,BB.~NTR1; CNTR: =CNTR+ l; WR1TELN; WRITE( ·••••=======•===••-~•c=••==•==••==· >;

WP.ITE<

·=

NEXT STATE?

P1:An1.1cn1 c: 1. f , . _ , r..., -·~ ~..., , .,._. , , VOLH:"' S= . Y . ; \JRI TEL~J: STATE: -STAT!::.,_ 1 ; C:-t,ln • -·"'-'f <Y,N> ) ; BLOC~S:=BLOC~WR!TECG,EP,2,©l; SHOWERROR<!ORESULTl; CLOSE(G,l..OCK ); SHOWERRORCIORESULT); ~ .. s I -4- ♦ ) END; END. \. ''

(48)

(+ INSTITUUT VOOR PERCEPTIE ONDERZOEK 1925 • l !+ JON~ER & GERR!TSEN ; ~URVERS ~ BE!J~ • l

(• n JANUAP.! 1997; 2 APfdL 193? •

:-(• PROGRAMMA VOOR DE BESTURING VAN DE PLE VANUIT APPLE !! EURDPLUS•l

USES LAB IEEE ,APPLESTUFF ,PfHLI8 l ,PATLI82;

(• TYPE BYTE !5 2 MAAL GEDECLAREERD •l

!+ OPGELOST DOOR IN PATL!El TYPE BYTE! OP TE NEMEN. • 1

CONST SLOT A,-,.,.. 1 c:. ''t-'1-' ... ~ D8EC.1l NCïEC1I nrct.c, c. CLEF-.P Î • '' 7. tl' .• _, ~-1 ,, .

-

.

= -:,?10:17101. --... 1 0; TRUE; F~LSE; '

.

. , ;~·p:: E'LC'~,= P~C'~:~Q AP~F-·'! [0 . . !=.! ! J OF CH~P; LNENTGR=!NTEGER[?J; BLOC~S,BLOC~NUM5ER:INTEGER: ~ • î I\JTJ:O~r T T 1 :ç, •• • •••, -•••,..,.r..,.,._' G,F:FILE; CH~: SM:! r.,!TE~-se; SRQ: EOOLEA~!; BUFFER:PATBUFFER;

(49)

1

.JP.! TE!...N ---+

tJRITE!...N +++

~1R! T!:!...N *~+

E :• ENASLE SEOUENCER l;

F := SEN □ DATA FILE );

W~!!E!...M ~ ~++ S := $END c:r=o111::-~1ri::: !=JLE 1; H .- HELP );

M := MONITOR STATE 1;

~! := OISABL.E MON!TOR STATE J;

Er

.

,:n

....

• '

PPOCECURE CHEC~SRQ'.VAR SR,Errcr:BDOLEAN!;

!• CHEC~ ON A SERV!CE REOUESl •l

!• !F PRESENT THEN START SER!AL POLL PROCEDURE •l

'.• REPORT THE STAUS BYTE• ) VAR St~tus:Eyte; BEGlN C:0•:TC:,CCt, • ..,

.

•, - ... .__ --

.

....

' !F SR THEN EEfIN

l,1r!te~ 'Ser·.:!ce !""eQ'.jest: · );

St~tus:=!E?S~cl!!PL~,FALEE,Du~~ySecfdr ,Errcr!;

~\• f? ~ E ~ N ; \J R IT E , .... + + . , C HR ( 0 7 i l ; C t ~ E :. ~ 2. t u ~- 0 F

ES ~ \·.1 :--i t e < · C ~ e: k e !J ""; er r--::, ; · ) ;

t.? : ~-i - i ~ e ·: :...~: ;:-!'"":; ;:

=

1 ~ ~ ~-... ;: r: !..! rr: t e - :·• ;

SS:0-i~e! un~n:~~ state

?S:i:,•:1~e~ il!e;~l ~~~ 1er~ r.~"":bt: );

"72:,.-;~.:~e; ·e~:-c~ : ;. +1 lelen;1-1~ ·) ~t-it': • ... ·~ 1 ~ + ,-h~ -t· c:.,..."" ~ .. ..,,,_,,_,,. _, . .., r.-.. ,-..... ). ) ' -' ' ...,

.

; ' VAR CH~SM:INTEGER;

VAR Err~r:POOLEAN>;

(• ~E~D THE RECORD !DENTIFIER •:

(• SPEC!FIED

e

Y

'A". • l

!• F!RST ~AKE PLG LISTENER • )

I• AND THE APPLE TALKER *l

(+ PUT 'A• INA LONSSTRING BECAUSE +)

<• THE PROCEDURE !E3SEND CAN'T •)

~ + USE BYTES. •)

(+ IF 'A' IS 255 THEN +.).

<• OUTPUT THE S.EQUENCE !DENT!F!ER •!

VAR IQS:LONGSTR!NG;

BEf!N

!F !Net Errcrl THEN EES!N 1 F A·> 25S THP•l BEG:: ~i S e 't :_ c ng S t r Le n \ ! C'S , 2 ) ; i [·S [ 1 J ~ ~C.HR ( 15 .'; !C1S[2J:=CHR1:A>1 ELSE BEE!!'!

S~TL.ONG'3TR~EN-1, !OS, l ~.;

(50)

ENC•;

Wr-: teE;r·cr·< 'e't T~.L~: lN SE:'JC·![1,E;;cr ,\;

!E3L~~ten![PLEl,TRUE,Errcrl:

!E3Se~d< ![:~ ,FALfE., TP.1JE ,eyte~Sent ,E!""'rcr ~;

l·J~ite.Er--rc:~ 'at SENO!NG !N !E3:e~d 10' ,Er"r~~-:•;

END;

C• DEZE PROCEDURE ZENDT EEN BLOK VAN PACKED CHAR'S OVER• )

PROCEDURE SENQ51S:8LO~;

VAR Beait:LNGNTGR;

VAR CHKSM:INTEGER;

VAR Errcr:BOOLEAN!;

!• CONVERT THE 512 BYTES PAC~ED ARRAY OF CHAR, B, INTO • l

!• FOUR LONSSTR!NSS OF 128 BYTES AND SEND THEM TO+!

1 THE P~E S~ US!NE PRJCED~RE !E3SEND • )

!• WH!CH IS THE REASON FOR M~KINE THE +l

!• CALCUL~TE THE CHEC~SUM BY SUMM!NE ALL• )

tJ.ö.P C: • ! ,-,.-,,-.c: 4 - , ....,,.., • ...

----

··

~-

.... ~••:,~ ! , .. 1 ,E/'te~.:e:.·:; }f,l'TE>2:E:~; cr;c. 1 •= f:·. 1r1 i-:-; nn c:rr ... 11~;::c·r r1. ' ~ ,. . . . # . . . • .... • . .. . 1 ... ... . . ., - - . . . ' lC~C·c..-.~rC: ::.:...: C:C M" .... C'l C.,,+.e:.-::C=•"'+ C.-,-.... r ', . _. ._ - .._ ' -' '._,' - ~' ' , .... ..,. ._ 1. '._ • ._. ~ ._ .• • ' -- - ·- ' ' ' f...,. ' ·- • 1

IE::~e~ci~ ~ ~c~!....~~ ,M:;e ,8:-·t e~Se:o;t ,E~;cr- .';

~ ~.:. • • · =R ~ =i, • •C• ,, -t .c.-: C z:. r1 ♦ • t.,., ... -· . . ,, • ..., - - . . ... ; • - .... _, ... ' .. ,

0 ~ = , + :C. ~: " + J.. D,, • o c-Co.-+ •

._._.._ . .,. . . .... _._, .... ~ ..... ) ... _. ... , .. 1

IE3Se~d'5,cALSE,Mcre,Sytes5e~t ,Err:r l;

Eaa1t:=Bae!t+B;te!Se~~;

FOP !:= 0 TO 51! 00 CHKSM:•1CHfSM + ORO!E[Il )1 MOO :55;

c~,r. .

... f

(• ~E~E PROCEDURE ZENDT EEN BLO~ VAN BYTES OVER• !

PROCEDURE SENDB!B:LINES;

t'AO ,./,.,.

VAR CHKSM:INTEGER;

VAR Errcr:eOOLE~Nl;

!• CONVERT THE 512 eYTES ARRAY B !NTO •l

<•

FOUR LDNSSTR!NGS OF 12B eYTES AND SEND THEM TO •l

(51)

C (') C T • - 1 -, ;::: T (1 7 C: C: r.,-. C r T - 1 ~ 7 i • = L..; Q ; C r T + / + l l · ••

( .... ,, .. ~- ... ... - ~ _ .... _,..,. ,_, J~ ... - - , .,1 ,,

!E3Send(S,FALSE,More,8ytesSent ,Error!;

eeait:=8eait+8ytesSent;

FGR I:= 0 TO 5!1 DO CH~S~:=tCH~~M + 5[IJ l MOD 255;

Er·1C1

;

PROCEDURE SENDCHKSM!CH~SM:!NTEEER:

VAR E~ait :LNGNTER;

t..1AP Er;:,;:eC!·JLE~.!l!;

1• CALCULATE THE CHEC~SU~ • l

'

oc

A SENQ DATA RECORD• )

,: • ANC SEiJD IT TO THE PLG • J

VAR CHS:LONGSTRING;

BEGIN

IF !NOT ERRDR l THEN

BEGIN Se'tLc~~Stri!...e~( CHS, 1); CH~SM:•255-CH~SM; CH3'.1J:=CHR•CH~5M1; ! E:: ~ e ~ d" C H ~ ~ D i:.• E C l , N c. ~! c ~ e , B :,' t e e Se!""; t l E ~; o,... J ; Eesit:=eael~~s;tesse~t: '..,1~-~ S::tf!::?er.t: l:.tege; ; VfR Errcr:BDDLEAN:; CMDSTR[3J:=CHP!25S-!S?-CMD l;

!E3Tel~tA~?!e,Errcr /;

l:.1~it~E~:---c-r( · a~ talk ' ,E:--:---:::r); re:-;;:, ; C ... e'l'""\1ro1 r:., 7Ptli: c .... ,...,.. \ .

... ~~ ........ •~··· .. •- - J, •••1,.---,-·· ,,

c:-.-.,-..,- '..

,._, r ,.._,, ' 1

!E3SendiSMDSTR,DcEG! ,NoMcre,E;tes5ent ,Errcr l;

Wri teErrcr( ' at ~ending CDM!"!P.,ND · ,Error);

END;

PROCEDURE SENODTFLIVAR BYTESSENT:!NTEGER1 UAR BUFFER

VAR ERROR:BOOLEANl;

~•·SP.ID ALL" 'P0ATTERN RECORDS CONTA!NED IN THE F!LE:,.)

(• USER ENTERS FILENAME •)

VAR !,CH~SM,BLOCKS:!NTEGER: ERR, 5RQ:800LEAN; BAA!T:LNGNTGR: B::? : L!NES; BEG!N E;~c~:•FAL.SE; PA.:.TT•,.(1, • ...,, , ., ... , . ""''f PATFROMD!S~(B~FFERl; FOR !:=0 TO 99 DO BEE!N

PATFROMBUFFER!I,82,BUFFER,ERR!;

PATBUFFER;

IF NOT ERR THEN BEGIN! • PATTERN MET NUMMER! BESTAAl •J

l~RITELN! 'TRANSM!TT!NG PATTERN . ,! l:

Referenties

GERELATEERDE DOCUMENTEN

De OSF heeft in haar reactie ook bepleit om te regelen dat gemeenten de bestanden met uitslaggegevens die worden gegenereerd door het gebruik van digitale hulpmiddelen niet zelf

Deze cellen worden in een biop- siepotje gedaan om naar het labo te worden gebracht voor verder onderzoek.. 2.3 Na

Het Overheidsbreed Beleidsoverleg Digitale Overheid besluit om de standaard op de pas-toe- of-leg-uit lijst te plaatsen Klik hier voor de pas toe of.

• Limburg : Provinciale studiedag vermissing 2012 – voor WZC’s en politiezones.. • Vertaling vermissingsprotocol naar de thuissituatie 2015: samenwerking

2) het aanmaken van een spelers profiel en aanmelden voor toernooi. 3) Inchecken voor toernooi en klaar om te spelen.. Het user account bestaat uit een emailadres

2.4 Naar aanleiding van verweersters reactie van 8 juni 2020 heeft een stafmedewerker van de deken verweerster bij e-mail van 16 juni 2020 gevraagd om de stukken waaruit blijkt dat

Voor het verzetten van een afspraak kunt u contact opnemen met Noordwest Pijncentrum op werkdagen van 09:00-13:00 en 14:00-16:30 uur, telefoon 072 - 548 4224.

De eigenaar van het vaartuig, of zijn vertegenwoordiger dient, via een erkende particuliere instantie of erkend klassenbureau, bij de ILT het schriftelijke verzoek in om gebruik