思い出・昔話

パーソナルなコンピュータの入力装置事情 (第3回: ジョイスティックとライトペン)

2019-05-02 23:35 — asano

テーマ

カテゴリー

コンピュータのパーソナルな使い道というとゲームが重要な位置を占めるのは今も昔も変わりありません。

キーボードでも操作できますが、本格的にプレーするためにはジョイスティックが欲しくなります。前回(第2回: キーボード)でも書いたように壊しても簡単に交換できなかったことも理由の一つかもしれません。

形式としては少なくとも日本ではレバー(上下左右のスイッチ)とボタンが2つというのが一般的でした。
Apple IIなどはレバーをスイッチではなくX軸とY軸のアナログ値として読めるタイプだったと思います。

NECのPC-6001やMSXなどホビー向けの機種は専用のコネクタを持つものがありました。D-Sub 9ピンのコネクタ(いわゆるATARI仕様)が2つ付いているのが多かったと思います。

専用端子のない機種では以下のような接続方法がありました。

パーソナルなコンピュータの入力装置事情 (第2回: キーボード)

2019-05-01 23:57 — asano

テーマ

カテゴリー

マイコンキットのモニタや簡易アセンブラ程度なら専用キーボードでもなんとかいけましたが、BASICなどの言語を使用するならフルキーボードが必要になります。

16進テンキーのマイコンでもオプションでフルキーボードが用意されたものもありました。メモリとディスプレイ回路を追加してBASICを実行するためのものです。

基板むき出しではなく完成品のパソコンになるとフルキーボード搭載が一般的になります。

キーボードの形態としては一体型と分離型がありました。

当初はキーボードは本体と一体になっているのが普通でした。現在のキーボードを分厚く(10cm程度)して中に本体機能を収めたようなものです。

ノートパソコンからディスプレイを取り除いて厚くしたような構造です。

厚さを増すと操作しづらくなるのでキーボードの下に基板を1枚配置し、拡張スロットや電源などは奥に配置するのが普通です。

奥行きを伸ばしてディスプレイを上に乗せるようにしたものもあります。日立のベーシックマスターレベル3などがこの形式です。

上位機種の多くは次に述べる分離型に移行していきましたが、低価格機を中心に一体型もしばらくは残りました。

パーソナルなコンピュータの入力装置事情 (第1回: マイコン時代)

2019-04-29 23:56 — asano

テーマ

カテゴリー

久しぶりのこのシリーズ、ハードウェア関連はネタが無くなってきたのでOS・プログラム言語などソフトウェア関連を書こうと準備していたのですが、そういえば入力装置について書いていないことを思い出したので数回にわたって取り上げてみます。

個人で初めてのコンピュータを自作するとしたらスイッチパネルしかないでしょう。

「初めてのコンピュータ」というのは「初めて作る」ではなく「初めて持つ」ものを作るという意味、つまり開発用のコンピュータも無い状況です。

トグルスイッチ(他のスイッチでも構いませんがすばやく簡単に操作できないと後悔するでしょう)がたくさん並んだパネルです。プロセッサを一時的に止めておき、このスイッチでバスに直接アクセスします。スイッチでアドレスとデータを1バイトずつメモリ(RAM)に書き込んでいくのです。

プロセッサの動作中は邪魔をしないように切り離しておきますが、ソフトウェアからスイッチの状態を読めるようにすることもできます。

これは使い勝手はとても悪いのですが、ソフトウェア無しで使えるという他にないメリットがあります。

MC68kボード復活作戦(番外編)

2019-03-24 21:07 — asano

テーマ

MC68kボード復活作戦のために当時の開発環境を引っ張り出しました。今回はそれについて書いてみたいと思います。

まずは使用したアセンブラです。

CP/M-68Kが動いてからは付属のアセンブラ・Cコンパイラを使用しましたが、それまではPC-8001mk2上でクロスアセンブラを使用していました。『I/O』1986年2月号掲載のクロスアセンブラです。

これはN BASIC上で動作するもので、ソースは次のようにBASICのエディタを流用して入力します。

10 "loop: bra loop

