表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
29/37

補足 MZ80のBASIC言語(SP5030)の変数


 ***


 補足 MZ80のBASIC言語(SP5030)の変数


 ***


 SP5030のワークエリアです。


 第二部を読んでいて、この番地は何だったかな? と思った時に参照して下さいな。


 ***

 **

 *


 * * * * * * * * * * * * * * * *

 * ワークエリア(4400h〜4805h)

 * * * * * * * * * * * * * * * *


 4400-444F : M3で入力文を格納(80+1バイト?)

 ____,____ : : LIST命令で使用(変換2からなので安全)

 ____,____ : : err-msg表示で文字列をセット

 ____,____ : : SPC()命令で4400hから最大255hバイトを20hで埋める?

 :(5byte)

 4455,4456 : M5でプログラムの格納先の番地(4806h〜)を設定

 4457,4458 : M3で文番号を設定。文番号が無い場合は 0000h; 13C9hで設定

 4459-4556 : M3で中間コード変換後の入力文を格納(254バイト?256バイト?)

 ____,____ : : LIST命令で使用(オーバーフローのチェックは?)

 ____,____ : :

 4557,4558 : [456Eh]+0からの2バイトを転送

 4559, : 0Dh

 455A,455B : [456Eh]+2からの2バイトを転送

 455C, : 0Dh

 455D,455E : [456Eh]+4からの2バイトを転送

 455F, : 0Dh

 :(1byte)

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 4561,4562 : スタックポインタ(D000h)

 4563,4564 : スタックポインタ(D000h); LIMITで更新; M2で参照

 4565,____ : プログラムの状態(00h=変更有, 01h=STOP,END, 02h=BREAK)

 ____,____ : : 13BChで設定, M2で参照, 初期化で00h; 81h がある?

 4566-456B : M2で47FDh〜4802hの6バイトを退避; CONT 命令で参照

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 456C-456F : 評価した値の情報; 1962hのルーチンでセット

 ____,____ : : 456C バイト数 

 ____,____ : : 456D ?

 ____,____ : : 456E ?

 ____,____ : : 456F 値の型(00h=数値, 01h=文字列)

 4570-4573 : 変数の情報; 1967hのルーチンでセット

 ____,____ : : 4570 変数の型(00h=数値変数, 01h=ストリング変数)

 ____,____ : : 4571 ?

 ____,____ : : 4572,4573 変数の値部分の番地  

# 別のケースあり。

# 456F,4570 : = BC ;

# 4571, : = A

