programs/develop: Post-SVN tidy (part 1) (#419)
- Move source code from `trunk` into root directory for each program. - Update build files and ASM include paths. Add SPDX license header where appropriate. - Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden. (Work towards #75, point 3) Reviewed-on: KolibriOS/kolibrios#419 Co-authored-by: Andrew <dent.ace@gmail.com> Co-committed-by: Andrew <dent.ace@gmail.com>
This commit is contained in:
1 parent
33acd57c58
commit
0cd3b0c5b1
67 files changed
+1517
-1442
No files matched your search
+7
-7
@@ -72,7 +72,7 @@ img_files = {
|
||||
|
||||
-- For russian build, add russian-only files.
|
||||
if build_type == "ru_RU" then tup.append_table(img_files, {
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/rus/example.asm"},
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/rus/example.asm"},
|
||||
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy_ru"},
|
||||
{"GAMES/BASEKURS.KLA", build_type .. "/games/basekurs.kla"},
|
||||
{"File Managers/KFAR.INI", build_type .. "/File Managers/kfar.ini"},
|
||||
@@ -83,7 +83,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
|
||||
{"SETTINGS/SYSPANEL.INI", "ru_RU/settings/syspanel.ini"},
|
||||
}) elseif build_type == "en_US" then tup.append_table(img_files, {
|
||||
{"WELCOME.HTM", VAR_DATA .. "/" .. build_type .. "/welcome.htm.kpack"},
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"},
|
||||
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
|
||||
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
|
||||
{"GAMES/DESCENT", "common/games/descent"},
|
||||
@@ -92,7 +92,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
|
||||
{"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/mykey.ini"},
|
||||
{"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"},
|
||||
}) elseif build_type == "es_ES" then tup.append_table(img_files, {
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"},
|
||||
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
|
||||
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
|
||||
{"GAMES/DESCENT", "common/games/descent"},
|
||||
@@ -101,7 +101,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
|
||||
{"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/mykey.ini"},
|
||||
{"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"},
|
||||
}) elseif build_type == "it_IT" then tup.append_table(img_files, {
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"},
|
||||
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
|
||||
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
|
||||
{"GAMES/DESCENT", "common/games/descent"},
|
||||
@@ -110,7 +110,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
|
||||
{"SETTINGS/GAMES.INI", "common/settings/games.ini"},
|
||||
{"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"},
|
||||
}) else tup.append_table(img_files, {
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
|
||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"},
|
||||
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
|
||||
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
|
||||
{"GAMES/DESCENT", "common/games/descent"},
|
||||
@@ -483,11 +483,11 @@ tup.append_table(img_files, {
|
||||
{"DEVELOP/MTDBG", VAR_PROGS .. "/develop/mtdbg/mtdbg"},
|
||||
{"DEVELOP/MSTATE", VAR_PROGS .. "/develop/mstate/mstate"},
|
||||
{"DEVELOP/SCANCODE", VAR_PROGS .. "/develop/scancode/trunk/scancode"},
|
||||
{"DEVELOP/EXAMPLES/CIRCLE", VAR_PROGS .. "/develop/examples/circle/trunk/circle"},
|
||||
{"DEVELOP/EXAMPLES/CIRCLE", VAR_PROGS .. "/develop/examples/circle/circle"},
|
||||
{"DEVELOP/EXAMPLES/COLORREF", VAR_PROGS .. "/demos/colorref/colorref"},
|
||||
{"DEVELOP/EXAMPLES/CONGET", VAR_PROGS .. "/develop/libraries/console_coff/examples/test_gets"},
|
||||
{"DEVELOP/EXAMPLES/CSLIDE", VAR_PROGS .. "/demos/cslide/cslide"},
|
||||
{"DEVELOP/EXAMPLES/THREAD", VAR_PROGS .. "/develop/examples/thread/trunk/thread"},
|
||||
{"DEVELOP/EXAMPLES/THREAD", VAR_PROGS .. "/develop/examples/thread/thread"},
|
||||
{"File Managers/KFAR", VAR_PROGS .. "/fs/kfar/trunk/kfar"},
|
||||
{"File Managers/OPENDIAL", VAR_PROGS .. "/fs/opendial/opendial"},
|
||||
{"LOD", VAR_PROGS .. "/fs/lod/lod"},
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+131
-125
@@ -1,125 +1,131 @@
|
||||
;Оптимизированный компонент CheckBox (Исходный вариант от Maxxxx32)
|
||||
;Оптимизирован вывод строки, надписи для CheckBox'a + теперь при проверке не ;происходит подсчет кол-ва символов в строке
|
||||
;Оптимизация команд.
|
||||
;21.02.2007 модернизация и поддержка двух разных вариантов с использованием сис цветов и старой схемой
|
||||
;19.02.2007 общее улучшение кода, уменьшение размера и использование системных цветов для отображения checkbox
|
||||
;22.08.2006 произведена оптимизация команд, приняты во внимание замечания DIAMOND'а.
|
||||
;<Lrz> - Теплов Алексей www.lrz.land.ru
|
||||
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0x0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 0x1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd i_end ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd i_end ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0x0,0x0 ; указатель на строку с параметрами.
|
||||
; если после запуска неравно нулю, приложение было
|
||||
; запущено с параметрами из командной строки
|
||||
|
||||
; указатель на строку, в которую записан путь,
|
||||
; откуда запущено приложение
|
||||
;------------------
|
||||
include '..\..\..\..\macros.inc'
|
||||
include 'check.inc' ;включить файл check.inc
|
||||
; version_ch ;необходимый макрос для включения "старой" версии check_box
|
||||
version_ch1 ;необходимый макрос для включения new версии check_box1
|
||||
;Недопустимо включение двух макросво version_ch1 и version_ch - они взамоисключают друг- дргуга.
|
||||
use_check_box ;используя макросы внести процедуры для рисования чек бокса
|
||||
;Область кода
|
||||
align 4
|
||||
start: ;Точка входа в программу
|
||||
mov eax,48 ;получить системные цвета
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
|
||||
mov eax,40 ;установить маску для ожидаемых событий
|
||||
mov ebx,0x25 ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
|
||||
mcall
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
still: ;основной обработчик
|
||||
mov eax,10 ;Ожидать события
|
||||
mcall ;ожидать событие в течение 2 миллисекунд
|
||||
|
||||
cmp al,0x1 ;если изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x3 ;если нажата кнопка то перейти
|
||||
jz button
|
||||
mouse_check_boxes check_boxes,check_boxes_end ;проверка чек бокса
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
button:
|
||||
or eax,-1 ;в eax,-1 - 5 ,байтов у нас же только 3 выйти
|
||||
mcall ;далее выполняется выход из программы
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
draw_window: ;рисование окна приложения
|
||||
mov eax,12 ;в регистр внести значение = 12
|
||||
mov ebx,1 ;присвоить 1
|
||||
mcall
|
||||
|
||||
xor eax,eax ;обнулить eax
|
||||
mov ebx,50*65536+180 ;[координата по оси x]*65536 + [размер по оси x]
|
||||
mov ecx,30*65536+100 ;[координата по оси y]*65536 + [размер по оси y]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||||
or edx,0xb3000000
|
||||
mov edi,hed
|
||||
mcall ;нарисовать окно приложения
|
||||
|
||||
draw_check_boxes check_boxes,check_boxes_end ;рисование чекбоксов
|
||||
|
||||
mov eax,12 ;Функция 12 - начать/закончить перерисовку окна.
|
||||
mov ebx,2 ;Подфункция 2 - закончить перерисовку окна.
|
||||
mcall
|
||||
ret
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
;Формат данных чек бокса:
|
||||
;10 - координата чек бокса по х
|
||||
;30 - координата чек бокса по у
|
||||
;0 - цвет заливки внутри чек бокса
|
||||
;0xfffffff - цвет рамки чек бокса если нужно так используются ситемные цвета
|
||||
;0 - цвет текста надписи если нужно так используются ситемные цвета
|
||||
;ch_text.1 - указатель на начало строки
|
||||
;ch_text.e1-ch_text.1 - длина строки
|
||||
;
|
||||
align 4
|
||||
check_boxes:
|
||||
;ch1 check_box 10,15,0xffffff,0,0,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
|
||||
;ch2 check_box 10,30,0xffffff,0,0,ch_text.2,ch_text.e2-ch_text.2
|
||||
;ch3 check_box 10,45,0xffffff,0,0,ch_text.3,ch_text.e3-ch_text.3
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные для check_box1 - использует системные цвета
|
||||
;Формат данных чек бокса:
|
||||
;10 - координата чек бокса по х
|
||||
;30 - координата чек бокса по у
|
||||
;ch_text.1 - указатель на начало строки
|
||||
;ch_text.e1-ch_text.1 - длина строки
|
||||
|
||||
;
|
||||
ch1 check_box1 10,15,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
|
||||
ch2 check_box1 10,30,ch_text.2,ch_text.e2-ch_text.2
|
||||
ch3 check_box1 10,45,ch_text.3,ch_text.e3-ch_text.3
|
||||
check_boxes_end:
|
||||
|
||||
ch_text: ;сопровождающий текст для чек боксов
|
||||
.1 db 'Check_Box #1'
|
||||
.e1:
|
||||
.2 db 'Check_Box #2'
|
||||
.e2:
|
||||
.3 db 'Check_Box #3'
|
||||
.e3:
|
||||
|
||||
hed db 'Checkbox [21.02.2007]',0 ;заголовок приложения
|
||||
align 16
|
||||
sc system_colors
|
||||
rb 0x100
|
||||
i_end: ;конец кода
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;Оптимизированный компонент CheckBox (Исходный вариант от Maxxxx32)
|
||||
;Оптимизирован вывод строки, надписи для CheckBox'a + теперь при проверке не ;происходит подсчет кол-ва символов в строке
|
||||
;Оптимизация команд.
|
||||
;21.02.2007 модернизация и поддержка двух разных вариантов с использованием сис цветов и старой схемой
|
||||
;19.02.2007 общее улучшение кода, уменьшение размера и использование системных цветов для отображения checkbox
|
||||
;22.08.2006 произведена оптимизация команд, приняты во внимание замечания DIAMOND'а.
|
||||
;<Lrz> - Теплов Алексей www.lrz.land.ru
|
||||
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0x0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 0x1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd i_end ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd i_end ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0x0,0x0 ; указатель на строку с параметрами.
|
||||
; если после запуска неравно нулю, приложение было
|
||||
; запущено с параметрами из командной строки
|
||||
|
||||
; указатель на строку, в которую записан путь,
|
||||
; откуда запущено приложение
|
||||
;------------------
|
||||
include '..\..\..\macros.inc'
|
||||
include 'check.inc' ;включить файл check.inc
|
||||
; version_ch ;необходимый макрос для включения "старой" версии check_box
|
||||
version_ch1 ;необходимый макрос для включения new версии check_box1
|
||||
;Недопустимо включение двух макросво version_ch1 и version_ch - они взамоисключают друг- дргуга.
|
||||
use_check_box ;используя макросы внести процедуры для рисования чек бокса
|
||||
;Область кода
|
||||
align 4
|
||||
start: ;Точка входа в программу
|
||||
mov eax,48 ;получить системные цвета
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
|
||||
mov eax,40 ;установить маску для ожидаемых событий
|
||||
mov ebx,0x25 ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
|
||||
mcall
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
still: ;основной обработчик
|
||||
mov eax,10 ;Ожидать события
|
||||
mcall ;ожидать событие в течение 2 миллисекунд
|
||||
|
||||
cmp al,0x1 ;если изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x3 ;если нажата кнопка то перейти
|
||||
jz button
|
||||
mouse_check_boxes check_boxes,check_boxes_end ;проверка чек бокса
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
button:
|
||||
or eax,-1 ;в eax,-1 - 5 ,байтов у нас же только 3 выйти
|
||||
mcall ;далее выполняется выход из программы
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
draw_window: ;рисование окна приложения
|
||||
mov eax,12 ;в регистр внести значение = 12
|
||||
mov ebx,1 ;присвоить 1
|
||||
mcall
|
||||
|
||||
xor eax,eax ;обнулить eax
|
||||
mov ebx,50*65536+180 ;[координата по оси x]*65536 + [размер по оси x]
|
||||
mov ecx,30*65536+100 ;[координата по оси y]*65536 + [размер по оси y]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||||
or edx,0xb3000000
|
||||
mov edi,hed
|
||||
mcall ;нарисовать окно приложения
|
||||
|
||||
draw_check_boxes check_boxes,check_boxes_end ;рисование чекбоксов
|
||||
|
||||
mov eax,12 ;Функция 12 - начать/закончить перерисовку окна.
|
||||
mov ebx,2 ;Подфункция 2 - закончить перерисовку окна.
|
||||
mcall
|
||||
ret
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
;Формат данных чек бокса:
|
||||
;10 - координата чек бокса по х
|
||||
;30 - координата чек бокса по у
|
||||
;0 - цвет заливки внутри чек бокса
|
||||
;0xfffffff - цвет рамки чек бокса если нужно так используются ситемные цвета
|
||||
;0 - цвет текста надписи если нужно так используются ситемные цвета
|
||||
;ch_text.1 - указатель на начало строки
|
||||
;ch_text.e1-ch_text.1 - длина строки
|
||||
;
|
||||
align 4
|
||||
check_boxes:
|
||||
;ch1 check_box 10,15,0xffffff,0,0,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
|
||||
;ch2 check_box 10,30,0xffffff,0,0,ch_text.2,ch_text.e2-ch_text.2
|
||||
;ch3 check_box 10,45,0xffffff,0,0,ch_text.3,ch_text.e3-ch_text.3
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные для check_box1 - использует системные цвета
|
||||
;Формат данных чек бокса:
|
||||
;10 - координата чек бокса по х
|
||||
;30 - координата чек бокса по у
|
||||
;ch_text.1 - указатель на начало строки
|
||||
;ch_text.e1-ch_text.1 - длина строки
|
||||
|
||||
;
|
||||
ch1 check_box1 10,15,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
|
||||
ch2 check_box1 10,30,ch_text.2,ch_text.e2-ch_text.2
|
||||
ch3 check_box1 10,45,ch_text.3,ch_text.e3-ch_text.3
|
||||
check_boxes_end:
|
||||
|
||||
ch_text: ;сопровождающий текст для чек боксов
|
||||
.1 db 'Check_Box #1'
|
||||
.e1:
|
||||
.2 db 'Check_Box #2'
|
||||
.e2:
|
||||
.3 db 'Check_Box #3'
|
||||
.e3:
|
||||
|
||||
hed db 'Checkbox [21.02.2007]',0 ;заголовок приложения
|
||||
align 16
|
||||
sc system_colors
|
||||
rb 0x100
|
||||
i_end: ;конец кода
|
||||
File renamed without changes.
File renamed without changes.
+5
-1
@@ -1,3 +1,7 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
; SHAPED WINDOW - BASIC EXAMPLE
|
||||
;
|
||||
@@ -16,7 +20,7 @@ use32
|
||||
dd E_END ; esp
|
||||
dd 0, 0 ; no params, no path
|
||||
|
||||
include '..\..\..\..\macros.inc'
|
||||
include '..\..\..\macros.inc'
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
+128
-126
@@ -1,126 +1,128 @@
|
||||
;
|
||||
; CPU SPEED INDICATIOR
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd 0x1000 ; memory for app
|
||||
dd 0x1000 ; esp
|
||||
dd 0x0,0x0 ; I_Param , I_Icon
|
||||
|
||||
include 'lang.inc'
|
||||
include '..\..\..\..\macros.inc'
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
mov eax,18
|
||||
mov ebx,5
|
||||
mcall
|
||||
|
||||
xor edx,edx
|
||||
mov ebx,1000000
|
||||
div ebx
|
||||
mov ebx,10
|
||||
mov edi,text+19
|
||||
mov ecx,5
|
||||
newnum:
|
||||
xor edx,edx
|
||||
mov ebx,10
|
||||
div ebx
|
||||
add dl,48
|
||||
mov [edi],dl
|
||||
sub edi,1
|
||||
loop newnum
|
||||
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
|
||||
red:
|
||||
call draw_window ; at first, draw the window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,10 ; wait here for event
|
||||
mcall
|
||||
|
||||
cmp eax,1 ; redraw request ?
|
||||
jz red
|
||||
cmp eax,2 ; key in buffer ?
|
||||
jz key
|
||||
cmp eax,3 ; button in buffer ?
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
key: ; key
|
||||
mov eax,2 ; just read it and ignore
|
||||
mcall
|
||||
jmp still
|
||||
|
||||
button: ; button
|
||||
mov eax,17 ; get id
|
||||
mcall
|
||||
|
||||
cmp ah,1 ; button id=1 ?
|
||||
jnz still
|
||||
or eax,-1 ; close this program
|
||||
mcall
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax,0 ; function 0 : define and draw window
|
||||
mov ebx,100*65536+200 ; [x start] *65536 + [x size]
|
||||
mov ecx,100*65536+65 ; [y start] *65536 + [y size]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color glide
|
||||
or edx,0x33000000 ; color of grab bar RRGGBB,8->color
|
||||
mov edi,title ; WINDOW LABEL
|
||||
mcall
|
||||
|
||||
|
||||
mov ebx,20*65536+14 ; draw info text with function 4
|
||||
mov ecx,[sc.work_text]
|
||||
mov edx,text
|
||||
mov esi,24
|
||||
mov eax,4
|
||||
mcall
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
|
||||
text:
|
||||
db 'CPU RUNNING AT MHZ'
|
||||
|
||||
title db 'CPU SPEED',0
|
||||
|
||||
I_END:
|
||||
|
||||
sc system_colors
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;
|
||||
; CPU SPEED INDICATIOR
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd 0x1000 ; memory for app
|
||||
dd 0x1000 ; esp
|
||||
dd 0x0,0x0 ; I_Param , I_Icon
|
||||
|
||||
include 'lang.inc'
|
||||
include '..\..\..\macros.inc'
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
mov eax,18
|
||||
mov ebx,5
|
||||
mcall
|
||||
|
||||
xor edx,edx
|
||||
mov ebx,1000000
|
||||
div ebx
|
||||
mov ebx,10
|
||||
mov edi,text+19
|
||||
mov ecx,5
|
||||
newnum:
|
||||
xor edx,edx
|
||||
mov ebx,10
|
||||
div ebx
|
||||
add dl,48
|
||||
mov [edi],dl
|
||||
sub edi,1
|
||||
loop newnum
|
||||
|
||||
mov eax,48
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
|
||||
red:
|
||||
call draw_window ; at first, draw the window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,10 ; wait here for event
|
||||
mcall
|
||||
|
||||
cmp eax,1 ; redraw request ?
|
||||
jz red
|
||||
cmp eax,2 ; key in buffer ?
|
||||
jz key
|
||||
cmp eax,3 ; button in buffer ?
|
||||
jz button
|
||||
|
||||
jmp still
|
||||
|
||||
key: ; key
|
||||
mov eax,2 ; just read it and ignore
|
||||
mcall
|
||||
jmp still
|
||||
|
||||
button: ; button
|
||||
mov eax,17 ; get id
|
||||
mcall
|
||||
|
||||
cmp ah,1 ; button id=1 ?
|
||||
jnz still
|
||||
or eax,-1 ; close this program
|
||||
mcall
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax,0 ; function 0 : define and draw window
|
||||
mov ebx,100*65536+200 ; [x start] *65536 + [x size]
|
||||
mov ecx,100*65536+65 ; [y start] *65536 + [y size]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color glide
|
||||
or edx,0x33000000 ; color of grab bar RRGGBB,8->color
|
||||
mov edi,title ; WINDOW LABEL
|
||||
mcall
|
||||
|
||||
|
||||
mov ebx,20*65536+14 ; draw info text with function 4
|
||||
mov ecx,[sc.work_text]
|
||||
mov edx,text
|
||||
mov esi,24
|
||||
mov eax,4
|
||||
mcall
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
|
||||
text:
|
||||
db 'CPU RUNNING AT MHZ'
|
||||
|
||||
title db 'CPU SPEED',0
|
||||
|
||||
I_END:
|
||||
|
||||
sc system_colors
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+74
-68
@@ -1,68 +1,74 @@
|
||||
;Распространяется по лицензии GPL SEE YOU File FAQ.txt and HISTORY. Good Like!
|
||||
;Оптимизированный компонент EditBox (Исходный вариант от Maxxxx32)
|
||||
;Оптимизация команд.
|
||||
;<Lrz> - Теплов Алексей www.lrz.land.ru
|
||||
;заголовок приложения
|
||||
include '..\..\..\..\macros.inc'
|
||||
include 'editbox.inc'
|
||||
KOS_APP_START
|
||||
align 4
|
||||
use_edit_box
|
||||
;Область кода
|
||||
code ;Точка входа в программу
|
||||
mcall 40,0x27 ;установить маску для ожидаемых событий
|
||||
;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) и нажатие клавиши
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
align 4
|
||||
still: ;основной обработчик
|
||||
mcall 10 ;Ожидать события
|
||||
dec eax
|
||||
jz red_win
|
||||
dec eax
|
||||
jz key
|
||||
dec eax
|
||||
jz button
|
||||
mouse_edit_boxes editboxes,editboxes_end
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
button:
|
||||
mcall 17 ;получить идентификатор нажатой клавиши
|
||||
test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
jz still
|
||||
mcall -1
|
||||
key:
|
||||
mcall 2 ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
|
||||
key_edit_boxes editboxes,editboxes_end
|
||||
jmp still
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
align 4
|
||||
draw_window: ;рисование окна приложения
|
||||
mcall 12,1
|
||||
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
|
||||
draw_edit_boxes editboxes,editboxes_end ;рисование edit box'ов
|
||||
mcall 12,2
|
||||
ret
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
editboxes:
|
||||
edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
|
||||
edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
|
||||
edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
|
||||
edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
|
||||
editboxes_end:
|
||||
data_of_code dd 0
|
||||
mouse_flag dd 0x0
|
||||
hed db 'EDITBOX optimization and retype <Lrz> date 23.07.2008',0
|
||||
rb 256
|
||||
ed_buffer:
|
||||
;.1: rb 514;256
|
||||
.2: rb 101
|
||||
.3: rb 11
|
||||
.4: rb 3
|
||||
;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0
|
||||
buffer_end:
|
||||
align 16
|
||||
KOS_APP_END
|
||||
udata
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;Распространяется по лицензии GPL SEE YOU File FAQ.txt and HISTORY. Good Like!
|
||||
;Оптимизированный компонент EditBox (Исходный вариант от Maxxxx32)
|
||||
;Оптимизация команд.
|
||||
;<Lrz> - Теплов Алексей www.lrz.land.ru
|
||||
;заголовок приложения
|
||||
include '..\..\..\macros.inc'
|
||||
include 'editbox.inc'
|
||||
KOS_APP_START
|
||||
align 4
|
||||
use_edit_box
|
||||
;Область кода
|
||||
code ;Точка входа в программу
|
||||
mcall 40,0x27 ;установить маску для ожидаемых событий
|
||||
;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении) и нажатие клавиши
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
align 4
|
||||
still: ;основной обработчик
|
||||
mcall 10 ;Ожидать события
|
||||
dec eax
|
||||
jz red_win
|
||||
dec eax
|
||||
jz key
|
||||
dec eax
|
||||
jz button
|
||||
mouse_edit_boxes editboxes,editboxes_end
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
button:
|
||||
mcall 17 ;получить идентификатор нажатой клавиши
|
||||
test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
jz still
|
||||
mcall -1
|
||||
key:
|
||||
mcall 2 ;загрузим значение 2 в регистор eax и получим код нажатой клавиши
|
||||
key_edit_boxes editboxes,editboxes_end
|
||||
jmp still
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
align 4
|
||||
draw_window: ;рисование окна приложения
|
||||
mcall 12,1
|
||||
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
|
||||
draw_edit_boxes editboxes,editboxes_end ;рисование edit box'ов
|
||||
mcall 12,2
|
||||
ret
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
editboxes:
|
||||
edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
|
||||
edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
|
||||
edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only
|
||||
edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only
|
||||
editboxes_end:
|
||||
data_of_code dd 0
|
||||
mouse_flag dd 0x0
|
||||
hed db 'EDITBOX optimization and retype <Lrz> date 23.07.2008',0
|
||||
rb 256
|
||||
ed_buffer:
|
||||
;.1: rb 514;256
|
||||
.2: rb 101
|
||||
.3: rb 11
|
||||
.4: rb 3
|
||||
;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0
|
||||
buffer_end:
|
||||
align 16
|
||||
KOS_APP_END
|
||||
udata
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+5
-1
@@ -1,3 +1,7 @@
|
||||
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
; MENU / DIALOG EXAMPLE
|
||||
@@ -18,7 +22,7 @@ use32
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
|
||||
include 'lang.inc'
|
||||
include '..\..\..\..\macros.inc'
|
||||
include '..\..\..\macros.inc'
|
||||
include 'dialogs1.inc'
|
||||
|
||||
menu_history dd 0x0
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
+12
-7
@@ -1,3 +1,8 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
;
|
||||
; MENU EXAMPLE
|
||||
;
|
||||
@@ -13,11 +18,11 @@
|
||||
dd mem, stacktop, file_name, sys_path
|
||||
|
||||
include 'lang.inc'
|
||||
include '../../../../macros.inc'
|
||||
include '../../../../proc32.inc'
|
||||
include '../../../../KOSfuncs.inc'
|
||||
include '../../../../load_lib.mac'
|
||||
include '../../../../dll.inc'
|
||||
include '../../../macros.inc'
|
||||
include '../../../proc32.inc'
|
||||
include '../../../KOSfuncs.inc'
|
||||
include '../../../load_lib.mac'
|
||||
include '../../../dll.inc'
|
||||
|
||||
KMENUITEM_NORMAL equ 0
|
||||
KMENUITEM_SUBMENU equ 1
|
||||
@@ -94,7 +99,7 @@ start: ; start of execution
|
||||
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_Help, [main_menu_Help]
|
||||
stdcall [ksubmenu_add], [main_menu], eax
|
||||
|
||||
red:
|
||||
red:
|
||||
call draw_window ; draw window
|
||||
stdcall [kmainmenu_draw], [main_menu]
|
||||
|
||||
@@ -108,7 +113,7 @@ still:
|
||||
cmp eax,3
|
||||
jz button
|
||||
cmp eax,6
|
||||
jne @f
|
||||
jne @f
|
||||
call mouse
|
||||
jmp still
|
||||
@@:
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
+4
-2
@@ -1,4 +1,7 @@
|
||||
include "..\..\..\..\macros.inc"
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
include "..\..\..\macros.inc"
|
||||
|
||||
initipc:
|
||||
mov eax,9
|
||||
@@ -218,4 +221,3 @@ stripc: times 84 db 0
|
||||
fill_symbol db 0
|
||||
|
||||
prc: times 52 db 0
|
||||
|
||||
+6
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
; Hello, World! - Programm example for CMD shell
|
||||
; Compile with FASM
|
||||
;
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
+415
-412
@@ -1,412 +1,415 @@
|
||||
;
|
||||
; Example for Inter Process Communication
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
include 'lang.inc'
|
||||
include '..\..\..\..\macros.inc'
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd 0x60000 ; memory for app
|
||||
dd 0x60000 ; esp
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
|
||||
mov eax,60 ; IPC
|
||||
mov ebx,1 ; define receive area
|
||||
mov ecx,received_messages ; pointer to start
|
||||
mov edx,1000 ; size of area
|
||||
mcall
|
||||
|
||||
mov eax,40 ; WANTED EVENTS
|
||||
mov ebx,01000111b ; IPC 7 + defaults
|
||||
mcall
|
||||
|
||||
mov [received_messages+8],dword 0*256+0
|
||||
mov [received_messages+12],dword 0
|
||||
|
||||
red:
|
||||
call draw_window ; at first, draw the window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,23 ; wait here for event
|
||||
mov ebx,50
|
||||
mcall
|
||||
|
||||
cmp eax,1 ; redraw request ?
|
||||
je red
|
||||
cmp eax,2 ; key in buffer ?
|
||||
je key
|
||||
cmp eax,3 ; button in buffer ?
|
||||
je button
|
||||
|
||||
cmp eax,7 ; IPC ?
|
||||
jne no_ipc
|
||||
call display_ipc_messages
|
||||
jmp still
|
||||
no_ipc:
|
||||
|
||||
jmp still
|
||||
|
||||
key: ; key
|
||||
mov eax,2 ; just read it and ignore
|
||||
mcall
|
||||
jmp still
|
||||
|
||||
button: ; button
|
||||
mov eax,17 ; get id
|
||||
mcall
|
||||
|
||||
cmp ah,1 ; button id=1 ?
|
||||
jne noclose
|
||||
mov eax,-1 ; close this program
|
||||
mcall
|
||||
noclose:
|
||||
|
||||
cmp ah,2
|
||||
jne no_read
|
||||
call read_string
|
||||
|
||||
movzx eax,byte [message]
|
||||
sub eax,48
|
||||
imul eax,10
|
||||
movzx ebx,byte [message+1]
|
||||
add eax,ebx
|
||||
sub eax,48
|
||||
imul eax,10
|
||||
movzx ebx,byte [message+2]
|
||||
add eax,ebx
|
||||
sub eax,48
|
||||
imul eax,10
|
||||
movzx ebx,byte [message+3]
|
||||
add eax,ebx
|
||||
sub eax,48
|
||||
|
||||
mov [PID],eax
|
||||
|
||||
mov eax,60 ; IPC
|
||||
mov ebx,2 ; send message
|
||||
mov ecx,[PID]
|
||||
mov edx,message+4
|
||||
mov esi,20;[message_size]
|
||||
mcall
|
||||
|
||||
jmp still
|
||||
no_read:
|
||||
|
||||
|
||||
cmp ah,3
|
||||
jne no_messages_pop ; pop the first out
|
||||
call ipc_message_pop
|
||||
jmp still
|
||||
no_messages_pop:
|
||||
|
||||
jmp still
|
||||
|
||||
|
||||
ipc_message_pop:
|
||||
|
||||
pusha
|
||||
|
||||
cmp [received_messages+4],dword 8
|
||||
je already_empty
|
||||
|
||||
mov [received_messages],byte 1 ; lock the area
|
||||
|
||||
push dword [received_messages+4]
|
||||
|
||||
mov ecx,[received_messages+12]
|
||||
|
||||
sub [received_messages+4],ecx
|
||||
sub [received_messages+4],dword 8
|
||||
|
||||
mov edi,received_messages+8
|
||||
mov esi,edi
|
||||
add esi,ecx
|
||||
add esi,8
|
||||
|
||||
pop ecx
|
||||
|
||||
cld
|
||||
rep movsb
|
||||
|
||||
call display_ipc_messages
|
||||
|
||||
mov [received_messages],byte 0 ; free the area
|
||||
|
||||
already_empty:
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
|
||||
display_ipc_messages:
|
||||
|
||||
pusha
|
||||
|
||||
mov eax,13
|
||||
mov ebx,25*65536+245
|
||||
mov ecx,105*65536+90
|
||||
mov edx,0xdddddd
|
||||
mcall
|
||||
|
||||
cmp [received_messages+4],dword 8 ; empty list
|
||||
je ipma1
|
||||
|
||||
mov ebx,25*65536+105 ; draw info text with function 4
|
||||
mov ecx,0x224466
|
||||
mov edx,received_messages+8
|
||||
mov esi,40
|
||||
mov [counter],0
|
||||
newline2:
|
||||
pusha
|
||||
mov ecx,[edx]
|
||||
and ecx,0xfff
|
||||
mov edx,ebx
|
||||
mov eax,47
|
||||
mov ebx,4*65536
|
||||
mov esi,0xff0000
|
||||
mcall
|
||||
popa
|
||||
pusha
|
||||
mov esi,20
|
||||
add edx,8
|
||||
add ebx,30*65536
|
||||
mov eax,4
|
||||
mcall
|
||||
popa
|
||||
|
||||
add ebx,10
|
||||
mov edi,[edx+4]
|
||||
add edi,8
|
||||
and edi,0xfff
|
||||
add edx,edi
|
||||
|
||||
mov edi,[received_messages+4]
|
||||
add edi,received_messages
|
||||
cmp edx,edi
|
||||
jge ipma1
|
||||
|
||||
inc [counter]
|
||||
cmp [counter],8
|
||||
jbe newline2
|
||||
|
||||
ipma1:
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
counter dd 0x0
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax,0 ; function 0 : define and draw window
|
||||
mov ebx,100*65536+290 ; [x start] *65536 + [x size]
|
||||
mov ecx,100*65536+220 ; [y start] *65536 + [y size]
|
||||
mov edx,0x14ffffff ; color of work area RRGGBB,8->color gl
|
||||
mov edi,title ; WINDOW LABEL
|
||||
mcall
|
||||
|
||||
|
||||
mov eax,9
|
||||
mov ebx,process_info
|
||||
mov ecx,-1
|
||||
mcall
|
||||
|
||||
mov eax,47
|
||||
mov ebx,4*65536
|
||||
mov ecx,[process_info+30]
|
||||
mov edx,180*65536+35
|
||||
mov esi,0x000000
|
||||
mcall
|
||||
|
||||
mov eax,8 ; MESSAGE
|
||||
mov ebx,25*65536+87
|
||||
mov ecx,50*65536+16
|
||||
mov edx,2
|
||||
mov esi,0x5588dd
|
||||
mcall
|
||||
|
||||
;mov eax,8 ; POP
|
||||
mov ebx,216*65536+53
|
||||
mov ecx,80*65536+16
|
||||
mov edx,3
|
||||
mcall
|
||||
|
||||
mov eax,4
|
||||
mov ebx,25*65536+35 ; draw info text with function 4
|
||||
mov ecx,0x224466
|
||||
mov edx,text
|
||||
mov esi,40
|
||||
newline:
|
||||
mcall
|
||||
add ebx,10
|
||||
add edx,40
|
||||
cmp [edx],byte 'x'
|
||||
jne newline
|
||||
|
||||
call display_ipc_messages
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
read_string:
|
||||
|
||||
pusha
|
||||
|
||||
mov [addr],dword message
|
||||
mov [ya],55
|
||||
mov [xa],120
|
||||
|
||||
mov ecx,20
|
||||
mov edi,[addr]
|
||||
mov al,' '
|
||||
cld
|
||||
rep stosb
|
||||
|
||||
call print_text
|
||||
|
||||
mov edi,[addr]
|
||||
|
||||
f11:
|
||||
mov eax,10
|
||||
mcall
|
||||
cmp eax,2
|
||||
jz fbu
|
||||
|
||||
exit_readkey:
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
fbu:
|
||||
mov eax,2
|
||||
mcall ; get key
|
||||
shr eax,8
|
||||
|
||||
cmp eax,13
|
||||
je exit_readkey
|
||||
|
||||
cmp eax,8
|
||||
jnz nobs
|
||||
cmp edi,[addr]
|
||||
jz f11
|
||||
dec edi
|
||||
mov [edi],byte ' '
|
||||
call print_text
|
||||
jmp f11
|
||||
nobs:
|
||||
|
||||
cmp eax,31
|
||||
jbe f11
|
||||
cmp eax,95
|
||||
jb keyok
|
||||
sub eax,32
|
||||
keyok:
|
||||
mov [edi],al
|
||||
|
||||
call print_text
|
||||
|
||||
inc edi
|
||||
mov esi,[addr]
|
||||
add esi,20
|
||||
cmp esi,edi
|
||||
jnz f11
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
|
||||
print_text:
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[xa]
|
||||
shl ebx,16
|
||||
add ebx,25*6
|
||||
mov ecx,[ya]
|
||||
shl ecx,16
|
||||
mov cx,8
|
||||
mov edx,0xffffff
|
||||
mcall
|
||||
|
||||
mov eax,4
|
||||
mov ebx,[xa]
|
||||
shl ebx,16
|
||||
add ebx,[ya]
|
||||
mov ecx,0x000000
|
||||
mov edx,[addr]
|
||||
mov esi,25
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
ya dd 0x0
|
||||
xa dd 0x0
|
||||
addr dd 0x0
|
||||
|
||||
text:
|
||||
db 'PROCESS ID FOR THIS APP : '
|
||||
db ' '
|
||||
db ' PID:MESSAGE 0130 EXAMPLE MESSAGE '
|
||||
db ' '
|
||||
db ' '
|
||||
db 'RECEIVED: POP '
|
||||
db 'x' ; <- END MARKER, DO NOT DELETE
|
||||
|
||||
|
||||
title db 'IPC - START AT LEAST 2',0
|
||||
|
||||
I_END:
|
||||
|
||||
PID: dd 0x0
|
||||
message_size: dd 20
|
||||
|
||||
received_messages:
|
||||
|
||||
db 0 ; lock byte
|
||||
db 0,0,0 ; reserved
|
||||
dd 8 ; pointer to free msg position from received_messages
|
||||
|
||||
; Sender PID
|
||||
; Msg length
|
||||
; Msg data
|
||||
|
||||
rb 0x1000
|
||||
message: times 70 db ?
|
||||
process_info: times 256 dd ?
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;
|
||||
; Example for Inter Process Communication
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
include 'lang.inc'
|
||||
include '..\..\..\macros.inc'
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd 0x60000 ; memory for app
|
||||
dd 0x60000 ; esp
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
|
||||
mov eax,60 ; IPC
|
||||
mov ebx,1 ; define receive area
|
||||
mov ecx,received_messages ; pointer to start
|
||||
mov edx,1000 ; size of area
|
||||
mcall
|
||||
|
||||
mov eax,40 ; WANTED EVENTS
|
||||
mov ebx,01000111b ; IPC 7 + defaults
|
||||
mcall
|
||||
|
||||
mov [received_messages+8],dword 0*256+0
|
||||
mov [received_messages+12],dword 0
|
||||
|
||||
red:
|
||||
call draw_window ; at first, draw the window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,23 ; wait here for event
|
||||
mov ebx,50
|
||||
mcall
|
||||
|
||||
cmp eax,1 ; redraw request ?
|
||||
je red
|
||||
cmp eax,2 ; key in buffer ?
|
||||
je key
|
||||
cmp eax,3 ; button in buffer ?
|
||||
je button
|
||||
|
||||
cmp eax,7 ; IPC ?
|
||||
jne no_ipc
|
||||
call display_ipc_messages
|
||||
jmp still
|
||||
no_ipc:
|
||||
|
||||
jmp still
|
||||
|
||||
key: ; key
|
||||
mov eax,2 ; just read it and ignore
|
||||
mcall
|
||||
jmp still
|
||||
|
||||
button: ; button
|
||||
mov eax,17 ; get id
|
||||
mcall
|
||||
|
||||
cmp ah,1 ; button id=1 ?
|
||||
jne noclose
|
||||
mov eax,-1 ; close this program
|
||||
mcall
|
||||
noclose:
|
||||
|
||||
cmp ah,2
|
||||
jne no_read
|
||||
call read_string
|
||||
|
||||
movzx eax,byte [message]
|
||||
sub eax,48
|
||||
imul eax,10
|
||||
movzx ebx,byte [message+1]
|
||||
add eax,ebx
|
||||
sub eax,48
|
||||
imul eax,10
|
||||
movzx ebx,byte [message+2]
|
||||
add eax,ebx
|
||||
sub eax,48
|
||||
imul eax,10
|
||||
movzx ebx,byte [message+3]
|
||||
add eax,ebx
|
||||
sub eax,48
|
||||
|
||||
mov [PID],eax
|
||||
|
||||
mov eax,60 ; IPC
|
||||
mov ebx,2 ; send message
|
||||
mov ecx,[PID]
|
||||
mov edx,message+4
|
||||
mov esi,20;[message_size]
|
||||
mcall
|
||||
|
||||
jmp still
|
||||
no_read:
|
||||
|
||||
|
||||
cmp ah,3
|
||||
jne no_messages_pop ; pop the first out
|
||||
call ipc_message_pop
|
||||
jmp still
|
||||
no_messages_pop:
|
||||
|
||||
jmp still
|
||||
|
||||
|
||||
ipc_message_pop:
|
||||
|
||||
pusha
|
||||
|
||||
cmp [received_messages+4],dword 8
|
||||
je already_empty
|
||||
|
||||
mov [received_messages],byte 1 ; lock the area
|
||||
|
||||
push dword [received_messages+4]
|
||||
|
||||
mov ecx,[received_messages+12]
|
||||
|
||||
sub [received_messages+4],ecx
|
||||
sub [received_messages+4],dword 8
|
||||
|
||||
mov edi,received_messages+8
|
||||
mov esi,edi
|
||||
add esi,ecx
|
||||
add esi,8
|
||||
|
||||
pop ecx
|
||||
|
||||
cld
|
||||
rep movsb
|
||||
|
||||
call display_ipc_messages
|
||||
|
||||
mov [received_messages],byte 0 ; free the area
|
||||
|
||||
already_empty:
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
|
||||
display_ipc_messages:
|
||||
|
||||
pusha
|
||||
|
||||
mov eax,13
|
||||
mov ebx,25*65536+245
|
||||
mov ecx,105*65536+90
|
||||
mov edx,0xdddddd
|
||||
mcall
|
||||
|
||||
cmp [received_messages+4],dword 8 ; empty list
|
||||
je ipma1
|
||||
|
||||
mov ebx,25*65536+105 ; draw info text with function 4
|
||||
mov ecx,0x224466
|
||||
mov edx,received_messages+8
|
||||
mov esi,40
|
||||
mov [counter],0
|
||||
newline2:
|
||||
pusha
|
||||
mov ecx,[edx]
|
||||
and ecx,0xfff
|
||||
mov edx,ebx
|
||||
mov eax,47
|
||||
mov ebx,4*65536
|
||||
mov esi,0xff0000
|
||||
mcall
|
||||
popa
|
||||
pusha
|
||||
mov esi,20
|
||||
add edx,8
|
||||
add ebx,30*65536
|
||||
mov eax,4
|
||||
mcall
|
||||
popa
|
||||
|
||||
add ebx,10
|
||||
mov edi,[edx+4]
|
||||
add edi,8
|
||||
and edi,0xfff
|
||||
add edx,edi
|
||||
|
||||
mov edi,[received_messages+4]
|
||||
add edi,received_messages
|
||||
cmp edx,edi
|
||||
jge ipma1
|
||||
|
||||
inc [counter]
|
||||
cmp [counter],8
|
||||
jbe newline2
|
||||
|
||||
ipma1:
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
counter dd 0x0
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax,0 ; function 0 : define and draw window
|
||||
mov ebx,100*65536+290 ; [x start] *65536 + [x size]
|
||||
mov ecx,100*65536+220 ; [y start] *65536 + [y size]
|
||||
mov edx,0x14ffffff ; color of work area RRGGBB,8->color gl
|
||||
mov edi,title ; WINDOW LABEL
|
||||
mcall
|
||||
|
||||
|
||||
mov eax,9
|
||||
mov ebx,process_info
|
||||
mov ecx,-1
|
||||
mcall
|
||||
|
||||
mov eax,47
|
||||
mov ebx,4*65536
|
||||
mov ecx,[process_info+30]
|
||||
mov edx,180*65536+35
|
||||
mov esi,0x000000
|
||||
mcall
|
||||
|
||||
mov eax,8 ; MESSAGE
|
||||
mov ebx,25*65536+87
|
||||
mov ecx,50*65536+16
|
||||
mov edx,2
|
||||
mov esi,0x5588dd
|
||||
mcall
|
||||
|
||||
;mov eax,8 ; POP
|
||||
mov ebx,216*65536+53
|
||||
mov ecx,80*65536+16
|
||||
mov edx,3
|
||||
mcall
|
||||
|
||||
mov eax,4
|
||||
mov ebx,25*65536+35 ; draw info text with function 4
|
||||
mov ecx,0x224466
|
||||
mov edx,text
|
||||
mov esi,40
|
||||
newline:
|
||||
mcall
|
||||
add ebx,10
|
||||
add edx,40
|
||||
cmp [edx],byte 'x'
|
||||
jne newline
|
||||
|
||||
call display_ipc_messages
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
read_string:
|
||||
|
||||
pusha
|
||||
|
||||
mov [addr],dword message
|
||||
mov [ya],55
|
||||
mov [xa],120
|
||||
|
||||
mov ecx,20
|
||||
mov edi,[addr]
|
||||
mov al,' '
|
||||
cld
|
||||
rep stosb
|
||||
|
||||
call print_text
|
||||
|
||||
mov edi,[addr]
|
||||
|
||||
f11:
|
||||
mov eax,10
|
||||
mcall
|
||||
cmp eax,2
|
||||
jz fbu
|
||||
|
||||
exit_readkey:
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
fbu:
|
||||
mov eax,2
|
||||
mcall ; get key
|
||||
shr eax,8
|
||||
|
||||
cmp eax,13
|
||||
je exit_readkey
|
||||
|
||||
cmp eax,8
|
||||
jnz nobs
|
||||
cmp edi,[addr]
|
||||
jz f11
|
||||
dec edi
|
||||
mov [edi],byte ' '
|
||||
call print_text
|
||||
jmp f11
|
||||
nobs:
|
||||
|
||||
cmp eax,31
|
||||
jbe f11
|
||||
cmp eax,95
|
||||
jb keyok
|
||||
sub eax,32
|
||||
keyok:
|
||||
mov [edi],al
|
||||
|
||||
call print_text
|
||||
|
||||
inc edi
|
||||
mov esi,[addr]
|
||||
add esi,20
|
||||
cmp esi,edi
|
||||
jnz f11
|
||||
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
|
||||
print_text:
|
||||
|
||||
mov eax,13
|
||||
mov ebx,[xa]
|
||||
shl ebx,16
|
||||
add ebx,25*6
|
||||
mov ecx,[ya]
|
||||
shl ecx,16
|
||||
mov cx,8
|
||||
mov edx,0xffffff
|
||||
mcall
|
||||
|
||||
mov eax,4
|
||||
mov ebx,[xa]
|
||||
shl ebx,16
|
||||
add ebx,[ya]
|
||||
mov ecx,0x000000
|
||||
mov edx,[addr]
|
||||
mov esi,25
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
ya dd 0x0
|
||||
xa dd 0x0
|
||||
addr dd 0x0
|
||||
|
||||
text:
|
||||
db 'PROCESS ID FOR THIS APP : '
|
||||
db ' '
|
||||
db ' PID:MESSAGE 0130 EXAMPLE MESSAGE '
|
||||
db ' '
|
||||
db ' '
|
||||
db 'RECEIVED: POP '
|
||||
db 'x' ; <- END MARKER, DO NOT DELETE
|
||||
|
||||
|
||||
title db 'IPC - START AT LEAST 2',0
|
||||
|
||||
I_END:
|
||||
|
||||
PID: dd 0x0
|
||||
message_size: dd 20
|
||||
|
||||
received_messages:
|
||||
|
||||
db 0 ; lock byte
|
||||
db 0,0,0 ; reserved
|
||||
dd 8 ; pointer to free msg position from received_messages
|
||||
|
||||
; Sender PID
|
||||
; Msg length
|
||||
; Msg data
|
||||
|
||||
rb 0x1000
|
||||
message: times 70 db ?
|
||||
process_info: times 256 dd ?
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
@@ -1,268 +1,271 @@
|
||||
;
|
||||
; INFRARED
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
|
||||
use32
|
||||
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 1 ; required os
|
||||
dd START ; program start
|
||||
dd I_END ; program image size
|
||||
dd 0x1000 ; required amount of memory
|
||||
dd 0x1000 ; esp = 0x7FFF0
|
||||
dd 0, 0
|
||||
|
||||
|
||||
include '..\..\..\..\macros.inc'
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
set_variables:
|
||||
|
||||
mov eax,46 ; reserve ports 0x3f0 - 0x3ff
|
||||
mov ebx,0
|
||||
mov ecx,0x3f0
|
||||
mov edx,0x3ff
|
||||
mcall
|
||||
|
||||
mov eax,45 ; reserve irq 4
|
||||
mov ebx,0
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,44 ; set read ports for irq 4
|
||||
mov ebx,irqtable
|
||||
; mov ecx,4
|
||||
mcall
|
||||
|
||||
mov dh, 3 ; all ports have number 3xx hex
|
||||
|
||||
mov dl, 0xf3+8
|
||||
mov al, 0x80
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf1+8
|
||||
mov al, 0
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf0+8
|
||||
mov al, 0x30 / 4
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf3+8
|
||||
mov al, 3
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf4+8
|
||||
mov al, 0xB
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf1+8
|
||||
mov al, 1
|
||||
out dx, al
|
||||
|
||||
mov eax,5
|
||||
mov ebx,100
|
||||
mcall
|
||||
|
||||
mov dl, 0xf8
|
||||
mov al, 'I'
|
||||
out dx, al
|
||||
|
||||
mov eax,5
|
||||
mov ebx,10
|
||||
mcall
|
||||
|
||||
mov al, 'R'
|
||||
out dx, al
|
||||
|
||||
mov eax,40 ; get com 1 data with irq 4
|
||||
mov ebx,0000000000010000b shl 16 + 101b
|
||||
mcall
|
||||
|
||||
red:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,10 ; wait here for event
|
||||
mcall
|
||||
dec eax
|
||||
jz red
|
||||
dec eax
|
||||
dec eax
|
||||
jnz readir
|
||||
|
||||
button: ; button
|
||||
mov al,17 ; get id
|
||||
mcall
|
||||
|
||||
; we have only one button, close
|
||||
|
||||
mov eax,45 ; free irq
|
||||
mov ebx,1
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,46 ; free ports 0x3f0-0x3ff
|
||||
mov ebx,1
|
||||
mov ecx,0x3f0
|
||||
mov edx,0x3ff
|
||||
mcall
|
||||
|
||||
or eax,-1 ; close this program
|
||||
mcall
|
||||
|
||||
pos dd 0x0
|
||||
|
||||
cdplayer:
|
||||
dd 7
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
db '/sys/CDP',0
|
||||
|
||||
readir:
|
||||
mov eax,42
|
||||
mov ebx,4
|
||||
mcall
|
||||
|
||||
cmp ebx,80
|
||||
jne nocd
|
||||
|
||||
mov eax,70
|
||||
mov ebx,cdplayer
|
||||
mcall
|
||||
|
||||
|
||||
nocd:
|
||||
|
||||
push ebx
|
||||
mov eax,[pos]
|
||||
add eax,1
|
||||
cmp eax,10*20+1
|
||||
jb noeaxz
|
||||
mov esi,text+10*4
|
||||
mov edi,text
|
||||
mov ecx,10*21*4
|
||||
cld
|
||||
rep movsb
|
||||
mov eax,13
|
||||
mov ebx,20*65536+260
|
||||
mov ecx,22*65536+220
|
||||
mov edx,[wcolor]
|
||||
mcall
|
||||
mov eax,10*19+1
|
||||
noeaxz:
|
||||
mov [pos],eax
|
||||
pop ebx
|
||||
and ebx,0xff
|
||||
call draw_data
|
||||
jmp still
|
||||
|
||||
|
||||
|
||||
|
||||
draw_data:
|
||||
|
||||
pusha
|
||||
|
||||
xchg eax,ebx
|
||||
|
||||
mov ecx,10
|
||||
shl ebx,2
|
||||
mov esi,3
|
||||
newnum:
|
||||
xor edx,edx
|
||||
div ecx
|
||||
add edx,48
|
||||
mov [ebx+text-1],dl
|
||||
dec ebx
|
||||
dec esi
|
||||
jnz newnum
|
||||
|
||||
call draw_text
|
||||
|
||||
popa
|
||||
|
||||
ret
|
||||
|
||||
|
||||
irqtable:
|
||||
|
||||
dd 0x3f8+0x01000000 ; + 01 = read byte, 02 read word
|
||||
dd 0
|
||||
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax,0 ; function 0 : define and draw window
|
||||
mov ebx,100*65536+300 ; [x start] *65536 + [x size]
|
||||
mov ecx,100*65536+250 ; [y start] *65536 + [y size]
|
||||
mov edx,[wcolor] ; color of work area RRGGBB,8->color
|
||||
mov edi,labelt ; caption string
|
||||
mcall
|
||||
|
||||
; ; WINDOW LABEL
|
||||
; mov eax,4 ; function 4 : write text to window
|
||||
; mov ebx,8*65536+8 ; [x start] *65536 + [y start]
|
||||
; mov ecx,0x00ffffff ; color of text RRGGBB
|
||||
; mov edx,labelt ; pointer to text beginning
|
||||
; mov esi,labellen-labelt ; text length
|
||||
; mcall
|
||||
|
||||
; CLOSE BUTTON
|
||||
; mov eax,8 ; function 8 : define and draw button
|
||||
; mov ebx,(300-19)*65536+12 ; [x start] *65536 + [x size]
|
||||
; mov ecx,5*65536+12 ; [y start] *65536 + [y size]
|
||||
; mov edx,1 ; button id
|
||||
; mov esi,0x5599cc ; button color RRGGBB
|
||||
; mcall
|
||||
|
||||
draw_text:
|
||||
|
||||
mov ebx,25*65536+35 ; draw info text with function 4
|
||||
mov ecx,0xffffff
|
||||
mov edx,text
|
||||
mov esi,40
|
||||
mov edi,20
|
||||
newline:
|
||||
mov eax,4
|
||||
mcall
|
||||
add ebx,10
|
||||
add edx,esi
|
||||
dec edi
|
||||
jne newline
|
||||
|
||||
mov eax,12
|
||||
mov ebx,2
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
wcolor dd 0x13000000
|
||||
|
||||
labelt db 'INFRARED RECEIVER FOR IRMAN IN COM 1',0
|
||||
|
||||
text:
|
||||
|
||||
I_END:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;
|
||||
; INFRARED
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
|
||||
use32
|
||||
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 1 ; required os
|
||||
dd START ; program start
|
||||
dd I_END ; program image size
|
||||
dd 0x1000 ; required amount of memory
|
||||
dd 0x1000 ; esp = 0x7FFF0
|
||||
dd 0, 0
|
||||
|
||||
|
||||
include '..\..\..\macros.inc'
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
set_variables:
|
||||
|
||||
mov eax,46 ; reserve ports 0x3f0 - 0x3ff
|
||||
mov ebx,0
|
||||
mov ecx,0x3f0
|
||||
mov edx,0x3ff
|
||||
mcall
|
||||
|
||||
mov eax,45 ; reserve irq 4
|
||||
mov ebx,0
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,44 ; set read ports for irq 4
|
||||
mov ebx,irqtable
|
||||
; mov ecx,4
|
||||
mcall
|
||||
|
||||
mov dh, 3 ; all ports have number 3xx hex
|
||||
|
||||
mov dl, 0xf3+8
|
||||
mov al, 0x80
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf1+8
|
||||
mov al, 0
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf0+8
|
||||
mov al, 0x30 / 4
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf3+8
|
||||
mov al, 3
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf4+8
|
||||
mov al, 0xB
|
||||
out dx, al
|
||||
|
||||
mov dl, 0xf1+8
|
||||
mov al, 1
|
||||
out dx, al
|
||||
|
||||
mov eax,5
|
||||
mov ebx,100
|
||||
mcall
|
||||
|
||||
mov dl, 0xf8
|
||||
mov al, 'I'
|
||||
out dx, al
|
||||
|
||||
mov eax,5
|
||||
mov ebx,10
|
||||
mcall
|
||||
|
||||
mov al, 'R'
|
||||
out dx, al
|
||||
|
||||
mov eax,40 ; get com 1 data with irq 4
|
||||
mov ebx,0000000000010000b shl 16 + 101b
|
||||
mcall
|
||||
|
||||
red:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,10 ; wait here for event
|
||||
mcall
|
||||
dec eax
|
||||
jz red
|
||||
dec eax
|
||||
dec eax
|
||||
jnz readir
|
||||
|
||||
button: ; button
|
||||
mov al,17 ; get id
|
||||
mcall
|
||||
|
||||
; we have only one button, close
|
||||
|
||||
mov eax,45 ; free irq
|
||||
mov ebx,1
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,46 ; free ports 0x3f0-0x3ff
|
||||
mov ebx,1
|
||||
mov ecx,0x3f0
|
||||
mov edx,0x3ff
|
||||
mcall
|
||||
|
||||
or eax,-1 ; close this program
|
||||
mcall
|
||||
|
||||
pos dd 0x0
|
||||
|
||||
cdplayer:
|
||||
dd 7
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
db '/sys/CDP',0
|
||||
|
||||
readir:
|
||||
mov eax,42
|
||||
mov ebx,4
|
||||
mcall
|
||||
|
||||
cmp ebx,80
|
||||
jne nocd
|
||||
|
||||
mov eax,70
|
||||
mov ebx,cdplayer
|
||||
mcall
|
||||
|
||||
|
||||
nocd:
|
||||
|
||||
push ebx
|
||||
mov eax,[pos]
|
||||
add eax,1
|
||||
cmp eax,10*20+1
|
||||
jb noeaxz
|
||||
mov esi,text+10*4
|
||||
mov edi,text
|
||||
mov ecx,10*21*4
|
||||
cld
|
||||
rep movsb
|
||||
mov eax,13
|
||||
mov ebx,20*65536+260
|
||||
mov ecx,22*65536+220
|
||||
mov edx,[wcolor]
|
||||
mcall
|
||||
mov eax,10*19+1
|
||||
noeaxz:
|
||||
mov [pos],eax
|
||||
pop ebx
|
||||
and ebx,0xff
|
||||
call draw_data
|
||||
jmp still
|
||||
|
||||
|
||||
|
||||
|
||||
draw_data:
|
||||
|
||||
pusha
|
||||
|
||||
xchg eax,ebx
|
||||
|
||||
mov ecx,10
|
||||
shl ebx,2
|
||||
mov esi,3
|
||||
newnum:
|
||||
xor edx,edx
|
||||
div ecx
|
||||
add edx,48
|
||||
mov [ebx+text-1],dl
|
||||
dec ebx
|
||||
dec esi
|
||||
jnz newnum
|
||||
|
||||
call draw_text
|
||||
|
||||
popa
|
||||
|
||||
ret
|
||||
|
||||
|
||||
irqtable:
|
||||
|
||||
dd 0x3f8+0x01000000 ; + 01 = read byte, 02 read word
|
||||
dd 0
|
||||
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax,0 ; function 0 : define and draw window
|
||||
mov ebx,100*65536+300 ; [x start] *65536 + [x size]
|
||||
mov ecx,100*65536+250 ; [y start] *65536 + [y size]
|
||||
mov edx,[wcolor] ; color of work area RRGGBB,8->color
|
||||
mov edi,labelt ; caption string
|
||||
mcall
|
||||
|
||||
; ; WINDOW LABEL
|
||||
; mov eax,4 ; function 4 : write text to window
|
||||
; mov ebx,8*65536+8 ; [x start] *65536 + [y start]
|
||||
; mov ecx,0x00ffffff ; color of text RRGGBB
|
||||
; mov edx,labelt ; pointer to text beginning
|
||||
; mov esi,labellen-labelt ; text length
|
||||
; mcall
|
||||
|
||||
; CLOSE BUTTON
|
||||
; mov eax,8 ; function 8 : define and draw button
|
||||
; mov ebx,(300-19)*65536+12 ; [x start] *65536 + [x size]
|
||||
; mov ecx,5*65536+12 ; [y start] *65536 + [y size]
|
||||
; mov edx,1 ; button id
|
||||
; mov esi,0x5599cc ; button color RRGGBB
|
||||
; mcall
|
||||
|
||||
draw_text:
|
||||
|
||||
mov ebx,25*65536+35 ; draw info text with function 4
|
||||
mov ecx,0xffffff
|
||||
mov edx,text
|
||||
mov esi,40
|
||||
mov edi,20
|
||||
newline:
|
||||
mov eax,4
|
||||
mcall
|
||||
add ebx,10
|
||||
add edx,esi
|
||||
dec edi
|
||||
jne newline
|
||||
|
||||
mov eax,12
|
||||
mov ebx,2
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
wcolor dd 0x13000000
|
||||
|
||||
labelt db 'INFRARED RECEIVER FOR IRMAN IN COM 1',0
|
||||
|
||||
text:
|
||||
|
||||
I_END:
|
||||
+56
-50
@@ -1,50 +1,56 @@
|
||||
include '..\..\..\..\macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd mem
|
||||
dd mem
|
||||
dd 0
|
||||
dd 0
|
||||
|
||||
start:
|
||||
push 66
|
||||
pop eax
|
||||
push 4
|
||||
pop ebx
|
||||
mov cl, 45h ; NumLock scancode
|
||||
xor edx, edx
|
||||
mcall
|
||||
mov al, 40 ; ёЄрЁ°шх сшЄ√ єцх юсэєыхэ√
|
||||
mov bl, 2 ; ёЄрЁ°шх сшЄ√ єцх юсэєыхэ√
|
||||
mcall
|
||||
event:
|
||||
push 10
|
||||
pop eax
|
||||
mcall
|
||||
; є эрё ьюцхЄ с√Є№ Єюы№ъю юфэю ёюс√Єшх - эрцрЄр ъыртш°р
|
||||
mov al, 2
|
||||
mcall
|
||||
cmp al, 2
|
||||
jnz event
|
||||
; є эрё хёЄ№ Єюы№ъю юфэр уюЁ ўр ъыртш°р
|
||||
push 70
|
||||
pop eax
|
||||
mov ebx, fileinfo
|
||||
mcall
|
||||
jmp event
|
||||
|
||||
fileinfo:
|
||||
dd 7
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
db '/sys/calc',0
|
||||
|
||||
i_end:
|
||||
align 16
|
||||
rb 16
|
||||
mem:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page Windows 1251 - Cyrillic
|
||||
|
||||
|
||||
include '..\..\..\macros.inc'
|
||||
use32
|
||||
db 'MENUET01'
|
||||
dd 1
|
||||
dd start
|
||||
dd i_end
|
||||
dd mem
|
||||
dd mem
|
||||
dd 0
|
||||
dd 0
|
||||
|
||||
start:
|
||||
push 66
|
||||
pop eax
|
||||
push 4
|
||||
pop ebx
|
||||
mov cl, 45h ; NumLock scancode
|
||||
xor edx, edx
|
||||
mcall
|
||||
mov al, 40 ; ёЄрЁ°шх сшЄ√ єцх юсэєыхэ√
|
||||
mov bl, 2 ; ёЄрЁ°шх сшЄ√ єцх юсэєыхэ√
|
||||
mcall
|
||||
event:
|
||||
push 10
|
||||
pop eax
|
||||
mcall
|
||||
; є эрё ьюцхЄ с√Є№ Єюы№ъю юфэю ёюс√Єшх - эрцрЄр ъыртш°р
|
||||
mov al, 2
|
||||
mcall
|
||||
cmp al, 2
|
||||
jnz event
|
||||
; є эрё хёЄ№ Єюы№ъю юфэр уюЁ ўр ъыртш°р
|
||||
push 70
|
||||
pop eax
|
||||
mov ebx, fileinfo
|
||||
mcall
|
||||
jmp event
|
||||
|
||||
fileinfo:
|
||||
dd 7
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
db '/sys/calc',0
|
||||
|
||||
i_end:
|
||||
align 16
|
||||
rb 16
|
||||
mem:
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+135
-130
@@ -1,130 +1,135 @@
|
||||
;компонент OptionBox (основан на Checkbox)
|
||||
;Огромная благодарность Maxxxx32, Diamond, Heavyiron и другим программистам, и их программам, без
|
||||
;которых я не смог бы написать этот компонент.
|
||||
;21.02.2007 модернизация и поддержка двух разных вариантов с использованием сис цветов и старой схемой
|
||||
;19.02.2007 общее улучшение кода, уменьшение размера и использование системных цветов для отображения optionkbox
|
||||
;16.02.2007 дата создания компонента
|
||||
;<Lrz> - Теплов Алексей www.lrz.land.ru
|
||||
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0x0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 0x1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd (i_end+0x100) and not 3 ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd (i_end+0x100) and not 3 ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0x0,0x0 ; указатель на строку с параметрами.
|
||||
; если после запуска не равно нулю, приложение было
|
||||
; запущено с параметрами из командной строки
|
||||
|
||||
; указатель на строку, в которую записан путь,
|
||||
; откуда запущено приложение
|
||||
;------------------
|
||||
include '..\..\..\..\macros.inc'
|
||||
include 'optionbox.inc' ;включить файл opeck.inc
|
||||
|
||||
version_op ;вариант, при котором используются цвета, которые задает пользователь
|
||||
; version_op1 ;цвета берутся из системы
|
||||
use_option_box ;используя макросы,внести процедуры для рисования optionbox
|
||||
align 16
|
||||
;Область кода
|
||||
start: ;Точка входа в программу
|
||||
mov eax,48 ;получить системные цвета
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
|
||||
mov eax,40 ;установить маску для ожидаемых событий
|
||||
mov ebx,0x25 ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
|
||||
mcall
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
still: ;основной обработчик
|
||||
mov eax,10 ;Ожидать события
|
||||
mcall ;ожидать событие в течение 2 миллисекунд
|
||||
|
||||
cmp al,0x1 ;если изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x3 ;если нажата кнопка то перейти
|
||||
jz button
|
||||
mouse_option_boxes option_boxes,option_boxes_end ;проверка чек бокса
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
button:
|
||||
; mov eax,17 ;получить идентификатор нажатой клавиши
|
||||
; mcall
|
||||
; test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
; jz still
|
||||
or eax,-1 ;в eax,-1 - 5 ,байтов у нас же только 3 выйти
|
||||
mcall ;далее выполняется выход из программы
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
draw_window: ;рисование окна приложения
|
||||
mov eax,12 ;в регистр внести значение = 12
|
||||
mov ebx,1 ;присвоить 1
|
||||
mcall
|
||||
|
||||
xor eax,eax ;обнулить eax
|
||||
mov ebx,50*65536+180 ;[координата по оси x]*65536 + [размер по оси x]
|
||||
mov ecx,30*65536+200 ;[координата по оси y]*65536 + [размер по оси y]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||||
or edx,0xb3000000
|
||||
mov edi,hed
|
||||
mcall ;нарисовать окно приложения
|
||||
|
||||
draw_option_boxes option_boxes,option_boxes_end ;рисование чекбоксов
|
||||
|
||||
mov eax,12 ;Функция 12 - начать/закончить перерисовку окна.
|
||||
mov ebx,2 ;Подфункция 2 - закончить перерисовку окна.
|
||||
mcall
|
||||
ret
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
;Формат данных чек бокса:
|
||||
;10 - координата чек бокса по х
|
||||
;30 - координата чек бокса по у
|
||||
;0
|
||||
;0 - цвет рамки чек бокса
|
||||
;0 - цвет текста надписи
|
||||
;op_text.1 - указатель на начало строки
|
||||
;option_group1 - это признак группы, т.е. этот код может обрабатывать много групп из optibox
|
||||
;op_text.e1-op_text.1 - длина строки
|
||||
;
|
||||
align 16
|
||||
option_boxes:
|
||||
;op1 option_box1 option_group1,10,15,op_text.1,op_text.e1-op_text.1
|
||||
;op2 option_box1 option_group1,10,30,op_text.2,op_text.e2-op_text.2
|
||||
;op3 option_box1 option_group1,10,45,op_text.3,op_text.e3-op_text.3
|
||||
;op11 option_box1 option_group2,10,80,op_text.1,op_text.e1-op_text.1
|
||||
;op12 option_box1 option_group2,10,95,op_text.2,op_text.e2-op_text.2
|
||||
;op13 option_box1 option_group2,10,110,op_text.3,op_text.e3-op_text.3
|
||||
;
|
||||
;struc option_box point_gr,left,top,color,border_color,text_color,text,text_length
|
||||
op1 option_box option_group1,10,15,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op2 option_box option_group1,10,30,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op3 option_box option_group1,10,45,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
op11 option_box option_group2,10,80,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op12 option_box option_group2,10,95,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op13 option_box option_group2,10,110,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
|
||||
option_boxes_end:
|
||||
|
||||
op_text: ; Сопровождающий текст для чек боксов
|
||||
.1 db 'Option_Box #1'
|
||||
.e1:
|
||||
.2 db 'Option_Box #2'
|
||||
.e2:
|
||||
.3 db 'Option_Box #3'
|
||||
.e3:
|
||||
|
||||
option_group1 dd op1 ;указатели, они отображаются по умолчанию, когда выводится
|
||||
option_group2 dd op11 ;приложение
|
||||
|
||||
hed db 'Optionbox [21.02.2007]',0 ;заголовок приложения
|
||||
sc system_colors
|
||||
i_end: ;конец кода
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
;компонент OptionBox (основан на Checkbox)
|
||||
;Огромная благодарность Maxxxx32, Diamond, Heavyiron и другим программистам, и их программам, без
|
||||
;которых я не смог бы написать этот компонент.
|
||||
;21.02.2007 модернизация и поддержка двух разных вариантов с использованием сис цветов и старой схемой
|
||||
;19.02.2007 общее улучшение кода, уменьшение размера и использование системных цветов для отображения optionkbox
|
||||
;16.02.2007 дата создания компонента
|
||||
;<Lrz> - Теплов Алексей www.lrz.land.ru
|
||||
|
||||
;заголовок приложения
|
||||
use32 ; транслятор, использующий 32 разрядных команды
|
||||
org 0x0 ; базовый адрес кода, всегда 0x0
|
||||
db 'MENUET01' ; идентификатор исполняемого файла (8 байт)
|
||||
dd 0x1 ; версия формата заголовка исполняемого файла
|
||||
dd start ; адрес, на который система передаёт управление
|
||||
; после загрузки приложения в память
|
||||
dd i_end ; размер приложения
|
||||
dd (i_end+0x100) and not 3 ; Объем используемой памяти, для стека отведем 0х100 байт и выровним на грницу 4 байта
|
||||
dd (i_end+0x100) and not 3 ; расположим позицию стека в области памяти, сразу за телом программы. Вершина стека в диапазоне памяти, указанном выше
|
||||
dd 0x0,0x0 ; указатель на строку с параметрами.
|
||||
; если после запуска не равно нулю, приложение было
|
||||
; запущено с параметрами из командной строки
|
||||
|
||||
; указатель на строку, в которую записан путь,
|
||||
; откуда запущено приложение
|
||||
;------------------
|
||||
include '..\..\..\macros.inc'
|
||||
include 'optionbox.inc' ;включить файл opeck.inc
|
||||
|
||||
version_op ;вариант, при котором используются цвета, которые задает пользователь
|
||||
; version_op1 ;цвета берутся из системы
|
||||
use_option_box ;используя макросы,внести процедуры для рисования optionbox
|
||||
align 16
|
||||
;Область кода
|
||||
start: ;Точка входа в программу
|
||||
mov eax,48 ;получить системные цвета
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
mcall
|
||||
|
||||
mov eax,40 ;установить маску для ожидаемых событий
|
||||
mov ebx,0x25 ;система будет реагировать только на сообщение о перерисовке,нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
|
||||
mcall
|
||||
red_win:
|
||||
call draw_window ;первоначально необходимо нарисовать окно
|
||||
still: ;основной обработчик
|
||||
mov eax,10 ;Ожидать события
|
||||
mcall ;ожидать событие в течение 2 миллисекунд
|
||||
|
||||
cmp al,0x1 ;если изменилось положение окна
|
||||
jz red_win
|
||||
cmp al,0x3 ;если нажата кнопка то перейти
|
||||
jz button
|
||||
mouse_option_boxes option_boxes,option_boxes_end ;проверка чек бокса
|
||||
jmp still ;если ничего из перечисленного то снова в цикл
|
||||
button:
|
||||
; mov eax,17 ;получить идентификатор нажатой клавиши
|
||||
; mcall
|
||||
; test ah,ah ;если в ah 0, то перейти на обработчик событий still
|
||||
; jz still
|
||||
or eax,-1 ;в eax,-1 - 5 ,байтов у нас же только 3 выйти
|
||||
mcall ;далее выполняется выход из программы
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
draw_window: ;рисование окна приложения
|
||||
mov eax,12 ;в регистр внести значение = 12
|
||||
mov ebx,1 ;присвоить 1
|
||||
mcall
|
||||
|
||||
xor eax,eax ;обнулить eax
|
||||
mov ebx,50*65536+180 ;[координата по оси x]*65536 + [размер по оси x]
|
||||
mov ecx,30*65536+200 ;[координата по оси y]*65536 + [размер по оси y]
|
||||
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
|
||||
or edx,0xb3000000
|
||||
mov edi,hed
|
||||
mcall ;нарисовать окно приложения
|
||||
|
||||
draw_option_boxes option_boxes,option_boxes_end ;рисование чекбоксов
|
||||
|
||||
mov eax,12 ;Функция 12 - начать/закончить перерисовку окна.
|
||||
mov ebx,2 ;Подфункция 2 - закончить перерисовку окна.
|
||||
mcall
|
||||
ret
|
||||
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
;DATA данные
|
||||
;Формат данных чек бокса:
|
||||
;10 - координата чек бокса по х
|
||||
;30 - координата чек бокса по у
|
||||
;0
|
||||
;0 - цвет рамки чек бокса
|
||||
;0 - цвет текста надписи
|
||||
;op_text.1 - указатель на начало строки
|
||||
;option_group1 - это признак группы, т.е. этот код может обрабатывать много групп из optibox
|
||||
;op_text.e1-op_text.1 - длина строки
|
||||
;
|
||||
align 16
|
||||
option_boxes:
|
||||
;op1 option_box1 option_group1,10,15,op_text.1,op_text.e1-op_text.1
|
||||
;op2 option_box1 option_group1,10,30,op_text.2,op_text.e2-op_text.2
|
||||
;op3 option_box1 option_group1,10,45,op_text.3,op_text.e3-op_text.3
|
||||
;op11 option_box1 option_group2,10,80,op_text.1,op_text.e1-op_text.1
|
||||
;op12 option_box1 option_group2,10,95,op_text.2,op_text.e2-op_text.2
|
||||
;op13 option_box1 option_group2,10,110,op_text.3,op_text.e3-op_text.3
|
||||
;
|
||||
;struc option_box point_gr,left,top,color,border_color,text_color,text,text_length
|
||||
op1 option_box option_group1,10,15,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op2 option_box option_group1,10,30,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op3 option_box option_group1,10,45,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
op11 option_box option_group2,10,80,0xffffff,0,0,op_text.1,op_text.e1-op_text.1
|
||||
op12 option_box option_group2,10,95,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
|
||||
op13 option_box option_group2,10,110,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
|
||||
|
||||
option_boxes_end:
|
||||
|
||||
op_text: ; Сопровождающий текст для чек боксов
|
||||
.1 db 'Option_Box #1'
|
||||
.e1:
|
||||
.2 db 'Option_Box #2'
|
||||
.e2:
|
||||
.3 db 'Option_Box #3'
|
||||
.e3:
|
||||
|
||||
option_group1 dd op1 ;указатели, они отображаются по умолчанию, когда выводится
|
||||
option_group2 dd op11 ;приложение
|
||||
|
||||
hed db 'Optionbox [21.02.2007]',0 ;заголовок приложения
|
||||
sc system_colors
|
||||
i_end: ;конец кода
|
||||
File renamed without changes.
File renamed without changes.
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
+238
-232
@@ -1,232 +1,238 @@
|
||||
;
|
||||
; COMMUNICATING WITH MODEM: PORTS & IRQ
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
|
||||
include "lang.inc"
|
||||
include "..\..\..\..\macros.inc"
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd 0x1000 ; memory for app
|
||||
dd 0x1000 ; esp
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
|
||||
mov eax,45 ; reserve irq 4
|
||||
mov ebx,0
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,46 ; reserve ports 0x3f8-0x3ff
|
||||
mov ebx,0
|
||||
mov ecx,0x3f8
|
||||
mov edx,0x3ff
|
||||
mcall
|
||||
|
||||
mov eax,44 ; read these ports at interrupt/irq 4
|
||||
mov ebx,irqtable
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,40 ; enable event for interrupt/irq 4
|
||||
mov ebx,10000b shl 16 + 111b
|
||||
mcall
|
||||
|
||||
call program_com1
|
||||
|
||||
mov eax, 48
|
||||
mov ebx, 3
|
||||
mov ecx, sc
|
||||
mov edx, sizeof.system_colors
|
||||
mcall
|
||||
|
||||
red:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,10 ; wait here for event
|
||||
mcall
|
||||
|
||||
cmp eax,1 ; redraw request ?
|
||||
je red
|
||||
cmp eax,2 ; key in buffer ?
|
||||
je key
|
||||
cmp eax,3 ; button in buffer ?
|
||||
je button
|
||||
cmp eax,16+4 ; data read by interrupt ?
|
||||
je irq4
|
||||
|
||||
jmp still
|
||||
|
||||
key: ; key
|
||||
mov eax,2 ; just read it and ignore
|
||||
mcall
|
||||
|
||||
mov al,ah
|
||||
mov dx,0x3f8
|
||||
out dx,al
|
||||
|
||||
jmp still
|
||||
|
||||
button: ; button
|
||||
or eax,-1 ; close this program
|
||||
mcall
|
||||
|
||||
|
||||
irq4:
|
||||
|
||||
mov eax,42
|
||||
mov ebx,4
|
||||
mcall
|
||||
|
||||
; eax = number of bytes left
|
||||
; ecx = 0 success, =1 fail
|
||||
; bl = byte
|
||||
|
||||
inc [pos]
|
||||
and [pos],31
|
||||
mov eax,[pos]
|
||||
|
||||
mov [string+eax], bl
|
||||
call draw_string
|
||||
|
||||
jmp still
|
||||
|
||||
|
||||
baudrate_9600 equ 12
|
||||
baudrate_57600 equ 2
|
||||
|
||||
program_com1:
|
||||
|
||||
mov dx,0x3f8+3
|
||||
mov al,0x80
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+1
|
||||
mov al,0x00
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+0
|
||||
mov al,baudrate_9600
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+3
|
||||
mov al,0x3
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+4
|
||||
mov al,0xb
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+1
|
||||
mov al,0x1
|
||||
out dx,al
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax, 12 ; function 12:tell os about windowdraw
|
||||
mov ebx, 1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax, 0 ; function 0 : define and draw window
|
||||
mov ebx, 100*65536+250 ; [x start] *65536 + [x size]
|
||||
mov ecx, 100*65536+85 ; [y start] *65536 + [y size]
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x03000000 ; color of work area RRGGBB,8->color gl
|
||||
mcall
|
||||
|
||||
; WINDOW LABEL
|
||||
mov eax, 4 ; function 4 : write text to window
|
||||
mov ebx, 8*65536+8 ; [x start] *65536 + [y start]
|
||||
mov ecx, [sc.grab_text]
|
||||
or ecx, 0x10000000 ; font 1 & color ( 0xF0RRGGBB )
|
||||
mov edx, title ; pointer to text beginning
|
||||
mov esi, title.len ; text length
|
||||
mcall
|
||||
|
||||
mov eax, 4 ; draw text
|
||||
mov ebx, 20*65536+33
|
||||
mov ecx, [sc.work_text]
|
||||
mov edx, text+4
|
||||
.nextstr:
|
||||
mov esi, [edx-4]
|
||||
test esi, 0xFF000000
|
||||
jnz .finstr
|
||||
mcall
|
||||
add edx, esi
|
||||
add edx, 4
|
||||
add ebx, 10
|
||||
jmp .nextstr
|
||||
.finstr:
|
||||
|
||||
call draw_string
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
draw_string:
|
||||
mov eax, 4
|
||||
mov ebx, 20*65536+65
|
||||
mov ecx, [sc.work_text]
|
||||
mov edx, string
|
||||
mov esi, 32
|
||||
mcall
|
||||
ret
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
|
||||
if lang eq ru_RU
|
||||
text mstr "ВВОДИМЫЕ СИМВОЛЫ ПЕРЕДАЮТСЯ МОДЕМУ.",\
|
||||
"ДАННЫЕ ОТ МОДЕМА СЧИТЫВАЮТСЯ ПО",\
|
||||
"ПРЕРЫВАНИЮ IRQ4 И ОТОБРАЖАЮТСЯ НИЖЕ."
|
||||
title:
|
||||
db 'МОДЕМ НА COM1'
|
||||
.len = $ - title
|
||||
else
|
||||
text mstr "TYPED CHARACTERS ARE SENT TO MODEM.",\
|
||||
"DATA FROM MODEM IS READ BY IRQ4",\
|
||||
"INTERRUPT AND DISPLAYED BELOW."
|
||||
title:
|
||||
db 'MODEM AT COM1'
|
||||
.len = $ - title
|
||||
end if
|
||||
|
||||
pos dd 0x0
|
||||
|
||||
irqtable:
|
||||
; port ; 1=byte, 2=word
|
||||
dd 0x3f8 +0x01000000 ; read byte from port 0x3f8 at interrupt/irq 4
|
||||
dd 0x0 ; no more ports ( max 15 ) to read
|
||||
|
||||
|
||||
I_END:
|
||||
|
||||
string rb 32
|
||||
sc system_colors
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;
|
||||
; COMMUNICATING WITH MODEM: PORTS & IRQ
|
||||
;
|
||||
; Compile with FASM
|
||||
;
|
||||
|
||||
include "lang.inc"
|
||||
include "..\..\..\macros.inc"
|
||||
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd 0x1000 ; memory for app
|
||||
dd 0x1000 ; esp
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
|
||||
|
||||
START: ; start of execution
|
||||
|
||||
|
||||
mov eax,45 ; reserve irq 4
|
||||
mov ebx,0
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,46 ; reserve ports 0x3f8-0x3ff
|
||||
mov ebx,0
|
||||
mov ecx,0x3f8
|
||||
mov edx,0x3ff
|
||||
mcall
|
||||
|
||||
mov eax,44 ; read these ports at interrupt/irq 4
|
||||
mov ebx,irqtable
|
||||
mov ecx,4
|
||||
mcall
|
||||
|
||||
mov eax,40 ; enable event for interrupt/irq 4
|
||||
mov ebx,10000b shl 16 + 111b
|
||||
mcall
|
||||
|
||||
call program_com1
|
||||
|
||||
mov eax, 48
|
||||
mov ebx, 3
|
||||
mov ecx, sc
|
||||
mov edx, sizeof.system_colors
|
||||
mcall
|
||||
|
||||
red:
|
||||
call draw_window
|
||||
|
||||
still:
|
||||
|
||||
mov eax,10 ; wait here for event
|
||||
mcall
|
||||
|
||||
cmp eax,1 ; redraw request ?
|
||||
je red
|
||||
cmp eax,2 ; key in buffer ?
|
||||
je key
|
||||
cmp eax,3 ; button in buffer ?
|
||||
je button
|
||||
cmp eax,16+4 ; data read by interrupt ?
|
||||
je irq4
|
||||
|
||||
jmp still
|
||||
|
||||
key: ; key
|
||||
mov eax,2 ; just read it and ignore
|
||||
mcall
|
||||
|
||||
mov al,ah
|
||||
mov dx,0x3f8
|
||||
out dx,al
|
||||
|
||||
jmp still
|
||||
|
||||
button: ; button
|
||||
or eax,-1 ; close this program
|
||||
mcall
|
||||
|
||||
|
||||
irq4:
|
||||
|
||||
mov eax,42
|
||||
mov ebx,4
|
||||
mcall
|
||||
|
||||
; eax = number of bytes left
|
||||
; ecx = 0 success, =1 fail
|
||||
; bl = byte
|
||||
|
||||
inc [pos]
|
||||
and [pos],31
|
||||
mov eax,[pos]
|
||||
|
||||
mov [string+eax], bl
|
||||
call draw_string
|
||||
|
||||
jmp still
|
||||
|
||||
|
||||
baudrate_9600 equ 12
|
||||
baudrate_57600 equ 2
|
||||
|
||||
program_com1:
|
||||
|
||||
mov dx,0x3f8+3
|
||||
mov al,0x80
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+1
|
||||
mov al,0x00
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+0
|
||||
mov al,baudrate_9600
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+3
|
||||
mov al,0x3
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+4
|
||||
mov al,0xb
|
||||
out dx,al
|
||||
|
||||
mov dx,0x3f8+1
|
||||
mov al,0x1
|
||||
out dx,al
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
; *********************************************
|
||||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||||
; *********************************************
|
||||
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax, 12 ; function 12:tell os about windowdraw
|
||||
mov ebx, 1 ; 1, start of draw
|
||||
mcall
|
||||
|
||||
; DRAW WINDOW
|
||||
mov eax, 0 ; function 0 : define and draw window
|
||||
mov ebx, 100*65536+250 ; [x start] *65536 + [x size]
|
||||
mov ecx, 100*65536+85 ; [y start] *65536 + [y size]
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x03000000 ; color of work area RRGGBB,8->color gl
|
||||
mcall
|
||||
|
||||
; WINDOW LABEL
|
||||
mov eax, 4 ; function 4 : write text to window
|
||||
mov ebx, 8*65536+8 ; [x start] *65536 + [y start]
|
||||
mov ecx, [sc.grab_text]
|
||||
or ecx, 0x10000000 ; font 1 & color ( 0xF0RRGGBB )
|
||||
mov edx, title ; pointer to text beginning
|
||||
mov esi, title.len ; text length
|
||||
mcall
|
||||
|
||||
mov eax, 4 ; draw text
|
||||
mov ebx, 20*65536+33
|
||||
mov ecx, [sc.work_text]
|
||||
mov edx, text+4
|
||||
.nextstr:
|
||||
mov esi, [edx-4]
|
||||
test esi, 0xFF000000
|
||||
jnz .finstr
|
||||
mcall
|
||||
add edx, esi
|
||||
add edx, 4
|
||||
add ebx, 10
|
||||
jmp .nextstr
|
||||
.finstr:
|
||||
|
||||
call draw_string
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
mcall
|
||||
|
||||
ret
|
||||
|
||||
|
||||
draw_string:
|
||||
mov eax, 4
|
||||
mov ebx, 20*65536+65
|
||||
mov ecx, [sc.work_text]
|
||||
mov edx, string
|
||||
mov esi, 32
|
||||
mcall
|
||||
ret
|
||||
|
||||
|
||||
; DATA AREA
|
||||
|
||||
|
||||
if lang eq ru_RU
|
||||
text mstr "ВВОДИМЫЕ СИМВОЛЫ ПЕРЕДАЮТСЯ МОДЕМУ.",\
|
||||
"ДАННЫЕ ОТ МОДЕМА СЧИТЫВАЮТСЯ ПО",\
|
||||
"ПРЕРЫВАНИЮ IRQ4 И ОТОБРАЖАЮТСЯ НИЖЕ."
|
||||
title:
|
||||
db 'МОДЕМ НА COM1'
|
||||
.len = $ - title
|
||||
else
|
||||
text mstr "TYPED CHARACTERS ARE SENT TO MODEM.",\
|
||||
"DATA FROM MODEM IS READ BY IRQ4",\
|
||||
"INTERRUPT AND DISPLAYED BELOW."
|
||||
title:
|
||||
db 'MODEM AT COM1'
|
||||
.len = $ - title
|
||||
end if
|
||||
|
||||
pos dd 0x0
|
||||
|
||||
irqtable:
|
||||
; port ; 1=byte, 2=word
|
||||
dd 0x3f8 +0x01000000 ; read byte from port 0x3f8 at interrupt/irq 4
|
||||
dd 0x0 ; no more ports ( max 15 ) to read
|
||||
|
||||
|
||||
I_END:
|
||||
|
||||
string rb 32
|
||||
sc system_colors
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+7
-1
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
; <--- description --->
|
||||
; compiler: FASM 1.67
|
||||
; name: Basic window example for KolibriOS
|
||||
@@ -9,7 +15,7 @@
|
||||
|
||||
; <--- include all KolibriOS stuff --->
|
||||
include "lang.inc" ; Language support for locales: ru_RU (CP866), fr_FR, en_US.
|
||||
include "..\..\..\..\macros.inc"
|
||||
include "..\..\..\macros.inc"
|
||||
|
||||
|
||||
; <--- start of KolibriOS application --->
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../../.." or tup.getconfig("HELPERDIR")
|
||||
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
|
||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||
add_include(tup.getvariantdir())
|
||||
|
||||
File renamed without changes.
File renamed without changes.
+6
-1
@@ -1,3 +1,8 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
;
|
||||
; THREAD EXAMPLE
|
||||
;
|
||||
@@ -16,7 +21,7 @@
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
|
||||
include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
|
||||
include '..\..\..\..\macros.inc'
|
||||
include '..\..\..\macros.inc'
|
||||
|
||||
|
||||
START: ; start of execution
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* An example of using threads to create a copy of a window.
|
||||
* Built on top of the /programs/develop/examples/thread/trunk/thread.asm example.
|
||||
* Built on top of the /programs/develop/examples/thread/thread.asm example.
|
||||
*
|
||||
* Created by turbocat (Maxim Logaev) 2021.
|
||||
*/
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
; Picture browser by lisovin@26.ru
|
||||
; Modified by Ivan Poddubny - v.0.3
|
||||
; Modified by Diamond - v.0.4
|
||||
@@ -37,7 +43,7 @@
|
||||
include 'lang.inc'
|
||||
; Language support for locales: ru_RU (CP866), en_US, de_DE.
|
||||
include '..\..\..\..\macros.inc'
|
||||
include '..\..\..\..\develop\examples\editbox\trunk\editbox.inc'
|
||||
include '..\..\..\..\develop\examples\editbox\editbox.inc'
|
||||
;include 'macros.inc'
|
||||
;include 'EDITBOX.INC'
|
||||
use_edit_box
|
||||
|
||||
Reference in new issue
Block a user