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

📄 business_fn.med

📁 calculator code ,use toshibaor nec LSI
💻 MED
📖 第 1 页 / 共 5 页
字号:
     1265       		ld	a,(FLG_C)	
     1266       		and	a,0y00000000	
     1267       		ld	(FLG_C),a	
     1268       		ld	a,(FLG_E)		;clear all calculate instruction flags except E_MUP,E_MUL,E_DIV
     1269       		and	a,0y00001111		
     1270       		ld	(FLG_E),a
     1271       		jp	no_operation
     1272       ;==============================================================================
     1273       tax2_minus:
     1274       ;V4.13		@SEB	(M_TX2)
     1275       ;V4.13		jp	tax_minus_a		;V2.17
     1276       ;===============================================================================
     1277       ;		TAX-
     1278       ;===============================================================================
     1279       tax_minus:
     1280       ;V4.17		@IS_5514_OFF(tax_minus_x)	;V4.12
     1282 +1            test	(FLG_MODE).2
     1283 +1    	j	f,tax_minus_x
     1285 +1    	ld	wa,F_TNKEY
     1286 +1    	test	(F_TNKEY>>4).a		;bit -reverse-> jump status
     1287 +1    	j	f,tax_minus_x		;if jump status is 0 -> branch
     1288       		ld	a,(FLG_E)	;V4.12
     1289       		and	a,0y00000011	;V4.12
     1290       		j	ne,no_operation	;V4.12
     1291       tax_minus_x:	
     1293 +1    	ld	wa,F_REVCAN
     1294 +1    	set	(F_REVCAN>>4).a
     1296 +1    	ld	wa,SW_EUTX
     1297 +1    	test	(SW_EUTX>>4).a		;bit -reverse-> jump status
     1298 +1    	j	t,tax_minus_a		;if jump status is 1 -> branch
     1299       		ld	(KEYIN),K_LOCAL		;for cash conversion [local] key function
     1300       		jp	local_key_start		
     1301       
     1302       tax_minus_a:
     1304 +1    	ld	wa,F_RATE
     1305 +1    	test	(F_RATE>>4).a		;bit -reverse-> jump status
     1306 +1    	j	f,tax_plus_0		;if jump status is 0 -> branch
     1307       		call	tax_equ
     1309 +1    	ld	wa,F_CALER
     1310 +1    	test	(F_CALER>>4).a		;bit -reverse-> jump status
     1311 +1    	j	f,tax_equ_end		;if jump status is 0 -> branch
     1312       		j	cs,no_operation
     1313       		call	ten_to_w2dp		
     1314       		cmp	(PRE_KEY),K_TXP		;
     1315       		j	eq,tax_min00		;
     1316       	;------------------------------------------------------	
     1317       tax_minus_yuan:
     1318       		call	w2_to_w4	;backup tenkey buffer
     1319       tax_min00:				;
     1320       	;---------------------------------------------------tax rate---> w1
     1321       		ld	(SYM),S_SPC	
     1323 +1    	ld	wa,F_TNKEY
     1324 +1    	test	(F_TNKEY>>4).a		;bit -reverse-> jump status
     1325 +1    	j	f,tax_calc_0		;if jump status is 0 -> branch
     1326       		ld	(SYM),S_ST
     1327       tax_calc_0:
     1328       		ld	hl,W2		
     1329       		call	wk_print	;W2(input value) print
     1330       
     1331       		call	tax_to_w1	
     1332       		ld	(SYM),S_TAX	
     1333       		ld	hl,W1		
     1334       		call	wk_print
     1335       	;---------------------------------------is [tax+] or [tax-]? [tax+]--->
     1336       		cmp	(KEYIN),K_TXP		;\tax+ key?
     1337       		j	eq,tax_plus_calc		;/ yes ->  tax+ calculation [W1<- W1(rate)*W2(input)]
     1338       	;------------------------------------------------for [tax-]
     1339       ;tax- calculation........
     1340       tax_minus_calc:					;V1.24
     1341       	;------------------------------------------for stand logic [tax-], tax rate already in stay 'w1'
     1342       ;V1.33		@S100_W2			;set 100 to W2
     1343       ;V1.33		call	calc_add		;W1 <- 1 + rate/100
     1345 +1    	call	w2_clear
     1346 +1    	ld	(W2_LSD-1),0x01		;set 100 to W2
     1347       		call	calc_div		;W1 <- 100+rate/100
     1349 +1    	call	w2_clear
     1350 +1    	ld	(W2_LSD),0x01		;set 1 to W2
     1351       		call	calc_add		;
     1352       		call	ten_to_w2
     1353       		call	exchg_w12
     1354       		call	calc_div		;W1 <- input / (1+rate/100)
     1355       		ld	hl,W1			;V1.32
     1356       		call	wk_round		;V1.32
     1357       	;----------------------------------------------------------------------
     1358       tax_minus_yy_z1:
     1360 +1    	ld	wa,F_CALER
     1361 +1    	test	(F_CALER>>4).a		;bit -reverse-> jump status
     1362 +1    	j	f,tax_min99		;if jump status is 0 -> branch
     1363       		call	w1_to_w2		;V1.13\
     1364       		xor	(W2_S),1		;V1.13|compute for dalta
     1365       		call	ten_to_w1		;V1.13|
     1366       		call	calc_add		;V1.13/
     1367       		jp	tax_minus_yy_z3		;V2.10
     1368       tax_minus_yy_z0:				;V2.10
     1369       		call	w1_to_w2		;V2.10
     1370       		call	tax_to_w1		;\V2.10
     1372 +1    	ld	wa,F_PERCAL
     1373 +1    	set	(F_PERCAL>>4).a
     1374       		call	calc_mult		;V2.10
     1375       
     1376       tax_minus_yy_z3:				;V2.10
     1377       ;V3.01		ld	(SYM),S_DLTA			;V1.13\
     1378       		ld	(SYM),0x15	;delta-	
     1380 +1    	ld	wa,F_MIN_TRA
     1381 +1    	set	(F_MIN_TRA>>4).a
     1382       		ld	hl,W1				;V1.13
     1383       		call	wk_round			;V1.13
     1384       		jp	tax_min1_z		;V2.10
     1385       tax_min1_z:
     1386       
     1387       		call	wk_print	;V1.13
     1389 +1    	ld	wa,F_MIN_TRA
     1390 +1    	clr	(F_MIN_TRA>>4).a
     1391       		xor	(W1_S),1	;V1.13
     1392       		call	tax_to_w1
     1394 +1    	call	w2_clear
     1395 +1    	ld	(W2_LSD-1),0x01		;set 100 to W2
     1396       		call	calc_add
     1397       		call	ten_to_w2	;V1.28
     1398       		call	exchg_w12	;V1.28
     1400 +1    	ld	wa,F_PERCAL
     1401 +1    	set	(F_PERCAL>>4).a
     1402       		call	calc_div
     1403       ;		call	calc_add	;V1.28
     1404       	;------------------------------------- check for prevenient key is [tax+]?
     1405       		cmp	(PRE_KEY),K_TXP	;V1.14
     1406       ;V4.12		@IS_TX2
     1407       ;V4.12		j	t,tax_min1_yy		;V1.24
     1408       ;V4.12		cmp	(PRE_KEY),K_TX2P	;V1.24
     1409       	;----------------------------------------------------------------------
     1410       tax_min1_yy:					;V1.24
     1411       		j	ne,tax_min5	;V1.14
     1412       		ld	(KEYIN),0xff	;V1.35b
     1413       		call	w4_to_w1	;V1.14
     1414       		jp	tax_min5	;V1.13
     1415       	;-------------------------------------------------------------[tax-] compute accomplish
     1416       	;------------------------------------------for [tax+] compute
     1417       tax_plus_calc:	;w1=tax rate, w2=ten
     1419 +1    	ld	wa,F_PERCAL
     1420 +1    	set	(F_PERCAL>>4).a
     1421       		call	calc_mult		;W1 <- input * rate(%)=dalta
     1423 +1    	ld	wa,F_CALER
     1424 +1    	test	(F_CALER>>4).a		;bit -reverse-> jump status
     1425 +1    	j	f,tax_min99		;if jump status is 0 -> branch
     1426       		call	w1_to_w2		;V1.11
     1427       		ld	hl,W2			;V1.11
     1428       		call	wk_round
     1429       ;V3.01		ld	(SYM),S_DLTA		;
     1430       		ld	(SYM),0x14	;delta+
     1431       		cmp	(KEYIN),K_TXP		;tax+ key?
     1433 +1    	test	(FLG_MODE).4
     1434       		j	t,tax_min2_x		;V1.17
     1435       		cmp	(KEYIN),K_TX2P		;V1.17
     1436       tax_min2_x:
     1437       		j	eq,tax_min3		; yes -> 
     1438       	;	ld	(SYM),S_DLM		;
     1439       		
     1440       	;	@SEB	(F_MIN_TRA)		;for print tax amount in red 
     1441       		xor	(W1_S),1		;W1(tax amount) sign change
     1442       		xor	(W2_S),1		;only for print ;v1.11
     1443       tax_min3:				;V1.35b
     1444       		call	wk_print		;W1(tax amount) print
     1445       	;	@CLB	(F_MIN_TRA)		; 
     1446       tax_min4:
     1447       		call	tax_to_w1
     1449 +1    	call	w2_clear
     1450 +1    	ld	(W2_LSD-1),0x01		;set 100 to W2
     1451       		call	calc_add
     1453 +1    	ld	wa,F_PERCAL
     1454 +1    	set	(F_PERCAL>>4).a
     1455       		call	w1_to_w2
     1456       		call	ten_to_w1		;V1.28
     1457       ;		call	calc_add		;W1 <- without tax
     1458       		call	calc_mult
     1459       		cmp	(PRE_KEY),K_TXM		;V1.14
     1461 +1    	test	(FLG_MODE).4
     1462       		j	t,tax_min4x		;V1.17	not tax2 mode
     1463       		cmp	(PRE_KEY),K_TX2M	;V1.17
     1464       		jp	tax_min4x	;V1.35b
     1465       tax_min4x:					;V1.17
     1466       		j	ne,tax_min5		;V1.14
     1467       		ld	(KEYIN),0xff	;V1.35b
     1468       		call	w4_to_w1		;V1.14
     1469       tax_min5:					;V1.13
     1470       
     1472 +1    	ld	wa,F_CALER
     1473 +1    	test	(F_CALER>>4).a		;bit -reverse-> jump status
     1474 +1    	j	f,tax_min9		;if jump status is 0 -> branch
     1475       		ld	hl,W1
     1476       		call	_zerock		;V1.34
     1477       		j	ne,tax_min50	;V1.34
     1478       		ld	(W1_S),0	;V1.34
     1479       tax_min50:				;V1.34
     1480       		call	wk_round
     1481       		ld	(SYM),S_AST		;
     1482       		call	wk_print		;W1(tax amount) print
     1483       		call	feed_1
     1484       		call	w1_to_ten		;for display calculated answer(W1)
     1485       tax_min9:
     1486       ;V4.13		@CLB	(M_TX2)			;V1.17
     1487       tax_min91:					;V1.19
     1488       ;V4.12		ld	a,(FLG_C)		;V1.26\
     1489       ;V4.12		and	a,0y00000000	;V1.40
     1490       ;V4.12		ld	(FLG_C),a		;V1.26/
     1491       		and	(FLG_C),0	;V4.12
     1492       
     1493       ;V4.12		ld	a,(FLG_E)		;clear all calculate instruction flags except E_MUP,E_MUL,E_DIV
     1494       ;V4.12		and	a,0y00001111		;V1.40
     1495       ;V4.12		ld	(FLG_E),a
     1496       		and	(FLG_E),0x0f	;V4.12
     1498 +1            test	(FLG_MODE).2
     1499 +1    	j	t,tax_min92
     1500       		and	(FLG_E),0	;V4.12
     1501       tax_min92:				;V4.12
     1502       		ld	(SYM),S_AST		;for error print
     1503       		j	function_end
     1504       tax_min99:
     1506 +1    	ld	wa,F_ZDIVER
     1507 +1    	set	(F_ZDIVER>>4).a
     1508       ;V1.30		call	w1_clear
     1509       		j	tax_min9
     1510       ;===============================================
     1511       ;	subroutine for tax function
     1512       ;===============================================
     1513       tax_save:
     1514       		call	keep_ten_6dig
     1515       		call	ten_to_w2
     1516       		call	w2_to_tax	
     1517       		call	w2_to_eetx	
     1518       
     1519       		;----------------------------------
     1520       tax_recall:
     1521       		call	tax_to_w1
     1522       		call	w1_to_ten
     1523       		ld	(SYM),S_TAX
     1524       		call	keep_ten_6dig
     1525       		call	ten_to_w1
     1526       		ld	hl,W1
     1527       		call	wk_print			;TAX rate print
     1528       		call	feed_1
     1529       		call	w1_to_ten			;for display tax rate(W1)
     1530       		call	spc_disp
     1531       		ld	hl,TENKEY
     1532       		call	edit_disp
     1533       		ld	(DISP+5),D_T
     1534       		ld	(DISP+6),D_EQU
     1535       		call	disp_to_dbr
     1536       		call	ten_clear
     1538 +1    	ld	wa,EURO_DISPLY
     1539 +1    	set	(EURO_DISPLY>>4).a
     1540       		ld	(KEYIN),K_EURO_LOCAL_TAX_DUM
     1541       		ld	(PRE_KEY),K_EURO_LOCAL_TAX_DUM
     1542       		ret
     1543       		;------------------------------------
     1544       tax_equ:
     1545       		ld	a,(FLG_E)
     1546       		and	a,0y00000011
     1547       		j	eq,tax_equ_exit
     1549 +1    	ld	wa,F_TNKEY
     1550 +1    	test	(F_TNKEY>>4).a		;bit -reverse-> jump status
     1551 +1    	j	t,tax_equ_exit9		;if jump status is 1 -> branch
     1552       		call	equal_sub
     1553       		call	w1_round
     1554       		call	w1_to_ten
     1556 +1    	ld	wa,F_TNKEY
     1557 +1    	clr	(F_TNKEY>>4).a
     1558       tax_equ_exit:
     1559       		clr	cf
     1560       		ret
     1561       tax_equ_exit9:
     1562       		set	cf
     1563       		ret
     1564       ;V2.07===========================================================================
     1565       ;                 [TAX12+]/[TAX12-]
     1566       ;================================================================================
     1567       tax12_plus:
     1568       
     1569       tax12_minus:
     1570       ;V4.01		call	ten_to_w1		;tenkey -> W2(no DP adjus

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -