Subversion Repositories Kolibri OS

Rev

Rev 551 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
223 Ghost 1
;******************************************************************************
2
; project name:    CPUID                                                      *
3
; target platform: KolibriOS, x86 (IA-32), x86-64 achitectures                *
450 Ghost 4
; compiler:        flat assembler 1.67.21                                     *
515 heavyiron 5
; version:         2.21                                                        *
6
; last update:     18th May 2007         1st 2nd 3rd 4th 5th 6th 7th 8th 9th  *
223 Ghost 7
; maintained by:   Sergey Kuzmin aka Wildwest                                 *
8
; e-mail:          kuzmin_serg@list.ru                                        *
9
; site:            http://coolthemes.narod.ru/files.html                      *
318 heavyiron 10
; license:         Copyright 2004-2007 Sergey Kuzmin and co-authors           *
223 Ghost 11
;                  Rules:                                                     *
12
;                  1)you can use pieces of code in your project, but should   *
318 heavyiron 13
;                    mention the original author (include copyright notice);  *
223 Ghost 14
;                  2)if you modify CPUID (improve, port, translate, etc) send *
318 heavyiron 15
;                    your changes to the maintainer or make about post changes*
16
;                    at forum  http://meos.sysbin.com                         *
223 Ghost 17
;-----------------------------------------------------------------------------*
18
; English comments                                                            *
19
;------------------------------------------------------------------------------
20
use32
21
  org	 0x0
22
  db	 'MENUET01'
23
  dd	 0x01
24
  dd	 START
25
  dd	 I_END
451 heavyiron 26
  dd U_END+4096
27
  dd U_END+4096
223 Ghost 28
  dd	 0x0
29
  dd	 0x0
30
 
485 heavyiron 31
include '..\..\..\macros.inc' ; useful macroses
32
include 'draw.inc'
33
include 'brand.inc'           ;Brand ID decoding
34
include 'caches.inc'          ;(L1 and L2 cashes decoding for Intel)
35
include 'multipli.inc'        ;(multiplier decoding)
36
include 'features.inc'        ;(features decoding)
223 Ghost 37
 
38
include 'rsatest.inc'
39
include 'variable.inc'
40
 
318 heavyiron 41
 
42
 
223 Ghost 43
START:			;   LET'S GO!!!
44
;------------
45
CYCLES:
46
;    CPU speed
47
    mov eax, 18
48
    mov ebx,5
485 heavyiron 49
    mcall
318 heavyiron 50
    mov [total1],eax  ;in Hz,  example 1600490000
223 Ghost 51
    xor  edx,edx
52
    mov  ebx,1000000
53
    div  ebx
318 heavyiron 54
    mov [total], eax  ; in Mhz,  example 1600
223 Ghost 55
    xor edx, edx
56
    mov eax, [total1]
57
    mov ebx, 10000
58
    div ebx
59
    mov [ost], eax    ; example 160049
532 diamond 60
    mov ecx, [total]
61
    imul ecx, 100
62
    neg  ecx
63
    add  ecx, eax
64
    mov [sot], ecx    ; example 49
223 Ghost 65
;------------
66
cpu:		      ;is CPUID supported?
67
  pushfd	      ;push original EFLAGS
68
  pop eax	      ;get original EFLAGS
69
  mov ebx, eax	      ;save original EFLAGS
70
  xor eax, 00200000h  ;flip 21th bit in EFLAGS
71
  push eax	      ;save new EFLAGS value on stack
72
  popfd 	      ;replace current EFLAGS value
73
  pushfd	      ;get new EFLAGS
74
  pop eax	      ;store new EFLAGS in EAX
75
  cmp eax, ebx	      ;compare values of 21th bit
76
  jz NO_CPUID	      ;CPUID isn't supported
77
;------------
78
CPUNAME:	      ; VENDOR
79
    mov   eax,0       ; eax=0
80
    cpuid
81
 
82
    mov [stdc], eax   ; number of calls
83
    mov   [cpuname+ 12],ebx
84
    mov   [cpuname+ 16],edx
85
    mov   [cpuname+ 20],ecx
86
    mov   [smallvendor],ecx
87
 
88
; for various vendors we should later use different methods
89
 
90
;Decoding cache L1 and L2 for Intel
91
 
532 diamond 92
  cmp ecx, 'ntel'
223 Ghost 93
  jne cpu1     ;is not Intel
94
 
95
;Starting L1, L2, L3 caches detection (Intel made it VERY HARD)
96
 
97
mov eax, 2
98
cpuid
99
 
100
mov [che], al	     ; number of calls
101
multik:
102
 
103
.eaxl:
532 diamond 104
test  eax, eax       ;    Test bit 31
105
js    .ebxl	     ;    <> 0 =>invalid values
106
call decodecache24
223 Ghost 107
.ebxl:
532 diamond 108
test  ebx, ebx
109
js    .ecxl
223 Ghost 110
mov eax, ebx
532 diamond 111
call decodecache32
223 Ghost 112
.ecxl:
532 diamond 113
test  ecx, ecx
114
js    .edxl
223 Ghost 115
mov eax, ecx
532 diamond 116
call decodecache32
223 Ghost 117
.edxl:
532 diamond 118
test  edx, edx
119
js    cpu1
223 Ghost 120
mov eax, edx
532 diamond 121
call decodecache32
223 Ghost 122
 
532 diamond 123
dec [che]    ; we made all calls
223 Ghost 124
je cpu1
125
 
126
multi: ; not yet
127
 
128
mov eax, 2  ; so we made call again
129
cpuid
130
 
131
jmp multik
132
 
133
;  FAMILY MODEL STEPPING
134
cpu1:
135
    xor eax, eax
136
    inc eax	  ; eax=1
137
    cpuid
138
 
139
mov ecx, eax
140
shr ecx,8	  ;   shift it to the correct position
532 diamond 141
and ecx,0000000Fh ;   get CPU family
223 Ghost 142
mov dword[f],ecx
143
 
144
mov ecx, eax
145
shr ecx,4
532 diamond 146
and ecx,0000000Fh ;    get CPU model
223 Ghost 147
mov dword[m],ecx
148
 
149
mov ecx, eax
150
and ecx,0000000Fh ;   get CPU stepping
151
mov dword[s],ecx
152
 
153
;-
154
mov ecx, eax	  ; get Type
155
shl ecx, 18
156
shr ecx,30
157
;and ecx, 0000000Fh ; only two lower bits can be nonzero
158
mov dword[t], ecx
159
;=======================================================
160
 
161
cmp dword[smallvendor], 'cAMD'
162
jz maybe_athlon
163
cmp dword[smallvendor], 'ntel'
532 diamond 164
jnz no_full   ; if not AMD or Intel
223 Ghost 165
 
166
detect_it:
167
cmp [f], 0Fh
168
jne no_full
169
 
170
full:
171
 
172
mov ecx, eax	      ; get Extended model
173
shr ecx,16	      ;shift it to the correct position
174
and ecx, 0000000Fh
175
shl ecx, 4
176
add ecx, [m]
177
mov dword[em],ecx     ;  effective    model
178
 
179
mov ecx, eax	      ; get Extended family
180
shr ecx, 20	      ;shift it to the correct position
181
and ecx, 000000FFh
182
add ecx, [f]
318 heavyiron 183
mov dword[ef],ecx     ; effective family
223 Ghost 184
 
185
 
186
jmp fut
187
 
188
no_full:
189
 
190
mov ecx, [m]
191
mov [em], ecx
192
 
193
mov ecx, [f]
194
mov [ef], ecx
195
 
196
jmp fut
197
 
198
maybe_athlon:
318 heavyiron 199
mov eax, 0x80000001		  ; CPUID ext. function 0x80000001
223 Ghost 200
cpuid
201
mov ecx, eax
202
shr ecx,8	  ;   shift it to the correct position
532 diamond 203
and ecx,0000000Fh ;   get CPU family
223 Ghost 204
mov dword[ef],ecx
205
 
206
mov ecx, eax
207
shr ecx,4
532 diamond 208
and ecx,0000000Fh ;    get CPU model
223 Ghost 209
mov dword[em],ecx
210
 
211
fut:
212
 
213
call decode_sse3
214
;-
215
    call decode_extended
216
 
532 diamond 217
mov  dword [myname], $612F6E
223 Ghost 218
 
532 diamond 219
        cmp     [extc], $80000003
220
        jbe     .noname
223 Ghost 221
 
222
    mov       eax,$80000002
223
    cpuid
224
    mov   [myname],eax
225
    mov   [myname+4],ebx
226
    mov   [myname+8],ecx
227
    mov   [myname+12],edx
228
    mov   eax,$80000003
229
    cpuid
230
    mov   [myname+16],eax
231
    mov   [myname+20],ebx
232
    mov   [myname+24],ecx
233
    mov   [myname+28],edx
234
    mov   eax,$80000004
235
    cpuid
236
    mov   [myname+32],eax
237
    mov   [myname+36],ebx
238
    mov   [myname+40],ecx
239
    mov   [myname+44],edx
240
 
241
.noname:
242
red:
243
 
244
;mov byte [multiplier], 115;     ; for testing
245
 
246
call multipl			      ; get multiplier
247
mov byte [multiplier], cl
248
 
532 diamond 249
mov   dword [freqbb], 0
250
mov   dword [freqll], 0
223 Ghost 251
 
532 diamond 252
mov   ebx, dword [multiplier]
253
test  ebx, ebx
254
jz output
223 Ghost 255
 
256
calc:
257
 
258
mov eax,dword [ost]   ; example 166474
259
imul eax, 10	      ; example 1664740
532 diamond 260
xor edx,edx
261
div ebx               ; get system clock (if multiplier detected)
223 Ghost 262
 
532 diamond 263
xor edx, edx                    ; example eax=16647
264
mov ebx, 100
265
div ebx
266
mov dword [freqbb], eax         ; example 166
267
mov dword [freqll], edx         ; example 47
223 Ghost 268
 
269
xor edx, edx
270
    mov eax,dword[multiplier]  ; example 115
271
    mov  ebx,10
272
    div  ebx
273
    mov dword[multb], eax  ;   example 11
532 diamond 274
    mov dword[multa], edx    ; example 5
223 Ghost 275
 
276
output:
277
 
278
   call draw_window    ;     Draw window
279
 
280
typedetect:
532 diamond 281
        mov     edx, t1
282
        cmp     [t], 00b
283
        jz      @f
284
        mov     edx, t2
285
        cmp     [t], 01b
286
        jz      @f
287
        mov     edx, t3
288
        cmp     [t], 11b
289
        jz      @f
290
        mov     edx, t4
291
@@:
292
        mov     ebx, 290*65536 + 250
293
        mov     ecx, 0x80000000
294
        mcall   4
223 Ghost 295
 
296
PROCCORE:    ;   Who are you?
297
; Intel - "GenuineIntel"           +
298
; AMD - "AuthenticAMD"             +
299
; Cyrix - "CyrixInstead"           +
300
; UMC - "UMC UMC UMC "
301
; NexGen - "NexGenDriven"
302
; Centaur - "CentaurHauls"         +
303
; Rise Technology - "RiseRiseRise"
304
; SiS - "SiS SiS SiS "
305
; Transmeta - "GenuineTMx86"       +
306
; National Semiconductor - "Geode by NSC"
307
 
308
  cmp dword[smallvendor], 'ntel'
309
  jz Intel
310
  cmp dword[smallvendor], 'cAMD'
311
  jz AMD
312
  cmp dword[smallvendor], 'tead'
313
  jz Cyrix
314
  cmp dword[smallvendor], 'auls'
315
  jz Centaur
316
  cmp dword[smallvendor], 'Mx86'
317
  jz Transmeta
318
 
319
; cmp ecx, 'UMC '
320
; jz .UMC
321
; cmp ecx, 'iven'
322
; jz .NexGen
323
; cmp ecx, 'Rise'
324
;  jz .Rise
325
; cmp ecx, 'SiS '
326
; jz .SiS
327
; cmp ecx, ' NSC'
328
; jz .NSC
532 diamond 329
; jmp Other   ;  I don't know what to do with you...
223 Ghost 330
Other:
451 heavyiron 331
Text 75,70,0x00000000,other, otherlen-other
223 Ghost 332
    jmp MMXtest
333
;-------------------------
334
 
335
AMD:
336
 
451 heavyiron 337
Text 15, 190,0x00000000,cache, cachelen-cache
223 Ghost 338
 
532 diamond 339
Text 75,70,,AMDn, AMDnlen-AMDn
223 Ghost 340
 
341
	mov	esi, amd
342
	call	load_gif
515 heavyiron 343
PutImage 135,107,201,49,img_area+8
318 heavyiron 344
;         place   size
223 Ghost 345
 
346
; Relax, man. AMD made PRETTY SIMPLE cache detection routine
347
;CACHE1:
348
mov eax, 80000005h
349
    cpuid
318 heavyiron 350
 
532 diamond 351
movzx eax, cl
318 heavyiron 352
mov [lineld], eax
353
 
354
mov eax, ecx
355
;shl eax, 8
356
;shr eax, 24
357
 
358
and eax,00FF0000h
359
shr eax, 16
360
mov [wayld], eax
361
 
223 Ghost 362
shr ecx, 24
363
mov [L1d], ecx
318 heavyiron 364
 
365
 
532 diamond 366
movzx eax, dl
318 heavyiron 367
mov [lineli], eax
368
 
369
mov eax, edx
370
;shl eax, 8
371
;shr eax, 24
372
 
373
and eax,00FF0000h
374
shr eax, 16
375
mov [wayli], eax
376
 
377
 
223 Ghost 378
shr edx, 24
379
mov [L1i], edx
318 heavyiron 380
 
381
 
223 Ghost 382
;CACHE2:
383
mov eax, 80000006h
384
    cpuid
318 heavyiron 385
 
532 diamond 386
movzx eax, cl
318 heavyiron 387
mov dword[linel2], eax
388
 
532 diamond 389
push ecx
390
shr ecx, 12+1
391
and ecx, 0x7
392
mov eax, 1
393
shl eax, cl
394
mov dword [wayl2], eax
395
pop ecx
318 heavyiron 396
 
223 Ghost 397
shr ecx, 16
398
mov [L2],ecx
318 heavyiron 399
 
223 Ghost 400
    cmp [f], $5
401
    jz .fiv
402
    cmp [f], $6
403
    jz .si
404
    cmp [f], $F
405
    jz fif
406
.fiv:	 ;     Family=5
532 diamond 407
        mov     [micron], 50
408
        mov     edx, A50
409
        cmp     [m], $0
410
        jz      @f
411
        mov     [micron], 35
412
        mov     edx, A51
413
        cmp     [m], $1
414
        jz      @f
415
        mov     edx, A52
416
        cmp     [m], $2
417
        jz      @f
418
        mov     edx, A53
419
        cmp     [m], $3
420
        jz      @f
421
        mov     [micron], 30
422
        mov     edx, A56
423
        cmp     [m], $6
424
        jz      @f
425
        mov     [micron], 25
426
        mov     edx, A57
427
        cmp     [m], $7
428
        jz      @f
429
        mov     edx, A58
430
        cmp     [m], $8
431
        jz      @f
432
        mov     edx, A59
433
        cmp     [m], $9
434
        jz      @f
435
        mov     [micron], 18
436
        mov     edx, A5D
437
@@:
438
        jmp     @f
439
 
223 Ghost 440
.si:   ;    Family=6
532 diamond 441
        mov     [micron], 25
442
        mov     edx, At1
443
        cmp     [m], $1
444
        jz      @f
445
        mov     [micron], 18
446
        mov     edx, At2
447
        cmp     [m], $2
448
        jz      @f
449
        mov     edx, At3
450
        cmp     [m], $3
451
        jz      @f
452
        mov     edx, At4
453
        cmp     [m], $4
454
        jz      @f
455
        cmp     [m], $6
456
        jz      A6
457
        mov     [micron], 13
458
        mov     edx, At7
459
        cmp     [m], $7
460
        jz      @f
461
        cmp     [m], $8
462
        jz      A8
463
        jmp     AA
464
@@:
465
        Text    100,70,0x80000000
466
        jmp     MMXtest
223 Ghost 467
A6:
532 diamond 468
        mov     [FRS], 266  ;!!!!!!
223 Ghost 469
 
532 diamond 470
        Number  315,90,0,3,dword [FRS],0x000000; MHz
223 Ghost 471
 
532 diamond 472
        call    newrating; !!!!
223 Ghost 473
 
532 diamond 474
        Text    245,70,0x00000000,pr, prlen-pr
223 Ghost 475
 
532 diamond 476
        Number  310,70,0,4,dword [rating],0x000000
477
        mov     edx, At6
478
        jmp     @b
223 Ghost 479
 
480
A8:
481
 
532 diamond 482
        mov     [FRS], 266	;!!!!!!
223 Ghost 483
 
532 diamond 484
        Number  315,90,0,3,dword [FRS],0x000000; MHz
223 Ghost 485
 
532 diamond 486
        cmp     [L2], 256
487
        jl      .App  ; Applebred
223 Ghost 488
 
532 diamond 489
        call    newrating;!!!!
223 Ghost 490
 
532 diamond 491
        Text    245,70,0x00000000,pr, prlen-pr
492
        Number  310,70,0,4,dword [rating],0x000000
493
        mov     edx, At8
494
        jmp     @b
223 Ghost 495
 
532 diamond 496
.App:
497
        mov     edx, At8a
498
        jmp     @b
223 Ghost 499
 
500
AA:
501
 
532 diamond 502
        mov     [FRS], 333; !!!!
503
        Text    245,70,0x00000000,pr, prlen-pr
223 Ghost 504
 
532 diamond 505
        Number  315,90,0,3,dword [FRS],0x000000; MHz
223 Ghost 506
 
532 diamond 507
        mov     edx, Atat
508
        cmp     [L2], 256
509
        jl      .Tho ; Thorton
510
        mov     edx, Ata
511
.Tho:
512
        push    edx
223 Ghost 513
 
532 diamond 514
        call    newrating;!!!!!
223 Ghost 515
 
532 diamond 516
        Number  310,70,0,4,dword [rating],0x000000
517
        pop     edx
518
        jmp     @b
223 Ghost 519
 
520
fif:  ;  AMD-64    Family=15
521
 
522
;here is a need to rewrite detection of AMD F-th family according to "Revision Guide for
523
;AMD AthlonTM 64 and  AMD OpteronTM  Processors" 25759.pdf
524
 
525
; checking sse3 for new AMD's is needed
526
    cmp [m],$1	; Dual-core Opteron
527
    jz .AF1
318 heavyiron 528
    cmp [m],$3	; Toledo 1024 0.09   // Manchester     ||Windsor Dual Core not supported
223 Ghost 529
    jz .AF3
530
    cmp [m],$4	;Athlon 64 Mobile Athlon 64 FX  ClawHammer (1024) 0.13
531
    jz .AF4
532
    cmp [m],$5	; Opteron     Athlon 64 FX 0.13 (1024)
533
    jz .AF5
318 heavyiron 534
    cmp [m],$7	;Athlon 64 Athlon 64 FX  Clawhammer(1024) 0.13   Sledgehammer(1024)  0.13  // SSE3+ SanDiego(1024)
223 Ghost 535
    jz .AF7
536
   cmp [m],$8 ; Athlon 64 Mobile Athlon 64 FX ClawHammer (1024) 0.13
537
    jz .AF8
538
   cmp [m],$B ; Athlon 64
539
    jz .AFB
540
   cmp [m],$C ;Athlon 64 Newcastle(512) 0.13  Sempron> Paris (256)   0.13  |SSE3+ Sempron >  Palermo FC0 0.09  // (Venice)
541
    jz .AFC
542
   cmp [m],$E  ; Athlon 64    //
543
    jz .AFE
515 heavyiron 544
   cmp [m],$F ; Athlon 64 Winchester(512) |SSE3+ SanDiego(1024)  Venice (512)  Palermo (256) 0.09
223 Ghost 545
    jz .AFF
546
    jmp next_generation
547
.AF1:
548
    mov [micron], 09  ;?
515 heavyiron 549
    Text 100,70,0x00000000,AF1, AF1len-AF1
550
    jmp MMXtest
223 Ghost 551
.AF3:
552
    mov [micron], 09
515 heavyiron 553
    Text 100,70,0x00000000,AF3, AF3len-AF3
554
    jmp MMXtest
223 Ghost 555
.AF4:
556
    mov [micron], 13
515 heavyiron 557
    Text 100,70,0x00000000,AF4, AF4len-AF4
558
    jmp MMXtest
