Hi,
I started to disassembling ClonePI software. I'm trying to obtain C source code from hex file. Manually converting C code from assembly listing is a slow process. May be in the forum we can do it more easily together. Any help is appreciated.
Original hex file is ClonePI-18.hex, downloaded from www.fandy.front.ru/CPI_PRG_181_18.zip
I'm using Ida Pro V5.1, MPLAB IDE V8.0, HI-TECH PICC-18 V8.30
Here is the first part of C conversion
I started to disassembling ClonePI software. I'm trying to obtain C source code from hex file. Manually converting C code from assembly listing is a slow process. May be in the forum we can do it more easily together. Any help is appreciated.
Original hex file is ClonePI-18.hex, downloaded from www.fandy.front.ru/CPI_PRG_181_18.zip
I'm using Ida Pro V5.1, MPLAB IDE V8.0, HI-TECH PICC-18 V8.30
Here is the first part of C conversion
Code:
#include <hitech.h>
#include <pic18.h>
#include <stdio.h>
//-----------------------------------
#define ADC_CS RA3
#define LCD_RS RC4
#define LCD_EN RC5
#define LCD_DATA PORTB
//------ LCD Module commands --------
#define DISP_ON 0x0C
#define CLR_DISP 0x01
#define ENTRY_INC 0x06
#define LINE1 0x80
#define LINE2 0xC0
//-----------------------------------
void InitLCD(void);
void EepromWait(void);
void SendINS(BYTE c);
BYTE Barrier; //5F2
BYTE Volume; //5F3
void main(void) {
IPEN = 0;
INTCON = 0;
INTCON3 = 0;
PIE1 = 0;
PIE2 = 0;
PIR1 = 0;
PIR2 = 0;
ADCON1 = 7;
/*
0A9C main:
0A9C nop
0A9E bcf rcon, 7, ACCESS
0AA0 clrf intcon, ACCESS
0AA2 clrf intcon3, ACCESS
0AA4 clrf pie1, ACCESS
0AA6 clrf pie2, ACCESS
0AA8 clrf pir1, ACCESS
0AAA clrf pir2, ACCESS
0AAC movlw 7
0AAE movwf adcon1, ACCESS
*/
PORTA = 0b00101000;
PORTB = 0b00000000;
PORTC = 0b00000100;
TRISA = 0b11010011;
TRISB = 0b11110000;
TRISC = 0b11000000;
RBPU = 0;
/*
0AB0 movlw 28
0AB2 movwf porta, ACCESS
0AB4 clrf portb, ACCESS
0AB6 movlw 4
0AB8 movwf portc, ACCESS
0ABA movlw 0D3
0ABC movwf trisa, ACCESS
0ABE movlw 0F0
0AC0 movwf trisb, ACCESS
0AC2 movlw 0C0
0AC4 movwf trisc, ACCESS
0AC6 bcf intcon2, 7, ACCESS
*/
InitLCD();
printf(" Clone PI ");
SendINS(LINE2);
printf(" ver. 1.8.1a ");
/*
0AC8 call InitLCD, 0
0ACC movlb 1
06EA aClonePi data " Clone PI "<0>
0ACE movlw 0EA
0AD0 movwf byte_DATA_131, BANKED
0AD2 movlw 6
0AD4 movwf byte_DATA_132, BANKED
0AD6 call printf, 0
0ADA movlw 0C0
0ADC call SendINS, 0
0AE0 movlb 1
06C8 aVer_1_8_1a data " ver. 1.8.1a "<0>
0AE2 movlw 0C8
0AE4 movwf byte_DATA_131, BANKED
0AE6 movlw 6
0AE8 movwf byte_DATA_132, BANKED
0AEA call printf, 0
*/
EepromWait();
Volume = EEPROM_READ(0);
/*
0AEE call EepromWait, 0
0AF2 clrf eeadr, ACCESS
0AF4 btfss intcon, 7, ACCESS
0AF6 bra loc_MEM_AFC
0AF8 bsf STATUS, 0, ACCESS
0AFA bra loc_MEM_AFE
0AFC loc_MEM_AFC:
0AFC bcf STATUS, 0, ACCESS
0AFE loc_MEM_AFE:
0AFE bcf intcon, 7, ACCESS
0B00 movlw 3F
0B02 andwf EECON1, f, ACCESS
0B04 bsf EECON1, 0, ACCESS
0B06 movf eedata, w, ACCESS
0B08 movwf eeadr, ACCESS
0B0A bcf intcon, 7, ACCESS
0B0C btfsc STATUS, 0, ACCESS
0B0E bsf intcon, 7, ACCESS
0B10 movff eeadr, Volume
*/
if(Volume >= 8)
Volume = 5;
/*
0B14 movlw 7
0B16 movlb 5
0B18 cpfsgt Volume, BANKED
0B1A bra loc_MEM_B22
0B1C movlw 5
0B1E movff wreg, Volume
0B22 loc_MEM_B22:
*/
EepromWait();
Barrier = EEPROM_READ(1);
if( (Barrier > 16) || (Barrier < 1) )
Barrier = 4;
/*
0B22 call EepromWait, 0
0B26 movlw 1
0B28 movwf eeadr, ACCESS
0B2A btfss intcon, 7, ACCESS
0B2C bra loc_MEM_B32
0B2E bsf STATUS, 0, ACCESS
0B30 bra loc_MEM_B34
0B32 loc_MEM_B32:
0B32 bcf STATUS, 0, ACCESS
0B34 loc_MEM_B34:
0B34 bcf intcon, 7, ACCESS
0B36 movlw 3F
0B38 andwf EECON1, f, ACCESS
0B3A bsf EECON1, 0, ACCESS
0B3C movf eedata, w, ACCESS
0B3E movwf eeadr, ACCESS
0B40 bcf intcon, 7, ACCESS
0B42 btfsc STATUS, 0, ACCESS
0B44 bsf intcon, 7, ACCESS
0B46 movff eeadr, Barrier
0B4A movlw 10
0B4C movlb 5
0B4E cpfsgt Barrier, BANKED
0B50 bra loc_MEM_B54
0B52 bra loc_MEM_B5C
0B54 loc_MEM_B54:
0B54 movlw 1
0B56 movlb 5
0B58 cpfslt Barrier, BANKED
0B5A bra loc_MEM_B62
0B5C loc_MEM_B5C:
0B5C movlw 4
0B5E movff wreg, Barrier
0B62 loc_MEM_B62:
*/
}


Comment