はじめに
PicoCalcはファイルを保存する場所としてRaspberry Pi Pico内のフラッシュメモリのフラッシュファイルシステム(Aドライブ)とSDカードファイルシステム(Bドライブ)の2つがある。
PicoMiteおよびWebMiteのコマンドプロンプトおよびMMBasicのプログラムからファイルやディレクトリを操作するコマンドを確認した。
ドライブ操作コマンド DRIVE
アクティブドライブの変更
アクティブドライブはDRIVE drive$
コマンドで設定します。PicoMiteおよびWebMite
の起動直後はフラッシュファイルシステムのAドライブがアクティブドライブです。
DRIVEコ
マンドのパラメータdrive\$
は"A:"
または"B:"
、あるいは文字型変数です。
アクティブドライブをSDカードのBドライブに変更するコマンドを以下に示します。
> DRIVE "B:"
> B:
> PRINT MM.INFO$(DRIVE)
B:
- A:、B:は
DRIVE "A:"
、DRIVE "B:"
のショートカットとして定義されています。 -
MM.INFO$(DRIVE)
はアクティブドライブを返す定義済み読み取り専用変数で、値の表示にはPRINT
文を使います。
ドライブAのフォーマット
フラッシュファイルシステム(Aドライブ)はDRIVE "A:/FORMAT
コマンドで再フォーマットできます。SDカードファイルシステム(Bドライブ)のフォーマットはできませんでした。
> FILES
A:/
<DIR> .
<DIR> ..
<DIR> test
19:35 28-05-2025 297 ADT7410.bas
19:23 28-05-2025 4 bootcount
3 directories, 2 files, 2195456 bytes free
> DRIVE “A:/FORMAT”
> FILES
A:/
<DIR> .
<DIR> ..
19:37 28-05-2025 4 bootcount
2 directories, 1 file, 2207744 bytes free
> DRIVE "B:/FORMAT"
Error : Syntax
ファイルbootcount
はPicoMiteおよびWebMiteを起動した回数を保存しているファイルでフォーマットするとリセットされます。次のコマンドで起動回数を確認できます。
> PRINT MM.INFO(boot count)
4
アクティブドライブの表示
アクティブドライブはMM.INFO$(DRIVE)
定義済み読み取り専用変数で取得できます。PRINT
文を使って表示できます。
> PRINT MM.INFO$(DRIVE)
A:
アクティブドライブの空き容量取得
アクティブドライブの空き容量はMM.INFO(FREE SPACE)
定義済み読み取り専用変数で取得できます。容量はバイト単位です。初回のSDカードの容量取得には少し時間がかかりました。
> PRINT MM.INFO(FREE SPACE)
2207744
> B:
> PRINT MM.INFO(FREE SPACE)
31629066240
> PRINT MM.INFO(FREE SPACE)/1024^3 <- GB単位に換算
29.4568634
アクティブドライブの容量取得
アクティブドライブの容量はMM.INFO(DISK SIZE)
定義済み読み取り専用変数で取得できます。容量はバイト単位です。
> PRINT MM.INFO(disk size)
2215936
> B:
> PRINT MM.INFO(disk size)
31669338112
> PRINT MM.INFO(disk size)^3
29.49436951
ディレクトリ操作
PicoMiteおよびWebMiteではmacOSなどと同様にディレクトリの作成・削除、カレントディレクトリの変更コマンドが用意されています。
ディレクトリ作成コマンド MKDIR
ディレクトリ作成はMKDIR dir$
コマンドを使います。パラメータdir$
に作成するディレクトリの文字列あるいはティレクトリ名を格納した文字型変数を指定します。
> A:
> MKDIR "TEST
> MKDIR "test
> files
A:/
<DIR> .
<DIR> ..
<DIR> TEST
<DIR> test
(略)
> B:
> MKDIR "TEST
> MKDIR "test
Error : Access denied due to prohibited access
フラッシュファイルシステムは大文字・小文字を区別するのでディレクトリTESTが存在していてもディレクトリtestを作成できますがSDカードファイルシステムは大文字・小文字を区別しないためディレクトリTESTが存在するとディレクトリtestは作成できません。
作成するディレクトリ名を文字型変数に代入し、それをコマンドのパラメータにてディレクトリを作成できます。
> dd$="src"
> MKDIR dd$
> files
B:/
<DIR> firmware
<DIR> src
<DIR> TEST
(略)
アクティブドライブ以外にはディレクトリは作成できません。
> MKDIR "A:/TEST
Error : Only valid on current drive
ディレクトリの削除コマンド RMDIR
ディレクトリの削除はRMDIR dir$
コマンドを使います。コマンドのパラメータdir$
に削除するディレクトリ名の文字列か削除するディレクトリ名を格納した文字型変数を指定します。
削除できるのは空のディレクトリのみで、削除対象のディレクトリにファイルやディレクトリが存在する場合は削除できません。あらかじめ後述するKILL
コマンドで削除するディレクトリ内のファイルを削除する必要があります。
> RMDIR "TEST"
> RMDIR "test"
Error : Dir is not empty
カレントディレクトリの変更コマンド CHDIR
カレントディレクトリの変更はCHDIR dir$
コマンドを使います。コマンドのパラメータdir$
に変更先のディレクトリ名の文字列か変更先のディレクトリ名を格納した文字型変数を指定します。
アクティブドライブのディレクトリTESTに変更する場合は次のように実行します。
> CHDIR "TEST"
> FILES
A:/TEST
<DIR> .
<DIR> ..
2 directories, 0 files, 2179072 bytes free
ルートディレクトリは/
または\
を、親ディレクトリは..
を使って指定できます。
> CHDIR "TEST"
> MKDIR "/A"
> FILES "/"
A:/
<DIR> .
<DIR> ..
<DIR> A
<DIR> TEST
<DIR> test
(略)
カレントディレクトリ名の取得関数 CWD$
カレントディレクトリ名の取得にはCWD$
関数を使います。コマンドプロンプトで表示したい場合はPRINT
コマンドを使います。
> PRINT CWD$
/
> CHDIR "TEST"
> PRINT CWD$
A:/TEST
ファイル操作
ファイル一覧表示コマンド FILES
カレントディレクトリやドライブのファイルを表示するにはFILES [fspec$] [,sort]
コマンドを使います。パラメータを省略した場合はカレントディレクトリのファイル一覧を表示します。
FILES
A:/
<DIR> .
<DIR> ..
<DIR> A
<DIR> TEST
<DIR> test
21:04 28-05-2025 297 a.bas
21:00 28-05-2025 297 ADT7410.bas
19:37 28-05-2025 4 bootcount
5 directories, 3 files, 2170880 bytes free
パラメータfspec$
にはワイルドカードによるパターン指定ができます。二つ目のパラメータsort
は一覧表示時の並べ替えを指定できます。
ワイルドカードは任意の一文字を示す?、任意の文字列に一致する*を使用できます。
注:FILES
コマンドはコマンドプロンプトでのみ使用でき、プログラム内では使用できません。
BASICのソースファイルのみ表示
SDカードファイルシステム(Bドライブ)のルートディレクトリのBASICソースファイル(拡張子.BAS)のみを表示したい場合はfspec$
パラメータにB:/*.bas
を指定します。実行例を示します。
> FILES "B:/*.bas"
B:/
15:41 28-05-2025 297 ADT7410.bas
19:02 27-05-2025 87 ASCIIcodeTable.bas
07:20 25-02-2025 423 bifdiag.bas
21:58 25-05-2025 1205 hat.bas
22:02 25-05-2025 624 List6-3.bas
07:22 25-02-2025 550 lorenz.bas
10:42 06-01-2025 847 mand.bas
21:13 25-05-2025 425 scr.bas
20:07 27-05-2025 133 SetFNKy.bas
0 directories, 9 files
ファイル名が4文字のBASICファイルの表示
一文字のワイルドカード?を4つ並べて任意の4文字のファイル名(????.bas
)を指定します。
> FILES "B:/????.bas
B:/
10:42 06-01-2025 847 mand.bas
0 directories, 1 file
ファイル一覧の並べ替え
一覧表示時のファイル一覧の並べ替えのパラメータsort
をファイル名指定に続けて指定できます。指定できるのは下記の4つです。
- size:ファイルサイズを昇順で並べ替え
- time:日時を降順で並べ替え
- name:ファイル名順に並べ替え
- type:ファイル拡張子別
BASICのソースをサイズの小さい順に表示
size
パラメータを指定するとファイルサイズ順で一覧表示されます。実行例を示します。
> FILES "B:/*.bas", size
B:/
19:02 27-05-2025 87 ASCIIcodeTable.bas
20:07 27-05-2025 133 SetFNKy.bas
15:41 28-05-2025 297 ADT7410.bas
07:20 25-02-2025 423 bifdiag.bas
21:13 25-05-2025 425 scr.bas
07:22 25-02-2025 550 lorenz.bas
22:02 25-05-2025 624 List6-3.bas
10:42 06-01-2025 847 mand.bas
21:58 25-05-2025 1205 hat.bas
0 directories, 9 files
BASICのソースを新しい順に表示
time
パラメータを指定するとファイルのタイムスタンプの新しい順に表示されます。実行例を示します。
> FILES "B:/*.bas", time
B:/
15:41 28-05-2025 297 ADT7410.bas
20:07 27-05-2025 133 SetFNKy.bas
19:02 27-05-2025 87 ASCIIcodeTable.bas
22:02 25-05-2025 624 List6-3.bas
21:58 25-05-2025 1205 hat.bas
21:13 25-05-2025 425 scr.bas
07:22 25-02-2025 550 lorenz.bas
07:20 25-02-2025 423 bifdiag.bas
10:42 06-01-2025 847 mand.bas
0 directories, 9 files
BASICソースを名前順に表示
name
パラメータを指定すると名前順に表示されます。これはデフォルトのパラメータです。実行例を示します。
> FILES "B:/*.bas", name
B:/
15:41 28-05-2025 297 ADT7410.bas
19:02 27-05-2025 87 ASCIIcodeTable.bas
07:20 25-02-2025 423 bifdiag.bas
21:58 25-05-2025 1205 hat.bas
22:02 25-05-2025 624 List6-3.bas
07:22 25-02-2025 550 lorenz.bas
10:42 06-01-2025 847 mand.bas
21:13 25-05-2025 425 scr.bas
20:07 27-05-2025 133 SetFNKy.bas
0 directories, 9 files
SDカードファイルシステム(Bドライブ)をファイルの種別ごとに表示
type
パラメータを指定するとファイルの種別順に一覧表示されます。実行例を示します。
> FILES "B:/", type
B:/
<DIR> TEST
<DIR> src
<DIR> firmware
15:41 28-05-2025 297 ADT7410.bas
21:58 25-05-2025 1205 hat.bas
21:13 25-05-2025 425 scr.bas
22:02 25-05-2025 624 List6-3.bas
19:02 27-05-2025 87 ASCIIcodeTable.bas
20:07 27-05-2025 133 SetFNKy.bas
07:20 25-02-2025 423 bifdiag.bas
07:22 25-02-2025 550 lorenz.bas
10:42 06-01-2025 847 mand.bas
21:16 25-05-2025 306294 memory.bmp
00:01 01-01-2024 307254 boot.bmp
14:20 27-05-2025 307254 List6-3.bmp
12:29 13-01-2025 307254 picocalc.bmp
10:42 06-01-2025 2133632 BellLabs_Fine.mp3
10:42 06-01-2025 40976 Chessnovice_johnybot.nes
3 directories, 15 files
ファイル名の変更コマンド RENAME
ファイル名を変更するにはRENAME fromname$ AS tonane$
コマンドを使います。fromname$からtoname$に名前を変更します。ファイル名は文字列、あるいは文字型変数を指定します。
以下にアクティブドライブのファイルa.basの名前をb.basに変更する例です。
> FILES "*.bas"
A:/
22:45 28-05-2025 297 a.bas
21:00 28-05-2025 297 ADT7410.ba
s
0 directories, 2 files, 2166784 bytes free
> RENAME "a.bas" AS "b.bas"
> FILES "*.bas"
A:/
21:00 28-05-2025 297 ADT7410.bas
22:45 28-05-2025 297 b.bas
0 directories, 2 files, 2166784 bytes free
ディレクトリの名前も変更できます。ディレクトリAをTEMPという名前に変更する場合は次のようにコマンドを入力します。
> RENAME "A" AS "TEMP"
名前を変更できるのはアクティブドライブ内のみです。非アクティブドライブに対しては操作できません。下記の例のように現在のドライブのみが有効である旨のメッセージが表示されます。
> RENAME "B:/a.bas" AS "B:/B.bas"
Error : Only valid on current drive
ファイルコピーコマンド COPY
ファイルをコピーするときはCOPY fromname$ TO toname$
コマンドを使います。fromname$からtoname$へコピーします。ファイル名は文字列、あるいは文字型変数を指定します。
ファイルをディレクトリへコピーする場合はワイルドカードでファイル名を指定した場合のみ可能で完全なファイル名でのコピーはエラーになる。
以下はBASICのファイルをディレクトリTESTへコピーする例です。
ディレクトリのファイル一覧はディレクトリ名の末尾に/を付ける(例:TEST/)。
> COPY "*.bas" TO "TEST"
Copying ADT7410.bas
Copying a.bas
Copying b.bas
> FILES "TEST/"
A:/TEST
<DIR> .
<DIR> ..
09:17 29-05-2025 297 a.bas
09:17 29-05-2025 297 ADT7410.bas
09:17 29-05-2025 297 b.bas
2 directories, 3 files, 2154496 bytes free
> COPY "a.bas" TO "TEST"
Error : No space left on device
コピー先ディレクトリの同名のファイルが有る場合は上書きされます。
アクティブドライブ以外のドライブにファイルをコピーするときはドライブ名を含めた完全なパス名を指定する(同じ名前でコピーしたい場合もファイル名を指定する)。
以下はアクティブドライブ(Aドライブ)のファイルADT7410.basをSDカードファイルシステムのディレクトリTESTへコピーする例を示します。
> COPY "ADT7410.bas" TO "B:/TEST/ADT7410.bas"
> FILES "B:/TEST/"
B:/TEST
09:28 29-05-2025 297 ADT7410.bas
0 directories, 1 file
ファイルの削除コマンド KILL
ファイルを削除するときはKILL file$ [,all]
コマンドを使います。パラメータfile$
に削除したいファイル名の文字列あるいはファイル名を格納した文字型変数を指定します。
> KILL "b.bas"
ワイルドカードを使っている場合は削除するか否かの確認をしながら実行されます。
> KILL "TEST/*"
Deleting ADT7410.bas ? (Y/N) Y
Deleting a.bas ? (Y/N) Y
Deleting b.bas ? (Y/N) Y
パラメータall
を指定した場合、1回だけ削除するかの確認があり、Yと回答すると連続してファイルを削除します。
> KILL "TEST/*.bas", all
Deleting *.bas from A:/TEST
Are you sure ? (Y/N) Y
Deleting ADT7410.bas
Deleting a.bas
アクティブドライブ以外のドライブのファイルを削除する場合はファイルコピーの場合と同様に完全なパス名を指定する。
> KILL "B:/src/ADT7410.bas"