TarZの日記: /.J日記はストーリーにクラスチェンジした 6
日記 by
TarZ
# くっ、ストーリーになることも考慮して日記書くべきだったでござる。(´;ω;`) ブワッ!
日記に書いた文章が、ストーリーでは途中で切れて後半はなくなっている。日記だから字数制限に引っかかって編集前に切られたのか(チケット #14831 アレたまから記事を採用する際、長い記事が途中で切られる)、編集によってカットされたのか分からない。まあ、後半は個人的な話なので、ばっさりカットされてもまったく問題はないのだが。
とりあえず、okkyさんのコメント(#1665279)が有意義だったからヨシとしちゃう。(「顧客満足」~「顧客許容」に関しては、客商売をしている人は感覚としては理解しているかもしれないけど、概念に適切な名前付けがされると便利)
… … … …
それにしても、ストーリーのほうは、Excelに悩まされている人、Excelに愛着を感じる人それぞれのコメントが入り乱れて楽しいなー。
ああ、Multiplanとは懐かしすぎる…。CP/Mで動いたんだっけ。うろ覚えだけど、I/O誌かなにかで広告が掲載されていたような。当時はナンノコッチャと思ったものだけど、社会人になってからそいつの子孫にお世話になるとは。
Multiplan (スコア:2)
Multiplanには少し思い入れがありますね。
ある特定用途のアプリケーションパッケージで、メインの要素とは違う部分の、汎用計算用のプログラムを作りました。
表計算ソフトなのですが、MultiplanのUIを意識して作ったのですが、当時Multiplanは有名だったので、お客さんに大好評だったということでした。
Cで書いた初めての本格的なプログラムだったり、yacc&lexも使わず数式パーサーを書いたり、最後には、テキストベースのポップアップウインドウを組み込んだりよく頑張ったものです。
Re:Multiplan (スコア:2)
おおお。当時の計算機リソースでよくそこまで。しかも初Cプログラムで、とは。
そういえばmanmosさんは、Z80 & CP/Mエミュレータも書かれていませんでしたか? Rレジスタ周りの実装(?)を、random()を7ビットに切ることで実現、というような投稿を読んだ記憶が。
Re:Multiplan (スコア:2)
> そういえばmanmosさんは、Z80 & CP/Mエミュレータも書かれていませんでしたか? Rレジスタ周りの実装(?)を、random()を7ビットに切ることで実現、というような投稿を読んだ記憶が。
書きました。目標がBDS Cとword master(X上)が走ることっていう。Z80としては完全じゃなくて、DD命令までは(HL相対とか)を実装しなかったような。裏レジスタまではやったんですけど。
当時、そのすこし前にやった仕事がZ80で時々、その会社から離れていたにも関わらず、改造話が時々浮かんでは消えていたのです。
#Z80仕事もしんどかったです。ソフトの問題ではなく、可動部が引っかかって動かないって話がほとんどで、結局それのリカバリーにフロッピに状態を書き込んで、リスタートとか。
#ちゃんと、動くときのターンアラウンドが13時間。半分寝ながら、機械を眺め続けました。徹夜でちゃんと動いたその朝に車でひらってもらって、ライブ(野外オールナイト、開場まで木陰で寝ていた)に行ったのが懐かしい思い出ですね。
#16kbyte単位でバンク切り替え、計16バンクだったなぁ。X1Turboのモニタが勉強になりました。そんで、私しか理解できないプログラムの出来上がり。
で、(所属していた会社が、その会社と縁があるもので)SunOS上にCP/Mエミュレータを作ってみたってことです。
結局使いませんでしたが(^_^)
まあ、クロックを考えていなかったりするので、エミュレータとしてはまだまだでした。
だいぶ後になって、little endianでは動かないとか、ありましたが、さてどこに行ったやら。ソース持ってません。
Re:Multiplan (スコア:2)
なんと、そんな目標があったのですか。BDS Cはともかく、word masterをエミュレータで動かすのは速度的には少々きつそうな印象が…。
マシンが速くなった最近は(一般的なアプリの分野では)あまり聞かなくなりましたが、一昔前の開発ではTAT 13時間なんてことも確かにザラにありました。X1turboのモニタを作ったのは…あれはHudsonだったかなあ。いやはや、懐かしい。
fj.sourcesのアーカイブを見ても、ソースは残ってなさそうですね。個人的に保存している人はいるかもしれませんが。
Re:Multiplan (スコア:2)
word masterはそれなりに動いてました。
Xのvt100エミュレートウインドウをスクロール、リサイズ、漢字サポートなしの簡易バージョンで作りましたから。
一時期ansiターミナルのプログラミングに凝っていて、XtでのWidgetやNeXT上のクラスなど作りましたが、スクロールと画面のリサイズをサポートするとかなり重くなってしまったので、その逆行でしたね。
X1Turboのモニタは32kByte、ハンド逆アセンブルしましたね。
なぜ逆アセンブラを作らなかったんだろう?今となっては思い出せない。まだ、買ってすぐ取りかかってCP/MがX1に出てはいなかったので、Basicだとうまく作れなかったのかなぁ。最後の方は作ったような気がしてきましたが、何だか、小学校の算数の制限で数学の問題を解くような気分になってきました。
ま、おかげで、裏レジスタの状態まで記憶しながら動作トレースが出きるようになった時代がありましたが。
DE(HLか?)レジスタにROMの関数エントリを代入して、RAMのバンク切り替えルーチンをCALLするという方法が懐かしい。
初め、まったく理解できなかったんですよ。RAM側から見ると、そのエントリーはポートを叩いて数byteのNOPの後にretがある。「え?何にもしてないやん」って感じです。
普通にそのportを叩くと、暴走。ある日突然、下のエリアから見たことのないものが出てくる。ワンダーだったなぁ。
X1のおかげで(?)私の16bit化が遅れ、MZ-5500という間違った道^_^に行かずにすみました。
ちなみにZ80の基礎は当然MZ-80Bです。モニタとIPLのソースがついてきたんですよね。F-DOSっていう開発ツールもあったんですが、さすがに当時の私には考えもつかないお値段で。
コンピュータを売ろうとしたNECとZ80を売ろうとしたSHARPの色が出ている時代です。
あぁ、完全にジジイ会話。
#最近の若い者は、ゴニョゴニョ。
Re:Multiplan (スコア:2)
MZシリーズのZ80は、ザイログ製じゃなくてシャープ製でしたっけ? よく覚えていませんが、確かセカンドソース契約を結んでいたような。(今Wikipediaを見ると、MZ-2200はシャープのセカンドソースの石のようですね)
私は、X1/X1turboでZ80をいろいろいじってからは(アセンブラがなかったので当然ハンドアセンブル、ジャンプ先のアドレス計算が嫌いでした)、68000マシンに移りました。Macじゃなくて某国産機のほうです。
初めて16MBのメモリマップを見たときはその広さに驚愕し、「メモリマップドI/Oだし、シンプルでフラット。これでバンク切り替えとかめんどくさい事とはオサラバだー」と小躍りしたものです。そのマシンにはアセンブラとリンカーが付属していたので、ハンドアセンブルすることなく色々と遊べましたが、今思えばやっぱりZ80の頃が楽しかったと思います。制約があったぶん色々とトリッキーだったからなんでしょうね。
…いえ、もちろん現在の環境を捨てて、当時の環境に戻りたいとは思いませんけど。:-)
# 最後まで持っていたX1turbo(ZIIIだったかな)は、ついに去年捨てました。
情処がCASLだった私はまだまだ若造です。(キリッ!)