TI-84 Plus CE

どちらかと言えば、せっかくやってみたので備忘録を残そうかなーって意味合いで記録(^^)

f:id:PocketGriffon:20201114221804j:plainf:id:PocketGriffon:20201114221822j:plain

Texas Instrumentsのグラフ関数電卓

TIの関数電卓の存在は若い頃から知ってはいたものの、接点…というか手に入れたいという動機が無かったので、特に意識したことは無かった。

それが…10数年前、仕事でロサンゼルスへ行った際、ホテルの近くにあった大型マーケットで、新品のTI-84 PlusとTI-89 Titaniumを見かけた。「あれ?すごく安く感じるけど…」と思ったが、その日は気にしつつもホテルへ戻った。

ホテルに戻りつつ、見た型番の詳細を調べる。するとなんか楽しそうなCPU積んでる!(Z80、68000)これは手に入れておいても良いかも知れない!

翌日、気になって仕事にならないので早々にキリつけて、昨日のマーケットへ。

そこで手に入れたTI-84 Plus、TI-89 Titanium。両方で$100しなかったと思う。もちろん両方とも新品だ!

f:id:PocketGriffon:20201114225816j:plain

↑その時に入手した2台。もちろん今でも稼働品だ!

 

それ以降、TIのグラフ関数電卓を見るたびに「いつかプログラムしたいから」という大義名分に基づいて手に入れるようにしていたおかげで、この10数年で18台にもなっていた。

いつかお披露目したいと思ってるのでチャンスがあれば(^-^)

 

TI-84 Plus CEで自前プログラムを実行する方法

せっかくなのでグラフ関数電卓でプログラムを動かしてみたい!

まずはTI-84 Plus CE(以下84PCE)でプログラムを実行出来る環境を整えてみよう。

 

TI-84 Plus CEのOSバージョンについて 

 全く知らなかったんだけど、OSバージョンが最新(かその近く)だと、アセンブラまたはC言語で書いたプログラム(要はマシン語のプログラム?)は動かないらしい。

一旦は最新OS(6.5.0)にしたが、そんな事情があったので6.3.0に戻した。

ただ、メーカー側が閉じた機能でもあるので、ここで詳細は書かずにおく。

どうしてもやってみたいという方は、あくまでも自己責任で探してみて欲しい。

 

どうやってホストマシンと繋げるの?

恥ずかしながら、この10数年の間にプログラムを実行したのは数回しかないw TI-BASICという内蔵のBASICプログラムをちょろっと動かした程度だ。しかも何かを参照しながらやっているので暗記もしてない!!

まずはホストマシン(Mac)と84PCEを繋げないとどうにもならない。これも一度も試すどころか調べた事すらなかったw

どうやら「TI-CONNECT CE」というアプリで通信が出来るようになるらしい。

f:id:PocketGriffon:20201114231839p:plain

USBを繋げたらあっさりと認識した。この安定性は嬉しい(^-^)

普段、レトロやってると最初はうまく行かないのが当然に思っちゃってるので、こうも普通に繋がると、安心するというよりは「え?ホントに?マジで?」とか思うw

f:id:PocketGriffon:20201114232153p:plain

↑USBに繋げると84PCEの画面にこれが出る。カッコ良いのでついつい2を押して次も見られるようにしちゃう(^^)

 

何のファイルを送り込めばいいの?

とても気になっていたのだが……OSのバージョンアップをする際に指定したファイルの拡張子が「8eu」だった。そういうもんか…と深く気にせずいたのだけれども…他のファイルをみたら「8xp」だったり「8xg」だったり…。これは…拡張子になにかある!

でも逆に言えば「8xx」の拡張子を持つファイルを送り込めばきっと大丈夫なんだろうw

先頭の写真にあった某ゲームは「8xg」の拡張子だった。

その後、調べてみるとやはり拡張子に意味があるようだ。

詳しくはこちら↓を参照。

Compatibility with Graphing Calculators

自分でプログラムを作った場合には「8xp」にすれば良いんだろう。

ファイルの送り込み方は、単純に「TI-CONNECT CE」へファイルをドラッグ&ドロップすれば良い。単純明快だ(^^)

 

実行方法は?

