home *** CD-ROM | disk | FTP | other *** search
/ Strange Invasion 1994 February / Strange_Invasion_1994_02_Lausberg_Stefan_Side_D.atr / mult.lst < prev    next >
File List  |  2023-02-26  |  12KB  |  1 lines

  1. ¢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 ------------------------------¢