|
het nieuwe van Japan in Europa is nu bruikbaar
MSX-Kanji ontsluierd
|
|
Kanji-tekens zijn voor ons de samengetrokken tekens van de Hiragana-tekens die vaak kleiner boven deze Kanji-tekens staan op de diverse verpakkingen van spellen. De Katakana-tekens worden door de Japanners gebruikt om bijvoorbeeld Engelse woorden fonetisch te kunnen schrijven. Ook worden diverse namen in Katakana-tekens getoond. Hiragana-tekens worden gebruikt om de teksten te kunnen formuleren, maar wat dit alles inhoudt is mij nog geheel onbekend. Het vertalen van Japans naar een andere taal wordt hierdoor maar aan de kenners overgelaten. Dit artikel beperkt zich tot het gebruik van de Kanji-schermen en PUT KANJI. Naast Kanji-basic is de Kanji-rom beperkt benaderbaar in machinetaal, waarbij ter voorbeeld enkele assemblysources zijn opgenomen.
Kanji-schermen
Na instellen van een Kanji-scherm neemt het toetsenbord de Japanse indeling aan, waardoor de niet-japanse toetsenborden totaal in de war zijn geraakt. Dit is met de MSX-DOS 2.20 duidelijk naar voren gekomen en diverse omgebouwde MSX2+ machines hebben een omgeprogrammeerde eprom die het normale toetsenbord indeling behouden. Maar officieel is de Kanji-rom voor de Japanse markt en daardoor is het de Japanse indeling blijven houden. Met de MSX-DOS 2.20-Kanji is het mogelijk met CLS het scherm schoon te maken, terwijl het officiële Kanji-statement _CLS de manier is voor een schoon scherm. Gewoon CLS geeft zonder pardon een foutmelding. Ook kunnen de palette-waarden worden gewijzigd binnen de Kanji-schermen met _PALETTE(C,R,G,B). De uitwerking is 100% gelijk aan COLOR=(C,R,G,B), echter op de Kanji-schermen gericht omdat COLOR=(C,R,G,B) een gedeelte van het scherm verminkt.
Kanji-stringmanipulatie
Sommige commando’s vereisen extra uitleg en voorbeelden om het exacte resultaat duidelijk te maken. Ook zal veel geprobeerd moeten worden om alles echt te begrijpen. Ook kunnen de juiste Japanse tekens getoond worden mits de ondersteuning voor het Japans is geinstalleerd, anders zijn er onduidelijke tekens te zien. _KNJ(A$,B$) converteert van een Jis-code naar de string die gebruikt worden om het teken op de Kanji-schermen te kunnen tonen. In de Japanse handboeken worden de karakters in de Jis-code uitgedrukt. Deze standaard code wordt door ieder Japans computer-systeem gebruikt om het juiste teken te tonen ook al zijn intern de tekens via een heel andere methode aan te spreken. En deze conversie dient altijd vanuit de Jis-code te gebeuren. De Jis-code zelf dient in B$ te staan en het resultaat komt in A$ terecht. Omdat meestal de Jis-code in hexadecimale notatie wordt weergegeven, is dit hier ook gedaan. Ter voorbeeld nemen we Jis-code “4B62”. Willen we dit teken op het scherm zien, dan doen we _KNJ(A$,"4B62") waarna A$ het Kanji-teken zal bevatten dat op de Kanji-schermen juist getoond wordt. Op de MSX ziet het teken er zo uit: Dit Kanji-teken kan weer worden geconverteerd naar de Jis-code met _JIS(B$,A$) waarna B$ de string “4B62” zal bevatten. Ook kunnen de twee ascii-tekens in een 4-byte string worden gezet met _SJIS(C$,A$) waarna C$ de waarde “9682” zal hebben. Het eerste ascii-teken is dan in dit geval &H96 en het tweede ascii-teken is &H82. Worden deze twee waarden achter elkaar naar een Kanji-scherm geprint, dan verschijnt het teken weer. Ook grappig en veel gebruikt is het converteren tussen een Ank-string en een Kanji-string. Hierdoor wordt in de Kanji-schermen de tekst dubbelbreed op het scherm geplaatst. Minder vaak gebruikt is het converteren van een Kanji-string naar een Ank-string, zij het in beperkte mate, omdat in de Kanji-rom veel meer karakters zijn opgeslagen en het converteren naar een Ank-string zich beperkt tot de karakters die zich in de 256 karakters bevinden. Willen we een tekst, dus converteren van een Ank-string naar een Kanji-string, dubbelbreed op een Kanji-scherm plaatsen, dan is _AKCNV(A$,"Hallo") genoeg. Zetten we A$ op het Kanji-scherm dan zien we inderdaad de tekst dubbelbreed omdat de Kanji-tekens niet 8, maar 16 pixels breed zijn omdat op het Kanji-scherm voor één teken dan twee posities worden gebruikt. Willen we deze Kanji-string converteren naar een Ank-string dan doen we _KACNV(B$,A$) waarna in B$ weer netjes “Hallo” — ook buiten de Kanji-schermen — te lezen is. De Katakana- en Hiragana-tekens zijn na conversie van een Ank-string naar een Kanji-string veel vloeiender doordat het geen 8x8 karakters zijn, maar 16×16 karakters uit een heel eigen rom: de Jis-rom. Met _KEXT(A$,B$,A) is het mogelijk de tekens van het in A opgegeven type uit te string te filteren. Het is mogelijk een combinatie van Ank- en Kanji-type tekens in eenzelfde string te gebruiken. Voor A zijn twee waarden mogelijk. Als geldt A=0, dan worden alle Ank-type tekens uit B$ in A$ gefilterd. Als geldt A=1 dan worden alle Kanji-type tekens uit B$ in A$ gefilterd. Op deze manier is het mogelijk de lengte van een string te kunnen bepalen met _KLEN(A,A$) voor een of ander doel. Wil je het type van een teken op een bepaalde positie bepalen binnen een string met _KTYPE of met _KMID een deel van de string op te vragen, dan is het verstandig om eerst de lengte van deze string op te vragen, omdat A=LEN(A$) een andere waarde geeft dan _KLEN(A,A$) mochten er Kanji-type tekens in staan. Met _KTYPE(A,A$,B) kan het type van het aangewezen teken binnen een string worden bepaald. Verstandig is eerst met _KLEN de lengte van de string op te halen om de laatste positie binnen de string te kunnen bepalen zonder dat er een foutmelding komt. De waarde voor A=0 als het teken in A$ op positie B een Ank-type teken is en A=1 als het een Kanji-type teken betrof. Met _KMID(A$,B$,A,B) kan een gedeelte van een string worden opgehaald. Ook hier geldt dat er rekening gehouden wordt met Ank-type tekens en Kanji-type tekens binnen dezelfde string, waardoor de lengte van de string opgevraagd dient te worden met _KLEN.
Kanji add-ons
De toetscombinaties GRAPH-SELECT en CTRL-SPACE herbergen leuke functies. Als er verschil is tussen deze twee toetscombinaties, dan is mij geheel onbekend wat dit verschil is. Beide toetscombinaties schakelen deze functie weer uit. In deze mode wordt onderin het scherm een cursor getoond, wordt het invoeren van de fonetische uitspraak van woorden automatisch ingeschakeld en zullen er altijd Hiragana-tekens getoond worden. Buiten deze mode, en tevens buiten de Kanji-schermen, is dit mogelijk via de toetscombinatie SHIFT-KANA waarbij de CAPS-LOCK dienst doet als selectie tussen het invoeren van Hiragana-tekens (CAPS-LOCK uit) en Katakana-tekens (CAPS-LOCK aan). Bij het invoeren van tekst kan met enkele toetsen nog het een en ander gedaan worden. Met de cursor-toetsen links en rechts is het mogelijk door de tekst heen te wandelen. Wanneer op de cursor-toets omhoog, omlaag of de spatiebalk wordt gedrukt, kan door een selectie van Hiragana naar Kanji conversies worden gewandeld. De RETURN-toets zet de tekens zoals deze op dat moment op de regel staan, worden getransfereerd naar het scherm vanaf de cursor-positie. De KANA-toets schakelt tussen fonetisch invoeren en directe Hiragana invoer. F1 schakelt het normale invoeren volgens het alfabet aan en uit, F2 converteert de invoer van Hiragana naar Katakana in Kanji-type, F3 doet deze conversie in Ank-type.
Kanji in machinetaal
Het PUT KANJI-commando
PUT KANJI [STEP] [(X-coordinaat,Y-coordinaat)], <Jis-code> [,<Kleur>] [,<Logische-operatie>] [,<Afdruk-mode>] Net zoals zoveel grafische commando’s kan ook hier met optie "STEP" worden gebruikt om relatief te positioneren. Tussen de haakjes staan de (met STEP de relatieve) coordinaten voor het teken. <Jis-code> is verplicht en geeft aan welk teken op het scherm getoond moet worden. Aangezien in dit artikel alle Jis-codes in hexadecimale notatie zijn gegeven en hier een decimale notatie vereist is, is het handig ook hier de hexadecimale notatie aan te houden, dus moet het teken met Jis-code “4B62” worden getoond, dan moet de Jis-code voor onze leesbaarheid en snelle referentie als &H4B62 in PUT KANJI worden opgenomen. <Kleur> is afhankelijk van het aantal kleuren op het grafische scherm. Standaard is <Kleur> de huidige voorgrondkleur. Ook hier wordt de <Logische-operatie> in lettervorm opgenomen. De standaardinstelling voor <Logische-operatie> is PSET. <Afdruk-mode> vereist extra uitleg. Er zijn drie afdruk-modi en de onderstaande tabel geeft de betekenis aan van de drie afdruk-modi:
Afdruk-mode 0 toont het hele Kanji-teken op de actieve schermpagina. Dit is de default-mode en wordt gebruikt als er geen interlace mode gewenst is. Afdruk-mode 1 toont alleen de even lijnen op de actieve pagina. De even lijnen dienen wel op een even genummerde schermpagina worden getoond om tezamen met afdruk-mode 2 die op de bijhorende oneven genummerde schermpagina te worden getoond om het hele teken weer interlaced te kunnen weergeven. Nog even ter herinnering: schermpagina’s 0 en 1 zijn gekoppeld en schermpagina’s 2 en 3 zijn gekoppeld. De twee voorbeeld programmaatjes tonen het gebruik van PUT KANJI in Basic. Het eerste programmaatje toont een Jis-tekst in afdruk-mode 0, het tweede programmaatje toont dezelfde tekst in afdruk-modi 1 en 2:
Bovenstaande programmaatjes bevatten de Jis-codes in DATA regels. Het kan gemakkelijker door gebruik te maken van de Kanji-rom. Zoals eerder beschreven is het mogelijk een string te converteren van een Ank-type string naar een Kanji-type string en daar per teken de Jis-code van op te vragen. De statements die hiervoor nodig zijn: _AKCNV, _JIS, _KLEN en _KMID. De programmaatjes zouden er dan na enig wijzigen als volgt uit zien:
PUT KANJI in machinetaal
De routine KANJI doet het eigenlijke PUT KANJI gedeelte nadat de diverse instellingen zijn gedaan. Het SET PAGE-gedeelte kan bij afdruk-mode 0 weggelaten worden, alsmede het instellen van de interlace-mode. De source aanpassen voor gebruik van afdruk-mode 0 is niet zo moeilijk. De keuze om de source te plaatsen van de interlace-versie is omdat de versie van de niet-interlace heel simpel uit deze source te halen is. |
|