Upload initial 8087 microcode extraction

This commit is contained in:
dbalsom
2025-10-18 17:45:37 -04:00
parent 6a8902f054
commit 843ff05e4b
7 changed files with 109 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
13111222121131220022311212211113223222212221221221230122323212213122222312111212231212211322122222221202222212113222122222222321122312321332222222222302122122122222220212112222332312222112222212112222031211
22123222222121012210201221212311112011121122113212211211132213122221222113213112113022112332220222223322222012222100021322220212122322223322222212232212132212212122131222122221321122222221002220221221223222
31212201222202112211212332221301121222222231222312132111231211211332122111212222211211232321122112113202122221122211222122222211311223212322112122232212122122223222222223220102022212222211221221321112132132
02223201212122012220111221121312322112222312222111231122222232122221322132222112222211212211311222222220211212202222132221223221120222223202222202221232312222221232112132102110212202232212112232003113311211
12222212222222022311121121122121112332121121122212212222222222222111332111222112221312132121111222132131122221121221112122222202223201122321212221201221221112122122223202122222212112322212222321232122111321
12222111332210321221232211221122211111213323222112313321232112212232112312121121311221123222322121222321122232122333122222132223221212212222211110220322222222112201222212222112221123201122222210022212223111
22012121221331222222121222222232121312112121321231312123211113122221122121111112112113221122222221322302122223102112212211223122212122322111221112113122222211112222212232123012112232021332222233211120322210
11212110312222211131221212122123112122220212121332231121132112121321012321221121223301111112222122102231023222211222202122123220232322212322211012223231211222122212221232101122221212222222222222021121202232
01312123000202131033200302100012100001200200023201320100122223132321100200203302023210200110002221131022303233220222032132000002020212312011020313222022131000213210022232232330203130201022012013120023120302
33113002221122200000212122001020000222312100200020231002301112023310022021230123332212000003123001120030000222112330031023112233211330222212203100002300021011202002012230323312132130220002001000200031102033
30000230200023312100201102220220013001200002210013322200020000232322100231112202311102122102013000221212333202032302212132102300101130020200000010223022120200213313200331202202000002021302022031112220003203
20221022023202203322223030202220303330122023000002232000102000023102220200033331200220020012133001100121022122203311301021120322010111312021333002330222333312300233023110220023322320201200120221012102233330
22320023100100302210000312133200203330023220302231020300203003222010200123022003132201002201200110101022023022030330222221230220003110021231200110222022212100013330103013122212003103220221101222330221123020
23111220232120220012002211121313101221200230000323132002320200103222110021133232122210023231033113000231010200212030311021120202013032210202222030012220202121001333002202201322223302020011023020002230102022
23002130322022332223230021220210002001100320130130230200032013113120002010212030022030122220320101212223222010010013323321122220200212222020120000010202211023211103003022223011123010302100210011100221121202
20302001022323221101222000011322302200103022132012221022202202002302103203120311323222012001130120201030200000323331211221122001212023200220000322233130220020302222011221232020201030030001221022123000122230
20122002322123212202222030222112330310023021331002101233231101202133023220223220221311232000233012202030201001323220220210222031201311100121003331133222020320112333000223212022220232030320113321322000220220
32221200232232232222130022122012222221201220210032212322113210203022232133122022012221221002222322221320223322320003223010222223330001111012010010022112120123212233032032123332223300302231320231030223312202
03222102322203220022022023022111302330300301000323213211321211032223223223022221021332010223122221020233310200003121022010233322332023223201223030212122222130202322221203203302022232012032211002302200302002
22030223200110232222000221202220212222222222202332221120233003223311132312222003032223312202100320232222012022220102203001030122003002022130230030112022322202213230201103122330002022220023222221222203322023
10222022013203230022213021023132120113221211100023312003003020222311220210322332122211200102133000120222323212203302302202212223203002101012033222221132321122110322021002110012221223220120213213022202033023
20222033202223022203202003323223131112110302300122122211222220232303121120202203322101222022002302222122313103102101201231202330223020020320211120333013022212013333300222203222232030221001001300212200033003
23220232122222302003222022002020212222222301322010211132312330122102131131220223223112031230222033220000220230222230332033220223222331110222201213110100212212122022022112111332232023221001030003120323302023
02212322032111332003202322312112310100320222222200121112203222222113111001223232031012222323022232232230203222223323020123032222110221121300021322032012211202223220032112130320102030220220323232313223220222
02322223112022022032230222202232220230222022202220222202202222222322020302222332020002122222320220323201332232222212331022012222033322222033322022222022200302230123222222200213032023222312202321222012000122
22321232222322032333332033030010202222222232222030103221223222202202222222220222222221022221231322323233023222232223322322220122221220221220200220221203223202222321023032323021222002222222020322220212231321
20222222212223022231222002222222022222022232000222021202222220222200020020202202123332222322200202033002232012233323201222102221222020320023222221220122022022300232200222112222201003220202122212222133332102
23022022322000030322322022322222221032222220233322222302030030222222110220222222222120230202222320023203212222202202202222212222202012301122122222222232232202023331323022223301122222220223022122023203322320
11021202200023312220000212212123202222222122232212212233222012232232322202202001022222222202300203333220022002203222001200121222003002321230230300222032133332312323222322320320003032223222222222121232022022
22322210222320323332102202022032202220200212330222302222212222322212222222002222022222000222222222002230233202232322322020212221020323221203222023112202221320203223223131133032321222123322222322203130223021
21220303322222322233200012322302222222202223221022222222200021202022222222020032022230220322210223230020112122333013322020122212220202222122003320022122230222001222202321222222332201212122013322200222223232
22202302322212300332202020222221223000022022222002200222123303201020022221222220210022322200213302332330233300222213320220232120232133000030000222222122303120223222301222220222020022223223222222222000032330
21122112321120322122132011322320000002021321322302203032021202200330030022220023003013102131223032031131121201021020130220101120211311120131022202222233312123112201212222232322330212022122120132220113130030
22120032222132302213220232021203303302233220223311202301330323203320303201323011033312222222202321203221310223000023021320122313012201131013011222221222210322102112002221021311301001212223332332230123310221
21022123001232121100022232022330102033213223103102230300213211312201211223130203022033022103100211021231033220103123031120322231231123123121221011112321223221233221232223102032221003131220121222210033212022
11222211203010222221000022232030332222310121132322110010333222202230321030222002122230132202100232003222222132201202211200231113031002022230203310332232312322110212032302333012302001322222120212201233022130
30112322222133331112121003312333233233220320112312332002131000220333010230320112311002320232211221030220132212311210013222323231211011232232302202003232211132332212122022222130221022220102322222320220000301
11202001100223322220232003101221000331321133211110320323101113212023032223102222222303230322002113001012132132313313201222221221133322122322120321221212121013331121122322301232212000220102222322222220211101
02123212222112221212130010110100300022220132121120133233322002320013313322220221220323002330212222121233322212032211313021321113222121232220123023331122211202212201322221313211202022222302120212220023311302
02120200321223311020233302102233033223210310312110333213113220022111202201231032123033203011132232132102221230221211221002003323113303223202121212001312230031233322122312220101110002220322222112220001331332
01220113020232221030002231031322221322213231232110323202133111321200322021232121222123231301332232222030323221222223131213022332122233323222233332331330120220012312223332332321211002323233323230330223132320
13222021321211220231321022221123330302110033311330222332330331321323313222210221222322333130212231212320222231321131123132121013212221232223102323111132031302300212312220231233103022230230100220330222222112
11312002121300222320022000032011333220232302121111203222130002221312332212021102210233333312320313222232223222320033201203231332333323222212311313331332230203232023321121031120003021323223133330331232033102
32232021212220212332312002232322332223123312100212231332221123210333313120320232303232202332222232022121302112022323003333323220223013332231202213332122221321232222112020332022221123230022203233332233100213
32222322303010320032000123122213222111310123300301322323333122222322121330121002220123120000200222022002232111020321211322232303023002323330233223332332322020210232123222222112003020322202332200020122122222
13113122113021323321121122022223132333211222131312023223222011321230101113231113003223323113110033022012222202323223111000323230333312122131223033111330033122322222132123032110212023132233033223012221013012
22021132223332300023320130320033333332222123032320031330323122003313303333321023032302213211222322122202201213311021212130212303013201333333021113330212320322202312322222103333222000312203212223000203102122
22122222022320323222121321301332031330223021323100312032323303103223233310211023122213231222122223221312221200013122330100120233223312330221320200032333222023312203232022032102220222332332000330320223223230
32213210333203222210120121322330333002222322233100332333032202200230233032302312202033131212222220122211111101302212130030212032022313220221333333333222031131221332122032031213220223031202233233202333222120
31223121131230221122320112033323332333323231232223033332320232203213232332211022030310012212012233012212213223223021202310200313332002222223021322223023330333321223223131302322212301310132221121130113322011
12120221322123101123310123033223210332311323111233123333203022222002222312232022003333122122223223012112202032222032222030303331222312132121302023112323001232022301220111121221102223131123212110331223322012
01232022001322221102000213123031000112222132221222203311233222313323232322220002230133330002200311121212233122223322231122030223012003232320331232333223131112312121323023001222202021301123202013123022300122
32320200123323232220122023223333332222233322223133331113221212302233011130202223232030332323322122322222213223212323303010303002322032320221233331002223332222231111121012331221102203030221132032221133333222
11033232123003200012121002202013033332232220221222200003202221320330230222220033221213020223223212311220203223222322001032212330222232232221223222332223212322022212223132132231232023302211212321110233332302
23332230302312212112111021222101303003223223222220022330231331222323323333320103333320133322021132302222121321320221223322233113321231020032133332222221231023321131121013022221232023032233130123300212231322
02333232323232222023131230202320332322320123322120303213233112300222230322322320232323033323221021321222212312302312221221022330121233333222212220001120223323012121231323320211232031330111311121133212322121
03322320002022023002003023322202320202222322213200222222303002303023022002222003020002222332023023303200002232202233002222000222201002232022002030222123302302330330020223202231002020322332232322222032000300
22330203203322002010133003000121222232332302322100200222223331202222232222230302333222122220003023330000320321303321022022220222233222222030200320220210223023220023130202220032321002232002120002200230003020
31022022202030000000003002322302232223020202021232032222222221223202222032323302033012022222020212333000222002200000002022013222322231020020222230220022202322220202300333303220201000222012022202223000002002
20330003022300000020122022022232220002322220200122320112202030232222221020202223222222200222222002200300232322212223202020222223222003022023022220222202232203020033130002220003302202220200320222003300022020
23020002001220000000000232303221220002232222200203222231222002232202022302203000223023223303000230303200023103200202002202222232010002021200201200222103130302322320302202223030000002320022300022210300000102
12330203223300101102033102023002310332211202111222303222222322223223332202202322032332100222222332030010220000022232022020222222120030230212203020223202303222000203222301300000030223223023222000203000000010
23220300320220020000200133222022222222302321320222322322202020302202222232031002022232000012030223330000032032000001032020032322221202222022001021102223230222323322003023232223032202220322000322200100020311
20232010033222000000203121233222220220222032222103200232220000202022222220332232220222330012300200303011102002232232120320233222022020010002000222222112230231220222020322323002000022220202222222202000000300
+43
View File
@@ -0,0 +1,43 @@
# The Intel 8087 Microcode
![8087](./images/8087_rom_small_01.jpg)
Extraction of the 8087 Microcode was made possible by die photography performed by [Ken Shirriff](https://righto.com).
See [Ken's excellent article analyzing the 8087 Microcode ROM](https://www.righto.com/2018/09/two-bits-per-transistor-high-density.html).
This ROM is unique in that it is quad-level - rather than storing 0's and 1's directly, three sizes of transistor
(along with no transistor) provide four logic levels which can be decoded into pairs of two bits.
This presents a challenge for traditional ROM extraction tools, so a CNN was employed to extract the bit positions.
I'm looking for help verifying the correctness of the ROM extraction due to the ambiguity of small and medium transistors.
You can view the full microcode ROM image and report issues using the [8087 microcode web viewer](https://8087.martypc.net).
## 8087_microcode_rom_01.txt
The extracted literal content of the 8087 microcode ROM.
- 0: No transistor
- 1: Small transistor
- 2: Medium transistor
- 3: Large transistor
## /images/8087_microcode_rom_01.png
A graphical representation of the 8087 microcode ROM as an 2bpp indexed color PNG.
![8087_microcode_decoded](./images/8087_microcode_01.png)
Word extraction has not yet been performed. It will be tricky as the 8:1 row multiplexing logic is inverted every 8 rows
and the exact 8087 word format is unknown.
## /images/upper-decoder.jpg
A die photo by Ken Shirriff of the upper microcode decoder circuitry.
## /images/lower-decoder.jpg
A die photo by Ken Shirriff of the lower microcode decoder circuitry.
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

+2
View File
@@ -8,6 +8,8 @@
A decoding of the NEC V20/V30 microcode was recently made possible via the imaging work of [InfoSecDJ](https://infosec.exchange/@infosecdj):
<img width="800" height="697" alt="The NEC V20 Die" src="images/v20_die_shot_01.jpg" />
See the full die shot mosaic on [siliconprawn](https://siliconprawn.org/archive/doku.php?id=infosecdj:sharp:lh70108).
NEC used unified microcode for both the NEC V20 and V30, which differ only in their metal layer interconnects.
The only difference between the microcode for either version of CPU is in the microcode routine that handles hardware