2026-07-27

「還暦間際のオッサンが8Bit時代に戻って不完全燃焼をやり直す話」とフォレストガンプ

還暦間際のオッサンが8Bit時代に戻って不完全燃焼をやり直す話」という小説がネットで連載されているのを偶然知りました。小説なので、当時の時代の状況を正確に反映しているわけではなく、天才的な(?)主人公が、周囲の人間を巻き込み(翻弄し)ながら、テクニカルな成果を次々にあげていくという内容です。とても楽しく読んでいます。

 

Z80が全盛だった頃からAT互換機が出現する時期のパソコンに、次々の(当時としては)新機能を実装する主人公に周囲の人間が驚き呆れるのです。ふと思ったのですが、これはトム・ハンクス主演の映画「フォレストガンプ」に似ているのではないでしょうか。

 

「フォレストガンプ」は、第二次大戦後におけるアメリカの歴史的な出来事(例えば公民権運動とかベトナム戦争)に、主人公のフォレストガンプが常に登場するストーリ仕立てになっています。フォレストガンプが歴史的な出来事に一回くらい遭遇するだけならまだしも、いつでもどこでも、常に顔を出すのは、娯楽映画だからこそ許される展開です。

 

コンピュータ技術に爆走する少年と、米国史に立ち会うフォレストガンプは、話の展開が似ていると思うのです。 

紙テープとクリップボード

DDJで発表されたPalo Alto Tiny BASICは、ASR-33のようなテレタイプを入出力装置として想定しています。その派生である東大版Palo Alto Tiny BASICをsimhのAltair 8800シミュレータで動作するようになりました。さて、Tiny BASICが一世を風靡した頃には「Hello World」というプログラムを書いてみるという習慣はありませんでした。テスト的に簡単なプログラムを入力し、実行できるようにはなりましたが、Palo Alto Tiny BASICには、saveやloadというコマンドはありません。しかし、入力したプログラムを保存できないのは、困ります。さらに、過去に作成したプログラムを読み込めないのは、もっと困ります。

 

ここで当時の状況を思い起こすと、ASR-33のようなテレタイプには、紙テープのリーダーやパンチャーがついていたという事実です。ASR-33の操作方法は分かりませんが、あたかもキーボードから入力しているかのように紙テープを入力装置としたり、あたかも印字するかのように紙テープを出力したりすることが出来たようです。つまりPalo Alto Tiny BASICから見ると、入力がキーボードなのか紙テープなのか区別できませんし、出力がプリンタなのか紙テープなのか区別できません。こういう機構があれば、Palo Alto Tiny BASICにsaveやloadコマンドがなくても、紙テープを記録メディアとして利用できることになります。

 

それでは、Altair 8800シミュレータでPalo Alto Tiny BASICの場合、「紙テープ」の代替は何でしょうか。いろいろな手法が考えられるかもしれませんが、「クリップボード」が使えそうです。あらかじめエディタか何かで、プログラムを編集しておき、その全てをクリップボードにコピーしておきます。次にAltair 8800シミュレータで動作しているPalo Alto Tiny BASICにペーストすれば、いかにもキーボードから入力したかのように、プログラムが一気に入力される(はず)です。つまり現代のクリップボードは、当時の紙テープを再現していると言えるでしょう。

 

Palo Alto Tiny BASICが流行した当時は、何故かStar Trekゲームも流行していました。Palo Alto Tiny BASICを開発したLi-Chen Wangは、Tiny Trekも発表しています。Tinyなので130行ほどしかありませんが、ゲームを遊ぶたびに、いちいちキーボードから入力しなければならないのは嬉しくありません。当時は紙テープから一括入力したようですが、現代ならクリップボードの出番です。これで一括入力できるはずです。

PLANとSIMPLE

共立出版の『マイクロコンピュータのプログラミング』におさめられている「マイクロPLANのプロセッサ」という記事では、参考文献として雑誌「bit」の記事が参照されています。国立国会図書館のデジタル資料に雑誌「bit」があるので、確認してみました。

 

1974年8月号~12月号までは、PLAN言語の連載記事があります。ただしデジタル資料は館内限定公開と指定されているので、読みたければ国立国会図書館に行くしかありません。

  1. ミニ言語PLAN(8月号)
  2. 構文解析(9月号)
  3. 記号の処理・宣言と定義の処理(10月号)
  4. 目的プログラム(11月号)
  5. 目的プログラムの生成(12月号)

 

1977年1月号~1978年3月号までは、SIMPLE言語の連載記事があります。雑誌「bit」は館内限定公開のデジタル資料です。しかし、この連載を単行本化した『やさしいコンパイラの作り方』(中西正和・大野義夫、共立出版、1980年)は、デジタル資料になっており、個人送信も可能として指定されているので、アカウントがあれば自宅でも読めます。 

2026-07-26

Firefox 153では「ユーザーのコンピューター上のローカルファイルへのアクセス」の無効がデフォルトになっている。

