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

📄 call_lib.asm

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        
_exit:  
        rts
        ENDMOD

;.EFUNC ;API_SysLoadFATLib

;***************************************************************************
;* Func:        API_SysInitFATSig
;* Input:       none
;* Output:      none
;*
;* Description: 
;*
;***************************************************************************
        ;extern void API_SysInitFATSig(void);
        MODULE  API_SysInitFATSig
        PUBLIC  API_SysInitFATSig
        RSEG    APP
        DEFFN   API_SysInitFATSig(0,0,0,0,32768,0,0,0)  
API_SysInitFATSig:              
        
        phx
        jsr     API_init_fat_sig
        plx
        rts
        ENDMOD

;.EFUNC ;API_SysInitFATSig


;***************************************************************************
;* Func:        API_SysLoadMediaLib
;* Input:       void
;* Output:      $A
;*
;* Description: API_SysLoadMediaLib
;*
;***************************************************************************
        ;uint8 API_SysLoadMediaLib(void)
        MODULE  API_SysLoadMediaLib
        PUBLIC  API_SysLoadMediaLib
        RSEG    APP
        DEFFN   API_SysLoadMediaLib(0,0,0,0,32768,0,0,0)        
API_SysLoadMediaLib:    
        phx
        ;jsr     API_include_mpl_lib
        _LOAD_API       _SA_INCLUDE_MPL_LIB,API_ID_INCLUDE_LIB_GP
        plx
        rts
        ENDMOD
;.EFUNC ;API_SysLoadMediaLib


;***************************************************************************
;* Func:        API_SysSDCardDetect
;* Input:       void
;* Output:      $A
;*
;* Description: API_SysSDCardDetect
;*
;***************************************************************************
        ;uint8 API_SysSDCardDetect(void)
        MODULE  API_SysSDCardDetect
        PUBLIC  API_SysSDCardDetect
        RSEG    APP
        DEFFN   API_SysSDCardDetect(0,0,0,0,32768,0,0,0)        
API_SysSDCardDetect:
        phx     
        jsr     SDMMC_CardCheck  ;success: return 0  fail:return 0xFF
        plx
        cmp     #0
        beq     ?_sd_ok
        lda     #0
        bra     ?_sd_end
?_sd_ok:        
        lda     #1
?_sd_end:       
        rts
        ENDMOD

;.EFUNC ;API_SysSDCardDetect


;***************************************************************************
;* Func:        API_SysRandom
;* Input:       max (Maximum 4096)
;* Output:      random number (1 ~ max)
;*
;* Description: random generator
;*
;***************************************************************************
        ;extern uint16 API_SysRandom(uint16 MaxNum);
        MODULE  API_SysRandom
        PUBLIC  API_SysRandom
        RSEG    APP
        DEFFN   API_SysRandom(0,0,0,0,32768,0,2,0)      
API_SysRandom:

        LDA     np:LOCBN API_SysRandom
        LDY     np:LOCBN API_SysRandom+1

        PHX
        JSR     API_random_gen
        PLX
        

        STA     zp:-2,X
        STY     zp:-1,X
        DEX
        DEX

        RTS                             
        ENDMOD

;.EFUNC ;API_SysRandom

;***************************************************************************
;* Func:        API_SysGetOneNumber
;* Input:       Value
;*              Carry
;* Output:      
;*
;* Description: API_SysGetOneNumber
;*
;***************************************************************************
        ;extern uint8 API_SysGetOneNumber(uint16 Value,uint8 Carry);
        MODULE  API_SysGetOneNumber
        PUBLIC  API_SysGetOneNumber
        RSEG    APP
        DEFFN   API_SysGetOneNumber(0,0,4,0,32768,0,3,0)      
API_SysGetOneNumber:

        phx
        
        SETB    par_0,np:PRMBN API_SysGetOneNumber+0
        SETB    par_1,np:PRMBN API_SysGetOneNumber+1
        
        ;jsr    API_2b_hex2bcd
        _LOAD_API       _SP_GP2_HEX2BCD,API_ID_GROUP2
        
        sta     np:LOCBN API_SysGetOneNumber+0
        sty     np:LOCBN API_SysGetOneNumber+1
        
        SETB    np:LOCBN API_SysGetOneNumber+2,#$0f
        stz     np:LOCBN API_SysGetOneNumber+3
        ldy     #0
?_asl_a:        
        cpy     np:PRMBN API_SysGetOneNumber+2
        beq     ?_and
        ASL16n  np:LOCBN API_SysGetOneNumber+2,np:LOCBN API_SysGetOneNumber+3,4
        iny
        bra     ?_asl_a

?_and:  
        lda     np:LOCBN API_SysGetOneNumber+0
        and     np:LOCBN API_SysGetOneNumber+2
        sta     np:LOCBN API_SysGetOneNumber+2

        lda     np:LOCBN API_SysGetOneNumber+1
        and     np:LOCBN API_SysGetOneNumber+3
        sta     np:LOCBN API_SysGetOneNumber+3  
        
        ldy     #0
