home *** CD-ROM | disk | FTP | other *** search
/ Commodore Disk UserVolume 4 #7 / Commodore_Disk_User_Vol.4_7_1991_-.d64 / trace (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  3KB  |  145 lines

  1. 10 bo=53280:ba=bo+1:dimmi$(20):gosub100:gosub600:gosub300:gosub8000:goto9000
  2. 20 :
  3. 21 :
  4. 22 :
  5. 100 mi$(0)="         lda #0    [161]"
  6. 110 mi$(1)="         sta tmp   [161]"
  7. 120 mi$(2)="         sta res   [161]"
  8. 130 mi$(3)="         sta res+1 [161]"
  9. 140 mi$(4)="         ldx #8    [161]"
  10. 150 mi$(5)="mult     lsr mpr   [161]"
  11. 160 mi$(6)="         bcc skip [160][161]"
  12. 170 mi$(7)="         lda res   [161]"
  13. 180 mi$(8)="         clc       [161]"
  14. 190 mi$(9)="         adc mpd   [161]"
  15. 200 mi$(10)="         sta res   [161]"
  16. 210 mi$(11)="         lda res+1 [161]"
  17. 220 mi$(12)="         adc tmp   [161]"
  18. 230 mi$(13)="         sta res+1 [161]"
  19. 240 mi$(14)="skip     asl mpd   [161]"
  20. 250 mi$(15)="         rol tmp   [161]"
  21. 260 mi$(16)="         dex       [161]"
  22. 270 mi$(17)="         bne mult  [161]"
  23. 271 mi$(18)="         rts       [161]"
  24. 275 e$="                                       "
  25. 280 return
  26. 297 :
  27. 298 :
  28. 299 :
  29. 300 printtab(22)"   registers"
  30. 310 printtab(22)"[154]x reg.[146][151] 00001000"
  31. 320 printtab(22)"[150]a reg.[146][151] 00000000"
  32. 330 printtab(22)"[159]tmp.  [146][151] 00000000"
  33. 340 printtab(22)"[155]res.  [146][151] 00000000"
  34. 350 printtab(22)"res+1.[146][151] 00000000"
  35. 360 printtab(22)"[153]mpr.  [146][151] 00000011"
  36. 370 printtab(22)"mpd.  [146][151] 00000101"
  37. 380 printtab(22)"[152]c.flag[146][151] 0"
  38. 390 printtab(5)"[154] use space bar to run trace "
  39. 395 return
  40. 490 :
  41. 495 :
  42. 500 gosub570:i=128
  43. 510 ifbyteandithenprint"1";:goto530
  44. 520 print"0";
  45. 530 i=i/2:ifi>.5then510
  46. 540 gosub580
  47. 550 return
  48. 560 :
  49. 570 print"":rr=peek(214):cc=peek(211):poke214,x1:poke211,29:sys58640:return
  50. 580 poke214,rr:poke211,cc:sys58640:return
  51. 590 :
  52. 591 :
  53. 592 :
  54. 600 pokebo,6:pokeba,6:print"[147][158]   basic machine language progrmming"
  55. 610 print"               techniques"
  56. 615 print"         multiplication tracer"
  57. 616 print"         [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
  58. 620 print"type in multiplicand,please"
  59. 630 print"restricted to between 1 and 255"
  60. 635 inputmd:if(md<1)or(md>255)thenprint"[145][145]":goto635
  61. 640 print"type in multiplier, please"
  62. 650 print"restricted to between 1 and 255"
  63. 655 inputmr:if(mr<1)or(mr>255)thenprint"[145][145]":goto655
  64. 660 m=0:q=0:ll=mr:hh=md:pokebo,11:pokeba,0:print"[147]"
  65. 670 return
  66. 700 geta$:ifa$=""then700
  67. 710 an=rh*256+rl
  68. 720 print"[147]the result of your input - ":printhh"x"ll"="an
  69. 730 print"do you want another go <y=yes:n=no>"
  70. 740 geta$:ifa$=""then740
  71. 750 ifa$="y"thenrun
  72. 760 ifa$<>"n"then740
  73. 770 print"[147][154]":pokebo,14:pokeba,6:end
  74. 997 :
  75. 998 :
  76. 999 :
  77. 1000 x1=4:a=0:byte=a:gosub500:return
  78. 1010 x1=7:t1=0:byte=t1:gosub500:return
  79. 1020 x1=10:rl=0:byte=rl:gosub500:return
  80. 1030 x1=12:rh=0:byte=rh:gosub500:return
  81. 1040 x1=2:x=8:byte=x:gosub500:return
  82. 1050 ifmrand1thenc=1:goto1070
  83. 1060 c=0
  84. 1070 mr=int(mr/2)
  85. 1080 x1=15:byte=mr:gosub500
  86. 1090 x1=20:gosub570:ifcthenprint"1":return
  87. 1095 print"0":return
  88. 1100 ifc=0thenr1=r1+1:gosub8070:rb=14:gosub8080:
  89. 1101 return
  90. 1110 x1=4:a=rl:byte=a:gosub500:return
  91. 1120 c=0:x1=20:gosub570:print"0":return
  92. 1130 a=a+md
  93. 1131 ifa>255thenc=1:a=a-256:gosub1090
  94. 1132 x1=4:byte=a:gosub500:return
  95. 1140 rl=a:x1=10:byte=rl:gosub500:return
  96. 1150 x1=4:a=rh:byte=a:gosub500:return
  97. 1160 a=a+t1+c:x1=4:byte=a:gosub500:return
  98. 1170 rh=a:x1=12:byte=rh:gosub500:return
  99. 1180 ifmdand128thenc=1:goto1200
  100. 1190 c=0
  101. 1200 md=int(md*2):ifc=1thenmd=md-256
  102. 1210 x1=17:byte=md:gosub500
  103. 1220 x1=20:gosub570:ifcthenprint"1":return
  104. 1230 print"0":return
  105. 1250 ct=c:ift1and128thenc=1:goto1280
  106. 1270 c=0
  107. 1280 t1=int(t1*2)+ct
  108. 1290 x1=7:byte=t1:gosub500
  109. 1300 x1=20:gosub570:ifcthenprint"1":return
  110. 1310 print"0":return
  111. 1320 x=x-1:x1=2:byte=x:gosub500
  112. 1330 ifx<>0thenz=1:goto1350
  113. 1340 z=0
  114. 1350 rem        x1=21:gosub570:ifxthenprint"1":return
  115. 1360 return: print"0":return
  116. 1370 ifz=1thenr1=r1+1:gosub8070:rb=5:gosub8080:return
  117. 1380 q=1:return
  118. 1390 :
  119. 1391 :
  120. 1392 :
  121. 8000 ln=214:cb=198:mm=18:mn=0:fori=0to18:print"";mi$(i):next:pokeln,0:rb=mn:cl=mn
  122. 8010 gosub8080:gosub9500:return
  123. 8011 :
  124. 8012 :
  125. 8020 geta$:ifa$=""then8020
  126. 8030 ifa$<>" "then8020
  127. 8035 c1=cl:r1=rb
  128. 8040 rb=rb+1:rem    ifrb=mm+1thenq=1
  129. 8045 ifmi$=e$then8020
  130. 8050 if(c1<>cl)or(r1<>rb)thengosub8070:gosub8080
  131. 8060 m=rb:return
  132. 8070 pokeln,r1-mn:print"";mi$(r1):return
  133. 8080 pokeln,rb-mn:print"";mi$(rb)
  134. 8090 return
  135. 9000 ifqthen700
  136. 9010 gosub8020:ifm>8thenm=m-8:goto 9040
  137. 9020 onmgosub1000,1010,1020,1030,1040,1050,1100,1110
  138. 9030 goto9000
  139. 9040 onmgosub1120,1130,1140,1150,1160,1170,1180,1250,1320,1370,1380
  140. 9050 goto9000
  141. 9060 goto9000
  142. 9500 x1=15:byte=mr:gosub500
  143. 9510 x1=17:byte=md:gosub500
  144. 9520 return
  145.