2019年4月10日水曜日

情報量の大切さ

大好きなプログラム言語のひとつがPascalである

でもWindowsよりも前に触っていた記憶(まあ、主にMS-DOSの時代だ)による

で、cp/mを弄ってみたいっていうのも、あの頃を思えばオーパーツとしか思えない
TurboPascalで当時を想ってみたいってことが多い

最近、free pascalのIDEであるところのLazarusの2.0が正式にリリースされたのを知って
遅まきながらWindowsでやってみようとインストールしてみた。
実に使いやすそうな感じだったのだが…
残念なことに躓くこと夥しい。
で、そんなときはgoogle先生のお世話になる。しかしネット上に情報が無いのだ。
その昔、TurboPascalをBorlandから世に出したヘルスバーグが、その後Microsoftに移って上梓したC#はどうだろう。同じ作者のものなのに情報が溢れるほどある。
google先生にお伺いを立てれば大抵の疑問はすぐに回答が得られる。
早速やってみると・・・・
BASICで書いたMandelbrotをC#で動かしてみると100倍も高速で動く。

やっぱ情報量が多いってめっちゃ大事。

※もちろん言語の力やライブラリーの使いやすさと充実しているかどうかも大事で、
C#の場合はそのあたりがめちゃくちゃ充実していることも大きい
ベンチマーク系の処理で処理時間を求めて表示したいことは多いけどC#のばあいだと
Stopwatch sw = new Stopwatch();
sw.Start();
// 処理を行う
sw.Stop();
Debug.WriteLine("Elapsed time (ms) = " + sw.ElepasedMilliseconds);
みたいにStopwatchってライブラリー(オブジェクト)があって、スタートメソッド呼んで、測りたい処理実行してストップメソッド呼んでそのあと徐にストップウォッチの結果を然るべき形式で見せてくれるメソッドで取り出してやるだけでOK! わかりやすい
C#はいたるところでこんな仕組みがあるので楽々ソフト作りができる。


2019年4月8日月曜日

久しぶりのOS達

気が向いたら変なことに没頭するのが悪い癖

その一つが古いOSで遊ぶこと
cp/mについて調べていたら何となくPC98のソフトはどうだったっけと思い立ち
anex86をNASから引っ張ってきて動かしてみた。
画面をドットバイドットにするのが上手くいかない。
いつものmandelbrotの描画テストをやってみた。
実行環境はN88BASIC(DOS)で発散までの繰り返し上限は100で640x400のエリアに
対して計算させている。
実行時間は8分28秒だから508秒か 遅いのだろうね。

もう一つ気が向いてvirtualboxの中でwindows98seも動かしてみた。

背景のanexは縦横を2倍した感じでサイズを模索してた時のものでその前でwin98seが
動いているのが見えるけどhyper-vを生かしておくと速いけど動作が不安定。
仕方なく外しているとかなり遅いけど安定して動く。
virtualboxの追加ドライバーはこんな古い16bitのOSでは使えないので640x480の基本的なVGAの画面サイズから他の大きなものにするのにかなり苦労をした。
仮想ハードウェアの構成やディスプレードライバーなどこちらのサイトを参考にさせていただいた、ありがたし。

こんどはarmの説明を見てarduinoのasm命令を試してみよう。
多分、今の自分が一番cp/mやDOSでやってみたいのがturbo pascalを使ったasm交じりのプログラミングだと思うから・・

2019年4月6日土曜日

古いPC環境とソフトウェアエミュレートの価値

最近、PC向けとしては最古のOSであるcp/mで遊んでいる
きれいなグラフィックスや表計算ソフトなどが動くわけではなくて、
文字だけの所謂DOS窓でソフトウェアを作ったり文字だけで表現されたゲームをしたりできるだけなのだがPC黎明期のあこがれのOSに触れられるだけで垂涎の体なのである

当初は8bitCPUの8080用に開発された(上位互換のz80でも動く)が後には16bitCPUの8086や68000用にも用意開発された ただし16bit用ではMS-DOSの後塵を拝した

現在cp/mそのものやそのうえで稼働した様々なソフトウェアが事実上フリーなものとしてネットで配布されている - The Unofficial CP/M Web site
そのほとんどが英語オンリーだけど8bit機であるし実験的な利用を考えると十分と言える

