HackerTrans
トップ新着トレンドコメント過去質問紹介求人

nand2mario

no profile record

投稿

80386 Early Start Memory Access

nand2mario.github.io
49 ポイント·投稿者 nand2mario·19 日前·9 コメント

80386 microcode disassembled

reenigne.org
278 ポイント·投稿者 nand2mario·2 か月前·54 コメント

80386 Protection

nand2mario.github.io
124 ポイント·投稿者 nand2mario·5 か月前·30 コメント

80386 Multiplication and Division

nand2mario.github.io
108 ポイント·投稿者 nand2mario·6 か月前·30 コメント

Z8086: Rebuilding the 8086 from Original Microcode

nand2mario.github.io
51 ポイント·投稿者 nand2mario·7 か月前·24 コメント

コメント

nand2mario
·18 日前·議論
Probably some protected mode logic bugs. Just need more time to debug through the boot process.
nand2mario
·18 日前·議論
The memory pipeline just starts one cycle later than now. Effective address is calculated during the first cycle of the instruction. The microcode then waits for it to finish with the DLY (delay) micro-op, which releases one cycle later.
nand2mario
·2 か月前·議論
I think there are two reasons we haven’t seen an FPGA FPU yet, especially for MiSTer.

First, FPUs are complex and FPGA support for floating point is limited. There's DSP blocks for integer additions and multiplications. But very little FP support.

Second, the CPU itself may not be fast enough for an FPU to matter much. Quake wants at least a 75 MHz Pentium, while ao486-MiSTer is closer to a 486-66. So we probably need both a faster CPU design and a faster FPGA. Maybe Altera's new Agilex 5 will be useful here.
nand2mario
·2 か月前·議論
Doom (DOS extender games) is an easier protected mode application as it does not use complex page tables. Linux is much more complex.
nand2mario
·2 か月前·議論
Not really. The 386 does not have an interface to read the ROM direclty. Instead, it uses the Built-In Self-Test (BIST) to verify the ROM's contents. It's basically a checksum-like mechanism that verify the integrity of the CROM.
nand2mario
·3 か月前·議論
Yep. The microcode in real mode segment loading (as shown in the post) does not set the limit to 64KB. That is why returning to real mode with a large value like 4GB in limit gives you "unreal mode".
nand2mario
·3 か月前·議論
Nice findings. For segment loads from memory, the entry point is actually shared between real and protected mode on the 386. The microcode branches later based on PE and does the extra descriptor work only in protected mode. So maybe it's done similarly on the 286.

The decode vs. execution behavior is more interesting. From both Intel docs and my own core, PE is effectively checked in both stages independently, but decode happens ahead of execution (prefetch queue). So if an instruction is decoded in real mode, it’ll still follow the real-mode path even if PE is set before it executes.

That’s exactly why Intel requires a jump right after setting PE — it flushes the prefetch queue and forces re-decode in protected mode. As the 80386 System Software Writer’s Guide (Ch. 6.1) puts it: "Instructions in the queue were fetched and decoded while the processor was in real mode; executing them after switching to protected mode can be erroneous."
nand2mario
·6 か月前·議論
I was just trying to give a bit of historical context, but apparrently need to be more precise next time! 386 is the beginning of 32 bit. But it's mainly the pentium and 486 that ran Windows 95.
nand2mario
·6 か月前·議論
Author here. Happy to discuss the technical details. The broader goal is to understand the 80386 microcode and hardware, and build an FPGA core around it, similar to what was already done for the 8086.
nand2mario
·6 か月前·議論
Right. Or it could be frequency illusion. Once you become aware of something, it appears to be more frequent:

https://en.wikipedia.org/wiki/Frequency_illusion
nand2mario
·7 か月前·議論
xtce_trace sounds fantastic — exactly what I need right now while debugging my Verilog 8086 core. Thank you also for the microcode disassembly. It’s been fun to work through.
nand2mario
·10 か月前·議論
It currently uses 44% of the LUTs and 59% of the BRAMs (out of 340 × 2 KB blocks). The chip itself is fairly large and inexpensive, though performance leans toward the lower side.
nand2mario
·10 か月前·議論
Yes, for exactly the reason. SDRAM is much easier to work with in retro computing than DDR.
nand2mario
·10 か月前·議論
Author here. You’re right—EDO or FPM would be correct for the era. But as others have noted, DDR3 is fundamentally different from early 1990s memory, and it simply won’t run at the very low clock speeds of a 486. SDRAM, on the other hand, behaves in a way that’s much more comparable to the memory used back then.