2019年11月13日水曜日

cpm8266 vs cp/m executor

windows10 のcmd上で動くcp/m executorでコマンドの実行時間を計測する方法
D:\>のようなプロンプトに対して
powershell -Command "Measure-Command { ここに計測したいコマンド}" とする。
cp/m executorの場合だとcpm [cp/mのコマンド+パラメータ]となるのでそのように打つと所要時間がわかる。
例えばsingle board computer界隈ではasciiartという名前で打ち切り回数15回のキャラクターベースのマンデルブロー集合の描画でそのcpuの処理速度を見るのだけど。概ねz80の8MHzで2分30秒くらいの時間が掛かっている。これを計測してみよう。

まずは通常の実行、mbasicでasciiat2.basというプログラムを実行。
これの実行時間を計測してみる。
cpm mbasic asciiat2.bas の部分を先ほどの呪文で挟んで・・
出た! 1.42秒か。なるほど

ではcpm8266ではどうかな、こいつはcp/m2.2なので時計とか無いからストップウォッチで測るので誤差1秒くらいあるけど関係ないくらい遅いから。さて
最初のコマンドの窓とフォントの設定が異なるのでちょっとイメージが違うけど同じ文字の結果が得られている。実行時間は手元のSWで2分39秒なのでexecutorの110倍以上の差がついたことになる。
このBASICのソースをbascomでコンパイルしたものだと実行時間は1分10秒で2倍以上高速になる。tpでソースを直してコンパイルしたものは
1分40秒でインタープリターよりは速いがbascomの生成したものよりは遅い結果になった。basicの浮動小数が4バイト単精度なのに対してTPが6バイトの浮動小数なのも影響しているかもしれない。
ちなみにwinのexecutorではbascom 447mS,tp 183mSとなり逆転している。このくらい速くなるとbascomの起動用の外部コマンドbrun.comの起動時間が足を引っ張り出すのかもしれない。

目下の問題はエミュでHiTech-cの浮動小数doubleがからむソースのコンパイルに失敗するということ
まあz80でCってあんまり重要視してなくてTPとPascalが動けば十分だとも思うしアセンブラのほうが触りたいのかなって自己分析してる
mon80を使って機械語に触れたいかな?あとはtpのbdos命令とかで十分か? cのコンパイル問題はじんわりと解決していこう

(19/11/14 am11:30) hitech-c の問題1つは解決
変数宣言を最近のCみたいに{}の途中ではできない様だ。
pascalがprocedure や function宣言部とbeginの間にvarで変数宣言部を持つかのように{の直後に変数宣言をかためる必要がある。
あとは実行は出来てもprintfで内容が出ないで%fだとfと出るのでこの部分だけだ。

(19/11/22 pm8:57) hi-tech cでコンパイルできない問題が解決
浮動小数を扱うにはコンパイル時に-LFを指定しないといけない見たい
(link floating numbersみたいな感じなのか、library findなのか?)
で、asciiartを作成した見た。
時間はwin-cpmで107msでcpm8266で44秒
TPやBascomよりも高速である。

ちなみに各コンパイラのオブジェクトサイズを見ると
turbo pascal :: 9KB
hi-tech c :: 8KB
BASCOM :: 1KB(ただし実行にbrun.com 16KBが必要)


2019年11月12日火曜日

cpm8266 - その後

ESP8266で動くcp/mのエミュレータで遊んでいた。
完成度も高くていろんな言語をとっかえひっかえ試している。

小さなファイルの授受はwindows10上のWSLのminicomを使ってxmodem経由で行う。
あんまり理由はわからないけど15kB以上のファイルを送ったりできない。しかたがないので上記のエミュcpm8266のセットアップ途中で使ったファイル転送ツールESPTOOLのexeを配布イメージから生成できるのでそれを利用してwindowsとesp8266との間で全dskイメージとoドライブ部分専用のuploadとdownloadをするcmdを作成してやり取りすることにした。
個々のファイルについてはcpmtoolsguiを用いて操作をする。

これでwindows10のcp/m executorとのシームレスな感じのやり取りができるし複数ファイルの扱いだとxmodemよりも面倒が少ない。

言語としてはmbasic および コンパイラ、turbo pascal、アセンブラについてはどちらでも実行できるのだけどc言語についてはhitech-cがcpm8266側のドライブ容量が241kBしかないので入れられない。
hitech-cに精通しているユーザなら何とかやりようがあるのかもしれないけど、にわかユーザには荷が重い。ここはwindows側でコンパイルして実行ファイルを送ることで我慢するとしよう。
コンパイルって時間が掛かるしソース編集との間を行き来しやすい方が断然効率が上がるのでエミュの価値が高い。

まあ実行速度はcpm8266がz80@8MHzぐらいなのでかなり遅いし・・
(実機に沿った速度と考えれば悪くない。cp比は高いよね)

コンパイル後の実行ファイルと言えばturbo pascalの生成した実行ファイルもendのアドレスを指定してコンパイルすることで転送しても動いてくれるようになりました。

2019年11月10日日曜日

趣味の方向性 - cp/m,turbo pascal,c and c#

このところエミュレータを利用したcp/mの開発にはまっていた。

Windows上のエミュレータ(cp/m executor,etc)しかり
外部SoCのcp/m環境(cpm8266)しかりなのである。

windows上の方が実行が速くて楽なんだけど環境を構築する必要もなくてどうも実感が湧かないというか本来の目標に向けての予行演習以上の意味が見いだせない。
勿論、実機で動く実行ファイルを作るクロス開発環境があると思えばそれで充分役立ちはする。
外部環境のcpm8266は小さな3x5cmのボードが1つのPCになることを想うと面白くはあるがつまるところこれも本物ではなくてエミュレートであるためもうひとつワクワクする感が少ない。

次のステップを考えたい。思いつくテーマは
1)Z80観察日記・・ブレッドボードでCPUの動きを見る
2)AVRなどチップで遊ぶ・・arduino活用
3)C#でraspberry piを開発する
4)nucleoなどほかの環境をいじる
5)raspberry pi zeroでハイレゾの音楽
悩ましくも楽しい葛藤

