📄 syntax.asl
字号:
059C A7 0A 734 cmpe #0ah
059E 06 06 29 735 brz .SynError
05A1 A7 09 736 cmpe #09h
05A3 06 06 36 737 brz .EndStackCk
05A6 A7 12 738 cmpe #12h ;Semicolon
05A8 06 06 29 739 brz .SynError
05AB F5 00 740 lda0 .Buf1
05AD A7 B3 741 cmpe #0b3h
05AF 06 06 29 742 brz .SynError
05B2 02 06 36 743 br .EndStackCk
+ 744 ;-------------------------------------------
05B5 745 .CommaFractDms:
05B5 F3 00 746 lda #0h
05B7 F9 00 747 sta0 .DmsCount
05B9 F5 00 748 lda0 .DataBuf
05BB F9 00 749 sta0 .Buf2
05BD F5 00 750 lda0 .Buf1
05BF F9 00 751 sta0 .DataBuf
05C1 F9 01 752 sta0 .DataBuf+1
05C3 20 00 00 753 call .CheckPari
05C6 20 00 00 754 call .CheckMem
05C9 F5 00 755 lda0 .Buf2
05CB F9 00 756 sta0 .DataBuf
05CD F5 00 757 lda0 .Buf1
05CF A7 B3 758 cmpe #0b3h ;)
05D1 06 06 36 759 brz .EndStackCk
05D4 F5 00 760 lda0 .DataBuf
05D6 A7 B4 761 cmpe #0b4h ;b4= ','
05D8 06 05 FD 762 brz .Checkcomma
05DB A7 C3 763 cmpe #0c3h ;fract
05DD 06 05 FD 764 brz .Chkfract
05E0 F5 00 765 lda0 .Buf1
05E2 A7 B7 766 cmpe #0b7h ;degree
05E4 06 06 29 767 brz .SynError
05E7 F5 00 768 lda0 .AfterPari
05E9 A7 0A 769 cmpe #0ah
05EB 06 06 36 770 brz .EndStackCk
05EE F5 00 771 lda0 .AfterPari
05F0 A7 01 772 cmpe #01h
05F2 06 06 36 773 brz .EndStackCk
05F5 A7 02 774 cmpe #02h
05F7 06 06 36 775 brz .EndStackCk
05FA 02 06 29 776 br .SynError
05FD 777 .Chkfract:
05FD 778 .Checkcomma:
05FD F5 00 779 lda0 .Buf1
05FF A7 B7 780 cmpe #0b7h ;degree
0601 06 06 36 781 brz .EndStackCk
0604 A7 C3 782 cmpe #0c3h ;fract
0606 06 06 29 783 brz .SynError
0609 A7 B4 784 cmpe #0b4h
060B 06 06 29 785 brz .SynError
060E A7 B0 786 cmpe #0b0h
0610 06 06 29 787 brz .SynError
0613 F5 00 788 lda0 .AfterPari
0615 A7 0A 789 cmpe #0ah
0617 06 06 36 790 brz .EndStackCk
061A F5 00 791 lda0 .AfterPari
061C A7 01 792 cmpe #01h
061E 06 06 36 793 brz .EndStackCk
0621 A7 02 794 cmpe #02h
0623 06 06 36 795 brz .EndStackCk
0626 02 06 29 796 br .SynError
+ 797 ;-------------------------------------------
0629 798 .SynError:
0629 F3 02 799 lda #02h
062B F9 00 800 sta0 ErrorFlag
062D F3 00 801 lda #0h ;set error site
062F F9 00 802 sta0 .TFlag
0631 F5 00 803 lda0 .INDP
0633 3F 804 deca
0634 F9 00 805 sta0 .SFDP
0636 806 .EndStackCk:
0636 24 807 ret
+ 808 ;-------------------------------------------
0637 809 .FunctCode::
0637 F3 01 810 lda #01h
0639 FC 28 811 sta PP
063B F3 00 812 lda #^(.CheckFunC)
063D FC 54 813 sta TPP
063F F3 00 814 lda #@(.CheckFunC)
0641 FC 02 815 sta TPH
0643 F3 00 816 lda #<(.CheckFunC)
0645 FC 01 817 sta TPL
0647 818 .KeepSearch:
0647 F8 819 ldv
0648 F9 01 820 sta0 .DataBuf+1
064A A7 FF 821 cmpe #0ffh
064C 06 06 61 822 brz .EndCode
064F F3 00 823 lda #0h
0651 FC 28 824 sta PP
0653 F5 01 825 lda0 .DataBuf+1
0655 A5 00 826 cmpe .DataBuf
0657 07 06 47 827 brnz .KeepSearch
065A F3 08 828 lda #08h
065C F9 00 829 sta0 .AfterPari
065E 02 06 65 830 br .EndunctCode
0661 831 .EndCode:
0661 F3 00 832 lda #0h
0663 F9 00 833 sta0 .AfterPari
0665 834 .EndunctCode:
0665 24 835 ret
+ 836 ;-------------------------------------------
0666 837 .CkMemory::
0666 F3 00 838 lda #0h
0668 F9 00 839 sta0 .AfterPari
066A F3 01 840 lda #01h
066C FC 28 841 sta PP
066E F3 00 842 lda #^(.CheckMemory)
0670 FC 54 843 sta TPP
0672 F3 00 844 lda #@(.CheckMemory)
0674 FC 02 845 sta TPH
0676 F3 00 846 lda #<(.CheckMemory)
0678 FC 01 847 sta TPL
067A 848 .Searchmem:
067A F8 849 ldv
067B F9 01 850 sta0 .DataBuf+1
067D A7 FF 851 cmpe #0ffh
067F 06 06 91 852 brz .Endmem
0682 F3 00 853 lda #0h
0684 FC 28 854 sta PP
0686 F5 01 855 lda0 .DataBuf+1
0688 A5 00 856 cmpe .DataBuf ;.Buf1
068A 07 06 7A 857 brnz .Searchmem
068D F3 0E 858 lda #0eh
068F F9 00 859 sta0 .AfterPari
0691 860 .Endmem:
0691 02 06 36 861 br .EndStackCk
+ 862
+ 863 ;-------------------------------------------------
0694 864 .DispPari::
0694 F3 00 865 lda #>.SetFlag
0696 FC 28 866 sta PP
0698 F1 00 867 lda .SetFlag
069A CB 20 868 anda #20h
069C 07 07 58 869 brnz .EndDispPari
069F F3 00 870 lda #0h
06A1 FC 21 871 sta DP
06A3 F9 00 872 sta0 .DispFlag
06A5 873 .CKloop:
+ 874
06A5 F3 00 875 lda #0h
06A7 FC 28 876 sta PP
06A9 F0 21 877 lda DP
06AB A5 00 878 cmpe .DataDP
06AD 06 07 58 879 brz .EndDispPari
06B0 F3 02 880 lda #02h
06B2 FC 28 881 sta PP
06B4 F2 882 lda i
06B5 F9 00 883 sta0 .DataBuf
06B7 A7 A0 884 cmpe #0a0h
06B9 06 07 2B 885 brz .SetPoint
06BC A7 0A 886 cmpe #0ah
06BE 04 06 C5 887 brc .CKPari
06C1 888 .NextDP:
06C1 18 889 incdp
06C2 02 06 A5 890 br .CKloop
06C5 891 .CKPari:
06C5 F5 00 892 lda0 .DataBuf
06C7 A7 B7 893 cmpe #0b7h
06C9 06 06 F9 894 brz .DmsMode
06CC A7 C3 895 cmpe #0c3h
06CE 06 07 0C 896 brz .FractMode
06D1 A7 D0 897 cmpe #0d0h
06D3 06 07 6C 898 brz .22$
06D6 A7 D6 899 cmpe #0d6h
06D8 06 07 6C 900 brz .22$
06DB F5 00 901 lda0 .DataBuf
06DD F9 01 902 sta0 .DataBuf+1
06DF 20 00 00 903 call .CheckPari
06E2 20 00 00 904 call .CheckMem
06E5 F5 00 905 lda0 .AfterPari
06E7 A7 06 906 cmpe #06h
06E9 06 07 43 907 brz .DisDmsFractFlag
06EC A7 09 908 cmpe #09h
06EE 06 07 43 909 brz .DisDmsFractFlag
06F1 A7 0A 910 cmpe #0ah
06F3 06 07 43 911 brz .DisDmsFractFlag
06F6 02 06 C1 912 br .NextDP
06F9 913 .DmsMode:
06F9 F3 00 914 lda #>.SetFlag
06FB FC 28 915 sta PP
06FD F1 00 916 lda .SetFlag
06FF CB FB 917 anda #~04h
0701 DB 04 918 ora #04h
0703 FD 00 919 sta .SetFlag
0705 F3 04 920 lda #04h
0707 F9 00 921 sta0 .DispFlag
0709 02 06 C1 922 br .NextDP
070C 923 .FractMode:
070C F5 00 924 lda0 .DispFlag
070E A7 03 925 cmpe #03h
0710 06 06 C1 926 brz .NextDP
0713 A7 02 927 cmpe #02h
0715 06 06 C1 928 brz .NextDP
0718 F3 00 929 lda #>.SetFlag
071A FC 28 930 sta PP
071C F1 00 931 lda .SetFlag
071E CB E7 932 anda #~18h
0720 DB 08 933 ora #08h
0722 FD 00 934 sta .SetFlag
0724 F3 05 935 lda #05h
0726 F9 00 936 sta0 .DispFlag
0728 02 06 C1 937 br .NextDP
072B 938 .SetPoint:
072B F5 00 939 lda0 .DispFlag
072D A7 02 940 cmpe #02h
072F 06 06 C1 941 brz .NextDP
0732 F3 00 942 lda #>.SetFlag
0734 FC 28 943 sta PP
0736 F1 00 944 lda .SetFlag
0738 CB E3 945 anda #~1ch ;18
073A FD 00 946 sta .SetFlag
073C F3 03 947 lda #03h
073E F9 00 948 sta0 .DispFlag
0740 02 06 C1 949 br .NextDP
0743 950 .DisDmsFractFlag:
0743 F5 00 951 lda0 .DataBuf
0745 A7 A8 952 cmpe #0xA8
0747 06 06 C1 953 brz .NextDP
+ 954
+ 955
+ 956
+ 957
074A F5 00 958 lda0 .DispFlag
074C A7 02 959 cmpe #02h
074E 06 06 C1 960 brz .NextDP
0751 F3 00 961 lda #0h
0753 F9 00 962 sta0 .DispFlag
0755 02 07 65 963 br .11$
0758 964 .EndDispPari:
0758 F3 00 965 lda #>.SetFlag
075A FC 28 966 sta PP
075C F1 00 967 lda .SetFlag
075E CB 0C 968 anda #0ch
0760 A7 0C 969 cmpe #0ch
0762 06 07 6C 970 brz .22$
0765 971 .11$:
0765 F5 00 972 lda0 .DispFlag
0767 A7 00 973 cmpe #0h
0769 07 07 76 974 brnz .33$
076C 975 .22$:
076C F3 00 976 lda #>.SetFlag
076E FC 28 977 sta PP
0770 F1 00 978 lda .SetFlag
0772 CB E3 979 anda #~1ch
0774 FD 00 980 sta .SetFlag
0776 981 .33$:
0776 F3 01 982 lda #01h
0778 F9 00 983 sta0 .DispFlag
077A 24 984 ret
+ 985 ;-------------------------------------------
077B 986 .FormulaCk::
077B F3 00 987 lda #0h
077D FC 21 988 sta DP
077F F9 00 989 sta0 .FormulaFlag
0781 F3 02 990 lda #02h
0783 FC 28 991 sta PP
0785 F2 992 lda i
0786 A7 7A 993 cmpe #7ah
0788 06 07 A4 994 brz .ErrorSyn
+ 995
078B 996 .ScanEQU:
078B F3 02 997 lda #02h
078D FC 28 998 sta PP
078F 18 999 incdp
0790 F2 1000 lda i
0791 A7 7A 1001 cmpe #7ah
0793 06 07 BB 1002 brz .IsFormula
0796 F3 00 1003 lda #0h
0798 FC 28 1004 sta PP
079A F0 21 1005 lda DP
079C A5 00 1006 cmpe .DataDP
079E 06 08 AA 1007 brz .EndFormula
07A1 02 07 8B 1008 br .ScanEQU
07A4 1009 .ErrorSyn:
07A4 F3 02 1010 lda #02h
07A6 F9 00 1011 sta0 ErrorFlag
07A8 F3 00 1012 lda #0h
07AA F9 00 1013 sta0 .StoFlag
07AC F9 00 1014 sta0 .FormulaFlag
07AE F3 00 1015 lda #>.SFlag
07B0 FC 28 1016 sta PP
07B2 F1 00 1017 lda .SFlag
07B4 CB 7F 1018 anda #~80h
07B6 FD 00 1019 sta .SFlag
07B8 02 08 AA 1020 br .EndFormula
07BB 1021 .IsFormula:
07BB F0 21 1022 lda DP
07BD A7 01 1023 cmpe #01h
07BF 07 07 A4 1024 brnz .ErrorSyn
07C2 F3 01 1025 lda #01h
07C4 F9 00 1026 sta0 .FormulaFlag
07C6 F3 00 1027 lda #>.CalcFlag
07C8 FC 28 1028 sta PP
07CA F1 00 1029 lda .CalcFlag
07CC A7 01 1030 cmpe #01h
07CE 06 07 D8 1031 brz .CalcModeOp
07D1 F5 00 1032 lda0 .KeyPos
07D3 A7 7B 1033 cmpe #7bh
07D5 07 08 AA 1034 brnz .EndFormula
07D8 1035 .CalcModeOp:
07D8 F3 00 1036 lda #>.CalcFlag
07DA FC 28 1037 sta PP
07DC F3 01 1038 lda #01h
07DE FD 00 1039 sta .CalcFlag
07E0 20 08 AB 1040 call .SyntaxFormula
07E3 F5 00 1041 lda0 ErrorFlag
07E5 A7 00 1042 cmpe #0h
07E7 07 07 A4 1043 brnz .ErrorSyn
07EA 20 00 00 1044 call .Syntax
07ED F5 00 1045 lda0 ErrorFlag
07EF A7 00 1046 cmpe #0h
07F1 07 07 A4 1047 brnz .ErrorSyn ;.EndFormula
07F4 20 00 00 1048 call .ClrFa
07F7 20 00 00 1049 call .ClrP2
07FA F3 02 1050 lda #02h
07FC F9 00 1051 sta0 .FormulaDP
07FE 1052 .stomem:
07FE F3 02 1053 lda #02h
0800 FC 28 1054 sta PP
0802 F5 00 1055 lda0 .FormulaDP
0804 FC 21 1056 sta DP
0806 A7 4F 1057 cmpe #04fh
0808 06 08 80 1058 brz .copy2formula
080B F2 1059 lda i
080C F9 00 1060 sta0 .DataBuf
080E A7 E3 1061 cmpe #0e3h
0810 06 08 43 1062 brz .Recodemem
0813 A7 E4 1063 cmpe #0e4h
0815 06 08 43 1064 brz .Recodemem
0818 A7 E5 1065 cmpe #0e5h
081A 06 08 43 1066 brz .Recodemem
081D A7 E6 1067 cmpe #0e6h
081F 06 08 43 1068 brz .Recodemem
0822 A7 E7 1069 cmpe #0e7h
0824 06 08 43 1070 brz .Recodemem
0827 A7 E8 1071 cmpe #0e8h
0829 06 08 43 1072 brz .Recodemem
082C A7 F5 1073 cmpe #0f5h
082E 06 08 43 1074 brz .Recodemem
0831 A7 F6 1075 cmpe #0f6h
0833 06 08 43 1076 brz .Recodemem
0836 A7 F7 1077 cmpe #0f7h
0838 06 08 43 1078 brz .Recodemem
083B 1079 .nextdp1:
083B F5 00 1080 lda0 .FormulaDP
083D 1F 1081 inca
083E F9 00 1082 sta0 .FormulaDP
0840 02 07 FE 1083 br .stomem
0843 1084 .Recodemem:
+ 1085
0843 F3 00 1086 lda #<SignFa
0845 F9 00 1087 sta0 .Buf1
0847 F3 09 1088 lda #09h
0849 F9 00 1089 sta0 .Counter
084B 1090 .MEMsto:
084B F3 00 1091 lda #>SignFa
084D FC 28 1092 sta PP
084F F5 00 1093 lda0 .Counter
0851 A7 00 1094 cmpe #0h
0853 06 08 3B 1095 brz .nextdp1
0856 F5 00 1096 lda0 .Buf1
0858 FC 21 1097 sta DP
085A F2 1098 lda i
085B F9 01 1099 sta0 .DataBuf+1
085D A7 00 1100 cmpe #0h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -