home *** CD-ROM | disk | FTP | other *** search
- A bootstrap program for the PET and the 4/8 bit version of the prlink
- cable.
-
- Versions for VIC, 64 and 128 can easily be made by changing lines 100-130.
- Also remove line 200 for 64 and 128.
-
- VIC-20:
- 99 hs=20
- 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
-
- 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
-
- Patches for the pc64 cable:
- 300 poke ddr,15:gosub1000
- 1030 poke ack,peek(ack) and (255-av)
- 1040 if (peek(sr) and sv) = 0 then 1000
- 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
- 1300 return
-
- PET (4/8-bit prlink cable):
- 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 cb2 and ca1
- 200 poke ack, (peek(ack) and 254) or (128+64+32)
- 300 poke ddr,0:gosub 1000
- 310 printby
- 320 if by then 330
- 322 by=hs:gosub 1200
- 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
- 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
- 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
- 1300 poke ddr,0: return: rem *** back to inputs
- 1999 rem *** load
- 2000 gosub1000:print"bank"by
- 2010 by=0:gosub1200
- 2020 gosub1000: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
-
- To really do the load function, change the print in line 2050 to poke.
-