VDP(n)がややこしい件
MSX-BASICには、VDP(Video Display Processor)のレジスタにアクセスするために、
VDP(n)文というのがあるのだが、これがひどい。
BASICのリファレンスには、
・VDP (<レジスタ番号>)
システム変数 VDPのレジスタに対し、データの読み書きをする。
こんなん書いてたら、R#12にアクセスしたかったらVDP(12)って書いてしまうやん。
まちがいと気づくまでしばらくかかりましたやん。
おまけにテクハンにしか、しっかり解説してないとか。
(データパックに書いてあったらすいません)
テクハンこと、テクニカルハンドブックには
● VDP (<n>)
VDPレジスタの値の読み出しと書き込みを行います。<n>の部分は、実際のVDPのレジスタの番号とは若干のズレがあります。
若干のズレて。
その若干のズレを加味した対応表が以下の通り。
You can scroll
VDP | レジスタ | 機能 | レジスタ | VDP | 機能 |
---|---|---|---|---|---|
VDP(-9) | S#9 | Border X Register High | VDP(16) | R#15 | Status Register Pointer |
VDP(-8) | S#8 | Border X Register Low | VDP(17) | R#16 | Color Palette Address Register |
VDP(-7) | S#7 | Color Register | VDP(18) | R#17 | Color Register Pointer |
VDP(-6) | S#6 | Row Register High | VDP(19) | R#18 | Display Adjust Register |
VDP(-5) | S#5 | Row Register Low | VDP(20) | R#19 | Interrupt Line Register |
VDP(-4) | S#4 | Column Register High | VDP(21) | R#20 | Color Burst Register 1 |
VDP(-3) | S#3 | Column Register Low | VDP(22) | R#21 | Color Burst Register 2 |
VDP(-2) | S#2 | Status Register 2 | VDP(23) | R#22 | Color Burst Register 3 |
VDP(-1) | S#1 | Status register 1 | VDP(24) | R#23 | Display Offset Register |
VDP(0) | R#0 | Mode Register 0 | 欠番 | ー | ー |
VDP(1) | R#1 | Mode Register 1 | VDP(33) | R#32 | Source X Low Register |
VDP(2) | R#2 | Pattern Name Table Base Address Register | VDP(34) | R#33 | Source X High Register |
VDP(3) | R#3 | Color Table Base Address Register Low | VDP(35) | R#34 | Source Y Low Register |
VDP(4) | R#4 | Pattern Generator Table Base Address Register | VDP(36) | R#35 | Source Y High Register |
VDP(5) | R#5 | Sprite Attribute Table Base Address Register Low | VDP(37) | R#36 | Destination X Low Register |
VDP(6) | R#6 | Sprite Pattern Generator Table Base Address Register | VDP(38) | R#37 | Destination X High Register |
VDP(7) | R#7 | Text Color / Back Drop Color Register | VDP(39) | R#38 | Destination Y Low Register |
VDP(8) | S#0 | Status Register 0 | VDP(40) | R#39 | Destination Y High Register |
VDP(9) | R#8 | Mode Register 2 | VDP(41) | R#40 | Number of Dot X Low Register |
VDP(10) | R#9 | Mode Register 3 | VDP(42) | R#41 | Number of Dot X High Register |
VDP(11) | R#10 | Color Table Base Address Register High | VDP(43) | R#42 | Number of Dot Y Low Register |
VDP(12) | R#11 | Sprite Attribute Table Base Address Register High | VDP(44) | R#43 | Number of Dot Y High Register |
VDP(13) | R#12 | Text Color / Back Color Register (Blink Color) | VDP(45) | R#44 | Color Register |
VDP(14) | R#13 | Blinking Period Register | VDP(46) | R#45 | Argument Register |
VDP(15) | R#14 | VRAM Access Base Address Register | VDP(47) | R#46 | Command Register |
VDP(-1)からVDP(-9)と、VDP(8)は、ステータスレジスタというらしい。
VDP(8)がステータスレジスタS#0になっているせいで、
それ以降のVDP(n)文のレジスタ番号がひとつずれるというクセ強めな仕様です。
気をつけようね。じゃまた。