その実行環境は大きく分けて3つに分類できると思う。
  1. 実機:昔ならPC-8801系にメモリーボードなどを加えて別売のcp/mを購入するような形で実現したものであろうけど、比較的最近だと有志によって作成された基盤にいくらかのLSIチップをのせてシングルボードコンピュータとしてPCとUSBケーブルでシリアルインターフェースにつないで利用することになる
    例1:Z80-MBC2 z80とそのほかの3つのICで構成(128KBのRAMでCP/M3も稼働)
       IOやバスの調停をAVRのATMega32Aにさせている
       CPUの駆動クロックは4MHzと8MHzの切り替え
       オレンジピコさん(レア部品多数)での取り扱い
    例2:SBCZ80 古典電脳物語や8080伝説の鈴木哲哉氏の制作
       CPUの駆動クロックは2.5MHzと5MHzの切り替え(ハンダジャンパ)
       この方の他のSBCはスイッチサイエンスで扱いがあるけど、これはまだ
       (部品点数が多いうえにZ80-SIOなどディスコンが心配)
    例3:Pic24CPMボード z80最速の20MHz用を使って16MHzで動く。
       例1のAVRと違いシステムのコントロールチップにPIC24を使用
       プリント基板のガーバーデータなども公開されているし最も
       作ってみたくなる存在 RAMがディスコンか?
       (今ならHM628128ALP-7もオレンジピコにある)
  2. PC上のエミュレータ
    そもそもCPUクロックで千倍とかの差があるのでソフトウェアで8bit機の動作をさせることに何の支障もない 
    (もしあるとすれば5kgの手荷物を大型トラックで運んでる違和感か)
    でも実機との比較ができると良いことも多いので手元で環境は仕込んでおきたい
    例1:Windows32bit用にいくつか出ている
       1)takeda氏のcp/m player
       2)vecterのcp/m executor
       3)altair 8800のエミュ 日本語紹介ページ オリジナル配布サイト
      altair使いやすくてめっちゃいいのだけど^eがエミュレータからのエスケープで
      エディタが使いにくいです
    例2:linux用だとyaze 日本語紹介ページ
     実は環境はそれぞれのエミュレータで錯綜していてmacとかでも動くものも多い
     日本製の2本はwindowsの32bitコンソール専用だけにファイルの準備が楽
     altairとyazeはcp/mの環境から忠実に再現しようとしているので母艦との
     ファイル交換がひと工夫必要

    で、z80などをエミュレートするけどwindowsPCでやっちゃうと牛刀割鶏な感が
    否めないってエンジニア心が言うもんだから別のハードウェアでエミュレートするって選択肢も浮上する それが・・・・
     
  3. 他のCPU(ARMとATmegaがほとんどだけど)エミュレート
    例1:CP/M on an AVR 面白そうだけど4bit D-RAM入手がね・・
    例2:cpm8266 日本語で① その② ESP8266(WROOM-02)で入手性良し
       内臓のフラッシュROMをファイルシステムとして使うため4MB必須
       外部とのファイル転送方法を確立する必要あり
    例3:RunCPM 日本語紹介ページ(詳しくて夢膨らむ) M5Stackでも
       対応するボードは多岐にわたっており入手性に不安なし
       安定性などで cpm8266のほうが良いって記述もある
       でもm5stackでいろいろ遊ぶうちの一つの選択肢としては悪くない
    例4:cp-mega88 作者はとよしまさん(日本人!!) 解説 ご本人解説
       各種の環境で動くけど速くはない 忠実に8bitCPUを再現か?
       本来(?)のハードのガーバナー情報など
    例5:mbedでcp/mエミュ Nucleoは触ってみたいボード 生Z80とのコラボも!
       こちらのコメント欄のやり取りではNucleo F401あんまり速くないみたい 
とりあえずはPCのエミュで慣れつつcpm8266、runCPM、mbedなどで遊ぼう

2019年3月26日火曜日

mouseコンピュータ m-book G55SNのストレージの速度

約一年ほどWindowsPCをメインで使ってなかったので久しくCrystalBenchmarkの存在を忘れていた

