📄 trigonom.asl
字号:
0495 FD 00 902 sta Addr2
+ 903
0497 20 00 00 904 call CopyData
+ 905
049A F1 00 906 lda PointZ
049C FD 5B 907 sta PointXn
+ 908
049E 02 05 A9 909 br TanData00
+ 910 4$: ;;;Get table data 2
04A1 F1 00 911 lda OperandZ
04A3 FD 00 912 sta Xn
+ 913
04A5 F3 00 914 lda #OperandZ
04A7 FD 00 915 sta Addr1
+ 916
04A9 F3 0E 917 lda #Length_Z
04AB FD 00 918 sta DpCount
+ 919
04AD 20 00 00 920 call ShiftToL2
+ 921
04B0 F3 0E 922 lda #Length_Z
04B2 FD 00 923 sta DpCount
+ 924
04B4 20 00 00 925 call ShiftToL2
+ 926
04B7 F1 00 927 lda PointZ
04B9 8B 02 928 adda #02h
04BB FD 00 929 sta PointZ
+ 930
04BD 02 04 DA 931 br 6$
+ 932 5$: ;;;Get table data 1
04C0 F1 00 933 lda OperandZ
04C2 7F 934 rorc
04C3 7F 935 rorc
04C4 7F 936 rorc
04C5 7F 937 rorc
04C6 CB 0F 938 anda #0fh
04C8 FD 00 939 sta Xn
+ 940
04CA F3 00 941 lda #OperandZ
04CC FD 00 942 sta Addr1
+ 943
04CE F3 0E 944 lda #Length_Z
04D0 FD 00 945 sta DpCount
+ 946
04D2 20 00 00 947 call ShiftToL2
+ 948
04D5 F1 00 949 lda PointZ
04D7 1F 950 inca
04D8 FD 00 951 sta PointZ
+ 952 6$: ;;;save seta to BufferXn
04DA F3 00 953 lda #OperandZ
04DC FD 00 954 sta Addr1
+ 955
04DE F3 5C 956 lda #BufferXn
04E0 FD 00 957 sta Addr2
+ 958
04E2 20 00 00 959 call CopyData
+ 960
04E5 F1 00 961 lda PointZ
04E7 FD 5B 962 sta PointXn
+ 963 ;;;clear operandX
04E9 F3 00 964 lda #OperandX
04EB FD 00 965 sta Addr1
+ 966
04ED 20 00 00 967 call ClearData
+ 968
04F0 F3 00 969 lda #0
04F2 FD 00 970 sta PointX
04F4 971 GetXAddY: ;;;get TanXaddY table
04F4 F3 00 972 lda #^TanXAddY
04F6 FD 02 973 sta TableC+2
+ 974
04F8 F3 0C 975 lda #@TanXAddY
04FA FD 01 976 sta TableC+1
+ 977
04FC F3 83 978 lda #<TanXAddY
04FE FD 00 979 sta TableC
+ 980
0500 F1 00 981 lda Xn
0502 CB F0 982 anda #0f0h
0504 06 05 19 983 brz 1$
+ 984
0507 F1 00 985 lda TableC
0509 8B 50 986 adda #50h
050B FD 00 987 sta TableC
+ 988
050D F1 01 989 lda TableC+1
050F 9B 00 990 addc #0
0511 FD 01 991 sta TableC+1
+ 992
0513 F1 02 993 lda TableC+2
0515 9B 00 994 addc #0
0517 FD 02 995 sta TableC+2
+ 996 1$: ;;;Load X+Y data
0519 F1 00 997 lda Xn
051B CB 0F 998 anda #0fh
051D FD 00 999 sta Temp2
+ 1000 ;;;get X+Y data
051F 20 08 A9 1001 call GetData
+ 1002 ;;;save X+Y data to buffer
0522 F3 00 1003 lda #OperandY
0524 FD 00 1004 sta Addr1
+ 1005
0526 F3 00 1006 lda #Buffer
0528 FD 00 1007 sta Addr2
+ 1008
052A 20 00 00 1009 call CopyData
+ 1010
052D F1 00 1011 lda PointY
052F FD 00 1012 sta PointB
0531 1013 GetXMulY: ;;;reset signBz
0531 F3 00 1014 lda #0
0533 FD 00 1015 sta SignBz
+ 1016 ;;;GetX*Y
0535 F3 00 1017 lda #^TanXMulY
0537 FD 02 1018 sta TableC+2
+ 1019
0539 F3 0D 1020 lda #@TanXMulY
053B FD 01 1021 sta TableC+1
+ 1022
053D F3 37 1023 lda #<TanXMulY
053F FD 00 1024 sta TableC
+ 1025
0541 F1 00 1026 lda Xn
0543 CB F0 1027 anda #0f0h
0545 07 05 5F 1028 brnz 1$
+ 1029 ;;;set X*Y=0
0548 F3 00 1030 lda #OperandY
054A FD 00 1031 sta Addr1
+ 1032
054C 20 00 00 1033 call ClearData
+ 1034 ;;;;------------------------push 1 to operandy
054F F3 00 1035 lda #0
0551 FD 00 1036 sta PointY
+ 1037
0553 F3 00 1038 lda #OperandY
0555 8B 06 1039 adda #Length-1
0557 FC 21 1040 sta r_dp
+ 1041
0559 F3 01 1042 lda #01h
055B FE 1043 sta i
+ 1044
055C 02 05 84 1045 br 2$
+ 1046 1$:
055F F1 00 1047 lda Xn
0561 CB 0F 1048 anda #0fh
0563 FD 00 1049 sta Temp2
+ 1050 ;;;get X*Y data
0565 20 08 A9 1051 call GetData
+ 1052 ;;;save X*Y to bufferZ
0568 F3 00 1053 lda #OperandY
056A FD 00 1054 sta Addr1
+ 1055
056C F3 00 1056 lda #BufferZ
056E FD 00 1057 sta Addr2
+ 1058
0570 20 00 00 1059 call CopyData
+ 1060
0573 F1 00 1061 lda PointY
0575 FD 00 1062 sta PointBz
+ 1063
0577 F1 00 1064 lda Xn ;;;if Y>=6 Sign=1
0579 CB 0F 1065 anda #0fh
057B A7 06 1066 cmpe #06h
057D 05 05 84 1067 brnc 2$
+ 1068
0580 F3 01 1069 lda #01h
0582 FD 00 1070 sta SignBz
+ 1071 2$:
0584 F3 00 1072 lda #Buffer
0586 FD 00 1073 sta Addr1
+ 1074
0588 F3 00 1075 lda #OperandX
058A FD 00 1076 sta Addr2
+ 1077
058C 20 00 00 1078 call CopyData
+ 1079
058F F1 00 1080 lda PointB
0591 FD 00 1081 sta PointX
+ 1082
0593 20 00 00 1083 call Division
+ 1084 ;;;save data to bufferTan
0596 F3 00 1085 lda #OperandZ
0598 FD 00 1086 sta Addr1
+ 1087
059A F3 52 1088 lda #BufferTan
059C FD 00 1089 sta Addr2
+ 1090
059E 20 00 00 1091 call CopyData
+ 1092
05A1 F1 00 1093 lda PointZ
05A3 FD 51 1094 sta PointT
+ 1095
05A5 F1 00 1096 lda SignZ
05A7 FD 50 1097 sta SignT
05A9 1098 TanData00: ;;;;table end
05A9 F3 00 1099 lda #0
05AB FD 00 1100 sta SignX
05AD FD 00 1101 sta SignY
05AF FD 00 1102 sta SignZ
+ 1103
+ 1104 ;;;get X^2
05B1 F3 5C 1105 lda #BufferXn
05B3 FD 00 1106 sta Addr1
+ 1107
05B5 F3 00 1108 lda #OperandX
05B7 FD 00 1109 sta Addr2
+ 1110
05B9 20 00 00 1111 call CopyData
+ 1112
05BC F1 5B 1113 lda PointXn
05BE FD 00 1114 sta PointX
+ 1115 ;;;save X to BufferZ
05C0 F3 00 1116 lda #BufferZ
05C2 FD 00 1117 sta Addr2
+ 1118
05C4 20 00 00 1119 call CopyData
+ 1120
05C7 F1 5B 1121 lda PointXn
05C9 FD 00 1122 sta PointBz
+ 1123
05CB F3 00 1124 lda #0
05CD FD 00 1125 sta SignBz
+ 1126
05CF 20 0B A7 1127 call GetXX
+ 1128 ;;;save X^2 to buffer
05D2 F3 00 1129 lda #OperandZ
05D4 FD 00 1130 sta Addr1
+ 1131
05D6 F3 00 1132 lda #Buffer
05D8 FD 00 1133 sta Addr2
+ 1134
05DA 20 00 00 1135 call CopyData
+ 1136
05DD F1 00 1137 lda PointZ
05DF FD 00 1138 sta PointB
+ 1139 ;;;move X^2 to Y
05E1 F3 00 1140 lda #OperandY
05E3 FD 00 1141 sta Addr2
+ 1142
05E5 20 00 00 1143 call CopyData
+ 1144
05E8 F1 00 1145 lda PointZ
05EA FD 00 1146 sta PointY
+ 1147 ;;;move X to X
05EC F3 5C 1148 lda #BufferXn
05EE FD 00 1149 sta Addr1
+ 1150
05F0 F3 00 1151 lda #OperandX
05F2 FD 00 1152 sta Addr2
+ 1153
05F4 20 00 00 1154 call CopyData
+ 1155
05F7 F1 5B 1156 lda PointXn
05F9 FD 00 1157 sta PointX
+ 1158 ;;;X^2*X=X^3
05FB 20 00 00 1159 call Multiplation
+ 1160 ;;;save X^3 to X
05FE F3 00 1161 lda #OperandZ
0600 FD 00 1162 sta Addr1
+ 1163
0602 F3 00 1164 lda #OperandX
0604 FD 00 1165 sta Addr2
+ 1166
0606 20 00 00 1167 call CopyData
+ 1168
0609 F1 00 1169 lda PointZ
060B FD 00 1170 sta PointX
+ 1171 ;;;move X^3 to BufferXn
060D F3 5C 1172 lda #BufferXn
060F FD 00 1173 sta Addr2
+ 1174
0611 20 00 00 1175 call CopyData
+ 1176
0614 F1 00 1177 lda PointZ
0616 FD 5B 1178 sta PointXn
+ 1179 ;;;push 3 to Y
0618 F3 00 1180 lda #OperandY
061A FD 00 1181 sta Addr1
+ 1182
061C 20 00 00 1183 call ClearData
+ 1184
061F F3 00 1185 lda #OperandY
0621 8B 06 1186 adda #Length-1
0623 FC 21 1187 sta r_dp
+ 1188
0625 F3 03 1189 lda #03h
0627 FE 1190 sta i
+ 1191
0628 F3 00 1192 lda #0
062A FD 00 1193 sta PointY
+ 1194 ;;;X^3/3
062C 20 00 00 1195 call Division
+ 1196 ;;;move X^3/3 to operandx
062F F3 00 1197 lda #OperandZ
0631 FD 00 1198 sta Addr1
+ 1199
0633 F3 00 1200 lda #OperandX
0635 FD 00 1201 sta Addr2
+ 1202
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -