merge upstream
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
format coff
|
||||
use32 ; Tell compiler to use 32 bit instructions
|
||||
|
||||
@@ -8,7 +11,7 @@ include '../../../programs/macros.inc'
|
||||
purge section,mov,add,sub
|
||||
|
||||
include '../../../programs/develop/libraries/box_lib/trunk/box_lib.mac'
|
||||
include '../../../programs/system/run/trunk/txtbut.inc'
|
||||
include '../../../programs/system/run/txtbut.inc'
|
||||
include '../../../programs/dll.inc'
|
||||
|
||||
public init_boxlib as '_kolibri_boxlib_init'
|
||||
@@ -159,8 +162,8 @@ public path_show_draw as '_path_show_draw'
|
||||
|
||||
public fb_draw_panel as '_filebrowse_draw'
|
||||
public fb_mouse as '_filebrowse_mouse'
|
||||
public fb_key as '_filebrowse_key'
|
||||
|
||||
public fb_key as '_filebrowse_key'
|
||||
|
||||
public ted_but_sumb_upper as '_ted_but_sumb_upper'
|
||||
public ted_but_sumb_lover as '_ted_but_sumb_lover'
|
||||
public ted_but_convert_by_table as '_ted_but_convert_by_table'
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
@@unpack$qqspvt1 equ unpack
|
||||
|
||||
include "..\..\system\skincfg\trunk\kglobals.inc"
|
||||
include "..\..\system\skincfg\trunk\unpacker.inc"
|
||||
|
||||
IncludeIGlobals
|
||||
IncludeUGlobals
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
@@unpack$qqspvt1 equ unpack
|
||||
|
||||
include "..\..\system\skincfg\kglobals.inc"
|
||||
include "..\..\system\skincfg\unpacker.inc"
|
||||
|
||||
IncludeIGlobals
|
||||
IncludeUGlobals
|
||||
|
||||
+52
-53
@@ -58,30 +58,30 @@ echo Building system
|
||||
echo *
|
||||
fasm system\calendar\calendar.asm %BIN%\calendar
|
||||
fasm system\board\board.asm %BIN%\develop\board
|
||||
fasm system\commouse\trunk\commouse.asm %BIN%\commouse
|
||||
rem fasm system\commouse\trunk\commouse.asm %BIN%\commouse
|
||||
fasm system\cpu\cpu.asm %BIN%\cpu
|
||||
fasm system\cpuid\trunk\cpuid.asm %BIN%\cpuid
|
||||
fasm system\skincfg\trunk\skincfg.asm %BIN%\skincfg
|
||||
rem fasm system\cpuid\trunk\cpuid.asm %BIN%\cpuid
|
||||
fasm system\skincfg\skincfg.asm %BIN%\skincfg
|
||||
fasm system\docpack\docpack.asm %BIN%\docpack
|
||||
fasm system\end\trunk\end.asm %BIN%\end
|
||||
fasm system\end\end.asm %BIN%\end
|
||||
fasm system\gmon\gmon.asm %BIN%\gmon
|
||||
fasm system\icon\icon.asm %BIN%\icon
|
||||
fasm system\kbd\trunk\kbd.ASM %BIN%\kbd
|
||||
rem fasm system\kbd\trunk\kbd.ASM %BIN%\kbd
|
||||
fasm system\launcher\launcher.asm %BIN%\launcher
|
||||
fasm system\menu\menu.asm %BIN%\@menu
|
||||
fasm system\mgb\trunk\mgb.asm %BIN%\mgb
|
||||
rem fasm system\mgb\trunk\mgb.asm %BIN%\mgb
|
||||
fasm system\mousemul\mousemul.asm %BIN%\mousemul
|
||||
fasm system\PANEL\trunk\@TASKBAR.ASM %BIN%\@TASKBAR
|
||||
fasm system\pcidev\trunk\pcidev.asm %BIN%\pcidev
|
||||
fasm system\RB\trunk\@RB.ASM %BIN%\@RB
|
||||
fasm system\taskbar\TASKBAR.ASM %BIN%\@TASKBAR
|
||||
rem fasm system\pcidev\trunk\pcidev.asm %BIN%\pcidev
|
||||
rem fasm system\RB\trunk\@RB.ASM %BIN%\@RB
|
||||
fasm system\rdsave\rdsave.asm %BIN%\rdsave
|
||||
fasm system\run\trunk\run.asm %BIN%\run
|
||||
fasm system\setup\trunk\setup.asm %BIN%\setup
|
||||
fasm system\skinsel\skinsel.asm %BIN%\skinsel
|
||||
fasm system\ss\trunk\@ss.asm %BIN%\@ss
|
||||
fasm system\vrr\trunk\vrr.asm %BIN%\vrr
|
||||
fasm system\vrr_m\trunk\vrr_m.asm %BIN%\vrr_m
|
||||
fasm system\zkey\trunk\zkey.asm %BIN%\zkey
|
||||
fasm system\run\run.asm %BIN%\run
|
||||
fasm system\setup\setup.asm %BIN%\setup
|
||||
rem fasm system\skinsel\skinsel.asm %BIN%\skinsel
|
||||
rem fasm system\ss\trunk\@ss.asm %BIN%\@ss
|
||||
rem fasm system\vrr\trunk\vrr.asm %BIN%\vrr
|
||||
rem fasm system\vrr_m\trunk\vrr_m.asm %BIN%\vrr_m
|
||||
fasm system\zkey\zkey.asm %BIN%\zkey
|
||||
|
||||
echo *
|
||||
echo Building develop
|
||||
@@ -115,7 +115,7 @@ fasm fs\copy2\trunk\copy2.asm %BIN%\copy2
|
||||
fasm fs\copyr\trunk\copyr.asm %BIN%\copyr
|
||||
fasm fs\kfar\trunk\kfar.asm %BIN%\kfar
|
||||
rem fasm fs\mfar\trunk\mfar.asm %BIN%\mfar
|
||||
fasm fs\sysxtree\trunk\sysxtree.asm %BIN%\sysxtree
|
||||
rem fasm fs\sysxtree\trunk\sysxtree.asm %BIN%\sysxtree
|
||||
|
||||
echo *
|
||||
echo Building network
|
||||
@@ -155,7 +155,7 @@ echo Building other
|
||||
echo *
|
||||
rem fasm other\archer\trunk\@rcher.asm %BIN%\@rcher
|
||||
fasm other\calc\calc.asm %BIN%\calc
|
||||
fasm other\mhc\trunk\mhc.asm %BIN%\mhc
|
||||
rem fasm other\mhc\trunk\mhc.asm %BIN%\mhc
|
||||
fasm other\period\period.asm %BIN%\period
|
||||
fasm other\rtfread\rtfread.asm %BIN%\rtfread
|
||||
|
||||
@@ -164,17 +164,16 @@ echo Building media
|
||||
echo *
|
||||
rem media\ac97snd\trunk\ac97snd.asm ac97snd
|
||||
fasm media\animage\animage.asm %BIN%\animage
|
||||
fasm media\cdp\trunk\cdp.asm %BIN%\cdp
|
||||
fasm media\gifview\trunk\gifview.asm %BIN%\gifview
|
||||
fasm media\iconedit\trunk\iconedit.asm %BIN%\iconedit
|
||||
fasm media\jpegview\trunk\jpegview.asm %BIN%\jpegview
|
||||
fasm media\midamp\trunk\midamp.asm %BIN%\midamp
|
||||
fasm media\midiplay\trunk\midiplay.asm %BIN%\midiplay
|
||||
fasm media\mixer\trunk\mixer.asm %BIN%\mixer
|
||||
|
||||
fasm media\mv\trunk\mv.asm %BIN%\mv
|
||||
fasm media\pic4\trunk\pic4.asm %BIN%\pic4
|
||||
fasm media\sb\trunk\sb.asm %BIN%\sb
|
||||
rem fasm media\cdp\trunk\cdp.asm %BIN%\cdp
|
||||
rem fasm media\gifview\trunk\gifview.asm %BIN%\gifview
|
||||
rem fasm media\iconedit\trunk\iconedit.asm %BIN%\iconedit
|
||||
rem fasm media\jpegview\trunk\jpegview.asm %BIN%\jpegview
|
||||
fasm media\midamp\midamp.asm %BIN%\midamp
|
||||
fasm media\midiplay\midiplay.asm %BIN%\midiplay
|
||||
rem fasm media\mixer\trunk\mixer.asm %BIN%\mixer
|
||||
rem fasm media\mv\trunk\mv.asm %BIN%\mv
|
||||
fasm media\pic4\pic4.asm %BIN%\pic4
|
||||
rem fasm media\sb\trunk\sb.asm %BIN%\sb
|
||||
fasm media\scrshoot\scrshoot.asm %BIN%\scrshoot
|
||||
|
||||
echo *
|
||||
@@ -183,9 +182,9 @@ echo *
|
||||
fasm games\15\trunk\15.asm %BIN%\games\15
|
||||
fasm games\arcanii\trunk\arcanii.asm %BIN%\games\arcanii
|
||||
fasm games\arcanoid\trunk\arcanoid.asm %BIN%\games\arcanoid
|
||||
cd games\c4\trunk\
|
||||
pushd games\c4\trunk\
|
||||
nasmw -f bin -o ..\..\..\%BIN%\games\c4 c4.asm
|
||||
cd ..\..\..
|
||||
popd
|
||||
fasm games\freecell\freecell.asm %BIN%\games\freecell
|
||||
fasm games\mblocks\trunk\mblocks.asm %BIN%\games\mblocks
|
||||
fasm games\phenix\trunk\phenix.asm %BIN%\games\phenix
|
||||
@@ -204,28 +203,28 @@ echo *
|
||||
fasm demos\3dcube2\3dcube2.asm %BIN%\3d\3dcube2
|
||||
rem fasm demos\3detx60b\3detx60b.asm %BIN%\3d\3detx60b
|
||||
fasm demos\3dtcub10\3dtcub10.asm %BIN%\3d\3dtcub10
|
||||
cd demos\aclock\trunk\
|
||||
pushd demos\aclock\
|
||||
nasmw -t -f bin -o ..\..\..\%BIN%\demos\aclock aclock.asm
|
||||
cd ..\..\..
|
||||
popd
|
||||
fasm demos\bcdclk\bcdclk.asm %BIN%\demos\bcdclk
|
||||
fasm demos\bgitest\trunk\bgitest.asm %BIN%\fonts\bgitest
|
||||
rem fasm demos\bgitest\trunk\bgitest.asm %BIN%\fonts\bgitest
|
||||
fasm demos\colorref\colorref.asm %BIN%\demos\colorref
|
||||
fasm demos\crownscr\crownscr.asm %BIN%\3d\crownscr
|
||||
fasm demos\cslide\cslide.asm %BIN%\demos\cslide
|
||||
fasm demos\eyes\eyes.asm %BIN%\demos\eyes
|
||||
fasm demos\fire\fire.asm %BIN%\demos\fire
|
||||
fasm demos\fire2\fire2.asm %BIN%\demos\fire2
|
||||
fasm demos\firework\trunk\firework.asm %BIN%\demos\firework
|
||||
fasm demos\firework\firework.asm %BIN%\demos\firework
|
||||
fasm demos\free3d04\free3d04.asm %BIN%\3d\free3d04
|
||||
fasm demos\magnify\trunk\magnify.asm %BIN%\magnify
|
||||
fasm demos\movback\trunk\movback.asm %BIN%\demos\movback
|
||||
fasm demos\plasma\trunk\plasma.asm %BIN%\demos\plasma
|
||||
fasm demos\timer\trunk\timer.asm %BIN%\demos\timer
|
||||
fasm demos\tinyfrac\trunk\tinyfrac.asm %BIN%\demos\tinyfrac
|
||||
fasm demos\transp\trunk\transp.asm %BIN%\demos\transp
|
||||
fasm demos\trantest\trunk\trantest.asm %BIN%\demos\trantest
|
||||
fasm demos\tube\trunk\tube.asm %BIN%\demos\tube
|
||||
fasm demos\unvwater\trunk\unvwater.asm %BIN%\demos\unvwater
|
||||
rem fasm demos\magnify\trunk\magnify.asm %BIN%\magnify
|
||||
fasm demos\movback\movback.asm %BIN%\demos\movback
|
||||
fasm demos\plasma\plasma.asm %BIN%\demos\plasma
|
||||
fasm demos\timer\timer.asm %BIN%\demos\timer
|
||||
fasm demos\tinyfrac\tinyfrac.asm %BIN%\demos\tinyfrac
|
||||
fasm demos\transp\transp.asm %BIN%\demos\transp
|
||||
fasm demos\trantest\trantest.asm %BIN%\demos\trantest
|
||||
fasm demos\tube\tube.asm %BIN%\demos\tube
|
||||
fasm demos\unvwater\unvwater.asm %BIN%\demos\unvwater
|
||||
|
||||
echo *
|
||||
echo Building depend application for fdd's nightbuild
|
||||
@@ -234,12 +233,12 @@ echo __nightbuild fix yes >> config.inc
|
||||
fasm media\kiv\kiv.asm %BIN%\nightbuild\kiv
|
||||
fasm media\scrshoot\scrshoot.asm %BIN%\nightbuild\scrshoot
|
||||
fasm media\animage\animage.asm %BIN%\nightbuild\animage
|
||||
fasm media\midamp\trunk\midamp.asm %BIN%\nightbuild\midamp
|
||||
fasm media\midamp\midamp.asm %BIN%\nightbuild\midamp
|
||||
fasm develop\heed\trunk\heed.asm %BIN%\nightbuild\heed
|
||||
fasm develop\tinypad\trunk\tinypad.asm %BIN%\nightbuild\tinypad
|
||||
fasm system\skincfg\trunk\skincfg.asm %BIN%\nightbuild\skincfg
|
||||
fasm system\skincfg\skincfg.asm %BIN%\nightbuild\skincfg
|
||||
fasm system\hdd_info\hdd_info.asm %BIN%\nightbuild\hdd_info
|
||||
fasm system\mgb\trunk\mgb.asm %BIN%\nightbuild\mgb
|
||||
rem fasm system\mgb\trunk\mgb.asm %BIN%\nightbuild\mgb
|
||||
fasm system\rdsave\rdsave.asm %BIN%\nightbuild\rdsave
|
||||
fasm other\kpack\trunk\kpack.asm %BIN%\nightbuild\kpack
|
||||
fasm other\rtfread\rtfread.asm %BIN%\nightbuild\rtfread
|
||||
@@ -327,7 +326,7 @@ echo *
|
||||
kpack %BIN%\copy2
|
||||
kpack %BIN%\copyr
|
||||
kpack %BIN%\kfar
|
||||
kpack %BIN%\sysxtree
|
||||
rem kpack %BIN%\sysxtree
|
||||
|
||||
echo *
|
||||
echo Compressing network
|
||||
@@ -367,7 +366,7 @@ echo *
|
||||
|
||||
rem kpack %BIN%\@rcher
|
||||
kpack %BIN%\calc
|
||||
kpack %BIN%\mhc
|
||||
rem kpack %BIN%\mhc
|
||||
kpack %BIN%\period
|
||||
kpack %BIN%\rtfread
|
||||
|
||||
@@ -376,10 +375,10 @@ echo Compressing media
|
||||
echo *
|
||||
|
||||
kpack %BIN%\animage
|
||||
kpack %BIN%\cdp
|
||||
kpack %BIN%\gifview
|
||||
kpack %BIN%\iconedit
|
||||
kpack %BIN%\jpegview
|
||||
rem kpack %BIN%\cdp
|
||||
rem kpack %BIN%\gifview
|
||||
rem kpack %BIN%\iconedit
|
||||
rem kpack %BIN%\jpegview
|
||||
kpack %BIN%\midamp
|
||||
kpack %BIN%\midiplay
|
||||
kpack %BIN%\mixer
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
if tup.getconfig("NO_TCC") ~= "" 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_tcc.lua")
|
||||
|
||||
link_tcc("main.c", "kmatrix");
|
||||
@@ -1,4 +1,4 @@
|
||||
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")
|
||||
tup.rule("life.asm", FASM .. " %f %o " .. tup.getconfig("KPACK_CMD"), "life")
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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())
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;
|
||||
; TIMER (show how much system works)
|
||||
;
|
||||
@@ -17,7 +23,7 @@ use32
|
||||
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
|
||||
mov eax, 40
|
||||
@@ -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())
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; tinyfrac.asm
|
||||
;
|
||||
; teeny program displays the Mandelbrot set.
|
||||
@@ -82,7 +85,7 @@ use32
|
||||
dd 0,0
|
||||
|
||||
include 'lang.inc'
|
||||
include '..\..\..\macros.inc'
|
||||
include '..\..\macros.inc'
|
||||
|
||||
START:
|
||||
call draw_fractal
|
||||
@@ -173,39 +176,39 @@ still:
|
||||
call draw_fractal
|
||||
jmp still
|
||||
no_right:
|
||||
|
||||
|
||||
cmp al,19 ;'r'
|
||||
jne no_red
|
||||
mov ah,3
|
||||
call colorize
|
||||
jmp still
|
||||
no_red:
|
||||
|
||||
|
||||
cmp al,34 ;'g'
|
||||
jne no_green
|
||||
mov ah,4
|
||||
call colorize
|
||||
jmp still
|
||||
no_green:
|
||||
|
||||
|
||||
cmp al,48 ;'b'
|
||||
jne no_blue
|
||||
mov ah,5
|
||||
call colorize
|
||||
jmp still
|
||||
no_blue:
|
||||
|
||||
|
||||
cmp al,17 ;'w'
|
||||
jne no_set_as_wallpaper
|
||||
mcall 15, 1, PIXWIDTH, PIXHEIGHT
|
||||
mcall 15, 4, 1 ;mode 1-tiled, 0-stretch
|
||||
mcall 15, 5, IMGBUF, 0, PIXWIDTH*3*PIXHEIGHT
|
||||
mcall 15, 3
|
||||
mcall 15, 3
|
||||
no_set_as_wallpaper:
|
||||
|
||||
jmp still
|
||||
|
||||
colorize:
|
||||
colorize:
|
||||
shr eax,8
|
||||
sub eax,3
|
||||
imul eax,8
|
||||
@@ -392,13 +395,13 @@ scale db STARTSCALE
|
||||
draw_window:
|
||||
pusha
|
||||
mcall 12, 1
|
||||
|
||||
|
||||
mcall 48, 4 ;get skin height
|
||||
lea ecx, [50*65536+PIXHEIGHT+4+eax]
|
||||
mcall 0,<50,PIXWIDTH+9>,,0x74000000,,header_txt ;draw window
|
||||
|
||||
|
||||
call put_image
|
||||
|
||||
|
||||
mcall 12, 2
|
||||
popa
|
||||
ret
|
||||
@@ -425,4 +428,4 @@ STARTY dd 120
|
||||
scaleaddy dd 120
|
||||
scaleaddx dd 200
|
||||
|
||||
I_END:
|
||||
I_END:
|
||||
@@ -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())
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;
|
||||
; TRANSPARENT EXAMPLE
|
||||
;
|
||||
@@ -17,7 +20,7 @@ use32
|
||||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||||
|
||||
include 'lang.inc'
|
||||
include '..\..\..\macros.inc'
|
||||
include '..\..\macros.inc'
|
||||
|
||||
START: ; start of execution
|
||||
mov [procinfo.box.left], 100
|
||||
@@ -25,7 +28,7 @@ START: ; start of execution
|
||||
mov [procinfo.box.top], 80
|
||||
mov [procinfo.box.height], 300
|
||||
call draw_window
|
||||
red:
|
||||
red:
|
||||
call get_transparent
|
||||
call draw_window ; at first, draw the window
|
||||
|
||||
@@ -83,7 +86,7 @@ draw_window:
|
||||
mcall
|
||||
|
||||
call draw_transparent
|
||||
|
||||
|
||||
mov eax,12 ; function 12:tell os about windowdraw
|
||||
mov ebx,2 ; 2, end of draw
|
||||
mcall
|
||||
@@ -192,4 +195,3 @@ title db 'Transparent',0
|
||||
|
||||
I_END:
|
||||
procinfo process_information
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;
|
||||
; TRIANGLE SPEED TEST 3
|
||||
; 32 triangle draw use! 12300 triangle in sec on 800Mhz processor
|
||||
@@ -19,7 +22,7 @@ use32
|
||||
SCREEN_X equ 320 ;800
|
||||
SCREEN_Y equ 200 ;600
|
||||
|
||||
include '..\..\..\macros.inc'
|
||||
include '..\..\macros.inc'
|
||||
include 'lang.inc'
|
||||
include 'ascl.inc'
|
||||
include 'ascgl.inc'
|
||||
@@ -80,7 +83,7 @@ exit:
|
||||
|
||||
;Draw window
|
||||
draw_window:
|
||||
|
||||
|
||||
mov eax,12 ;Start
|
||||
mov ebx,1
|
||||
mcall
|
||||
@@ -227,7 +230,7 @@ filled_triangle:
|
||||
mov ecx,[@@ty2]
|
||||
cmp ecx,[@@ty3]
|
||||
jge @@end_loop23
|
||||
|
||||
|
||||
mov ebx,[@@tx2]
|
||||
shl ebx,12 ;7
|
||||
@@loop23:
|
||||
@@ -1,3 +1,6 @@
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
;"Web" demo for KolibriOS, version 0.3
|
||||
;Copyright Alexander Meshcheryakov (Self-Perfection), 2009
|
||||
;Contact me: alexander.s.m@gmail.com
|
||||
@@ -13,7 +16,7 @@ use32
|
||||
db 'MENUET01'
|
||||
dd 0x01,__start,__end,__memory,__stack,param,0
|
||||
|
||||
include '../../../macros.inc'
|
||||
include '../../macros.inc'
|
||||
|
||||
background_cl = 0x000000
|
||||
foreground_cl = 0xFFFFFF
|
||||
@@ -31,7 +34,7 @@ CODE
|
||||
mov ebx, EVM_REDRAW + EVM_KEY + EVM_BUTTON
|
||||
cmovz ebx, EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE
|
||||
mcall 40
|
||||
|
||||
|
||||
;Make cursor transparent
|
||||
mov edi, transparent_cursor
|
||||
xor eax, eax
|
||||
@@ -40,7 +43,7 @@ CODE
|
||||
mcall 37, 4, transparent_cursor, 2
|
||||
mov ecx, eax
|
||||
mcall 37, 5
|
||||
|
||||
|
||||
;Preinit. Randomize start counter
|
||||
mcall 3
|
||||
mov [initial_counter], eax ;init with system time
|
||||
@@ -51,7 +54,7 @@ CODE
|
||||
mov dword [y_max], eax ;store x_max and y_max
|
||||
shr eax, 1
|
||||
mov dword [radius], eax ;store radius and x_center
|
||||
|
||||
|
||||
;Calc line_number
|
||||
mov ax, [y_max]
|
||||
mov dx, 0
|
||||
@@ -90,7 +93,7 @@ CODE
|
||||
fninit
|
||||
fldpi
|
||||
fidiv word [half_line_number] ;Now st0 contains angle step of line start points
|
||||
|
||||
|
||||
mov eax, [line_coords_array_pointer] ;cleanup: comment
|
||||
movzx ecx, word [half_line_number]
|
||||
shl ecx, 1
|
||||
@@ -189,7 +192,7 @@ calculate_next_line_end_point:
|
||||
add eax, dword [image_pointer]
|
||||
inc eax
|
||||
mov [eax], byte red_cl_index
|
||||
|
||||
|
||||
movzx ebx, word [esi+end_y_offset]
|
||||
movzx eax, word [x_max]
|
||||
imul eax, ebx
|
||||
@@ -210,9 +213,9 @@ calculate_next_line_end_point:
|
||||
mov bx, word [esi+start_y_offset]
|
||||
cmp bx, word [esi+end_y_offset]
|
||||
jnz general_draw_line ;Jump to next test if dy!=0
|
||||
|
||||
|
||||
pusha
|
||||
|
||||
|
||||
movzx ecx, word [esi+end_x_offset]
|
||||
sub cx, word [esi+start_x_offset]
|
||||
|
||||
@@ -279,7 +282,7 @@ general_draw_line:
|
||||
neg cx
|
||||
neg edi
|
||||
@@:
|
||||
|
||||
|
||||
;compare abs(y1 - y0) and abs(x1 - x0)
|
||||
cmp bx, cx
|
||||
jnc @f
|
||||
@@ -348,7 +351,7 @@ line_drawing_end:
|
||||
movzx ebx, [x_max]
|
||||
movzx ecx, [y_max]
|
||||
mov edx, 0x01000000 ;Window style ;Draw nothing
|
||||
; mov edx, 0x00000000 ;Window style
|
||||
; mov edx, 0x00000000 ;Window style
|
||||
; mov esi, 0x00000000 ;Header color (prevent odd color line on top of window in random cases)
|
||||
mcall ;Define window
|
||||
|
||||
@@ -453,4 +456,4 @@ f70: ; run
|
||||
screensaver db ?
|
||||
transparent_cursor rd 32*32
|
||||
|
||||
MEOS_APP_END
|
||||
MEOS_APP_END
|
||||
+379
-373
@@ -1,373 +1,379 @@
|
||||
;------------------------------------------------------------------------------
|
||||
; @SS - screensaver
|
||||
;------------------------------------------------------------------------------
|
||||
; last update: 30/03/2012
|
||||
; changed by: Marat Zakiyanov aka Mario79, aka Mario
|
||||
; changes: The program uses only 4 Kb memory is now.
|
||||
; Code refactoring. Using transparent cursor.
|
||||
; Fix bug - using lots of buttons from f.8.
|
||||
;---------------------------------------------------------------------
|
||||
; SCREENSAVER APPLICATION by lisovin@26.ru
|
||||
;
|
||||
; Compile with FASM for Menuet
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd IM_END ; size of image
|
||||
dd I_END ; memory for app
|
||||
dd stack_top ; esp
|
||||
dd I_Param ; boot parameters
|
||||
dd 0x0 ; path
|
||||
;------------------------------------------------------------------------------
|
||||
include '..\..\..\macros.inc'
|
||||
;include 'debug.inc'
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
START:
|
||||
mcall 68,11
|
||||
mcall 40, EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE
|
||||
; boot parameters
|
||||
cmp [I_Param], dword '@ss'
|
||||
setz [screensaver]
|
||||
cmp [I_Param],dword 'ZERO'
|
||||
jne @f
|
||||
mov [type],dword 0
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
cmp [I_Param],dword 'ASSM'
|
||||
jne bgr_changed
|
||||
mov [type],dword 24
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
bgr_changed:
|
||||
|
||||
mcall 14
|
||||
mov [y_max],ax
|
||||
shr eax,16
|
||||
mov [x_max],ax
|
||||
shl eax,16
|
||||
mov [top_right_corner],eax
|
||||
|
||||
call create_ss
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
still:
|
||||
cmp al,2 ; key in buffer?
|
||||
jz key
|
||||
|
||||
cmp al,5 ; background redraw?
|
||||
jz bgr_changed
|
||||
; mouse event
|
||||
mcall 37,2 ; проверим кнопки
|
||||
and al,3
|
||||
cmp al,3 ; нажаты обе кнопки мыши?
|
||||
jnz still
|
||||
|
||||
mcall 37,0 ; проверим координаты
|
||||
cmp [top_right_corner],eax
|
||||
jnz still
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
key:
|
||||
mcall ; eax = 2
|
||||
jmp still
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
create_ss:
|
||||
mcall 40,100010b
|
||||
;set_new_cursor_skin - transparent cursor
|
||||
mcall 68,12,32*32*4 ; get memory for own cursor area
|
||||
|
||||
push eax
|
||||
mov ecx,eax
|
||||
mcall 37,4,,2 ; load own cursor
|
||||
|
||||
mov ecx,eax
|
||||
mcall 37,5 ; set own cursor
|
||||
|
||||
pop ecx
|
||||
mcall 68,13 ; free own cursor area
|
||||
|
||||
cmp [type],dword 0
|
||||
je drawsswin
|
||||
|
||||
cmp [type],dword 24
|
||||
je asminit
|
||||
|
||||
mov dword [delay],1
|
||||
mov [lx1],10 ; for "draw line"
|
||||
mov [lx2],40
|
||||
mov [ly1],50
|
||||
mov [ly2],100
|
||||
mov [addx1],1
|
||||
mov [addx2],1
|
||||
mov [addy1],1
|
||||
mov [addy2],1
|
||||
jmp drawsswin
|
||||
;--------------------------------------
|
||||
align 4
|
||||
asminit: ; for "assembler" - assembler sources demo
|
||||
; get size of file
|
||||
mov [fileinfo],dword 5
|
||||
mov [fileinfo.point],dword fileinfo_buffer
|
||||
mcall 70,fileinfo
|
||||
test eax,eax
|
||||
jnz .no_file
|
||||
; get memory for file
|
||||
mov ecx,[fileinfo_buffer+32]
|
||||
mov [fileinfo.size],ecx
|
||||
mcall 68,12
|
||||
mov [fileinfo.point],eax
|
||||
; load file
|
||||
mov [fileinfo],dword 0
|
||||
mcall 70,fileinfo
|
||||
test eax,eax
|
||||
jz @f
|
||||
mcall 68,13,[fileinfo.point]
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.no_file:
|
||||
mov [type],dword 0
|
||||
jmp drawsswin
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
mov dword [delay],1 ;25 - old value
|
||||
;--------------------------------------
|
||||
align 4
|
||||
asminit1:
|
||||
mov eax,[fileinfo.point]
|
||||
mov [stringstart],eax
|
||||
mov dword [stringlen],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
newpage:
|
||||
mov [stringpos],16
|
||||
;--------------------------------------
|
||||
align 4
|
||||
drawsswin:
|
||||
xor eax,eax
|
||||
movzx ebx,[x_max]
|
||||
movzx ecx,[y_max]
|
||||
inc ebx
|
||||
inc ecx
|
||||
mcall ,,,0x01000000
|
||||
|
||||
xor edx,edx
|
||||
;mcall 13 ;Leency - use transparent background
|
||||
;--------------------------------------
|
||||
align 4
|
||||
tstill:
|
||||
mcall 23,[delay]
|
||||
test eax,eax
|
||||
jnz thr_end
|
||||
|
||||
cmp [type],dword 0
|
||||
je tstill
|
||||
|
||||
cmp [type],dword 24
|
||||
je drawssasm
|
||||
|
||||
call draw_line
|
||||
jmp tstill
|
||||
;--------------------------------------
|
||||
align 4
|
||||
thr_end:
|
||||
cmp [screensaver], 0
|
||||
jz @f
|
||||
mcall 70, f70
|
||||
@@:
|
||||
cmp [type],dword 24
|
||||
jne @f
|
||||
mcall 68,13,[fileinfo.point]
|
||||
@@:
|
||||
and [params], not 1
|
||||
or eax,-1
|
||||
mcall
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
drawssasm:
|
||||
mov edi,[stringstart]
|
||||
add edi,[stringlen]
|
||||
dec edi
|
||||
|
||||
mov eax,edi
|
||||
sub eax,[fileinfo.point]
|
||||
|
||||
cmp eax,[fileinfo.size]
|
||||
ja asminit1
|
||||
|
||||
cmp word [edi],0x0a0d
|
||||
je addstring
|
||||
|
||||
cmp byte [edi],0x0a
|
||||
jne noaddstring
|
||||
|
||||
dec edi
|
||||
;--------------------------------------
|
||||
align 4
|
||||
addstring:
|
||||
add [stringpos],16
|
||||
add edi,2
|
||||
mov [stringstart],edi
|
||||
mov dword [stringlen],1
|
||||
mov ax,[stringpos]
|
||||
cmp ax,[y_max]
|
||||
jb tstill
|
||||
jmp newpage
|
||||
;--------------------------------------
|
||||
align 4
|
||||
noaddstring:
|
||||
mov ebx,[stringlen]
|
||||
shl ebx,19
|
||||
mov bx,[stringpos]
|
||||
mov edx,[stringstart]
|
||||
add edx,[stringlen]
|
||||
dec edx
|
||||
mcall 4,,0x104ba010,,1
|
||||
inc dword [stringlen]
|
||||
cmp [edi],byte ' '
|
||||
je drawssasm
|
||||
jmp tstill
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
draw_line:
|
||||
movzx esi,[x_max]
|
||||
movzx edi,[y_max]
|
||||
|
||||
mov eax,[addx1]
|
||||
add [lx1],eax
|
||||
mov eax,[addy1]
|
||||
add [ly1],eax
|
||||
|
||||
mov eax,[addx2]
|
||||
add [lx2],eax
|
||||
mov eax,[addy2]
|
||||
add [ly2],eax
|
||||
|
||||
cmp [lx1],1
|
||||
jge dl1
|
||||
mov [addx1],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl1:
|
||||
cmp [lx2],1
|
||||
jge dl2
|
||||
|
||||
mov [addx2],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl2:
|
||||
cmp [lx1],esi
|
||||
jbe dl3
|
||||
|
||||
mov [addx1],0xffffffff
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl3:
|
||||
cmp [lx2],esi
|
||||
jbe dl4
|
||||
|
||||
mov [addx2],0xffffffff
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl4:
|
||||
cmp [ly1],1
|
||||
jge dl5
|
||||
mov [addy1],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl5:
|
||||
cmp [ly2],2
|
||||
jge dl6
|
||||
|
||||
mov [addy2],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl6:
|
||||
cmp [ly1],edi
|
||||
jbe dl7
|
||||
|
||||
mov [addy1],-1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl7:
|
||||
cmp [ly2],edi
|
||||
jbe dl8
|
||||
|
||||
mov [addy2],-1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl8:
|
||||
mov eax,[lx2]
|
||||
cmp [lx1],eax
|
||||
jz dnol
|
||||
|
||||
mov bx,word [lx1]
|
||||
shl ebx,16
|
||||
mov bx,word [lx2]
|
||||
|
||||
mov cx,word [ly1]
|
||||
shl ecx,16
|
||||
mov cx,word [ly2]
|
||||
|
||||
mov edx,[lcolor]
|
||||
and edx,0xffffff
|
||||
mcall 38
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dnol:
|
||||
add [lcolor],0x010201
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
align 4 ; DATA AREA
|
||||
type dd 12
|
||||
delay dd 100
|
||||
lx1 dd 10
|
||||
lx2 dd 40
|
||||
ly1 dd 50
|
||||
ly2 dd 100
|
||||
addx1 dd 1
|
||||
addx2 dd 1
|
||||
addy1 dd 1
|
||||
addy2 dd 1
|
||||
stringlen dd 1
|
||||
stringstart dd 0
|
||||
|
||||
stringpos dw 16
|
||||
params db 0 ;if bit 0 set-ssaver works if bit 1 set-setup works
|
||||
|
||||
fileinfo:
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
.size: dd 0
|
||||
.point: dd 0
|
||||
db '/sys/macros.inc',0
|
||||
|
||||
f70: ; run
|
||||
dd 7, 0, 0, 0, 0
|
||||
db '/sys/@SS',0
|
||||
|
||||
screensaver db ?
|
||||
|
||||
;-------------------------------
|
||||
IM_END: ; UNINITIALIZED DATA
|
||||
top_right_corner rd 1
|
||||
align 4
|
||||
lcolor dd ?
|
||||
x_max dw ? ; размеры экрана
|
||||
y_max dw ?
|
||||
I_Param:
|
||||
fileinfo_buffer:
|
||||
rb 40
|
||||
;-------------------------------
|
||||
rb 512
|
||||
stack_top:
|
||||
I_END:
|
||||
; SPDX-License-Identifier: NOASSERTION
|
||||
;
|
||||
|
||||
; Text encoded with Code Page 866 - Cyrillic
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; @SS - screensaver
|
||||
;------------------------------------------------------------------------------
|
||||
; last update: 30/03/2012
|
||||
; changed by: Marat Zakiyanov aka Mario79, aka Mario
|
||||
; changes: The program uses only 4 Kb memory is now.
|
||||
; Code refactoring. Using transparent cursor.
|
||||
; Fix bug - using lots of buttons from f.8.
|
||||
;---------------------------------------------------------------------
|
||||
; SCREENSAVER APPLICATION by lisovin@26.ru
|
||||
;
|
||||
; Compile with FASM for Menuet
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; header version
|
||||
dd START ; start of code
|
||||
dd IM_END ; size of image
|
||||
dd I_END ; memory for app
|
||||
dd stack_top ; esp
|
||||
dd I_Param ; boot parameters
|
||||
dd 0x0 ; path
|
||||
;------------------------------------------------------------------------------
|
||||
include '..\..\macros.inc'
|
||||
;include 'debug.inc'
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
START:
|
||||
mcall 68,11
|
||||
mcall 40, EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE
|
||||
; boot parameters
|
||||
cmp [I_Param], dword '@ss'
|
||||
setz [screensaver]
|
||||
cmp [I_Param],dword 'ZERO'
|
||||
jne @f
|
||||
mov [type],dword 0
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
cmp [I_Param],dword 'ASSM'
|
||||
jne bgr_changed
|
||||
mov [type],dword 24
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
bgr_changed:
|
||||
|
||||
mcall 14
|
||||
mov [y_max],ax
|
||||
shr eax,16
|
||||
mov [x_max],ax
|
||||
shl eax,16
|
||||
mov [top_right_corner],eax
|
||||
|
||||
call create_ss
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
still:
|
||||
cmp al,2 ; key in buffer?
|
||||
jz key
|
||||
|
||||
cmp al,5 ; background redraw?
|
||||
jz bgr_changed
|
||||
; mouse event
|
||||
mcall 37,2 ; проверим кнопки
|
||||
and al,3
|
||||
cmp al,3 ; нажаты обе кнопки мыши?
|
||||
jnz still
|
||||
|
||||
mcall 37,0 ; проверим координаты
|
||||
cmp [top_right_corner],eax
|
||||
jnz still
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
key:
|
||||
mcall ; eax = 2
|
||||
jmp still
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
create_ss:
|
||||
mcall 40,100010b
|
||||
;set_new_cursor_skin - transparent cursor
|
||||
mcall 68,12,32*32*4 ; get memory for own cursor area
|
||||
|
||||
push eax
|
||||
mov ecx,eax
|
||||
mcall 37,4,,2 ; load own cursor
|
||||
|
||||
mov ecx,eax
|
||||
mcall 37,5 ; set own cursor
|
||||
|
||||
pop ecx
|
||||
mcall 68,13 ; free own cursor area
|
||||
|
||||
cmp [type],dword 0
|
||||
je drawsswin
|
||||
|
||||
cmp [type],dword 24
|
||||
je asminit
|
||||
|
||||
mov dword [delay],1
|
||||
mov [lx1],10 ; for "draw line"
|
||||
mov [lx2],40
|
||||
mov [ly1],50
|
||||
mov [ly2],100
|
||||
mov [addx1],1
|
||||
mov [addx2],1
|
||||
mov [addy1],1
|
||||
mov [addy2],1
|
||||
jmp drawsswin
|
||||
;--------------------------------------
|
||||
align 4
|
||||
asminit: ; for "assembler" - assembler sources demo
|
||||
; get size of file
|
||||
mov [fileinfo],dword 5
|
||||
mov [fileinfo.point],dword fileinfo_buffer
|
||||
mcall 70,fileinfo
|
||||
test eax,eax
|
||||
jnz .no_file
|
||||
; get memory for file
|
||||
mov ecx,[fileinfo_buffer+32]
|
||||
mov [fileinfo.size],ecx
|
||||
mcall 68,12
|
||||
mov [fileinfo.point],eax
|
||||
; load file
|
||||
mov [fileinfo],dword 0
|
||||
mcall 70,fileinfo
|
||||
test eax,eax
|
||||
jz @f
|
||||
mcall 68,13,[fileinfo.point]
|
||||
;--------------------------------------
|
||||
align 4
|
||||
.no_file:
|
||||
mov [type],dword 0
|
||||
jmp drawsswin
|
||||
;--------------------------------------
|
||||
align 4
|
||||
@@:
|
||||
mov dword [delay],1 ;25 - old value
|
||||
;--------------------------------------
|
||||
align 4
|
||||
asminit1:
|
||||
mov eax,[fileinfo.point]
|
||||
mov [stringstart],eax
|
||||
mov dword [stringlen],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
newpage:
|
||||
mov [stringpos],16
|
||||
;--------------------------------------
|
||||
align 4
|
||||
drawsswin:
|
||||
xor eax,eax
|
||||
movzx ebx,[x_max]
|
||||
movzx ecx,[y_max]
|
||||
inc ebx
|
||||
inc ecx
|
||||
mcall ,,,0x01000000
|
||||
|
||||
xor edx,edx
|
||||
;mcall 13 ;Leency - use transparent background
|
||||
;--------------------------------------
|
||||
align 4
|
||||
tstill:
|
||||
mcall 23,[delay]
|
||||
test eax,eax
|
||||
jnz thr_end
|
||||
|
||||
cmp [type],dword 0
|
||||
je tstill
|
||||
|
||||
cmp [type],dword 24
|
||||
je drawssasm
|
||||
|
||||
call draw_line
|
||||
jmp tstill
|
||||
;--------------------------------------
|
||||
align 4
|
||||
thr_end:
|
||||
cmp [screensaver], 0
|
||||
jz @f
|
||||
mcall 70, f70
|
||||
@@:
|
||||
cmp [type],dword 24
|
||||
jne @f
|
||||
mcall 68,13,[fileinfo.point]
|
||||
@@:
|
||||
and [params], not 1
|
||||
or eax,-1
|
||||
mcall
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
drawssasm:
|
||||
mov edi,[stringstart]
|
||||
add edi,[stringlen]
|
||||
dec edi
|
||||
|
||||
mov eax,edi
|
||||
sub eax,[fileinfo.point]
|
||||
|
||||
cmp eax,[fileinfo.size]
|
||||
ja asminit1
|
||||
|
||||
cmp word [edi],0x0a0d
|
||||
je addstring
|
||||
|
||||
cmp byte [edi],0x0a
|
||||
jne noaddstring
|
||||
|
||||
dec edi
|
||||
;--------------------------------------
|
||||
align 4
|
||||
addstring:
|
||||
add [stringpos],16
|
||||
add edi,2
|
||||
mov [stringstart],edi
|
||||
mov dword [stringlen],1
|
||||
mov ax,[stringpos]
|
||||
cmp ax,[y_max]
|
||||
jb tstill
|
||||
jmp newpage
|
||||
;--------------------------------------
|
||||
align 4
|
||||
noaddstring:
|
||||
mov ebx,[stringlen]
|
||||
shl ebx,19
|
||||
mov bx,[stringpos]
|
||||
mov edx,[stringstart]
|
||||
add edx,[stringlen]
|
||||
dec edx
|
||||
mcall 4,,0x104ba010,,1
|
||||
inc dword [stringlen]
|
||||
cmp [edi],byte ' '
|
||||
je drawssasm
|
||||
jmp tstill
|
||||
;------------------------------------------------------------------------------
|
||||
align 4
|
||||
draw_line:
|
||||
movzx esi,[x_max]
|
||||
movzx edi,[y_max]
|
||||
|
||||
mov eax,[addx1]
|
||||
add [lx1],eax
|
||||
mov eax,[addy1]
|
||||
add [ly1],eax
|
||||
|
||||
mov eax,[addx2]
|
||||
add [lx2],eax
|
||||
mov eax,[addy2]
|
||||
add [ly2],eax
|
||||
|
||||
cmp [lx1],1
|
||||
jge dl1
|
||||
mov [addx1],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl1:
|
||||
cmp [lx2],1
|
||||
jge dl2
|
||||
|
||||
mov [addx2],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl2:
|
||||
cmp [lx1],esi
|
||||
jbe dl3
|
||||
|
||||
mov [addx1],0xffffffff
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl3:
|
||||
cmp [lx2],esi
|
||||
jbe dl4
|
||||
|
||||
mov [addx2],0xffffffff
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl4:
|
||||
cmp [ly1],1
|
||||
jge dl5
|
||||
mov [addy1],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl5:
|
||||
cmp [ly2],2
|
||||
jge dl6
|
||||
|
||||
mov [addy2],1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl6:
|
||||
cmp [ly1],edi
|
||||
jbe dl7
|
||||
|
||||
mov [addy1],-1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl7:
|
||||
cmp [ly2],edi
|
||||
jbe dl8
|
||||
|
||||
mov [addy2],-1
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dl8:
|
||||
mov eax,[lx2]
|
||||
cmp [lx1],eax
|
||||
jz dnol
|
||||
|
||||
mov bx,word [lx1]
|
||||
shl ebx,16
|
||||
mov bx,word [lx2]
|
||||
|
||||
mov cx,word [ly1]
|
||||
shl ecx,16
|
||||
mov cx,word [ly2]
|
||||
|
||||
mov edx,[lcolor]
|
||||
and edx,0xffffff
|
||||
mcall 38
|
||||
;--------------------------------------
|
||||
align 4
|
||||
dnol:
|
||||
add [lcolor],0x010201
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
align 4 ; DATA AREA
|
||||
type dd 12
|
||||
delay dd 100
|
||||
lx1 dd 10
|
||||
lx2 dd 40
|
||||
ly1 dd 50
|
||||
ly2 dd 100
|
||||
addx1 dd 1
|
||||
addx2 dd 1
|
||||
addy1 dd 1
|
||||
addy2 dd 1
|
||||
stringlen dd 1
|
||||
stringstart dd 0
|
||||
|
||||
stringpos dw 16
|
||||
params db 0 ;if bit 0 set-ssaver works if bit 1 set-setup works
|
||||
|
||||
fileinfo:
|
||||
dd 0
|
||||
dd 0
|
||||
dd 0
|
||||
.size: dd 0
|
||||
.point: dd 0
|
||||
db '/sys/macros.inc',0
|
||||
|
||||
f70: ; run
|
||||
dd 7, 0, 0, 0, 0
|
||||
db '/sys/@SS',0
|
||||
|
||||
screensaver db ?
|
||||
|
||||
;-------------------------------
|
||||
IM_END: ; UNINITIALIZED DATA
|
||||
top_right_corner rd 1
|
||||
align 4
|
||||
lcolor dd ?
|
||||
x_max dw ? ; размеры экрана
|
||||
y_max dw ?
|
||||
I_Param:
|
||||
fileinfo_buffer:
|
||||
rb 40
|
||||
;-------------------------------
|
||||
rb 512
|
||||
stack_top:
|
||||
I_END:
|
||||
+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: ;конец кода
|
||||
+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())
|
||||
|
||||
+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
|
||||
+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
|
||||
+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())
|
||||
|
||||
+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())
|
||||
|
||||
+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())
|
||||
|
||||
+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())
|
||||
|
||||
+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())
|
||||
|
||||
@@ -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:
|
||||
+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: ;конец кода
|
||||
+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())
|
||||
|
||||
+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())
|
||||
|
||||
+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 --->
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user