📄 basic_fn.med
字号:
890 +1 test (FLG_MODE).0
891 +1 j t,dt_upd3
892 cmp a,MAX_DIGIT_DT ;
893 jp dt_upd4 ;V4.07
894 dt_upd3: ;V4.07
895 cmp a,18 ;V4.07
896 dt_upd4: ;V4.07
897 j ge,dt_upd9 ;#/D entry over flow? yes-> doesn't keep current data (just count up DT_CT)
898
899 ld hl,DT_BUF
900 call stg_sfl49 ;DT_BUF left shift by nibble
901
902 ld a,(DT_BUF_LSD)
903 or a,w ;store entry data(reg.w)
904 ld (DT_BUF_LSD),a
905 j dt_upd8
906 dt_upd5:
907 ;V3.01 cmp w,C_DP
908 ;V3.01 j eq,dt_upd9 ;in case DP entry? yes-> doesn't count up DT_CT
909 dt_upd8:
910 inc (DT_CT) ;increment #/D entry counter
911 dt_upd9:
912 ret
913
914 ;===============================================================================
915 ; DP
916 ;===============================================================================
917 dp_key:
919 +1 ld wa,F_TNKEY
920 +1 test (F_TNKEY>>4).a ;bit -reverse-> jump status
921 +1 j f,dp_key_00 ;if jump status is 0 -> branch
923 +1 ld wa,F_TNKEY
924 +1 set (F_TNKEY>>4).a
925 ld a,(TEN_CT)
926 j nz,dp_key_00 ;first DP key entry?(TEN_CT=0)
927 call ten_clear ;yes -> clear TENKEY
928 ;V3.12 inc (TEN_CT)
929 ld a,(PRE_KEY) ;V1.52
930 ld (PRE_KEY_BK),a ;V1.52 this only is used for [IC] after ten key entry
931 dp_key_00:
932 cmp (TEN_CT),0 ;V3.12
933 j nz,dp_key_01 ;V3.12 ;first DP key entry?(TEN_CT=0)
934 inc (TEN_CT) ;V3.12
935 dp_key_01: ;V3.12
937 +1 ld wa,F_TNKEY
938 +1 set (F_TNKEY>>4).a
940 +1 ld wa,F_DPIN
941 +1 set (F_DPIN>>4).a
942 ;for update #/D entry.............
943 ld a,(DT_CT)
944 j nz,dp_key_02 ;first DP key entry?
945 call spc_dt ;clear #/D key buffer
946 ;V3.01 jp dp_key_09 ;V1.07
947 ;V1.32 jp dp_key_080 ;V1.32
948 dp_key_02:
949 ;V3.01 ld a,(DT_BUF_LSD) ;V1.06
950 ;V3.01 and a,0x0f ;V1.06
951 ;V3.01 cmp a,C_DP ;V1.06
952 ;V3.01 j eq,dp_key_09 ;V1.06
953 ;V3.01 cmp (DT_DOT_CNT),4 ;V1.06
954 ;V3.01 j ge,dp_key_09 ;V1.06
955 ;V3.01 cmp (DT_CHR_CNT),2 ;V1.06
956 ;V3.01 j ge,dp_key_08 ;V1.06
957 ;V3.01 ld hl,DT_BUF ;V1.06
958 ;V3.01 call stg_sfl49 ;V1.06
959 ;V3.01 ld a,(DT_BUF_LSD) ;V1.06
960 ;V3.01 swap a ;V1.06
961 ;V3.01 cmp (DT_DOT_CNT),0 ;V1.06
962 ;V3.01 j ne,dp_key_07 ;V1.06
963 ;V3.01 or a,0xc0 ;V1.06 dot replace "0"
964 dp_key_07: ;V1.24
965 ;V3.01 or a,0xd0 ;V1.24 "D" replace "0", will be return to 0 when print
966 dp_key_071: ;V1.24
967 ;V3.01 ld (DT_BUF_LSD),a ;V1.06
968 ;V3.01 inc (DT_CT) ;V1.06
969 dp_key_08: ;V1.06
970 inc (DT_DOT_CNT) ;V1.06
971 dp_key_080: ;V1.07
972 ld w,C_DP ;w <- DP character
973 call dt_update ;DT_BUF update for #/D print
974
975 dp_key_09:
976 ld (DT_CHR_CNT),0 ;V1.06
977 j tenkey_end
978
979 ;===============================================================================
980 ; GT
981 ;===============================================================================
982 gt_key:
983 ;V1.23
984 ;V3.14 ld hl,IC_G
985 ;V3.14 call ic_to_icbk ;V1.22
986 ;V3.14 ld (SYM),S_SPC ;V1.26
987 ;V3.14gt_ic_print: ;V1.24
988 ;V3.14 call ic_print
989 ;V3.14 call gt_to_w2
990 ;V3.14 call w2_to_w4 ;V1.22 for average calc
991 ;V3.14 call gt_clear ;yes -> GT function
992 ;V3.14 @CLB (ICON_GT) ;V1.18
993 ;V3.14 ld hl,W2
994 ;V3.14 call wk_round ;W2(GT value) rounding
995 ;V3.14 ld (SYM),S_GT
996 ;V3.14 @BBS (SW_EUROS,gt_key_gt_to_stasta) ;V1.24
997 ;V3.14 ld (SYM),S_STASTA ;V1.24
998 ;V3.14gt_key_gt_to_stasta: ;V1.24
999 ;V3.14 call wk_print ;W2 print
1000 ;V3.14 call feed_1 ;1 line feed
1001 ;V3.14 j gt_key_2
1002 ;V3.14gt_key_0:
1003 ;V3.14 ld hl,W2
1004 ;V3.14 ld (SYM),S_GS
1005 ;V3.14 call wk_print ;W2 print
1006 ;V3.14gt_key_2:
1007 ;V3.14 call w2_to_ten ;for display accumulator value(W2)
1008 ;V3.14 @SEB (F_FNEABL) ;V1.09
1009 j function_end
1010
1011 ;===============================================================================
1012 ; CE/C
1013 ;===============================================================================
1014 ce_key:
1016 +1 ld wa,F_COUNTRY
1017 +1 clr (F_COUNTRY>>4).a
1019 +1 ld wa,EURO_PROG
1020 +1 clr (EURO_PROG>>4).a
1022 +1 ld wa,RATE_PROG
1023 +1 clr (RATE_PROG>>4).a
1025 +1 ld wa,F_TNKEY
1026 +1 test (F_TNKEY>>4).a ;bit -reverse-> jump status
1027 +1 j f,ce_key_start ;if jump status is 0 -> branch
1029 +1 ld wa,F_RATE
1030 +1 test (F_RATE>>4).a ;bit -reverse-> jump status
1031 +1 j f,ce_key_start ;if jump status is 0 -> branch
1033 +1 test (FLG_MODE).2
1034 +1 j t,ce_key_x
1035 call ten_zerock ;V4.12
1036 j nz,ce_key_x ;V4.12
1037 test (TEN_S).0 ;V4.12
1038 j f,ce_key_start ;V4.12
1039
1040 ce_key_x: ;V4.12
1041 ld a,(PRE_KEY) ;V1.30
1042 ld (KEYIN),a ;V1.30
1043 jp no_operation ;V1.30
1044 ce_key_start:
1045 ld (KEYIN),K_CE ;V1.13
1046 jp cec_key_yyy ;V1.13
1047 cec_key:
1049 +1 ld wa,F_COUNTRY
1050 +1 clr (F_COUNTRY>>4).a
1052 +1 ld wa,SW_AC
1053 +1 test (SW_AC>>4).a ;bit -reverse-> jump status
1054 +1 j f,cec_key_0 ;if jump status is 0 -> branch
1056 +1 ld wa,F_TNKEY
1057 +1 test (F_TNKEY>>4).a ;bit -reverse-> jump status
1058 +1 j t,cec_key_0 ;if jump status is 1 -> branch
1059 cec_key_yyy: ;V1.13
1060 ld (DT_CHR_CNT),0 ;V1.31
1061 call ten_clear ;clear key entry only
1062 call spc_dt ;clear #/D key buffer
1063 j cec_key_2 ;-> function_end
1064 ;clear function.........
1065 cec_key_0:
1066
1067 call work_clear_acc ; no h/w initialize
1068 ld hl,ACC
1069 ld (SYM),S_CLR
1070 call wk_print ;accumulator value(zero) print
1071 call feed_1 ;1 line feed
1073 +1 ld wa,IC_PROG
1074 +1 clr (IC_PROG>>4).a
1075 jp function_end ;V1.10
1076 cec_key_2:
1077 ;V4.01 @CLB (IC_PROG) ;V1.23
1078 j function_end_0
1079
1080 all_clear:
1081 ;h/w initialize...........
1083 +1 ld wa,IO_MT
1084 +1 test (IO_MT>>4).a ;bit -reverse-> jump status
1085 +1 j f,all_clear ;if jump status is 0 -> branch
1086 ;V4.01 @CLB (IC_PROG) ;V1.23
1087 call init_vft ;V2.01
1088 di
1089 call init_io ;IO initialize
1090 ;V3.00 call init_pf ;initialize Timer3 for power failure detection
1091 call init_scan ;initialize Timer4 for key scan
1092 ei ;interrupt enable
1093
1094 ;work area clear..........
1095 work_clear_acc:
1096 call acc_clear
1097 work_clear:
1098 call ten_clear
1099 call spc_dt ;clear #/D key buffer
1100 ;V3.00 call fn_register_clear ;V1.13
1101 ;V3.00 ld (FINANCE_0),0 ;V1.09
1102 ;V3.00 ld (FINANCE_1),0 ;V1.09
1103 ld (FLG_E),0y00000000 ;clear calculate instruction flag
1104 ld (FLG_C),0y00000000 ;clear constant calculation flag
1105
1106 ret
1107
1108 ;===============================================================================
1109 ; -
1110 ;===============================================================================
1111 acc_minus:
1112 ;V4.01 @BBS (IC_PROG,set_ic_minus_key) ;V1.23 for V15 logic
1113 ;V4.01 cmp (PRE_KEY),K_M2CAL ;V1.22\
1114 ;V4.01 j ne,acc_minus_start ;V1.22|for [M2-]
1115 ;V4.01 ld (KEYIN),K_M2MI ;V1.22|
1116 ;V4.01 jp mem2_minus ;v1.22/
1117 acc_minus_start: ;V1.22
1118 ;V3.00 @BBC (SW_V15,acc_minus_x) ;V1.19\
1119 ;V3.00 cmp (PRE_KEY),K_TAX ;V1.19|
1120 ;V3.00 j ne,acc_minus_x ;V1.19|
1121 ;V3.00 @BBC (M_TX2,acc_minus_tx1) ;V1.19|for V15 tax[-]
1122 ;V3.00 @BBC (M_TX1,acc_minus_tx0) ;V2.07
1123 ;V3.00 ld (KEYIN),K_TX12M ;V2.07
1124 ;V3.00 jp tax12_minus ;V2.07
1125 ;V3.00acc_minus_tx0:
1126 ;V3.00 ld (KEYIN),K_TX2M ;V1.19|
1127 ;V3.00 jp tax_minus_a ;V2.18
1128 ;V3.00acc_minus_tx1: ;V1.19|
1129 ;V3.00 ld (KEYIN),K_TXM ;V1.19|
1130 ;V3.00 jp tax_minus_a ;V1.19/v2.19
1131 ;------------------------------------------------------above for V15 logic
1132 acc_minus_x:
1134 +1 ld wa,EURO_PROG
1135 +1 test (EURO_PROG>>4).a ;bit -reverse-> jump status
1136 +1 j f,eurate_minus_key ;if jump status is 0 -> branch
1138 +1 ld wa,RATE_PROG
1139 +1 test (RATE_PROG>>4).a ;bit -reverse-> jump status
1140 +1 j f,no_operation ;if jump status is 0 -> branch
1141 acc_minus_y: ;V1.16
1142 ;V4.01 @BBC (SW_SGT,acc_minus_z) ;V1.25
1143 acc_minus_z:
1145 +1 ld wa,F_MIN_TRA
1146 +1 set (F_MIN_TRA>>4).a
1147 ;V4.13 jp acc_plus_x ;V1.31
1148 ;===============================================================================
1149 ; +
1150 ;===============================================================================
1151 acc_plus:
1152 ;V4.01 @BBS (IC_PROG,set_ic_plus_key) ;V1.23
1153 ;V4.01 cmp (PRE_KEY),K_M2CAL ;V1.22\
1154 ;V4.01 j ne,acc_plus_start ;V1.22|for [M2+]
1155 ;V4.01 ld (KEYIN),K_M2PL ;V1.22|
1156 ;V4.01 jp mem2_plus ;v1.22/
1157 acc_plus_start: ;V1.22
1158 ;V3.00 @BBC (SW_V15,acc_plus_x) ;V1.19\
1159 ;V3.00 cmp (PRE_KEY),K_TAX ;V1.19| wait for [+] or [-] for [TAX+] or [TAX-] function
1160 ;V3.00 j ne,acc_plus_x ;V1.19|
1161 ;V3.00 @BBC (M_TX2,acc_plus_tx1) ;V1.19|
1162 ;V3.00 @BBC (M_TX1,acc_plus_tx0) ;V2.07
1163 ;V3.00 ld (KEYIN),K_TX12P ;V2.07
1164 ;V3.00 jp tax12_plus ;V2.07
1165 ;V3.00acc_plus_tx0:
1166 ;V3.00 ld (KEYIN),K_TX2P ;V1.19|
1167 ;V3.00 jp tax_plus_a ;V1.19|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -