Index: /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.asm	(revision 43077)
+++ /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.asm	(revision 43078)
@@ -118,6 +118,6 @@
 ;  //
 ;  // ============================================================================================
+;  #include <inttypes.h>
 ;  #include "vgabios.h"
-;  #include <inttypes.h>
 
 ;
@@ -157,9 +157,9 @@
 
 
-section VGAROM progbits vstart=0x0 align=1 ; size=0x993 class=CODE group=AUTO
+section VGAROM progbits vstart=0x0 align=1 ; size=0x971 class=CODE group=AUTO
     db  055h, 0aah, 040h, 0e9h, 068h, 00ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 049h, 042h
     db  04dh, 000h
-vgabios_int10_handler:                       ; 0xc0022 LB 0x5b5
+vgabios_int10_handler:                       ; 0xc0022 LB 0x593
     pushfw                                    ; 9c
     cmp ah, 00fh                              ; 80 fc 0f
@@ -215,29 +215,29 @@
     cmp AL, strict byte 003h                  ; 3c 03
     jne short 000afh                          ; 75 05
-    call 0080ch                               ; e8 5f 07
+    call 007eah                               ; e8 3d 07
     jmp short 000f3h                          ; eb 44
     cmp AL, strict byte 005h                  ; 3c 05
     jne short 000b8h                          ; 75 05
-    call 00831h                               ; e8 7b 07
+    call 0080fh                               ; e8 59 07
     jmp short 000f3h                          ; eb 3b
     cmp AL, strict byte 006h                  ; 3c 06
     jne short 000c1h                          ; 75 05
-    call 0085eh                               ; e8 9f 07
+    call 0083ch                               ; e8 7d 07
     jmp short 000f3h                          ; eb 32
     cmp AL, strict byte 007h                  ; 3c 07
     jne short 000cah                          ; 75 05
-    call 008abh                               ; e8 e3 07
+    call 00889h                               ; e8 c1 07
     jmp short 000f3h                          ; eb 29
     cmp AL, strict byte 008h                  ; 3c 08
     jne short 000d3h                          ; 75 05
-    call 008dfh                               ; e8 0e 08
+    call 008bdh                               ; e8 ec 07
     jmp short 000f3h                          ; eb 20
     cmp AL, strict byte 009h                  ; 3c 09
     jne short 000dch                          ; 75 05
-    call 00916h                               ; e8 3c 08
+    call 008f4h                               ; e8 1a 08
     jmp short 000f3h                          ; eb 17
     cmp AL, strict byte 00ah                  ; 3c 0a
     jne short 000e5h                          ; 75 05
-    call 0097ah                               ; e8 97 08
+    call 00958h                               ; e8 75 08
     jmp short 000f3h                          ; eb 0e
     push ES                                   ; 06
@@ -246,5 +246,5 @@
     mov bx, 0c000h                            ; bb 00 c0
     mov ds, bx                                ; 8e db
-    call 0305ch                               ; e8 6c 2f
+    call 03058h                               ; e8 68 2f
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -987,13 +987,14 @@
     pop dx                                    ; 5a
     retn                                      ; c3
+_dispi_get_max_bpp:                          ; 0xc05b5 LB 0x22
     push dx                                   ; 52
     push bx                                   ; 53
-    call 00609h                               ; e8 4f 00
+    call 005e7h                               ; e8 2d 00
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
     or ax, strict byte 00002h                 ; 83 c8 02
-    call 005f9h                               ; e8 37 00
+    call 005d7h                               ; e8 15 00
     mov dx, 001ceh                            ; ba ce 01
-    mov ax, strict word 00001h                ; b8 01 00
+    mov ax, strict word 00003h                ; b8 03 00
     out DX, ax                                ; ef
     mov dx, 001cfh                            ; ba cf 01
@@ -1002,31 +1003,10 @@
     db  08bh, 0c3h
     ; mov ax, bx                                ; 8b c3
-    call 005f9h                               ; e8 26 00
+    call 005d7h                               ; e8 04 00
     pop ax                                    ; 58
     pop bx                                    ; 5b
     pop dx                                    ; 5a
     retn                                      ; c3
-_dispi_get_max_bpp:                          ; 0xc05d7 LB 0x22
-    push dx                                   ; 52
-    push bx                                   ; 53
-    call 00609h                               ; e8 2d 00
-    db  08bh, 0d8h
-    ; mov bx, ax                                ; 8b d8
-    or ax, strict byte 00002h                 ; 83 c8 02
-    call 005f9h                               ; e8 15 00
-    mov dx, 001ceh                            ; ba ce 01
-    mov ax, strict word 00003h                ; b8 03 00
-    out DX, ax                                ; ef
-    mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
-    push ax                                   ; 50
-    db  08bh, 0c3h
-    ; mov ax, bx                                ; 8b c3
-    call 005f9h                               ; e8 04 00
-    pop ax                                    ; 58
-    pop bx                                    ; 5b
-    pop dx                                    ; 5a
-    retn                                      ; c3
-dispi_set_enable_:                           ; 0xc05f9 LB 0x1e
+dispi_set_enable_:                           ; 0xc05d7 LB 0x1e
     push dx                                   ; 52
     push ax                                   ; 50
@@ -1047,5 +1027,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-dispi_set_bank_:                             ; 0xc0617 LB 0x1e
+dispi_set_bank_:                             ; 0xc05f5 LB 0x1e
     push dx                                   ; 52
     push ax                                   ; 50
@@ -1066,10 +1046,10 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-_dispi_set_bank_farcall:                     ; 0xc0635 LB 0xbe
+_dispi_set_bank_farcall:                     ; 0xc0613 LB 0xbe
     cmp bx, 00100h                            ; 81 fb 00 01
-    je short 00659h                           ; 74 1e
+    je short 00637h                           ; 74 1e
     db  00bh, 0dbh
     ; or bx, bx                                 ; 0b db
-    jne short 00667h                          ; 75 28
+    jne short 00645h                          ; 75 28
     db  08bh, 0c2h
     ; mov ax, dx                                ; 8b c2
@@ -1086,5 +1066,5 @@
     db  03bh, 0d0h
     ; cmp dx, ax                                ; 3b d0
-    jne short 00667h                          ; 75 12
+    jne short 00645h                          ; 75 12
     mov ax, strict word 0004fh                ; b8 4f 00
     retf                                      ; cb
@@ -1140,7 +1120,7 @@
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
-    call 00598h                               ; e8 e9 fe
+    call 00598h                               ; e8 0b ff
     cmp AL, strict byte 004h                  ; 3c 04
-    jnbe short 006b5h                         ; 77 02
+    jnbe short 00693h                         ; 77 02
     shr bx, 1                                 ; d1 eb
     shr bx, 003h                              ; c1 eb 03
@@ -1154,5 +1134,5 @@
     pop ax                                    ; 58
     retn                                      ; c3
-    call 006a7h                               ; e8 e0 ff
+    call 00685h                               ; e8 e0 ff
     push dx                                   ; 52
     push ax                                   ; 50
@@ -1181,5 +1161,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-_vga_compat_setup:                           ; 0xc06f3 LB 0xe1
+_vga_compat_setup:                           ; 0xc06d1 LB 0xe1
     push ax                                   ; 50
     push dx                                   ; 52
@@ -1202,5 +1182,5 @@
     out DX, ax                                ; ef
     pop ax                                    ; 58
-    call 006a7h                               ; e8 90 ff
+    call 00685h                               ; e8 90 ff
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00002h                ; b8 02 00
@@ -1222,8 +1202,8 @@
     and AL, strict byte 0bdh                  ; 24 bd
     test ah, 001h                             ; f6 c4 01
-    je short 0073bh                           ; 74 02
+    je short 00719h                           ; 74 02
     or AL, strict byte 002h                   ; 0c 02
     test ah, 002h                             ; f6 c4 02
-    je short 00742h                           ; 74 02
+    je short 00720h                           ; 74 02
     or AL, strict byte 040h                   ; 0c 40
     out DX, AL                                ; ee
@@ -1266,5 +1246,5 @@
     in ax, DX                                 ; ed
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 007d2h                           ; 72 40
+    jc short 007b0h                           ; 72 40
     mov dx, 003d4h                            ; ba d4 03
     mov AL, strict byte 014h                  ; b0 14
@@ -1303,5 +1283,5 @@
     pop dx                                    ; 5a
     pop ax                                    ; 58
-_vbe_has_vbe_display:                        ; 0xc07d4 LB 0x13
+_vbe_has_vbe_display:                        ; 0xc07b2 LB 0x13
     push DS                                   ; 1e
     push bx                                   ; 53
@@ -1316,10 +1296,10 @@
     pop DS                                    ; 1f
     retn                                      ; c3
-_vbe_init:                                   ; 0xc07e7 LB 0x25
+_vbe_init:                                   ; 0xc07c5 LB 0x25
     mov ax, 0b0c0h                            ; b8 c0 b0
-    call 00588h                               ; e8 9b fd
-    call 0057ah                               ; e8 8a fd
+    call 00588h                               ; e8 bd fd
+    call 0057ah                               ; e8 ac fd
     cmp ax, 0b0c0h                            ; 3d c0 b0
-    jne short 0080bh                          ; 75 16
+    jne short 007e9h                          ; 75 16
     push DS                                   ; 1e
     push bx                                   ; 53
@@ -1332,18 +1312,18 @@
     pop DS                                    ; 1f
     mov ax, 0b0c4h                            ; b8 c4 b0
-    call 00588h                               ; e8 7d fd
-    retn                                      ; c3
-vbe_biosfn_return_current_mode:              ; 0xc080c LB 0x25
+    call 00588h                               ; e8 9f fd
+    retn                                      ; c3
+vbe_biosfn_return_current_mode:              ; 0xc07ea LB 0x25
     push DS                                   ; 1e
     mov ax, strict word 00040h                ; b8 40 00
     mov ds, ax                                ; 8e d8
-    call 00609h                               ; e8 f4 fd
+    call 005e7h                               ; e8 f4 fd
     and ax, strict byte 00001h                ; 83 e0 01
-    je short 00823h                           ; 74 09
+    je short 00801h                           ; 74 09
     mov bx, 000bah                            ; bb ba 00
     mov ax, word [bx]                         ; 8b 07
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
-    jne short 0082ch                          ; 75 09
+    jne short 0080ah                          ; 75 09
     mov bx, strict word 00049h                ; bb 49 00
     mov al, byte [bx]                         ; 8a 07
@@ -1355,22 +1335,22 @@
     pop DS                                    ; 1f
     retn                                      ; c3
-vbe_biosfn_display_window_control:           ; 0xc0831 LB 0x2d
+vbe_biosfn_display_window_control:           ; 0xc080f LB 0x2d
     cmp bl, 000h                              ; 80 fb 00
-    jne short 0085ah                          ; 75 24
+    jne short 00838h                          ; 75 24
     cmp bh, 001h                              ; 80 ff 01
-    je short 00851h                           ; 74 16
-    jc short 00841h                           ; 72 04
+    je short 0082fh                           ; 74 16
+    jc short 0081fh                           ; 72 04
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
     db  08bh, 0c2h
     ; mov ax, dx                                ; 8b c2
-    call 00617h                               ; e8 d1 fd
-    call 00627h                               ; e8 de fd
+    call 005f5h                               ; e8 d1 fd
+    call 00605h                               ; e8 de fd
     db  03bh, 0c2h
     ; cmp ax, dx                                ; 3b c2
-    jne short 0085ah                          ; 75 0d
+    jne short 00838h                          ; 75 0d
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-    call 00627h                               ; e8 d3 fd
+    call 00605h                               ; e8 d3 fd
     db  08bh, 0d0h
     ; mov dx, ax                                ; 8b d0
@@ -1379,16 +1359,16 @@
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
-vbe_biosfn_set_get_logical_scan_line_length: ; 0xc085e LB 0x4d
+vbe_biosfn_set_get_logical_scan_line_length: ; 0xc083c LB 0x4d
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     cmp bl, 001h                              ; 80 fb 01
-    je short 00889h                           ; 74 24
+    je short 00867h                           ; 74 24
     cmp bl, 002h                              ; 80 fb 02
-    je short 00870h                           ; 74 06
-    jc short 00886h                           ; 72 1a
+    je short 0084eh                           ; 74 06
+    jc short 00864h                           ; 72 1a
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
     push ax                                   ; 50
-    call 00598h                               ; e8 24 fd
+    call 00598h                               ; e8 46 fd
     db  032h, 0ffh
     ; xor bh, bh                                ; 32 ff
@@ -1397,5 +1377,5 @@
     db  00ah, 0dbh
     ; or bl, bl                                 ; 0a db
-    jne short 00881h                          ; 75 05
+    jne short 0085fh                          ; 75 05
     sal ax, 003h                              ; c1 e0 03
     mov BL, strict byte 001h                  ; b3 01
@@ -1404,16 +1384,16 @@
     pop ax                                    ; 58
     div bx                                    ; f7 f3
-    call 006c4h                               ; e8 3b fe
-    call 00598h                               ; e8 0c fd
+    call 006a2h                               ; e8 3b fe
+    call 00598h                               ; e8 2e fd
     db  032h, 0ffh
     ; xor bh, bh                                ; 32 ff
     db  08ah, 0dch
     ; mov bl, ah                                ; 8a dc
-    call 006d7h                               ; e8 44 fe
+    call 006b5h                               ; e8 44 fe
     db  08bh, 0c8h
     ; mov cx, ax                                ; 8b c8
     db  00ah, 0dbh
     ; or bl, bl                                 ; 0a db
-    jne short 0089eh                          ; 75 05
+    jne short 0087ch                          ; 75 05
     shr ax, 003h                              ; c1 e8 03
     mov BL, strict byte 001h                  ; b3 01
@@ -1421,31 +1401,31 @@
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
-    call 006e5h                               ; e8 40 fe
+    call 006c3h                               ; e8 40 fe
     db  08bh, 0d0h
     ; mov dx, ax                                ; 8b d0
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-vbe_biosfn_set_get_display_start:            ; 0xc08ab LB 0x34
+vbe_biosfn_set_get_display_start:            ; 0xc0889 LB 0x34
     cmp bl, 080h                              ; 80 fb 80
-    je short 008bbh                           ; 74 0b
+    je short 00899h                           ; 74 0b
     cmp bl, 001h                              ; 80 fb 01
-    je short 008cfh                           ; 74 1a
-    jc short 008c1h                           ; 72 0a
+    je short 008adh                           ; 74 1a
+    jc short 0089fh                           ; 72 0a
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
-    call 0056dh                               ; e8 af fc
-    call 00560h                               ; e8 9f fc
+    call 0056dh                               ; e8 d1 fc
+    call 00560h                               ; e8 c1 fc
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
-    call 0066bh                               ; e8 a5 fd
+    call 00649h                               ; e8 a5 fd
     db  08bh, 0c2h
     ; mov ax, dx                                ; 8b c2
-    call 00689h                               ; e8 be fd
+    call 00667h                               ; e8 be fd
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-    call 0067bh                               ; e8 a9 fd
+    call 00659h                               ; e8 a9 fd
     db  08bh, 0c8h
     ; mov cx, ax                                ; 8b c8
-    call 00699h                               ; e8 c2 fd
+    call 00677h                               ; e8 c2 fd
     db  08bh, 0d0h
     ; mov dx, ax                                ; 8b d0
@@ -1454,23 +1434,23 @@
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-vbe_biosfn_set_get_dac_palette_format:       ; 0xc08df LB 0x37
+vbe_biosfn_set_get_dac_palette_format:       ; 0xc08bd LB 0x37
     cmp bl, 001h                              ; 80 fb 01
-    je short 00902h                           ; 74 1e
-    jc short 008eah                           ; 72 04
+    je short 008e0h                           ; 74 1e
+    jc short 008c8h                           ; 72 04
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
-    call 00609h                               ; e8 1c fd
+    call 005e7h                               ; e8 1c fd
     cmp bh, 006h                              ; 80 ff 06
-    je short 008fch                           ; 74 0a
+    je short 008dah                           ; 74 0a
     cmp bh, 008h                              ; 80 ff 08
-    jne short 00912h                          ; 75 1b
+    jne short 008f0h                          ; 75 1b
     or ax, strict byte 00020h                 ; 83 c8 20
-    jne short 008ffh                          ; 75 03
+    jne short 008ddh                          ; 75 03
     and ax, strict byte 0ffdfh                ; 83 e0 df
-    call 005f9h                               ; e8 f7 fc
+    call 005d7h                               ; e8 f7 fc
     mov BH, strict byte 006h                  ; b7 06
-    call 00609h                               ; e8 02 fd
+    call 005e7h                               ; e8 02 fd
     and ax, strict byte 00020h                ; 83 e0 20
-    je short 0090eh                           ; 74 02
+    je short 008ech                           ; 74 02
     mov BH, strict byte 008h                  ; b7 08
     mov ax, strict word 0004fh                ; b8 4f 00
@@ -1478,13 +1458,13 @@
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
-vbe_biosfn_set_get_palette_data:             ; 0xc0916 LB 0x64
+vbe_biosfn_set_get_palette_data:             ; 0xc08f4 LB 0x64
     test bl, bl                               ; 84 db
-    je short 00929h                           ; 74 0f
+    je short 00907h                           ; 74 0f
     cmp bl, 001h                              ; 80 fb 01
-    je short 00951h                           ; 74 32
+    je short 0092fh                           ; 74 32
     cmp bl, 003h                              ; 80 fb 03
-    jbe short 00976h                          ; 76 52
+    jbe short 00954h                          ; 76 52
     cmp bl, 080h                              ; 80 fb 80
-    jne short 00972h                          ; 75 49
+    jne short 00950h                          ; 75 49
     pushad                                    ; 66 60
     push DS                                   ; 1e
@@ -1505,5 +1485,5 @@
     rol eax, 008h                             ; 66 c1 c0 08
     out DX, AL                                ; ee
-    loop 00937h                               ; e2 ed
+    loop 00915h                               ; e2 ed
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -1524,18 +1504,18 @@
     in AL, DX                                 ; ec
     stosd                                     ; 66 ab
-    loop 0095ch                               ; e2 ee
+    loop 0093ah                               ; e2 ee
     popad                                     ; 66 61
-    jmp short 0094dh                          ; eb db
+    jmp short 0092bh                          ; eb db
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
     mov ax, 0024fh                            ; b8 4f 02
     retn                                      ; c3
-vbe_biosfn_return_protected_mode_interface: ; 0xc097a LB 0x19
+vbe_biosfn_return_protected_mode_interface: ; 0xc0958 LB 0x19
     test bl, bl                               ; 84 db
-    jne short 0098fh                          ; 75 11
+    jne short 0096dh                          ; 75 11
     mov di, 0c000h                            ; bf 00 c0
     mov es, di                                ; 8e c7
     mov di, 04600h                            ; bf 00 46
-    mov cx, 04711h                            ; b9 11 47
+    mov cx, 00115h                            ; b9 15 01
     db  02bh, 0cfh
     ; sub cx, di                                ; 2b cf
@@ -1545,8 +1525,8 @@
     retn                                      ; c3
 
-  ; Padding 0x6d bytes at 0xc0993
-  times 109 db 0
+  ; Padding 0x8f bytes at 0xc0971
+  times 143 db 0
 
-section _TEXT progbits vstart=0xa00 align=1 ; size=0x2ff9 class=CODE group=AUTO
+section _TEXT progbits vstart=0xa00 align=1 ; size=0x2f27 class=CODE group=AUTO
 set_int_vector_:                             ; 0xc0a00 LB 0x1a
     push bx                                   ; 53
@@ -1576,5 +1556,5 @@
     out DX, AL                                ; ee
     push 04800h                               ; 68 00 48
-    call 02f54h                               ; e8 1e 25
+    call 02f50h                               ; e8 1a 25
     add sp, strict byte 00002h                ; 83 c4 02
     pop bp                                    ; 5d
@@ -1604,5 +1584,5 @@
     call 00a1ah                               ; e8 a6 ff
     call 00a3ch                               ; e8 c5 ff
-    call 007e7h                               ; e8 6d fd
+    call 007c5h                               ; e8 4b fd
     mov dx, strict word 00022h                ; ba 22 00
     mov ax, strict word 00010h                ; b8 10 00
@@ -1630,5 +1610,5 @@
     mov dx, strict word 00060h                ; ba 60 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 76 24
+    call 02f10h                               ; e8 60 24
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -1638,5 +1618,5 @@
     add dx, strict byte 00050h                ; 83 c2 50
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 63 24
+    call 02f10h                               ; e8 4d 24
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -1656,7 +1636,7 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 29 24
+    call 02ef4h                               ; e8 13 24
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 fd 23
+    call 02ecdh                               ; e8 e7 23
     mov ch, al                                ; 88 c5
     cmp AL, strict byte 0ffh                  ; 3c ff
@@ -1674,13 +1654,13 @@
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 f8 23
+    call 02ef4h                               ; e8 e2 23
     movzx di, al                              ; 0f b6 f8
     inc di                                    ; 47
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 07 24
+    call 02f10h                               ; e8 f1 23
     movzx bx, ch                              ; 0f b6 dd
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
     jne short 00b59h                          ; 75 2d
     mov dx, ax                                ; 89 c2
@@ -1698,6 +1678,6 @@
     mov dx, cx                                ; 89 ca
     add dx, ax                                ; 01 c2
-    mov ax, word [bx+04833h]                  ; 8b 87 33 48
-    call 02f26h                               ; e8 d0 23
+    mov ax, word [bx+04836h]                  ; 8b 87 36 48
+    call 02f10h                               ; e8 ba 23
     mov word [ss:si], ax                      ; 36 89 04
     leave                                     ; c9
@@ -1735,5 +1715,5 @@
     mov dx, strict word 0007ch                ; ba 7c 00
     xor ax, ax                                ; 31 c0
-    call 02f42h                               ; e8 b0 23
+    call 02f2ch                               ; e8 9a 23
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -1743,5 +1723,5 @@
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 64 23
+    call 02ef4h                               ; e8 4e 23
     xor ah, ah                                ; 30 e4
     push SS                                   ; 16
@@ -1750,5 +1730,5 @@
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 54 23
+    call 02ef4h                               ; e8 3e 23
     xor ah, ah                                ; 30 e4
     push SS                                   ; 16
@@ -1762,16 +1742,16 @@
     mov dx, 0010ch                            ; ba 0c 01
     jmp short 00b8dh                          ; eb c2
-    mov ax, 05dafh                            ; b8 af 5d
+    mov ax, 05db2h                            ; b8 b2 5d
     mov dx, 0c000h                            ; ba 00 c0
     jmp short 00b92h                          ; eb bf
-    mov ax, 055afh                            ; b8 af 55
+    mov ax, 055b2h                            ; b8 b2 55
     jmp short 00bceh                          ; eb f6
-    mov ax, 059afh                            ; b8 af 59
+    mov ax, 059b2h                            ; b8 b2 59
     jmp short 00bceh                          ; eb f1
-    mov ax, 07bafh                            ; b8 af 7b
+    mov ax, 07bb2h                            ; b8 b2 7b
     jmp short 00bceh                          ; eb ec
-    mov ax, 06bafh                            ; b8 af 6b
+    mov ax, 06bb2h                            ; b8 b2 6b
     jmp short 00bceh                          ; eb e7
-    mov ax, 07cdch                            ; b8 dc 7c
+    mov ax, 07cdfh                            ; b8 df 7c
     jmp short 00bceh                          ; eb e2
     jmp short 00bc0h                          ; eb d2
@@ -1785,7 +1765,7 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 06 23
+    call 02ef4h                               ; e8 f0 22
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 da 22
+    call 02ecdh                               ; e8 c4 22
     mov cl, al                                ; 88 c1
     cmp AL, strict byte 0ffh                  ; 3c ff
@@ -1793,7 +1773,7 @@
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
     je near 00d1eh                            ; 0f 84 fe 00
-    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
+    mov bl, byte [bx+04834h]                  ; 8a 9f 34 48
     cmp bl, 003h                              ; 80 fb 03
     jc short 00c3ah                           ; 72 11
@@ -1809,5 +1789,5 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 db 22
+    call 02f10h                               ; e8 c5 22
     imul ax, word [bp-006h]                   ; 0f af 46 fa
     mov bx, si                                ; 89 f3
@@ -1830,5 +1810,5 @@
     mov dx, bx                                ; 89 da
     mov ax, 0a000h                            ; b8 00 a0
-    call 02f0ah                               ; e8 85 22
+    call 02ef4h                               ; e8 6f 22
     and al, byte [bp-004h]                    ; 22 46 fc
     test al, al                               ; 84 c0
@@ -1851,8 +1831,8 @@
     mov dx, bx                                ; 89 da
     mov ax, 0b800h                            ; b8 00 b8
-    call 02f0ah                               ; e8 50 22
+    call 02ef4h                               ; e8 3a 22
     movzx bx, cl                              ; 0f b6 d9
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
+    cmp byte [bx+04835h], 002h                ; 80 bf 35 48 02
     jne short 00ce2h                          ; 75 1b
     mov cx, si                                ; 89 f1
@@ -1881,5 +1861,5 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 22 22
+    call 02f10h                               ; e8 0c 22
     sal ax, 003h                              ; c1 e0 03
     imul ax, word [bp-006h]                   ; 0f af 46 fa
@@ -1887,5 +1867,5 @@
     add dx, ax                                ; 01 c2
     mov ax, 0a000h                            ; b8 00 a0
-    call 02f0ah                               ; e8 f5 21
+    call 02ef4h                               ; e8 df 21
     mov ch, al                                ; 88 c5
     jmp short 00d1bh                          ; eb 02
@@ -1989,12 +1969,12 @@
     mov dx, strict word 00060h                ; ba 60 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 63 21
+    call 02f1eh                               ; e8 4d 21
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 30 21
+    call 02ef4h                               ; e8 1a 21
     mov bl, al                                ; 88 c3
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 41 21
+    call 02f10h                               ; e8 2b 21
     mov dx, ax                                ; 89 c2
     test bl, 001h                             ; f6 c3 01
@@ -2027,5 +2007,5 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 fa 20
+    call 02f10h                               ; e8 e4 20
     mov bx, ax                                ; 89 c3
     mov AL, strict byte 00ah                  ; b0 0a
@@ -2062,17 +2042,17 @@
     mov bx, cx                                ; 89 cb
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 c7 20
+    call 02f1eh                               ; e8 b1 20
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 94 20
+    call 02ef4h                               ; e8 7e 20
     cmp al, byte [bp-002h]                    ; 3a 46 fe
     jne short 00ee4h                          ; 75 69
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 a2 20
+    call 02f10h                               ; e8 8c 20
     mov bx, ax                                ; 89 c3
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 7b 20
+    call 02ef4h                               ; e8 65 20
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
@@ -2094,5 +2074,5 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 64 20
+    call 02f10h                               ; e8 4e 20
     mov bx, ax                                ; 89 c3
     mov AL, strict byte 00eh                  ; b0 0e
@@ -2129,7 +2109,7 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 07 20
+    call 02ef4h                               ; e8 f1 1f
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 db 1f
+    call 02ecdh                               ; e8 c5 1f
     mov ch, al                                ; 88 c5
     cmp AL, strict byte 0ffh                  ; 3c ff
@@ -2142,13 +2122,13 @@
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
+    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
     jne short 00f6bh                          ; 75 40
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 f2 1f
+    call 02f10h                               ; e8 dc 1f
     mov bx, ax                                ; 89 c3
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 cb 1f
+    call 02ef4h                               ; e8 b5 1f
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
@@ -2164,17 +2144,17 @@
     mov dx, strict word 0004eh                ; ba 4e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 d5 1f
+    call 02f1eh                               ; e8 bf 1f
     or si, 000ffh                             ; 81 ce ff 00
     lea bx, [si+001h]                         ; 8d 5c 01
     imul bx, di                               ; 0f af df
     jmp short 00f7dh                          ; eb 12
-    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
+    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
     sal bx, 006h                              ; c1 e3 06
     movzx ax, cl                              ; 0f b6 c1
-    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
+    mov bx, word [bx+048c9h]                  ; 8b 9f c9 48
     imul bx, ax                               ; 0f af d8
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 a0 1f
+    call 02f10h                               ; e8 8a 1f
     mov si, ax                                ; 89 c6
     mov AL, strict byte 00ch                  ; b0 0c
@@ -2197,5 +2177,5 @@
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 66 1f
+    call 02f02h                               ; e8 50 1f
     mov dx, word [bp-004h]                    ; 8b 56 fc
     mov ax, si                                ; 89 f0
@@ -2208,5 +2188,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_set_video_mode_:                      ; 0xc0fc1 LB 0x38c
+biosfn_set_video_mode_:                      ; 0xc0fc1 LB 0x382
     push bx                                   ; 53
     push cx                                   ; 51
@@ -2215,8 +2195,8 @@
     push di                                   ; 57
     enter 00010h, 000h                        ; c8 10 00 00
-    mov byte [bp-008h], al                    ; 88 46 f8
+    mov byte [bp-004h], al                    ; 88 46 fc
     and AL, strict byte 080h                  ; 24 80
-    mov byte [bp-002h], al                    ; 88 46 fe
-    call 007d4h                               ; e8 ff f7
+    mov byte [bp-006h], al                    ; 88 46 fa
+    call 007b2h                               ; e8 dd f7
     test ax, ax                               ; 85 c0
     je short 00fe5h                           ; 74 0c
@@ -2227,30 +2207,30 @@
     mov dx, 003c5h                            ; ba c5 03
     out DX, AL                                ; ee
-    and byte [bp-008h], 07fh                  ; 80 66 f8 7f
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02ee3h                               ; e8 f3 1e
-    mov byte [bp-004h], al                    ; 88 46 fc
+    and byte [bp-004h], 07fh                  ; 80 66 fc 7f
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    call 02ecdh                               ; e8 dd 1e
+    mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01346h                            ; 0f 84 4d 03
+    je near 0133ch                            ; 0f 84 43 03
     movzx si, al                              ; 0f b6 f0
-    mov al, byte [si+048afh]                  ; 8a 84 af 48
-    mov byte [bp-006h], al                    ; 88 46 fa
+    mov al, byte [si+048b2h]                  ; 8a 84 b2 48
+    mov byte [bp-002h], al                    ; 88 46 fe
     movzx bx, al                              ; 0f b6 d8
     sal bx, 006h                              ; c1 e3 06
-    movzx ax, byte [bx+048c3h]                ; 0f b6 87 c3 48
+    movzx ax, byte [bx+048c6h]                ; 0f b6 87 c6 48
+    mov word [bp-00eh], ax                    ; 89 46 f2
+    movzx ax, byte [bx+048c7h]                ; 0f b6 87 c7 48
     mov word [bp-00ch], ax                    ; 89 46 f4
-    movzx ax, byte [bx+048c4h]                ; 0f b6 87 c4 48
+    movzx ax, byte [bx+048c8h]                ; 0f b6 87 c8 48
     mov word [bp-00ah], ax                    ; 89 46 f6
-    movzx ax, byte [bx+048c5h]                ; 0f b6 87 c5 48
-    mov word [bp-00eh], ax                    ; 89 46 f2
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 e0 1e
+    call 02ef4h                               ; e8 ca 1e
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 d7 1e
+    call 02ef4h                               ; e8 c1 1e
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 ce 1e
+    call 02ef4h                               ; e8 b8 1e
     mov ah, al                                ; 88 c4
     test AL, strict byte 008h                 ; a8 08
@@ -2258,5 +2238,5 @@
     mov bx, si                                ; 89 f3
     sal bx, 003h                              ; c1 e3 03
-    mov al, byte [bx+04835h]                  ; 8a 87 35 48
+    mov al, byte [bx+04838h]                  ; 8a 87 38 48
     mov dx, 003c6h                            ; ba c6 03
     out DX, AL                                ; ee
@@ -2264,5 +2244,5 @@
     mov dx, 003c8h                            ; ba c8 03
     out DX, AL                                ; ee
-    mov bl, byte [bx+04836h]                  ; 8a 9f 36 48
+    mov bl, byte [bx+04839h]                  ; 8a 9f 39 48
     cmp bl, 001h                              ; 80 fb 01
     jc short 0106eh                           ; 72 0e
@@ -2275,11 +2255,11 @@
     test bl, bl                               ; 84 db
     jne short 01084h                          ; 75 12
-    mov di, 05043h                            ; bf 43 50
+    mov di, 05046h                            ; bf 46 50
     jmp short 01084h                          ; eb 0d
-    mov di, 05103h                            ; bf 03 51
+    mov di, 05106h                            ; bf 06 51
     jmp short 01084h                          ; eb 08
-    mov di, 051c3h                            ; bf c3 51
+    mov di, 051c6h                            ; bf c6 51
     jmp short 01084h                          ; eb 03
-    mov di, 05283h                            ; bf 83 52
+    mov di, 05286h                            ; bf 86 52
     xor bx, bx                                ; 31 db
     jmp short 01097h                          ; eb 0f
@@ -2292,8 +2272,8 @@
     cmp bx, 00100h                            ; 81 fb 00 01
     jnc short 010c1h                          ; 73 2a
-    movzx si, byte [bp-004h]                  ; 0f b6 76 fc
+    movzx si, byte [bp-008h]                  ; 0f b6 76 f8
     sal si, 003h                              ; c1 e6 03
-    movzx si, byte [si+04836h]                ; 0f b6 b4 36 48
-    movzx dx, byte [si+048bfh]                ; 0f b6 94 bf 48
+    movzx si, byte [si+04839h]                ; 0f b6 b4 39 48
+    movzx dx, byte [si+048c2h]                ; 0f b6 94 c2 48
     cmp bx, dx                                ; 39 d3
     jnbe short 01088h                         ; 77 dc
@@ -2324,8 +2304,8 @@
     mov dx, 003c0h                            ; ba c0 03
     out DX, AL                                ; ee
-    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
+    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048e6h]                  ; 8a 84 e6 48
+    mov al, byte [si+048e9h]                  ; 8a 84 e9 48
     out DX, AL                                ; ee
     inc bx                                    ; 43
@@ -2348,8 +2328,8 @@
     mov dx, 003c4h                            ; ba c4 03
     out DX, AL                                ; ee
-    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
+    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048c7h]                  ; 8a 84 c7 48
+    mov al, byte [si+048cah]                  ; 8a 84 ca 48
     mov dx, 003c5h                            ; ba c5 03
     out DX, AL                                ; ee
@@ -2363,15 +2343,15 @@
     mov dx, 003ceh                            ; ba ce 03
     out DX, AL                                ; ee
-    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
+    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048fah]                  ; 8a 84 fa 48
+    mov al, byte [si+048fdh]                  ; 8a 84 fd 48
     mov dx, 003cfh                            ; ba cf 03
     out DX, AL                                ; ee
     inc bx                                    ; 43
     jmp short 0112fh                          ; eb e1
-    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04831h], 001h                ; 80 bf 31 48 01
+    cmp byte [bx+04834h], 001h                ; 80 bf 34 48 01
     jne short 01161h                          ; 75 05
     mov dx, 003b4h                            ; ba b4 03
@@ -2388,15 +2368,15 @@
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
-    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
+    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     sal cx, 006h                              ; c1 e1 06
     mov di, cx                                ; 89 cf
     add di, bx                                ; 01 df
     lea dx, [si+001h]                         ; 8d 54 01
-    mov al, byte [di+048cdh]                  ; 8a 85 cd 48
+    mov al, byte [di+048d0h]                  ; 8a 85 d0 48
     out DX, AL                                ; ee
     inc bx                                    ; 43
     jmp short 0116eh                          ; eb e0
     mov bx, cx                                ; 89 cb
-    mov al, byte [bx+048cch]                  ; 8a 87 cc 48
+    mov al, byte [bx+048cfh]                  ; 8a 87 cf 48
     mov dx, 003c2h                            ; ba c2 03
     out DX, AL                                ; ee
@@ -2408,11 +2388,11 @@
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
+    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
     jne short 01209h                          ; 75 5f
-    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
     jne short 011cbh                          ; 75 13
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04836h]                       ; 8e 87 36 48
     mov cx, 04000h                            ; b9 00 40
     mov ax, 00720h                            ; b8 20 07
@@ -2422,7 +2402,7 @@
     rep stosw                                 ; f3 ab
     jmp short 01209h                          ; eb 3e
-    cmp byte [bp-008h], 00dh                  ; 80 7e f8 0d
+    cmp byte [bp-004h], 00dh                  ; 80 7e fc 0d
     jnc short 011e3h                          ; 73 12
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04836h]                       ; 8e 87 36 48
     mov cx, 04000h                            ; b9 00 40
     xor ax, ax                                ; 31 c0
@@ -2442,5 +2422,5 @@
     mov AL, strict byte 00fh                  ; b0 0f
     out DX, AL                                ; ee
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04836h]                       ; 8e 87 36 48
     mov cx, 08000h                            ; b9 00 80
     xor ax, ax                                ; 31 c0
@@ -2451,90 +2431,87 @@
     mov al, byte [bp-010h]                    ; 8a 46 f0
     out DX, AL                                ; ee
-    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 02 1d
-    mov bx, word [bp-00ch]                    ; 8b 5e f4
+    call 02f02h                               ; e8 ec 1c
+    mov bx, word [bp-00eh]                    ; 8b 5e f2
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 12 1d
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
+    call 02f1eh                               ; e8 fc 1c
+    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     sal bx, 006h                              ; c1 e3 06
-    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
+    mov bx, word [bx+048c9h]                  ; 8b 9f c9 48
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 fe 1c
+    call 02f1eh                               ; e8 e8 1c
     mov bx, si                                ; 89 f3
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 f3 1c
-    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
+    call 02f1eh                               ; e8 dd 1c
+    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 ca 1c
-    mov bx, word [bp-00eh]                    ; 8b 5e f2
+    call 02f02h                               ; e8 b4 1c
+    mov bx, word [bp-00ah]                    ; 8b 5e f6
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 da 1c
-    mov al, byte [bp-002h]                    ; 8a 46 fe
+    call 02f1eh                               ; e8 c4 1c
+    mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 060h                   ; 0c 60
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 ad 1c
+    call 02f02h                               ; e8 97 1c
     mov bx, 000f9h                            ; bb f9 00
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 a1 1c
+    call 02f02h                               ; e8 8b 1c
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 8a 1c
+    call 02ef4h                               ; e8 74 1c
     and AL, strict byte 07fh                  ; 24 7f
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 8a 1c
+    call 02f02h                               ; e8 74 1c
     mov bx, strict word 00008h                ; bb 08 00
     mov dx, 0008ah                            ; ba 8a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 7e 1c
-    mov bx, 05593h                            ; bb 93 55
+    call 02f02h                               ; e8 68 1c
+    mov cx, ds                                ; 8c d9
+    mov bx, 05596h                            ; bb 96 55
     mov dx, 000a8h                            ; ba a8 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 8e 1c
-    mov bx, 0c000h                            ; bb 00 c0
-    mov dx, 000aah                            ; ba aa 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 82 1c
+    call 02f3eh                               ; e8 96 1c
     xor bx, bx                                ; 31 db
     mov dx, strict word 00065h                ; ba 65 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 5b 1c
+    call 02f02h                               ; e8 4f 1c
     xor bx, bx                                ; 31 db
     mov dx, strict word 00066h                ; ba 66 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 50 1c
-    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    call 02f02h                               ; e8 44 1c
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    jne short 012dfh                          ; 75 09
+    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    jne short 012d5h                          ; 75 09
     mov dx, strict word 00007h                ; ba 07 00
     mov ax, strict word 00006h                ; b8 06 00
-    call 00daah                               ; e8 cb fa
+    call 00daah                               ; e8 d5 fa
     xor bx, bx                                ; 31 db
-    jmp short 012e8h                          ; eb 05
+    jmp short 012deh                          ; eb 05
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jnc short 012f3h                          ; 73 0b
+    jnc short 012e9h                          ; 73 0b
     movzx ax, bl                              ; 0f b6 c3
     xor dx, dx                                ; 31 d2
-    call 00e4bh                               ; e8 5b fb
+    call 00e4bh                               ; e8 65 fb
     inc bx                                    ; 43
-    jmp short 012e3h                          ; eb f0
+    jmp short 012d9h                          ; eb f0
     xor ax, ax                                ; 31 c0
-    call 00ee9h                               ; e8 f1 fb
-    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    call 00ee9h                               ; e8 fb fb
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    jne short 01316h                          ; 75 10
+    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    jne short 0130ch                          ; 75 10
     xor bl, bl                                ; 30 db
     mov AL, strict byte 004h                  ; b0 04
@@ -2545,22 +2522,22 @@
     mov AH, strict byte 011h                  ; b4 11
     int 010h                                  ; cd 10
-    mov dx, 059afh                            ; ba af 59
+    mov dx, 059b2h                            ; ba b2 59
     mov ax, strict word 0001fh                ; b8 1f 00
-    call 00a00h                               ; e8 e1 f6
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    call 00a00h                               ; e8 eb f6
+    mov ax, word [bp-00ah]                    ; 8b 46 f6
     cmp ax, strict word 00010h                ; 3d 10 00
-    je short 01341h                           ; 74 1a
+    je short 01337h                           ; 74 1a
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    je short 0133ch                           ; 74 10
+    je short 01332h                           ; 74 10
     cmp ax, strict word 00008h                ; 3d 08 00
-    jne short 01346h                          ; 75 15
-    mov dx, 055afh                            ; ba af 55
+    jne short 0133ch                          ; 75 15
+    mov dx, 055b2h                            ; ba b2 55
     mov ax, strict word 00043h                ; b8 43 00
-    call 00a00h                               ; e8 c6 f6
-    jmp short 01346h                          ; eb 0a
-    mov dx, 05dafh                            ; ba af 5d
-    jmp short 01334h                          ; eb f3
-    mov dx, 06bafh                            ; ba af 6b
-    jmp short 01334h                          ; eb ee
+    call 00a00h                               ; e8 d0 f6
+    jmp short 0133ch                          ; eb 0a
+    mov dx, 05db2h                            ; ba b2 5d
+    jmp short 0132ah                          ; eb f3
+    mov dx, 06bb2h                            ; ba b2 6b
+    jmp short 0132ah                          ; eb ee
     leave                                     ; c9
     pop di                                    ; 5f
@@ -2570,5 +2547,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vgamem_copy_pl4_:                            ; 0xc134d LB 0x72
+vgamem_copy_pl4_:                            ; 0xc1343 LB 0x72
     push si                                   ; 56
     push di                                   ; 57
@@ -2593,5 +2570,5 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
-    jnc short 013b2h                          ; 73 29
+    jnc short 013a8h                          ; 73 29
     movzx cx, bh                              ; 0f b6 cf
     movzx si, bl                              ; 0f b6 f3
@@ -2605,5 +2582,5 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 013aeh                               ; e3 06
+    jcxz 013a4h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2612,5 +2589,5 @@
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 01384h                          ; eb d2
+    jmp short 0137ah                          ; eb d2
     mov ax, strict word 00005h                ; b8 05 00
     mov dx, 003ceh                            ; ba ce 03
@@ -2620,5 +2597,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-vgamem_fill_pl4_:                            ; 0xc13bf LB 0x5d
+vgamem_fill_pl4_:                            ; 0xc13b5 LB 0x5d
     push di                                   ; 57
     enter 00004h, 000h                        ; c8 04 00 00
@@ -2638,5 +2615,5 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+006h]                    ; 3a 5e 06
-    jnc short 01410h                          ; 73 22
+    jnc short 01406h                          ; 73 22
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
@@ -2648,9 +2625,9 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 0140ch                               ; e3 02
+    jcxz 01402h                               ; e3 02
     rep stosb                                 ; f3 aa
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 013e9h                          ; eb d9
+    jmp short 013dfh                          ; eb d9
     mov ax, strict word 00005h                ; b8 05 00
     mov dx, 003ceh                            ; ba ce 03
@@ -2659,5 +2636,5 @@
     pop di                                    ; 5f
     retn 00004h                               ; c2 04 00
-vgamem_copy_cga_:                            ; 0xc141c LB 0xa0
+vgamem_copy_cga_:                            ; 0xc1412 LB 0xa0
     push si                                   ; 56
     push di                                   ; 57
@@ -2681,7 +2658,7 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
-    jnc short 014b6h                          ; 73 61
+    jnc short 014ach                          ; 73 61
     test bl, 001h                             ; f6 c3 01
-    je short 0148bh                           ; 74 31
+    je short 01481h                           ; 74 31
     movzx cx, bh                              ; 0f b6 cf
     movzx si, bl                              ; 0f b6 f3
@@ -2698,10 +2675,10 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 01489h                               ; e3 06
+    jcxz 0147fh                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
     rep movsb                                 ; f3 a4
     pop DS                                    ; 1f
-    jmp short 014b2h                          ; eb 27
+    jmp short 014a8h                          ; eb 27
     movzx cx, bh                              ; 0f b6 cf
     movzx ax, bl                              ; 0f b6 c3
@@ -2716,5 +2693,5 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 014b2h                               ; e3 06
+    jcxz 014a8h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2723,10 +2700,10 @@
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 01450h                          ; eb 9a
+    jmp short 01446h                          ; eb 9a
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-vgamem_fill_cga_:                            ; 0xc14bc LB 0x86
+vgamem_fill_cga_:                            ; 0xc14b2 LB 0x86
     push si                                   ; 56
     push di                                   ; 57
@@ -2744,7 +2721,7 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+008h]                    ; 3a 5e 08
-    jnc short 0153ch                          ; 73 57
+    jnc short 01532h                          ; 73 57
     test bl, 001h                             ; f6 c3 01
-    je short 01519h                           ; 74 2f
+    je short 0150fh                           ; 74 2f
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
@@ -2761,7 +2738,7 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 01517h                               ; e3 02
+    jcxz 0150dh                               ; e3 02
     rep stosb                                 ; f3 aa
-    jmp short 01538h                          ; eb 1f
+    jmp short 0152eh                          ; eb 1f
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
@@ -2774,14 +2751,14 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 01538h                               ; e3 02
+    jcxz 0152eh                               ; e3 02
     rep stosb                                 ; f3 aa
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 014e0h                          ; eb a4
+    jmp short 014d6h                          ; eb a4
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-biosfn_scroll_:                              ; 0xc1542 LB 0x501
+biosfn_scroll_:                              ; 0xc1538 LB 0x501
     push si                                   ; 56
     push di                                   ; 57
@@ -2792,33 +2769,33 @@
     mov byte [bp-002h], cl                    ; 88 4e fe
     cmp bl, byte [bp+008h]                    ; 3a 5e 08
-    jnbe near 01a3dh                          ; 0f 87 e2 04
+    jnbe near 01a33h                          ; 0f 87 e2 04
     cmp cl, byte [bp+00ah]                    ; 3a 4e 0a
-    jnbe near 01a3dh                          ; 0f 87 db 04
+    jnbe near 01a33h                          ; 0f 87 db 04
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 9f 19
+    call 02ef4h                               ; e8 93 19
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 73 19
+    call 02ecdh                               ; e8 67 19
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01a3dh                            ; 0f 84 c4 04
+    je near 01a33h                            ; 0f 84 c4 04
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 88 19
+    call 02ef4h                               ; e8 7c 19
     movzx cx, al                              ; 0f b6 c8
     inc cx                                    ; 41
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 97 19
+    call 02f10h                               ; e8 8b 19
     mov word [bp-012h], ax                    ; 89 46 ee
     cmp byte [bp+00ch], 0ffh                  ; 80 7e 0c ff
-    jne short 015a4h                          ; 75 0c
+    jne short 0159ah                          ; 75 0c
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 69 19
+    call 02ef4h                               ; e8 5d 19
     mov byte [bp+00ch], al                    ; 88 46 0c
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, cx                                ; 39 c8
-    jc short 015b3h                           ; 72 07
+    jc short 015a9h                           ; 72 07
     mov al, cl                                ; 88 c8
     db  0feh, 0c8h
@@ -2827,5 +2804,5 @@
     movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jc short 015c4h                           ; 72 08
+    jc short 015bah                           ; 72 08
     mov al, byte [bp-012h]                    ; 8a 46 ee
     db  0feh, 0c8h
@@ -2834,5 +2811,5 @@
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     cmp ax, cx                                ; 39 c8
-    jbe short 015d0h                          ; 76 04
+    jbe short 015c6h                          ; 76 04
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     mov al, byte [bp+00ah]                    ; 8a 46 0a
@@ -2852,6 +2829,6 @@
     mov ax, word [bp-012h]                    ; 8b 46 ee
     imul ax, cx                               ; 0f af c1
-    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
-    jne near 0179fh                           ; 0f 85 9f 01
+    cmp byte [di+04833h], 000h                ; 80 bd 33 48 00
+    jne near 01795h                           ; 0f 85 9f 01
     mov dx, ax                                ; 89 c2
     add dx, ax                                ; 01 c2
@@ -2861,39 +2838,39 @@
     imul bx, dx                               ; 0f af da
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0164fh                          ; 75 3a
+    jne short 01645h                          ; 75 3a
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 0164fh                          ; 75 34
+    jne short 01645h                          ; 75 34
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 0164fh                          ; 75 2e
+    jne short 01645h                          ; 75 2e
     movzx dx, byte [bp+008h]                  ; 0f b6 56 08
     cmp dx, word [bp-016h]                    ; 3b 56 ea
-    jne short 0164fh                          ; 75 25
+    jne short 01645h                          ; 75 25
     movzx dx, byte [bp+00ah]                  ; 0f b6 56 0a
     cmp dx, word [bp-014h]                    ; 3b 56 ec
-    jne short 0164fh                          ; 75 1c
+    jne short 01645h                          ; 75 1c
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     sal dx, 008h                              ; c1 e2 08
     add dx, strict byte 00020h                ; 83 c2 20
-    mov es, [di+04833h]                       ; 8e 85 33 48
+    mov es, [di+04836h]                       ; 8e 85 36 48
     mov cx, ax                                ; 89 c1
     mov ax, dx                                ; 89 d0
     mov di, bx                                ; 89 df
     cld                                       ; fc
-    jcxz 0164ch                               ; e3 02
+    jcxz 01642h                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp near 01a3dh                           ; e9 ee 03
+    jmp near 01a33h                           ; e9 ee 03
     cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
-    jne near 016f4h                           ; 0f 85 9d 00
+    jne near 016eah                           ; 0f 85 9d 00
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     mov word [bp-010h], ax                    ; 89 46 f0
     movzx dx, byte [bp+008h]                  ; 0f b6 56 08
     cmp dx, word [bp-010h]                    ; 3b 56 f0
-    jc near 01a3dh                            ; 0f 82 d4 03
+    jc near 01a33h                            ; 0f 82 d4 03
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     add ax, word [bp-010h]                    ; 03 46 f0
     cmp ax, dx                                ; 39 d0
-    jnbe short 0167ah                         ; 77 06
+    jnbe short 01670h                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 016adh                          ; 75 33
+    jne short 016a3h                          ; 75 33
     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
@@ -2909,9 +2886,9 @@
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     sal si, 003h                              ; c1 e6 03
-    mov es, [si+04833h]                       ; 8e 84 33 48
+    mov es, [si+04836h]                       ; 8e 84 36 48
     cld                                       ; fc
-    jcxz 016abh                               ; e3 02
+    jcxz 016a1h                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp short 016eeh                          ; eb 41
+    jmp short 016e4h                          ; eb 41
     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     mov word [bp-018h], dx                    ; 89 56 e8
@@ -2923,5 +2900,5 @@
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     sal si, 003h                              ; c1 e6 03
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
+    mov ax, word [si+04836h]                  ; 8b 84 36 48
     mov si, word [bp-010h]                    ; 8b 76 f0
     imul si, word [bp-012h]                   ; 0f af 76 ee
@@ -2935,5 +2912,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 016eeh                               ; e3 06
+    jcxz 016e4h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2941,17 +2918,17 @@
     pop DS                                    ; 1f
     inc word [bp-010h]                        ; ff 46 f0
-    jmp near 0165eh                           ; e9 6a ff
+    jmp near 01654h                           ; e9 6a ff
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     mov word [bp-010h], ax                    ; 89 46 f0
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnbe near 01a3dh                          ; 0f 87 37 03
+    jnbe near 01a33h                          ; 0f 87 37 03
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     add ax, dx                                ; 01 d0
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnbe short 0171bh                         ; 77 06
+    jnbe short 01711h                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0174eh                          ; 75 33
+    jne short 01744h                          ; 75 33
     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
@@ -2967,9 +2944,9 @@
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     sal si, 003h                              ; c1 e6 03
-    mov es, [si+04833h]                       ; 8e 84 33 48
+    mov es, [si+04836h]                       ; 8e 84 36 48
     cld                                       ; fc
-    jcxz 0174ch                               ; e3 02
+    jcxz 01742h                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp short 0178eh                          ; eb 40
+    jmp short 01784h                          ; eb 40
     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
@@ -2982,5 +2959,5 @@
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     sal si, 003h                              ; c1 e6 03
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
+    mov ax, word [si+04836h]                  ; 8b 84 36 48
     mov si, word [bp-010h]                    ; 8b 76 f0
     imul si, word [bp-012h]                   ; 0f af 76 ee
@@ -2992,5 +2969,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 0178eh                               ; e3 06
+    jcxz 01784h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2999,35 +2976,35 @@
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc near 01a3dh                            ; 0f 82 a4 02
+    jc near 01a33h                            ; 0f 82 a4 02
     dec word [bp-010h]                        ; ff 4e f0
-    jmp near 016fbh                           ; e9 5c ff
-    movzx bx, byte [si+048afh]                ; 0f b6 9c af 48
+    jmp near 016f1h                           ; e9 5c ff
+    movzx bx, byte [si+048b2h]                ; 0f b6 9c b2 48
     sal bx, 006h                              ; c1 e3 06
-    mov dl, byte [bx+048c5h]                  ; 8a 97 c5 48
+    mov dl, byte [bx+048c8h]                  ; 8a 97 c8 48
     mov byte [bp-006h], dl                    ; 88 56 fa
-    mov bl, byte [di+04831h]                  ; 8a 9d 31 48
+    mov bl, byte [di+04834h]                  ; 8a 9d 34 48
     cmp bl, 004h                              ; 80 fb 04
-    je short 017c6h                           ; 74 0f
+    je short 017bch                           ; 74 0f
     cmp bl, 003h                              ; 80 fb 03
-    je short 017c6h                           ; 74 0a
+    je short 017bch                           ; 74 0a
     cmp bl, 002h                              ; 80 fb 02
-    je near 01905h                            ; 0f 84 42 01
-    jmp near 01a3dh                           ; e9 77 02
+    je near 018fbh                            ; 0f 84 42 01
+    jmp near 01a33h                           ; e9 77 02
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0181eh                          ; 75 52
+    jne short 01814h                          ; 75 52
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 0181eh                          ; 75 4c
+    jne short 01814h                          ; 75 4c
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 0181eh                          ; 75 46
+    jne short 01814h                          ; 75 46
     movzx dx, byte [bp+008h]                  ; 0f b6 56 08
     mov ax, cx                                ; 89 c8
     dec ax                                    ; 48
     cmp dx, ax                                ; 39 c2
-    jne short 0181eh                          ; 75 3b
+    jne short 01814h                          ; 75 3b
     movzx dx, byte [bp+00ah]                  ; 0f b6 56 0a
     mov ax, word [bp-012h]                    ; 8b 46 ee
     dec ax                                    ; 48
     cmp dx, ax                                ; 39 c2
-    jne short 0181eh                          ; 75 2f
+    jne short 01814h                          ; 75 2f
     mov ax, 00205h                            ; b8 05 02
     mov dx, 003ceh                            ; ba ce 03
@@ -3039,25 +3016,25 @@
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     sal bx, 003h                              ; c1 e3 03
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04836h]                       ; 8e 87 36 48
     xor di, di                                ; 31 ff
     cld                                       ; fc
-    jcxz 01817h                               ; e3 02
+    jcxz 0180dh                               ; e3 02
     rep stosb                                 ; f3 aa
     mov ax, strict word 00005h                ; b8 05 00
     out DX, ax                                ; ef
-    jmp near 01a3dh                           ; e9 1f 02
+    jmp near 01a33h                           ; e9 1f 02
     cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
-    jne short 0188dh                          ; 75 69
+    jne short 01883h                          ; 75 69
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     mov word [bp-010h], ax                    ; 89 46 f0
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc near 01a3dh                            ; 0f 82 07 02
+    jc near 01a33h                            ; 0f 82 07 02
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     add dx, word [bp-010h]                    ; 03 56 f0
     cmp dx, ax                                ; 39 c2
-    jnbe short 01847h                         ; 77 06
+    jnbe short 0183dh                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01866h                          ; 75 1f
+    jne short 0185ch                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -3068,6 +3045,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 013bfh                               ; e8 5b fb
-    jmp short 01888h                          ; eb 22
+    call 013b5h                               ; e8 5b fb
+    jmp short 0187eh                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -3080,19 +3057,19 @@
     movzx dx, al                              ; 0f b6 d0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 0134dh                               ; e8 c5 fa
+    call 01343h                               ; e8 c5 fa
     inc word [bp-010h]                        ; ff 46 f0
-    jmp short 0182bh                          ; eb 9e
+    jmp short 01821h                          ; eb 9e
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     mov word [bp-010h], ax                    ; 89 46 f0
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnbe near 01a3dh                          ; 0f 87 9e 01
+    jnbe near 01a33h                          ; 0f 87 9e 01
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     add ax, dx                                ; 01 d0
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnbe short 018b4h                         ; 77 06
+    jnbe short 018aah                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 018d3h                          ; 75 1f
+    jne short 018c9h                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -3103,6 +3080,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 013bfh                               ; e8 ee fa
-    jmp short 018f5h                          ; eb 22
+    call 013b5h                               ; e8 ee fa
+    jmp short 018ebh                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -3115,23 +3092,23 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 0134dh                               ; e8 58 fa
+    call 01343h                               ; e8 58 fa
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc near 01a3dh                            ; 0f 82 3d 01
+    jc near 01a33h                            ; 0f 82 3d 01
     dec word [bp-010h]                        ; ff 4e f0
-    jmp short 01894h                          ; eb 8f
-    mov dl, byte [di+04832h]                  ; 8a 95 32 48
+    jmp short 0188ah                          ; eb 8f
+    mov dl, byte [di+04835h]                  ; 8a 95 35 48
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0194ch                          ; 75 3d
+    jne short 01942h                          ; 75 3d
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 0194ch                          ; 75 37
+    jne short 01942h                          ; 75 37
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 0194ch                          ; 75 31
+    jne short 01942h                          ; 75 31
     movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
     cmp bx, word [bp-016h]                    ; 3b 5e ea
-    jne short 0194ch                          ; 75 28
+    jne short 01942h                          ; 75 28
     movzx bx, byte [bp+00ah]                  ; 0f b6 5e 0a
     cmp bx, word [bp-014h]                    ; 3b 5e ec
-    jne short 0194ch                          ; 75 1f
+    jne short 01942h                          ; 75 1f
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     imul ax, bx                               ; 0f af c3
@@ -3139,28 +3116,28 @@
     imul cx, ax                               ; 0f af c8
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    mov es, [di+04833h]                       ; 8e 85 33 48
+    mov es, [di+04836h]                       ; 8e 85 36 48
     xor di, di                                ; 31 ff
     cld                                       ; fc
-    jcxz 01949h                               ; e3 02
+    jcxz 0193fh                               ; e3 02
     rep stosb                                 ; f3 aa
-    jmp near 01a3dh                           ; e9 f1 00
+    jmp near 01a33h                           ; e9 f1 00
     cmp dl, 002h                              ; 80 fa 02
-    jne short 0195ah                          ; 75 09
+    jne short 01950h                          ; 75 09
     sal byte [bp-002h], 1                     ; d0 66 fe
     sal byte [bp-00eh], 1                     ; d0 66 f2
     sal word [bp-012h], 1                     ; d1 66 ee
     cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
-    jne short 019c9h                          ; 75 69
+    jne short 019bfh                          ; 75 69
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     mov word [bp-010h], ax                    ; 89 46 f0
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc near 01a3dh                            ; 0f 82 cb 00
+    jc near 01a33h                            ; 0f 82 cb 00
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     add dx, word [bp-010h]                    ; 03 56 f0
     cmp dx, ax                                ; 39 c2
-    jnbe short 01983h                         ; 77 06
+    jnbe short 01979h                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 019a2h                          ; 75 1f
+    jne short 01998h                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -3171,6 +3148,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 014bch                               ; e8 1c fb
-    jmp short 019c4h                          ; eb 22
+    call 014b2h                               ; e8 1c fb
+    jmp short 019bah                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -3183,19 +3160,19 @@
     movzx dx, al                              ; 0f b6 d0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 0141ch                               ; e8 58 fa
+    call 01412h                               ; e8 58 fa
     inc word [bp-010h]                        ; ff 46 f0
-    jmp short 01967h                          ; eb 9e
+    jmp short 0195dh                          ; eb 9e
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     mov word [bp-010h], ax                    ; 89 46 f0
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnbe short 01a3dh                         ; 77 64
+    jnbe short 01a33h                         ; 77 64
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     add ax, dx                                ; 01 d0
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnbe short 019eeh                         ; 77 06
+    jnbe short 019e4h                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01a0dh                          ; 75 1f
+    jne short 01a03h                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -3206,6 +3183,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 014bch                               ; e8 b1 fa
-    jmp short 01a2fh                          ; eb 22
+    call 014b2h                               ; e8 b1 fa
+    jmp short 01a25h                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -3218,15 +3195,15 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 0141ch                               ; e8 ed f9
+    call 01412h                               ; e8 ed f9
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc short 01a3dh                           ; 72 05
+    jc short 01a33h                           ; 72 05
     dec word [bp-010h]                        ; ff 4e f0
-    jmp short 019d0h                          ; eb 93
+    jmp short 019c6h                          ; eb 93
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00008h                               ; c2 08 00
-write_gfx_char_pl4_:                         ; 0xc1a43 LB 0xe6
+write_gfx_char_pl4_:                         ; 0xc1a39 LB 0xe6
     push si                                   ; 56
     push di                                   ; 57
@@ -3235,12 +3212,12 @@
     mov ah, bl                                ; 88 dc
     cmp byte [bp+00ah], 010h                  ; 80 7e 0a 10
-    je short 01a5fh                           ; 74 0b
+    je short 01a55h                           ; 74 0b
     cmp byte [bp+00ah], 00eh                  ; 80 7e 0a 0e
-    jne short 01a64h                          ; 75 0a
-    mov di, 05dafh                            ; bf af 5d
-    jmp short 01a67h                          ; eb 08
-    mov di, 06bafh                            ; bf af 6b
-    jmp short 01a67h                          ; eb 03
-    mov di, 055afh                            ; bf af 55
+    jne short 01a5ah                          ; 75 0a
+    mov di, 05db2h                            ; bf b2 5d
+    jmp short 01a5dh                          ; eb 08
+    mov di, 06bb2h                            ; bf b2 6b
+    jmp short 01a5dh                          ; eb 03
+    mov di, 055b2h                            ; bf b2 55
     movzx si, cl                              ; 0f b6 f1
     movzx bx, byte [bp+00ah]                  ; 0f b6 5e 0a
@@ -3261,13 +3238,13 @@
     out DX, ax                                ; ef
     test byte [bp-002h], 080h                 ; f6 46 fe 80
-    je short 01aa2h                           ; 74 06
+    je short 01a98h                           ; 74 06
     mov ax, 01803h                            ; b8 03 18
     out DX, ax                                ; ef
-    jmp short 01aa6h                          ; eb 04
+    jmp short 01a9ch                          ; eb 04
     mov ax, strict word 00003h                ; b8 03 00
     out DX, ax                                ; ef
     xor ch, ch                                ; 30 ed
     cmp ch, byte [bp+00ah]                    ; 3a 6e 0a
-    jnc short 01b14h                          ; 73 67
+    jnc short 01b0ah                          ; 73 67
     movzx si, ch                              ; 0f b6 f5
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
@@ -3275,12 +3252,12 @@
     add si, word [bp-00ah]                    ; 03 76 f6
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
-    jmp short 01ad3h                          ; eb 13
+    jmp short 01ac9h                          ; eb 13
     xor bx, bx                                ; 31 db
     mov dx, si                                ; 89 f2
     mov ax, 0a000h                            ; b8 00 a0
-    call 02f18h                               ; e8 4e 14
+    call 02f02h                               ; e8 42 14
     inc byte [bp-004h]                        ; fe 46 fc
     cmp byte [bp-004h], 008h                  ; 80 7e fc 08
-    jnc short 01b10h                          ; 73 3d
+    jnc short 01b06h                          ; 73 3d
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     mov cl, al                                ; 88 c1
@@ -3295,5 +3272,5 @@
     mov dx, si                                ; 89 f2
     mov ax, 0a000h                            ; b8 00 a0
-    call 02f0ah                               ; e8 16 14
+    call 02ef4h                               ; e8 0a 14
     movzx ax, ch                              ; 0f b6 c5
     add ax, word [bp-006h]                    ; 03 46 fa
@@ -3302,12 +3279,12 @@
     movzx ax, byte [bx]                       ; 0f b6 07
     test word [bp-008h], ax                   ; 85 46 f8
-    je short 01ac0h                           ; 74 ba
+    je short 01ab6h                           ; 74 ba
     mov al, byte [bp-002h]                    ; 8a 46 fe
     and AL, strict byte 00fh                  ; 24 0f
     movzx bx, al                              ; 0f b6 d8
-    jmp short 01ac2h                          ; eb b2
+    jmp short 01ab8h                          ; eb b2
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 01aa8h                          ; eb 94
+    jmp short 01a9eh                          ; eb 94
     mov ax, 0ff08h                            ; b8 08 ff
     mov dx, 003ceh                            ; ba ce 03
@@ -3321,10 +3298,10 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-write_gfx_char_cga_:                         ; 0xc1b29 LB 0x119
+write_gfx_char_cga_:                         ; 0xc1b1f LB 0x119
     push si                                   ; 56
     push di                                   ; 57
     enter 00008h, 000h                        ; c8 08 00 00
     mov byte [bp-004h], dl                    ; 88 56 fc
-    mov si, 055afh                            ; be af 55
+    mov si, 055b2h                            ; be b2 55
     xor bh, bh                                ; 30 ff
     movzx di, byte [bp+00ah]                  ; 0f b6 7e 0a
@@ -3337,8 +3314,8 @@
     sal di, 003h                              ; c1 e7 03
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
-    jmp near 01ba7h                           ; e9 50 00
+    jmp near 01b9dh                           ; e9 50 00
     xor al, al                                ; 30 c0
     xor ah, ah                                ; 30 e4
-    jmp short 01b68h                          ; eb 0b
+    jmp short 01b5eh                          ; eb 0b
     or al, bl                                 ; 08 d8
     shr ch, 1                                 ; d0 ed
@@ -3346,5 +3323,5 @@
     ; inc ah                                    ; fe c4
     cmp ah, 008h                              ; 80 fc 08
-    jnc short 01b90h                          ; 73 28
+    jnc short 01b86h                          ; 73 28
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     add bx, di                                ; 01 fb
@@ -3353,5 +3330,5 @@
     movzx dx, ch                              ; 0f b6 d5
     test bx, dx                               ; 85 d3
-    je short 01b5fh                           ; 74 e5
+    je short 01b55h                           ; 74 e5
     mov CL, strict byte 007h                  ; b1 07
     sub cl, ah                                ; 28 e1
@@ -3360,14 +3337,14 @@
     sal bl, CL                                ; d2 e3
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 01b5dh                           ; 74 d1
+    je short 01b53h                           ; 74 d1
     xor al, bl                                ; 30 d8
-    jmp short 01b5fh                          ; eb cf
+    jmp short 01b55h                          ; eb cf
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02f18h                               ; e8 7c 13
+    call 02f02h                               ; e8 70 13
     inc byte [bp-002h]                        ; fe 46 fe
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc near 01c3ch                           ; 0f 83 95 00
+    jnc near 01c32h                           ; 0f 83 95 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     sar ax, 1                                 ; d1 f8
@@ -3377,26 +3354,26 @@
     mov word [bp-006h], bx                    ; 89 5e fa
     test byte [bp-002h], 001h                 ; f6 46 fe 01
-    je short 01bc2h                           ; 74 04
+    je short 01bb8h                           ; 74 04
     add byte [bp-005h], 020h                  ; 80 46 fb 20
     mov CH, strict byte 080h                  ; b5 80
     cmp byte [bp+00ah], 001h                  ; 80 7e 0a 01
-    jne short 01bdbh                          ; 75 11
+    jne short 01bd1h                          ; 75 11
     test byte [bp-004h], ch                   ; 84 6e fc
-    je short 01b57h                           ; 74 88
+    je short 01b4dh                           ; 74 88
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02f0ah                               ; e8 32 13
-    jmp near 01b59h                           ; e9 7e ff
+    call 02ef4h                               ; e8 26 13
+    jmp near 01b4fh                           ; e9 7e ff
     test ch, ch                               ; 84 ed
-    jbe short 01b9ch                          ; 76 bd
+    jbe short 01b92h                          ; 76 bd
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 01bf0h                           ; 74 0b
+    je short 01be6h                           ; 74 0b
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02f0ah                               ; e8 1c 13
-    jmp short 01bf2h                          ; eb 02
+    call 02ef4h                               ; e8 10 13
+    jmp short 01be8h                          ; eb 02
     xor al, al                                ; 30 c0
     xor ah, ah                                ; 30 e4
-    jmp short 01c01h                          ; eb 0b
+    jmp short 01bf7h                          ; eb 0b
     or al, bl                                 ; 08 d8
     shr ch, 1                                 ; d0 ed
@@ -3404,5 +3381,5 @@
     ; inc ah                                    ; fe c4
     cmp ah, 004h                              ; 80 fc 04
-    jnc short 01c2bh                          ; 73 2a
+    jnc short 01c21h                          ; 73 2a
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     add bx, di                                ; 01 fb
@@ -3411,5 +3388,5 @@
     movzx bx, ch                              ; 0f b6 dd
     test bx, dx                               ; 85 d3
-    je short 01bf8h                           ; 74 e5
+    je short 01beeh                           ; 74 e5
     mov CL, strict byte 003h                  ; b1 03
     sub cl, ah                                ; 28 e1
@@ -3419,23 +3396,23 @@
     sal bl, CL                                ; d2 e3
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 01bf6h                           ; 74 cf
+    je short 01bech                           ; 74 cf
     xor al, bl                                ; 30 d8
-    jmp short 01bf8h                          ; eb cd
+    jmp short 01beeh                          ; eb cd
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02f18h                               ; e8 e1 12
+    call 02f02h                               ; e8 d5 12
     inc word [bp-006h]                        ; ff 46 fa
-    jmp short 01bdbh                          ; eb 9f
+    jmp short 01bd1h                          ; eb 9f
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-write_gfx_char_lin_:                         ; 0xc1c42 LB 0x8c
+write_gfx_char_lin_:                         ; 0xc1c38 LB 0x8c
     push si                                   ; 56
     push di                                   ; 57
     enter 00008h, 000h                        ; c8 08 00 00
     mov byte [bp-002h], dl                    ; 88 56 fe
-    mov di, 055afh                            ; bf af 55
+    mov di, 055b2h                            ; bf b2 55
     movzx dx, cl                              ; 0f b6 d1
     movzx cx, byte [bp+008h]                  ; 0f b6 4e 08
@@ -3449,7 +3426,7 @@
     sal si, 003h                              ; c1 e6 03
     xor cl, cl                                ; 30 c9
-    jmp short 01cabh                          ; eb 3b
+    jmp short 01ca1h                          ; eb 3b
     cmp ch, 008h                              ; 80 fd 08
-    jnc short 01ca4h                          ; 73 2f
+    jnc short 01c9ah                          ; 73 2f
     xor al, al                                ; 30 c0
     movzx dx, cl                              ; 0f b6 d1
@@ -3460,5 +3437,5 @@
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     test dx, bx                               ; 85 da
-    je short 01c8eh                           ; 74 03
+    je short 01c84h                           ; 74 03
     mov al, byte [bp-002h]                    ; 8a 46 fe
     movzx bx, al                              ; 0f b6 d8
@@ -3466,13 +3443,13 @@
     add dx, word [bp-006h]                    ; 03 56 fa
     mov ax, 0a000h                            ; b8 00 a0
-    call 02f18h                               ; e8 7b 12
+    call 02f02h                               ; e8 6f 12
     shr byte [bp-004h], 1                     ; d0 6e fc
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 01c70h                          ; eb cc
+    jmp short 01c66h                          ; eb cc
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     cmp cl, 008h                              ; 80 f9 08
-    jnc short 01cc8h                          ; 73 1d
+    jnc short 01cbeh                          ; 73 1d
     movzx bx, cl                              ; 0f b6 d9
     movzx dx, byte [bp+008h]                  ; 0f b6 56 08
@@ -3484,10 +3461,10 @@
     mov byte [bp-004h], 080h                  ; c6 46 fc 80
     xor ch, ch                                ; 30 ed
-    jmp short 01c75h                          ; eb ad
+    jmp short 01c6bh                          ; eb ad
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-biosfn_write_char_attr_:                     ; 0xc1cce LB 0x163
+biosfn_write_char_attr_:                     ; 0xc1cc4 LB 0x163
     push si                                   ; 56
     push di                                   ; 57
@@ -3499,15 +3476,15 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 22 12
+    call 02ef4h                               ; e8 16 12
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 f6 11
+    call 02ecdh                               ; e8 ea 11
     mov cl, al                                ; 88 c1
     mov byte [bp-002h], al                    ; 88 46 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01e2dh                            ; 0f 84 35 01
+    je near 01e23h                            ; 0f 84 35 01
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     lea bx, [bp-018h]                         ; 8d 5e e8
     lea dx, [bp-016h]                         ; 8d 56 ea
-    call 00a8ch                               ; e8 87 ed
+    call 00a8ch                               ; e8 91 ed
     mov al, byte [bp-018h]                    ; 8a 46 e8
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -3518,5 +3495,5 @@
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 eb 11
+    call 02ef4h                               ; e8 df 11
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
@@ -3524,11 +3501,11 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 f8 11
+    call 02f10h                               ; e8 ec 11
     mov word [bp-012h], ax                    ; 89 46 ee
     movzx bx, cl                              ; 0f b6 d9
     mov di, bx                                ; 89 df
     sal di, 003h                              ; c1 e7 03
-    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
-    jne short 01d87h                          ; 75 47
+    cmp byte [di+04833h], 000h                ; 80 bd 33 48 00
+    jne short 01d7dh                          ; 75 47
     mov bx, word [bp-014h]                    ; 8b 5e ec
     imul bx, ax                               ; 0f af d8
@@ -3550,37 +3527,37 @@
     mov word [bp-016h], ax                    ; 89 46 ea
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    mov es, [di+04833h]                       ; 8e 85 33 48
+    mov es, [di+04836h]                       ; 8e 85 36 48
     mov cx, si                                ; 89 f1
     mov di, dx                                ; 89 d7
     cld                                       ; fc
-    jcxz 01d84h                               ; e3 02
+    jcxz 01d7ah                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp near 01e2dh                           ; e9 a6 00
-    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
+    jmp near 01e23h                           ; e9 a6 00
+    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
     sal bx, 006h                              ; c1 e3 06
-    mov al, byte [bx+048c5h]                  ; 8a 87 c5 48
+    mov al, byte [bx+048c8h]                  ; 8a 87 c8 48
     mov byte [bp-004h], al                    ; 88 46 fc
-    mov al, byte [di+04832h]                  ; 8a 85 32 48
+    mov al, byte [di+04835h]                  ; 8a 85 35 48
     mov byte [bp-010h], al                    ; 88 46 f0
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je near 01e2dh                            ; 0f 84 88 00
+    je near 01e23h                            ; 0f 84 88 00
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc near 01e2dh                           ; 0f 83 7d 00
+    jnc near 01e23h                           ; 0f 83 7d 00
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     sal bx, 003h                              ; c1 e3 03
-    mov al, byte [bx+04831h]                  ; 8a 87 31 48
+    mov al, byte [bx+04834h]                  ; 8a 87 34 48
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 01dcbh                           ; 72 0c
-    jbe short 01dd1h                          ; 76 10
+    jc short 01dc1h                           ; 72 0c
+    jbe short 01dc7h                          ; 76 10
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 01e0fh                           ; 74 4a
+    je short 01e05h                           ; 74 4a
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 01dd1h                           ; 74 08
-    jmp short 01e27h                          ; eb 5c
+    je short 01dc7h                           ; 74 08
+    jmp short 01e1dh                          ; eb 5c
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 01df0h                           ; 74 21
-    jmp short 01e27h                          ; eb 56
+    je short 01de6h                           ; 74 21
+    jmp short 01e1dh                          ; eb 56
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
@@ -3591,6 +3568,6 @@
     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01a43h                               ; e8 55 fc
-    jmp short 01e27h                          ; eb 37
+    call 01a39h                               ; e8 55 fc
+    jmp short 01e1dh                          ; eb 37
     movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     push ax                                   ; 50
@@ -3601,6 +3578,6 @@
     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01b29h                               ; e8 1c fd
-    jmp short 01e27h                          ; eb 18
+    call 01b1fh                               ; e8 1c fd
+    jmp short 01e1dh                          ; eb 18
     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     push ax                                   ; 50
@@ -3609,12 +3586,12 @@
     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01c42h                               ; e8 1b fe
+    call 01c38h                               ; e8 1b fe
     inc byte [bp-008h]                        ; fe 46 f8
-    jmp near 01d9dh                           ; e9 70 ff
+    jmp near 01d93h                           ; e9 70 ff
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-biosfn_write_char_only_:                     ; 0xc1e31 LB 0x16a
+biosfn_write_char_only_:                     ; 0xc1e27 LB 0x16a
     push si                                   ; 56
     push di                                   ; 57
@@ -3626,15 +3603,15 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 bf 10
+    call 02ef4h                               ; e8 b3 10
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 93 10
+    call 02ecdh                               ; e8 87 10
     mov cl, al                                ; 88 c1
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01f97h                            ; 0f 84 3c 01
+    je near 01f8dh                            ; 0f 84 3c 01
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     lea bx, [bp-018h]                         ; 8d 5e e8
     lea dx, [bp-016h]                         ; 8d 56 ea
-    call 00a8ch                               ; e8 24 ec
+    call 00a8ch                               ; e8 2e ec
     mov al, byte [bp-018h]                    ; 8a 46 e8
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -3645,5 +3622,5 @@
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 88 10
+    call 02ef4h                               ; e8 7c 10
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
@@ -3651,11 +3628,11 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 95 10
+    call 02f10h                               ; e8 89 10
     mov word [bp-012h], ax                    ; 89 46 ee
     movzx di, cl                              ; 0f b6 f9
     mov bx, di                                ; 89 fb
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    jne short 01eedh                          ; 75 4a
+    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    jne short 01ee3h                          ; 75 4a
     mov dx, word [bp-014h]                    ; 8b 56 ec
     imul dx, ax                               ; 0f af d0
@@ -3674,42 +3651,42 @@
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je near 01f97h                            ; 0f 84 c6 00
+    je near 01f8dh                            ; 0f 84 c6 00
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     sal bx, 003h                              ; c1 e3 03
-    mov di, word [bx+04833h]                  ; 8b bf 33 48
+    mov di, word [bx+04836h]                  ; 8b bf 36 48
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, di                                ; 89 f8
-    call 02f18h                               ; e8 2f 10
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    jmp short 01ec9h                          ; eb dc
-    movzx di, byte [di+048afh]                ; 0f b6 bd af 48
+    call 02f02h                               ; e8 23 10
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    jmp short 01ebfh                          ; eb dc
+    movzx di, byte [di+048b2h]                ; 0f b6 bd b2 48
     sal di, 006h                              ; c1 e7 06
-    mov al, byte [di+048c5h]                  ; 8a 85 c5 48
+    mov al, byte [di+048c8h]                  ; 8a 85 c8 48
     mov byte [bp-006h], al                    ; 88 46 fa
-    mov al, byte [bx+04832h]                  ; 8a 87 32 48
+    mov al, byte [bx+04835h]                  ; 8a 87 35 48
     mov byte [bp-004h], al                    ; 88 46 fc
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je near 01f97h                            ; 0f 84 8c 00
+    je near 01f8dh                            ; 0f 84 8c 00
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc near 01f97h                           ; 0f 83 81 00
+    jnc near 01f8dh                           ; 0f 83 81 00
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     sal bx, 003h                              ; c1 e3 03
-    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
+    mov bl, byte [bx+04834h]                  ; 8a 9f 34 48
     cmp bl, 003h                              ; 80 fb 03
-    jc short 01f34h                           ; 72 0e
-    jbe short 01f3bh                          ; 76 13
+    jc short 01f2ah                           ; 72 0e
+    jbe short 01f31h                          ; 76 13
     cmp bl, 005h                              ; 80 fb 05
-    je short 01f79h                           ; 74 4c
+    je short 01f6fh                           ; 74 4c
     cmp bl, 004h                              ; 80 fb 04
-    je short 01f3bh                           ; 74 09
-    jmp short 01f91h                          ; eb 5d
+    je short 01f31h                           ; 74 09
+    jmp short 01f87h                          ; eb 5d
     cmp bl, 002h                              ; 80 fb 02
-    je short 01f5ah                           ; 74 21
-    jmp short 01f91h                          ; eb 56
+    je short 01f50h                           ; 74 21
+    jmp short 01f87h                          ; eb 56
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -3720,6 +3697,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 01a43h                               ; e8 eb fa
-    jmp short 01f91h                          ; eb 37
+    call 01a39h                               ; e8 eb fa
+    jmp short 01f87h                          ; eb 37
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
@@ -3730,6 +3707,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 01b29h                               ; e8 b2 fb
-    jmp short 01f91h                          ; eb 18
+    call 01b1fh                               ; e8 b2 fb
+    jmp short 01f87h                          ; eb 18
     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     push ax                                   ; 50
@@ -3738,12 +3715,12 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 01c42h                               ; e8 b1 fc
+    call 01c38h                               ; e8 b1 fc
     inc byte [bp-008h]                        ; fe 46 f8
-    jmp near 01f03h                           ; e9 6c ff
+    jmp near 01ef9h                           ; e9 6c ff
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-biosfn_write_pixel_:                         ; 0xc1f9b LB 0x168
+biosfn_write_pixel_:                         ; 0xc1f91 LB 0x168
     push si                                   ; 56
     enter 00008h, 000h                        ; c8 08 00 00
@@ -3752,27 +3729,27 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 5b 0f
+    call 02ef4h                               ; e8 4f 0f
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 2f 0f
+    call 02ecdh                               ; e8 23 0f
     mov byte [bp-002h], al                    ; 88 46 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 02100h                            ; 0f 84 43 01
+    je near 020f6h                            ; 0f 84 43 01
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    je near 02100h                            ; 0f 84 34 01
-    mov al, byte [bx+04831h]                  ; 8a 87 31 48
+    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    je near 020f6h                            ; 0f 84 34 01
+    mov al, byte [bx+04834h]                  ; 8a 87 34 48
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 01fe3h                           ; 72 0f
-    jbe short 01feah                          ; 76 14
+    jc short 01fd9h                           ; 72 0f
+    jbe short 01fe0h                          ; 76 14
     cmp AL, strict byte 005h                  ; 3c 05
-    je near 020deh                            ; 0f 84 02 01
+    je near 020d4h                            ; 0f 84 02 01
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 01feah                           ; 74 0a
+    je short 01fe0h                           ; 74 0a
     leave                                     ; c9
     pop si                                    ; 5e
     retn                                      ; c3
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0204fh                           ; 74 68
+    je short 02045h                           ; 74 68
     leave                                     ; c9
     pop si                                    ; 5e
@@ -3780,5 +3757,5 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 33 0f
+    call 02f10h                               ; e8 27 0f
     imul ax, cx                               ; 0f af c1
     mov bx, word [bp-008h]                    ; 8b 5e f8
@@ -3799,7 +3776,7 @@
     mov dx, bx                                ; 89 da
     mov ax, 0a000h                            ; b8 00 a0
-    call 02f0ah                               ; e8 e7 0e
+    call 02ef4h                               ; e8 db 0e
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 02030h                           ; 74 07
+    je short 02026h                           ; 74 07
     mov ax, 01803h                            ; b8 03 18
     mov dx, 003ceh                            ; ba ce 03
@@ -3808,5 +3785,5 @@
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0a000h                            ; b8 00 a0
-    call 02f18h                               ; e8 db 0e
+    call 02f02h                               ; e8 cf 0e
     mov ax, 0ff08h                            ; b8 08 ff
     mov dx, 003ceh                            ; ba ce 03
@@ -3822,9 +3799,9 @@
     shr ax, 1                                 ; d1 e8
     imul ax, ax, strict byte 00050h           ; 6b c0 50
-    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
-    jne short 02065h                          ; 75 08
+    cmp byte [bx+04835h], 002h                ; 80 bf 35 48 02
+    jne short 0205bh                          ; 75 08
     mov bx, word [bp-008h]                    ; 8b 5e f8
     shr bx, 002h                              ; c1 eb 02
-    jmp short 0206bh                          ; eb 06
+    jmp short 02061h                          ; eb 06
     mov bx, word [bp-008h]                    ; 8b 5e f8
     shr bx, 003h                              ; c1 eb 03
@@ -3832,14 +3809,14 @@
     mov word [bp-006h], bx                    ; 89 5e fa
     test cl, 001h                             ; f6 c1 01
-    je short 02079h                           ; 74 04
+    je short 0206fh                           ; 74 04
     add byte [bp-005h], 020h                  ; 80 46 fb 20
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02f0ah                               ; e8 88 0e
+    call 02ef4h                               ; e8 7c 0e
     mov bl, al                                ; 88 c3
     movzx si, byte [bp-002h]                  ; 0f b6 76 fe
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04832h], 002h                ; 80 bc 32 48 02
-    jne short 020abh                          ; 75 19
+    cmp byte [si+04835h], 002h                ; 80 bc 35 48 02
+    jne short 020a1h                          ; 75 19
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 003h                  ; 24 03
@@ -3852,5 +3829,5 @@
     sal bh, CL                                ; d2 e7
     mov AL, strict byte 003h                  ; b0 03
-    jmp short 020beh                          ; eb 13
+    jmp short 020b4h                          ; eb 13
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 007h                  ; 24 07
@@ -3863,7 +3840,7 @@
     sal al, CL                                ; d2 e0
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 020cah                           ; 74 04
+    je short 020c0h                           ; 74 04
     xor bl, bh                                ; 30 fb
-    jmp short 020d0h                          ; eb 06
+    jmp short 020c6h                          ; eb 06
     not al                                    ; f6 d0
     and bl, al                                ; 20 c3
@@ -3872,5 +3849,5 @@
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02f18h                               ; e8 3d 0e
+    call 02f02h                               ; e8 31 0e
     leave                                     ; c9
     pop si                                    ; 5e
@@ -3878,5 +3855,5 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 3f 0e
+    call 02f10h                               ; e8 33 0e
     sal ax, 003h                              ; c1 e0 03
     imul cx, ax                               ; 0f af c8
@@ -3887,9 +3864,9 @@
     mov dx, ax                                ; 89 c2
     mov ax, 0a000h                            ; b8 00 a0
-    jmp short 020d8h                          ; eb d8
+    jmp short 020ceh                          ; eb d8
     leave                                     ; c9
     pop si                                    ; 5e
     retn                                      ; c3
-biosfn_write_teletype_:                      ; 0xc2103 LB 0x27f
+biosfn_write_teletype_:                      ; 0xc20f9 LB 0x27f
     push si                                   ; 56
     enter 00016h, 000h                        ; c8 16 00 00
@@ -3899,21 +3876,21 @@
     mov byte [bp-00eh], cl                    ; 88 4e f2
     cmp dl, 0ffh                              ; 80 fa ff
-    jne short 02125h                          ; 75 0c
+    jne short 0211bh                          ; 75 0c
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 e8 0d
+    call 02ef4h                               ; e8 dc 0d
     mov byte [bp-002h], al                    ; 88 46 fe
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 dc 0d
+    call 02ef4h                               ; e8 d0 0d
     xor ah, ah                                ; 30 e4
-    call 02ee3h                               ; e8 b0 0d
+    call 02ecdh                               ; e8 a4 0d
     mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 0237fh                            ; 0f 84 43 02
+    je near 02375h                            ; 0f 84 43 02
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     lea bx, [bp-016h]                         ; 8d 5e ea
     lea dx, [bp-014h]                         ; 8d 56 ec
-    call 00a8ch                               ; e8 43 e9
+    call 00a8ch                               ; e8 4d e9
     mov al, byte [bp-016h]                    ; 8a 46 ea
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -3924,5 +3901,5 @@
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 a7 0d
+    call 02ef4h                               ; e8 9b 0d
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
@@ -3930,28 +3907,28 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 b4 0d
+    call 02f10h                               ; e8 a8 0d
     mov word [bp-010h], ax                    ; 89 46 f0
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     cmp AL, strict byte 009h                  ; 3c 09
-    jc short 02188h                           ; 72 0c
-    jbe short 021afh                          ; 76 31
+    jc short 0217eh                           ; 72 0c
+    jbe short 021a5h                          ; 76 31
     cmp AL, strict byte 00dh                  ; 3c 0d
-    je short 021a2h                           ; 74 20
+    je short 02198h                           ; 74 20
     cmp AL, strict byte 00ah                  ; 3c 0a
-    je short 021a9h                           ; 74 23
-    jmp short 021f0h                          ; eb 68
+    je short 0219fh                           ; 74 23
+    jmp short 021e6h                          ; eb 68
     cmp AL, strict byte 008h                  ; 3c 08
-    je short 02194h                           ; 74 08
+    je short 0218ah                           ; 74 08
     cmp AL, strict byte 007h                  ; 3c 07
-    je near 022cch                            ; 0f 84 3a 01
-    jmp short 021f0h                          ; eb 5c
+    je near 022c2h                            ; 0f 84 3a 01
+    jmp short 021e6h                          ; eb 5c
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jbe near 022cch                           ; 0f 86 30 01
+    jbe near 022c2h                           ; 0f 86 30 01
     dec byte [bp-006h]                        ; fe 4e fa
-    jmp near 022cch                           ; e9 2a 01
+    jmp near 022c2h                           ; e9 2a 01
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
-    jmp near 022cch                           ; e9 23 01
+    jmp near 022c2h                           ; e9 23 01
     inc byte [bp-008h]                        ; fe 46 f8
-    jmp near 022cch                           ; e9 1d 01
+    jmp near 022c2h                           ; e9 1d 01
     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
@@ -3959,9 +3936,9 @@
     mov dx, si                                ; 89 f2
     mov ax, strict word 00020h                ; b8 20 00
-    call 02103h                               ; e8 40 ff
+    call 020f9h                               ; e8 40 ff
     lea bx, [bp-016h]                         ; 8d 5e ea
     lea dx, [bp-014h]                         ; 8d 56 ec
     mov ax, si                                ; 89 f0
-    call 00a8ch                               ; e8 be e8
+    call 00a8ch                               ; e8 c8 e8
     mov al, byte [bp-016h]                    ; 8a 46 ea
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -3975,11 +3952,11 @@
     idiv bx                                   ; f7 fb
     test dx, dx                               ; 85 d2
-    je short 021afh                           ; 74 c2
-    jmp near 022cch                           ; e9 dc 00
+    je short 021a5h                           ; 74 c2
+    jmp near 022c2h                           ; e9 dc 00
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
-    jne short 0224bh                          ; 75 4b
+    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
+    jne short 02241h                          ; 75 4b
     mov ax, word [bp-010h]                    ; 8b 46 f0
     imul ax, word [bp-012h]                   ; 0f af 46 ee
@@ -3996,31 +3973,31 @@
     add cx, dx                                ; 01 d1
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
-    mov dx, cx                                ; 89 ca
-    call 02f18h                               ; e8 e6 0c
+    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    mov dx, cx                                ; 89 ca
+    call 02f02h                               ; e8 da 0c
     cmp byte [bp-00eh], 003h                  ; 80 7e f2 03
-    jne near 022c9h                           ; 0f 85 8f 00
+    jne near 022bfh                           ; 0f 85 8f 00
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     mov dx, cx                                ; 89 ca
     inc dx                                    ; 42
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
-    call 02f18h                               ; e8 d0 0c
-    jmp near 022c9h                           ; e9 7e 00
-    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
+    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    call 02f02h                               ; e8 c4 0c
+    jmp near 022bfh                           ; e9 7e 00
+    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
     sal bx, 006h                              ; c1 e3 06
-    mov ah, byte [bx+048c5h]                  ; 8a a7 c5 48
-    mov dl, byte [si+04832h]                  ; 8a 94 32 48
-    mov al, byte [si+04831h]                  ; 8a 84 31 48
+    mov ah, byte [bx+048c8h]                  ; 8a a7 c8 48
+    mov dl, byte [si+04835h]                  ; 8a 94 35 48
+    mov al, byte [si+04834h]                  ; 8a 84 34 48
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 0226fh                           ; 72 0c
-    jbe short 02275h                          ; 76 10
+    jc short 02265h                           ; 72 0c
+    jbe short 0226bh                          ; 76 10
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 022b1h                           ; 74 48
+    je short 022a7h                           ; 74 48
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 02275h                           ; 74 08
-    jmp short 022c9h                          ; eb 5a
+    je short 0226bh                           ; 74 08
+    jmp short 022bfh                          ; eb 5a
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 02293h                           ; 74 20
-    jmp short 022c9h                          ; eb 54
+    je short 02289h                           ; 74 20
+    jmp short 022bfh                          ; eb 54
     movzx ax, ah                              ; 0f b6 c4
     push ax                                   ; 50
@@ -4031,6 +4008,6 @@
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01a43h                               ; e8 b2 f7
-    jmp short 022c9h                          ; eb 36
+    call 01a39h                               ; e8 b2 f7
+    jmp short 022bfh                          ; eb 36
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -4041,6 +4018,6 @@
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01b29h                               ; e8 7a f8
-    jmp short 022c9h                          ; eb 18
+    call 01b1fh                               ; e8 7a f8
+    jmp short 022bfh                          ; eb 18
     movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     push ax                                   ; 50
@@ -4049,14 +4026,14 @@
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01c42h                               ; e8 79 f9
+    call 01c38h                               ; e8 79 f9
     inc byte [bp-006h]                        ; fe 46 fa
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jne short 022dch                          ; 75 07
+    jne short 022d2h                          ; 75 07
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     inc byte [bp-008h]                        ; fe 46 f8
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jne near 02363h                           ; 0f 85 7c 00
+    jne near 02359h                           ; 0f 85 7c 00
     movzx si, byte [bp-00ch]                  ; 0f b6 76 f4
     sal si, 003h                              ; c1 e6 03
@@ -4067,6 +4044,6 @@
     db  0feh, 0cfh
     ; dec bh                                    ; fe cf
-    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
-    jne short 02345h                          ; 75 46
+    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
+    jne short 0233bh                          ; 75 46
     mov ax, word [bp-010h]                    ; 8b 46 f0
     imul ax, word [bp-012h]                   ; 0f af 46 ee
@@ -4084,6 +4061,6 @@
     add dx, cx                                ; 01 ca
     inc dx                                    ; 42
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
-    call 02f0ah                               ; e8 dd 0b
+    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    call 02ef4h                               ; e8 d1 0b
     push strict byte 00001h                   ; 6a 01
     movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
@@ -4096,5 +4073,5 @@
     xor cx, cx                                ; 31 c9
     xor bx, bx                                ; 31 db
-    jmp short 0235ah                          ; eb 15
+    jmp short 02350h                          ; eb 15
     push strict byte 00001h                   ; 6a 01
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
@@ -4108,5 +4085,5 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 01542h                               ; e8 e2 f1
+    call 01538h                               ; e8 e2 f1
     dec byte [bp-008h]                        ; fe 4e f8
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
@@ -4117,9 +4094,9 @@
     mov dx, word [bp-016h]                    ; 8b 56 ea
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 00e4bh                               ; e8 cc ea
+    call 00e4bh                               ; e8 d6 ea
     leave                                     ; c9
     pop si                                    ; 5e
     retn                                      ; c3
-get_font_access_:                            ; 0xc2382 LB 0x29
+get_font_access_:                            ; 0xc2378 LB 0x29
     push dx                                   ; 52
     push bp                                   ; 55
@@ -4144,5 +4121,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-release_font_access_:                        ; 0xc23ab LB 0x39
+release_font_access_:                        ; 0xc23a1 LB 0x39
     push dx                                   ; 52
     push bp                                   ; 55
@@ -4175,5 +4152,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-set_scan_lines_:                             ; 0xc23e4 LB 0xbc
+set_scan_lines_:                             ; 0xc23da LB 0xbc
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4186,5 +4163,5 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 2f 0b
+    call 02f10h                               ; e8 23 0b
     mov dx, ax                                ; 89 c2
     mov si, ax                                ; 89 c6
@@ -4203,8 +4180,8 @@
     out DX, AL                                ; ee
     cmp bl, 008h                              ; 80 fb 08
-    jne short 0241bh                          ; 75 08
+    jne short 02411h                          ; 75 08
     mov dx, strict word 00007h                ; ba 07 00
     mov ax, strict word 00006h                ; b8 06 00
-    jmp short 02428h                          ; eb 0d
+    jmp short 0241eh                          ; eb 0d
     mov al, bl                                ; 88 d8
     sub AL, strict byte 003h                  ; 2c 03
@@ -4213,10 +4190,10 @@
     sub AL, strict byte 004h                  ; 2c 04
     xor ah, ah                                ; 30 e4
-    call 00daah                               ; e8 7f e9
+    call 00daah                               ; e8 89 e9
     movzx di, bl                              ; 0f b6 fb
     mov bx, di                                ; 89 fb
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 fb 0a
+    call 02f1eh                               ; e8 ef 0a
     mov AL, strict byte 012h                  ; b0 12
     mov dx, si                                ; 89 f2
@@ -4253,8 +4230,8 @@
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 9b 0a
+    call 02f02h                               ; e8 8f 0a
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 a0 0a
+    call 02f10h                               ; e8 94 0a
     movzx dx, cl                              ; 0f b6 d1
     mov bx, ax                                ; 89 c3
@@ -4263,5 +4240,5 @@
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 9b 0a
+    call 02f1eh                               ; e8 8f 0a
     pop bp                                    ; 5d
     pop di                                    ; 5f
@@ -4271,5 +4248,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_text_user_pat_:                  ; 0xc24a0 LB 0x78
+biosfn_load_text_user_pat_:                  ; 0xc2496 LB 0x78
     push si                                   ; 56
     push di                                   ; 57
@@ -4279,5 +4256,5 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     mov word [bp-006h], cx                    ; 89 4e fa
-    call 02382h                               ; e8 cd fe
+    call 02378h                               ; e8 cd fe
     mov al, byte [bp+00ah]                    ; 8a 46 0a
     and AL, strict byte 003h                  ; 24 03
@@ -4293,5 +4270,5 @@
     xor bx, bx                                ; 31 db
     cmp bx, word [bp-006h]                    ; 3b 5e fa
-    jnc short 02502h                          ; 73 2b
+    jnc short 024f8h                          ; 73 2b
     movzx cx, byte [bp+00ch]                  ; 0f b6 4e 0c
     mov si, bx                                ; 89 de
@@ -4306,5 +4283,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 024ffh                               ; e3 06
+    jcxz 024f5h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4312,15 +4289,15 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 024d2h                          ; eb d0
-    call 023abh                               ; e8 a6 fe
+    jmp short 024c8h                          ; eb d0
+    call 023a1h                               ; e8 a6 fe
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 02512h                           ; 72 07
+    jc short 02508h                           ; 72 07
     movzx ax, byte [bp+00ch]                  ; 0f b6 46 0c
-    call 023e4h                               ; e8 d2 fe
+    call 023dah                               ; e8 d2 fe
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00006h                               ; c2 06 00
-biosfn_load_text_8_14_pat_:                  ; 0xc2518 LB 0x6c
+biosfn_load_text_8_14_pat_:                  ; 0xc250e LB 0x6c
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4329,5 +4306,5 @@
     enter 00004h, 000h                        ; c8 04 00 00
     mov byte [bp-002h], al                    ; 88 46 fe
-    call 02382h                               ; e8 5c fe
+    call 02378h                               ; e8 5c fe
     mov al, dl                                ; 88 d0
     and AL, strict byte 003h                  ; 24 03
@@ -4342,12 +4319,12 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 02549h                          ; eb 06
+    jmp short 0253fh                          ; eb 06
     cmp bx, 00100h                            ; 81 fb 00 01
-    jnc short 0256fh                          ; 73 26
+    jnc short 02565h                          ; 73 26
     imul si, bx, strict byte 0000eh           ; 6b f3 0e
     mov di, bx                                ; 89 df
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-004h]                    ; 03 7e fc
-    add si, 05dafh                            ; 81 c6 af 5d
+    add si, 05db2h                            ; 81 c6 b2 5d
     mov cx, strict word 0000eh                ; b9 0e 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4355,5 +4332,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 0256ch                               ; e3 06
+    jcxz 02562h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4361,10 +4338,10 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 02543h                          ; eb d4
-    call 023abh                               ; e8 39 fe
+    jmp short 02539h                          ; eb d4
+    call 023a1h                               ; e8 39 fe
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 0257eh                           ; 72 06
+    jc short 02574h                           ; 72 06
     mov ax, strict word 0000eh                ; b8 0e 00
-    call 023e4h                               ; e8 66 fe
+    call 023dah                               ; e8 66 fe
     leave                                     ; c9
     pop di                                    ; 5f
@@ -4373,5 +4350,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_text_8_8_pat_:                   ; 0xc2584 LB 0x6e
+biosfn_load_text_8_8_pat_:                   ; 0xc257a LB 0x6e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4380,5 +4357,5 @@
     enter 00004h, 000h                        ; c8 04 00 00
     mov byte [bp-002h], al                    ; 88 46 fe
-    call 02382h                               ; e8 f0 fd
+    call 02378h                               ; e8 f0 fd
     mov al, dl                                ; 88 d0
     and AL, strict byte 003h                  ; 24 03
@@ -4393,7 +4370,7 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 025b5h                          ; eb 06
+    jmp short 025abh                          ; eb 06
     cmp bx, 00100h                            ; 81 fb 00 01
-    jnc short 025ddh                          ; 73 28
+    jnc short 025d3h                          ; 73 28
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
@@ -4401,5 +4378,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-004h]                    ; 03 7e fc
-    add si, 055afh                            ; 81 c6 af 55
+    add si, 055b2h                            ; 81 c6 b2 55
     mov cx, strict word 00008h                ; b9 08 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4407,5 +4384,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 025dah                               ; e3 06
+    jcxz 025d0h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4413,10 +4390,10 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 025afh                          ; eb d2
-    call 023abh                               ; e8 cb fd
+    jmp short 025a5h                          ; eb d2
+    call 023a1h                               ; e8 cb fd
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 025ech                           ; 72 06
+    jc short 025e2h                           ; 72 06
     mov ax, strict word 00008h                ; b8 08 00
-    call 023e4h                               ; e8 f8 fd
+    call 023dah                               ; e8 f8 fd
     leave                                     ; c9
     pop di                                    ; 5f
@@ -4425,5 +4402,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_text_8_16_pat_:                  ; 0xc25f2 LB 0x6e
+biosfn_load_text_8_16_pat_:                  ; 0xc25e8 LB 0x6e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4432,5 +4409,5 @@
     enter 00004h, 000h                        ; c8 04 00 00
     mov byte [bp-002h], al                    ; 88 46 fe
-    call 02382h                               ; e8 82 fd
+    call 02378h                               ; e8 82 fd
     mov al, dl                                ; 88 d0
     and AL, strict byte 003h                  ; 24 03
@@ -4445,7 +4422,7 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 02623h                          ; eb 06
+    jmp short 02619h                          ; eb 06
     cmp bx, 00100h                            ; 81 fb 00 01
-    jnc short 0264bh                          ; 73 28
+    jnc short 02641h                          ; 73 28
     mov si, bx                                ; 89 de
     sal si, 004h                              ; c1 e6 04
@@ -4453,5 +4430,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-004h]                    ; 03 7e fc
-    add si, 06bafh                            ; 81 c6 af 6b
+    add si, 06bb2h                            ; 81 c6 b2 6b
     mov cx, strict word 00010h                ; b9 10 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4459,5 +4436,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 02648h                               ; e3 06
+    jcxz 0263eh                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4465,10 +4442,10 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 0261dh                          ; eb d2
-    call 023abh                               ; e8 5d fd
+    jmp short 02613h                          ; eb d2
+    call 023a1h                               ; e8 5d fd
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 0265ah                           ; 72 06
+    jc short 02650h                           ; 72 06
     mov ax, strict word 00010h                ; b8 10 00
-    call 023e4h                               ; e8 8a fd
+    call 023dah                               ; e8 8a fd
     leave                                     ; c9
     pop di                                    ; 5f
@@ -4477,45 +4454,45 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_gfx_8_8_chars_:                  ; 0xc2660 LB 0x5
+biosfn_load_gfx_8_8_chars_:                  ; 0xc2656 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_load_gfx_user_chars_:                 ; 0xc2665 LB 0x7
+biosfn_load_gfx_user_chars_:                 ; 0xc265b LB 0x7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-biosfn_load_gfx_8_14_chars_:                 ; 0xc266c LB 0x5
+biosfn_load_gfx_8_14_chars_:                 ; 0xc2662 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2671 LB 0x5
+biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2667 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_load_gfx_8_16_chars_:                 ; 0xc2676 LB 0x5
+biosfn_load_gfx_8_16_chars_:                 ; 0xc266c LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_alternate_prtsc_:                     ; 0xc267b LB 0x5
+biosfn_alternate_prtsc_:                     ; 0xc2671 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_switch_video_interface_:              ; 0xc2680 LB 0x5
+biosfn_switch_video_interface_:              ; 0xc2676 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_enable_video_refresh_control_:        ; 0xc2685 LB 0x5
+biosfn_enable_video_refresh_control_:        ; 0xc267b LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_write_string_:                        ; 0xc268a LB 0x97
+biosfn_write_string_:                        ; 0xc2680 LB 0x97
     push si                                   ; 56
     push di                                   ; 57
@@ -4529,7 +4506,7 @@
     lea bx, [bp-00ah]                         ; 8d 5e f6
     lea dx, [bp-008h]                         ; 8d 56 f8
-    call 00a8ch                               ; e8 e2 e3
+    call 00a8ch                               ; e8 ec e3
     cmp byte [bp+008h], 0ffh                  ; 80 7e 08 ff
-    jne short 026c1h                          ; 75 11
+    jne short 026b7h                          ; 75 11
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     mov byte [bp+00ah], al                    ; 88 46 0a
@@ -4543,19 +4520,19 @@
     add dx, ax                                ; 01 c2
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
-    call 00e4bh                               ; e8 76 e7
+    call 00e4bh                               ; e8 80 e7
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 0270bh                           ; 74 30
+    je short 02701h                           ; 74 30
     mov dx, di                                ; 89 fa
     inc di                                    ; 47
     mov ax, word [bp+00ch]                    ; 8b 46 0c
-    call 02f0ah                               ; e8 26 08
+    call 02ef4h                               ; e8 1a 08
     mov cl, al                                ; 88 c1
     test byte [bp-006h], 002h                 ; f6 46 fa 02
-    je short 026f8h                           ; 74 0c
+    je short 026eeh                           ; 74 0c
     mov dx, di                                ; 89 fa
     inc di                                    ; 47
     mov ax, word [bp+00ch]                    ; 8b 46 0c
-    call 02f0ah                               ; e8 15 08
+    call 02ef4h                               ; e8 09 08
     mov byte [bp-002h], al                    ; 88 46 fe
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
@@ -4563,16 +4540,16 @@
     movzx ax, cl                              ; 0f b6 c1
     mov cx, strict word 00003h                ; b9 03 00
-    call 02103h                               ; e8 fa f9
-    jmp short 026d5h                          ; eb ca
+    call 020f9h                               ; e8 fa f9
+    jmp short 026cbh                          ; eb ca
     test byte [bp-006h], 001h                 ; f6 46 fa 01
-    jne short 0271bh                          ; 75 0a
+    jne short 02711h                          ; 75 0a
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
-    call 00e4bh                               ; e8 30 e7
+    call 00e4bh                               ; e8 3a e7
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00008h                               ; c2 08 00
-biosfn_read_state_info_:                     ; 0xc2721 LB 0x10a
+biosfn_read_state_info_:                     ; 0xc2717 LB 0xfe
     push cx                                   ; 51
     push si                                   ; 56
@@ -4582,14 +4559,9 @@
     push dx                                   ; 52
     push bx                                   ; 53
-    mov bx, 05583h                            ; bb 83 55
+    mov cx, ds                                ; 8c d9
+    mov bx, 05586h                            ; bb 86 55
     mov dx, word [bp-004h]                    ; 8b 56 fc
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f34h                               ; e8 ff 07
-    mov dx, word [bp-004h]                    ; 8b 56 fc
-    inc dx                                    ; 42
-    inc dx                                    ; 42
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f34h                               ; e8 f1 07
+    call 02f3eh                               ; e8 11 08
     mov di, word [bp-004h]                    ; 8b 7e fc
     add di, strict byte 00004h                ; 83 c7 04
@@ -4599,5 +4571,5 @@
     mov es, [bp-002h]                         ; 8e 46 fe
     cld                                       ; fc
-    jcxz 0275eh                               ; e3 06
+    jcxz 02748h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4611,5 +4583,5 @@
     mov es, [bp-002h]                         ; 8e 46 fe
     cld                                       ; fc
-    jcxz 02779h                               ; e3 06
+    jcxz 02763h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4618,55 +4590,55 @@
     mov dx, 0008ah                            ; ba 8a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 88 07
