a b riek worden bewerkt en de wijze waarop ze worden weergegeven. Het lijkt gewoon meer op kartografie en dat is het ook! Literatuur Brunet, R. (1987), La carte, mode d'emploi. Paris: Fayard- Reclus. Foley, J.D. en A. van Dam (1988), Fundamentals of Interacti ve Computer Graphics. Reading (Mass.): Addison Wesley. Schans, R. van der (1988a), Grafische of geometrische gege- vens? NGT Geodesia 1988, pp. 215-218. Schans, R. van der (1988b), Verwerking van de geografische gegevensstroom met steun van de Computer. Wageningen: LUW Vakgroep Landmeetkunde. Smeets, J.F. (1987), Apparatuur voor de invoer, de verwer king en de uitvoer van rastergegevens. Kartografisch Tijd- schrift XIII, nr. 1, pp. 37-42. Wilton, R. (1987), Programmers''s Guide to PC PS/2 Vid eo Systems. Redmont: Microsoft Press. operaties uit: 5 AND 3 1. Met Mem kun je een willekeurige byte in het geheugen benaderen en de procedure Move ten- slotte kopieert een op te geven aantal bytes van de ene varia- bele naar de andere. Dat laatste gaat veel sneller dan het in een FORDO-lus overnemen van afzonderlijke bytes of in- tegers. Aan de hand van een voorbeeld zal ik nu het afbeeldingspro- ces toelichten. Het matrixfragment (figuur 6a) komt overeen met het afgebeelde in figuur 3. Het is geschaald tussen 0 en 255. De toegepaste OmzetTabel Staat, in gekomprimeerde vorm, in figuur 6b. De BMC's zijn hexadecimaal gekodeerd; daardoor kunnen ze later met eenvoudige SHL- en SHR-instrukties uit elkaar worden gerafeld. In figuur 6c wordt de verdere, niet eenvoudige, gang van za- ken geschetst. Eerst wordt per rij matrixelementen een array gevuld met de BMC's die overeenkomen met de waarden in deze matrixelementen. Dit array bevat dus nu de nummers van de patroontjes waarmee de afzonderlijke bitplanes moe- ten worden gevuld. Het vullen gebeurt per bitplane, en wel per groep van drie beeldlijnen tegelijk. In het voorbeeld is bitplane 3 gekozen. Appendix De procedure MaakBeeldPrent De hierbij afgedrukte procedure MaakBeeldPrent (in Turbo Pascal) is een vereenvoudigde en gefatsoeneerde versie van de in beitel toegepaste procedure. De 'officiele' versie kan ma trixelementen ook afbeelden in vlakjes van 1*1 en 8*6 punten en biedt daarnaast patroontjes voor de BitplaneMappingCo- des (BMC's) 1 en 3. Het uitgangspunt voor MaakBeeldPrent is, dat een willekeu- rig deel van de beeldmatrix (een window) op een willekeurige piek op het scherm (een viewport) moet kunnen worden weergegeven. Daartoe wordt opgegeven het geheugenadres van het element uit de matrix dat linksboven moet verschijnen, het aantal ko- lommen van de matrix (hier 128), het aantal kolommen en regels dat uit de matrix wordt gesneden, en de piek (in schermkoördinaten) waar de beeldprent komt te staan. Geheugenadressen zijn bij processoren van de 8086/8088- familie samengesteld uit een segmentadres en een offsetadres; het segmentadres adresseert steeds blokken van 16 bytes, ter- wijl het offsetadres steeds 65536 bytes adresseert vanaf het begin van elk blok. Doordat de procedure MaakBeeldPrent zo flexibel mogelijk is gehouden moest er veelvuldig met deze adressen worden gewerkt (het had misschien ook wel met pointers gekund). De bitplanes van het videogeheugen op de Olivetti EGC- kaart beginnen op de segmentadressen A000, A800, B000, en B800 (alles hexadecimaal, in Turbo Pascal met een aangege- ven). De opeenvolgende bytes in een bitplane korresponderen niet direkt met de 400 beeldlijnen op het scherm: de eerste 80 bytes vormen beeldlijn 0, de volgende beeldlijn 4 enzovoort; de funktie YOffset zorgt er daarom voor dat de, van boven naar beneden toenemende, Y-koördinaten worden omgere- kend in het juiste offsetadres van het begin van een beeldlijn. Turbo Pascal kent een aantal funkties en procedures die niet standaard-Pascal zijn. Ze liggen vrij dicht tegen machinekode aan en zijn daardoor erg praktisch om de snelheid te bevor deren. SHL en SHR vermenigvuldigen met of delen door machten van 2: 3 SHL 2=3*4=12 enzovoort. AND en OR voeren op de afzonderlijke bits van integers of bytes logische BeeldMatrlx verschaald naar 0 255: OmzetTabel (Array [0 255] OF Integer) kolom waarde BMC rij 64 65 66 67 68 69 70 71 0. 15 0000 86 1 13 133 159 168 177 163 173 170 16. .31 0002 87 103 102 136 149 167 170 172 167 32. .47 0004 88 86 65 98 129 153 166 174 172 48. .63 2004 89 1 1 1 67 107 135 142 152 160 169 64. 79 0024 90 107 73 123 160 161 143 131 139 80. .95 0044 91 100 1 10 152 153 162 152 151 145 96. .111 0042 92 126 147 158 150 166 163 160 151 1 12. 127 2020 93 152 151 161 170 176 167 159 164 128. 143 2040 144. 159 4040 160. 175 4240 176. 191 4440 192. .207 4420 208. .223 2420 224. .239 4400 240. .255 2400 ttf T bitplanes: 4321 procesgang van de opbouw van de bltpatronen, bl)voorbeeld rlj 93: 152 151 161 170 176 167 159 164 4040 4040 4- 4- 0 0 4240 4240 2 2 4440 4240 4, 4 2 O ■tf CN -F AJ O ^r o -+ o •V 0000 0000 0000 A050 0A05 AA55 FOFO 0A05 FAF5 0000 0A05 0A05 00 00 AA 55 FA F5 OA 05 00000000 00000000 10101010 01010101 11111010 11110101 00001010 00000101 BMC's voor bitplane 3 geORde patrooncodes high byte (hex) low byte (hex) gekopieerd naar bitplane 3 (oneven YBoven) Figuur 6. De beeldmatrix (a) wordt via een van te voren ge- vulde omzettabel (b) omgezet in patronen op de bitplanes (c). Uit patroonkodes worden twee PrentLijnen (PrLnl en PrLn2) opgebouwd, die zo vaak als nodig is in hun geheel worden gekopieerd naar het videogeheugen. 64 KT 1989.XV.1

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

Kartografisch Tijdschrift | 1989 | | pagina 66