📄 prn_edit.med
字号:
1209 ;V3.00 db "CASH " ;0e Spa
1210 ;V3.00 db "CASH " ;0e Ita
1211
1212 ;V3.00 db " " ;0f Eng
1213 ;V3.00 db " " ;0f Ger
1214 ;V3.00 db " " ;0f Fre
1215 ;V3.00 db " " ;0f Spa
1216 ;V3.00 db " " ;0f Ita
1217
1218 ;V3.00 db "TAX",CA_1,"% " ;10 Eng Tax1 rate
1219 ;V3.00 db "STEUER",CA_1,"% " ;10 Ger
1220 ;V3.00 db "TAXE",CA_1,"% " ;10 Fre
1221 ;V3.00 db "IMPUESTO",CA_1,"%" ;10 Spa
1222 ;V3.00 db "IMPOSTA",CA_1,"% " ;10 Ita
1223
1224 ;V3.00 db "TAX",CA_1," " ;11 Eng Tax1 value
1225 ;V3.00 db "STEUER",CA_1," " ;11 Ger
1226 ;V3.00 db "TAXE",CA_1," " ;11 Fre
1227 ;V3.00 db "IMPUESTO",CA_1," " ;11 Spa
1228 ;V3.00 db "IMPOSTA",CA_1," " ;11 Ita
1229 ;V3.00
1230 ;V3.00 db "TAX",CA_1,"+ " ;12 Eng Tax1+ value
1231 ;V3.00 db "STEUER",CA_1,"+ " ;12 Ger
1232 ;V3.00 db "TAXE",CA_1,"+ " ;12 Fre
1233 ;V3.00 db "IMPUESTO",CA_1,"+" ;12 Spa
1234 ;V3.00 db "IMPOSTA",CA_1,"+ " ;12 Ita
1235
1236 ;V3.00 db "TAX",CA_1,"- " ;13 Eng Tax1- value
1237 ;V3.00 db "STEUER",CA_1,"- " ;13 Ger
1238 ;V3.00 db "TAXE",CA_1,"- " ;13 Fre
1239 ;V3.00 db "IMPUESTO",CA_1,"-" ;13 Spa
1240 ;V3.00 db "IMPOSTA",CA_1,"- " ;13 Ita
1241
1242 ;V3.00 db "TAX",CA_2,"% " ;14 Eng Tax2 rate
1243 ;V3.00 db "STEUER",CA_2,"% " ;14 Ger
1244 ;V3.00 db "TAXE",CA_2,"% " ;14 Fre
1245 ;V3.00 db "IMPUESTO",CA_2,"%" ;14 Spa
1246 ;V3.00 db "IMPOSTA",CA_2,"% " ;14 Ita
1247
1248 ;V3.00 db "TAX",CA_2," " ;15 Eng Tax2 value
1249 ;V3.00 db "STEUER",CA_2," " ;15 Ger
1250 ;V3.00 db "TAXE",CA_2," " ;15 Fre
1251 ;V3.00 db "IMPUESTO",CA_2," " ;15 Spa
1252 ;V3.00 db "IMPOSTA",CA_2," " ;15 Ita
1253
1254 ;V3.00 db "TAX",CA_2,"+ " ;16 Eng Tax2+ value
1255 ;V3.00 db "STEUER",CA_2,"+ " ;16 Ger
1256 ;V3.00 db "TAXE",CA_2,"+ " ;16 Fre
1257 ;V3.00 db "IMPUESTO",CA_2,"+" ;16 Spa
1258 ;V3.00 db "IMPOSTA",CA_2,"+ " ;16 Ita
1259
1260 ;V3.00 db "TAX",CA_2,"- " ;17 Eng Tax2- value
1261 ;V3.00 db "STEUER",CA_2,"- " ;17 Ger
1262 ;V3.00 db "TAXE",CA_2,"- " ;17 Fre
1263 ;V3.00 db "IMPUESTO",CA_2,"-" ;17 Spa
1264 ;V3.00 db "IMPOSTA",CA_2,"- " ;17 Ita
1265
1266 ;V3.00 db "AMOUNT " ;18 Eng amount
1267 ;V3.00 db "WERT " ;18 Ger
1268 ;V3.00 db "VALEUR " ;18 Fre
1269 ;V3.00 db "IMPORTE " ;18 Spa
1270 ;V3.00 db "VALORE " ;18 Ita
1271
1272 ;V3.00 db "INTEREST " ;19 Eng interest
1273 ;V3.00 db "ZINSSATZ " ;19 Ger
1274 ;V3.00 db "INTERET " ;19 Fre
1275 ;V3.00 db "INTERES " ;19 Spa
1276 ;V3.00 db "INTERESSE " ;19 Ita
1277
1278 ;V3.00 db "MONTH " ;1a Eng month
1279 ;V3.00 db "MONATE " ;1a Ger
1280 ;V3.00 db "MOIS " ;1a Fre
1281 ;V3.00 db "MESES " ;1a Spa
1282 ;V3.00 db "MESI " ;1a Ita
1283
1284 ;V3.00 db "PAYMENT " ;1b Eng payment
1285 ;V3.00 db "ZAHLUNG " ;1b Ger
1286 ;V3.00 db "MENSUALITE" ;1b Fre
1287 ;V3.00 db "PAGO " ;1b Spa
1288 ;V3.00 db "RATA " ;1b Ita
1289
1290 ;V3.00 db "EURO " ;1b Eng EURO
1291 ;V3.00 db "EURO " ;1b Ger
1292 ;V3.00 db "EURO " ;1b Fre
1293 ;V3.00 db "EURO " ;1b Spa
1294 ;V3.00 db "EURO " ;1b Ita
1295
1296
1297 ;==============================================================================
1298 ; print DT_BUF by #/D format
1299 ;==============================================================================
1300 ;
1301 ;input: C flag CS=1: with tenkey entry(print DT_BUF) CS=0: no tenkey entry(print current display value)
1302 ;
1303 print_shpd:
1304 j cs,print_shpd2 ;with tenkey entry? yes->
1305 ;in case of without tenkey.....................
1306 call ten_to_w1 ;tenkey -> W1(no DP adjustment)
1307 ld (SYM),S_ST ;
1308
1309 ;GT logic.................................................................
1310 ;V3.00 @BBC (M_694,print_shgt0)
1311 ;V3.00 ld (SYM),S_SHP ;# with square box
1312 ;V3.00print_shgt0:
1313 ;GT logic.................................................................
1314
1315 ld hl,W1
1316 call edit_prn ;W1(display value) edit and transfer to PRN_BUF(edit without comma separator)
1317 j wk_print91 ;print without check P_NP flag
1318
1319 ;in case of with tenkey..........
1320 print_shpd2:
1321 call spc_prnbuf ;PRN_BUF space clear
1322 ld c,16 ;#/D maximum print capacity
1324 +1 test (FLG_MODE).0
1325 +1 j f,print_shpd20x
1326 ld c,18 ;V4.07
1327 print_shpd20x: ;V4.07
1328 ld ix,DT_BUF_LSD
1329 ld iy,PRN_BUF_LSD
1331 +1 test (FLG_MODE).0
1332 +1 j t,print_shpd20
1333 ld iy,PRN_BUF_LSD_LTP+1 ;V4.03
1334 print_shpd20:
1335 ld a,(ix)
1336 ld cf,c.0 ;even digit?
1337 j cc,print_shpd22 ; yes->
1338 swap a
1339 print_shpd22:
1340 and a,0x0f
1341 cmp a,C_DP ;DP code?
1342 j eq,print_shpd24 ; yes->
1343 cmp a,C_SPC ;space code?
1344 j eq,print_shpd23 ; yes->
1345 ;V4.03 or a,0x30 ;change to ascii
1346 j print_shpd25
1347 print_shpd23:
1348 ld a,ps_spc
1349 j print_shpd25
1350 print_shpd24:
1351 ld a,ps_dot
1352 print_shpd25:
1353 ld (iy),a ;set to PRN_BUF
1354 dec iy
1355 dec c
1356 j z,print_shpd26 ;transfered maximum character? yes->
1357 ld cf,c.0 ;even digit?
1358 j cs,print_shpd20 ; yes->
1359 dec ix
1360 j print_shpd20
1361
1362 ;PRN_BUF left shift until data will be found...
1363 print_shpd26:
1364 ld hl,PRN_BUF_MSD_LTP
1365 ld d,D_PRN_MAX_LTP ;V4.03
1367 +1 test (FLG_MODE).0
1368 +1 j f,print_shpd26_1
1369 ld hl,PRN_BUF ;V3.03
1370 ld d,D_PRN_MAX ;
1371 print_shpd26_1: ;v4.03
1372 ld e,d ;for make sure
1373 print_shpd27:
1374 ld a,(hl+1)
1375 cmp a,ps_spc ;space?
1376 j ne,print_shpd29 ; no -> finish to shift
1377 ;1byte left shift (PRN_BUF+2~+20 -> PRN_BUF+1~+19)...22digit printer
1378 ld c,2
1379 print_shpd28:
1380 ld a,(hl+c)
1381 dec c
1382 ld (hl+c),a
1383 inc c
1384 inc c
1385 cmp c,d ;
1386 j lt,print_shpd28
1387 dec c
1388 ld (hl+c),ps_spc ;padding space for PRN_BUF_LSD
1389 dec e
1390 j f,print_shpd27 ;not ffh? yes->
1391 print_shpd29:
1392
1393 ;GT logic......................................................
1394 ;V3.00 @BBC (M_694,print_shgt9)
1395 ;V3.00 ld (SYM),S_SHP ;# with square box
1396 ;V3.00 call set_symbol ;set symbol from symbol code(SYM)
1397 ;V3.00 ld ix,TENKEY
1398 ;V3.00 call set_bold ;set P_RED flag by refer (ix) contents
1399 ;V3.00 j wk_print91 ;print without check P_NP flag
1400 ;V3.00print_shgt9:
1401 ;GT logic......................................................
1402
1403 ld (hl),ps_der
1404 ld ix,TENKEY
1405 ;V3.04 call set_bold ;set P_RED flag by refer (ix) contents
1406 j wk_print91 ;print without check P_NP flag
1407
1408
1409 ;==============================================================================
1410 ; Name: edit_prn
1411 ; Function: copy work resister data to PRN_BUF with zero suppression and
1412 ; set commma, DP and symbol, Red color flag(P_RED)
1413 ; Input: hl <- work resister address
1414 ; SYM <- symbol code
1415 ; *note) if symbol code is S_SHD(for #/D key) commma separator is omitted
1416 ; Output: PRN_BUF +0~+9, P_RED
1417 ; Work reg.: ix,iy,b,c,d,e,a,w
1418 ; *keep hl resister contents
1419 ;==============================================================================
1420 ;
1421 ;
1422 ; work resister
1423 ;
1424 ; +0 +1 - - - - - - - - +7 +8
1425 ; SIGN MSD LSD DP
1426 ; <-------14 digits----->
1427 ;
1428 ; |
1429 ; edit work resister data (set DP, comma 'minus sign' and zero suppression)
1430 ; |
1431 ; PRN_BUF
1432 ; +0 +1 - - - - - - - - - - - - - - +20 +21 +22 +23
1433 ; SP '-' n n n , n n n - - n n . | M + |
1434 ; <------------- 21digits -----------> SYM
1435 ; (D_PRN_MAX)
1436 ;
1437 edit_prn:
1438 ld ix,hl ;save hl
1439 call spc_prnbuf ;PRN_BUF space clear
1440 call set_symbol ;set symbol from symbol code(SYM)
1441 call set_bold ;check minus tranzaction and negative value
1442 ld d,0 ;d...digit pointer of work register(0-13)
1443 ld e,0 ;e...digit pointer of PRN_BUF(0-19)
1444 edit_prn0:
1445 ld hl,ix ;load source top address
1446 call get_from_src ;get nibble data from reg.hl(top address) and reg.d(pointer) -> reg.a
1447 cmp d,(ix+OFF_DP) ;check DP location
1448 j eq,edit_prn4 ;DP value of work resister = current pointer
1449 inc d ;+1 source pointer
1450 call store_to_dist ;nibble(reg.a) data of source -> change ASCII -> to distination (PRN_BUF + reg.e)
1451 inc e ;+1 distination pointer
1453 +1 test (FLG_MODE).0
1454 +1 j f,edit_prn0_x
1455 cmp e,D_PRN_MAX ;21; transfer end?(distination pointer is over than maximum digit?)
1456 jp edit_prn0_y ;V4.06
1457 edit_prn0_x: ;V4.05
1458 cmp e,D_PRN_MAX_LTP ;V4.05 ;16
1459 edit_prn0_y:
1460 j lt,edit_prn0 ; no->loop
1461 j store_zs0 ; -> end(for make sure)
1462 ;Found DP...............
1463 edit_prn4:
1464 inc d ;+1 source pointer
1465 push a ;for save current data
1466 ld a,ps_dot ; '.' code
1468 +1 test (FLG_MODE).2
1469 +1 j t,edit_prn4_1
1470 ld a,ps_com ;V4.09 ; ',' code
1471 edit_prn4_1: ;V4.09
1472 call store_to_distx ;store DP(PRN_BUF + reg.e)
1473 inc e ;+1 distination pointer
1474 pop a
1475 ld w,2 ;for set comma separator
1476 j edit_prn6
1477 edit_prn5:
1478 ld hl,ix ;load source top address
1479 call get_from_src ;get nibble data from reg.hl(top address) and reg.d(pointer) ->reg.a
1480 inc d ;+1 source pointer
1481 edit_prn6:
1482 call store_to_dist ;store nibble(reg.a) data to distination(PRN_BUF + reg.e)
1483 inc e ;+1 distination pointer
1485 +1 test (FLG_MODE).0
1486 +1 j f,edit_prn6_x
1487 cmp e,D_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -