doc_20150804171502

Upload: stefanmansier

Post on 01-Nov-2015

7 views

Category:

Documents


0 download

DESCRIPTION

Zelf tekens ontwikkelen, voor C-16/Plus 4

TRANSCRIPT

  • D e karakterset (dat zijn alle letters, cijfers en symbolen) waarover de C-16 beschikt, bestaatuit 512 verschillende tekens. Dietekens zijn verdeeld over 4hoofdgroepen. Je kunt echter maarover twee van die vier tegelijkertijd beschikken, omdat d tekens diapositiefen dianegatief zijn. Met andere woorden: je kunt maar over 256 tekens tegelijkertijd beschikken.Bij de 0-16 (en trouwens iedere 8-bitter) iseen karakter opgebouwd uit een matrixvan 8 bij 8 hokjes. Een horizontale reeksvan 8 hokjes noemen we een BYTE. Eenkarakter is dus opgebouwd uit 8 bytes.Iedere groep van 8 bytes op zich is weergenummerd:A heeft waarde 1B heeft waarde 20 heeft waarde 3enz.

    De grootst mogelijke waarde is 255.Deze waarden kun je vinden in het 0-16handboek. De tabel staat bijna achterin.Let goed opdat je wel de zgn. poke tabelneemt en niet die met de ASCII-codes!Als voorbeeld nemen we de letter A

    - -~~-~--

    ~.

    -~-

    -

    ~F]In byte 1 hebben bit 8 en 16 de waarde 1.We zeggen nu: bit 8 en bit 16 zijn aan. Dewaarde van de poke wordt nu 8 + 16 = 24.De waarde van de poke van byte 2 is dus 4+ 8 + 16 + 32 = 60 enz.

    12

    Karakter op het schermOm een karakter op het scherm te krijgenmoeten we de volgende stappen doorlopen.o Het PRINT-commando.Voorbeeld: PRINT AEr zal nu een A op het scherm wordengezet.o Het PRINTCHR$(x)-commando.Ieder teken op de 0-16 heeft een ASCIIwaarde, die ligt tussen de 0 en de 255. Letwel: deze waarden zijn niet gelijk aan depoke-waarden! Bijna achterin het hand-boek staan al deze waarden vermeld.Voorbeeld: PRINTCHR$(65)Er komt nu een A op het scherm, omdat diewaarde 65 heeft. Vul in plaats van 65 maareens een ander getal in tussen de 0 en de255. Je zult zien dat iedere waarde zijneigen teken heeft.o Het POKE-commando.Het beeldscherm van de 0-16 is opgebouwd uit 320 bij 200 puntjes. Dat is gelijkaan 40 bij 25 hokken. Ieder hokje heeft zijneigen adres. Het hokje linksboven heeftwaarde 3072 en het hokje rechtsonderheeft waarde 4071. De overige hokjes hebben een waarde tussen 3072 en 4071 opde volgende manier:

    Voorbeeld:P0KE4032,1 zet een A op adres 4032

    (lin kson der)P0KE3072,2 zet een B op adres 3072

    (linksboven)POKE3111,4 zet een D op adres 3111

    (rechtsboven)

    Kort samengevat:Bij een POKE-commando worden dusachtereenvolgens het adres (0- 65535) ende code (0-255) aangegeven, gescheidendoor een komma: POKE adres,codeDeze waarden staan in de poke-tabel. Nog een andere manier is het CHARcommando.

    Voorbeeld:CHAR kleurcode,x,y,string,reversekleurcode = 1 is multicolor, 0 is normaalkleurx = teken rij 0 - 39 (van links naar rechts)y = teken rij 0 - 24 (van boven naarbeneden)string = een naam tussen aanhalingstekensreverse: 0 is uit (reverse 0fl),

    1 is aan (reverse on).

    CHAR1,10,4,test: zet het woord test inkolom 4 en rij 10.Dit commando kan zowel in de grafischeals in de niet-grafische mode worden gebruikt.

    Een kort programmaOm een en ander van het bovenstaande inde praktijk te gebruiken, gaan nu zelf eenteken ontwerpen. In onderstaand voorbeeld is dat een copyright-teken.We tekenen eerst het schema en vullen datin. Daarna kunnen we de waarden van depokes bepalen en die erachter schrijven.

    De volgende stap is een programma teschrijven om de karakters vanuit de ROM(het vaste geheugen) in de RAM (het geheugen dat we kunnen programmeren) tezetten. Dat doen we met dit programma:10 v=6528020 pokev+18,peek(v+18) and 25130 pokev+19,peek(v+19) and 3 or4840 fort= 832 to 84950 read a: pok t,a; next:sys83260 data 162,0,189,0,208,157,0,48,189,0,209,157,0,49,202,208,241,96

    Standaard luiden de regels 20 en 30 resp.:poke 65298,196, en poke 65299,208Tip: programmeer van tevoren een zgn.key op de volgende manier:keyl,poke 65298,196:poke 65299,208+CHR$(13)Als je door een foute handeling (bv. eentiktout) toch een warbeeld krijgt, dan hoefje alleen F1 in te typen. Het scherm krijgtdan weer een normaal aanzien. Typ danHELP en de computer zal de foutmelding op het scherm zetten.

    De regels 40 t/m 60 vormen een machinetaalroutine die de karakters vanuit de ROMin de RAM zet. Deze karakters starten opadres 12288.Als ik karakters ontwikkel, begin ik op

    adres 12800, zodat ik alleen de symbolen-set verander en niet de belangrijke lettersen cijfers.We vervolgen ons programma:200 fort=12800 to 12800+(ak X 8)-1210 read a: ifa> -1 then poke t,a: next

    In regel 200 staat de variabele ak vooraantal karakters. In ons geval is dat 1,omdat we 1 karakter hebben ontworpenen dat in het geheugen willen zetten. Regel200 wordt dus:200 fort=12800 to 12800+(1 X 8)-1Nu zetten we de data van ons copyrightteken in regel 1000. Deze regel ziet er zo

    data126,195,153,161,161,153,195,126Nu kunnen we het programma RUNnen. Ergebeurt niets zichtbaars, maar als we nuP0KE3072,64 intikken zien we in de linkerbovenhoek ons teken staan!

    We maken nu nog een teken, een pijl. Wetekenen weer een schema en vullen het in.

    4 2 1

    Het aantal karakters is nu dus 2. Daarompassen we regel 200 weer aan:200 fort = 12800 to 12800 + (2 X 8)- 1Nu moeten er nog wat data bij, die zettenwe in regel 1010.1010 data 8,28,62,127,8,8,8,8,-1Ons programma is af. Als we het nu RUNnen en daarna POKE3O72,65 intikken zienwe ons pijltje in de linkerbovenhoek staan.Snellergaat: PRINT-: REM. Ditisshift +* teken.

    We kunnen nu dus zelf tekens ontwikkelen,ze in het geheugen en vervolgens op hetscherm plaatsen.Je kunt deze informatie voor nog veel meerdoeleinden gebruiken. Wat dacht je vaneen eigen spijkerschrift? Je hoeft dan alleen het adres in regel 200 aan te passen.Adres 12800 wordt nu 12288!

    ~_

    Voor het maken van een leuk programma heb je soms tekens nodig die niet standaardin de tekenset van de computer zitten. Je moet dan dus zelf tekens ontwikkelen. Maarhoe werkt dat? Henk Boxma geeft in dit artikel de antwoorden.

    Voor C-16/Plus 4

    Zelf tekens ontwikkelen128 64 32 16 8 4 2 1

    enz.

    uit:1000

    128 64 32 16

    128 64 32 16 8 4 2 1

    8

    Novel( 14kleurmonitor

    byte 1

    byte 2byte 3

    byte 4

    byte 5byte 6

    byte 7byte 8

    kolom 3111

    laijeprijs= 24

    = 60

    = 102

    = 126= 102

    = 102

    = 102

    =0

    =8

    28

    62

    127

    =8

    =8

    =8

    =8

    307131123152319232323272331233523392343234723512355235923632367237123523792383238723912395239924032

    L

    rij

    rw geschikt i~oo.aL Cornmoc1orej~ en C128Manudax biedt u eer~ 14 kleurenmonitor van praktisch professionele kwaliteit voor een bijzonder scherpe prijs. Een monitor metuitstekende technische specifikaties, bij uitstek geschikt vooruw computer.

    1 14 kleurenbeeldscherm PAL en RGB ingang 1 bandbreedte7 MHzR groen omschakelbaar audio kanaal 1 metalenbehuizing robuuste konstruktiel

    Novex 14kleurenbeeldscherm,

    mcl. kabel J excl. btw77fl postbus 25, 5473 ZGMalluilax Heeswijk-flinther, Hollandtel. 04139-8911,telex 74810, facsimile 04139- 1009 (aut).

    -~4071

    Veel success!Henk Boxma

    13