スウィート16

インタープリタ型バイトコード命令セット

SWEET16は、スティーブ・ウォズニアックによって発明され、 Apple IIコンピュータのInteger BASIC ROMの一部として実装された、インタープリタ型 バイトコード命令セットです。ウォズニアックは16ビットのポインタデータを操作する必要があり、Apple IIは8ビットコンピュータであった ため、SWEET16は開発されました。 [1]

SWEET16はBASICのコアコードでは使用されませんでしたが、後にいくつかのユーティリティの実装に使用されました。中でも注目すべきは行番号再設定ルーチンで、Programmer's Aid #1 ROMに収録され、後期のApple IIモデルにも追加され、初期のサンプルプログラムにもユーザーがインストールできるようになりました。[2]

SWEET16コードは、 R0からR15までの内部16ビットリトルエンディアンレジスタを持つ16ビットプロセッサ上で実行されているかのように実行されます。一部のレジスタは明確に定義された機能を持ちます。[1]

16個の仮想レジスタ(合計32バイト)は、Apple IIの実際の物理メモリマップのゼロページ( $00$1F)に配置され、値は下位バイト、上位バイトの順に格納されます。[1] SWEET16インタープリタ自体は、Integer BASIC ROMの$F689から$F7FCに配置されています

ウォズニアック氏によると、SWEET16の実装はメモリ使用量が約300バイトと非常に少ない、省力コーディングの好例である。SWEET16は、同等のネイティブ6502コードと比較して約10分の1の速度で動作するが、Integer BASICと比べて約20%のサイズ削減に成功した。[3]

オペレーター

レジスタオペレーション 非登録オペレーション
00 RTN 6502モードに戻る
1n セット Rn 定数セット 01 BR ea ブランチは常に
2n LD Rn 負荷 02 BNC 各 キャリーなしの場合の分岐
3n ST Rn 03 紀元前 キャリーの場合の分岐
4n LD @Rn 間接的にロード 04 BP ea プラスの場合に分岐
5n ST @Rn 間接的に保管する 05 BM ea マイナスの場合に分岐
6n LDD @Rn ダブルバイト間接ロード 06 BZ ea ゼロの場合に分岐
7n STD @Rn 2バイト間接保存 07 BNZ ea 非ゼロの場合に分岐
8n ポップ @Rn ポップ間接 08 BM1個 マイナス1の場合に分岐
9n STP @Rn ストアポップ間接 09 BNM1個 マイナス1でない場合は分岐
アン 追加 Rn 追加 0A BK 壊す
Bn サブ Rn 減算 0B RS サブルーチンからの戻り
CN POPD @Rn 2バイト間接ポップ 0℃ BS ea サブルーチンへの分岐
ダウン CPR 看護師 比較する 0D 未割り当て
エン INR Rn インクリメント 0E 未割り当て
ファンクション DCR Rn デクリメント 0F 未割り当て

参考文献

  1. ^ abc Wozniak, Stephen (1977年11月). 「SWEET16: The 6502 Dream Machine」. Byte . 2011年1月5日閲覧
  2. ^ Apple Programmers Aid (PDF) . Apple. 1978年。
  3. ^ Wozniak, Stephen (1977年5月). 「The Apple II」(PDF) . Byte . 2012年5月18日閲覧
「https://en.wikipedia.org/w/index.php?title=SWEET16&oldid=1287301666」より取得