home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disk UserVolume 4 #7
/
Commodore_Disk_User_Vol.4_7_1991_-.d64
/
trace
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
145 lines
10 bo=53280:ba=bo+1:dimmi$(20):gosub100:gosub600:gosub300:gosub8000:goto9000
20 :
21 :
22 :
100 mi$(0)=" lda #0 [161]"
110 mi$(1)=" sta tmp [161]"
120 mi$(2)=" sta res [161]"
130 mi$(3)=" sta res+1 [161]"
140 mi$(4)=" ldx #8 [161]"
150 mi$(5)="mult lsr mpr [161]"
160 mi$(6)=" bcc skip [160][161]"
170 mi$(7)=" lda res [161]"
180 mi$(8)=" clc [161]"
190 mi$(9)=" adc mpd [161]"
200 mi$(10)=" sta res [161]"
210 mi$(11)=" lda res+1 [161]"
220 mi$(12)=" adc tmp [161]"
230 mi$(13)=" sta res+1 [161]"
240 mi$(14)="skip asl mpd [161]"
250 mi$(15)=" rol tmp [161]"
260 mi$(16)=" dex [161]"
270 mi$(17)=" bne mult [161]"
271 mi$(18)=" rts [161]"
275 e$=" "
280 return
297 :
298 :
299 :
300 printtab(22)" registers"
310 printtab(22)"[154]x reg.[146][151] 00001000"
320 printtab(22)"[150]a reg.[146][151] 00000000"
330 printtab(22)"[159]tmp. [146][151] 00000000"
340 printtab(22)"[155]res. [146][151] 00000000"
350 printtab(22)"res+1.[146][151] 00000000"
360 printtab(22)"[153]mpr. [146][151] 00000011"
370 printtab(22)"mpd. [146][151] 00000101"
380 printtab(22)"[152]c.flag[146][151] 0"
390 printtab(5)"[154] use space bar to run trace "
395 return
490 :
495 :
500 gosub570:i=128
510 ifbyteandithenprint"1";:goto530
520 print"0";
530 i=i/2:ifi>.5then510
540 gosub580
550 return
560 :
570 print"":rr=peek(214):cc=peek(211):poke214,x1:poke211,29:sys58640:return
580 poke214,rr:poke211,cc:sys58640:return
590 :
591 :
592 :
600 pokebo,6:pokeba,6:print"[147][158] basic machine language progrmming"
610 print" techniques"
615 print" multiplication tracer"
616 print" [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
620 print"type in multiplicand,please"
630 print"restricted to between 1 and 255"
635 inputmd:if(md<1)or(md>255)thenprint"[145][145]":goto635
640 print"type in multiplier, please"
650 print"restricted to between 1 and 255"
655 inputmr:if(mr<1)or(mr>255)thenprint"[145][145]":goto655
660 m=0:q=0:ll=mr:hh=md:pokebo,11:pokeba,0:print"[147]"
670 return
700 geta$:ifa$=""then700
710 an=rh*256+rl
720 print"[147]the result of your input - ":printhh"x"ll"="an
730 print"do you want another go <y=yes:n=no>"
740 geta$:ifa$=""then740
750 ifa$="y"thenrun
760 ifa$<>"n"then740
770 print"[147][154]":pokebo,14:pokeba,6:end
997 :
998 :
999 :
1000 x1=4:a=0:byte=a:gosub500:return
1010 x1=7:t1=0:byte=t1:gosub500:return
1020 x1=10:rl=0:byte=rl:gosub500:return
1030 x1=12:rh=0:byte=rh:gosub500:return
1040 x1=2:x=8:byte=x:gosub500:return
1050 ifmrand1thenc=1:goto1070
1060 c=0
1070 mr=int(mr/2)
1080 x1=15:byte=mr:gosub500
1090 x1=20:gosub570:ifcthenprint"1":return
1095 print"0":return
1100 ifc=0thenr1=r1+1:gosub8070:rb=14:gosub8080:
1101 return
1110 x1=4:a=rl:byte=a:gosub500:return
1120 c=0:x1=20:gosub570:print"0":return
1130 a=a+md
1131 ifa>255thenc=1:a=a-256:gosub1090
1132 x1=4:byte=a:gosub500:return
1140 rl=a:x1=10:byte=rl:gosub500:return
1150 x1=4:a=rh:byte=a:gosub500:return
1160 a=a+t1+c:x1=4:byte=a:gosub500:return
1170 rh=a:x1=12:byte=rh:gosub500:return
1180 ifmdand128thenc=1:goto1200
1190 c=0
1200 md=int(md*2):ifc=1thenmd=md-256
1210 x1=17:byte=md:gosub500
1220 x1=20:gosub570:ifcthenprint"1":return
1230 print"0":return
1250 ct=c:ift1and128thenc=1:goto1280
1270 c=0
1280 t1=int(t1*2)+ct
1290 x1=7:byte=t1:gosub500
1300 x1=20:gosub570:ifcthenprint"1":return
1310 print"0":return
1320 x=x-1:x1=2:byte=x:gosub500
1330 ifx<>0thenz=1:goto1350
1340 z=0
1350 rem x1=21:gosub570:ifxthenprint"1":return
1360 return: print"0":return
1370 ifz=1thenr1=r1+1:gosub8070:rb=5:gosub8080:return
1380 q=1:return
1390 :
1391 :
1392 :
8000 ln=214:cb=198:mm=18:mn=0:fori=0to18:print"";mi$(i):next:pokeln,0:rb=mn:cl=mn
8010 gosub8080:gosub9500:return
8011 :
8012 :
8020 geta$:ifa$=""then8020
8030 ifa$<>" "then8020
8035 c1=cl:r1=rb
8040 rb=rb+1:rem ifrb=mm+1thenq=1
8045 ifmi$=e$then8020
8050 if(c1<>cl)or(r1<>rb)thengosub8070:gosub8080
8060 m=rb:return
8070 pokeln,r1-mn:print"";mi$(r1):return
8080 pokeln,rb-mn:print"";mi$(rb)
8090 return
9000 ifqthen700
9010 gosub8020:ifm>8thenm=m-8:goto 9040
9020 onmgosub1000,1010,1020,1030,1040,1050,1100,1110
9030 goto9000
9040 onmgosub1120,1130,1140,1150,1160,1170,1180,1250,1320,1370,1380
9050 goto9000
9060 goto9000
9500 x1=15:byte=mr:gosub500
9510 x1=17:byte=md:gosub500
9520 return