さて…送り込んだプログラムはどうやって実行するんだろう?(^^;;

もーね、このマシンの基本的な使い方が理解出来てないので、何をするにも試行錯誤がすごいw

いろいろと試してみたけれど、どうやら「prgm」ボタンを押すと見えるっぽい。

f:id:PocketGriffon:20201114234120j:plain

実行したいファイルにカーソルを合わせた状態で「enter」すれば実行出来る。

 

アセンブラを調達!

今回、とにかくやってみたいと思っているのは、eZ80のプログラミングを体験してみたいのだ!そのために最短距離を突っ走ってみたい!eZ80のバイナリコードにも興味は尽きないが、とにかく今は動かす事最優先w そうしないと横道にそれる!(^^;;

 

アセンブラは「spasmが使えそう」とTwitterで教えてもらっていた。真っ直ぐそのツールを探してみる!名前さえ分かっていればすぐに見つける事が出来た。

Releases · alberthdev/spasm-ng · GitHub

そしたら……最新版が使えない。

しかし1つ前のバージョンだったら使えるようだ。

Release SPASM-ng v0.5-beta.2 - Beta Release · alberthdev/spasm-ng · GitHub

最新版と何が違うのか分からないが、とにかくbeta.2で問題ない(謎の自信)。

 

展開してみたところ、こんなファイルが出てきた。

f:id:PocketGriffon:20201114235803j:plain

実はここでだいぶハマってしまった。

spasmを利用してアセンブルしようとすると「Reason: image not found」と怒られてしまうのだ。なんだろう…きっとこの手のマシンは画面に表示されるアイコン情報とかが欲しいんだろうか?どうやって指定するのかが分からない。helpも出ないしさっぱり分からん…。

 

…と思っていたのだけれども、どうやらspasm_noappsignを実行するのが良かったらしい。

これに気が付くまで数十分掛かってしまったw こういう、おそらくこの機種を使う時の常識?とかが分からずにハマる事の多い事(T-T)

もう少し本体に慣れる必要が…ホントはあるんだろうw

 

Hello Worldを作ってみる!

さっそく作ってみたいところだけど……先ほどのspasmのフォルダの中にincというフォルダがあった。その中身は↓こうなってたんだけど…

f:id:PocketGriffon:20201115000631j:plain

…↑ ti83plus.incはあった。……ti84用は??(T-T)

このヘッダファイルは独自で作るわけにはいかない。なぜならばハードに直結したファイルであり、これを書くためには膨大な調査が必要になるからだ(ToT)

安直に探してみるしかないな…と思い、それっぽいファイルを探す事に。

そしたらすぐに見つかった↓

84PCE:OS:Include File - WikiTI

おそらく、「ti84pce.inc」というファイル名で保存しておけば良いのだろう。

 

適当なHello World的なプログラムをネットで探し、それを自分の環境に合わせてみる。

ネットで探してきたのをほぼそのまま使っているので、リストを出すのは避けたいw

以下↓のコマンドでアセンブル

./spasm_noappsign -E sample.asm sample.8xp

 

TI-84 Plus CEは、eZ80のADL(Address Data Long)モードという、eZ80本来のパワーが出せるモードで動いてるらしい。アドレス指定が16bitではなく24bitになるらしい。どんなバイナリが出るのか興味津々だけど、今は細かい事を考えずに前に進めたい(^^;;

このADLモードに切り替えるのが、-Eオプションらしい。

f:id:PocketGriffon:20201115002054j:plain

よし、アセンブル出来た!

 

実行してみる!

今までの集大成だ!

まずはTI-CONNECT CEでファイルを転送する。

f:id:PocketGriffon:20201115002443j:plain

ファイルをTI CONNECT CEに放り込むと、こんなメニューが出てくるので、そのまま「SEND」すればファイルがコピーされる。

 

そして「prgm」ボタンを押すと、送り込んだファイルが見える。

f:id:PocketGriffon:20201115002718j:plainf:id:PocketGriffon:20201115002756j:plain

カーソルを実行したいファイルに合わせて「enter」、これで実行だ!

 

準備は整ったけれども…

とりあえず、上記の準備をしたことで、アセンブラでプログラムが組めるようになった。

なったけれども…何かを理解した状態ではないww

この先、eZ80の特徴を活かした何かを作ってみたいけれども…私はゲーム的な発想があまり無い人なので、画面にちょろっと表示させて終わってしまうのかな…(不明)

まぁ何かやってみたいとは思ってる(^-^)

 

ではまた次回!(^-^)ノ