home *** CD-ROM | disk | FTP | other *** search
/ Pokey's Magazine 4 / Pokeys_Magazine_04_1991_01___nl_Side_B.atr / lescr.txt < prev    next >
Text File  |  2023-02-26  |  7KB  |  1 lines

  1. ✓¢Deze keer een kleine herhaling van het voorgaande.¢En we gaan verder met de DISPLAYLIST¢¢De computer bestaat voor een deel uit zgn. RAM geheugen. In dit geheugen kunnen getallen worden geplaatst. Het geheugen van de computer bestaat uit kleine schakelaartjes die aan en uit kunnen worden gezet.¢Deze schakelaartjes worden BITS genoemd.¢Acht bits samen vormen een BYTE. In een BYTE kunnen getallen van 0 tot 255 worden geplaatst, 256 getallen dus !¢Bij onze zgn. 8-bits computer kan zo'n byte ook worden omschreven als 'adres' of 'lokatie'.¢Er zijn ook computers waarbij ieder adres twee bytes omvat. Dit zijn de zgn. 16-bits computers. Waarmee gelijk de vraag van de prijsvraag is beantwoord. Twee bytes samen noemen we een WORD.¢De computer kun je besturen via opdrachten aan de CPU, het centrale zenuwstelsel van de computer.¢Deze opdrachten worden verwoord via getallen. Getallen zijn dan ook de enige dingen die een computer  begrijpt.¢We kunnen een serie opdrachten achter elkaar plaatsen in de bytes van het geheugen. Als we de computer vertellen waar deze opdrachten staan voert hij ze in volgorde uit. Dit is dan de uitvoering van een een machinetaalprogramma.¢Machinetaal is de taal van de computer. Een andere taal begrijpt de computer niet. Een andere computertaal is zelf een machinetaal programma.¢Machinetaal is dus de meest direkte manier om een computer te programmeren.¢Tevens is het ook de snelste computertaal. Het programmeren van grotere machinetaal programma's is echter vrij ingewikkeld.¢¢De volgende opdrachten zijn behandeld:¢¢LDA , STA ¢¢Dit zijn opdrachten voor een zgn. ASSEMBLER. Een assembler is een programma dat symbolische opdrachten omzet in getallen, zodat het programmeren eenvoudiger wordt.¢¢Het plaatsen van getallen in bytes van het geheugen moet steeds gebeuren via een register. Dit is een onderdeel van de CPU. Genoemd zijn het A register, het X register en het Y register.¢¢LDA #10¢STA 710¢¢Betekent :  laadt het getal 10 in de accumulator ( A-register ) en berg het op in byte nummer 710.¢¢De vorige aflevering behandelde het plaatsen van dingen op het beeldscherm.¢¢Dit doen we via de zgn. DISPLAYLIST. Een lijst met getallen waardoor de grafische indeling van het beeldscherm wordt bepaald.¢¢Deze lijst bestaat uit een serie codes.¢We plaatsen die codes achter elkaar ergens in het geheugen en vertellen dan de computer waar dat is.¢Dat doen we met de geheugenadressen 560 en 561.¢¢Voorbeeld :¢           *=1536   Plek in de computer ¢           JMP PROGRAMMA    Spring naar het begin van de opdrachten.¢Eerst de lijst met beeldschermcodes :¢¢DPL       .BYTE 112,112,112¢          .BYTE 70¢          .WORD WATZIEIK¢          .BYTE 65¢          .WORD DPL¢¢WATZIEIK  .SBYTE "Dit staat op het beeldscherm"¢¢PROGRAMMA  *=1536¢¢           LDA #<DPL¢           STA 560¢           LDA #>DPL¢           STA 561¢           BRK           Break, stop dus.¢¢Bij deze aflevering wordt een lijst met codes voor de DISPLAYLIST geleverd.¢¢Eerst een kleine uitleg over het bovenstaande stukje programma.¢Wat betekent : LDA #<DPL en¢               LDA #>DPL¢????¢¢Het woord DPL is een label in het assemblerprogramma. Een symbolische aanduiding van een bepaald adres dus.¢Hoewel de inhoud van zo'n adres altijd een getal van maximaal 255 groot is, wordt de aanduiding van een adres zelf  in merendeel aangegeven via twee bytes.¢¢Je snapt het wel. De nummers van de meeste adressen in de computer zijn meer dan 255 groot. In de computer zitten nl. zo'n 65000 bytes. Als je ze nummert van 0 tot 65000 is dat nummer niet meer in 1 byte te zetten. Bij gebruik van steeds slecht 1 byte zou het geheugen dan dus slechts 256 bytes groot kunnen zijn.¢¢Via een WORD kunnen wel alle adressen worden opgeslagen.¢¢en voorbeeld :¢Het adres is   *=1536¢Daar staat de displaylist.¢Het getal 1536 moet naar het adres 560.¢Omdat hier maar een getal tot 255 in past, is dat niet te doen.¢We nemen dan de volgende byte er bij en vormen een word.¢Een deel van het getal 1536 gaat nu naar adres 560 een ander deel naar 561.¢¢Met het door ons in het dagelijks leven gebruikte decimale telstelsel is een en ander veel ingewikkelder zichtbaar te maken dan in het afwijkende 'HEXADECIMALE' stelsel.¢¢Waarom ?¢¢Wij tellen normaal van 0 to 9.¢Dan beginnen we weer overnieuw met tellen van de 0 tot 9. Maar dan met een 1 er voor. Daarna met een twee er voor. etc.¢Het hexadecimale stelsel telt niet van 0 tot 9, maar van 0 tot 15. We tellen dus eerst 16 keer en zetten dan een 1 er voor. Daar gaan we :¢0 1 2 3 4 5 6 7 8 9 ... maar nu ?¢A B C D E F       .... en nu :¢10 11 12 13 14 15 16 17 18 19 ¢1A 1B 1C 1D 1F¢20 etc.¢¢Dat lijkt ingewikkeld, maar......¢¢Omdat de waarde 16 veel wordt gebruikt bij de opbouw van de computer is het makkelijk om met een 16-tallig stelsel te werken.¢Bijvoorbeeld : 2 bytes is 16 bits.¢Een pagina is 16 X 16 bytes groot.¢Het totale geheugen is 16 X 16 X 16 x 16 bytes groot.¢¢Een hexadecimaal getal duiden we ter onderscheiding aan met een $ tekentje.¢¢255 is dus $FF¢¢Het getal 1536 is hexadecimaal 600.¢Dat ziet er al een stuk simpeler uit.¢256 bytes verder in het geheugen wordt dit $700¢¢Wanneer we $600 over twee bytes moeten verdelen nemen we eerst het rechtse (lage) deel van het getal: de 00.¢Dit plaatsen we in 560.¢Dan het linkse en hoge deel 06 en plaatsen dat in 561.¢Dat is de wijze waarop de computer getallen boven de 255 begrijpt.¢¢De decimale transformatie is veel ingewikkelder. Vergeet dat maar !¢Ga over op hexadecimaal.¢In het begin een beetje moeilijk, maar straks onvergelijkbaar veel eenvoudiger om mee te werken.¢¢Terug naar de symbolische notatie in een assembler :¢               LDA #< is het lage deel van het getal.¢               LDA #> is het hoge deel van het getal.¢¢Je kunt het ook anders doen :¢               LDA #DPL&255¢en             LDA #DPL/256¢Dit is de aangewezen manier voor de ATARI EDITOR ASSEMBLER.¢¢Nu nog een lijstje met wat displaylist codes :¢¢                    decimaal  hex¢lege lijnen :       code :¢aantal    1           0       $00¢          2          16       $10¢          3          32       $20¢          4          48       $30¢          5          64       $40¢          6          80       $50¢          7          96       $60¢          8         112       $70¢¢tekst modes  :¢¢normaal               2       $02¢kleur                 6       $06¢kleur - groot         7       $07¢¢Grafische modes :¢¢blokjes               8       $08¢lijntjes :¢                      9       $09¢                     10       $0A¢                     11       $0B¢                     13       $0D¢                     15       $0F¢¢De eerste mode-code moet worden aangeduid met een zgn. Load Memory Scan.¢Een duiding naar het beeldschermgeheugen.¢Hiertoe tel je bij de eerste betreffende code het getal 64 op. Of hexadecimaal $40.¢¢Ook aan de codelijst zie je dat de hexadecimale codes eenvoudiger zijn.¢Vergelijk de codes voor de lege beeldlijnen maar eens !¢¢Dus :¢                *=$0600¢¢                .BYTE $70,$70¢                lege lijnen¢                .BYTE $02+$40¢                textmode + Load Memory Scan code¢                .WORD BEELDSADRES¢                adres van de tekst in het geheugen.¢¢                .BYTE $41¢                sprong ' naar het begin van de lijst' code¢                .BYTE $00,$06¢                adres waar het begin van de lijst staat¢                 ¢¢¢Zie verder het voorbeeldprogramma.¢¢¢¢¢