1 Commits

Author SHA1 Message Date
1e663f36c8 Docs: Added licensing to contributing guide
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 27s
Build system / Build (pull_request) Successful in 12m40s
Also renamed COPYING.TXT to LICENSE

Signed-off-by: Max Logaev <maxlogaev@proton.me>
2025-04-04 11:27:53 +03:00
992 changed files with 8009 additions and 9783 deletions

View File

@@ -66,6 +66,17 @@ to the end commit message body on a new line.
Use **rebase** to keep your branch up to date. Use **rebase** to keep your branch up to date.
## Licensing
For new source code files and for existing ones without a license, you need to add the following header to the beginning of the file:
```asm
; SPDX-License-Identifier: GPL-2.0-only
; Program - Brief description.
; Copyright (C) 2011-2025 KolibriOS team
```
Be careful when setting copyright and date interval. Review the file's history to verify its origin.
## Conclusion ## Conclusion
We hope this small instructions will help you to get familiar with KolibriOS contribution rules and inspire you to participate in the life of our project. We hope this small instructions will help you to get familiar with KolibriOS contribution rules and inspire you to participate in the life of our project.

View File

@@ -1,6 +1,6 @@
# KolibriOS # KolibriOS
[![License](https://img.shields.io/badge/License-GPL%202.0-green)](./COPYING.TXT) [![License](https://img.shields.io/badge/License-GPL%202.0-green)](./LICENSE)
[![Build system](https://git.kolibrios.org/KolibriOS/kolibrios/actions/workflows/build.yaml/badge.svg)](https://git.kolibrios.org/KolibriOS/kolibrios/actions) [![Build system](https://git.kolibrios.org/KolibriOS/kolibrios/actions/workflows/build.yaml/badge.svg)](https://git.kolibrios.org/KolibriOS/kolibrios/actions)
KolibriOS is a hobby operating system for x86-compatible computers, which is currently being developed by a small but passionate team of enthusiasts. KolibriOS is a hobby operating system for x86-compatible computers, which is currently being developed by a small but passionate team of enthusiasts.

View File

@@ -49,6 +49,8 @@ img_files = {
{"MEDIA/IMGF/INVSOL.OBJ", "common/media/ImgF/invSol.obj"}, {"MEDIA/IMGF/INVSOL.OBJ", "common/media/ImgF/invSol.obj"},
{"MEDIA/PIXIESKN.PNG", SRC_PROGS .. "/cmm/pixie2/pixieskn.png"}, {"MEDIA/PIXIESKN.PNG", SRC_PROGS .. "/cmm/pixie2/pixieskn.png"},
{"NETWORK/FTPC.INI", SRC_PROGS .. "/network/ftpc/ftpc.ini"}, {"NETWORK/FTPC.INI", SRC_PROGS .. "/network/ftpc/ftpc.ini"},
{"NETWORK/FTPC_SYS.PNG", SRC_PROGS .. "/network/ftpc/ftpc_sys.png"},
{"NETWORK/FTPC_NOD.PNG", SRC_PROGS .. "/network/ftpc/ftpc_nod.png"},
{"NETWORK/FTPD.INI", "common/network/ftpd.ini"}, {"NETWORK/FTPD.INI", "common/network/ftpd.ini"},
{"NETWORK/KNMAP", "common/network/knmap"}, {"NETWORK/KNMAP", "common/network/knmap"},
{"NETWORK/USERS.INI", "common/network/users.ini"}, {"NETWORK/USERS.INI", "common/network/users.ini"},
@@ -73,7 +75,7 @@ img_files = {
-- For russian build, add russian-only files. -- For russian build, add russian-only files.
if build_type == "ru_RU" then tup.append_table(img_files, { if build_type == "ru_RU" then tup.append_table(img_files, {
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/rus/example.asm"}, {"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/rus/example.asm"},
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy_ru"}, {"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy_ru"},
{"GAMES/BASEKURS.KLA", build_type .. "/games/basekurs.kla"}, {"GAMES/BASEKURS.KLA", build_type .. "/games/basekurs.kla"},
{"File Managers/KFAR.INI", build_type .. "/File Managers/kfar.ini"}, {"File Managers/KFAR.INI", build_type .. "/File Managers/kfar.ini"},
@@ -84,7 +86,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
{"SETTINGS/SYSPANEL.INI", "ru_RU/settings/syspanel.ini"}, {"SETTINGS/SYSPANEL.INI", "ru_RU/settings/syspanel.ini"},
}) elseif build_type == "en_US" then tup.append_table(img_files, { }) elseif build_type == "en_US" then tup.append_table(img_files, {
{"WELCOME.HTM", VAR_DATA .. "/" .. build_type .. "/welcome.htm.kpack"}, {"WELCOME.HTM", VAR_DATA .. "/" .. build_type .. "/welcome.htm.kpack"},
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"}, {"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"}, {"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"}, {"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
{"GAMES/DESCENT", "common/games/descent"}, {"GAMES/DESCENT", "common/games/descent"},
@@ -93,7 +95,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
{"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"}, {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"},
{"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"}, {"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"},
}) elseif build_type == "es_ES" then tup.append_table(img_files, { }) elseif build_type == "es_ES" then tup.append_table(img_files, {
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"}, {"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"}, {"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"}, {"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
{"GAMES/DESCENT", "common/games/descent"}, {"GAMES/DESCENT", "common/games/descent"},
@@ -102,7 +104,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
{"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"}, {"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"},
{"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"}, {"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"},
}) elseif build_type == "it_IT" then tup.append_table(img_files, { }) elseif build_type == "it_IT" then tup.append_table(img_files, {
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"}, {"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"}, {"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"}, {"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
{"GAMES/DESCENT", "common/games/descent"}, {"GAMES/DESCENT", "common/games/descent"},
@@ -111,7 +113,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
{"SETTINGS/GAMES.INI", "common/settings/games.ini"}, {"SETTINGS/GAMES.INI", "common/settings/games.ini"},
{"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"}, {"SETTINGS/SYSPANEL.INI", "common/settings/syspanel.ini"},
}) else tup.append_table(img_files, { }) else tup.append_table(img_files, {
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/example.asm"}, {"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"}, {"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"}, {"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
{"GAMES/DESCENT", "common/games/descent"}, {"GAMES/DESCENT", "common/games/descent"},
@@ -183,20 +185,20 @@ extra_files = {
{"kolibrios/develop/oberon07/doc/", "../programs/develop/oberon07/doc/*"}, {"kolibrios/develop/oberon07/doc/", "../programs/develop/oberon07/doc/*"},
{"kolibrios/develop/oberon07/lib/KolibriOS/", "../programs/develop/oberon07/lib/KolibriOS/*"}, {"kolibrios/develop/oberon07/lib/KolibriOS/", "../programs/develop/oberon07/lib/KolibriOS/*"},
{"kolibrios/develop/oberon07/samples/", SRC_PROGS .. "/develop/oberon07/samples/*"}, {"kolibrios/develop/oberon07/samples/", SRC_PROGS .. "/develop/oberon07/samples/*"},
{"kolibrios/develop/tcc/lib/", SRC_PROGS .. "/develop/ktcc/bin/lib/*"}, {"kolibrios/develop/tcc/lib/", SRC_PROGS .. "/develop/ktcc/trunk/bin/lib/*"},
{"kolibrios/develop/tcc/include/", SRC_PROGS .. "/develop/ktcc/libc.obj/include/*"}, {"kolibrios/develop/tcc/include/", SRC_PROGS .. "/develop/ktcc/trunk/libc.obj/include/*"},
{"kolibrios/develop/tcc/include/clayer/", SRC_PROGS .. "/develop/ktcc/libc.obj/include/clayer/*"}, {"kolibrios/develop/tcc/include/clayer/", SRC_PROGS .. "/develop/ktcc/trunk/libc.obj/include/clayer/*"},
{"kolibrios/develop/tcc/include/cryptal/", SRC_PROGS .. "/develop/ktcc/libc.obj/include/cryptal/*"}, {"kolibrios/develop/tcc/include/cryptal/", SRC_PROGS .. "/develop/ktcc/trunk/libc.obj/include/cryptal/*"},
{"kolibrios/develop/tcc/include/sys/", SRC_PROGS .. "/develop/ktcc/libc.obj/include/sys/*"}, {"kolibrios/develop/tcc/include/sys/", SRC_PROGS .. "/develop/ktcc/trunk/libc.obj/include/sys/*"},
{"kolibrios/develop/tcc/include/SDL/", "../contrib/sdk/sources/SDL-1.2.2_newlib/include/*"}, {"kolibrios/develop/tcc/include/SDL/", "../contrib/sdk/sources/SDL-1.2.2_newlib/include/*"},
{"kolibrios/develop/tcc/samples/", SRC_PROGS .. "/develop/ktcc/libc.obj/samples/*.c"}, {"kolibrios/develop/tcc/samples/", SRC_PROGS .. "/develop/ktcc/trunk/libc.obj/samples/*.c"},
{"kolibrios/develop/tcc/samples/", SRC_PROGS .. "/develop/ktcc/libc.obj/samples/*.sh"}, {"kolibrios/develop/tcc/samples/", SRC_PROGS .. "/develop/ktcc/trunk/libc.obj/samples/*.sh"},
{"kolibrios/develop/tcc/samples/clayer/", SRC_PROGS .. "/develop/ktcc/libc.obj/samples/clayer/*"}, {"kolibrios/develop/tcc/samples/clayer/", SRC_PROGS .. "/develop/ktcc/trunk/libc.obj/samples/clayer/*"},
{"kolibrios/develop/utils/SPEDump", SRC_PROGS .. "/develop/SPEDump/SPEDump.kex"}, {"kolibrios/develop/utils/SPEDump", SRC_PROGS .. "/develop/SPEDump/SPEDump.kex"},
{"kolibrios/emul/", "common/emul/*"}, {"kolibrios/emul/", "common/emul/*"},
{"kolibrios/emul/dosbox/", "common/emul/DosBox/*"}, {"kolibrios/emul/dosbox/", "common/emul/DosBox/*"},
{"kolibrios/emul/e80/readme.txt", SRC_PROGS .. "/emulator/e80/readme.txt"}, {"kolibrios/emul/e80/readme.txt", SRC_PROGS .. "/emulator/e80/trunk/readme.txt"},
{"kolibrios/emul/e80/keyboard.png", SRC_PROGS .. "/emulator/e80/keyboard.png"}, {"kolibrios/emul/e80/keyboard.png", SRC_PROGS .. "/emulator/e80/trunk/keyboard.png"},
{"kolibrios/emul/fceu/fceu", SRC_PROGS .. "/emulator/fceu/fceu"}, {"kolibrios/emul/fceu/fceu", SRC_PROGS .. "/emulator/fceu/fceu"},
{"kolibrios/emul/fceu/FCEU ReadMe.txt", SRC_PROGS .. "/emulator/fceu/FCEU ReadMe.txt"}, {"kolibrios/emul/fceu/FCEU ReadMe.txt", SRC_PROGS .. "/emulator/fceu/FCEU ReadMe.txt"},
{"kolibrios/emul/chip8/chip8", VAR_PROGS .. "/emulator/chip8/chip8"}, {"kolibrios/emul/chip8/chip8", VAR_PROGS .. "/emulator/chip8/chip8"},
@@ -284,7 +286,7 @@ extra_files = {
{"kolibrios/netsurf/res/", "common/network/netsurf/res/*"}, {"kolibrios/netsurf/res/", "common/network/netsurf/res/*"},
{"kolibrios/res/skins/", "../skins/authors.txt"}, {"kolibrios/res/skins/", "../skins/authors.txt"},
{"kolibrios/res/templates/", "common/templates/*"}, {"kolibrios/res/templates/", "common/templates/*"},
{"kolibrios/res/templates/", SRC_PROGS .. "/emulator/e80/games/*"}, {"kolibrios/res/templates/", SRC_PROGS .. "/emulator/e80/trunk/games/*"},
{"kolibrios/res/templates/NES/", "common/templates/NES/*"}, {"kolibrios/res/templates/NES/", "common/templates/NES/*"},
{"kolibrios/res/wallpapers/", "common/wallpapers/*"}, {"kolibrios/res/wallpapers/", "common/wallpapers/*"},
{"kolibrios/res/system/", build_type .. "/settings/kolibri.lbl"}, {"kolibrios/res/system/", build_type .. "/settings/kolibri.lbl"},
@@ -339,7 +341,7 @@ if build_type == "ru_RU" then tup.append_table(extra_files, {
{"kolibrios/games/WHOWTBAM/", build_type .. "/games/appdata.dat"}, {"kolibrios/games/WHOWTBAM/", build_type .. "/games/appdata.dat"},
{"kolibrios/media/zsea/zsea_keys.txt", SRC_PROGS .. "/media/zsea/Docs/zSea_keys_rus.txt"}, {"kolibrios/media/zsea/zsea_keys.txt", SRC_PROGS .. "/media/zsea/Docs/zSea_keys_rus.txt"},
{"kolibrios/res/guide/", build_type .. "/docs/guide/*"}, {"kolibrios/res/guide/", build_type .. "/docs/guide/*"},
{"kolibrios/develop/tcc/doc/", SRC_PROGS .. "/develop/ktcc/bin/doc/ru/*"}, {"kolibrios/develop/tcc/doc/", SRC_PROGS .. "/develop/ktcc/trunk/bin/doc/ru/*"},
}) else tup.append_table(extra_files, { }) else tup.append_table(extra_files, {
{"Docs/Config.txt", build_type .. "/docs/Config.txt"}, {"Docs/Config.txt", build_type .. "/docs/Config.txt"},
{"Docs/Copying.txt", build_type .. "/docs/Copying.txt"}, {"Docs/Copying.txt", build_type .. "/docs/Copying.txt"},
@@ -353,7 +355,7 @@ if build_type == "ru_RU" then tup.append_table(extra_files, {
{"kolibrios/games/ataka", "common/games/ataka/ataka_en"}, {"kolibrios/games/ataka", "common/games/ataka/ataka_en"},
{"kolibrios/games/sstartrek/SStarTrek", "common/games/sstartrek/SStarTrek_en"}, {"kolibrios/games/sstartrek/SStarTrek", "common/games/sstartrek/SStarTrek_en"},
{"kolibrios/media/zsea/zsea_keys.txt", SRC_PROGS .. "/media/zsea/Docs/zSea_keys_eng.txt"}, {"kolibrios/media/zsea/zsea_keys.txt", SRC_PROGS .. "/media/zsea/Docs/zSea_keys_eng.txt"},
{"kolibrios/develop/tcc/doc/", SRC_PROGS .. "/develop/ktcc/bin/doc/en/*"}, {"kolibrios/develop/tcc/doc/", SRC_PROGS .. "/develop/ktcc/trunk/bin/doc/en/*"},
}) end }) end
--[[ --[[
Files to be included in distribution kit outside of kolibri.img, but not kolibri.iso. Files to be included in distribution kit outside of kolibri.img, but not kolibri.iso.
@@ -409,8 +411,7 @@ tup.append_table(img_files, {
{"HACONFIG", VAR_PROGS .. "/other/ha/HACONFIG"}, {"HACONFIG", VAR_PROGS .. "/other/ha/HACONFIG"},
{"ACLOCK", VAR_PROGS .. "/demos/aclock/aclock"}, {"ACLOCK", VAR_PROGS .. "/demos/aclock/aclock"},
{"APM", VAR_PROGS .. "/system/apm/apm"}, {"APM", VAR_PROGS .. "/system/apm/apm"},
{"CALC", VAR_PROGS .. "/other/calc/calc"}, {"CALC", VAR_PROGS .. "/other/calc/trunk/calc"},
{"CALCPLUS", VAR_PROGS .. "/other/calcplus/calcplus"},
{"CALENDAR", VAR_PROGS .. "/system/calendar/trunk/calendar"}, {"CALENDAR", VAR_PROGS .. "/system/calendar/trunk/calendar"},
{"COLRDIAL", VAR_PROGS .. "/system/colrdial/color_dialog"}, {"COLRDIAL", VAR_PROGS .. "/system/colrdial/color_dialog"},
{"CROPFLAT", VAR_PROGS .. "/system/cropflat/cropflat"}, {"CROPFLAT", VAR_PROGS .. "/system/cropflat/cropflat"},
@@ -428,14 +429,14 @@ tup.append_table(img_files, {
{"KPACK", VAR_PROGS .. "/other/kpack/trunk/kpack"}, {"KPACK", VAR_PROGS .. "/other/kpack/trunk/kpack"},
{"LAUNCHER", VAR_PROGS .. "/system/launcher/trunk/launcher"}, {"LAUNCHER", VAR_PROGS .. "/system/launcher/trunk/launcher"},
{"LOADDRV", VAR_PROGS .. "/system/loaddrv/loaddrv"}, {"LOADDRV", VAR_PROGS .. "/system/loaddrv/loaddrv"},
{"MAGNIFY", VAR_PROGS .. "/system/magnify/magnify"}, {"MAGNIFY", VAR_PROGS .. "/demos/magnify/trunk/magnify"},
{"MGB", VAR_PROGS .. "/testing/mgb/trunk/mgb"}, {"MGB", VAR_PROGS .. "/testing/mgb/trunk/mgb"},
{"MOUSEMUL", VAR_PROGS .. "/system/mousemul/trunk/mousemul"}, {"MOUSEMUL", VAR_PROGS .. "/system/mousemul/trunk/mousemul"},
{"MADMOUSE", VAR_PROGS .. "/other/madmouse/madmouse"}, {"MADMOUSE", VAR_PROGS .. "/other/madmouse/madmouse"},
{"MYKEY", VAR_PROGS .. "/system/MyKey/trunk/MyKey"}, {"MYKEY", VAR_PROGS .. "/system/MyKey/trunk/MyKey"},
{"PCIDEV", VAR_PROGS .. "/testing/pcidev/trunk/PCIDEV"}, {"PCIDEV", VAR_PROGS .. "/testing/pcidev/trunk/PCIDEV"},
{"RDSAVE", VAR_PROGS .. "/system/rdsave/trunk/rdsave"}, {"RDSAVE", VAR_PROGS .. "/system/rdsave/trunk/rdsave"},
{"RTFREAD", VAR_PROGS .. "/other/rtfread/rtfread"}, {"RTFREAD", VAR_PROGS .. "/other/rtfread/trunk/rtfread"},
{"SEARCHAP", VAR_PROGS .. "/system/searchap/searchap"}, {"SEARCHAP", VAR_PROGS .. "/system/searchap/searchap"},
{"SCRSHOOT", VAR_PROGS .. "/media/scrshoot/scrshoot"}, {"SCRSHOOT", VAR_PROGS .. "/media/scrshoot/scrshoot"},
{"SETUP", VAR_PROGS .. "/system/setup/trunk/setup"}, {"SETUP", VAR_PROGS .. "/system/setup/trunk/setup"},
@@ -471,21 +472,21 @@ tup.append_table(img_files, {
{"DEVELOP/DBGBOARD", VAR_PROGS .. "/system/dbgboard/dbgboard"}, {"DEVELOP/DBGBOARD", VAR_PROGS .. "/system/dbgboard/dbgboard"},
{"DEVELOP/CEDIT", SRC_PROGS .. "/develop/cedit/CEDIT"}, {"DEVELOP/CEDIT", SRC_PROGS .. "/develop/cedit/CEDIT"},
{"DEVELOP/CHARSETS", VAR_PROGS .. "/develop/charsets/charsets"}, {"DEVELOP/CHARSETS", VAR_PROGS .. "/develop/charsets/charsets"},
{"DEVELOP/COBJ", VAR_PROGS .. "/develop/cObj/cObj"}, {"DEVELOP/COBJ", VAR_PROGS .. "/develop/cObj/trunk/cObj"},
{"DEVELOP/ENTROPYV", VAR_PROGS .. "/develop/entropyview/entropyview"}, {"DEVELOP/ENTROPYV", VAR_PROGS .. "/develop/entropyview/entropyview"},
{"DEVELOP/FASM", VAR_PROGS .. "/develop/fasm/1.73/fasm"}, {"DEVELOP/FASM", VAR_PROGS .. "/develop/fasm/1.73/fasm"},
{"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"}, {"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"},
{"DEVELOP/PIPET", VAR_PROGS .. "/other/pipet/pipet"}, {"DEVELOP/PIPET", VAR_PROGS .. "/other/pipet/pipet"},
{"DEVELOP/H2D2B", VAR_PROGS .. "/develop/h2d2b/h2d2b"}, {"DEVELOP/H2D2B", VAR_PROGS .. "/develop/h2d2b/trunk/h2d2b"},
{"DEVELOP/HEED", VAR_PROGS .. "/develop/heed/heed"}, {"DEVELOP/HEED", VAR_PROGS .. "/develop/heed/trunk/heed"},
{"DEVELOP/MTDBG", VAR_PROGS .. "/develop/mtdbg/mtdbg"}, {"DEVELOP/MTDBG", VAR_PROGS .. "/develop/mtdbg/mtdbg"},
{"DEVELOP/MSTATE", VAR_PROGS .. "/develop/mstate/mstate"}, {"DEVELOP/MSTATE", VAR_PROGS .. "/develop/mstate/mstate"},
{"DEVELOP/SCANCODE", VAR_PROGS .. "/develop/scancode/trunk/scancode"}, {"DEVELOP/SCANCODE", VAR_PROGS .. "/develop/scancode/trunk/scancode"},
{"DEVELOP/EXAMPLES/CIRCLE", VAR_PROGS .. "/develop/examples/circle/circle"}, {"DEVELOP/EXAMPLES/CIRCLE", VAR_PROGS .. "/develop/examples/circle/trunk/circle"},
{"DEVELOP/EXAMPLES/COLORREF", VAR_PROGS .. "/demos/colorref/trunk/colorref"}, {"DEVELOP/EXAMPLES/COLORREF", VAR_PROGS .. "/demos/colorref/trunk/colorref"},
{"DEVELOP/EXAMPLES/CONGET", VAR_PROGS .. "/develop/libraries/console_coff/examples/test_gets"}, {"DEVELOP/EXAMPLES/CONGET", VAR_PROGS .. "/develop/libraries/console_coff/examples/test_gets"},
{"DEVELOP/EXAMPLES/CSLIDE", VAR_PROGS .. "/demos/cslide/trunk/cslide"}, {"DEVELOP/EXAMPLES/CSLIDE", VAR_PROGS .. "/demos/cslide/trunk/cslide"},
{"DEVELOP/EXAMPLES/THREAD", VAR_PROGS .. "/develop/examples/thread/thread"}, {"DEVELOP/EXAMPLES/THREAD", VAR_PROGS .. "/develop/examples/thread/trunk/thread"},
{"File Managers/KFAR", VAR_PROGS .. "/fs/kfar/trunk/kfar"}, {"File Managers/KFAR", VAR_PROGS .. "/fs/kfar/trunk/kfar"},
{"File Managers/OPENDIAL", VAR_PROGS .. "/fs/opendial/opendial"}, {"File Managers/OPENDIAL", VAR_PROGS .. "/fs/opendial/opendial"},
{"LOD", VAR_PROGS .. "/fs/lod/lod"}, {"LOD", VAR_PROGS .. "/fs/lod/lod"},
@@ -523,10 +524,10 @@ tup.append_table(img_files, {
{"LIB/RASTERWORKS.OBJ", VAR_PROGS .. "/develop/libraries/fontRasterWorks_unicode/RasterWorks.obj"}, {"LIB/RASTERWORKS.OBJ", VAR_PROGS .. "/develop/libraries/fontRasterWorks_unicode/RasterWorks.obj"},
{"LIB/SORT.OBJ", VAR_PROGS .. "/develop/libraries/sorter/sort.obj"}, {"LIB/SORT.OBJ", VAR_PROGS .. "/develop/libraries/sorter/sort.obj"},
{"LIB/TINYGL.OBJ", VAR_PROGS .. "/develop/libraries/TinyGL/asm_fork/tinygl.obj"}, {"LIB/TINYGL.OBJ", VAR_PROGS .. "/develop/libraries/TinyGL/asm_fork/tinygl.obj"},
{"MEDIA/ANIMAGE", VAR_PROGS .. "/media/animage/animage"}, {"MEDIA/ANIMAGE", VAR_PROGS .. "/media/animage/trunk/animage"},
{"MEDIA/FILLSCR", VAR_PROGS .. "/media/FillScr/fillscr"}, {"MEDIA/FILLSCR", VAR_PROGS .. "/media/FillScr/fillscr"},
{"MEDIA/KIV", VAR_PROGS .. "/media/kiv/kiv"}, {"MEDIA/KIV", VAR_PROGS .. "/media/kiv/trunk/kiv"},
{"MEDIA/LISTPLAY", VAR_PROGS .. "/media/listplay/listplay"}, {"MEDIA/LISTPLAY", VAR_PROGS .. "/media/listplay/trunk/listplay"},
{"MEDIA/MIDAMP", VAR_PROGS .. "/media/midamp/trunk/midamp"}, {"MEDIA/MIDAMP", VAR_PROGS .. "/media/midamp/trunk/midamp"},
{"MEDIA/MP3INFO", VAR_PROGS .. "/media/mp3info/mp3info"}, {"MEDIA/MP3INFO", VAR_PROGS .. "/media/mp3info/mp3info"},
{"MEDIA/PALITRA", VAR_PROGS .. "/media/palitra/trunk/palitra"}, {"MEDIA/PALITRA", VAR_PROGS .. "/media/palitra/trunk/palitra"},
@@ -604,7 +605,6 @@ tup.append_table(extra_files, {
{"kolibrios/3D/voxel_utilites/VOX_CREATOR" , VAR_PROGS .. "/media/voxel_editor/utilites/vox_creator"}, {"kolibrios/3D/voxel_utilites/VOX_CREATOR" , VAR_PROGS .. "/media/voxel_editor/utilites/vox_creator"},
{"kolibrios/3D/voxel_utilites/VOX_MOVER" , VAR_PROGS .. "/media/voxel_editor/utilites/vox_mover"}, {"kolibrios/3D/voxel_utilites/VOX_MOVER" , VAR_PROGS .. "/media/voxel_editor/utilites/vox_mover"},
{"kolibrios/3D/voxel_utilites/VOX_TGL" , VAR_PROGS .. "/media/voxel_editor/utilites/vox_tgl"}, {"kolibrios/3D/voxel_utilites/VOX_TGL" , VAR_PROGS .. "/media/voxel_editor/utilites/vox_tgl"},
{"kolibrios/demos/flag", VAR_PROGS .. "/demos/flag/flag"},
{"kolibrios/demos/life3", VAR_PROGS .. "/games/life3/life3"}, {"kolibrios/demos/life3", VAR_PROGS .. "/games/life3/life3"},
{"kolibrios/demos/qjulia", VAR_PROGS .. "/demos/qjulia/trunk/qjulia"}, {"kolibrios/demos/qjulia", VAR_PROGS .. "/demos/qjulia/trunk/qjulia"},
{"kolibrios/develop/koldbg", VAR_PROGS .. "/develop/koldbg/koldbg"}, {"kolibrios/develop/koldbg", VAR_PROGS .. "/develop/koldbg/koldbg"},
@@ -628,6 +628,7 @@ tup.append_table(extra_files, {
{"kolibrios/media/zsea/plugins/rotate.obj", VAR_PROGS .. "/media/zsea/plugins/rotate/rotate.obj"}, {"kolibrios/media/zsea/plugins/rotate.obj", VAR_PROGS .. "/media/zsea/plugins/rotate/rotate.obj"},
{"kolibrios/media/zsea/plugins/scaling.obj", VAR_PROGS .. "/media/zsea/plugins/scaling/scaling.obj"}, {"kolibrios/media/zsea/plugins/scaling.obj", VAR_PROGS .. "/media/zsea/plugins/scaling/scaling.obj"},
{"kolibrios/utils/AMDtemp", VAR_PROGS .. "/system/amd_temp_view/AMDtemp"}, {"kolibrios/utils/AMDtemp", VAR_PROGS .. "/system/amd_temp_view/AMDtemp"},
{"kolibrios/utils/calcplus", VAR_PROGS .. "/other/calcplus/calcplus"},
{"kolibrios/utils/kfm/kfm", VAR_PROGS .. "/fs/kfm/trunk/kfm"}, {"kolibrios/utils/kfm/kfm", VAR_PROGS .. "/fs/kfm/trunk/kfm"},
{"kolibrios/utils/tedit/t_edit", VAR_PROGS .. "/other/t_edit/t_edit"}, {"kolibrios/utils/tedit/t_edit", VAR_PROGS .. "/other/t_edit/t_edit"},
{"kolibrios/3D/blocks/block.bin", VAR_PROGS .. "/bcc32/games/blocks/block.bin"} {"kolibrios/3D/blocks/block.bin", VAR_PROGS .. "/bcc32/games/blocks/block.bin"}
@@ -641,7 +642,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
}) end }) end
if build_type == "ru_RU" then tup.append_table(extra_files, { if build_type == "ru_RU" then tup.append_table(extra_files, {
{"kolibrios/utils/period", VAR_PROGS .. "/other/period/period"}, {"kolibrios/utils/period", VAR_PROGS .. "/other/period/trunk/period"},
{"kolibrios/games/Dungeons/Dungeons", VAR_PROGS .. "/games/Dungeons/Dungeons"}, {"kolibrios/games/Dungeons/Dungeons", VAR_PROGS .. "/games/Dungeons/Dungeons"},
}) end }) end
@@ -745,14 +746,14 @@ if tup.getconfig('NO_GCC') ~= 'full' then
tup.append_table(img_files, { tup.append_table(img_files, {
{"GAMES/REVERSI", VAR_PROGS .. "/games/reversi/reversi"}, {"GAMES/REVERSI", VAR_PROGS .. "/games/reversi/reversi"},
{"LIB/BASE64.OBJ", VAR_PROGS .. "/develop/libraries/base64/base64.obj"}, {"LIB/BASE64.OBJ", VAR_PROGS .. "/develop/libraries/base64/base64.obj"},
{"LIB/LIBC.OBJ", VAR_PROGS .. "/develop/ktcc/libc.obj/source/libc.obj"}, {"LIB/LIBC.OBJ", VAR_PROGS .. "/develop/ktcc/trunk/libc.obj/source/libc.obj"},
{"LIB/ICONV.OBJ", VAR_PROGS .. "/develop/libraries/iconv/iconv.obj"}, {"LIB/ICONV.OBJ", VAR_PROGS .. "/develop/libraries/iconv/iconv.obj"},
-- {"LIB/MTAR.OBJ", VAR_PROGS .. "/develop/libraries/microtar/mtar.obj"}, -- {"LIB/MTAR.OBJ", VAR_PROGS .. "/develop/libraries/microtar/mtar.obj"},
}) })
tup.append_table(extra_files, { tup.append_table(extra_files, {
-- {"kolibrios/3D/cubeline", VAR_PROGS .. "/demos/cubeline/trunk/cubeline"}, -- {"kolibrios/3D/cubeline", VAR_PROGS .. "/demos/cubeline/trunk/cubeline"},
{"kolibrios/3D/gears", VAR_PROGS .. "/demos/gears/gears"}, {"kolibrios/3D/gears", VAR_PROGS .. "/demos/gears/gears"},
{"kolibrios/emul/e80/e80", VAR_PROGS .. "/emulator/e80/e80"}, {"kolibrios/emul/e80/e80", VAR_PROGS .. "/emulator/e80/trunk/e80"},
{"kolibrios/emul/uarm/", VAR_CONTRIB .. "/other/uarm/uARM"}, {"kolibrios/emul/uarm/", VAR_CONTRIB .. "/other/uarm/uARM"},
{"kolibrios/games/2048", VAR_PROGS .. "/games/2048/2048"}, {"kolibrios/games/2048", VAR_PROGS .. "/games/2048/2048"},
{"kolibrios/games/checkers", VAR_PROGS .. "/games/checkers/checkers"}, {"kolibrios/games/checkers", VAR_PROGS .. "/games/checkers/checkers"},
@@ -772,7 +773,7 @@ tup.append_table(extra_files, {
{"kolibrios/utils/minizip/minizip", VAR_PROGS .. "/fs/minizip/minizip"}, {"kolibrios/utils/minizip/minizip", VAR_PROGS .. "/fs/minizip/minizip"},
{"kolibrios/utils/minizip/miniunz", VAR_PROGS .. "/fs/minizip/miniunz"}, {"kolibrios/utils/minizip/miniunz", VAR_PROGS .. "/fs/minizip/miniunz"},
{"kolibrios/develop/c--/c--", VAR_PROGS .. "/develop/cmm/cmm"}, {"kolibrios/develop/c--/c--", VAR_PROGS .. "/develop/cmm/cmm"},
{"kolibrios/develop/tcc/tcc", VAR_PROGS .. "/develop/ktcc/source/tcc"}, {"kolibrios/develop/tcc/tcc", VAR_PROGS .. "/develop/ktcc/trunk/source/tcc"},
{"kolibrios/develop/sqlite3/sqlite3", VAR_CONTRIB .. "/sdk/sources/sqlite3/shell/sqlite3"}, {"kolibrios/develop/sqlite3/sqlite3", VAR_CONTRIB .. "/sdk/sources/sqlite3/shell/sqlite3"},
{"kolibrios/develop/utils/objconv", VAR_PROGS .. "/develop/objconv/objconv"}, {"kolibrios/develop/utils/objconv", VAR_PROGS .. "/develop/objconv/objconv"},
{"kolibrios/drivers/sensors/k10temp.sys", VAR_DRVS .. "/sensors/k10temp/k10temp.sys"}, {"kolibrios/drivers/sensors/k10temp.sys", VAR_DRVS .. "/sensors/k10temp/k10temp.sys"},

View File

@@ -29,6 +29,7 @@ Dicty=/k/utils/DICTY.KEX,79
fNav=/k/utils/fNav/fNav,93 fNav=/k/utils/fNav/fNav,93
CncEditor=/k/utils/cnc_editor/cnc_editor,15 CncEditor=/k/utils/cnc_editor/cnc_editor,15
Life=/k/demos/life2,13 Life=/k/demos/life2,13
Calc+=/k/utils/calcplus,4
TinyBasic=/k/develop/TinyBasic/TinyBasic,91 TinyBasic=/k/develop/TinyBasic/TinyBasic,91
THashView=/k/utils/thashview,124 THashView=/k/utils/thashview,124
Notes=/k/utils/notes,117 Notes=/k/utils/notes,117

View File

@@ -235,8 +235,8 @@ ico=58
x=68 x=68
y=68 y=68
[21] [21]
name=CALC+ name=CALC
path=CALCPLUS path=CALC
param= param=
ico=4 ico=4
x=204 x=204

View File

@@ -92,7 +92,6 @@
59 Screen keyboard |zkey 59 Screen keyboard |zkey
#10 **** DATA PROCESSING #10 **** DATA PROCESSING
16 Calculator |calc 16 Calculator |calc
16 Calculator+ |calcplus
03 Tinypad |tinypad 03 Tinypad |tinypad
28 CodeEdit |develop/cedit 28 CodeEdit |develop/cedit
21 Table processor |table 21 Table processor |table

View File

@@ -235,8 +235,8 @@ ico=58
x=68 x=68
y=68 y=68
[21] [21]
name=CALC+ name=CALC
path=CALCPLUS path=CALC
param= param=
ico=4 ico=4
x=204 x=204

View File

@@ -96,7 +96,6 @@
24 NDN * |/kolibrios/utils/ndn/ndn 24 NDN * |/kolibrios/utils/ndn/ndn
#11 **** PROCESO DE DATOS #11 **** PROCESO DE DATOS
16 Calculadora |calc 16 Calculadora |calc
16 Calculadora+ |calcplus
16 Tinypad |tinypad 16 Tinypad |tinypad
16 CodeEdit |develop/cedit 16 CodeEdit |develop/cedit
16 Procesador de tablas |table 16 Procesador de tablas |table

View File

@@ -235,8 +235,8 @@ ico=58
x=68 x=68
y=68 y=68
[21] [21]
name=CALC+ name=CALC
path=CALCPLUS path=CALC
param= param=
ico=4 ico=4
x=204 x=204

View File

@@ -80,7 +80,6 @@
65 NDN * |/kolibrios/utils/ndn/ndn 65 NDN * |/kolibrios/utils/ndn/ndn
#11 **** DATA PROCESSING **** #11 **** DATA PROCESSING ****
16 Kalkulaator |calc 16 Kalkulaator |calc
16 Kalkulaator+ |calcplus
16 Teksti redaktor |tinypad 16 Teksti redaktor |tinypad
16 CodeEdit |develop/cedit 16 CodeEdit |develop/cedit
16 Tabelarvutus |table 16 Tabelarvutus |table

View File

@@ -235,8 +235,8 @@ ico=58
x=68 x=68
y=68 y=68
[21] [21]
name=CALC+ name=CALC
path=CALCPLUS path=CALC
param= param=
ico=4 ico=4
x=204 x=204

View File

@@ -79,7 +79,6 @@
65 NDN * |/kolibrios/utils/ndn/ndn 65 NDN * |/kolibrios/utils/ndn/ndn
#11 **** DATA PROCESSING #11 **** DATA PROCESSING
16 Calcolatrice |calc 16 Calcolatrice |calc
16 Calcolatrice+ |calcplus
16 Tinypad |tinypad 16 Tinypad |tinypad
16 CodeEdit |develop/cedit 16 CodeEdit |develop/cedit
16 Table Processor |table 16 Table Processor |table

View File

@@ -235,8 +235,8 @@ ico=58
x=68 x=68
y=68 y=68
[21] [21]
name=CALC+ name=CALC
path=CALCPLUS path=CALC
param= param=
ico=4 ico=4
x=204 x=204

View File

@@ -90,7 +90,6 @@
59 <20><><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |zkey 59 <20><><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |zkey
#10 **** <20><><EFBFBD><EFBFBD> #10 **** <20><><EFBFBD><EFBFBD>
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |calc 16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |calc
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+ |calcplus
03 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Tinypad |tinypad 03 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Tinypad |tinypad
28 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CodeEdit |develop/cedit 28 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CodeEdit |develop/cedit
21 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |table 21 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |table
@@ -120,7 +119,7 @@
45 <20><><EFBFBD><EFBFBD><20><><EFBFBD><E0A8AD><EFBFBD><EFBFBD><EFBFBD> |easyshot 45 <20><><EFBFBD><EFBFBD><20><><EFBFBD><E0A8AD><EFBFBD><EFBFBD><EFBFBD> |easyshot
29 FB2 <20><><EFBFBD><E2A0AB> |fb2read 29 FB2 <20><><EFBFBD><E2A0AB> |fb2read
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |aclock 16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |aclock
21 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |/kolibrios/utils/period 21 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |period
59 <20><EFBFBD><E0A5AD><EFBFBD><EFBFBD> KJ|ABuIIIA |games/klavisha 59 <20><EFBFBD><E0A5AD><EFBFBD><EFBFBD> KJ|ABuIIIA |games/klavisha
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |demos/bcdclk 16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |demos/bcdclk
53 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |timer 53 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |timer

View File

@@ -668,8 +668,6 @@ socket_accept:
DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_accept: socknum=%u sockaddr=%x length=%u\n", ecx, edx, esi DEBUGF DEBUG_NETWORK_VERBOSE, "SOCKET_accept: socknum=%u sockaddr=%x length=%u\n", ecx, edx, esi
push edx esi
call socket_num_to_ptr call socket_num_to_ptr
test eax, eax test eax, eax
jz .invalid jz .invalid
@@ -698,24 +696,6 @@ socket_accept:
mov ebx, [ebx + APPDATA.tid] mov ebx, [ebx + APPDATA.tid]
mov [eax + SOCKET.TID], ebx mov [eax + SOCKET.TID], ebx
pop esi edx
test edx, edx
jz .skip_sockaddr
mov word[edx], 0 ; unknown domain
cmp esi, 8 ; domain + port + ipv4
jb .skip_sockaddr
mov word[edx], AF_INET4
mov esi, edx
mov edx, [eax + IP_SOCKET.RemoteIP]
mov [esi + sockaddr.ip], edx
mov dx, [eax + TCP_SOCKET.RemotePort]
mov [esi + sockaddr.port], dx
.skip_sockaddr:
; Return socket number to caller ; Return socket number to caller
mov eax, [eax + SOCKET.Number] mov eax, [eax + SOCKET.Number]
mov [esp + SYSCALL_STACK.eax], eax mov [esp + SYSCALL_STACK.eax], eax
@@ -731,19 +711,16 @@ socket_accept:
.wouldblock: .wouldblock:
mov dword[esp + SYSCALL_STACK.ebx], EWOULDBLOCK mov dword[esp + SYSCALL_STACK.ebx], EWOULDBLOCK
mov dword[esp + SYSCALL_STACK.eax], -1 mov dword[esp + SYSCALL_STACK.eax], -1
pop esi edx
ret ret
.invalid: .invalid:
mov dword[esp + SYSCALL_STACK.ebx], EINVAL mov dword[esp + SYSCALL_STACK.ebx], EINVAL
mov dword[esp + SYSCALL_STACK.eax], -1 mov dword[esp + SYSCALL_STACK.eax], -1
pop esi edx
ret ret
.notsupp: .notsupp:
mov dword[esp + SYSCALL_STACK.ebx], EOPNOTSUPP mov dword[esp + SYSCALL_STACK.ebx], EOPNOTSUPP
mov dword[esp + SYSCALL_STACK.eax], -1 mov dword[esp + SYSCALL_STACK.eax], -1
pop esi edx
ret ret
;-----------------------------------------------------------------; ;-----------------------------------------------------------------;

View File

@@ -692,15 +692,6 @@ struct TinyGLContext
long int dx, dy, x, y; long int dx, dy, x, y;
}; };
struct GLUquadricObj
{
GLenum DrawStyle; // GLU_FILL, LINE, SILHOUETTE, or POINT
GLenum Orientation; // GLU_INSIDE or GLU_OUTSIDE
GLboolean TextureFlag; // Generate texture coords?
GLenum Normals; // GLU_NONE, GLU_FLAT, or GLU_SMOOTH
void (__stdcall* ErrorFunc)(GLenum err); // Error handler callback function
};
// //
// tinygl - import table // tinygl - import table
// //
@@ -757,7 +748,7 @@ void (__stdcall* glEdgeFlag)(int flag) = (void (__stdcall*)(int))&"glEdgeFlag";
void (__stdcall* glMatrixMode)(int mode) = (void (__stdcall*)(int))&"glMatrixMode"; void (__stdcall* glMatrixMode)(int mode) = (void (__stdcall*)(int))&"glMatrixMode";
void (__stdcall* glLoadMatrixf)(const float* m) = (void (__stdcall*)(const float*))&"glLoadMatrixf"; void (__stdcall* glLoadMatrixf)(const float* m) = (void (__stdcall*)(const float*))&"glLoadMatrixf";
void (__stdcall* glLoadIdentity)() = (void (__stdcall*)())&"glLoadIdentity"; void (__stdcall* glLoadIdentity)() = (void (__stdcall*)())&"glLoadIdentity";
void (__stdcall* glMultMatrixf)(const GLfloat *m) = (void (__stdcall*)(const GLfloat*))&"glMultMatrixf"; //void (__stdcall* glMultMatrixf)(...) = (void (__stdcall*)(...))&"glMultMatrixf";
void (__stdcall* glPushMatrix)() = (void (__stdcall*)())&"glPushMatrix"; void (__stdcall* glPushMatrix)() = (void (__stdcall*)())&"glPushMatrix";
void (__stdcall* glPopMatrix)() = (void (__stdcall*)())&"glPopMatrix"; void (__stdcall* glPopMatrix)() = (void (__stdcall*)())&"glPopMatrix";
void (__stdcall* glRotatef)(float angle, float x, float y, float z) = (void (__stdcall*)(float, float, float, float))&"glRotatef"; void (__stdcall* glRotatef)(float angle, float x, float y, float z) = (void (__stdcall*)(float, float, float, float))&"glRotatef";
@@ -772,7 +763,7 @@ void (__stdcall* glEndList)() = (void (__stdcall*)())&"glEndList";
void (__stdcall* glCallList)(unsigned int list) = (void (__stdcall*)(unsigned int))&"glCallList"; void (__stdcall* glCallList)(unsigned int list) = (void (__stdcall*)(unsigned int))&"glCallList";
void (__stdcall* glClear)(int mask) = (void (__stdcall*)(int))&"glClear"; void (__stdcall* glClear)(int mask) = (void (__stdcall*)(int))&"glClear";
void (__stdcall* glClearColor)(float r, float g, float b, float a) = (void (__stdcall*)(float, float, float, float))&"glClearColor"; void (__stdcall* glClearColor)(float r, float g, float b, float a) = (void (__stdcall*)(float, float, float, float))&"glClearColor";
void (__stdcall* glClearDepth)(double depth) = (void (__stdcall*)(double))&"glClearDepth"; //void (__stdcall* glClearDepth)(...) = (void (__stdcall*)(...))&"glClearDepth";
void (__stdcall* glRenderMode)(int mode) = (void (__stdcall*)(int))&"glRenderMode"; void (__stdcall* glRenderMode)(int mode) = (void (__stdcall*)(int))&"glRenderMode";
//void (__stdcall* glSelectBuffer)(...) = (void (__stdcall*)(...))&"glSelectBuffer"; //void (__stdcall* glSelectBuffer)(...) = (void (__stdcall*)(...))&"glSelectBuffer";
//void (__stdcall* glInitNames)(...) = (void (__stdcall*)(...))&"glInitNames"; //void (__stdcall* glInitNames)(...) = (void (__stdcall*)(...))&"glInitNames";
@@ -808,22 +799,18 @@ void (__stdcall* glColorPointer)(GLint size, GLenum type, GLsizei stride, const
void (__stdcall* glNormalPointer)(GLenum type, GLsizei stride, const GLvoid* pointer) = (void (__stdcall*)(GLenum, GLsizei, const GLvoid*))&"glNormalPointer"; void (__stdcall* glNormalPointer)(GLenum type, GLsizei stride, const GLvoid* pointer) = (void (__stdcall*)(GLenum, GLsizei, const GLvoid*))&"glNormalPointer";
void (__stdcall* glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) = (void (__stdcall*)(GLint, GLenum, GLsizei, const GLvoid*))&"glTexCoordPointer"; void (__stdcall* glTexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) = (void (__stdcall*)(GLint, GLenum, GLsizei, const GLvoid*))&"glTexCoordPointer";
//void (__stdcall* glPolygonOffset)(...) = (void (__stdcall*)(...))&"glPolygonOffset"; //void (__stdcall* glPolygonOffset)(...) = (void (__stdcall*)(...))&"glPolygonOffset";
void (__stdcall* glOrtho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) = (void (__stdcall*)(GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble))&"glOrtho"; //void (__stdcall* glOrtho)(...) = (void (__stdcall*)(...))&"glOrtho";
//void (__stdcall* glDebug)(...) = (void (__stdcall*)(...))&"glDebug"; //void (__stdcall* glDebug)(...) = (void (__stdcall*)(...))&"glDebug";
//void (__stdcall* glInit)(...) = (void (__stdcall*)(...))&"glInit"; //void (__stdcall* glInit)(...) = (void (__stdcall*)(...))&"glInit";
//void (__stdcall* glClose)(...) = (void (__stdcall*)(...))&"glClose"; //void (__stdcall* glClose)(...) = (void (__stdcall*)(...))&"glClose";
void (__stdcall* gluPerspective)(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) = (void (__stdcall*)(GLdouble, GLdouble, GLdouble, GLdouble))&"gluPerspective"; //void (__stdcall* gluPerspective)(...) = (void (__stdcall*)(...))&"gluPerspective";
GLUquadricObj* (__stdcall* gluNewQuadric)() = (GLUquadricObj* (__stdcall*)())&"gluNewQuadric"; //void (__stdcall* gluNewQuadric)(...) = (void (__stdcall*)(...))&"gluNewQuadric";
void (__stdcall* gluDeleteQuadric)(GLUquadricObj *state) = (void (__stdcall*)(GLUquadricObj*))&"gluDeleteQuadric"; //void (__stdcall* gluDeleteQuadric)(...) = (void (__stdcall*)(...))&"gluDeleteQuadric";
void (__stdcall* gluQuadricDrawStyle)(GLUquadricObj *quadObject, GLenum drawStyle) = (void (__stdcall*)(GLUquadricObj*, GLenum))&"gluQuadricDrawStyle"; //void (__stdcall* gluQuadricDrawStyle)(...) = (void (__stdcall*)(...))&"gluQuadricDrawStyle";
void (__stdcall* gluQuadricOrientation)(GLUquadricObj *quadObject, GLenum orientation) = (void (__stdcall*)(GLUquadricObj*, GLenum))&"gluQuadricOrientation"; //void (__stdcall* gluQuadricOrientation)(...) = (void (__stdcall*)(...))&"gluQuadricOrientation";
void (__stdcall* gluQuadricTexture)(GLUquadricObj *quadObject, GLboolean textureCoords) = (void (__stdcall*)(GLUquadricObj*, GLboolean))&"gluQuadricTexture"; //void (__stdcall* gluQuadricTexture)(...) = (void (__stdcall*)(...))&"gluQuadricTexture";
void (__stdcall* gluCylinder)(GLUquadricObj *qobj, //void (__stdcall* gluCylinder)(...) = (void (__stdcall*)(...))&"gluCylinder";
GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks) = (void (__stdcall*)(GLUquadricObj*, GLdouble, GLdouble, GLdouble, GLint, GLint))&"gluCylinder"; //void (__stdcall* gluSphere)(...) = (void (__stdcall*)(...))&"gluSphere";
void (__stdcall* gluDisk)(GLUquadricObj *qobj,
GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops) = (void (__stdcall*)(GLUquadricObj*, GLdouble, GLdouble, GLint, GLint))&"gluDisk";
void (__stdcall* gluSphere)(GLUquadricObj *qobj,
GLdouble radius, GLint slices, GLint stacks) = (void (__stdcall*)(GLUquadricObj*, GLdouble, GLint, GLint))&"gluSphere";
void (__stdcall* kosglMakeCurrent)(long l, long t, long w, long h, TinyGLContext*) = (void (__stdcall*)(long, long, long, long, TinyGLContext*))&"kosglMakeCurrent"; void (__stdcall* kosglMakeCurrent)(long l, long t, long w, long h, TinyGLContext*) = (void (__stdcall*)(long, long, long, long, TinyGLContext*))&"kosglMakeCurrent";
void (__stdcall* kosglSwapBuffers)() = (void (__stdcall*)())&"kosglSwapBuffers"; void (__stdcall* kosglSwapBuffers)() = (void (__stdcall*)())&"kosglSwapBuffers";
asm{ asm{

View File

@@ -13,12 +13,12 @@ rem
set __value= set __value=
set __res= set __res=
shift shift
:__allowed :__allowed
set __values=%1 %__values% set __values=%1 %__values%
shift shift
if not "%1"=="" goto __allowed if not "%1"=="" goto __allowed
set /P __res="> set /P __res=">
:Check_Value :Check_Value
for %%a in (%__values%) do if %%a==%__res% set __value=%__res% for %%a in (%__values%) do if %%a==%__res% set __value=%__res%
@@ -59,7 +59,7 @@ echo *
fasm system\calendar\trunk\calendar.asm %BIN%\calendar fasm system\calendar\trunk\calendar.asm %BIN%\calendar
fasm system\board\trunk\board.asm %BIN%\develop\board fasm system\board\trunk\board.asm %BIN%\develop\board
fasm system\commouse\trunk\commouse.asm %BIN%\commouse fasm system\commouse\trunk\commouse.asm %BIN%\commouse
fasm system\cpu\trunk\cpu.asm %BIN%\cpu fasm system\cpu\trunk\cpu.asm %BIN%\cpu
fasm system\cpuid\trunk\cpuid.asm %BIN%\cpuid fasm system\cpuid\trunk\cpuid.asm %BIN%\cpuid
fasm system\skincfg\trunk\skincfg.asm %BIN%\skincfg fasm system\skincfg\trunk\skincfg.asm %BIN%\skincfg
fasm system\docpack\trunk\docpack.asm %BIN%\docpack fasm system\docpack\trunk\docpack.asm %BIN%\docpack
@@ -88,15 +88,15 @@ echo Building develop
echo * echo *
fasm develop\cmd\trunk\cmd.asm %BIN%\cmd fasm develop\cmd\trunk\cmd.asm %BIN%\cmd
fasm develop\fasm\trunk\fasm.asm %BIN%\develop\fasm fasm develop\fasm\trunk\fasm.asm %BIN%\develop\fasm
fasm develop\h2d2b\h2d2b.asm %BIN%\develop\h2d2b fasm develop\h2d2b\trunk\h2d2b.asm %BIN%\develop\h2d2b
fasm develop\heed\heed.asm %BIN%\demos\heed fasm develop\heed\trunk\heed.asm %BIN%\demos\heed
rem fasm develop\hexview\trunk\hexview.asm hexview rem fasm develop\hexview\trunk\hexview.asm hexview
fasm develop\keyascii\keyascii.asm %BIN%\develop\keyascii fasm develop\keyascii\trunk\keyascii.asm %BIN%\develop\keyascii
fasm develop\mtdbg\mtdbg.asm %BIN%\develop\mtdbg fasm develop\mtdbg\mtdbg.asm %BIN%\develop\mtdbg
rem fasm develop\param\trunk\param.asm param rem fasm develop\param\trunk\param.asm param
fasm develop\scancode\trunk\scancode.asm %BIN%\develop\scancode fasm develop\scancode\trunk\scancode.asm %BIN%\develop\scancode
fasm develop\tinypad\trunk\tinypad.asm %BIN%\tinypad fasm develop\tinypad\trunk\tinypad.asm %BIN%\tinypad
fasm develop\cObj\cObj.asm %BIN%\develop\cObj fasm develop\cObj\trunk\cObj.asm %BIN%\develop\cObj
echo * echo *
echo Building systems libraries echo Building systems libraries
@@ -154,16 +154,16 @@ echo *
echo Building other echo Building other
echo * echo *
rem fasm other\archer\trunk\@rcher.asm %BIN%\@rcher rem fasm other\archer\trunk\@rcher.asm %BIN%\@rcher
fasm other\calc\calc.asm %BIN%\calc fasm other\calc\trunk\calc.asm %BIN%\calc
fasm other\mhc\trunk\mhc.asm %BIN%\mhc fasm other\mhc\trunk\mhc.asm %BIN%\mhc
fasm other\period\period.asm %BIN%\period fasm other\period\trunk\period.asm %BIN%\period
fasm other\rtfread\rtfread.asm %BIN%\rtfread fasm other\rtfread\trunk\rtfread.asm %BIN%\rtfread
echo * echo *
echo Building media echo Building media
echo * echo *
rem media\ac97snd\trunk\ac97snd.asm ac97snd rem media\ac97snd\trunk\ac97snd.asm ac97snd
fasm media\animage\animage.asm %BIN%\animage fasm media\animage\trunk\animage.asm %BIN%\animage
fasm media\cdp\trunk\cdp.asm %BIN%\cdp fasm media\cdp\trunk\cdp.asm %BIN%\cdp
fasm media\gifview\trunk\gifview.asm %BIN%\gifview fasm media\gifview\trunk\gifview.asm %BIN%\gifview
fasm media\iconedit\trunk\iconedit.asm %BIN%\iconedit fasm media\iconedit\trunk\iconedit.asm %BIN%\iconedit
@@ -231,38 +231,38 @@ echo *
echo Building depend application for fdd's nightbuild echo Building depend application for fdd's nightbuild
echo * echo *
echo __nightbuild fix yes >> config.inc echo __nightbuild fix yes >> config.inc
fasm media\kiv\kiv.asm %BIN%\nightbuild\kiv fasm media\kiv\trunk\kiv.asm %BIN%\nightbuild\kiv
fasm media\scrshoot\scrshoot.asm %BIN%\nightbuild\scrshoot fasm media\scrshoot\scrshoot.asm %BIN%\nightbuild\scrshoot
fasm media\animage\animage.asm %BIN%\nightbuild\animage fasm media\animage\trunk\animage.asm %BIN%\nightbuild\animage
fasm media\midamp\trunk\midamp.asm %BIN%\nightbuild\midamp fasm media\midamp\trunk\midamp.asm %BIN%\nightbuild\midamp
fasm develop\heed\heed.asm %BIN%\nightbuild\heed fasm develop\heed\trunk\heed.asm %BIN%\nightbuild\heed
fasm develop\tinypad\trunk\tinypad.asm %BIN%\nightbuild\tinypad fasm develop\tinypad\trunk\tinypad.asm %BIN%\nightbuild\tinypad
fasm system\skincfg\trunk\skincfg.asm %BIN%\nightbuild\skincfg fasm system\skincfg\trunk\skincfg.asm %BIN%\nightbuild\skincfg
fasm system\hdd_info\trunk\hdd_info.asm %BIN%\nightbuild\hdd_info fasm system\hdd_info\trunk\hdd_info.asm %BIN%\nightbuild\hdd_info
fasm system\mgb\trunk\mgb.asm %BIN%\nightbuild\mgb fasm system\mgb\trunk\mgb.asm %BIN%\nightbuild\mgb
fasm system\rdsave\trunk\rdsave.asm %BIN%\nightbuild\rdsave fasm system\rdsave\trunk\rdsave.asm %BIN%\nightbuild\rdsave
fasm other\kpack\trunk\kpack.asm %BIN%\nightbuild\kpack fasm other\kpack\trunk\kpack.asm %BIN%\nightbuild\kpack
fasm other\rtfread\rtfread.asm %BIN%\nightbuild\rtfread fasm other\rtfread\trunk\rtfread.asm %BIN%\nightbuild\rtfread
;restore ;restore
echo __CPU_type fix %res% > config.inc echo __CPU_type fix %res% > config.inc
erase lang.inc erase lang.inc
echo * echo *
echo Finished building echo Finished building
echo * echo *
kpack /nologo 2> nul kpack /nologo 2> nul
if "%errorlevel%"=="9009" ( if "%errorlevel%"=="9009" (
echo *** NOTICE *** echo *** NOTICE ***
echo If you want to pack all applications you may echo If you want to pack all applications you may
echo place "kpack" in accessible directory. echo place "kpack" in accessible directory.
echo You can download that tool from http://diamondz.land.ru/ echo You can download that tool from http://diamondz.land.ru/
goto END goto END
) )
echo Kpack KolibriOS apps? echo Kpack KolibriOS apps?
echo echo
set /P res=[y/n]? set /P res=[y/n]?
@@ -273,7 +273,7 @@ echo Compressing system
echo * echo *
kpack %BIN%\calendar kpack %BIN%\calendar
kpack %BIN%\develop\board kpack %BIN%\develop\board
kpack %BIN%\cpu kpack %BIN%\cpu
kpack %BIN%\cpuid kpack %BIN%\cpuid
kpack %BIN%\skincfg kpack %BIN%\skincfg
kpack %BIN%\docpack kpack %BIN%\docpack

View File

@@ -85,7 +85,6 @@ struct TWebBrowser {
void tag_table(); void tag_table();
void tag_td(); void tag_td();
void tag_tr(); void tag_tr();
void reset_font_style();
}; };
#include "TWB\render.h" #include "TWB\render.h"
@@ -95,16 +94,16 @@ void TWebBrowser::SetPageDefaults()
{ {
t_html = t_body = link = false; t_html = t_body = link = false;
style.reset(); style.reset();
reset_font_style();
link_color_default = 0x0000FF; link_color_default = 0x0000FF;
link_color_active = 0xFF0000; link_color_active = 0xFF0000;
style.cur_line_h = list.item_h;
links.clear(); links.clear();
anchors.clear(); anchors.clear();
img_url.drop(); img_url.drop();
text_colors.drop(); text_colors.drop();
text_colors.add(0); text_colors.add(0);
if (secondrun) { if (secondrun) {
canvas.Init(list.x, list.y, list.w, math.max(list.visible, list.count)+200); canvas.Init(list.x, list.y, list.w, math.max(list.visible, list.count));
canvas.Fill(0, bg_colors.get(0)); canvas.Fill(0, bg_colors.get(0));
} }
bg_colors.drop(); bg_colors.drop();
@@ -115,6 +114,7 @@ void TWebBrowser::SetPageDefaults()
draw_w = list.w - BODY_MARGIN - BODY_MARGIN; draw_w = list.w - BODY_MARGIN - BODY_MARGIN;
linebuf = 0; linebuf = 0;
redirect = '\0'; redirect = '\0';
list.SetFont(8, 14, 10011000b);
tag_table_reset(); tag_table_reset();
is_html = true; is_html = true;
if (!strstri(bufpointer, "<body")) { if (!strstri(bufpointer, "<body")) {

View File

@@ -49,14 +49,14 @@ void TWebBrowser::RenderLine(dword _line)
pc = text_colors.get_last(); pc = text_colors.get_last();
if (link) && (pc == text_colors.get(0)) pc = link_color_default; if (link) && (pc == text_colors.get(0)) pc = link_color_default;
canvas.WriteText(draw_x, draw_y+1, list.font_type, pc, _line, NULL); canvas.WriteText(draw_x, draw_y, list.font_type, pc, _line, NULL);
if (style.b) canvas.WriteText(draw_x+1, draw_y+1, list.font_type, pc, _line, NULL); if (style.b) canvas.WriteText(draw_x+1, draw_y, list.font_type, pc, _line, NULL);
if (style.s) canvas.DrawBar(draw_x, list.item_h / 2 - zoom + draw_y, pw, zoom, pc); if (style.s) canvas.DrawBar(draw_x, list.item_h / 2 - zoom + draw_y, pw, zoom, pc);
if (style.u) canvas.DrawBar(draw_x, draw_y + list.font_h, pw, zoom, pc); if (style.u) canvas.DrawBar(draw_x, list.item_h - zoom - zoom + draw_y, pw, zoom, pc);
if (link) { if (link) {
if (ESBYTE[_line]==' ') && (ESBYTE[_line+1]==NULL) {} else { if (ESBYTE[_line]==' ') && (ESBYTE[_line+1]==NULL) {} else {
canvas.DrawBar(draw_x, draw_y + list.font_h, pw, zoom, link_color_default); canvas.DrawBar(draw_x, draw_y + list.item_h - calc(zoom*2)-1, pw, zoom, link_color_default);
links.add_text(draw_x, draw_y + list.y, pw, list.font_h, zoom); links.add_text(draw_x, draw_y + list.y, pw, list.item_h - calc(zoom*2)-1, zoom);
} }
} }
_SKIP_DRAW: _SKIP_DRAW:

View File

@@ -208,20 +208,9 @@ void TWebBrowser::tag_li()
void TWebBrowser::tag_hr() void TWebBrowser::tag_hr()
{ {
dword hrcol = 0x00777777; dword hrcol = 0x00777777;
dword hr_width = draw_w-BODY_MARGIN-BODY_MARGIN; if (tag.get_value_of("color")) hrcol = GetColor(tag.value);
dword hr_size = 1;
if (tag.get_value_of("color")) {
hrcol = GetColor(tag.value);
}
if (tag.get_value_of("width")) && (!strchr(tag.value, '%')) {
hr_width = math.min(hr_width, tag.get_number_of("width"));
}
if (tag.get_number_of("size")) {
hr_size = math.min(500, tag.number);
}
if (draw_x != left_gap) NewLine(); if (draw_x != left_gap) NewLine();
if (secondrun) canvas.DrawBar(left_gap, style.cur_line_h / 2 + draw_y - 1, hr_width, hr_size, hrcol); if (secondrun) canvas.DrawBar(5+left_gap, style.cur_line_h / 2 + draw_y - 1, draw_w-10, 1, hrcol);
draw_y += hr_size - 3;
draw_x++; draw_x++;
NewLine(); NewLine();
return; return;
@@ -246,12 +235,6 @@ void TWebBrowser::tag_q()
chrncat(#linebuf, '\"', sizeof(TWebBrowser.linebuf)); chrncat(#linebuf, '\"', sizeof(TWebBrowser.linebuf));
} }
void TWebBrowser::reset_font_style()
{
list.SetFont(BASIC_CHAR_W, 14, 10011000b);
style.cur_line_h = list.item_h = list.font_h + 5;
}
void TWebBrowser::tag_h1234_caption() void TWebBrowser::tag_h1234_caption()
{ {
if (ESBYTE[#tag.name+1]=='4') { if (ESBYTE[#tag.name+1]=='4') {
@@ -267,18 +250,19 @@ void TWebBrowser::tag_h1234_caption()
NewLine(); NewLine();
} }
if (tag.is("h1")) { if (tag.is("h1")) {
list.SetFont(BASIC_CHAR_W*2, 14+13, 10011001b); list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
style.b = true; style.b = true;
} else if (tag.is("h2")) { } else if (tag.is("h2")) {
list.SetFont(BASIC_CHAR_W*2, 14+13, 10011001b); list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
} else { } else {
list.SetFont(6*2, 9+8, 10001001b); list.SetFont(6*2, 9+7, 10001001b);
} }
style.cur_line_h = list.item_h = list.font_h + 3; style.cur_line_h = list.item_h = list.font_h + 2;
} else { } else {
if (tag.is("h1")) style.b = false; if (tag.is("h1")) style.b = false;
NewLine(); NewLine();
reset_font_style(); list.SetFont(BASIC_CHAR_W, 14, 10011000b);
style.cur_line_h = list.item_h = BASIC_LINE_H;
} }
} }
} }
@@ -286,15 +270,11 @@ void TWebBrowser::tag_h1234_caption()
void TWebBrowser::tag_kosicon() void TWebBrowser::tag_kosicon()
{ {
dword imgbuf[44]; dword imgbuf[44];
dword maxicon;
dword shared_i18 = memopen("ICONS18", NULL, SHM_READ); dword shared_i18 = memopen("ICONS18", NULL, SHM_READ);
maxicon = EDX / 18 / 18 / 4;
if (shared_i18) && (tag.get_number_of("n")) { if (shared_i18) && (tag.get_number_of("n")) {
if (tag.number < maxicon) { if (draw_x + 18 > canvas.bufw) NewLine();
if (draw_x + 18 > canvas.bufw) NewLine(); canvas.DrawImage(draw_x, draw_y-2, 18, 18, 18*18*4*tag.number+shared_i18);
canvas.DrawImage(draw_x, draw_y-1, 18, 18, 18*18*4*tag.number+shared_i18); draw_x += 22;
draw_x += 22;
}
} }
} }

View File

@@ -571,10 +571,10 @@ void OpenPage(dword _open_URL)
//INTERNAL PAGE //INTERNAL PAGE
history.add(#new_url); history.add(#new_url);
WB1.custom_encoding = -1; WB1.custom_encoding = -1;
if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buildin_page_home, sizeof(buildin_page_home)); if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buildin_page_home, sizeof(buildin_page_home)-1);
else if (streq(#new_url, URL_SERVICE_TEST)) LoadInternalPage(#buildin_page_test, sizeof(buildin_page_test)); else if (streq(#new_url, URL_SERVICE_TEST)) LoadInternalPage(#buildin_page_test, sizeof(buildin_page_test)-1);
else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory(); else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory();
else LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)); else LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
} else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) { } else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) {
//WEB PAGE //WEB PAGE
@@ -589,7 +589,7 @@ void OpenPage(dword _open_URL)
if (!http.transfer) { if (!http.transfer) {
history.add(#new_url); history.add(#new_url);
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)); LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
} }
} else { } else {
//LOCAL PAGE //LOCAL PAGE
@@ -712,7 +712,7 @@ void EventSubmitOmnibox()
void LoadInternalPage(dword _bufdata, _in_bufsize){ void LoadInternalPage(dword _bufdata, _in_bufsize){
if (!_bufdata) || (!_in_bufsize) { if (!_bufdata) || (!_in_bufsize) {
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)); LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
} else { } else {
WB1.list.first = 0; //scroll page to the top WB1.list.first = 0; //scroll page to the top
DrawOmnibox(); DrawOmnibox();

View File

@@ -112,4 +112,4 @@ char editbox_icons[] = FROM "res/editbox_icons.raw";
#define DEFAULT_URL URL_SERVICE_HOMEPAGE #define DEFAULT_URL URL_SERVICE_HOMEPAGE
char version[]="WebView 3.91"; char version[]="WebView 3.85";

View File

@@ -1,7 +1,7 @@
#ifdef LANG_RUS #ifdef LANG_RUS
#define HISTORY_HEADER "<html><title><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></title><body bgcolor=#fff><h3><3E><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD></h3><br>" #define HISTORY_HEADER "<html><title><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></title><body><b><3E><><EFBFBD><EFBFBD><EFBFBD><E9A5AD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD></b><br>"
#else #else
#define HISTORY_HEADER "<html><title>History</title><body bgcolor=#fff><h3>Visited pages</h3><br>" #define HISTORY_HEADER "<html><title>History</title><body><b>Visited pages</b><br>"
#endif #endif
@@ -13,7 +13,7 @@ ShowHistory()
for (i=0; i<history.items.count-1; i++) //if (cache.type.get(i) == PAGE) for (i=0; i<history.items.count-1; i++) //if (cache.type.get(i) == PAGE)
{ {
strcat(history_pointer, "<kosicon n=3><a href='"); strcat(history_pointer, "<a href='");
strcat(history_pointer, history.items.get(i)); strcat(history_pointer, history.items.get(i));
strcat(history_pointer, "'>"); strcat(history_pointer, "'>");
strcat(history_pointer, history.items.get(i)); strcat(history_pointer, history.items.get(i));

View File

@@ -1,49 +1,17 @@
<html><head><title>New tab</title></head> <html>
<body bgcolor=#fff> <head>
<title>Homepage</title>
</head>
<body><pre>Welcome to WebView a Text-Based Browser.
<table><tr><td width=20><td width=220><pre> KolibriOS Bookmarks:
_____________________ 1. <a href=//kolibrios.org>Homepage</a>
|# : : #| 2. <a href="//builds.kolibrios.org">Night-builds</a>
| : WebView : | 3. <a href="//ftp.kolibrios.org">FTP Server</a>
| : for : |
| : KolibriOS : |
| : : |
| :_______________: |
| ____________ |
| | __ | |
| || | | |
\_____||__|________|__|<font color=#DDD>lc</font>
<font bg=#F8F15B> web <font bg=#FF5A7E color=#fff> 1.0 <font bg=#47D018> compatable <font bg=#F8F15B>By the way,</font>
<font bg=#3CE7FF> </font></font></font></font>
<td>
</pre>
<kosicon n=58><a href=//kolibrios.org>Homepage</a> &nbsp;
<kosicon n=50><a href="//builds.kolibrios.org">Night-builds</a> &nbsp;
<kosicon n=50><a href="//ftp.kolibrios.org">FTP Server</a>
<pre>
By the way,
<font color="#555555">&bull; You can check for browser updates from the main menu. <font color="#555555">&bull; You can check for browser updates from the main menu.
&bull; To run a web search, type a text in the adress box and press Ctrl+Enter. &bull; To run a web search, type a text in the adress box and press Ctrl+Enter.
&bull; Pressing F6 moves a text cursor to the omnibox. &bull; Pressing F6 moves a text cursor to the omnibox.
&bull; You can manually change the encoding of a page by clicking on a label in the bottom right corner. &bull; Click on a label in the bottom right corner to change the encoding of a page.
</font>
~+
* +
' |
() .-.,="``"=. - o -
'=/_ \ |
* | '=._ |
\ `=./`, '
. '=.__.=' `=' *
+ +
O * ' .<font color=#DDD>jgs</font>

View File

@@ -1,49 +1,15 @@
<html><head><title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></title></head> <html><head><meta charset="cp-866">
<body bgcolor=#fff> <title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD></title></head>
<body><pre><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD> WebView!
<table><tr><td width=20><td width=220><pre> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> KolibriOS:<ol>
_____________________ <li><a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><></a>
|# : : #| <li><a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
| : WebView : | <li><a href="//ftp.kolibrios.org">FTP <20><><EFBFBD></a></ol>
| : for : |
| : KolibriOS : |
| : : |
| :_______________: |
| ____________ |
| | __ | |
| || | | |
\_____||__|________|__|<font color=#DDD>lc</font>
<font bg=#F8F15B> web <font bg=#FF5A7E color=#fff> 1.0 <font bg=#47D018> compatable <font bg=#F8F15B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,</font>
<font bg=#3CE7FF> </font></font></font></font>
<td>
</pre>
<kosicon n=58><a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><></a> &nbsp;
<kosicon n=50><a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a> &nbsp;
<kosicon n=50><a href="//ftp.kolibrios.org">FTP <20><><EFBFBD></a>
<pre>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
<font color="#555555">&bull; <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <font color="#555555">&bull; <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
&bull; <20><><EFBFBD> <20><><EFBFBD><20> Google <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ctrl+Enter &bull; <20><><EFBFBD> <20><><EFBFBD><20> Google <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ctrl+Enter
&bull; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F6 <20><><EFBFBD><EFBFBD><><EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. &bull; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F6 <20><><EFBFBD><EFBFBD><><EFBFBD><E2AEA2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
&bull; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><E0A0AD><EFBFBD>, <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD>. &bull; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0AEA2> <20><><EFBFBD><E0A0AD><EFBFBD>, <20><><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><E0A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD>.
~+
* +
' |
() .-.,="``"=. - o -
'=/_ \ |
* | '=._ |
\ `=./`, '
. '=.__.=' `=' *
+ +
O * ' .<font color=#DDD>jgs</font>

View File

@@ -5,19 +5,12 @@
<title>Тест Acid 0.1</title> <title>Тест Acid 0.1</title>
</head> </head>
<body bgcolor="#000000" link="#0066FF" text="#FFFFFF"> <body bgcolor="#000000" link="#0066FF" text="#FFFFFF">
<h1 align=center>Тест Acid 0.1</h1> <h1 align=center>Это тестовая страница для проверки WebViewer</h1>
<br> <br />
<b>Это тестовая страница для проверки текстового браузера <s>HTML Viewer</s> WebView</b> <p>WebViewer является текстовым браузером и поддерживает все популярные кодировки (cp1251, koi-8, cp866, unicode)
и некоторые теги. Поддержка таблииц (&lt;table&gt;), CSS, Javascript'a и Контактика пока не реализована :)
<p>Из кодировок поддерживаются: CP866(DOS), CP1251(Windows), CP1252(Latin legacy), KOI8, и конечно UTF8. CSS и Javascript пока не реализованы (ахахаха). Поддержка тега &lt;table&gt; крайне базовая, поддержки вложенных таблиц нет.
</p> </p>
<br />
<h3>История</h3>
Ранее программа называлась <b >HTMLv (HTML Viewer)</b> и изначально задумывалась как <q>Центр справки и поддержки</q>. Чтобы не изобретать велосипед и одновременно исполнить мечту многих, форматом просматриваемых страниц был выбран html.
Первоначальный автор Veliant, затем разработка была подхвачена дизайнером Leency. Это была моя вторая программа после файлового менеджера Eolite.<br>
<span> <br />
<b> <b>
<font color="#FF0000">K</font> <font color="#FF0000">K</font>
@@ -40,8 +33,7 @@
</b> </b>
<br> <br>
<table> <p>
<td>
<bg bgcolor=#333> <bg bgcolor=#333>
Небольшой список:<ol> Небольшой список:<ol>
<li><q>Этот текст в кавычках</q></li> <li><q>Этот текст в кавычках</q></li>
@@ -54,14 +46,17 @@
</p> </p>
<br> <br>
<pre>
"Осень уже пришла!"-
Шепнул мне на ухо ветер,
Подкравшись к подушке моей.
Басе
</pre>
<!-- комментарий: этого текста здесь <нет> --> <!-- комментарий: этого текста здесь <нет> -->
<br> <br>
<img alt="нет картинки, просто alt">
<img src = http://wiby.org/about/wibyplex.gif>
<a href="http://kolibrios.org/i/logo.png"><img id="2.1.4" src="http://kolibrios.org/i/logo.png" alt="logo"><br>Открыть</a><br> <a href="http://kolibrios.org/i/logo.png"><img id="2.1.4" src="http://kolibrios.org/i/logo.png" alt="logo"><br>Открыть</a><br>
<br> <br>
@@ -70,25 +65,10 @@
<a href='/sys/index.htm'>Незакрытый тег а - index.htm<br> <a href='/sys/index.htm'>Незакрытый тег а - index.htm<br>
<a href="/sys/calc">/sys/calc</a><br> <a href="/sys/calc">/sys/calc</a><br>
<a href="#2.1.4">#2.1.4</a><br> <a href="#2.1.4">#2.1.4</a><br>
<a href="http://kolibrios.org">http://kolibrios.org</a><br> <a href="http://bash.im">http://bash.im</a><br>
<a href="mailto:leency@mail.ru">Mail to Leency</a><br> <a href="mailto:leency@mail.ru">Mail to Leency</a><br>
<br> <br>
<br>
<h1><a href=#>Link H1</a> <u>Underline H1</u></h1>
<h2><a href=#>Link H2</a> <u>Underline H2</u></h2>
<h3><a href=#>Link H3</a> <u>Underline H2</u></h3>
<a href=#>Link</a> <u>Underline</u>
<td>
<pre>
"Осень уже пришла!"-
Шепнул мне на ухо ветер,
Подкравшись к подушке моей.
Басе
</pre><br>
В этом тексте есть переход на следующую строку, но браузер В этом тексте есть переход на следующую строку, но браузер
его должен проигнорировать. Еще много пробелов. А тут есть его должен проигнорировать. Еще много пробелов. А тут есть
@@ -100,19 +80,8 @@
&#1082;&#1086;&#1088;&#1087;&#1091;&#1089; &#1085;&#1072; &#1090;&#1077;&#1088;&#1088;&#1080;&#1090;&#1086;&#1088;&#1080;&#1080; &#1053;&#1058;&#1059; «&#1061;&#1055;&#1048;» &#1082;&#1086;&#1088;&#1087;&#1091;&#1089; &#1085;&#1072; &#1090;&#1077;&#1088;&#1088;&#1080;&#1090;&#1086;&#1088;&#1080;&#1080; &#1053;&#1058;&#1059; «&#1061;&#1055;&#1048;»
</p> </p>
<pre><font color="#000">
<font bg=#FFED00 style="background-color:#FFED00"> Заметки </font>
<font bg=#FFFBCE style="background-color:#FFFBCE"> </font>
<font bg=#FFFBCE style="background-color:#FFFBCE"> Речка на Жукова </font>
<font bg=#FFFBCE style="background-color:#FFFBCE"> Heroes 3 </font>
<font bg=#FFFBCE style="background-color:#FFFBCE"> Рисостерон, куринабол </font>
<font bg=#FFFBCE style="background-color:#FFFBCE"> </font>
</font></pre>
</table>
<hr color="#758999"> <hr color="#758999">
<center>Zhytomyr 2008-2025</center> <center>Zhitomyr 2008-2015</center>
</body> </body>

View File

@@ -1,2 +0,0 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("flag.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "flag")

View File

@@ -1,306 +0,0 @@
; SPDX-License-Identifier: GPL-2.0-only
; Flag - demo program shows a flag with the inscription 'KolibriOS'
; Copyright (C) 2025 KolibriOS team
use32
org 0
db 'MENUET01'
dd 1,start,i_end,mem,stacktop,0,cur_dir_path
include '../../proc32.inc'
include '../../macros.inc'
include '../../KOSfuncs.inc'
include '../../load_lib.mac'
include '../../dll.inc'
include '../../develop/libraries/TinyGL/asm_fork/kosgl.inc'
include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
include '../../develop/libraries/TinyGL/asm_fork/examples/fps.inc'
@use_library
align 4
start:
load_library name_tgl, library_path, system_path, import_tinygl
cmp eax,SF_TERMINATE_PROCESS
jz button.exit
mcall SF_SET_EVENTS_MASK, 0x27
; *** init ***
stdcall [kosglMakeCurrent], 0,15,600,380,ctx1
stdcall [glMatrixMode], GL_MODELVIEW
call [glLoadIdentity]
stdcall [glClearColor], 0.549, 0.549, 0.588, 1.0
stdcall [glEnable], GL_LIGHTING
stdcall [glLightf], GL_LIGHT0, GL_SPOT_EXPONENT, 0.0
stdcall [glLightf], GL_LIGHT0, GL_SPOT_CUTOFF, 180.0
stdcall [glEnable], GL_LIGHT0
stdcall [glLightfv], GL_LIGHT0, GL_POSITION, lightpos
stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, lightdirect
stdcall [glEnable], GL_COLOR_MATERIAL
glpush p3
stdcall [glClearDepth]
stdcall [glEnable], GL_CULL_FACE
stdcall [glEnable], GL_DEPTH_TEST
fninit
stdcall reshape, 600,380
; *** end init ***
align 4
red_win:
call draw_window
mcall SF_THREAD_INFO, procinfo,-1
mov eax,dword[procinfo.box.height]
cmp eax,120
jge @f
mov eax,120 ;min size
@@:
sub eax,43
mov ebx,dword[procinfo.box.width]
cmp ebx,200
jge @f
mov ebx,200
@@:
sub ebx,10
stdcall reshape, ebx,eax
align 16
still:
call draw_3d
cmp dword[stop],1
je @f
stdcall Fps, 365,4
mov dword[esp-4],eax
fild dword[esp-4]
fmul dword[delt_3]
fchs
fadd dword[dangle]
fstp dword[dangle] ;dangle -= 0.01*Fps(x,y)
mcall SF_WAIT_EVENT_TIMEOUT, 1
jmp .end0
align 4
@@:
mcall SF_WAIT_EVENT
.end0:
cmp al, EV_REDRAW
jz red_win
cmp al, EV_KEY
jz key
cmp al, EV_BUTTON
jz button
jmp still
; new window size or exposure
align 4
proc reshape, width:dword, height:dword
locals
dxy dq ?
endl
stdcall [glViewport], 0, 0, [width], [height]
stdcall [glMatrixMode], GL_PROJECTION
call [glLoadIdentity]
fild dword[width]
fidiv dword[height]
fstp qword[dxy] ;dxy = width/height
glpush p4
glpush p3
glpush dxy
glpush p1
call [gluPerspective] ;28.0, width/height, 1.0, 40.0
stdcall [glMatrixMode], GL_MODELVIEW
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT
ret
endp
align 4
draw_window:
pushad
mcall SF_REDRAW,SSF_BEGIN_DRAW
mcall SF_CREATE_WINDOW, (50 shl 16)+609,(30 shl 16)+425,0x33404040,,title1
call [kosglSwapBuffers]
;Title
mcall SF_DRAW_TEXT, (338 shl 16)+4, 0xc0c0c0, fps, fps.end-fps
mcall SF_DRAW_TEXT, (8 shl 16)+4, 0xc0c0c0, title2, title2.end-title2
mcall SF_REDRAW,SSF_END_DRAW
popad
ret
align 4
key:
mcall SF_GET_KEY
cmp ah,27 ;Esc
je button.exit
cmp ah,112 ;P
jne @f
xor dword[stop],1
jmp still
@@:
jmp still
align 4
button:
mcall SF_GET_BUTTON
cmp ah,1
jne still
.exit:
mcall SF_TERMINATE_PROCESS
align 4
title1: db 'TinyGL in KolibriOS'
.end: db 0
title2: db 'ESC - exit, P - pause'
.end: db 0
fps: db 'FPS:'
.end: db 0
align 16
proc draw_3d uses ebx ecx edx esi edi
locals
z dd ?
endl
call [glLoadIdentity]
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT
stdcall [glTranslatef], 0.0, 0.0, -2.0
stdcall [glRotatef], 10.0, 0.0, 0.0, 1.0
stdcall [glRotatef], 43.0, 0.0, 1.0, 0.0
stdcall [glTranslatef], -0.6, -0.2, -0.1
mov edi, logo+9*41 ;edi = logo[9][0]
mov esi, 41 ;esi = i
align 4
.cycle0: ;for(int i=0;i<41;i++)
stdcall [glTranslatef], 0.045, 0.0, 0.0
call [glPushMatrix]
fld dword[angle]
fsin
fmul dword[delt_1]
fstp dword[z] ;= 0.08*sin(angle)
fld dword[angle]
fadd dword[delt_2]
fstp dword[angle] ;angle += 0.2
mov ecx, 9
mov ebx, edi
; ecx = j
.cycle1: ;for(int j=9;j>=0;j--)
cmp byte[ebx],0 ;if(logo[j][i])
je @f
push 0.0 ;b
push 0.0 ;g
push 1.0 ;r
jmp .end_c2
@@:
push 0.945 ;b
push 0.855 ;g
push 0.859 ;r
.end_c2:
call [glColor3f]
stdcall [glTranslatef], 0.0, 0.045, 0.0
stdcall [glBegin], GL_QUADS
stdcall [glVertex3f], 0.0, -0.04,[z]
stdcall [glVertex3f], 0.04,-0.04,[z]
stdcall [glVertex3f], 0.04, 0.0, [z]
stdcall [glVertex3f], 0.0, 0.0, [z]
call [glEnd]
add ebx, -41
dec ecx
jnz .cycle1
call [glPopMatrix]
inc edi ;edi = logo[9][i]
dec esi
jnz .cycle0
mov edx,dword[dangle]
mov dword[angle],edx
call [kosglSwapBuffers]
ret
endp
align 4
p1 dq 28.0
p3 dq 1.0
p4 dq 40.0
delt_1 dd 0.08
delt_2 dd 0.2
delt_3 dd 0.01
lightpos dd 2.0, 0.0, -2.5, 1.0
lightdirect dd 0.0, 0.0, -0.7
angle dd 0.0
dangle dd 0.0
stop dd 0
;[10][41]
logo db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,0,\
0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,\
0,0,1,0,1,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,1,0,0,0,0,\
0,0,1,1,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,\
0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,\
0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;--------------------------------------------------
align 4
import_tinygl:
macro E_LIB n
{
if defined sz_#n
n dd sz_#n
end if
}
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
dd 0,0
macro E_LIB n
{
if used n
sz_#n db `n,0
end if
}
include '../../develop/libraries/TinyGL/asm_fork/export.inc'
;--------------------------------------------------
system_path db '/sys/lib/'
name_tgl db 'tinygl.obj',0
;--------------------------------------------------
align 16
i_end:
ctx1 TinyGLContext
procinfo process_information
cur_dir_path rb 4096
library_path rb 4096
rb 4096
stacktop:
mem:

View File

@@ -0,0 +1,7 @@
if tup.getconfig("NO_FASM") ~= "" then return end
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
tup.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir())
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en_US" or tup.getconfig("LANG")) .. " > %o", {"lang.inc"})
tup.rule({"magnify.asm", extra_inputs = {"lang.inc"}}, FASM .. " %f %o " .. tup.getconfig("KPACK_CMD"), "magnify")

View File

@@ -0,0 +1,6 @@
@erase lang.inc
@echo lang fix en_US >lang.inc
@fasm magnify.asm magnify
@kpack magnify
@erase lang.inc
@pause

View File

@@ -0,0 +1,6 @@
@erase lang.inc
@echo lang fix ru_RU >lang.inc
@fasm magnify.asm magnify
@kpack magnify
@erase lang.inc
@pause

View File

@@ -0,0 +1,156 @@
;---------------------------------------------------------------------
; MAGNIFY SCREEN v1.0
;
; Version for KolibriOS 2005-2011
;
; Version for Menuet to 2005
;---------------------------------------------------------------------
; last update: 08/18/2011
; changed by: Marat Zakiyanov aka Mario79, aka Mario
; changes: Checking for "rolled up" window
;---------------------------------------------------------------------
use32
org 0x0
db 'MENUET01' ; 8 byte id
dd 1 ; header version
dd START ; program start
dd I_END ; program image size
dd 0x1000 ; required amount of memory
dd 0x1000 ; esp
dd 0, 0 ; no parameters, no path
;---------------------------------------------------------------------
include 'lang.inc' ; Language support for locales: ru_RU (CP866), en_US.
include '..\..\..\macros.inc'
delay equ 20
magnify_width = 40
magnify_height = 30
;---------------------------------------------------------------------
START: ; start of execution
redraw:
call draw_window
still:
call draw_magnify
wtevent:
mcall 23,delay ; wait here for event with timeout
dec eax
js still
jz redraw
dec eax
jnz button
; key in buffer
mov al, 2
mcall
jmp wtevent
;---------------------------------------------------------------------
button:
; we have only one button, close
or eax, -1
mcall
;---------------------------------------------------------------------
; ******* WINDOW DEFINITIONS AND DRAW ********
;---------------------------------------------------------------------
draw_window:
mcall 12,1
mov al, 48 ; function 48 : graphics parameters
mov bl, 4 ; subfunction 4 : get skin height
mcall
; DRAW WINDOW
mov ebx, 100*65536 + 8*magnify_width + 8
lea ecx, [eax + 100*65536 + 8*magnify_height + 3]
mov edx, 0x34000000 ; color of work area RRGGBB
mov edi, labelt ; header
xor eax, eax ; function 0 : define and draw window
mcall
mcall 12,2
ret
;---------------------------------------------------------------------
draw_magnify:
mcall 9,procinfo,-1
mov eax,[procinfo+70] ;status of window
test eax,100b
jne .end
mcall 14 ; get screen size
movzx ecx, ax
inc ecx
mov [size_y], ecx
shr eax, 16
inc eax
mov [size_x], eax
xor ebx, ebx
mcall 37 ; get mouse coordinates
mov ecx, eax
shr ecx, 16 ; ecx = x
movzx edx, ax ; edx = y
inc ecx
mov [m_xe], ecx
inc edx
mov [m_ye], edx
sub ecx, magnify_width
sub edx, magnify_height
mov [m_x], ecx
mov [m_y], edx
.loop_y:
.loop_x:
xor eax, eax ; assume black color for invalid pixels
test ecx, ecx
js .nopix
cmp ecx, [size_x]
jge .nopix
test edx, edx
js .nopix
cmp edx, [size_y]
jge .nopix
mov ebx, edx
imul ebx, [size_x]
add ebx, ecx
mcall 35 ; read pixel
.nopix:
push ecx edx
sub ecx, [m_x]
sub edx, [m_y]
mov ebx, ecx
shl ebx, 3+16
mov bl, 8
mov ecx, edx
shl ecx, 3+16
mov cl, 8
mov edx, eax
mcall 13
pop edx ecx
inc ecx
cmp ecx, [m_xe]
jnz .loop_x
mov ecx, [m_x]
inc edx
cmp edx, [m_ye]
jnz .loop_y
.end:
ret
;---------------------------------------------------------------------
; DATA AREA
;---------------------------------------------------------------------
if lang eq ru_RU
labelt:
db 'Magnifier - <20><><EFBFBD><E0A0AD><EFBFBD> <20>㯠', 0
else ; Default to en_US
labelt:
db 'Magnifier', 0
end if
I_END:
align 4
m_x dd ?
m_y dd ?
m_xe dd ?
m_ye dd ?
size_x dd ?
size_y dd ?
;---------------------------------------------------------------------
procinfo:
rb 1024
;---------------------------------------------------------------------

View File

@@ -1,329 +1,325 @@
; SPDX-License-Identifier: NOASSERTION use32
; org 0x0
db 'MENUET01'
dd 0x01,start,i_end,e_end,e_end,0,0
use32
org 0x0 include '../../../proc32.inc'
db 'MENUET01' include '../../../macros.inc'
dd 0x01,start,i_end,e_end,e_end,0,0
BUTTON_SIDE = 28 ; button are squares
include '../../proc32.inc' BUTTON_SPACE = 34 ; space between cols and rows
include '../../macros.inc' BUTTON_ID_SHIFT = 2 ; button_id = character + BUTTON_ID_SHIFT
TABLE_BEGIN_X = 2
BUTTON_SIDE = 28 ; button are squares TABLE_BEGIN_Y = 2
BUTTON_SPACE = 34 ; space between cols and rows PANEL_Y = BUTTON_SPACE*8+TABLE_BEGIN_Y+TABLE_BEGIN_Y
BUTTON_ID_SHIFT = 2 ; button_id = character + BUTTON_ID_SHIFT
TABLE_BEGIN_X = 2 FOCUS_SQUARE_COLOR = 0x000080FF
TABLE_BEGIN_Y = 2 SWITCHER_BLINK_COLOR = 0x00808080
PANEL_Y = BUTTON_SPACE*8+TABLE_BEGIN_Y+TABLE_BEGIN_Y
FONT_SMALL = 0x01000000
FOCUS_SQUARE_COLOR = 0x000080FF FONT_BIG = 0x10000000
SWITCHER_BLINK_COLOR = 0x00808080
FONT_SMALL = 0x01000000 start:
FONT_BIG = 0x10000000 still:
mcall 10
dec eax
start: jz redraw
still: dec eax
mcall 10 jz key
dec eax
jz redraw button:
dec eax mcall 17
jz key shr eax, 8
button: cmp eax, 1
mcall 17 je quit
shr eax, 8 cmp ax, 0xFFAA ; page switcher
je .switch_page ; any button with a character
cmp eax, 1 cmp ax, 0xEEBB ; page switcher
je quit je .switch_font
cmp ax, 0xFFAA ; page switcher .change_focus:
je .switch_page ; any button with a character mov bl, [symbol_focused]
cmp ax, 0xEEBB ; page switcher mov [symbol_unfocused], bl
je .switch_font sub ax, BUTTON_ID_SHIFT ; get the corresponding character
.change_focus: mov [symbol_focused], al
mov bl, [symbol_focused] stdcall draw_table, 0
mov [symbol_unfocused], bl call draw_codes
sub ax, BUTTON_ID_SHIFT ; get the corresponding character jmp still
mov [symbol_focused], al .switch_font:
stdcall draw_table, 0 cmp [font_type], FONT_SMALL
call draw_codes jne @f
jmp still mov [font_type], FONT_BIG
.switch_font: jmp redraw
cmp [font_type], FONT_SMALL @@: mov [font_type], FONT_SMALL
jne @f jmp redraw
mov [font_type], FONT_BIG .switch_page:
jmp redraw movzx bx, [symbol_start]
@@: mov [font_type], FONT_SMALL add bx, BUTTON_ID_SHIFT
jmp redraw mov cx, 128 ; half of page
.switch_page: mov edx, 0x80000000
movzx bx, [symbol_start] mov dx, bx
add bx, BUTTON_ID_SHIFT @@: mcall 8
mov cx, 128 ; half of page inc edx
mov edx, 0x80000000 dec cx
mov dx, bx jnz @b
@@: mcall 8
inc edx @@: add [symbol_start], 128 ; change page
dec cx add [symbol_focused], 128
jnz @b stdcall draw_table, 1 ; 1 means redraw the whole table
call draw_codes
@@: add [symbol_start], 128 ; change page stdcall draw_page_switcher, 1 ; 1 means dark color, for blinking
add [symbol_focused], 128 mcall 5, 10
stdcall draw_table, 1 ; 1 means redraw the whole table stdcall draw_page_switcher, 0 ; 0 means usual light color
call draw_codes jmp still
stdcall draw_page_switcher, 1 ; 1 means dark color, for blinking
mcall 5, 10 redraw:
stdcall draw_page_switcher, 0 ; 0 means usual light color mcall 9, proc_info, -1
jmp still
mcall 12, 1
redraw:
mcall 9, proc_info, -1 mcall 48, 4 ; get skin height
mov ecx, 200*0x10000+PANEL_Y+33
mcall 12, 1 add ecx, eax
mov ebx, 200*0x10000+BUTTON_SPACE*16+TABLE_BEGIN_X+TABLE_BEGIN_X+9
mcall 48, 4 ; get skin height mcall 0, , , 0x34AAAaaa, 0x80000000, window_title
mov ecx, 200*0x10000+PANEL_Y+33 test [proc_info.wnd_state], 0x04
add ecx, eax jnz @f
mov ebx, 200*0x10000+BUTTON_SPACE*16+TABLE_BEGIN_X+TABLE_BEGIN_X+9
mcall 0, , , 0x34AAAaaa, 0x80000000, window_title stdcall draw_table, 1
test [proc_info.wnd_state], 0x04 call draw_codes
jnz @f stdcall draw_page_switcher, 0
stdcall draw_font_switcher
stdcall draw_table, 1
call draw_codes @@:
stdcall draw_page_switcher, 0 mcall 12, 2
stdcall draw_font_switcher jmp still
@@: key:
mcall 12, 2 mcall 2
jmp still cmp ah, 0x09 ; TAB key
je button.switch_page
key:
mcall 2 cmp ah, 0xB0 ; left
cmp ah, 0x09 ; TAB key jne @f
je button.switch_page mov bl, [symbol_focused]
mov [symbol_unfocused], bl
cmp ah, 0xB0 ; left dec bl
jne @f and bl, 0x0f
mov bl, [symbol_focused] and [symbol_focused], 0xf0
mov [symbol_unfocused], bl or [symbol_focused], bl
dec bl stdcall draw_table, 0
and bl, 0x0f call draw_codes
and [symbol_focused], 0xf0 jmp still
or [symbol_focused], bl
stdcall draw_table, 0 @@: cmp ah, 0xB1 ; down
call draw_codes jne @f
jmp still mov bl, [symbol_focused]
mov [symbol_unfocused], bl
@@: cmp ah, 0xB1 ; down add bl, 16
jne @f and bl, 0x70
mov bl, [symbol_focused] and [symbol_focused], 0x8f
mov [symbol_unfocused], bl or [symbol_focused], bl
add bl, 16 stdcall draw_table, 0
and bl, 0x70 call draw_codes
and [symbol_focused], 0x8f jmp still
or [symbol_focused], bl
stdcall draw_table, 0 @@: cmp ah, 0xB2 ; up
call draw_codes jne @f
jmp still mov bl, [symbol_focused]
mov [symbol_unfocused], bl
@@: cmp ah, 0xB2 ; up sub bl, 16
jne @f and bl, 0x70
mov bl, [symbol_focused] and [symbol_focused], 0x8f
mov [symbol_unfocused], bl or [symbol_focused], bl
sub bl, 16 stdcall draw_table, 0
and bl, 0x70 call draw_codes
and [symbol_focused], 0x8f jmp still
or [symbol_focused], bl
stdcall draw_table, 0 @@: cmp ah, 0xB3 ; righ
call draw_codes jne @f
jmp still mov bl, [symbol_focused]
mov [symbol_unfocused], bl
@@: cmp ah, 0xB3 ; righ inc bl
jne @f and bl, 0x0f
mov bl, [symbol_focused] and [symbol_focused], 0xf0
mov [symbol_unfocused], bl or [symbol_focused], bl
inc bl stdcall draw_table, 0
and bl, 0x0f call draw_codes
and [symbol_focused], 0xf0 jmp still
or [symbol_focused], bl jne @f
stdcall draw_table, 0
call draw_codes @@:
jmp still jmp still
jne @f
@@:
jmp still proc draw_table _full_redraw
mov al, [symbol_start]
mov [symbol_current], al
proc draw_table _full_redraw
.next_button:
mov al, [symbol_start]
mov [symbol_current], al xor edi, edi ; character focus flag
mov al, [symbol_current]
.next_button: cmp al, [symbol_focused]
jne @f
xor edi, edi ; character focus flag inc edi
mov al, [symbol_current] @@: cmp [_full_redraw], 1
cmp al, [symbol_focused] je .draw
jne @f cmp al, [symbol_focused]
inc edi je .draw
@@: cmp [_full_redraw], 1 cmp al, [symbol_unfocused] ; previously focused, should redraw to clear focus
je .draw je .draw
cmp al, [symbol_focused] jmp .skip ; skip button if it isn't (un)focused
je .draw
cmp al, [symbol_unfocused] ; previously focused, should redraw to clear focus .draw:
je .draw call draw_button
jmp .skip ; skip button if it isn't (un)focused .skip:
mov bl, [symbol_start]
.draw: add bl, 127 ; end of current page
call draw_button cmp [symbol_current], bl ; the last on page?
.skip: jne @f
mov bl, [symbol_start] mov [button_x], TABLE_BEGIN_X
add bl, 127 ; end of current page mov [button_y], TABLE_BEGIN_Y
cmp [symbol_current], bl ; the last on page? ret
jne @f @@: inc [symbol_current]
mov [button_x], TABLE_BEGIN_X add [button_x], BUTTON_SPACE
mov [button_y], TABLE_BEGIN_Y cmp [button_x], BUTTON_SPACE*16+TABLE_BEGIN_X ; the last in row?
ret jne .next_button
@@: inc [symbol_current] add [button_y], BUTTON_SPACE ; next row
add [button_x], BUTTON_SPACE mov [button_x], TABLE_BEGIN_X
cmp [button_x], BUTTON_SPACE*16+TABLE_BEGIN_X ; the last in row? jmp .next_button
jne .next_button ret
add [button_y], BUTTON_SPACE ; next row endp
mov [button_x], TABLE_BEGIN_X
jmp .next_button
ret proc draw_button
endp mov edx, 0x80000000
mov dl, [symbol_current]
add edx, BUTTON_ID_SHIFT
proc draw_button mov esi, 0xFFFfff
mov edx, 0x80000000 mcall 8, <[button_x],BUTTON_SIDE>, <[button_y],BUTTON_SIDE>
mov dl, [symbol_current] and edx, 0x7FFFFFFF
add edx, BUTTON_ID_SHIFT or edx, 0x20000000
mov esi, 0xFFFfff mcall
mcall 8, <[button_x],BUTTON_SIDE>, <[button_y],BUTTON_SIDE>
and edx, 0x7FFFFFFF test edi, edi ; is focused?
or edx, 0x20000000 jz .symbol ; draw only character, not selection square
mcall .focus_frame: ; draw a blue square (selection), 8 segments
mov esi, [button_x]
test edi, edi ; is focused? mov edi, [button_y]
jz .symbol ; draw only character, not selection square
.focus_frame: ; draw a blue square (selection), 8 segments mov bx, si
mov esi, [button_x] shl ebx, 16
mov edi, [button_y] mov bx, si
add bx, BUTTON_SIDE
mov bx, si mov cx, di
shl ebx, 16 shl ecx, 16
mov bx, si mov cx, di
add bx, BUTTON_SIDE mcall 38, , , FOCUS_SQUARE_COLOR
mov cx, di add ecx, 0x00010001
shl ecx, 16 mcall
mov cx, di add ecx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2)
mcall 38, , , FOCUS_SQUARE_COLOR mcall
add ecx, 0x00010001 add ecx, 0x00010001
mcall mcall
add ecx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2)
mcall mov bx, si
add ecx, 0x00010001 shl ebx, 16
mcall mov bx, si
mov cx, di
mov bx, si shl ecx, 16
shl ebx, 16 mov cx, di
mov bx, si add ecx, 2*0x10000+(BUTTON_SIDE-2)
mov cx, di mcall 38, , ,
shl ecx, 16 add ebx, 0x00010001
mov cx, di mcall
add ecx, 2*0x10000+(BUTTON_SIDE-2) add ebx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2)
mcall 38, , , mcall
add ebx, 0x00010001 add ebx, 0x00010001
mcall mcall
add ebx, (BUTTON_SIDE-2)*0x10000+(BUTTON_SIDE-2)
mcall .symbol:
add ebx, 0x00010001 mov ebx, [button_x]
mcall add ebx, 9
shl ebx, 16
.symbol: add ebx, [button_y]
mov ebx, [button_x] add ebx, 7
add ebx, 9 mov ecx, [font_type]
shl ebx, 16 mcall 4, , , symbol_current, 1
add ebx, [button_y]
add ebx, 7 ret
mov ecx, [font_type] endp
mcall 4, , , symbol_current, 1
ret proc draw_page_switcher _blinking
endp
mcall 8, , , 0x8000FFAA
mov esi, 0xCCCccc
proc draw_page_switcher _blinking cmp [_blinking], 1 ; blinking?
jne @f
mcall 8, , , 0x8000FFAA mov esi, SWITCHER_BLINK_COLOR
mov esi, 0xCCCccc @@: mcall , <2,98>, <PANEL_Y+1,23>, 0x0000FFAA
cmp [_blinking], 1 ; blinking?
jne @f mov ecx, 0x81000000
mov esi, SWITCHER_BLINK_COLOR mov edx, string_000_127
@@: mcall , <2,98>, <PANEL_Y+1,23>, 0x0000FFAA cmp [symbol_start], 0 ; first page?
je @f
mov ecx, 0x81000000 mov edx, string_128_255 ; ok, the second one
mov edx, string_000_127 @@: mcall 4, <10,PANEL_Y+6>,
cmp [symbol_start], 0 ; first page? mcall , <278,PANEL_Y+6>, 0x81000000, string_ASCII_CODE
je @f
mov edx, string_128_255 ; ok, the second one ret
@@: mcall 4, <10,PANEL_Y+6>, endp
mcall , <278,PANEL_Y+6>, 0x81000000, string_ASCII_CODE
proc draw_font_switcher
ret
endp mcall 8, <120,136>, <PANEL_Y+1,23>, 0x0000EEBB
proc draw_font_switcher mov edx, string_font_small
cmp [font_type], FONT_SMALL
mcall 8, <120,136>, <PANEL_Y+1,23>, 0x0000EEBB je @f
mov edx, string_font_big
mov edx, string_font_small @@: mcall 4, <130,PANEL_Y+6>,,,10
cmp [font_type], FONT_SMALL
je @f ret
mov edx, string_font_big endp
@@: mcall 4, <130,PANEL_Y+6>,,,10
ret proc draw_codes
endp
movzx ecx, [symbol_focused]
mcall 47, 0x00030000, , <339,PANEL_Y+6>, 0x41000000, 0xAAAaaa
proc draw_codes mcall , 0x00020100, , <508,PANEL_Y+6>,
movzx ecx, [symbol_focused] ret
mcall 47, 0x00030000, , <339,PANEL_Y+6>, 0x41000000, 0xAAAaaa endp
mcall , 0x00020100, , <508,PANEL_Y+6>,
ret quit:
endp mcall -1
quit: szZ window_title ,'ASCIIVju'
mcall -1 szZ string_000_127 ,'000-127'
szZ string_128_255 ,'128-255'
szZ string_font_small ,'Font1 6x9 '
szZ window_title ,'ASCIIVju' szZ string_font_big ,'Font2 8x14'
szZ string_000_127 ,'000-127' szZ string_ASCII_CODE ,'Code: Hex-Code:'
szZ string_128_255 ,'128-255'
szZ string_font_small ,'Font1 6x9 ' button_x dd 2
szZ string_font_big ,'Font2 8x14' button_y dd 2
szZ string_ASCII_CODE ,'Code: Hex-Code:'
font_type dd FONT_SMALL
button_x dd 2
button_y dd 2 symbol_current db 0
symbol_start db 0
font_type dd FONT_SMALL
symbol_unfocused db 0
symbol_current db 0 symbol_focused db 0
symbol_start db 0 i_end:
proc_info process_information
symbol_unfocused db 0 rb 0x400 ;stack
symbol_focused db 0 e_end:
i_end:
proc_info process_information
rb 0x400 ;stack
e_end:

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

Binary file not shown.

View File

@@ -28,7 +28,7 @@ IMPORT
RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar; RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
CONST CONST
HEADER = "CEdit (30-apr-2025)"; HEADER = "CEdit (27-feb-2025)";
ShellFilter = ""; ShellFilter = "";
EditFilter = "sh|inc|txt|asm|ob07|c|cpp|h|pas|pp|lua|ini|json"; EditFilter = "sh|inc|txt|asm|ob07|c|cpp|h|pas|pp|lua|ini|json";
@@ -1320,7 +1320,7 @@ BEGIN
|menuBoard: |menuBoard:
K.Run("/sys/develop/board", "") K.Run("/sys/develop/board", "")
|menuSysFunc: |menuSysFunc:
K.Run("/sys/docpack", "e") K.Run("/sys/docpack", "f")
|menuLineNumbers: |menuLineNumbers:
T.toggleNumbers; T.toggleNumbers;
Ini.setInt("settings", "line_numbers", ORD(T.lineNumbers)) Ini.setInt("settings", "line_numbers", ORD(T.lineNumbers))

View File

@@ -1,4 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end if tup.getconfig("NO_FASM") ~= "" then return end
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") tup.rule("charsets.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "charsets")
tup.include(HELPERDIR .. "/use_fasm.lua")
tup.rule("charsets.asm", FASM .. " -dlang=" .. tup.getconfig("LANG") .. " %f %o" .. tup.getconfig("KPACK_CMD"), "%B")

View File

@@ -31,19 +31,3 @@ Development history
- Renamed to Charsets Viewer/Charsets - Renamed to Charsets Viewer/Charsets
- Symbol highlight UI tweaks - Symbol highlight UI tweaks
- Fixed rolled up bug - Fixed rolled up bug
30.03.2025 - 0.4.0
- Localization for all system languages
- Display all character scales
- Abolity to copy character codes
- Block on charpage 00 for CP866
- New character code half markers
- Navigation using keys (see hotkeys.txt)
03.04.2025 - 0.4.1
- Fixed bug with codes color subscription
04.04.2025 - 0.4.2
- Fixed bug with resetting UTF charpage to zero on double charset swap to CP866
- Improved charpage blocking for CP866 UX
- Improved char codes copying UI

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
Control hotkeys
- Navigate inside charpage:
- Arrows
- Num2/4/6/8
- Navigation between charpages:
- PgDN, PgUP - previous/next page
- Num0, Home - reset page to zero
- Change symbol scale:
- Num- and Num+

View File

@@ -1,131 +1,125 @@
; SPDX-License-Identifier: NOASSERTION ;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â CheckBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32)
; ;Ž¯â¨¬¨§¨à®¢ ­ ¢ë¢®¤ áâப¨, ­ ¤¯¨á¨ ¤«ï CheckBox'a + ⥯¥àì ¯à¨ ¯à®¢¥àª¥ ­¥ ;¯à®¨á室¨â ¯®¤áç¥â ª®«-¢  ᨬ¢®«®¢ ¢ áâப¥
;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤.
; Text encoded with Code Page 866 - Cyrillic ;21.02.2007 ¬®¤¥à­¨§ æ¨ï ¨ ¯®¤¤¥à¦ª  ¤¢ãå à §­ëå ¢ à¨ ­â®¢ á ¨á¯®«ì§®¢ ­¨¥¬ á¨á 梥⮢ ¨ áâ à®© á奬®©
;19.02.2007 ®¡é¥¥ ã«ãç襭¨¥ ª®¤ , 㬥­ì襭¨¥ à §¬¥à  ¨ ¨á¯®«ì§®¢ ­¨¥ á¨á⥬­ëå æ¢¥â®¢ ¤«ï ®â®¡à ¦¥­¨ï checkbox
;22.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï ª®¬ ­¤, ¯à¨­ïâë ¢® ¢­¨¬ ­¨¥ § ¬¥ç ­¨ï DIAMOND' .
;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â CheckBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32) ;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru
;Ž¯â¨¬¨§¨à®¢ ­ ¢ë¢®¤ áâப¨, ­ ¤¯¨á¨ ¤«ï CheckBox'a + ⥯¥àì ¯à¨ ¯à®¢¥àª¥ ­¥ ;¯à®¨á室¨â ¯®¤áç¥â ª®«-¢  ᨬ¢®«®¢ ¢ áâப¥
;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤. ;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
;21.02.2007 ¬®¤¥à­¨§ æ¨ï ¨ ¯®¤¤¥à¦ª  ¤¢ãå à §­ëå ¢ à¨ ­â®¢ á ¨á¯®«ì§®¢ ­¨¥¬ á¨á 梥⮢ ¨ áâ à®© á奬®© use32 ; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §à來ëå ª®¬ ­¤ë
;19.02.2007 ®¡é¥¥ ã«ãç襭¨¥ ª®¤ , 㬥­ì襭¨¥ à §¬¥à  ¨ ¨á¯®«ì§®¢ ­¨¥ á¨á⥬­ëå æ¢¥â®¢ ¤«ï ®â®¡à ¦¥­¨ï checkbox org 0x0 ; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0
;22.08.2006 ¯à®¨§¢¥¤¥­  ®¯â¨¬¨§ æ¨ï ª®¬ ­¤, ¯à¨­ïâë ¢® ¢­¨¬ ­¨¥ § ¬¥ç ­¨ï DIAMOND' . db 'MENUET01' ; ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â)
;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru dd 0x1 ; ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©« 
dd start ;  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥
;§ £®«®¢®ª ¯à¨«®¦¥­¨ï ; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì
use32 ; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §à來ëå ª®¬ ­¤ë dd i_end ; à §¬¥à ¯à¨«®¦¥­¨ï
org 0x0 ; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0 dd i_end ; Ž¡ê¥¬ ¨á¯®«ì§ã¥¬®© ¯ ¬ïâ¨, ¤«ï á⥪  ®â¢¥¤¥¬ 0å100 ¡ ©â ¨ ¢ë஢­¨¬ ­  £à­¨æã 4 ¡ ©â 
db 'MENUET01' ; ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â) dd i_end ; à á¯®«®¦¨¬ ¯®§¨æ¨î á⥪  ¢ ®¡« á⨠¯ ¬ïâ¨, áà §ã §  ⥫®¬ ¯à®£à ¬¬ë. ‚¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
dd 0x1 ; ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©«  dd 0x0,0x0 ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
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
; ®âªã¤  § ¯ã饭® ¯à¨«®¦¥­¨¥ ;<3B>¥¤®¯ãá⨬® ¢ª«î祭¨¥ ¤¢ãå ¬ ªà®á¢® version_ch1 ¨ version_ch - ®­¨ ¢§ ¬®¨áª«îç îâ ¤àã£- ¤à£ã£ .
;------------------ use_check_box ;¨á¯®«ì§ãï ¬ ªà®áë ¢­¥á⨠¯à®æ¥¤ãàë ¤«ï à¨á®¢ ­¨ï 祪 ¡®ªá 
include '..\..\..\macros.inc' ;Ž¡« áâì ª®¤ 
include 'check.inc' ;¢ª«îç¨âì ä ©« check.inc align 4
; version_ch ;­¥®¡å®¤¨¬ë© ¬ ªà®á ¤«ï ¢ª«î祭¨ï "áâ à®©" ¢¥àᨨ check_box start: ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã
version_ch1 ;­¥®¡å®¤¨¬ë© ¬ ªà®á ¤«ï ¢ª«î祭¨ï new ¢¥àᨨ check_box1 mov eax,48 ;¯®«ãç¨âì á¨á⥬­ë¥ 梥â 
;<3B>¥¤®¯ãá⨬® ¢ª«î祭¨¥ ¤¢ãå ¬ ªà®á¢® version_ch1 ¨ version_ch - ®­¨ ¢§ ¬®¨áª«îç îâ ¤àã£- ¤à£ã£ . mov ebx,3
use_check_box ;¨á¯®«ì§ãï ¬ ªà®áë ¢­¥á⨠¯à®æ¥¤ãàë ¤«ï à¨á®¢ ­¨ï 祪 ¡®ªá  mov ecx,sc
;Ž¡« áâì ª®¤  mov edx,sizeof.system_colors
align 4 mcall
start: ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã
mov eax,48 ;¯®«ãç¨âì á¨á⥬­ë¥ æ¢¥â  mov eax,40 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩
mov ebx,3 mov ebx,0x25 ;á¨á⥬  ¡ã¤¥â ॠ£¨à®¢ âì ⮫쪮 ­  á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥,­ ¦ â  ª­®¯ª , ®¯à¥¤¥«ñ­­ ï à ­¥¥, ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ­ ¦ â¨¥ ­  ª­®¯ªã ¬ëè¨ ¨«¨ ¯¥à¥¬¥é¥­¨¥; á¡à á뢠¥âáï ¯à¨ ¯à®ç⥭¨¨)
mov ecx,sc mcall
mov edx,sizeof.system_colors red_win:
mcall call draw_window ;¯¥à¢®­ ç «ì­® ­¥®¡å®¤¨¬® ­ à¨á®¢ âì ®ª­®
still: ;®á­®¢­®© ®¡à ¡®â稪
mov eax,40 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ mov eax,10 ;ަ¨¤ âì ᮡëâ¨ï
mov ebx,0x25 ;á¨á⥬  ¡ã¤¥â ॠ£¨à®¢ âì ⮫쪮 ­  á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥,­ ¦ â  ª­®¯ª , ®¯à¥¤¥«ñ­­ ï à ­¥¥, ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ­ ¦ â¨¥ ­  ª­®¯ªã ¬ëè¨ ¨«¨ ¯¥à¥¬¥é¥­¨¥; á¡à á뢠¥âáï ¯à¨ ¯à®ç⥭¨¨) mcall ;®¦¨¤ âì ᮡë⨥ ¢ â¥ç¥­¨¥ 2 ¬¨««¨á¥ªã­¤
mcall
red_win: cmp al,0x1 ;¥á«¨ ¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
call draw_window ;¯¥à¢®­ ç «ì­® ­¥®¡å®¤¨¬® ­ à¨á®¢ âì ®ª­® jz red_win
still: ;®á­®¢­®© ®¡à ¡®â稪 cmp al,0x3 ;¥á«¨ ­ ¦ â  ª­®¯ª  â® ¯¥à¥©â¨
mov eax,10 ;ަ¨¤ âì ᮡëâ¨ï jz button
mcall ;®¦¨¤ âì ᮡë⨥ ¢ â¥ç¥­¨¥ 2 ¬¨««¨á¥ªã­¤ mouse_check_boxes check_boxes,check_boxes_end ;¯à®¢¥àª  祪 ¡®ªá 
jmp still ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横«
cmp al,0x1 ;¥á«¨ ¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­  button:
jz red_win or eax,-1 ;¢ eax,-1 - 5 ,¡ ©â®¢ ã ­ á ¦¥ ⮫쪮 3 ¢ë©â¨
cmp al,0x3 ;¥á«¨ ­ ¦ â  ª­®¯ª  â® ¯¥à¥©â¨ mcall ;¤ «¥¥ ¢ë¯®«­ï¥âáï ¢ë室 ¨§ ¯à®£à ¬¬ë
jz button
mouse_check_boxes check_boxes,check_boxes_end ;¯à®¢¥àª  祪 ¡®ªá  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
jmp still ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横« ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
button: draw_window: ;à¨á®¢ ­¨¥ ®ª­  ¯à¨«®¦¥­¨ï
or eax,-1 ;¢ eax,-1 - 5 ,¡ ©â®¢ ã ­ á ¦¥ ⮫쪮 3 ¢ë©â¨ mov eax,12 ;¢ ॣ¨áâà ¢­¥á⨠§­ ç¥­¨¥ = 12
mcall ;¤ «¥¥ ¢ë¯®«­ï¥âáï ¢ë室 ¨§ ¯à®£à ¬¬ë mov ebx,1 ;¯à¨á¢®¨âì 1
mcall
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>> xor eax,eax ;®¡­ã«¨âì eax
draw_window: ;à¨á®¢ ­¨¥ ®ª­  ¯à¨«®¦¥­¨ï mov ebx,50*65536+180 ;[ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
mov eax,12 ;¢ ॣ¨áâà ¢­¥á⨠§­ ç¥­¨¥ = 12 mov ecx,30*65536+100 ;[ª®®à¤¨­ â  ¯® ®á¨ y]*65536 + [à §¬¥à ¯® ®á¨ y]
mov ebx,1 ;¯à¨á¢®¨âì 1 mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
mcall or edx,0xb3000000
mov edi,hed
xor eax,eax ;®¡­ã«¨âì eax mcall ;­ à¨á®¢ âì ®ª­® ¯à¨«®¦¥­¨ï
mov ebx,50*65536+180 ;[ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
mov ecx,30*65536+100 ;[ª®®à¤¨­ â  ¯® ®á¨ y]*65536 + [à §¬¥à ¯® ®á¨ y] draw_check_boxes check_boxes,check_boxes_end ;à¨á®¢ ­¨¥ 祪¡®ªá®¢
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
or edx,0xb3000000 mov eax,12 ;”ã­ªæ¨ï 12 - ­ ç âì/§ ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ .
mov edi,hed mov ebx,2 ;<3B>®¤äã­ªæ¨ï 2 - § ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ .
mcall ;­ à¨á®¢ âì ®ª­® ¯à¨«®¦¥­¨ï mcall
ret
draw_check_boxes check_boxes,check_boxes_end ;à¨á®¢ ­¨¥ 祪¡®ªá®¢ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov eax,12 ;”ã­ªæ¨ï 12 - ­ ç âì/§ ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ . ;DATA ¤ ­­ë¥
mov ebx,2 ;<3B>®¤äã­ªæ¨ï 2 - § ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ . ;”®à¬ â ¤ ­­ëå 祪 ¡®ªá :
mcall ;10 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® å
ret ;30 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® ã
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;0 - 梥⠧ «¨¢ª¨ ¢­ãâਠ祪 ¡®ªá 
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;0xfffffff - 梥â à ¬ª¨ 祪 ¡®ªá  ¥á«¨ ­ã¦­® â ª ¨á¯®«ì§ãîâáï á¨â¥¬­ë¥ 梥â 
;DATA ¤ ­­ë¥ ;0 - 梥â ⥪áâ  ­ ¤¯¨á¨ ¥á«¨ ­ã¦­® â ª ¨á¯®«ì§ãîâáï á¨â¥¬­ë¥ 梥â 
;”®à¬ â ¤ ­­ëå 祪 ¡®ªá : ;ch_text.1 - 㪠§ â¥«ì ­  ­ ç «® áâப¨
;10 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® å ;ch_text.e1-ch_text.1 - ¤«¨­  áâப¨
;30 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® ã ;
;0 - 梥⠧ «¨¢ª¨ ¢­ãâਠ祪 ¡®ªá  align 4
;0xfffffff - 梥â à ¬ª¨ 祪 ¡®ªá  ¥á«¨ ­ã¦­® â ª ¨á¯®«ì§ãîâáï á¨â¥¬­ë¥ æ¢¥â  check_boxes:
;0 - 梥â ⥪áâ  ­ ¤¯¨á¨ ¥á«¨ ­ã¦­® â ª ¨á¯®«ì§ãîâáï á¨â¥¬­ë¥ æ¢¥â  ;ch1 check_box 10,15,0xffffff,0,0,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
;ch_text.1 - 㪠§ â¥«ì ­  ­ ç «® áâப¨ ;ch2 check_box 10,30,0xffffff,0,0,ch_text.2,ch_text.e2-ch_text.2
;ch_text.e1-ch_text.1 - ¤«¨­  áâப¨ ;ch3 check_box 10,45,0xffffff,0,0,ch_text.3,ch_text.e3-ch_text.3
;
align 4 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
check_boxes: ;DATA ¤ ­­ë¥ ¤«ï check_box1 - ¨á¯®«ì§ã¥â á¨á⥬­ë¥ 梥â 
;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 ;10 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® å
;ch3 check_box 10,45,0xffffff,0,0,ch_text.3,ch_text.e3-ch_text.3 ;30 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® ã
;ch_text.1 - 㪠§ â¥«ì ­  ­ ç «® áâப¨
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;ch_text.e1-ch_text.1 - ¤«¨­  áâப¨
;DATA ¤ ­­ë¥ ¤«ï check_box1 - ¨á¯®«ì§ã¥â á¨á⥬­ë¥ 梥â 
;”®à¬ â ¤ ­­ëå 祪 ¡®ªá : ;
;10 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® å ch1 check_box1 10,15,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en
;30 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® ã ch2 check_box1 10,30,ch_text.2,ch_text.e2-ch_text.2
;ch_text.1 - 㪠§ â¥«ì ­  ­ ç «® áâப¨ ch3 check_box1 10,45,ch_text.3,ch_text.e3-ch_text.3
;ch_text.e1-ch_text.1 - ¤«¨­  áâப¨ check_boxes_end:
; ch_text: ;ᮯ஢®¦¤ î騩 ⥪áâ ¤«ï 祪 ¡®ªá®¢
ch1 check_box1 10,15,ch_text.1,ch_text.e1-ch_text.1,ch_flag_en .1 db 'Check_Box #1'
ch2 check_box1 10,30,ch_text.2,ch_text.e2-ch_text.2 .e1:
ch3 check_box1 10,45,ch_text.3,ch_text.e3-ch_text.3 .2 db 'Check_Box #2'
check_boxes_end: .e2:
.3 db 'Check_Box #3'
ch_text: ;ᮯ஢®¦¤ î騩 ⥪áâ ¤«ï 祪 ¡®ªá®¢ .e3:
.1 db 'Check_Box #1'
.e1: hed db 'Checkbox [21.02.2007]',0 ;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
.2 db 'Check_Box #2' align 16
.e2: sc system_colors
.3 db 'Check_Box #3' rb 0x100
.e3: i_end: ;ª®­¥æ ª®¤ 
hed db 'Checkbox [21.02.2007]',0 ;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
align 16
sc system_colors
rb 0x100
i_end: ;ª®­¥æ ª®¤ 

View File

@@ -1,7 +1,3 @@
; SPDX-License-Identifier: NOASSERTION
;
; ;
; SHAPED WINDOW - BASIC EXAMPLE ; SHAPED WINDOW - BASIC EXAMPLE
; ;
@@ -20,7 +16,7 @@ use32
dd E_END ; esp dd E_END ; esp
dd 0, 0 ; no params, no path dd 0, 0 ; no params, no path
include '..\..\..\macros.inc' include '..\..\..\..\macros.inc'

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

View File

@@ -1,128 +1,126 @@
; SPDX-License-Identifier: NOASSERTION ;
; ; CPU SPEED INDICATIOR
;
; ; Compile with FASM
; CPU SPEED INDICATIOR ;
;
; Compile with FASM use32
; org 0x0
use32 db 'MENUET01' ; 8 byte id
org 0x0 dd 0x01 ; header version
dd START ; start of code
db 'MENUET01' ; 8 byte id dd I_END ; size of image
dd 0x01 ; header version dd 0x1000 ; memory for app
dd START ; start of code dd 0x1000 ; esp
dd I_END ; size of image dd 0x0,0x0 ; I_Param , I_Icon
dd 0x1000 ; memory for app
dd 0x1000 ; esp include 'lang.inc'
dd 0x0,0x0 ; I_Param , I_Icon include '..\..\..\..\macros.inc'
include 'lang.inc' START: ; start of execution
include '..\..\..\macros.inc'
mov eax,18
START: ; start of execution mov ebx,5
mcall
mov eax,18
mov ebx,5 xor edx,edx
mcall mov ebx,1000000
div ebx
xor edx,edx mov ebx,10
mov ebx,1000000 mov edi,text+19
div ebx mov ecx,5
mov ebx,10 newnum:
mov edi,text+19 xor edx,edx
mov ecx,5 mov ebx,10
newnum: div ebx
xor edx,edx add dl,48
mov ebx,10 mov [edi],dl
div ebx sub edi,1
add dl,48 loop newnum
mov [edi],dl
sub edi,1 mov eax,48
loop newnum mov ebx,3
mov ecx,sc
mov eax,48 mov edx,sizeof.system_colors
mov ebx,3 mcall
mov ecx,sc
mov edx,sizeof.system_colors red:
mcall call draw_window ; at first, draw the window
red: still:
call draw_window ; at first, draw the window
mov eax,10 ; wait here for event
still: mcall
mov eax,10 ; wait here for event cmp eax,1 ; redraw request ?
mcall jz red
cmp eax,2 ; key in buffer ?
cmp eax,1 ; redraw request ? jz key
jz red cmp eax,3 ; button in buffer ?
cmp eax,2 ; key in buffer ? jz button
jz key
cmp eax,3 ; button in buffer ? jmp still
jz button
key: ; key
jmp still mov eax,2 ; just read it and ignore
mcall
key: ; key jmp still
mov eax,2 ; just read it and ignore
mcall button: ; button
jmp still mov eax,17 ; get id
mcall
button: ; button
mov eax,17 ; get id cmp ah,1 ; button id=1 ?
mcall jnz still
or eax,-1 ; close this program
cmp ah,1 ; button id=1 ? mcall
jnz still
or eax,-1 ; close this program
mcall ; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; ********************************************* draw_window:
mov eax,12 ; function 12:tell os about windowdraw
draw_window: mov ebx,1 ; 1, start of draw
mcall
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1 ; 1, start of draw ; DRAW WINDOW
mcall mov eax,0 ; function 0 : define and draw window
mov ebx,100*65536+200 ; [x start] *65536 + [x size]
; DRAW WINDOW mov ecx,100*65536+65 ; [y start] *65536 + [y size]
mov eax,0 ; function 0 : define and draw window mov edx,[sc.work] ; color of work area RRGGBB,8->color glide
mov ebx,100*65536+200 ; [x start] *65536 + [x size] or edx,0x33000000 ; color of grab bar RRGGBB,8->color
mov ecx,100*65536+65 ; [y start] *65536 + [y size] mov edi,title ; WINDOW LABEL
mov edx,[sc.work] ; color of work area RRGGBB,8->color glide mcall
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 ebx,20*65536+14 ; draw info text with function 4 mov esi,24
mov ecx,[sc.work_text] mov eax,4
mov edx,text mcall
mov esi,24
mov eax,4 mov eax,12 ; function 12:tell os about windowdraw
mcall mov ebx,2 ; 2, end of draw
mcall
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw ret
mcall
ret ; DATA AREA
; DATA AREA text:
db 'CPU RUNNING AT MHZ'
text: title db 'CPU SPEED',0
db 'CPU RUNNING AT MHZ'
I_END:
title db 'CPU SPEED',0
sc system_colors
I_END:
sc system_colors

View File

@@ -1,74 +1,68 @@
; SPDX-License-Identifier: NOASSERTION ;<EFBFBD> á¯à®áâà ­ï¥âáï ¯® «¨æ¥­§¨¨ GPL SEE YOU File FAQ.txt and HISTORY. Good Like!
; ;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â EditBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32)
;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤.
; Text encoded with Code Page 866 - Cyrillic ;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru
;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
include '..\..\..\..\macros.inc'
;<3B> á¯à®áâà ­ï¥âáï ¯® «¨æ¥­§¨¨ GPL SEE YOU File FAQ.txt and HISTORY. Good Like! include 'editbox.inc'
;Ž¯â¨¬¨§¨à®¢ ­­ë© ª®¬¯®­¥­â EditBox (ˆá室­ë© ¢ à¨ ­â ®â Maxxxx32) KOS_APP_START
;Ž¯â¨¬¨§ æ¨ï ª®¬ ­¤. align 4
;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru use_edit_box
;§ £®«®¢®ª ¯à¨«®¦¥­¨ï ;Ž¡« áâì ª®¤ 
include '..\..\..\macros.inc' code ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã
include 'editbox.inc' mcall 40,0x27 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩
KOS_APP_START ;á¨á⥬  ¡ã¤¥â ॠ£¨à®¢ âì ⮫쪮 ­  á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥,­ ¦ â  ª­®¯ª , ®¯à¥¤¥«ñ­­ ï à ­¥¥, ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ­ ¦ â¨¥ ­  ª­®¯ªã ¬ëè¨ ¨«¨ ¯¥à¥¬¥é¥­¨¥; á¡à á뢠¥âáï ¯à¨ ¯à®ç⥭¨¨) ¨ ­ ¦ â¨¥ ª« ¢¨è¨
align 4 red_win:
use_edit_box call draw_window ;¯¥à¢®­ ç «ì­® ­¥®¡å®¤¨¬® ­ à¨á®¢ âì ®ª­®
;Ž¡« áâì ª®¤  align 4
code ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã still: ;®á­®¢­®© ®¡à ¡®â稪
mcall 40,0x27 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ mcall 10 ;ަ¨¤ âì ᮡëâ¨ï
;á¨á⥬  ¡ã¤¥â ॠ£¨à®¢ âì ⮫쪮 ­  á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥,­ ¦ â  ª­®¯ª , ®¯à¥¤¥«ñ­­ ï à ­¥¥, ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ­ ¦ â¨¥ ­  ª­®¯ªã ¬ëè¨ ¨«¨ ¯¥à¥¬¥é¥­¨¥; á¡à á뢠¥âáï ¯à¨ ¯à®ç⥭¨¨) ¨ ­ ¦ â¨¥ ª« ¢¨è¨ dec eax
red_win: jz red_win
call draw_window ;¯¥à¢®­ ç «ì­® ­¥®¡å®¤¨¬® ­ à¨á®¢ âì ®ª­® dec eax
align 4 jz key
still: ;®á­®¢­®© ®¡à ¡®â稪 dec eax
mcall 10 ;ަ¨¤ âì ᮡëâ¨ï jz button
dec eax mouse_edit_boxes editboxes,editboxes_end
jz red_win jmp still ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横«
dec eax ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
jz key button:
dec eax mcall 17 ;¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª« ¢¨è¨
jz button test ah,ah ;¥á«¨ ¢ ah 0, â® ¯¥à¥©â¨ ­  ®¡à ¡®â稪 ᮡë⨩ still
mouse_edit_boxes editboxes,editboxes_end jz still
jmp still ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横« mcall -1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; key:
button: mcall 2 ;§ £à㧨¬ §­ ç¥­¨¥ 2 ¢ ॣ¨áâ®à eax ¨ ¯®«ã稬 ª®¤ ­ ¦ â®© ª« ¢¨è¨
mcall 17 ;¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª« ¢¨è¨ key_edit_boxes editboxes,editboxes_end
test ah,ah ;¥á«¨ ¢ ah 0, â® ¯¥à¥©â¨ ­  ®¡à ¡®â稪 ᮡë⨩ still jmp still
jz still
mcall -1 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
key: align 4
mcall 2 ;§ £à㧨¬ §­ ç¥­¨¥ 2 ¢ ॣ¨áâ®à eax ¨ ¯®«ã稬 ª®¤ ­ ¦ â®© ª« ¢¨è¨ draw_window: ;à¨á®¢ ­¨¥ ®ª­  ¯à¨«®¦¥­¨ï
key_edit_boxes editboxes,editboxes_end mcall 12,1
jmp still mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed
draw_edit_boxes editboxes,editboxes_end ;à¨á®¢ ­¨¥ edit box'®¢
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mcall 12,2
align 4 ret
draw_window: ;à¨á®¢ ­¨¥ ®ª­  ¯à¨«®¦¥­¨ï ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mcall 12,1 ;DATA ¤ ­­ë¥
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed editboxes:
draw_edit_boxes editboxes,editboxes_end ;à¨á®¢ ­¨¥ edit box'®¢ edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only
mcall 12,2 edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53
ret 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
;DATA ¤ ­­ë¥ editboxes_end:
editboxes: data_of_code dd 0
edit1 edit_box 168,5,10,0xffffff,0x6a9480,0,0,0,99,ed_buffer.2,ed_figure_only mouse_flag dd 0x0
edit2 edit_box 250,5,30,0xffffff,0x6a9480,0,0xAABBCC,0,308,hed,ed_focus,53,53 hed db 'EDITBOX optimization and retype <Lrz> date 23.07.2008',0
edit3 edit_box 35,5,50,0xffffff,0x6a9480,0,0,0,9,ed_buffer.3,ed_figure_only rb 256
edit4 edit_box 16,5,70,0xffffff,0x6a9480,0,0,0,1,ed_buffer.4,ed_figure_only ed_buffer:
editboxes_end: ;.1: rb 514;256
data_of_code dd 0 .2: rb 101
mouse_flag dd 0x0 .3: rb 11
hed db 'EDITBOX optimization and retype <Lrz> date 23.07.2008',0 .4: rb 3
rb 256 ;¤¢  § ¯ á­ëå ¡ ©â  ­¥®¡å®¤¨¬ë ¤«ï ⮣® çâ® ¡ë ­¥ ¯¥¯¥à¥¯¨á âì á«¥¤ãî騥© ¡ ©âë, ¢ ª®­æ¥ ¡ãä¥à  0
ed_buffer: buffer_end:
;.1: rb 514;256 align 16
.2: rb 101 KOS_APP_END
.3: rb 11 udata
.4: rb 3
;¤¢  § ¯ á­ëå ¡ ©â  ­¥®¡å®¤¨¬ë ¤«ï ⮣® çâ® ¡ë ­¥ ¯¥¯¥à¥¯¨á âì á«¥¤ãî騥© ¡ ©âë, ¢ ª®­æ¥ ¡ãä¥à  0
buffer_end:
align 16
KOS_APP_END
udata

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

View File

@@ -1,7 +1,3 @@
; SPDX-License-Identifier: NOASSERTION
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; MENU / DIALOG EXAMPLE ; MENU / DIALOG EXAMPLE
@@ -22,7 +18,7 @@ use32
dd 0x0 , 0x0 ; I_Param , I_Icon dd 0x0 , 0x0 ; I_Param , I_Icon
include 'lang.inc' include 'lang.inc'
include '..\..\..\macros.inc' include '..\..\..\..\macros.inc'
include 'dialogs1.inc' include 'dialogs1.inc'
menu_history dd 0x0 menu_history dd 0x0

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

View File

@@ -1,8 +1,3 @@
; SPDX-License-Identifier: NOASSERTION
;
; Text encoded with Code Page 866 - Cyrillic
; ;
; MENU EXAMPLE ; MENU EXAMPLE
; ;
@@ -18,11 +13,11 @@
dd mem, stacktop, file_name, sys_path dd mem, stacktop, file_name, sys_path
include 'lang.inc' include 'lang.inc'
include '../../../macros.inc' include '../../../../macros.inc'
include '../../../proc32.inc' include '../../../../proc32.inc'
include '../../../KOSfuncs.inc' include '../../../../KOSfuncs.inc'
include '../../../load_lib.mac' include '../../../../load_lib.mac'
include '../../../dll.inc' include '../../../../dll.inc'
KMENUITEM_NORMAL equ 0 KMENUITEM_NORMAL equ 0
KMENUITEM_SUBMENU equ 1 KMENUITEM_SUBMENU equ 1
@@ -99,7 +94,7 @@ start: ; start of execution
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_Help, [main_menu_Help] stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_Help, [main_menu_Help]
stdcall [ksubmenu_add], [main_menu], eax stdcall [ksubmenu_add], [main_menu], eax
red: red:
call draw_window ; draw window call draw_window ; draw window
stdcall [kmainmenu_draw], [main_menu] stdcall [kmainmenu_draw], [main_menu]
@@ -113,7 +108,7 @@ still:
cmp eax,3 cmp eax,3
jz button jz button
cmp eax,6 cmp eax,6
jne @f jne @f
call mouse call mouse
jmp still jmp still
@@: @@:

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

View File

@@ -1,7 +1,4 @@
; SPDX-License-Identifier: NOASSERTION include "..\..\..\..\macros.inc"
;
include "..\..\..\macros.inc"
initipc: initipc:
mov eax,9 mov eax,9
@@ -221,3 +218,4 @@ stripc: times 84 db 0
fill_symbol db 0 fill_symbol db 0
prc: times 52 db 0 prc: times 52 db 0

View File

@@ -1,9 +1,3 @@
; SPDX-License-Identifier: NOASSERTION
;
; Text encoded with Code Page 866 - Cyrillic
; Hello, World! - Programm example for CMD shell ; Hello, World! - Programm example for CMD shell
; Compile with FASM ; Compile with FASM
; ;

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

View File

@@ -1,415 +1,412 @@
; SPDX-License-Identifier: NOASSERTION ;
; ; Example for Inter Process Communication
;
; ; Compile with FASM
; Example for Inter Process Communication ;
; include 'lang.inc'
; Compile with FASM include '..\..\..\..\macros.inc'
;
include 'lang.inc' use32
include '..\..\..\macros.inc' org 0x0
use32 db 'MENUET01' ; 8 byte id
org 0x0 dd 0x01 ; header version
dd START ; start of code
db 'MENUET01' ; 8 byte id dd I_END ; size of image
dd 0x01 ; header version dd 0x60000 ; memory for app
dd START ; start of code dd 0x60000 ; esp
dd I_END ; size of image dd 0x0 , 0x0 ; I_Param , I_Icon
dd 0x60000 ; memory for app
dd 0x60000 ; esp START: ; start of execution
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 eax,60 ; IPC mov edx,1000 ; size of area
mov ebx,1 ; define receive area mcall
mov ecx,received_messages ; pointer to start
mov edx,1000 ; size of area mov eax,40 ; WANTED EVENTS
mcall mov ebx,01000111b ; IPC 7 + defaults
mcall
mov eax,40 ; WANTED EVENTS
mov ebx,01000111b ; IPC 7 + defaults mov [received_messages+8],dword 0*256+0
mcall mov [received_messages+12],dword 0
mov [received_messages+8],dword 0*256+0 red:
mov [received_messages+12],dword 0 call draw_window ; at first, draw the window
red: still:
call draw_window ; at first, draw the window
mov eax,23 ; wait here for event
still: mov ebx,50
mcall
mov eax,23 ; wait here for event
mov ebx,50 cmp eax,1 ; redraw request ?
mcall je red
cmp eax,2 ; key in buffer ?
cmp eax,1 ; redraw request ? je key
je red cmp eax,3 ; button in buffer ?
cmp eax,2 ; key in buffer ? je button
je key
cmp eax,3 ; button in buffer ? cmp eax,7 ; IPC ?
je button jne no_ipc
call display_ipc_messages
cmp eax,7 ; IPC ? jmp still
jne no_ipc no_ipc:
call display_ipc_messages
jmp still jmp still
no_ipc:
key: ; key
jmp still mov eax,2 ; just read it and ignore
mcall
key: ; key jmp still
mov eax,2 ; just read it and ignore
mcall button: ; button
jmp still mov eax,17 ; get id
mcall
button: ; button
mov eax,17 ; get id cmp ah,1 ; button id=1 ?
mcall jne noclose
mov eax,-1 ; close this program
cmp ah,1 ; button id=1 ? mcall
jne noclose noclose:
mov eax,-1 ; close this program
mcall cmp ah,2
noclose: jne no_read
call read_string
cmp ah,2
jne no_read movzx eax,byte [message]
call read_string sub eax,48
imul eax,10
movzx eax,byte [message] movzx ebx,byte [message+1]
sub eax,48 add eax,ebx
imul eax,10 sub eax,48
movzx ebx,byte [message+1] imul eax,10
add eax,ebx movzx ebx,byte [message+2]
sub eax,48 add eax,ebx
imul eax,10 sub eax,48
movzx ebx,byte [message+2] imul eax,10
add eax,ebx movzx ebx,byte [message+3]
sub eax,48 add eax,ebx
imul eax,10 sub eax,48
movzx ebx,byte [message+3]
add eax,ebx mov [PID],eax
sub eax,48
mov eax,60 ; IPC
mov [PID],eax mov ebx,2 ; send message
mov ecx,[PID]
mov eax,60 ; IPC mov edx,message+4
mov ebx,2 ; send message mov esi,20;[message_size]
mov ecx,[PID] mcall
mov edx,message+4
mov esi,20;[message_size] jmp still
mcall no_read:
jmp still
no_read: cmp ah,3
jne no_messages_pop ; pop the first out
call ipc_message_pop
cmp ah,3 jmp still
jne no_messages_pop ; pop the first out no_messages_pop:
call ipc_message_pop
jmp still jmp still
no_messages_pop:
jmp still ipc_message_pop:
pusha
ipc_message_pop:
cmp [received_messages+4],dword 8
pusha je already_empty
cmp [received_messages+4],dword 8 mov [received_messages],byte 1 ; lock the area
je already_empty
push dword [received_messages+4]
mov [received_messages],byte 1 ; lock the area
mov ecx,[received_messages+12]
push dword [received_messages+4]
sub [received_messages+4],ecx
mov ecx,[received_messages+12] sub [received_messages+4],dword 8
sub [received_messages+4],ecx mov edi,received_messages+8
sub [received_messages+4],dword 8 mov esi,edi
add esi,ecx
mov edi,received_messages+8 add esi,8
mov esi,edi
add esi,ecx pop ecx
add esi,8
cld
pop ecx rep movsb
cld call display_ipc_messages
rep movsb
mov [received_messages],byte 0 ; free the area
call display_ipc_messages
already_empty:
mov [received_messages],byte 0 ; free the area
popa
already_empty: ret
popa
ret
display_ipc_messages:
pusha
display_ipc_messages:
mov eax,13
pusha mov ebx,25*65536+245
mov ecx,105*65536+90
mov eax,13 mov edx,0xdddddd
mov ebx,25*65536+245 mcall
mov ecx,105*65536+90
mov edx,0xdddddd cmp [received_messages+4],dword 8 ; empty list
mcall je ipma1
cmp [received_messages+4],dword 8 ; empty list mov ebx,25*65536+105 ; draw info text with function 4
je ipma1 mov ecx,0x224466
mov edx,received_messages+8
mov ebx,25*65536+105 ; draw info text with function 4 mov esi,40
mov ecx,0x224466 mov [counter],0
mov edx,received_messages+8 newline2:
mov esi,40 pusha
mov [counter],0 mov ecx,[edx]
newline2: and ecx,0xfff
pusha mov edx,ebx
mov ecx,[edx] mov eax,47
and ecx,0xfff mov ebx,4*65536
mov edx,ebx mov esi,0xff0000
mov eax,47 mcall
mov ebx,4*65536 popa
mov esi,0xff0000 pusha
mcall mov esi,20
popa add edx,8
pusha add ebx,30*65536
mov esi,20 mov eax,4
add edx,8 mcall
add ebx,30*65536 popa
mov eax,4
mcall add ebx,10
popa mov edi,[edx+4]
add edi,8
add ebx,10 and edi,0xfff
mov edi,[edx+4] add edx,edi
add edi,8
and edi,0xfff mov edi,[received_messages+4]
add edx,edi add edi,received_messages
cmp edx,edi
mov edi,[received_messages+4] jge ipma1
add edi,received_messages
cmp edx,edi inc [counter]
jge ipma1 cmp [counter],8
jbe newline2
inc [counter]
cmp [counter],8 ipma1:
jbe newline2
popa
ipma1: ret
popa
ret counter dd 0x0
counter dd 0x0 ; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; ********************************************* draw_window:
mov eax,12 ; function 12:tell os about windowdraw
draw_window: mov ebx,1 ; 1, start of draw
mcall
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1 ; 1, start of draw ; DRAW WINDOW
mcall mov eax,0 ; function 0 : define and draw window
mov ebx,100*65536+290 ; [x start] *65536 + [x size]
; DRAW WINDOW mov ecx,100*65536+220 ; [y start] *65536 + [y size]
mov eax,0 ; function 0 : define and draw window mov edx,0x14ffffff ; color of work area RRGGBB,8->color gl
mov ebx,100*65536+290 ; [x start] *65536 + [x size] mov edi,title ; WINDOW LABEL
mov ecx,100*65536+220 ; [y start] *65536 + [y size] mcall
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
mov eax,9 mcall
mov ebx,process_info
mov ecx,-1 mov eax,47
mcall mov ebx,4*65536
mov ecx,[process_info+30]
mov eax,47 mov edx,180*65536+35
mov ebx,4*65536 mov esi,0x000000
mov ecx,[process_info+30] mcall
mov edx,180*65536+35
mov esi,0x000000 mov eax,8 ; MESSAGE
mcall mov ebx,25*65536+87
mov ecx,50*65536+16
mov eax,8 ; MESSAGE mov edx,2
mov ebx,25*65536+87 mov esi,0x5588dd
mov ecx,50*65536+16 mcall
mov edx,2
mov esi,0x5588dd ;mov eax,8 ; POP
mcall mov ebx,216*65536+53
mov ecx,80*65536+16
;mov eax,8 ; POP mov edx,3
mov ebx,216*65536+53 mcall
mov ecx,80*65536+16
mov edx,3 mov eax,4
mcall mov ebx,25*65536+35 ; draw info text with function 4
mov ecx,0x224466
mov eax,4 mov edx,text
mov ebx,25*65536+35 ; draw info text with function 4 mov esi,40
mov ecx,0x224466 newline:
mov edx,text mcall
mov esi,40 add ebx,10
newline: add edx,40
mcall cmp [edx],byte 'x'
add ebx,10 jne newline
add edx,40
cmp [edx],byte 'x' call display_ipc_messages
jne newline
mov eax,12 ; function 12:tell os about windowdraw
call display_ipc_messages mov ebx,2 ; 2, end of draw
mcall
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw ret
mcall
ret
read_string:
pusha
read_string:
mov [addr],dword message
pusha mov [ya],55
mov [xa],120
mov [addr],dword message
mov [ya],55 mov ecx,20
mov [xa],120 mov edi,[addr]
mov al,' '
mov ecx,20 cld
mov edi,[addr] rep stosb
mov al,' '
cld call print_text
rep stosb
mov edi,[addr]
call print_text
f11:
mov edi,[addr] mov eax,10
mcall
f11: cmp eax,2
mov eax,10 jz fbu
mcall
cmp eax,2 exit_readkey:
jz fbu
popa
exit_readkey: ret
popa fbu:
ret mov eax,2
mcall ; get key
fbu: shr eax,8
mov eax,2
mcall ; get key cmp eax,13
shr eax,8 je exit_readkey
cmp eax,13 cmp eax,8
je exit_readkey jnz nobs
cmp edi,[addr]
cmp eax,8 jz f11
jnz nobs dec edi
cmp edi,[addr] mov [edi],byte ' '
jz f11 call print_text
dec edi jmp f11
mov [edi],byte ' ' nobs:
call print_text
jmp f11 cmp eax,31
nobs: jbe f11
cmp eax,95
cmp eax,31 jb keyok
jbe f11 sub eax,32
cmp eax,95 keyok:
jb keyok mov [edi],al
sub eax,32
keyok: call print_text
mov [edi],al
inc edi
call print_text mov esi,[addr]
add esi,20
inc edi cmp esi,edi
mov esi,[addr] jnz f11
add esi,20
cmp esi,edi popa
jnz f11 ret
popa
ret
print_text:
mov eax,13
print_text: mov ebx,[xa]
shl ebx,16
mov eax,13 add ebx,25*6
mov ebx,[xa] mov ecx,[ya]
shl ebx,16 shl ecx,16
add ebx,25*6 mov cx,8
mov ecx,[ya] mov edx,0xffffff
shl ecx,16 mcall
mov cx,8
mov edx,0xffffff mov eax,4
mcall mov ebx,[xa]
shl ebx,16
mov eax,4 add ebx,[ya]
mov ebx,[xa] mov ecx,0x000000
shl ebx,16 mov edx,[addr]
add ebx,[ya] mov esi,25
mov ecx,0x000000 mcall
mov edx,[addr]
mov esi,25 ret
mcall
ret
; DATA AREA
ya dd 0x0
; DATA AREA xa dd 0x0
addr dd 0x0
ya dd 0x0
xa dd 0x0 text:
addr dd 0x0 db 'PROCESS ID FOR THIS APP : '
db ' '
text: db ' PID:MESSAGE 0130 EXAMPLE MESSAGE '
db 'PROCESS ID FOR THIS APP : ' db ' '
db ' ' db ' '
db ' PID:MESSAGE 0130 EXAMPLE MESSAGE ' db 'RECEIVED: POP '
db ' ' db 'x' ; <- END MARKER, DO NOT DELETE
db ' '
db 'RECEIVED: POP '
db 'x' ; <- END MARKER, DO NOT DELETE title db 'IPC - START AT LEAST 2',0
I_END:
title db 'IPC - START AT LEAST 2',0
PID: dd 0x0
I_END: message_size: dd 20
PID: dd 0x0 received_messages:
message_size: dd 20
db 0 ; lock byte
received_messages: db 0,0,0 ; reserved
dd 8 ; pointer to free msg position from received_messages
db 0 ; lock byte
db 0,0,0 ; reserved ; Sender PID
dd 8 ; pointer to free msg position from received_messages ; Msg length
; Msg data
; Sender PID
; Msg length rb 0x1000
; Msg data message: times 70 db ?
process_info: times 256 dd ?
rb 0x1000
message: times 70 db ?
process_info: times 256 dd ?

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

View File

@@ -1,271 +1,268 @@
; SPDX-License-Identifier: NOASSERTION ;
; ; INFRARED
;
; ; Compile with FASM
; INFRARED ;
;
; Compile with FASM use32
;
org 0x0
use32
db 'MENUET01' ; 8 byte id
org 0x0 dd 1 ; required os
dd START ; program start
db 'MENUET01' ; 8 byte id dd I_END ; program image size
dd 1 ; required os dd 0x1000 ; required amount of memory
dd START ; program start dd 0x1000 ; esp = 0x7FFF0
dd I_END ; program image size dd 0, 0
dd 0x1000 ; required amount of memory
dd 0x1000 ; esp = 0x7FFF0
dd 0, 0 include '..\..\..\..\macros.inc'
START: ; start of execution
include '..\..\..\macros.inc'
set_variables:
START: ; start of execution
mov eax,46 ; reserve ports 0x3f0 - 0x3ff
set_variables: mov ebx,0
mov ecx,0x3f0
mov eax,46 ; reserve ports 0x3f0 - 0x3ff mov edx,0x3ff
mov ebx,0 mcall
mov ecx,0x3f0
mov edx,0x3ff mov eax,45 ; reserve irq 4
mcall mov ebx,0
mov ecx,4
mov eax,45 ; reserve irq 4 mcall
mov ebx,0
mov ecx,4 mov eax,44 ; set read ports for irq 4
mcall mov ebx,irqtable
; mov ecx,4
mov eax,44 ; set read ports for irq 4 mcall
mov ebx,irqtable
; mov ecx,4 mov dh, 3 ; all ports have number 3xx hex
mcall
mov dl, 0xf3+8
mov dh, 3 ; all ports have number 3xx hex mov al, 0x80
out dx, al
mov dl, 0xf3+8
mov al, 0x80 mov dl, 0xf1+8
out dx, al mov al, 0
out dx, al
mov dl, 0xf1+8
mov al, 0 mov dl, 0xf0+8
out dx, al mov al, 0x30 / 4
out dx, al
mov dl, 0xf0+8
mov al, 0x30 / 4 mov dl, 0xf3+8
out dx, al mov al, 3
out dx, al
mov dl, 0xf3+8
mov al, 3 mov dl, 0xf4+8
out dx, al mov al, 0xB
out dx, al
mov dl, 0xf4+8
mov al, 0xB mov dl, 0xf1+8
out dx, al mov al, 1
out dx, al
mov dl, 0xf1+8
mov al, 1 mov eax,5
out dx, al mov ebx,100
mcall
mov eax,5
mov ebx,100 mov dl, 0xf8
mcall mov al, 'I'
out dx, al
mov dl, 0xf8
mov al, 'I' mov eax,5
out dx, al mov ebx,10
mcall
mov eax,5
mov ebx,10 mov al, 'R'
mcall out dx, al
mov al, 'R' mov eax,40 ; get com 1 data with irq 4
out dx, al mov ebx,0000000000010000b shl 16 + 101b
mcall
mov eax,40 ; get com 1 data with irq 4
mov ebx,0000000000010000b shl 16 + 101b red:
mcall call draw_window
red: still:
call draw_window
mov eax,10 ; wait here for event
still: mcall
dec eax
mov eax,10 ; wait here for event jz red
mcall dec eax
dec eax dec eax
jz red jnz readir
dec eax
dec eax button: ; button
jnz readir mov al,17 ; get id
mcall
button: ; button
mov al,17 ; get id ; we have only one button, close
mcall
mov eax,45 ; free irq
; we have only one button, close mov ebx,1
mov ecx,4
mov eax,45 ; free irq mcall
mov ebx,1
mov ecx,4 mov eax,46 ; free ports 0x3f0-0x3ff
mcall mov ebx,1
mov ecx,0x3f0
mov eax,46 ; free ports 0x3f0-0x3ff mov edx,0x3ff
mov ebx,1 mcall
mov ecx,0x3f0
mov edx,0x3ff or eax,-1 ; close this program
mcall mcall
or eax,-1 ; close this program pos dd 0x0
mcall
cdplayer:
pos dd 0x0 dd 7
dd 0
cdplayer: dd 0
dd 7 dd 0
dd 0 dd 0
dd 0 db '/sys/CDP',0
dd 0
dd 0 readir:
db '/sys/CDP',0 mov eax,42
mov ebx,4
readir: mcall
mov eax,42
mov ebx,4 cmp ebx,80
mcall jne nocd
cmp ebx,80 mov eax,70
jne nocd mov ebx,cdplayer
mcall
mov eax,70
mov ebx,cdplayer
mcall nocd:
push ebx
nocd: mov eax,[pos]
add eax,1
push ebx cmp eax,10*20+1
mov eax,[pos] jb noeaxz
add eax,1 mov esi,text+10*4
cmp eax,10*20+1 mov edi,text
jb noeaxz mov ecx,10*21*4
mov esi,text+10*4 cld
mov edi,text rep movsb
mov ecx,10*21*4 mov eax,13
cld mov ebx,20*65536+260
rep movsb mov ecx,22*65536+220
mov eax,13 mov edx,[wcolor]
mov ebx,20*65536+260 mcall
mov ecx,22*65536+220 mov eax,10*19+1
mov edx,[wcolor] noeaxz:
mcall mov [pos],eax
mov eax,10*19+1 pop ebx
noeaxz: and ebx,0xff
mov [pos],eax call draw_data
pop ebx jmp still
and ebx,0xff
call draw_data
jmp still
draw_data:
pusha
draw_data:
xchg eax,ebx
pusha
mov ecx,10
xchg eax,ebx shl ebx,2
mov esi,3
mov ecx,10 newnum:
shl ebx,2 xor edx,edx
mov esi,3 div ecx
newnum: add edx,48
xor edx,edx mov [ebx+text-1],dl
div ecx dec ebx
add edx,48 dec esi
mov [ebx+text-1],dl jnz newnum
dec ebx
dec esi call draw_text
jnz newnum
popa
call draw_text
ret
popa
ret irqtable:
dd 0x3f8+0x01000000 ; + 01 = read byte, 02 read word
irqtable: dd 0
dd 0x3f8+0x01000000 ; + 01 = read byte, 02 read word
dd 0
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; ********************************************* draw_window:
mov eax,12 ; function 12:tell os about windowdraw
draw_window: mov ebx,1 ; 1, start of draw
mcall
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1 ; 1, start of draw ; DRAW WINDOW
mcall mov eax,0 ; function 0 : define and draw window
mov ebx,100*65536+300 ; [x start] *65536 + [x size]
; DRAW WINDOW mov ecx,100*65536+250 ; [y start] *65536 + [y size]
mov eax,0 ; function 0 : define and draw window mov edx,[wcolor] ; color of work area RRGGBB,8->color
mov ebx,100*65536+300 ; [x start] *65536 + [x size] mov edi,labelt ; caption string
mov ecx,100*65536+250 ; [y start] *65536 + [y size] mcall
mov edx,[wcolor] ; color of work area RRGGBB,8->color
mov edi,labelt ; caption string ; ; WINDOW LABEL
mcall ; mov eax,4 ; function 4 : write text to window
; mov ebx,8*65536+8 ; [x start] *65536 + [y start]
; ; WINDOW LABEL ; mov ecx,0x00ffffff ; color of text RRGGBB
; mov eax,4 ; function 4 : write text to window ; mov edx,labelt ; pointer to text beginning
; mov ebx,8*65536+8 ; [x start] *65536 + [y start] ; mov esi,labellen-labelt ; text length
; mov ecx,0x00ffffff ; color of text RRGGBB ; mcall
; mov edx,labelt ; pointer to text beginning
; mov esi,labellen-labelt ; text length ; CLOSE BUTTON
; mcall ; mov eax,8 ; function 8 : define and draw button
; mov ebx,(300-19)*65536+12 ; [x start] *65536 + [x size]
; CLOSE BUTTON ; mov ecx,5*65536+12 ; [y start] *65536 + [y size]
; mov eax,8 ; function 8 : define and draw button ; mov edx,1 ; button id
; mov ebx,(300-19)*65536+12 ; [x start] *65536 + [x size] ; mov esi,0x5599cc ; button color RRGGBB
; mov ecx,5*65536+12 ; [y start] *65536 + [y size] ; mcall
; mov edx,1 ; button id
; mov esi,0x5599cc ; button color RRGGBB draw_text:
; mcall
mov ebx,25*65536+35 ; draw info text with function 4
draw_text: mov ecx,0xffffff
mov edx,text
mov ebx,25*65536+35 ; draw info text with function 4 mov esi,40
mov ecx,0xffffff mov edi,20
mov edx,text newline:
mov esi,40 mov eax,4
mov edi,20 mcall
newline: add ebx,10
mov eax,4 add edx,esi
mcall dec edi
add ebx,10 jne newline
add edx,esi
dec edi mov eax,12
jne newline mov ebx,2
mcall
mov eax,12
mov ebx,2 ret
mcall
ret ; DATA AREA
wcolor dd 0x13000000
; DATA AREA
labelt db 'INFRARED RECEIVER FOR IRMAN IN COM 1',0
wcolor dd 0x13000000
text:
labelt db 'INFRARED RECEIVER FOR IRMAN IN COM 1',0
I_END:
text:
I_END:

View File

@@ -1,56 +1,50 @@
; SPDX-License-Identifier: NOASSERTION include '..\..\..\..\macros.inc'
; use32
db 'MENUET01'
; Text encoded with Code Page Windows 1251 - Cyrillic dd 1
dd start
dd i_end
include '..\..\..\macros.inc' dd mem
use32 dd mem
db 'MENUET01' dd 0
dd 1 dd 0
dd start
dd i_end start:
dd mem push 66
dd mem pop eax
dd 0 push 4
dd 0 pop ebx
mov cl, 45h ; NumLock scancode
start: xor edx, edx
push 66 mcall
pop eax mov al, 40 ; старшие биты уже обнулены
push 4 mov bl, 2 ; старшие биты уже обнулены
pop ebx mcall
mov cl, 45h ; NumLock scancode event:
xor edx, edx push 10
mcall pop eax
mov al, 40 ; ñòàðøèå áèòû óæå îáíóëåíû mcall
mov bl, 2 ; ñòàðøèå áèòû óæå îáíóëåíû ; у нас может быть только одно событие - нажата клавиша
mcall mov al, 2
event: mcall
push 10 cmp al, 2
pop eax jnz event
mcall ; у нас есть только одна горячая клавиша
; ó íàñ ìîæåò áûòü òîëüêî îäíî ñîáûòèå - íàæàòà êëàâèøà push 70
mov al, 2 pop eax
mcall mov ebx, fileinfo
cmp al, 2 mcall
jnz event jmp event
; ó íàñ åñòü òîëüêî îäíà ãîðÿ÷àÿ êëàâèøà
push 70 fileinfo:
pop eax dd 7
mov ebx, fileinfo dd 0
mcall dd 0
jmp event dd 0
dd 0
fileinfo: db '/sys/calc',0
dd 7
dd 0 i_end:
dd 0 align 16
dd 0 rb 16
dd 0 mem:
db '/sys/calc',0
i_end:
align 16
rb 16
mem:

View File

@@ -1,135 +1,130 @@
; SPDX-License-Identifier: NOASSERTION ;ª®¬¯®­¥­â OptionBox (®á­®¢ ­ ­  Checkbox)
; ;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron ¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬, ¨ ¨å ¯à®£à ¬¬ ¬, ¡¥§
;ª®â®àëå ï ­¥ ᬮ£ ¡ë ­ ¯¨á âì íâ®â ª®¬¯®­¥­â.
; Text encoded with Code Page 866 - Cyrillic ;21.02.2007 ¬®¤¥à­¨§ æ¨ï ¨ ¯®¤¤¥à¦ª  ¤¢ãå à §­ëå ¢ à¨ ­â®¢ á ¨á¯®«ì§®¢ ­¨¥¬ á¨á 梥⮢ ¨ áâ à®© á奬®©
;19.02.2007 ®¡é¥¥ ã«ãç襭¨¥ ª®¤ , 㬥­ì襭¨¥ à §¬¥à  ¨ ¨á¯®«ì§®¢ ­¨¥ á¨á⥬­ëå æ¢¥â®¢ ¤«ï ®â®¡à ¦¥­¨ï optionkbox
;ª®¬¯®­¥­â OptionBox (®á­®¢ ­ ­  Checkbox) ;16.02.2007 ¤ â  á®§¤ ­¨ï ª®¬¯®­¥­â 
;Ž£à®¬­ ï ¡« £®¤ à­®áâì Maxxxx32, Diamond, Heavyiron ¨ ¤à㣨¬ ¯à®£à ¬¬¨áâ ¬, ¨ ¨å ¯à®£à ¬¬ ¬, ¡¥§ ;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru
;ª®â®àëå ï ­¥ ᬮ£ ¡ë ­ ¯¨á âì íâ®â ª®¬¯®­¥­â.
;21.02.2007 ¬®¤¥à­¨§ æ¨ï ¨ ¯®¤¤¥à¦ª  ¤¢ãå à §­ëå ¢ à¨ ­â®¢ á ¨á¯®«ì§®¢ ­¨¥¬ á¨á 梥⮢ ¨ áâ à®© á奬®© ;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
;19.02.2007 ®¡é¥¥ ã«ãç襭¨¥ ª®¤ , 㬥­ì襭¨¥ à §¬¥à  ¨ ¨á¯®«ì§®¢ ­¨¥ á¨á⥬­ëå æ¢¥â®¢ ¤«ï ®â®¡à ¦¥­¨ï optionkbox use32 ; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §à來ëå ª®¬ ­¤ë
;16.02.2007 ¤ â  á®§¤ ­¨ï ª®¬¯®­¥­â  org 0x0 ; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0
;<Lrz> - ’¥¯«®¢ €«¥ªá¥© www.lrz.land.ru db 'MENUET01' ; ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â)
dd 0x1 ; ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©« 
;§ £®«®¢®ª ¯à¨«®¦¥­¨ï dd start ;  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥
use32 ; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §à來ëå ª®¬ ­¤ë ; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì
org 0x0 ; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0 dd i_end ; à §¬¥à ¯à¨«®¦¥­¨ï
db 'MENUET01' ; ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â) dd (i_end+0x100) and not 3 ; Ž¡ê¥¬ ¨á¯®«ì§ã¥¬®© ¯ ¬ïâ¨, ¤«ï á⥪  ®â¢¥¤¥¬ 0å100 ¡ ©â ¨ ¢ë஢­¨¬ ­  £à­¨æã 4 ¡ ©â 
dd 0x1 ; ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©«  dd (i_end+0x100) and not 3 ; à á¯®«®¦¨¬ ¯®§¨æ¨î á⥪  ¢ ®¡« á⨠¯ ¬ïâ¨, áà §ã §  ⥫®¬ ¯à®£à ¬¬ë. ‚¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
dd start ;  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥ dd 0x0,0x0 ; 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì ; ¥á«¨ ¯®á«¥ § ¯ã᪠ ­¥ à ¢­® ­ã«î, ¯à¨«®¦¥­¨¥ ¡ë«®
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 ;æ¢¥â  ¡¥àãâáï ¨§ á¨á⥬ë
include '..\..\..\macros.inc' use_option_box ;¨á¯®«ì§ãï ¬ ªà®áë,¢­¥á⨠¯à®æ¥¤ãàë ¤«ï à¨á®¢ ­¨ï optionbox
include 'optionbox.inc' ;¢ª«îç¨âì ä ©« opeck.inc align 16
;Ž¡« áâì ª®¤ 
version_op ;¢ à¨ ­â, ¯à¨ ª®â®à®¬ ¨á¯®«ì§ãîâáï æ¢¥â , ª®â®àë¥ § ¤ ¥â ¯®«ì§®¢ â¥«ì start: ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã
; version_op1 ;æ¢¥â  ¡¥àãâáï ¨§ á¨á⥬ë mov eax,48 ;¯®«ãç¨âì á¨á⥬­ë¥ 梥â 
use_option_box ;¨á¯®«ì§ãï ¬ ªà®áë,¢­¥á⨠¯à®æ¥¤ãàë ¤«ï à¨á®¢ ­¨ï optionbox mov ebx,3
align 16 mov ecx,sc
;Ž¡« áâì ª®¤  mov edx,sizeof.system_colors
start: ;’®çª  ¢å®¤  ¢ ¯à®£à ¬¬ã mcall
mov eax,48 ;¯®«ãç¨âì á¨á⥬­ë¥ 梥â 
mov ebx,3 mov eax,40 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩
mov ecx,sc mov ebx,0x25 ;á¨á⥬  ¡ã¤¥â ॠ£¨à®¢ âì ⮫쪮 ­  á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥,­ ¦ â  ª­®¯ª , ®¯à¥¤¥«ñ­­ ï à ­¥¥, ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ­ ¦ â¨¥ ­  ª­®¯ªã ¬ëè¨ ¨«¨ ¯¥à¥¬¥é¥­¨¥; á¡à á뢠¥âáï ¯à¨ ¯à®ç⥭¨¨)
mov edx,sizeof.system_colors mcall
mcall red_win:
call draw_window ;¯¥à¢®­ ç «ì­® ­¥®¡å®¤¨¬® ­ à¨á®¢ âì ®ª­®
mov eax,40 ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ still: ;®á­®¢­®© ®¡à ¡®â稪
mov ebx,0x25 ;á¨á⥬  ¡ã¤¥â ॠ£¨à®¢ âì ⮫쪮 ­  á®®¡é¥­¨¥ ® ¯¥à¥à¨á®¢ª¥,­ ¦ â  ª­®¯ª , ®¯à¥¤¥«ñ­­ ï à ­¥¥, ᮡë⨥ ®â ¬ëè¨ (çâ®-â® á«ã稫®áì - ­ ¦ â¨¥ ­  ª­®¯ªã ¬ëè¨ ¨«¨ ¯¥à¥¬¥é¥­¨¥; á¡à á뢠¥âáï ¯à¨ ¯à®ç⥭¨¨) mov eax,10 ;ަ¨¤ âì ᮡëâ¨ï
mcall mcall ;®¦¨¤ âì ᮡë⨥ ¢ â¥ç¥­¨¥ 2 ¬¨««¨á¥ªã­¤
red_win:
call draw_window ;¯¥à¢®­ ç «ì­® ­¥®¡å®¤¨¬® ­ à¨á®¢ âì ®ª­® cmp al,0x1 ;¥á«¨ ¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­ 
still: ;®á­®¢­®© ®¡à ¡®â稪 jz red_win
mov eax,10 ;ަ¨¤ âì ᮡëâ¨ï cmp al,0x3 ;¥á«¨ ­ ¦ â  ª­®¯ª  â® ¯¥à¥©â¨
mcall ;®¦¨¤ âì ᮡë⨥ ¢ â¥ç¥­¨¥ 2 ¬¨««¨á¥ªã­¤ jz button
mouse_option_boxes option_boxes,option_boxes_end ;¯à®¢¥àª  祪 ¡®ªá 
cmp al,0x1 ;¥á«¨ ¨§¬¥­¨«®áì ¯®«®¦¥­¨¥ ®ª­  jmp still ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横«
jz red_win button:
cmp al,0x3 ;¥á«¨ ­ ¦ â  ª­®¯ª  â® ¯¥à¥©â¨ ; mov eax,17 ;¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª« ¢¨è¨
jz button ; mcall
mouse_option_boxes option_boxes,option_boxes_end ;¯à®¢¥àª  祪 ¡®ªá  ; test ah,ah ;¥á«¨ ¢ ah 0, â® ¯¥à¥©â¨ ­  ®¡à ¡®â稪 ᮡë⨩ still
jmp still ;¥á«¨ ­¨ç¥£® ¨§ ¯¥à¥ç¨á«¥­­®£® â® á­®¢  ¢ 横« ; jz still
button: or eax,-1 ;¢ eax,-1 - 5 ,¡ ©â®¢ ã ­ á ¦¥ ⮫쪮 3 ¢ë©â¨
; mov eax,17 ;¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª« ¢¨è¨ mcall ;¤ «¥¥ ¢ë¯®«­ï¥âáï ¢ë室 ¨§ ¯à®£à ¬¬ë
; mcall
; test ah,ah ;¥á«¨ ¢ ah 0, â® ¯¥à¥©â¨ ­  ®¡à ¡®â稪 ᮡë⨩ still ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; jz still draw_window: ;à¨á®¢ ­¨¥ ®ª­  ¯à¨«®¦¥­¨ï
or eax,-1 ;¢ eax,-1 - 5 ,¡ ©â®¢ ã ­ á ¦¥ ⮫쪮 3 ¢ë©â¨ mov eax,12 ;¢ ॣ¨áâà ¢­¥á⨠§­ ç¥­¨¥ = 12
mcall ;¤ «¥¥ ¢ë¯®«­ï¥âáï ¢ë室 ¨§ ¯à®£à ¬¬ë mov ebx,1 ;¯à¨á¢®¨âì 1
mcall
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
draw_window: ;à¨á®¢ ­¨¥ ®ª­  ¯à¨«®¦¥­¨ï xor eax,eax ;®¡­ã«¨âì eax
mov eax,12 ;¢ ॣ¨áâà ¢­¥á⨠§­ ç¥­¨¥ = 12 mov ebx,50*65536+180 ;[ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
mov ebx,1 ;¯à¨á¢®¨âì 1 mov ecx,30*65536+200 ;[ª®®à¤¨­ â  ¯® ®á¨ y]*65536 + [à §¬¥à ¯® ®á¨ y]
mcall mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
or edx,0xb3000000
xor eax,eax ;®¡­ã«¨âì eax mov edi,hed
mov ebx,50*65536+180 ;[ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x] mcall ;­ à¨á®¢ âì ®ª­® ¯à¨«®¦¥­¨ï
mov ecx,30*65536+200 ;[ª®®à¤¨­ â  ¯® ®á¨ y]*65536 + [à §¬¥à ¯® ®á¨ y]
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl draw_option_boxes option_boxes,option_boxes_end ;à¨á®¢ ­¨¥ 祪¡®ªá®¢
or edx,0xb3000000
mov edi,hed mov eax,12 ;”ã­ªæ¨ï 12 - ­ ç âì/§ ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ .
mcall ;­ à¨á®¢ âì ®ª­® ¯à¨«®¦¥­¨ï mov ebx,2 ;<3B>®¤äã­ªæ¨ï 2 - § ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ .
mcall
draw_option_boxes option_boxes,option_boxes_end ;à¨á®¢ ­¨¥ 祪¡®ªá®¢ ret
mov eax,12 ;”ã­ªæ¨ï 12 - ­ ç âì/§ ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ . ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov ebx,2 ;<3B>®¤äã­ªæ¨ï 2 - § ª®­ç¨âì ¯¥à¥à¨á®¢ªã ®ª­ . ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mcall ;DATA ¤ ­­ë¥
ret ;”®à¬ â ¤ ­­ëå 祪 ¡®ªá :
;10 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® å
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;30 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® ã
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;0
;DATA ¤ ­­ë¥ ;0 - 梥â à ¬ª¨ 祪 ¡®ªá 
;”®à¬ â ¤ ­­ëå 祪 ¡®ªá : ;0 - 梥â ⥪áâ  ­ ¤¯¨á¨
;10 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® å ;op_text.1 - 㪠§ â¥«ì ­  ­ ç «® áâப¨
;30 - ª®®à¤¨­ â  祪 ¡®ªá  ¯® ã ;option_group1 - íâ® ¯à¨§­ ª £à㯯ë, â.¥. íâ®â ª®¤ ¬®¦¥â ®¡à ¡ â뢠âì ¬­®£® £à㯯 ¨§ optibox
;0 ;op_text.e1-op_text.1 - ¤«¨­  áâப¨
;0 - 梥â à ¬ª¨ 祪 ¡®ªá  ;
;0 - 梥â ⥪áâ  ­ ¤¯¨á¨ align 16
;op_text.1 - 㪠§ â¥«ì ­  ­ ç «® áâப¨ option_boxes:
;option_group1 - íâ® ¯à¨§­ ª £à㯯ë, â.¥. íâ®â ª®¤ ¬®¦¥â ®¡à ¡ â뢠âì ¬­®£® £à㯯 ¨§ optibox ;op1 option_box1 option_group1,10,15,op_text.1,op_text.e1-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
align 16 ;op11 option_box1 option_group2,10,80,op_text.1,op_text.e1-op_text.1
option_boxes: ;op12 option_box1 option_group2,10,95,op_text.2,op_text.e2-op_text.2
;op1 option_box1 option_group1,10,15,op_text.1,op_text.e1-op_text.1 ;op13 option_box1 option_group2,10,110,op_text.3,op_text.e3-op_text.3
;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 ;struc option_box point_gr,left,top,color,border_color,text_color,text,text_length
;op11 option_box1 option_group2,10,80,op_text.1,op_text.e1-op_text.1 op1 option_box option_group1,10,15,0xffffff,0,0,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 op2 option_box option_group1,10,30,0xFFFFFF,0,0,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 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
;struc option_box point_gr,left,top,color,border_color,text_color,text,text_length op12 option_box option_group2,10,95,0xffffff,0,0,op_text.2,op_text.e2-op_text.2
op1 option_box option_group1,10,15,0xffffff,0,0,op_text.1,op_text.e1-op_text.1 op13 option_box option_group2,10,110,0xffffff,0,0,op_text.3,op_text.e3-op_text.3
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 option_boxes_end:
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 op_text: ; ‘®¯à®¢®¦¤ î騩 ⥪áâ ¤«ï 祪 ¡®ªá®¢
op13 option_box option_group2,10,110,0xffffff,0,0,op_text.3,op_text.e3-op_text.3 .1 db 'Option_Box #1'
.e1:
option_boxes_end: .2 db 'Option_Box #2'
.e2:
op_text: ; ‘®¯à®¢®¦¤ î騩 ⥪áâ ¤«ï 祪 ¡®ªá®¢ .3 db 'Option_Box #3'
.1 db 'Option_Box #1' .e3:
.e1:
.2 db 'Option_Box #2' option_group1 dd op1 ;㪠§ â¥«¨, ®­¨ ®â®¡à ¦ îâáï ¯® 㬮«ç ­¨î, ª®£¤  ¢ë¢®¤¨âáï
.e2: option_group2 dd op11 ;¯à¨«®¦¥­¨¥
.3 db 'Option_Box #3'
.e3: hed db 'Optionbox [21.02.2007]',0 ;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
sc system_colors
option_group1 dd op1 ;㪠§ â¥«¨, ®­¨ ®â®¡à ¦ îâáï ¯® 㬮«ç ­¨î, ª®£¤  ¢ë¢®¤¨âáï i_end: ;ª®­¥æ ª®¤ 
option_group2 dd op11 ;¯à¨«®¦¥­¨¥
hed db 'Optionbox [21.02.2007]',0 ;§ £®«®¢®ª ¯à¨«®¦¥­¨ï
sc system_colors
i_end: ;ª®­¥æ ª®¤ 

View File

@@ -1,5 +1,5 @@
if tup.getconfig("NO_FASM") ~= "" then return end 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.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir()) add_include(tup.getvariantdir())

View File

@@ -1,238 +1,232 @@
; SPDX-License-Identifier: NOASSERTION ;
; ; COMMUNICATING WITH MODEM: PORTS & IRQ
;
; Text encoded with Code Page 866 - Cyrillic ; Compile with FASM
;
; include "lang.inc"
; COMMUNICATING WITH MODEM: PORTS & IRQ include "..\..\..\..\macros.inc"
;
; Compile with FASM use32
; org 0x0
include "lang.inc" db 'MENUET01' ; 8 byte id
include "..\..\..\macros.inc" dd 0x01 ; header version
dd START ; start of code
use32 dd I_END ; size of image
org 0x0 dd 0x1000 ; memory for app
dd 0x1000 ; esp
db 'MENUET01' ; 8 byte id dd 0x0 , 0x0 ; I_Param , I_Icon
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image START: ; start of execution
dd 0x1000 ; memory for app
dd 0x1000 ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon mov eax,45 ; reserve irq 4
mov ebx,0
mov ecx,4
START: ; start of execution mcall
mov eax,46 ; reserve ports 0x3f8-0x3ff
mov eax,45 ; reserve irq 4 mov ebx,0
mov ebx,0 mov ecx,0x3f8
mov ecx,4 mov edx,0x3ff
mcall mcall
mov eax,46 ; reserve ports 0x3f8-0x3ff mov eax,44 ; read these ports at interrupt/irq 4
mov ebx,0 mov ebx,irqtable
mov ecx,0x3f8 mov ecx,4
mov edx,0x3ff mcall
mcall
mov eax,40 ; enable event for interrupt/irq 4
mov eax,44 ; read these ports at interrupt/irq 4 mov ebx,10000b shl 16 + 111b
mov ebx,irqtable mcall
mov ecx,4
mcall call program_com1
mov eax,40 ; enable event for interrupt/irq 4 mov eax, 48
mov ebx,10000b shl 16 + 111b mov ebx, 3
mcall mov ecx, sc
mov edx, sizeof.system_colors
call program_com1 mcall
mov eax, 48 red:
mov ebx, 3 call draw_window
mov ecx, sc
mov edx, sizeof.system_colors still:
mcall
mov eax,10 ; wait here for event
red: mcall
call draw_window
cmp eax,1 ; redraw request ?
still: je red
cmp eax,2 ; key in buffer ?
mov eax,10 ; wait here for event je key
mcall cmp eax,3 ; button in buffer ?
je button
cmp eax,1 ; redraw request ? cmp eax,16+4 ; data read by interrupt ?
je red je irq4
cmp eax,2 ; key in buffer ?
je key jmp still
cmp eax,3 ; button in buffer ?
je button key: ; key
cmp eax,16+4 ; data read by interrupt ? mov eax,2 ; just read it and ignore
je irq4 mcall
jmp still mov al,ah
mov dx,0x3f8
key: ; key out dx,al
mov eax,2 ; just read it and ignore
mcall jmp still
mov al,ah button: ; button
mov dx,0x3f8 or eax,-1 ; close this program
out dx,al mcall
jmp still
irq4:
button: ; button
or eax,-1 ; close this program mov eax,42
mcall mov ebx,4
mcall
irq4: ; eax = number of bytes left
; ecx = 0 success, =1 fail
mov eax,42 ; bl = byte
mov ebx,4
mcall inc [pos]
and [pos],31
; eax = number of bytes left mov eax,[pos]
; ecx = 0 success, =1 fail
; bl = byte mov [string+eax], bl
call draw_string
inc [pos]
and [pos],31 jmp still
mov eax,[pos]
mov [string+eax], bl baudrate_9600 equ 12
call draw_string baudrate_57600 equ 2
jmp still program_com1:
mov dx,0x3f8+3
baudrate_9600 equ 12 mov al,0x80
baudrate_57600 equ 2 out dx,al
program_com1: mov dx,0x3f8+1
mov al,0x00
mov dx,0x3f8+3 out dx,al
mov al,0x80
out dx,al mov dx,0x3f8+0
mov al,baudrate_9600
mov dx,0x3f8+1 out dx,al
mov al,0x00
out dx,al mov dx,0x3f8+3
mov al,0x3
mov dx,0x3f8+0 out dx,al
mov al,baudrate_9600
out dx,al mov dx,0x3f8+4
mov al,0xb
mov dx,0x3f8+3 out dx,al
mov al,0x3
out dx,al mov dx,0x3f8+1
mov al,0x1
mov dx,0x3f8+4 out dx,al
mov al,0xb
out dx,al ret
mov dx,0x3f8+1
mov al,0x1
out dx,al ; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
ret ; *********************************************
draw_window:
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ******** mov eax, 12 ; function 12:tell os about windowdraw
; ********************************************* mov ebx, 1 ; 1, start of draw
mcall
draw_window: ; DRAW WINDOW
mov eax, 0 ; function 0 : define and draw window
mov eax, 12 ; function 12:tell os about windowdraw mov ebx, 100*65536+250 ; [x start] *65536 + [x size]
mov ebx, 1 ; 1, start of draw mov ecx, 100*65536+85 ; [y start] *65536 + [y size]
mcall mov edx, [sc.work]
or edx, 0x03000000 ; color of work area RRGGBB,8->color gl
; DRAW WINDOW mcall
mov eax, 0 ; function 0 : define and draw window
mov ebx, 100*65536+250 ; [x start] *65536 + [x size] ; WINDOW LABEL
mov ecx, 100*65536+85 ; [y start] *65536 + [y size] mov eax, 4 ; function 4 : write text to window
mov edx, [sc.work] mov ebx, 8*65536+8 ; [x start] *65536 + [y start]
or edx, 0x03000000 ; color of work area RRGGBB,8->color gl mov ecx, [sc.grab_text]
mcall or ecx, 0x10000000 ; font 1 & color ( 0xF0RRGGBB )
mov edx, title ; pointer to text beginning
; WINDOW LABEL mov esi, title.len ; text length
mov eax, 4 ; function 4 : write text to window mcall
mov ebx, 8*65536+8 ; [x start] *65536 + [y start]
mov ecx, [sc.grab_text] mov eax, 4 ; draw text
or ecx, 0x10000000 ; font 1 & color ( 0xF0RRGGBB ) mov ebx, 20*65536+33
mov edx, title ; pointer to text beginning mov ecx, [sc.work_text]
mov esi, title.len ; text length mov edx, text+4
mcall .nextstr:
mov esi, [edx-4]
mov eax, 4 ; draw text test esi, 0xFF000000
mov ebx, 20*65536+33 jnz .finstr
mov ecx, [sc.work_text] mcall
mov edx, text+4 add edx, esi
.nextstr: add edx, 4
mov esi, [edx-4] add ebx, 10
test esi, 0xFF000000 jmp .nextstr
jnz .finstr .finstr:
mcall
add edx, esi call draw_string
add edx, 4
add ebx, 10 mov eax,12 ; function 12:tell os about windowdraw
jmp .nextstr mov ebx,2 ; 2, end of draw
.finstr: mcall
call draw_string ret
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw draw_string:
mcall mov eax, 4
mov ebx, 20*65536+65
ret mov ecx, [sc.work_text]
mov edx, string
mov esi, 32
draw_string: mcall
mov eax, 4 ret
mov ebx, 20*65536+65
mov ecx, [sc.work_text]
mov edx, string ; DATA AREA
mov esi, 32
mcall
ret if lang eq ru_RU
text mstr "‚‚Ž„ˆŒ›… ‘ˆŒ‚Ž‹› <20><EFBFBD>…„€žŸ ŒŽ„…Œ“.",\
"<EFBFBD><EFBFBD> Ž ŒŽŒ ˆžŸ <EFBFBD>Ž",\
; DATA AREA "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˆž IRQ4 ˆ ŽŽ<EFBFBD><EFBFBD>žŸ <EFBFBD>ˆ."
title:
db 'ŒŽ„…Œ <20>€ COM1'
if lang eq ru_RU .len = $ - title
text mstr "‚‚Ž„ˆŒ›… ‘ˆŒ‚Ž‹› <20><EFBFBD>…„€žŸ ŒŽ„…Œ“.",\ else
"<EFBFBD><EFBFBD> Ž ŒŽŒ ˆžŸ <EFBFBD>Ž",\ text mstr "TYPED CHARACTERS ARE SENT TO MODEM.",\
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˆž IRQ4 ˆ ŽŽ<EFBFBD><EFBFBD>žŸ <EFBFBD>ˆ." "DATA FROM MODEM IS READ BY IRQ4",\
title: "INTERRUPT AND DISPLAYED BELOW."
db 'ŒŽ„…Œ <20>€ COM1' title:
.len = $ - title db 'MODEM AT COM1'
else .len = $ - title
text mstr "TYPED CHARACTERS ARE SENT TO MODEM.",\ end if
"DATA FROM MODEM IS READ BY IRQ4",\
"INTERRUPT AND DISPLAYED BELOW." pos dd 0x0
title:
db 'MODEM AT COM1' irqtable:
.len = $ - title ; port ; 1=byte, 2=word
end if dd 0x3f8 +0x01000000 ; read byte from port 0x3f8 at interrupt/irq 4
dd 0x0 ; no more ports ( max 15 ) to read
pos dd 0x0
irqtable: I_END:
; port ; 1=byte, 2=word
dd 0x3f8 +0x01000000 ; read byte from port 0x3f8 at interrupt/irq 4 string rb 32
dd 0x0 ; no more ports ( max 15 ) to read sc system_colors
I_END:
string rb 32
sc system_colors

Some files were not shown because too many files have changed in this diff Show More