Subversion Repositories Kolibri OS

Rev

Rev 6485 | Blame | Last modification | View Log | Download | RSS feed

  1. ;******************************************************************************
  2. ; project name:  CPUID                                                        *
  3. ; platform:      KolibriOS, x86 (IA-32), x86-64 achitectures                  *
  4. ; compiler:      flat assembler 1.70.03                                       *
  5. ; version:       2.29                                                         *
  6. ; last update:   12 October 2014                                              *
  7. ; maintained by: Sergey Kuzmin aka Wildwest                                   *
  8. ; e-mail:        kuzmin_serg@list.ru                                          *
  9. ; site:          http://coolthemes.narod.ru/files.html                        *
  10. ; license:       Copyright 2004-2014 Sergey Kuzmin and co-authors             *
  11. ;                Rules:                                                       *
  12. ;                1)you can use pieces of code in your project, but should     *
  13. ;                mention the original author (include copyright notice);      *
  14. ;                2)if you modify CPUID (improve, port, translate,  etc) send   *
  15. ;                your changes to the maintainer or make about post changes    *
  16. ;                at forum  http://board.kolibrios.org/viewtopic.php?f=42&t=594*
  17. ;-----------------------------------------------------------------------------*
  18. ; English comments                                                            *
  19. ;------------------------------------------------------------------------------
  20. use32
  21.   org    0x0
  22.   db     'MENUET01'
  23.   dd     0x01
  24.   dd     START
  25.   dd     I_END
  26.   dd U_END+4096
  27.   dd U_END+4096
  28.   dd     0x0
  29.   dd     path
  30.  
  31. include 'lang.inc'
  32. include 'draw.inc'
  33. include 'brand.inc'     ; brand ID decoding
  34. include 'caches.inc'    ; L1 and L2 cashes decoding for Intel
  35. include 'multipli.inc'  ; multiplier decoding
  36. include 'features.inc'  ; features decoding
  37. include 'logos.inc'     ; include file where gif's are stored
  38. include 'rsatest.inc'
  39. include 'variable.inc'
  40. include '..\..\..\macros.inc'
  41. include '..\..\..\develop\libraries\box_lib\load_lib.mac'
  42.  
  43. @use_library
  44.  
  45. START:
  46.         mcall   68,11
  47.         mcall   66,1,1
  48.  
  49. load_libraries l_libs_start,end_l_libs
  50. ;-----------------------------------------------------------------------------
  51. ;OpenDialog     initialisation
  52.         push    dword OpenDialog_data
  53.         call    [OpenDialog_Init]
  54.  
  55.         mov     edi,filename_area
  56.         mov     esi,start_temp_file_name
  57.         call    copy_file_name_path
  58. ;-----------------------------------------------------------------------------
  59.         mcall   68,12,4096*8 ; 16 Kb - I hope this will be enough for store of data
  60.         mov     [store_text_area_start],eax
  61.  
  62.  
  63. ;------------
  64. CYCLES:
  65. ;   CPU speed
  66.     mov eax, 18
  67.     mov ebx,5
  68.     mcall
  69.     mov [total1],eax  ;in Hz,  example 1600490000
  70.     xor  edx,edx
  71.     mov  ebx,1000000
  72.     div  ebx
  73.     mov [total], eax  ; in Mhz,  example 1600
  74.     xor edx, edx
  75.     mov eax, [total1]
  76.     mov ebx, 10000
  77.     div ebx
  78.     mov [ost], eax    ; example 160049
  79.     mov ecx, [total]
  80.     imul ecx, 100
  81.     neg  ecx
  82.     add  ecx, eax
  83.     mov [sot], ecx    ; example 49
  84. ;------------
  85. cpu:                  ;is CPUID supported?
  86.   pushfd              ;push original EFLAGS
  87.   pop eax             ;get original EFLAGS
  88.   mov ebx, eax        ;save original EFLAGS
  89.   xor eax, 00200000h  ;flip 21th bit in EFLAGS
  90.   push eax            ;save new EFLAGS value on stack
  91.   popfd               ;replace current EFLAGS value
  92.   pushfd              ;get new EFLAGS
  93.   pop eax             ;store new EFLAGS in EAX
  94.   cmp eax, ebx        ;compare values of 21th bit
  95.   jz NO_CPUID         ;CPUID isn't supported
  96. ;------------
  97. CPUNAME:              ; VENDOR
  98.     mov   eax,0       ; eax=0
  99.     cpuid
  100.  
  101.     mov [stdc], eax   ; number of calls
  102.     mov   [cpuname+ 12],ebx
  103.     mov   [cpuname+ 16],edx
  104.     mov   [cpuname+ 20],ecx
  105.     mov   [smallvendor],ecx
  106.  
  107. ; for various vendors we should later use different methods
  108.  
  109. ;Decoding cache L1 and L2 for Intel
  110.  
  111.   cmp ecx, 'ntel'
  112.   jne cpu1     ;is not Intel
  113.  
  114. ;Starting L1, L2, L3 caches detection (Intel made it VERY HARD)
  115.  
  116. mov eax, 2
  117. cpuid
  118.  
  119. mov [che], al        ; number of calls
  120. multik:
  121.  
  122. .eaxl:
  123. test  eax, eax       ;    Test bit 31
  124. js    .ebxl          ;    <> 0 =>invalid values
  125. call decodecache24
  126. .ebxl:
  127. test  ebx, ebx
  128. js    .ecxl
  129. mov eax, ebx
  130. call decodecache32
  131. .ecxl:
  132. test  ecx, ecx
  133. js    .edxl
  134. mov eax, ecx
  135. call decodecache32
  136. .edxl:
  137. test  edx, edx
  138. js    cpu1
  139. mov eax, edx
  140. call decodecache32
  141.  
  142. dec [che]    ; we made all calls
  143. je cpu1
  144.  
  145. multi: ; not yet
  146.  
  147. mov eax, 2  ; so we made call again
  148. cpuid
  149.  
  150. jmp multik
  151.  
  152. ;  FAMILY MODEL STEPPING
  153. cpu1:
  154.     xor eax, eax
  155.     inc eax       ; eax=1
  156.     cpuid
  157.  
  158. mov ecx, eax
  159. shr ecx,8         ;   shift it to the correct position
  160. and ecx,0000000Fh ;   get CPU family
  161. mov dword[f],ecx
  162.  
  163. mov ecx, eax
  164. shr ecx,4
  165. and ecx,0000000Fh ;    get CPU model
  166. mov dword[m],ecx
  167.  
  168. mov ecx, eax
  169. and ecx,0000000Fh ;   get CPU stepping
  170. mov dword[s],ecx
  171.  
  172. ;-
  173. mov ecx, eax      ; get Type
  174. shl ecx, 18
  175. shr ecx,30
  176. ;and ecx, 0000000Fh ; only two lower bits can be nonzero
  177. mov dword[t], ecx
  178. ;=======================================================
  179.  
  180. cmp dword[smallvendor], 'cAMD'
  181. jz maybe_athlon
  182. cmp dword[smallvendor], 'ntel'
  183. jnz no_full   ; if not AMD or Intel
  184.  
  185. ;detect_it:
  186. ;cmp [f], 0Fh
  187. ;jne no_full   fixed calculation of extended model for Intel
  188.  
  189. full:
  190.  
  191. mov ecx, eax          ; get Extended model
  192. shr ecx,16            ;shift it to the correct position
  193. and ecx, 0000000Fh
  194. shl ecx, 4
  195. mov dword[newpc],ecx     ;  this value for old pc=0 and for new pc>0
  196. add ecx, [m]
  197. mov dword[em],ecx     ;  effective    model
  198.  
  199. mov ecx, eax          ; get Extended family
  200. shr ecx, 20           ;shift it to the correct position
  201. and ecx, 000000FFh
  202. add ecx, [f]
  203. mov dword[ef],ecx     ; effective family
  204.  
  205.  
  206. jmp fut
  207.  
  208. no_full:
  209.  
  210. mov ecx, [m]
  211. mov [em], ecx
  212.  
  213. mov ecx, [f]
  214. mov [ef], ecx
  215.  
  216. jmp fut
  217.  
  218. maybe_athlon:
  219. mov eax, 0x80000001               ; CPUID ext. function 0x80000001
  220. cpuid
  221. mov ecx, eax
  222. shr ecx,8         ;   shift it to the correct position
  223. and ecx,0000000Fh ;   get CPU family
  224. mov dword[ef],ecx
  225.  
  226. mov ecx, eax
  227. shr ecx,4
  228. and ecx,0000000Fh ;    get CPU model
  229. mov dword[em],ecx
  230.  
  231. fut:
  232.  
  233. call decode_sse3_5
  234.  
  235.  
  236.  
  237. ;call decode_sse3_5
  238. ;-
  239.     call decode_extended
  240.  
  241.     mov   eax,$80000000
  242.     cpuid
  243.  
  244.     mov   [extc], eax  ; max number of calls
  245.  
  246.   test  eax, $80000000 ;// Test bit 31
  247.   jz .noname
  248.  
  249.   cmp  eax,$80000003
  250.   ja .mynameis
  251.   jmp .noname
  252.  
  253. .mynameis:
  254.     mov       eax,$80000002
  255.     cpuid
  256.     mov   [myname],eax
  257.     mov   [myname+4],ebx
  258.     mov   [myname+8],ecx
  259.     mov   [myname+12],edx
  260.     mov   eax,$80000003
  261.     cpuid
  262.     mov   [myname+16],eax
  263.     mov   [myname+20],ebx
  264.     mov   [myname+24],ecx
  265.     mov   [myname+28],edx
  266.     mov   eax,$80000004
  267.     cpuid
  268.     mov   [myname+32],eax
  269.     mov   [myname+36],ebx
  270.     mov   [myname+40],ecx
  271.     mov   [myname+44],edx
  272.     jmp   red
  273.  
  274. .noname:
  275. red:
  276.  
  277. ;mov byte [multiplier], 115;     ; for testing
  278.  
  279. call decode_sse3
  280.  
  281. call multipl                          ; get multiplier
  282. mov byte [multiplier], cl
  283.  
  284. mov   dword [freqbb], 0
  285. mov   dword [freqll], 0
  286.  
  287. mov   ebx, dword [multiplier]
  288. test  ebx, ebx
  289. jz output
  290.  
  291. calc:
  292.  
  293. mov eax,dword [ost]   ; example 166474
  294. imul eax, 10          ; example 1664740
  295. xor edx,edx
  296. div ebx               ; get system clock (if multiplier detected)
  297.  
  298. xor edx, edx                    ; example eax=16647
  299. mov ebx, 100
  300. div ebx
  301. mov dword [freqbb], eax         ; example 166
  302. mov dword [freqll], edx         ; example 47
  303.  
  304. xor edx, edx
  305.     mov eax,dword[multiplier]  ; example 115
  306.     mov  ebx,10
  307.     div  ebx
  308.     mov dword[multb], eax  ;   example 11
  309.     mov dword[multa], edx    ; example 5
  310.  
  311. output:
  312.  
  313.    call draw_window    ;     Draw window
  314.  
  315. ;HRERE
  316.  
  317. PROCCORE:    ;   Who are you?
  318. ; Intel - "GenuineIntel"           +
  319. ; AMD - "AuthenticAMD"             +
  320. ; Cyrix - "CyrixInstead"           +
  321. ; UMC - "UMC UMC UMC "
  322. ; NexGen - "NexGenDriven"
  323. ; Centaur - "CentaurHauls"         +
  324. ; Rise Technology - "RiseRiseRise"
  325. ; SiS - "SiS SiS SiS "
  326. ; Transmeta - "GenuineTMx86"       +
  327. ; National Semiconductor - "Geode by NSC"
  328. ; Vortex - "Vortex86 SoC"       + initial support
  329.   cmp dword[smallvendor], 'ntel'   ;1
  330.   jz Intel
  331.   cmp dword[smallvendor], 'cAMD'   ;2
  332.   jz AMD
  333.   cmp dword[smallvendor], 'tead'   ;3
  334.   jz Cyrix
  335.   cmp dword[smallvendor], 'auls'    ;4
  336.   jz Centaur
  337.   cmp dword[smallvendor], 'Mx86'    ;5
  338.   jz Transmeta
  339.   cmp dword[smallvendor], ' SoC'    ;6
  340.   jz Vortex
  341.  
  342. ; cmp ecx, 'UMC '
  343. ; jz .UMC
  344. ; cmp ecx, 'iven'
  345. ; jz .NexGen
  346. ; cmp ecx, 'Rise'
  347. ;  jz .Rise
  348. ; cmp ecx, 'SiS '
  349. ; jz .SiS
  350. ; cmp ecx, ' NSC'
  351. ; jz .NSC
  352. ; jmp Other   ;  I don't know what to do with you...
  353. Other:
  354. Text 75,70,0x00000000,other, otherlen-other
  355.  
  356. mov esi, other
  357. mov edi, [saveproc]
  358. call concatname
  359.  
  360.     jmp MMXtest
  361. ;-------------------------
  362.  
  363. AMD:
  364.  
  365. ;-------------------------------------------------------------------------------
  366.  
  367. Text 15, 190,0x00000000,cache, cachelen-cache
  368.  
  369. Text 75,70,,AMDn, AMDnlen-AMDn
  370. mov esi, AMDnNew
  371. mov edi, saveproc
  372. call concatname
  373.         mov     esi, amd
  374.         call    load_gif
  375. PutImage 135,107,201,49,img_area+8
  376. MOV [codeN], 2
  377. ;         place   size
  378.  
  379. ; Relax, man. AMD made PRETTY SIMPLE cache detection routine
  380. ;CACHE1:
  381. mov eax, 80000005h
  382.     cpuid
  383.  
  384. movzx eax, cl
  385. mov [lineld], eax
  386.  
  387. mov eax, ecx
  388. ;shl eax, 8
  389. ;shr eax, 24
  390.  
  391. and eax,00FF0000h
  392. shr eax, 16
  393. mov [wayld], eax
  394.  
  395. shr ecx, 24
  396. mov [L1d], ecx
  397.  
  398.  
  399. movzx eax, dl
  400. mov [lineli], eax
  401.  
  402. mov eax, edx
  403. ;shl eax, 8
  404. ;shr eax, 24
  405.  
  406. and eax,00FF0000h
  407. shr eax, 16
  408. mov [wayli], eax
  409.  
  410.  
  411. shr edx, 24
  412. mov [L1i], edx
  413.  
  414.  
  415. ;CACHE2:
  416. mov eax, 80000006h
  417.     cpuid
  418.  
  419. movzx eax, cl
  420. mov dword[linel2], eax
  421.  
  422. push ecx
  423. shr ecx, 12+1
  424. and ecx, 0x7
  425. mov eax, 1
  426. shl eax, cl
  427. mov dword [wayl2], eax
  428. pop ecx
  429.  
  430. shr ecx, 16
  431. mov [L2],ecx
  432.  
  433. ;CACHE3: edx provides l3
  434.  
  435. mov eax, 80000006h
  436.     cpuid
  437.  
  438. movzx eax, cl       ;mov cl to eax, zero extend; cl is counter reg for loop,shifts
  439. mov dword[linel3], eax
  440.  
  441. push edx
  442. shr edx, 12+1
  443. and edx, 0x7
  444. mov eax, 1
  445. shl eax, cl
  446. mov dword [wayl3], eax
  447. pop edx
  448.  
  449. shr edx, 18
  450. mov [L3],ecx
  451.  
  452.     cmp [f], $5
  453.     jz .fiv
  454.     cmp [f], $6
  455.     jz .si
  456.     cmp [f], $F
  457.     jz fif
  458.     cmp [f], $10   ;family 16, 010h,
  459.     jz ten
  460.  
  461.  
  462. .fiv:    ;     Family=5
  463.         mov     [micron], 50
  464.         mov     edx, A50
  465.         cmp     [m], $0
  466.         jz      @f
  467.         mov     [micron], 35
  468.         mov     edx, A51
  469.         cmp     [m], $1
  470.         jz      @f
  471.         mov     edx, A52
  472.         cmp     [m], $2
  473.         jz      @f
  474.         mov     edx, A53
  475.         cmp     [m], $3
  476.         jz      @f
  477.         mov     [micron], 30
  478.         mov     edx, A56
  479.         cmp     [m], $6
  480.         jz      @f
  481.         mov     [micron], 25
  482.         mov     edx, A57
  483.         cmp     [m], $7
  484.         jz      @f
  485.         mov     edx, A58
  486.         cmp     [m], $8
  487.         jz      @f
  488.         mov     edx, A59
  489.         cmp     [m], $9
  490.         jz      @f
  491.         mov     [micron], 18
  492.         mov     edx, A5D
  493. @@:
  494.         jmp     @f
  495.  
  496. .si:   ;    Family=6
  497.         mov     [micron], 25
  498.         mov     edx, At1
  499.         cmp     [m], $1
  500.         jz      @f
  501.         mov     [micron], 18
  502.         mov     edx, At2
  503.         cmp     [m], $2
  504.         jz      @f
  505.         mov     edx, At3
  506.         cmp     [m], $3
  507.         jz      @f
  508.         mov     edx, At4
  509.         cmp     [m], $4
  510.         jz      @f
  511.         cmp     [m], $6
  512.         jz      A6
  513.         mov     [micron], 13
  514.         mov     edx, At7
  515.         cmp     [m], $7
  516.         jz      @f
  517.         cmp     [m], $8
  518.         jz      A8
  519.         jmp     AA
  520. @@:
  521.         Text    100,70,0x80000000
  522.         jmp     MMXtest
  523. A6:
  524. ;mov     [FRS], 266  ;!!!!!!
  525. ;Number  315,90,0,3,dword [FRS],0x000000; MHz
  526.  
  527.         call    newrating; !!!!
  528.  
  529.         Text    245,70,0x00000000,pr, prlen-pr
  530.         Number  310,70,0,4,dword [rating],0x000000
  531.         mov     edx, At6
  532.         jmp     @b
  533.  
  534. A8:
  535.  
  536. ;mov     [FRS], 266     ;!!!!!!
  537. ;Number  315,90,0,3,dword [FRS],0x000000; MHz
  538.  
  539.         cmp     [L2], 256
  540.         jl      .App  ; Applebred
  541.  
  542.         call    newrating;!!!!
  543.  
  544.         Text    245,70,0x00000000,pr, prlen-pr
  545.         Number  310,70,0,4,dword [rating],0x000000
  546.         mov     edx, At8
  547.         jmp     @b
  548.  
  549. .App:
  550.         mov     edx, At8a
  551.         jmp     @b
  552.  
  553. AA:
  554.  
  555. ;        mov     [FRS], 333; !!!!
  556.         Text    245,70,0x00000000,pr, prlen-pr
  557.  
  558. ;        Number  315,90,0,3,dword [FRS],0x000000; MHz
  559.  
  560.         mov     edx, Atat
  561.         cmp     [L2], 256
  562.         jl      .Tho ; Thorton
  563.         mov     edx, Ata
  564. .Tho:
  565.         push    edx
  566.  
  567.         call    newrating;!!!!!
  568.  
  569.         Number  310,70,0,4,dword [rating],0x000000
  570.         pop     edx
  571.         jmp     @b
  572.  
  573. fif:  ;  AMD-64    Family=15
  574.  
  575. ;here is a need to rewrite detection of AMD F-th family according to "Revision Guide for
  576. ;AMD AthlonTM 64 and  AMD OpteronTM  Processors" 25759.pdf
  577.  
  578.  
  579.    cmp [m],$1   ;Dual-core Opteron
  580.     jz   AF1.
  581.    cmp [m],$3   ;Toledo 1024 0.09
  582.     jz  AF3.
  583.    cmp [m],$4   ;Athlon 64 Mobile Athlon 64 FX  ClawHammer (1024) 0.13
  584.     jz AF4.
  585.    cmp [m],$5   ;Opteron Athlon 64 FX 0.13 (1024)
  586.     jz AF5.
  587.    cmp [m],$7   ;Athlon 64 Athlon 64 FX  Clawhammer(1024) 0.13   Sledgehammer(1024)  0.13  // SSE3+ SanDiego(1024)
  588.     jz AF7.
  589.    cmp [m],$8   ;Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13
  590.     jz AF8.
  591.    cmp [m],$B   ;Athlon 64
  592.     jz AFB.
  593.    cmp [m],$C   ;Athlon 64 Newcastle(512) 0.13  Sempron> Paris (256)   0.13  |SSE3+ Sempron >  Palermo FC0 0.09  // (Venice)
  594.     jz AFC.
  595.    cmp [m],$E   ;Athlon 64
  596.     jz AFE.
  597.    cmp [m],$F   ;Athlon 64 Winchester(512) |SSE3+ SanDiego(1024)  Venice (512)  Palermo (256) 0.09
  598.     jz AFF.
  599.     jmp next_generation
  600.  
  601. ten:      ;family = 10h
  602.  
  603. cmp [m],$2
  604.    jz AB23.
  605. cmp [m], $8
  606.    jz AB83.
  607. cmp [m], $9
  608.   jz AB9.
  609. cmp [m], $2
  610.   jz AB8check2.
  611.  
  612. AB8check2.:
  613. cmp [s],03h
  614.     jz AB8right2.
  615. cmp [m],$2
  616.   jz athlonCheck
  617.  
  618. athlonCheck:
  619. cmp [s],03h
  620.     jz athlonKuma
  621.  
  622. cmp [m], $5
  623.  jz AB4.
  624. cmp [m],$1
  625.    jz AB1.
  626. cmp [m],$4
  627.     jz AB8check.
  628.  
  629. AB8check.:
  630. cmp [s],02h
  631.     jz ABC2.
  632. cmp [s],01h
  633.      jz ABC3.
  634. cmp [m], $9
  635.     jz AB6.
  636. cmp [m], $2
  637.     jz AB8check.
  638. cmp [m], 06h
  639.       jz ABM.
  640.  
  641. athlonKuma:
  642.       mov [micron], 65
  643.       Text 100,70,0x00000000,AthlonKuma, AthlonKumalen-AthlonKuma
  644.       mov esi, AthlonKuma
  645.       mov edi, saveproc + 0x4
  646.       call concatname
  647.       jmp MMXtest
  648.  
  649. AB23.:
  650.       mov [micron], 65
  651.       Text 100,70,0x00000000,AB23, AB23len-AB23
  652.       mov esi, AB23
  653.       mov edi, saveproc + 0x4
  654.       call concatname
  655.       jmp MMXtest
  656.  
  657. AB83.:
  658.       mov [micron], 65
  659.       Text 100,70,0x00000000,AB83, AB83len-AB83
  660.       mov esi, AB83
  661.       mov edi, saveproc + 0x4
  662.       call concatname
  663.       jmp MMXtest
  664.  
  665. AB9.:
  666.       mov [micron], 65
  667.       Text 100,70,0x00000000,AB9, AB9len-AB9
  668.       mov esi, AB9
  669.       mov edi, saveproc + 0x4
  670.       call concatname
  671.       jmp MMXtest
  672.  
  673. AB8right2.:
  674.        mov [micron], 65
  675.       Text 100,70,0x00000000,AB8right2, AB8right2len-AB8right2
  676.       mov esi, AB8right2
  677.       mov edi, saveproc + 0x4
  678.       call concatname
  679.       jmp MMXtest
  680.  
  681. AB4.:
  682.       mov [micron], 45
  683.       Text 100,70,0x00000000,AB4, AB4len-AB4
  684.       mov esi, AB4
  685.       mov edi, saveproc + 0x4
  686.       call concatname
  687.       jmp MMXtest
  688.  
  689. AB1.:
  690.       mov [micron], 65
  691.       Text 100,70,0x00000000,AB1, AB1len-AB1
  692.       mov esi, AB1
  693.       mov edi, saveproc + 0x4
  694.       call concatname
  695.       jmp MMXtest
  696.  
  697. ABC2.:
  698.       mov [micron], 45
  699.       Text 100,70,0x00000000,ABC2, ABC2len-ABC2
  700.       mov esi, ABC2
  701.       mov edi, saveproc + 0x4
  702.       call concatname
  703.       jmp MMXtest
  704.  
  705. AB6.:
  706.       mov [micron], 45
  707.       Text 100,70,0x00000000,AB6, AB6len-AB6
  708.       mov esi, AB6
  709.       mov edi, saveproc + 0x4
  710.       call concatname
  711.       jmp MMXtest
  712.  
  713. ABC3.:
  714.       mov [micron], 45
  715.       Text 100,70,0x00000000,ABC3, ABC3len-ABC3
  716.       mov esi, ABC3
  717.       mov edi, saveproc + 0x4
  718.       call concatname
  719.       jmp MMXtest
  720.  
  721. ABM.:
  722.       mov [micron], 45
  723.       Text 100,70,0x00000000,ABM2, ABM2len-ABM
  724.       mov esi, ABM2
  725.       mov edi, saveproc + 0x4
  726.       call concatname
  727.       jmp MMXtest
  728.  
  729. AF1.:
  730.     mov [micron], 09  ;?
  731.     Text 100,70,0x00000000,AF1, AF1len-AF1
  732.     mov esi, AF1
  733.     mov edi, saveproc + 0x4
  734.     call concatname
  735.     jmp MMXtest
  736. AF3.:
  737.     mov [micron], 09
  738.     Text 100,70,0x00000000,AF3, AF3len-AF3
  739.     mov esi, AF3
  740.     mov edi, saveproc + 0x4
  741.     call concatname
  742.     jmp MMXtest
  743. AF4.:
  744.     mov [micron], 13
  745.     Text 100,70,0x00000000,AF4, AF4len-AF4
  746.     mov esi, AF4
  747.     mov edi, saveproc + 0x4
  748.     call concatname
  749.     jmp MMXtest
  750. AF5.:
  751.     mov [micron], 13
  752.     Text 100,70,0x00000000,AF5, AF5len-AF5
  753.     jmp MMXtest
  754.  
  755. AF7.:
  756.     mov [micron], 13
  757.     Text 100,70,0x00000000,AF5, AF5len-AF5
  758.     mov esi, AF5
  759.     mov edi, saveproc + 0x4
  760.     call concatname
  761.     jmp MMXtest
  762.  
  763. AF8.:
  764.    mov [micron], 13
  765.    Text 100,70,0x00000000,AF4, AF4len-AF4
  766.    mov esi, AF4
  767.     mov edi, saveproc + 0x4
  768.     call concatname
  769.    jmp MMXtest
  770.  
  771. AFB.:
  772.     mov [micron], 13
  773.     Text 100,70,0x00000000,AF4, AF4len-AF4
  774.     mov esi, AF4
  775.     mov edi, saveproc + 0x4
  776.     call concatname
  777.  jmp MMXtest
  778.  
  779. AFC.:
  780. cmp [L2], 512
  781. je AFC.n
  782.  
  783. cmp [sse3sup], 1
  784. je AFC.npal
  785.  
  786. AFC.npar:  ; paris
  787.     mov [micron], 13
  788.     Text 100,70,0x00000000,AFCs, AFCslen-AFCs
  789.     mov esi, AFCs
  790.     mov edi, saveproc + 0x4
  791.     call concatname
  792.     jmp MMXtest
  793.  
  794. AFC.npal: ; palermo
  795.     mov [micron], 9
  796.     Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
  797.     mov esi, AFCsp
  798.     mov edi, saveproc + 0x4
  799.     call concatname
  800.     jmp MMXtest
  801.  
  802. AFC.n: ;newcastle
  803.     mov [micron], 13
  804.     Text 100,70,0x00000000,AFC, AFClen-AFC
  805.     mov esi, AFC
  806.     mov edi, saveproc + 0x4
  807.     call concatname
  808.     jmp MMXtest
  809.  
  810. AFE.:   ; error in cpu
  811.  jmp AFC.
  812.  
  813. AFF.:
  814.  
  815. cmp [sse3sup], 1
  816. je .AFFsse
  817.  
  818. .win:
  819. mov [micron], 9    ; winchester
  820. jmp MMXtest
  821.  
  822. .AFFsse:
  823. mov [micron], 9
  824. cmp [L2], 1024
  825. jz .AFs
  826. cmp [L2], 512
  827. jz .AFd
  828. cmp [L2], 256
  829. jz .AFp
  830.  
  831. .AFs:
  832. Text 100,70,0x00000000,AFS, AFSlen-AFS
  833.  mov esi, AFS
  834.  mov edi, saveproc + 0x4
  835.  call concatname
  836.  jmp MMXtest
  837.  
  838. .AFd:
  839. Text 100,70,0x00000000,AFV, AFVlen-AFV
  840. mov esi, AFV
  841.     mov edi, saveproc + 0x4
  842.     call concatname
  843.  jmp MMXtest
  844.  
  845. .AFp:
  846. Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
  847. mov esi, AFCsp
  848.     mov edi, saveproc + 0x4
  849.     call concatname
  850.  jmp MMXtest
  851. ;-----------------------------------------------
  852. Intel:
  853. mov [codeN], $1
  854. Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
  855.         mov esi, IntelnNew
  856.         mov edi, saveproc
  857.         call concatname
  858.         mov     esi, intel
  859.         call    load_gif
  860. PutImage 135,107,201,49,img_area+8
  861.  
  862. det:
  863.     cmp [f], $5
  864.     jz five
  865.     cmp [f], $6
  866.     jz six
  867.     cmp [f], $7
  868.     jz sev
  869.     cmp [f], $F
  870.     jz fift
  871. five:        ;Family=5
  872.  
  873. Text 15, 190,0x00000000,cache, cachelen-cache
  874.  
  875.     cmp [m],$0
  876.     jz .I0
  877.     cmp [m],$1
  878.     jz .I1
  879.     cmp [m],$2
  880.     jz .I2
  881.     cmp [m],$3
  882.     jz .I3
  883.     cmp [m],$4
  884.     jz .I4
  885.     cmp [m],$7
  886.     jz .I7
  887.     cmp [m],$8
  888.     jz .I8
  889. .I0:
  890. Text 110,70,0x00000000,P50, P50len-P50
  891.     mov esi, P50
  892.     mov edi, saveproc + 0x6
  893.     call concatname
  894.    mov [L1d], 8
  895.    mov [L1i], 8
  896.    mov [L2], 256
  897.    mov [micron], 80
  898.  jmp MMXtest
  899. .I1:
  900. Text 110,70,0x00000000,P5, P5len-P5
  901. mov esi, P5
  902.     mov edi, saveproc + 0x6
  903.     call concatname
  904.    mov [L1d], 8
  905.    mov [L1i], 8
  906.    mov [L2], 256
  907.    mov [micron], 50
  908.  jmp MMXtest
  909.  
  910. .I2:
  911. Text 110,70,0x00000000,P54C, P54Clen-P54C
  912. mov esi, P54C
  913.     mov edi, saveproc + 0x6
  914.     call concatname
  915.    mov [L1d], 8
  916.    mov [L1i], 8
  917.    mov [L2], 256
  918.    mov [micron], 50
  919.  jmp MMXtest
  920.  
  921. .I3:
  922. Text 110,70,0x00000000,P54T, P54Tlen-P54T
  923. mov esi, P54T
  924.     mov edi, saveproc + 0x6
  925.     call concatname
  926.    mov [L1d], 8
  927.    mov [L1i], 8
  928.    mov [L2], 256
  929.    mov [micron], 50
  930.  jmp MMXtest
  931.  
  932. .I4:
  933. Text 110,70,0x00000000,P55C, P55Clen-P55C
  934. mov esi, P55C
  935.     mov edi, saveproc + 0x6
  936.     call concatname
  937.    mov [L1d], 8
  938.    mov [L1i], 8
  939.    mov [L2], 256
  940.    mov [micron], 35
  941.  jmp MMXtest
  942.  
  943.  
  944. .I7:
  945. Text 110,70,0x00000000,P54C, P54Clen-P54C
  946. mov esi, P54C
  947.     mov edi, saveproc + 0x6
  948.     call concatname
  949.    mov [L1d], 8
  950.    mov [L1i], 8
  951.    mov [L2], 256
  952.    mov [micron], 35
  953.  jmp MMXtest
  954.  
  955. .I8:
  956. Text 110,70,0x00000000,P55C, P55Clen-P55C
  957. mov esi, P55C
  958.     mov edi, saveproc + 0x6
  959.     call concatname
  960.    mov [L1d], 16
  961.    mov [L1i], 16
  962.    mov [L2], 256
  963.    mov [micron], 35
  964.    jmp MMXtest
  965.  
  966. six:              ;Family=6
  967.  
  968. Text 15, 190,0x00000000,cache, cachelen-cache
  969. cmp [newpc],$0
  970. jnz NEWintel
  971.  
  972.     cmp [m],$0
  973.     jz .I60
  974.     cmp [m],$1
  975.     jz .I61
  976.     cmp [m],$3
  977.     jz .I63
  978.     cmp [m],$5
  979.     jz .I65
  980.     cmp [m],$6
  981.     jz .I66
  982.     cmp [m],$7
  983.     jz .I67
  984.     cmp [m],$8
  985.     jz .I68
  986.     cmp [m],$9
  987.     jz .I69
  988.     cmp [m],$A
  989.     jz .I6A
  990.     cmp [m],$B
  991.     jz .I6B
  992.    cmp [m],$D
  993.     jz .I6D
  994.     cmp [m],$E
  995.     jz .I6E
  996.    cmp [m],$F
  997.     jz .I6F
  998. .I60:
  999.     mov [micron], 50
  1000.     Text 110,70,0x00000000,P60, P60len-P60
  1001.     mov esi, P60
  1002.     mov edi, saveproc + 0x6
  1003.     call concatname
  1004.     jmp MMXtest
  1005.  
  1006. .I61:
  1007.     mov [micron], 35
  1008.     Text 110,70,0x00000000,P61, P61len-P61
  1009.     mov esi, P61
  1010.     mov edi, saveproc + 0x6
  1011.     call concatname
  1012.     jmp MMXtest
  1013.  
  1014. .I63:
  1015.     mov [micron], 28
  1016.     Text 110,70,0x00000000,P63, P63len-P63
  1017.     mov esi, P63
  1018.     mov edi, saveproc + 0x6
  1019.     call concatname
  1020.     jmp MMXtest
  1021.  
  1022. .I65:
  1023.     mov [micron], 25
  1024.     cmp [L2], 0
  1025.     jne .pp65  ; Pentium
  1026.     Text 110,70,0x00000000,P65c, P65clen-P65c
  1027.     mov esi, P65c
  1028.     mov edi, saveproc + 0x6
  1029.     call concatname
  1030.     jmp MMXtest
  1031.  
  1032. .pp65:
  1033.     Text 110,70,0x00000000,P65, P65len-P65
  1034.     mov esi, P65
  1035.     mov edi, saveproc + 0x6
  1036.     call concatname
  1037.     jmp MMXtest
  1038. .I66:
  1039.     mov [micron], 25
  1040. Text 110,70,0x00000000,P66, P66len-P66
  1041. mov esi, P66
  1042.     mov edi, saveproc + 0x6
  1043.     call concatname
  1044.     jmp MMXtest
  1045. .I67:
  1046.     mov [micron], 25
  1047. Text 110,70,0x00000000,P67, P67len-P67 ;but if SSE4.1 supported then it is Intel Core (Penryn)
  1048.     mov esi, P67
  1049.     mov edi, saveproc + 0x6
  1050.     call concatname
  1051.     jmp MMXtest
  1052.  
  1053. .I68:
  1054.     mov [micron], 18
  1055.     cmp [L2], 128
  1056.     jne .pp68  ; Pentium
  1057. Text 110,70,0x00000000,P68c, P68clen-P68c
  1058. mov esi, P68c
  1059.     mov edi, saveproc + 0x6
  1060.     call concatname
  1061.     jmp MMXtest
  1062.  
  1063.  .pp68:
  1064. Text 110,70,0x00000000,P68, P68len-P68
  1065. mov esi, P68
  1066.     mov edi, saveproc + 0x6
  1067.     call concatname
  1068.     jmp MMXtest
  1069.  
  1070. .I69:
  1071.     mov [micron], 13
  1072. Text 110,70,0x00000000,P69 , P69len-P69
  1073. mov esi, P69
  1074.     mov edi, saveproc + 0x6
  1075.     call concatname
  1076.     jmp MMXtest
  1077.  
  1078. .I6A:
  1079.     mov [micron], 18
  1080. Text 110,70,0x00000000,P6A, P6Alen-P6A ;but if SSE4.2 supported then it is Intel Core (Nehalem)
  1081.     mov esi, P6A
  1082.     mov edi, saveproc + 0x6
  1083.     call concatname
  1084.     jmp MMXtest
  1085.  
  1086. .I6B:
  1087.     mov [micron], 13
  1088.     cmp [L2], 256
  1089.     jne .pp6B  ; Pentium
  1090. Text 110,70,0x00000000,P6Bc, P6Bclen-P6Bc
  1091. mov esi, P6Bc
  1092.     mov edi, saveproc + 0x6
  1093.     call concatname
  1094.     jmp MMXtest
  1095.  
  1096. .pp6B:
  1097. Text 110,70,0x00000000,P6B, P6Blen-P6B
  1098. mov esi, P6B
  1099.     mov edi, saveproc + 0x6
  1100.     call concatname
  1101.     jmp MMXtest
  1102.  
  1103. .I6D:
  1104.     mov [micron], 9
  1105. Text 110,70,0x00000000,P6D, P6Dlen-P6D
  1106. mov esi, P6D
  1107.     mov edi, saveproc + 0x6
  1108.     call concatname
  1109.     jmp MMXtest
  1110.  
  1111. .I6E:
  1112.     mov [micron], 6
  1113. Text 110,70,0x00000000,P6E, P6Elen-P6E
  1114. mov esi, P6E
  1115.     mov edi, saveproc + 0x6
  1116.     call concatname
  1117.     jmp MMXtest
  1118.  
  1119. .I6F:
  1120.     mov [micron], 6
  1121. Text 110,70,0x00000000,P6F, P6Flen-P6F
  1122. mov esi, P6F
  1123.     mov edi, saveproc + 0x6
  1124.     call concatname
  1125.     jmp MMXtest
  1126.  
  1127. ;06Ex - Pentium M Yonah 0.065
  1128. ;06Fx - Pentium D Conroe 0.065, Xeon Woodcrest, Celeron D AllenDale, Core 2 Kentsfield
  1129.  
  1130. NEWintel:
  1131.  
  1132.    cmp [em],$3A   ;IvyBridge
  1133.     jz I3A
  1134.    cmp [em],$2A   ;SandyBridge
  1135.     jz I2A
  1136.    cmp [em],$2D  ;SandyBridge-E/EN/EP
  1137.     jz I2D
  1138.    cmp [em],$25   ;Arrandale/Clarksdale
  1139.     jz I25
  1140.    cmp [em],$2C   ;Gulftown/Westmere-EP
  1141.     jz I2C        ;westmere-EP stepping B1 -> micron 0.032
  1142.    cmp [em],$2F   ;Westmere-EX
  1143.     jz I2F
  1144.    cmp [em],$1E   ;Clarksfield/Lynnfield/Jasper Forest
  1145.     jz I1E
  1146.    cmp [em],$1A   ;Bloomfield/Nehalem-EP
  1147.     jz I1A
  1148.    cmp [em],$2E   ;Nehalem-EX
  1149.     jz I2E
  1150.    cmp [em],$17   ;Yorkfield/Wolfdale/Penryn/Harpertown (DP)
  1151.     jz I17
  1152.    cmp [em],$1D   ;Dunnington (MP)
  1153.     jz I1D
  1154.    cmp [em],$0F   ;Clovertown/Kentsfield/Conroe/Merom/Woodcrest
  1155.     jz I0F
  1156.    cmp [em],$16   ;Merom Conroe
  1157.     jz I16
  1158.    cmp [em],$06   ;Cedar Mill/Presler
  1159.     jz I06
  1160.    cmp [em],$03   ;Nocona Irwindale / Prescott
  1161.     jz I03
  1162.    cmp [em],$04   ;NoconaIrwindale / Prescott
  1163.     jz I03
  1164.    cmp [em],$0D   ;Dothan
  1165.     jz I0D
  1166.    cmp [em],$36   ;Cedarview
  1167.     jz I36
  1168.    cmp [em],$26   ;Lincroft
  1169.     jz I26
  1170.    cmp [em],$1C   ;Pineview/Silverthorne
  1171.     jz I1C
  1172.         jnz no_known
  1173.  
  1174. Inewunknown:
  1175.     jmp MMXtest
  1176.  
  1177. I3A:
  1178. mov [micron], 32
  1179. ;Text 110,70,0x00000000,P3A, P3Alen-P3A
  1180. mov [cname], P3A
  1181. mov esi, P3A
  1182. mov edi, saveproc + 0x10
  1183. call concatname
  1184. jmp MMXtest
  1185.  
  1186. I2A:
  1187. mov [micron], 32
  1188. ;Text 110,70,0x00000000,P2A, P2Alen-P2A
  1189. mov [cname], P2A
  1190. mov esi, P2A
  1191. mov edi, saveproc + 0x10
  1192. call concatname
  1193. jmp MMXtest
  1194.  
  1195. I2D:
  1196. mov [micron], 32
  1197. ;Text 110,70,0x00000000,P2D, P2Dlen-P2D
  1198. mov [cname], P2D
  1199. mov esi, P2D
  1200. mov edi,saveproc + 0x10
  1201. call concatname
  1202. jmp MMXtest
  1203.  
  1204. I25:
  1205. mov [micron], 32
  1206. ;Text 110,70,0x00000000,P25, P25len-P25
  1207. mov [cname], P25  ;P25
  1208. mov esi, P25
  1209. mov edi, saveproc + 0x10  ;12
  1210. call concatname
  1211. jmp MMXtest
  1212.  
  1213. I2C:
  1214. mov [micron], 32
  1215. ;Text 110,70,0x00000000,P2C, P2Clen-P2C
  1216. mov [cname], P2C
  1217. mov esi, P2C
  1218. mov edi,saveproc + 0x10
  1219. call concatname
  1220.     jmp MMXtest
  1221.  
  1222. I2F:
  1223. mov [micron], 32
  1224. ;Text 110,70,0x00000000,P2F, P2Flen-P2F
  1225. mov [cname], P2F
  1226. mov esi, P2F
  1227. mov edi, saveproc + 0x10
  1228. call concatname
  1229.     jmp MMXtest
  1230.  
  1231. I1E:
  1232. mov [micron], 32
  1233. ;Text 110,70,0x00000000,P1E, P1Elen-P1E
  1234. mov [cname], P1E
  1235. mov esi, P1E
  1236. mov edi, saveproc + 0x10
  1237. call concatname
  1238.     jmp MMXtest
  1239.  
  1240. I1A:
  1241. mov [micron], 45
  1242. ;Text 110,70,0x00000000,P1A, P1Alen-P1A
  1243. mov [cname], P1A
  1244. mov esi, P1A
  1245. mov edi, saveproc + 0x10
  1246. call concatname
  1247.     jmp MMXtest
  1248.  
  1249. I2E:
  1250. mov [micron], 45
  1251. ;Text 110,70,0x00000000,P2E, P2Elen-P2E
  1252. mov [cname], P2E
  1253. mov esi, P2E
  1254. mov edi, saveproc + 0x10
  1255. call concatname
  1256.     jmp MMXtest
  1257.  
  1258. I17:
  1259. mov [micron], 45
  1260. ;Text 110,70,0x00000000,P17, P17len-P17
  1261. mov [cname], P17
  1262. mov esi, P17
  1263. mov edi, saveproc + 0x10
  1264. call concatname
  1265.     jmp MMXtest
  1266.  
  1267. I1D:
  1268. mov [micron], 45
  1269. ;Text 110,70,0x00000000,P1D, P1Dlen-P1D
  1270. mov [cname], P1D
  1271. mov esi, P1D
  1272. mov edi, saveproc + 0x10
  1273. call concatname
  1274.     jmp MMXtest
  1275.  
  1276. I0F:
  1277. mov [micron], 65
  1278. ;Text 110,70,0x00000000,P0F, P0Flen-P0F
  1279. mov [cname], P0F
  1280. mov esi, P0F
  1281. mov edi, saveproc + 0x10
  1282. call concatname
  1283.     jmp MMXtest
  1284.  
  1285. I16:
  1286. mov [micron], 65
  1287. ;Text 110,70,0x00000000,P16, P16len-P16
  1288. mov [cname], P16
  1289. mov esi, P16
  1290. mov edi, saveproc + 0x10
  1291. call concatname
  1292.     jmp MMXtest
  1293.  
  1294. I06:
  1295. mov [micron], 32
  1296. ;Text 110,70,0x00000000,P06, P06len-P06
  1297. mov [cname], P06
  1298. mov esi, P06
  1299. mov edi, saveproc + 0x10
  1300. call concatname
  1301.     jmp MMXtest
  1302.  
  1303. I03:
  1304. mov [micron], 32
  1305. ;Text 110,70,0x00000000,P03, P03len-P03
  1306. mov [cname], P03
  1307. mov esi, P03
  1308. mov edi, saveproc + 0x10
  1309. call concatname
  1310.     jmp MMXtest
  1311.  
  1312. I0D:
  1313. mov [micron], 32
  1314. ;Text 110,70,0x00000000,P0D, P0Dlen-P0D
  1315. mov [cname], P0D
  1316. mov esi, P0D
  1317. mov edi, saveproc + 0x10
  1318. call concatname
  1319.     jmp MMXtest
  1320.  
  1321. I36:
  1322. mov [micron], 32
  1323. ;Text 110,70,0x00000000,P36, P36len-P36
  1324. mov [cname], P36
  1325. mov esi, P36
  1326. mov edi, saveproc + 0x10
  1327. call concatname
  1328.     jmp MMXtest
  1329.  
  1330. I26:
  1331. mov [micron], 32
  1332. ;Text 110,70,0x00000000,P26, P26len-P26
  1333. mov [cname], P26
  1334. mov esi, P26
  1335. mov edi, saveproc + 0x10
  1336. call concatname
  1337.     jmp MMXtest
  1338.  
  1339. I1C:
  1340. mov [micron], 32
  1341. ;Text 110,70,0x00000000,P1C, P1Clen-P1C
  1342. mov [cname], P1C
  1343. mov esi, P1C
  1344. mov edi, saveproc + 0x10
  1345. call concatname
  1346.     jmp MMXtest
  1347.  
  1348.  
  1349. ;;;;;;;;;;;;;;;;;;;
  1350. sev:    ;Family=7
  1351. .IS0:
  1352.  
  1353. Text 15, 190,0x00000000,cache, cachelen-cache
  1354. mov [micron], 18
  1355. Text 110,70,0x00000000,PS0, PS0len-PS0
  1356. mov esi, PS0
  1357. mov edi, saveproc + 0x6
  1358. call concatname
  1359.  jmp MMXtest
  1360.  
  1361. fift:    ;Family=15
  1362.  
  1363. Text 15, 190,0x00000000,cacheP4, cacheP4len-cacheP4
  1364.  
  1365.     cmp [m],$0
  1366.     jz .IF0
  1367.     cmp [m],$1
  1368.     jz .IF1
  1369.     cmp [m],$2
  1370.     jz .IF2
  1371.     cmp [m],$3
  1372.     jz .IF3
  1373.     cmp [m],$4
  1374.     jz .IF3 ;identical to F3xh
  1375.     cmp [m],$5
  1376.     jz .IF5
  1377.     cmp [m],$6
  1378.     jz .IF6
  1379.     jmp next_generation
  1380. .IF0:
  1381.     mov [micron], 18
  1382.     cmp [L2], 128
  1383.     jne .ppF0  ; Pentium
  1384. Text 110,70,0x00000000,PF0c, PF0clen-PF0c
  1385. mov esi, PF0c
  1386.     mov edi, saveproc + 0x6
  1387.     call concatname
  1388.     jmp MMXtest
  1389. .ppF0:
  1390. Text 110,70,0x00000000,PF0, PF0len-PF0
  1391. mov esi, PF0
  1392.     mov edi, saveproc + 0x6
  1393.     call concatname
  1394.     jmp MMXtest
  1395. .IF1:
  1396.     mov [micron], 18
  1397.     cmp [L2], 128
  1398.     je .IF0;jne.ppF1  ; Pentium
  1399.   ;  mov   eax,dword 0x00000004
  1400.   ;  mov   ebx,115*65536+80
  1401.   ;  mov   ecx,dword 0x00000000
  1402.   ;  mov   edx,PF0c
  1403.   ;  mov   esi,PF0clen-PF0c
  1404.   ;  mcall
  1405.   ;jmp MMXtest
  1406. ;.ppF1:
  1407. Text 110,70,0x00000000,PF0, PF0len-PF0
  1408. mov esi, PF0
  1409.     mov edi, saveproc + 0x6
  1410.     call concatname
  1411.  jmp MMXtest
  1412. .IF2:
  1413.     mov [micron], 13
  1414.     cmp [L2], 128
  1415.     jne .ppF2  ; Pentium
  1416. Text 110,70,0x00000000,PF2c, PF2clen-PF2c
  1417. mov esi, PF2c
  1418.     mov edi, saveproc + 0x6
  1419.     call concatname
  1420.  jmp MMXtest
  1421. .ppF2:
  1422. Text 110,70,0x00000000,PF2, PF2len-PF2
  1423. mov esi, PF2
  1424.     mov edi, saveproc + 0x6
  1425.     call concatname
  1426.  jmp MMXtest
  1427. .IF3:
  1428.     mov [micron], 09
  1429.     cmp [L2], 256
  1430.     jne .ppF3  ; Pentium
  1431. Text 110,70,0x00000000,PF3c, PF3clen-PF3c
  1432. mov esi, PF3c
  1433.     mov edi, saveproc + 0x6
  1434.     call concatname
  1435.  jmp MMXtest
  1436. .ppF3:
  1437. Text 110,70,0x00000000,PF3, PF3len-PF3
  1438. mov esi, PF3
  1439.     mov edi, saveproc + 0x6
  1440.     call concatname
  1441.  jmp MMXtest
  1442.  
  1443. .IF5:
  1444.     mov [micron], 09
  1445.     cmp [L2], 512
  1446.     jae .ppF5  ; Pentium
  1447. Text 110,70,0x00000000,PF5c, PF5clen-PF5c
  1448. mov esi, PF5c
  1449.     mov edi, saveproc + 0x6
  1450.     call concatname
  1451.  jmp MMXtest
  1452. .ppF5:
  1453. Text 110,70,0x00000000,PF5, PF5len-PF5
  1454. mov esi, PF5
  1455.     mov edi, saveproc + 0x6
  1456.     call concatname
  1457.  jmp MMXtest
  1458.  
  1459.  .IF6:
  1460.     mov [micron], 06  ; 065
  1461.     cmp [L2], 512
  1462.     ja .ppF6  ; Pentium
  1463. Text 110,70,0x00000000,PF6c, PF6clen-PF6c
  1464. mov esi, PF6c
  1465.     mov edi, saveproc + 0x6
  1466.     call concatname
  1467.  jmp MMXtest
  1468. .ppF6:
  1469. Text 110,70,0x00000000,PF6, PF6len-PF6
  1470. mov esi, PF6
  1471.     mov edi, saveproc + 0x6
  1472.     call concatname
  1473.  jmp MMXtest
  1474.  
  1475.  
  1476.  next_generation:
  1477. Text 110,70,0x00000000,NG, NGlen-NG
  1478. mov esi, NG
  1479.     mov edi, saveproc + 0x6
  1480.     call concatname
  1481.   jmp MMXtest
  1482. ;----------------------------------
  1483. Cyrix:
  1484.  
  1485. mov [codeN], 3
  1486. Text 15, 190,0x00000000,cache, cachelen-cache
  1487.  
  1488.         mov     esi, cyrix
  1489.         call    load_gif
  1490. PutImage 135,107,201,49,img_area+8
  1491.  
  1492.  
  1493.     cmp [f], $5
  1494.     jz .fivv
  1495.     cmp [f], $6
  1496.     jz .sixx
  1497. .fivv:    ;Family=5
  1498.     cmp [m],$2
  1499.     jz .C52
  1500.     cmp [m],$4
  1501.     jz .C54
  1502. .C52:
  1503.     mov [micron], 50 ;35?
  1504.     mov [L1i], 8
  1505.     mov [L1d], 8
  1506.     mov [L2], 512
  1507. Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
  1508. mov esi, Cyrixn
  1509.     mov edi, saveproc
  1510.     call concatname
  1511. Text 110,70,0x00000000,C52, C52len-C52
  1512. mov esi, C52
  1513.     mov edi, saveproc + 0x6
  1514.     call concatname
  1515.     jmp MMXtest
  1516. .C54:
  1517.     mov [micron], 50
  1518.     mov [L1i], 8
  1519.     mov [L1d], 8
  1520.     mov [L2], 512
  1521. Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
  1522. mov esi, Cyrixn
  1523.     mov edi, saveproc
  1524.     call concatname
  1525. Text 110,70,0x00000000,C54, C54len-C54
  1526. mov esi, C54
  1527.     mov edi, saveproc + 0x6
  1528.     call concatname
  1529.     jmp MMXtest
  1530.  
  1531. .sixx:     ;Family=6
  1532.    cmp [m],$0
  1533.    jz .C60
  1534.    cmp [m],$5
  1535.    jz .C65
  1536. .C60:
  1537.     mov [micron], 25
  1538.     mov [L1i], 32
  1539.     mov [L1d], 32
  1540.     mov [L2], 512
  1541. Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
  1542. mov esi, Cyrixn
  1543.     mov edi, saveproc
  1544.     call concatname
  1545. Text 110,70,0x00000000,C60, C60len-C60
  1546. mov esi, C60
  1547.     mov edi, saveproc + 0x6
  1548.     call concatname
  1549.     jmp MMXtest
  1550. .C65:
  1551.     mov [micron], 25 ;35?
  1552.     mov [L1i], 32
  1553.     mov [L1d], 32
  1554.     mov [L2], 512
  1555. Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
  1556. mov esi, Centaurn
  1557.     mov edi, saveproc
  1558.     call concatname
  1559.     mov edx,C65
  1560.     mov esi,C65len-C65
  1561.     jmp OutProcName
  1562. ;---------------------
  1563. Centaur:
  1564.  
  1565. Text 15, 190,0x00000000,cache, cachelen-cache
  1566.  
  1567. ;CACHE1:
  1568. mov eax, 80000005h
  1569.     cpuid
  1570. shr ecx, 24
  1571. mov [L1d], ecx
  1572. shr edx, 24
  1573. mov [L1i], edx
  1574.  
  1575. ; cache detection routine
  1576. ;CACHE1:
  1577. mov eax, 80000005h
  1578.     cpuid
  1579.  
  1580. movzx eax, cl
  1581. mov [lineld], eax
  1582.  
  1583. mov eax, ecx
  1584. shr eax, 16
  1585. and eax,000000FFh
  1586. mov [wayld], eax
  1587.  
  1588. shr ecx, 24
  1589. mov [L1d], ecx
  1590.  
  1591. movzx eax, dl
  1592. mov [lineli], eax
  1593.  
  1594. mov eax, edx
  1595.  
  1596. shr eax, 16
  1597. and eax,000000FFh
  1598. mov [wayli], eax
  1599.  
  1600. shr edx, 24
  1601. mov [L1i], edx
  1602.  
  1603.  
  1604. ;CACHE2:
  1605. mov eax, 80000006h
  1606.     cpuid
  1607.  
  1608. cmp [f], $6
  1609.     jz vn
  1610.     jmp vl2old  ; if not then old identification
  1611. vn:
  1612.     cmp [m],$9
  1613.     jl vl2old
  1614. ; else  new
  1615. movzx eax, cl
  1616. mov dword[linel2], eax
  1617.  
  1618. mov eax, ecx
  1619. shl eax, 16
  1620. shr eax, 28
  1621.  
  1622. mov dword[wayl2], eax
  1623.  
  1624. shr ecx, 16  ; it is 16 bits now
  1625. mov [L2],ecx
  1626.  
  1627.  
  1628.  
  1629. vl2old:
  1630. movzx eax, cl
  1631. mov dword[linel2], eax
  1632.  
  1633. mov eax, ecx
  1634. shl eax, 8
  1635. shr eax, 24
  1636.  
  1637. mov dword[wayl2], eax
  1638.  
  1639. shr ecx, 24  ; it was 8 bits earlier
  1640. mov [L2],ecx
  1641.  
  1642.  
  1643.     cmp [f], $5
  1644.     jz fivC
  1645.     cmp [f], $6
  1646.     jz sixC
  1647.  
  1648. fivC:              ;Family=5
  1649.  
  1650.         mov     esi, idt
  1651.         call    load_gif
  1652. PutImage 135,107,201,49,img_area+8
  1653. ;PutImage 125,107,201,49,img_area+8
  1654. ;         place   size
  1655.  
  1656. Text 75,70,0x00000000,IDTn, IDTnlen-IDTn
  1657. mov esi, IDTn
  1658.     mov edi, saveproc + 0x4
  1659.     call concatname
  1660.     cmp [m],$4
  1661.     jz .V54
  1662.     cmp [m],$8
  1663.     jz .V58
  1664.     cmp [m],$9
  1665.     jz .V59
  1666. .V54:
  1667.    mov [micron], 35
  1668.    mov edx,V54
  1669.    mov esi,V54len-V54
  1670.     jmp OutProcName
  1671. .V58:
  1672.     mov [micron], 25
  1673.     mov edx,V58
  1674.     mov esi,V58len-V58
  1675.     jmp OutProcName
  1676. .V59:
  1677.     mov [micron], 25
  1678.     mov edx,V59
  1679.     mov esi,V59len-V59
  1680.     jmp OutProcName
  1681.  
  1682. sixC:   ;Family=6
  1683.  
  1684.         mov     esi, via
  1685.         call    load_gif
  1686. PutImage 135,107,201,49,img_area+8
  1687.  
  1688.  
  1689. Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
  1690. mov esi, Centaurn
  1691.     mov edi, saveproc
  1692.     call concatname
  1693.     cmp [m],$6
  1694.     jz .V66
  1695.     cmp [m],$7
  1696.     jz .V67
  1697.     cmp [m],$8
  1698.     jz .V68
  1699.     cmp [m],$9
  1700.     jz .V69
  1701.     cmp [m],$A
  1702.     jz .V6A
  1703. .V66:
  1704.    mov [micron], 18 ; 25?
  1705.    mov edx,V66
  1706.    mov esi,V66len-V66
  1707.     jmp OutProcName
  1708. .V67:
  1709.     mov [micron], 15
  1710.     mov edx,V67
  1711.     mov esi,V67len-V67
  1712.     jmp OutProcName
  1713. .V68:
  1714.     mov [micron], 13
  1715.     mov edx,V68
  1716.     mov esi,V68len-V68
  1717.     jmp OutProcName
  1718. .V69:
  1719.    mov [micron], 13
  1720.    mov edx,V69
  1721.    mov esi,V69len-V69
  1722.    jmp OutProcName
  1723. .V6A:
  1724.    mov [micron], 9
  1725.    mov edx,VA
  1726.    mov esi,VAlen-VA
  1727.    jmp OutProcName
  1728. ;-----------
  1729. Transmeta:
  1730.  
  1731. Text 15, 190,0x00000000,cache, cachelen-cache
  1732.  
  1733. Text 75,70,,Tranmsmetan, Tranmsmetanlen-Tranmsmetan
  1734. mov esi, Tranmsmetan
  1735.     mov edi, saveproc
  1736.     call concatname
  1737.  
  1738.         mov     esi, transmeta
  1739.         call    load_gif
  1740. PutImage 135,107,201,49,img_area+8
  1741.  
  1742. ; cache detection routine - it is the same as for AMD (almost)
  1743. ;CACHE1:
  1744. mov eax, 80000005h
  1745.     cpuid
  1746.  
  1747. movzx eax, cl
  1748. mov [lineld], eax
  1749.  
  1750. mov eax, ecx
  1751.  
  1752. shr eax,16
  1753. and eax,000000FFh
  1754. mov [wayld], eax
  1755.  
  1756. shr ecx, 24
  1757. mov [L1d], ecx
  1758.  
  1759. movzx eax, dl
  1760. mov [lineli], eax
  1761.  
  1762. mov eax, edx
  1763.  
  1764. shr eax, 16
  1765. and eax,000000FFh
  1766. mov [wayli], eax
  1767.  
  1768. shr edx, 24
  1769. mov [L1i], edx
  1770.  
  1771.  
  1772. ;CACHE2:
  1773. mov eax, 80000006h
  1774.     cpuid
  1775.  
  1776. movzx eax, cl
  1777. mov dword[linel2], eax
  1778.  
  1779. mov eax, ecx
  1780. shl eax, 16
  1781. shr eax, 28
  1782.  
  1783. mov dword[wayl2], eax
  1784.  
  1785. shr ecx, 16
  1786. mov [L2],ecx
  1787.  
  1788.  
  1789.     cmp [f], $5
  1790.     jz .fivt
  1791.     cmp [f], $F
  1792.     jz .fift
  1793. .fivt:    ;     Family=5
  1794.  
  1795.     mov edx,T5
  1796.     mov esi,T5len-T5
  1797.     jmp @f
  1798.  
  1799. .fift:    ;     Family=F
  1800.     mov edx,TF
  1801.     mov esi,TFlen-TF
  1802. @@:
  1803.     mov [micron], 13 ;
  1804.     Text 140,70,0
  1805.     jmp MMXtest
  1806.  
  1807. OutProcName:
  1808.         Text    100,70,0
  1809.  
  1810. ;----
  1811. ;---------------------------------- new
  1812. Vortex:
  1813.  
  1814. Text 15, 190,0x00000000,cache, cachelen-cache
  1815.  
  1816.         mov     esi, vortex
  1817.         call    load_gif
  1818. PutImage 135,107,201,49,img_area+8
  1819. ;PutImage 130,127,201,49,img_area+8
  1820. ;         place   size
  1821.  
  1822.     cmp [f], $5
  1823.     jz .V54 ;fivvtx
  1824. ;.fivvtx:         ;Family=5
  1825. ;    cmp [m],$4
  1826. ;    jz .V54
  1827. .V54:
  1828.     mov [micron], 13
  1829.     mov [L1i], 16
  1830.     mov [L1d], 16
  1831.     mov [L2], 256
  1832.     mov [wayl2], 4
  1833.     mov [wayli], 4
  1834.     mov [wayld], 4
  1835. Text 75,70,0x00000000,Vortexn, Vortexnlen-Vortexn
  1836. mov esi, Vortexn
  1837.     mov edi, saveproc
  1838.     call concatname
  1839. ;Text 110,70,0x00000000,V54, V54len-V54
  1840.     jmp MMXtest
  1841.  
  1842. ;---------------------
  1843.  
  1844.  
  1845.  
  1846. MMXtest:             ; MMX test and Brand ID decoding
  1847.  
  1848. call decodebrand  ; get Brand ID
  1849.  
  1850. call decode_standard_features
  1851.  
  1852. call decode_extended_features
  1853.       xor eax,eax
  1854.       inc eax
  1855.       cpuid
  1856. HTTtest:
  1857.   test  edx, $10000000; ;Test bit 28
  1858.   jz .ELN
  1859.  
  1860. .EL:   ;HTT technology is supported
  1861.    and ebx,00FF0000h ; numbers of logical processors
  1862.    cmp ebx, 1 shl 16
  1863.    ;   mov [number_of_log_cpus], ebx
  1864.    je .ELN  ; HHT not enabled (Celeron)
  1865.  
  1866.    mov  dword [HTTn+9], $736579
  1867.    mov  dword [HTT+ 6], $736579
  1868.    jmp TEXTOUT
  1869. .ELN:
  1870.  
  1871.    mov  dword [HTTn+ 9],  $6F6E
  1872.    mov  dword [HTT+ 6],  $6F6E
  1873.  
  1874. TEXTOUT:
  1875.  
  1876. Text 275,290,0x00000000,HTT, HTTlen-HTT
  1877. Text 275,310,,sse3, sse3len-sse3
  1878. Text 15,290,,MMXs, MMXslen-MMXs
  1879. Text 15,310,,SSE, SSElen-SSE
  1880. Text 95,310,,SSE2, SSE2len-SSE2
  1881.  
  1882. ;-------------------
  1883. TEST3DNOW:
  1884.  
  1885.   xor edx, edx
  1886.   cmp [smallvendor], 'ntel'
  1887. ;  je @f  ;recent change
  1888. jne .t
  1889.  
  1890. .t:
  1891.  
  1892.   mov   eax, $80000001 ;// Setup extended function 8000_0001h
  1893.   cpuid
  1894.  
  1895.   test  edx, $80000000 ;// Test bit 31
  1896.   jnz   .XIT
  1897.  
  1898. .NOEXTENDED: ;// 3DNow! technology is supported
  1899.    mov  dword [now+ 9], $6F6E
  1900.    jmp TEST3DNOWP
  1901. .XIT:
  1902.    mov  dword [now+ 9],  $736579
  1903.    jmp TEST3DNOWP
  1904.  
  1905. TEST3DNOWP:
  1906.  
  1907.   cmp [smallvendor], 'ntel'
  1908.   je .NOEXTENDEDP
  1909.  
  1910. .tp:
  1911.  
  1912.   mov   eax, $80000001 ;// Setup extended function 8000_0001h
  1913.   cpuid
  1914.  
  1915. test    edx, $40000000 ;// Test bit 30
  1916.   jnz   .XITP  ;// 3DNow! technology is supported
  1917.  
  1918. .NOEXTENDEDP:
  1919.    mov  dword [nowp+ 9], $6F6E
  1920.    jmp TESTMMXP
  1921. .XITP:
  1922.    mov  dword [nowp+ 9],  $736579
  1923.    jmp TESTMMXP
  1924.  
  1925.  
  1926. TESTMMXP:
  1927.  
  1928.     mov   eax,$80000000
  1929.     cpuid
  1930.  
  1931.     test eax, 80000000h
  1932.     jna NOEXTENDEDM
  1933.  
  1934.   ;cmp   eax, $80000000 ;// Is 800_0001h supported?
  1935.   ;jz   .NOEXTENDEDM    ;// If not, 3DNow! technology is not supported
  1936.   mov   eax, $80000001 ;// Setup extended function 8000_0001h
  1937.   cpuid
  1938.   cmp [smallvendor], 'tead'
  1939.   jne noCyr
  1940. Cyrmx:
  1941.   test  edx, $01000000 ;// Test bit 24
  1942.   jnz   XITM  ;// 3DNow! technology is supported
  1943.   jz NOEXTENDEDM
  1944. noCyr:
  1945.   test  edx, $00400000 ;// Test bit 22
  1946.   jnz   XITM  ;// 3DNow! technology is supported
  1947.   ;jz   .NOEXTENDEDM
  1948.  
  1949. NOEXTENDEDM:
  1950.    mov  dword [mmxp+ 7], $6F6E
  1951.    mov  dword [MMXPi+ 8], $6F6E
  1952.    jmp text3d
  1953. XITM:
  1954.    mov  dword [mmxp+ 7],  $736579
  1955.    mov  dword [MMXPi+ 8],  $736579
  1956.  
  1957. text3d:
  1958.  
  1959. Text 15,330,0x00000000,now, nowlen-now
  1960. Text 95,330,,nowp, nowplen-nowp
  1961. Text 95,290,,mmxp, mmxplen-mmxp
  1962.  
  1963. jmp still
  1964.  
  1965. ;--------------------------
  1966. NO_CPUID:
  1967.  mov [nocpuid], 1
  1968.  Text 15,50,0x00000000,oblom, oblomlen-oblom
  1969.  
  1970. FREEZE:
  1971. nop
  1972. jmp FREEZE ; maybe we should close application or just made some Warning and jump to still:
  1973. ;----------------
  1974. still:
  1975.  
  1976. ; waiting for events
  1977. event_wait:
  1978.  
  1979.     ;================_RAM_==============
  1980.   Number 200,350,0,4,dword [ram_size_a],0xFFFFFF ;Number 200,340,0,4,dword [ram_size_a],0xFFFFFF
  1981.  
  1982.   mov eax, 18
  1983.   mov ebx, 16
  1984.   mcall
  1985.  
  1986.   shr eax, 10
  1987.  
  1988.   mov [ram_size_a], eax
  1989.  
  1990.   mov eax, 18
  1991.   mov ebx, 17
  1992.   mcall
  1993.  
  1994.   shr eax, 10
  1995.  
  1996.   mov [ram_size_t], eax
  1997.  
  1998.   Text 115,350,0x00000000,ram, ramlen-ram
  1999.   Number 200,350,0,4,dword [ram_size_a],0x000000
  2000.   Number 270,350,,,dword [ram_size_t]
  2001.  
  2002.  
  2003. ;==============================
  2004.  
  2005.         mov     eax,23       ; function 23 - event wait
  2006.         mov     ebx,50       ; wait for 0.5 second
  2007.         mcall
  2008.  
  2009.     cmp  eax,1          ;
  2010.     je   red            ;  redraw
  2011.     je   red2
  2012.     cmp  eax,2          ;
  2013.     je   key            ;  key
  2014.     cmp  eax,3          ;
  2015.     je   button         ;  button
  2016.     jmp  still          ;
  2017.   key:                  ;
  2018.     mcall               ;
  2019.     jmp  still          ;
  2020.   button:               ;
  2021.     mov  eax,17         ;
  2022.     mcall               ;
  2023.     cmp  ah,1           ;  = 1 ?
  2024.     je  close           ; close
  2025.  
  2026.     cmp  ah,2           ;  = 2 ?
  2027.     je  thread_start    ;
  2028.  
  2029.     cmp  ah, 3
  2030.     je call_OpenDialog
  2031.  
  2032.      mov        eax,11       ; function 23 - event wait
  2033.    mov  ebx,1
  2034.    mcall
  2035.  
  2036.    mov  eax,15       ; function 23 - event wait
  2037.    mov  ebx,3
  2038.    mcall
  2039.  
  2040. ;    cmp  ah,3          ;  = 3 ?
  2041.     jne  still
  2042.  
  2043. close:
  2044.     mov   eax,-1
  2045.     mcall
  2046.  
  2047. ;**************************** THREAD-SECOND WINDOW
  2048. thread_start:
  2049.  
  2050.     cmp  [num_win2],0
  2051.  
  2052.     jne  still
  2053.  
  2054. ;================================================RSA test
  2055.  
  2056. ;test rsa coding speed
  2057.         call    init_test
  2058. ;length of module - 256 bit
  2059.   mov  eax,26
  2060.   mov  ebx,9
  2061.   mcall
  2062.   add  eax,100 ;test lasts 1 second.
  2063.   push eax
  2064. .loop:
  2065.   push 4     ;do 4 iterations - this reduces number of calls mcall.
  2066. .loop1:
  2067.   call rsa_test   ;this procedure change all registers
  2068.   dec  dword [esp]
  2069.   jnz  .loop1
  2070.   pop  ecx
  2071.   mov  eax,26
  2072.   mov  ebx,9
  2073.   mcall
  2074.   cmp  eax,dword [esp]   ;Is time changed?
  2075.   jl   .loop
  2076.   pop  eax
  2077.   shr  dword [iter],4 ;[iter] - speed in Kb/sec. (every iteration codes 64 bytes)
  2078. CreateTread window_2,thread2_esp
  2079.   jmp  still
  2080.  
  2081. window_2:
  2082.     mov  [num_win2],1
  2083.     call draw_window_2
  2084.  
  2085. still_2:
  2086.  
  2087.     mov  eax,10
  2088.     mcall
  2089.  
  2090.     cmp  eax,1
  2091.     je   window_2       ;  window_2
  2092.     cmp  eax,2          ;
  2093.     je   key_2          ;  key_2
  2094.     cmp  eax,3          ;
  2095.     je   button_2       ;  button_2
  2096.  
  2097.     jmp  still_2        ;
  2098.  
  2099.   key_2:                ;
  2100.     mcall               ;
  2101.     jmp  still_2        ;
  2102.  
  2103.   button_2:             ;
  2104.     mov  eax,17         ; 17
  2105.     mcall               ;
  2106.  
  2107.     cmp  ah,1           ; = 1 ?
  2108.     jne  still_2        ; noclose
  2109.  
  2110.     mov  [num_win2],0   ;
  2111.  
  2112.     or   eax,-1         ;
  2113.     mcall
  2114.  
  2115.  
  2116. draw_window_2:
  2117.  
  2118.     ;call prepare_text_area
  2119.  
  2120.     mov  eax,12                    ; function 12:tell os about windowdraw
  2121.     mov  ebx,1h                     ; 1, start of draw
  2122.     mcall
  2123.  
  2124.  
  2125. Window 250,250,420,520, 0x33FFFFFF, 0x805080d0, standard  ;460
  2126. ; place size
  2127.  
  2128.  
  2129. Text 15, 10,0x00000000, STDCA, STDCAlen-STDCA
  2130. Text 215, 10,, EXTCA, EXTCAlen-EXTCA
  2131.  
  2132. Text 15, 30,0x00000000, FPU, FPUlen-FPU
  2133. Text 115, 30,, VME, VMElen-VME
  2134. Text 215, 30,, DE,  DElen-DE
  2135. Text 315, 30,, PSE, PSElen-PSE
  2136.  
  2137. Text 15, 50,,TSC, TSClen-TSC
  2138. Text 115,50,,MSR, MSRlen-MSR
  2139. Text 215,50,,PAE, PAElen-PAE
  2140. Text 315,50,,MCE, MCElen-MCE
  2141.  
  2142. Text 15,70,,CX8, CX8len-CX8
  2143. Text 115,70,,APIC, APIClen-APIC
  2144. Text 215,70,,Res, Reslen-Res
  2145. Text 315,70,,SEP, SEPlen-SEP
  2146.  
  2147. Text 15,90,,MTRR, MTRRlen-MTRR
  2148. Text 115,90,,PGE, PGElen-PGE
  2149. Text 215,90,,MCA, MCAlen-MCA
  2150. Text 315,90,,CMOV, CMOVlen-CMOV
  2151.  
  2152. Text 15,110,,PAT, PATlen-PAT
  2153. Text 115,110,,PSE36, PSE36len-PSE36
  2154. Text 215,110,,PSNUM, PSNUMlen-PSNUM
  2155. Text 315,110,,CLFLUSHn, CLFLUSHnlen-CLFLUSHn
  2156.  
  2157. Text 15,130,,Res, Reslen-Res
  2158. Text 115,130,,DTS, DTSlen-DTS
  2159. Text 215,130,,ACPI, ACPIlen-ACPI
  2160. Text 315,130,,MMX, MMXlen-MMX
  2161.  
  2162. Text 15,150,,FXSR, FXSRlen-FXSR
  2163. Text 115,150,,SSE, SSElen-SSE
  2164. Text  215,150,,SSE2, SSE2len-SSE2
  2165. Text 315,150,,SSn, SSnlen-SSn
  2166.  
  2167. Text 15,170,,HTT, HTTnlen-HTTn
  2168. Text 115,170,,TM, TMlen-TM
  2169. Text 215,170,,IA64, IA64len-IA64
  2170. Text 315,170,,PBE, PBElen-PBE
  2171. ;---------------
  2172. DrawLine 0,  410, 185,185,0x8080FF  ;10
  2173.  
  2174. mov   eax,$80000000
  2175. cpuid
  2176. ;mov eax, $03020101  \A0for test of reaction
  2177. test eax, eax
  2178. js  goooddd
  2179.  
  2180. baaadd:
  2181. Text 95,235,0x00000000,NEF, NEFlen-NEF
  2182. jmp too
  2183.  
  2184. goooddd:
  2185. Text 15,195,0x00000000,SS3, SS3len-SS3
  2186. Text 15,215,,MON, MONlen-MON
  2187. Text 15,235,,DS_CPL, DS_CPLlen-DS_CPL
  2188. Text 15,255,,EST, ESTlen-EST
  2189. Text 15,275,,TM2, TM2len-TM2
  2190. Text 15,295,,VMX, VMXlen-VMX
  2191. Text 15,315,,SVM, SVMlen-SVM
  2192.  
  2193. Text 15,355,0x00000000,SMX, SMXlen-SMX
  2194. Text 15,335,0x00000000,PAGE, PAGElen-PAGE
  2195. Text 15,375,0x00000000,MIS, MISlen-MIS
  2196. Text 115,355,0x00000000,WDT, WDTlen-WDT
  2197.  
  2198. Text 115,195,,CNXT_ID, CNXT_IDlen-CNXT_ID
  2199. Text 115,215,,CX16, CX16len-CX16
  2200. Text 115,235,,ETPRD, ETPRDlen-ETPRD
  2201. Text 115,255,,SYS, SYSlen-SYS
  2202. Text 115,275,,LAF, LAFlen-LAF
  2203. Text 115,295,,SSSE3, SSSE3len-SSSE3
  2204. Text 115,315,,MCR8, MCR8len-MCR8
  2205.  
  2206.  
  2207. Text 115,335,0x00000000,EAS, EASlen-EAS
  2208.  
  2209. Text 115,375,0x00000000,DNP, DNPlen-DNP
  2210.  
  2211.  
  2212. Text 315,375,0x00000000,SSE5, SSE5len-SSE5
  2213.  
  2214. Text 215,195,,MP, MPlen-MP
  2215. Text 215,215,,NX, NXlen-NX
  2216. Text 215,235,,MMXPi, MMXPilen-MMXPi
  2217. Text 215,255,,MMXn, MMXnlen-MMXn
  2218. Text 215,275,,FXSRn, FXSRnlen-FXSRn
  2219. Text 215,295,,DCA,DCAlen-DCA
  2220.  
  2221. Text 315,295,0x00000000,SSE41,SSE41len-SSE41
  2222. Text 215,335,0x00000000,x2APIC,x2APIClen-x2APIC
  2223. Text 215,355,0x00000000,ABM,ABMlen-ABM
  2224. Text 215,375,0x00000000,OSVW,OSVWlen-OSVW
  2225.  
  2226. Text 315,195,,FFXSR, FFXSRlen-FFXSR
  2227. Text 315,215,,TSCP, TSCPlen-TSCP
  2228. Text 315,235,,LM, LMlen-LM
  2229. Text 315,255,,DNo, DNolen-DNo
  2230. Text 315,275,,DN, DNlen-DN
  2231. Text 215,315,,CMPL, CMPLlen-CMPL
  2232. Text 315,315,0x00000000,SS42,SS42len-SS42
  2233. Text 315,335,0x00000000,PPCNT,PPCNTlen-PPCNT
  2234. Text 315,295,0x00000000,SSE4A,SSE4Alen-SSE4A
  2235. Text 315,355,0x00000000,SKINIT_,SKINIT_len-SKINIT_
  2236.  
  2237. too:
  2238. DrawLine 10,  400, 430,430,0x8080FF  ;10
  2239.  
  2240. Text 15,415,0x00000000,speed, speedlen-speed
  2241. Text 130,415,,kbpersec, kbperseclen-kbpersec
  2242.  
  2243. DrawLine 10, 80, 400, 400, 0x8080FF
  2244.  
  2245.  Text 90,400,0x80000000,performancestr, 0
  2246. DrawLine 322, 400, 400, 400, 0x8080FF
  2247. DrawLine 10, 10, 400, 490, 0x8080FF
  2248. DrawLine 400, 400, 400, 490, 0x8080FF
  2249.  
  2250. DrawLine 10, 400, 490, 490, 0x8080FF
  2251.  
  2252.               ; your proc
  2253.                 Text 20,415,0x808080FF,currentcpu, 0
  2254.                 Number 170,415,0,5,dword [iter],0x000000       ; + 15
  2255.                 ;Text 115,370,,kbpersec, kbperseclen-kbpersec  ;+ 355
  2256.                 mov eax, dword[iter]
  2257.                 ;mov ebx, 100
  2258.                 ;mul ebx
  2259.                 add eax, 215
  2260.                 mov word[linelen], ax   ; need to store it as drawline corrupts eax
  2261.                 DrawLine 215,  [linelen], 416,416,0x8080FF  ;10 + 355 , 357
  2262.                 DrawLine 215,  [linelen], 417,417,0x8080FF  ;10
  2263.                 DrawLine 215,  [linelen], 418,418,0x8080FF  ;10
  2264.         ;;;     DrawLine 20,  390, 371,371,0x8080FF  ;10
  2265.  
  2266.                 ; sample proc 1
  2267.                 Text 20,435,0x80000000,samplename1,0       ; 10 + 40 + 40 +40 + 380
  2268.                 Number 170,435,0,5,dword [samplespeed1],0x000000;   ; 25 + 40 + 40 +40 + 380
  2269.                 ;Text 115,470,0,kbpersec, kbperseclen-kbpersec  ; 25 + 40 + 40 +40 + 380
  2270.                 mov eax, dword[samplespeed1]
  2271.                 add eax, 215
  2272.                 mov dword[linelen], eax   ; need to store it as drawline corrupts eax
  2273.                 DrawLine 215,  [linelen], 436,436,0x8080FF  ;27+40 + 40 +40  + 380
  2274.                 DrawLine 215,  [linelen], 437,437,0x8080FF  ;10
  2275.                 DrawLine 215,  [linelen], 438,438,0x8080FF  ;10
  2276.  
  2277.                 ; sample proc 2
  2278.                 Text 20,455,0x80000000,samplename2,0     ; 10 + 40 + 350
  2279.                 Number 170,455,0,5,dword [samplespeed2],0x000000;   ; 25 + 40 + 350
  2280.                 ;Text 115,410,0,kbpersec, kbperseclen-kbpersec  ; 25 + 40 + 350
  2281.                 mov eax, dword[samplespeed2]
  2282.                 add eax, 215
  2283.                 mov dword[linelen], eax   ; need to store it as drawline corrupts eax
  2284.                 DrawLine 215,  [linelen], 456,456,0x8080FF  ;27+40 + 355
  2285.                 DrawLine 215,  [linelen], 457,457,0x8080FF  ;10
  2286.                 DrawLine 215,  [linelen], 458,458,0x8080FF  ;10
  2287.  
  2288.                ; sample proc 3
  2289.                 Text 20,475,0x80000000,samplename3,0     ; 10 + 40 + 40 + 38
  2290.                 Number 170,475,0,5,dword [samplespeed3],0x000000;   ; 25 + 40 + 40 + 355
  2291.                 ;Text 115,440,0,kbpersec, kbperseclen-kbpersec  ; 25 + 40 + 40 + 380
  2292.                 mov eax, dword[samplespeed3]
  2293.                 add eax, 215
  2294.                 mov dword[linelen], eax   ; need to store it as drawline corrupts eax
  2295.                 DrawLine 215,  [linelen], 476,476,0x8080FF  ;27+40 + 40
  2296.                 DrawLine 215,  [linelen], 477,477,0x8080FF  ;10
  2297.                 DrawLine 215,  [linelen], 478,478,0x8080FF  ;10
  2298.  
  2299.     mov  eax,12
  2300.     mov  ebx,2h
  2301.     mcall
  2302.  
  2303.     ret
  2304.  
  2305. linelen  dd 0
  2306. currentcpu db 'Current CPU',0
  2307. samplename1 db 'Intel Core i5 CPU', 0x000000    ; not real results!
  2308. samplespeed1 dd 62
  2309. samplename2 db 'Intel Core i3 CPU', 0
  2310. samplespeed2 dd 48
  2311. samplename3 db 'Intel Pentium Dual CPU', 0
  2312. samplespeed3 dd 35
  2313. performancestr db 'PERFORMANCE (KB/S in RSA test 256 bit)',0
  2314. ptsstring db ''
  2315. num_win2 db 0
  2316.  
  2317. ;   *******  main window *******
  2318.  
  2319. draw_window:
  2320.    mov eax,12
  2321.    mov  ebx,1h
  2322.    mcall
  2323.  
  2324.  Window 150,150,350,430, 0x34FFFFFF, 0x805080d0, title
  2325.           ; place size
  2326.  
  2327.    Button 15,345,92,23,2+0x40000000,0x03FFFFFF ; button "press for more"
  2328.  
  2329.         mov     esi, knopka
  2330.         mov     edi, img_area2
  2331.         call    load_gif2
  2332. PutImage 15,345,93,24,img_area2+8 ; image "press for more"
  2333. ;         place   size
  2334.  
  2335.  
  2336.   Button 15,380,92,23,3+0x40000000,0x03FFFFFF ; button "save"
  2337.  
  2338.         mov     esi, knopka2
  2339.         mov     edi, img_area3
  2340.         call    load_gif2
  2341.   PutImage 15,380,93,24,img_area3+8   ; image "save"
  2342. ;         place   size
  2343.  
  2344.     mov  eax,12
  2345.     mov  ebx,2h
  2346.     mcall
  2347.  
  2348.     Text 130,270,0x00000000,instruct, instructlen-instruct
  2349.     DrawLine  10,  330, 340,340,0x8080FF
  2350.     DrawLine 330,  330, 275,340;,0x8080FF
  2351.     DrawLine  10,   10, 275,340;,0x8080FF
  2352.     DrawLine  10,  125, 275,275;,0x8080FF
  2353.     DrawLine 230,  330, 275,275;,0x8080FF
  2354.  
  2355.   cmp dword[smallvendor], 'cAMD'
  2356.   jne cont
  2357.   cmp [f], $6
  2358.   jne cont
  2359.  
  2360. ;   Button 240,85,69,15,3,0x030000FF  ;  button for rating
  2361. ;    Text 245,90,0x00FFFFFF,FR, FRlen-FR ; text at button
  2362.  
  2363.    call newrating; !!!!
  2364.  
  2365.      cont:
  2366.     Text 15,50,0x00000000,tsum, tsumlen-tsum   ;
  2367.  
  2368. ;Number 82,50,0,4,dword [total],0x000000; MHz
  2369.     mov esi, total
  2370.     mov edi, tsum + 0xB  ;0xA
  2371.     call savenumber
  2372.  
  2373.     ;Number 110,50,0,2,dword [sot]; KHz
  2374.     mov esi, sot
  2375.     mov edi, tsum + 0x10
  2376.     call savenumber
  2377.  
  2378.     ;Number 75,110,1*256,1,dword [f],0x000000 ;
  2379.     mov esi, f
  2380.     mov edi, fam + 0x8     ;0x9
  2381.     call savenumber
  2382.  
  2383.     ;Number 75,130,,,dword [m]
  2384.     mov esi, m
  2385.     mov edi, mode + 0x7
  2386.     call savenumber
  2387.  
  2388.     ;Number 75,150,,,dword [s]
  2389.     mov esi, s
  2390.     mov edi, step + 0xa   ;0x9
  2391.     call savenumber
  2392.  
  2393.     ;Number 110,110,1*256,2,dword [ef]
  2394.     mov esi, ef
  2395.     mov edi, fam + 0xE    ;0x9
  2396.     call savenumber
  2397.  
  2398.     ;Number 110,130,,,dword [em]
  2399.     mov esi, em
  2400.     mov edi, mode + 0xE   ;0xD
  2401.     call savenumber
  2402.  
  2403.     mov esi, multb
  2404.     mov edi, multil + 0xB
  2405.     call savenumber
  2406.  
  2407.     ;Number 105,30,0,1,dword [multa]
  2408.     mov esi, multa
  2409.     mov edi, multil + 0xf
  2410.     call savenumber
  2411.  
  2412.     ;Number 140,170,0,2,dword [wayld],0x000000
  2413.     mov esi, wayld
  2414.     mov edi, cache2 + 0x14   ;0x14
  2415.     call savenumber
  2416.  
  2417.    ;Number 218,170,,,dword [lineld]
  2418.     mov esi, lineld
  2419.     mov edi, cache2 + 0x21
  2420.     call savenumber
  2421.  
  2422.     ;Number 140,190,,,dword [wayli]
  2423.     mov esi, wayli
  2424.     mov edi, cache + 0x14
  2425.     call savenumber
  2426.     ;Number 218,190,,,dword [lineli]
  2427.     mov esi, lineli
  2428.     mov edi, cache + 0x21
  2429.     call savenumber
  2430.  
  2431.     ;Number 140,210,,,dword [wayl2]
  2432.     mov esi, wayl2
  2433.     mov edi, cache3 + 0x14
  2434.     call savenumber
  2435.     ;Number 218,210,,,dword [linel2]
  2436.     mov esi, linel2
  2437.     mov edi, cache3 + 0x21
  2438.     call savenumber
  2439.  
  2440.     ;Number 140,230,,,dword [wayl3]
  2441.     mov esi, wayl3
  2442.     mov edi, cache4 + 0x14
  2443.     call savenumber
  2444.     ;Number 218,230,,,dword [linel3]
  2445.     mov esi, linel3
  2446.     mov edi, cache4 + 0x21
  2447.     call savenumber
  2448.  
  2449.     mov esi, L1d
  2450.     mov edi, cache2 + 0xa
  2451.     call savenumber
  2452.  
  2453. ;Number 75,190,,,dword [ L1i]
  2454.     mov esi, L1i
  2455.     mov edi, cache + 0xa
  2456.     call savenumber
  2457.  
  2458. ;Number 41,210,0,4,dword[L2]
  2459.     mov esi, L2
  2460.     mov edi, cache3 + 0x4    ;0x3
  2461.     call savenumber
  2462.  
  2463. ;Number 35,230,0,5,dword[L3]
  2464.     mov esi, L3
  2465.     mov edi, cache4 + 0x4   ;0x3
  2466.     call savenumber
  2467.  
  2468. ;-----------Features
  2469. ;Number 258,50,0,2,dword [micron]  ; micron
  2470.     mov esi, micron
  2471.     mov edi, tech + 0xE
  2472.     call savenumber
  2473.  
  2474.     mov esi, stdc
  2475.     mov edi, STDCA + 0x14
  2476.     call savenumber
  2477.  
  2478. ;Number 335,10,,,dword [extc],
  2479.     mov esi, extc
  2480.     mov edi, EXTCA + 0x14
  2481.     call savenumber
  2482.  
  2483.     Text 15,90,,cpuname, cpunamelen-cpuname;
  2484.     Text 255,250,,typen, typenlen-typen
  2485.     Text 175, 50,,tech, techlen-tech;
  2486.  
  2487.    red2:
  2488.  
  2489.     ;;;;;;;;;;;;;;;;;;;;;;;;
  2490.     goon:
  2491.  
  2492.     call decodebrand
  2493.  
  2494.    typedetect:
  2495.         mov     edx, t1
  2496.         cmp     [t], 00b
  2497.         jz      @f
  2498.         mov     edx, t2
  2499.         cmp     [t], 01b
  2500.         jz      @f
  2501.         mov     edx, t3
  2502.         cmp     [t], 11b
  2503.         jz      @f
  2504.         mov     edx, t4
  2505. @@:
  2506.         mov     ebx, 290*65536 + 250
  2507.         mov     ecx, 0x80000000
  2508.         mcall   4
  2509.  
  2510.     Text 15,250,,brandid, brandidlen-brandid
  2511.  
  2512.     Text 15,110,0x00000000,fam, famlen-fam
  2513.     Text 15,130,0x00000000,mode, modelen-mode
  2514.     Text 15,150,0x00000000,step, steplen-step
  2515.  
  2516.     Text 275,290,0x00000000,HTT, HTTlen-HTT
  2517.     Text 275,310,,sse3, sse3len-sse3
  2518.  
  2519.     Text 175,290,0x00000000,SSE41, SSE41len-SSE41
  2520.     Text 175,310,0x00000000,SSE42, SSE42len-SSE42
  2521.     Text 175,330,0x00000000,SSE5, SSE5len-SSE5
  2522.  
  2523.  
  2524.     Text 15,70,,name, namelen-name
  2525.     Text 15,290,,MMXs, MMXslen-MMXs
  2526.     Text 15,310,,SSE, SSElen-SSE
  2527.     Text 95,310,,SSE2, SSE2len-SSE2
  2528.  
  2529.     Text 95,290,,mmxp, mmxplen-mmxp
  2530.     Text 15,330,0x00000000,now, nowlen-now
  2531.     Text 95,330,,nowp, nowplen-nowp
  2532.  
  2533.     Text 115,350,0x00000000,ram, ramlen-ram
  2534.     Number 200,350,0,4,dword [ram_size_a],0x000000
  2535.  
  2536.     Number 270,350,0,4,dword [ram_size_t]
  2537.     Text 300,350,0x00000000,mb, mblen-mb
  2538.  
  2539.     Text 15, 190,0x00000000,cache, cachelen-cache
  2540.     Text 15,170,0x00000000,cache2, cache2len-cache2
  2541.     Text 15,210,,cache3, cache3len-cache3
  2542.     Text 15,230,,cache4, cache4len-cache4
  2543.     Text 110,70,0x00000000,dword[cname], 40
  2544.     call        load_gif
  2545.  
  2546.     cmp [nomultiplier], $1
  2547.     je nomultip
  2548. Text   15,30,0x00000000,multil2, multil2len-multil2
  2549. Text   175,30,0x00000000,freql2, freql2len-freql2
  2550. Number 85,30,0,2,dword [multb],0x000000;
  2551. Number 105,30,0,1,dword [multa]
  2552. Number 259,30,0,4,dword [freqbb]
  2553. Number 289,30,0,2,dword [freqll]
  2554.  
  2555.      JumpForCodename:
  2556.     cmp [codeN], $1
  2557.     je codeNIntel
  2558.     cmp [codeN], $2
  2559.     je codeNAMD
  2560.     cmp [codeN], $3
  2561.     je codeNCyrix
  2562.     cmp [codeN], $4
  2563.     je codeNCentaur
  2564.     cmp [codeN],$5
  2565.     je codeNTransmeta
  2566.     cmp [codeN], $6
  2567.     je codeNVortex
  2568.  
  2569. codeNIntel:
  2570. Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
  2571. mov     esi, intel
  2572. call    load_gif
  2573. PutImage 135,107,201,49,img_area+8
  2574. jmp nnn
  2575.  
  2576. codeNAMD:
  2577. Text 75,70,,AMDn, AMDnlen-AMDn
  2578. mov     esi, amd
  2579. call    load_gif
  2580. PutImage 135,107,201,49,img_area+8
  2581. jmp nnn
  2582.  
  2583. codeNCyrix:
  2584. Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
  2585. mov     esi, cyrix
  2586. call    load_gif
  2587. PutImage 135,107,201,49,img_area+8
  2588. jmp nnn
  2589.  
  2590. codeNCentaur:
  2591. Text 75,70,0x00000000,IDTn, IDTnlen-IDTn
  2592. mov     esi, idt
  2593. call    load_gif
  2594. PutImage 135,107,201,49,img_area+8
  2595. jmp nnn
  2596.  
  2597. codeNTransmeta:
  2598. Text 75,70,,Tranmsmetan, Tranmsmetanlen-Tranmsmetan
  2599. mov     esi, transmeta
  2600. call    load_gif
  2601. PutImage 135,107,201,49,img_area+8
  2602. jmp nnn
  2603.  
  2604. codeNVortex:
  2605. Text 75,70,0x00000000,Vortexn, Vortexnlen-Vortexn
  2606. mov     esi, vortex
  2607. call    load_gif
  2608. PutImage 135,107,201,49,img_area+8
  2609. jmp nnn
  2610.  
  2611. nomultip:
  2612. Text   15,30,0x00000000,multi3, multi3len-multi3
  2613. Text   175,30,0x00000000,freql3, freql3len-freql3
  2614. Text 259,30,0x00000000, clock0, clock0len-clock0
  2615.  
  2616. jmp JumpForCodename
  2617.  
  2618.  nnn:
  2619.  
  2620. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2621.  
  2622.     Text 15,10,0x00000000,stm, stmlen-stm
  2623. ;  Fix for deleting leading whitespaces
  2624. ;  in Intel P4's internal name
  2625. ;  by Madis Calme
  2626. ;  23.12.2004 ver. 0.81
  2627.     cld
  2628.     mov  edi,myname
  2629.     mov  al,20h
  2630.     or   ecx,-1
  2631.     repe scasb
  2632.     dec  edi
  2633.     mov  esi,mynamelen
  2634.     sub  esi,edi
  2635.     Text 105, 10, 0x00000000, edi, esi
  2636. ;-
  2637. Text 15,250,,brandid, brandidlen-brandid
  2638.  
  2639.     ret                 ;
  2640.  
  2641. call_OpenDialog:
  2642.  
  2643.     mov     [OpenDialog_data.type],1        ; Save
  2644.  
  2645.     push    dword OpenDialog_data
  2646.     call    [OpenDialog_Start]
  2647.  
  2648.     cmp     [OpenDialog_data.status],2      ; OpenDialog does not start
  2649.     je      .save_file_default_path
  2650.  
  2651.     cmp     [OpenDialog_data.status],1
  2652.     jne     still
  2653.  
  2654.     call    store_data
  2655.     jmp     still
  2656.  
  2657. .save_file_default_path:
  2658.      mov     edi,file_name
  2659.      mov     esi,file_default_path
  2660.      call    copy_file_name_path
  2661.      call    store_data
  2662.      jmp     still
  2663.  
  2664. copy_file_name_path:
  2665.         xor     eax,eax
  2666.         cld
  2667. @@:
  2668.         lodsb
  2669.         stosb
  2670.         test    eax,eax
  2671.         jnz     @r
  2672.         ret
  2673. ;-----------------------------------------------------------------------------
  2674. prepare_text_area:
  2675.         mov     edi,[store_text_area_start]
  2676.  
  2677.         push    edi
  2678.         mov     ecx,4096
  2679.         mov     eax,dword '    '
  2680.         cld
  2681.         rep     stosd
  2682.         pop     edi
  2683.         mov     [store_text_area_end], edi
  2684.  
  2685.         mov esi,title
  2686.         call addstring
  2687.  
  2688.         mov esi, stm
  2689.         call addstring
  2690.  
  2691.         mov esi, myname
  2692.         call addstring
  2693.  
  2694.    cmp [nomultiplier], $1
  2695.         je noMult
  2696.         jne detMulti
  2697.          ;jne detFreq
  2698.  
  2699.         detMulti:
  2700.         mov esi,multil
  2701.         call addstring
  2702.         jmp detFreq
  2703.  
  2704.         detFreq:
  2705.         mov esi, freql
  2706.         call addstring
  2707.  
  2708.         noMult:
  2709.         mov esi,multi3
  2710.         call addstring
  2711.  
  2712.         mov esi,freql3
  2713.         call addstring
  2714.  
  2715.         mov esi, tech
  2716.         call addstring
  2717.  
  2718.         mov esi, saveproc
  2719.         call addstring
  2720.  
  2721.         mov esi, cpuname
  2722.         call addstring
  2723.  
  2724.         mov esi, fam
  2725.         call addstring
  2726.  
  2727.         mov esi, mode
  2728.         call addstring
  2729.  
  2730.         mov esi, step
  2731.         call addstring
  2732.  
  2733.         mov esi, cache2
  2734.         call addstring
  2735.  
  2736.         mov esi, cache
  2737.         call addstring
  2738.  
  2739.         mov esi, cache3
  2740.         call addstring
  2741.  
  2742.         mov esi, cache4
  2743.         call addstring
  2744.  
  2745.         mov esi, brandid
  2746.         call addstring
  2747.  
  2748.         mov esi, MMXs
  2749.         call addstring
  2750.  
  2751.         mov esi, mmxp
  2752.         call addstring
  2753.  
  2754.         mov esi, now
  2755.         call addstring
  2756.  
  2757.         mov esi, HTT
  2758.         call addstring
  2759.  
  2760.         mov esi, SSE
  2761.         call addstring
  2762.  
  2763.         mov esi, SSE41
  2764.         call addstring
  2765.  
  2766.         mov esi, SSE42
  2767.         call addstring
  2768.  
  2769.         mov esi, SSE5
  2770.         call addstring
  2771.  
  2772.         mov esi, SSE2
  2773.         call addstring
  2774.  
  2775.         mov esi, nowp
  2776.         call addstring
  2777.  
  2778.         mov esi, sse3
  2779.         call addstring
  2780.  
  2781.         mov esi, standard
  2782.         call addstring
  2783.  
  2784.         mov esi, STDCA
  2785.         call addstring
  2786.  
  2787.         mov esi, EXTCA
  2788.         call addstring
  2789.  
  2790.         mov esi, FPU
  2791.         call addstring
  2792.  
  2793.         mov esi, VME
  2794.         call addstring
  2795.  
  2796.         mov esi, DE
  2797.         call addstring
  2798.  
  2799.         mov esi, PSE
  2800.         call addstring
  2801.  
  2802.         mov esi, TSC
  2803.         call addstring
  2804.  
  2805.         mov esi, MSR
  2806.         call addstring
  2807.  
  2808.         mov esi, PAE
  2809.         call addstring
  2810.  
  2811.         mov esi, MCE
  2812.         call addstring
  2813.  
  2814.         mov esi, CX8
  2815.         call addstring
  2816.  
  2817.         mov esi, APIC
  2818.         call addstring
  2819.  
  2820.         mov esi, Res
  2821.         call addstring
  2822.  
  2823.         mov esi, SEP
  2824.         call addstring
  2825.  
  2826.         mov esi, MTRR
  2827.         call addstring
  2828.  
  2829.         mov esi, PGE
  2830.         call addstring
  2831.  
  2832.         mov esi, MCA
  2833.         call addstring
  2834.  
  2835.         mov esi, CMOV
  2836.         call addstring
  2837.  
  2838.         mov esi, PAT
  2839.         call addstring
  2840.  
  2841.         mov esi, PSE36
  2842.         call addstring
  2843.  
  2844.         mov esi, PSNUM
  2845.         call addstring
  2846.  
  2847.         mov esi, CLFLUSHn
  2848.         call addstring
  2849.  
  2850.         mov esi, Res
  2851.         call addstring
  2852.  
  2853.         mov esi, DTS
  2854.         call addstring
  2855.  
  2856.         mov esi, ACPI
  2857.         call addstring
  2858.  
  2859.         mov esi, MMX
  2860.         call addstring
  2861.  
  2862.         mov esi, FXSR
  2863.         call addstring
  2864.  
  2865.         mov esi, SSE
  2866.         call addstring
  2867.  
  2868.  
  2869.         mov esi, SSn
  2870.         call addstring
  2871.  
  2872.         mov esi, HTT
  2873.         call addstring
  2874.  
  2875.         mov esi, TM
  2876.         call addstring
  2877.  
  2878.         mov esi, IA64
  2879.         call addstring
  2880.  
  2881.         mov esi, PBE
  2882.         call addstring
  2883.  
  2884.         mov esi, SS3
  2885.         call addstring
  2886.  
  2887.         mov esi, CNXT_ID
  2888.         call addstring
  2889.  
  2890.         mov esi, MP
  2891.         call addstring
  2892.  
  2893.         mov esi, FFXSR
  2894.         call addstring
  2895.  
  2896.         mov esi, MON
  2897.         call addstring
  2898.  
  2899.         mov esi, CX16
  2900.         call addstring
  2901.  
  2902.         mov esi, NX
  2903.         call addstring
  2904.  
  2905.         mov esi, TSCP
  2906.         call addstring
  2907.  
  2908.         mov esi, DS_CPL
  2909.         call addstring
  2910.  
  2911.         mov esi, ETPRD
  2912.         call addstring
  2913.  
  2914.         mov esi, MMXPi
  2915.         call addstring
  2916.  
  2917.         mov esi, LM
  2918.         call addstring
  2919.  
  2920.         mov esi, EST
  2921.         call addstring
  2922.  
  2923.         mov esi, SYS
  2924.         call addstring
  2925.  
  2926.         mov esi, MMXn
  2927.         call addstring
  2928.  
  2929.         mov esi, DNo
  2930.         call addstring
  2931.  
  2932.         mov esi, TM2
  2933.         call addstring
  2934.  
  2935.         mov esi, LAF
  2936.         call addstring
  2937.  
  2938.         mov esi, FFXSR
  2939.         call addstring
  2940.  
  2941.         mov esi, DN
  2942.         call addstring
  2943.  
  2944.         mov esi, VMX
  2945.         call addstring
  2946.  
  2947.         mov esi, SSSE3
  2948.         call addstring
  2949.  
  2950.         mov esi, DCA
  2951.         call addstring
  2952.  
  2953.         mov esi, CMPL
  2954.         call addstring
  2955.  
  2956.         mov esi, SVM
  2957.         call addstring
  2958.  
  2959.         mov esi, MCR8
  2960.         call addstring
  2961.  
  2962.         mov esi, SMX
  2963.         call addstring
  2964.  
  2965.         mov esi, x2APIC
  2966.         call addstring
  2967.  
  2968.         mov esi, PPCNT
  2969.         call addstring
  2970.  
  2971.         mov esi, PAGE
  2972.         call addstring
  2973.  
  2974.         mov esi, EAS
  2975.         call addstring
  2976.  
  2977.         mov esi, ABM
  2978.         call addstring
  2979.  
  2980.   mov esi, MIS
  2981.   call addstring
  2982.  
  2983.   mov  esi,OSVW
  2984.   call addstring
  2985.  
  2986.   mov esi,SKINIT_
  2987.   call addstring
  2988.  
  2989.   mov esi, WDT
  2990.   call addstring
  2991.  
  2992.         ret
  2993.  
  2994. addstring:
  2995.         mov edi, [store_text_area_end]
  2996.         xor eax, eax
  2997.         xor ecx, ecx
  2998.         cld
  2999. @@:
  3000.         lodsb
  3001.         stosb
  3002.         inc     [store_text_area_end]
  3003.         cmp     [esi], byte 0x0
  3004.         jnz     @r
  3005.         mov     al,0Ah
  3006.         stosb
  3007.  
  3008.         mov     [store_text_area_end],edi
  3009.         xor     edi,edi
  3010.         xor     esi, esi
  3011. ret
  3012.  
  3013. savenumber:
  3014.         xor eax, eax
  3015.         cld
  3016.         lodsw
  3017.         call numbertostring
  3018.         xor esi, esi
  3019.         xor edi, edi
  3020.  
  3021. ret
  3022.  
  3023. savestring:
  3024.         xor eax, eax
  3025.         cld
  3026.         lodsw
  3027.         ;call numbertostring
  3028.         xor esi, esi
  3029.         xor edi, edi
  3030.  
  3031. ret
  3032.  
  3033. numbertostring:
  3034.         mov bx, 10
  3035.         xor cx, cx
  3036. @@m1:
  3037.         xor dx, dx
  3038.         div bx
  3039.         push dx
  3040.         inc cx
  3041.         test ax, ax
  3042.         jnz @@m1
  3043. @@m2:
  3044.          pop ax
  3045.          add al, '0'
  3046.          stosb
  3047.          loop @@m2
  3048. ret
  3049.  
  3050. concatname:
  3051.         ;mov edi, [saveproc]
  3052.         xor eax, eax
  3053.         xor ecx, ecx
  3054.         cld
  3055. @@:
  3056.         lodsb
  3057.         stosb
  3058.         cmp     [esi], byte 0x0
  3059.         jnz     @r
  3060.  
  3061.         xor     edi,edi
  3062.         xor     esi, esi
  3063. ret
  3064.  
  3065. store_data:
  3066.         call prepare_text_area
  3067.         mov     eax,[store_text_area_start]
  3068.         mov     [fileinfo.return],eax
  3069.         mov     ebx,[store_text_area_end]
  3070.         sub     ebx,eax
  3071.         inc     ebx
  3072.         mov     [fileinfo.size],ebx
  3073.         mcall   70,fileinfo
  3074. ret
  3075.  
  3076.  
  3077.  
  3078. load_gif:
  3079.         mov     edi, img_area
  3080. load_gif2:
  3081.  
  3082. COLOR_ORDER equ MENUETOS
  3083.  
  3084. ; DATA AREA
  3085.  
  3086. title    db   'CPUID 2.29 by S.Kuzmin & the KolibriOS team',0
  3087.  
  3088. stm:
  3089.    db 'Internal name:', 0
  3090.  
  3091. stmlen:
  3092.  
  3093. SS42:
  3094.     db 'SSE4.2:       ',0
  3095. SS42len:
  3096.  
  3097. SMX:
  3098.     db 'SMX:       ',0
  3099. SMXlen:
  3100.  
  3101. x2APIC:
  3102.     db 'x2APIC:       '
  3103. x2APIClen:
  3104.  
  3105. PPCNT:
  3106.     db 'POPCNT:          '
  3107. PPCNTlen:
  3108.  
  3109. PAGE:
  3110.     db 'Page1Gb:     '
  3111. PAGElen:
  3112.  
  3113. EAS:
  3114.     db 'EAS:                       ',0
  3115. EASlen:
  3116.  
  3117. newLabel:
  3118.     db '3DNP:                       ',0
  3119. newLabellen:
  3120.  
  3121.  
  3122. ABM:
  3123.     db 'ABM:      '
  3124. ABMlen:
  3125.  
  3126. SSE4A:
  3127.     db 'SSE4A:       '
  3128. SSE4Alen:
  3129.  
  3130. MIS:
  3131.     db 'MIS:      ',0
  3132. MISlen:
  3133.  
  3134. DNP:
  3135.     db '3DNP:       '
  3136. DNPlen:
  3137.  
  3138. OSVW:
  3139.     db 'OSVW:       ',0
  3140. OSVWlen:
  3141.  
  3142. SKINIT_:
  3143.     db 'SKINIT:          ',0
  3144. SKINIT_len:
  3145.  
  3146. WDT:
  3147.     db 'WDT:            ',0
  3148. WDTlen:
  3149.  
  3150.  
  3151. saveproc:
  3152.    db '                                                   ',0
  3153.  
  3154. multil:
  3155.   db 'Multiplier:   .          ', 0
  3156.  
  3157. multillen:
  3158.  
  3159. multil2:
  3160.  
  3161.   db 'Multiplier              .'
  3162.  
  3163. multil2len:
  3164.  
  3165. multi3:
  3166.  
  3167.   db 'Multiplier: n/a',0
  3168.  
  3169. multi3len:
  3170.  
  3171. freql:
  3172.  
  3173.   db 'System clock:     .   MHz', 0
  3174. freqllen:
  3175.  
  3176. freql2:
  3177.  
  3178.   db 'System clock            .   MHz'
  3179.  
  3180.  
  3181. freql2len:
  3182.  
  3183. freql3:
  3184.  
  3185.   db 'System clock: n/a '
  3186.  
  3187.  
  3188. freql3len:
  3189.  
  3190. tsum:
  3191.  
  3192.     db 'Frequency:     .    MHz  ',0
  3193.  
  3194. tsumlen:
  3195.  
  3196. tech:
  3197.  
  3198.     db 'Technology: 0.   micron ', 0
  3199.  
  3200. techlen:
  3201.  
  3202. name:
  3203.  
  3204. if lang eq it
  3205.  
  3206.     db 'Codename:',0
  3207.  
  3208. else
  3209.  
  3210.     db 'CODENAME:',0
  3211.  
  3212.  
  3213. end if
  3214.  
  3215. namelen:
  3216.  
  3217. vendorname:
  3218.  
  3219. if lang eq it
  3220.  
  3221.      db 'Vendor CPU              ', 0
  3222.  
  3223. else
  3224.  
  3225.      db 'CPU VENDOR:             ', 0
  3226.  
  3227. end if
  3228.  
  3229. vendornamelen:
  3230.  
  3231. cpuname:
  3232.  
  3233. if lang eq it
  3234.  
  3235.      db 'Vendor CPU              ', 0
  3236.  
  3237. else
  3238.  
  3239.      db 'CPU VENDOR:             ', 0
  3240.  
  3241. end if
  3242.  
  3243. cpunamelen:
  3244.  
  3245.  
  3246. fam:
  3247.  
  3248. if lang eq it
  3249.  
  3250.      db 'Famiglia:   std   ext', 0
  3251.  
  3252. else
  3253.  
  3254.      db 'FAMILY:   std   ext', 0
  3255.  
  3256. end if
  3257.  
  3258. famlen:
  3259.  
  3260. mode:
  3261.  
  3262. if lang eq it
  3263.  
  3264.       db 'Modello:    std    ext', 0
  3265.  
  3266. else
  3267.  
  3268.       db 'MODEL:    std    ext', 0
  3269.  
  3270. end if
  3271.  
  3272. modelen:
  3273.  
  3274. step:
  3275.  
  3276. if lang eq it
  3277.  
  3278.        db 'Stepping:        ', 0
  3279.  
  3280. else
  3281.  
  3282.        db 'STEPPING:        ', 0
  3283.  
  3284. end if
  3285.  
  3286. steplen:
  3287.  
  3288. cache:
  3289.  
  3290.     db 'L1(inst):     KB       -way set     -byte line size',0
  3291.  
  3292. cachelen:
  3293.  
  3294. cache2:
  3295.  
  3296.      db 'L1(data):     KB       -way set     -byte line size',0
  3297.  
  3298. cache2len:
  3299.  
  3300.  
  3301. cache3:
  3302.  
  3303.     db 'L2:      KB            -way set     -byte line size',0
  3304.  
  3305. cache3len:
  3306.  
  3307. cache4:
  3308.  
  3309.    db 'L3:      KB            -way set     -byte line size',0
  3310.  
  3311. cache4len:
  3312.  
  3313. brandid:
  3314.  
  3315.     db 'Brand:', 0
  3316.  
  3317. brandidlen:
  3318.  
  3319. MMXs:
  3320.  
  3321.     db 'MMX:         ',0
  3322.  
  3323. MMXslen:
  3324.  
  3325.  
  3326. total dd 0x0
  3327.  
  3328. total1 dd 0x0
  3329.  
  3330. rating dd 0x0
  3331.  
  3332. rat dd 0x0  ;
  3333.  
  3334.  
  3335.  
  3336. ram:
  3337.  
  3338. if lang eq it
  3339.  
  3340.                 db 'RAM libera:        su'
  3341.  
  3342. else
  3343.  
  3344.                 db 'Available RAM:     out of'
  3345.  
  3346. end if
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352. ramlen:
  3353.  
  3354.  
  3355.  
  3356. NEF:
  3357.  
  3358. db 'EXTENDED FEATURES ARE NOT AVAILABLE',0
  3359.  
  3360. NEFlen:
  3361.  
  3362.  
  3363.  
  3364. mb :
  3365.  
  3366. db 'MB'
  3367.  
  3368. mblen:
  3369.  
  3370.  
  3371.  
  3372. logcpus :
  3373.  
  3374. db 'Number of logical CPU:'
  3375.  
  3376. logcpuslen:
  3377.  
  3378.  
  3379.  
  3380. speed :
  3381.  
  3382. if lang eq it
  3383.  
  3384. ;               db 'Performance',0
  3385.  
  3386. else
  3387.  
  3388. ;               db 'PERFORMANCE:',0
  3389.  
  3390. end if
  3391.  
  3392. speedlen:
  3393.  
  3394.  
  3395.  
  3396. kbpersec:
  3397.  
  3398. db 'KB/SEC'
  3399.  
  3400. kbperseclen:
  3401.  
  3402.  
  3403.  
  3404. instruct:
  3405.  
  3406. if lang eq it
  3407.  
  3408.                 db 'Set istruzioni'
  3409.  
  3410. else
  3411.  
  3412.                 db 'Instruction sets'
  3413.  
  3414. end if
  3415.  
  3416. instructlen:
  3417.  
  3418.  
  3419.  
  3420. standard    db 'Standard and Extended features plus Performance test',0
  3421.  
  3422.  
  3423. STDCA:
  3424.  
  3425.     db 'Highest STD call is         ',0
  3426.  
  3427. STDCAlen:
  3428.  
  3429.  
  3430.  
  3431. EXTCA:
  3432.  
  3433.     db 'Highest EXT call is         h',0
  3434.  
  3435. EXTCAlen:
  3436.  
  3437.  
  3438. oblom:
  3439.  
  3440. if lang eq it
  3441.  
  3442.                 db 'CPUID non e disponibile'
  3443.  
  3444. else
  3445.  
  3446.                 db 'SORRY, CPUID IS NOT AVAILABLE'
  3447.  
  3448. end if
  3449.  
  3450. oblomlen:
  3451.  
  3452.  
  3453. other:
  3454.  
  3455. if lang eq it
  3456.  
  3457.                 db 'Questo vendor non e supportato'
  3458.  
  3459. else
  3460.  
  3461.                 db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
  3462.  
  3463. end if
  3464.  
  3465. otherlen:
  3466.  
  3467. cacheP4:
  3468.  
  3469.     db 'L1(inst):     Kuops    -way set     -byte line size'
  3470.  
  3471. cacheP4len:
  3472.  
  3473.  
  3474.  
  3475.  
  3476. typen:
  3477.  
  3478. if lang eq it
  3479.  
  3480.                 db 'Tipo:'
  3481.  
  3482. else
  3483.  
  3484.                 db 'Type:'
  3485.  
  3486. end if
  3487.  
  3488.  
  3489.  
  3490. typenlen:
  3491.  
  3492.  
  3493.  
  3494. pr:
  3495.  
  3496.   db 'P-rating:'
  3497.  
  3498. prlen:
  3499.  
  3500.  
  3501.  
  3502.  
  3503. AMDn:
  3504.  
  3505.     db 'AMD',0
  3506.  
  3507. AMDnlen:
  3508.  
  3509. AMDnNew:
  3510.  
  3511.     db 'CODENAME: AMD',0
  3512.  
  3513. AMDnNewlen:
  3514.  
  3515. Inteln:
  3516.  
  3517.     db 'Intel',0
  3518.  
  3519. Intelnlen:
  3520.  
  3521. IntelnNew:
  3522.  db 'CODENAME: Intel',0
  3523.  
  3524. IntelnNewlen:
  3525.  
  3526.  
  3527. Cyrixn:
  3528.  
  3529.     db 'Cyrix',0
  3530.  
  3531. Cyrixnlen:
  3532.  
  3533. IDTn:
  3534.  
  3535.      db 'IDT/Centaur',0
  3536.  
  3537. IDTnlen:
  3538.  
  3539. Centaurn:
  3540.  
  3541.      db 'VIA',0
  3542.  
  3543. Centaurnlen:
  3544.  
  3545.  
  3546.  
  3547. Tranmsmetan:
  3548.  
  3549.      db 'Transmeta',0
  3550.  
  3551. Tranmsmetanlen:
  3552.  
  3553.  
  3554. Vortexn:
  3555.     db 'Vortex86',0
  3556. Vortexnlen:
  3557.  
  3558.  
  3559. mmxp:
  3560.  
  3561.     db 'MMX+:         ',0
  3562.  
  3563. mmxplen:
  3564.  
  3565.  
  3566.  
  3567. HTT:
  3568.  
  3569.     db 'HTT:          ',0
  3570.  
  3571. HTTlen:
  3572.  
  3573.  
  3574. HTTn:
  3575.  
  3576.     db 'HTT:         ',0
  3577.  
  3578. HTTnlen:
  3579.  
  3580.  
  3581. sse3:
  3582.  
  3583.     db 'SSE3:         ',0
  3584.  
  3585. sse3len:
  3586.  
  3587. SSE41:
  3588.     db 'SSE4.1:          ',0
  3589. SSE41len:
  3590.  
  3591. SSE42:
  3592.     db 'SSE4.2:             ',0
  3593. SSE42len:
  3594.  
  3595. SSE5:
  3596.     db 'SSE5:               ',0
  3597. SSE5len:
  3598.  
  3599. now:
  3600.  
  3601.     db '3DNOW!:         ',0
  3602.  
  3603. nowlen:
  3604.  
  3605. nowp:
  3606.  
  3607.     db '3DNOW!+:         ',0
  3608.  
  3609. nowplen:
  3610.  
  3611. ;-Type
  3612.  
  3613. t1      db      'OEM',0
  3614.  
  3615. t2      db      'Overdrive',0
  3616.  
  3617. t3      db      'Dual',0
  3618.  
  3619. t4      db      'Unknown',0
  3620.  
  3621.  
  3622.  
  3623. ;----------Intel
  3624.  
  3625. P50:
  3626.  
  3627. db 'P5 A-step',0
  3628.  
  3629. P50len:
  3630.  
  3631. P5:
  3632.  
  3633. db 'P5',0
  3634.  
  3635. P5len:
  3636.  
  3637. P54T:
  3638.  
  3639. db 'P24T Overdrive',0
  3640.  
  3641. P54Tlen:
  3642.  
  3643. P54C:
  3644.  
  3645. db 'P54C',0
  3646.  
  3647. P54Clen:
  3648.  
  3649. P55C:
  3650.  
  3651. db 'P55C (with MMX)',0
  3652.  
  3653. P55Clen:
  3654.  
  3655. ; ---
  3656.  
  3657. P60:
  3658.  
  3659. db 'Pentium Pro A-step',0
  3660.  
  3661. P60len:
  3662.  
  3663. P61:
  3664.  
  3665. db 'Pentium Pro',0
  3666.  
  3667. P61len:
  3668.  
  3669. P63:
  3670.  
  3671. db 'Pentium II (Klamath)',0
  3672.  
  3673. P63len:
  3674.  
  3675. P65:
  3676.  
  3677. db 'Pentium II (Deschutes)',0
  3678.  
  3679. P65len:
  3680.  
  3681. P66:
  3682.  
  3683. db 'Celeron (Medocino)',0
  3684.  
  3685. P66len:
  3686.  
  3687. P67:
  3688.  
  3689. db 'Pentium III (Katmai)',0
  3690.  
  3691. P67len:
  3692.  
  3693. P68:
  3694.  
  3695. db 'Pentium III (Coppermine)',0
  3696.  
  3697. P68len:
  3698.  
  3699. P69:
  3700.  
  3701. db 'Pentium M (Banias)',0
  3702.  
  3703. P69len:
  3704.  
  3705. P6A:
  3706.  
  3707. db 'Pentium III Xeon (Cascades)',0
  3708.  
  3709. P6Alen:
  3710.  
  3711. P6B:
  3712.  
  3713. db 'Pentium III (Tualatin)',0
  3714.  
  3715. P6Blen:
  3716.  
  3717. P6D:
  3718.  
  3719. db 'Pentium M (Dothan)',0
  3720.  
  3721. P6Dlen:
  3722.  
  3723. P6E:
  3724.  
  3725. db 'Pentium M (Yonah)/ Core',0
  3726.  
  3727. P6Elen:
  3728.  
  3729. P6F:
  3730.  
  3731. db 'Pentium D (Conroe)/ Core 2 (Kentsfield)',0
  3732.  
  3733. P6Flen:
  3734.  
  3735. ;---
  3736.  
  3737. PS0:
  3738.  
  3739. db 'Itanium (IA-64)',0
  3740.  
  3741. PS0len:
  3742.  
  3743. ;------------
  3744.  
  3745. PF0:
  3746.  
  3747. db 'Pentium 4 (Willamete)',0
  3748.  
  3749. PF0len:
  3750.  
  3751. PF2:
  3752.  
  3753. db 'Pentium 4 (Northwood)',0
  3754.  
  3755. PF2len:
  3756.  
  3757. PF3:
  3758.  
  3759. db 'Pentium 4 (Prescott)',0
  3760.  
  3761. PF3len:
  3762.  
  3763. PF5:
  3764.  
  3765. db 'Pentium 4 (Tejas)',0
  3766.  
  3767. PF5len:
  3768.  
  3769. PF6:
  3770.  
  3771. db 'Pentium 4 (Presler)',0
  3772.  
  3773. PF6len:
  3774.  
  3775. ;----------------Intel Celerons
  3776.  
  3777. P65c:
  3778.  
  3779. db 'Celeron (Covington)',0
  3780.  
  3781. P65clen:
  3782.  
  3783. P68c:
  3784.  
  3785. db 'Celeron (Coppermine)',0
  3786.  
  3787. P68clen:
  3788.  
  3789. P6Bc:
  3790.  
  3791. db 'Celeron (Tualatin)',0
  3792.  
  3793. P6Bclen:
  3794.  
  3795. PF0c:
  3796.  
  3797. db 'Celeron (Willamete)',0
  3798.  
  3799. PF0clen:
  3800.  
  3801. PF2c:
  3802.  
  3803. db 'Celeron (Northwood)',0
  3804.  
  3805. PF2clen:
  3806.  
  3807. PF3c:
  3808.  
  3809. db 'Celeron (Prescott)',0
  3810.  
  3811. PF3clen:
  3812.  
  3813. PF5c:
  3814.  
  3815. db 'Celeron D (Texas)',0
  3816.  
  3817. PF5clen:
  3818.  
  3819. PF6c:
  3820.  
  3821. db 'Celeron D (Presler)',0
  3822.  
  3823. PF6clen:
  3824.  
  3825. ;---------New Intel
  3826. P3A:
  3827.  
  3828. db 'IvyBridge',0
  3829.  
  3830. P3Alen:
  3831.  
  3832. P2A:
  3833.  
  3834. db 'Sandy Bridge',0
  3835.  
  3836. P2Alen:
  3837.  
  3838. P2D:
  3839. db 'Sandy bridge-E',0
  3840.  
  3841. P2Dlen:
  3842.  
  3843.  
  3844. P25:
  3845. db 'Arrandale',0
  3846. P25len:
  3847.  
  3848. P2C:
  3849. db 'Gulftown',0
  3850. P2Clen:
  3851.  
  3852. P2F:
  3853. db 'Westmere-EX',0
  3854. P2Flen:
  3855.  
  3856. P1E:
  3857. db 'Clarksfield',0
  3858. P1Elen:
  3859.  
  3860. P1A:
  3861. db 'Bloomfield',0
  3862. P1Alen:
  3863.  
  3864. P2E:
  3865. db 'Nehalem-EX',0
  3866. P2Elen:
  3867.  
  3868. P17:
  3869. db 'Yorkfield',0
  3870. P17len:
  3871.  
  3872. P1D:
  3873. db 'Dunnington',0
  3874. P1Dlen:
  3875.  
  3876. P0F:
  3877. db 'Clovertown',0
  3878. P0Flen:
  3879.  
  3880. P16:
  3881. db 'Merom Conroe',0
  3882. P16len:
  3883.  
  3884. P06:
  3885. db 'Cedar Mill',0
  3886. P06len:
  3887.  
  3888. P03:
  3889. db 'Nocona Irwindale',0
  3890. P03len:
  3891.  
  3892. P04:
  3893. db 'NoconaIrwindale',0
  3894. P04len:
  3895.  
  3896. P0D:
  3897. db 'Dothan',0
  3898. P0Dlen:
  3899.  
  3900. P36:
  3901. db 'Cedarview',0
  3902. P36len:
  3903.  
  3904. P26:
  3905. db 'Lincroft',0
  3906. P26len:
  3907.  
  3908. P1C:
  3909. db 'Pineview',0
  3910. P1Clen:
  3911.  
  3912. no_known:
  3913. db 'SORRY, CODENAME IS NOT SUPPORTED YET '
  3914.  
  3915. ;---------AMD
  3916.  
  3917. A50     db 'K5 (PR75, PR90, PR100)',0
  3918.  
  3919. A51     db '5k86 (PR120, PR133)',0
  3920.  
  3921. A52     db '5k86 (PR166)',0
  3922.  
  3923. A53     db '5k86 (PR200)',0
  3924.  
  3925. A56     db 'K6',0
  3926.  
  3927. A57     db 'K6',0
  3928.  
  3929. A58     db 'K6-2',0
  3930.  
  3931. A59     db 'K6-III',0
  3932.  
  3933. A5D     db 'K6-2+ or K6-III+',0
  3934.  
  3935. ;-------------------
  3936.  
  3937. At1     db 'Athlon',0
  3938.  
  3939. At2     db 'Athlon',0
  3940.  
  3941. At3     db 'Duron (Spitfire)',0
  3942.  
  3943. At4     db 'Athlon (Thunderbird)',0
  3944.  
  3945. At6     db 'AthlonXP (Palomino)',0
  3946.  
  3947. At7     db 'Duron (Morgan)',0
  3948.  
  3949. At8     db 'AthlonXP (Thoroughbred)',0
  3950.  
  3951. At8a    db 'Duron (Applebred)',0
  3952.  
  3953. Ata     db 'AthlonXP (Barton)',0
  3954.  
  3955. Atat    db 'AthlonXP (Thorton)',0
  3956.  
  3957. ;-------------------
  3958. AthlonKuma:
  3959.  
  3960. db 'AMD Athlon 7750 Black Edition',0
  3961.  
  3962. AthlonKumalen:
  3963.  
  3964. AB23:
  3965.  
  3966. db 'Opteron 2300-series',0
  3967.  
  3968. AB23len:
  3969.  
  3970. AB83:
  3971.  
  3972. db 'Opteron 8300-series',0
  3973.  
  3974. AB83len:
  3975.  
  3976. AB9:
  3977. db 'Phenom X4',0
  3978.  
  3979. AB9len:
  3980.  
  3981. AB8right2:
  3982.  
  3983. db 'Phenom X3',0
  3984.  
  3985. AB8right2len:
  3986.  
  3987. AB4:
  3988.  
  3989. db 'Athlon X2',0
  3990.  
  3991. AB4len:
  3992.  
  3993. AB1:
  3994.  
  3995. db 'Sempron',0
  3996.  
  3997. AB1len:
  3998.  
  3999. ABC2:
  4000.  
  4001. db 'Opteron (Shanghai) 2387',0
  4002.  
  4003. ABC2len:
  4004.  
  4005. AB6:
  4006.  
  4007. db 'Opteron (Magny-Cours)',0
  4008.  
  4009. AB6len:
  4010.  
  4011. ABC3:
  4012.  
  4013. db 'Opteron (Shanghai) 8300 series',0
  4014.  
  4015. ABC3len:
  4016.  
  4017. ABM2:
  4018.  
  4019. db 'Turion II ',0
  4020.  
  4021. ABM2len:
  4022.  
  4023. ;---
  4024.  
  4025. AF1:
  4026.  
  4027. db 'Dual-core Opteron',0
  4028.  
  4029. AF1len:
  4030.  
  4031. AF3:
  4032.  
  4033. db 'Athlon 64 (Toledo)',0
  4034.  
  4035. AF3len:
  4036.  
  4037. AF4:
  4038.  
  4039. db 'Athlon 64 (ClawHammer)',0
  4040.  
  4041. AF4len:
  4042.  
  4043. AF5:
  4044.  
  4045. db 'Opteron/Athlon 64 FX (SledgeHammer)',0
  4046.  
  4047. AF5len:
  4048.  
  4049.  
  4050. AFC:
  4051.  
  4052. db 'Athlon 64 (Newcastle)',0
  4053.  
  4054. AFClen:
  4055.  
  4056.  
  4057. AFF:
  4058.  
  4059. db 'Athlon 64 (Winchester)',0
  4060.  
  4061. AFFlen:
  4062.  
  4063.  
  4064. AFS:
  4065.  
  4066. db 'Athlon 64 (San Diego)',0
  4067.  
  4068. AFSlen:
  4069.  
  4070.  
  4071. AFV:
  4072.  
  4073. db 'Athlon 64 (Venice)',0
  4074.  
  4075. AFVlen:
  4076.  
  4077.  
  4078. AFCs:
  4079.  
  4080. db 'Sempron (Paris)',0
  4081.  
  4082. AFCslen:
  4083.  
  4084.  
  4085.  
  4086. AFCsp:
  4087.  
  4088. db 'Sempron (Palermo)',0
  4089.  
  4090. AFCsplen:
  4091.  
  4092.  
  4093.  
  4094. ;---------Cyrix
  4095.  
  4096. C52:
  4097.  
  4098. db '6x86 M1',0
  4099.  
  4100. C52len:
  4101.  
  4102. C54:
  4103.  
  4104. db 'MediaGX',0
  4105.  
  4106. C54len:
  4107.  
  4108. C60:
  4109.  
  4110. db '6x86MX M2',0
  4111.  
  4112. C60len:
  4113.  
  4114. C65:
  4115.  
  4116. db 'C3 (Cyrix M2)',0 ;?
  4117.  
  4118. C65len:
  4119.  
  4120. ;--------IDT
  4121.  
  4122. V54:
  4123.  
  4124. db 'WinChip C6',0
  4125.  
  4126. V54len:
  4127.  
  4128. V58:
  4129.  
  4130. db 'WinChip 2',0
  4131.  
  4132. V58len:
  4133.  
  4134. V59:
  4135.  
  4136. db 'WinChip 3',0
  4137.  
  4138. V59len:
  4139.  
  4140. ;-------VIA
  4141.  
  4142. V66:
  4143.  
  4144. db 'C3 (Samuel)',0  ; Joshua is unreleased 065
  4145.  
  4146. V66len:
  4147.  
  4148. V67:
  4149.  
  4150. db 'C3 (Samuel2/Ezra)',0 ; ?
  4151.  
  4152. V67len:
  4153.  
  4154. V68:
  4155.  
  4156. db 'C3 (Ezra-T/Eden)',0 ;?
  4157.  
  4158. V68len:
  4159.  
  4160. V69:
  4161.  
  4162. db 'C3 (Antaur/Nehemiah)',0 ;?
  4163.  
  4164. V69len:
  4165.  
  4166. VA:
  4167.  
  4168. db 'C7 (Esther)',0 ;?
  4169.  
  4170. VAlen:
  4171.  
  4172. ;---------Transmeta
  4173.  
  4174. T5:
  4175.  
  4176. db 'Crusoe',0 ;
  4177.  
  4178. T5len:
  4179.  
  4180. TF:
  4181.  
  4182. db 'Efficeon',0 ;
  4183.  
  4184. TFlen:
  4185.  
  4186. ;---------
  4187.  
  4188. NG:
  4189.  
  4190.     db 'Next generation CPU',0
  4191.  
  4192. NGlen:
  4193.  
  4194.  
  4195. athloncoef      db      110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 120
  4196.  
  4197.                 db      190, 120, 200, 130, 135, 140, 210, 150, 220, 160, 165, 170, 180, 230, 240
  4198.  
  4199. athlonmcoef:    db      110, 115, 120, 125, 50, 55, 60, 65,  70, 75, 80, 85, 90, 95, 100, 105
  4200.  
  4201.                 db      30, 190, 40, 200, 130, 135, 14, 210, 150, 220, 160, 165, 170, 230, 240
  4202.  
  4203. athloncoef3     db      45, 50, 40, 55, 25, 30, 60, 35
  4204.  
  4205. p4coef          db      160, 170, 180, 190, 200, 210, 220, 230, 80, 90, 100, 110, 120, 130, 140, 150    ; Pentium 4 (Willamete)
  4206.  
  4207. 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
  4208.  
  4209. 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
  4210.  
  4211. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4212. I_END:
  4213.  
  4214. img_area:          ; image is going to be unpacked to here
  4215. rb 201*49*3+8      ; image resolution (bits to reserve)
  4216.  
  4217. img_area2:         ; image is going to be unpacked to here
  4218. rb 93*24*3+8       ; image resolution (bits to reserve)
  4219.  
  4220. img_area3:         ; image is going to be unpacked to here
  4221. rb 93*24*3+8       ; image resolution (bits to reserve)
  4222.  
  4223. gif_hash_area:
  4224. rd 4096+1          ;hash area size for unpacking gif
  4225. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  4226.  
  4227. system_dir_ProcLib      db '/sys/lib/proc_lib.obj',0
  4228.  
  4229. err_message_found_lib2  db 'proc_lib.obj - Not found!',0
  4230.  
  4231. err_message_import2     db 'proc_lib.obj - Wrong import!',0
  4232.  
  4233. head_f_i:
  4234. head_f_l        db 'error',0
  4235. ;---------------------------------------------------------------------
  4236. l_libs_start:
  4237.  
  4238. library02  l_libs system_dir_ProcLib+9, path, library_path, system_dir_ProcLib, \
  4239. err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
  4240.  
  4241. end_l_libs:
  4242. ;---------------------------------------------------------------------
  4243. align 4
  4244. ProcLib_import:
  4245. OpenDialog_Init         dd aOpenDialog_Init
  4246. OpenDialog_Start        dd aOpenDialog_Start
  4247. ;OpenDialog__Version    dd aOpenDialog_Version
  4248.         dd      0
  4249.         dd      0
  4250. aOpenDialog_Init        db 'OpenDialog_init',0
  4251. aOpenDialog_Start       db 'OpenDialog_start',0
  4252. ;aOpenDialog_Version    db 'Version_OpenDialog',0
  4253. ;---------------------------------------------------------------------
  4254. align 4
  4255. OpenDialog_data:
  4256. .type                   dd 0
  4257. .procinfo               dd Proc_Info    ;+4
  4258. .com_area_name          dd communication_area_name      ;+8
  4259. .com_area               dd 0    ;+12
  4260. .opendir_pach           dd temp_dir_pach        ;+16
  4261. .dir_default_pach       dd communication_area_default_pach      ;+20
  4262. .start_path             dd open_dialog_path     ;+24
  4263. .draw_window            dd draw_window  ;+28
  4264. .status                 dd 0    ;+32
  4265. .openfile_pach          dd file_name    ;+36
  4266. .filename_area          dd filename_area        ;+40
  4267. .filter_area            dd Filter
  4268. .x:
  4269. .x_size                 dw 420 ;+48 ; Window X size
  4270. .x_start                dw 10 ;+50 ; Window X position
  4271. .y:
  4272. .y_size                 dw 320 ;+52 ; Window y size
  4273. .y_start                dw 10 ;+54 ; Window Y position
  4274.  
  4275. communication_area_name:
  4276.         db 'FFFFFFFF_open_dialog',0
  4277. open_dialog_path:
  4278.         db '/sys/File Managers/opendial',0
  4279. communication_area_default_pach:
  4280.         db '/sys',0
  4281. Filter:
  4282. dd      Filter.end - Filter.1
  4283. .1:
  4284. db      'TXT',0
  4285. db      'LOG',0
  4286. .end:
  4287. dd      0
  4288.  
  4289. file_default_path:
  4290.         db '/sys/'
  4291. start_temp_file_name:
  4292.         db 'CPUID.txt',0
  4293.  
  4294. ;---------------------------------------------------------------------
  4295. align   4
  4296. fileinfo:
  4297. .subfunction    dd 2
  4298. .Offset         dd 0
  4299. .Offset_1       dd 0
  4300. .size           dd 4096
  4301. .return         dd 0
  4302.                 db 0
  4303. .name:          dd file_name
  4304.  
  4305. store_text_area_start   dd ?
  4306. store_text_area_end     dd ?
  4307. store_text_size         dd ?
  4308.  
  4309. ;---------------------------------------------------------------------
  4310. library_path:
  4311.         rb 4096
  4312. ;---------------------------------------------------------------------
  4313. path:
  4314.         rb 4096
  4315. ;---------------------------------------------------------------------
  4316. temp_dir_pach:
  4317.         rb 4096
  4318. ;---------------------------------------------------------------------
  4319. file_name:
  4320.         rb 4096
  4321. ;---------------------------------------------------------------------
  4322. file_name_1:
  4323.         rb 4096
  4324. ;---------------------------------------------------------------------
  4325. filename_area:
  4326.         rb 256
  4327. ;---------------------------------------------------------------------
  4328.         rb 4096
  4329. stacktop:
  4330. ;---------------------------------------------------------------------
  4331. Proc_Info       process_information
  4332. ; RSA test data
  4333.  
  4334. align 4
  4335.  
  4336.   num1 rd 40
  4337.  
  4338.   num2 rd 40
  4339.  
  4340.   num3 rd 40
  4341.  
  4342.   iter rd 1
  4343.  
  4344.   openkey rd 1
  4345.  
  4346.  
  4347.  
  4348. IncludeUGlobals
  4349.  
  4350. nocpuid db 0x0
  4351.  
  4352. ost dd ?
  4353.  
  4354. sot dd ?
  4355.  
  4356. f dd ?
  4357.  
  4358. m dd ?
  4359.  
  4360. s dd ?
  4361.  
  4362. t dd ?
  4363.  
  4364.  
  4365.  
  4366. ef dd ?
  4367.  
  4368. em dd ?
  4369.  
  4370.  
  4371.  
  4372. multiplier dd ?
  4373.  
  4374. multa dd ?
  4375.  
  4376. multb dd ?
  4377.  
  4378. smallvendor dd ?
  4379.  
  4380. L1d  dd ?
  4381.  
  4382. L1i  dd ?
  4383.  
  4384. L2   dd ?
  4385.  
  4386. L3   dd ?
  4387.  
  4388. micron dd ?
  4389.  
  4390. brand dd ?
  4391.  
  4392. newpc  dd ?
  4393.  
  4394. nomultiplier  dd ?
  4395.  
  4396. ram_size_a dd ?
  4397.  
  4398. ram_size_t dd ?
  4399.  
  4400.  
  4401.  
  4402. stdc dd ?
  4403.  
  4404. extc dd ?
  4405.  
  4406.  
  4407.  
  4408. FRS dd ?
  4409.  
  4410. freqsel db ?
  4411.  
  4412. sse3sup db ?
  4413.  
  4414. sse41sup dd ?
  4415. sse42sup dd ?
  4416. sse5sup dd ?
  4417.  
  4418.  
  4419.  
  4420. freqbb dd ?
  4421.  
  4422. freqll dd ?
  4423.  
  4424.  
  4425.  
  4426. wayli dd ?
  4427.  
  4428. lineli dd ?
  4429.  
  4430.  
  4431.  
  4432. wayld dd ?
  4433.  
  4434. lineld dd ?
  4435.  
  4436.  
  4437.  
  4438. wayl2 dd ?
  4439.  
  4440. linel2 dd ?
  4441.  
  4442.  
  4443.  
  4444. wayl3 dd ?
  4445.  
  4446. linel3 dd ?
  4447.  
  4448. che db ? ; numbers of calls for Intel caches detection
  4449.  
  4450. cname dd ?
  4451.  
  4452. codeN dd ?
  4453.  
  4454. myname:
  4455.  
  4456.    rb 48
  4457.  
  4458. mynamelen:
  4459.    db 0x0
  4460.  
  4461.  
  4462. align 4
  4463.  
  4464.  
  4465.  
  4466.   thread2_stack_area rb 64
  4467.  
  4468.   thread2_esp = $
  4469.  
  4470. U_END:
  4471.  
  4472.  
  4473.