I might have made an error when I pinned this out. Will have to check that next time.
It may be an error. I do seem to recall thinking, when I first saw your pinout, it was odd that they would bring PB4 out.
Now this makes perfect sense, since PB0 is muxed as Slave Select on the processor and 0x57 is the command to read the status register on the memory chip. Perhaps all that is needed is to just hook up the memory chip's SPI and power pins to the expansion port, like so:
Slave select is an input and only when SPI is in slave mode. SPI is configured for master mode, so that pin can't be used for that function. It is likely that is being used as a CS though. That's about all the comment I can make until I get around to downloading a datasheet for the PROM.
And I've asked this before, C2520: how did you figure out all of this stuff?
If you did, I either missed it, or it was while my workstation was down and I couldn't reply at the time. This is benign enough that I suppose it's not likely to cause any issues, backup what I said about PB4, and provide a hint.
From ver 1.75 for a wireless console:
; -----------------------------------------------------------------------------------------
;
; LAMPS
;
+0000A619: E045 LDI R20,0x05 ;chars
+0000A61A: EB21 LDI R18,0xB1 ;
+0000A61B: E23D LDI R19,0x2D ;0x2DB1 (LAMPS)
+0000A61C: D2D5 RCALL PC+0x02D6 ;A8F2 - check if string match
+0000A61D: F441 BRNE PC+0x09 ;A626 - Branch if not equal
;
+0000A61E: D996 RCALL PC-0x0669 ;9FB5 - Send "OK" out USART
+0000A61F: D2B1 RCALL PC+0x02B2 ;A8D1 -Relative call subroutine
+0000A620: 2B01 OR R16,R17 Logical OR
+0000A621: F011 BREQ PC+0x03 ;A624 -Branch if equal
;
+0000A622: 9AC4 SBI PORTB,4 Set bit in I/O register
+0000A623: CA8D RJMP PC-0x0572 ;A0B1 - 0x78 => (0x0927), restore regs and return
;
+0000A624: 98C4 CBI PORTB,4 Clear bit in I/O register
+0000A625: CA8B RJMP PC-0x0574 ;A0B1 - 0x78 => (0x0927), restore regs and return
; -----------------------------------------------------------------------------------------
This is the section of code that checks for the LAMPS command and handles it if found.
The first 5 lines are standard for every serial command, the first line is the number of characters in the cmd, the 2nd and 3rd are the address in program space of the string to compare the serial RX buffer contents with. The forth line calls a routine the does the compare. The 5th line branchs to test for the next possible command if the compare fails.
Then we get to the what actually happens when sent the LAMPS command.
A61E sends OK out the serial port. A61F calls a routine that looks for a number in the serial RX buffer after the command. A620 tests the return value of that routine. Depending on the result of that test, PB4 is set either high or low and the routine returns. The data written to memory location 0x0927 is not unique to this command.
I seem to recall the manual says you have to use 0 or 1 after the LAMPS command. That does not appear to be the case, in reality any number, except zero, after the command should turn on the backlight.
A bit more back to the thread topic. I seem to recall hearing that someone was making and selling a datalogger/cable at one time, although with a larger PROM. As the story went, Davis was not happy about that and made them stop. I doubt they can make the thing for as little as what was originally suggested in this thread. But I'm sure they do make a tidy profit from them.