📄 kclock2.lst
字号:
960
961 ;-----------------------------------
962 ; F: Hold key button
963 ; O: KeyHold
964 ; N: MaB
965 ;
966 0246 IsHoldKey
967 0246 C3 21 BTST KeyHeldNow ; if key held,
968 0248 E1 75 BITS KeyHold ;
969 024A DB 02 35 JP ChkKeyPress9 ; exit
970
971 ;====== DISPLAY ROUTINE ============================================
972
973 ;***********************************************************
974 ; F: Set NewWeightBCD & spWeightBCD to display nothing
975 ; O: NewWeightBCD[]
976 ; D: EA
977 ;
978 024D InitWeightBCD
979 024D 27 REF RLD_EA0
980 024E CD 90 LD NewWeightBCD0,EA ;
981 0250 CD 92 LD NewWeightBCD2,EA ;
982 0252 89 94 LD NewWeightBCD4,A ;
983 0254 C5 RET
984
985 ;***********************************************************
986 ; F: Clear weighting Symbol, retain low bat & timer icon
987 ; O: Iconset0, Iconset1, Iconset2
988 ; D: A
989 ;
990 0255 ClearWgtSym
991 0255 B0 LD A,#0 ; Clear decpt1, colon, g, oz
992 0256 89 86 LD Iconset0,A ; Clear lb, kg, decpt2, low bat
993 0258 89 87 LD Iconset1,A ;
994 025A 8C 89 LD A,Iconset3 ; Clear one, decpt3
995 025C DD 12 AND A,#0010b ; retain tare icon
996 025E 89 89 LD Iconset3,A ;
997 0260 8C 88 LD A,Iconset2 ; Clear S2, fl., ml
998 0262 DD 11 AND A,#0001b ; retain Hold icon
999 0264 89 88 LD Iconset2,A ;
1000 0266 C5 RET
1001
1002 ;***********************************************************
1003 ; F: Display Version Number
1004 ; O: NULL
1005 ;
1006 ;
1007 0267 DspVerNo
1008 0267 DB 42 9F CALL DspWeightTare ; Clear Display
1009 026A 81 05 LD EA,#LDsp_5 ; Display Samsung II
1010 026C CD 54 LD LDigit1xxx,EA ;
1011 026E 81 02 LD EA,#LDsp_2 ;
1012 0270 CD 52 LD LDigitx1xx,EA ;
1013
1014 0272 81 01 LD EA,#VerD1 ; Display Version
1015 0274 35 REF RLD_LDIGxx1xEA ;
1016 0275 81 08 LD EA,#VerD2 ;
1017 0277 34 REF RLD_LDIGxxx1EA ;
1018 0278 55 REF RDsp4LDigit ; Display ???? Digits
1019 0279 C5 RET
1020
1021 ;***********************************************************
1022 ; F: Display Overload - " EE"
1023 ; O: SDigitx_8
1024 ; LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1025 ;
1026 027A DspADInitErr
1027 027A 81 0E DspEE LD EA,#LDsp_E ; Display "EE" when A/D init error
1028 027C 34 REF RLD_LDIGxxx1EA ;
1029 027D 1B JR DspHILO ;
1030
1031 ;***********************************************************
1032 ; F: Display Overload - " LO "
1033 ; O: SDigitx_8
1034 ; LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1035 ;
1036 027E 81 00 DspLO LD EA,#LDsp_O ;
1037 0280 34 REF RLD_LDIGxxx1EA ;
1038 0281 81 11 LD EA,#LDsp_L ;
1039 0283 15 JR DspHILO ;
1040
1041 ;***********************************************************
1042 ; F: Display Overload - " HI "
1043 ; O: SDigitx_8
1044 ; LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1045 ;
1046 0284 81 01 DspHI LD EA,#LDsp_I ;
1047 0286 34 REF RLD_LDIGxxx1EA ;
1048 0287 81 10 LD EA,#LDsp_H ;
1049 0289 35 DspHILO REF RLD_LDIGxx1xEA ;
1050 028A 81 17 LD EA,#LDspNul ;
1051 028C EA A8 CALLS LdLDigit1 ;
1052 028E 17 JR ClrDspBuf1 ;
1053
1054 ;***********************************************************
1055 ; F: Clear display buffer
1056 ; D: EA
1057 ;
1058 028F ClrDspBuf
1059 028F 81 17 LD EA,#LDspNul ;
1060 0291 EA A6 CALLS LdLDigit ;
1061 0293 DB 4D 6C CALL ClearSymbol ;
1062 0296 ClrDspBuf1
1063 0296 EA 55 CALLS ClearWgtSym ;
1064 0298 B9 LD A,#SDsp_Nul ;
1065 0299 54 REF RDspSDigit ; Display ?/? Digits
1066 029A 55 REF RDsp4LDigit ; Display ???? Digits
1067 029B 56 REF RDspSymbol ;
1068 029C C5 RET
1069
1070 ;***********************************************************
1071 ; F: Display Underweight - "----"
1072 ; O: SDigitx_8
1073 ; LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1074 ;
1075 029D DspUnderWeight
1076 029D 81 16 LD EA,#LDsp__ ;
1077
1078 ;***********************************************************
1079 ; F: Weight Taring Display - "0000"
1080 ; O: SDigitx_8
1081 ; LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1082 ;
1083 029F DspWeightTare
1084 029F 81 00 LD EA,#LDsp_0 ;
1085 02A1 EA A6 CALLS LdLDigit ;
1086 02A3 02 JR ClrDspBuf1 ;
1087
1088 ;***********************************************************
1089 ; F: Display "8888"
1090 ; O: LDigit1xxx, LDigitx1xx, LDigitxx1x, LDigitxxx1
1091
1092 02A4 LdLDig8888
1093 02A4 81 08 LD EA,#LDsp_8 ;
1094
1095 ;***********************************************************
1096 ; F: Load EA into 4 Large digit buffer
1097 ; I: EA
1098 ; O: LDigitxxx1 = LDigitxx1x = LDigitx1xx = LDigit1xxx = EA
1099 ;
1100 02A6 LdLDigit
1101 02A6 34 REF RLD_LDIGxxx1EA ;
1102 02A7 35 REF RLD_LDIGxx1xEA ;
1103 02A8 LdLDigit1
1104 02A8 CD 52 LD LDigitx1xx,EA ;
1105 02AA CD 54 LD LDigit1xxx,EA ;
1106 02AC E2 27 BTSF UdrWtNow ; if underweight now,
1107 02AE 81 17 LD EA,#LDspNul ; dsp decimal digit to nothing.
1108 02B0 CD 4C LD LDigit___1,EA ;
1109 02B2 C5 RET
1110
1111 ;***********************************************************
1112 ; F: Initialize Mode Setting
1113 ; I: FactoryMode = 0..15 Mode
1114 ; UnitMode = 0(kg), 1(lb)
1115 ; OperFlag5.3,2 = 0: g(Default); 1 = oz; 2 = ml; 3 = fl.oz
1116 ; O: Step1, Step2, Bound1, Bound2
1117 ; gRatio, oz1_8Ratio, ozRatio, lbRatio
1118 ;
1119 02B3 SetFactoryMode
1120 02B3 8C 45 LD A,FactoryMode
1121 02B5 E2 20 BTSF UnitMode
1122 02B7 92 C1 JPS Set_oz_Mode
1123
1124 02B9 Set_g_Mode
1125 02B9 D9 3F LD Y,#3 ;
1126 02BB 83 AA LD HL,#Mode_g_1_8 ;
1127 02BD EA D0 CALLS SetFactory1 ;
1128 02BF 92 CF JPS SetFactoryModeE ;
1129
1130 02C1 Set_oz_Mode
1131 02C1 D9 6F LD Y,#6 ;
1132 02C3 83 C2 LD HL,#Mode_lb_1_8 ;
1133 02C5 EA D0 CALLS SetFactory1 ;
1134 02C7 EA DC CALLS SetFactory2 ;
1135 02C9 F3 20 BTST SolLiqMode ;
1136 02CB 92 CF JPS SetFactoryModeE ;
1137
1138 02CD Set_floz_code
1139 02CD EA DF CALLS SetFactory3 ;
1140
1141 02CF SetFactoryModeE
1142 02CF C5 RET
1143
1144 ;------------------------------------------------------------------
1145 02D0 SetFactory1
1146 02D0 30 REF RLD_E0 ; Only have 0..15 mode
1147 02D1 EC 1B CALLS HexMul ;
1148 02D3 E6 RCF ;
1149 02D4 33 REF RADC_EAHL ; EA = Start addr of mode data
1150 02D5 26 REF RLD_WXEA ;
1151 02D6 83 96 LD HL,#Step1 ;
1152 02D8 52 REF RStoreWordCode ; Store Step1
1153 02D9 52 REF RStoreWordCode ; Store Boundary1
1154 02DA 53 REF RStoreByteCode ; Store Unit count
1155 02DB C5 RET
1156
1157 02DC SetFactory2
1158 02DC 52 REF RStoreWordCode ; Store Unit count (1 oz)
1159 02DD 52 REF RStoreWordCode ; Store Unit count (1 lb)
1160 02DE C5 RET
1161
1162 02DF SetFactory3
1163 02DF 83 9A LD HL,#Bound1 ;
1164 02E1 52 REF RStoreWordCode ; Store fl.oz boundaries
1165 02E2 C5 RET
1166
1167 ;***********************************************************
1168 ; F: Delay routine
1169 ; I: EA = ? x 10 ms
1170 ;
1171 02E3 81 01 Dly1 LD EA,#1 ;
1172 02E5 81 02 Dly2 LD EA,#2 ;
1173 02E7 81 03 Dly3 LD EA,#3
1174 02E9 81 14 Dly20 LD EA,#20 ;
1175 02EB 81 3C Dly60 LD EA,#60 ;
1176 02ED 81 C8 Dly200 LD EA,#200 ;
1177 02EF 81 FA Dly250 LD EA,#250 ;
1178 02F1 DB 4A A7 CALL Delay10ms ;
1179 02F4 C5 RET
1180
1181 ;***********************************************************
1182 ; F: Calculate Step value
1183 ; I: UnitCnt, Step1, Step2
1184 ; O: EA = Step value
1185 ; HexCalFlg = 1
1186 ; N: Step value = Step count / Unit count / 10
1187 ; Step value = 1byte
1188 ; For mode 6 & 15, Step value = Step / Unit count
1189 ;
1190 02F5 CalStepVal
1191 02F5 2B PUSH HL
1192
1193 02F6 85 64 LD WX,#YS_F_REG_4 ;
1194 02F8 62 REF RCurStep2Ary ;
1195 02F9 CE 9E LD EA,UnitCnt ; Step VaLue = Step count / Unit count
1196 02FB 83 74 LD HL,#YS_L_REG_4 ;
1197 02FD 50 REF RByteAry ;
1198 02FE 36 REF RDiv_YS ;
1199
1200 ; LD A,FactoryMode ;
1201 ; CPSE A,#5 ; i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -