home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Strange Invasion 1994 February
/
Strange_Invasion_1994_02_Lausberg_Stefan_Side_D.atr
/
mult.lst
< prev
next >
Wrap
File List
|
2023-02-26
|
12KB
|
1 lines
¢00010 OPERATOR1 .EQ $E0 Faktor 1¢00020 OPERATOR2 .EQ $E4 Faktor 2¢00030 RESULT .EQ $E8 Ergebnis¢00040 BIT_COUNTER .HX 00 Zahl der zu schiebenden Bits¢00050 SIGN_FLAG .HX 00 Vorzeichenflag¢00060 ------------------------------¢00070 ; 8 Bit ohne Vorzeichen¢00080 MULT8¢00090 LDA #0 Ergebnis auf 0 setzen¢00100 STA RESULT¢00110 STA RESULT+1¢00120 LDA #8 8 Bits sind zu schieben¢00130 STA BIT_COUNTER¢00140 .1¢00150 ASL OPERATOR1 Faktor 1 schieben (MSB -> Carry)¢00160 BCC .2 keine Addition noetig?¢00170 LDA OPERATOR2 Addiere Faktor 2 zum Ergebnis¢00180 CLC¢00190 ADC RESULT¢00200 STA RESULT¢00210 LDA RESULT+1¢00220 ADC #0¢00230 STA RESULT+1¢00240 .2¢00250 DEC BIT_COUNTER Zaehler dekremieren¢00260 BEQ .3 fertig?¢00270 ASL RESULT sonst Ergebnis = Ergebnis * 2¢00280 ROL RESULT+1¢00290 JMP .1 weiter geht's¢00300 .3¢00310 RTS fertig!¢00320 ------------------------------¢00330 ; 8 Bit mit Vorzeichen¢00340 MULT8S¢00350 LDA OPERATOR1 Vorzeichen des Ergebnisses merken¢00360 EOR OPERATOR2¢00370 STA SIGN_FLAG¢00380 ;¢00390 LDA OPERATOR1¢00400 BPL .1 Faktor 1 positiv?¢00410 EOR #$FF sonst 2er Komplement bilden¢00420 STA OPERATOR1¢00430 INC OPERATOR1¢00440 .1¢00450 LDA OPERATOR2 Dasselbe mit Faktor 2¢00460 BPL .2¢00470 EOR #$FF¢00480 STA OPERATOR2¢00490 INC OPERATOR2¢00500 .2¢00510 JSR MULT8 Normal multiplizieren¢00520 BIT SIGN_FLAG evtl. 2er Komplement vom Ergebnis bilden¢00530 BPL .3¢00540 LDA RESULT¢00550 EOR #$FF¢00560 STA RESULT¢00570 LDA RESULT+1¢00580 EOR #$FF¢00590 STA RESULT+1¢00600 INC RESULT¢00610 BNE .3¢00620 INC RESULT+1¢00630 .3¢00640 RTS¢00650 ------------------------------¢00660 ; 16 Bit ohne Vorzeichen¢00670 MULT16¢00680 LDA #0¢00690 STA RESULT Diesmal kann das Ergebnis 32 Bit haben!¢00700 STA RESULT+1¢00710 STA RESULT+2¢00720 STA RESULT+3¢00730 LDA #16 Es sind 16 Bit zu schieben¢00740 STA BIT_COUNTER¢00750 .1¢00760 ASL OPERATOR1 alles wie gehabt,¢00770 ROL OPERATOR1+1 nur diesmal mit 16 Bit¢00780 BCC .2¢00790 LDA RESULT¢00800 CLC¢00810 ADC OPERATOR2¢00820 STA RESULT¢00830 LDA RESULT+1¢00840 ADC OPERATOR2+1¢00850 STA RESULT+1¢00860 LDA RESULT+2¢00870 ADC #0¢00880 STA RESULT+2¢00890 LDA RESULT+3¢00900 ADC #0¢00910 STA RESULT+3¢00920 .2¢00930 DEC BIT_COUNTER¢00940 BEQ .3¢00950 ASL RESULT¢00960 ROL RESULT+1¢00970 ROL RESULT+2¢00980 ROL RESULT+3¢00990 JMP .1¢01000 .3¢01010 RTS¢01020 ------------------------------¢01030 ; 16 Bit mit Vorzeichen¢01040 MULT16S¢01050 LDA OPERATOR1+1¢01060 EOR OPERATOR2+1¢01070 STA SIGN_FLAG¢01080 LDA OPERATOR1+1¢01090 BPL .1¢01100 EOR #$FF¢01110 STA OPERATOR1+1¢01120 LDA OPERATOR1¢01130 EOR #$FF¢01140 STA OPERATOR1¢01150 INC OPERATOR1¢01160 BNE .1¢01170 INC OPERATOR1+1¢01180 .1¢01190 LDA OPERATOR2+1¢01200 BPL .2¢01210 EOR #$FF¢01220 STA OPERATOR2+1¢01230 LDA OPERATOR2¢01240 EOR #$FF¢01250 STA OPERATOR2¢01260 INC OPERATOR2¢01270 BNE .2¢01280 INC OPERATOR2+1¢01290 .2¢01300 JSR MULT16¢01310 BIT SIGN_FLAG¢01320 BPL .3¢01330 LDA RESULT¢01340 EOR #$FF¢01350 STA RESULT¢01360 LDA RESULT+1¢01370 EOR #$FF¢01380 STA RESULT+1¢01390 LDA RESULT+2¢01400 EOR #$FF¢01410 STA RESULT+2¢01420 LDA RESULT+3¢01430 EOR #$FF¢01440 STA RESULT+3¢01450 INC RESULT¢01460 BNE .3¢01470 INC RESULT+1¢01480 BNE .3¢01490 INC RESULT+2¢01500 BNE .3¢01510 INC RESULT+3¢01520 .3¢01530 RTS¢01540 ------------------------------¢01550 ; 24 Bit ohne Vorzeichen¢01560 MULT24¢01570 LDA #0¢01580 STA RESULT¢01590 STA RESULT+1¢01600 STA RESULT+2¢01610 STA RESULT+3¢01620 STA RESULT+4¢01630 STA RESULT+5¢01640 LDA #24¢01650 STA BIT_COUNTER¢01660 .1¢01670 ASL OPERATOR1¢01680 ROL OPERATOR1+1¢01690 ROL OPERATOR1+2¢01700 BCC .2¢01710 LDA RESULT¢01720 CLC¢01730 ADC OPERATOR2¢01740 STA RESULT¢01750 LDA RESULT+1¢01760 ADC OPERATOR2+1¢01770 STA RESULT+1¢01780 LDA RESULT+2¢01790 ADC OPERATOR2+2¢01800 STA RESULT+2¢01810 LDA RESULT+3¢01820 ADC #0¢01830 STA RESULT+3¢01840 LDA RESULT+4¢01850 ADC #0¢01860 STA RESULT+4¢01870 LDA RESULT+5¢01880 ADC #0¢01890 STA RESULT+5¢01900 .2¢01910 DEC BIT_COUNTER¢01920 BEQ .3¢01930 ASL RESULT¢01940 ROL RESULT+1¢01950 ROL RESULT+2¢01960 ROL RESULT+3¢01970 ROL RESULT+4¢01980 ROL RESULT+5¢01990 JMP .1¢02000 .3¢02010 RTS¢02020 ------------------------------¢02030 ; 24 Bit mit Vorzeichen¢02040 MULT24S¢02050 LDA OPERATOR1+2¢02060 EOR OPERATOR2+2¢02070 STA SIGN_FLAG¢02080 LDA OPERATOR1+2¢02090 BPL .1¢02100 EOR #$FF¢02110 STA OPERATOR1+2¢02120 LDA OPERATOR1+1¢02130 EOR #$FF¢02140 STA OPERATOR1+1¢02150 LDA OPERATOR1¢02160 EOR #$FF¢02170 STA OPERATOR1¢02180 INC OPERATOR1¢02190 BNE .1¢02200 INC OPERATOR1+1¢02210 BNE .1¢02220 INC OPERATOR1+2¢02230 .1¢02240 LDA OPERATOR2+2¢02250 BPL .2¢02260 EOR #$FF¢02270 STA OPERATOR2+2¢02280 LDA OPERATOR2+1¢02290 EOR #$FF¢02300 STA OPERATOR2+1¢02310 LDA OPERATOR2¢02320 EOR #$FF¢02330 STA OPERATOR2¢02340 INC OPERATOR2¢02350 BNE .2¢02360 INC OPERATOR2+1¢02370 BNE .2¢02380 INC OPERATOR2+2¢02390 .2¢02400 JSR MULT24¢02410 BIT SIGN_FLAG¢02420 BPL .3¢02430 LDA RESULT¢02440 EOR #$FF¢02450 STA RESULT¢02460 LDA RESULT+1¢02470 EOR #$FF¢02480 STA RESULT+1¢02490 LDA RESULT+2¢02500 EOR #$FF¢02510 STA RESULT+2¢02520 LDA RESULT+3¢02530 EOR #$FF¢02540 STA RESULT+3¢02550 LDA RESULT+4¢02560 EOR #$FF¢02570 STA RESULT+4¢02580 LDA RESULT+5¢02590 EOR #$FF¢02600 STA RESULT+5¢02610 INC RESULT¢02620 BNE .3¢02630 INC RESULT+1¢02640 BNE .3¢02650 INC RESULT+2¢02660 BNE .3¢02670 INC RESULT+3¢02680 BNE .3¢02690 INC RESULT+4¢02700 BNE .3¢02710 INC RESULT+5¢02720 .3¢02730 RTS¢02740 ------------------------------¢02750 ; 32 Bit ohne Vorzeichen¢02760 MULT32¢02770 LDA #0¢02780 STA RESULT¢02790 STA RESULT+1¢02800 STA RESULT+2¢02810 STA RESULT+3¢02820 STA RESULT+4¢02830 STA RESULT+5¢02840 STA RESULT+6¢02850 STA RESULT+7¢02860 LDA #32¢02870 STA BIT_COUNTER¢02880 .1¢02890 ASL OPERATOR1¢02900 ROL OPERATOR1+1¢02910 ROL OPERATOR1+2¢02920 ROL OPERATOR1+3¢02930 BCC .2¢02940 LDA RESULT¢02950 CLC¢02960 ADC OPERATOR2¢02970 STA RESULT¢02980 LDA RESULT+1¢02990 ADC OPERATOR2+1¢03000 STA RESULT+1¢03010 LDA RESULT+2¢03020 ADC OPERATOR2+2¢03030 STA RESULT+2¢03040 LDA RESULT+3¢03050 ADC OPERATOR2+3¢03060 STA RESULT+3¢03070 LDA RESULT+4¢03080 ADC #0¢03090 STA RESULT+4¢03100 LDA RESULT+5¢03110 ADC #0¢03120 STA RESULT+5¢03130 LDA RESULT+6¢03140 ADC #0¢03150 STA RESULT+6¢03160 LDA RESULT+7¢03170 ADC #0¢03180 STA RESULT+7¢03190 .2¢03200 DEC BIT_COUNTER¢03210 BEQ .3¢03220 ASL RESULT¢03230 ROL RESULT+1¢03240 ROL RESULT+2¢03250 ROL RESULT+3¢03260 ROL RESULT+4¢03270 ROL RESULT+5¢03280 ROL RESULT+6¢03290 ROL RESULT+7¢03300 JMP .1¢03310 .3¢03320 RTS¢03330 ------------------------------¢03340 ; 32 Bit mit Vorzeichen¢03350 MULT32S¢03360 LDA OPERATOR1+3¢03370 EOR OPERATOR2+3¢03380 STA SIGN_FLAG¢03390 LDA OPERATOR1+3¢03400 BPL .1¢03410 EOR #$FF¢03420 STA OPERATOR1+3¢03430 LDA OPERATOR1+2¢03440 EOR #$FF¢03450 STA OPERATOR1+2¢03460 LDA OPERATOR1+1¢03470 EOR #$FF¢03480 STA OPERATOR1+1¢03490 LDA OPERATOR1¢03500 EOR #$FF¢03510 STA OPERATOR1¢03520 INC OPERATOR1¢03530 BNE .1¢03540 INC OPERATOR1+1¢03550 BNE .1¢03560 INC OPERATOR1+2¢03570 BNE .1¢03580 INC OPERATOR1+3¢03590 .1¢03600 LDA OPERATOR2+3¢03610 BPL .2¢03620 EOR #$FF¢03630 STA OPERATOR2+3¢03640 LDA OPERATOR2+2¢03650 EOR #$FF¢03660 STA OPERATOR2+2¢03670 LDA OPERATOR2+1¢03680 EOR #$FF¢03690 STA OPERATOR2+1¢03700 LDA OPERATOR2¢03710 EOR #$FF¢03720 STA OPERATOR2¢03730 INC OPERATOR2¢03740 BNE .2¢03750 INC OPERATOR2+1¢03760 BNE .2¢03770 INC OPERATOR2+2¢03780 BNE .2¢03790 INC OPERATOR2+3¢03800 .2¢03810 JSR MULT32¢03820 BIT SIGN_FLAG¢03830 BPL .3¢03840 LDA RESULT¢03850 EOR #$FF¢03860 STA RESULT¢03870 LDA RESULT+1¢03880 EOR #$FF¢03890 STA RESULT+1¢03900 LDA RESULT+2¢03910 EOR #$FF¢03920 STA RESULT+2¢03930 LDA RESULT+3¢03940 EOR #$FF¢03950 STA RESULT+3¢03960 LDA RESULT+4¢03970 EOR #$FF¢03980 STA RESULT+4¢03990 LDA RESULT+5¢04000 EOR #$FF¢04010 STA RESULT+5¢04020 LDA RESULT+6¢04030 EOR #$FF¢04040 STA RESULT+6¢04050 LDA RESULT+7¢04060 EOR #$FF¢04070 STA RESULT+7¢04080 INC RESULT¢04090 BNE .3¢04100 INC RESULT+1¢04110 BNE .3¢04120 INC RESULT+2¢04130 BNE .3¢04140 INC RESULT+3¢04150 BNE .3¢04160 INC RESULT+4¢04170 BNE .3¢04180 INC RESULT+5¢04190 BNE .3¢04200 INC RESULT+6¢04210 BNE .3¢04220 INC RESULT+7¢04230 .3¢04240 RTS¢04250 ------------------------------¢