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

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

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

 

 

 


PiDP-11を使う その19 ブートストラップ・ローダの巻

2024-02-18 19:48:51 | コンピュータ

今回は、PDP-11のブートストラップについて解説します。そもそも、ブートストラップってなんでしょう。

これです。ブーツの履き口についているリボン状のぶつです。ウエスタンスタイルのブーツでは、こんなのもあります。

ブーツを履くとき、まず掴んで、履き口が動かないようにするものですね。

Wikipediaによれば、

「自分でブートストラップを引っ張って自分を引っ張り上げる(pull oneself up by one's bootstraps)」という表現は19世紀に、不可能な動作の喩えとして存在した。」とのことでした。これが可能ならば、キリスト様のように、水の上も歩けますね。

「コンピュータ、ソフトなければ、ただの箱」という言葉がありますが、コンピュータにソフトウエア(プログラム)ロードするには、悩ましい問題があります。電源を入れて、最初のプログラムをどのようにロードするかという問題です。現在のPCはROMに入っているBIOSの一部のプログラムをまず読み込み、それがハードディスクやSSDの特定のセクターのブートプログラムを読み込み、ブートプログラムがオペレーティング・システムを読み込んでいます。

PDP-11が作られた1970年代には、ROMのICは、まだ存在しませんでした。では、どうしていたかというと、手入力で、イニシャル・プログラム・ローダ(Initial Program Loader: IPL)という短いプログラムを入れて、IPLは、紙テープにかかれた、絶対ローダをメモリにロードしました。絶対ローダは、色々なソフトウエアの紙テープを指定された番地にロードしていました。紙テープ・システムといいます。IPLはこの頃まで、当たり前に使われていて、いろいろな伝説が生まれました。

伝説の1つを、ご紹介しましょう。1958年3月26日に東京大学で、パラメトロン計算機PC-1が産声を上げました。パラメトロンとは、聞き慣れない言葉だとは思いますが、Balconの高校の大先輩の後藤英一先生が、開発した素子で、多数決原理を採用した日本独特の論理回路でした。現在では、主流から外れて、忘れ去られた形になってしまいましたが、最近では、超電導量子パラメトロンとして、量子コンピュータの量子状態を検出する素子として復活するかもしれません。そのPC1のIPLは初期のハッカーの一人の和田英一さんが作りました。わずか、68ステップで、現在のアセンブラの機能を併せ持つローダとして、今でも語りぐさになっています。PC1は512語のメインメモリで、大学の行列の計算に使われていたようで、メモリの逼迫のなか、小さなIPLが必要とされていたようです。

DEC純正のPDP-11のIPLは16語でしたが、ただ、絶対ローダの紙テープを読むだけで、PC-1のIPLのような機能は持っていないのでPC1のIPLと単純には比較できません。DECでは、IPLのことをブートストラップ・ローダと呼んでいました。これが、コンピュータを起動する意味でのブートの語源になったんじゃないかとBalconは思っています。

上がDECのブートストラップです。ブートストラップは、メモリの最上位に書き込まれましたので、メモリの構成によって、格納番地の最上位3桁が異なります。simhのPDP-11エミュレータは4メガバイト実装済みなので、157744番地から格納します。Balconの先輩たちは、IPLを小さな紙に書いて、コンソールに貼って、コンソールパネルから、スイッチをバチバチやって入れていたようです。Balconの頃には、PDP-11は、IPLのROMが実装されていたので、電源スイッチを入れると、OSが読み込まれるようになっていました。したがって、Balconは、コンソール・スイッチを使うことはありませんでしたが、CPUを起動する前に、指定の電源投入順序に従って、磁気ディスクや、ターミナルなどの電源を入れて置く必要がありました。

PiDP-11では、先輩たちのようにコンソール・スイッチをバチバチして、入れることもできますが、simhでは、ブートストラップ・ローダをキーボードから入力します。1577776番地には、高速紙テープ・リーダのCSRアドレスの 177550を書込みます。その後、高速紙テープリーダに絶対ローダの入った紙テープをセットして、157744番地からブートストラップ・ローダをスタートする手順になります。モニタから見るとこんな感じ。

DECの絶対ローダは、以下のURLからダウンロード可能です。

 

http://www.vaxhaven.com/Paper_Tape_Archive

http://iamvirtual.ca/PDP-11/PTS-11/PTS-11.htm

https://github.com/tokkagun/PDP-11/blob/main/DEC-11-L2PC-PO.ptap

 

次回は、ブートストラップ・ローダと絶対ローダを使って、DEC謹製BASCIインタプリタをメモリにロードしてみます。

(一世風靡したBASICの巻に続く)


PiDP-11を使う その18 紙テープを読むの巻

2024-02-16 09:58:25 | コンピュータ

紙テープを読むと言っても、アニメに出てくる鼻の大きな博士のことではありません。今回は、高速紙テープ・リーダ/パンチ装置の読み込みプログラムについて解説いたします。コントロール装置であるPC11のマニュアルに(http://www.bitsavers.org/pdf/dec/unibus/PC11_Reader-Punch_Manual.pdf)よれば、読み取りプログラムは以下の通りです。ー

ほぼ流れは、前回ご紹介したパンチのときと同じですが、リーダを起動する信号を送るINC命令を始めに発行してから、CSRを読みに行くところが異なっています。

2では、紙テープを読むプログラムを書いてみましょう。紙テープの1フレームを読み込んで、8進数で、書き出して、対応するアスキーコードを打った後、改行するプログラムです。前回と同様ローダ語で、書いてみます。

2000 番地から、プログラムを収納していきます。

2000:
$10:        012706,2000;                             # MOV #2000,SP
$20:       004737,$1000;                           # JSR PC,$1000:READ A FRAME
                005701;                                          # TST R1
                0010/$50;                                      # IF ERROR STOP
                004737,$2000;                           # JSR PC,@#TYPE A VALUE
                120027,040;                                 # CMPB R0,#' '
                1034/$30;                                     # BLO $30
                010001;                                          # MOV R0,R1 
                112700,040;                                 # MOVB #' ,R0
                004737,$500;                             # JSR PC,@#TYPE A LETTER
                112700,074;                                 # MOVB #'<,R0
                004737,$500;                             # JSR PC,@#TYPE A LETTER
                010100;                                          # MOV R1,R0
                004737,$500;                             # JSR  PC,@#TYPE A LETTER
                112700,076;                                  # MOVB #'>,R0
                004737,$500;                              # JSR PC,@#TYPE A LETTER
$30:      004737,$600;                              # JSR PC,@#CR-LF
                0004/$20;                                     # BR $20
                $50: 000000;  # HALT
#TYPE A LETTER
$500:    032737,200,177564;                 # BIT #200,@#177564
                0014/$500;                                  #   BEQ $500
                110037,177566;                          #   MOVB R0,@#177566
                000207;                                         #   RTS PC
#CR-LF
$600:     112700,015;                                  # MOVB #15,R0
                004737,$500;                             # JSR $500
                112700,012;                                  # MOV #15,R0
                004737,$500;                             # JSR $500
                000207;                                         # RTS PC

#READ A FRAME
$1000:   005237,177550;                        # INC @#177550
$1010:    032737,100200,177550;       # BIT #100200,@#177550
                 0014/$1010;                               # BEQ  $1010
                 1004/$1020;                              # BMI $1020: ERROR
                 113700,177552;                        # MOVB @#177552,R0
                 012701,0;                                    # MOV #0,R1
                 000207;                                      # RTS PC
$1020:   012701,1;                                     # MOV #1,R1: ERROR HANDLING
                 000207;                                      # RTS PC
#TYPE A VALUE
$2000:    010046;                                    # MOV R0,-(SP):PUSH R0
                  012702,3;                                 # MOV #3,R2  
$2010:     010001;                                    # MOV R0,R1
                  042701,177770;                     # BIC #177770,R1
                  010146;                                     # MOV R1 -(SP):PUSH R1
                  006200;                                    # ASR R0
                  006200;                                    # ASR R0
                  006200;                                    # ASR R0
                  005302;                                    # DEC R2
                  0010/$2010;                            # BNE $2010
                  012702,3;                                 # MOV #3,R2
$2020:    012600;`                                  # MOV (SP)+,R0 :POP R0
                  062700,60;                             # ADD #60,R0
                  004737,$500;                        # JSR PC,@#TYPE A LETTER
                  005302;                                   # DEC R2
                  0010/$2020;                           # BNE $2020
                  012600;                                    # mov (sp)+,R0
                  000207;                                    # RTS PC

gooブログはプログラムソースコードには対応していないようで、不揃いで申し訳ありません。

MAIN PROGRAM では、はじめにスタックポインタをセットして、サブルーチンを呼ぶ準備をします。$20:のところからループに入ります。1フレームを読み込むサブルーチン($1000)を呼びます。R0に読み込んだ1バイトのデータ、R1には、返り値が入ります。R1が0のときは、正常終了、1のときはエラーです。エラーはテープの終了のことがほとんどなので、$50のHALT命令に飛んで、プログラムを終了します。

あとメインルーチンは、$2000 のR0の下位1バイトをアスキー数字3文字でテレタイプに出力するサブルーチンを呼びます。

その後,R0の内容のコードが30(八進)以上で印字可能ならば、 <ASCII CODE>を印字して、復帰改行して、次の1フレームをよぶループをくりかえします。無限ループになりそうですが、かならず、テープが終了して、エラーになるので、このループは終了します。

つぎにサブルーチン群です。$500からは、テレタイプに1文字出力するサブルーチン、

$600からは、テレタイプを復帰、改行するサブルーチンですが、これらの説明は省略します。

$1000からは、高速リーダ/パンチから、1フレーム読み込むサブルーチンです。ほぼ、マニュアルのとおりの、コーディングですが、R0に読み込んだ値、R1にエラーの有無を入れて戻ります。正常終了はR1が0、エラー終了は R1が1になって、戻ります。

$2000からは、3桁の8進数で、R0の下位1バイトをテレタイプに打ち出すサブルーチンです。 下位から、3ビットづつ、1度スタックに積んでから、上位3ビットづつ順序を入れ替えて、八進60を加え、ASCIIの数字コードに変換して、テレタイプに打ち出しています。なお、R0の下位3ビットを一時的に保管するのにR1を、3桁を数えるカウンターにR2を使っています。また次の桁に進めるのに算術右シフトを3回使っています。(8で割る操作と同じ)ざっとこんなところです。

では、実際にM-LOADERを起動してプログラムを実行してみましょう。プログラムはM-LOADERを起動すると、一旦停止して、紙テープを装置に装填するするように行ってきます。紙テープ・リーダに、プログラムを打ち込んだ、readTape-mld.ptapという紙テープのイメージファイルをatt ptr readTape-mld.ptapというコマンドで装填します。コンティニューコマンドのcを入力すると、プログラムが読み込まれて、名前表が出力されます。名前表には、名前と対応する番地が出力されます。

 

sim> c

PAPER TAPE LOADED.
PASS 1
PASS 2

FIRST LOADED ADDRESS: 2000
LAST LOADED ADDRESS : 2250
********** NAME TABLE **************
$10:2000
$20:2004
$30:2066
$50:2074
$500:2076
$600:2114
$1000:2136
$1010:2142
$1020:2166
$2000:2174
$2010:2202
$2020:2230
******** END OF NAME TABLE *********

NORMAL TERMINATION


HALT instruction, PC: 150370 (JSR R0,@#153716)

エラーなければ、NORMAL TERMINATION と出力されて、準備完了です。テスト用に準備したtest.ptapというテープ・イメージ・ファイルをセットしてします。

プログラムの開始番地は、$10の2000番地なのでgo 2000でプログラムを実行します。

テープを読み込み8進数での内容とASCIIコード出力して停止しました。

次回は、イニシャル・プログラム・ローダ(ブートストラップ)と絶対ローダの解説をいたします。

今回のソースコードも以下のリンクからご覧いただけます。

https://github.com/tokkagun/PDP-11/blob/main/readTape-mld.ptap

(ブートストラップの巻に続く)


PiDP-11を使う その17 紙テープに穴を開けるの巻

2024-02-15 16:20:56 | コンピュータ

では実際に、紙テープパンチ装置を使うプログラムを解説します。紙テープ・リーダ/パンチ装置(PC05)は、やはり、UNIBUSに接続されていて、メモリと同じようにアクセスします。PC05とUNIBUSを繋ぐにはPC11というコントロール装置が必要で、ソフトウェア的にはPC11を操作して、テープの読み書きをします。チューリング・マシンみたいでカッコいいですね。

まず、パンチ装置の方ですが、CSRの番地は、177554番地、バッファは177556番地です。DECのマニュアル(http://www.bitsavers.org/pdf/dec/unibus/PC11_Reader-Punch_Manual.pdf)から引用します。

 

制御用レジスタ(CSR)の番地は177554番地、バッファは、177556番地です。テレタイプのCSRのように、7ビット目にREADYビットがあり、更に、15ビット目にエラービットが追加されています。エラービットは、テープがリーダ/パンチ装置に装填されていないとか、途中で、テープが引っかかって、切れてしまったとかのときに1にセットされます。

マニュアルには、テープに穴を開けるプログラムの1例が記載されています。簡単に説明すると、打ち出すデータは、R0レジスタに入っていると仮定します。

BIT #100200, @#177554で、CSRの状態をチェックします。

つぎのBEQで READY,でもエラーでもなければ、チェックを続けます。

エラービットが経てば、負の数となるので、BMIでエーラハンドリングへ分岐します。

エラーが、なければ、バッファの177556番地に、R0のデータを、バッファ(177556番地)に移します。

実際に、キーボードから、打ったASCIIコードを紙テープに打ち出して見ます。プログラムはエスケープキーを打つと終了します。プログラムはこんな感じになります。写真の解像度が低くて申し訳ありません。リンクを長押して、別のタブにでも出すと、鮮明なソースコードがご覧いただけます。

https://github.com/tokkagun/PDP-11/blob/main/typePunch-mld.ptap

 

このあたりになると、プログラムが長くなって、読んだり、入力するのが大変になってきますので、ローダ語なるプログラム言語を導入します。ローダ語といっても、基本的には機械語なのですが、面倒な番地計算だけ、機械に任せるという感じです。

 

ローダ語は、木村泉先生追悼文集 別冊3の一番最後に紹介されています。作者は、当時、木村研究室に在籍していた久野靖さん(筑波大学名誉教授、現、電通大教授)と思われますが、この冊子には、2名の久野さんが、登場するので、特定できませんでした。

次にローダ語の仕様を述べます。

数値は16ビット(1語)を8進数で表します。

$記号の後に数値を書くと番地を指定する名前になります。

名前を定義する場合は、名前のあとに:(コロン)を置きます。こうすると、名前の直後の機械語の番地を名前で、参照出来るようになります。

$記号なしの数字の後の:(コロン)は、メモリの番地指定となり、その番地から、機械語は、メモリに格納されます。省略すると、無難な60000番地から、収納されます。

語と語の区切りは、、(カンマ)か、;(セミコロン)で区切ります。 

#記号以後はコメントとして、改行まで、無視されます。

分岐機械語命令の直後に/と名前を書くとその名前に対するオフセットを計算して、分岐命令を完成させます。

基本ルールはこれだけです。

では このプログラムのメインルーチンをローダ語で書いてみます。

 

 

1000:                                 #プログラムを1000番地から、格納します。

#    MAIN PROGRAM

$10:   012706, 1000;    #スタックポインターを設定します。1000をセットします。

$20:   004737,$500    #JSR PC でキーボードから、入力するサブルーチン($500)へ飛びます。

            120027,033;        #CMPB R0、#033 で入力した文字がエスケープか調べます。

            0014/$30;           #BEQ でエスケープなら$30に分岐します。

           004737,$510;      #JSR PCで、 TTYにR0に読み込んだ文字を書き出します。($510)

           004737,$600;     #JSR PCで、 R0を1文字パンチします。($600)

           0004/$20;             #$20へ無条件分岐します。(ループ)

$30:  000000;                #プログラムを停止します。

テレタイプの入出力のサプルーチン、$500(1文字入力)と$510(1文字出力)の内容は以前に解説しているので、今回は$600の紙テープパンチのサブルーチンを解説します。

 

$600:032737,100200,177554;    #パンチ装置のCSRをチェック

                 0014/$600;                              #BEQ $600 READYかERRORがセットされるまでループ

                  1004/$700;                             #BMI $700 ERRORならば、 $700 エラー・ハンドリングへ飛びます。

                  110037,177556                       #MOVB R0,@#177556 パンチ装置のバッファへ出力

                  207;                                             #RTS PC で戻る。

$700のエラー・ハンドリングは テレタイプにERRと出力して停止します。

今回のソースコード(typePunch-mld.ptap)は以下の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

 

(紙テープを読むの巻へつづく)


PiDP-11を使う その16 紙テープと高速紙テープ・リーダ/パンチ装置の巻

2024-02-09 14:55:31 | コンピュータ

今の若い人たちは、黒電話を見たことがない人が多いと思います。ましてや、中央のダイヤルを回して、電話番号を入力することを知らない人もいるかもしれません。黒電話の時代には、鑽孔(紙)テープというもので、コンピュータとデータをやり取りしていました。写真の左が5単位の電信用、右側がコンピュータで使われた8単位のテープです。

鑽孔テープとはどんなものかというと、上質な紙でできたテープで、厚さは0.1mm(0.00394 インチ)で、結構、腰がありました。テープの幅は25.4mm(1インチ)である。穴と穴の間隔はどちらの方向でも2.54mm(0.1インチ)です。データ用の穴の直径は1.83mm(0.072インチ)、テープを確実に送るように、フィード用の穴の直径は1.17mm(0.046インチ)穴が未使用のテープでも空いていました。このテープに紙テープ・リーダ/パンチという装置で穴を開けて、データを記録したり、穴の位置から、データを読み取ったりしていました。

テープのフォーマットは上の図のようになっています。テープは、図では下から上に流れていきます。テープの裏表と走行方向がわかるように表側に矢印が、未使用テープに印刷されているものもありました。リーダ/パンチには小さな歯車があってフィード孔が歯と噛み合ってテープを送るようになっていました。テープの作成には、テレタイプに付属している装置も使えましたが、普通は、高速テープ読み取り/鑽孔装置というものを使っていました。テレタイプについている装置は読み取り速度が50バイト/分に対し、高速読み取り装置は300バイト/分と6倍も早かったのです!8kバイトのフォートラン・コンパイラを読み込むのに20分以上かかったと思います。装置にテープを仕掛けて、リードボタンを押してから、コーヒーを飲みに行って、帰ってくるとまだ読み込みが終わっていないという長閑な時代でした。 balconは、データゼネラル社製NOVA  というマシンで、紙テープの時代を半年ぐらい経験しましたが、すぐにDEC社製PDPー11のRT-11 オペレーティング・システムでハードディスクの時代に突入したので、先輩たちのように、紙テープを肉眼で読めるようにはなりませんでした。

これが、DEC社製の High speed Paper Tape Reader/Punch    (型番PC05)です。中央に読み取りヘッドがあり左から右に紙テープが流れていきます。

写真のはカバーを開けた読み取り部で、テープの穴を光学的に読み取っていました。

simHは、高速紙テープリーダ/パンチ装置をサポートしています。勿論、PiDP-11もサポートしています。紙テープをリーダにセットして読み取りの準備をするコマンドは、コントロールeでsimHに割り込みを掛けてsim>のプロンプトの後に、

attach ptr ********

と入力します。 ptrは 高速紙テープリーダのデバイス名で、******* は読み取りを希望する紙テープのイメージが入ったファイル名です。例えば、data.ptap というファイルに紙テープのイメージが入っている場合は、

attach ptr data.ptap

を入力します。 紙テープをセットして、続行する場合は、continueコマンドで、続行できます。紙テープを、リーダから取り外すには、simhにコントロールeで割り込みをかけて、プロンプトに対して、

detach ptr 

と入力すると、リーダからテープが取り外せます。

パンチに新しい紙テープをセットするには、

attach ptp *******

と入力します。********はファイル名ですが、存在しないファイルを指定すると、自動的にファイルを作成して、パンチにセットできます。なお、ptpは、高速紙テープ・パンチのデバイス名です。パンチ装置から、紙テープを外すコマンドは、

detach ptp 

になります。

割り込みがかかっている時に、

rm ****** と入力すると、ファイルを消すこともできるので、失敗したテープイメージを削除するのも簡単です。

ゴミ箱がいっぱいになることもありません。仕損じた紙テープが駄菓子屋で売られて、子どもたちが遊んでいた時代もあったようですが。

次回は、紙テープにデータを鑽孔したり、読み取りをしたりしてみます。(高速紙テープリーダ/パンチ装置を使うの巻に続く)

 


PVバーナー

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