vorige:
De Maiskoek/Bits and Pieces
MCCW nummer 91, januari/februari 2000
Terug naar inhoud
volgende:
[en] The MSX World Expo ‘99 report
...een relaas...
Link een TI-83 aan een MSX

Zou je graag willen dat je TI-83 met je MSX communiceert? Laat Laurens je uitleggen hoe je dit op een goedkope en makkelijke manier voor elkaar krijgt.

 
Laurens Holst
 
Inhoud
Aan het werk
Ja, MSX is cool
Software
Q & A
Waar te krijgen?


Referenties
1. http://datax.cjb.net/
2. http://www.ticalc.org/
3. http://www.ti-files.org/
4. http://www.calc.org/
5. http://tcpa.calc.org/


TI-83 specificaties
  • Z80 processor @ 6 MHz
  • 256 kB rom
  • 32 kB ram, waarvan ± 27 kB vrij
  • Display van 96×64, zwart/wit
  • Trage display-controller met eigen vram


Figuur 2: Texas Intruments TI-83


Texas Instruments heeft al een tijdje een serie grafische rekenmachines op de markt. Deze rekenmachines kunnen via een kabel aan een pc gelinkt worden. Echter, de ‘officiële’ kabel is erg duur, en daarom zijn er simpele ‘alternatieve’ kabels gemaakt door derden, waar ook aparte software voor nodig is. Welnu, als dat voor de pc kan, waarom dan niet ook voor de MSX?

Aan het werk
Nu ben ik de trotse bezitter van een TI-83, dus ben ik aan het werk getogen. Eerste missie was om zelf een kabel te maken, de kabel voor pc is namelijk ongeschikt voor MSX aangezien er gebruik wordt gemaakt van twee printerstatusbits, terwijl de MSX maar één statusbit — voor input — heeft. Bovendien is de connector incompatible, dus je hebt sowieso toch al een verloopstukje nodig. Maar goed, ik maak de kabel echter wel op dezelfde manier als de TI paralelle link voor de pc. Nu, wat voor poort gebruiken we dan? Natuurlijk, de meest formidabele poort in MSX-land, altijd makkelijk te bereiken — nu ja... —, jawel, de joystick-poort! Deze kan zo ingesteld worden dat hij vier bits heeft voor de invoer, en drie bits voor de uitvoer en dat voldoet perfect aan onze wensen, want wij hebben slechts twee uitvoer-pinnetjes en twee invoer-pinnetjes nodig.

Figuur 1: Let wel: een 2.5mm jack is een tikkeltje kleiner dan een ‘gewone’ jack zoals die van een koptelefoon. Bovendien passen ze niet allemaal in een TI rekenmachine, omdat het hulsje meestal te breed is. Ik raad daarom ook je aan je TI naar de elektronicawinkel mee te nemen om daar ter plekke te kijken of de jack goed past.

     Wel, dat gedaan ging ik proberen om bytes heen en weer te kunnen verzenden. Het was even vissen maar aan de hand van een rom-dumpprogrammaatje en de C-source voor het ontvangproggie aan de pc-kant lukte het mij uiteindelijk om bytes te ontvangen. Nu ik zover was wist ik natuurlijk al best wel veel over dat linkkabeltje van de rekenmachine en had ik een idee om mijn TI 2 MSX kabeltje te versimpelen. Ik zal het even uitleggen, het zit namelijk zo dat dat kabeltje maar twee aders telt en de TI kan gewoon zowel lezen en schrijven via één en dezelfde poort. Helaas heeft een printerpoort geen pins die zowel ontvangen als zenden kunnen, dus dat probleem moest worden opgelost met enkele diodes. Echter, zoals je misschien al weet, pins 5 en 6 — de ‘vuurknop-pins’ — van de joystickpoort kunnen ook zowel lezen als schrijven. Een joystick gebruikt de leesfunctie, JoyNet en mijn eerste versie van het TI2MSX-kabeltje gebruiken de schrijffunctie. Maar als ik nu gewoon beide door elkaar gebruik, net zoals de TI-rekenmachines dat doen, dan zou dat wel eens kunnen gaan werken.

Ja, MSX is cool
Welnu, even omsolderen dus, en ja hoor, het werkt! Dus de MSX-versie van de TI-linkkabel is echt zo makkelijk te maken dat het gewoon niet makkelijker kan! Het is nu namelijk niet meer dan een verloopstukje. Dat is MSX voordeel één ten opzichte van de pc... De andere voordelen? Wel, op de printerpoort van de pc — en ook op die van de MSX trouwens — staan ongebruikte pinnetjes standaard aan (=op 0), wat op zich ook wel zijn logica heeft, want zodoende is het laatst verzonden byte een 0. Als je nu een TI aansluit zonder eerst de bijbehorende software op de pc op te starten denkt de TI dat, gezien er een pinnetje aan staat, er een byte naar hem verzonden wordt en start hij het ontvangprotocol op. Dat krijgt echter verder geen respons en geeft na enkele secondes een timeout, en dat gebeurt telkens weer opnieuw, wat de rekenmachine erg traag maakt. Op de joystickpoort van de MSX staan de betreffende pins echter gewoon standaard uit, waardoor je gewoon altijd kunt linken zonder enige problemen. Tenzij je MSX uit staat natuurlijk.

     Voordeeltje numero drie van de MSX is dat een MSX natuurlijk prima geschikt is voor een taak als deze,en het is natuurlijk veel toffer om in dat geval je MSX daar dan ook voor te gebruiken. In mijn geval heb ik bijvoorbeeld — bijna — altijd toegang tot mijn MSX, terwijl de pc ook gedeeld moet worden met andere familieleden en bovendien langzaam opstart. En dan is het natuurlijk ideaal om vlak voor school nog even een spelletje te uploaden of een backup te maken.

