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に配置されます。