# 4572,4573 : = DE ;

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 4574,____ : = 01h; READでセット

 4575,4576 : DATA文へのポインタ; READ, INPUT

 4577,____ : READデータ数; M5で00h, RUNで00h, RETSOREで00h

 4578,4579 : DATA文へのポインタ; READ

 457A,____ : RUNで00h, 2B98hのルートでsave1後に01h, 2BBBhのルートで[4592h]の値?

 ____,____ : CLOSEで00h

 457B,457C : LOADで462Ehをセット(80byteバッファの次); 2BBBhのルート

  : WOPENで45AEhをセット

 457D,____ : 00h(PRINT), 01h(PRINT/T), 80h(PRINT/P)

 457E,457F : LISTで 0000h

 4580,4581 : LISTで FFFFh; 文番号の範囲指定用

 :(12byte)

 458E,____ : LOADでファイル名の有無, 00h=無, 01h=有

 458F,4590 : LOADでファイル名の番地, 4816h等

 :(1byte)

 4592,____ : LOADで 00h=Verify, 01h=Load, 02h=ROPEN

 :(15byte)

 45A2,____ : = 30h, 0Dh or GETで得た値

 45A3,____ : = 0Dh

 45A4,____ : GETで得た値

 :(9byte)

 45AE-462D : ROPEN時、LOADで0080hバイトのデータを格納?

 462E,462F : M5で文番号を記憶。一時利用?

 4630,4631 : 文字領域に挿入する文字列の番地?、あるいは変数名?



 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 4632,4633 :0 初期 0000h; 番兵

 4634,4635 :1 初期 4808h; 関数定義(DEF FN)

 4636,4637 :2 初期 480Ah; 文字変数(2次元配列)

 4638,4639 :3 初期 480Ch; 文字変数(1次元配列)

 463A,463B :4 初期 480Eh; 文字変数

 463C,463D :5 初期 4810h; 数値変数(2次元配列)

 463E,463F :6 初期 4812h; 数値変数(1次元配列)

 4640,4641 :7 初期 4814h; 数値変数

 4642,4643 :8 初期 4816h; 文字ワーク

 4644,4645 :9 初期 4818h; 数値ワーク; メモリチェックで参照

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 4646,4647 : 初期 466Ah; DEF FNの保管先+1

 4648,4649 : 初期 4787h; FOR領域+1

 464A,464B : 初期 47F0h; GOSUB領域+1

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 464C-4651 : 5  : DEF_FN 6バイト5回分

 4652-4657 : 4  : 1+5バイト転送 @2455,@1799

 4658-465D : 3  :  変数名1バイト

 465E-4663 : 2  :  数値5バイト

 4664-4669 : 1

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 466A-467C :15  : FOR-NEXT 19バイト15回分

 467D-468F :14  : 4802hからLD-D-Rで19バイト転送

 4690-46A2 :13  : 19バイトの構成

 46A3-46B5 :12  :  49 4A ループ変数名

 46B6-46C8 :11  :  C2 00 00 00 80 変化幅

 46C9-46DB :10  :  C2 変化幅の負号

 46DC-46EE : 9  :  C2 00 00 00 C0 最終値

 46EF-4701 : 8  :  481Ch 000Ah 4819h 番地・文番号・命令文

 4702-4714 : 7

 4715-4727 : 6

 4728-473A : 5

 473B-474D : 4

 474E-4760 : 3

 4761-4773 : 2

 4774-4786 : 1

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 4787-478D :15   : GOSUB 7バイト15回分

 478E-4794 :14   : 4803hからLD-D-Rで7バイト転送

 4795-479B :13   : 番地・文番号・命令文・ネスト数1

 479C-47A2 :12

 47A3-47A9 :11

 47AA-47B0 :10

 47B1-47B7 : 9

 47B8-47BE : 8

 47BF-47C5 : 7

 47C6-47CC : 6

 47CD-47D3 : 5

 47D4-47DA : 4

 47DB-47E1 : 3

 47E2-47E8 : 2

 47E9-47EF : 1

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 47F0,47F1 : FOR変数名 2バイト

 47F2-47F6 : FOR変化幅 5バイト

 47F7,____ : FOR変化幅の符号 1バイト

 47F8-47FC : FOR最終値 5バイト 2+5+1+5=13

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 47FD,47FE : 次文への番地ポインタ; プログラム実行中, M3で0000h

 47FF,4800 : 文番号; プログラム実行中, M3で0000h

 4801,4802 : 命令文への番地ポインタ; 直接実行命令文なら4459h〜

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

(4803-4819 : 初期化で[00h]*23)

 4803,____ : FORネスト数1(GOSUBで00hにしてRETURNで元に戻す)

 4804,____ : FORネスト数2(FOR領域と連動した値)

 4805,____ : GOSUBネスト数


 * * * * * * * * * * * * * * * *

 * メモリ領域(4806h 〜 CFFFh)

 * * * * * * * * * * * * * * * *


 4806-???? : メモリ

  0 4806h 〜 : プログラム    ;(番地2・文番号2・命令文n+0Dh)xN +0000h

  1 [4634h]〜 : 関数定義     ;(名1・引1・命令文n+0Dh)xN +0000h

  2 [4636h]〜 : 文字変数(2次元);(名2・添1・添1・(文n+0Dh)xIxJ)xN +0000h

  3 [4638h]〜 : 文字変数(1次元);(名2・添2・(文n+0Dh)xI)xN +0000h

  4 [463Ah]〜 : 文字変数     ;(名2・文n+0Dh)xN +0000h

  5 [463Ch]〜 : 数値変数(2次元);(名2・添1・添1・数5xIxJ)xN +0000h

  6 [463Eh]〜 : 数値変数(1次元);(名2・添2・数5xI)xN +0000h

  7 [4640h]〜 : 数値変数     ;(名2・数5)xN +0000h

  8 [4642h]〜 : 文字ワーク    ;(文n+0Dh)x? +0000h

  9 [4644h]〜 : 数値ワーク    ;(数5)x?; ...終端なし


 ????-CFFF : スタック



 ***


 間違いの指摘とか疑問とか、ご意見・ご感想とかありましたら、どうぞ感想欄に!


 ***

2026.4.18 エピを入れ換え(初出: 2026/02/04 19:27)

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