Changes

V9990

949 bytes added, 14:44, 6 October 2018
* Reading from the Kanji ROM ports without a Kanji ROM returns databus values
 * Palette index 0 red data has a mask of &9F (bits for r,g,b red and color keybit), other indices blue and green have a mask of 0x01f for just r. e.g. LD BC,&FF64 LD A,14 OUT (C),C LD BC,&FF63 LD A,0 OUT (C),A LD BC,&FF61 LD A,&FF ;; <- reading this component back returns &9F OUT (C),A LD A,&FF ;; <- reading this component back returns &1F OUT (C),A LD A,&FF ;; <- reading this component back returns &1F OUT (C),A  * Bits 1,0 of R14 define a ternary counter. If you set this to 3 then reads and writes are ignored. e.g. e.g. LD BC,b&FF64 LD A,14 OUT (C),C LD BC,&FF63 LD A,3 OUT (C),A LD BC,&FF61 LD A,&FF OUT (C),A ;; write is not done.  LD BC,&FF64 LD A,14 OUT (C),C LD BC,&FF63 LD A,3 OUT (C),A LD BC,&FF61 IN A,(C) ;; read returns last value written to port When the ternary counter is 2, and auto-increment is enabled, the ternary counter will wrap to 0 and the palette index will increment. e.g. LD BC,&FF64 LD A,14 OUT (C),C LD BC,&FF63 LD A,2 OUT (C),A LD BC,&FF61 LD A,&FF OUT (C),A  ;; palette index will be 1, and ternary counter is 0
* If a command transfers data, and it requests data to be written to the command data port, then you can't use a read of this port to clear the data request. It must be a write. Similarly, if a command requests data to be read then you can use a write to clear the data request.
* If you read from a write-only register you will see data-bus value because the V9990 doesn't assert data on the bus.
2,541
edits