📄 call_lib.asm
字号:
RSEG APP
#include "lib_vector.def"
#include "userlib_vector.def"
;#include "libpos.def"
SETB macro dst,src
pha
lda src
sta dst
pla
endm
SETW macro dstL,dstH,srcL,srcH
pha
lda srcL
sta dstL
lda srcH
sta dstH
pla
endm
ADD32 macro dstLL,dstLH,dstHL,dstHH,srcLL,srcLH,srcHL,srcHH
clc
lda dstLL
adc srcLL
sta dstLL
lda dstLH
adc srcLH
sta dstLH
lda dstHL
adc srcHL
sta dstHL
lda dstHH
adc srcHH
sta dstHH
endm
SUB32 macro dstLL,dstLH,dstHL,dstHH,srcLL,srcLH,srcHL,srcHH
sec
lda dstLL
sbc srcLL
sta dstLL
lda dstLH
sbc srcLH
sta dstLH
lda dstHL
sbc srcHL
sta dstHL
lda dstHH
sbc srcHH
sta dstHH
endm
ADD16 macro dstL,dstH,srcL,srcH
clc
lda dstL
adc srcL
sta dstL
lda dstH
adc srcH
sta dstH
endm
ADD24 macro dstL,dstH,dstHL,srcL,srcH,srcHL
clc
lda dstL
adc srcL
sta dstL
lda dstH
adc srcH
sta dstH
lda dstHL
adc srcHL
sta dstHL
endm
MPL_STATE_CHK macro state,is_not
lda gMPL_AppParam2
cmp #state
bne is_not
endm
_BRA_TO_SD_FAT macro _lbel
lda NandSDSel ;can't use $A
bne _lbel
endm
MPL_PASS_TBL_CHK macro table,pass,ret
ldx #0
?_loop#
lda table,x
.extern gMPL_AppParam2
cmp gMPL_AppParam2
beq pass
cmp #MPL_STATE_END
beq ret
inx
bra ?_loop#
endm
_PUT_NIBBLE macro
LOCAL ?_is_ch,?_is_num,?put_nibble
cmp #0Ah
bmi ?_is_num
?_is_ch:
sec
sbc #0Ah
clc
adc #'A'
bra ?put_nibble
?_is_num:
clc
adc #'0'
?put_nibble:
;ldx ch0
;phx
sta ch0
jsr lcm_char_putc
endm
ASL16n macro valL,valH,cnt
REPT cnt
asl valL
rol valH
ENDR
endm
LSR16n macro valL,valH,cnt
REPT cnt
lsr valH
ror valL
ENDR
endm
_LOAD_API macro _subid,_id
; IF _subid = SUBID_NONE
; ;IF TRUE < 1
; ELSE ;_subid=SUBID_NONE
; ;.extern _subapi
SETB _subapi,#_subid
; ENDIF ;_subid=SUBID_NONE
;.extern _load_api
lda #_id
jsr _load_api
endm
_LOAD_API_1 macro _subid,_id
lda #_id
jsr _load_api
endm
_BRA_TO_ND_FAT macro _lbel
;.extern NandSDSel
ldx NandSDSel ;can't use $A
beq _lbel
endm
;***************************************************************************
;* Func: API_OsTaskRegister
;* Input: ap parameter
;* Output: none
;*
;* Description: register ap
;*
;***************************************************************************
;extern void API_OsTaskRegister(uint8 TaskID,uint16 TaskAdr,uint16 TaskPS,uint8 TaskSize);
MODULE API_OsTaskRegister
PUBLIC API_OsTaskRegister
RSEG APP
DEFFN API_OsTaskRegister(0,0,0,0,32768,0,8,0)
API_OsTaskRegister:
sta task_id
;store task adr
lda np:PRMBN API_OsTaskRegister+1
sta task_ptrl
lda np:PRMBN API_OsTaskRegister+2
sta task_ptrh
;store task sector
lda np:PRMBN API_OsTaskRegister+3
sta task_offpsll
lda np:PRMBN API_OsTaskRegister+4
sta task_offpslh
;store task szie
lda np:PRMBN API_OsTaskRegister+5
sta task_size
phx
jsr os_task_register
plx
rts
ENDMOD
;.EFUNC ;API_OsTaskRegister
;***************************************************************************
;* Func: API_OsSetCurrentTask
;* Input: task_id in $A
;* Output: none
;*
;* Description: set current task
;*
;***************************************************************************
;extern void API_OsSetCurrentTask(uint8 TaskID);
MODULE API_OsSetCurrentTask
PUBLIC API_OsSetCurrentTask
RSEG APP
DEFFN API_OsSetCurrentTask(0,0,0,0,32768,0,1,0)
API_OsSetCurrentTask:
phx
jsr os_set_curr_task
plx
rts
ENDMOD
;.EFUNC ;API_OsSetCurrentTask
;***************************************************************************
;* Func: pending_event
;* Input: ev_id
;* Output: none
;*
;* Description: pending event
;*
;***************************************************************************
;void API_OsPendEvent(uint8 EventID)
MODULE API_OsPendEvent
PUBLIC API_OsPendEvent
RSEG APP
DEFFN API_OsPendEvent(0,0,0,0,32768,0,1,0)
API_OsPendEvent:
sta ev_id
phx
jsr os_pend_event
plx
rts
ENDMOD
;.EFUNC ;pending_event
;***************************************************************************
;* Func: API_OsReleaseEvent
;* Input: ev_id
;* Output: none
;*
;* Description: release event
;*
;***************************************************************************
;void API_OsReleaseEvent(uint8 EventID)
MODULE API_OsReleaseEvent
PUBLIC API_OsReleaseEvent
RSEG APP
DEFFN API_OsReleaseEvent(0,0,0,0,32768,0,1,0)
API_OsReleaseEvent:
sta ev_id
phx
jsr os_release_event
plx
rts
ENDMOD
;.EFUNC ;API_OsReleaseEvent
;***************************************************************************
;* Func: API_OsCheckEventOccur
;* Input: event_id
;* Output: $A: true or false
;*
;* Description: check this event occur
;*
;***************************************************************************
;uint8 API_OsCheckEventOccur(uint8 EventID)
MODULE API_OsCheckEventOccur
PUBLIC API_OsCheckEventOccur
RSEG APP
DEFFN API_OsCheckEventOccur(0,0,0,0,32768,0,1,0)
API_OsCheckEventOccur:
sta ev_id
phx
jsr os_chk_event_occur ;will return 0(false) or 1(true)
plx
rts
ENDMOD
;.EFUNC ;API_OsCheckEventOccur
;***************************************************************************
;* Func: API_OsGetKeyId
;* Input: none
;* Output: $A
;*
;* Description: get key id
;*
;***************************************************************************
;uint8 API_OsGetKeyId(void)
MODULE API_OsGetKeyId
PUBLIC API_OsGetKeyId
RSEG APP
DEFFN API_OsGetKeyId(0,0,0,0,32768,0,0,0)
API_OsGetKeyId:
lda key_id
rts
ENDMOD
;.EFUNC ;API_OsGetKeyId
;***************************************************************************
;* Func: API_OsInitOS
;* Input: none
;* Output: none
;*
;* Description: init X
;*
;***************************************************************************
;extern void API_OsInitOS(void);
MODULE API_OsInitOS
PUBLIC API_OsInitOS
RSEG APP
DEFFN API_OsInitOS(0,0,0,0,32768,0,0,0)
API_OsInitOS:
ldx #$FF ;//set expression stack pointer
rts
ENDMOD
;.EFUNC ;API_OsInitOS
;***************************************************************************
;* Func: API_SysGetX
;* Input: none
;* Output: none
;*
;* Description: get $X
;*
;***************************************************************************
;uint8 API_SysGetX(void)
MODULE API_SysGetX
PUBLIC API_SysGetX
RSEG APP
DEFFN API_SysGetX(0,0,0,0,32768,0,0,0)
API_SysGetX:
txa
rts
ENDMOD
;***************************************************************************
;* Func: API_SysGetY
;* Input: none
;* Output: none
;*
;* Description: iar parameter initial
;*
;***************************************************************************
;uint8 API_SysGetY(void)
MODULE API_SysGetY
PUBLIC API_SysGetY
RSEG APP
DEFFN API_SysGetY(0,0,0,0,32768,0,0,0)
API_SysGetY:
tya
rts
ENDMOD
;***************************************************************************
;* Func: API_SysLoadUSBLib
;* Input: none
;* Output: $A
;*
;* Description: load usb module
;*
;***************************************************************************
;uint8 API_SysLoadUSBLib(void)
MODULE API_SysLoadUSBLib
PUBLIC API_SysLoadUSBLib
RSEG APP
DEFFN API_SysLoadUSBLib(0,0,0,0,32768,0,0,0)
API_SysLoadUSBLib:
phx
;jsr API_include_usb_lib
_LOAD_API_1 SUBID_NONE,API_ID_INCLUDE_LIB
plx
rts
ENDMOD
;.EFUNC ;API_SysLoadUSBLib
;***************************************************************************
;* Func: API_SysLoadFATLib
;* Input: void
;* Output: $A
;*
;* Description: fatinit
;*
;***************************************************************************
;extern uint8 API_SysLoadFATLib(uint8 NandSDSel);
MODULE API_SysLoadFATLib
PUBLIC API_SysLoadFATLib
RSEG APP
DEFFN API_SysLoadFATLib(0,0,0,0,32768,0,1,0)
API_SysLoadFATLib:
phx
sta NandSDSel
;jsr API_include_fat_lib
_BRA_TO_ND_FAT ?_nd
;.extern _sdmmc_reset
jsr _sdmmc_reset
?_nd:
_LOAD_API _SA_INCLUDE_FAT_LIB,API_ID_INCLUDE_LIB_GP
plx
tya
cmp #$32
beq _fat32
cmp #$16
beq _fat16
lda #0
bra _exit
_fat32:
lda #32
bra _exit
_fat16:
lda #16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -