home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / c / czsl.zip / CZSL.MOD (.txt) next >
Commodore BASIC  |  1992-10-06  |  5KB  |  198 lines

  1. 10 REM*********************************
  2. 20 REM* CZPL - CZ PATCH LIBRARIAN     *
  3. 30 REM* BY ALAN BLAND (MAB1 ON QLINK) *
  4. 40 REM* REQUIRES PASSPORT INTERFACE   *
  5. 50 REM* USES DR.T FORMAT CZ FILES     *
  6. 60 REM* THIS PROGRAM IS PUBLIC DOMAIN *
  7. 70 REM*********************************
  8. 80 REM
  9. 90 REM CHANGED TO CZSL (FOR SEQUENTIAL
  10. 95 REM INTERFACE) 9/26/86 BY J. JOHNSON
  11. 100 IFX=0THENX=1:LOAD"CZSL.ML",8,1
  12. 110 POKE55,32:POKE56,78:CLR:REM 20000
  13. 120 DIMDT(8),FL$(8)
  14. 130 X=20001
  15. 140 FORI=1TO8:DT(I)=X:X=X+2370:NEXT
  16. 150 MB=1
  17. 190 POKE53280,0:POKE53281,0
  18. 200 REM HERE WE GO
  19. 210 PRINT"[147]     CZSL - CZ PATCH LIBRARIAN         [159]"
  20. 220 PRINT
  21. 230 PRINT" T - TRANSMIT PATCHES TO CZ"
  22. 240 PRINT" R - RECEIVE PATCHES FROM CZ"
  23. 250 PRINT" G - GET SINGLE PATCH FROM CZ"
  24. 260 PRINT" P - PUT SINGLE PATCH TO CZ"
  25. 270 PRINT
  26. 280 PRINT" D - DISK DIRECTORY"
  27. 290 PRINT" L - LOAD PATCH FILE FROM DISK"
  28. 300 PRINT" S - SAVE PATCH FILE TO DISK"
  29. 310 PRINT
  30. 320 PRINT" W - SWAP TWO PATCHES"
  31. 330 PRINT" E - EDIT PATCH NAMES"
  32. 340 PRINT" X - EXIT TO BASIC"
  33. 350 PRINT
  34. 360 PRINT"[158][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  35. 370 FORI=1TO8:PRINT"     "CHR$(64+I),FL$(I):NEXT
  36. 380 PRINT"[158][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]";
  37. 400 GETA$:IFA$=""THEN400
  38. 410 IFA$="T"THEN1000
  39. 420 IFA$="R"THEN2000
  40. 430 IFA$="G"THEN3000
  41. 440 IFA$="P"THEN4000
  42. 450 IFA$="D"THEN5000
  43. 460 IFA$="L"THEN5500
  44. 470 IFA$="S"THEN6000
  45. 475 IFA$="W"THEN8000
  46. 480 IFA$="E"THEN7000
  47. 490 IFA$="X"THENPRINT"[147]":END
  48. 500 GOTO400
  49. 550 REM SELECT MEMORY BANK
  50. 560 PRINT"COMPUTER BANK (A-H)? ";
  51. 570 GETB$:IFB$="X"THENRETURN
  52. 580 IFB$<"A"ORB$>"H"THEN570
  53. 590 PRINTB$:MB=ASC(B$)-64
  54. 595 RETURN
  55. 600 REM SELECT CZ BANK
  56. 610 PRINT"CZ INTERNAL OR CARTRIDGE (I OR C) ";
  57. 620 GETB$:IFB$<>"I"ANDB$<>"C"ANDB$<>"X"THEN620
  58. 630 PRINTB$
  59. 640 PB=32:IFB$="C"THENPB=64
  60. 650 RETURN
  61. 700 REM SELECT PATCH NUMBER
  62. 710 INPUT"CZ PATCH NUMBER (1-16)";P$
  63. 720 P=VAL(P$):RETURN
  64. 800 REM SELECT MEMORY NUMBER
  65. 810 INPUT"COMPUTER PATCH NUMBER (1-16)";P$
  66. 820 M=VAL(P$):RETURN
  67. 900 REM INPUT FILE NAME
  68. 910 PRINT"FILE NAME? "FL$(MB)
  69. 920 PRINT"[145]FILE NAME";:INPUTF$
  70. 930 RETURN
  71. 950 REM CHECK DISK ERROR
  72. 960 INPUT#15,E,E$,T,S
  73. 970 IFE=0THENRETURN
  74. 980 PRINTE;E$;T;S
  75. 985 CLOSE2:CLOSE15
  76. 990 PRINT"PRESS ANY KEY TO CONTINUE"
  77. 991 GETA$:IFA$=""THEN991
  78. 992 RETURN
  79. 1000 PRINT"[147]TRANSMIT PATCHES TO CZ[150]"
  80. 1005 GOSUB550:IFB$="X"THEN200
  81. 1010 GOSUB600:IFB$="X"THEN200
  82. 1020 FORP=1TO16
  83. 1030 PRINTP:PRINT"[145]";
  84. 1040 PN=PB+P-1
  85. 1050 A=DT(MB)+2+(P-1)*148
  86. 1060 AH=INT(A/256):AL=A-AH*256
  87. 1070 POKE780,PN:POKE781,AL:POKE782,AH:SYS49155
  88. 1080 NEXTP
  89. 1090 GOTO200
  90. 2000 PRINT"[147]RECEIVE PATCHES FROM CZ[153]"
  91. 2005 GOSUB600:IFB$="X"THEN200
  92. 2010 GOSUB550:IFB$="X"THEN200
  93. 2020 FORP=1TO16
  94. 2030 PRINTP:PRINT"[145]";
  95. 2040 PN=PB+P-1
  96. 2050 A=DT(MB)+2+(P-1)*148
  97. 2060 AH=INT(A/256):AL=A-AH*256
  98. 2070 POKE780,PN:POKE781,AL:POKE782,AH:SYS49152
  99. 2080 NEXTP
  100. 2090 GOTO200
  101. 3000 PRINT"[147]GET SINGLE PATCH FROM CZ[153]"
  102. 3010 GOSUB600:IFB$="X"THEN200
  103. 3011 GOSUB700:IFP=0THEN200
  104. 3015 GOSUB550:IFB$="X"THEN200
  105. 3020 GOSUB800:IFM=0THEN200
  106. 3030 PN=PB+P-1
  107. 3040 A=DT(MB)+2+(M-1)*148
  108. 3050 AH=INT(A/256):AL=A-AH*256
  109. 3060 POKE780,PN:POKE781,AL:POKE782,AH:SYS49152
  110. 3320 GOTO200
  111. 4000 PRINT"[147]PUT SINGLE PATCH TO CZ[150]"
  112. 4005 GOSUB550:IFB$="X"THEN200
  113. 4010 GOSUB800:IFM=0THEN200
  114. 4015 GOSUB600:IFB$="X"THEN200
  115. 4020 GOSUB700:IFP=0THEN200
  116. 4030 PN=PB+P-1
  117. 4040 A=DT(MB)+2+(M-1)*148
  118. 4050 AH=INT(A/256):AL=A-AH*256
  119. 4060 POKE780,PN:POKE781,AL:POKE782,AH:SYS49155
  120. 4320 GOTO200
  121. 5000 REM DISK DIRECTORY
  122. 5010 PRINT"[147][159]";
  123. 5015 OPEN15,8,15,"I0"
  124. 5020 OPEN2,8,0,"$0:CZ.*"
  125. 5030 GOSUB950:IFE<>0THEN200
  126. 5040 GET#2,A$,A$
  127. 5050 GET#2,A$,B$,C$,D$
  128. 5060 C=0:IFC$<>""THENC=ASC(C$)
  129. 5070 IFD$<>""THENC=C+ASC(D$)*256
  130. 5080 GET#2,A$:IFST<>0THEN5200
  131. 5090 PRINTC;A$;
  132. 5100 GET#2,A$:IFA$<>""THENPRINTA$;:GOTO5100
  133. 5110 PRINT:GOTO5050
  134. 5200 CLOSE2:CLOSE15
  135. 5210 PRINT"PRESS ANY KEY";
  136. 5220 GETA$:IFA$=""THEN5220
  137. 5230 GOTO200
  138. 5500 PRINT"[147]LOAD FILE[159]"
  139. 5505 GOSUB550:IFB$="X"THEN200
  140. 5510 GOSUB900:IFF$="X"THEN200
  141. 5520 FL$(MB)=F$:F$="CZ."+F$+",S,R"
  142. 5530 OPEN15,8,15,"I0"
  143. 5540 OPEN2,8,2,F$
  144. 5550 GOSUB950:IFE<>0THEN200
  145. 5600 H=INT(DT(MB)/256):L=DT(MB)-H*256
  146. 5610 POKE781,L:POKE782,H:SYS49158
  147. 5611 GET#2,A$:REM SECRET TRICK
  148. 5620 CLOSE2:CLOSE15
  149. 5710 GOTO200
  150. 6000 PRINT"[147]SAVE FILE[152]"
  151. 6005 GOSUB550:IFB$="X"THEN200
  152. 6010 GOSUB900:IFF$="X"THEN200
  153. 6020 FL$(MB)=F$:F$="CZ."+F$+",S,W"
  154. 6030 OPEN15,8,15,"I0"
  155. 6040 OPEN2,8,2,F$
  156. 6050 GOSUB950:IFE<>0THEN200
  157. 6060 POKEDT,64:POKEDT+1,9:REM LENGTH
  158. 6100 H=INT(DT(MB)/256):L=DT(MB)-H*256
  159. 6110 POKE781,L:POKE782,H:SYS49161
  160. 6115 PRINT#2,"";:REM SECRET TRICK
  161. 6120 CLOSE2:CLOSE15
  162. 6210 GOTO200
  163. 7000 PRINT"[147]EDIT PATCH NAMES"
  164. 7005 GOSUB550:IFB$="X"THEN200
  165. 7010 PRINT"[147]BANK "CHR$(64+MB),FL$(MB)""
  166. 7015 PRINT
  167. 7020 FORP=1TO16
  168. 7030 A=DT(MB)+2+(P-1)*148+128
  169. 7040 PRINT"   "P,
  170. 7050 FORJ=0TO19:PRINTCHR$(PEEK(A+J));:NEXT:PRINT
  171. 7060 NEXT
  172. 7070 PRINT
  173. 7080 INPUT"PATCH NUMBER OR X";P$
  174. 7085 IFP$="X"THEN200
  175. 7090 P=VAL(P$):IFP<1ORP>16THEN7000
  176. 7100 INPUT"NEW PATCH NAME";N$
  177. 7110 N$=N$+"                    "
  178. 7120 A=DT(MB)+2+(P-1)*148+128
  179. 7130 FORI=1TO20:POKEA+I-1,ASC(MID$(N$,I,1)):NEXT
  180. 7140 GOTO7010
  181. 8000 PRINT"[147]SWAP TWO PATCHES[158]"
  182. 8010 PRINT:PRINT"FIRST PATCH"
  183. 8015 GOSUB550:IFB$="X"THEN200
  184. 8016 B1=MB
  185. 8020 GOSUB800:IFM=0THEN200
  186. 8030 M1=M
  187. 8040 PRINT:PRINT"SECOND PATCH"
  188. 8045 GOSUB550:IFB$="X"THEN200
  189. 8046 B2=MB
  190. 8050 GOSUB800:IFM=0THEN200
  191. 8060 M2=M
  192. 8070 A1=DT(B1)+2+(M1-1)*148
  193. 8080 A2=DT(B2)+2+(M2-1)*148
  194. 8090 FORI=1TO148
  195. 8100 X=PEEK(A1):POKEA1,PEEK(A2):POKEA2,X
  196. 8110 A1=A1+1:A2=A2+1:NEXT
  197. 8120 GOTO200
  198.