| CART | アドレス | RAM | ROM | I/O |
|---|---|---|---|---|
| 0000-0FFF | RAM | |||
| 1000-1FFF | RAM | |||
| 2000-2FFF | ||||
| 3000-3FFF | ||||
| 4000-4FFF | ||||
| 5000-5FFF | ||||
| 6000-6FFF | ||||
| 7000-7FFF | ||||
| CART ROM HI | 8000-8FFF | RAM | ||
| 9000-9FFF | ||||
| CART ROM HI | A000-AFFF | RAM | BASIC ROM | |
| B000-BFFF | ||||
| C000-CFFF | RAM | |||
| D000-DFFF | RAM | CHAR ROM | I/O | |
| CART ROM LO | E000-EFFF | RAM | KERNAL ROM | |
| F000-FFFF |
| アドレス | I/O |
|---|---|
| D000-D0FF | VICU |
| D100-D1FF | |
| D200-D2FF | |
| D300-D3FF | |
| D400-D4FF | SID |
| D500-D5FF | |
| D600-D6FF | |
| D700-D7FF | |
| D800-D8FF | COLOR RAM |
| D900-D9FF | |
| DA00-DAFF | |
| DB00-DBFF | |
| DC00-DCFF | CIA 1 |
| DD00-DDFF | CIA 2 |
| DE00-DEFF | I/O 1 |
| DF00-DFFF | I/O 2 |
カートリッジROMを接続した場合、最大3つのアドレス可能な場所に配置できます。
ただし、常に2つの8KBバンクしか認識しません。
BASICプログラムは$0800〜&9FFFのRAM領域に記憶配置されます。
| アドレス(Hex) | アドレス(Dec) | ページ | 内容 |
|---|---|---|---|
| $0000-$00FF | 0-255 | Page 0 | ゼロページ |
| $0100-$01FF | 256-511 | Page 1 | 拡張ゼロページに(スタックが含まれています) |
| $0200-$02FF | 512-767 | Page 2 | オペレーティング システムとBASICポインター |
| $0300-$03FF | 768-1023 | Page 3 | オペレーティング システムとBASICポインター |
| $0400-$07FF | 1024-2047 | Page 4-7 | スクリーン画面メモリ |
| $0800-$9FFF | 2048-40959 | Page 8-159 | BasicプログラムのRAM領域(38911 bytes) |
| $A000-$BFFF | 40960-49151 | Page 160-191 | マシン語プログラムのRAM領域(ROM切り替え時) |
| $C000-$CFFF | 49152-53247 | Page 192-207 | マシン語プログラムのRAM領域 |
| $D000-$D3FF | 53248-54271 | Page 208-211 | |
| $D400-$D7FF | 54272-54527 | Page 212-215 | |
| $D800-$DBFF | 55296-56319 | Page 216-219 | |
| $DC00-$DCFF | 56320-56575 | Page 220 | |
| $DD00-$DDFF | 56576-56831 | Page 221 | |
| $DE00-$DFFF | 56832-57343 | Page 222-223 | インターフェイス拡張用に予約済み |
| $E000-$FFFF | 57344-65535 | Page 224-255 | マシン語プログラムのRAM領域(ROM切り替え時) |
| アドレス(Hex) | アドレス(Dec) | ページ | 内容 |
|---|---|---|---|
| $8000-$9FFF | 32768-40959 | Page 128-159 | カートリッジ ROM (low) |
| $A000-$BFFF | 40960-49151 | Page 160-191 | BASICインタープリタROMまたはカートリッジ ROM(high) |
| $D000-$DFFF | 53248-57343 | Page 208-223 | キャラクタージェネレータROM |
| $E000-$FFFF | 57344-65535 | Page 224-255 | カーネルまたはカートリッジ ROM(high) |
| アドレス(Hex) | アドレス(Dec) | ページ | 内容 |
|---|---|---|---|
| $0000-$0001 | 0-1 | CPU I/O port(ゼロページ) | |
| $D000-$D3FF | 53248-54271 | Page 208-211 | VIC-IIレジスタ |
| $D400-$D7FF | 54272-55295 | Page 212-215 | SIDレジスタ |
| $D800-$DBFF | 55296-56319 | Page 216-219 | Color RAM |
| $DC00-$DCFF | 56320-56575 | Page 220 | CIA 1 |
| $DD00-$DDFF | 56576-56831 | Page 221 | CIA 2 |
| $DE00-$DEFF | 56832-57087 | Page 222 | I/O 1 |
| $DF00-$DFFF | 57088-57343 | Page 223 | I/O 2 |
| color | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ | ■■■ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| name | 黒 | 白 | 赤 | シアン | パープル | 緑 | 青 | 黄 | 橙 | 茶 | 明赤 | 濃灰 | 灰色 | 明緑 | 水色 | 明灰 |
| poke | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
BASIC-command POKE を使用して色を変更できるアドレスマップ
| アドレス(Hex) | アドレス(Dec) | 内容 |
|---|---|---|
| $0286 | 646 | テキストの色 |
| $0287 | 647 | カーソル位置下のカラー |
| $D020 | 53280 | 画面枠の色 (0~15 の色の値、数値が大きいほど繰り返し表示されます) |
| $D021 | 53281 | 画面背景の色 (通常モード) |
| $D022 | 53282 | 画面背景の色 1 (マルチカラー &拡張カラーモードで使用)) |
| $D023 | 53283 | 画面背景の色 2 (マルチカラー &拡張カラーモードで使用)) |
| $D024 | 53284 | 画面背景の色 3 (拡張カラーモード)) |
| $D025 | 53285 | スプライトマルチカラー1(マルチカラーモードのみ)) |
| $D026 | 53286 | スプライトマルチカラー2(マルチカラーモードのみ) |
| $D027 | 53287 | スプライトの色 0 |
| $D028 | 53288 | スプライトの色 1 |
| $D029 | 53289 | スプライトの色 2 |
| $D02A | 53290 | スプライトの色 3 |
| $D02B | 53291 | スプライトの色 4 |
| $D02C | 53292 | スプライトの色 5 |
| $D02D | 53293 | スプライトの色 6 |
| $D02E | 53294 | スプライトの色 7 |
| $D800-$DBE7 | 55296-56295 | 任意の画面座標を指定して色変更(*) |
(*)画面マトリックス内のすべての1000文字(25行、40列)の個々の色を制御できます。
次の使用例は、左上隅(0行、0列)の文字を白色で設定します。
POKE 55296,1
BASICコマンドPOKEを使用すると、256文字をビデオ マトリックスに配置できます。
次の使用例は、char A を左上隅(0行、0列)に表示します。
POKE 1024,1
| アドレス(Hex) | アドレス(Dec) | 内容 |
|---|---|---|
| Screen RAM | ||
| $0400-$07E7 | 1024-2023 | 任意の画面座標を指定して文字表示 |
| $07E8-$07F7 | 2024-2039 | 未使用 |
| Sprite block register | ||
| $07F8 | 2040 | メモリブロック内のスプライト1のポインタ: Blockno.*64 |
| $07F9 | 2041 | メモリブロック内のスプライト2のポインタ: Blockno.*64 |
| $07FA | 2042 | メモリブロック内のスプライト3のポインタ: Blockno.*64 |
| $07FB | 2043 | メモリブロック内のスプライト4のポインタ: Blockno.*64 |
| $07FC | 2044 | メモリブロック内のスプライト5のポインタ: Blockno.*64 |
| $07FD | 2045 | メモリブロック内のスプライト6のポインタ: Blockno.*64 |
| $07FE | 2046 | メモリブロック内のスプライト7のポインタ: Blockno.*64 |
| $07FF | 2047 | メモリブロック内のスプライト8のポインタ: Blockno.*64 |
データセットI/Oバッファのスプライト1 $033C
Blockno.=13(13*64=832、16進数:$0340)
8bitの各桁でON(1)、OFF(0)を設定
| 種類 | Hex | Dec |
|---|---|---|
| 表示ON・OFF | $D015 | 53269 |
| X方向伸縮 | $D01D | 53277 |
| Y方向伸縮 | $D017 | 53271 |
| BG優先度 | $D01B | 53275 |
| 衝突判定 | $D01E | 53278 |
| No | Hex | Dec |
|---|---|---|
| #0 | $07F8 | 2040 |
| #1 | $07F9 | 2041 |
| #2 | $07FA | 2042 |
| #3 | $07FB | 2043 |
| #4 | $07FC | 2044 |
| #5 | $07FD | 2045 |
| #6 | $07FE | 2046 |
| #7 | $07FF | 2047 |
| No | X | Y | ||
|---|---|---|---|---|
| Hex | Dec | Hec | Dec | |
| #0 | $D000 | 53248 | $D001 | 53249 |
| #1 | $D002 | 53250 | $D003 | 53251 |
| #2 | $D004 | 53252 | $D005 | 53253 |
| #3 | $D006 | 53254 | $D007 | 53255 |
| #4 | $D008 | 53256 | $D009 | 53257 |
| #5 | $D00A | 53258 | $D00B | 53259 |
| #6 | $D00C | 53260 | $D00D | 53261 |
| #7 | $D00E | 53262 | $D00F | 53263 |
接続されたジョイスティックは、以下のアドレスで読み取ります。
| ポジション | Fireボタン押してない | Fireボタン押した | ||
|---|---|---|---|---|
| Dec | Bit | Dec | Bit | |
| 真ん中 | 255 | %11111111 | 239 | %11101111 |
| 上 | 254 | %11111110 | 238 | %11101110 |
| 下 | 253 | %11111101 | 237 | %11101101 |
| 左 | 251 | %11111011 | 235 | %11101011 |
| 右 | 247 | %11110111 | 231 | %11100111 |
| 左上 | 250 | %11111010 | 234 | %11101010 |
| 右上 | 247 | %11110111 | 230 | %11100110 |
| 左下 | 249 | %11111001 | 233 | %11101001 |
| 右下 | 245 | %11110101 | 229 | %11100101 |
| ポジション | Fireボタン押してない | Fireボタン押した | ||
|---|---|---|---|---|
| Dec | Bit | Dec | Bit | |
| 真ん中 | 127 | %01111111 | 111 | %01101111 |
| 上 | 126 | %01111110 | 110 | %01101110 |
| 下 | 125 | %01111101 | 109 | %01101101 |
| 左 | 123 | %01111011 | 107 | %01101011 |
| 右 | 119 | %01110111 | 103 | %01100111 |
| 左上 | 122 | %01111010 | 106 | %01101010 |
| 右上 | 118 | %01110110 | 102 | %01100110 |
| 左下 | 121 | %01111001 | 105 | %01101001 |
| 右下 | 117 | %01110101 | 101 | %01100101 |
「左矢印キー」を押してから次のコマンドを押す事によって呼び出される。
「左矢印キー」はUS配列キーボードでの一番左上の「`」になる。
| コマンド | 機能 |
|---|---|
| 1 | basicへ戻る |
| 2 | 区切り行を挿入します |
| 3 | Assemble |
| 4 | 印刷 (? - print, name - to file, ' - To Screen) |
| 5 | オブジェクトファイルの作成 (assemble to disk) |
| 6 | メモリの一部をデータとして入力します-バイナリデータを.byteとしてインポートします |
| 7 | タブを設定(戻り後のカーソル位置) |
| 8 | ニーモニック列の位置 |
| c | コールドスタート(Like "NEW" in basic) |
| Return | 行を挿入します (undo "=") |
| DEL | 行を削除 |
| Arrow up | 行をラインバッファに入れます |
| \ | バッファを貼り付けます(「Arrow up」を参照) |
| / | カーソル位置の後ろ、行の残りの部分のデータを削除します。 |
| INST | ラインインサートのオン/オフ |
| q | 左端にカーソルを置きます-特にFキーマクロに適しています! |
| = | Join lines (Hard to explain! Try!) |
| l | PRG形式でファイルをロードします |
| s | PRG形式でファイルを保存 |
| e | SEQファイルを入力(ロード) |
| w | SEQファイルとして書き込む(保存) |
| * | Directory |
| @ | ディスク情報 |
| L | アドレスへデータをロードします(ファイルのデフォルトアドレスで質問のロード時に戻ります) |
| p | ファイルを保護します |
| + | 加算ルーチン |
| - | 減算ルーチン |
| : | List マーク |
| ; | Kill マーク |
| m | マークを設定します(0〜9-ブックマーク、S-ブロックの開始、E-ブロックの終了) |
| g | cマーク(「m」を参照) |
| a | 制御コードを入力します(「右矢印キー」で中止) |
| b | ブロックコマンド(最初に「m」コマンドでブロックを定義する必要があります)。 |
| ここから、以前に定義したセクションをコピー、ディスクへの書き込み、強制終了、または保存できます。 | |
| u | ラベルの一覧表示(?-プリンタへ、Name-ディスクへ、 '-画面へ) |
| v | メモリマップ |
| i | メモリを初期化します (Zero fill unused) |
| F | メモリーを埋める(範囲を指定) |
| j | 16進ダンプで指定されたメモリ領域 |
| S | アドレスにデータを保存 |
| f | 検索:...(「h」を参照) |
| h | 次をハント(「f」で定義) |
| r | 文字の置き換え(Replace: ... By: ... Finds the first occurrence (「t」および「y」を参照) |
| t | 最初の置換を実行します(「r」を参照) |
| y | 全ての置換を実行します。(「r」を参照) |
| n | ソースの指定された行に移動します |
| d | 制御コード |
| <- | 「左矢印キー」を挿入するには、「左矢印キー」を2回押す |
| k | F3-F6を再定義します(再定義するキーが続きます) |
| F1 | Fキーのリセット(「k」の編集を元に戻す) |
| o | 画面の色変更 |
| K | キークリックのオン/オフ |
| コマンド | 機能 |
|---|---|
| F1 | 1画面上へ移動(PAGE UP) |
| F2 | 一番トップ画面へ移動(HOME) |
| F3 | .WORD / .TEXT / DIR |
| F4 | Assemble開始 |
| F5 | .BYTE |
| F6 | 現在の行を削除する |
| F7 | 1画面下へ移動(PAGE DOWN) |
| F8 | 一番最後の画面へ移動(END) |
| Inst | 挿入モードのオン/オフ |
.BYTE
.BYTE "p", $ab,%100011001,49,&19
データを入力します。
引用符(1文字)内、16進数($ E0)、2進数(%10001110)、10進数(45)、または8進数(&34)のいずれかです。
数字はコンマで区切ります。
.WORD
.WORD label, $1000, label+$f8/2, *-9
通常の6502/6510の方法、つまりローバイト、ハイバイトで16ビット/ 2バイトアドレスを入力します。
*
* = $XXXX
XXXXはここからあなたのコードの始まりです。
何度でも使用できますが、ディスク("5" assemble to disk)にassembleするときは注意。
.TEXT
.TEXT "Some text"
ASCII形式でテキストを入力します。
ポークコードを入力する明確な方法はないことに注意してください。
ただし、この目的のために、私は独自の方法をお勧めします。
AND #$3F または :
;
; <Comment>
セミコロンの後にコメントを入力します。
.OFFS
.OFFS XXXX
これは、コードを再配置するタフなものです。
.OFFSの値は、* =値に追加された値です。
例)
「*=$ 1000」の後に、OFFS $0800が続くと、コードは$1800になり、.OFFS $F800は$0800になります。
ドライブコードのようなものを挿入することは、それが少し理解しやすくなったとしても、この機能のおかげで喜びです。
それを機能させる秘訣はこのコードであるため、これも機能します
*=$1000 label1 *=$0400 ;Start for f.ex. drive code .OFFS 0-(*-label1) label2 LDA label2
ラベルは次のように初期化されます。
Label1 =$1000 Label2 =$0400
コードLDA $0400は、メモリの$1000に配置されます。