?? glqlgdc1.asm
字號:
get_limit:
mov region,#limitab
lcall quhead
mov rec_h,#0
mov rec_l,id_limit
lcall get_ar
mov a,r_nme
mov b,#8
div ab
mov r3,b
jz g_sf0
mov r2,a
lcall n_dptr
g_sf0: movx a,@dptr
cjne r3,#0,g_sf1
ret
g_sf1: rl a
djnz r3,g_sf1
ret
;
;****************************
;get credit grade
;入口:credit單元
;出口:DAT_H,DAT_L單元
;****************************
get_credit:
mov region,#credtab ;取得8區(qū)區(qū)頭信息
lcall quhead
mov rec_h,#0
mov rec_l,credit ;根據(jù)信用等級確定記錄號
lcall get_ar ;dptr指向整數(shù)高位字節(jié)
movx a,@dptr ;dptr指向整數(shù)高位字節(jié)
mov dat_h,a ;整數(shù)高位字節(jié)送dat_h
lcall indptr
movx a,@dptr
mov dat_l,a ;整數(shù)低位字節(jié)送dat_l
ret
;****************************
; Verfity Ram
;****************************
verfity_ram:
mov r0,#t_buf
mov dptr,#d_374
mov a,#10101010b
movx @dptr,a
;
mov dptr,#5555h
movx a,@dptr
mov @r0,a
mov a,#0aah
movx @dptr,a
inc r0
mov dptr,#d_374
mov a,#01010101b
movx @dptr,a
;
mov dptr,#2aaah
movx a,@dptr
mov @r0,a
mov a,#55h
movx @dptr,a
inc r0
;
mov dptr,#d_374
mov a,#10011001b
movx @dptr,a
mov dptr,#4ccch
movx a,@dptr
mov @r0,a
mov a,#33h
movx @dptr,a
inc r0
mov dptr,#d_374
mov a,#01100110b
movx @dptr,a
;
mov dptr,#3333h
movx a,@dptr
mov @r0,a
mov a,#0cch
movx @dptr,a
;
nop
nop
nop
;
mov dptr,#d_374
mov a,#10101010b
movx @dptr,a
;
mov r0,#t_buf
mov dptr,#5555h
movx a,@dptr
cjne a,#0aah,alrm
mov a,@r0
movx @dptr,a
inc r0
mov dptr,#d_374
mov a,#01010101b
movx @dptr,a
;
mov dptr,#2aaah
movx a,@dptr
cjne a,#55h,alrm
mov a,@r0
movx @dptr,a
inc r0
;
mov dptr,#d_374
mov a,#10011001b
movx @dptr,a
;
mov dptr,#4ccch
movx a,@dptr
cjne a,#33h,alrm
mov a,@r0
movx @dptr,a
inc r0
mov dptr,#d_374
mov a,#01100110b
movx @dptr,a
;
mov dptr,#3333h
movx a,@dptr
cjne a,#0cch,alrm
mov a,@r0
movx @dptr,a
;
clr bit_c
ret
;
alrm: setb bit_c
ret
;******************************
;******************************
; Read 2051
;******************************
;******************************
rd2051: jnb f_ini,rd000
clr led
clr bp
mov r2,#1
lcall sleep
setb led
setb bp
;
mov r6,#4
rrd3: jb f_rx,rrd8
mov r2,#1
lcall sleep
djnz r6,rrd3
;
mov r6,#2
rrd5: jb f_rx,rrd8
clr led
clr bp
mov r2,#3
lcall sleep
setb led
setb bp
jb f_rx,rrd8
mov r2,#3
lcall sleep
djnz r6,rrd5
mov r6,#25
rrd6: jb f_rx,rrd8
mov r2,#1
lcall sleep
djnz r6,rrd6
rrd8:
ret
rd000: mov shn,#00000100b
mov r6,#0
mov p1,#0ffh
;
rd_00: mov r0,#r_buf
mov dptr,#r_2051 ;Read 2051
movx a,@dptr
anl a,shn
jz rd_03
rd_02: inc r6
mov a,shn
rl a
mov shn,a
cjne a,#40h,rd_00
mov a,#0ffh
mov dptr,#w_2051
movx @dptr,a
ret
;
rd_03: mov a,shn
cpl a
movx @dptr,a ;Write 2051
;
mov r7,#50
;
rd_04: movx a,@dptr ;Read 2051
anl a,shn
jnz rd_05
djnz r7,rd_04
mov a,#0ffh
movx @dptr,a
djnz r7,$
djnz r7,$
;
lcall p_err
sjmp rd_02
rd_05: mov a,p1
mov @r0,a
mov a,#0ffh
movx @dptr,a
;
mov r5,#11
;
mov a,@r0
inc r0
cjne a,#19,rd_06
mov r5,#51
sjmp rd_09
;
rd_06: cjne a,#37,rd_07
mov r5,#35
sjmp rd_09
;
rd_07: cjne a,#41,rd_08
mov r5,#35
sjmp rd_09
;
rd_08: cjne a,#43,rd008
mov r5,#51
sjmp rd_09
rd008: cjne a,#36,rd_09
mov r5,#19
rd_09: mov rtchk,r5
inc rtchk
;
mov dptr,#r_2051
rd_10: mov r7,#100
rd_11: movx a,@dptr
anl a,shn
jz rd_12
djnz r7,rd_11
djnz r7,$
djnz r7,$
lcall p_err
ljmp rd_02
;
rd_12: mov a,shn
cpl a
movx @dptr,a ;Write 2051
;
mov r7,#50
;
rd_13: movx a,@dptr ;Read 2051
anl a,shn
jnz rd_16
djnz r7,rd_13
mov a,#0ffh
movx @dptr,a
rd_15: lcall p_err
mov r7,#0
djnz r7,$
djnz r7,$
ljmp rd_02
rd_16: mov a,p1
mov @r0,a
inc r0
mov dptr,#w_2051
mov a,#0ffh
movx @dptr,a
djnz r5,rd_10
;
mov a,rtchk
rr a
mov r5,a
add a,#t_buf
mov r1,a
mov r0,#t_buf
mov rtchk,#0
rd_17: mov a,@r0
mov b,@r1
cjne a,b,rd_15
add a,rtchk
mov rtchk,a
inc r0
inc r1
djnz r5,rd_17
dec r0
mov a,@r0
add a,@r0
cjne a,rtchk,rd_15
;--------------------
; Data Deal
;--------------------
mov r0,#r_buf
mov a,@r0
cjne a,#32,rd_20
rd_20: jnc rd_28
cjne a,#16,rd_21
rd_21: jc rd_25
cjne a,#21,rd_22
rd_22: jnc rd_25
jnb f_s00,rd_25
ljmp rd_40
rd_25: ljmp rd_02
rd_28: subb a,#32
mov b,a
rl a
add a,b
mov dptr,#rdtab
jmp @a+dptr
rdtab: ljmp rd_30 ;Command=32
ljmp rd_31 ;Command=33: Scan Requst
ljmp rd_32 ;Command=34: Requst CardSC && UserID
ljmp rd_33 ;Command=35: Requst Ration
ljmp rd_34 ;Command=36: Requst Infor of ID Adress
ljmp rd_35 ;Command=37: Sale/Save Record
ljmp rd_36 ;Command=38: Send Person Infor
ljmp rd_37 ;Command=39: Test Comm
ljmp rd_38 ;Command=40: Close Command Answer
ljmp rd_39 ;Command=41: Receive Pos Date && Time
ljmp rd_3a ;Command=42: Update Pos Data && Time
ljmp rd_3b ;Command=43: Receive Pos UserID && CardSC
ljmp rd_3c ;Command=44: Requst Pos Menu
ljmp rd_3d ;Command=45: Return Post Status
ljmp rd_02 ;Command=
ljmp rd_02 ;Command=
rd_30: ljmp rd_02 ;Initi Post
rd_31: mov a,close
anl a,shn
jz rd310
mov a,shn ;Close Pos
cpl a
anl a,close
mov close,a
ljmp rd_75
rd310: mov a,idsc
anl a,shn
jz rr310
mov a,shn ;Send UserID && CardSC
cpl a
anl a,idsc
mov idsc,a
ljmp rd_32
rr310: mov region,#postab
lcall quhead
mov a,reclen
cjne a,#32,rr311
rr311: jnc rd311
ret ;Ram Not Initilize
rd311: mov r0,#r_buf
inc r0
mov dptr,#d_374
mov a,#00000000b
movx @dptr,a
rd312: mov a,@r0
cjne a,end_l,r3121
sjmp r3123
r3121: jc r3123
mov @r0,#0
r3123: mov dptr,#d_pos_in
mov dpl,@r0
movx a,@dptr
jz rd313
cjne a,shn,r3122
sjmp rd313
r3122: mov a,@r0
inc @r0
jnz rd312
mov @r0,a
ljmp r_317
rd313: mov rec_h,#0
mov rec_l,@r0
mov r_nme,@r0
lcall get_ar
movx a,@dptr
anl a,#7fh
jnz r3133
mov dptr,#d_374
mov a,#00000000b
movx @dptr,a
sjmp r3122
;
r3133: movx a,@dptr
jnb acc.7,rd314
anl a,#7fh
movx @dptr,a
cjne a,#ratfunc,rd314
ljmp rd330
rd314: mov b,a
jnb f_wck,rd315
mov a,r_nme
cjne a,r_win,rd315
mov a,#41
ljmp rd_60
rd315: jnb f_win,rd316
mov a,r_nme
cjne a,r_win,rd316
mov a,#43
ljmp rd_60
rd316: mov a,r_nme
jnz rd318
jnb f_s00,rd317
ljmp rd_50
rd317: jnb f_s16,rd318
r_317: mov r0,#t_buf
mov @r0,#100
inc r0
sjmp rd319
;
rd318: mov a,shn
anl a,uptim
jz rd319
mov a,shn
cpl a
anl a,uptim
mov uptim,a
ljmp rd_70
rd319: mov r0,#t_buf
inc r0
mov @r0,r_nme
inc r0
mov @r0,b
inc r0
lcall indptr
movx a,@dptr
mov @r0,a
mov dptr,#d_374
mov a,#00000000b
movx @dptr,a
mov dptr,#d_pos_menu
mov dpl,r_nme
movx a,@dptr
inc r0
mov @r0,a
mov r5,#6
lcall chksum
mov r5,#12
ljmp wr2051
rd_32: mov a,#00000000b ;Send UserID && CardSC Pos
mov dptr,#d_374
movx @dptr,a
mov dptr,#adr_offset
mov r0,#t_buf
mov @r0,#34
inc r0
mov b,#0
mov r2,#24
rd322: movx a,@dptr
mov @r0,a
orl a,b
mov b,a
inc dptr
inc r0
djnz r2,rd322
mov a,b
jnz rd325
mov r0,#t_buf
mov @r0,#200
mov r5,#6
lcall chksum
mov r5,#12
ljmp wr2051
rd325: mov r5,#26
lcall chksum
mov r5,#52
ljmp wr2051
rd_33: mov region,#postab ;Send Ration to Pos
lcall quhead
mov r0,#r_buf
inc r0
mov rec_h,#0
mov rec_l,@r0
mov r_nme,@r0
lcall get_ar
movx a,@dptr
anl a,#7fh
movx @dptr,a
rd330: mov r2,#3
lcall n_dptr
mov r0,#r_buf
mov @r0,#35
inc r0
mov @r0,r_nme
inc r0
mov r2,#3
rd337: movx a,@dptr
mov @r0,a
inc r0
lcall indptr
djnz r2,rd337
mov r5,#6
lcall chksum
mov r5,#12
ljmp wr2051
rd_34: mov region,#acctab ;Send Person Accounts
lcall quhead
mov r0,#r_buf
inc r0
mov rec_h,@r0
inc r0
mov rec_l,@r0
inc r0
mov a,#r_buf
add a,#16
mov r1,a
mov r2,#5
lcall copy_s
mov r_nme,@r0
mov a,r_nme
mov r7,#10
rd340: mov a,#r_buf
mov r0,a
add a,#16
mov r1,a
mov @r0,#38
inc r0
mov @r0,rec_h
inc r0
mov @r0,rec_l
inc r0
mov a,rec_h
cjne a,end_h,rd341
mov a,rec_l
cjne a,end_l,rd341
sjmp rd342
rd341: jc rd342
mov @r0,#0
ljmp rd368
rd342: lcall get_ar
movx a,@dptr
mov rtchk,a
clr f_none
clr f_sme
cjne a,#1,r_341
sjmp r_345
r_341: cjne a,#2,r_342
setb f_sme
sjmp r_345
r_342: cjne a,#3,r_343
setb f_sme
sjmp r_345
r_343: clr a
setb f_none
r_345: mov @r0,a
lcall indptr
inc r0
;
movx a,@dptr
mov @r0,a
mov id_limit,a
add a,rtchk
mov rtchk,a
lcall indptr
inc r0
mov r2,#5
r_346: movx a,@dptr
mov @r0,a
mov b,@r1
cjne a,b,r_348
add a,rtchk
mov rtchk,a
lcall indptr
inc r0
inc r1
djnz r2,r_346
jb f_none,r3483 ;f_none=1,為撤戶卡,轉(zhuǎn)r3483
jb f_sme ,r348a ;f_sme=1,為管理卡或掛失卡,轉(zhuǎn)r348a
;為正常卡,順序執(zhí)行
;=========================================================modify
mov a,reclen
clr c
subb a,#12
;subb a,#11
mov r2,a ;r2=10
ljmp r_34a
;==========================================================
r_348: djnz r7,r3481
sjmp r3483
r3481: mov a,r2
add a,#12
mov r2,a
lcall n_dptr
movx a,@dptr
mov rec_h,a
lcall indptr
mov a,rec_h
cjne a,#0ffh,r_349
movx a,@dptr
cjne a,#0ffh,r_349
r3483: mov r0,#r_buf
inc r0
inc r0
inc r0 ;該記錄的尾指針為FFFF,意即其后無可查詢的記錄
mov @r0,#0
ljmp rd368
;==========================================================modify
r348a: mov a,reclen ;若為管理卡或掛失卡,不對預(yù)留字節(jié)進(jìn)行處理
clr c
subb a,#8
mov r2,a
ljmp rd363
;============================================================
r_349: movx a,@dptr
mov rec_l,a
ljmp rd340
;======================================================modify
r_34a: movx a,@dptr ;r2=10
mov @r0,a
add a,rtchk
mov rtchk,a
inc r0
lcall indptr
djnz r2,r_34a ;dptr指向信用額度字節(jié)
;-------------------------------modify
movx a,@dptr ;信用額度字節(jié)送credit單元
mov credit,a
;=============
MOV RR_374,R_374 ;保護(hù)二區(qū)頁地址
MOV SDPH,DPH
MOV SDPL,DPL ;保護(hù)二區(qū)高、低地址
;=============
mov r2,a ;
lcall get_credit ;調(diào)用獲得信用額度子程序
;將信用額度送入發(fā)送緩存
mov @r0,dat_h ;信用額度整數(shù)高位--->發(fā)送緩存
inc r0
mov @r0,dat_l ;信用額度整數(shù)低位--->發(fā)送緩存
mov a,r2
add a,rtchk
mov rtchk,a
;============
MOV R_374,RR_374
MOV A,R_374
MOV DPTR,#D_374
MOVX @DPTR,A
MOV DPH,SDPH
MOV DPL,SDPL
;===========
inc r0
lcall indptr ;dptr指向預(yù)留字節(jié)
;--------------------------------
movx a,@dptr ;dptr指向預(yù)留字節(jié)
jnb acc.7,r_34b ;若acc.7=0,轉(zhuǎn)r_34b
;若acc.7=1
mov a,#11
ljmp rd367 ;標(biāo)志字節(jié)送11,發(fā)送至POS(表示二次靠卡,惡意透支)
r_34b: orl a,#80h ;acc.7=1
movx @dptr,a ;送入預(yù)留字節(jié)
add a,rtchk ;計算校驗(yàn)和
mov rtchk,a
lcall indptr ;dptr指向尾指針(高)
mov r2,#2
r_34c: movx a,@dptr
mov @r0,a
add a,rtchk
mov rtchk,a
inc r0
lcall indptr
djnz r2,r_3
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -