Create "AutoBuild" folder for Vortex86MX systems (eBox-3300MX / Gecko Edubook)

git-svn-id: svn://kolibrios.org@1944 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Yogev Ezra 2011-05-30 23:36:25 +00:00
parent fd20e2e156
commit 712a570237
62 changed files with 6530 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -0,0 +1,42 @@
[Associations]
rtf=/sys/htmlv
asm=TinyPad
inc=TinyPad
ini=TinyPad
txt=TinyPad
gif=/sys/media/kiv
bmp=/sys/media/kiv
png=/sys/media/kiv
tga=/sys/media/kiv
jpg=/sys/media/kiv
jpeg=/sys/media/kiv
ico=/sys/media/kiv
cur=/sys/media/kiv
pcx=/sys/media/kiv
xcf=/sys/media/kiv
3ds=/sys/3d/view3ds
lif=/sys/demos/life2
skn=/sys/desktop
htm=/sys/HTMLv
html=/sys/HTMLv
rtf=/sys/RtfRead
obj=/sys/develop/cObj
sna=/sys/e80
nes=/sys/games/fceu
xm=/sys/media/AC97SND
wav=/sys/media/AC97SND
mp3=/sys/media/AC97SND
mid=/sys/media/MIDAMP
m3u=/sys/media/listplay
lap=/sys/media/listplay
asf=/sys/media/listplay
mht=/sys/htmlv
[Config]
;åñëè ïîñòàâèòü 1 âìåñòî êíîïîê áóäåò ñòðîêà àäðåñà
ShowEditBoxPath=0
;öâåò âûäåëåíîãî ýëåìåíòà è âûäåëåíèå åäèòáîêñà
;ïî-óìîë÷àíèþ 94AECE, äëÿ òåñòà FEA4B7,8BCDFF,B8C9B8
BorderColor=94AECE

View File

@ -0,0 +1,141 @@
asm=4
inc=4
txt=3
rtf=3
ini=3
log=3
dic=3
doc=3
exc=3
wtx=3
inf=3
xml=3
odt=3
jpg=6
jpe=6
jpeg=6
jif=6
jfif=6
jp2=6
jpx=6
jpk=6
j2k=6
jpc=6
j2c=6
bmp=6
dib=6
rle=6
pbm=6
wbm=6
wbmp=6
xbm=6
xpm=6
gif=6
png=6
ico=6
cur=6
ani=6
tif=6
tiff=6
xif=6
tga=6
pcx=6
dcx=6
ppm=6
psd=6
psp=6
raw=6
raf=6
x3f=6
orf=6
nef=6
mrw=6
dcr=6
crw=6
cr2=6
ras=6
pix=6
pict=6
pct=6
pic=6
pgm=6
pef=6
pcd=6
iff=6
lbm=6
ilbm=6
fpx=6
djv=6
djvu=6
iw4=6
wav=7
mp3=7
xm=7
mid=7
midi=7
aif=7
aifc=7
aiff=7
au=7
snd=7
wma=7
wm=7
avi=11
mpg=11
mpe=11
mpeg=11
flv=11
3gp=11
mkv=11
wmv=11
mov=11
mp4=11
img=5
ima=5
imz=5
bwz=5
dsk=5
vfd=5
wil=5
wlz=5
exe=8
com=8
bat=8
7z=9
rar=9
zip=9
cab=9
arj=9
lha=9
lzh=9
tar=9
taz=9
tbz=9
tbz2=9
bz=9
bz2=9
ice=9
gz=9
tgz=9
uue=9
uu=9
xxe=9
z=9
dat=10
ttf=12
ttc=12
chr=12
mt=12
htm=13
html=13
mht=13
eml=13
lif=14
3ds=15
kex=16
skn=17
obj=18
dll=18
ocx=18
so=18
drv=18

View File

@ -0,0 +1,71 @@
[Associations]
asm=/sys/TinyPad; AsmMenu1,AsmMenu2
inc=/sys/TinyPad
ini=/sys/TinyPad
txt=/sys/TinyPad
jpg=/sys/media/kiv
jpeg=/sys/media/kiv
gif=/sys/media/kiv; ViewGraph,MenuAnimage
wav=/sys/media/AC97SND
mp3=/sys/media/AC97SND
xm=/sys/media/AC97SND
mid=/sys/media/MIDAMP
bmp=/sys/media/kiv; ViewGraph,MenuAnimage
png=/sys/media/kiv
ico=/sys/media/kiv
cur=/sys/media/kiv
pcx=/sys/media/kiv
xcf=/sys/media/kiv
rtf=/sys/RtfRead
3ds=/sys/3d/view3ds
lif=/sys/demos/life2
skn=/sys/desktop
m3u=/sys/media/listplay
lap=/sys/media/listplay
asf=/sys/media/listplay
cvs=/sys/graph
obj=/sys/develop/cObj
nes=/sys/fceu
sna=/sys/e80
htm=/sys/HTMLv
html=/sys/HTMLv
[Menu]
AsmMenu1=&Edit,/sys/TinyPad
AsmMenu2=&Compile,/sys/develop/fasm
ViewGraph=&View,/sys/media/kiv
MenuAnimage=&Edit,/sys/media/animage
[Panels]
; View modes for files on panels
; values correspond to digits for LCtrl+<1-4>
LeftViewMode=2
RightViewMode=2
; Sort modes for files on panels
; values are 2 * N + M, where
; M = 0 - normal sorting, M = 1 - reverse sorting
; N = 0-6 correspond to sort mode for Ctrl+F<3-9>
LeftSortMode=0
RightSortMode=0
[Editor]
; Symbols for end-of-line, which will be added by kfar editor
; when new line will be created:
; DOS - like in DOS/Win (0D 0A), Unix - like in Unix (0A),
; Mac - like in Mac (0D)
EOLStyle=Unix
[FolderShortcuts]
; You can define up to 10 links to folders Shortcut0...Shortcut9,
; the quick jump to such folders can be done with RCtrl+<digit>
Shortcut0=/rd/1
[Confirmations]
Delete=1
DeleteIncomplete=0
[Plugins]
; On left of the equal sign any sensical or nonsensical name can appear;
; on right - path to plugin.
; If path is not absolute, it is counted from the folder with kfar binary.
ArchiveReader=/sys/lib/archiver.obj

View File

@ -0,0 +1,191 @@
start
<>icons_associations
asm 0004
inc 0004
txt 0003
rtf 0003
ini 0003
log 0003
dic 0003
doc 0003
exc 0003
wtx 0003
inf 0003
jpg 0006
jpe 0006
jpeg 0006
jif 0006
jfif 0006
jp2 0006
jpx 0006
jpk 0006
j2k 0006
jpc 0006
j2c 0006
bmp 0006
dib 0006
rle 0006
pbm 0006
wbm 0006
wbmp 0006
xbm 0006
xpm 0006
gif 0006
png 0006
ico 0006
cur 0006
ani 0006
tif 0006
tiff 0006
xif 0006
tga 0006
pcx 0006
xcf 0006
dcx 0006
ppm 0006
psd 0006
psp 0006
raw 0006
raf 0006
x3f 0006
orf 0006
nef 0006
mrw 0006
dcr 0006
crw 0006
cr2 0006
ras 0006
pix 0006
pict 0006
pct 0006
pic 0006
pgm 0006
pef 0006
pcd 0006
iff 0006
lbm 0006
ilbm 0006
fpx 0006
djv 0006
djvu 0006
iw4 0006
wav 0007
mp3 0007
xm 0007
mid 0007
midi 0007
aif 0007
aifc 0007
aiff 0007
au 0007
snd 0007
wma 0007
wm 0007
avi 0011
mpg 0011
mov 0011
flv 0011
wmv 0011
vob 0011
mkv 0011
mp4 0011
mpeg 0011
3gp 0011
img 0005
ima 0005
imz 0005
bwz 0005
dsk 0005
vfd 0005
wil 0005
wlz 0005
exe 0008
com 0008
bat 0008
7z 0009
rar 0009
zip 0009
cab 0009
arj 0009
lha 0009
lzh 0009
tar 0009
taz 0009
tbz 0009
tbz2 0009
bz 0009
bz2 0009
ice 0009
gz 0009
tgz 0009
uue 0009
uu 0009
xxe 0009
z 0009
dat 0010
ttf 0012
ttc 0012
chr 0012
mt 0012
htm 0013
html 0013
lif 0014
3ds 0015
kex 0016
skn 0017
<>end
<>files_associations
asm /sys/tinypad
inc /sys/tinypad
txt /sys/tinypad
ini /sys/tinypad
log /sys/tinypad
dat /sys/tinypad
inf /sys/tinypad
bat /sys/tinypad
jpg /sys/media/kiv
jpeg /sys/media/kiv
jpe /sys/media/kiv
gif /sys/media/kiv
wav /sys/media/ac97snd
mp3 /sys/media/ac97snd
xm /sys/media/ac97snd
mid /sys/media/midamp
bmp /sys/media/kiv
png /sys/media/kiv
ico /sys/media/kiv
cur /sys/media/kiv
pcx /sys/media/kiv
xcf /sys/media/kiv
rtf /sys/rtfread
3ds /sys/3d/view3ds
lif /sys/demos/life2
skn /sys/desktop
avi /hd0/1/fplay.kex
mpg /hd0/1/fplay.kex
mov /hd0/1/fplay.kex
flv /hd0/1/fplay.kex
wmv /hd0/1/fplay.kex
vob /hd0/1/fplay.kex
mkv /hd0/1/fplay.kex
mp4 /hd0/1/fplay.kex
mpeg /hd0/1/fplay.kex
3gp /hd0/1/fplay.kex
m3u /sys/media/listplay
lap /sys/media/listplay
asf /sys/media/listplay
cvs /sys/graph
obj /sys/develop/cObj
nes /sys/fceu
sna /sys/e80
htm /sys/HTMLv
html /sys/HTMLv
kla /sys/games/klavisha
<>end
<>files_association1
bmp /sys/media/animage
<>end
end

View File

@ -0,0 +1,520 @@
# General rule for naming: variables with CAPITALIZED names hold settings,
# you can - and are expected - to modify it; variables with lowercase names
# are intermediate variables and macroses not to be modified unless you
# know what you're doing.
# Define directories for destination, source repository, sources of kernel, sources of programs.
BUILD_DIR:=build
REPOSITORY:=../..
KERNEL:=$(REPOSITORY)/kernel/trunk
PROGS:=$(REPOSITORY)/programs
# Docpak requires some documents; we place them
# into 'docs' subdir and communicate with FASM
# through environment var DOCDIR.
DOCDIR:=docs/
export DOCDIR
# Because most programs are written in FASM and have
# the common structure of one main .asm file possibly including
# several .inc files, we handle this case separately.
# Namely, we organize one big list of such programs
# (FASM_PROGRAMS, see below) containing name of local binary file,
# name of file inside kolibri.img and name of the source file.
# This list is maintained by hand, and the rest is done with some macroses...
# well, slightly complicated macroses - however, you do not need to
# understand them in order to maintain the list.
# To add a FASM program with one .asm file, just
# add the corresponding item to the list and enjoy
# the power of GNU make.
# The list of all FASM programs with one main FASM file.
# Every item consists of three parts, separated by ':'.
# First part is the real name of binary file in $(BUILD_DIR)
# as it should be produced by make.
# Second part is the name of a file inside kolibri.img,
# usually uppercased version of first part - to save space
# for FAT filesystem.
# Third part is the name of the source file.
# Spaces separate items, so spaces in names should be
# represented as '|'.
FASM_PROGRAMS:=\
@clip:@CLIP:$(PROGS)/system/clip/trunk/@clip.ASM \
@menu:@MENU:$(PROGS)/system/menu/trunk/menu.asm \
@notify:@NOTIFY:$(PROGS)/system/notify/trunk/@notify.asm \
@panel:@PANEL:$(PROGS)/system/panel/trunk/@PANEL.ASM \
@rb:@RB:$(PROGS)/system/rb/trunk/@RB.ASM \
@ss:@SS:$(PROGS)/system/ss/trunk/@ss.asm\
calc:CALC:$(PROGS)/other/calc/trunk/calc.asm \
calendar:CALENDAR:$(PROGS)/system/calendar/trunk/calendar.asm \
commouse:COMMOUSE:$(PROGS)/system/commouse/trunk/commouse.asm \
copyr:COPYR:$(PROGS)/fs/copyr/trunk/copyr.asm \
cpu:CPU:$(PROGS)/system/cpu/trunk/cpu.asm \
cpuid:CPUID:$(PROGS)/system/cpuid/trunk/CPUID.ASM \
desktop:DESKTOP:$(PROGS)/system/desktop/trunk/desktop.asm \
disptest:DISPTEST:$(PROGS)/system/disptest/trunk/disptest.ASM \
docpak:DOCPAK:$(PROGS)/system/docpack/trunk/docpack.asm \
downloader:downloader:$(PROGS)/network/downloader/trunk/downloader.asm \
end:END:$(PROGS)/system/end/light/end.asm \
gmon:GMON:$(PROGS)/system/gmon/gmon.asm \
hdd_info:HDD_INFO:$(PROGS)/system/hdd_info/trunk/hdd_info.asm \
icon:ICON:$(PROGS)/system/icon/trunk/icon.asm \
kbd:KBD:$(PROGS)/system/kbd/trunk/kbd.ASM \
kpack:KPACK:$(PROGS)/other/kpack/trunk/kpack.asm \
launcher:LAUNCHER:$(PROGS)/system/launcher/trunk/launcher.asm \
magnify:MAGNIFY:$(PROGS)/demos/magnify/trunk/magnify.asm \
mgb:MGB:$(PROGS)/system/mgb/trunk/mgb.asm \
mousemul:MOUSEMUL:$(PROGS)/system/mousemul/trunk/mousemul.asm \
mykey:MYKEY:$(PROGS)/system/MyKey/trunk/MyKey.asm \
pcidev:PCIDEV:$(PROGS)/system/pcidev/trunk/PCIDEV.ASM \
period:PERIOD:$(PROGS)/other/period/trunk/period.asm \
pic4:PIC4:$(PROGS)/media/pic4/trunk/pic4.asm \
rdsave:RDSAVE:$(PROGS)/system/rdsave/trunk/rdsave.asm \
rtfread:RTFREAD:$(PROGS)/other/rtfread/trunk/rtfread.asm \
run:RUN:$(PROGS)/system/run/trunk/run.asm \
scrshoot:SCRSHOOT:$(PROGS)/media/scrshoot/scrshoot.asm \
setup:SETUP:$(PROGS)/system/setup/trunk/setup.asm \
spanel:SPANEL:$(PROGS)/system/spanel/trunk/spanel.asm \
test:TEST:$(PROGS)/system/test/trunk/test.asm \
tinypad:TINYPAD:$(PROGS)/develop/tinypad/trunk/tinypad.asm \
vrr:VRR:$(PROGS)/system/vrr/trunk/vrr.asm \
vrr_m:VRR_M:$(PROGS)/system/vrr_m/trunk/vrr_m.asm \
zkey:ZKEY:$(PROGS)/system/zkey/trunk/ZKEY.ASM \
3d/3dcube2:3D/3DCUBE2:$(PROGS)/demos/3dcube2/trunk/3DCUBE2.ASM \
3d/3dspiral:3D/3DSPIRAL:$(PROGS)/demos/3dspiral/trunk/3dspiral.asm \
3d/3dtcub10:3D/3DTCUB10:$(PROGS)/demos/3dtcub10/trunk/3DTCUB10.ASM \
3d/crownscr:3D/CROWNSCR:$(PROGS)/demos/crownscr/trunk/crownscr.asm \
3d/flatwav:3D/FLATWAV:$(PROGS)/demos/flatwav/trunk/FLATWAV.ASM \
3d/free3d04:3D/FREE3D04:$(PROGS)/demos/free3d04/trunk/free3d04.asm \
3d/view3ds:3D/VIEW3DS:$(PROGS)/demos/3DS/VIEW3DS.ASM \
demos/bcdclk:DEMOS/BCDCLK:$(PROGS)/demos/bcdclk/trunk/bcdclk.asm \
demos/circle:DEMOS/CIRCLE:$(PROGS)/develop/examples/circle/trunk/circle.asm \
demos/colorref:DEMOS/COLORREF:$(PROGS)/demos/colorref/trunk/colorref.asm \
demos/cslide:DEMOS/CSLIDE:$(PROGS)/demos/cslide/trunk/cslide.asm \
demos/eyes:DEMOS/EYES:$(PROGS)/demos/eyes/trunk/eyes.asm \
demos/fire:DEMOS/FIRE:$(PROGS)/demos/fire/trunk/fire.asm \
demos/firework:DEMOS/FIREWORK:$(PROGS)/demos/firework/trunk/firework.asm \
demos/movback:DEMOS/MOVBACK:$(PROGS)/demos/movback/trunk/movback.asm \
demos/plasma:DEMOS/PLASMA:$(PROGS)/demos/plasma/trunk/plasma.asm \
demos/timer:DEMOS/TIMER:$(PROGS)/demos/timer/trunk/timer.asm \
demos/tinyfrac:DEMOS/TINYFRAC:$(PROGS)/demos/tinyfrac/trunk/tinyfrac.asm \
demos/trantest:DEMOS/TRANTEST:$(PROGS)/demos/trantest/trunk/trantest.asm \
demos/tube:DEMOS/TUBE:$(PROGS)/demos/tube/trunk/tube.asm \
demos/unvwater:DEMOS/UNVWATER:$(PROGS)/demos/unvwater/trunk/unvwater.asm \
demos/web:DEMOS/WEB:$(PROGS)/demos/web/trunk/web.asm \
develop/board:DEVELOP/BOARD:$(PROGS)/system/board/trunk/board.asm \
develop/cObj:DEVELOP/cObj:$(PROGS)/develop/cObj/trunk/cObj.asm \
develop/fasm:DEVELOP/FASM:$(PROGS)/develop/fasm/trunk/fasm.asm \
develop/h2d2b:DEVELOP/H2D2B:$(PROGS)/develop/h2d2b/trunk/h2d2b.asm \
develop/heed:DEVELOP/HEED:$(PROGS)/develop/heed/trunk/heed.asm \
develop/ipc:DEVELOP/IPC:$(PROGS)/network/ipc/trunk/ipc.asm \
develop/keyascii:DEVELOP/KEYASCII:$(PROGS)/develop/keyascii/trunk/keyascii.asm \
develop/mtdbg:DEVELOP/MTDBG:$(PROGS)/develop/mtdbg/mtdbg.asm \
develop/scancode:DEVELOP/SCANCODE:$(PROGS)/develop/scancode/trunk/scancode.asm \
develop/test_gets:DEVELOP/test_gets:$(PROGS)/develop/libraries/console/examples/test_gets.asm \
develop/testcon2:DEVELOP/TESTCON2:$(PROGS)/develop/libraries/console/examples/testcon2.asm \
develop/thread:DEVELOP/THREAD:$(PROGS)/develop/examples/thread/trunk/thread.asm \
drivers/com_mouse.obj:DRIVERS/COM_MOUSE.OBJ:$(KERNEL)/drivers/com_mouse.asm \
drivers/emu10k1x.obj:DRIVERS/EMU10K1X.OBJ:$(KERNEL)/drivers/emu10k1x.asm \
drivers/fm801.obj:DRIVERS/FM801.OBJ:$(KERNEL)/drivers/fm801.asm \
drivers/infinity.obj:DRIVERS/INFINITY.OBJ:$(KERNEL)/drivers/infinity.asm \
drivers/ps2mouse.obj:DRIVERS/PS2MOUSE.OBJ:$(REPOSITORY)/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm \
drivers/sb16.obj:DRIVERS/SB16.OBJ:$(KERNEL)/drivers/sb16/sb16.asm \
drivers/vmode.mdr:DRIVERS/VMODE.MDR:$(KERNEL)/drivers/vmode.asm \
drivers/vt8235.obj:DRIVERS/VT8235.OBJ:$(KERNEL)/drivers/vt823x.asm \
File|Managers/kfar:File|Managers/KFAR:$(PROGS)/fs/kfar/trunk/kfar.asm \
File|Managers/kfm:File|Managers/KFM:$(PROGS)/fs/kfm/trunk/kfm.asm \
File|Managers/OpenDial:File|Managers/OPENDIAL:$(PROGS)/develop/libraries/box_lib/asm/trunk/OpenDial.asm \
fonts/bgitest:FONTS/BGITEST:$(PROGS)/demos/bgitest/trunk/bgitest.asm \
games/15:GAMES/15:$(PROGS)/games/15/trunk/15.ASM \
games/arcanii:GAMES/ARCANII:$(PROGS)/games/arcanii/trunk/arcanii.asm \
games/bnc:GAMES/BNC:$(PROGS)/games/bnc/trunk/bnc.asm \
games/freecell:GAMES/FREECELL:$(PROGS)/games/freecell/freecell.ASM \
games/gomoku:GAMES/GOMOKU:$(PROGS)/games/gomoku/trunk/gomoku.asm \
games/invaders:GAMES/INVADERS:$(PROGS)/games/invaders/invaders.asm \
games/klavisha:GAMES/KLAVISHA:$(PROGS)/games/klavisha/trunk/klavisha.asm \
games/kox:GAMES/KOX:$(PROGS)/games/kox/trunk/kox.asm \
games/lights:GAMES/LIGHTS:$(PROGS)/games/lights/trunk/lights.asm \
games/lines:GAMES/LINES:$(PROGS)/games/lines/lines.asm \
games/mblocks:GAMES/MBLOCKS:$(PROGS)/games/mblocks/trunk/mblocks.asm \
games/msquare:GAMES/MSQUARE:$(PROGS)/games/MSquare/trunk/MSquare.asm \
games/phenix:GAMES/PHENIX:$(PROGS)/games/phenix/trunk/phenix.asm \
games/pipes:GAMES/PIPES:$(PROGS)/games/pipes/pipes.asm \
games/pong:GAMES/PONG:$(PROGS)/games/pong/trunk/pong.asm \
games/pong3:GAMES/PONG3:$(PROGS)/games/pong3/trunk/pong3.asm \
games/rsquare:GAMES/RSQUARE:$(PROGS)/games/rsquare/trunk/rsquare.asm \
games/soko:GAMES/SOKO:$(PROGS)/games/soko/trunk/SOKO.ASM \
games/snake:GAMES/SNAKE:$(PROGS)/games/snake/trunk/snake.asm \
games/sq_game:GAMES/SQ_GAME:$(PROGS)/games/sq_game/trunk/SQ_GAME.ASM \
games/sudoku:GAMES/SUDOKU:$(PROGS)/games/sudoku/trunk/sudoku.asm \
games/sw:GAMES/SW:$(PROGS)/games/sw/trunk/sw.asm \
games/tanks:GAMES/TANKS:$(PROGS)/games/tanks/trunk/tanks.asm \
games/tetris:GAMES/TETRIS:$(PROGS)/games/tetris/trunk/tetris.asm \
lib/archiver.obj:LIB/ARCHIVER.OBJ:$(PROGS)/fs/kfar/trunk/kfar_arc/kfar_arc.asm \
lib/box_lib.obj:LIB/BOX_LIB.OBJ:$(PROGS)/develop/libraries/box_lib/trunk/box_lib.asm \
lib/console.obj:LIB/CONSOLE.OBJ:$(PROGS)/develop/libraries/console/console.asm \
lib/libgfx.obj:LIB/LIBGFX.OBJ:$(PROGS)/develop/libraries/libs-dev/libgfx/libgfx.asm \
lib/libimg.obj:LIB/LIBIMG.OBJ:$(PROGS)/develop/libraries/libs-dev/libimg/libimg.asm \
lib/libini.obj:LIB/LIBINI.OBJ:$(PROGS)/develop/libraries/libs-dev/libini/libini.asm \
lib/libio.obj:LIB/LIBIO.OBJ:$(PROGS)/develop/libraries/libs-dev/libio/libio.asm \
lib/network.obj:LIB/NETWORK.OBJ:$(PROGS)/develop/libraries/network/network.asm \
lib/proc_lib.obj:LIB/PROC_LIB.OBJ:$(PROGS)/develop/libraries/proc_lib/trunk/proc_lib.asm \
media/animage:MEDIA/ANIMAGE:$(PROGS)/media/animage/trunk/animage.asm \
media/cdp:MEDIA/CDP:$(PROGS)/media/cdp/trunk/cdp.asm \
media/kiv:MEDIA/KIV:$(PROGS)/media/kiv/trunk/kiv.asm \
media/listplay:MEDIA/LISTPLAY:$(PROGS)/media/listplay/trunk/listplay.asm \
media/midamp:MEDIA/MIDAMP:$(PROGS)/media/midamp/trunk/midamp.asm \
media/startmus:MEDIA/STARTMUS:$(PROGS)/media/startmus/trunk/STARTMUS.ASM \
network/airc:NETWORK/AIRC:$(PROGS)/network/airc/trunk/airc.asm \
network/arpstat:NETWORK/ARPSTAT:$(PROGS)/network/arpstat/trunk/arpstat.asm \
network/chess:NETWORK/CHESS:$(PROGS)/network/chess/trunk/chess.asm \
network/ethstat:NETWORK/ETHSTAT:$(PROGS)/network/ethstat/trunk/ethstat.asm \
network/ftps:NETWORK/FTPS:$(PROGS)/network/ftps/trunk/FTPS.ASM \
network/httpc:NETWORK/HTTPC:$(PROGS)/network/httpc/trunk/httpc.asm \
network/https:NETWORK/HTTPS:$(PROGS)/network/https/trunk/https.asm \
network/nntpc:NETWORK/NNTPC:$(PROGS)/network/nntpc/trunk/nntpc.asm \
network/nslookup:NETWORK/NSLOOKUP:$(PROGS)/develop/libraries/network/examples/nslookup.asm \
network/popc:NETWORK/POPC:$(PROGS)/network/popc/trunk/popc.asm \
network/smtps:NETWORK/SMTPS:$(PROGS)/network/smtps/trunk/smtps.asm \
network/stackcfg:NETWORK/STACKCFG:$(PROGS)/network/stackcfg/trunk/stackcfg.asm \
network/telnet:NETWORK/TELNET:$(PROGS)/network/telnet/trunk/telnet.asm \
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/trunk/tftpc.asm \
network/VNCclient:NETWORK/VNCclient:$(PROGS)/network/VNCclient/VNCclient.asm \
network/ym:NETWORK/YM:$(PROGS)/network/ym/trunk/ym.asm \
network/zeroconf:NETWORK/ZEROCONF:$(PROGS)/network/zeroconf/trunk/zeroconf.asm \
# end of list
# The list of all NASM programs with one main NASM file.
# Format of an item is exactly the same as in the previous list.
NASM_PROGRAMS:=\
demos/aclock:DEMOS/ACLOCK:$(PROGS)/demos/aclock/trunk/aclock.asm \
games/c4:GAMES/C4:$(PROGS)/games/c4/trunk/c4.asm \
# end of list
# The list of files which should be copied from somewhere.
# Format of an item is exactly the same as in the previous list.
COPY_FILES:=\
macros.inc:MACROS.INC:$(PROGS)/macros.inc \
config.inc:CONFIG.INC:$(PROGS)/config.inc \
struct.inc:STRUCT.INC:$(PROGS)/struct.inc \
File|Managers/z_icons.png:File|Managers/Z_ICONS.PNG:$(PROGS)/develop/libraries/box_lib/asm/trunk/z_icons.png \
File|Managers/kfm_keys.txt:File|Managers/KFM_KEYS.TXT:$(PROGS)/fs/kfm/trunk/docs/english/kfm_keys.txt \
File|Managers/buttons.bmp:File|Managers/BUTTONS.BMP:$(PROGS)/fs/kfm/trunk/buttons.bmp \
File|Managers/icons.bmp:File|Managers/ICONS.BMP:$(PROGS)/fs/kfm/trunk/icons.bmp \
fonts/euro.chr:FONTS/EURO.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/EURO.CHR \
fonts/goth.chr:FONTS/GOTH.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/GOTH.CHR \
fonts/lcom.chr:FONTS/LCOM.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LCOM.CHR \
fonts/litt.chr:FONTS/LITT.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LITT.CHR \
fonts/sans.chr:FONTS/SANS.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SANS.CHR \
fonts/scri.chr:FONTS/SCRI.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SCRI.CHR \
fonts/simp.chr:FONTS/SIMP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SIMP.CHR \
fonts/smal.chr:FONTS/SMAL.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SMAL.CHR \
fonts/trip.chr:FONTS/TRIP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TRIP.CHR \
fonts/tscr.chr:FONTS/TSCR.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TSCR.CHR \
games/snake.ini:GAMES/SNAKE.INI:$(PROGS)/games/snake/trunk/snake.ini \
games/skin.raw:GAMES/SKIN.RAW:$(PROGS)/games/soko/trunk/SKIN.RAW \
games/soko-4.lev:GAMES/SOKO-4.LEV:$(PROGS)/games/soko/trunk/SOKO-4.LEV \
games/soko-5.lev:GAMES/SOKO-5.LEV:$(PROGS)/games/soko/trunk/SOKO-5.LEV \
games/soko-6.lev:GAMES/SOKO-6.LEV:$(PROGS)/games/soko/trunk/SOKO-6.LEV \
games/soko-7.lev:GAMES/SOKO-7.LEV:$(PROGS)/games/soko/trunk/SOKO-7.LEV \
games/soko-8.lev:GAMES/SOKO-8.LEV:$(PROGS)/games/soko/trunk/SOKO-8.LEV \
games/soko-9.lev:GAMES/SOKO-9.LEV:$(PROGS)/games/soko/trunk/SOKO-9.LEV \
media/kiv.ini:MEDIA/KIV.INI:$(PROGS)/media/kiv/trunk/kiv.ini \
.shell:.shell:$(PROGS)/system/shell/bin/eng/.shell \
mykey.ini:MYKEY.INI:$(PROGS)/system/MyKey/trunk/mykey.ini \
# end of list
# The list of all C-- programs with one main C-- file.
# Format of an item is exactly the same as in the previous list,
# except that there can be fourth field with parameters for a compiler.
CMM_PROGRAMS:=\
File|Managers/eolite:File|Managers/EOLITE:$(PROGS)/fs/Eolite/trunk/Eolite.c-- \
games/clicks:GAMES/CLICKS:$(PROGS)/games/clicks/trunk/clicks.c-- \
games/FindNumbers:GAMES/FindNumbers:$(PROGS)/games/FindNumbers/trunk/FindNumbers.c-- \
games/mine:GAMES/MINE:$(PROGS)/games/mine/trunk/mine.c--:/MEOS \
#develop/c--:DEVELOP/C--:$(PROGS)/develop/c--/trunk/32.c-- \
# end of list
# List of other files to be included in the image file.
# Some of them are auto-built with special rules, some just exist before build.
# Each item is of the form <local name>:<name inside image>.
# Spaces should be represented as |.
OTHER_FILES:=asciivju:ASCIIVJU autorun.dat:AUTORUN.DAT \
background.gif:background.gif default.skn:DEFAULT.SKN \
e80:E80 graph:GRAPH hdread:HDREAD htmlv:HTMLV \
icons.dat:ICONS.DAT iconstrp.gif:ICONSTRP.GIF index_htm:INDEX.HTM \
kernel.mnt:KERNEL.MNT kerpack:KERPACK keymap.key:KEYMAP.KEY \
kuzkina.mid:KUZKINA.MID lang.inc:LANG.INC lang.ini:LANG.INI \
menu.dat:MENU.DAT \
panel.dat:PANEL.DAT setup.dat:SETUP.DAT \
shell:SHELL table:TABLE \
vmode:VMODE 3d/3dsheart:3D/3DSHEART \
3d/cubeline:3D/CUBELINE 3d/gears:3D/GEARS 3d/house.3ds:3D/HOUSE.3DS \
demos/use_mb:DEMOS/USE_MB \
drivers/sound.obj:DRIVERS/SOUND.OBJ \
File|Managers/eolite.ini:File|Managers/EOLITE.INI \
File|Managers/icons.ini:File|Managers/ICONS.INI \
File|Managers/kfar.ini:File|Managers/KFAR.INI \
File|Managers/kfm.ini:File|Managers/KFM.INI \
fonts/bold.chr:FONTS/BOLD.CHR fonts/char2.mt:FONTS/CHAR2.MT \
fonts/char.mt:FONTS/CHAR.MT \
games/kosilka:GAMES/KOSILKA games/kosskin.gfx:GAMES/KOSSKIN.GFX \
games/reversi:GAMES/REVERSI games/rforces:GAMES/RFORCES \
games/xonix:GAMES/XONIX games/megamaze:GAMES/MEGAMAZE \
lib/cnv_png.obj:LIB/CNV_PNG.OBJ lib/msgbox.obj:LIB/MSGBOX.OBJ \
lib/pixlib.obj:LIB/PIXLIB.OBJ lib/sort.obj:LIB/SORT.OBJ \
media/ac97snd:MEDIA/AC97SND \
network/jmail:NETWORK/JMAIL network/zeroconf.ini:NETWORK/ZEROCONF.INI \
#end of list
#3d/logio.bmp:3D/LOGIO.BMP 3d/cubetext:3D/CUBETEXT
# Extra targets for LiveCD image in the syntax of mkisofs
MKISOFS_EXTRA:=\
dosbox/=$(PROGS)/emulator/DosBox/dosbox \
dosbox/=$(PROGS)/emulator/DosBox/dosbox.conf \
dosbox/=$(PROGS)/emulator/DosBox/readme.txt \
#end of list
# Some macro for convenient work.
# Macros for replacing '|' to escaped space '\ '.
space:=\ #plus space
respace=$(subst |,$(space),$(1))
# Macro for selecting different parts of ':'-separated items.
binarypart=$(word 1,$(subst :, ,$(1)))
imagepart=$(word 2,$(subst :, ,$(1)))
sourcepart=$(word 3,$(subst :, ,$(1)))
parampart=$(word 4,$(subst :, ,$(1)))
# Get file names, possibly with spaces inside, from an item.
# Here $(f) is an item - in fact, macro argument.
fbinary=$(call respace,$(call binarypart,$(f)))
fimage=$(call respace,$(call imagepart,$(f)))
fsource=$(call respace,$(call sourcepart,$(f)))
fparam=$(call respace,$(call parampart,$(f)))
# Define targets for image file.
# Join all the lists above.
targets_full:=$(COPY_FILES) $(FASM_PROGRAMS) $(NASM_PROGRAMS) $(OTHER_FILES) $(CMM_PROGRAMS)
# For each item in the united list call fbinary.
targets:=$(foreach f,$(targets_full),$(fbinary))
# Define a command for copying a file inside the image.
# mcopy_command is a macro with two parameters,
# local file name $(1) and image file name $(2).
# Note that spaces in these have to be escaped with backslashes.
mcopy_command=mcopy -moi $(BUILD_DIR)/kolibri.img $(1) ::$(2)
# Specialize a previous command for an item $(f) in one of lists.
mcopy_item_command=$(call mcopy_command,$(fbinary),$(fimage))
# Join all $(mcopy_item_command) for all items,
# append newline after each item.
# The first newline character after "define" line and
# the last newline character before "endef" line get away
# with define/endef, so we make three newline characters,
# that is two empty lines, in order to get one in $(newline).
define newline
endef
mcopy_all_items:=$(foreach f,$(targets_full),$(mcopy_item_command)$(newline))
# dependencies of MKISOFS_EXTRA; we iterate through $(MKISOFS_EXTRA),
# substitute "=" with space, get the 2nd word and join all results
mkisofs_extra_targets:=$(foreach f,$(MKISOFS_EXTRA),$(word 2,$(subst =, ,$(f))))
# The main goal: build kolibri.img and kolibri.iso
all: $(BUILD_DIR)/kolibri.img $(BUILD_DIR)/kolibri.iso
# The first goal: floppy image.
$(BUILD_DIR)/kolibri.img: $(BUILD_DIR)/.dir \
Makefile \
$(BUILD_DIR)/boot_fat12.bin \
$(targets)
# SYSXTREE
# 3d/CUBETEXT
# 3d/LOGIO.BMP
str=`date -u +"[auto-build %d %b %Y %R, r$(REV)]"`; \
echo -n $$str|dd of=kernel.mnt bs=1 seek=`expr 279 - length "$$str"` conv=notrunc 2>/dev/null
dd if=/dev/zero of=$(BUILD_DIR)/kolibri.img count=2880 bs=512 2>&1
mformat -f 1440 -i $(BUILD_DIR)/kolibri.img ::
dd if=$(BUILD_DIR)/boot_fat12.bin of=$(BUILD_DIR)/kolibri.img count=1 bs=512 conv=notrunc 2>&1
mmd -i $(BUILD_DIR)/kolibri.img ::3D
mmd -i $(BUILD_DIR)/kolibri.img ::DEMOS
mmd -i $(BUILD_DIR)/kolibri.img ::DEVELOP
mmd -i $(BUILD_DIR)/kolibri.img ::DRIVERS
mmd -i $(BUILD_DIR)/kolibri.img ::File\ Managers
mmd -i $(BUILD_DIR)/kolibri.img ::FONTS
mmd -i $(BUILD_DIR)/kolibri.img ::GAMES
mmd -i $(BUILD_DIR)/kolibri.img ::LIB
mmd -i $(BUILD_DIR)/kolibri.img ::MEDIA
mmd -i $(BUILD_DIR)/kolibri.img ::NETWORK
$(mcopy_all_items)
# The second goal: LiveCD image.
$(BUILD_DIR)/kolibri.iso: $(BUILD_DIR)/kolibri.img $(mkisofs_extra_targets)
mkisofs -U -J -pad -b kolibri.img -c boot.catalog -hide-joliet boot.catalog -hide-joliet kolibri.img -graft-points \
-A "KolibriOS AutoBuilder" -p "CleverMouse" -publisher "KolibriOS Team" -V "KolibriOS r$(REV)" -sysid "KOLIBRI" \
-iso-level 3 -o $(BUILD_DIR)/kolibri.iso $(BUILD_DIR)/kolibri.img $(MKISOFS_EXTRA) 2>&1
# Special targets to modify behaviour of make.
.DELETE_ON_ERROR:
.SUFFIXES: # delete all predefined rules
# The floppy bootsector.
$(BUILD_DIR)/boot_fat12.bin: $(KERNEL)/bootloader/boot_fat12.asm $(KERNEL)/bootloader/floppy1440.inc
fasm $(KERNEL)/bootloader/boot_fat12.asm $(BUILD_DIR)/boot_fat12.bin
$(BUILD_DIR)/.dir 3d/.dir demos/.dir develop/.dir drivers/.dir fonts/.dir \
games/.dir lib/.dir media/.dir network/.dir .deps/.dir:
mkdir -p $(dir $@)
touch $@
File\ Managers/.dir:
mkdir -p "File Managers"
touch "File Managers/.dir"
# FASM black magic goes to Makefile.fasm.
include Makefile.fasm
# Similar for NASM.
include Makefile.nasm
# Similar for copying files.
include Makefile.copy
# Special rules for copying sysfuncs.txt - it isn't directly included in the image.
docpak: $(DOCDIR)SYSFUNCS.TXT $(wildcard $(DOCDIR)*)
$(DOCDIR)SYSFUNCS.TXT: $(KERNEL)/docs/sysfuncs.txt
cp $(KERNEL)/docs/sysfuncs.txt $(DOCDIR)SYSFUNCS.TXT
# Similar for C--.
include Makefile.cmm
# Sorry, even black magic seems to be insufficient for
# auto-handling all subtle effects. So we just define
# command lines for compiling and linking, and
# maintain the list of sources and objects by hand.
include Makefile.msvc
# Rules for table
table: .obj.table/table.exe
$(msvc_final)
TABLE_OBJECTS:=.obj.table/calc.obj .obj.table/func.obj .obj.table/hello.obj \
.obj.table/KosFile.obj .obj.table/kosSyst.obj .obj.table/math2.obj \
.obj.table/mcsmemm.obj .obj.table/parser.obj
TABLE_H_FILES:=$(wildcard $(PROGS)/other/table/*.h)
.obj.table/table.exe: $(TABLE_OBJECTS)
$(msvc_link)
$(TABLE_OBJECTS): .obj.table/%.obj: $(PROGS)/other/table/%.cpp $(TABLE_H_FILES) Makefile.msvc | .obj.table
$(msvc_compile)
.obj.table:
mkdir -p .obj.table
# Rules for graph
graph: .obj.graph/graph.exe
$(msvc_final)
GRAPH_CPP_OBJECTS:=.obj.graph/func.obj .obj.graph/hello.obj .obj.graph/kolibri.obj \
.obj.graph/KosFile.obj .obj.graph/kosSyst.obj .obj.graph/math2.obj \
.obj.graph/mcsmemm.obj .obj.graph/parser.obj
GRAPH_C_OBJECTS:=.obj.graph/string.obj
GRAPH_H_FILES:=$(wildcard $(PROGS)/other/graph/*.h)
GRAPH_FASM_OBJECTS:=.obj.graph/memcpy.obj .obj.graph/memset.obj
.obj.graph/graph.exe: $(GRAPH_CPP_OBJECTS) $(GRAPH_C_OBJECTS) $(GRAPH_FASM_OBJECTS)
$(msvc_link)
$(GRAPH_CPP_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.cpp $(GRAPH_H_FILES) Makefile.msvc | .obj.graph
$(msvc_compile)
$(GRAPH_C_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.c $(GRAPH_H_FILES) Makefile.msvc | .obj.graph
$(msvc_compile)
$(GRAPH_FASM_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.asm Makefile.msvc | .obj.graph
fasm $< $@
.obj.graph:
mkdir -p .obj.graph
# Rules for kosilka
games/kosilka: .obj.kosilka/kosilka.exe
$(msvc_final)
KOSILKA_OBJECTS:=.obj.kosilka/kosilka.obj .obj.kosilka/KosFile.obj .obj.kosilka/kosSyst.obj .obj.kosilka/mcsmemm.obj
KOSILKA_H_FILES:=$(PROGS)/games/kosilka/*.h
.obj.kosilka/kosilka.exe: $(KOSILKA_OBJECTS)
$(msvc_link)
$(KOSILKA_OBJECTS): .obj.kosilka/%.obj: $(PROGS)/games/kosilka/%.cpp $(KOSILKA_H_FILES) Makefile.msvc | .obj.kosilka
$(msvc_compile)
.obj.kosilka:
mkdir -p .obj.kosilka
include Makefile.gcc
# Rules for shell
shell: .obj.shell/start.o .obj.shell/shell.o .obj.shell/kolibri.o .obj.shell/stdlib.o .obj.shell/string.o \
$(PROGS)/system/shell/kolibri.ld
$(call gcc_link,$(PROGS)/system/shell/kolibri.ld)
.obj.shell/shell.o: $(PROGS)/system/shell/shell.c \
$(PROGS)/system/shell/all.h \
$(PROGS)/system/shell/system/*.h \
$(PROGS)/system/shell/cmd/*.c \
$(PROGS)/system/shell/modules/*.c \
$(PROGS)/system/shell/locale/rus/globals.h \
Makefile.gcc | .obj.shell
$(gcc_compile)
.obj.shell/kolibri.o .obj.shell/stdlib.o .obj.shell/string.o: .obj.shell/%.o: \
$(PROGS)/system/shell/system/%.c $(PROGS)/system/shell/system/*.h \
Makefile.gcc | .obj.shell
$(gcc_compile)
win32-gcc -c -Os -o $@ $<
.obj.shell/start.o: $(PROGS)/system/shell/start.asm | .obj.shell
fasm $< $@
.obj.shell:
mkdir -p .obj.shell
# Rules for e80
E80DIR=$(PROGS)/emulator/e80/trunk
e80: .obj.e80/start.o .obj.e80/kolibri.o .obj.e80/stdlib.o .obj.e80/string.o .obj.e80/z80.o .obj.e80/e80.o
$(call gcc_link,$(E80DIR)/kolibri.ld)
.obj.e80/e80.o: $(E80DIR)/e80.c $(E80DIR)/48.h \
$(E80DIR)/system/*.h $(E80DIR)/system/msgbox.c \
$(E80DIR)/z80/z80.h Makefile.gcc | .obj.e80
$(gcc_compile)
.obj.e80/kolibri.o .obj.e80/stdlib.o .obj.e80/string.o: .obj.e80/%.o: \
$(E80DIR)/system/%.c $(E80DIR)/system/*.h Makefile.gcc | .obj.e80
$(gcc_compile)
.obj.e80/z80.o: $(E80DIR)/z80/z80.c $(E80DIR)/z80/*
$(gcc_compile)
.obj.e80/start.o: $(E80DIR)/asm_code.asm | .obj.e80
fasm $< $@
.obj.e80:
mkdir -p .obj.e80
# Rules for sdk/sound, used by media/ac97snd
SOUNDDIR=$(PROGS)/develop/sdk/trunk/sound/src
SOUND_OBJECTS:=$(patsubst $(SOUNDDIR)/%.asm,.sdk/%.obj,$(wildcard $(SOUNDDIR)/*.asm))
SOUND_INC_FILES:=$(wildcard $(SOUNDDIR)/*.inc)
.sdk/sound.lib: $(SOUND_OBJECTS)
win32-link /lib /out:$@ $^
$(SOUND_OBJECTS): .sdk/%.obj: $(SOUNDDIR)/%.asm $(SOUND_INC_FILES) | .sdk
fasm $< $@
.sdk:
mkdir -p .sdk
# Rules for media/ac97snd
AC97DIR=$(PROGS)/media/ac97snd
media/ac97snd: .obj.ac97snd/ac97snd.exe
$(msvc_final)
.obj.ac97snd/ac97snd.exe: .obj.ac97snd/ac97wav.obj .obj.ac97snd/crt.obj .obj.ac97snd/k_lib.obj \
.obj.ac97snd/mpg.lib .sdk/sound.lib $(AC97DIR)/ufmod.obj
$(msvc_link)
.obj.ac97snd/ac97wav.obj: $(AC97DIR)/ac97snd/ac97wav.c \
$(AC97DIR)/kolibri.h $(AC97DIR)/ac97snd/ac97wav.h $(AC97DIR)/mpg/mpg123.h \
$(AC97DIR)/sound.h $(AC97DIR)/ufmod-codec.h Makefile.msvc | .obj.ac97snd
$(msvc_compile)
.obj.ac97snd/crt.obj: $(AC97DIR)/ac97snd/crt.c $(AC97DIR)/ac97snd/crt.h Makefile.msvc | .obj.ac97snd
$(msvc_compile)
.obj.ac97snd/k_lib.obj: $(AC97DIR)/ac97snd/k_lib.asm $(AC97DIR)/ac97snd/proc32.inc | .obj.ac97snd
fasm $< $@
AC97SND_MPG_C_FILES:=$(wildcard $(AC97DIR)/mpg/*.c)
AC97SND_MPG_H_FILES:=$(wildcard $(AC97DIR)/mpg/*.h)
AC97SND_MPG_C_OBJECTS:=$(patsubst $(AC97DIR)/mpg/%.c,.obj.ac97snd/%.o,$(AC97SND_MPG_C_FILES))
.obj.ac97snd/mpg.lib: $(AC97SND_MPG_C_OBJECTS) .obj.ac97snd/pow.obj
win32-link /lib /ltcg /out:$@ $^
$(AC97SND_MPG_C_OBJECTS): .obj.ac97snd/%.o: $(AC97DIR)/mpg/%.c $(AC97SND_MPG_H_FILES) Makefile.msvc | .obj.ac97snd
$(msvc_compile)
.obj.ac97snd/pow.obj: $(AC97DIR)/mpg/pow.asm $(AC97DIR)/mpg/proc32.inc | .obj.ac97snd
fasm $< $@
.obj.ac97snd:
mkdir -p .obj.ac97snd

View File

@ -0,0 +1,15 @@
# This is similar to Makefile.fasm, look there for comments.
# No dependency tracking, so force dependencies on all files
# in dir/* and dir/*/*
# Also, we cannot set output file name and need to guess
# whether c-- has created .com file or no-extension file.
define cmm_meta_rule
$(1): $(2) Makefile.cmm $$(call respace,$$(addsuffix .dir,$(3))) \
$$(wildcard $$(dir $(2))*) $$(wildcard $$(dir $(2))*/*)
flock $$(dir $(2)).lock -c '\
win32-c-- /D=AUTOBUILD /D=LANG_ENG $(5) /IP=Z:$$(dir $(2)) Z:$$< >&2 && \
if [ -e $$(basename $$<) ]; then f=$$(basename $$<); else f=$$(basename $$<).com; fi && \
kpack --nologo $$$$f "$$@" && rm $$$$f'
endef
$(foreach f,$(CMM_PROGRAMS),$(eval $(call cmm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname),$(fparam))))

View File

@ -0,0 +1,6 @@
# This is similar to Makefile.fasm, look there for comments.
define copy_meta_rule
$(1): $(2) Makefile.copy $$(call respace,$$(addsuffix .dir,$(3)))
cp $$< "$$@"
endef
$(foreach f,$(COPY_FILES),$(eval $(call copy_meta_rule,$(fbinary),$(fsource),$(binarydir))))

View File

@ -0,0 +1,52 @@
# This is not a independent Makefile; it is auxiliary file
# included from main Makefile.
# It depends on the following variables and macro:
# $(FASM_PROGRAMS) is a list of all programs to build with FASM rule;
# $(binarypart) is a macro which converts from $(1)=item of $(FASM_PROGRAMS)
# to space-escaped full name of binary, $(respace) unescapes spaces;
# $(fbinary) and $(fsource) gives space-unescaped full name of binary
# and source (respectively) of $(f)=item of $(FASM_PROGRAMS).
# Define the rule for all FASM programs.
# Yes, this looks like a black magic.
# But it is not so scary as it seems.
# First, we define "meta-rule" as a rule which is
# macro depending on $(fasmprog).
# Second, the construction foreach+eval creates
# usual rules, one for each $(fasmprog) in $(FASM_PROGRAMS).
# Note that meta-rule is double-expanded, first
# time as the arg of eval - it is the place where $(fasmprog)
# gets expanded - and second time as the rule;
# so all $ which are expected to expand at the second time should be escaped.
# And all $ which are expected to be expanded by the shell should be escaped
# twice, so they become $$$$.
# The arguments of macro fasm_meta_rule:
# $(1) = name of binary file,
# $(2) = name of main source file.
# $(3) = folder of binary file - without spaces.
# $(4) = name of program - without path and extension,
define fasm_meta_rule
$(1): $(2) Makefile.fasm .deps/.dir $$(call respace,$$(addsuffix .dir,$(3)))
fasm -m 65536 $$< "$$@" -s .deps/$(4).fas
prepsrc .deps/$(4).fas /dev/null
prepsrc .deps/$(4).fas /dev/stdout | \
perl -n -e 's|\\|/|g;push @a,$$$$1 if/^;include \x27(.*?)\x27/;' \
-e 'END{$$$$a=join " \\\n ",@a;print "$(1): $$$$a\n$$$$a:\n"}' > .deps/$(4).Po
kpack --nologo "$$@"
-include .deps/$(4).Po
endef
progname=$(call respace,$(basename $(notdir $(call binarypart,$(f)))))
binarydir=$(subst ./,,$(dir $(call binarypart,$(f))))
$(foreach f,$(FASM_PROGRAMS),$(eval $(call fasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))
# Rule for the kernel differs: it uses kerpack instead of kpack.
kernel.mnt: $(KERNEL)/kernel.asm Makefile.fasm .deps/.dir
fasm -m 65536 $< "$@" -s .deps/kernel.fas
prepsrc .deps/kernel.fas /dev/null
prepsrc .deps/kernel.fas /dev/stdout | \
perl -n -e 's|\\|/|g;push @a,$$1 if/^;include \x27(.*?)\x27/;' \
-e 'END{$$a=join " \\\n ",@a;print "$@: $$a\n$$a:\n"}' > .deps/kernel.Po
kerpack $@
-include .deps/kernel.Po

View File

@ -0,0 +1,8 @@
define gcc_compile
win32-gcc -c -Os -DAUTOBUILD -DLANG_ENG=1 -o $@ $<
endef
define gcc_link
win32-ld -nostdlib -T $(1) -o "$@" $^
win32-objcopy "$@" -O binary
kpack --nologo "$@"
endef

View File

@ -0,0 +1,13 @@
define msvc_compile
win32-cl /c /O2 /Os /Oy /GF /GS- /GR- /EHs-c- /fp:fast /GL /QIfist /Gr /DAUTOBUILD /Fo$@ Z:$< >&2
endef
define msvc_link
win32-link /section:.bss,E /fixed:no /subsystem:native \
/merge:.data=.text /merge:.rdata=.text /merge:.1seg=.text \
/entry:crtStartUp /out:$@ /ltcg /nodefaultlib \
$(addprefix Z:,$^) >&2
endef
define msvc_final
EXENAME=$< fasm doexe2.asm "$@"
kpack --nologo "$@"
endef

View File

@ -0,0 +1,16 @@
# This is similar to Makefile.fasm, look there for comments.
define nasm_meta_rule
.deps/$(4).Po: $(2) Makefile.nasm .deps/.dir
nasm -I$$(dir $(2)) -o "$(1)" -M $$< > .deps/$(4).Tpo 2>/dev/null; \
if [ $$$$? -eq 0 ]; then perl -ln -e 'next unless $$$$_;' \
-e 'm/((.*): )?(.*)/;$$$$a=$$$$2 if $$$$2;push @b,$$$$3;' \
-e 'END{$$$$b=join "\n",@b;print "$$$$a .deps/$(4).Po: $$$$b\n$$$$b:"}' \
.deps/$(4).Tpo > .deps/$(4).Po; fi
rm -f .deps/$(4).Tpo
$(1): $(2) Makefile.nasm $$(call respace,$$(addsuffix .dir,$(3)))
nasm -I$$(dir $(2)) -o "$$@" $$<
kpack --nologo "$$@"
-include .deps/$(4).Po
endef
$(foreach f,$(NASM_PROGRAMS),$(eval $(call nasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))

Binary file not shown.

View File

@ -0,0 +1,16 @@
# Syntaxis is: <Program_Name> <Parameter(s)> <Delay_Time>
# Use <NO> in parameter value if program is started without parameters.
# Delay time means how much the system should wait, before running the next line. It is measured in 1/100 seconds.
# If delay is negative, wait for termination of the spawned process. Otherwise, simply wait
#
#/RD/1/COMMOUSE <NO> 1 # COM mice detector
/RD/1/MEDIA/KIV \T__background.gif -1 # Desktop background image
/RD/1/@CLIP <NO> 1 # Clipboard
/RD/1/@RB <NO> 1 # Desktop right-click menu
/RD/1/@SS <NO> 1 # Screensaver
/RD/1/@PANEL <NO> 1 # Start panel
/RD/1/DEVELOP/BOARD <NO> 1 # Load DEBUG board
/RD/1/SETUP BOOT 1 # Load device settings
/RD/1/ICON BOOT 1 # Multithread icon
/RD/1/NETWORK/ZEROCONF <NO> 1 # Network configuration
### Hello, ASM World! ###

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,347 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
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 Library 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
Appendix: 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) 19yy <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, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
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) 19yy 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 Ty Coon>, 1 April 1989
Ty Coon, 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 Library General
Public License instead of this License.

View File

@ -0,0 +1,48 @@
PHARAOH TOMB
The purpose of the game is to open passage by moving hieroglyphs on entrance
in the next room of the pharaoh tomb (8X8). You can exchange two hieroglyphs
located near each other on vertical or horizontal if after such transposition
a combination of three or more identical pictures abreast is generated. Such
lines are disappeared immediately, and free place is filled by hieroglyphs
which "falled" from top. Missing hieroglyphs are generated randomly. For
disappearing hieroglyphs points are added. For combination of hieroglyphs
number of points is calculated by formula L+(L+1)^(N-3), but no more than
20*L*N, where N is number of hieroglyphs in combination, and L is level number.
To pass to the next level it is required to remove certain number of
hieroglyphs (different on each level). From below of panel with hieroglyphs is
located field which indicates how many is passed and how many is remained.
1st level - 500
2nd level - 450
3rd level - 400
4th level - 350
5th level - 300
6th level and further - 50*(L+1)
On the first level combinations are composed from 6 states of hieroglyphs.
With each new level one new hieroglyph is involved, but no more than 10
(i.e. starting from 5th level and further 10 different hieroglyphs are
involved, not counting special ones).
Starting from 2nd level for each combination from 4 and more hieroglyphs,
and also for passing each fourth of level the player gets "free" hieroglyph -
it is usual hieroglyph (generated randomly), which keeps "in pocket" of player
and can be necessarily inserted by player to any place and replace thus
located there hieroglyph.
Starting from 3rd level for each combination from 5 and more hieroglyphs,
and also for passing each third of level the player gets "universal key",
which matches to any combination of hieroglyphs and to several different
combination simultaneously.
Starting from 4th level for each combination from 6 and more hieroglyphs,
and also for passing a half of level the player gets "space crooker",
which allows, when is used, to make 3 moves (not obligatory successive) at
diagonal.
The player can not have simultaneously more than 1 extra hieroglyph of each
type (1 usual, 1 joker and 1 crooker).
The game is ended, if the player can not make any combination with existing
hieroglyphs.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
The following "hot" shortcut keys are used in the system:
(Indexing on time of appearance in the system)
1) Ctrl + Alt + Del start of the application CPU (the manager of processes), is a sole combination maintained on a level of a kernel, all rest "hot" key is realized at the expense of the application @PANEL.
2) Ctrl + Shift - switching of keyboard layout.
3) Win - start of the application MENU.
4) Alt + Ctrl + F12 - start of the application END.
5) Alt + F4 - terminate the active application.
6) Alt + Tab - switch to the next (in the window stack) window
7) Alt + Shift + Tab - switch to the previous (in the window stack) window
8) Alt + Shift + NumLock - start of the application MOUSEMUL, which emulates mouse with numpad, when NumLock is on (note: mousEmul does not create window or pictures to indicate its work!)

View File

@ -0,0 +1,25 @@
Ini-files are text files of special contents:
[name of first section]
Key1=value1
Key2=value2
;comment
[name of second section]
Key3=value3
All lines beginning with ';' are considered as comments and ignored.
Keyboard shortcuts are described as follows:
any number of modificators Ctrl/Alt/Shift/LCtrl/LAlt/LShift/RCtrl/RAlt/RShift,
followed by latin letter, digit or key name. The following keys have a name:
F1 - F12
Home; End; PgUp; PgDn; Ins, equivalently, Insert; Del, equivalently, Delete;
Tab; Plus; Esc; Enter; Backspace; Space;
Left (left arrow); Right (right arrow); Up (up arrow); Down (down arrow).
The string for shortcut is case-insensitive. Parts of the string
can be written without delimiters or with '+' between parts. Examples:
Ctrl+Alt+Backspace
RCtrl+RShift
ShiftA
f10
shiftalt5

View File

@ -0,0 +1,94 @@
Control keys in KFar.
For panels:
arrows, Home, End - move cursor on active panel
Tab - change active panel
Enter - enter to folder or run program under cursor
F3 - view file under cursor
F5 - copy selected items or item under cursor to another panel
Shift+F5 - copy selected items or item under cursor to the same panel
(of course, you must specify another file name)
F7 - create folder
F8 - delete selected elements or element under cursor
F10 - exit
Alt+F1/Alt+F2 - change drive on left/right panel
Alt+F9 - resize window to maximum possible size and restore initial size
Ctrl+F3 - sort file/folders on active panel by name
Ctrl+F4 - sort by extension
Ctrl+F5 - sort by date/time of last modification
Ctrl+F6 - sort by size
Ctrl+F7 - don't sort (display in order as on disk)
Ctrl+F8 - sort by date/time of creation
Ctrl+F9 - sort by date/time of last access
F12 - display screens menu
Ctrl+R - refresh active panel
Menu - display context menu for file under cursor
LeftCtrl+1/2/3/4 - select panel mode (brief/medium/full/wide)
RightCtrl+0..9 - go to folder specified in the section [FolderShortcuts]
of ini-file as Shortcut0..9 accordingly
Insert - select/deselect current element
Grey[+] - select files and folders with mask
Grey[-] - deselect files and folders with mask
The mask is like "*.asm,*.inc|template.asm" (which selects all files with
extensions ASM and INC except for template.asm): one or more elementary
including masks with standard mean of '*' and '?', delimited by ',' or ';',
optionally followed by '|' and one or more elementary excluding masks.
The mask "*.*" specifies all files having '.' in name (i.e. files with
any non-empty extension); to specify all files use "*".
Grey[*] - invert selection
Alt+<letter or digit> - position cursor on name of file/folder,
beginning from selected letter or digit; it shows fast find window,
in which one can enter subsequent symbols of file/folder name to more precise
selection, and also Ctrl+Enter/Shift+Ctrl+Enter to move to the next/previous
panel item, whose name starts with specified letters
For viewer:
Esc = F3 = F10 = Numpad5 - exit
Down - line down
PgDn - page down
Up - line up
PgUp - page up
Home - to begin of file
End - to end of file
Left - character left
Right - character right
Ctrl+Left - in Text-mode 20 characters left;
in Hex-mode 1 byte left
Ctrl+Right - in Text-mode 20 characters right;
in Hex-mode 1 byte right
Ctrl+Shift+Left - start of lines on the screen
Ctrl+Shift+Right - end of lines on the screen
F2 - toggle line wrap
F4 - toggle Text <-> Hex mode
F8 - toggle encoding cp866 (DOS) <-> cp1251 (Win)
Shift+F8 - encoding tables menu
F12 - display screens menu
F7 - search a string from the current position in the file
(the string and settings are set in the following dialog)
Shift+F7 - continue to search a string
(use the string and settings from last search by F7)
Alt+F9 - resize window to maximum possible size and restore initial size
For editor:
Esc = F10 - exit; if the file was modified, the question about save necessity
will follow
Shift+F10 - save and exit
F2 - save the file
Down - move cursor down to one line
PgDn - move cursor down to one page
Up - move cursor up to one line
PgUp - move cursor up to one page
Left - move cursor left to one symbol
Right - move cursor right to one symbol
Home - move cursor to the beginning of the current line
End - move cursor to the end of the current line
Backspace - delete the symbol before the cursor
Del - delete the symbol under the cursor
Ins - toggle insert/replace mode when entering symbols
F12 - display screens menu
Alt+F9 - resize window to maximum possible size and restore initial size
F7 - search a string starting from the position next to the cursor
(the string and search settings are prompted in the following dialog)
Shift+F7 - continue to search a string (same as F7 without settings dialog)
diamond
mailto:diamondz@land.ru

View File

@ -0,0 +1,214 @@
Introduction.
mtdbg is a debugger for Kolibri operating system. This documentation describes
debugger features and work with it. If you need some features which are
not presented yet, either write to the forum meos.sysbin.com (if you can
read russian texts) or mail me to address given in the end of this file.
General description.
In each moment of time mtdbg can debug only one program. I will call it
loaded program. If no program is loaded, overwhelming majority of debugging
actions is disabled.
mtdbg is controlled by command line, entering from keyboard. Command line
is drawn in the bottom part of debugger window. Debugger handles standard
input keys Backspace,Delete,Home,End,left/right arrows.
Commands are case-insensitive. Delimiter is arbitrary nonzero number of spaces.
At any moment mtdbg can be terminated by command "quit" (without arguments).
You can also simply press to close button in the right upper corner of window.
When debugger is started without command string parameters, no program is
loaded. Also mtdbg can be started with command string, in this case it tries
to load program with the name pointed to in first parameter in command string
and parameters pointed to following (if present).
If no program is loaded, you can load a program with the command
load <full name of executable file> [<parameters>]
Examples:
load /rd/1/example
LOAD /rd/1/aclock w200 h200
LoaD /hd0/1/menuetos/dosbox/dosbox
All that stays after first space after executable file name, is exactly passed
to program as command string.
The command "load" reports result in the messages window (a little higher
than command line window). If program was loaded successfully, there will
be the appropriate message; otherwise the message will contain error reason.
Most probable error is "file not found" if wrong file name is given.
The debugger can load files with information on symbols in the program
(labels, global variables) - text files, each line of which has format
0x<hex_value_of_addr> <name>
(lines, which do not have such format, are ignored). Such file can be created
by hand or generated automatically by fasm. Evident load can be done by command
load-symbols <full name of symbols file>
Furthermore, when the debugger executes the command "load", it checks for
presence of file with name as of loading binary and extension '.dbg'
(/rd/1/example.dbg in the first of examples above), and if such file exists,
the debugger loads it automatically (with the message "Symbols loaded", if
all is OK).
It can happen so that loaded program is packed. General principle of
program packing is following: at first input file is packed (by some
pack algorithm), then is appended small code which gets control at program
start, unpacks input code in the memory and then passes control to it.
If program is packed, it "real" code is not visible and for debugging it is
needed previously to pass through unpacker code.
mtdbg determines most of existing packers (mxp,mxp_lzo,mxp_nrv,mtappack)
and in this case suggests to automatically go to "real" code. It is recommended
to accept (press 'y' or <Enter>), but you can refuse too. At refusal and if
program is packed by something unknown the command "unpack" (without arguments)
can be used. Call it only in the case when you are sure that program is packed
and control has not already went to main code! [Starting from Kolibri 0.6.5.0,
this paragraph is no more actual, because one can pack applications as all
binary files with kpack and the unpacker code in this case is located in the
kernel and is transparent for debug.]
Loaded program can be terminated by the command "terminate" (without
arguments). The command "detach" (without arguments) detaches from program,
after that program continues execution normally, as if there was no debugger.
After both this commands program stops to be debugged.
It is possible to anew load program for debugging by the command "reload"
(without arguments). If there is already loaded program, it is terminated
and new instance is started (from the beginning) (with the same command
string), in this case the command is similar to the commands
terminate
load <last program name> <last program arguments>
Otherwise is loaded anew latest program, which was debugged (in the current
seance of work with mtdbg) (with the same command string), i.e. is similar to
load <last program name> <last program arguments>,
but the command "reload" in both cases is shorter and more convenient;
moreover, "load" thinks that new program is loaded and moves data window
(see below) to zero address, and "reload" keeps current address.
The command "help", which can be shorten to "h", is always available.
All commands are divided on groups.
"help" without arguments displays the list of command groups.
"help" with group name displays the list of commands in this group with short
comments.
"help" with command name displays information about given command.
Examples:
help
help control
h LoaD
The debugger window consists from the following items enumerated from up
to down:
- status string. If there is loaded program, shows its name and state
("Running/Paused"), otherwise reports "No program loaded".
- registers window - shows values of general-purpose registers, register eip
and states of single flags: CF,PF,AF,ZF,SF,DF,OF: if flag is cleared, then
is displayed lower-case letter, if flag is set, then upper-case one.
Registers which are changed from previous moment are highlighted in green.
- data window (dump window) - shows memory contains of loaded program
- code window (disassembler window) - shows program code as disassembled
instructions
- messages window
- command line window
Dump window can display data starting from any address, to this serves
the command
d <expression>
The command "d" without arguments flicks dump window down.
The same is for code window and the command
u <expression>
or simply "u".
Examples:
d esi - displays data at address esi (e.g. is useful before execution of
instruction rep movsb)
d esp - displays stack
u eip - disassembles instruction starting from the current
Expressions in mtdbg can include
- hexadecimal constants
- names of all general-purpose registers (8 32-bits, 8 16-bits and
8 8-bits) and register eip; values of 16- and 8-bits registers are padded
with zeroes to 32 bits
- four arithmetic operations +,-,*,/ (with standard priorities) and
brackets
- [if symbols information was loaded] names, loaded from dbg-file
All calculations are realized modulo 2^32.
Examples of expressions:
eax
eip+2
ecx-esi-1F
al+AH*bl
ax + 2* bH*(eip+a73)
3*esi*di/EAX
The command
? <expression>
calculates value of specified expression.
Values of registers in loaded program can be changed by the command "r", which
has two absolutely equivalent forms:
r <register> <expression>
r <register>=<expression>
(in both cases you can place spaces as you want). Register can be any of
above-mentioned - 24 general-purpose registers and eip.
Let us assume that the command "load" was successfully load program for
debugging.
Immediately after loading program is suspended and does not execute.
Press Ctrl+F7 (command-line analog is the command "s") to make one step
in loaded program, after that control returns to debugger which displays
new contains of registers and memory. The system call "int 40h" is considered
as one step.
Pressing Ctrl+F8 (command-line analog is the command "p") also makes step in
loaded program, but procedure calls, string operations with prefix
rep/repz/repnz and 'loop' cycles are executed as one step.
The one-step commands are used usually on single program sections,
when it is needed, for example, to regularly trace registers value and/or
some variables in memory.
The command
g <expression>
resumes program execution and waits until control goes to eip=given address,
and in this moment suspends program. The command "g" without arguments
simply resumes execution.
To suspend program use the command "stop" (without arguments).
In the typical situation it is required that program is executed normally,
but when some conditions are satisfied, program suspends and debugger receives
control. The corresponding conditions are called breakpoints or simply breaks.
Primary type of breakpoints is to concrete address, i.e. stop execution at
eip=<given value>. Such breakpoints are set by the command
bp <expression>
Note that if there is only one such breakpoint, there is more convenient to use
the command "g" with argument instead.
Other type of breakpoints is on access to given memory area. Maximum
numbers of such breakpoints is 4 (because hardware features of x86 processors
are used and they allows only 4).
bpm <expression> - breaks at any access to byte at given address
bpm w <expression> - breaks at write to byte at given address
bpmb,bpmw,bpmd <expression> - breaks to access correspondingly to byte, word
or dword at given address. bpm ¨ bpmb are synonyms. When bpmw,bpmd are used,
address must be aligned according to correspondingly word bound (i.e. be even)
or dword bound (i.e. be divisible by 4).
bpmb,bpmw,bpmd w <expression> - similar to break on write.
To see the list of set breakpoints use the command "bl", to obtain information
on concrete breakpoint use "bl <number>". Unnecessary breakpoints can be
deleted with the command "bc <number>", temporarily unnecessary can be
disabled by the command "bd <number>", when they will be needed again,
use the command "be <number>".
Remarks.
1. When debugging your own programs you can put in code instructions
int3 (pay attention to absence of space!). Such instruction causes
exception at normal run, which leads to process termination, but
at work under debugger it is simply activated (with the message
"int3 command at xxx"). This feature allows to not think about addresses
to use in the commands g and/or bp.
2. All output and all input is oriented on hexadecimal scale of notation.
3. When program is executed, registers and data window shows information
regarding to moment before resume; you can not set registers value in this
mode. Nevertheless the command "d" in this mode shows information that
was true in the moment of command delivery.
diamond
mailto:diamondz@land.ru

View File

@ -0,0 +1,268 @@
************************
* Kolibri OS 0.7.7.0+ *
* February 2010 *
************************
The latest release of the OS is available on the official site:
http://kolibrios.org
If you have questions - look for support on our forum:
http://board.kolibrios.org (rus+eng)
***********************************
* What is new in this release? *
***********************************
The following changes, revisions, fixes in the kernel have been made:
From Evgeny Grechnikov (Diamond) - Russian Federation
1) Improvement of drives detection using BIOS service (V86)
2) Kernel bugfixes.
From Sergey Semyonov (Serge) - Russian Federation
1) Driver for ATI videocards updated.
2) Linux-like kernel mutexes
From Mihail Semenyako (mike.dld) - Republic of Belarus
1) Refactoring of window subsystem.
From <Lrz>
1) Processing API functions in order to completely remove the shift-register-call
2) Refactoring, optimization, bugfixes of some places in the kernel.
From A.Jerdev (art_zh) - United Kingdom
1) Memory-mapped I/O (MMIO) access from the userworld.
2) PCIe Extended configuration space access (auto-adjust for AMD-NPT since Athlon64).
From turbanoff
1) Read from ext2fs/ext3fs.
From Marat Zakiyanov (Mario79) - Russian Federation
1) Improvements in the processing of mouse clicks.
From hidnplayr
1) Rewriting of the entire network subsystem.
From Asper
1) Drivers for the sound cards VT823(X) and EMU10K1X.
From tsdima
1) Driver for the sound card ForteMedia fm801.
From Maxis
1) changes in free memory checks.
The following changes, revisions, fixes in applications have been made:
* New versions of applications and new applications:
FTPS - tsdima, some improvements
VIEW3DS - macgub, version 0.054
FASM - Pavel Rymovski (Heavyiron), updated to version 1.69.11
IgorA, use the library box_lib, russification,
Marat Zakiyanov (Mario79) fix bugs encountered
Evgeny Grechnikov (Diamond), fix of window wrapping
PCIDEV - art_zh, MMIO sample dumps added; vendors database
trimmed to reduce the distro size.
BOARD - Evgeny Grechnikov (Diamond), do not throw out existing
messages at the program start
UNVWATER - Asper, demo ported from OctaOS
(the author is Octavio Vega Fernandez).
HEED - staper, version 0.14: use the library box_lib;
Ctrl+C/X/V, Ctrl+B to select a block
Marat Zakiyanov (Mario79), using of OpenDialog component,
little optimization of the code
SHELL - Albom, version 0.4.2
CPU - Evgeny Grechnikov (Diamond) at the suggestion of
Kirill Lipatov (Leency), do not show system processes
by default
HTMLV - Kirill Lipatov (Leency), version 0.62a
EOLITE - Kirill Lipatov (Leency), version 0.98.7a
RTFREAD - Sorcerer, cosmetic fix
dunkaist, menu_bar and scroll_bar from box_lib, 'end' hotkey
E80 - Albom, version 0.5.1
KIV - Evgeny Grechnikov (Diamond), file name in the window
title, configurable keyboard shortcuts for next/prev
images in the current folder
SUDOKU - staper, port of Sudoku game - that is a puzzle with digits, where you
have to fill free cells with digits from 1 to 9 so that every row,
every column and every small square 3x3 contain each digit just one time.
There are 9 levels in the game.
REVERSI - staper, port of strategy game Reversi (Othello)
MSQUARE - staper, math puzzle "magic square": sum of the numbers in rows, columns
(less often in diagonals) should be equal
FINDN-S - Artemonische, a simple game in which you have to collect all the numbers
in the order of 10 to 90
PANEL - Evgeny Grechnikov (Diamond), a little change in the panel clock
and reanimation of backlight on the Alt+[Shift+]Tab press.
AC97SND - Asper, support of playlists in m3u format.
@NOTIFY - SoUrcerer, program for popup text messages
DOSBOX - Evgeny Grechnikov (Diamond), version 0.74
ASCIIVJU - Konstantin Dutkevich (Nazarus), program shows ASCII table
PIPETKA - Rock_maniak_forever, program to get color of a pixel on the screen
SNAKE - dunkaist, yet another implementation of classic game
* New versions of dynamic libraries and new dynamic libraries:
libini - Evgeny Grechnikov (Diamond), added function to read
keyboard shortcuts
box_lib - IgorA, update component tree_list, new component
text_editor, documentation on the library
Marat Zakiyanov (Mario79) refinement of ŽpenDialog component, rewriting
of some applications to use it, new component PathShow
/-----------------------------------------------\
* Dates of publication of the distribution kits *
\-----------------------------------------------/
RE N1 30.08.2003
RE N2 07.10.2003
RE N3 26.11.2003
RE N4 23.12.2003
RE N5 15.02.2004
RE N6 27.03.2004
KOLIBRI N1 16.05.2004
RE N7 11.06.2004
KOLIBRI N2 28.08.2004
RE N8 01.12.2004
KOLIBRI N3 22.02.2005
Beta 2: 20.03.2005
KOLIBRI N4 07.06.2005
KOLIBRI 0.5.0.0 04.10.2005
0.5.1.0 12.10.2005
0.5.2.0 02.12.2005
0.5.3.0 18.03.2006
0.5.8.0 09.07.2006
0.5.8.1 25.07.2006
0.6.0.0 04.09.2006
0.6.3.0 31.10.2006
0.6.5.0 14.02.2007
0.7.0.0 07.06.2007
0.7.1.0 23.09.2007
0.7.5.0 31.01.2009
0.7.7.0 13.12.2009
/----------------\
* KolibriOS TEAM *
\----------------/
This list contains all, who has actively helped to creation and development
of KolibriOS, whoever possible.
(people are enumerated in the order by time of participation in the project,
from bottom to top - from past to future, through present)
* Trans \
* VaStaNi |
* Ivan Poddubny |
* Marat Zakiyanov (Mario79) |
* Mihail Semenyako (mike.dld) | system programming
* Sergey Kuzmin (Wildwest) |
* Andrey Halyavin (halyavin) | loaders,
* Mihail Lisovin (Mihasik) | kernel improvements and so on
* Andrey Ignatiev (andrew_programmer) |
* NoName |
* Evgeny Grechnikov (Diamond) |
* Iliya Mihailov (Ghost) |
* Sergey Semyonov (Serge) |
* Johnny_B |
* kasTIgar |
* SPraid |
* Rus |
* Alver |
* Maxis |
* Galkov |
* CleverMouse |
* tsdima |
* turbanoff |
* Asper |
* art_zh /
* Mihail Lisovin (Mihasik) \
* Andrey Ivushkin (Willow) |
* Mihail Semenyako (mike.dld) |
* Pavlushin Evgeny (Exis) |
* Ivan Poddubny | application programming
* Marat Zakiyanov (Mario79) |
* Sergey Kuzmin (Wildwest) |
* Andrey Halyavin (halyavin) | creation of new,
* Hex | port of existing
* Andrey Ignatiev (andrew_programmer) | or revisions of old
* ealex | applications for Kolibri
* Olaf |
* Evgeny Grechnikov (Diamond) |
* Navanax |
* Johnny_B |
* Pavel Rymovski (Heavyiron) |
* Vitaly Bendik (mistifi(ator) |
* Iliya Mihailov (Ghost) |
* Maxim Evtihov (Maxxxx32) |
* Vladimir Zaitsev (Rabid Rabbit) |
* vectoroc |
* Alexey Teplov (<Lrz>) |
* Sergey Semyonov (Serge) |
* YELLOW |
* iadn |
* Maciej Guba (macgub) |
* Mario Birkner (cYfleXX) |
* hidden player (hidnplayr) |
* trolly |
* nilgui |
* kaitz |
* DedOk |
* SPraid |
* Rus |
* Alver |
* Dron2004 |
* Gluk |
* Aleksandr Bogomaz (Albom) |
* Kirill Lipatov (Leency) |
* Vasiliy Kosenko (vkos) |
* IgorA |
* staper |
* chaykin |
* Alexander Meshcheryakov |
(Self-Perfection) |
* CleverMouse |
* tsdima |
* art_zh |
* Asper |
* Pterox |
* Artemonische |
* dunkaist /
* Hex \
* Diamond / documentation
* CodeWorld \ forum http://meos.sysbin.com
* mike.dld / site http://kolibrios.org; svn-server
* Alexey Teplov (<Lrz>) \ (KolibriOS logo)
* goglus | design (KolibriOS background)
* Kirill Lipatov (Leency) / (KolibriOS icons)
* Pavel Rymovski (Heavyiron) \
* Vitaly Bendik (mistifi(ator) |
* vectoroc |
* Veliant | testing,
* AqwAS | countenance
* Mike |
* camper |
* Dmitry the Sorcerer |
* Ataualpa |
* Maxis |
* Galkov |
* ChE /
and others...
KolibriOS team

View File

@ -0,0 +1,387 @@
What is implemented
===================
The following features are present in the TCP/IP stack code:
IP layer.
ICMP.
TCP layer.
UDP layer.
local loopback.
Realtek 8029 PCI ethernet interface.
Realtek 8139 PCI ethernet interface.
Intel i8255x PCI ethernet interface.
Dynamic ARP table.
PPP dialer
And the following internet applcations are implemented
HTTP Server
Telnet
POP Client
DNS Name resolver
MP3 Server
TFTP Client
IRC Client
There are also a number of experimental applications for streaming music
and performing interprocess communication via sockets. A Web broswer is in
development
What is not implemented
=======================
The IP layer does not process header options.
The IP layer does not support routing.
Packet fragmentation is not supported.
How to configure Kolibri for PPP
===============================
See ppp.txt
How to configure Kolibri for Ethernet
====================================
First, you need to have a supported ethernet card fitted, or present
on your motherboard. If you are uncertain what type of hardware you
have, try to configue the stack. If you have supported hardware it
will be found, and enabled.
Setting Up the ARP Table
------------------------
Kolibri's ARP table is dynamically created and maintained; You can see what
hosts Kolibri has communicated with by running the ARPSTAT application.
Enabling Ethernet
-----------------
Boot Kolibri, then select STACKCFG from the NET menu.
Press the 'Read' Button, then select 'Packet Driver'.
Press 'Change' next to the IP address, and enter the IP address you want
to use. Make sure it is on the same sub-net as the LAN to which you are
connected.
Press 'Apply' to action the changes.
Close the program.
The stack is now running, which you can test by pinging Kolibri from a
remote host.
The simplest way to connect two PC's together is using a 'Null Modem'
Ethernet cable. These simply cross certain wires over. They can be
purchased from PC stores, but are simple to make. Details can be found
on the web. Look on google for 'ethernet cross over cable' or similar.
How to use TCP/IP locally, with no Network
==========================================
Kolibri supports a form of local loopback that means applications on the
same PC can communicate with each other via sockets as though they
were on separate hosts. To connect to an application on the same machine,
specify the local IP address as the destination address. You do not even
need to configure the stack for ethernet; local loopback will work without
any network hardware. It's great for development and testing.
Application Programming Interface
=================================
The developer can access the stack through interrupt 0x40, function 53.
The file TFTPC.ASM gives a good example of how to use the programming
interface ( at least, for UDP), but as network communication is complex
I'll give an overview.
Sockets
=======
Applications connect to each other and pass information between themselves
through a mechanism called a 'socket'. Sockets are end-points for
communication; You need one at each application to communicate.
Using sockets is a little like using files on an OS; You open them, read
and write to them, then close them. The only thing that makes life slightly
more complicated is that unlike with a file, you have something intelligent
at the other end ( which for example may not want to close when you do! )
Lets deal with the terminology before we go any further.
socket A unique identifier used by the application for communication.
local port A number that identifies this application on the local host.
Ports are a way to allow multiple applications to communicate
with other hosts without the data becoming mixed up. ( The
technical term is 'multiplex' ). Port numbers are 16 bit.
remote port A number that identifies the application on the remote host
to which we are communicating with. To the remote host, this is
it's 'local port'. Port numbers are 16 bit.
IP Address A 32 bit number that identifies the remote host PC that we are
communicating with.
Passive Refers to the mode by which a socket is opened; When opening in
passive mode, the local PC is awaiting an incoming connection.
Active Refers to the mode by which a socket is opened; When opening in
active mode, the local PC will attempt to connect to a remote
PC.
When you connect to a socket on a remote PC, you need to specify more than
just the IP address, otherwise the remote stack will not know to which
application it should send your data. You must fully qualify the address,
which means you specify the IP address and the port number. This would be
written like this
192.168.1.10:80 ; Connect to port 80 on the machine 192.168.1.10
Port numbers are important. Some are 'well known' and provide access to
common applications. For example port 80 is used by HTTP servers; That
way I can connect to a webserver on a host without having to find out
what port number the application is listening on.
This brings me to the way in which you open a socket; As I said earlier,
there are two modes, Passive and Active. A webserver would open a passive
socket, as it is waiting for incoming connection requests. A web browser
would open an active socket because it is attempting to connect to a
specified remote host.
Access to programming interface
===============================
The developer accesses the stack functions through interrupt 0x40,
function 53. Some functions may be accessed through function 52, but these
are mainly for stack configuration.
Here is a summary of the functions that you may use and the parameter
definitions.
Get Local IP Address
--------------------
eax = 52
ebx = 1
IP address returned in eax ( in internet byte order )
Write to stack input queue
--------------------------
eax = 52
ebx = 6
edx = number of bytes to write
esi = pointer to data ( in application space )
On return, eax holds 0 for OK, or 0xFFFFFFFF for error.
This interface is for slow network drivers only ( PPP, SLIP )
Read data from network output queue
-----------------------------------
eax = 52
ebx = 8
esi = pointer to data ( in application space )
On return, eax holds number of bytes transferred.
This interface is for slow network drivers only ( PPP, SLIP )
Open a UDP socket
-----------------
eax = 53
ebx = 0
ecx = local port
edx = remote port
esi = remote ip address ( in internet byte order )
The socket number allocated is returned in eax.
A return value of 0xFFFFFFFF means no socket could be opened.
Open a TCP socket
-----------------
eax = 53
ebx = 5
ecx = local port
edx = remote port
esi = remote ip address ( in internet byte order )
edi = mode : SOCKET_PASSIVE or SOCKET_ACTIVE ( defined in stack.inc )
The socket number allocated is returned in eax.
A return value of 0xFFFFFFFF means no socket could be opened.
Close a socket (UDP Only )
--------------------------
eax = 53
ebx = 1
ecx = socket number
On return, eax holds 0 for OK, or 0xFFFFFFFF for error.
Close a socket (TCP Only )
--------------------------
eax = 53
ebx = 8
ecx = socket number
On return, eax holds 0 for OK, or 0xFFFFFFFF for error.
Poll socket
-----------
eax = 53
ebx = 2
ecx = socket number
On return, eax holds the number of bytes in the receive buffer.
Read socket data
----------------
eax = 53
ebx = 3
ecx = socket number
On return, eax holds the number of bytes remaining, bl holds a data byte.
Write to socket ( UDP only )
----------------------------
eax = 53
ebx = 4
ecx = socket number
edx = number of bytes to write
esi = pointer to data ( in application space )
On return, eax holds 0 for OK, or 0xFFFFFFFF for error.
Return socket status ( TCP only )
---------------------------------
eax = 53
ebx = 6
ecx = socket number
On return, eax holds the sockets TCP status.
This function can be used to determine when a socket has actually connected
to another socket - data cannot be written to a socket until the connection
is established (TCB_ESTABLISHED). The states a socket can be in are defined
in stack.inc as TCB_
Write to socket ( TCP only )
----------------------------
eax = 53
ebx = 7
ecx = socket number
edx = number of bytes to write
esi = pointer to data ( in application space )
On return, eax holds 0 for OK, or 0xFFFFFFFF for error.
Check port number
-----------------
eax = 53
ebx = 9
ecx = port number
This function is used to determine if a port number
is in use by any sockets as a local port number. Local
port numbers are normally unique.
On return, eax is 1 for port number not in use, 0 otherwise.
Opening a TCP socket in Kolibri
===============================
There are two ways to open a socket - Passive or Active.
In a Passive connection your application 'listens' for incoming
requests from remote applications. Typically this will be done when
you are implementing a server application that allows any other
application to connect to it. You would specify a 'known' local
port number, such as 80 for a web server. You would leave the
remote IP and remote port number as 0, which indicates any
remote application may connect.
Once the socket has been opened you would wait for an incoming
connection before doing anything. This can be by either checking
the socket status for TCB_ESTABLISHED, or waiting for data in the
receive buffer.
In an Active connection, you are making a connection to a specified
remote port. The remote IP and remote port parameters must be filled
in with non-zero values ( otherwise, what are you connecting to? ).
You also specify a unique local port number so the remote application
can uniquely identify you - after all, there may be several applications
on your machine connected to the same remote host. See below for finding
a unique port number.
How to find an unused local port number
=======================================
Typically when you are creating an active connection to a remote
socket you will want to choose a unique local port number. Local
port numbers normally start from 1000; The following code may
be used to obtain an unused port number prior to making the
open socket call.
mov ecx, 1000 ; local port starting at 1000
getlp:
inc ecx
push ecx
mov eax, 53
mov ebx, 9
int 0x40
pop ecx
cmp eax, 0 ; is this local port in use?
jz getlp ; yes - so try next
; ecx contains a free local port number
Writing data to a socket
========================
There are two functions available depending on whether the socket
was opened for TCP or UDP protocol; The call parameters are the
same however. When the socket is being opened for TCP, use the
status function to poll for a connection - data cannot be written
to a socket until another socket has connected to it, and the
state of the socket is TCB_ESTABLISHED.
When you write data, the call results in a single IP packet being
created and transmitted. Thus the user application is responsible for
the size of transmitted packets. Keep the packet sizes under 768 bytes.
If you are writing a terminal program like telnet, you may want to send
a packet for each keystroke ( inefficient ) or use a timer to send data
periodically ( say, every second ).
Reading data from a socket
==========================
There is one function to read data from a sockets receive buffer. This
function retrieves one byte at a time. You can use the poll function to
test the receive buffer for data.
Closing a socket
================
Simply call the appropriate function - there is one for TCP, and another
for UDP. When closing a TCP socket, don't forget that the other end
may continue to send data, so the socket may remain active for a
few seconds after your call.
If you have any questions or have suggestions for improving this
document please contact me at mikeh@oceanfree.net.

View File

@ -0,0 +1,104 @@
Vertical Refresh Rater
Version 2.0
Copyright (C) 2003, Trans
Text Version 1.1 (02.08.03)
Win text (cp1251). (DOS codepage text - see down.)
-------------------------------------------------------------------------------
Contents:
1. Why it need?
2. Installation.
3. Using.
4. FAQ.
5. Support.
1. Why it need?
---------------------
The problem of "60 Hz" is falling stand before of users of MeOS in modern condisions.
As a rule, most modern computers consist of 17" monitor (all written later is not actual
for owners of LCD monitors). If on 14" or 15" monitors the problem of "60 Hz" not a
main, but with 17" monitor it's a most pantfull. And with more size monitors I have no
words for discusion: it's a slade-show. Of couse, all of the upper correlated with
standart interface of VESA. As for VESA 3.0 - yes, interface have more rich features,
but it have no possiblity of change videomode in protect mode (the Virtual86 not realized
in MeOS !!!!!).
The MeOS not known as a detected devices on boot, it setting of standard VESA videomode
with 60 Hz vertical refrash rate !
This programm is a FreeWare. And distribute "AS IS ...". Author not
carreing responsibility for probable damage :) .
!!!!!_Warning_!!!!!:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! On this time programm have a EXPERIMENTAL status (!). And this reason you have a !
! chance destroy own device (monitor). Espesialy this taking attantionall users with !
! monitor without of rate protection. !
! If you decide using this util I have a suggestion: fill of information form and !
! send me. !
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2. Installation.
-----------------
Extract file VRR (it's ordinary executed MeOS file) from archive and situated it on
C:\ root or MeOS floppy. In main, VRR may situated on any directory (you must have
possibility run this file under MeOS).
3. Using.
----------
The VRR is a standard executed file of Menuet Operation System. You may send on
execute this file by SYSTREE or MASH.
After redraw of programm window will be present of current vertical refrash rate
and table with possibiling videoregimes. It's sorrably, table have VERY small
videomode (the programm is experimental).
Change of videomode
~~~~~~~~~~~~~~~~~~~~~
You may select interesting videomode using _ONLY_ numerical keys: 1,2,3,4 and 5.
In a first step you must select resolution of videoregime. In a second step - need
select of vertical refresh rate. All changes are indicated on screen in a the
programm window. After select videomode, to set mode you must press "Enter" or
button "Ok". Notification: in this time all executing MeOS programs will be
killing. It this needed for minimize artefacts of the screen. After change videomode
you have a two way. First way: you can not any doing and after 13 seconds waiting
return last videomode. Second way: press two-three time any key or some time mouse
click on artefacts of VRR (or this plase) and fixing selected mode. Also you have
possibility modification of horizontal screen size by button "Left"\"Right" or keys
"+\-". For correcting your select you may use button "Cancel".
Also in programm realized return at initial videomode with 60 Hz vertical refresh
by button "Default". And you may return in last videomode by button "Return" or
key "r"
Note:
~~~~~~
In this time programm may change vertical refresh rate _ONLY_ by lowing screen
resolution, because this method will be using at most part videocard
(VGA, SVGA or modern)
Example:
If you have videomode 1024x768x60Hz and if you want select 800x600x95Hz, you must
press key "3" and key "1". After that key "Enter" or button "Ok". And after redraw
screen two time click on last program window position. If need using button
"Left\Right" for correcting horizontal size.
4. FAQ.
----------
5. Supports.
----------------
All questions, notes and wishs you may send to author by following e-mail:
transafe@rambler.ru
transafe@chat.ru
trans397@yahoo.com
Using with enjoy!
Trans.

View File

@ -0,0 +1,68 @@
filename equ '%EXENAME%'
virtual at 0
file filename:3Ch,4
load pehea dword from 0
file filename:pehea,0F8h+28h*3
load NumberOfSections word from 4+6
load SizeOfOptionalHeader word from 4+14h
if NumberOfSections<>3
error Expected three sections, .text, .bss and .reloc
end if
if SizeOfOptionalHeader<>0E0h
error Nonstandard PE header
end if
load RelocsRVA dword from 4+0A0h
load RelocsSize dword from 4+0A4h
load ImageBase dword from 4+34h
load TextRVA dword from 4+0F8h+0Ch
load TextSize dword from 4+0F8h+8
load TextOffs dword from 4+0F8h+14h
load BSSSize dword from 4+0F8h+28h+10h
load RelocRVA dword from 4+0F8h+28h*2+0Ch
load RelocOffs dword from 4+0F8h+28h*2+14h
if BSSSize
error Second section expected to be .bss
end if
if RelocRVA<>RelocsRVA
error Third section expected to be .reloc
end if
;file 'test.exe':pehea+0F8h,28h
;load physofs dword from 4+14h
;load mem dword from 4+8
;file 'test.exe':physofs+16,4
;load sz dword from $-4
end virtual
file filename:TextOffs,TextSize
while RelocsSize>8
virtual at 0
file filename:RelocOffs,8
load CurRelocPage dword from 0
load CurRelocChunkSize dword from 4
end virtual
RelocsSize=RelocsSize-CurRelocChunkSize
CurRelocChunkSize = CurRelocChunkSize-8
RelocOffs=RelocOffs+8
while CurRelocChunkSize
virtual at 0
file filename:RelocOffs,2
RelocOffs=RelocOffs+2
CurRelocChunkSize=CurRelocChunkSize-2
load s word from 0
end virtual
CurRelocType = s shr 12
RelocItem = CurRelocPage + (s and 0xFFF)
if CurRelocType=0
else if CurRelocType=3
load z dword from RelocItem-TextRVA
store dword z-(TextRVA+ImageBase) at RelocItem-TextRVA
else
error Unexpected relocation type
end if
end while
end while
store dword TextSize at 10h
store dword RelocRVA-TextRVA at 14h

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
data/Vortex86MX-eng/hdread Normal file

Binary file not shown.

BIN
data/Vortex86MX-eng/htmlv Normal file

Binary file not shown.

View File

@ -0,0 +1,27 @@
AA-FASM -010-/SYS/DEVELOP/FASM - *
AB-TINYPAD -009-/SYS/TINYPAD - *
BA-EOLITE -002-/SYS/File Managers/EOLITE - *
CA-SHELL -020-/SYS/SHELL - *
BB-KFAR -024-/SYS/File Managers/KFAR - *
AC-RDSAVE -017-/SYS/RDSAVE - *
BC-CALC -004-/SYS/CALC - *
CB-KFM -005-/SYS/File Managers/KFM - *
JA-VRR -007-/SYS/VRR - *
II-C4 -003-/SYS/GAMES/C4 - *
JI-MINE -014-/SYS/GAMES/MINE - *
IH-TETRIS -018-/SYS/GAMES/TETRIS - *
JH-MBLOCKS -011-/SYS/GAMES/MBLOCKS - *
HI-PONG -012-/SYS/GAMES/PONG3 - *
GI-15 -000-/SYS/GAMES/15 - *
HH-LIFE2 -013-/SYS/DEMOS/LIFE2 - *
JB-ANIMAGE -015-/SYS/MEDIA/ANIMAGE - *
IA-BOARD -019-/SYS/DEVELOP/BOARD - *
JC-DOCPACK -008-/SYS/DOCPAK - *
HA-MTDBG -025-/SYS/DEVELOP/MTDBG - *
AH-PIPES -026-/SYS/GAMES/PIPES - *
AI-SUDOKU -030-/SYS/GAMES/SUDOKU - *
BI-ARC-II -012-/SYS/GAMES/ARCANII - *
BH-XONIX -021-/SYS/GAMES/XONIX - *
GH-CHECKERS-001-/SYS/GAMES/CHECKERS - *
CI-KOSILKA -023-/SYS/GAMES/KOSILKA - *
CH-GOMOKU -029-/SYS/GAMES/GOMOKU - *

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<title>KolibriOS web server - default message</title>
</head>
<body>
<h1>Welcome to KolibriOS server</h1>
<p>
If you can read this with an external html-browser then Kolibri
networking is correctly set up.
<br /><br />This file: /rd/1/index.htm
</p>
<ul>
<li><a href="/TinyStat">TinyStat</a></li>
<li><a href="/TinyBoard">TinyBoard</a></li>
</ul>
</body>
</html>

BIN
data/Vortex86MX-eng/kerpack Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
lang fix en

View File

@ -0,0 +1,28 @@
[start]
startlng = 1
[comkey]
ccomkey1 = 1
ccomkey2 = 4
ccomkey3 = 7
[altkey]
altkey1 = 1
altkey2 = 4
altkey3 = 7
altkey4 = 3
altkey5 = 5
altkey6 = 6
altkey7 = 2
altkey8 = 0
altkey9 = 0
altkey0 = 0
[langs]
1 = En
2 = Fi
3 = Ge
4 = Ru
5 = Fr
6 = Et
7 = Ua

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,177 @@
#0 **** MAIN ****
Games > /@1
Demos > /@4
Graphics > /@6
Sound and music > /@7
Development > /@8
System > /@10
Data processing > /@14
Network > /@15
Other > /@18
Help /rd/1/docpak
Run application /rd/1/run
Shutdown /rd/1/end
#1 **** GAMES ****
Logical games > /@2
Arcades > /@3
Spectrum emulator /rd/1/e80
Memory Blocks /rd/1/games/mblocks
FreeCell /rd/1/games/freecell
Pipes /rd/1/games/pipes
Kosilka /rd/1/games/kosilka
RockeT ForceS /rd/1/games/rforces
Find Numbers /rd/1/games/FindNumbers
#2 **** LOGICAL GAMES ****
C4 /rd/1/games/c4
15 /rd/1/games/15
Mine /rd/1/games/mine
Just Clicks /rd/1/games/clicks
Checkers /rd/1/games/checkers
SQ_GAME /rd/1/games/sq_game
Color Lines /rd/1/games/lines
Lights /rd/1/games/lights
Criss-Cross /rd/1/games/kox
Bulls and cows /rd/1/games/bnc
MegaMaze /rd/1/games/megamaze
Sea Fight /rd/1/games/sw
Sudoku /rd/1/games/sudoku
Go-moku /rd/1/games/gomoku
Reversi /rd/1/games/reversi
#3 **** ARCADES ****
Tetris /rd/1/games/tetris
Pong /rd/1/games/pong
New Pong /rd/1/games/pong3
Red Square /rd/1/games/rsquare
XONIX /rd/1/games/xonix
ArcanII /rd/1/games/arcanii
Phenix /rd/1/games/phenix
Snake /rd/1/games/snake
#4 **** DEMOS ****
3D > /@5
Fire /rd/1/demos/fire
Circle /rd/1/demos/circle
Fractal /rd/1/demos/tinyfrac
Color demo /rd/1/demos/colorref
Eyes /rd/1/demos/eyes
Tube /rd/1/demos/tube
Plasma /rd/1/demos/plasma
Moveback /rd/1/demos/movback
Life /rd/1/demos/life2
TranTest /rd/1/demos/trantest
WEB /rd/1/demos/web
FireWork /rd/1/demos/firework
UnvWater /rd/1/demos/unvwater
#5 **** 3D demos ****
ScreenSaver /rd/1/3d/crownscr
3D-cube /rd/1/3d/3dcube2
3D-labyrinth /rd/1/3d/free3d04
3D-textured cube /rd/1/3d/3dtcub10
3DSHeart /rd/1/3d/3dsheart
View3DS /rd/1/3d/view3ds
CubeLine /rd/1/3d/cubeline
3D-textured cube 2 /rd/1/3d/cubetext
Gears /rd/1/3d/gears
FlatWave /rd/1/3d/flatwav
3D-spiral /rd/1/3d/3dspiral
#6 **** GRAPHICS ****
Image viewer /rd/1/media/kiv
Animage /rd/1/media/animage
#7 **** AUDIO ****
MidAMP /rd/1/media/midamp
CD player /rd/1/media/cdp
#8 **** PROGRAMMING ****
Examples > /@9
Tools > /@20
#9 **** EXAMPLES ****
Threads /rd/1/develop/thread
IPC /rd/1/develop/ipc
Color slider /rd/1/demos/cslide
Console example 1 /rd/1/develop/testcon2
Console example 2 /rd/1/develop/test_gets
Message Boxes example /rd/1/demos/use_mb
#10 **** SYSTEM ****
Settings > /@11
System sensors > /@12
Work with files > /@13
Testing > /@19
Accessibility opt. > /@21
Debug board /rd/1/develop/board
#11 **** SETTINGS ****
Devices /rd/1/setup
Background generator /rd/1/pic4
Colors & Skin /rd/1/desktop
Panel /rd/1/spanel
Icons manager /rd/1/icon
VRR /rd/1/vrr
MyKey /rd/1/mykey
Video mode for ATI /rd/1/vmode
#12 **** SYSTEM SENSORS ****
Process manager /rd/1/cpu
PCI devices /rd/1/pcidev
Test graphics speed /rd/1/mgb
CPUID /rd/1/cpuid
Ghost Monitor /rd/1/gmon
K. Bus disconnected /rd/1/kbd
HDD informer /rd/1/hdd_info
Read HDD /rd/1/hdread
#13 **** WORK WITH FILES ****
KFAR /rd/1/File Managers/kfar
KFM /rd/1/File Managers/kfm
Eolite /rd/1/File Managers/Eolite
SHELL console /rd/1/shell
SysXTree /rd/1/sysxtree
Save RD image /rd/1/rdsave
#14 **** DATA PROCESSING ****
Calculator /rd/1/calc
TinyPad /rd/1/tinypad
Table Processor /rd/1/table
Graph builder /rd/1/graph
Hex-Editor /rd/1/develop/heed
#15 **** NET ****
Servers > /@16
Clients > /@17
Configuration /rd/1/network/stackcfg
Zero-Config /rd/1/network/zeroconf
Network status /rd/1/network/ethstat
ARP status /rd/1/network/arpstat
#16 **** SERVERS ****
SMTPS /rd/1/network/smtps
HTTPS /rd/1/network/https
FTPS /rd/1/network/ftps
#17 **** CLIENTS ****
TFTP client /rd/1/network/tftpc
Internet-chess /rd/1/network/chess
Simple HTTP client /rd/1/network/httpc
HTML+HTTP viewer /rd/1/htmlv
NNTP-NewsGroups /rd/1/network/nntpc
TELNET /rd/1/network/telnet
POP - MAIL /rd/1/network/popc
IRC client /rd/1/network/airc
YAHOO messenger (demo) /rd/1/network/ym
JMail /rd/1/network/jmail
VNC client /rd/1/network/vncclient
DNS resolver /rd/1/network/nslookup
#18 **** OTHER ****
Analogue clock /rd/1/demos/aclock
Binary clock /rd/1/demos/bcdclk
Timer /rd/1/demos/timer
ScrShoot /rd/1/scrshoot
Calendar /rd/1/calendar
BGI Font demo /rd/1/fonts/bgitest
RTF reader /rd/1/rtfread
#19 **** SYSTEM TESTS ****
Protection test /rd/1/test
Monitor test /rd/1/disptest
#20 **** PROGRAMMING TOOLS ****
Archiver KPack /rd/1/kpack
Flat Assembler /rd/1/develop/fasm
ASCII-codes /rd/1/develop/keyascii
SCAN-codes /rd/1/develop/scancode
Hex2Dec2Bin /rd/1/develop/h2d2b
Debug Board /rd/1/develop/board
Debugger /rd/1/develop/mtdbg
#21 **** SYSTEM SPECIAL ****
Screen magnifier /rd/1/magnify
Screen keyboard /rd/1/zkey
Character table /rd/1/ASCIIVju
##

Binary file not shown.

View File

@ -0,0 +1,19 @@
[ipconfig]
; type should be static or zeroconf
; zeroconf means the service first tries to contact a DHCP server
; If dhcp is not available, it switches to link-local
type = zeroconf
ip = 10.0.2.15
gateway = 10.0.2.2
dns = 10.0.2.2
subnet = 255.255.255.0
[proxy]
; If Internet connection requires HTTP proxy, set it here
; and uncomment following lines:
;proxy = <set your proxy IP-addr or domain name here>
;port = <set your proxy port here>
; If proxy requires authentification, uncomment following lines too
; (otherwise, leave them commented):
;user = <set username here>
;password= <set password here>

View File

@ -0,0 +1 @@
0000;0000;0001;0001;0001;0001;0100;0001;0001;0001;0001;0001;x

Binary file not shown.

BIN
data/Vortex86MX-eng/vmode Normal file

Binary file not shown.