Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 204 → Rev 205

/programs/system/pic4/trunk/pic4.asm
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/pic4/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/pic4/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/pic4/trunk/macros.inc
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/sysmeter/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/sysmeter/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/sysmeter/trunk/sysmeter.asm
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/sysmeter/trunk/macros.inc
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/systrace/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/systrace/trunk/macros.inc
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/systrace/trunk/systrace.asm
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/systrace/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/ir/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/ir/trunk/macros.inc
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/ir/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/ir/trunk/ir.asm
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/cpuspeed/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/cpuspeed/trunk/macros.inc
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/cpuspeed/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/cpuspeed/trunk/cpuspeed.asm
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/system/board/trunk/board.asm
290,18 → 290,10
mov ebx,[xstart]
mov ecx,MAXSTRINGS*10+45 ; [y start] *65536 + [y size]
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl
or edx,0x03000000
or edx,0x13000000
mov edi,header ; WINDOW LABEL
int 0x40
 
; WINDOW LABEL
mov eax,4 ; function 4 : write text to window
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,[sc.grab_text] ; color of text RRGGBB
or ecx,0x10000000
mov edx,header ; pointer to text beginning
mov esi,header.len ; text length
int 0x40
 
mov ecx,4
mov esi,[sc.work]
mov ebx,316 shl 16+5*6
522,17 → 514,11
; 11,11 > 0,-1
; 5,11 > 0,-1
if lang eq ru
header:
db '„Ž‘Š€ Ž’‹€„Šˆ ˆ ‘ŽŽ™…ˆ‰'
.len = $ - header
header db '„Ž‘Š€ Ž’‹€„Šˆ ˆ ‘ŽŽ™…ˆ‰',0
else if lang eq en
header:
db 'GENERAL DEBUG & MESSAGE BOARD'
.len = $ - header
header db 'GENERAL DEBUG & MESSAGE BOARD',0
else
header:
db 'ALLGEMEINES DEBUG- & NACHRICHTENBOARD'
.len = $ - header
header db 'ALLGEMEINES DEBUG- & NACHRICHTENBOARD',0
end if
krnl_cnt dd 0
vmode dd 0
/programs/system/board/trunk/build_en.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm board.asm board
@erase lang.inc
@pause
/programs/system/board/trunk/build_ge.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix ge >lang.inc
@fasm board.asm board
@erase lang.inc
@pause
/programs/system/board/trunk/build_ru.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm board.asm board
@erase lang.inc
@pause
/programs/system/board/trunk/debug.inc
0,0 → 1,131
macro debug_print str
{
local ..string, ..label
 
jmp ..label
..string db str,0
..label:
 
pushf
pushad
mov edx,..string
call debug_outstr
popad
popf
}
 
dps fix debug_print
 
macro debug_print_dec arg
{
pushf
pushad
if ~arg eq eax
mov eax,arg
end if
call debug_outdec
popad
popf
}
 
dpd fix debug_print_dec
 
;---------------------------------
debug_outdec: ;(eax - num, edi-str)
push 10 ;2
pop ecx ;1
push -'0' ;2
.l0:
xor edx,edx ;2
div ecx ;2
push edx ;1
test eax,eax ;2
jnz .l0 ;2
.l1:
pop eax ;1
add al,'0' ;2
call debug_outchar ; stosb
jnz .l1 ;2
ret ;1
;---------------------------------
 
debug_outchar: ; al - char
pushf
pushad
mov cl,al
mov eax,63
mov ebx,1
int 0x40
popad
popf
ret
 
debug_outstr:
mov eax,63
mov ebx,1
@@:
mov cl,[edx]
test cl,cl
jz @f
int 40h
inc edx
jmp @b
@@:
ret
 
 
macro newline
{
dps <13,10>
}
 
macro print message
{
dps message
newline
}
 
macro pregs
{
dps "EAX: "
dpd eax
dps " EBX: "
dpd ebx
newline
dps "ECX: "
dpd ecx
dps " EDX: "
dpd edx
newline
}
 
macro debug_print_hex arg
{
pushf
pushad
if ~arg eq eax
mov eax, arg
end if
call debug_outhex
popad
popf
}
dph fix debug_print_hex
 
debug_outhex:
; eax - number
mov edx, 8
.new_char:
rol eax, 4
movzx ecx, al
and cl, 0x0f
mov cl, [__hexdigits + ecx]
pushad
mcall 63, 1
popad
dec edx
jnz .new_char
ret
 
__hexdigits:
db '0123456789ABCDEF'
/programs/system/board/trunk/macros.inc
143,10 → 143,6
 
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
178,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
222,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/calendar/trunk/build_en.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm calendar.asm calendar
@erase lang.inc
@pause
/programs/system/calendar/trunk/build_ge.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix de >lang.inc
@fasm calendar.asm calendar
@erase lang.inc
@pause
/programs/system/calendar/trunk/build_ru.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm calendar.asm calendar
@erase lang.inc
@pause
/programs/system/calendar/trunk/macros.inc
143,9 → 143,6
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
177,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
221,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/cpu/trunk/build_en.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm cpu.asm cpu
@erase lang.inc
@pause
/programs/system/cpu/trunk/build_ge.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix de >lang.inc
@fasm cpu.asm cpu
@erase lang.inc
@pause
/programs/system/cpu/trunk/cpu.asm
103,7 → 103,7
;buttons handlers
pgdn:
sub [list_start],display_processes
cmp [list_start],0
; cmp [list_start],0
jge still_end
mov [list_start],0
jmp still_end
114,7 → 114,7
jmp still_end
program_start:
mov eax,58
mov eax,70
mov ebx,file_start
int 0x40
jmp still_end
495,7 → 495,7
mov ebx,22*65536+35 ; draw info text with function 4
xor ecx,ecx
mov edx,text
mov esi,79
mov esi,text_len
mov eax,4
int 0x40
 
583,8 → 583,8
; DATA AREA
list_start dd 0
 
file_start: dd 16
dd 0,0,0,run_process_buffer
file_start: dd 7
dd 0,0,0,0
 
start_application: db '/RD/1/LAUNCHER',0
times 60 db 32
593,6 → 593,7
text:
db ' NAME/TERMINATE PID CPU-USAGE % '
db 'MEMORY START/USAGE W-STACK W-SIZE'
text_len = $-text
 
tbts: db 'PREV PAGE NEXT PAGE REBOOT SYSTEM'
tbte:
607,6 → 608,7
text:
db ' NAME/BEENDEN PID CPU-LAST % '
db 'SPEICHER START/NUTZUNG W-STACK W-SIZE'
text_len = $-text
 
tbts: db 'SEITE ZURUECK SEITE VOR REBOOT SYSTEM'
tbte:
630,7 → 632,5
curposy rd 1
index rd 1
tasklist rd display_processes
run_process_buffer:
process_info_buffer process_information
rb 4096-($-run_process_buffer) ;rest of run_process_buffer
U_END:
/programs/system/cpu/trunk/macros.inc
141,6 → 141,8
int 0x40
}
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
172,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
216,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/desktop/trunk/desktop.asm
15,7 → 15,7
dd START ; start address
dd I_END ; file size
dd 28000h ; memory
dd 10000h ; stack pointer (0x10000+ - work area for os)
dd 28000h ; stack pointer (0x10000+ - work area for os)
dd 0,0 ; parameters, reserved
 
include 'lang.inc'
108,12 → 108,12
 
 
key: ; key
mov eax,2 ; just read it and ignore
mov al,2 ; just read it and ignore
int 0x40
jmp still
 
button: ; button
mov eax,17 ; get id
mov al,17 ; get id
int 0x40
 
cmp ah,11 ; read string
205,7 → 205,7
 
cmp ah,1 ; terminate
jnz noid1
mov eax,-1
or eax,-1
int 0x40
noid1:
 
547,7 → 547,7
end virtual
 
draw_skin:
mcall 13,<area.x,area.width>,<area.y,area.height>,0x00FFFFFF
mcall 13,<area.x,area.width>,<area.y+2,area.height-2>,0x00FFFFFF
 
mov ebp,0x18000
mov edi,[ebp+SKIN_HEADER.params]
/programs/system/docpack/trunk/macros.inc
143,11 → 143,6
 
 
 
; 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>
 
179,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
223,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/end/trunk/build_en.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm end.asm end
@erase lang.inc
@pause
/programs/system/end/trunk/build_ge.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix ge >lang.inc
@fasm end.asm end
@erase lang.inc
@pause
/programs/system/end/trunk/build_ru.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm end.asm end
@erase lang.inc
@pause
/programs/system/end/trunk/macros.inc
143,10 → 143,6
 
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
178,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
222,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/gmon/abou_tab.inc
0,0 → 1,21
 
mov edx, msg_about
mov ebx, 17 * 65536 + 265
call show_text
jmp end_drow_tab
 
msg_about mls \ ; äîëæíà áûòü õîòÿáû îäíà ñòðîêà
' Ghost Monitor',\
'',\
' tool for testing and monitoring hardware',\
'',\
'Supported SuperIO : W83627HF,W83697HF',\
' W83627THF,W83627THF-A,W83627EHF-A,',\
' W83637THF,IT8705F,IT8712F,SiS950',\
'',\
'Tests based on R.J.Redelmeier CPUBurn',\
'',\
'Mailto : ghost.nsk@mail.ru',\
'',\
'',\
' *** Use at YOUR own RISK ***'
/programs/system/gmon/build.bat
0,0 → 1,2
@fasm gmon.asm gmon
@pause
/programs/system/gmon/conf_tab.inc
0,0 → 1,49
;
;
; Âêëàäêà íàñòðîåê
;
 
; Âðåìÿ îáíîâëåíèÿ
mov eax, 8
mov ebx, 200 * 65536 + 15
mov ecx, 260 * 65536 + 15
mov edx, 11
mov esi, tcol
int 0x40
mov ebx, 217 * 65536 + 15
inc edx
int 0x40
mov eax, 4
mov ebx, 17 * 65536 + 265
mov edx, msg_cf_utime
mov ecx, 0x10000000
mov esi, 11
int 0x40
mov ebx, 205 * 65536 + 265
mov edx, msg_cf_pm
xor ecx, ecx
mov esi, 4
int 0x40
mov ecx, [update_time]
call digit_len
mov edx, 160 * 65536 + 265
xor esi, esi
mov eax, 47
int 0x40
; Ðàññòàâëÿåì äâîåòî÷èÿ
mov eax, 4
mov ebx, 152 * 65536 + 265
mov edx, dub_p
mov esi, 1
mov ecx, 0x10000000
int 0x40
jmp end_drow_tab
msg_cf_utime db 'Update time' ; 11
msg_cf_pm db '+ -' ; 4
/programs/system/gmon/config.inc
0,0 → 1,8
nl equ 0x0d, 0x0a
 
; 0x00xx - Menuet 0.xx
; 0x0400 - Kolibi 4 (íîâîå çàâåðøåíèå ïðîöåññà)
; 0x0510 - MSR -> ìíîæèòåëü
; 0x0530 - âñåãî/ñâîáîäíî ïàìÿòè
; 0x0580 - íîâîå çàâåðøåíèå ïðîöåññà
OS_version equ 0x0580
/programs/system/gmon/diag.inc
0,0 → 1,58
; struc DiagramData size,color
; {
; .color dd color
; times size db 0 ;;change to value > 100
; }
 
;------------------------------------------------------
d_show:
; esi - pointer to struct
; åñëè öâåò ôîíà, òî íå ðèñóåì
cmp dword[esi], tcol
jne @f
ret
@@: pusha
 
mov edx, [esi]
add esi, 4
mov edi, esi
add edi, 285
 
mov ebx, 12 * 65536 + 13
xor eax, eax
lodsb
mov cx, 220
sub ecx, eax
 
@@: shl ecx, 16
mov cx, 220
lodsb
sub ecx, eax
mov eax, 38
int 0x40
add ebx, 0x10001
cmp esi, edi
jle @b
 
popa
ret
;------------------------------------------------------
d_add:
; esi - pointer to struct
; al - value
pusha
cmp byte [diag_add_v], 0 ; äîáàâëÿåì òîëüêî ïî òàéìåðó
je d_add_end
cld
mov ecx, 285
add esi, 4
mov edi, esi
inc esi
rep movsb
cmp al, 100
jbe @f
mov al, 100
@@: mov [edi], al
d_add_end:
popa
ret
/programs/system/gmon/gmon.asm
0,0 → 1,583
;
; Ghost Monitor - óòèëèòà (ñòðåññ) òåñòèðîâàíèÿ è ìîíèòîðèíãà ñèñòåìû
; ÂÎÇÌÎÆÍÀ ÏÎÐ×À ÎÁÎÐÓÄÎÂÀÍÈß!
; ÈÑÏÎËÜÇÓÉÒÅ ÍÀ ÑÂÎÉ ÑÒÐÀÕ È ÐÈÑÊ!
;
; Çàìåòêè :
; Äîïèñàòü çàïóñê òåñòîâ (rtst) (íåò ðåàêöèè íà îøèáêó çàïóñêà)
; Ïåðåäåëàòü îáíîâëåíèå ãðàôèêà (ñäåëàòü îòäåëüíûì ïðîöåññîì)
; Äîáàâèòü ðåàêöèþ íà ïàðàìåòðû äàò÷èêîâ
;
; Èñòîðèÿ :
; 09/2005 - íà÷àëî
; 04/10/2005 - îòêîììåíòèðîâàë êîä
; 09/11/2005 - äîïèñàíû òåñòû (ïîêà íåò òåñòà ïàìÿòè)
; 30/01/2006 - äîáàâëåííû ãðàôèêè
; 02/02/2006 - Äîáàâëåíà íàñòðîéêà âðåìåíè îáíîâëåíèÿ
; 10/02/2006 - äîáàâëåííà åùå èíôîðìàöèÿ ñ äàò÷èêîâ, îïò. wb_get_chip_name
; 01/03/2006 - äîáàâëåííà åùå èíôîðìàöèÿ ñ äàò÷èêîâ
; 16/03/2006 - îïòèìèçèðîâàíà ïî ðàçìåðó
; 17/03/2006 - ïîäñâåòêà èçìåí¸ííûõ ïàðàìåòðîâ, îïòèìèçàöèÿ, about
; 20/03/2006 - Ïóáëèêàöèÿ
; --- v 0.2 ---
; 24/03/2006 - Äîáàâëåííà ïîääåðæêà IT8705F, IT8712F è SIS950
; 25/03/2006 - Âûâîä òð¸õ òåìïåðàòóð è òð¸õ âåíòèëåé
; 28/03/2006 - Ãðàôèê temp3 è èçìåíåíèå öâåòà ãðàôèêîâ, îáðàáîòêà îòðèöàòåëüíûõ çíà÷åíèé ãðàôèêà
; 30/03/2006 - Îïòèìèçàöèÿ ïî ðàçìåðó âåðñèè îò 28/03/2006, ïåðåïèñàë ðèñîâàíèå ãðàôèêà
; 14/04/2006 - Èñïðàâèë ãðàôèê (jle -> jbe), äîáàâèë mem usage, âû÷èñëåíèå äëèííû ÷èñåë, çàêðûòèå ïî Esc
; 19/04/2006 - Î÷èñòêà íåèíèöèàëèçèðîâàííûõ äàííûõ
; --- v 0.3 ---
; 01/07/2006 - Ðàçëè÷èå ITE 8705F, ITE 8712F è IT8716F
; 04/07/2006 - Äîáàâëåííû íàïðóãè äëÿ ÷èïîâ Winbond
; 10/07/2006 - äîáàâëåííû íàïðóãè äëÿ ÷èïîâ ITE, ìíîæèòåëè äëÿ AMD K6, Intel P6, P7, îïòèìèçàöèÿ ïî ðàçìåðó
; 11/07/2006 - Ðåàêöèÿ íà èçìåíåíèå íàïðóãè, îïòèìèçàöèÿ ïî ðàçìåðó
; 12/07/2006 - it87_get_fan_speed bug fix, çàâåðøåíèå òåñòà ïî 18/18
; 13/07/2006 - it87_get_fan_speed bug fix, èñïðàâëåí âûâîä ÷èñåë ñ ïëàâàþùåé òî÷êîé
; 14/07/2006 - èñïðàâëåííû ïîêàçàíèÿ -12V äëÿ Winbond, îñòàëàñü ïðîáëåíìà ñ -5V
; 17/07/2006 - èñïðàâëåííà îøèáêà îïðåäåëåíèÿ ìíîæèòåëÿ äëÿ P6, äîáàâëåííû ìíîæèòåëè
; 18/07/2006 - Óëè÷øèë âûâîä ìíîæèòåëÿ, èñïðàâëåííû ìíîæèòåëè äëÿ P6 Tualatin, config.inc
; 22/07/2006 - P6 multiplier bugfix
; 30/07/2006 - P6 multiplier bugfix
;
; Ýé! Ó ìåíÿ íåò ìíîãî âðåìåíè.
 
; Âíåøíèå ôàéëû :
; hwm*.inc - ïðîöåäóðû ðàáîòû ñ äàò÷èêàìè ìîíèòîðèíãà
; system.inc - âû÷èñëåíèå çàãðóçêè ïðîöåññîðà, çàâåðøåíèå òåñòà, etc...
; tests.inc - òåñòû ;-)
; diag.inc - ïîääåðæêà äèàãðàì
; *_tab.inc - ïðîöåäóðû îòðèñîâêè ñîîòâåòñòâóþøèõ âêëàäîê
 
 
; Èäåíòèôèêàòîðû êíîïîê :
; 01 - Exit
; 02 - Info tab
; 03 - Tests tab
; 04 - Config tab
; 05 - About tab
; 06 - P5 test
; 07 - P6 test
; 08 - K6 test
; 09 - K7 test
; 10 - MMX test - not used
; 11 - Update time increment
; 12 - Update time decriment
; 13..17 - Èçìåíåíèå öâåòà CPU_load, Mem_usage, Temp1, Temp2, Temp3
 
include 'config.inc'
include 'macros.inc'
 
tcol equ 0x5080d0
atcol equ 0x4070c0
val_mod equ 0x3090
 
MEOS_APP_START
include "tests.inc" ; <-- Ìíîãî âûðàâíèâàíèé, ëó÷øå çäåñü
CODE
;--- Init ------------------------------------------------------------
; Î÷èùàåì íåèíèöèàëèçèðîâàííûå äàííûå
mov ecx, __memory - __udata
mov edi, __udata
xor eax, eax
rep stosb
 
xor eax, eax
cpuid ; Óçíà¸ì ïðîèçâîäèòåëÿ ïðîöà
mov [Vendor + 0], ebx
mov [Vendor + 4], edx
mov [Vendor + 8], ecx
mov eax, 1
cpuid ; Åñòü ëè MMX ?
mov ecx, eax
shr al, 4
and ax, 0x0F0F
mov [CPU_fam], ah
mov [CPU_mod], al
shr edx, 23
and dl, 1
mov [CPU_mmx], dl
shr ecx, 12
and cl, 11b
mov [CPU_type], cl
; ! Öâåòà èç ìàññèâà colors
mov dword[d_cpu_load], 0xFF00 ; èíèöèàëèçèðóåì ãðàôèê çàãðóçêè ÀËÓ
mov dword[d_mem_usage], 0x8BA169 ; -- mem usega
mov dword[d_temp1], 0xFF0000 ; -- ãðàôèê òåìïåðàòóðû ÖÏÓ
mov dword[d_temp2], 0xFF ; -- ãðàôèê òåìïåðàòóðû ÌÏ
mov dword[d_temp3], 0xFF7E23
 
call hwm_init ; Èíèöèàëèçèðóåì ÷èï ìîíèòîðèíãà
 
jmp draw_window
;--- Wait & translate event ------------------------------------------
wait_for_event:
mov byte[diag_add_v], 0 ; äîáàâëÿåì äàííûå ê ãðàôèêó òîëüêî ïî òàéìåðó
mov ebx, [update_time]
mov eax, 23
int 0x40
test eax, eax
jnz @f
inc byte [diag_add_v]
inc eax ; ïåðåðèñóåì îêíî (eax := 1)
@@: dec eax ; redraw request ?
jz draw_window
dec eax ; key in buffer ?
jz key
dec eax ; button in buffer ?
jz button
jmp wait_for_event
;--- Key pressed -----------------------------------------------------
key:
mov eax, 2
int 0x40
cmp ah, 27 ; Esc - çàâåðøåíèå ðàáîòû
je exit
jmp wait_for_event
;--- Button down -----------------------------------------------------
button:
mov eax, 17 ; get id
int 0x40
cmp ah, 1 ; button id == 1 ?
jne noexit
exit: cmp byte[test_id], 0
je @f
call stop_test
@@: mov eax, -1 ; close this program
int 0x40
noexit:
; êíîïêè âêëàäîê (2 .. 5)
cmp ah, 5
jg no_tabs
mov byte[act_tab], ah
jmp draw_window
no_tabs:
; êíîïêè çàïóñêà òåñòâî (6 .. 10)
cmp ah, 10
jg no_test_bt
; åñëè íåò çàïóùåíûõ òåñòîâ - çàïóñêàåì âûáðàííûé
cmp byte[test_id], 0
je run_test
; åñëè êíîïêà àêòèâíîãî òåñòà - îñòàíàâëèâàåì òåñò, èíà÷å íè÷åãî íå äåëàåì
cmp [test_id], ah
jne wait_for_event
call stop_test
jmp draw_window
 
tsts: dd p5, p6, k6, k7
run_test:
push eax
movzx ecx, ah
mov ecx, [tsts + (ecx * 4) - (6 * 4)]
rtst: mov eax, 51
mov edx, stp
mov ebx, 1
int 0x40
cmp eax, 0xFFFFFFF0 ; -16
je wait_for_event ; <-- îøèáêà çàïóñêà òåñòà, ÏÅÐÅÏÈÑÀÒÜ
mov [test_pid], eax
pop eax
mov byte [test_id], ah
jmp draw_window
;-------------------------
; êíîïêè èçìåíåíèÿ âðåìåíè îáíîâëåíèÿ
no_test_bt:
cmp ah, 11
jne no_ut_inc
add dword[update_time], 10
jmp draw_window
no_ut_inc:
cmp ah, 12
jne no_ut_dec
cmp dword[update_time], 10
jng wait_for_event
sub dword[update_time], 10
jmp draw_window
no_ut_dec:
;-------------------------
; êíîïêè èçìåíåíèÿ öâåòà ãðàôèêîâ (13..17)
cmp ah, 17
jg no_change_color
sub ah, 13
movzx ecx, ah
mov esi, [d_colors + ecx * 4]
mov eax, [esi]
call next_color
mov [esi], ebx
jmp draw_window
no_change_color:
 
jmp wait_for_event
;---------------------------------------------------------------------
; Öâåòà ãðàôèêîâ
colors: dd 0xff0000, 0xff00, 0xff, 0xffffff, tcol, 0xFF7E23, 0x8BA169, 0xff0000 ; ïåðâûé è ïîñëåäíèé ðàâíû
next_color:
mov ecx, (next_color - colors) / 4 ; êîëè÷åñòâî öâåòîâ
@@: dec ecx
cmp eax, [colors + ecx * 4]
jne @b
mov ebx, [colors + ecx * 4 - 4]
ret
;---------------------------------------------------------------------
draw_window:
mov eax,12
mov ebx,1
int 0x40
; Ñîçäà¸ì îêíî
xor eax, eax
mov ebx, 300 * 65536 + 309
mov ecx, 150 * 65536 + 430
mov edx, tcol + 0x3000000 ; color of work area RRGGBB,8->color
mov esi, 0x805080d0 ; color of grab bar RRGGBB,8->color
mov edi, 0x005080d0 ; color of frames RRGGBB
int 0x40
; Ñîçäà¸ì ðàìêó ãðàôèêà
mov eax, 13
mov ebx, 10 * 65536 + 290
mov ecx, 118 * 65536 + 105
mov edx, atcol
int 0x40
mov ebx, 12 * 65536 + 286
mov ecx, 120 * 65536 + 101
mov edx, tcol
int 0x40
mov eax, 38
mov edx, atcol
mov ebx, 12 * 65536 + 286 + 12
mov ecx, 120 * 65536 + 120
@@: add ecx, 10 * 65536 + 10
int 0x40
cmp cx, 210 ; ïðèâÿçàíî ê êîîðäèíàòàì îêíà
jl @b
; Ïèøèì çàãîëîâîê
mov eax, 4
mov ebx, 8 * 65536 + 8
mov edx, title
mov ecx, 0x10FFFFFF
mov esi, 29
int 0x40
; Ïèøèì íàçâàíèÿ ïàðàìåòðîâ (Cpu load, temper, etc...)
mov edx, msgs_mon
mov ebx, 17 * 65536 + 30
call show_text
mov edx, msgs_mon2
mov ebx, 156 * 65536 + 30
call show_text
; Ðèñóåì êíîïêè ñìåíû öâåòà
mov eax, 8
mov ebx, 112 * 65536 + 5
mov ecx, 30 * 65536 + 6
mov edx, 13
@@: mov esi, [d_colors - 13 * 4 + edx * 4]
mov esi, [esi]
int 0x40
add ecx, 10 * 65536
inc edx
cmp edx, 13 + 5 ; 5 êíîïîê
jne @b
; Ïèøèì çàãðóçêó ïðîöåññîðà
call cpu_usage
;--- äîáàâëÿåì íà ãðàôèê ---
mov esi, d_cpu_load
call d_add
call d_show
;---------------------------
movzx ecx, al
mov eax, 47
mov edx, 121 * 65536 + 30
xor esi, esi
call digit_len
int 0x40
; Ïèøèì èñïîëüçóåìóþ ïàìÿòü
call mem_usage
;--- äîáàâëÿåì íà ãðàôèê ---
mov esi, d_mem_usage
call d_add
call d_show
;---------------------------
movzx ecx, al
mov eax, 47
mov edx, 121 * 65536 + 40
xor esi, esi
call digit_len
int 0x40
cmp byte[hwm_enable], 0
jne show_mon
; Íåò äàò÷èêîâ - ïèøåì NO
mov ecx, 6 ;<- êîëè÷åñòâî ïàðàìåòðîâ
mov eax, 4
mov ebx, 121 * 65536 + 50
mov edx, msg_no
mov esi, 3
@@: int 0x40
add ebx, 10
loop @b
 
mov ecx, 7 ;<- êîëè÷åñòâî ïàðàìåòðîâ
mov ebx, 260 * 65536 + 30
@@: int 0x40
add ebx, 10
loop @b
 
jmp no_monitor
show_mon:
;Åñòü äàò÷èêè ïèøèì èíôó
call hwm_get_params
;---------------------------
; Òåìïåðàòóðó
mov ecx, 3
mov esi, temps
mov edx, 121 * 65536 + 50
xor eax, eax
sh_temp:push ecx
lodsw
push esi
; ðåàêöèÿ íà èçìåíåíèÿ
xor esi, esi
cmp [old_t1 + ecx * 4 - 4], eax
je @f
mov [old_t1 + ecx * 4 - 4], eax
mov esi, val_mod
@@: movzx ecx, al
push eax
mov eax, 47
mov ebx, 0x20000
int 0x40
pop eax
mov cl, ah
mov eax, 47
mov ebx, 0x10000
add edx, 15 * 65536
int 0x40
sub edx, 15 * 65536 - 10
pop esi
pop ecx
loop sh_temp
;;--- äîáàâëÿåì íà ãðàôèê temp1 ---
movzx eax, word[temps]
mov esi, d_temp1
call d_add
call d_show
;;--- äîáàâëÿåì íà ãðàôèê temp2 ---
movzx eax, word[temps + 2]
mov esi, d_temp2
call d_add
call d_show
;;--- äîáàâëÿåì íà ãðàôèê temp3 ---
movzx eax, word[temps + 4]
mov esi, d_temp3
call d_add
call d_show
 
;---------------------------
; Ñêîðîñòè âðàøåíèÿ âåíòèëåé
mov ecx, 3
mov esi, rpms
mov edx, 121 * 65536 + 80
sh_fan: push ecx
lodsd
push esi
;ðåàêöèÿ íà èçìåíåíèÿ
xor esi, esi
cmp [old_f1 + ecx * 4 - 4], eax
je @f
mov [old_f1 + ecx * 4 - 4], eax
mov esi, val_mod
@@: mov ecx, eax
call digit_len
mov eax, 47
int 0x40
add edx, 10
pop esi
pop ecx
loop sh_fan
;---------------------------
; Íàïðóãè
mov esi, Vcore
mov edi, old_volts
mov ecx, 7
mov ebx, 260 * 65536 + 30
mov edx, Data_String
volt_nxt:
push ecx
push esi
call ftoa
;ðåàêöèÿ íà èçìåíåíèÿ
xor ecx, ecx
fld dword [esi]
fsub dword [edi]
fabs
; fcomp dword [c_eps] ; bug in MeOsEmul
; fstsw ax
fcom dword [c_eps] ; 0xBADCODE
fstsw ax
finit
sahf
jc @f
mov ecx, val_mod
@@: mov esi, Data_String ; ñ÷èòàåì êîë-âî ñèìâîëîâ
@@: lodsb
test al, al
jnz @b
sub esi, Data_String
mov eax, 4
int 0x40
add ebx, 10
pop esi
pop ecx
movsd
loop volt_nxt
no_monitor:
;---------------------------
; Ñîçäà¸ì êíîïêè âêëàäîê
mov edi, 230 * 65536 + 25
mov ecx, 4
mov eax, 8
mov ebx, 10 * 65536 + 70
mov edx, 2
n_bt: push ecx
mov ecx, edi
mov esi, tcol
cmp byte [act_tab], dl
jne na1
mov esi, atcol
na1: int 0x40
inc edx
add ebx, 73 * 65536
pop ecx
loop n_bt
; Ïèøèì íàçâàíèÿ âêëàäîê
mov eax, 4
mov ebx, 35 * 65536 + 240
mov edx, tab_lab
mov ecx, 0x10000000
mov esi, 39
int 0x40
; ñîçäà¸ì ðàìêó âíèçó ýêðàíà
mov eax, 13
mov ebx, 10 * 65536 + 290
mov ecx, 255 * 65536 + 160
mov edx, atcol
int 0x40
mov ebx, 12 * 65536 + 286
mov ecx, 257 * 65536 + 156
mov edx, tcol
int 0x40
; ðèñóåì âûáðàííóþ âêëàäêó
mov al, [act_tab]
cmp al, 2
je info_tab
cmp al, 3
je test_tab
cmp al, 4
je config_tab
jmp about_tab
end_drow_tab:
mov eax, 12
mov ebx, 2
int 0x40
jmp wait_for_event
;--- Drow Info tab ---------------
info_tab:
include "info_tab.inc"
;--- Drow test tab ---------------
test_tab:
include "test_tab.inc"
;--- Drow Config tab -------------
config_tab:
include "conf_tab.inc"
;--- Drow About tab --------------
about_tab:
include "abou_tab.inc"
;---------------------------------------------------------------------
include "system.inc"
include "hwm.inc"
include "diag.inc"
 
DATA
act_tab db 2 ; Íîìåð àêòèâíîé âêëàäêè
tab_lab db 'Info Tests Configs About'
title db 'Ghost Monitor v0.3 [30/07/06]'
 
msgs_mon mls \
'CPU Load (%)',\
'Mem Usage(%)',\
'Temp1',\
'Temp2',\
'Temp3',\
'Fan1',\
'Fan2',\
'Fan3'
msgs_mon2 mls \
'Vcore',\
'AGP',\
'+3.3V',\
'AVcc (+5V)',\
'+12V',\
'-12V',\
'-5V'
 
msg_yes db 'Yes'
msg_no db 'N/A'
 
update_time dd 300 ; ïåðèîä îáíîâëåíèÿ â ñîòûõ äîëÿõ ñåêóíäû
d_colors dd d_cpu_load, d_mem_usage, d_temp1, d_temp2, d_temp3
c_eps dd 0.01
;---------------------------------------------------------------------
UDATA
 
test_pid dd ? ; åñëè test_id == 0 - íå èìååò ñìûñëà
test_id db ? ; 0 - òåñò íå çàïóøåí (ñîîòâåòñòâóåò ¹ êíîïêè 6..10)
diag_add_v db ? ; 0 - íå äîáàâëÿòü äàííûå íà ãðàôèê, !0 - äîáàâëÿòü
 
Vendor: times 12 db ?
CPU_fam: db ?
CPU_mod: db ?
CPU_type: db ?
CPU_mmx: db ?
 
; Äëÿ ðåàêöèè íà èçìåíåíèÿ
old_t1: dd ? ; ïîñëåäíåå çíà÷åíèå temp1
old_t2: dd ? ; ...
old_t3: dd ?
old_f1: dd ?
old_f2: dd ?
old_f3: dd ?
old_volts: times 7 dd ?
 
; Ãðôèêè
diag_beg:
d_cpu_load: dd ?
times 286 db ?
d_mem_usage: dd ?
times 286 db ?
d_temp1: dd ?
times 286 db ?
d_temp2: dd ?
times 286 db ?
 
d_temp3: dd ?
times 286 db ?
diag_end:
 
; --- ñòåê òåñòà, âîèçáåæàíèå ãëþêîâ íå ïåðåíîñèòü â äðóãîå ìåñòî ----
th_stack: times 1024 db ?
stp:
;---------------------------------------------------------------------
MEOS_APP_END
/programs/system/gmon/hwm.inc
0,0 → 1,80
 
include 'hwm_wb.inc'
include 'hwm_it87.inc'
 
uglobal
hwm_enable:db 0 ; 0 - no, 1 - Winbond, 2 - ITE
temps db 0,0, 0,0, 0,0 ; ãðàäóñ, äåñÿòûå, ãðàäóñ, ...
rpms dd 0, 0, 0 ; fan1, fan2, fan3
Vcore dd 0.0
Vin0 dd 0.0
Vin1 dd 0.0
AVcc dd 0.0
Vin2 dd 0.0
V12 dd 0.0
V5 dd 0.0
endg
 
hwm_unk db 9, 'Not found'
hwm_chip_name dd hwm_unk
 
hwm_init:
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
pusha
 
mov eax, 46 ; ðåçåðâèðóåì 0x295 è 0x296 ïîðòû
xor ebx, ebx
mov ecx, 0x295
mov edx, 0x296
int 0x40
test eax, eax
jz hwm_ports_ok
hwm_no:
mov eax, 46 ; îñâîáîæäàåì 0x295 è 0x296 ïîðòû
xor ebx, ebx
inc ebx
mov ecx, 0x295
mov edx, 0x296
int 0x40
popa
ret
hwm_ports_ok:
 
call wb_init
jc not_wb
mov byte [hwm_enable], 1
call wb_get_name
jmp hwm_ok
not_wb: call it87_init
jc hwm_no
mov byte [hwm_enable], 2
call it87_get_name
hwm_ok: mov [hwm_chip_name], edx
popa
ret
;----------------------------------------------------
hwm_get_params:
; Âûçûâàòü òîëüêî åñëè íàéäåí
pusha
mov al, [hwm_enable]
dec al
jnz @f
call wb_get_temp
call wb_get_fan_speed
mov edi, wb_coeff
call wb_get_volt
fld dword[V12]
fld dword[wb_n12v_const]
faddp st1, st0
fstp dword[V12]
popa
ret
@@: call it87_get_temp
call it87_get_fan_speed
mov edi, ite_coeff
call wb_get_volt
popa
ret
;----------------------------------------------------
/programs/system/gmon/hwm_it87.inc
0,0 → 1,117
; Integrated Technology Express
; Chip Temp Volt Fan
; it8705 3 8 3
; it8712 3 8 3
 
; SiS
; Chip Temp Volt Fan
; sis950 3 8 3
 
IT87_REGCHIP equ 0x58
IT87_CHIPID equ 0x90
IT87_FANDIV equ 0x0B
uglobal
it_chip_id db 0
endg
it8705 db 15, 'IT8705F/SiS 950'
it8712 db 7, 'IT8712F'
it8716 db 7, 'IT8716F'
ite_unk db 11, 'Unknown ITE'
 
ite_coeff: dd 0.016 ; Vcore
dd 0.016 ; Vin0
dd 0.016 ; Vin1 (+3.3V)
dd 0.02688 ; AVcc (+5V)
dd 0.0608 ; Vin2 (+12V)
dd -0.055632 ; -12V
dd -0.02408 ; -5V
;-----------------------------------
it87_init:
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
; OUT - CF = 1 - error
;--- Ïðîâåðÿåì IT87* --------
mov dx, 0x295
mov al, IT87_REGCHIP
out dx, al
inc edx
in al, dx
cmp al, IT87_CHIPID
jne it87_no ; ýòî íå it87 !!!
; -~- not tested ~-~-
dec edx ; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà --
mov al, 0x21
out dx, al
inc edx
in al, dx
mov byte[it_chip_id], al
; -~-~-~-~-~-~-~-~-~-
clc
ret
it87_no:stc
ret
;-----------------------------------
it87_get_temp:
mov dx, 0x296
xor ecx, ecx
mov esi, temps
@@: dec edx
mov eax, ecx
add al, 0x29
out dx, al
inc edx
in al, dx
mov [esi + ecx * 2], al
inc ecx
cmp ecx, 3
jb @b
ret
;-----------------------------------
it87_fan_div db 1, 1, 1
it87_get_fan_speed:
; ÷èòàåì äåëèòåëè
mov dx, 0x295
mov al, IT87_FANDIV
out dx, al
inc dx
in al, dx
mov ah, al
and al, 0x07
mov [it87_fan_div], al
shr ah, 3
and ah, 0x07
mov [it87_fan_div + 1], ah
xor ecx, ecx
@@: mov dx, 0x295
mov al, 0x0D
add al, cl
out dx, al
inc edx
in al, dx
movzx ebx, al
push ecx
mov cl, [it87_fan_div + ecx]
shl ebx, cl
pop ecx
mov eax, 1350000
xor edx, edx
div ebx
mov [rpms + 4 * ecx], eax
inc ecx
cmp ecx, 3
jb @b
 
ret
;--------------------------------------------------------------------------
it87_get_name:
mov edx, it8705
cmp byte[it_chip_id], 0x05
je @f
mov edx, it8712
cmp byte[it_chip_id], 0x12
je @f
mov edx, it8716
cmp byte[it_chip_id], 0x16
je @f
mov edx, ite_unk
@@: ret
/programs/system/gmon/hwm_wb.inc
0,0 → 1,254
;
; Áèáëèîòåêà äëÿ ÷èïîâ WinBond
;
;
; Äîïèñàòü ïîëó÷åíèå èíôû ñ äðóãèõ äàò÷èêîâ
; + 16.03.06 Èñïðàâëåíà îøèáêà â wb_get_cpu_temper ñ äåñÿòûõ ãðàäóñà (áûëî 30.5 30.0 31.5 ...)
;
;
uglobal
wb_chip_id: db 0 ; Èäåíòèôèêàòîð ÷èïà (åñëè íàøëè)
endg
; | Chip name | ID Vin Fanin PWM Temp
msg_wb27HF: db 8, 'W83627HF' ; 0x20|0x21 9 3 2 3
msg_wb27THF: db 9, 'W83627THF' ; 0x90|0x91 7 3 3 3
msg_wb37THF: db 9, 'W83637THF' ; 0x80 7 3 3 3
msg_wb97HF: db 8, 'W83697HF' ; 0x60|0x61 8 2 2 2
msg_wb27EHF: db 11,'W83627EHF-A' ; 0x88
msg_wb27THFA: db 11,'W83627THF-A' ; 0x1A
; db 7, 'W83781D' ; 0x10|0x11 7 3 3
; db 7, 'W83782D' ; 0x30 9 3 3
; db 8, 'AS99127F' ; 0x31
; db 7, 'W83783S' ; 0x40|0x41 5-6 3 1-2
; db 7, 'W83791D' ; 0x70|0x71 10 5 3
msg_wbunk: db 15,'Unknown Winbond' ; other, non zero ;-)
 
;-----------------------------------
wb_init:
; Ïðîâåðêà íàëè÷èÿ è èíèöèàëèçàöèÿ
; OUT - CF = 1 - error
mov dx, 0x295
mov al, 0x4e
out dx, al
inc edx
xor al, al
out dx, al
dec edx
mov al, 0x4f
out dx, al
inc edx
in al, dx
mov ah, al ;!
dec edx
mov al, 0x4e
out dx, al
inc edx
mov al, 0x80
out dx, al
dec edx
mov al, 0x4f
out dx, al
inc edx
in al, dx
cmp ax, 0xa35c
jne wb_no ; ýòî íå Winbond !!!
dec edx ; --- óçíà¸ì èäåíòèôèêàòîð ÷èïà --
mov al, 0x58
out dx, al
inc edx
in al, dx
mov byte[wb_chip_id], al
clc
ret
wb_no: stc
ret
 
;-----------------------------------
wb_get_temp:
; temp 1
mov dx, 0x295 ; Âûáèðàåì bank 1
mov al, 0x4e
out dx, al
inc edx
mov al, 1
out dx, al
 
dec edx ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
mov al, 0x50
out dx, al
inc edx
in al, dx
mov [temps], al
dec edx ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (0.5`C)
mov al, 0x51
out dx, al
inc edx
in al, dx ; if al == 0 then 0.0, else 0.5
cmp al, 0
je @f
mov al, 5
@@: mov [temps + 1], al
; temp 2 (3 SYSTIN)
dec edx ; Âûáèðàåì bank 0
mov al, 0x4e
out dx, al
inc edx
mov al, 0
out dx, al
 
dec edx ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
mov al, 0x27
out dx, al
inc edx
in al, dx
mov [temps + 2], al
; temp 3 (VTIN)
dec edx ; Âûáèðàåì bank 2
mov al, 0x4e
out dx, al
inc edx
mov al, 2
out dx, al
 
dec edx ; Ïîëó÷àåì ñòàðøèé áàéò òåìïåðàòóðû (ãðàäóñû)
mov al, 0x50
out dx, al
inc edx
in al, dx
mov [temps + 4], al
dec edx ; Ïîëó÷àåì ìëàäøèé áàéò òåìïåðàòóðû (0.5`C)
mov al, 0x51
out dx, al
inc edx
in al, dx ; if al == 0 then 0.0, else 0.5
cmp al, 0
je @f
mov al, 5
@@: mov [temps + 5], al
; Ïðîâåðêà òåìïåðàòóðû, äàò÷èêè ñ 127.5`C íå èñïîëüçóþòñÿ
mov ecx, 3
mov esi, temps
wb_check_temp:
cmp word[esi + ecx * 2 - 2], 0x057F
jne wb_temp_ok
mov word[esi + ecx * 2 - 2], 0
wb_temp_ok:
loop wb_check_temp
ret
;-----------------------------------
wb_get_fan_speed:
; fan1
mov al, 0x47
mov dx, 0x295
out dx, al
inc edx
in al, dx
and al, 0x30
shr al, 4
mov ebx, 1
mov cl, al
shl ebx, cl ; <- div1
dec edx
mov al, 0x28
out dx, al
inc edx
xor eax, eax
in al, dx
cmp al, 255
jne @f
xor eax, eax
ret
@@: mul ebx
mov ebx, eax
mov eax, 1350000
xor edx, edx
div ebx
mov [rpms], eax
 
mov al, 0x47
mov dx, 0x295
out dx, al
inc edx
in al, dx
shr al, 6
mov ebx, 1
mov cl, al
shl ebx, cl ; <- div2
dec edx
mov al, 0x29
out dx, al
inc edx
xor eax, eax
in al, dx
cmp al, 255
jne @f
xor eax, eax
ret
@@: mul ebx
mov ebx, eax
mov eax, 1350000
xor edx, edx
div ebx
mov [rpms + 4], eax
ret
;-----------------------------------
wb_get_volt:
mov dx, 0x295
;mov edi, vcoeff ; <-- possible differences for miscellaneous chip
mov esi, Vcore
xor ecx, ecx
@@: mov eax, ecx
add al, 0x20
out dx, al
inc edx
in al, dx
fld dword [edi + ecx * 4]
push eax
fild dword [esp]
fmulp st1, st0
fstp dword [esi + ecx * 4]
pop eax
inc ecx
dec edx
cmp ecx, 7
jb @b
ret
 
wb_coeff: dd 0.016 ; Vcore
dd 0.016 ; Vin0
dd 0.016 ; Vin1 (+3.3V)
dd 0.02688 ; AVcc (+5V)
dd 0.0608 ; Vin2 (+12V)
dd 0.0822857142857145 ; -12V
dd -0.02408 ; -5V ; false
wb_n12v_const dd -14.9142857142857
;-----------------------------------
wb_get_name:
; Âîçâðàùàåò èìÿ ÷èïà
; Out : EDX - pointer to string (size:string - Pascal style)
mov al, [wb_chip_id]
and al, 0xFE ; 0x20 = 0x21, 0x60 = 0x61, etc
mov edx, msg_wb27HF
cmp al, 0x20
je @f
mov edx, msg_wb27THF
cmp al, 0x90
je @f
mov edx, msg_wb37THF
cmp al, 0x80
je @f
mov edx, msg_wb97HF
cmp al, 0x60
je @f
mov edx, msg_wb27EHF
cmp al, 0x88
je @f
mov edx, msg_wb27THFA
cmp al, 0x1A
je @f
mov edx, msg_wbunk
@@: ret
/programs/system/gmon/info_tab.inc
0,0 → 1,103
;
;
; Âêëàäêà èíôîðìàöèè î ñèñòåìå
;
; Äîïèñàòü åù¸ ÷òîèòü (ìàëîâàòî áóäåò)
;
;
 
; Ïèøåì ïàðàìåòðû
mov edx, lab_info_tab
mov ebx, 17 * 65536 + 265
call show_text
 
; Ïèøåì ïðîèçâîäèòåëÿ ïðîöåññîðà
mov edx, Vendor
mov esi, 12
mov ebx, 160 * 65536 + 265
int 0x40
; Ïîääåðæêà MMX
mov ebx, 160 * 65536 + 275
mov esi, 3
mov edx, msg_yes
cmp byte[CPU_mmx], 1
je mmx_en
mov edx, msg_no
mmx_en: int 0x40
; ×èï ìîíèòîðèíãà
int 0x40
mov edx, [hwm_chip_name]
mov al, byte[edx]
movzx esi, al
inc edx
mov ebx, 160 * 65536 + 285
mov al, 4
int 0x40
; Ñåìåéñòâî è ìîäåëü ïðîöåññîðà
mov eax, 47
mov ebx, 0x10100
xor ecx, ecx
mov cl, [CPU_fam]
mov edx, 250 * 65536 + 265
xor esi, esi
int 0x40
mov cl, [CPU_mod]
add edx, 10 * 65536
int 0x40
; êîýôôèöèåíò óìíîæåíèÿ
call multiplier
test ecx, ecx
jz @f
movzx ecx, cl
push ecx
fild dword[esp]
push 10
fidiv dword[esp]
fstp dword[esp]
mov esi, esp
call ftoa
mov ebx, 160 * 65536 + 295
mov edx, Data_String
mov eax, 4
mov esi, eax
xor ecx, ecx
int 0x40
pop eax
pop eax
@@:
; Ñâîáîäíàÿ ïàìÿòü
if (OS_version >= 0x0530)
mov eax, 18
mov ebx, 16
int 0x40
mov ecx, eax
call digit_len
mov eax, 47
mov edx, 160 * 65536 + 305
xor esi, esi
int 0x40
end if
; Ðàññòàâëÿåì äâîåòî÷èÿ
mov eax, 4
mov ebx, 152 * 65536 + 265
mov edx, dub_p
mov esi, 1
mov ecx, 5 ; <- êîëè÷åñòâî ñòðîê
nxt_dp: push ecx
mov ecx, 0x10000000
int 0x40
add ebx, 10
pop ecx
loop nxt_dp
;---------------------------------------------------------------------
jmp end_drow_tab
dub_p db ':'
 
lab_info_tab mls \
'CPU Vendor',\
'MMX tehnology',\
'Monitoring chip',\
'Multiplier',\
'Free memory (Kb)'
/programs/system/gmon/macros.inc
0,0 → 1,365
; language for programs
lang fix en ; ru en fr ge fi
 
@^ fix macro comment {
^@ fix }
 
;~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
macro uglobal {
UGlobals equ UGlobals,
macro __UGlobalBlock { }
 
endg fix } ; Use endg for ending iglobal and uglobal blocks.
 
macro IncludeUGlobals{
macro UGlobals dummy,[n] \{
\common
\local begin, size
begin = $
virtual at $
\forward
__UGlobalBlock
purge __UGlobalBlock
\common
size = $ - begin
end virtual
rb size
\}
match U, UGlobals \{ U \} }
 
uglobal
endg
;~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
 
; 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:
IncludeUGlobals
}
UDATA fix udata
 
macro meos_app_end
{
align 32
rb 2048
__stack:
__memory:
display nl, ' '
}
MEOS_APP_END fix meos_app_end
 
; macro for defining multiline text data
struc mls [sstring] {
forward
local ssize
virtual at 0
db sstring ; mod
ssize = $
end virtual
db ssize
db sstring
common
db -1 ; mod
}
 
 
; strings
macro sz name,[data] { ; from MFAR [mike.dld]
common
if used name
name db data
.size = $-name
end if
}
 
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
common
if used name
label name
forward
if lang eq lng
db data
end if
common
.size = $-name
end if
}
 
macro szc name,elsz,[data] { ; from MFAR [mike.dld]
common
local s,m
m = 0
if used name
label name
virtual at 0
db data
s = $
end virtual
d#elsz s
if m < s
m = s
end if
db data
.size = $-name
.maxl = m
end if
}
 
macro lszc name,elsz,[lng,data] { ; from MFAR [mike.dld]
common
local s,m
m = 0
if used name
label name
forward
if lang eq lng
virtual at 0
db data
s = $
end virtual
d#elsz s
if m < s
m = s
end if
db data
end if
common
.size = $-name
.maxl = m
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 __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b 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
}
 
 
; -------------------------
macro header a,[b] {
common
use32
org 0
db 'MENUET',a
forward
if b eq
dd 0
else
dd b
end if }
macro section name { align 16
label name }
macro func name {
if ~used name
display 'FUNC NOT USED: ',`name,13,10
else
align 4
name:
;pushad
;pushfd
;dps `name
;newline
;mcall 5,1
;popfd
;popad
}
macro endf { end if }
 
macro diff16 title,l1,l2
{
local s,d
s = l2-l1
display title,': 0x'
repeat 8
d = '0' + s shr ((8-%) shl 2) and $0F
if d > '9'
d = d + 'A'-'9'-1
end if
display d
end repeat
display 13,10
}
 
macro diff10 title,l1,l2
{
local s,d,z,m
s = l2-l1
z = 0
m = 1000000000
display title,': '
repeat 10
d = '0' + s / m
s = s - (s/m)*m
m = m / 10
if d <> '0'
z = 1
end if
if z <> 0
display d
end if
end repeat
display 13,10
}
 
; 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
}
 
 
struc POINT _t,_dx,_dy {
.x _t _dx
.y _t _dy
}
 
 
; 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
/programs/system/gmon/readme.txt
0,0 → 1,99
==[CP1251]========================================
 
Ghost Monitor
Àâòîð : Ìèõàéëîâ Èëüÿ Àíäðååâè÷ aka Ghost
Âåðñèÿ : 0.3 îò 30/07/06
ÎÑ : äëÿ ïîëíîãî ôóíêöèîíèðîâàíèÿ Kolibri 0.5.8.0 è ñòàðøå
forum : meos.sysbin.com -> Ïðîãðàììû -> GMon
file : http://iam.gorodok.net/Gmon.zip
mailto : ghost.nsk@mail.ru
 
Íàçíà÷åíèå :
Ìîíèòîðèíã òåìïåðàòóðû è ñêîðîñòè âðàøåíèÿ âåíòèëÿòîðîâ ïðîöåññîðà è
ìàòåðèíñêîé ïëàòû, ñòðåññ òåñòèðîâàíèå íàä¸æíîñòè ñèñòåìû îõëàæäåíèÿ è áëîêà
ïèòàíèÿ êîìïüþòåðà.
 
Ìîíèòîðèíã :
 íàñòîÿùåå âðåìÿ îòîáðàæàþòñÿ çàãðóçêà ïðîöåññîðà, çàãðóçêà ïàìÿòè, òåìïåðàòóðà, ñêîðîñòè
âðàøåíèÿ âåíòèëÿòîðîâ è íàïðÿæåíèå. Ïîääåðæèâàåìûå ÷èïû ìîíèòîðèíãà :
WinBond chip : W83627HF/THF/THF-A/EHF-A, W83637THF, W83697HF, è àíàëîãè.
Integrated Technology Express : IT8705F, IT8712F, IT8716F, è àíàëîãè.
SiS : sis950 (àíàëîã IT8705F)
Ôóíêöèè ìîíèòîðèíãà òåìïåðàòóðû ìîæíî ïðîâåðèòü â Windows íà ýìóëÿòîðå KlbrInWin, äëÿ ýòîãî
íåîáõîäèìî â ôàéëå íàñòðîåê íàïèñàòü EnablePorts 295 296
 
Òåñòû :
Òåñòû îðèåíòèðîâàíû íà ïðîöåññîðû P5, P6, K6 è K7, îñíîâàíû íà Robert Redelmeier's CPUburn
[http://pages.sbcglobal.net/redelm/]. Öëÿ òåñòèðîâàíèÿ Pentium 4, ðåêîìåíäóþ òåñò äëÿ K7, äëÿ
îñòàëüíûõ ïðîöåññîðîâ ïîäáåðèòå ïî ìàêñèìàëüíîé òåìïåðàòóðå (íàïèøèòå ìíå îá ýòîì).
Âíèìàíèå! Ïðîãðàììà íå ðåàãèðóåò íà êðèòè÷åñêèé ïîðîã òåìïåðàòóðû, ïîýòîìó äëÿ èçáåæàíèÿ
ïîð÷è îáîðóäîâàíèÿ íå îñòàâëÿéòå çàïóøåííûé òåñò áåç ïðèñìîòðà!  ñâÿçè ñ ðàçëè÷èåì â
ðåàëèçàöèè ôóíêöèè 18-2, äëÿ Menuet è Kolibri íåîáõîäèìû ðàçëè÷íûå ðåàëèçàöèè ïðîãðàììû, ïî
óìîë÷àíèþ êîìïèëèðóåòñÿ äëÿ Kolibri 0.5.8.0, ïðè íåîáõîäèìîñòè èçìåíèòå ïðîöåäóðó stop_test â
system.inc. Òåñòû ðàáîòàþò îäèíàêîâî ýôôåêòèâíî êàê íà ðåàëüíîì îáîðóäîâàíèè, òàê è íà
âèðòóàëüíûõ ìàøèíàõ.
 
Íà áóäóùåå :
Íîâûå ÷èïû
Ðåàêöèÿ íà êðèòè÷åñêèé ïîðîã òåìïåðàòóðû
Ïðîâåêà íàä¸æíîñòè ñõåì ïèòàíèÿ
 
Îñîáàÿ áëàãîäàðíîñòü âñåì ó÷àñòíèêàì ôîðóìà.
Íàéäåííûå îøèáêè è ïðåäëîæåíèÿ ïèøèòå â ôîðóì èëè íà ïî÷òó.
 
ÂÍÈÌÀÍÈÅ !!! ÂÎÇÌÎÆÍÀ ÏÎÐ×À ÎÁÎÐÓÖÎÂÀÍÈß!
ÈÑÏÎËÜÇÓÉÒÅ ÍÀ ÑÂÎÉ ÑÒÐÀÕ È ÐÈÑÊ!
 
Ïðîãðàììà ðàñïîñòðàíÿåòñÿ "as is", è àâòîð íå íåñåò îòâåòñòâåííîñòè çà âîçìîæíûé óùåðá, ïðè÷èíåííûé
ïðîãðàììîé.
 
==[CP866]=========================================
 
Ghost Monitor
€¢â®à : Œ¨å ©«®¢ ˆ«ìï €­¤à¥¥¢¨ç aka Ghost
‚¥àá¨ï : 0.3 ®â 30/07/06
Ž‘ : ¤«ï ¯®«­®£® ä㭪樮­¨à®¢ ­¨ï Kolibri 0.5.8.0 ¨ áâ àè¥
forum : meos.sysbin.com -> à®£à ¬¬ë -> GMon
file : http://iam.gorodok.net/Gmon.zip
mailto : ghost.nsk@mail.ru
 
 §­ ç¥­¨¥ :
Œ®­¨â®à¨­£ ⥬¯¥à âãàë ¨ ᪮à®á⨠¢à è¥­¨ï ¢¥­â¨«ïâ®à®¢ ¯à®æ¥áá®à  ¨
¬ â¥à¨­áª®© ¯« âë, áâà¥áá â¥áâ¨à®¢ ­¨¥ ­ ¤ñ¦­®á⨠á¨áâ¥¬ë ®å« ¦¤¥­¨ï ¨ ¡«®ª 
¯¨â ­¨ï ª®¬¯ìîâ¥à .
 
Œ®­¨â®à¨­£ :
‚ ­ áâ®ï饥 ¢à¥¬ï ®â®¡à ¦ îâáï § £à㧪  ¯à®æ¥áá®à , § £à㧪  ¯ ¬ïâ¨, ⥬¯¥à âãà , ᪮à®áâ¨
¢à è¥­¨ï ¢¥­â¨«ïâ®à®¢ ¨ ­ ¯à殮­¨¥. ®¤¤¥à¦¨¢ ¥¬ë¥ ç¨¯ë ¬®­¨â®à¨­£  :
WinBond chip : W83627HF/THF/THF-A/EHF-A, W83637THF, W83697HF, ¨  ­ «®£¨.
Integrated Technology Express : IT8705F, IT8712F, IT8716F, ¨  ­ «®£¨.
SiS : sis950 ( ­ «®£ IT8705F)
”㭪樨 ¬®­¨â®à¨­£  ⥬¯¥à âãàë ¬®¦­® ¯à®¢¥à¨âì ¢ Windows ­  í¬ã«ïâ®à¥ KlbrInWin, ¤«ï í⮣®
­¥®¡å®¤¨¬® ¢ ä ©«¥ ­ áâ஥ª ­ ¯¨á âì EnablePorts 295 296
 
’¥áâë :
’¥áâë ®à¨¥­â¨à®¢ ­ë ­  ¯à®æ¥áá®àë P5, P6, K6 ¨ K7, ®á­®¢ ­ë ­  Robert Redelmeier's CPUburn
[http://pages.sbcglobal.net/redelm/]. –«ï â¥áâ¨à®¢ ­¨ï Pentium 4, ४®¬¥­¤ãî â¥áâ ¤«ï K7, ¤«ï
®áâ «ì­ëå ¯à®æ¥áá®à®¢ ¯®¤¡¥à¨â¥ ¯® ¬ ªá¨¬ «ì­®© ⥬¯¥à âãॠ(­ ¯¨è¨â¥ ¬­¥ ®¡ í⮬).
‚­¨¬ ­¨¥! à®£à ¬¬  ­¥ ॠ£¨àã¥â ­  ªà¨â¨ç¥áª¨© ¯®à®£ ⥬¯¥à âãàë, ¯®í⮬㠤«ï ¨§¡¥¦ ­¨ï
¯®àç¨ ®¡®à㤮¢ ­¨ï ­¥ ®áâ ¢«ï©â¥ § ¯ã襭­ë© â¥áâ ¡¥§ ¯à¨á¬®âà ! ‚ á¢ï§¨ á à §«¨ç¨¥¬ ¢
ॠ«¨§ æ¨¨ ä㭪樨 18-2, ¤«ï Menuet ¨ Kolibri ­¥®¡å®¤¨¬ë à §«¨ç­ë¥ ॠ«¨§ æ¨¨ ¯à®£à ¬¬ë, ¯®
㬮«ç ­¨î ª®¬¯¨«¨àã¥âáï ¤«ï Kolibri 0.5.8.0, ¯à¨ ­¥®¡å®¤¨¬®á⨠¨§¬¥­¨â¥ ¯à®æ¥¤ãàã stop_test ¢
system.inc. ’¥áâë à ¡®â îâ ®¤¨­ ª®¢® íä䥪⨢­® ª ª ­  ॠ«ì­®¬ ®¡®à㤮¢ ­¨¨, â ª ¨ ­ 
¢¨àâã «ì­ëå ¬ è¨­ å.
 
  ¡ã¤ã饥 :
®¢ë¥ 稯ë
¥ ªæ¨ï ­  ªà¨â¨ç¥áª¨© ¯®à®£ ⥬¯¥à âãàë
à®¢¥ª  ­ ¤ñ¦­®á⨠á奬 ¯¨â ­¨ï
 
Žá®¡ ï ¡« £®¤ à­®áâì ¢á¥¬ ãç áâ­¨ª ¬ ä®à㬠.
 ©¤¥­­ë¥ ®è¨¡ª¨ ¨ ¯à¥¤«®¦¥­¨ï ¯¨è¨â¥ ¢ ä®à㬠¨«¨ ­  ¯®çâã.
 
‚ˆŒ€ˆ… !!! ‚Ž‡ŒŽ†€ Ž—€ ŽŽ“–Ž‚€ˆŸ!
ˆ‘Ž‹œ‡“‰’… € ‘‚Ž‰ ‘’€• ˆ ˆ‘Š!
 
à®£à ¬¬  à á¯®áâà ­ï¥âáï "as is", ¨  ¢â®à ­¥ ­¥á¥â ®â¢¥âá⢥­­®á⨠§  ¢®§¬®¦­ë© ãé¥à¡, ¯à¨ç¨­¥­­ë©
¯à®£à ¬¬®©.
/programs/system/gmon/system.inc
0,0 → 1,371
;--------------------------------------------------------------------
; Çàãðóçêà ïðîöåññîðà
; OUT : AL - çàãðóçêà â ïðîöåíòàõ
cpu_usage:
pusha
mov byte [c_u_t], 0
mov eax, 18 ; TSC / SEC
mov ebx, 5
int 0x40
shr eax, 20
push eax
 
mov eax, 18 ; IDLE / SEC
mov ebx, 4
int 0x40 ; eax - ïóñòûõ öèêëîâ â ñåêóíäó
shr eax, 20 ; eax = IDLE / 1048576
pop ebx
cmp eax, ebx ; BUG : time to time ICPS > TSCPS
jnl c_u_o
push ebx
xor edx, edx
mov ebx, 100
mul ebx ; eax =(IDLE / 1048576) * 100
 
xor edx, edx
pop ebx ; ebx = (TSC/1048576)+1
inc ebx
div ebx ; eax = ((IDLE / 1048576) * 100) / ((TSC/1048576)+1)
 
mov bl, 100
sub bl, al
cmp bl, 101
jnl c_u_o
mov [c_u_t], bl
 
c_u_o: popa
mov al, [c_u_t]
ret
uglobal
c_u_t: db 0
endg
;--------------------------------------------------------------------
mem_usage:
; Èñïðîëüçîâàíèå ïàìÿòè
; OUT : al - ïðîöåòí èñïðîëüçóåìîé ïàìÿòè
display nl, 'Memory usage : '
if (OS_version >= 0x0530)
display 'yes'
pusha
mov byte [m_u_t], 0
 
mov eax, 18 ; full mem
mov ebx, 17
int 0x40
shr eax, 10
push eax
 
mov eax, 18 ; free mem
mov ebx, 16
int 0x40 ; eax - free mem
shr eax, 10 ; eax = fmem / 1024
xor edx, edx
mov ebx, 100
mul ebx ; eax =(free mem / 1024) * 100
 
xor edx, edx
pop ebx ; ebx = (full mem/1024)+1
inc ebx
div ebx ; eax = ((free mem / 1024) * 100) / ((full mem/1024)+1)
 
mov bl, 100
sub bl, al
cmp bl, 101
jnb m_u_o
mov [m_u_t], bl
 
m_u_o: popa
mov al, [m_u_t]
ret
uglobal
m_u_t: db 0
endg
else
display 'no'
xor eax, eax
ret
end if
 
;#######################################################################
stop_test:
; ïîðòÿòñÿ ðåãèñòðû
display nl, 'Kill process type : '
if (OS_version < 0x0400)
; êîä äëÿ Menuet
display 'Menuet'
mov eax, 18
mov ebx, 2
mov ecx, [test_pid]
int 0x40
mov byte[test_id], 0
ret
; -------------------------------
else if (OS_version >= 0x0400)
if (OS_version < 0x0580)
display 'old Kolibri'
; -- ñëåäóéøèé êîä óáèâàåò ïðîöåññ â Kolibri 4 è ñòàðøå
mov ebx, Buf
xor ecx, ecx
find_th:mov eax, 9
int 0x40
mov edx, dword [Buf + 30]
cmp edx, dword [test_pid]
je kill_t
inc ecx
cmp ecx, eax ; eax - êîëè÷åñòâî ïðîöåññîâ
jle find_th
jmp cl_tinf ; ÎØÈÁÊÀ !!!! ïîòîê íå íàéäåí !!!!
kill_t: mov ebx, 2 ; óáèâàåì òåñòîâûé ïîòîê
mov eax, 18
int 0x40
cl_tinf:
mov byte[test_id], 0
ret
uglobal
Buf: times 1024 db ? ; Áóôåð äëÿ íàõîæäåíèÿ PID`à çàïóùåííîãî òåñòà
endg
else
; -------------------------------
; êîä äëÿ Kolibri 0.5.8.0 è ñòàðøå
display 'Kolibri 0.5.8.0'
mov eax, 18
mov ebx, 18
mov ecx, [test_pid]
int 0x40
mov byte [test_id], 0
ret
; -------------------------------
end if
end if
;#######################################################################
 
; Âûâîäèò ñòðîêè òåêñòà
; in : edx - óêàçàòåëü íà mls
; ebx - êîîðäèíàòû : X << 16 + Y
show_text:
mov eax, 4
mov ecx, 0x10000000
@@:
movzx esi, byte[edx]
inc edx
int 0x40
add ebx, 10
add edx, esi
cmp byte[edx], -1
jne @b
ret
;---------------------------------------------------------------------
multiplier:
;--- âû÷èñëåíèå êîýôôèöèåíòà óìíîæåíèÿ -
; ïîðòèò ðåãèñòðû
; out : CL = êîýôô.óìíîæåíèÿ * 10, èëè 0
xor ecx, ecx
if (OS_version >= 0x0510)
display nl, 'Multiplier : yes'
cmp dword [Vendor + 8], 'cAMD' ; Check for Advanced Micro Devices CPU
jne noAMD
cmp byte [CPU_fam], 5
jne noAMDK6
mov eax, 68 ; AMD-K6 (p.30)
mov ebx, 3
mov edx, 0x0C0000087
int 0x40 ; eax - low dword
and eax, 111b
mov cl, [athloncoef3 + eax]
cmp eax, 6
jne @f
cmp byte[CPU_mod], 8
jae @f
mov cl, 20
@@: ret
noAMDK6:cmp byte [CPU_fam], 6
jne noAMDK7
mov eax, 68 ; Athlon/AthlonXP
mov ebx, 3
mov edx, 0x0C0010015
int 0x40
mov ebx, eax
shr ebx, 24
and ebx, 0x0F
shr eax, 20
jc @f
mov cl, [athloncoef + ebx]
ret
@@: mov cl, [athloncoef2 + ebx]
ret
noAMD: cmp dword [Vendor + 8], 'ntel' ; Check for International Electronics CPU
jne noIntel
cmp byte[CPU_fam], 0x0F
jne noIntelP4
cmp byte [CPU_type], 6
jne @f
mov eax, 68 ; Pentium M
mov ebx, 3
mov edx, 0x2A
int 0x40
shr eax, 22
and eax, 0x1F
mov dl, 10
mul dl
mov cl, al
ret
@@: cmp byte [CPU_mod], 2
jae @f
mov eax, 68 ; Pentium 4 / Xeon (model < 2)
mov ebx, 3
mov edx, 0x2A
int 0x40
shr eax, 8
and eax, 0x0F
mov cl, [p4coef + eax]
ret
@@: mov eax, 68 ; Pentium 4 / Xeon (model >= 2)
mov ebx, 3
mov edx, 0x2C
int 0x40
; shr eax, 24
; and eax, 0x1F
shr eax, 27
and al, 0Fh
add al, 8
mov dl, 10
mul dl
mov cl, al
ret
noIntelP4:
cmp byte[CPU_fam], 6
jne noIntelP6
mov eax, 68 ; Pentium Pro / Pentium II / Pentium III
mov ebx, 3
mov edx, 0x2A
int 0x40
shr eax, 22
test al, 0x20
jz @f
or al, 0x10
@@: and eax, 0x1f
 
cmp byte[CPU_mod], 0x06 ; ? 7
ja @f
and al, 0x0f
@@:
mov cl, [coppercoeff + eax]
cmp byte[CPU_mod], 0x0B
jb @f
mov cl, [tualatcoeff + eax]
@@: ret
 
noIntel:
noIntelP6:
noAMDK7:
ret
 
athloncoef db 110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105
athloncoef2 db 120, 190, 120, 200, 130, 135, 140, 210, 150, 220, 160, 165, 170, 180, 230, 240
athloncoef3 db 45, 50, 40, 55, 25, 30, 60, 35
p4coef db 160, 170, 180, 190, 200, 210, 220, 230, 80, 90, 100, 110, 120, 130, 140, 150 ; Pentium 4
coppercoeff db 50, 30, 40, 20, 55, 35, 45, 25, 35, 70, 80, 60, 20, 75, 15, 65, 90, 110, 120, 20, 95, 115, 85, 25, 35, 70, 80, 100, 20, 75, 15, 105
tualatcoeff db 120, 35, 35, 40, 55, 35, 115, 35, 160, 70, 80, 60, 40, 75, 35, 65, 90, 110, 35, 35, 95, 35, 85, 35, 35, 35, 130, 100, 140, 35, 150, 105
else
display nl, 'Multiplier : no'
ret
end if
;---------------------------------------------------------------------
digit_len:
; Âû÷èñëåíèå äëèííû ÷èñëà äëÿ ôóíê. 47
; ecx - ÷èñëî
; ebx - äëèííà * 65536
pusha
xor ebx, ebx
mov eax, ecx
mov esi, 10
@@: xor edx, edx
inc ebx
div esi
test eax, eax
jnz @b
mov [tdl], ebx
popa
mov ebx, [tdl]
shl ebx, 16
ret
uglobal
tdl dd 0
endg
 
 
;--------------------------------------------------------------------
ftoa:
; esi - ïðåîáðàçóåìîå ÷èñëî;
; Data_String - ñòðîêà-ðåçóëüòàò.
 
pusha
mov edi, Data_String
fninit
fld dword [esi]
fmul dword [MConst]
fbstp [Data_BCD]
mov ax, word[Data_BCD + 8]
cmp ax, 0xFFFF
je @@Overflow
mov al, byte[Data_BCD + 9]
and al, al
jz @@NoSign
mov AL,'-'
stosb
@@NoSign:
mov ebx, 8
mov ecx, 9
mov edx, 18 - 2 ; 2 çíàêà ïîñëå çàïÿòîé
@@NextPair:
mov al, byte[Data_BCD + ebx]
mov AH,AL
shr AL,4
add AL,'0'
stosb
dec edx
jnz @@N0
mov AL,'.'
stosb
@@N0: mov AL,AH
and AL,0Fh
add AL,'0'
stosb
dec edx
jnz @@N1
mov AL,'.'
stosb
@@N1: dec ebx
loop @@NextPair
xor al, al
stosb
mov edi, Data_String
mov esi, Data_String
cmp byte[esi], '-'
jne @@N2
inc esi
inc edi
@@N2: mov ecx, 18+1+1
@@N3: cmp byte[esi], '0'
jne @@N4
inc esi
loop @@N3
jmp @@Error
@@N4: rep movsb
jmp @@End
@@Overflow:
@@Error:mov eax, 'ERR'
stosd
@@End: popa
ret
MConst: dd 1.0E2 ; 2 çíàêà ïîñëå çàïÿòîé
 
uglobal
Data_BCD: DT ?
Data_String: times 20 db 0 ; ASCIIZ ñòîðêà ñ ïðåîáðàçîâàííûì ÷èñëîì
endg
;--------------------------------------------------------------------
/programs/system/gmon/test_tab.inc
0,0 → 1,139
;
;
;
; Âêëàäêà òåñòîâ
;
;
;
;
; "GenuineIntel" - International Electronics
; "GenuineTMx86" - Transmeta Processor
; "AuthenticAMD" - Advanced Micro Devices
; "AMD ISBETTER" - Advanced Micro Devices
; "UMC UMC UMC " - United Microelectronics Corporation
; "CyrixInstead" - Cyrix Processor
; "Geode by NSC" - National Semiconductor Processor
; "SiS SiS SiS " - SiS Processor
; "RiseRiseRise" - Rise Processor
; "NexGenDriven" - NexGen Processor (acquired by AMD)
; "CentaurHauls" - IDT/Centaur, now VIA Processor
 
; Pentium (P5) button
mov eax, 8
mov ebx, 17 * 65536 + 145
mov ecx, 277 * 65536 + 25
mov edx, 6
mov esi, tcol
cmp byte[Vendor + 11], 'l'
jne p5n
cmp byte[CPU_fam], 5
jne p5n
mov esi, atcol
p5n: int 0x40
; Pentium Pro / II / III (P6) button
add ecx, 27 * 65536
inc edx
mov esi, tcol
cmp byte[Vendor + 11], 'l'
jne p6n
cmp byte[CPU_fam], 6
jne p6n
mov esi, atcol
p6n: int 0x40
; AMD K6 button
add ecx, 27 * 65536
inc edx
mov esi, tcol
cmp byte[Vendor], 'A'
jne k6n
cmp byte[CPU_fam], 5
jne k6n
mov esi, atcol
k6n: int 0x40
; AMD K7 (Athlon / Duron)
add ecx, 27 * 65536
inc edx
mov esi, tcol
cmp byte[Vendor], 'A'
jne k7n
cmp byte[CPU_fam], 6
jne k7n
mov esi, atcol
k7n: int 0x40
; MMX òåñò
; add ecx, 27 * 65536
; inc edx
; mov esi, tcol
; cmp byte[CPU_mmx], 1
; jne mmxn
; mov esi, atcol
; mmxn: int 0x40
; Ïèøåì íàçâàíèÿ êíîïîê
mov eax, 4
mov ebx, 30 * 65536 + 287
mov esi, 7
mov edx, tmsg_p ; P5
mov ecx, 0x10000000
cmp byte[test_id], 6
jne nr1
mov ecx, 0x10FF0000
nr1: int 0x40
mov ebx, 30 * 65536 + 287 + 27
mov esi, 20 ; P6
mov ecx, 0x10000000
cmp byte[test_id], 7
jne nr2
mov ecx, 0x10FF0000
nr2: int 0x40
mov ebx, 30 * 65536 + 287 + 27 + 27
mov edx, tmsg_k6 ; K6
mov esi, 13
mov ecx, 0x10000000
cmp byte[test_id], 8
jne nr3
mov ecx, 0x10FF0000
nr3: int 0x40
mov ebx, 30 * 65536 + 287 + 27 + 27 + 27
mov edx, tmsg_k7 ; K7
mov esi, 15
mov ecx, 0x10000000
cmp byte[test_id], 9
jne nr4
mov ecx, 0x10FF0000
nr4: int 0x40
; mov ebx, 30 * 65536 + 287 + 27 + 27 + 27 + 27
; mov edx, tmsg_mmx ; MMX
; mov esi, 12
; mov ecx, 0x10000000
; cmp byte[test_id], 10
; jne nr5
; mov ecx, 0x10FF0000
; nr5: int 0x40
; recommendate
mov ecx, 0x10000000
mov ebx, 190 * 65536 + 400
mov edx, tmsg_rec
mov esi, 14
int 0x40
; read about
mov ebx, 30 * 65536 + 262
mov edx, tmsg_war
mov esi, 34
mov ecx, 0x10FF0000
int 0x40
; recommendate color
mov eax, 13
mov ebx, 170 * 65536 + 10
mov ecx, 398 * 65536 + 10
mov edx, atcol
int 0x40
jmp end_drow_tab
tmsg_p db 'Pentium (Pro/II/III)' ; 7/20
tmsg_k6 db 'K6 (I/II/III)' ; 13
tmsg_k7 db 'K7/Athlon/Duron' ; 15
;tmsg_mmx db 'MMX (memory)' ; 12
tmsg_rec db '- recommendate' ; 14
tmsg_war db 'May permanent damage to electronic' ; 34
/programs/system/gmon/tests.inc
0,0 → 1,236
;
;
; k6, k7, p5 & p6 based on Robert Redelmeier's burnCPU tests
; ported by Ghost
;
; Çàìåòêè :
; ïåðåïèñòü ðåàêöèþ íà îøèáêè
 
k6:
finit
push ebp
mov ebp, esp
and ebp, -32
sub esp, 96
fldpi
fld qword [rtt]
fstp qword [ebp - 24]
fld qword [e]
fstp qword [ebp - 32]
mov edx, [half]
mov [ebp - 8], edx
k6_after_check:
xor eax, eax
mov ebx, eax
lea esi, [eax - 1]
mov ecx, 400000000
mov [ebp - 4], ecx
align 32
;rev. eng. win. ver. (lea esi, [esi]) ; Ghost
k6_crunch:
fld qword [ebp+esi*8-16] ; CALC BLOCK
fmul qword [ebp+esi*8-24]
add edx, [half + 9 + esi + esi * 8] ;!!!
jnz $ + 2
faddp
fld qword [ebp+esi*8-16]
dec ebx
sub edx, [half + 9 + esi + esi * 8] ;!!!
jmp $ + 2
fmul qword [ebp+esi*8-24]
inc ebx
dec dword [ebp+esi*8+4]
fsubp
jnz k6_crunch ; time for testing ?
 
test ebx, ebx ; TEST BLOCK
jnz k6_int_exit
cmp edx, [half]
jnz k6_int_exit
fldpi
fcomp st1
fstsw ax
sahf
jz k6_after_check
dec ebx
k6_int_exit:
dec ebx
add esp, 96
pop ebp
mov eax, -1
int 0x40
;#######################################################################
;#######################################################################
k7: finit
mov ebp, esp
and ebp,-32
sub esp,96
fld qword [rtt]
fstp qword [ebp-40]
fld qword [e]
fstp qword [ebp-32]
fldpi
fldpi
xor eax, eax
xor ebx, ebx
xor ecx, ecx
mov edx, half
lea esi,[eax-1]
mov [ebp-12], eax
mov [ebp-8], edx
 
k7_after_check:
mov dword[ebp-4], 0x32A9F880;0x850000000 ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ALIGN 16
k7_crunch:
fxch ; CALC BLOCK
fld qword [ebp+esi*8-24] ; 17 instr / 6.0 cycles
fmul qword [ebp+esi*8-32]
faddp
dec ecx
fld qword [ebp+esi*8-24]
dec ebx
inc dword [ebp+esi*8-12]
inc ecx
fmul qword [ebp+esi*8-32]
inc ebx
dec dword [ebp+esi*8-4]
jmp $+2
fsubp st2, st0
jnz k7_crunch ; time for testing ?
test ebx, ebx ; TEST BLOCK
jnz k7_int_exit
test ecx, ecx
jnz k7_int_exit
cmp edx, half
jnz k7_int_exit
fcom st1
fstsw ax
sahf
jz k7_after_check
dec ebx
k7_int_exit:
dec ebx
add esp,96
mov eax, -1
int 0x40
;#######################################################################
;#######################################################################
p5: finit
push ebp
mov ebp, esp
and ebp, -32
sub esp, 96
fld qword [half]
fstp qword [ebp - 24]
fld qword [rtt]
fst qword [ebp - 16]
fld st
fld st
p5_after_check:
xor eax, eax
mov eax, ebx
mov ecx, 200000000
align 32
;# MAIN LOOP 16 flops / 18 cycles
p5_crunch:
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
 
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
 
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
fmul qword [ebp - 24]
fxch st1
fadd qword [ebp - 16]
fxch st2
dec ecx
jnz p5_crunch
 
jmp p5_after_check
;#######################################################################
;#######################################################################
p6: finit
push ebp
mov ebp, esp
and ebp, -32
sub esp, 96
fldpi
fld qword [rtt]
fstp qword [ebp - 24]
fld qword [e]
fstp qword [ebp - 32]
mov edx, [half]
mov [ebp - 8], edx
p6_after_check:
xor eax, eax
mov ebx, eax
lea esi, [eax - 1]
mov ecx, 539000000 ;# check after this count
mov [ebp - 4], ecx
align 32
p6_crunch: ;# MAIN LOOP 21uops / 8.0 clocks
fld qword [ebp+esi*8-16]
fmul qword [ebp+esi*8-24]
add edx, [half]
jnz $ + 2
faddp
fld qword [ebp - 24]
dec ebx
sub edx, [half + 9 + esi + esi*8]
jmp $ + 2
fmul qword [ebp+esi*8-24]
inc ebx
dec dword [ebp+esi*8+4]
fsubp
jnz p6_crunch
 
test ebx, ebx ;# Testing block
mov ebx, 0
jnz p6_int_exit
cmp edx, [half]
jnz p6_int_exit
fldpi
fcomp st1
fstsw ax
sahf
jz p6_after_check ;# fp result = pi ?
dec ebx
p6_int_exit: ;# error abort
dec ebx
add esp, 96
pop ebp
mov eax, -1
int 0x40
;---------------------------------------------
align 32
half dd 0x7fffffff, 0
e dd 0xffffffff, 0x3fdfffff
rtt dd 0xffffffff, 0x3fefffff
/programs/system/icon/trunk/macros.inc
218,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/kbd/trunk/macros.inc
123,8 → 123,10
end if
}
 
macro __mov reg,a { ; mike.dld
if ~a eq
macro __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b eq)
mov reg,a
end if
}
141,11 → 143,6
 
 
 
; 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>
 
177,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
221,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/launcher/trunk/macros.inc
143,10 → 143,6
 
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
178,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
222,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/menu/trunk/macros.inc
143,10 → 143,6
 
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
178,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
222,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/panel/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/panel/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/panel/trunk/build.bat
0,0 → 1,2
@fasm @panel.asm @panel
@pause
/programs/system/pcidev/trunk/PCIDEV.ASM
1,12 → 1,12
;***************************************************************
; project name: PCI Device Enumeration
; target platform: KolibriOS and MenuetOS
; compiler: flat assmebler 1.63.2
; version: 1.31
; last update: 13(th) May 2006
; maintained by: Jason Delozier (cordata51)
; e-mail: cordata51@hotmail.com
; project site: http://www.asmfreaks.com/menuetos
; compiler: flat assmebler 1.66
; version: 2.0
; last update: 30(th) August 2006
; maintained by: Jason Delozier and Sergey Kuzmin
; e-mail: cordata51@hotmail.com and kuzmin_serg@list.ru
; project site: http://www.coolthemes.narod.ru/pcidev.html
;***************************************************************
;Summary: This program will attempt to scan the PCI Bus
; and display basic information about each device
15,9 → 15,27
;HISTORY:
;keep dates in european format (dd/mm/yyyy), please
; '!' means big changes
;
; to-do:
;PCI version should be normalized (0210->02.10)
; PCI version should be normalized 0210 -> 02.10 (it is BCD number)
; vendor's website
; more vendors
; device IRQ
; Subsystem id and Subsystem vendor id detection
 
; Full device detection (like "ATI Radeon 9200") will increase app
; size a lot and probably it is function of particular drivers
;----------------------------------------------------------------
;2.0: PCIDEV 30/08/2006
;(it differs a lot from the version 1.0, which was introduced 19 months ago)
;Author: Marat Zakiyanov aka Mario79 <mario79@bk.ru>
; Sergey Kuzmin aka Wildwest <kuzmin_serg@list.ru>
;Features:
; added
; * Detection of Interface by Mario79
; * 122 vendor id's by Wildwest
; * Description is based on Class, SubClass and Interface now (PCI 3.0) by Wildwest
;----------------------------------------------------------------
;1.31: PCIDEV 13/05/2006
;Author: Jason Delozier <cordata51@hotmail.com>
;Features:
117,8 → 135,7
 
 
include 'macros.inc'
include 'vendors.inc'
include 'lang.inc'
include 'VENDORS.INC'
 
START: ; start of execution
call draw_window
209,7 → 226,7
mov ebx, 20*65536+25 ;x start, ystart of text
mov ecx, 0x224466 ;color of text
mov edx, dword PCIWin ;start of text buffer
mov esi, 106 ;lenght of line
mov esi, 106 ;lenght of line 106
newline: ;
mov eax, 4 ;draw text system function
int 0x40 ;draw the text
224,8 → 241,8
shl ebx, 16 ;
mov bx,word [Form] ;get width of window
sub bx, 32 ;bar is 32 pixels shorter then window width
mov ecx, 109*65536+10 ;set Ystart(109) and Height(10) of bar
mov edx, 0xb6b6b6 ;set color of bar
mov ecx, 119*65536+10 ;set Ystart(109) and Height(10) of bar 109
mov edx, 0xC0C0C0 ;set color of bar
again: ;begin draw bar loop
int 0x40 ;draw bar to window area
shr ecx, 16 ;move the Ystart position to working area
271,7 → 288,7
 
 
;******************************************************
;* Gets the PCI Versioin and Last Bus
;* Gets the PCI Version and Last Bus
Get_PCI_Info:
mov eax, 62
xor ebx, ebx
326,6 → 343,12
mov cl, 0x0a ;Register to read (Get Subclass)
int 0x40 ;Read it
mov byte [PCI_SubClass], al ;Save it
; from Mario79 august 2006
mov eax, 62 ;PCI Sys Function
mov cl, 0x09 ;Register to read (Get Interface)
int 0x40 ;Read it
mov [PCI_Interface], al ;Save it
;
inc byte [total] ;one more device found
call Print_New_Device ;print device info to screen
nextDev:
378,9 → 401,15
movzx ecx,byte [PCI_Class] ;get PCI_Class
int 0x40 ;Draw Class to screen
and edx, 0xFFFF ;*****************************************
or edx, 266*65536 ;X start becomes 266
or edx, 250*65536 ;X start becomes 250
movzx ecx,byte [PCI_SubClass];get sub class
int 0x40 ;Draw Sub Class to screen
; from Mario79 august 2006
and edx, 0xFFFF ;*****************************************
or edx, 280*65536 ;X start becomes 280
movzx ecx, [PCI_Interface] ;get Interface
int 0x40
;
;Write Names
movzx ebx, dx ;Set y position
or ebx, 310*65536 ;set Xposition to 310
396,22 → 425,22
;first determine which list to find the vendor in
mov ax, word [PCI_Vendor]
mov ecx, 255 ;# vendors in most lists
cmp ax,4800 ;Check if Vendor's value is less than this number
cmp ax,4540 ;Check if Vendor's value is less than this number (the start of next part)
jae next1 ;if it is less, let's continue, or jump to next1
mov edx, _FIRSTPART ;select this list
jmp rep1 ;start searching list
next1: ;
cmp ax,5314 ;same thing happening here as above^
cmp ax,5120 ;same thing happening here as above^
jae next2 ;
mov edx, _SECONDPART ;
jmp rep1 ;
next2: ;
cmp ax,5574 ;
cmp ax,5459 ;
jae next3 ;
mov edx, _THIRDPART ;
jmp rep1 ;
next3: ;
mov ecx, 110 ;only 110 vendors in this list
mov ecx, 222 ;only 222 vendors in this list
mov edx, _FOURTHPART ;
 
rep1:
428,7 → 457,6
mov eax,4 ;OS CMD
mov esi,50 ;Length of text
int 0x40 ;Print the text
;------------------------------------------------------------------
 
;------------------------------------------------------------------
;Get description based on Class/Subclass
438,14 → 466,556
shl eax, 3 ;multiply for jump table
mov ecx, [ClassList+eax+4] ;number of descriptions for this class
mov edx, [ClassList+eax] ;start of description list for class
movzx eax, byte [PCI_SubClass] ;get subclass
 
mov al, byte [PCI_SubClass] ;get subclass
; mov ah, byte [PCI_Interface] ;get subclass
repu1:
cmp al,byte[edx+32] ;are subclasses the same?
je endd ;if so jump to print the description to screen
je interface_check ;if so jump to print the description to screen
add edx, 33 ;if not put us at start of next description
dec ecx ;one less description in list
jnz repu1 ;was it our last?
mov edx,_UNKNOWND ;if so its unknown device
jmp endd
 
interface_check:
 
cmp [PCI_Class], 00h
je endd
 
;////////////////////////////
cmp [PCI_Class], 01h
je check01
jmp nextclass02
 
check01:
cmp [PCI_SubClass], 05h
je sc01_05
jmp endd
 
sc01_05:
cmp [PCI_Interface], 20h
je sc01_05_20
cmp [PCI_Interface], 30h
je sc01_05_30
jmp endd
 
 
sc01_05_20:
mov edx,ata1 ; pointer to text beginning
jmp endd
 
sc01_05_30:
mov edx,ata2 ; pointer to text beginning
jmp endd
 
 
;////////////////////////////
nextclass02:
cmp [PCI_Class], 02h
je endd
;////////////////////////////////
cmp [PCI_Class], 03h
je check03
jmp nextclass04
 
check03:
cmp [PCI_SubClass], 00h
je sc03_00
jmp endd
 
sc03_00:
cmp [PCI_Interface], 00000000b
je sc03_00_00000000
cmp [PCI_Interface], 00000001b
je sc03_00_00000001
;jmp endd
 
 
sc03_00_00000000:
mov edx,display1 ; pointer to text beginning
jmp endd
 
sc03_00_00000001:
mov edx,display2 ; pointer to text beginning
jmp endd
;///////////////////////////////
nextclass04:
cmp [PCI_Class], 04h
je endd
 
cmp [PCI_Class], 05h
je endd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cmp [PCI_Class], 06h
 
je check06
jmp nextclass07
 
check06:
cmp [PCI_SubClass], 04h
je sc06_04
 
cmp [PCI_SubClass], 09h
je sc06_09
jmp endd
 
sc06_04:
cmp [PCI_Interface], 00h
je sc06_04_00
cmp [PCI_Interface], 01h
je sc06_04_01
jmp endd
 
 
sc06_04_00:
mov edx,bridge1 ; pointer to text beginning
jmp endd
 
sc06_04_01:
mov edx,bridge2 ; pointer to text beginning
jmp endd
 
;======================================
 
sc06_09:
cmp [PCI_Interface], 40h
je sc06_09_40
cmp [PCI_Interface], 80h
je sc06_09_80
jmp endd
 
 
sc06_09_40:
mov edx,bridge3 ; pointer to text beginning
jmp endd
 
sc06_09_80:
mov edx,bridge4 ; pointer to text beginning
jmp endd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nextclass07:
cmp [PCI_Class], 07h
je check07
jmp nextclass08
 
check07:
cmp [PCI_SubClass], 00h
je sc07_00
 
cmp [PCI_SubClass], 01h
je sc07_01
 
cmp [PCI_SubClass], 03h
je sc07_03
jmp endd
 
;=
sc07_00:
cmp [PCI_Interface], 00h
je sc07_00_00
cmp [PCI_Interface], 01h
je sc07_00_01
cmp [PCI_Interface], 02h
je sc07_00_02
cmp [PCI_Interface], 03h
je sc07_00_03
cmp [PCI_Interface], 04h
je sc07_00_04
cmp [PCI_Interface], 05h
je sc07_00_05
cmp [PCI_Interface], 06h
je sc07_00_06
 
 
sc07_00_00:
mov edx,communication0 ; pointer to text beginning
jmp endd
 
sc07_00_01:
mov edx,communication1 ; pointer to text beginning
jmp endd
 
sc07_00_02:
mov edx,communication2 ; pointer to text beginning
jmp endd
 
sc07_00_03:
mov edx,communication3 ; pointer to text beginning
jmp endd
 
sc07_00_04:
mov edx,communication4 ; pointer to text beginning
jmp endd
 
sc07_00_05:
mov edx,communication5 ; pointer to text beginning
jmp endd
 
sc07_00_06:
mov edx,communication6 ; pointer to text beginning
jmp endd
;=
sc07_01:
cmp [PCI_Interface], 00h
je sc07_01_00
cmp [PCI_Interface], 01h
je sc07_01_01
cmp [PCI_Interface], 02h
je sc07_01_02
cmp [PCI_Interface], 03h
je sc07_01_03
cmp [PCI_Interface], $FE
je sc07_01_FE
 
 
sc07_01_00:
mov edx,communication7 ; pointer to text beginning
jmp endd
 
sc07_01_01:
mov edx,communication8 ; pointer to text beginning
jmp endd
 
sc07_01_02:
mov edx,communication9 ; pointer to text beginning
jmp endd
 
sc07_01_03:
mov edx,communication10 ; pointer to text beginning
jmp endd
 
sc07_01_FE:
mov edx,communication11 ; pointer to text beginning
jmp endd
 
 
;=
sc07_03:
cmp [PCI_Interface], 00h
je sc07_03_00
cmp [PCI_Interface], 01h
je sc07_03_01
cmp [PCI_Interface], 02h
je sc07_03_02
cmp [PCI_Interface], 03h
je sc07_03_03
cmp [PCI_Interface], 04h
je sc07_03_04
 
 
sc07_03_00:
mov edx,communication12 ; pointer to text beginning
jmp endd
 
sc07_03_01:
mov edx,communication13 ; pointer to text beginning
jmp endd
 
sc07_03_02:
mov edx,communication14 ; pointer to text beginning
jmp endd
 
sc07_03_03:
mov edx,communication15 ; pointer to text beginning
jmp endd
 
sc07_03_04:
mov edx,communication16 ; pointer to text beginning
jmp endd
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nextclass08:
cmp [PCI_Class], 08h
je check08
jmp nextclass09
 
check08:
cmp [PCI_SubClass], 00h
je sc08_00
cmp [PCI_SubClass], 01h
je sc08_01
cmp [PCI_SubClass], 02h
je sc08_02
cmp [PCI_SubClass], 03h
je sc08_03
jmp endd
;--
sc08_00:
cmp [PCI_Interface], 00h
je sc08_00_00
cmp [PCI_Interface], 01h
je sc08_00_01
cmp [PCI_Interface], 02h
je sc08_00_02
cmp [PCI_Interface], 10h
je sc08_00_10
cmp [PCI_Interface], 20h
je sc08_00_20
jmp endd
 
 
sc08_00_00:
mov edx,system0 ; pointer to text beginning
jmp endd
 
sc08_00_01:
mov edx,system1 ; pointer to text beginning
jmp endd
 
sc08_00_02:
mov edx,system2 ; pointer to text beginning
jmp endd
 
sc08_00_10:
mov edx,system3 ; pointer to text beginning
jmp endd
 
sc08_00_20:
mov edx,system4 ; pointer to text beginning
jmp endd
 
;--
 
sc08_01:
cmp [PCI_Interface], 00h
je sc08_01_00
cmp [PCI_Interface], 01h
je sc08_01_01
cmp [PCI_Interface], 02h
je sc08_01_02
jmp endd
 
 
sc08_01_00:
mov edx,system5 ; pointer to text beginning
jmp endd
 
sc08_01_01:
mov edx,system6 ; pointer to text beginning
jmp endd
 
sc08_01_02:
mov edx,system7 ; pointer to text beginning
jmp endd
 
 
;--
 
sc08_02:
cmp [PCI_Interface], 00h
je sc08_02_00
cmp [PCI_Interface], 01h
je sc08_02_01
cmp [PCI_Interface], 02h
je sc08_02_02
jmp endd
 
 
sc08_02_00:
mov edx,system8 ; pointer to text beginning
jmp endd
 
sc08_02_01:
mov edx,system9 ; pointer to text beginning
jmp endd
 
sc08_02_02:
mov edx,system10 ; pointer to text beginning
jmp endd
 
;--
sc08_03:
cmp [PCI_Interface], 00h
je sc08_03_00
cmp [PCI_Interface], 01h
je sc08_03_01
jmp endd
 
 
sc08_03_00:
mov edx,system11 ; pointer to text beginning
jmp endd
 
sc08_03_01:
mov edx,system12 ; pointer to text beginning
jmp endd
 
;--
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
nextclass09:
 
cmp [PCI_Class], 09h
je check09
jmp nextclass0A
 
check09:
cmp [PCI_SubClass], 04h
je sc09_04
jmp endd
 
sc09_04:
cmp [PCI_Interface], 00h
je sc09_04_00
cmp [PCI_Interface], 10h
je sc09_04_10
jmp endd
 
 
sc09_04_00:
mov edx,gameport1 ; pointer to text beginning
jmp endd
 
sc09_04_10:
mov edx,gameport2 ; pointer to text beginning
jmp endd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
nextclass0A:
cmp [PCI_Class], 0Ah
je endd
 
cmp [PCI_Class], 0Bh
je endd
;============================================
cmp [PCI_Class], 0Ch
je check0C
jmp nextclass0D
 
check0C:
cmp [PCI_SubClass], 00h
je sc0C_00
cmp [PCI_SubClass], 03h
je sc0C_03
cmp [PCI_SubClass], 07h
je sc0C_07
jmp endd
;;;;;;;;;;;
 
sc0C_00:
cmp [PCI_Interface], 00h
je sc0C_00_00
 
cmp [PCI_Interface], 10h
je sc0C_00_10
 
 
 
sc0C_00_00:
mov edx,serialbus6 ; pointer to text beginning
jmp endd
 
sc0C_00_10:
mov edx,serialbus7 ; pointer to text beginning
jmp endd
;;;;;;;;;;;;;;;;;;;
 
sc0C_03:
cmp [PCI_Interface], 00h
je sc0C_03_00
 
cmp [PCI_Interface], 10h
je sc0C_03_10
 
cmp [PCI_Interface], 20h
je sc0C_03_20
cmp [PCI_Interface], 80h
je sc0C_03_80
 
cmp [PCI_Interface], $FE
je sc0C_03_FE
 
;jmp endd
 
sc0C_03_00:
mov edx,serialbus1 ; pointer to text beginning
jmp endd
 
sc0C_03_10:
mov edx,serialbus2 ; pointer to text beginning
jmp endd
 
 
sc0C_03_20:
mov edx,serialbus3 ; pointer to text beginning
jmp endd
 
sc0C_03_80:
mov edx,serialbus4 ; pointer to text beginning
jmp endd
 
sc0C_03_FE:
mov edx,serialbus5 ; pointer to text beginning
jmp endd
 
;;;;;;;;;;;
 
sc0C_07:
cmp [PCI_Interface], 00h
je sc0C_07_00
 
cmp [PCI_Interface], 01h
je sc0C_07_01
 
cmp [PCI_Interface], 02h
je sc0C_07_02
 
 
sc0C_07_00:
mov edx,serialbus8 ; pointer to text beginning
jmp endd
 
sc0C_07_01:
mov edx,serialbus9 ; pointer to text beginning
jmp endd
 
sc0C_07_02:
mov edx,serialbus10 ; pointer to text beginning
jmp endd
;;;;;;;;;;;;;;;;;;;
;==============================================
nextclass0D:
cmp [PCI_Class], 0Dh
je endd
;;;;;;;;;;;;;;;;;;;;;;;;;;
cmp [PCI_Class], 0Eh
je check0E
jmp nextclass0F
 
check0E:
cmp [PCI_SubClass], 00h
je sc0E_00
jmp endd
 
sc0E_00:
cmp [PCI_Interface], 00h
je sc0E_00_00
cmp [PCI_Interface], 00h ;!!!
ja sc0E_00_xx
jmp endd
 
 
sc0E_00_00:
mov edx,i2o1 ; pointer to text beginning
jmp endd
 
sc0E_00_xx:
mov edx,i2o2 ; pointer to text beginning
jmp endd
 
 
;////////////////////////////
nextclass0F:
cmp [PCI_Class], 0Fh
je endd
 
cmp [PCI_Class], 10h
je endd
 
cmp [PCI_Class], 11h
je endd
 
endd:
and ebx, 0x0000FFFF ;clear X position
or ebx, 0x02300000 ;set X position to 560 pixels
471,30 → 1041,226
; DATA AREA
 
labelt:
db 'PCI Device Enumeration v 1.31 by J. Delozier, S. Kuzmin and V. Hanla'
db 'PCI Device Enumeration v 2.0 by J. Delozier, S. Kuzmin, V. Hanla, M. Zakiyanov'
labellen:
 
if lang eq de
ata1:
db 'Storage - ATA c. w/ single DMA '
ata1len:
 
ata2:
db 'Storage - ATA c. w/ chained DMA '
ata2len:
 
 
display1:
db 'Display - VGA-compatible c. '
display1len:
 
display2:
db 'Display - 8514-compatible c. '
display2len:
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
serialbus1:
db 'Serial Bus - USB Universal HC '
serialbus1len:
 
serialbus2:
db 'Serial Bus - USB Open HC '
serialbus2len:
 
serialbus3:
db 'Serial Bus - USB2 Enhanced HC '
serialbus3len:
 
serialbus4:
db 'Serial Bus - USB w/o specific PI'
serialbus4len:
 
serialbus5:
db 'Serial Bus - USB device (not HC)'
serialbus5len:
 
 
serialbus6:
db 'Serial Bus - IEEE 1394(FireWire)'
serialbus6len:
 
serialbus7:
db 'Serial Bus- IEEE 1394(Open HCI) '
serialbus7len:
 
 
serialbus8:
db 'Serial Bus - IPMI SMIC I. '
serialbus8len:
 
serialbus9:
db 'Serial Bus - IPMI Kybd CSI '
serialbus9len:
 
serialbus10:
db 'Serial Bus - IPMI BTI '
serialbus10len:
;;;;;;;;;;;;;;;;;;;;;;;
bridge1:
db 'Bridge - PCI/PCI '
bridge1len:
 
bridge2:
db 'Bridge - Subtract.Decode PCI/PCI'
bridge2len:
 
bridge3:
db 'Bridge - Semi-transp. PCI/PCI 1 '
bridge3len:
 
bridge4:
db 'Bridge - Semi-transp. PCI/PCI 2 '
bridge4len:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
gameport1:
db 'Input - Gameport c. (generic) '
gameport1len:
 
gameport2:
db 'Input - Gameport c. (legacy) '
gameport2len:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
i2o1:
db 'Intelligent I/O - I/O c. (I2O 1)'
i2o1len:
 
i2o2:
db 'Intelligent I/O - c.(FIFO @ 40h)'
i2o2len:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
communication0:
db 'Communication - Serial (XT) '
communication0len:
 
communication1:
db 'Communication - Serial c.(16450)'
communication1len:
 
communication2:
db 'Communication - Serial c.(16550)'
communication2len:
 
communication3:
db 'Communication - Serial c.(16650)'
communication3len:
 
communication4:
db 'Communication - Serial c.(16750)'
communication4len:
 
communication5:
db 'Communication - Serial c.(16850)'
communication5len:
 
communication6:
db 'Communication - Serial c.(16950)'
communication6len:
;-------------------------------
communication7:
db 'Communication - Parallel port '
communication7len:
 
communication8:
db 'Communication - Bi-dir. par.port'
communication8len:
 
communication9:
db 'Communication - ECP 1.X par.port'
communication9len:
 
communication10:
db 'Communication - IEEE1284 c. '
communication10len:
 
communication11:
db 'Communication - IEEE1284 device '
communication11len:
;-------------------------------
communication12:
db 'Communication - Generic modem '
communication12len:
 
communication13:
db 'Communication -Hayes modem 16450'
communication13len:
 
communication14:
db 'Communication -Hayes modem 16550'
communication14len:
 
communication15:
db 'Communication -Hayes modem 16650'
communication15len:
 
communication16:
db 'Communication -Hayes modem 16750'
communication16len:
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
system0:
db 'System - Generic 8259 PIC '
system0len:
 
system1:
db 'System - ISA PIC '
system1len:
 
system2:
db 'System - EISA PIC '
system2len:
 
system3:
db 'System - I/O APIC interrupt c. '
system3len:
 
system4:
db 'System - I/O(x) APIC interrupt c'
system4len:
;-
system5:
db 'System - Generic 8237 DMA c. '
system5len:
 
system6:
db 'System - ISA DMA c. '
system6len:
 
system7:
db 'System - EISA DMA c. '
system7len:
;--
system8:
db 'System - 8254 system timer '
system8len:
 
system9:
db 'System - ISA system timer '
system9len:
 
system10:
db 'System - EISA (2 system timers) '
system10len:
;--
system11:
db 'System - Generic RTC c. '
system11len:
 
system12:
db 'System - ISA RTC c. '
system12len:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PCIWin:
db 'Im Einstellungsmenue muss der PCI Zugriff eingeschaltet sein. '
db ' '
db ' '
db ' '
db 'PCI Version = '
db ' '
db 'Letzter PCI Bus = '
db ' '
db 'Anzahl von Geraeten = '
db ' '
db ' '
db ' '
db 'VenID DevID Bus# Dev# Fnc Rev Class Subclass Herste'
db 'ller Beschreibung '
db '----- ----- ---- ---- --- --- ----- -------- --------------------'
db '---------------------- ----------------'
db 'x'
else
PCIWin:
db 'Please remember to enable PCI Access to Applications in Setup Menu.'
db ' '
db ' '
503,17 → 1269,19
db ' '
db 'Last PCI Bus = '
db ' '
db 'Number of devices = '
db 'Quantity of devices = '
db ' '
db ' '
db ' '
db 'VenID DevID Bus# Dev# Fnc Rev Class Subclass Comp'
db 'VenID DevID Bus# Dev# Fnc Rev Class Subclass/ Comp'
db 'any Description '
db ' Interface '
db ' '
db '----- ----- ---- ---- --- --- ----- -------- --------------------'
db '---------------------- ----------------'
db 'x'
end if
 
;
 
total db 0
V_Bus db 0
527,8 → 1295,8
PCI_Rev db 0
PCI_Class db 0
PCI_SubClass db 0
PCI_Interface db 0
 
 
Proc_Info:
times 1024 db 0
 
/programs/system/pcidev/trunk/macros.inc
123,8 → 123,10
end if
}
 
macro __mov reg,a { ; mike.dld
if ~a eq
macro __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b eq)
mov reg,a
end if
}
141,11 → 143,6
 
 
 
; 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>
 
177,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
221,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/pcidev/trunk/vendors.inc
1,3 → 1,17
;WriteTextToWindow
macro Text xStart,yStart,rgbColor,pText,nTextLen
{
mov ebx,xStart
shl ebx,16
add ebx,yStart
mov ecx,rgbColor
mov edx,pText
mov esi,nTextLen
mov eax,4
int 0x40
}
 
 
; AUTHOR: Victor Alberto Gil Hancco Laquita <vhanla@gmail.com>
; This list might content mistakes, plz report it
; There are 865 Lists of Vendors' Names
9,10 → 23,13
; changed 11/05/2006: + 3 vendors and no more label 'PREVIOUSVERSIONLIST'
; so the total quantity of vendors is 875 now (changes by Sergey Kuzmin)
 
; changed 16/08/2006: + 122 vendors
; so the total quantity of vendors is 987 now (changes by Sergey Kuzmin)
 
_FIRSTPART: ;lists the 255 Vendor IDs
db 'PARADYNE CORP. '
dw 51 ; 0x0033
db 'REAL 3D '
db 'Lockheed Martin Corp '
dw 61 ; 0x003D
db 'NCIPHER CORP. LTD '
dw 256 ; 0x0100
26,19 → 43,31
dw 4097 ; 0x1001
db 'ATI TECHNOLOGIES INC '
dw 4098 ; 0x1002
db 'ULSI '
dw 4099 ; 0x1003
db 'VLSI TECHNOLOGY INC '
dw 4100 ; 0x1004
db 'NATIONAL SEMICONDUCTOR CORPORATION '
dw 4107 ; 0x100B
db 'Tseng Labs '
dw 4108 ; 0x100C
db 'Weitek '
dw 4110 ; 0x100E
db 'VIDEO LOGIC LTD '
dw 4112 ; 0x1010
db 'Digital Equipment Corporation '
dw 4113 ; 0x1011
db 'Cirrus Logic '
dw 4115 ; 0x1013
db 'IBM '
dw 4116 ; 0x1014
db 'Spea Software AG '
dw 4119 ; 0x1017
db 'UNISYS CORPORATION '
dw 4120 ; 0x1018
db 'ELITEGROUP COMPUTER SYS '
dw 4121 ; 0x1019
db 'NCR '
db 'NCR Corporation '
dw 4122 ; 0x101A
db 'AMERICAN MEGATRENDS '
dw 4126 ; 0x101E
50,6 → 79,8
dw 4130 ; 0x1022
db 'TRIDENT MICROSYSTEMS '
dw 4131 ; 0x1023
db 'Acer Incorporated '
dw 4133 ; 0x1025
db 'DELL COMPUTER CORPORATION '
dw 4136 ; 0x1028
db 'LSI LOGIC CORPORATION '
56,14 → 87,24
dw 4138 ; 0x102A
db 'MATROX GRAPHICS '
dw 4139 ; 0x102B
db 'Asiliant (Chips And Technologies) '
dw 4140 ; 0x102C
db 'Wyse Technologies '
dw 4141 ; 0x102D
db 'TOSHIBA AMERICA '
dw 4143 ; 0x102F
db 'miro Computer Products AG '
dw 4145 ; 0x1031
db 'NEC CORPORATION '
dw 4147 ; 0x1033
db 'Future Domain '
dw 4150 ; 0x1036
db 'AMP '
dw 4152 ; 0x1038
db 'SILICON INTEGRATED SYSTEMS '
dw 4153 ; 0x1039
db 'Hewlett-Packard Company '
dw 4156 ; 0x103C
db 'SYNOPSYS/LOGIC MODELING GROUP '
dw 4159 ; 0x103F
db 'Micron Electronics '
78,21 → 119,31
dw 4168 ; 0x1048
db 'FOUNTAIN TECHNOLOGIES '
dw 4169 ; 0x1049
db 'STMicroelectronics '
dw 4170 ; 0x104A
db 'TEXAS INSTRUMENTS '
dw 4172 ; 0x104C
db 'SONY CORPORATION '
dw 4173 ; 0x104D
db 'Oak Technology '
dw 4174 ; 0x104E
db 'Co-Time Computer Ltd. '
dw 4175 ; 0x104F
db 'WINBOND ELECTRONICS CORP '
dw 4176 ; 0x1050
db 'Anigma Corp. '
dw 4177 ; 0x1051
db 'HITACHI '
dw 4180 ; 0x1054
db 'Standard Microsystems Corp. '
dw 4181 ; 0x1055
db 'Motorola '
dw 4183 ; 0x1057
db 'ETRI '
dw 4184 ; 0x1058
db 'TEKNOR INDUSTRIAL COMPUTERS INC '
dw 4185 ; 0x1059
db 'PROMISE TECHNOLOGY. '
db 'PROMISE TECHNOLOGY '
dw 4186 ; 0x105A
db 'FOXCONN INTERNATIONAL INC '
dw 4187 ; 0x105B
100,10 → 151,18
dw 4189 ; 0x105D
db 'INFOTRONIC AMERICA INC '
dw 4191 ; 0x105F
db 'United Microelectronics '
dw 4192 ; 0x1060
db '8x8 Inc. '
dw 4193 ; 0x1061
db 'OCEAN MANUFACTURING LTD '
dw 4195 ; 0x1063
db 'ALCATEL '
dw 4196 ; 0x1064
db 'Texas Microsystems '
dw 4197 ; 0x1065
db 'Picopower Technology '
dw 4198 ; 0x1066
db 'MITSUBISHI ELECTRIC AMERICA '
dw 4199 ; 0x1067
db 'DIVERSIFIED TECHNOLOGY '
112,6 → 171,8
dw 4201 ; 0x1069
db 'APPLE COMPUTER INC. '
dw 4203 ; 0x106B
db 'Hyundai Electronics America '
dw 4204 ; 0x106C
db 'SEQUENT COMPUTER SYSTEMS '
dw 4205 ; 0x106D
db 'DAEWOO TELECOM LTD '
120,24 → 181,54
dw 4209 ; 0x1071
db 'YAMAHA CORPORATION '
dw 4211 ; 0x1073
db 'Nexgen Microsystems '
dw 4212 ; 0x1074
db 'Chaintech Comp. '
dw 4214 ; 0x1076
db 'QLOGIC '
db 'QLOGIC Corporation '
dw 4215 ; 0x1077
db 'Cyrix Corporation '
dw 4216 ; 0x1078
db 'I-BUS '
dw 4217 ; 0x1079
db 'GATEWAY 2000 '
dw 4219 ; 0x107B
db 'Leadtek Research '
dw 4221 ; 0x107D
db 'INTERPHASE CORPORATION '
dw 4222 ; 0x107E
db 'Data Technology Corporation '
dw 4223 ; 0x107F
db 'Cypress Semiconductor '
dw 4224 ; 0x1080
db 'Radius Inc. '
dw 4225 ; 0x1081
db 'Forex Computer Corporation '
dw 4227 ; 0x1083
db 'Tulip Computers International BV '
dw 4229 ; 0x1085
db 'Cache Computer '
dw 4231 ; 0x1087
db 'SBS Operations '
dw 4234 ; 0x108A
db 'OLICOM '
dw 4237 ; 0x108D
db 'Sun Microsystems '
dw 4238 ; 0x108E
db 'Intergraph Corporation '
dw 4241 ; 0x1091
db 'Diamond Computer Systems '
dw 4242 ; 0x1092
db 'National Instruments '
dw 4243 ; 0x1093
db 'SILICON IMAGE (WAS CMD TECHNOLOGY INC) '
dw 4245 ; 0x1095
db 'ALACRON '
dw 4246 ; 0x1096
db 'APPIAN/ETMA '
db 'APPIAN Graphics/ETMA '
dw 4247 ; 0x1097
db 'Quantum Designs Ltd. '
dw 4248 ; 0x1098
db 'PACKARD BELL NEC '
dw 4250 ; 0x109A
db 'BROOKTREE CORPORATION '
148,10 → 239,16
dw 4256 ; 0x10A0
db 'QUANTUM EFFECT DESIGN '
dw 4258 ; 0x10A2
db 'Globe Manufacturing Sales '
dw 4260 ; 0x10A4
db 'Sierra Semiconductor '
dw 4264 ; 0x10A8
db 'SILICON GRAPHICS '
dw 4265 ; 0x10A9
db 'HONEYWELL IAC '
dw 4268 ; 0x10AC
db 'Winbond Systems Labs '
dw 4269 ; 0x10AD
db 'MICRO COMPUTER SYSTEMS INC '
dw 4271 ; 0x10AF
db 'PLX TECHNOLOGY. '
160,12 → 257,20
dw 4278 ; 0x10B6
db '3COM Corp, Networking Division '
dw 4279 ; 0x10B7
db 'Standard Microsystems Corporation '
dw 4280 ; 0x10B8
db 'ACER LABS Incorp. '
dw 4281 ; 0x10B9
db 'MITSUBISHI ELECTRIC CORP. '
dw 4282 ; 0x10BA
db 'Surecom Technology '
dw 4285 ; 0x10BD
db 'AUSPEX SYSTEMS INC. '
dw 4290 ; 0x10C2
db 'Samsung Semiconductors '
dw 4291 ; 0x10C3
db 'Award Software International Inc. '
dw 4292 ; 0x10C4
db 'NEOMAGIC CORPORATION '
dw 4296 ; 0x10C8
db 'FUJITSU MICROELECTRONIC '
180,8 → 285,12
dw 4305 ; 0x10D1
db 'MOLEX INCORPORATED '
dw 4306 ; 0x10D2
db 'Macronix International Co. Ltd. '
dw 4313 ; 0x10D9
db 'ROHM LSI SYSTEMS '
dw 4315 ; 0x10DB
db 'CERN-European Lab. for Particle Physics '
dw 4316 ; 0x10DC
db 'EVANS & SUTHERLAND '
dw 4317 ; 0x10DD
db 'NVIDIA CORPORATION '
194,17 → 303,35
dw 4323 ; 0x10E3
db 'MICRO INDUSTRIES CORPORATION '
dw 4325 ; 0x10E5
db 'Applied Micro Circuits Corp. '
dw 4328 ; 0x10E8
db 'Tvia, Inc. '
dw 4330 ; 0x10EA
db 'Artist Graphics '
dw 4331 ; 0x10EB
db 'REALTEK SEMICONDUCTOR CORP. '
dw 4332 ; 0x10EC
db 'XILINX. '
db 'Ascii Corporation '
dw 4333 ; 0x10ED
db 'XILINX '
dw 4334 ; 0x10EE
db 'Racore Computer Products '
dw 4335 ; 0x10EF
db 'Curtiss-Wright Controls Embedded Computing '
dw 4336 ; 0x10F0
db 'TYAN COMPUTER '
dw 4337 ; 0x10F1
db 'S-Mos Systems '
dw 4340 ; 0x10F4
db 'NKK CORPORATION '
dw 4341 ; 0x10F5
db 'CREATIVE ELECTRONIC SYSTEMS SA '
dw 4342 ; 0x10F6
db 'I-O DATA DEVICE. '
db 'Truevision '
dw 4346 ; 0x10FA
db 'Thesys Microelectronics '
dw 4347 ; 0x10FB
db 'I-O DATA DEVICE '
dw 4348 ; 0x10FC
db 'FAST MULTIMEDIA AG '
dw 4350 ; 0x10FE
216,19 → 343,27
dw 4357 ; 0x1105
db 'VIA TECHNOLOGIES '
dw 4358 ; 0x1106
db 'ASCEND COMMUNICATIONS '
db 'ASCEND COMMUNICATIONS/Stratus Computer '
dw 4359 ; 0x1107
db 'Proteon Inc. '
dw 4360 ; 0x1108
db 'Adaptec/Cogent Data Technologies Inc '
dw 4361 ; 0x1109
db 'SIEMENS PC SYSTEME GMBH '
dw 4362 ; 0x110A
db 'Chromatic Research Inc '
dw 4363 ; 0x110B
db 'SANTA CRUZ OPERATION '
dw 4369 ; 0x1111
db 'Osicom Technologies Inc. '
dw 4370 ; 0x1112
db 'ACCTON TECHNOLOGY '
dw 4371 ; 0x1113
db 'MEDIA 100 '
db 'Atmel Corp. '
dw 4372 ; 0x1114
db 'Media 100, Inc. '
dw 4374 ; 0x1116
db 'DATACUBE '
db 'Datacube Inc. '
dw 4375 ; 0x1117
db 'FCI ELECTRONICS '
dw 4376 ; 0x1118
236,8 → 371,12
dw 4377 ; 0x1119
db 'EFFICIENT NETWORKS '
dw 4378 ; 0x111A
db 'Tricord Systems Inc. '
dw 4380 ; 0x111C
db 'INTEGRATED DEVICE TECH '
dw 4381 ; 0x111D
db 'Precision Digital Images '
dw 4383 ; 0x111F
db 'EMC CORPORATION '
dw 4384 ; 0x1120
db 'FORE SYSTEMS INC '
244,6 → 383,8
dw 4391 ; 0x1127
db 'HERMES ELECTRONICS COMPANY '
dw 4394 ; 0x112A
db 'Infomedia '
dw 4398 ; 0x112E
db 'IMAGING TECHNOLOGY '
dw 4399 ; 0x112F
db 'PHILIPS SEMICONDUCTORS '
250,7 → 391,7
dw 4401 ; 0x1131
db 'MITEL CORP '
dw 4402 ; 0x1132
db 'EICON TECHNOLOGY CORPORATION '
db 'Eicon Networks Corporation '
dw 4403 ; 0x1133
db 'MERCURY COMPUTER SYSTEMS '
dw 4404 ; 0x1134
266,14 → 407,24
dw 4412 ; 0x113C
db 'SANYO ELECTRIC CO-Information Systems Division '
dw 4414 ; 0x113E
db 'Equinox Systems '
dw 4415 ; 0x113F
db 'CREST MICROSYSTEM INC. '
dw 4417 ; 0x1141
db 'Alliance Semiconductor CA - USA '
dw 4418 ; 0x1142
db 'Cincinnati Milacron '
dw 4420 ; 0x1144
db 'WORKBIT CORPORATION '
dw 4421 ; 0x1145
db 'FORCE COMPUTERS GMBH '
dw 4422 ; 0x1146
db 'SYSKONNECT '
db 'Interface Corp '
dw 4423 ; 0x1147
db 'SYSKONNECT/Marvell '
dw 4424 ; 0x1148
db 'VMIC '
dw 4426 ; 0x114A
db 'ANNABOOKS '
dw 4428 ; 0x114C
db 'DIGI INTERNATIONAL '
280,6 → 431,12
dw 4431 ; 0x114F
db 'MELCO INC '
dw 4436 ; 0x1154
db 'Pine Technology Ltd '
dw 4437 ; 0x1155
db 'Voarx R&D Inc '
dw 4440 ; 0x1158
db 'Mutech '
dw 4441 ; 0x1159
db 'PHOTRON LTD. '
dw 4444 ; 0x115C
db 'XIRCOM '
288,8 → 445,14
dw 4449 ; 0x1161
db 'RENDITION '
dw 4451 ; 0x1163
db 'Reliance Computer '
db 'Imagraph Corporation '
dw 4453 ; 0x1165
db 'Reliance Computer Corp./ServerWorks '
dw 4454 ; 0x1166
db 'Centre f/Dev. of Adv. Computing '
dw 4457 ; 0x1169
db 'Polaris Communications '
dw 4458 ; 0x116A
db 'ELECTRONICS FOR IMAGING '
dw 4462 ; 0x116E
db 'INVENTEC CORPORATION '
298,10 → 461,20
dw 4465 ; 0x1171
db 'ALTERA CORPORATION '
dw 4466 ; 0x1172
db 'SBE '
dw 4470 ; 0x1176
db 'Alfa Inc '
dw 4472 ; 0x1178
db 'TOSHIBA AMERICA INFO SYSTEMS '
dw 4473 ; 0x1179
db 'GCE-8320B '
dw 4475 ; 0x117B
db 'T/R Systems '
dw 4478 ; 0x117E
db 'RICOH CO LTD '
dw 4480 ; 0x1180
db 'Dataworld '
dw 4485 ; 0x1185
db 'D-LINK SYSTEM INC '
dw 4486 ; 0x1186
db 'ADVANCED TECHNOLOGY LABORATORIES '
310,14 → 483,26
dw 4489 ; 0x1189
db 'PLATYPUS TECHNOLOGY PTY LTD '
dw 4491 ; 0x118B
db 'COROLLARY '
db 'Corollary Inc '
dw 4492 ; 0x118C
db 'BitFlow Inc '
dw 4493 ; 0x118D
db 'Hermstedt AG '
dw 4494 ; 0x118E
db 'Tripace '
dw 4496 ; 0x1190
db 'ACARD TECHNOLOGY '
dw 4497 ; 0x1191
db 'RATOC SYSTEMS INC '
dw 4501 ; 0x1195
db 'Gage Applied Technologies '
dw 4503 ; 0x1197
db 'Attachmate Corp. '
dw 4505 ; 0x1199
db 'MINDSHARE. '
dw 4506 ; 0x119A
db 'Omega Micro Inc. '
dw 4507 ; 0x119B
db 'BUG. '
dw 4509 ; 0x119D
db 'FUJITSU MICROELECTRONICS LTD. '
326,11 → 511,13
dw 4511 ; 0x119F
db 'HAMAMATSU PHOTONICS K.K. '
dw 4513 ; 0x11A1
db 'INNOSYS '
db 'Systech Corp. '
dw 4520 ; 0x11A8
db 'InnoSys Inc. '
dw 4521 ; 0x11A9
db 'ACTEL '
dw 4522 ; 0x11AA
db 'GALILEO TECHNOLOGY LTD. '
db 'GALILEO TECHNOLOGY LTD/Marvell Semiconductor, Inc.'
dw 4523 ; 0x11AB
db 'LITE-ON COMMUNICATIONS INC '
dw 4525 ; 0x11AD
338,12 → 525,23
dw 4526 ; 0x11AE
db 'AVID TECHNOLOGY INC '
dw 4527 ; 0x11AF
db 'V3 SEMICONDUCTOR INC. '
db 'V3 SEMICONDUCTOR INC./Quicklogic Corp '
dw 4528 ; 0x11B0
db 'EASTMAN KODAK '
dw 4530 ; 0x11B2
db 'BARR SYSTEMS INC. '
dw 4531 ; 0x11B3
db 'Radstone Technology Ltd. '
dw 4533 ; 0x11B5
db 'Xpoint Technologies Inc '
dw 4536 ; 0x11B8
db 'Pathlight Technology Inc. '
dw 4537 ; 0x11B9
_SECONDPART: ;lists 255 Vendors
db 'Network Peripherals Inc '
dw 4540 ; 0x11BC
db 'Pinnacle Systems Inc. '
dw 4541 ; 0x11BD
db 'ASTRODESIGN '
dw 4543 ; 0x11BF
db 'AGERE/LUCENT '
358,22 → 556,26
dw 4554 ; 0x11CA
db 'SPECIALIX INTERNATIONAL LTD '
dw 4555 ; 0x11CB
db 'NETACCESS '
db 'NETACCESS/Primary Rate Inc '
dw 4558 ; 0x11CE
db 'LOCKHEED MARTIN-Electronics & Communications '
dw 4560 ; 0x11D0
db 'AURAVISION '
db 'AuraVision Corporation '
dw 4561 ; 0x11D1
db 'INTERCOM INC. '
dw 4562 ; 0x11D2
db 'ANALOG DEVICES '
db 'Analog Devices, Inc. '
dw 4564 ; 0x11D4
db 'IKON CORPORATION '
db 'IKON CORPORATION/Tahoma Technology '
dw 4565 ; 0x11D5
db 'TOSHIBA TEC CORPORATION '
dw 4569 ; 0x11D9
db 'NOVELL '
dw 4570 ; 0x11DA
db 'Sega Enterprises Ltd '
dw 4571 ; 0x11DB
db 'Zoran Corporation '
dw 4574 ; 0x11DE
db 'NEW WAVE PDG '
dw 4575 ; 0x11DF
db 'QUICKLOGIC CORPORATION '
382,12 → 584,28
dw 4588 ; 0x11EC
db 'DOME IMAGING SYSTEMS INC '
dw 4590 ; 0x11EE
db 'Compu-Shack GmbH '
dw 4592 ; 0x11F0
db 'Kinetic Systems Corporation '
dw 4596 ; 0x11F4
db 'Powermatic Data Systems Ltd '
dw 4598 ; 0x11F6
db 'PMC-SIERRA INC '
dw 4600 ; 0x11F8
db 'Comtrol Corp '
dw 4606 ; 0x11FE
db 'Network General Corp '
dw 4610 ; 0x1202
db 'AGFA CORPORATION '
dw 4611 ; 0x1203
db 'AMDAHL CORPORATION '
dw 4614 ; 0x1206
db 'Parsytec GmbH '
dw 4616 ; 0x1208
db 'Sci Systems Inc '
dw 4617 ; 0x1209
db 'Cyclades Corporation '
dw 4622 ; 0x120E
db 'ESSENTIAL COMMUNICATIONS '
dw 4623 ; 0x120F
db 'PERFORMANCE TECHNOLOGIES. '
400,31 → 618,55
dw 4634 ; 0x121A
db 'VIRATA LTD '
dw 4635 ; 0x121B
db 'Ariel Corporation '
dw 4640 ; 0x1220
db 'CONTEC CO. LTD '
dw 4641 ; 0x1221
db 'ARTESYN COMMUNICATIONS PRODUCTS INC '
dw 4643 ; 0x1223
db 'Interactive Images '
dw 4644 ; 0x1224
db 'TECH-SOURCE '
dw 4647 ; 0x1227
db 'SICAN GMBH '
dw 4652 ; 0x122C
db 'Aztech System Ltd '
dw 4653 ; 0x122D
db 'MARCONI COMMUNICATIONS LTD '
dw 4658 ; 0x1232
db 'Sigma Designs, Inc '
dw 4662 ; 0x1236
db 'Solitron Technologies Inc. '
dw 4684 ; 0x124C
db 'Stallion Technologies '
dw 4665 ; 0x124D
db 'Infortrend Technology Inc '
dw 4667 ; 0x124F
db 'Perceptive Solutions Inc. '
dw 4694 ; 0x1256
db 'Gilbarco Inc. '
dw 4696 ; 0x1258
db 'Asix Electronics Corp. '
dw 4699 ; 0x125B
db 'Microdyne Corp. '
dw 4710 ; 0x1266
db 'S.A. Telecommunications '
dw 4711 ; 0x1267
db 'SOLITON SYSTEMS K.K. '
dw 4961 ; 0x1361
db 'CENTURY SYSTEMS. '
dw 4668 ; 0x123C
db 'ENGINEERING DESIGN TEAM. '
db 'Engineering Design Team Inc. '
dw 4669 ; 0x123D
db 'C-CUBE MICROSYSTEMS '
dw 4671 ; 0x123F
db 'JAYCOR NETWORKS INC. '
db 'JAYCOR NETWORKS INC./JNI Corporation '
dw 4674 ; 0x1242
db 'AVM AUDIOVISUELLES MKTG & COMPUTER SYSTEM GMBH '
dw 4676 ; 0x1244
db 'SBS TECHNOLOGIES '
dw 4683 ; 0x124B
db 'HITACHI ULSI SYSTEMS CO LTD '
db 'Hitachi Microcomputer System Ltd. '
dw 4688 ; 0x1250
db 'GUZIK TECHNICAL ENTERPRISES '
dw 4691 ; 0x1253
434,7 → 676,7
dw 4697 ; 0x1259
db 'AURORA TECHNOLOGIES. '
dw 4700 ; 0x125C
db 'ESS '
db 'ESS TECHNOLOGY, INC. '
dw 4701 ; 0x125D
db 'CONCURRENT TECHNOLOGIES '
dw 4703 ; 0x125F
446,7 → 688,7
dw 4708 ; 0x1264
db 'TEKTRONIX '
dw 4712 ; 0x1268
db 'NORTEL NETWORKS '
db 'Nortel Networks Corp. '
dw 4716 ; 0x126C
db 'SPLASH TECHNOLOGY. '
dw 4717 ; 0x126D
460,7 → 702,7
dw 4724 ; 0x1274
db 'NETWORK APPLIANCE CORPORATION '
dw 4725 ; 0x1275
db 'TRANSTECH DSP LTD '
db 'Transtech Parallel Systems '
dw 4728 ; 0x1278
db 'TRANSMETA CORPORATION '
dw 4729 ; 0x1279
472,13 → 714,13
dw 4735 ; 0x127F
db 'YOKOGAWA ELECTRIC CORPORATION '
dw 4737 ; 0x1281
db 'INTEGRATED TECHNOLOGY EXPRESS. '
db 'Integrated Technology Express Inc. '
dw 4739 ; 0x1283
db 'MAZET GMBH '
dw 4742 ; 0x1286
db 'TRANSWITCH CORPORATION '
dw 4747 ; 0x128B
db 'G2 NETWORKS. '
db 'G2 Networks Inc. '
dw 4749 ; 0x128D
db 'TATENO DENNOU. '
dw 4751 ; 0x128F
492,13 → 734,13
dw 4759 ; 0x1297
db 'KNOWLEDGE TECHNOLOGY LAB. '
dw 4761 ; 0x1299
db 'VMETRO. '
db 'VMETRO Inc. '
dw 4762 ; 0x129A
db 'VICTOR COMPANY OF JAPAN '
dw 4766 ; 0x129E
db 'ALLEN- BRADLEY COMPANY '
dw 4768 ; 0x12A0
db 'LUCENT TECHNOLOGIES '
db 'Lucent Technologies AMR '
dw 4771 ; 0x12A3
db 'AMO GMBH '
dw 4775 ; 0x12A7
506,7 → 748,7
dw 4777 ; 0x12A9
db 'YUAN YUAN ENTERPRISE CO. LTD. '
dw 4779 ; 0x12AB
db 'ALTEON WEBSYSTEMS INC '
db 'Alteon Networks Inc. '
dw 4782 ; 0x12AE
db 'NATURAL MICROSYSTEMS '
dw 4790 ; 0x12B6
520,10 → 762,9
dw 4798 ; 0x12BE
db 'Fujifilm Microdevices '
dw 4799 ; 0x12BF
_SECONDPART: ;lists 255 Vendors
db 'INFIMED '
dw 4800 ; 0x12C0
db 'HOLTEK SEMICONDUCTOR INC '
db 'Holtek Microelectronics Inc. '
dw 4803 ; 0x12C3
db 'Connect Tech Inc '
dw 4804 ; 0x12C4
539,7 → 780,7
dw 4818 ; 0x12D2
db 'GE VINGMED ULTRASOUND AS '
dw 4819 ; 0x12D3
db 'COMVERSE NETWORKS SYSTEM & Ulticom. '
db 'COMVERSE NETWORKS SYSTEM & Ulticom, Inc. '
dw 4820 ; 0x12D4
db 'Equator Technologies '
dw 4821 ; 0x12D5
555,7 → 796,7
dw 4830 ; 0x12DE
db 'SBS Technologies Inc '
dw 4831 ; 0x12DF
db 'Chase Research '
db 'Chase Research PLC '
dw 4832 ; 0x12E0
db 'Datum Inc. Bancomm-Timing Division '
dw 4834 ; 0x12E2
565,7 → 806,7
dw 4839 ; 0x12E7
db 'Real Vision '
dw 4842 ; 0x12EA
db 'AUREAL INC. '
db 'Aureal Semiconductor '
dw 4843 ; 0x12EB
db '3A '
dw 4844 ; 0x12EC
583,7 → 824,7
dw 4868 ; 0x1304
db 'Computer Boards '
dw 4871 ; 0x1307
db 'LEVEL ONE COMMUNICATIONS '
db 'LEVEL ONE COMMUNICATIONS/Jato Technologies Inc. '
dw 4872 ; 0x1308
db 'Mitsubishi Electric MicroComputer '
dw 4874 ; 0x130A
739,7 → 980,7
dw 5053 ; 0x13BD
db 'SHAREWAVE INC '
dw 5055 ; 0x13BF
db '3WARE '
db '3ware Inc. '
dw 5057 ; 0x13C1
db 'TECHNOTREND SYSTEMTECHNIK GMBH '
dw 5058 ; 0x13C2
807,9 → 1048,10
dw 5115 ; 0x13FB
db 'MICRO SCIENCE INC '
dw 5117 ; 0x13FD
_THIRDPART: ;lists 255 vendors
db 'ARTX INC '
dw 5120 ; 0x1400
db 'MEILHAUS ELECTRONIC GmbH '
db 'Meilhaus Electronic GmbH Germany '
dw 5122 ; 0x1402
db 'FUNDAMENTAL SOFTWARE INC '
dw 5124 ; 0x1404
871,7 → 1113,7
dw 5190 ; 0x1446
db 'AIM GMBH '
dw 5191 ; 0x1447
db 'ADLINK TECHNOLOGY '
db 'ADLINK Technology Inc '
dw 5194 ; 0x144A
db 'LORONIX INFORMATION SYSTEMS INC '
dw 5195 ; 0x144B
1031,7 → 1273,6
dw 5312 ; 0x14C0
db 'MYRICOM INC. '
dw 5313 ; 0x14C1
_THIRDPART: ;lists 255 vendors
db 'DTK COMPUTER '
dw 5314 ; 0x14C2
db 'MEDIATEK CORP. '
1124,9 → 1365,9
dw 5359 ; 0x14EF
db 'CANON RESEACH CENTRE FRANCE '
dw 5360 ; 0x14F0
db 'CONEXANT '
db 'Conexant Systems, Inc '
dw 5361 ; 0x14F1
db 'MOBILITY ELECTRONICS '
db 'Mobility Electronics, Inc. '
dw 5362 ; 0x14F2
db 'BROADLOGIC '
dw 5363 ; 0x14F3
1318,6 → 1559,7
dw 5457 ; 0x1551
db 'RACAL AIRTECH LTD '
dw 5458 ; 0x1552
_FOURTHPART: ;lists 222 vendors
db 'CHICONY ELECTRONICS CO LTD '
dw 5459 ; 0x1553
db 'PROLINK MICROSYSTEMS CORP. '
1340,7 → 1582,7
dw 5468 ; 0x155C
db 'MAC SYSTEM CO LTD '
dw 5469 ; 0x155D
db 'LP ELEKTRONIK GMBH '
db 'LP ELEKTRONIK GMBH/KUKA Controls GmbH '
dw 5470 ; 0x155E
db 'PERLE SYSTEMS LIMITED '
dw 5471 ; 0x155F
1348,7 → 1590,7
dw 5472 ; 0x1560
db 'VIEWGRAPHICS INC '
dw 5473 ; 0x1561
db 'SYMBOL TECHNOLOGIES '
db 'Symbol Technologies, Inc. '
dw 5474 ; 0x1562
db 'A-TREND '
dw 5475 ; 0x1563
1494,7 → 1736,7
dw 5547 ; 0x15AB
db 'NORTH ATLANTIC INSTRUMENTS '
dw 5548 ; 0x15AC
db 'VMWARE '
db 'VMware Inc. '
dw 5549 ; 0x15AD
db 'AMERSHAM PHARMACIA BIOTECH '
dw 5550 ; 0x15AE
1542,7 → 1784,6
dw 5572 ; 0x15C4
db 'PROCOMP INFORMATICS LTD '
dw 5573 ; 0x15C5
_FOURTHPART: ;lists 110 vendors
db 'TECHNICAL UNIVERSITY OF BUDAPEST '
dw 5574 ; 0x15C6
db 'TATEYAMA SYSTEM LABORATORY CO LTD '
1575,7 → 1816,7
dw 5589 ; 0x15D5
db 'ENTRIDIA CORPORATION '
dw 5590 ; 0x15D6
db 'ROCKWELL-COLLINS '
db 'Rockwell-Collins Inc '
dw 5591 ; 0x15D7
db 'CYBERNETICS TECHNOLOGY CO LTD '
dw 5592 ; 0x15D8
1678,7 → 1919,7
db 'SCIEMETRIC INSTRUMENTS INC '
dw 5641 ; 0x1609
db 'Broadcom -SiByte '
dw 5741 ; 0x127A
dw 5741 ; 0x166D
db 'EPOX Computer Co '
dw 5781 ; 0x1695
db 'ALBATRON Corp. '
1715,7 → 1956,7
dw 19796 ; 0x4D54
db 'S S TECHNOLOGIES '
dw 20790 ; 0x5136
db 'S3 INC. '
db 'S3 Graphics Co., Ltd. '
dw 21299 ; 0x5333
db 'TERALOGIC INC '
dw 21580 ; 0x544C
1731,7 → 1972,7
dw 34952 ; 0x8888
db 'COMPUTONE CORPORATION '
dw 36366 ; 0x8E0E
db 'ADAPTEC '
db 'Adaptec Inc '
dw 36868 ; 0x9004
db 'GIGAPIXEL CORP '
dw 37274 ; 0x919A
1753,7 → 1994,7
dw 51966 ; 0xCAFE
db 'CATAPULT COMMUNICATIONS '
dw 52428 ; 0xCCCC
db 'DY4 Systems Inc '
db 'DY4 Systems Inc/Curtiss-Wright Controls Embed. Com'
dw 54484 ; 0xD4D4
db 'EKF ELEKTRONIK GMBH '
dw 58559 ; 0xE4BF
1764,10 → 2005,10
db 'EPIGRAM INC '
dw 65242 ; 0xFEDA
;----------------------------------------------------------------------
_UNKNOWN: db 'UNKOWN VENDOR '
_UNKNOWN: db 'UNKNOWN VENDOR '
 
_UNKNOWND:
db 'UNKOWN DEVICE '
db 'UNKNOWN DEVICE '
 
Class0:
db 'Prehistoric - misc '
1786,7 → 2027,7
db 03 ; 0x03
db 'Storage - RAID '
db 04 ; 0x04
db 'Storage - ATA with DMA '
db ' ' ;Storage - ATA with DMA
db 05 ; 0x05
db 'Storage - Serial ATA '
db 06 ; 0x06
1812,7 → 2053,7
db 128 ; 0x80
Class3:
db 'Display - VGA controller '
db ' ' ;Display - VGA controller
db 00 ; 0x0
db 'Display - XGA controller '
db 01 ; 0x1
1848,7 → 2089,7
db 02 ; 0x02
db 'Bridge - PCI/MCA '
db 03 ; 0x03
db 'Bridge - PCI/PCI '
db ' ';Bridge - PCI/PCI
db 04 ; 0x04
db 'Bridge - PCMCIA '
db 05 ; 0x05
1858,7 → 2099,7
db 07 ; 0x07
db 'Bridge - RACEway '
db 08 ; 0x08
db 'Bridge - Semi-transpar. PCI/PCI '
db ' '; Bridge - Semi-transpar. PCI/PCI
db 09 ; 0x09
db 'Bridge - InfiniBand/PCI '
db 10 ; 0x0A
1866,13 → 2107,13
db 128 ; 0x80
Class7:
db 'Communication - Serial '
db ' ';Communication - Serial
db 00 ; 0x0
db 'Communication - Parallel '
db ' ';Communication - Parallel
db 01 ; 0x1
db 'Communication - Multiport Serial'
db 02 ; 0x2
db 'Communication - Modem '
db ' ';Communication - Modem
db 03 ; 0x3
db 'Communication - GPIB '
db 04 ; 0x4
1882,13 → 2123,13
db 128 ; 0x80
Class8:
db 'System - PIC '
db ' ' ;System - PIC
db 00 ; 0x0
db 'System - DMAC '
db ' ' ;System - DMAC
db 01 ; 0x1
db 'System - Timer '
db ' ' ;System - Timer
db 02 ; 0x2
db 'System - RTC '
db ' ' ;System - RTC
db 03 ; 0x3
db 'System - PCI Hot-Plug '
db 04 ; 0x4
1904,7 → 2145,7
db 02 ; 0x2
db 'Input - Scanner '
db 03 ; 0x3
db 'Input - Gameport '
db ' ' ; Input - Gameport
db 04 ; 0x4
db 'Input - misc '
db 128 ; 0x80
1933,13 → 2174,13
db 64 ; 0x40
ClassC:
db 'Serial Bus - FireWire '
db ' ' ;Serial Bus - FireWire
db 00 ; 0x0
db 'Serial Bus - ACCESS.bus '
db 01 ; 0x1
db 'Serial Bus - SSA '
db 02 ; 0x2
db 'Serial Bus - USB/USB2 '
db ' ' ;Serial Bus - USB/USB2
db 03 ; 0x3
db 'Serial Bus - Fibre Channel '
db 04 ; 0x4
1947,7 → 2188,7
db 05 ; 0x5
db 'Serial Bus - InfiniBand '
db 06 ; 0x6
db 'Serial Bus - IPMI '
db ' ' ;Serial Bus - IPMI
db 07 ; 0x7
db 'Serial Bus - SERCOS '
db 08 ; 0x8
1973,7 → 2214,7
db 128 ; 0x80
 
ClassE:
db 'Intelligent I/O - I/O contr. '
db ' ' ;Intelligent I/O - I/O contr.
db 00 ; 0x0
 
ClassF:
2004,4 → 2245,4
db 'DSP - Managamant card '
db 32 ; 0x20
db 'DSP - misc '
db 128 ; 0x80
db 128 ; 0x80
/programs/system/rb/trunk/@RB.ASM
350,7 → 350,7
<"/RD/1/JPEGVIEW",0> ,\
<"/RD/1/CPU",0> ,\
<"/RD/1/SPANEL",0> ,\
<"/RD/1/ICON2",0> ,\
<"/RD/1/ICON",0> ,\
<"/RD/1/VRR",0>
 
; header: ; § £®«®¢®ª
/programs/system/rb/trunk/build_en.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm @rb.asm @rb
@erase lang.inc
@pause
/programs/system/rb/trunk/build_ru.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm @rb.asm @rb
@erase lang.inc
@pause
/programs/system/rb/trunk/macros.inc
143,10 → 143,6
 
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
178,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
/programs/system/rdsave/trunk/build_en.bat
0,0 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm rdsave.asm rdsave
@erase lang.inc
@pause
/programs/system/rdsave/trunk/build_ru.bat
0,0 → 1,5
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm rdsave.asm rdsave
@erase lang.inc
@pause
/programs/system/rdsave/trunk/macros.inc
0,0 → 1,269
; 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,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b 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
}
 
 
 
; 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) | (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
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
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
/programs/system/rdsave/trunk/rdsave.asm
0,0 → 1,212
;
; Save Ramdisk to HD and FD
; Mario79 2005
; Compile with FASM for Menuet
;
 
include 'lang.inc'
include 'macros.inc'
 
appname equ 'RDsave '
version equ '1.1'
 
use32
org 0x0
 
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image
dd 0x1000 ; memory for app
dd 0x1000 ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon
 
 
;******************************************************************************
 
 
START: ; start of execution
xor eax,eax
mov edi,bootpath
mov ecx,128
rep stosd
 
mcall 6,filename,0,-1,bootpath
 
mov esi,bootpath+1
mov cx,512
start_search:
lodsb
cmp al,"'"
jz set_end_path
dec cx
cmp cx,0
ja start_search
set_end_path:
mov [esi-1],byte 0
 
mov eax,40
mov ebx,101b
int 0x40
 
red:
call draw_window
 
still:
mov eax, 10 ; wait here for event
int 0x40
 
dec eax ; redraw request ?
je red
; dec eax
; dec eax ; button in buffer ?
; je button
 
 
button: ; button
mov eax,17 ; get id
int 0x40
cmp ah,2
jne ah_3
mcall 18,6,1
jmp red
ah_3:
cmp ah,3
jne ah_4
mcall 18,6,2
jmp red
ah_4:
cmp ah,4
jne ah_5
mcall 18,6,3,bootpath+1
jmp red
ah_5:
cmp ah,5
jne ah_6
mcall 16,1
jmp red
ah_6:
cmp ah,6
jne ah_1
mcall 16,2
jmp red
 
ah_1:
cmp ah,1
je exit
jmp still
 
exit:
or eax,-1 ; close this program
int 0x40
 
 
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
 
draw_window:
 
mov eax,48
mov ebx,3
mov ecx,sc
mov edx,sizeof.system_colors
int 0x40
 
mov eax, 12 ; function 12:tell os about windowdraw
mov ebx, 1 ; 1, start of draw
int 0x40
; DRAW WINDOW
mov eax, 0 ; function 0 : define and draw window
mov ebx, 200*65536+230 ; [x start] *65536 + [x size]
mov ecx, 200*65536+260 ; [y start] *65536 + [y size]
mov edx, [sc.work] ; color of work area RRGGBB,8->color gl
or edx,0x33000000
mov edi,header ; WINDOW LABEL
int 0x40
 
mcall 8,<11,17>,<26,17>,2,[sc.work_button]
inc edx
mcall , ,<56,17>, ,
inc edx
mcall , ,<86,17>, ,
inc edx
mcall , ,<166,17>, ,
inc edx
mcall , ,<196,17>, ,
 
mov ecx,[sc.work_button_text]
or ecx,0x10000000
mcall 4,<17,31>, ,text_123,1
add ebx,30
add edx,1
mcall
add ebx,30
add edx,1
mcall
add ebx,80
add edx,1
mcall
add ebx,30
add edx,1
mcall
 
mov ecx,[sc.work_text]
or ecx,0x80000000
mcall ,<40,31>, ,text_1,
add ebx,30
mcall , , ,text_2,
add ebx,30
mcall , , ,text_3,
mcall ,<15,115>, ,text_4,
mcall ,<35,125>, ,text_5,
 
mcall ,<35,41>, ,text_6,
mcall ,<35,101>, ,text_6,
mcall ,<40,171>, ,text_7,
mcall ,<40,201>, ,text_8,
mcall ,<25,10>, ,text_9,
mcall ,<25,150>, ,text_10,
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw
int 0x40
ret
 
 
header db appname,version,0
 
text_123 db '12345'
 
if lang eq ru
 
text_1 db '‚ ¯ ¯ªã ‘:\KOLIBRI',0
text_2 db '‚ ª®à¥­ì ¤¨áª  ‘',0
text_3 db 'ãâì ¢ ä ©«¥ RD2HD.TXT',0
text_4 db '¯.3 ¤«ï १¥à¢­®£® á®åà ­¥­¨ï',0
text_5 db 'â.ª. ¢ ï¤à¥ ¥£® ­¥â.',0
text_6 db '(¯ ¯ª  ¤®«¦­  ¯à¨áãâá⢮¢ âì)',0
text_7 db '  /FD/1',0
text_8 db '  /FD/2',0
text_9 db '‘®åà ­¥­¨¥ ­  ¦¥á⪨© ¤¨áª:',0
text_10 db '‘®åà ­¥­¨¥ ­  ¤¨áª¥âã:',0
 
else
 
text_1 db 'To the folder C:\KOLIBRI',0
text_2 db 'To the root of C',0
text_3 db 'To path in the file RD2HD.TXT',0
text_4 db 'p.3 for backup, as the kernel',0
text_5 db 'can not boot from there.',0
text_6 db '(folder must exist)',0
text_7 db 'To /FD/1',0
text_8 db 'To /FD/2',0
text_9 db 'Save to hard disk:',0
text_10 db 'Save to floppy:',0
 
end if
 
filename db 'RD2HD TXT'
I_END:
sc system_colors
bootpath:
/programs/system/run/trunk/build_en.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm run.asm run
@erase lang.inc
@pause
/programs/system/run/trunk/build_ru.bat
1,4 → 1,5
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm run.asm run
@erase lang.inc
@pause
/programs/system/run/trunk/editbox.inc
0,0 → 1,755
; <Lrz> 21.07.2006 ¤®¡ ¢«¥­  äã­ªæ¨ï ª­®¯ª¨ Del, ⥯¥àì ¬®¦­® 㤠«ïâì ᨬ¢®«ë ¯à¨ ¯®¬®é¨ ¤ ­­®© ª®« ¢¨è¨
; €¢â®à: …¢â¨å®¢ Œ ªá¨¬ (Maxxxx32) email: maxxxxm@mail.ru
; „ â  ¯®á«¥¤­¨å ¨§¬¥­¥­¨©: 13.07.06 10:40
;  ¯¨è¨â¥ ¢ ¨á室­®¬ ª®¤¥ ᢮¥© ¯à®£à ¬¬ë use_edit_box,
; íâ® ¢áâ ¢¨â ­¥®¡å®¤¨¬ë¥ ¯à®æ¥¤ãàë ¢ ª®¤ ¢ è¥© ¯à®£à ¬¬ë.
; à®æ¥¤ãàë:
; edit_box.draw - ¯®«­ ï ¯¥à¥à¨á®¢ª ;
; edit_box.key - ®¡à ¡®âª  ª« ¢¨ âãàë;
; edit_box.mouse - ®¡à ¡®âª  ¬ëè¨;
; edit_box.focus - ãáâ ­®¢ª  䮪ãá ;
; edit_box.blur - ¥£® à §¬ë¢ ­¨¥;
; edit_box.get_n - ¯®«ãç¨âì ª®«¨ç¥á⢮ ¯à®à¨á®¢ë¢ ¥¬ëå ᨬ¢®«®¢.
; à¨ ¢ë§®¢¥ «î¡ëå ¨§ íâ¨å ¯à®æ¥¤ãà ¢ ॣ¨áâॠedi á«¥¤ã¥â
; ®áâ ¢¨âì 㪠§ â¥«ì ­  áâàãªâãàã.
; à¨¬¥à áâàãªâãàë:
; some_edit edit_box 100,10,30,0x00ffffff,0,0x00aaaaaa,0,255,some_edit_text
; ¤«¨­ , «¥¢®, ¢¥àå, 梥â ä®­ , 梥â à ¬ª¨, ¥á«¨ ¢ë¡à ­,
; 梥â à ¬ª¨, ¥á«¨ ­¥ ¢ë¡à ­, ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ ᨬ¢®«®¢,
; 㪠§ â¥«ì ­  ¡ãä¥à, £¤¥ ¡ã¤ãâ åà ­¨âáï ᨬ¢®«ë. ãä¥à ¤®«¦¥­
; ®ª ­ç¨¢ âìáï ­ã«¥¬, ­ ¯à¨¬¥à ¥á«¨ ¬ ªá¨¬ «ì­®¥ ª®«¨ç¥á⢮ 255:
; some_edit_text:
; rb 256 ;255+1
 
; à¨¬¥à ¢ë§®¢  ¯à®æ¥¤ãàë:
; mov edi,some_edit
; call edit_box.draw
 
; à¨ ¢ë§®¢¥ ¯à®æ¥¤ãàë edit_box.key ª®¤ ª« ¢¨è¨ ¤®«¦¥­
; ­ å®¤¨âáï ¢ ah, â® ¥áâì ¯¥à¥¤ ¢ë§®¢®¬ í⮩ ¯à®æ¥¤ãàë ­ ¤® ¢ë§¢ âì
; 2-ãî á¨á¥¬­ãî äã­ªæ¨î, ­ ¯à¨¬¥à:
; mov eax,2
; int 0x40
; mov edi,some_edit1
; call edit_box.key
; mov edi,some_edit2
; call edit_box.key
; ¥à¥¤ ¢ë§®¢®¬ ®¡à ¡®â稪  ¬ëè¨ á«¥¤ã¥â ¯à®¢¥à¨âì, ï¥âáï «¨ ®ª­®
;  ªâ¨¢­ë¬.
; …᫨ 饫箪 ¬ëè¨ ¡ë« ¯à®©§¢¥¤¥­ §  ¯à¥¤¥« ¬¨ edit box
; 䮪ãá â¥àï¥âáï.
macro use_edit_box
{
edit_box:
ed_width equ [edi]
ed_left equ [edi+2]
ed_top equ [edi+4]
ed_color equ [edi+6]
ed_focus_border_color equ [edi+10]
ed_blur_border_color equ [edi+14]
ed_text_color equ [edi+18]
ed_flags equ [edi+22]
ed_max equ [edi+24]
ed_size equ [edi+26]
ed_pos equ [edi+28]
ed_offset equ [edi+30]
ed_text equ [edi+32]
ed_height=14 ; ¢ëá®â 
;==========================================================
;=== ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ =================================
;==========================================================
.draw:
pusha
;--- à¨á㥬 à ¬ªã ---
call .draw_border
 
.draw_bg_cursor_text:
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥, ¥á«¨ ­ ¤® ---
call .check_offset
;--- à¨á㥬 ¢­ãâ७­îî ®¡« áâì ---
call .draw_bg
.draw_cursor_text:
;--- à¨á㥬 ªãàá®à ---
;--- ¬®¦¥â ¥£® ­¥ ­ ¤® à¨á®¢ âì ----
bt word ed_flags,1
jnc @f
call .draw_cursor
@@:
call .draw_text
popa
ret
 
;----------------------------------------------------------
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ⥪áâ  --------------------------
;----------------------------------------------------------
.draw_text:
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ ---
call .get_n
;--- çâ®¡ë ¬ãá®à ­¥ à¨á®¢ âì ---
movsx esi,word ed_size
sub si,ed_offset
cmp ax,si
ja @f
mov si,ax
@@:
 
;--- à¨á㥬 ⥪áâ ---
mov eax,4
mov bx,ed_left
add bx,2
shl ebx,16
mov bx,ed_top
add bx,4
mov ecx,ed_text_color
movsx edx,word ed_offset
add edx,ed_text
int 0x40
ret
 
;----------------------------------------------------------
;--- ¯à®æ¥¤ãà  ¯à®à¨á®¢ª¨ ä®­  ----------------------------
;----------------------------------------------------------
.draw_bg_eax:
pusha
movsx ebx,ax
lea ebx,[ebx*2+ebx]
shl bx,1
shl ebx,16
shr eax,16
lea eax,[eax*2+eax]
shl ax,1
add ax,ed_left
add ax,2
mov bx,ax
ror ebx,16
jmp @f
.draw_bg:
pusha
mov bx,ed_left
inc bx
shl ebx,16
mov bx,ed_width
dec bx
 
@@:
mov cx,ed_top
inc cx
shl ecx,16
mov cx,ed_height
dec cx
 
mov edx,ed_color
mov eax,13
int 0x40
popa
ret
 
;----------------------------------------------------------
;--- ¯à®æ¥¤ãà  ¯®«ã祭¨ï ª®«¨ç¥á⢠ ᨬ¢®«®¢ --------------
;----------------------------------------------------------
.get_n:
xor edx,edx
movsx eax,word ed_width
sub ax,4
mov bx,6
div bx
ret
 
;----------------------------------------------------------
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï ªãàá®à  --------------------------
;----------------------------------------------------------
.clear_cursor:
mov edx,ed_color
jmp @f
.draw_cursor:
mov edx,ed_text_color
@@:
movsx ebx,word ed_pos
sub bx,ed_offset
;lea ebx,[ebx*2+ebx]
;shl ebx,1
imul ebx,6
add bx,ed_left
inc bx
push bx
shl ebx,16
pop bx
mov cx,ed_top
add cx,2
push cx
shl ecx,16
pop cx
add cx,ed_height-4
mov eax,38
int 0x40
ret
 
;----------------------------------------------------------
;--- ¯à®æ¥¤ãà  à¨á®¢ ­¨ï à ¬ª¨ ----------------------------
;----------------------------------------------------------
.draw_border:
;--- 梥â à ¬ª¨ ---
bt word ed_flags,1
mov edx,ed_focus_border_color
jc @f
mov edx,ed_blur_border_color
@@:
;--- ᢥàåã ---
mov bx,ed_left
push bx
shl ebx,16
pop bx
add bx,ed_width
mov cx,ed_top
push cx
shl ecx,16
pop cx
mov eax,38
int 0x40
 
;--- á­¨§ã ---
push cx
add cx,ed_height
push cx
shl ecx,16
pop cx
int 0x40
 
;--- á«¥¢  ---
pop cx
push bx
sub bx,ed_width
int 0x40
 
;--- á¯à ¢  ---
pop bx
push bx
shl ebx,16
pop bx
int 0x40
ret
 
;----------------------------------------------------------
;--- ¯à®¢¥àª , § è¥« «¨ ªãàá®à §  £à ­¨æë ¨, ¥á«¨ ­ ¤®, ---
;--- ¨§¬¥­ï¥¬ ᬥ饭¨¥ ------------------------------------
;--- eax = 1, ¥á«¨ ­¥ ¨§¬¥­¨«®áì ¨«¨ eax = 0, ¥á«¨
; ¨§¬¥­¨«®áì
;----------------------------------------------------------
.check_offset:
push word ed_offset
call .get_n
;--- ¯à ¢¥¥ ---
mov bx,ed_offset
add bx,ax
cmp bx,ed_pos
ja @f
mov bx,ed_pos
mov cx,ax
shr cx,2
sub bx,cx
mov cx,ax
shr cx,1
sub bx,cx
mov ed_offset,bx
@@:
;--- «¥¢¥¥ ---
mov bx,ed_offset
cmp bx,ed_pos
jb @f
mov bx,ed_pos
mov cx,ax
shr cx,2
sub bx,cx
jnc $+5
xor bx,bx
mov ed_offset,bx
@@:
xor eax,eax
pop bx
cmp bx,ed_offset
jne @f
inc eax
@@:
ret
 
;==========================================================
;=== ®¡à ¡®âª  ª« ¢¨ âãàë =================================
;==========================================================
.key:
pusha
bt word ed_flags,1 ; ¥á«¨ ­¥ ¢ 䮪ãá¥, ¢ë室¨¬
jc @f
popa
ret
@@:
 
;----------------------------------------------------------
;--- ¯à®¢¥à塞, çâ® ­ ¦ â® --------------------------------
;----------------------------------------------------------
cmp ah,8
je .backspace
cmp ah,0xb6
je .delete
cmp ah,176
je .left
cmp ah,179
je .right
cmp ah,180
je .home
cmp ah,181
je .end
 
;--- ­ ¦ â  ¤àã£ ï ª« ¢¨è  ---
bt word ed_flags,15 ; ⮫쪮 æ¨äàë ?
jnc @f
cmp ah,'0'
jb .no_figure
cmp ah,'9'
ja .no_figure
jmp @f
.no_figure:
popa
ret
@@:
; ¯à®¢¥à塞, ­ å®¤¨âáï «¨ ªãàá®à ¢ ª®­æ¥
mov bx,ed_max
cmp bx,ed_pos
jne @f ; ¥á«¨ ¤ , ¢ ª®­¥æ ¯à®æ¥¤ãàë
popa
ret
@@:
; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢¯à ¢®
mov edx,ed_text
dec edx
xor ecx,ecx
mov cx,ed_size
cmp cx,ed_pos
je @f
.mov_right_next:
mov bh,[edx+ecx]
mov [edx+ecx+1],bh
dec cx
cmp cx,ed_pos
jne .mov_right_next
@@:
 
 
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à
mov edx,ed_text
movsx ebx,word ed_pos
mov [ebx+edx],ah
 
call .clear_cursor
; 㢥«¨ç¨¢ ¥¬ §­ ç¥­¨¥ à §¬¥à  ¨ ¯®§¨æ¨¨
inc word ed_pos
mov bx,ed_size
cmp bx,ed_max
je .draw_bg_cursor_text;.key_end_draw
inc word ed_size
 
;push word ed_offset
call .check_offset
;pop ax
;cmp ax,ed_offset
;jne .draw_bg_cursor_text
test eax,eax
jz .draw_bg_cursor_text
 
call .get_n
sub ax,ed_pos
add ax,ed_offset
inc ax
shl eax,16
mov ax,ed_pos
sub ax,ed_offset
dec ax
ror eax,16
call .draw_bg_eax
 
jmp .draw_cursor_text
 
;jmp .draw_cursor_text;.key_end_draw
 
.delete:
mov dx,ed_size
mov cx,ed_pos
;inc edx
;add ecx,900
;sub ecx,1
cmp dx,cx
jg @f
popa
ret
 
@@:
mov edx,ed_text
;dec edx
.mov_stop_next:
mov bh,[edx+ecx+1]
mov [edx+ecx],bh
inc cx
mov bx,ed_size
;dec bx
;dec bx
cmp cx,bx
jne .mov_stop_next
 
; 㬥­ìè ¥¬ §­ ç¥­¨¥ ¯®§¨æ¨¨ ¨ à §¬¥à 
;dec word ed_pos
dec word ed_size
;push word ed_offset
call .check_offset
;pop ax
;cmp ax,ed_offset
;jne .draw_bg_cursor_text
test eax,eax
jz .draw_bg_cursor_text
 
call .get_n
sub ax,ed_pos
add ax,ed_offset
shl eax,16
mov ax,ed_pos
sub ax,ed_offset
ror eax,16
call .draw_bg_eax
 
jmp .draw_cursor_text
popa
ret
 
;--- ­ ¦ â  ª« ¢¨è  backspace ---
.backspace:
; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ?
mov bx,ed_pos
;cmp bx,0
;jne @f; .key_end ; ¥á«¨ ¤ , ¢ ª®­¥æ
test bx,bx
jnz @f
popa
ret
@@:
 
; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à  ¢«¥¢®
mov edx,ed_text
dec edx
movsx ecx,word ed_pos
 
.mov_left_next:
mov bh,[edx+ecx+1]
mov [edx+ecx],bh
inc cx
mov bx,ed_size
inc bx
cmp cx,bx
jne .mov_left_next
 
; 㬥­ìè ¥¬ §­ ç¥­¨¥ ¯®§¨æ¨¨ ¨ à §¬¥à 
dec word ed_pos
dec word ed_size
 
;push word ed_offset
call .check_offset
;pop ax
;cmp ax,ed_offset
;jne .draw_bg_cursor_text
test eax,eax
jz .draw_bg_cursor_text
 
call .get_n
sub ax,ed_pos
add ax,ed_offset
shl eax,16
mov ax,ed_pos
sub ax,ed_offset
ror eax,16
call .draw_bg_eax
 
jmp .draw_cursor_text
popa
ret
 
;--- ­ ¦ â  ª« ¢¨è  left ---
.left:
mov bx,ed_pos
;cmp bx,0
;je @f
test bx,bx
jz @f
call .clear_cursor
dec word ed_pos
call .check_offset
test eax,eax
jz .draw_bg_cursor_text
call .draw_cursor
@@:
popa
ret
 
;--- ­ ¦ â  ª« ¢¨è  right ---
.right:
mov bx,ed_pos
cmp bx,ed_size
je @f
call .clear_cursor
inc word ed_pos
call .check_offset
test eax,eax
jz .draw_bg_cursor_text
call .draw_cursor
@@:
popa
ret
 
.home:
mov bx,ed_pos
test bx,bx
jz @f
call .clear_cursor
xor eax,eax
mov ed_pos,ax
call .check_offset
test eax,eax
jz .draw_bg_cursor_text
call .draw_cursor
@@:
popa
ret
 
.end:
mov bx,ed_pos
cmp bx,ed_size
je @f
call .clear_cursor
mov ax,ed_size
mov ed_pos,ax
call .check_offset
test eax,eax
jz .draw_bg_cursor_text
call .draw_cursor
@@:
popa
ret
 
 
;==========================================================
;=== ®¡à ¡®âª  ¬ëè¨ =======================================
;==========================================================
.mouse:
pusha
;----------------------------------------------------------
;--- ¯®«ãç ¥¬ á®áâ®ï­¨¥ ª­®¯®ª ¬ëè¨ -----------------------
;----------------------------------------------------------
mov eax,37
mov ebx,2
int 0x40
;----------------------------------------------------------
;--- ¯à®¢¥à塞 á®áâ®ï­¨¥ ----------------------------------
;----------------------------------------------------------
bt eax,0
jc .mouse_left_button
 
bt eax,1
jc @f
btr word ed_flags,2
@@:
 
popa
ret
 
.mouse_left_button:
;----------------------------------------------------------
;--- ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ -----------------------------
;----------------------------------------------------------
bts word ed_flags,2
jc .mouse_pressed
mov eax,37
;mov ebx,1
xor ebx,ebx
inc ebx
int 0x40
;----------------------------------------------------------
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box -------------
;----------------------------------------------------------
mov bx,ed_top
cmp ax,bx
jl ._blur;.mouse_end_no_focus
 
add bx,ed_height
cmp ax,bx
jg ._blur;.mouse_end_no_focus
 
shr eax,16
 
mov bx,ed_left
cmp ax,bx
jl ._blur;.mouse_end_no_focus
 
add bx,ed_width
cmp ax,bx
jg ._blur;.mouse_end_no_focus
 
;--- ¨§¬¥­ï¥¬ ¯®§¨æ¨î ªãàá®à  ---
push eax
call .clear_cursor
pop eax
xor dx,dx
sub ax,ed_left
add ax,2
mov bx,6
div bx
add ax,ed_offset
cmp ax,ed_size
jna @f
mov ax,ed_size
@@:
mov ed_pos,ax
call .check_offset
test eax,eax
jz .draw_bg_cursor_text
call .draw_cursor
 
call .focus
 
.mouse_pressed:
popa
ret
 
;.mouse_end_no_focus:
; call .blur
;popa
;ret
 
 
;----------------------------------------------------------
;--- ¯à®æ¥¤ãà  ãáâ ­®¢ª¨ 䮪ãá  ---------------------------
;----------------------------------------------------------
.blur:
pusha
._blur:
bt word ed_flags,14
jc @f
btr word ed_flags,1
jnc @f
call .clear_cursor
jmp .blur_end
.focus:
pusha
bts word ed_flags,1
jc @f
call .draw_cursor
.blur_end:
call .draw_border
@@:
popa
ret
 
;----------------------------------------------------------
;--- ¯à®æ¥¤ãà  à §¬ë¢ ­¨ï 䮪ãá  --------------------------
;----------------------------------------------------------
;.blur:
;pusha
;._blur:
;btr word ed_flags,1
;jnc @f
;call .draw_border
;call .clear_cursor
;@@:
;popa
;ret
}
ed_figure_only=1000000000000000b
ed_always_focus=100000000000000b
ed_focus=10b
ed_struc_size=36
macro draw_edit_boxes start,end
{
mov edi,start
mov ecx,((end-start)/ed_struc_size)
@@:
call edit_box.draw
add edi,ed_struc_size
loop @b
}
 
macro mouse_edit_boxes start,end
{
mov edi,start
mov ecx,((end-start)/ed_struc_size)
@@:
call edit_box.mouse
add edi,ed_struc_size
loop @b
}
 
macro key_edit_boxes start,end
{
mov edi,start
mov ecx,((end-start)/ed_struc_size)
@@:
call edit_box.key
add edi,ed_struc_size
loop @b
}
 
struc edit_box width,left,top,color,focus_border_color,\
blur_border_color,text_color,max,text,flags,size
{
.width dw width
.left dw left
.top dw top
.color dd color
.focus_border_color dd focus_border_color
.blur_border_color dd blur_border_color
.text_color dd text_color
.flags dw flags+0
.max dw max
.size dw size+0
.pos dw 0
.offset dw 0
.text dd text
}
 
macro edit_boxes_set_sys_color start,end,color_table
{
mov edi,start
mov ecx,((end-start)/ed_struc_size)
mov esi,color_table
@@:
mov eax,[esi+36]
mov ebx,[esi+20]
mov ed_focus_border_color,eax
shr bh,1
shr bl,1
shr ah,1
shr al,1
add ah,bh
add al,bl
ror eax,16
ror ebx,16
shr bl,1
shr al,1
add al,bl
ror eax,16
mov ed_blur_border_color,eax
add edi,ed_struc_size
loop @b
}
 
macro draw_edit_box ed_ptr
{
mov edi,ed_ptr
call edit_box.draw
}
 
macro mouse_edit_box ed_ptr
{
mov edi,ed_ptr
call edit_box.mouse
}
 
macro key_edit_box ed_ptr
{
mov edi,ed_ptr
call edit_box.key
}
/programs/system/run/trunk/macros.inc
1,5 → 1,17
; new application structure
macro meos_app_start
;--- ¤à㣨¥ ¬ ªà®áë ---
include 'editbox.inc'
include 'txtbut.inc'
;include 'gp.inc'
;include 'label.inc'
;include 'checkbox.inc'
;include 'file_sys.inc'
;include 'textwork.inc'
;include 'ini.inc'
 
include 'lang.inc'
 
;--- § £®«®¢®ª ---
macro meos_header par_buf,cur_dir_buf
{
use32
org 0x0
6,261 → 18,294
 
db 'MENUET01'
dd 0x01
dd __start
dd __end
dd __memory
dd __stack
 
if used __params & ~defined __params
dd __params
dd __app_start
dd __app_end
dd __app_end
dd __app_end
if <par_buf> eq <>
dd 0x0
else
dd par_buf
end if
if <cur_dir_buf> eq <>
dd 0x0
else
dd cur_dir_buf
end if
}
 
dd 0x0
;--- ®¯à¥¤¥«¨âì â®çªã ¢å®¤  ---
macro app_start
{
__app_start:
}
MEOS_APP_START fix meos_app_start
 
macro code
;--- ®¯à¥¤¥«¨âì ª®­¥æ ¯à¨«®¦¥­¨ï ¨ à §¬¥à á⥪  ---
macro app_end stack_size
{
__start:
if <stack_size> eq <>
rb 1024
else
rb stack_size
end if
__app_end:
}
CODE fix code
 
macro data
;--- § ¢¥àè¨âì ⥪ã騩 ¯®â®ª ---
macro app_close
{
__data:
xor eax,eax
dec eax
int 0x40
}
DATA fix data
 
macro udata
;--- ¯®«ãç¨âì ª®¤ ­ ¦ â®© ª« ¢¨è¨ ---
macro get_key
{
if used __params & ~defined __params
__params:
db 0
__end:
rb 255
else
__end:
end if
__udata:
mov eax,2
int 0x40
}
UDATA fix udata
 
macro meos_app_end
;--- ¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨ ---
macro get_pressed_button
{
align 32
rb 2048
__stack:
__memory:
mov eax,17
int 0x40
}
MEOS_APP_END fix meos_app_end
 
;--- á®®¡é¨âì á¨á⥬¥ ® ­ ç «¥ ¯¥à¥à¨á®¢ª¨ ®ª­  ---
macro start_draw_window
{
mov eax,12
xor ebx,ebx
inc ebx
int 0x40
}
 
; macro for defining multiline text data
struc mstr [sstring]
;--- á®®¡é¨âì á¨á⥬¥ ® § ¢¥à襭¨¨ ¯¥à¥à¨á®¢ª¨ ®ª­  ---
macro stop_draw_window
{
forward
local ssize
virtual at 0
db sstring
ssize = $
end virtual
dd ssize
db sstring
common
dd -1
mov eax,12
mov ebx,2
int 0x40
}
 
;--- ãáâ ­®¢¨âì ¬ áªã ®¦¨¤ ¥¬ëå ᮡë⨩ ---
macro set_events_mask mask
{
mov eax,40
mov ebx,mask
int 0x40
}
 
; strings
macro sz name,[data] { ; from MFAR [mike.dld]
common
if used name
label name
;--- ¯®«ãç¨âì ¨­ä®à¬ æ¨î ® ¯à®æ¥áᥠ---
macro get_procinfo proc_inf_buf,slot_num
{
mov eax,9
mov ebx,proc_inf_buf
if <slot_num> eq <>
xor ecx,ecx
dec ecx
else
mov ecx,slot_num
end if
forward
if used name
db data
end if
common
if used name
.size = $-name
end if
int 0x40
}
 
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
macro get_sys_colors col_buf
{
mov eax,48
mov ebx,3
mov ecx,col_buf
mov edx,40
int 0x40
}
 
macro get_grab_area
{
mov eax,48
mov ebx,7
int 0x40
}
 
macro get_scin_height
{
mov eax,48
mov ebx,4
int 0x40
}
 
; easy system call macro
macro mpack dest, hsrc, lsrc
macro min_window
{
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
mov eax,18
mov ebx,10
int 0x40
}
 
macro __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b eq)
mov reg,a
macro activ_window slot_n
{
mov eax,18
mov ebx,3
if <slot_n> eq <>
else
mov ecx,slot_n
end if
int 0x40
}
 
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
macro get_active_window
{
mov eax,18
mov ebx,7
int 0x40
}
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
macro add arg1,arg2
macro delay time
{
if (arg2 eqtype 0)
if (arg2) = 1
inc arg1
mov eax,5
if <time> eq <>
else
add arg1,arg2
mov ebx,time
end if
else
add arg1,arg2
end if
int 0x40
}
 
macro sub arg1,arg2
;--- ®¦¨¤ âì ᮡëâ¨ï ---
macro wait_event redraw,key,button,mouse,ipc,other
{
if (arg2 eqtype 0)
if (arg2) = 1
dec arg1
mov eax,10
int 0x40
dec ax
if <redraw> eq <>
else
sub arg1,arg2
jz redraw
end if
dec ax
if <key> eq <>
else
sub arg1,arg2
jz key
end if
dec ax
if <button> eq <>
else
jz button
end if
dec ax
dec ax
dec ax
if <mouse> eq <>
else
jz mouse
end if
if <ipc> eq <>
else
dec ax
jz ipc
end if
if <other> eq <>
jmp still
else
jmp other
end if
}
 
macro mov arg1,arg2
;--- ¯®«ãç¨âì à §¬¥àë íªà ­  ---
macro get_screen_size
{
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
mov eax,14
int 0x40
}
 
macro get_screen_prop struc_ptr
{
mov eax,61
push eax eax
xor ebx,ebx
inc ebx
int 0x40
mov [struc_ptr],eax
pop eax
inc ebx
int 0x40
mov [struc_ptr+4],ax
pop eax
inc ebx
int 0x40
mov [struc_ptr+6],eax
}
 
macro resize_mem mem_size
{
mov eax,64
xor ebx,ebx
inc ebx
if <mem_size> eq <>
else
mov arg1,arg2
mov ecx,mem_size
end if
else
mov arg1,arg2
end if
int 0x40
}
 
evm_redraw equ 1
evm_key equ 10b
evm_button equ 100b
evm_mouse equ 100000b
evm_ipc equ 1000000b
 
macro struct name
struc procinfo
{
virtual at 0
name name
sizeof.#name = $ - name
end virtual
.takts_per_second: dd ?
.window_stack_pos: dw ?
.slot_number: dw ?
dw ?
.name: rb 11
.align: db ?
.addres: dd ?
.use_mem: dd ?
.pid: dd ?
.left: dd ?
.top: dd ?
.width: dd ?
.height: dd ?
.slot_state: dw ?
rb (1024-56)
}
 
; structures used in MeOS
struc process_information
struc sys_color_table
{
.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)
.frames: dd ? ;+0
.grab: dd ? ;+4
.grab_button: dd ? ;+8
.grab_button_text: dd ? ;+12
.grab_text: dd ? ;+16
.work: dd ? ;+20
.work_button: dd ?;+24
.work_button_text: dd ? ;+28
.work_text: dd ? ;+32
.work_graph: dd ? ;+36
}
struct process_information
 
struc system_colors
struc screen_size
{
.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 ?
.height: dw ?
.width: dw ?
}
struct system_colors
 
struc screen_prop
{
.height: dw ? ;+0
.width: dw ? ;+2
.bitspp: dw ? ;+4
.bytesps: dd ?;+6
}
 
; constants
struc ipc_buffer size
{
.block: dd ?
.in_use: dd ?
.messages: rb size
}
 
; 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
;--- æ¢¥â  ---
cl_white=0xffffff
cl_black=0x000000
/programs/system/run/trunk/run.asm
1,198 → 1,261
; <--- description --->
; compiler: FASM 1.54
; name: MenuetOS RUN
; version: 0.02
; last update: 28/09/2004
; written by: Ivan Poddubny
; e-mail: ivan-yar@bk.ru
 
 
; <--- include all MeOS stuff --->
include "lang.inc"
include "macros.inc"
;;;lang fix en
 
 
; <--- start of MenuetOS application --->
MEOS_APP_START
 
;include "DEBUG.INC"
 
; <--- start of code --->
CODE
call draw_window ; at first create and draw the window
 
wait_event: ; main cycle
mcall 10
 
cmp eax, 1 ; if event == 1
je redraw ; jump to redraw handler
cmp eax, 2 ; else if event == 2
je key ; jump to key handler
cmp eax, 3 ; else if event == 3
je button ; jump to button handler
 
jmp wait_event ; else return to the start of main cycle
 
 
redraw: ; redraw event handler
window_y=88
;window_x=320
window_x=450
include 'macros.inc'
meos_header par
use_edit_box
use_txt_button
app_start
cmp [par],byte 0
jne read_par
set_events_mask evm_mouse+evm_button+evm_key+evm_redraw
red:
get_sys_colors sc
set_sys_colors_txt_button run_but,sc
push dword [sc.work_graph]
pop [input_fn.focus_border_color]
call draw_window
jmp wait_event
 
 
key: ; key event handler
mcall 2
 
still:
wait_event red,key,button,mouse,,still
key:
get_key
cmp ah, 13
je _run
cmp ah, 8
je .backspace
je run
key_edit_box input_fn
jmp still
button:
get_pressed_button
dec ah
jz close
dec ah
jz run
jmp still
mouse:
mouse_edit_box input_fn
jmp still
 
mov bl, ah
mov eax, [position]
mov [filename + eax], bl
inc [position]
call draw_string
 
jmp wait_event
 
.backspace:
read_par:
mov esi,par
mov edi,fn
mov ecx,256
rep movsb
run:
xor eax, eax
cmp [position], eax
je wait_event
dec [position]
call draw_string
jmp wait_event
mov edi,file_info.name
mov ecx,512
rep stosb
mov edi,run_par
mov ecx,256
rep stosb
 
mov esi,fn
mov edi,file_info.name
cmp [esi],byte '"'
je copy_fn_with_spaces
copy_fn:
cmp [esi],byte ' '
je .stop
cmp [esi],byte 0
je .stop
mov al,[esi]
mov [edi],al
inc esi
inc edi
jmp copy_fn
.stop:
 
button: ; button event handler
mcall 17
jmp copy_par
 
cmp ah, 10
je _run
copy_fn_with_spaces:
inc esi
@@:
cmp [esi],byte '"'
je .stop
cmp [esi],byte 0
je .stop
mov al,[esi]
mov [edi],al
inc esi
inc edi
jmp @b
.stop:
 
dec ah
jne wait_event ; return if button id != 1
copy_par:
@@:
inc esi
cmp [esi],byte ' '
je @b
mov edi,run_par
@@:
cmp [esi],byte 0
je .stop
mov al,[esi]
mov [edi],al
inc esi
inc edi
jmp @b
.stop:
 
_exit:
or eax, -1 ; exit application
mov eax,70
mov ebx,file_info
int 0x40
 
;cmp eax,0
;jg error
bt eax,31
je error
jmp still
close:
app_close
 
_run:
mcall 58, fileinfo
; dps "58th function returned "
; dpd eax
; newline
jmp _exit
error:
 
macro cmp_err code,text_ptr
{
cmp al,code
jne @f
mov [status],text_ptr
;jmp .draw_status
@@:
}
neg eax
 
draw_window:
mcall 12, 1
;test al,al
;jz close
 
mcall 14
and eax, 0xFFFF
sub eax, 100
shl eax, 16
add eax, 80
mov ecx, eax
cmp_err 3,bad_file_sys
 
mov ebx, 148*65536+400 ; (window_cx)*65536+(window_sx)
mov edx, 0x03DDDDDD ; work area color & window type 3
mcall 0
cmp_err 5,file_not_find
 
mov ebx, 8*65536+8 ; coordinates
mov ecx, 0x10ffffff ; color & font N1
mov edx, header ; address of text
mov esi, header.size ; length of text
mcall 4
cmp_err 9,bad_fat_table
 
mpack ebx, 10, 26
mov ecx, 0
mov edx, message
mov esi, message.size
mcall
cmp_err 10,acces_denyied
 
mpack ebx, 385-(runbtn.size*6), runbtn.size*6+4
mpack ecx, 56, 14
mov edx, 10
mov esi, 0xa0a0a0
mcall 8
cmp_err 11,device_error
 
; mpack ebx, 385-runbtn.size*6-findbtn.size*6-8, findbtn.size*6+4
; inc edx
; mcall 8
cmp_err 30,out_of_memory
 
; mpack ebx, 388-runbtn.size*6-findbtn.size*6-7, 59
; mov ecx, 0
; mov edx, findbtn
; mov esi, findbtn.size
; mcall 4
cmp_err 31,file_not_executable
 
mpack ebx, 388-runbtn.size*6, 59
mov ecx, 0
mov edx, runbtn
mov esi, runbtn.size
mcall 4
cmp_err 32,many_processes
 
call draw_string
.draw_status:
call draw_status
jmp still
 
mcall 12, 2
ret
draw_window:
start_draw_window
get_screen_size
mov cx,ax
sub cx,window_y+20
shl ecx,16
mov cx,window_y
shr eax,16
mov bx,ax
sub bx,window_x
shl ebx,15
mov bx,window_x
mov edx,[sc.work]
or edx,0x03000000
xor eax,eax
xor esi,esi
xor edi,edi
int 0x40
 
get_procinfo app
 
draw_string:
mpack ebx, 10, 380
mpack ecx, 38, 14
mov edx, 0xA0A0A0
mcall 13
mov ax,[app.width]
sub ax,20
mov [input_fn.width],ax
mov [run_but.width],ax
 
mpack ebx, 14, 41
mov ecx, 0
mov edx, filename
mov esi, [position]
mcall 4
ret
mov bx,5
shl ebx,16
mov bx,ax
add bx,15
mov cx,70
push cx
shl ecx,16
pop cx
mov edx,[sc.work_graph]
mov eax,38
int 0x40
 
draw_edit_box input_fn
draw_txt_button run_but
 
call draw_status_text
 
; <--- initialised data --->
DATA
stop_draw_window
ret
 
position dd filename.size
draw_status:
mov ebx,5*65536+(window_x-5-5)
mov ecx,(window_y-16)*65536+12
mov edx,[sc.work]
mov eax,13
int 0x40
draw_status_text:
mov edx,[status]
xor esi,esi
@@:
cmp [edx+esi],byte 0
je @f
inc esi
jmp @b
@@:
mov eax,4
mov ebx,10*65536+(window_y-14)
mov ecx,[sc.work_text]
int 0x40
ret
 
lsz header,\
ru, "‡ ¯ã᪠¯à®£à ¬¬ë",\
en, "Start program"
run_but txt_button 0,10,15,50,2,0,0,run_but_text,
if lang eq ru
run_but_text db '‡€“‘’ˆ’œ',0
else
run_but_text db 'RUN',0
end if
input_fn edit_box 0,10,30,0xffffff,0,0xaaaaaa,0,511,fn,ed_focus+\
ed_always_focus
 
lsz message,\
ru, "‚¢¥¤¨â¥ ¯ãâì ª ä ©«ã:",\
en, "Enter path to file:"
if lang eq ru
hello db '‚¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ä ©«ã ¨ ­ ¦¬¨â¥ Enter',0
bad_file_sys db '¥¨§¢¥áâ­ ï ä ©«®¢ ï á¨á⥬ ',0 ; 3
file_not_find db '” ©« ­¥ ­ ©¤¥­',0 ; 5
bad_fat_table db '’ ¡«¨æ  FAT à §àã襭 ',0 ; 9
acces_denyied db '„®áâ㯠§ ¯à¥é¥­',0 ; 10
device_error db 'Žè¨¡ª  ãáâனá⢠',0 ; 11
out_of_memory db '¥¤®áâ â®ç­® ¯ ¬ïâ¨',0 ; 30
file_not_executable db '” ©« ­¥ ï¥âáï ¨á¯®«­ï¥¬ë¬',0 ; 31
many_processes db '‘«¨èª®¬ ¬­®£® ¯à®æ¥áᮢ',0 ; 32
else
hello db 'Enter full path to file and press <Enter>',0
bad_file_sys db 'Unknown file system',0 ; 3
file_not_find db 'File not found',0 ; 5
bad_fat_table db 'FAT table corrupted',0 ; 9
acces_denyied db 'Access denied',0 ; 10
device_error db 'Device error',0 ; 11
out_of_memory db 'Out of memory',0 ; 30
file_not_executable db 'File is not executable',0 ; 31
many_processes db 'Too many processes',0 ; 32
end if
 
; lsz findbtn,\
; ru, " ©â¨...",\
; en, "Find..."
status dd hello
 
lsz runbtn,\
ru, "‡ ¯ãáâ¨âì",\
en, "Run"
file_info:
.mode dd 7
.flags dd 0
.par dd run_par
dd 0,0
.name rb 512
 
flags dw ?
 
fileinfo:
.mode dd 16
dd 0
.param dd 0
dd 0
.workarea dd workarea
fn rb 512
 
sz filename, "/rd/1/"
rb 122
 
 
; <--- uninitialised data --->
UDATA
workarea rb 4096
 
 
MEOS_APP_END
; <--- end of MenuetOS application --->
sc sys_color_table
app procinfo
run_par rb 256
par rb 256
app_end
/programs/system/run/trunk/run.txt
0,0 → 1,19
RUN - § ¯ã᪠«ª  ¯à®£à ¬¬ ¢ Š®«¨¡à¨Ž‘ ç¥à¥§ 70-î äã­ªæ¨î.
 
‡ ¯ã᪠¯à®£à ¬¬
‚¢¥¤¨â¥ ¯®«­ë© ¯ãâì ª ¨á¯®«­ï¥¬®¬ã ä ©«ã ¨ ­ ¦¬¨â¥ ª­®¯ªã "‡€“‘’ˆ’œ" ¨«¨
ª« ¢¨èã Enter.
‡ ¯ã᪠¯à®£à ¬¬ á ¯ à ¬¥âà ¬¨
®áâ ¢ì⥠¯à®¡¥« ¯®á«¥ ¯ã⨠ª ä ©«ã ¨ ¢¢®¤¨â¥ ¯ à ¬¥âàë. …᫨ ¢ ¯ã⨠ª ä ©«ã
¥áâì ¯à®¡¥«ë, ¥£® ­¥®¡å®¤¨¬® ¢ë¤¥«¨âì ª ¢ë窠¬¨ (⮣¤  ¯à®¡¥«®¬ à §¤¥«ïâì
­¥®¡ï§ â¥«ì­®).
à¨¬¥àë
/rd/1/tinypad /rd/1/menu.dat
"/hd0/1/long name dir with spaces/tinypad" /rd/1/autorun.dat
 
‚ᥣ® ¬®¦­® ¢¢®¤¨âì ¤® 512 ᨬ¢®«®¢.
ˆ¬ï ä ©«  ¨«¨ ¯ ¯ª¨ ¬®¦¥â ᮤ¥à¦ âì ¤® 260 ᨬ¢®«®¢.
…᫨ ¯à®¨§®è«  ®è¨¡ª , ®­  ®â®¡à §¨âáï ¢­¨§ã.
 
…¢â¨å®¢ Œ ªá¨¬ (Maxxxx32)
mailto:maxxxxm@mail.ru
/programs/system/run/trunk/txtbut.inc
0,0 → 1,127
;--------------------------------------------------------------------
;--- à¨á®¢ ­¨¥ ª­®¯ª¨ á ⥪á⮬ ¢ á¥à¥¤¨­¥ --------------------------
;--------------------------------------------------------------------
macro use_txt_button
{
txt_button:
.draw:
pusha
;--- ¯à®à¨á®¢ª  á ¬®© ª­®¯ª¨ ---
mov eax,8
mov ebx,[edi] ; [but.width]
mov ecx,[edi+4] ;[but.height]
mov edx,[edi+8];[but.id]
mov esi,[edi+12];[but.color]
int 0x40
;--- ⥪áâ ­  ­¥© ---
; áç¨â ¥¬ ª®«¨ç¥á⢮ ᨬ¢®«®¢
mov edx,[edi+20]
xor esi,esi
.check_next_symbol:
cmp [edx+esi],byte 0
je .str_end
inc esi ; ¢ esi ¤«¨­  áâப¨ ¢ ᨬ¢®« å
jmp .check_next_symbol
.str_end:
 
; ¢ëç¨á«ï¥¬ ª®®à¤¨­ âë
lea ebx,[esi*2+esi]
lea ebx,[ebx*2] ; ¢ ebx ¤«¨­  áâப¨ ¢ ¯¨ªá¥«ïå
 
;not ebx
neg ebx
add bx,[edi] ; [but.width]
sar bx,1
inc bx
add bx,[edi+2];[but.left] ; ¢ bx ¯®§¨æ¨ï á«¥¢ 
shl ebx,16
 
 
mov bx,[edi+4];[but.height]
sub bx,8-1
sar bx,1
add bx,[edi+6];[but.top] ; ¢ bx ¯®§¨æ¨ï ᢥàåã
 
; à¨á㥬 áâபã ⥪áâ 
mov ecx,[edi+16] ;[but.text_color]
shr eax,1
int 0x40
popa
ret
}
 
struc txt_button width,left,height,top,id,color,text_color,text_ptr,\
proc_addres
{
.width dw width ;+0
.left dw left ;+2
.height dw height ;+4
.top dw top ;+6
.id dd id ;+8
.color dd color ;+12
.text_color dd text_color ;+16
.text_ptr dd text_ptr ;+20
.proc_addres dd proc_addres+0 ;+24
}
but_struc_size=24+4
macro draw_txt_buttons start,end
{
mov edi,start
mov ecx,((end-start)/but_struc_size)
@@:
call txt_button.draw
add edi,but_struc_size
loop @b
}
 
macro txt_but_set_sys_color start,end,color_table
{
mov edi,start
mov esi,color_table
mov ecx,((end-start)/but_struc_size)
@@:
push dword [esi+24]
pop dword [edi+12]
push dword [esi+28]
pop dword [edi+16]
add edi,but_struc_size
loop @b
}
 
macro txt_but_ev start,end
{
mov edi,start
mov ecx,((end-start)/but_struc_size)
.txt_but_next:
cmp ah,[edi+8]
jne @f
cmp dword [edi+24],0
je @f
pusha
call dword [edi+24]
popa
@@:
add edi,but_struc_size
loop .txt_but_next
}
 
macro draw_txt_button ptr
{
mov edi,ptr
call txt_button.draw
}
 
macro set_sys_colors_txt_button but,sc
{
mov esi,sc
mov edi,but
push dword [esi+24]
pop dword [edi+12]
push dword [esi+28]
pop dword [edi+16]
}
 
macro event_txt_button but,sc
{
 
}
/programs/system/setup/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/setup/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/setup/trunk/build.bat
0,0 → 1,2
@fasm setup.asm setup
@pause
/programs/system/setup/trunk/macros.inc
143,9 → 143,6
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
177,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
221,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/vrr/trunk/macros.inc
143,9 → 143,6
 
 
 
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
177,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
221,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
/programs/system/vrr_m/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/system/vrr_m/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/system/vrr_m/trunk/build.bat
0,0 → 1,2
@fasm vrr_m.asm vrr_m
@pause
/programs/system/vrr_m/trunk/macros.inc
123,8 → 123,10
end if
}
 
macro __mov reg,a { ; mike.dld
if ~a eq
macro __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b eq)
mov reg,a
end if
}
141,11 → 143,6
 
 
 
; 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>
 
177,7 → 174,7
 
macro mov arg1,arg2
{
if (arg1 in __regs) & (arg2 eqtype 0)
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
221,7 → 218,13
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information