Compare commits
1 Commits
add-licens
...
a13e5d0212
Author | SHA1 | Date | |
---|---|---|---|
a13e5d0212 |
@@ -4,9 +4,12 @@
|
|||||||
name: 'Build system'
|
name: 'Build system'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- 'main'
|
- 'main'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
codestyle:
|
codestyle:
|
||||||
@@ -28,33 +31,12 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
|
|
||||||
- name: Get describe
|
- name: Get describe
|
||||||
id: vars
|
id: vars
|
||||||
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITEA_OUTPUT
|
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Get toolchain hash
|
|
||||||
id: toolchain-hash
|
|
||||||
run: |
|
|
||||||
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: 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--
|
- name: Build and install C--
|
||||||
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}/programs/develop/cmm/
|
cd ${{ gitea.workspace }}/programs/develop/cmm/
|
||||||
make -f Makefile.lin32
|
make -f Makefile.lin32
|
||||||
@@ -64,60 +46,47 @@ jobs:
|
|||||||
make -f Makefile.lin32 clean
|
make -f Makefile.lin32 clean
|
||||||
|
|
||||||
- name: Install TCC
|
- name: Install TCC
|
||||||
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
run: |
|
||||||
cp ${{ gitea.workspace }}/programs/develop/ktcc/trunk/bin/kos32-tcc /home/autobuild/tools/win32/bin/kos32-tcc
|
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
|
chmod +x /home/autobuild/tools/win32/bin/kos32-tcc
|
||||||
|
|
||||||
- name: Build and install objconv
|
- name: Build and install objconv
|
||||||
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}/programs/develop/objconv/
|
cd ${{ gitea.workspace }}/programs/develop/objconv/
|
||||||
g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp
|
g++ -o /home/autobuild/tools/win32/bin/objconv -O2 *.cpp
|
||||||
chmod +x /home/autobuild/tools/win32/bin/objconv
|
chmod +x /home/autobuild/tools/win32/bin/objconv
|
||||||
|
|
||||||
- name: Build and install kerpack and kpack
|
- name: Build and install kerpack
|
||||||
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
run: |
|
||||||
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
|
||||||
cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/
|
cd ${{ gitea.workspace }}/programs/other/kpack/kerpack_linux/
|
||||||
make
|
make
|
||||||
chmod +x kerpack
|
chmod +x kerpack
|
||||||
chmod +x kpack
|
|
||||||
mv kerpack /home/autobuild/tools/win32/bin/.
|
mv kerpack /home/autobuild/tools/win32/bin/.
|
||||||
|
|
||||||
|
- name: Build and install kpack
|
||||||
|
run: |
|
||||||
|
cd ${{ gitea.workspace }}/programs/other/kpack/linux/
|
||||||
|
bash build.sh
|
||||||
|
chmod +x kpack
|
||||||
mv kpack /home/autobuild/tools/win32/bin/.
|
mv kpack /home/autobuild/tools/win32/bin/.
|
||||||
|
|
||||||
- name: Build and install clink
|
- name: Build and install clink
|
||||||
if: steps.cache-toolchain.outputs.cache-hit != 'true'
|
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}/programs/develop/clink
|
cd ${{ github.workspace }}/programs/develop/clink
|
||||||
gcc main.c -o clink
|
gcc main.c -o clink
|
||||||
chmod a+x clink
|
chmod a+x clink
|
||||||
mv clink /home/autobuild/tools/win32/bin/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
|
- name: Configure tup
|
||||||
run: |
|
run: |
|
||||||
cd ${{ gitea.workspace }}
|
cd ${{ gitea.workspace }}
|
||||||
|
|
||||||
export ROOT=${{ gitea.workspace }}
|
export ROOT=${{ gitea.workspace }}
|
||||||
echo "CONFIG_KPACK_CMD= && kpack --nologo %o" | tee en_US.config ru_RU.config es_ES.config
|
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_KERPACK_CMD= && kerpack %o" | tee 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_PESTRIP_CMD= && EXENAME=%o fasm $ROOT/data/common/pestrip.asm %o" | tee 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_NO_MSVC=full" | tee 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
|
echo "CONFIG_INSERT_REVISION_ID=1" | tee en_US.config ru_RU.config es_ES.config
|
||||||
|
|
||||||
tup -v
|
tup -v
|
||||||
tup init
|
tup init
|
||||||
@@ -128,8 +97,8 @@ jobs:
|
|||||||
tup variant en_US.config
|
tup variant en_US.config
|
||||||
|
|
||||||
# Configure ru_RU
|
# Configure ru_RU
|
||||||
echo "CONFIG_LANG=ru_RU" >> ru_RU.config
|
echo "CONFIG_LANG=ru_RU" >> en_US.config
|
||||||
echo "CONFIG_BUILD_TYPE=ru_RU" >> ru_RU.config
|
echo "CONFIG_BUILD_TYPE=ru_RU" >> en_US.config
|
||||||
tup variant ru_RU.config
|
tup variant ru_RU.config
|
||||||
|
|
||||||
# Configure es_ES
|
# Configure es_ES
|
||||||
@@ -141,7 +110,6 @@ jobs:
|
|||||||
- name: (en_US) Build KolibriOS
|
- name: (en_US) Build KolibriOS
|
||||||
run: |
|
run: |
|
||||||
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
||||||
source kos32-export-env-vars ${{ gitea.workspace }}
|
|
||||||
tup build-en_US
|
tup build-en_US
|
||||||
|
|
||||||
- name: (en_US) Upload floppy image
|
- name: (en_US) Upload floppy image
|
||||||
@@ -166,7 +134,6 @@ jobs:
|
|||||||
- name: (ru_RU) Build KolibriOS
|
- name: (ru_RU) Build KolibriOS
|
||||||
run: |
|
run: |
|
||||||
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
||||||
source kos32-export-env-vars ${{ gitea.workspace }}
|
|
||||||
tup build-ru_RU
|
tup build-ru_RU
|
||||||
|
|
||||||
- name: (ru_RU) Upload floppy image
|
- name: (ru_RU) Upload floppy image
|
||||||
@@ -191,7 +158,6 @@ jobs:
|
|||||||
- name: (es_ES) Build KolibriOS
|
- name: (es_ES) Build KolibriOS
|
||||||
run: |
|
run: |
|
||||||
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
export PATH=/home/autobuild/tools/win32/bin:$PATH
|
||||||
source kos32-export-env-vars ${{ gitea.workspace }}
|
|
||||||
tup build-es_ES
|
tup build-es_ES
|
||||||
|
|
||||||
- name: (es_ES) Upload floppy image
|
- name: (es_ES) Upload floppy image
|
||||||
|
@@ -1,82 +0,0 @@
|
|||||||
# Contributing guide
|
|
||||||
|
|
||||||
## Type of contributing
|
|
||||||
|
|
||||||
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 about problems found in the system. Currently, there are two main ways of submitting an issue in the project: **Bug Reports** and **Feature Requests**:
|
|
||||||
|
|
||||||
- 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 code via pull requests. The process of submitting a pull request consists of the following steps:
|
|
||||||
|
|
||||||
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 proposed changes need to be corrected (if requested) and merged into the project.
|
|
||||||
|
|
||||||
## Commit style
|
|
||||||
|
|
||||||
### Message pattern
|
|
||||||
|
|
||||||
The commit message should look like this:
|
|
||||||
|
|
||||||
```test
|
|
||||||
Commit message header
|
|
||||||
|
|
||||||
Commit message body, if needed
|
|
||||||
```
|
|
||||||
|
|
||||||
- Commit message header and body should reflect changes made in commit
|
|
||||||
- Commit message body should be separated from the header by one empty line
|
|
||||||
|
|
||||||
### 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.
|
|
||||||
|
|
||||||
### Multiple authors
|
|
||||||
|
|
||||||
If you are making a commit together with another developer, you need to add:
|
|
||||||
|
|
||||||
```
|
|
||||||
Co-authored-by: ANOTHER-NAME <ANOTHER-NAME@EXAMPLE.COM>
|
|
||||||
```
|
|
||||||
|
|
||||||
to the end commit message body on a new line.
|
|
||||||
|
|
||||||
### Merge commits
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> Merge commits are **prohibited** in the project
|
|
||||||
|
|
||||||
Use **rebase** to keep your branch up to date.
|
|
||||||
|
|
||||||
## Licensing
|
|
||||||
|
|
||||||
For new source code files and for existing ones without a license, you need to add the following header to the beginning of the file:
|
|
||||||
```asm
|
|
||||||
; SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
; Program - Brief description.
|
|
||||||
; Copyright (C) 2011-2025 KolibriOS team
|
|
||||||
```
|
|
||||||
|
|
||||||
Be careful when setting copyright and date interval. Review the file's history to verify its origin.
|
|
||||||
|
|
||||||
## Conclusion
|
|
||||||
|
|
||||||
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
LICENSE
@@ -1,338 +0,0 @@
|
|||||||
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.
|
|
22
README.md
@@ -1,22 +0,0 @@
|
|||||||
# KolibriOS
|
|
||||||
|
|
||||||
[](./LICENSE)
|
|
||||||
[](https://git.kolibrios.org/KolibriOS/kolibrios/actions)
|
|
||||||
|
|
||||||
KolibriOS is a hobby operating system for x86-compatible computers, which is currently being developed by a small but passionate team of enthusiasts.
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
We would appreciate any participation in the project and always welcome new users and contributors.
|
|
||||||
|
|
||||||
Detailed instructions for the contribution process can be found in the [contributing guide](./CONTRIBUTING.md).
|
|
||||||
|
|
||||||
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.
|
|
@@ -85,7 +85,6 @@ if build_type == "ru_RU" then tup.append_table(img_files, {
|
|||||||
{"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"},
|
{"SETTINGS/MYKEY.INI", SRC_PROGS .. "/system/MyKey/trunk/mykey.ini"},
|
||||||
{"SETTINGS/SYSPANEL.INI", "ru_RU/settings/syspanel.ini"},
|
{"SETTINGS/SYSPANEL.INI", "ru_RU/settings/syspanel.ini"},
|
||||||
}) elseif build_type == "en_US" then tup.append_table(img_files, {
|
}) elseif build_type == "en_US" then tup.append_table(img_files, {
|
||||||
{"WELCOME.HTM", VAR_DATA .. "/" .. build_type .. "/welcome.htm.kpack"},
|
|
||||||
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
|
{"EXAMPLE.ASM", SRC_PROGS .. "/develop/examples/example/trunk/example.asm"},
|
||||||
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
|
{"DEVELOP/BACKY", SRC_PROGS .. "/develop/backy/Backy"},
|
||||||
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
|
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
|
||||||
@@ -157,7 +156,7 @@ extra_files = {
|
|||||||
{"kolibrios/3D/info3ds/OBJECTS.PNG", SRC_PROGS .. "/develop/info3ds/objects.png"},
|
{"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/TOOLBAR.PNG", SRC_PROGS .. "/develop/info3ds/toolbar.png"},
|
||||||
{"kolibrios/3D/info3ds/FONT8X9.BMP", SRC_PROGS .. "/fs/kfar/trunk/font8x9.bmp"},
|
{"kolibrios/3D/info3ds/FONT8X9.BMP", SRC_PROGS .. "/fs/kfar/trunk/font8x9.bmp"},
|
||||||
{"kolibrios/3D/blocks/blocks.kex", "../programs/bcc32/games/blocks/bin/blocks.kex"},
|
{"kolibrios/3D/blocks/", "../programs/bcc32/games/blocks/bin/*"},
|
||||||
{"kolibrios/3D/blocks/models/", "../programs/bcc32/games/blocks/models/*"},
|
{"kolibrios/3D/blocks/models/", "../programs/bcc32/games/blocks/models/*"},
|
||||||
{"kolibrios/3D/md2view/", "common/3d/md2view/*"},
|
{"kolibrios/3D/md2view/", "common/3d/md2view/*"},
|
||||||
{"kolibrios/3D/md2view/md2_model/", "common/3d/md2view/md2_model/*"},
|
{"kolibrios/3D/md2view/md2_model/", "common/3d/md2view/md2_model/*"},
|
||||||
@@ -290,7 +289,6 @@ extra_files = {
|
|||||||
{"kolibrios/res/templates/NES/", "common/templates/NES/*"},
|
{"kolibrios/res/templates/NES/", "common/templates/NES/*"},
|
||||||
{"kolibrios/res/wallpapers/", "common/wallpapers/*"},
|
{"kolibrios/res/wallpapers/", "common/wallpapers/*"},
|
||||||
{"kolibrios/res/system/", build_type .. "/settings/kolibri.lbl"},
|
{"kolibrios/res/system/", build_type .. "/settings/kolibri.lbl"},
|
||||||
{"kolibrios/res/system/", "common/signs.png"},
|
|
||||||
{"kolibrios/utils/vmode", "common/vmode"},
|
{"kolibrios/utils/vmode", "common/vmode"},
|
||||||
{"kolibrios/utils/texture", "common/utils/texture"},
|
{"kolibrios/utils/texture", "common/utils/texture"},
|
||||||
{"kolibrios/utils/cnc_editor/cnc_editor", VAR_PROGS .. "/other/cnc_editor/cnc_editor"},
|
{"kolibrios/utils/cnc_editor/cnc_editor", VAR_PROGS .. "/other/cnc_editor/cnc_editor"},
|
||||||
@@ -458,14 +456,14 @@ tup.append_table(img_files, {
|
|||||||
{"DEMOS/BCDCLK", VAR_PROGS .. "/demos/bcdclk/trunk/bcdclk"},
|
{"DEMOS/BCDCLK", VAR_PROGS .. "/demos/bcdclk/trunk/bcdclk"},
|
||||||
{"DEMOS/BUDHBROT", VAR_PROGS .. "/demos/buddhabrot/trunk/buddhabrot"},
|
{"DEMOS/BUDHBROT", VAR_PROGS .. "/demos/buddhabrot/trunk/buddhabrot"},
|
||||||
{"DEMOS/EYES", VAR_PROGS .. "/demos/eyes/trunk/eyes"},
|
{"DEMOS/EYES", VAR_PROGS .. "/demos/eyes/trunk/eyes"},
|
||||||
{"DEMOS/FIREWORK", VAR_PROGS .. "/demos/firework/firework"},
|
{"DEMOS/FIREWORK", VAR_PROGS .. "/demos/firework/trunk/firework"},
|
||||||
{"DEMOS/MOVBACK", VAR_PROGS .. "/demos/movback/movback"},
|
{"DEMOS/MOVBACK", VAR_PROGS .. "/demos/movback/trunk/movback"},
|
||||||
{"DEMOS/PLASMA", VAR_PROGS .. "/demos/plasma/plasma"},
|
{"DEMOS/PLASMA", VAR_PROGS .. "/demos/plasma/trunk/plasma"},
|
||||||
{"DEMOS/SPIRAL", VAR_PROGS .. "/demos/spiral/spiral"},
|
{"DEMOS/SPIRAL", VAR_PROGS .. "/demos/spiral/spiral"},
|
||||||
{"DEMOS/TINYFRAC", VAR_PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
|
{"DEMOS/TINYFRAC", VAR_PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
|
||||||
{"DEMOS/TRANTEST", VAR_PROGS .. "/demos/trantest/trunk/trantest"},
|
{"DEMOS/TRANTEST", VAR_PROGS .. "/demos/trantest/trunk/trantest"},
|
||||||
{"DEMOS/TUBE", VAR_PROGS .. "/demos/tube/tube"},
|
{"DEMOS/TUBE", VAR_PROGS .. "/demos/tube/trunk/tube"},
|
||||||
{"DEMOS/UNVWATER", VAR_PROGS .. "/demos/unvwater/unvwater"},
|
{"DEMOS/UNVWATER", VAR_PROGS .. "/demos/unvwater/trunk/unvwater"},
|
||||||
{"DEMOS/WEB", VAR_PROGS .. "/demos/web/trunk/web"},
|
{"DEMOS/WEB", VAR_PROGS .. "/demos/web/trunk/web"},
|
||||||
{"DEMOS/ZEROLINE", VAR_PROGS .. "/demos/zeroline/trunk/zeroline"},
|
{"DEMOS/ZEROLINE", VAR_PROGS .. "/demos/zeroline/trunk/zeroline"},
|
||||||
{"DEVELOP/BOARD", VAR_PROGS .. "/system/board/trunk/board"},
|
{"DEVELOP/BOARD", VAR_PROGS .. "/system/board/trunk/board"},
|
||||||
@@ -476,7 +474,6 @@ tup.append_table(img_files, {
|
|||||||
{"DEVELOP/ENTROPYV", VAR_PROGS .. "/develop/entropyview/entropyview"},
|
{"DEVELOP/ENTROPYV", VAR_PROGS .. "/develop/entropyview/entropyview"},
|
||||||
{"DEVELOP/FASM", VAR_PROGS .. "/develop/fasm/1.73/fasm"},
|
{"DEVELOP/FASM", VAR_PROGS .. "/develop/fasm/1.73/fasm"},
|
||||||
{"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"},
|
{"DEVELOP/GENFILES", VAR_PROGS .. "/testing/genfiles/GenFiles"},
|
||||||
{"DEVELOP/PIPET", VAR_PROGS .. "/other/pipet/pipet"},
|
|
||||||
{"DEVELOP/H2D2B", VAR_PROGS .. "/develop/h2d2b/trunk/h2d2b"},
|
{"DEVELOP/H2D2B", VAR_PROGS .. "/develop/h2d2b/trunk/h2d2b"},
|
||||||
{"DEVELOP/HEED", VAR_PROGS .. "/develop/heed/trunk/heed"},
|
{"DEVELOP/HEED", VAR_PROGS .. "/develop/heed/trunk/heed"},
|
||||||
{"DEVELOP/MTDBG", VAR_PROGS .. "/develop/mtdbg/mtdbg"},
|
{"DEVELOP/MTDBG", VAR_PROGS .. "/develop/mtdbg/mtdbg"},
|
||||||
@@ -487,6 +484,7 @@ tup.append_table(img_files, {
|
|||||||
{"DEVELOP/EXAMPLES/CONGET", VAR_PROGS .. "/develop/libraries/console_coff/examples/test_gets"},
|
{"DEVELOP/EXAMPLES/CONGET", VAR_PROGS .. "/develop/libraries/console_coff/examples/test_gets"},
|
||||||
{"DEVELOP/EXAMPLES/CSLIDE", VAR_PROGS .. "/demos/cslide/trunk/cslide"},
|
{"DEVELOP/EXAMPLES/CSLIDE", VAR_PROGS .. "/demos/cslide/trunk/cslide"},
|
||||||
{"DEVELOP/EXAMPLES/THREAD", VAR_PROGS .. "/develop/examples/thread/trunk/thread"},
|
{"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/KFAR", VAR_PROGS .. "/fs/kfar/trunk/kfar"},
|
||||||
{"File Managers/OPENDIAL", VAR_PROGS .. "/fs/opendial/opendial"},
|
{"File Managers/OPENDIAL", VAR_PROGS .. "/fs/opendial/opendial"},
|
||||||
{"LOD", VAR_PROGS .. "/fs/lod/lod"},
|
{"LOD", VAR_PROGS .. "/fs/lod/lod"},
|
||||||
@@ -631,18 +629,17 @@ tup.append_table(extra_files, {
|
|||||||
{"kolibrios/utils/calcplus", VAR_PROGS .. "/other/calcplus/calcplus"},
|
{"kolibrios/utils/calcplus", VAR_PROGS .. "/other/calcplus/calcplus"},
|
||||||
{"kolibrios/utils/kfm/kfm", VAR_PROGS .. "/fs/kfm/trunk/kfm"},
|
{"kolibrios/utils/kfm/kfm", VAR_PROGS .. "/fs/kfm/trunk/kfm"},
|
||||||
{"kolibrios/utils/tedit/t_edit", VAR_PROGS .. "/other/t_edit/t_edit"},
|
{"kolibrios/utils/tedit/t_edit", VAR_PROGS .. "/other/t_edit/t_edit"},
|
||||||
{"kolibrios/3D/blocks/block.bin", VAR_PROGS .. "/bcc32/games/blocks/block.bin"}
|
|
||||||
})
|
})
|
||||||
-- For russian build, add russian-only programs.
|
-- For russian build, add russian-only programs.
|
||||||
if build_type == "ru_RU" then tup.append_table(img_files, {
|
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"},
|
{"GAMES/KLAVISHA", VAR_PROGS .. "/games/klavisha/klavisha"},
|
||||||
{"DEVELOP/EXAMPLES/TESTCON2", VAR_PROGS .. "/develop/libraries/console_coff/examples/testcon2_rus"},
|
{"DEVELOP/EXAMPLES/TESTCON2", VAR_PROGS .. "/develop/libraries/console_coff/examples/testcon2_rus"},
|
||||||
}) else tup.append_table(img_files, {
|
}) else tup.append_table(img_files, {
|
||||||
{"DEVELOP/EXAMPLES/TESTCON2", VAR_PROGS .. "/develop/libraries/console_coff/examples/testcon2_eng"},
|
{"DEVELOP/TESTCON2", VAR_PROGS .. "/develop/libraries/console_coff/examples/testcon2_eng"},
|
||||||
}) end
|
}) end
|
||||||
|
|
||||||
if build_type == "ru_RU" then tup.append_table(extra_files, {
|
if build_type == "ru_RU" then tup.append_table(extra_files, {
|
||||||
{"kolibrios/utils/period", VAR_PROGS .. "/other/period/trunk/period"},
|
|
||||||
{"kolibrios/games/Dungeons/Dungeons", VAR_PROGS .. "/games/Dungeons/Dungeons"},
|
{"kolibrios/games/Dungeons/Dungeons", VAR_PROGS .. "/games/Dungeons/Dungeons"},
|
||||||
}) end
|
}) end
|
||||||
|
|
||||||
@@ -668,14 +665,15 @@ tup.append_table(img_files, {
|
|||||||
{"EASYSHOT", VAR_PROGS .. "/cmm/misc/easyshot.com"},
|
{"EASYSHOT", VAR_PROGS .. "/cmm/misc/easyshot.com"},
|
||||||
{"MOUSECFG", VAR_PROGS .. "/cmm/mousecfg/mousecfg.com"},
|
{"MOUSECFG", VAR_PROGS .. "/cmm/mousecfg/mousecfg.com"},
|
||||||
{"BARSCFG", VAR_PROGS .. "/cmm/barscfg/barscfg.com"},
|
{"BARSCFG", VAR_PROGS .. "/cmm/barscfg/barscfg.com"},
|
||||||
{"SEARCH", VAR_PROGS .. "/cmm/misc/search.com"},
|
|
||||||
{"SYSPANEL", VAR_PROGS .. "/cmm/misc/software_widget.com"},
|
{"SYSPANEL", VAR_PROGS .. "/cmm/misc/software_widget.com"},
|
||||||
{"SYSMON", VAR_PROGS .. "/cmm/sysmon/sysmon.com"},
|
{"SYSMON", VAR_PROGS .. "/cmm/sysmon/sysmon.com"},
|
||||||
{"TMPDISK", VAR_PROGS .. "/cmm/tmpdisk/tmpdisk.com"},
|
{"TMPDISK", VAR_PROGS .. "/cmm/tmpdisk/tmpdisk.com"},
|
||||||
{"DEVELOP/CLIPVIEW", VAR_PROGS .. "/cmm/clipview/clipview.com"},
|
{"DEVELOP/CLIPVIEW", VAR_PROGS .. "/cmm/clipview/clipview.com"},
|
||||||
{"DEVELOP/MENU", VAR_PROGS .. "/cmm/menu/menu.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/EOLITE", VAR_PROGS .. "/cmm/eolite/Eolite.com"},
|
||||||
{"File Managers/KFM2", VAR_PROGS .. "/cmm/misc/kfm2.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"},
|
{"DEVELOP/DIFF", VAR_PROGS .. "/cmm/diff/diff.com"},
|
||||||
{"GAMES/CLICKS", VAR_PROGS .. "/games/clicks/clicks.com"},
|
{"GAMES/CLICKS", VAR_PROGS .. "/games/clicks/clicks.com"},
|
||||||
{"GAMES/MBLOCKS", VAR_PROGS .. "/cmm/misc/mblocks.com"},
|
{"GAMES/MBLOCKS", VAR_PROGS .. "/cmm/misc/mblocks.com"},
|
||||||
@@ -894,6 +892,10 @@ for i,v in ipairs(img_files) do
|
|||||||
str = string.gsub(str, "%%", "%%%%") -- escape % as %%
|
str = string.gsub(str, "%%", "%%%%") -- escape % as %%
|
||||||
cmd += " && str=" .. str
|
cmd += " && str=" .. str
|
||||||
cmd += ' && echo -n $str | dd status=none of=%o bs=1 seek=`expr 274 - length "$str"` conv=notrunc'
|
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
|
end
|
||||||
local_file = VAR_KERNEL .. "/.kernel.mnt"
|
local_file = VAR_KERNEL .. "/.kernel.mnt"
|
||||||
tup.definerule{inputs = {v[2]}, command = cmd, outputs = {local_file}}
|
tup.definerule{inputs = {v[2]}, command = cmd, outputs = {local_file}}
|
||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 700 B After Width: | Height: | Size: 720 B |
Before Width: | Height: | Size: 809 B After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 20 KiB |
@@ -79,7 +79,7 @@ next=$TextEditor
|
|||||||
[Assoc]
|
[Assoc]
|
||||||
/=/sys/file managers/eolite
|
/=/sys/file managers/eolite
|
||||||
|
|
||||||
kf=/sys/syspanel
|
kf=/sys/KF_VIEW
|
||||||
|
|
||||||
txt=$CodeEdit
|
txt=$CodeEdit
|
||||||
log=$CodeEdit
|
log=$CodeEdit
|
||||||
|
Before Width: | Height: | Size: 66 KiB |
@@ -1,2 +0,0 @@
|
|||||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
|
||||||
tup.rule("welcome.htm", "cp %f %o" .. tup.getconfig("KPACK_CMD"), "welcome.htm.kpack")
|
|
@@ -1,16 +1,14 @@
|
|||||||
The following "hot" shortcut keys are used in the system:
|
The following "hot" shortcut keys are used in the system:
|
||||||
(Indexing on time of appearance 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.
|
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
|
2) Ctrl + Shift - switching of keyboard layout.
|
||||||
3) Win - start of the application MENU
|
3) Win - start of the application MENU.
|
||||||
4) Alt + Ctrl + F12 - start of the application END
|
4) Alt + Ctrl + F12 - start of the application END.
|
||||||
5) Alt + F4 - terminate the active application
|
5) Alt + F4 - terminate the active application.
|
||||||
6) Alt + Tab - switch to the next window
|
6) Alt + Tab - switch to the next (in the window stack) window
|
||||||
7) Alt + Shift + Tab - switch to the previous window
|
7) Alt + Shift + Tab - switch to the previous (in the window stack) window
|
||||||
8) Alt + Shift + NumLock - start of the application MOUSEMUL, which emulates mouse with numpad, when NumLock is on.
|
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)
|
9) Alt + 1...7 - fast switching to the selected keyboard layout (even if absent for Ctrl + Shift)
|
||||||
10) Win + D - minimize/restore all windows
|
10) Win + D - minimize/restore all windows (cleaning of desktop)
|
||||||
11) Win + R - start of the application RUN
|
11) Win + R - start of the application RUN
|
||||||
12) Ctrl + PrintScreen - start of the application SCRSHOOT
|
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.
|
||||||
13) Ctrl + Alt + Left / Right - change sound volume
|
|
||||||
Ctrl + Alt + Up / Down - mute and unmute sound
|
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
23 Game Center |allgames
|
23 Game Center |allgames
|
||||||
60 System panel |syspanel
|
60 System panel |syspanel
|
||||||
18 Documentation |docpack
|
18 Documentation |docpack
|
||||||
49 Search |search
|
|
||||||
53 Run |run
|
53 Run |run
|
||||||
04 Shut down |end
|
04 Shut down |end
|
||||||
#1 **** DEMOS
|
#1 **** DEMOS
|
||||||
|
@@ -1,95 +0,0 @@
|
|||||||
<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?" -->
|
|
@@ -1,16 +1,14 @@
|
|||||||
The following "hot" shortcut keys are used in the system:
|
The following "hot" shortcut keys are used in the system:
|
||||||
(Indexing on time of appearance 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.
|
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
|
2) Ctrl + Shift - switching of keyboard layout.
|
||||||
3) Win - start of the application MENU
|
3) Win - start of the application MENU.
|
||||||
4) Alt + Ctrl + F12 - start of the application END
|
4) Alt + Ctrl + F12 - start of the application END.
|
||||||
5) Alt + F4 - terminate the active application
|
5) Alt + F4 - terminate the active application.
|
||||||
6) Alt + Tab - switch to the next window
|
6) Alt + Tab - switch to the next (in the window stack) window
|
||||||
7) Alt + Shift + Tab - switch to the previous window
|
7) Alt + Shift + Tab - switch to the previous (in the window stack) window
|
||||||
8) Alt + Shift + NumLock - start of the application MOUSEMUL, which emulates mouse with numpad, when NumLock is on.
|
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)
|
9) Alt + 1...7 - fast switching to the selected keyboard layout (even if absent for Ctrl + Shift)
|
||||||
10) Win + D - minimize/restore all windows
|
10) Win + D - minimize/restore all windows (cleaning of desktop)
|
||||||
11) Win + R - start of the application RUN
|
11) Win + R - start of the application RUN
|
||||||
12) Ctrl + PrintScreen - start of the application SCRSHOOT
|
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.
|
||||||
13) Ctrl + Alt + Left / Right - change sound volume
|
|
||||||
Ctrl + Alt + Up / Down - mute and unmute sound
|
|
||||||
|
@@ -13,7 +13,6 @@
|
|||||||
16 Centro de juegos |allgames
|
16 Centro de juegos |allgames
|
||||||
60 System panel |syspanel
|
60 System panel |syspanel
|
||||||
18 Ayuda |docpack
|
18 Ayuda |docpack
|
||||||
49 Buscar |search
|
|
||||||
53 Ejecutar aplicaci<63>n |run
|
53 Ejecutar aplicaci<63>n |run
|
||||||
04 Apagar |end
|
04 Apagar |end
|
||||||
#1 **** DEMOS
|
#1 **** DEMOS
|
||||||
|
@@ -1,16 +1,14 @@
|
|||||||
<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>:
|
<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>)
|
(<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.
|
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>
|
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
|
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
|
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>
|
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>
|
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>饥 <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>
|
||||||
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>
|
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)
|
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>
|
10) Win + D - ᢥ<><E1A2A5><EFBFBD><EFBFBD><EFBFBD>/ࠧ<><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>⪠ ࠡ<>祣<EFBFBD> <20>⮫<EFBFBD>)
|
||||||
11) Win + R - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RUN
|
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
|
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.
|
||||||
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>
|
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
23 <20><><EFBFBD><E0AEA2> 業<><E6A5AD> |allgames
|
23 <20><><EFBFBD><E0AEA2> 業<><E6A5AD> |allgames
|
||||||
60 <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |syspanel
|
60 <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |syspanel
|
||||||
18 <20><><EFBFBD>㬥<EFBFBD><E3ACA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |docpack
|
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
|
53 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> |run
|
||||||
04 <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> ࠡ<><E0A0A1><EFBFBD> |end
|
04 <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> ࠡ<><E0A0A1><EFBFBD> |end
|
||||||
#1 **** 2D <20><><EFBFBD><EFBFBD><EFBFBD>
|
#1 **** 2D <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
@@ -3,25 +3,10 @@ HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../programs" or tup.getco
|
|||||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||||
add_include(tup.getvariantdir())
|
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("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 -s %o.fas" .. str_build .. tup.getconfig("KERPACK_CMD"), {"kernel.mnt", extra_outputs = {"kernel.mnt.fas"}})
|
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.mnt.fas", extra_inputs = {"kernel.mnt"}}, "symbols %f %o", "kernel.mnt.sym")
|
--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.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 " .. 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 -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")
|
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, FASM .. " -m 262144 %f %o -dpretest_build=1 -ddebug_com_base=0xe9", "kernel.mnt.pretest")
|
||||||
|
@@ -28,42 +28,36 @@ macro line_space {
|
|||||||
db 186
|
db 186
|
||||||
}
|
}
|
||||||
d80x25_top:
|
d80x25_top:
|
||||||
line_full_top
|
line_full_top
|
||||||
; draw seven digits of the git hash
|
if __REV__ > 0
|
||||||
__x = BUILD_CMTID
|
|
||||||
if __x > 0
|
|
||||||
__x = __x SHR 4
|
|
||||||
cur_line_pos = 75
|
cur_line_pos = 75
|
||||||
store byte ' ' at d80x25_top+cur_line_pos+1
|
store byte ' ' at d80x25_top+cur_line_pos+1
|
||||||
repeat 7
|
rev_var = __REV__
|
||||||
digit = __x AND 0xf
|
while rev_var > 0
|
||||||
if digit > 9
|
store byte rev_var mod 10 + '0' at d80x25_top+cur_line_pos
|
||||||
digit = digit - 10 + 'a'
|
cur_line_pos = cur_line_pos - 1
|
||||||
else
|
rev_var = rev_var / 10
|
||||||
digit = digit + '0'
|
end while
|
||||||
end if
|
store byte ' ' at d80x25_top+cur_line_pos
|
||||||
store byte digit at d80x25_top+cur_line_pos
|
store dword ' SVN' at d80x25_top+cur_line_pos-4
|
||||||
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
|
end if
|
||||||
|
|
||||||
space_msg:
|
space_msg:
|
||||||
line_space
|
line_space
|
||||||
verstr:
|
verstr:
|
||||||
|
; line_space
|
||||||
; version string
|
; version string
|
||||||
db 186,32
|
db 186,32
|
||||||
repeat 78
|
repeat 78
|
||||||
load a byte from kernel_header.signature+%-1
|
load a byte from kernel_header.signature+%-1
|
||||||
if a = 13
|
if a = 13
|
||||||
break
|
break
|
||||||
end if
|
end if
|
||||||
db a
|
db a
|
||||||
end repeat
|
end repeat
|
||||||
repeat 78 - ($-verstr)
|
repeat 78 - ($-verstr)
|
||||||
db ' '
|
db ' '
|
||||||
end repeat
|
end repeat
|
||||||
db 32,186
|
db 32,186
|
||||||
line_half
|
line_half
|
||||||
d80x25_top_num = 4
|
d80x25_top_num = 4
|
||||||
|
@@ -24,38 +24,9 @@ org 0
|
|||||||
; struct kernel_header
|
; struct kernel_header
|
||||||
jmp start_of_code ; jump
|
jmp start_of_code ; jump
|
||||||
db 'KolibriOS ' ; signature
|
db 'KolibriOS ' ; signature
|
||||||
db 'v0.7.7.0' ; FIXME: get distribution version from git tag?
|
db 'v0.7.7.0 ',13,10,13,10,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
|
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/bootstr.inc" ; language-independent boot messages
|
||||||
include "boot/preboot.inc"
|
include "boot/preboot.inc"
|
||||||
|
|
||||||
|
@@ -227,33 +227,6 @@ struct kernel_header
|
|||||||
; KERNEL.MNT file can be booted on BIOS as well as on UEFI.
|
; KERNEL.MNT file can be booted on BIOS as well as on UEFI.
|
||||||
ends
|
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
|
DRIVE_DATA_SIZE = 16
|
||||||
|
|
||||||
OS_BASE = 0x80000000
|
OS_BASE = 0x80000000
|
||||||
|
@@ -970,21 +970,13 @@ picture rb Xsize*Ysize*4 ; 32 бита
|
|||||||
размером 16 байт для будущей совместимости, в будущем могут быть
|
размером 16 байт для будущей совместимости, в будущем могут быть
|
||||||
добавлены некоторые поля.
|
добавлены некоторые поля.
|
||||||
Структура буфера:
|
Структура буфера:
|
||||||
db a,b,c,d для версии ОС a.b.c.d
|
db a,b,c,d для версии a.b.c.d
|
||||||
db отладочная метка, для релиза всегда 0, иначе любой символ ASCII
|
db 0: зарезервировано
|
||||||
db младшая часть ABI ядра
|
dd REV - номер svn-ревизии ядра
|
||||||
dw старшая часть ABI ядра
|
Для ядра Kolibri 0.7.7.0+:
|
||||||
dd идентификатор коммита, например краткий git-хэш в бинарном виде
|
|
||||||
dw зарезервировано
|
|
||||||
dw количество коммитов с момента последнего релиза
|
|
||||||
Пример структуры для ядра Kolibri 0.7.7.0+:
|
|
||||||
db 0,7,7,0
|
db 0,7,7,0
|
||||||
db 0
|
db 0
|
||||||
db 0
|
dd 1675
|
||||||
dw 40
|
|
||||||
dd 0xf26d5b28
|
|
||||||
dw 0
|
|
||||||
dw 1675
|
|
||||||
|
|
||||||
---------------------- Константы для регистров: ----------------------
|
---------------------- Константы для регистров: ----------------------
|
||||||
eax - SF_SYSTEM (18)
|
eax - SF_SYSTEM (18)
|
||||||
|
@@ -962,21 +962,13 @@ Remarks:
|
|||||||
16 byte buffer for the future compatibility, in the future
|
16 byte buffer for the future compatibility, in the future
|
||||||
some fields can be added.
|
some fields can be added.
|
||||||
Structure of the buffer:
|
Structure of the buffer:
|
||||||
db a,b,c,d for os version a.b.c.d
|
db a,b,c,d for version a.b.c.d
|
||||||
db debug tag, 0 for release, any ASCII char otherwise
|
db 0: reserved
|
||||||
db kernel ABI minor
|
dd REV - kernel SVN revision number
|
||||||
dw kernel ABI major
|
For Kolibri 0.7.7.0+ kernel:
|
||||||
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,7,7,0
|
||||||
db 0
|
db 0
|
||||||
db 0
|
dd 1675
|
||||||
dw 40
|
|
||||||
dd 0xf26d5b28
|
|
||||||
dw 0
|
|
||||||
dw 1675
|
|
||||||
|
|
||||||
---------------------- Constants for registers: ----------------------
|
---------------------- Constants for registers: ----------------------
|
||||||
eax - SF_SYSTEM (18)
|
eax - SF_SYSTEM (18)
|
||||||
|
@@ -30,8 +30,6 @@ format binary as "mnt"
|
|||||||
include 'macros.inc'
|
include 'macros.inc'
|
||||||
include 'struct.inc'
|
include 'struct.inc'
|
||||||
|
|
||||||
ABI_MAJOR = 0x28
|
|
||||||
ABI_MINOR = 0
|
|
||||||
|
|
||||||
USE_COM_IRQ = 1 ; make irq 3 and irq 4 available for PCI devices
|
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
|
VESA_1_2_VIDEO = 0 ; enable vesa 1.2 bank switch functions
|
||||||
@@ -713,33 +711,10 @@ end if
|
|||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
; show OS version, offset, debug tag and commit id on the message board
|
; show SVN version of kernel on the message board
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
mov eax, version_inf.osrel
|
mov eax, [version_inf.rev]
|
||||||
DEBUGF 1, "K : OS version: %u.%u.%u.%u", [eax+0]:1, [eax+1]:1, \
|
DEBUGF 1, "K : kernel SVN r%d\n", eax
|
||||||
[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
|
; show CPU count on the message board
|
||||||
;-----------------------------------------------------------------------------
|
;-----------------------------------------------------------------------------
|
||||||
@@ -2127,12 +2102,12 @@ sysfn_getdiskinfo: ; 18.11 = get disk info table
|
|||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
sysfn_getversion: ; 18.13 = get kernel ID and version
|
sysfn_getversion: ; 18.13 = get kernel ID and version
|
||||||
; if given memory address belongs to kernel then error
|
; if given memory address belongs to kernel then error
|
||||||
stdcall is_region_userspace, ecx, sizeof.kernel_version
|
stdcall is_region_userspace, ecx, version_inf.size
|
||||||
jnz .addr_error
|
jnz .addr_error
|
||||||
|
|
||||||
mov edi, ecx
|
mov edi, ecx
|
||||||
mov esi, version_inf
|
mov esi, version_inf
|
||||||
mov ecx, sizeof.kernel_version
|
mov ecx, version_inf.size
|
||||||
rep movsb
|
rep movsb
|
||||||
ret
|
ret
|
||||||
.addr_error: ; if given memory address is illegal
|
.addr_error: ; if given memory address is illegal
|
||||||
@@ -2312,18 +2287,11 @@ sound_flag db 0
|
|||||||
endg
|
endg
|
||||||
|
|
||||||
iglobal
|
iglobal
|
||||||
if ~ definite BUILD_DBGTAG
|
version_inf:
|
||||||
BUILD_DBGTAG = 0
|
db 0,7,7,0 ; FIXME: Get distribution version from git tag
|
||||||
end if
|
db 0
|
||||||
if ~ definite BUILD_CMTID
|
.rev dd __REV__
|
||||||
BUILD_CMTID = 0
|
.size = $ - version_inf
|
||||||
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
|
endg
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
align 4
|
align 4
|
||||||
@@ -4489,6 +4457,8 @@ end if
|
|||||||
|
|
||||||
include "data32.inc"
|
include "data32.inc"
|
||||||
|
|
||||||
|
__REV__ = __REV
|
||||||
|
|
||||||
if ~ lang eq es_ES
|
if ~ lang eq es_ES
|
||||||
diff16 "end of kernel code",0,$
|
diff16 "end of kernel code",0,$
|
||||||
end if
|
end if
|
||||||
|
@@ -5,6 +5,16 @@
|
|||||||
;; ;;
|
;; ;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
__REV = 0
|
||||||
|
|
||||||
|
macro $Revision a {
|
||||||
|
match =: Num =$,a \{
|
||||||
|
if __REV < Num
|
||||||
|
__REV = Num
|
||||||
|
end if
|
||||||
|
\}
|
||||||
|
}
|
||||||
|
|
||||||
;// mike.dld, 2006-29-01 [
|
;// mike.dld, 2006-29-01 [
|
||||||
|
|
||||||
; macros definition
|
; macros definition
|
||||||
|
@@ -1,2 +0,0 @@
|
|||||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
|
||||||
tup.rule("block.asm", "fasm -m 65636 %f %o " .. tup.getconfig("KPACK_CMD"), "block.bin")
|
|
BIN
programs/bcc32/games/blocks/bin/block.bin
Normal file
@@ -1,229 +0,0 @@
|
|||||||
// 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],
|
|
||||||
];
|
|
@@ -1,531 +0,0 @@
|
|||||||
// 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],
|
|
||||||
];
|
|
@@ -55,15 +55,9 @@ _ini taskbar_vars_ini = { #taskbar_ini_path, "Variables" };
|
|||||||
|
|
||||||
_ini docky_ini = { "/sys/settings/docky.ini", "@" };
|
_ini docky_ini = { "/sys/settings/docky.ini", "@" };
|
||||||
|
|
||||||
|
unsigned char panels_img_data[] = FROM "bars.raw";
|
||||||
#define PIMG_W 37
|
#define PIMG_W 37
|
||||||
#define PIMG_H 27 //27*5
|
#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;
|
proc_info Form;
|
||||||
|
|
||||||
@@ -143,7 +137,7 @@ void main()
|
|||||||
|
|
||||||
void DrawPanelsImage(dword y, n)
|
void DrawPanelsImage(dword y, n)
|
||||||
{
|
{
|
||||||
PutPaletteImage(n * PIMG_W * PIMG_H + #panels_img_data, PIMG_W, PIMG_H, 22, y, 8, #panels_img_pal);
|
PutImage(22, y, PIMG_W, PIMG_H, n * PIMG_W * PIMG_H * 3 + #panels_img_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetDisabledMode()
|
void SetDisabledMode()
|
||||||
|
@@ -68,7 +68,6 @@ struct TWebBrowser {
|
|||||||
void tag_a();
|
void tag_a();
|
||||||
void tag_p();
|
void tag_p();
|
||||||
void tag_img();
|
void tag_img();
|
||||||
void tag_kosicon();
|
|
||||||
void tag_div();
|
void tag_div();
|
||||||
void tag_h1234_caption();
|
void tag_h1234_caption();
|
||||||
void tag_ol_ul_dt();
|
void tag_ol_ul_dt();
|
||||||
@@ -102,16 +101,16 @@ void TWebBrowser::SetPageDefaults()
|
|||||||
img_url.drop();
|
img_url.drop();
|
||||||
text_colors.drop();
|
text_colors.drop();
|
||||||
text_colors.add(0);
|
text_colors.add(0);
|
||||||
if (secondrun) {
|
if (!secondrun) {
|
||||||
canvas.Init(list.x, list.y, list.w, math.max(list.visible, list.count));
|
bg_colors.drop();
|
||||||
|
bg_colors.add(DEFAULT_BG_COL);
|
||||||
|
} else {
|
||||||
canvas.Fill(0, bg_colors.get(0));
|
canvas.Fill(0, bg_colors.get(0));
|
||||||
}
|
}
|
||||||
bg_colors.drop();
|
|
||||||
bg_colors.add(DEFAULT_BG_COL);
|
|
||||||
header = NULL;
|
header = NULL;
|
||||||
draw_y = BODY_MARGIN;
|
draw_y = BODY_MARGIN;
|
||||||
draw_x = left_gap = BODY_MARGIN;
|
draw_x = left_gap = BODY_MARGIN;
|
||||||
draw_w = list.w - BODY_MARGIN - BODY_MARGIN;
|
draw_w = list.w - BODY_MARGIN;
|
||||||
linebuf = 0;
|
linebuf = 0;
|
||||||
redirect = '\0';
|
redirect = '\0';
|
||||||
list.SetFont(8, 14, 10011000b);
|
list.SetFont(8, 14, 10011000b);
|
||||||
@@ -137,6 +136,8 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
|
|||||||
dword bufpos;
|
dword bufpos;
|
||||||
bufsize = _bufsize;
|
bufsize = _bufsize;
|
||||||
|
|
||||||
|
if (list.w!=canvas.bufw) canvas.Init(list.x, list.y, list.w, 400*20);
|
||||||
|
|
||||||
if (bufpointer == _bufpointer) {
|
if (bufpointer == _bufpointer) {
|
||||||
custom_encoding = cur_encoding;
|
custom_encoding = cur_encoding;
|
||||||
} else {
|
} else {
|
||||||
@@ -155,6 +156,7 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
table.cols.drop();
|
table.cols.drop();
|
||||||
secondrun = false;
|
secondrun = false;
|
||||||
|
|
||||||
@@ -177,7 +179,7 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ESBYTE[bufpos] == '&') {
|
if (ESBYTE[bufpos] == '&') {
|
||||||
bufpos = GetUnicodeSymbol(#linebuf, sizeof(TWebBrowser.linebuf)-1, bufpos+1, bufpointer+bufsize);
|
bufpos = GetUnicodeSymbol(#linebuf, sizeof(TWebBrowser.linebuf), bufpos+1, bufpointer+bufsize);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (ESBYTE[bufpos] == '<') && (is_html) {
|
if (ESBYTE[bufpos] == '<') && (is_html) {
|
||||||
@@ -217,15 +219,19 @@ void TWebBrowser::ParseHtml(dword _bufpointer, _bufsize){
|
|||||||
AddCharToTheLine(ESBYTE[bufpos]);
|
AddCharToTheLine(ESBYTE[bufpos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderTextbuf();
|
|
||||||
list.count = draw_y + style.cur_line_h;
|
|
||||||
list.CheckDoesValuesOkey();
|
|
||||||
anchors.current = NULL;
|
|
||||||
|
|
||||||
if (!secondrun) {
|
if (!secondrun) {
|
||||||
secondrun = true;
|
secondrun = true;
|
||||||
goto _PARSE_START_;
|
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) {
|
if (!header) {
|
||||||
strncpy(#header, #version, sizeof(TWebBrowser.header)-1);
|
strncpy(#header, #version, sizeof(TWebBrowser.header)-1);
|
||||||
DrawTitle(#header);
|
DrawTitle(#header);
|
||||||
|
@@ -67,7 +67,7 @@ bool _tag::parse(dword _bufpos, bufend)
|
|||||||
|
|
||||||
if (!whitepos) || (whitepos > closepos) {
|
if (!whitepos) || (whitepos > closepos) {
|
||||||
//no param
|
//no param
|
||||||
strncpy(#name, bufpos, math.min(closepos - bufpos, sizeof(tag.name)-1));
|
strncpy(#name, bufpos, math.min(closepos - bufpos, sizeof(tag.name)));
|
||||||
bufpos = closepos;
|
bufpos = closepos;
|
||||||
} else {
|
} else {
|
||||||
//we have param
|
//we have param
|
||||||
@@ -76,7 +76,7 @@ bool _tag::parse(dword _bufpos, bufend)
|
|||||||
if (openpos < strchr(closepos+1, '>')) break;
|
if (openpos < strchr(closepos+1, '>')) break;
|
||||||
if (!closepos = EAX) {closepos = bufend;break;}
|
if (!closepos = EAX) {closepos = bufend;break;}
|
||||||
}
|
}
|
||||||
strncpy(#name, bufpos, math.min(whitepos - bufpos, sizeof(tag.name)-1));
|
strncpy(#name, bufpos, math.min(whitepos - bufpos, sizeof(tag.name)));
|
||||||
bufpos = closepos;
|
bufpos = closepos;
|
||||||
|
|
||||||
params = malloc(closepos - whitepos + 1);
|
params = malloc(closepos - whitepos + 1);
|
||||||
|
@@ -22,10 +22,11 @@ void TWebBrowser::RenderLine(dword _line)
|
|||||||
zoom = list.font_w / BASIC_CHAR_W;
|
zoom = list.font_w / BASIC_CHAR_W;
|
||||||
|
|
||||||
//there is some shit happens!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
//there is some shit happens!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
if (pw > draw_w + BODY_MARGIN) {
|
if (pw > draw_w) {
|
||||||
//debugln("shit");
|
//draw_w = pw;
|
||||||
|
NewLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debug_mode) {
|
if (debug_mode) {
|
||||||
canvas.DrawBar(draw_x, draw_y, pw, list.item_h, 0xCCCccc);
|
canvas.DrawBar(draw_x, draw_y, pw, list.item_h, 0xCCCccc);
|
||||||
debugln(_line);
|
debugln(_line);
|
||||||
@@ -82,13 +83,12 @@ void TWebBrowser::RenderTextbuf()
|
|||||||
|
|
||||||
//debugln(" \\n");
|
//debugln(" \\n");
|
||||||
|
|
||||||
//Is a new line fits in the maximum line width?
|
//Is a new line fits in the current line?
|
||||||
if (br * list.font_w + draw_x - left_gap >= draw_w) {
|
if (br * list.font_w + draw_x - left_gap >= draw_w) {
|
||||||
br = draw_w - draw_x + left_gap /list.font_w;
|
br = draw_w - draw_x + left_gap /list.font_w;
|
||||||
if (br < 0) br = 0;
|
|
||||||
while(br) {
|
while(br) {
|
||||||
if (ESBYTE[lbp + br]==' ') {
|
if (ESBYTE[lbp + br]==' ') {
|
||||||
if (br < len) br++;
|
br++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
br--;
|
br--;
|
||||||
@@ -96,16 +96,7 @@ void TWebBrowser::RenderTextbuf()
|
|||||||
}
|
}
|
||||||
//Maybe a new line is too big for the whole new line? Then we have to split it
|
//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) {
|
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;
|
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) {
|
if (br) {
|
||||||
@@ -129,13 +120,9 @@ void TWebBrowser::NewLine()
|
|||||||
|
|
||||||
if (draw_x==left_gap) && (draw_y==BODY_MARGIN) return;
|
if (draw_x==left_gap) && (draw_y==BODY_MARGIN) return;
|
||||||
if (t_html) && (!t_body) return;
|
if (t_html) && (!t_body) return;
|
||||||
|
|
||||||
if (draw_x == style.tag_list.level * 5 * list.font_w + left_gap) {
|
if (draw_x == style.tag_list.level * 5 * list.font_w + left_gap) {
|
||||||
if (!empty_line) {
|
if (!empty_line) empty_line=true; else return;
|
||||||
empty_line=true;
|
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
empty_line = false;
|
empty_line = false;
|
||||||
}
|
}
|
||||||
@@ -151,7 +138,7 @@ bool TWebBrowser::RenderImage(dword cur_img)
|
|||||||
int img_x, img_y, img_w, img_h;
|
int img_x, img_y, img_w, img_h;
|
||||||
dword imgbuf[44];
|
dword imgbuf[44];
|
||||||
|
|
||||||
if (!cur_img) || (!buf_data) return false;
|
if (!cur_img) return false;
|
||||||
|
|
||||||
img_h = ESDWORD[cur_img+8];
|
img_h = ESDWORD[cur_img+8];
|
||||||
img_w = ESDWORD[cur_img+4];
|
img_w = ESDWORD[cur_img+4];
|
||||||
|
@@ -10,7 +10,6 @@ void TWebBrowser::SetStyle()
|
|||||||
if (tag.is("a")) { tag_a(); return; }
|
if (tag.is("a")) { tag_a(); return; }
|
||||||
if (tag.is("p")) { tag_p(); return; }
|
if (tag.is("p")) { tag_p(); return; }
|
||||||
if (tag.is("img")) { tag_img(); 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("div")) { tag_div(); return; }
|
||||||
if (tag.is("br")) { /*draw_x++;*/NewLine(); return; }
|
if (tag.is("br")) { /*draw_x++;*/NewLine(); return; }
|
||||||
if (tag.is("nav")) { style.nav = tag.opened; return; }
|
if (tag.is("nav")) { style.nav = tag.opened; return; }
|
||||||
@@ -62,7 +61,7 @@ void TWebBrowser::SetStyle()
|
|||||||
void TWebBrowser::tag_p()
|
void TWebBrowser::tag_p()
|
||||||
{
|
{
|
||||||
IF (tag.prior[0] == 'h') || (streq(#tag.prior,"td")) return;
|
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();
|
NewLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +119,6 @@ void TWebBrowser::tag_iframe()
|
|||||||
|
|
||||||
void TWebBrowser::tag_a()
|
void TWebBrowser::tag_a()
|
||||||
{
|
{
|
||||||
if (!secondrun) return;
|
|
||||||
if (tag.opened)
|
if (tag.opened)
|
||||||
{
|
{
|
||||||
if (tag.get_value_of("href")) && (!strstr(tag.value,"javascript:"))
|
if (tag.get_value_of("href")) && (!strstr(tag.value,"javascript:"))
|
||||||
@@ -135,7 +133,6 @@ void TWebBrowser::tag_a()
|
|||||||
|
|
||||||
void TWebBrowser::tag_meta_xml()
|
void TWebBrowser::tag_meta_xml()
|
||||||
{
|
{
|
||||||
if (secondrun) return;
|
|
||||||
if (custom_encoding == -1) if (tag.get_value_of("charset"))
|
if (custom_encoding == -1) if (tag.get_value_of("charset"))
|
||||||
|| (tag.get_value_of("content")) || (tag.get_value_of("encoding"))
|
|| (tag.get_value_of("content")) || (tag.get_value_of("encoding"))
|
||||||
{
|
{
|
||||||
@@ -190,7 +187,7 @@ void TWebBrowser::tag_ol_ul_dt()
|
|||||||
|
|
||||||
void TWebBrowser::tag_li()
|
void TWebBrowser::tag_li()
|
||||||
{
|
{
|
||||||
//if (style.nav) return;
|
if (style.nav) return;
|
||||||
if (tag.opened) {
|
if (tag.opened) {
|
||||||
if (!style.tag_list.level) style.tag_list.upd_level(1, 'u');
|
if (!style.tag_list.level) style.tag_list.upd_level(1, 'u');
|
||||||
if (!style.pre) NewLine();
|
if (!style.pre) NewLine();
|
||||||
@@ -219,10 +216,13 @@ void TWebBrowser::tag_hr()
|
|||||||
void TWebBrowser::tag_body()
|
void TWebBrowser::tag_body()
|
||||||
{
|
{
|
||||||
t_body = tag.opened;
|
t_body = tag.opened;
|
||||||
if (tag.get_value_of("link")) link_color_default = GetColor(tag.value);
|
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("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("text")) text_colors.set(0, GetColor(tag.value));
|
||||||
if (tag.get_value_of("bgcolor")) bg_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));
|
||||||
|
}
|
||||||
// Autodetecting encoding if no encoding was set
|
// Autodetecting encoding if no encoding was set
|
||||||
if (tag.opened) && (custom_encoding==-1) && (cur_encoding == CH_CP866) {
|
if (tag.opened) && (custom_encoding==-1) && (cur_encoding == CH_CP866) {
|
||||||
if (strstr(bufpointer, "\208\190")) ChangeEncoding(CH_UTF8);
|
if (strstr(bufpointer, "\208\190")) ChangeEncoding(CH_UTF8);
|
||||||
@@ -250,10 +250,10 @@ void TWebBrowser::tag_h1234_caption()
|
|||||||
NewLine();
|
NewLine();
|
||||||
}
|
}
|
||||||
if (tag.is("h1")) {
|
if (tag.is("h1")) {
|
||||||
list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
|
list.SetFont(BASIC_CHAR_W*2, 14+12, 10011001b);
|
||||||
style.b = true;
|
style.b = true;
|
||||||
} else if (tag.is("h2")) {
|
} else if (tag.is("h2")) {
|
||||||
list.SetFont(BASIC_CHAR_W*2, 14+14, 10011001b);
|
list.SetFont(BASIC_CHAR_W*2, 14+12, 10011001b);
|
||||||
} else {
|
} else {
|
||||||
list.SetFont(6*2, 9+7, 10001001b);
|
list.SetFont(6*2, 9+7, 10001001b);
|
||||||
}
|
}
|
||||||
@@ -267,17 +267,6 @@ void TWebBrowser::tag_h1234_caption()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TWebBrowser::tag_kosicon()
|
|
||||||
{
|
|
||||||
dword imgbuf[44];
|
|
||||||
dword shared_i18 = memopen("ICONS18", NULL, SHM_READ);
|
|
||||||
if (shared_i18) && (tag.get_number_of("n")) {
|
|
||||||
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()
|
void TWebBrowser::tag_img()
|
||||||
{
|
{
|
||||||
@@ -305,7 +294,7 @@ void TWebBrowser::tag_img()
|
|||||||
if (!strcmp(tag.value + strrchr(tag.value, '.'), "webp")) goto NOIMG;
|
if (!strcmp(tag.value + strrchr(tag.value, '.'), "webp")) goto NOIMG;
|
||||||
|
|
||||||
strlcpy(#img_path, tag.value, sizeof(img_path)-1);
|
strlcpy(#img_path, tag.value, sizeof(img_path)-1);
|
||||||
replace_char(#img_path, ' ', '\0', sizeof(img_path)-1);
|
replace_char(#img_path, ' ', '\0', sizeof(img_path));
|
||||||
get_absolute_url(#img_path, history.current());
|
get_absolute_url(#img_path, history.current());
|
||||||
|
|
||||||
if (check_is_the_adress_local(#img_path)) {
|
if (check_is_the_adress_local(#img_path)) {
|
||||||
@@ -317,7 +306,7 @@ void TWebBrowser::tag_img()
|
|||||||
img_decode stdcall (cache.current_buf, cache.current_size, 0);
|
img_decode stdcall (cache.current_buf, cache.current_size, 0);
|
||||||
if (EAX) goto IMGOK; else goto NOIMG;
|
if (EAX) goto IMGOK; else goto NOIMG;
|
||||||
} else {
|
} else {
|
||||||
if (img_url.get_pos_by_name(#img_path)==-1) img_url.add(#img_path);
|
img_url.add(#img_path);
|
||||||
goto NOIMG;
|
goto NOIMG;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,28 +331,31 @@ NOIMG:
|
|||||||
text_colors.pop();
|
text_colors.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct TABLE {
|
struct TABLE {
|
||||||
|
int count;
|
||||||
int depth;
|
int depth;
|
||||||
int margin;
|
int margin;
|
||||||
collection_int cols;
|
collection_int cols;
|
||||||
|
collection_int width;
|
||||||
} table;
|
} table;
|
||||||
|
|
||||||
unsigned table_id;
|
|
||||||
unsigned colcount;
|
int tr_pos, td_pos;
|
||||||
unsigned tr_pos;
|
int row_start_y;
|
||||||
unsigned td_pos;
|
int colcount;
|
||||||
unsigned row_start_y;
|
dword tallest_cell_in_row;
|
||||||
unsigned tallest_cell_in_row;
|
|
||||||
unsigned cur_cell_w;
|
|
||||||
|
|
||||||
void TWebBrowser::tag_table_reset()
|
void TWebBrowser::tag_table_reset()
|
||||||
{
|
{
|
||||||
table_id = 0;
|
table.depth = 0;
|
||||||
|
table.count = 0;
|
||||||
colcount = 0;
|
colcount = 0;
|
||||||
tr_pos = 0;
|
tr_pos = 0;
|
||||||
td_pos = 0;
|
td_pos = 0;
|
||||||
table.depth = 0;
|
|
||||||
cur_cell_w = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TWebBrowser::tag_table()
|
void TWebBrowser::tag_table()
|
||||||
@@ -377,15 +369,15 @@ void TWebBrowser::tag_table()
|
|||||||
if(tag.opened) {
|
if(tag.opened) {
|
||||||
table.depth++;
|
table.depth++;
|
||||||
if (table.depth==1) {
|
if (table.depth==1) {
|
||||||
table_id++;
|
table.count++;
|
||||||
colcount = 0;
|
colcount = 0;
|
||||||
td_pos = 0;
|
td_pos = 0;
|
||||||
row_start_y = draw_y;
|
row_start_y = draw_y;
|
||||||
if (tag.get_number_of("width")) {
|
if (tag.get_number_of("width")) {
|
||||||
if (strchr(tag.value, '%')) tag.number = list.w * tag.number / 100;
|
if (strchr(tag.value, '%')) tag.number = list.w * tag.number / 100;
|
||||||
cur_cell_w = math.min(tag.number,list.w);
|
table.width.set(table.count, math.min(tag.number,list.w));
|
||||||
} else {
|
} else {
|
||||||
cur_cell_w = list.w;
|
table.width.set(table.count, list.w);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -444,17 +436,26 @@ void TWebBrowser::tag_table()
|
|||||||
|
|
||||||
if (!tr_pos) goto _TR_FIX;
|
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);
|
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;
|
style.cur_line_h = list.item_h;
|
||||||
if (tag.opened)
|
if (tag.opened) {
|
||||||
{
|
|
||||||
if (!td_pos) {
|
if (!td_pos) {
|
||||||
table.margin = list.w - cur_cell_w / 2 + BODY_MARGIN;
|
table.margin = list.w - table.width.get(table.count) / 2 + BODY_MARGIN;
|
||||||
draw_x = left_gap = table.margin;
|
draw_x = left_gap = table.margin;
|
||||||
draw_w = cur_cell_w - BODY_MARGIN;
|
draw_w = table.width.get(table.count) - BODY_MARGIN;
|
||||||
} else {
|
} else {
|
||||||
draw_x = left_gap = left_gap + draw_w;
|
draw_x = left_gap = left_gap + draw_w;
|
||||||
draw_w = cur_cell_w - left_gap + table.margin - BODY_MARGIN;
|
draw_w = table.width.get(table.count) - left_gap + table.margin - BODY_MARGIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EAX = table.cols.get(tr_pos-1)-td_pos) {
|
if (EAX = table.cols.get(tr_pos-1)-td_pos) {
|
||||||
@@ -465,19 +466,20 @@ void TWebBrowser::tag_table()
|
|||||||
}
|
}
|
||||||
if (table.cols.get(tr_pos-1)-td_pos>1) && (tag.get_number_of("width")) {
|
if (table.cols.get(tr_pos-1)-td_pos>1) && (tag.get_number_of("width")) {
|
||||||
if (strchr(tag.value, '%')) {
|
if (strchr(tag.value, '%')) {
|
||||||
tag.number = cur_cell_w * tag.number / 100; //
|
tag.number = table.width.get(table.count) - table.margin - 23 - left_gap * tag.number / 100;
|
||||||
}
|
}
|
||||||
if (tag.number < list.w - table.margin - left_gap) draw_w = tag.number;
|
if (tag.number < draw_w) draw_w = tag.number;
|
||||||
|
|
||||||
}
|
}
|
||||||
draw_y = row_start_y;
|
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++;
|
td_pos++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (draw_x > cur_cell_w) {
|
if (draw_x > table.width.get(table.count)) {
|
||||||
draw_x = left_gap = table.margin;
|
draw_x = left_gap = table.margin;
|
||||||
draw_w = cur_cell_w - table.margin - 23 - left_gap;
|
draw_w = table.width.get(table.count) - table.margin - 23 - left_gap;
|
||||||
table.depth = 0;
|
table.depth = 0;
|
||||||
NewLine();
|
NewLine();
|
||||||
if (debug_mode) {
|
if (debug_mode) {
|
||||||
@@ -485,8 +487,11 @@ void TWebBrowser::tag_table()
|
|||||||
canvas.DrawBar(0, draw_y, 20, 20, 0xFF0000);
|
canvas.DrawBar(0, draw_y, 20, 20, 0xFF0000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if (left_gap + draw_w > list.w) {
|
/*
|
||||||
// draw_w = list.w - left_gap;
|
if (left_gap + draw_w > list.w) {
|
||||||
// if (debug_mode) debugln("anomaly draw_W");
|
draw_w = list.w - left_gap;
|
||||||
//}
|
if (debug_mode) debugln("anomaly draw_W");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -66,7 +66,6 @@ char *unicode_symbols[]={
|
|||||||
"lowast","*",
|
"lowast","*",
|
||||||
|
|
||||||
"#128154","<3",
|
"#128154","<3",
|
||||||
"#128545",":(",
|
|
||||||
|
|
||||||
0};
|
0};
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
//Copyright 2007-2025 by Veliant & Leency
|
//Copyright 2007-2021 by Veliant & Leency
|
||||||
//Asper, lev, Lrz, Barsuk, Nable, hidnplayr...
|
//Asper, lev, Lrz, Barsuk, Nable, hidnplayr...
|
||||||
|
|
||||||
//BUGS
|
//BUGS
|
||||||
@@ -79,7 +79,7 @@ char default_dir[] = "/sys";
|
|||||||
od_filter filter2 = { 22, "TXT\0HTM\0HTML\0DOCX\0\0" };
|
od_filter filter2 = { 22, "TXT\0HTM\0HTML\0DOCX\0\0" };
|
||||||
|
|
||||||
char editURL[URL_SIZE+1];
|
char editURL[URL_SIZE+1];
|
||||||
edit_box omnibox_edit = {250, 0, 0, 0xffffff,
|
edit_box omnibox_edit = {, 0, 0, 0xffffff,
|
||||||
0x94AECE, 0xffffff, 0xffffff,0x10000000,URL_SIZE-2,#editURL,0,,19,19};
|
0x94AECE, 0xffffff, 0xffffff,0x10000000,URL_SIZE-2,#editURL,0,,19,19};
|
||||||
|
|
||||||
//===================================================//
|
//===================================================//
|
||||||
@@ -199,7 +199,7 @@ void main()
|
|||||||
GetProcessInfo(#Form, SelfInfo);
|
GetProcessInfo(#Form, SelfInfo);
|
||||||
ProcessMenuClick();
|
ProcessMenuClick();
|
||||||
sc.get();
|
sc.get();
|
||||||
if (Form.status_window & ROLLED_UP) break;
|
if (Form.status_window>2) break;
|
||||||
if (Form.height<120) { MoveSize(OLD,OLD,OLD,120); break; }
|
if (Form.height<120) { MoveSize(OLD,OLD,OLD,120); break; }
|
||||||
if (Form.width<280) { MoveSize(OLD,OLD,280,OLD); break; }
|
if (Form.width<280) { MoveSize(OLD,OLD,280,OLD); break; }
|
||||||
draw_window();
|
draw_window();
|
||||||
@@ -258,7 +258,6 @@ void main()
|
|||||||
free(http.content_pointer);
|
free(http.content_pointer);
|
||||||
GetImg(false);
|
GetImg(false);
|
||||||
}
|
}
|
||||||
debugln("end evNetwork");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -517,6 +516,7 @@ bool GetLocalFileData(dword _path)
|
|||||||
bool GetUrl(dword _http_url)
|
bool GetUrl(dword _http_url)
|
||||||
{
|
{
|
||||||
char new_url_full[URL_SIZE+1];
|
char new_url_full[URL_SIZE+1];
|
||||||
|
|
||||||
if (!strncmp(_http_url,"http:",5)) {
|
if (!strncmp(_http_url,"http:",5)) {
|
||||||
http.get(_http_url);
|
http.get(_http_url);
|
||||||
return true;
|
return true;
|
||||||
@@ -571,10 +571,10 @@ void OpenPage(dword _open_URL)
|
|||||||
//INTERNAL PAGE
|
//INTERNAL PAGE
|
||||||
history.add(#new_url);
|
history.add(#new_url);
|
||||||
WB1.custom_encoding = -1;
|
WB1.custom_encoding = -1;
|
||||||
if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buildin_page_home, sizeof(buildin_page_home)-1);
|
if (streq(#new_url, URL_SERVICE_HOMEPAGE)) LoadInternalPage(#buildin_page_home, sizeof(buildin_page_home));
|
||||||
else if (streq(#new_url, URL_SERVICE_TEST)) LoadInternalPage(#buildin_page_test, sizeof(buildin_page_test)-1);
|
else if (streq(#new_url, URL_SERVICE_TEST)) LoadInternalPage(#buildin_page_test, sizeof(buildin_page_test));
|
||||||
else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory();
|
else if (streq(#new_url, URL_SERVICE_HISTORY)) ShowHistory();
|
||||||
else LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
|
else LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
|
|
||||||
} else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) {
|
} else if (!strncmp(#new_url,"http:",5)) || (!strncmp(#new_url,"https:",6)) {
|
||||||
//WEB PAGE
|
//WEB PAGE
|
||||||
@@ -589,7 +589,7 @@ void OpenPage(dword _open_URL)
|
|||||||
|
|
||||||
if (!http.transfer) {
|
if (!http.transfer) {
|
||||||
history.add(#new_url);
|
history.add(#new_url);
|
||||||
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//LOCAL PAGE
|
//LOCAL PAGE
|
||||||
@@ -602,7 +602,7 @@ void OpenPage(dword _open_URL)
|
|||||||
strcpy(#new_url, "/tmp0/1/temp/word/document.xml");
|
strcpy(#new_url, "/tmp0/1/temp/word/document.xml");
|
||||||
}
|
}
|
||||||
if (!GetLocalFileData(#new_url)) {
|
if (!GetLocalFileData(#new_url)) {
|
||||||
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -712,7 +712,7 @@ void EventSubmitOmnibox()
|
|||||||
|
|
||||||
void LoadInternalPage(dword _bufdata, _in_bufsize){
|
void LoadInternalPage(dword _bufdata, _in_bufsize){
|
||||||
if (!_bufdata) || (!_in_bufsize) {
|
if (!_bufdata) || (!_in_bufsize) {
|
||||||
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error)-1);
|
LoadInternalPage(#buildin_page_error, sizeof(buildin_page_error));
|
||||||
} else {
|
} else {
|
||||||
WB1.list.first = 0; //scroll page to the top
|
WB1.list.first = 0; //scroll page to the top
|
||||||
DrawOmnibox();
|
DrawOmnibox();
|
||||||
@@ -870,7 +870,7 @@ void DrawStatusBar(dword _msg)
|
|||||||
{
|
{
|
||||||
dword status_y = Form.cheight - STATUSBAR_H + 4;
|
dword status_y = Form.cheight - STATUSBAR_H + 4;
|
||||||
dword status_w = Form.cwidth - 90;
|
dword status_w = Form.cwidth - 90;
|
||||||
if (Form.status_window & ROLLED_UP) return;
|
if (Form.status_window>2) return;
|
||||||
DrawBar(0,Form.cheight - STATUSBAR_H+1, Form.cwidth,STATUSBAR_H-1, sc.work);
|
DrawBar(0,Form.cheight - STATUSBAR_H+1, Form.cwidth,STATUSBAR_H-1, sc.work);
|
||||||
if (_msg) {
|
if (_msg) {
|
||||||
ESI = math.min(status_w/6, strlen(_msg));
|
ESI = math.min(status_w/6, strlen(_msg));
|
||||||
@@ -920,7 +920,7 @@ dword GetAbsoluteActiveURL()
|
|||||||
void CheckContentType()
|
void CheckContentType()
|
||||||
{
|
{
|
||||||
char content_type[64];
|
char content_type[64];
|
||||||
if (http.header_field("content-type", #content_type, sizeof(content_type)-1)) // application || image
|
if (http.header_field("content-type", #content_type, sizeof(content_type))) // application || image
|
||||||
|
|
||||||
if (content_type[0] == 'i') {
|
if (content_type[0] == 'i') {
|
||||||
EventDownloadAndOpenImage(http.cur_url);
|
EventDownloadAndOpenImage(http.cur_url);
|
||||||
@@ -968,14 +968,12 @@ dword GetImg(bool _new)
|
|||||||
for (i = 0; i < WB1.img_url.count; i++)
|
for (i = 0; i < WB1.img_url.count; i++)
|
||||||
{
|
{
|
||||||
cur_img_url = WB1.img_url.get(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) {
|
if (cache.has(cur_img_url)==false) {
|
||||||
prbar.max = WB1.img_url.count;
|
prbar.max = WB1.img_url.count;
|
||||||
prbar.value = i;
|
prbar.value = i;
|
||||||
if (GetUrl(cur_img_url)) {
|
if (GetUrl(cur_img_url)) {DrawStatusBar(cur_img_url); DrawProgress(); return;}
|
||||||
DrawStatusBar(cur_img_url);
|
|
||||||
DrawProgress();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_new) return;
|
if (_new) return;
|
||||||
|
@@ -112,4 +112,4 @@ char editbox_icons[] = FROM "res/editbox_icons.raw";
|
|||||||
|
|
||||||
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
||||||
|
|
||||||
char version[]="WebView 3.85";
|
char version[]="WebView 3.8";
|
@@ -4,10 +4,10 @@
|
|||||||
</head>
|
</head>
|
||||||
<body><pre>Welcome to WebView a Text-Based Browser.
|
<body><pre>Welcome to WebView a Text-Based Browser.
|
||||||
|
|
||||||
KolibriOS Bookmarks:
|
Bookmarks:
|
||||||
1. <a href=//kolibrios.org>Homepage</a>
|
1. <a href=//kolibrios.org>KolibriOS homepage</a>
|
||||||
2. <a href="//builds.kolibrios.org">Night-builds</a>
|
2. <a href="//builds.kolibrios.org">Night-builds</a>
|
||||||
3. <a href="//ftp.kolibrios.org">FTP Server</a>
|
3. <a href="//ftp.kolibrios.org">KolibriOS FTP</a>
|
||||||
|
|
||||||
<font bg=#F8F15B>By the way,</font>
|
<font bg=#F8F15B>By the way,</font>
|
||||||
<font color="#555555">• You can check for browser updates from the main menu.
|
<font color="#555555">• You can check for browser updates from the main menu.
|
||||||
|
@@ -1,15 +1,16 @@
|
|||||||
<html><head><meta charset="cp-866">
|
<html>
|
||||||
<title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD><E0A0AD><EFBFBD></title></head>
|
<head>
|
||||||
<body><pre><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⥪<>⮢<EFBFBD><E2AEA2> <20><><EFBFBD>㧥<EFBFBD> WebView!
|
<meta charset="cp-866">
|
||||||
|
<title><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>࠭<EFBFBD><E0A0AD><EFBFBD></title>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> KolibriOS:<ol>
|
</head>
|
||||||
<li><a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD>樠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᠩ<></a>
|
<body><pre><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||||
<li><a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
|
1. <a href=//kolibrios.org><EFBFBD><EFBFBD><EFBFBD>樠<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᠩ<> KolibriOS</a>
|
||||||
<li><a href="//ftp.kolibrios.org">FTP <20><>ࢥ<EFBFBD></a></ol>
|
2. <a href="//builds.kolibrios.org"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᡮન</a>
|
||||||
|
3. <a href="//ftp.kolibrios.org">KolibriOS FTP</a>
|
||||||
|
|
||||||
<font bg=#F8F15B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,</font>
|
<font bg=#F8F15B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,</font>
|
||||||
<font color="#555555">• <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>稥 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<font color="#555555">• <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>
|
||||||
• <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
|
• <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
|
||||||
• <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>.
|
• <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>.
|
||||||
• <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>.
|
• <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>
|
||||||
|
@@ -2,38 +2,38 @@
|
|||||||
<title>TEST</title>
|
<title>TEST</title>
|
||||||
<style>a {display:block;font-size:130%;margin:5px 40px 5px 0;}</style>
|
<style>a {display:block;font-size:130%;margin:5px 40px 5px 0;}</style>
|
||||||
<body>
|
<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>
|
||||||
|
|
||||||
<pre><h2>HTTP</h2>
|
<table><tr><td>Simplest:
|
||||||
<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=//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>
|
<a href=//nostalgy.net.ru/>nostalgy.net.ru</a>
|
||||||
|
<a href=//pci-ids.ucw.cz>pci.ids</a>
|
||||||
<h2>HTTPS :(</h2>
|
<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=//os-menuet.narod.ru>os-menuet.narod.ru</a>
|
<a href=//os-menuet.narod.ru>os-menuet.narod.ru</a>
|
||||||
<a href=//mestack.narod.ru/index.html>mestack.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=//coolthemes.narod.ru/indexold.html>coolthemes.narod.ru</a>
|
||||||
<a href=//lionovsky.us>lionovsky.us</a>
|
|
||||||
<a href=//acmp.ru/index.asp?main=tasks>acmp.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=//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=//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=//electromyne.de>electromyne.de</a>
|
<a href=//electromyne.de>electromyne.de</a>
|
||||||
|
<a href=//web.archive.org/web/20190403215447//www.thg.ru/>thg</a>
|
@@ -1,8 +1,9 @@
|
|||||||
//Leency, Veliant, Punk_Joker, PavelYakov & KolibriOS Team 2008-2025
|
//Leency, Veliant, Punk_Joker, PavelYakov & KolibriOS Team 2008-2022
|
||||||
//GNU GPL license.
|
//GNU GPL license.
|
||||||
|
|
||||||
/*
|
/*
|
||||||
BUGS:
|
BUGS:
|
||||||
|
- F1 in KFM (move Properties to an external app)
|
||||||
- Ctrl+1+2+3+4 in KFM
|
- Ctrl+1+2+3+4 in KFM
|
||||||
- Highlight another commands on Ctrl|Shift in KFM like in Classic KFM
|
- Highlight another commands on Ctrl|Shift in KFM like in Classic KFM
|
||||||
TODO:
|
TODO:
|
||||||
@@ -10,9 +11,9 @@ TODO:
|
|||||||
http://board.kolibrios.org/viewtopic.php?f=23&t=4521&p=77334#p77334
|
http://board.kolibrios.org/viewtopic.php?f=23&t=4521&p=77334#p77334
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define ABOUT_TITLE "Eolite 5.32"
|
#define ABOUT_TITLE "EOLITE 5.26a"
|
||||||
#define TITLE_EOLITE "Eolite File Manager 5.32"
|
#define TITLE_EOLITE "Eolite File Manager 5.26a"
|
||||||
#define TITLE_KFM "Kolibri File Manager 2.32";
|
#define TITLE_KFM "Kolibri File Manager 2.26a";
|
||||||
|
|
||||||
#define MEMSIZE 1024 * 250
|
#define MEMSIZE 1024 * 250
|
||||||
#include "../lib/clipboard.h"
|
#include "../lib/clipboard.h"
|
||||||
@@ -25,15 +26,12 @@ TODO:
|
|||||||
#include "../lib/kfont.h"
|
#include "../lib/kfont.h"
|
||||||
#include "../lib/collection.h"
|
#include "../lib/collection.h"
|
||||||
#include "../lib/copyf.h"
|
#include "../lib/copyf.h"
|
||||||
#include "../lib/dll.h"
|
|
||||||
|
|
||||||
#include "../lib/obj/libini.h"
|
#include "../lib/obj/libini.h"
|
||||||
#include "../lib/obj/box_lib.h"
|
#include "../lib/obj/box_lib.h"
|
||||||
#include "../lib/obj/libimg.h"
|
#include "../lib/obj/libimg.h"
|
||||||
#include "../lib/obj/proc_lib.h"
|
|
||||||
|
|
||||||
#include "../lib/patterns/history.h"
|
#include "../lib/patterns/history.h"
|
||||||
#include "../lib/patterns/select_list.h"
|
|
||||||
|
|
||||||
#include "imgs/images.h"
|
#include "imgs/images.h"
|
||||||
#include "include/const.h"
|
#include "include/const.h"
|
||||||
@@ -112,8 +110,6 @@ 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};
|
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\settings.h"
|
||||||
#include "include\gui.h"
|
#include "include\gui.h"
|
||||||
#include "include\progress_dialog.h"
|
#include "include\progress_dialog.h"
|
||||||
@@ -125,8 +121,6 @@ _ini icons_ini = { "/sys/File managers/icons.ini", NULL };
|
|||||||
#include "include\about.h"
|
#include "include\about.h"
|
||||||
#include "include\properties.h"
|
#include "include\properties.h"
|
||||||
|
|
||||||
#include "search.c"
|
|
||||||
|
|
||||||
void handle_param()
|
void handle_param()
|
||||||
{
|
{
|
||||||
//-p <path> : just show file/folder properties dialog
|
//-p <path> : just show file/folder properties dialog
|
||||||
@@ -152,14 +146,6 @@ void handle_param()
|
|||||||
|
|
||||||
if (ESBYTE[p]=='\0') return;
|
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])
|
if (ESBYTE[p]=='-') switch (ESBYTE[p+1])
|
||||||
{
|
{
|
||||||
case 'p':
|
case 'p':
|
||||||
@@ -209,8 +195,6 @@ void main()
|
|||||||
|
|
||||||
handle_param();
|
handle_param();
|
||||||
|
|
||||||
kfont.init(DEFAULT_FONT);
|
|
||||||
|
|
||||||
SystemDiscs.Get();
|
SystemDiscs.Get();
|
||||||
OpenDir(ONLY_OPEN);
|
OpenDir(ONLY_OPEN);
|
||||||
llist_copy(#files_inactive, #files);
|
llist_copy(#files_inactive, #files);
|
||||||
@@ -255,7 +239,6 @@ void main()
|
|||||||
if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) {
|
if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) {
|
||||||
EventChooseFilesRange(old_cur_y, files.cur_y);
|
EventChooseFilesRange(old_cur_y, files.cur_y);
|
||||||
} else if (key_modifier&KEY_LCTRL) || (key_modifier&KEY_RCTRL) {
|
} else if (key_modifier&KEY_LCTRL) || (key_modifier&KEY_RCTRL) {
|
||||||
if (!getSelectedCount()) EventChooseFile(old_cur_y);
|
|
||||||
EventChooseFile(files.cur_y);
|
EventChooseFile(files.cur_y);
|
||||||
DrawStatusBar();
|
DrawStatusBar();
|
||||||
List_ReDraw();
|
List_ReDraw();
|
||||||
@@ -443,9 +426,6 @@ void main()
|
|||||||
}
|
}
|
||||||
EventDriveClick(key_scancode);
|
EventDriveClick(key_scancode);
|
||||||
break;
|
break;
|
||||||
case SCAN_CODE_KEY_P:
|
|
||||||
EventCopyItemPath();
|
|
||||||
break;
|
|
||||||
case SCAN_CODE_KEY_X:
|
case SCAN_CODE_KEY_X:
|
||||||
CopyFilesListToClipboard(CUT);
|
CopyFilesListToClipboard(CUT);
|
||||||
break;
|
break;
|
||||||
@@ -455,9 +435,6 @@ void main()
|
|||||||
case SCAN_CODE_KEY_G:
|
case SCAN_CODE_KEY_G:
|
||||||
EventOpenConsoleHere();
|
EventOpenConsoleHere();
|
||||||
break;
|
break;
|
||||||
case SCAN_CODE_KEY_F:
|
|
||||||
EventOpenSearch();
|
|
||||||
break;
|
|
||||||
case SCAN_CODE_KEY_V:
|
case SCAN_CODE_KEY_V:
|
||||||
EventPaste(path);
|
EventPaste(path);
|
||||||
break;
|
break;
|
||||||
@@ -562,13 +539,16 @@ void draw_window()
|
|||||||
incn x;
|
incn x;
|
||||||
dword title;
|
dword title;
|
||||||
static int rand_n;
|
static int rand_n;
|
||||||
if (!rand_n) && (Form.width + 1 != screen.w) rand_n = random(80);
|
if (!rand_n) 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;
|
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);
|
DefineAndDrawWindow(Form.left+rand_n,Form.top+rand_n,Form.width,Form.height,0x73,NULL,title,0);
|
||||||
GetProcessInfo(#Form, SelfInfo);
|
GetProcessInfo(#Form, SelfInfo);
|
||||||
@@ -616,7 +596,7 @@ void draw_window()
|
|||||||
}
|
}
|
||||||
//main rectangles
|
//main rectangles
|
||||||
DrawRectangle(1,40,Form.cwidth-3,Form.cheight - 42-status_bar_h,sc.line);
|
DrawRectangle(1,40,Form.cwidth-3,Form.cheight - 42-status_bar_h,sc.line);
|
||||||
DrawBar(0,39,1,-status_bar_h + Form.cheight - 40, sc.work);
|
DrawBar(0,39,1,-show_status_bar.checked*status_bar_h + Form.cheight - 40, sc.work);
|
||||||
EBX = Form.cwidth-1 * 65536 + 1;
|
EBX = Form.cwidth-1 * 65536 + 1;
|
||||||
$int 64
|
$int 64
|
||||||
for (i=0; i<6; i++) DrawBar(0, 34+i, Form.cwidth, 1, MixColors(sc.dark, sc.work, i*10));
|
for (i=0; i<6; i++) DrawBar(0, 34+i, Form.cwidth, 1, MixColors(sc.dark, sc.work, i*10));
|
||||||
@@ -671,13 +651,17 @@ void DrawStatusBar()
|
|||||||
{
|
{
|
||||||
char status_bar_str[80];
|
char status_bar_str[80];
|
||||||
int go_up_folder_exists=0;
|
int go_up_folder_exists=0;
|
||||||
DrawBar(0, Form.cheight - status_bar_h-1, Form.cwidth, 1, sc.light);
|
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);
|
||||||
|
|
||||||
if (efm) {
|
if (efm) {
|
||||||
DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, 2, sc.work);
|
DrawBar(0, Form.cheight - status_bar_h, Form.cwidth, 2, sc.work);
|
||||||
DrawBar(0, Form.cheight - 2, Form.cwidth, 2, EDX);
|
DrawBar(0, Form.cheight - 2, Form.cwidth, 2, EDX);
|
||||||
DrawBar(Form.cwidth-1, Form.cheight - 19, 1, 17, EDX);
|
DrawBar(Form.cwidth-1, Form.cheight - 19, 1, 17, EDX);
|
||||||
DrawFuncButtonsInKfm();
|
DrawFuncButtonsInKfm();
|
||||||
} else {
|
} else if (show_status_bar.checked) {
|
||||||
if (files.count>0) && (streq(items.get(0)*304+buf+72,"..")) go_up_folder_exists=1;
|
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);
|
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);
|
sprintf(#status_bar_str, T_STATUS_EVEMENTS, folder_count-go_up_folder_exists, files.count-folder_count);
|
||||||
@@ -718,7 +702,7 @@ void DrawFilePanels()
|
|||||||
DrawButtonsAroundList();
|
DrawButtonsAroundList();
|
||||||
path = location[active_panel^1];
|
path = location[active_panel^1];
|
||||||
active_panel ^= 1;
|
active_panel ^= 1;
|
||||||
OpenDir_without_unselect(WITH_REDRAW);
|
OpenDir2(WITH_REDRAW);
|
||||||
active_panel ^= 1;
|
active_panel ^= 1;
|
||||||
if (!getSelectedCount()) files_inactive.count = files.count;
|
if (!getSelectedCount()) files_inactive.count = files.count;
|
||||||
llist_copy(#files, #files_active);
|
llist_copy(#files, #files_active);
|
||||||
@@ -731,22 +715,38 @@ void DrawFilePanels()
|
|||||||
|
|
||||||
DrawButtonsAroundList();
|
DrawButtonsAroundList();
|
||||||
path = location[active_panel];
|
path = location[active_panel];
|
||||||
OpenDir_without_unselect(WITH_REDRAW);
|
OpenDir2(WITH_REDRAW);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenDir(char redraw) {
|
void OpenDir2(char redraw){
|
||||||
unselectAll();
|
if (buf) free(buf);
|
||||||
OpenDir_without_unselect(redraw);
|
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_without_unselect(char redraw) {
|
void OpenDir(char redraw){
|
||||||
int errornum;
|
int errornum;
|
||||||
|
unselectAll();
|
||||||
if (buf) free(buf);
|
if (buf) free(buf);
|
||||||
if (errornum = GetDir(#buf, #files.count, path, DIRS_NOROOT)) {
|
if (errornum = GetDir(#buf, #files.count, path, DIRS_NOROOT)) {
|
||||||
history.add(path);
|
history.add(path);
|
||||||
|
//EventHistoryGoBack();
|
||||||
Dir_Up();
|
Dir_Up();
|
||||||
Write_Error(errornum);
|
Write_Error(errornum);
|
||||||
return;
|
return;
|
||||||
@@ -1041,6 +1041,7 @@ void EventHistoryGoForward()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ShowOpenWithDialog()
|
void ShowOpenWithDialog()
|
||||||
{
|
{
|
||||||
byte open_param[4097];
|
byte open_param[4097];
|
||||||
@@ -1114,6 +1115,7 @@ void EventClosePopinForm()
|
|||||||
void ShowPopinForm(byte _popin_type)
|
void ShowPopinForm(byte _popin_type)
|
||||||
{
|
{
|
||||||
int popinx;
|
int popinx;
|
||||||
|
popin_string[0] = -1;
|
||||||
switch(_popin_type) {
|
switch(_popin_type) {
|
||||||
case POPIN_PATH:
|
case POPIN_PATH:
|
||||||
edit_box_set_text stdcall (#popin_text, path);
|
edit_box_set_text stdcall (#popin_text, path);
|
||||||
@@ -1128,13 +1130,11 @@ void ShowPopinForm(byte _popin_type)
|
|||||||
DrawEolitePopup(T_CREATE, T_CANCEL);
|
DrawEolitePopup(T_CREATE, T_CANCEL);
|
||||||
break;
|
break;
|
||||||
case POPIN_RENAME:
|
case POPIN_RENAME:
|
||||||
if (itdir) && (streq(#file_name,"..")) return;
|
|
||||||
edit_box_set_text stdcall (#popin_text, #file_name);
|
edit_box_set_text stdcall (#popin_text, #file_name);
|
||||||
DrawEolitePopup(T_RENAME, T_CANCEL);
|
DrawEolitePopup(T_RENAME, T_CANCEL);
|
||||||
break;
|
break;
|
||||||
case POPIN_DELETE:
|
case POPIN_DELETE:
|
||||||
if (!files.count) return;
|
if (!files.count) return;
|
||||||
popin_string[0] = -1;
|
|
||||||
if (!getSelectedCount()) && (!strncmp(#file_name,"..",2)) return;
|
if (!getSelectedCount()) && (!strncmp(#file_name,"..",2)) return;
|
||||||
popinx = DrawEolitePopup(T_YES, T_NO);
|
popinx = DrawEolitePopup(T_YES, T_NO);
|
||||||
WriteTextCenter(popinx, 178, POPIN_W, sc.work_text, T_DELETE_FILE);
|
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);
|
if (files.count) ShowPopinForm(POPIN_RENAME);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (files.count) && (!itdir) RunProgram("/sys/develop/heed", #file_path);
|
if (files.count) && (!itdir) RunProgram("/kolibrios/utils/quark", #file_path);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (files.count) && (!itdir) RunProgram("/sys/develop/cedit", #file_path);
|
if (files.count) && (!itdir) RunProgram("/sys/develop/cedit", #file_path);
|
||||||
@@ -1326,18 +1326,6 @@ void EventOpenConsoleHere()
|
|||||||
RunProgram("/sys/shell", #param);
|
RunProgram("/sys/shell", #param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventOpenSearch()
|
|
||||||
{
|
|
||||||
sprintf(#param, "\\s %s", path);
|
|
||||||
RunProgram(#program_path, #param);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void EventCopyItemPath()
|
|
||||||
{
|
|
||||||
Clipboard__CopyText(#file_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProceedMouseGestures()
|
void ProceedMouseGestures()
|
||||||
{
|
{
|
||||||
char stats;
|
char stats;
|
||||||
|
@@ -1,8 +1,16 @@
|
|||||||
if tup.getconfig("NO_CMM") ~= "" then return end
|
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"
|
if tup.getconfig("LANG") == "ru_RU"
|
||||||
then C_LANG = "LANG_RUS"
|
then C_LANG = "LANG_RUS"
|
||||||
else C_LANG = "LANG_ENG" -- this includes default case without config
|
else C_LANG = "LANG_ENG" -- this includes default case without config
|
||||||
end
|
end
|
||||||
|
|
||||||
tup.rule("Eolite.c", "c-- /D=$(C_LANG) /OPATH=%o %f" .. tup.getconfig("KPACK_CMD"), "Eolite.com")
|
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")
|
||||||
|
@@ -42,7 +42,7 @@ void about_dialog()
|
|||||||
about_x = -strlen(ABOUT_TITLE)*18+about_form.cwidth/2;
|
about_x = -strlen(ABOUT_TITLE)*18+about_form.cwidth/2;
|
||||||
WriteTextB(about_x+2,107,0x82,0xD49CD2,ABOUT_TITLE);
|
WriteTextB(about_x+2,107,0x82,0xD49CD2,ABOUT_TITLE);
|
||||||
WriteTextB(about_x,105,0x82,0x9D129D,ABOUT_TITLE);
|
WriteTextB(about_x,105,0x82,0x9D129D,ABOUT_TITLE);
|
||||||
WriteTextLines(73,163,0x90,sc.work_text," By Leency\nand KolibriOS Team\n 2008-2025",20);
|
WriteTextLines(73,163,0x90,sc.work_text," By Leency\nand KolibriOS Team\n 2008-2021",20);
|
||||||
#ifdef LANG_RUS
|
#ifdef LANG_RUS
|
||||||
DrawStandartCaptButton(60,about_form.cheight-38,11,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧࠡ<E0A0A7>⪨");
|
DrawStandartCaptButton(60,about_form.cheight-38,11,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ࠧࠡ<E0A0A7>⪨");
|
||||||
#endif
|
#endif
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
char *kfm_func = {
|
char *kfm_func = {
|
||||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
"<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><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 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_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 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 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 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 LIST_LINE_HEIGHT "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD> <20> ᯨ᪥"
|
||||||
#define SAVE_PATH_AS_DEFAULT "<22><><EFBFBD><EFBFBD>騩 <20><><EFBFBD><EFBFBD>"
|
#define SAVE_PATH_AS_DEFAULT "<22><><EFBFBD><EFBFBD>騩 <20><><EFBFBD><EFBFBD>"
|
||||||
@@ -137,7 +137,7 @@ char *actions[] = {
|
|||||||
char *kfm_func = {
|
char *kfm_func = {
|
||||||
"Info",
|
"Info",
|
||||||
"Rename",
|
"Rename",
|
||||||
"HEX View",
|
"View",
|
||||||
"Edit",
|
"Edit",
|
||||||
"Copy",
|
"Copy",
|
||||||
"Move",
|
"Move",
|
||||||
@@ -185,9 +185,9 @@ char *actions[] = {
|
|||||||
|
|
||||||
#define TITLE_SETT "Settings"
|
#define TITLE_SETT "Settings"
|
||||||
#define SHOW_DEVICE_CLASS "Show device class name"
|
#define SHOW_DEVICE_CLASS "Show device class name"
|
||||||
|
#define SHOW_STATUS_BAR "Show status bar"
|
||||||
#define BIG_ICONS "Big icons in list"
|
#define BIG_ICONS "Big icons in list"
|
||||||
#define COLORED_LINES "Highlight even lines in list"
|
#define COLORED_LINES "Highlight even lines in list"
|
||||||
#define FONT_BOLD "Bold font"
|
|
||||||
#define FONT_SIZE_LABEL "Font size"
|
#define FONT_SIZE_LABEL "Font size"
|
||||||
#define LIST_LINE_HEIGHT "List line height"
|
#define LIST_LINE_HEIGHT "List line height"
|
||||||
#define SAVE_PATH_AS_DEFAULT "Current path"
|
#define SAVE_PATH_AS_DEFAULT "Current path"
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
_ini icons_ini = { "/sys/File managers/icons.ini", NULL };
|
||||||
|
|
||||||
struct ICONS_INI {
|
struct ICONS_INI {
|
||||||
collection exts;
|
collection exts;
|
||||||
|
@@ -158,27 +158,25 @@ void _SystemDiscs::DrawOptions(int draw_x)
|
|||||||
SystemDiscs.Get();
|
SystemDiscs.Get();
|
||||||
|
|
||||||
DrawPopup(draw_x, optionsy, DDW, list.count*KFM2_DEVH, 1, -1, sc.line);
|
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++) {
|
for (i=0;i<list.count;i++) {
|
||||||
strcpy(#dev_name, list.get(i));
|
strcpy(#dev_name, list.get(i));
|
||||||
GetDiskIconAndName(#dev_name, #dev_icon, #disc_name);
|
GetDiskIconAndName(#dev_name, #dev_icon, #disc_name);
|
||||||
if (strstr(path, #dev_name)!=0) kfont.bold=true; else kfont.bold=false;
|
if (strstr(path, #dev_name)!=0) is_active=true; else is_active=false;
|
||||||
|
|
||||||
DrawBar(draw_x, optionsy, DDW, KFM2_DEVH, 0xFFFFFF);
|
DrawBar(draw_x, optionsy, DDW, KFM2_DEVH, 0xFFFFFF);
|
||||||
DefineButton(draw_x, optionsy, DDW, KFM2_DEVH-1, 100+i+BT_HIDE,0xFFFFFF);
|
DefineButton(draw_x, optionsy, DDW, KFM2_DEVH-1, 100+i+BT_HIDE,0xFFFFFF);
|
||||||
PutImage(draw_x + 5, optionsy+2, 18,17, kfont.bold*7+dev_icon*17*18*3+#devices);
|
PutImage(draw_x + 5, optionsy+2, 18,17, is_active*7+dev_icon*17*18*3+#devices);
|
||||||
|
if (is_active) kfont.bold = true;
|
||||||
//strncpy(#volume_label, GetVolumeLabel(#dev_name), sizeof(volume_label));
|
//strncpy(#volume_label, GetVolumeLabel(#dev_name), sizeof(volume_label));
|
||||||
strcpy(#label_file_name, #dev_name);
|
strcpy(#label_file_name, #dev_name);
|
||||||
//if (dev_name[1]!='k') && (dev_name[2]!='y') {
|
//if (dev_name[1]!='k') && (dev_name[2]!='y') {
|
||||||
// if (volume_label) sprintf(#label_file_name, "%s [%s]", #dev_name, #volume_label);
|
// 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.WriteIntoWindow(draw_x + 24, optionsy+2, 0xFFFfff, 0x000000, kfont.size.pt, #label_file_name+1);
|
||||||
|
kfont.bold = false;
|
||||||
optionsy += KFM2_DEVH;
|
optionsy += KFM2_DEVH;
|
||||||
}
|
}
|
||||||
$pop eax
|
|
||||||
kfont.bold = EAX;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -4,11 +4,9 @@ char file_actions[]=
|
|||||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Enter
|
"<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> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Ctrl+Ent
|
||||||
-
|
-
|
||||||
<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><EFBFBD><EFBFBD>|Ctrl+C
|
<EFBFBD><EFBFBD>⠢<EFBFBD><EFBFBD><EFBFBD> |Ctrl+V
|
||||||
<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><EFBFBD><EFBFBD><EFBFBD> |F2
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Del
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |Del
|
||||||
@@ -17,10 +15,8 @@ char empty_folder_actions[]=
|
|||||||
"<EFBFBD><EFBFBD>⠢<EFBFBD><EFBFBD><EFBFBD> |Ctrl+V";
|
"<EFBFBD><EFBFBD>⠢<EFBFBD><EFBFBD><EFBFBD> |Ctrl+V";
|
||||||
char burger_menu_items[] =
|
char burger_menu_items[] =
|
||||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>|Ctrl+N
|
"<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>|Ctrl+G
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+F
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>|Ctrl+R
|
||||||
-
|
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ன<EFBFBD><EFBFBD>|F10
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ன<EFBFBD><EFBFBD>|F10
|
||||||
<EFBFBD> <EFBFBD>ணࠬ<EFBFBD><EFBFBD>";
|
<EFBFBD> <EFBFBD>ணࠬ<EFBFBD><EFBFBD>";
|
||||||
|
|
||||||
@@ -29,8 +25,6 @@ char file_actions[]=
|
|||||||
"Ava |Enter
|
"Ava |Enter
|
||||||
Ava ... |Ctrl+Ent
|
Ava ... |Ctrl+Ent
|
||||||
-
|
-
|
||||||
Copy path |Ctrl+P
|
|
||||||
-
|
|
||||||
Kopeeri |Ctrl+C
|
Kopeeri |Ctrl+C
|
||||||
L<EFBFBD>ika |Ctrl+X
|
L<EFBFBD>ika |Ctrl+X
|
||||||
Aseta |Ctrl+V
|
Aseta |Ctrl+V
|
||||||
@@ -42,10 +36,8 @@ char empty_folder_actions[]=
|
|||||||
"Aseta |Ctrl+V";
|
"Aseta |Ctrl+V";
|
||||||
char burger_menu_items[] =
|
char burger_menu_items[] =
|
||||||
"New window|Ctrl+N
|
"New window|Ctrl+N
|
||||||
-
|
|
||||||
Open console here|Ctrl+G
|
Open console here|Ctrl+G
|
||||||
Search|Ctrl+F
|
V<EFBFBD>rskenda|Ctrl+R
|
||||||
-
|
|
||||||
Settings|F10
|
Settings|F10
|
||||||
About";
|
About";
|
||||||
|
|
||||||
@@ -54,8 +46,6 @@ char file_actions[]=
|
|||||||
"Open |Enter
|
"Open |Enter
|
||||||
Open with... |Ctrl+Ent
|
Open with... |Ctrl+Ent
|
||||||
-
|
-
|
||||||
Copy path |Ctrl+P
|
|
||||||
-
|
|
||||||
Copy |Ctrl+C
|
Copy |Ctrl+C
|
||||||
Cut |Ctrl+X
|
Cut |Ctrl+X
|
||||||
Paste |Ctrl+V
|
Paste |Ctrl+V
|
||||||
@@ -67,10 +57,8 @@ char empty_folder_actions[]=
|
|||||||
"Paste |Ctrl+V";
|
"Paste |Ctrl+V";
|
||||||
char burger_menu_items[] =
|
char burger_menu_items[] =
|
||||||
"New window|Ctrl+N
|
"New window|Ctrl+N
|
||||||
-
|
|
||||||
Open console here|Ctrl+G
|
Open console here|Ctrl+G
|
||||||
Search|Ctrl+F
|
Refresh folder|Ctrl+R
|
||||||
-
|
|
||||||
Settings|F10
|
Settings|F10
|
||||||
About";
|
About";
|
||||||
#endif
|
#endif
|
||||||
@@ -88,18 +76,17 @@ void EventMenuClick(dword _id)
|
|||||||
if (active_menu == MENU_FILE) switch(_id) {
|
if (active_menu == MENU_FILE) switch(_id) {
|
||||||
case 1: EventOpen(0); break;
|
case 1: EventOpen(0); break;
|
||||||
case 2: ShowOpenWithDialog(); break;
|
case 2: ShowOpenWithDialog(); break;
|
||||||
case 3: EventCopyItemPath(); break;
|
case 3: CopyFilesListToClipboard(COPY); break;
|
||||||
case 4: CopyFilesListToClipboard(COPY); break;
|
case 4: CopyFilesListToClipboard(CUT); break;
|
||||||
case 5: CopyFilesListToClipboard(CUT); break;
|
case 5: EventPaste(path); break;
|
||||||
case 6: EventPaste(path); break;
|
case 6: FnProcess(2); break;
|
||||||
case 7: FnProcess(2); break;
|
case 7: ShowPopinForm(POPIN_DELETE); break;
|
||||||
case 8: ShowPopinForm(POPIN_DELETE); break;
|
case 8: FnProcess(1); break;
|
||||||
case 9: FnProcess(1); break;
|
|
||||||
}
|
}
|
||||||
if (active_menu == MENU_BURGER) switch(_id) {
|
if (active_menu == MENU_BURGER) switch(_id) {
|
||||||
case 1: EventOpenNewEolite(); break;
|
case 1: EventOpenNewEolite(); break;
|
||||||
case 2: EventOpenConsoleHere(); break;
|
case 2: EventOpenConsoleHere(); break;
|
||||||
case 3: EventOpenSearch(); break;
|
case 3: EventRefreshDisksAndFolders(); break;
|
||||||
case 4: FnProcess(10); break;
|
case 4: FnProcess(10); break;
|
||||||
case 5: EventShowAbout(); break;
|
case 5: EventShowAbout(); break;
|
||||||
}
|
}
|
||||||
|
@@ -175,10 +175,8 @@ void properties_dialog()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case evMouse:
|
case evMouse:
|
||||||
if (!apply_question_active) {
|
edit_box_mouse stdcall (#file_name_ed);
|
||||||
edit_box_mouse stdcall (#file_name_ed);
|
edit_box_mouse stdcall (#path_to_file_ed);
|
||||||
edit_box_mouse stdcall (#path_to_file_ed);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evKey:
|
case evKey:
|
||||||
|
@@ -7,11 +7,11 @@ edit_box path_start_ed = {290,50,57,0xffffff,0x94AECE,0xffffff,0xffffff,0x100000
|
|||||||
#path_start,0, 100000000000010b,0,0};
|
#path_start,0, 100000000000010b,0,0};
|
||||||
|
|
||||||
more_less_box font_size = { NULL, 9, 22, FONT_SIZE_LABEL };
|
more_less_box font_size = { NULL, 9, 22, FONT_SIZE_LABEL };
|
||||||
more_less_box line_height = { NULL, 18, 64, LIST_LINE_HEIGHT };
|
more_less_box line_height = { NULL, 16, 64, LIST_LINE_HEIGHT };
|
||||||
checkbox show_dev_name = { SHOW_DEVICE_CLASS };
|
checkbox show_dev_name = { SHOW_DEVICE_CLASS };
|
||||||
|
checkbox show_status_bar = { SHOW_STATUS_BAR };
|
||||||
checkbox big_icons = { BIG_ICONS };
|
checkbox big_icons = { BIG_ICONS };
|
||||||
checkbox colored_lines = { COLORED_LINES };
|
checkbox colored_lines = { COLORED_LINES };
|
||||||
checkbox bold_font = { FONT_BOLD };
|
|
||||||
|
|
||||||
|
|
||||||
void settings_dialog()
|
void settings_dialog()
|
||||||
@@ -51,10 +51,8 @@ void settings_dialog()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
show_dev_name.click(id);
|
show_dev_name.click(id);
|
||||||
|
show_status_bar.click(id);
|
||||||
colored_lines.click(id);
|
colored_lines.click(id);
|
||||||
if (bold_font.click(id)) {
|
|
||||||
kfont.bold^=1;
|
|
||||||
}
|
|
||||||
if (font_size.click(id)) {
|
if (font_size.click(id)) {
|
||||||
kfont.size.pt = font_size.value;
|
kfont.size.pt = font_size.value;
|
||||||
kfont.changeSIZE();
|
kfont.changeSIZE();
|
||||||
@@ -69,12 +67,12 @@ void settings_dialog()
|
|||||||
case evKey:
|
case evKey:
|
||||||
GetKeys();
|
GetKeys();
|
||||||
if (key_scancode==SCAN_CODE_ESC) ExitSettings();
|
if (key_scancode==SCAN_CODE_ESC) ExitSettings();
|
||||||
edit_box_key_c stdcall (#path_start_ed,key_editbox);
|
edit_box_key_c stdcall (#path_start_ed,key_ascii << 8);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
DefineAndDrawWindow(Form.cwidth-300/2+Form.left, Form.cheight-292/2+Form.top, 400,
|
DefineAndDrawWindow(Form.cwidth-300/2+Form.left, Form.cheight-292/2+Form.top, 400,
|
||||||
345+skin_h,0x34,sc.work,TITLE_SETT,0);
|
-efm*42+345+skin_h,0x34,sc.work,TITLE_SETT,0);
|
||||||
GetProcessInfo(#Settings, SelfInfo);
|
GetProcessInfo(#Settings, SelfInfo);
|
||||||
DrawSettingsCheckBoxes();
|
DrawSettingsCheckBoxes();
|
||||||
}
|
}
|
||||||
@@ -98,10 +96,10 @@ void DrawSettingsCheckBoxes()
|
|||||||
y.n = 0;
|
y.n = 0;
|
||||||
if (!efm) {
|
if (!efm) {
|
||||||
show_dev_name.draw(XXX, y.inc(14));
|
show_dev_name.draw(XXX, y.inc(14));
|
||||||
|
show_status_bar.draw(XXX, y.inc(25));
|
||||||
}
|
}
|
||||||
big_icons.draw(XXX, y.inc(25));
|
big_icons.draw(XXX, y.inc(25));
|
||||||
colored_lines.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));
|
font_size.draw(XXX, y.inc(31));
|
||||||
line_height.draw(XXX, y.inc(31));
|
line_height.draw(XXX, y.inc(31));
|
||||||
|
|
||||||
@@ -123,7 +121,7 @@ void LoadIniSettings()
|
|||||||
|
|
||||||
files.SetFont(6, 9, 10000000b);
|
files.SetFont(6, 9, 10000000b);
|
||||||
show_dev_name.checked = ini.GetInt("ShowDeviceName", true);
|
show_dev_name.checked = ini.GetInt("ShowDeviceName", true);
|
||||||
kfont.bold = bold_font.checked = ini.GetInt("BoldFont", false);
|
show_status_bar.checked = ini.GetInt("ShowStatusBar", true);
|
||||||
big_icons.checked = ini.GetInt("BigIcons", false); BigIconsSwitch();
|
big_icons.checked = ini.GetInt("BigIcons", false); BigIconsSwitch();
|
||||||
colored_lines.checked = ini.GetInt("ColoredLines", true);
|
colored_lines.checked = ini.GetInt("ColoredLines", true);
|
||||||
kfont.size.pt = ini.GetInt("FontSize", 13);
|
kfont.size.pt = ini.GetInt("FontSize", 13);
|
||||||
@@ -134,6 +132,7 @@ void LoadIniSettings()
|
|||||||
Form.height = ini.GetInt("WinH", efm*100+517);
|
Form.height = ini.GetInt("WinH", efm*100+517);
|
||||||
ini.GetString("DefaultPath", #path_start, 4096, "/sys");
|
ini.GetString("DefaultPath", #path_start, 4096, "/sys");
|
||||||
path_start_ed.size = path_start_ed.pos = strlen(#path_start);
|
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");
|
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;
|
if(streq(#temp,"off")) kfont.smooth = false; else kfont.smooth = true;
|
||||||
}
|
}
|
||||||
@@ -142,7 +141,7 @@ void LoadIniSettings()
|
|||||||
void SaveIniSettings()
|
void SaveIniSettings()
|
||||||
{
|
{
|
||||||
ini.SetInt("ShowDeviceName", show_dev_name.checked);
|
ini.SetInt("ShowDeviceName", show_dev_name.checked);
|
||||||
ini.SetInt("BoldFont", bold_font.checked);
|
ini.SetInt("ShowStatusBar", show_status_bar.checked);
|
||||||
ini.SetInt("BigIcons", big_icons.checked);
|
ini.SetInt("BigIcons", big_icons.checked);
|
||||||
ini.SetInt("ColoredLines", colored_lines.checked);
|
ini.SetInt("ColoredLines", colored_lines.checked);
|
||||||
ini.SetInt("FontSize", kfont.size.pt);
|
ini.SetInt("FontSize", kfont.size.pt);
|
||||||
|
6
programs/cmm/kf_font_viewer/Tupfile.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
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")
|
4
programs/cmm/kf_font_viewer/compile_en.bat
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
@del kf_view
|
||||||
|
@C-- font_viewer.c
|
||||||
|
@rename font_viewer.com kf_view
|
||||||
|
if not exist kf_view ( @pause )
|
BIN
programs/cmm/kf_font_viewer/font/Tahoma.kf
Normal file
BIN
programs/cmm/kf_font_viewer/font/Verdana.kf
Normal file
@@ -1,4 +1,8 @@
|
|||||||
|
#define MEMSIZE 1024*30
|
||||||
|
#define ENTRY_POINT #main
|
||||||
|
|
||||||
|
#include "../lib/kfont.h"
|
||||||
|
#include "../lib/gui.h"
|
||||||
|
|
||||||
#define BARH 28
|
#define BARH 28
|
||||||
#define WINW 528
|
#define WINW 528
|
||||||
@@ -8,8 +12,11 @@ char active_tab = 0;
|
|||||||
char colored = true;
|
char colored = true;
|
||||||
dword checkbox_flag;
|
dword checkbox_flag;
|
||||||
|
|
||||||
void main_kfont()
|
void main()
|
||||||
{
|
{
|
||||||
|
proc_info Form;
|
||||||
|
|
||||||
|
mem_init();
|
||||||
checkbox_flag = memopen("CHECKBOX", NULL, SHM_READ);
|
checkbox_flag = memopen("CHECKBOX", NULL, SHM_READ);
|
||||||
|
|
||||||
if (!param) strcpy(#param, DEFAULT_FONT);
|
if (!param) strcpy(#param, DEFAULT_FONT);
|
||||||
@@ -41,7 +48,7 @@ void main_kfont()
|
|||||||
|
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
sc.get();
|
sc.get();
|
||||||
DefineAndDrawWindow(215,100,WINW+9,WINH+skin_h+4,0x74,0xFFFFFF,#title,0);
|
DefineAndDrawWindow(215,100,WINW+9,WINH+GetSkinHeight()+4,0x74,0xFFFFFF,#title,0);
|
||||||
GetProcessInfo(#Form, SelfInfo);
|
GetProcessInfo(#Form, SelfInfo);
|
||||||
if (Form.status_window&ROLLED_UP) break;
|
if (Form.status_window&ROLLED_UP) break;
|
||||||
_DRAW_WINDOW_CONTENT:
|
_DRAW_WINDOW_CONTENT:
|
@@ -26,9 +26,15 @@ struct collection_int
|
|||||||
|
|
||||||
:void collection_int::add(dword _in) {
|
:void collection_int::add(dword _in) {
|
||||||
unsigned i;
|
unsigned i;
|
||||||
if (!buf) || (count + 1 * DWSIZE4 >= buf_size) {
|
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) {
|
||||||
buf_size += 4096 * 5;
|
buf_size += 4096 * 5;
|
||||||
buf = realloc(buf, buf_size);
|
buf = realloc(buf, buf_size);
|
||||||
|
//if (!buf) notify("'realloc error' -E");
|
||||||
}
|
}
|
||||||
i = count * DWSIZE4 + buf;
|
i = count * DWSIZE4 + buf;
|
||||||
ESDWORD[i] = _in;
|
ESDWORD[i] = _in;
|
||||||
@@ -71,8 +77,8 @@ struct collection_int
|
|||||||
|
|
||||||
:void collection_int::drop() {
|
:void collection_int::drop() {
|
||||||
count = 0;
|
count = 0;
|
||||||
//if (buf) buf = free(buf);
|
if (buf) buf = free(buf);
|
||||||
//buf_size = 0;
|
buf_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*========================================================
|
/*========================================================
|
||||||
@@ -91,30 +97,31 @@ struct collection
|
|||||||
dword get(); //get_name_by_pos
|
dword get(); //get_name_by_pos
|
||||||
dword get_pos_by_name();
|
dword get_pos_by_name();
|
||||||
void drop();
|
void drop();
|
||||||
|
void increase_data_size();
|
||||||
dword get_last();
|
dword get_last();
|
||||||
bool pop();
|
bool pop();
|
||||||
};
|
};
|
||||||
|
|
||||||
:dword collection::add(dword in) {
|
:void collection::increase_data_size() {
|
||||||
dword len = strlen(in);
|
|
||||||
unsigned cur_buf_size;
|
|
||||||
|
|
||||||
if (!count) {
|
|
||||||
cur_buf_size = 0;
|
|
||||||
} else {
|
|
||||||
cur_buf_size = offset.get(count);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (realloc_size<4096) realloc_size = 4096;
|
if (realloc_size<4096) realloc_size = 4096;
|
||||||
while (cur_buf_size + len + 4 > data_size) {
|
if (!data_size) {
|
||||||
data_size += realloc_size;
|
data_size = realloc_size;
|
||||||
|
data_start = malloc(data_size);
|
||||||
|
} else {
|
||||||
|
data_size = data_size + realloc_size;
|
||||||
data_start = realloc(data_start, data_size);
|
data_start = realloc(data_start, data_size);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
strncpy(data_start+cur_buf_size, in, len);
|
|
||||||
|
:dword collection::add(dword in) {
|
||||||
|
dword len = strlen(in);
|
||||||
|
while (offset.get(count) + len + 4 > data_size) {
|
||||||
|
increase_data_size();
|
||||||
|
}
|
||||||
|
strncpy(data_start+offset.get(count), in, len);
|
||||||
count++;
|
count++;
|
||||||
offset.set(count, cur_buf_size + len + 1);
|
offset.set(count, offset.get(count-1) + len + 1);
|
||||||
return data_start + cur_buf_size;
|
return data_start+offset.get(count-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
:dword collection::get(dword pos) {
|
:dword collection::get(dword pos) {
|
||||||
|
@@ -17,25 +17,17 @@ struct CANVAS {
|
|||||||
void Show();
|
void Show();
|
||||||
void Fill();
|
void Fill();
|
||||||
void DrawBar();
|
void DrawBar();
|
||||||
void DrawImage();
|
|
||||||
void WriteText();
|
void WriteText();
|
||||||
void PutPixel();
|
void PutPixel();
|
||||||
void AlignCenter();
|
void AlignCenter();
|
||||||
void AlignRight();
|
void AlignRight();
|
||||||
void IncreaseBufSize();
|
void IncreaseBufSize();
|
||||||
bool BufIsInvalid();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
char draw_buf_not_enaught_ram[] =
|
char draw_buf_not_enaught_ram[] =
|
||||||
"'CANVAS requested %i MB more memory than the system has.
|
"'CANVAS requested %i MB more memory than the system has.
|
||||||
Application could be unstable.' -E";
|
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)
|
bool CANVAS::Init(dword i_bufx, i_bufy, i_bufw, i_bufh)
|
||||||
{
|
{
|
||||||
bufx = i_bufx;
|
bufx = i_bufx;
|
||||||
@@ -53,7 +45,6 @@ bool CANVAS::Init(dword i_bufx, i_bufy, i_bufw, i_bufh)
|
|||||||
void CANVAS::Fill(dword start_pointer, i_fill_color)
|
void CANVAS::Fill(dword start_pointer, i_fill_color)
|
||||||
{
|
{
|
||||||
dword max_i = bufw * bufh * 4 - start_pointer/4;
|
dword max_i = bufw * bufh * 4 - start_pointer/4;
|
||||||
if (BufIsInvalid()) return;
|
|
||||||
fill_color = i_fill_color | 0xFF000000; //set background color non-transparent
|
fill_color = i_fill_color | 0xFF000000; //set background color non-transparent
|
||||||
@MEMSETD(buf_data+start_pointer+8, max_i, fill_color);
|
@MEMSETD(buf_data+start_pointer+8, max_i, fill_color);
|
||||||
}
|
}
|
||||||
@@ -61,7 +52,6 @@ void CANVAS::Fill(dword start_pointer, i_fill_color)
|
|||||||
void CANVAS::DrawBar(dword x, y, w, h, color)
|
void CANVAS::DrawBar(dword x, y, w, h, color)
|
||||||
{
|
{
|
||||||
dword i, j;
|
dword i, j;
|
||||||
if (BufIsInvalid()) return;
|
|
||||||
if (y + h >= bufh) IncreaseBufSize();
|
if (y + h >= bufh) IncreaseBufSize();
|
||||||
for (j=0; j<h; j++) {
|
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) {
|
for (i = y+j*bufw+x<<2+8+buf_data; i<y+j*bufw+x+w<<2+8+buf_data; i+=4) {
|
||||||
@@ -70,30 +60,12 @@ 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)
|
void CANVAS::WriteText(dword x, y, byte fontType, dword color, str_offset, strlen)
|
||||||
{
|
{
|
||||||
#define BUGFIX_32000 32000
|
#define BUGFIX_32000 32000
|
||||||
dword ydiv=0;
|
dword ydiv=0;
|
||||||
dword reserve_data_1, reserve_data_2;
|
dword reserve_data_1, reserve_data_2;
|
||||||
dword new_buf_offset;
|
dword new_buf_offset;
|
||||||
if (BufIsInvalid()) return;
|
|
||||||
if (y + 30 >= bufh) IncreaseBufSize();
|
if (y + 30 >= bufh) IncreaseBufSize();
|
||||||
if (y < BUGFIX_32000) {
|
if (y < BUGFIX_32000) {
|
||||||
ESI = strlen;
|
ESI = strlen;
|
||||||
@@ -120,7 +92,6 @@ void CANVAS::WriteText(dword x, y, byte fontType, dword color, str_offset, strle
|
|||||||
void CANVAS::PutPixel(dword x, y, color)
|
void CANVAS::PutPixel(dword x, y, color)
|
||||||
{
|
{
|
||||||
dword pos = y*bufw+x*4+8+buf_data;
|
dword pos = y*bufw+x*4+8+buf_data;
|
||||||
if (BufIsInvalid()) return;
|
|
||||||
ESDWORD[pos] = color;
|
ESDWORD[pos] = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,7 +99,6 @@ void CANVAS::AlignRight(dword x,y,w,h, content_width)
|
|||||||
{
|
{
|
||||||
dword i, j, l;
|
dword i, j, l;
|
||||||
dword content_left = w - content_width / 2;
|
dword content_left = w - content_width / 2;
|
||||||
if (BufIsInvalid()) return;
|
|
||||||
for (j=0; j<h; j++)
|
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)
|
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)
|
||||||
@@ -142,7 +112,6 @@ void CANVAS::AlignCenter(dword x,y,w,h, content_width)
|
|||||||
{
|
{
|
||||||
dword i, j, l;
|
dword i, j, l;
|
||||||
dword content_left = w - content_width / 2;
|
dword content_left = w - content_width / 2;
|
||||||
if (BufIsInvalid()) return;
|
|
||||||
for (j=0; j<h; j++)
|
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)
|
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)
|
||||||
@@ -154,7 +123,6 @@ void CANVAS::AlignCenter(dword x,y,w,h, content_width)
|
|||||||
|
|
||||||
void CANVAS::Show(dword _y_offset, _h)
|
void CANVAS::Show(dword _y_offset, _h)
|
||||||
{
|
{
|
||||||
if (BufIsInvalid()) return;
|
|
||||||
PutPaletteImage(_y_offset * bufw * 4 + buf_data+8, bufw, _h, bufx, bufy, 32, 0);
|
PutPaletteImage(_y_offset * bufw * 4 + buf_data+8, bufw, _h, bufx, bufy, 32, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,8 +133,6 @@ void CANVAS::IncreaseBufSize()
|
|||||||
dword free_ram_size;
|
dword free_ram_size;
|
||||||
char error_str[256];
|
char error_str[256];
|
||||||
|
|
||||||
if (!bufw) return;
|
|
||||||
|
|
||||||
if (!buf_data) {
|
if (!buf_data) {
|
||||||
alloc_size = bufh * bufw * 4 + 8;
|
alloc_size = bufh * bufw * 4 + 8;
|
||||||
buf_data = malloc(alloc_size);
|
buf_data = malloc(alloc_size);
|
||||||
|
@@ -66,11 +66,10 @@ int kfont_char_width[255];
|
|||||||
:bool KFONT::init(dword font_path)
|
:bool KFONT::init(dword font_path)
|
||||||
{
|
{
|
||||||
dword fsize_notused;
|
dword fsize_notused;
|
||||||
if(font) font = free(font);
|
if(font)free(font);
|
||||||
read_file(font_path, #font_begin, #fsize_notused);
|
read_file(font_path, #font_begin, #fsize_notused);
|
||||||
if(!EAX) {
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
changeSIZE();
|
changeSIZE();
|
||||||
@@ -100,10 +99,6 @@ int kfont_char_width[255];
|
|||||||
|
|
||||||
:dword KFONT::getsize(byte font_size, dword text1)
|
:dword KFONT::getsize(byte font_size, dword text1)
|
||||||
{
|
{
|
||||||
if (!font) {
|
|
||||||
size.width = strlen(text1) * 8;
|
|
||||||
return size.width;
|
|
||||||
}
|
|
||||||
size.height = size.width = 0;
|
size.height = size.width = 0;
|
||||||
size.offset_x = size.offset_y = -1;
|
size.offset_x = size.offset_y = -1;
|
||||||
if (size.pt != font_size) {
|
if (size.pt != font_size) {
|
||||||
@@ -280,11 +275,6 @@ inline fastcall dword b32(EAX) { return DSDWORD[EAX]; }
|
|||||||
{
|
{
|
||||||
if(!text1)return 0;
|
if(!text1)return 0;
|
||||||
getsize(font_size, text1);
|
getsize(font_size, text1);
|
||||||
if (!font) {
|
|
||||||
EDI = _background;
|
|
||||||
WriteText(x, y, 0xD0, _color, text1);
|
|
||||||
return size.width;
|
|
||||||
}
|
|
||||||
raw_size = NULL;
|
raw_size = NULL;
|
||||||
WriteIntoBuffer(0, -size.offset_y, size.width-size.offset_x,
|
WriteIntoBuffer(0, -size.offset_y, size.width-size.offset_x,
|
||||||
size.height-size.offset_y, _background, _color, font_size, text1);
|
size.height-size.offset_y, _background, _color, font_size, text1);
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#pragma option -CPA
|
#pragma option -CPA
|
||||||
#initallvar 0
|
#initallvar 0
|
||||||
|
|
||||||
|
#ifndef __COFF__
|
||||||
#jumptomain FALSE
|
#jumptomain FALSE
|
||||||
|
|
||||||
#startaddress 0
|
#startaddress 0
|
||||||
@@ -29,6 +30,17 @@ dword I_Param = #param;
|
|||||||
dword I_Path = #program_path;
|
dword I_Path = #program_path;
|
||||||
char param[4096];
|
char param[4096];
|
||||||
char program_path[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
|
#define bool int
|
||||||
|
|
||||||
@@ -391,7 +403,6 @@ inline fastcall int TestBit( EAX, CL)
|
|||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
#define MINIMIZED 0x02
|
|
||||||
#define ROLLED_UP 0x04
|
#define ROLLED_UP 0x04
|
||||||
:void DefineAndDrawWindow(dword _x, _y, _w, _h, _window_type, _bgcolor, _title, _flags)
|
:void DefineAndDrawWindow(dword _x, _y, _w, _h, _window_type, _bgcolor, _title, _flags)
|
||||||
{
|
{
|
||||||
|
@@ -116,10 +116,17 @@
|
|||||||
EAX = 37;
|
EAX = 37;
|
||||||
EBX = 2;
|
EBX = 2;
|
||||||
$int 64
|
$int 64
|
||||||
|
$mov ebx, eax
|
||||||
|
$mov ecx, eax
|
||||||
key = EAX;
|
key = EAX;
|
||||||
lkm = EAX&MOUSE_LEFT;
|
$and eax, 0x00000001
|
||||||
pkm = EAX&MOUSE_RIGHT;
|
$shr ebx, 1
|
||||||
mkm = EAX&MOUSE_MIDDLE;
|
$and ebx, 0x00000001
|
||||||
|
$shr ecx, 2
|
||||||
|
$and ecx, 0x00000001
|
||||||
|
lkm = EAX;
|
||||||
|
pkm = EBX;
|
||||||
|
mkm = ECX;
|
||||||
|
|
||||||
//when you release the MOUSE button
|
//when you release the MOUSE button
|
||||||
// Mouse Move Event
|
// Mouse Move Event
|
||||||
|
@@ -6,6 +6,37 @@
|
|||||||
#include "../lib/kolibri.h"
|
#include "../lib/kolibri.h"
|
||||||
#endif
|
#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
|
#ifndef INCLUDE_DLL_H
|
||||||
#include "../lib/dll.h"
|
#include "../lib/dll.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -211,3 +242,5 @@ struct frame
|
|||||||
frame_draw stdcall (#frame123);
|
frame_draw stdcall (#frame123);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@@ -44,14 +44,15 @@ signed SelectList_ProcessMouse()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mouse.up) && (select_list.ProcessMouse(mouse.x, mouse.y)) {
|
if (mouse.up) && (mouse.click)
|
||||||
SelectList_LineChanged();
|
if (select_list.ProcessMouse(mouse.x, mouse.y)) {
|
||||||
return true;
|
SelectList_LineChanged();
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
:void SelectList_DrawBorder() {
|
void SelectList_DrawBorder() {
|
||||||
DrawRectangle3D(select_list.x-2, select_list.y-2,
|
DrawRectangle3D(select_list.x-2, select_list.y-2,
|
||||||
select_list.w+3+scroll1.size_x, select_list.h+3,
|
select_list.w+3+scroll1.size_x, select_list.h+3,
|
||||||
sc.dark, sc.light);
|
sc.dark, sc.light);
|
||||||
@@ -60,8 +61,8 @@ signed SelectList_ProcessMouse()
|
|||||||
|
|
||||||
void SelectList_DrawScroller()
|
void SelectList_DrawScroller()
|
||||||
{
|
{
|
||||||
scroll1.bckg_col = sc.dark; // MixColors(sc.work, 0xBBBbbb, 80);
|
scroll1.bckg_col = MixColors(sc.work, 0xBBBbbb, 80);
|
||||||
scroll1.frnt_col = sc.light; // MixColors(sc.work,0xFFFfff,120);
|
scroll1.frnt_col = MixColors(sc.work,0xFFFfff,120);
|
||||||
scroll1.line_col = sc.line;
|
scroll1.line_col = sc.line;
|
||||||
|
|
||||||
scroll1.max_area = select_list.count;
|
scroll1.max_area = select_list.count;
|
||||||
|
@@ -273,7 +273,7 @@ void draw_list()
|
|||||||
}
|
}
|
||||||
|
|
||||||
init = false;
|
init = false;
|
||||||
if (selected) WriteText(5, selected-1*ITEM_H + menu1.y + menu1.text_y +3, 0x80, 0xEE0000, "\x10"); // ?
|
if (selected) WriteText(5, selected-1*ITEM_H + menu1.y + menu1.text_y, TEXT_FONT_TYPE, 0xEE0000, "\x10"); // ?
|
||||||
}
|
}
|
||||||
|
|
||||||
void click()
|
void click()
|
||||||
|
@@ -1,13 +0,0 @@
|
|||||||
#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();
|
|
||||||
}
|
|
@@ -10,13 +10,11 @@ SOFTWARE CENTER v2.87
|
|||||||
#include "..\lib\obj\libini.h"
|
#include "..\lib\obj\libini.h"
|
||||||
#include "..\lib\kfont.h"
|
#include "..\lib\kfont.h"
|
||||||
#include "..\lib\list_box.h"
|
#include "..\lib\list_box.h"
|
||||||
|
#include "..\lib\collection.h"
|
||||||
|
|
||||||
proc_info Form;
|
proc_info Form;
|
||||||
|
|
||||||
#include "font_viewer.h"
|
|
||||||
|
|
||||||
llist list;
|
llist list;
|
||||||
dword app_path_collection;
|
collection app_path_collection=0;
|
||||||
bool kolibrios_mounted;
|
bool kolibrios_mounted;
|
||||||
|
|
||||||
int window_width,
|
int window_width,
|
||||||
@@ -32,10 +30,16 @@ char window_title[128],
|
|||||||
|
|
||||||
bool small_screen = false;
|
bool small_screen = false;
|
||||||
|
|
||||||
block selection[128];
|
struct SW_COLORS
|
||||||
|
{
|
||||||
|
dword list_bg;
|
||||||
|
dword text;
|
||||||
|
dword graph;
|
||||||
|
dword dark;
|
||||||
|
dword light;
|
||||||
|
} swc;
|
||||||
|
|
||||||
#define MAX_ITEMS 75
|
block selection[128];
|
||||||
#define MAX_FPATH 1024
|
|
||||||
|
|
||||||
void load_ini_config(dword _ini_path)
|
void load_ini_config(dword _ini_path)
|
||||||
{
|
{
|
||||||
@@ -53,21 +57,17 @@ void main()
|
|||||||
{
|
{
|
||||||
dword id;
|
dword id;
|
||||||
kfont.init(DEFAULT_FONT);
|
kfont.init(DEFAULT_FONT);
|
||||||
|
load_dll(libini, #lib_init,1);
|
||||||
|
|
||||||
if (streq(#param + strlen(#param) - 3, ".kf")) {
|
kolibrios_mounted = dir_exists("/kolibrios");
|
||||||
main_kfont();
|
|
||||||
} else if (param) {
|
if (param) {
|
||||||
strcpy(#settings_ini_path, #param);
|
strcpy(#settings_ini_path, #param);
|
||||||
} else {
|
} else {
|
||||||
strcpy(#settings_ini_path, "/sys/settings/");
|
strcpy(#settings_ini_path, "/sys/settings/");
|
||||||
strcat(#settings_ini_path, I_Path + strrchr(I_Path, '/'));
|
strcat(#settings_ini_path, I_Path + strrchr(I_Path, '/'));
|
||||||
strcat(#settings_ini_path, ".ini");
|
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);
|
load_ini_config(#settings_ini_path);
|
||||||
list.cur_y = -1;
|
list.cur_y = -1;
|
||||||
@@ -99,8 +99,8 @@ void main()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
|
SetAppColors();
|
||||||
DefineAndDrawWindow(screen.w-window_width/2,screen.h-window_height/2,window_width,window_height,0x74,0,"",0);
|
DefineAndDrawWindow(screen.w-window_width/2,screen.h-window_height/2,window_width,window_height,0x74,0,"",0);
|
||||||
sc.get();
|
|
||||||
GetProcessInfo(#Form, SelfInfo);
|
GetProcessInfo(#Form, SelfInfo);
|
||||||
if (Form.status_window&ROLLED_UP) {
|
if (Form.status_window&ROLLED_UP) {
|
||||||
DrawTitle(#window_title);
|
DrawTitle(#window_title);
|
||||||
@@ -110,18 +110,41 @@ void main()
|
|||||||
DrawTitle(#window_title);
|
DrawTitle(#window_title);
|
||||||
list.y = 0;
|
list.y = 0;
|
||||||
} else {
|
} else {
|
||||||
DrawTitle(NULL);
|
DrawTitle(NULL);
|
||||||
DrawTopBar();
|
DrawTopBar();
|
||||||
}
|
}
|
||||||
DrawList();
|
DrawList();
|
||||||
DrawBar(0, row +1 * list.item_h + list_pos, Form.cwidth, -row - 1 * list.item_h - list_pos + Form.cheight, sc.light);
|
DrawBar(0, row +1 * list.item_h + list_pos, Form.cwidth, -row - 1 * list.item_h - list_pos + Form.cheight, swc.list_bg);
|
||||||
DrawSelection();
|
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() {
|
void DrawList() {
|
||||||
list.count = 0;
|
list.count = 0;
|
||||||
row = -1;
|
row = -1;
|
||||||
|
app_path_collection.drop();
|
||||||
list_pos = list.y;
|
list_pos = list.y;
|
||||||
list.column_max = window_width - 10 / list.item_w;
|
list.column_max = window_width - 10 / list.item_w;
|
||||||
ini_enum_sections stdcall (#settings_ini_path, #process_sections);
|
ini_enum_sections stdcall (#settings_ini_path, #process_sections);
|
||||||
@@ -145,7 +168,7 @@ byte draw_icons_from_section(dword key_value, key_name, sec_name, f_name)
|
|||||||
col=0;
|
col=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (col==0) DrawBar(0, row * list.item_h + list_pos, Form.cwidth, list.item_h, sc.light);
|
if (col==0) DrawBar(0, row * list.item_h + list_pos, Form.cwidth, list.item_h, swc.list_bg);
|
||||||
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);
|
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, ',');
|
icon_char_pos = strchr(key_value, ',');
|
||||||
@@ -154,21 +177,20 @@ byte draw_icons_from_section(dword key_value, key_name, sec_name, f_name)
|
|||||||
selection[list.count].x = icon_x-2;
|
selection[list.count].x = icon_x-2;
|
||||||
selection[list.count].y = icon_y-2;
|
selection[list.count].y = icon_y-2;
|
||||||
if (icon_char_pos) ESBYTE[icon_char_pos] = '\0'; //delete icon from string
|
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_x = col*list.item_w+5;
|
||||||
text_y = list.item_h - 40 / 2;
|
text_y = list.item_h - 40 / 2;
|
||||||
if (!strchr(key_name, ' ')) {//|| (kfont.getsize(key_name)+30<list.item_w) <== too slow
|
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, sc.light, sc.work_text, 12, key_name);
|
kfont.WriteIntoWindowCenter(text_x, row*list.item_h+46 + list_pos, list.item_w,0, swc.list_bg, swc.text, 12, key_name);
|
||||||
} else {
|
} else {
|
||||||
space_pos = strrchr(key_name, ' ');
|
space_pos = strrchr(key_name, ' ');
|
||||||
ESBYTE[key_name+space_pos-1] = '\0';
|
ESBYTE[key_name+space_pos-1] = '\0';
|
||||||
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 - 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, sc.light, sc.work_text, 12, key_name+space_pos);
|
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);
|
||||||
}
|
}
|
||||||
if (icon_char_pos) icon_id = atoi(icon_char_pos+1);
|
if (icon_char_pos) icon_id = atoi(icon_char_pos+1);
|
||||||
if (Form.cwidth) draw_icon_32(icon_x, icon_y, sc.light, icon_id);
|
if (Form.cwidth) draw_icon_32(icon_x, icon_y, swc.list_bg, icon_id);
|
||||||
list.count++;
|
list.count++;
|
||||||
col++;
|
col++;
|
||||||
return true;
|
return true;
|
||||||
@@ -190,9 +212,10 @@ byte process_sections(dword sec_name, f_name)
|
|||||||
old_row = row;
|
old_row = row;
|
||||||
|
|
||||||
if (!small_screen) {
|
if (!small_screen) {
|
||||||
DrawBar(0, row * list.item_h + list_pos, Form.cwidth , 29, sc.light);
|
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, sc.light, sc.work_text, 15, sec_name);
|
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, 2, sc.work);
|
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);
|
||||||
list_pos += 29;
|
list_pos += 29;
|
||||||
}
|
}
|
||||||
ini_enum_keys stdcall (f_name, sec_name, #draw_icons_from_section);
|
ini_enum_keys stdcall (f_name, sec_name, #draw_icons_from_section);
|
||||||
@@ -210,7 +233,7 @@ void DrawTopBar()
|
|||||||
void EventIconClick(dword appid)
|
void EventIconClick(dword appid)
|
||||||
{
|
{
|
||||||
char run_app_path[4096];
|
char run_app_path[4096];
|
||||||
dword app_path = MAX_FPATH * appid + app_path_collection;
|
dword app_path = app_path_collection.get(appid);
|
||||||
dword param_pos = strchr(app_path, '|');
|
dword param_pos = strchr(app_path, '|');
|
||||||
if (param_pos) {
|
if (param_pos) {
|
||||||
ESBYTE[param_pos] = NULL;
|
ESBYTE[param_pos] = NULL;
|
||||||
@@ -250,7 +273,7 @@ void DrawSelection()
|
|||||||
int i;
|
int i;
|
||||||
dword col;
|
dword col;
|
||||||
for (i=0; i<list.count; i++) {
|
for (i=0; i<list.count; i++) {
|
||||||
if (i==list.cur_y) col=0x0080FF; else col=sc.light;
|
if (i==list.cur_y) col=0x0080FF; else col=swc.list_bg;
|
||||||
DrawWideRectangle(selection[i].x, selection[i].y, 36, 36, 2, col);
|
DrawWideRectangle(selection[i].x, selection[i].y, 36, 36, 2, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
programs/cmm/search/Tupfile.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
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")
|
10
programs/cmm/search/build_en.bat
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
@del search
|
||||||
|
@c-- /D=LANG_ENG search.c
|
||||||
|
@rename search.com search
|
||||||
|
@del warning.txt
|
||||||
|
|
||||||
|
if exist search (
|
||||||
|
@exit
|
||||||
|
) else (
|
||||||
|
@pause
|
||||||
|
)
|
10
programs/cmm/search/build_ru.bat
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
@del search
|
||||||
|
@c-- /D=LANG_RUS search.c
|
||||||
|
@rename search.com search
|
||||||
|
@del warning.txt
|
||||||
|
|
||||||
|
if exist search (
|
||||||
|
@exit
|
||||||
|
) else (
|
||||||
|
@pause
|
||||||
|
)
|
@@ -1,3 +1,13 @@
|
|||||||
|
#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 //
|
// DATA //
|
||||||
@@ -24,11 +34,11 @@ enum {
|
|||||||
BTN_CHOOSE_PATH
|
BTN_CHOOSE_PATH
|
||||||
};
|
};
|
||||||
|
|
||||||
dword mouse_dd;
|
proc_info Form;
|
||||||
edit_box edit_name = {230,13, 30,0xffffff,0x94AECE,0xffffff,0xffffff,
|
#define TOOLBAR_H 100
|
||||||
0x10000000,sizeof(search_name)-2,#search_name,#mouse_dd, ed_focus,0,0};
|
|
||||||
edit_box edit_path = {310,260,30,0xffffff,0x94AECE,0xffffff,0xffffff,
|
edit_box edit_name = {230,13, 30,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,sizeof(search_name)-2,#search_name,0, ed_focus,0,0};
|
||||||
0x10000000,sizeof(search_path)-2,#search_path,#mouse_dd, 0b,0,0};
|
edit_box edit_path = {310,260,30,0xffffff,0x94AECE,0xffffff,0xffffff,0x10000000,sizeof(search_path)-2,#search_path,0, 0b,0,0};
|
||||||
|
|
||||||
opendialog open_folder_dialog =
|
opendialog open_folder_dialog =
|
||||||
{
|
{
|
||||||
@@ -39,7 +49,7 @@ opendialog open_folder_dialog =
|
|||||||
0, //dword opendir_path,
|
0, //dword opendir_path,
|
||||||
#search_path, //dword dir_default_path,
|
#search_path, //dword dir_default_path,
|
||||||
#open_dialog_path,
|
#open_dialog_path,
|
||||||
#draw_window_search,
|
#draw_window,
|
||||||
0,
|
0,
|
||||||
#search_path, //dword openfile_path,
|
#search_path, //dword openfile_path,
|
||||||
0, //dword filename_area,
|
0, //dword filename_area,
|
||||||
@@ -87,72 +97,47 @@ void RESULTS::drop()
|
|||||||
// //
|
// //
|
||||||
//===================================================//
|
//===================================================//
|
||||||
|
|
||||||
void SearchThread()
|
void main()
|
||||||
{
|
{
|
||||||
int prev_first, prev_cur_y;
|
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);
|
load_dll(Proc_lib, #OpenDialog_init,0);
|
||||||
OpenDialog_init stdcall (#open_folder_dialog);
|
OpenDialog_init stdcall (#open_folder_dialog);
|
||||||
|
|
||||||
if (!ESBYTE[path]) strcpy(path, "/sys");
|
edit_box_set_text stdcall (#edit_name, ".ini");
|
||||||
edit_box_set_text stdcall (#edit_path, path);
|
edit_box_set_text stdcall (#edit_path, "/kolibrios");
|
||||||
|
|
||||||
@SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER);
|
@SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER);
|
||||||
loop() switch(@WaitEvent())
|
loop() switch(@WaitEvent())
|
||||||
{
|
{
|
||||||
case evMouse:
|
case evMouse:
|
||||||
|
|
||||||
edit_box_mouse stdcall (#edit_name);
|
edit_box_mouse stdcall (#edit_name);
|
||||||
edit_box_mouse stdcall (#edit_path);
|
edit_box_mouse stdcall (#edit_path);
|
||||||
|
|
||||||
|
|
||||||
prev_cur_y = select_list.cur_y;
|
|
||||||
|
|
||||||
if (SelectList_ProcessMouse()) {
|
if (SelectList_ProcessMouse()) {
|
||||||
SelectList_Draw();
|
SelectList_Draw();
|
||||||
} else {
|
} else {
|
||||||
SelectList_DrawLine(select_list.cur_y);
|
SelectList_DrawLine(select_list.cur_y);
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (mouse.key&MOUSE_RIGHT) && (mouse.up) && (select_list.MouseOver()) EventOpenFile(false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evButton:
|
case evButton:
|
||||||
switch (@GetButtonID()) {
|
switch (@GetButtonID()) {
|
||||||
case 1: @ExitProcess(); break;
|
case 1: @ExitProcess(); break;
|
||||||
case BTN_SEARCH: EventSearch(); break;
|
case BTN_SEARCH: EventSearch(); break;
|
||||||
case BTN_CHOOSE_PATH: EventChooseSearchInPath();
|
case BTN_CHOOSE_PATH: EventChooseSearchInPath();
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
break;
|
|
||||||
case evKey:
|
case evKey:
|
||||||
GetKeys();
|
@GetKeys();
|
||||||
edit_box_key_c stdcall (#edit_name, key_editbox);
|
edit_box_key stdcall (#edit_name);
|
||||||
edit_box_key_c stdcall (#edit_path, key_editbox);
|
edit_box_key stdcall (#edit_path);
|
||||||
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 (edit_name.flags & ed_focus) || (edit_path.flags & ed_focus) {
|
||||||
if (SCAN_CODE_ENTER == key_scancode) EventSearch();
|
if (SCAN_CODE_ENTER == key_scancode) EventSearch();
|
||||||
} else {
|
} else {
|
||||||
if (SCAN_CODE_ENTER == key_scancode) EventRunFile();
|
if (SCAN_CODE_ENTER == key_scancode) EventOpenFile(true);
|
||||||
prev_first = select_list.first;
|
prev_first = select_list.first;
|
||||||
prev_cur_y = select_list.cur_y;
|
prev_cur_y = select_list.cur_y;
|
||||||
if (select_list.ProcessKey(key_scancode)) {
|
if (select_list.ProcessKey(key_scancode)) {
|
||||||
@@ -167,37 +152,33 @@ void SearchThread()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
sc.get();
|
draw_window();
|
||||||
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TOOLBAR_H 100
|
void draw_window()
|
||||||
#define PAD 10
|
|
||||||
#define LISTX PAD
|
|
||||||
#define LISTY TOOLBAR_H
|
|
||||||
|
|
||||||
void draw_window_search()
|
|
||||||
{
|
{
|
||||||
SelectList_Init(LISTX, LISTY, Form.cwidth-scroll1.size_x-LISTX-LISTX, Form.cheight-TOOLBAR_H-PAD);
|
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_Draw();
|
SelectList_Draw();
|
||||||
DrawWideRectangle(0, LISTY-PAD-1, Form.cwidth, Form.cheight-TOOLBAR_H+PAD+1, 9, sc.work);
|
DrawBar(0, TOOLBAR_H-1, Form.cwidth, 1, sc.line);
|
||||||
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);
|
DrawBar(0, 0, Form.cwidth, TOOLBAR_H-1, sc.work);
|
||||||
DrawEditBox(#edit_name);
|
DrawEditBox(#edit_name);
|
||||||
WriteText(edit_name.left-2, edit_name.top-20, 0x90, sc.work_text, T_SEARCH_NAME);
|
WriteText(edit_name.left-2, edit_name.top-20, 0x90, sc.work_text, T_SEARCH_NAME);
|
||||||
edit_path.width = Form.cwidth - 314;
|
edit_path.width = Form.cwidth - 314;
|
||||||
DrawStandartCaptButton(PAD, 63, BTN_SEARCH, T_BUTTON_SEARCH);
|
|
||||||
DrawFileBox(#edit_path, T_SEARCH_PATH, BTN_CHOOSE_PATH);
|
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)
|
void SelectList_DrawLine(dword i)
|
||||||
{
|
{
|
||||||
int yyy = i*select_list.item_h+select_list.y;
|
int yyy = i*select_list.item_h+select_list.y;
|
||||||
@@ -220,19 +201,16 @@ void SelectList_DrawLine(dword i)
|
|||||||
} else {
|
} else {
|
||||||
strcpy(#tname, results.name.get(select_list.first + i));
|
strcpy(#tname, results.name.get(select_list.first + i));
|
||||||
strlwr(#tname);
|
strlwr(#tname);
|
||||||
icons_ini.section = "icons16";
|
icon = ini.GetInt(#tname + strrchr(#tname, '.'), 2);
|
||||||
icon = icons_ini.GetInt(#tname + strrchr(#tname, '.'), 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ICONX 7
|
#define ICONX 7
|
||||||
DrawBar(LISTX, yyy, ICONX, select_list.item_h, 0xFFFfff);
|
DrawBar(select_list.x, yyy, ICONX-1, select_list.item_h, 0xFFFfff);
|
||||||
DrawBar(LISTX+ICONX, yyy, 18, 1, 0xFFFfff);
|
DrawBar(select_list.x+ICONX+18, yyy, select_list.w-ICONX-18, select_list.item_h, bg);
|
||||||
DrawBar(LISTX+ICONX, yyy + select_list.item_h-1, 18, 1, 0xFFFfff);
|
draw_icon_16(select_list.x+ICONX, yyy+1, icon);
|
||||||
DrawBar(LISTX+ICONX+18, yyy, select_list.w-ICONX-18, select_list.item_h, bg);
|
|
||||||
draw_icon_16(LISTX+ICONX, yyy+1, icon);
|
|
||||||
|
|
||||||
WriteText(LISTX + ICONX+18+4,yyy+select_list.text_y,0x90, col, results.name.get(select_list.first + i));
|
WriteText(select_list.x + 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));
|
WriteText(select_list.x + ICONX+18+206,yyy+select_list.text_y,0x90, col, results.path.get(select_list.first + i));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectList_LineChanged()
|
void SelectList_LineChanged()
|
||||||
@@ -240,12 +218,6 @@ void SelectList_LineChanged()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getfullpath(dword to, path, name) {
|
|
||||||
strcpy(to, path);
|
|
||||||
chrcat(to, '/');
|
|
||||||
strcat(to, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
//===================================================//
|
//===================================================//
|
||||||
// //
|
// //
|
||||||
// EVENTS //
|
// EVENTS //
|
||||||
@@ -260,21 +232,22 @@ void EventChooseSearchInPath()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventShowFileInFolder()
|
void getfullpath(dword to, path, name) {
|
||||||
{
|
strcpy(to, path);
|
||||||
char full_path[4096];
|
chrcat(to, '/');
|
||||||
int pos = select_list.cur_y;
|
strcat(to, name);
|
||||||
getfullpath(#full_path, results.path.get(pos), results.name.get(pos));
|
|
||||||
RunProgram(#program_path, #full_path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventRunFile()
|
void EventOpenFile(int run_file_not_show_in_folder)
|
||||||
{
|
{
|
||||||
char full_path[4096];
|
char full_path[4096];
|
||||||
int pos = select_list.cur_y;
|
int pos = select_list.cur_y;
|
||||||
getfullpath(#full_path, results.path.get(pos), results.name.get(pos));
|
getfullpath(#full_path, results.path.get(pos), results.name.get(pos));
|
||||||
if (dir_exists(#full_path)) chrcat(#full_path, '/');
|
if (run_file_not_show_in_folder) {
|
||||||
RunProgram("/sys/@open", #full_path);
|
RunProgram("/sys/@open", #full_path);
|
||||||
|
} else {
|
||||||
|
RunProgram("/sys/file managers/eolite", #full_path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EventSearch()
|
void EventSearch()
|
||||||
@@ -316,4 +289,6 @@ void find_loop(dword way)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stop:
|
||||||
|
|
||||||
|
|
@@ -23,8 +23,11 @@ MAX_TRIANGLES equ 12
|
|||||||
SCREEN_X equ 320
|
SCREEN_X equ 320
|
||||||
SCREEN_Y equ 200
|
SCREEN_Y equ 200
|
||||||
|
|
||||||
|
include 'lang.inc'
|
||||||
include '..\..\..\macros.inc'
|
include '..\..\..\macros.inc'
|
||||||
;purge mov
|
;purge mov
|
||||||
|
include 'ascl.inc'
|
||||||
|
include 'ascgl.inc'
|
||||||
|
|
||||||
START:
|
START:
|
||||||
init_sin_cos:
|
init_sin_cos:
|
||||||
@@ -62,47 +65,7 @@ still:
|
|||||||
; cmp eax,3 ; button in buffer ?
|
; cmp eax,3 ; button in buffer ?
|
||||||
jz button
|
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:
|
main_loop:
|
||||||
|
|
||||||
@@ -149,15 +112,15 @@ exit:
|
|||||||
draw_window:
|
draw_window:
|
||||||
mcall 12, 1 ;Start window redraw
|
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]
|
lea ecx, [100*65536+SCREEN_Y+4+eax]; [y start] *65536 + [y size] + [skin_height]
|
||||||
xor eax,eax ;Draw window
|
xor eax, eax ;Draw window
|
||||||
mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size
|
mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size
|
||||||
mov edx,0x54000000 ;0x03 use skinned window
|
mov edx,0x54000000 ;0x03 use skinned window
|
||||||
mov edi,title
|
mov edi,title
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
mcall 12, 2 ;End window redraw
|
mcall 12, 2 ;End window redraw
|
||||||
|
|
||||||
ret
|
ret
|
||||||
@@ -233,7 +196,7 @@ clear_screen_buffer:
|
|||||||
rep stosd
|
rep stosd
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;include triangle.asm
|
;include triangle.asm
|
||||||
; Mikolaj Felix 14/5/2001
|
; Mikolaj Felix 14/5/2001
|
||||||
; mfelix@polbox.com
|
; mfelix@polbox.com
|
||||||
|
@@ -3,4 +3,5 @@ HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("
|
|||||||
tup.include(HELPERDIR .. "/use_fasm.lua")
|
tup.include(HELPERDIR .. "/use_fasm.lua")
|
||||||
add_include(tup.getvariantdir())
|
add_include(tup.getvariantdir())
|
||||||
|
|
||||||
tup.rule({"3DCUBE2.ASM"}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3DCUBE2")
|
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")
|
||||||
|
624
programs/demos/3dcube2/trunk/ascgl.inc
Normal file
@@ -0,0 +1,624 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
}
|
499
programs/demos/3dcube2/trunk/ascl.inc
Normal file
@@ -0,0 +1,499 @@
|
|||||||
|
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
|
@@ -1,3 +0,0 @@
|
|||||||
@fasm 3dcube2.asm 3dcube2
|
|
||||||
@kpack 3dcube2
|
|
||||||
if not exist 3dcube2 ( @pause )
|
|