Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>CASL II 実行トレースNew to Visual Studio Code? Get it now.
CASL II 実行トレース

CASL II 実行トレース

ao

| (0) | Free
CASL II の命令ごとの実行結果を表で確認する学習用プロトタイプ
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

CASL II 実行トレース

命令を実行するたびに、ソース行・レジスタ・フラグ・メモリーアクセスを表に記録するVS Code拡張の初期版です。 設計は 仕様書 を参照してください。

起動

VSIXからインストール

VS Codeの拡張機能ビューの「…」から「VSIXからのインストール…」を選び、casl2-trace-0.1.10.vsixを指定します。 インストール後に.casファイルを開き、「CASL II: 実行結果を表で表示」を実行してください。 識別子はao81.casl2-traceです。0.1.9以前(識別子assembly-local.casl2-trace)を入れている場合は、別の拡張機能として扱われるため、先に古い方をアンインストールしてください。

開発用の起動

  1. VS Codeでこの extension フォルダーを開く。
  2. F5で「CASL II 拡張の開発」を開始する。
  3. 新しく開いた拡張開発ホストで sum.cas または overflow.cas を開く。
  4. エディター右上の実行ボタン、またはコマンドパレットの「CASL II: 実行結果を表で表示」を実行する。

デスクトップの開発用起動にはビルドは不要です。Web版とVSIXの作成には pnpm install --frozen-lockfile を実行してください。起動設定はextensionフォルダーを開くことを前提にしています。 未保存の編集内容も実行対象です。入力はローカルで処理し、外部サイトに送信しません。

表の読み方

  • 1行が1命令の実行。ループでは同じソース行が繰り返し現れます。
  • PRは実行した命令のアドレス、その他の状態は実行後の値です。
  • 二重下線が更新、点線が参照。両方なら更新表示になります。ツールチップでも確認できます。
  • メモリー欄には読出し、または書込み前→後を表示します。
  • 値は符号付き10進数で表示し、16進数/2進数に切り替えられます。アドレスは16進数のままです。
  • 横スクロールで全列を確認できます。結果は実行時点の記録です。

対応範囲

単一のSTART~END、ラベル(英大文字で始まる英大文字・数字8文字以内)、整数DC、DS、数値リテラル。 LAD、LD、ST、ADDA、ADDL、SUBA、SUBL、AND、OR、XOR、CPA、CPL、JMI、JNZ、JZE、JUMP、JPL、JOV、NOP、最上位RET。 命令・ラベル・レジスタ名は大文字で入力してください。

現時点ではOUT、文字列DC、シフト、CALL、スタック命令、IN以外のマクロ、SVC、複数プログラム、ステップ操作、ブレークポイントは未対応です。 対応外の命令は行エラーにします。全CASL II仕様への適合を保証する完成版ではありません。 汎用レジスタ・FR・メモリーは0初期化、SPは0000、ロード先頭は1000です(この環境独自の初期化規約)。 自己書換え命令は検出して停止します。最大2,000命令で停止し、上限到達と正常終了を区別します。

開発・検証