で、取ってみた
左がSSD(C:)で右がHDD(D:)の結果
SSDはADATA SU800NS38-512GTCってM.2 512GBのもの 流石に速い
HDDはSEAGATEのST1000LM048 (1TB 128MDcache 5400rpm)のもの データ置き場としては
ちなみにCPUは core i5-8500 で第8世代のデスクトプ用と同じ規格のもの
RAMがちょっと選択ミスでデフォのままにしたら4GBx2なので増設時に捨てなきゃだわ

比較用に手持ちのwin10デスクトップ2台も計ってみた
まずは開発補助器 HP s5-15jp cpuはcore i5-2400 3.1GHz 2011発表の第2世代でも速い
結果は
3.5"のSTAと考えるとちょっと残念。まあ及第点か?
ちなみにドライブはSumsungのHD103SJってやつ

しんがりはFujitsu Esprimo FH77でcpuはi7-2670 2.2GHz
さすがに一体型で中身はノートPCと大して変わらないシリーズなのでHDの速度に期待はできない 型番はWDC WD20EARS-07MVMB0(ググっても出てこないので要調査)

まあ良い買い物をした感じですな ただしデスクトップが払い下げであることを考えるとこんなもんかな?

2019年3月24日日曜日

開発用ノートPCをゲットした

念願の開発用のノートPCをついに手に入れた


モノはmouseコンピュータさんのm-book G550SNという型番の15.5"LCDのもの
特徴はデスクトップ用と共通のシリーズのCPUを搭載しているがGPUを別には積んでないのでそれほど発熱やファン音を気にせずにパワーを楽しめるってことかな

一応カスタマイズで256GBのSSDを512GBに変更して入手した

3日前に届いてからずっとセットアップしてたんだけど前のからのデータ移行に思いの外時間が掛かってしまった

現状ではWSLから呼び出すX11のターミナルで漢字が変換できない
どっか1つだけ嵌ってしまっているのだと思うけどIMEが[漢]とかにならない

最近、注力のArduinoは上手くいってこれはいい感じかもな
これから開発ごっこを楽しむつもりである

2019年3月6日水曜日

windows10 on macbook pro(2013late)の更新

本日、bootcampで稼働しているmacbook proのwindows10を弄っていたらappleからの更新が掛かって念願の「かな」キー、「英数」キーの切り替えによるmac osライクな日本語入力ができるようになった。
またスプレッドシート系やブラウザで多用しているctrl+Homeキー代わりのcontrol+fn+←も効くようになって大変いい感じで、やっとmacで使う感じでwindows10 on macbookも使えるようになった。

appleさんどうもありがとうさん

2019年2月22日金曜日

とんだ思い込みのミス

昨日、手持ちのmacbook proのOSをmarvericksからSierraに上げた

最新はMojaveなのだがいろいろと不具合も漏れ聞こえてくるのでいつでも無償で上げられるものはあせらずにSierraとした。まあ画面のアイコンがモバイル系の端末と共通するようなものにかわったりとかSiriが入ったりはあるが極端な変更は無いと思っていた。

しかし問題は別のところで発生。

後で上げるといろいろと大変ということで先にbootcampとparallelsで使っていたWindows7をWindows10に上げておいた

Bootcampで切り替える実験もした。いい感じだ
当然、Win7のときよりもwin10のほうがcore i7,RAM 8GB,SSDの恩恵を受けて起動も速い
parallelsは前のバージョンではWin10のエリアを認識すらできなかったのでバージョンアップして14にして再挑戦

ここで問題が発生!ちゃんとアクティベートしていたと思ったのに無認証の警告が出る
あれこれ調べてみたらmarvericks+bootcamp+parallels+Windows7のときは1つのライセンスで実行可能だったものがどうやらハード構成がbootcampとparallelsではwindows10からみて異なるものとみなされて別のライセンスが必要なようだ
明らかに思い込みによるミスだ

bootcampによるmacos側からwindowsの切り替えにしてもmarvericksのときには必要のなかったロック外しのためのパスワード入力が1ステップ増えてめんどくさいにしても起動自体はwin10のほうが速いので良い
もう一つライセンスをゲットしてbootcampとparallelsを併用できるようにしたとして今度はofficeの認証でも同じことが起こる可能性が高くて萎える

これを知っていたら大枚叩いてparallelsのバージョンアップなどせずにbootcampのみで我慢したものを・・

悔やまれるミスだ

dosvaxj3が更新されていた。

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