📄 business_fn.med
字号:
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 + -