現在地

ソフトウェア

Z8613を動かす (その2:クロスアセンブラ)

テーマ:

ハードウェアが出来たら次はソフトウェアです。

Z8はハンドアセンブルできないほど複雑ではありませんが、アセンブラくらいは欲しいところです。今回のZ8だけでなくSBC6303ボードのHD63C03やMC6803、さらには手持ちのいろいろなプロセッサにも使いたいので出来れば多くのプロセッサに対応しているとありがたい。

ということで候補に挙がったのが「The Macroassembler AS」です。

開発ペースは遅い(というか止まっている?)ようですが、現時点でかなりの数のプロセッサに対応しています。8ビットが中心ですが、16ビット以上にも一部対応といったところでしょうか。マクロは使えますが、リロケータブルオブジェクトの出力は出来ません。

GNU binutils(の中の「as」)にも期待していたのですが、こちらは上とは逆で32ビットが中心で残念ながらZ8には非対応でした。

パーソナルなコンピュータの技術情報事情 (ソフトウェア編)

ハードウェア編に続きまして、今回はソフトウェア編です。

トレーニングキットの時代は回路図同様にソフトウェアについてもオープンなものが多かったと思います。
ソフトウェアといってもメモリの内容を表示・変更したりプログラムの実行ができるモニタ等ですが、これのソースコードがマニュアルに掲載されていたりするわけです。これもサンプルとしての意味が大きいからでしょう。オブジェクトのサイズも数kB以下ですから量的にも大したことはありません。

BASICインタープリタをROM搭載したいわゆるパソコンになると状況が変わりました。シャープのようにモニタのソースコードのマニュアルへの掲載を続けたところもありますが、BASIC自体となるとそうはいきません。

  • マイクロソフト等の社外開発のものが多く勝手に公開できない
  • サイズも小さなものでも10kB以上と大きくなり紙面的にも難しい
  • ユーザ層としても必要としない人が増えた

といった事情からソースコードの公開は困難になります。

パーソナルなコンピュータの漢字事情 (第5回: 文字コード)

カテゴリー:

これまで表示や印字の見た目の話がメインでしたが、最後に文字コードの話をしてみたいと思います。

漢字ROMが最初に搭載された頃、パソコン上ではまだBASICが主流でしたが、まだ「文字」という扱いではありませんでした。JISコードを指定すればパターンとして表示できるというだけで、文字列として(変数に入れたり)扱うことはできませんでした。ワープロ等のソフトウェアは独自に処理していたものです。

使える文字もJIS第1水準の約3,000字(+非漢字)のみでした。足りない字については次のような方法で対処します。

  • 第1水準の文字で置き換える
    例えば私の姓の「淺」は第2水準なので、第1水準の「浅」を使っていました。
  • 外字(ユーザ定義文字)に定義する
    自分でフォントを作らなくてはいけないこと、互換性がなく他人とのやり取りに支障があること、使える字数が限られること、などの欠点があります。
  • (印刷なら)空白にしておいて手書きする

PC-9801シリーズ等ではオプションでJIS第2水準(約3,400字)まで使えるようになりました。

パーソナルなコンピュータのメモリ事情 (第8回: 80386以降)

日本ではPC-9801RAから(PCではPS/2の一部から)搭載された80386になるとCPUのメモリ空間は4GBとなり、しばらくこの4GBの時代が続くことになります。
しかし当時本当にありがたかったのはメモリ空間が増えたことより、仮想86モードが使えるようになったことでしょう。プロテクトモードにいながら8086互換の環境を提供できるようになり、ソフトウェアのみでメモリの再配置が可能になりました。

これにより1MB超にあるメモリの好きな部分を1MB内の好きなエリアに割り当てることができます。これはコピー操作を伴わないので時間はかかりませんし、同じメモリを複数個所にマップしても矛盾は生じません。

  1. ソフトウェアのみでバンクメモリをエミュレーション
  2. ソフトウェアのみでEMSをエミュレーション
  3. 拡張ROMエリアなどメモリ未実装のエリアにメモリを割り当てる

といったことが可能です。1,2ができるので増設メモリはプロテクトメモリ用のみですべての機能が実現できるようになるのでメモリボード選択の悩みもなくなります。3はメモリ管理チェーンに組み込むことでドライバや常駐プログラムのエリアとして使うことができます。

パーソナルなコンピュータのメモリ事情 (第7回: 80286期)

80286が使われるようになるとCPUのメモリ空間は16MBありますのでメモリ問題は解決(一時的なものなので先送りと言った方が良いかもしれません)したかと思いきや、そう簡単ではありませんでした。

80286にはリアルモードとプロテクトモードという2つの動作モードがあります。リアルモードでは8086のソフトウェアがそのまま動作しますが、メモリ空間は1MB (実は「+α」があり、後で出てきます)のままです。リセット後は自動的にリアルモードになるので特別なことはせずに高速な8086として使用できます。一方プロテクトモードでは16MBのメモリ空間が使えますが、ソフトウェアの変更が必要になり、OSもMS-DOSは使えず専用のもの(OS/2など)が必要になります。

ここで皆がOS/2へ移行していれば良かったのですが、DOS互換機能に難(後に80386で解決)があったこともあり多くの人が移行せずDOSを使い続けたためメモリ問題に悩まされ続けることになります。
MS-DOS環境で大きなメモリを使う工夫は8086時代の延長ですが、新たなものも加わりました。

パーソナルなコンピュータのメモリ事情 (第6回: 8086後期)

8086/8088に移行して1MBというメモリ空間を手に入れましたが、すぐに不足をきたすようになります。

PC-9801の発売から4年後のPC-9801VM21で標準搭載のメインメモリは640kBとなり、拡張は限界に達しました。同じ頃、メモリ空間が16MBの80286搭載の上位機種も発売されていますが、8086やV30(NEC製の8086改良版でメモリ空間は1MBのまま)の機種もラインナップとして残りました。また従来機を640kBにまで拡張して使い続けるユーザも多くいました。
これらの機種でも大容量のメモリを使いたいということでいくつかの方式が考えられました。

私のエディタ遍歴

カテゴリー:

先日のVzエディタの記事で予告したとおり、過去に使っていたエディタについて書いて見ます。

ここで言う「エディタ」は勿論テキストファイル編集用のソフトウェアのことですよ。
  1. BASICのエディタ
    最初はN-BASICのエディタでした。あくまでもBASICプログラム入力用のものですが、他の用途に使用したこともありました。
    一つはTL/1のソースコードです。PC-8001用のTL/1コンパイラはBASICのREM(コメント)としてソースコードを入力します。
    もう一つはMC68000のクロスアセンブラのソースです。これはREMではなく文字列として下記のように入力します。
    10 "entry:
    20 " mov d0,#$3400
    30 " rts
        

    BASICのプログラムとしては文法エラーですが、そのまま(中間コードに変換されたりせず)保存されるのでアセンブラはそれを読み取って処理するという寸法です。

Vzエディタ

テーマ:

カテゴリー:

一時期愛用していたVzエディタのマニュアルを発見しました。

Vzエディタ 表紙
日本では一世を風靡したMS-DOSのエディタです。あの頃はエディタといえばこのVzかMIFESかと言われていました。

私の周りでは高校時代の友人にはVz派が多く、大学時代以降に知り合った人にはMIFES派が多かった印象ですね。私自身は安さに引かれてVzを使い、特に不満も無かったのでそのままになりました。なのでMIFESについてはよくわからないので優劣等については書けません。

さてこのVzですが、いろいろと特徴のあるエディタでした。

Motorola MC6800

テーマ:

このMotorola MC6800はIntelの8080とともに最初期の8ビットマイクロプロセッサです。

MC68A00P
MC68A00P、「A」ですから1.5MHz品で末尾の「P」はプラスチックパッケージです。1979年製でしょうか。

後にクロックジェネレータと128バイトRAMを内蔵したMC6802が作られたことは「Motorola MC6802」に書きました。

X60のHDD換装完了

テーマ:

カテゴリー:

やりかけになっていたX60のHDD換装ですが、なんとか完了しました。

まずエラーが出ていた/dev/sd0g (実際にエラーになっていたのは読み出し側の/dev/wd0gです)ですが、前回書いたようにエラーを無視しつつベタコピーしてみました。ブロックサイズ512バイトでしかもリトライがかかるのでほぼ1日がかりです。ところがfsckかけると大量の不整合が報告されます。面倒なので「-y」オプションで全部修正させたところ、なんと全てが「lost+found」に入ってしまいました。WindowsでいうところのFOUND.000, FOUND.001, ...になってしまったということです。

しょうがないのでファイル単位でコピーすることにします。今度はファイルを選べるので大事なものに絞りました。

/dev/sd0hは幸いエラーが出ることも無くコピーできました。こちらは予定通りファイル単位コピーです。

コピー作業に2日ほどかかり、その間エラーのあるHDDもアクセスしっぱなしの状況だったのですが、特に悪化することも無く動いてくれて助かりました。

ページ