I think you could just modify the difference in Nick's board_programmer sketch to work with the 1284 non P version. Just try changing the 0x05 to a 0x06 in the section of the sketch shown here in the second line:
// ATmega1284P family
{ { 0x1E, 0x97, 0x05 }, "ATmega1284P", 128 * kb, 1 * kb,
optiboot_atmega1284p_hex,
0x1FC00, // start address
sizeof optiboot_atmega1284p_hex,
256, // page size (for committing)
0xFF, // fuse low byte: external clock, max start-up time
0xDE, // fuse high byte: SPI enable, boot into bootloader, 1024 byte bootloader
0xFD, // fuse extended byte: brown-out detection at 2.7V
0x2F }, // lock bits: SPM is not allowed to write to the Boot Loader section.
Nick's sketch is really great, programs the bootloader code in about 2 seconds where the arduinoISP sketch takes quite a while to perform the same task.
Lefty