This basic loader implements part of the prlink protocol, and it can be used to transfer the prlink server to your computer if you do not have any means for data transfer. The following listing contains a bootstrap program for the PET and the 4/8 bit version of the prlink cable. Modifications for other hosts (VIC-20 and C64/C128) and cables follow this main listing. 99 hs=201:rem system type 100 av=32:ack=59468: rem ack (out) is cb2 110 dat=59471: rem port a 120 ddr=59459 130 sv=2:srobe=59469: rem strobe (in) is ca1 199 rem *** init handshaking lines 200 poke ack, (peek(ack) and 254) or (128+64+32) 300 print "waiting for command":gosub990 310 printby 320 if by then 330 322 by=hs:gosub 1190 324 by=0:gosub 1200:gosub 1200:gosub 1200:gosub 1200 326 goto 300 330 if by=1 then gosub2000:goto300 340 print"(unknown function)":goto 300 989 rem *** switch from send to receive, then receive a byte 990 poke ddr,0 999 rem *** receive a byte 1000 if (peek(sr) and sv) = 0 then 1000 1010 poke sr,sv 1020 by = peek(dat) 1030 i= peek(ack): i = (i or av) - (i and av) : poke ack,i 1040 return 1189 rem *** switch from receive to send, then send a byte 1190 rem 1199 rem *** send a byte 1200 if (peek(sr) and sv) = 0 then 1200 1210 poke sr,sv 1220 poke ddr,15:poke dat,by 1230 i= peek(ack): i = (i or av) - (i and av) : poke ack,i 1240 if (peek(sr) and sv) = 0 then 1240 1250 poke sr,sv 1260 poke dat,by/16 1270 i= peek(ack): i = (i or av) - (i and av) : poke ack,i 1280 return 1999 rem *** load 2000 gosub1000:print"bank"by 2010 by=0:gosub1190 2020 gosub990:f=by:gosub1000:f=f+256*by:print"from"f 2030 gosub1000:t=by:gosub1000:t=t+256*by:print"to "t 2040 for a=f to t-1 2050 gosub1000:printa,by 2060 next 2070 return Modifications ------------- To really do the load function (after everything seems to work), change the print in line 2050 to poke. Here are the modifications for the VIC-20 and C64, using the 4-bit/8-bit cable: VIC-20: 99 hs=20:rem system type 100 av=32:ack=37148: rem ack (out) is cb2 110 dat=37136: rem port b 120 ddr=37138 130 sv=16:srobe=37149: rem strobe (in) is cb1 200 C64 and C128: 99 hs=64:rem or 128 100 av=4:ack=56576: rem ack (out) is pa2 110 dat=56577: rem port b 120 ddr=56579 130 sv=16:srobe=56589: rem strobe (in) is -flag 200 pokeack+2,peek(ack+2)orav:pokeack,peek(ack)orav If you want to use the PC64 cable instead, apply these (additional) patches: 990 poke ddr,15 1030 poke ack,peek(ack) and (255-av) 1040 if (peek(sr) and sv) = 0 then 1040 1050 poke sr,sv 1060 by = peek(dat) and 240 or (by/16) 1070 poke ack,peek(ack) or av 1080 return 1230 poke ack,peek(ack) and (255-av) 1270 poke ack,peek(ack) or av If you want to use the Kontros interface on the C64, C128 or VIC-20, you will need to make these changes instead of the PC64 patch. You will also need to make the modifications for VIC-20 or C64, as shown earlier. 200 poke ack+2, peek(ack+2) and (255-av) 990 pokeddr,0:pokedat,0 1030 1190 if(peek(sr)andsv)=0then1190 1195 pokesr,sv:poke ddr,255 1200 poke dat,by 1210 if (peek(sr) and sv) = 0 then 1210 1220 poke sr,sv 1230 return 1240 1250 1260 1270 1280 For the VIC-20 (using the Kontros cable), make this additional change: 200 poke ack, (peek(ack) and 14) or (128+32) 1030 poke dat,by