Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Ignore whitespace Rev 204 → Rev 205

/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/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/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_en.bat
File deleted
\ No newline at end of file
/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/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/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/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/cpuspeed/trunk/build_ru.bat
File deleted
\ No newline at end of file
/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,19 → 514,13
; 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
krnl_cnt dd 0
vmode dd 0
targ dd text2
I_END:
/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
592,7 → 592,8
if lang eq en
text:
db ' NAME/TERMINATE PID CPU-USAGE % '
db 'MEMORY START/USAGE W-STACK W-SIZE'
db 'MEMORY START/USAGE W-STACK W-SIZE'
text_len = $-text
 
tbts: db 'PREV PAGE NEXT PAGE REBOOT SYSTEM'
tbte:
605,8 → 606,9
labellen:
else
text:
db ' NAME/BEENDEN PID CPU-LAST % '
db 'SPEICHER START/NUTZUNG W-STACK W-SIZE'
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
203,9 → 203,9
jmp still
no_new_colour:
 
cmp ah,1 ; terminate
jnz noid1
mov eax,-1
cmp ah,1 ; terminate
jnz noid1
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)
;
;to-do:
; 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:
38,8 → 56,8
; added
; * 3 new vendor id's (ESS from Madis Kalme and 2 id's
; forgotten from 1.15 release: Broadcom -SiByte and Chaintech Comp.)
; changed
; * I don't know why other devs (Jason or Victor) changed window style
; changed
; * I don't know why other devs (Jason or Victor) changed window style
; to old ugly one, so I changed it back to skinned type 3.
; * the same goes to the use of macroc.inc - it is enabled again.
; deleted
64,7 → 82,7
;Author: Sergey Kuzmin aka Wildwest <kuzmin_serg@list.ru>
;Features:
; changed
; * ! Description is based on Class and SubClass
; * ! Description is based on Class and SubClass
; now (PCI 3.0). The Names of Classes and SubClasses
; are in the end of Vendors.inc
; deleted
105,22 → 123,21
;-------------------------------------------------------------
use32
 
org 0x0
org 0x0
 
db 'MENUET01'; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image
dd 0xFFFF ; memory for app = 64 KB
dd I_END ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon
db 'MENUET01'; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image
dd 0xFFFF ; memory for app = 64 KB
dd I_END ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon
 
 
include 'macros.inc'
include 'vendors.inc'
include 'lang.inc'
include 'VENDORS.INC'
 
START: ; start of execution
START: ; start of execution
call draw_window
 
still:
127,33 → 144,33
mov eax,10 ; wait here for event
int 0x40
 
cmp eax,1 ; redraw request ?
je red
cmp eax,2 ; key in buffer ?
je key
cmp eax,3 ; button in buffer ?
je button
cmp eax,1 ; redraw request ?
je red
cmp eax,2 ; key in buffer ?
je key
cmp eax,3 ; button in buffer ?
je button
 
jmp still
 
red: ; redraw
mov eax, 9 ;window redraw requested so get new window coordinates and size
mov ebx, Proc_Info ;area to store process information
mov ecx, -1 ;
int 0x40 ;get the process information
red: ; redraw
mov eax, 9 ;window redraw requested so get new window coordinates and size
mov ebx, Proc_Info ;area to store process information
mov ecx, -1 ;
int 0x40 ;get the process information
mov eax,[Proc_Info+34] ;store the window coordinates into the Form Structure
mov [Form+2], ax ;x start position
mov [Form+2], ax ;x start position
mov eax,[Proc_Info+38] ;
mov [Form+6],ax ;ystart position
mov [Form+6],ax ;ystart position
mov eax,[Proc_Info+42] ;
mov [Form],ax ;window width
mov [Form],ax ;window width
mov eax,[Proc_Info+46] ;
mov [Form+4] ,ax ;window height
call draw_window ;go redraw window now
mov [Form+4] ,ax ;window height
call draw_window ;go redraw window now
jmp still
 
key: ; key
mov eax,2 ; just read it and ignore
key: ; key
mov eax,2 ; just read it and ignore
int 0x40
jmp still
button: ; button
160,7 → 177,7
mov eax,17 ; get id
int 0x40
 
cmp ah,1 ; button id=1 ?
cmp ah,1 ; button id=1 ?
jne noclose
 
mov eax,-1 ; close this program
187,81 → 204,81
mov byte [total],0
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1 ; 1, start of draw
mov ebx,1 ; 1, start of draw
int 0x40
; DRAW WINDOW
mov eax,0 ; function 0 : define and draw window
mov ebx, dword [Form] ; x/width of window
mov ecx, dword [Form+4] ; y/height of window
mov edx,0x03ffffff ; color of work area RRGGBB,8->color gl
mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color gl
mov edi,0x005080d0 ; color of frames RRGGBB
int 0x40 ; draw the window
mov eax,0 ; function 0 : define and draw window
mov ebx, dword [Form] ; x/width of window
mov ecx, dword [Form+4] ; y/height of window
mov edx,0x03ffffff ; color of work area RRGGBB,8->color gl
mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color gl
mov edi,0x005080d0 ; color of frames RRGGBB
int 0x40 ; draw the window
; WINDOW LABEL
mov eax,4 ; function 4 : write text to window
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,0x10ddeeff ; font 1 & color ( 0xF0RRGGBB )
mov edx,labelt ; pointer to text beginning
mov esi,labellen-labelt ; text length
mov eax,4 ; function 4 : write text to window
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
mov ecx,0x10ddeeff ; font 1 & color ( 0xF0RRGGBB )
mov edx,labelt ; pointer to text beginning
mov esi,labellen-labelt ; text length
int 0x40
 
;draw captions to window
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
newline: ;
mov eax, 4 ;draw text system function
int 0x40 ;draw the text
add ebx, 10 ;one line down
add edx, esi ;add lenght of line to offset of text buffer
cmp byte[edx], byte 'x' ;is it the end of buffer?
jne newline ;if not draw another line of text
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 106
newline: ;
mov eax, 4 ;draw text system function
int 0x40 ;draw the text
add ebx, 10 ;one line down
add edx, esi ;add lenght of line to offset of text buffer
cmp byte[edx], byte 'x' ;is it the end of buffer?
jne newline ;if not draw another line of text
 
;Insert horizontal bars in list area
mov eax, 13 ;draw bar system function
mov ebx, 18 ;set Xstart position of bar
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
again: ;begin draw bar loop
int 0x40 ;draw bar to window area
shr ecx, 16 ;move the Ystart position to working area
add ecx, 34 ;add 34 pixels to Y Start (moves bar down)
cmp cx,word [Form+4] ;is the Ystart position outside of window area
jae nomo ;if so stop drawing bars
sub ecx, 14 ;if not, we only need 20 pixels between bar tops
shl ecx, 16 ;set that values as Ystart
add ecx, 10 ;Bar Height is always 10 pixels
jmp again ;draw another bar
nomo: ;done drawing bars here
mov eax, 13 ;draw bar system function
mov ebx, 18 ;set Xstart position of bar
shl ebx, 16 ;
mov bx,word [Form] ;get width of window
sub bx, 32 ;bar is 32 pixels shorter then window width
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
add ecx, 34 ;add 34 pixels to Y Start (moves bar down)
cmp cx,word [Form+4] ;is the Ystart position outside of window area
jae nomo ;if so stop drawing bars
sub ecx, 14 ;if not, we only need 20 pixels between bar tops
shl ecx, 16 ;set that values as Ystart
add ecx, 10 ;Bar Height is always 10 pixels
jmp again ;draw another bar
nomo: ;done drawing bars here
 
;start PCI stuff
call Get_PCI_Info ;get pci version and last bus
mov cx,word [PCI_Version] ;number to draw
mov eax, 47 ;draw number system function
xor esi, esi ;color of text
mov ebx, 0x00040100 ;4 digits to draw in hex format
mov edx, 110*65536+45 ;x/y start position of number
int 0x40 ;draw pci version to window
mov cl,byte [PCI_LastBus] ;number to draw
mov ebx, 0x00020100 ;2 digits hex format
add edx, 10 ;one line below pci version
int 0x40 ;draw the last bus to window
call Get_PCI_Info ;get pci version and last bus
mov cx,word [PCI_Version] ;number to draw
mov eax, 47 ;draw number system function
xor esi, esi ;color of text
mov ebx, 0x00040100 ;4 digits to draw in hex format
mov edx, 110*65536+45 ;x/y start position of number
int 0x40 ;draw pci version to window
mov cl,byte [PCI_LastBus] ;number to draw
mov ebx, 0x00020100 ;2 digits hex format
add edx, 10 ;one line below pci version
int 0x40 ;draw the last bus to window
 
call scan_Pci ;scan for and draw each pci device
call scan_Pci ;scan for and draw each pci device
 
movzx ecx, byte [total] ;number to draw
mov eax, 47 ;draw number system function
mov ebx, 0x00020000 ;2 digits to draw in decimal format
xor esi, esi ;color of text
mov edx, 150*65536+65 ;x/y position to draw to
int 0x40 ;draw total number of devices to window
movzx ecx, byte [total] ;number to draw
mov eax, 47 ;draw number system function
mov ebx, 0x00020000 ;2 digits to draw in decimal format
xor esi, esi ;color of text
mov edx, 150*65536+65 ;x/y position to draw to
int 0x40 ;draw total number of devices to window
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw
int 0x40
 
ret
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
288,55 → 305,61
;******************************************************
;* Get all devices on PCI Bus
scan_Pci:
cmp byte [PCI_LastBus],0xff ;0xFF means no pci bus found
jne Pci_Exists ;
ret ;if no bus then leave
cmp byte [PCI_LastBus],0xff ;0xFF means no pci bus found
jne Pci_Exists ;
ret ;if no bus then leave
Pci_Exists:
mov byte [V_Bus], 0 ;reset varibles
mov byte [V_Dev], 0 ;
mov edx, 20*65536+110 ;set start write position
mov byte [V_Bus], 0 ;reset varibles
mov byte [V_Dev], 0 ;
mov edx, 20*65536+110 ;set start write position
Start_Enum:
mov bl, 6 ;get a dword
mov bh, byte [V_Bus] ;bus of pci device
mov ch, byte [V_Dev] ;device number/function
mov cl, 0 ;offset to device/vendor id
mov eax, 62 ;pci system function
int 0x40 ;get ID's
mov bl, 6 ;get a dword
mov bh, byte [V_Bus] ;bus of pci device
mov ch, byte [V_Dev] ;device number/function
mov cl, 0 ;offset to device/vendor id
mov eax, 62 ;pci system function
int 0x40 ;get ID's
 
cmp ax, 0 ;Vendor ID should not be 0 or 0xFFFF
je nextDev ;check next device if nothing exists here
cmp ax, 0xffff ;
je nextDev ;
cmp ax, 0 ;Vendor ID should not be 0 or 0xFFFF
je nextDev ;check next device if nothing exists here
cmp ax, 0xffff ;
je nextDev ;
 
mov word [PCI_Vendor], ax ;There is a device here, save the ID's
shr eax, 16 ;
mov word [PCI_Device], ax ;
mov eax, 62 ;PCI Sys Function
mov bl, 4 ;Read config byte
mov bh, byte [V_Bus] ;Bus #
mov ch, byte [V_Dev] ;Device # on bus
mov cl, 0x08 ;Register to read (Get Revision)
int 0x40 ;Read it
mov byte [PCI_Rev], al ;Save it
mov eax, 62 ;PCI Sys Function
mov cl, 0x0b ;Register to read (Get class)
int 0x40 ;Read it
mov byte [PCI_Class], al ;Save it
mov eax, 62 ;PCI Sys Function
mov cl, 0x0a ;Register to read (Get Subclass)
int 0x40 ;Read it
mov byte [PCI_SubClass], al ;Save it
inc byte [total] ;one more device found
call Print_New_Device ;print device info to screen
mov word [PCI_Vendor], ax ;There is a device here, save the ID's
shr eax, 16 ;
mov word [PCI_Device], ax ;
mov eax, 62 ;PCI Sys Function
mov bl, 4 ;Read config byte
mov bh, byte [V_Bus] ;Bus #
mov ch, byte [V_Dev] ;Device # on bus
mov cl, 0x08 ;Register to read (Get Revision)
int 0x40 ;Read it
mov byte [PCI_Rev], al ;Save it
mov eax, 62 ;PCI Sys Function
mov cl, 0x0b ;Register to read (Get class)
int 0x40 ;Read it
mov byte [PCI_Class], al ;Save it
mov eax, 62 ;PCI Sys Function
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:
inc byte [V_Dev] ;next device on this bus
jnz Start_Enum ;jump until we reach zero
;(used to be JNO which caused bug!!! 30-4-2006, JMD)
mov byte [V_Dev], 0 ;reset device number
inc byte [V_Bus] ;next bus
mov al, byte [PCI_LastBus] ;get last bus
cmp byte [V_Bus], al ;was it last bus
jbe Start_Enum ;if not jump to keep searching
inc byte [V_Dev] ;next device on this bus
jnz Start_Enum ;jump until we reach zero
;(used to be JNO which caused bug!!! 30-4-2006, JMD)
mov byte [V_Dev], 0 ;reset device number
inc byte [V_Bus] ;next bus
mov al, byte [PCI_LastBus] ;get last bus
cmp byte [V_Bus], al ;was it last bus
jbe Start_Enum ;if not jump to keep searching
ret
;******************************************************
 
345,45 → 368,51
;******************************************************
;* Print device info to screen
Print_New_Device:
mov eax, 47 ;Write number to screen system function
mov ebx, 0x00040100 ;4 byte number, print in hexidecimal
xor esi, esi ;Color of text
movzx ecx,word [PCI_Vendor] ;Pointer to number to be written
int 0x40 ;Write Vendor ID
and edx, 0xFFFF ;*****************************************
or edx, 54*65536 ;X start becomes 54
movzx ecx,word [PCI_Device] ;get Vendor ID
int 0x40 ;Draw Vendor ID to Window
mov ebx, 0x00020100 ;2 digit number, in hexidecimal format
and edx, 0xFFFF ;*****************************************
or edx, 98*65536 ;X start becomes 98
movzx ecx,byte [V_Bus] ;get bus number
int 0x40 ;draw bus number to screen
and edx, 0xFFFF ;*****************************************
or edx, 128*65536 ;X start becomes 128
movzx ecx,byte [V_Dev] ;get device number
shr ecx, 3 ;device number is bits 3-7
int 0x40 ;Draw device Number To Window
and edx, 0xFFFF ;*****************************************
or edx, 155*65536 ;X start becomes 155
movzx ecx, byte [V_Dev] ;get Function number
and ecx, 7 ;function is first 3 bits
int 0x40 ;Draw Function Number To Window
and edx, 0xFFFF ;*****************************************
or edx, 179*65536 ;X start becomes 179
movzx ecx,byte [PCI_Rev] ;get revision number
int 0x40 ;Draw Revision to screen
and edx, 0xFFFF ;*****************************************
or edx, 215*65536 ;X start becomes 215
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
mov eax, 47 ;Write number to screen system function
mov ebx, 0x00040100 ;4 byte number, print in hexidecimal
xor esi, esi ;Color of text
movzx ecx,word [PCI_Vendor] ;Pointer to number to be written
int 0x40 ;Write Vendor ID
and edx, 0xFFFF ;*****************************************
or edx, 54*65536 ;X start becomes 54
movzx ecx,word [PCI_Device] ;get Vendor ID
int 0x40 ;Draw Vendor ID to Window
mov ebx, 0x00020100 ;2 digit number, in hexidecimal format
and edx, 0xFFFF ;*****************************************
or edx, 98*65536 ;X start becomes 98
movzx ecx,byte [V_Bus] ;get bus number
int 0x40 ;draw bus number to screen
and edx, 0xFFFF ;*****************************************
or edx, 128*65536 ;X start becomes 128
movzx ecx,byte [V_Dev] ;get device number
shr ecx, 3 ;device number is bits 3-7
int 0x40 ;Draw device Number To Window
and edx, 0xFFFF ;*****************************************
or edx, 155*65536 ;X start becomes 155
movzx ecx, byte [V_Dev] ;get Function number
and ecx, 7 ;function is first 3 bits
int 0x40 ;Draw Function Number To Window
and edx, 0xFFFF ;*****************************************
or edx, 179*65536 ;X start becomes 179
movzx ecx,byte [PCI_Rev] ;get revision number
int 0x40 ;Draw Revision to screen
and edx, 0xFFFF ;*****************************************
or edx, 215*65536 ;X start becomes 215
movzx ecx,byte [PCI_Class] ;get PCI_Class
int 0x40 ;Draw Class to screen
and edx, 0xFFFF ;*****************************************
or edx, 250*65536 ;X start becomes 250
movzx ecx,byte [PCI_SubClass];get sub class
int 0x40 ;Draw Sub Class to screen
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
movzx ebx, dx ;Set y position
or ebx, 310*65536 ;set Xposition to 310
 
;**********************************************************
;Prints the Vendor's Name based on Vendor ID
395,67 → 424,608
;-----------------------------------------------------------------------------
;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
jae next1 ;if it is less, let's continue, or jump to next1
mov ecx, 255 ;# vendors in most lists
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^
jae next2 ;
jmp rep1 ;start searching list
next1: ;
cmp ax,5120 ;same thing happening here as above^
jae next2 ;
mov edx, _SECONDPART ;
jmp rep1 ;
next2: ;
cmp ax,5574 ;
jae next3 ;
jmp rep1 ;
next2: ;
cmp ax,5459 ;
jae next3 ;
mov edx, _THIRDPART ;
jmp rep1 ;
next3: ;
mov ecx, 110 ;only 110 vendors in this list
jmp rep1 ;
next3: ;
mov ecx, 222 ;only 222 vendors in this list
mov edx, _FOURTHPART ;
 
rep1:
cmp ax,word[edx+50] ;are Vendor ID's the same?
je ex ;if so jump to print the description to screen
add edx, 52 ;if not put us at start of next description
dec ecx ;one less description in list
jnz rep1 ;was it our last?
mov edx, _UNKNOWN ;if so we dont know this Vendor
cmp ax,word[edx+50] ;are Vendor ID's the same?
je ex ;if so jump to print the description to screen
add edx, 52 ;if not put us at start of next description
dec ecx ;one less description in list
jnz rep1 ;was it our last?
mov edx, _UNKNOWN ;if so we dont know this Vendor
 
ex:
;lets print the vendor Name
xor ecx, ecx ;font color
mov eax,4 ;OS CMD
mov esi,50 ;Length of text
int 0x40 ;Print the text
;------------------------------------------------------------------
xor ecx, ecx ;font color
mov eax,4 ;OS CMD
mov esi,50 ;Length of text
int 0x40 ;Print the text
 
;------------------------------------------------------------------
;Get description based on Class/Subclass
cmp byte [PCI_Class], 11h ;we only know of 17 classes
ja endd ;if its more then, its unknown to us, so jump
movzx eax, byte [PCI_Class] ;load our class
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
cmp byte [PCI_Class], 11h ;we only know of 17 classes
ja endd ;if its more then, its unknown to us, so jump
movzx eax, byte [PCI_Class] ;load our class
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
 
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
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
cmp al,byte[edx+32] ;are subclasses the same?
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
xor ecx, ecx ;color of text
mov eax,4 ;draw text system function
mov esi,32 ;length of text to draw
int 0x40 ;draw the text
and ebx, 0x0000FFFF ;clear X position
or ebx, 0x02300000 ;set X position to 560 pixels
xor ecx, ecx ;color of text
mov eax,4 ;draw text system function
mov esi,32 ;length of text to draw
int 0x40 ;draw the text
 
movzx edx, bx ;get y coordinate
add edx, 0x0014000A ;add 10 to y coordinate and set x coordinate to 20
movzx edx, bx ;get y coordinate
add edx, 0x0014000A ;add 10 to y coordinate and set x coordinate to 20
ret
 
ClassList:
471,30 → 1041,226
; DATA AREA
 
labelt:
db 'PCI Device Enumeration v 1.31 by J. Delozier, S. Kuzmin and V. Hanla'
labellen:
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,21 → 1269,23
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
V_Dev db 0
total db 0
V_Bus db 0
V_Dev db 0
PCI_Version dw 0
PCI_LastBus db 0
PCI_Device dw 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,1999 → 23,2226
; 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 '
dw 61 ; 0x003D
db 'NCIPHER CORP. LTD '
dw 256 ; 0x0100
db 'BREA TECHNOLOGIES INC '
dw 2697 ; 0x0A89
db 'COMPAQ COMPUTER CORP. '
dw 3601 ; 0x0E11
db 'SYMBIOS LOGIC INC/LSI Logic '
dw 4096 ; 0x1000
db 'KOLTER ELECTRONIC '
dw 4097 ; 0x1001
db 'ATI TECHNOLOGIES INC '
dw 4098 ; 0x1002
db 'VLSI TECHNOLOGY INC '
dw 4100 ; 0x1004
db 'NATIONAL SEMICONDUCTOR CORPORATION '
dw 4107 ; 0x100B
db 'VIDEO LOGIC LTD '
dw 4112 ; 0x1010
db 'IBM '
dw 4116 ; 0x1014
db 'UNISYS CORPORATION '
dw 4120 ; 0x1018
db 'ELITEGROUP COMPUTER SYS '
dw 4121 ; 0x1019
db 'NCR '
dw 4122 ; 0x101A
db 'AMERICAN MEGATRENDS '
dw 4126 ; 0x101E
db 'HITACHI COMPUTER PRODUCTS '
dw 4128 ; 0x1020
db 'OKI ELECTRIC INDUSTRY CO. LTD. '
dw 4129 ; 0x1021
db 'ADVANCED MICRO DEVICES '
dw 4130 ; 0x1022
db 'TRIDENT MICROSYSTEMS '
dw 4131 ; 0x1023
db 'DELL COMPUTER CORPORATION '
dw 4136 ; 0x1028
db 'LSI LOGIC CORPORATION '
dw 4138 ; 0x102A
db 'MATROX GRAPHICS '
dw 4139 ; 0x102B
db 'TOSHIBA AMERICA '
dw 4143 ; 0x102F
db 'NEC CORPORATION '
dw 4147 ; 0x1033
db 'AMP '
dw 4152 ; 0x1038
db 'SILICON INTEGRATED SYSTEMS '
dw 4153 ; 0x1039
db 'SYNOPSYS/LOGIC MODELING GROUP '
dw 4159 ; 0x103F
db 'Micron Electronics '
dw 4162 ; 0x1042
db 'ASUSTEK COMPUTER '
dw 4163 ; 0x1043
db 'DISTRIBUTED PROCESSING TECHNOLOGY '
dw 4164 ; 0x1044
db 'OPTI INC. '
dw 4165 ; 0x1045
db 'ELSA AG '
dw 4168 ; 0x1048
db 'FOUNTAIN TECHNOLOGIES '
dw 4169 ; 0x1049
db 'TEXAS INSTRUMENTS '
dw 4172 ; 0x104C
db 'SONY CORPORATION '
dw 4173 ; 0x104D
db 'WINBOND ELECTRONICS CORP '
dw 4176 ; 0x1050
db 'HITACHI '
dw 4180 ; 0x1054
db 'Standard Microsystems Corp. '
dw 4181 ; 0x1055
db 'ETRI '
dw 4184 ; 0x1058
db 'TEKNOR INDUSTRIAL COMPUTERS INC '
dw 4185 ; 0x1059
db 'PROMISE TECHNOLOGY. '
dw 4186 ; 0x105A
db 'FOXCONN INTERNATIONAL INC '
dw 4187 ; 0x105B
db 'NUMBER 9 VISUAL TECHNOLOGY '
dw 4189 ; 0x105D
db 'INFOTRONIC AMERICA INC '
dw 4191 ; 0x105F
db 'OCEAN MANUFACTURING LTD '
dw 4195 ; 0x1063
db 'ALCATEL '
dw 4196 ; 0x1064
db 'MITSUBISHI ELECTRIC AMERICA '
dw 4199 ; 0x1067
db 'DIVERSIFIED TECHNOLOGY '
dw 4200 ; 0x1068
db 'MYLEX CORPORATION '
dw 4201 ; 0x1069
db 'APPLE COMPUTER INC. '
dw 4203 ; 0x106B
db 'SEQUENT COMPUTER SYSTEMS '
dw 4205 ; 0x106D
db 'DAEWOO TELECOM LTD '
dw 4208 ; 0x1070
db 'MITAC '
dw 4209 ; 0x1071
db 'YAMAHA CORPORATION '
dw 4211 ; 0x1073
db 'Chaintech Comp. '
dw 4214 ; 0x1076
db 'QLOGIC '
dw 4215 ; 0x1077
db 'I-BUS '
dw 4217 ; 0x1079
db 'GATEWAY 2000 '
dw 4219 ; 0x107B
db 'INTERPHASE CORPORATION '
dw 4222 ; 0x107E
db 'OLICOM '
dw 4237 ; 0x108D
db 'SILICON IMAGE (WAS CMD TECHNOLOGY INC) '
dw 4245 ; 0x1095
db 'ALACRON '
dw 4246 ; 0x1096
db 'APPIAN/ETMA '
dw 4247 ; 0x1097
db 'PACKARD BELL NEC '
dw 4250 ; 0x109A
db 'BROOKTREE CORPORATION '
dw 4254 ; 0x109E
db 'TRIGEM COMPUTER INC. '
dw 4255 ; 0x109F
db 'MEIDENSHA CORPORATION '
dw 4256 ; 0x10A0
db 'QUANTUM EFFECT DESIGN '
dw 4258 ; 0x10A2
db 'SILICON GRAPHICS '
dw 4265 ; 0x10A9
db 'HONEYWELL IAC '
dw 4268 ; 0x10AC
db 'MICRO COMPUTER SYSTEMS INC '
dw 4271 ; 0x10AF
db 'PLX TECHNOLOGY. '
dw 4277 ; 0x10B5
db 'MADGE NETWORKS '
dw 4278 ; 0x10B6
db '3COM Corp, Networking Division '
dw 4279 ; 0x10B7
db 'ACER LABS Incorp. '
dw 4281 ; 0x10B9
db 'MITSUBISHI ELECTRIC CORP. '
dw 4282 ; 0x10BA
db 'AUSPEX SYSTEMS INC. '
dw 4290 ; 0x10C2
db 'NEOMAGIC CORPORATION '
dw 4296 ; 0x10C8
db 'FUJITSU MICROELECTRONIC '
dw 4298 ; 0x10CA
db 'OMRON CORPORATION '
dw 4299 ; 0x10CB
db 'ADVANCED SYSTEM PRODUCTS '
dw 4301 ; 0x10CD
db 'FUJITSU LIMITED '
dw 4303 ; 0x10CF
db 'FUTUREPLUS SYSTEMS CORP. '
dw 4305 ; 0x10D1
db 'MOLEX INCORPORATED '
dw 4306 ; 0x10D2
db 'ROHM LSI SYSTEMS '
dw 4315 ; 0x10DB
db 'EVANS & SUTHERLAND '
dw 4317 ; 0x10DD
db 'NVIDIA CORPORATION '
dw 4318 ; 0x10DE
db 'EMULEX CORPORATION '
dw 4319 ; 0x10DF
db 'TEKRAM TECHNOLOGY CO.LTD. '
dw 4321 ; 0x10E1
db 'TUNDRA SEMICONDUCTOR CORP '
dw 4323 ; 0x10E3
db 'MICRO INDUSTRIES CORPORATION '
dw 4325 ; 0x10E5
db 'REALTEK SEMICONDUCTOR CORP. '
dw 4332 ; 0x10EC
db 'XILINX. '
dw 4334 ; 0x10EE
db 'TYAN COMPUTER '
dw 4337 ; 0x10F1
db 'NKK CORPORATION '
dw 4341 ; 0x10F5
db 'CREATIVE ELECTRONIC SYSTEMS SA '
dw 4342 ; 0x10F6
db 'I-O DATA DEVICE. '
dw 4348 ; 0x10FC
db 'FAST MULTIMEDIA AG '
dw 4350 ; 0x10FE
db 'INITIO CORPORATION '
dw 4353 ; 0x1101
db 'CREATIVE LABS '
dw 4354 ; 0x1102
db 'SIGMA DESIGNS '
dw 4357 ; 0x1105
db 'VIA TECHNOLOGIES '
dw 4358 ; 0x1106
db 'ASCEND COMMUNICATIONS '
dw 4359 ; 0x1107
db 'Adaptec/Cogent Data Technologies Inc '
dw 4361 ; 0x1109
db 'SIEMENS PC SYSTEME GMBH '
dw 4362 ; 0x110A
db 'SANTA CRUZ OPERATION '
dw 4369 ; 0x1111
db 'ACCTON TECHNOLOGY '
dw 4371 ; 0x1113
db 'MEDIA 100 '
dw 4374 ; 0x1116
db 'DATACUBE '
dw 4375 ; 0x1117
db 'FCI ELECTRONICS '
dw 4376 ; 0x1118
db 'ICP-VORTEX COMPUTERSYSTEM GMBH '
dw 4377 ; 0x1119
db 'EFFICIENT NETWORKS '
dw 4378 ; 0x111A
db 'INTEGRATED DEVICE TECH '
dw 4381 ; 0x111D
db 'EMC CORPORATION '
dw 4384 ; 0x1120
db 'FORE SYSTEMS INC '
dw 4391 ; 0x1127
db 'HERMES ELECTRONICS COMPANY '
dw 4394 ; 0x112A
db 'IMAGING TECHNOLOGY '
dw 4399 ; 0x112F
db 'PHILIPS SEMICONDUCTORS '
dw 4401 ; 0x1131
db 'MITEL CORP '
dw 4402 ; 0x1132
db 'EICON TECHNOLOGY CORPORATION '
dw 4403 ; 0x1133
db 'MERCURY COMPUTER SYSTEMS '
dw 4404 ; 0x1134
db 'FUJI XEROX CO LTD '
dw 4405 ; 0x1135
db 'MOMENTUM DATA SYSTEMS '
dw 4406 ; 0x1136
db 'CISCO SYSTEMS INC '
dw 4407 ; 0x1137
db 'ZIATECH CORPORATION '
dw 4408 ; 0x1138
db 'CYCLONE MICROSYSTEMS. '
dw 4412 ; 0x113C
db 'SANYO ELECTRIC CO-Information Systems Division '
dw 4414 ; 0x113E
db 'CREST MICROSYSTEM INC. '
dw 4417 ; 0x1141
db 'WORKBIT CORPORATION '
dw 4421 ; 0x1145
db 'FORCE COMPUTERS GMBH '
dw 4422 ; 0x1146
db 'SYSKONNECT '
dw 4424 ; 0x1148
db 'ANNABOOKS '
dw 4428 ; 0x114C
db 'DIGI INTERNATIONAL '
dw 4431 ; 0x114F
db 'MELCO INC '
dw 4436 ; 0x1154
db 'PHOTRON LTD. '
dw 4444 ; 0x115C
db 'XIRCOM '
dw 4445 ; 0x115D
db 'PFU LIMITED '
dw 4449 ; 0x1161
db 'RENDITION '
dw 4451 ; 0x1163
db 'Reliance Computer '
dw 4454 ; 0x1166
db 'ELECTRONICS FOR IMAGING '
dw 4462 ; 0x116E
db 'INVENTEC CORPORATION '
dw 4464 ; 0x1170
db 'BLUE WAVE SYSTEMS '
dw 4465 ; 0x1171
db 'ALTERA CORPORATION '
dw 4466 ; 0x1172
db 'TOSHIBA AMERICA INFO SYSTEMS '
dw 4473 ; 0x1179
db 'RICOH CO LTD '
dw 4480 ; 0x1180
db 'D-LINK SYSTEM INC '
dw 4486 ; 0x1186
db 'ADVANCED TECHNOLOGY LABORATORIES '
dw 4487 ; 0x1187
db 'MATSUSHITA ELECTIC INDUSTRIAL CO LTD '
dw 4489 ; 0x1189
db 'PLATYPUS TECHNOLOGY PTY LTD '
dw 4491 ; 0x118B
db 'COROLLARY '
dw 4492 ; 0x118C
db 'ACARD TECHNOLOGY '
dw 4497 ; 0x1191
db 'RATOC SYSTEMS INC '
dw 4501 ; 0x1195
db 'MINDSHARE. '
dw 4506 ; 0x119A
db 'BUG. '
dw 4509 ; 0x119D
db 'FUJITSU MICROELECTRONICS LTD. '
dw 4510 ; 0x119E
db 'BULL HN INFORMATION SYSTEMS '
dw 4511 ; 0x119F
db 'HAMAMATSU PHOTONICS K.K. '
dw 4513 ; 0x11A1
db 'INNOSYS '
dw 4521 ; 0x11A9
db 'ACTEL '
dw 4522 ; 0x11AA
db 'GALILEO TECHNOLOGY LTD. '
dw 4523 ; 0x11AB
db 'LITE-ON COMMUNICATIONS INC '
dw 4525 ; 0x11AD
db 'SCITEX CORPORATION '
dw 4526 ; 0x11AE
db 'AVID TECHNOLOGY INC '
dw 4527 ; 0x11AF
db 'V3 SEMICONDUCTOR INC. '
dw 4528 ; 0x11B0
db 'EASTMAN KODAK '
dw 4530 ; 0x11B2
db 'BARR SYSTEMS INC. '
dw 4531 ; 0x11B3
db 'ASTRODESIGN '
dw 4543 ; 0x11BF
db 'AGERE/LUCENT '
dw 4545 ; 0x11C1
db 'DAINIPPON SCREEN MFG. CO. LTD '
dw 4550 ; 0x11C6
db 'DOLPHIN INTERCONNECT SOLUTIONS AS '
dw 4552 ; 0x11C8
db 'MAGMA '
dw 4553 ; 0x11C9
db 'LSI SYSTEMS '
dw 4554 ; 0x11CA
db 'SPECIALIX INTERNATIONAL LTD '
dw 4555 ; 0x11CB
db 'NETACCESS '
dw 4558 ; 0x11CE
db 'LOCKHEED MARTIN-Electronics & Communications '
dw 4560 ; 0x11D0
db 'AURAVISION '
dw 4561 ; 0x11D1
db 'INTERCOM INC. '
dw 4562 ; 0x11D2
db 'ANALOG DEVICES '
dw 4564 ; 0x11D4
db 'IKON CORPORATION '
dw 4565 ; 0x11D5
db 'TOSHIBA TEC CORPORATION '
dw 4569 ; 0x11D9
db 'NOVELL '
dw 4570 ; 0x11DA
db 'NEW WAVE PDG '
dw 4575 ; 0x11DF
db 'QUICKLOGIC CORPORATION '
dw 4579 ; 0x11E3
db 'CORECO INC '
dw 4588 ; 0x11EC
db 'DOME IMAGING SYSTEMS INC '
dw 4590 ; 0x11EE
db 'PMC-SIERRA INC '
dw 4600 ; 0x11F8
db 'AGFA CORPORATION '
dw 4611 ; 0x1203
db 'AMDAHL CORPORATION '
dw 4614 ; 0x1206
db 'ESSENTIAL COMMUNICATIONS '
dw 4623 ; 0x120F
db 'PERFORMANCE TECHNOLOGIES. '
dw 4628 ; 0x1214
db 'PURUP-EskoFot A/S '
dw 4630 ; 0x1216
db 'O2MICRO. '
dw 4631 ; 0x1217
db '3DFX INTERACTIVE '
dw 4634 ; 0x121A
db 'VIRATA LTD '
dw 4635 ; 0x121B
db 'CONTEC CO. LTD '
dw 4641 ; 0x1221
db 'ARTESYN COMMUNICATIONS PRODUCTS INC '
dw 4643 ; 0x1223
db 'TECH-SOURCE '
dw 4647 ; 0x1227
db 'SICAN GMBH '
dw 4652 ; 0x122C
db 'MARCONI COMMUNICATIONS LTD '
dw 4658 ; 0x1232
db 'SOLITON SYSTEMS K.K. '
dw 4961 ; 0x1361
db 'CENTURY SYSTEMS. '
dw 4668 ; 0x123C
db 'ENGINEERING DESIGN TEAM. '
dw 4669 ; 0x123D
db 'C-CUBE MICROSYSTEMS '
dw 4671 ; 0x123F
db 'JAYCOR NETWORKS INC. '
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 '
dw 4688 ; 0x1250
db 'GUZIK TECHNICAL ENTERPRISES '
dw 4691 ; 0x1253
db 'OPTIBASE LTD '
dw 4693 ; 0x1255
db 'ALLIED TELESYN INTERNATIONAL '
dw 4697 ; 0x1259
db 'AURORA TECHNOLOGIES. '
dw 4700 ; 0x125C
db 'ESS '
dw 4701 ; 0x125D
db 'CONCURRENT TECHNOLOGIES '
dw 4703 ; 0x125F
db 'INTERSIL CORP '
dw 4704 ; 0x1260
db 'MATSUSHITA-KOTOBUKI ELECTRONICS '
dw 4705 ; 0x1261
db 'AVAL NAGASAKI CORPORATION '
dw 4708 ; 0x1264
db 'TEKTRONIX '
dw 4712 ; 0x1268
db 'NORTEL NETWORKS '
dw 4716 ; 0x126C
db 'SPLASH TECHNOLOGY. '
dw 4717 ; 0x126D
db 'SUMITOMO METAL INDUSTRIES '
dw 4718 ; 0x126E
db 'SILICON MOTION. '
dw 4719 ; 0x126F
db 'OLYMPUS OPTICAL CO. LTD. '
dw 4720 ; 0x1270
db 'CREATIVE LABS (WAS ENSONIQ, MALVERN) '
dw 4724 ; 0x1274
db 'NETWORK APPLIANCE CORPORATION '
dw 4725 ; 0x1275
db 'TRANSTECH DSP LTD '
dw 4728 ; 0x1278
db 'TRANSMETA CORPORATION '
dw 4729 ; 0x1279
db 'CONEXANT, ROCKWELL '
dw 4730 ; 0x127A
db 'VELA RESEARCH LP '
dw 4733 ; 0x127D
db 'FUJIFILM '
dw 4735 ; 0x127F
db 'YOKOGAWA ELECTRIC CORPORATION '
dw 4737 ; 0x1281
db 'INTEGRATED TECHNOLOGY EXPRESS. '
dw 4739 ; 0x1283
db 'MAZET GMBH '
dw 4742 ; 0x1286
db 'TRANSWITCH CORPORATION '
dw 4747 ; 0x128B
db 'G2 NETWORKS. '
dw 4749 ; 0x128D
db 'TATENO DENNOU. '
dw 4751 ; 0x128F
db 'TOSHIBA PERSONAL COMPUTER SYSTEM CORP. '
dw 4752 ; 0x1290
db 'NCS COMPUTER ITALIA SRL '
dw 4753 ; 0x1291
db 'TRITECH MICROELECTRONICS INC '
dw 4754 ; 0x1292
db 'SHUTTLE COMPUTER '
dw 4759 ; 0x1297
db 'KNOWLEDGE TECHNOLOGY LAB. '
dw 4761 ; 0x1299
db 'VMETRO. '
dw 4762 ; 0x129A
db 'VICTOR COMPANY OF JAPAN '
dw 4766 ; 0x129E
db 'ALLEN- BRADLEY COMPANY '
dw 4768 ; 0x12A0
db 'LUCENT TECHNOLOGIES '
dw 4771 ; 0x12A3
db 'AMO GMBH '
dw 4775 ; 0x12A7
db 'XIOTECH CORPORATION '
dw 4777 ; 0x12A9
db 'YUAN YUAN ENTERPRISE CO. LTD. '
dw 4779 ; 0x12AB
db 'ALTEON WEBSYSTEMS INC '
dw 4782 ; 0x12AE
db 'NATURAL MICROSYSTEMS '
dw 4790 ; 0x12B6
db 'COGNEX MODULAR VISION SYSTEMS DIV.-ACUMEN INC. '
dw 4791 ; 0x12B7
db '3Com Corp, Modem Division '
dw 4793 ; 0x12B9
db 'ARRAY MICROSYSTEMS '
dw 4796 ; 0x12BC
db 'ANCHOR CHIPS INC. '
dw 4798 ; 0x12BE
db 'Fujifilm Microdevices '
dw 4799 ; 0x12BF
_SECONDPART: ;lists 255 Vendors
db 'INFIMED '
dw 4800 ; 0x12C0
db 'HOLTEK SEMICONDUCTOR INC '
dw 4803 ; 0x12C3
db 'Connect Tech Inc '
dw 4804 ; 0x12C4
db 'Mitan Corporation '
dw 4806 ; 0x12C6
db 'Dialogic Corp '
dw 4807 ; 0x12C7
db 'Integrated Computing Engines '
dw 4810 ; 0x12CA
db 'Aims Lab '
dw 4813 ; 0x12CD
db 'NVIDIA (WAS: STB,SGS THOMPSON) '
dw 4818 ; 0x12D2
db 'GE VINGMED ULTRASOUND AS '
dw 4819 ; 0x12D3
db 'COMVERSE NETWORKS SYSTEM & Ulticom. '
dw 4820 ; 0x12D4
db 'Equator Technologies '
dw 4821 ; 0x12D5
db 'Analogic Corp '
dw 4822 ; 0x12D6
db 'PERICOM SEMICONDUCTOR '
dw 4824 ; 0x12D8
db 'Aculab PLC '
dw 4825 ; 0x12D9
db 'True Time Inc. '
dw 4826 ; 0x12DA
db 'Rainbow Technologies '
dw 4830 ; 0x12DE
db 'SBS Technologies Inc '
dw 4831 ; 0x12DF
db 'Chase Research '
dw 4832 ; 0x12E0
db 'Datum Inc. Bancomm-Timing Division '
dw 4834 ; 0x12E2
db 'Brooktrout Technology Inc '
dw 4836 ; 0x12E4
db 'Sebring Systems '
dw 4839 ; 0x12E7
db 'Real Vision '
dw 4842 ; 0x12EA
db 'AUREAL INC. '
dw 4843 ; 0x12EB
db '3A '
dw 4844 ; 0x12EC
db 'PENTEK '
dw 4848 ; 0x12F0
db 'COGNEX INC. '
dw 4855 ; 0x12F7
db 'Spectrum Signal Processing '
dw 4859 ; 0x12FB
db 'CAPITAL EQUIPMENT CORP '
dw 4860 ; 0x12FC
db 'ESD Electronic System Design GmbH '
dw 4862 ; 0x12FE
db 'Juniper Networks Inc. '
dw 4868 ; 0x1304
db 'Computer Boards '
dw 4871 ; 0x1307
db 'LEVEL ONE COMMUNICATIONS '
dw 4872 ; 0x1308
db 'Mitsubishi Electric MicroComputer '
dw 4874 ; 0x130A
db 'Colorgraphic Communications Corp '
dw 4875 ; 0x130B
db 'Advanet Inc '
dw 4879 ; 0x130F
db 'GESPAC '
dw 4880 ; 0x1310
db 'YASKAWA ELECTRIC CO. '
dw 4883 ; 0x1313
db 'TERADYNE INC. '
dw 4886 ; 0x1316
db 'ADMTEK INC '
dw 4887 ; 0x1317
db 'Packet Engines Inc. '
dw 4888 ; 0x1318
db 'ForteMedia '
dw 4889 ; 0x1319
db 'SIIG Inc '
dw 4895 ; 0x131F
db 'SALIX TECHNOLOGIES INC '
dw 4901 ; 0x1325
db 'SeaChange International '
dw 4902 ; 0x1326
db 'RadiSys Corp. '
dw 4913 ; 0x1331
db 'PRISA NETWORKS '
dw 4925 ; 0x133D
db 'SCM MICROSYSTEMS '
dw 4927 ; 0x133F
db 'PROMAX SYSTEMS INC '
dw 4930 ; 0x1342
db 'MICRON TECHNOLOGY INC '
dw 4932 ; 0x1344
db 'ARK RESEARCH CORP. '
dw 4939 ; 0x134B
db 'CHORI JOHO SYSTEM CO. LTD '
dw 4940 ; 0x134C
db 'PC-TEL INC '
dw 4941 ; 0x134D
db 'BRAIN BOXES LIMITED '
dw 4954 ; 0x135A
db 'QUATECH INC '
dw 4956 ; 0x135C
db 'SEALEVEL SYSTEMS INC '
dw 4958 ; 0x135E
db 'I-DATA INTERNATIONAL A-S '
dw 4959 ; 0x135F
db 'MEINBERG FUNKUHREN '
dw 4960 ; 0x1360
db 'PHOENIX TECHNOLOGIES LTD '
dw 4963 ; 0x1363
db 'HITACHI ZOSEN CORPORATION '
dw 4967 ; 0x1367
db 'SKYWARE CORPORATION '
dw 4968 ; 0x1368
db 'DIGIGRAM '
dw 4969 ; 0x1369
db 'KAWASAKI STEEL CORPORATION '
dw 4971 ; 0x136B
db 'ADTEK SYSTEM SCIENCE CO LTD '
dw 4972 ; 0x136C
db 'BOEING-SUNNYVALE '
dw 4981 ; 0x1375
db 'ELECTRONIC EQUIPMENT PRODUCTION & DISTRIBUTION '
dw 4983 ; 0x1377
db 'MARK OF THE UNICORN INC '
dw 4986 ; 0x137A
db 'PPT VISION '
dw 4987 ; 0x137B
db 'IWATSU ELECTRIC CO LTD '
dw 4988 ; 0x137C
db 'DYNACHIP CORPORATION '
dw 4989 ; 0x137D
db 'SANRITZ AUTOMATION CO LTC '
dw 4992 ; 0x1380
db 'BRAINS CO. LTD '
dw 4993 ; 0x1381
db 'CONTROLNET INC '
dw 4995 ; 0x1383
db 'STELLAR SEMICONDUCTOR INC '
dw 4996 ; 0x1384
db 'NETGEAR '
dw 4997 ; 0x1385
db 'SYSTRAN CORP '
dw 4999 ; 0x1387
db 'HITACHI INFORMATION TECHNOLOGY CO LTD '
dw 5000 ; 0x1388
db 'APPLICOM INTERNATIONAL '
dw 5001 ; 0x1389
db 'SITERA '
dw 5002 ; 0x138A
db 'TOKIMEC INC '
dw 5003 ; 0x138B
db 'BASLER GMBH '
dw 5006 ; 0x138E
db 'PATAPSCO DESIGNS INC '
dw 5007 ; 0x138F
db 'MOXA TECHNOLOGIES CO LTD '
dw 5011 ; 0x1393
db 'LEVEL ONE COMMUNICATIONS '
dw 5012 ; 0x1394
db 'AMBICOM INC '
dw 5013 ; 0x1395
db 'CIPHER SYSTEMS INC '
dw 5014 ; 0x1396
db 'COLOGNE CHIP DESIGNS GMBH '
dw 5015 ; 0x1397
db 'CLARION CO. LTD '
dw 5016 ; 0x1398
db 'RIOS SYSTEMS CO LTD '
dw 5017 ; 0x1399
db 'ALACRITECH INC '
dw 5018 ; 0x139A
db 'QUANTUM 3D INC '
dw 5020 ; 0x139C
db 'XSTREAMS PLC/ EPL LIMITED '
dw 5021 ; 0x139D
db 'ECHOSTAR DATA NETWORKS '
dw 5022 ; 0x139E
db 'AETHRA S.R.L. '
dw 5023 ; 0x139F
db 'CRYSTAL GROUP INC '
dw 5024 ; 0x13A0
db 'KAWASAKI HEAVY INDUSTRIES LTD '
dw 5025 ; 0x13A1
db 'OSITECH COMMUNICATIONS INC '
dw 5026 ; 0x13A2
db 'RASCOM INC '
dw 5028 ; 0x13A4
db 'TELES AG '
dw 5031 ; 0x13A7
db 'EXAR CORP. '
dw 5032 ; 0x13A8
db 'SIEMENS MEDICAL SYSTEMS '
dw 5033 ; 0x13A9
db 'NORTEL NETWORKS-BWA DIVISION '
dw 5034 ; 0x13AA
db 'T.SQWARE '
dw 5039 ; 0x13AF
db 'TAMURA CORPORATION '
dw 5041 ; 0x13B1
db 'WELLBEAN CO INC '
dw 5044 ; 0x13B4
db 'ARM Ltd '
dw 5045 ; 0x13B5
db 'DLoG GMBH '
dw 5046 ; 0x13B6
db 'NOKIA TELECOMMUNICATIONS OY '
dw 5048 ; 0x13B8
db 'SHARP CORPORATION '
dw 5053 ; 0x13BD
db 'SHAREWAVE INC '
dw 5055 ; 0x13BF
db '3WARE '
dw 5057 ; 0x13C1
db 'TECHNOTREND SYSTEMTECHNIK GMBH '
dw 5058 ; 0x13C2
db 'JANZ COMPUTER AG '
dw 5059 ; 0x13C3
db 'CONDOR ENGINEERING INC '
dw 5062 ; 0x13C6
db 'BLUE CHIP TECHNOLOGY LTD '
dw 5063 ; 0x13C7
db 'IOMEGA CORPORATION '
dw 5066 ; 0x13CA
db 'METHEUS CORPORATION '
dw 5068 ; 0x13CC
db 'STUDIO AUDIO & VIDEO LTD '
dw 5071 ; 0x13CF
db 'B2C2 '
dw 5072 ; 0x13D0
db 'ABOCOM SYSTEMS '
dw 5073 ; 0x13D1
db 'SHARK MULTIMEDIA INC '
dw 5074 ; 0x13D2
db 'IMC NETWORKS '
dw 5075 ; 0x13D3
db 'GRAPHICS MICROSYSTEMS INC '
dw 5076 ; 0x13D4
db 'K.I. TECHNOLOGY CO LTD '
dw 5078 ; 0x13D6
db 'TOSHIBA ENGINEERING CORPORATION '
dw 5079 ; 0x13D7
db 'PHOBOS CORPORATION '
dw 5080 ; 0x13D8
db 'APEX INC '
dw 5081 ; 0x13D9
db 'NETBOOST CORPORATION '
dw 5084 ; 0x13DC
db 'ABB ROBOTICS PRODUCTS '
dw 5086 ; 0x13DE
db 'E-TECH INC '
dw 5087 ; 0x13DF
db 'GVC CORPORATION '
dw 5088 ; 0x13E0
db 'NEST INC '
dw 5091 ; 0x13E3
db 'CALCULEX INC '
dw 5092 ; 0x13E4
db 'TELESOFT DESIGN LTD '
dw 5093 ; 0x13E5
db 'INTRASERVER TECHNOLOGY INC '
dw 5097 ; 0x13E9
db 'DALLAS SEMICONDUCTOR '
dw 5098 ; 0x13EA
db 'SUNDANCE TECHNOLOGY INC '
dw 5104 ; 0x13F0
db 'OCE-TECHNOLOGIES B.V. '
dw 5105 ; 0x13F1
db 'FORD MICROELECTRONICS INC '
dw 5106 ; 0x13F2
db 'TROIKA NETWORKS INC '
dw 5108 ; 0x13F4
db 'C-MEDIA ELECTRONICS INC '
dw 5110 ; 0x13F6
db 'NTT ADVANCED TECHNOLOGY CORP. '
dw 5113 ; 0x13F9
db 'AYDIN CORP '
dw 5115 ; 0x13FB
db 'MICRO SCIENCE INC '
dw 5117 ; 0x13FD
db 'ARTX INC '
dw 5120 ; 0x1400
db 'MEILHAUS ELECTRONIC GmbH '
dw 5122 ; 0x1402
db 'FUNDAMENTAL SOFTWARE INC '
dw 5124 ; 0x1404
db 'OCE PRINTING SYSTEMS GmbH '
dw 5126 ; 0x1406
db 'LAVA COMPUTER MFG INC '
dw 5127 ; 0x1407
db 'ALOKA CO. LTD '
dw 5128 ; 0x1408
db 'DSP RESEARCH INC '
dw 5130 ; 0x140A
db 'RAMIX INC '
dw 5131 ; 0x140B
db 'MATSUSHITA ELECTRIC WORKS LTD '
dw 5133 ; 0x140D
db 'ADDONICS '
dw 5139 ; 0x1413
db 'OXFORD SEMICONDUCTOR LTD '
dw 5141 ; 0x1415
db 'KYUSHU ELECTRONICS SYSTEMS INC '
dw 5144 ; 0x1418
db 'EXCEL SWITCHING CORP '
dw 5145 ; 0x1419
db 'ZOOM TELEPHONICS INC '
dw 5147 ; 0x141B
db 'FANUC LTD '
dw 5150 ; 0x141E
db 'PSION DACOM PLC '
dw 5152 ; 0x1420
db 'EDEC CO LTD '
dw 5160 ; 0x1428
db 'UNEX TECHNOLOGY CORP '
dw 5161 ; 0x1429
db 'KINGMAX TECHNOLOGY INC '
dw 5162 ; 0x142A
db 'RADIOLAN '
dw 5163 ; 0x142B
db 'MINTON OPTIC INDUSTRY CO LTD '
dw 5164 ; 0x142C
db 'PIXSTREAM INC '
dw 5165 ; 0x142D
db 'ITT AEROSPACE/COMMUNICATIONS DIVISION '
dw 5168 ; 0x1430
db 'ELTEC ELEKTRONIK GMBH '
dw 5171 ; 0x1433
db 'CIS TECHNOLOGY INC '
dw 5174 ; 0x1436
db 'NISSIN INC CO '
dw 5175 ; 0x1437
db 'ATMEL-DREAM '
dw 5176 ; 0x1438
db 'LIGHTWELL CO LTD-ZAX DIVISION '
dw 5183 ; 0x143F
db 'AGIE SA '
dw 5185 ; 0x1441
db 'LOGICAL CO LTD '
dw 5189 ; 0x1445
db 'GRAPHIN CO. LTD '
dw 5190 ; 0x1446
db 'AIM GMBH '
dw 5191 ; 0x1447
db 'ADLINK TECHNOLOGY '
dw 5194 ; 0x144A
db 'LORONIX INFORMATION SYSTEMS INC '
dw 5195 ; 0x144B
db 'SAMSUNG ELECTRONICS CO LTD '
dw 5197 ; 0x144D
db 'OCTAVE COMMUNICATIONS IND. '
dw 5200 ; 0x1450
db 'SP3D CHIP DESIGN GMBH '
dw 5201 ; 0x1451
db 'MYCOM INC '
dw 5203 ; 0x1453
db 'LOGIC PLUS PLUS INC '
dw 5205 ; 0x1455
db 'GIGA-BYTE TECHNOLOGY '
dw 5208 ; 0x1458
db 'CRYPTEK '
dw 5212 ; 0x145C
db 'BALDOR ELECTRIC COMPANY '
dw 5215 ; 0x145F
db 'DYNARC INC '
dw 5216 ; 0x1460
db 'AVERMEDIA Tech. '
dw 5217 ; 0x1461
db 'MICRO-STAR INTERNATIONAL CO LTD '
dw 5218 ; 0x1462
db 'FAST CORPORATION '
dw 5219 ; 0x1463
db 'INTERACTIVE CIRCUITS & SYSTEMS LTD '
dw 5220 ; 0x1464
db 'GN NETTEST TELECOM DIV. '
dw 5221 ; 0x1465
db 'AMBIT MICROSYSTEMS CORP. '
dw 5224 ; 0x1468
db 'CLEVELAND MOTION CONTROLS '
dw 5225 ; 0x1469
db 'RUBY TECH CORP. '
dw 5228 ; 0x146C
db 'TACHYON '
dw 5229 ; 0x146D
db 'WILLIAMS ELECTRONICS GAMES. '
dw 5230 ; 0x146E
db 'INTEGRATED TELECOM EXPRESS INC '
dw 5233 ; 0x1471
db 'ZAPEX TECHNOLOGIES INC '
dw 5235 ; 0x1473
db 'DOUG CARSON & ASSOCIATES '
dw 5236 ; 0x1474
db 'NET INSIGHT '
dw 5239 ; 0x1477
db 'DIATREND CORPORATION '
dw 5240 ; 0x1478
db 'ABIT Computer '
dw 5243 ; 0x147B
db 'NIHON UNISYS '
dw 5247 ; 0x147F
db 'ISYTEC-Integrierte Systemtechnik Gmbh '
dw 5250 ; 0x1482
db 'LABWAY COPORATION '
dw 5251 ; 0x1483
db 'ERMA-ELECTRONIC GMBH '
dw 5253 ; 0x1485
db 'KYE SYSTEMS CORPORATION '
dw 5257 ; 0x1489
db 'OPTO 22 '
dw 5258 ; 0x148A
db 'INNOMEDIALOGIC INC. '
dw 5259 ; 0x148B
db 'OSI PLUS CORPORATION '
dw 5262 ; 0x148E
db 'PLANT EQUIPMENT. '
dw 5263 ; 0x148F
db 'TC LABS PTY LTD. '
dw 5264 ; 0x1490
db 'MAKER COMMUNICATIONS '
dw 5267 ; 0x1493
db 'TOKAI COMMUNICATIONS INDUSTRY CO. LTD '
dw 5269 ; 0x1495
db 'JOYTECH COMPUTER CO. LTD. '
dw 5270 ; 0x1496
db 'SMA REGELSYSTEME GMBH '
dw 5271 ; 0x1497
db 'EMTEC CO. LTD '
dw 5273 ; 0x1499
db 'ANDOR TECHNOLOGY LTD '
dw 5274 ; 0x149A
db 'SEIKO INSTRUMENTS INC '
dw 5275 ; 0x149B
db 'OVISLINK CORP. '
dw 5276 ; 0x149C
db 'NEWTEK INC '
dw 5277 ; 0x149D
db 'MAPLETREE NETWORKS INC. '
dw 5278 ; 0x149E
db 'LECTRON CO LTD '
dw 5279 ; 0x149F
db 'SOFTING GMBH '
dw 5280 ; 0x14A0
db 'SYSTEMBASE CO LTD '
dw 5281 ; 0x14A1
db 'MILLENNIUM ENGINEERING INC '
dw 5282 ; 0x14A2
db 'MAVERICK NETWORKS '
dw 5283 ; 0x14A3
db 'GVC/BCM ADVANCED RESEARCH '
dw 5284 ; 0x14A4
db 'XIONICS DOCUMENT TECHNOLOGIES INC. '
dw 5285 ; 0x14A5
db 'INOVA COMPUTERS GMBH & CO KG '
dw 5286 ; 0x14A6
db 'FEATRON TECHNOLOGIES CORPORATION '
dw 5288 ; 0x14A8
db 'HIVERTEC INC. '
dw 5289 ; 0x14A9
db 'MENTOR GRAPHICS CORP. '
dw 5291 ; 0x14AB
db 'NOVAWEB TECHNOLOGIES INC '
dw 5292 ; 0x14AC
db 'TIME SPACE RADIO AB '
dw 5293 ; 0x14AD
db 'CTI PET Systems '
dw 5294 ; 0x14AE
db 'GUILLEMOT CORPORATION '
dw 5295 ; 0x14AF
db 'BST COMMUNICATION TECHNOLOGY LTD '
dw 5296 ; 0x14B0
db 'NEXTCOM K.K. '
dw 5297 ; 0x14B1
db 'ENNOVATE NETWORKS INC '
dw 5298 ; 0x14B2
db 'XPEED INC. '
dw 5299 ; 0x14B3
db 'PHILIPS BUSINESS ELECTRONICS B.V. '
dw 5300 ; 0x14B4
db 'CREAMWARE GMBH '
dw 5301 ; 0x14B5
db 'QUANTUM DATA CORP. '
dw 5302 ; 0x14B6
db 'PROXIM INC '
dw 5303 ; 0x14B7
db 'TECHSOFT TECHNOLOGY CO LTD '
dw 5304 ; 0x14B8
db 'AIRONET WIRELESS COMMUNICATIONS '
dw 5305 ; 0x14B9
db 'INTERNIX INC. '
dw 5306 ; 0x14BA
db 'SEMTECH CORPORATION '
dw 5307 ; 0x14BB
db 'GLOBESPAN SEMICONDUCTOR INC. '
dw 5308 ; 0x14BC
db 'CARDIO CONTROL N.V. '
dw 5309 ; 0x14BD
db 'L3 COMMUNICATIONS '
dw 5310 ; 0x14BE
db 'SPIDER COMMUNICATIONS INC. '
dw 5311 ; 0x14BF
db 'COMPAL ELECTRONICS INC '
dw 5312 ; 0x14C0
db 'MYRICOM INC. '
dw 5313 ; 0x14C1
db 'PARADYNE CORP. '
dw 51 ; 0x0033
db 'Lockheed Martin Corp '
dw 61 ; 0x003D
db 'NCIPHER CORP. LTD '
dw 256 ; 0x0100
db 'BREA TECHNOLOGIES INC '
dw 2697 ; 0x0A89
db 'COMPAQ COMPUTER CORP. '
dw 3601 ; 0x0E11
db 'SYMBIOS LOGIC INC/LSI Logic '
dw 4096 ; 0x1000
db 'KOLTER ELECTRONIC '
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 Corporation '
dw 4122 ; 0x101A
db 'AMERICAN MEGATRENDS '
dw 4126 ; 0x101E
db 'HITACHI COMPUTER PRODUCTS '
dw 4128 ; 0x1020
db 'OKI ELECTRIC INDUSTRY CO. LTD. '
dw 4129 ; 0x1021
db 'ADVANCED MICRO DEVICES '
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 '
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 '
dw 4162 ; 0x1042
db 'ASUSTEK COMPUTER '
dw 4163 ; 0x1043
db 'DISTRIBUTED PROCESSING TECHNOLOGY '
dw 4164 ; 0x1044
db 'OPTI INC. '
dw 4165 ; 0x1045
db 'ELSA AG '
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 '
dw 4186 ; 0x105A
db 'FOXCONN INTERNATIONAL INC '
dw 4187 ; 0x105B
db 'NUMBER 9 VISUAL TECHNOLOGY '
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 '
dw 4200 ; 0x1068
db 'MYLEX CORPORATION '
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 '
dw 4208 ; 0x1070
db 'MITAC '
dw 4209 ; 0x1071
db 'YAMAHA CORPORATION '
dw 4211 ; 0x1073
db 'Nexgen Microsystems '
dw 4212 ; 0x1074
db 'Chaintech Comp. '
dw 4214 ; 0x1076
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 Graphics/ETMA '
dw 4247 ; 0x1097
db 'Quantum Designs Ltd. '
dw 4248 ; 0x1098
db 'PACKARD BELL NEC '
dw 4250 ; 0x109A
db 'BROOKTREE CORPORATION '
dw 4254 ; 0x109E
db 'TRIGEM COMPUTER INC. '
dw 4255 ; 0x109F
db 'MEIDENSHA CORPORATION '
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. '
dw 4277 ; 0x10B5
db 'MADGE NETWORKS '
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 '
dw 4298 ; 0x10CA
db 'OMRON CORPORATION '
dw 4299 ; 0x10CB
db 'ADVANCED SYSTEM PRODUCTS '
dw 4301 ; 0x10CD
db 'FUJITSU LIMITED '
dw 4303 ; 0x10CF
db 'FUTUREPLUS SYSTEMS CORP. '
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 '
dw 4318 ; 0x10DE
db 'EMULEX CORPORATION '
dw 4319 ; 0x10DF
db 'TEKRAM TECHNOLOGY CO.LTD. '
dw 4321 ; 0x10E1
db 'TUNDRA SEMICONDUCTOR CORP '
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 '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 '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
db 'INITIO CORPORATION '
dw 4353 ; 0x1101
db 'CREATIVE LABS '
dw 4354 ; 0x1102
db 'SIGMA DESIGNS '
dw 4357 ; 0x1105
db 'VIA TECHNOLOGIES '
dw 4358 ; 0x1106
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 'Atmel Corp. '
dw 4372 ; 0x1114
db 'Media 100, Inc. '
dw 4374 ; 0x1116
db 'Datacube Inc. '
dw 4375 ; 0x1117
db 'FCI ELECTRONICS '
dw 4376 ; 0x1118
db 'ICP-VORTEX COMPUTERSYSTEM GMBH '
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 '
dw 4391 ; 0x1127
db 'HERMES ELECTRONICS COMPANY '
dw 4394 ; 0x112A
db 'Infomedia '
dw 4398 ; 0x112E
db 'IMAGING TECHNOLOGY '
dw 4399 ; 0x112F
db 'PHILIPS SEMICONDUCTORS '
dw 4401 ; 0x1131
db 'MITEL CORP '
dw 4402 ; 0x1132
db 'Eicon Networks Corporation '
dw 4403 ; 0x1133
db 'MERCURY COMPUTER SYSTEMS '
dw 4404 ; 0x1134
db 'FUJI XEROX CO LTD '
dw 4405 ; 0x1135
db 'MOMENTUM DATA SYSTEMS '
dw 4406 ; 0x1136
db 'CISCO SYSTEMS INC '
dw 4407 ; 0x1137
db 'ZIATECH CORPORATION '
dw 4408 ; 0x1138
db 'CYCLONE MICROSYSTEMS. '
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 'Interface Corp '
dw 4423 ; 0x1147
db 'SYSKONNECT/Marvell '
dw 4424 ; 0x1148
db 'VMIC '
dw 4426 ; 0x114A
db 'ANNABOOKS '
dw 4428 ; 0x114C
db 'DIGI INTERNATIONAL '
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 '
dw 4445 ; 0x115D
db 'PFU LIMITED '
dw 4449 ; 0x1161
db 'RENDITION '
dw 4451 ; 0x1163
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 '
dw 4464 ; 0x1170
db 'BLUE WAVE SYSTEMS '
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 '
dw 4487 ; 0x1187
db 'MATSUSHITA ELECTIC INDUSTRIAL CO LTD '
dw 4489 ; 0x1189
db 'PLATYPUS TECHNOLOGY PTY LTD '
dw 4491 ; 0x118B
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. '
dw 4510 ; 0x119E
db 'BULL HN INFORMATION SYSTEMS '
dw 4511 ; 0x119F
db 'HAMAMATSU PHOTONICS K.K. '
dw 4513 ; 0x11A1
db 'Systech Corp. '
dw 4520 ; 0x11A8
db 'InnoSys Inc. '
dw 4521 ; 0x11A9
db 'ACTEL '
dw 4522 ; 0x11AA
db 'GALILEO TECHNOLOGY LTD/Marvell Semiconductor, Inc.'
dw 4523 ; 0x11AB
db 'LITE-ON COMMUNICATIONS INC '
dw 4525 ; 0x11AD
db 'SCITEX CORPORATION '
dw 4526 ; 0x11AE
db 'AVID TECHNOLOGY INC '
dw 4527 ; 0x11AF
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 '
dw 4545 ; 0x11C1
db 'DAINIPPON SCREEN MFG. CO. LTD '
dw 4550 ; 0x11C6
db 'DOLPHIN INTERCONNECT SOLUTIONS AS '
dw 4552 ; 0x11C8
db 'MAGMA '
dw 4553 ; 0x11C9
db 'LSI SYSTEMS '
dw 4554 ; 0x11CA
db 'SPECIALIX INTERNATIONAL LTD '
dw 4555 ; 0x11CB
db 'NETACCESS/Primary Rate Inc '
dw 4558 ; 0x11CE
db 'LOCKHEED MARTIN-Electronics & Communications '
dw 4560 ; 0x11D0
db 'AuraVision Corporation '
dw 4561 ; 0x11D1
db 'INTERCOM INC. '
dw 4562 ; 0x11D2
db 'Analog Devices, Inc. '
dw 4564 ; 0x11D4
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 '
dw 4579 ; 0x11E3
db 'CORECO INC '
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. '
dw 4628 ; 0x1214
db 'PURUP-EskoFot A/S '
dw 4630 ; 0x1216
db 'O2MICRO. '
dw 4631 ; 0x1217
db '3DFX INTERACTIVE '
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 Inc. '
dw 4669 ; 0x123D
db 'C-CUBE MICROSYSTEMS '
dw 4671 ; 0x123F
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 Microcomputer System Ltd. '
dw 4688 ; 0x1250
db 'GUZIK TECHNICAL ENTERPRISES '
dw 4691 ; 0x1253
db 'OPTIBASE LTD '
dw 4693 ; 0x1255
db 'ALLIED TELESYN INTERNATIONAL '
dw 4697 ; 0x1259
db 'AURORA TECHNOLOGIES. '
dw 4700 ; 0x125C
db 'ESS TECHNOLOGY, INC. '
dw 4701 ; 0x125D
db 'CONCURRENT TECHNOLOGIES '
dw 4703 ; 0x125F
db 'INTERSIL CORP '
dw 4704 ; 0x1260
db 'MATSUSHITA-KOTOBUKI ELECTRONICS '
dw 4705 ; 0x1261
db 'AVAL NAGASAKI CORPORATION '
dw 4708 ; 0x1264
db 'TEKTRONIX '
dw 4712 ; 0x1268
db 'Nortel Networks Corp. '
dw 4716 ; 0x126C
db 'SPLASH TECHNOLOGY. '
dw 4717 ; 0x126D
db 'SUMITOMO METAL INDUSTRIES '
dw 4718 ; 0x126E
db 'SILICON MOTION. '
dw 4719 ; 0x126F
db 'OLYMPUS OPTICAL CO. LTD. '
dw 4720 ; 0x1270
db 'CREATIVE LABS (WAS ENSONIQ, MALVERN) '
dw 4724 ; 0x1274
db 'NETWORK APPLIANCE CORPORATION '
dw 4725 ; 0x1275
db 'Transtech Parallel Systems '
dw 4728 ; 0x1278
db 'TRANSMETA CORPORATION '
dw 4729 ; 0x1279
db 'CONEXANT, ROCKWELL '
dw 4730 ; 0x127A
db 'VELA RESEARCH LP '
dw 4733 ; 0x127D
db 'FUJIFILM '
dw 4735 ; 0x127F
db 'YOKOGAWA ELECTRIC CORPORATION '
dw 4737 ; 0x1281
db 'Integrated Technology Express Inc. '
dw 4739 ; 0x1283
db 'MAZET GMBH '
dw 4742 ; 0x1286
db 'TRANSWITCH CORPORATION '
dw 4747 ; 0x128B
db 'G2 Networks Inc. '
dw 4749 ; 0x128D
db 'TATENO DENNOU. '
dw 4751 ; 0x128F
db 'TOSHIBA PERSONAL COMPUTER SYSTEM CORP. '
dw 4752 ; 0x1290
db 'NCS COMPUTER ITALIA SRL '
dw 4753 ; 0x1291
db 'TRITECH MICROELECTRONICS INC '
dw 4754 ; 0x1292
db 'SHUTTLE COMPUTER '
dw 4759 ; 0x1297
db 'KNOWLEDGE TECHNOLOGY LAB. '
dw 4761 ; 0x1299
db 'VMETRO Inc. '
dw 4762 ; 0x129A
db 'VICTOR COMPANY OF JAPAN '
dw 4766 ; 0x129E
db 'ALLEN- BRADLEY COMPANY '
dw 4768 ; 0x12A0
db 'Lucent Technologies AMR '
dw 4771 ; 0x12A3
db 'AMO GMBH '
dw 4775 ; 0x12A7
db 'XIOTECH CORPORATION '
dw 4777 ; 0x12A9
db 'YUAN YUAN ENTERPRISE CO. LTD. '
dw 4779 ; 0x12AB
db 'Alteon Networks Inc. '
dw 4782 ; 0x12AE
db 'NATURAL MICROSYSTEMS '
dw 4790 ; 0x12B6
db 'COGNEX MODULAR VISION SYSTEMS DIV.-ACUMEN INC. '
dw 4791 ; 0x12B7
db '3Com Corp, Modem Division '
dw 4793 ; 0x12B9
db 'ARRAY MICROSYSTEMS '
dw 4796 ; 0x12BC
db 'ANCHOR CHIPS INC. '
dw 4798 ; 0x12BE
db 'Fujifilm Microdevices '
dw 4799 ; 0x12BF
db 'INFIMED '
dw 4800 ; 0x12C0
db 'Holtek Microelectronics Inc. '
dw 4803 ; 0x12C3
db 'Connect Tech Inc '
dw 4804 ; 0x12C4
db 'Mitan Corporation '
dw 4806 ; 0x12C6
db 'Dialogic Corp '
dw 4807 ; 0x12C7
db 'Integrated Computing Engines '
dw 4810 ; 0x12CA
db 'Aims Lab '
dw 4813 ; 0x12CD
db 'NVIDIA (WAS: STB,SGS THOMPSON) '
dw 4818 ; 0x12D2
db 'GE VINGMED ULTRASOUND AS '
dw 4819 ; 0x12D3
db 'COMVERSE NETWORKS SYSTEM & Ulticom, Inc. '
dw 4820 ; 0x12D4
db 'Equator Technologies '
dw 4821 ; 0x12D5
db 'Analogic Corp '
dw 4822 ; 0x12D6
db 'PERICOM SEMICONDUCTOR '
dw 4824 ; 0x12D8
db 'Aculab PLC '
dw 4825 ; 0x12D9
db 'True Time Inc. '
dw 4826 ; 0x12DA
db 'Rainbow Technologies '
dw 4830 ; 0x12DE
db 'SBS Technologies Inc '
dw 4831 ; 0x12DF
db 'Chase Research PLC '
dw 4832 ; 0x12E0
db 'Datum Inc. Bancomm-Timing Division '
dw 4834 ; 0x12E2
db 'Brooktrout Technology Inc '
dw 4836 ; 0x12E4
db 'Sebring Systems '
dw 4839 ; 0x12E7
db 'Real Vision '
dw 4842 ; 0x12EA
db 'Aureal Semiconductor '
dw 4843 ; 0x12EB
db '3A '
dw 4844 ; 0x12EC
db 'PENTEK '
dw 4848 ; 0x12F0
db 'COGNEX INC. '
dw 4855 ; 0x12F7
db 'Spectrum Signal Processing '
dw 4859 ; 0x12FB
db 'CAPITAL EQUIPMENT CORP '
dw 4860 ; 0x12FC
db 'ESD Electronic System Design GmbH '
dw 4862 ; 0x12FE
db 'Juniper Networks Inc. '
dw 4868 ; 0x1304
db 'Computer Boards '
dw 4871 ; 0x1307
db 'LEVEL ONE COMMUNICATIONS/Jato Technologies Inc. '
dw 4872 ; 0x1308
db 'Mitsubishi Electric MicroComputer '
dw 4874 ; 0x130A
db 'Colorgraphic Communications Corp '
dw 4875 ; 0x130B
db 'Advanet Inc '
dw 4879 ; 0x130F
db 'GESPAC '
dw 4880 ; 0x1310
db 'YASKAWA ELECTRIC CO. '
dw 4883 ; 0x1313
db 'TERADYNE INC. '
dw 4886 ; 0x1316
db 'ADMTEK INC '
dw 4887 ; 0x1317
db 'Packet Engines Inc. '
dw 4888 ; 0x1318
db 'ForteMedia '
dw 4889 ; 0x1319
db 'SIIG Inc '
dw 4895 ; 0x131F
db 'SALIX TECHNOLOGIES INC '
dw 4901 ; 0x1325
db 'SeaChange International '
dw 4902 ; 0x1326
db 'RadiSys Corp. '
dw 4913 ; 0x1331
db 'PRISA NETWORKS '
dw 4925 ; 0x133D
db 'SCM MICROSYSTEMS '
dw 4927 ; 0x133F
db 'PROMAX SYSTEMS INC '
dw 4930 ; 0x1342
db 'MICRON TECHNOLOGY INC '
dw 4932 ; 0x1344
db 'ARK RESEARCH CORP. '
dw 4939 ; 0x134B
db 'CHORI JOHO SYSTEM CO. LTD '
dw 4940 ; 0x134C
db 'PC-TEL INC '
dw 4941 ; 0x134D
db 'BRAIN BOXES LIMITED '
dw 4954 ; 0x135A
db 'QUATECH INC '
dw 4956 ; 0x135C
db 'SEALEVEL SYSTEMS INC '
dw 4958 ; 0x135E
db 'I-DATA INTERNATIONAL A-S '
dw 4959 ; 0x135F
db 'MEINBERG FUNKUHREN '
dw 4960 ; 0x1360
db 'PHOENIX TECHNOLOGIES LTD '
dw 4963 ; 0x1363
db 'HITACHI ZOSEN CORPORATION '
dw 4967 ; 0x1367
db 'SKYWARE CORPORATION '
dw 4968 ; 0x1368
db 'DIGIGRAM '
dw 4969 ; 0x1369
db 'KAWASAKI STEEL CORPORATION '
dw 4971 ; 0x136B
db 'ADTEK SYSTEM SCIENCE CO LTD '
dw 4972 ; 0x136C
db 'BOEING-SUNNYVALE '
dw 4981 ; 0x1375
db 'ELECTRONIC EQUIPMENT PRODUCTION & DISTRIBUTION '
dw 4983 ; 0x1377
db 'MARK OF THE UNICORN INC '
dw 4986 ; 0x137A
db 'PPT VISION '
dw 4987 ; 0x137B
db 'IWATSU ELECTRIC CO LTD '
dw 4988 ; 0x137C
db 'DYNACHIP CORPORATION '
dw 4989 ; 0x137D
db 'SANRITZ AUTOMATION CO LTC '
dw 4992 ; 0x1380
db 'BRAINS CO. LTD '
dw 4993 ; 0x1381
db 'CONTROLNET INC '
dw 4995 ; 0x1383
db 'STELLAR SEMICONDUCTOR INC '
dw 4996 ; 0x1384
db 'NETGEAR '
dw 4997 ; 0x1385
db 'SYSTRAN CORP '
dw 4999 ; 0x1387
db 'HITACHI INFORMATION TECHNOLOGY CO LTD '
dw 5000 ; 0x1388
db 'APPLICOM INTERNATIONAL '
dw 5001 ; 0x1389
db 'SITERA '
dw 5002 ; 0x138A
db 'TOKIMEC INC '
dw 5003 ; 0x138B
db 'BASLER GMBH '
dw 5006 ; 0x138E
db 'PATAPSCO DESIGNS INC '
dw 5007 ; 0x138F
db 'MOXA TECHNOLOGIES CO LTD '
dw 5011 ; 0x1393
db 'LEVEL ONE COMMUNICATIONS '
dw 5012 ; 0x1394
db 'AMBICOM INC '
dw 5013 ; 0x1395
db 'CIPHER SYSTEMS INC '
dw 5014 ; 0x1396
db 'COLOGNE CHIP DESIGNS GMBH '
dw 5015 ; 0x1397
db 'CLARION CO. LTD '
dw 5016 ; 0x1398
db 'RIOS SYSTEMS CO LTD '
dw 5017 ; 0x1399
db 'ALACRITECH INC '
dw 5018 ; 0x139A
db 'QUANTUM 3D INC '
dw 5020 ; 0x139C
db 'XSTREAMS PLC/ EPL LIMITED '
dw 5021 ; 0x139D
db 'ECHOSTAR DATA NETWORKS '
dw 5022 ; 0x139E
db 'AETHRA S.R.L. '
dw 5023 ; 0x139F
db 'CRYSTAL GROUP INC '
dw 5024 ; 0x13A0
db 'KAWASAKI HEAVY INDUSTRIES LTD '
dw 5025 ; 0x13A1
db 'OSITECH COMMUNICATIONS INC '
dw 5026 ; 0x13A2
db 'RASCOM INC '
dw 5028 ; 0x13A4
db 'TELES AG '
dw 5031 ; 0x13A7
db 'EXAR CORP. '
dw 5032 ; 0x13A8
db 'SIEMENS MEDICAL SYSTEMS '
dw 5033 ; 0x13A9
db 'NORTEL NETWORKS-BWA DIVISION '
dw 5034 ; 0x13AA
db 'T.SQWARE '
dw 5039 ; 0x13AF
db 'TAMURA CORPORATION '
dw 5041 ; 0x13B1
db 'WELLBEAN CO INC '
dw 5044 ; 0x13B4
db 'ARM Ltd '
dw 5045 ; 0x13B5
db 'DLoG GMBH '
dw 5046 ; 0x13B6
db 'NOKIA TELECOMMUNICATIONS OY '
dw 5048 ; 0x13B8
db 'SHARP CORPORATION '
dw 5053 ; 0x13BD
db 'SHAREWAVE INC '
dw 5055 ; 0x13BF
db '3ware Inc. '
dw 5057 ; 0x13C1
db 'TECHNOTREND SYSTEMTECHNIK GMBH '
dw 5058 ; 0x13C2
db 'JANZ COMPUTER AG '
dw 5059 ; 0x13C3
db 'CONDOR ENGINEERING INC '
dw 5062 ; 0x13C6
db 'BLUE CHIP TECHNOLOGY LTD '
dw 5063 ; 0x13C7
db 'IOMEGA CORPORATION '
dw 5066 ; 0x13CA
db 'METHEUS CORPORATION '
dw 5068 ; 0x13CC
db 'STUDIO AUDIO & VIDEO LTD '
dw 5071 ; 0x13CF
db 'B2C2 '
dw 5072 ; 0x13D0
db 'ABOCOM SYSTEMS '
dw 5073 ; 0x13D1
db 'SHARK MULTIMEDIA INC '
dw 5074 ; 0x13D2
db 'IMC NETWORKS '
dw 5075 ; 0x13D3
db 'GRAPHICS MICROSYSTEMS INC '
dw 5076 ; 0x13D4
db 'K.I. TECHNOLOGY CO LTD '
dw 5078 ; 0x13D6
db 'TOSHIBA ENGINEERING CORPORATION '
dw 5079 ; 0x13D7
db 'PHOBOS CORPORATION '
dw 5080 ; 0x13D8
db 'APEX INC '
dw 5081 ; 0x13D9
db 'NETBOOST CORPORATION '
dw 5084 ; 0x13DC
db 'ABB ROBOTICS PRODUCTS '
dw 5086 ; 0x13DE
db 'E-TECH INC '
dw 5087 ; 0x13DF
db 'GVC CORPORATION '
dw 5088 ; 0x13E0
db 'NEST INC '
dw 5091 ; 0x13E3
db 'CALCULEX INC '
dw 5092 ; 0x13E4
db 'TELESOFT DESIGN LTD '
dw 5093 ; 0x13E5
db 'INTRASERVER TECHNOLOGY INC '
dw 5097 ; 0x13E9
db 'DALLAS SEMICONDUCTOR '
dw 5098 ; 0x13EA
db 'SUNDANCE TECHNOLOGY INC '
dw 5104 ; 0x13F0
db 'OCE-TECHNOLOGIES B.V. '
dw 5105 ; 0x13F1
db 'FORD MICROELECTRONICS INC '
dw 5106 ; 0x13F2
db 'TROIKA NETWORKS INC '
dw 5108 ; 0x13F4
db 'C-MEDIA ELECTRONICS INC '
dw 5110 ; 0x13F6
db 'NTT ADVANCED TECHNOLOGY CORP. '
dw 5113 ; 0x13F9
db 'AYDIN CORP '
dw 5115 ; 0x13FB
db 'MICRO SCIENCE INC '
dw 5117 ; 0x13FD
_THIRDPART: ;lists 255 vendors
db 'DTK COMPUTER '
dw 5314 ; 0x14C2
db 'MEDIATEK CORP. '
dw 5315 ; 0x14C3
db 'IWASAKI INFORMATION SYSTEMS CO LTD '
dw 5316 ; 0x14C4
db 'ABB AUTOMATION PRODUCTS '
dw 5317 ; 0x14C5
db 'DATA RACE INC '
dw 5318 ; 0x14C6
db 'MODULAR TECHNOLOY HOLDINGS LTD '
dw 5319 ; 0x14C7
db 'TURBOCOMM TECH. INC. '
dw 5320 ; 0x14C8
db 'ODIN TELESYSTEMS INC '
dw 5321 ; 0x14C9
db 'PE LOGIC CORP. '
dw 5322 ; 0x14CA
db 'Billionton Systems Inc./Cadmus Micro Inc. '
dw 5323 ; 0x14CB
db 'NAKAYO TELECOMMUNICATIONS INC '
dw 5324 ; 0x14CC
db 'UNIVERSAL SCIENTIFIC IND '
dw 5325 ; 0x14CD
db 'WHISTLE COMMUNICATIONS '
dw 5326 ; 0x14CE
db 'TEK MICROSYSTEMS INC. '
dw 5327 ; 0x14CF
db 'ERICSSON AXE R & D '
dw 5328 ; 0x14D0
db 'COMPUTER HI-TECH CO LTD '
dw 5329 ; 0x14D1
db 'TITAN ELECTRONICS INC '
dw 5330 ; 0x14D2
db 'CIRTECH (UK) LTD '
dw 5331 ; 0x14D3
db 'PANACOM TECHNOLOGY CORP '
dw 5332 ; 0x14D4
db 'NITSUKO CORPORATION '
dw 5333 ; 0x14D5
db 'ACCUSYS '
dw 5334 ; 0x14D6
db 'HIRAKAWA HEWTECH CORP '
dw 5335 ; 0x14D7
db 'HOPF ELEKTRONIK GMBH '
dw 5336 ; 0x14D8
db 'ALPHA PROCESSOR INC '
dw 5337 ; 0x14D9
db 'NATIONAL AEROSPACE LABORATORIES '
dw 5338 ; 0x14DA
db 'AVLAB TECHNOLOGY INC '
dw 5339 ; 0x14DB
db 'AMPLICON LIVELINE LTD '
dw 5340 ; 0x14DC
db 'IMODL INC. '
dw 5341 ; 0x14DD
db 'APPLIED INTEGRATION CORPORATION '
dw 5342 ; 0x14DE
db 'BASIS COMMUNICATIONS CORP '
dw 5343 ; 0x14DF
db 'INVERTEX '
dw 5345 ; 0x14E1
db 'INFOLIBRIA '
dw 5346 ; 0x14E2
db 'AMTELCO '
dw 5347 ; 0x14E3
db 'BROADCOM CORPORATION '
dw 5348 ; 0x14E4
db 'PIXELFUSION LTD '
dw 5349 ; 0x14E5
db 'SHINING TECHNOLOGY INC '
dw 5350 ; 0x14E6
db '3CX '
dw 5351 ; 0x14E7
db 'RAYCER INC '
dw 5352 ; 0x14E8
db 'GARNETS SYSTEM CO LTD '
dw 5353 ; 0x14E9
db 'PLANEX COMMUNICATIONS INC '
dw 5354 ; 0x14EA
db 'SEIKO EPSON CORPORATION '
dw 5355 ; 0x14EB
db 'ACQIRIS '
dw 5356 ; 0x14EC
db 'DATAKINETICS LTD '
dw 5357 ; 0x14ED
db 'MASPRO KENKOH CORP '
dw 5358 ; 0x14EE
db 'CARRY COMPUTER ENG. CO LTD '
dw 5359 ; 0x14EF
db 'CANON RESEACH CENTRE FRANCE '
dw 5360 ; 0x14F0
db 'CONEXANT '
dw 5361 ; 0x14F1
db 'MOBILITY ELECTRONICS '
dw 5362 ; 0x14F2
db 'BROADLOGIC '
dw 5363 ; 0x14F3
db 'TOKYO ELECTRONIC INDUSTRY CO LTD '
dw 5364 ; 0x14F4
db 'SOPAC LTD '
dw 5365 ; 0x14F5
db 'COYOTE TECHNOLOGIES LLC '
dw 5366 ; 0x14F6
db 'WOLF TECHNOLOGY INC '
dw 5367 ; 0x14F7
db 'AUDIOCODES INC '
dw 5368 ; 0x14F8
db 'AG COMMUNICATIONS '
dw 5369 ; 0x14F9
db 'WAVETEK WANDEL & GOLTERMANN '
dw 5370 ; 0x14FA
db 'TRANSAS MARINE (UK) LTD '
dw 5371 ; 0x14FB
db 'QUADRICS SUPERCOMPUTERS WORLD '
dw 5372 ; 0x14FC
db 'JAPAN COMPUTER INDUSTRY INC. '
dw 5373 ; 0x14FD
db 'ARCHTEK TELECOM CORP. '
dw 5374 ; 0x14FE
db 'TWINHEAD INTERNATIONAL CORP '
dw 5375 ; 0x14FF
db 'LANTECH COMPUTER COMPANY '
dw 5376 ; 0x1500
db 'BANKSOFT CANADA LTD '
dw 5377 ; 0x1501
db 'MITSUBISHI ELECTRIC LOGISTICS SUPPORT CO '
dw 5378 ; 0x1502
db 'KAWASAKI LSI USA INC '
dw 5379 ; 0x1503
db 'KAISER ELECTRONICS '
dw 5380 ; 0x1504
db 'ITA INGENIEURBURO FUR TESTAUFGABEN GMBH '
dw 5381 ; 0x1505
db 'CHAMELEON SYSTEMS INC '
dw 5382 ; 0x1506
db 'HTEC LTD '
dw 5383 ; 0x1507
db 'HONDA CONNECTORS/MHOTRONICS INC '
dw 5384 ; 0x1508
db 'FIRST INTERNATIONAL COMPUTER INC '
dw 5385 ; 0x1509
db 'FORVUS RESEARCH INC '
dw 5386 ; 0x150A
db 'YAMASHITA SYSTEMS CORP '
dw 5387 ; 0x150B
db 'KYOPAL CO LTD '
dw 5388 ; 0x150C
db 'WARPSPPED INC '
dw 5389 ; 0x150D
db 'C-PORT CORPORATION '
dw 5390 ; 0x150E
db 'INTEC GMBH '
dw 5391 ; 0x150F
db 'BEHAVIOR TECH COMPUTER CORP '
dw 5392 ; 0x1510
db 'CENTILLIUM TECHNOLOGY CORP '
dw 5393 ; 0x1511
db 'ROSUN TECHNOLOGIES INC '
dw 5394 ; 0x1512
db 'RAYCHEM '
dw 5395 ; 0x1513
db 'TFL LAN INC '
dw 5396 ; 0x1514
db 'ICS ADVENT '
dw 5397 ; 0x1515
db 'MYSON TECHNOLOGY INC '
dw 5398 ; 0x1516
db 'ECHOTEK CORPORATION '
dw 5399 ; 0x1517
db 'PEP MODULAR COMPUTERS GMBH '
dw 5400 ; 0x1518
db 'TELEFON AKTIEBOLAGET LM Ericsson '
dw 5401 ; 0x1519
db 'GLOBETEK INC '
dw 5402 ; 0x151A
db 'COMBOX LTD '
dw 5403 ; 0x151B
db 'DIGITAL AUDIO LABS INC '
dw 5404 ; 0x151C
db 'FUJITSU COMPUTER PRODUCTS OF AMERICA '
dw 5405 ; 0x151D
db 'MATRIX CORP. '
dw 5406 ; 0x151E
db 'TOPIC SEMICONDUCTOR CORP '
dw 5407 ; 0x151F
db 'CHAPLET SYSTEM INC '
dw 5408 ; 0x1520
db 'BELL CORPORATION '
dw 5409 ; 0x1521
db 'MAINPINE LIMITED '
dw 5410 ; 0x1522
db 'MUSIC SEMICONDUCTORS '
dw 5411 ; 0x1523
db 'ENE TECHNOLOGY INC '
dw 5412 ; 0x1524
db 'IMPACT TECHNOLOGIES '
dw 5413 ; 0x1525
db 'ISS '
dw 5414 ; 0x1526
db 'SOLECTRON '
dw 5415 ; 0x1527
db 'ACKSYS '
dw 5416 ; 0x1528
db 'AMERICAN MICROSYSTEMS INC '
dw 5417 ; 0x1529
db 'QUICKTURN DESIGN SYSTEMS '
dw 5418 ; 0x152A
db 'FLYTECH TECHNOLOGY CO LTD '
dw 5419 ; 0x152B
db 'MACRAIGOR SYSTEMS LLC '
dw 5420 ; 0x152C
db 'QUANTA COMPUTER INC '
dw 5421 ; 0x152D
db 'MELEC INC '
dw 5422 ; 0x152E
db 'PHILIPS-CRYPTO '
dw 5423 ; 0x152F
db 'ACQIS TECHNOLOGY '
dw 5424 ; 0x1530
db 'CHRYON CORP. '
dw 5425 ; 0x1531
db 'ECHELON CORPORATION '
dw 5426 ; 0x1532
db 'BALTIMORE '
dw 5427 ; 0x1533
db 'ROAD CORPORATION '
dw 5428 ; 0x1534
db 'EVERGREEN TECHNOLOGIES INC '
dw 5429 ; 0x1535
db 'DATALEX COMMUNCATIONS '
dw 5431 ; 0x1537
db 'ARALION INC. '
dw 5432 ; 0x1538
db 'ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. '
dw 5433 ; 0x1539
db 'ONO SOKKI '
dw 5434 ; 0x153A
db 'TERRATEC ELECTRONIC GMBH '
dw 5435 ; 0x153B
db 'ANTAL ELECTRONIC '
dw 5436 ; 0x153C
db 'FILANET CORPORATION '
dw 5437 ; 0x153D
db 'TECHWELL INC '
dw 5438 ; 0x153E
db 'MIPS DENMARK '
dw 5439 ; 0x153F
db 'PROVIDEO MULTIMEDIA CO LTD '
dw 5440 ; 0x1540
db 'TELOSITY INC. '
dw 5441 ; 0x1541
db 'VIVID TECHNOLOGY INC '
dw 5442 ; 0x1542
db 'SILICON LABORATORIES '
dw 5443 ; 0x1543
db 'DCM DATA SYSTEMS '
dw 5444 ; 0x1544
db 'VISIONTEK '
dw 5445 ; 0x1545
db 'IOI TECHNOLOGY CORP. '
dw 5446 ; 0x1546
db 'MITUTOYO CORPORATION '
dw 5447 ; 0x1547
db 'JET PROPULSION LABORATORY '
dw 5448 ; 0x1548
db 'INTERCONNECT SYSTEMS SOLUTIONS '
dw 5449 ; 0x1549
db 'MAX TECHNOLOGIES INC. '
dw 5450 ; 0x154A
db 'COMPUTEX CO LTD '
dw 5451 ; 0x154B
db 'VISUAL TECHNOLOGY INC. '
dw 5452 ; 0x154C
db 'PAN INTERNATIONAL INDUSTRIAL CORP '
dw 5453 ; 0x154D
db 'SERVOTEST LTD '
dw 5454 ; 0x154E
db 'STRATABEAM TECHNOLOGY '
dw 5455 ; 0x154F
db 'OPEN NETWORK CO LTD '
dw 5456 ; 0x1550
db 'SMART ELECTRONIC DEVELOPMENT GMBH '
dw 5457 ; 0x1551
db 'RACAL AIRTECH LTD '
dw 5458 ; 0x1552
db 'CHICONY ELECTRONICS CO LTD '
dw 5459 ; 0x1553
db 'PROLINK MICROSYSTEMS CORP. '
dw 5460 ; 0x1554
db 'GESYTEC GMBH '
dw 5461 ; 0x1555
db 'PLD APPLICATIONS '
dw 5462 ; 0x1556
db 'MEDIASTAR CO. LTD '
dw 5463 ; 0x1557
db 'CLEVO/KAPOK COMPUTER '
dw 5464 ; 0x1558
db 'SI LOGIC LTD '
dw 5465 ; 0x1559
db 'INNOMEDIA INC '
dw 5466 ; 0x155A
db 'PROTAC INTERNATIONAL CORP '
dw 5467 ; 0x155B
db 'CEMAX-ICON INC '
dw 5468 ; 0x155C
db 'MAC SYSTEM CO LTD '
dw 5469 ; 0x155D
db 'LP ELEKTRONIK GMBH '
dw 5470 ; 0x155E
db 'PERLE SYSTEMS LIMITED '
dw 5471 ; 0x155F
db 'TERAYON COMMUNICATIONS SYSTEMS '
dw 5472 ; 0x1560
db 'VIEWGRAPHICS INC '
dw 5473 ; 0x1561
db 'SYMBOL TECHNOLOGIES '
dw 5474 ; 0x1562
db 'A-TREND '
dw 5475 ; 0x1563
db 'YAMAKATSU ELECTRONICS INDUSTRY CO LTD '
dw 5476 ; 0x1564
db 'BIOSTAR MICROTECH INT CORP '
dw 5477 ; 0x1565
db 'ARDENT TECHNOLOGIES INC '
dw 5478 ; 0x1566
db 'JUNGSOFT '
dw 5479 ; 0x1567
db 'DDK ELECTRONICS INC '
dw 5480 ; 0x1568
db 'PALIT MICROSYSTEMS INC '
dw 5481 ; 0x1569
db 'AVTEC SYSTEMS '
dw 5482 ; 0x156A
db '2WIRE '
dw 5483 ; 0x156B
db 'VIDAC ELECTRONICS GMBH '
dw 5484 ; 0x156C
db 'ALPHA-TOP CORP '
dw 5485 ; 0x156D
db 'ALFA INC '
dw 5486 ; 0x156E
db 'M-SYSTEMS FLASH DISK PIONEERS LTD '
dw 5487 ; 0x156F
db 'LECROY CORPORATION '
dw 5488 ; 0x1570
db 'CONTEMPORARY CONTROLS '
dw 5489 ; 0x1571
db 'OTIS ELEVATOR COMPANY '
dw 5490 ; 0x1572
db 'LATTICE-VANTIS '
dw 5491 ; 0x1573
db 'FAIRCHILD SEMICONDUCTOR '
dw 5492 ; 0x1574
db 'VOLTAIRE ADVANCED DATA SECURITY LTD '
dw 5493 ; 0x1575
db 'VIEWCAST COM '
dw 5494 ; 0x1576
db 'HITT '
dw 5496 ; 0x1578
db 'DUAL TECHNOLOGY CORPORATION '
dw 5497 ; 0x1579
db 'JAPAN ELECRONICS IND. INC '
dw 5498 ; 0x157A
db 'STAR MULTIMEDIA CORP. '
dw 5499 ; 0x157B
db 'EUROSOFT (UK) LTD '
dw 5500 ; 0x157C
db 'GEMFLEX NETWORKS '
dw 5501 ; 0x157D
db 'TRANSITION NETWORKS '
dw 5502 ; 0x157E
db 'PX INSTRUMENTS TECHNOLOGY LTD '
dw 5503 ; 0x157F
db 'PRIMEX AEROSPACE CO. '
dw 5504 ; 0x1580
db 'SEH COMPUTERTECHNIK GMBH '
dw 5505 ; 0x1581
db 'CYTEC CORPORATION '
dw 5506 ; 0x1582
db 'INET TECHNOLOGIES INC '
dw 5507 ; 0x1583
db 'UNIWILL COMPUTER CORP '
dw 5508 ; 0x1584
db 'LOGITRON '
dw 5509 ; 0x1585
db 'LANCAST INC '
dw 5510 ; 0x1586
db 'KONICA CORPORATION '
dw 5511 ; 0x1587
db 'SOLIDUM SYSTEMS CORP '
dw 5512 ; 0x1588
db 'ATLANTEK MICROSYSTEMS PTY LTD '
dw 5513 ; 0x1589
db 'DIGALOG SYSTEMS INC '
dw 5514 ; 0x158A
db 'ALLIED DATA TECHNOLOGIES '
dw 5515 ; 0x158B
db 'HITACHI SEMICONDUCTOR & DEVICES SALES CO LTD '
dw 5516 ; 0x158C
db 'POINT MULTIMEDIA SYSTEMS '
dw 5517 ; 0x158D
db 'LARA TECHNOLOGY INC '
dw 5518 ; 0x158E
db 'DITECT COOP '
dw 5519 ; 0x158F
db '3PARDATA '
dw 5520 ; 0x1590
db 'ARN '
dw 5521 ; 0x1591
db 'SYBA TECH LIMITED '
dw 5522 ; 0x1592
db 'BOPS INC '
dw 5523 ; 0x1593
db 'NETGAME LTD '
dw 5524 ; 0x1594
db 'DIVA SYSTEMS CORP. '
dw 5525 ; 0x1595
db 'FOLSOM RESEARCH INC '
dw 5526 ; 0x1596
db 'MEMEC DESIGN SERVICES '
dw 5527 ; 0x1597
db 'GRANITE MICROSYSTEMS '
dw 5528 ; 0x1598
db 'DELTA ELECTRONICS INC '
dw 5529 ; 0x1599
db 'GENERAL INSTRUMENT '
dw 5530 ; 0x159A
db 'FARADAY TECHNOLOGY CORP '
dw 5531 ; 0x159B
db 'STRATUS COMPUTER SYSTEMS '
dw 5532 ; 0x159C
db 'NINGBO HARRISON ELECTRONICS CO LTD '
dw 5533 ; 0x159D
db 'A-MAX TECHNOLOGY '
dw 5534 ; 0x159E
db 'GALEA NETWORK SECURITY '
dw 5535 ; 0x159F
db 'COMPUMASTER SRL '
dw 5536 ; 0x15A0
db 'GEOCAST NETWORK SYSTEMS INC '
dw 5537 ; 0x15A1
db 'CATALYST ENTERPRISES INC '
dw 5538 ; 0x15A2
db 'ITALTEL '
dw 5539 ; 0x15A3
db 'X-NET OY '
dw 5540 ; 0x15A4
db 'TOYOTA MACS INC '
dw 5541 ; 0x15A5
db 'SUNLIGHT ULTRASOUND TECHNOLOGIES LTD '
dw 5542 ; 0x15A6
db 'SSE TELECOM INC '
dw 5543 ; 0x15A7
db 'SHANGHAI COMMUNICATIONS TECHNOLOGIES CENTER '
dw 5544 ; 0x15A8
db 'MORETON BAY '
dw 5546 ; 0x15AA
db 'BLUESTEEL NETWORKS INC '
dw 5547 ; 0x15AB
db 'NORTH ATLANTIC INSTRUMENTS '
dw 5548 ; 0x15AC
db 'VMWARE '
dw 5549 ; 0x15AD
db 'AMERSHAM PHARMACIA BIOTECH '
dw 5550 ; 0x15AE
db 'ZOLTRIX INTERNATIONAL LIMITED '
dw 5552 ; 0x15B0
db 'SOURCE TECHNOLOGY INC '
dw 5553 ; 0x15B1
db 'MOSAID TECHNOLOGIES INC. '
dw 5554 ; 0x15B2
db 'MELLANOX TECHNOLOGY '
dw 5555 ; 0x15B3
db 'CCI/TRIAD '
dw 5556 ; 0x15B4
db 'CIMETRICS INC '
dw 5557 ; 0x15B5
db 'TEXAS MEMORY SYSTEMS INC '
dw 5558 ; 0x15B6
db 'SANDISK CORP. '
dw 5559 ; 0x15B7
db 'ADDI-DATA GMBH '
dw 5560 ; 0x15B8
db 'MAESTRO DIGITAL COMMUNICATIONS '
dw 5561 ; 0x15B9
db 'IMPACCT TECHNOLOGY CORP '
dw 5562 ; 0x15BA
db 'PORTWELL INC '
dw 5563 ; 0x15BB
db 'AGILENT TECHNOLOGIES '
dw 5564 ; 0x15BC
db 'DFI INC. '
dw 5565 ; 0x15BD
db 'SOLA ELECTRONICS '
dw 5566 ; 0x15BE
db 'HIGH TECH COMPUTER CORP (HTC) '
dw 5567 ; 0x15BF
db 'BVM LIMITED '
dw 5568 ; 0x15C0
db 'QUANTEL '
dw 5569 ; 0x15C1
db 'NEWER TECHNOLOGY INC '
dw 5570 ; 0x15C2
db 'TAIWAN MYCOMP CO LTD '
dw 5571 ; 0x15C3
db 'EVSX '
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 '
dw 5575 ; 0x15C7
db 'PENTA MEDIA CO. LTD '
dw 5576 ; 0x15C8
db 'SEROME TECHNOLOGY INC '
dw 5577 ; 0x15C9
db 'BITBOYS OY '
dw 5578 ; 0x15CA
db 'AG ELECTRONICS LTD '
dw 5579 ; 0x15CB
db 'HOTRAIL INC. '
dw 5580 ; 0x15CC
db 'DREAMTECH CO LTD '
dw 5581 ; 0x15CD
db 'GENRAD INC. '
dw 5582 ; 0x15CE
db 'HILSCHER GMBH '
dw 5583 ; 0x15CF
db 'INFINEON TECHNOLOGIES AG '
dw 5585 ; 0x15D1
db 'FIC (FIRST INTERNATIONAL COMPUTER INC) '
dw 5586 ; 0x15D2
db 'NDS TECHNOLOGIES ISRAEL LTD '
dw 5587 ; 0x15D3
db 'IWILL CORPORATION '
dw 5588 ; 0x15D4
db 'TATUNG CO. '
dw 5589 ; 0x15D5
db 'ENTRIDIA CORPORATION '
dw 5590 ; 0x15D6
db 'ROCKWELL-COLLINS '
dw 5591 ; 0x15D7
db 'CYBERNETICS TECHNOLOGY CO LTD '
dw 5592 ; 0x15D8
db 'SUPER MICRO COMPUTER INC '
dw 5593 ; 0x15D9
db 'CYBERFIRM INC. '
dw 5594 ; 0x15DA
db 'APPLIED COMPUTING SYSTEMS INC. '
dw 5595 ; 0x15DB
db 'LITRONIC INC '
dw 5596 ; 0x15DC
db 'SIGMATEL INC. '
dw 5597 ; 0x15DD
db 'MALLEABLE TECHNOLOGIES INC '
dw 5598 ; 0x15DE
db 'INFINILINK CORP. '
dw 5599 ; 0x15DF
db 'CACHEFLOW INC '
dw 5600 ; 0x15E0
db 'VOICE TECHNOLOGIES GROUP INC '
dw 5601 ; 0x15E1
db 'QUICKNET TECHNOLOGIES INC '
dw 5602 ; 0x15E2
db 'NETWORTH TECHNOLOGIES INC '
dw 5603 ; 0x15E3
db 'VSN SYSTEMEN BV '
dw 5604 ; 0x15E4
db 'VALLEY TECHNOLOGIES INC '
dw 5605 ; 0x15E5
db 'AGERE INC. '
dw 5606 ; 0x15E6
db 'GET ENGINEERING CORP. '
dw 5607 ; 0x15E7
db 'NATIONAL DATACOMM CORP. '
dw 5608 ; 0x15E8
db 'PACIFIC DIGITAL CORP. '
dw 5609 ; 0x15E9
db 'TOKYO DENSHI SEKEI K.K. '
dw 5610 ; 0x15EA
db 'DRSEARCH GMBH '
dw 5611 ; 0x15EB
db 'BECKHOFF GMBH '
dw 5612 ; 0x15EC
db 'MACROLINK INC '
dw 5613 ; 0x15ED
db 'IN WIN DEVELOPMENT INC. '
dw 5614 ; 0x15EE
db 'INTELLIGENT PARADIGM INC '
dw 5615 ; 0x15EF
db 'B-TREE SYSTEMS INC '
dw 5616 ; 0x15F0
db 'TIMES N SYSTEMS INC '
dw 5617 ; 0x15F1
db 'DIAGNOSTIC INSTRUMENTS INC '
dw 5618 ; 0x15F2
db 'DIGITMEDIA CORP. '
dw 5619 ; 0x15F3
db 'VALUESOFT '
dw 5620 ; 0x15F4
db 'POWER MICRO RESEARCH '
dw 5621 ; 0x15F5
db 'EXTREME PACKET DEVICE INC '
dw 5622 ; 0x15F6
db 'BANCTEC '
dw 5623 ; 0x15F7
db 'KOGA ELECTRONICS CO '
dw 5624 ; 0x15F8
db 'ZENITH ELECTRONICS CORPORATION '
dw 5625 ; 0x15F9
db 'J P AXZAM CORPORATION '
dw 5626 ; 0x15FA
db 'ZILOG INC. '
dw 5627 ; 0x15FB
db 'TECHSAN ELECTRONICS CO LTD '
dw 5628 ; 0x15FC
db 'N-CUBED.NET '
dw 5629 ; 0x15FD
db 'KINPO ELECTRONICS INC '
dw 5630 ; 0x15FE
db 'FASTPOINT TECHNOLOGIES INC. '
dw 5631 ; 0x15FF
db 'NORTHROP GRUMMAN-CANADA LTD '
dw 5632 ; 0x1600
db 'TENTA TECHNOLOGY '
dw 5633 ; 0x1601
db 'PROSYS-TEC INC. '
dw 5634 ; 0x1602
db 'NOKIA WIRELESS BUSINESS COMMUNICATIONS '
dw 5635 ; 0x1603
db 'CENTRAL SYSTEM RESEARCH CO LTD '
dw 5636 ; 0x1604
db 'PAIRGAIN TECHNOLOGIES '
dw 5637 ; 0x1605
db 'EUROPOP AG '
dw 5638 ; 0x1606
db 'LAVA SEMICONDUCTOR MANUFACTURING INC. '
dw 5639 ; 0x1607
db 'AUTOMATED WAGERING INTERNATIONAL '
dw 5640 ; 0x1608
db 'SCIEMETRIC INSTRUMENTS INC '
dw 5641 ; 0x1609
db 'Broadcom -SiByte '
dw 5741 ; 0x127A
db 'EPOX Computer Co '
dw 5781 ; 0x1695
db 'ALBATRON Corp. '
dw 6130 ; 0x17F2
db 'AMBIENT TECHNOLOGIES INC '
dw 6163 ; 0x1813
db 'ASROCK Inc '
dw 6217 ; 0x1849
db 'Jaton Corp '
dw 6931 ; 0x1B13
db 'TEMPORAL RESEARCH LTD '
dw 8193 ; 0x2001
db 'CHAINTECH COMPUTER CO. LTD '
dw 9999 ; 0x270F
db 'HINT CORP '
dw 13192 ; 0x3388
db 'QUANTUM DESIGNS (H.K.) INC. '
dw 13329 ; 0x3411
db 'AVANCE LOGIC INC '
dw 16389 ; 0x4005
db 'DELTA NETWORKS INC '
dw 16435 ; 0x4033
db 'ALADDIN KNOWLEDGE SYSTEMS '
dw 16748 ; 0x416C
db 'CONEXANT (WAS ICOMPRESION INC.) '
dw 17476 ; 0x4444
db 'GROWTH NETWORKS '
dw 18755 ; 0x4943
db 'SEANIX TECHNOLOGY INC '
dw 19617 ; 0x4CA1
db 'MEDIAQ INC. '
dw 19793 ; 0x4D51
db 'MICROTECHNICA CO LTD '
dw 19796 ; 0x4D54
db 'S S TECHNOLOGIES '
dw 20790 ; 0x5136
db 'S3 INC. '
dw 21299 ; 0x5333
db 'TERALOGIC INC '
dw 21580 ; 0x544C
db 'GENROCO INC '
dw 21845 ; 0x5555
db 'LOGITEC CORP. '
dw 25609 ; 0x6409
db 'DECISION COMPUTER INTERNATIONAL CO. '
dw 26214 ; 0x6666
db 'INTEL CORP. '
dw 32902 ; 0x8086
db 'SILICON MAGIC CORP. '
dw 34952 ; 0x8888
db 'COMPUTONE CORPORATION '
dw 36366 ; 0x8E0E
db 'ADAPTEC '
dw 36868 ; 0x9004
db 'GIGAPIXEL CORP '
dw 37274 ; 0x919A
db 'OMNI MEDIA TECHNOLOGY INC. '
dw 38553 ; 0x9699
db 'AOPEN INC. '
dw 41120 ; 0xA0A0
db 'HEWLETT PACKARD '
dw 41561 ; 0xA259
db 'DIGITAL RECEIVER TECHNOLOGY INC '
dw 44062 ; 0xAC1E
db 'MOTOROLA '
dw 49374 ; 0xC0DE
db 'MOTION ENGINEERING. '
dw 49406 ; 0xC0FE
db 'VARIAN AUSTRIALIA PTY LTD '
dw 51792 ; 0xCA50
db 'CHRYSALIS-ITS '
dw 51966 ; 0xCAFE
db 'CATAPULT COMMUNICATIONS '
dw 52428 ; 0xCCCC
db 'DY4 Systems Inc '
dw 54484 ; 0xD4D4
db 'EKF ELEKTRONIK GMBH '
dw 58559 ; 0xE4BF
db 'EAGLE TECHNOLOGY '
dw 59905 ; 0xEA01
db 'FAST SEARCH & TRANSFER ASA '
dw 64087 ; 0xFA57
db 'EPIGRAM INC '
dw 65242 ; 0xFEDA
db 'ARTX INC '
dw 5120 ; 0x1400
db 'Meilhaus Electronic GmbH Germany '
dw 5122 ; 0x1402
db 'FUNDAMENTAL SOFTWARE INC '
dw 5124 ; 0x1404
db 'OCE PRINTING SYSTEMS GmbH '
dw 5126 ; 0x1406
db 'LAVA COMPUTER MFG INC '
dw 5127 ; 0x1407
db 'ALOKA CO. LTD '
dw 5128 ; 0x1408
db 'DSP RESEARCH INC '
dw 5130 ; 0x140A
db 'RAMIX INC '
dw 5131 ; 0x140B
db 'MATSUSHITA ELECTRIC WORKS LTD '
dw 5133 ; 0x140D
db 'ADDONICS '
dw 5139 ; 0x1413
db 'OXFORD SEMICONDUCTOR LTD '
dw 5141 ; 0x1415
db 'KYUSHU ELECTRONICS SYSTEMS INC '
dw 5144 ; 0x1418
db 'EXCEL SWITCHING CORP '
dw 5145 ; 0x1419
db 'ZOOM TELEPHONICS INC '
dw 5147 ; 0x141B
db 'FANUC LTD '
dw 5150 ; 0x141E
db 'PSION DACOM PLC '
dw 5152 ; 0x1420
db 'EDEC CO LTD '
dw 5160 ; 0x1428
db 'UNEX TECHNOLOGY CORP '
dw 5161 ; 0x1429
db 'KINGMAX TECHNOLOGY INC '
dw 5162 ; 0x142A
db 'RADIOLAN '
dw 5163 ; 0x142B
db 'MINTON OPTIC INDUSTRY CO LTD '
dw 5164 ; 0x142C
db 'PIXSTREAM INC '
dw 5165 ; 0x142D
db 'ITT AEROSPACE/COMMUNICATIONS DIVISION '
dw 5168 ; 0x1430
db 'ELTEC ELEKTRONIK GMBH '
dw 5171 ; 0x1433
db 'CIS TECHNOLOGY INC '
dw 5174 ; 0x1436
db 'NISSIN INC CO '
dw 5175 ; 0x1437
db 'ATMEL-DREAM '
dw 5176 ; 0x1438
db 'LIGHTWELL CO LTD-ZAX DIVISION '
dw 5183 ; 0x143F
db 'AGIE SA '
dw 5185 ; 0x1441
db 'LOGICAL CO LTD '
dw 5189 ; 0x1445
db 'GRAPHIN CO. LTD '
dw 5190 ; 0x1446
db 'AIM GMBH '
dw 5191 ; 0x1447
db 'ADLINK Technology Inc '
dw 5194 ; 0x144A
db 'LORONIX INFORMATION SYSTEMS INC '
dw 5195 ; 0x144B
db 'SAMSUNG ELECTRONICS CO LTD '
dw 5197 ; 0x144D
db 'OCTAVE COMMUNICATIONS IND. '
dw 5200 ; 0x1450
db 'SP3D CHIP DESIGN GMBH '
dw 5201 ; 0x1451
db 'MYCOM INC '
dw 5203 ; 0x1453
db 'LOGIC PLUS PLUS INC '
dw 5205 ; 0x1455
db 'GIGA-BYTE TECHNOLOGY '
dw 5208 ; 0x1458
db 'CRYPTEK '
dw 5212 ; 0x145C
db 'BALDOR ELECTRIC COMPANY '
dw 5215 ; 0x145F
db 'DYNARC INC '
dw 5216 ; 0x1460
db 'AVERMEDIA Tech. '
dw 5217 ; 0x1461
db 'MICRO-STAR INTERNATIONAL CO LTD '
dw 5218 ; 0x1462
db 'FAST CORPORATION '
dw 5219 ; 0x1463
db 'INTERACTIVE CIRCUITS & SYSTEMS LTD '
dw 5220 ; 0x1464
db 'GN NETTEST TELECOM DIV. '
dw 5221 ; 0x1465
db 'AMBIT MICROSYSTEMS CORP. '
dw 5224 ; 0x1468
db 'CLEVELAND MOTION CONTROLS '
dw 5225 ; 0x1469
db 'RUBY TECH CORP. '
dw 5228 ; 0x146C
db 'TACHYON '
dw 5229 ; 0x146D
db 'WILLIAMS ELECTRONICS GAMES. '
dw 5230 ; 0x146E
db 'INTEGRATED TELECOM EXPRESS INC '
dw 5233 ; 0x1471
db 'ZAPEX TECHNOLOGIES INC '
dw 5235 ; 0x1473
db 'DOUG CARSON & ASSOCIATES '
dw 5236 ; 0x1474
db 'NET INSIGHT '
dw 5239 ; 0x1477
db 'DIATREND CORPORATION '
dw 5240 ; 0x1478
db 'ABIT Computer '
dw 5243 ; 0x147B
db 'NIHON UNISYS '
dw 5247 ; 0x147F
db 'ISYTEC-Integrierte Systemtechnik Gmbh '
dw 5250 ; 0x1482
db 'LABWAY COPORATION '
dw 5251 ; 0x1483
db 'ERMA-ELECTRONIC GMBH '
dw 5253 ; 0x1485
db 'KYE SYSTEMS CORPORATION '
dw 5257 ; 0x1489
db 'OPTO 22 '
dw 5258 ; 0x148A
db 'INNOMEDIALOGIC INC. '
dw 5259 ; 0x148B
db 'OSI PLUS CORPORATION '
dw 5262 ; 0x148E
db 'PLANT EQUIPMENT. '
dw 5263 ; 0x148F
db 'TC LABS PTY LTD. '
dw 5264 ; 0x1490
db 'MAKER COMMUNICATIONS '
dw 5267 ; 0x1493
db 'TOKAI COMMUNICATIONS INDUSTRY CO. LTD '
dw 5269 ; 0x1495
db 'JOYTECH COMPUTER CO. LTD. '
dw 5270 ; 0x1496
db 'SMA REGELSYSTEME GMBH '
dw 5271 ; 0x1497
db 'EMTEC CO. LTD '
dw 5273 ; 0x1499
db 'ANDOR TECHNOLOGY LTD '
dw 5274 ; 0x149A
db 'SEIKO INSTRUMENTS INC '
dw 5275 ; 0x149B
db 'OVISLINK CORP. '
dw 5276 ; 0x149C
db 'NEWTEK INC '
dw 5277 ; 0x149D
db 'MAPLETREE NETWORKS INC. '
dw 5278 ; 0x149E
db 'LECTRON CO LTD '
dw 5279 ; 0x149F
db 'SOFTING GMBH '
dw 5280 ; 0x14A0
db 'SYSTEMBASE CO LTD '
dw 5281 ; 0x14A1
db 'MILLENNIUM ENGINEERING INC '
dw 5282 ; 0x14A2
db 'MAVERICK NETWORKS '
dw 5283 ; 0x14A3
db 'GVC/BCM ADVANCED RESEARCH '
dw 5284 ; 0x14A4
db 'XIONICS DOCUMENT TECHNOLOGIES INC. '
dw 5285 ; 0x14A5
db 'INOVA COMPUTERS GMBH & CO KG '
dw 5286 ; 0x14A6
db 'FEATRON TECHNOLOGIES CORPORATION '
dw 5288 ; 0x14A8
db 'HIVERTEC INC. '
dw 5289 ; 0x14A9
db 'MENTOR GRAPHICS CORP. '
dw 5291 ; 0x14AB
db 'NOVAWEB TECHNOLOGIES INC '
dw 5292 ; 0x14AC
db 'TIME SPACE RADIO AB '
dw 5293 ; 0x14AD
db 'CTI PET Systems '
dw 5294 ; 0x14AE
db 'GUILLEMOT CORPORATION '
dw 5295 ; 0x14AF
db 'BST COMMUNICATION TECHNOLOGY LTD '
dw 5296 ; 0x14B0
db 'NEXTCOM K.K. '
dw 5297 ; 0x14B1
db 'ENNOVATE NETWORKS INC '
dw 5298 ; 0x14B2
db 'XPEED INC. '
dw 5299 ; 0x14B3
db 'PHILIPS BUSINESS ELECTRONICS B.V. '
dw 5300 ; 0x14B4
db 'CREAMWARE GMBH '
dw 5301 ; 0x14B5
db 'QUANTUM DATA CORP. '
dw 5302 ; 0x14B6
db 'PROXIM INC '
dw 5303 ; 0x14B7
db 'TECHSOFT TECHNOLOGY CO LTD '
dw 5304 ; 0x14B8
db 'AIRONET WIRELESS COMMUNICATIONS '
dw 5305 ; 0x14B9
db 'INTERNIX INC. '
dw 5306 ; 0x14BA
db 'SEMTECH CORPORATION '
dw 5307 ; 0x14BB
db 'GLOBESPAN SEMICONDUCTOR INC. '
dw 5308 ; 0x14BC
db 'CARDIO CONTROL N.V. '
dw 5309 ; 0x14BD
db 'L3 COMMUNICATIONS '
dw 5310 ; 0x14BE
db 'SPIDER COMMUNICATIONS INC. '
dw 5311 ; 0x14BF
db 'COMPAL ELECTRONICS INC '
dw 5312 ; 0x14C0
db 'MYRICOM INC. '
dw 5313 ; 0x14C1
db 'DTK COMPUTER '
dw 5314 ; 0x14C2
db 'MEDIATEK CORP. '
dw 5315 ; 0x14C3
db 'IWASAKI INFORMATION SYSTEMS CO LTD '
dw 5316 ; 0x14C4
db 'ABB AUTOMATION PRODUCTS '
dw 5317 ; 0x14C5
db 'DATA RACE INC '
dw 5318 ; 0x14C6
db 'MODULAR TECHNOLOY HOLDINGS LTD '
dw 5319 ; 0x14C7
db 'TURBOCOMM TECH. INC. '
dw 5320 ; 0x14C8
db 'ODIN TELESYSTEMS INC '
dw 5321 ; 0x14C9
db 'PE LOGIC CORP. '
dw 5322 ; 0x14CA
db 'Billionton Systems Inc./Cadmus Micro Inc. '
dw 5323 ; 0x14CB
db 'NAKAYO TELECOMMUNICATIONS INC '
dw 5324 ; 0x14CC
db 'UNIVERSAL SCIENTIFIC IND '
dw 5325 ; 0x14CD
db 'WHISTLE COMMUNICATIONS '
dw 5326 ; 0x14CE
db 'TEK MICROSYSTEMS INC. '
dw 5327 ; 0x14CF
db 'ERICSSON AXE R & D '
dw 5328 ; 0x14D0
db 'COMPUTER HI-TECH CO LTD '
dw 5329 ; 0x14D1
db 'TITAN ELECTRONICS INC '
dw 5330 ; 0x14D2
db 'CIRTECH (UK) LTD '
dw 5331 ; 0x14D3
db 'PANACOM TECHNOLOGY CORP '
dw 5332 ; 0x14D4
db 'NITSUKO CORPORATION '
dw 5333 ; 0x14D5
db 'ACCUSYS '
dw 5334 ; 0x14D6
db 'HIRAKAWA HEWTECH CORP '
dw 5335 ; 0x14D7
db 'HOPF ELEKTRONIK GMBH '
dw 5336 ; 0x14D8
db 'ALPHA PROCESSOR INC '
dw 5337 ; 0x14D9
db 'NATIONAL AEROSPACE LABORATORIES '
dw 5338 ; 0x14DA
db 'AVLAB TECHNOLOGY INC '
dw 5339 ; 0x14DB
db 'AMPLICON LIVELINE LTD '
dw 5340 ; 0x14DC
db 'IMODL INC. '
dw 5341 ; 0x14DD
db 'APPLIED INTEGRATION CORPORATION '
dw 5342 ; 0x14DE
db 'BASIS COMMUNICATIONS CORP '
dw 5343 ; 0x14DF
db 'INVERTEX '
dw 5345 ; 0x14E1
db 'INFOLIBRIA '
dw 5346 ; 0x14E2
db 'AMTELCO '
dw 5347 ; 0x14E3
db 'BROADCOM CORPORATION '
dw 5348 ; 0x14E4
db 'PIXELFUSION LTD '
dw 5349 ; 0x14E5
db 'SHINING TECHNOLOGY INC '
dw 5350 ; 0x14E6
db '3CX '
dw 5351 ; 0x14E7
db 'RAYCER INC '
dw 5352 ; 0x14E8
db 'GARNETS SYSTEM CO LTD '
dw 5353 ; 0x14E9
db 'PLANEX COMMUNICATIONS INC '
dw 5354 ; 0x14EA
db 'SEIKO EPSON CORPORATION '
dw 5355 ; 0x14EB
db 'ACQIRIS '
dw 5356 ; 0x14EC
db 'DATAKINETICS LTD '
dw 5357 ; 0x14ED
db 'MASPRO KENKOH CORP '
dw 5358 ; 0x14EE
db 'CARRY COMPUTER ENG. CO LTD '
dw 5359 ; 0x14EF
db 'CANON RESEACH CENTRE FRANCE '
dw 5360 ; 0x14F0
db 'Conexant Systems, Inc '
dw 5361 ; 0x14F1
db 'Mobility Electronics, Inc. '
dw 5362 ; 0x14F2
db 'BROADLOGIC '
dw 5363 ; 0x14F3
db 'TOKYO ELECTRONIC INDUSTRY CO LTD '
dw 5364 ; 0x14F4
db 'SOPAC LTD '
dw 5365 ; 0x14F5
db 'COYOTE TECHNOLOGIES LLC '
dw 5366 ; 0x14F6
db 'WOLF TECHNOLOGY INC '
dw 5367 ; 0x14F7
db 'AUDIOCODES INC '
dw 5368 ; 0x14F8
db 'AG COMMUNICATIONS '
dw 5369 ; 0x14F9
db 'WAVETEK WANDEL & GOLTERMANN '
dw 5370 ; 0x14FA
db 'TRANSAS MARINE (UK) LTD '
dw 5371 ; 0x14FB
db 'QUADRICS SUPERCOMPUTERS WORLD '
dw 5372 ; 0x14FC
db 'JAPAN COMPUTER INDUSTRY INC. '
dw 5373 ; 0x14FD
db 'ARCHTEK TELECOM CORP. '
dw 5374 ; 0x14FE
db 'TWINHEAD INTERNATIONAL CORP '
dw 5375 ; 0x14FF
db 'LANTECH COMPUTER COMPANY '
dw 5376 ; 0x1500
db 'BANKSOFT CANADA LTD '
dw 5377 ; 0x1501
db 'MITSUBISHI ELECTRIC LOGISTICS SUPPORT CO '
dw 5378 ; 0x1502
db 'KAWASAKI LSI USA INC '
dw 5379 ; 0x1503
db 'KAISER ELECTRONICS '
dw 5380 ; 0x1504
db 'ITA INGENIEURBURO FUR TESTAUFGABEN GMBH '
dw 5381 ; 0x1505
db 'CHAMELEON SYSTEMS INC '
dw 5382 ; 0x1506
db 'HTEC LTD '
dw 5383 ; 0x1507
db 'HONDA CONNECTORS/MHOTRONICS INC '
dw 5384 ; 0x1508
db 'FIRST INTERNATIONAL COMPUTER INC '
dw 5385 ; 0x1509
db 'FORVUS RESEARCH INC '
dw 5386 ; 0x150A
db 'YAMASHITA SYSTEMS CORP '
dw 5387 ; 0x150B
db 'KYOPAL CO LTD '
dw 5388 ; 0x150C
db 'WARPSPPED INC '
dw 5389 ; 0x150D
db 'C-PORT CORPORATION '
dw 5390 ; 0x150E
db 'INTEC GMBH '
dw 5391 ; 0x150F
db 'BEHAVIOR TECH COMPUTER CORP '
dw 5392 ; 0x1510
db 'CENTILLIUM TECHNOLOGY CORP '
dw 5393 ; 0x1511
db 'ROSUN TECHNOLOGIES INC '
dw 5394 ; 0x1512
db 'RAYCHEM '
dw 5395 ; 0x1513
db 'TFL LAN INC '
dw 5396 ; 0x1514
db 'ICS ADVENT '
dw 5397 ; 0x1515
db 'MYSON TECHNOLOGY INC '
dw 5398 ; 0x1516
db 'ECHOTEK CORPORATION '
dw 5399 ; 0x1517
db 'PEP MODULAR COMPUTERS GMBH '
dw 5400 ; 0x1518
db 'TELEFON AKTIEBOLAGET LM Ericsson '
dw 5401 ; 0x1519
db 'GLOBETEK INC '
dw 5402 ; 0x151A
db 'COMBOX LTD '
dw 5403 ; 0x151B
db 'DIGITAL AUDIO LABS INC '
dw 5404 ; 0x151C
db 'FUJITSU COMPUTER PRODUCTS OF AMERICA '
dw 5405 ; 0x151D
db 'MATRIX CORP. '
dw 5406 ; 0x151E
db 'TOPIC SEMICONDUCTOR CORP '
dw 5407 ; 0x151F
db 'CHAPLET SYSTEM INC '
dw 5408 ; 0x1520
db 'BELL CORPORATION '
dw 5409 ; 0x1521
db 'MAINPINE LIMITED '
dw 5410 ; 0x1522
db 'MUSIC SEMICONDUCTORS '
dw 5411 ; 0x1523
db 'ENE TECHNOLOGY INC '
dw 5412 ; 0x1524
db 'IMPACT TECHNOLOGIES '
dw 5413 ; 0x1525
db 'ISS '
dw 5414 ; 0x1526
db 'SOLECTRON '
dw 5415 ; 0x1527
db 'ACKSYS '
dw 5416 ; 0x1528
db 'AMERICAN MICROSYSTEMS INC '
dw 5417 ; 0x1529
db 'QUICKTURN DESIGN SYSTEMS '
dw 5418 ; 0x152A
db 'FLYTECH TECHNOLOGY CO LTD '
dw 5419 ; 0x152B
db 'MACRAIGOR SYSTEMS LLC '
dw 5420 ; 0x152C
db 'QUANTA COMPUTER INC '
dw 5421 ; 0x152D
db 'MELEC INC '
dw 5422 ; 0x152E
db 'PHILIPS-CRYPTO '
dw 5423 ; 0x152F
db 'ACQIS TECHNOLOGY '
dw 5424 ; 0x1530
db 'CHRYON CORP. '
dw 5425 ; 0x1531
db 'ECHELON CORPORATION '
dw 5426 ; 0x1532
db 'BALTIMORE '
dw 5427 ; 0x1533
db 'ROAD CORPORATION '
dw 5428 ; 0x1534
db 'EVERGREEN TECHNOLOGIES INC '
dw 5429 ; 0x1535
db 'DATALEX COMMUNCATIONS '
dw 5431 ; 0x1537
db 'ARALION INC. '
dw 5432 ; 0x1538
db 'ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. '
dw 5433 ; 0x1539
db 'ONO SOKKI '
dw 5434 ; 0x153A
db 'TERRATEC ELECTRONIC GMBH '
dw 5435 ; 0x153B
db 'ANTAL ELECTRONIC '
dw 5436 ; 0x153C
db 'FILANET CORPORATION '
dw 5437 ; 0x153D
db 'TECHWELL INC '
dw 5438 ; 0x153E
db 'MIPS DENMARK '
dw 5439 ; 0x153F
db 'PROVIDEO MULTIMEDIA CO LTD '
dw 5440 ; 0x1540
db 'TELOSITY INC. '
dw 5441 ; 0x1541
db 'VIVID TECHNOLOGY INC '
dw 5442 ; 0x1542
db 'SILICON LABORATORIES '
dw 5443 ; 0x1543
db 'DCM DATA SYSTEMS '
dw 5444 ; 0x1544
db 'VISIONTEK '
dw 5445 ; 0x1545
db 'IOI TECHNOLOGY CORP. '
dw 5446 ; 0x1546
db 'MITUTOYO CORPORATION '
dw 5447 ; 0x1547
db 'JET PROPULSION LABORATORY '
dw 5448 ; 0x1548
db 'INTERCONNECT SYSTEMS SOLUTIONS '
dw 5449 ; 0x1549
db 'MAX TECHNOLOGIES INC. '
dw 5450 ; 0x154A
db 'COMPUTEX CO LTD '
dw 5451 ; 0x154B
db 'VISUAL TECHNOLOGY INC. '
dw 5452 ; 0x154C
db 'PAN INTERNATIONAL INDUSTRIAL CORP '
dw 5453 ; 0x154D
db 'SERVOTEST LTD '
dw 5454 ; 0x154E
db 'STRATABEAM TECHNOLOGY '
dw 5455 ; 0x154F
db 'OPEN NETWORK CO LTD '
dw 5456 ; 0x1550
db 'SMART ELECTRONIC DEVELOPMENT GMBH '
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. '
dw 5460 ; 0x1554
db 'GESYTEC GMBH '
dw 5461 ; 0x1555
db 'PLD APPLICATIONS '
dw 5462 ; 0x1556
db 'MEDIASTAR CO. LTD '
dw 5463 ; 0x1557
db 'CLEVO/KAPOK COMPUTER '
dw 5464 ; 0x1558
db 'SI LOGIC LTD '
dw 5465 ; 0x1559
db 'INNOMEDIA INC '
dw 5466 ; 0x155A
db 'PROTAC INTERNATIONAL CORP '
dw 5467 ; 0x155B
db 'CEMAX-ICON INC '
dw 5468 ; 0x155C
db 'MAC SYSTEM CO LTD '
dw 5469 ; 0x155D
db 'LP ELEKTRONIK GMBH/KUKA Controls GmbH '
dw 5470 ; 0x155E
db 'PERLE SYSTEMS LIMITED '
dw 5471 ; 0x155F
db 'TERAYON COMMUNICATIONS SYSTEMS '
dw 5472 ; 0x1560
db 'VIEWGRAPHICS INC '
dw 5473 ; 0x1561
db 'Symbol Technologies, Inc. '
dw 5474 ; 0x1562
db 'A-TREND '
dw 5475 ; 0x1563
db 'YAMAKATSU ELECTRONICS INDUSTRY CO LTD '
dw 5476 ; 0x1564
db 'BIOSTAR MICROTECH INT CORP '
dw 5477 ; 0x1565
db 'ARDENT TECHNOLOGIES INC '
dw 5478 ; 0x1566
db 'JUNGSOFT '
dw 5479 ; 0x1567
db 'DDK ELECTRONICS INC '
dw 5480 ; 0x1568
db 'PALIT MICROSYSTEMS INC '
dw 5481 ; 0x1569
db 'AVTEC SYSTEMS '
dw 5482 ; 0x156A
db '2WIRE '
dw 5483 ; 0x156B
db 'VIDAC ELECTRONICS GMBH '
dw 5484 ; 0x156C
db 'ALPHA-TOP CORP '
dw 5485 ; 0x156D
db 'ALFA INC '
dw 5486 ; 0x156E
db 'M-SYSTEMS FLASH DISK PIONEERS LTD '
dw 5487 ; 0x156F
db 'LECROY CORPORATION '
dw 5488 ; 0x1570
db 'CONTEMPORARY CONTROLS '
dw 5489 ; 0x1571
db 'OTIS ELEVATOR COMPANY '
dw 5490 ; 0x1572
db 'LATTICE-VANTIS '
dw 5491 ; 0x1573
db 'FAIRCHILD SEMICONDUCTOR '
dw 5492 ; 0x1574
db 'VOLTAIRE ADVANCED DATA SECURITY LTD '
dw 5493 ; 0x1575
db 'VIEWCAST COM '
dw 5494 ; 0x1576
db 'HITT '
dw 5496 ; 0x1578
db 'DUAL TECHNOLOGY CORPORATION '
dw 5497 ; 0x1579
db 'JAPAN ELECRONICS IND. INC '
dw 5498 ; 0x157A
db 'STAR MULTIMEDIA CORP. '
dw 5499 ; 0x157B
db 'EUROSOFT (UK) LTD '
dw 5500 ; 0x157C
db 'GEMFLEX NETWORKS '
dw 5501 ; 0x157D
db 'TRANSITION NETWORKS '
dw 5502 ; 0x157E
db 'PX INSTRUMENTS TECHNOLOGY LTD '
dw 5503 ; 0x157F
db 'PRIMEX AEROSPACE CO. '
dw 5504 ; 0x1580
db 'SEH COMPUTERTECHNIK GMBH '
dw 5505 ; 0x1581
db 'CYTEC CORPORATION '
dw 5506 ; 0x1582
db 'INET TECHNOLOGIES INC '
dw 5507 ; 0x1583
db 'UNIWILL COMPUTER CORP '
dw 5508 ; 0x1584
db 'LOGITRON '
dw 5509 ; 0x1585
db 'LANCAST INC '
dw 5510 ; 0x1586
db 'KONICA CORPORATION '
dw 5511 ; 0x1587
db 'SOLIDUM SYSTEMS CORP '
dw 5512 ; 0x1588
db 'ATLANTEK MICROSYSTEMS PTY LTD '
dw 5513 ; 0x1589
db 'DIGALOG SYSTEMS INC '
dw 5514 ; 0x158A
db 'ALLIED DATA TECHNOLOGIES '
dw 5515 ; 0x158B
db 'HITACHI SEMICONDUCTOR & DEVICES SALES CO LTD '
dw 5516 ; 0x158C
db 'POINT MULTIMEDIA SYSTEMS '
dw 5517 ; 0x158D
db 'LARA TECHNOLOGY INC '
dw 5518 ; 0x158E
db 'DITECT COOP '
dw 5519 ; 0x158F
db '3PARDATA '
dw 5520 ; 0x1590
db 'ARN '
dw 5521 ; 0x1591
db 'SYBA TECH LIMITED '
dw 5522 ; 0x1592
db 'BOPS INC '
dw 5523 ; 0x1593
db 'NETGAME LTD '
dw 5524 ; 0x1594
db 'DIVA SYSTEMS CORP. '
dw 5525 ; 0x1595
db 'FOLSOM RESEARCH INC '
dw 5526 ; 0x1596
db 'MEMEC DESIGN SERVICES '
dw 5527 ; 0x1597
db 'GRANITE MICROSYSTEMS '
dw 5528 ; 0x1598
db 'DELTA ELECTRONICS INC '
dw 5529 ; 0x1599
db 'GENERAL INSTRUMENT '
dw 5530 ; 0x159A
db 'FARADAY TECHNOLOGY CORP '
dw 5531 ; 0x159B
db 'STRATUS COMPUTER SYSTEMS '
dw 5532 ; 0x159C
db 'NINGBO HARRISON ELECTRONICS CO LTD '
dw 5533 ; 0x159D
db 'A-MAX TECHNOLOGY '
dw 5534 ; 0x159E
db 'GALEA NETWORK SECURITY '
dw 5535 ; 0x159F
db 'COMPUMASTER SRL '
dw 5536 ; 0x15A0
db 'GEOCAST NETWORK SYSTEMS INC '
dw 5537 ; 0x15A1
db 'CATALYST ENTERPRISES INC '
dw 5538 ; 0x15A2
db 'ITALTEL '
dw 5539 ; 0x15A3
db 'X-NET OY '
dw 5540 ; 0x15A4
db 'TOYOTA MACS INC '
dw 5541 ; 0x15A5
db 'SUNLIGHT ULTRASOUND TECHNOLOGIES LTD '
dw 5542 ; 0x15A6
db 'SSE TELECOM INC '
dw 5543 ; 0x15A7
db 'SHANGHAI COMMUNICATIONS TECHNOLOGIES CENTER '
dw 5544 ; 0x15A8
db 'MORETON BAY '
dw 5546 ; 0x15AA
db 'BLUESTEEL NETWORKS INC '
dw 5547 ; 0x15AB
db 'NORTH ATLANTIC INSTRUMENTS '
dw 5548 ; 0x15AC
db 'VMware Inc. '
dw 5549 ; 0x15AD
db 'AMERSHAM PHARMACIA BIOTECH '
dw 5550 ; 0x15AE
db 'ZOLTRIX INTERNATIONAL LIMITED '
dw 5552 ; 0x15B0
db 'SOURCE TECHNOLOGY INC '
dw 5553 ; 0x15B1
db 'MOSAID TECHNOLOGIES INC. '
dw 5554 ; 0x15B2
db 'MELLANOX TECHNOLOGY '
dw 5555 ; 0x15B3
db 'CCI/TRIAD '
dw 5556 ; 0x15B4
db 'CIMETRICS INC '
dw 5557 ; 0x15B5
db 'TEXAS MEMORY SYSTEMS INC '
dw 5558 ; 0x15B6
db 'SANDISK CORP. '
dw 5559 ; 0x15B7
db 'ADDI-DATA GMBH '
dw 5560 ; 0x15B8
db 'MAESTRO DIGITAL COMMUNICATIONS '
dw 5561 ; 0x15B9
db 'IMPACCT TECHNOLOGY CORP '
dw 5562 ; 0x15BA
db 'PORTWELL INC '
dw 5563 ; 0x15BB
db 'AGILENT TECHNOLOGIES '
dw 5564 ; 0x15BC
db 'DFI INC. '
dw 5565 ; 0x15BD
db 'SOLA ELECTRONICS '
dw 5566 ; 0x15BE
db 'HIGH TECH COMPUTER CORP (HTC) '
dw 5567 ; 0x15BF
db 'BVM LIMITED '
dw 5568 ; 0x15C0
db 'QUANTEL '
dw 5569 ; 0x15C1
db 'NEWER TECHNOLOGY INC '
dw 5570 ; 0x15C2
db 'TAIWAN MYCOMP CO LTD '
dw 5571 ; 0x15C3
db 'EVSX '
dw 5572 ; 0x15C4
db 'PROCOMP INFORMATICS LTD '
dw 5573 ; 0x15C5
db 'TECHNICAL UNIVERSITY OF BUDAPEST '
dw 5574 ; 0x15C6
db 'TATEYAMA SYSTEM LABORATORY CO LTD '
dw 5575 ; 0x15C7
db 'PENTA MEDIA CO. LTD '
dw 5576 ; 0x15C8
db 'SEROME TECHNOLOGY INC '
dw 5577 ; 0x15C9
db 'BITBOYS OY '
dw 5578 ; 0x15CA
db 'AG ELECTRONICS LTD '
dw 5579 ; 0x15CB
db 'HOTRAIL INC. '
dw 5580 ; 0x15CC
db 'DREAMTECH CO LTD '
dw 5581 ; 0x15CD
db 'GENRAD INC. '
dw 5582 ; 0x15CE
db 'HILSCHER GMBH '
dw 5583 ; 0x15CF
db 'INFINEON TECHNOLOGIES AG '
dw 5585 ; 0x15D1
db 'FIC (FIRST INTERNATIONAL COMPUTER INC) '
dw 5586 ; 0x15D2
db 'NDS TECHNOLOGIES ISRAEL LTD '
dw 5587 ; 0x15D3
db 'IWILL CORPORATION '
dw 5588 ; 0x15D4
db 'TATUNG CO. '
dw 5589 ; 0x15D5
db 'ENTRIDIA CORPORATION '
dw 5590 ; 0x15D6
db 'Rockwell-Collins Inc '
dw 5591 ; 0x15D7
db 'CYBERNETICS TECHNOLOGY CO LTD '
dw 5592 ; 0x15D8
db 'SUPER MICRO COMPUTER INC '
dw 5593 ; 0x15D9
db 'CYBERFIRM INC. '
dw 5594 ; 0x15DA
db 'APPLIED COMPUTING SYSTEMS INC. '
dw 5595 ; 0x15DB
db 'LITRONIC INC '
dw 5596 ; 0x15DC
db 'SIGMATEL INC. '
dw 5597 ; 0x15DD
db 'MALLEABLE TECHNOLOGIES INC '
dw 5598 ; 0x15DE
db 'INFINILINK CORP. '
dw 5599 ; 0x15DF
db 'CACHEFLOW INC '
dw 5600 ; 0x15E0
db 'VOICE TECHNOLOGIES GROUP INC '
dw 5601 ; 0x15E1
db 'QUICKNET TECHNOLOGIES INC '
dw 5602 ; 0x15E2
db 'NETWORTH TECHNOLOGIES INC '
dw 5603 ; 0x15E3
db 'VSN SYSTEMEN BV '
dw 5604 ; 0x15E4
db 'VALLEY TECHNOLOGIES INC '
dw 5605 ; 0x15E5
db 'AGERE INC. '
dw 5606 ; 0x15E6
db 'GET ENGINEERING CORP. '
dw 5607 ; 0x15E7
db 'NATIONAL DATACOMM CORP. '
dw 5608 ; 0x15E8
db 'PACIFIC DIGITAL CORP. '
dw 5609 ; 0x15E9
db 'TOKYO DENSHI SEKEI K.K. '
dw 5610 ; 0x15EA
db 'DRSEARCH GMBH '
dw 5611 ; 0x15EB
db 'BECKHOFF GMBH '
dw 5612 ; 0x15EC
db 'MACROLINK INC '
dw 5613 ; 0x15ED
db 'IN WIN DEVELOPMENT INC. '
dw 5614 ; 0x15EE
db 'INTELLIGENT PARADIGM INC '
dw 5615 ; 0x15EF
db 'B-TREE SYSTEMS INC '
dw 5616 ; 0x15F0
db 'TIMES N SYSTEMS INC '
dw 5617 ; 0x15F1
db 'DIAGNOSTIC INSTRUMENTS INC '
dw 5618 ; 0x15F2
db 'DIGITMEDIA CORP. '
dw 5619 ; 0x15F3
db 'VALUESOFT '
dw 5620 ; 0x15F4
db 'POWER MICRO RESEARCH '
dw 5621 ; 0x15F5
db 'EXTREME PACKET DEVICE INC '
dw 5622 ; 0x15F6
db 'BANCTEC '
dw 5623 ; 0x15F7
db 'KOGA ELECTRONICS CO '
dw 5624 ; 0x15F8
db 'ZENITH ELECTRONICS CORPORATION '
dw 5625 ; 0x15F9
db 'J P AXZAM CORPORATION '
dw 5626 ; 0x15FA
db 'ZILOG INC. '
dw 5627 ; 0x15FB
db 'TECHSAN ELECTRONICS CO LTD '
dw 5628 ; 0x15FC
db 'N-CUBED.NET '
dw 5629 ; 0x15FD
db 'KINPO ELECTRONICS INC '
dw 5630 ; 0x15FE
db 'FASTPOINT TECHNOLOGIES INC. '
dw 5631 ; 0x15FF
db 'NORTHROP GRUMMAN-CANADA LTD '
dw 5632 ; 0x1600
db 'TENTA TECHNOLOGY '
dw 5633 ; 0x1601
db 'PROSYS-TEC INC. '
dw 5634 ; 0x1602
db 'NOKIA WIRELESS BUSINESS COMMUNICATIONS '
dw 5635 ; 0x1603
db 'CENTRAL SYSTEM RESEARCH CO LTD '
dw 5636 ; 0x1604
db 'PAIRGAIN TECHNOLOGIES '
dw 5637 ; 0x1605
db 'EUROPOP AG '
dw 5638 ; 0x1606
db 'LAVA SEMICONDUCTOR MANUFACTURING INC. '
dw 5639 ; 0x1607
db 'AUTOMATED WAGERING INTERNATIONAL '
dw 5640 ; 0x1608
db 'SCIEMETRIC INSTRUMENTS INC '
dw 5641 ; 0x1609
db 'Broadcom -SiByte '
dw 5741 ; 0x166D
db 'EPOX Computer Co '
dw 5781 ; 0x1695
db 'ALBATRON Corp. '
dw 6130 ; 0x17F2
db 'AMBIENT TECHNOLOGIES INC '
dw 6163 ; 0x1813
db 'ASROCK Inc '
dw 6217 ; 0x1849
db 'Jaton Corp '
dw 6931 ; 0x1B13
db 'TEMPORAL RESEARCH LTD '
dw 8193 ; 0x2001
db 'CHAINTECH COMPUTER CO. LTD '
dw 9999 ; 0x270F
db 'HINT CORP '
dw 13192 ; 0x3388
db 'QUANTUM DESIGNS (H.K.) INC. '
dw 13329 ; 0x3411
db 'AVANCE LOGIC INC '
dw 16389 ; 0x4005
db 'DELTA NETWORKS INC '
dw 16435 ; 0x4033
db 'ALADDIN KNOWLEDGE SYSTEMS '
dw 16748 ; 0x416C
db 'CONEXANT (WAS ICOMPRESION INC.) '
dw 17476 ; 0x4444
db 'GROWTH NETWORKS '
dw 18755 ; 0x4943
db 'SEANIX TECHNOLOGY INC '
dw 19617 ; 0x4CA1
db 'MEDIAQ INC. '
dw 19793 ; 0x4D51
db 'MICROTECHNICA CO LTD '
dw 19796 ; 0x4D54
db 'S S TECHNOLOGIES '
dw 20790 ; 0x5136
db 'S3 Graphics Co., Ltd. '
dw 21299 ; 0x5333
db 'TERALOGIC INC '
dw 21580 ; 0x544C
db 'GENROCO INC '
dw 21845 ; 0x5555
db 'LOGITEC CORP. '
dw 25609 ; 0x6409
db 'DECISION COMPUTER INTERNATIONAL CO. '
dw 26214 ; 0x6666
db 'INTEL CORP. '
dw 32902 ; 0x8086
db 'SILICON MAGIC CORP. '
dw 34952 ; 0x8888
db 'COMPUTONE CORPORATION '
dw 36366 ; 0x8E0E
db 'Adaptec Inc '
dw 36868 ; 0x9004
db 'GIGAPIXEL CORP '
dw 37274 ; 0x919A
db 'OMNI MEDIA TECHNOLOGY INC. '
dw 38553 ; 0x9699
db 'AOPEN INC. '
dw 41120 ; 0xA0A0
db 'HEWLETT PACKARD '
dw 41561 ; 0xA259
db 'DIGITAL RECEIVER TECHNOLOGY INC '
dw 44062 ; 0xAC1E
db 'MOTOROLA '
dw 49374 ; 0xC0DE
db 'MOTION ENGINEERING. '
dw 49406 ; 0xC0FE
db 'VARIAN AUSTRIALIA PTY LTD '
dw 51792 ; 0xCA50
db 'CHRYSALIS-ITS '
dw 51966 ; 0xCAFE
db 'CATAPULT COMMUNICATIONS '
dw 52428 ; 0xCCCC
db 'DY4 Systems Inc/Curtiss-Wright Controls Embed. Com'
dw 54484 ; 0xD4D4
db 'EKF ELEKTRONIK GMBH '
dw 58559 ; 0xE4BF
db 'EAGLE TECHNOLOGY '
dw 59905 ; 0xEA01
db 'FAST SEARCH & TRANSFER ASA '
dw 64087 ; 0xFA57
db 'EPIGRAM INC '
dw 65242 ; 0xFEDA
;----------------------------------------------------------------------
_UNKNOWN: db 'UNKOWN VENDOR '
_UNKNOWN: db 'UNKNOWN VENDOR '
 
_UNKNOWND:
db 'UNKOWN DEVICE '
_UNKNOWND:
db 'UNKNOWN DEVICE '
 
Class0:
db 'Prehistoric - misc '
db 00 ; 0x00
db 00 ; 0x00
db 'Prehistoric - VGA '
db 01 ; 0x01
db 01 ; 0x01
 
Class1:
db 'Storage - SCSI '
db 00 ; 0x00
db 00 ; 0x00
db 'Storage - IDE '
db 01 ; 0x01
db 01 ; 0x01
db 'Storage - Floppy '
db 02 ; 0x02
db 02 ; 0x02
db 'Storage - IPI '
db 03 ; 0x03
db 03 ; 0x03
db 'Storage - RAID '
db 04 ; 0x04
db 'Storage - ATA with DMA '
db 05 ; 0x05
db 04 ; 0x04
db ' ' ;Storage - ATA with DMA
db 05 ; 0x05
db 'Storage - Serial ATA '
db 06 ; 0x06
db 06 ; 0x06
db 'Storage - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class2:
db 'Network - Ethernet '
db 00 ; 0x0
db 00 ; 0x0
db 'Network - Token Ring '
db 01 ; 0x1
db 01 ; 0x1
db 'Network - FDDI '
db 02 ; 0x2
db 02 ; 0x2
db 'Network - ATM '
db 03 ; 0x3
db 03 ; 0x3
db 'Network - ISDN '
db 04 ; 0x4
db 04 ; 0x4
db 'Network - WorldFip '
db 05 ; 0x5
db 05 ; 0x5
db 'Network - PICMG 2.14 '
db 06 ; 0x6
db 06 ; 0x6
db 'Network - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class3:
db 'Display - VGA controller '
db 00 ; 0x0
db ' ' ;Display - VGA controller
db 00 ; 0x0
db 'Display - XGA controller '
db 01 ; 0x1
db 01 ; 0x1
db 'Display - 3D controller '
db 02 ; 0x2
db 02 ; 0x2
db 'Display - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class4:
db 'Multimedia - Video '
db 00 ; 0x0
db 00 ; 0x0
db 'Multimedia - Audio '
db 01 ; 0x1
db 01 ; 0x1
db 'Multimedia - Computer telephony '
db 02 ; 0x2
db 02 ; 0x2
db 'Multimedia - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class5:
db 'Memory - RAM '
db 00 ; 0x0
db 00 ; 0x0
db 'Memory- Flash memory '
db 01 ; 0x1
db 01 ; 0x1
db 'Memory - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class6:
db 'Bridge - CPU/PCI '
db 00 ; 0x00
db 00 ; 0x00
db 'Bridge - PCI/ISA '
db 01 ; 0x01
db 01 ; 0x01
db 'Bridge - PCI/EISA '
db 02 ; 0x02
db 02 ; 0x02
db 'Bridge - PCI/MCA '
db 03 ; 0x03
db 'Bridge - PCI/PCI '
db 04 ; 0x04
db 03 ; 0x03
db ' ';Bridge - PCI/PCI
db 04 ; 0x04
db 'Bridge - PCMCIA '
db 05 ; 0x05
db 05 ; 0x05
db 'Bridge - NuBus '
db 06 ; 0x06
db 06 ; 0x06
db 'Bridge - CardBus '
db 07 ; 0x07
db 07 ; 0x07
db 'Bridge - RACEway '
db 08 ; 0x08
db 'Bridge - Semi-transpar. PCI/PCI '
db 09 ; 0x09
db 08 ; 0x08
db ' '; Bridge - Semi-transpar. PCI/PCI
db 09 ; 0x09
db 'Bridge - InfiniBand/PCI '
db 10 ; 0x0A
db 10 ; 0x0A
db 'Bridge - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class7:
db 'Communication - Serial '
db 00 ; 0x0
db 'Communication - Parallel '
db 01 ; 0x1
db ' ';Communication - Serial
db 00 ; 0x0
db ' ';Communication - Parallel
db 01 ; 0x1
db 'Communication - Multiport Serial'
db 02 ; 0x2
db 'Communication - Modem '
db 03 ; 0x3
db 02 ; 0x2
db ' ';Communication - Modem
db 03 ; 0x3
db 'Communication - GPIB '
db 04 ; 0x4
db 04 ; 0x4
db 'Communication - Smart Card '
db 05 ; 0x5
db 05 ; 0x5
db 'Communication - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class8:
db 'System - PIC '
db 00 ; 0x0
db 'System - DMAC '
db 01 ; 0x1
db 'System - Timer '
db 02 ; 0x2
db 'System - RTC '
db 03 ; 0x3
db ' ' ;System - PIC
db 00 ; 0x0
db ' ' ;System - DMAC
db 01 ; 0x1
db ' ' ;System - Timer
db 02 ; 0x2
db ' ' ;System - RTC
db 03 ; 0x3
db 'System - PCI Hot-Plug '
db 04 ; 0x4
db 04 ; 0x4
db 'System - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class9:
db 'Input - Keyboard '
db 00 ; 0x0
db 00 ; 0x0
db 'Input - Digitazer (pen) '
db 01 ; 0x1
db 01 ; 0x1
db 'Input - Mouse '
db 02 ; 0x2
db 02 ; 0x2
db 'Input - Scanner '
db 03 ; 0x3
db 'Input - Gameport '
db 04 ; 0x4
db 03 ; 0x3
db ' ' ; Input - Gameport
db 04 ; 0x4
db 'Input - misc '
db 128 ; 0x80
db 128 ; 0x80
 
ClassA:
db 'Docking - Generic station '
db 00 ; 0x0
db 00 ; 0x0
db 'Docking - misc '
db 128 ; 0x80
db 128 ; 0x80
 
 
ClassB:
db 'Processor - 386 '
db 00 ; 0x0
db 00 ; 0x0
db 'Processor - 486 '
db 01 ; 0x1
db 01 ; 0x1
db 'Processor - Pentium '
db 02 ; 0x2
db 02 ; 0x2
db 'Processor - Alpha '
db 16 ; 0x10
db 16 ; 0x10
db 'Processor - PowerPC '
db 32 ; 0x20
db 32 ; 0x20
db 'Processor - MIPS '
db 48 ; 0x30
db 48 ; 0x30
db 'Processor - Co-processor '
db 64 ; 0x40
db 64 ; 0x40
 
ClassC:
db 'Serial Bus - FireWire '
db 00 ; 0x0
db ' ' ;Serial Bus - FireWire
db 00 ; 0x0
db 'Serial Bus - ACCESS.bus '
db 01 ; 0x1
db 01 ; 0x1
db 'Serial Bus - SSA '
db 02 ; 0x2
db 'Serial Bus - USB/USB2 '
db 03 ; 0x3
db 02 ; 0x2
db ' ' ;Serial Bus - USB/USB2
db 03 ; 0x3
db 'Serial Bus - Fibre Channel '
db 04 ; 0x4
db 04 ; 0x4
db 'Serial Bus - SMBus '
db 05 ; 0x5
db 05 ; 0x5
db 'Serial Bus - InfiniBand '
db 06 ; 0x6
db 'Serial Bus - IPMI '
db 07 ; 0x7
db 06 ; 0x6
db ' ' ;Serial Bus - IPMI
db 07 ; 0x7
db 'Serial Bus - SERCOS '
db 08 ; 0x8
db 08 ; 0x8
db 'Serial Bus - CANbus '
db 09 ; 0x9
db 09 ; 0x9
 
ClassD:
db 'Wireless - iRDA '
db 00 ; 0x0
db 00 ; 0x0
db 'Wireless - Consumer IR '
db 01 ; 0x1
db 01 ; 0x1
db 'Wireless - RF '
db 16 ; 0x10
db 16 ; 0x10
db 'Wireless - Bluetooth '
db 17 ; 0x11
db 17 ; 0x11
db 'Wireless - Broadband '
db 18 ; 0x12
db 18 ; 0x12
db 'Wireless - Ethernet (802.11a) '
db 32 ; 0x20
db 32 ; 0x20
db 'Wireless - Ethernet (802.11b) '
db 33 ; 0x21
db 33 ; 0x21
db 'Wireless - misc '
db 128 ; 0x80
db 128 ; 0x80
 
ClassE:
db 'Intelligent I/O - I/O contr. '
db 00 ; 0x0
db ' ' ;Intelligent I/O - I/O contr.
db 00 ; 0x0
 
ClassF:
db 'Satellite Communication - TV '
db 01 ; 0x1
db 01 ; 0x1
db 'Satellite Communication - Audio '
db 02 ; 0x2
db 02 ; 0x2
db 'Satellite Communication - Voice '
db 03 ; 0x3
db 03 ; 0x3
db 'Satellite Communication - Data '
db 04 ; 0x4
db 04 ; 0x4
 