+    call 02ef4h                               ; e8 88 07
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 00025h                ; 83 c2 25
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 87 07
+    call 02f02h                               ; e8 87 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 00026h                ; 83 c2 26
     xor bx, bx                                ; 31 db
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 79 07
+    call 02f02h                               ; e8 79 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 00027h                ; 83 c2 27
     mov bx, strict word 00010h                ; bb 10 00
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 6a 07
+    call 02f02h                               ; e8 6a 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 00028h                ; 83 c2 28
     xor bx, bx                                ; 31 db
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 5c 07
+    call 02f02h                               ; e8 5c 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 00029h                ; 83 c2 29
     mov bx, strict word 00008h                ; bb 08 00
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 4d 07
+    call 02f02h                               ; e8 4d 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 0002ah                ; 83 c2 2a
     mov bx, strict word 00002h                ; bb 02 00
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 3e 07
+    call 02f02h                               ; e8 3e 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 0002bh                ; 83 c2 2b
     xor bx, bx                                ; 31 db
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 30 07
+    call 02f02h                               ; e8 30 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 0002ch                ; 83 c2 2c
     xor bx, bx                                ; 31 db
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 22 07
+    call 02f02h                               ; e8 22 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 00031h                ; 83 c2 31
     mov bx, strict word 00003h                ; bb 03 00
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 13 07
+    call 02f02h                               ; e8 13 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, strict byte 00032h                ; 83 c2 32
     xor bx, bx                                ; 31 db
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02f18h                               ; e8 05 07
+    call 02f02h                               ; e8 05 07
     mov di, word [bp-004h]                    ; 8b 7e fc
     add di, strict byte 00033h                ; 83 c7 33
@@ -4675,5 +4647,5 @@
     mov es, [bp-002h]                         ; 8e 46 fe
     cld                                       ; fc
-    jcxz 02826h                               ; e3 02
+    jcxz 02810h                               ; e3 02
     rep stosb                                 ; f3 aa
     leave                                     ; c9
@@ -4682,5 +4654,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-biosfn_read_video_state_size2_:              ; 0xc282b LB 0x23
+biosfn_read_video_state_size2_:              ; 0xc2815 LB 0x23
     push dx                                   ; 52
     push bp                                   ; 55
@@ -4689,26 +4661,26 @@
     xor ax, ax                                ; 31 c0
     test dl, 001h                             ; f6 c2 01
-    je short 0283bh                           ; 74 03
+    je short 02825h                           ; 74 03
     mov ax, strict word 00046h                ; b8 46 00
     test dl, 002h                             ; f6 c2 02
-    je short 02843h                           ; 74 03
+    je short 0282dh                           ; 74 03
     add ax, strict word 0002ah                ; 05 2a 00
     test dl, 004h                             ; f6 c2 04
-    je short 0284bh                           ; 74 03
+    je short 02835h                           ; 74 03
     add ax, 00304h                            ; 05 04 03
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     retn                                      ; c3
-vga_get_video_state_size_:                   ; 0xc284e LB 0xf
+vga_get_video_state_size_:                   ; 0xc2838 LB 0xf
     push bx                                   ; 53
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov bx, dx                                ; 89 d3
-    call 0282bh                               ; e8 d4 ff
+    call 02815h                               ; e8 d4 ff
     mov word [ss:bx], ax                      ; 36 89 07
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_save_video_state_:                    ; 0xc285d LB 0x365
+biosfn_save_video_state_:                    ; 0xc2847 LB 0x365
     push cx                                   ; 51
     push si                                   ; 56
@@ -4720,8 +4692,8 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 b4 06
+    call 02f10h                               ; e8 b4 06
     mov di, ax                                ; 89 c7
     test byte [bp-006h], 001h                 ; f6 46 fa 01
-    je near 029dfh                            ; 0f 84 63 01
+    je near 029c9h                            ; 0f 84 63 01
     mov dx, 003c4h                            ; ba c4 03
     in AL, DX                                 ; ec
@@ -4731,5 +4703,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 8c 06
+    call 02f02h                               ; e8 8c 06
     inc cx                                    ; 41
     mov dx, di                                ; 89 fa
@@ -4740,5 +4712,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 7c 06
+    call 02f02h                               ; e8 7c 06
     inc cx                                    ; 41
     mov dx, 003ceh                            ; ba ce 03
@@ -4749,5 +4721,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 6b 06
+    call 02f02h                               ; e8 6b 06
     inc cx                                    ; 41
     mov dx, 003dah                            ; ba da 03
@@ -4763,5 +4735,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 50 06
+    call 02f02h                               ; e8 50 06
     inc cx                                    ; 41
     mov dx, 003cah                            ; ba ca 03
@@ -4772,11 +4744,11 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 3f 06
+    call 02f02h                               ; e8 3f 06
     mov ax, strict word 00001h                ; b8 01 00
     mov word [bp-004h], ax                    ; 89 46 fc
     add cx, ax                                ; 01 c1
-    jmp short 028e9h                          ; eb 06
+    jmp short 028d3h                          ; eb 06
     cmp word [bp-004h], strict byte 00004h    ; 83 7e fc 04
-    jnbe short 02906h                         ; 77 1d
+    jnbe short 028f0h                         ; 77 1d
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov dx, 003c4h                            ; ba c4 03
@@ -4789,8 +4761,8 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 18 06
+    call 02f02h                               ; e8 18 06
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 028e3h                          ; eb dd
+    jmp short 028cdh                          ; eb dd
     xor al, al                                ; 30 c0
     mov dx, 003c4h                            ; ba c4 03
@@ -4803,10 +4775,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 fc 05
+    call 02f02h                               ; e8 fc 05
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
     inc cx                                    ; 41
-    jmp short 0292ah                          ; eb 06
+    jmp short 02914h                          ; eb 06
     cmp word [bp-004h], strict byte 00018h    ; 83 7e fc 18
-    jnbe short 02946h                         ; 77 1c
+    jnbe short 02930h                         ; 77 1c
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov dx, di                                ; 89 fa
@@ -4819,12 +4791,12 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 d8 05
+    call 02f02h                               ; e8 d8 05
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02924h                          ; eb de
+    jmp short 0290eh                          ; eb de
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
-    jmp short 02953h                          ; eb 06
+    jmp short 0293dh                          ; eb 06
     cmp word [bp-004h], strict byte 00013h    ; 83 7e fc 13
-    jnbe short 0297ch                         ; 77 29
+    jnbe short 02966h                         ; 77 29
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -4843,8 +4815,8 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 a2 05
+    call 02f02h                               ; e8 a2 05
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 0294dh                          ; eb d1
+    jmp short 02937h                          ; eb d1
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -4852,7 +4824,7 @@
     ; sub ah, ah                                ; 2a e4
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
-    jmp short 0298fh                          ; eb 06
+    jmp short 02979h                          ; eb 06
     cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
-    jnbe short 029ach                         ; 77 1d
+    jnbe short 02996h                         ; 77 1d
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov dx, 003ceh                            ; ba ce 03
@@ -4865,12 +4837,12 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 72 05
+    call 02f02h                               ; e8 72 05
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02989h                          ; eb dd
+    jmp short 02973h                          ; eb dd
     mov bx, di                                ; 89 fb
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 7f 05
+    call 02f1eh                               ; e8 7f 05
     inc cx                                    ; 41
     inc cx                                    ; 41
@@ -4878,180 +4850,180 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 58 05
+    call 02f02h                               ; e8 58 05
     inc cx                                    ; 41
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 4e 05
+    call 02f02h                               ; e8 4e 05
     inc cx                                    ; 41
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 44 05
+    call 02f02h                               ; e8 44 05
     inc cx                                    ; 41
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 3a 05
+    call 02f02h                               ; e8 3a 05
     inc cx                                    ; 41
     test byte [bp-006h], 002h                 ; f6 46 fa 02
-    je near 02b4eh                            ; 0f 84 67 01
+    je near 02b38h                            ; 0f 84 67 01
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 1a 05
+    call 02ef4h                               ; e8 1a 05
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 1e 05
+    call 02f02h                               ; e8 1e 05
     inc cx                                    ; 41
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 22 05
+    call 02f10h                               ; e8 22 05
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 27 05
+    call 02f1eh                               ; e8 27 05
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 0e 05
+    call 02f10h                               ; e8 0e 05
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 13 05
+    call 02f1eh                               ; e8 13 05
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 fa 04
+    call 02f10h                               ; e8 fa 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 ff 04
+    call 02f1eh                               ; e8 ff 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 ca 04
+    call 02ef4h                               ; e8 ca 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 ce 04
+    call 02f02h                               ; e8 ce 04
     inc cx                                    ; 41
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 d2 04
+    call 02f10h                               ; e8 d2 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 d7 04
+    call 02f1eh                               ; e8 d7 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 a2 04
+    call 02ef4h                               ; e8 a2 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 a6 04
+    call 02f02h                               ; e8 a6 04
     inc cx                                    ; 41
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 8e 04
+    call 02ef4h                               ; e8 8e 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 92 04
+    call 02f02h                               ; e8 92 04
     inc cx                                    ; 41
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 7a 04
+    call 02ef4h                               ; e8 7a 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 7e 04
+    call 02f02h                               ; e8 7e 04
     inc cx                                    ; 41
     mov dx, strict word 00060h                ; ba 60 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 82 04
+    call 02f10h                               ; e8 82 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 87 04
+    call 02f1eh                               ; e8 87 04
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
     inc cx                                    ; 41
     inc cx                                    ; 41
-    jmp short 02abch                          ; eb 06
+    jmp short 02aa6h                          ; eb 06
     cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
-    jnc short 02adah                          ; 73 1e
+    jnc short 02ac4h                          ; 73 1e
     mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, dx                                ; 01 d2
     add dx, strict byte 00050h                ; 83 c2 50
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 5c 04
+    call 02f10h                               ; e8 5c 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 61 04
+    call 02f1eh                               ; e8 61 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02ab6h                          ; eb dc
+    jmp short 02aa0h                          ; eb dc
     mov dx, strict word 0004eh                ; ba 4e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f26h                               ; e8 43 04
+    call 02f10h                               ; e8 43 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 48 04
+    call 02f1eh                               ; e8 48 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f0ah                               ; e8 13 04
+    call 02ef4h                               ; e8 13 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 17 04
+    call 02f02h                               ; e8 17 04
     inc cx                                    ; 41
     mov dx, strict word 0007ch                ; ba 7c 00
     xor ax, ax                                ; 31 c0
-    call 02f26h                               ; e8 1c 04
+    call 02f10h                               ; e8 1c 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 21 04
+    call 02f1eh                               ; e8 21 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, strict word 0007eh                ; ba 7e 00
     xor ax, ax                                ; 31 c0
-    call 02f26h                               ; e8 09 04
+    call 02f10h                               ; e8 09 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 0e 04
+    call 02f1eh                               ; e8 0e 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 0010ch                            ; ba 0c 01
     xor ax, ax                                ; 31 c0
-    call 02f26h                               ; e8 f6 03
+    call 02f10h                               ; e8 f6 03
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 fb 03
+    call 02f1eh                               ; e8 fb 03
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 0010eh                            ; ba 0e 01
     xor ax, ax                                ; 31 c0
-    call 02f26h                               ; e8 e3 03
+    call 02f10h                               ; e8 e3 03
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 e8 03
+    call 02f1eh                               ; e8 e8 03
     inc cx                                    ; 41
     inc cx                                    ; 41
     test byte [bp-006h], 004h                 ; f6 46 fa 04
-    je short 02bbbh                           ; 74 67
+    je short 02ba5h                           ; 74 67
     mov dx, 003c7h                            ; ba c7 03
     in AL, DX                                 ; ec
@@ -5061,5 +5033,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 b4 03
+    call 02f02h                               ; e8 b4 03
     inc cx                                    ; 41
     mov dx, 003c8h                            ; ba c8 03
@@ -5070,5 +5042,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 a3 03
+    call 02f02h                               ; e8 a3 03
     inc cx                                    ; 41
     mov dx, 003c6h                            ; ba c6 03
@@ -5079,5 +5051,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 92 03
+    call 02f02h                               ; e8 92 03
     inc cx                                    ; 41
     xor al, al                                ; 30 c0
@@ -5086,7 +5058,7 @@
     xor ah, ah                                ; 30 e4
     mov word [bp-004h], ax                    ; 89 46 fc
-    jmp short 02b9bh                          ; eb 07
+    jmp short 02b85h                          ; eb 07
     cmp word [bp-004h], 00300h                ; 81 7e fc 00 03
-    jnc short 02bb1h                          ; 73 16
+    jnc short 02b9bh                          ; 73 16
     mov dx, 003c9h                            ; ba c9 03
     in AL, DX                                 ; ec
@@ -5096,12 +5068,12 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 6d 03
+    call 02f02h                               ; e8 6d 03
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02b94h                          ; eb e3
+    jmp short 02b7eh                          ; eb e3
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 5e 03
+    call 02f02h                               ; e8 5e 03
     inc cx                                    ; 41
     mov ax, cx                                ; 89 c8
@@ -5111,5 +5083,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-biosfn_restore_video_state_:                 ; 0xc2bc2 LB 0x321
+biosfn_restore_video_state_:                 ; 0xc2bac LB 0x321
     push cx                                   ; 51
     push si                                   ; 56
@@ -5120,5 +5092,5 @@
     mov cx, bx                                ; 89 d9
     test byte [bp-008h], 001h                 ; f6 46 f8 01
-    je near 02d20h                            ; 0f 84 4a 01
+    je near 02d0ah                            ; 0f 84 4a 01
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -5127,11 +5099,11 @@
     lea dx, [bx+040h]                         ; 8d 57 40
     mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 42 03
+    call 02f10h                               ; e8 42 03
     mov di, ax                                ; 89 c7
     mov word [bp-002h], strict word 00001h    ; c7 46 fe 01 00
     lea cx, [bx+005h]                         ; 8d 4f 05
-    jmp short 02bf6h                          ; eb 06
+    jmp short 02be0h                          ; eb 06
     cmp word [bp-002h], strict byte 00004h    ; 83 7e fe 04
-    jnbe short 02c0eh                         ; 77 18
+    jnbe short 02bf8h                         ; 77 18
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, 003c4h                            ; ba c4 03
@@ -5139,10 +5111,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 06 03
+    call 02ef4h                               ; e8 06 03
     mov dx, 003c5h                            ; ba c5 03
     out DX, AL                                ; ee
     inc cx                                    ; 41
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02bf0h                          ; eb e2
+    jmp short 02bdah                          ; eb e2
     xor al, al                                ; 30 c0
     mov dx, 003c4h                            ; ba c4 03
@@ -5150,5 +5122,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 ef 02
+    call 02ef4h                               ; e8 ef 02
     mov dx, 003c5h                            ; ba c5 03
     out DX, AL                                ; ee
@@ -5158,9 +5130,9 @@
     out DX, ax                                ; ef
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
-    jmp short 02c33h                          ; eb 06
+    jmp short 02c1dh                          ; eb 06
     cmp word [bp-002h], strict byte 00018h    ; 83 7e fe 18
-    jnbe short 02c50h                         ; 77 1d
+    jnbe short 02c3ah                         ; 77 1d
     cmp word [bp-002h], strict byte 00011h    ; 83 7e fe 11
-    je short 02c4ah                           ; 74 11
+    je short 02c34h                           ; 74 11
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, di                                ; 89 fa
@@ -5168,10 +5140,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 c4 02
+    call 02ef4h                               ; e8 c4 02
     lea dx, [di+001h]                         ; 8d 55 01
     out DX, AL                                ; ee
     inc cx                                    ; 41
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02c2dh                          ; eb dd
+    jmp short 02c17h                          ; eb dd
     mov dx, 003cch                            ; ba cc 03
     in AL, DX                                 ; ec
@@ -5181,5 +5153,5 @@
     mov word [bp-004h], ax                    ; 89 46 fc
     cmp di, 003d4h                            ; 81 ff d4 03
-    jne short 02c65h                          ; 75 04
+    jne short 02c4fh                          ; 75 04
     or byte [bp-004h], 001h                   ; 80 4e fc 01
     mov al, byte [bp-004h]                    ; 8a 46 fc
@@ -5192,10 +5164,10 @@
     add dx, strict byte 0fff9h                ; 83 c2 f9
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 8f 02
+    call 02ef4h                               ; e8 8f 02
     lea dx, [di+001h]                         ; 8d 55 01
     out DX, AL                                ; ee
     lea dx, [bx+003h]                         ; 8d 57 03
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 83 02
+    call 02ef4h                               ; e8 83 02
     xor ah, ah                                ; 30 e4
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -5205,7 +5177,7 @@
     ; sub ah, ah                                ; 2a e4
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
-    jmp short 02c9fh                          ; eb 06
+    jmp short 02c89h                          ; eb 06
     cmp word [bp-002h], strict byte 00013h    ; 83 7e fe 13
-    jnbe short 02cbdh                         ; 77 1e
+    jnbe short 02ca7h                         ; 77 1e
     mov ax, word [bp-006h]                    ; 8b 46 fa
     and ax, strict word 00020h                ; 25 20 00
@@ -5215,10 +5187,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 57 02
+    call 02ef4h                               ; e8 57 02
     mov dx, 003c0h                            ; ba c0 03
     out DX, AL                                ; ee
     inc cx                                    ; 41
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02c99h                          ; eb dc
+    jmp short 02c83h                          ; eb dc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov dx, 003c0h                            ; ba c0 03
@@ -5229,7 +5201,7 @@
     ; sub ah, ah                                ; 2a e4
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
-    jmp short 02cd7h                          ; eb 06
+    jmp short 02cc1h                          ; eb 06
     cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
-    jnbe short 02cefh                         ; 77 18
+    jnbe short 02cd9h                         ; 77 18
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, 003ceh                            ; ba ce 03
@@ -5237,14 +5209,14 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 25 02
+    call 02ef4h                               ; e8 25 02
     mov dx, 003cfh                            ; ba cf 03
     out DX, AL                                ; ee
     inc cx                                    ; 41
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02cd1h                          ; eb e2
+    jmp short 02cbbh                          ; eb e2
     add cx, strict byte 00006h                ; 83 c1 06
     mov dx, bx                                ; 89 da
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 11 02
+    call 02ef4h                               ; e8 11 02
     mov dx, 003c4h                            ; ba c4 03
     out DX, AL                                ; ee
@@ -5252,5 +5224,5 @@
     mov dx, bx                                ; 89 da
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 05 02
+    call 02ef4h                               ; e8 05 02
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
@@ -5258,106 +5230,106 @@
     mov dx, bx                                ; 89 da
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 fa 01
+    call 02ef4h                               ; e8 fa 01
     mov dx, 003ceh                            ; ba ce 03
     out DX, AL                                ; ee
     lea dx, [bx+002h]                         ; 8d 57 02
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 ee 01
+    call 02ef4h                               ; e8 ee 01
     lea dx, [di+006h]                         ; 8d 55 06
     out DX, AL                                ; ee
     test byte [bp-008h], 002h                 ; f6 46 f8 02
-    je near 02e8fh                            ; 0f 84 67 01
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 db 01
+    je near 02e79h                            ; 0f 84 67 01
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 db 01
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 dd 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 e3 01
+    call 02f02h                               ; e8 dd 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 e3 01
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 e6 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 cf 01
+    call 02f1eh                               ; e8 e6 01
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 cf 01
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 d2 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 bb 01
+    call 02f1eh                               ; e8 d2 01
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 bb 01
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 be 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 8b 01
+    call 02f1eh                               ; e8 be 01
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 8b 01
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 8d 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 93 01
+    call 02f02h                               ; e8 8d 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 93 01
     mov bx, ax                                ; 89 c3
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 96 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 63 01
+    call 02f1eh                               ; e8 96 01
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 63 01
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 65 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 4f 01
+    call 02f02h                               ; e8 65 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 4f 01
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 51 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 3b 01
+    call 02f02h                               ; e8 51 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 3b 01
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 3d 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 43 01
+    call 02f02h                               ; e8 3d 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 43 01
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00060h                ; ba 60 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 46 01
+    call 02f1eh                               ; e8 46 01
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
     inc cx                                    ; 41
     inc cx                                    ; 41
-    jmp short 02dfdh                          ; eb 06
+    jmp short 02de7h                          ; eb 06
     cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
-    jnc short 02e1bh                          ; 73 1e
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 22 01
+    jnc short 02e05h                          ; 73 1e
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 22 01
     mov bx, ax                                ; 89 c3
     mov dx, word [bp-002h]                    ; 8b 56 fe
@@ -5365,68 +5337,68 @@
     add dx, strict byte 00050h                ; 83 c2 50
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 20 01
+    call 02f1eh                               ; e8 20 01
     inc cx                                    ; 41
     inc cx                                    ; 41
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02df7h                          ; eb dc
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 04 01
+    jmp short 02de1h                          ; eb dc
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 04 01
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0004eh                ; ba 4e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 07 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 d4 00
+    call 02f1eh                               ; e8 07 01
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 d4 00
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 d6 00
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 dc 00
+    call 02f02h                               ; e8 d6 00
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 dc 00
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0007ch                ; ba 7c 00
     xor ax, ax                                ; 31 c0
-    call 02f34h                               ; e8 e0 00
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 c9 00
+    call 02f1eh                               ; e8 e0 00
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 c9 00
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0007eh                ; ba 7e 00
     xor ax, ax                                ; 31 c0
-    call 02f34h                               ; e8 cd 00
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 b6 00
+    call 02f1eh                               ; e8 cd 00
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 b6 00
     mov bx, ax                                ; 89 c3
     mov dx, 0010ch                            ; ba 0c 01
     xor ax, ax                                ; 31 c0
-    call 02f34h                               ; e8 ba 00
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f26h                               ; e8 a3 00
+    call 02f1eh                               ; e8 ba 00
+    inc cx                                    ; 41
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f10h                               ; e8 a3 00
     mov bx, ax                                ; 89 c3
     mov dx, 0010eh                            ; ba 0e 01
     xor ax, ax                                ; 31 c0
-    call 02f34h                               ; e8 a7 00
+    call 02f1eh                               ; e8 a7 00
     inc cx                                    ; 41
     inc cx                                    ; 41
     test byte [bp-008h], 004h                 ; f6 46 f8 04
-    je short 02edch                           ; 74 47
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 6d 00
+    je short 02ec6h                           ; 74 47
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 6d 00
     xor ah, ah                                ; 30 e4
     mov word [bp-004h], ax                    ; 89 46 fc
@@ -5434,5 +5406,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 60 00
+    call 02ef4h                               ; e8 60 00
     mov dx, 003c6h                            ; ba c6 03
     out DX, AL                                ; ee
@@ -5443,15 +5415,15 @@
     xor ah, ah                                ; 30 e4
     mov word [bp-002h], ax                    ; 89 46 fe
-    jmp short 02ec3h                          ; eb 07
+    jmp short 02eadh                          ; eb 07
     cmp word [bp-002h], 00300h                ; 81 7e fe 00 03
-    jnc short 02ed4h                          ; 73 11
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 40 00
+    jnc short 02ebeh                          ; 73 11
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02ef4h                               ; e8 40 00
     mov dx, 003c9h                            ; ba c9 03
     out DX, AL                                ; ee
     inc cx                                    ; 41
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02ebch                          ; eb e8
+    jmp short 02ea6h                          ; eb e8
     inc cx                                    ; 41
     mov al, byte [bp-004h]                    ; 8a 46 fc
@@ -5464,5 +5436,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-find_vga_entry_:                             ; 0xc2ee3 LB 0x27
+find_vga_entry_:                             ; 0xc2ecd LB 0x27
     push bx                                   ; 53
     push dx                                   ; 52
@@ -5472,13 +5444,13 @@
     mov AH, strict byte 0ffh                  ; b4 ff
     xor al, al                                ; 30 c0
-    jmp short 02ef6h                          ; eb 06
+    jmp short 02ee0h                          ; eb 06
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     cmp AL, strict byte 00fh                  ; 3c 0f
-    jnbe short 02f04h                         ; 77 0e
+    jnbe short 02eeeh                         ; 77 0e
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp dl, byte [bx+0482fh]                  ; 3a 97 2f 48
-    jne short 02ef0h                          ; 75 ee
+    cmp dl, byte [bx+04832h]                  ; 3a 97 32 48
+    jne short 02edah                          ; 75 ee
     mov ah, al                                ; 88 c4
     mov al, ah                                ; 88 e0
@@ -5487,5 +5459,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-read_byte_:                                  ; 0xc2f0a LB 0xe
+read_byte_:                                  ; 0xc2ef4 LB 0xe
     push bx                                   ; 53
     push bp                                   ; 55
@@ -5497,5 +5469,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-write_byte_:                                 ; 0xc2f18 LB 0xe
+write_byte_:                                 ; 0xc2f02 LB 0xe
     push si                                   ; 56
     push bp                                   ; 55
@@ -5507,5 +5479,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-read_word_:                                  ; 0xc2f26 LB 0xe
+read_word_:                                  ; 0xc2f10 LB 0xe
     push bx                                   ; 53
     push bp                                   ; 55
@@ -5517,5 +5489,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-write_word_:                                 ; 0xc2f34 LB 0xe
+write_word_:                                 ; 0xc2f1e LB 0xe
     push si                                   ; 56
     push bp                                   ; 55
@@ -5527,5 +5499,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-read_dword_:                                 ; 0xc2f42 LB 0x12
+read_dword_:                                 ; 0xc2f2c LB 0x12
     push bx                                   ; 53
     push bp                                   ; 55
@@ -5538,5 +5510,16 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-printf_:                                     ; 0xc2f54 LB 0x108
+write_dword_:                                ; 0xc2f3e LB 0x12
+    push si                                   ; 56
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    mov si, dx                                ; 89 d6
+    mov es, ax                                ; 8e c0
+    mov word [es:si], bx                      ; 26 89 1c
+    mov word [es:si+002h], cx                 ; 26 89 4c 02
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+printf_:                                     ; 0xc2f50 LB 0x108
     push bx                                   ; 53
     push cx                                   ; 51
@@ -5551,23 +5534,23 @@
     mov al, byte [di]                         ; 8a 05
     test al, al                               ; 84 c0
-    je near 02fe8h                            ; 0f 84 79 00
+    je near 02fe4h                            ; 0f 84 79 00
     cmp AL, strict byte 025h                  ; 3c 25
-    jne short 02f7ah                          ; 75 07
+    jne short 02f76h                          ; 75 07
     mov cx, strict word 00001h                ; b9 01 00
     xor bx, bx                                ; 31 db
-    jmp short 02fe2h                          ; eb 68
+    jmp short 02fdeh                          ; eb 68
     test cx, cx                               ; 85 c9
-    je short 02fdeh                           ; 74 60
+    je short 02fdah                           ; 74 60
     cmp AL, strict byte 030h                  ; 3c 30
-    jc short 02f92h                           ; 72 10
+    jc short 02f8eh                           ; 72 10
     cmp AL, strict byte 039h                  ; 3c 39
-    jnbe short 02f92h                         ; 77 0c
+    jnbe short 02f8eh                         ; 77 0c
     xor ah, ah                                ; 30 e4
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
     sub ax, strict word 00030h                ; 2d 30 00
     add bx, ax                                ; 01 c3
-    jmp short 02fe2h                          ; eb 50
+    jmp short 02fdeh                          ; eb 50
     cmp AL, strict byte 078h                  ; 3c 78
-    jne short 02fe2h                          ; 75 4c
+    jne short 02fdeh                          ; 75 4c
     inc si                                    ; 46
     inc si                                    ; 46
@@ -5575,10 +5558,10 @@
     mov word [bp-004h], ax                    ; 89 46 fc
     test bx, bx                               ; 85 db
-    jne short 02fa5h                          ; 75 03
+    jne short 02fa1h                          ; 75 03
     mov bx, strict word 00004h                ; bb 04 00
     lea di, [bx-001h]                         ; 8d 7f ff
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
     cmp bx, word [bp-002h]                    ; 3b 5e fe
-    jbe short 02fdah                          ; 76 28
+    jbe short 02fd6h                          ; 76 28
     mov cx, di                                ; 89 f9
     sal cx, 002h                              ; c1 e1 02
@@ -5587,9 +5570,9 @@
     and ax, strict word 0000fh                ; 25 0f 00
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 02fcdh                         ; 77 09
+    jnbe short 02fc9h                         ; 77 09
     add ax, strict word 00030h                ; 05 30 00
     mov dx, 00504h                            ; ba 04 05
     out DX, AL                                ; ee
-    jmp short 02fd4h                          ; eb 07
+    jmp short 02fd0h                          ; eb 07
     add ax, strict word 00037h                ; 05 37 00
     mov dx, 00504h                            ; ba 04 05
@@ -5597,11 +5580,11 @@
     dec di                                    ; 4f
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02fadh                          ; eb d3
+    jmp short 02fa9h                          ; eb d3
     xor cx, cx                                ; 31 c9
-    jmp short 02fe2h                          ; eb 04
+    jmp short 02fdeh                          ; eb 04
     mov dx, 00504h                            ; ba 04 05
     out DX, AL                                ; ee
     inc word [bp+00eh]                        ; ff 46 0e
-    jmp near 02f64h                           ; e9 7c ff
+    jmp near 02f60h                           ; e9 7c ff
     leave                                     ; c9
     pop di                                    ; 5f
@@ -5622,27 +5605,25 @@
     add ax, 00304h                            ; 05 04 03
     add al, byte [bx+di]                      ; 02 01
-    add byte [bx], bl                         ; 00 1f
-    xor AL, strict byte 08ah                  ; 34 8a
-    xor al, cl                                ; 30 c8
-    xor ah, bl                                ; 30 dc
-    xor ch, ch                                ; 30 ed
-    xor byte [bx+di], al                      ; 30 01
-    xor word [bp+si], dx                      ; 31 12
-    xor word [si], bx                         ; 31 1c
-    xor word [bp+031h], dx                    ; 31 56 31
-    pop dx                                    ; 5a
-    xor word [bp+di+031h], bp                 ; 31 6b 31
-    mov byte [bx+di], dh                      ; 88 31
-    movsw                                     ; a5
-    xor bp, ax                                ; 31 c5
-    xor dx, sp                                ; 31 e2
-    xor cx, di                                ; 31 f9
-    xor word [di], ax                         ; 31 05
-    db  032h, 0e0h
-    ; xor ah, al                                ; 32 e0
-    xor bl, byte [bp+di]                      ; 32 1b
-    xor cx, word [bp+di+033h]                 ; 33 4b 33
-    pushaw                                    ; 60
-    xor sp, word [bp+si+03033h]               ; 33 a2 33 30
+    add byte [bp+di], bl                      ; 00 1b
+    xor AL, strict byte 086h                  ; 34 86
+    xor ah, al                                ; 30 c4
+    xor al, bl                                ; 30 d8
+    xor cl, ch                                ; 30 e9
+    xor ch, bh                                ; 30 fd
+    xor byte [01831h], cl                     ; 30 0e 31 18
+    xor word [bp+si+031h], dx                 ; 31 52 31
+    push si                                   ; 56
+    xor word [bx+031h], sp                    ; 31 67 31
+    test byte [bx+di], dh                     ; 84 31
+    mov ax, word [0c131h]                     ; a1 31 c1
+    xor si, bx                                ; 31 de
+    xor bp, si                                ; 31 f5
+    xor word [bx+di], ax                      ; 31 01
+    db  032h, 0dch
+    ; xor bl, ah                                ; 32 dc
+    xor dl, byte [bx]                         ; 32 17
+    xor ax, word [bx+033h]                    ; 33 47 33
+    pop sp                                    ; 5c
+    xor bx, word [bp+03033h]                  ; 33 9e 33 30
     and AL, strict byte 023h                  ; 24 23
     and ah, byte [bx+di]                      ; 22 21
@@ -5651,20 +5632,19 @@
     adc byte [si], al                         ; 10 04
     add al, byte [bx+di]                      ; 02 01
-    add byte [bx], bl                         ; 00 1f
-    xor AL, strict byte 026h                  ; 34 26
-    xor cl, byte [si+032h]                    ; 32 4c 32
-    pop bp                                    ; 5d
-    xor ch, byte [bp+032h]                    ; 32 6e 32
-    xor cl, byte [es:si+032h]                 ; 26 32 4c 32
-    pop bp                                    ; 5d
-    xor ch, byte [bp+032h]                    ; 32 6e 32
-    jnle short 03084h                         ; 7f 32
-    mov si, word [bp+si]                      ; 8b 32
-    cmpsb                                     ; a6
-    xor dh, byte [bx+di-043ceh]               ; 32 b1 32 bc
-    db  032h, 0c7h
-    ; xor al, bh                                ; 32 c7
+    add byte [bp+di], bl                      ; 00 1b
+    xor AL, strict byte 022h                  ; 34 22
+    xor cl, byte [bx+si+032h]                 ; 32 48 32
+    pop cx                                    ; 59
+    xor ch, byte [bp+si+032h]                 ; 32 6a 32
+    and dh, byte [bp+si]                      ; 22 32
+    dec ax                                    ; 48
+    xor bl, byte [bx+di+032h]                 ; 32 59 32
+    push strict byte 00032h                   ; 6a 32
+    jnp short 03080h                          ; 7b 32
+    xchg word [bp+si], si                     ; 87 32
+    mov byte [0ad32h], AL                     ; a2 32 ad
+    xor bh, byte [bx+si-03cceh]               ; 32 b8 32 c3
     db  032h
-_int10_func:                                 ; 0xc305c LB 0x3c7
+_int10_func:                                 ; 0xc3058 LB 0x3c7
     push si                                   ; 56
     push di                                   ; 57
@@ -5674,40 +5654,40 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jnbe near 0341fh                          ; 0f 87 ad 03
+    jnbe near 0341bh                          ; 0f 87 ad 03
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00016h                ; b9 16 00
-    mov di, 02fefh                            ; bf ef 2f
+    mov di, 02febh                            ; bf eb 2f
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+03004h]               ; 2e 8b 85 04 30
+    mov ax, word [cs:di+03000h]               ; 2e 8b 85 00 30
     mov cl, byte [bp+016h]                    ; 8a 4e 16
     jmp ax                                    ; ff e0
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 00fc1h                               ; e8 2f df
+    call 00fc1h                               ; e8 33 df
     mov ax, word [bp+016h]                    ; 8b 46 16
     and ax, strict word 0007fh                ; 25 7f 00
     cmp ax, strict word 00007h                ; 3d 07 00
-    je short 030b2h                           ; 74 15
+    je short 030aeh                           ; 74 15
     cmp ax, strict word 00006h                ; 3d 06 00
-    je short 030a9h                           ; 74 07
+    je short 030a5h                           ; 74 07
     cmp ax, strict word 00005h                ; 3d 05 00
-    jbe short 030b2h                          ; 76 0b
-    jmp short 030bbh                          ; eb 12
+    jbe short 030aeh                          ; 76 0b
+    jmp short 030b7h                          ; eb 12
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 03fh                   ; 0c 3f
-    jmp short 030c2h                          ; eb 10
+    jmp short 030beh                          ; eb 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 030h                   ; 0c 30
-    jmp short 030c2h                          ; eb 07
+    jmp short 030beh                          ; eb 07
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 020h                   ; 0c 20
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 0341fh                           ; e9 57 03
+    jmp near 0341bh                           ; e9 57 03
     mov al, byte [bp+014h]                    ; 8a 46 14
     movzx dx, al                              ; 0f b6 d0
@@ -5715,12 +5695,12 @@
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 00daah                               ; e8 d1 dc
-    jmp near 0341fh                           ; e9 43 03
+    call 00daah                               ; e8 d5 dc
+    jmp near 0341bh                           ; e9 43 03
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 00e4bh                               ; e8 61 dd
-    jmp near 0341fh                           ; e9 32 03
+    call 00e4bh                               ; e8 65 dd
+    jmp near 0341bh                           ; e9 32 03
     lea bx, [bp+012h]                         ; 8d 5e 12
     lea dx, [bp+014h]                         ; 8d 56 14
@@ -5728,6 +5708,6 @@
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 00a8ch                               ; e8 8e d9
-    jmp near 0341fh                           ; e9 1e 03
+    call 00a8ch                               ; e8 92 d9
+    jmp near 0341bh                           ; e9 1e 03
     xor ax, ax                                ; 31 c0
     mov word [bp+016h], ax                    ; 89 46 16
@@ -5735,9 +5715,9 @@
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 0341fh                           ; e9 0d 03
+    jmp near 0341bh                           ; e9 0d 03
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 00ee9h                               ; e8 d0 dd
-    jmp near 0341fh                           ; e9 03 03
+    call 00ee9h                               ; e8 d4 dd
+    jmp near 0341bh                           ; e9 03 03
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
@@ -5761,14 +5741,14 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 01542h                               ; e8 ef e3
-    jmp near 0341fh                           ; e9 c9 02
+    call 01538h                               ; e8 e9 e3
+    jmp near 0341bh                           ; e9 c9 02
     xor ax, ax                                ; 31 c0
-    jmp short 0311fh                          ; eb c5
+    jmp short 0311bh                          ; eb c5
     lea dx, [bp+016h]                         ; 8d 56 16
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 00acch                               ; e8 64 d9
-    jmp near 0341fh                           ; e9 b4 02
+    call 00acch                               ; e8 68 d9
+    jmp near 0341bh                           ; e9 b4 02
     mov cx, word [bp+014h]                    ; 8b 4e 14
     mov al, byte [bp+010h]                    ; 8a 46 10
@@ -5779,6 +5759,6 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 01cceh                               ; e8 49 eb
-    jmp near 0341fh                           ; e9 97 02
+    call 01cc4h                               ; e8 43 eb
+    jmp near 0341bh                           ; e9 97 02
     mov cx, word [bp+014h]                    ; 8b 4e 14
     mov al, byte [bp+010h]                    ; 8a 46 10
@@ -5789,6 +5769,6 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 01e31h                               ; e8 8f ec
-    jmp near 0341fh                           ; e9 7a 02
+    call 01e27h                               ; e8 89 ec
+    jmp near 0341bh                           ; e9 7a 02
     mov cx, word [bp+012h]                    ; 8b 4e 12
     mov bx, word [bp+014h]                    ; 8b 5e 14
@@ -5800,6 +5780,6 @@
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 01f9bh                               ; e8 d9 ed
-    jmp near 0341fh                           ; e9 5a 02
+    call 01f91h                               ; e8 d3 ed
+    jmp near 0341bh                           ; e9 5a 02
     lea cx, [bp+016h]                         ; 8d 4e 16
     mov bx, word [bp+012h]                    ; 8b 5e 12
@@ -5810,6 +5790,6 @@
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 00beeh                               ; e8 0f da
-    jmp near 0341fh                           ; e9 3d 02
+    call 00beeh                               ; e8 13 da
+    jmp near 0341bh                           ; e9 3d 02
     mov cx, strict word 00002h                ; b9 02 00
     mov al, byte [bp+010h]                    ; 8a 46 10
@@ -5818,22 +5798,22 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 02103h                               ; e8 0d ef
-    jmp near 0341fh                           ; e9 26 02
+    call 020f9h                               ; e8 07 ef
+    jmp near 0341bh                           ; e9 26 02
     mov dx, word [bp+014h]                    ; 8b 56 14
     mov ax, word [bp+010h]                    ; 8b 46 10
-    call 00d22h                               ; e8 20 db
-    jmp near 0341fh                           ; e9 1a 02
+    call 00d22h                               ; e8 24 db
+    jmp near 0341bh                           ; e9 1a 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00030h                ; 3d 30 00
-    jnbe near 0341fh                          ; 0f 87 0e 02
+    jnbe near 0341bh                          ; 0f 87 0e 02
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000fh                ; b9 0f 00
-    mov di, 03030h                            ; bf 30 30
+    mov di, 0302ch                            ; bf 2c 30
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0303eh]               ; 2e 8b 85 3e 30
+    mov ax, word [cs:di+0303ah]               ; 2e 8b 85 3a 30
     jmp ax                                    ; ff e0
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -5850,28 +5830,28 @@
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, word [bp+01ah]                    ; 8b 56 1a
-    call 024a0h                               ; e8 57 f2
-    jmp near 0341fh                           ; e9 d3 01
+    call 02496h                               ; e8 51 f2
+    jmp near 0341bh                           ; e9 d3 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     movzx dx, al                              ; 0f b6 d0
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 02518h                               ; e8 be f2
-    jmp near 0341fh                           ; e9 c2 01
+    call 0250eh                               ; e8 b8 f2
+    jmp near 0341bh                           ; e9 c2 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     movzx dx, al                              ; 0f b6 d0
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 02584h                               ; e8 19 f3
-    jmp near 0341fh                           ; e9 b1 01
+    call 0257ah                               ; e8 13 f3
+    jmp near 0341bh                           ; e9 b1 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     movzx dx, al                              ; 0f b6 d0
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 025f2h                               ; e8 76 f3
-    jmp near 0341fh                           ; e9 a0 01
+    call 025e8h                               ; e8 70 f3
+    jmp near 0341bh                           ; e9 a0 01
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov ax, word [bp+01ah]                    ; 8b 46 1a
-    call 02660h                               ; e8 d8 f3
-    jmp near 0341fh                           ; e9 94 01
+    call 02656h                               ; e8 d2 f3
+    jmp near 0341bh                           ; e9 94 01
     mov al, byte [bp+012h]                    ; 8a 46 12
     xor ah, ah                                ; 30 e4
@@ -5882,18 +5862,18 @@
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov ax, word [bp+01ah]                    ; 8b 46 1a
-    call 02665h                               ; e8 c2 f3
-    jmp near 0341fh                           ; e9 79 01
+    call 0265bh                               ; e8 bc f3
+    jmp near 0341bh                           ; e9 79 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     xor ah, ah                                ; 30 e4
-    call 0266ch                               ; e8 be f3
-    jmp near 0341fh                           ; e9 6e 01
+    call 02662h                               ; e8 b8 f3
+    jmp near 0341bh                           ; e9 6e 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     xor ah, ah                                ; 30 e4
-    call 02671h                               ; e8 b8 f3
-    jmp near 0341fh                           ; e9 63 01
+    call 02667h                               ; e8 b2 f3
+    jmp near 0341bh                           ; e9 63 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     xor ah, ah                                ; 30 e4
-    call 02676h                               ; e8 b2 f3
-    jmp near 0341fh                           ; e9 58 01
+    call 0266ch                               ; e8 ac f3
+    jmp near 0341bh                           ; e9 58 01
     lea ax, [bp+012h]                         ; 8d 46 12
     push ax                                   ; 50
@@ -5903,28 +5883,28 @@
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
-    call 00b6fh                               ; e8 92 d8
-    jmp near 0341fh                           ; e9 3f 01
+    call 00b6fh                               ; e8 96 d8
+    jmp near 0341bh                           ; e9 3f 01
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00036h                ; 3d 36 00
-    je short 03312h                           ; 74 28
+    je short 0330eh                           ; 74 28
     cmp ax, strict word 00035h                ; 3d 35 00
-    je short 032fch                           ; 74 0d
+    je short 032f8h                           ; 74 0d
     cmp ax, strict word 00020h                ; 3d 20 00
-    jne near 0341fh                           ; 0f 85 29 01
-    call 0267bh                               ; e8 82 f3
-    jmp near 0341fh                           ; e9 23 01
+    jne near 0341bh                           ; 0f 85 29 01
+    call 02671h                               ; e8 7c f3
+    jmp near 0341bh                           ; e9 23 01
     movzx ax, cl                              ; 0f b6 c1
     mov bx, word [bp+012h]                    ; 8b 5e 12
     mov dx, word [bp+01ah]                    ; 8b 56 1a
-    call 02680h                               ; e8 78 f3
+    call 02676h                               ; e8 72 f3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 012h                   ; 0c 12
-    jmp near 030c2h                           ; e9 b0 fd
+    jmp near 030beh                           ; e9 b0 fd
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 02685h                               ; e8 6c f3
-    jmp short 03308h                          ; eb ed
+    call 0267bh                               ; e8 66 f3
+    jmp short 03304h                          ; eb ed
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+01ah]                       ; ff 76 1a
@@ -5943,75 +5923,75 @@
     movzx ax, cl                              ; 0f b6 c1
     mov cx, word [bp+014h]                    ; 8b 4e 14
-    call 0268ah                               ; e8 42 f3
-    jmp near 0341fh                           ; e9 d4 00
+    call 02680h                               ; e8 3c f3
+    jmp near 0341bh                           ; e9 d4 00
     mov bx, si                                ; 89 f3
     mov dx, word [bp+01ah]                    ; 8b 56 1a
     mov ax, word [bp+010h]                    ; 8b 46 10
-    call 02721h                               ; e8 cb f3
+    call 02717h                               ; e8 c5 f3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 01bh                   ; 0c 1b
-    jmp near 030c2h                           ; e9 62 fd
+    jmp near 030beh                           ; e9 62 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 0338ch                           ; 74 22
+    je short 03388h                           ; 74 22
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 0337eh                           ; 74 0f
+    je short 0337ah                           ; 74 0f
     test ax, ax                               ; 85 c0
-    jne short 03398h                          ; 75 25
+    jne short 03394h                          ; 75 25
     lea dx, [bp+010h]                         ; 8d 56 10
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 0284eh                               ; e8 d2 f4
-    jmp short 03398h                          ; eb 1a
+    call 02838h                               ; e8 c0 f4
+    jmp short 03394h                          ; eb 1a
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, word [bp+01ah]                    ; 8b 56 1a
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 0285dh                               ; e8 d3 f4
-    jmp short 03398h                          ; eb 0c
+    call 02847h                               ; e8 c1 f4
+    jmp short 03394h                          ; eb 0c
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, word [bp+01ah]                    ; 8b 56 1a
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 02bc2h                               ; e8 2a f8
+    call 02bach                               ; e8 18 f8
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 01ch                   ; 0c 1c
-    jmp near 030c2h                           ; e9 20 fd
-    call 007d4h                               ; e8 2f d4
+    jmp near 030beh                           ; e9 20 fd
+    call 007b2h                               ; e8 11 d4
     test ax, ax                               ; 85 c0
-    je near 0341ah                            ; 0f 84 6f 00
+    je near 03416h                            ; 0f 84 6f 00
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00002h                ; 3d 02 00
-    jc short 033c8h                           ; 72 13
-    jbe short 033eeh                          ; 76 37
+    jc short 033c4h                           ; 72 13
+    jbe short 033eah                          ; 76 37
     cmp ax, strict word 0000ah                ; 3d 0a 00
-    je short 03413h                           ; 74 57
+    je short 0340fh                           ; 74 57
     cmp ax, strict word 00009h                ; 3d 09 00
-    je short 03413h                           ; 74 52
+    je short 0340fh                           ; 74 52
     cmp ax, strict word 00004h                ; 3d 04 00
-    je short 033feh                           ; 74 38
-    jmp short 03413h                          ; eb 4b
+    je short 033fah                           ; 74 38
+    jmp short 0340fh                          ; eb 4b
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 033deh                           ; 74 11
+    je short 033dah                           ; 74 11
     test ax, ax                               ; 85 c0
-    jne short 03413h                          ; 75 42
+    jne short 0340fh                          ; 75 42
     mov bx, si                                ; 89 f3
     mov dx, word [bp+01ah]                    ; 8b 56 1a
     lea ax, [bp+016h]                         ; 8d 46 16
-    call 034e7h                               ; e8 0b 01
-    jmp short 0341fh                          ; eb 41
+    call 034e5h                               ; e8 0d 01
+    jmp short 0341bh                          ; eb 41
     mov cx, si                                ; 89 f1
     mov bx, word [bp+01ah]                    ; 8b 5e 1a
     mov dx, word [bp+014h]                    ; 8b 56 14
     lea ax, [bp+016h]                         ; 8d 46 16
-    call 036d1h                               ; e8 e5 02
-    jmp short 0341fh                          ; eb 31
+    call 03612h                               ; e8 2a 02
+    jmp short 0341bh                          ; eb 31
     mov cx, si                                ; 89 f1
     mov bx, word [bp+01ah]                    ; 8b 5e 1a
     mov dx, word [bp+010h]                    ; 8b 56 10
     lea ax, [bp+016h]                         ; 8d 46 16
-    call 03781h                               ; e8 85 03
-    jmp short 0341fh                          ; eb 21
+    call 036c2h                               ; e8 ca 02
+    jmp short 0341bh                          ; eb 21
     lea ax, [bp+010h]                         ; 8d 46 10
     push ax                                   ; 50
@@ -6020,8 +6000,8 @@
     mov dx, word [bp+014h]                    ; 8b 56 14
     lea ax, [bp+016h]                         ; 8d 46 16
-    call 03970h                               ; e8 5f 05
-    jmp short 0341fh                          ; eb 0c
+    call 0389eh                               ; e8 91 04
+    jmp short 0341bh                          ; eb 0c
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
-    jmp short 0341fh                          ; eb 05
+    jmp short 0341bh                          ; eb 05
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
     leave                                     ; c9
@@ -6029,5 +6009,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-dispi_set_xres_:                             ; 0xc3423 LB 0x18
+dispi_set_xres_:                             ; 0xc341f LB 0x18
     push bx                                   ; 53
     push dx                                   ; 52
@@ -6045,5 +6025,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-dispi_set_yres_:                             ; 0xc343b LB 0x18
+dispi_set_yres_:                             ; 0xc3437 LB 0x18
     push bx                                   ; 53
     push dx                                   ; 52
@@ -6061,5 +6041,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-dispi_set_bpp_:                              ; 0xc3453 LB 0x18
+dispi_set_bpp_:                              ; 0xc344f LB 0x18
     push bx                                   ; 53
     push dx                                   ; 52
@@ -6077,5 +6057,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-in_word_:                                    ; 0xc346b LB 0xf
+in_word_:                                    ; 0xc3467 LB 0xf
     push bx                                   ; 53
     push bp                                   ; 55
@@ -6089,5 +6069,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-in_byte_:                                    ; 0xc347a LB 0x11
+in_byte_:                                    ; 0xc3476 LB 0x11
     push bx                                   ; 53
     push bp                                   ; 55
@@ -6103,5 +6083,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-mode_info_find_mode_:                        ; 0xc348b LB 0x5c
+mode_info_find_mode_:                        ; 0xc3487 LB 0x5e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -6110,36 +6090,37 @@
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    mov di, ax                                ; 89 c7
-    mov si, dx                                ; 89 d6
+    mov si, ax                                ; 89 c6
+    mov di, dx                                ; 89 d7
     xor dx, dx                                ; 31 d2
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 cd ff
+    call 03467h                               ; e8 cd ff
     cmp ax, 077cch                            ; 3d cc 77
-    je short 034afh                           ; 74 0c
-    push ax                                   ; 50
-    push 07ee2h                               ; 68 e2 7e
-    call 02f54h                               ; e8 aa fa
+    je short 034abh                           ; 74 0c
+    push ax                                   ; 50
+    push 07ee8h                               ; 68 e8 7e
+    call 02f50h                               ; e8 aa fa
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp short 034dfh                          ; eb 30
+    jmp short 034ddh                          ; eb 32
     mov bx, strict word 00004h                ; bb 04 00
     mov dx, bx                                ; 89 da
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 b1 ff
+    call 03467h                               ; e8 b1 ff
     mov cx, ax                                ; 89 c1
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 034dfh                           ; 74 1e
+    je short 034ddh                           ; 74 20
     lea dx, [bx+002h]                         ; 8d 57 02
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 a1 ff
-    cmp cx, di                                ; 39 f9
-    jne short 034dah                          ; 75 0c
-    test si, si                               ; 85 f6
-    jne short 034d6h                          ; 75 04
+    call 03467h                               ; e8 a1 ff
+    lea dx, [bx+044h]                         ; 8d 57 44
+    cmp cx, si                                ; 39 f1
+    jne short 034d9h                          ; 75 0c
+    test di, di                               ; 85 ff
+    jne short 034d5h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 034e1h                          ; eb 0b
+    jmp short 034dfh                          ; eb 0a
     test AL, strict byte 080h                 ; a8 80
-    jne short 034d2h                          ; 75 f8
-    add bx, strict byte 00044h                ; 83 c3 44
-    jmp short 034b2h                          ; eb d3
+    jne short 034d1h                          ; 75 f8
+    mov bx, dx                                ; 89 d3
+    jmp short 034b0h                          ; eb d3
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
@@ -6149,191 +6130,97 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vbe_biosfn_return_controller_information_: ; 0xc34e7 LB 0x1ea
+vbe_biosfn_return_controller_information_: ; 0xc34e5 LB 0x12d
     push cx                                   ; 51
     push si                                   ; 56
     push di                                   ; 57
-    enter 00006h, 000h                        ; c8 06 00 00
-    push ax                                   ; 50
-    mov si, dx                                ; 89 d6
-    mov di, bx                                ; 89 df
-    mov word [bp-004h], strict word 00022h    ; c7 46 fc 22 00
-    call 005d7h                               ; e8 dc d0
-    mov word [bp-002h], ax                    ; 89 46 fe
+    enter 0000ah, 000h                        ; c8 0a 00 00
+    mov si, ax                                ; 89 c6
+    mov di, dx                                ; 89 d7
+    mov word [bp-004h], bx                    ; 89 5e fc
+    mov word [bp-006h], strict word 00022h    ; c7 46 fa 22 00
+    call 005b5h                               ; e8 ba d0
+    mov word [bp-00ah], ax                    ; 89 46 f6
+    mov bx, word [bp-004h]                    ; 8b 5e fc
+    mov word [bp-002h], di                    ; 89 7e fe
     xor dx, dx                                ; 31 d2
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 65 ff
+    call 03467h                               ; e8 5b ff
     cmp ax, 077cch                            ; 3d cc 77
-    je short 03521h                           ; 74 16
+    je short 03524h                           ; 74 13
     push SS                                   ; 16
     pop ES                                    ; 07
-    mov bx, word [bp-008h]                    ; 8b 5e f8
-    mov word [es:bx], 00100h                  ; 26 c7 07 00 01
-    push 07efbh                               ; 68 fb 7e
-    call 02f54h                               ; e8 39 fa
+    mov word [es:si], 00100h                  ; 26 c7 04 00 01
+    push 07f01h                               ; 68 01 7f
+    call 02f50h                               ; e8 32 fa
     add sp, strict byte 00002h                ; 83 c4 02
-    jmp near 036cch                           ; e9 ab 01
+    jmp near 0360dh                           ; e9 e9 00
     mov cx, strict word 00004h                ; b9 04 00
-    mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
-    mov dx, di                                ; 89 fa
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 da f9
-    cmp AL, strict byte 056h                  ; 3c 56
-    jne short 03558h                          ; 75 24
-    lea dx, [di+001h]                         ; 8d 55 01
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 ce f9
-    cmp AL, strict byte 042h                  ; 3c 42
-    jne short 03558h                          ; 75 18
-    lea dx, [di+002h]                         ; 8d 55 02
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 c2 f9
-    cmp AL, strict byte 045h                  ; 3c 45
-    jne short 03558h                          ; 75 0c
-    lea dx, [di+003h]                         ; 8d 55 03
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 b6 f9
-    cmp AL, strict byte 032h                  ; 3c 32
-    je short 03587h                           ; 74 2f
-    mov dx, di                                ; 89 fa
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 ab f9
-    cmp AL, strict byte 056h                  ; 3c 56
-    jne short 0358ch                          ; 75 29
-    lea dx, [di+001h]                         ; 8d 55 01
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 9f f9
-    cmp AL, strict byte 045h                  ; 3c 45
-    jne short 0358ch                          ; 75 1d
-    lea dx, [di+002h]                         ; 8d 55 02
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 93 f9
-    cmp AL, strict byte 053h                  ; 3c 53
-    jne short 0358ch                          ; 75 11
-    lea dx, [di+003h]                         ; 8d 55 03
-    mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 87 f9
-    cmp AL, strict byte 041h                  ; 3c 41
-    jne short 0358ch                          ; 75 05
-    mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
-    mov bx, strict word 00056h                ; bb 56 00
-    mov dx, di                                ; 89 fa
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 82 f9
-    lea dx, [di+001h]                         ; 8d 55 01
-    mov bx, strict word 00045h                ; bb 45 00
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 77 f9
-    lea dx, [di+002h]                         ; 8d 55 02
-    mov bx, strict word 00053h                ; bb 53 00
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 6c f9
-    lea dx, [di+003h]                         ; 8d 55 03
-    mov bx, strict word 00041h                ; bb 41 00
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 61 f9
-    lea dx, [di+004h]                         ; 8d 55 04
-    mov bx, 00200h                            ; bb 00 02
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 72 f9
-    lea dx, [di+008h]                         ; 8d 55 08
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 67 f9
-    lea dx, [di+006h]                         ; 8d 55 06
-    mov bx, 07e20h                            ; bb 20 7e
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 5c f9
-    lea dx, [di+00ah]                         ; 8d 55 0a
-    mov bx, strict word 00001h                ; bb 01 00
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 35 f9
-    lea dx, [di+00bh]                         ; 8d 55 0b
-    xor bx, bx                                ; 31 db
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 2b f9
-    lea dx, [di+00ch]                         ; 8d 55 0c
-    xor bx, bx                                ; 31 db
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 21 f9
-    lea dx, [di+00dh]                         ; 8d 55 0d
-    xor bx, bx                                ; 31 db
-    mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 17 f9
-    lea dx, [di+010h]                         ; 8d 55 10
-    mov bx, si                                ; 89 f3
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 29 f9
-    lea bx, [di+022h]                         ; 8d 5d 22
-    lea dx, [di+00eh]                         ; 8d 55 0e
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 1e f9
+    mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
+    mov es, [bp-002h]                         ; 8e 46 fe
+    cmp word [es:bx+002h], 03245h             ; 26 81 7f 02 45 32
+    jne short 0353eh                          ; 75 07
+    cmp word [es:bx], 04256h                  ; 26 81 3f 56 42
+    je short 0354dh                           ; 74 0f
+    cmp word [es:bx+002h], 04153h             ; 26 81 7f 02 53 41
+    jne short 03552h                          ; 75 0c
+    cmp word [es:bx], 04556h                  ; 26 81 3f 56 45
+    jne short 03552h                          ; 75 05
+    mov word [bp-008h], strict word 00001h    ; c7 46 f8 01 00
+    mov es, [bp-002h]                         ; 8e 46 fe
+    db  066h, 026h, 0c7h, 007h, 056h, 045h, 053h, 041h
+    ; mov dword [es:bx], strict dword 041534556h ; 66 26 c7 07 56 45 53 41
+    mov word [es:bx+004h], 00200h             ; 26 c7 47 04 00 02
+    mov word [es:bx+006h], 07e24h             ; 26 c7 47 06 24 7e
+    mov [es:bx+008h], ds                      ; 26 8c 5f 08
+    db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 000h
+    ; mov dword [es:bx+00ah], strict dword 000000001h ; 66 26 c7 47 0a 01 00 00 00
+    mov word [es:bx+010h], di                 ; 26 89 7f 10
+    mov ax, word [bp-004h]                    ; 8b 46 fc
+    add ax, strict word 00022h                ; 05 22 00
+    mov word [es:bx+00eh], ax                 ; 26 89 47 0e
     mov dx, strict word 0ffffh                ; ba ff ff
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 4c fe
-    lea dx, [di+012h]                         ; 8d 55 12
-    mov bx, ax                                ; 89 c3
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 0b f9
-    cmp word [bp-006h], strict byte 00000h    ; 83 7e fa 00
-    je short 0367ch                           ; 74 4d
-    lea dx, [di+014h]                         ; 8d 55 14
-    mov bx, strict word 00003h                ; bb 03 00
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 fa f8
-    lea dx, [di+018h]                         ; 8d 55 18
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 ef f8
-    lea dx, [di+016h]                         ; 8d 55 16
-    mov bx, 07e35h                            ; bb 35 7e
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 e4 f8
-    lea dx, [di+01ch]                         ; 8d 55 1c
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 d9 f8
-    lea dx, [di+01ah]                         ; 8d 55 1a
-    mov bx, 07e48h                            ; bb 48 7e
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 ce f8
-    lea dx, [di+020h]                         ; 8d 55 20
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 c3 f8
-    lea dx, [di+01eh]                         ; 8d 55 1e
-    mov bx, 07e69h                            ; bb 69 7e
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 b8 f8
+    call 03467h                               ; e8 da fe
+    mov es, [bp-002h]                         ; 8e 46 fe
+    mov word [es:bx+012h], ax                 ; 26 89 47 12
+    cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
+    je short 035beh                           ; 74 24
+    mov word [es:bx+014h], strict word 00003h ; 26 c7 47 14 03 00
+    mov word [es:bx+016h], 07e39h             ; 26 c7 47 16 39 7e
+    mov [es:bx+018h], ds                      ; 26 8c 5f 18
+    mov word [es:bx+01ah], 07e4ch             ; 26 c7 47 1a 4c 7e
+    mov [es:bx+01ch], ds                      ; 26 8c 5f 1c
+    mov word [es:bx+01eh], 07e6dh             ; 26 c7 47 1e 6d 7e
+    mov [es:bx+020h], ds                      ; 26 8c 5f 20
     mov dx, cx                                ; 89 ca
     add dx, strict byte 0001bh                ; 83 c2 1b
     mov ax, 003b6h                            ; b8 b6 03
-    call 0347ah                               ; e8 f3 fd
+    call 03476h                               ; e8 ad fe
     xor ah, ah                                ; 30 e4
-    cmp ax, word [bp-002h]                    ; 3b 46 fe
-    jnbe short 036a6h                         ; 77 18
+    cmp ax, word [bp-00ah]                    ; 3b 46 f6
+    jnbe short 035e9h                         ; 77 19
     mov dx, cx                                ; 89 ca
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 d5 fd
+    call 03467h                               ; e8 8f fe
+    mov bx, ax                                ; 89 c3
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    add dx, di                                ; 01 fa
+    add dx, word [bp-006h]                    ; 03 56 fa
+    mov ax, di                                ; 89 f8
+    call 02f1eh                               ; e8 39 f9
+    add word [bp-006h], strict byte 00002h    ; 83 46 fa 02
+    add cx, strict byte 00044h                ; 83 c1 44
+    mov dx, cx                                ; 89 ca
+    mov ax, 003b6h                            ; b8 b6 03
+    call 03467h                               ; e8 73 fe
     mov bx, ax                                ; 89 c3
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 92 f8
-    add word [bp-004h], strict byte 00002h    ; 83 46 fc 02
-    add cx, strict byte 00044h                ; 83 c1 44
-    mov dx, cx                                ; 89 ca
-    mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 ba fd
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 0367ch                          ; 75 c6
+    jne short 035beh                          ; 75 c3
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    add dx, di                                ; 01 fa
-    mov bx, ax                                ; 89 c3
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 72 f8
+    add dx, word [bp-006h]                    ; 03 56 fa
+    mov ax, di                                ; 89 f8
+    call 02f1eh                               ; e8 18 f9
     push SS                                   ; 16
     pop ES                                    ; 07
-    mov bx, word [bp-008h]                    ; 8b 5e f8
-    mov word [es:bx], strict word 0004fh      ; 26 c7 07 4f 00
+    mov word [es:si], strict word 0004fh      ; 26 c7 04 4f 00
     leave                                     ; c9
     pop di                                    ; 5f
@@ -6341,5 +6228,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-vbe_biosfn_return_mode_information_:         ; 0xc36d1 LB 0xb0
+vbe_biosfn_return_mode_information_:         ; 0xc3612 LB 0xb0
     push si                                   ; 56
     push di                                   ; 57
@@ -6354,8 +6241,8 @@
     xor dh, dh                                ; 30 f6
     and ah, 001h                              ; 80 e4 01
-    call 0348bh                               ; e8 9e fd
+    call 03487h                               ; e8 59 fe
     mov word [bp-004h], ax                    ; 89 46 fc
     test ax, ax                               ; 85 c0
-    je near 03772h                            ; 0f 84 7c 00
+    je near 036b3h                            ; 0f 84 7c 00
     mov cx, 00100h                            ; b9 00 01
     xor ax, ax                                ; 31 c0
@@ -6363,10 +6250,10 @@
     mov es, bx                                ; 8e c3
     cld                                       ; fc
-    jcxz 03705h                               ; e3 02
+    jcxz 03646h                               ; e3 02
     rep stosb                                 ; f3 aa
     xor cx, cx                                ; 31 c9
-    jmp short 0370eh                          ; eb 05
+    jmp short 0364fh                          ; eb 05
     cmp cx, strict byte 00042h                ; 83 f9 42
-    jnc short 0372bh                          ; 73 1d
+    jnc short 0366ch                          ; 73 1d
     mov dx, word [bp-004h]                    ; 8b 56 fc
     inc dx                                    ; 42
@@ -6374,29 +6261,29 @@
     add dx, cx                                ; 01 ca
     mov ax, 003b6h                            ; b8 b6 03
-    call 0347ah                               ; e8 5f fd
+    call 03476h                               ; e8 1a fe
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-002h]                    ; 8b 56 fe
     add dx, cx                                ; 01 ca
     mov ax, si                                ; 89 f0
-    call 02f18h                               ; e8 f0 f7
-    inc cx                                    ; 41
-    jmp short 03709h                          ; eb de
+    call 02f02h                               ; e8 99 f8
+    inc cx                                    ; 41
+    jmp short 0364ah                          ; eb de
     mov dx, word [bp-002h]                    ; 8b 56 fe
     inc dx                                    ; 42
     inc dx                                    ; 42
     mov ax, si                                ; 89 f0
-    call 02f0ah                               ; e8 d5 f7
+    call 02ef4h                               ; e8 7e f8
     test AL, strict byte 001h                 ; a8 01
-    je short 03755h                           ; 74 1c
+    je short 03696h                           ; 74 1c
     mov dx, word [bp-002h]                    ; 8b 56 fe
     add dx, strict byte 0000ch                ; 83 c2 0c
-    mov bx, 00635h                            ; bb 35 06
-    mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 ed f7
+    mov bx, 00613h                            ; bb 13 06
+    mov ax, si                                ; 89 f0
+    call 02f1eh                               ; e8 96 f8
     mov dx, word [bp-002h]                    ; 8b 56 fe
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov bx, 0c000h                            ; bb 00 c0
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 df f7
+    call 02f1eh                               ; e8 88 f8
     mov ax, strict word 0000bh                ; b8 0b 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6408,7 +6295,7 @@
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 02f34h                               ; e8 c7 f7
+    call 02f1eh                               ; e8 70 f8
     mov ax, strict word 0004fh                ; b8 4f 00
-    jmp short 03775h                          ; eb 03
+    jmp short 036b6h                          ; eb 03
     mov ax, 00100h                            ; b8 00 01
     push SS                                   ; 16
@@ -6420,6 +6307,7 @@
     pop si                                    ; 5e
     retn                                      ; c3
-vbe_biosfn_set_mode_:                        ; 0xc3781 LB 0xf7
+vbe_biosfn_set_mode_:                        ; 0xc36c2 LB 0xe4
     push si                                   ; 56
+    push di                                   ; 57
     enter 00006h, 000h                        ; c8 06 00 00
     mov si, ax                                ; 89 c6
@@ -6428,65 +6316,58 @@
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
-    xor ah, ah                                ; 30 e4
-    mov dx, ax                                ; 89 c2
-    test ax, ax                               ; 85 c0
-    je short 0379dh                           ; 74 03
-    mov ax, strict word 00040h                ; b8 40 00
-    mov byte [bp-002h], al                    ; 88 46 fe
+    movzx dx, al                              ; 0f b6 d0
+    mov ax, dx                                ; 89 d0
+    test dx, dx                               ; 85 d2
+    je short 036e0h                           ; 74 03
+    mov dx, strict word 00040h                ; ba 40 00
+    mov byte [bp-002h], dl                    ; 88 56 fe
     test byte [bp-005h], 080h                 ; f6 46 fb 80
-    je short 037abh                           ; 74 05
-    mov ax, 00080h                            ; b8 80 00
-    jmp short 037adh                          ; eb 02
-    xor ax, ax                                ; 31 c0
-    mov byte [bp-004h], al                    ; 88 46 fc
+    je short 036eeh                           ; 74 05
+    mov dx, 00080h                            ; ba 80 00
+    jmp short 036f0h                          ; eb 02
+    xor dx, dx                                ; 31 d2
+    mov byte [bp-004h], dl                    ; 88 56 fc
     and byte [bp-005h], 001h                  ; 80 66 fb 01
     cmp word [bp-006h], 00100h                ; 81 7e fa 00 01
-    jnc short 037cdh                          ; 73 12
+    jnc short 03710h                          ; 73 12
     xor ax, ax                                ; 31 c0
-    call 005f9h                               ; e8 39 ce
+    call 005d7h                               ; e8 d4 ce
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 00fc1h                               ; e8 fa d7
+    call 00fc1h                               ; e8 b7 d8
     mov ax, strict word 0004fh                ; b8 4f 00
-    jmp near 03872h                           ; e9 a5 00
+    jmp near 0379fh                           ; e9 8f 00
+    mov dx, ax                                ; 89 c2
     mov ax, word [bp-006h]                    ; 8b 46 fa
-    call 0348bh                               ; e8 b8 fc
+    call 03487h                               ; e8 6f fd
     mov bx, ax                                ; 89 c3
-    mov cx, ax                                ; 89 c1
     test ax, ax                               ; 85 c0
-    je near 0386fh                            ; 0f 84 92 00
+    je near 0379ch                            ; 0f 84 7c 00
     lea dx, [bx+014h]                         ; 8d 57 14
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 85 fc
+    call 03467h                               ; e8 3e fd
+    mov cx, ax                                ; 89 c1
     lea dx, [bx+016h]                         ; 8d 57 16
     mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 7c fc
+    call 03467h                               ; e8 33 fd
+    mov di, ax                                ; 89 c7
     lea dx, [bx+01bh]                         ; 8d 57 1b
     mov ax, 003b6h                            ; b8 b6 03
-    call 0347ah                               ; e8 82 fc
+    call 03476h                               ; e8 37 fd
+    mov bl, al                                ; 88 c3
     mov dl, al                                ; 88 c2
     xor ax, ax                                ; 31 c0
-    call 005f9h                               ; e8 fa cd
-    cmp dl, 004h                              ; 80 fa 04
-    jne short 0380ah                          ; 75 06
+    call 005d7h                               ; e8 8f ce
+    cmp bl, 004h                              ; 80 fb 04
+    jne short 03753h                          ; 75 06
     mov ax, strict word 0006ah                ; b8 6a 00
-    call 00fc1h                               ; e8 b7 d7
-    mov dx, cx                                ; 89 ca
-    add dx, strict byte 0001bh                ; 83 c2 1b
-    mov ax, 003b6h                            ; b8 b6 03
-    call 0347ah                               ; e8 65 fc
-    xor ah, ah                                ; 30 e4
-    call 03453h                               ; e8 39 fc
-    mov dx, cx                                ; 89 ca
-    add dx, strict byte 00014h                ; 83 c2 14
-    mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 46 fc
-    call 03423h                               ; e8 fb fb
-    mov dx, cx                                ; 89 ca
-    add dx, strict byte 00016h                ; 83 c2 16
-    mov ax, 003b6h                            ; b8 b6 03
-    call 0346bh                               ; e8 38 fc
-    call 0343bh                               ; e8 05 fc
+    call 00fc1h                               ; e8 6e d8
+    movzx ax, dl                              ; 0f b6 c2
+    call 0344fh                               ; e8 f6 fc
+    mov ax, cx                                ; 89 c8
+    call 0341fh                               ; e8 c1 fc
+    mov ax, di                                ; 89 f8
+    call 03437h                               ; e8 d4 fc
     xor ax, ax                                ; 31 c0
-    call 00617h                               ; e8 dc cd
+    call 005f5h                               ; e8 8d ce
     mov al, byte [bp-004h]                    ; 8a 46 fc
     or AL, strict byte 001h                   ; 0c 01
@@ -6494,10 +6375,10 @@
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     or ax, dx                                 ; 09 d0
-    call 005f9h                               ; e8 ad cd
-    call 006f3h                               ; e8 a4 ce
+    call 005d7h                               ; e8 5e ce
+    call 006d1h                               ; e8 55 cf
     mov bx, word [bp-006h]                    ; 8b 5e fa
     mov dx, 000bah                            ; ba ba 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f34h                               ; e8 d9 f6
+    call 02f1eh                               ; e8 96 f7
     mov al, byte [bp-004h]                    ; 8a 46 fc
     or AL, strict byte 060h                   ; 0c 60
@@ -6505,12 +6386,13 @@
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f18h                               ; e8 ac f6
-    jmp near 037c7h                           ; e9 58 ff
+    call 02f02h                               ; e8 69 f7
+    jmp near 0370ah                           ; e9 6e ff
     mov ax, 00100h                            ; b8 00 01
     mov word [ss:si], ax                      ; 36 89 04
     leave                                     ; c9
+    pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-vbe_biosfn_read_video_state_size_:           ; 0xc3878 LB 0x8
+vbe_biosfn_read_video_state_size_:           ; 0xc37a6 LB 0x8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6518,5 +6400,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_save_video_state_:                ; 0xc3880 LB 0x58
+vbe_biosfn_save_video_state_:                ; 0xc37ae LB 0x58
     push bx                                   ; 53
     push cx                                   ; 51
@@ -6535,15 +6417,15 @@
     mov dx, cx                                ; 89 ca
     mov ax, di                                ; 89 f8
-    call 02f34h                               ; e8 91 f6
+    call 02f1eh                               ; e8 4d f7
     inc cx                                    ; 41
     inc cx                                    ; 41
     test byte [bp-002h], 001h                 ; f6 46 fe 01
-    je short 038d2h                           ; 74 27
+    je short 03800h                           ; 74 27
     mov si, strict word 00001h                ; be 01 00
-    jmp short 038b5h                          ; eb 05
+    jmp short 037e3h                          ; eb 05
     cmp si, strict byte 00009h                ; 83 fe 09
-    jnbe short 038d2h                         ; 77 1d
+    jnbe short 03800h                         ; 77 1d
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 038cfh                           ; 74 15
+    je short 037fdh                           ; 74 15
     mov ax, si                                ; 89 f0
     mov dx, 001ceh                            ; ba ce 01
@@ -6554,9 +6436,9 @@
     mov dx, cx                                ; 89 ca
     mov ax, di                                ; 89 f8
