2026-07-12

Palo Alto Tiny BASICとRST N

Palo Alto Tiny BASICは、様々なテクニックを駆使してプログラムサイズを小さくしていると言われています。そのテクニックの一つが「RST N」を多用している事です。プログラム先頭には「ZERO PAGE SUBROUTINES」として、次のように書かれています。

THE 8080 INSTRUCTION SET LETS YOU HAVE 8  ROUTINES IN LOW MEMORY THAT MAY BE CALLED BY RST N. N BEGIN 0 THOUGH 7. THIS IS A ONE BYTE INSTRUCTION AND HAS THE SAME POWER AS THE THREE BYTE INSTRUCTION CALL LLHH.

 

インテルの8080は、RST 0からRST 7が実行されると、0000番地、0008番地・・・と固定されたアドレスに制御が移ります。普通にサブルーチンコールをCALL foobarすれば3バイトになるところを、RST Nなら1バイトなので、インテルがこのような使いかたを想定しているわけではないと思いますが、メモリの節約になります。その代償として、0000番地付近をPalo Alto Tiny BASICの管理下におく必要があります。Palo Alto Tiny BASICが登場した頃は、メモリマップを制約するOSのようなものが無く、自由だったので、このようなアプローチも許されました。

 

しかしメモリマップを変更することができなくなります。Palo Alto Tiny BASICでは、Version 2.0というのはプログラムのインストラクションをインテル互換に変更しただけですのでRST多用になっていますが、Version 3.0ではRST多用と決別したようです。また東大版はPalo Alto Tiny BASICの流れをくむことになっていますが、以下のように説明されており、RSTを使わないようになっています。

(v) システムやバッファをそれぞれのキットに合わせて任意のアドレスから始まるように変更することが容易である。(これは、筆者の変更による。) 

Microsoft Flight Simulator 2002において、ジョイスティック応答をキーボードでどのように操作するのだろうか

長年放置していたMicrosoft Flight Simulator 2002を今さらながら取り組んでいます。マイクロソフト的にはジョイスティックで操作して欲しいのかもしれませんが、所有していないので、キーボードを使うしかありません。ジョイスティックの操作が、どのようにキーボード操作にマッピングされているのか、付属していた文書類には書かれていません。

 

ジョイスティックを前後に動かすことは、キーボードなら「8」キーや「2」キーであるとは書かれていますが、それだけです。マイクロソフトのフライトシミュレータは、かなり精密にシミュレートしているとは言われますが、そうだとしてもパイロット資格を取得する目的で作られているわけではないですし、結局はゲーム性を重視しているはずです。

 

ジョイスティックを所有していませんが、噂で聞くところによると、ジョイスティックを前後に倒しても、手を離すと自動的に中立に復元するそうです。それは、キーボード操作では、実現されているのでしょうか。例えば、ジョイスティックを手前に倒し、その後で手を離したとすると、ジョイスティックは中立に戻ります。これと同じ状況を再現するには、キーボード操作では、どのようにしたらよいのでしょうか。

 

ここで問題になるのが、相反する情報があることです。ひとつは、「キーボード操作においては、勝手に中立に戻る」から、「2」キーを押すだけでよく、「2」キーから手を離せば(ジョイスティックが勝手に中立に戻るように)何もしなくてよいという情報です。もうひとつは「キーボード操作においては、ジョイスティックとは異なり、押したキーの方向に固定された状態になる」から、ジョイスティックを傾け続ける状態に相当するので、「5」キーを押さないと中立に戻らないという情報です。

 

さらによくわからないのは、ジョイスティックを少し傾けた場合と、最大限に傾けた場合とは、キーボード操作では、どのように変わってくるのかです。例えば「2」キーを押し続けたとすれば、それはジョイスティックを最大限に傾けた場合と等価だろうとは想像できます。もしジョイスティックを1.5cmくらい手前に引いたのと等価にしたいなら、キーボードをどのように操作すれば良いのでしょうか。「2」キーを0.5秒くらい押した後で離すだけで良いのでしょうか。それとも「2」キーを0.05秒くらい押して離すという行為を数回繰り返せば良いのでしょうか。

 

「難しく考えずに、やってみてうまくいけば、それでいいんだよ」という意見もあるでしょう。結局はゲームなので、それで良いのだと思います。キーボード操作に失敗すれば、失速して墜落するだけです。ゲームですから墜落しても生死につながりません。結局は「慣れるしかない」が答えなのかもしれません。

