I just found this site doing a quick search

http://www.oshonsoft.com/picbootloader.html

Looks like this code may be what we need to get started making our own bootloaders with PBP

---------------------------------
Define CONF_WORD = 0x3f72
StartFromZero

Dim i As Byte
Dim num As Byte
Dim total As Word
Dim j As Word
Dim address As Word
Dim data(4) As Word
Dim dat As Word
Dim din As Byte

ASM: BSF PCLATH,3
ASM: BSF PCLATH,4
Goto bootloader_start

'beginning of user program
ASM: ORG 0x0004
user_program:
Goto user_program

'beginning of bootloader
ASM: ORG 0x1E00
execute_user_program:
Gosub reset_state
ASM: CLRF STATUS
ASM: CLRF PCLATH
ASM: NOP

ASM: BCF PCLATH,3
ASM: BCF PCLATH,4
ASM: GOTO 0x0004
ASM: NOP

bootloader_start:
Hseropen 19200
WaitMs 100
Hserout 0x55
For i = 1 To 100
WaitMs 1
Hserget num
If num = 0x55 Then
Goto bootloader_main
Endif
Next i
Goto execute_user_program

bootloader_main:
Gosub get_byte
total.LB = din
Gosub get_byte
total.HB = din
address = 0x0004
For j = 1 To total
Gosub get_data
For i = 0 To 3
If address <= 0x1e00 Then
Gosub prepare_write
Gosub write_flash_memory
Endif
address = address + 1
Next i
Next j
address = 0x1e04
Gosub get_data
For i = 0 To 3
Gosub prepare_write
Gosub write_flash_memory
address = address + 1
Next i
WaitMs 100
Goto execute_user_program
End

get_data:
Gosub get_word
data(0) = dat
Gosub get_word
data(1) = dat
Gosub get_word
data(2) = dat
Gosub get_word
data(3) = dat
Return

get_word:
Gosub get_byte
dat.LB = din
Gosub get_byte
dat.HB = din
Return

get_byte:
Hserin din
Hserout din
Return

prepare_write:
EEADR = address.LB
EEADRH = address.HB
dat = data(i)
EEDATA = dat.LB
EEDATH = dat.HB
Return

write_flash_memory:
ASM: BSF STATUS,RP0
ASM: BSF STATUS,RP1
ASM: BSF EECON1,EEPGD
ASM: BSF EECON1,WREN
ASM: MOVLW 0x55
ASM: MOVWF EECON2
ASM: MOVLW 0xAA
ASM: MOVWF EECON2
ASM: BSF EECON1,WR
ASM: NOP
ASM: NOP
ASM: BCF EECON1,WREN
ASM: BCF STATUS,RP0
ASM: BCF STATUS,RP1
Return

reset_state:
RCSTA = 0
TXSTA = 0
SPBRG = 0
EECON1 = 0
PIR1 = 0
PIR2 = 0
Return

------------------