⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_fn.med

📁 calculator code ,use toshibaor nec LSI
💻 MED
📖 第 1 页 / 共 5 页
字号:
      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 + -