📄 calctools.asl
字号:
0587 F3 00 894 lda #0h
0589 F9 78 895 sta0 .PYDP
058B 20 05 8F 896 call .Copyformula
058E 24 897 ret
+ 898
+ 899 ;-------------------------------------------
058F 900 .Copyformula::
+ 901
058F F3 4F 902 lda #79
0591 F9 79 903 sta0 .Counter
0593 904 .formulaCopy:
0593 F5 79 905 lda0 .Counter
0595 A7 00 906 cmpe #0h
0597 06 05 C2 907 brz .EndCopyformula
059A F5 6F 908 lda0 .PXPP
059C FC 28 909 sta PP
059E F5 77 910 lda0 .PXDP
05A0 FC 21 911 sta DP
05A2 F2 912 lda i
05A3 F9 7A 913 sta0 .Data
05A5 F5 77 914 lda0 .PXDP
05A7 1F 915 inca
05A8 F9 77 916 sta0 .PXDP
05AA F5 65 917 lda0 .PYPP
05AC FC 28 918 sta PP
05AE F5 78 919 lda0 .PYDP
05B0 FC 21 920 sta DP
05B2 F5 7A 921 lda0 .Data
05B4 FE 922 sta i
05B5 F5 78 923 lda0 .PYDP
05B7 1F 924 inca
05B8 F9 78 925 sta0 .PYDP
05BA F5 79 926 lda0 .Counter
05BC 3F 927 deca
05BD F9 79 928 sta0 .Counter
05BF 02 05 13 929 br .DataCopy
05C2 930 .EndCopyformula:
+ 931
05C2 F3 00 932 lda #0h
05C4 FC 28 933 sta PP
05C6 24 934 ret
+ 935 ;/*-----(clear operand X)-----------------*/
05C7 936 .ClrFa::
05C7 F3 00 937 lda #>SignFa
05C9 F9 6F 938 sta0 .PXPP
05CB F3 00 939 lda #<SignFa
05CD F9 77 940 sta0 .PXDP
05CF 20 05 47 941 call .ClearData
05D2 24 942 ret
+ 943 ;/*-----(clear operand X)-----------------*/
05D3 944 .ClrX::
05D3 F3 00 945 lda #>SignX
05D5 F9 6F 946 sta0 .PXPP
05D7 F3 00 947 lda #<SignX
05D9 F9 77 948 sta0 .PXDP
05DB 20 05 47 949 call .ClearData
05DE 24 950 ret
+ 951
+ 952 ;/*-----(clear operand Y)-----------------*/
05DF 953 .ClrY::
05DF F3 00 954 lda #>SignY
05E1 F9 6F 955 sta0 .PXPP
05E3 F3 00 956 lda #<SignY
05E5 F9 77 957 sta0 .PXDP
05E7 20 05 47 958 call .ClearData
05EA 24 959 ret
+ 960 ;/*-----(clear operand Z)-----------------*/
05EB 961 .ClrZ::
05EB F3 00 962 lda #>SignZ
05ED F9 6F 963 sta0 .PXPP
05EF F3 00 964 lda #<SignZ
05F1 F9 77 965 sta0 .PXDP
05F3 20 05 47 966 call .ClearData
05F6 24 967 ret
+ 968 ;/*-----(PUT 100 TO OperandY)-------------*/
05F7 969 .Put_100_to_OperandY:
05F7 20 05 DF 970 call .ClrY
05FA F3 01 971 lda #01h
05FC F9 05 972 sta0 OperandY+5
05FE 24 973 ret
+ 974 ;/*-----(PUT 10 TO OperandX log 10)--------*/
+ 975
05FF 976 .Put_10_to_OperandX:
05FF 20 05 D3 977 call .ClrX
0602 F3 10 978 lda #10h
0604 F9 06 979 sta0 OperandX+6
0606 24 980 ret
+ 981 ;/*-----(PUT 1 TO OperandX 1/X)-------------*/
+ 982
0607 983 .Put_1_to_OperandX::
0607 20 05 D3 984 call .ClrX
060A F3 01 985 lda #01h
060C F9 06 986 sta0 OperandX+6
060E 24 987 ret
+ 988 ;-------(X_Squ )----------------------------
060F 989 .X_Squ::
060F F3 00 990 lda #<SignX
0611 F9 77 991 sta0 .PXDP
0613 F3 00 992 lda #<SignY
0615 F9 78 993 sta0 .PYDP
0617 F3 00 994 lda #>SignX
0619 F9 6F 995 sta0 .PXPP
061B F3 00 996 lda #>SignY
061D F9 65 997 sta0 .PYPP
061F 20 05 0F 998 call .CopyData
0622 24 999 ret
+ 1000
+ 1001 ;----------------------------------------------
0623 1002 .ClearInt::
0623 F3 00 1003 lda #>PointY
0625 FC 28 1004 sta PP
0627 F3 0E 1005 lda #0eh
0629 FD 00 1006 sta PointY
062B F5 00 1007 lda0 PointZ
062D A7 0F 1008 cmpe #0fh
062F 04 06 5A 1009 brc .NoPoint
0632 F3 00 1010 lda #OperandZ
0634 FC 21 1011 sta DP
0636 1012 .DelInt:
0636 F1 00 1013 lda PointY
0638 A5 00 1014 cmpe PointZ
063A 06 06 5E 1015 brz .EndGetPoint
063D F1 00 1016 lda PointY
063F 3F 1017 deca
0640 FD 00 1018 sta PointY
0642 F2 1019 lda i
0643 CB 0F 1020 anda #0fh
0645 FE 1021 sta i
0646 F1 00 1022 lda PointY
0648 A5 00 1023 cmpe PointZ
064A 06 06 5E 1024 brz .EndGetPoint
064D F1 00 1025 lda PointY
064F 3F 1026 deca
0650 FD 00 1027 sta PointY
0652 F2 1028 lda i
0653 CB F0 1029 anda #0f0h
0655 FE 1030 sta i
0656 18 1031 incdp
0657 02 06 36 1032 br .DelInt
065A 1033 .NoPoint:
+ 1034
065A 20 05 EB 1035 call .ClrZ
065D 24 1036 ret
065E 1037 .EndGetPoint:
065E 24 1038 ret
+ 1039 ;------------------------------------------
+ 1040
065F 1041 .DelPoint::
065F F3 00 1042 lda #>PointY
0661 FC 28 1043 sta PP
0663 F5 00 1044 lda0 PointZ
0665 A7 9C 1045 cmpe #156
0667 04 06 B5 1046 brc .NoInt
066A A7 0F 1047 cmpe #0fh
066C 05 06 75 1048 brnc .Under14
066F 20 05 EB 1049 call .ClrZ
0672 02 06 B5 1050 br .NoInt
0675 1051 .Under14:
0675 F3 0F 1052 lda #0fh
0677 FD 00 1053 sta PointY
0679 F3 00 1054 lda #OperandZ
067B 3F 1055 deca
067C FC 21 1056 sta DP
067E 1057 .ClearPoint:
067E F1 00 1058 lda PointY
0680 A5 00 1059 cmpe PointZ
0682 04 06 90 1060 brc .IsInteven
0685 F2 1061 lda i
0686 CB 0F 1062 anda #0fh
0688 FE 1063 sta i
0689 F1 00 1064 lda PointY
068B A7 FF 1065 cmpe #0ffh
068D 06 06 B5 1066 brz .NoInt
0690 1067 .IsInteven:
0690 F1 00 1068 lda PointY
0692 3F 1069 deca
0693 FD 00 1070 sta PointY
0695 F1 00 1071 lda PointY
0697 A5 00 1072 cmpe PointZ
0699 04 06 A7 1073 brc .IsIntodd
069C F1 00 1074 lda PointY
069E A7 FF 1075 cmpe #0ffh
06A0 06 06 B5 1076 brz .NoInt
06A3 F2 1077 lda i
06A4 CB F0 1078 anda #0f0h
06A6 FE 1079 sta i
06A7 1080 .IsIntodd:
06A7 F1 00 1081 lda PointY
06A9 3F 1082 deca
06AA FD 00 1083 sta PointY
06AC A7 FF 1084 cmpe #0ffh
06AE 06 06 B5 1085 brz .NoInt
06B1 18 1086 incdp
06B2 02 06 7E 1087 br .ClearPoint
06B5 1088 .NoInt:
06B5 F3 00 1089 lda #0h
06B7 F9 07 1090 sta0 OperandZ+7
06B9 20 00 00 1091 call CheckOutData
+ 1092
06BC 24 1093 ret
+ 1094 ;-------------------------------------------
06BD 1095 .Random::
06BD F5 D7 1096 lda0 .RandCnt
06BF A7 FF 1097 cmpe #0ffh
06C1 07 06 C8 1098 brnz .AddCnt
06C4 F3 00 1099 lda #0h
06C6 F9 D7 1100 sta0 .RandCnt
06C8 1101 .AddCnt:
06C8 F5 D7 1102 lda0 .RandCnt
06CA 8B 80 1103 adda #80h
06CC F9 D7 1104 sta0 .RandCnt
06CE 1105 .ProduceRandom::
+ 1106
06CE 20 05 D3 1107 call .ClrX
06D1 F3 01 1108 lda #01h
06D3 FC 28 1109 sta PP
06D5 F3 00 1110 lda #0h
06D7 FD 00 1111 sta .M_hexbuf
06D9 F5 D7 1112 lda0 .RandCnt
06DB FD 01 1113 sta .M_hexbuf+1
06DD 20 00 00 1114 call .Hex2Bcd
06E0 F1 00 1115 lda .M_bcdbuf
06E2 F9 05 1116 sta0 OperandX+.CntByte-3
06E4 F1 01 1117 lda .M_bcdbuf+1
06E6 F9 06 1118 sta0 OperandX+.CntByte-2
06E8 F3 00 1119 lda #0h
06EA F9 00 1120 sta0 PointX
06EC F9 00 1121 sta0 SignX
06EE F9 00 1122 sta0 PointY
06F0 F9 00 1123 sta0 SignY
06F2 20 05 DF 1124 call .ClrY
06F5 F3 07 1125 lda #07H
06F7 F9 05 1126 sta0 OperandY+.CntByte-3
06F9 F3 89 1127 lda #89H
06FB F9 06 1128 sta0 OperandY+.CntByte-2
06FD F3 00 1129 lda #0h
06FF FC 28 1130 sta PP
0701 20 00 00 1131 call Division
0704 F3 03 1132 lda #03h
0706 FD 00 1133 sta PointZ
0708 20 06 23 1134 call .ClearInt
070B 24 1135 ret
+ 1136 ;------------------------------------------
070C 1137 .CheckQuadrant::
070C F5 00 1138 lda0 SignX
070E A7 00 1139 cmpe #0h
0710 06 07 3E 1140 brz .EndQuadrant
0713 F5 00 1141 lda0 SignY
0715 A7 00 1142 cmpe #0h
0717 06 07 2C 1143 brz .QuadrantII
071A 20 05 DF 1144 call .ClrY
071D F3 01 1145 lda #01h
071F F9 05 1146 sta0 OperandY+5
0721 F3 80 1147 lda #80h
0723 F9 06 1148 sta0 OperandY+6
0725 20 09 F0 1149 call .Z_trans_X
0728 20 00 00 1150 call Subtration
072B 24 1151 ret
072C 1152 .QuadrantII:
072C 20 05 D3 1153 call .ClrX
072F F3 01 1154 lda #01h
0731 F9 05 1155 sta0 OperandX+5
0733 F3 80 1156 lda #80h
0735 F9 06 1157 sta0 OperandX+6
0737 20 0A 04 1158 call .Z_trans_Y
073A 20 00 00 1159 call Addition
073D 24 1160 ret
073E 1161 .EndQuadrant:
+ 1162
073E 24 1163 ret
+ 1164 ;------------------------------------------
073F 1165 .GetDpCount::
073F F3 00 1166 lda #OperandZ
0741 02 07 4B 1167 br .addr
0744 1168 .GetDpCountX::
0744 F3 00 1169 lda #OperandX
0746 02 07 4B 1170 br .addr
0749 1171 .GetDpCountY::
0749 F3 00 1172 lda #OperandY
+ 1173
074B 1174 .addr:
074B FD 00 1175 sta Addr1
074D 20 00 00 1176 call CheckData
0750 24 1177 ret
+ 1178 ;-------------------------------------------
0751 1179 .LimitCarry::
0751 1180 .Carry::
+ 1181
0751 F3 00 1182 lda #>StateFlag
0753 FC 28 1183 sta PP
0755 F1 00 1184 lda StateFlag
0757 CB 08 1185 anda #08h
0759 07 07 E8 1186 brnz .EndLimit10
075C 20 09 50 1187 call .Y_trans_Xn ;T
075F 20 00 00 1188 call CheckOutData
0762 20 07 3F 1189 call .GetDpCount
0765 F5 00 1190 lda0 DpCount
0767 F9 71 1191 sta0 .Temp
0769 1192 .ShiftR1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -