¢00010 .LI OFF¢00020 ------------------------------¢00030 .IN "D:PRTNUM.INC" Die Routinen zur Zahlenausgabe¢00040 .IN "D:CIO.INC" Die Textausgaberoutinen¢00050 .IN "D:MULT.INC" Die Multiplikationsroutinen¢00060 ------------------------------¢00070 START¢00080 LDA #'E E-Handler initialisieren¢00090 LDY #8¢00100 LDX #$60¢00110 JSR CIOINIT¢00120 ;¢00130 ; zwei 8-Bit Zahlen ohne Vorzeichen¢00140 ;¢00150 LDA ZAHL8_1 Die erste Zahl...¢00160 STA OPERATOR1 ...als ersten Operand verwenden...¢00170 JSR PRTNUM8 ...und auf den Bildschirm ausgeben¢00180 JSR PRT_MAL dazu noch das Multiplikationszeichen¢00190 LDA ZAHL8_2 analog wird mit der zweiten Zahl verfahren¢00200 STA OPERATOR2¢00210 JSR PRTNUM8¢00220 JSR PRT_GLEICH und noch ein "=" ausgeben¢00230 JSR MULT8 Jetzt wird multipliziert¢00240 LDA RESULT und das Ergebnis...¢00250 LDX RESULT+1¢00260 JSR PRTNUM16 ...wie gehabt ausgegeben (16 Bit!)¢00270 JSR PRT_EOL zum Schluss ein End-Of-Line Zeichen¢00280 ;¢00290 ; zwei 8-Bit Zahlen mit Vorzeichen¢00300 ;¢00310 LDA ZAHL8S_1¢00320 STA OPERATOR1¢00330 JSR PRTNUM8S¢00340 JSR PRT_MAL¢00350 LDA ZAHL8S_2¢00360 STA OPERATOR2¢00370 JSR PRTNUM8S¢00380 JSR PRT_GLEICH¢00390 JSR MULT8S mit Vorzeichenbeachtung multiplizieren¢00400 LDA RESULT¢00410 LDX RESULT+1¢00420 JSR PRTNUM16S¢00430 JSR PRT_EOL¢00440 ;¢00450 ; zwei 16-Bit Zahlen ohne Vorzeichen¢00460 ;¢00470 LDA ZAHL16_1¢00480 STA OPERATOR1¢00490 LDX ZAHL16_1+1 das Hi-Byte muss ins X-Register...¢00500 STX OPERATOR1+1¢00510 JSR PRTNUM16 ...damit die Zahl ausgegeben werden kann¢00520 JSR PRT_MAL¢00530 LDA ZAHL16_2¢00540 STA OPERATOR2¢00550 LDX ZAHL16_2+1¢00560 STX OPERATOR2+1¢00570 JSR PRTNUM16 diesmal wird die 16-Bit Routine verwendet¢00580 JSR PRT_GLEICH¢00590 JSR MULT16¢00600 LDA RESULT¢00610 STA PRTNUM¢00620 LDA RESULT+1¢00630 STA PRTNUM+1¢00640 LDA RESULT+2¢00650 STA PRTNUM+2¢00660 LDA RESULT+3¢00670 STA PRTNUM+3¢00680 JSR PRTNUM32 das Ergebnis kann 32 Bit haben!¢00690 JSR PRT_EOL¢00700 ;¢00710 ; 16 Bit mit Vorzeichen:¢00720 ;¢00730 LDA ZAHL16S_1¢00740 STA OPERATOR1¢00750 LDX ZAHL16S_1+1¢00760 STX OPERATOR1+1¢00770 JSR PRTNUM16S¢00780 JSR PRT_MAL¢00790 LDA ZAHL16S_2¢00800 STA OPERATOR2¢00810 LDX ZAHL16S_2+1¢00820 STX OPERATOR2+1¢00830 JSR PRTNUM16S¢00840 JSR PRT_GLEICH¢00850 JSR MULT16S¢00860 LDA RESULT¢00870 STA PRTNUM¢00880 LDA RESULT+1¢00890 STA PRTNUM+1¢00900 LDA RESULT+2¢00910 STA PRTNUM+2¢00920 LDA RESULT+3¢00930 STA PRTNUM+3¢00940 JSR PRTNUM32S¢00950 JSR PRT_EOL¢00960 ;¢00970 ; 24 Bit ohne Vorzeichen:¢00980 ;¢00990 LDA ZAHL24_1¢01000 STA OPERATOR1¢01010 LDX ZAHL24_1+1¢01020 STX OPERATOR1+1¢01030 LDY ZAHL24_1+2¢01040 STY OPERATOR1+2¢01050 JSR PRTNUM24¢01060 JSR PRT_MAL¢01070 LDA ZAHL24_2¢01080 STA OPERATOR2¢01090 LDX ZAHL24_2+1¢01100 STX OPERATOR2+1¢01110 LDY ZAHL24_2+2¢01120 STY OPERATOR2+2¢01130 JSR PRTNUM24¢01140 JSR PRT_GLEICH¢01150 JSR MULT24¢01160 LDA RESULT¢01170 STA PRTNUM¢01180 LDA RESULT+1¢01190 STA PRTNUM+1¢01200 LDA RESULT+2¢01210 STA PRTNUM+2¢01220 LDA RESULT+3¢01230 STA PRTNUM+3¢01240 JSR PRTNUM32 wir koennen nur 32 Bit ausgeben!¢01250 JSR PRT_EOL¢01260 ;¢01270 ; 24 Byt mit Vorzeichen:¢01280 ;¢01290 LDA ZAHL24S_1¢01300 STA OPERATOR1¢01310 LDX ZAHL24S_1+1¢01320 STX OPERATOR1+1¢01330 LDY ZAHL24S_1+2¢01340 STY OPERATOR1+2¢01350 JSR PRTNUM24S¢01360 JSR PRT_MAL¢01370 LDA ZAHL24S_2¢01380 STA OPERATOR2¢01390 LDX ZAHL24S_2+1¢01400 STX OPERATOR2+1¢01410 LDY ZAHL24S_2+2¢01420 STY OPERATOR2+2¢01430 JSR PRTNUM24S¢01440 JSR PRT_GLEICH¢01450 JSR MULT24S¢01460 LDA RESULT¢01470 STA PRTNUM¢01480 LDA RESULT+1¢01490 STA PRTNUM+1¢01500 LDA RESULT+2¢01510 STA PRTNUM+2¢01520 LDA RESULT+3¢01530 STA PRTNUM+3¢01540 JSR PRTNUM32S¢01550 JSR PRT_EOL¢01560 ;¢01570 ; 32 Bit ohne Vorzeichen¢01580 ;¢01590 LDA ZAHL32_1¢01600 STA OPERATOR1¢01610 STA PRTNUM¢01620 LDA ZAHL32_1+1¢01630 STA OPERATOR1+1¢01640 STA PRTNUM+1¢01650 LDA ZAHL32_1+2¢01660 STA OPERATOR1+2¢01670 STA PRTNUM+2¢01680 LDA ZAHL32_1+3¢01690 STA OPERATOR1+3¢01700 STA PRTNUM+3¢01710 JSR PRTNUM32¢01720 JSR PRT_MAL¢01730 LDA ZAHL32_2¢01740 STA OPERATOR2¢01750 STA PRTNUM¢01760 LDA ZAHL32_2+1¢01770 STA OPERATOR2+1¢01780 STA PRTNUM+1¢01790 LDA ZAHL32_2+2¢01800 STA OPERATOR2+2¢01810 STA PRTNUM+2¢01820 LDA ZAHL32_2+3¢01830 STA OPERATOR2+3¢01840 STA PRTNUM+3¢01850 JSR PRTNUM32¢01860 JSR PRT_GLEICH¢01870 JSR MULT32¢01880 LDA RESULT¢01890 STA PRTNUM¢01900 LDA RESULT+1¢01910 STA PRTNUM+1¢01920 LDA RESULT+2¢01930 STA PRTNUM+2¢01940 LDA RESULT+3¢01950 STA PRTNUM+3¢01960 JSR PRTNUM32 Leider haben wir keine 64 Bit Ausgabe¢01970 JSR PRT_EOL¢01980 ;¢01990 ; 32 Bit mit Vorzeichen:¢02000 ;¢02010 LDA ZAHL32S_1¢02020 STA OPERATOR1¢02030 STA PRTNUM¢02040 LDA ZAHL32S_1+1¢02050 STA OPERATOR1+1¢02060 STA PRTNUM+1¢02070 LDA ZAHL32S_1+2¢02080 STA OPERATOR1+2¢02090 STA PRTNUM+2¢02100 LDA ZAHL32S_1+3¢02110 STA OPERATOR1+3¢02120 STA PRTNUM+3¢02130 JSR PRTNUM32S¢02140 JSR PRT_MAL¢02150 LDA ZAHL32S_2¢02160 STA OPERATOR2¢02170 STA PRTNUM¢02180 LDA ZAHL32S_2+1¢02190 STA OPERATOR2+1¢02200 STA PRTNUM+1¢02210 LDA ZAHL32S_2+2¢02220 STA OPERATOR2+2¢02230 STA PRTNUM+2¢02240 LDA ZAHL32S_2+3¢02250 STA OPERATOR2+3¢02260 STA PRTNUM+3¢02270 JSR PRTNUM32S¢02280 JSR PRT_GLEICH¢02290 JSR MULT32S¢02300 LDA RESULT¢02310 STA PRTNUM¢02320 LDA RESULT+1¢02330 STA PRTNUM+1¢02340 LDA RESULT+2¢02350 STA PRTNUM+2¢02360 LDA RESULT+3¢02370 STA PRTNUM+3¢02380 JSR PRTNUM32S¢02390 JSR PRT_EOL¢02400 ;¢02410 RTS und tschuess¢02420 ------------------------------¢02430 ; Hier wird der String " * " ausgegeben¢02440 PRT_MAL¢02450 LDA #3 3 Zeichen¢02460 STA PRINT_LENGTH¢02470 LDA #0¢02480 STA PRINT_LENGTH+1¢02490 LDA #MAL_ZEICHEN die Adresse des Strings¢02500 LDX /MAL_ZEICHEN¢02510 JSR PRINT und auf den Bildschirm damit¢02520 RTS¢02530 ------------------------------¢02540 ; dasselbe fuer " = "¢02550 PRT_GLEICH¢02560 LDA #3¢02570 STA PRINT_LENGTH¢02580 LDA #0¢02590 STA PRINT_LENGTH+1¢02600 LDA #GLEICH_ZEICHEN¢02610 LDX /GLEICH_ZEICHEN¢02620 JSR PRINT¢02630 RTS¢02640 ------------------------------¢02650 ; Ein End-Of-Line ausgeben:¢02660 PRT_EOL¢02670 LDA #1 Diesmal nur ein Zeichen¢02680 STA PRINT_LENGTH¢02690 LDA #0¢02700 STA PRINT_LENGTH+1¢02710 LDA #EOL_ZEICHEN¢02720 LDX /EOL_ZEICHEN¢02730 JSR PRINT¢02740 RTS¢02750 ------------------------------¢02760 ; Die Strings fuer die drei Hilfsroutinen¢02770 MAL_ZEICHEN .AS " * "¢02780 GLEICH_ZEICHEN .AS " = "¢02790 EOL_ZEICHEN .HX 9B¢02800 ------------------------------¢02810 ; Hier kommen die auszugebenden Zahlen:¢02820 ZAHL8_1 .HX 12¢02830 ZAHL8_2 .HX 34¢02840 ZAHL8S_1 .HX FE¢02850 ZAHL8S_2 .HX 56¢02860 ;¢02870 ZAHL16_1 .HX 1234¢02880 ZAHL16_2 .HX 5678¢02890 ZAHL16S_1 .HX 2345¢02900 ZAHL16S_2 .HX 6789¢02910 ;¢02920 ZAHL24_1 .HX 89AB01¢02930 ZAHL24_2 .HX 321000¢02940 ZAHL24S_1 .HX 999999¢02950 ZAHL24S_2 .HX FFFFFF¢02960 ;¢02970 ZAHL32_1 .HX 54000000¢02980 ZAHL32_2 .HX 11111100¢02990 ZAHL32S_1 .HX 22222222¢03000 ZAHL32S_2 .HX 03000000¢03010 ------------------------------¢