?_lsr_a:        
        cpy     np:PRMBN API_SysGetOneNumber+2
        beq     ?_exit
        LSR16n  np:LOCBN API_SysGetOneNumber+2,np:LOCBN API_SysGetOneNumber+3,4
        iny
        bra     ?_lsr_a 

?_exit: 
        
        lda     np:LOCBN API_SysGetOneNumber+2  
        plx
        rts
        ENDMOD

;.EFUNC ;API_SysGetOneNumber


;***************************************************************************
;* Func:        API_DebugShowAddress
;* Input:       Ptr - pointer 
;* Output:      none
;*
;* Description: API_DebugShowAddress
;*
;***************************************************************************
        ;extern uint8 API_DebugShowAddress(uint8 *Ptr);
        PUBLIC  API_DebugShowAddress
        DEFFN   API_DebugShowAddress(0,0,0,0,32768,0,2,0)       
API_DebugShowAddress:
        phx   
        lda     np:PRMBN API_DebugShowAddress
        jsr     lcm_char_dbg_hex
        lda     np:PRMBN API_DebugShowAddress+1
        jsr     lcm_char_dbg_hex
        plx
        rts
;.EFUNC ;API_DebugShowAddress


;***************************************************************************
;* Func:        API_SysSaveValue
;*              RFDlStrOffPs[hl:ll]     - start sector
;*              [$X:$A]                 - source addr
;* Output:      
;*
;* Description: 
;*
;***************************************************************************
        ;extern uint8  API_SysSaveValue(uint16 RamAdr, uint32 NandAdr);
        MODULE  API_SysSaveValue
        PUBLIC  API_SysSaveValue
        RSEG    APP
        DEFFN   API_SysSaveValue(0,0,0,0,32768,0,6,0)
API_SysSaveValue:
        phx
        php

        ;SETB    RFDlStrSechl,np:PRMBN API_SysSaveValue+4     ;H
        ;SETB    RFDlStrSeclh,np:PRMBN API_SysSaveValue+3     ;M
        ;SETB    RFDlStrSecll,np:PRMBN API_SysSaveValue+2     ;L
        SETB    RFDlStrOffPshl,np:PRMBN API_SysSaveValue+4     ;H
        SETB    RFDlStrOffPslh,np:PRMBN API_SysSaveValue+3     ;M
        SETB    RFDlStrOffPsll,np:PRMBN API_SysSaveValue+2     ;L        

        ;SETW    RFDlAdrl,RFDlAdrh,np:PRMBN API_SysSaveValue+0,np:PRMBN API_SysSaveValue+1
        LDA     np:PRMBN API_SysSaveValue+0
        LDX     np:PRMBN API_SysSaveValue+1
        
        ;jsr     FTL_SectorWrite
        jsr     WrMcuCodeToFlash
        tya     
        
        plp
        plx
        rts     
        ENDMOD          
        
;***************************************************************************
;* Func:        API_SysLoadValue
;* Input:       
;* Output:      
;*
;* Description: 
;*
;***************************************************************************
        ;extern uint8  API_SysLoadValue(uint32 NandAdr, uint16 RamAdr, uint8 Amount);
        MODULE  API_SysLoadValue
        PUBLIC  API_SysLoadValue
        RSEG    APP
        DEFFN   API_SysLoadValue(0,0,0,0,32768,0,7,0)
API_SysLoadValue:
        phx
        php
        
;        SETB    RFDlStrSecll,np:PRMBN API_SysLoadValue+0
;        SETB    RFDlStrSeclh,np:PRMBN API_SysLoadValue+1
;        SETB    RFDlStrSechl,np:PRMBN API_SysLoadValue+2
        SETB    RFDlStrOffPsll,np:PRMBN API_SysLoadValue+0
        SETB    RFDlStrOffPslh,np:PRMBN API_SysLoadValue+1
        SETB    RFDlStrOffPshl,np:PRMBN API_SysLoadValue+2

        
        SETB    RFDlSzRBl,np:PRMBN API_SysLoadValue+6
        stz     RFDlSzRBh
        ;stz     RFDlSzPS
        LDY     #0
        ;SETW    RFDlAdrl,RFDlAdrh,np:PRMBN API_SysLoadValue+4,np:PRMBN API_SysLoadValue+5
        LDA     np:PRMBN API_SysLoadValue+4
        LDX     np:PRMBN API_SysLoadValue+5
        
        JSR     RdMcuCodeFromFlash
        
        plp
        plx                     
        rts     
        ENDMOD 
        
;***************************************************************************
;* Func:        API_SysLoadValueEX
;* Input:         
;* Output:      
;*
;* Description: 
;*
;***************************************************************************
        ;extern uint8  API_SysLoadValueEX(uint32 NandAdr, uint16 RamAdr, uint16 Amount);
        MODULE  API_SysLoadValueEX
        PUBLIC  API_SysLoadValueEX
        RSEG    APP
        DEFFN   API_SysLoadValueEX(0,0,0,0,32768,0,7,0)
API_SysLoadValueEX:
        phx
        php
        
        ;source 