Class10:
db 'En/Decryption - Network&comput. '
db 00 ; 0x0
db 00 ; 0x0
db 'En/Decryption - Entertainment '
db 16 ; 0x10
db 16 ; 0x10
db 'En/Decryption - misc '
db 128 ; 0x80
db 128 ; 0x80
 
Class11:
db 'DSP - DPIO modules '
db 00 ; 0x0
db 00 ; 0x0
db 'DSP - Performance counters '
db 01 ; 0x1
db 'DSP - Sync./Test/Measurement '
db 16 ; 0x10
db 01 ; 0x1
db 'DSP - Sync./Test/Measurement '
db 16 ; 0x10
db 'DSP - Managamant card '
db 32 ; 0x20
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,266 → 1,311
; new application structure
macro meos_app_start
{
use32
org 0x0
;--- ¤à㣨¥ ¬ ªà®áë ---
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'
 
db 'MENUET01'
dd 0x01
dd __start
dd __end
dd __memory
dd __stack
include 'lang.inc'
 
if used __params & ~defined __params
dd __params
else
dd 0x0
end if
;--- § £®«®¢®ª ---
macro meos_header par_buf,cur_dir_buf
{
use32
org 0x0
 
dd 0x0
}
MEOS_APP_START fix meos_app_start
db 'MENUET01'
dd 0x01
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
}
 
