home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 12 / 012.d81 / disdump (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  6KB  |  271 lines

  1. 100 rem *********************
  2. 110 rem **     disdump     **
  3. 120 rem **   m.w. caprio   **
  4. 150 rem ** 24 november  84 **
  5. 160 rem *********************
  6. 170 poke55,255:poke56,47:poke643,255:poke644,47:clr
  7. 180 poke53280,14:poke53281,12:print"[151]"
  8. 190 rem ** title page **
  9. 200 print"[147]"
  10. 210 printtab(12)"                [146]"
  11. 220 printtab(12)"     disdump    [146]"
  12. 230 printtab(12)"                [146]"
  13. 240 printtab(12)" program by mwc [146]"
  14. 250 printtab(12)"                [146]"
  15. 260 fori=1to1500:nexti
  16. 270 dim f$(16)
  17. 280 f$(0)="0":f$(1)="1":f$(2)="2":f$(3)="3":f$(4)="4":f$(5)="5":f$(6)="6"
  18. 290 f$(7)="7":f$(8)="8":f$(9)="9":f$(10)="a":f$(11)="b"
  19. 295 f$(12)="c":f$(13)="d"
  20. 300 f$(14)="e":f$(15)="f"
  21. 310 rem ** main program **
  22. 320 print"[147] this program will read the contents of"
  23. 330 print" memory and  output the object code and"
  24. 340 print" the assembly language source code that"
  25. 350 print" it finds in the locations you request."
  26. 360 input"do you want a hardcopy (y or n)";hd$:s=0:c=0
  27. 370 input"starting address (decimal)";s
  28. 380 input"  ending address (decimal)";e:e=e-1:ife+1>=sthen410
  29. 390 print" the ending address must be high-"
  30. 400 print" er than the starting address.":fori=1to2000:nexti:goto310
  31. 410 input"              are you sure";c$
  32. 420 ifleft$(c$,1)<>"y"then310
  33. 430 print"[147]working ..."
  34. 440 ifleft$(hd$,1)<>"y"then470
  35. 450 open4,4:cmd4
  36. 460 :
  37. 470 nn=s:gosub610:ss$=s$
  38. 480 ml=peek(s)
  39. 490 gosub690
  40. 500 ifn>0thengosub750
  41. 510 gosub870
  42. 520 op$=v$
  43. 530 ifn=0then570
  44. 540 fori=1ton
  45. 550 ml=ad(i):gosub870:ad$(i)=v$
  46. 560 nexti
  47. 570 ifhd$="y"thengosub910:goto590
  48. 580 gosub1030
  49. 590 ifs=>e+1then2700
  50. 600 n=0:s=s+1:c=c+1:ad$(1)="":ad$(2)="":goto470
  51. 610 rem ** convert s to hex **
  52. 620 s$="":ss=int(nn/4096):s$=s$+f$(ss)
  53. 630 f1=nn-ss*4096
  54. 640 ss=int(f1/256):s$=s$+f$(ss)
  55. 650 f2=f1-ss*256
  56. 660 ss=int(f2/16):s$=s$+f$(ss)
  57. 670 f3=f2-ss*16:s$=s$+f$(f3)
  58. 680 return
  59. 690 rem ** read data **
  60. 700 restore:fori=1to151
  61. 710 readop,cd$,n,sf$
  62. 720 ifop=mltheni=151
  63. 730 nexti
  64. 740 return
  65. 750 rem ** read additional data **
  66. 760 fori=1ton
  67. 770 s=s+1
  68. 780 ad(i)=peek(s)
  69. 790 nexti
  70. 800 ifn=1then820
  71. 810 t=ad(1):ad(1)=ad(2):ad(2)=t
  72. 820 ifleft$(cd$,1)<>"b"then860
  73. 830 ifad(1)>127thennn=s-(255-ad(1)):goto850
  74. 840 nn=s+ad(1)+1
  75. 850 gosub610:d$=s$
  76. 860 return
  77. 870 rem ** convert dec to hex **
  78. 880 v$="":f=int(ml/16):v$=v$+f$(f)
  79. 890 f1=ml-f*16:v$=v$+f$(f1)
  80. 900 return
  81. 910 rem ** output to printer **
  82. 920 printcchr$(9);ss$;chr$(9);op$;
  83. 930 ifad$(2)=""thenprintchr$(9);ad$(1);chr$(9);ad$(2);:goto950
  84. 940 printchr$(9);ad$(2);chr$(9);ad$(1);
  85. 950 printchr$(9);cd$;
  86. 960 ifn=0thenprint:goto1020
  87. 970 ifn=1andleft$(cd$,1)="b"thenprintd$:goto1020
  88. 980 fori=1ton
  89. 990 printad$(i);
  90. 1000 nexti
  91. 1010 printsf$
  92. 1020 return
  93. 1030 rem ** output to screen **
  94. 1040 cc=cc+1
  95. 1050 printc;tab(6)ss$;tab(13)op$;
  96. 1060 ifad$(2)=""thenprinttab(16)ad$(1);:goto1080
  97. 1070 printtab(16)ad$(2);tab(19)ad$(1);
  98. 1080 printtab(23)cd$;
  99. 1090 ifn=0thenprint:goto 1150
  100. 1100 ifn=1andleft$(cd$,1)="b"thenprintd$:goto 1150
  101. 1110 fori=1ton
  102. 1120 printad$(i);
  103. 1130 nexti
  104. 1140 printsf$
  105. 1150 ifcc<>20then1180
  106. 1160 print"       press return[146] to continue.":cc=0
  107. 1170 getc$:ifc$<>chr$(13)then 1170
  108. 1180 return
  109. 1190 data0,"brk",0," "
  110. 1200 data1,"ora ($",1,",x)"
  111. 1210 data5,"ora $",1," "
  112. 1220 data6,"asl $",1," "
  113. 1230 data8,"php",0," "
  114. 1240 data9,"ora #$",1," "
  115. 1250 data10,"asl",0," "
  116. 1260 data13,"ora $",2," "
  117. 1270 data14,"asl #$",1," "
  118. 1280 data16,"bpl $",1," "
  119. 1290 data17,"ora ($",1,"),y"
  120. 1300 data21,"ora $",1,",x"
  121. 1310 data22,"asl $",1,",x"
  122. 1320 data24,"clc",0," "
  123. 1330 data25,"ora $",2,",y"
  124. 1340 data29,"ora $",2,",x"
  125. 1350 data30,"asl $",2,",x"
  126. 1360 data32,"jsr $",2," "
  127. 1370 data33,"and ($",1,",x)"
  128. 1380 data36,"bit $",1," "
  129. 1390 data37,"and $",1," "
  130. 1400 data38,"rol $",1," "
  131. 1410 data40,"plp",0," "
  132. 1420 data41,"and #$",1," "
  133. 1430 data42,"rol",0," "
  134. 1440 data44,"bit $",2," "
  135. 1450 data45,"and $",2," "
  136. 1460 data46,"rol $",2," "
  137. 1470 data48,"bmi $",1," "
  138. 1480 data49,"and ($",1,"),y"
  139. 1490 data53,"and $",1,",x"
  140. 1500 data54,"rol $",1,",x"
  141. 1510 data56,"sec",0," "
  142. 1520 data57,"and $",2," "
  143. 1530 data61,"and $",2,",x"
  144. 1540 data62,"rol $",2,",x"
  145. 1550 data64,"rti",0," "
  146. 1560 data65,"eor ($",1,",x)"
  147. 1570 data69,"eor $",1," "
  148. 1580 data70,"lsr $",1," "
  149. 1590 data72,"pha",0," "
  150. 1600 data73,"eor #$",1," "
  151. 1610 data74,"lsr",0," "
  152. 1620 data76,"jmp $",2," "
  153. 1630 data77,"eor $",2," "
  154. 1640 data78,"lsr $",2," "
  155. 1650 data80,"bvc $",1," "
  156. 1660 data81,"eor ($",1,"),y"
  157. 1670 data85,"eor $",1,",x"
  158. 1680 data86,"lsr $",1,",x"
  159. 1690 data88,"cli",0," "
  160. 1700 data89,"eor $",2,",y"
  161. 1710 data93,"eor $",2,",x"
  162. 1720 data94,"lsr $",2,",x"
  163. 1730 data96,"rts",0," "
  164. 1740 data97,"adc ($",1,",x)"
  165. 1750 data101,"adc $",1," "
  166. 1760 data102,"ror $",1," "
  167. 1770 data104,"pla",0," "
  168. 1780 data105,"adc #$",1," "
  169. 1790 data106,"ror",0," "
  170. 1800 data108,"jmp ($",2,")"
  171. 1810 data109,"adc $",2," "
  172. 1820 data110,"ror $",2," "
  173. 1830 data112,"bvs $",1," "
  174. 1840 data113,"adc ($",1,"),y"
  175. 1850 data117,"adc $",1,",x"
  176. 1860 data118,"ror $",1,",x"
  177. 1870 data120,"sei",0," "
  178. 1880 data121,"adc $",2,",y"
  179. 1890 data125,"adc $",2,",x"
  180. 1900 data126,"ror $",2,",x"
  181. 1910 data129,"sta ($",1,",x)"
  182. 1920 data132,"sty $",1," "
  183. 1930 data133,"sta $",1," "
  184. 1940 data134,"stx $",1," "
  185. 1950 data136,"dey",0," "
  186. 1960 data138,"txa",0," "
  187. 1970 data140,"sty $",2," "
  188. 1980 data141,"sta $",2," "
  189. 1990 data142,"stx $",2," "
  190. 2000 data144,"bcc $",1," "
  191. 2010 data145,"sta ($",1,"),y"
  192. 2020 data148,"sty $",1,",x"
  193. 2030 data149,"sta $",1,",x"
  194. 2040 data150,"stx $",1,",y"
  195. 2050 data152,"tya",0," "
  196. 2060 data153,"sta $",2,",y"
  197. 2070 data154,"txs",0," "
  198. 2080 data157,"sta $",2,",x"
  199. 2090 data160,"ldy #$",1," "
  200. 2100 data161,"lda ($",1,",x)"
  201. 2110 data162,"ldx #$",1," "
  202. 2120 data164,"ldy $",1," "
  203. 2130 data165,"lda $",1," "
  204. 2140 data166,"ldx $",1," "
  205. 2150 data168,"tay",0," "
  206. 2160 data169,"lda #$",1," "
  207. 2170 data170,"tax",0," "
  208. 2180 data172,"ldy $",2," "
  209. 2190 data173,"lda $",2," "
  210. 2200 data174,"ldx $",2," "
  211. 2210 data176,"bcs $",1," "
  212. 2220 data177,"lda ($",1,"),y"
  213. 2230 data180,"ldy $",1,",x"
  214. 2240 data181,"lda $",1,",x"
  215. 2250 data182,"ldx $",1,",y"
  216. 2260 data184,"clv",0," "
  217. 2270 data185,"lda $",2,",y"
  218. 2280 data186,"tsx",0," "
  219. 2290 data188,"ldy $",2,",x"
  220. 2300 data189,"lda $",2,",x"
  221. 2310 data192,"cpy #$",1," "
  222. 2320 data193,"cmp ($",1,",x)"
  223. 2330 data196,"cpy $",1," "
  224. 2340 data197,"cmp $",1," "
  225. 2350 data198,"dec $",1," "
  226. 2360 data200,"iny",0," "
  227. 2370 data201,"cmp #$",1," "
  228. 2380 data202,"dex",0," "
  229. 2390 data204,"cpy $",2," "
  230. 2400 data205,"cmp $",2," "
  231. 2410 data206,"dec $",2," "
  232. 2420 data208,"bne $",1," "
  233. 2430 data209,"cmp ($",1,"),y"
  234. 2440 data213,"cmp $",1,",x"
  235. 2450 data214,"dec $",1,",x"
  236. 2460 data216,"cld",0," "
  237. 2470 data217,"cmp $",2,",y"
  238. 2480 data221,"cmp $",2,",x"
  239. 2490 data222,"dec $",2,",x"
  240. 2500 data224,"cpx #$",1," "
  241. 2510 data225,"sbc ($",1,",x)"
  242. 2520 data228,"cpx $",1," "
  243. 2530 data229,"sbc $",1," "
  244. 2540 data230,"inc $",1," "
  245. 2550 data232,"inx",0," "
  246. 2560 data233,"sbc #$",1," "
  247. 2570 data234,"nop",0," "
  248. 2580 data236,"cpx $",2," "
  249. 2590 data237,"sbc $",2," "
  250. 2600 data238,"inc $",2," "
  251. 2610 data240,"beq $",1," "
  252. 2620 data241,"sbc ($",1,"),y "
  253. 2630 data245,"sbc $",1,",x"
  254. 2640 data246,"inc $",1,",x"
  255. 2650 data248,"sed",0," "
  256. 2660 data249,"sbc $",2,",y"
  257. 2670 data253,"sbc $",2,",x"
  258. 2680 data254,"inc $",2,",x"
  259. 2690 data2,"???",0," "
  260. 2700 ifleft$(hd$,1)="y"thenprint#4:close4
  261. 2710 print"complete."
  262. 2720 print"would you like to disdump some more?"
  263. 2730 poke198,0:wait198,1:geta$:ifa$<>"y"anda$<>"n"thenpoke53280,rnd(1)*15:goto2730
  264. 2740 ifa$="y"then360
  265. 2750 goto63000
  266. 2760 :
  267. 63000 rem    connect back to l.s.
  268. 63001 poke55,0:poke56,160:poke643,0:poke644,160:clr
  269. 63002 print"[147]load"chr$(34)"payload"chr$(34)",8":print"run"
  270. 63004 poke198,0:poke631,13:poke632,13:poke198,2:end
  271.