2023年4月30日日曜日

しつこいですけど

 あいかわらずのasciiartをraspberry pi picoでやってみた。

ボードへの書き込みに失敗するのでbootselでusbデバイスとして認識させてコンパイル済みのuf2ファイルをd&dで書き込んで実行した。

133MHzのSoCだと200msecの所要時間。


もののついでに

 最近、今更のusb接続ガジェットをいろいろ思い出そうとしているのでそのながれでraspberry pi  zeroをon-the-go(OTG)でPCにつないでやってみた。

今回の苦労ポイント
1)これまた接続方法を忘れていた。
  teratermで仮想のtcp/ip接続からraspberry/piを探して接続した。
  ログイン時のid,passwordもすっかり忘れていたのでさらに苦労。
2)asciiart.cのコンパイルオブジェクトで表示は出来たけど時間計測が
  出来たほうが良いと思ってtime.h のclock()を使おうとしたけど
  エディタがviしかなくて編集方法を忘れていて涙。
  hjklとiaとx,ddと:w,:qだけでなんとかソースを編集してコンパイル
  にこぎつけた。

結果が

さすがの9ms!それよりも9801って表示にちょっと感激。

なんとかファイルをPC側から送り込んだりできるようにしないと大変だということは分かった。
でもいろいろ方法はありそうである。


2023年4月29日土曜日

調子に乗って

 せっかくarduinoのIDEを更新したので手持ちのesp8266モジュールを使って同じくasciiart.inoを実行させてみた。

arduino unoのATMega328Pで1000ms(≒1秒)ほどだった実行時間がesp8266では162msと6倍以上速くなっている。
(もちろんすべてのプログラムがそれだけ速く動くことの保証にはならないけど浮動小数点の乗算をある程度の割合で含む比較的簡単なプログラムではその結果になりました。)
esp8266は多分80MHzのクロックで動いているのでクロック比(16:80)よりはespの方がasciiart計算には向いているのだと思われる。

この手の比較って楽しいと思いますね。まだ手元にSTM32F401WioTerminalもあるのでこれらも計測してみようかしら。あとRaspberryPiも1Bとzeroを持っているので少し触ってみようと思う。あ、そういえばRaspberryPi Picoもあったっけ。ずいぶん使わない癖に持ってること。



2023年4月28日金曜日

EMUZ80の制作に向けて

 さて目下注目のEMUZ80である。

6800伝説8080伝説z80伝説でoldCPUファンにはおなじみの(というか教祖様の)鈴木哲哉氏の作である。z80と同じく40ピンのPIC18F47Q43の2つのチップで小さなコンピュータを構成するというだけでも斬新なのにPICはz80から見てROM,RAM,IOのすべての働きをするように振舞うことでシステムが駆動するって素敵以外の何でもない。

実際このEMUZ80の基盤を利用して他のCPUを動かす様々なプロジェクトやそのための拡張のための基盤が出ているってことも魅力的。

ただしz80以外の他のCPUを動かすにはPICのプログラムを変更することが必要になるけど昨今のIC不足でpickitが高いので2の足を踏んでいたらarduinoでライターの働きをさせるって記事に遭遇。

まずは手持ちのarduinoをもう一度動かすことから準備することにしよう。
早速引き出しの奥からarduino unoを召喚。
USBでPCにつないで、、、手が止まった。

随分触ってなかったから手順をすっかり忘れている。
なにせ10年以上前に買って少し触って、ほかのボードを触るときにまた思い出したように出してみたりするだけだったのでどんな手順でやっていたのか思い出すのにひとしきりかかった。

やっとarduino ideを呼んでボードをarduino unoに設定してCOMポートの番号を確認してasciiart.inoを送り込んでteratermで確認したのが下図。

16MHzで動くATMega328Pで1秒そこそこでこれが描画できるのだから大したものである。
この分野ももう少しつっこんで触れる必要を感じるなあ。