macro code
{
__start:
}
CODE fix code
;--- ®¯à¥¤¥«¨âì â®çªã ¢å®¤  ---
macro app_start
{
__app_start:
}
 
macro data
{
__data:
}
DATA fix data
;--- ®¯à¥¤¥«¨âì ª®­¥æ ¯à¨«®¦¥­¨ï ¨ à §¬¥à á⥪  ---
macro app_end stack_size
{
if <stack_size> eq <>
rb 1024
else
rb stack_size
end if
__app_end:
}
 
macro udata
{
if used __params & ~defined __params
__params:
db 0
__end:
rb 255
else
__end:
end if
__udata:
}
UDATA fix udata
;--- § ¢¥àè¨âì ⥪ã騩 ¯®â®ª ---
macro app_close
{
xor eax,eax
dec eax
int 0x40
}
 
macro meos_app_end
{
align 32
rb 2048
__stack:
__memory:
}
MEOS_APP_END fix meos_app_end
;--- ¯®«ãç¨âì ª®¤ ­ ¦ â®© ª« ¢¨è¨ ---
macro get_key
{
mov eax,2
int 0x40
}
 
;--- ¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨ ---
macro get_pressed_button
{
mov eax,17
int 0x40
}
 
; 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
}
;--- á®®¡é¨âì á¨á⥬¥ ® ­ ç «¥ ¯¥à¥à¨á®¢ª¨ ®ª­  ---
macro start_draw_window
{
mov eax,12
xor ebx,ebx
inc ebx
int 0x40
}
 
