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