CreatiVision (クリエイトビジョン)(注)回路図は参考程度にして下さい。
CreatiVisionのスペック
MPU | 6502 2MHz |
VDP | TMS9918A |
PSG | SN76489 |
ROM | 2KB(拡張可) |
RAM | 1KB(拡張可) |
V-RAM | 16KB |
6502を使ったゲームパソコン、キーボードが縦真中で2つに分かれ、
それがゲーム用パッドになる
オプションのBASIC Ver1.0は
当時のクラスのマシン(SC−3000、ぴゅう太、M5等)に比較にならない
遅さと値段の高さを誇る
(ついでに本体の基板のつくりの酷さもスゴイもののノイズ対策はしっかりしている)
シールドがハンダづけで固定されているのでメンテナンス性はゼロ、
ところどころにパターンカットやジャンパがあり
多少の仕様変更があった模様
本体パッケージにはスクリーンスコア表示、幅広いバリエーション、鮮明で緻密なTV画面、
シュミレイションサウンド
とよく分からない事が書かれているのも愛嬌(シュミレイション?)
また、カタログのBASICはVer1−1になっているところをみると
2つのバージョンが存在する?
ハード自体はシンプルで拡張もそれなりに用意されている
MPU周り
MPUは6502 クロックは2MHz
BIOSはカートリッジの端子をショートして使用許可しています。
/CS0=$0***
/CS1=$4***
/CS2=$8***
/CS3=$C***
メモリ
本体内には2KBのマスクROM(BIOS)と
1K*4BitのSRAMが2つ内蔵されています
BIOSは切り離す事も可能です。
TMM334P:CRC=c3c590c6
PIA HD468B21
キーボード、PSG、拡張端子はPIAで制御されます
PAでキーボード(コントローラ)、拡張端子の選択、
CBでPSGの選択、PBがデータの出力
拡張端子はCMTが繋がります
E−2 PA7 READ/WRITE
E−4 PA5 ???REMOTE
E−5 PA4 ???REMOTE
VDP TMS9918A
今回クロック回路は省いていますが10.738MHzです
VSYNC割り込みはIRQになります
コネクタ
カートリッジコネクタです
A1が左上になりB18が右下になります
通常のゲームだとBIOSも使用する為
/CS3と/CS SROMがショートされます
/CS 0が出ているので回路によっては
メモリやI/Oポートととして使用可能です
CK2OUTは2MHzです
ゲームカセット
クレージチキンのROMカセットです
基板はもう一つROMが載せられる様に設計されています
/CS3と/CS SROMがショートしているので
本体内のBIOSを使用しています
BIOSはカートリッジの有無問わず
$BFFCにジャンプします
BIOSで$BF00〜$BFFFを使用
メモリ マップ
各トーン部分は各ミラーイメージになります
BASICプログラムはVRAMに格納
$0000〜$0FFF:/CS0領域 本体内RAM 1KB($0000〜$03FF)
$1000〜$1FFF:I/Oポート PIA HD468B21P
$2000〜$2FFF:I/Oポート TMS9918Aリード
$3000〜$3FFF:I/Oポート TMS9918Aライト
$4000〜$7FFF:/CS1領域
$8000〜$BFFF:/CS2領域 カードリッジ
$C000〜$FFFF:/CS3領域 本体内BIOS 2KB($F800〜$FFFF)
<拡張I/Oポート>
$E800 :拡張I/Oポート プリンタ データ
$E801 :拡張I/Oポート プリンタ コントロール
d7 入力 ???READY
d3 出力 ???STROBE
<ROMカートリッジ>
$BFE8〜$BFE9:実行アドレス
$BFEC :HEXからCHR変換のベースCHRコード(アスキーコードの場合$30)
$BFED :
$BFEE〜$BFEF:VRAMアドレス
$BFF0〜$BFF7:初期化VDP R0〜R7用データ
$BFF8〜$BFF9:メッセージ用データポインタ
$BFFA〜$BFFB:VRAM Fill用データポインタ
$BFFC〜$BFFD:※初期化実行アドレス 通常は$F808
$BFFE〜$BFFF:※IRQ/BRK
※起動時$BFFC〜$BFFFは$0200〜$0203にストアされ
コールド/ホット スタートの判断を行います
<BIOS>
$FD82:ライトVDPデータ
入力:A=VDPデータ
使用:A
VDPライトポート$3000にデータを書き込みます
$FDC4:VRAM読み込みアドレスの指定
入力:$0004=VRAMアドレス下位
$0005=VRAMアドレス上位
使用:A
VRAMに書き込みを行うアドレス$0000〜$3FFFの指定を行います
$FDC8:VRAM書み込みアドレスの指定
入力:$0004=VRAMアドレス下位
$0005=VRAMアドレス上位
使用:A
VRAMに書き込みを行うアドレス$0000〜$3FFFの指定を行います
アドレス上位d7とd6の設定は必要ありません
$FDD3:ライトVDPコマンド
入力:A=コマンドデータ
使用:A
VDPライトポート$3001にデータを書き込みます
レジスタ設定、アドレス設定に使用します
$FE0F:リードVRAMデータ
使用:A
出力:A=VRAMデータ
VRAMデータを読み込みます
$FE1F:VDP レジスタまたはアドレスの指定
入力:X=レジスタ またはアドレス上位
A=レジスタデータまたはアドレス下位
使用:A、X
VDPレジスタ設定またはVRAMアドレスの指定を行います
レジスタ指定はそのままですが
読み込むアドレス上位指定の場合+$80
書き込むアドレス上位指定の場合+$C0
<例>VRAMアドレス$0000で書き込む場合
LDX #$C0
LDA #$00
JSR $FE1F
$FE2C:IRQ/BRK (VBLANK)
IRQ/BRKベクタで“JMP ($BFFE)”を実行
通常のカートリッジは$FF3Fにジャンプする
$FE2F:ゼロページクリア
使用:A、X
ゼロページ$0000〜$00FFを$00でクリアします
$FE38:キャラクタ定義
使用:A、X
$F800〜$F9FFのCGデータを
VRAM$0600〜$07FF(CHR $C0〜$EF)に転送します
$F800〜$F9FFはCGデータの他にプログラムが混合されているので
全て定義されている訳ではありません
$FE57:PSG全オフ
使用:A、X
$FE67をコール(PSGポート選択)して
PSGの音量を最小にします
$FE67:PSGポート選択
使用:A
PIAの接続されている
PSGアクセスで使用する為の設定を行います
PSGデータ書き込みする前にコールします
$FE77:PSGデータ書き込み
入力:A=PSGデータ
出力:A=PSGデータ
PSGにデータを書き込み、READYになるのまで待ちます
その後着込んだポートのデータを取得します(Aの値を元に戻す)
Home へ戻る