;--- á®®¡é¨âì á¨á⥬¥ ® § ¢¥à襭¨¨ ¯¥à¥à¨á®¢ª¨ ®ª­  ---
macro stop_draw_window
{
mov eax,12
mov ebx,2
int 0x40
}
 
; 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 set_events_mask mask
{
mov eax,40
mov ebx,mask
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_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
int 0x40
}
 
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
}
 
; easy system call macro
macro mpack dest, hsrc, lsrc
macro get_scin_height
{
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,48
mov ebx,4
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
end if
macro min_window
{
mov eax,18
mov ebx,10
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
int 0x40
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 get_active_window
{
mov eax,18
mov ebx,7
int 0x40
}
 
macro delay time
{
mov eax,5
if <time> eq <>
else
mov ebx,time
end if
int 0x40
}
 
;--- ®¦¨¤ âì ᮡëâ¨ï ---
macro wait_event redraw,key,button,mouse,ipc,other
{
mov eax,10
int 0x40
dec ax
if <redraw> eq <>
else
jz redraw
end if
dec ax
if <key> eq <>
else
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 get_screen_size
{
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
}
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
macro resize_mem mem_size
{
mov eax,64
xor ebx,ebx
inc ebx
if <mem_size> eq <>
else
mov ecx,mem_size
end if
int 0x40
}
 
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
}
evm_redraw equ 1
evm_key equ 10b
evm_button equ 100b
evm_mouse equ 100000b
evm_ipc equ 1000000b
 
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
}
struc procinfo
{
.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)
}
 
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 sys_color_table
{
.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
}
 
struc screen_size
{
.height: dw ?
.width: dw ?
}
 
macro struct name
{
virtual at 0
name name
sizeof.#name = $ - name
end virtual
}
struc screen_prop
{
.height: dw ? ;+0
.width: dw ? ;+2
.bitspp: dw ? ;+4
.bytesps: dd ?;+6
}
 
; structures used in MeOS
struc process_information
{
.cpu_usage dd ? ; +0
.window_stack_position dw ? ; +4
.window_stack_value dw ? ; +6
.not_used1 dw ? ; +8
.process_name rb 12 ; +10
.memory_start dd ? ; +22
.used_memory dd ? ; +26
.PID dd ? ; +30
.x_start dd ? ; +34
.y_start dd ? ; +38
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
rb (1024-52)
}
struct process_information
struc ipc_buffer size
{
.block: dd ?
.in_use: dd ?
.messages: rb size
}
 
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
;--- æ¢¥â  ---
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
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
still:
wait_event red,key,button,mouse,,still
key:
get_key
cmp ah,13
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
 
read_par:
mov esi,par
mov edi,fn
mov ecx,256
rep movsb
run:
xor eax,eax
mov edi,file_info.name
mov ecx,512
rep stosb
mov edi,run_par
mov ecx,256
rep stosb
 
; <--- include all MeOS stuff --->
include "lang.inc"
include "macros.inc"
;;;lang fix en
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:
 
jmp copy_par
 
; <--- start of MenuetOS application --->
MEOS_APP_START
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:
 
;include "DEBUG.INC"
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:
 
; <--- start of code --->
CODE
call draw_window ; at first create and draw the window
mov eax,70
mov ebx,file_info
int 0x40
 
wait_event: ; main cycle
mcall 10
;cmp eax,0
;jg error
bt eax,31
je error
jmp still
close:
app_close
 
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
error:
 
jmp wait_event ; else return to the start of main cycle
macro cmp_err code,text_ptr
{
cmp al,code
jne @f
mov [status],text_ptr
;jmp .draw_status
@@:
}
neg eax
 
;test al,al
;jz close
 
redraw: ; redraw event handler
call draw_window
jmp wait_event
cmp_err 3,bad_file_sys
 
cmp_err 5,file_not_find
 
key: ; key event handler
mcall 2
cmp_err 9,bad_fat_table
 
cmp ah, 13
je _run
cmp ah, 8
je .backspace
cmp_err 10,acces_denyied
 
mov bl, ah
mov eax, [position]
mov [filename + eax], bl
inc [position]
call draw_string
cmp_err 11,device_error
 
jmp wait_event
cmp_err 30,out_of_memory
 
.backspace:
xor eax, eax
cmp [position], eax
je wait_event
dec [position]
call draw_string
jmp wait_event
cmp_err 31,file_not_executable
 
cmp_err 32,many_processes
 
button: ; button event handler
mcall 17
.draw_status:
call draw_status
jmp still
 
cmp ah, 10
je _run
 
dec ah
jne wait_event ; return if button id != 1
 
_exit:
or eax, -1 ; exit application
int 0x40
 
 
_run:
mcall 58, fileinfo
; dps "58th function returned "
; dpd eax
; newline
jmp _exit
 
 
draw_window:
mcall 12, 1
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
 
mcall 14
and eax, 0xFFFF
sub eax, 100
shl eax, 16
add eax, 80
mov ecx, eax
get_procinfo app
 
mov ebx, 148*65536+400 ; (window_cx)*65536+(window_sx)
mov edx, 0x03DDDDDD ; work area color & window type 3
mcall 0
mov ax,[app.width]
sub ax,20
mov [input_fn.width],ax
mov [run_but.width],ax
 
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
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
 
mpack ebx, 10, 26
mov ecx, 0
mov edx, message
mov esi, message.size
mcall
draw_edit_box input_fn
draw_txt_button run_but
 
mpack ebx, 385-(runbtn.size*6), runbtn.size*6+4
mpack ecx, 56, 14
mov edx, 10
mov esi, 0xa0a0a0
mcall 8
call draw_status_text
 
; mpack ebx, 385-runbtn.size*6-findbtn.size*6-8, findbtn.size*6+4
; inc edx
; mcall 8
 
; mpack ebx, 388-runbtn.size*6-findbtn.size*6-7, 59
; mov ecx, 0
; mov edx, findbtn
; mov esi, findbtn.size
; mcall 4
 
mpack ebx, 388-runbtn.size*6, 59
mov ecx, 0
mov edx, runbtn
mov esi, runbtn.size
mcall 4
 
call draw_string
 
mcall 12, 2
stop_draw_window
ret
 
 
draw_string:
mpack ebx, 10, 380
mpack ecx, 38, 14
mov edx, 0xA0A0A0
mcall 13
 
mpack ebx, 14, 41
mov ecx, 0
mov edx, filename
mov esi, [position]
mcall 4
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
 
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
 
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
 
; <--- initialised data --->
DATA
status dd hello
 
position dd filename.size
file_info:
.mode dd 7
.flags dd 0
.par dd run_par
dd 0,0
.name rb 512
 
lsz header,\
ru, "‡ ¯ã᪠¯à®£à ¬¬ë",\
en, "Start program"
flags dw ?
 
lsz message,\
ru, "‚¢¥¤¨â¥ ¯ãâì ª ä ©«ã:",\
en, "Enter path to file:"
fn rb 512
 
; lsz findbtn,\
; ru, " ©â¨...",\
; en, "Find..."
 
lsz runbtn,\
ru, "‡ ¯ãáâ¨âì",\
en, "Run"
 
 
fileinfo:
.mode dd 16
dd 0
.param dd 0
dd 0
.workarea dd workarea
 
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