home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 35 / Flop_Magazin_35_1995_03_Raster_cs_Side_A.atr / fak.lm < prev    next >
Text File  |  2023-02-26  |  7KB  |  1 lines

  1. 05 ; VYPOCET FAKTORIALU, V.LISKA, PARDUBICE, VII.'95¢10       .OPT OBJ¢15       *=  $5555¢20 BUF   =   $CB¢25 PRL   =   $CD¢30 PRH   =   $CE¢35 PTR   =   $CF¢40 KRAT  =   $D0¢45 N     =   $D1¢50 OD    =   $6000¢55 KAM   =   $CB¢60 IFP   =   $D9AA¢65 FST0R =   $DDA7¢70 ZFR0  =   $DA44¢75 ZF1   =   $DA46   ;predradit:LDX #$E0 !!!¢80 FLD0R =   $DD89¢85 FLD1R =   $DD98¢90 FMUL  =   $DADB¢95 FADD  =   $DA66¢0100 FDIV =  $DB28¢0105 ;¢0110 ; VLASTNI PROGRAM¢0115     JSR $F420   ; CLS¢0120     LDX #0¢0125     STX $52     ;LM=0¢0130     STX BUF¢0135     LDY #$60¢0140     STY BUF+1   ;Bafr: (CB.C)¢0145     LDY #0¢0150     LDA #$2E    ; Tecky do bafru¢0155     STA (BUF),Y¢0160     INY ¢0165     BNE *-3¢0170     LDY #$FE¢0175     LDA #0¢0180     STA (BUF),Y¢0185     INY ¢0190     LDA #1¢0195     STA (BUF),Y ;bafr pro 1!¢0200 ;¢0205     LDX # <TEXT¢0210     LDY # >TEXT¢0215     JSR $C642   ; Vypsan TEXT¢0220 ;¢0225     LDX #0¢0230     STX N¢0235     STX N+1¢0240 CTU JSR $F2F8   ;vstup cifer z K¢0245     CMP #'0¢0250     BCC CTU¢0255     CMP #$9B¢0260     BEQ *+29¢0265     CMP #'9+1¢0270     BCS CTU¢0275     JSR $F2B0¢0280     AND #$0F¢0285     LDX #$11¢0290     BNE *+7¢0295     BCC *+4¢0300     ADC #9¢0305     LSR A¢0310     ROR N+1¢0315     ROR N¢0320     DEX ¢0325     BNE *-10¢0330     BEQ CTU¢0335 ;¢0340     INC N       ;(D1)=N+1¢0345     LDX #1¢0350     STX KRAT    ;(D0)=Nasobitel¢0355     DEX ¢0360     STX $13¢0365     STX $14     ;nula do Timeru¢0370 ;¢0375 NASOB JSR ZFR0  ;nuluj FR0¢0380     INC KRAT¢0385     LDX KRAT¢0390     CPX N       ;(N+1)-KRAT¢0395     BNE *+5¢0400     JMP TISK¢0405     STX $D4     ;FR0¢0410     JSR IFP     ;FR0=nasobitel¢0415     LDX #0¢0420     STX PTR     ;Pointer = 0¢0425     STX PRH¢0430     STX PRL     ;Prenos = 0000¢0435     LDY #1¢0440     JSR FST0R   ;ulozen $100.5¢0445 ;¢0450 LOOP LDX #$E0   ;nulovat FR1¢0455     JSR ZF1¢0460     LDX #$40¢0465     STX $E0¢0470     DEC PTR¢0475     DEC PTR¢0480     LDY PTR     ;PTR=Y=$FE¢0485     LDA (BUF),Y¢0490     CMP #$2E    ;jsme na zac.retezce?¢0495     BNE *+5¢0500     JMP POSLAD  ;jdi na posled.a.¢0505     CMP #0¢0510     BEQ *+13¢0515     STA $E1     ;41 XX XX¢0520     INY ¢0525     LDA (BUF),Y¢0530     STA $E2¢0535     INC $E0¢0540     BPL *+7¢0545     INY         ;40 XX¢0550     LDA (BUF),Y¢0555     STA $E1     ;FR1 naplnen s C¢0560     LDX #0¢0565     LDY #1¢0570     JSR FLD0R   ;LOAD FR0 nasobitelem¢0575 ;¢0580     JSR FMUL    ; soucin v FR0¢0585 ;¢0590     LDX #$E0    ;nuluj FR1,¢0595     JSR ZF1     ;pro prenos¢0600     LDX #$40¢0605     STX $E0     ;zustane? 40 ?¢0610     LDA PRH¢0615     BEQ *+12¢0620     STA $E1¢0625     LDA PRL¢0630     STA $E2¢0635     INC $E0     ;zmenit na $41¢0640     BPL *+10¢0645     LDA PRL¢0650     CMP #0¢0655     BEQ *+7¢0660     STA $E1¢0665     JSR FADD    ;adice S+Prenos¢0670 ;¢0675     LDA $D4     ;rozdel na Prenos a nove 4 cifry do retezce¢0680     CMP #$40¢0685     BEQ ?40     ;-->40 XX¢0690     CMP #$41¢0695     BEQ ?41     ;-->41 XX XX¢0700     CMP #$42¢0705     BEQ ?42     ;-->42 xx xx xx¢0710     LDX #0      ; 43 xx xx xx xx¢0715     JSR TRANSF¢0720     LDX #2¢0725     JSR NOVE2B¢0730     JMP LOOP¢0735 ;¢0740 ?40 JSR NULPR¢0745     LDY PTR¢0750     LDA #0¢0755     STA (BUF),Y¢0760     INY ¢0765     LDA $D5¢0770     STA (BUF),Y¢0775     JMP LOOP¢0780 ;¢0785 ?41 JSR NULPR¢0790     LDX #0¢0795     JSR NOVE2B¢0800     JMP LOOP¢0805 ;¢0810 ?42 JSR NULPR+4¢0815     LDX #0¢0820     JSR TRANSF+5¢0825     INX ¢0830     JSR NOVE2B¢0835     JMP LOOP¢0840 ;¢0845 POSLAD LDA PRH¢0850     BEQ *+12¢0855     STA (BUF),Y¢0860     INY ¢0865     LDA PRL¢0870     STA (BUF),Y¢0875     JMP NASOB¢0880     LDA PRL¢0885     BNE *+4¢0890     BEQ *-7¢0895     TAX ¢0900     LDA #0¢0905     STA (BUF),Y¢0910     INY ¢0915     TXA ¢0920     STA (BUF),Y¢0925     JMP NASOB¢0926 ;¢0927 TISK LDX #0¢0928     LDY #$FF¢0929     STY $CB¢0930     LDY #$62¢0931     STY $CC     ;(CB.C)=$62FF, tisk.bafr¢0934     LDA #$9B¢0935     STA ($CB,X) ;na konec tisk.b.<RET>¢0936     JSR $F2B0   ;Odradkovat!¢0937     JSR DECBC   ;POINTER na 62FE¢0938 ;¢0939     LDY #0¢0940 ?LV DEY ¢0941     LDA $6000,Y¢0942     CMP #$2E    ;tecka?¢0943     BEQ *+34    ;Ano,konec nacitani¢0944     LSR A¢0945     LSR A¢0946     LSR A¢0947     LSR A¢0948     ORA #$30¢0949     STA $CF     ;CF=POM¢0950     LDA $6000,Y ;opet stejny bajt¢0951     AND #$0F¢0952     ORA #$30    ;LSB¢0953     LDX #0¢0954     STA ($CB,X) ; " ulozen¢0955     JSR DECBC¢0956     LDA $CF     ;MSB¢0957     STA ($CB,X) ; " ulozen¢0958     JSR DECBC¢0959     JMP ?LV¢0960 ;¢0961     LDX #0¢0962     JSR INCBC¢0963     LDA ($CB,X)¢0965     CMP #$30    ;je to nula?¢0970     BEQ *-7¢0985 ;¢1095     LDX $CB¢1100     LDY $CC¢1105     JSR $C642   ;FAK vypsan¢1110 ; Vypocet dekadickeho radu¢1115     LDY $14¢1120     LDX $13¢1125     STX $CD¢1130     STY $CE     ;ulozeni casu¢1131 ;¢1135     JSR ZFR0¢1140     LDA #$FF¢1141     SEC ¢1142     SBC $CB¢1145     STA $D4¢1150     LDA #$62¢1155     SEC ¢1160     SBC $CC¢1165     STA $D5¢1170     JSR IFP     ; IFP¢1175     LDX #0¢1180     LDA $D4¢1185     CMP #$40¢1190     BEQ *+13¢1195     LDA $D5     ;41 0X XX¢1200     AND #$0F¢1205     ORA #$30¢1210     STA T1+16¢1215     LDX #1¢1220     LDA $D5,X   ;DVA ZNAKY¢1225     LSR A¢1230     LSR A¢1235     LSR A¢1240     LSR A¢1245     ORA #$30¢1250     STA T1+16,X¢1255     LDA $D5,X¢1260     AND #$0F¢1265     ORA #$30¢1270     STA T1+17,X¢1275     LDA #$20¢1280     STA T1+18,X ;charakteristika¢1285 ;¢1290     JSR ZFR0¢1295     LDX $CE     ;timereg.$14¢1300     STX $D4¢1305     JSR IFP¢1310     LDX #0¢1315     LDY #1¢1320     JSR FST0R¢1325     JSR ZFR0¢1330     LDX #$E0¢1335     JSR ZF1¢1340     LDX $CD     ;timereg.$13¢1345     STX $D4¢1350     JSR IFP¢1355     LDX #$41¢1360     LDY #2¢1365     LDA #$56¢1370     STX $E0¢1375     STY $E1¢1380     STA $E2     ;FR1 naplnen 256¢1385     JSR FMUL¢1390     LDX #0¢1395     LDY #1¢1400     JSR FLD1R¢1405     JSR FADD¢1410     LDX #$40¢1415     LDY #$50    ;delitel=50¢1420     LDA #0¢1425     STX $E0¢1430     STY $E1¢1435     STA $E2¢1440     JSR FDIV¢1445 ;¢1450     LDA $D4¢1455     CMP #$40    ;zlomek sekundy?¢1460     BCS *+10¢1465     LDA #$30    ;NULA¢1470     STA T1+34¢1475     STA T1+35¢1480     BNE *+22¢1485     LDA $D5¢1490     LSR A¢1495     LSR A¢1500     LSR A¢1505     LSR A¢1510     ORA #$30¢1515     STA T1+34¢1520     LDA $D5¢1525     AND #$0F¢1530     ORA #$30¢1535     STA T1+35¢1540 ;¢1545     LDX # <T1¢1550     LDY # >T1¢1555     JSR $C642   ;SCROUT TEXT 1¢1560     RTS ¢1565 ; A   K O N E C !¢1570 ; ¬¬¬¬¬ Podprogramy ¬¬¬¬¬¢1575 DECBC DEC $CB¢1580     LDA #$FF¢1585     CMP $CB¢1590     BNE *+4¢1595     DEC $CC¢1600     RTS ¢1605 ;¢1610 INCBC INC $CB¢1615     LDA #0¢1620     CMP $CB¢1625     BNE *+4¢1630     INC $CC¢1635     RTS ¢1640 ;¢1670 NULPR LDX #0¢1675     STX PRL¢1680     LDX #0¢1685     STX PRH¢1690     RTS ¢1695 ;¢1700 TRANSF LDA $D5,X¢1705     STA PRH¢1710     INX ¢1715     LDA $D5,X¢1720     STA PRL¢1725     RTS ¢1730 ;¢1735 NOVE2B LDY PTR¢1740     LDA $D5,X¢1745     STA (BUF),Y¢1750     INY ¢1755     INX ¢1760     LDA $D5,X¢1765     STA (BUF),Y¢1770     RTS ¢1775 ;¢1780 ; ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¢1785 TEXT .BYTE $7D,"   Vlozte cislo [2..255] pro vypocet    "¢1790     .BYTE "   F A K T O R I A L U :",$9B¢1795 ;¢1800 T1  .BYTE "Dekadicky rad =  .. ,  Time (s) = .. ",$9B¢1805     .OPT NO LIST¢