Blob Blame History Raw
From bd264265a99c60f45cadaa4109a9db59ae218471 Mon Sep 17 00:00:00 2001
From: Laszlo Ersek <lersek@redhat.com>
Date: Thu, 12 Jun 2014 00:17:59 +0200
Subject: OvmfPkg: QemuVideoDxe: enable debug messages in VbeShim (RHEL only)

Notes about the RHEL-8.0/20180508-ee3198e672e2 ->
RHEL-8.1/20190308-89910a39dcfd rebase:

- no changes

Notes about the RHEL-7.6/ovmf-20180508-2.gitee3198e672e2.el7 ->
RHEL-8.0/20180508-ee3198e672e2 rebase:

- reorder the rebase changelog in the commit message so that it reads like
  a blog: place more recent entries near the top
- no changes to the patch body

Notes about the 20171011-92d07e48907f -> 20180508-ee3198e672e2 rebase:

- update commit message as requested in
  <https://bugzilla.redhat.com/show_bug.cgi?id=1503316#c0>

Notes about the 20170228-c325e41585e3 -> 20171011-92d07e48907f rebase:

- no changes

Notes about the 20160608b-988715a -> 20170228-c325e41585e3 rebase:

- no changes

The Int10h VBE Shim is capable of emitting short debug messages when the
win2k8r2 UEFI guest uses (emulates) the Video BIOS. In upstream the quiet
version is preferred; for us debug messages are important as a default.

For this patch, the DEBUG macro is enabled in the assembly file, and then
the header file is regenerated from the assembly, by running
"OvmfPkg/QemuVideoDxe/VbeShim.sh".

"VbeShim.h" is not auto-generated; it is manually generated. The patch
does not add "VbeShim.h", it just updates both "VbeShim.asm" and (the
manually re-generated) "VbeShim.h" atomically. Doing so helps with local
downstream builds, with bisection, and also keeps redhat/README a bit
simpler.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
(cherry picked from commit ccda46526bb2e573d9b54f0db75d27e442b4566f)
(cherry picked from commit ed45b26dbeadd63dd8f2edf627290957d8bbb3b2)
(cherry picked from commit 9a8a034ebc082f86fdbb54dc1303a5059508e14c)
(cherry picked from commit 7046d6040181bb0f76a5ebd680e0dc701c895dba)
(cherry picked from commit 4dd1cc745bc9a8c8b32b5810b40743fed1e36d7e)
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
---
 OvmfPkg/QemuVideoDxe/VbeShim.asm |   2 +-
 OvmfPkg/QemuVideoDxe/VbeShim.h   | 481 ++++++++++++++++++++-----------
 2 files changed, 308 insertions(+), 175 deletions(-)

diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.asm b/OvmfPkg/QemuVideoDxe/VbeShim.asm
index 18fa9209d4..f87ed5cf30 100644
--- a/OvmfPkg/QemuVideoDxe/VbeShim.asm
+++ b/OvmfPkg/QemuVideoDxe/VbeShim.asm
@@ -18,7 +18,7 @@
 ;------------------------------------------------------------------------------
 
 ; enable this macro for debug messages
-;%define DEBUG
+%define DEBUG
 
 %macro DebugLog 1
 %ifdef DEBUG
diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.h b/OvmfPkg/QemuVideoDxe/VbeShim.h
index cc9b6e14cd..325d6478a1 100644
--- a/OvmfPkg/QemuVideoDxe/VbeShim.h
+++ b/OvmfPkg/QemuVideoDxe/VbeShim.h
@@ -517,185 +517,318 @@ STATIC CONST UINT8 mVbeShim[] = {
   /* 000001FE nop                            */  0x90,
   /* 000001FF nop                            */  0x90,
   /* 00000200 cmp ax,0x4f00                  */  0x3D, 0x00, 0x4F,
-  /* 00000203 jz 0x22d                       */  0x74, 0x28,
+  /* 00000203 jz 0x235                       */  0x74, 0x30,
   /* 00000205 cmp ax,0x4f01                  */  0x3D, 0x01, 0x4F,
-  /* 00000208 jz 0x245                       */  0x74, 0x3B,
+  /* 00000208 jz 0x255                       */  0x74, 0x4B,
   /* 0000020A cmp ax,0x4f02                  */  0x3D, 0x02, 0x4F,
-  /* 0000020D jz 0x269                       */  0x74, 0x5A,
+  /* 0000020D jz 0x289                       */  0x74, 0x7A,
   /* 0000020F cmp ax,0x4f03                  */  0x3D, 0x03, 0x4F,
-  /* 00000212 jz word 0x331                  */  0x0F, 0x84, 0x1B, 0x01,
+  /* 00000212 jz word 0x361                  */  0x0F, 0x84, 0x4B, 0x01,
   /* 00000216 cmp ax,0x4f10                  */  0x3D, 0x10, 0x4F,
-  /* 00000219 jz word 0x336                  */  0x0F, 0x84, 0x19, 0x01,
+  /* 00000219 jz word 0x36e                  */  0x0F, 0x84, 0x51, 0x01,
   /* 0000021D cmp ax,0x4f15                  */  0x3D, 0x15, 0x4F,
-  /* 00000220 jz word 0x338                  */  0x0F, 0x84, 0x14, 0x01,
+  /* 00000220 jz word 0x378                  */  0x0F, 0x84, 0x54, 0x01,
   /* 00000224 cmp ah,0x0                     */  0x80, 0xFC, 0x00,
-  /* 00000227 jz word 0x33a                  */  0x0F, 0x84, 0x0F, 0x01,
-  /* 0000022B jmp short 0x22b                */  0xEB, 0xFE,
-  /* 0000022D push es                        */  0x06,
-  /* 0000022E push di                        */  0x57,
-  /* 0000022F push ds                        */  0x1E,
-  /* 00000230 push si                        */  0x56,
-  /* 00000231 push cx                        */  0x51,
-  /* 00000232 push cs                        */  0x0E,
-  /* 00000233 pop ds                         */  0x1F,
-  /* 00000234 mov si,0x0                     */  0xBE, 0x00, 0x00,
-  /* 00000237 mov cx,0x100                   */  0xB9, 0x00, 0x01,
-  /* 0000023A cld                            */  0xFC,
-  /* 0000023B rep movsb                      */  0xF3, 0xA4,
-  /* 0000023D pop cx                         */  0x59,
-  /* 0000023E pop si                         */  0x5E,
-  /* 0000023F pop ds                         */  0x1F,
-  /* 00000240 pop di                         */  0x5F,
-  /* 00000241 pop es                         */  0x07,
-  /* 00000242 jmp word 0x34c                 */  0xE9, 0x07, 0x01,
-  /* 00000245 push es                        */  0x06,
-  /* 00000246 push di                        */  0x57,
-  /* 00000247 push ds                        */  0x1E,
-  /* 00000248 push si                        */  0x56,
-  /* 00000249 push cx                        */  0x51,
-  /* 0000024A and cx,0xbfff                  */  0x81, 0xE1, 0xFF, 0xBF,
-  /* 0000024E cmp cx,0xf1                    */  0x81, 0xF9, 0xF1, 0x00,
-  /* 00000252 jz 0x256                       */  0x74, 0x02,
-  /* 00000254 jmp short 0x22b                */  0xEB, 0xD5,
-  /* 00000256 push cs                        */  0x0E,
-  /* 00000257 pop ds                         */  0x1F,
-  /* 00000258 mov si,0x100                   */  0xBE, 0x00, 0x01,
-  /* 0000025B mov cx,0x100                   */  0xB9, 0x00, 0x01,
-  /* 0000025E cld                            */  0xFC,
-  /* 0000025F rep movsb                      */  0xF3, 0xA4,
-  /* 00000261 pop cx                         */  0x59,
-  /* 00000262 pop si                         */  0x5E,
-  /* 00000263 pop ds                         */  0x1F,
-  /* 00000264 pop di                         */  0x5F,
-  /* 00000265 pop es                         */  0x07,
-  /* 00000266 jmp word 0x34c                 */  0xE9, 0xE3, 0x00,
-  /* 00000269 push dx                        */  0x52,
-  /* 0000026A push ax                        */  0x50,
-  /* 0000026B cmp bx,0x40f1                  */  0x81, 0xFB, 0xF1, 0x40,
-  /* 0000026F jz 0x273                       */  0x74, 0x02,
-  /* 00000271 jmp short 0x22b                */  0xEB, 0xB8,
-  /* 00000273 mov dx,0x3c0                   */  0xBA, 0xC0, 0x03,
-  /* 00000276 mov al,0x20                    */  0xB0, 0x20,
-  /* 00000278 out dx,al                      */  0xEE,
-  /* 00000279 push dx                        */  0x52,
-  /* 0000027A push ax                        */  0x50,
-  /* 0000027B mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 0000027E mov ax,0x4                     */  0xB8, 0x04, 0x00,
-  /* 00000281 out dx,ax                      */  0xEF,
-  /* 00000282 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 00000285 mov ax,0x0                     */  0xB8, 0x00, 0x00,
-  /* 00000288 out dx,ax                      */  0xEF,
-  /* 00000289 pop ax                         */  0x58,
-  /* 0000028A pop dx                         */  0x5A,
-  /* 0000028B push dx                        */  0x52,
-  /* 0000028C push ax                        */  0x50,
-  /* 0000028D mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 00000290 mov ax,0x5                     */  0xB8, 0x05, 0x00,
-  /* 00000293 out dx,ax                      */  0xEF,
-  /* 00000294 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 00000297 mov ax,0x0                     */  0xB8, 0x00, 0x00,
-  /* 0000029A out dx,ax                      */  0xEF,
-  /* 0000029B pop ax                         */  0x58,
-  /* 0000029C pop dx                         */  0x5A,
-  /* 0000029D push dx                        */  0x52,
-  /* 0000029E push ax                        */  0x50,
-  /* 0000029F mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 000002A2 mov ax,0x8                     */  0xB8, 0x08, 0x00,
-  /* 000002A5 out dx,ax                      */  0xEF,
-  /* 000002A6 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 000002A9 mov ax,0x0                     */  0xB8, 0x00, 0x00,
-  /* 000002AC out dx,ax                      */  0xEF,
-  /* 000002AD pop ax                         */  0x58,
-  /* 000002AE pop dx                         */  0x5A,
-  /* 000002AF push dx                        */  0x52,
-  /* 000002B0 push ax                        */  0x50,
-  /* 000002B1 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 000002B4 mov ax,0x9                     */  0xB8, 0x09, 0x00,
-  /* 000002B7 out dx,ax                      */  0xEF,
-  /* 000002B8 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 000002BB mov ax,0x0                     */  0xB8, 0x00, 0x00,
-  /* 000002BE out dx,ax                      */  0xEF,
-  /* 000002BF pop ax                         */  0x58,
-  /* 000002C0 pop dx                         */  0x5A,
-  /* 000002C1 push dx                        */  0x52,
-  /* 000002C2 push ax                        */  0x50,
-  /* 000002C3 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 000002C6 mov ax,0x3                     */  0xB8, 0x03, 0x00,
-  /* 000002C9 out dx,ax                      */  0xEF,
-  /* 000002CA mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 000002CD mov ax,0x20                    */  0xB8, 0x20, 0x00,
-  /* 000002D0 out dx,ax                      */  0xEF,
-  /* 000002D1 pop ax                         */  0x58,
-  /* 000002D2 pop dx                         */  0x5A,
-  /* 000002D3 push dx                        */  0x52,
-  /* 000002D4 push ax                        */  0x50,
-  /* 000002D5 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 000002D8 mov ax,0x1                     */  0xB8, 0x01, 0x00,
-  /* 000002DB out dx,ax                      */  0xEF,
-  /* 000002DC mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 000002DF mov ax,0x400                   */  0xB8, 0x00, 0x04,
-  /* 000002E2 out dx,ax                      */  0xEF,
-  /* 000002E3 pop ax                         */  0x58,
-  /* 000002E4 pop dx                         */  0x5A,
-  /* 000002E5 push dx                        */  0x52,
-  /* 000002E6 push ax                        */  0x50,
-  /* 000002E7 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 000002EA mov ax,0x6                     */  0xB8, 0x06, 0x00,
-  /* 000002ED out dx,ax                      */  0xEF,
-  /* 000002EE mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 000002F1 mov ax,0x400                   */  0xB8, 0x00, 0x04,
-  /* 000002F4 out dx,ax                      */  0xEF,
-  /* 000002F5 pop ax                         */  0x58,
-  /* 000002F6 pop dx                         */  0x5A,
-  /* 000002F7 push dx                        */  0x52,
-  /* 000002F8 push ax                        */  0x50,
-  /* 000002F9 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 000002FC mov ax,0x2                     */  0xB8, 0x02, 0x00,
-  /* 000002FF out dx,ax                      */  0xEF,
-  /* 00000300 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 00000303 mov ax,0x300                   */  0xB8, 0x00, 0x03,
-  /* 00000306 out dx,ax                      */  0xEF,
-  /* 00000307 pop ax                         */  0x58,
-  /* 00000308 pop dx                         */  0x5A,
-  /* 00000309 push dx                        */  0x52,
-  /* 0000030A push ax                        */  0x50,
-  /* 0000030B mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 0000030E mov ax,0x7                     */  0xB8, 0x07, 0x00,
-  /* 00000311 out dx,ax                      */  0xEF,
-  /* 00000312 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 00000315 mov ax,0x300                   */  0xB8, 0x00, 0x03,
-  /* 00000318 out dx,ax                      */  0xEF,
-  /* 00000319 pop ax                         */  0x58,
-  /* 0000031A pop dx                         */  0x5A,
-  /* 0000031B push dx                        */  0x52,
-  /* 0000031C push ax                        */  0x50,
-  /* 0000031D mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
-  /* 00000320 mov ax,0x4                     */  0xB8, 0x04, 0x00,
-  /* 00000323 out dx,ax                      */  0xEF,
-  /* 00000324 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
-  /* 00000327 mov ax,0x41                    */  0xB8, 0x41, 0x00,
-  /* 0000032A out dx,ax                      */  0xEF,
-  /* 0000032B pop ax                         */  0x58,
-  /* 0000032C pop dx                         */  0x5A,
-  /* 0000032D pop ax                         */  0x58,
-  /* 0000032E pop dx                         */  0x5A,
-  /* 0000032F jmp short 0x34c                */  0xEB, 0x1B,
-  /* 00000331 mov bx,0x40f1                  */  0xBB, 0xF1, 0x40,
-  /* 00000334 jmp short 0x34c                */  0xEB, 0x16,
-  /* 00000336 jmp short 0x350                */  0xEB, 0x18,
-  /* 00000338 jmp short 0x350                */  0xEB, 0x16,
-  /* 0000033A cmp al,0x3                     */  0x3C, 0x03,
-  /* 0000033C jz 0x345                       */  0x74, 0x07,
-  /* 0000033E cmp al,0x12                    */  0x3C, 0x12,
-  /* 00000340 jz 0x349                       */  0x74, 0x07,
-  /* 00000342 jmp word 0x22b                 */  0xE9, 0xE6, 0xFE,
-  /* 00000345 mov al,0x30                    */  0xB0, 0x30,
-  /* 00000347 jmp short 0x34b                */  0xEB, 0x02,
-  /* 00000349 mov al,0x20                    */  0xB0, 0x20,
-  /* 0000034B iretw                          */  0xCF,
-  /* 0000034C mov ax,0x4f                    */  0xB8, 0x4F, 0x00,
-  /* 0000034F iretw                          */  0xCF,
-  /* 00000350 mov ax,0x14f                   */  0xB8, 0x4F, 0x01,
-  /* 00000353 iretw                          */  0xCF,
+  /* 00000227 jz word 0x382                  */  0x0F, 0x84, 0x57, 0x01,
+  /* 0000022B push si                        */  0x56,
+  /* 0000022C mov si,0x3e9                   */  0xBE, 0xE9, 0x03,
+  /* 0000022F call word 0x3c4                */  0xE8, 0x92, 0x01,
+  /* 00000232 pop si                         */  0x5E,
+  /* 00000233 jmp short 0x233                */  0xEB, 0xFE,
+  /* 00000235 push es                        */  0x06,
+  /* 00000236 push di                        */  0x57,
+  /* 00000237 push ds                        */  0x1E,
+  /* 00000238 push si                        */  0x56,
+  /* 00000239 push cx                        */  0x51,
+  /* 0000023A push si                        */  0x56,
+  /* 0000023B mov si,0x3fb                   */  0xBE, 0xFB, 0x03,
+  /* 0000023E call word 0x3c4                */  0xE8, 0x83, 0x01,
+  /* 00000241 pop si                         */  0x5E,
+  /* 00000242 push cs                        */  0x0E,
+  /* 00000243 pop ds                         */  0x1F,
+  /* 00000244 mov si,0x0                     */  0xBE, 0x00, 0x00,
+  /* 00000247 mov cx,0x100                   */  0xB9, 0x00, 0x01,
+  /* 0000024A cld                            */  0xFC,
+  /* 0000024B rep movsb                      */  0xF3, 0xA4,
+  /* 0000024D pop cx                         */  0x59,
+  /* 0000024E pop si                         */  0x5E,
+  /* 0000024F pop ds                         */  0x1F,
+  /* 00000250 pop di                         */  0x5F,
+  /* 00000251 pop es                         */  0x07,
+  /* 00000252 jmp word 0x3ac                 */  0xE9, 0x57, 0x01,
+  /* 00000255 push es                        */  0x06,
+  /* 00000256 push di                        */  0x57,
+  /* 00000257 push ds                        */  0x1E,
+  /* 00000258 push si                        */  0x56,
+  /* 00000259 push cx                        */  0x51,
+  /* 0000025A push si                        */  0x56,
+  /* 0000025B mov si,0x404                   */  0xBE, 0x04, 0x04,
+  /* 0000025E call word 0x3c4                */  0xE8, 0x63, 0x01,
+  /* 00000261 pop si                         */  0x5E,
+  /* 00000262 and cx,0xbfff                  */  0x81, 0xE1, 0xFF, 0xBF,
+  /* 00000266 cmp cx,0xf1                    */  0x81, 0xF9, 0xF1, 0x00,
+  /* 0000026A jz 0x276                       */  0x74, 0x0A,
+  /* 0000026C push si                        */  0x56,
+  /* 0000026D mov si,0x432                   */  0xBE, 0x32, 0x04,
+  /* 00000270 call word 0x3c4                */  0xE8, 0x51, 0x01,
+  /* 00000273 pop si                         */  0x5E,
+  /* 00000274 jmp short 0x233                */  0xEB, 0xBD,
+  /* 00000276 push cs                        */  0x0E,
+  /* 00000277 pop ds                         */  0x1F,
+  /* 00000278 mov si,0x100                   */  0xBE, 0x00, 0x01,
+  /* 0000027B mov cx,0x100                   */  0xB9, 0x00, 0x01,
+  /* 0000027E cld                            */  0xFC,
+  /* 0000027F rep movsb                      */  0xF3, 0xA4,
+  /* 00000281 pop cx                         */  0x59,
+  /* 00000282 pop si                         */  0x5E,
+  /* 00000283 pop ds                         */  0x1F,
+  /* 00000284 pop di                         */  0x5F,
+  /* 00000285 pop es                         */  0x07,
+  /* 00000286 jmp word 0x3ac                 */  0xE9, 0x23, 0x01,
+  /* 00000289 push dx                        */  0x52,
+  /* 0000028A push ax                        */  0x50,
+  /* 0000028B push si                        */  0x56,
+  /* 0000028C mov si,0x41a                   */  0xBE, 0x1A, 0x04,
+  /* 0000028F call word 0x3c4                */  0xE8, 0x32, 0x01,
+  /* 00000292 pop si                         */  0x5E,
+  /* 00000293 cmp bx,0x40f1                  */  0x81, 0xFB, 0xF1, 0x40,
+  /* 00000297 jz 0x2a3                       */  0x74, 0x0A,
+  /* 00000299 push si                        */  0x56,
+  /* 0000029A mov si,0x432                   */  0xBE, 0x32, 0x04,
+  /* 0000029D call word 0x3c4                */  0xE8, 0x24, 0x01,
+  /* 000002A0 pop si                         */  0x5E,
+  /* 000002A1 jmp short 0x233                */  0xEB, 0x90,
+  /* 000002A3 mov dx,0x3c0                   */  0xBA, 0xC0, 0x03,
+  /* 000002A6 mov al,0x20                    */  0xB0, 0x20,
+  /* 000002A8 out dx,al                      */  0xEE,
+  /* 000002A9 push dx                        */  0x52,
+  /* 000002AA push ax                        */  0x50,
+  /* 000002AB mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002AE mov ax,0x4                     */  0xB8, 0x04, 0x00,
+  /* 000002B1 out dx,ax                      */  0xEF,
+  /* 000002B2 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002B5 mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 000002B8 out dx,ax                      */  0xEF,
+  /* 000002B9 pop ax                         */  0x58,
+  /* 000002BA pop dx                         */  0x5A,
+  /* 000002BB push dx                        */  0x52,
+  /* 000002BC push ax                        */  0x50,
+  /* 000002BD mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002C0 mov ax,0x5                     */  0xB8, 0x05, 0x00,
+  /* 000002C3 out dx,ax                      */  0xEF,
+  /* 000002C4 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002C7 mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 000002CA out dx,ax                      */  0xEF,
+  /* 000002CB pop ax                         */  0x58,
+  /* 000002CC pop dx                         */  0x5A,
+  /* 000002CD push dx                        */  0x52,
+  /* 000002CE push ax                        */  0x50,
+  /* 000002CF mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002D2 mov ax,0x8                     */  0xB8, 0x08, 0x00,
+  /* 000002D5 out dx,ax                      */  0xEF,
+  /* 000002D6 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002D9 mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 000002DC out dx,ax                      */  0xEF,
+  /* 000002DD pop ax                         */  0x58,
+  /* 000002DE pop dx                         */  0x5A,
+  /* 000002DF push dx                        */  0x52,
+  /* 000002E0 push ax                        */  0x50,
+  /* 000002E1 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002E4 mov ax,0x9                     */  0xB8, 0x09, 0x00,
+  /* 000002E7 out dx,ax                      */  0xEF,
+  /* 000002E8 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002EB mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 000002EE out dx,ax                      */  0xEF,
+  /* 000002EF pop ax                         */  0x58,
+  /* 000002F0 pop dx                         */  0x5A,
+  /* 000002F1 push dx                        */  0x52,
+  /* 000002F2 push ax                        */  0x50,
+  /* 000002F3 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002F6 mov ax,0x3                     */  0xB8, 0x03, 0x00,
+  /* 000002F9 out dx,ax                      */  0xEF,
+  /* 000002FA mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002FD mov ax,0x20                    */  0xB8, 0x20, 0x00,
+  /* 00000300 out dx,ax                      */  0xEF,
+  /* 00000301 pop ax                         */  0x58,
+  /* 00000302 pop dx                         */  0x5A,
+  /* 00000303 push dx                        */  0x52,
+  /* 00000304 push ax                        */  0x50,
+  /* 00000305 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 00000308 mov ax,0x1                     */  0xB8, 0x01, 0x00,
+  /* 0000030B out dx,ax                      */  0xEF,
+  /* 0000030C mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 0000030F mov ax,0x400                   */  0xB8, 0x00, 0x04,
+  /* 00000312 out dx,ax                      */  0xEF,
+  /* 00000313 pop ax                         */  0x58,
+  /* 00000314 pop dx                         */  0x5A,
+  /* 00000315 push dx                        */  0x52,
+  /* 00000316 push ax                        */  0x50,
+  /* 00000317 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 0000031A mov ax,0x6                     */  0xB8, 0x06, 0x00,
+  /* 0000031D out dx,ax                      */  0xEF,
+  /* 0000031E mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000321 mov ax,0x400                   */  0xB8, 0x00, 0x04,
+  /* 00000324 out dx,ax                      */  0xEF,
+  /* 00000325 pop ax                         */  0x58,
+  /* 00000326 pop dx                         */  0x5A,
+  /* 00000327 push dx                        */  0x52,
+  /* 00000328 push ax                        */  0x50,
+  /* 00000329 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 0000032C mov ax,0x2                     */  0xB8, 0x02, 0x00,
+  /* 0000032F out dx,ax                      */  0xEF,
+  /* 00000330 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000333 mov ax,0x300                   */  0xB8, 0x00, 0x03,
+  /* 00000336 out dx,ax                      */  0xEF,
+  /* 00000337 pop ax                         */  0x58,
+  /* 00000338 pop dx                         */  0x5A,
+  /* 00000339 push dx                        */  0x52,
+  /* 0000033A push ax                        */  0x50,
+  /* 0000033B mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 0000033E mov ax,0x7                     */  0xB8, 0x07, 0x00,
+  /* 00000341 out dx,ax                      */  0xEF,
+  /* 00000342 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000345 mov ax,0x300                   */  0xB8, 0x00, 0x03,
+  /* 00000348 out dx,ax                      */  0xEF,
+  /* 00000349 pop ax                         */  0x58,
+  /* 0000034A pop dx                         */  0x5A,
+  /* 0000034B push dx                        */  0x52,
+  /* 0000034C push ax                        */  0x50,
+  /* 0000034D mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 00000350 mov ax,0x4                     */  0xB8, 0x04, 0x00,
+  /* 00000353 out dx,ax                      */  0xEF,
+  /* 00000354 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000357 mov ax,0x41                    */  0xB8, 0x41, 0x00,
+  /* 0000035A out dx,ax                      */  0xEF,
+  /* 0000035B pop ax                         */  0x58,
+  /* 0000035C pop dx                         */  0x5A,
+  /* 0000035D pop ax                         */  0x58,
+  /* 0000035E pop dx                         */  0x5A,
+  /* 0000035F jmp short 0x3ac                */  0xEB, 0x4B,
+  /* 00000361 push si                        */  0x56,
+  /* 00000362 mov si,0x411                   */  0xBE, 0x11, 0x04,
+  /* 00000365 call word 0x3c4                */  0xE8, 0x5C, 0x00,
+  /* 00000368 pop si                         */  0x5E,
+  /* 00000369 mov bx,0x40f1                  */  0xBB, 0xF1, 0x40,
+  /* 0000036C jmp short 0x3ac                */  0xEB, 0x3E,
+  /* 0000036E push si                        */  0x56,
+  /* 0000036F mov si,0x43f                   */  0xBE, 0x3F, 0x04,
+  /* 00000372 call word 0x3c4                */  0xE8, 0x4F, 0x00,
+  /* 00000375 pop si                         */  0x5E,
+  /* 00000376 jmp short 0x3b8                */  0xEB, 0x40,
+  /* 00000378 push si                        */  0x56,
+  /* 00000379 mov si,0x452                   */  0xBE, 0x52, 0x04,
+  /* 0000037C call word 0x3c4                */  0xE8, 0x45, 0x00,
+  /* 0000037F pop si                         */  0x5E,
+  /* 00000380 jmp short 0x3b8                */  0xEB, 0x36,
+  /* 00000382 push si                        */  0x56,
+  /* 00000383 mov si,0x423                   */  0xBE, 0x23, 0x04,
+  /* 00000386 call word 0x3c4                */  0xE8, 0x3B, 0x00,
+  /* 00000389 pop si                         */  0x5E,
+  /* 0000038A cmp al,0x3                     */  0x3C, 0x03,
+  /* 0000038C jz 0x39d                       */  0x74, 0x0F,
+  /* 0000038E cmp al,0x12                    */  0x3C, 0x12,
+  /* 00000390 jz 0x3a1                       */  0x74, 0x0F,
+  /* 00000392 push si                        */  0x56,
+  /* 00000393 mov si,0x432                   */  0xBE, 0x32, 0x04,
+  /* 00000396 call word 0x3c4                */  0xE8, 0x2B, 0x00,
+  /* 00000399 pop si                         */  0x5E,
+  /* 0000039A jmp word 0x233                 */  0xE9, 0x96, 0xFE,
+  /* 0000039D mov al,0x30                    */  0xB0, 0x30,
+  /* 0000039F jmp short 0x3a3                */  0xEB, 0x02,
+  /* 000003A1 mov al,0x20                    */  0xB0, 0x20,
+  /* 000003A3 push si                        */  0x56,
+  /* 000003A4 mov si,0x3d6                   */  0xBE, 0xD6, 0x03,
+  /* 000003A7 call word 0x3c4                */  0xE8, 0x1A, 0x00,
+  /* 000003AA pop si                         */  0x5E,
+  /* 000003AB iretw                          */  0xCF,
+  /* 000003AC push si                        */  0x56,
+  /* 000003AD mov si,0x3d6                   */  0xBE, 0xD6, 0x03,
+  /* 000003B0 call word 0x3c4                */  0xE8, 0x11, 0x00,
+  /* 000003B3 pop si                         */  0x5E,
+  /* 000003B4 mov ax,0x4f                    */  0xB8, 0x4F, 0x00,
+  /* 000003B7 iretw                          */  0xCF,
+  /* 000003B8 push si                        */  0x56,
+  /* 000003B9 mov si,0x3dc                   */  0xBE, 0xDC, 0x03,
+  /* 000003BC call word 0x3c4                */  0xE8, 0x05, 0x00,
+  /* 000003BF pop si                         */  0x5E,
+  /* 000003C0 mov ax,0x14f                   */  0xB8, 0x4F, 0x01,
+  /* 000003C3 iretw                          */  0xCF,
+  /* 000003C4 pushaw                         */  0x60,
+  /* 000003C5 push ds                        */  0x1E,
+  /* 000003C6 push cs                        */  0x0E,
+  /* 000003C7 pop ds                         */  0x1F,
+  /* 000003C8 mov dx,0x402                   */  0xBA, 0x02, 0x04,
+  /* 000003CB lodsb                          */  0xAC,
+  /* 000003CC cmp al,0x0                     */  0x3C, 0x00,
+  /* 000003CE jz 0x3d3                       */  0x74, 0x03,
+  /* 000003D0 out dx,al                      */  0xEE,
+  /* 000003D1 jmp short 0x3cb                */  0xEB, 0xF8,
+  /* 000003D3 pop ds                         */  0x1F,
+  /* 000003D4 popaw                          */  0x61,
+  /* 000003D5 ret                            */  0xC3,
+  /* 000003D6 inc bp                         */  0x45,
+  /* 000003D7 js 0x442                       */  0x78, 0x69,
+  /* 000003D9 jz 0x3e5                       */  0x74, 0x0A,
+  /* 000003DB add [di+0x6e],dl               */  0x00, 0x55, 0x6E,
+  /* 000003DE jnc 0x455                      */  0x73, 0x75,
+  /* 000003E0 jo 0x452                       */  0x70, 0x70,
+  /* 000003E2 outsw                          */  0x6F,
+  /* 000003E3 jc 0x459                       */  0x72, 0x74,
+  /* 000003E5 or al,[fs:bx+si]               */  0x65, 0x64, 0x0A, 0x00,
+  /* 000003E9 push bp                        */  0x55,
+  /* 000003EA outsb                          */  0x6E,
+  /* 000003EB imul bp,[bp+0x6f],byte +0x77   */  0x6B, 0x6E, 0x6F, 0x77,
+  /* 000003EF outsb                          */  0x6E,
+  /* 000003F0 and [bp+0x75],al               */  0x20, 0x46, 0x75,
+  /* 000003F3 outsb                          */  0x6E,
+  /* 000003F4 arpl [si+0x69],si              */  0x63, 0x74, 0x69,
+  /* 000003F7 outsw                          */  0x6F,
+  /* 000003F8 outsb                          */  0x6E,
+  /* 000003F9 or al,[bx+si]                  */  0x0A, 0x00,
+  /* 000003FB inc di                         */  0x47,
+  /* 000003FC gs jz 0x448                    */  0x65, 0x74, 0x49,
+  /* 000003FF outsb                          */  0x6E,
+  /* 00000400 outsd                          */  0x66, 0x6F,
+  /* 00000402 or al,[bx+si]                  */  0x0A, 0x00,
+  /* 00000404 inc di                         */  0x47,
+  /* 00000405 gs jz 0x455                    */  0x65, 0x74, 0x4D,
+  /* 00000408 outsw                          */  0x6F,
+  /* 00000409 gs dec cx                      */  0x64, 0x65, 0x49,
+  /* 0000040C outsb                          */  0x6E,
+  /* 0000040D outsd                          */  0x66, 0x6F,
+  /* 0000040F or al,[bx+si]                  */  0x0A, 0x00,
+  /* 00000411 inc di                         */  0x47,
+  /* 00000412 gs jz 0x462                    */  0x65, 0x74, 0x4D,
+  /* 00000415 outsw                          */  0x6F,
+  /* 00000416 or al,[gs:bx+si]               */  0x64, 0x65, 0x0A, 0x00,
+  /* 0000041A push bx                        */  0x53,
+  /* 0000041B gs jz 0x46b                    */  0x65, 0x74, 0x4D,
+  /* 0000041E outsw                          */  0x6F,
+  /* 0000041F or al,[gs:bx+si]               */  0x64, 0x65, 0x0A, 0x00,
+  /* 00000423 push bx                        */  0x53,
+  /* 00000424 gs jz 0x474                    */  0x65, 0x74, 0x4D,
+  /* 00000427 outsw                          */  0x6F,
+  /* 00000428 gs dec sp                      */  0x64, 0x65, 0x4C,
+  /* 0000042B gs a32 popaw                   */  0x65, 0x67, 0x61,
+  /* 0000042E arpl [bx+di+0xa],di            */  0x63, 0x79, 0x0A,
+  /* 00000431 add [di+0x6e],dl               */  0x00, 0x55, 0x6E,
+  /* 00000434 imul bp,[bx+0x77],byte +0x6e   */  0x6B, 0x6F, 0x77, 0x6E,
+  /* 00000438 and [di+0x6f],cl               */  0x20, 0x4D, 0x6F,
+  /* 0000043B or al,[gs:bx+si]               */  0x64, 0x65, 0x0A, 0x00,
+  /* 0000043F inc di                         */  0x47,
+  /* 00000440 gs jz 0x493                    */  0x65, 0x74, 0x50,
+  /* 00000443 insw                           */  0x6D,
+  /* 00000444 inc bx                         */  0x43,
+  /* 00000445 popaw                          */  0x61,
+  /* 00000446 jo 0x4a9                       */  0x70, 0x61,
+  /* 00000448 bound bp,[bx+di+0x6c]          */  0x62, 0x69, 0x6C,
+  /* 0000044B imul si,[si+0x69],word 0x7365  */  0x69, 0x74, 0x69, 0x65, 0x73,
+  /* 00000450 or al,[bx+si]                  */  0x0A, 0x00,
+  /* 00000452 push dx                        */  0x52,
+  /* 00000453 gs popaw                       */  0x65, 0x61,
+  /* 00000455 fs inc bp                      */  0x64, 0x45,
+  /* 00000457 fs                             */  0x64,
+  /* 00000458 db 0x69                        */  0x69,
+  /* 00000459 or al,[fs:bx+si]               */  0x64, 0x0A, 0x00,
 };
 #endif
-- 
2.18.1