-    call 02f34h                               ; e8 67 f6
+    call 02f1eh                               ; e8 23 f7
     inc cx                                    ; 41
     inc cx                                    ; 41
     inc si                                    ; 46
-    jmp short 038b0h                          ; eb de
+    jmp short 037deh                          ; eb de
     leave                                     ; c9
     pop di                                    ; 5f
@@ -6565,5 +6447,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vbe_biosfn_restore_video_state_:             ; 0xc38d8 LB 0x98
+vbe_biosfn_restore_video_state_:             ; 0xc3806 LB 0x98
     push bx                                   ; 53
     push cx                                   ; 51
@@ -6572,10 +6454,10 @@
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
-    call 02f26h                               ; e8 40 f6
+    call 02f10h                               ; e8 fc f6
     mov word [bp-002h], ax                    ; 89 46 fe
     inc bx                                    ; 43
     inc bx                                    ; 43
     test byte [bp-002h], 001h                 ; f6 46 fe 01
-    jne short 03901h                          ; 75 10
+    jne short 0382fh                          ; 75 10
     mov ax, strict word 00004h                ; b8 04 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6584,5 +6466,5 @@
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
-    jmp short 0396bh                          ; eb 6a
+    jmp short 03899h                          ; eb 6a
     mov ax, strict word 00001h                ; b8 01 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6590,5 +6472,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f26h                               ; e8 17 f6
+    call 02f10h                               ; e8 d3 f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6600,5 +6482,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f26h                               ; e8 03 f6
+    call 02f10h                               ; e8 bf f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6610,5 +6492,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f26h                               ; e8 ef f5
+    call 02f10h                               ; e8 ab f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6622,7 +6504,7 @@
     out DX, ax                                ; ef
     mov si, strict word 00005h                ; be 05 00
-    jmp short 03955h                          ; eb 05
+    jmp short 03883h                          ; eb 05
     cmp si, strict byte 00009h                ; 83 fe 09
-    jnbe short 0396bh                         ; 77 16
+    jnbe short 03899h                         ; 77 16
     mov ax, si                                ; 89 f0
     mov dx, 001ceh                            ; ba ce 01
@@ -6630,5 +6512,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f26h                               ; e8 c4 f5
+    call 02f10h                               ; e8 80 f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6636,5 +6518,5 @@
     inc bx                                    ; 43
     inc si                                    ; 46
-    jmp short 03950h                          ; eb e5
+    jmp short 0387eh                          ; eb e5
     leave                                     ; c9
     pop si                                    ; 5e
@@ -6642,5 +6524,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vbe_biosfn_save_restore_state_:              ; 0xc3970 LB 0x89
+vbe_biosfn_save_restore_state_:              ; 0xc389e LB 0x89
     push si                                   ; 56
     push di                                   ; 57
@@ -6653,15 +6535,15 @@
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 039cfh                           ; 74 45
+    je short 038fdh                           ; 74 45
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 039b3h                           ; 74 24
+    je short 038e1h                           ; 74 24
     test ax, ax                               ; 85 c0
-    jne short 039ebh                          ; 75 58
+    jne short 03919h                          ; 75 58
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 0282bh                               ; e8 92 ee
+    call 02815h                               ; e8 4e ef
     mov cx, ax                                ; 89 c1
     test byte [bp-002h], 008h                 ; f6 46 fe 08
-    je short 039a6h                           ; 74 05
-    call 03878h                               ; e8 d4 fe
+    je short 038d4h                           ; 74 05
+    call 037a6h                               ; e8 d4 fe
     add ax, cx                                ; 01 c8
     add ax, strict word 0003fh                ; 05 3f 00
@@ -6670,5 +6552,5 @@
     pop ES                                    ; 07
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 039eeh                          ; eb 3b
+    jmp short 0391ch                          ; eb 3b
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -6676,11 +6558,11 @@
     mov dx, cx                                ; 89 ca
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 0285dh                               ; e8 9d ee
+    call 02847h                               ; e8 59 ef
     test byte [bp-002h], 008h                 ; f6 46 fe 08
-    je short 039eeh                           ; 74 28
+    je short 0391ch                           ; 74 28
     mov dx, ax                                ; 89 c2
     mov ax, cx                                ; 89 c8
-    call 03880h                               ; e8 b3 fe
-    jmp short 039eeh                          ; eb 1f
+    call 037aeh                               ; e8 b3 fe
+    jmp short 0391ch                          ; eb 1f
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -6688,11 +6570,11 @@
     mov dx, cx                                ; 89 ca
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02bc2h                               ; e8 e6 f1
+    call 02bach                               ; e8 a2 f2
     test byte [bp-002h], 008h                 ; f6 46 fe 08
-    je short 039eeh                           ; 74 0c
+    je short 0391ch                           ; 74 0c
     mov dx, ax                                ; 89 c2
     mov ax, cx                                ; 89 c8
-    call 038d8h                               ; e8 ef fe
-    jmp short 039eeh                          ; eb 03
+    call 03806h                               ; e8 ef fe
+    jmp short 0391ch                          ; eb 03
     mov di, 00100h                            ; bf 00 01
     push SS                                   ; 16
@@ -6704,15 +6586,17 @@
     retn 00002h                               ; c2 02 00
 
-  ; Padding 0xc07 bytes at 0xc39f9
-  times 3079 db 0
+  ; Padding 0xcd9 bytes at 0xc3927
+  times 3289 db 0
 
-section VBE32 progbits vstart=0x4600 align=1 ; size=0x111 class=CODE group=AUTO
-vesa_pm_start:                               ; 0xc4600 LB 0x110
-    adc AL, strict byte 000h                  ; 14 00
-    dec bx                                    ; 4b
-    add byte [si], cl                         ; 00 0c
+section VBE32 progbits vstart=0x4600 align=1 ; size=0x115 class=CODE group=AUTO
+vesa_pm_start:                               ; 0xc4600 LB 0x114
+    sbb byte [bx+si], al                      ; 18 00
+    dec di                                    ; 4f
+    add byte [bx+si], dl                      ; 00 10
     add word [bx+si], cx                      ; 01 08
     add dh, cl                                ; 00 ce
     add di, cx                                ; 01 cf
+    add di, cx                                ; 01 cf
+    add ax, dx                                ; 01 d0
     add word [bp-048fdh], si                  ; 01 b6 03 b7
     db  003h, 0ffh
@@ -6737,12 +6621,12 @@
     db  066h, 03bh, 0d0h
     ; cmp edx, eax                              ; 66 3b d0
-    jne short 04646h                          ; 75 05
+    jne short 0464ah                          ; 75 05
     mov eax, strict dword 066c3004fh          ; 66 b8 4f 00 c3 66
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
     cmp bl, 080h                              ; 80 fb 80
-    je short 0465ah                           ; 74 0a
+    je short 0465eh                           ; 74 0a
     cmp bl, 000h                              ; 80 fb 00
-    je short 0466ah                           ; 74 15
+    je short 0466eh                           ; 74 15
     mov eax, strict dword 052c30100h          ; 66 b8 00 01 c3 52
     mov edx, strict dword 0a8ec03dah          ; 66 ba da 03 ec a8
@@ -6750,5 +6634,5 @@
     in AL, DX                                 ; ec
     test AL, strict byte 008h                 ; a8 08
-    je short 04664h                           ; 74 fb
+    je short 04668h                           ; 74 fb
     pop dx                                    ; 5a
     push ax                                   ; 50
@@ -6780,5 +6664,5 @@
     pop ax                                    ; 58
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 046c3h                           ; 74 17
+    je short 046c7h                           ; 74 17
     add si, strict byte 00007h                ; 83 c6 07
     shr si, 003h                              ; c1 ee 03
@@ -6794,5 +6678,5 @@
     ; xor dx, dx                                ; 33 d2
     div si                                    ; f7 f6
-    jmp short 046cfh                          ; eb 0c
+    jmp short 046d3h                          ; eb 0c
     shr cx, 1                                 ; d1 e9
     db  033h, 0d2h
@@ -6829,14 +6713,14 @@
     mov eax, strict dword 066c3004fh          ; 66 b8 4f 00 c3 66
     mov ax, 0014fh                            ; b8 4f 01
-vesa_pm_end:                                 ; 0xc4710 LB 0x1
+vesa_pm_end:                                 ; 0xc4714 LB 0x1
     retn                                      ; c3
 
-  ; Padding 0xef bytes at 0xc4711
-  times 239 db 0
+  ; Padding 0xeb bytes at 0xc4715
+  times 235 db 0
 
-section _DATA progbits vstart=0x4800 align=1 ; size=0x36e1 class=DATA group=DGROUP
-_msg_vga_init:                               ; 0xc4800 LB 0x2f
-    db  'Oracle VM VirtualBox Version 4.1.51 VGA BIOS', 00dh, 00ah, 000h
-_vga_modes:                                  ; 0xc482f LB 0x80
+section _DATA progbits vstart=0x4800 align=1 ; size=0x36e8 class=DATA group=DGROUP
+_msg_vga_init:                               ; 0xc4800 LB 0x32
+    db  'Oracle VM VirtualBox Version 4.2.0_RC2 VGA BIOS', 00dh, 00ah, 000h
+_vga_modes:                                  ; 0xc4832 LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -6847,9 +6731,9 @@
     db  011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
     db  013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
-_line_to_vpti:                               ; 0xc48af LB 0x10
+_line_to_vpti:                               ; 0xc48b2 LB 0x10
     db  017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
-_dac_regs:                                   ; 0xc48bf LB 0x4
+_dac_regs:                                   ; 0xc48c2 LB 0x4
     dd  0ff3f3f3fh
-_video_param_table:                          ; 0xc48c3 LB 0x780
+_video_param_table:                          ; 0xc48c6 LB 0x780
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
@@ -6972,5 +6856,5 @@
     db  073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
     db  03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
-_palette0:                                   ; 0xc5043 LB 0xc0
+_palette0:                                   ; 0xc5046 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
@@ -6985,5 +6869,5 @@
     db  02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
     db  03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
-_palette1:                                   ; 0xc5103 LB 0xc0
+_palette1:                                   ; 0xc5106 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
@@ -6998,5 +6882,5 @@
     db  015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
-_palette2:                                   ; 0xc51c3 LB 0xc0
+_palette2:                                   ; 0xc51c6 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
@@ -7011,5 +6895,5 @@
     db  015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
-_palette3:                                   ; 0xc5283 LB 0x300
+_palette3:                                   ; 0xc5286 LB 0x300
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
@@ -7060,10 +6944,10 @@
     db  00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_static_functionality:                       ; 0xc5583 LB 0x10
+_static_functionality:                       ; 0xc5586 LB 0x10
     db  0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
-_video_save_pointer_table:                   ; 0xc5593 LB 0x1c
-    db  0c3h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_video_save_pointer_table:                   ; 0xc5596 LB 0x1c
+    db  0c6h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont8:                                   ; 0xc55af LB 0x800
+_vgafont8:                                   ; 0xc55b2 LB 0x800
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
     db  07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
@@ -7194,5 +7078,5 @@
     db  078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
     db  000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont14:                                  ; 0xc5daf LB 0xe00
+_vgafont14:                                  ; 0xc5db2 LB 0xe00
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
@@ -7419,5 +7303,5 @@
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont16:                                  ; 0xc6baf LB 0x1000
+_vgafont16:                                  ; 0xc6bb2 LB 0x1000
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
@@ -7676,5 +7560,5 @@
     db  000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont14alt:                               ; 0xc7baf LB 0x12d
+_vgafont14alt:                               ; 0xc7bb2 LB 0x12d
     db  01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
     db  000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
@@ -7696,5 +7580,5 @@
     db  000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
     db  018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
-_vgafont16alt:                               ; 0xc7cdc LB 0x144
+_vgafont16alt:                               ; 0xc7cdf LB 0x145
     db  01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
     db  000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
@@ -7717,41 +7601,38 @@
     db  000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
     db  000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
-    db  006h, 000h, 000h, 000h
-_vbebios_copyright:                          ; 0xc7e20 LB 0x15
+    db  006h, 000h, 000h, 000h, 000h
+_vbebios_copyright:                          ; 0xc7e24 LB 0x15
     db  'VirtualBox VESA BIOS', 000h
-_vbebios_vendor_name:                        ; 0xc7e35 LB 0x13
+_vbebios_vendor_name:                        ; 0xc7e39 LB 0x13
     db  'Oracle Corporation', 000h
-_vbebios_product_name:                       ; 0xc7e48 LB 0x21
+_vbebios_product_name:                       ; 0xc7e4c LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
-_vbebios_product_revision:                   ; 0xc7e69 LB 0x24
-    db  'Oracle VM VirtualBox Version 4.1.51', 000h
-_vbebios_info_string:                        ; 0xc7e8d LB 0x2b
+_vbebios_product_revision:                   ; 0xc7e6d LB 0x27
+    db  'Oracle VM VirtualBox Version 4.2.0_RC2', 000h
+_vbebios_info_string:                        ; 0xc7e94 LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
-_no_vbebios_info_string:                     ; 0xc7eb8 LB 0x29
+_no_vbebios_info_string:                     ; 0xc7ebf LB 0x29
     db  'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
 
-  ; Padding 0x1 bytes at 0xc7ee1
-  times 1 db 0
-
-section CONST progbits vstart=0x7ee2 align=1 ; size=0x2e class=DATA group=DGROUP
+section CONST progbits vstart=0x7ee8 align=1 ; size=0x2e class=DATA group=DGROUP
     db   'Signature NOT found! %x', 00ah, 000h
     db   'Signature NOT found', 00ah, 000h
 
-section CONST2 progbits vstart=0x7f10 align=1 ; size=0x0 class=DATA group=DGROUP
+section CONST2 progbits vstart=0x7f16 align=1 ; size=0x0 class=DATA group=DGROUP
 
-  ; Padding 0xf0 bytes at 0xc7f10
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 041h
+  ; Padding 0xea bytes at 0xc7f16
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh
Index: /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum	(revision 43077)
+++ /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum	(revision 43078)
@@ -1,1 +1,1 @@
-3cbb45d118bbb62f3fe41ea02ab546cd *VBoxVgaBios.rom
+54250906f009213dc80a23cc2201d899 *VBoxVgaBios.rom
Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 43077)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 43078)
@@ -605,4 +605,22 @@
 
 ;
+; Source file: apm.c
+;
+;  $Id$
+;  APM BIOS support. Implements APM version 1.2.
+;  
+;  
+;  
+;  Copyright (C) 2004-2012 Oracle Corporation
+;  
+;  This file is part of VirtualBox Open Source Edition (OSE), as
+;  available from http://www.virtualbox.org. This file is free software;
+;  you can redistribute it and/or modify it under the terms of the GNU
+;  General Public License (GPL) as published by the Free Software
+;  Foundation, in version 2 as it comes in the "COPYING" file of the
+;  VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+;  hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
 ; Source file: pcibios.c
 ;
@@ -690,4 +708,23 @@
 ;  
 ;  --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+;  
+;  Copyright (C) 2006-2012 Oracle Corporation
+;  
+;  This file is part of VirtualBox Open Source Edition (OSE), as
+;  available from http://www.virtualbox.org. This file is free software;
+;  you can redistribute it and/or modify it under the terms of the GNU
+;  General Public License (GPL) as published by the Free Software
+;  Foundation, in version 2 as it comes in the "COPYING" file of the
+;  VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+;  hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;  
+;  --------------------------------------------------------------------
+;  
+;  Protected-mode APM implementation.
+;  
 
 ;
@@ -758,8 +795,8 @@
 _dskacc:                                     ; 0xf0000 LB 0x30
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 059h, 027h, 0d0h, 027h, 000h, 000h, 000h, 000h
-    db  038h, 073h, 0dah, 073h, 055h, 07eh, 0e0h, 07eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  038h, 073h, 0dah, 073h, 055h, 07eh, 0e6h, 07eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
-section CONST progbits vstart=0x30 align=1 ; size=0xc10 class=DATA group=DGROUP
+section CONST progbits vstart=0x30 align=1 ; size=0xc94 class=DATA group=DGROUP
     db   'NMI Handler called', 00ah, 000h
     db   'INT18: BOOT FAILURE', 00ah, 000h
@@ -866,20 +903,25 @@
     db   'ahci_cmd_packet', 000h
     db   '%s: DATA_OUT not supported yet', 00ah, 000h
+    db   'AHCI %d-P#%d: PCHS=%u/%d/%d LCHS=%u/%u/%u %ld sectors', 00ah, 000h, 000h
+    db   'Standby', 000h
+    db   'Suspend', 000h
+    db   'Shutdown', 000h
+    db   'APM: Unsupported function AX=%04X BX=%04X called', 00ah, 000h, 000h
     db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
 
-section CONST2 progbits vstart=0xc40 align=1 ; size=0x3fa class=DATA group=DGROUP
-_bios_cvs_version_string:                    ; 0xf0c40 LB 0x12
-    db  'VirtualBox 4.1.51', 000h
-_bios_prefix_string:                         ; 0xf0c52 LB 0x8
+section CONST2 progbits vstart=0xcc4 align=1 ; size=0x3fe class=DATA group=DGROUP
+_bios_cvs_version_string:                    ; 0xf0cc4 LB 0x16
+    db  'VirtualBox 4.2.0_RC2', 000h, 000h
+_bios_prefix_string:                         ; 0xf0cda LB 0x8
     db  'BIOS: ', 000h, 000h
-_isotag:                                     ; 0xf0c5a LB 0x6
+_isotag:                                     ; 0xf0ce2 LB 0x6
     db  'CD001', 000h
-_eltorito:                                   ; 0xf0c60 LB 0x18
+_eltorito:                                   ; 0xf0ce8 LB 0x18
     db  'EL TORITO SPECIFICATION', 000h
-_drivetypes:                                 ; 0xf0c78 LB 0x28
+_drivetypes:                                 ; 0xf0d00 LB 0x28
     db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
     db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
     db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_scan_to_scanascii:                          ; 0xf0ca0 LB 0x37a
+_scan_to_scanascii:                          ; 0xf0d28 LB 0x37a
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
     db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
@@ -938,11 +980,11 @@
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
     db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
-_panic_msg_keyb_buffer_full:                 ; 0xf101a LB 0x20
+_panic_msg_keyb_buffer_full:                 ; 0xf10a2 LB 0x20
     db  '%s: keyboard input buffer full', 00ah, 000h
 
-  ; Padding 0x5c6 bytes at 0xf103a
-  times 1478 db 0
+  ; Padding 0x53e bytes at 0xf10c2
+  times 1342 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x753f class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x7735 class=CODE group=AUTO
 read_byte_:                                  ; 0xf1600 LB 0xe
     push bx                                   ; 53
@@ -1106,9 +1148,9 @@
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 018aeh                               ; e8 99 01
-    push 00c40h                               ; 68 40 0c
+    push 00cc4h                               ; 68 c4 0c
     push strict word 00059h                   ; 68 59 00
     push strict byte 00004h                   ; 6a 04
@@ -1268,5 +1310,5 @@
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 08ab0h                               ; e8 57 72
+    call 08c40h                               ; e8 e7 73
     mov word [bp-004h], ax                    ; 89 46 fc
     mov cx, dx                                ; 89 d1
@@ -2231,5 +2273,5 @@
     xor dx, dx                                ; 31 d2
     mov word [bp-01ah], di                    ; 89 7e e6
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -2865,5 +2907,5 @@
     cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
     jne short 0285ah                          ; 75 1f
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -3649,5 +3691,5 @@
     cmp AL, strict byte 048h                  ; 3c 48
     jbe short 02f58h                          ; 76 29
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -4287,5 +4329,5 @@
     mov ax, strict word 00006h                ; b8 06 00
     jmp near 02e83h                           ; e9 19 f9
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -4444,5 +4486,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -4523,5 +4565,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-01ah]                         ; 8d 46 e6
-    call 08b1ah                               ; e8 4a 53
+    call 08caah                               ; e8 da 54
     mov word [bp-01ah], strict word 00028h    ; c7 46 e6 28 00
     mov ax, strict word 00011h                ; b8 11 00
@@ -4570,5 +4612,5 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f45h                               ; e8 f7 46
+    call 07f53h                               ; e8 05 47
     jmp short 0381dh                          ; eb cd
     test ax, ax                               ; 85 c0
@@ -4586,5 +4628,5 @@
     jnc short 03881h                          ; 73 10
     mov al, byte [bp+di-00819h]               ; 8a 83 e7 f7
-    cmp al, byte [di+00c5ah]                  ; 3a 85 5a 0c
+    cmp al, byte [di+00ce2h]                  ; 3a 85 e2 0c
     je short 0386bh                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
@@ -4596,5 +4638,5 @@
     jnc short 0389bh                          ; 73 10
     mov al, byte [bp+di-00813h]               ; 8a 83 ed f7
-    cmp al, byte [di+00c60h]                  ; 3a 85 60 0c
+    cmp al, byte [di+00ce8h]                  ; 3a 85 e8 0c
     je short 03885h                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
@@ -4624,5 +4666,5 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f45h                               ; e8 66 46
+    call 07f53h                               ; e8 74 46
     jmp short 038ffh                          ; eb 1e
     lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
@@ -4738,5 +4780,5 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f45h                               ; e8 1b 45
+    call 07f53h                               ; e8 29 45
     jmp short 03a51h                          ; eb 25
     push di                                   ; 57
@@ -4937,5 +4979,5 @@
     cmp ax, dx                                ; 39 d0
     je short 03c26h                           ; 74 29
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5032,5 +5074,5 @@
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 08ae9h                               ; e8 dd 4d
+    call 08c79h                               ; e8 6d 4f
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
@@ -5038,5 +5080,5 @@
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 08ae9h                               ; e8 d0 4d
+    call 08c79h                               ; e8 60 4f
     mov bx, word [bp-010h]                    ; 8b 5e f0
     dec bx                                    ; 4b
@@ -5075,5 +5117,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ah]                         ; 8d 46 d6
-    call 08b1ah                               ; e8 a6 4d
+    call 08caah                               ; e8 36 4f
     mov word [bp-02ah], strict word 00028h    ; c7 46 d6 28 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
@@ -5127,5 +5169,5 @@
     lea bx, [bp-02ah]                         ; 8d 5e d6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f45h                               ; e8 45 41
+    call 07f53h                               ; e8 53 41
     jmp short 03e2ah                          ; eb 28
     push word [bp-00eh]                       ; ff 76 f2
@@ -5152,5 +5194,5 @@
     test dl, dl                               ; 84 d2
     je near 03f0eh                            ; 0f 84 d0 00
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5242,5 +5284,5 @@
     mov word [bp+01ah], bx                    ; 89 5e 1a
     jmp short 03f12h                          ; eb e5
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5455,5 +5497,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-028h]                         ; 8d 46 d8
-    call 08b1ah                               ; e8 e4 49
+    call 08caah                               ; e8 74 4b
     mov word [bp-028h], strict word 00028h    ; c7 46 d8 28 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
@@ -5486,5 +5528,5 @@
     lea bx, [bp-028h]                         ; 8d 5e d8
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f45h                               ; e8 ba 3d
+    call 07f53h                               ; e8 c8 3d
     jmp short 041b1h                          ; eb 24
     push dword [bp-016h]                      ; 66 ff 76 ea
@@ -5515,5 +5557,5 @@
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
     je near 04296h                            ; 0f 84 bf 00
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5792,5 +5834,5 @@
     or byte [bp+022h], 001h                   ; 80 4e 22 01
     jmp near 042a9h                           ; e9 91 fd
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5822,10 +5864,10 @@
     je short 0457ah                           ; 74 21
     mov dx, strict word 00001h                ; ba 01 00
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 018aeh                               ; e8 47 d3
     imul dx, dx, strict byte 0000ah           ; 6b d2 0a
-    add dx, 00c78h                            ; 81 c2 78 0c
+    add dx, 00d00h                            ; 81 c2 00 0d
     push dx                                   ; 52
     push 00402h                               ; 68 02 04
@@ -5846,9 +5888,9 @@
     test al, al                               ; 84 c0
     je short 045aah                           ; 74 1b
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 018aeh                               ; e8 14 d3
-    push 00c8ch                               ; 68 8c 0c
+    push 00d14h                               ; 68 14 0d
     push 00416h                               ; 68 16 04
     push strict byte 00004h                   ; 6a 04
@@ -5858,25 +5900,25 @@
     test dl, dl                               ; 84 d2
     je short 045beh                           ; 74 10
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 018aeh                               ; e8 f5 d2
-    push 00c96h                               ; 68 96 0c
+    push 00d1eh                               ; 68 1e 0d
     jmp short 0459dh                          ; eb df
     test bl, 080h                             ; f6 c3 80
     je short 045d4h                           ; 74 11
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 018aeh                               ; e8 e0 d2
     push si                                   ; 56
-    push 00c82h                               ; 68 82 0c
+    push 00d0ah                               ; 68 0a 0d
     jmp short 045e3h                          ; eb 0f
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 018aeh                               ; e8 cf d2
     push si                                   ; 56
-    push 00c78h                               ; 68 78 0c
+    push 00d00h                               ; 68 00 0d
     push 0042bh                               ; 68 2b 04
     push strict byte 00004h                   ; 6a 04
@@ -5903,5 +5945,5 @@
     mov bp, sp                                ; 89 e5
     mov dx, ax                                ; 89 c2
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5975,5 +6017,5 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-008h], al                    ; 88 46 f8
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -6536,5 +6578,5 @@
     test al, al                               ; 84 c0
     jne short 04bc6h                          ; 75 19
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -6739,5 +6781,5 @@
     cmp byte [bp-006h], 058h                  ; 80 7e fa 58
     jbe short 04e01h                          ; 76 1e
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -6754,6 +6796,6 @@
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    mov dl, byte [si+00ca6h]                  ; 8a 94 a6 0c
-    mov ax, word [si+00ca6h]                  ; 8b 84 a6 0c
+    mov dl, byte [si+00d2eh]                  ; 8a 94 2e 0d
+    mov ax, word [si+00d2eh]                  ; 8b 84 2e 0d
     jmp near 04ea4h                           ; e9 8c 00
     test bl, 004h                             ; f6 c3 04
@@ -6761,6 +6803,6 @@
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    mov dl, byte [si+00ca4h]                  ; 8a 94 a4 0c
-    mov ax, word [si+00ca4h]                  ; 8b 84 a4 0c
+    mov dl, byte [si+00d2ch]                  ; 8a 94 2c 0d
+    mov ax, word [si+00d2ch]                  ; 8b 84 2c 0d
     jmp near 04ea4h                           ; e9 75 00
     mov al, byte [bp-002h]                    ; 8a 46 fe
@@ -6781,13 +6823,13 @@
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    movzx ax, byte [si+00ca8h]                ; 0f b6 84 a8 0c
+    movzx ax, byte [si+00d30h]                ; 0f b6 84 30 0d
     movzx dx, bl                              ; 0f b6 d3
     test dx, ax                               ; 85 c2
     je short 04e6fh                           ; 74 0a
-    mov dl, byte [si+00ca0h]                  ; 8a 94 a0 0c
-    mov ax, word [si+00ca0h]                  ; 8b 84 a0 0c
+    mov dl, byte [si+00d28h]                  ; 8a 94 28 0d
+    mov ax, word [si+00d28h]                  ; 8b 84 28 0d
     jmp short 04e77h                          ; eb 08
-    mov dl, byte [si+00ca2h]                  ; 8a 94 a2 0c
-    mov ax, word [si+00ca2h]                  ; 8b 84 a2 0c
+    mov dl, byte [si+00d2ah]                  ; 8a 94 2a 0d
+    mov ax, word [si+00d2ah]                  ; 8b 84 2a 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -6795,13 +6837,13 @@
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    movzx ax, byte [si+00ca8h]                ; 0f b6 84 a8 0c
+    movzx ax, byte [si+00d30h]                ; 0f b6 84 30 0d
     movzx dx, bl                              ; 0f b6 d3
     test dx, ax                               ; 85 c2
     je short 04e9ch                           ; 74 0a
-    mov dl, byte [si+00ca2h]                  ; 8a 94 a2 0c
-    mov ax, word [si+00ca2h]                  ; 8b 84 a2 0c
+    mov dl, byte [si+00d2ah]                  ; 8a 94 2a 0d
+    mov ax, word [si+00d2ah]                  ; 8b 84 2a 0d
     jmp short 04ea4h                          ; eb 08
-    mov dl, byte [si+00ca0h]                  ; 8a 94 a0 0c
-    mov ax, word [si+00ca0h]                  ; 8b 84 a0 0c
+    mov dl, byte [si+00d28h]                  ; 8a 94 28 0d
+    mov ax, word [si+00d28h]                  ; 8b 84 28 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -6810,5 +6852,5 @@
     test dl, dl                               ; 84 d2
     jne short 04ecah                          ; 75 16
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -7183,5 +7225,5 @@
     or ah, 080h                               ; 80 cc 80
     jmp near 050f6h                           ; e9 d5 fe
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -7194,5 +7236,5 @@
     call 018e9h                               ; e8 ae c6
     add sp, strict byte 00006h                ; 83 c4 06
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -7344,5 +7386,5 @@
     test ax, ax                               ; 85 c0
     jne short 053d0h                          ; 75 23
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -7373,5 +7415,5 @@
     cmp ax, dx                                ; 39 d0
     jbe short 0542bh                          ; 76 2e
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -7411,5 +7453,5 @@
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 08ae9h                               ; e8 84 36
+    call 08c79h                               ; e8 14 38
     xor bx, bx                                ; 31 db
     add ax, word [bp-008h]                    ; 03 46 f8
@@ -7417,5 +7459,5 @@
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     xor cx, cx                                ; 31 c9
-    call 08ae9h                               ; e8 75 36
+    call 08c79h                               ; e8 05 38
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
@@ -7430,8 +7472,8 @@
     db  0c0h, 001h, 0c3h, 006h, 056h, 0ffh, 097h, 0fch, 0ffh, 089h, 0c2h, 08bh, 046h, 016h, 030h, 0c0h
     db  08eh, 046h, 0fch, 026h, 08bh, 05ch, 014h, 009h, 0c3h, 089h, 05eh, 016h, 084h, 0d2h, 00fh, 084h
-    db  015h, 0feh, 0bbh, 052h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 088h, 0c3h, 00fh, 0b6h, 0c2h
+    db  015h, 0feh, 0bbh, 0dah, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 088h, 0c3h, 00fh, 0b6h, 0c2h
     db  050h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0ech, 005h, 068h, 0c7h, 006h, 06ah, 004h
     db  0e8h, 0adh, 0c3h, 083h, 0c4h, 00ah, 08bh, 046h, 016h, 030h, 0e4h, 080h, 0cch, 00ch, 0e9h, 051h
-    db  001h, 0bbh, 052h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 059h, 0c3h, 068h, 0e8h, 006h, 06ah
+    db  001h, 0bbh, 0dah, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 059h, 0c3h, 068h, 0e8h, 006h, 06ah
     db  004h, 0e8h, 08ch, 0c3h, 083h, 0c4h, 004h, 0e9h, 0cdh, 0fdh, 00fh, 0b6h, 046h, 0feh, 06bh, 0c0h
     db  018h, 08eh, 046h, 0fch, 089h, 0f3h, 001h, 0c3h, 026h, 08bh, 07fh, 028h, 026h, 08bh, 04fh, 026h
@@ -7447,10 +7489,10 @@
     db  00fh, 0b6h, 046h, 0feh, 06bh, 0c0h, 018h, 08eh, 046h, 0fch, 001h, 0c6h, 026h, 08bh, 07ch, 02eh
     db  026h, 08bh, 044h, 02ch, 089h, 046h, 0f8h, 026h, 08bh, 044h, 030h, 089h, 046h, 0fah, 089h, 0f8h
-    db  031h, 0d2h, 08bh, 05eh, 0f8h, 031h, 0c9h, 0e8h, 0b6h, 034h, 08bh, 05eh, 0fah, 031h, 0c9h, 0e8h
-    db  0aeh, 034h, 089h, 046h, 0f0h, 089h, 056h, 0f2h, 089h, 056h, 014h, 089h, 046h, 012h, 08bh, 046h
-    db  016h, 030h, 0e4h, 080h, 0cch, 003h, 089h, 046h, 016h, 0e9h, 0dfh, 0fch, 0bbh, 052h, 00ch, 08ch
+    db  031h, 0d2h, 08bh, 05eh, 0f8h, 031h, 0c9h, 0e8h, 046h, 036h, 08bh, 05eh, 0fah, 031h, 0c9h, 0e8h
+    db  03eh, 036h, 089h, 046h, 0f0h, 089h, 056h, 0f2h, 089h, 056h, 014h, 089h, 046h, 012h, 08bh, 046h
+    db  016h, 030h, 0e4h, 080h, 0cch, 003h, 089h, 046h, 016h, 0e9h, 0dfh, 0fch, 0bbh, 0dah, 00ch, 08ch
     db  0d9h, 0b8h, 004h, 000h, 0e8h, 04eh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0ech
     db  005h, 068h, 002h, 007h, 06ah, 004h, 0e8h, 077h, 0c2h, 083h, 0c4h, 008h, 0e9h, 0b8h, 0fch, 0bbh
-    db  052h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 02bh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h
+    db  0dah, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 02bh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h
     db  050h, 068h, 0ech, 005h, 068h, 035h, 007h, 0e9h, 032h, 0fdh, 08bh, 046h, 016h, 030h, 0e4h, 080h
     db  0cch, 001h, 089h, 046h, 016h, 08bh, 05eh, 016h, 0c1h, 0ebh, 008h, 030h, 0ffh, 0bah, 074h, 000h
@@ -7560,5 +7602,5 @@
     cmp dx, word [es:bx+032h]                 ; 26 3b 57 32
     jc short 0581ah                           ; 72 23
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -7612,5 +7654,5 @@
     test dl, dl                               ; 84 d2
     je near 05b35h                            ; 0f 84 97 02
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -7848,5 +7890,5 @@
     leave                                     ; c9
     retn                                      ; c3
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -8176,5 +8218,5 @@
     mov word [bp+010h], ax                    ; 89 46 10
     jmp near 05e85h                           ; e9 2b 00
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -8517,5 +8559,5 @@
     retf                                      ; cb
     jmp near 05e85h                           ; e9 ba fc
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -8557,5 +8599,5 @@
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     jmp near 05e85h                           ; e9 44 fc
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -8845,5 +8887,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -9163,5 +9205,5 @@
     je short 06856h                           ; 74 0e
     push 00884h                               ; 68 84 08
-    push 0101ah                               ; 68 1a 10
+    push 010a2h                               ; 68 a2 10
     push strict byte 00007h                   ; 6a 07
     call 018e9h                               ; e8 96 b0
@@ -9224,5 +9266,5 @@
     je short 068bfh                           ; 74 0e
     push 0088eh                               ; 68 8e 08
-    push 0101ah                               ; 68 1a 10
+    push 010a2h                               ; 68 a2 10
     push strict byte 00007h                   ; 6a 07
     call 018e9h                               ; e8 2d b0
@@ -10516,5 +10558,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-01ah]                         ; 8d 46 e6
-    call 08b1ah                               ; e8 63 16
+    call 08caah                               ; e8 f3 17
     mov byte [bp-01ah], 025h                  ; c6 46 e6 25
     push strict byte 00008h                   ; 6a 08
@@ -10572,5 +10614,5 @@
     cmp bx, 00200h                            ; 81 fb 00 02
     je short 07574h                           ; 74 20
-    mov bx, 00c52h                            ; bb 52 0c
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -10600,5 +10642,5 @@
     mov dx, di                                ; 89 fa
     xor cx, cx                                ; 31 c9
-    call 08ab0h                               ; e8 01 15
+    call 08c40h                               ; e8 91 16
     mov word [bp-00eh], dx                    ; 89 56 f2
     mov es, [bp-006h]                         ; 8e 46 fa
@@ -11028,5 +11070,5 @@
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b1ah                               ; e8 8d 11
+    call 08caah                               ; e8 1d 13
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
@@ -11069,5 +11111,5 @@
     mov bx, word [bp-010h]                    ; 8b 5e f0
     xor cx, cx                                ; 31 c9
-    call 08ae9h                               ; e8 c0 10
+    call 08c79h                               ; e8 50 12
     push dx                                   ; 52
     push ax                                   ; 50
@@ -11077,5 +11119,5 @@
     mov ax, 0026ah                            ; b8 6a 02
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08a09h                               ; e8 ca 0f
+    call 08b9dh                               ; e8 5e 11
     mov es, [bp-004h]                         ; 8e 46 fc
     movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
@@ -11138,5 +11180,5 @@
     add ax, 0026ah                            ; 05 6a 02
     mov dx, word [bp-006h]                    ; 8b 56 fa
-    call 08a7fh                               ; e8 6f 0f
+    call 08c13h                               ; e8 03 11
     leave                                     ; c9
     pop di                                    ; 5f
@@ -11180,15 +11222,15 @@
     mov ax, di                                ; 89 f8
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b1ah                               ; e8 a4 0f
+    call 08caah                               ; e8 34 11
     lea ax, [di+00080h]                       ; 8d 85 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b1ah                               ; e8 95 0f
