?? glqlgdc1.asm
字號(hào):
setb f_tx
ret
rd_qu0: mov r0,#tihed
mov @r0,#20h
inc r0
mov @r0,#0
mov r0,#tidat
mov dptr,#r_2051
movx a,@dptr
mov @r0,#4
anl a,#0c0h
cjne a,#0c0h,rd_q00
mov @r0,#1
rd_q00: ;
inc r0
rd_q05: mov r2,#15
rd_q07: inc r0
mov @r0,#0
djnz r2,rd_q07
lcall chktis
mov ticon,#49
mov tir0,#tibuf
setb ti
ret
read51: ;----------------------
; Read Special Region 1
;----------------------
lcall quhead
inc r0
mov rec_h,@r0
inc r0
mov rec_l,@r0
mov a,rec_h
cjne a,max_h,rd_q10
mov a,rec_l
cjne a,max_l,rd_q10
rd_q10: jc rd_q11
mov r0,#tihed
mov @r0,#20h
inc r0
mov @r0,#0
inc r0
inc r0
inc r0
mov @r0,#0ffh
inc r0
mov @r0,#0ffh
mov a,#over
sjmp rd_q13
rd_q11: lcall get_ar
mov r2,#1
lcall n_dptr
movx a,@dptr
mov r0,#tihed
mov @r0,#20h
inc r0
mov @r0,#0
rd_q13: mov r0,#tidat
mov @r0,a
inc r0
;
mov r2,#15
rd_q15: mov @r0,#0
inc r0
djnz r2,rd_q15
lcall chktis
mov ticon,#49
mov tir0,#tibuf
setb ti
ret
read52: ;----------------------
; Read Special Region 2
;----------------------
lcall quhead
inc r0
mov rec_h,@r0
inc r0
mov rec_l,@r0
mov a,rec_h
cjne a,max_h,rd_q20
mov a,rec_l
cjne a,max_l,rd_q20
rd_q20: jc rd_q21
mov r0,#tihed
mov @r0,#20h
inc r0
mov @r0,#30h
inc r0
inc r0
inc r0
mov @r0,#0ffh
inc r0
mov @r0,#0ffh
mov a,#over
sjmp rd_q23
rd_q21: lcall get_ar
movx a,@dptr
mov r0,#tihed
mov @r0,#20h
inc r0
mov @r0,#0
rd_q23: mov r0,#tidat
mov @r0,a
inc r0
;
mov r2,#15
rd_q25: mov @r0,#0
inc r0
djnz r2,rd_q25
lcall chktis
mov ticon,#49
mov tir0,#tibuf
setb ti
ret
;****************************
;****************************
; Write Record
;****************************
write: inc r0
inc r0
mov a,@r0
anl a,#7
mov b,a
rl a
add a,b
mov dptr,#wrtab
jmp @a+dptr
wrtab: ljmp w_cpin
ljmp wr_clk
ljmp wr_pos
ljmp wr_pos
ljmp w_card
ljmp writ5
ljmp second_write
writ7: setb f_tx
ret
;------------------------------
; Special Write Second Region
;-------------------------------
second_write:
inc r0
mov a,@r0
anl a,#0fh
cjne a,#2,writ7
mov region,a
lcall quhead
;
inc r0
mov rec_h,@r0
inc r0
mov rec_l,@r0
mov a,rec_h
cjne a,max_h,s_writ1
mov a,rec_l
cjne a,max_l,s_writ1
s_writ1: jc s_writ5
mov subsq,#0
mov r_err,#0
lcall er_ans
ret
s_writ5: lcall get_ar
;
mov r2,#7
mov b,#0
s_writ6: movx a,@dptr
add a,b
mov b,a
lcall indptr
djnz r2,s_writ6
mov r2,#12
mov r0,#ridat
s_writ7: mov a,@r0
movx @dptr,a
add a,b
mov b,a
lcall indptr
inc r0
djnz r2,s_writ7
mov a,b
movx @dptr,a
;
mov subsq,#0
mov r_err,#0
lcall ok_ans
ret
;----------------------
; Write ChipIn
;----------------------
w_cpin: inc r0
mov a,@r0
;
anl a,#0fh
mov region,a
rl a
add a,region
mov dptr,#wcitb
jmp @a+dptr
wcitb: ljmp w_qu0 ;write 0 region
ljmp w_qu1 ;write 1 region
ljmp w_qu2 ;write 2 region
ljmp w_qu9
ljmp w_qu4 ;write 4 region
ljmp w_qu9
ljmp w_qu4 ;write 6 region
ljmp w_qu7 ; ;write 7 qu(new)
ljmp w_qu8 ;write 8 qu(new)
w_qu9: setb f_tx
ret
w_qu0: ;--------------------
; Write Region 0
;--------------------
mov a,#00000000b
mov dptr,#d_374
movx @dptr,a
inc r0
inc r0
mov a,@r0
jnz wqu05
mov r0,#ridat
mov a,#b_buf
add a,#16
mov r1,a
mov r2,#16
lcall copy_s
mov dptr,#adr_offset
mov r0,#b_buf
mov r2,#24
wqu00: mov b,@r0
movx a,@dptr
cjne a,b,wqu01
sjmp wqu02
wqu01: mov idsc,#3fh
mov a,b
movx @dptr,a
wqu02: inc r0
inc dptr
djnz r2,wqu00
;
mov dptr,#d_idsc
mov r0,#b_buf
mov r2,#24
wqu03: mov a,@r0
movx @dptr,a
inc r0
inc dptr
djnz r2,wqu03
;
clr f_ini
mov r_err,#0
mov subsq,#0
lcall ok_ans
ret
;---------------------
;---------------------
wqu05: mov region,a
dec a
anl a,#0fh
mov dptr,#area_offset
mov b,#hedlen
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
mov r2,#hedlen
mov r0,#ridat
wqu06: mov a,@r0
movx @dptr,a
inc r0
inc dptr
djnz r2,wqu06
;
mov r_err,#0
mov subsq,#0
lcall ok_ans
lcall clear_pos_func
ret
;
w_qu1: ;-------------------
; Write Region 1
;-------------------
lcall quhead
mov r0,#ridat
mov a,#b_buf
add a,#16
mov r1,a
mov r2,#16
lcall copy_s
mov r0,#ridat
dec r0
dec r0
mov rec_h,@r0
inc r0
mov rec_l,@r0
mov r_nme,@r0
;
mov a,rec_h
cjne a,max_h,wqu11
mov a,rec_l
cjne a,max_l,wqu11
wqu11: jc wqu13
wqu12: mov subsq,#0
mov r_err,#0
lcall er_ans
ret
wqu13: mov a,r_nme
cjne a,#251,wqu14
wqu14: jnc wqu12
lcall get_ar
mov r0,#b_buf
mov r2,reclen
dec r2
dec r2
mov a,@r0
mov b,a
orl a,#80h
movx @dptr,a
inc r0
lcall indptr
wqu16: mov a,@r0
movx @dptr,a
add a,b
mov b,a
lcall indptr
inc r0
djnz r2,wqu16
;
mov a,b ;CheckSum
movx @dptr,a
mov subsq,#0
mov r_err,#0
lcall ok_ans
lcall clr_pos_in
mov r0,#b_buf
cjne @r0,#0,wqu17
ret
wqu17: mov a,r_nme
cjne a,end_l,wqu18
wqu18: jc wqu19
mov end_l,a
lcall w_pos
wqu19:
ret
;
w_qu2: ;------------------
; Write Region 2
;------------------
lcall quhead
mov r0,#ridat
mov a,#b_buf
add a,#16
mov r1,a
mov r2,#16
lcall copy_s
mov r0,#ridat
dec r0
dec r0
mov rec_h,@r0
mov beg_h,@r0
inc r0
mov rec_l,@r0
mov beg_l,@r0
;
mov a,rec_h
cjne a,max_h,wqu21
mov a,rec_l
cjne a,max_l,wqu21
wqu21: jc wqu23
mov subsq,#0
mov r_err,#0
lcall er_ans
ret
wqu23: lcall get_ar
mov r0,#b_buf
mov r2,reclen
dec r2
mov b,#0
wqu26: mov a,@r0
movx @dptr,a
add a,b
mov b,a
lcall indptr
inc r0
djnz r2,wqu26
;
mov a,b ;CheckSum
movx @dptr,a
mov a,beg_h
cjne a,end_h,wqu27
mov a,beg_l
cjne a,end_l,wqu27
sjmp wqu28
wqu27: jc wqu28
mov end_h,beg_h
mov end_l,beg_l
lcall w_max
wqu28: mov subsq,#0
mov r_err,#0
lcall ok_ans
ret
;
w_qu4: ;------------------
; Write Region 4&&6
;------------------
lcall quhead
mov r0,#ridat
mov a,#b_buf
add a,#16
mov r1,a
mov r2,#16
lcall copy_s
mov r0,#ridat
dec r0
dec r0
mov rec_h,@r0
inc r0
mov rec_l,@r0
;
mov a,rec_h
cjne a,max_h,wqu41
mov a,rec_l
cjne a,max_l,wqu41
wqu41: jc wqu43
mov r_err,#0
mov subsq,#0
lcall er_ans
ret
wqu43: lcall get_ar
mov r0,#b_buf
mov r2,reclen
dec r2
mov b,#0
wqu46: mov a,@r0
movx @dptr,a
add a,b
mov b,a
lcall indptr
inc r0
djnz r2,wqu46
;
mov a,b ;CheckSum
movx @dptr,a
mov subsq,#0
mov r_err,#0
lcall ok_ans
ret
;--------------------------------
; write region 7 新增加寫7區(qū)功能
;--------------------------------
w_qu7: lcall quhead7
mov r0,#ridat
dec r0
dec r0
mov rec_h,@r0
inc r0
mov rec_l,@r0
mov a,rec_h
cjne a,max_h,wqu71
mov a,rec_l
cjne a,max_l,wqu71
wqu71: jc wqu73
mov r_err,#0
mov subsq,#0
lcall er_ans
ret
wqu73: mov r0,#ridat ;將接收的數(shù)據(jù)再次異或,恢復(fù)成原數(shù)據(jù)送ridat單元
mov a,@r0
xrl a,#64h
mov @r0,a ;1
inc r0
mov a,@r0
xrl a,#95h
mov @r0,a ;2
inc r0
mov a,@r0
xrl a,#78h
mov @r0,a ;3
inc r0
mov a,@r0
xrl a,#47h
mov @r0,a ;4
inc r0
mov a,@r0
xrl a,#0ach
mov @r0,a ;5
inc r0
mov a,@r0
xrl a,#64h
mov @r0,a ;6
inc r0
mov a,@r0
xrl a,#95h
mov @r0,a ;7
inc r0
mov a,@r0
xrl a,#78h
mov @r0,a ;8
inc r0
mov a,@r0
xrl a,#47h
mov @r0,a ;9
inc r0
mov a,@r0
xrl a,#0ach
mov @r0,a ;10
lcall get_ar
mov r0,#ridat
mov r2,reclen ;r2=10
dec r2
mov b,#0
wqu76: mov a,@r0
movx @dptr,a
add a,b
mov b,a
inc dptr
inc r0
djnz r2,wqu76 ;將接收的10字節(jié)內(nèi)容送對(duì)應(yīng)7區(qū)地址中
mov a,b
movx @dptr,a ;計(jì)算的校驗(yàn)和送記錄校驗(yàn)和單元
mov subsq,#0
mov r_err,#0
lcall ok_ans ;發(fā)送正確應(yīng)答至pc
mov r0,#ridat
dec r0 ;R0指向記錄號(hào)(低字節(jié))
mov a,@r0
cjne a,end_l,wqu78
wqu78: jc wqu79 ;若記錄號(hào)<=尾指針,轉(zhuǎn)wqu79
;若記錄號(hào)>尾指針
mov end_l,a ;將記錄號(hào)送尾指針單元
lcall w_area ;刷新7區(qū)區(qū)頭信息中的尾指針單元
wqu79: ret
;----------------------
;write 8 region
;----------------------
w_qu8: lcall quhead ;確定8區(qū)區(qū)頭信息
mov r0,#ridat
dec r0 ;record(l)
dec r0 ;record(h)
mov rec_h,@r0
inc r0
mov rec_l,@r0
mov a,rec_h
cjne a,max_h,wqu81
mov a,rec_l
cjne a,max_l,wqu81
wqu81: jc wqu83
mov r_err,#0
mov subsq,#0
lcall er_ans
ret
wqu83: lcall get_ar
mov r0,#ridat
mov r2,reclen ;reclen=3
dec r2 ;r2=2
mov b,#0
wqu86: mov a,@r0
movx @dptr,a
add a,b
mov b,a
lcall indptr
inc r0
djnz r2,wqu86
mov a,b
movx @dptr,a ;校驗(yàn)和送入校驗(yàn)和字節(jié)中保存
mov subsq,#0
mov r_err,#0
lcall ok_ans ;發(fā)送正確應(yīng)答至POS
ret
;----------------------
; Write GLQ Date && Time
;----------------------
wr_clk: mov r0,#tidat
lcall w_887
mov subsq,#0
mov r_err,#0
lcall ok_ans
mov uptim,#3fh
ret
;----------------------------
; Write Pos: Close All Pos
;----------------------------
wr_pos: mov close,#3fh
mov subsq,#0
mov r_err,#0
lcall ok_ans
mov uptim,#3fh
ret
;------------------------------
; Write Card
; Region=0a0h: Set CardServer
; =0a1h: Reset CardServer
; =0a2h: ReWrite Card
; =0a3h: Write New Card
; =0a4h: Renew Card
;------------------------------
w_card: inc r0
cjne @r0,#0a0h,wcd00
clr f_s16
setb f_s00
mov r_s00,#16
sjmp wcd08
wcd00: cjne @r0,#0a1h,wcd01
mov f16cnt,#7
setb f_s16
setb f_s00
mov r_s00,#16
wcd08: setb tr1
ret
;
wcd01: cjne @r0,#0a2h,wcd03
setb f_s00
mov r_s00,#18
wcd02: mov r0,#ridat
mov a,#b_buf
add a,#16
mov r1,a
mov r2,#16
lcall copy_s
;
setb tr1
ret
wcd03: cjne @r0,#0a3h,wcd04
setb f_s00
mov r_s00,#17
sjmp wcd02
wcd04: cjne @r0,#0a4h,wcd05
setb f_s00
mov r_s00,#20
sjmp wcd08
wcd05: setb f_tx
ret
;----------------------
; Special Write
;----------------------
writ5: inc r0
mov a,@r0
anl a,#0fh
mov region,a
rl a
add a,region
mov dptr,#wrdtab
jmp @a+dptr
wrdtab: ljmp writ50
ljmp writ51
ljmp writ52
ljmp writ59
ljmp writ59
ljmp writ59
ljmp writ59
ljmp writ59
ljmp writ59
writ59: setb f_tx
ret
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -