補足 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)




