from sean riddle: "I was able to electronically dump the ROM using the non-user-mode pin. I used a 1 MHz clock on the EXTAL pin with XTAL grounded, tied /RESET, /INT and TIMER high, and connected NUM to +5. I tied the PORT A pins to +5 and ground using 8 1K resistors to set it to $9D, the opcode for NOP, and I tied PORT C 3 high. The ROM contents were output on PORT B; I captured the bytes using a logic analyzer." Clocking off the incoming clock you get a pair of bytes per location twice. One of the bytes is an incrementing count, so you throw away every other line twice, then convert it to binary. The unused block from 500-77f was all ff's so it was easy to sync and they put a text string in the user rom "LOGIMOUSE C7 3.2 (c) 1986 LOGITECH / R. Sommer Switzerland" MC146805F2P RST/ 01 28 +5 IRQ/ 02 27 TIMER NUM 03 26 PC0 EXCLK 04 25 PC1 05 24 PC2 R2 PA0 06 23 PC3 R1 PA1 07 22 PB0 R0 PA2 08 21 PB1 09 20 PB2 J4 PA4 10 19 PB3 J3 PA5 11 18 PB4 J2 PA6 12 17 PB5 J1 PA7 13 16 PB6 gnd 14 15 PB7 J0 J2 J1 J0 0 0 0 FIVE BYTE PACKED BINARY (MOUSE SYSTEMS CORT COMPATIBLE) INCREMENTAL STREAM 1 0 0 THREE BYTE PACKED BINARY PROMPT MODE 0 1 0 HEXADECIMAL PROMPT MODE * 1 1 0 RELATIVE BIT PAD ONE INCREMENTAL STREAM 0 0 1 RESERVED 1 0 1 MM SERIES INCREMENTAL STREAM 0 1 1 ABSOLUTE BIT PAD INCREMENTAL STREAM 1 1 1 MICROSOFT COMPATIBLE PROTOCOL INCREMENTAL STREAM J4 J3 0 0 1200 BAUD 0 1 2400 BAUD 1 0 4800 BAUD *NOTE THE JUMPER SETTING 01010 SELECTS MM SERIES FORMAT AUTO BAUD RATE AND INCREMENTAL STREAM MODE, NOT HEXADECIMAL FORMAT 4800 BAUD 1 1 9600 BAUD