📄 printer.asm
字号:
;S_RVS equ 0x1e ;' '+up/down allow
S_EUAS equ 0x1e ;'Euro *' V3.14
S_MTH equ 0x1f ;M V3.13
S_ROOT equ 0x20 ;'R '
S_TAX equ 0x21 ;'TX%'
;S_PRN equ 0x22 ;' S'
S_PAY equ 0x22 ;P V3.13
S_EUR equ 0x23 ;'K '(fcR)
;S_EUM equ 0x24 ;'K-'
S_EUROS equ 0x24 ;'Euro'
S_EUEQ equ 0x25 ;'Euro ='
S_COST equ 0x26 ;'C '
S_SELL equ 0x27 ;' S'
S_MARG equ 0x28 ;'M%'
S_TAXA equ 0x29 ;' T'
S_ICG equ 0x2a ;'G '
S_G equ 0x2a
S_ICM equ 0x2b ;' M '
S_M equ 0x2b
;V4.02S_LCL equ 0x2c ;home+waru 1450TE V1.01
;V4.02S_LCAS equ 0x2d ;home+* 1450TE V1.01
;V4.02S_FC equ 0x2e ;euro+ x 1450TE V1.01
;V4.02S_FCAS equ 0x2f ;euro+* 1450TE V1.01
S_DLTA equ 0x2c;V4.020x30 ;delta+' '
S_PER equ 0x2d;V4.020x31 ;delta+' '
;S_EQU_A equ ;0x32 ;
S_CPAY equ 0x2e;V4.020x32 ;P* V3.13
S_TXPL equ 0x2f;V4.020x33 ;TX+
S_TXMI equ 0x30;V4.020x34 ;TX-
S_TLMGT equ 0x31;V4.020x35 ;TL M+
S_TX1PL equ 0x32;V4.020x36 ;TX1+
S_TX1MI equ 0x33;V4.020x37 ;TX1-
S_TX2PL equ 0x34;V4.020x38 ;TX2+
S_TX2MI equ 0x35;V4.020x39 ;TX2-
S_TAX1 equ 0x36;V4.020x3a ;T1%
S_TAX2 equ 0x37;V4.020x3b ;T2%
;V4.02S_GPM equ 0x3c ;GPM(MU)
;V4.02S_GS equ 0x3d
;V4.02S_GT equ 0x3d ;GT
;V4.02S_GPL equ 0x3e ;G+ for sigama=% when TA mode V2.11
S_STAMN equ 0x55
S_STAS equ 0x56
S_STASTA equ 0x57
;V3.00S_GS equ 0x0f ;G dia GT subtotal
;V3.00S_GT equ 0x10 ;G * GT total
;V3.00S_PRM equ 0x11 ;- % percent minus
;V3.00S_PRP equ 0x12 ;+ % percent plus
;V3.00S_DLP equ 0x13 ;d + delta plus(for tax+)
;V3.00S_DLM equ 0x14 ;d - delta plus(for tax-)
;V3.00S_AM equ 0x15 ;A M time print
;V3.00S_PM equ 0x16 ;P M time print
;V3.00S_CST equ 0xb7;0x17 ;C * cost price
;V3.00S_SEL equ 0x26;0x18 ;S * selling price
;V3.00S_MAR equ 0xa1;0x19 ;M % margine %
;V3.00S_MU equ 0xa2;0x1a ;M _ mark up
;V3.00S_MUD equ 0x57;0x1b ;d * delta of mark up
;V3.00S_SET equ 0x27;0x1d ;_ * for rate,time set(* only)
;V3.00S_SHD equ 0x22;0x1c ;_ _ for #/D print(space)
;V3.00S_TLG equ 0x93;0x0a ;G + total key with GT position
;==============================================================================
;V3.00S_FED equ 0x00 ;fh+' '
;V3.00S_PWR equ 0x17 ;'C*'
;V3.00S_PLS equ 0x01 ;' +'
;V3.00S_MIN equ 0x02 ;' -'
;V3.00S_SPC equ 0x00 ;' '
;V3.00S_SHP equ 0x26 ;' <>'
;V3.00S_TL equ 0x22 ;' *'
;V3.00S_TLGT equ 0x3c ;'*+'
;V3.00S_TLMGT equ 0x3d ;'*+'
;V3.00S_ST equ 0x08 ;' <>'
;V3.00S_MUL equ 0x03 ;' X'
;V3.00S_DIV equ 0x04 ;' /'
;V3.00S_EQU equ 0x05 ;' ='
;V3.00S_AST equ 0x22 ;' *'
;V3.00S_CLR equ 0x07 ;'c '
;V3.00S_MTL equ 0x0e ;'M*'
;V3.00S_MST equ 0x0d ;'M<>'
;V3.00S_MPL equ 0x0b ;'M+'
;V3.00S_MMI equ 0x0c ;'M-'
;V3.00S_M2TL equ 0x10 ;'G*'
;V3.00S_STASTA equ 0x77 ;'**'
;V3.00S_M2ST equ 0x0f ;'G<>'
;V3.00S_STAS equ 0x76 ;'*S'
;V3.00S_M2PL equ 0x3e ;'G+'
;V3.00S_STAPL equ 0x73 ;'*+'
;V3.00S_PLSTA equ 0x37 ;'+*'
;V3.00S_M2MI equ 0x3f ;'G-'
;V3.00S_STAMN equ 0x70 ;'*-'
;V3.00S_M2TLV equ 0x97 ;'G*'
;V3.00S_M2STV equ 0x96 ;'G<>'
;V3.00S_M2PLV equ 0x3e ;'G+'
;V3.00S_M2MIV equ 0x3f ;'G-'
;V3.00S_PER equ 0x06 ;' %'
;V3.00S_STAPER equ 0x71 ;'*%'
;V3.00S_PRDS equ 0x01 ;'-%'
;V3.00S_PRAD equ 0x31 ;'+%'
;V3.00S_DLTAL equ 0x82 ;delta+' '
;V3.00S_DLTA equ 0x28 ;' "+delta V1.26
;V3.00S_PRDL equ 0x81 ;delta+'%'
;V3.00S_DLAS equ 0x87 ;delta+'*'
;V3.00S_PRMU equ 0x21 ;' %'
;V3.00S_MKUP equ 0xa2 ;'M '
;V3.00S_RVS equ 0x22 ;' '
;V3.00S_AVR equ 0x27 ;' *'
;V3.00S_ROOT equ 0x22 ;' '
;V3.00S_TAX equ 0x12 ;'% '
;V3.00S_PRN equ 0x62 ;'<> '
;V3.00S_EUR equ 0x22 ;' '
;V3.00S_EUEQ equ 0xc2 ;'= '
;V3.00S_COST equ 0x2b ;' C'
;V3.00S_SELL equ 0x26 ;' <>'
;V3.00S_M equ 0x2a ;' M'
;V3.00S_MARG equ 0xa1 ;'M%'
;V3.00S_PERMARG equ 0x1a ;'%M'
;V3.00S_TAXA equ 0x27 ;' *'
;V3.00S_ICG equ 0x29 ;' G'
;V3.00S_ICGV equ 0x29 ;' G'
;V3.00S_ICM equ 0x2a ;' M'
;V3.00S_ASM equ 0x7a ;'*M'
;V3.00S_ASC equ 0x7b ;'*C'
;V3.00S_ASDL equ 0x78 ;'*'+delta
;V3.00S_MIPL equ 0x03 ;'-+'
;V3.00S_MIMI equ 0x00 ;'--'
;V3.00S_MIST equ 0x06 ;'-S'
;V3.00S_MITL equ 0x07 ;'-T'
;V3.00S_EUROS equ 0x29 ;' euro'
;V3.00S_G equ 0x9f ;'G '
;V3.00S_GPL equ 0x93 ;'G+'
;V3.00S_GAST equ 0x97 ;'G*'
;==============================================================================
P_SPC equ 0x20 ;for print " "
;-----------------------------------------------------------
;interrupt enable flag set:
EF4 equ 4;(EIRL).4 /INT0
EF5 equ 5;(EIRL).5 INTTC1
EF6 equ 6;(EIRL).6 INT1
EF7 equ 7;(EIRL).7 INTTBT
EF8 equ 0;(EIRH).0 INTTC3
EF9 equ 1;(EIRH).1 INTSIO(High speed SIO interrupt)
EF10 equ 2;(EIRH).2 INTTC4
EF11 equ 3;(EIRH).3 INT3
EF12 equ 4;(EIRH).4 INT4
EF13 equ 5;(EIRH).5 INTTC2
EF14 equ 6;(EIRH).6 /INT5
EF15 equ 7;(EIRH).7 INTADC or INT2
;interrupt request flag set:
IL2 equ 2;(ILL).2 INTSWI
IL3 equ 3;(ILL).3 INTATRAP
IL4 equ 4;(ILL).4 /INT0
IL5 equ 5;(ILL).5 INTTC1
IL6 equ 6;(ILL).6 INT1
IL7 equ 7;(ILL).7 INTTB
IL8 equ 0;(ILH).0 INTTC3
IL9 equ 1;(ILH).1 INTSIO
IL10 equ 2;(ILH).2 INTTC4
IL11 equ 3;(ILH).3 INT3
IL12 equ 4;(ILH).4 INT4
IL13 equ 5;(ILH).5 INTTC2
IL14 equ 6;(ILH).6 /INT5
IL15 equ 7;(ILH).7 INTADC or /INT2
; DBR_LCD_RATE equ (0x0f33<<4)+5 ;LCD DBR matrix point for "RATE"
; DBR_LCD1235_RATE equ (0x0f33<<4)+3 ;LCD DBR matrix point for "RATE"
; DBR_LCD1297_RATE equ (0x0f33<<4)+4 ;LCD DBR matrix point for "RATE"
; DBR_LCD120_RATE equ (0x0f33<<4)+4 ;LCD DBR matrix point for "RATE"
; DBR_LCD1297_GT equ (0x0f32<<4)+2 ;LCD DBR matrix point for "GT"
; ;LCD_PRN equ (0x0f31<<4)+3 ;LCD DBR matrix point for "PRINT"
; ;LCD_FIN equ (0x0f30<<4)+3 ;LCD DEB matrix point for "FIN"
AUTOOFFTIME equ 31250;1500
$list
extern dbr_disp_clear,bl_off,bl_on,font_data,font_bnum,font_snum,tempdbr_to_dbr
public tm1_int,tm2_int,prn_init,print,key_feed,sio_int
extern vft_disable,vft_enable
extern STB_V,STB_R,STB_C,STB_E,STB
ROM section code
STP_RUSH equ 20000*2 ;20ms for rush control (1/32fc[0.5us]clock)
;STP_WKUP_LTP equ (4393-60)*2 ;4393us for wake up rush control (1/32fc[0.5us]clock)
; STP_WKUP_LTP equ 4393*2*10/5-60*2 ;25mm/s
STP_WKUP_LTP equ 4393*2*5/3-60*2 ;30mm/s
; STP_WKUP_LTP equ 4393*2*10/7-60*2 ;35mm/s
; STP_WKUP_LTP equ 4393*2*5/4-60*2 ;40mm/s
;STP_STOP_LTP equ 65000/16 ;65ms for rush control (1/128fc[16us]clock)
; STP_STOP_LTP equ 65000/16*10/5 ;25mm/s
STP_STOP_LTP equ 65000/16*5/3 ;30mm/s
; STP_STOP_LTP equ 65000/16*10/7 ;35mm/s
; STP_STOP_LTP equ 65000/16*5/3 ;40mm/s
STP_INIT equ 6579*2 ;6.579ms for initialize step (1/32fc[0.5us]clock)
STP_SLOW equ (2400-50)*2 ;2.400ms for slow up step (1/32fc[0.5us]clock)
STP_PSLOW equ (2400-100)*2 ;2.400ms for slow up step (1/32fc[0.5us]clock) for printing
STP_FEED equ (2083-100)*2 ;2.083ms for feed (1/32fc[0.5us]clock)
STP_FEED_LTP equ 5000*2 ;5ms for feed (1/32fc[0.5us]clock) for LTP8235
; STP_FEED_LTP equ 5000*2*10/5 ;25mm/s
; STP_FEED_LTP equ 5000*2*5/3 ;30mm/s
; STP_FEED_LTP equ 5000*2*10/7 ;35mm/s
; STP_FEED_LTP equ 5000*2*5/4 ;40mm/s
STP_NORM equ (1667-120)*2 ;1.667ms for normal print (1/32fc[0.5us]clock)
;STP_NORM_LTP equ (1667*2-180*2) ;50mm/S ;1.667ms for normal print (1/32fc[0.5us]clock)
; STP_NORM_LTP equ (1667*2*10/5-180*2) ;25mm/s
STP_NORM_LTP equ (1667*2*5/3-180*2) ;30mm/s
; STP_NORM_LTP equ (1667*2*10/7-180*2) ;35mm/s
; STP_NORM_LTP equ (1667*2*5/4-180*2) ;40mm/s
STP_NORM_ADJ equ 180*2 ;for calculation for parameater "C" LTP8235 printer
STP_CPON equ (300-50)*2 ;300us for chopping on (1/32fc[0.5us]clock)
STP_CPOF equ (50-20)*2 ;50us for chopping on (1/32fc[0.5us]clock)
STP_SLOW_CMP equ 2400*2 ;compare with T1 value
L_FEED equ 6
L_FEED_LTP equ 8
LARGE_FEED equ 18 ;V4.03
;==============================================
;1667*10/5=3334;1667*5/3=2778;1667*5/3.5=2381; 1667*5/4=2083
;
ltp_acc_tbl:
dw 0x0000 ;0 dummy
;for printing speed 25mm/s
; dw (4393-60)*2 ;25mm/s;equ (4393-60)*2
; dw STP_NORM_LTP ;25mm/s;equ (1667*2*10/2-180*2)
; dw STP_NORM_LTP ;25mm/s;equ (1667*2*10/2-180*2)
; dw STP_NORM_LTP ;25mm/s;equ (1667*2*10/2-180*2)
;for printing speed 30mm/s
dw (4393-60)*2 ;30mm/s;equ (4393-60)*2
dw STP_NORM_LTP ;30mm/s;equ (1667*2*5/3-180*2)
dw STP_NORM_LTP ;30mm/s;equ (1667*2*5/3-180*2)
dw STP_NORM_LTP ;30mm/s;equ (1667*2*5/3-180*2)
;for printing speed 35mm/s
; dw (4393-60)*2 ;35mm/s;1
; dw (2715-180)*2 ;35mm/s;2
; dw STP_NORM_LTP ;35mm/s;equ (1667*2*5/3.5-180*2)
; dw STP_NORM_LTP ;35mm/s;equ (1667*2*5/3.5-180*2)
;for printing speed 40mm/s
; dw (4393-60)*2 ;40mm/s;1
; dw (2715-180)*2 ;40mm/s;2
; dw (2097-180)*2 ;40mm/s;3
; dw STP_NORM_LTP ;40mm/s;equ (1667*2*5/4-180*2)
;for printing speed 50mm/s
; dw (4393-60)*2 ;50mm/s;1
; dw (2715-180)*2 ;50mm/s;2
; dw (2097-180)*2 ;50mm/s;3
; dw (1760-180)*2 ;50mm/s;4
;==============================================================================
; Timer 1 reset and start (for make strobe pulse)
;==============================================================================
;==============================================================================
; Timer 1 stop
;==============================================================================
;==============================================================================
; Timer1 value set reg.wa -> TREG1AL,TREG1AM
;==============================================================================
;==============================================================================
; Timer 2 start 0.5us clock [1/32fc] (for MT step pulse [chopping]) 16M clock
;==============================================================================
;==============================================================================
; Timer 2 start 16us clock [1/128fc] (for MT step pulse [chopping]) 16M clock
;==============================================================================
;==============================================================================
; Timer 2 value set (for MT step pulse,chopping)
;==============================================================================
;==============================================================================
; Timer 2 stop (for MT step pulse chopping)
;==============================================================================
;==============================================================================
; AD set and start (AIN6: head temp.)
;==============================================================================
;==============================================================================
; AD set and start (AIN7: VPR volt.)
;==============================================================================
;==============================================================================
; Get AD convert value
;==============================================================================
;==============================================================================
; VPR on
;==============================================================================
;==============================================================================
; VPR off
;==============================================================================
;==============================================================================
; STB1 on
;==============================================================================
;==============================================================================
; STB2 on
;==============================================================================
;==============================================================================
; STB1 off
;==============================================================================
;==============================================================================
; STB2 off
;==============================================================================
;==============================================================================
; check whether STB2 off (=1?)
;==============================================================================
;==============================================================================
; MT driver enable
;==============================================================================
;==============================================================================
; MT driver disable
;==============================================================================
;==============================================================================
; Latch enable
;==============================================================================
;==============================================================================
; SIO initialize
;==============================================================================
;==============================================================================
; SIO transmit start
;==============================================================================
;==============================================================================
; SIO disable
;==============================================================================
;-----------------------------------------------
; Printer Initial
;-----------------------------------------------
prn_init:
ld (F_PCONT),0y00000000 ;control flags clear
ld (F_PCONT+1),0y00000000 ;control flags clear
;V4.14 ld (F_PCONT+2),0y00000000 ;control flags clear
and (F_PCONT+2),0y00100000 ;V4.14;keep P_RED flag
ld (PHASE_CT),0
ld (STEP_CT),0
ld wa,F_INIT
set (F_INIT>>4).a
set (P0DR).3
set (P0DR).2
and (P4DR),0y11111100 ;AIN1,AIN0 must set '0' for AD convert
or (P4DR),0y00000100 ;P42 set'1'(VPR)
set (F_PCONT+2).6 ;IO_MT equ (F_PCONT+2<<4)+6
ld wa,P_MOVE
set (P_MOVE>>4).a
call vft_disable
call start_up ;MT driver enable, motor start, dbr clear BL off
ld wa,SW_LTP
test (SW_LTP>>4).a ;bit -reverse-> jump status
j t,prn_ini_09 ;if jump status is 1 -> branch
ld wa,F_RVSE
set (F_RVSE>>4).a
prn_ini_09:
ld wa,F_INIT
test (F_INIT>>4).a ;bit -reverse-> jump status
j f,prn_ini_09 ;if jump status is 0 -> branch
ret
;
;-----------------------------------------------------------------------------------
; 10 dotline feed
key_feed:
call print_int_check ;V4.14
key_feed_0: ;V4.14
ld wa,F_PRINT
test (F_PRINT>>4).a ;bit -reverse-> jump status
j f,key_feed_0 ;if jump status is 0 -> branch
key_feed_start:
ld wa,F_FDREQ
set (F_FDREQ>>4).a
ld wa,F_FEED
test (F_FEED>>4).a ;bit -reverse-> jump status
j f,key_f100 ;if jump status is 0 -> branch
ld (STEP_CT),0
ld wa,F_FEED
set (F_FEED>>4).a
ld wa,F_RVREQ
clr (F_RVREQ>>4).a
ld wa,F_RUSH
test (F_RUSH>>4).a ;bit -reverse-> jump status
j t,key_f011 ;if jump status is 1 -> branch
ld wa,F_RUSH
clr (F_RUSH>>4).a
j key_f100
key_f011:
call start_up ;MT driver enable, motor start, dbr clear BL off
key_f100:
ld wa,F_FDREQ
test (F_FDREQ>>4).a ;bit -reverse-> jump status
j f,key_f100 ;if jump status is 0 -> branch
ret
start_up:
and (P4DR),0y11111100 ;AIN1,AIN0 must set '0' for AD convert
or (P4DR),0y00000100 ;P42 set'1'(VPR)
set (F_PCONT+2).6 ;IO_MT equ (F_PCONT+2<<4)+6
and (P4DR),0y11111100 ;AIN1,AIN0 must set '0' for AD convert
or (P4DR),0y00011000 ;P44P43 set '1'(ENA1,ENA2)
ld wa,P_MOVE
set (P_MOVE>>4).a
di
ld (TC2CR),0y00001110 ;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode
clr (EIRH).EF13 ;clear TC2 enable (EIRH:bit4)
ei
ld wa,SW_LTP
test (SW_LTP>>4).a ;bit -reverse-> jump status
j f,start_up1 ;if jump status is 0 -> branch
ldw (TC2DRL),STP_RUSH ;set TC2DR
j start_up2
start_up1:
ldw (TC2DRL),STP_WKUP_LTP ;set TC2DR
ld wa,F_ACC
set (F_ACC>>4).a
start_up2:
di
ld (TC2CR),0y00001110 ;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -