思い出・昔話

パーソナルなコンピュータの入力装置事情 (第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」は不変なので憶えられますが、実行開始アドレスはプログラム毎に異なるので面倒です。そこで市販ソフトウェアを中心にこのオートスタートのテクニックが使われました。

専用基板と万能基板(後編)

2018-11-19 17:01 — asano
カテゴリー

前回はスルーホールメッキの記事を読んだところまで書きました。

その後、大学に入ってから何人か趣味でマイコン回路を作っている方にも会いましたが、皆さん万能基板派でしたね。

大学の研究室でもあまり基板を起こす話は少なかったように思います。

就職後は私はソフトウェアがメインでしたが、何回か基板を作る機会に恵まれました。殆どは検討時に使用する治具基板でしたが、回路図の作成まで行なってパターン設計以降は外注というパターンです。部品のライブラリ作成も専門に行なう部署がありましたので、回路さえ書けば基板のことはあまり知らなくても何とかなります。その代わり費用は結構かかっていました。

実は勤め人時代に一度だけ仕事の回路を万能基板で作ったことがあります。

私の担当のところでは新規デバイスがいくつもあったのですが、他は大半が流用設計という状況でした。一種類の基板だけ先行で作るわけにもいかず、事前に検討したかったので手配線で作ったのです。手配線する人などほとんどいない状況でソフトウェア担当と思われていた私が作っていたのですから、通る人には不思議がられました。でも他の部分に大きく遅れることなく動かせたので役には立ちました。