Firefoxを更新して153にしたら「 File Backups - For TiddlyWiki」が動かなくなりました。何が原因なのか分からずに焦りましたが、「PSA: If you’re using Timimi with Firefox 153+ (or an equivalent fork)」という情報がありました。これは、Timimiというプラグインの場合ですが、対処方法は同じでした。

 

Firefox 153では、プラグインの管理メニューに「ユーザーのコンピューター上のローカルファイルへのアクセス」が 追加され、デフォルトでは「無効」になっています。これによりプラグインがバックアップできなくなってしまったようです。

 

この設定を「有効」としたら、問題は解決しました。 

2026-07-22

東大版Palo Alto Tiny BASICのメモリマップ

共立出版の『マイクロコンピュータのプログラミング』に掲載されている「東大版Palo Alto Tiny BASIC」は、DDJに掲載されたオリジナルのPalo Alto Tiny BASICを拡張したものです。しかし記事に書かれているように、「Palo Alto版のオブジェクト・プログラムを、独自に逆アセンブル、変更を加えたもの」です。いろいろな変更が加えられていますが、メモリマップも違っているようです。

 

記事では「図3 メモリ・マップ」として開設されています。プログラム本体は、0000番地から始まるメモリに配置されていて、0786番地まで続くので約2Kバイトです。作業領域、BASICプログラム格納領域、スタックなどは、1000番地から1400番地までなので、たかだか1Kバイトです。

 

一方でDDJに掲載されているオリジナル Palo Alto Tiny BASICは、プログラム本体が、0000番地から074E番地までの約2Kバイトで、作業領域などが、0800番地から2000番地までの6Kバイトです。東大版に比べると、作業領域などに割り当てているサイズが大きく違います。

 

これらが発表された当時のハードウェア状況を考えれば、 メモリが1Kバイトしかないとしても、やむを得ないでしょう。しかし割り当てが少なすぎて、例えばStar Trekなどを動かすのは、おそらく無理でしょう。

 

SimHのAltair 8800シミュレータを使うなら、64Kバイトのフル実装するのも簡単なことです。そこまで大きく拡げないとしても、東大版Palo Alto Tiny BASICのソースプログラムで指定されている値を変更しておきたいと思います。

Firefox 153.0で「File Backup Utility For TiddlyWiki」が動作しない

TiddlyWikiをFirefoxで利用しています。2026年7月22日にFirefox 153.0がリリースされたのですが、アドオン「File Backup Utility For TiddlyWiki」が動かなくなりました。ブラウザがバージョンアップすることでアドオンが動かなくなるという事例があるようです。「File Backup Utility for TiddlyWiki」が今後動作しなくなるのか、対応版がリリースされるのか、現時点では情報がありません。

 

昔からFirefoxでTiddlyWikiを使ってきました。このアドオンも相当前から利用しています。ハノイの塔方式でバックアップしてくれるのも有難いですが、最も助かっているのは、TiddlyWikiでTiddlerの編集が終わると自動的に保存処理をしてくれるところです。

 

このアドオンを使い始めた頃は他に選択肢はありませんでした。しかし今は「timimi」もあります。状況によっては、アドオンを乗り換えるかもしれません。 

2026-07-19

Altair 8800対応「東大版Palo Alto Tiny BASIC」が動いた

共立出版の『マイクロコンピュータのプログラミング』に掲載されている「東大版Palo Alto Tiny BASIC」をSimHのAltair 8800シミュレータで動くように変更を加えてみました。共立本に掲載されているプログラムの実行環境が不明ですが、SDK-80だろうと思います。本文にはテレタイプと書かれていますが、その入出力はi8251を使っています。一方で、Altair 8800では、シリアルインターフェイスはMC6850が使われています。

 

Altair 8800に対応させるには、i8251を意識している箇所を、MC6850に対応させる必要があります。具体的には、次のようにします。

  1. 入出力データは、0FAHとなっているのを、011Hに変更します。 
  2. ポーリングのために参照するレジスタは、0FBHとなっているのを、010に変更します。
  3. i8251の「TxRDY」は、D0です。MC6850の「Transimit Data Register」は、D1です。このため、OMSKの定義を、001Hから002Hに変更します。
  4. i8251の「RxRDY」は、D1です。MC6850の「Receive Data Register」は、D0です。このため、IMSKの定義を、002Hから001Hに変更します。

 

定義を変更するだけで、とりあえず動いてくれました。

Altair 8800 simulator V3.9-0
sim> load KYORITSU-ALTAIR8800.rom
4118 Bytes loaded.
sim> run

OK
>10 INPUT A,B
>20 PRINT #3,'A+B=',A+B,' A-B=',A-B,' A*B=',A*B,' A/B=',A/B
>30 STOP
>RUN
A:10
B:2
A+B= 12 A-B=  8 A*B= 20 A/B=  5

OK
>