|
Binair Naar Hexadecimal
Datum: Sat 03 May 2014 Om teksten op een Led-paneel te tonen, kan natuurlijk elke keer alle woorden worden "omgerekend" naar letter-puntjes. Behalve dat dit veel werk is, is het ook een saaie klus. Leuker is het om de tekens vast in het Arduino-programma op te nemen en daarna als eenvoudige "tekst met echte letters" via een procedure-functie op het Led-paneel weer te geven.
Een font tekenenAllereerst moet er een font worden geregeld. De basis ligt in het zelf tekenen. Hiervoor kan een apart teken-programma gebruikt worden, vroeger ging dat op ouderwets hokjes papier, (in dit geval) een viltstift en een pen. Er werden vierkanten getekend, ter grootte van een letter, bijvoorbeeld van 8x8 hokjes. Daarna werden de letters (cijfers, lettertekens en andere symbolen) in de vierkanten getekend. Elke regel werd als binair getal gezien en omgerekend tot een (hexa-)decimaal getal. Deze methode ging niet altijd meteen goed, getuige de "@" op de foto van de schets - pijltjes in de schets tonen enkele correcties aan. Natuurlijk kan er ook een font-bestand van internet worden geplukt, zoals het veelgebruikte 5x7-dot matrix font (bekend van de ouderwetse dot-matrix printers), bijvoorbeeld van de Adafruit-site. 5 bij 7 punten is de minimale bezetting om alle letters en cijfers in kwijt te kunnen. Alle vertikale lijnen van de tekens zijn 1 punt breed.
Het Commodore fontMaar ... als oud commodore gebruiker vind ik het font van de Vic-20 en de Cbm64 net iets mooier. Een keurig 6x7-dot matrix font (brede letters zijn 7x7), geplaatst in een 8x8-matrix (8 bytes met elk 8 bitjes). Alle vertikale lijnen van de letters zijn 2 punten breed. Uiteraard kan ook hier eerst alle letters worden getekend en daarna worden uitgerekend. De truuk is bekend en het is een eenmalige aktie. Sneller (en vooral ook leuker) is het om de inhoud van een character-rom uit een Vic20, of Cbm64 uit te lezen en in een binair bestand te schrijven. Dit bestand is dan eenvoudig naar een PC toe te sturen (Rs-232, floppy-disk, ... mogelijkheden genoeg).
Omzetten van Binair naar HexadecimaalDe volgende stap is om hier een zodanige notatie van te maken, dat de Arduino C-compiler er mee om kan gaan. Decimale cijfers zijn op zich makkelijk en dat werd toen ook erg veel gedaan. Commodore-Basic is helemaal gericht op decimale getallen. Maar voor de Arduino vergt dit extra werk (een geschikte uitlijning maken, bijvoorbeeld). Tevens is het terugrekenen van decimaal naar binair (mocht er een letter toch niet helemaal mooi uitzien) niet erg makkelijk. Er is daarom gekozen voor een hexadecimale vorm. Om het binair om te zetten in hexadecimaal, is een eenvoudig (recht-toe recht-aan) Pascal programma gemaakt. Binair bestand wordt ingelezen en per byte 1-op-1 omgezet in een hexadecimale notatie. Alles achter elkaar. Dat is alles wat dit projekt-deel doet. Wat rest is een editor-bewerking (zie het projekt-deel "cbm-font").
Een Cbm64 Basic Programma erbij?Voor de volledigheid is een Cbm64 Basic programma erbij gezet van hoe de Rom's zijn uit te lezen en "uit te printen", echter dit resulteerde niet in de gewenste actie. In plaats van de Character-Rom kwamen er cijfers uit de Vic, Sid, kleuren-Ram en de Uarts. Bank Switching is hier de oorzaak van geweest (adressen worden gedeeld door meerdere componenten - dit is om te schakelen via adres $0000 en $0001, een extra I/O-port op de CPU 6510 zelf). Één van de eigenschappen waarmee men overigens fantastische dingen op de Cbm64 kon doen. Broncode: [1: Binairy To Hexadecimal] 1: De broncode van Binairy To Hexadecimal(Sat 03 May 2014) Een eenvoudig Pascal programma om een binair bestand om te zetten in een hexadecimaal bestand - Gevolgd door een Cbm64 Basic programma om Rom-data uit te lezen.
Broncode: [1: Binairy To Hexadecimal] |
|