Page 3 of 5

Re: life2

Posted: Fri Nov 06, 2020 9:56 pm
by IgorA
maxcodehack wrote:Лучше конечно не самому писать, а добавить в официальные обертки
Я об этом и говорил, ведь файл kos_func.inc и есть как официальная обертка. Просто нужно продумать правильные функции по возможности с разными параметрами что-бы было универсально и подходило для многих задач.
qlpxcllll
А что вот это значит?
Одна и та же функция благодаря перегрузке может принимать разные параметры.
Поэтому bcc32 так кодирует параметры входящие в функцию, что-бы функции с одинаковыми именами но разными параметрами отличались друг от друга.
l - это long int, pxc - это const char*, q - не знаю, возможно начало параметров.

Re: life2

Posted: Fri Nov 06, 2020 10:18 pm
by maxcodehack
А bat'ник так и не заработал? А если полный путь, а не относительный подставить?

Re: life2

Posted: Fri Nov 06, 2020 10:34 pm
by maxcodehack
Надо бы убрать строку, так как она не рисуется все равно, а добавить задание цвета. И тогда можно залить.
Сделал. Только обработки кнопок пока нет. Поэтому при нажатии на нее все закрывается. Но залью все равно

Re: life2

Posted: Fri Nov 06, 2020 11:25 pm
by IgorA
Вычислил где проблема, под виндовсом создается не правильный файл kos_make.inc, все пишется в одну строку :

Code: Select all

STACKSIZE equ 102400 \n HEAPSIZE equ 102400 \n ....................
потому файлы не подключаются и компиляция в fasm не идет.
Пробовал сделать так:

Code: Select all

echo STACKSIZE equ 102400> kos_make.inc
echo HEAPSIZE equ 102400> kos_make.inc
echo include "..\..\..\proc32.inc"> kos_make.inc
echo include "..\..\..\bcc32\include\kos_start.inc"> kos_make.inc
echo include "..\..\..\bcc32\include\kos_func.inc"> kos_make.inc
echo include "..\..\..\bcc32\include\kos_heap.inc"> kos_make.inc
и в файле остается последняя строка :cry:
maxcodehack wrote:Надо бы убрать строку, так как она не рисуется все равно, а добавить задание цвета.
Это про "Button 1"? Если да, то я просто не успел ее доделать. Там вобще можно еще оптимизировать функцию убрать 2 лишних поразрядных сдвига...

Re: life2

Posted: Sat Nov 07, 2020 10:13 am
by maxcodehack
Остается одна строка потому что надо вместо > использовать >>
А вообще не знаю, возможно ли это в batch, но както сверху завести переменную путь, и потом везде ее имя подставить. А то чуть путь изменится, и уже все, надо везде исправлять
Вот у меня в мейкфайле так сделано
А вообще компилятор староват, вроде же он до сихпор развивается в embarcadero. Только конечно получить его сложно, да и не факт что заработают t2fasm'ы

Re: life2

Posted: Mon Nov 09, 2020 12:34 pm
by IgorA
rev 8165
Обновил пример window.cpp вместе с подключаемыми файлами
- подключение файла "proc32.inc" перенесено в файл "kos_start.inc"
- добавлен файл "KOSfuncs.inc" с константами функций
- убрал макросы usedef, define, enddef, newdef, nextdef которые были нужны для компиляции непропатченым bcc32, сейчас с пропатченым bcc32 они не используются
- в bat файле поставил удаление kos_make.inc в случае если существует window.kex
- добавлена обертка на системную функцию SF_SET_CAPTION (71)
- функци KolibriOnClose, KolibriOnIdle, KolibriOnSize, KolibriOnKeyPress, KolibriOnMouse стали не обязательными для компиляции приложения (Т.е. можно их не подключать и window.cpp будет работать без них, если они нужны то можно подключить и window.cpp будет с ними работать. Раньше обязательно нужно было их подключать иначе программа не компилировалась)
- добавлены функции KolibriOnButton, SetWindowCaption

Re: life2

Posted: Mon Nov 09, 2020 12:49 pm
by maxcodehack
KolibriOnSize - это я так понимаю был ресайз окна?
KolibriOnIdle - это я не знаю.
KolibriOnClose - это уже не нужно
KolibriOnKeyPress, KolibriOnMouse - а это нужно, ведь работать с клавиатурой и с мышью надо

Re: life2

Posted: Mon Nov 09, 2020 1:18 pm
by maxcodehack
Чуть изменил и добавил шаблон

Re: life2

Posted: Mon Nov 09, 2020 1:29 pm
by IgorA
maxcodehack wrote:KolibriOnIdle - это я не знаю
тоже не знаю что это
maxcodehack wrote:KolibriOnClose - это уже не нужно
Это я так понимаю функция, которая должна сообщить программе можно ли закрывать окно. Например есть какой нибудь редактор, и в нем пользователь открыл и изменил документ. Потом не сохраняя нажал на кнопку выхода из программы. По идее KolibriOnClose должно спросить пользователя сохранить ли изменения в документе. Если пользователь согласился сохранить то KolibriOnClose вернуло false - нельзя закрывать окно. Если не согласился сохранять то KolibriOnClose вернуло true - можно закрывать.

rev 8169
исправил

Code: Select all

Set NAME=hello
на

Code: Select all

Set NAME=window

Re: life2

Posted: Mon Nov 09, 2020 5:36 pm
by maxcodehack
Еще надо в переменные пути к инклудам чтоб в одном месте

Re: life2

Posted: Tue Nov 10, 2020 3:39 pm
by IgorA
maxcodehack wrote:Но теперь вроде все заменено.
Может залить?
залил обновленный код life2 в rev 8170 и еще немного подправил константы, подчистил код.

Долго не мог разобраться как в life2 была сделана работа с памятью а когда понят то ... :shock:
Оказывается при запуске программы она просит много памяти у операционной системы. Потом все функции выделения, удаления, перераспределения памяти занимаются просто выдачей указателей на определенные участки той памяти, которая была выдана приложению при запуске программы. Там используются какие-то страшные алгоритмы с хеш функциями, бинарными деревьями и еще не понятно чем ... Т.е. когда создавалась программа то функций 68.11, 68.12, 68.13 и 68.20 еще не было. И автор life2 сделал свой менеджер памяти внутри программы, который не может выделить более того что было дано программе при запуске системы...
Короче говоря желательно все переделать на вызов системных функций 68.11, 68.12, 68.13 и 68.20.

Re: life2

Posted: Tue Nov 10, 2020 5:22 pm
by Evgeniy
IgorA wrote: Оказывается при запуске программы она просит много памяти у операционной системы. Потом все функции выделения, удаления, перераспределения памяти занимаются просто выдачей указателей на определенные участки той памяти, которая была выдана приложению при запуске программы. Там используются какие-то страшные алгоритмы с хеш функциями, бинарными деревьями и еще не понятно чем ...
Что-то как-то много наворотов для обычной life... :D

Re: life2

Posted: Tue Nov 10, 2020 5:40 pm
by maxcodehack
А совместима ли лайф2 с инклудами из programs/bcc32/include?

Re: life2

Posted: Fri Nov 13, 2020 2:32 pm
by IgorA
maxcodehack wrote:А совместима ли лайф2 с инклудами из programs/bcc32/include?
пока не совместима

rev 8184
Обновил life2, теперь память выделяется через ф. 68. Компиляция теперь может идти без ручного переноса строк с equ на верх файла, потому что строки с equ, которые были раньше пропали :o . Но при компиляции больших программ думаю такое еще будет возможно, что-бы переносить вручную строки с equ. Программа в сжатом виде стала меньше на 3кб. Отдельный пример по работе с файлом на bcc пока еще не готов.

Re: life2

Posted: Mon Nov 16, 2020 11:19 am
by IgorA
rev 8190 добавлен пример file_open
rev 8196 исправлена функция Alloc, оптимизация кода
rev 8199 исправлена ошибка в life2 (сделанная в rev 8184) оптимизация кода, оптимизация кода life3