home *** CD-ROM | disk | FTP | other *** search
- 1000 rem ******************************
- 1010 rem *** ***
- 1020 rem *** commodore dossier's ***
- 1030 rem *** disassembler ***
- 1040 rem *** ***
- 1050 rem ******************************
- 1060 :
- 1070 poke56,90:poke52,90:clr:poke53280,0:poke53281,0
- 1080 :
- 1090 rem ** inlezen machinetaal **
- 1100 print "[147]even geduld a.u.b."
- 1110 forl=0to604:readd
- 1120 poke49152+l,d:next
- 1130 :
- 1140 data 076,020,192,076,042,192,076
- 1150 data 128,192,076,159,192,065,065
- 1160 data 080,032,049,057,056,054,169
- 1170 data 096,133,252,169,000,133,251
- 1180 data 162,064,168,145,251,200,208
- 1190 data 251,230,252,202,208,246,096
- 1200 data 169,224,160,192,133,251,132
- 1210 data 252,169,000,160,004,141,071
- 1220 data 192,140,072,192,160,001,177
- 1230 data 251,170,136,177,251,240,028
- 1240 data 141,070,192,238,071,192,208
- 1250 data 003,238,072,192,202,208,242
- 1260 data 165,251,024,105,002,133,251
- 1270 data 144,002,230,252,076,060,192
- 1280 data 162,004,160,000,169,216,141
- 1290 data 111,192,169,001,153,000,216
- 1300 data 200,208,250,238,111,192,202
- 1310 data 208,244,096,032,138,173,076
- 1320 data 247,183,032,253,174,032,122
- 1330 data 192,165,020,141,146,192,032
- 1340 data 253,174,032,122,192,160,000
- 1350 data 166,020,024,032,240,255,032
- 1360 data 253,174,076,160,170,169,145
- 1370 data 133,251,169,005,133,252,169
- 1380 data 185,133,253,169,005,133,254
- 1390 data 162,012,160,037,177,253,145
- 1400 data 251,136,016,249,024,165,251
- 1410 data 105,040,133,251,144,002,230
- 1420 data 252,024,165,253,105,040,133
- 1430 data 253,144,002,230,254,202,208
- 1440 data 222,160,037,169,032,145,251
- 1450 data 136,016,251,096,016,251,096
- 1460 data 112,001,064,034,114,001,064
- 1470 data 003,110,001,093,001,032,001
- 1480 data 002,001,018,001,015,001,014
- 1490 data 001,016,001,018,001,015,001
- 1500 data 007,001,018,001,001,001,013
- 1510 data 002,001,001,058,001,032,019
- 1520 data 093,001,132,001,146,001,138
- 1530 data 001,093,002,032,001,001,001
- 1540 data 019,002,005,001,013,001,002
- 1550 data 001,012,001,005,001,018,001
- 1560 data 006,001,009,001,012,001,005
- 1570 data 001,058,001,032,013,046,001
- 1580 data 001,001,019,001,013,001,032
- 1590 data 002,093,001,129,002,144,001
- 1600 data 093,001,107,001,064,019,114
- 1610 data 001,064,014,113,001,064,003
- 1620 data 115,001,093,001,032,001,002
- 1630 data 001,005,001,007,001,009,001
- 1640 data 014,001,001,001,004,001,018
- 1650 data 001,005,001,019,001,058,001
- 1660 data 032,001,036,001,045,004,032
- 1670 data 001,093,001,032,001,023,001
- 1680 data 005,001,018,001,011,001,001
- 1690 data 001,004,001,018,001,005,001
- 1700 data 019,001,058,001,032,001,036
- 1710 data 001,045,004,032,001,093,001
- 1720 data 107,001,064,019,113,001,064
- 1730 data 018,115,001,093,001,032,001
- 1740 data 008,001,021,001,009,001,004
- 1750 data 001,009,001,007,001,005,001
- 1760 data 032,001,001,001,003,001,020
- 1770 data 001,009,001,022,001,009,001
- 1780 data 020,001,005,001,009,001,020
- 1790 data 001,058,001,032,018,093,001
- 1800 data 107,001,064,008,114,001,064
- 1810 data 006,114,001,064,022,115,001
- 1820 data 093,001,160,001,140,001,129
- 1830 data 001,130,001,133,001,140,001
- 1840 data 160,002,093,001,160,001,141
- 1850 data 001,142,001,133,001,141,001
- 1860 data 160,001,093,001,160,001,143
- 1870 data 001,144,001,133,001,146,001
- 1880 data 129,001,142,001,132,001,160
- 1890 data 014,093,001,107,001,064,008
- 1900 data 113,001,064,006,113,001,064
- 1910 data 022,115,001,093,001,032,038
- 1920 data 093,002,032,038,093,002,032
- 1930 data 038,093,002,032,038,093,002
- 1940 data 032,038,093,002,032,038,093
- 1950 data 002,032,038,093,002,032,038
- 1960 data 093,002,032,038,093,002,032
- 1970 data 038,093,002,032,038,093,002
- 1980 data 032,038,093,002,032,038,093
- 1990 data 001,109,001,064,038,125,001
- 2000 data 032,040,000
- 2010 :
- 2020 rem ** variabelen declareren **
- 2030 b6=6*4096:b8=8*4096
- 2040 :
- 2050 mc = 12*4096
- 2060 cram = mc
- 2070 prscr = mc+3
- 2080 write = mc+6
- 2090 scroll= mc+9
- 2100 :
- 2110 n$=chr$(0):c$=chr$(13):s$="[221]":sp$=" "
- 2120 :
- 2130 sys cram
- 2140 :
- 2150 dim m1$(255),m2$(255),n%(255)
- 2160 fori=0to202
- 2170 reada%,m1$(a%),n%(a%),m2$(a%):nexti:close1
- 2180 cs=8*1024
- 2190 :
- 2200 sysprscr
- 2210 forl=10to22
- 2220 syswrite,1,l," [158] [159] "
- 2230 nextl
- 2240 goto3240
- 2250 :
- 2260 forl=1to20:sysscroll:next:return
- 2270 :
- 2280 :
- 2290 rem ** invoerroutine **
- 2300 syswrite,xq,yq,left$(sp$,ml)
- 2310 syswrite,xq,yq,s$;
- 2320 co=0:iv$=""
- 2330 gett$:ift$=""then2330
- 2340 t=asc(t$)
- 2350 ift$=c$thenprint"[157] ":return
- 2360 ift$=chr$(20)andco>0thenprint"[157] [157][157]";s$;:co=co-1:iv$=left$(iv$,len(iv$)-1)
- 2370 ifco=mlthen2330
- 2380 ift=34then2330
- 2390 ift>31andt<96thenprint"[157]";t$;s$;:co=co+1:iv$=iv$+t$
- 2400 goto 2330
- 2410 :
- 2420 rem ** print en scroll **
- 2430 syswrite,1,22,ww$:sysscroll:return
- 2440 :
- 2450 rem ** link & line **
- 2460 a=65535:gosub2730
- 2470 r1%=r1%+1
- 2480 a=1000+r1%:goto2730
- 2490 :
- 2500 rem ** lees byte **
- 2510 get#2,a$:sd%=st:a$=a$+n$
- 2520 a=asc(a$):ad=ad+1:return
- 2530 :
- 2540 rem ** schrijf byte **
- 2550 ifos%thenprint#3,chr$(a);
- 2560 fl%=fl%+1:return
- 2570 :
- 2580 rem ** schrijf string **
- 2590 ifos%thenprint#3,a$;
- 2600 fl%=fl%+len(a$):return
- 2610 :
- 2620 rem ** lees errorkanaal **
- 2630 input#1,a,b$,c,d:return
- 2640 close1:close2:close15
- 2650 syswrite,1,22," ";
- 2660 printa;b$;c;d
- 2670 goto 3240
- 2680 :
- 2690 rem ** lees woord **
- 2700 gosub2500:a1=a:gosub2500
- 2710 a=256*a+a1:return
- 2720 :
- 2730 rem ** schrijf woord **
- 2740 a1=int(a/256):a=a-256*a1
- 2750 gosub2540:a=a1:gosub2540:return
- 2760 :
- 2770 rem ** a$=a$+hex$(a) **
- 2780 ifa>9thena=a+7
- 2790 a=a+48:a$=a$+chr$(a):return
- 2800 :
- 2810 rem ** set adresflag **
- 2820 a2=a:a1=int(a/cs):a=a-cs*a1
- 2830 pokeb6+a,peek(b6+a)or(2^a1)
- 2840 ifx<>2then2870
- 2850 pokeb8+a,peek(b8+a)or(2^a1)
- 2860 a=a2:rem lda/sta etc op adres
- 2870 a=a2:return
- 2880 :
- 2890 rem ** test adresflag **
- 2900 a1=int(a/cs):a=a-cs*a1:e=a
- 2910 a=(peek(b6+a)and(2^a1))
- 2920 e=(peek(b8+e)and(2^a1)):return
- 2930 :
- 2940 rem ** dec hex a=>a$ **
- 2950 a1=a:a2=a:a$=""
- 2960 a=int(a1/4096):a1=a1-4096*a
- 2970 gosub2770
- 2980 a=int(a1/256):a1=a1-256*a
- 2990 gosub2770
- 3000 a=int(a1/16):a1=a1-16*a:gosub2770
- 3010 a=a1:gosub2770:a=a2
- 3020 return
- 3030 :
- 3040 rem ** bereken sprong (branch) **
- 3050 ifa<128thena=ad+a:return
- 3060 a=ad-256+a:return
- 3070 :
- 3080 rem ** adres => label ? **
- 3090 gosub2940
- 3100 ifa2<saora2>mathena$="$"+a$:return
- 3110 a$="l"+a$:return
- 3120 :
- 3130 rem ** print **
- 3140 ww$=p$
- 3150 ifasc(left$(ww$,1))<128then3170
- 3160 ww$=" "+chr$(asc(ww$)and127)+right$(ww$,len(ww$)-1)
- 3170 ww$=" "+ww$
- 3180 ww$=left$(ww$,7)+" "+mid$(ww$,8,3)+" "+mid$(ww$,11,10)
- 3190 gosub2420:gosub2450
- 3200 a$=p$:gosub2580
- 3210 a=0:gosub2550:return
- 3220 :
- 3230 rem ** start programma **
- 3240 xq=17:yq=1:ml=16:gosub2290
- 3250 ifiv$=""then3240
- 3260 mc$=iv$
- 3270 df$="":os%=1:mb=119
- 3280 xq=17:yq=2:ml=12:gosub2290
- 3290 df$=iv$:ifdf$=""thenos%=0
- 3300 df$=left$(df$+" ",12):open1,8,15,"i"
- 3310 open2,8,2,mc$+",p,r"
- 3320 gosub2260
- 3330 gosub2620:ifathen2640
- 3340 ifos%thenopen3,8,3,df$+".asm,p,w"
- 3350 ifos%thengosub2620:ifathen2640
- 3360 fl%=0 :rem file lengte source
- 3370 :
- 3380 rem ** pass (1) **
- 3390 syswrite,22,6,"labels maken... "
- 3400 gosub2690:gosub2940
- 3410 syswrite,15,4,a$
- 3420 sa=a :rem sa=startadres
- 3430 ad=sa:rem ad=werkadres
- 3440 a=ad:gosub2940:syswrite,34,4,a$
- 3450 gosub2500:x=n%(a):ifstthen3570
- 3460 ifx=0then3440:rem data of implied
- 3470 ifx=1thengosub2500:goto3440
- 3480 ifx=5then3540
- 3490 :
- 3500 rem ** x=2/x=6:word **
- 3510 gosub2690:gosub2940:ww$=" $"+a$:gosub2420:gosub2810
- 3520 goto3440
- 3530 :
- 3540 rem ** voorwaardelijke sprong **
- 3550 gosub2500:gosub3040:gosub2940:ww$=" $"+a$:gosub2420:gosub2810:goto3440
- 3560 :
- 3570 rem ** pass2 **
- 3580 ma=ad:close2:open2,8,2,mc$+",p,r"
- 3590 gosub2690:ad=a-1:syswrite,22,6,"disassembleren"
- 3600 gosub2260
- 3610 a=ad+1
- 3620 gosub2940:a=2049
- 3630 gosub2730:p$="[207]rg $"+a$
- 3640 gosub3130:goto3660
- 3650 ifsd%then4030
- 3660 gosub2500:x=a:p$=""
- 3670 a=ad+1:gosub2890:z1=a:a=ad+2:gosub2890:z2=a:a=ad:gosub2890
- 3680 ifathena=ad:gosub2940:p$="l"+a$+" ":bf=0:goto3700
- 3690 p$=""
- 3700 p1$=p$
- 3710 a=ad:gosub2940:syswrite,34,4,a$
- 3720 ifethen3820
- 3730 ifp$<>""then3770
- 3740 ifm1$(x)=""then3760
- 3750 p$=chr$(asc(m1$(x))or128)+right$(m1$(x),len(m1$(x))-1)
- 3760 goto3780
- 3770 p$=p$+m1$(x)
- 3780 onn%(x)goto3880,3920,3800,3800,3960,3920
- 3790 :
- 3800 rem ** implied **
- 3810 ifm1$(x)<>""thengosub3130:goto3650
- 3820 a=x:gosub2940
- 3830 ifp$=""thenp$="[196]at $":goto3850
- 3840 p$=p$+"dat $"
- 3850 p$=p$+mid$(a$,3)
- 3860 gosub3130:goto4000
- 3870 :
- 3880 rem ** byte **
- 3890 ifz1thenp$=p1$:goto3820
- 3900 gosub2500:gosub2940:p$=p$+"$"+mid$(a$,3)+m2$(x):gosub3130:goto4000
- 3910 :
- 3920 rem ** woord **
- 3930 ifz1orz2thenp$=p1$:goto3820
- 3940 gosub2690:gosub3080:p$=p$+a$+m2$(x):gosub3130:goto4000
- 3950 :
- 3960 rem ** branch **
- 3970 ifz1thenp$=p1$:goto3820
- 3980 gosub2500:gosub3040:a=a+1:gosub3080:p$=p$+a$:gosub3130:goto4000
- 3990 :
- 4000 rem ** kijk lengte file na **
- 4010 iffl%<256*mbthen3650
- 4020 :
- 4030 rem ** einde. sluit files **
- 4040 close2:gosub2540
- 4050 gosub2730:gosub2730
- 4060 close3:fl%(fp%)=fl%
- 4070 gosub2620:gosub2260:goto2640
- 4080 :
- 4090 rem ** data voor mc-instructies **
- 4100 :
- 4110 data0 ,"brk" ,0,
- 4120 data1 ,"ora (",1,",x)"
- 4130 data3 ,"slo (",1,"),y"
- 4140 data5 ,"ora " ,1,
- 4150 data6 ,"asl " ,1,
- 4160 data7 ,"slo " ,1,
- 4170 data8 ,"php" ,0,
- 4180 data9 ,"ora #",1,
- 4190 data10 ,"asl a",0,
- 4200 data13 ,"ora " ,2,
- 4210 data14 ,"asl " ,2,
- 4220 data15 ,"slo " ,2,
- 4230 data16 ,"bpl " ,5,
- 4240 data17 ,"ora (",1,"),y"
- 4250 data19 ,"slo (",1,",x)"
- 4260 data21 ,"ora " ,1,",x"
- 4270 data22 ,"asl " ,1,",x"
- 4280 data23 ,"slo " ,1,",x"
- 4290 data24 ,"clc" ,0,
- 4300 data25 ,"ora " ,2,",y"
- 4310 data27 ,"slo " ,2,",y"
- 4320 data29 ,"ora " ,2,",x"
- 4330 data30 ,"asl " ,2,",x"
- 4340 data31 ,"slo " ,2,",x"
- 4350 data32 ,"jsr " ,6,
- 4360 data33 ,"and (",1,",x)"
- 4370 data35 ,"rla (",1,",x)"
- 4380 data36 ,"bit " ,1,
- 4390 data37 ,"and " ,1,
- 4400 data38 ,"rol " ,1,
- 4410 data39 ,"rla " ,1,
- 4420 data40 ,"plp" ,0,
- 4430 data41 ,"and #",1,
- 4440 data42 ,"rol a",0,
- 4450 data44 ,"bit " ,2,
- 4460 data45 ,"and " ,2,
- 4470 data46 ,"rol " ,2,
- 4480 data47 ,"rla " ,2,
- 4490 data48 ,"bmi " ,5,
- 4500 data49 ,"and (",1,"),y"
- 4510 data51 ,"rla (",1,"),y"
- 4520 data53 ,"and " ,1,",x"
- 4530 data54 ,"rol " ,1,",x"
- 4540 data55 ,"rla " ,1,",x"
- 4550 data56 ,"sec" ,0,
- 4560 data57 ,"and " ,2,",y"
- 4570 data58 ,"cli" ,0,
- 4580 data59 ,"rla " ,2,",y"
- 4590 data61 ,"and " ,2,",x"
- 4600 data62 ,"rol " ,2,",x"
- 4610 data63 ,"rla " ,2,",x"
- 4620 data64 ,"rti" ,0,
- 4630 data65 ,"eor (",1,",x)
- 4640 [131]67 ,"sre (",1,",x)
- 4650 data69 ,"eor " ,1,
- 4660 data70 ,"lsr " ,1,
- 4670 data71 ,"sre " ,1,
- 4680 data72 ,"pha" ,0,
- 4690 data73 ,"eor #",1,
- 4700 data74 ,"lsr a",0,
- 4710 data76 ,"jmp " ,6,
- 4720 data77 ,"eor " ,2,
- 4730 data78 ,"lsr " ,2,
- 4740 data79 ,"sre " ,2,
- 4750 data80 ,"bvc " ,5,
- 4760 data81 ,"eor (",1,"),y"
- 4770 data83 ,"sre (",1,"),y"
- 4780 data85 ,"eor " ,1,",x"
- 4790 data86 ,"lsr " ,1,",x"
- 4800 data87 ,"sre " ,1,",x"
- 4810 data88 ,"cli" ,0,
- 4820 data89 ,"eor " ,2,",y"
- 4830 data91 ,"sre " ,2,",y"
- 4840 data93 ,"eor " ,2,",x"
- 4850 data94 ,"lsr " ,2,",x"
- 4860 data95 ,"sre " ,2,",x"
- 4870 data96 ,"rts" ,0,
- 4880 data97 ,"adc (",1,",x)"
- 4890 data99 ,"rra (",1,",x)"
- 4900 data101,"adc " ,1,
- 4910 data102,"ror " ,1,
- 4920 data103,"rra " ,1,
- 4930 data104,"pla" ,0,
- 4940 data105,"adc #",1,
- 4950 data106,"ror a",0,
- 4960 data108,"jmp (",2,")"
- 4970 data109,"adc " ,2,
- 4980 data110,"ror " ,2,
- 4990 data111,"rra " ,2,
- 5000 data112,"bvs " ,5,
- 5010 data113,"adc (",1,"),y"
- 5020 data115,"rra (",1,"),y"
- 5030 data117,"adc " ,1,",x"
- 5040 data118,"ror " ,1,",x"
- 5050 data119,"rra " ,1,",x"
- 5060 data120,"sei" ,0,
- 5070 data121,"adc " ,2,",y"
- 5080 data123,"rra " ,2,",y"
- 5090 data125,"adc " ,2,",x"
- 5100 data126,"ror " ,2,",x"
- 5110 data127,"rra " ,2,",x"
- 5120 data129,"sta (",1,",x)"
- 5130 data131,"aax (",1,",x)"
- 5140 data132,"sty " ,1,
- 5150 data133,"sta " ,1,
- 5160 data134,"stx " ,1,
- 5170 data135,"aax " ,1,
- 5180 data136,"dey" ,0,
- 5190 data138,"txa" ,0,
- 5200 data140,"sty " ,2,
- 5210 data141,"sta " ,2,
- 5220 data142,"stx " ,2,
- 5230 data143,"aax " ,2,
- 5240 data144,"bcc " ,5,
- 5250 data145,"sta (",1,"),y"
- 5260 data148,"sty " ,1,",x"
- 5270 data149,"sta " ,1,",x"
- 5280 data150,"stx " ,1,",y"
- 5290 data151,"aax " ,1,",y"
- 5300 data152,"tya" ,0,
- 5310 data153,"sta " ,2,",y"
- 5320 data154,"txs" ,0,
- 5330 data157,"sta " ,2,",x"
- 5340 data160,"ldy #",1,
- 5350 data161,"lda (",1,",x)"
- 5360 data162,"ldx #",1,
- 5370 data163,"lax (",1,",x)"
- 5380 data164,"ldy " ,1,
- 5390 data165,"lda " ,1,
- 5400 data166,"ldx " ,1,
- 5410 data167,"lax " ,1,
- 5420 data168,"tay" ,0,
- 5430 data169,"lda #",1,
- 5440 data170,"tax" ,0,
- 5450 data172,"ldy " ,2,
- 5460 data173,"lda " ,2,
- 5470 data174,"ldx " ,2,
- 5480 data175,"lax " ,2,
- 5490 data176,"bcs " ,5,
- 5500 data177,"lda (",1,"),y"
- 5510 data179,"lax (",1,"),y"
- 5520 data180,"ldy " ,1,",x"
- 5530 data181,"lda " ,1,",x"
- 5540 data182,"ldx " ,1,",y"
- 5550 data183,"lax " ,1,",y"
- 5560 data184,"clv" ,0,
- 5570 data185,"lda " ,2,",y"
- 5580 data186,"tsx" ,0,
- 5590 data188,"ldy " ,2,",x"
- 5600 data189,"lda " ,2,",x"
- 5610 data190,"ldx " ,2,",y"
- 5620 data191,"lax " ,2,",y"
- 5630 data192,"cpy #",1,
- 5640 data193,"cmp (",1,",x)"
- 5650 data195,"dcp (",1,",x)"
- 5660 data196,"cpy " ,1,
- 5670 data197,"cmp " ,1,
- 5680 data198,"dec " ,1,
- 5690 data199,"dcp " ,1,
- 5700 data200,"iny" ,0,
- 5710 data201,"cmp #",1,
- 5720 data202,"dex" ,0,
- 5730 data204,"cpy " ,2,
- 5740 data205,"cmp " ,2,
- 5750 data206,"dec " ,2,
- 5760 data207,"dcp " ,2,
- 5770 data208,"bne " ,5,
- 5780 data209,"cmp (",1,"),y"
- 5790 data211,"dcp (",1,"),y"
- 5800 data213,"cmp " ,1,",x"
- 5810 data214,"dec " ,1,",x"
- 5820 data215,"dcp " ,1,",x"
- 5830 data216,"cld" ,0,
- 5840 data217,"cmp " ,2,",y"
- 5850 data219,"dcp " ,2,",y"
- 5860 data221,"cmp " ,2,",x"
- 5870 data222,"dec " ,2,",x"
- 5880 data223,"dcp " ,2,",x"
- 5890 data224,"cpx #",1,
- 5900 data225,"sbc (",1,",x)"
- 5910 data227,"isc (",1,",x)"
- 5920 data228,"cpx " ,1,
- 5930 data229,"sbc " ,1,
- 5940 data230,"inc " ,1,
- 5950 data231,"isc " ,1,
- 5960 data232,"inx" ,0,
- 5970 data233,"sbc #",1,
- 5980 data234,"nop" ,0,
- 5990 data236,"cpx " ,2,
- 6000 data237,"sbc " ,2,
- 6010 data238,"inc " ,2,
- 6020 data239,"isc " ,2,
- 6030 data240,"beq " ,5,
- 6040 data241,"sbc (",1,"),y"
- 6050 data243,"isc (",1,"),y"
- 6060 data245,"sbc " ,1,",x"
- 6070 data246,"inc " ,1,",x"
- 6080 data247,"isc " ,1,",x"
- 6090 data248,"sed" ,0,
- 6100 data249,"sbc " ,2,",y"
- 6110 data251,"isc " ,2,",y"
- 6120 data253,"sbc " ,2,",x"
- 6130 data254,"inc " ,2,",x"
-