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