Subversion Repositories Kolibri OS

Rev

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