Learned a little more about the Microchip bootloader GUI. It reads a P1618qp.ini file which contains information about each chip. The dropdown menu is built from this ini file. So you can add chips if you enter the right information. I tried adding a chip, and was successful in seeing it appear int the dropdown menu of the GUI.

They have two subroutines for reading and two for writing to the code space, depending on whether it is a 16 or an 18 chip.

Here are a couple pic definition samples of the .ini file:
Code:
[PIC18F67J11]
writeblock=8
readblock=1
eraseblock=64
devicetype=1
maxpacketsize=128
bytesperaddr=1
pmrangelow="000400"
pmrangehigh="01FBFF"
eerangelow="000000"
eerangehigh="000000"
usrrangelow="200000"
usrrangehigh="20000F"
cfgrangelow="300000"
cfgrangehigh="30000F"
300001="CONFIG1H"            
300002="CONFIG2L"
300003="CONFIG2H"
300005="CONFIG3H"
300006="CONFIG4L"
300008="CONFIG5L"
300009="CONFIG5H"
30000A="CONFIG6L"
30000B="CONFIG6H"
30000C="CONFIG7L"
30000D="CONFIG7H"



[PIC16F877]
writeblock=8
readblock=2
devicetype=0
maxpacketsize=32
bytesperaddr=2
pmrangelow="000200"
pmrangehigh="001FFF"
eerangelow="000000"
eerangehigh="0000FF"
And for the 18F devices, they have a menu that lets you configure the fuses. But it looks like you have to enter the value for them. Would be nice to make it read from the device file C:\Program Files\Microchip\MPLAB IDE\Device and populate the dropdown list. But that would definitely be down the road, because now I am having trouble seeing where they size the data field!

I do see a:
Code:
        'limit the packet size
        If (AddrH + 1) - BootAddr > PicBootS.MaxPacketSize Then
            picA.BootDatLen = PicBootS.MaxPacketSize
        Else
            picA.BootDatLen = (AddrH + 1) - BootAddr
        End If
But I am having trouble figuring out where they use it. Might take a couple cups of coffee ... or more.