ZX81の回想禄

PR

×

プロフィール

ZX81

ZX81

カレンダー

コメント新着

コメントに書き込みはありません。

キーワードサーチ

▼キーワード検索

2024.01.24
XML
カテゴリ: ZX81 BASIC Manual
「Chapter23 - When the computer gets full」コンピューターがいっぱいになったときついて

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
第 23 章 - コンピューターがいっぱいになったとき

ZX81 の内部ストレージの量は限られており、いっぱいにするのは難しくありません。これが起こっていることを示す最も良い兆候は、通常、エラー レポート 4 ですが、他のことが起こる可能性もあり、その中にはかなり奇妙なものもあります。正確な動作は、メモリ拡張ボードが接続されているかどうかによって異なります。まず、メモリ拡張ボードが接続されていないと仮定します。持っている場合は、(最初にコンピューターの電源をオフにした後) 取り外してください。

 ディスプレイ ファイル、つまりテレビの画像を保存するコンピュータ内の領域は、これまでに表示されたものだけが空間を占めるように巧妙に設計されています。ディスプレイの 1 行は最大 32 文字と NEWLINE で構成されます。これは、何かを表示するとメモリ不足が発生する可能性があることを意味します。最も明らかな場所はリストの作成中です。

 以下を入力します。
NEW
DIM A(150)
  10 FOR N=1 TO 15
  20 PRINT N

 ここで最初の驚きが起こります。10 行目がリストから消えています。リストには現在の 20 行目が含まれるようにバインドされており、両方の行を入れる余地はありません。

 続いて入力してください
  30 NEXT N
 繰り返しますが、リストには 30 行目しかスペースがありません。

 更に入力してください
  40 REM X ( NEWLINE なし)

 30 行目が消え、40 行目が画面の一番上にジャンプするのがわかります。 ​プログラムには入力されていません。  ​ L ​ カーソルはまだ存在しており、移動することができます。 ここまで見てきたのは、画面の下半分に 24 行を与えて上半分よりも優先させる、不明瞭なメカニズムだけです。

 更に入力してください。
  XXXXXX (まだ NEWLINE はありません)

NEWLINE を入れずに別の X を入力すると、X の 1 つが消えます。 ここで NEWLINE を入力します。 すべてが消えますが、10 行目を削除して ↓ と ↑ を使用すると証明できるように、プログラムはまだコンピューター内に残っています。

 更に入力してください。
  10 FOR N=1 TO 15

​ もう一度 40 行目と同様に、画面の一番上に移動します。 しかし、 NEWLINE を押しても、何か問題があることを示すエラー メッセージや  ​ S ​​ マーカーは表示されませんが、 NEWLINE は入力されません。​ これは、行の構文をチェックする余地がないことによるもので、通常、(先頭の行番号を除く) 数字を含む行でのみ発生します。

 何とかスペースを空けるしか方法はありませんが、まず入らない10行目を削除します。
EDIT を押します。ラインを切断する余地がないため、画面は空白になります。

EDIT が機能しない場合は、カーソルが画面の上に移動するまでスペースをいくつか入力することでスペースを空けることができる場合があります。

NEWLINE を押すとリストの一部が表示されます。 ここで、以下をタイプする事によってい 40 行目(実際には必要のない行) を削除します。
 40 (と NEWLINE )

 ここでもう一度 10 行目を入力してみますが、それでも入力できません。 もう一度削りましょう。 まだどこかに余分なスペースを見つける必要があります。 10 行目が拒否された理由は、おそらく 2 つの数値 1 と 15 の構文をチェックする余地がなかったためであることに注意してください。したがって、プログラム内の 20 行目を削除すると、10 行目を入力する余地ができる可能性があります。その後、20 行目(数字が含まれていません) を再入力する余地がまだ残っています。

 以下を入力します。
  20
  10 FOR N=1 TO 15
  20 PRINT N
 プログラムは正しく入力されます。

 続いて次のように入力します。
GOTO 10

 そして再び、この行は構文をチェックできないため拒否されることがわかります。 それを取り消すよう次のように入力してください。
RUN

 今度は動作します。 (RUN は配列をクリアし、十分なスペースを確保します。)

 先ほどと同じように NEW から 30 行目までと下記を入力します。
  40 REM XXXXXXXXXXXX

 (X 12 個)、最終的には 40 RE のようになります。 NEWLINE を押すと、リストは 30 行目だけで構成され、実際には 40 行目は完全に失われています。 これは単に長すぎてプログラムに収まらなかったためです。
その行がプログラム内にすでに存在する行の編集結果である場合、その影響は少し悪くなります。プログラムからの古い行と、それを置き換える新しい行の両方が失われるからです。

 この問題の究極の治療法は、コンピューターの背面に収まる RAM パックを購入することです。

 Sinclair 16K RAM パックは、拡張されていない状態の 16 倍のメモリをコンピュータに提供します。 古い ZX80 3K RAM パックをお持ちの場合、ZX81 では動作しません。 RAM パックの動作はかなり異なります。表示ファイルは各行を 32 文字長にするためにスペースで埋められるからです ( SCROLL がこれを混乱させることに注意してください - 第 27 章を参照してください)。 これで、表示しながらリストを作成してもコンピューターのメモリが不足することはなくなり、短縮されたリストが表示されたり、飛び回ったりすることもなくなりました。 しかし、各行がくっついたり消えたりすることがわかります。やはり唯一の治療法は、空きスペースを見つけることです。

 メモリ拡張ボードをお持ちの場合は、それを装着し、次のコマンドを使用してこの章の入力を行ってください。
   DIM A(3069)

   DIM A(150) との置き換えです。

 要約すると、これは複雑な話であり、できる限り、ぎっしり詰まったコンピュータを手に入れるのは避けるべきだということです。 しかし、2 番目の教訓は、物事は見た目ほど悪くないことが多いということです。

1. リストが短くなり始めたり、項目が飛び交ったりし始めたら、スペースが狭くなってきています。

2. NEWLINE が行末に何の効果も持たないように見える場合は、おそらく数字を扱う余地がありません。 EDIT - NEWLINE または RUBOUT を使用して行を消去します。

3. NEWLINE は行を完全に失う可能性があります。

 こうした奇妙なことすべてに対して、治療法は同じです。 パニックにならずに、空きスペースを探してください。

 まず最初に考慮すべきことは CLEAR です。 いくつかの変数があり、どれを失っても構わない場合は、これを行うべきです。

 これに失敗した場合は、プログラム内で REM ステートメントなどの不要なステートメントを探し、それらの一部を削除します。

まとめ
 メモリがいっぱいになると、奇妙なことが起こる可能性があります。 しかし、通常は致命的ではありません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

​ZX81におけるメモリ不足について記述しています。

驚く事に、ZX81ではプログラムや変数によりメモリが少なくなった場合に、表示エリアを少なくしようとします。具体的にはリスト表示が短く、編集行が上に上がっていき、最後にはカーソル表示も削られます。

別に紹介している1Kプログラムは、きっとこの現象と闘った末、どこかで折り合いをつけて動作させていると思われます。1Kチェスや1Kインベーダーの完成までの道のりを考えると、ほとほと関心します。






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2024.01.24 12:53:17
コメント(0) | コメントを書く
[ZX81 BASIC Manual] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: