蒼天在眼 (そうてんまなこにあり)ーベランダで星を見る

昔、昔、天文少年でした。そして、今は、ベランダから、星を見ています。
いろいろの忘備録

PiDP-11を使う その20 一世風靡した BASICの巻

2024-02-22 09:14:24 | コンピュータ

記念すべき20回目になりました。今回は、Beginner's All-purpose Symbolic Instruction Code (BASIC)をに挑戦します。

BASICとは、1964年に(第1回目の東京オリンピックの年)アメリカのダートマス大学(アイビー・リーグのメンバーで名門大学)でケメニーとカーツが開発したプログラミング言語です。1975年にマイクロソフトのビル・ゲーツとポール・アレンがインテルの8080マイクロプロセッサ(ALTAIR 8800)用に移植してから、一世を風靡したのです。日本でも、多くのパーソナル・コンピュータに移植されて、1970年代後半から、1980年代前半の当時のBASICは、現在のOSの役割も担っていて、ファイルの管理、周辺機器の管理、プログラムのロード、保存なども、全てBASICの中からコマンドで操作していました。BASICのプログラムの中から、機械語プログラムを呼び出したり、メモリの特定番地も読み書きできたりと、今のOSではできないこともできたりしました。

このBASICをベアメタルでPiDP-11で使ってみます。前回、ブートストラップと絶対ローダを導入したので、これらを使って、紙テープベースのBASICをメモリにロードしてみます。 

ブートストラップですが、当時のPDP-11は、メインメモリにコア・メモリというものを使っていました。このメモリ素子は、電源を切っても内容を保持する特性があったので、PDP-11に電源を入れるたびに、ブートストラップを入力する必要はありませんでした。現代のコンピュータのメモリは、起動するたびに初期化されてしまうので、毎回、ブートストラップを入力しなければなりません。手入力で、ブートストラップを書き込むのは面倒なので、boot.iniというブートストラップの入力と、絶対ローダの読み込みをするスクリプトを作ったので、これを使うことにします。

DEC謹製のBASICのインタプリタは、DEC-11-AJPB-PB.ptap というテープに入っています。

simhをコントールEで一旦停止して、sim>というプロンプトに対して do boot.iniと打ち込むと、スクリプトが実行されます。 ブートストラップを入力して、絶対ローダを紙テープにセットして、15744番地から実行して、17476番地で一旦実行停止します。ここで、手動でBASICインタープリタの紙テープ DEC-11-AJPB-PB.ptap を読み取り装置にセットして、go 157500で絶対ローダを起動します。                             

sim> do boot.ini
Searching realcons controller "11/70" ...
Connecting to host localhost ...

HALT instruction, PC: 157500 (MOV PC,SP)
ABSOLUTE LOADER is READY.

attach paper tape to load.
then start at 157500.

BASICが起動すると

PDP-11BASIC VERSION 007A 

*Oと打ち出して、入力待ちになります。これはオプションの指定待ちです。オプションは次のようなものがあります。

(マニュアルは、こちらから、http://bitsavers.trailing-edge.com/pdf/dec/pdp11/lang/basic/basic_pts/DEC-11-AJPB-D_PDP-11_BASIC_Programming_Manual_Dec70.pdf

L: 紙テープの入力・出力にテレタイプの低速装置を使う。

D: 数学関数 SIN、 COS , ATAN、 SQRを使わない。

E: EXP、LOG を使わない。

H: BASICを開始する前に一旦停止する。このあと機械語の関数を紙テープからロードする。

4から28の数字: メモリの使用量を指定する。

*Oに続いて、リターンを打つと、デフォールトモードになります。この場合は、紙テープは、高速テープ装置を使う、数学関数はすべて利用可能、実装されている全メモリをBASICで使う、BASIC開始前の一旦停止はしないとなります。READYは、入力を促するプロンプトです。

 

PDP-11 BASIC, VERSION 007A
*O 
READY

ここで、コントールEで、simhを止めて、プログラムテープを取り付けると、以前保存したプログラムを読み込めます。 OLD コマンドで読み込みます。

Simulation stopped, PC: 000706 (TST (R2))
sim> att ptr sum-bas.ptap 
sim> c
OLD
READY

読み込んだプログラムを表示します。

LIST


5 PRINT
10 LET S = 0
15 PRINT"NUMBER";:INPUT Z
20 FOR I=1 TO Z
30 LET S = S + I
40 NEXT I
50 PRINT "SUM OF 1 TO";Z;"IS";S
70 END
READY

 

1から入力された数までの整数の和を求めるプログラムです。実行してみます。

READY
RUN 

NUMBER?10
SUM OF 1 TO 10 IS 55 

STOP AT LINE   70 
READY

1から10までの整数の和なので、55となります。

プログラムを紙テープに打ち出すには、新しい紙テープのイメージファイルを、紙テープパンチ装置にセットして、BASICの入力待ち状態でSAVEと打ちます。DELETEコマンドはメモリ内のプログラムすべて消去します。

今回使用したファイルは、以下のURLからダウンロード可能です。

 

 

GitHub - tokkagun/PDP-11: PDP-11 paper tape software

PDP-11 paper tape software. Contribute to tokkagun/PDP-11 development by creating an account on GitHub.

GitHub

 

 

 


PVバーナー

PVアクセスランキング にほんブログ村