📄 trigonom.asl
字号:
02FE FD 00 601 sta PointZ
+ 602
0300 F3 00 603 lda #OperandZ
0302 8B 07 604 adda #Length
0304 3F 605 deca
0305 FC 21 606 sta r_dp
+ 607
0307 F3 01 608 lda #01h
0309 FE 609 sta i
030A FD 00 610 sta SignZ
030C F1 00 611 lda SignZ
030E E9 00 612 xora SignTemp
0310 FD 00 613 sta SignZ
0312 24 614 ret
+ 615
0313 616 Cos360:
0313 617 Sin90:
0313 F3 00 618 lda #OperandZ
0315 FD 00 619 sta Addr1
+ 620
0317 F3 0E 621 lda #Length_Z
0319 FD 00 622 sta DpCount
+ 623
031B 20 00 00 624 call ClearData2
+ 625
031E F3 00 626 lda #0
0320 FD 00 627 sta PointZ
0322 FD 00 628 sta SignZ
+ 629
0324 F3 00 630 lda #OperandZ
0326 8B 07 631 adda #Length
0328 3F 632 deca
0329 FC 21 633 sta r_dp
+ 634
032B F3 01 635 lda #01h
032D FE 636 sta i
032E F1 00 637 lda SignZ
0330 E9 00 638 xora SignTemp
0332 FD 00 639 sta SignZ
0334 24 640 ret
0335 641 Cos60:
0335 F3 00 642 lda #OperandZ
0337 FD 00 643 sta Addr1
+ 644
0339 F3 0E 645 lda #Length_Z
033B FD 00 646 sta DpCount
+ 647
033D 20 00 00 648 call ClearData2
+ 649
0340 F3 01 650 lda #01h
0342 FD 00 651 sta PointZ
+ 652
0344 F3 00 653 lda #OperandZ
0346 8B 07 654 adda #Length
0348 3F 655 deca
0349 FC 21 656 sta r_dp
+ 657
034B F3 05 658 lda #05h
034D FE 659 sta i
+ 660
034E 02 02 C8 661 br EndCos
0351 662 Sin30:
0351 F3 00 663 lda #OperandZ
0353 FD 00 664 sta Addr1
+ 665
0355 F3 0E 666 lda #Length_Z
0357 FD 00 667 sta DpCount
+ 668
0359 20 00 00 669 call ClearData2
+ 670
035C F3 01 671 lda #01h
035E FD 00 672 sta PointZ
+ 673
0360 F3 00 674 lda #OperandZ
0362 8B 07 675 adda #Length
0364 3F 676 deca
0365 FC 21 677 sta r_dp
+ 678
0367 F3 05 679 lda #05h
0369 FE 680 sta i
+ 681
036A 02 01 5C 682 br EndSin
+ 683
+ 684 ;*************************************
+ 685 ;get X*(pi/180)
+ 686 ;max data =pi/2=1.570796326....
+ 687 ; |_|____is table cal
+ 688 ;
+ 689 ;tan(x+y)=(tan(x)+tan(y))/(1-tan(x)*tan(y))
+ 690 ;
+ 691 ;tan(Q)=X+(X^3/3)+(2X^5/15)+(17X^7/315)+...
+ 692 ;*************************************
036D 693 Tan::
+ 694 ;added by Golden
036D F5 00 695 lda0 SignX
036F F9 00 696 sta0 SignTemp
0371 F3 00 697 lda #0
0373 F9 00 698 sta0 SignX
0375 20 00 00 699 call ClearBuffer
+ 700
0378 F3 00 701 lda #0
037A FD 07 702 sta OperandX+Length
+ 703
037C F3 5C 704 lda #BufferXn
037E FD 00 705 sta Addr1
+ 706
0380 20 00 00 707 call ClearData
+ 708
0383 F3 52 709 lda #BufferTan
0385 FD 00 710 sta Addr1
+ 711
0387 20 00 00 712 call ClearData
+ 713
038A F3 00 714 lda #0
038C FD 5B 715 sta PointXn
038E FD 51 716 sta PointT
0390 FD 5A 717 sta SignXn
0392 FD 50 718 sta SignT
+ 719 ;Marked by Golden
+ 720 ;sta SignTemp
0394 FD 00 721 sta TanTemp
+ 722
0396 20 09 17 723 call CheckQuadrandtal
+ 724
+ 725 ;;;;--------------------------tom edit by 2002.03.21
0399 F1 00 726 lda ErrorFlag
039B 8B 00 727 adda #0
039D 07 0B 0C 728 brnz InputErr
+ 729 ;;;;--------------------------edit by 2002.03.21
+ 730
03A0 F1 00 731 lda Temp1
03A2 8B 00 732 adda #0
03A4 06 03 B8 733 brz 1$
03A7 7F 734 rorc
03A8 04 08 5B 735 brc Tan90
03AB 7F 736 rorc
03AC 04 08 48 737 brc Tan180
03AF 7F 738 rorc
03B0 04 08 5B 739 brc Tan270
03B3 7F 740 rorc
03B4 04 08 48 741 brc Tan360
03B7 7F 742 rorc
+ 743 1$: ;;;chk X>45'
03B8 F3 00 744 lda #0h
03BA FD 00 745 sta Xn
+ 746 ;;clear operandY
03BC F3 00 747 lda #OperandY
03BE FD 00 748 sta Addr1
+ 749
03C0 20 00 00 750 call ClearData
+ 751 ;;;;-------------push 45 to operandY
03C3 F3 00 752 lda #OperandY
03C5 8B 07 753 adda #Length
03C7 3F 754 deca
03C8 FC 21 755 sta r_dp
03CA F3 45 756 lda #45h
03CC FE 757 sta i
+ 758
+ 759 ; lda #45h
+ 760 ; sta OperandY+5
+ 761
03CD F3 00 762 lda #0
03CF FD 00 763 sta PointY
+ 764
03D1 F3 00 765 lda #OperandY
03D3 FD 00 766 sta Addr1
+ 767
03D5 F1 00 768 lda PointY
03D7 A5 00 769 cmpe PointX
03D9 06 03 F3 770 brz 9$
+ 771 8$: ;;;adj operandY point=operandX
03DC 20 00 00 772 call ShiftToL
+ 773
+ 774
+ 775
03DF F1 00 776 lda PointY
03E1 1F 777 inca
03E2 FD 00 778 sta PointY
03E4 A5 00 779 cmpe PointX
+ 780 ;; brnz 8$ ;;;;2001.12.27
03E6 06 03 F3 781 brz 9$ ;;;;2001.12.27
03E9 F1 00 782 lda OperandY ;;;;2001.12.27
03EB CB F0 783 anda #0f0h ;;;;2001.12.27
03ED 07 04 43 784 brnz 7$ ;;;;2001.12.27
03F0 02 03 DC 785 br 8$ ;;;;2001.12.27
+ 786 9$:
03F3 F3 00 787 lda #OperandX
03F5 FD 00 788 sta Addr1
+ 789
03F7 F3 00 790 lda #OperandY
03F9 FD 00 791 sta Addr2
+ 792
03FB F3 07 793 lda #Length
03FD FD 00 794 sta DpCount
+ 795 ;;;compare X,Y
03FF 20 00 00 796 call CompareData
+ 797
0402 F1 00 798 lda Temp1
0404 8B 00 799 adda #0
0406 06 08 2D 800 brz Tan45
0409 3F 801 deca
040A 07 04 43 802 brnz 7$
+ 803 ;;;X>45' X=90-X
040D F3 00 804 lda #OperandX
040F FD 00 805 sta Addr1
+ 806
0411 F3 00 807 lda #OperandY
0413 FD 00 808 sta Addr2
+ 809
0415 20 00 00 810 call CopyData
+ 811
0418 F1 00 812 lda PointX
041A FD 00 813 sta PointY
+ 814
041C 20 00 00 815 call ClearData
+ 816
041F F3 00 817 lda #OperandX
0421 8B 07 818 adda #Length
0423 3F 819 deca
0424 FC 21 820 sta r_dp
0426 F3 90 821 lda #90h
0428 FE 822 sta i
+ 823
+ 824 ; lda #90h
+ 825 ; sta OperandX+5
+ 826
0429 F3 00 827 lda #0
042B FD 00 828 sta PointX
+ 829
042D 20 00 00 830 call Subtration
+ 831
0430 F3 00 832 lda #OperandZ
0432 FD 00 833 sta Addr1
+ 834
0434 F3 00 835 lda #OperandX
0436 FD 00 836 sta Addr2
+ 837
0438 20 00 00 838 call CopyData
+ 839
043B F1 00 840 lda PointZ
043D FD 00 841 sta PointX
+ 842
043F F3 01 843 lda #01h
0441 FD 00 844 sta TanTemp
+ 845 7$:
+ 846 ;;;Get pi
0443 F3 00 847 lda #^Pdata
0445 FD 02 848 sta TableC+2
+ 849
0447 F3 0B 850 lda #@Pdata
0449 FD 01 851 sta TableC+1
+ 852
044B F3 FC 853 lda #<Pdata
044D FD 00 854 sta TableC
+ 855
044F F3 00 856 lda #0
0451 FD 00 857 sta Temp2
+ 858
0453 20 08 A9 859 call GetData
+ 860
0456 F3 00 861 lda #0
0458 FD 00 862 sta Temp2
+ 863 ;;;get seta
045A 20 00 00 864 call Multiplation
+ 865 2$: ;;;chk seta head
+ 866 ;;-----------------------for check OperandZ=0
045D F3 00 867 lda #OperandZ
045F FD 00 868 sta Addr1
0461 20 00 00 869 call CheckData
0464 F1 00 870 lda DpCount
0466 8B 00 871 adda #0
0468 06 04 85 872 brz 3$
+ 873
+ 874 ;;-----------------------
046B F1 00 875 lda OperandZ
046D CB F0 876 anda #0f0h
046F 07 04 85 877 brnz 3$
+ 878
0472 F3 00 879 lda #OperandZ
0474 FD 00 880 sta Addr1
+ 881
0476 F3 0E 882 lda #Length_Z
0478 FD 00 883 sta DpCount
+ 884
047A 20 00 00 885 call ShiftToL2
+ 886
047D F1 00 887 lda PointZ
047F 1F 888 inca
0480 FD 00 889 sta PointZ
+ 890
0482 02 04 5D 891 br 2$
+ 892 3$:
0485 F1 00 893 lda PointZ
0487 AB 0E 894 suba #Length_Z ;;0ch
0489 06 04 C0 895 brz 5$
048C 05 04 A1 896 brnc 4$
+ 897
048F F3 00 898 lda #OperandZ
0491 FD 00 899 sta Addr1
+ 900
0493 F3 5C 901 lda #BufferXn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -