VDP(n)がややこしい件

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#9Border X Register HighVDP(16)R#15Status Register Pointer
VDP(-8)S#8Border X Register LowVDP(17)R#16Color Palette Address Register
VDP(-7)S#7Color RegisterVDP(18)R#17Color Register Pointer
VDP(-6)S#6Row Register HighVDP(19)R#18Display Adjust Register
VDP(-5)S#5Row Register LowVDP(20)R#19Interrupt Line Register
VDP(-4)S#4Column Register HighVDP(21)R#20Color Burst Register 1
VDP(-3)S#3Column Register LowVDP(22)R#21Color Burst Register 2
VDP(-2)S#2Status Register 2VDP(23)R#22Color Burst Register 3
VDP(-1)S#1Status register 1VDP(24)R#23Display Offset Register
VDP(0)R#0Mode Register 0欠番
VDP(1)R#1Mode Register 1VDP(33)R#32Source X Low Register
VDP(2)R#2Pattern Name Table Base Address RegisterVDP(34)R#33Source X High Register
VDP(3)R#3Color Table Base Address Register LowVDP(35)R#34Source Y Low Register
VDP(4)R#4Pattern Generator Table Base Address RegisterVDP(36)R#35Source Y High Register
VDP(5)R#5Sprite Attribute Table Base Address Register LowVDP(37)R#36Destination X Low Register
VDP(6)R#6Sprite Pattern Generator Table Base Address RegisterVDP(38)R#37Destination X High Register
VDP(7)R#7Text Color / Back Drop Color RegisterVDP(39)R#38Destination Y Low Register
VDP(8)S#0Status Register 0VDP(40)R#39Destination Y High Register
VDP(9)R#8Mode Register 2VDP(41)R#40Number of Dot X Low Register
VDP(10)R#9Mode Register 3VDP(42)R#41Number of Dot X High Register
VDP(11)R#10Color Table Base Address Register HighVDP(43)R#42Number of Dot Y Low Register
VDP(12)R#11Sprite Attribute Table Base Address Register HighVDP(44)R#43Number of Dot Y High Register
VDP(13)R#12Text Color / Back Color Register (Blink Color)VDP(45)R#44Color Register
VDP(14)R#13Blinking Period RegisterVDP(46)R#45Argument Register
VDP(15)R#14VRAM Access Base Address RegisterVDP(47)R#46Command Register

VDP(-1)からVDP(-9)と、VDP(8)は、ステータスレジスタというらしい。
VDP(8)がステータスレジスタS#0になっているせいで、
それ以降のVDP(n)文のレジスタ番号がひとつずれるというクセ強めな仕様です。

気をつけようね。じゃまた。