2019年10月31日木曜日

cp/mの開発環境と実機

ESP-WROOM-02の一つであるHiLetgo ESP8266(2個セット 1,390円)
でcp/m8266エミュレーションができるようになった。
目下、cp/mの実機と言えばこれになる。


windows10上のwslのminicomでxmodemを使ってファイルの受け渡しができることも確認した。

手元のPC上での実行環境はcp/m executorを使う。
どちらで動かしても同じ言語ならcp/m executorでソースを書き、できうれば実行ファイルまで作れれば都合の良いことも多いと思う。
目下の結果ではhigh-tech-cのコンパイル結果のcomは転送で動いた。
残念なことにturbo pascalのコンパイル結果のcomファイルは高位メモリのエラーで動かなかった。ソースは送れるので実機の上でもかなり高速なコンパイルの期待できるTPのことなので全く使えないというわけでもないけどちょっと残念。cのほうはあっさり動いて流石のポータビリティだと感心することしきりだ。ちょっと昔の書籍を参考書に引っ張り出してきて勉強しよう。

2019年10月29日火曜日

lenovo g560 HDD vs SSD

前のエントリーでg560をWin10化するとともにSSD化したことを書いた。

一応ベンチマークとWin10の起動時間を記す。
起動時間はSWオンから画面がでるまでで
 HDD:3'37"で画面が出てからもツールバーのエクスプローラアイコンが落ち着くまでにさらに2分ほどを要した。
 SSD:0'34" これは途中でパスワードを入れる時間を含んでのもので画面が出た時にはツールバーは安定していた。
これでHDDでの運用を選ぶ人がいるのか?

Crystal Disk Benchmarkの比較

まずは最近の愛機mouse pcのm-book G550SN
512GBのごくごく普通のSSD:ADATA SU800NS38
でも多少の心配(データがいつまで安全か?)があっても離れられない。起動も15秒くらい レジュームの必要性が無いほど速い。

次にg560換装前のHDD
移行前のセレモニーとして余分なデータを刈込み不要なソフトをアンインストールした状態がこれ。実はHDDは1回純正から交換しているのでlenovoの出荷状態の評価とは異なる

最後にSSD(Palit UVS-SSD256)に換装後
ADATAの半分くらいの速度だけどHDに比べれば速度的な優位性は明らか

これでなにかメイン機に支障が生じたときのバックアップとしては十分に使えそうなPCが手に入った。Congratulations!

手持ちの旧ノートPCをwindows10にした(ついでにいろいろ)

家内のノートPCを入れ替えたので玉突きで旧型になったLenovo G560をWindows10にアップデートした。

実は先行してWindows7の状態をSSDにしたかったのだけど一度HDDが不良で元の320GBHDDからEaseUs todo BackUpで500GBのHDDに移しているのだがその時に元の別区画の初期化用イメージもクローン化したつもりだったのだがwin7のバックアップイメージも復元ポイントもonekey recoverlyも失敗した。

しかた無いのでいきなり以前に作成してあったUSBのインストールメディアでwindows10にアップデートした。
Dellのcore i3のデスクトップで3時間ほどかかったので心配してたが思いの外、早く進んで2時間ほどでインストールに成功した。
で、一度win10にアップデートしたPCはクリーンインストールしても自動的に認証されるとどこかのサイトに書いてあったのを思い出したのでダメ元でSSDにクリーンインストールしてみた。
途中でメディア開始時の画面に戻るアクシデントもあったが1時間半ほどでインストールに成功した。
core i3とは言え動作はたいていノートよりも早いデスクトップよりも早く済んだのは予めRAMを4GBから8GBに乗せ換えておいたことも影響しているかもしれない。

前以てハード構成の登録が済んでいるのかどうかは不明であるがSSDにクリーンインストールした状況で画面モード、Fnの機能キー、マウスタブレット、Wifiなど全てOKで思わずwin10賢いって思った。

次のエントリーでベンチなどちょっとやってみる。

2019年10月20日日曜日

cp/m-80 ふりだしに戻って

8bitCPU intel8080用のOSとしてスタートしたcp/m-80への憧憬

これはもうヒナが卵から帰ったときに初めて見たものを親と思い込んでしまうのにも似た気持ちかも

単にcp/mを動かしたいとしても方法はいろいろある。
1)PC上のcp/mエミュレータで動かす (まあ動くわな)
2)別のCPUなりボードPCでz80のエミュレータ環境を用意してその上でcp/mを動かす+ターミナルにWindowsを使う
3)別のcpu上のcp/mエミュレータでスタンドアロンで動くものを用意する
4)z80なり実際にcp/mがネイティブで動く環境を用意する

数字が大きくなるほど環境としては昔の状況に近づく、まあ趣味人としてはワクワク感は嫌がおうにも増す

手堅いのは1)で簡単に始められるうえにまず動く。
2)-4)はPCとは別のハードを用意するわけだし専用のものでもないのでハードルの高さは1)とくらぶべくも無い

各々どんなものか具体的に書く

1)のPCでのエミュは現状の候補が3つ
(1):CP/M-80 program EXEcutor for Win32 V0.4
  エスケープシーケンスも普通に使えるし最も楽に導入できる感じ
(2):CP/M Player for Win32
  エスケープシーケンスも使えるとあるがTP3ではNGであった
  竹田氏の熱意は凄いしお世話になっているeFMR-50とかもあるが
  ちょっとやってみるにはEXEcutorのほうが肌に合う
(3):Altair 8800 simulator
  海外ではもっともオーソドックスなものらしい
  当面はその時に行う実験に大きな問題が発生しなければ(1)を使用

2)ではcp/m-8266とrun-cp/mが2強かな
  とりあえずWROOM-02でcp/m-8266の稼働を目指す
  某大国製の2個で1,390円のESP-8266をamazonで買った
  はたしてどうなるのやら
 (最悪、全く動かないときはraspberry piを使ってUltiboの
  cp/mエミュもあるしね)

ほかは上記の結果を踏まえて拡張する
せめて裸のz80をいじって遊びたい

取り急ぎ、Windowsのcmdでcp/m executorが動作している様子
別にcp/mを味わうっていうだけならこれで十分な感じだけど
なんか当たり前すぎてちょっと面白みに欠ける。

んでamazonでesp8266のFlashのサイズが4MBのものを物色

を購入 2個で1,390円なり
技適通ってないけど電波出さないしいいよね。

翌日に届いたので通電してUSBからターミナルで見てみたけど近くのWifiの検出がデモとして動いていたけどATとかの地味な実験方法がわからない
もう面倒になったのでえいやって感じでCPM8266を入れる
参考にしたのはこのht-decoさんのサイト 
指示に従ってやっていったらきっちり6.のコンパイルでエラーが注意書きの通りに出た。そして対策通りにやったら通過した。まあスキルは身につかないけどブラックボックス的手順でらくちんらくちん

ターミナル起動してcom8266が出た画面がこちら
動作もサクサクしていて良いのだけどteratermのフォントがデフォでちょっと見にくい。別のフォントにしてみようと思います。

さてこれらのシステムで遊ぶヒントはrun-cp/mの説明でこれまた
詳しく教えてくれてます。

しかし何やら仕事がちょっと落ち着くたびにcp/mって書いてるのに気が付いたりして

さあ次はどうしようか?






dosvaxj3が更新されていた。

 最近、エミュレータ系をあまり触っていなかったのだけど久しぶりに見てみたらタイトルのようにdosvaxj3が更新されていた。 on emulatorでセルフにcなどのソースを書いて実行するのに母艦側の特定のフォルダをドライブとしてマウント出来たり普通に母艦のimeで漢字が入力でき...