Googleマップのタイムラインで「乗馬」が何故必要なんだろう

Androidのスマホを利用しています。Googleマップのタイムラインを有効にしているので、移動の軌跡が記録されます。このアプリには、相当不満はありますが、目安になればよいという程度の認識なので、利用を続けています。最も大きな不満は、精度が酷すぎることで、Google謹製のアプリとは思えないほど悪いです。そこは我慢するとして、謎な仕様もあります。

 

賢いというべきなのか、ある場所から別の場所に移動すると、勝手に移動手段を認識して「徒歩」とか「電車」などとラベルをつけてくれます。もし移動手段を認識できないと「移動」となりますし、認識された移動手段が間違っている場合もありますので、修正が必要になります。修正すると言っても、予め用意されている選択肢から選ぶしかありません。「自転車」とか「バス」という選択肢は理解できます。「スケートボード」という選択肢もありますが、これを予め選択肢に用意しておく必要があるか疑問ですが、まあ良いとしましょう。しかし「水泳」とか「手こぎボート」とか、あろうことか「乗馬」などという選択肢も用意されているのですが、これは必要ですか。 

 

「乗馬」という選択肢を利用する人がいるかもしれませんが、何人いるんでしょうか。そういう選択肢を用意しておくくらいなら、もっと他に用意しておくべき選択肢があるのではないかと、しみじみと思います。 

2026-07-10

東大版PALO ALTO TINY BASICのバリエーション

Palo Alto Tiny BASICは、DDJ Vol.1 No.5 (May, 1976)で発表されました。これに派生するのが東大版PALO ALTO TINY BASICです。しかしDDJに掲載されているソースプログラムを基にしているのではなく、オブジェクトを独自に逆アセンブルし、改良を加えたとのことです。

 

東大版が掲載されているのは、『マイクロコンピュータのプログラミング』(共立出版、昭和53年)と、「2K BASIC」(ASCII 1977年8月号初出、エンサイクロペディア・アスキー Vol.1再録) です。これらは、同じものなのでしょうか。全体を確認するのは大変ですが、先頭を見ただけでも違いがありました。

 

『マイクロコンピュータのプログラミング』に掲載されている方は、次のようになっています。

;

;

;  PALO ALTO TINY BASIC

;

;

; MEMORY MAP

ITOP EQU 0000H

ISIZE EQU 0800H

LTOP EQU 1000H

VTOP EQU 1300H

LBUF EQU VTOP+0037H

LBUFSZ EQU 80

MSTK EQU LBUF+LBFSZ

(以下略) 

一方ASCII掲載の方は、次のようになっています。

;

;

; PALO ALTO TINY BASIC

;

;

; FOR SDK-80 VERSION (1977/03/23,ONO)

;

STACK EQU 1400H

VTOP EQU 1300H

LBUF EQU 1337H

MSTK EQU 13A7H

(以下略) 

 

目につくのは、ASCII版には「FOR SDK-80 VERSION (1977/03/23,ONO)」があり、『マイクロコンピュータのプログラミング』版には無いことです。推測となりますが、ASCII版にある表記を、『マイクロコンピュータのプログラミング』版で削除したというのは考えにくいと思われます。『マイクロコンピュータのプログラミング』の出版が昭和53年(=1978年)ですが、原稿を書いていた時期は、その前でしょう。最初はリリース日付を入れていなかったものの、どこかのタイミングで入れるようになり、それがASCII掲載版になったのではないかと想像します。

 

上述した箇所だけではなく、プログラム本体を見ても、『マイクロコンピュータのプログラミング』版とASCII版は、違いがあります。東大版が最終的にどうなったのかは不明ですが、何かしら改良を加え続けていたのだろうと思います。

 

そもそも東大版は、オリジナルのPalo Alto Tiny BASICのオブジェクトを逆アセンブルしているということです。最初の段階では、DDJに発表されたものと同一だったはずです。DDJに掲載されているアセンブラソースと比較すれば、どの辺りを変更しているかが分かるのではないかと思います。

 

2026-07-08

Palo Alto Tiny BASICのバリエーション

まだマイコンと呼ばれていた時代に様々なTiny BASICが存在しました。COMPUTOPIAの1977年10月号の「"Tiny BASIC"のすすめ(2)」という記事の中には「表3 各種Tiny BASICの言語仕様・性能比較表(東京大学理学部 小野芳彦氏、同学石田晴久助教授の調査による)」という一覧表があります。

 