2023年4月21日金曜日

少し先の未来への布石

 z80の乗ったリアルコンピュータが欲しい。
古くていじりがいのあるものなら何でも良い。
別に高機能なんて求めてない。でも同時にメンテのことを考えるとあまりに古いものはいかにも稼働率が低そうで憂鬱。

で、msxである。とりあえずはエミュレータでお茶を濁してやがては実機を手に入れる。(ヤフオクとかでmsx2+[日本語もいじりたいし、実機ならFDDくらいないとデータの交換もできないので]を見ると3万円の相場だけどそれで電源やドライブの不具合との闘いを考えると気が重いのでためらいがち)で、こんな選択肢にも目が行くけど本当のz80じゃないことにちょっと抵抗感もある。

うだうだ考えてもしょうがない。そもそもPC外部のハードウェアcp/mエミュでもtek4010グラフィックスの機能のあるteratermでつなげばグラフィックスが出せて面白いって思ったことに加えてmsx2+ならフォントがちょっと?だけど80文字表示できて漢字ROMも搭載してるのでBASICでもちょっと遊べそうだとか思ったことが出発点なわけだからまずはエミュでも十分ということになる。表示が8bitスルーならcp/m機でもc言語やmbasicでteratermで漢字表示位できるので実機であることとかmsxであることとか本当は関係が無いとも言えたりする。

なんだかグダグダになってきたけど要するに触りたくなったのでbulueMSXをインストールしてまずは定番のasciiartをmsx-basicでやってみた。

いろいろ計測してみたんだけどこちらの環境ではget timeが正しく働いてくれない。画面上ではget timeで得た開始時の時刻と終了時の時刻の差が45秒みたいに見えるけど実測では1'25"(=85秒)くらい[CPU速度1000%=10倍設定]cpu設定等倍で実測が14'16"(=856")なので確かに10倍の時間がかかっているのだけど表示は変わらない。
ちょっとこの辺りが要解決の問題ではあるがいろいろと楽しめそうでもある。
1)グラフィックスの表示
2)MSX-DOSはFATで管理されてて実行ファイルはcp/m互換でOK
ちょっとずつ触って落としどころを探ろうと思う。


2023年4月18日火曜日

3Dは思い通りにはいかない

 3Dプロットでよくあるソースを見てちょっとTeraTermに送る例をgccで書いてcom0com経由でTeratermに表示させてみた。

陰線なしの例

割ときれいに出ている。が、しかし陰線処理を考えてやってみると

なんだ!こりゃってなる。単に送るのとか先日のマンデルブロの描画はちゃんと送れてて描画できたことからすると自分の書いた陰線処理がまずいと言うことになるので・・
やはり付け焼刃で3Dを処理するのは難しいんですね。

機会があればもう少し突っ込むけどもっとプリミティブなこともやってみたいのでちょっとteratermでのグラフィックは間が空くかも・・
ま、z80とか生々しい方からもグラフィックス出せるらしいってわかったから成果はあったとしておく。


2023年4月11日火曜日

ちょっとお化粧とベンチマーク

 昨日のteratermでmandelbrotの描画で左下に寄っていたのをx,yともtek4010の規定値のサイズとのオフセットをとって画面中央に描画されるように調整した。

本当はwindowサイズを変えられると良いのだけどそのためのエスケープシーケンスをしらないのでとりあえずということで・・・
ついでにベンチマークとしてストップウォッチで時間を計測してみた。
転送速度のオーバーヘッドを見るのに115200bpsと921600bpsで計測してみたけど手動での結果はいずれも1:03位で変わらない。
(com0comで接続しているせいなのかもしれない。)
これを8bitのcp/m実機でやったら1000倍程度の速度差としても1000分=16時間以上かかることになるので今はチャレンジする気にならない。

もう少し検証時間が速そうなモデルを比較用に探そうと思う。

teratermでmandelbrot 一応の成果

 昨日のエスケープシーケンスを含んだ出力をteratermにcom0com越しに流し込んでうまく表示されることを確認してあったのでdotを表示さえできれば描画できるmandelbrot集合を書かせてみた。

teratermのグラフィック画面は左下が(0,0)で全体が1023x779dotで構成されるので左下に640x480のサイズのmadelbrot集合を描いたことになるので正しく描画されているようだ。(上下は反転していると思うけどもともとこの範囲は上下対象なのでわからないな)

もとの描画ルーチンはこちらの「Tektronix 4010(4014) グラフィック・ターミナルへ描画」を改造して使わせていただいた。
※著作権的に問題があるようでしたらご指摘いただけるとありがたいです。

windows11からcom0comへ115200bpsで送っている分にはやや遅いかなって感じだがこれをcp/mの実機からteratermへ送るのは見送りたい。
(時間を考えると勘弁してって感じ)
でも楽しいので次はもう少しドット数が少ない3Dグラフなどを出して楽しんでみたい。

2023年4月10日月曜日

低きに流さるるは水のごとし

 やっぱり楽な環境を覚えるとそちらを使っちゃうって話。

cp/mでc言語を使って3Dグラフィックスをやってみようと思っているのだけど(先人がたの後追いです、はい)、いちいちcp/mの環境内でソースを直してコンパイルして実行って手順を踏むのがめんどくさくなってきた。

で、今回やろうとしているのがcp/mからコンソール(としてのteraterm)にエスケープシーケンスでtek4010形式のコードを送ってグラフィックを実現するって言うこと。で、serialポートへの出力を正規に書いても良いのだけどmsdosにせよwindowsにせよcom0comっていうダミーのソフトウェアクロスケーブルを使えばCOMnへのリダイレクトでコンソールへの出力をteratermに送ることが出来ると踏んだのでその方針で開発することにする。

com0comのインストールで署名でちょっと躓いたけどドライバーの更新で事なきを得てめでたく仮想のクロスケーブルでつながれたCOM1<->COM2を得た。で、teratermを起動して新しい接続でCOM2を監視させてwindows側のcmd窓でgccでコンパイルしたasciiartをCOM1にリダイレクトしたのが下図。

左がteratermで右のcmd窓からのCOM1へのリダイレクトでasciiartの出力を受けている様子がわかる。
まだグラフィックのエスケープシーケンスなどを送る実験が出来てないけどとりあえず次はコンソール内の文字色を変更する実験でもしてみようと思う。

相変わらずこういうことが楽しいですね。


2023年4月2日日曜日

古すぎるハードは始末に困る

 ああ、分かっていたことなのに見出しの件を自ら味わうことになるとは。

EPSONのNP11をずっと使ってなかったけど家内LANから外して所有していた。これをNASにMYSQLを入れる実験用としてLinux化しようとして手持ちのSSDに換装してインストールしようとしたらまったく上手くいかない。

そもそもインストール画面がCD食わせても見えない。
調べてみたらこちらの方が数年前に苦労されていたことの後追いをやっていたようです。

まあスペックをみても

CPU:Atom 230@1.6GHz、RAM:1GB、HDD:SATA
といった感じだしちょっと無理ぽ、なのかな。

せっかくの古代電脳ではあるけど自分の手に余るようでは困りますね。

身の程を知ったうえでnano pi neoぐらいでお茶を濁すことにしよう。
こちらも初期に比べたら値段も上がったしneo2でもないんだけど遅いCPUには発熱的に有利とかメリットがあると信じてちょっとゲットしてみようかと計画中です。サーバ化の顛末は後日。

月日が経つのは・・・

 姉妹Blog共々、7月の更新を忘れてました。 ちょっと色々あって古代電脳というか手続き型のプログラミングへの熱意が薄れてこのブログをどうするか考えてしまってます。 日々、いじればまた関心も高まると思うのでちょっと冷却期間に入ります。