Node.jsで node --test test/*.test.js を実行します。 node scripts/preview.js で実際のtrace-variables.casの実行結果を使った preview.html を生成できます。 プレビューはVS Codeと同じ描画処理を使いますが、拡張ホストの動作確認の代わりにはなりません。

  • src/core.js: アセンブル、命令実行、履歴データ
  • src/render.js: Webview用の表の描画
  • src/extension.js: VS Codeコマンドと診断
  • test/: 算術、フラグ、分岐、エラー、描画の検証

初期版は追加依存なしのJavaScriptで構成しています。機能拡充時にTypeScriptへ移行可能です。 VSIXの再作成にはNode.jsとpnpmを用意し、pnpm install --frozen-lockfile、pnpm run packageを実行します。 @vscode/vsceはパッケージ作成専用の開発依存で、拡張の動作時には不要です。 改行はCRLFで統一します。

0.1.1の表示変更

  • 画面上部の説明を省き、結果表を広く表示。
  • 実行中に参照・更新されなかったGR列は非表示。
  • DC/DSのデータラベルを変数表に表示(アドレス・語数・初期値・終了時の値)。
  • 変数表と9語以上の配列は折り畳み可能。SPの初期値は0000。

列揃え(0.1.2)

.casファイルで Shift+Alt+F(ドキュメントのフォーマット)、または右クリック/コマンドパレットの「CASL II: 列を揃える」を実行します。 ラベル・命令・オペランド・行末コメントを空白で整列します。標準の開始位置は1・9・17・41列目で、長い項目に合わせて後続の列を広げます。 文字列内の空白・引用符・セミコロン、コメント、空行は保持します。解釈できない行は変更しません。改行はCRLFです。 保存時にも整形したい場合は、VS CodeのCASL II用設定でフォーマッターにao81.casl2-traceを選び、Format On Saveを有効にしてください。

IN(0.1.3)

IN BUF,LENに到達すると入力欄が開きます。Enterで確定、空欄のEnterは0文字、Escは実行中止です。入力欄の停止アイコンでEOFを渡すと、LENにFFFF(-1)を格納します。 BUFに256語、LENに1語の重複しない領域を確保してください。例はexamples/input.casです。 半角英数字・記号・半角カナを入力できます。1文字を1語の下位8ビットに格納し、256文字以降は無視します。入力されなかった領域は保持します。数字も文字として入り、自動で数値には変換しません。 GRとSPは保持し、FRはこの環境の規約として0にします(CASL IIの仕様ではIN後のFRは不定)。 履歴はINマクロ全体で1行です。この初期版では専用SVCサービス(FFF0)とアセンブル時の入力先情報で処理するため、機械語単体の外部処理系への移植は対象外です。一般のSVC命令は未対応です。

負数(0.1.4)

LAD GR1,-3でGR1に-3、LAD GR1,-1,GR1でGR1を1減らせます。 DC -3、LD GR1,=-3も使用できます。既定の10進数表示では-3、16進数に切り替えるとFFFDです。 負のアドレス定数はこの環境の拡張として16ビットの2の補数に変換します。範囲は-32768~65535、指標修飾後のアドレスは下位16ビットを使います。 LD GR1,-3はFFFD番地のメモリーを読みます。値-3を読み込む場合はLD GR1,=-3です。 INに入力した-3は2文字の文字列として格納します。数値への変換処理はプログラム側で行います。 例: examples/negative.cas。

変数の追跡(0.1.8)

命令の右にA・B・TOTALなど複数変数を並べ、実行後の値を表示します。書込みがあるセルだけ「前 → 後」を強調し、保持された値は控えめに表示します。同値を書いた場合も書込みとして示します。

  • 初回は先頭8変数を自動表示(配列は要素0)。「変数・配列を追加」で最大12列まで追加できます。
  • 列名の×で外します。同じ配列の複数要素も同時に追跡できます。
  • 「変数を更新した命令」で書込み行だけを表示。「次の更新」「前の更新」で表示中の変数が更新される行に移動します。
  • 行を選ぶと下部に、その時点の表示変数の値をまとめて表示します。矢印ボタンや履歴内の上下キーで前後に移動できます。
  • 下部の「配列・変数の詳細」で変数を選び、要素をクリックすると列に追加できます。32語ずつのページ表示です。
  • GRは初期表示。PR・FR・SP・メモリーはチェックで表示できます。使われなかったGRは表示しません。
  • 横スクロール時もステップ番号と命令は固定します。
  • 「更新」で再実行しても、表示変数・数値形式・絞り込み・列の表示設定は保持します。履歴選択は初期状態に戻し、削除・縮小された変数の無効な列は除きます。

履歴の閲覧はプログラムを再実行しません。サンプルexamples/trace-variables.casで、Aの3→2→1→0とTOTALの0→3→5→6を比較できます。

結果画面から更新(0.1.7)

結果画面上部の「更新」で、元の.casファイルの最新内容を再実行します。未保存の編集も対象です。別のエディターを開いていても元のファイルを使い、同じ結果画面を置き換えます。履歴の選択は初期状態に戻ります。INには再度入力します。更新に失敗した場合は前回結果を保持し、その旨とエラーを表示します。実行中の重複実行は抑止します。HTMLプレビューでは更新ボタンは無効です。

publisher変更(0.1.10)

Marketplaceへ公開するため、publisherをassembly-localからao81に変更しました。拡張機能の識別子はao81.casl2-traceになります。 動作は0.1.9と同じです。フォーマッター設定などで旧識別子を指定している場合は、新しい識別子に設定し直してください。

Web対応(0.1.9)

デスクトップ用の main とWeb用の browser を同じVSIXに収録します。 Web版は外部サーバーでCASL IIを実行せず、ブラウザ内で実行・入力・整形・履歴表示を処理します。

  • pnpm run build:web: Web用コードを dist/web/extension.js にバンドル。
  • pnpm test: Webバンドルを作成し、既存テストとNode.js APIを利用できない環境を模したWeb実行テストを実行。
  • pnpm run package: デスクトップ/Web共通のVSIXを作成(Webビルドを自動実行)。

vscode.devでの開発用導入は、公式のWeb拡張手順に従い、ビルド済みextensionフォルダーをHTTPS・CORS対応サーバーで配信して、コマンドパレットの Developer: Install Extension From Location... にURLを指定します。 https://code.visualstudio.com/api/extension-guides/web-extensions#test-your-web-extension-in-vscodedev Marketplaceには未公開です。GitHub ReleaseへのVSIX追加だけでMarketplace検索に表示されるわけではありません。

mainにこのバージョンをプッシュすると、GitHub Actionsがテストとパッケージ作成後、v<package.jsonのversion> Releaseを作成し、VSIXを添付します。同じバージョンのReleaseが既にある場合は何もしません。リリース作成者はGitHub Actionsです。

vscode.devでの導入制限(2026-10-09確認)

実際のvscode.devで「Developer: Install Extension From Location...」を試したところ、 GitHub RawのURLからの導入に失敗しました。コンソールにはmanifest取得のFailed to fetchが記録され、 ページのContent-Security-Policyのconnect-srcにはraw.githubusercontent.comとcdn.jsdelivr.netが含まれていませんでした。 配信元のHTTP 200とCORS許可だけでは導入できません。 以前ここで案内していたjsDelivr/GitHub RawのURLは、通常のvscode.dev向けの導入手順として使用しないでください。 同じ画面のコマンドパレットではVSIXのインストールコマンドも見つかりませんでした。

Web用バンドルは作成済みですが、通常のvscode.devへの導入・実行成功は未確認です。 通常配布にはVisual Studio MarketplaceへのWeb拡張公開が必要です(現在未公開)。 拡張のpublisherはao81です(0.1.10でassembly-localから変更)。Marketplaceのpublisher IDとpackage.jsonのpublisherが一致していないとアップロードできません。 公式のlocalhostからの開発用導入は別途ローカルHTTPSサーバーが必要であり、ブラウザだけで完結する手順ではありません。

ビルド済みファイルは残してあります。Web版更新時には pnpm run build:web を実行し、 git add -f dist/web/extension.js で生成物もコミットしてください。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft