65 Commits

Author SHA1 Message Date
f2f77cb998 ci: add retention-days to artifact
Floppy images: 1 year
ISO images:    1 month
Raw:           1 week
2025-04-04 18:20:29 +03:00
fcb9f49785 flood-it: Fixed buttons position (#193)
Reviewed-on: #193
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-04-03 12:32:18 +02:00
d6c44c6570 WebView 3.9
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 31s
Build system / Build (pull_request) Successful in 6m27s
- new homepages
- fix clash on a wrong <kosicon> number
- set proper internal page sizes
2025-04-03 10:50:04 +02:00
b8a1487bab Fixed menu.dat (ru_RU) after moving the period app
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 22s
Build system / Build (pull_request) Successful in 6m24s
Signed-off-by: Max Logaev <maxlogaev@proton.me>
2025-04-03 11:29:55 +03:00
00c2cfbcfc Period: Moved from IMG to ISO
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 32s
Build system / Build (pull_request) Successful in 6m27s
2025-04-03 10:00:33 +02:00
c398a2bbf4 Unz: Fixed bug #27 (#190)
Reviewed-on: #190
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-04-03 09:39:02 +02:00
58cf25fe43 menuetlibc: Fixed ef_exp.s (#177)
Fix for a similar problem: https://git.kolibrios.org/KolibriOS/kolibrios/commit/12a6b7f2

Reviewed-on: #177
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: IgorA <aie85playm@gmail.com>
Co-committed-by: IgorA <aie85playm@gmail.com>
2025-04-02 21:34:04 +02:00
8da45bab3e Eolite 5.32: Search fix (#191)
- LMB to open file, RMB to show in folder
- fix: correctly open folders
- fix UI: better list alignment
- Eolite: optimize OpenDir
- SelectList_ProcessMouse() better react on click

Reviewed-on: #191
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-04-02 21:26:12 +02:00
5abc319817 Boxlib: the tree_list can use large fonts, fix line number error
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 28s
Build system / Build (pull_request) Successful in 5m25s
2025-04-01 21:58:38 +02:00
ff625706c0 Eolite 5.31: (#187)
- fix: editbox edit text
- fix: remove unnecessary editbox form delete popin
- add: "Copy path" menu item
- add: "Search" to a burger menu

Reviewed-on: #187
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Reviewed-by: rgimad <rgimad@noreply.localhost>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-03-31 22:40:54 +02:00
81dafb3025 Floot-It v3.0 (#181)
- adopt window size to screen size
- bigger fonts
- proper colored 'S' and 'L' buttons
- fix issue: after won the game clicks count always increased to max
- code refactoring, translate comments to English
- help updated

Reviewed-on: #181
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-03-31 08:15:28 +02:00
58e2d0b844 Blocks: Added 2 models and 5 types of blocks (#180)
- Added 2 models (bird and castle);
- Added 5 types of blocks;
- Added block.asm to autobuild.

Co-authored-by: Max Logaev <maxlogaev@proton.me>
Reviewed-on: #180
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: IgorA <aie85playm@gmail.com>
Co-committed-by: IgorA <aie85playm@gmail.com>
2025-03-30 16:42:51 +02:00
7720e38868 NNP: removed dependency on libc library, clean code
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 37s
Build system / Build (pull_request) Successful in 7m22s
2025-03-28 20:01:18 +01:00
02b2395ef1 Eolite 5.30: Added file search (#175)
Co-authored-by: Max Logaev <maxlogaev@proton.me>
Reviewed-on: #175
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-03-28 19:48:39 +01:00
293e1d195a Docs/welcome.htm: Fixed #168, language style updates (#171)
Compressed with kpack and added to IMG (en_US only).

Co-authored-by: Ivan Baravy <dunkaist@gmail.com>
Reviewed-on: #171
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2025-03-22 16:09:06 +01:00
5cf6c3baf9 Mine game v0.62 (#172)
- proper window rolling up fix;
- bigger cells and fonts;
- add icon to a new game button;
- better alignment of ui elements in header.

Reviewed-on: #172
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-03-22 09:40:04 +01:00
8376fed87d CI/CD: Use kpack64 instead of kpack
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 30s
Build system / Build (pull_request) Successful in 5m46s
Version of the kpack utility from
`programs/other/kpack/kerpack_linux/kpack64.asm`
compresses files better than `programs/other/kpack/linux/kpack.asm`

Signed-off-by: Max Logaev <maxlogaev@proton.me>
2025-03-22 09:00:14 +01:00
22d572f789 Docs: Added README and contributing guide (#124)
Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #124
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: rgimad <rgimad@noreply.localhost>
Reviewed-by: Ivan B <dunkaist@noreply.localhost>
Reviewed-by: Sweetbread <risdeveau@codrs.ru>
2025-03-21 21:08:44 +01:00
af41fe4aa7 Pipet: Fixed wrong window colors on some skins and optimized size (#162)
- Fixed wrong window colors on some skins;
- Size optimization;
- Added template macro for quickly creating `struct` with specific fields.

Co-authored-by: leency <lipatov.kiril@gmail.com>
Reviewed-on: #162
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: Burer <burer@kolibrios.org>
Co-committed-by: Burer <burer@kolibrios.org>
2025-03-20 00:18:26 +01:00
b1a1691b84 Libimg: fixed a bug when rotating images smaller than 2 pixels
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 31s
Build system / Build (pull_request) Successful in 5m17s
2025-03-19 11:37:12 +02:00
92f9d76f14 welcome.htm and related stuff (fix #20)
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 33s
Build system / Build (pull_request) Successful in 6m43s
- welcome.htm (ENG) uploaded
- signs.png uploaded and added to ISO
- rotate Kolibri in all icons to look forward
2025-03-18 16:21:01 +01:00
32466e31f4 programs/shell: Show new fields of the sf18.13 struct
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 41s
Build system / Build (pull_request) Successful in 6m3s
Kfetch command now reports
 - kernel ABI,
 - git hash (aka commit id),
 - release offset,
 - debug tag.

No svn revision anymore.
2025-03-17 23:22:45 +01:00
63cd6f0ac8 Movback: Added support window resizing
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 26s
Build system / Build (pull_request) Successful in 5m6s
2025-03-17 22:31:37 +01:00
4fcc17675c Movback: Deleted trunk dir. Files moved 2025-03-17 22:31:37 +01:00
4e903ce12b kiv: show image bpp in win header
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 34s
Build system / Build (pull_request) Successful in 6m20s
2025-03-17 22:24:04 +01:00
bfdb42c91f Tube: fix crash at some window sizes, remove outdated code with palette
All checks were successful
Build system / Build (pull_request) Successful in 5m48s
Build system / Check kernel codestyle (pull_request) Successful in 30s
2025-03-17 22:07:11 +02:00
55d641b0da kernel: Clean up svn-related code and data
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 40s
Build system / Build (pull_request) Successful in 6m9s
* Rearrange sf18.13 version structure to
  + mention git hash and release offset,
  + separate OS release and kernel ABI numbers,
  + include an optional debug tag.
* Update the boot log and the blue screen to print the new fields.
* Update docs.
* No breaking changes.

Resolves #99.
2025-03-17 20:07:46 +01:00
0e7cff0715 ci: setup environment variables
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 28s
Build system / Build (pull_request) Successful in 6m28s
ref: #146
Toolchain container was updated and fasm now in /home/autobuild/...
folder
2025-03-17 19:10:23 +01:00
4d30fd7a2b Eolite 5.29: Fixed bug in "Apply to all files?" dialog
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 47s
Build system / Build (pull_request) Successful in 5m43s
- line height can no longer be smaller than icon size;
- fixed bug with edit box activation under "Apply to all files?" dialog;
- updated dates;
- fixed kfont initialization.
2025-03-17 18:22:15 +03:00
292bd1d739 webview 3.85: fix a specific case when col width was calculated wrong
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 27s
Build system / Build (pull_request) Successful in 5m16s
2025-03-17 11:50:17 +01:00
1a756358f5 webview 3.84
- tagicon support
- draw_buf => BufIsInvalid() add check
2025-03-17 11:50:17 +01:00
009c0d0519 webview-3.83
- fixed collection.h that caused webview crash
- fix rolled-up bug
- add special symbol from builds.kolibrios.org/status.html
2025-03-17 11:50:17 +01:00
bab6267412 Boxlib: fix write null pointer in editbox
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 35s
Build system / Build (pull_request) Successful in 7m45s
2025-03-17 10:55:32 +01:00
72196f42de Palitra(branch): UI and code refactoring. Fix a lot of issues (#154)
- Fixed the ID of the buttons, made the window always on top;
- Removed the visible rectangle when clicking on the palette;
- Fixed the position of the picker and palette buttons.

Reviewed-on: #154
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-03-17 10:54:19 +01:00
f1e958af41 Firework: fix and optimize window resizing
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 1m19s
Build system / Build (pull_request) Successful in 16m28s
2025-03-17 01:09:45 +03:00
rgimad
78de535233 Apps/dbgboard: fix critical bug with stack overflow
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 34s
Build system / Build (pull_request) Successful in 7m0s
2025-03-16 19:50:12 +01:00
e353771faa Pipet: Rewrite from C-- to FASM
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 25s
Build system / Build (pull_request) Successful in 4m52s
- Rewritten from C-- to FASM
- Function to select not a single pixel, but a 7*7 rect from screen;
- Function to select each pixel from selected rect;
- Updated UX/UI.

Co-authored-by: leency <lipatov.kiril@gmail.com>
2025-03-16 13:17:33 +02:00
714cc0a65c cmm menu: fix marker
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 23s
Build system / Build (pull_request) Successful in 5m0s
2025-03-15 23:28:13 +01:00
9357a21169 Plasma: Fix code style and added support for window resizing
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 23s
Build system / Build (pull_request) Successful in 5m0s
2025-03-15 23:02:16 +01:00
75e732a437 Apps/plasma: Deleted trunk dir. Files moved 2025-03-15 23:02:16 +01:00
afd07534ab Apps/fire: Improved code style and readability 2025-03-15 22:31:23 +01:00
20aba254bc Apps/firework: Added support for window resizing
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 32s
Build system / Build (pull_request) Successful in 5m36s
2025-03-15 22:35:09 +02:00
fbd99c82a4 Apps/firework: Improved code style and readability 2025-03-15 19:48:49 +02:00
784b02b4a4 3dcube: get rid of unnecessary files, refined build.bat and tupfile
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 32s
Build system / Build (pull_request) Successful in 5m36s
2025-03-15 14:54:46 +01:00
rgimad
7a2e48bed2 Flip the bird in kfetch command (#144)
Co-authored-by:  Burer <taldariner@gmail.com>
Reviewed-on: #144
Reviewed-by: Max Logaev <maxlogaev@proton.me>
Co-authored-by: rgimad <33692565+rgimad@users.noreply.github.com>
Co-committed-by: rgimad <33692565+rgimad@users.noreply.github.com>
2025-03-14 23:44:53 +01:00
31ca1c76bb Apps/unvwater: Added support for window resizing
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 30s
Build system / Build (pull_request) Successful in 5m29s
2025-03-15 00:56:49 +03:00
99ddd88ff8 Apps/unvwater: Improved code style and readability 2025-03-14 22:41:51 +01:00
4f1a8ef9a1 kf_font_viewer gets to be a part of syspanel
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 21s
Build system / Build (pull_request) Successful in 5m28s
Syspanel gets bigger in less than 1 sector and we still have kf viewer in the IMG
2025-03-14 21:31:22 +01:00
93f12c7673 allow applications to work nicely without .kf files
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 37s
Build system / Build (pull_request) Successful in 7m45s
2025-03-14 21:10:49 +01:00
Burer
3eb02af5fd [Other/Data] Optimized all .png images in repo using optipng -o7
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 44s
Build system / Build (pull_request) Successful in 7m12s
2025-03-14 20:46:32 +01:00
rgimad
83d8146ad1 Apps/dbgboard: fix comments
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 29s
Build system / Build (pull_request) Successful in 5m10s
2025-03-13 21:31:10 +03:00
rgimad
1974f45c50 Apps/dbgboard: add display modes and more highlighting
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 34s
Build system / Build (pull_request) Successful in 5m17s
2025-03-13 17:24:09 +03:00
36ce6f0b74 Eolite 5.28
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 40s
Build system / Build (pull_request) Successful in 5m34s
- deny renaming folder '..'
- 'show status bar' option removed
- add option 'bold font'
- Quark view changed to HEX View
2025-03-12 12:27:18 +01:00
4701a15222 Apps/tube: Added support for window resizing
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 34s
Build system / Build (pull_request) Successful in 5m29s
2025-03-12 12:08:40 +03:00
61277f8822 Apps/tube: Improved code style and readability
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 45s
Build system / Build (pull_request) Successful in 5m34s
- Magic numbers are replaced with constants;
- Added copyrights and source to the original;
- Removed unnecessary *.bat files.

Co-authored-by: Max Logaev <maxlogaev@proton.me>
2025-03-12 11:03:37 +03:00
abb7442055 Apps/tube: Deleted trunk dir. Files moved
The trunk directory is no longer required. This is a rudiment of SVN
2025-03-12 02:50:40 +03:00
81b15607dc Apps/barcfg: Added bars_8b.raw
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 45s
Build system / Build (pull_request) Successful in 5m41s
Co-authored-by: Max Logaev <maxlogaev@proton.me
2025-03-10 23:11:33 +01:00
30d8d45326 Data: Move kf_font_viewer to ISO
- Added testcon2_eng to IMG;
- use_mb was removed from IMG because it was not used.

Co-authored-by: Max Logaev <maxlogaev@proton.me
2025-03-10 23:11:33 +01:00
9a23c001e1 Data: Added hotkeys for change sound volume and mute/unmute sound
- Added Ctrl + Alt + Left / Right - change sound volume;
- Added Ctrl + Alt + Up / Down - mute and unmute sound;
- Corrected description.

Co-authored-by: Max Logaev <maxlogaev@proton.me
2025-03-10 23:11:33 +01:00
64b7372624 Apps/eolite: Version 5.27
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 31s
Build system / Build (pull_request) Successful in 4m53s
- Choose first file on ctrl selection.
- Set static position for maximized window:
  https://github.com/KolibriOS/kolibrios/issues/9
2025-03-10 22:28:44 +01:00
d04420295a CI: Add hash for toolchain
All checks were successful
Build system / Check kernel codestyle (pull_request) Successful in 28s
Build system / Build (pull_request) Successful in 5m5s
2025-03-10 21:31:00 +01:00
2935b29fd8 CI: Cache 2025-03-10 21:31:00 +01:00
505f741fbd CI/CD: Used kolibri-toolchain and fuse. Added es_ES build
- Used  tup with fuse to speed up build;
- Used kolibri-toolchain to speed up the build, that is,
  do not waste time installing dependencies;
- Added build of the Spanish version (es_ES).

Signed-off-by: Max Logaev <maxlogaev@proton.me>
2025-03-10 21:31:00 +01:00
5a852ebdfb Apps/webview: Version 3.82. Fixed text rendering, speedup (#130)
All checks were successful
Build system / Check kernel codestyle (push) Successful in 28s
Build system / Build (push) Successful in 8m2s
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2025-03-10 20:28:52 +01:00
026d2aba40 Libs/console_coff: Translate comments to English and convert to UTF-8 (#128)
All checks were successful
Build system / Check kernel codestyle (push) Successful in 50s
Build system / Build (push) Successful in 11m28s
Translated remaining non-English comments to English and convert to UTF-8

Co-authored-by: rgimad <33692565+rgimad@users.noreply.github.com>
Reviewed-on: #128
Reviewed-by: Max Logaev <mxlgv@noreply.localhost>
Co-authored-by: rgimad <rgimad@noreply.localhost>
Co-committed-by: rgimad <rgimad@noreply.localhost>
2025-03-10 20:04:26 +01:00
163 changed files with 9412 additions and 3794 deletions

View File

@@ -4,63 +4,57 @@
name: 'Build system'
on:
push:
branches:
- 'main'
pull_request:
branches:
- '**'
- 'main'
jobs:
codestyle:
name: "Check kernel codestyle"
runs-on: ubuntu-latest
runs-on: kolibri-toolchain
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup dependencies
run: |
sudo apt update && sudo apt install perl -y
- name: Check codestyle
run: |
find kernel/trunk -iname '*.asm' -or -iname '*.inc' -exec bash -c "echo {}; cat {} | perl .gitea/workflows/checker.pl" \;
build:
name: 'Build'
runs-on: ubuntu-latest
runs-on: kolibri-toolchain
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get describe
id: vars
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITEA_OUTPUT
- name: Setup dependencies
- name: Get toolchain hash
id: toolchain-hash
run: |
cd /tmp
sudo apt update
sudo apt install p7zip-full fasm nasm make gcc gcc-multilib g++ g++-multilib mtools mkisofs parted gdisk -y
wget http://mirrors.kernel.org/ubuntu/pool/universe/t/tup/tup_0.8-1_amd64.deb
sudo apt install ./tup_0.8-1_amd64.deb -y
a=$(find ${{ gitea.workspace }}/programs/develop/cmm/ -type f -print0 | sort -z | xargs -0 sha1sum)
b=$(sha1sum ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc)
c=$(find ${{ gitea.workspace }}/programs/develop/objconv/ -type f -print0 | sort -z | xargs -0 sha1sum)
d=$(find ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/ -type f -print0 | sort -z | xargs -0 sha1sum)
e=$(find ${{ gitea.workspace }}/programs/other/kpack/linux/ -type f -print0 | sort -z | xargs -0 sha1sum)
f=$(find ${{ gitea.workspace }}/programs/develop/clink/ -type f -print0 | sort -z | xargs -0 sha1sum)
echo hash=$(echo $a $b $c $d $e $f | sha1sum | awk '{print $1}') >> $GITEA_OUTPUT
- name: Install GCC toolchain
run: |
chmod +x ${{ gitea.workspace }}/.gitea/workflows/install_kgcc
${{ gitea.workspace }}/.gitea/workflows/install_kgcc
- name: Install JWasm
run: |
cd /tmp
wget -O JWasm211bl.zip https://sourceforge.net/projects/jwasm/files/JWasm%20Linux%20binary/JWasm211bl.zip/download
unzip JWasm211bl.zip "jwasm" -d /home/autobuild/tools/win32/bin/
chmod +x /home/autobuild/tools/win32/bin/jwasm
- name: Restore toolchain
id: cache-toolchain
uses: actions/cache/restore@v4
with:
path: /home/autobuild
key: kolibri-toolchain-${{ steps.toolchain-hash.outputs.hash }}
- name: Build and install C--
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: |
cd ${{ gitea.workspace }}/programs/develop/cmm/
make -f Makefile.lin32
@@ -70,105 +64,159 @@ jobs:
make -f Makefile.lin32 clean
- name: Install TCC
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: |
cp ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc /home/autobuild/tools/win32/bin/kos32-tcc
chmod +x /home/autobuild/tools/win32/bin/kos32-tcc
- name: Compile objconv
- name: Build and install objconv
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: |
cd ${{ gitea.workspace }}/programs/develop/objconv/
g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp
chmod +x /home/autobuild/tools/win32/bin/objconv
- name: Compile kerpack
- name: Build and install kerpack and kpack
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: |
export PATH=/home/autobuild/tools/win32/bin:$PATH
cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/
make
chmod +x kerpack
mv kerpack /home/autobuild/tools/win32/bin/.
- name: Compile kpack
run: |
cd ${{ gitea.workspace }}/programs/other/kpack/linux/
bash build.sh
chmod +x kpack
mv kerpack /home/autobuild/tools/win32/bin/.
mv kpack /home/autobuild/tools/win32/bin/.
- name: Compile clink
- name: Build and install clink
if: steps.cache-toolchain.outputs.cache-hit != 'true'
run: |
cd ${{ github.workspace }}/programs/develop/clink
cd ${{ gitea.workspace }}/programs/develop/clink
gcc main.c -o clink
chmod a+x clink
mv clink /home/autobuild/tools/win32/bin/clink
- name: Prepare cache folder
run: |
rm /home/autobuild
mv /root/autobuild /home/autobuild
if: steps.cache-toolchain.outputs.cache-hit != 'true'
- name: Save toolchain
if: steps.cache-toolchain.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: /home/autobuild
key: kolibri-toolchain-${{ steps.toolchain-hash.outputs.hash }}
- name: Configure tup
run: |
cd ${{ gitea.workspace }}
export ROOT=${{ gitea.workspace }}
cd $ROOT
echo "CONFIG_KPACK_CMD=&& kpack --nologo %o" > tup.config
echo "CONFIG_KERPACK_CMD=&& kerpack %o" >> tup.config
echo "CONFIG_PESTRIP_CMD=&& EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" >> tup.config
echo "CONFIG_NO_MSVC=full" >> tup.config
echo "CONFIG_INSERT_REVISION_ID=1" >> tup.config
export ROOT=${{ gitea.workspace }}
echo "CONFIG_KPACK_CMD= && kpack --nologo %o" | tee en_US.config ru_RU.config es_ES.config
echo "CONFIG_KERPACK_CMD= && kerpack %o" | tee -a en_US.config ru_RU.config es_ES.config
echo "CONFIG_PESTRIP_CMD= && EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" | tee -a en_US.config ru_RU.config es_ES.config
echo "CONFIG_NO_MSVC=full" | tee -a en_US.config ru_RU.config es_ES.config
echo "CONFIG_INSERT_REVISION_ID=1" | tee -a en_US.config ru_RU.config es_ES.config
tup -v
tup init
- name: Build KolibriOS (en_US)
# Configure en_US
echo "CONFIG_LANG=en_US" >> en_US.config
echo "CONFIG_BUILD_TYPE=en_US" >> en_US.config
tup variant en_US.config
# Configure ru_RU
echo "CONFIG_LANG=ru_RU" >> ru_RU.config
echo "CONFIG_BUILD_TYPE=ru_RU" >> ru_RU.config
tup variant ru_RU.config
# Configure es_ES
echo "CONFIG_LANG=es_ES" >> es_ES.config
echo "CONFIG_BUILD_TYPE=es_ES" >> es_ES.config
tup variant es_ES.config
# -------------------------- Build en_US ------------------------- #
- name: (en_US) Build KolibriOS
run: |
cp tup.config tup.config.en_US
echo "CONFIG_LANG=en_US" >> tup.config.en_US
echo "CONFIG_BUILD_TYPE=en_US" >> tup.config.en_US
export PATH=/home/autobuild/tools/win32/bin:$PATH
tup generate --config tup.config.en_US build-en_US.sh
./build-en_US.sh
source kos32-export-env-vars ${{ gitea.workspace }}
tup build-en_US
- name: Upload floppy image (en_US)
- name: (en_US) Upload floppy image
uses: actions/upload-artifact@v3
with:
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.img
path: data/kolibri.img
path: build-en_US/data/kolibri.img
retention-days: 365
- name: Upload CD image (en_US)
- name: (en_US) Upload CD image
uses: actions/upload-artifact@v3
with:
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.iso
path: data/kolibri.iso
path: build-en_US/data/kolibri.iso
retention-days: 30
- name: Upload raw image (en_US)
- name: (en_US) Upload raw image
uses: actions/upload-artifact@v3
with:
name: kolibrios-en_US-${{ steps.vars.outputs.sha_short }}.raw
path: data/kolibri.raw
path: build-en_US/data/kolibri.raw
retention-days: 7
- name: Build KolibriOS (ru_RU)
# -------------------------- Build ru_RU ------------------------- #
- name: (ru_RU) Build KolibriOS
run: |
git clean -d -x -f -e tup.config
cp tup.config tup.config.ru_RU
echo "CONFIG_LANG=ru_RU" >> tup.config.ru_RU
echo "CONFIG_BUILD_TYPE=ru_RU" >> tup.config.ru_RU
export PATH=/home/autobuild/tools/win32/bin:$PATH
tup generate --config tup.config.ru_RU build-ru_RU.sh
./build-ru_RU.sh
source kos32-export-env-vars ${{ gitea.workspace }}
tup build-ru_RU
- name: Upload floppy image (ru_RU)
- name: (ru_RU) Upload floppy image
uses: actions/upload-artifact@v3
with:
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.img
path: data/kolibri.img
path: build-ru_RU/data/kolibri.img
retention-days: 365
- name: Upload CD image (ru_RU)
- name: (ru_RU) Upload CD image
uses: actions/upload-artifact@v3
with:
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.iso
path: data/kolibri.iso
path: build-ru_RU/data/kolibri.iso
retention-days: 30
- name: Upload raw image (ru_RU)
- name: (ru_RU) Upload raw image
uses: actions/upload-artifact@v3
with:
name: kolibrios-ru_RU-${{ steps.vars.outputs.sha_short }}.raw
path: data/kolibri.raw
path: build-ru_RU/data/kolibri.raw
retention-days: 7
# -------------------------- Build es_ES ------------------------- #
- name: (es_ES) Build KolibriOS
run: |
export PATH=/home/autobuild/tools/win32/bin:$PATH
source kos32-export-env-vars ${{ gitea.workspace }}
tup build-es_ES
- name: (es_ES) Upload floppy image
uses: actions/upload-artifact@v3
with:
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.img
path: build-es_ES/data/kolibri.img
retention-days: 365
- name: (es_ES) Upload CD image
uses: actions/upload-artifact@v3
with:
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.iso
path: build-es_ES/data/kolibri.iso
retention-days: 30
- name: (es_ES) Upload raw image
uses: actions/upload-artifact@v3
with:
name: kolibrios-es_ES-${{ steps.vars.outputs.sha_short }}.raw
path: build-es_ES/data/kolibri.raw
retention-days: 7

View File

@@ -1,41 +0,0 @@
# Code of Conduct
__Code of Conduct__ of __KolibriOS__ project
## Purpose
The primary goal of our community is to be inclusive of a large number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, ability, ethnicity, socioeconomic status, and religion (or lack thereof)
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior
We invite all those who participate in our community to help us create safe and positive experience for everyone
## Expected Behavior
The following behaviors are expected and requested of all community members:
- Exercise consideration and respect in your speech and actions
- Attempt collaboration before conflict
- Refrain from demeaning or discriminatory behavior and speech
- Be mindful of your surroundings and of your fellow participants
Also alert community leaders if you notice a dangerous situation, someone in distress, or violations of this *Code of Conduct*, even if they seem inconsequential
## Unacceptable Behavior
The following behaviors are considered harassment and are unacceptable within our community:
- Threats of violence or violent language directed against another person
- Posting or displaying sexually explicit material
- Personal insults
- Deliberate intimidation, stalking or following
- Advocating for, or encouraging, any of the above behaviors
- Sustained disruption of community events, including talks and presentations
## Reporting Guidelines
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible
## Scope
We expect all community participants (contributors, sponsors and other guests) to abide by this *Code of Conduct* in all community venues as well as in all one-on-one communications pertaining to community business

View File

@@ -1,99 +1,71 @@
# Contributing guide
The __KolibriOS__ project __Contributing__ guide
## Overview
The process of contributing to the project is described in detail in this document.
## Code of Conduct
The first thing to do is to read and follow our [Code of Conduct](./CODE_OF_CONDUCT.md).
## Type of contributing
There are two main types of contributions: submitting issues about problems and submitting pull requests. Each of these types of contributions is described in detail below.
There are two main types of contributions accepted to the main KolibriOS repository:
- Submitting issues about problems in the project
- Submitting code to the project via pull requests
Both these types are described in detail below.
## Issues
You can help us by submitting issues to repository. At the moment there are 2 main ways of submitting an issue in the project: _bug reports_ and _feature requests_. All existing forms are provided with brief explanations
You can help us by submitting issues about problems found in the system. Currently, there are two main ways of submitting an issue in the project: **Bug Reports** and **Feature Requests**:
- Reports are suitable if you find a __bug__ in some part of the project and want to create a report;
- Also there is a possibility submit a __feature request__ if it seems to you that the project lacks any feature.
- Bug Reports are suitable if you find a **bug** (crash, error, unexpected behavior) in some part of the system (kernel, drivers, apps, etc.) and want to report it
- Feature Requests are used, when you want to propose some **improvement** to the system (missing features, improved user experience, etc.)
## Pull requests
You can also help us by submitting pull requests. The process of submitting a pull request consists of several steps:
You can also help us by submitting code via pull requests. The process of submitting a pull request consists of the following steps:
- Find what you want to implement or improve;
- Make a fork (not relevant for owners);
- Create a branch with a name that matches your changes;
- Make and test the changes;
- Create commits according to the [accepted style](##commit-style);
- Create and submit a pull request;
- Wait for CI/CD pipelines and code review to pass.
1. Find what you want to implement or improve
2. Make a fork of kolibrios (or other needed) repository
3. Create a branch with a name that matches your changes
4. Implement and test the changes
5. Create commits according to the [accepted style](#commit-style)
6. Create and submit a pull request into `main` branch
7. Wait for CI/CD pipelines and code review to pass
When a pull request is submitted, at least two project participants must conduct a code review, after which the changes are corrected (if it's necessary) and merged into the project.
When a pull request is submitted, at least two project participants must conduct a code review, after which the proposed changes need to be corrected (if requested) and merged into the project.
## Commit style
### Naming
### Message pattern
- Pattern
The commit message should look like this:
Regular commit message should consist of several parts and be built according to the following template:
```test
Commit message header
```test
Category: Commit message body
Commit message body, if needed
```
Long description if necessary
```
- Commit message header and body should reflect changes made in commit
- Commit message body should be separated from the header by one empty line
- Commit message body and description should briefly reflect the meaning of the commit changes;
- Commit message body should be written starting with a capital letter;
- Description should be separated from the body by one empty line.
### Length
- Length
Maximum number of characters in a commit header is **72** (standard for **Git**). Also, **72** is the maximum length of a line in a commit body.
The maximum number of characters in a commit header is __72__ (standard for __Git__). Additionally, __72__ is the maximum length of a line in a commit body.
### Multiple authors
- Categories
If you are making a commit together with another developer, you need to add:
List of existing categories accepted in the project:
```
Co-authored-by: ANOTHER-NAME <ANOTHER-NAME@EXAMPLE.COM>
```
- `Krn` - kernel
- `Drv` - drivers
- `Libs` - libraries
- `Skins` - skins
- `Build` - build system
- `CI/CD` - CI/CD
- `Docs` - documentation
- `Data` - images, configs, resources, etc.
List of categories for exceptional situations:
- `All` - global changes
- `Other` - unclassifiable changes
If changes are made to a specific component, the name of the component separated by `/` character needs to be specified. For example:
```text
Apps/shell
Libs/libimg
```
to the end commit message body on a new line.
### Merge commits
Merge commits are __prohibited__ in the project
> [!WARNING]
> Merge commits are **prohibited** in the project
### Unwanted commits
Use **rebase** to keep your branch up to date.
Commit messages like `Refactoring`/`Update files` are __unwanted__ in the project
## Conclusion
### Signing
This is not a requirement, but it is strongly recommended to sign commits. This can be done by the following command:
```sh
git commit -s
```
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.

338
COPYING.TXT Normal file
View File

@@ -0,0 +1,338 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
<https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Moe Ghoul>, 1 April 1989
Moe Ghoul, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@@ -1,22 +1,22 @@
# KolibriOS
[![License](https://img.shields.io/badge/License-GPL%202.0-green)](./COPYING.TXT)
[![Build system](https://git.kolibrios.org/KolibriOS/kolibrios/actions/workflows/build.yaml/badge.svg)](https://git.kolibrios.org/KolibriOS/kolibrios/actions/workflows/build.yaml)
[![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, its kernel is written entirely in [Fasm](https://flatassembler.net/) assembly language. Based on [MenuetOS](https://www.menuetos.net/), it uses its own standards and is not fully POSIX or UNIX compliant
KolibriOS is a hobby operating system for x86-compatible computers, which is currently being developed by a small but passionate team of enthusiasts.
Its kernel, most drivers, and many programs are written entirely in [FASM](https://flatassembler.net/) assembly language, making them very compact and lean on system resources.
Based on [MenuetOS](https://www.menuetos.net/), it uses its own standards and is NOT fully POSIX or UNIX compliant.
## Contributing
Detailed instructions for the contribution process can be found in the [contributing guide](./CONTRIBUTING.md)
We would appreciate any participation in the project and always welcome new users and contributors.
Also there is an accepted [code of conduct](./CODE_OF_CONDUCT.md) in the project
Detailed instructions for the contribution process can be found in the [contributing guide](./CONTRIBUTING.md).
Common list of project tasks is located on [this page](https://git.kolibrios.org/KolibriOS/kolibrios/issues).
Common list of tasks, issues and enhancement proposals can be found on [this page](https://git.kolibrios.org/KolibriOS/kolibrios/issues).
## Special thanks
The KolibriOS team expresses special thanks to the author of the 32-bit __MenuetOS__, [Ville Turjanmaa](https://www.menuetos.net/contact.htm). We also want to note that all __MenuetOS__ copyrights have been preserved
## License
Contents of this repository are licensed under the terms of __GNU GPL 2.0__ unless otherwise specified. See [this](COPYING.TXT) file for details
The KolibriOS team expresses special thanks to the author of the 32-bit **MenuetOS**, [Ville Turjanmaa](https://www.menuetos.net/contact.htm). We also want to note that all **MenuetOS** copyrights have been preserved.

View File

@@ -85,6 +85,7 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
{"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"},
{"SETTINGS/SYSPANEL.INI", "ru_RU/settings/syspanel.ini"},
}) elseif build_type == "en_US" then tup.append_table(img_files, {
{"WELCOME.HTM", VAR_DATA .. "/" .. build_type .. "/welcome.htm.kpack"},
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
@@ -156,7 +157,7 @@ extra_files = {
{"kolibrios/3D/info3ds/OBJECTS.PNG", SRC_PROGS .. "/develop/info3ds/objects.png"},
{"kolibrios/3D/info3ds/TOOLBAR.PNG", SRC_PROGS .. "/develop/info3ds/toolbar.png"},
{"kolibrios/3D/info3ds/FONT8X9.BMP", SRC_PROGS .. "/fs/kfar/trunk/font8x9.bmp"},
{"kolibrios/3D/blocks/", "../programs/bcc32/games/blocks/bin/*"},
{"kolibrios/3D/blocks/blocks.kex", "../programs/bcc32/games/blocks/bin/blocks.kex"},
{"kolibrios/3D/blocks/models/", "../programs/bcc32/games/blocks/models/*"},
{"kolibrios/3D/md2view/", "common/3d/md2view/*"},
{"kolibrios/3D/md2view/md2_model/", "common/3d/md2view/md2_model/*"},
@@ -289,6 +290,7 @@ extra_files = {
{"kolibrios/res/templates/NES/", "common/templates/NES/*"},
{"kolibrios/res/wallpapers/", "common/wallpapers/*"},
{"kolibrios/res/system/", build_type .. "/settings/kolibri.lbl"},
{"kolibrios/res/system/", "common/signs.png"},
{"kolibrios/utils/vmode", "common/vmode"},
{"kolibrios/utils/texture", "common/utils/texture"},
{"kolibrios/utils/cnc_editor/cnc_editor", VAR_PROGS .. "/other/cnc_editor/cnc_editor"},
@@ -456,14 +458,14 @@ tup.append_table(img_files, {
{"DEMOS/BCDCLK", VAR_PROGS .. "/demos/bcdclk/trunk/bcdclk"},
{"DEMOS/BUDHBROT", VAR_PROGS .. "/demos/buddhabrot/trunk/buddhabrot"},
{"DEMOS/EYES", VAR_PROGS .. "/demos/eyes/trunk/eyes"},
{"DEMOS/FIREWORK", VAR_PROGS .. "/demos/firework/trunk/firework"},
{"DEMOS/MOVBACK", VAR_PROGS .. "/demos/movback/trunk/movback"},
{"DEMOS/PLASMA", VAR_PROGS .. "/demos/plasma/trunk/plasma"},
{"DEMOS/FIREWORK", VAR_PROGS .. "/demos/firework/firework"},
{"DEMOS/MOVBACK", VAR_PROGS .. "/demos/movback/movback"},
{"DEMOS/PLASMA", VAR_PROGS .. "/demos/plasma/plasma"},
{"DEMOS/SPIRAL", VAR_PROGS .. "/demos/spiral/spiral"},
{"DEMOS/TINYFRAC", VAR_PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
{"DEMOS/TRANTEST", VAR_PROGS .. "/demos/trantest/trunk/trantest"},
{"DEMOS/TUBE", VAR_PROGS .. "/demos/tube/trunk/tube"},
{"DEMOS/UNVWATER", VAR_PROGS .. "/demos/unvwater/trunk/unvwater"},
{"DEMOS/TUBE", VAR_PROGS .. "/demos/tube/tube"},
{"DEMOS/UNVWATER", VAR_PROGS .. "/demos/unvwater/unvwater"},
{"DEMOS/WEB", VAR_PROGS .. "/demos/web/trunk/web"},
{"DEMOS/ZEROLINE", VAR_PROGS .. "/demos/zeroline/trunk/zeroline"},
{"DEVELOP/BOARD", VAR_PROGS .. "/system/board/trunk/board"},
@@ -474,6 +476,7 @@ tup.append_table(img_files, {
{"DEVELOP/ENTROPYV", VAR_PROGS .. "/develop/entropyview/entropyview"},
{"DEVELOP/FASM", VAR_PROGS .. "/develop/fasm/1.73/fasm"},
{"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"},
{"DEVELOP/PIPET", VAR_PROGS .. "/other/pipet/pipet"},
{"DEVELOP/H2D2B", VAR_PROGS .. "/develop/h2d2b/trunk/h2d2b"},
{"DEVELOP/HEED", VAR_PROGS .. "/develop/heed/trunk/heed"},
{"DEVELOP/MTDBG", VAR_PROGS .. "/develop/mtdbg/mtdbg"},
@@ -484,7 +487,6 @@ tup.append_table(img_files, {
{"DEVELOP/EXAMPLES/CONGET", VAR_PROGS .. "/develop/libraries/console_coff/examples/test_gets"},
{"DEVELOP/EXAMPLES/CSLIDE", VAR_PROGS .. "/demos/cslide/trunk/cslide"},
{"DEVELOP/EXAMPLES/THREAD", VAR_PROGS .. "/develop/examples/thread/trunk/thread"},
{"DEVELOP/EXAMPLES/USE_MB", VAR_PROGS .. "/demos/use_mb/use_mb"},
{"File Managers/KFAR", VAR_PROGS .. "/fs/kfar/trunk/kfar"},
{"File Managers/OPENDIAL", VAR_PROGS .. "/fs/opendial/opendial"},
{"LOD", VAR_PROGS .. "/fs/lod/lod"},
@@ -629,17 +631,18 @@ tup.append_table(extra_files, {
{"kolibrios/utils/calcplus", VAR_PROGS .. "/other/calcplus/calcplus"},
{"kolibrios/utils/kfm/kfm", VAR_PROGS .. "/fs/kfm/trunk/kfm"},
{"kolibrios/utils/tedit/t_edit", VAR_PROGS .. "/other/t_edit/t_edit"},
{"kolibrios/3D/blocks/block.bin", VAR_PROGS .. "/bcc32/games/blocks/block.bin"}
})
-- For russian build, add russian-only programs.
if build_type == "ru_RU" then tup.append_table(img_files, {
{"PERIOD", VAR_PROGS .. "/other/period/trunk/period"},
{"GAMES/KLAVISHA", VAR_PROGS .. "/games/klavisha/klavisha"},
{"DEVELOP/EXAMPLES/TESTCON2", VAR_PROGS .. "/develop/libraries/console_coff/examples/testcon2_rus"},
}) else tup.append_table(img_files, {
{"DEVELOP/TESTCON2", VAR_PROGS .. "/develop/libraries/console_coff/examples/testcon2_eng"},
{"DEVELOP/EXAMPLES/TESTCON2", VAR_PROGS .. "/develop/libraries/console_coff/examples/testcon2_eng"},
}) end
if build_type == "ru_RU" then tup.append_table(extra_files, {
{"kolibrios/utils/period", VAR_PROGS .. "/other/period/trunk/period"},
{"kolibrios/games/Dungeons/Dungeons", VAR_PROGS .. "/games/Dungeons/Dungeons"},
}) end
@@ -665,15 +668,14 @@ tup.append_table(img_files, {
{"EASYSHOT", VAR_PROGS .. "/cmm/misc/easyshot.com"},
{"MOUSECFG", VAR_PROGS .. "/cmm/mousecfg/mousecfg.com"},
{"BARSCFG", VAR_PROGS .. "/cmm/barscfg/barscfg.com"},
{"SEARCH", VAR_PROGS .. "/cmm/misc/search.com"},
{"SYSPANEL", VAR_PROGS .. "/cmm/misc/software_widget.com"},
{"SYSMON", VAR_PROGS .. "/cmm/sysmon/sysmon.com"},
{"TMPDISK", VAR_PROGS .. "/cmm/tmpdisk/tmpdisk.com"},
{"DEVELOP/CLIPVIEW", VAR_PROGS .. "/cmm/clipview/clipview.com"},
{"DEVELOP/MENU", VAR_PROGS .. "/cmm/menu/menu.com"},
{"DEVELOP/PIPET", VAR_PROGS .. "/cmm/misc/pipet.com"},
{"File Managers/EOLITE", VAR_PROGS .. "/cmm/eolite/Eolite.com"},
{"File Managers/KFM2", VAR_PROGS .. "/cmm/misc/kfm2.com"},
{"KF_VIEW", VAR_PROGS .. "/cmm/kf_font_viewer/font_viewer.com"},
{"DEVELOP/DIFF", VAR_PROGS .. "/cmm/diff/diff.com"},
{"GAMES/CLICKS", VAR_PROGS .. "/games/clicks/clicks.com"},
{"GAMES/MBLOCKS", VAR_PROGS .. "/cmm/misc/mblocks.com"},
@@ -892,10 +894,6 @@ for i,v in ipairs(img_files) do
str = string.gsub(str, "%%", "%%%%") -- escape % as %%
cmd += " && str=" .. str
cmd += ' && echo -n $str | dd status=none of=%o bs=1 seek=`expr 274 - length "$str"` conv=notrunc'
str2='$(get-current-cmtid|grep -oE "\\+[0-9]+")'
str2 = string.gsub(str2, "%$", "\\$") -- escape $ as \$
cmd += " && str2=" .. str2
cmd += ' && echo -n $str2 | dd status=none of=%o bs=1 seek=216 conv=notrunc'
end
local_file = VAR_KERNEL .. "/.kernel.mnt"
tup.definerule{inputs = {v[2]}, command = cmd, outputs = {local_file}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 B

After

Width:  |  Height:  |  Size: 700 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -79,7 +79,7 @@ next=$TextEditor
[Assoc]
/=/sys/file managers/eolite
kf=/sys/KF_VIEW
kf=/sys/syspanel
txt=$CodeEdit
log=$CodeEdit

BIN
data/common/signs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

2
data/en_US/Tupfile.lua Normal file
View File

@@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("welcome.htm", "cp %f %o" .. tup.getconfig("KPACK_CMD"), "welcome.htm.kpack")

View File

@@ -1,14 +1,16 @@
The following "hot" shortcut keys are used in the system:
(Indexing on time of appearance in the system)
1) Ctrl + Alt + Del start of the application CPU (the manager of processes), is a sole combination maintained on a level of a kernel, all rest "hot" key is realized at the expense of the application @TASKBAR.
2) Ctrl + Shift - switching of keyboard layout.
3) Win - start of the application MENU.
4) Alt + Ctrl + F12 - start of the application END.
5) Alt + F4 - terminate the active application.
6) Alt + Tab - switch to the next (in the window stack) window
7) Alt + Shift + Tab - switch to the previous (in the window stack) window
2) Ctrl + Shift - switching of keyboard layout
3) Win - start of the application MENU
4) Alt + Ctrl + F12 - start of the application END
5) Alt + F4 - terminate the active application
6) Alt + Tab - switch to the next window
7) Alt + Shift + Tab - switch to the previous window
8) Alt + Shift + NumLock - start of the application MOUSEMUL, which emulates mouse with numpad, when NumLock is on.
9) Alt + 1...7 - fast switching to the selected keyboard layout (even if absent for Ctrl + Shift)
10) Win + D - minimize/restore all windows (cleaning of desktop)
10) Win + D - minimize/restore all windows
11) Win + R - start of the application RUN
12) Ctrl + PrintScreen - start of the application SCRSHOOT. Just do a screen shot and the user is offered to specify (with OpenDialog) where to save the BMP image.
12) Ctrl + PrintScreen - start of the application SCRSHOOT
13) Ctrl + Alt + Left / Right - change sound volume
Ctrl + Alt + Up / Down - mute and unmute sound

View File

@@ -12,6 +12,7 @@
23 Game Center |allgames
60 System panel |syspanel
18 Documentation |docpack
49 Search |search
53 Run |run
04 Shut down |end
#1 **** DEMOS

95
data/en_US/welcome.htm Normal file
View File

@@ -0,0 +1,95 @@
<html>
<title>Welcome notes</title>
<body bgcolor=#fff>
<h1>
<font color=1BB71A>Welcome to KolibriOS</font>
</h1>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">
Dear friends,
What you see now is the most compact operating system in the whole world. KolibriOS is a piece of programming art that is based on logic and coffee.
As no one reads manuals, I'm here to help with the most common issues that new users of KolibriOS are facing. This document is also required to read for any <b>YouTube blogger</b> who wants to make a review of the system :)
<dd><h3><kosicon n=5> Floppy version</h3>
The asterisk [*] in the Menu means the app isn't available in the Floppy version, only in the Big distro (Flash/ISO/UEFI-HDD). Not all programs are available via Menu to encourage you to explore KolibriOS files by yourself.
<h3><kosicon n=25> If you have problems with USB</h3>
Only USB 1.1 and USB 2.0 ports are supported, not USB 3+. And yep, the USB driver is written entirely in assembler. Some motherboards have options like "USB Legacy Support" or something similar, which may help the system detect your device. Also, some ports on your motherboard may work while others may not, only G-d knows why. So, play with the BIOS/UEFI settings and try different ports.
<h3><kosicon n=7> Sound</h3>
List of supported devices:
- Most AC97 cards: Intel, nForce, VIA
- A variety of HD Audio devices: Intel, Realtek...
- SIS PCI audio (Sis 7012)
- Creative labs EMU10K1X (Dell OEM)
- Media Forte FM801
- ISA Sound Blaster 16
<i>Only THIS particular model works,
not other cards that have software SB16-emulation</i>
<h3><kosicon n=61> Video</h3>
By default, you can change the resolution only on the blue boot screen. The modes listed there are provided by the video card's BIOS. It is impossible to 'simply add additional screen modes to the list'. If video card's BIOS doesn't provide some modes then you need a driver. It is not possible to write a generic video card driver. Separate driver must be written for each specific video card model.
Intel and AMD drivers for some video cards are ported from Linux and are available in the Big distro.
Check SYSPANEL. Features: ability to change resolution in KolibriOS, hardware cursor (not actual anymore), bit-blit operations acceleration.
<h3><kosicon n=25> Wi-Fi</h3>
Not supported. You have to know that the Wi-Fi specification is so complex that it is almost impossible to write the code for it from scratch. Only big OSes like Windows / Linux / BSD have it. MacOS and Haiku just ported the BSD drivers. I don't say porting them to KolibiOS is not possible, but the required effort is going to be tremendous.
<h3><kosicon n=25> LAN/Ethernet</h3>
List of supported devices:
- 3c59x 3Com Fast EtherLink (3c59x/450/555/556/575/900/905/980)
- ar81xx Atheros 8131/8132/8151/8152/8161/8162/8171/8172
Killer E2200/E2400/E2500
- dec21x4x* Accton en1207B-TX, DEC 21140, ..., VirtualPC
- forcedeth* Nvidia nForce chipset integrated Ethernet
- i8255x Intel eepro/100 (i8255x, i82562, i82801, ...), QEMU
- i8254x Intel PRO/1000 (i8254x), Virtualbox, BOCHS, QEMU
- mtd80x Myson MTD803
- pcnet32 AMD PCnet (79c970, 79c978, 79c973, ...), Virtualbox, QEMU
- r6040 RDC Semiconductors R6040
- rhine VIA Rhine II and III
- rtl8029 Realtek 8029/8019, ne2000 PCI, BOCHS, QEMU
- rtl8139 Realtek 8139 and clones, QEMU
- rtl8169 Realtek 8110/8111/8167/8168/8169
- sis900 SiS900, 7016
* - in development
Blessed be our Flemish friend Jeffrey, who has written most of the Network staff by him: stack, drivers, and a lot of apps (except WebView).
<h3><kosicon n=12> WebView</h3>
It was never intended to be a browser, but rather a Help Center that uses HTML markup. It fits this purpose well, doesn't it? According to current WebView's codebase (that was my first app ever) it will never become a normal web browser. Please help us and write/port something good. For example, it will be nice try to finish Netsurf port.
<h3><kosicon n=9> How did you achieve so much while being so small?</h3>
- Kernel, almost all drivers and most applications are written in assembly language
- Files in IMG are packed via the LZMA algorithm from 7-Zip. They are unpacked to RAM when accessed
- Most of the images are manually optimized: posterization, dithering and other techniques were used
- Files names in IMG fit 8.3 naming convention (name.extension) which doesn't use additional FAT12 space
- Image files are combined into a single file
- Compact binary header of applications, no sections
- Resources are reused, and file duplication is avoided, for example:
~ Many apps use shared libraries
~ KFM2 and Eolite are a single app, just with different appearance
~ APP+, Games Center and System Panel are a single app also
~ Memory Blocks game uses system icons as images
See more <a href=http://wiki.kolibrios.org/wiki/Hardware_Support>http://wiki.kolibrios.org/wiki/Hardware_Support</a>
</dd>
<h3><kosicon n=13> Last words</h3>
<font bg=#F9F0A3>We want to express our gratitude to every KolibriOS contributor. Also, we would like to give special thanks to Ville M. Turjanmaa, the author of MenuetOS, the predecessor of our system.
Finally, we want to thank you, brave and curious users, as we are doing it all for you!
Have fun!</font>
Sincerely yours,
KolibriOS Team
<img src=/kolibrios/res/system/signs.png alt="You have to use Big Distro to see this image!">
<!-- Somewhere deep in the Galaxy stars light up and go out, empires are born and turn to dust. In this impenetrable darkness and decadence, there are people who are still working on KolibriOS. Many years will pass and perhaps you and I will no longer be here, and our great-grandchildren will ask "Who were those insane who made such an incredible OS?" -->

View File

@@ -1,14 +1,16 @@
The following "hot" shortcut keys are used in the system:
(Indexing on time of appearance in the system)
1) Ctrl + Alt + Del start of the application CPU (the manager of processes), is a sole combination maintained on a level of a kernel, all rest "hot" key is realized at the expense of the application @TASKBAR.
2) Ctrl + Shift - switching of keyboard layout.
3) Win - start of the application MENU.
4) Alt + Ctrl + F12 - start of the application END.
5) Alt + F4 - terminate the active application.
6) Alt + Tab - switch to the next (in the window stack) window
7) Alt + Shift + Tab - switch to the previous (in the window stack) window
2) Ctrl + Shift - switching of keyboard layout
3) Win - start of the application MENU
4) Alt + Ctrl + F12 - start of the application END
5) Alt + F4 - terminate the active application
6) Alt + Tab - switch to the next window
7) Alt + Shift + Tab - switch to the previous window
8) Alt + Shift + NumLock - start of the application MOUSEMUL, which emulates mouse with numpad, when NumLock is on.
9) Alt + 1...7 - fast switching to the selected keyboard layout (even if absent for Ctrl + Shift)
10) Win + D - minimize/restore all windows (cleaning of desktop)
10) Win + D - minimize/restore all windows
11) Win + R - start of the application RUN
12) Ctrl + PrintScreen - start of the application SCRSHOOT. Just do a screen shot and the user is offered to specify (with OpenDialog) where to save the BMP image.
12) Ctrl + PrintScreen - start of the application SCRSHOOT
13) Ctrl + Alt + Left / Right - change sound volume
Ctrl + Alt + Up / Down - mute and unmute sound

View File

@@ -13,6 +13,7 @@
16 Centro de juegos |allgames
60 System panel |syspanel
18 Ayuda |docpack
49 Buscar |search
53 Ejecutar aplicaci<63>n |run
04 Apagar |end
#1 **** DEMOS

View File

@@ -1,14 +1,16 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>騥 "<22><><EFBFBD><EFBFBD>稥" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>:
(<28><EFBFBD><E3ACA5><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E0A5AC><EFBFBD> <20><><EFBFBD><EFA2AB><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>)
1) Ctrl + Alt + Del <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CPU (<28><><EFBFBD><E1AFA5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ), <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A2A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A6A0><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E0AEA2> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><>⠫쭮<E2A0AB><><E0A5A0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> @TASKBAR.
2) Ctrl + Shift - <20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><><EFBFBD><E1AAAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
3) Win - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MENU.
4) Alt + Ctrl + F12 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> END.
5) Alt + F4 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A5AD> <20><><EFBFBD><E2A8A2><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
6) Alt + Tab - <20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><><><E1ABA5><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>) <20><><EFBFBD><EFBFBD>
7) Alt + Shift + Tab - <20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><> <20><EFBFBD><E0A5A4><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD>) <20><><EFBFBD><EFBFBD>
2) Ctrl + Shift - <20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><><EFBFBD><E1AAAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
3) Win - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MENU
4) Alt + Ctrl + F12 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> END
5) Alt + F4 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A5AD> <20><><EFBFBD><E2A8A2><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
6) Alt + Tab - <20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><><><E1ABA5><EFBFBD><20><><EFBFBD><EFBFBD>
7) Alt + Shift + Tab - <20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><> <20><EFBFBD><E0A5A4><EFBFBD><20><><EFBFBD><EFBFBD>
8) Alt + Shift + NumLock - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MOUSEMUL, <20><><EFBFBD><E3ABA8><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>񭭮<EFBFBD> NumLock <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E3ACAF><EFBFBD>
9) Alt + 1...7 - <20><><EFBFBD><EFBFBD><20><><EFBFBD><E0A5AA><EFBFBD><E7A5AD> <20><> <20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD> <20><><EFBFBD><E1AAAB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Ctrl + Shift)
10) Win + D - ᢥ<><E1A2A5><EFBFBD><EFBFBD><EFBFBD>/ࠧ<><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>⪠ ࠡ<><EFBFBD> <20><EFBFBD>)
10) Win + D - ᢥ<><E1A2A5><EFBFBD><EFBFBD><EFBFBD>/ࠧ<><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
11) Win + R - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RUN
12) Ctrl + PrintScreen - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCRSHOOT. <20><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ADA8><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><ECA7AE><EFBFBD> <20><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E3AAA0><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OpenDialog, <20><20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><><E1ADA8><EFBFBD> <20> <20><><EFBFBD><E0ACA0> BMP.
12) Ctrl + PrintScreen - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCRSHOOT
13) Ctrl + Alt + Left / Right - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEAC><EFBFBD><EFBFBD><EFBFBD>
Ctrl + Alt + Up / Down - <20><EFBFBD><EBAAAB><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>

View File

@@ -12,6 +12,7 @@
23 <20><><EFBFBD><E0AEA2><><E6A5AD> |allgames
60 <20><><EFBFBD><EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |syspanel
18 <20><><EFBFBD><EFBFBD><E3ACA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |docpack
49 <20><><EFBFBD><EFBFBD><EFBFBD> |search
53 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> |run
04 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8A5AD><><E0A0A1><EFBFBD> |end
#1 **** 2D <20><><EFBFBD><EFBFBD><EFBFBD>
@@ -118,7 +119,7 @@
45 <20><><EFBFBD><EFBFBD><20><><EFBFBD><E0A8AD><EFBFBD><EFBFBD><EFBFBD> |easyshot
29 FB2 <20><><EFBFBD><E2A0AB> |fb2read
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> |period
21 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |/kolibrios/utils/period
59 <20><EFBFBD><E0A5AD><EFBFBD><EFBFBD> KJ|ABuIIIA |games/klavisha
16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> |demos/bcdclk
53 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |timer

View File

@@ -3,10 +3,25 @@ HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../programs" or tup.getco
tup.include(HELPERDIR .. "/use_fasm.lua")
add_include(tup.getvariantdir())
-- environment variables
tup.import("KOLIBRIOS_BUILD_OFFSET") -- 1234
tup.import("KOLIBRIOS_BUILD_CMTID") -- 0xaabbccdd
tup.import("KOLIBRIOS_BUILD_DBGTAG") -- 0x61 for 'a', etc
str_build = ""
if KOLIBRIOS_BUILD_OFFSET then
str_build += " -dBUILD_OFFSET=" .. KOLIBRIOS_BUILD_OFFSET
end
if KOLIBRIOS_BUILD_CMTID then
str_build += " -dBUILD_CMTID=" .. KOLIBRIOS_BUILD_CMTID
end
if KOLIBRIOS_BUILD_DBGTAG then
str_build += " -dBUILD_DBGTAG=" .. KOLIBRIOS_BUILD_DBGTAG
end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en_US" or tup.getconfig("LANG")) .. " > %o", {"lang.inc"})
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o " .. tup.getconfig("KERPACK_CMD"), "kernel.mnt")
--tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o -s %o.fas" .. tup.getconfig("KERPACK_CMD"), {"kernel.mnt", extra_outputs = {"kernel.mnt.fas"}})
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o -s %o.fas" .. str_build .. tup.getconfig("KERPACK_CMD"), {"kernel.mnt", extra_outputs = {"kernel.mnt.fas"}})
--tup.rule({"kernel.mnt.fas", extra_inputs = {"kernel.mnt"}}, "symbols %f %o", "kernel.mnt.sym")
--tup.rule({"kernel.mnt.fas", extra_inputs = {"kernel.mnt"}}, "listing %f %o", "kernel.mnt.lst")
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o -dextended_primary_loader=1" .. tup.getconfig("KERPACK_CMD"), "kernel.mnt.ext_loader")
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o -dpretest_build=1 -ddebug_com_base=0xe9", "kernel.mnt.pretest")
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o " .. str_build .. " -dextended_primary_loader=1 " .. tup.getconfig("KERPACK_CMD"), "kernel.mnt.ext_loader")
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o " .. str_build .. " -dpretest_build=1 -ddebug_com_base=0xe9", "kernel.mnt.pretest")

View File

@@ -28,36 +28,42 @@ macro line_space {
db 186
}
d80x25_top:
line_full_top
if __REV__ > 0
line_full_top
; draw seven digits of the git hash
__x = BUILD_CMTID
if __x > 0
__x = __x SHR 4
cur_line_pos = 75
store byte ' ' at d80x25_top+cur_line_pos+1
rev_var = __REV__
while rev_var > 0
store byte rev_var mod 10 + '0' at d80x25_top+cur_line_pos
cur_line_pos = cur_line_pos - 1
rev_var = rev_var / 10
end while
store byte ' ' at d80x25_top+cur_line_pos
store dword ' SVN' at d80x25_top+cur_line_pos-4
store byte ' ' at d80x25_top+cur_line_pos+1
repeat 7
digit = __x AND 0xf
if digit > 9
digit = digit - 10 + 'a'
else
digit = digit + '0'
end if
store byte digit at d80x25_top+cur_line_pos
cur_line_pos = cur_line_pos - 1
__x = __x SHR 4
end repeat
store byte ' ' at d80x25_top+cur_line_pos
store dword ' GIT' at d80x25_top+cur_line_pos-4
end if
space_msg:
line_space
line_space
verstr:
; line_space
; version string
db 186,32
repeat 78
load a byte from kernel_header.signature+%-1
if a = 13
break
end if
db a
end repeat
repeat 78 - ($-verstr)
db ' '
end repeat
db 32,186
line_half
db 186,32
repeat 78
load a byte from kernel_header.signature+%-1
if a = 13
break
end if
db a
end repeat
repeat 78 - ($-verstr)
db ' '
end repeat
db 32,186
line_half
d80x25_top_num = 4

View File

@@ -24,9 +24,38 @@ org 0
; struct kernel_header
jmp start_of_code ; jump
db 'KolibriOS ' ; signature
db 'v0.7.7.0 ',13,10,13,10,0 ; FIXME: get distribution version from git tag
db 'v0.7.7.0' ; FIXME: get distribution version from git tag?
.offset db ' ',13,10,0
dd B32-KERNEL_BASE ; offset of the kernel's 32-bit entry point
cur_line_pos = 0
offset_len = 0
__x = BUILD_OFFSET
if __x > 0
store byte '+' at .offset+cur_line_pos
if __x < 10
offset_len = 2 ; '+' and a digit
else if __x < 100
offset_len = 3
else if __x < 1000
offset_len = 4
else if __x < 10000
offset_len = 5
else
offset_len = 6
end if
cur_line_pos = cur_line_pos + offset_len - 1
while __x > 0
store byte __x mod 10 + '0' at .offset+cur_line_pos
cur_line_pos = cur_line_pos - 1
__x = __x / 10
end while
end if
if BUILD_DBGTAG > 0
store byte '-' at .offset+offset_len
store byte BUILD_DBGTAG at .offset+offset_len+1
end if
include "boot/bootstr.inc" ; language-independent boot messages
include "boot/preboot.inc"

View File

@@ -227,6 +227,33 @@ struct kernel_header
; KERNEL.MNT file can be booted on BIOS as well as on UEFI.
ends
struct kernel_version
; OS release number, e.g. 0,7,7,0. Distro-specific.
osrel rb 4
; A single char like 'a' to append to the version, or 0 to omit it.
; 0 means 0.7.7.0+1234, 'a' means 0.7.7.0+1234-a, etc.
; This allows developers to determine the debug build by its log.
; Unfortunately, users sometimes mess things and test not the build they
; were asked to test.
dbgtag db ?
; The kernel itself doesn't have any version other than its ABI version.
; The minor and major parts were meant to mean significant compatible
; and incompatible changes correspondingly. It is for a developer to
; decide on what is a significant change.
abimin db ?
; The major ABI version must be at least 0x28 for backward compatibility
; with the old revision number: 0x2800 = 10240 > the last SVN revision.
abimaj dw ?
; In binary, e.g. a short git hash. A single dword is 8 digits which
; should be enough for the foreseeable future. We always can get space
; for four more digits from the two reserved bytes below if needed.
cmtid dd ?
reserved dw ?
; The number of commits from the last release.
offset dw ?
ends
assert sizeof.kernel_version = 16
DRIVE_DATA_SIZE = 16
OS_BASE = 0x80000000

View File

@@ -970,13 +970,21 @@ picture rb Xsize*Ysize*4 ; 32 бита
размером 16 байт для будущей совместимости, в будущем могут быть
добавлены некоторые поля.
Структура буфера:
db a,b,c,d для версии a.b.c.d
db 0: зарезервировано
dd REV - номер svn-ревизии ядра
Для ядра Kolibri 0.7.7.0+:
db a,b,c,d для версии ОС a.b.c.d
db отладочная метка, для релиза всегда 0, иначе любой символ ASCII
db младшая часть ABI ядра
dw старшая часть ABI ядра
dd идентификатор коммита, например краткий git-хэш в бинарном виде
dw зарезервировано
dw количество коммитов с момента последнего релиза
Пример структуры для ядра Kolibri 0.7.7.0+:
db 0,7,7,0
db 0
dd 1675
db 0
dw 40
dd 0xf26d5b28
dw 0
dw 1675
---------------------- Константы для регистров: ----------------------
eax - SF_SYSTEM (18)

View File

@@ -962,13 +962,21 @@ Remarks:
16 byte buffer for the future compatibility, in the future
some fields can be added.
Structure of the buffer:
db a,b,c,d for version a.b.c.d
db 0: reserved
dd REV - kernel SVN revision number
For Kolibri 0.7.7.0+ kernel:
db a,b,c,d for os version a.b.c.d
db debug tag, 0 for release, any ASCII char otherwise
db kernel ABI minor
dw kernel ABI major
dd commit id, e.g. short git hash in binary
dw reserved
dw the number of commits since the latest release
For Kolibri 0.7.7.0+ the structure is like this:
db 0,7,7,0
db 0
dd 1675
db 0
dw 40
dd 0xf26d5b28
dw 0
dw 1675
---------------------- Constants for registers: ----------------------
eax - SF_SYSTEM (18)

View File

@@ -30,6 +30,8 @@ format binary as "mnt"
include 'macros.inc'
include 'struct.inc'
ABI_MAJOR = 0x28
ABI_MINOR = 0
USE_COM_IRQ = 1 ; make irq 3 and irq 4 available for PCI devices
VESA_1_2_VIDEO = 0 ; enable vesa 1.2 bank switch functions
@@ -711,10 +713,33 @@ end if
;-----------------------------------------------------------------------------
; show SVN version of kernel on the message board
; show OS version, offset, debug tag and commit id on the message board
;-----------------------------------------------------------------------------
mov eax, [version_inf.rev]
DEBUGF 1, "K : kernel SVN r%d\n", eax
mov eax, version_inf.osrel
DEBUGF 1, "K : OS version: %u.%u.%u.%u", [eax+0]:1, [eax+1]:1, \
[eax+2]:1, [eax+3]:1, ecx
movzx ecx, [version_inf.offset]
jecxz @f
DEBUGF 1, "+%u", ecx
@@:
movzx ecx, [version_inf.dbgtag]
jecxz @f
push ecx
mov ecx, esp
DEBUGF 1, "-%s", ecx
pop ecx
@@:
DEBUGF 1, "\n"
mov ecx, [version_inf.cmtid]
jecxz @f
DEBUGF 1, "K : Commit ID: %x\n", ecx
@@:
;-----------------------------------------------------------------------------
; show kernel ABI
;-----------------------------------------------------------------------------
movzx eax, [version_inf.abimaj]
movzx ecx, [version_inf.abimin]
DEBUGF 1, "K : Kernel ABI: %u.%u\n", eax, ecx
;-----------------------------------------------------------------------------
; show CPU count on the message board
;-----------------------------------------------------------------------------
@@ -2102,12 +2127,12 @@ sysfn_getdiskinfo: ; 18.11 = get disk info table
;------------------------------------------------------------------------------
sysfn_getversion: ; 18.13 = get kernel ID and version
; if given memory address belongs to kernel then error
stdcall is_region_userspace, ecx, version_inf.size
stdcall is_region_userspace, ecx, sizeof.kernel_version
jnz .addr_error
mov edi, ecx
mov esi, version_inf
mov ecx, version_inf.size
mov ecx, sizeof.kernel_version
rep movsb
ret
.addr_error: ; if given memory address is illegal
@@ -2287,11 +2312,18 @@ sound_flag db 0
endg
iglobal
version_inf:
db 0,7,7,0 ; FIXME: Get distribution version from git tag
db 0
.rev dd __REV__
.size = $ - version_inf
if ~ definite BUILD_DBGTAG
BUILD_DBGTAG = 0
end if
if ~ definite BUILD_CMTID
BUILD_CMTID = 0
end if
if ~ definite BUILD_OFFSET
BUILD_OFFSET = 0
end if
align 4
version_inf kernel_version <0,7,7,0>, BUILD_DBGTAG, ABI_MINOR, ABI_MAJOR, \
BUILD_CMTID, 0, BUILD_OFFSET
endg
;------------------------------------------------------------------------------
align 4
@@ -4457,8 +4489,6 @@ end if
include "data32.inc"
__REV__ = __REV
if ~ lang eq es_ES
diff16 "end of kernel code",0,$
end if

View File

@@ -5,16 +5,6 @@
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
__REV = 0
macro $Revision a {
match =: Num =$,a \{
if __REV < Num
__REV = Num
end if
\}
}
;// mike.dld, 2006-29-01 [
; macros definition

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,229 @@
// block name, color, step, coord: x,y,z, rotation: x,y,z
const m1=16711680;
const m2=16776960;
const m3=655615;
const m4=65315;
const m5=16777215;
const m6=16756655;
const m7=16776367;
const m8=0;
const m9=65498;
model_list=[
['b2x3x1', m1, 0, 4,-20, 3, 0,0,90],
['b2x3x1', m1, 0, 4,-12, 3, 0,0,90],
['b2x3x1', m1, 0, 4, -4, 3, 0,0,90],
['b2x3x1', m1, 0, 4, 4, 3, 0,0,90],
['b2x3x1', m1, 0, 4, 12, 3, 0,0,90],
['t2x3x1', m1, 0, 0, 20, 3, 0,0,90],
['b1x1x1', m1, 0, 0, 28, 3, 0,0,0],
['b1x1x1', m1, 0, -8,-16, 3, 0,0,0],
['b1x1x1', m1, 0, 8,-16, 3, 0,0,0],
['b2x4x1', m1, 0,-12,-12, 3, 0,0,0],
['b2x4x1', m1, 0, 8,-12, 3, 0,0,0],
['l2x2x1', m1, 0, -8, 4, 3, 0,0,90],
['l2x2x1', m1, 0, 8, 4, 3, 0,0,0],
['b1x6x1', m1, 1, 0, 20, 6, 0,0,0],
['b1x6x1', m1, 1, -4, 16, 6, 0,0,0],
['b1x6x1', m1, 1, 4, 16, 6, 0,0,0],
['b1x10x1', m1, 1, 0,-24, 6, 0,0,0],
['b2x8x1', m1, 1, -8,-16, 6, 0,0,0],
['b2x8x1', m1, 1, 4,-16, 6, 0,0,0],
['b2x3x1', m1, 1,-16, -8, 6, 0,0,0],
['b2x3x1', m1, 1, 12, -8, 6, 0,0,0],
['l2x2x1', m1, 1, -4,-20, 6, 0,0,-180],
['l2x2x1', m1, 1,-12,-12, 6, 0,0,-180],
['l2x2x1', m1, 1,-12, 4, 6, 0,0,90],
['l2x2x1', m1, 1, 12, 4, 6, 0,0,0],
['l2x2x1', m1, 1, 12,-12, 6, 0,0,-90],
['l2x2x1', m1, 1, 4,-20, 6, 0,0,-90],
['b2x3x1', m1, 2, 4,-24, 9, 0,0,90],
['b1x3x1', m1, 2, -8,-24, 9, 0,0,0],
['b1x3x1', m1, 2, 8,-24, 9, 0,0,0],
['b1x4x1', m1, 2,-12,-20, 9, 0,0,0],
['b1x4x1', m1, 2, 12,-20, 9, 0,0,0],
['b1x6x1', m1, 2,-16,-16, 9, 0,0,0],
['b1x6x1', m1, 2, 16,-16, 9, 0,0,0],
['t2x3x1', m1, 2,-12, 8, 9, 0,0,90],
['t2x3x1', m1, 2, 12, 8, 9, 0,0,90],
['b2x4x1', m1, 2, 4, 12, 9, 0,0,90],
['b1x2x1', m1, 2, 8, 12, 9, 0,0,0],
['b1x3x1', m2, 2, 4, 20, 9, 0,0,90],
['b1x3x1', m3, 2, 4, 24, 9, 0,0,90],
['t2x3x1', m3, 2, 0, 28, 9, 0,0,90],
['b2x3x1', m1, 3, 0,-28, 12, 0,0,90],
['b2x2x1', m1, 3, 4,-28, 12, 0,0,0],
['l2x2x1', m1, 3,-12,-20, 12, 0,0,-180],
['l2x2x1', m1, 3, 12,-20, 12, 0,0,-90],
['b2x4x1', m1, 3,-16,-16, 12, 0,0,0],
['b2x4x1', m1, 3, 12,-16, 12, 0,0,0],
['b1x3x1', m1, 3,-16, 0, 12, 0,0,0],
['b1x3x1', m1, 3, 16, 0, 12, 0,0,0],
['l2x2x1', m1, 3,-12, 12, 12, 0,0,-90],
['l2x2x1', m1, 3, 12, 12, 12, 0,0,180],
['b1x2x1', m2, 3, -4, 16, 12, 0,0,90],
['b1x2x1', m2, 3, 8, 16, 12, 0,0,90],
['t2x3x1', m3, 3, 0, 20, 12, 0,0,90],
['b1x3x1', m1, 4, 4,-28, 15, 0,0,90],
['l2x2x1', m1, 4, -8,-24, 15, 0,0,180],
['l2x2x1', m1, 4, 8,-24, 15, 0,0,-90],
['b1x2x1', m1, 4,-12,-20, 15, 0,0,90],
['b1x2x1', m1, 4, 16,-20, 15, 0,0,90],
['c1x2x1', m4, 4,-16,-16, 15, 0,0,90],
['c1x2x1', m4, 4, 20,-16, 15, 0,0,90],
['b1x4x1', m1, 4,-16,-12, 15, 0,0,0],
['b1x4x1', m1, 4, 16,-12, 15, 0,0,0],
['l2x2x1', m1, 4,-12, 4, 15, 0,0,90],
['l2x2x1', m1, 4, 12, 4, 15, 0,0,0],
['b1x1x1', m1, 4,-12, 12, 15, 0,0,0],
['b1x1x1', m1, 4, 12, 12, 15, 0,0,0],
['l2x2x1', m2, 4, -4, 12, 15, 0,0,90],
['l2x2x1', m2, 4, 4, 12, 15, 0,0,0],
['b1x2x1', m2, 4, 0, 16, 15, 0,0,0],
['b1x6x1', m1, 5,-16,-20, 18, 0,0,0],
['b1x6x1', m1, 5, 16,-20, 18, 0,0,0],
['b1x3x1', m1, 5, -8, 4, 18, 0,0,90],
['b1x3x1', m1, 5, 16, 4, 18, 0,0,90],
['l2x2x1', m1, 5, -8, 12, 18, 0,0,-90],
['l2x2x1', m1, 5, 8, 12, 18, 0,0,-180],
['b1x3x1', m2, 5, 4, 16, 18, 0,0,90],
['b1x2x1', m1, 5,-12,-24, 18, 0,0,0],
['b1x2x1', m1, 5, 12,-24, 18, 0,0,0],
['b2x3x1', m1, 5, 0,-28, 18, 0,0,90],
['b2x2x1', m1, 5, 4,-28, 18, 0,0,0],
['t2x3x1', m1, 6, 0,-28, 21, 0,0,90],
['l2x2x1', m1, 6, -8,-24, 21, 0,0,0],
['l2x2x1', m1, 6,-16,-20, 21, 0,0,0],
['l2x2x1', m1, 6, 8,-24, 21, 0,0,90],
['l2x2x1', m1, 6, 16,-20, 21, 0,0,90],
['b1x3x1', m1, 6,-16,-12, 21, 0,0,0],
['b1x3x1', m1, 6, 16,-12, 21, 0,0,0],
['l2x2x1', m1, 6,-12, 0, 21, 0,0,90],
['l2x2x1', m1, 6, -8, 8, 21, 0,0,-90],
['l2x2x1', m1, 6, 12, 0, 21, 0,0,0],
['l2x2x1', m1, 6, 8, 8, 21, 0,0,-180],
['b1x3x1', m1, 6, -4, 12, 21, 0,0,-90],
['b1x1x1', m1, 7, -8, 8, 24, 0,0,0],
['b2x3x1', m1, 7, -4, 12, 24, 0,0,-90],
['b1x1x1', m1, 7, 8, 8, 24, 0,0,0],
['l2x2x1', m1, 7,-12, 4, 24, 0,0,-90],
['l2x2x1', m1, 7, 12, 4, 24, 0,0,-180],
['b1x3x1', m1, 7,-16, 0, 24, 0,0,180],
['b1x3x1', m1, 7, 16, 0, 24, 0,0,180],
['l2x2x1', m1, 7,-16,-16, 24, 0,0,0],
['l2x2x1', m1, 7, 16,-16, 24, 0,0,90],
['l2x2x1', m1, 7, -8,-20, 24, 0,0,180],
['l2x2x1', m1, 7, 8,-20, 24, 0,0,-90],
['b1x3x1', m3, 7, 4,-24, 24, 0,0,90],
['b2x2x1', m5, 8, -8,-24, 27, 0,0,0],
['b2x3x1', m5, 8, 8,-24, 27, 0,0,90],
['b1x3x1', m1, 8,-12,-24, 27, 0,0,0],
['b1x3x1', m1, 8, 12,-24, 27, 0,0,0],
['b1x4x1', m1, 8,-16,-20, 27, 0,0,0],
['b1x4x1', m1, 8, 16,-20, 27, 0,0,0],
['l2x2x1', m1, 8,-16, 0, 27, 0,0,-90],
['l2x2x1', m1, 8, 16, 0, 27, 0,0,-180],
['l2x2x1', m1, 8, 8, 4, 27, 0,0,0],
['b2x4x1', m1, 8, 4, 4, 27, 0,0,90],
['b1x1x1', m1, 8,-12, 4, 27, 0,0,0],
['r1x1x1', m5, 9,-16,-20, 30, 0,0,0],
['r1x1x1', m5, 9, 16,-20, 30, 0,0,0],
['b1x2x1', m5, 9, -8,-20, 30, 0,0,90],
['b1x2x1', m5, 9, 12,-20, 30, 0,0,90],
['t2x3x1', m5, 9, 0,-20, 30, 0,0,-90],
['r1x1x1', m6, 9,-12,-24, 30, 0,0,0],
['r1x1x1', m6, 9, 12,-24, 30, 0,0,0],
['r1x2x1', m7, 9, -4,-28, 30, 0,0,0],
['r1x2x1', m7, 9, 4,-28, 30, 0,0,0],
['b1x4x1', m1, 9,-16,-16, 30, 0,0,0],
['b1x4x1', m1, 9, 16,-16, 30, 0,0,0],
['l2x2x1', m1, 9,-12, 0, 30, 0,0,90],
['l2x2x1', m1, 9, 12, 0, 30, 0,0,0],
['l2x2x1', m1, 9, 8, 8, 30, 0,0,-180],
['b2x3x1', m1, 9, 0, 4, 30, 0,0,90],
['l2x2x1', m5, 10, -4,-20, 33, 0,0,-180],
['l2x2x1', m5, 10,-12,-16, 33, 0,0,-180],
['l2x2x1', m5, 10, 4,-20, 33, 0,0,-90],
['l2x2x1', m5, 10, 12,-16, 33, 0,0,-90],
['a1x2x2', m7, 10, 0,-24, 30, 0,0,-180],
['r1x2x1', m7, 10, 0,-24, 33, 0,0,0],
['b1x2x1', m1, 10,-16,-12, 33, 0,0,0],
['l2x2x1', m1, 10,-16, 0, 33, 0,0,-90],
['b1x1x1', m1, 10,-12, 4, 33, 0,0,0],
['b2x4x1', m1, 10, 4, 4, 33, 0,0,90],
['l2x2x1', m1, 10, 8, 4, 33, 0,0,0],
['b2x4x1', m1, 10, 12,-12, 33, 0,0,0],
['b1x1x1', m1, 11, 0,-24, 36, 0,0,0],
['b1x1x1', m5, 11, -4,-24, 36, 0,0,0],
['b1x1x1', m5, 11, 4,-24, 36, 0,0,0],
['b1x1x3', m8, 11, -8,-24, 30, 0,0,0],
['b1x1x3', m8, 11, 8,-24, 30, 0,0,0],
['l2x2x1', m5, 11,-12,-20, 36, 0,0,0],
['l2x2x1', m5, 11, 12,-20, 36, 0,0,90],
['r1x1x1', m5, 11,-16,-16, 36, 0,0,90],
['r1x1x1', m5, 11, 16,-16, 36, 0,0,90],
['b1x4x1', m1, 11,-16,-12, 36, 0,0,0],
['b2x4x1', m1, 11, 12,-12, 36, 0,0,0],
['b2x3x1', m1, 11, 4, 0, 36, 0,0,0],
['l2x2x1', m1, 11, -8, 0, 36, 0,0,90],
['b1x3x1', m1, 11, 0, 8, 36, 0,0,90],
['b1x3x1', m1, 12, 4,-24, 39, 0,0,90],
['r1x1x1', m5, 12, -8,-24, 39, 0,0,0],
['r1x1x1', m5, 12, 8,-24, 39, 0,0,0],
['b1x1x1', m5, 12,-12,-20, 39, 0,0,0],
['b1x6x1', m5, 12, 12,-20, 39, 0,0,90],
['b1x1x1', m1, 12,-12,-16, 39, 0,0,0],
['l2x2x1', m1, 12,-16,-12, 39, 0,0,0],
['l2x2x1', m1, 12,-12, -4, 39, 0,0,90],
['b1x1x1', m1, 12, -8, 0, 39, 0,0,0],
['l2x2x1', m1, 12, -4, 4, 39, 0,0,90],
['l2x2x1', m1, 12, 4, 8, 39, 0,0,-180],
['b1x1x1', m1, 12, 8, 4, 39, 0,0,0],
['l2x2x1', m1, 12, 12, 0, 39, 0,0,-180],
['b1x2x1', m1, 12, 16, -8, 39, 0,0,0],
['l2x2x1', m1, 12, 12,-12, 39, 0,0,-90],
['l2x2x1', m1, 13, 4,-20, 42, 0,0,-90],
['l2x2x1', m1, 13, -4,-24, 42, 0,0,0],
['b2x6x1', m1, 13,-12,-20, 42, 0,0,0],
['b1x3x1', m1, 13, 0, 4, 42, 0,0,90],
['b2x2x1', m1, 13, 4, 0, 42, 0,0,0],
['b1x6x1', m1, 13, 12,-20, 42, 0,0,0],
['b1x4x1', m1, 14,-12,-16, 45, 0,0,0],
['b2x4x1', m1, 14, 4,-20, 45, 0,0,90],
['b2x6x1', m1, 14, 12,-12, 45, 0,0,90],
['b2x4x1', m1, 14, 4, -4, 45, 0,0,90],
['b1x3x1', m1, 14, 4, 4, 45, 0,0,90],
['l2x2x1', m1, 14, 8, -4, 45, 0,0,0],
['l2x2x1', m1, 14, 8,-16, 45, 0,0,-90],
['b2x4x1', m1, 15, -4,-16, 48, 0,0,0],
['b1x3x1', m1, 15, -8,-12, 48, 0,0,0],
['b1x3x1', m1, 15, 4, 0, 48, 0,0,90],
['b2x2x1', m1, 15, 4, -8, 48, 0,0,0],
['l2x2x1', m1, 15, 4,-12, 48, 0,0,-90],
['b1x3x1', m2, 16, 8,-12, 0, 0,0,0],
['b1x3x1', m2, 16, -8,-12, 0, 0,0,0],
['c1x2x1', m9, 17, 20,-16, 12, 0,0,0],
['b1x6x1', m4, 17, 0, 8, 0, 0,0,0, 1],
['b1x6x1', m9, 17, 0, 4, -3, 0,0,0, 1],
['b1x3x1', m4, 18, 0, 4, 3, 0,0,0, 1],
['b1x3x1', m2, 18, 0, 16, 3, 0,0,0, 1],
['c1x2x1', m4, 18, 0, 0, 6, 0,0,0, 1],
['b1x1x1', m4, 18, 0, 8, 6, 0,0,0, 1],
['b1x2x1', m2, 18, 0, 12, 6, 0,0,0, 1],
['b1x3x1', m2, 18, 0, 4, 9, 0,0,0, 1],
['c1x2x1', m9, 17, -20,-16, 12, 0,0,0],
['b1x6x1', m4, 17, 0, 8, 0, 0,0,0, 1],
['b1x6x1', m9, 17, 0, 4, -3, 0,0,0, 1],
['b1x3x1', m4, 18, 0, 4, 3, 0,0,0, 1],
['b1x3x1', m2, 18, 0, 16, 3, 0,0,0, 1],
['c1x2x1', m4, 18, 0, 0, 6, 0,0,0, 1],
['b1x1x1', m4, 18, 0, 8, 6, 0,0,0, 1],
['b1x2x1', m2, 18, 0, 12, 6, 0,0,0, 1],
['b1x3x1', m2, 18, 0, 4, 9, 0,0,0, 1],
];
model_animat=[
[192,'rotation','z','Left', -1.570796327, 0, 0.017453293],
[201,'rotation','z','Right', 0, 1.570796327, 0.017453293],
];

View File

@@ -0,0 +1,531 @@
// block name, color, step, coord: x,y,z, rotation: x,y,z
const m1=32768;
const m2=9474192;
const m3=16777215;
const m4=2164260863;
const m5=655615;
const m6=255;
const m7=16776960;
const m8=10824234;
const m9=16384;
const m10=0xc97e3b;
model_list=[
['b2x4x1', m2, 0,-28, -4, 6, 0,0,90],
['b2x3x1', m2, 0,-40, 4, 6, 0,0,0],
['b2x3x1', m2, 0,-32, 8, 6, 0,0,0],
['b2x6x1', m2, 0, -4, 8, 6, 0,0,90],
['b1x3x1', m2, 0, -4, 4, 6, 0,0,90],
['b2x4x1', m2, 0, -4, -4, 6, 0,0,90],
['b1x2x1', m2, 0, -8, -8, 6, 0,0,90],
['b2x3x1', m2, 0,-24, -8, 6, 0,0,0],
['b2x4x1', m2, 1,-12, -8, 9, 0,0,0],
['b2x2x1', m2, 1,-20, -4, 9, 0,0,0],
['b1x2x1', m2, 1,-20, -8, 9, 0,0,90],
['b2x3x1', m2, 1,-24, -4, 9, 0,0,90],
['b2x3x1', m2, 1,-40, -4, 9, 0,0,0],
['b1x2x1', m2, 1,-40, 8, 9, 0,0,0],
['b2x4x1', m2, 1,-24, 8, 9, 0,0,90],
['b1x2x1', m2, 1,-28, 16, 9, 0,0,90],
['l2x2x1', m2, 2, 0,-12, 6, 0,0,-90],
['l2x2x1', m2, 2, 8,-12, 6, 0,0,-90],
['b2x4x1', m2, 2, 12, -8, 6, 0,0,90],
['b2x4x1', m2, 2, 12, 0, 6, 0,0,90],
['b2x4x1', m2, 2, 12, 8, 6, 0,0,90],
['b2x4x1', m2, 2, 12, 16, 6, 0,0,90],
['b2x4x1', m2, 2, 28, 16, 6, 0,0,90],
['b2x4x1', m2, 2, 28, 8, 6, 0,0,90],
['b2x4x1', m2, 2, 28, 0, 6, 0,0,90],
['b1x4x1', m2, 2, 28, -4, 6, 0,0,90],
['b1x2x1', m2, 2, 24, -8, 6, 0,0,90],
['b2x2x1', m3, 3, 20, 16, 9, 0,0,0],
['b2x2x1', m2, 3, 12, 16, 9, 0,0,0],
['b1x3x1', m2, 3, 20, 12, 9, 0,0,90],
['b1x2x1', m2, 3, 20, 4, 9, 0,0,0],
['b1x3x1', m2, 3, 20, -8, 9, 0,0,0],
['l2x2x1', m2, 3, 24, -4, 9, 0,0,-90],
['b2x4x1', m2, 3, 12, -4, 9, 0,0,0],
['b2x6x1', m2, 3, 4, -4, 9, 0,0,0],
['b1x2x1', m2, 3, 8, 20, 9, 0,0,90],
['b1x2x1', m2, 3, 0, 16, 9, 0,0,0],
['b2x6x1', m2, 3, 0, 8, 9, 0,0,90],
['b2x3x1', m2, 3, -4, -4, 9, 0,0,0],
['b2x4x1', m2, 3, 12,-12, 9, 0,0,90],
['b1x1x1', m2, 3, 8,-16, 9, 0,0,0],
['b1x1x1', m2, 3, 0,-16, 9, 0,0,0],
['b1x4x1', m2, 4,-28, -4, 3, 0,0,90],
['b1x4x1', m2, 4,-40, 0, 3, 0,0,0],
['b1x4x1', m2, 4,-24, 12, 3, 0,0,90],
['b1x2x1', m2, 4,-28, 16, 3, 0,0,90],
['b1x4x1', m2, 4, -8, 12, 3, 0,0,90],
['l2x2x1', m2, 4, 0, 12, 3, 0,0,90],
['b1x4x1', m2, 4, 12, 20, 3, 0,0,90],
['b1x3x1', m2, 4, 24, 20, 3, 0,0,90],
['b1x3x1', m2, 4, 28, 12, 3, 0,0,0],
['b1x3x1', m2, 4, 28, 0, 3, 0,0,0],
['b1x4x1', m2, 4, 28, -4, 3, 0,0,90],
['b1x2x1', m2, 4, 24, -8, 3, 0,0,90],
['b1x3x1', m2, 4, 12,-12, 3, 0,0,0],
['l2x2x1', m2, 4, 8,-12, 3, 0,0,-180],
['b1x4x1', m2, 4, 0,-16, 3, 0,0,0],
['b1x2x1', m2, 4, -4, -4, 3, 0,0,90],
['b1x2x1', m2, 4, -8, -8, 3, 0,0,90],
['b1x4x1', m2, 4,-12, -4, 3, 0,0,90],
['b1x2x1', m2, 4,-20, -8, 3, 0,0,90],
['b20x20x1', m1, 5,-40,-40, 0, 0,0,0],
['b1x4x1', m3, 6,-28, -4, 12, 0,0,90],
['b2x4x1', m2, 6,-40, 0, 12, 0,0,0],
['b2x4x1', m2, 6,-32, 4, 12, 0,0,0],
['b2x6x1', m2, 6,-24, -8, 12, 0,0,0],
['b2x4x1', m2, 6, -4, 8, 12, 0,0,90],
['b2x4x1', m2, 6, -4, -4, 12, 0,0,90],
['b1x2x1', m2, 6, -8, -8, 12, 0,0,90],
['b1x3x1', m2, 6, 0, -8, 12, 0,0,0],
['b1x2x1', m2, 6, 0,-16, 12, 0,0,0],
['b1x2x1', m2, 6, 4,-12, 12, 0,0,0],
['b1x4x1', m2, 6, 8,-16, 12, 0,0,0],
['b1x4x1', m2, 6, 12,-12, 12, 0,0,0],
['b1x2x1', m2, 6, 20, -4, 12, 0,0,90],
['b1x2x1', m2, 6, 24, -8, 12, 0,0,90],
['b2x4x1', m2, 6, 16, 0, 12, 0,0,0],
['b1x2x1', m2, 6, 16, 16, 12, 0,0,0],
['b2x2x1', m3, 6, 20, 16, 12, 0,0,0],
['b2x4x1', m2, 6, 8, 8, 12, 0,0,0],
['b2x4x1', m2, 6, 0, 8, 12, 0,0,0],
['b2x6x1', m3, 7, 24, 16, 15, 0,0,90],
['b1x2x1', m3, 7, 0, 16, 15, 0,0,0],
['b1x4x1', m2, 7, 20, 0, 15, 0,0,0],
['b1x4x1', m2, 7, 16, 12, 15, 0,0,90],
['b2x4x1', m2, 7, 16, 4, 15, 0,0,90],
['b2x4x1', m2, 7, 16, -4, 15, 0,0,90],
['b2x4x1', m2, 7, -4, 0, 15, 0,0,0],
['b1x4x1', m2, 7, -8, 12, 15, 0,0,90],
['b1x4x1', m3, 7,-24, 12, 15, 0,0,90],
['b1x3x1', m3, 7,-40, 4, 15, 0,0,0],
['l2x2x1', m3, 7,-40, -4, 15, 0,0,0],
['b1x4x1', m3, 7,-20, -4, 15, 0,0,90],
['l2x2x1', m2, 7,-12, -4, 15, 0,0,180],
['l2x2x1', m2, 7, -8, -4, 15, 0,0,-90],
['b1x4x1', m2, 7, 0,-16, 15, 0,0,0],
['b1x2x1', m2, 7, 4,-12, 15, 0,0,0],
['b1x2x1', m2, 7, 8,-16, 15, 0,0,0],
['b1x2x1', m2, 7, 12,-12, 15, 0,0,0],
['b1x1x1', m3, 8, 24, 16, 18, 0,0,0],
['c1x1x1', m4, 8, 24, 20, 18, 0,0,0],
['b2x2x1', m3, 8, 16, 16, 18, 0,0,0],
['c1x1x1', m4, 8, 12, 20, 18, 0,0,0],
['c1x1x1', m4, 8, 12, 16, 18, 0,0,0],
['b1x2x1', m3, 8, 8, 16, 18, 0,0,0],
['c1x1x1', m4, 8, 4, 20, 18, 0,0,0],
['c1x1x1', m4, 8, 4, 16, 18, 0,0,0],
['b1x2x1', m3, 8, 0, 16, 18, 0,0,0],
['b1x2x1', m3, 8, -4, 12, 18, 0,0,90],
['b1x4x1', m3, 8,-12, 12, 18, 0,0,90],
['b1x4x1', m3, 8,-28, 12, 18, 0,0,90],
['b1x4x1', m3, 8,-40, -4, 18, 0,0,0],
['b1x4x1', m3, 8,-24, -4, 18, 0,0,90],
['b1x2x1', m3, 8,-16, -4, 18, 0,0,90],
['b2x2x1', m3, 8,-12, -8, 18, 0,0,0],
['b1x4x1', m3, 8, -4, -4, 18, 0,0,0],
['b2x4x1', m3, 8, 12,-12, 18, 0,0,90],
['b1x1x1', m3, 8, 0,-16, 18, 0,0,0],
['b1x1x1', m3, 8, 8,-16, 18, 0,0,0],
['b2x2x1', m3, 9, 20, 16, 21, 0,0,0],
['b1x2x1', m5, 9, 16, 16, 21, 0,0,0],
['b2x2x1', m3, 9, 8, 16, 21, 0,0,0],
['b2x2x1', m5, 9, 0, 16, 21, 0,0,0],
['b1x1x1', m3, 9, -4, 12, 21, 0,0,0],
['c1x1x1', m4, 9, -8, 12, 21, 0,0,0],
['b1x1x1', m3, 9,-12, 12, 21, 0,0,0],
['c1x1x1', m4, 9,-16, 12, 21, 0,0,0],
['b1x1x1', m3, 9,-20, 12, 21, 0,0,0],
['c1x1x1', m4, 9,-24, 12, 21, 0,0,0],
['b1x2x1', m3, 9,-28, 12, 21, 0,0,90],
['c1x1x1', m4, 9,-36, 12, 21, 0,0,0],
['b1x1x1', m3, 9,-40, 12, 21, 0,0,0],
['b2x3x1', m3, 9,-44, 0, 21, 0,0,0],
['b1x1x1', m3, 9,-40, -4, 21, 0,0,0],
['c1x1x1', m4, 9,-36, -4, 21, 0,0,0],
['b1x1x1', m3, 9,-32, -4, 21, 0,0,0],
['c1x1x1', m4, 9,-28, -4, 21, 0,0,0],
['b1x2x1', m3, 9,-20, -4, 21, 0,0,90],
['c1x1x1', m4, 9,-16, -4, 21, 0,0,0],
['b1x2x1', m3, 9,-12, -8, 21, 0,0,0],
['c1x1x1', m4, 9, -8, -8, 21, 0,0,0],
['b1x2x1', m3, 9, -4, -4, 21, 0,0,90],
['c1x1x1', m4, 9, -4, 0, 21, 0,0,0],
['b1x1x1', m3, 9, -4, 4, 21, 0,0,0],
['c1x1x1', m4, 9, -4, 8, 21, 0,0,0],
['b2x4x1', m3, 9, 12,-12, 21, 0,0,90],
['c1x1x1', m4, 9, 0,-16, 21, 0,0,0],
['c1x1x1', m4, 9, 8,-16, 21, 0,0,0],
['c1x1x1', m4, 10, 24, 20, 24, 0,0,0],
['l2x2x1', m3, 10, 20, 16, 24, 0,0,0],
['c1x1x1', m4, 10, 12, 20, 24, 0,0,0],
['c1x1x1', m4, 10, 8, 20, 24, 0,0,0],
['c1x1x1', m4, 10, 8, 16, 24, 0,0,0],
['c1x1x1', m4, 10, 12, 16, 24, 0,0,0],
['b1x4x1', m3, 10, -4, 0, 24, 0,0,0],
['b1x4x1', m3, 10, -8, 12, 24, 0,0,90],
['b1x4x1', m3, 10,-24, 12, 24, 0,0,90],
['b1x4x1', m3, 10,-40, 0, 24, 0,0,0],
['c1x1x1', m4, 10,-44, 8, 24, 0,0,0],
['c1x1x1', m4, 10,-44, 4, 24, 0,0,0],
['c1x1x1', m4, 10,-44, 0, 24, 0,0,0],
['b1x2x1', m3, 10,-36, -4, 24, 0,0,90],
['b1x4x1', m3, 10,-20, -4, 24, 0,0,90],
['b1x4x1', m3, 10, -4, -4, 24, 0,0,90],
['b1x2x1', m3, 10, -8, -8, 24, 0,0,90],
['l2x2x1', m3, 10, 4, -8, 24, 0,0,180],
['b1x2x1', m5, 10, 0,-16, 24, 0,0,0],
['l2x2x1', m3, 10, 12, -8, 24, 0,0,180],
['b1x2x1', m5, 10, 8,-16, 24, 0,0,0],
['b2x2x1', m3, 11, 24, 16, 27, 0,0,90],
['b2x2x1', m5, 11, 8, 16, 27, 0,0,0],
['b1x1x1', m3, 11, -4, 12, 27, 0,0,0],
['c1x1x1', m4, 11, -8, 12, 27, 0,0,0],
['b1x1x1', m3, 11,-12, 12, 27, 0,0,0],
['c1x1x1', m4, 11,-16, 12, 27, 0,0,0],
['b1x1x1', m3, 11,-20, 12, 27, 0,0,0],
['c1x1x1', m4, 11,-24, 12, 27, 0,0,0],
['b1x2x1', m3, 11,-28, 12, 27, 0,0,90],
['c1x1x1', m4, 11,-36, 12, 27, 0,0,0],
['b1x1x1', m3, 11,-40, 12, 27, 0,0,0],
['b2x3x1', m3, 11,-44, 0, 27, 0,0,0],
['b1x1x1', m3, 11,-40, -4, 27, 0,0,0],
['c1x1x1', m4, 11,-36, -4, 27, 0,0,0],
['b1x1x1', m3, 11,-32, -4, 27, 0,0,0],
['c1x1x1', m4, 11,-28, -4, 27, 0,0,0],
['b1x2x1', m3, 11,-20, -4, 27, 0,0,90],
['c1x1x1', m4, 11,-16, -4, 27, 0,0,0],
['b1x2x1', m3, 11,-12, -8, 27, 0,0,0],
['c1x1x1', m4, 11, -8, -8, 27, 0,0,0],
['b1x2x1', m3, 11, -4, -4, 27, 0,0,90],
['c1x1x1', m4, 11, -4, 0, 27, 0,0,0],
['b1x1x1', m3, 11, -4, 4, 27, 0,0,0],
['c1x1x1', m4, 11, -4, 8, 27, 0,0,0],
['b1x2x1', m5, 11, 0,-12, 27, 0,0,0],
['c1x1x1', m5, 11, 0,-16, 27, 0,0,0],
['f1x2x1', m5, 11, 4,-12, 27, 0,0,0],
['f1x2x1', m5, 11, 8,-12, 27, 0,0,0],
['c1x1x1', m5, 11, 8,-16, 27, 0,0,0],
['b1x2x1', m5, 11, 12,-12, 27, 0,0,0],
['b2x2x1', m3, 12, 20, 16, 30, 0,0,0],
['b1x4x1', m3, 12, -4, 0, 30, 0,0,0],
['b1x4x1', m3, 12, -8, 12, 30, 0,0,90],
['b1x4x1', m3, 12,-24, 12, 30, 0,0,90],
['b1x4x1', m3, 12,-40, 0, 30, 0,0,0],
['c1x1x1', m4, 12,-44, 8, 30, 0,0,0],
['c1x1x1', m4, 12,-44, 4, 30, 0,0,0],
['c1x1x1', m4, 12,-44, 0, 30, 0,0,0],
['b1x2x1', m3, 12,-36, -4, 30, 0,0,90],
['b1x4x1', m3, 12,-20, -4, 30, 0,0,90],
['b1x4x1', m3, 12, -4, -4, 30, 0,0,90],
['b1x2x1', m3, 12, -8, -8, 30, 0,0,90],
['b1x2x1', m5, 12, 8,-10, 30, 0,0,90],
['b2x2x1', m3, 13, -4, 12, 33, 0,0,0],
['c1x1x1', m4, 13, -8, 12, 33, 0,0,0],
['b1x1x1', m3, 13,-12, 12, 33, 0,0,0],
['c1x1x1', m4, 13,-16, 12, 33, 0,0,0],
['b1x1x1', m3, 13,-20, 12, 33, 0,0,0],
['c1x1x1', m4, 13,-24, 12, 33, 0,0,0],
['b1x2x1', m3, 13,-28, 12, 33, 0,0,90],
['c1x1x1', m4, 13,-36, 12, 33, 0,0,0],
['b1x1x1', m3, 13,-40, 12, 33, 0,0,0],
['b2x3x1', m3, 13,-44, 0, 33, 0,0,0],
['b1x1x1', m3, 13,-40, -4, 33, 0,0,0],
['c1x1x1', m4, 13,-36, -4, 33, 0,0,0],
['b1x1x1', m3, 13,-32, -4, 33, 0,0,0],
['c1x1x1', m4, 13,-28, -4, 33, 0,0,0],
['b1x2x1', m3, 13,-20, -4, 33, 0,0,90],
['c1x1x1', m4, 13,-16, -4, 33, 0,0,0],
['b1x2x1', m3, 13,-12, -8, 33, 0,0,0],
['c1x1x1', m4, 13, -8, -8, 33, 0,0,0],
['b1x1x1', m3, 13, -8, -4, 33, 0,0,90],
['c1x1x1', m4, 13, -4, 0, 33, 0,0,0],
['b1x1x1', m3, 13, -4, 4, 33, 0,0,0],
['c1x1x1', m4, 13, -4, 8, 33, 0,0,0],
['b2x2x1', m3, 13, -4, -8, 33, 0,0,0],
['b2x4x1', m3, 13, 28, 16, 33, 0,0,90],
['b1x2x1', m3, 14, 24, 12, 33, 0,0,90],
['b1x2x1', m3, 14, 24, 24, 33, 0,0,90],
['b2x4x1', m6, 14, 20, 12, 36, 0,0,0],
['b1x2x1', m6, 14, 28, 16, 36, 0,0,0],
['b1x2x1', m6, 14, 16, 16, 36, 0,0,0],
['c1x1x1', m4, 14, 0, 16, 36, 0,0,0],
['b1x1x1', m3, 14, -4, 16, 36, 0,0,0],
['b1x1x1', m3, 14, 0, 12, 36, 0,0,0],
['b1x4x1', m3, 14, -8, 12, 36, 0,0,90],
['b1x4x1', m3, 14,-24, 12, 36, 0,0,90],
['b1x4x1', m3, 14,-40, 0, 36, 0,0,0],
['b1x2x1', m3, 14,-36, -4, 36, 0,0,90],
['b1x4x1', m3, 14,-20, -4, 36, 0,0,90],
['b1x4x1', m3, 14, -4, -4, 36, 0,0,90],
['b1x4x1', m3, 14, -4, 0, 36, 0,0,0],
['b1x1x1', m3, 14, 0, -4, 36, 0,0,0],
['c1x1x1', m4, 14, 0, -8, 36, 0,0,0],
['b1x1x1', m3, 14, -4, -8, 36, 0,0,0],
['b1x2x1', m6, 14, -8, -8, 36, 0,0,90],
['b2x2x1', m3, 15, -4, 12, 39, 0,0,0],
['c1x1x1', m4, 15, -8, 12, 39, 0,0,0],
['b1x1x1', m3, 15,-12, 12, 39, 0,0,0],
['c1x1x1', m4, 15,-16, 12, 39, 0,0,0],
['b1x1x1', m3, 15,-20, 12, 39, 0,0,0],
['c1x1x1', m4, 15,-24, 12, 39, 0,0,0],
['b1x2x1', m3, 15,-28, 12, 39, 0,0,90],
['c1x1x1', m4, 15,-36, 12, 39, 0,0,0],
['b1x1x1', m3, 15,-40, 12, 39, 0,0,0],
['b1x1x1', m3, 15,-40, 4, 39, 0,0,0],
['b1x1x1', m3, 15,-40, -4, 39, 0,0,0],
['c1x1x1', m4, 15,-36, -4, 39, 0,0,0],
['b1x1x1', m3, 15,-32, -4, 39, 0,0,0],
['c1x1x1', m4, 15,-28, -4, 39, 0,0,0],
['b1x2x1', m3, 15,-20, -4, 39, 0,0,90],
['c1x1x1', m4, 15,-16, -4, 39, 0,0,0],
['b1x1x1', m3, 15,-12, -4, 39, 0,0,0],
['c1x1x1', m4, 15,-40, 8, 39, 0,0,0],
['c1x1x1', m4, 15, -4, 0, 39, 0,0,0],
['b1x1x1', m3, 15, -4, 4, 39, 0,0,0],
['c1x1x1', m4, 15, -4, 8, 39, 0,0,0],
['b2x2x1', m3, 15, -4, -8, 39, 0,0,0],
['c1x1x1', m4, 15,-40, 0, 39, 0,0,0],
['c1x1x1', m4, 15, -8, -4, 39, 0,0,0],
['c1x1x1', m4, 16, 0, 16, 42, 0,0,0],
['b1x1x1', m3, 16, -4, 16, 42, 0,0,0],
['b1x1x1', m3, 16, 0, 12, 42, 0,0,0],
['b1x4x1', m3, 16, -8, 12, 42, 0,0,90],
['b1x4x1', m3, 16,-24, 12, 42, 0,0,90],
['b1x4x1', m3, 16,-40, 0, 42, 0,0,0],
['b1x2x1', m3, 16,-36, -4, 42, 0,0,90],
['b1x4x1', m3, 16,-20, -4, 42, 0,0,90],
['b1x4x1', m3, 16, -4, -4, 42, 0,0,90],
['b1x4x1', m3, 16, -4, 0, 42, 0,0,0],
['b1x1x1', m3, 16, 0, -4, 42, 0,0,0],
['c1x1x1', m4, 16, 0, -8, 42, 0,0,0],
['b1x1x1', m3, 16, -4, -8, 42, 0,0,0],
['b2x2x1', m3, 17, -4, 12, 45, 0,0,0],
['b2x3x1', m6, 17, -8, 12, 45, 0,0,90],
['b2x2x1', m6, 17,-24, 12, 45, 0,0,0],
['b1x2x1', m6, 17,-28, 12, 45, 0,0,90],
['b2x2x1', m6, 17,-40, 12, 45, 0,0,0],
['b1x1x1', m3, 17,-40, 8, 45, 0,0,0],
['c1x1x1', m4, 17,-40, 4, 45, 0,0,0],
['b1x1x1', m3, 17,-40, 0, 45, 0,0,0],
['b2x4x1', m6, 17,-28, -8, 45, 0,0,90],
['b1x2x1', m6, 17,-20, -4, 45, 0,0,90],
['b2x3x1', m6, 17, -8, -8, 45, 0,0,90],
['b2x2x1', m3, 17, -4, -8, 45, 0,0,0],
['b1x1x1', m3, 17, -4, 0, 45, 0,0,0],
['c1x1x1', m4, 17, -4, 4, 45, 0,0,0],
['b1x1x1', m3, 17, -4, 8, 45, 0,0,0],
['c1x1x1', m3, 18,-24, -8, 15, 0,0,0],
['c1x1x1', m3, 18,-20, -8, 15, 0,0,0],
['c1x1x1', m3, 18,-32, 16, 15, 0,0,0],
['c1x1x1', m3, 18,-28, 16, 15, 0,0,0],
['c1x1x1', m3, 18,-24, -8, 18, 0,0,0],
['c1x1x1', m3, 18,-20, -8, 18, 0,0,0],
['c1x1x1', m3, 18,-32, 16, 18, 0,0,0],
['c1x1x1', m3, 18,-28, 16, 18, 0,0,0],
['c1x1x1', m3, 18,-24, -8, 21, 0,0,0],
['c1x1x1', m3, 18,-20, -8, 21, 0,0,0],
['c1x1x1', m3, 18,-32, 16, 21, 0,0,0],
['c1x1x1', m3, 18,-28, 16, 21, 0,0,0],
['c1x1x1', m4, 19,-24, -8, 24, 0,0,0],
['c1x1x1', m4, 19,-20, -8, 24, 0,0,0],
['c1x1x1', m4, 19,-32, 16, 24, 0,0,0],
['c1x1x1', m4, 19,-28, 16, 24, 0,0,0],
['c1x1x1', m3, 19,-24, -8, 27, 0,0,0],
['c1x1x1', m3, 19,-20, -8, 27, 0,0,0],
['c1x1x1', m3, 19,-32, 16, 27, 0,0,0],
['c1x1x1', m3, 19,-28, 16, 27, 0,0,0],
['c1x1x1', m3, 19,-24, -8, 30, 0,0,0],
['c1x1x1', m3, 19,-20, -8, 30, 0,0,0],
['c1x1x1', m3, 19,-32, 16, 30, 0,0,0],
['c1x1x1', m3, 19,-28, 16, 30, 0,0,0],
['c1x1x1', m4, 20,-24, -8, 33, 0,0,0],
['c1x1x1', m4, 20,-20, -8, 33, 0,0,0],
['c1x1x1', m4, 20,-32, 16, 33, 0,0,0],
['c1x1x1', m4, 20,-28, 16, 33, 0,0,0],
['c1x1x1', m3, 20,-24, -8, 36, 0,0,0],
['c1x1x1', m3, 20,-20, -8, 36, 0,0,0],
['c1x1x1', m3, 20,-32, 16, 36, 0,0,0],
['c1x1x1', m3, 20,-28, 16, 36, 0,0,0],
['c1x1x1', m3, 20,-24, -8, 39, 0,0,0],
['c1x1x1', m3, 20,-20, -8, 39, 0,0,0],
['c1x1x1', m3, 20,-32, 16, 39, 0,0,0],
['c1x1x1', m3, 20,-28, 16, 39, 0,0,0],
['c1x1x1', m4, 21,-24, -8, 42, 0,0,0],
['c1x1x1', m4, 21,-20, -8, 42, 0,0,0],
['c1x1x1', m4, 21,-32, 16, 42, 0,0,0],
['c1x1x1', m4, 21,-28, 16, 42, 0,0,0],
['c1x1x1', m3, 21,-24, -8, 45, 0,0,0],
['c1x1x1', m3, 21,-20, -8, 45, 0,0,0],
['c1x1x1', m3, 21,-32, 16, 45, 0,0,0],
['c1x1x1', m3, 21,-28, 16, 45, 0,0,0],
['c1x1x1', m3, 21,-24, -8, 48, 0,0,0],
['c1x1x1', m3, 21,-20, -8, 48, 0,0,0],
['c1x1x1', m3, 21,-32, 16, 48, 0,0,0],
['c1x1x1', m3, 21,-28, 16, 48, 0,0,0],
['c1x1x1', m3, 22, 20, 16, 39, 0,0,0],
['c1x1x1', m3, 22, 24, 16, 39, 0,0,0],
['c1x1x1', m3, 22, 24, 20, 39, 0,0,0],
['c1x1x1', m3, 22, 20, 20, 39, 0,0,0],
['b2x2x1', m3, 22, 20, 16, 42, 0,0,0],
['f1x2x1', m6, 22, 20, 16, 45, 0,0,0],
['f1x2x1', m6, 22, 24, 16, 45, 0,0,0],
['f1x2x1', m6, 23, 24, 18, 48, 0,0,90],
['c1x1x1', m6, 23, 0, 16, 48, 0,0,0],
['b1x3x1', m6, 23, -4, 12, 48, 0,0,90],
['b1x1x1', m3, 23, -8, 16, 48, 0,0,0],
['b2x4x1', m6, 23,-16, 8, 48, 0,0,90],
['b1x3x1', m6, 23,-32, 12, 48, 0,0,90],
['b1x1x1', m3, 23,-40, 16, 48, 0,0,0],
['b1x3x1', m3, 23,-40, 0, 48, 0,0,0],
['b1x3x1', m6, 23,-32, -4, 48, 0,0,90],
['b1x1x1', m3, 23,-40, -8, 48, 0,0,0],
['b2x4x1', m6, 23,-16, -4, 48, 0,0,90],
['b1x3x1', m6, 23, -4, -4, 48, 0,0,90],
['b1x1x1', m3, 23, -8, -8, 48, 0,0,0],
['c1x1x1', m6, 23, 0, -8, 48, 0,0,0],
['b1x3x1', m3, 23, -4, 0, 48, 0,0,0],
['c1x1x1', m6, 24, 22, 18, 51, 0,0,0],
['c1x1x1', m6, 24, 0, 16, 51, 0,0,90],
['c1x1x1', m6, 24, -8, 16, 51, 0,0,0],
['b2x6x1', m6, 24, -4, 8, 51, 0,0,90],
['b1x2x1', m6, 24,-28, 8, 51, 0,0,90],
['b2x2x1', m3, 24,-32, 12, 51, 0,0,0],
['b2x2x1', m6, 24,-40, 8, 51, 0,0,0],
['c1x1x1', m6, 24,-40, 16, 51, 0,0,0],
['b1x1x1', m3, 24,-40, 4, 51, 0,0,0],
['b2x4x1', m6, 24,-28, -4, 51, 0,0,90],
['c1x1x1', m6, 24,-40, -8, 51, 0,0,0],
['b1x2x1', m6, 24,-20, 0, 51, 0,0,90],
['b2x2x1', m3, 24,-24, -8, 51, 0,0,0],
['b2x4x1', m6, 24, -4, -4, 51, 0,0,90],
['c1x1x1', m6, 24, -8, -8, 51, 0,0,0],
['c1x1x1', m6, 24, 0, -8, 51, 0,0,0],
['b1x1x1', m3, 24, -4, 4, 51, 0,0,0],
['c1x1x1', m7, 25, 22, 18, 54, 0,0,0],
['b1x1x1', m3, 25, -4, 4, 54, 0,0,0],
['b1x3x1', m5, 25, -4, 8, 54, 0,0,90],
['b1x3x1', m5, 25, -4, 0, 54, 0,0,90],
['b2x3x1', m5, 25,-20, 0, 54, 0,0,0],
['b2x3x1', m5, 25,-28, 0, 54, 0,0,0],
['b1x3x1', m5, 25,-32, 8, 54, 0,0,90],
['b1x1x1', m3, 25,-40, 4, 54, 0,0,0],
['b1x3x1', m5, 25,-32, 0, 54, 0,0,90],
['c1x1x1', m3, 25,-32, 12, 54, 0,0,0],
['c1x1x1', m3, 25,-28, 12, 54, 0,0,0],
['c1x1x1', m3, 25,-28, 16, 54, 0,0,0],
['c1x1x1', m3, 25,-32, 16, 54, 0,0,0],
['c1x1x1', m3, 25,-24, -4, 54, 0,0,0],
['c1x1x1', m3, 25,-20, -4, 54, 0,0,0],
['c1x1x1', m3, 25,-20, -8, 54, 0,0,0],
['c1x1x1', m3, 25,-24, -8, 54, 0,0,0],
['c1x1x1', m3, 26,-32, 12, 57, 0,0,0],
['c1x1x1', m3, 26,-28, 12, 57, 0,0,0],
['c1x1x1', m3, 26,-28, 16, 57, 0,0,0],
['c1x1x1', m3, 26,-32, 16, 57, 0,0,0],
['c1x1x1', m3, 26,-24, -4, 57, 0,0,0],
['c1x1x1', m3, 26,-20, -4, 57, 0,0,0],
['c1x1x1', m3, 26,-20, -8, 57, 0,0,0],
['c1x1x1', m3, 26,-24, -8, 57, 0,0,0],
['f1x2x1', m6, 27,-20, -8, 60, 0,0,90],
['f1x2x1', m6, 27,-20, -4, 60, 0,0,90],
['f1x2x1', m6, 27,-22, -8, 63, 0,0,0],
['c1x1x1', m6, 27,-22, -6, 66, 0,0,0],
['c1x1x1', m7, 27,-22, -6, 69, 0,0,0],
['b2x2x1', m3, 28,-32, 12, 60, 0,0,0],
['b2x2x1', m5, 28,-32, 12, 63, 0,0,0],
['c1x1x1', m3, 28,-32, 12, 66, 0,0,0],
['c1x1x1', m3, 28,-28, 12, 66, 0,0,0],
['c1x1x1', m3, 28,-28, 16, 66, 0,0,0],
['c1x1x1', m3, 28,-32, 16, 66, 0,0,0],
['b2x2x1', m3, 28,-32, 12, 69, 0,0,0],
['f1x2x1', m5, 29,-28, 12, 72, 0,0,90],
['f1x2x1', m5, 29,-28, 16, 72, 0,0,90],
['f1x2x1', m5, 29,-30, 12, 75, 0,0,0],
['c1x1x1', m5, 29,-30, 12, 78, 0,0,0],
['c1x1x1', m5, 29,-30, 12, 81, 0,0,0],
['c1x1x1', m7, 29,-30, 12, 84, 0,0,0],
['b2x3x1', m5, 30, -8, 0, 57, 0,0,0],
['b2x3x1', m5, 30,-16, 0, 57, 0,0,0],
['b2x3x1', m5, 30,-24, 0, 57, 0,0,0],
['b2x3x1', m5, 30,-32, 0, 57, 0,0,0],
['b2x3x1', m5, 30,-40, 0, 57, 0,0,0],
['b1x4x1', m5, 30, -4, 4, 60, 0,0,90],
['b1x2x1', m5, 30,-20, 4, 60, 0,0,90],
['b1x4x1', m5, 30,-28, 4, 60, 0,0,90],
['b1x3x1', m5, 31, -4, 4, 63, 0,0,90],
['b1x4x1', m5, 31,-16, 4, 63, 0,0,90],
['b1x3x1', m5, 31,-32, 4, 63, 0,0,90],
['c1x1x1', m7, 31, -4, 4, 66, 0,0,0],
['c1x1x1', m7, 31,-40, 4, 66, 0,0,0],
['c1x1x1', m8, 32,-32,-36, 3, 0,0,0],
['b1x2x1', m9, 32, 0, 0, 3, 0,0,45, 1],
['b1x2x1', m9, 32, 0, 0, 6, 0,0,-45, 1],
['b1x2x1', m9, 32, 0, 0, 9, 0,0,45, 1],
['c1x1x1', m9, 32, 0, 0, 12, 0,0,0, 1],
['c1x1x1', m8, 33,-12,-24, 3, 0,0,0],
['b1x2x1', m9, 33, 0, 0, 3, 0,0,45, 1],
['b1x2x1', m9, 33, 0, 0, 6, 0,0,-45, 1],
['b1x2x1', m9, 33, 0, 0, 9, 0,0,45, 1],
['b1x2x1', m9, 33, 0, 0, 12, 0,0,-45, 1],
['b1x2x1', m9, 33, 0, 0, 15, 0,0,45, 1],
['c1x1x1', m9, 33, 0, 0, 18, 0,0,0, 1],
['c1x1x1', m8, 34, 16,-36, 3, 0,0,0],
['b1x2x1', m9, 34, 0, 0, 3, 0,0,45, 1],
['b1x2x1', m9, 34, 0, 0, 6, 0,0,-45, 1],
['b1x2x1', m9, 34, 0, 0, 9, 0,0,45, 1],
['c1x1x1', m9, 34, 0, 0, 12, 0,0,0, 1],
['c1x1x1', m8, 35, 32,-24, 3, 0,0,0],
['b1x2x1', m9, 35, 0, 0, 3, 0,0,45, 1],
['b1x2x1', m9, 35, 0, 0, 6, 0,0,-45, 1],
['b1x2x1', m9, 35, 0, 0, 9, 0,0,45, 1],
['b1x2x1', m9, 35, 0, 0, 12, 0,0,-45, 1],
['b1x2x1', m9, 35, 0, 0, 15, 0,0,45, 1],
['c1x1x1', m9, 35, 0, 0, 18, 0,0,0, 1],
['c1x1x1', m8, 36,-20, 28, 3, 0,0,0],
['b1x2x1', m9, 36, 0, 0, 3, 0,0,45, 1],
['b1x2x1', m9, 36, 0, 0, 6, 0,0,-45, 1],
['b1x2x1', m9, 36, 0, 0, 9, 0,0,45, 1],
['b1x2x1', m9, 36, 0, 0, 12, 0,0,-45, 1],
['b1x2x1', m9, 36, 0, 0, 15, 0,0,45, 1],
['c1x1x1', m9, 36, 0, 0, 18, 0,0,0, 1],
['c1x1x1', m8, 37, 16, 32, 3, 0,0,0],
['b1x2x1', m9, 37, 0, 0, 3, 0,0,45, 1],
['b1x2x1', m9, 37, 0, 0, 6, 0,0,-45, 1],
['b1x2x1', m9, 37, 0, 0, 9, 0,0,45, 1],
['c1x1x1', m9, 37, 0, 0, 12, 0,0,0, 1],
['c1x1x1', m3, 38, 36, -4, 3, 0,0,0],
['b1x2x1', m10, 38, 36, 0, 3, 0,0,90],
['b1x2x1', m10, 38, 36, 12, 3, 0,0,90],
['c1x1x1', m3, 38, 36, 16, 3, 0,0,0],
['c1x1x1', m3, 39, 36, -4, 6, 0,0,0],
['b1x2x1', m10, 39, 36, 0, 6, 0,0,90],
['b1x2x1', m10, 39, 36, 12, 6, 0,0,90],
['c1x1x1', m3, 39, 36, 16, 6, 0,0,0],
['c1x1x1', m3, 40, 36, -4, 9, 0,0,0],
['b1x2x1', m10, 40, 36, 0, 9, 0,0,90],
['b1x2x1', m10, 40, 36, 12, 9, 0,0,90],
['c1x1x1', m3, 40, 36, 16, 9, 0,0,0],
['c1x1x1', m3, 41, 36, -4, 12, 0,0,0],
['b1x2x1', m10, 41, 36, 0, 12, 0,0,90],
['b1x2x1', m10, 41, 36, 12, 12, 0,0,90],
['c1x1x1', m3, 41, 36, 16, 12, 0,0,0],
['b2x2x1', m3, 41, 32, 4, 12, 0,0,0],
['c1x1x1', m3, 42, 36, -4, 15, 0,0,0],
['b2x4x1', m10, 42, 32, 0, 15, 0,0,0],
['c1x1x1', m3, 42, 36, 16, 15, 0,0,0],
['b1x1x1', m3, 43, 36, -4, 18, 0,0,0],
['b1x2x1', m6, 43, 36, 0, 18, 0,0,90],
['b1x2x1', m6, 43, 36, 12, 18, 0,0,90],
['b1x1x1', m3, 43, 36, 16, 18, 0,0,0],
['b2x2x1', m10, 43, 32, 4, 18, 0,0,0],
['c1x1x1', m6, 44, 36, -4, 21, 0,0,0],
['c1x1x1', m6, 44, 36, 16, 21, 0,0,0],
['f1x2x1', m6, 44, 36, 4, 21, 0,0,0],
['f1x2x1', m6, 44, 32, 4, 21, 0,0,0],
['f1x2x1', m6, 44, 36, 6, 24, 0,0,90],
];

Binary file not shown.

View File

@@ -55,9 +55,15 @@ _ini taskbar_vars_ini = { #taskbar_ini_path, "Variables" };
_ini docky_ini = { "/sys/settings/docky.ini", "@" };
unsigned char panels_img_data[] = FROM "bars.raw";
#define PIMG_W 37
#define PIMG_H 27 //27*5
unsigned char panels_img_data[] = FROM "bars_8b.raw";
dword panels_img_pal[] = {
0x00405D74,0x0084FC84,0x00FAFAFA,0x0000B400,
0x00E4E4E4,0x008C9B9C,0x000212FD,0x00D8DEDF,
0x00585C5D,0x0085B7E0,0x009EC6E7,0x0094C0E5,
0x00CB8800,0x00CE3D9E,0x00D20404,0x00485966
};
proc_info Form;
@@ -137,7 +143,7 @@ void main()
void DrawPanelsImage(dword y, n)
{
PutImage(22, y, PIMG_W, PIMG_H, n * PIMG_W * PIMG_H * 3 + #panels_img_data);
PutPaletteImage(n * PIMG_W * PIMG_H + #panels_img_data, PIMG_W, PIMG_H, 22, y, 8, #panels_img_pal);
}
void SetDisabledMode()

View File

@@ -68,6 +68,7 @@ struct TWebBrowser {
void tag_a();
void tag_p();
void tag_img();
void tag_kosicon();
void tag_div();
void tag_h1234_caption();
void tag_ol_ul_dt();
@@ -101,16 +102,16 @@ void TWebBrowser::SetPageDefaults()
img_url.drop();
text_colors.drop();
text_colors.add(0);
if (!secondrun) {
bg_colors.drop();
bg_colors.add(DEFAULT_BG_COL);
} else {
if (secondrun) {
canvas.Init(list.x, list.y, list.w, math.max(list.visible, list.count));
canvas.Fill(0, bg_colors.get(0));
}
bg_colors.drop();
bg_colors.add(DEFAULT_BG_COL);
header = NULL;
draw_y = BODY_MARGIN;
draw_x = left_gap = BODY_MARGIN;
draw_w = list.w - BODY_MARGIN;
draw_w = list.w - BODY_MARGIN - BODY_MARGIN;
linebuf = 0;
redirect = '\0';
list.SetFont(8, 14, 10011000b);
@@ -136,8 +137,6 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
dword bufpos;
bufsize = _bufsize;
if (list.w!=canvas.bufw) canvas.Init(list.x, list.y, list.w, 400*20);
if (bufpointer == _bufpointer) {
custom_encoding = cur_encoding;
} else {
@@ -156,7 +155,6 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
}
}
table.cols.drop();
secondrun = false;
@@ -179,7 +177,7 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
}
}
if (ESBYTE[bufpos] == '&') {
bufpos = GetUnicodeSymbol(#linebuf, sizeof(TWebBrowser.linebuf), bufpos+1, bufpointer+bufsize);
bufpos = GetUnicodeSymbol(#linebuf, sizeof(TWebBrowser.linebuf)-1, bufpos+1, bufpointer+bufsize);
continue;
}
if (ESBYTE[bufpos] == '<') && (is_html) {
@@ -219,19 +217,15 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
AddCharToTheLine(ESBYTE[bufpos]);
}
RenderTextbuf();
list.count = draw_y + style.cur_line_h;
list.CheckDoesValuesOkey();
anchors.current = NULL;
if (!secondrun) {
secondrun = true;
goto _PARSE_START_;
}
RenderTextbuf();
list.count = draw_y + style.cur_line_h;
canvas.bufh = math.max(list.visible, list.count);
buf_data = realloc(buf_data, canvas.bufh * canvas.bufw * 4 + 8);
list.CheckDoesValuesOkey();
anchors.current = NULL;
if (!header) {
strncpy(#header, #version, sizeof(TWebBrowser.header)-1);
DrawTitle(#header);

View File

@@ -67,7 +67,7 @@ bool _tag::parse(dword _bufpos, bufend)
if (!whitepos) || (whitepos > closepos) {
//no param
strncpy(#name, bufpos, math.min(closepos - bufpos, sizeof(tag.name)));
strncpy(#name, bufpos, math.min(closepos - bufpos, sizeof(tag.name)-1));
bufpos = closepos;
} else {
//we have param
@@ -76,7 +76,7 @@ bool _tag::parse(dword _bufpos, bufend)
if (openpos < strchr(closepos+1, '>')) break;
if (!closepos = EAX) {closepos = bufend;break;}
}
strncpy(#name, bufpos, math.min(whitepos - bufpos, sizeof(tag.name)));
strncpy(#name, bufpos, math.min(whitepos - bufpos, sizeof(tag.name)-1));
bufpos = closepos;
params = malloc(closepos - whitepos + 1);

View File

@@ -22,11 +22,10 @@ void TWebBrowser::RenderLine(dword _line)
zoom = list.font_w / BASIC_CHAR_W;
//there is some shit happens!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if (pw > draw_w) {
//draw_w = pw;
NewLine();
if (pw > draw_w + BODY_MARGIN) {
//debugln("shit");
}
if (debug_mode) {
canvas.DrawBar(draw_x, draw_y, pw, list.item_h, 0xCCCccc);
debugln(_line);
@@ -83,12 +82,13 @@ void TWebBrowser::RenderTextbuf()
//debugln(" \\n");
//Is a new line fits in the current line?
//Is a new line fits in the maximum line width?
if (br * list.font_w + draw_x - left_gap >= draw_w) {
br = draw_w - draw_x + left_gap /list.font_w;
if (br < 0) br = 0;
while(br) {
if (ESBYTE[lbp + br]==' ') {
br++;
if (br < len) br++;
break;
}
br--;
@@ -96,7 +96,16 @@ void TWebBrowser::RenderTextbuf()
}
//Maybe a new line is too big for the whole new line? Then we have to split it
if (!br) && (len * list.font_w >= draw_w) {
//debugln("bigbr");
//debugval("draw_x", draw_x);
//debugval("draw_w", draw_w);
br = draw_w - draw_x / list.font_w;
//debugval("cut into 1", br * list.font_w);
if (br < 0) {
NewLine();
br = draw_w - draw_x / list.font_w;
//debugval("cut into 2", br * list.font_w);
}
}
if (br) {
@@ -120,9 +129,13 @@ void TWebBrowser::NewLine()
if (draw_x==left_gap) && (draw_y==BODY_MARGIN) return;
if (t_html) && (!t_body) return;
if (draw_x == style.tag_list.level * 5 * list.font_w + left_gap) {
if (!empty_line) empty_line=true; else return;
if (!empty_line) {
empty_line=true;
} else {
return;
}
} else {
empty_line = false;
}
@@ -138,7 +151,7 @@ bool TWebBrowser::RenderImage(dword cur_img)
int img_x, img_y, img_w, img_h;
dword imgbuf[44];
if (!cur_img) return false;
if (!cur_img) || (!buf_data) return false;
img_h = ESDWORD[cur_img+8];
img_w = ESDWORD[cur_img+4];

View File

@@ -10,6 +10,7 @@ void TWebBrowser::SetStyle()
if (tag.is("a")) { tag_a(); return; }
if (tag.is("p")) { tag_p(); return; }
if (tag.is("img")) { tag_img(); return; }
if (tag.is("kosicon")) { tag_kosicon(); return; }
if (tag.is("div")) { tag_div(); return; }
if (tag.is("br")) { /*draw_x++;*/NewLine(); return; }
if (tag.is("nav")) { style.nav = tag.opened; return; }
@@ -61,7 +62,7 @@ void TWebBrowser::SetStyle()
void TWebBrowser::tag_p()
{
IF (tag.prior[0] == 'h') || (streq(#tag.prior,"td")) return;
if (!tag.opened) && (streq(#tag.prior,"p")) return;
IF (!tag.opened) && (streq(#tag.prior,"p")) return;
NewLine();
}
@@ -119,6 +120,7 @@ void TWebBrowser::tag_iframe()
void TWebBrowser::tag_a()
{
if (!secondrun) return;
if (tag.opened)
{
if (tag.get_value_of("href")) && (!strstr(tag.value,"javascript:"))
@@ -133,6 +135,7 @@ void TWebBrowser::tag_a()
void TWebBrowser::tag_meta_xml()
{
if (secondrun) return;
if (custom_encoding == -1) if (tag.get_value_of("charset"))
|| (tag.get_value_of("content")) || (tag.get_value_of("encoding"))
{
@@ -187,7 +190,7 @@ void TWebBrowser::tag_ol_ul_dt()
void TWebBrowser::tag_li()
{
if (style.nav) return;
//if (style.nav) return;
if (tag.opened) {
if (!style.tag_list.level) style.tag_list.upd_level(1, 'u');
if (!style.pre) NewLine();
@@ -216,13 +219,10 @@ void TWebBrowser::tag_hr()
void TWebBrowser::tag_body()
{
t_body = tag.opened;
if (tag.get_value_of("link")) link_color_default = GetColor(tag.value);
if (tag.get_value_of("alink")) link_color_active = GetColor(tag.value);
if (tag.get_value_of("text")) text_colors.set(0, GetColor(tag.value));
if (tag.get_value_of("bgcolor")) {
bg_colors.set(0, GetColor(tag.value));
canvas.Fill(0, bg_colors.get(0));
}
if (tag.get_value_of("link")) link_color_default = GetColor(tag.value);
if (tag.get_value_of("alink")) link_color_active = GetColor(tag.value);
if (tag.get_value_of("text")) text_colors.set(0, GetColor(tag.value));
if (tag.get_value_of("bgcolor")) bg_colors.set(0, GetColor(tag.value));
// Autodetecting encoding if no encoding was set
if (tag.opened) && (custom_encoding==-1) && (cur_encoding == CH_CP866) {
if (strstr(bufpointer, "\208\190")) ChangeEncoding(CH_UTF8);
@@ -250,10 +250,10 @@ void TWebBrowser::tag_h1234_caption()
NewLine();
}
if (tag.is("h1")) {
list.SetFont(BASIC_CHAR_W*2, 14+12, 10011001b);
list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
style.b = true;
} else if (tag.is("h2")) {
list.SetFont(BASIC_CHAR_W*2, 14+12, 10011001b);
list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
} else {
list.SetFont(6*2, 9+7, 10001001b);
}
@@ -267,6 +267,21 @@ void TWebBrowser::tag_h1234_caption()
}
}
void TWebBrowser::tag_kosicon()
{
dword imgbuf[44];
dword maxicon;
dword shared_i18 = memopen("ICONS18", NULL, SHM_READ);
maxicon = EDX / 18 / 18 / 4;
if (shared_i18) && (tag.get_number_of("n")) {
if (tag.number < maxicon) {
if (draw_x + 18 > canvas.bufw) NewLine();
canvas.DrawImage(draw_x, draw_y-2, 18, 18, 18*18*4*tag.number+shared_i18);
draw_x += 22;
}
}
}
void TWebBrowser::tag_img()
{
@@ -294,7 +309,7 @@ void TWebBrowser::tag_img()
if (!strcmp(tag.value + strrchr(tag.value, '.'), "webp")) goto NOIMG;
strlcpy(#img_path, tag.value, sizeof(img_path)-1);
replace_char(#img_path, ' ', '\0', sizeof(img_path));
replace_char(#img_path, ' ', '\0', sizeof(img_path)-1);
get_absolute_url(#img_path, history.current());
if (check_is_the_adress_local(#img_path)) {
@@ -306,7 +321,7 @@ void TWebBrowser::tag_img()
img_decode stdcall (cache.current_buf, cache.current_size, 0);
if (EAX) goto IMGOK; else goto NOIMG;
} else {
img_url.add(#img_path);
if (img_url.get_pos_by_name(#img_path)==-1) img_url.add(#img_path);
goto NOIMG;
}
@@ -331,31 +346,28 @@ NOIMG:
text_colors.pop();
}
struct TABLE {
int count;
int depth;
int margin;
collection_int cols;
collection_int width;
} table;
int tr_pos, td_pos;
int row_start_y;
int colcount;
dword tallest_cell_in_row;
unsigned table_id;
unsigned colcount;
unsigned tr_pos;
unsigned td_pos;
unsigned row_start_y;
unsigned tallest_cell_in_row;
unsigned cur_cell_w;
void TWebBrowser::tag_table_reset()
{
table.depth = 0;
table.count = 0;
table_id = 0;
colcount = 0;
tr_pos = 0;
td_pos = 0;
table.depth = 0;
cur_cell_w = 0;
}
void TWebBrowser::tag_table()
@@ -369,15 +381,15 @@ void TWebBrowser::tag_table()
if(tag.opened) {
table.depth++;
if (table.depth==1) {
table.count++;
table_id++;
colcount = 0;
td_pos = 0;
row_start_y = draw_y;
if (tag.get_number_of("width")) {
if (strchr(tag.value, '%')) tag.number = list.w * tag.number / 100;
table.width.set(table.count, math.min(tag.number,list.w));
cur_cell_w = math.min(tag.number,list.w);
} else {
table.width.set(table.count, list.w);
cur_cell_w = list.w;
}
}
} else {
@@ -436,26 +448,17 @@ void TWebBrowser::tag_table()
if (!tr_pos) goto _TR_FIX;
/*
if (tag.opened) {
if (tag.get_value_of("bgcolor")) {
bg_colors.add(GetColor(tag.value));
} else {
bg_colors.add(bg_colors.get(0));
}
} */
tallest_cell_in_row = math.max(draw_y+style.cur_line_h-list.item_h+1, tallest_cell_in_row);
style.cur_line_h = list.item_h;
if (tag.opened) {
if (tag.opened)
{
if (!td_pos) {
table.margin = list.w - table.width.get(table.count) / 2 + BODY_MARGIN;
table.margin = list.w - cur_cell_w / 2 + BODY_MARGIN;
draw_x = left_gap = table.margin;
draw_w = table.width.get(table.count) - BODY_MARGIN;
draw_w = cur_cell_w - BODY_MARGIN;
} else {
draw_x = left_gap = left_gap + draw_w;
draw_w = table.width.get(table.count) - left_gap + table.margin - BODY_MARGIN;
draw_w = cur_cell_w - left_gap + table.margin - BODY_MARGIN;
}
if (EAX = table.cols.get(tr_pos-1)-td_pos) {
@@ -466,20 +469,19 @@ void TWebBrowser::tag_table()
}
if (table.cols.get(tr_pos-1)-td_pos>1) && (tag.get_number_of("width")) {
if (strchr(tag.value, '%')) {
tag.number = table.width.get(table.count) - table.margin - 23 - left_gap * tag.number / 100;
tag.number = cur_cell_w * tag.number / 100; //
}
if (tag.number < draw_w) draw_w = tag.number;
if (tag.number < list.w - table.margin - left_gap) draw_w = tag.number;
}
draw_y = row_start_y;
//canvas.WriteText(draw_x, draw_y, 10001001b, 0x0000FE, itoa(draw_x), NULL);
//canvas.WriteText(draw_x, draw_y+20, 10001001b, 0xFF0000, itoa(draw_w), NULL);
td_pos++;
}
}
}
if (draw_x > table.width.get(table.count)) {
if (draw_x > cur_cell_w) {
draw_x = left_gap = table.margin;
draw_w = table.width.get(table.count) - table.margin - 23 - left_gap;
draw_w = cur_cell_w - table.margin - 23 - left_gap;
table.depth = 0;
NewLine();
if (debug_mode) {
@@ -487,11 +489,8 @@ void TWebBrowser::tag_table()
canvas.DrawBar(0, draw_y, 20, 20, 0xFF0000);
}
}
/*
if (left_gap + draw_w > list.w) {
draw_w = list.w - left_gap;
if (debug_mode) debugln("anomaly draw_W");
}
*/
}
//if (left_gap + draw_w > list.w) {
// draw_w = list.w - left_gap;
// if (debug_mode) debugln("anomaly draw_W");
//}
}

View File

@@ -66,6 +66,7 @@ char *unicode_symbols[]={
"lowast","*",
"#128154","<3",
"#128545",":(",
0};

View File

@@ -1,4 +1,4 @@
//Copyright 2007-2021 by Veliant & Leency
//Copyright 2007-2025 by Veliant & Leency
//Asper, lev, Lrz, Barsuk, Nable, hidnplayr...
//BUGS
@@ -79,7 +79,7 @@ char default_dir[] = "/sys";
od_filter filter2 = { 22, "TXT\0HTM\0HTML\0DOCX\0\0" };
char editURL[URL_SIZE+1];
edit_box omnibox_edit = {, 0, 0, 0xffffff,
edit_box omnibox_edit = {250, 0, 0, 0xffffff,
0x94AECE, 0xffffff, 0xffffff,0x10000000,URL_SIZE-2,#editURL,0,,19,19};
//===================================================//
@@ -199,7 +199,7 @@ void main()
GetProcessInfo(#Form, SelfInfo);
ProcessMenuClick();
sc.get();
if (Form.status_window>2) break;
if (Form.status_window & ROLLED_UP) break;
if (Form.height<120) { MoveSize(OLD,OLD,OLD,120); break; }
if (Form.width<280) { MoveSize(OLD,OLD,280,OLD); break; }
draw_window();
@@ -258,6 +258,7 @@ void main()
free(http.content_pointer);
GetImg(false);
}
debugln("end evNetwork");
}
break;
default:
@@ -516,7 +517,6 @@ bool GetLocalFileData(dword _path)
bool GetUrl(dword _http_url)
{
char new_url_full[URL_SIZE+1];
if (!strncmp(_http_url,"http:",5)) {
http.get(_http_url);
return true;
@@ -602,7 +602,7 @@ void OpenPage(dword _open_URL)
strcpy(#new_url, "/tmp0/1/temp/word/document.xml");
}
if (!GetLocalFileData(#new_url)) {
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
}
}
}
@@ -870,7 +870,7 @@ void DrawStatusBar(dword _msg)
{
dword status_y = Form.cheight - STATUSBAR_H + 4;
dword status_w = Form.cwidth - 90;
if (Form.status_window>2) return;
if (Form.status_window & ROLLED_UP) return;
DrawBar(0,Form.cheight - STATUSBAR_H+1, Form.cwidth,STATUSBAR_H-1, sc.work);
if (_msg) {
ESI = math.min(status_w/6, strlen(_msg));
@@ -920,7 +920,7 @@ dword GetAbsoluteActiveURL()
void CheckContentType()
{
char content_type[64];
if (http.header_field("content-type", #content_type, sizeof(content_type))) // application || image
if (http.header_field("content-type", #content_type, sizeof(content_type)-1)) // application || image
if (content_type[0] == 'i') {
EventDownloadAndOpenImage(http.cur_url);
@@ -968,12 +968,14 @@ dword GetImg(bool _new)
for (i = 0; i < WB1.img_url.count; i++)
{
cur_img_url = WB1.img_url.get(i);
if (debug_mode)
{debug("get img: ");debugln(cur_img_url);}
if (cache.has(cur_img_url)==false) {
prbar.max = WB1.img_url.count;
prbar.value = i;
if (GetUrl(cur_img_url)) {DrawStatusBar(cur_img_url); DrawProgress(); return;}
if (GetUrl(cur_img_url)) {
DrawStatusBar(cur_img_url);
DrawProgress();
return;
}
}
}
if (_new) return;

View File

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

View File

@@ -1,17 +1,49 @@
<html>
<head>
<title>Homepage</title>
</head>
<body><pre>Welcome to WebView a Text-Based Browser.
<html><head><title>New tab</title></head>
<body bgcolor=#fff>
Bookmarks:
1. <a href=//kolibrios.org>KolibriOS homepage</a>
2. <a href="//builds.kolibrios.org">Night-builds</a>
3. <a href="//ftp.kolibrios.org">KolibriOS FTP</a>
<table><tr><td width=20><td width=210><pre>
___________________
|# : : #|
| : WebView : |
| : TextBased : |
| : Browser : |
| : : |
| :_____________: |
| ___________ |
| | __ | |
| || | | |
\____||__|_______|__|<font color=#DDD>lc</font>
<font bg=#F8F15B>By the way,</font>
<font bg=#F8F15B> web <font bg=#FF5A7E color=#fff> 1.0 <font bg=#47D018> compatable
<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.
&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; Click on a label in the bottom right corner to change the encoding of a page.
</font>
&bull; You can manually change the encoding of a page by clicking on a label in the bottom right corner.
~+
* +
' |
() .-.,="``"=. - o -
'=/_ \ |
* | '=._ |
\ `=./`, '
. '=.__.=' `=' *
+ +
O * ' .<font color=#DDD>jgs</font>

View File

@@ -1,16 +1,49 @@
<html>
<head>
<meta charset="cp-866">
<title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AD><EFBFBD></title>
</head>
<body><pre><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
1. <a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> KolibriOS</a>
2. <a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
3. <a href="//ftp.kolibrios.org">KolibriOS FTP</a>
<html><head><title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></title></head>
<body bgcolor=#fff>
<font bg=#F8F15B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,</font>
<table><tr><td width=20><td width=210><pre>
___________________
|# : : #|
| : WebView : |
| : <20><><EFBFBD><EFBFBD><EFBFBD><E2AEA2> : |
| : <20><><EFBFBD><EFBFBD> : |
| : : |
| :_____________: |
| ___________ |
| | __ | |
| || | | |
\____||__|_______|__|<font color=#DDD>lc</font>
<font bg=#F8F15B> web <font bg=#FF5A7E color=#fff> 1.0 <font bg=#47D018> compatable
<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>
&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> <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>.
</font>
~+
* +
' |
() .-.,="``"=. - o -
'=/_ \ |
* | '=._ |
\ `=./`, '
. '=.__.=' `=' *
+ +
O * ' .<font color=#DDD>jgs</font>

View File

@@ -2,38 +2,38 @@
<title>TEST</title>
<style>a {display:block;font-size:130%;margin:5px 40px 5px 0;}</style>
<body>
<pre><a href=//wiby.org>wiby.org</a>
<a href=//www.xlr8yourmac.com/OSX/os_x_network_cards.html>OSX network cards</a>
<a href=//macintoshgarden.org/>Macintosh Garden</a>
<table><tr><td>Simplest:
<a href=//nostalgy.net.ru/>nostalgy.net.ru</a>
<pre><h2>HTTP</h2>
<a href=//th99.infania.net>Total Hardware 1999</a>
<a href=//wiby.org>wiby.org</a>
<a href=//menuetos.net>menuetos.net</a>
<a href=//macintosh.garden/>Macintosh Garden</a>
<a href=//pci-ids.ucw.cz>pci.ids</a>
<a href=//toastytech.com/guis/index.html>GUI Gallery</a>
<a href=//www.weitek.com/textual/support/driver.html>weitek</a>
<a href=//www.abandonwarering.com/?Page=Listing>abandonware</a>
<a href=//neonfloppy.sytes.net/articles/win3-usb/>neonfloppy</a>
<a href=//www.win31.de/eindex.htm>win31.de</a>
<h3>VPN-only</h3>
<a href=//dgmag.in>dgmag.in</a>
<a href=//web.archive.org/web/https://bash.im>bash.im</a>
<a href=//web.archive.org/web/https://opennet.ru>opennet</a>
<a href=//linux.org.ru>LOR</a>
<a href=//web.archive.org/web/https://samlib.ru/b>samlib.ru/b</a>
<a href=//web.archive.org/web/https://mirrors.pdp-11.ru>mirrors.pdp-11.ru</a>
<a href=//web.archive.org/web/http://gona.mactar.hu/ATI_Mac/>ATI drivers for Mac</a>
<td>Simple:
<a href=//web.archive.org/web/http://lionovsky.us>lionovsky.us</a>
<a href=//fdd5-25.pdp-11.ru>fdd5-25</a>
<a href=//old-dos.ru>old-dos.ru</a>
<a href=//artcon.ru>artcon.ru</a>
<a href=//nubo.ru>nubo.ru</a>
<a href=//mirrors.pdp-11.ru>mirrors.pdp-11.ru</a>
<a href=//nostalgy.net.ru/>nostalgy.net.ru</a>
<h2>HTTPS :(</h2>
<a href=//os-menuet.narod.ru>os-menuet.narod.ru</a>
<a href=//mestack.narod.ru/index.html>mestack.narod.ru</a>
<a href=//coolthemes.narod.ru/indexold.html>coolthemes.narod.ru</a>
<a href=//vetusware.com>vetusware.com</a>
<a href=//th99.infania.net>Total Hardware 1999</a>
<a href=//toastytech.com/guis/index.html>GUI Gallery</a>
<a href=//menuetos.net>menuetos.net</a>
<tr><td>
Moderate:
<a href=//fdd5-25.pdp-11.ru>fdd5-25</a>
<a href=//lionovsky.us>lionovsky.us</a>
<a href=//acmp.ru/index.asp?main=tasks>acmp.ru</a>
<a href=//old-dos.ru>old-dos.ru</a>
<a href=//www.weitek.com/textual/support/driver.html>weitek</a>
<a href=//www.abandonwarering.com/?Page=Listing>abandonware</a>
<td>Complex:
<a href=//web.archive.org/web/https://artcon.ru>artcon.ru</a>
<a href=//nubo.ru>nubo.ru</a>
<a href=//xn--80abh7bk0c.xn--p1ai>bashorg</a>
<a href=//opennet.ru>opennet</a>
<a href=//linux.org.ru>LOR</a>
<a href=//www.xlr8yourmac.com/OSX/os_x_network_cards.html>OSX network cards</a>
<a href=//samlib.ru/b>samlib.ru/b</a>
<a href=//vetusware.com>vetusware.com</a>
<a href=//electromyne.de>electromyne.de</a>
<a href=//web.archive.org/web/20190403215447//www.thg.ru/>thg</a>

View File

@@ -1,9 +1,8 @@
//Leency, Veliant, Punk_Joker, PavelYakov & KolibriOS Team 2008-2022
//Leency, Veliant, Punk_Joker, PavelYakov & KolibriOS Team 2008-2025
//GNU GPL license.
/*
BUGS:
- F1 in KFM (move Properties to an external app)
- Ctrl+1+2+3+4 in KFM
- Highlight another commands on Ctrl|Shift in KFM like in Classic KFM
TODO:
@@ -11,9 +10,9 @@ TODO:
http://board.kolibrios.org/viewtopic.php?f=23&t=4521&p=77334#p77334
*/
#define ABOUT_TITLE "EOLITE 5.26a"
#define TITLE_EOLITE "Eolite File Manager 5.26a"
#define TITLE_KFM "Kolibri File Manager 2.26a";
#define ABOUT_TITLE "Eolite 5.32"
#define TITLE_EOLITE "Eolite File Manager 5.32"
#define TITLE_KFM "Kolibri File Manager 2.32";
#define MEMSIZE 1024 * 250
#include "../lib/clipboard.h"
@@ -26,12 +25,15 @@ TODO:
#include "../lib/kfont.h"
#include "../lib/collection.h"
#include "../lib/copyf.h"
#include "../lib/dll.h"
#include "../lib/obj/libini.h"
#include "../lib/obj/box_lib.h"
#include "../lib/obj/libimg.h"
#include "../lib/obj/proc_lib.h"
#include "../lib/patterns/history.h"
#include "../lib/patterns/select_list.h"
#include "imgs/images.h"
#include "include/const.h"
@@ -110,6 +112,8 @@ edit_box popin_text = {200,213,180,0xFFFFFF,0x94AECE,0xFFFFFF,0xFFFFFF,0x1000000
PathShow_data FileShow = {0, 56,215, 8, 100, 1, 0, 0x0, 0xFFFfff, #file_name, #temp, 0};
_ini icons_ini = { "/sys/File managers/icons.ini", NULL };
#include "include\settings.h"
#include "include\gui.h"
#include "include\progress_dialog.h"
@@ -121,6 +125,8 @@ PathShow_data FileShow = {0, 56,215, 8, 100, 1, 0, 0x0, 0xFFFfff, #file_name, #t
#include "include\about.h"
#include "include\properties.h"
#include "search.c"
void handle_param()
{
//-p <path> : just show file/folder properties dialog
@@ -146,6 +152,14 @@ void handle_param()
if (ESBYTE[p]=='\0') return;
if (ESBYTE[p]=='\\') switch (ESBYTE[p+1])
{
case 's':
strcpy(path, p + 3);
SearchThread();
ExitProcess();
}
if (ESBYTE[p]=='-') switch (ESBYTE[p+1])
{
case 'p':
@@ -195,6 +209,8 @@ void main()
handle_param();
kfont.init(DEFAULT_FONT);
SystemDiscs.Get();
OpenDir(ONLY_OPEN);
llist_copy(#files_inactive, #files);
@@ -239,6 +255,7 @@ void main()
if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) {
EventChooseFilesRange(old_cur_y, files.cur_y);
} else if (key_modifier&KEY_LCTRL) || (key_modifier&KEY_RCTRL) {
if (!getSelectedCount()) EventChooseFile(old_cur_y);
EventChooseFile(files.cur_y);
DrawStatusBar();
List_ReDraw();
@@ -426,6 +443,9 @@ void main()
}
EventDriveClick(key_scancode);
break;
case SCAN_CODE_KEY_P:
EventCopyItemPath();
break;
case SCAN_CODE_KEY_X:
CopyFilesListToClipboard(CUT);
break;
@@ -435,6 +455,9 @@ void main()
case SCAN_CODE_KEY_G:
EventOpenConsoleHere();
break;
case SCAN_CODE_KEY_F:
EventOpenSearch();
break;
case SCAN_CODE_KEY_V:
EventPaste(path);
break;
@@ -539,16 +562,13 @@ void draw_window()
incn x;
dword title;
static int rand_n;
if (!rand_n) rand_n = random(80);
if (!rand_n) && (Form.width + 1 != screen.w) rand_n = random(80);
#define STBAR_EOLITE_H 16
#define STBAR_KFM_H 21
if (efm) status_bar_h = STBAR_KFM_H;
else status_bar_h = STBAR_EOLITE_H;
if (show_status_bar.checked) {
#define STBAR_EOLITE_H 16
#define STBAR_KFM_H 21
if (efm) status_bar_h = STBAR_KFM_H;
else status_bar_h = STBAR_EOLITE_H;
} else {
status_bar_h = 0;
}
if (efm) title = TITLE_KFM; else title = TITLE_EOLITE;
DefineAndDrawWindow(Form.left+rand_n,Form.top+rand_n,Form.width,Form.height,0x73,NULL,title,0);
GetProcessInfo(#Form, SelfInfo);
@@ -596,7 +616,7 @@ void draw_window()
}
//main rectangles
DrawRectangle(1,40,Form.cwidth-3,Form.cheight - 42-status_bar_h,sc.line);
DrawBar(0,39,1,-show_status_bar.checked*status_bar_h + Form.cheight - 40, sc.work);
DrawBar(0,39,1,-status_bar_h + Form.cheight - 40, sc.work);
EBX = Form.cwidth-1 * 65536 + 1;
$int 64
for (i=0; i<6; i++) DrawBar(0, 34+i, Form.cwidth, 1, MixColors(sc.dark, sc.work, i*10));
@@ -651,17 +671,13 @@ void DrawStatusBar()
{
char status_bar_str[80];
int go_up_folder_exists=0;
dword topcolor;
if (show_status_bar.checked) topcolor=sc.light; else topcolor=sc.work;
DrawBar(0, Form.cheight - status_bar_h-1, Form.cwidth, 1, topcolor);
DrawBar(0, Form.cheight - status_bar_h-1, Form.cwidth, 1, sc.light);
if (efm) {
DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, 2, sc.work);
DrawBar(0, Form.cheight - 2, Form.cwidth, 2, EDX);
DrawBar(Form.cwidth-1, Form.cheight - 19, 1, 17, EDX);
DrawFuncButtonsInKfm();
} else if (show_status_bar.checked) {
} else {
if (files.count>0) && (streq(items.get(0)*304+buf+72,"..")) go_up_folder_exists=1;
DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, status_bar_h, sc.work);
sprintf(#status_bar_str, T_STATUS_EVEMENTS, folder_count-go_up_folder_exists, files.count-folder_count);
@@ -702,7 +718,7 @@ void DrawFilePanels()
DrawButtonsAroundList();
path = location[active_panel^1];
active_panel ^= 1;
OpenDir2(WITH_REDRAW);
OpenDir_without_unselect(WITH_REDRAW);
active_panel ^= 1;
if (!getSelectedCount()) files_inactive.count = files.count;
llist_copy(#files, #files_active);
@@ -715,38 +731,22 @@ void DrawFilePanels()
DrawButtonsAroundList();
path = location[active_panel];
OpenDir2(WITH_REDRAW);
OpenDir_without_unselect(WITH_REDRAW);
}
}
void OpenDir2(char redraw){
if (buf) free(buf);
if (GetDir(#buf, #files.count, path, DIRS_NOROOT)) {
Write_Error(EAX);
history.add(path);
EventHistoryGoBack();
return;
}
SetCurDir(path);
if (files.count>0) && (files.cur_y-files.first==-1) files.cur_y=0;
files.visible = math.min(files.h / files.item_h, files.count);
if (!strncmp(path, "/rd/1",5)) || (!strncmp(path, "/sys/",4))
dir_at_fat16 = true; else dir_at_fat16 = false;
Sorting();
SystemDiscs.Draw();
list_full_redraw = true;
List_ReDraw();
DrawPathBar();
}
void OpenDir(char redraw){
int errornum;
void OpenDir(char redraw) {
unselectAll();
OpenDir_without_unselect(redraw);
}
void OpenDir_without_unselect(char redraw) {
int errornum;
if (buf) free(buf);
if (errornum = GetDir(#buf, #files.count, path, DIRS_NOROOT)) {
history.add(path);
//EventHistoryGoBack();
Dir_Up();
Write_Error(errornum);
return;
@@ -1041,7 +1041,6 @@ void EventHistoryGoForward()
}
}
void ShowOpenWithDialog()
{
byte open_param[4097];
@@ -1115,7 +1114,6 @@ void EventClosePopinForm()
void ShowPopinForm(byte _popin_type)
{
int popinx;
popin_string[0] = -1;
switch(_popin_type) {
case POPIN_PATH:
edit_box_set_text stdcall (#popin_text, path);
@@ -1130,11 +1128,13 @@ void ShowPopinForm(byte _popin_type)
DrawEolitePopup(T_CREATE, T_CANCEL);
break;
case POPIN_RENAME:
if (itdir) && (streq(#file_name,"..")) return;
edit_box_set_text stdcall (#popin_text, #file_name);
DrawEolitePopup(T_RENAME, T_CANCEL);
break;
case POPIN_DELETE:
if (!files.count) return;
popin_string[0] = -1;
if (!getSelectedCount()) && (!strncmp(#file_name,"..",2)) return;
popinx = DrawEolitePopup(T_YES, T_NO);
WriteTextCenter(popinx, 178, POPIN_W, sc.work_text, T_DELETE_FILE);
@@ -1187,7 +1187,7 @@ void FnProcess(byte N)
if (files.count) ShowPopinForm(POPIN_RENAME);
break;
case 3:
if (files.count) && (!itdir) RunProgram("/kolibrios/utils/quark", #file_path);
if (files.count) && (!itdir) RunProgram("/sys/develop/heed", #file_path);
break;
case 4:
if (files.count) && (!itdir) RunProgram("/sys/develop/cedit", #file_path);
@@ -1326,6 +1326,18 @@ void EventOpenConsoleHere()
RunProgram("/sys/shell", #param);
}
void EventOpenSearch()
{
sprintf(#param, "\\s %s", path);
RunProgram(#program_path, #param);
}
void EventCopyItemPath()
{
Clipboard__CopyText(#file_path);
}
void ProceedMouseGestures()
{
char stats;

View File

@@ -1,16 +1,8 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("NO_TCC") ~= "" then return end
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR")
tup.include(HELPERDIR .. "/use_tcc.lua")
if tup.getconfig("LANG") == "ru_RU"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
LFLAGS = LFLAGS .. " -stack=20480"
LIBS += " ../../develop/ktcc/trunk/bin/lib/tiny.o -nostdlib -lbox_lib -lini -limg"
tup.rule("Eolite.c", "c-- -coff /D=" .. C_LANG .. " /OPATH=%o %f", "%B.obj")
tup.rule("Eolite.obj", "objconv -felf32 %f %o", "%B.o")
link_tcc("Eolite.o", "%B.com")
tup.rule("Eolite.c", "c-- /D=$(C_LANG) /OPATH=%o %f" .. tup.getconfig("KPACK_CMD"), "Eolite.com")

View File

@@ -42,7 +42,7 @@ void about_dialog()
about_x = -strlen(ABOUT_TITLE)*18+about_form.cwidth/2;
WriteTextB(about_x+2,107,0x82,0xD49CD2,ABOUT_TITLE);
WriteTextB(about_x,105,0x82,0x9D129D,ABOUT_TITLE);
WriteTextLines(73,163,0x90,sc.work_text," By Leency\nand KolibriOS Team\n 2008-2021",20);
WriteTextLines(73,163,0x90,sc.work_text," By Leency\nand KolibriOS Team\n 2008-2025",20);
#ifdef LANG_RUS
DrawStandartCaptButton(60,about_form.cheight-38,11,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧࠡ<E0A0A7>");
#endif

View File

@@ -38,7 +38,7 @@
char *kfm_func = {
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"HEX-<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
@@ -86,9 +86,9 @@ char *actions[] = {
#define TITLE_SETT "<22><><EFBFBD><EFBFBD><EFBFBD><E0AEA9>"
#define SHOW_DEVICE_CLASS "<22><EFBFBD><EBA2AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E0AEA9><EFBFBD>"
#define SHOW_STATUS_BAR "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>"
#define BIG_ICONS "<22><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define COLORED_LINES "<22><><EFBFBD>ᢥ稢<E1A2A5><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> ᯨ᪥"
#define FONT_BOLD "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>"
#define FONT_SIZE_LABEL "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
#define LIST_LINE_HEIGHT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> ᯨ᪥"
#define SAVE_PATH_AS_DEFAULT "<22><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>"
@@ -137,7 +137,7 @@ char *actions[] = {
char *kfm_func = {
"Info",
"Rename",
"View",
"HEX View",
"Edit",
"Copy",
"Move",
@@ -185,9 +185,9 @@ char *actions[] = {
#define TITLE_SETT "Settings"
#define SHOW_DEVICE_CLASS "Show device class name"
#define SHOW_STATUS_BAR "Show status bar"
#define BIG_ICONS "Big icons in list"
#define COLORED_LINES "Highlight even lines in list"
#define FONT_BOLD "Bold font"
#define FONT_SIZE_LABEL "Font size"
#define LIST_LINE_HEIGHT "List line height"
#define SAVE_PATH_AS_DEFAULT "Current path"

View File

@@ -1,4 +1,3 @@
_ini icons_ini = { "/sys/File managers/icons.ini", NULL };
struct ICONS_INI {
collection exts;

View File

@@ -158,25 +158,27 @@ void _SystemDiscs::DrawOptions(int draw_x)
SystemDiscs.Get();
DrawPopup(draw_x, optionsy, DDW, list.count*KFM2_DEVH, 1, -1, sc.line);
EAX = kfont.bold;
$push eax
for (i=0;i<list.count;i++) {
strcpy(#dev_name, list.get(i));
GetDiskIconAndName(#dev_name, #dev_icon, #disc_name);
if (strstr(path, #dev_name)!=0) is_active=true; else is_active=false;
if (strstr(path, #dev_name)!=0) kfont.bold=true; else kfont.bold=false;
DrawBar(draw_x, optionsy, DDW, KFM2_DEVH, 0xFFFFFF);
DefineButton(draw_x, optionsy, DDW, KFM2_DEVH-1, 100+i+BT_HIDE,0xFFFFFF);
PutImage(draw_x + 5, optionsy+2, 18,17, is_active*7+dev_icon*17*18*3+#devices);
if (is_active) kfont.bold = true;
PutImage(draw_x + 5, optionsy+2, 18,17, kfont.bold*7+dev_icon*17*18*3+#devices);
//strncpy(#volume_label, GetVolumeLabel(#dev_name), sizeof(volume_label));
strcpy(#label_file_name, #dev_name);
//if (dev_name[1]!='k') && (dev_name[2]!='y') {
// if (volume_label) sprintf(#label_file_name, "%s [%s]", #dev_name, #volume_label);
//}
kfont.WriteIntoWindow(draw_x + 24, optionsy+2, 0xFFFfff, 0x000000, kfont.size.pt, #label_file_name+1);
kfont.bold = false;
optionsy += KFM2_DEVH;
}
$pop eax
kfont.bold = EAX;
}

View File

@@ -4,9 +4,11 @@ char file_actions[]=
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Enter
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Ctrl+Ent
-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Ctrl+C
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Ctrl+X
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Ctrl+V
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Ctrl+P
-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+C
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+X
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+V
-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |F2
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Del
@@ -15,8 +17,10 @@ char empty_folder_actions[]=
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Ctrl+V";
char burger_menu_items[] =
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>|Ctrl+N
-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+G
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+R
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+F
-
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|F10
<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>";
@@ -25,6 +29,8 @@ char file_actions[]=
"Ava |Enter
Ava ... |Ctrl+Ent
-
Copy path |Ctrl+P
-
Kopeeri |Ctrl+C
L<EFBFBD>ika |Ctrl+X
Aseta |Ctrl+V
@@ -36,8 +42,10 @@ char empty_folder_actions[]=
"Aseta |Ctrl+V";
char burger_menu_items[] =
"New window|Ctrl+N
-
Open console here|Ctrl+G
V<EFBFBD>rskenda|Ctrl+R
Search|Ctrl+F
-
Settings|F10
About";
@@ -46,6 +54,8 @@ char file_actions[]=
"Open |Enter
Open with... |Ctrl+Ent
-
Copy path |Ctrl+P
-
Copy |Ctrl+C
Cut |Ctrl+X
Paste |Ctrl+V
@@ -57,8 +67,10 @@ char empty_folder_actions[]=
"Paste |Ctrl+V";
char burger_menu_items[] =
"New window|Ctrl+N
-
Open console here|Ctrl+G
Refresh folder|Ctrl+R
Search|Ctrl+F
-
Settings|F10
About";
#endif
@@ -76,17 +88,18 @@ void EventMenuClick(dword _id)
if (active_menu == MENU_FILE) switch(_id) {
case 1: EventOpen(0); break;
case 2: ShowOpenWithDialog(); break;
case 3: CopyFilesListToClipboard(COPY); break;
case 4: CopyFilesListToClipboard(CUT); break;
case 5: EventPaste(path); break;
case 6: FnProcess(2); break;
case 7: ShowPopinForm(POPIN_DELETE); break;
case 8: FnProcess(1); break;
case 3: EventCopyItemPath(); break;
case 4: CopyFilesListToClipboard(COPY); break;
case 5: CopyFilesListToClipboard(CUT); break;
case 6: EventPaste(path); break;
case 7: FnProcess(2); break;
case 8: ShowPopinForm(POPIN_DELETE); break;
case 9: FnProcess(1); break;
}
if (active_menu == MENU_BURGER) switch(_id) {
case 1: EventOpenNewEolite(); break;
case 2: EventOpenConsoleHere(); break;
case 3: EventRefreshDisksAndFolders(); break;
case 3: EventOpenSearch(); break;
case 4: FnProcess(10); break;
case 5: EventShowAbout(); break;
}

View File

@@ -175,8 +175,10 @@ void properties_dialog()
break;
case evMouse:
edit_box_mouse stdcall (#file_name_ed);
edit_box_mouse stdcall (#path_to_file_ed);
if (!apply_question_active) {
edit_box_mouse stdcall (#file_name_ed);
edit_box_mouse stdcall (#path_to_file_ed);
}
break;
case evKey:

View File

@@ -7,11 +7,11 @@ edit_box path_start_ed = {290,50,57,0xffffff,0x94AECE,0xffffff,0xffffff,0x100000
#path_start,0, 100000000000010b,0,0};
more_less_box font_size = { NULL, 9, 22, FONT_SIZE_LABEL };
more_less_box line_height = { NULL, 16, 64, LIST_LINE_HEIGHT };
more_less_box line_height = { NULL, 18, 64, LIST_LINE_HEIGHT };
checkbox show_dev_name = { SHOW_DEVICE_CLASS };
checkbox show_status_bar = { SHOW_STATUS_BAR };
checkbox big_icons = { BIG_ICONS };
checkbox colored_lines = { COLORED_LINES };
checkbox bold_font = { FONT_BOLD };
void settings_dialog()
@@ -51,8 +51,10 @@ void settings_dialog()
break;
}
show_dev_name.click(id);
show_status_bar.click(id);
colored_lines.click(id);
if (bold_font.click(id)) {
kfont.bold^=1;
}
if (font_size.click(id)) {
kfont.size.pt = font_size.value;
kfont.changeSIZE();
@@ -67,12 +69,12 @@ void settings_dialog()
case evKey:
GetKeys();
if (key_scancode==SCAN_CODE_ESC) ExitSettings();
edit_box_key_c stdcall (#path_start_ed,key_ascii << 8);
edit_box_key_c stdcall (#path_start_ed,key_editbox);
break;
case evReDraw:
DefineAndDrawWindow(Form.cwidth-300/2+Form.left, Form.cheight-292/2+Form.top, 400,
-efm*42+345+skin_h,0x34,sc.work,TITLE_SETT,0);
345+skin_h,0x34,sc.work,TITLE_SETT,0);
GetProcessInfo(#Settings, SelfInfo);
DrawSettingsCheckBoxes();
}
@@ -96,10 +98,10 @@ void DrawSettingsCheckBoxes()
y.n = 0;
if (!efm) {
show_dev_name.draw(XXX, y.inc(14));
show_status_bar.draw(XXX, y.inc(25));
}
big_icons.draw(XXX, y.inc(25));
colored_lines.draw(XXX, y.inc(25));
bold_font.draw(XXX, y.inc(25));
font_size.draw(XXX, y.inc(31));
line_height.draw(XXX, y.inc(31));
@@ -121,7 +123,7 @@ void LoadIniSettings()
files.SetFont(6, 9, 10000000b);
show_dev_name.checked = ini.GetInt("ShowDeviceName", true);
show_status_bar.checked = ini.GetInt("ShowStatusBar", true);
kfont.bold = bold_font.checked = ini.GetInt("BoldFont", false);
big_icons.checked = ini.GetInt("BigIcons", false); BigIconsSwitch();
colored_lines.checked = ini.GetInt("ColoredLines", true);
kfont.size.pt = ini.GetInt("FontSize", 13);
@@ -132,7 +134,6 @@ void LoadIniSettings()
Form.height = ini.GetInt("WinH", efm*100+517);
ini.GetString("DefaultPath", #path_start, 4096, "/sys");
path_start_ed.size = path_start_ed.pos = strlen(#path_start);
kfont.init(DEFAULT_FONT);
ini_get_str stdcall ("/sys/SETTINGS/SYSTEM.INI", "system", "font smoothing",#temp,4096,"on");
if(streq(#temp,"off")) kfont.smooth = false; else kfont.smooth = true;
}
@@ -141,7 +142,7 @@ void LoadIniSettings()
void SaveIniSettings()
{
ini.SetInt("ShowDeviceName", show_dev_name.checked);
ini.SetInt("ShowStatusBar", show_status_bar.checked);
ini.SetInt("BoldFont", bold_font.checked);
ini.SetInt("BigIcons", big_icons.checked);
ini.SetInt("ColoredLines", colored_lines.checked);
ini.SetInt("FontSize", kfont.size.pt);

View File

@@ -1,13 +1,3 @@
#define MEMSIZE 100*1000
#include "../lib/fs.h"
#include "../lib/gui.h"
#include "../lib/list_box.h"
#include "../lib/obj/box_lib.h"
#include "../lib/obj/proc_lib.h"
#include "../lib/obj/libini.h"
#include "../lib/patterns/select_list.h"
//===================================================//
// //
// DATA //
@@ -34,11 +24,11 @@ enum {
BTN_CHOOSE_PATH
};
proc_info Form;
#define TOOLBAR_H 100
edit_box edit_name = {230,13, 30,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,sizeof(search_name)-2,#search_name,0, ed_focus,0,0};
edit_box edit_path = {310,260,30,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,sizeof(search_path)-2,#search_path,0, 0b,0,0};
dword mouse_dd;
edit_box edit_name = {230,13, 30,0xffffff,0x94AECE,0xffffff,0xffffff,
0x10000000,sizeof(search_name)-2,#search_name,#mouse_dd, ed_focus,0,0};
edit_box edit_path = {310,260,30,0xffffff,0x94AECE,0xffffff,0xffffff,
0x10000000,sizeof(search_path)-2,#search_path,#mouse_dd, 0b,0,0};
opendialog open_folder_dialog =
{
@@ -49,7 +39,7 @@ opendialog open_folder_dialog =
0, //dword opendir_path,
#search_path, //dword dir_default_path,
#open_dialog_path,
#draw_window,
#draw_window_search,
0,
#search_path, //dword openfile_path,
0, //dword filename_area,
@@ -97,47 +87,72 @@ void RESULTS::drop()
// //
//===================================================//
void main()
void SearchThread()
{
int prev_first, prev_cur_y;
load_dll(boxlib, #box_lib_init,0);
load_dll(libini, #lib_init,1);
load_dll(Proc_lib, #OpenDialog_init,0);
OpenDialog_init stdcall (#open_folder_dialog);
edit_box_set_text stdcall (#edit_name, ".ini");
edit_box_set_text stdcall (#edit_path, "/kolibrios");
if (!ESBYTE[path]) strcpy(path, "/sys");
edit_box_set_text stdcall (#edit_path, path);
@SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER);
loop() switch(@WaitEvent())
{
case evMouse:
edit_box_mouse stdcall (#edit_name);
edit_box_mouse stdcall (#edit_path);
prev_cur_y = select_list.cur_y;
if (SelectList_ProcessMouse()) {
SelectList_Draw();
} else {
SelectList_DrawLine(select_list.cur_y);
}
if (mouse.key&MOUSE_RIGHT) && (mouse.up) && (select_list.MouseOver()) EventOpenFile(false);
break;
if (select_list.MouseOver(mouse.x, mouse.y))
{
if (mouse.key&MOUSE_LEFT) && (mouse.up) {
if (prev_cur_y == select_list.cur_y) EventRunFile();
}
if (mouse.key&MOUSE_RIGHT) && (mouse.up) {
EventShowFileInFolder();
}
}
}
break;
case evButton:
switch (@GetButtonID()) {
case 1: @ExitProcess(); break;
case BTN_SEARCH: EventSearch(); break;
case BTN_CHOOSE_PATH: EventChooseSearchInPath();
}
break;
break;
case evKey:
@GetKeys();
edit_box_key stdcall (#edit_name);
edit_box_key stdcall (#edit_path);
GetKeys();
edit_box_key_c stdcall (#edit_name, key_editbox);
edit_box_key_c stdcall (#edit_path, key_editbox);
if (key_scancode == SCAN_CODE_TAB) {
if (edit_name.flags & ed_focus) {
edit_name.flags >< edit_path.flags;
} else if (edit_path.flags & ed_focus) {
edit_path.flags -= ed_focus;
} else {
edit_name.flags += ed_focus;
}
draw_window_search();
break;
}
if (edit_name.flags & ed_focus) || (edit_path.flags & ed_focus) {
if (SCAN_CODE_ENTER == key_scancode) EventSearch();
} else {
if (SCAN_CODE_ENTER == key_scancode) EventOpenFile(true);
if (SCAN_CODE_ENTER == key_scancode) EventRunFile();
prev_first = select_list.first;
prev_cur_y = select_list.cur_y;
if (select_list.ProcessKey(key_scancode)) {
@@ -152,33 +167,37 @@ void main()
break;
case evReDraw:
draw_window();
sc.get();
DefineAndDrawWindow(screen.w-600/2,100,640,600,0x73,sc.work,T_WINDOW_HEADER,0);
GetProcessInfo(#Form, SelfInfo);
IF (Form.status_window&ROLLED_UP) break;
if (Form.width < 370) { MoveSize(OLD,OLD,370,OLD); break; }
if (Form.height < 250) { MoveSize(OLD,OLD,OLD,250); break; }
draw_window_search();
break;
}
}
void draw_window()
#define TOOLBAR_H 100
#define PAD 10
#define LISTX PAD
#define LISTY TOOLBAR_H
void draw_window_search()
{
sc.get();
DefineAndDrawWindow(screen.w-600/2,100,640,600,0x73,sc.work,T_WINDOW_HEADER,0);
GetProcessInfo(#Form, SelfInfo);
IF (Form.status_window&ROLLED_UP) return;
if (Form.width < 270) { MoveSize(OLD,OLD,270,OLD); return; }
if (Form.height < 200) { MoveSize(OLD,OLD,OLD,200); return; }
SelectList_Init( 0, TOOLBAR_H,
Form.cwidth-scroll1.size_x-1,
Form.cheight-TOOLBAR_H-1);
SelectList_Init(LISTX, LISTY, Form.cwidth-scroll1.size_x-LISTX-LISTX, Form.cheight-TOOLBAR_H-PAD);
SelectList_Draw();
DrawBar(0, TOOLBAR_H-1, Form.cwidth, 1, sc.line);
DrawWideRectangle(0, LISTY-PAD-1, Form.cwidth, Form.cheight-TOOLBAR_H+PAD+1, 9, sc.work);
DrawRectangle(PAD-1, LISTY-1, select_list.w+1, select_list.h+1, sc.line);
DrawBar(0, 0, Form.cwidth, TOOLBAR_H-1, sc.work);
DrawEditBox(#edit_name);
WriteText(edit_name.left-2, edit_name.top-20, 0x90, sc.work_text, T_SEARCH_NAME);
edit_path.width = Form.cwidth - 314;
DrawStandartCaptButton(PAD, 63, BTN_SEARCH, T_BUTTON_SEARCH);
DrawFileBox(#edit_path, T_SEARCH_PATH, BTN_CHOOSE_PATH);
DrawStandartCaptButton(10, 63, BTN_SEARCH, T_BUTTON_SEARCH);
}
_ini ini = { "/sys/File managers/icons.ini", "icons16" };
void SelectList_DrawLine(dword i)
{
int yyy = i*select_list.item_h+select_list.y;
@@ -201,16 +220,19 @@ void SelectList_DrawLine(dword i)
} else {
strcpy(#tname, results.name.get(select_list.first + i));
strlwr(#tname);
icon = ini.GetInt(#tname + strrchr(#tname, '.'), 2);
icons_ini.section = "icons16";
icon = icons_ini.GetInt(#tname + strrchr(#tname, '.'), 2);
}
#define ICONX 7
DrawBar(select_list.x, yyy, ICONX-1, select_list.item_h, 0xFFFfff);
DrawBar(select_list.x+ICONX+18, yyy, select_list.w-ICONX-18, select_list.item_h, bg);
draw_icon_16(select_list.x+ICONX, yyy+1, icon);
DrawBar(LISTX, yyy, ICONX, select_list.item_h, 0xFFFfff);
DrawBar(LISTX+ICONX, yyy, 18, 1, 0xFFFfff);
DrawBar(LISTX+ICONX, yyy + select_list.item_h-1, 18, 1, 0xFFFfff);
DrawBar(LISTX+ICONX+18, yyy, select_list.w-ICONX-18, select_list.item_h, bg);
draw_icon_16(LISTX+ICONX, yyy+1, icon);
WriteText(select_list.x + ICONX+18+4,yyy+select_list.text_y,0x90, col, results.name.get(select_list.first + i));
WriteText(select_list.x + ICONX+18+206,yyy+select_list.text_y,0x90, col, results.path.get(select_list.first + i));
WriteText(LISTX + ICONX+18+4,yyy+select_list.text_y,0x90, col, results.name.get(select_list.first + i));
WriteText(LISTX + ICONX+18+206,yyy+select_list.text_y,0x90, col, results.path.get(select_list.first + i));
}
void SelectList_LineChanged()
@@ -218,6 +240,12 @@ void SelectList_LineChanged()
return;
}
void getfullpath(dword to, path, name) {
strcpy(to, path);
chrcat(to, '/');
strcat(to, name);
}
//===================================================//
// //
// EVENTS //
@@ -232,22 +260,21 @@ void EventChooseSearchInPath()
}
}
void getfullpath(dword to, path, name) {
strcpy(to, path);
chrcat(to, '/');
strcat(to, name);
}
void EventOpenFile(int run_file_not_show_in_folder)
void EventShowFileInFolder()
{
char full_path[4096];
int pos = select_list.cur_y;
getfullpath(#full_path, results.path.get(pos), results.name.get(pos));
if (run_file_not_show_in_folder) {
RunProgram("/sys/@open", #full_path);
} else {
RunProgram("/sys/file managers/eolite", #full_path);
}
RunProgram(#program_path, #full_path);
}
void EventRunFile()
{
char full_path[4096];
int pos = select_list.cur_y;
getfullpath(#full_path, results.path.get(pos), results.name.get(pos));
if (dir_exists(#full_path)) chrcat(#full_path, '/');
RunProgram("/sys/@open", #full_path);
}
void EventSearch()
@@ -289,6 +316,4 @@ void find_loop(dword way)
}
}
stop:

View File

@@ -1,6 +0,0 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru_RU"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("font_viewer.c", "c-- /D=$(C_LANG) /OPATH=%o %f" .. tup.getconfig("KPACK_CMD"), "font_viewer.com")

View File

@@ -1,4 +0,0 @@
@del kf_view
@C-- font_viewer.c
@rename font_viewer.com kf_view
if not exist kf_view ( @pause )

View File

@@ -26,15 +26,9 @@ struct collection_int
:void collection_int::add(dword _in) {
unsigned i;
if (!buf) {
//if (buf_size) notify("'buf_size on empty buf' -A");
buf_size = 4096 * 5;
buf = malloc(4096 * 5);
//if (!buf) notify("'malloc error' -E");
} else if (count + 1 * DWSIZE4 >= buf_size) {
if (!buf) || (count + 1 * DWSIZE4 >= buf_size) {
buf_size += 4096 * 5;
buf = realloc(buf, buf_size);
//if (!buf) notify("'realloc error' -E");
}
i = count * DWSIZE4 + buf;
ESDWORD[i] = _in;
@@ -77,8 +71,8 @@ struct collection_int
:void collection_int::drop() {
count = 0;
if (buf) buf = free(buf);
buf_size = 0;
//if (buf) buf = free(buf);
//buf_size = 0;
}
/*========================================================
@@ -97,31 +91,30 @@ struct collection
dword get(); //get_name_by_pos
dword get_pos_by_name();
void drop();
void increase_data_size();
dword get_last();
bool pop();
};
:void collection::increase_data_size() {
if (realloc_size<4096) realloc_size = 4096;
if (!data_size) {
data_size = realloc_size;
data_start = malloc(data_size);
} else {
data_size = data_size + realloc_size;
data_start = realloc(data_start, data_size);
}
}
:dword collection::add(dword in) {
dword len = strlen(in);
while (offset.get(count) + len + 4 > data_size) {
increase_data_size();
unsigned cur_buf_size;
if (!count) {
cur_buf_size = 0;
} else {
cur_buf_size = offset.get(count);
}
strncpy(data_start+offset.get(count), in, len);
if (realloc_size<4096) realloc_size = 4096;
while (cur_buf_size + len + 4 > data_size) {
data_size += realloc_size;
data_start = realloc(data_start, data_size);
}
strncpy(data_start+cur_buf_size, in, len);
count++;
offset.set(count, offset.get(count-1) + len + 1);
return data_start+offset.get(count-1);
offset.set(count, cur_buf_size + len + 1);
return data_start + cur_buf_size;
}
:dword collection::get(dword pos) {

View File

@@ -17,17 +17,25 @@ struct CANVAS {
void Show();
void Fill();
void DrawBar();
void DrawImage();
void WriteText();
void PutPixel();
void AlignCenter();
void AlignRight();
void IncreaseBufSize();
bool BufIsInvalid();
};
char draw_buf_not_enaught_ram[] =
"'CANVAS requested %i MB more memory than the system has.
Application could be unstable.' -E";
bool CANVAS::BufIsInvalid()
{
if (!buf_data) || (!bufw) return true;
return false;
}
bool CANVAS::Init(dword i_bufx, i_bufy, i_bufw, i_bufh)
{
bufx = i_bufx;
@@ -45,6 +53,7 @@ bool CANVAS::Init(dword i_bufx, i_bufy, i_bufw, i_bufh)
void CANVAS::Fill(dword start_pointer, i_fill_color)
{
dword max_i = bufw * bufh * 4 - start_pointer/4;
if (BufIsInvalid()) return;
fill_color = i_fill_color | 0xFF000000; //set background color non-transparent
@MEMSETD(buf_data+start_pointer+8, max_i, fill_color);
}
@@ -52,6 +61,7 @@ void CANVAS::Fill(dword start_pointer, i_fill_color)
void CANVAS::DrawBar(dword x, y, w, h, color)
{
dword i, j;
if (BufIsInvalid()) return;
if (y + h >= bufh) IncreaseBufSize();
for (j=0; j<h; j++) {
for (i = y+j*bufw+x<<2+8+buf_data; i<y+j*bufw+x+w<<2+8+buf_data; i+=4) {
@@ -60,12 +70,30 @@ void CANVAS::DrawBar(dword x, y, w, h, color)
}
}
void CANVAS::DrawImage(dword x, y, w, h, img)
{
dword i, j, p=0;
dword ystart;
if (BufIsInvalid()) return;
if (y < 0) y = 0;
if (x < 0) x = 0;
while (y + h >= bufh) IncreaseBufSize(); //WHY NOT WORKING?
for (j=0; j<h; j++) {
ystart = y + j * bufw + x;
for (i = ystart<<2+8+buf_data; i<ystart+w<<2+8+buf_data; i+=4) {
ESDWORD[i] = ESDWORD[img+p];
p+=4;
}
}
}
void CANVAS::WriteText(dword x, y, byte fontType, dword color, str_offset, strlen)
{
#define BUGFIX_32000 32000
dword ydiv=0;
dword reserve_data_1, reserve_data_2;
dword new_buf_offset;
if (BufIsInvalid()) return;
if (y + 30 >= bufh) IncreaseBufSize();
if (y < BUGFIX_32000) {
ESI = strlen;
@@ -92,6 +120,7 @@ void CANVAS::WriteText(dword x, y, byte fontType, dword color, str_offset, strle
void CANVAS::PutPixel(dword x, y, color)
{
dword pos = y*bufw+x*4+8+buf_data;
if (BufIsInvalid()) return;
ESDWORD[pos] = color;
}
@@ -99,6 +128,7 @@ void CANVAS::AlignRight(dword x,y,w,h, content_width)
{
dword i, j, l;
dword content_left = w - content_width / 2;
if (BufIsInvalid()) return;
for (j=0; j<h; j++)
{
for (i=j*w+w-x*4, l=j*w+content_width+x*4; (i>=j*w+content_left*4) && (l>=j*w*4); i-=4, l-=4)
@@ -112,6 +142,7 @@ void CANVAS::AlignCenter(dword x,y,w,h, content_width)
{
dword i, j, l;
dword content_left = w - content_width / 2;
if (BufIsInvalid()) return;
for (j=0; j<h; j++)
{
for (i=j*w+content_width+content_left*4, l=j*w+content_width+x*4; (i>=j*w+content_left*4) && (l>=j*w*4); i-=4, l-=4)
@@ -123,6 +154,7 @@ void CANVAS::AlignCenter(dword x,y,w,h, content_width)
void CANVAS::Show(dword _y_offset, _h)
{
if (BufIsInvalid()) return;
PutPaletteImage(_y_offset * bufw * 4 + buf_data+8, bufw, _h, bufx, bufy, 32, 0);
}
@@ -133,6 +165,8 @@ void CANVAS::IncreaseBufSize()
dword free_ram_size;
char error_str[256];
if (!bufw) return;
if (!buf_data) {
alloc_size = bufh * bufw * 4 + 8;
buf_data = malloc(alloc_size);

View File

@@ -66,10 +66,11 @@ int kfont_char_width[255];
:bool KFONT::init(dword font_path)
{
dword fsize_notused;
if(font)free(font);
if(font) font = free(font);
read_file(font_path, #font_begin, #fsize_notused);
if(!EAX) {
RunProgram("/sys/@notify", "'Error: KFONT is not loaded.' -E");
RunProgram("/sys/@notify", "'Error: KFONT is not loaded' -E");
kfont.height = 14;
return false;
}
changeSIZE();
@@ -99,6 +100,10 @@ int kfont_char_width[255];
:dword KFONT::getsize(byte font_size, dword text1)
{
if (!font) {
size.width = strlen(text1) * 8;
return size.width;
}
size.height = size.width = 0;
size.offset_x = size.offset_y = -1;
if (size.pt != font_size) {
@@ -275,6 +280,11 @@ inline fastcall dword b32(EAX) { return DSDWORD[EAX]; }
{
if(!text1)return 0;
getsize(font_size, text1);
if (!font) {
EDI = _background;
WriteText(x, y, 0xD0, _color, text1);
return size.width;
}
raw_size = NULL;
WriteIntoBuffer(0, -size.offset_y, size.width-size.offset_x,
size.height-size.offset_y, _background, _color, font_size, text1);

View File

@@ -9,7 +9,6 @@
#pragma option -CPA
#initallvar 0
#ifndef __COFF__
#jumptomain FALSE
#startaddress 0
@@ -30,17 +29,6 @@ dword I_Param = #param;
dword I_Path = #program_path;
char param[4096];
char program_path[4096];
#else
extern dword __argv;
extern dword __path;
dword I_Param = #__argv;
dword I_Path = #__path;
#define param __argv
#define program_path __path
#define ______INIT______ start
#endif
#define bool int
@@ -403,6 +391,7 @@ inline fastcall int TestBit( EAX, CL)
//------------------------------------------------------------------------------
#define MINIMIZED 0x02
#define ROLLED_UP 0x04
:void DefineAndDrawWindow(dword _x, _y, _w, _h, _window_type, _bgcolor, _title, _flags)
{

View File

@@ -116,17 +116,10 @@
EAX = 37;
EBX = 2;
$int 64
$mov ebx, eax
$mov ecx, eax
key = EAX;
$and eax, 0x00000001
$shr ebx, 1
$and ebx, 0x00000001
$shr ecx, 2
$and ecx, 0x00000001
lkm = EAX;
pkm = EBX;
mkm = ECX;
lkm = EAX&MOUSE_LEFT;
pkm = EAX&MOUSE_RIGHT;
mkm = EAX&MOUSE_MIDDLE;
//when you release the MOUSE button
// Mouse Move Event

View File

@@ -6,37 +6,6 @@
#include "../lib/kolibri.h"
#endif
#ifdef __COFF__
extern dword edit_box_draw;
extern dword edit_box_key_safe;
extern dword edit_box_mouse;
extern dword edit_box_set_text;
extern dword scrollbar_v_draw;
extern dword scrollbar_v_mouse;
extern dword scrollbar_h_draw;
extern dword scrollbar_h_mouse;
extern dword PathShow_prepare;
extern dword PathShow_draw;
extern dword progressbar_draw;
extern dword progressbar_progress;
extern dword frame_draw;
/*
Legacy support
For new programs need to use edit_box_key_safe (or edit_box_key_c
with a define below)
TODO: change in all cmm programs edit_box_key to edit_box_key_safe (edit_box_key_c)
See examples in eolite and imgedit
This define changed all edit_box_key_c to edit_box_key_safe identifier's
*/
#define edit_box_key_c edit_box_key_safe
#else
#ifndef INCLUDE_DLL_H
#include "../lib/dll.h"
#endif
@@ -242,5 +211,3 @@ struct frame
frame_draw stdcall (#frame123);
}
#endif

View File

@@ -44,15 +44,14 @@ signed SelectList_ProcessMouse()
return true;
}
if (mouse.up) && (mouse.click)
if (select_list.ProcessMouse(mouse.x, mouse.y)) {
SelectList_LineChanged();
return true;
}
if (mouse.up) && (select_list.ProcessMouse(mouse.x, mouse.y)) {
SelectList_LineChanged();
return true;
}
return false;
}
void SelectList_DrawBorder() {
:void SelectList_DrawBorder() {
DrawRectangle3D(select_list.x-2, select_list.y-2,
select_list.w+3+scroll1.size_x, select_list.h+3,
sc.dark, sc.light);
@@ -61,8 +60,8 @@ void SelectList_DrawBorder() {
void SelectList_DrawScroller()
{
scroll1.bckg_col = MixColors(sc.work, 0xBBBbbb, 80);
scroll1.frnt_col = MixColors(sc.work,0xFFFfff,120);
scroll1.bckg_col = sc.dark; // MixColors(sc.work, 0xBBBbbb, 80);
scroll1.frnt_col = sc.light; // MixColors(sc.work,0xFFFfff,120);
scroll1.line_col = sc.line;
scroll1.max_area = select_list.count;

View File

@@ -273,7 +273,7 @@ void draw_list()
}
init = false;
if (selected) WriteText(5, selected-1*ITEM_H + menu1.y + menu1.text_y, TEXT_FONT_TYPE, 0xEE0000, "\x10"); // ?
if (selected) WriteText(5, selected-1*ITEM_H + menu1.y + menu1.text_y +3, 0x80, 0xEE0000, "\x10"); // ?
}
void click()

View File

@@ -1,8 +1,4 @@
#define MEMSIZE 1024*30
#define ENTRY_POINT #main
#include "../lib/kfont.h"
#include "../lib/gui.h"
#define BARH 28
#define WINW 528
@@ -12,11 +8,8 @@ char active_tab = 0;
char colored = true;
dword checkbox_flag;
void main()
void main_kfont()
{
proc_info Form;
mem_init();
checkbox_flag = memopen("CHECKBOX", NULL, SHM_READ);
if (!param) strcpy(#param, DEFAULT_FONT);
@@ -48,7 +41,7 @@ void main()
case evReDraw:
sc.get();
DefineAndDrawWindow(215,100,WINW+9,WINH+GetSkinHeight()+4,0x74,0xFFFFFF,#title,0);
DefineAndDrawWindow(215,100,WINW+9,WINH+skin_h+4,0x74,0xFFFFFF,#title,0);
GetProcessInfo(#Form, SelfInfo);
if (Form.status_window&ROLLED_UP) break;
_DRAW_WINDOW_CONTENT:

View File

@@ -0,0 +1,13 @@
#define MEMSIZE 1024*20
#define ENTRY_POINT #main
#include "../lib/fs.h"
void main()
{
char param2[4096];
strcpy(#param2, "\\s ");
strncpy(#param2 + 3, #param, sizeof(param2) - 2 - 3);
RunProgram("/sys/File managers/Eolite", #param2);
ExitProcess();
}

View File

@@ -10,11 +10,13 @@ SOFTWARE CENTER v2.87
#include "..\lib\obj\libini.h"
#include "..\lib\kfont.h"
#include "..\lib\list_box.h"
#include "..\lib\collection.h"
proc_info Form;
#include "font_viewer.h"
llist list;
collection app_path_collection=0;
dword app_path_collection;
bool kolibrios_mounted;
int window_width,
@@ -30,17 +32,11 @@ char window_title[128],
bool small_screen = false;
struct SW_COLORS
{
dword list_bg;
dword text;
dword graph;
dword dark;
dword light;
} swc;
block selection[128];
#define MAX_ITEMS 75
#define MAX_FPATH 1024
void load_ini_config(dword _ini_path)
{
_ini ini;
@@ -57,17 +53,21 @@ void main()
{
dword id;
kfont.init(DEFAULT_FONT);
load_dll(libini, #lib_init,1);
kolibrios_mounted = dir_exists("/kolibrios");
if (param) {
if (streq(#param + strlen(#param) - 3, ".kf")) {
main_kfont();
} else if (param) {
strcpy(#settings_ini_path, #param);
} else {
strcpy(#settings_ini_path, "/sys/settings/");
strcat(#settings_ini_path, I_Path + strrchr(I_Path, '/'));
strcat(#settings_ini_path, ".ini");
}
load_dll(libini, #lib_init,1);
kolibrios_mounted = dir_exists("/kolibrios");
app_path_collection = malloc(MAX_FPATH*MAX_ITEMS);
load_ini_config(#settings_ini_path);
list.cur_y = -1;
@@ -99,8 +99,8 @@ void main()
break;
case evReDraw:
SetAppColors();
DefineAndDrawWindow(screen.w-window_width/2,screen.h-window_height/2,window_width,window_height,0x74,0,"",0);
sc.get();
GetProcessInfo(#Form, SelfInfo);
if (Form.status_window&ROLLED_UP) {
DrawTitle(#window_title);
@@ -110,41 +110,18 @@ void main()
DrawTitle(#window_title);
list.y = 0;
} else {
DrawTitle(NULL);
DrawTitle(NULL);
DrawTopBar();
}
DrawList();
DrawBar(0, row +1 * list.item_h + list_pos, Form.cwidth, -row - 1 * list.item_h - list_pos + Form.cheight, swc.list_bg);
DrawBar(0, row +1 * list.item_h + list_pos, Form.cwidth, -row - 1 * list.item_h - list_pos + Form.cheight, sc.light);
DrawSelection();
}
}
void SetAppColors()
{
dword bg_col, old_list_bg_color;
sc.get();
old_list_bg_color = swc.list_bg;
bg_col = sc.work;
if (skin_is_dark())
{
//dark colors
swc.list_bg = sc.work;
swc.text = sc.work_text;
swc.dark = sc.dark;
swc.light = sc.light;
} else {
//light colors
swc.list_bg = 0xF3F3F3;
swc.text = 0x000000;
swc.dark = 0xDCDCDC;
swc.light = 0xFCFCFC;
}
}
void DrawList() {
list.count = 0;
row = -1;
app_path_collection.drop();
list_pos = list.y;
list.column_max = window_width - 10 / list.item_w;
ini_enum_sections stdcall (#settings_ini_path, #process_sections);
@@ -168,7 +145,7 @@ byte draw_icons_from_section(dword key_value, key_name, sec_name, f_name)
col=0;
}
if (col==0) DrawBar(0, row * list.item_h + list_pos, Form.cwidth, list.item_h, swc.list_bg);
if (col==0) DrawBar(0, row * list.item_h + list_pos, Form.cwidth, list.item_h, sc.light);
DefineButton(col*list.item_w+6, row*list.item_h + list_pos,list.item_w,list.item_h-3,list.count + 100 + BT_HIDE,0);
icon_char_pos = strchr(key_value, ',');
@@ -177,20 +154,21 @@ byte draw_icons_from_section(dword key_value, key_name, sec_name, f_name)
selection[list.count].x = icon_x-2;
selection[list.count].y = icon_y-2;
if (icon_char_pos) ESBYTE[icon_char_pos] = '\0'; //delete icon from string
app_path_collection.add(key_value);
strncpy(list.count * MAX_FPATH + app_path_collection, key_value, MAX_FPATH);
text_x = col*list.item_w+5;
text_y = list.item_h - 40 / 2;
if (!strchr(key_name, ' ')) {//|| (kfont.getsize(key_name)+30<list.item_w) <== too slow
kfont.WriteIntoWindowCenter(text_x, row*list.item_h+46 + list_pos, list.item_w,0, swc.list_bg, swc.text, 12, key_name);
kfont.WriteIntoWindowCenter(text_x, row*list.item_h+46 + list_pos, list.item_w,0, sc.light, sc.work_text, 12, key_name);
} else {
space_pos = strrchr(key_name, ' ');
ESBYTE[key_name+space_pos-1] = '\0';
kfont.WriteIntoWindowCenter(text_x, row*list.item_h+46 + list_pos - 2, list.item_w,0, swc.list_bg, swc.text, 12, key_name);
kfont.WriteIntoWindowCenter(text_x, row*list.item_h+46 + list_pos + 13, list.item_w,0, swc.list_bg, swc.text, 12, key_name+space_pos);
kfont.WriteIntoWindowCenter(text_x, row*list.item_h+46 + list_pos - 2, list.item_w,0, sc.light, sc.work_text, 12, key_name);
kfont.WriteIntoWindowCenter(text_x, row*list.item_h+46 + list_pos + 13, list.item_w,0, sc.light, sc.work_text, 12, key_name+space_pos);
}
if (icon_char_pos) icon_id = atoi(icon_char_pos+1);
if (Form.cwidth) draw_icon_32(icon_x, icon_y, swc.list_bg, icon_id);
if (Form.cwidth) draw_icon_32(icon_x, icon_y, sc.light, icon_id);
list.count++;
col++;
return true;
@@ -212,10 +190,9 @@ byte process_sections(dword sec_name, f_name)
old_row = row;
if (!small_screen) {
DrawBar(0, row * list.item_h + list_pos, Form.cwidth , 29, swc.list_bg);
text_len = kfont.WriteIntoWindow(10, row * list.item_h + 10 + list_pos, swc.list_bg, swc.text, 15, sec_name);
DrawBar(text_len+20, row * list.item_h + list_pos + 20, Form.cwidth-text_len-20, 1, swc.dark);
DrawBar(text_len+20, row * list.item_h + list_pos + 21, Form.cwidth-text_len-20, 1, swc.light);
DrawBar(0, row * list.item_h + list_pos, Form.cwidth , 29, sc.light);
text_len = kfont.WriteIntoWindow(10, row * list.item_h + 10 + list_pos, sc.light, sc.work_text, 15, sec_name);
DrawBar(text_len+20, row * list.item_h + list_pos + 20, Form.cwidth-text_len-20, 2, sc.work);
list_pos += 29;
}
ini_enum_keys stdcall (f_name, sec_name, #draw_icons_from_section);
@@ -233,7 +210,7 @@ void DrawTopBar()
void EventIconClick(dword appid)
{
char run_app_path[4096];
dword app_path = app_path_collection.get(appid);
dword app_path = MAX_FPATH * appid + app_path_collection;
dword param_pos = strchr(app_path, '|');
if (param_pos) {
ESBYTE[param_pos] = NULL;
@@ -273,7 +250,7 @@ void DrawSelection()
int i;
dword col;
for (i=0; i<list.count; i++) {
if (i==list.cur_y) col=0x0080FF; else col=swc.list_bg;
if (i==list.cur_y) col=0x0080FF; else col=sc.light;
DrawWideRectangle(selection[i].x, selection[i].y, 36, 36, 2, col);
}
}

View File

@@ -1,6 +0,0 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru_RU"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("search.c", "c-- /D=$(C_LANG) /OPATH=%o %f" .. tup.getconfig("KPACK_CMD"), "search.com")

View File

@@ -1,10 +0,0 @@
@del search
@c-- /D=LANG_ENG search.c
@rename search.com search
@del warning.txt
if exist search (
@exit
) else (
@pause
)

View File

@@ -1,10 +0,0 @@
@del search
@c-- /D=LANG_RUS search.c
@rename search.com search
@del warning.txt
if exist search (
@exit
) else (
@pause
)

View File

@@ -23,11 +23,8 @@ MAX_TRIANGLES equ 12
SCREEN_X equ 320
SCREEN_Y equ 200
include 'lang.inc'
include '..\..\..\macros.inc'
;purge mov
include 'ascl.inc'
include 'ascgl.inc'
START:
init_sin_cos:
@@ -65,7 +62,47 @@ still:
; cmp eax,3 ; button in buffer ?
jz button
fps 220,8,cl_White,cl_Black
; FPS - Set Frame Per Second Display
fps_show_frequency=40
macro fps x,y,color,delcolor
{
local spdat,savetime,new_time,fps,fps_cntr,out_fps,new_time,ttt
local no_out_fps
jmp spdat
savetime dd 0
fps_cntr dd 0
fps dd 0
ttt dd 0
spdat:
get_time:
mov eax,3
mcall
cmp eax,[savetime]
jne new_time
inc [fps_cntr]
cmp dword [ttt],0
je out_fps
dec dword [ttt]
jmp no_out_fps
new_time:
mov [savetime],eax
mov ebx,[fps_cntr]
mov [fps],ebx
mov [fps_cntr],0
out_fps:
mov dword [ttt],fps_show_frequency
mov eax,47
mov ebx,5*65536
mov edx,(x+1)*65536+y
mov esi,color+0xD0000000
mov edi,delcolor
mov ecx,[fps]
mcall
no_out_fps:
}
fps 220,5,0x00FFFfff,0x00000000
main_loop:
@@ -112,15 +149,15 @@ exit:
draw_window:
mcall 12, 1 ;Start window redraw
mcall 48, 4
mcall 48, 4
lea ecx, [100*65536+SCREEN_Y+4+eax]; [y start] *65536 + [y size] + [skin_height]
xor eax, eax ;Draw window
lea ecx,[100*65536+SCREEN_Y+4+eax]; [y start] *65536 + [y size] + [skin_height]
xor eax,eax ;Draw window
mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size
mov edx,0x54000000 ;0x03 use skinned window
mov edi,title
mcall
mcall 12, 2 ;End window redraw
ret
@@ -196,7 +233,7 @@ clear_screen_buffer:
rep stosd
ret
;include triangle.asm
; Mikolaj Felix 14/5/2001
; mfelix@polbox.com

View File

@@ -3,5 +3,4 @@ HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("
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({"3DCUBE2.ASM", extra_inputs = {"lang.inc"}}, FASM .. " %f %o " .. tup.getconfig("KPACK_CMD"), "3DCUBE2")
tup.rule({"3DCUBE2.ASM"}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3DCUBE2")

View File

@@ -1,624 +0,0 @@
lang equ ru_RU
;
; Assembler
; SMALL
; CODE
; Graphics
; Libary
;
; Ver 0.10 By Pavlushin Evgeni (RUSSIA)
; www.waptap@mail.ru
;InfoList
;0.01 LoadImage
;0.02 SetBmp
;0.03 Bmptoimg, Setimg ~01.03.2004
;0.04 Bug deleted, copyimg ~03.05.2004
;0.05 fullimg, collimg ~05.05.2004
;0.06 getimg ~09.05.2004
;0.07 convbmp ~13.05.2004
;0.08 fps ~14.05.2004
;0.09 drawfbox ~03.06.2004
;0.10 all macros optimized by halyavin, add at ~07.06.2004
;DrawBox
macro drawfbox x,y,xs,ys,color
{
mov ecx,y
mov ebx,x
shl ebx,16
add ebx,xs
shl ecx,16
add ecx,ys
mov edx,color
mov eax,13
mcall
}
; FPS - Set Frame Per Second Display
fps_show_frequency=40
macro fps x,y,color,delcolor
{
local spdat,savetime,new_time,fps,fps_cntr,out_fps,new_time,ttt
local no_out_fps
jmp spdat
savetime dd 0
fps_cntr dd 0
fps dd 0
ttt dd 0
spdat:
get_time:
mov eax,3
mcall
cmp eax,[savetime]
jne new_time
inc [fps_cntr]
cmp dword [ttt],0
je out_fps
dec dword [ttt]
jmp no_out_fps
new_time:
mov [savetime],eax
mov ebx,[fps_cntr]
mov [fps],ebx
mov [fps_cntr],0
out_fps:
if ~(delcolor eq )
mov ebx,x*65536+30
mov ecx,y*65536+7
mov edx,delcolor
mov eax,13
mcall
end if
mov dword [ttt],fps_show_frequency
mov eax,47
mov ebx,5*65536
; mov bl,0
mov edx,x*65536+y
mov esi,color
mov ecx,[fps]
mcall
no_out_fps:
}
; COLLIMG - Collusion image's
_ldbounce_count=0;
macro collimg img1_off,x1,y1,img2_off,x2,y2,otv
{
local bounce,exit,_1dbounce,anot,bc,nbc
mov esi,[img1_off] ;xs1
mov edi,[img2_off] ;ys2
mov eax,x1 ;
mov ebx,x2 ;
call _1dbounce
mov edx,ecx
mov esi,[img1_off+4] ;ys1
mov edi,[img2_off+4] ;ys2
mov eax,y1 ;
mov ebx,y2 ;
call _1dbounce
add edx,ecx
cmp edx,2
je bounce
mov otv,0
jmp exit
_ldbounce_count=_ldbounce_count+1
if (_ldbounce_count = 1)
_1dbounce:
cmp ebx,eax
jnae anot
add eax,esi
cmp eax,ebx
jna nbc
jmp bc
anot:
add ebx,edi
cmp ebx,eax
jna nbc
bc:
mov ecx,1
ret
nbc:
mov ecx,0
ret
end if
bounce:
mov otv,1
exit:
}
; SETBMP - Set bmp to window
; (SYNTAX) SETBMP dd xstart ,dd ystart ,BMP_offset,dd soi
; (SAMPLE) SETBMP dword [xt],dword [yt],I_END,dword [tsoi]
; SETBMP 15,10,I_END,dword [tsoi]
; ( NOTE ) SOI - Start of image
macro setbmp arg1,arg2,arg3,arg4
{
local nodi
cmp word [arg3],word 'BM'
jne nodi
mov eax,7
mov ebx,arg4 ;[soi]
mov ecx,dword [arg3+18]
shl ecx,16
add ecx,dword [arg3+22]
if (arg1 eqtype 0) & (arg2 eqtype 0)
mov edx,arg1*65536+arg2
else
mov edx,arg1
shl edx,16
add edx,arg2
end if
mcall
nodi:
}
macro setimg arg1,arg2,arg3
{
local nodi
mov eax,7
mov ebx,arg3
add ebx,8
mov ecx,dword [arg3]
shl ecx,16
add ecx,dword [arg3+4]
if (arg1 eqtype 0) & (arg2 eqtype 0)
mov edx,arg1*65536+arg2
else
mov edx,arg1
shl edx,16
add edx,arg2
end if
mcall
}
;Not optimiz
macro getimg imgsrc,x,y,xs,ys,imgdest
{
local cyc
mov eax,xs
mov dword [imgdest],eax
mov eax,ys
mov dword [imgdest+4],eax
mov eax,dword [imgsrc] ;getx size
mov edi,eax
mov ebx,y
mul ebx
add eax,x
mov ebx,3
mul ebx ;eax=offset on imsrc
mov ecx,0
mov ebx,0
mov ebp,eax
mov esi,0
add esi,8
add ebp,8
cyc:
mov al,byte [imgsrc+ebp]
mov [imgdest+esi],al
mov al,byte [imgsrc+ebp+1]
mov [imgdest+esi+1],al
mov al,byte [imgsrc+ebp+2]
mov [imgdest+esi+2],al
add esi,3
add ebp,3
inc ecx
cmp ecx,xs
jne cyc
add ebp,edi
add ebp,edi
add ebp,edi
sub ebp,xs
sub ebp,xs
sub ebp,xs
mov ecx,0
inc ebx
cmp ebx,ys
jne cyc
}
;
macro bmptoimg bmp_off,soi,img_off
{
local nodix,conv
cmp word [bmp_off],word 'BM'
jne nodix
mov eax,dword [bmp_off+18]
mov ebx,dword [bmp_off+22]
mov dword [img_off],eax
mov dword [img_off+4],ebx
mul ebx
lea ecx,[eax+2*eax]
lea edi,[img_off+8]
mov esi,dword [soi]
cld
rep movsb
nodix:
}
macro copyimg img2_off,img1_off
{
local cop
mov eax,dword [img1_off]
mov ebx,dword [img1_off+4]
mul ebx
lea ecx,[eax+2*eax]
lea esi,[img1_off+8]
lea edi,[img2_off+8]
cld
rep movsb
}
macro fullimg img_off,xs,ys,color
{
local cop
mov eax,xs
mov ebx,ys
mov dword [img_off],eax
mov dword [img_off+4],ebx
mul ebx
lea ebp,[eax+2*eax]
mov esi,color
if color eqtype 0
mov ecx,color/65536
else
mov ecx,esi
shr ecx,16
end if
xor edi,edi
cop:
mov word [img_off+8+edi],si
add edi,2
mov byte [img_off+8+edi],cl
inc edi
cmp edi,ebp
jne cop
}
macro convbmp bmp_load_area,bmp_soi
{
local status,bps,dwps,soi,sop,eop,eos,process,fileinfo,string,end_bmp
local converttable,noaddelem,nextbit,convert1bpp,convert4bpp,convert2
local nextelem,convertno32,nomorestring,convert1,nextstring,yespicsize
local noaddword
;local qwe,bmpfn
; convert:
movzx eax,word [bmp_load_area+28]
mul dword [bmp_load_area+18]
mov ebx,32
div ebx
test edx,edx
je noaddword
inc eax
noaddword:
mov dword [dwps],eax ;dwps-doublewords per string
shl eax,2
mov dword [bps],eax ;bps-bytes per string
cmp dword [bmp_load_area+34],0
jne yespicsize ;if picture size is defined
mul dword [bmp_load_area+22]
mov dword [bmp_load_area+34],eax
yespicsize:
mov eax,bmp_load_area
mov ebx,eax
add ebx, [bmp_load_area+2];file size
inc ebx
mov dword [bmp_soi],ebx ;soi-start of image area for drawing
add eax, [bmp_load_area+10]
mov dword [sop],eax ;sop-start of picture in file
add eax, [bmp_load_area+34]
mov dword [eop],eax ;eop-end of picture in file
mov eax, [bmp_load_area+18]
lea eax,[eax+2*eax] ;3x pixels in eax
mov edi,dword [bmp_soi] ;initializing
mov esi,dword [eop]
sub esi,dword [bps]
nextstring:
push edi
cmp word [bmp_load_area+28],24
jne convertno32
mov ecx,[dwps]
cld
rep movsd
convert1:
pop edi
sub esi,dword [bps]
sub esi,dword [bps]
cmp esi,dword [sop]
jb end_bmp;nomorestring
add edi,eax
jmp nextstring
; nomorestring:
; jmp end_bmp
convertno32:
mov ebx,bmp_load_area
add ebx, [bmp_load_area+14]
add ebx,14 ;start of color table
push esi
add esi,dword [bps]
mov dword [eos],esi
pop esi
nextelem:
push eax
movzx eax,byte [esi]
cmp word [bmp_load_area+28],4
je convert4bpp
cmp word [bmp_load_area+28],1
je convert1bpp
call converttable
convert2:
pop eax
inc esi
cmp esi,dword [eos]
jae convert1
add edi,3
jmp nextelem
convert4bpp:
shl ax,4
shr al,4
push ax
movzx eax,ah
call converttable
add edi,3
pop ax
movzx eax,al
call converttable
jmp convert2
convert1bpp:
mov ecx,eax
mov edx,7
nextbit:
xor eax,eax
bt ecx,edx
jnc noaddelem
inc eax
noaddelem:
push edx
call converttable
pop edx
dec edx
cmp edx,0xffffffff
je convert2
add edi,3
jmp nextbit
converttable:
shl eax,2
add eax,ebx
mov edx, dword [eax]
mov dword [edi],edx
ret
; DATA AREA
;status dd 0 ;bit0=1 if file thread is created
bps dd 0
dwps dd 0
;soi dd 0
sop dd 0
eop dd 0
eos dd 0
;process dd 0
end_bmp:
; mov eax,dword [soi]
; mov dword [bmp_soi],eax
}
; LOADBMP - Load bmp image from file
; (SYNTAX) LOADBMP 'file_path',temp_area(rb 0x10000),load_area,dd soi
; (SAMPLE) LOADBMP '/sys/menuet.bmp',temp_area,I_END,tsoi
; ( NOTE ) Macros create on Base of
; Picture browser by lisovin@26.ru & Ivan Poddubny
; SOI - Start of image
macro loadbmp bmp_file_name,bmp_temp_area,bmp_load_area,bmp_soi
{
local status,bps,dwps,soi,sop,eop,eos,process,fileinfo,string,end_bmp
local converttable,noaddelem,nextbit,convert1bpp,convert4bpp,convert2
local nextelem,convertno32,nomorestring,convert1,nextstring,yespicsize
local noaddword
;local qwe,bmpfn
mov dword [fileinfo+8],1 ; how many blocks to read (1)
mov eax,58
mov ebx,fileinfo
mcall
mov eax,[bmp_load_area+2]
shr eax,9 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 512 <20> <20><EFBFBD><E0A8A1><EFBFBD><EFBFBD> 1 - <20><><EFBFBD><EFBFBD><20><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
inc eax
mov dword [fileinfo+8],eax
mov eax,58
mov ebx,fileinfo
mcall
; jmp qwe
;bmpfn db bmp_file_name
;qwe:
; mov eax,6
; mov ebx,bmpfn
; mov ecx,0
; mov edx,0xFFFFFF
; mov esi,bmp_load_area
; mov edi,0
; mcall
; convert:
movzx eax,word [bmp_load_area+28]
mul dword [bmp_load_area+18]
mov ebx,32
div ebx
test edx,edx
je noaddword
inc eax
noaddword:
mov dword [dwps],eax ;dwps-doublewords per string
shl eax,2
mov dword [bps],eax ;bps-bytes per string
cmp dword [bmp_load_area+34],0
jne yespicsize ;if picture size is defined
mul dword [bmp_load_area+22]
mov dword [bmp_load_area+34],eax
yespicsize:
mov eax,bmp_load_area
push eax
add eax, [bmp_load_area+2];file size
inc eax
mov dword [soi],eax ;soi-start of image area for drawing
pop eax
add eax, [bmp_load_area+10]
mov dword [sop],eax ;sop-start of picture in file
add eax, [bmp_load_area+34]
mov dword [eop],eax ;eop-end of picture in file
mov eax, [bmp_load_area+18]
mov ebx,3
mul ebx ;3x pixels in eax
mov edi,dword [soi] ;initializing
mov esi,dword [eop]
sub esi,dword [bps]
nextstring:
push edi
cmp word [bmp_load_area+28],24
jne convertno32
mov ecx,[dwps]
cld
rep movsd
convert1:
pop edi
sub esi,dword [bps]
sub esi,dword [bps]
cmp esi,dword [sop]
jb nomorestring
add edi,eax
jmp nextstring
nomorestring:
jmp end_bmp
convertno32:
mov ebx,bmp_load_area
add ebx, [bmp_load_area+14]
add ebx,14 ;start of color table
push esi
add esi,dword [bps]
mov dword [eos],esi
pop esi
nextelem:
push eax
movzx eax,byte [esi]
cmp word [bmp_load_area+28],4
je convert4bpp
cmp word [bmp_load_area+28],1
je convert1bpp
call converttable
convert2:
pop eax
inc esi
cmp esi,dword [eos]
jae convert1
add edi,3
jmp nextelem
convert4bpp:
shl ax,4
shr al,4
push ax
movzx eax,ah
call converttable
add edi,3
pop ax
movzx eax,al
call converttable
jmp convert2
convert1bpp:
mov ecx,eax
mov edx,7
nextbit:
xor eax,eax
bt ecx,edx
jnc noaddelem
inc eax
noaddelem:
push edx
call converttable
pop edx
dec edx
cmp edx,0xffffffff
je convert2
add edi,3
jmp nextbit
converttable:
shl eax,2
add eax,ebx
mov edx, dword [eax]
mov dword [edi],edx
ret
; DATA AREA
;status dd 0 ;bit0=1 if file thread is created
bps dd 0
dwps dd 0
soi dd 0
sop dd 0
eop dd 0
eos dd 0
;process dd 0
; DATA AREA
fileinfo:
dd 0
dd 0
dd 1 ;number of blocks of 512 bytes
dd bmp_load_area
dd bmp_temp_area
string:
db bmp_file_name,0
db ' '
db ' '
db ' '
db ' ',0
end_bmp:
mov eax,dword [soi]
mov dword [bmp_soi],eax
}

View File

@@ -1,499 +0,0 @@
lang equ ru_RU ; ru_RU en_US fr_FR de_DE fi_FI
;
; Assembler
; SMALL
; CODE
; Libary
;
; Ver 0.09 By Pavlushin Evgeni (RUSSIA)
; www.waptap@mail.ru
;InfoList
;0.01 scank,putpix,puttxt
;0.02 label,random,colors
;0.03 window,startwd,endwd,attributes
;0.04 close,delay,scevent ~30.04.2004
;0.05 small random, ~04.05.2004
;0.06 wtevent ~09.05.2004
;0.07 timeevent ~23.05.2004
;0.08 txtput ~14.06.2004
;0.09 opendialog,savedialog ~20.06.2004
macro opendialog redproc,openoff,erroff,path,testtime
{
local still, dlg_file, clip_file, redwait
local button, key, red, zzz, still, zzz2, incf, file_is_open, zzz3
mov ecx,200
zzz3:
mov byte [path+ecx-1],0
loop zzz3
dec byte [clip_file+7]
incf:
inc byte [clip_file+7]
mov eax,6
mov ebx,clip_file
mov ecx,0
or edx,-1
mov esi,path
mcall
cmp byte [clip_file+7],'Z'
je erroff
cmp eax,0xffffffff
jne incf
mov ecx,200
zzz2:
mov byte [path+ecx],0
loop zzz2
mov ebx,clip_file
mov ecx,path
mov edx,100
mov esi,0
mov eax,33
mcall
mov ebx,dlg_file
mov ecx,clip_file
mov eax,19
mcall
still:
scevent red,key,button
cmp byte [path],0
jne file_is_open
cmp dword [redwait],testtime ;20
jnae zzz
mov eax,6
mov ebx,clip_file
mov ecx,0
mov edx,-1
mov esi,path
mcall
cmp eax,0xffffffff
je erroff ;errexit
mov dword [redwait],0
zzz:
delay 5
inc dword [redwait]
jmp still
file_is_open:
mov eax,32
mov ebx,clip_file
mcall
jmp openoff
key: ; key
mcall ; read (eax=2)
jmp still
button: ; button
mov eax,17 ; get id
mcall
cmp ah,1 ; button id=1 ?
jne still
mov eax,-1 ; close this program
mcall
red:
call redproc
jmp still
dlg_file db 'SYSXTREE '
clip_file db 'OPENCLPACLP'
db 'O' ;Dialog type O-open S-save
db 0 ;Marker
redwait dd 0
}
macro savedialog redproc,openoff,erroff,path,testtime
{
local still, dlg_file, clip_file, redwait, zzz3
local button, key, red, zzz, still, zzz2, incf, file_is_open
mov ecx,200
zzz3:
mov byte [path+ecx-1],0
loop zzz3
dec byte [clip_file+7]
incf:
inc byte [clip_file+7]
mov eax,6
mov ebx,clip_file
mov ecx,0
mov edx,-1
mov esi,path
mcall
cmp byte [clip_file+7],'Z'
je erroff
cmp eax,0xffffffff
jne incf
mov ecx,200
zzz2:
mov byte [path+ecx],0
loop zzz2
mov ebx,clip_file
mov ecx,path
mov edx,100
mov esi,0
mov eax,33
mcall
mov ebx,dlg_file
mov ecx,clip_file
mov eax,19
mcall
still:
scevent red,key,button
cmp byte [path],0
jne file_is_open
cmp dword [redwait],testtime ;20
jnae zzz
mov eax,6
mov ebx,clip_file
mov ecx,0
mov edx,-1
mov esi,path
mcall
cmp eax,0xffffffff
je erroff ;errexit
mov dword [redwait],0
zzz:
delay 5
inc dword [redwait]
jmp still
file_is_open:
mov eax,32
mov ebx,clip_file
mcall
jmp openoff
key: ; key
mcall ; read (eax=2)
jmp still
button: ; button
mov eax,17 ; get id
mcall
cmp ah,1 ; button id=1 ?
jne still
mov eax,-1 ; close this program
mcall
red:
call redproc
jmp still
dlg_file db 'SYSXTREE '
clip_file db 'SAVECLPACLP'
db 'S' ;Dialog type O-open S-save
db 0 ;Marker
redwait dd 0
}
; RANDOM - generate random count (small)
; (SYNTAX) RANDOM MaxCount,OutArgument
; (SAMPLE) RANDOM 10000,eax
; ( NOTE ) Maxint<65536 ; use random 65536,eax for more combinations
randomuse = 0
macro random arg1,arg2
{
local rxproc
randomuse = randomuse + 1
jmp rxproc
if defined randomuse & randomuse = 1
randomproc:
jmp rnj
rsx1 dw 0x4321
rsx2 dw 0x1234
rnj:
; mov eax,arg1
push bx
push cx
push dx
push si
push di
mov cx,ax
mov ax,word ptr rsx1
mov bx,word ptr rsx2
mov si,ax
mov di,bx
mov dl,ah
mov ah,al
mov al,bh
mov bh,bl
xor bl,bl
rcr dl,1
rcr ax,1
rcr bx,1
add bx,di
adc ax,si
add bx,0x62e9
adc ax,0x3619
mov word ptr rsx1,bx
mov word ptr rsx2,ax
xor dx,dx
cmp ax,0
je nodiv
cmp cx,0
je nodiv
div cx
nodiv:
mov ax,dx
pop di
pop si
pop dx
pop cx
pop bx
; mov arg2,0
; mov arg2,eax
ret
end if
rxproc:
mov eax,arg1
call randomproc
mov arg2,0
mov arg2,eax
}
macro scank
{
mov eax,10
mcall
}
macro putpix x,y,color
{
mov ebx,x
mov ecx,y
mov edx,color
mov eax,1
mcall
}
macro puttxt x,y,offs,size,color
{
mov ebx,x
shl ebx,16
add ebx,y
mov ecx,color
mov edx,offs
mov esi,size
mov eax,4
mcall
}
;_ equ '____'
;macro libtest x,y,color
;{
;if x = as dword
; mov ebx,x
;end if
; mov ecx,y
; mov edx,color
; mov eax,1
; mcall
;}
macro outcount data, x, y, color, numtype
{
mov ecx,data
mov ebx,numtype
mov bl,0
mov edx,x*65536+y
mov esi,color
mov eax,47
mcall
}
; SCEVENT - Scan event
macro scevent red,key,but
{
mov eax,11
mcall
dec eax
jz red
dec eax
jz key
dec eax
jz but
}
; WTEVENT - Wait event
macro wtevent red,key,but
{
mov eax,10
mcall
dec eax
jz red
dec eax
jz key
dec eax
jz but
}
; TIMEEVENT - Wite for event with timeout
macro timeevent xfps,noevent,red,key,but
{
mov eax,23
mov ebx,xfps
mcall
cmp eax,0
je noevent
dec eax
jz red
dec eax
jz key
dec eax
jz but
}
; CLOSE - Close program
macro close
{
mov eax,-1
mcall
}
; DELAY - Create delay 1/100 sec
; (SYNTAX) Delay time
; (SAMPLE) Delay 100 ;delay 2 sec 1/100*200=2 sec
macro delay arg1
{
mov eax,5
mov ebx,arg1
mcall
}
; WINDOW - Draw window
; (SYNTAX) WINDOW Xstart,Ystart,'Text',Color
; (SAMPLE) WINDOW 10,10,640+8,480+24,window_Skinned
macro window arg1,arg2,arg3,arg4,arg5
{
mov ebx,arg1*65536+arg3
mov ecx,arg2*65536+arg4
mov edx,arg5
mov eax,0
mcall
}
macro colorwindow arg1,arg2,arg3,arg4,arg5,arg6,arg7
{
mov ebx,arg1*65536+arg3
mov ecx,arg2*65536+arg4
mov edx,arg5
mov esi,arg6
mov edi,arg7
mov eax,0
mcall
}
; STARTWD - Start of window draw
macro startwd
{
mov eax,12
mov ebx,1
mcall
}
; ENDWD - End window draw
macro endwd
{
mov eax,12
mov ebx,2
mcall
}
; LABEL - Put text to frame
; (SYNTAX) LABEL Xstart,Ystart,'Text',Color
; (SAMPLE) LABEL 10,12,'Hello World!',cl_Green+font_Big
macro label arg1,arg2,arg3,arg4
{
local asd,lab
jmp asd
lab db arg3 ;arg label
asd:
mov ebx,arg1 ;arg1=y arg2=x
shl ebx,16
add ebx,arg2
mov ecx,arg4 ;arg4 color
mov edx,lab
mov esi,asd-lab ;calc size
mov eax,4
mcall
}
;Key's
key_Up equ 178
key_Down equ 177
key_Right equ 179
key_Left equ 176
key_Esc equ 27
key_Space equ 32
key_Enter equ 13
key_Bspace equ 8
key_F1 equ 50
key_F2 equ 51
key_F3 equ 52
key_F4 equ 53
key_F5 equ 54
key_F6 equ 55
key_F7 equ 56
key_F8 equ 57
key_F9 equ 48
key_F10 equ 49
key_F11 equ 68
key_F12 equ 255
key_Home equ 180
key_End equ 181
key_PgUp equ 184
key_PgDown equ 183
;Attributes
;Window Attributes
window_Skinned equ 0x03000000
window_Type2 equ 0x02000000
window_Type1 equ 0x00000000
window_Reserve equ 0x01000000
;Font Attributes
font_Big equ 0x10000000
;Colors
cl_White equ 0x00ffffff
cl_Black equ 0x00000000
cl_Grey equ 0x00888888
cl_Red equ 0x00ff0000
cl_Lime equ 0x0000ff00
cl_Green equ 0x0000af00
cl_Blue equ 0x000000ff
cl_Purple equ 0x008080ff
cl_Violet equ 0x008040ff
cl_Cyan equ 0x0040e0ff

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