Что я хочу увидеть в Колибри завтра....

Drivers for sound cards
  • Alex2003 wrote:Мне бы Pascal Turbo и программу для перевода exe в kex
    http://board.kolibrios.org/viewtopic.php?p=71523#p71523
  • Было бы интересно добавить MUD-клиент. Онлайн игра, а ресурсов надо минимальное количество..
  • Хотелось бы копиляцию колибри на арм процессоры, чтобы можно было бы сделать портативный комп на pi zero, без использования виртуальных машин, привлекло бы много людей в коммьюнити
    Я кстати подозреваю, что я просто тупой и этому есть припятствие? иначе бы уже давно было бы??
    и кстати если сделать эмуляторы всяких nes то получится идеальная OS для портативных самоделок, а это = привлечение людей, опять таки
    Я думал у себя на канале такое собрать, но увидел, что колибри сделана только для x86 =(
  • Ты вначале задаешь вопрос и потом сам на него отвечаешь.

    https://vk.com/topic-48924138_33355952
    Из хаоса в космос
  • Soul
    У нас есть два эмулятора nes (не знаю какого качества, но есть) это FCE Ultra (файл fceu) и Super NES (zsnes). Найти можно в iso образе, директория /cd2/1/kolibrios/emul
    К сожалению, переписать на ARM нельзя, получится совсем другая ОС.
  • обновление фасма до 1.73.04
    свн у меня нет (или правильнее у меня WinXP64SP2 ее свн клиент не коннектится с свн колибри сервера)
    попробовал собрать колибри версию из исходников сам (модифицировав оф. фасм пакет) - подгружаемые библиотеки подгрузились, все рисуется, кнопочки отрабатываются, но (чего-то) все-равно нахимичил - ругается что не указан входной файл при попытке компиляции. (конечно целью было слегка похимичить - цикл обработки сообщений через джамптейбл и т.д., хотел конечно еще наоптимизировать - но тот факт, что все не работает как надо застопорил процесс до выяснения ошибки).
    во вложении и исходники и скомпилированный фасм, и кейпакнутая его версия (все также 43кб).
    https://yadi.sk/d/sP161ACiFu4RiQ
    тестил через разшаренный HDD между рабочей ОС и виртуальной колибри (это старое нововведение удобнее, чем когда-то давно когда приходилось расшаривать флешку).
    Attachments
    1.73.04.JPG
    1.73.04.JPG (13.41 KiB)
    Viewed 16632 times
  • Привет, ProMiNick

    Ты уже отрефакторил исходник, это конечно хорошо, но теперь через DIFF сложно понять где что-то потеряно. Как писал Д.Кнут "Преждевременная оптимизация — корень всех зол."
    Теперь после нажатия на "COMPILE", стоит вывести на дебаг полную сформированую строку пути к файлу. Возможно, где-то потерялась конкатенация строк. Или если не она, то проверить параметры чтения файла исходника. Корректно ли заполняется структура для функции 70.

    Кстати, ты пробовал https://sourceforge.net/projects/tortoi ... plication/ ?
    У меня именно эта версия работает под WINXP, правда х32.
    Из хаоса в космос
  • Здравствуй, Leency.

    мой способ дал бы самую свежую версию фасм для колибри - только мне. Неплохо если стандартные файлы (авторства Томаша обновятся) и добавятся в релиз для всех.
    Рекомендованную версию свн попробую. Спасибо.

    [edited]Попробовал - то же самое: тортоисепрок запустился - прошли часы, он так и не подтянул файлы.

    [edited2]внутренняя структура в точности как у вашего свна (только в той части которая нужна для fasm) (...и все работает - fasm 1.73.04)
    посчитаем что это бранч:https://yadi.sk/d/e-ejtYnHTKLc_w ссылка обновлена [edited3]07.12.18 - сам доволен.
    по ссылке исходник рабочего fasm 1.73.04, правки от свн версии не считая обновления логики самого ассемблера:
    1. большинство mcall`ов через соответствующие им символические имена.
    2. цикл обработки сообщений (и обработка нажатий кнопок в нем, оба) реализован через jmptable - в разы быстрее чем проверять каждое значение последовательно. пара dword`ов пожертвованы в читабельность - нулевые члены jmptable`ов излишни.
    3. использованы invoke из proc32.inc.
    4. переделан macros.inc, слегка - добавлен синтаксический сахар, оптимизацию mov через push/pop убрал - выигрывать 2 байта ценой 2 обращений в стек не мое...
    часть макросов из macros.inc вынул в другие файлы, их оставил, но не использую.
    5. файл import32.inc, его макросы теперь полностью копируют функционал и возможности аналогичных для windows, однако создают структуры для колибри.
    [edited3]6. логика импорта полностью переработана!!!! load_lib.mac - удален к чертям - больше нет никакого (ни одного) макроса загрузки библиотек импорта. Теперь для импорта используются 7 функций из файла importhelperprocs.inc, две из которых названы аналогично именам в windows (и естественно они доступны для вызова в любом месте программы еще до загрузки импортируемых функций): LoadLibrary и GetProcAddress - они принимают такое же количество тех же параметров, что и в windows, только параметры эти реализованы не через стек, а через регистры. Однако работа еще есть - мои функции реализуют только случай где point_dir_name =0 в макросах load_lib.mac (можно пример когда надо в point_dir_name указать какой-то путь?). Ну и при импортировании функции lib_init мои функции не запускают ее автоматически - запуск после на совести пользователя - может и нужно автоматизировать запуск - хз.

    Свою хотелку с меню (от 2016 года) помню, доиграюсь с fasm (и макросами на свой вкус), поиграюсь с ее реализацией.
    Last edited by ProMiNick on Fri Dec 07, 2018 3:57 am, edited 3 times in total.
  • Хотелось бы перенести в Колибри одну программу из Windows. Эта программа использует для своей работы следующие функции:
    Spoiler:

    Code: Select all

    ; Imports from KERNEL32.dll
    CreateFileA
    GetModuleHandleA
    DeleteFileA
    EnterCriticalSection
    CloseHandle
    FileTimeToDosDateTime
    FileTimeToLocalFileTime
    FindClose
    FindFirstFileA
    FindNextFileA
    ExitProcess
    CreateProcessA
    GetCommandLineA
    GetCurrentDirectoryA
    GetCurrentThreadId
    GetEnvironmentStrings
    GetExitCodeProcess
    GetFileAttributesA
    GetFileType
    GetFullPathNameA
    GetLastError
    GetLocalTime
    GetLogicalDrives
    FreeLibrary
    GetACP
    GetProcAddress
    GetStartupInfoA
    GetStdHandle
    GetSystemInfo
    GetVersion
    GetVolumeInformationA
    GlobalMemoryStatus
    InitializeCriticalSection
    IsDBCSLeadByteEx
    LeaveCriticalSection
    LoadLibraryA
    MultiByteToWideChar
    RaiseException
    ReadFile
    RtlUnwind
    SetConsoleCtrlHandler
    SetFilePointer
    SetHandleCount
    UnhandledExceptionFilter
    VirtualAlloc
    VirtualFree
    VirtualProtect
    WaitForSingleObject
    WriteFile
    GetModuleFileNameA
    
    ; Imports from USER32.dll
    MessageBoxA
    EnumThreadWindows
    Есть функции по работе с файловой системой, работа с памятью, сообщения MessageBox подобное точно в Колибри есть, но много функций для меня не понятного назначения. Кто может занимался подобными переносами или портированием на сколько это может быть возможно или не возможно?
  • LoadLibraryA намекает на то, что этот список может оказаться далеко не полным.
  • tsdima wrote:LoadLibraryA намекает на то, что этот список может оказаться далеко не полным.
    Посмотрел в коде, эта функция вызывается всего 1 раз. Она требует какую-то 32CPINTF.DLL, о которой ничего не известно. Пробовал найти в google информации нет, пробовал искать на системном диске C: тоже не находит. Но несмотря на эти странности программа работает, думаю что эта DLL может быть нужна в каких-то редких случаях и без нее можно обойтись.
  • Т.е. исходного кода нет, и хочется сделать аналог wine только для этой конкретной программы?
  • Да исходников нет, последняя версия программы была выпущена в 97м году. Зато есть дизасемблированный код, который уже компилируется в fasm-е и работает под windows. Путем експериментов выяснил что программа работает и без использования LoadLibrary. На данный момент удалось в коде опознать несколько функций работы с памятью и строками (memcру meмmove ...)
  • Разбил список функций на группы:
    Spoiler:Работа с файлами

    CreateFileA
    DeleteFileA
    CloseHandle
    SetFilePointer
    ReadFile
    WriteFile
    GetFileType

    Чтение каталога

    FindFirstFileA
    FindNextFileA
    FindClose
    GetFileAttributesA
    GetFullPathNameA

    Процессы

    CreateProcessA
    ExitProcess
    GetExitCodeProcess

    Информация о своём процессе

    GetCommandLineA
    GetModuleHandleA
    GetModuleFileNameA
    GetCurrentDirectoryA
    GetCurrentThreadId
    GetEnvironmentStrings
    GetStdHandle
    GetStartupInfoA
    EnumThreadWindows
    SetHandleCount
    SetConsoleCtrlHandler

    Работа с датами/временем

    FileTimeToDosDateTime
    FileTimeToLocalFileTime
    GetLocalTime

    Работа с DLL

    LoadLibraryA
    GetProcAddress
    FreeLibrary

    Информация о системе

    GetVersion
    GetSystemInfo
    GetLogicalDrives
    GetVolumeInformationA
    GlobalMemoryStatus

    Работа с объектами синхронизации

    InitializeCriticalSection
    EnterCriticalSection
    LeaveCriticalSection
    WaitForSingleObject

    Обработка ошибок

    GetLastError
    RtlUnwind
    RaiseException
    UnhandledExceptionFilter

    Работа с памятью

    VirtualAlloc
    VirtualFree
    VirtualProtect

    Работа с символами (Unicode)

    GetACP
    IsDBCSLeadByteEx
    MultiByteToWideChar

    Диалоговое сообщение

    MessageBoxA
    Многие фукции принимают в качестве параметра указатель на структуру, содержимое лучше смотреть в MSDN.
    Спрашивай, что не понятно, постараюсь разъяснить.
  • Who is online

    Users browsing this forum: No registered users and 5 guests