1 BX3A0DDC9909DDD305ND1C03SL080BSR070B--- 2 /CC240CCS250CEQ270CGE2C0CGT2E0CHI220C--- 3 HS240CIT9509LE2F0CLO250CLS230CLT2D0C--- 4 MI2B0CNE260CPL2A0CRA200CRN210CSR8D0C--- 5 VC280CVS290C/LR0F0BMP9C07OM030BWA3C04--- 6 /AA190DEC0A0B/ND0612OR9809QU0012XG1E10--- 7 /CB0112CC0212DB0312///NC0C0B/MP0E02SR9D02--- 8 //DA960ADBD60ADDDC08DS7E08DUDE08DX9E08--- 9 DY3E08EA3001SL080BSR040B/UL3D0D--- 10 /EG000BOP120D/RA9A0ARBDA0ARC1A04RG0512--- 11 /SH340FUL350F//MB0412OL090BOR060B--- 12 TI3B0DTS390D/BC9209ET0712EX1D0DTA9702TBD702TDDD02TS7F02--- 13 TUDF02TX9F02TY3F02UB9306WI3F0EYN130DYS3F04--- 14 /FR1F10ST0D0B/////// 100 .=5 "MC-6809 ASSEMBLER 1.6"/ 110 M=&+1 C=M+8 S=C+14 I=S+52 K=I+52 120 A=0 O=0 B=0,3 M:B)=0 @=B+1 121 /"MODE P/S/O/2/T"/ 122 D=$ ;=D="P" M:0)=1 126 ;=D="2" /"PASS 2 OK?" D=$ #=270 128 ;=D="T" !=9900 !=3000 !=9990 130 ;=D="S" M:1)=1 135 ;=D="O" M:2)=1 /"OBJECT set address=" O=? 140 ;=D<>13 #=122 147 /"TEXT=" T=? L=T M(2)=O 150 J=0,25 I(J)=J+K K:J)=-1 @=J+1 H=K+J 160 G==+2 S(0)=G J=1,25 @ G=G+1 @=(G:0)="/") S(J)=G+1 @=J+1 180 E=0 P=1 /"PASS 1"/ C(6)=-1 .=6 190 @ !=700 L=L+2 !=900 X=0 ;=L:0)="*" #=250 200 ;=L:X)<>" " !=1000 ;=#L:X) #=250 210 !=1500 !=(W*100)+6900 215 ;=W=$12 A=A+H:0) #=250 220 A=A+(C(0)>0)+(C(1)>=0)+(C(2)>=0)+(C(3)>0) 230 A=A+(C(3)=2)+(C(3)=4) 250 !=500 ;=L(0)<0 E=1 !=10000 260 @=(E) 270 /"PASS 2"/ L=T A=0 O=M(2) E=0 C(6)=-1 !=9900 275 P=2 ;=M:0)=0 .=6 280 @ !=700 C(5)=A X=0 L=L+2 ;=L:0)="*" #=307 290 !=850 ;=L:X)=0 #=305 300 !=1500 !=(W*100)+6900 ;=C(3)>0 !=(100*C(3))+3500 303 !=460 307 ;=M:0) !=520 #=420 400 !=900 !=500 420 ;=L(0)<0 E=1 !=10000 430 @=(E) // 435 ;=M:3)=0.(M:0)<>0) !=3000 440 /"Total error=" ?=M:3) " END=" ??=A ///// 450 !=9990 #=-1 460 ;=W=$12 #=480 470 B=0,4 ;=C(B)>=0 O=O+1 A=A+1 ;=M:1)=1 O:-1)=C(B) 475 @=B+1 ] 480 ;=H:0)=0 ] 485 A=A+H:0) ;=M:1)<>1 O=O+H:0) ] 490 B=1,H:0) O:0)=H:B) O=O+1 @=B+1 ] 500 L=L+X ;=L:0) @ L=L+1 @=(#L:0)) 510 L=L+1 ] 520 ;=L:0)="*" .=21 #=600 530 ??=C(5) " " ;=W<>$12 #=570 540 ;=H:0)=0 .=16 #=600 550 Z=1 !=750 !=600 ;=H:0)<7 ] 560 B=7,H:0) .=5 !=750 / @=B+6 ] 570 B=0,4 ;=C(B)>=0 ?$=C(B) #=580 575 .=2 580 ;=B<>3 " " 590 @=B+1 .=2 600 X=0 ?(5)=L(-1) " " ;=L:X)=" " .=7 #=625 610 ;=L:X)="*" #=630 620 J=6 !=800 ;=#L:X) #=640 625 X=X+1 J=4 !=800 630 ;=L:X)<>0 @ $=L:X) X=X+1 @=(L:X)=0) 640 / #=500 700 M:6)=0 J=0,4 C(J)=-1 @=J+1 ] 750 " " Z=Z,Z+5 ;=Z>H:0) .=2 #=770 760 ?$=H:Z) 770 ;=Z&1=0 " " 780 @=Z+1 ] 800 J=0,J ;=L:X)&$DF=0 " " #=820 810 $=L:X) X=X+1 820 @=J+1 ] 850 ;=L:X)<>" " @ X=X+1 @=(L:X)&$DF=0) ] 860 ] 900 Z=0,5 $=8 @=Z+1 ?(5)=L(-1) " " ] 1000 K=L:X)-"A" X=X+1 1010 ;=K>26+(K<0) "MISS LABEL" X=X-1 @ X=X+1 @=(L:X)&$DF=0) #=20000 1020 Y=I(K) 1025 J=-1 @ J=J+1 D=L:X+J) @=(D<"0").(D>"Z").(J=5) ;=#J V=0 #=1040 1030 ;=L:X)>Y:0) @ Y=Y+7 @=(L:X)<=Y:0)) 1035 V=-1 @ V=V+1 @=(L:X+V)<>Y:V)).(V=J) ;=L:X+V)>Y:V)&(V4+(Y:V)=" ") "multi defnition" #=20000 1050 ;=K<25 J=K+1,25 I(J)=I(J)+7 @=J+1 1060 G=H H=H+7 V=Y-G/2 J=0 @ J=J-1 H(J)=G(J) @=(J"/" Y:J)=L:X) X=X+1 #=1090 1080 Y:J)=" " 1090 @=J+1 Y=Y+J Y(0)=A ] 1510 F=L+X+1 X=X+4 1520 ;=F(0)=$4C42 #=1700 1525 ;=F:0)<"A"+(F:0)>"Z") #=1595 1530 G=F:0)-"A" K=S(G) G=S(G+1) F=F+1 1540 ;=K(0)<>F(0) @ K=K+6 @=(K>=G+(K(0)=F(0))) ;=K>=G #=1595 1568 J=K:2)-"0" G=K:3)-"0" W=K:5)-"0" 1570 G=G>9*-7+G J=J>9*-7+J W=W>9*-7+W 1584 ;=K:4)="1" W=W+16 1590 C(1)=(J*16)+G ] 1595 "OPCODE?" X=X-3 W=13 1600 Z=0,2 C(Z)=$12 @=Z+1 #=20000 1700 F=F+1 !=1530 X=X+1 ;=W<>12 ] 1710 W=17 ] 2000 K=L:X)-"A" ;=K<0+(K>26) "label?" #=20000 2010 Y=I(K) X=X+1 2015 J=-1 @ J=J+1 K=L:X+J) @=(K<"0").(K>"Z").(J=5) ;=#J U=0 #=2060 2020 ;=L:X)>Y:0) @ Y=Y+7 @=(L:X)<=Y:0)) 2025 U=-1 @ U=U+1 @=(L:X+U)<>Y:U)).(U=J) ;=L:X+U)>Y:U)&(U"0" ;=K<"[" X=X+1 #=2040 2060 ;=U=5.(Y:U)=" ") Y=Y+5 D=Y(0) U=1 ] 2070 U=0 D=0 ;=P=2 "Undifined lable" #=20000 2080 ] 3000 J=0,25 K=I(J) 3005 ;=K:0)=$FF #=3020 3007 @ $=J+"A" Z=0,4 $=K:Z) @=Z+1 3010 .=2 K=K+7 ??=K(-1) .=4 @=(K:0)=$FF 3020 @=J+1 / ] 3500 ] 3600 !=6000 C(3)=D&$FF ] 3700 !=6000 C(4)=D C(3)=C:8) C:8)=0 ] 3800 !=3950 !=6000 D=D-A-Z 3810 ;=(D<-$80)+(D>$7F) "S/branch too long." #=20000 3820 C(3)=D&$FF ] 3900 !=3950 !=6000 D=D-A-1-Z 3910 C(4)=D C(3)=C:8) C:8)=0 ] 3950 Z=2 3960 ;=C(0)>0 Z=Z+1 3970 ;=C(2)>0 Z=Z+1 3980 ] 4000 Q=0 R=$10 J=0 M:7)=0 4010 X=X+1 4020 K=L:X) ;=K=0 "missing operand." #=20000 4030 ;=K<>"#" #=4070 4040 X=X+1 R=-$10 ;=(W=9)+(W=10) C(3)=1 ] 4050 ;=(W>4)&(W<9) C(3)=2 ] 4060 "can't immediate." #=20000 4070 ;=K="[" X=X+1 K=L:X) M:7)=1 4080 ;=K="," V=X+1 #=4520 4090 ;=L:X+1)="," ;=(K="A")+(K="B")+(K="D") V=X+2 #=4500 4100 ;=K="<" Q=Q+1 X=X+1 K=L:X) #=4100 4105 ;=K=">" Q=3 X=X+1 K=L:X) 4110 V=X 4120 @ V=V+1 K=L:V) @=(K=",")+#(K&$DF) 4130 ;=K="," V=V+1 #=5000 4140 ;=M:7)=1 C(2)=$9F C(3)=2 ] 4150 ;=W=1 "Nonindex LEA" #=20000 4155 ;=Q=3 #=4170 4160 ;=Q R=0 C(3)=1 ] 4162 ;=C(6)<0 #=4170 4164 Z=X !=6000 X=Z ;=#U "DP undef can't pass 2" #=20000 4166 ;=C:13)*$100=(D&$FF00) R=0 C(3)=1 ] 4170 R=$20 C(3)=2 ] 4500 C(2)=$80+"B"+5-K ;=K="D" C(2)=$8B 4510 !=5500 #=5200 4520 Z=4 C(2)=$80 4530 ;=L:V)="-" V=V+1 Z=2 ;=L:V)="-" V=V+1 Z=3 4540 !=5500 V=V+1 ;=Z<>4 #=4560 4550 ;=L:V)="+" V=V+1 Z=0 ;=L:V)="+" V=V+1 Z=1 4560 ;=#M:7) C(2)=C(2)+Z ] 4570 ;=(Z=0)+(Z=2) "[can't -/+]" #=20000 4580 C(2)=C(2)+$10+Z ] 5000 ;=L:V)<>"P" #=5030 5005 ;=Q=3 #=5020 5010 ;=Q C(2)=$8C C(3)=3 #=5200 5020 C(2)=$8D C(3)=4 #=5200 5030 ;=Q=1 #=5090 5033 ;=Q=3 #=5100 5035 Z=X !=6000 X=Z ;=Q=2 D=D&$1F #=5055 5040 ;=F ;=#U "Offset undifined Can't pass2" #=20000 5045 ;=D=0 C(2)=$84 !=5500 #=5200 5050 ;=(D<-$10)+(D>$F) #=5080 5055 ;=M:7) #=5080 5060 ;=D<0 D=D+$20 5070 C(2)=D !=5500 ] 5080 ;=(D<-$80)+(D>$7F) #=5100 5090 C(2)=$88 !=5500 C(3)=1 #=5200 5100 C(2)=$89 !=5500 C(3)=2 5200 ;=M:7) C(2)=C(2)+$10 5210 ] 5500 J=L:V) ;=J="X" ] 5520 ;=J="Y" C(2)=C(2)+$20 ] 5530 ;=J="U" C(2)=C(2)+$40 ] 5540 ;=J="S" C(2)=C(2)+$60 ] 5550 "Index.Regista?" #=20000 6000 F=0 ;=L:X)=" " X=X+1 6005 ;=W<>$12 ;=M:6)=$FF ] 6006 M:6)=-1 6010 B=L:X) D=0 ;=B="."+(B="*") D=A X=X+1 B=L:X) #=6100 6015 ;=B&$DF=0 #=6140 6020 ;=(B>="A")&(B<="Z") F=F+1 !=2000 B=L:X) #=6100 6030 ;=B<>"$" #=6060 6040 X=X+1 B=L:X) ;=(B>"9")&(B<"A")+(B<"0")+(B>"F") #=6100 6050 @ D=(D*16)+B-"0" ;=B>"9" D=D-7 6055 X=X+1 B=L:X) @=(B>"9")&(B<"A")+(B<"0")+(B>"F") 6060 ;=B=""" D=L:X+1) X=X+3 B=L:X) #=6100 6070 ;=(B<"0")+(B>"9") #=6100 6080 @ D=(D*10)+B-"0" X=X+1 B=L:X) @=(B<"0")+(B>"9") 6100 ;=B="+" X=X+1 G=D !=6010 D=G+D #=6120 6101 ;=B="*" X=X+1 G=D !=6010 D=G*D #=6120 6102 ;=B<>"/" #=6110 6104 X=X++1 G=D !=6010 ;=#U ] 6106 ;=D<>0 D=G/D #=6120 6108 ;=P=2 "ZERO DIV" #=20000 6109 D=0 #=6120 6110 ;=B="-" X=X+1 G=D !=6010 D=G-D 6130 ;=B=","+(B="]")+(B&$DF=0) ] 6140 "ileagal operand" D=0 #=20000 7000 K=L:X) X=X+1 !=7010 #=4000 7010 ;=K="X" C(1)=$30 ] 7020 ;=K="Y" C(1)=$31 ] 7030 ;=K="S" C(1)=$32 ] 7040 ;=K="U" C(1)=$33 ] 7050 "LEA regista?" #=20000 7100 !=4000 ;=C(1)<>$E #=7110 7105 ;=R C(1)=$5E+R ] 7106 ] 7110 ;=C(1)<$80 C(0)=$10 C(1)=C(1)+$60+R ] 7120 C(1)=C(1)+R ] 7200 ;=L:X)<>"C" W=9 C(1)=$94 #=7800 7210 W=4 7300 !=850 ;=L:X)=0 #=4020 7302 ;=L:X+1)="#" X=X+2 C(3)=1 ] 7303 ;=C(1)=$3F "Immediate only" #=20000 7304 G=0 @ X=X+1 K=L:X) X=X+1 !=7350 @=(L:X)<>",") ;=C(1)=$1A C(2)=G ] 7306 C(2)=G!$FF ] 7350 ;=K="C" G=G.1 ] 7351 ;=K="V" G=G.2 ] 7352 ;=K="Z" G=G.4 ] 7353 ;=K="N" G=G.8 ] 7354 ;=K="I" G=G.$10 ] 7355 ;=K="H" G=G.$20 ] 7356 ;=K="F" G=G.$40 ] 7357 ;=K="E" G=G.$80 ] 7358 "Not cc frg." #=20000 7400 ;=L:X)<>"D" W=9 C(1)=$9B #=7800 7450 #=7850 7500 ;=L:X)<>"D" W=9 C(1)=$90 #=7800 7510 #=7850 7600 K=L:X) 7610 ;=K="D" C(1)=$93 C(0)=$10 #=7850 7620 ;=K="U" C(1)=$93 C(0)=$11 #=7850 7630 ;=K="Y" C(0)=$10 #=7850 7640 ;=K="S" C(0)=$11 #=7850 7650 ;=K<>"X" W=9 C(1)=$91 #=7800 7660 #=7850 7700 ;=C(1)<$80 C(0)=$10 C(1)=C(1)+$60 7710 #=7900 7800 ;=L:X)="B" C(1)=C(1)+$40 #=7850 7810 ;=L:X)<>"A" "Not A,B Regista." #=20000 7850 X=X+1 7900 !=4000 C(1)=C(1)+R ] 8000 ;=L:X)="B" C(1)=C(1)+$50 ] 8010 ;=L:X)="A" C(1)=C(1)+$40 ] 8015 ;=L:X)="D"&(C(1)=$F) C(1)=$4F C(2)=$5F ] 8020 !=4000 8030 ;=R C(1)=R+$50+C(1) ] 8040 ] 8100 C(3)=3 ] 8200 ] 8300 ;=L:X)="2" C(0)=$10 ] 8310 ;=L:X)="3" C(0)=$11 ] 8320 ] 8400 ;=L:X)="U" C(1)=C(1)+2 #=8410 8405 ;=L:X)<>"S" "Not STACK Regista." #=20000 8412 G=0 X=X+1 @ X=X+1 K=L:X) !=8415 @ X=X+1 K=L:X) @=(K<"/") 8413 @=(K<>",") C(2)=G ] 8415 ;=K="A" G=G.2 ] 8420 ;=K="B" G=G.4 ] 8425 ;=K="C" G=G.1 ] 8430 ;=K="X" G=G.$10 ] 8435 ;=K="Y" G=G.$20 ] 8440 ;=K="U".(K="S") G=G.$40 ] 8445 ;=K="P" G=G.$80 ] 8450 ;=K<>"D" "REG? PSH/PUL" #=20000 8455 ;=L:X+1)="P" G=G.8 ] 8460 G=G.6 ] 8500 ;=L:X)=0 K=0 #=8565 8502 X=X+1 !=8510 @ K=L:X) X=X+1 @=(K=",")+(K=0) 8504 ;=#K #=8565 8505 Y=G !=8510 ;=Y<8<>(G<8) "tfr 16<>8" #=20000 8508 C(2)=(Y*16)+G ] 8510 K=L:X) 8515 ;=K="A" G=8 ] 8520 ;=K="B" G=9 ] 8525 ;=K="C" G=10 ] 8530 ;=K<>"D" #=8545 8535 ;=L:X+1)="P" G=$B ] 8540 G=0 ] 8545 ;=K="X" G=1 ] 8550 ;=K="Y" G=2 ] 8555 ;=K="U" G=3 ] 8560 ;=K="S" G=4 ] 8565 ;=K<>"P" "REG? TFR" #=20000 8570 G=5 ] 8600 C(3)=4 8610 ;=C(1)=$20 C(1)=$16 ] 8620 ;=C(1)=$8D C(1)=$17 ] 8630 C(0)=$10 ] 8700 K=C(1) C(1)=-1 Z=0 !=(K*100)+8800 H:0)=Z ] 8800 ;=P=2 C(5)=X X=0 !=2000 X=C(5) 8810 C(5)=Y !=6000 Y=C(5) Y(0)=D C(5)=D ] 8900 @ X=X+1 !=6000 !=9800 8910 @=(L:X)<>",") ] 9000 X=X+1 9010 ;=L:X)<>""" "chr?" #=20000 9015 X=X+1 @ D=L:X) !=9800 9020 X=X+1 @=(L:X)="""+(L:X)=0)) 9030 K=L+X ;=K(0)=$2222 #=9015 9040 ;=K(0)=$222C X=X+1 #=8900 9050 ] 9100 @ X=X+1 !=6000 !=9700 9110 @=(L:X)<>",") ] 9200 !=6000 A=A+D O=O+D ] 9300 !=6000 ;=#M:2) O=D 9310 A=D C(5)=D ] 9471 E=1 ] 9500 !=850 9510 !=6000 ;=#U "DP undef" C(5)=-1 C(6)=-1 #=20000 9520 C(6)=D C(5)=D ] 9700 Z=Z+1 H:Z)=D&$FF00/$100 9800 Z=Z+1 H:Z)=D ] 9910 ] 10000 ] 20000 M:3)=M:3)+1 / ;=M:0)<>0&(P=2) ] 20005 ?(5)=L(-1) 20100 Z=0 @ $=L:Z) Z=Z+1 @=(#L:Z)) / .=6 ]