Kanji/JE/JIS (1) Genic Clubguide, 00-00-00 MSX2+ EN MSX TURBO R: K A N J I B A S I C , M S X - J E E N J I S ===================================================== In de Japanse MSX2+ en MSX turbo R computers zit een macht aan ROM, van een groot gedeelte daarvan weet de gemiddelde Nederlandse MSX gebruiker niet wat hij er mee aan moet. Ik ga er in dit artikel van uit dat alle ROMs aanwezig zijn, zoals bijvoorbeeld in de MSX turbo R. Dat zijn: JIS1 128 kB Karakters 16x16 (1) JIS2 128 kB Karakters 16x16 (2) MSX-JE 512 kB Japanse vertaal-ROM KANJI BASIC 16 kB Aansturen van JIS en nieuwe schermmodi Totaal dus maar liefst 784 kB aan ingebakken ROM! KANJI BASIC en JIS1 behoren tot de MSX2+ standaard, maar de overige ROMs zijn in de duurdere MSX2+ computers ook al aanwezig. Bij de turbo R is dit allemaal standaard. Wat kunnen we hier nu mee? Meer dan de meesten onder jullie zullen denken! Laten we eerst de KANJI Basic maar eens onder de loep nemen. KANJI BASIC KANJI BASIC heeft een aantal leuke mogelijkheden, zoals 4 nieuwe tekstschermen en karakters op grafische schermen zonder OPEN en PRINT# instrukties. In de nieuwe tekstschermen zijn de letters uit meer puntjes opgebouwd dan in de conventionele schermen, wat veel mooiere letters geeft. Ook de interlacing mode van de V9958 kan worden gebruikt, de verticale resolutie wordt dan maar liefst 424 pixels! Behalve dat de karakters groter zijn, zijn er ook nog eens v‚‚l meer karakters. Had een MSX2 'slechts' 256 karakters, met JIS en KANJI BASIC zijn er meer dan 5000 karakters voorhanden! Ik zal nu de commando's van de KANJI BASIC ‚‚n voor ‚‚n behandelen. Het zijn allemaal CALL commando's, je mag het woord CALL natuurlijk ook vervangen door _ (underscore). CALL KANJI <x> Met dit commando kan men de verschillende KANJI modes inschakelen. De mode waarin men terecht komt is afhankelijk van het SCREEN waarin men zich bevond toen het _KANJI commando gegeven werd. De verschillende waarden van <x> hebben de volgende betekenis: <x> lettergrootte aantal regels interlace 0 16x16/8x16 12 nee 1 12x16/6x16 12 nee 2 16x16/8x16 24 ja 3 12x16/6x16 24 ja De WIDTH is afhankelijk van het scherm waarin het commando werd gegeven. Bij SCREEN 0: WIDTH 80 worden de schermbreedtes respectievelijk 64, 80, 64 en 80, bij SCREEN 0: WIDTH 40 of SCREEN 1 worden de schermbreedtes respectievelijk 32, 40, 32 en 40. In de grafische schermen geven SCREEN 5, 8, 10, 11 en 12 breedte 32 of 40 en SCREEN 6 en 7 breedte 64 of 80. In de grafische schermen werken alleen de KANJI modes 0 en 1 goed, omdat de interlace het dan niet doet. Vooral als je moeite hebt met het lezen van de letters tijdens bijvoorbeeld het programmeren in BASIC zijn de KANJI modes erg handig, de letters zijn zeer duidelijk. De 'normale' letters (die je met het toetsenbord kunt invoeren) hebben het kleine formaat (8 of 6 bij 16). De tekens uit de JIS hebben het grote formaat (16 of 12 bij 16). Deze letters zijn niet zomaar in te voeren, maar daarover later meer. Let op: SCREEN 0 en 1 zijn nu grafisch opgebouwd, dus bijvoorbeeld een karakter(-vorm) VPOKEn is er niet meer bij. Het COPY commando werkt niet in de KANJI modes van SCREEN 0 en 1, maar als je de VDP rechtstreeks aanstuurt kun je gewoon copieren of zelfs bijvoorbeeld lijnen trekken! Dit heeft als voordeel dat elke letter een andere kleur kan hebben, dus alle 16 (uit 512) kleuren kunnen gelijktijdig worden gebruikt. De rest van de commando's zijn bedoeld om in de KANJI modes gebruikt te worden, en staan op alfabetische volgorde. CALL AKCNV (A$,B$) AKCNV is een afkoring van Ank Kanji CoNVersion. Hiermee kunnen standaardkarakters (met een ASCII code) worden omgezet naar KANJI karakters. In B$ staat de tekst die moet worden omgezet en in A$ komt het resultaat. Bijvoorbeeld: _AKCNV (A$,"GENIC"). A$ bevat nu de tekst GENIC in 16x16 karakters. CALL ANK Dit commando schakelt de KANJI mode uit. Men keert terug in de oorspronkelijke tekstmode. Na dit commando werken de meeste KANJI commando's dus niet meer goed. CALL CLS Een gewone CLS werkt niet meer in een KANJI mode. Dit geeft een Illegal function call. Het wissen van een KANJI scherm moet gebeuren door middel van een CALL CLS. In de grafische schermen kan men overigens de gewone CLS blijven gebruiken. CALL JIS (A$,B$) Met dit commando kan je het JIS nummer van het karakter in B$ opvragen. Dit nummer wordt in A$ gezet, in een hexadecimale string van 4 getallen. Als B$ uit meerdere karakters bestaat, dan wordt het eerste karakter genomen. Bijvoorbeeld _JIS(A$,"S"). Let op: de S moet van het formaat 16x16 zijn, ik zal later uitleggen hoe je dat in moet voeren. A$ bevat na dit commando "2353". Het nummer van de Kanji-S is dus &H2353. CALL KACNV (A$,B$) Dit commando doet precies het omgekeerde van _AKCNV. Dit is Kanji Ank CoNVersion. Hiermee kunnen KANJI karakters worden omgezet in ANK karakters (met een ASCII code). In B$ staan de karakters, in A$ komt het resultaat. Bijvoorbeeld _KACNV (A$,"GENIC"). Let op: de letters van GENIC moeten van het formaat 16x16 zijn, ik zal later uitleggen hoe je dat in moet voeren. A$ bevat na dit commando "GENIC" in gewone karakters. CALL KEXT (A$,B$,<z>) KEXT staat voor Kanji EXTract. En dat is ook precies wat het commando doet, het haalt bepaalde KANJI karakters uit een string. De karakters staan in B$, en het resultaat komt in A$. Met <z> kan worden aangegeven welke karakters eruit worden gehaald, die uit de JIS1 ROM (<z>=0), of die uit de JIS2 ROM (<z>=1). Bijvoorbeeld _KEXT(A$,B$,1). CALL KINSTR (<x>,A$,B$) Dit commando doet hetzelfde met KANJI karakters als de instruktie INSTR met gewone karakters. Het zoekt de string B$ in de string A$, wordt het gevonden dan komt de positie in <x> te staan. Voor X moet dus een numerieke variabele worden ingevuld. Is B$ niet aanwezig in A$, dan is <x> gelijk aan 0. Bijvoorbeeld _KINSTR(P,"GENIC","N"). P bevat dan de waarde 3. CALL KLEN (<x>,A$,<y>) Dit commando geeft de lengte van A$ en zet die in de variabele <x>. Als men de <y> parameter weglaat, of als die 0 is, dan wordt de totale lengte genomen. Is <y> gelijk aan 1, dan worden alleen de tekens uit JIS1 geteld, is <y> gelijk aan 2, dan worden alleen de tekens uit JIS2 geteld. Bijvoorbeeld _KLEN (L,"GENIC"). L bevat dan de waarde 5. CALL KMID (A$,B$,<x>,<y>) Dit commando doet hetzelfde als MID$, alleen dan met KANJI karakters. Er worden <y> karakters genomen vanaf positie <x> uit B$. Het resultaat komt in A$ terecht. Bijvoorbeeld _KMID (A$,"ClubGuide Special",5,3). A$ bevat dan "Gui". CALL KNJ (A$,B$) Hiermee kan een karakter uit de JIS ROM worden opgevraagd. In B$ staat het nummer van het karakter (als een hexadecimale string van 4 cijfers), en in A$ komt het resultaat. Bijvoorbeeld _KNJ(A$,"783A"):PRINT A$. Er staat nu een konijntje op het scherm. CALL KTYPE (<x>,A$,<y>) Met dit commando kan je kijken uit welke JIS ROM een bepaald karakter komt. In A$ staan de karakters, <y> wijst naar het bedoelde karakter. In <x> komt het resultaat; 0 voor JIS1 of 1 voor JIS2. Bijvoorbeeld _KTYPE (T,"GENIC",3). T geeft dan aan of de N in JIS1 of in JIS2 staat. CALL PALETTE (<x>,<r>,<g>,<b>) De instruktie COLOR=(<x>,<r>,<g>,<b>) werkt niet meer in SCREEN 0 of SCREEN 1 als de KANJI mode is ingeschakeld. In plaats daarvan gebruik je nu _PALETTE. De COLOR= instruktie geeft een Illegal function call, de _PALETTE instruktie werkt hetzelfde als de COLOR= instruktie. _PALETTE zonder parameters is hetzelfde als COLOR=NEW, de standaardkleuren worden dan hersteld. CALL SJIS (A$,B$) Dit is een Speciale versie van het CALL JIS commando. In plaats van het JIS nummer geeft deze instruktie twee ASCII codes in een hexadecimale string van 4 cijfers. Je moet die dan splitsen en er &H voorzetten. Worden die twee codes dan met twee PRINT CHR$(...) instrukties op het scherm gezet, dan komt het KANJI karakter tevoorschijn. Het karakter staat in B$, in A$ komt het resultaat. Bestaat B$ uit meerdere karakters, dan wordt het eerste karakter genomen. Voorbeeld: _SJIS (A$,"#") Let op: dit moet weer een 16x16 karakter zijn! PRINT A$ levert 8194 op. Met PRINT CHR$(&H81); CHR$(&H94) kunnen we dus een kanji-# op het scherm zetten. PUT KANJI (<x>,<y>),kanji,kleur,log.op,kode Dit is eigenlijk helemaal geen KANJI BASIC commando! Dit commando geeft geen foutmelding op een Europese MSX2. Toch werkt het daarop niet goed, omdat de JIS ROMs ontbreken. Je krijgt dan witte balkjes op je scherm (het Burai-effect). Dit commando zet het KANJI karakter met nummer kanji op de positie <x>,<y> van een grafisch scherm in de gewenste kleur. Eventueel kan er ook nog een logische operatie worden uitgevoerd. De kode ten slotte wordt gebruikt om karakters van de halve hoogte op het scherm te plaatsen. Met kode=0 wordt het karakter helemaal afgebeeld, met kode=1 alleen de even lijnen en met kode=2 alleen de oneven lijnen. De PUT KANJI instruktie werkt alleen in SCREEN 5 en hoger. (Nvdr. Deze tekst was te lang voor de layout van ClubGuide Special. Daarom hebben we de tekst in twee‰n geplaatst. Dit was het eerste deel, deel twee kunt u in het menu vinden.) |