223 Ghost 559
.AF5:
560
    mov [micron], 13
515 heavyiron 561
    Text 100,70,0x00000000,AF5, AF5len-AF5
562
    jmp MMXtest
223 Ghost 563
.AF7:
564
    mov [micron], 13
515 heavyiron 565
    Text 100,70,0x00000000,AF5, AF5len-AF5
566
    jmp MMXtest
223 Ghost 567
.AF8:
515 heavyiron 568
   mov [micron], 13
569
   Text 100,70,0x00000000,AF4, AF4len-AF4  ; AF4, AF5len-AF4
570
   jmp MMXtest
223 Ghost 571
.AFB:
572
    mov [micron], 13
451 heavyiron 573
Text 100,70,0x00000000,AF4, AF4len-AF4
223 Ghost 574
 jmp MMXtest
575
 
576
.AFC:
577
cmp [L2], 512
578
je .AFCn
579
 
580
cmp [sse3sup], 1
581
je .AFCnpal
582
 
583
.AFCnpar:  ; paris
584
    mov [micron], 13
515 heavyiron 585
    Text 100,70,0x00000000,AFCs, AFCslen-AFCs
586
    jmp MMXtest
223 Ghost 587
 
588
.AFCnpal: ; palermo
589
    mov [micron], 9
515 heavyiron 590
    Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
591
    jmp MMXtest
223 Ghost 592
 
593
.AFCn: ;newcastle
594
    mov [micron], 13
515 heavyiron 595
    Text 100,70,0x00000000,AFC, AFClen-AFC
596
    jmp MMXtest
223 Ghost 597
 
515 heavyiron 598
.AFE:	; error in cpu
223 Ghost 599
 jmp .AFC
600
 
601
.AFF:
602
 
603
cmp [sse3sup], 1
604
je .AFFsse
605
 
606
.win:
607
mov [micron], 9    ; winchester
608
jmp MMXtest
609
 
610
.AFFsse:
318 heavyiron 611
mov [micron], 9
223 Ghost 612
cmp [L2], 1024
613
jz .AFs
614
cmp [L2], 512
615
jz .AFd
616
cmp [L2], 256
617
jz .AFp
618
 
619
.AFs:
451 heavyiron 620
Text 100,70,0x00000000,AFS, AFSlen-AFS
223 Ghost 621
 jmp MMXtest
622
 
623
.AFd:
451 heavyiron 624
Text 100,70,0x00000000,AFV, AFVlen-AFV
223 Ghost 625
 jmp MMXtest
626
 
627
.AFp:
451 heavyiron 628
Text 100,70,0x00000000,AFCsp, AFCsplen-AFCsp
223 Ghost 629
 jmp MMXtest
630
;-----------------------------------------------
631
Intel:
451 heavyiron 632
Text 75,70,0x00000000,Inteln, Intelnlen-Inteln
223 Ghost 633
 
634
	mov	esi, intel
635
	call	load_gif
515 heavyiron 636
PutImage 135,107,201,49,img_area+8
637
;PutImage 125,107,201,49,img_area+8
318 heavyiron 638
;         place   size
223 Ghost 639
 
640
det:
641
    cmp [f], $5
642
    jz .five
643
    cmp [f], $6
644
    jz .six
645
    cmp [f], $7
646
    jz .sev
647
    cmp [f], $F
648
    jz .fift
649
.five:	      ;Family=5
650
 
451 heavyiron 651
Text 15, 190,0x00000000,cache, cachelen-cache
223 Ghost 652
 
653
    cmp [m],$0
654
    jz .I0
655
    cmp [m],$1
656
    jz .I1
657
    cmp [m],$2
658
    jz .I2
659
    cmp [m],$3
660
    jz .I3
661
    cmp [m],$4
662
    jz .I4
663
    cmp [m],$7
664
    jz .I7
665
    cmp [m],$8
666
    jz .I8
667
.I0:
451 heavyiron 668
Text 110,70,0x00000000,P50, P50len-P50
223 Ghost 669
   mov [L1d], 8
670
   mov [L1i], 8
671
   mov [L2], 256
672
   mov [micron], 80
673
 jmp MMXtest
674
.I1:
451 heavyiron 675
Text 110,70,0x00000000,P5, P5len-P5
223 Ghost 676
   mov [L1d], 8
677
   mov [L1i], 8
678
   mov [L2], 256
679
   mov [micron], 50
680
 jmp MMXtest
681
.I2:
451 heavyiron 682
Text 110,70,0x00000000,P54C, P54Clen-P54C
223 Ghost 683
   mov [L1d], 8
684
   mov [L1i], 8
685
   mov [L2], 256
686
   mov [micron], 50
687
 jmp MMXtest
688
.I3:
451 heavyiron 689
Text 110,70,0x00000000,P54T, P54Tlen-P54T
223 Ghost 690
   mov [L1d], 8
691
   mov [L1i], 8
692
   mov [L2], 256
693
   mov [micron], 50
694
 jmp MMXtest
695
.I4:
451 heavyiron 696
Text 110,70,0x00000000,P55C, P55Clen-P55C
223 Ghost 697
   mov [L1d], 8
698
   mov [L1i], 8
699
   mov [L2], 256
700
   mov [micron], 35
701
 jmp MMXtest
702
.I7:
451 heavyiron 703
Text 110,70,0x00000000,P54C, P54Clen-P54C
223 Ghost 704
   mov [L1d], 8
705
   mov [L1i], 8
706
   mov [L2], 256
707
   mov [micron], 35
708
 jmp MMXtest
709
.I8:
451 heavyiron 710
Text 110,70,0x00000000,P55C, P55Clen-P55C
223 Ghost 711
   mov [L1d], 16
712
   mov [L1i], 16
713
   mov [L2], 256
714
   mov [micron], 35
715
 jmp MMXtest
716
.six:		   ;Family=6
717
 
451 heavyiron 718
Text 15, 190,0x00000000,cache, cachelen-cache
223 Ghost 719
 
720
    cmp [m],$0
721
    jz .I60
722
    cmp [m],$1
723
    jz .I61
724
    cmp [m],$3
725
    jz .I63
726
    cmp [m],$5
727
    jz .I65
728
    cmp [m],$6
729
    jz .I66
730
    cmp [m],$7
731
    jz .I67
732
    cmp [m],$8
733
    jz .I68
734
    cmp [m],$9
735
    jz .I69
736
    cmp [m],$A
737
    jz .I6A
738
    cmp [m],$B
739
    jz .I6B
740
   cmp [m],$D
741
    jz .I6D
742
    cmp [m],$E
743
    jz .I6E
744
   cmp [m],$F
745
    jz .I6F
746
.I60:
747
    mov [micron], 50
451 heavyiron 748
Text 110,70,0x00000000,P60, P60len-P60
223 Ghost 749
 jmp MMXtest
750
.I61:
751
    mov [micron], 35
451 heavyiron 752
Text 110,70,0x00000000,P61, P61len-P61
223 Ghost 753
 jmp MMXtest
754
.I63:
755
    mov [micron], 28
451 heavyiron 756
Text 110,70,0x00000000,P63, P63len-P63
223 Ghost 757
 jmp MMXtest
758
.I65:
759
    mov [micron], 25
760
    cmp [L2], 0
761
    jne .pp65  ; Pentium
451 heavyiron 762
Text 110,70,0x00000000,P65c, P65clen-P65c
223 Ghost 763
    jmp MMXtest
764
.pp65:
451 heavyiron 765
Text 110,70,0x00000000,P65, P65len-P65
223 Ghost 766
    jmp MMXtest
767
.I66:
768
    mov [micron], 25
451 heavyiron 769
Text 110,70,0x00000000,P66, P66len-P66
223 Ghost 770
    jmp MMXtest
771
.I67:
772
    mov [micron], 25
451 heavyiron 773
Text 110,70,0x00000000,P67, P67len-P67
223 Ghost 774
    jmp MMXtest
775
.I68:
776
    mov [micron], 18
777
    cmp [L2], 128
778
    jne .pp68  ; Pentium
451 heavyiron 779
Text 110,70,0x00000000,P68c, P68clen-P68c
223 Ghost 780
    jmp MMXtest
781
 .pp68:
451 heavyiron 782
Text 110,70,0x00000000,P68, P68len-P68
223 Ghost 783
    jmp MMXtest
784
.I69:
785
    mov [micron], 13
451 heavyiron 786
Text 110,70,0x00000000,P69 , P69len-P69
223 Ghost 787
    jmp MMXtest
788
.I6A:
789
    mov [micron], 18
451 heavyiron 790
Text 110,70,0x00000000,P6A, P6Alen-P6A
223 Ghost 791
    jmp MMXtest
792
.I6B:
793
    mov [micron], 13
794
    cmp [L2], 256
795
    jne .pp6B  ; Pentium
451 heavyiron 796
Text 110,70,0x00000000,P6Bc, P6Bclen-P6Bc
223 Ghost 797
    jmp MMXtest
798
.pp6B:
451 heavyiron 799
Text 110,70,0x00000000,P6B, P6Blen-P6B
223 Ghost 800
    jmp MMXtest
801
.I6D:
802
    mov [micron], 9
451 heavyiron 803
Text 110,70,0x00000000,P6D, P6Dlen-P6D
223 Ghost 804
    jmp MMXtest
805
.I6E:
806
    mov [micron], 6
451 heavyiron 807
Text 110,70,0x00000000,P6E, P6Elen-P6E
223 Ghost 808
    jmp MMXtest
809
.I6F:
810
    mov [micron], 6
451 heavyiron 811
Text 110,70,0x00000000,P6F, P6Flen-P6F
223 Ghost 812
    jmp MMXtest
813
 
814
;06Ex - Pentium M Yonah 0.065
318 heavyiron 815
;06Fx - Pentium D Conroe 0.065, Xeon Woodcrest, Celeron D AllenDale, Core 2 Kentsfield
223 Ghost 816
 
817
.sev:	 ;Family=7
818
.IS0:
819
 
451 heavyiron 820
Text 15, 190,0x00000000,cache, cachelen-cache ;?
223 Ghost 821
 
822
    mov [micron], 18
451 heavyiron 823
Text 110,70,0x00000000,PS0, PS0len-PS0
223 Ghost 824
 jmp MMXtest
825
 
826
.fift:	  ;Family=15
827
 
451 heavyiron 828
Text 15, 190,0x00000000,cacheP4, cacheP4len-cacheP4
223 Ghost 829
 
830
    cmp [m],$0
831
    jz .IF0
832
    cmp [m],$1
833
    jz .IF1
834
    cmp [m],$2
835
    jz .IF2
836
    cmp [m],$3
837
    jz .IF3
838
    cmp [m],$4
839
    jz .IF3 ;identical to F3xh
840
    cmp [m],$5
841
    jz .IF5
842
    cmp [m],$6
843
    jz .IF6
844
    jmp next_generation
845
.IF0:
846
    mov [micron], 18
847
    cmp [L2], 128
848
    jne .ppF0  ; Pentium
451 heavyiron 849
Text 110,70,0x00000000,PF0c, PF0clen-PF0c
223 Ghost 850
    jmp MMXtest
851
.ppF0:
451 heavyiron 852
Text 110,70,0x00000000,PF0, PF0len-PF0
223 Ghost 853
    jmp MMXtest
854
.IF1:
855
    mov [micron], 18
856
    cmp [L2], 128
857
    je .IF0;jne.ppF1  ; Pentium
858
  ;  mov   eax,dword 0x00000004
859
  ;  mov   ebx,115*65536+80
860
  ;  mov   ecx,dword 0x00000000
861
  ;  mov   edx,PF0c
862
  ;  mov   esi,PF0clen-PF0c
485 heavyiron 863
  ;  mcall
223 Ghost 864
  ;jmp MMXtest
865
;.ppF1:
451 heavyiron 866
Text 110,70,0x00000000,PF0, PF0len-PF0
223 Ghost 867
 jmp MMXtest
868
.IF2:
869
    mov [micron], 13
870
    cmp [L2], 128
871
    jne .ppF2  ; Pentium
451 heavyiron 872
Text 110,70,0x00000000,PF2c, PF2clen-PF2c
223 Ghost 873
 jmp MMXtest
874
.ppF2:
451 heavyiron 875
Text 110,70,0x00000000,PF2, PF2len-PF2
223 Ghost 876
 jmp MMXtest
877
.IF3:
878
    mov [micron], 09
879
    cmp [L2], 256
880
    jne .ppF3  ; Pentium
451 heavyiron 881
Text 110,70,0x00000000,PF3c, PF3clen-PF3c
223 Ghost 882
 jmp MMXtest
883
.ppF3:
451 heavyiron 884
Text 110,70,0x00000000,PF3, PF3len-PF3
223 Ghost 885
 jmp MMXtest
886
 
887
.IF5:
888
    mov [micron], 09
889
    cmp [L2], 512
890
    jae .ppF5  ; Pentium
451 heavyiron 891
Text 110,70,0x00000000,PF5c, PF5clen-PF5c
223 Ghost 892
 jmp MMXtest
893
.ppF5:
451 heavyiron 894
Text 110,70,0x00000000,PF5, PF5len-PF5
223 Ghost 895
 jmp MMXtest
896
 
897
 .IF6:
898
    mov [micron], 06  ; 065
899
    cmp [L2], 512
900
    ja .ppF6  ; Pentium
451 heavyiron 901
Text 110,70,0x00000000,PF6c, PF6clen-PF6c
223 Ghost 902
 jmp MMXtest
903
.ppF6:
451 heavyiron 904
Text 110,70,0x00000000,PF6, PF6len-PF6
223 Ghost 905
 jmp MMXtest
906
 
907
 
908
 next_generation:
451 heavyiron 909
Text 110,70,0x00000000,NG, NGlen-NG
223 Ghost 910
  jmp MMXtest
911
;----------------------------------
912
Cyrix:
913
 
451 heavyiron 914
Text 15, 190,0x00000000,cache, cachelen-cache
223 Ghost 915
 
916
	mov	esi, cyrix
917
	call	load_gif
515 heavyiron 918
PutImage 135,107,201,49,img_area+8
919
;PutImage 130,127,201,49,img_area+8
318 heavyiron 920
;         place   size
223 Ghost 921
 
922
    cmp [f], $5
923
    jz .fivv
924
    cmp [f], $6
925
    jz .sixx
926
.fivv:	  ;Family=5
927
    cmp [m],$2
928
    jz .C52
929
    cmp [m],$4
930
    jz .C54
931
.C52:
932
    mov [micron], 50 ;35?
933
    mov [L1i], 8
934
    mov [L1d], 8
935
    mov [L2], 512
451 heavyiron 936
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
937
Text 110,70,0x00000000,C52, C52len-C52
223 Ghost 938
    jmp MMXtest
939
.C54:
940
    mov [micron], 50
941
    mov [L1i], 8
942
    mov [L1d], 8
943
    mov [L2], 512
451 heavyiron 944
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
945
Text 110,70,0x00000000,C54, C54len-C54
223 Ghost 946
    jmp MMXtest
947
 
948
.sixx:	   ;Family=6
949
   cmp [m],$0
950
   jz .C60
951
   cmp [m],$5
952
   jz .C65
953
.C60:
954
    mov [micron], 25
955
    mov [L1i], 32
956
    mov [L1d], 32
957
    mov [L2], 512
451 heavyiron 958
Text 75,70,0x00000000,Cyrixn, Cyrixnlen-Cyrixn
959
Text 110,70,0x00000000,C60, C60len-C60
223 Ghost 960
    jmp MMXtest
961
.C65:
962
    mov [micron], 25 ;35?
963
    mov [L1i], 32
964
    mov [L1d], 32
965
    mov [L2], 512
451 heavyiron 966
Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
532 diamond 967
    mov edx,C65
968
    mov esi,C65len-C65
969
    jmp OutProcName
223 Ghost 970
;---------------------
971
Centaur:
972
 
451 heavyiron 973
Text 15, 190,0x00000000,cache, cachelen-cache
223 Ghost 974
 
975
;CACHE1:
976
mov eax, 80000005h
977
    cpuid
978
shr ecx, 24
979
mov [L1d], ecx
980
shr edx, 24
981
mov [L1i], edx
318 heavyiron 982
 
983
 
984
 
985
; cache detection routine
986
;CACHE1:
987
mov eax, 80000005h
988
    cpuid
989
 
532 diamond 990
movzx eax, cl
318 heavyiron 991
mov [lineld], eax
992
 
993
mov eax, ecx
994
shr eax, 16
532 diamond 995
and eax,000000FFh
318 heavyiron 996
mov [wayld], eax
997
 
998
shr ecx, 24
999
mov [L1d], ecx
1000
 
532 diamond 1001
movzx eax, dl
318 heavyiron 1002
mov [lineli], eax
1003
 
1004
mov eax, edx
1005
 
1006
shr eax, 16
532 diamond 1007
and eax,000000FFh
318 heavyiron 1008
mov [wayli], eax
1009
 
1010
shr edx, 24
1011
mov [L1i], edx
1012
 
1013
 
223 Ghost 1014
;CACHE2:
1015
mov eax, 80000006h
1016
    cpuid
318 heavyiron 1017
 
1018
cmp [f], $6
1019
    jz vn
1020
    jmp vl2old	; if not then old identification
1021
vn:
1022
    cmp [m],$9
1023
    jl vl2old
1024
; else  new
532 diamond 1025
movzx eax, cl
318 heavyiron 1026
mov dword[linel2], eax
1027
 
1028
mov eax, ecx
1029
shl eax, 16
1030
shr eax, 28
1031
 
1032
mov dword[wayl2], eax
1033
 
1034
shr ecx, 16  ; it is 16 bits now
223 Ghost 1035
mov [L2],ecx
1036
 
318 heavyiron 1037
 
1038
 
1039
vl2old:
532 diamond 1040
movzx eax, cl
318 heavyiron 1041
mov dword[linel2], eax
1042
 
1043
mov eax, ecx
1044
shl eax, 8
1045
shr eax, 24
1046
 
1047
mov dword[wayl2], eax
1048
 
1049
shr ecx, 24  ; it was 8 bits earlier
1050
mov [L2],ecx
1051
 
1052
 
223 Ghost 1053
    cmp [f], $5
1054
    jz fivC
1055
    cmp [f], $6
1056
    jz sixC
1057
 
1058
fivC:		   ;Family=5
1059
 
1060
	mov	esi, idt
1061
	call	load_gif
515 heavyiron 1062
PutImage 135,107,201,49,img_area+8
1063
;PutImage 125,107,201,49,img_area+8
318 heavyiron 1064
;         place   size
223 Ghost 1065
 
451 heavyiron 1066
Text 75,70,0x00000000,IDTn, IDTnlen-IDTn
223 Ghost 1067
    cmp [m],$4
1068
    jz .V54
1069
    cmp [m],$8
1070
    jz .V58
1071
    cmp [m],$9
1072
    jz .V59
1073
.V54:
1074
   mov [micron], 35
532 diamond 1075
   mov edx,V54
1076
   mov esi,V54len-V54
1077
    jmp OutProcName
223 Ghost 1078
.V58:
1079
    mov [micron], 25
532 diamond 1080
    mov edx,V58
1081
    mov esi,V58len-V58
1082
    jmp OutProcName
223 Ghost 1083
.V59:
1084
    mov [micron], 25
532 diamond 1085
    mov edx,V59
1086
    mov esi,V59len-V59
1087
    jmp OutProcName
223 Ghost 1088
 
1089
sixC:	;Family=6
1090
 
1091
	mov	esi, via
1092
	call	load_gif
515 heavyiron 1093
PutImage 135,107,201,49,img_area+8
1094
;PutImage 125,107,201,49,img_area+8
318 heavyiron 1095
;         place   size
223 Ghost 1096
 
451 heavyiron 1097
Text 75,70,0x00000000,Centaurn, Centaurnlen-Centaurn
223 Ghost 1098
    cmp [m],$6
1099
    jz .V66
1100
    cmp [m],$7
1101
    jz .V67
1102
    cmp [m],$8
1103
    jz .V68
1104
    cmp [m],$9
1105
    jz .V69
318 heavyiron 1106
    cmp [m],$A
223 Ghost 1107
    jz .V6A
1108
.V66:
1109
   mov [micron], 18 ; 25?
532 diamond 1110
   mov edx,V66
1111
   mov esi,V66len-V66
1112
    jmp OutProcName
223 Ghost 1113
.V67:
1114
    mov [micron], 15
532 diamond 1115
    mov edx,V67
1116
    mov esi,V67len-V67
1117
    jmp OutProcName
223 Ghost 1118
.V68:
1119
    mov [micron], 13
532 diamond 1120
    mov edx,V68
1121
    mov esi,V68len-V68
1122
    jmp OutProcName
223 Ghost 1123
.V69:
1124
   mov [micron], 13
532 diamond 1125
   mov edx,V69
1126
   mov esi,V69len-V69
1127
   jmp OutProcName
223 Ghost 1128
.V6A:
1129
   mov [micron], 9
532 diamond 1130
   mov edx,VA
1131
   mov esi,VAlen-VA
1132
   jmp OutProcName
223 Ghost 1133
;-----------
1134
Transmeta:
1135
 
451 heavyiron 1136
Text 15, 190,0x00000000,cache, cachelen-cache
223 Ghost 1137
 
532 diamond 1138
Text 75,70,,Tranmsmetan, Tranmsmetanlen-Tranmsmetan
223 Ghost 1139
 
1140
	mov	esi, transmeta
1141
	call	load_gif
515 heavyiron 1142
PutImage 135,107,201,49,img_area+8
1143
;PutImage 125,107,201,49,img_area+8
318 heavyiron 1144
;         place   size
223 Ghost 1145
 
318 heavyiron 1146
; cache detection routine - it is the same as for AMD (almost)
223 Ghost 1147
;CACHE1:
1148
mov eax, 80000005h
1149
    cpuid
318 heavyiron 1150
 
532 diamond 1151
movzx eax, cl
318 heavyiron 1152
mov [lineld], eax
1153
 
1154
mov eax, ecx
1155
 
532 diamond 1156
shr eax,16
1157
and eax,000000FFh
318 heavyiron 1158
mov [wayld], eax
1159
 
223 Ghost 1160
shr ecx, 24
1161
mov [L1d], ecx
318 heavyiron 1162
 
532 diamond 1163
movzx eax, dl
318 heavyiron 1164
mov [lineli], eax
1165
 
1166
mov eax, edx
1167
 
1168
shr eax, 16
532 diamond 1169
and eax,000000FFh
318 heavyiron 1170
mov [wayli], eax
1171
 
223 Ghost 1172
shr edx, 24
1173
mov [L1i], edx
318 heavyiron 1174
 
1175
 
223 Ghost 1176
;CACHE2:
1177
mov eax, 80000006h
1178
    cpuid
318 heavyiron 1179
 
532 diamond 1180
movzx eax, cl
318 heavyiron 1181
mov dword[linel2], eax
1182
 
1183
mov eax, ecx
1184
shl eax, 16
1185
shr eax, 28
1186
 
1187
mov dword[wayl2], eax
1188
 
223 Ghost 1189
shr ecx, 16
318 heavyiron 1190
mov [L2],ecx
223 Ghost 1191
 
318 heavyiron 1192
 
223 Ghost 1193
    cmp [f], $5
1194
    jz .fivt
1195
    cmp [f], $F
1196
    jz .fift
1197
.fivt:	  ;     Family=5
1198
 
532 diamond 1199
    mov edx,T5
1200
    mov esi,T5len-T5
1201
    jmp @f
223 Ghost 1202
 
1203
.fift:	  ;     Family=F
532 diamond 1204
    mov edx,TF
1205
    mov esi,TFlen-TF
1206
@@:
223 Ghost 1207
    mov [micron], 13 ;
532 diamond 1208
    Text 140,70,0
223 Ghost 1209
    jmp MMXtest
1210
 
532 diamond 1211
OutProcName:
1212
        Text    100,70,0
1213
 
223 Ghost 1214
;----
1215
MMXtest:	     ; MMX test and Brand ID decoding
1216
 
1217
call decodebrand  ; get Brand ID
1218
 
1219
call decode_standard_features
1220
 
1221
call decode_extended_features
1222
      xor eax,eax
1223
      inc eax
1224
      cpuid
1225
HTTtest:
1226
  test	edx, $10000000; ;Test bit 28
1227
  jz .ELN
1228
 
532 diamond 1229
.EL:   ;HTT technology is supported
223 Ghost 1230
   and ebx,00FF0000h ; numbers of logical processors
532 diamond 1231
   cmp ebx, 1 shl 16
318 heavyiron 1232
   ;   mov [number_of_log_cpus], ebx
223 Ghost 1233
   je .ELN  ; HHT not enabled (Celeron)
1234
 
1235
   mov	dword [HTTn+9], $736579
1236
   mov	dword [HTT+ 6], $736579
1237
   jmp TEXTOUT
1238
.ELN:
1239
 
1240
   mov	dword [HTTn+ 9],  $6F6E
1241
   mov	dword [HTT+ 6],  $6F6E
1242
 
1243
TEXTOUT:
1244
 
451 heavyiron 1245
Text 15,110,0x00000000,fam, famlen-fam
532 diamond 1246
Text 15,130,,mode, modelen-mode
1247
Text 15,150,,step, steplen-step
223 Ghost 1248
;--------L1  L2
451 heavyiron 1249
Number 75,170,0,3,dword [L1d],0x000000;
532 diamond 1250
Number 75,190,,,dword [L1i]
1251
Number 41,210,0,4,dword[L2]
1252
Number 35,230,0,5,dword[L3]
223 Ghost 1253
;-----------Features
532 diamond 1254
Number 258,50,0,2,dword [micron]  ; micron
223 Ghost 1255
 
451 heavyiron 1256
Text 275,290,0x00000000,HTT, HTTlen-HTT
532 diamond 1257
Text 275,310,,sse3, sse3len-sse3
223 Ghost 1258
 
532 diamond 1259
Text 15,70,,name, namelen-name
223 Ghost 1260
 
532 diamond 1261
Text 15,290,,MMXs, MMXslen-MMXs
1262
Text 15,310,,SSE, SSElen-SSE
1263
Text 95,310,,SSE2, SSE2len-SSE2
223 Ghost 1264
 
451 heavyiron 1265
    Number 140,170,0,2,dword [wayld],0x000000
532 diamond 1266
    Number 218,170,,,dword [lineld]
318 heavyiron 1267
 
532 diamond 1268
    Number 140,190,,,dword [wayli]
1269
    Number 218,190,,,dword [lineli]
318 heavyiron 1270
 
532 diamond 1271
    Number 140,210,,,dword [wayl2]
1272
    Number 218,210,,,dword [linel2]
318 heavyiron 1273
 
532 diamond 1274
    Number 140,230,,,dword [wayl3]
1275
    Number 218,230,,,dword [linel3]
318 heavyiron 1276
 
223 Ghost 1277
;-------------------
1278
TEST3DNOW:
1279
 
532 diamond 1280
  xor edx, edx
223 Ghost 1281
  cmp [smallvendor], 'ntel'
532 diamond 1282
  je @f
223 Ghost 1283
 
1284
  mov	eax, $80000001 ;// Setup extended function 8000_0001h
1285
  cpuid
1286
 
532 diamond 1287
@@:
1288
  mov   eax, now+9
1289
  add   edx, edx
1290
  call  write_yes_no_cf
223 Ghost 1291
 
532 diamond 1292
  mov   eax, nowp+9
1293
  add   edx, edx
1294
  call  write_yes_no_cf
223 Ghost 1295
 
1296
TESTMMXP:
1297
 
1298
    mov   eax,$80000000
1299
    cpuid
1300
 
532 diamond 1301
    test eax, eax
1302
    jns NOEXTENDEDM
223 Ghost 1303
 
1304
  ;cmp   eax, $80000000 ;// Is 800_0001h supported?
1305
  ;jz   .NOEXTENDEDM    ;// If not, 3DNow! technology is not supported
1306
  mov	eax, $80000001 ;// Setup extended function 8000_0001h
1307
  cpuid
1308
  cmp [smallvendor], 'tead'
1309
  jne noCyr
1310
Cyrmx:
1311
  test	edx, $01000000 ;// Test bit 24
1312
  jnz	XITM  ;// 3DNow! technology is supported
1313
  jz NOEXTENDEDM
1314
noCyr:
1315
  test	edx, $00400000 ;// Test bit 22
1316
  jnz	XITM  ;// 3DNow! technology is supported
1317
  ;jz   .NOEXTENDEDM
1318
 
1319
NOEXTENDEDM:
1320
   mov	dword [mmxp+ 7], $6F6E
1321
   mov	dword [MMXPi+ 8], $6F6E
1322
   jmp text3d
1323
XITM:
1324
   mov	dword [mmxp+ 7],  $736579
1325
   mov	dword [MMXPi+ 8],  $736579
1326
 
1327
text3d:
1328
 
451 heavyiron 1329
Text 175,290,0x00000000,now, nowlen-now
532 diamond 1330
Text 175,310,,nowp, nowplen-nowp
1331
Text 95,290,,mmxp, mmxplen-mmxp
223 Ghost 1332
 
1333
jmp still
1334
 
1335
;--------------------------
1336
NO_CPUID:
451 heavyiron 1337
 Text 15,50,0x00000000,oblom, oblomlen-oblom
223 Ghost 1338
 
1339
FREEZE:
1340
nop
318 heavyiron 1341
jmp FREEZE ; maybe we should close application or just made some Warning and jump to still:
223 Ghost 1342
;----------------
450 Ghost 1343
still:
1344
 
1345
; çàòåì ïåðåõîäèì â öèêë îæèäàíèÿ ñîáûòèé
1346
event_wait:
1347
 
1348
    ;================_RAM_==============
451 heavyiron 1349
  Number 200,340,0,4,dword [ram_size_a],0xFFFFFF
450 Ghost 1350
 
1351
  mov eax, 18
1352
  mov ebx, 16
485 heavyiron 1353
  mcall
450 Ghost 1354
 
1355
  shr eax, 10
1356
 
1357
  mov [ram_size_a], eax
1358
 
1359
  mov eax, 18
1360
  mov ebx, 17
485 heavyiron 1361
  mcall
450 Ghost 1362
 
1363
  shr eax, 10
1364
 
1365
  mov [ram_size_t], eax
1366
 
451 heavyiron 1367
  Text 115,340,0x00000000,ram, ramlen-ram
532 diamond 1368
  Text 300,340,,mb, mblen-mb
450 Ghost 1369
 
451 heavyiron 1370
  Number 200,340,0,4,dword [ram_size_a],0x000000
450 Ghost 1371
 
532 diamond 1372
  Number 270,340,,,dword [ram_size_t]
450 Ghost 1373
 
1374
;==============================
1375
 
1376
	mov	eax,23	     ; ôóíêöèÿ 23: îæèäàíèå ñîáûòèÿ
485 heavyiron 1377
	mov	ebx,50	     ; æäåìñ 0.5 ñåê
1378
	mcall
450 Ghost 1379
 
223 Ghost 1380
    cmp  eax,1		;
450 Ghost 1381
    je	 red		;  redraw
223 Ghost 1382
    cmp  eax,2		;
1383
    je	 key		;  key
1384
    cmp  eax,3		;
1385
    je	 button 	;  button
1386
    jmp  still		;
1387
  key:			;
485 heavyiron 1388
    mcall		;
223 Ghost 1389
    jmp  still		;
1390
  button:		;
1391
    mov  eax,17 	;
485 heavyiron 1392
    mcall		;
223 Ghost 1393
    cmp  ah,1		;  = 1 ?
1394
    je	close		; close
1395
 
1396
    cmp  ah,2		;  = 2 ?
1397
    je	thread_start	;
1398
			;
1399
    cmp  ah,3		;  = 3 ?
532 diamond 1400
    jne  still
223 Ghost 1401
 
1402
vybor:
1403
 
451 heavyiron 1404
 Number 310,70,0,4,dword [rating],0xFFFFFF ;
223 Ghost 1405
 
532 diamond 1406
 Number 315,90,0,3,dword [FRS]; MHz
223 Ghost 1407
 
1408
cmp [FRS], 266
1409
jz .s1
1410
cmp [FRS], 333
1411
jz .s2
1412
cmp [FRS], 400
1413
jz .s3
1414
 
1415
.s1:
1416
mov [FRS], 333
532 diamond 1417
.rating:
223 Ghost 1418
call newrating
451 heavyiron 1419
 Number 310,70,0,4,dword [rating],0x000000
223 Ghost 1420
 
532 diamond 1421
 Number 315,90,0,3,dword [FRS]; MHz
223 Ghost 1422
jmp  still
1423
 
1424
.s2:
1425
mov [FRS], 400
532 diamond 1426
jmp .rating
223 Ghost 1427
 
1428
.s3:
1429
mov [FRS], 266
532 diamond 1430
jmp .rating
223 Ghost 1431
 
1432
close:
1433
    mov   eax,-1
485 heavyiron 1434
    mcall
223 Ghost 1435
 
1436
;**************************** THREAD-SECOND WINDOW
1437
thread_start:
1438
 
1439
    cmp  [num_win2],0
1440
 
1441
    jne  still
1442
 
1443
;================================================RSA test
1444
 
1445
;test rsa coding speed
532 diamond 1446
        call    init_test
223 Ghost 1447
;length of module - 256 bit
1448
  mov  eax,26
1449
  mov  ebx,9
485 heavyiron 1450
  mcall
223 Ghost 1451
  add  eax,100 ;test lasts 1 second.
1452
  push eax
1453
.loop:
532 diamond 1454
  push 4     ;do 4 iterations - this reduces number of calls mcall.
223 Ghost 1455
.loop1:
1456
  call rsa_test   ;this procedure change all registers
1457
  dec  dword [esp]
1458
  jnz  .loop1
1459
  pop  ecx
1460
  mov  eax,26
1461
  mov  ebx,9
485 heavyiron 1462
  mcall
223 Ghost 1463
  cmp  eax,dword [esp]	 ;Is time changed?
1464
  jl   .loop
1465
  pop  eax
1466
  shr  dword [iter],4 ;[iter] - speed in Kb/sec. (every iteration codes 64 bytes)
318 heavyiron 1467
CreateTread window_2,thread2_esp
532 diamond 1468
  jmp  still
223 Ghost 1469
 
1470
window_2:
1471
    mov  [num_win2],1
1472
    call draw_window_2
1473
 
1474
still_2:
1475
 
1476
    mov  eax,10
485 heavyiron 1477
    mcall
223 Ghost 1478
 
1479
    cmp  eax,1
1480
    je	 window_2	;  window_2
1481
    cmp  eax,2		;
1482
    je	 key_2		;  key_2
1483
    cmp  eax,3		;
1484
    je	 button_2	;  button_2
1485
 
1486
    jmp  still_2	;
1487
 
1488
  key_2:		;
485 heavyiron 1489
    mcall		;
223 Ghost 1490
    jmp  still_2	;
1491
 
1492
  button_2:		;
1493
    mov  eax,17 	; 17
485 heavyiron 1494
    mcall		;
223 Ghost 1495
 
1496
    cmp  ah,1		; = 1 ?
532 diamond 1497
    jne  still_2	; noclose
223 Ghost 1498
 
1499
    mov  [num_win2],0	;
1500
 
1501
    or	 eax,-1 	;
485 heavyiron 1502
    mcall
223 Ghost 1503
 
1504
draw_window_2:
1505
    mov  eax,12 		   ; function 12:tell os about windowdraw
1506
    mov  ebx,1h 		    ; 1, start of draw
485 heavyiron 1507
    mcall
223 Ghost 1508
 
1509
 
451 heavyiron 1510
  Window 250,250,420,390, 0x33FFFFFF, 0x805080d0, standard
318 heavyiron 1511
	  ; place size
1512
 
451 heavyiron 1513
Text 15, 10,0x00000000, STDCA, STDCAlen-STDCA
532 diamond 1514
Text 215, 10,, EXTCA, EXTCAlen-EXTCA
318 heavyiron 1515
 
451 heavyiron 1516
Number 135,10,1*256,8,dword [stdc],0x000000
532 diamond 1517
Number 335,10,,,dword [extc],
223 Ghost 1518
 
451 heavyiron 1519
Text 15, 30,0x00000000, FPU, FPUlen-FPU
532 diamond 1520
Text 115, 30,, VME, VMElen-VME
1521
Text 215, 30,, DE,  DElen-DE
1522
Text 315, 30,, PSE, PSElen-PSE
223 Ghost 1523
 
532 diamond 1524
Text 15, 50,,TSC, TSClen-TSC
1525
Text 115,50,,MSR, MSRlen-MSR
1526
Text 215,50,,PAE, PAElen-PAE
1527
Text 315,50,,MCE, MCElen-MCE
223 Ghost 1528
 
532 diamond 1529
Text 15,70,,CX8, CX8len-CX8
1530
Text 115,70,,APIC, APIClen-APIC
1531
Text 215,70,,Res, Reslen-Res
1532
Text 315,70,,SEP, SEPlen-SEP
223 Ghost 1533
 
532 diamond 1534
Text 15,90,,MTRR, MTRRlen-MTRR
1535
Text 115,90,,PGE, PGElen-PGE
1536
Text 215,90,,MCA, MCAlen-MCA
1537
Text 315,90,,CMOV, CMOVlen-CMOV
223 Ghost 1538
 
532 diamond 1539
Text 15,110,,PAT, PATlen-PAT
1540
Text 115,110,,PSE36, PSE36len-PSE36
1541
Text 215,110,,PSNUM, PSNUMlen-PSNUM
1542
Text 315,110,,CLFLUSHn, CLFLUSHnlen-CLFLUSHn
223 Ghost 1543
 
532 diamond 1544
Text 15,130,,Res, Reslen-Res
1545
Text 115,130,,DTS, DTSlen-DTS
1546
Text 215,130,,ACPI, ACPIlen-ACPI
1547
Text 315,130,,MMX, MMXlen-MMX
223 Ghost 1548
 
532 diamond 1549
Text 15,150,,FXSR, FXSRlen-FXSR
1550
Text 115,150,,SSE, SSElen-SSE
1551
Text  215,150,,SSE2, SSE2len-SSE2
1552
Text 315,150,,SSn, SSnlen-SSn
223 Ghost 1553
 
532 diamond 1554
Text 15,170,,HTT, HTTnlen-HTTn
1555
Text 115,170,,TM, TMlen-TM
1556
Text 215,170,,IA64, IA64len-IA64
1557
Text 315,170,,PBE, PBElen-PBE
223 Ghost 1558
;---------------
451 heavyiron 1559
DrawLine 0,  410, 185,185,0x8080FF  ;10
223 Ghost 1560
 
1561
mov   eax,$80000000
1562
cpuid
1563
;mov eax, $03020101   for test of reaction
532 diamond 1564
test eax, eax
1565
js  goooddd
223 Ghost 1566
 
1567
baaadd:
451 heavyiron 1568
Text 95,235,0x00000000,NEF, NEFlen-NEF
223 Ghost 1569
jmp too
1570
 
1571
goooddd:
451 heavyiron 1572
Text 15,195,0x00000000,SS3, SS3len-SS3
532 diamond 1573
Text 15,215,,MON, MONlen-MON
1574
Text 15,235,,DS_CPL, DS_CPLlen-DS_CPL
1575
Text 15,255,,EST, ESTlen-EST
1576
Text 15,275,,TM2, TM2len-TM2
1577
Text 15,295,,VMX, VMXlen-VMX
1578
Text 15,315,,SVM, SVMlen-SVM
223 Ghost 1579
 
532 diamond 1580
Text 115,195,,CNXT_ID, CNXT_IDlen-CNXT_ID
1581
Text 115,215,,CX16, CX16len-CX16
1582
Text 115,235,,ETPRD, ETPRDlen-ETPRD
1583
Text 115,255,,SYS, SYSlen-SYS
1584
Text 115,275,,LAF, LAFlen-LAF
1585
Text 115,295,,SSSE3, SSSE3len-SSSE3
1586
Text 115,315,,MCR8, MCR8len-MCR8
223 Ghost 1587
 
532 diamond 1588
Text 215,195,,MP, MPlen-MP
1589
Text 215,215,,NX, NXlen-NX
1590
Text 215,235,,MMXPi, MMXPilen-MMXPi
1591
Text 215,255,,MMXn, MMXnlen-MMXn
1592
Text 215,275,,FXSRn, FXSRnlen-FXSRn
1593
Text 215,295,,DCA,DCAlen-DCA
223 Ghost 1594
 
532 diamond 1595
Text 315,195,,FFXSR, FFXSRlen-FFXSR
1596
Text 315,215,,TSCP, TSCPlen-TSCP
1597
Text 315,235,,LM, LMlen-LM
1598
Text 315,255,,DNo, DNolen-DNo
1599
Text 315,275,,DN, DNlen-DN
1600
Text 315,295,,CMPL, CMPLlen-CMPL
318 heavyiron 1601
 
1602
 
223 Ghost 1603
too:
451 heavyiron 1604
DrawLine 0,  410, 335,335,0x8080FF  ;10
223 Ghost 1605
 
451 heavyiron 1606
Text 15,350,0x00000000,speed, speedlen-speed
532 diamond 1607
Text 130,350,,kbpersec, kbperseclen-kbpersec
223 Ghost 1608
 
451 heavyiron 1609
Number 95,350,0,5,dword [iter],0x000000; RSA test results
223 Ghost 1610
 
1611
    mov  eax,12
1612
    mov  ebx,2h
485 heavyiron 1613
    mcall
223 Ghost 1614
 
1615
    ret
1616
 
1617
num_win2 db 0
1618
 
1619
;   *******  main window *******
1620
 
1621
draw_window:
1622
   mov eax,12
1623
   mov	ebx,1h
485 heavyiron 1624
   mcall
223 Ghost 1625
 
551 spraid 1626
  Window 150,150,350,385, 0x34FFFFFF, 0x805080d0, title
318 heavyiron 1627
	  ; place size
223 Ghost 1628
 
451 heavyiron 1629
  Button 15,330,92,23,2,0x03FFFFFF   ;  button "press for more"
223 Ghost 1630
 
1631
	mov	esi, knopka
1632
	mov	edi, img_area2
1633
	call	load_gif2
451 heavyiron 1634
PutImage 15,330,93,24,img_area2+8   ; image "press for more"
318 heavyiron 1635
;         place   size
223 Ghost 1636
 
1637
 
1638
    mov  eax,12
1639
    mov  ebx,2h
485 heavyiron 1640
    mcall
223 Ghost 1641
 
451 heavyiron 1642
    Text 130,270,0x00000000,instruct, instructlen-instruct
223 Ghost 1643
 
451 heavyiron 1644
    DrawLine  10,  330, 325,325,0x8080FF
532 diamond 1645
    DrawLine 330,  330, 275,325;,0x8080FF
1646
    DrawLine  10,   10, 275,325;,0x8080FF
1647
    DrawLine  10,  125, 275,275;,0x8080FF
1648
    DrawLine 230,  330, 275,275;,0x8080FF
223 Ghost 1649
 
1650
  cmp dword[smallvendor], 'cAMD'
1651
  jne cont
1652
  cmp [f], $6
1653
  jne cont
1654
 
451 heavyiron 1655
   Button 240,85,69,15,3,0x030000FF  ;  button for rating
223 Ghost 1656
 
451 heavyiron 1657
    Text 245,90,0x00FFFFFF,FR, FRlen-FR
223 Ghost 1658
 
1659
   call newrating; !!!!
1660
 
1661
     cont:
1662
 
1663
 
451 heavyiron 1664
    Text 15,50,0x00000000,tsum, tsumlen-tsum   ;
532 diamond 1665
    Text 15,90,,cpuname, cpunamelen-cpuname;
1666
    Text 255,250,,typen, typenlen-typen;
1667
    Text 175, 50,,tech, techlen-tech;
223 Ghost 1668
 
451 heavyiron 1669
    Number 82,50,0,4,dword [total],0x000000; MHz
532 diamond 1670
    Number 110,50,0,2,dword [sot]; KHz
318 heavyiron 1671
 
451 heavyiron 1672
    Text 15,170,0x00000000,cache2, cache2len-cache2
532 diamond 1673
    Text 15,210,,cache3, cache3len-cache3
1674
    Text 15,230,,cache4, cache4len-cache4
318 heavyiron 1675
 
1676
 
451 heavyiron 1677
    Number 75,110,1*256,1,dword [f],0x000000 ;
532 diamond 1678
    Number 75,130,,,dword [m]
1679
    Number 75,150,,,dword [s]
223 Ghost 1680
 
532 diamond 1681
    Number 110,110,1*256,2,dword [ef]
1682
    Number 110,130,,,dword [em]
223 Ghost 1683
 
451 heavyiron 1684
Text   15,30,0x00000000,multil, multillen-multil
532 diamond 1685
Text   175,30,,freql, freqllen-freql
451 heavyiron 1686
Number 85,30,0,2,dword [multb],0x000000;
532 diamond 1687
Number 105,30,0,1,dword [multa]
1688
Number 259,30,0,4,dword [freqbb]
1689
Number 289,30,0,2,dword [freqll]
318 heavyiron 1690
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
451 heavyiron 1691
;Text 115,280,0x00000000,logcpus, logcpuslen-logcpus
1692
;Number 250,280,0,2,dword [number_of_log_cpus],0x000000
223 Ghost 1693
 
318 heavyiron 1694
 
451 heavyiron 1695
    Text 15,10,0x00000000,stm, stmlen-stm
223 Ghost 1696
;  Fix for deleting leading whitespaces
1697
;  in Intel P4's internal name
1698
;  by Madis Calme
1699
;  23.12.2004 ver. 0.81
1700
    cld
1701
    mov  edi,myname
1702
    mov  al,20h
1703
    or	 ecx,-1
1704
    repe scasb
1705
    dec  edi
1706
    mov  esi,mynamelen
1707
    sub  esi,edi
451 heavyiron 1708
    Text 105, 10, 0x00000000, edi, esi
1709
;    Text 105,20,0x00000000,myname, mynamelen-myname
223 Ghost 1710
;-
532 diamond 1711
Text 15,250,,brandid, brandidlen-brandid
223 Ghost 1712
 
1713
    ret 		;
1714
 
1715
load_gif:
552 diamond 1716
        mov     edi, img_area
223 Ghost 1717
load_gif2:
1718
 
552 diamond 1719
COLOR_ORDER equ MENUETOS
1720
include 'gif_lite.inc'        ; parse GIF files
1721
 
223 Ghost 1722
; DATA AREA
1723
 
515 heavyiron 1724
title	 db   'CPUID 2.21 by S.Kuzmin & the KolibriOS team',0
451 heavyiron 1725
 
223 Ghost 1726
tsum:
1727
    db 'Frequency:     .   MHz'
1728
tsumlen:
1729
 
1730
total dd 0x0
1731
total1 dd 0x0
1732
rating dd 0x0
1733
rat dd 0x0  ;
1734
 
1735
ram:
1736
db 'Available RAM:     out of'
1737
ramlen:
1738
 
1739
NEF:
1740
db 'EXTENDED FEATURES ARE NOT AVAILABLE'
1741
NEFlen:
1742
 
1743
mb :
1744
db 'MB'
1745
mblen:
1746
 
318 heavyiron 1747
;logcpus :
1748
;db 'Number of logical CPU:'
1749
;logcpuslen:
1750
 
223 Ghost 1751
speed :
1752
db 'PERFORMANCE:'
1753
speedlen:
1754
 
1755
kbpersec:
1756
db 'KB/SEC'
1757
kbperseclen:
1758
 
1759
instruct:
1760
    db 'Instruction sets'
1761
instructlen:
1762
 
451 heavyiron 1763
standard    db 'Standard and Extended features plus Performance test',0
223 Ghost 1764
 
1765
FR:
1766
    db 'Choose FSB:'
1767
FRlen:
1768
 
1769
STDCA:
1770
    db 'Highest STD call is         '
1771
STDCAlen:
1772
 
1773
EXTCA:
1774
    db 'Highest EXT call is         h'
1775
EXTCAlen:
1776
 
1777
brandid:
1778
    db 'Brand:'
1779
brandidlen:
1780
 
1781
oblom:
1782
    db 'SORRY, CPUID IS NOT AVAILABLE'
1783
oblomlen:
1784
other:
1785
    db 'SORRY, THIS VENDOR IS NOT SUPPORTED YET'
1786
otherlen:
318 heavyiron 1787
 
223 Ghost 1788
cpuname:
1789
    db 'CPU VENDOR:             '
1790
cpunamelen:
1791
fam:
1792
    db 'FAMILY:     std    ext'
1793
famlen:
1794
mode:
1795
    db 'MODEL:      std    ext'
1796
modelen:
1797
step:
1798
    db 'STEPPING:'
1799
steplen:
318 heavyiron 1800
 
223 Ghost 1801
cache2:
1802
 
318 heavyiron 1803
    db 'L1(data):     KB       -way set     -byte line size'
223 Ghost 1804
cache2len:
1805
 
1806
cache:
318 heavyiron 1807
    db 'L1(inst):     KB       -way set     -byte line size'
223 Ghost 1808
cachelen:
1809
 
318 heavyiron 1810
cache3:
1811
 
1812
    db 'L2:      KB            -way set     -byte line size'
1813
cache3len:
1814
 
1815
cache4:
1816
    db 'L3:      KB            -way set     -byte line size'
1817
cache4len:
1818
 
223 Ghost 1819
cacheP4:
1820
 
318 heavyiron 1821
    db 'L1(inst):     Kuops    -way set     -byte line size'
223 Ghost 1822
cacheP4len:
1823
 
1824
tech:
1825
  db 'Technology: 0.   micron '
1826
techlen:
1827
 
1828
typen:
1829
  db 'Type:'
1830
typenlen:
1831
 
1832
pr:
1833
  db 'P-rating:'
1834
prlen:
1835
 
1836
multil:
1837
  db 'Multiplier:   .'
1838
multillen:
1839
 
1840
freql:
1841
  db 'System clock:     .   MHz'
1842
freqllen:
1843
 
1844
name:
1845
    db 'CODENAME:'
1846
namelen:
318 heavyiron 1847
 
223 Ghost 1848
AMDn:
1849
    db 'AMD'
1850
AMDnlen:
1851
Inteln:
1852
    db 'Intel'
1853
Intelnlen:
1854
Cyrixn:
1855
    db 'Cyrix'
1856
Cyrixnlen:
1857
IDTn:
1858
     db 'IDT/Centaur'
1859
IDTnlen:
1860
Centaurn:
1861
     db 'VIA'
1862
Centaurnlen:
1863
 
1864
Tranmsmetan:
1865
     db 'Transmeta'
1866
Tranmsmetanlen:
1867
 
1868
MMXs:
1869
    db 'MMX:         '
1870
MMXslen:
1871
 
1872
mmxp:
1873
    db 'MMX+:         '
1874
mmxplen:
1875
 
1876
HTT:
1877
    db 'HTT:          '
1878
HTTlen:
1879
 
1880
HTTn:
1881
    db 'HTT:         '
1882
HTTnlen:
1883
 
1884
sse3:
1885
    db 'SSE3:         '
1886
sse3len:
1887
now:
1888
    db '3DNOW!:         '
1889
nowlen:
1890
nowp:
1891
    db '3DNOW!+:         '
1892
nowplen:
1893
 
1894
;-Type
1895
 
532 diamond 1896
t1      db      'OEM',0
1897
t2      db      'Overdrive',0
1898
t3      db      'Dual',0
1899
t4      db      'Unknown',0
223 Ghost 1900
 
1901
;----------Intel
1902
P50:
1903
db 'P5 A-step'
1904
P50len:
1905
P5:
1906
db 'P5'
1907
P5len:
1908
P54T:
1909
db 'P24T Overdrive'
1910
P54Tlen:
1911
P54C:
1912
db 'P54C'
1913
P54Clen:
1914
P55C:
1915
db 'P55C (with MMX)'
1916
P55Clen:
1917
; ---
1918
P60:
1919
db 'Pentium Pro A-step'
1920
P60len:
1921
P61:
1922
db 'Pentium Pro'
1923
P61len:
1924
P63:
1925
db 'Pentium II (Klamath)'
1926
P63len:
1927
P65:
1928
db 'Pentium II (Deschutes)'
1929
P65len:
1930
P66:
1931
db 'Celeron (Medocino)'
1932
P66len:
1933
P67:
1934
db 'Pentium III (Katmai)'
1935
P67len:
1936
P68:
1937
db 'Pentium III (Coppermine)'
1938
P68len:
1939
P69:
1940
db 'Pentium M (Banias)'
1941
P69len:
1942
P6A:
1943
db 'Pentium III Xeon (Cascades)'
1944
P6Alen:
1945
P6B:
1946
db 'Pentium III (Tualatin)'
1947
P6Blen:
1948
P6D:
1949
db 'Pentium M (Dothan)'
1950
P6Dlen:
1951
P6E:
318 heavyiron 1952
db 'Pentium M (Yonah)/ Core'
223 Ghost 1953
P6Elen:
1954
P6F:
318 heavyiron 1955
db 'Pentium D (Conroe)/ Core 2 (Kentsfield)'
223 Ghost 1956
P6Flen:
1957
;---
1958
PS0:
1959
db 'Itanium (IA-64)'
1960
PS0len:
1961
;------------
1962
PF0:
1963
db 'Pentium 4 (Willamete)'
1964
PF0len:
1965
PF2:
1966
db 'Pentium 4 (Northwood)'
1967
PF2len:
1968
PF3:
1969
db 'Pentium 4 (Prescott)'
1970
PF3len:
1971
PF5:
1972
db 'Pentium 4 (Tejas)'
1973
PF5len:
1974
PF6:
1975
db 'Pentium 4 (Presler)'
1976
PF6len:
1977
;----------------Intel Celerons
1978
P65c:
1979
db 'Celeron (Covington)'
1980
P65clen:
1981
P68c:
1982
db 'Celeron (Coppermine)'
1983
P68clen:
1984
P6Bc:
1985
db 'Celeron (Tualatin)'
1986
P6Bclen:
1987
PF0c:
1988
db 'Celeron (Willamete)'
1989
PF0clen:
1990
PF2c:
1991
db 'Celeron (Northwood)'
1992
PF2clen:
1993
PF3c:
1994
db 'Celeron (Prescott)'
1995
PF3clen:
1996
PF5c:
1997
db 'Celeron D (Texas)'
1998
PF5clen:
1999
PF6c:
2000
db 'Celeron D (Presler)'
2001
PF6clen:
2002
;---------AMD
532 diamond 2003
A50     db 'K5 (PR75, PR90, PR100)',0
2004
A51     db '5k86 (PR120, PR133)',0
2005
A52     db '5k86 (PR166)',0
2006
A53     db '5k86 (PR200)',0
2007
A56     db 'K6',0
2008
A57     db 'K6',0
2009
A58     db 'K6-2',0
2010
A59     db 'K6-III',0
2011
A5D     db 'K6-2+ or K6-III+',0
223 Ghost 2012
;-------------------
532 diamond 2013
At1     db 'Athlon',0
2014
At2     db 'Athlon',0
2015
At3     db 'Duron (Spitfire)',0
2016
At4     db 'Athlon (Thunderbird)',0
2017
At6     db 'AthlonXP (Palomino)',0
2018
At7     db 'Duron (Morgan)',0
2019
At8     db 'AthlonXP (Thoroughbred)',0
2020
At8a    db 'Duron (Applebred)',0
2021
Ata     db 'AthlonXP (Barton)',0
2022
Atat    db 'AthlonXP (Thorton)',0
223 Ghost 2023
;-------------------
2024
AF1:
2025
db 'Dual-core Opteron'
2026
AF1len:
2027
AF3:
2028
db 'Athlon 64 (Toledo)'
2029
AF3len:
2030
AF4:
2031
db 'Athlon 64 (ClawHammer)'
2032
AF4len:
2033
AF5:
2034
db 'Opteron/Athlon 64 FX (SledgeHammer)'
2035
AF5len:
2036
 
2037
AFC:
2038
db 'Athlon 64 (Newcastle)'
2039
AFClen:
2040
 
2041
AFF:
2042
db 'Athlon 64 (Winchester)'
2043
AFFlen:
2044
 
2045
AFS:
2046
db 'Athlon 64 (San Diego)'
2047
AFSlen:
2048
 
2049
AFV:
2050
db 'Athlon 64 (Venice)'
2051
AFVlen:
2052
 
2053
AFCs:
2054
db 'Sempron (Paris)'
2055
AFCslen:
2056
 
2057
AFCsp:
2058
db 'Sempron (Palermo)'
2059
AFCsplen:
2060
 
2061
;---------Cyrix
2062
C52:
2063
db '6x86 M1'
2064
C52len:
2065
C54:
2066
db 'MediaGX'
2067
C54len:
2068
C60:
2069
db '6x86MX M2'
2070
C60len:
2071
C65:
2072
db 'C3 (Cyrix M2)' ;?
2073
C65len:
2074
;--------IDT
2075
V54:
2076
db 'WinChip C6'
2077
V54len:
2078
V58:
2079
db 'WinChip 2'
2080
V58len:
2081
V59:
2082
db 'WinChip 3'
2083
V59len:
2084
;-------VIA
2085
V66:
2086
db 'C3 (Samuel)'  ; Joshua is unreleased 065
2087
V66len:
2088
V67:
2089
db 'C3 (Samuel2/Ezra)' ; ?
2090
V67len:
2091
V68:
2092
db 'C3 (Ezra-T/Eden)' ;?
2093
V68len:
2094
V69:
2095
db 'C3 (Antaur/Nehemiah)' ;?
2096
V69len:
2097
VA:
2098
db 'C7 (Esther)' ;?
2099
VAlen:
2100
;---------Transmeta
2101
T5:
2102
db 'Crusoe' ;
2103
T5len:
2104
TF:
2105
db 'Efficeon' ;
2106
TFlen:
2107
;---------
2108
NG:
2109
    db 'Next generation CPU'
2110
NGlen:
2111
 
2112
stm:
2113
    db 'Internal name:'
2114
stmlen:
2115
 
318 heavyiron 2116
athloncoef	db	110, 115, 120, 125, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 120
2117
		db	190, 120, 200, 130, 135, 140, 210, 150, 220, 160, 165, 170, 180, 230, 240
2118
athlonmcoef:	db	110, 115, 120, 125, 50, 55, 60, 65,  70, 75, 80, 85, 90, 95, 100, 105
2119
		db	30, 190, 40, 200, 130, 135, 14, 210, 150, 220, 160, 165, 170, 230, 240
2120
athloncoef3	db	45, 50, 40, 55, 25, 30, 60, 35
2121
p4coef		db	160, 170, 180, 190, 200, 210, 220, 230, 80, 90, 100, 110, 120, 130, 140, 150	; Pentium 4 (Willamete)
2122
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
223 Ghost 2123
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
2124
 
2125
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2126
;
2127
;  include images and unpacking- and hasharea
2128
;
2129
include 'logos.inc' ; include file where gif's are stored
2130
img_area:	   ; image is going to be unpacked to here
2131
rb 201*49*3+8	   ; image resolution (bits to reserve)
2132
 
2133
img_area2:	   ; image is going to be unpacked to here
2134
rb 93*24*3+8	   ; image resolution (bits to reserve)
2135
 
2136
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2137
 
2138
I_END:
451 heavyiron 2139
 
532 diamond 2140
; RSA test data
2141
align 4
2142
  num1 rd 40
2143
  num2 rd 40
2144
  num3 rd 40
2145
  iter rd 1
2146
  openkey rd 1
2147
 
552 diamond 2148
IncludeUGlobals
532 diamond 2149
 
451 heavyiron 2150
ost dd ?
2151
sot dd ?
2152
f dd ?
2153
m dd ?
2154
s dd ?
2155
t dd ?
2156
 
2157
ef dd ?
2158
em dd ?
2159
 
2160
multiplier dd ?
2161
multa dd ?
2162
multb dd ?
2163
 
2164
smallvendor dd ?
2165
L1d  dd ?
2166
L1i  dd ?
2167
L2   dd ?
2168
L3   dd ?
2169
micron dd ?
2170
brand dd ?
2171
 
2172
ram_size_a dd ?
2173
ram_size_t dd ?
2174
 
2175
stdc dd ?
2176
extc dd ?
2177
 
2178
FRS dd ?
2179
freqsel db ?
532 diamond 2180
sse3sup db ?
451 heavyiron 2181
 
2182
freqbb dd ?
2183
freqll dd ?
2184
 
2185
wayli dd ?
2186
lineli dd ?
2187
 
2188
wayld dd ?
2189
lineld dd ?
2190
 
2191
wayl2 dd ?
2192
linel2 dd ?
2193
 
2194
wayl3 dd ?
2195
linel3 dd ?
2196
 
2197
;number_of_log_cpus dd ?
2198
 
2199
che db ? ; numbers of calls for Intel caches detection
2200
 
2201
myname:
2202
   rb 48
2203
mynamelen:
2204
 
223 Ghost 2205
align 4
485 heavyiron 2206
 
223 Ghost 2207
  thread2_stack_area rb 64
2208
  thread2_esp = $
2209
U_END: