更新日: 2022 年 9 月 6 日
KT.X の説明
説明
KT.X の添付ドキュメントです。末尾に記載されている連絡先は無効です。
kt.doc
────────────────────────────────────
Tool Box "KT" (1998.02.23) by M.Kamada
────────────────────────────────────
━< KTとは >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
kt は多数の小さなツールを繋ぎ合わせたツールです。バッチファイルなどで
使用される簡単な外部コマンドの機能をまとめ、共通サブルーチンを融合しつつ
1 つの実行ファイルとして提供することで、ディスクスペースなどの資源を節約
することを目的として作られたプログラムです。
従来からあった PIC ローダの他に、式評価などの便利な機能を新たに追加し
ました。
kt は、環境に応じて必要なコマンドだけをリンクすることで、オーダーメイ
ドできます。
━< 使い方 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
コマンドラインの先頭に kt のコマンドを書きます。後ろのパラメータはコマ
ンドに渡されます。
文法: 結果を表示する
┌────────────────────────────
│> kt <コマンド> <パラメータ>
例: 結果を表示する
┌────────────────────────────
│> kt mpu
│ktmpu: 68060
━< メッセージの抑制 >━━━━━━━━━━━━━━━━━━━━━━━━
通常はコマンドの結果が画面に表示されますが、環境変数や終了コードによる
結果だけを必要で画面表示を抑制したい場合は、コマンドの直前に「.」を付け
ることで結果が表示されなくなります。この機能を使うと、余計なメッセージを
抑制するためにコマンドラインの最後に「>NUL」を書く必要がなくなります。
文法: 結果を表示しない
┌────────────────────────────
│> kt .<コマンド> <パラメータ>
例: 結果を表示しない
┌────────────────────────────
│> kt .mpu || if errorlevel 3 goto 〜
なお、表示を目的としたコマンドは「.」を付けても表示が行われます。また、
エラーメッセージは抑制されません。
━< HUPAIR に準拠しています >━━━━━━━━━━━━━━━━━━━━
HUPAIR というのは、シェルと、シェルから起動される実行ファイルについて、
コマンドラインの長さが 255 バイトまでという制約を取り払うための、ユーザ
による取り決めです。HUPAIR に準拠している実行ファイルには特別な識別子が
埋め込まれていて、HUPAIR に準拠しているシェル(FISH など)から 255 バイ
トを超えるコマンドラインを受け取ることができます。仕方のないことですが、
純正の COMMAND.X は HUPAIR に準拠していないので、255 バイトを超えるコマ
ンドラインを受け渡すことはできません。
kt は HUPAIR に準拠しています。つまり、HUPAIR に準拠しているシェル上で
kt を起動するときに 255 バイトを超えるコマンドラインを受け取ることができ、
また、kt が HUPAIR に準拠している実行ファイルを起動するときは 255 バイト
を超えるコマンドラインを渡すことができます。
━< HUPAIR の副作用 >━━━━━━━━━━━━━━━━━━━━━━━━
HUPAIR には、コマンドラインの一部について、必要ならば "〜" または '〜'
で囲って渡すというルールがあります。例えば、1 個の空白文字を 1 個のパラ
メータとして渡したい場合は " " または ' ' と書くことになっています。逆に、
HUPAIR に準拠している実行ファイルは、これらの「引数を受け渡すために使用
された臨時記号」を取り除きながらパラメータを読み取ります。この結果、空白
文字をパラメータの一部として渡せる一方で、クォーテーションマークをパラメ
ータの一部として渡すためにはそれを別のクォーテーションマークで囲まなけれ
ばならないという制約が生じています。
kt も例外ではありません。例えば、calc や print では文字列の意味で "〜"
を使用しますが、これはさらに外側を '〜' で囲まないと正しく解釈されません。
なお、一番外側のクォーテーションは閉じていなくても構いません。
例: HUPAIR の副作用
┌────────────────────────────
│> kt calc asc("a")
│ktcalc: 未定義の変数です
│asc(a)
│ ^
│> kt calc 'asc("a")
│97
━< コマンド一覧 >━━━━━━━━━━━━━━━━━━━━━━━━━━
kt には数多くのコマンドが用意されています。全部使う必要はありません。
古いコマンドのうちの幾つかは calc で代用できるので、削除しても構いません。
・凡例
C 外部コマンド
E 環境変数名(設定しないときは*)
F ファイル名
N 数値(10進数,16進数は$xx)
S 文字列
@: ドライブ名
@:|F ドライブ名またはフロッピードライブ番号(0〜3)
[] 省略可能
<> 省略不能
・コマンド一覧
kt asc E S Sの1バイト目を数値にしてEに設定して返す
kt cache [on|off [i][d]] キャッシュを設定して前の状態を返す
kt calc S 式Sを評価する
kt cncn [+|-][cfmt[0123]] … カーソル,ファンクション,マウス,テキスト消去
kt contrast [N|"s"] コントラスト設定
kt crlf [N] N行改行
kt curdir [E [@:]] @:のカレントディレクトリをEに設定
kt curdrv [E] カレントドライブ名をEに設定
kt diskfree [@: [E]] @:の空き容量をEに設定してKB単位で返す
kt echo [S] … 文字列表示
kt eject @:|F @:|Fをイジェクト
kt exec C Cがあるパスをカレントにして実行
kt export E […] Eを親プロセスに継承
kt gp11 [C] Cを実行してからピクセル比をほぼ1:1にする
kt hupair シェルがHUPAIR対応か調べる
kt inkey [E [S]] Sを表示してキー入力をEに設定し文字コードを返す
kt inkey0 [E [S]] Sを表示してキー入力を大文字化してからEに設定し文字コードを返す
kt inkey1 [E [S]] Sを表示してキー入力を小文字化してからEに設定し文字コードを返す
kt input [E [S1 [S2]]] S1を表示し初期文字列S2で文字列入力しEに設定
kt input0 [E [S1 [S2]]] S1を表示し初期文字列S2で文字列入力し大文字化しEに設定
kt input1 [E [S1 [S2]]] S1を表示し初期文字列S2で文字列入力し小文字化しEに設定
kt left E S N Sの左からNバイトをEにセットする
kt len S Sの長さを返す
kt machine [E] 機種を表示しEに設定
kt mediabyte [@:] @:のメディアバイトを返す
kt memfree [E] 残り容量を表示しEに設定して返す
kt mid E S N M Sの左からNバイト目からMバイトをEにセットする
kt mpu [E] MPUの種別を表示しEに設定して返す
kt pic [スイッチ] F PICファイルFを表示する
kt power [disable|enable|off] フロントスイッチの制御
kt print S;… 式Sを評価して結果を表示する
kt rand N [E] 0以上N未満の乱数をEに設定して返す
kt rc E C Cを実行して終了コードを表示しEに設定して返す
kt ready @:|F @:|Fの準備ができるまでLEDを点滅して待つ
kt regular E S ファイル名Sを正規化して環境変数Eに格納する
kt rerr C エラー出力を標準出力にしてCを実行
kt reset リセットする
kt right E S N Sの右からNバイトをEにセットする
kt screen S,M,R,G 画面モード設定
kt select E S S1 […] SをS1以降から探して番号をEに設定して返す
kt slash E S 文字列Sの中の'\'をすべて'/'に変換して環境変数Eに格納
kt speed [N] システムウェイト設定[0]
kt spurious スプリアス割り込みを潰す
kt vol [E [@:]] @:のボリューム名をEに設定
kt wait [N] N/10秒待つ[10]
kt xellent Xellent30(s,PRO)の030モードでなければエラー
━< コマンドの省略形 >━━━━━━━━━━━━━━━━━━━━━━━━
kt 1 → gp11
kt c → cncn
kt e → eject
kt p → pic
kt s → screen
━< コマンドの一覧と省略形の表示 >━━━━━━━━━━━━━━━━━━
kt にコマンドを指定せずに実行すると、組み込まれているコマンドの一覧が
省略形付きで表示されます。
例: コマンド一覧の表示
┌────────────────────────────
│> kt
│Tool Box "KT" (1997.12.09) by M.Kamada
│コマンド(省略形): asc cache calc cncn(c) contrast crlf curdir curdrv
│diskfree echo eject(e) exec export gp11(1) hupair inkey inkey0 inkey1
│input input0 input1 left len machine mediabyte memfree mid mpu pause
│pic(p) power print rand rc ready regular rerr reset right screen(s)
│select slash speed spurious vol wait xellent
━< 環境変数名の指定 >━━━━━━━━━━━━━━━━━━━━━━━━
kt にはコマンドラインに環境変数名を指定するコマンドが多数ありますが、
環境変数を設定する必要がない場合は、環境変数名の部分に「-」または「*」ま
たは「""」を書いておくと、環境変数の設定がキャンセルされます。
例: 環境変数を設定しない
┌────────────────────────────
│> kt rc - kt curdir
│ktcurdir: B:\doc\
│ktrc: 2
━< asc >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
文字列の先頭の 1 バイト目の文字コードを返します。
《文法》
文法: asc
┌────────────────────────────
│> kt asc <環境変数名> <文字列>
《説明》
指定された文字列の 1 バイト目の文字コードを表示して返すだけのコマンド
です。
kt asc は以下のコマンドで代用できます。
┌────────────────────────────
│> kt calc 'asc("文字列")
《終了コード》
指定された文字列の 1 バイト目の文字コードを返します。
《使用例》
例: 文字列の先頭の文字コードを調べる
┌────────────────────────────
│> kt input yesno "YES/NO? "
│> kt asc yesno1 %yesno%
━< cache >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
キャッシュの状態を設定して前の状態を返します。
《文法》
文法: cache
┌────────────────────────────
│> kt cache [on|off [i][d]]
《説明》
cache.x 相当のキャッシュ設定コマンドです。ただし、キャッシュの状態を
SRAM に設定する機能はありません。
設定後のキャッシュの状態が表示されます。68000 では何も表示されません。
パラメータを何も指定しなかったときは、現在の状態が表示されます。
《終了コード》
キャッシュを操作する前のキャッシュの状態を返します。終了コードとキャッ
シュの状態の関係は以下の通りです。
┌──────┬────────┬───────┐
│ 終了コード │データキャッシュ│命令キャッシュ│
├──────┼────────┼───────┤
│ 0 │ OFF │ OFF │
│ 1 │ OFF │ ON │
│ 2 │ ON │ OFF │
│ 3 │ ON │ ON │
└──────┴────────┴───────┘
68000 で実行した場合は、常に 0 が返ります。
《使用例》
例: キャッシュを OFF にします
┌────────────────────────────
│> kt cache off
│i-cache: off
│d-cache: off
例: キャッシュを ON にします
┌────────────────────────────
│> kt cache on
│i-cache: on
│d-cache: on
例: 命令キャッシュを OFF にします(データキャッシュは操作しない)
┌────────────────────────────
│> kt cache off i
│i-cache: off
│d-cache: on
━< calc >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
パラメータを式と見なして評価します。
《文法》
文法: calc
┌────────────────────────────
│> kt calc <文字列>
《説明》
パラメータの式を評価します。数値演算と文字列操作が可能です。
使用可能な演算子や関数については、後述の<式評価>の項目を参照して下さ
い。
「<」、「>」、「|」を含む演算子を使うときは、シェルがリダイレクション
やパイプとして解釈してしまわないように、式全体を "〜" または '〜' で囲ん
で下さい。一番外側のクォーテーションは閉じていなくても構いません。
例: 記号に注意
┌────────────────────────────
│> kt print 2<5
│入力が見つかりません
│> kt print '2<5
│1
"〜" または '〜' を使って式を記述する場合は、HUPAIR 対応の都合でその外
側を別のクォーテーションマークで囲む必要があります。
例: "〜" の書き方に注意
┌────────────────────────────
│> kt print asc("A")
│ktprint: 未定義の変数です
│asc(A)
│ ^
│> kt print 'asc("A")
│65
パラメータを何も指定しないで実行すると、使用可能な記号と関数の一覧が表
示されます
例: 記号と関数の一覧表示
┌────────────────────────────
│> kt calc
│ktcalc: 式がありません
│記号: e,e v=e vn+=n vs+=s vn-=n vn*=n vs*=n vn/=n vn%=n
│vn&=n vn|=n vn^=n vn<<=n vn>>=n n?e:e n||n n&&n n|n n^n n&n
│n==n s==s n!=n s!=s n<=n s<=s n<n s<s n>=n s>=s n>n s>s n<<n n>>n
│n+n s+s n-n n*n s*n n/n n%n ++vn --vn +n -n !n ~n n**n s[n]
│(e) [n] [n].B [n].W [n].L [n].F [n].D vn++ vn--
│"〜" '〜' $〜 0x〜 0o〜 0b〜
│関数: abs(n) acos(n) asc(s) ascchr$(s) asin(n) atan(n)
│atan2(n,n) bin$(n) ceil(n) chr$(n) cos(n) cosh(n) date() deg(n)
│eval(s) exp(n) fix(n) floor(n) frac(n) hex$(n) hexchr$(s) instr(s,s)
│int(n) left$(s,n) len(s) log(n) log10(n) log2(n) mid$(s,n,n) npi(n)
│oct$(n) pi() power(n,n) rad(n) rand() randomize(n) right$(s,n) rnd()
│sgn(n) sin(n) sinh(n) sqr(n) srand(n) str$(n) strchr(s,n) strlwr(s)
│strrchr(s,n) strupr(s) tan(n) tanh(n) time() val(s) zenkaku(s)
│(e=式,n=数値,s=文字列,v=変数名,vn=数値を持っている変数名,
│vs=文字列を持っている変数名)
《使用例》
例: アドレス $0008 の内容を 16 進数 8 桁で表示します
┌────────────────────────────
│> kt calc 'right$("0000000"+hex$([$0008]),8)
│"02FF08EC"
━< cncn >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
テキストカーソル、ファンクション表示およびマウスカーソルの各表示状態の
設定、または、テキスト画面の消去を行います。
《文法》
文法: cncn
┌────────────────────────────
│> kt cncn [+|-][cfmt[0123]] …
《説明》
コマンドラインで、以下の機能を指示します。
┌───────────────────────────┐
│ +c テキストカーソル ON │
│ -c テキストカーソル OFF │
│ +f ファンクション表示 ON │
│ -f ファンクション表示 OFF │
│ +m マウス初期化・ソフトキーボード自動制御 │
│ -m マウスカーソル消去・ソフトキーボード消去│
│ +tN 数字で指定されたテキストプレーンを消去 │
└───────────────────────────┘
パラメータを省略したときのデフォルトは +cfm です。つまり、パラメータを
何も指定しなければ、テキストカーソル ON、ファンクション表示 ON、マウス初
期化・ソフトキーボード自動制御になります。
《省略形》
省略形: cncn
┌────────────────────────────
│> kt c [+|-][cfmt[0123]] …
《使用例》
例: テキストカーソルとファンクション表示を消して、テキストプレー
ン 0,1 を消去します。
┌────────────────────────────
│> kt cncn -cft01
━< contrast >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
画面のコントラストを変更します。
《文法》
文法: contrast
┌────────────────────────────
│> kt contrast [数値|s]
《説明》
画面のコントラストを、指定された数値に変更します。
┌──┬──────────┐
│数値│ 明るさ │
├──┼──────────┤
│ 15 │最も明るい │
│ : │ : │
│ 0 │最も暗い │
├──┼──────────┤
│ s │SRAM の設定値を使用 │
└──┴──────────┘
《終了コード》
変更前のコントラストを返します。
《使用例》
例: 画面を真っ暗にします
┌────────────────────────────
│> kt contrast 0
│>
━< crlf >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
N 行改行します。
《文法》
文法: crlf
┌────────────────────────────
│> kt crlf [数値]
《説明》
指定された回数だけ、標準出力に改行コードを出力します。数値を省略した場
合は 1 行改行します。
《使用例》
例: 2 行改行します
┌────────────────────────────
│> kt crlf 2
│
│
━< curdir >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
カレントディレクトリを取得します。
《文法》
文法: curdir
┌────────────────────────────
│> kt curdir [環境変数名 [ドライブ名]]
《説明》
指定されたドライブのカレントディレクトリを表示して、指定された環境変数
に設定します。
ドライブ名を省略した場合はカレントドライブが対象になります。
環境変数名を省略した場合は環境変数 curdir に設定されます。
環境変数には、「A:\home\」のようにドライブ名から末尾の「\」まで格納さ
れます。
《終了コード》
表示したドライブ番号(1=A:)が返ります。
《使用例》
例: ドライブ A: のカレントディレクトリを環境変数 cwd に設定しま
す
┌────────────────────────────
│> kt .curdir cwd A:
━< curdrv >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
カレントドライブを返します。
《文法》
文法: curdrv
┌────────────────────────────
│> kt curdrv [環境変数名]
《説明》
カレントドライブ名を表示して、それを指定された環境変数に設定し、ドライ
ブ番号を返します。
環境変数名を省略した場合は、環境変数 curdrv に設定します。
環境変数には、「A:」のようなフォーマットでドライブ名が設定されます。
《終了コード》
カレントドライブのドライブ番号(0=A:)を返します。
《使用例》
例: カレントドライブを表示します
┌────────────────────────────
│> kt curdrv -
│ktcurdrv: B:
━< diskfree >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
ドライブの空き容量を返します。
《文法》
文法: diskfree
┌────────────────────────────
│> kt diskfree [ドライブ名 [環境変数名]]
《説明》
指定したドライブの空き容量を KB 単位で表示し、指定された環境変数に設定
し、返します。
ドライブ名を省略した場合はカレントドライブが対象になります。
環境変数名を省略した場合は環境変数 diskfree に設定します。
《終了コード》
表示した空き容量(KB 単位)を返します。
《使用例》
例: ドライブ A: の空き容量を調べます
┌────────────────────────────
│> kt diskfree A: -
│ktdiskfree: 23616
━< echo >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
文字列を表示します。エスケープシーケンスを処理します。
《文法》
文法: echo
┌────────────────────────────
│> kt echo [文字列 …]
《説明》
文字列を表示します。スペースを含む文字列は " " で囲んで下さい。複数の
文字列を指定した場合は詰めて表示します。
エスケープシーケンスを処理します。エスケープシーケンスについては後述の
<エスケープシーケンス>の項目を参照して下さい。
《使用例》
例: 黄色で「お待ち下さい」と表示します
┌────────────────────────────
│> kt echo "\x1b[32mお待ち下さい\x1b[m"
━< eject >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
指定されたドライブをイジェクトします。
《文法》
文法: eject
┌────────────────────────────
│> kt eject [ドライブ名|FDドライブ番号]
《説明》
指定されたドライブをイジェクトします。
《省略形》
省略形: eject
┌────────────────────────────
│> kt e [ドライブ名|FDドライブ番号]
《使用例》
例: ドライブ C: をイジェクトします
┌────────────────────────────
│> kt e c:
━< exec >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
実行ファイルが存在するパスに移動してコマンドを実行する。
《文法》
文法: exec
┌────────────────────────────
│> kt exec 実行ファイル名 コマンドライン
《説明》
実行ファイルを実行します。このとき、実行ファイルが存在するドライブおよ
びディレクトリをカレントにしてから起動し、終了したらカレントディレクトリ
とカレントドライブを元に戻します。
《終了コード》
実行ファイルの終了コードがそのまま返ります。
《使用例》
例: L:\mat\mat.x を実行します
┌────────────────────────────
│> kt exec L:\mat\mat.x
━< export >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
環境変数を親プロセスに継承する。
《文法》
文法: export
┌────────────────────────────
│> kt export 環境変数名 …
《説明》
環境変数を親プロセスに継承します。子プロセスのバッチファイル実行中など
に、親プロセスの環境を変更したい場合に使います。
《使用例》
例: 環境変数 zmusic を親プロセスに継承します
┌────────────────────────────
│> kt export zmusic
━< gp11 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
コマンドを実行してから画面のピクセル比を 1:1 にします。
《文法》
文法: gp11
┌────────────────────────────
│> kt gp11 [実行ファイル名 コマンドライン]
《説明》
実行ファイルを実行してから、画面を 512×512 ドット、ピクセル比 1:1、グ
ラフィック 65536 色、グラフィック表示 ON にします。
実行ファイル名を省略した場合は、画面モードの変更だけを行います。
《省略形》
省略形: gp11
┌────────────────────────────
│> kt 1 [実行ファイル名 コマンドライン]
《使用例》
例: ピクセル比 1:1 にします
┌────────────────────────────
│> kt 1
━< hupair >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
HUPAIR 対応環境かどうか調べます。
《文法》
文法: hupair
┌────────────────────────────
│> kt hupair
《説明》
kt を起動したシェルが HUPAIR に対応しているかどうか調べます。
《返却値》
シェルが HUPAIR に対応していれば 0、対応していなければ 65535 が返りま
す。
《使用例》
例: HUPAIR 対応環境かどうか調べる
┌────────────────────────────
│> kt hupair
│kthupair: HUPAIR 対応環境ではありません
━< inkey >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
1 文字入力します。
《文法》
文法: inkey
┌────────────────────────────
│> kt inkey [環境変数名 [プロンプト]]
《説明》
プロンプトを表示して 1 文字入力を待ち、入力された文字を環境変数に設定
し、文字コードを返します。
2 バイトの文字も入力できます。
環境変数名を省略すると環境変数 inkey に設定します。
プロンプトを省略すると "? " になります。プロンプトを表示したくないとき
は "" を指定して下さい。
《終了コード》
入力した文字の文字コードが返ります。
《使用例》
例: 「番号を選んで下さい」と表示して 1 文字入力を待ちます
┌────────────────────────────
│> kt inkey sel "番号を選んで下さい "
━< inkey0 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
1 文字入力してから、入力した文字を大文字化します。
《文法》
文法: inkey0
┌────────────────────────────
│> kt inkey0 [環境変数名 [プロンプト]]
《説明》
プロンプトを表示して 1 文字入力を待ち、入力された文字を大文字化してか
ら環境変数に設定し、文字コードを返します。
2 バイトの文字も入力できます。
環境変数名を省略すると環境変数 inkey に設定します。
プロンプトを省略すると "? " になります。プロンプトを表示したくないとき
は "" を指定して下さい。
《終了コード》
入力した文字を大文字化した文字の文字コードが返ります。
《使用例》
例: 「YES/NO? 」と表示して 1 文字入力を待ち、大文字化します。
┌────────────────────────────
│> kt inkey0 - "YES/NO? "
━< inkey1 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
1 文字入力してから、入力した文字を小文字化します。
《文法》
文法: inkey1
┌────────────────────────────
│> kt inkey1 [環境変数名 [プロンプト]]
《説明》
プロンプトを表示して 1 文字入力を待ち、入力された文字を小文字化してか
ら環境変数に設定し、文字コードを返します。
2 バイトの文字も入力できます。
環境変数名を省略すると環境変数 inkey に設定します。
プロンプトを省略すると "? " になります。プロンプトを表示したくないとき
は "" を指定して下さい。
《終了コード》
入力した文字を小文字化した文字の文字コードが返ります。
《使用例》
例: 「YES/NO? 」と表示して 1 文字入力を待ち、小文字化します。
┌────────────────────────────
│> kt inkey1 - "yes/no? "
━< input >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
1 行入力します。
《文法》
文法: input
┌────────────────────────────
│> kt input [環境変数名 [プロンプト [初期文字列]]]
《説明》
プロンプトを表示してから 1 行入力を待ち、環境変数に設定します。
入力待ちになる前に、入力部分に初期文字列が入ります。つまり、リターンキ
ーを押すだけで初期文字列が入力されます。
環境変数名を省略すると環境変数 input に設定します。
プロンプトを省略すると "? " になります。プロンプトを表示したくないとき
は "" を指定して下さい。
《終了コード》
入力した文字列のバイト数を返します。
《使用例》
例: ファイル名をデフォルトを temp.$$$ として入力させます
┌────────────────────────────
│> kt input filename "ファイル名: " "temp.$$$"
━< input0 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
1 行入力して、結果を大文字化します。
《文法》
文法: input0
┌────────────────────────────
│> kt input0 [環境変数名 [プロンプト [初期文字列]]]
《説明》
プロンプトを表示してから 1 行入力を待ち、大文字化してから環境変数に設
定します。
入力待ちになる前に、入力部分に初期文字列が入ります。つまり、リターンキ
ーを押すだけで初期文字列が入力されます。
環境変数名を省略すると環境変数 input に設定します。
プロンプトを省略すると "? " になります。プロンプトを表示したくないとき
は "" を指定して下さい。
《終了コード》
入力した文字列のバイト数を返します。
《使用例》
例: 1 行入力して大文字化します
┌────────────────────────────
│> kt input0 type "タイプ(A/B/C): " "A"
━< input1 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
1 行入力して、結果を小文字化します。
《文法》
文法: input1
┌────────────────────────────
│> kt input1 [環境変数名 [プロンプト [初期文字列]]]
《説明》
プロンプトを表示してから 1 行入力を待ち、小文字化してから環境変数に設
定します。
入力待ちになる前に、入力部分に初期文字列が入ります。つまり、リターンキ
ーを押すだけで初期文字列が入力されます。
環境変数名を省略すると環境変数 input に設定します。
プロンプトを省略すると "? " になります。プロンプトを表示したくないとき
は "" を指定して下さい。
《終了コード》
入力した文字列のバイト数を返します。
《使用例》
例: 1 行入力して小文字化します
┌────────────────────────────
│> kt input1 type "タイプ(a/b/c): " "a"
━< left >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
文字列の左から指定されたバイト数だけ切り出します。
《文法》
文法: left
┌────────────────────────────
│> kt left <環境変数名> <文字列> <切り出すバイト数>
《説明》
文字列の左側から指定されたバイト数だけ切り出して環境変数に設定します。
結果の文字列が 2 バイトコードの 1 バイト目で終わってしまうときは、その
バイトを ' ' に置き換えます。
《使用例》
例: ドライブ名を切り取る
┌────────────────────────────
│> kt left drivename a:\command.x 2
│a:
━< len >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
文字列の長さを調べます。
《文法》
文法: len
┌────────────────────────────
│> kt len <文字列>
《説明》
文字列の長さを返します。
《使用例》
例: 環境変数 path の長さが 250 バイト以上あったらジャンプします
┌────────────────────────────
│> kt len %path%||if errorlevel 250 goto 〜
━< machine >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
機種を調べます。
《文法》
文法: machine
┌────────────────────────────
│> kt machine [環境変数名]
《説明》
機種を示すキーワードをスペースで区切って表示し、それを環境変数に設定し
ます。
キーワードとその意味は以下の通りです。
┌─────┬─────────────────────┐
│キーワード│ 意味 │
├─────┼─────────────────────┤
│X68000 │プラットフォームが X68000 である │
│X68030 │プラットフォームが X68030 である │
│Xellent30 │X68000 だが 68030 で動いている │
│Jupiter │X68000 だが 68040 か 68060 で動いている │
│040turbo │X68030 だが 68040 で動いている │
│060turbo │X68030 だが 68060 で動いている │
│MC68000 │MPU が 68000 である │
│MC68030 │MPU が 68030 である │
│MC68040 │MPU が 68040 である │
│MC68060 │MPU が 68060 である │
│FPCP │コプロ命令が使える(68030) │
│FPU │コプロ命令が使える(68040,68060) │
│MMU │MMU が使える │
└─────┴─────────────────────┘
環境変数名を省略したときは環境変数 machine に設定します。
《使用例》
例: 機種を表示します
┌────────────────────────────
│> kt machine -
│ktmachine: X68030 060turbo MC68060 FPU MMU
━< mediabyte >━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
メディアバイトを調べます。
《文法》
文法: mediabyte
┌────────────────────────────
│> kt mediabyte [ドライブ名]
《説明》
指定したドライブのメディアバイトを調べます。
ドライブ名を省略した場合はカレントドライブが対象になります。
メディアバイトとドライブの種類の対応は以下の通りです。
┌───────┬───────────────┐
│メディアバイト│ 種類 │
├───────┼───────────────┤
│ 240 │ SCSI MO (IBM format) │
│ 244 │ SCSI DAT │
│ 245 │ SCSI CD-ROM │
│ 246 │ SCSI MO │
│ 247 │ SCSI HD │
│ 248 │ SASI HD │
│ 249 │ RAM / SRAM / ROM │
│ 250 │ 2HD 1.44MB │
│ 251 │ 2DD 640KB │
│ 252 │ 2DD 720KB │
│ 253 │ 2HC 1.2MB │
│ 254 │ 2HD 1.2MB │
└───────┴───────────────┘
《終了コード》
指定したドライブのメディアバイトを返します。
《使用例》
例: ドライブ A: のメディアバイトを表示します
┌────────────────────────────
│> kt mediabyte A:
│ktmediabyte: 247
━< memfree >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
メモリの残り容量を KB 単位で返します。
《文法》
文法: memfree
┌────────────────────────────
│> kt mpu [環境変数名]
《説明》
メモリの残り容量を KB 単位で表示して、それを環境変数に設定し、終了コー
ドでも返します。
環境変数名を省略した場合は、環境変数 memfree に設定します。
《終了コード》
メモリの残り容量を KB 単位で返します。
《使用例》
例: memfree
┌────────────────────────────
│> kt memfree
│ktmemfree: 7853KB
━< mid >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
文字列の途中から切り出す。
《文法》
文法: mid
┌────────────────────────────
│> kt mid <環境変数名> <文字列> <開始位置> <切り出すバイト数>
《説明》
文字列の途中から文字列を切り出して環境変数に設定します。開始位置は文字
列の先頭を 1 とします。
結果の文字列の先頭が 2 バイトコードの 2 バイト目になる場合は、そのバイ
トを ' ' で置き換えます。
結果の文字列の末尾が 2 バイトコードの 1 バイト目で終わる場合は、そのバ
イトを ' ' で置き換えます。
《使用例》
例: 2 バイト目から 3 バイト切り出します
┌────────────────────────────
│> kt mid - "abcde" 2 3
│ktmid: bcd
━< mpu >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
現在の MPU の種類を返します。
《文法》
文法: mpu
┌────────────────────────────
│> kt mpu [環境変数名]
《説明》
現在の MPU の種類を表示して、それを環境変数 E に設定し、終了コードでも
返します。
環境変数名を省略した場合は、環境変数 mpu に設定します。
《終了コード》
MPU の種類を返します。
終了コードと MPU の関係 は以下の通りです。
┌─────┬─────┐
│終了コード│ MPU │
├─────┼─────┤
│ 0 │ 68000 │
│ 3 │ 68030 │
│ 4 │ 68040 │
│ 6 │ 68060 │
└─────┴─────┘
《使用例》
例: mpu
┌────────────────────────────
│> kt mpu
│ktmpu: 68060
━< pause >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
メッセージを表示してキー入力を待ちます。
《文法》
文法: pause
┌────────────────────────────
│> kt pause [メッセージ]
《説明》
メッセージをエスケープシーケンスを処理しながら表示して、キー、マウス、
パッドからの入力を待ちます。入力後、改行してから終了します。
メッセージを省略した場合は入力を待つだけです。このときは改行も行いませ
ん。
エスケープシーケンスについては、後述の<エスケープシーケンス>の項目を
参照して下さい。
キー入力を待つとき、マウスやパッドのボタンも反応します。
《使用例》
例: pause
┌────────────────────────────
│> kt pause "何かキーを押して下さい"
│何かキーを押して下さい
━< pic >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
PIC ローダです。
《文法》
文法: pic
┌────────────────────────────
│> kt pic [スイッチ] ファイル名
・スイッチ
┌──────────────────────────────────┐
│ -c 表示前に画面をクリアする(表示範囲の外側もクリアする) │
│ -f ワイプ表示ができなければ普通に表示する │
│ (クロマキー合成は普通に表示できないのでエラーになる) │
│ -k ファイルを1つ表示する度にキー入力を待つ │
│ -lc 画面の中央に表示する │
│ -lX,Y 指定座標に表示する │
│ -m コメントメッセージを表示しない │
│ -n 表示前に画面モードやパレットを一切初期化しない │
│ -p ファイル名を表示する │
│ -r ピクセル比1:1で表示する │
│ -sN ワイプ表示の速度を指定する │
│ -t[f] 裏画面を確保できなければテキストVRAMを裏画面として使う│
│ fはテキストVRAMが使用中かどうかに関わらず強制的に使う │
│ -w ???.wl ワイプ表示を行う │
│ 裏画面にPICファイルを展開してワイプ表示する │
│ -y[R,G,B] パレットR,G,Bでクロマキー合成を行う │
│ PICファイルを展開してパレットPでない部分だけ表示する │
│ R,G,Bを省略したときは0,0,0でクロマキー合成を行う │
└──────────────────────────────────┘
キー入力を待つとき、ESC または BREAK で終了します。マウスやパッドのボ
タンも反応します。マウスの左ボタンは継続、右ボタンは終了、パッドの A ボ
タンは継続、B ボタンは終了です。
《省略形》
文法: pic の省略形
┌────────────────────────────
│> kt p [スイッチ] ファイル名
《説明》
32768 色専用の PIC ローダです(65536 色の PIC ファイルもロードできます
が、輝度ビットが復元されません)。
圧縮率の高い PIC ファイルを 68000 で表示する場合に特に高速に描画するよ
うに作ってあります。
Mitsuky 氏のワイプライブラリローダを搭載しています。ワイプライブラリを
使用することで、PIC ファイルを様々な方法(ワイプ)で表示できます。
例: ワイプ表示
┌────────────────────────────
│> kt p -lc -m -w iti16.wl -s2 -k *.pic
クロマキー合成が可能です。PIC ファイルのパレットコードが 0 以外の部分
だけ表示します。クロマキーのパレットコードは指定可能です。
例: クロマキー合成
┌────────────────────────────
│> kt p -y title.pic
ピクセル比が 1:1 の画像は自動的に画面モードを 1:1 に切り替えて表示しま
す。強制的に 1:1 で表示することもできます。
メモリが少ないとき、テキスト VRAM を使ってワイプロードやクロマキー合成
ができるようになっています。
《使用例》
例: *.pic を 1 枚ずつワイプ表示する
┌────────────────────────────
│> kt p -lc -m -w curtain.wl -s1 -k *.pic
━< power >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
フロントスイッチを制御します。
《文法》
文法: power
┌────────────────────────────
│> kt power [disable|enable|off]
《説明》
フロントスイッチ OFF による電源 OFF を禁止したり、許可したりします。
┌─────┬──────────────────────────┐
│パラメータ│ 機能 │
├─────┼──────────────────────────┤
│ disable │フロントスイッチ OFF による電源 OFF を禁止します │
│ enable │フロントスイッチ OFF による電源 OFF を許可します │
│ off │フロントスイッチが OFF のとき電源を OFF にします │
│ │(disable の状態で自動的に電源を切るために使います)│
│ 省略 │現在のフロントスイッチの状態を返します(0=ON,1=OFF)│
└─────┴──────────────────────────┘
《使用例》
例: フロントスイッチ OFF による電源 OFF を禁止します
┌────────────────────────────
│> kt power disable
│ktpower: フロントスイッチ OFF による電源 OFF を禁止しました
━< print >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《機能》
パラメータを式と見なして評価します。
《文法》
文法: print
┌────────────────────────────
│> kt print <文字列> [; [文字列] …]
《説明》
パラメータの式を評価して結果を表示します。
使用可能な演算子や関数については、後述の<式評価>の項目を参照して下さ
い。
パラメータを「;」で終了すると、改行しません。
calc と違い、文字列を "〜" で囲まずに表示します。
《使用例》
例: アドレス $0008 の内容を 16 進数 8 桁で表示します
┌────────────────────────────
│> kt print 'right$("0000000"+hex$([$0008]),8)
│02FF08EC
━< rand >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
乱数を返す。
《文法》
文法: rand
┌────────────────────────────
│> kt rand 数値 [環境変数名]
《説明》
0〜数値-1 の範囲の整数の乱数を生成し、環境変数に設定して、返します。
環境変数名を省略した場合は、環境変数 rand に設定します。
《使用例》
例: 0〜9 の乱数を返します
┌────────────────────────────
│> kt rand 10
│ktrand: 1
━< rc >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
実行ファイルを実行して、終了コードを表示します。
《文法》
文法: rc
┌────────────────────────────
│> kt rc <環境変数名> <実行ファイル名> [コマンドライン]
《説明》
実行ファイルを実行して、終了コードを表示し、環境変数に設定し、返します。
《使用例》
例: ドライブ A: のメディアバイトを環境変数 mb に設定します
┌────────────────────────────
│> kt .rc mb kt mediabyte A:
━< ready >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
指定されたドライブの準備ができるまで待ちます。
《文法》
文法: ready
┌────────────────────────────
│> kt ready ドライブ名|FDドライブ番号
《説明》
指定されたドライブにメディアが挿入されて準備ができるまで、LED を点滅し
て待ちます。
ESC キーで中止できます。
《終了コード》
中止した場合は 0 以外を返します。
《使用例》
例: フロッピードライブ 0 にディスクが挿入されるのを待ちます
┌────────────────────────────
│> kt ready 0
━< regular >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
ファイル名を正規化(フルパス化)します。
《文法》
文法: regular
┌────────────────────────────
│> kt regular <環境変数名> <ファイル名>
《説明》
ファイル名をフルパスにして環境変数に設定します。
《終了コード》
正常終了ならば 0、エラーならば 1 を返します。
《使用例》
例: ファイル名を正規化します
┌────────────────────────────
│> kt regular filename "text.doc"
━< rerr >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
エラー出力を標準出力に切り換えてから実行ファイルを実行します。
《文法》
文法: rerr
┌────────────────────────────
│> kt rerr <実行ファイル名> [コマンドライン]
《説明》
標準エラー出力を標準出力に切り換えてから実行ファイルを実行し、標準エラ
ー出力を元に戻します。
実行ファイルのエラー出力を標準出力と一緒にリダイレクトしたいときに使用
します。
《使用例》
例: *.bak を COMMAND.X で消去します。このとき、ファイルがなくて
もエラーメッセージが出ないようにします。
┌────────────────────────────
│> kt rerr command del *.bak /y > nul
━< reset >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
リセットします。
《文法》
文法: reset
┌────────────────────────────
│> kt reset
《説明》
ソフトウェアリセットを実行します。キーボードで CTRL+OPT.1+DEL を押した
場合と同じです。
《使用例》
例: リセットします
┌────────────────────────────
│> kt reset
━< right >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
文字列の右側を指定されたバイト数だけ切り出します。
《文法》
文法: right
┌────────────────────────────
│> kt right <環境変数名> <文字列> <切り出すバイト数>
《説明》
文字列の右側を指定されたバイト数だけ切り出して環境変数に設定します。
結果の文字列が 2 バイトコードの 2 バイト目で始まってしまうときは、その
バイトを ' ' に置き換えます。
《使用例》
例: 末尾の 1 バイトを切り取る
┌────────────────────────────
│> kt right char "abcde"
│ktright: e
━< screen >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
画面モードを変更します。
《文法》
文法: screen
┌────────────────────────────
│> kt screen <画面サイズ>,<実画面サイズと色モード>,<解像度>,<グラ
│フィックの有無>
《説明》
画面モードを変更します。パラメータはスペースではなくコンマで区切って下
さい。
各パラメータの意味は以下の通りです。
画面サイズの指定
0 256×256
1 512×512
2 768×512(デフォルト)
グラフィックの実画面サイズと色モード
0 1024×1024 16色×1枚(デフォルト)
1 512×512 16色×4枚
2 512×512 256色×2枚
3 512×512 65536色×1枚
解像度
0 低解像度
1 高解像度(デフォルト)
グラフィックの有無
0 グラフィック OFF(デフォルト)
1 グラフィック ON
テキスト画面はクリアされ、スプライトは非表示となります。カーソルとファ
ンクションキーの表示は ON になります。
グラフィック ON のとき、グラフィック画面は初期化されます。
《省略形》
省略形: screen
┌────────────────────────────
│> kt s <画面サイズ>,<実画面サイズと色モード>,<解像度>,<グラフィ
│ックの有無>
《使用例》
例: 256×256、65536色、高解像度、グラフィック ON にします
┌────────────────────────────
│> kt s 0,3,1,1
━< select >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
単語の検索。
《文法》
文法: select
┌────────────────────────────
│> kt select <環境変数名> <キーワード> <文字列1> <文字列2> …
《説明》
キーワード S を S1 以降から探して、何番目にあったかを環境変数に設定し
て返します。見つからなければ 0 になります。
《終了コード》
番号を返します。
《使用例》
例: プラットフォームが X68030 かどうか調べます
┌────────────────────────────
│> kt machine
│> kt select - X68030 %machine%
━< slash >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
文字列中の '/' をすべて '\' に置き換えます。
《文法》
文法: slash
┌────────────────────────────
│> kt slash <環境変数名> <文字列>
《説明》
文字列中の '/' をすべて '\' に置き換えます。ディレクトリの区切りをバッ
クスラッシュに統一したいときに使います。
《使用例》
例: 環境変数 filename の中の '/' を '\' に置き換えます
┌────────────────────────────
│> kt slash filename %filename%
━< speed >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
X68030 のシステムウェイトを設定します。
《文法》
文法: speed
┌────────────────────────────
│> kt speed <数値>
《説明》
数値を X68030 のシステムウェイトポートに設定します。15 で最低速、0 で
最高速になります。
システムウェイトはキャッシュを OFF にしなければ意味がありません。
X68000 では何もしません。
《使用例》
例: 10MHz 相当の動作速度にします
┌────────────────────────────
│> kt speed 10
━< spurious >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
スプリアス割り込みを潰します。
《文法》
文法: spurious
┌────────────────────────────
│> kt spurious
《説明》
クロックアップ機や X68030 以上のマシンで、音楽の演奏中などにエラー
$0018 の白窓で止まってしまわないようにします。
《使用例》
例: スプリアス割り込みによる白窓が出ないようにします。
┌────────────────────────────
│> kt spurious
━< vol >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
指定したドライブのボリュームラベルを取得します。
《文法》
文法: vol
┌────────────────────────────
│> kt vol [環境変数名 [ドライブ名]]
《説明》
指定したドライブのボリューム名を表示して環境変数に設定します。ボリュー
ム名がないときは、環境変数を削除します。
環境変数名を省略すると環境変数 vol に設定します。
ドライブ名を省略するとカレントドライブが対象になります。
《使用例》
例: ドライブ C: のボリューム名を取得します
┌────────────────────────────
│> kt vol C:
━< wait >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
指定された時間だけ待ちます。
《文法》
文法: wait
┌────────────────────────────
│> kt wait [時間(1/10秒単位)]
《説明》
指定された数値÷10 秒間だけ待ちます。
時間を省略したときは 1 秒待ちます。
《使用例》
例: 3 秒待ちます
┌────────────────────────────
│> kt wait 30
━< xellent >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
《説明》
Xellent30(s,PRO) の 030 モードかどうか調べます。
《文法》
文法: xellent
┌────────────────────────────
│> kt xellent
《説明》
Xellent30(s,PRO) の 030 モードかどうか調べて、結果を表示し、返します。
《終了コード》
Xellent30(s,PRO) の 030 モードならば 0、そうでなければ 65535 が返りま
す。
《使用例》
例: Xellent30 の 030 モードかどうか調べます
┌────────────────────────────
│> kt xellent
│ktxellent: Xellent30(s,PRO)の030モードではありません
━< エスケープシーケンス >━━━━━━━━━━━━━━━━━━━━━━
echo および pause で使用可能なエスケープシーケンスは以下の通りです。
┌───┬────────────────┐
│ 指定 │ 機能 │
├───┼────────────────┤
│ \a │ アラート │
│ \b │ バックスペース │
│ \t │ タブ │
│ \v │ カーソルを1行上へ移動 │
│ \f │ 改ページ │
│ \r │ カーソルを行の先頭へ移動 │
│ \n │ 改行 │
│ \x?? │ 文字コードを 16 進数で直接指定 │
└───┴────────────────┘
━< 式評価 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
kt では、calc または print コマンドで式評価を行うことができます。
kt における式の文法は、C の演算子と BASIC の文字列操作が混在したような
ものです。
環境変数を変数として使用できます。
例: 変数を使う
┌────────────────────────────
│> kt print x=2
│2
│> kt print y=3
│3
│> kt print z=x*y
│6
変数名以外は、大文字と小文字を区別しません。
●定数
┌─────┬─────────────────────┐
│ 種類 │ 表記 │
├─────┼─────────────────────┤
│ 10進数 │[0-9]*[.[0-9]*][[Ee]['+''-'][0-9]*] │
│ 16進数 │$[0-9A-Fa-f]+ │
│ 16進数 │0x[0-9A-Fa-f]+ │
│ 8進数 │0o[0-7]+ │
│ 2進数 │0b[01]+ │
│文字コード│'x'〜'xxxx' │
│ 文字列 │"〜" │
└─────┴─────────────────────┘
文字列と文字コードを記述するときは、それをさらに外側から異なるクォーテ
ーションで囲んで下さい。なお、一番外側のクォーテーションは閉じていなくて
も構いません。
例: '〜' の書き方に注意
┌────────────────────────────
│> kt print chr$('a')
│ktprint: 未定義の変数です
│chr$(a)
│ ^
│> kt print "chr$('a')
│a
●演算子
演算子は C とほとんど同じです。
┌────┬───────────────────┬────┐
│優先順位│ 演算子 │結合規則│
├────┼───────────────────┼────┤
│ 高 │++ -- 後置│左から右│
│ ├───────────────────┼────┤
│ │() [] 括弧・アドレス│左から右│
│ ├───────────────────┼────┤
│ │[] 文字オフセット│左から右│
│ ├───────────────────┼────┤
│ │** べき乗│右から左│
│ ├───────────────────┼────┤
│ │++ -- + - ! ~ 前置│右から左│
│ ├───────────────────┼────┤
│ │* / % 乗除・剰余│左から右│
│ ├───────────────────┼────┤
│ │+ - 加減│左から右│
│ ├───────────────────┼────┤
│ │<< >> シフト│左から右│
│ ├───────────────────┼────┤
│ │<= < >= > 非等値比較│左から右│
│ ├───────────────────┼────┤
│ │== != 等値比較│左から右│
│ ├───────────────────┼────┤
│ │& ビットAND│左から右│
│ ├───────────────────┼────┤
│ │^ ビットEOR│左から右│
│ ├───────────────────┼────┤
│ │| ビットOR│左から右│
│ ├───────────────────┼────┤
│ │&& 論理AND│左から右│
│ ├───────────────────┼────┤
│ │|| 論理OR│左から右│
│ ├───────────────────┼────┤
│ │?: 条件│右から左│
│ ├───────────────────┼────┤
│ │= += -= *= /= %= &= |= ^= <<= >>= 代入│右から左│
│ ├───────────────────┼────┤
│ 低 │, 逐次│左から右│
└────┴───────────────────┴────┘
追加した演算子だけ説明します。他の演算子の説明は C のリファレンスマニ
ュアルなどを参考にして下さい。
・アドレス演算子
指定されたアドレスから指定されたサイズのデータを読み出します。
[アドレス].サイズ
↑ ↑
この大括弧は省略を意味するものではなく、実際に記述します。
指定できるサイズは以下の通りです。
[アドレス].B 1 バイトの整数
[アドレス].W 1 ワードの整数
[アドレス].L 1 ロングワードの整数(符号つき)
[アドレス].F 4 バイトの浮動小数点数
[アドレス].D 8 バイトの浮動小数点数
サイズを省略すると、1 ロングワードの整数として取り出します。
例: アドレス 0 の内容をロングワードで表示します
┌────────────────────────────
│> kt print hex$([0])
│FF08EC
・べき乗演算子
X**Y は X の Y 乗を意味します。power(X,Y) と同じです。
例: べき乗演算子
┌────────────────────────────
│> kt print 2**3
│8
●関数
関数名は大文字と小文字を区別しません。
関数の一覧は、calc コマンドで表示できます。calc の説明を参照して下さい。
┌──────────────────────────────────┐
│abs(式) │
│ 式の値の絶対値を返す │
├──────────────────────────────────┤
│acos(式) │
│ 式の値のアークコサインを返す │
├──────────────────────────────────┤
│asc(文字列) │
│ 文字列の先頭の1バイトを返す │
│ NULLのときは0が返る │
├──────────────────────────────────┤
│ascchr$(文字列) │
│ 文字列を文字コード毎に16進数に変換して文字列を生成します │
│ hexchr$(文字列)の逆の動作をします │
├──────────────────────────────────┤
│asin(式) │
│ 式の値のアークサインを返す │
├──────────────────────────────────┤
│atan(式) │
│ 式の値のアークタンジェントを-π/2〜π/2の範囲で返す │
├──────────────────────────────────┤
│atan2(式1,式2) │
│ 式1の値/式2の値のアークタンジェントを-π〜πの範囲で返す │
│ atan2(0,0)はエラー │
├──────────────────────────────────┤
│bin$(式) │
│ 式の値を整数に変換した上で,2進数の文字列に変換します │
├──────────────────────────────────┤
│ceil(式) │
│ 式の値よりも小さくない最小の整数を返す │
├──────────────────────────────────┤
│chr$(式) │
│ 式をアスキーコードと見なして文字列に変換する │
├──────────────────────────────────┤
│cos(式) │
│ 式の値のコサインを返す │
├──────────────────────────────────┤
│cosh(式) │
│ 式の値のハイパボリックコサインを返す │
├──────────────────────────────────┤
│date() │
│ 現在の日付を(曜日<<28|西暦年<<16|月<<8|日)の形式で返す │
├──────────────────────────────────┤
│deg(式) │
│ 式の値をラジアン単位から度単位に変換する │
├──────────────────────────────────┤
│eval(文字列) │
│ 文字列を評価する │
├──────────────────────────────────┤
│exp(式) │
│ eの式の値乗を返す │
├──────────────────────────────────┤
│fix(式) │
│ 式の値の小数部分を切り捨てた値を返す │
├──────────────────────────────────┤
│floor(式) │
│ 式の値よりも大きくない最大の整数を返す │
│ int(式)と同じです │
├──────────────────────────────────┤
│frac(式) │
│ 式の値の小数部分を返す │
├──────────────────────────────────┤
│hex$(式) │
│ 式の値を整数に変換した上で,16進数の文字列に変換します │
├──────────────────────────────────┤
│hexchr$(文字列) │
│ 文字列を文字コードを表す16進数の並び見なして文字列を生成します│
│ 16進数を表す文字以外の文字はすべて無視します │
│ 16進数を表す文字が1桁余る場合はそれを無視します │
│ $00は無視します │
│ ascchr$(文字列)と逆の動作をします │
├──────────────────────────────────┤
│instr(文字列1,文字列2) │
│ 文字列1の中から文字列2を探して,その位置を返す │
│ 位置は文字列1の先頭を1とする │
│ 見つからなければ0が返る │
├──────────────────────────────────┤
│int(式) │
│ 式の値よりも大きくない最大の整数を返す │
│ floor(式)と同じです │
├──────────────────────────────────┤
│left$(文字列,式) │
│ 文字列の左から式の値のバイト数の文字列を返す │
│ 式の値が0ならばNULLが返る │
│ 式の値が文字列の長さを超えているときは文字列をそのまま返す │
│ 式の値が負数のときはエラー │
│ 結果の最後のバイトが2バイトコードの1バイト目のときもそのまま返│
│ す │
├──────────────────────────────────┤
│len(文字列) │
│ 文字列の長さ(バイト数を返す) │
│ NULLならば0が返る │
├──────────────────────────────────┤
│log(式) │
│ 式の値の自然対数を返す │
├──────────────────────────────────┤
│log10(式) │
│ 式の値の常用対数(10の対数)を返す │
├──────────────────────────────────┤
│log2(式) │
│ 式の値の2の対数を返す │
├──────────────────────────────────┤
│mid$(文字列,式1,式2) │
│ 文字列の左から式1の値の位置から式2のバイト数の文字列を返す │
│ 式2の値が0ならばNULLが返る │
│ 式1の値が文字列の長さを超えているときはNULLが返る │
│ 式2の値のバイト数を取り出せないときは文字列の末尾まで取り出す │
│ 式1の値が0以下のときはエラー │
│ 結果の先頭のバイトが2バイトコードの2バイト目のときもそのまま返│
│ す │
│ 結果の最後のバイトが2バイトコードの1バイト目のときもそのまま返│
│ す │
├──────────────────────────────────┤
│npi(式) │
│ πの値に式の値を掛けた結果を返す │
├──────────────────────────────────┤
│oct$(式) │
│ 式の値を整数に変換した上で,8進数の文字列に変換します │
├──────────────────────────────────┤
│pi() │
│ πの値を返す │
├──────────────────────────────────┤
│power(式1,式2) │
│ 式1の値の式2の値乗を返す │
├──────────────────────────────────┤
│rad(式) │
│ 式の値を度単位からラジアン単位に変換する │
│ 式の値にπ/180を掛ける │
├──────────────────────────────────┤
│rand() │
│ 0以上32767以下の整数の乱数を返す │
├──────────────────────────────────┤
│randomize(式) │
│ 式を整数に変換した上で,それをキーとしてrnd()の乱数系列を初期化│
│ する │
│ 0を返す │
├──────────────────────────────────┤
│right$(文字列,式) │
│ 文字列の右から式の値のバイト数の文字列を返す │
│ 式の値が0ならばNULLが返る │
│ 式の値が文字列の長さを超えているときは文字列をそのまま返す │
│ 式の値が負数のときはエラー │
│ 結果の先頭のバイトが2バイトコードの2バイト目のときもそのまま返│
│ す │
├──────────────────────────────────┤
│rnd() │
│ 0以上1未満の乱数を返す │
├──────────────────────────────────┤
│sgn(式) │
│ 式の値が0よりも大きければ1,0ならば0,0よりも小さければ-1を返す │
├──────────────────────────────────┤
│sin(式) │
│ 式の値のサインを返す │
├──────────────────────────────────┤
│sinh(式) │
│ 式の値のハイパボリックサインを返す │
├──────────────────────────────────┤
│sqr(式) │
│ 式の値の正の平方根を返す │
├──────────────────────────────────┤
│srand(式) │
│ 式を整数に変換した上で,それをキーとしてrand()の乱数系列を初期 │
│ 化する │
│ 0を返す │
├──────────────────────────────────┤
│str$(式) │
│ 式を10進数の文字列に変換する │
├──────────────────────────────────┤
│strchr(文字列,式) │
│ 文字列中で式の値のコードが最初に現れる位置を返します │
│ 結果の位置は,文字列の先頭を0としたオフセットです │
│ 見つからなければ-1が返ります │
│ 2バイトコードの2バイト目は回避します │
├──────────────────────────────────┤
│strlwr(文字列) │
│ 文字列を小文字化します │
│ 2バイトコードの2バイト目は回避します │
├──────────────────────────────────┤
│strrchr(文字列,式) │
│ 文字列中で式の値のコードが最後に現れる位置を返します │
│ 結果の位置は,文字列の先頭を0としたオフセットです │
│ 見つからなければ-1が返ります │
│ 文字列を小文字化します │
│ 2バイトコードの2バイト目は回避します │
├──────────────────────────────────┤
│strupr(文字列) │
│ 文字列を大文字化します │
│ 文字列を小文字化します │
│ 2バイトコードの2バイト目は回避します │
├──────────────────────────────────┤
│tan(式) │
│ 式の値のタンジェントを返す │
├──────────────────────────────────┤
│tanh(式) │
│ 式の値のハイパボリックタンジェントを返す │
├──────────────────────────────────┤
│time() │
│ 現在の時刻を(時<<16|分<<8|秒)の形式で返す │
├──────────────────────────────────┤
│val(文字列) │
│ 文字列を数値に変換する │
│ &H,&B,&Oを解釈する │
├──────────────────────────────────┤
│zenkaku(文字列) │
│ 文字列を全角に変換する │
└──────────────────────────────────┘
━< ライブラリの追加方法 >━━━━━━━━━━━━━━━━━━━━━━
エントリのラベルを外部定義にしたサブルーチンを用意して、Makefile の
「ライブラリのリスト」に追加して下さい。
━< コマンドの追加方法 >━━━━━━━━━━━━━━━━━━━━━━━
コマンドは一旦 ktcom.a というライブラリに組み込んでから kt に結合しま
す。
ktskelton.s を参照してコマンドのソースリストを記述して下さい。このスケ
ルトンをコピーして作ると楽に作れると思います。既成のコマンドも参考にしな
がら、プログラムがなるべく短くなるように記述して下さい。
作成したコマンドのオブジェクトファイル名を、Makefile の「コマンドのリ
スト」に追加します。これで ktcom.a に新しいコマンドが組み込まれるように
なります。
kt に組み込む場合は ktcoms.s に新しいコマンドエントリラベルを追加して
下さい。これも他のコマンドエントリラベルの行をコピーして書き替えれば済み
ます。
make で kt.x が生成されれば OK です。リンカが、必要なコマンドやライブ
ラリを ktcom.a と ktlib.a からかき集めてきてくれます。kt<CR> としてみて
新しいコマンドがコマンド一覧に出てくるかどうか確かめましょう。出てきたら、
「kt <コマンド名> 〜」でコマンドの機能を確かめます。正しく動作すれば完成
です。
━< コマンドの削除方法 >━━━━━━━━━━━━━━━━━━━━━━━
ktcoms.s から不要なコマンドの行を削除してから make し直すだけです。
━< 著作権について >━━━━━━━━━━━━━━━━━━━━━━━━━
TwentyOne のオプションチェッカ options.s は、Ext(T.Kawamoto) 氏によ
るものです。
ワイプローダ wl_load.s は Mitsuky 氏によるものです。
上記のファイルを除くすべてのソースリストの著作権は、作者(M.Kamada)が
保持しています。
━< 配布規定 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━
kt 一式はフリーウェアです。内容を変更しない限り、自由に配布して構いま
せん。ただし、配布する際に手数料を超える謝礼を得ることはできません。
内容を変更しても自由に配布できる範囲は、必要なコマンドだけをピックアッ
プする(ktcoms.s の変更)および再アセンブル・リンクによって生成された単
独コマンドまでとします。つまり、同人誌などで、必要なツールだけ組み込んだ
kt の実行ファイルのみを使用しても構いません。また、kt のライブラリを利用
して作られた単独コマンドの使用も自由です。
上記の範囲を超える場合(デバッグや機能を追加したとき)は、その旨と実行
ファイルの生成手順を明記したドキュメントを添付して下さい。また、可能なら
ば、作者宛に生成ファイル・配布物一式を送って下さい。
kt は正しく動作することを期待して作成しましたが、動作は保証できません。
━< 謝辞 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PIC 表示に多彩なバリエーションを与えるワイプライブラリを提供してくれた
Mitsuky 氏に感謝します。
以下のツールを使用して作りました。
HAS060 v3.09+59 by Y.Nakamura/M.Kamada
LK.X v3.00 SHARP/Hudson
しゃれまっくす rel.5c6 lika/homy/salt/peace/shuna/rima/sharl
━< 連絡先 >━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
バグ報告、質問、要望などは、作者まで、速やかにご連絡下さい。
Mankai Special X680x0 user's Net: MKSX0109:かまだ
(EOF)