+    call 08caah                               ; e8 25 11
     lea ax, [di+00200h]                       ; 8d 85 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b1ah                               ; e8 86 0f
+    call 08caah                               ; e8 16 11
     mov ax, word [bp-006h]                    ; 8b 46 fa
     add ax, 00108h                            ; 05 08 01
@@ -11322,10 +11364,10 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b1ah                               ; e8 6e 0e
+    call 08caah                               ; e8 fe 0f
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b1ah                               ; e8 5f 0e
+    call 08caah                               ; e8 ef 0f
     mov ax, si                                ; 89 f0
     add ah, 002h                              ; 80 c4 02
@@ -11334,5 +11376,5 @@
     xor bx, bx                                ; 31 db
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b1ah                               ; e8 4c 0e
+    call 08caah                               ; e8 dc 0f
     lea ax, [di+00108h]                       ; 8d 85 08 01
     cwd                                       ; 99
@@ -11497,5 +11539,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-@ahci_read_sectors:                          ; 0xf7e55 LB 0x8b
+@ahci_read_sectors:                          ; 0xf7e55 LB 0x91
     push si                                   ; 56
     push di                                   ; 57
@@ -11530,5 +11572,7 @@
     mov es, [bp+00ah]                         ; 8e 46 0a
     mov bx, di                                ; 89 fb
-    mov cx, word [es:bx+00ah]                 ; 26 8b 4f 0a
+    mov ax, word [es:bx+00ah]                 ; 26 8b 47 0a
+    mov word [es:bx+014h], ax                 ; 26 89 47 14
+    mov cx, ax                                ; 89 c1
     sal cx, 009h                              ; c1 e1 09
     shr cx, 1                                 ; d1 e9
@@ -11545,5 +11589,5 @@
     mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
     xor ax, ax                                ; 31 c0
-    call 07779h                               ; e8 a1 f8
+    call 07779h                               ; e8 9b f8
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
@@ -11551,5 +11595,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-@ahci_write_sectors:                         ; 0xf7ee0 LB 0x65
+@ahci_write_sectors:                         ; 0xf7ee6 LB 0x6d
     push si                                   ; 56
     push bp                                   ; 55
@@ -11561,15 +11605,15 @@
     sub bx, strict byte 0000ch                ; 83 eb 0c
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 07f08h                          ; 76 0f
+    jbe short 07f0eh                          ; 76 0f
     push bx                                   ; 53
     push 00bcbh                               ; 68 cb 0b
     push 00bach                               ; 68 ac 0b
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 e4 99
+    call 018e9h                               ; e8 de 99
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, cx                                ; 8e c1
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07765h                               ; e8 51 f8
+    call 07765h                               ; e8 4b f8
     mov es, cx                                ; 8e c1
     add bx, si                                ; 01 f3
@@ -11577,18 +11621,20 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c54h                               ; e8 2c fd
+    call 07c54h                               ; e8 26 fd
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 07950h                               ; e8 1e fa
+    call 07950h                               ; e8 18 fa
     mov es, cx                                ; 8e c1
+    mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
+    mov word [es:si+014h], dx                 ; 26 89 54 14
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07779h                               ; e8 3b f8
+    call 07779h                               ; e8 2d f8
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf7f45 LB 0x16e
+ahci_cmd_packet_:                            ; 0xf7f53 LB 0x16e
     push si                                   ; 56
     push di                                   ; 57
@@ -11600,22 +11646,22 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 be 96
+    call 0161ch                               ; e8 b0 96
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
     cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
-    jne short 07f89h                          ; 75 1f
-    mov bx, 00c52h                            ; bb 52 0c
+    jne short 07f97h                          ; 75 1f
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 39 99
+    call 018aeh                               ; e8 2b 99
     push 00bdeh                               ; 68 de 0b
     push 00beeh                               ; 68 ee 0b
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 69 99
+    call 018e9h                               ; e8 5b 99
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 080adh                           ; e9 24 01
+    jmp near 080bbh                           ; e9 24 01
     test byte [bp+008h], 001h                 ; f6 46 08 01
-    jne short 07f83h                          ; 75 f4
+    jne short 07f91h                          ; 75 f4
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     mov dx, word [bp+00ch]                    ; 8b 56 0c
@@ -11623,5 +11669,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 07f98h                               ; e2 fa
+    loop 07fa6h                               ; e2 fa
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:si], ax                      ; 26 89 04
@@ -11635,5 +11681,5 @@
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     xor cx, cx                                ; 31 c9
-    call 08ab0h                               ; e8 eb 0a
+    call 08c40h                               ; e8 6d 0c
     mov word [es:si+00ah], ax                 ; 26 89 44 0a
     xor di, di                                ; 31 ff
@@ -11642,8 +11688,8 @@
     mov word [bp-00ah], di                    ; 89 7e f6
     mov word [bp-008h], ax                    ; 89 46 f8
-    add word [bp-010h], strict byte 0fff4h    ; 83 46 f0 f4
+    sub word [bp-010h], strict byte 0000ch    ; 83 6e f0 0c
     xor ax, ax                                ; 31 c0
     mov dx, word [bp-006h]                    ; 8b 56 fa
-    call 07765h                               ; e8 80 f7
+    call 07765h                               ; e8 72 f7
     mov es, [bp-004h]                         ; 8e 46 fc
     mov bx, word [bp-010h]                    ; 8b 5e f0
@@ -11652,5 +11698,5 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c54h                               ; e8 57 fc
+    call 07c54h                               ; e8 49 fc
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     push ax                                   ; 50
@@ -11659,5 +11705,5 @@
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-006h]                    ; 8b 56 fa
-    call 08b27h                               ; e8 16 0b
+    call 08cb7h                               ; e8 98 0c
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -11666,5 +11712,5 @@
     mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
     test ax, ax                               ; 85 c0
-    je short 0804fh                           ; 74 27
+    je short 0805dh                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-006h]                         ; 8e 46 fa
@@ -11679,5 +11725,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 07950h                               ; e8 f6 f8
+    call 07950h                               ; e8 e8 f8
     les bx, [bp-00ah]                         ; c4 5e f6
     mov ax, word [es:bx+004h]                 ; 26 8b 47 04
@@ -11702,11 +11748,11 @@
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 07779h                               ; e8 e0 f6
+    call 07779h                               ; e8 d2 f6
     les bx, [bp-00ah]                         ; c4 5e f6
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 080abh                          ; 75 05
+    jne short 080b9h                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 080adh                          ; eb 02
+    jmp short 080bbh                          ; eb 02
     xor ax, ax                                ; 31 c0
     leave                                     ; c9
@@ -11714,31 +11760,31 @@
     pop si                                    ; 5e
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf80b3 LB 0x368
+ahci_port_detect_device_:                    ; 0xf80c1 LB 0x3c3
     push cx                                   ; 51
     push si                                   ; 56
     push di                                   ; 57
-    enter 00218h, 000h                        ; c8 18 02 00
+    enter 00220h, 000h                        ; c8 20 02 00
     mov di, ax                                ; 89 c7
-    mov word [bp-014h], dx                    ; 89 56 ec
-    mov byte [bp-004h], bl                    ; 88 5e fc
+    mov word [bp-00ah], dx                    ; 89 56 f6
+    mov byte [bp-002h], bl                    ; 88 5e fe
     movzx cx, bl                              ; 0f b6 cb
     mov bx, cx                                ; 89 cb
-    call 07c54h                               ; e8 8a fb
+    call 07c54h                               ; e8 7c fb
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 49 95
-    mov word [bp-016h], ax                    ; 89 46 ea
+    call 0161ch                               ; e8 3b 95
+    mov word [bp-01eh], ax                    ; 89 46 e2
     mov si, 00122h                            ; be 22 01
     mov word [bp-008h], ax                    ; 89 46 f8
-    mov word [bp-00ch], si                    ; 89 76 f4
-    mov word [bp-00ah], ax                    ; 89 46 f6
+    mov word [bp-00eh], si                    ; 89 76 f2
+    mov word [bp-00ch], ax                    ; 89 46 f4
     sal cx, 007h                              ; c1 e1 07
-    mov word [bp-00eh], cx                    ; 89 4e f2
+    mov word [bp-012h], cx                    ; 89 4e ee
     mov ax, cx                                ; 89 c8
     add ax, 0012ch                            ; 05 2c 01
     cwd                                       ; 99
-    mov word [bp-018h], ax                    ; 89 46 e8
+    mov word [bp-020h], ax                    ; 89 46 e0
     mov bx, dx                                ; 89 d3
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     mov cx, bx                                ; 89 d9
@@ -11748,5 +11794,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     add dx, strict byte 00004h                ; 83 c2 04
@@ -11758,7 +11804,7 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
-    mov ax, word [bp-018h]                    ; 8b 46 e8
+    mov ax, word [bp-020h]                    ; 8b 46 e0
     mov cx, bx                                ; 89 d9
     xchg cx, ax                               ; 91
@@ -11767,5 +11813,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     add dx, strict byte 00004h                ; 83 c2 04
@@ -11777,8 +11823,8 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov ax, word [bp-012h]                    ; 8b 46 ee
     add ax, 00128h                            ; 05 28 01
     cwd                                       ; 99
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov bx, word [es:di+00260h]               ; 26 8b 9d 60 02
     mov cx, dx                                ; 89 d1
@@ -11789,5 +11835,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     add dx, strict byte 00004h                ; 83 c2 04
@@ -11800,26 +11846,25 @@
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 07847h                               ; e8 c0 f6
+    call 07847h                               ; e8 b2 f6
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne near 08416h                           ; 0f 85 88 02
+    jne near 0847fh                           ; 0f 85 e3 02
     mov es, [bp-008h]                         ; 8e 46 f8
     mov al, byte [es:si+001edh]               ; 26 8a 84 ed 01
-    mov byte [bp-006h], al                    ; 88 46 fa
+    mov byte [bp-004h], al                    ; 88 46 fc
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 08416h                           ; 0f 83 77 02
-    mov dx, word [bp-00eh]                    ; 8b 56 f2
+    jnc near 0847fh                           ; 0f 83 d2 02
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, 00118h                            ; 81 c2 18 01
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov ax, word [es:di+00260h]               ; 26 8b 85 60 02
     mov bx, strict word 00010h                ; bb 10 00
     xor cx, cx                                ; 31 c9
-    call 0778dh                               ; e8 d7 f5
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    call 0778dh                               ; e8 c9 f5
+    mov ax, word [bp-012h]                    ; 8b 46 ee
     add ax, 00124h                            ; 05 24 01
     cwd                                       ; 99
-    mov es, [bp-014h]                         ; 8e 46 ec
-    mov bx, word [es:di+00260h]               ; 26 8b 9d 60 02
     mov cx, dx                                ; 89 d1
-    mov dx, bx                                ; 89 da
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -11827,5 +11872,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov es, [bp-014h]                         ; 8e 46 ec
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     add dx, strict byte 00004h                ; 83 c2 04
@@ -11835,14 +11880,16 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    mov cl, byte [bp-006h]                    ; 8a 4e fa
+    mov bx, ax                                ; 89 c3
+    mov ax, dx                                ; 89 d0
+    mov cl, byte [bp-004h]                    ; 8a 4e fc
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne near 08373h                           ; 0f 85 81 01
-    cmp ax, 00101h                            ; 3d 01 01
-    jne near 08373h                           ; 0f 85 7a 01
+    jne near 083d9h                           ; 0f 85 d7 01
+    cmp bx, 00101h                            ; 81 fb 01 01
+    jne near 083d9h                           ; 0f 85 cf 01
     mov es, [bp-008h]                         ; 8e 46 f8
     db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00
-    lea dx, [bp-00218h]                       ; 8d 96 e8 fd
+    lea dx, [bp-00220h]                       ; 8d 96 e0 fd
     mov word [es:si+004h], dx                 ; 26 89 54 04
     mov [es:si+006h], ss                      ; 26 8c 54 06
@@ -11851,64 +11898,67 @@
     mov bx, 000ech                            ; bb ec 00
     mov ax, si                                ; 89 f0
-    mov dx, word [bp-016h]                    ; 8b 56 ea
-    call 07950h                               ; e8 2c f7
-    mov dh, cl                                ; 88 ce
-    test byte [bp-00218h], 080h               ; f6 86 e8 fd 80
+    mov dx, word [bp-01eh]                    ; 8b 56 e2
+    call 07950h                               ; e8 1b f7
+    mov byte [bp-006h], cl                    ; 88 4e fa
+    test byte [bp-00220h], 080h               ; f6 86 e0 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov byte [bp-002h], al                    ; 88 46 fe
-    mov ax, word [bp-00216h]                  ; 8b 86 ea fd
-    mov word [bp-010h], ax                    ; 89 46 f0
-    mov di, word [bp-00212h]                  ; 8b be ee fd
-    mov cx, word [bp-0020ch]                  ; 8b 8e f4 fd
-    mov ax, word [bp-001a0h]                  ; 8b 86 60 fe
-    mov bx, word [bp-0019eh]                  ; 8b 9e 62 fe
-    mov word [bp-012h], bx                    ; 89 5e ee
-    cmp bx, 00fffh                            ; 81 fb ff 0f
-    jne short 08261h                          ; 75 0e
-    cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 08261h                          ; 75 09
-    mov ax, word [bp-00150h]                  ; 8b 86 b0 fe
-    mov word [bp-012h], strict word 00000h    ; c7 46 ee 00 00
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    add bx, word [bp-00ch]                    ; 03 5e f4
-    mov dl, byte [bp-004h]                    ; 8a 56 fc
-    mov byte [es:bx+001e9h], dl               ; 26 88 97 e9 01
-    movzx bx, dh                              ; 0f b6 de
-    imul bx, bx, strict byte 00018h           ; 6b db 18
-    mov si, word [bp-00ch]                    ; 8b 76 f4
-    add si, bx                                ; 01 de
+    mov dx, word [bp-0021eh]                  ; 8b 96 e2 fd
+    mov word [bp-018h], dx                    ; 89 56 e8
+    mov dx, word [bp-0021ah]                  ; 8b 96 e6 fd
+    mov word [bp-014h], dx                    ; 89 56 ec
+    mov dx, word [bp-00214h]                  ; 8b 96 ec fd
+    mov word [bp-01ah], dx                    ; 89 56 e6
+    mov dx, word [bp-001a8h]                  ; 8b 96 58 fe
+    mov word [bp-010h], dx                    ; 89 56 f0
+    mov di, word [bp-001a6h]                  ; 8b be 5a fe
+    cmp di, 00fffh                            ; 81 ff ff 0f
+    jne short 08278h                          ; 75 10
+    cmp dx, strict byte 0ffffh                ; 83 fa ff
+    jne short 08278h                          ; 75 0b
+    mov dx, word [bp-00158h]                  ; 8b 96 a8 fe
+    mov word [bp-010h], dx                    ; 89 56 f0
+    mov di, word [bp-00156h]                  ; 8b be aa fe
+    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    add bx, word [bp-00eh]                    ; 03 5e f2
+    mov ah, byte [bp-002h]                    ; 8a 66 fe
+    mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
+    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
+    imul dx, dx, strict byte 00018h           ; 6b d2 18
+    mov si, word [bp-00eh]                    ; 8b 76 f2
+    add si, dx                                ; 01 d6
     mov word [es:si+01eh], 0ff05h             ; 26 c7 44 1e 05 ff
-    mov dl, byte [bp-002h]                    ; 8a 56 fe
-    mov byte [es:si+020h], dl                 ; 26 88 54 20
+    mov byte [es:si+020h], al                 ; 26 88 44 20
     mov byte [es:si+021h], 000h               ; 26 c6 44 21 00
     mov word [es:si+024h], 00200h             ; 26 c7 44 24 00 02
     mov byte [es:si+023h], 001h               ; 26 c6 44 23 01
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     mov word [es:si+032h], ax                 ; 26 89 44 32
-    mov ax, word [bp-012h]                    ; 8b 46 ee
-    mov word [es:si+034h], ax                 ; 26 89 44 34
-    mov word [es:si+02ch], di                 ; 26 89 7c 2c
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov word [es:si+034h], di                 ; 26 89 7c 34
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [es:si+02ch], ax                 ; 26 89 44 2c
+    mov ax, word [bp-018h]                    ; 8b 46 e8
     mov word [es:si+02eh], ax                 ; 26 89 44 2e
-    mov word [es:si+030h], cx                 ; 26 89 4c 30
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    mov word [es:si+030h], ax                 ; 26 89 44 30
+    mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 082c8h                           ; 72 0c
-    jbe short 082d0h                          ; 76 12
+    jc short 082e3h                           ; 72 0c
+    jbe short 082ebh                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 082d8h                           ; 74 16
+    je short 082f3h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 082d4h                           ; 74 0e
-    jmp short 0831ah                          ; eb 52
+    je short 082efh                           ; 74 0e
+    jmp short 0833ah                          ; eb 57
     test al, al                               ; 84 c0
-    jne short 0831ah                          ; 75 4e
+    jne short 0833ah                          ; 75 53
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 082dah                          ; eb 0a
+    jmp short 082f5h                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 082dah                          ; eb 06
+    jmp short 082f5h                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 082dah                          ; eb 02
+    jmp short 082f5h                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov al, dl                                ; 88 d0
@@ -11916,49 +11966,78 @@
     movzx bx, al                              ; 0f b6 d8
     mov ax, bx                                ; 89 d8
-    call 0165ch                               ; e8 76 93
+    call 0165ch                               ; e8 5b 93
     test al, al                               ; 84 c0
-    je short 0831ah                           ; 74 30
+    je short 0833ah                           ; 74 35
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 69 93
-    movzx cx, al                              ; 0f b6 c8
+    call 0165ch                               ; e8 4e 93
+    xor ah, ah                                ; 30 e4
+    mov cx, ax                                ; 89 c1
     sal cx, 008h                              ; c1 e1 08
     movzx ax, dl                              ; 0f b6 c2
-    call 0165ch                               ; e8 5d 93
+    call 0165ch                               ; e8 41 93
     xor ah, ah                                ; 30 e4
     add ax, cx                                ; 01 c8
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-01ch], ax                    ; 89 46 e4
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 4d 93
-    movzx di, al                              ; 0f b6 f8
+    call 0165ch                               ; e8 31 93
+    xor ah, ah                                ; 30 e4
+    mov word [bp-016h], ax                    ; 89 46 ea
     mov ax, bx                                ; 89 d8
-    call 0165ch                               ; e8 45 93
-    movzx cx, al                              ; 0f b6 c8
-    movzx si, dh                              ; 0f b6 f6
-    imul si, si, strict byte 00018h           ; 6b f6 18
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    add si, word [bp-00ch]                    ; 03 76 f4
-    mov word [es:si+026h], di                 ; 26 89 7c 26
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    call 0165ch                               ; e8 27 93
+    movzx dx, al                              ; 0f b6 d0
+    jmp short 08349h                          ; eb 0f
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [bp-016h], ax                    ; 89 46 ea
+    mov dx, word [bp-01ah]                    ; 8b 56 e6
+    mov bx, 00cdah                            ; bb da 0c
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 018aeh                               ; e8 5a 95
+    push di                                   ; 57
+    push word [bp-010h]                       ; ff 76 f0
+    push dx                                   ; 52
+    push word [bp-016h]                       ; ff 76 ea
+    push word [bp-01ch]                       ; ff 76 e4
+    push word [bp-01ah]                       ; ff 76 e6
+    push word [bp-014h]                       ; ff 76 ec
+    push word [bp-018h]                       ; ff 76 e8
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    push ax                                   ; 50
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    push ax                                   ; 50
+    push 00c0eh                               ; 68 0e 0c
+    push strict byte 00004h                   ; 6a 04
+    call 018e9h                               ; e8 6f 95
+    add sp, strict byte 00018h                ; 83 c4 18
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    les si, [bp-00eh]                         ; c4 76 f2
+    add si, ax                                ; 01 c6
+    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov word [es:si+026h], ax                 ; 26 89 44 26
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     mov word [es:si+028h], ax                 ; 26 89 44 28
-    mov word [es:si+02ah], cx                 ; 26 89 4c 2a
-    mov bx, word [bp-00ch]                    ; 8b 5e f4
+    mov word [es:si+02ah], dx                 ; 26 89 54 2a
+    mov bx, word [bp-00eh]                    ; 8b 5e f2
     mov dl, byte [es:bx+0019eh]               ; 26 8a 97 9e 01
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov al, byte [bp-004h]                    ; 8a 46 fc
     add AL, strict byte 00ch                  ; 04 0c
     movzx bx, dl                              ; 0f b6 da
-    add bx, word [bp-00ch]                    ; 03 5e f4
+    add bx, word [bp-00eh]                    ; 03 5e f2
     mov byte [es:bx+0019fh], al               ; 26 88 87 9f 01
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
-    mov bx, word [bp-00ch]                    ; 8b 5e f4
+    mov bx, word [bp-00eh]                    ; 8b 5e f2
     mov byte [es:bx+0019eh], dl               ; 26 88 97 9e 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 a0 92
+    call 01600h                               ; e8 3a 92
     mov dl, al                                ; 88 c2
     db  0feh, 0c2h
@@ -11967,14 +12046,14 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 9e 92
-    jmp near 08408h                           ; e9 95 00
+    call 0160eh                               ; e8 38 92
+    jmp near 08471h                           ; e9 98 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne near 08408h                           ; 0f 85 8d 00
-    cmp ax, 00101h                            ; 3d 01 01
-    jne near 08408h                           ; 0f 85 86 00
+    jne near 08471h                           ; 0f 85 90 00
+    cmp bx, 00101h                            ; 81 fb 01 01
+    jne near 08471h                           ; 0f 85 88 00
     mov es, [bp-008h]                         ; 8e 46 f8
     db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00
-    lea dx, [bp-00218h]                       ; 8d 96 e8 fd
+    lea dx, [bp-00220h]                       ; 8d 96 e0 fd
     mov word [es:si+004h], dx                 ; 26 89 54 04
     mov [es:si+006h], ss                      ; 26 8c 54 06
@@ -11983,36 +12062,37 @@
     mov bx, 000a1h                            ; bb a1 00
     mov ax, si                                ; 89 f0
-    mov dx, word [bp-016h]                    ; 8b 56 ea
-    call 07950h                               ; e8 a3 f5
-    test byte [bp-00218h], 080h               ; f6 86 e8 fd 80
+    mov dx, word [bp-01eh]                    ; 8b 56 e2
+    call 07950h                               ; e8 3c f5
+    test byte [bp-00220h], 080h               ; f6 86 e0 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov dx, ax                                ; 89 c2
+    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    mov es, [bp-01eh]                         ; 8e 46 e2
     add bx, si                                ; 01 f3
-    mov ah, byte [bp-004h]                    ; 8a 66 fc
-    mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov byte [es:bx+001e9h], al               ; 26 88 87 e9 01
     movzx si, cl                              ; 0f b6 f1
     imul si, si, strict byte 00018h           ; 6b f6 18
     add si, 00122h                            ; 81 c6 22 01
     mov word [es:si+01eh], 00505h             ; 26 c7 44 1e 05 05
-    mov byte [es:si+020h], al                 ; 26 88 44 20
+    mov byte [es:si+020h], dl                 ; 26 88 54 20
     mov word [es:si+024h], 00800h             ; 26 c7 44 24 00 08
-    les bx, [bp-00ch]                         ; c4 5e f4
+    les bx, [bp-00eh]                         ; c4 5e f2
     mov dl, byte [es:bx+001afh]               ; 26 8a 97 af 01
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov al, byte [bp-004h]                    ; 8a 46 fc
     add AL, strict byte 00ch                  ; 04 0c
     movzx bx, dl                              ; 0f b6 da
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-01eh]                         ; 8e 46 e2
     add bx, 00122h                            ; 81 c3 22 01
     mov byte [es:bx+001b0h], al               ; 26 88 87 b0 01
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
-    les bx, [bp-00ch]                         ; c4 5e f4
+    les bx, [bp-00eh]                         ; c4 5e f2
     mov byte [es:bx+001afh], dl               ; 26 88 97 af 01
-    inc byte [bp-006h]                        ; fe 46 fa
-    mov al, byte [bp-006h]                    ; 8a 46 fa
-    les bx, [bp-00ch]                         ; c4 5e f4
+    inc byte [bp-004h]                        ; fe 46 fc
+    mov al, byte [bp-004h]                    ; 8a 46 fc
+    les bx, [bp-00eh]                         ; c4 5e f2
     mov byte [es:bx+001edh], al               ; 26 88 87 ed 01
     leave                                     ; c9
@@ -12021,5 +12101,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf841b LB 0x40
+ahci_mem_alloc_:                             ; 0xf8484 LB 0x40
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12031,7 +12111,7 @@
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0161ch                               ; e8 f1 91
+    call 0161ch                               ; e8 88 91
     test ax, ax                               ; 85 c0
-    je short 08454h                           ; 74 25
+    je short 084bdh                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
@@ -12040,5 +12120,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08437h                               ; e2 fa
+    loop 084a0h                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
@@ -12046,8 +12126,8 @@
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 08444h                               ; e2 fa
+    loop 084adh                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0162ah                               ; e8 d8 91
+    call 0162ah                               ; e8 6f 91
     mov ax, si                                ; 89 f0
     pop bp                                    ; 5d
@@ -12058,5 +12138,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf845b LB 0x120
+ahci_hba_init_:                              ; 0xf84c4 LB 0x120
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12068,5 +12148,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 ad 91
+    call 0161ch                               ; e8 44 91
     mov bx, 00122h                            ; bb 22 01
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -12085,8 +12165,8 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 0841bh                               ; e8 87 ff
+    call 08484h                               ; e8 87 ff
     mov di, ax                                ; 89 c7
     test ax, ax                               ; 85 c0
-    je near 0855dh                            ; 0f 84 c1 00
+    je near 085c6h                            ; 0f 84 c1 00
     mov es, [bp-006h]                         ; 8e 46 fa
     mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
@@ -12102,5 +12182,5 @@
     mov dx, strict word 00004h                ; ba 04 00
     mov ax, si                                ; 89 f0
-    call 0778dh                               ; e8 bd f2
+    call 0778dh                               ; e8 54 f2
     mov ax, strict word 00004h                ; b8 04 00
     xor cx, cx                                ; 31 c9
@@ -12119,5 +12199,5 @@
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 084d0h                          ; 75 de
+    jne short 08539h                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
@@ -12137,33 +12217,33 @@
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 07847h                               ; e8 31 f3
+    call 07847h                               ; e8 c8 f2
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
-    jmp short 0852ah                          ; eb 09
+    jmp short 08593h                          ; eb 09
     inc byte [bp-002h]                        ; fe 46 fe
     cmp byte [bp-002h], 020h                  ; 80 7e fe 20
-    jnc short 0855bh                          ; 73 31
+    jnc short 085c4h                          ; 73 31
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     mov ax, strict word 00001h                ; b8 01 00
     xor dx, dx                                ; 31 d2
-    jcxz 0853bh                               ; e3 06
+    jcxz 085a4h                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08535h                               ; e2 fa
+    loop 0859eh                               ; e2 fa
     mov bx, ax                                ; 89 c3
     mov cx, dx                                ; 89 d1
     mov dx, strict word 0000ch                ; ba 0c 00
     mov ax, si                                ; 89 f0
-    call 07811h                               ; e8 ca f2
+    call 07811h                               ; e8 61 f2
     test al, al                               ; 84 c0
-    je short 08521h                           ; 74 d6
+    je short 0858ah                           ; 74 d6
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     xor ax, ax                                ; 31 c0
     mov dx, di                                ; 89 fa
-    call 080b3h                               ; e8 5d fb
+    call 080c1h                               ; e8 02 fb
     dec byte [bp-004h]                        ; fe 4e fc
-    jne short 08521h                          ; 75 c6
+    jne short 0858ah                          ; 75 c6
     xor ax, ax                                ; 31 c0
     leave                                     ; c9
@@ -12177,11 +12257,10 @@
     add AL, strict byte 003h                  ; 04 03
     add al, byte [bx+di]                      ; 02 01
-    add byte [bx+si-07ah], cl                 ; 00 48 86
-    xchg byte [es:si], ch                     ; 26 86 2c
-    xchg byte [bp+si], dh                     ; 86 32
-    xchg byte [bx+si], bh                     ; 86 38
-    xchg byte [04486h], bh                    ; 86 3e 86 44
-    xchg byte [bx+si-07ah], cl                ; 86 48 86
-_ahci_init:                                  ; 0xf857b LB 0xf9
+    add byte [bx+di-0707ah], dh               ; 00 b1 86 8f
+    xchg byte [di-0647ah], dl                 ; 86 95 86 9b
+    xchg byte [bx+di-0587ah], ah              ; 86 a1 86 a7
+    xchg byte [di-04e7ah], ch                 ; 86 ad 86 b1
+    db  086h
+_ahci_init:                                  ; 0xf85e4 LB 0xf9
     push si                                   ; 56
     push di                                   ; 57
@@ -12189,8 +12268,8 @@
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 08942h                               ; e8 b8 03
+    call 08ad6h                               ; e8 e3 04
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je near 08670h                            ; 0f 84 dd 00
+    je near 086d9h                            ; 0f 84 dd 00
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
@@ -12200,8 +12279,8 @@
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 0896ah                               ; e8 c2 03
+    call 08afeh                               ; e8 ed 04
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 085d1h                           ; 74 23
+    je short 0863ah                           ; 74 23
     movzx bx, cl                              ; 0f b6 d9
     movzx di, byte [bp-004h]                  ; 0f b6 7e fc
@@ -12209,7 +12288,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 0896ah                               ; e8 aa 03
+    call 08afeh                               ; e8 d5 04
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 085d1h                           ; 74 0d
+    je short 0863ah                           ; 74 0d
     mov al, cl                                ; 88 c8
     db  0feh, 0c0h
@@ -12218,7 +12297,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    jmp short 085a5h                          ; eb d4
+    jmp short 0860eh                          ; eb d4
     test cl, cl                               ; 84 c9
-    je near 08670h                            ; 0f 84 99 00
+    je near 086d9h                            ; 0f 84 99 00
     add cl, 002h                              ; 80 c1 02
     movzx bx, cl                              ; 0f b6 d9
@@ -12227,7 +12306,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 0896ah                               ; e8 7e 03
+    call 08afeh                               ; e8 a9 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne near 08670h                           ; 0f 85 7e 00
+    jne near 086d9h                           ; 0f 85 7e 00
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
     mov al, cl                                ; 88 c8
@@ -12236,29 +12315,29 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 0898bh                               ; e8 87 03
+    call 08b1fh                               ; e8 b2 04
     mov dx, ax                                ; 89 c2
     and ax, strict word 0000fh                ; 25 0f 00
     sub ax, strict word 00004h                ; 2d 04 00
     cmp ax, strict word 0000bh                ; 3d 0b 00
-    jnbe short 08648h                         ; 77 37
+    jnbe short 086b1h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 08564h                            ; bf 64 85
+    mov di, 085cdh                            ; bf cd 85
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-07a95h]               ; 2e 8b 85 6b 85
+    mov ax, word [cs:di-07a2ch]               ; 2e 8b 85 d4 85
     jmp ax                                    ; ff e0
     mov byte [bp-002h], 010h                  ; c6 46 fe 10
-    jmp short 08648h                          ; eb 1c
+    jmp short 086b1h                          ; eb 1c
     mov byte [bp-002h], 014h                  ; c6 46 fe 14
-    jmp short 08648h                          ; eb 16
+    jmp short 086b1h                          ; eb 16
     mov byte [bp-002h], 018h                  ; c6 46 fe 18
-    jmp short 08648h                          ; eb 10
+    jmp short 086b1h                          ; eb 10
     mov byte [bp-002h], 01ch                  ; c6 46 fe 1c
-    jmp short 08648h                          ; eb 0a
+    jmp short 086b1h                          ; eb 0a
     mov byte [bp-002h], 020h                  ; c6 46 fe 20
-    jmp short 08648h                          ; eb 04
+    jmp short 086b1h                          ; eb 04
     mov byte [bp-002h], 024h                  ; c6 46 fe 24
     mov si, dx                                ; 89 d6
@@ -12267,19 +12346,146 @@
     mov al, byte [bp-002h]                    ; 8a 46 fe
     test al, al                               ; 84 c0
-    je short 08670h                           ; 74 19
+    je short 086d9h                           ; 74 19
     movzx bx, al                              ; 0f b6 d8
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 089aah                               ; e8 45 03
+    call 08b3eh                               ; e8 70 04
     test AL, strict byte 001h                 ; a8 01
-    je short 08670h                           ; 74 07
+    je short 086d9h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, si                                ; 01 f0
-    call 0845bh                               ; e8 eb fd
+    call 084c4h                               ; e8 eb fd
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-pci16_select_reg_:                           ; 0xf8674 LB 0x21
+apm_out_str_:                                ; 0xf86dd LB 0x36
+    push bx                                   ; 53
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    mov bx, ax                                ; 89 c3
+    cmp byte [bx], 000h                       ; 80 3f 00
+    je short 086f2h                           ; 74 0a
+    mov al, byte [bx]                         ; 8a 07
+    out DX, AL                                ; ee
+    inc bx                                    ; 43
+    mov al, byte [bx]                         ; 8a 07
+    db  00ah, 0c0h
+    ; or al, al                                 ; 0a c0
+    jne short 086eah                          ; 75 f8
+    pop bp                                    ; 5d
+    pop bx                                    ; 5b
+    retn                                      ; c3
+    xchg word [ss:di], ax                     ; 36 87 05
+    mov byte [bx+si-079h], cl                 ; 88 48 87
+    arpl word [bx-077fbh], ax                 ; 63 87 05 88
+    mov es, [bx-077fbh]                       ; 8e 87 05 88
+    xchg bx, ax                               ; 93
+    xchg dx, bx                               ; 87 da
+    xchg dx, bx                               ; 87 da
+    xchg dx, bx                               ; 87 da
+    xchg bp, dx                               ; 87 d5
+    xchg dx, bx                               ; 87 da
+    xchg dx, bx                               ; 87 da
+    xchg bp, cx                               ; 87 cd
+    db  087h
+_apm_function:                               ; 0xf8713 LB 0xf5
+    push si                                   ; 56
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    and byte [bp+01ah], 0feh                  ; 80 66 1a fe
+    mov ax, word [bp+014h]                    ; 8b 46 14
+    xor ah, ah                                ; 30 e4
+    cmp ax, strict word 0000eh                ; 3d 0e 00
+    jnbe near 087dah                          ; 0f 87 b3 00
+    mov bx, ax                                ; 89 c3
+    add bx, ax                                ; 01 c3
+    mov dx, word [bp+01ah]                    ; 8b 56 1a
+    or dl, 001h                               ; 80 ca 01
+    jmp word [cs:bx-0790bh]                   ; 2e ff a7 f5 86
+    mov word [bp+014h], 00102h                ; c7 46 14 02 01
+    mov word [bp+00eh], 0504dh                ; c7 46 0e 4d 50
+    mov word [bp+012h], strict word 00003h    ; c7 46 12 03 00
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+    mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
+    mov word [bp+00eh], 08d24h                ; c7 46 0e 24 8d
+    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
+    mov ax, strict word 0fff0h                ; b8 f0 ff
+    mov word [bp+008h], ax                    ; 89 46 08
+    mov word [bp+006h], ax                    ; 89 46 06
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+    mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
+    mov word [bp+00eh], 0da40h                ; c7 46 0e 40 da
+    mov ax, 0f000h                            ; b8 00 f0
+    mov word [bp+012h], ax                    ; 89 46 12
+    mov word [bp+010h], ax                    ; 89 46 10
+    mov ax, strict word 0fff0h                ; b8 f0 ff
+    mov word [bp+008h], ax                    ; 89 46 08
+    mov word [bp+006h], ax                    ; 89 46 06
+    xor bx, bx                                ; 31 db
+    sal ebx, 010h                             ; 66 c1 e3 10
+    mov si, ax                                ; 89 c6
+    sal esi, 010h                             ; 66 c1 e6 10
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+    sti                                       ; fb
+    hlt                                       ; f4
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+    cmp word [bp+012h], strict byte 00003h    ; 83 7e 12 03
+    je short 087b9h                           ; 74 20
+    cmp word [bp+012h], strict byte 00002h    ; 83 7e 12 02
+    je short 087b1h                           ; 74 12
+    cmp word [bp+012h], strict byte 00001h    ; 83 7e 12 01
+    jne short 087c1h                          ; 75 1c
+    mov dx, 08900h                            ; ba 00 89
+    mov ax, 00c46h                            ; b8 46 0c
+    call 086ddh                               ; e8 2f ff
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+    mov dx, 08900h                            ; ba 00 89
+    mov ax, 00c4eh                            ; b8 4e 0c
+    jmp short 087abh                          ; eb f2
+    mov dx, 08900h                            ; ba 00 89
+    mov ax, 00c56h                            ; b8 56 0c
+    jmp short 087abh                          ; eb ea
+    or ah, 00ah                               ; 80 cc 0a
+    mov word [bp+014h], ax                    ; 89 46 14
+    mov word [bp+01ah], dx                    ; 89 56 1a
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+    mov word [bp+014h], 00102h                ; c7 46 14 02 01
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+    or ah, 080h                               ; 80 cc 80
+    jmp short 087c4h                          ; eb ea
+    mov bx, 00cdah                            ; bb da 0c
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 018aeh                               ; e8 c9 90
+    push word [bp+00eh]                       ; ff 76 0e
+    push word [bp+014h]                       ; ff 76 14
+    push 00c5fh                               ; 68 5f 0c
+    push strict byte 00004h                   ; 6a 04
+    call 018e9h                               ; e8 f6 90
+    add sp, strict byte 00008h                ; 83 c4 08
+    mov ax, word [bp+014h]                    ; 8b 46 14
+    xor ah, ah                                ; 30 e4
+    or ah, 00ch                               ; 80 cc 0c
+    mov word [bp+014h], ax                    ; 89 46 14
+    or byte [bp+01ah], 001h                   ; 80 4e 1a 01
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn                                      ; c3
+pci16_select_reg_:                           ; 0xf8808 LB 0x21
     push bx                                   ; 53
     push bp                                   ; 55
