1. HP 3500C Colour Depth Registers
The low 5 bits (0x1f) of these registers contain colour depth information. It seems that the colour bits of 0x2d must normally be equal to the colour bits of 0x2c plus 2. Both are stored mod 24.
The values of the colour depth areas of these are calculated as follows:
- Take CDSS 2 (low 5 bits of register 0x2a) (x = CDSS2).
- If performing a full colour scan, multiply by 3, and take the modulo 24 (x = x * 3 % 24). [Taking modulo 24 appears redundant due to the same operation being taken below, but that's what the Windows driver does].
- If the low bit of the motor mode only (high two bits of register 0x40) is set, add 17, otherwise add 16 (x += (motormode == 0x40) ? 17 : 16).
- Take the value modulo 24 (x = x % 24). This goes in the 0x2c colour depth field.
- Add 2, and take mod 24 (x = (x + 2) % 24). This goes in the 0x2d colour depth field.
The only values I have seen are:
- Register 0x2c = 0x0d, register 0x2d = 0x0f: full colour
- Register 0x2c = 0x0f, register 0x2d = 0x11: Black & white, 1 bit colour depth
1.1. Register 0x2c
|
Bits |
Mask |
Purpose |
|
5-7 |
0xe0 |
??? |
|
0-4 |
0x1f |
Colour depth (0-23) |
1.2. Register 0x2d
|
Bits |
Mask |
Purpose |
|
7 |
0x80 |
CSMPS |
|
6 |
0x40 |
CISCKS |
|
5 |
0x20 |
CPH0S |
|
0-4 |
0x1f |
Colour depth + 2 (2-25) |
Return to HP3500C