››››››››››Welkom bij Coderunner nummer 3››Deze keer gaat het uitsluitend over machinetaal.›De reden hiervoor is dat het wat meer aandacht vraagt om in machinetaal tot resultaat te komen.›Basic kent een heleboel kant en klare opdrachten die in de computer eerst worden vertaald.›Dat gaat ten koste van de snelheid van de computer. En veel dingen kun je er eenvoudig weg niet mee programmeren.›Met machinetaal is alles mogelijk en sneller kan de computer niet.›Tevens werkt basic een beetje misleidend. Het heeft overal zo z'n eigen manier voor. Als je er voor gekozen hebt basic eerst te leren, kost het later wellicht wat meer moeite om te leren wat de computer werkelijk kan !››_______________________________________›Deze les gaat over het behandelen van het beeldscherm in machinetaal.›_______________________________________››Kijk om te beginnen eens naar het CODERUNNER programma op het scherm. Eerst zie je een stukje zwart, dan grote letters, daarna kleine letters, dan weer wat zwart en dan weer grote letters.›De vraag is: hoe komt dat daar ?›Of hoe bepaalt de programmeur wat er op het scherm te zien is ?›Ofwel, hoe krijg je de computer zo gek om datgene op het scherm te laten zien wat jij wilt ?››De XL/XE heeft daar een handige oplossing voor:›Je geeft de computer een lijstje met wensen !›Bijvoorbeeld:›Bovenaan wil ik dunne streepjes, dan blokjes, daarna grote letters, dan kleinere letters etc.››Moeilijker is het niet.›Feitelijk is het even simpel als met een boodschappenlijstje naar de kruidenier stappen.›Onze computer-boodschappenlijst noemen we in dit geval de 'DISPLAYLIST'.››Omdat alles m.b.t. de computer nu eenmaal zo geregeld is, is ieder onderdeel van deze lijst natuurlijk een getal dat op een bepaald 'adres' in de computer komt te staan.›We bergen dus getallen op in een serie aaneengesloten bytes in het geheugen van de computer.›De computer leest dan deze 'lijst' en voert onze wensen uit.››Het enige probleem is, dat de computer geen mens is.›Een kruidenier herkent een boodschappenlijst aan de artikelen die er op staan. En/of het feit dat jij dat lijstje in je hand hebt.›De computer moet echter duidelijk gemaakt worden dat het om een boodschappenlijstje gaat. En je moet vertellen waar die lijst is.›Dat kun je allebei in een keer doen door het startadres van het lijstje aan de computer door te geven.››Dat gebeurt in de computeradressen 560 en 561 of hexadecimaal $230 en $231.››Om iets op het beeldscherm te krijgen moet dus eerst een lijst gemaakt worden met wensen.›Dit noemen we de DISPLAYLIST.›Dan vertellen we de computer waar die lijst te vinden is.››We kunnen kijken hoe dit in de praktijk daadwerkelijk gaat.›Zo'n DISPLAYLIST is handig te maken in een assembler.››Om in een assembler een getal van 8-bits in een bepaalde byte te zetten gebruiken we de opdracht ".BYTE".›Let daarbij op de punt voor het›woord BYTE.›Een voorbeeld:›10 *=1536 ; startadres›20 ONZIN .BYTE 12,13,14››Geassembleerd zet dit de getallen 12 t/m 14 in het geheugen vanaf adres 1536.›Op adres 1537 staat dus 13.››Bij het maken van een DISPLAYLIST hoeven we alleen deze fictieve getallen maar te vervangen door zgn. codes.›Iedere wens kan worden weergegeven d.m.v. een 'code' in de lijst.›Bijvoorbeeld getal 112 betekent een stukje leeg scherm van 8 beeldlijnen.›Als je goed naar je beeld kijkt dan zie je dat het beeld feitelijk bestaat uit allemaal dunne horizontale lijnen. Deze lijnen noemen we beeldlijnen of scanlines.›De opbouw van het beeld begint ook bij onze lijst bovenaan het scherm.›Wanneer we dus aan de computer doorgeven 112,112,112 dan worden bovenaan het scherm 3 x 8 beeldlijnen leeg gelaten. Dat zijn de lege zwarte stukjes die je ziet.››De diplaylist ziet er nu dus zo uit :››110 DISPLIST .BYTE 112,112,112››Nu volgen de gekleurde grote letters:››120 .BYTE 70››Het getal 70 is de ANTIC-code voor grote gekleurde letters. Waarbij ANTIC de chip is die voor dit moois zorgt.››Behalve het feit dat we dit soort letters wensen, wil de computer nu graag weten waar het zgn. schermbeeldgeheugen van deze letters zich bevindt.›Wil je bijvoorbeeld je naam in van die letters op het scherm brengen dan moet je ergens in de computer een plekje aanwijzen waar die naam staat.››We voegen daarom het adres van onze naam toe achter de code.››130 .WORD SCHERM››De opdracht .WORD is het plaatsen van een 16 bits getal.››Nu kun je een aantal regels met gekleurde letters plaatsen vanaf het zelfde beeldschermadres.›Dit kan door middel van een andere code. In dit geval een 6.››140 .BYTE 6,6››Dit is goed voor nog twee regels gekleurde letters.››De displaylist moet je beeindigen door een verwijzing te maken naar het begin van de lijst. Anders krijg je echt heel rare dingen op het scherm.››We doen dit d.m.v. het getal 65 als code en daarna het adres van het begin van de displaylist.››150 .BYTE 65›160 .WORD DISPLIST››Achter de displaylist kunnen we bijvooorbeeld het schermbeeldgeheugen maken:›170 SCHERM .SBYTE " MIJN NAAM IS "›180 .SBYTE "??????????????"››Nu hoeven we alleen nog aan de computer te vertellen waar onze displaylist zich bevindt.››10 *=1536›Het begin van ons programma.›20 LDA #DISPLIST›50 STA 561››Dan zetten we het programma in een eindeloze lus:›60 VAST JMP VAST››De totale listing kun je zien in het voorbeeldprogramma.››Pruts er maar eens een beetje mee.›De volgende keer volgt een overzicht van de beschikbare codes.›Een verdere behandeling van het maken van een diplaylist in een assembler.›En iets over hexadecimale getallen.››››››››››››››