これらのTiny BASICの中で人気があったのが何だったのか不明ですが、個人的にはPalo Alto Tiny BASICに最も馴染みがあります。今さらTiny BASICを必要とする時代ではありませんが、内部構造を学ぶのは、技術的な興味があります。基礎的調査として、Palo Alto Tiny BASICのバリエーションを調べてみました。

 

  • Palo Alto Tiny BASIC VERSION 1.0 (Dr. Dobb's Journal, Vol. 1, No. 5, May. 1976)
  • Errata/additions to Palo Alto Tiny BASIC (Dr. Dobb's Journal, Vol. 1, No. 6, June/July, 1976)
  • TINY BASIC FOR INTEL 8080 VERSION 2.0 BY LI-CHEN WANG, MODIFIED AND TRANSLATED TO INTEL MENMONICS BY ROGER RAUSKLOB 10 OCTOBER 1976 (INTERFACE AGE, Dec. 1976)
  • Palo Alto Tiny BASIC Version Three (PCC'S REFERENCE Book of PERSONAL and HOME COMPUTING, Jul. 1977)
  • PALO ALTO TINY BASIC FOR SDK-80 VERSION (1977/03/23, ONO) (エンサイクロペディア・アスキー Vol. 1)
  • PALO ALTO TINY BASIC FOR TK-80用バージョン (1977/03/23, ONO) (エンサイクロペディア・アスキー Vol. 1)
  • PALO ALTO TINY BASIC (『マイクロコンピュータのプログラミング』石田晴久編)

 

エンサイクロペディア・アスキーなどに掲載されているのは「東大版」と呼ばれており、Palo Alto Tiny BASICのバリエーションです。ただし、記事にも書かれていますが、DDJを参照して変更を加えたのではなく、「オブジェクトを独自に逆アセンブルし、変更を加えた」ものとのことです。

 

インターネットが存在しない時代ですから、発表媒体は雑誌などに限られると思います。想像となりますが、Palo Alto Tiny BASICを個人的に修正したり拡張したりした事例は、少なくないと思います。さらに、オリジナルはi8080版ですが、x86など他のCPUに移植したものも存在するのではないかと思います。技術的な関心として、取り組んでみたいと考えています。

2026-07-07

「マイクロPlan」というプログラミング言語

共立出版から1978年に出版された『マイクロコンピュータのプログラミング』(石田晴久編)という書籍が手元にあります。昭和57年6月12日付のレシートが挟んでありました。この中に「マイクロPlanのプロセッサ」(戸村哲)という記事があり、以下のように書かれています。

マイクロPlanはその名前のとおり、ミニコン用のミニ言語であるPlan系のマイクロ言語である。

 

「皆さんもよくご存じのPlan系言語」という書き方ですが、ミニコン用のミニ言語である「Plan」というのが全くわかりません。例示として掲載されている「図2 8-Queenのプログラム」を見ると、Pascal風だと感じました。しかし「Pascal系」ではなくて「Plan系」だというのですから、Pascalの流れをくんでいないのでしょう。

 

数年前であれば「Google検索」をしたところですが、今は「Geminiとの対話」の時代です。Geminiに問いかけてみましたが、全く知らないと言われてしまいました。ハルシネーションで適当な話をでっちあげることもなく、完全にギブアップしています。

 

先ほどの記事の参考文献には「武市正人:ミニ言語のミニ・コンパイラ、bit、1974年8月号~12月号」とあります。bitが廃刊になって久しいですが、図書館で閲覧できるところもあるでしょう。機会をみつけて、読んでみようと思います。 

2026-07-04

白いウィンドウ

ネットで「Windows 10/11で起動時に白いウィンドウが出る不具合、原因はChromeかもしれない」という記事を目にしました。この記事と同じような「白いウィンドウ」が最近出るようになったので、これは何だろうかと思っていたところです。

 

ただし記事では「起動直後」に表示されるとありますが、私の場合「画面ロック」を解除すると表示されます。

 

このような現象が現れているのは自分だけなのだろうか、解決方法はないだろうかと、Googleで検索してみました。しかし適切なキーワードが思いつかず、困っていたところです。「白いウィンドウ」というキーワードだと、全く関係ない記事がヒットしてしまうので、この現象をいったい何と表現するのだろうと悩んでいました。

 

現象は確認されているようなので、そのうち修正されるのを期待しています。