@@ -12297,5 +12503,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf8695 LB 0xf2
+pci16_find_device_:                          ; 0xf8829 LB 0xf2
     push si                                   ; 56
     push di                                   ; 57
@@ -12309,8 +12515,8 @@
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     test bl, 007h                             ; f6 c3 07
-    jne short 086dbh                          ; 75 2d
+    jne short 0886fh                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 08674h                               ; e8 be ff
+    call 08808h                               ; e8 be ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -12319,23 +12525,23 @@
     mov byte [bp-002h], al                    ; 88 46 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 086c9h                          ; 75 06
+    jne short 0885dh                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 0875ch                           ; e9 93 00
+    jmp near 088f0h                           ; e9 93 00
     test byte [bp-002h], 080h                 ; f6 46 fe 80
-    je short 086d6h                           ; 74 07
+    je short 0886ah                           ; 74 07
     mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
-    jmp short 086dbh                          ; eb 05
+    jmp short 0886fh                          ; eb 05
     mov word [bp-006h], strict word 00008h    ; c7 46 fa 08 00
     mov al, byte [bp-002h]                    ; 8a 46 fe
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 08703h                          ; 75 1f
+    jne short 08897h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 08703h                          ; 75 16
+    jne short 08897h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 08674h                               ; e8 7f ff
+    call 08808h                               ; e8 7f ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -12343,13 +12549,13 @@
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-004h]                    ; 3a 46 fc
-    jbe short 08703h                          ; 76 03
+    jbe short 08897h                          ; 76 03
     mov byte [bp-004h], al                    ; 88 46 fc
     test di, di                               ; 85 ff
-    je short 0870ch                           ; 74 05
+    je short 088a0h                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 0870eh                          ; eb 02
+    jmp short 088a2h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 08674h                               ; e8 61 ff
+    call 08808h                               ; e8 61 ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -12362,22 +12568,22 @@
     mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
     test di, di                               ; 85 ff
-    je short 0873dh                           ; 74 0f
+    je short 088d1h                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 08731h                               ; e2 fa
+    loop 088c5h                               ; e2 fa
     mov word [bp-00ah], ax                    ; 89 46 f6
     mov word [bp-008h], dx                    ; 89 56 f8
     mov ax, word [bp-008h]                    ; 8b 46 f8
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jne short 0874dh                          ; 75 08
+    jne short 088e1h                          ; 75 08
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    je short 08753h                           ; 74 06
+    je short 088e7h                           ; 74 06
     cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
-    je short 08759h                           ; 74 06
+    je short 088edh                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 0876bh                           ; 74 12
+    je short 088ffh                           ; 74 12
     add bx, word [bp-006h]                    ; 03 5e fa
     mov dx, bx                                ; 89 da
@@ -12385,9 +12591,9 @@
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cmp dx, ax                                ; 39 c2
-    jbe near 086a9h                           ; 0f 86 3e ff
+    jbe near 0883dh                           ; 0f 86 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 08774h                          ; 75 04
+    jne short 08908h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 08777h                          ; eb 03
+    jmp short 0890bh                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     leave                                     ; c9
@@ -12395,8 +12601,12 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    mov byte [ecx-056776b78h], al             ; 67 88 81 88 94 88 a9
-    mov byte [si-03178h], bh                  ; 88 bc 88 ce
-    db  088h
-_pci16_function:                             ; 0xf8787 LB 0x1bb
+    sti                                       ; fb
+    mov word [di], dx                         ; 89 15
+    mov ch, byte [bx+si]                      ; 8a 28
+    mov bh, byte [di]                         ; 8a 3d
+    mov dl, byte [bx+si-076h]                 ; 8a 50 8a
+    db  062h
+    db  08ah
+_pci16_function:                             ; 0xf891b LB 0x1bb
     push si                                   ; 56
     push di                                   ; 57
@@ -12410,17 +12620,17 @@
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 087beh                           ; 72 1a
-    jbe short 08816h                          ; 76 70
+    jc short 08952h                           ; 72 1a
+    jbe short 089aah                          ; 76 70
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je near 088e2h                            ; 0f 84 35 01
+    je near 08a76h                            ; 0f 84 35 01
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc near 08911h                            ; 0f 82 5d 01
+    jc near 08aa5h                            ; 0f 82 5d 01
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe near 0883bh                           ; 0f 86 80 00
-    jmp near 08911h                           ; e9 53 01
+    jbe near 089cfh                           ; 0f 86 80 00
+    jmp near 08aa5h                           ; e9 53 01
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 087e6h                           ; 74 23
+    je short 0897ah                           ; 74 23
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jne near 08911h                           ; 0f 85 47 01
+    jne near 08aa5h                           ; 0f 85 47 01
     mov word [bp+024h], strict word 00001h    ; c7 46 24 01 00
     mov word [bp+018h], 00210h                ; c7 46 18 10 02
@@ -12428,49 +12638,49 @@
     mov word [bp+01ch], 04350h                ; c7 46 1c 50 43
     mov word [bp+01eh], 02049h                ; c7 46 1e 49 20
-    jmp near 0893eh                           ; e9 58 01
+    jmp near 08ad2h                           ; e9 58 01
     cmp word [bp+01ch], strict byte 0ffffh    ; 83 7e 1c ff
-    jne short 087f2h                          ; 75 06
+    jne short 08986h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 08937h                           ; e9 45 01
+    jmp near 08acbh                           ; e9 45 01
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, word [bp+020h]                    ; 8b 56 20
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     xor cx, cx                                ; 31 c9
-    call 08695h                               ; e8 95 fe
+    call 08829h                               ; e8 95 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 08810h                          ; 75 0b
+    jne short 089a4h                          ; 75 0b
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 08937h                           ; e9 27 01
+    jmp near 08acbh                           ; e9 27 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 0893eh                           ; e9 28 01
+    jmp near 08ad2h                           ; e9 28 01
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov dx, word [bp+022h]                    ; 8b 56 22
     mov cx, strict word 00001h                ; b9 01 00
-    call 08695h                               ; e8 70 fe
+    call 08829h                               ; e8 70 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 08835h                          ; 75 0b
+    jne short 089c9h                          ; 75 0b
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 08937h                           ; e9 02 01
+    jmp near 08acbh                           ; e9 02 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 0893eh                           ; e9 03 01
+    jmp near 08ad2h                           ; e9 03 01
     cmp word [bp+008h], 00100h                ; 81 7e 08 00 01
-    jc short 08848h                           ; 72 06
+    jc short 089dch                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 08937h                           ; e9 ef 00
+    jmp near 08acbh                           ; e9 ef 00
     mov dx, word [bp+008h]                    ; 8b 56 08
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 08674h                               ; e8 23 fe
+    call 08808h                               ; e8 23 fe
     mov bx, word [bp+024h]                    ; 8b 5e 24
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00008h                ; 83 eb 08
     cmp bx, strict byte 00005h                ; 83 fb 05
-    jnbe near 0893eh                          ; 0f 87 de 00
+    jnbe near 08ad2h                          ; 0f 87 de 00
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-07885h]                   ; 2e ff a7 7b 87
+    jmp word [cs:bx-076f1h]                   ; 2e ff a7 0f 89
     mov bx, word [bp+020h]                    ; 8b 5e 20
     xor bl, bl                                ; 30 db
@@ -12483,5 +12693,5 @@
     or bx, ax                                 ; 09 c3
     mov word [bp+020h], bx                    ; 89 5e 20
-    jmp near 0893eh                           ; e9 bd 00
+    jmp near 08ad2h                           ; e9 bd 00
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor dh, dh                                ; 30 f6
@@ -12490,5 +12700,5 @@
     in ax, DX                                 ; ed
     mov word [bp+020h], ax                    ; 89 46 20
-    jmp near 0893eh                           ; e9 aa 00
+    jmp near 08ad2h                           ; e9 aa 00
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -12499,5 +12709,5 @@
     mov word [bp+020h], ax                    ; 89 46 20
     mov word [bp+022h], dx                    ; 89 56 22
-    jmp near 0893eh                           ; e9 95 00
+    jmp near 08ad2h                           ; e9 95 00
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov dx, word [bp+008h]                    ; 8b 56 08
@@ -12506,5 +12716,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp near 0893eh                           ; e9 82 00
+    jmp near 08ad2h                           ; e9 82 00
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov dx, word [bp+008h]                    ; 8b 56 08
@@ -12513,5 +12723,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp short 0893eh                          ; eb 70
+    jmp short 08ad2h                          ; eb 70
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov cx, word [bp+022h]                    ; 8b 4e 22
@@ -12522,14 +12732,14 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 0893eh                          ; eb 5c
+    jmp short 08ad2h                          ; eb 5c
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov es, [bp+028h]                         ; 8e 46 28
     mov cx, word [word 00000h]                ; 8b 0e 00 00
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 088fbh                          ; 76 0a
+    jbe short 08a8fh                          ; 76 0a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor ah, ah                                ; 30 e4
     or ah, 089h                               ; 80 cc 89
-    jmp short 08937h                          ; eb 3c
+    jmp short 08acbh                          ; eb 3c
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
@@ -12540,16 +12750,16 @@
     pop DS                                    ; 1f
     mov word [bp+018h], 00a00h                ; c7 46 18 00 0a
-    jmp short 0893eh                          ; eb 2d
-    mov bx, 00c52h                            ; bb 52 0c
+    jmp short 08ad2h                          ; eb 2d
+    mov bx, 00cdah                            ; bb da 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 92 8f
+    call 018aeh                               ; e8 fe 8d
     mov ax, word [bp+018h]                    ; 8b 46 18
     push ax                                   ; 50
     mov ax, word [bp+024h]                    ; 8b 46 24
     push ax                                   ; 50
-    push 00c0eh                               ; 68 0e 0c
+    push 00c92h                               ; 68 92 0c
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 bd 8f
+    call 018e9h                               ; e8 29 8e
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+024h]                    ; 8b 46 24
@@ -12562,5 +12772,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf8942 LB 0x28
+pci_find_classcode_:                         ; 0xf8ad6 LB 0x28
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12577,5 +12787,5 @@
     int 01ah                                  ; cd 1a
     cmp ah, 000h                              ; 80 fc 00
-    je near 08963h                            ; 0f 84 03 00
+    je near 08af7h                            ; 0f 84 03 00
     mov bx, strict word 0ffffh                ; bb ff ff
     mov ax, bx                                ; 89 d8
@@ -12585,5 +12795,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf896a LB 0x21
+pci_read_config_byte_:                       ; 0xf8afe LB 0x21
     push cx                                   ; 51
     push di                                   ; 57
@@ -12603,5 +12813,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf898b LB 0x1f
+pci_read_config_word_:                       ; 0xf8b1f LB 0x1f
     push cx                                   ; 51
     push di                                   ; 57
@@ -12621,5 +12831,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf89aa LB 0x24
+pci_read_config_dword_:                      ; 0xf8b3e LB 0x24
     push cx                                   ; 51
     push di                                   ; 57
@@ -12641,5 +12851,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-vds_is_present_:                             ; 0xf89ce LB 0x1d
+vds_is_present_:                             ; 0xf8b62 LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
@@ -12649,5 +12859,5 @@
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 089e6h                           ; 74 06
+    je short 08b7ah                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -12658,5 +12868,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf89eb LB 0x1e
+vds_real_to_lin_:                            ; 0xf8b7f LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12669,5 +12879,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 089f9h                               ; e2 fa
+    loop 08b8dh                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -12677,5 +12887,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf8a09 LB 0x76
+vds_build_sg_list_:                          ; 0xf8b9d LB 0x76
     push si                                   ; 56
     push di                                   ; 57
@@ -12691,21 +12901,21 @@
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 089ebh                               ; e8 c3 ff
+    call 08b7fh                               ; e8 c3 ff
     mov es, si                                ; 8e c6
     mov word [es:di+004h], ax                 ; 26 89 45 04
     mov word [es:di+006h], dx                 ; 26 89 55 06
     mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
-    call 089ceh                               ; e8 93 ff
+    call 08b62h                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 08a52h                           ; 74 13
+    je short 08be6h                           ; 74 13
     mov es, si                                ; 8e c6
     mov ax, 08105h                            ; b8 05 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 08a4fh                            ; 0f 82 02 00
+    jc near 08be3h                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 08a79h                          ; eb 27
+    jmp short 08c0dh                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
@@ -12723,5 +12933,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf8a7f LB 0x31
+vds_free_sg_list_:                           ; 0xf8c13 LB 0x2d
     push bx                                   ; 53
     push di                                   ; 57
@@ -12729,7 +12939,7 @@
     mov bp, sp                                ; 89 e5
     mov bx, ax                                ; 89 c3
-    call 089ceh                               ; e8 45 ff
+    call 08b62h                               ; e8 45 ff
     test ax, ax                               ; 85 c0
-    je short 08aa0h                           ; 74 13
+    je short 08c34h                           ; 74 13
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
@@ -12737,5 +12947,5 @@
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 08a9fh                            ; 0f 82 02 00
+    jc near 08c33h                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
@@ -12747,6 +12957,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-    times 0x4 db 0
-__U4D:                                       ; 0xf8ab0 LB 0x39
+__U4D:                                       ; 0xf8c40 LB 0x39
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -12778,5 +12987,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-__U4M:                                       ; 0xf8ae9 LB 0x31
+__U4M:                                       ; 0xf8c79 LB 0x31
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -12803,5 +13012,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-_fmemset_:                                   ; 0xf8b1a LB 0xd
+_fmemset_:                                   ; 0xf8caa LB 0xd
     push di                                   ; 57
     mov es, dx                                ; 8e c2
@@ -12813,5 +13022,5 @@
     pop di                                    ; 5f
     retn                                      ; c3
-_fmemcpy_:                                   ; 0xf8b27 LB 0x18
+_fmemcpy_:                                   ; 0xf8cb7 LB 0x33
     push bp                                   ; 55
     db  08bh, 0ech
@@ -12833,9 +13042,66 @@
     leave                                     ; c9
     retn                                      ; c3
+    add byte [bx+si], al                      ; 00 00
+    lea ax, [bp+si]                           ; 8d 02
+    lea ax, [0068dh]                          ; 8d 06 8d 06
+    lea ax, [0088dh]                          ; 8d 06 8d 08
+    lea cx, [bx+si]                           ; 8d 08
+    lea cx, [bp+si]                           ; 8d 0a
+    lea cx, [00e8dh]                          ; 8d 0e 8d 0e
+    lea dx, [bx+si]                           ; 8d 10
+    lea dx, [di]                              ; 8d 15
+    lea dx, [bx]                              ; 8d 17
+    db  08dh
+apm_worker:                                  ; 0xf8cea LB 0x3a
+    sti                                       ; fb
+    push ax                                   ; 50
+    db  032h, 0e4h
+    ; xor ah, ah                                ; 32 e4
+    sub AL, strict byte 004h                  ; 2c 04
+    db  08bh, 0e8h
+    ; mov bp, ax                                ; 8b e8
+    sal bp, 1                                 ; d1 e5
+    cmp AL, strict byte 00dh                  ; 3c 0d
+    pop ax                                    ; 58
+    mov AH, strict byte 053h                  ; b4 53
+    jnc short 08d20h                          ; 73 25
+    jmp word [cs:bp-07330h]                   ; 2e ff a6 d0 8c
+    jmp short 08d1eh                          ; eb 1c
+    sti                                       ; fb
+    hlt                                       ; f4
+    jmp short 08d1eh                          ; eb 18
+    jmp short 08d1eh                          ; eb 16
+    jmp short 08d20h                          ; eb 16
+    mov AH, strict byte 080h                  ; b4 80
+    jmp short 08d22h                          ; eb 14
+    jmp short 08d20h                          ; eb 10
+    mov ax, 00102h                            ; b8 02 01
+    jmp short 08d1eh                          ; eb 09
+    jmp short 08d1eh                          ; eb 07
+    mov BL, strict byte 000h                  ; b3 00
+    mov cx, strict word 00000h                ; b9 00 00
+    jmp short 08d1eh                          ; eb 00
+    clc                                       ; f8
+    retn                                      ; c3
+    mov AH, strict byte 009h                  ; b4 09
+    stc                                       ; f9
+    retn                                      ; c3
+apm_pm16_entry:                              ; 0xf8d24 LB 0x11
+    mov AH, strict byte 002h                  ; b4 02
+    push DS                                   ; 1e
+    push bp                                   ; 55
+    push CS                                   ; 0e
+    pop bp                                    ; 5d
+    add bp, strict byte 00008h                ; 83 c5 08
+    mov ds, bp                                ; 8e dd
+    call 08ceah                               ; e8 b8 ff
+    pop bp                                    ; 5d
+    pop DS                                    ; 1f
+    retf                                      ; cb
 
-  ; Padding 0x4ec1 bytes at 0xf8b3f
-  times 20161 db 0
+  ; Padding 0x4ccb bytes at 0xf8d35
+  times 19659 db 0
 
-section BIOS32 progbits vstart=0xda00 align=1 ; size=0x37c class=CODE group=AUTO
+section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3aa class=CODE group=AUTO
 bios32_service:                              ; 0xfda00 LB 0x26
     pushfw                                    ; 9c
@@ -12859,10 +13125,10 @@
     mov AL, strict byte 081h                  ; b0 81
     jmp short 0da20h                          ; eb fa
-pcibios32_entry:                             ; 0xfda26 LB 0xd
+pcibios32_entry:                             ; 0xfda26 LB 0x1a
     pushfw                                    ; 9c
     cld                                       ; fc
     push ES                                   ; 06
     pushaw                                    ; 60
-    call 0db45h                               ; e8 18 01
+    call 0db73h                               ; e8 46 01
     add byte [bx+si], al                      ; 00 00
     popaw                                     ; 61
@@ -12870,5 +13136,25 @@
     popfw                                     ; 9d
     retf                                      ; cb
-pci32_select_reg_:                           ; 0xfda33 LB 0x1f
+    times 0xd db 0
+apm_pm32_entry:                              ; 0xfda40 LB 0x21
+    push bp                                   ; 55
+    mov ebp, cs                               ; 66 8c cd
+    push ebp                                  ; 66 55
+    mov bp, 0da5fh                            ; bd 5f da
+    add byte [bx+si], al                      ; 00 00
+    push ebp                                  ; 66 55
+    push CS                                   ; 0e
+    pop bp                                    ; 5d
+    add bp, strict byte 00008h                ; 83 c5 08
+    push ebp                                  ; 66 55
+    mov bp, 08d26h                            ; bd 26 8d
+    add byte [bx+si], al                      ; 00 00
+    push ebp                                  ; 66 55
+    mov AH, strict byte 003h                  ; b4 03
+    db  066h, 0cbh
+    ; retf                                      ; 66 cb
+    pop bp                                    ; 5d
+    retf                                      ; cb
+pci32_select_reg_:                           ; 0xfda61 LB 0x1f
     push bx                                   ; 53
     push bp                                   ; 55
@@ -12887,5 +13173,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-pci32_find_device_:                          ; 0xfda52 LB 0xf5
+pci32_find_device_:                          ; 0xfda80 LB 0xf5
     push cx                                   ; 51
     push si                                   ; 56
@@ -12899,10 +13185,10 @@
     mov byte [di-004h], 000h                  ; c6 45 fc 00
     test bl, 007h                             ; f6 c3 07
-    jne short 0daa1h                          ; 75 36
+    jne short 0dacfh                          ; 75 36
     db  00fh, 0b7h, 0c3h
     ; movzx ax, bx                              ; 0f b7 c3
     mov dx, strict word 0000eh                ; ba 0e 00
     add byte [bx+si], al                      ; 00 00
-    call 0da31h                               ; e8 bb ff
+    call 0da5fh                               ; e8 bb ff
     db  0ffh
     db  0ffh
@@ -12914,13 +13200,13 @@
     mov byte [di-008h], al                    ; 88 45 f8
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 0da8fh                          ; 75 08
+    jne short 0dabdh                          ; 75 08
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 0db17h                           ; e9 8a 00
+    jmp near 0db45h                           ; e9 8a 00
     add byte [bx+si], al                      ; 00 00
     test byte [di-008h], 080h                 ; f6 45 f8 80
-    je short 0da9ch                           ; 74 07
+    je short 0dacah                           ; 74 07
     mov di, strict word 00001h                ; bf 01 00
     add byte [bx+si], al                      ; 00 00
-    jmp short 0daa1h                          ; eb 05
+    jmp short 0dacfh                          ; eb 05
     mov di, strict word 00008h                ; bf 08 00
     add byte [bx+si], al                      ; 00 00
@@ -12928,5 +13214,5 @@
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 0dad0h                          ; 75 26
+    jne short 0dafeh                          ; 75 26
     db  00fh, 0b7h, 0c3h
     ; movzx ax, bx                              ; 0f b7 c3
@@ -12934,8 +13220,8 @@
     sar dx, 008h                              ; c1 fa 08
     test dx, dx                               ; 85 d2
-    jne short 0dad0h                          ; 75 1a
+    jne short 0dafeh                          ; 75 1a
     mov dx, strict word 0001ah                ; ba 1a 00
     add byte [bx+si], al                      ; 00 00
-    call 0da31h                               ; e8 73 ff
+    call 0da5fh                               ; e8 73 ff
     db  0ffh
     db  0ffh
@@ -12946,11 +13232,11 @@
     in AL, DX                                 ; ec
     cmp al, byte [di-004h]                    ; 3a 45 fc
-    jbe short 0dad0h                          ; 76 03
+    jbe short 0dafeh                          ; 76 03
     mov byte [di-004h], al                    ; 88 45 fc
     test si, si                               ; 85 f6
-    je short 0dadbh                           ; 74 07
+    je short 0db09h                           ; 74 07
     mov ax, strict word 00008h                ; b8 08 00
     add byte [bx+si], al                      ; 00 00
-    jmp short 0daddh                          ; eb 02
+    jmp short 0db0bh                          ; eb 02
     xor ax, ax                                ; 31 c0
     db  00fh, 0b7h, 0d0h
@@ -12958,5 +13244,5 @@
     db  00fh, 0b7h, 0c3h
     ; movzx ax, bx                              ; 0f b7 c3
-    call 0da31h                               ; e8 4b ff
+    call 0da5fh                               ; e8 4b ff
     db  0ffh
     db  0ffh
@@ -12968,15 +13254,15 @@
     add byte [bx+si], al                      ; 00 00
     test si, si                               ; 85 f6
-    je short 0db02h                           ; 74 06
+    je short 0db30h                           ; 74 06
     shr ax, 008h                              ; c1 e8 08
     mov word [di-00ch], ax                    ; 89 45 f4
     mov ax, word [di-00ch]                    ; 8b 45 f4
     cmp ax, word [di-018h]                    ; 3b 45 e8
-    je short 0db10h                           ; 74 06
+    je short 0db3eh                           ; 74 06
     cmp word [di-014h], strict byte 00000h    ; 83 7d ec 00
-    je short 0db17h                           ; 74 07
+    je short 0db45h                           ; 74 07
     dec cx                                    ; 49
     cmp ecx, strict byte 0ffffffffh           ; 66 83 f9 ff
-    je short 0db2fh                           ; 74 18
+    je short 0db5dh                           ; 74 18
     add bx, di                                ; 01 fb
     db  00fh, 0b7h, 0c3h
@@ -12986,5 +13272,5 @@
     movzx ax, byte [di-004h]                  ; 0f b6 45 fc
     cmp ax, word [di-010h]                    ; 3b 45 f0
-    jnl near 0da64h                           ; 0f 8d 37 ff
+    jnl near 0da92h                           ; 0f 8d 37 ff
     db  0ffh
     jmp word [bp-07dh]                        ; ff 66 83
@@ -13005,5 +13291,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-_pci32_function:                             ; 0xfdb47 LB 0x235
+_pci32_function:                             ; 0xfdb75 LB 0x235
     push bx                                   ; 53
     push si                                   ; 56
@@ -13017,5 +13303,5 @@
     xor ah, ah                                ; 30 e4
     cmp eax, strict dword 029720003h          ; 66 3d 03 00 72 29
-    jbe near 0dc02h                           ; 0f 86 99 00
+    jbe near 0dc30h                           ; 0f 86 99 00
     add byte [bx+si], al                      ; 00 00
     cmp eax, strict dword 0840f000eh          ; 66 3d 0e 00 0f 84
@@ -13024,10 +13310,10 @@
     add byte [bp+03dh], ah                    ; 00 66 3d
     or byte [bx+si], al                       ; 08 00
-    jc near 0dd65h                            ; 0f 82 e8 01
+    jc near 0dd93h                            ; 0f 82 e8 01
     add byte [bx+si], al                      ; 00 00
     cmp eax, strict dword 0860f000dh          ; 66 3d 0d 00 0f 86
     test AL, strict byte 000h                 ; a8 00
     add byte [bx+si], al                      ; 00 00
-    jmp near 0dd65h                           ; e9 d9 01
+    jmp near 0dd93h                           ; e9 d9 01
     add byte [bx+si], al                      ; 00 00
     cmp eax, strict dword 028740002h          ; 66 3d 02 00 74 28
@@ -13052,9 +13338,9 @@
     retn                                      ; c3
     cmp dword [di+028h], strict byte 0ffffffffh ; 66 83 7d 28 ff
-    jne short 0dbd0h                          ; 75 0d
+    jne short 0dbfeh                          ; 75 0d
     mov ax, word [di+030h]                    ; 8b 45 30
     xor ah, ah                                ; 30 e4
     or ah, 083h                               ; 80 cc 83
-    jmp near 0dd6dh                           ; e9 9f 01
+    jmp near 0dd9bh                           ; e9 9f 01
     add byte [bx+si], al                      ; 00 00
     xor bx, bx                                ; 31 db
@@ -13067,5 +13353,5 @@
     ; movzx ax, word [di+028h]                  ; 0f b7 45 28
     or ax, cx                                 ; 09 c8
-    call 0da50h                               ; e8 6a fe
+    call 0da7eh                               ; e8 6a fe
     db  0ffh
     jmp word [bp+03dh]                        ; ff 66 3d
@@ -13075,5 +13361,5 @@
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 0dd6dh                           ; e9 74 01
+    jmp near 0dd9bh                           ; e9 74 01
     add byte [bx+si], al                      ; 00 00
     mov dword [di+024h], eax                  ; 66 89 45 24
@@ -13088,5 +13374,5 @@
     mov bx, strict word 00001h                ; bb 01 00
     add byte [bx+si], al                      ; 00 00
-    call 0da50h                               ; e8 3d fe
+    call 0da7eh                               ; e8 3d fe
     db  0ffh
     jmp word [bp+03dh]                        ; ff 66 3d
@@ -13096,5 +13382,5 @@
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 0dd6dh                           ; e9 47 01
+    jmp near 0dd9bh                           ; e9 47 01
     add byte [bx+si], al                      ; 00 00
     mov dword [di+024h], eax                  ; 66 89 45 24
@@ -13108,5 +13394,5 @@
     xor ah, ah                                ; 30 e4
     or ah, 087h                               ; 80 cc 87
-    jmp near 0dd6dh                           ; e9 29 01
+    jmp near 0dd9bh                           ; e9 29 01
     add byte [bx+si], al                      ; 00 00
     db  00fh, 0b7h, 055h, 014h
@@ -13114,10 +13400,10 @@
     db  00fh, 0b7h, 045h, 024h
     ; movzx ax, word [di+024h]                  ; 0f b7 45 24
-    call 0da31h                               ; e8 e0 fd
+    call 0da5fh                               ; e8 e0 fd
     db  0ffh
     dec word [bp+di+03045h]                   ; ff 8b 45 30
     xor ah, ah                                ; 30 e4
     cmp eax, strict dword 02172000ah          ; 66 3d 0a 00 72 21
-    jbe short 0dcd0h                          ; 76 70
+    jbe short 0dcfeh                          ; 76 70
     cmp eax, strict dword 0840f000dh          ; 66 3d 0d 00 0f 84
     stosb                                     ; aa
@@ -13125,5 +13411,5 @@
     add byte [bp+03dh], ah                    ; 00 66 3d
     or AL, strict byte 000h                   ; 0c 00
-    je near 0dcf6h                            ; 0f 84 84 00
+    je near 0dd24h                            ; 0f 84 84 00
     add byte [bx+si], al                      ; 00 00
     cmp eax, strict dword 06474000bh          ; 66 3d 0b 00 74 64
@@ -13230,9 +13516,9 @@
     db  066h, 026h, 03bh, 008h
     ; cmp ecx, dword [es:bx+si]                 ; 66 26 3b 08
-    jbe short 0dd40h                          ; 76 0a
+    jbe short 0dd6eh                          ; 76 0a
     mov ax, word [di+030h]                    ; 8b 45 30
     xor ah, ah                                ; 30 e4
     or ah, 089h                               ; 80 cc 89
-    jmp short 0dd6fh                          ; eb 2f
+    jmp short 0dd9dh                          ; eb 2f
     db  00fh, 0b7h, 0c9h
     ; movzx cx, cx                              ; 0f b7 c9
@@ -13264,12 +13550,15 @@
     retn                                      ; c3
 
-section BIOS32CONST progbits vstart=0xdd7c align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+  ; Padding 0x2 bytes at 0xfddaa
+  times 2 db 0
 
-section BIOS32CONST2 progbits vstart=0xdd7c align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+section BIOS32CONST progbits vstart=0xddac align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
 
-section BIOS32_DATA progbits vstart=0xdd7c align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+section BIOS32CONST2 progbits vstart=0xddac align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
 
-  ; Padding 0x284 bytes at 0xfdd7c
-  times 644 db 0
+section BIOS32_DATA progbits vstart=0xddac align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+  ; Padding 0x254 bytes at 0xfddac
+  times 596 db 0
 
 section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO
@@ -13515,5 +13804,5 @@
     mov word [001c2h], ax                     ; a3 c2 01
     call 0edbfh                               ; e8 59 0b
-    mov ax, 0f8a3h                            ; b8 a3 f8
+    mov ax, 0f8a4h                            ; b8 a4 f8
     mov word [001d0h], ax                     ; a3 d0 01
     mov ax, 0f000h                            ; b8 00 f0
@@ -13536,6 +13825,6 @@
     call 01b25h                               ; e8 89 38
     call 01f23h                               ; e8 84 3c
-    call 07701h                               ; e8 5f 94
-    call 0857bh                               ; e8 d6 a2
+    call 085e4h                               ; e8 42 a3
+    call 07701h                               ; e8 5c 94
     call 0ed2fh                               ; e8 87 0a
     call 0e2d2h                               ; e8 27 00
@@ -13585,5 +13874,5 @@
     mov ax, 0f000h                            ; b8 00 f0
     mov word [0004eh], ax                     ; a3 4e 00
-    mov ax, 0f8d1h                            ; b8 d1 f8
+    mov ax, 0f8d2h                            ; b8 d2 f8
     mov word [001d8h], ax                     ; a3 d8 01
     mov ax, 0f000h                            ; b8 00 f0
@@ -14618,8 +14907,6 @@
     pop DS                                    ; 1f
     iret                                      ; cf
-int15_handler:                               ; 0xff859 LB 0x28
+int15_handler:                               ; 0xff859 LB 0x29
     pushfw                                    ; 9c
-    cmp ah, 053h                              ; 80 fc 53
-    je short 0f87dh                           ; 74 1e
     push DS                                   ; 1e
     push ES                                   ; 06
@@ -14628,10 +14915,12 @@
     cld                                       ; fc
     cmp ah, 086h                              ; 80 fc 86
-    je short 0f886h                           ; 74 1d
+    je short 0f887h                           ; 74 23
     cmp ah, 0e8h                              ; 80 fc e8
-    je short 0f886h                           ; 74 18
+    je short 0f887h                           ; 74 1e
     pushaw                                    ; 60
+    cmp ah, 053h                              ; 80 fc 53
+    je short 0f87dh                           ; 74 0e
     cmp ah, 0c2h                              ; 80 fc c2
-    je short 0f881h                           ; 74 0d
+    je short 0f882h                           ; 74 0e
     call 05da6h                               ; e8 2f 65
     popaw                                     ; 61
@@ -14639,18 +14928,17 @@
     pop DS                                    ; 1f
     popfw                                     ; 9d
-    jmp short 0f88fh                          ; eb 12
-    popfw                                     ; 9d
-    stc                                       ; f9
-    jmp short 0f88fh                          ; eb 0e
-int15_handler_mouse:                         ; 0xff881 LB 0x5
-    call 06995h                               ; e8 11 71
-    jmp short 0f877h                          ; eb f1
-int15_handler32:                             ; 0xff886 LB 0x9
+    jmp short 0f890h                          ; eb 13
+    call 08713h                               ; e8 93 8e
+    jmp short 0f877h                          ; eb f5
+int15_handler_mouse:                         ; 0xff882 LB 0x5
+    call 06995h                               ; e8 10 71
+    jmp short 0f877h                          ; eb f0
+int15_handler32:                             ; 0xff887 LB 0x9
     pushad                                    ; 66 60
-    call 0626fh                               ; e8 e4 69
+    call 0626fh                               ; e8 e3 69
     popad                                     ; 66 61
-    jmp short 0f878h                          ; eb e9
-iret_modify_cf:                              ; 0xff88f LB 0x14
-    jc short 0f89ah                           ; 72 09
+    jmp short 0f878h                          ; eb e8
+iret_modify_cf:                              ; 0xff890 LB 0x14
+    jc short 0f89bh                           ; 72 09
     push bp                                   ; 55
     db  08bh, 0ech
@@ -14665,5 +14953,5 @@
     pop bp                                    ; 5d
     iret                                      ; cf
-int74_handler:                               ; 0xff8a3 LB 0x2e
+int74_handler:                               ; 0xff8a4 LB 0x2e
     sti                                       ; fb
     pushaw                                    ; 60
@@ -14678,7 +14966,7 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 068cfh                               ; e8 18 70
+    call 068cfh                               ; e8 17 70
     pop cx                                    ; 59
-    jcxz 0f8c6h                               ; e3 0c
+    jcxz 0f8c7h                               ; e3 0c
     push strict byte 00000h                   ; 6a 00
     pop DS                                    ; 1f
@@ -14687,5 +14975,5 @@
     call far [word 00022h]                    ; ff 1e 22 00
     cli                                       ; fa
-    call 0e03bh                               ; e8 71 e7
+    call 0e03bh                               ; e8 70 e7
     add sp, strict byte 00008h                ; 83 c4 08
     pop DS                                    ; 1f
@@ -14693,5 +14981,5 @@
     popaw                                     ; 61
     iret                                      ; cf
-int76_handler:                               ; 0xff8d1 LB 0x19d
+int76_handler:                               ; 0xff8d2 LB 0x19c
     push ax                                   ; 50
     push DS                                   ; 1e
@@ -14699,9 +14987,9 @@
     mov ds, ax                                ; 8e d8
     mov byte [0008eh], 0ffh                   ; c6 06 8e 00 ff
-    call 0e03bh                               ; e8 5b e7
+    call 0e03bh                               ; e8 5a e7
     pop DS                                    ; 1f
     pop ax                                    ; 58
     iret                                      ; cf
-    times 0x189 db 0
+    times 0x188 db 0
     db  'XM'
 font8x8:                                     ; 0xffa6e LB 0x421
@@ -14770,5 +15058,5 @@
     db  018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
     db  076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
-    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 00ah, 089h, 066h
+    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 09eh, 08ah, 066h
     db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 0ech, 067h, 061h, 01fh, 007h
     db  0cfh
@@ -14876,3 +15164,3 @@
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 093h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0cdh
Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 43077)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 43078)
@@ -1,1 +1,1 @@
-a212a9bf22e8891d5def4f53b570445c *VBoxPcBios.rom
+6540183b9e43c8c9e7562cd549a7fd9b *VBoxPcBios.rom
