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

📄 mp3.lst

📁 Build ourself a MP3 Player
💻 LST
📖 第 1 页 / 共 5 页
字号:
2AAA:  MOVWF  FAD
....................    }  
2AAC:  INCF   x9E,F
2AAE:  GOTO   2A8C
....................    for(c = 0; c < 0xFF; c++) {  
2AB2:  CLRF   x9E
2AB4:  INCFSZ x9E,W
2AB6:  GOTO   2ABE
2ABA:  GOTO   2ADA
....................       putc(cf_ReadByte());  
2ABE:  MOVLB  0
2AC0:  CALL   18FA
2AC4:  MOVFF  01,29F
2AC8:  MOVLB  2
2ACA:  MOVF   01,W
2ACC:  BTFSS  F9E.4
2ACE:  GOTO   2ACC
2AD2:  MOVWF  FAD
....................    }  
2AD4:  INCF   x9E,F
2AD6:  GOTO   2AB4
....................    putc(cf_readByte());  
2ADA:  MOVLB  0
2ADC:  CALL   18FA
2AE0:  MOVFF  01,29F
2AE4:  MOVLB  2
2AE6:  MOVF   01,W
2AE8:  BTFSS  F9E.4
2AEA:  GOTO   2AE8
2AEE:  MOVWF  FAD
....................    putc(cf_readByte());  
2AF0:  MOVLB  0
2AF2:  CALL   18FA
2AF6:  MOVFF  01,29F
2AFA:  MOVLB  2
2AFC:  MOVF   01,W
2AFE:  BTFSS  F9E.4
2B00:  GOTO   2AFE
2B04:  MOVWF  FAD
2B06:  MOVLB  0
2B08:  GOTO   4CF6 (RETURN)
.................... }  
....................   
.................... /********************************************/  
.................... // write 1 byte into current CF port  
.................... void CF_WriteByte(byte data)  
.................... {  
....................    waitforready();  
*
197C:  BTFSS  F80.3
197E:  GOTO   197C
1982:  GOTO   1986
....................    // set data  
....................    set_tris_d(TRIS_D_OUTPUT);  
1986:  MOVLW  00
1988:  MOVWF  F95
....................    output_d(data);  
198A:  MOVFF  2C4,F8C
....................    // Strobe write signal  
....................    output_low(CF_WE);  
198E:  BCF    F89.2
....................    nop;  
1990:  NOP   
....................    output_high(CF_WE);  
1992:  BSF    F89.2
....................    set_tris_d(TRIS_D_INPUT);  
1994:  MOVLW  FF
1996:  MOVWF  F95
1998:  RETLW  00
.................... }  
....................   
.................... // read 1 byte from current CF port  
.................... byte CF_ReadByte()  
.................... {  
....................    byte data;  
....................    waitforready();  
*
18FA:  BTFSS  F80.3
18FC:  GOTO   18FA
1900:  GOTO   1904
....................    set_tris_d(TRIS_D_INPUT);  
1904:  MOVLW  FF
1906:  MOVWF  F95
....................    // strobe read signal and get data  
....................    waitforready();  
1908:  BTFSS  F80.3
190A:  GOTO   1908
190E:  GOTO   1912
....................    output_low(CF_OE);  
1912:  BCF    F89.1
....................    data = input_d();  
1914:  MOVFF  F83,2BD
....................    output_high(CF_OE);  
1918:  BSF    F89.1
....................    //	printf("read 0x%x ", data);  
....................    return data;  
191A:  MOVLB  2
191C:  MOVF   xBD,W
191E:  MOVWF  01
1920:  MOVLB  0
1922:  RETLW  00
.................... }  
....................   
.................... void CF_WriteInt16(int16 data) {  
....................    CF_WriteByte(data >> 8);  
....................    CF_WriteByte(data & 0xff);  
.................... }  
....................   
.................... int16 CF_ReadInt16(void) {  
....................    byte lo;  
....................    int16 ret;  
....................   
....................    lo = CF_ReadByte();  
*
1ADE:  CALL   18FA
1AE2:  MOVFF  01,2B8
....................    ret = CF_ReadByte();  
1AE6:  CALL   18FA
1AEA:  MOVLB  2
1AEC:  CLRF   xBA
1AEE:  MOVLB  0
1AF0:  MOVFF  01,2B9
....................    ret <<= 8;  
1AF4:  MOVFF  2B9,2BA
1AF8:  MOVLB  2
1AFA:  CLRF   xB9
....................    ret |= lo;  
1AFC:  MOVF   xB8,W
1AFE:  IORWF  xB9,F
....................    return ret;  
1B00:  MOVF   xB9,W
1B02:  MOVWF  01
1B04:  MOVF   xBA,W
1B06:  MOVWF  02
1B08:  MOVLB  0
1B0A:  RETLW  00
.................... }  
....................   
.................... void CF_WriteInt32(int32 data) {  
....................    CF_WriteByte(data >> 24);  
....................    CF_WriteByte(data >> 16);  
....................    CF_WriteByte(data >> 8);  
....................    CF_WriteByte(data);  
.................... }  
....................   
.................... int32 CF_ReadInt32(void) {  
....................    int16 lo;  
....................    int32 ret;  
....................    lo = CF_ReadInt16();  
*
2D42:  CALL   1ADE
2D46:  MOVFF  02,2B3
2D4A:  MOVFF  01,2B2
....................    ret = CF_ReadInt16();  
2D4E:  CALL   1ADE
2D52:  MOVLB  2
2D54:  CLRF   xB7
2D56:  CLRF   xB6
2D58:  MOVLB  0
2D5A:  MOVFF  02,2B5
2D5E:  MOVFF  01,2B4
....................    ret <<= 16;  
2D62:  MOVFF  2B5,2B7
2D66:  MOVFF  2B4,2B6
2D6A:  MOVLB  2
2D6C:  CLRF   xB4
2D6E:  CLRF   xB5
....................    ret |= lo;  
2D70:  MOVF   xB2,W
2D72:  IORWF  xB4,F
2D74:  MOVF   xB3,W
2D76:  IORWF  xB5,F
....................    return ret;  
2D78:  MOVLB  0
2D7A:  MOVFF  2B4,00
2D7E:  MOVFF  2B5,01
2D82:  MOVFF  2B6,02
2D86:  MOVFF  2B7,03
2D8A:  GOTO   2EEE (RETURN)
.................... }  
....................   
.................... // skip bytes from current sector buffer  
.................... void CF_ReadSkipBytes(int count)  
.................... {  
....................    //	printf("skipping %d bytes\n\r", count);  
....................    set_tris_d(TRIS_D_INPUT);  
*
1AA0:  MOVLW  FF
1AA2:  MOVWF  F95
....................    while (count > 0) {  
1AA4:  MOVLB  2
1AA6:  MOVF   xB5,F
1AA8:  BTFSC  FD8.2
1AAA:  GOTO   1AC8
....................       waitforready();  
1AAE:  BTFSS  F80.3
1AB0:  GOTO   1AAE
1AB4:  GOTO   1AB8
....................       output_low(CF_OE);  
1AB8:  BCF    F89.1
....................       nop;  
1ABA:  NOP   
....................       output_high(CF_OE);  
1ABC:  BSF    F89.1
....................       count--;  
1ABE:  DECF   xB5,F
....................    }  
1AC0:  MOVLB  0
1AC2:  GOTO   1AA4
1AC6:  MOVLB  2
1AC8:  MOVLB  0
1ACA:  RETLW  00
.................... }  
....................   
.................... void CF_ReadSkipInt16(byte count)  
.................... {  
....................    CF_ReadSkipBytes(count);  
1ACC:  MOVFF  2B4,2B5
1AD0:  CALL   1AA0
....................    CF_ReadSkipBytes(count);  
1AD4:  MOVFF  2B4,2B5
1AD8:  CALL   1AA0
1ADC:  RETLW  00
.................... }  
....................   
.................... /************************************************/  
.................... // begin writing or reading the CF_CurrSector  
....................   
.................... void CF_StartSectorRead() {      // uses CF_CurrSector  
....................    while (CF_isBusy() && (!CF_isReady())) {delay_us(1);}  
*
19AC:  CALL   1934
19B0:  MOVF   01,F
19B2:  BTFSC  FD8.2
19B4:  GOTO   19D2
19B8:  CALL   1958
19BC:  MOVF   01,F
19BE:  BTFSS  FD8.2
19C0:  GOTO   19D2
19C4:  NOP   
19C6:  NOP   
19C8:  NOP   
19CA:  NOP   
19CC:  NOP   
19CE:  GOTO   19AC
....................   
....................    //printf("Beginning read from sector 0x%8LX\n\r", CF_CurrSector);  
....................    CF_TaskFileWrite(REG_SECTORCOUNT, 1);  
19D2:  MOVLW  02
19D4:  MOVLB  2
19D6:  MOVWF  xC2
19D8:  MOVLW  01
19DA:  MOVWF  xC3
19DC:  MOVLB  0
19DE:  CALL   199A
....................    CF_TaskFileWrite(REG_SECTORNUM, CF_CurrSector);  
19E2:  MOVLW  03
19E4:  MOVLB  2
19E6:  MOVWF  xC2
19E8:  MOVLB  0
19EA:  MOVFF  218,2C3
19EE:  CALL   199A
....................    CF_TaskFileWrite(REG_CYLINDERLOW, CF_CurrSector >> 8);  
19F2:  MOVFF  219,2BA
19F6:  MOVFF  21A,2BB
19FA:  MOVFF  21B,2BC
19FE:  MOVLB  2
1A00:  CLRF   xBD
1A02:  MOVLW  04
1A04:  MOVWF  xC2
1A06:  MOVLB  0
1A08:  MOVFF  219,2C3
1A0C:  CALL   199A
....................    CF_TaskFileWrite(REG_CYLINDERHIGH, CF_CurrSector >> 16);  
1A10:  MOVFF  21A,2BA
1A14:  MOVFF  21B,2BB
1A18:  MOVLB  2
1A1A:  CLRF   xBC
1A1C:  CLRF   xBD
1A1E:  MOVLW  05
1A20:  MOVWF  xC2
1A22:  MOVLB  0
1A24:  MOVFF  21A,2C3
1A28:  CALL   199A
....................    CF_TaskFileWrite(REG_HEAD, 0xE0 | ((CF_CurrSector >> 24) & 0x0F));  
1A2C:  MOVFF  21B,2BA
1A30:  MOVLB  2
1A32:  CLRF   xBB
1A34:  CLRF   xBC
1A36:  CLRF   xBD
1A38:  MOVF   x1B,W
1A3A:  ANDLW  0F
1A3C:  MOVWF  00
1A3E:  MOVF   xBB,W
1A40:  ANDLW  00
1A42:  MOVWF  01
1A44:  MOVF   xBC,W
1A46:  ANDLW  00
1A48:  MOVWF  02
1A4A:  MOVF   xBD,W
1A4C:  ANDLW  00
1A4E:  MOVWF  03
1A50:  MOVF   00,W
1A52:  IORLW  E0
1A54:  MOVWF  xBE
1A56:  MOVF   01,W
1A58:  MOVWF  xBF
1A5A:  MOVF   02,W
1A5C:  MOVWF  xC0
1A5E:  MOVF   03,W
1A60:  MOVWF  xC1
1A62:  MOVLW  06
1A64:  MOVWF  xC2
1A66:  MOVLB  0
1A68:  MOVFF  2BE,2C3
1A6C:  CALL   199A
....................    CF_TaskFileWrite(REG_COMMAND, COMMAND_READSECTOR);  
1A70:  MOVLW  07
1A72:  MOVLB  2
1A74:  MOVWF  xC2
1A76:  MOVLW  20
1A78:  MOVWF  xC3
1A7A:  MOVLB  0
1A7C:  CALL   199A
....................   
....................    while ((CF_ReadByte()&0x88)!=0x08);      // check if valid??? 
1A80:  CALL   18FA
1A84:  MOVF   01,W
1A86:  ANDLW  88
1A88:  SUBLW  08
1A8A:  BTFSC  FD8.2
1A8C:  GOTO   1A94
1A90:  GOTO   1A80
....................   
....................    CF_SetAddr(0);  
1A94:  MOVLB  2
1A96:  CLRF   xC4
1A98:  MOVLB  0
1A9A:  CALL   17E8
1A9E:  RETLW  00
.................... }  
....................   
.................... void CF_StartSectorWrite() {      // uses CF_CurrSector  
....................    while (CF_isBusy() && (!CF_isReady())) {putc('.'); delay_us(1);}  
*
4088:  CALL   1934
408C:  MOVF   01,F
408E:  BTFSC  FD8.2
4090:  GOTO   40B8
4094:  CALL   1958
4098:  MOVF   01,F
409A:  BTFSS  FD8.2
409C:  GOTO   40B8
40A0:  MOVLW  2E
40A2:  BTFSS  F9E.4
40A4:  GOTO   40A2
40A8:  MOVWF  FAD
40AA:  NOP   
40AC:  NOP   
40AE:  NOP   
40B0:  NOP   
40B2:  NOP   
40B4:  GOTO   4088
....................   
....................    //printf("Beginning write to sector 0x%8LX\n\r", CF_CurrSector);  
....................    CF_TaskFileWrite(REG_SECTORCOUNT, 1);  
40B8:  MOVLW  02
40BA:  MOVLB  2
40BC:  MOVWF  xC2
40BE:  MOVLW  01
40C0:  MOVWF  xC3
40C2:  MOVLB  0
40C4:  CALL   199A
....................    CF_TaskFileWrite(REG_SECTORNUM, CF_CurrSector);  
40C8:  MOVLW  03
40CA:  MOVLB  2
40CC:  MOVWF  xC2
40CE:  MOVLB  0
40D0:  MOVFF  218,2C3
40D4:  CALL   199A
....................    CF_TaskFileWrite(REG_CYLINDERLOW, CF_CurrSector >> 8);  
40D8:  MOVFF  219,2B4
40DC:  MOVFF  21A,2B5
40E0:  MOVFF  21B,2B6
40E4:  MOVLB  2
40E6:  CLRF   xB7
40E8:  MOVLW  04
40EA:  MOVWF  xC2
40EC:  MOVLB  0
40EE:  MOVFF  219,2C3
40F2:  CALL   199A
....................    CF_TaskFileWrite(REG_CYLINDERHIGH,  CF_CurrSector >> 16);  
40F6:  MOVFF  21A,2B4
40FA:  MOVFF  21B,2B5
40FE:  MOVLB  2
4100:  CLRF   xB6
4102:  CLRF   xB7
4104:  MOVLW  05
4106:  MOVWF  xC2
4108:  MOVLB  0
410A:  MOVFF  21A,2C3
410E:  CALL   199A
....................    CF_TaskFileWrite(REG_HEAD, 0xE0 | (( CF_CurrSector >> 24) & 0x0F));  
4112:  MOVFF  21B,2B4

⌨️ 快捷键说明

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