Software
Oké, waar waren we gebleven. Oh ja, de software. Daar ben ik dus mee verder gegaan — op de beurs in Bussum ‘99 hebben enkelen het ‘ontvang’-gedeelte al in werking gezien — en daar is uiteindelijk het programmaatje TransMSX, downloadbaar vanaf mijn homepage [1], uitgerold. Versie 1.2 alweer inmiddels, met nu ook ondersteuning voor de TI-82 en handige opties als gebruik van wildcards of weglaten van de extensie, waarover je meer kunt lezen in de bijbehorende readme-file. Het heeft nog geen mooie GUI, maar die komt pas in versie 2.0, en dat duurt nog wel even want dat is behoorlijk veel werk. Handig is het echter wel, want vanuit zo’n GUI zou je dan makkelijk programmaatjes kunnen groupen -- in een bestand stoppen --, unprotecten en protecten, ook binnen een groep, groepen samenvoegen, één enkel programmaatje uit een groep verzenden, meerdere programma’s of groepen in één keer verzenden, et cetera, et cetera...

Q & A
En nu een paar vragen die je vast wel beantwoord wilt zien: waarom worden de andere rekenmachines van TI nog niet ondersteund? Wel, Texas Instruments heeft verschillende types grafische rekenmachines op de markt gebracht en die kunnen grofweg ingedeeld worden in drie groepen: als eerste de serie TI-82, TI-83 en TI-83+, redelijk goedkope rekenmachines voor op de middelbare school, met een lage-resolutie scherm. Vervolgens zijn er de TI-85 en TI-86, met een hogere resolutie en meer functies, maar nog steeds gebaseerd op een Z80. En ten slotte nog de TI-92, TI-92+ en de TI-89, waarvan de laatste hetzelfde is als de 92+, alleen dan in de compactere 8×-vorm zodat hij ook op het middelbare school-examen is toegestaan. Deze rekenmachines hebben veel functies, ook drie-dimensionale, hebben een hoge resolutie en hebben een 68000-processor als hart. De latere modelnummers zijn -- uitgezonderd het laatste geval -- telkens ‘verbeteringen’ van het voorgaande model binnen de groep en de bios is dus ook op dezelfde broncode verder opgebouwd. Dat zorgt er dus voor dat de programma’s onderling redelijk simpel omgezet kunnen worden en ook dat de link bijna hetzelfde protocol gebruikt. Dat maakt dus dat ook de linksoftware makkelijk is aan te passen. Echter, bij de andere types is het low-level protocol -- voor het verzenden en ontvangen van de bytes -- wel hetzelfde, maar het higher-level protocol helaas niet, alhoewel het sterke overeenkomsten vertoont.

     Maar waarom werkt de TI-83+ dan nog niet? De reden daarvoor is dat ik alleen maar een TI-83 heb, en de boel dus alleen daarop kan uittesten. De TI-82-ondersteuning was niet moeilijk, het TI-83 protocol is namelijk upwards compatible met de TI-82 en de TI-83 heeft ook enkele functies waarbij hij als het ware de TI-82 ‘simuleert’, dus dat was ook makkelijk uit te testen. (Probeer maar eens, je krijgt dan ook een .82? file op je computer als je op een TI-83 iets met die functies verstuurt naar je MSX.) Echter, een TI-83+ heeft een behoorlijk aantal nieuwe functies en is intern ook gedeeltelijk anders opgebouwd, met flashrom als extra geheugen en zo en aangezien daar ook nog helemaal geen documentatie over beschikbaar is en ik ook geen testexemplaar heb, durf ik er niet op te vertrouwen dat het ‘gewoon’ werkt.

Waar te krijgen?
Zoals je waarschijnlijk al wist of anders al begrepen had, kun je in die 27 kB ram die een TI-83 heeft ook programmaatjes stoppen. Waar haal je die dan vandaan? Wel, dat is simpel, van het internet. Er zijn een aantal grote pagina’s met alle programmaatjes erop, waarvan de bekendste — en mooiste — ticalc.org [2] is, maar er is ook The TI-Files [3], lekker ‘underground’, cool! En Dimension-TI [4] natuurlijk ook, als file-archief eigenlijk een beetje mislukt, maar met leuke programmeerwedstrijden en goede artikelen. Afgezien van ‘losse’ programmeurs heb je ook programmeergroepen, zoals de TCPA [5] — TI Calculator Programming Alliance —, waarvan ik ook lid ben. En natuurlijk, vooral niet vergeten, mijn homepage, Grauw @ Ble [1].

     Ziedaar, alweer het einde van dit artikel. Volgende keer wat over mijn andere programma’s voor de TI-83 en de MSX, namelijk MSX83Dev, een programmaatje dat op de programma’s kan schrijven voor de TI-83 en die vervolgens naar TI-83 formaat (.83P) kan omzetten, en MSXNukes, een MSX-versie van het verschikkelijk asociale, ongewoon destructieve programmaatje TINUKE, waarmee je een andere TI via de linkkabel kunt resetten. Ook nog wat over mijn voor de TI-83 in ontwikkeling zijnde spel(letje) Angel.

vorige:
De Maiskoek/Bits and Pieces
MSX Computer & Club Webmagazine
nummer 91, januari/februari 2000
volgende:
[en] The MSX World Expo ‘99 report