BASICの文法的には間違っているので「run」すれば当然エラーになりますが、文字列の形式になっているのでそのままメモリに格納されます。アセンブラはそれを読んでアセンブルするというわけです。

これはディスク無しで動作するものなのでアセンブラ本体・ソース・オブジェクト・シンボルテーブルなどすべてがRAM上になければなりません。ソースとオブジェクトはオーバラップさせることもできますが、一度アセンブルするとソースが破壊されます。

MC68000系のメモリ事情(その3:MC68020以降)

2018-12-04 23:14 — asano

テーマ

カテゴリー

MC68020で外部バスがデータ・アドレスともに32ビットとなってメモリは当初計画のフルスペックの4GBとなりました。とはいえ登場した頃はまだ4GBのメモリを必要とする応用など無かったのでアドレスデコードが面倒くさいだけと思った人も多いでしょう。

ここまできてもメモリ管理ユニット(MMU)は内蔵されていません。メモリ空間の拡張のためにもMMUを必要とした80286などと異なり、必要性がそれほど無かったからかもしれません。
それでも仮想記憶には必要なので外付けとして用意されました。一つはMC68000,MC68010用のMC68451を拡張したらしいMC68461ですが、残念ながら詳しい資料が見当たりません。もう一つはMC68851、こちらは一部のパソコンなどにオプションで搭載できましたからそれなりに知られていました。いずれも論理メモリ空間・物理メモリ空間はともに4GBです。

命令フェッチのみですが256バイトのキャッシュも内蔵されました。

MC68000系のメモリ事情(その2:MC68010)

2018-12-03 21:26 — asano

テーマ

カテゴリー

MC68010の前にMC68008について書いておきましょう。

Intelの8088に対抗して小規模向けに作られたのがMC68008です。データバスが8ビット、アドレスバスが20ビットに縮小されています。メモリ空間は1MBとなります。

アドレスは内部32ビットのうち必要な分を外部に引き出しているだけなのでメモリ空間のサイズが変わってもソフトウェアでの扱いは変わりません。

これで不足するなら素直にMC68000を使えということです。

それでは本題のMC68010を見ていきましょう。

ハードウェア的にはMC68000と互換でそのまま挿し換えもできます。当然バス幅にも変更はなく、メモリ空間も16MBのままです。ソフトウェア的にはさまざまな改良点がありますが、メモリに関するものには次のようなものがあります。

MC68000系のメモリ事情(その1:MC68000)

2018-12-02 20:17 — asano

テーマ

カテゴリー

MAA-1の改造のデバッグ状況は逐一実況してもなんなので大きな進展があったときに書くことにしますね。

今回はパーソナルなコンピュータのメモリ事情 (第8回: 80386以降)で書くと予告してまだ書いていなかったMC68000系のメモリ事情について取り上げてみようと思います。

以前書いたようにIntelは8086で64kBから1MBにメモリ空間を拡張するに際してはアドレスのレジスタ長を8ビット時代の16ビットのままセグメントによって拡張する道を選びました。単独で64kBを超えるメモリを必要とするプログラムが少ないという当時の事情を考慮すれば悪くない選択だったのでしょう。不幸は拡張を繰り返して使われ続けたことです。

一方でMotorolaは大胆にレジスタ長をデータもアドレスも32ビットにするという選択をしました。Intelが必要に応じて少しずつ拡張していくことになったのに対し、最初に考えうる最大限を計画しておいてそのサブセットを実装していくという道です。

PC-8001 テープからのオートスタート

2018-11-19 21:07 — asano
カテゴリー

テープ時代のメモの記事でオートスタートに触れたのでその仕組みを書いてみます。

PC-8001でバイナリ(いわゆるマシン語)のプログラムをテープから読んで実行するには普通次のようにします。

mon
*L
*GD55B

ここで「*」はプロンプトなので入力はしません。

mon」コマンドでマシン語モニタに入り、「L」でテープからロードし、「G」で実行します。「D55B」は実行開始アドレスです。

mon」「L」は不変なので憶えられますが、実行開始アドレスはプログラム毎に異なるので面倒です。そこで市販ソフトウェアを中心にこのオートスタートのテクニックが使われました。