Questions tagged [x86]
The Intel x86 family of architectures in general. Contemporary systems are OFF-TOPIC! Use the specific architecture’s tag if applicable.
77
questions
46
votes
1
answer
6k
views
Which "very esoteric processor instructions" are used by OS/2?
According to the Oracle VirtualBox 6.0 manual, "Certain rare guest operating systems like OS/2 make use of very esoteric processor instructions that are not supported with our software ...
37
votes
2
answers
5k
views
Can an x86 CPU running in real mode be considered to be basically an 8086 CPU?
When an x86 CPU is running in real mode, can it be considered to be basically an 8086 CPU (or maybe 8088)? Or are there differences between the two?
32
votes
4
answers
10k
views
Intel CPU bug in the 90s
My teacher who teaches "Logic" at the university told us a story about Intel processors, which goes: "In the 90s, Intel had a bug in the calculation of mathematical functions like sine ...
31
votes
4
answers
6k
views
What are the "virtual machines" that were running on 80386 and later x86 CPUs before full hardware virtualization?
When reading techy articles about older Windows versions I often come across the term "Virtual machine". Apparently even Windows 3.11 had some sort of virtual-machine-thing going on in it, ...
28
votes
8
answers
7k
views
Why did x86 support self-modifying code in the 80s and 90s?
In this question, by 'self-modifying code', I mean software that writes to a section of code that the CPU will very soon fetch and attempt to execute.
I am not here talking about the software ...
28
votes
2
answers
8k
views
The start of x86: Intel 8080 vs Intel 8086?
Why is it said that all modern Intel processors of the x86 family are said to descend from the Intel 8086 and not the Intel 8080? From the Wikipedia article on the Intel 8086,
The 8086 gave rise to ...
26
votes
6
answers
7k
views
Why weren't discrete x86 CPUs ever used in game hardware?
Please don't point out APUs with x86_64 cores used in current generation game consoles, these are not part of the question
I cannot recall a single arcade system or game console that ever used x86 ...
25
votes
6
answers
12k
views
Can x86 processors run 8-bit applications?
I was wondering if it is possible to run 8-bit applications within QEMU. I know that the x86 architecture can run 16-bit applications, but can it also run 8-bit applications?
24
votes
4
answers
3k
views
How can a 32-bit x86 CPU start with reset vector 0xFFFFFFF0 even though it starts in 16-bit real mode?
As far as I know, x86 CPUs start up in 16-bit 'real' mode (maybe some don't).
The reset vector is 0xFFFFFFF0 (in most CPUs and in this context)
In this 16-bit real mode, we can only access 16 bit ...
24
votes
2
answers
3k
views
Detecting the version of i486 CPU
Detecting the CPU model has been easy since Intel added the CPUID instruction to their Pentium processors (and some late 486s). However, earlier CPUs did not have this feature, so software had to rely ...
23
votes
5
answers
3k
views
Undocumented instructions in x86 CPU prior to 80386?
I have questions regarding some x86 instructions that were documented for the 80386 and later x86 CPUs, but not for earlier chips.
"OR reg/mem16, immed8" (0x83/1) "AND reg/mem16, ...
23
votes
1
answer
2k
views
How were the test registers used on the i386 and the i486?
The Intel 386 and 486 CPUs (and some clones too) had some test registers (TR3–TR7) which were used to test features like the TLB and caches. Starting with Pentium, these were replaced with MSRs (Model ...
22
votes
2
answers
6k
views
What was the last x86 CPU that did not have the x87 floating-point unit built in?
This Wikipedia page says the following:
Most x86 processors since the Intel 80486 have had these x87
instructions implemented in the main CPU
So the above quote implies that some CPUs that were ...
22
votes
2
answers
4k
views
Were there any PCs using the i376?
The Intel 80376 was an x86 CPU that didn't support Real Mode or paging. It was targeted for embedded applications and it wasn't very successful at that (the 80386EX overtook it).
Under these ...
21
votes
7
answers
17k
views
What does the "x" in "x86" represent?
I have read the following in the x86 Wikipedia page:
The term "x86" came into being because the names of several successors to Intel's 8086 processor end in "86", including the 80186, 80286, 80386 ...
20
votes
1
answer
2k
views
Identifying late 1990s embedded 486 UNIX-like system
I'm trying to identify the operating system on a Thermo-CRS C500 robot arm controller. From the specifications I know it runs on a 100 MHz 486 processor, and has 4 MB RAM and 2MB of flash/NVRAM ...
20
votes
2
answers
611
views
What is the history of SysV i386 calling convention for struct return?
I would like to understand historical roots of the quirk in the SysV calling convention for the 32-bit x86, which was inherited by the ELF standard, and so remains used on Linux to this day. Consider ...
19
votes
7
answers
6k
views
Why does the x86 not have an instruction to obtain its instruction pointer?
This has always confused me. Why can you not directly obtain the IP, and instead have to go through some odd assembly hoops such as calling a function whose only purpose is to push its own return ...
19
votes
1
answer
2k
views
Detecting the external x87 FPU
On modern processors the x87 FPU is integrated in the CPU chip, but it used to be a separate chip before the 80486. So is there any way to detect its presence, and maybe even its generation (8087, ...
18
votes
5
answers
6k
views
What was the first multiprocessor x86 motherboard?
I know dual socket motherboards were around in the 90's before Intel released the Core series. And SMP hardware and operating systems have been around earlier than the PC platform of course.
...
18
votes
3
answers
2k
views
Did any software attempt to perform 8086 emulation on the 80286 using LOADALL, in the vein of the later virtual 8086 mode of the 80386?
I know that Virtual 8086 mode was added on the 80386 to make it possible to run old applications in a Protected Mode environment.
The 80286 had a lot of shortcomings, such as not being able to switch ...
18
votes
3
answers
2k
views
How to use the "darker" CGA palette using x86 Assembly?
For those of you retro developers out there, I am having a hard time figuring out how exactly to select the "darker" color palette in 320x200 CGA mode. Here's what I have so far:
setup_cga_graphics:
...
18
votes
2
answers
2k
views
Examples of operating systems using hardware task switching of x86 CPUs
Intel IA-32 architecture a.k.a. x86 offers hardware task switching capabilities since 80386. It includes TR (task register), memory segmentation features such as Task State Segment, task gates, call ...
17
votes
3
answers
2k
views
Why can't I invoke the next interrupt service by incrementing the AX register after calling the same interrupt?
I have two snippets of 8086 assembly code, both of which are supposed to do the same thing: make the mouse appear on the screen.
Show_Mouse:
push ax
mov ax,0 ;Reset Mouse
int 33h
...
17
votes
3
answers
4k
views
In x86 real mode, how does BIOS know what hardware is present?
I know that BIOS is obsolete, hence why I'm asking here :-) BIOS needed to do things like start loading the OS, for which it (usually?) would have needed things like a hard disk driver.
However, BIOS ...
17
votes
2
answers
3k
views
Why was there a need for separate I/O address space in addition to a memory address space already?
I was reading through PCI and PCIe configuration access mechanism in Chapter 3 (page 96) of PCIe System Architecture (Mindshare series). As a solution to prevent locking (in case of multiple threads) ...
17
votes
3
answers
1k
views
x86 as a Pascal Machine?
From this answer by gsg about the usage of certain x86 instructions:
Note that the x86 was originally designed as a Pascal machine, which is why there are instructions to support nested functions (...
17
votes
2
answers
678
views
Why did the 8080's PUSH PSW write one reserved bit as 1 and the other two as 0?
The x86 "flags" register, which holds condition codes and other processor status bits, has several reserved bits with fixed values, but these fixed values are not all the same. In ...
16
votes
4
answers
2k
views
Is it possible to detect a CGA card on an IBM PC 5150 by write/reading the Motorola 6845?
I am trying to programatically detect the CGA card on old IBM 5150-ish PCs.
The Paku Paku game source code doesn't directly detect it. The strategy is to detect VGA, EGA, Tandy, PCJr, etc etc, then if ...
15
votes
4
answers
5k
views
What was the last x86 processor that didn't have a microcode layer?
In the earlier days of microprocessors instructions were hard-wired, i.e. a particular instruction triggered circuitry that was mostly (if not completely) implemented for that instruction. I believe ...
15
votes
2
answers
2k
views
How to use "AND," "OR," and "XOR" modes for VGA Drawing
I've been trying to implement a blitter in MS-DOS, but before I do that I wanted to test the various graphics modes of the VGA graphics card. (I'm emulating using DOSBox.) According to this paper on ...
14
votes
1
answer
860
views
What sequence of instructions is the equivalent to `fcomip` on i486?
Do you perhaps happen to know, what would be the easiest way to modify my AEC-to-x86 compiler (you can run the core of it in browser: https://flatassembler.github.io/compiler ) to be able to target ...
14
votes
1
answer
2k
views
What manages Upper Memory Blocks (UMBs) in MS-DOS?
I had always assumed that EMM386.EXE was responsible for managing the Upper Memory Blocks - UMBs - the memory space between 640KiB and 1MiB in real mode x86. For example, on MS-DOS 6.22, help emm386....
14
votes
1
answer
690
views
SYSENTER/SYSEXIT broken on Pentium Pro and Pentium II?
I was just reading What is linux-gate.so.1?, and it says this:
Intel recognized this problem early on and introduced a more efficient system call interface in the form of sysenter and sysexit ...
13
votes
2
answers
2k
views
If a PS/2 device on a 32-bit x86 sends a byte to the IO port 0x60 and you read it, what happens next?
I'm writing a hobby OS and the first thing I want to do is access PS/2 devices (it's a somewhat legacy, 32 bit OS, so I figured it's relevant to ask here?).
I can see my PS/2 devices and I want to ...
13
votes
2
answers
2k
views
Intel 80188 & 8087 clock frequency differences
Today I saw that the Intel APX-188/186 User's Manual states that you can use a 8087 as coprocessor for the 80188/186 (as the 80187 is only usable with the 186). But I was wondering about the clock ...
13
votes
2
answers
1k
views
32-bit PCI riser cards: different types?
[copied from superuser.com]
I'm duplicating an existing compact PC; I'd love to replace it with modern components, but for various reasons I can't.
I'm having a tough time finding the correct 32-bit ...
13
votes
2
answers
2k
views
What was the first x86 CPU to use a cache of any kind?
I believe the 80286 had a prefetch instruction queue, but did it have any other forms of cache? Was the 80386 the first x86 CPU to have a cache?
13
votes
1
answer
2k
views
Difference between INT 0x20 and INT 0x21 (0x4C)?
Checking the MS-DOS interrupt list we see INT 0x20 "Terminate the program" (see https://en.wikipedia.org/wiki/DOS_API) but if we check the same page we see INT 0x21 with function 0x4C will &...
13
votes
1
answer
2k
views
Did x86 CPU vendors like Intel, NEC, AMD, and Cyrix provide their own debugger for DOS with better CPU support and was it free?
MS-DOS's debugger DEBUG.EXE did only support the assembly/disassembly of 8086 opcodes.
DR-DOS's debugger SID86.EXE, SID.EXE and Novel's debugger DEBUG.EXE did support 80286 opcodes and more, but no ...
13
votes
2
answers
749
views
How is the ‘Coprocessor segment overrun’ exception supposed to be handled?
The Intel 80386 CPU didn't have an on-board x87 FPU (maybe with the exception of some non-Intel clones). It was, however, able to use either a 80287 or 80387 as an external FPU. When the x87 FPU ...
12
votes
2
answers
2k
views
BIOS interrupts vs Hardware interrupts
On an x86 chip running in Real Mode, interrupts are resolved with the help of the IVT (Interrupt Vector Table), which is an array located at address 0000h:0000h that consists of 256 entries, 32-bit ...
12
votes
1
answer
334
views
What is the difference between the different versions of the SID or SID86 debugger for the x86 PC that was shipped with the different DR-DOS versions?
I did a little research about Digital Research's 8086 Symbolic Instruction Debugger. Short name SID86.EXE and SID.EXE in later versions. But I couldn't find some sort of version history?
I would ...
11
votes
9
answers
3k
views
What is the best way to set up multiple operating systems on a retro PC?
I have an old Pentium II computer, and I would like to set it up as a retro gaming machine, but I would also like to play around with old distributions of Linux, OS/2 and other operating systems.
What ...
11
votes
5
answers
2k
views
Creating 8086 binary larger than 64 KiB using NASM or any other assembler
For fun I'm developing an IBM PC emulator. I would like to test all instructions to see if I implemented them correctly. For most instructions this is straight forward, for "FAR CALL/JMP" it ...
11
votes
1
answer
3k
views
3 beeps on a 486 computer with an American Megatrends bios?
So far I've figured out that means something about the ram bit I haven't been able to figure out what the problem is
Edit: video link
11
votes
3
answers
3k
views
Swapping endian-ness on the 68000
In the 80s, the two great 16/32-bit desktop CPU architectures were the x86, used in the IBM PC and compatibles, and the 68000, used in the Amiga, Atari ST, Macintosh, early UNIX workstations and ...
11
votes
3
answers
1k
views
The NexGen's x86 internal RISC architecture
NexGen was best known for the unique implementation of the x86 architecture in its processors. NexGen's CPUs were designed very differently from other processors based on the x86 instruction set at ...
11
votes
0
answers
414
views
Is it possible to trap 387 FPU opcodes on a 287 connected to a 386?
The 8087 and 287 FPUs were designed before the IEEE 754 standard was released. Because of this, they contain some instructions which are not compliant with it. When the 387 was released in 1987, it ...
10
votes
2
answers
2k
views
First x86 Software Development Manual
These manuals are now called “Intel® 64 and IA-32 Architectures Software Developer Manuals”, and the current version is 71. What was the original name of this manual and when was it released?