purebasic.info

PureBasic forum
Текущее время: Пт окт 19, 2018 8:31 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Пт дек 21, 2012 6:06 pm 
Не в сети
доцент

Зарегистрирован: Вт дек 11, 2012 9:14 pm
Сообщений: 45
Благодарил (а): 19 раз.
Поблагодарили: 1 раз.
Пункты репутации: 0
Всем привет.

Может кому-то понадобится. Програмка конвертирует дампы контроллеров motorolla 912 и 9s12 с размером флеша 128 КБ (256 и 512 КБ не поддерживаются) считанные программатором Xprog-m или ELT (может еще какие-то) в нормальный формат для программаторов, например, Orange-5 или Omega. Конвертирует в обе стороны Xprog-Orange и Orange-Xprog.

Это моя первая программа(мка) написанная благодаря ветеранам этого форума. Тема здесь Замена куска файла
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 file$ = OpenFileRequester("Выбор файла","","Bin (.bin)|*.bin|Text (.txt)|*.txt|All files (*.*)|*.*",0) 
 
  ; Открываем файл-источник на чтение
  If file$
        If OpenFile(1, file$)
          length.l = Lof(1)  
             *MemoryID = AllocateMemory(length.l) ; Выделяем необходимую память
      If *MemoryID
        bytes0 = ReadData(1, *MemoryID, length.l)  ;Считываем размер файла  
        Filename$ = GetFilePart(file$)
        If bytes0 = 2097152
          FileCreated$ = Left(Filename$, FindString(Filename$, ".", 1) - 1) + "_Orange.bin"
            CreateFile(0, FileCreated$)  ;Если размер файла = 2МБ, создаем файл _Orange.bin
              CloseFile(1)
              CloseFile(0)
        Else
          FileCreated$ = Left(Filename$, FindString(Filename$, ".", 1) - 1) + "_Xprog.bin"
          CreateFile(0, FileCreated$) ;Если размер файла < 2МБ, создаем файл _Xprog.bin
         
          #Size=2*1024*1024  ; Размер пустышки заполненной FF
         
              *MemFF = AllocateMemory(#Size)
                If *MemFF
                 FillMemory(*MemFF, #Size, $FF, #PB_Byte)    
                 OpenFile(0, FileCreated$) ; Открываем пустой файл
                 WriteData(0, *MemFF, #Size); Записываем сгенерированные данные.  
                 FreeMemory(*MemFF)
                     CloseFile(1)
                     CloseFile(0)
            EndIf  
          EndIf
        EndIf
      EndIf
    EndIf
         
Procedure WorkBin(TargetFile.s, SourceFile.s, fseek.l, PartWrite.l)  
     If OpenFile(1, SourceFile) And OpenFile(0, TargetFile)        
     *Mem = AllocateMemory(16384)          
      If *Mem
       FileSeek(1, fseek)    ;Читаем с адреса $8000 офсета
       FileSeek(0, PartWrite)     ; Записываем считанное
        bytes = ReadData(1, *Mem, MemorySize(*Mem) )
        wBytes = WriteData(0, *Mem, bytes)     ; пишем
       
        FreeMemory(*mem)
        CloseFile(0)
        CloseFile(1)
      EndIf  
 EndIf    
EndProcedure
 
If bytes0 = 2097152     ; Будем записывать в стандартный размер файла 128 КБ
  Bite_read.l = $8000
  Bite_Write.l = $0
While A<8
  WorkBin(FileCreated$, file$, Bite_read, Bite_Write)    
    Bite_read+$10000
    Bite_Write+$4000
    A+1  
Wend
Else                    ; Будем записывать в уродливый размер файла  2МБ
     Bite_read.l = $0
     Bite_Write.l = $8000
 While A<8
   WorkBin(FileCreated$, file$, Bite_read, Bite_Write)
    Bite_read+$4000
    Bite_Write+$10000
    A+1
Wend
EndIf
End



Вложения:
Комментарий к файлу: Dump converter
Orange_to_Xprog.zip [6.21 KiB]
Скачиваний: 274
Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB