flat assembler
Message board for the users of flat assembler.

Index > DOS > CPUID.com & Fasm source code 8088-P4+ DOS

Author
Thread Post new topic Reply to topic
bitdog2u



Joined: 31 Jan 2023
Posts: 28
Location: Ketchikan, Alaska
bitdog2u 11 Jun 2025, 13:18
Hello, I wrote CPUID.asm cuz I couldn't find any DOS CPUID program that gave me much info on my CPU.
It needs some testing, and improvements, probably.

TOTALLY FREEware, except,
I ask that you keep a history of it's development in the source code.
If you add anything worth having, add your name, date, & short description.
You can mark your added code with a unique search string comment.

To understand its output, you will probably need to download an INFO file

We should do some BETA testing, & fixing before someone uploads it to a .FTP
where it probably should be, once it becomes worthy.

Any input is good input, so constructive criticism is welcome.
If it doesn't work or report correctly on your CPU, please report that.

Thanks in advance, Bitdog

PS, it is coded to do 8088 to a p4 ?
But I don't know what it does without your input.
FASM source code included.
If you FIX/alter it, please post the worthy updates for us all.


Description: My untested, unfinished CPUID com FASM SRC DOS .asm
Download
Filename: CPUID.ZIP
Filesize: 30.77 KB
Downloaded: 19 Time(s)

Post 11 Jun 2025, 13:18
View user's profile Send private message Reply with quote
Core i7



Joined: 14 Nov 2024
Posts: 82
Location: Socket on motherboard
Core i7 11 Jun 2025, 15:36
If the cpuid instruction was introduced in 1993 for Pentium (i80586), then why does 16-bit registers AX..DX - 8088? After all, if there is support for cpuid, then the registers 100% are 32-bit. Or am missing something?
Post 11 Jun 2025, 15:36
View user's profile Send private message Reply with quote
bitdog2u



Joined: 31 Jan 2023
Posts: 28
Location: Ketchikan, Alaska
bitdog2u 11 Jun 2025, 17:16
#1.My code uses old fashion CPU checks, to find out if the computer can dump out a CPUID, then it does if it can.
So if you had an 8088, the checks would stop at 80186 and the report would be, YOU HAVE AN 8088 and my sympathy.
When all the CPU checks prove that the CPU has CPUID, then and only then can CPUID dump out data.
Then my CPUID.COM dumps out more data than you really want, it will dump out all the LEAFs your BOX has to give.
Then download the info for those LEAFS and you will know what you have. There is some info in my code, but its been years since I used it so I will have to review my own code to give any real answers here.
#2. my code should tell you what is in your box weather its is pre CPUID 1993 or after.
Most others code can only do after 1993 CPUID and they give the user no info.

If that didn't answer your question, ask again, Please.

So did you try it ? Did it work ? What did you try it on ? What CPU ? What OS ?
Did the code assemble? Did I include everything needed to create an identical copy of the CPUID.COM enclosed.
FEED ME SEEMORE.
(Little Shop of Horrors quote)

PS,the intent of CPUID is for programmers to be ABLE TO WRITE CODE THAT DETERMINES THE ABILITIES OF THE COMPUTER YOUR CODE IS RUNNING ON, and capitalize on that.
The multi leafs hold bits to test for MMX and EVERYTHING.
Most people think CPUID is designed to tell you what computer you have.
For that info, I just look at the receipt.
SO with that in mind, you now have the code showing how all that info is gathered, and you can use it to write better programs.
I can't. I'm still stuck in 286 mode.
Post 11 Jun 2025, 17:16
View user's profile Send private message Reply with quote
Core i7



Joined: 14 Nov 2024
Posts: 82
Location: Socket on motherboard
Core i7 11 Jun 2025, 18:10
If you display a binary mask, then also need help for each bit, otherwise the user will not see the desired result (i.e. we will get software that needs a large specification on top). Better short, but informative, for example 386+:
Code:
use16
org 100h
jmp start

mess0  db 13,10,   ' CPU IDENTIFICATION'
       db 13,10,   ' ******************'
       db 13,10,   ' CPUID...:  $'
mess1  db 13,10,   ' Max LEAF:  $'
mess2  db 13,10,10,' Vendor..:  $'
mess3  db 13,10,   ' Product.:  $'
mess4  db 13,10,   ' Ext.code:  $'
mess5  db 13,10,10,' Features:',10,' $'

mess10  db 'OK!$'
mess20  db 'ERROR!$'

FeaturesTable  dw  @00,@01,@02,@03,@04,@05,@06,@07,@08,@09    ; 10 & 20 reserved
               dw  @10,@11,@12,@13,@14,@15,@16,@17,@18,@19
               dw  @20,@21,@22,@23,@24,@25,@26,@27,@28,@29
@00  db 'FPU,$'
@01  db 'VME,$'
@02  db 'DE,$'
@03  db 'PSE,$'
@04  db 'TSC,$'
@05  db 'MSR,$'
@06  db 'PAE,$'
@07  db 'MCE,$'
@08  db 'CMPXCH8,$'
@09  db 'APIC,$'
@10  db '$'
@11  db 'SYSENTER,$'
@12  db 'MTRR,$'
@13  db 'PGE,$'
@14  db 'MCA,$'
@15  db 'CMOV,$'
@16  db 'PAT,$'
@17  db 'PSE-36,$'
@18  db 'PSN,$'
@19  db 'FLUSH,$'
@20  db '$'
@21  db 'DBG,$'
@22  db 'ACPI,$'
@23  db 'MMX,$'
@24  db 'FXSR,$'
@25  db 'SSE,$'
@26  db 'SSE2,$'
@27  db 'SS,$'
@28  db 'HTT,$'
@29  db 'TM,$'

buff    dd 4 dup(0)

;//---------------------
start:  mov    dx,mess0
        call   message
        call   testCPUID        ; exit if 0

        mov    dx,mess1
        call   message
        mov    eax,0            ; max fn support
        cpuid
        mov    ebx,10           ; print DEC
        call   convert

;//-----
        mov    dx,mess2
        call   message
        mov    eax,0            ; vendor
        cpuid
        mov    dword[buff+0],ebx
        mov    dword[buff+4],edx
        mov    dword[buff+8],ecx
        mov    esi,buff
        mov    cx,12            ; 12 char
@cpuLoop:
        lodsb
        int    29h
        loop   @cpuLoop

;//-----
        mov    dx,mess3
        call   message
        mov    eax,80000002h    ; CPU name
        push   eax
        call   fnCPU
        mov    ecx,16
@print:        lodsb
        cmp    al,' '
        jne    @next
        dec    ecx
        jmp    @print
@next:  int    29h
        loop   @print

        pop    eax
        inc    eax
@sLoop: push   eax
        call   fnCPU
        mov    ecx,16
@print1:       lodsb
        int    29h
        loop   @print1
        pop    eax
        inc    eax
        cmp    eax,80000004h
        jbe    @sLoop

;//-----
        mov    dx,mess4
        call   message
        mov    eax,1            ; CPU code
        cpuid
        mov    ebx,16           ; print HEX
        call   convert

;//-----
        mov    dx,mess5
        call   message
        mov    eax,1            ; Features
        cpuid
        mov    si,FeaturesTable
        mov    bx,30            ; bits 0-29
        xor    ax,ax
@printFeat:
        cmp    al,10     ; bit 10 & 20 reserved
        je     @miss
        cmp    al,20
        je     @miss
        bt     cx,ax           ; BitTest
        jnc    @miss
        push   si ax bx        ; found!
        shl    ax,1
        add    si,ax
        mov    dx,[si]
        call   message
        pop    bx ax si
@miss:  inc    al
        dec    bx
        jnz    @printFeat

;//-----
@ends:  xor    ax,ax   ; game over!
        int    16h
        int    20h

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
message:
        mov    ah,9
        int    21h
ret

testCPUID:   
        pushfd
        pop    eax
        mov    ecx,eax
        xor    eax,40000h
        push   eax
        popfd
        pushfd
        pop    eax
        xor    eax,ecx
        jne    no_cpuid
        mov    dx,mess20
        call   message
        jmp    @ends
no_cpuid:
        mov    dx,mess10
        call   message
ret

convert:       ;<---------- Print EAX         
        xor    ecx,ecx
@fnDiv: xor    edx,edx
        div    ebx        ; arg = 16(hex), 10(dec) or 8(oct)
        push   edx
        inc    ecx
        or     eax,eax
        jnz    @fnDiv
@fnOut: pop    eax
        cmp    al,09
        jle    @noHex
        add    al,7
@noHex: add    al,30h
        int    29h
        loop   @fnOut
ret

fnCPU:  cpuid
        mov    dword[buff+0],eax
        mov    dword[buff+4],ebx
        mov    dword[buff+8],ecx
        mov    dword[buff+12],edx
        mov    esi,buff
ret    


Description:
Filesize: 2.31 KB
Viewed: 308 Time(s)

cpuidDos.png




Last edited by Core i7 on 11 Jun 2025, 18:45; edited 1 time in total
Post 11 Jun 2025, 18:10
View user's profile Send private message Reply with quote
Core i7



Joined: 14 Nov 2024
Posts: 82
Location: Socket on motherboard
Core i7 11 Jun 2025, 18:21
Yes, I tested your code on my WinXP in VirtualBox, and I got this error (the window doesn't close).
Code:
CPUID says your CPU is a:   GenuineIntel
        ђPentium(R) Dual-Core  CPU      E5200  @ 2.50GHz
    0 = Extended Family         (E1AX bits 27-20)
    1 = Extended Model #        (E1AX bits 19-16)
    0 = Original OEM processor. (E1AX bits 15-12) = TYPE 13-12
    6 = Family                  (E1AX bits 11-8)
    7 = Model #                 (E1AX bits  7-4)
   10 = Stepping ID             (E1AX bits  3-0)
   13 = max LEAF #              (E0AX bits  7-0)
    8 = Extended LEAF max #     (EAX= 80000000h input)
    0 = Brand Index #           (E1BX bits 7-0)
    8 = CFLUSH Line Size        (E1BX bits 15-8)
    1 = Initial APIC ID         (E1BX bits 31-24)

E1CX=Extended, FeatureFlags=E1DX, E2?X= Cache+TLBInfo, E1AX= Signiture 01067Ah

LEAF# 10987654321098765432109876543210  10987654321098765432109876543210 BitBar
E1AX= 00000000000000010000011001111010b 00000001000000100000100000000000b =E1BX
E1CX= 00000100000000001110001110011101b 10111111111010111111101111111111b =E1DX
E2AX= 00000101101100001011000100000001b 00000000010101100101011111110000b =E2BX
E2CX= 00000000000000000000000000000000b 00101100101101000011000001111101b =E2DX
E3AX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E3BX
E3CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E3DX
E4AX= 00000100000000000000000100100001b 00000001110000000000000000111111b =E4BX
E4CX= 00000000000000000000000000111111b 00000000000000000000000000000001b =E4DX
E5AX= 00000000000000000000000001000000b 00000000000000000000000001000000b =E5BX
E5CX= 00000000000000000000000000000011b 00000000000000100010001000100000b =E5DX
E6AX= 00000000000000000000000000000001b 00000000000000000000000000000010b =E6BX
E6CX= 00000000000000000000000000000011b 00000000000000000000000000000000b =E6DX
E7AX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E7BX
E7CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E7DX
E8AX= 00000000000000000000010000000000b 00000000000000000000000000000000b =E8BX
E8CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E8DX
E9AX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E9BX
E9CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E9DX
EaAX= 00000111001010000000001000000010b 00000000000000000000000000000000b =EaBX
EaCX= 00000000000000000000000000000000b 00000000000000000000010100000011b =EaDX
EbAX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EbBX
EbCX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EbDX
EcAX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EcBX
EcCX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EcDX
EdAX= 00000000000000000000000000000011b 00000000000000000000001001000000b =EdBX
EdCX= 00000000000000000000001001000000b 00000000000000000000000000000000b =EdDX

Bits= fedcba9876543210fedcba9876543210  fedcba9876543210fedcba9876543210  LEAF#
No CPUID is available. Your CPU is:  

LEAF# 10987654321098765432109876543210  10987654321098765432109876543210 BitBar

E1AX= 00000000000000010000011001111010b 00000001000000100000100000000000b =E1BX
E1CX= 00000100000000001110001110011101b 10111111111010111111101111111111b =E1DX
E2AX= 00000101101100001011000100000001b 00000000010101100101011111110000b =E2BX
E2CX= 00000000000000000000000000000000b 00101100101101000011000001111101b =E2DX
E3AX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E3BX
E3CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E3DX
E4AX= 00000100000000000000000100100001b 00000001110000000000000000111111b =E4BX
E4CX= 00000000000000000000000000111111b 00000000000000000000000000000001b =E4DX
E5AX= 00000000000000000000000001000000b 00000000000000000000000001000000b =E5BX
E5CX= 00000000000000000000000000000011b 00000000000000100010001000100000b =E5DX
E6AX= 00000000000000000000000000000001b 00000000000000000000000000000010b =E6BX
E6CX= 00000000000000000000000000000011b 00000000000000000000000000000000b =E6DX
E7AX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E7BX
E7CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E7DX
E8AX= 00000000000000000000010000000000b 00000000000000000000000000000000b =E8BX
E8CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E8DX
E9AX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E9BX
E9CX= 00000000000000000000000000000000b 00000000000000000000000000000000b =E9DX
EaAX= 00000111001010000000001000000010b 00000000000000000000000000000000b =EaBX
EaCX= 00000000000000000000000000000000b 00000000000000000000010100000011b =EaDX
EbAX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EbBX
EbCX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EbDX
EcAX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EcBX
EcCX= 00000000000000000000000000000000b 00000000000000000000000000000000b =EcDX
EdAX= 00000000000000000000000000000011b 00000000000000000000001001000000b =EdBX
EdCX= 00000000000000000000001001000000b 00000000000000000000000000000000b =EdDX

Bits= fedcba9876543210fedcba9876543210  fedcba9876543210fedcba9876543210  LEAF#
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
No CPUID is available. Your CPU is:  There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.
There is an FPU running. But below a 286 there is no
MSW (Machine Status Word) to check for FPU emulation.

    
Post 11 Jun 2025, 18:21
View user's profile Send private message Reply with quote
bitdog2u



Joined: 31 Jan 2023
Posts: 28
Location: Ketchikan, Alaska
bitdog2u 11 Jun 2025, 22:00
ok Core i7
It is going to take me a bit to digest all this.
Can you assemble the code to get an exact CPUID.COM ?
Did I forget to include any files ?
And is the code acceptable and understandable for you to work with ?
It's freeware, so you can alter it. CAN YOU FIX IT FOR XP?
And thanks for the input.

IO redirect the output
CPUID > AFILE.TXT
will capture all the output to a file if the screen starts scrolling crap
You have a lot more LEAF ACTIVITY than I do, My p4 has leaf2
Since LEAF 0 is practically NO INFO it doesn't count, so I didn't show it.

I wanted a program that dumped out all the info.
I have never had as much output as you have.
I'm really not that great of a programmer.
I gots lots of tough talk though.

PS, the hard part of my CPUID.com was getting the checks for 8088 to 486
The first CPUID came out on the last 486's, and they were working on it when Pentium came out.
I got all the CPU checks I could find and went over about 15 of the most popular checks,
I used the best proven ones in a coordination effort and put them all together when no one else did.
That is how my code gets to the p4 where CPUID would work.
I found the early CPU check code interesting and difficult to work with since there is no wiggle room to OOPs in.
So your XP machine survived those 8088 checks. Thanks, I needed that.

PS2, I don't know anything about FPU codeing, so my FPU check code area could be an area that really needs someone else to fix.

I'll check back later.


Last edited by bitdog2u on 12 Jun 2025, 00:22; edited 1 time in total
Post 11 Jun 2025, 22:00
View user's profile Send private message Reply with quote
bitdog2u



Joined: 31 Jan 2023
Posts: 28
Location: Ketchikan, Alaska
bitdog2u 11 Jun 2025, 23:09
Core i7 says If you display a binary mask, then also need help for each bit, otherwise the user will not see the desired result (i.e. we will get software that needs a large specification on top). Better short, but informative, for example 386+:

I haven't understood that yet, but it looks good, and the output is what most people want.
What I wanted was all the LEAFS EXPOSED in a file and I can figure it all out from there.
So if there are 15 types of CMPXCHG, the LEAFs will show it, where NICE output struggles with that.
I tried coding NICE like that and ended up cutting corners, which is probably why most CPUID programs don't give out much info.
My CPUID is kinda only for programmers, where yours is great for humans, so we aren't competing, we are complimenting each other. AND since I'm asking for help, the only thing I have to offer in return is my FREEWARE, if you want to use my 80888 to 486 check code you can have it, copy/paste.

IT might make a nice little.com that checks for 8088-486 and has output like yours does.
Then yours can take it from there ?
IT'S TOTAL FREEWARE
Take my name out, and put yours in if you want.
But a better way is to keep a history of fixes in the .ASM
A short: who, what, where, when info.

So here is a WHAT IF for you.
WHAT IF, I texted you and said, your program does not run on my computer.
You said: What kind of computer do you have exactly?
Wait a sec, I will use Bitdogs CPUID.com and send you the > OUTfile.txt .ZIPed.
Ok, then I will know EXACTLY WHAT YOU HAVE, without any lies.

That was kinda my original goal.

Look how many LEAFS your CPU dumps out 13 max LEAFS, that is alot of INFO.
you have 10 in STEPPING ID, and I didn't know you were in a FAMILY 6
and your E1DX has bit 31 set, so it's NOT active, like my P4.
CPUID H
Will show the info that most CPUID programs forget to mention.
Because it's too much to mention.

WHAT IF #2
if my CPUID.com dumped out LEAF data in byte form and your CPUID accepted the file as input, then output the INTERPRETED versions that humans understand on the screen, we would have something worth having. Of course, you could get yours to output the LEAF data also.
Then my CPUID would need to use that raw data file as input to dump out the LEAF data
as if we were all on the same team.
i hope that helps.
Post 11 Jun 2025, 23:09
View user's profile Send private message Reply with quote
Core i7



Joined: 14 Nov 2024
Posts: 82
Location: Socket on motherboard
Core i7 12 Jun 2025, 03:21
bitdog2u wrote:
So here is a WHAT IF for you.
WHAT IF, I texted you and said, your program does not run on my computer.
You said: What kind of computer do you have exactly?

Are there any i8088 computers left with an 8-bit bus and a frequency of 5 MHz (maybe only in a museum)? But if you need it for self-education and practical classes, then the documents "CPUID for Intel" have examples in assembler that test CPUs from 8086 to Pentium 4 by flags. See this *.pdf on page 59, although yours seems to have been implemented similarly: https://www.scss.tcd.ie/jeremy.jones/CS4021/processor-identification-cpuid-instruction-note.pdf
Post 12 Jun 2025, 03:21
View user's profile Send private message Reply with quote
bitdog2u



Joined: 31 Jan 2023
Posts: 28
Location: Ketchikan, Alaska
bitdog2u 12 Jun 2025, 13:36
ok Core i7
You are basically right about everything, but I am still stuck.
I have an unfinished program, that needs testing and fixing, then comes my mental problems.
The thought that there actually needs to be a CPUID program that can do all COMPUTERS from the first 8088, to ALL the CPUs of the FUTURE returning a COMPLETE INFORMATION OUTPUT, is stuck in my head and it's not going to go away any time soon, and your program doesn't do that output, but mine does. So say something that makes me think I should throw my program in the garbage and use yours, and I will. I like your code that checks for CPUID available, so I will check that out a little more, but I'm doing my MINEZ.com game now, while the code is still fresh in my head. I only released the CPUID.com program because I thought I took it as far as I could and now I NEED HELP, NOT HARM. So thank you for the read out reply. It looks like CPUID.com made it through reporting all your LEAFs, it errored on the EXIT PROGRAM part, or failed on any EXTENDED LEAFs, the 80000000h part? Cuz it LOOPed back and did LEAFs again, then got locked in an endless loop?. I'm going to look into it in a week or so. AND the idea of a small info dump OUTfile.ext that can be a SHARE-able LOAD-able INfile.ext would be a great CPUID.com upgrade.
I'm going to look into the recommended .pdf so Thanks for that, but I think I already did and found that they used some of the Seattle Computer DOS Logic CPU checks of the time, but not all and they didn't quite get it right. So I had to shove all the checks done in my head and melt them down to THE REAL CODE and I used that SIMPLIFIED, where INTEL BLOATware failed my needs. And it turns out MY code ran through your 1067A ok as it did my 000F29 so I'm moving forward, & thanks for that also.
If I had a huge data base of all Ext.code SIGNATURES I could know your LEAFs by knowing your# 1067A but that is not possible for me to do. There might be internet info available for 1067A but a quickie Google search didn't find anything, YET. So the share a data file idea, is still valid.
I do have an XP machine, but I haven't used it in 5 years. So checking CPUID.com on XP DOS box is another project I'm not going to do soon.
Any way, THANKS for what you did for me, Nobody else even bothered to say anything. And they are probably spreading my unfinished code around the internet like IDIOTS would do. Then you can expect that they will have to talk bad about me, to make them look good. If they had ethics, they would know better.

PS. I thought the i8088 had a 16 bit bus and they came out with the 8086 that had an 8 bit device bus, because most all the devices made at the time were 8 bit, and the 8088 had few usable devices available to it. (tape recorders & 8" floppys ?)
I will have to look into it, but it looks like the answer to your question is NO. Are there any i8088 computers left with an 8-bit bus?

PS2, because of your help, I'm going to try to be helpful to you in the future, cuz it is easier to help, than to quibble over nothing forever.

PS3, Correct me if I'm wrong here but: HELP is when you give a person EXACTLY WHAT THEY ASKED FOR in a timely manner, without any undue burdens.
That is HELP because, nothing else helps. A person is MENTALLY STUCK and they need help to get from point A to B, to get UNSTUCK. They know what A & B is, and no one else does. Help is a selfless act, and in return you get NOTHING. Well, you get harmed occasionally. No good deed goes unpunished. BUT there is an up side, if you help others, you feel like you can ask for help, and you do ask, and you do get some help, and I was asking.
Post 12 Jun 2025, 13:36
View user's profile Send private message Reply with quote
Core i7



Joined: 14 Nov 2024
Posts: 82
Location: Socket on motherboard
Core i7 12 Jun 2025, 14:41
@bitdog2u, each person should do what he wants and not listen to anyone. You have planned a program with such an algorithm, and i'am not against it at all. I just want to advise you to spend your energy on something useful, because 8086/88 are no longer used anywhere, and it will be difficult for you to do tests. Or do you have a machine with such a processor?

Secondly, yes, your code has a lot of information, but unfortunately it is understandable only to you - an ordinary user (for whom you write the program) will drown among such a number of bits. Software should provide information to the user, but now he, on the contrary, demands it in the form of documentation on the cpuid. This does not mean that you should abandon your project - I would just reconsider its purpose a little (who you are writing for, and what exactly you want to tell him).

PS: do not take this criticism to heart, and perceive programming as a game or a hobby, and not a mandatory job.
Post 12 Jun 2025, 14:41
View user's profile Send private message Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 20656
Location: In your JS exploiting you and your system
revolution 12 Jun 2025, 14:51
I personally like it when programs present me with lots of information. I don't like it when programs treat me as dumb or lazy and reduce the amount of information given in an attempt to pander to "normal" people.

People are clever and don't need to be talked down to, IMO.

I think it is a great programming experience to make something that is universal, regardless of how "useless" it might appear to be. The exercise alone is worth the effort, IMO.

Expand your brain. give everything maximum effort. Razz
Post 12 Jun 2025, 14:51
View user's profile Send private message Visit poster's website Reply with quote
bitdog2u



Joined: 31 Jan 2023
Posts: 28
Location: Ketchikan, Alaska
bitdog2u 12 Jun 2025, 17:26
Thank you Revolution
Wise words from one with a good reputation and 20656 posts, has meaning.
Old 8088 check code in a CPUID program wastes 30 bytes, so there is nothing to even talk about there.

While I have you here, would you consider trying my FCV.com ?
I use it a lot. You can take the IDEA or the CODE and port it to Windoze or something where others can use it, it you like it.
It helps me figure out where I left off on my last .ASM write by the CMP of the last backup file.asm
and if there are any changes to a file, it will find and show them.
It would be nice to have some feed back too.


Last edited by bitdog2u on 12 Jun 2025, 18:00; edited 1 time in total
Post 12 Jun 2025, 17:26
View user's profile Send private message Reply with quote
bitdog2u



Joined: 31 Jan 2023
Posts: 28
Location: Ketchikan, Alaska
bitdog2u 12 Jun 2025, 17:49
Core i7 you have some real knowledge of CPUID, maybe when i get to the fix it part I can tap that know how.
The 8088 to 486 code check is not required since it has already been done, and I just copied their code.
But if someone finds a mistake, the source code is there for them and they can also report it.
The wasted 100 bytes is not worth getting worried about.

My thinking is backward of yours maybe. I start with looking over the LEAF info one can down load, then ask, does my computer have that stuff, then look at the LEAF output of CPUID.com, and it will tell me EXACTLY WHAT I HAVE. If someone has a problem with one of my programs, I can get CPUID.com to give me ALL THE INFO on their computer's CPU so I can solve the issue maybe.
I can't see what is wrong with full disclosure at all.
So it's a worthy project, I JUST NEED HELP, is all.
Post 12 Jun 2025, 17:49
View user's profile Send private message Reply with quote
Core i7



Joined: 14 Nov 2024
Posts: 82
Location: Socket on motherboard
Core i7 12 Jun 2025, 19:25
bitdog2u wrote:
I can't see what is wrong with full disclosure at all.

..of course there is nothing bad, only the value of information is measured not in quantity, but in quality. The fact that the entire monitor screen will be filled with zeros and ones does not make the program better, otherwise in addition to the cpuid functions you can also print all the MSR registers. On the other hand, you are the developer, so my opinion is not very important. It's just that you asked for criticism - I gave it to you, you asked for tests - I provided them.
Post 12 Jun 2025, 19:25
View user's profile Send private message Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.