Skip to main content

Questions tagged [x86]

The Intel x86 family of architectures in general. Contemporary systems are OFF-TOPIC! Use the specific architecture’s tag if applicable.

Filter by
Sorted by
Tagged with
30 votes
9 answers
8k 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
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, ...
13 votes
2 answers
2k views

Are .COM executable binaries real mode or protected mode?

Windows and DOS binary executable files with the .EXE extension have an MZ header in them and nowadays also a PE header. But before these there used to also be .COM binary executable files and they ...
2 votes
0 answers
270 views

What is this PSU connector? Compaq Portable motherboard

I've lost the PSU wiring harness to my Compaq Portable motherboard in a move and I'm trying to figure out what connector this is. Here's a picture with some AT-era Molex connectors for perspective. ...
8 votes
2 answers
4k views

What does an ADC (add with carry) instruction following ADD do?

I have found this line in an old 16-bit DOS application (likely to have been generated by Borland Turbo C compiler) and I want to understand the purpose of it: mov dx, [bp+var_192] mov ax, [bp+...
0 votes
2 answers
819 views

What is the most performant "32-bit only" x86 CPU? [closed]

I am thinking of building an era appropriate early/mid-2000s gaming PC. One requirement is that the CPU should not support x86-64 instruction set, only the 32-bit instructions can be used. My guess is ...
5 votes
3 answers
588 views

Why is memory below the stack pointer constantly being overwritten under a debug session?

When I run a debug session using FreeDOS and DEBUG.EXE, I get a session like the following. I've added a description of what I saw as annotation on the image. Each step, I've printed out the stack ...
20 votes
8 answers
7k 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 ...
4 votes
4 answers
2k views

The move to protected mode on x86 [closed]

When I learned programming, the programmer of the CPU had direct memory access. That is, the Z80, the 8086/8088, 6502, and so on. I don't know of any real use of the 186, but at least the 286 ...
5 votes
1 answer
603 views

Did the i186 use interrupt 6 for invalid opcodes?

I don't recall where from but at some point I was under the impression that the Intel 186 processor used interrupt 6 for invalid opcodes. However, there's the HP 95LX that uses a NEC V20. NEC V20/V30 ...
11 votes
5 answers
6k views

How did 16-bit MS-DOS programs use a large (> 64KB) stack?

The "large" memory model of x86 allowed a program to have multiple code segments and multiple data segment, using far calls to jump across code segments, and far pointers to access data from ...
23 votes
3 answers
5k views

Did any x86 CPU optionally trap unaligned access?

x86 CPUs have always supported unaligned load/store. Early RISC CPUs didn't. So imagine writing portable code on a 386. It seems to work fine, but how do you know you haven't accidentally misaligned ...
10 votes
3 answers
2k views

Why did Steve Jobs choose the Motorola 68030@25 MHz for the first NeXT Computer in 1988 and not an Intel 80386DX@25 MHz processor?

Was the reason because he knew the 68K from the Macintosh, or were there other reasons that spoke in favor of the 68030 and the additional 68882 floating-point coprocessor? The i386, along with a 387 ...
14 votes
0 answers
487 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 ...
13 votes
2 answers
863 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 ...
4 votes
1 answer
556 views

How do you find the EBDA address?

Normally, the "Extended BIOS Data Area" (EBDA) is located at the segment stored at 0x0040:0x000E, but this is only true for EISA and MCA systems (at least that's what I found in various ...
23 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 ...
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 ...
24 votes
4 answers
4k 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 ...
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
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 ...
12 votes
1 answer
397 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 ...
5 votes
0 answers
309 views

Who designed the ALi M1386SX core?

The ALi M1386SX is a 386 compatible microprocessor. I believe it was released around 1995, rather late for a 386 but since it was targeted at the embedded market (e.g. word processors and point-of-...
28 votes
2 answers
9k 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 ...
5 votes
5 answers
881 views

Are there any statistics or data showing how much more productive the C programming language is compared to x86 assembly language?

I found out today that a large project like Microsoft Windows 1.0 took 80 man-years to develop. And this one was written in x86 assembly language. Is there a form or rule of thumb that states how much ...
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 ...
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 ...
16 votes
4 answers
6k 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 ...
13 votes
2 answers
2k 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 ...
0 votes
1 answer
157 views

What if ATX 12v P4 power connector was introduced 4 years earlier? [closed]

AT power supply handled +5 and +12 volts, +5 for ISA and processors, +12 for motors in disk drives. In 1995 486DX2 was introduced with 3.3V core, so it derived that from a simple but inefficient ...
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 ...
21 votes
2 answers
737 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
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: ...
33 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 ...
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 ...
17 votes
2 answers
782 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 ...
28 votes
8 answers
8k 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 ...
14 votes
1 answer
901 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 ...
19 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) ...
19 votes
5 answers
7k 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. ...
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 ...
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, ...
6 votes
2 answers
1k views

What’s the last x86 CPU that didn’t place a limit on the size of a single instruction?

Although useless, it’s widely known the first Intel and derivative CPUs like the Z80 didn’t set a limit on the instruction size. This means that it was possible to fill the whole RAM/ROM with a single ...
5 votes
5 answers
543 views

Chaining IRQs in x86 ROM code

Objective Summary: I need to write a sleep() function to be used in 8088 (PC/XT ISA) ROM code with 1 ms resolution. Though the question can be more generalized to chaining INTs with data in different ...
6 votes
1 answer
1k views

What was the first motherboard with UEFI? [closed]

UEFI is a publicly available (and a bit controversial) specification that replaces the legacy BIOS which has been in x86 computers since the original IBM PC (12 August 1981) At first, I know that this ...
7 votes
2 answers
3k views

x86 memory alignment

For the 8086, unaligned word loads (first byte at an odd address) require two memory accesses, but an aligned word (first byte at an even address) can be loaded in one. This is excellently explained ...
19 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 ...
6 votes
3 answers
771 views

Did Intel syntax for x86 assembly come from an Intel assembler?

I'm wondering where the so-called Intel syntax for x86 assembly came from. Did Intel release their own assembler for chips like the 8086 or do we just mean the syntax they used in the manuals?
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 ...
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 ...