📄 mp3.lst
字号:
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 + -