gifview, jpegview, trantest, calc, menu, end - small fixes

icon2.lst renamed to icons.dat (it will be easer for new users I hope...)
airc with cp1251 support from mike.dld
kbd with boot-parameter to automatic enabling bus disconnect where it possible

git-svn-id: svn://kolibrios.org@195 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
heavyiron 2006-10-26 14:43:39 +00:00
parent ef2a2e0e6a
commit ae5e114234
21 changed files with 1190 additions and 274 deletions

View File

@ -29,7 +29,7 @@ red:
still:
scevent red,key,button
fps 290,8,cl_White,cl_Black
fps 250,8,cl_White,cl_Black
main_loop:
random SCREEN_X,eax
@ -85,9 +85,9 @@ draw_window:
int 0x40
xor eax,eax ;Draw window
mov ebx,100*65536+(SCREEN_X+19) ;x start*65536+x size
mov ecx,100*65536+(SCREEN_Y+51) ;y start*65536+y size
mov edx,0x33000000 ;0x33 use skinned window
mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size
mov ecx,100*65536+(SCREEN_Y+26) ;y start*65536+y size
mov edx,0x13000000 ;0x33 use skinned window
mov edi,header
int 0x40

View File

@ -1,4 +1,5 @@
@erase lang.inc
@echo lang fix en >lang.inc
@fasm gifview.asm gifview
@erase lang.inc
@pause

View File

@ -1,4 +1,5 @@
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm gifview.asm gifview
@erase lang.inc
@pause

View File

@ -8,11 +8,12 @@
;
; COMPILE WITH FASM
WND_COLOR equ 0x02aabbcc
appname equ 'GIF VIEWER'
; input line dimensions
INP_X equ 10 shl 16+680
INP_Y equ 25 shl 16+16
INP_XY equ 15 shl 16+30
INP_X equ 5 shl 16+680
INP_Y equ 5 shl 16+16
INP_XY equ 10 shl 16+10
use32
@ -29,7 +30,6 @@ use32
include 'lang.inc'
include 'macros.inc' ; decrease code size (optional)
;include '/hd/1/meos/debug.inc'
include 'debug.inc'
COLOR_ORDER equ MENUETOS
@ -182,7 +182,7 @@ draw_input:
push edi
cmp [entered],0
jne highlight
mov esi,WND_COLOR
mov esi,0x00aabbcc
jmp di_draw
highlight:
mov esi,0xe0e0e0
@ -193,7 +193,7 @@ draw_input:
mov edx,2
int 0x40
mov eax,4
mov ecx,0x00107a30 ; èà¨äâ 1 ¨ 梥â ( 0xF0RRGGBB )
mov ecx,0x00107a30
mov ebx,INP_XY
mov edx,fn_input
mov esi,[inp_pos]
@ -207,6 +207,12 @@ draw_input:
draw_window:
mov eax,48
mov ebx,3
mov ecx,sc
mov edx,sizeof.system_colors
int 0x40
mov eax,12
mov ebx,1
int 0x40
@ -214,24 +220,9 @@ draw_window:
mov eax,0
mov ebx,50*65536+700
mov ecx,50*65536+500
mov edx,WND_COLOR
mov esi,0x805080d0
mov edi,0x005080d0
int 0x40
mov eax,4
mov ebx,8*65536+8
mov ecx,0x10ddeeff
mov edx,zagolovok
mov esi,zag_konets-zagolovok
int 0x40
mov eax,8
mov ebx,(700-19)*65536+12
mov ecx,5*65536+12
mov edx,1
mov esi,0x6688dd
mov edx,[sc.work]
or edx,0x33000000
mov edi,header
int 0x40
call draw_input
@ -266,7 +257,7 @@ draw_subimage:
movzx edx,[gif_inf.Left]
shl edx,16
add edx,eax
add edx,10 shl 16 +45
add edx,5 shl 16 +25
mov eax,7
int 0x40
.enddraw:
@ -274,15 +265,7 @@ draw_subimage:
; ‡¤¥áì ­ å®¤ïâáï ¤ ­­ë¥ ¯à®£à ¬¬ë:
; ¨­â¥àä¥©á ¯à®£à ¬¬ë ¤¢ãï§ëç­ë© - § ¤ ©â¥ ï§ëª ¢ macros.inc
zagolovok: ; áâப  § £®«®¢ª 
if lang eq ru
db '<27><>ŽŒŽ<C5BD> GIF'
else
db 'GIF VIEWER'
end if
zag_konets: ; ¨ ¥ñ ª®­¥æ
header db appname,0 ; áâப  § £®«®¢ª 
inp_pos dd inp_end-fn_input
fn_input:
@ -309,6 +292,7 @@ filename:
rb 257
;filename_len dd 0
entered rd 1
sc system_colors
imgcount rd 1
img_index rd 1

View File

@ -98,8 +98,8 @@ put_image:
cmp [winys],bp
jc .l1
add eax,5 ; offset for boarder
add ebx,20 ; offset for title bar
add eax,2 ; offset for boarder
add ebx,2 ; offset for title bar
push ax ; pox
push bx ; pos
push cx ; size
@ -235,6 +235,12 @@ put_chunk_to_bgr:
draw_window:
mov eax,48
mov ebx,3
mov ecx,sc
mov edx,sizeof.system_colors
int 0x40
mov eax,12
mov ebx,1
int 0x40
@ -273,39 +279,26 @@ dw_002:
mov cx, [winys]
xor eax,eax ; DRAW WINDOW
mov edx,[wcolor]
add edx,0x13000000
mov edx,[sc.work]
or edx,0x33000000
mov edi,header ; WINDOW LABEL
int 0x40
; draw status bar
mov eax, 13
movzx ebx, word [winxs]
sub ebx, 5
add ebx, 4*65536
mov eax,8 ; BUTTON 2: slideshow
mov ebx,57
mov cx, [winys]
sub ecx, 19
shl ecx, 16
add ecx, 3
mov edx, 0x00557799
int 0x40
mov eax,8 ; BUTTON 2: filename
mov ebx,4*65536+55
mov cx, [winys]
sub cx, 16
sub cx, 39
shl ecx, 16
add ecx, 12
mov esi, 0x00557799
mov esi, [sc.work_button]
mov edx,2
int 0x40
mov eax,4 ; Button text
movzx ebx, word [winys]
sub ebx, 13
add ebx, 6*65536
mov ecx,0x00ffffff
add ebx, 3 shl 16 - 36
mov ecx,[sc.work_button_text]
mov edx,setname
mov esi,setnamelen-setname
int 0x40
@ -313,24 +306,24 @@ dw_002:
mov eax,8 ; BUTTON 3: set as background
mov bx, [winxs]
sub bx, 60
sub bx, 65
shl ebx, 16
mov bx,55
mov cx, [winys]
sub cx, 16
sub cx, 39
shl ecx, 16
add ecx, 12
mov esi, 0x00557799
mov esi, [sc.work_button]
mov edx,3
int 0x40
mov eax,4 ; Button text
movzx ebx, word [winxs]
sub ebx, 60
sub ebx, 63
shl ebx,16
mov bx, word [winys]
sub bx,13
mov ecx,0x00ffffff
sub bx,36
mov ecx,[sc.work_button_text]
mov edx,setbgr
mov esi,setbgrlen-setbgr
int 0x40
@ -391,13 +384,12 @@ load_image:
mov eax,13 ; clear picture area
movzx ebx, word [winxs]
sub ebx, 7
add ebx, 4 * 65536
add ebx, 1 shl 16 -10
movzx ecx, word [winys]
sub ecx, 39
add ecx, 20 * 65536
sub ecx, 40
add ecx, 1 shl 16
mov edx,0
mov edx,[sc.work]
int 0x40
mov ebp,[jpeg_st]
test ebp,ebp
@ -410,10 +402,9 @@ print_strings:
pusha
mov eax,13 ; clear text area
movzx ebx, word [winxs]
sub ebx, 64+58
add ebx, 60*65536
add ebx, 59 shl 16 -125
mov cx, [winys]
sub cx, 16
sub cx, 39
shl ecx, 16
add ecx, 12
mov edx,0xffffff
@ -421,8 +412,7 @@ print_strings:
mov eax,4 ;
movzx ebx, word [winys]
sub ebx, 14
add ebx, 60*65536
add ebx, 61 shl 16 - 37
mov ecx,0x000000
mov edx,name_string
mov esi,60
@ -529,8 +519,6 @@ winxs dw 0
winys dw 0
jpeg_st dd 0
file_dir dd 0
tcolor dd 0x000000
btcolor dd 0x224466+0x808080
name_string: db '/rd/1/jpegview.jpg',0
rb 256
.end:
@ -552,6 +540,6 @@ iniciomemoria:
fin:
I_END:
sc system_colors
fileattr: rb 40
dirinfo: rb 32+304

View File

@ -9,7 +9,7 @@
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
version equ '0.3'
version equ '0.4'
use32
@ -22,16 +22,17 @@ use32
dd 0x100000 ; required amount of memory
dd 0x100000
dd 0,0
include "lang.inc"
include "macros.inc"
;include "macros.inc"
irc_server_ip db 192,168,1,1
irc_server_ip db 83,149,74,246 ;server: kolibrios.org
user_nick dd 4 ; length
db 'airc ' ; string
user_nick dd 12 ; length
db 'kolibri_user ' ; string
user_real_name dd 8 ; length
db 'Joe User ' ; string
user_real_name dd 14 ; length
db 'KolibriOS User ' ; string
START: ; start of execution
@ -423,6 +424,19 @@ print_user_list:
start_user_list_at dd 0x0
recode_to_cp1251:
push esi edx
.loop:
lodsb
cmp al,0x80
jb @f
and eax,0x7F
mov al,[cp866_table+eax]
@@: mov [esi-1],al
dec edx
jnz .loop
pop edx esi
ret
send_data_to_server:
@ -501,6 +515,8 @@ send_data_to_server:
mov edx,[xpos]
inc edx
call recode_to_cp1251
mov eax, 53 ; write message
mov ebx, 7
mov ecx, [socket]
@ -1630,6 +1646,26 @@ print_text:
ret
cp1251_table:
db '?','?','?','?','?','?','?','?' , '?','?','?','?','?','?','?','?' ; 8
db '?','?','?','?','?','?','?','?' , '?','?','?','?','?','?','?','?' ; 9
db '?','?','?','?','?','?','?','?' , $F0,'?','?','?','?','?','?','?' ; A
db '?','?','?','?','?','?','?','?' , $F1,'?','?','?','?','?','?','?' ; B
db $80,$81,$82,$83,$84,$85,$86,$87 , $88,$89,$8A,$8B,$8C,$8D,$8E,$8F ; C
db $90,$91,$92,$93,$94,$95,$96,$97 , $98,$99,$9A,$9B,$9C,$9D,$9E,$9F ; D
db $A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7 , $A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF ; E
db $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF ; F
cp866_table:
db $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7 , $C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF ; 8
db $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7 , $D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF ; 9
db $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7 , $E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF ; A
db '?','?','?','?','?','?','?','?' , '?','?','?','?','?','?','?','?' ; B
db '?','?','?','?','?','?','?','?' , '?','?','?','?','?','?','?','?' ; C
db '?','?','?','?','?','?','?','?' , '?','?','?','?','?','?','?','?' ; D
db $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7 , $F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF ; E
db $A8,$B8,'?','?','?','?','?','?' , '?','?','?','?','?','?','?','?' ; F
print_character:
@ -1749,7 +1785,6 @@ draw_data:
ret
read_incoming_byte:
mov eax, 53
@ -1767,6 +1802,12 @@ read_incoming_byte:
mov ecx, [socket]
int 0x40
cmp bl,0x80
jb @f
and ebx,0x7F
mov bl,[cp1251_table+ebx]
@@:
mov ecx,0
no_more_data:
@ -1874,20 +1915,20 @@ main_button dd 0x6565cc
text:
db ' Real name : Joe User - change with eg /areal Jill User '
db ' Nick : AIRC - change with eg /anick Jill '
db ' Server : 192.168.1.1 - change with eg /aserv 192.168.1.24 '
db ' Real name : KolibriOS User - change with eg /areal Jill User '
db ' Nick : kolibri_user - change with eg /anick Jill '
db ' Server : 83.149.74.246 - change with eg /aserv 192.168.1.24 '
db ' '
db ' 1) Open socket 2) Send userinfo Close socket '
db ' '
db ' Commands after established connection: '
db ' '
db ' /join #ChannelName - eg /join #menuet '
db ' /part #ChannelName - eg /part #linux '
db ' /join #ChannelName - eg /join #general '
db ' /part #ChannelName - eg /part #windows '
db ' /query Nickname - eg /query Mary '
db ' /quit - Quit server and Close socket '
db 'x <- END MARKER, DONT DELETE '
db 'x' ; <- END MARKER, DONT DELETE
@ -2280,10 +2321,10 @@ action_header_red db 10,'*** ',0
action_header_short db 10,'* ',0
has_left_channel db ' left channel ',0
joins_channel db ' joined channel ',0
has_left_channel db ' has left ',0
joins_channel db ' has joined ',0
is_now_known_as db ' is now known as ',0
has_quit_irc db ' has quit irc',0
has_quit_irc db ' has quit IRC',0
sets_mode db ' sets mode ',0
kicked db ' kicked from ',0

View File

@ -1,4 +1,5 @@
@erase lang.inc
@echo lang fix en >lang.inc
@fasm airc.asm airc
@erase lang.inc
@pause

View File

@ -1,4 +1,5 @@
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm airc.asm airc
@erase lang.inc
@pause

View File

@ -662,16 +662,16 @@ draw_window:
int 0x40
xor eax,eax
mov ebx,200*65536+255
mov ecx,200*65536+180
mov ebx,200 shl 16+255
mov ecx,200 shl 16+180
mov edx,[sc.work]
or edx,0x33000000
mov edi,header
int 0x40
mov eax,8
mov ebx,19*65536+28
mov ecx,49*65536+18
mov ebx,19 shl 16+28
mov ecx,49 shl 16+18
mov edx,6
mov esi,[sc.work_button]
mov edi,7
@ -679,20 +679,20 @@ draw_window:
dec edi
jnz no_new_row
mov edi,7
mov ebx,19*65536+28
add ecx,20*65536
mov ebx,19 shl 16+28
add ecx,20 shl 16
no_new_row:
int 0x40
add ebx,30*65536
add ebx,30 shl 16
inc edx
cmp edx,39
jbe newbutton
mcall ,199*65536+28,49*65536+18,2 ; 'C'
mcall ,220*65536+8,7*65536+8,3 ; 'dec-bin-hex'
mcall ,199 shl 16+28,49 shl 16+18,2 ; 'C'
mcall ,220 shl 16+8,7 shl 16+8,3 ; 'dec-bin-hex'
mov eax,4
mov ebx,27*65536+54
mov ebx,27 shl 16+54
mov ecx,[sc.work_button_text]
mov edx,text
mov esi,33
@ -713,10 +713,10 @@ draw_window:
print_display:
pusha
mcall 13,18*65536+210,19*65536+13,0xffffff
mcall 13,18 shl 16+210,19 shl 16+13,0xffffff
mov eax,4
mov ebx,135*65536+7
mov ebx,135 shl 16+7
mov ecx,[sc.work_text]
or ecx,0x40000000
mov edx,calc
@ -724,7 +724,7 @@ print_display:
mov edi,[sc.work]
int 0x40
mov ebx,198*65536+8
mov ebx,198 shl 16+8
mov edx,[display_type]
shl edx,2
add edx,display_type_text
@ -734,7 +734,7 @@ print_display:
cmp [dsign],byte '+'
je positive
mov ebx,23*65536+22
mov ebx,23 shl 16+22
mov ecx,0x0
mov edx,dsign
mov esi,1
@ -746,22 +746,22 @@ positive:
cmp [decimal],0
je whole
mov ebx,180*65536+22
mov ebx,180 shl 16+22
mov ecx,0x0
mov edx,dot
mov esi,1
int 0x40
mov eax,47
mov ebx,10*65536
mov ebx,10 shl 16
mov ecx,[integer]
mov edx,120*65536+22
mov edx,120 shl 16+22
mov esi,0x0
int 0x40
mov ebx,6*65536
mov ebx,6 shl 16
mov ecx,[decimal]
mov edx,187*65536+22
mov edx,187 shl 16+22
mov esi,0x0
int 0x40
@ -769,7 +769,7 @@ positive:
ret
whole:
mov ebx,220*65536+22
mov ebx,220 shl 16+22
mov ecx,0x0
mov edx,dot
mov esi,1
@ -779,9 +779,9 @@ whole:
je null
mov eax,47
mov ebx,10*65536
mov ebx,10 shl 16
mov ecx,[integer]
mov edx,160*65536+22
mov edx,160 shl 16+22
mov esi,0x0
int 0x40
@ -795,9 +795,9 @@ whole:
je null
mov eax,47
mov ebx,256+8*65536
mov ebx,256+8 shl 16
mov ecx,[integer]
mov edx,173*65536+22
mov edx,173 shl 16+22
mov esi,0x0
int 0x40
@ -809,9 +809,9 @@ whole:
je null
mov eax,47
mov ebx,2*256+32*65536
mov ebx,2*256+32 shl 16
mov ecx,[integer]
mov edx,32*65536+22
mov edx,32 shl 16+22
mov esi,0x0
int 0x40
@ -820,9 +820,9 @@ whole:
null:
mov eax,47
mov ebx,1*65536
mov ebx,1 shl 16
mov ecx,0
mov edx,214*65536+22
mov edx,214 shl 16+22
mov esi,0x0
int 0x40

View File

@ -42,40 +42,42 @@ do_draw:
sub ecx,50*10000h - 100
mov eax,0 ; define and draw window
mov edx,[sc.work_button]
mov esi,edx ;[sc.work_button]
xor edi,edi
mov edx,[sc.work]
mov esi,edx
mov edi,edx
int 0x40
xor edx,edx
mov edx,0x444444
mov al,13
mcall ,14 shl 16+90,25 shl 16+27
mcall ,18 shl 16+90,29 shl 16+27
push ebx
mcall ,117 shl 16+90,
mcall ,121 shl 16+90,
xchg ebx,[esp]
mcall ,,59 shl 16+27
mcall ,,63 shl 16+27
pop ebx
mcall
xor edx,edx
mov al,8
inc edx
mcall ,15 shl 16+87,26 shl 16+24,,0xdd7700
mcall ,15 shl 16+87,26 shl 16+24,,0xbb0055
inc edx
mcall ,118 shl 16+87,,,0xbbbb ;cccc
mcall ,118 shl 16+87,,,0xaaaa ;cccc
inc edx
mcall ,15 shl 16+87,60 shl 16+24,,0xbb00
mcall ,15 shl 16+87,60 shl 16+24,,0x9900
inc edx
mcall ,118 shl 16+87,,,0xbbbbbb ;cccccc
mcall ,118 shl 16+87,,,0xaaaaaa ;cccccc
mov al,4 ; 0x00000004 = write text
mov ebx,75*65536+10
mov ecx,[sc.work_button_text] ; 8b window nro - RR GG BB color
mov ecx,[sc.work_text] ; 8b window nro - RR GG BB color
or ecx,0x10000000
mov edx,label1 ; pointer to text beginning
mov esi,label1_len ; text length
int 0x40
mov ecx,0x10ffffff
mov ecx,[sc.work_button_text] ; 8b window nro - RR GG BB color
or ecx,0x10000000
mov ebx,25*65536+30
mov edx,label2 ; pointer to text beginning
mov esi,label2_len ; text length

View File

@ -1,4 +1,5 @@
@erase lang.inc
@echo lang fix en >lang.inc
@fasm icon.asm icon
@erase lang.inc
@pause

View File

@ -1,4 +1,5 @@
@erase lang.inc
@echo lang fix ge >lang.inc
@fasm icon.asm icon
@erase lang.inc
@pause

View File

@ -1,4 +1,5 @@
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm icon.asm icon
@erase lang.inc
@pause

View File

@ -11,10 +11,8 @@ RAW_SIZE equ 350000
ICON_SIZE equ 32*32*3
GIF_SIZE equ 45000
REC_SIZE equ 80
ICON_LST equ '/RD/1/ICON2.LST'
;ICON_APP equ '/hd/1/me/icon2';
ICON_APP equ '/RD/1/ICON2'
;ICON_STRIP equ '/HD/1/ME/ICONSTRP.GIF'
ICONS_DAT equ '/RD/1/ICONS.DAT'
ICON_APP equ '/RD/1/ICON'
ICON_STRIP equ '/RD/1/ICONSTRP.GIF'
use32
@ -443,7 +441,7 @@ print_strings:
popa
ret
iconlst db ICON_LST,0
iconlst db ICONS_DAT,0
load_icon_list:

View File

@ -0,0 +1,14 @@
AA-Sysxtree-004-/RD/1/SYSXTREE - *
AB-CMD -023-/RD/1/CMD - *
AC-RDsave -001-/RD/1/RDSAVE - *
BB-Fasm -012-/RD/1/FASM - *
CA-Copy -008-/RD/1/copy2 - *
JA-VRR -009-/RD/1/VRR - *
IA-Board -022-/RD/1/BOARD - *
BA-KFAR -016-/RD/1/kfar - *
JB-Animage -018-/RD/1/ANIMAGE - *
CB-Tinypad -011-/RD/1/TINYPAD - *
IB-AC97 -002-/RD/1/AC97WAV - *
JC-Docpack -010-/RD/1/DOCPACK - *
BC-Calc -006-/RD/1/CALC - *
HA-MTDBG -029-/RD/1/MTDBG - *

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,2 @@
@fasm kbd.asm kbd
@pause

View File

@ -0,0 +1,569 @@
;
; Kolibri Bus Disconnect
; Test for bus disconnect
;
; Compile with FASM for Menuet
;
;
include 'macros.inc'
include 'lang.inc'
memsize = 1000h
org 0
PARAMS = memsize - 1024
appname equ 'Kolibri Bus Disconnect'
version equ ' 1.1 '
use32 ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image
dd memsize ; memory for app
dd memsize - 1024 ; esp
dd PARAMS , 0x0 ; I_Param , I_Icon
;---------------------------------------------------------------------
;--- <20>€—€Ž <20><>Žƒ<C5BD>€ŒŒ ----------------------------------------------
;---------------------------------------------------------------------
START:
cmp [PARAMS], byte 0
jne check_parameters
no_params:
call find_north_bridg
drawwindow:
mov eax,48
mov ebx,3
mov ecx,sc
mov edx,sizeof.system_colors
int 0x40
mov eax, 12
mov ebx, 1 ; start redraw
int 0x40
mov eax, 0 ; window
mov ebx, 100 shl 16 + 300
mov ecx, 100 shl 16 + 90
mov edx, [sc.work]
or edx, 0x13000000
mov edi, header
int 0x40
mov eax, 4
mov ebx, 17 shl 16 + 30
mov ecx, [sc.work_text]
mov edx, msg_nb
mov esi, 14
int 0x40
mov ebx, 105 shl 16 + 30
mov edx, [nb_name]
movzx esi, byte[edx]
inc edx
int 0x40
mov ebx, 17 shl 16 + 40
mov edx, msg_stat
mov esi, 8
int 0x40
mov ebx, 102 shl 16 + 50
mov edx, msg_divs
mov esi, 32
int 0x40
mov ebx, 17 shl 16 + 62
mov edx, msg_hdd
mov esi, 10
int 0x40
mov ebx, 17 shl 16 + 72
mov edx, msg_sgd
int 0x40
call get_divs
mov eax, 47
mov ebx, 0x30000
mov ecx, [val_hdd]
mov edx, 8
shl edx, cl
mov ecx, edx
mov edx, 80 shl 16 + 62
mov esi, [sc.work_text]
int 0x40
mov ecx, [val_sgd]
mov edx, 8
shl edx, cl
mov ecx, edx
mov edx, 80 shl 16 + 72
int 0x40
call get_bd_stat
mov ecx, [sc.work_text]
mov esi, 9
mov ebx, 105 shl 16 + 40
mov edx, msg_nf
mov al, [bd_stat]
test al, al
jz @f
mov edx, msg_dis
dec al
jz @f
mov edx, msg_en
@@: mov eax, 4
int 0x40
; ‘®§¤ ñ¬ ª­®¯ªã
mov ecx, 27 shl 16 + 20
mov eax, 8
mov ebx, 220 shl 16 + 70
mov esi, [sc.work_button]
mov edx, 2
int 0x40
; ˆ ¥éñ 14 ;)
mov edi, 7
mov ecx, 60 shl 16 + 10
mov eax, 8
mov ebx, 105 shl 16 + 25
mov edx, 3
@@: int 0x40
inc edx
add ebx, 27 shl 16
dec edi
jnz @b
add ecx, 12 shl 16
mov ebx, 105 shl 16 + 25
mov edi, 7
@@: int 0x40
inc edx
add ebx, 27 shl 16
dec edi
jnz @b
end_dr: mov eax, 12
mov ebx, 2 ; end redraw
int 0x40
; Wait for event ...
mov eax, 10
int 0x40
cmp al, 3
jne not_bt
mov eax, 17 ; get id
int 0x40
cmp ah, 1
jne no_exit
mov eax, -1 ; close this program
int 0x40
no_exit:
cmp ah, 2
jne no_ch_bt
mov dl, [bd_stat]
test dl, dl
jz drawwindow
xor eax, eax
dec dl
jnz @f
inc eax
@@: call set_bd_stat
jmp drawwindow
no_ch_bt:
cmp ah, 9
jg no_hdd_bt
sub ah, 3
movzx esi, ah
mov edi, [val_sgd]
call set_divs
jmp drawwindow
no_hdd_bt:
sub ah, 10
movzx edi, ah
mov esi, [val_hdd]
call set_divs
jmp drawwindow
not_bt: cmp al, 2
jne drawwindow
mov eax, 2 ; ¯®ª  ª« ¢  ­¥ ¯®¤¤¥à¦¨¢ ¥âáï - ç¨â ¥¬ ¨ § ¡ë¢ ¥¬
int 0x40
jmp drawwindow
;--------------------------------------------------------------------------
bus_num: db 2 ; <20>®¬¥à 設ë
devfn: db 255
bd_id: dd 0 ; ˆ¤¥­â¨ä¨ª â®à ãáâனá⢠
bd_stat: db 0 ; 0 - ­¥ ­ ©¤¥­, 1 - ¢ëª«î祭, 2 - ¢ª«î祭
nb_name dd nb_nf
bd_msk dd msk_i440
nb_nf db 9, 'Not found'
msk_i440 db 0
nb_i440 db 4, 'i440'
msk_nforce db 0x6D, 0x80, 0xE7, 0x06, 0 ; ­®¬¥à ॣ¨áâà , ¬ áª , ­®¬¥à ॣ¨áâà , ¬ áª , ... , 0
nb_nforce db 6, 'nForce'
msk_nforce2 db 0x6F, 0x10, 0
nb_nforce2 db 8, 'nForce 2'
msk_sis730 db 0x6B, 0x01, 0
nb_sis730 db 7, 'SiS 730'
nb_sis733 db 7, 'SiS 733'
msk_sis735 db 0x6A, 0x03, 0
nb_sis735 db 7, 'SiS 735'
nb_sis740 db 7, 'SiS 740'
nb_sis741 db 7, 'SiS 741'
nb_sis745 db 7, 'SiS 745'
msk_sis746 db 0x6C, 0x01, 0
nb_sis746 db 7, 'SiS 746'
nb_sis748 db 7, 'SiS 748'
msk_amd751 db 0x62, 0x06, 0
nb_amd751 db 7, 'AMD 751'
nb_amd751s db 8, 'AMD 751S'
nb_amd761 db 7, 'AMD 761'
msk_amd762 db 0x62, 0x02, 0x6A, 0x02, 0
nb_amd762 db 7, 'AMD 762'
msk_viakt133 db 0x52, 0x80, 0x70, 0x08, 0
nb_viakt133 db 30, 'VIA KT133(A)/KM133/KL133/KN133'
nb_viakx133 db 9, 'VIA KX133'
nb_viakle133 db 10, 'VIA KLE133'
msk_viakt266 db 0x92, 0x80, 0x95, 0x02, 0x70, 0x08, 0
nb_viakt266 db 18, 'VIA KT266(A)/KT333'
nb_viakm266 db 21, 'VIA KM266/KL266/KM333'
nb_vikn266 db 9, 'VIA KN266'
msk_viakt400 db 0xD2, 0x80, 0xD5, 0x02, 0x70, 0x08, 0
nb_viakt400 db 18, 'VIA KT400(A)/KT600'
nb_viakm400 db 9, 'VIA KM400'
msk_viakt880 db 0x82, 0x80, 0x85, 0x02, 0
nb_viakt880 db 9, 'VIA KT880'
bd_table: dd 0x70061022 ; AMD 751 ----
dd nb_amd751
dd msk_amd751
dd 0x70041022 ; AMD 751S
dd nb_amd751s
dd msk_amd751
dd 0x700E1022 ; AMD 761
dd nb_amd761
dd msk_amd751
dd 0x700C1022 ; AMD 762
dd nb_amd762
dd msk_amd762
dd 0x71908086 ; i440 ---
dd nb_i440
dd msk_i440
dd 0x01A410DE ; nForce ----
dd nb_nforce
dd msk_nforce
dd 0x01E010DE ; nForce 2
dd nb_nforce2
dd msk_nforce2
dd 0x07301039 ; SiS 730 ----
dd nb_sis730
dd msk_sis730
dd 0x07331039 ; SiS 733
dd nb_sis730
dd msk_sis730
dd 0x07351039 ; SiS 735
dd nb_sis735
dd msk_sis735
dd 0x07401039 ; SiS 740
dd nb_sis735
dd msk_sis735
dd 0x07411039 ; SiS 741
dd nb_sis735
dd msk_sis735
dd 0x07451039 ; SiS 745
dd nb_sis735
dd msk_sis735
dd 0x07461039 ; SiS 746
dd nb_sis746
dd msk_sis746
dd 0x07481039 ; SiS 748
dd nb_sis746
dd msk_sis746
dd 0x03051106 ; VIA KT133(A)/KM133/KL133/KN133 ----
dd nb_viakt133
dd msk_viakt133
dd 0x03911106 ; VIA KX133
dd nb_viakt133
dd msk_viakt133
dd 0x06911106 ; VIA KLE133
dd nb_viakt133
dd msk_viakt133
dd 0x30991106 ; VIA KT266(A)/KT333
dd nb_viakt266
dd msk_viakt266
dd 0x31161106 ; VIA KM266/KL266/KM333
dd nb_viakt266
dd msk_viakt266
dd 0x31561106 ; VIA KN266
dd nb_viakt266
dd msk_viakt266
dd 0x31891106 ; VIA KT400(A)/KT600
dd nb_viakt400
dd msk_viakt400
dd 0x32051106 ; VIA KM400
dd nb_viakm400
dd msk_viakt400
dd 0x22691106 ; VIA KT880
dd nb_viakt880
dd msk_viakt880
bd_table_end:
find_north_bridg:
mov bl, 6
xor cl, cl
nbus: mov bh, [bus_num]
ndevfn: mov ch, [devfn]
mov eax, 62
int 0x40
cmp eax, 0xffffffff
je bd_next
;---------
mov esi, bd_table_end - bd_table - 12
@@: cmp eax, [bd_table + esi]
je bd_found
test esi, esi
jz bd_next
sub esi, 12
jmp @b
;---------
bd_next:dec byte[devfn]
jns ndevfn
mov byte[devfn], 0
dec byte[bus_num]
jns nbus
ret
bd_found:
add esi, bd_table + 4
mov edi, nb_name
mov ecx, 2
rep movsd
mov [bd_id], eax
ret
;----------------------
;bd_stat: db 0 ; 0 - ­¥ ­ ©¤¥­, 1 - ¢ëª«î祭, 2 - ¢ª«î祭
get_bd_stat:
mov byte[bd_stat], 1
cld
mov esi, [bd_msk]
lodsw
test al, al
jnz @f
mov byte[bd_stat], 0
ret
@@: push eax
mov bh, [bus_num]
mov bl, 4
mov ch, [devfn]
mov cl, al
mov eax, 62
int 0x40
pop edx
and al, dh
jnz @f
lodsw
test al, al
jnz @b
ret
@@: mov byte[bd_stat], 2
ret
;----------------------
set_bd_stat:
cmp dword[bd_id], 0x01E010DE ; ᯥ樠«ì­® ¤«ï nForce2 400
je set_stat_nforce2
mov edi, eax
cld
mov esi, [bd_msk]
bd_ss_nxt:
lodsw
test al, al
jz bd_ss_end
mov dl, ah ; ¬ áª 
mov bh, [bus_num]
mov bl, 4
mov ch, [devfn]
mov cl, al
mov eax, 62
int 0x40
mov bl, 8
test edi, edi
jz @f
or al, dl
mov dl, al
mov eax, 62
int 0x40
jmp bd_ss_nxt
@@: not dl
and al, dl
mov dl, al
mov eax, 62
int 0x40
jmp bd_ss_nxt
bd_ss_end:
ret
;------- nForce 2 -----------
set_stat_nforce2:
; IN : eax = 0 - disable, !0 - enable
push eax
mov bh, [bus_num]
mov bl, 4
mov ch, [devfn]
mov cl, 0x6f
mov eax, 62
int 0x40
and al, 0x1F
mov dl, al
mov bl, 8
mov eax, 62
int 0x40
pop eax
test eax, eax
jz @f
or dl, 0x10
mov eax, 62
int 0x40
ret
@@: and dl, 0xef
mov eax, 62
int 0x40
ret
;--------------------------------------------------------------------------
; x8 x16 x32 x64 x128 x256 x512
div_hdd: db 0x23, 0x27, 0x2B, 0x2F, 0x63, 0x67, 0x6B ; Halt Disconnect Divisor
div_sgd: db 0x12, 0x52, 0x92, 0xD2, 0x12, 0x52, 0x92 ; Stop Grand Divisor
; low word of 0xC001001B MSR
; HDD\SGD 8 16 32 64 128 256 512
; 8 0x1223 0x5223 0x9223 0xD223 | 0x1223 0x5223 0x9223
; 16 0x1227 |
; 32 0x122B |
; 64 0x122F | 0x522F
; 128 0x1263 |
; 256 0x1267 & bin 18 is clear | & bin 18 is set
; 512 0x126B |
; ^^^^
; ||||_HDD
; ||_SGD
set_divs:
; IN : ESI - hdd (0 = x8, 1 = x16 ..)
; EDI - sgd (0 = x8, 1 = x16 ..)
mov eax, 68
mov ebx, 3
mov edx, 0xC001001b
int 0x40
mov al, [div_hdd + esi]
mov ah, [div_sgd + edi]
and eax, 0xFFFBFFFF
cmp edi, 3
jle @f
or eax, 0x40000
@@: mov edi, eax
mov esi, ebx
mov eax, 68
mov ebx, 4
int 0x40
ret
get_divs:
; OUT : val_hdd - hdd (0 = x8, 1 = x16 ..)
; val_sgd - sgd ...
mov eax, 68
mov ebx, 3
mov edx, 0xC001001b
int 0x40
mov ecx, 7
@@: cmp [div_hdd + ecx - 1], al
je @f
loop @b
@@: dec ecx
mov [val_hdd], ecx
mov ecx, 4
@@: cmp [div_sgd + ecx - 1], ah
je @f
loop @b
@@: dec ecx
test eax, 0x40000
jz @f
add ecx, 4
@@: mov [val_sgd], ecx
ret
;******************************************************************************
check_parameters:
cmp [PARAMS], dword "BOOT" ; received BOOT parameter -> goto handler
je boot_bd_enable
jmp no_params
;******************************************************************************
boot_bd_enable:
call find_north_bridg
call set_bd_stat
mcall -1
;******************************************************************************
;--------------------------------------------------------------------------
header db appname,version,0
msg_divs db ' x8 x16 x32 x64 x128 x256 x512'
msg_hdd db 'Hatl Disc.'
msg_sgd db 'Stop Grand'
msg_nb db 'North bridge :';14
msg_stat db 'Status :' ;8
msg_en db 'Enabled ' ;9
msg_dis db 'Disabled ' ;9
msg_nf db 'Not found' ;9
I_END:
sc system_colors
val_hdd: dd ?
val_sgd: dd ?

