⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 call_lib.asm

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
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 + -