しかしちょっと残念に思っていたのが基本的にターミナルで動かすのが前提のcp/mではグラフィックスが出せないということ
でエスケープシーケンスで色だけでも付けてみたのがこちら
これは昨年11月に遊んでいたasciiartにエスケープシーケンスで色を付けたもの
(遊びちょろっと書いてで吟味をしてないので上記の結果がえられるのはwindows上のcp/m-executorのみでcpm8266などで動かしてteratermなどで受けると結果が異なる)
今回こんなページ「BASICで3Dグラフィック」を見つけた
teratermのtek4010のエミュレートの機能を使ってグラフィックを出力する試み
で、ドはまりした。
このページの最初のカラー版asciiartのときも同じ症状でうまくいかなかったのだがcp/mのmbasicでうまく動いてくれないのである。
その動作から推察するにターミナルの(横の)文字数を80桁とか決め打ちして書かれていてbasicのprint文でエスケープシーケンスのために改行せずに80桁以上の文字列を送り込もうとすると途中でcrlfを挟んでいるような感じである。
仕方がないのでhitech-cとturbo pascalで記述して描画したのが下図
(心なしか陰線処理に失敗している気もするけど・・)
(心なしか陰線処理に失敗している気もするけど・・)
w-room02上のcpm8266環境でturbopascalで8分,hitech-cで7分くらいで描けるようだ。
だがmbasicだと表示の途中で画面の左に中途半端なエスケープしそこないの文字が出る。この症状冒頭のasciiartカラーでも出たのだ。
別のbasic処理系で試してみようと思ってbbcbasicというのをダウンロードしてみたけどかなり書き直しが必要なようでちょっと保留。
上記のBASICで3Dグラフィックのページの方たちはgrant basicなるmbasicの亜流のようなbasicで記述しておられるようなのだが・・・
これで直線と点なら自由に描画できそうなのでmandelbrotの描画にも挑戦しようかと頭をよぎったけど90x90で8100ポイントの上記の描画で7分とか掛かるのなら640x480とか半分として320x240でも76800ポイントの描画だと少なくとも10倍はかかるので当面はX。
これで直線と点なら自由に描画できそうなのでmandelbrotの描画にも挑戦しようかと頭をよぎったけど90x90で8100ポイントの上記の描画で7分とか掛かるのなら640x480とか半分として320x240でも76800ポイントの描画だと少なくとも10倍はかかるので当面はX。
ちょっと中途半端なことになってしまったが今回の実験記述はここまで、・・
一応自分の備忘録としturbo pascal で書いて気付いたことをメモっておく。
1)TPにはbit演算のANDがないのでinlineで書く必要アリ。
何十年ぶりのz80(というか8080しかわからないのでそれ)の機械語でした。
2)TPの16進数は$で始める(忘れてました)
3)TPにビットのシフトもないのでBASICを参考に2のべき乗で割り算
3)などは昔は当たり前だったと思うけど最近の言語では専用の命令があるものね
cは今も昔もあんまり変わらなくて楽 =>>5とか & | とか0x1Bとか今も同じ。
言語間はbasicと行き来するよりはc <->tpの方がかなり楽だとは思った。
cp/mのmbasicで大きなプログラム書くのは相当骨が折れるけどcやtpならある程度までは書けそうな気もする。
でもvisual studioでcpp書いてるとIDEさんに叱られなくなったら少なくともコンパイルは通るレベルまでtypoとか変数の型間違いとかが無いってのは別次元に楽ですね。
で、tpとVS見比べてると進歩がすごいとは思うけどCPUの進化ほどでは無い気もする。
cp/mをesp8266で走らせてて考えたこと。
単にsirial portで単独のプログラムが走るのを楽しむだけであればエミュレータである必要は無いのでarduinoのIDEでボードとして認識させれば動きは速いはず。asciiartはesp8266で2分くらいかかるのがarduinoのものをコンパイルして食わせてなおかつボーレートを8266標準と思われる115200bpsにしたら160msec.ぐらいだった。750倍の処理速度だ。
多分 nucleo ST32-f401reとか wio terminalなども同じく速いと思うのでこれも興味の対象である。
このあたりの強みはarduinoで1度書いたソースを自動でコンパイルして各々のボードに送り込めば動くということ
素晴らしい!・・・but,6/6現在esp8266でのtekエミュ画面への書込みは失敗!
0 件のコメント:
コメントを投稿