View File

@ -0,0 +1,266 @@
; new application structure
macro meos_app_start
{
use32
org 0x0
db 'MENUET01'
dd 0x01
dd __start
dd __end
dd __memory
dd __stack
if used __params & ~defined __params
dd __params
else
dd 0x0
end if
dd 0x0
}
MEOS_APP_START fix meos_app_start
macro code
{
__start:
}
CODE fix code
macro data
{
__data:
}
DATA fix data
macro udata
{
if used __params & ~defined __params
__params:
db 0
__end:
rb 255
else
__end:
end if
__udata:
}
UDATA fix udata
macro meos_app_end
{
align 32
rb 2048
__stack:
__memory:
}
MEOS_APP_END fix meos_app_end
; macro for defining multiline text data
struc mstr [sstring]
{
forward
local ssize
virtual at 0
db sstring
ssize = $
end virtual
dd ssize
db sstring
common
dd -1
}
; strings
macro sz name,[data] { ; from MFAR [mike.dld]
common
if used name
label name
end if
forward
if used name
db data
end if
common
if used name
.size = $-name
end if
}
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
common
if used name
label name
end if
forward
if (used name)&(lang eq lng)
db data
end if
common
if used name
.size = $-name
end if
}
; easy system call macro
macro mpack dest, hsrc, lsrc
{
if (hsrc eqtype 0) & (lsrc eqtype 0)
mov dest, (hsrc) shl 16 + lsrc
else
if (hsrc eqtype 0) & (~lsrc eqtype 0)
mov dest, (hsrc) shl 16
add dest, lsrc
else
mov dest, hsrc
shl dest, 16
add dest, lsrc
end if
end if
}
macro __mov reg,a { ; mike.dld
if ~a eq
mov reg,a
end if
}
macro mcall a,b,c,d,e,f { ; mike.dld
__mov eax,a
__mov ebx,b
__mov ecx,c
__mov edx,d
__mov esi,e
__mov edi,f
int 0x40
}
; language for programs
lang fix ru ; ru en fr ge fi
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
macro add arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
inc arg1
else
add arg1,arg2
end if
else
add arg1,arg2
end if
}
macro sub arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
dec arg1
else
sub arg1,arg2
end if
else
sub arg1,arg2
end if
}
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
xor arg1,arg1
inc arg1
else if (arg2) = -1
or arg1,-1
else if (arg2) > -128 & (arg2) < 128
push arg2
pop arg1
else
mov arg1,arg2
end if
else
mov arg1,arg2
end if
}
macro struct name
{
virtual at 0
name name
sizeof.#name = $ - name
end virtual
}
; structures used in MeOS
struc process_information
{
.cpu_usage dd ? ; +0
.window_stack_position dw ? ; +4
.window_stack_value dw ? ; +6
.not_used1 dw ? ; +8
.process_name rb 12 ; +10
.memory_start dd ? ; +22
.used_memory dd ? ; +26
.PID dd ? ; +30
.x_start dd ? ; +34
.y_start dd ? ; +38
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
}
struct process_information
struc system_colors
{
.frame dd ?
.grab dd ?
.grab_button dd ?
.grab_button_text dd ?
.grab_text dd ?
.work dd ?
.work_button dd ?
.work_button_text dd ?
.work_text dd ?
.work_graph dd ?
}
struct system_colors
; constants
; events
EV_IDLE = 0
EV_TIMER = 0
EV_REDRAW = 1
EV_KEY = 2
EV_BUTTON = 3
EV_EXIT = 4
EV_BACKGROUND = 5
EV_MOUSE = 6
EV_IPC = 7
EV_STACK = 8
; event mask bits for function 40
EVM_REDRAW = 1b
EVM_KEY = 10b
EVM_BUTTON = 100b
EVM_EXIT = 1000b
EVM_BACKGROUND = 10000b
EVM_MOUSE = 100000b
EVM_IPC = 1000000b
EVM_STACK = 10000000b

View File

@ -0,0 +1,45 @@
Kolibri Bus Disconnect
Автор : Михайлов Илья Андреевич aka Ghost
Версия : от 24/10/06
ОС : Kolibri
forum : meos.sysbin.com -> Программы -> GMon
mailto : ghost.nsk@mail.ru
Поддерживаемые чипсеты:
AMD 751
AMD 751S
AMD 761
AMD 762
NVIDIA nForce
NVIDIA nForce 2 (400)
SiS 735
SiS 740
SiS 741
SiS 745
SiS 730
SiS 733
SiS 746
SiS 748
VIA KT133(A)/KM133/KL133/KN133 *
VIA KX133
VIA KLE133
VIA KT266(A)/KT333
VIA KM266/KL266/KM333
VIA KN266
VIA KT400(A)/KT600
VIA KM400
VIA KT880
ПРИМЕЧАНИЕ: (Heavyiron, 24.10.2006)
Владельцы данных чипсетов могут (при желании) поместить
эту программу в автозагрузку с параметром boot. Для этого в
autorun.dat необходимо поместить,например, такую строку:
"/RD/1/KBD BOOT 20 # Enable Bus Disconnect for AMD K7 processors",
не забыв при этом увеличить количество запускаемых программ на одну
в самом начале файла autorun.dat.

View File

@ -468,11 +468,11 @@ draw_window:
shl ecx, 16
add ecx, BTN_HEIGHT-1
; edx = button identifier
mov esi, [sc.work_button]
mov esi, [sc.work]
inc dl
cmp [edi + cur_sel], dl
jne .nohighlight
add esi, 0x202020
add esi, 0x101010
.nohighlight:
or edx, 0x20000000
int 0x40
@ -497,7 +497,7 @@ draw_window:
dec ecx
jnz .findline
mov ecx, [sc.work_button_text]
mov ecx, [sc.work_text]
mov eax, 4
mov esi, 21
int 0x40