;        SETB    RFDlStrSecll,np:PRMBN API_SysLoadValueEX+0
;        SETB    RFDlStrSeclh,np:PRMBN API_SysLoadValueEX+1
;        SETB    RFDlStrSechl,np:PRMBN API_SysLoadValueEX+2
        SETB    RFDlStrOffPsll,np:PRMBN API_SysLoadValueEX+0
        SETB    RFDlStrOffPslh,np:PRMBN API_SysLoadValueEX+1
        SETB    RFDlStrOffPshl,np:PRMBN API_SysLoadValueEX+2

      
        ;remain high bytes
        lda     np:PRMBN API_SysLoadValueEX+7
        and     #$01
        sta     RFDlSzRBh
        
        ;remain low byte
        SETB    RFDlSzRBl,np:PRMBN API_SysLoadValueEX+6

        ;amount/512 = high byte/2 = partial sector  
        ;SETB    RFDlSzPS,np:PRMBN API_SysLoadValueEX+7
        ;lsr     RFDlSzPS
        LSR     np:PRMBN API_SysLoadValueEX+7
        LDY     np:PRMBN API_SysLoadValueEX+7
        
        ;destination
        ;SETW    RFDlAdrl,RFDlAdrh,np:PRMBN API_SysLoadValueEX+4,np:PRMBN API_SysLoadValueEX+5
        LDA     np:PRMBN API_SysLoadValueEX+4
        LDX     np:PRMBN API_SysLoadValueEX+5
        
        JSR     RdMcuCodeFromFlash
        
        plp
        plx                     
        rts     
        ENDMOD                                                                                                                           

;***************************************************************************
;* Func:        API_SysWriteValue
;* Input:       
;* Output:      
;*
;* Description: 
;*
;***************************************************************************
        ;extern void API_SysWriteValue(uint16 RamAdr, uint8 ValueOffset, uint8 Value);
        MODULE  API_SysWriteValue
        PUBLIC  API_SysWriteValue
        RSEG    APP
        DEFFN   API_SysWriteValue(0,0,0,0,32768,0,4,0)
API_SysWriteValue:
        .EXTERN  ?DP0_L00
        LDA     zp:?DP0_L00+1
        PHA
        LDA     zp:?DP0_L00
        PHA
        
        LDA     np:PRMBN API_SysWriteValue+0
        STA     zp:?DP0_L00
        LDA     np:PRMBN API_SysWriteValue+1
        STA     zp:?DP0_L00+1
        
        LDY     np:PRMBN API_SysWriteValue+2
        LDA     np:PRMBN API_SysWriteValue+3
        STA     (zp:?DP0_L00),Y
        
        
        PLA
        STA     zp:?DP0_L00
        PLA
        STA     zp:?DP0_L00+1
        
        rts





;       phx
;
;       ldx     np:PRMBN API_SysWriteValue+3    
;       lda     np:PRMBN API_SysWriteValue+2
;       sta     np:PRMBN API_SysWriteValue+0,x
;               
;       plx
;       rts
        ENDMOD

;***************************************************************************
;* Func:        API_SysReadValue
;* Input:       
;* Output:      
;*
;* Description: 
;*
;***************************************************************************
        ;extern uint8 API_SysReadValue(uint16 RamAdr, uint8 ValueOffset);
        MODULE  API_SysReadValue
        PUBLIC  API_SysReadValue
        RSEG    APP
        DEFFN   API_SysReadValue(0,0,0,0,32768,0,3,0)
API_SysReadValue:
        .EXTERN  ?DP0_L00
        
        LDA     zp:?DP0_L00+1
        PHA
        LDA     zp:?DP0_L00
        PHA
        
        LDA     np:PRMBN API_SysReadValue+0
        STA     zp:?DP0_L00
        LDA     np:PRMBN API_SysReadValue+1
        STA     zp:?DP0_L00+1
        
        LDY     np:PRMBN API_SysReadValue+2
        
        LDA     (zp:?DP0_L00),Y
        STA     np:PRMBN API_SysReadValue+2     ;save value into np:PRMBN API_SysReadValue+2    
        
        
        PLA
        STA     zp:?DP0_L00
        PLA
        STA     zp:?DP0_L00+1
        
        LDA     np:PRMBN API_SysReadValue+2
        rts
        
        ENDMOD

;***************************************************************************
;* Func:        API_SysWriteValue2B
;* Input:       
;* Output:      
;*
;* Description: 
;*
;***************************************************************************
        ;extern void API_SysWriteValue2B(uint16 RamAdr, uint8 ValueOffset, uint16 Value);
        MODULE  API_SysWriteValue2B
        PUBLIC  API_SysWriteValue2B
        RSEG    APP
        DEFFN   API_SysWriteValue2B(0,0,0,0,32768,0,5,0)
API_SysWriteValue2B:
        .EXTERN  ?DP0_L00
        LDA     zp:?DP0_L00+1
        PHA
        LDA     zp:?DP0_L00
        PHA
        
        LDA     np:PRMBN API_SysWriteValue2B+0
        STA     zp:?DP0_L00
        LDA     np:PRMBN API_SysWriteValue2B+1
        STA     zp:?DP0_L00+1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -