(c) Peter Popovec Warning .. this data is not a realy docummentation for primax hardware. ALL this is only my suppose. Comments toAll this is obtained from logs of trafic betwen scanner and windows driver. I use WIN 3.11 driver files Communication betven scanner and computer start with wake_up with F9 parameter. Next wake_up with A9 and one or more epp write or read operation. Finaly slepp up with A0 parameter is sendet to scanner. Many thanks to Gustaf Kröling for correction in this file. (0x00); R // this is the ASIC type - (E3 for my Primax Colorado 600p) (0x01); is no accessed from WIN driver (0x02); RW only ff or 00 is R/W in this register. Always negation of prevous read is stored in register. (0x03); RW bit 7,6 divisor for [1D] and [1B] 00 = divide by 1 01 = divide by 2 10 = divide by 3 11 = divide by 4 bit 0 alwais 1 bit 1 ??? bit 2 always 1 bit 3 always 1 bit 4 always 0 ? bit 5 ?? (0x04); RW 3E full RGB, 7E grayscale (only red ? ) bit 0 asic test bit 1 NoLineOffset bit 2 Refresh bit 3 RefreshForever bit 4,5 WaitDelay bit 6,7 Scan mode 00 = RGB full 24 bit, 8 bit per color 01 = Red only 8 bit from red channel //PP experimental tests 01 = 8 bit from green channel (not red) 10 = one (???) channel 16 bit per pixel, (hight 4 bit always zero), reading from FIFO first byte hight bytes, next low bites 11 = 16 bits per chanel, full RGB pixel (0x05); RW I read only number 82 from this register (posible speed of cartridge ?) (0x06); RW motor control ? 80 63,6f reverse move ? pxscan 60 63 72 //start motor for scan ? 62 //stop ? 03,17 reverz ? 03,0f ? (see pxscan ...) 63,77 //go home to optoswitch bit 4 = GO ? bit 2 = reverz ?? // sometimes also controls the lamp // 0x03 for 30, 75, 100 dpiy // 0x23 for 150 dpiy // 0x63 for 200, 250, 300 dpiy from win driver .. 0x02 0x03 0x0F 0x13 0x17 0x60 0x62 0x63 0x6B 0x6F 0x72 0x73 0x77 0x80 0x81 (0x07); RW - cartridge msb y distance (motor ..) (0x08); RW - cartridge lsb // physical movement in number of steps at 600 steps/inch Motor Back Steps (Scanning) (0x09); RW I read only 14h from this bud in one case 0Ah Write to this: Only 14h // Motor Trigger Period High Byte (Unit: 0.5 us) (0x0A); W msb values: 2000,5610 or 2805 (0x0B); W lsb // Sensor Status (0x0C); RW read: bit 7RW 1= lamp on / 0 = lamp off R/W bit 6 ?????? scan status bit 5 always 0 HwSelfTest bit 4 ?????? FifoEmpty bit 3 after motor is up, this bit is set if motor is in target position ?? (wait for carrtidge move to home ?) Finish flag bit 2R cartridge in target pposition or motor is stopped. Home sensor bit 1 always 0 Motor Stop bit 0 always 1 Motor move in scan: 85, C5,c5....C5 D5 or: C5.C5.. D5 D1... D9 ? or C1..c1..D1 .. D9 ? (0x0D); RW ADC ... unsigned SDI :1; unsigned SDO :1; // data to scanner adc ( = SDI of adc ) unsigned SCLK :1; unsigned CS :1; // = SEN on adc? unsigned Reserved :1; unsigned WmVsmp :3; // VSMP = Video SAMPle sync pulse, whatever it m -------------------------- Table control ? ------------------------ (0x0E); W hsb adres (0x0F); W msb adres (0x10); W lsb adres (24 bit adres register for tables ???) - If tables is holding in memory the first part in memory is - reserved for tables and second part for FIFO (256k mem. ) (0x11); RW FIFO read/write (block operation) Data size (0x12); R msb numbers of byte in FIFO (0x13); R lsb numbers of byte in FIFO ----------------------------------------------------------------- (0x14); RW (msb offset X for scanning) (0x15); RW (lsb offses X for scanning) (0x16); RW xmax msb or xcount (0x17); RW xmax lsb or xcount //scanning width (0x18); R I read only E1 .. // scanner model (0x19); W only 14h or 10h // involved in stepping (0x1A); RW 8 or 38h (0x1B); RW msb resolution A (bits 3..0) (bits 7..4) = msb for [1C] (0x1C); RW lsb of resolution in DPI ?? (0x1D); RW lsb resolution A (0x1E); Is no accessed from WIN driver (0x1F); W 00-> (no other number) ---------------------- TABLES ------------------------------------- Write to 0x11 register (adres set up for write is done by registers 0x0e,0x0f,0x10) calibration scan 0000 12288 bytes standart table recalculated color table 3x 4096 bytes 3 x 4096 bytes 3000 24567 bytes zeros (only 20288 bytes) 24576 bytes (808080...) ??. X direction table 9000 36864 bytes zeros 3 x 12288 bytes ... (or 12288,9670,12288 bytes)