Index: /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.asm	(revision 42453)
+++ /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.asm	(revision 42454)
@@ -120,5 +120,4 @@
 ;  #include "vgabios.h"
 ;  #include <inttypes.h>
-;  #include <VBox/version.h>
 
 ;
@@ -247,5 +246,5 @@
     mov bx, 0c000h                            ; bb 00 c0
     mov ds, bx                                ; 8e db
-    call 0312eh                               ; e8 3e 30
+    call 0305ch                               ; e8 6c 2f
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -1029,5 +1028,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-_dispi_set_enable:                           ; 0xc05f9 LB 0x1e
+dispi_set_enable_:                           ; 0xc05f9 LB 0x1e
     push dx                                   ; 52
     push ax                                   ; 50
@@ -1048,5 +1047,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-_dispi_set_bank:                             ; 0xc0617 LB 0x1e
+dispi_set_bank_:                             ; 0xc0617 LB 0x1e
     push dx                                   ; 52
     push ax                                   ; 50
@@ -1549,5 +1548,5 @@
   times 109 db 0
 
-section _TEXT progbits vstart=0xa00 align=1 ; size=0x310f class=CODE group=AUTO
+section _TEXT progbits vstart=0xa00 align=1 ; size=0x2ff9 class=CODE group=AUTO
 set_int_vector_:                             ; 0xc0a00 LB 0x1a
     push bx                                   ; 53
@@ -1577,5 +1576,5 @@
     out DX, AL                                ; ee
     push 04800h                               ; 68 00 48
-    call 03014h                               ; e8 de 25
+    call 02f54h                               ; e8 1e 25
     add sp, strict byte 00002h                ; 83 c4 02
     pop bp                                    ; 5d
@@ -1615,5 +1614,287 @@
     pop bp                                    ; 5d
     retf                                      ; cb
-biosfn_perform_gray_scale_summing_:          ; 0xc0a8c LB 0x88
+vga_get_cursor_pos_:                         ; 0xc0a8c LB 0x40
+    push cx                                   ; 51
+    push si                                   ; 56
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    mov cl, al                                ; 88 c1
+    mov si, dx                                ; 89 d6
+    cmp AL, strict byte 007h                  ; 3c 07
+    jbe short 00aa7h                          ; 76 0e
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov word [es:si], strict word 00000h      ; 26 c7 04 00 00
+    mov word [es:bx], strict word 00000h      ; 26 c7 07 00 00
+    jmp short 00ac8h                          ; eb 21
+    mov dx, strict word 00060h                ; ba 60 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f26h                               ; e8 76 24
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov word [es:si], ax                      ; 26 89 04
+    movzx dx, cl                              ; 0f b6 d1
+    add dx, dx                                ; 01 d2
+    add dx, strict byte 00050h                ; 83 c2 50
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f26h                               ; e8 63 24
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov word [es:bx], ax                      ; 26 89 07
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    pop cx                                    ; 59
+    retn                                      ; c3
+vga_read_char_attr_:                         ; 0xc0acc LB 0xa3
+    push bx                                   ; 53
+    push cx                                   ; 51
+    push si                                   ; 56
+    push di                                   ; 57
+    enter 00008h, 000h                        ; c8 08 00 00
+    mov cl, al                                ; 88 c1
+    mov si, dx                                ; 89 d6
+    mov dx, strict word 00049h                ; ba 49 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f0ah                               ; e8 29 24
+    xor ah, ah                                ; 30 e4
+    call 02ee3h                               ; e8 fd 23
+    mov ch, al                                ; 88 c5
+    cmp AL, strict byte 0ffh                  ; 3c ff
+    je short 00b59h                           ; 74 6d
+    movzx ax, cl                              ; 0f b6 c1
+    lea bx, [bp-008h]                         ; 8d 5e f8
+    lea dx, [bp-006h]                         ; 8d 56 fa
+    call 00a8ch                               ; e8 94 ff
+    mov al, byte [bp-008h]                    ; 8a 46 f8
+    mov byte [bp-002h], al                    ; 88 46 fe
+    mov ax, word [bp-008h]                    ; 8b 46 f8
+    xor al, al                                ; 30 c0
+    shr ax, 008h                              ; c1 e8 08
+    mov word [bp-004h], ax                    ; 89 46 fc
+    mov dx, 00084h                            ; ba 84 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f0ah                               ; e8 f8 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
+    movzx bx, ch                              ; 0f b6 dd
+    sal bx, 003h                              ; c1 e3 03
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    jne short 00b59h                          ; 75 2d
+    mov dx, ax                                ; 89 c2
+    imul dx, di                               ; 0f af d7
+    add dx, dx                                ; 01 d2
+    or dl, 0ffh                               ; 80 ca ff
+    xor ch, ch                                ; 30 ed
+    inc dx                                    ; 42
+    imul cx, dx                               ; 0f af ca
+    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
+    imul dx, ax                               ; 0f af d0
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    add ax, dx                                ; 01 d0
+    add ax, ax                                ; 01 c0
+    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 word [ss:si], ax                      ; 36 89 04
+    leave                                     ; c9
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    pop cx                                    ; 59
+    pop bx                                    ; 5b
+    retn                                      ; c3
+    mov cl, byte [bp+di]                      ; 8a 0b
+    db  0c6h, 00bh, 0cbh
+    ; mov byte [bp+di], 0cbh                    ; c6 0b cb
+    db  00bh, 0d3h
+    ; or dx, bx                                 ; 0b d3
+    db  00bh, 0d8h
+    ; or bx, ax                                 ; 0b d8
+    db  00bh, 0ddh
+    ; or bx, bp                                 ; 0b dd
+    db  00bh, 0e2h
+    ; or sp, dx                                 ; 0b e2
+    db  00bh, 0e7h
+    ; or sp, di                                 ; 0b e7
+    db  00bh
+vga_get_font_info_:                          ; 0xc0b6f LB 0x7f
+    push si                                   ; 56
+    push di                                   ; 57
+    enter 00002h, 000h                        ; c8 02 00 00
+    mov si, dx                                ; 89 d6
+    mov word [bp-002h], bx                    ; 89 5e fe
+    mov bx, cx                                ; 89 cb
+    cmp ax, strict word 00007h                ; 3d 07 00
+    jnbe short 00bc0h                         ; 77 3f
+    mov di, ax                                ; 89 c7
+    add di, ax                                ; 01 c7
+    jmp word [cs:di+00b5fh]                   ; 2e ff a5 5f 0b
+    mov dx, strict word 0007ch                ; ba 7c 00
+    xor ax, ax                                ; 31 c0
+    call 02f42h                               ; e8 b0 23
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov di, word [bp-002h]                    ; 8b 7e fe
+    mov word [es:di], ax                      ; 26 89 05
+    mov word [es:si], dx                      ; 26 89 14
+    mov dx, 00085h                            ; ba 85 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f0ah                               ; e8 64 23
+    xor ah, ah                                ; 30 e4
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov word [es:bx], ax                      ; 26 89 07
+    mov dx, 00084h                            ; ba 84 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f0ah                               ; e8 54 23
+    xor ah, ah                                ; 30 e4
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov bx, word [bp+008h]                    ; 8b 5e 08
+    mov word [es:bx], ax                      ; 26 89 07
+    leave                                     ; c9
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    retn 00002h                               ; c2 02 00
+    mov dx, 0010ch                            ; ba 0c 01
+    jmp short 00b8dh                          ; eb c2
+    mov ax, 05dafh                            ; b8 af 5d
+    mov dx, 0c000h                            ; ba 00 c0
+    jmp short 00b92h                          ; eb bf
+    mov ax, 055afh                            ; b8 af 55
+    jmp short 00bceh                          ; eb f6
+    mov ax, 059afh                            ; b8 af 59
+    jmp short 00bceh                          ; eb f1
+    mov ax, 07bafh                            ; b8 af 7b
+    jmp short 00bceh                          ; eb ec
+    mov ax, 06bafh                            ; b8 af 6b
+    jmp short 00bceh                          ; eb e7
+    mov ax, 07cdch                            ; b8 dc 7c
+    jmp short 00bceh                          ; eb e2
+    jmp short 00bc0h                          ; eb d2
+vga_read_pixel_:                             ; 0xc0bee LB 0x134
+    push si                                   ; 56
+    push di                                   ; 57
+    enter 00006h, 000h                        ; c8 06 00 00
+    mov si, dx                                ; 89 d6
+    mov word [bp-006h], bx                    ; 89 5e fa
+    mov di, cx                                ; 89 cf
+    mov dx, strict word 00049h                ; ba 49 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f0ah                               ; e8 06 23
+    xor ah, ah                                ; 30 e4
+    call 02ee3h                               ; e8 da 22
+    mov cl, al                                ; 88 c1
+    cmp AL, strict byte 0ffh                  ; 3c ff
+    je near 00d1eh                            ; 0f 84 0d 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 00d1eh                            ; 0f 84 fe 00
+    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
+    cmp bl, 003h                              ; 80 fb 03
+    jc short 00c3ah                           ; 72 11
+    jbe short 00c42h                          ; 76 17
+    cmp bl, 005h                              ; 80 fb 05
+    je near 00cfbh                            ; 0f 84 c9 00
+    cmp bl, 004h                              ; 80 fb 04
+    je short 00c42h                           ; 74 0b
+    jmp near 00d19h                           ; e9 df 00
+    cmp bl, 002h                              ; 80 fb 02
+    je short 00c9ah                           ; 74 5b
+    jmp near 00d19h                           ; e9 d7 00
+    mov dx, strict word 0004ah                ; ba 4a 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f26h                               ; e8 db 22
+    imul ax, word [bp-006h]                   ; 0f af 46 fa
+    mov bx, si                                ; 89 f3
+    shr bx, 003h                              ; c1 eb 03
+    add bx, ax                                ; 01 c3
+    mov cx, si                                ; 89 f1
+    and cx, strict byte 00007h                ; 83 e1 07
+    mov ax, 00080h                            ; b8 80 00
+    sar ax, CL                                ; d3 f8
+    mov byte [bp-004h], al                    ; 88 46 fc
+    mov byte [bp-002h], ch                    ; 88 6e fe
+    jmp short 00c70h                          ; eb 08
+    cmp byte [bp-002h], 004h                  ; 80 7e fe 04
+    jnc near 00d1bh                           ; 0f 83 ab 00
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    sal ax, 008h                              ; c1 e0 08
+    or AL, strict byte 004h                   ; 0c 04
+    mov dx, 003ceh                            ; ba ce 03
+    out DX, ax                                ; ef
+    mov dx, bx                                ; 89 da
+    mov ax, 0a000h                            ; b8 00 a0
+    call 02f0ah                               ; e8 85 22
+    and al, byte [bp-004h]                    ; 22 46 fc
+    test al, al                               ; 84 c0
+    jbe short 00c95h                          ; 76 09
+    mov cl, byte [bp-002h]                    ; 8a 4e fe
+    mov AL, strict byte 001h                  ; b0 01
+    sal al, CL                                ; d2 e0
+    or ch, al                                 ; 08 c5
+    inc byte [bp-002h]                        ; fe 46 fe
+    jmp short 00c68h                          ; eb ce
+    mov ax, word [bp-006h]                    ; 8b 46 fa
+    shr ax, 1                                 ; d1 e8
+    imul ax, ax, strict byte 00050h           ; 6b c0 50
+    mov bx, si                                ; 89 f3
+    shr bx, 002h                              ; c1 eb 02
+    add bx, ax                                ; 01 c3
+    test byte [bp-006h], 001h                 ; f6 46 fa 01
+    je short 00cb2h                           ; 74 03
+    add bh, 020h                              ; 80 c7 20
+    mov dx, bx                                ; 89 da
+    mov ax, 0b800h                            ; b8 00 b8
+    call 02f0ah                               ; e8 50 22
+    movzx bx, cl                              ; 0f b6 d9
+    sal bx, 003h                              ; c1 e3 03
+    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
+    jne short 00ce2h                          ; 75 1b
+    mov cx, si                                ; 89 f1
+    xor ch, ch                                ; 30 ed
+    and cl, 003h                              ; 80 e1 03
+    mov bx, strict word 00003h                ; bb 03 00
+    sub bx, cx                                ; 29 cb
+    mov cx, bx                                ; 89 d9
+    add cx, bx                                ; 01 d9
+    xor ah, ah                                ; 30 e4
+    sar ax, CL                                ; d3 f8
+    mov ch, al                                ; 88 c5
+    and ch, 003h                              ; 80 e5 03
+    jmp short 00d1bh                          ; eb 39
+    mov cx, si                                ; 89 f1
+    xor ch, ch                                ; 30 ed
+    and cl, 007h                              ; 80 e1 07
+    mov bx, strict word 00007h                ; bb 07 00
+    sub bx, cx                                ; 29 cb
+    mov cx, bx                                ; 89 d9
+    xor ah, ah                                ; 30 e4
+    sar ax, CL                                ; d3 f8
+    mov ch, al                                ; 88 c5
+    and ch, 001h                              ; 80 e5 01
+    jmp short 00d1bh                          ; eb 20
+    mov dx, strict word 0004ah                ; ba 4a 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f26h                               ; e8 22 22
+    sal ax, 003h                              ; c1 e0 03
+    imul ax, word [bp-006h]                   ; 0f af 46 fa
+    mov dx, si                                ; 89 f2
+    add dx, ax                                ; 01 c2
+    mov ax, 0a000h                            ; b8 00 a0
+    call 02f0ah                               ; e8 f5 21
+    mov ch, al                                ; 88 c5
+    jmp short 00d1bh                          ; eb 02
+    xor ch, ch                                ; 30 ed
+    mov byte [ss:di], ch                      ; 36 88 2d
+    leave                                     ; c9
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    retn                                      ; c3
+biosfn_perform_gray_scale_summing_:          ; 0xc0d22 LB 0x88
     push bx                                   ; 53
     push cx                                   ; 51
@@ -1632,5 +1913,5 @@
     xor si, si                                ; 31 f6
     cmp si, di                                ; 39 fe
-    jnc short 00afch                          ; 73 52
+    jnc short 00d92h                          ; 73 52
     mov al, bl                                ; 88 d8
     mov dx, 003c7h                            ; ba c7 03
@@ -1660,5 +1941,5 @@
     sar cx, 008h                              ; c1 f9 08
     cmp cx, strict byte 0003fh                ; 83 f9 3f
-    jbe short 00aeah                          ; 76 03
+    jbe short 00d80h                          ; 76 03
     mov cx, strict word 0003fh                ; b9 3f 00
     mov al, bl                                ; 88 d8
@@ -1672,5 +1953,5 @@
     inc bx                                    ; 43
     inc si                                    ; 46
-    jmp short 00aa6h                          ; eb aa
+    jmp short 00d3ch                          ; eb aa
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -1690,5 +1971,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_set_cursor_shape_:                    ; 0xc0b14 LB 0xa1
+biosfn_set_cursor_shape_:                    ; 0xc0daa LB 0xa1
     push bx                                   ; 53
     push cx                                   ; 51
@@ -1708,28 +1989,28 @@
     mov dx, strict word 00060h                ; ba 60 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 cb 24
+    call 02f34h                               ; e8 63 21
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 98 24
+    call 02f0ah                               ; e8 30 21
     mov bl, al                                ; 88 c3
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 a9 24
+    call 02f26h                               ; e8 41 21
     mov dx, ax                                ; 89 c2
     test bl, 001h                             ; f6 c3 01
-    je short 00b8dh                           ; 74 37
+    je short 00e23h                           ; 74 37
     cmp ax, strict word 00008h                ; 3d 08 00
-    jbe short 00b8dh                          ; 76 32
+    jbe short 00e23h                          ; 76 32
     cmp cl, 008h                              ; 80 f9 08
-    jnc short 00b8dh                          ; 73 2d
+    jnc short 00e23h                          ; 73 2d
     cmp ch, 020h                              ; 80 fd 20
-    jnc short 00b8dh                          ; 73 28
+    jnc short 00e23h                          ; 73 28
     inc di                                    ; 47
     cmp si, di                                ; 39 fe
-    je short 00b73h                           ; 74 09
+    je short 00e09h                           ; 74 09
     imul ax, di                               ; 0f af c7
     shr ax, 003h                              ; c1 e8 03
     dec ax                                    ; 48
-    jmp short 00b7eh                          ; eb 0b
+    jmp short 00e14h                          ; eb 0b
     lea si, [di+001h]                         ; 8d 75 01
     imul ax, si                               ; 0f af c6
@@ -1746,5 +2027,5 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 62 24
+    call 02f26h                               ; e8 fa 20
     mov bx, ax                                ; 89 c3
     mov AL, strict byte 00ah                  ; b0 0a
@@ -1767,5 +2048,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_set_cursor_pos_:                      ; 0xc0bb5 LB 0x9e
+biosfn_set_cursor_pos_:                      ; 0xc0e4b LB 0x9e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -1775,5 +2056,5 @@
     mov cx, dx                                ; 89 d1
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 00c4eh                          ; 0f 87 87 00
+    jnbe near 00ee4h                          ; 0f 87 87 00
     movzx dx, al                              ; 0f b6 d0
     add dx, dx                                ; 01 d2
@@ -1781,17 +2062,17 @@
     mov bx, cx                                ; 89 cb
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 2f 24
+    call 02f34h                               ; e8 c7 20
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 fc 23
+    call 02f0ah                               ; e8 94 20
     cmp al, byte [bp-002h]                    ; 3a 46 fe
-    jne short 00c4eh                          ; 75 69
+    jne short 00ee4h                          ; 75 69
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 0a 24
+    call 02f26h                               ; e8 a2 20
     mov bx, ax                                ; 89 c3
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 e3 23
+    call 02f0ah                               ; e8 7b 20
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
@@ -1813,5 +2094,5 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 cc 23
+    call 02f26h                               ; e8 64 20
     mov bx, ax                                ; 89 c3
     mov AL, strict byte 00eh                  ; b0 0e
@@ -1836,44 +2117,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_get_cursor_pos_:                      ; 0xc0c53 LB 0x55
-    push cx                                   ; 51
-    push si                                   ; 56
-    push di                                   ; 57
-    enter 00002h, 000h                        ; c8 02 00 00
-    mov byte [bp-002h], al                    ; 88 46 fe
-    mov si, dx                                ; 89 d6
-    mov di, bx                                ; 89 df
-    mov ax, ss                                ; 8c d0
-    mov cx, ax                                ; 89 c1
-    xor bx, bx                                ; 31 db
-    call 03006h                               ; e8 9c 23
-    xor bx, bx                                ; 31 db
-    mov dx, di                                ; 89 fa
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 93 23
-    cmp byte [bp-002h], 007h                  ; 80 7e fe 07
-    jnbe short 00ca3h                         ; 77 2a
-    mov dx, strict word 00060h                ; ba 60 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 76 23
-    mov bx, ax                                ; 89 c3
-    mov dx, si                                ; 89 f2
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 7b 23
-    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
-    add dx, dx                                ; 01 d2
-    add dx, strict byte 00050h                ; 83 c2 50
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 5e 23
-    mov bx, ax                                ; 89 c3
-    mov dx, di                                ; 89 fa
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 63 23
-    leave                                     ; c9
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    pop cx                                    ; 59
-    retn                                      ; c3
-biosfn_set_active_page_:                     ; 0xc0ca8 LB 0xdd
+biosfn_set_active_page_:                     ; 0xc0ee9 LB 0xd8
     push bx                                   ; 53
     push cx                                   ; 51
@@ -1881,42 +2123,40 @@
     push si                                   ; 56
     push di                                   ; 57
-    enter 00006h, 000h                        ; c8 06 00 00
-    mov byte [bp-002h], al                    ; 88 46 fe
+    enter 00004h, 000h                        ; c8 04 00 00
+    mov cl, al                                ; 88 c1
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 00d7eh                          ; 0f 87 c4 00
+    jnbe near 00fbah                          ; 0f 87 c0 00
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 19 23
+    call 02f0ah                               ; e8 07 20
     xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 ed 22
-    mov dl, al                                ; 88 c2
+    call 02ee3h                               ; e8 db 1f
+    mov ch, al                                ; 88 c5
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 00d7eh                            ; 0f 84 ae 00
+    je near 00fbah                            ; 0f 84 aa 00
+    movzx ax, cl                              ; 0f b6 c1
     lea bx, [bp-004h]                         ; 8d 5e fc
-    push SS                                   ; 16
-    push bx                                   ; 53
-    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp-006h]                         ; 8d 5e fa
-    call 00c53h                               ; e8 72 ff
-    movzx bx, dl                              ; 0f b6 da
+    lea dx, [bp-002h]                         ; 8d 56 fe
+    call 00a8ch                               ; e8 70 fb
+    movzx bx, ch                              ; 0f b6 dd
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
     cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
-    jne short 00d2fh                          ; 75 3f
+    jne short 00f6bh                          ; 75 40
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 ff 22
-    mov si, ax                                ; 89 c6
+    call 02f26h                               ; e8 f2 1f
+    mov bx, ax                                ; 89 c3
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 d8 22
+    call 02f0ah                               ; e8 cb 1f
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
+    mov si, bx                                ; 89 de
     imul si, ax                               ; 0f af f0
     mov ax, si                                ; 89 f0
     add ax, si                                ; 01 f0
     or AL, strict byte 0ffh                   ; 0c ff
-    movzx di, byte [bp-002h]                  ; 0f b6 7e fe
+    movzx di, cl                              ; 0f b6 f9
     mov bx, ax                                ; 89 c3
     inc bx                                    ; 43
@@ -1924,40 +2164,41 @@
     mov dx, strict word 0004eh                ; ba 4e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 e3 22
+    call 02f34h                               ; e8 d5 1f
     or si, 000ffh                             ; 81 ce ff 00
-    lea cx, [si+001h]                         ; 8d 4c 01
-    imul cx, di                               ; 0f af cf
-    jmp short 00d40h                          ; eb 11
+    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
     sal bx, 006h                              ; c1 e3 06
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    imul cx, word [bx+048c6h]                 ; 0f af 8f c6 48
+    movzx ax, cl                              ; 0f b6 c1
+    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
+    imul bx, ax                               ; 0f af d8
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 af 22
-    mov bx, ax                                ; 89 c3
+    call 02f26h                               ; e8 a0 1f
+    mov si, ax                                ; 89 c6
     mov AL, strict byte 00ch                  ; b0 0c
-    mov dx, bx                                ; 89 da
-    out DX, AL                                ; ee
-    mov ax, cx                                ; 89 c8
-    xor al, cl                                ; 30 c8
+    mov dx, si                                ; 89 f2
+    out DX, AL                                ; ee
+    mov ax, bx                                ; 89 d8
+    xor al, bl                                ; 30 d8
     shr ax, 008h                              ; c1 e8 08
-    lea si, [bx+001h]                         ; 8d 77 01
+    lea di, [si+001h]                         ; 8d 7c 01
+    mov dx, di                                ; 89 fa
+    out DX, AL                                ; ee
+    mov AL, strict byte 00dh                  ; b0 0d
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
-    mov AL, strict byte 00dh                  ; b0 0d
-    mov dx, bx                                ; 89 da
-    out DX, AL                                ; ee
-    mov al, cl                                ; 88 c8
-    mov dx, si                                ; 89 f2
-    out DX, AL                                ; ee
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    mov bx, cx                                ; 89 cb
+    mov al, bl                                ; 88 d8
+    mov dx, di                                ; 89 fa
+    out DX, AL                                ; ee
+    movzx si, cl                              ; 0f b6 f1
+    mov bx, si                                ; 89 f3
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 74 22
+    call 02f18h                               ; e8 66 1f
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    mov ax, cx                                ; 89 c8
-    call 00bb5h                               ; e8 37 fe
+    mov ax, si                                ; 89 f0
+    call 00e4bh                               ; e8 91 fe
     leave                                     ; c9
     pop di                                    ; 5f
@@ -1967,5 +2208,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_set_video_mode_:                      ; 0xc0d85 LB 0x38c
+biosfn_set_video_mode_:                      ; 0xc0fc1 LB 0x38c
     push bx                                   ; 53
     push cx                                   ; 51
@@ -1977,7 +2218,7 @@
     and AL, strict byte 080h                  ; 24 80
     mov byte [bp-002h], al                    ; 88 46 fe
-    call 007d4h                               ; e8 3b fa
+    call 007d4h                               ; e8 ff f7
     test ax, ax                               ; 85 c0
-    je short 00da9h                           ; 74 0c
+    je short 00fe5h                           ; 74 0c
     mov AL, strict byte 007h                  ; b0 07
     mov dx, 003c4h                            ; ba c4 03
@@ -1988,8 +2229,8 @@
     and byte [bp-008h], 07fh                  ; 80 66 f8 7f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02fb5h                               ; e8 01 22
+    call 02ee3h                               ; e8 f3 1e
     mov byte [bp-004h], al                    ; 88 46 fc
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 0110ah                            ; 0f 84 4d 03
+    je near 01346h                            ; 0f 84 4d 03
     movzx si, al                              ; 0f b6 f0
     mov al, byte [si+048afh]                  ; 8a 84 af 48
@@ -2005,14 +2246,14 @@
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 ee 21
+    call 02f0ah                               ; e8 e0 1e
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 e5 21
+    call 02f0ah                               ; e8 d7 1e
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 dc 21
+    call 02f0ah                               ; e8 ce 1e
     mov ah, al                                ; 88 c4
     test AL, strict byte 008h                 ; a8 08
-    jne near 00e92h                           ; 0f 85 8a 00
+    jne near 010ceh                           ; 0f 85 8a 00
     mov bx, si                                ; 89 f3
     sal bx, 003h                              ; c1 e3 03
@@ -2025,22 +2266,22 @@
     mov bl, byte [bx+04836h]                  ; 8a 9f 36 48
     cmp bl, 001h                              ; 80 fb 01
-    jc short 00e32h                           ; 72 0e
-    jbe short 00e3bh                          ; 76 15
+    jc short 0106eh                           ; 72 0e
+    jbe short 01077h                          ; 76 15
     cmp bl, 003h                              ; 80 fb 03
-    je short 00e45h                           ; 74 1a
+    je short 01081h                           ; 74 1a
     cmp bl, 002h                              ; 80 fb 02
-    je short 00e40h                           ; 74 10
-    jmp short 00e48h                          ; eb 16
+    je short 0107ch                           ; 74 10
+    jmp short 01084h                          ; eb 16
     test bl, bl                               ; 84 db
-    jne short 00e48h                          ; 75 12
+    jne short 01084h                          ; 75 12
     mov di, 05043h                            ; bf 43 50
-    jmp short 00e48h                          ; eb 0d
+    jmp short 01084h                          ; eb 0d
     mov di, 05103h                            ; bf 03 51
-    jmp short 00e48h                          ; eb 08
+    jmp short 01084h                          ; eb 08
     mov di, 051c3h                            ; bf c3 51
-    jmp short 00e48h                          ; eb 03
+    jmp short 01084h                          ; eb 03
     mov di, 05283h                            ; bf 83 52
     xor bx, bx                                ; 31 db
-    jmp short 00e5bh                          ; eb 0f
+    jmp short 01097h                          ; eb 0f
     xor al, al                                ; 30 c0
     mov dx, 003c9h                            ; ba c9 03
@@ -2050,5 +2291,5 @@
     inc bx                                    ; 43
     cmp bx, 00100h                            ; 81 fb 00 01
-    jnc short 00e85h                          ; 73 2a
+    jnc short 010c1h                          ; 73 2a
     movzx si, byte [bp-004h]                  ; 0f b6 76 fc
     sal si, 003h                              ; c1 e6 03
@@ -2056,5 +2297,5 @@
     movzx dx, byte [si+048bfh]                ; 0f b6 94 bf 48
     cmp bx, dx                                ; 39 d3
-    jnbe short 00e4ch                         ; 77 dc
+    jnbe short 01088h                         ; 77 dc
     imul si, bx, strict byte 00003h           ; 6b f3 03
     add si, di                                ; 01 fe
@@ -2066,10 +2307,10 @@
     mov al, byte [si+002h]                    ; 8a 44 02
     out DX, AL                                ; ee
-    jmp short 00e54h                          ; eb cf
+    jmp short 01090h                          ; eb cf
     test ah, 002h                             ; f6 c4 02
-    je short 00e92h                           ; 74 08
+    je short 010ceh                           ; 74 08
     mov dx, 00100h                            ; ba 00 01
     xor ax, ax                                ; 31 c0
-    call 00a8ch                               ; e8 fa fb
+    call 00d22h                               ; e8 54 fc
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -2077,7 +2318,7 @@
     ; sub ah, ah                                ; 2a e4
     xor bx, bx                                ; 31 db
-    jmp short 00ea1h                          ; eb 05
+    jmp short 010ddh                          ; eb 05
     cmp bx, strict byte 00013h                ; 83 fb 13
-    jnbe short 00eb8h                         ; 77 17
+    jnbe short 010f4h                         ; 77 17
     mov al, bl                                ; 88 d8
     mov dx, 003c0h                            ; ba c0 03
@@ -2089,5 +2330,5 @@
     out DX, AL                                ; ee
     inc bx                                    ; 43
-    jmp short 00e9ch                          ; eb e4
+    jmp short 010d8h                          ; eb e4
     mov AL, strict byte 014h                  ; b0 14
     mov dx, 003c0h                            ; ba c0 03
@@ -2101,7 +2342,7 @@
     out DX, AL                                ; ee
     mov bx, strict word 00001h                ; bb 01 00
-    jmp short 00ed5h                          ; eb 05
+    jmp short 01111h                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnbe short 00eefh                         ; 77 1a
+    jnbe short 0112bh                         ; 77 1a
     mov al, bl                                ; 88 d8
     mov dx, 003c4h                            ; ba c4 03
@@ -2114,9 +2355,9 @@
     out DX, AL                                ; ee
     inc bx                                    ; 43
-    jmp short 00ed0h                          ; eb e1
+    jmp short 0110ch                          ; eb e1
     xor bx, bx                                ; 31 db
-    jmp short 00ef8h                          ; eb 05
+    jmp short 01134h                          ; eb 05
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jnbe short 00f12h                         ; 77 1a
+    jnbe short 0114eh                         ; 77 1a
     mov al, bl                                ; 88 d8
     mov dx, 003ceh                            ; ba ce 03
@@ -2129,11 +2370,11 @@
     out DX, AL                                ; ee
     inc bx                                    ; 43
-    jmp short 00ef3h                          ; eb e1
+    jmp short 0112fh                          ; eb e1
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     sal bx, 003h                              ; c1 e3 03
     cmp byte [bx+04831h], 001h                ; 80 bf 31 48 01
-    jne short 00f25h                          ; 75 05
+    jne short 01161h                          ; 75 05
     mov dx, 003b4h                            ; ba b4 03
-    jmp short 00f28h                          ; eb 03
+    jmp short 01164h                          ; eb 03
     mov dx, 003d4h                            ; ba d4 03
     mov si, dx                                ; 89 d6
@@ -2141,7 +2382,7 @@
     out DX, ax                                ; ef
     xor bx, bx                                ; 31 db
-    jmp short 00f37h                          ; eb 05
+    jmp short 01173h                          ; eb 05
     cmp bx, strict byte 00018h                ; 83 fb 18
-    jnbe short 00f52h                         ; 77 1b
+    jnbe short 0118eh                         ; 77 1b
     mov al, bl                                ; 88 d8
     mov dx, si                                ; 89 f2
@@ -2155,5 +2396,5 @@
     out DX, AL                                ; ee
     inc bx                                    ; 43
-    jmp short 00f32h                          ; eb e0
+    jmp short 0116eh                          ; eb e0
     mov bx, cx                                ; 89 cb
     mov al, byte [bx+048cch]                  ; 8a 87 cc 48
@@ -2168,9 +2409,9 @@
     ; sub ah, ah                                ; 2a e4
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 00fcdh                          ; 75 5f
+    jne short 01209h                          ; 75 5f
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     sal bx, 003h                              ; c1 e3 03
     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    jne short 00f8fh                          ; 75 13
+    jne short 011cbh                          ; 75 13
     mov es, [bx+04833h]                       ; 8e 87 33 48
     mov cx, 04000h                            ; b9 00 40
@@ -2178,9 +2419,9 @@
     xor di, di                                ; 31 ff
     cld                                       ; fc
-    jcxz 00f8dh                               ; e3 02
+    jcxz 011c9h                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp short 00fcdh                          ; eb 3e
+    jmp short 01209h                          ; eb 3e
     cmp byte [bp-008h], 00dh                  ; 80 7e f8 0d
-    jnc short 00fa7h                          ; 73 12
+    jnc short 011e3h                          ; 73 12
     mov es, [bx+04833h]                       ; 8e 87 33 48
     mov cx, 04000h                            ; b9 00 40
@@ -2188,7 +2429,7 @@
     xor di, di                                ; 31 ff
     cld                                       ; fc
-    jcxz 00fa5h                               ; e3 02
+    jcxz 011e1h                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp short 00fcdh                          ; eb 26
+    jmp short 01209h                          ; eb 26
     mov AL, strict byte 002h                  ; b0 02
     mov dx, 003c4h                            ; ba c4 03
@@ -2206,5 +2447,5 @@
     xor di, di                                ; 31 ff
     cld                                       ; fc
-    jcxz 00fc9h                               ; e3 02
+    jcxz 01205h                               ; e3 02
     rep stosw                                 ; f3 ab
     mov al, byte [bp-010h]                    ; 8a 46 f0
@@ -2213,9 +2454,9 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 10 20
+    call 02f18h                               ; e8 02 1d
     mov bx, word [bp-00ch]                    ; 8b 5e f4
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 20 20
+    call 02f34h                               ; e8 12 1d
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     sal bx, 006h                              ; c1 e3 06
@@ -2223,17 +2464,17 @@
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 0c 20
+    call 02f34h                               ; e8 fe 1c
     mov bx, si                                ; 89 f3
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 01 20
+    call 02f34h                               ; e8 f3 1c
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 d8 1f
+    call 02f18h                               ; e8 ca 1c
     mov bx, word [bp-00eh]                    ; 8b 5e f2
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 e8 1f
+    call 02f34h                               ; e8 da 1c
     mov al, byte [bp-002h]                    ; 8a 46 fe
     or AL, strict byte 060h                   ; 0c 60
@@ -2241,59 +2482,59 @@
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 bb 1f
+    call 02f18h                               ; e8 ad 1c
     mov bx, 000f9h                            ; bb f9 00
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 af 1f
+    call 02f18h                               ; e8 a1 1c
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 98 1f
+    call 02f0ah                               ; e8 8a 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 02feah                               ; e8 98 1f
+    call 02f18h                               ; e8 8a 1c
     mov bx, strict word 00008h                ; bb 08 00
     mov dx, 0008ah                            ; ba 8a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 8c 1f
+    call 02f18h                               ; e8 7e 1c
     mov bx, 05593h                            ; bb 93 55
     mov dx, 000a8h                            ; ba a8 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 9c 1f
+    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 03006h                               ; e8 90 1f
+    call 02f34h                               ; e8 82 1c
     xor bx, bx                                ; 31 db
     mov dx, strict word 00065h                ; ba 65 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 69 1f
+    call 02f18h                               ; e8 5b 1c
     xor bx, bx                                ; 31 db
     mov dx, strict word 00066h                ; ba 66 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 5e 1f
+    call 02f18h                               ; e8 50 1c
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     sal bx, 003h                              ; c1 e3 03
     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    jne short 010a3h                          ; 75 09
+    jne short 012dfh                          ; 75 09
     mov dx, strict word 00007h                ; ba 07 00
     mov ax, strict word 00006h                ; b8 06 00
-    call 00b14h                               ; e8 71 fa
+    call 00daah                               ; e8 cb fa
     xor bx, bx                                ; 31 db
-    jmp short 010ach                          ; eb 05
+    jmp short 012e8h                          ; eb 05
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jnc short 010b7h                          ; 73 0b
+    jnc short 012f3h                          ; 73 0b
     movzx ax, bl                              ; 0f b6 c3
     xor dx, dx                                ; 31 d2
-    call 00bb5h                               ; e8 01 fb
+    call 00e4bh                               ; e8 5b fb
     inc bx                                    ; 43
-    jmp short 010a7h                          ; eb f0
+    jmp short 012e3h                          ; eb f0
     xor ax, ax                                ; 31 c0
-    call 00ca8h                               ; e8 ec fb
+    call 00ee9h                               ; e8 f1 fb
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     sal bx, 003h                              ; c1 e3 03
     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    jne short 010dah                          ; 75 10
+    jne short 01316h                          ; 75 10
     xor bl, bl                                ; 30 db
     mov AL, strict byte 004h                  ; b0 04
@@ -2306,20 +2547,20 @@
     mov dx, 059afh                            ; ba af 59
     mov ax, strict word 0001fh                ; b8 1f 00
-    call 00a00h                               ; e8 1d f9
+    call 00a00h                               ; e8 e1 f6
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, strict word 00010h                ; 3d 10 00
-    je short 01105h                           ; 74 1a
+    je short 01341h                           ; 74 1a
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    je short 01100h                           ; 74 10
+    je short 0133ch                           ; 74 10
     cmp ax, strict word 00008h                ; 3d 08 00
-    jne short 0110ah                          ; 75 15
+    jne short 01346h                          ; 75 15
     mov dx, 055afh                            ; ba af 55
     mov ax, strict word 00043h                ; b8 43 00
-    call 00a00h                               ; e8 02 f9
-    jmp short 0110ah                          ; eb 0a
+    call 00a00h                               ; e8 c6 f6
+    jmp short 01346h                          ; eb 0a
     mov dx, 05dafh                            ; ba af 5d
-    jmp short 010f8h                          ; eb f3
+    jmp short 01334h                          ; eb f3
     mov dx, 06bafh                            ; ba af 6b
-    jmp short 010f8h                          ; eb ee
+    jmp short 01334h                          ; eb ee
     leave                                     ; c9
     pop di                                    ; 5f
@@ -2329,5 +2570,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vgamem_copy_pl4_:                            ; 0xc1111 LB 0x72
+vgamem_copy_pl4_:                            ; 0xc134d LB 0x72
     push si                                   ; 56
     push di                                   ; 57
@@ -2352,5 +2593,5 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
-    jnc short 01176h                          ; 73 29
+    jnc short 013b2h                          ; 73 29
     movzx cx, bh                              ; 0f b6 cf
     movzx si, bl                              ; 0f b6 f3
@@ -2364,5 +2605,5 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 01172h                               ; e3 06
+    jcxz 013aeh                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2371,5 +2612,5 @@
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 01148h                          ; eb d2
+    jmp short 01384h                          ; eb d2
     mov ax, strict word 00005h                ; b8 05 00
     mov dx, 003ceh                            ; ba ce 03
@@ -2379,5 +2620,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-vgamem_fill_pl4_:                            ; 0xc1183 LB 0x5d
+vgamem_fill_pl4_:                            ; 0xc13bf LB 0x5d
     push di                                   ; 57
     enter 00004h, 000h                        ; c8 04 00 00
@@ -2397,5 +2638,5 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+006h]                    ; 3a 5e 06
-    jnc short 011d4h                          ; 73 22
+    jnc short 01410h                          ; 73 22
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
@@ -2407,9 +2648,9 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 011d0h                               ; e3 02
+    jcxz 0140ch                               ; e3 02
     rep stosb                                 ; f3 aa
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 011adh                          ; eb d9
+    jmp short 013e9h                          ; eb d9
     mov ax, strict word 00005h                ; b8 05 00
     mov dx, 003ceh                            ; ba ce 03
@@ -2418,5 +2659,5 @@
     pop di                                    ; 5f
     retn 00004h                               ; c2 04 00
-vgamem_copy_cga_:                            ; 0xc11e0 LB 0xa0
+vgamem_copy_cga_:                            ; 0xc141c LB 0xa0
     push si                                   ; 56
     push di                                   ; 57
@@ -2440,7 +2681,7 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
-    jnc short 0127ah                          ; 73 61
+    jnc short 014b6h                          ; 73 61
     test bl, 001h                             ; f6 c3 01
-    je short 0124fh                           ; 74 31
+    je short 0148bh                           ; 74 31
     movzx cx, bh                              ; 0f b6 cf
     movzx si, bl                              ; 0f b6 f3
@@ -2457,10 +2698,10 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 0124dh                               ; e3 06
+    jcxz 01489h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
     rep movsb                                 ; f3 a4
     pop DS                                    ; 1f
-    jmp short 01276h                          ; eb 27
+    jmp short 014b2h                          ; eb 27
     movzx cx, bh                              ; 0f b6 cf
     movzx ax, bl                              ; 0f b6 c3
@@ -2475,5 +2716,5 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 01276h                               ; e3 06
+    jcxz 014b2h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2482,10 +2723,10 @@
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 01214h                          ; eb 9a
+    jmp short 01450h                          ; eb 9a
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-vgamem_fill_cga_:                            ; 0xc1280 LB 0x86
+vgamem_fill_cga_:                            ; 0xc14bc LB 0x86
     push si                                   ; 56
     push di                                   ; 57
@@ -2503,7 +2744,7 @@
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp+008h]                    ; 3a 5e 08
-    jnc short 01300h                          ; 73 57
+    jnc short 0153ch                          ; 73 57
     test bl, 001h                             ; f6 c3 01
-    je short 012ddh                           ; 74 2f
+    je short 01519h                           ; 74 2f
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
@@ -2520,7 +2761,7 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 012dbh                               ; e3 02
+    jcxz 01517h                               ; e3 02
     rep stosb                                 ; f3 aa
-    jmp short 012fch                          ; eb 1f
+    jmp short 01538h                          ; eb 1f
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
@@ -2533,14 +2774,14 @@
     mov es, dx                                ; 8e c2
     cld                                       ; fc
-    jcxz 012fch                               ; e3 02
+    jcxz 01538h                               ; e3 02
     rep stosb                                 ; f3 aa
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp short 012a4h                          ; eb a4
+    jmp short 014e0h                          ; eb a4
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-biosfn_scroll_:                              ; 0xc1306 LB 0x501
+biosfn_scroll_:                              ; 0xc1542 LB 0x501
     push si                                   ; 56
     push di                                   ; 57
@@ -2551,33 +2792,33 @@
     mov byte [bp-002h], cl                    ; 88 4e fe
     cmp bl, byte [bp+008h]                    ; 3a 5e 08
-    jnbe near 01801h                          ; 0f 87 e2 04
+    jnbe near 01a3dh                          ; 0f 87 e2 04
     cmp cl, byte [bp+00ah]                    ; 3a 4e 0a
-    jnbe near 01801h                          ; 0f 87 db 04
+    jnbe near 01a3dh                          ; 0f 87 db 04
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 ad 1c
+    call 02f0ah                               ; e8 9f 19
     xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 81 1c
+    call 02ee3h                               ; e8 73 19
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01801h                            ; 0f 84 c4 04
+    je near 01a3dh                            ; 0f 84 c4 04
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 96 1c
+    call 02f0ah                               ; e8 88 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 02ff8h                               ; e8 a5 1c
+    call 02f26h                               ; e8 97 19
     mov word [bp-012h], ax                    ; 89 46 ee
     cmp byte [bp+00ch], 0ffh                  ; 80 7e 0c ff
-    jne short 01368h                          ; 75 0c
+    jne short 015a4h                          ; 75 0c
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 77 1c
+    call 02f0ah                               ; e8 69 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 01377h                           ; 72 07
+    jc short 015b3h                           ; 72 07
     mov al, cl                                ; 88 c8
     db  0feh, 0c8h
@@ -2586,5 +2827,5 @@
     movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jc short 01388h                           ; 72 08
+    jc short 015c4h                           ; 72 08
     mov al, byte [bp-012h]                    ; 8a 46 ee
     db  0feh, 0c8h
@@ -2593,5 +2834,5 @@
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     cmp ax, cx                                ; 39 c8
-    jbe short 01394h                          ; 76 04
+    jbe short 015d0h                          ; 76 04
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     mov al, byte [bp+00ah]                    ; 8a 46 0a
@@ -2612,5 +2853,5 @@
     imul ax, cx                               ; 0f af c1
     cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
-    jne near 01563h                           ; 0f 85 9f 01
+    jne near 0179fh                           ; 0f 85 9f 01
     mov dx, ax                                ; 89 c2
     add dx, ax                                ; 01 c2
@@ -2620,15 +2861,15 @@
     imul bx, dx                               ; 0f af da
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01413h                          ; 75 3a
+    jne short 0164fh                          ; 75 3a
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 01413h                          ; 75 34
+    jne short 0164fh                          ; 75 34
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 01413h                          ; 75 2e
+    jne short 0164fh                          ; 75 2e
     movzx dx, byte [bp+008h]                  ; 0f b6 56 08
     cmp dx, word [bp-016h]                    ; 3b 56 ea
-    jne short 01413h                          ; 75 25
+    jne short 0164fh                          ; 75 25
     movzx dx, byte [bp+00ah]                  ; 0f b6 56 0a
     cmp dx, word [bp-014h]                    ; 3b 56 ec
-    jne short 01413h                          ; 75 1c
+    jne short 0164fh                          ; 75 1c
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     sal dx, 008h                              ; c1 e2 08
@@ -2639,20 +2880,20 @@
     mov di, bx                                ; 89 df
     cld                                       ; fc
-    jcxz 01410h                               ; e3 02
+    jcxz 0164ch                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp near 01801h                           ; e9 ee 03
+    jmp near 01a3dh                           ; e9 ee 03
     cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
-    jne near 014b8h                           ; 0f 85 9d 00
+    jne near 016f4h                           ; 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 01801h                            ; 0f 82 d4 03
+    jc near 01a3dh                            ; 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 0143eh                         ; 77 06
+    jnbe short 0167ah                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01471h                          ; 75 33
+    jne short 016adh                          ; 75 33
     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
@@ -2670,7 +2911,7 @@
     mov es, [si+04833h]                       ; 8e 84 33 48
     cld                                       ; fc
-    jcxz 0146fh                               ; e3 02
+    jcxz 016abh                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp short 014b2h                          ; eb 41
+    jmp short 016eeh                          ; eb 41
     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     mov word [bp-018h], dx                    ; 89 56 e8
@@ -2694,5 +2935,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 014b2h                               ; e3 06
+    jcxz 016eeh                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2700,17 +2941,17 @@
     pop DS                                    ; 1f
     inc word [bp-010h]                        ; ff 46 f0
-    jmp near 01422h                           ; e9 6a ff
+    jmp near 0165eh                           ; 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 01801h                          ; 0f 87 37 03
+    jnbe near 01a3dh                          ; 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 014dfh                         ; 77 06
+    jnbe short 0171bh                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01512h                          ; 75 33
+    jne short 0174eh                          ; 75 33
     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
@@ -2728,7 +2969,7 @@
     mov es, [si+04833h]                       ; 8e 84 33 48
     cld                                       ; fc
-    jcxz 01510h                               ; e3 02
+    jcxz 0174ch                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp short 01552h                          ; eb 40
+    jmp short 0178eh                          ; eb 40
     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
@@ -2751,5 +2992,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 01552h                               ; e3 06
+    jcxz 0178eh                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -2758,7 +2999,7 @@
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc near 01801h                            ; 0f 82 a4 02
+    jc near 01a3dh                            ; 0f 82 a4 02
     dec word [bp-010h]                        ; ff 4e f0
-    jmp near 014bfh                           ; e9 5c ff
+    jmp near 016fbh                           ; e9 5c ff
     movzx bx, byte [si+048afh]                ; 0f b6 9c af 48
     sal bx, 006h                              ; c1 e3 06
@@ -2767,26 +3008,26 @@
     mov bl, byte [di+04831h]                  ; 8a 9d 31 48
     cmp bl, 004h                              ; 80 fb 04
-    je short 0158ah                           ; 74 0f
+    je short 017c6h                           ; 74 0f
     cmp bl, 003h                              ; 80 fb 03
-    je short 0158ah                           ; 74 0a
+    je short 017c6h                           ; 74 0a
     cmp bl, 002h                              ; 80 fb 02
-    je near 016c9h                            ; 0f 84 42 01
-    jmp near 01801h                           ; e9 77 02
+    je near 01905h                            ; 0f 84 42 01
+    jmp near 01a3dh                           ; e9 77 02
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 015e2h                          ; 75 52
+    jne short 0181eh                          ; 75 52
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 015e2h                          ; 75 4c
+    jne short 0181eh                          ; 75 4c
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 015e2h                          ; 75 46
+    jne short 0181eh                          ; 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 015e2h                          ; 75 3b
+    jne short 0181eh                          ; 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 015e2h                          ; 75 2f
+    jne short 0181eh                          ; 75 2f
     mov ax, 00205h                            ; b8 05 02
     mov dx, 003ceh                            ; ba ce 03
@@ -2801,22 +3042,22 @@
     xor di, di                                ; 31 ff
     cld                                       ; fc
-    jcxz 015dbh                               ; e3 02
+    jcxz 01817h                               ; e3 02
     rep stosb                                 ; f3 aa
     mov ax, strict word 00005h                ; b8 05 00
     out DX, ax                                ; ef
-    jmp near 01801h                           ; e9 1f 02
+    jmp near 01a3dh                           ; e9 1f 02
     cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
-    jne short 01651h                          ; 75 69
+    jne short 0188dh                          ; 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 01801h                            ; 0f 82 07 02
+    jc near 01a3dh                            ; 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 0160bh                         ; 77 06
+    jnbe short 01847h                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0162ah                          ; 75 1f
+    jne short 01866h                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -2827,6 +3068,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01183h                               ; e8 5b fb
-    jmp short 0164ch                          ; eb 22
+    call 013bfh                               ; e8 5b fb
+    jmp short 01888h                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -2839,19 +3080,19 @@
     movzx dx, al                              ; 0f b6 d0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01111h                               ; e8 c5 fa
+    call 0134dh                               ; e8 c5 fa
     inc word [bp-010h]                        ; ff 46 f0
-    jmp short 015efh                          ; eb 9e
+    jmp short 0182bh                          ; 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 01801h                          ; 0f 87 9e 01
+    jnbe near 01a3dh                          ; 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 01678h                         ; 77 06
+    jnbe short 018b4h                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01697h                          ; 75 1f
+    jne short 018d3h                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -2862,6 +3103,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01183h                               ; e8 ee fa
-    jmp short 016b9h                          ; eb 22
+    call 013bfh                               ; e8 ee fa
+    jmp short 018f5h                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -2874,23 +3115,23 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01111h                               ; e8 58 fa
+    call 0134dh                               ; e8 58 fa
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc near 01801h                            ; 0f 82 3d 01
+    jc near 01a3dh                            ; 0f 82 3d 01
     dec word [bp-010h]                        ; ff 4e f0
-    jmp short 01658h                          ; eb 8f
+    jmp short 01894h                          ; eb 8f
     mov dl, byte [di+04832h]                  ; 8a 95 32 48
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01710h                          ; 75 3d
+    jne short 0194ch                          ; 75 3d
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 01710h                          ; 75 37
+    jne short 0194ch                          ; 75 37
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 01710h                          ; 75 31
+    jne short 0194ch                          ; 75 31
     movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
     cmp bx, word [bp-016h]                    ; 3b 5e ea
-    jne short 01710h                          ; 75 28
+    jne short 0194ch                          ; 75 28
     movzx bx, byte [bp+00ah]                  ; 0f b6 5e 0a
     cmp bx, word [bp-014h]                    ; 3b 5e ec
-    jne short 01710h                          ; 75 1f
+    jne short 0194ch                          ; 75 1f
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     imul ax, bx                               ; 0f af c3
@@ -2901,25 +3142,25 @@
     xor di, di                                ; 31 ff
     cld                                       ; fc
-    jcxz 0170dh                               ; e3 02
+    jcxz 01949h                               ; e3 02
     rep stosb                                 ; f3 aa
-    jmp near 01801h                           ; e9 f1 00
+    jmp near 01a3dh                           ; e9 f1 00
     cmp dl, 002h                              ; 80 fa 02
-    jne short 0171eh                          ; 75 09
+    jne short 0195ah                          ; 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 0178dh                          ; 75 69
+    jne short 019c9h                          ; 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 01801h                            ; 0f 82 cb 00
+    jc near 01a3dh                            ; 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 01747h                         ; 77 06
+    jnbe short 01983h                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 01766h                          ; 75 1f
+    jne short 019a2h                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -2930,6 +3171,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01280h                               ; e8 1c fb
-    jmp short 01788h                          ; eb 22
+    call 014bch                               ; e8 1c fb
+    jmp short 019c4h                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -2942,19 +3183,19 @@
     movzx dx, al                              ; 0f b6 d0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 011e0h                               ; e8 58 fa
+    call 0141ch                               ; e8 58 fa
     inc word [bp-010h]                        ; ff 46 f0
-    jmp short 0172bh                          ; eb 9e
+    jmp short 01967h                          ; 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 01801h                         ; 77 64
+    jnbe short 01a3dh                         ; 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 017b2h                         ; 77 06
+    jnbe short 019eeh                         ; 77 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 017d1h                          ; 75 1f
+    jne short 01a0dh                          ; 75 1f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -2965,6 +3206,6 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01280h                               ; e8 b1 fa
-    jmp short 017f3h                          ; eb 22
+    call 014bch                               ; e8 b1 fa
+    jmp short 01a2fh                          ; eb 22
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -2977,83 +3218,15 @@
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 011e0h                               ; e8 ed f9
+    call 0141ch                               ; e8 ed f9
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jc short 01801h                           ; 72 05
+    jc short 01a3dh                           ; 72 05
     dec word [bp-010h]                        ; ff 4e f0
-    jmp short 01794h                          ; eb 93
+    jmp short 019d0h                          ; eb 93
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00008h                               ; c2 08 00
-biosfn_read_char_attr_:                      ; 0xc1807 LB 0xa5
-    push bx                                   ; 53
-    push cx                                   ; 51
-    push si                                   ; 56
-    push di                                   ; 57
-    enter 0000ch, 000h                        ; c8 0c 00 00
-    mov byte [bp-006h], al                    ; 88 46 fa
-    mov si, dx                                ; 89 d6
-    mov ax, ss                                ; 8c d0
-    mov di, ax                                ; 89 c7
-    mov dx, strict word 00049h                ; ba 49 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 bb 17
-    xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 8f 17
-    mov byte [bp-004h], al                    ; 88 46 fc
-    cmp AL, strict byte 0ffh                  ; 3c ff
-    je short 018a6h                           ; 74 79
-    lea dx, [bp-00ch]                         ; 8d 56 f4
-    push SS                                   ; 16
-    push dx                                   ; 52
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp-00ah]                         ; 8d 5e f6
-    call 00c53h                               ; e8 15 f4
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
-    mov byte [bp-002h], al                    ; 88 46 fe
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
-    xor al, al                                ; 30 c0
-    shr ax, 008h                              ; c1 e8 08
-    mov word [bp-008h], ax                    ; 89 46 f8
-    mov dx, 00084h                            ; ba 84 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 84 17
-    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 02ff8h                               ; e8 93 17
-    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
-    sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
-    jne short 018a6h                          ; 75 33
-    mov dx, ax                                ; 89 c2
-    imul dx, cx                               ; 0f af d1
-    add dx, dx                                ; 01 d2
-    or dl, 0ffh                               ; 80 ca ff
-    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
-    inc dx                                    ; 42
-    imul dx, cx                               ; 0f af d1
-    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
-    imul ax, cx                               ; 0f af c1
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    add ax, cx                                ; 01 c8
-    add ax, ax                                ; 01 c0
-    add dx, ax                                ; 01 c2
-    mov ax, word [bx+04833h]                  ; 8b 87 33 48
-    call 02ff8h                               ; e8 5b 17
-    mov bx, ax                                ; 89 c3
-    mov dx, si                                ; 89 f2
-    mov ax, di                                ; 89 f8
-    call 03006h                               ; e8 60 17
-    leave                                     ; c9
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    pop cx                                    ; 59
-    pop bx                                    ; 5b
-    retn                                      ; c3
-write_gfx_char_pl4_:                         ; 0xc18ac LB 0xe6
+write_gfx_char_pl4_:                         ; 0xc1a43 LB 0xe6
     push si                                   ; 56
     push di                                   ; 57
@@ -3062,11 +3235,11 @@
     mov ah, bl                                ; 88 dc
     cmp byte [bp+00ah], 010h                  ; 80 7e 0a 10
-    je short 018c8h                           ; 74 0b
+    je short 01a5fh                           ; 74 0b
     cmp byte [bp+00ah], 00eh                  ; 80 7e 0a 0e
-    jne short 018cdh                          ; 75 0a
+    jne short 01a64h                          ; 75 0a
     mov di, 05dafh                            ; bf af 5d
-    jmp short 018d0h                          ; eb 08
+    jmp short 01a67h                          ; eb 08
     mov di, 06bafh                            ; bf af 6b
-    jmp short 018d0h                          ; eb 03
+    jmp short 01a67h                          ; eb 03
     mov di, 055afh                            ; bf af 55
     movzx si, cl                              ; 0f b6 f1
@@ -3088,13 +3261,13 @@
     out DX, ax                                ; ef
     test byte [bp-002h], 080h                 ; f6 46 fe 80
-    je short 0190bh                           ; 74 06
+    je short 01aa2h                           ; 74 06
     mov ax, 01803h                            ; b8 03 18
     out DX, ax                                ; ef
-    jmp short 0190fh                          ; eb 04
+    jmp short 01aa6h                          ; 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 0197dh                          ; 73 67
+    jnc short 01b14h                          ; 73 67
     movzx si, ch                              ; 0f b6 f5
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
@@ -3102,12 +3275,12 @@
     add si, word [bp-00ah]                    ; 03 76 f6
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
-    jmp short 0193ch                          ; eb 13
+    jmp short 01ad3h                          ; eb 13
     xor bx, bx                                ; 31 db
     mov dx, si                                ; 89 f2
     mov ax, 0a000h                            ; b8 00 a0
-    call 02feah                               ; e8 b7 16
+    call 02f18h                               ; e8 4e 14
     inc byte [bp-004h]                        ; fe 46 fc
     cmp byte [bp-004h], 008h                  ; 80 7e fc 08
-    jnc short 01979h                          ; 73 3d
+    jnc short 01b10h                          ; 73 3d
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     mov cl, al                                ; 88 c1
@@ -3122,5 +3295,5 @@
     mov dx, si                                ; 89 f2
     mov ax, 0a000h                            ; b8 00 a0
-    call 02fdch                               ; e8 7f 16
+    call 02f0ah                               ; e8 16 14
     movzx ax, ch                              ; 0f b6 c5
     add ax, word [bp-006h]                    ; 03 46 fa
@@ -3129,12 +3302,12 @@
     movzx ax, byte [bx]                       ; 0f b6 07
     test word [bp-008h], ax                   ; 85 46 f8
-    je short 01929h                           ; 74 ba
+    je short 01ac0h                           ; 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 0192bh                          ; eb b2
+    jmp short 01ac2h                          ; eb b2
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 01911h                          ; eb 94
+    jmp short 01aa8h                          ; eb 94
     mov ax, 0ff08h                            ; b8 08 ff
     mov dx, 003ceh                            ; ba ce 03
@@ -3148,5 +3321,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-write_gfx_char_cga_:                         ; 0xc1992 LB 0x119
+write_gfx_char_cga_:                         ; 0xc1b29 LB 0x119
     push si                                   ; 56
     push di                                   ; 57
@@ -3164,8 +3337,8 @@
     sal di, 003h                              ; c1 e7 03
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
-    jmp near 01a10h                           ; e9 50 00
+    jmp near 01ba7h                           ; e9 50 00
     xor al, al                                ; 30 c0
     xor ah, ah                                ; 30 e4
-    jmp short 019d1h                          ; eb 0b
+    jmp short 01b68h                          ; eb 0b
     or al, bl                                 ; 08 d8
     shr ch, 1                                 ; d0 ed
@@ -3173,5 +3346,5 @@
     ; inc ah                                    ; fe c4
     cmp ah, 008h                              ; 80 fc 08
-    jnc short 019f9h                          ; 73 28
+    jnc short 01b90h                          ; 73 28
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     add bx, di                                ; 01 fb
@@ -3180,5 +3353,5 @@
     movzx dx, ch                              ; 0f b6 d5
     test bx, dx                               ; 85 d3
-    je short 019c8h                           ; 74 e5
+    je short 01b5fh                           ; 74 e5
     mov CL, strict byte 007h                  ; b1 07
     sub cl, ah                                ; 28 e1
@@ -3187,14 +3360,14 @@
     sal bl, CL                                ; d2 e3
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 019c6h                           ; 74 d1
+    je short 01b5dh                           ; 74 d1
     xor al, bl                                ; 30 d8
-    jmp short 019c8h                          ; eb cf
+    jmp short 01b5fh                          ; eb cf
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02feah                               ; e8 e5 15
+    call 02f18h                               ; e8 7c 13
     inc byte [bp-002h]                        ; fe 46 fe
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc near 01aa5h                           ; 0f 83 95 00
+    jnc near 01c3ch                           ; 0f 83 95 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     sar ax, 1                                 ; d1 f8
@@ -3204,26 +3377,26 @@
     mov word [bp-006h], bx                    ; 89 5e fa
     test byte [bp-002h], 001h                 ; f6 46 fe 01
-    je short 01a2bh                           ; 74 04
+    je short 01bc2h                           ; 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 01a44h                          ; 75 11
+    jne short 01bdbh                          ; 75 11
     test byte [bp-004h], ch                   ; 84 6e fc
-    je short 019c0h                           ; 74 88
+    je short 01b57h                           ; 74 88
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02fdch                               ; e8 9b 15
-    jmp near 019c2h                           ; e9 7e ff
+    call 02f0ah                               ; e8 32 13
+    jmp near 01b59h                           ; e9 7e ff
     test ch, ch                               ; 84 ed
-    jbe short 01a05h                          ; 76 bd
+    jbe short 01b9ch                          ; 76 bd
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 01a59h                           ; 74 0b
+    je short 01bf0h                           ; 74 0b
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02fdch                               ; e8 85 15
-    jmp short 01a5bh                          ; eb 02
+    call 02f0ah                               ; e8 1c 13
+    jmp short 01bf2h                          ; eb 02
     xor al, al                                ; 30 c0
     xor ah, ah                                ; 30 e4
-    jmp short 01a6ah                          ; eb 0b
+    jmp short 01c01h                          ; eb 0b
     or al, bl                                 ; 08 d8
     shr ch, 1                                 ; d0 ed
@@ -3231,5 +3404,5 @@
     ; inc ah                                    ; fe c4
     cmp ah, 004h                              ; 80 fc 04
-    jnc short 01a94h                          ; 73 2a
+    jnc short 01c2bh                          ; 73 2a
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     add bx, di                                ; 01 fb
@@ -3238,5 +3411,5 @@
     movzx bx, ch                              ; 0f b6 dd
     test bx, dx                               ; 85 d3
-    je short 01a61h                           ; 74 e5
+    je short 01bf8h                           ; 74 e5
     mov CL, strict byte 003h                  ; b1 03
     sub cl, ah                                ; 28 e1
@@ -3246,18 +3419,18 @@
     sal bl, CL                                ; d2 e3
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 01a5fh                           ; 74 cf
+    je short 01bf6h                           ; 74 cf
     xor al, bl                                ; 30 d8
-    jmp short 01a61h                          ; eb cd
+    jmp short 01bf8h                          ; eb cd
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02feah                               ; e8 4a 15
+    call 02f18h                               ; e8 e1 12
     inc word [bp-006h]                        ; ff 46 fa
-    jmp short 01a44h                          ; eb 9f
+    jmp short 01bdbh                          ; eb 9f
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-write_gfx_char_lin_:                         ; 0xc1aab LB 0x8c
+write_gfx_char_lin_:                         ; 0xc1c42 LB 0x8c
     push si                                   ; 56
     push di                                   ; 57
@@ -3276,7 +3449,7 @@
     sal si, 003h                              ; c1 e6 03
     xor cl, cl                                ; 30 c9
-    jmp short 01b14h                          ; eb 3b
+    jmp short 01cabh                          ; eb 3b
     cmp ch, 008h                              ; 80 fd 08
-    jnc short 01b0dh                          ; 73 2f
+    jnc short 01ca4h                          ; 73 2f
     xor al, al                                ; 30 c0
     movzx dx, cl                              ; 0f b6 d1
@@ -3287,5 +3460,5 @@
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     test dx, bx                               ; 85 da
-    je short 01af7h                           ; 74 03
+    je short 01c8eh                           ; 74 03
     mov al, byte [bp-002h]                    ; 8a 46 fe
     movzx bx, al                              ; 0f b6 d8
@@ -3293,13 +3466,13 @@
     add dx, word [bp-006h]                    ; 03 56 fa
     mov ax, 0a000h                            ; b8 00 a0
-    call 02feah                               ; e8 e4 14
+    call 02f18h                               ; e8 7b 12
     shr byte [bp-004h], 1                     ; d0 6e fc
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 01ad9h                          ; eb cc
+    jmp short 01c70h                          ; eb cc
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     cmp cl, 008h                              ; 80 f9 08
-    jnc short 01b31h                          ; 73 1d
+    jnc short 01cc8h                          ; 73 1d
     movzx bx, cl                              ; 0f b6 d9
     movzx dx, byte [bp+008h]                  ; 0f b6 56 08
@@ -3311,185 +3484,179 @@
     mov byte [bp-004h], 080h                  ; c6 46 fc 80
     xor ch, ch                                ; 30 ed
-    jmp short 01adeh                          ; eb ad
+    jmp short 01c75h                          ; eb ad
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-biosfn_write_char_attr_:                     ; 0xc1b37 LB 0x168
+biosfn_write_char_attr_:                     ; 0xc1cce LB 0x163
     push si                                   ; 56
     push di                                   ; 57
-    enter 0001ah, 000h                        ; c8 1a 00 00
-    mov byte [bp-00ch], al                    ; 88 46 f4
-    mov byte [bp-012h], dl                    ; 88 56 ee
-    mov byte [bp-006h], bl                    ; 88 5e fa
+    enter 00018h, 000h                        ; c8 18 00 00
+    mov byte [bp-00ah], al                    ; 88 46 f6
+    mov byte [bp-00ch], dl                    ; 88 56 f4
+    mov byte [bp-00eh], bl                    ; 88 5e f2
     mov si, cx                                ; 89 ce
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 8b 14
+    call 02f0ah                               ; e8 22 12
     xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 5f 14
+    call 02ee3h                               ; e8 f6 11
+    mov cl, al                                ; 88 c1
     mov byte [bp-002h], al                    ; 88 46 fe
-    mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01c9bh                            ; 0f 84 39 01
-    lea dx, [bp-01ah]                         ; 8d 56 e6
-    push SS                                   ; 16
-    push dx                                   ; 52
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
-    mov cx, ss                                ; 8c d1
+    je near 01e2dh                            ; 0f 84 35 01
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     lea bx, [bp-018h]                         ; 8d 5e e8
-    call 00c53h                               ; e8 e0 f0
-    mov al, byte [bp-01ah]                    ; 8a 46 e6
-    mov byte [bp-00eh], al                    ; 88 46 f2
-    mov cx, word [bp-01ah]                    ; 8b 4e e6
-    xor cl, cl                                ; 30 c9
-    shr cx, 008h                              ; c1 e9 08
-    mov byte [bp-010h], cl                    ; 88 4e f0
+    lea dx, [bp-016h]                         ; 8d 56 ea
+    call 00a8ch                               ; e8 87 ed
+    mov al, byte [bp-018h]                    ; 8a 46 e8
+    mov byte [bp-008h], al                    ; 88 46 f8
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    xor al, al                                ; 30 c0
+    shr ax, 008h                              ; c1 e8 08
+    mov byte [bp-006h], al                    ; 88 46 fa
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 4f 14
+    call 02f0ah                               ; e8 eb 11
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
-    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-014h], ax                    ; 89 46 ec
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 5c 14
-    mov word [bp-014h], ax                    ; 89 46 ec
-    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
+    call 02f26h                               ; e8 f8 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 01bf5h                          ; 75 46
-    mov dx, word [bp-016h]                    ; 8b 56 ea
-    imul dx, ax                               ; 0f af d0
-    add dx, dx                                ; 01 d2
-    or dl, 0ffh                               ; 80 ca ff
-    movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
-    inc dx                                    ; 42
-    imul bx, dx                               ; 0f af da
-    movzx dx, cl                              ; 0f b6 d1
-    imul ax, dx                               ; 0f af c2
-    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
-    add ax, dx                                ; 01 d0
+    jne short 01d87h                          ; 75 47
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    imul bx, ax                               ; 0f af d8
+    add bx, bx                                ; 01 db
+    or bl, 0ffh                               ; 80 cb ff
+    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
+    inc bx                                    ; 43
+    imul dx, bx                               ; 0f af d3
+    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
+    imul ax, bx                               ; 0f af c3
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    add ax, bx                                ; 01 d8
     add ax, ax                                ; 01 c0
-    add bx, ax                                ; 01 c3
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    sal dx, 008h                              ; c1 e2 08
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     add dx, ax                                ; 01 c2
-    mov word [bp-018h], dx                    ; 89 56 e8
-    mov ax, word [bp-018h]                    ; 8b 46 e8
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    sal ax, 008h                              ; c1 e0 08
+    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
+    add ax, bx                                ; 01 d8
+    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 cx, si                                ; 89 f1
-    mov di, bx                                ; 89 df
+    mov di, dx                                ; 89 d7
     cld                                       ; fc
-    jcxz 01bf2h                               ; e3 02
+    jcxz 01d84h                               ; e3 02
     rep stosw                                 ; f3 ab
-    jmp near 01c9bh                           ; e9 a6 00
+    jmp near 01e2dh                           ; e9 a6 00
     movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     sal bx, 006h                              ; c1 e3 06
     mov al, byte [bx+048c5h]                  ; 8a 87 c5 48
-    mov byte [bp-008h], al                    ; 88 46 f8
+    mov byte [bp-004h], al                    ; 88 46 fc
     mov al, byte [di+04832h]                  ; 8a 85 32 48
-    mov byte [bp-004h], al                    ; 88 46 fc
+    mov byte [bp-010h], al                    ; 88 46 f0
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je near 01c9bh                            ; 0f 84 88 00
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    cmp ax, word [bp-014h]                    ; 3b 46 ec
-    jnc near 01c9bh                           ; 0f 83 7d 00
-    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
+    je near 01e2dh                            ; 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
+    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     sal bx, 003h                              ; c1 e3 03
     mov al, byte [bx+04831h]                  ; 8a 87 31 48
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 01c39h                           ; 72 0c
-    jbe short 01c3fh                          ; 76 10
+    jc short 01dcbh                           ; 72 0c
+    jbe short 01dd1h                          ; 76 10
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 01c7dh                           ; 74 4a
+    je short 01e0fh                           ; 74 4a
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 01c3fh                           ; 74 08
-    jmp short 01c95h                          ; eb 5c
+    je short 01dd1h                           ; 74 08
+    jmp short 01e27h                          ; eb 5c
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 01c5eh                           ; 74 21
-    jmp short 01c95h                          ; eb 56
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    push ax                                   ; 50
-    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
-    push ax                                   ; 50
-    movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    call 018ach                               ; e8 50 fc
-    jmp short 01c95h                          ; eb 37
+    je short 01df0h                           ; 74 21
+    jmp short 01e27h                          ; eb 56
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
-    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
-    push ax                                   ; 50
-    movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    call 01992h                               ; e8 17 fd
-    jmp short 01c95h                          ; eb 18
-    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
-    push ax                                   ; 50
-    movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    call 01aabh                               ; e8 16 fe
-    inc byte [bp-00eh]                        ; fe 46 f2
-    jmp near 01c0bh                           ; e9 70 ff
+    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    push ax                                   ; 50
+    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    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
+    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
+    push ax                                   ; 50
+    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    push ax                                   ; 50
+    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    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
+    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    push ax                                   ; 50
+    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    call 01c42h                               ; e8 1b fe
+    inc byte [bp-008h]                        ; fe 46 f8
+    jmp near 01d9dh                           ; e9 70 ff
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-biosfn_write_char_only_:                     ; 0xc1c9f LB 0x16d
+biosfn_write_char_only_:                     ; 0xc1e31 LB 0x16a
     push si                                   ; 56
     push di                                   ; 57
-    enter 0001ah, 000h                        ; c8 1a 00 00
-    mov byte [bp-00ah], al                    ; 88 46 f6
+    enter 00018h, 000h                        ; c8 18 00 00
+    mov byte [bp-00eh], al                    ; 88 46 f2
     mov byte [bp-002h], dl                    ; 88 56 fe
-    mov byte [bp-012h], bl                    ; 88 5e ee
+    mov byte [bp-010h], bl                    ; 88 5e f0
     mov si, cx                                ; 89 ce
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 23 13
+    call 02f0ah                               ; e8 bf 10
     xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 f7 12
-    mov byte [bp-004h], al                    ; 88 46 fc
-    mov byte [bp-00ch], al                    ; 88 46 f4
+    call 02ee3h                               ; e8 93 10
+    mov cl, al                                ; 88 c1
+    mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01e08h                            ; 0f 84 3e 01
-    lea dx, [bp-018h]                         ; 8d 56 e8
-    push SS                                   ; 16
-    push dx                                   ; 52
+    je near 01f97h                            ; 0f 84 3c 01
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 00c53h                               ; e8 78 ef
+    lea bx, [bp-018h]                         ; 8d 5e e8
+    lea dx, [bp-016h]                         ; 8d 56 ea
+    call 00a8ch                               ; e8 24 ec
     mov al, byte [bp-018h]                    ; 8a 46 e8
     mov byte [bp-008h], al                    ; 88 46 f8
-    mov cx, word [bp-018h]                    ; 8b 4e e8
-    xor cl, cl                                ; 30 c9
-    shr cx, 008h                              ; c1 e9 08
-    mov byte [bp-00eh], cl                    ; 88 4e f2
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    xor al, al                                ; 30 c0
+    shr ax, 008h                              ; c1 e8 08
+    mov byte [bp-00ch], al                    ; 88 46 f4
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 e7 12
+    call 02f0ah                               ; e8 88 10
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
-    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-014h], ax                    ; 89 46 ec
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 f4 12
-    mov word [bp-014h], ax                    ; 89 46 ec
-    movzx di, byte [bp-004h]                  ; 0f b6 7e fc
+    call 02f26h                               ; e8 95 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 01d5eh                          ; 75 47
-    mov dx, word [bp-016h]                    ; 8b 56 ea
+    jne short 01eedh                          ; 75 4a
+    mov dx, word [bp-014h]                    ; 8b 56 ec
     imul dx, ax                               ; 0f af d0
     add dx, dx                                ; 01 d2
@@ -3497,25 +3664,26 @@
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     inc dx                                    ; 42
-    imul dx, bx                               ; 0f af d3
-    movzx bx, cl                              ; 0f b6 d9
-    imul bx, ax                               ; 0f af d8
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    add ax, bx                                ; 01 d8
-    add ax, ax                                ; 01 c0
-    mov cx, dx                                ; 89 d1
-    add cx, ax                                ; 01 c1
+    imul bx, dx                               ; 0f af da
+    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
+    mov cx, ax                                ; 89 c1
+    imul cx, dx                               ; 0f af ca
+    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
+    add cx, dx                                ; 01 d1
+    add cx, cx                                ; 01 c9
+    add cx, bx                                ; 01 d9
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je near 01e08h                            ; 0f 84 c4 00
-    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
-    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
+    je near 01f97h                            ; 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 ax, word [bx+04833h]                  ; 8b 87 33 48
-    mov bx, dx                                ; 89 d3
-    mov dx, cx                                ; 89 ca
-    call 02feah                               ; e8 90 12
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    jmp short 01d3ch                          ; eb de
+    mov di, word [bx+04833h]                  ; 8b bf 33 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
     sal di, 006h                              ; c1 e7 06
@@ -3523,59 +3691,59 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     mov al, byte [bx+04832h]                  ; 8a 87 32 48
-    mov byte [bp-010h], al                    ; 88 46 f0
+    mov byte [bp-004h], al                    ; 88 46 fc
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je near 01e08h                            ; 0f 84 8c 00
+    je near 01f97h                            ; 0f 84 8c 00
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    cmp ax, word [bp-014h]                    ; 3b 46 ec
-    jnc near 01e08h                           ; 0f 83 81 00
-    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
+    cmp ax, word [bp-012h]                    ; 3b 46 ee
+    jnc near 01f97h                           ; 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
     cmp bl, 003h                              ; 80 fb 03
-    jc short 01da5h                           ; 72 0e
-    jbe short 01dach                          ; 76 13
+    jc short 01f34h                           ; 72 0e
+    jbe short 01f3bh                          ; 76 13
     cmp bl, 005h                              ; 80 fb 05
-    je short 01deah                           ; 74 4c
+    je short 01f79h                           ; 74 4c
     cmp bl, 004h                              ; 80 fb 04
-    je short 01dach                           ; 74 09
-    jmp short 01e02h                          ; eb 5d
+    je short 01f3bh                           ; 74 09
+    jmp short 01f91h                          ; eb 5d
     cmp bl, 002h                              ; 80 fb 02
-    je short 01dcbh                           ; 74 21
-    jmp short 01e02h                          ; eb 56
+    je short 01f5ah                           ; 74 21
+    jmp short 01f91h                          ; eb 56
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
-    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
-    push ax                                   ; 50
-    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
+    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    push ax                                   ; 50
+    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    movzx dx, byte [bp-012h]                  ; 0f b6 56 ee
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 018ach                               ; e8 e3 fa
-    jmp short 01e02h                          ; eb 37
-    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
-    push ax                                   ; 50
-    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
-    push ax                                   ; 50
-    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
+    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
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    push ax                                   ; 50
+    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    push ax                                   ; 50
+    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    movzx dx, byte [bp-012h]                  ; 0f b6 56 ee
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01992h                               ; e8 aa fb
-    jmp short 01e02h                          ; eb 18
-    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
-    push ax                                   ; 50
-    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
+    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
+    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    push ax                                   ; 50
+    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    movzx dx, byte [bp-012h]                  ; 0f b6 56 ee
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 01aabh                               ; e8 a9 fc
+    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    call 01c42h                               ; e8 b1 fc
     inc byte [bp-008h]                        ; fe 46 f8
-    jmp near 01d74h                           ; e9 6c ff
+    jmp near 01f03h                           ; e9 6c ff
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-biosfn_write_pixel_:                         ; 0xc1e0c LB 0x168
+biosfn_write_pixel_:                         ; 0xc1f9b LB 0x168
     push si                                   ; 56
     enter 00008h, 000h                        ; c8 08 00 00
@@ -3584,27 +3752,27 @@
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 bc 11
+    call 02f0ah                               ; e8 5b 0f
     xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 90 11
+    call 02ee3h                               ; e8 2f 0f
     mov byte [bp-002h], al                    ; 88 46 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 01f71h                            ; 0f 84 43 01
+    je near 02100h                            ; 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 01f71h                            ; 0f 84 34 01
+    je near 02100h                            ; 0f 84 34 01
     mov al, byte [bx+04831h]                  ; 8a 87 31 48
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 01e54h                           ; 72 0f
-    jbe short 01e5bh                          ; 76 14
+    jc short 01fe3h                           ; 72 0f
+    jbe short 01feah                          ; 76 14
     cmp AL, strict byte 005h                  ; 3c 05
-    je near 01f4fh                            ; 0f 84 02 01
+    je near 020deh                            ; 0f 84 02 01
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 01e5bh                           ; 74 0a
+    je short 01feah                           ; 74 0a
     leave                                     ; c9
     pop si                                    ; 5e
     retn                                      ; c3
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 01ec0h                           ; 74 68
+    je short 0204fh                           ; 74 68
     leave                                     ; c9
     pop si                                    ; 5e
@@ -3612,5 +3780,5 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 94 11
+    call 02f26h                               ; e8 33 0f
     imul ax, cx                               ; 0f af c1
     mov bx, word [bp-008h]                    ; 8b 5e f8
@@ -3631,7 +3799,7 @@
     mov dx, bx                                ; 89 da
     mov ax, 0a000h                            ; b8 00 a0
-    call 02fdch                               ; e8 48 11
+    call 02f0ah                               ; e8 e7 0e
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 01ea1h                           ; 74 07
+    je short 02030h                           ; 74 07
     mov ax, 01803h                            ; b8 03 18
     mov dx, 003ceh                            ; ba ce 03
@@ -3640,5 +3808,5 @@
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0a000h                            ; b8 00 a0
-    call 02feah                               ; e8 3c 11
+    call 02f18h                               ; e8 db 0e
     mov ax, 0ff08h                            ; b8 08 ff
     mov dx, 003ceh                            ; ba ce 03
@@ -3655,8 +3823,8 @@
     imul ax, ax, strict byte 00050h           ; 6b c0 50
     cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
-    jne short 01ed6h                          ; 75 08
+    jne short 02065h                          ; 75 08
     mov bx, word [bp-008h]                    ; 8b 5e f8
     shr bx, 002h                              ; c1 eb 02
-    jmp short 01edch                          ; eb 06
+    jmp short 0206bh                          ; eb 06
     mov bx, word [bp-008h]                    ; 8b 5e f8
     shr bx, 003h                              ; c1 eb 03
@@ -3664,14 +3832,14 @@
     mov word [bp-006h], bx                    ; 89 5e fa
     test cl, 001h                             ; f6 c1 01
-    je short 01eeah                           ; 74 04
+    je short 02079h                           ; 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 02fdch                               ; e8 e9 10
+    call 02f0ah                               ; e8 88 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 01f1ch                          ; 75 19
+    jne short 020abh                          ; 75 19
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 003h                  ; 24 03
@@ -3684,5 +3852,5 @@
     sal bh, CL                                ; d2 e7
     mov AL, strict byte 003h                  ; b0 03
-    jmp short 01f2fh                          ; eb 13
+    jmp short 020beh                          ; eb 13
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 007h                  ; 24 07
@@ -3695,7 +3863,7 @@
     sal al, CL                                ; d2 e0
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 01f3bh                           ; 74 04
+    je short 020cah                           ; 74 04
     xor bl, bh                                ; 30 fb
-    jmp short 01f41h                          ; eb 06
+    jmp short 020d0h                          ; eb 06
     not al                                    ; f6 d0
     and bl, al                                ; 20 c3
@@ -3704,5 +3872,5 @@
     mov dx, word [bp-006h]                    ; 8b 56 fa
     mov ax, 0b800h                            ; b8 00 b8
-    call 02feah                               ; e8 9e 10
+    call 02f18h                               ; e8 3d 0e
     leave                                     ; c9
     pop si                                    ; 5e
@@ -3710,5 +3878,5 @@
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 a0 10
+    call 02f26h                               ; e8 3f 0e
     sal ax, 003h                              ; c1 e0 03
     imul cx, ax                               ; 0f af c8
@@ -3719,342 +3887,205 @@
     mov dx, ax                                ; 89 c2
     mov ax, 0a000h                            ; b8 00 a0
-    jmp short 01f49h                          ; eb d8
+    jmp short 020d8h                          ; eb d8
     leave                                     ; c9
     pop si                                    ; 5e
     retn                                      ; c3
-biosfn_read_pixel_:                          ; 0xc1f74 LB 0x147
+biosfn_write_teletype_:                      ; 0xc2103 LB 0x27f
     push si                                   ; 56
-    push di                                   ; 57
-    enter 00008h, 000h                        ; c8 08 00 00
-    mov si, dx                                ; 89 d6
-    mov word [bp-008h], bx                    ; 89 5e f8
-    mov di, cx                                ; 89 cf
-    mov ax, ss                                ; 8c d0
-    mov word [bp-006h], ax                    ; 89 46 fa
+    enter 00016h, 000h                        ; c8 16 00 00
+    mov byte [bp-00ah], al                    ; 88 46 f6
+    mov byte [bp-002h], dl                    ; 88 56 fe
+    mov byte [bp-004h], bl                    ; 88 5e fc
+    mov byte [bp-00eh], cl                    ; 88 4e f2
+    cmp dl, 0ffh                              ; 80 fa ff
+    jne short 02125h                          ; 75 0c
+    mov dx, strict word 00062h                ; ba 62 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f0ah                               ; e8 e8 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 02fdch                               ; e8 4d 10
+    call 02f0ah                               ; e8 dc 0d
     xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 21 10
-    mov cl, al                                ; 88 c1
+    call 02ee3h                               ; e8 b0 0d
+    mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 020b7h                            ; 0f 84 1b 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 020b7h                            ; 0f 84 0c 01
-    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
-    cmp bl, 003h                              ; 80 fb 03
-    jc short 01fc5h                           ; 72 11
-    jbe short 01fcdh                          ; 76 17
-    cmp bl, 005h                              ; 80 fb 05
-    je near 02080h                            ; 0f 84 c3 00
-    cmp bl, 004h                              ; 80 fb 04
-    je short 01fcdh                           ; 74 0b
-    jmp near 0209eh                           ; e9 d9 00
-    cmp bl, 002h                              ; 80 fb 02
-    je short 02025h                           ; 74 5b
-    jmp near 0209eh                           ; e9 d1 00
-    mov dx, strict word 0004ah                ; ba 4a 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 22 10
-    imul ax, word [bp-008h]                   ; 0f af 46 f8
-    mov bx, si                                ; 89 f3
-    shr bx, 003h                              ; c1 eb 03
-    add bx, ax                                ; 01 c3
-    mov cx, si                                ; 89 f1
-    and cx, strict byte 00007h                ; 83 e1 07
-    mov ax, 00080h                            ; b8 80 00
-    sar ax, CL                                ; d3 f8
-    mov byte [bp-004h], al                    ; 88 46 fc
-    mov byte [bp-002h], ch                    ; 88 6e fe
-    jmp short 01ffbh                          ; eb 08
-    cmp byte [bp-002h], 004h                  ; 80 7e fe 04
-    jnc near 020a0h                           ; 0f 83 a5 00
+    je near 0237fh                            ; 0f 84 43 02
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    sal ax, 008h                              ; c1 e0 08
-    or AL, strict byte 004h                   ; 0c 04
-    mov dx, 003ceh                            ; ba ce 03
-    out DX, ax                                ; ef
-    mov dx, bx                                ; 89 da
-    mov ax, 0a000h                            ; b8 00 a0
-    call 02fdch                               ; e8 cc 0f
-    and al, byte [bp-004h]                    ; 22 46 fc
-    test al, al                               ; 84 c0
-    jbe short 02020h                          ; 76 09
-    mov cl, byte [bp-002h]                    ; 8a 4e fe
-    mov AL, strict byte 001h                  ; b0 01
-    sal al, CL                                ; d2 e0
-    or ch, al                                 ; 08 c5
-    inc byte [bp-002h]                        ; fe 46 fe
-    jmp short 01ff3h                          ; eb ce
-    mov ax, word [bp-008h]                    ; 8b 46 f8
-    shr ax, 1                                 ; d1 e8
-    imul ax, ax, strict byte 00050h           ; 6b c0 50
-    mov bx, si                                ; 89 f3
-    shr bx, 002h                              ; c1 eb 02
-    add bx, ax                                ; 01 c3
-    test byte [bp-008h], 001h                 ; f6 46 f8 01
-    je short 0203dh                           ; 74 03
-    add bh, 020h                              ; 80 c7 20
-    mov dx, bx                                ; 89 da
-    mov ax, 0b800h                            ; b8 00 b8
-    call 02fdch                               ; e8 97 0f
-    movzx bx, cl                              ; 0f b6 d9
-    sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
-    jne short 02067h                          ; 75 15
-    and si, strict byte 00003h                ; 83 e6 03
-    mov cx, strict word 00003h                ; b9 03 00
-    sub cx, si                                ; 29 f1
-    add cx, cx                                ; 01 c9
-    xor ah, ah                                ; 30 e4
-    sar ax, CL                                ; d3 f8
-    mov ch, al                                ; 88 c5
-    and ch, 003h                              ; 80 e5 03
-    jmp short 020a0h                          ; eb 39
-    mov cx, si                                ; 89 f1
-    xor ch, ch                                ; 30 ed
-    and cl, 007h                              ; 80 e1 07
-    mov bx, strict word 00007h                ; bb 07 00
-    sub bx, cx                                ; 29 cb
-    mov cx, bx                                ; 89 d9
-    xor ah, ah                                ; 30 e4
-    sar ax, CL                                ; d3 f8
-    mov ch, al                                ; 88 c5
-    and ch, 001h                              ; 80 e5 01
-    jmp short 020a0h                          ; eb 20
-    mov dx, strict word 0004ah                ; ba 4a 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 6f 0f
-    sal ax, 003h                              ; c1 e0 03
-    imul ax, word [bp-008h]                   ; 0f af 46 f8
-    mov dx, si                                ; 89 f2
-    add dx, ax                                ; 01 c2
-    mov ax, 0a000h                            ; b8 00 a0
-    call 02fdch                               ; e8 42 0f
-    mov ch, al                                ; 88 c5
-    jmp short 020a0h                          ; eb 02
-    xor ch, ch                                ; 30 ed
-    mov dx, di                                ; 89 fa
-    mov ax, word [bp-006h]                    ; 8b 46 fa
-    call 02ff8h                               ; e8 50 0f
-    xor al, al                                ; 30 c0
-    movzx bx, ch                              ; 0f b6 dd
-    or bx, ax                                 ; 09 c3
-    mov dx, di                                ; 89 fa
-    mov ax, word [bp-006h]                    ; 8b 46 fa
-    call 03006h                               ; e8 4f 0f
-    leave                                     ; c9
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    retn                                      ; c3
-biosfn_write_teletype_:                      ; 0xc20bb LB 0x28d
-    push si                                   ; 56
-    push di                                   ; 57
-    enter 00016h, 000h                        ; c8 16 00 00
-    mov byte [bp-004h], al                    ; 88 46 fc
-    mov byte [bp-00ch], dl                    ; 88 56 f4
-    mov byte [bp-006h], bl                    ; 88 5e fa
-    mov byte [bp-008h], cl                    ; 88 4e f8
-    cmp dl, 0ffh                              ; 80 fa ff
-    jne short 020deh                          ; 75 0c
-    mov dx, strict word 00062h                ; ba 62 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 01 0f
-    mov byte [bp-00ch], al                    ; 88 46 f4
-    mov dx, strict word 00049h                ; ba 49 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 f5 0e
-    xor ah, ah                                ; 30 e4
-    call 02fb5h                               ; e8 c9 0e
-    mov byte [bp-00eh], al                    ; 88 46 f2
-    cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 02344h                            ; 0f 84 4f 02
-    lea dx, [bp-016h]                         ; 8d 56 ea
-    push SS                                   ; 16
-    push dx                                   ; 52
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp-014h]                         ; 8d 5e ec
-    call 00c53h                               ; e8 4d eb
+    lea bx, [bp-016h]                         ; 8d 5e ea
+    lea dx, [bp-014h]                         ; 8d 56 ec
+    call 00a8ch                               ; e8 43 e9
     mov al, byte [bp-016h]                    ; 8a 46 ea
-    mov byte [bp-00ah], al                    ; 88 46 f6
-    mov bx, word [bp-016h]                    ; 8b 5e ea
-    xor bl, bl                                ; 30 db
-    shr bx, 008h                              ; c1 eb 08
-    mov byte [bp-002h], bl                    ; 88 5e fe
-    mov dx, 00084h                            ; ba 84 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 bc 0e
-    xor ah, ah                                ; 30 e4
-    inc ax                                    ; 40
-    mov word [bp-010h], ax                    ; 89 46 f0
-    mov dx, strict word 0004ah                ; ba 4a 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 c9 0e
-    mov word [bp-012h], ax                    ; 89 46 ee
-    mov al, byte [bp-004h]                    ; 8a 46 fc
-    cmp AL, strict byte 009h                  ; 3c 09
-    jc short 02145h                           ; 72 0c
-    jbe short 0216eh                          ; 76 33
-    cmp AL, strict byte 00dh                  ; 3c 0d
-    je short 0215fh                           ; 74 20
-    cmp AL, strict byte 00ah                  ; 3c 0a
-    je short 02166h                           ; 74 23
-    jmp short 021b3h                          ; eb 6e
-    cmp AL, strict byte 008h                  ; 3c 08
-    je short 02151h                           ; 74 08
-    cmp AL, strict byte 007h                  ; 3c 07
-    je near 0228fh                            ; 0f 84 40 01
-    jmp short 021b3h                          ; eb 62
-    cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jbe near 0228fh                           ; 0f 86 36 01
-    dec byte [bp-00ah]                        ; fe 4e f6
-    jmp near 0228fh                           ; e9 30 01
-    mov byte [bp-00ah], 000h                  ; c6 46 f6 00
-    jmp near 0228fh                           ; e9 29 01
-    db  0feh, 0c3h
-    ; inc bl                                    ; fe c3
-    mov byte [bp-002h], bl                    ; 88 5e fe
-    jmp near 0228fh                           ; e9 21 01
-    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
-    movzx si, byte [bp-00ch]                  ; 0f b6 76 f4
-    mov dx, si                                ; 89 f2
-    mov ax, strict word 00020h                ; b8 20 00
-    call 020bbh                               ; e8 39 ff
-    lea dx, [bp-016h]                         ; 8d 56 ea
-    push SS                                   ; 16
-    push dx                                   ; 52
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp-014h]                         ; 8d 5e ec
-    mov ax, si                                ; 89 f0
-    call 00c53h                               ; e8 c2 ea
-    mov al, byte [bp-016h]                    ; 8a 46 ea
-    mov byte [bp-00ah], al                    ; 88 46 f6
+    mov byte [bp-006h], al                    ; 88 46 fa
     mov ax, word [bp-016h]                    ; 8b 46 ea
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
-    mov byte [bp-002h], al                    ; 88 46 fe
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    mov byte [bp-008h], al                    ; 88 46 f8
+    mov dx, 00084h                            ; ba 84 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f0ah                               ; e8 a7 0d
+    xor ah, ah                                ; 30 e4
+    inc ax                                    ; 40
+    mov word [bp-012h], ax                    ; 89 46 ee
+    mov dx, strict word 0004ah                ; ba 4a 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 02f26h                               ; e8 b4 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
+    cmp AL, strict byte 00dh                  ; 3c 0d
+    je short 021a2h                           ; 74 20
+    cmp AL, strict byte 00ah                  ; 3c 0a
+    je short 021a9h                           ; 74 23
+    jmp short 021f0h                          ; eb 68
+    cmp AL, strict byte 008h                  ; 3c 08
+    je short 02194h                           ; 74 08
+    cmp AL, strict byte 007h                  ; 3c 07
+    je near 022cch                            ; 0f 84 3a 01
+    jmp short 021f0h                          ; eb 5c
+    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
+    jbe near 022cch                           ; 0f 86 30 01
+    dec byte [bp-006h]                        ; fe 4e fa
+    jmp near 022cch                           ; e9 2a 01
+    mov byte [bp-006h], 000h                  ; c6 46 fa 00
+    jmp near 022cch                           ; e9 23 01
+    inc byte [bp-008h]                        ; fe 46 f8
+    jmp near 022cch                           ; e9 1d 01
+    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
+    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
+    mov dx, si                                ; 89 f2
+    mov ax, strict word 00020h                ; b8 20 00
+    call 02103h                               ; 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
+    mov al, byte [bp-016h]                    ; 8a 46 ea
+    mov byte [bp-006h], al                    ; 88 46 fa
+    mov ax, word [bp-016h]                    ; 8b 46 ea
+    xor al, al                                ; 30 c0
+    shr ax, 008h                              ; c1 e8 08
+    mov byte [bp-008h], al                    ; 88 46 f8
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    mov bx, strict word 00008h                ; bb 08 00
     cwd                                       ; 99
-    mov bx, strict word 00008h                ; bb 08 00
     idiv bx                                   ; f7 fb
     test dx, dx                               ; 85 d2
-    je short 0216eh                           ; 74 be
-    jmp near 0228fh                           ; e9 dc 00
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
+    je short 021afh                           ; 74 c2
+    jmp near 022cch                           ; 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 0220eh                          ; 75 4b
-    mov ax, word [bp-012h]                    ; 8b 46 ee
-    imul ax, word [bp-010h]                   ; 0f af 46 f0
+    jne short 0224bh                          ; 75 4b
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    imul ax, word [bp-012h]                   ; 0f af 46 ee
     add ax, ax                                ; 01 c0
     or AL, strict byte 0ffh                   ; 0c ff
-    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
+    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     inc ax                                    ; 40
-    imul ax, dx                               ; 0f af c2
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    imul cx, word [bp-012h]                   ; 0f af 4e ee
-    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
+    imul dx, ax                               ; 0f af d0
+    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
+    imul cx, word [bp-010h]                   ; 0f af 4e f0
+    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     add cx, bx                                ; 01 d9
     add cx, cx                                ; 01 c9
-    add cx, ax                                ; 01 c1
+    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
+    cmp byte [bp-00eh], 003h                  ; 80 7e f2 03
+    jne near 022c9h                           ; 0f 85 8f 00
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
-    mov dx, cx                                ; 89 ca
-    call 02feah                               ; e8 f5 0d
-    cmp byte [bp-008h], 003h                  ; 80 7e f8 03
-    jne near 0228ch                           ; 0f 85 8f 00
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     mov dx, cx                                ; 89 ca
     inc dx                                    ; 42
     mov ax, word [si+04833h]                  ; 8b 84 33 48
-    call 02feah                               ; e8 df 0d
-    jmp near 0228ch                           ; e9 7e 00
+    call 02f18h                               ; e8 d0 0c
+    jmp near 022c9h                           ; e9 7e 00
     movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     sal bx, 006h                              ; c1 e3 06
-    mov dl, byte [bx+048c5h]                  ; 8a 97 c5 48
-    mov ah, byte [si+04832h]                  ; 8a a4 32 48
+    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
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 02232h                           ; 72 0c
-    jbe short 02238h                          ; 76 10
+    jc short 0226fh                           ; 72 0c
+    jbe short 02275h                          ; 76 10
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 02274h                           ; 74 48
+    je short 022b1h                           ; 74 48
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 02238h                           ; 74 08
-    jmp short 0228ch                          ; eb 5a
+    je short 02275h                           ; 74 08
+    jmp short 022c9h                          ; eb 5a
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 02256h                           ; 74 20
-    jmp short 0228ch                          ; eb 54
+    je short 02293h                           ; 74 20
+    jmp short 022c9h                          ; eb 54
+    movzx ax, ah                              ; 0f b6 c4
+    push ax                                   ; 50
+    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
+    push ax                                   ; 50
+    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
+    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
+    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
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
-    push ax                                   ; 50
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
-    call 018ach                               ; e8 58 f6
-    jmp short 0228ch                          ; eb 36
-    movzx ax, ah                              ; 0f b6 c4
-    push ax                                   ; 50
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
-    push ax                                   ; 50
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
-    call 01992h                               ; e8 20 f7
-    jmp short 0228ch                          ; eb 18
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
-    push ax                                   ; 50
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
-    call 01aabh                               ; e8 1f f8
-    inc byte [bp-00ah]                        ; fe 46 f6
+    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
+    push ax                                   ; 50
+    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
+    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
+    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
+    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
+    push ax                                   ; 50
+    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
+    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
+    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    call 01c42h                               ; 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
+    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 short 0229fh                          ; 75 07
-    mov byte [bp-00ah], 000h                  ; c6 46 f6 00
-    inc byte [bp-002h]                        ; fe 46 fe
-    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jne near 02328h                           ; 0f 85 7e 00
-    movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
+    jne near 02363h                           ; 0f 85 7c 00
+    movzx si, byte [bp-00ch]                  ; 0f b6 76 f4
     sal si, 003h                              ; c1 e6 03
-    mov bl, byte [bp-010h]                    ; 8a 5e f0
+    mov bl, byte [bp-012h]                    ; 8a 5e ee
     db  0feh, 0cbh
     ; dec bl                                    ; fe cb
-    mov bh, byte [bp-012h]                    ; 8a 7e ee
+    mov bh, byte [bp-010h]                    ; 8a 7e f0
     db  0feh, 0cfh
     ; dec bh                                    ; fe cf
     cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
-    jne short 0230ah                          ; 75 48
-    mov ax, word [bp-012h]                    ; 8b 46 ee
-    imul ax, word [bp-010h]                   ; 0f af 46 f0
+    jne short 02345h                          ; 75 46
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    imul ax, word [bp-012h]                   ; 0f af 46 ee
     add ax, ax                                ; 01 c0
     or AL, strict byte 0ffh                   ; 0c ff
-    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
-    mov di, ax                                ; 89 c7
-    inc di                                    ; 47
-    imul di, dx                               ; 0f af fa
-    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
-    dec cx                                    ; 49
-    imul cx, word [bp-012h]                   ; 0f af 4e ee
-    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
+    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
+    inc ax                                    ; 40
+    imul dx, ax                               ; 0f af d0
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    dec ax                                    ; 48
+    imul ax, word [bp-010h]                   ; 0f af 46 f0
+    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
+    add cx, ax                                ; 01 c1
+    add cx, cx                                ; 01 c9
     add dx, cx                                ; 01 ca
-    add dx, dx                                ; 01 d2
-    add dx, di                                ; 01 fa
     inc dx                                    ; 42
     mov ax, word [si+04833h]                  ; 8b 84 33 48
-    call 02fdch                               ; e8 ea 0c
+    call 02f0ah                               ; e8 dd 0b
     push strict byte 00001h                   ; 6a 01
-    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
+    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     push dx                                   ; 52
     movzx dx, bh                              ; 0f b6 d7
@@ -4065,7 +4096,7 @@
     xor cx, cx                                ; 31 c9
     xor bx, bx                                ; 31 db
-    jmp short 0231fh                          ; eb 15
+    jmp short 0235ah                          ; eb 15
     push strict byte 00001h                   ; 6a 01
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     push ax                                   ; 50
     movzx ax, bh                              ; 0f b6 c7
@@ -4077,19 +4108,18 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 01306h                               ; e8 e1 ef
-    dec byte [bp-002h]                        ; fe 4e fe
-    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    call 01542h                               ; e8 e2 f1
+    dec byte [bp-008h]                        ; fe 4e f8
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     mov word [bp-016h], ax                    ; 89 46 ea
     sal word [bp-016h], 008h                  ; c1 66 ea 08
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     add word [bp-016h], ax                    ; 01 46 ea
     mov dx, word [bp-016h]                    ; 8b 56 ea
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    call 00bb5h                               ; e8 71 e8
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    call 00e4bh                               ; e8 cc ea
     leave                                     ; c9
-    pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-get_font_access_:                            ; 0xc2348 LB 0x29
+get_font_access_:                            ; 0xc2382 LB 0x29
     push dx                                   ; 52
     push bp                                   ; 55
@@ -4114,5 +4144,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-release_font_access_:                        ; 0xc2371 LB 0x39
+release_font_access_:                        ; 0xc23ab LB 0x39
     push dx                                   ; 52
     push bp                                   ; 55
@@ -4145,5 +4175,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-set_scan_lines_:                             ; 0xc23aa LB 0xbc
+set_scan_lines_:                             ; 0xc23e4 LB 0xbc
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4156,5 +4186,5 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 3b 0c
+    call 02f26h                               ; e8 2f 0b
     mov dx, ax                                ; 89 c2
     mov si, ax                                ; 89 c6
@@ -4173,8 +4203,8 @@
     out DX, AL                                ; ee
     cmp bl, 008h                              ; 80 fb 08
-    jne short 023e1h                          ; 75 08
+    jne short 0241bh                          ; 75 08
     mov dx, strict word 00007h                ; ba 07 00
     mov ax, strict word 00006h                ; b8 06 00
-    jmp short 023eeh                          ; eb 0d
+    jmp short 02428h                          ; eb 0d
     mov al, bl                                ; 88 d8
     sub AL, strict byte 003h                  ; 2c 03
@@ -4183,10 +4213,10 @@
     sub AL, strict byte 004h                  ; 2c 04
     xor ah, ah                                ; 30 e4
-    call 00b14h                               ; e8 23 e7
+    call 00daah                               ; e8 7f 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 03006h                               ; e8 07 0c
+    call 02f34h                               ; e8 fb 0a
     mov AL, strict byte 012h                  ; b0 12
     mov dx, si                                ; 89 f2
@@ -4223,8 +4253,8 @@
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 a7 0b
+    call 02f18h                               ; e8 9b 0a
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 ac 0b
+    call 02f26h                               ; e8 a0 0a
     movzx dx, cl                              ; 0f b6 d1
     mov bx, ax                                ; 89 c3
@@ -4233,5 +4263,5 @@
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 a7 0b
+    call 02f34h                               ; e8 9b 0a
     pop bp                                    ; 5d
     pop di                                    ; 5f
@@ -4241,5 +4271,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_text_user_pat_:                  ; 0xc2466 LB 0x78
+biosfn_load_text_user_pat_:                  ; 0xc24a0 LB 0x78
     push si                                   ; 56
     push di                                   ; 57
@@ -4249,5 +4279,5 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     mov word [bp-006h], cx                    ; 89 4e fa
-    call 02348h                               ; e8 cd fe
+    call 02382h                               ; e8 cd fe
     mov al, byte [bp+00ah]                    ; 8a 46 0a
     and AL, strict byte 003h                  ; 24 03
@@ -4263,5 +4293,5 @@
     xor bx, bx                                ; 31 db
     cmp bx, word [bp-006h]                    ; 3b 5e fa
-    jnc short 024c8h                          ; 73 2b
+    jnc short 02502h                          ; 73 2b
     movzx cx, byte [bp+00ch]                  ; 0f b6 4e 0c
     mov si, bx                                ; 89 de
@@ -4276,5 +4306,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 024c5h                               ; e3 06
+    jcxz 024ffh                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4282,15 +4312,15 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 02498h                          ; eb d0
-    call 02371h                               ; e8 a6 fe
+    jmp short 024d2h                          ; eb d0
+    call 023abh                               ; e8 a6 fe
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 024d8h                           ; 72 07
+    jc short 02512h                           ; 72 07
     movzx ax, byte [bp+00ch]                  ; 0f b6 46 0c
-    call 023aah                               ; e8 d2 fe
+    call 023e4h                               ; e8 d2 fe
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00006h                               ; c2 06 00
-biosfn_load_text_8_14_pat_:                  ; 0xc24de LB 0x6c
+biosfn_load_text_8_14_pat_:                  ; 0xc2518 LB 0x6c
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4299,5 +4329,5 @@
     enter 00004h, 000h                        ; c8 04 00 00
     mov byte [bp-002h], al                    ; 88 46 fe
-    call 02348h                               ; e8 5c fe
+    call 02382h                               ; e8 5c fe
     mov al, dl                                ; 88 d0
     and AL, strict byte 003h                  ; 24 03
@@ -4312,7 +4342,7 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 0250fh                          ; eb 06
+    jmp short 02549h                          ; eb 06
     cmp bx, 00100h                            ; 81 fb 00 01
-    jnc short 02535h                          ; 73 26
+    jnc short 0256fh                          ; 73 26
     imul si, bx, strict byte 0000eh           ; 6b f3 0e
     mov di, bx                                ; 89 df
@@ -4325,5 +4355,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 02532h                               ; e3 06
+    jcxz 0256ch                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4331,10 +4361,10 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 02509h                          ; eb d4
-    call 02371h                               ; e8 39 fe
+    jmp short 02543h                          ; eb d4
+    call 023abh                               ; e8 39 fe
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 02544h                           ; 72 06
+    jc short 0257eh                           ; 72 06
     mov ax, strict word 0000eh                ; b8 0e 00
-    call 023aah                               ; e8 66 fe
+    call 023e4h                               ; e8 66 fe
     leave                                     ; c9
     pop di                                    ; 5f
@@ -4343,5 +4373,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_text_8_8_pat_:                   ; 0xc254a LB 0x6e
+biosfn_load_text_8_8_pat_:                   ; 0xc2584 LB 0x6e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4350,5 +4380,5 @@
     enter 00004h, 000h                        ; c8 04 00 00
     mov byte [bp-002h], al                    ; 88 46 fe
-    call 02348h                               ; e8 f0 fd
+    call 02382h                               ; e8 f0 fd
     mov al, dl                                ; 88 d0
     and AL, strict byte 003h                  ; 24 03
@@ -4363,7 +4393,7 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 0257bh                          ; eb 06
+    jmp short 025b5h                          ; eb 06
     cmp bx, 00100h                            ; 81 fb 00 01
-    jnc short 025a3h                          ; 73 28
+    jnc short 025ddh                          ; 73 28
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
@@ -4377,5 +4407,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 025a0h                               ; e3 06
+    jcxz 025dah                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4383,10 +4413,10 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 02575h                          ; eb d2
-    call 02371h                               ; e8 cb fd
+    jmp short 025afh                          ; eb d2
+    call 023abh                               ; e8 cb fd
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 025b2h                           ; 72 06
+    jc short 025ech                           ; 72 06
     mov ax, strict word 00008h                ; b8 08 00
-    call 023aah                               ; e8 f8 fd
+    call 023e4h                               ; e8 f8 fd
     leave                                     ; c9
     pop di                                    ; 5f
@@ -4395,5 +4425,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_text_8_16_pat_:                  ; 0xc25b8 LB 0x6e
+biosfn_load_text_8_16_pat_:                  ; 0xc25f2 LB 0x6e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4402,5 +4432,5 @@
     enter 00004h, 000h                        ; c8 04 00 00
     mov byte [bp-002h], al                    ; 88 46 fe
-    call 02348h                               ; e8 82 fd
+    call 02382h                               ; e8 82 fd
     mov al, dl                                ; 88 d0
     and AL, strict byte 003h                  ; 24 03
@@ -4415,7 +4445,7 @@
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 025e9h                          ; eb 06
+    jmp short 02623h                          ; eb 06
     cmp bx, 00100h                            ; 81 fb 00 01
-    jnc short 02611h                          ; 73 28
+    jnc short 0264bh                          ; 73 28
     mov si, bx                                ; 89 de
     sal si, 004h                              ; c1 e6 04
@@ -4429,5 +4459,5 @@
     mov es, ax                                ; 8e c0
     cld                                       ; fc
-    jcxz 0260eh                               ; e3 06
+    jcxz 02648h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4435,10 +4465,10 @@
     pop DS                                    ; 1f
     inc bx                                    ; 43
-    jmp short 025e3h                          ; eb d2
-    call 02371h                               ; e8 5d fd
+    jmp short 0261dh                          ; eb d2
+    call 023abh                               ; e8 5d fd
     cmp byte [bp-002h], 010h                  ; 80 7e fe 10
-    jc short 02620h                           ; 72 06
+    jc short 0265ah                           ; 72 06
     mov ax, strict word 00010h                ; b8 10 00
-    call 023aah                               ; e8 8a fd
+    call 023e4h                               ; e8 8a fd
     leave                                     ; c9
     pop di                                    ; 5f
@@ -4447,170 +4477,62 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_load_gfx_8_8_chars_:                  ; 0xc2626 LB 0x5
+biosfn_load_gfx_8_8_chars_:                  ; 0xc2660 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_load_gfx_user_chars_:                 ; 0xc262b LB 0x7
+biosfn_load_gfx_user_chars_:                 ; 0xc2665 LB 0x7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-biosfn_load_gfx_8_14_chars_:                 ; 0xc2632 LB 0x5
+biosfn_load_gfx_8_14_chars_:                 ; 0xc266c LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2637 LB 0x5
+biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2671 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_load_gfx_8_16_chars_:                 ; 0xc263c LB 0x15
+biosfn_load_gfx_8_16_chars_:                 ; 0xc2676 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-    jns short 02669h                          ; 79 26
-    pushfw                                    ; 9c
-    db  026h, 0eeh
-    ; es out DX, AL                             ; 26 ee
-    db  026h, 0fbh
-    ; es sti                                    ; 26 fb
-    or byte [es:bx], ah                       ; 26 08 27
-    adc ax, 02227h                            ; 15 27 22
-    daa                                       ; 27
-    das                                       ; 2f
-    daa                                       ; 27
-biosfn_get_font_info_:                       ; 0xc2651 LB 0xee
-    push si                                   ; 56
-    push di                                   ; 57
-    enter 00004h, 000h                        ; c8 04 00 00
-    push ax                                   ; 50
-    mov di, dx                                ; 89 d7
-    mov si, bx                                ; 89 de
-    mov word [bp-004h], cx                    ; 89 4e fc
-    mov ax, ss                                ; 8c d0
-    mov cx, ax                                ; 89 c1
-    mov word [bp-002h], ax                    ; 89 46 fe
-    mov ax, word [bp-006h]                    ; 8b 46 fa
-    cmp ax, strict word 00007h                ; 3d 07 00
-    jnbe near 026e8h                          ; 0f 87 78 00
-    mov bx, ax                                ; 89 c3
-    add bx, ax                                ; 01 c3
-    jmp word [cs:bx+02641h]                   ; 2e ff a7 41 26
-    mov dx, strict word 0007ch                ; ba 7c 00
-    xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 77 09
-    mov bx, ax                                ; 89 c3
-    mov dx, di                                ; 89 fa
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 03006h                               ; e8 7b 09
-    mov dx, strict word 0007eh                ; ba 7e 00
-    xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 65 09
-    mov bx, ax                                ; 89 c3
-    mov dx, si                                ; 89 f2
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    jmp short 026bbh                          ; eb 1f
-    mov dx, 0010ch                            ; ba 0c 01
-    xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 54 09
-    mov bx, ax                                ; 89 c3
-    mov dx, di                                ; 89 fa
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 59 09
-    mov dx, 0010eh                            ; ba 0e 01
-    xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 43 09
-    mov bx, ax                                ; 89 c3
-    mov dx, si                                ; 89 f2
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 48 09
-    mov dx, 00085h                            ; ba 85 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 15 09
-    movzx bx, al                              ; 0f b6 d8
-    mov dx, word [bp-004h]                    ; 8b 56 fc
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 03006h                               ; e8 33 09
-    mov dx, 00084h                            ; ba 84 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 00 09
-    movzx bx, al                              ; 0f b6 d8
-    mov dx, word [bp+008h]                    ; 8b 56 08
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 03006h                               ; e8 1e 09
-    leave                                     ; c9
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    retn 00002h                               ; c2 02 00
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 10 09
-    mov bx, 05dafh                            ; bb af 5d
-    jmp short 026b7h                          ; eb bc
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 03 09
-    mov bx, 055afh                            ; bb af 55
-    jmp short 026b7h                          ; eb af
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 f6 08
-    mov bx, 059afh                            ; bb af 59
-    jmp short 026b7h                          ; eb a2
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 e9 08
-    mov bx, 07bafh                            ; bb af 7b
-    jmp short 026b7h                          ; eb 95
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 dc 08
-    mov bx, 06bafh                            ; bb af 6b
-    jmp short 026b7h                          ; eb 88
-    mov bx, 0c000h                            ; bb 00 c0
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 cf 08
-    mov bx, 07cdch                            ; bb dc 7c
-    jmp near 026b7h                           ; e9 7a ff
-    jmp short 026e8h                          ; eb a9
-biosfn_alternate_prtsc_:                     ; 0xc273f LB 0x5
+biosfn_alternate_prtsc_:                     ; 0xc267b LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_switch_video_interface_:              ; 0xc2744 LB 0x5
+biosfn_switch_video_interface_:              ; 0xc2680 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_enable_video_refresh_control_:        ; 0xc2749 LB 0x5
+biosfn_enable_video_refresh_control_:        ; 0xc2685 LB 0x5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     pop bp                                    ; 5d
     retn                                      ; c3
-biosfn_write_string_:                        ; 0xc274e LB 0x9c
+biosfn_write_string_:                        ; 0xc268a LB 0x97
     push si                                   ; 56
     push di                                   ; 57
     enter 0000ah, 000h                        ; c8 0a 00 00
-    mov byte [bp-004h], al                    ; 88 46 fc
-    mov byte [bp-002h], dl                    ; 88 56 fe
-    mov byte [bp-006h], bl                    ; 88 5e fa
+    mov byte [bp-006h], al                    ; 88 46 fa
+    mov byte [bp-004h], dl                    ; 88 56 fc
+    mov byte [bp-002h], bl                    ; 88 5e fe
     mov si, cx                                ; 89 ce
     mov di, word [bp+00eh]                    ; 8b 7e 0e
+    movzx ax, dl                              ; 0f b6 c2
+    lea bx, [bp-00ah]                         ; 8d 5e f6
     lea dx, [bp-008h]                         ; 8d 56 f8
-    push SS                                   ; 16
-    push dx                                   ; 52
-    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp-00ah]                         ; 8d 5e f6
-    call 00c53h                               ; e8 e0 e4
+    call 00a8ch                               ; e8 e2 e3
     cmp byte [bp+008h], 0ffh                  ; 80 7e 08 ff
-    jne short 0278ah                          ; 75 11
-    mov al, byte [bp-008h]                    ; 8a 46 f8
+    jne short 026c1h                          ; 75 11
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     mov byte [bp+00ah], al                    ; 88 46 0a
-    mov ax, word [bp-008h]                    ; 8b 46 f8
+    mov ax, word [bp-00ah]                    ; 8b 46 f6
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
@@ -4620,37 +4542,37 @@
     movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
     add dx, ax                                ; 01 c2
-    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 00bb5h                               ; e8 17 e4
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    call 00e4bh                               ; e8 76 e7
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 027d4h                           ; 74 30
+    je short 0270bh                           ; 74 30
     mov dx, di                                ; 89 fa
     inc di                                    ; 47
     mov ax, word [bp+00ch]                    ; 8b 46 0c
-    call 02fdch                               ; e8 2f 08
+    call 02f0ah                               ; e8 26 08
     mov cl, al                                ; 88 c1
-    test byte [bp-004h], 002h                 ; f6 46 fc 02
-    je short 027c1h                           ; 74 0c
+    test byte [bp-006h], 002h                 ; f6 46 fa 02
+    je short 026f8h                           ; 74 0c
     mov dx, di                                ; 89 fa
     inc di                                    ; 47
     mov ax, word [bp+00ch]                    ; 8b 46 0c
-    call 02fdch                               ; e8 1e 08
-    mov byte [bp-006h], al                    ; 88 46 fa
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
-    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
+    call 02f0ah                               ; e8 15 08
+    mov byte [bp-002h], al                    ; 88 46 fe
+    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
+    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, cl                              ; 0f b6 c1
     mov cx, strict word 00003h                ; b9 03 00
-    call 020bbh                               ; e8 e9 f8
-    jmp short 0279eh                          ; eb ca
-    test byte [bp-004h], 001h                 ; f6 46 fc 01
-    jne short 027e4h                          ; 75 0a
-    mov dx, word [bp-008h]                    ; 8b 56 f8
-    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 00bb5h                               ; e8 d1 e3
+    call 02103h                               ; e8 fa f9
+    jmp short 026d5h                          ; eb ca
+    test byte [bp-006h], 001h                 ; f6 46 fa 01
+    jne short 0271bh                          ; 75 0a
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    call 00e4bh                               ; e8 30 e7
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn 00008h                               ; c2 08 00
-biosfn_read_state_info_:                     ; 0xc27ea LB 0x10a
+biosfn_read_state_info_:                     ; 0xc2721 LB 0x10a
     push cx                                   ; 51
     push si                                   ; 56
@@ -4663,5 +4585,5 @@
     mov dx, word [bp-004h]                    ; 8b 56 fc
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 03006h                               ; e8 08 08
+    call 02f34h                               ; e8 ff 07
     mov dx, word [bp-004h]                    ; 8b 56 fc
     inc dx                                    ; 42
@@ -4669,5 +4591,5 @@
     mov bx, 0c000h                            ; bb 00 c0
     mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 03006h                               ; e8 fa 07
+    call 02f34h                               ; e8 f1 07
     mov di, word [bp-004h]                    ; 8b 7e fc
     add di, strict byte 00004h                ; 83 c7 04
@@ -4677,5 +4599,5 @@
     mov es, [bp-002h]                         ; 8e 46 fe
     cld                                       ; fc
-    jcxz 02827h                               ; e3 06
+    jcxz 0275eh                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4689,5 +4611,5 @@
     mov es, [bp-002h]                         ; 8e 46 fe
     cld                                       ; fc
-    jcxz 02842h                               ; e3 06
+    jcxz 02779h                               ; e3 06
     push DS                                   ; 1e
     mov ds, dx                                ; 8e da
@@ -4696,55 +4618,55 @@
     mov dx, 0008ah                            ; ba 8a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 91 07
+    call 02f0ah                               ; 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 02feah                               ; e8 90 07
+    call 02f18h                               ; 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 02feah                               ; e8 82 07
+    call 02f18h                               ; 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 02feah                               ; e8 73 07
+    call 02f18h                               ; 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 02feah                               ; e8 65 07
+    call 02f18h                               ; 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 02feah                               ; e8 56 07
+    call 02f18h                               ; 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 02feah                               ; e8 47 07
+    call 02f18h                               ; 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 02feah                               ; e8 39 07
+    call 02f18h                               ; 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 02feah                               ; e8 2b 07
+    call 02f18h                               ; 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 02feah                               ; e8 1c 07
+    call 02f18h                               ; 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 02feah                               ; e8 0e 07
+    call 02f18h                               ; e8 05 07
     mov di, word [bp-004h]                    ; 8b 7e fc
     add di, strict byte 00033h                ; 83 c7 33
@@ -4753,5 +4675,5 @@
     mov es, [bp-002h]                         ; 8e 46 fe
     cld                                       ; fc
-    jcxz 028efh                               ; e3 02
+    jcxz 02826h                               ; e3 02
     rep stosb                                 ; f3 aa
     leave                                     ; c9
@@ -4760,5 +4682,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-biosfn_read_video_state_size2_:              ; 0xc28f4 LB 0x23
+biosfn_read_video_state_size2_:              ; 0xc282b LB 0x23
     push dx                                   ; 52
     push bp                                   ; 55
@@ -4767,33 +4689,26 @@
     xor ax, ax                                ; 31 c0
     test dl, 001h                             ; f6 c2 01
-    je short 02904h                           ; 74 03
+    je short 0283bh                           ; 74 03
     mov ax, strict word 00046h                ; b8 46 00
     test dl, 002h                             ; f6 c2 02
-    je short 0290ch                           ; 74 03
+    je short 02843h                           ; 74 03
     add ax, strict word 0002ah                ; 05 2a 00
     test dl, 004h                             ; f6 c2 04
-    je short 02914h                           ; 74 03
+    je short 0284bh                           ; 74 03
     add ax, 00304h                            ; 05 04 03
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     retn                                      ; c3
-biosfn_read_video_state_size_:               ; 0xc2917 LB 0x1b
+vga_get_video_state_size_:                   ; 0xc284e LB 0xf
     push bx                                   ; 53
-    push cx                                   ; 51
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    mov bx, ax                                ; 89 c3
-    mov ax, ss                                ; 8c d0
-    mov cx, ax                                ; 89 c1
-    mov ax, bx                                ; 89 d8
-    call 028f4h                               ; e8 cd ff
-    mov bx, ax                                ; 89 c3
-    mov ax, cx                                ; 89 c8
-    call 03006h                               ; e8 d8 06
+    mov bx, dx                                ; 89 d3
+    call 0282bh                               ; e8 d4 ff
+    mov word [ss:bx], ax                      ; 36 89 07
     pop bp                                    ; 5d
-    pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-biosfn_save_video_state_:                    ; 0xc2932 LB 0x365
+biosfn_save_video_state_:                    ; 0xc285d LB 0x365
     push cx                                   ; 51
     push si                                   ; 56
@@ -4805,8 +4720,8 @@
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 b1 06
+    call 02f26h                               ; e8 b4 06
     mov di, ax                                ; 89 c7
     test byte [bp-006h], 001h                 ; f6 46 fa 01
-    je near 02ab4h                            ; 0f 84 63 01
+    je near 029dfh                            ; 0f 84 63 01
     mov dx, 003c4h                            ; ba c4 03
     in AL, DX                                 ; ec
@@ -4816,5 +4731,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 89 06
+    call 02f18h                               ; e8 8c 06
     inc cx                                    ; 41
     mov dx, di                                ; 89 fa
@@ -4825,5 +4740,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 79 06
+    call 02f18h                               ; e8 7c 06
     inc cx                                    ; 41
     mov dx, 003ceh                            ; ba ce 03
@@ -4834,5 +4749,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 68 06
+    call 02f18h                               ; e8 6b 06
     inc cx                                    ; 41
     mov dx, 003dah                            ; ba da 03
@@ -4848,5 +4763,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 4d 06
+    call 02f18h                               ; e8 50 06
     inc cx                                    ; 41
     mov dx, 003cah                            ; ba ca 03
@@ -4857,11 +4772,11 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 3c 06
+    call 02f18h                               ; 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 029beh                          ; eb 06
+    jmp short 028e9h                          ; eb 06
     cmp word [bp-004h], strict byte 00004h    ; 83 7e fc 04
-    jnbe short 029dbh                         ; 77 1d
+    jnbe short 02906h                         ; 77 1d
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov dx, 003c4h                            ; ba c4 03
@@ -4874,8 +4789,8 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 15 06
+    call 02f18h                               ; e8 18 06
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 029b8h                          ; eb dd
+    jmp short 028e3h                          ; eb dd
     xor al, al                                ; 30 c0
     mov dx, 003c4h                            ; ba c4 03
@@ -4888,10 +4803,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 f9 05
+    call 02f18h                               ; e8 fc 05
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
     inc cx                                    ; 41
-    jmp short 029ffh                          ; eb 06
+    jmp short 0292ah                          ; eb 06
     cmp word [bp-004h], strict byte 00018h    ; 83 7e fc 18
-    jnbe short 02a1bh                         ; 77 1c
+    jnbe short 02946h                         ; 77 1c
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov dx, di                                ; 89 fa
@@ -4904,12 +4819,12 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 d5 05
+    call 02f18h                               ; e8 d8 05
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 029f9h                          ; eb de
+    jmp short 02924h                          ; eb de
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
-    jmp short 02a28h                          ; eb 06
+    jmp short 02953h                          ; eb 06
     cmp word [bp-004h], strict byte 00013h    ; 83 7e fc 13
-    jnbe short 02a51h                         ; 77 29
+    jnbe short 0297ch                         ; 77 29
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -4928,8 +4843,8 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 9f 05
+    call 02f18h                               ; e8 a2 05
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02a22h                          ; eb d1
+    jmp short 0294dh                          ; eb d1
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -4937,7 +4852,7 @@
     ; sub ah, ah                                ; 2a e4
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
-    jmp short 02a64h                          ; eb 06
+    jmp short 0298fh                          ; eb 06
     cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
-    jnbe short 02a81h                         ; 77 1d
+    jnbe short 029ach                         ; 77 1d
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov dx, 003ceh                            ; ba ce 03
@@ -4950,12 +4865,12 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 6f 05
+    call 02f18h                               ; e8 72 05
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02a5eh                          ; eb dd
+    jmp short 02989h                          ; eb dd
     mov bx, di                                ; 89 fb
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 7c 05
+    call 02f34h                               ; e8 7f 05
     inc cx                                    ; 41
     inc cx                                    ; 41
@@ -4963,180 +4878,180 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 55 05
+    call 02f18h                               ; e8 58 05
     inc cx                                    ; 41
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 4b 05
+    call 02f18h                               ; e8 4e 05
     inc cx                                    ; 41
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 41 05
+    call 02f18h                               ; e8 44 05
     inc cx                                    ; 41
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 37 05
+    call 02f18h                               ; e8 3a 05
     inc cx                                    ; 41
     test byte [bp-006h], 002h                 ; f6 46 fa 02
-    je near 02c23h                            ; 0f 84 67 01
+    je near 02b4eh                            ; 0f 84 67 01
     mov dx, strict word 00049h                ; ba 49 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 17 05
+    call 02f0ah                               ; e8 1a 05
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 1b 05
+    call 02f18h                               ; e8 1e 05
     inc cx                                    ; 41
     mov dx, strict word 0004ah                ; ba 4a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 1f 05
+    call 02f26h                               ; e8 22 05
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 24 05
+    call 02f34h                               ; 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 02ff8h                               ; e8 0b 05
+    call 02f26h                               ; e8 0e 05
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 10 05
+    call 02f34h                               ; 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 02ff8h                               ; e8 f7 04
+    call 02f26h                               ; e8 fa 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 fc 04
+    call 02f34h                               ; e8 ff 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 c7 04
+    call 02f0ah                               ; e8 ca 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 cb 04
+    call 02f18h                               ; e8 ce 04
     inc cx                                    ; 41
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 cf 04
+    call 02f26h                               ; e8 d2 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 d4 04
+    call 02f34h                               ; e8 d7 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 9f 04
+    call 02f0ah                               ; e8 a2 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 a3 04
+    call 02f18h                               ; e8 a6 04
     inc cx                                    ; 41
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 8b 04
+    call 02f0ah                               ; e8 8e 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 8f 04
+    call 02f18h                               ; e8 92 04
     inc cx                                    ; 41
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02fdch                               ; e8 77 04
+    call 02f0ah                               ; e8 7a 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 7b 04
+    call 02f18h                               ; e8 7e 04
     inc cx                                    ; 41
     mov dx, strict word 00060h                ; ba 60 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 7f 04
+    call 02f26h                               ; e8 82 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 84 04
+    call 02f34h                               ; e8 87 04
     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
     inc cx                                    ; 41
     inc cx                                    ; 41
-    jmp short 02b91h                          ; eb 06
+    jmp short 02abch                          ; eb 06
     cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
-    jnc short 02bafh                          ; 73 1e
+    jnc short 02adah                          ; 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 02ff8h                               ; e8 59 04
+    call 02f26h                               ; e8 5c 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 5e 04
+    call 02f34h                               ; e8 61 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02b8bh                          ; eb dc
+    jmp short 02ab6h                          ; eb dc
     mov dx, strict word 0004eh                ; ba 4e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02ff8h                               ; e8 40 04
+    call 02f26h                               ; e8 43 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 45 04
+    call 02f34h                               ; 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 02fdch                               ; e8 10 04
+    call 02f0ah                               ; e8 13 04
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 14 04
+    call 02f18h                               ; e8 17 04
     inc cx                                    ; 41
     mov dx, strict word 0007ch                ; ba 7c 00
     xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 19 04
+    call 02f26h                               ; e8 1c 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 1e 04
+    call 02f34h                               ; e8 21 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, strict word 0007eh                ; ba 7e 00
     xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 06 04
+    call 02f26h                               ; e8 09 04
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 0b 04
+    call 02f34h                               ; e8 0e 04
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 0010ch                            ; ba 0c 01
     xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 f3 03
+    call 02f26h                               ; e8 f6 03
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 f8 03
+    call 02f34h                               ; e8 fb 03
     inc cx                                    ; 41
     inc cx                                    ; 41
     mov dx, 0010eh                            ; ba 0e 01
     xor ax, ax                                ; 31 c0
-    call 02ff8h                               ; e8 e0 03
+    call 02f26h                               ; e8 e3 03
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 e5 03
+    call 02f34h                               ; e8 e8 03
     inc cx                                    ; 41
     inc cx                                    ; 41
     test byte [bp-006h], 004h                 ; f6 46 fa 04
-    je short 02c90h                           ; 74 67
+    je short 02bbbh                           ; 74 67
     mov dx, 003c7h                            ; ba c7 03
     in AL, DX                                 ; ec
@@ -5146,5 +5061,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 b1 03
+    call 02f18h                               ; e8 b4 03
     inc cx                                    ; 41
     mov dx, 003c8h                            ; ba c8 03
@@ -5155,5 +5070,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 a0 03
+    call 02f18h                               ; e8 a3 03
     inc cx                                    ; 41
     mov dx, 003c6h                            ; ba c6 03
@@ -5164,5 +5079,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 8f 03
+    call 02f18h                               ; e8 92 03
     inc cx                                    ; 41
     xor al, al                                ; 30 c0
@@ -5171,7 +5086,7 @@
     xor ah, ah                                ; 30 e4
     mov word [bp-004h], ax                    ; 89 46 fc
-    jmp short 02c70h                          ; eb 07
+    jmp short 02b9bh                          ; eb 07
     cmp word [bp-004h], 00300h                ; 81 7e fc 00 03
-    jnc short 02c86h                          ; 73 16
+    jnc short 02bb1h                          ; 73 16
     mov dx, 003c9h                            ; ba c9 03
     in AL, DX                                 ; ec
@@ -5181,12 +5096,12 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 6a 03
+    call 02f18h                               ; e8 6d 03
     inc cx                                    ; 41
     inc word [bp-004h]                        ; ff 46 fc
-    jmp short 02c69h                          ; eb e3
+    jmp short 02b94h                          ; eb e3
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 5b 03
+    call 02f18h                               ; e8 5e 03
     inc cx                                    ; 41
     mov ax, cx                                ; 89 c8
@@ -5196,5 +5111,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-biosfn_restore_video_state_:                 ; 0xc2c97 LB 0x31e
+biosfn_restore_video_state_:                 ; 0xc2bc2 LB 0x321
     push cx                                   ; 51
     push si                                   ; 56
@@ -5205,5 +5120,5 @@
     mov cx, bx                                ; 89 d9
     test byte [bp-008h], 001h                 ; f6 46 f8 01
-    je near 02df2h                            ; 0f 84 47 01
+    je near 02d20h                            ; 0f 84 4a 01
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
@@ -5212,11 +5127,11 @@
     lea dx, [bx+040h]                         ; 8d 57 40
     mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 3f 03
+    call 02f26h                               ; 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 02ccbh                          ; eb 06
+    jmp short 02bf6h                          ; eb 06
     cmp word [bp-002h], strict byte 00004h    ; 83 7e fe 04
-    jnbe short 02ce3h                         ; 77 18
+    jnbe short 02c0eh                         ; 77 18
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, 003c4h                            ; ba c4 03
@@ -5224,10 +5139,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 03 03
+    call 02f0ah                               ; 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 02cc5h                          ; eb e2
+    jmp short 02bf0h                          ; eb e2
     xor al, al                                ; 30 c0
     mov dx, 003c4h                            ; ba c4 03
@@ -5235,5 +5150,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 ec 02
+    call 02f0ah                               ; e8 ef 02
     mov dx, 003c5h                            ; ba c5 03
     out DX, AL                                ; ee
@@ -5243,9 +5158,9 @@
     out DX, ax                                ; ef
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
-    jmp short 02d08h                          ; eb 06
+    jmp short 02c33h                          ; eb 06
     cmp word [bp-002h], strict byte 00018h    ; 83 7e fe 18
-    jnbe short 02d25h                         ; 77 1d
+    jnbe short 02c50h                         ; 77 1d
     cmp word [bp-002h], strict byte 00011h    ; 83 7e fe 11
-    je short 02d1fh                           ; 74 11
+    je short 02c4ah                           ; 74 11
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, di                                ; 89 fa
@@ -5253,10 +5168,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 c1 02
+    call 02f0ah                               ; 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 02d02h                          ; eb dd
+    jmp short 02c2dh                          ; eb dd
     mov dx, 003cch                            ; ba cc 03
     in AL, DX                                 ; ec
@@ -5265,5 +5180,6 @@
     and AL, strict byte 0feh                  ; 24 fe
     mov word [bp-004h], ax                    ; 89 46 fc
-    mov di, 003d4h                            ; bf d4 03
+    cmp di, 003d4h                            ; 81 ff d4 03
+    jne short 02c65h                          ; 75 04
     or byte [bp-004h], 001h                   ; 80 4e fc 01
     mov al, byte [bp-004h]                    ; 8a 46 fc
@@ -5276,10 +5192,10 @@
     add dx, strict byte 0fff9h                ; 83 c2 f9
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 8f 02
-    mov dx, 003d5h                            ; ba d5 03
+    call 02f0ah                               ; 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 02fdch                               ; e8 83 02
+    call 02f0ah                               ; e8 83 02
     xor ah, ah                                ; 30 e4
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -5289,7 +5205,7 @@
     ; sub ah, ah                                ; 2a e4
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
-    jmp short 02d71h                          ; eb 06
+    jmp short 02c9fh                          ; eb 06
     cmp word [bp-002h], strict byte 00013h    ; 83 7e fe 13
-    jnbe short 02d8fh                         ; 77 1e
+    jnbe short 02cbdh                         ; 77 1e
     mov ax, word [bp-006h]                    ; 8b 46 fa
     and ax, strict word 00020h                ; 25 20 00
@@ -5299,10 +5215,10 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 57 02
+    call 02f0ah                               ; 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 02d6bh                          ; eb dc
+    jmp short 02c99h                          ; eb dc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov dx, 003c0h                            ; ba c0 03
@@ -5313,7 +5229,7 @@
     ; sub ah, ah                                ; 2a e4
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
-    jmp short 02da9h                          ; eb 06
+    jmp short 02cd7h                          ; eb 06
     cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
-    jnbe short 02dc1h                         ; 77 18
+    jnbe short 02cefh                         ; 77 18
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, 003ceh                            ; ba ce 03
@@ -5321,14 +5237,14 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 25 02
+    call 02f0ah                               ; 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 02da3h                          ; eb e2
+    jmp short 02cd1h                          ; eb e2
     add cx, strict byte 00006h                ; 83 c1 06
     mov dx, bx                                ; 89 da
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 11 02
+    call 02f0ah                               ; e8 11 02
     mov dx, 003c4h                            ; ba c4 03
     out DX, AL                                ; ee
@@ -5336,5 +5252,5 @@
     mov dx, bx                                ; 89 da
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 05 02
+    call 02f0ah                               ; e8 05 02
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
@@ -5342,106 +5258,106 @@
     mov dx, bx                                ; 89 da
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 fa 01
+    call 02f0ah                               ; 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 02fdch                               ; e8 ee 01
+    call 02f0ah                               ; 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 02f61h                            ; 0f 84 67 01
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 db 01
+    je near 02e8fh                            ; 0f 84 67 01
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f0ah                               ; 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 02feah                               ; e8 dd 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 e3 01
+    call 02f18h                               ; e8 dd 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f26h                               ; 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 03006h                               ; e8 e6 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 cf 01
+    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
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 d2 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 bb 01
+    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
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00063h                ; ba 63 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 be 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 8b 01
+    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
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00084h                            ; ba 84 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 8d 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 93 01
+    call 02f18h                               ; e8 8d 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f26h                               ; e8 93 01
     mov bx, ax                                ; 89 c3
     mov dx, 00085h                            ; ba 85 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 96 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 63 01
+    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
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 65 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 4f 01
+    call 02f18h                               ; e8 65 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f0ah                               ; e8 4f 01
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00088h                            ; ba 88 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 51 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 3b 01
+    call 02f18h                               ; e8 51 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f0ah                               ; e8 3b 01
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00089h                            ; ba 89 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 3d 01
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 43 01
+    call 02f18h                               ; e8 3d 01
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f26h                               ; 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 03006h                               ; e8 46 01
+    call 02f34h                               ; e8 46 01
     mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
     inc cx                                    ; 41
     inc cx                                    ; 41
-    jmp short 02ecfh                          ; eb 06
+    jmp short 02dfdh                          ; eb 06
     cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
-    jnc short 02eedh                          ; 73 1e
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 22 01
+    jnc short 02e1bh                          ; 73 1e
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f26h                               ; e8 22 01
     mov bx, ax                                ; 89 c3
     mov dx, word [bp-002h]                    ; 8b 56 fe
@@ -5449,68 +5365,68 @@
     add dx, strict byte 00050h                ; 83 c2 50
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 20 01
+    call 02f34h                               ; e8 20 01
     inc cx                                    ; 41
     inc cx                                    ; 41
     inc word [bp-002h]                        ; ff 46 fe
-    jmp short 02ec9h                          ; eb dc
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 04 01
+    jmp short 02df7h                          ; eb dc
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f26h                               ; 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 03006h                               ; e8 07 01
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 d4 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
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00062h                ; ba 62 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 d6 00
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 dc 00
+    call 02f18h                               ; e8 d6 00
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f26h                               ; e8 dc 00
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0007ch                ; ba 7c 00
     xor ax, ax                                ; 31 c0
-    call 03006h                               ; e8 e0 00
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 c9 00
+    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
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0007eh                ; ba 7e 00
     xor ax, ax                                ; 31 c0
-    call 03006h                               ; e8 cd 00
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 b6 00
+    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
     mov bx, ax                                ; 89 c3
     mov dx, 0010ch                            ; ba 0c 01
     xor ax, ax                                ; 31 c0
-    call 03006h                               ; e8 ba 00
-    inc cx                                    ; 41
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02ff8h                               ; e8 a3 00
+    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
     mov bx, ax                                ; 89 c3
     mov dx, 0010eh                            ; ba 0e 01
     xor ax, ax                                ; 31 c0
-    call 03006h                               ; e8 a7 00
+    call 02f34h                               ; e8 a7 00
     inc cx                                    ; 41
     inc cx                                    ; 41
     test byte [bp-008h], 004h                 ; f6 46 f8 04
-    je short 02faeh                           ; 74 47
-    inc cx                                    ; 41
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 6d 00
+    je short 02edch                           ; 74 47
+    inc cx                                    ; 41
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f0ah                               ; e8 6d 00
     xor ah, ah                                ; 30 e4
     mov word [bp-004h], ax                    ; 89 46 fc
@@ -5518,5 +5434,5 @@
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 60 00
+    call 02f0ah                               ; e8 60 00
     mov dx, 003c6h                            ; ba c6 03
     out DX, AL                                ; ee
@@ -5527,15 +5443,15 @@
     xor ah, ah                                ; 30 e4
     mov word [bp-002h], ax                    ; 89 46 fe
-    jmp short 02f95h                          ; eb 07
+    jmp short 02ec3h                          ; eb 07
     cmp word [bp-002h], 00300h                ; 81 7e fe 00 03
-    jnc short 02fa6h                          ; 73 11
-    mov dx, cx                                ; 89 ca
-    mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 40 00
+    jnc short 02ed4h                          ; 73 11
+    mov dx, cx                                ; 89 ca
+    mov ax, si                                ; 89 f0
+    call 02f0ah                               ; 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 02f8eh                          ; eb e8
+    jmp short 02ebch                          ; eb e8
     inc cx                                    ; 41
     mov al, byte [bp-004h]                    ; 8a 46 fc
@@ -5548,5 +5464,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-find_vga_entry_:                             ; 0xc2fb5 LB 0x27
+find_vga_entry_:                             ; 0xc2ee3 LB 0x27
     push bx                                   ; 53
     push dx                                   ; 52
@@ -5556,13 +5472,13 @@
     mov AH, strict byte 0ffh                  ; b4 ff
     xor al, al                                ; 30 c0
-    jmp short 02fc8h                          ; eb 06
+    jmp short 02ef6h                          ; eb 06
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     cmp AL, strict byte 00fh                  ; 3c 0f
-    jnbe short 02fd6h                         ; 77 0e
+    jnbe short 02f04h                         ; 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 02fc2h                          ; 75 ee
+    jne short 02ef0h                          ; 75 ee
     mov ah, al                                ; 88 c4
     mov al, ah                                ; 88 e0
@@ -5571,5 +5487,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-read_byte_:                                  ; 0xc2fdc LB 0xe
+read_byte_:                                  ; 0xc2f0a LB 0xe
     push bx                                   ; 53
     push bp                                   ; 55
@@ -5581,5 +5497,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-write_byte_:                                 ; 0xc2fea LB 0xe
+write_byte_:                                 ; 0xc2f18 LB 0xe
     push si                                   ; 56
     push bp                                   ; 55
@@ -5591,5 +5507,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-read_word_:                                  ; 0xc2ff8 LB 0xe
+read_word_:                                  ; 0xc2f26 LB 0xe
     push bx                                   ; 53
     push bp                                   ; 55
@@ -5601,5 +5517,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-write_word_:                                 ; 0xc3006 LB 0xe
+write_word_:                                 ; 0xc2f34 LB 0xe
     push si                                   ; 56
     push bp                                   ; 55
@@ -5611,5 +5527,16 @@
     pop si                                    ; 5e
     retn                                      ; c3
-printf_:                                     ; 0xc3014 LB 0x11a
+read_dword_:                                 ; 0xc2f42 LB 0x12
+    push bx                                   ; 53
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    mov bx, dx                                ; 89 d3
+    mov es, ax                                ; 8e c0
+    mov ax, word [es:bx]                      ; 26 8b 07
+    mov dx, word [es:bx+002h]                 ; 26 8b 57 02
+    pop bp                                    ; 5d
+    pop bx                                    ; 5b
+    retn                                      ; c3
+printf_:                                     ; 0xc2f54 LB 0x108
     push bx                                   ; 53
     push cx                                   ; 51
@@ -5617,49 +5544,42 @@
     push si                                   ; 56
     push di                                   ; 57
-    enter 00006h, 000h                        ; c8 06 00 00
+    enter 00004h, 000h                        ; c8 04 00 00
     lea si, [bp+00eh]                         ; 8d 76 0e
-    mov ax, ss                                ; 8c d0
-    mov word [bp-002h], ax                    ; 89 46 fe
-    xor di, di                                ; 31 ff
+    xor cx, cx                                ; 31 c9
     xor bx, bx                                ; 31 db
-    mov dx, word [bp+00eh]                    ; 8b 56 0e
-    mov ax, 0c000h                            ; b8 00 c0
-    call 02fdch                               ; e8 aa ff
-    mov ah, al                                ; 88 c4
+    mov di, word [bp+00eh]                    ; 8b 7e 0e
+    mov al, byte [di]                         ; 8a 05
     test al, al                               ; 84 c0
-    je near 030bah                            ; 0f 84 80 00
+    je near 02fe8h                            ; 0f 84 79 00
     cmp AL, strict byte 025h                  ; 3c 25
-    jne short 03046h                          ; 75 08
-    mov di, strict word 00001h                ; bf 01 00
+    jne short 02f7ah                          ; 75 07
+    mov cx, strict word 00001h                ; b9 01 00
     xor bx, bx                                ; 31 db
-    jmp near 030b4h                           ; e9 6e 00
-    test di, di                               ; 85 ff
-    je short 030b0h                           ; 74 66
+    jmp short 02fe2h                          ; eb 68
+    test cx, cx                               ; 85 c9
+    je short 02fdeh                           ; 74 60
     cmp AL, strict byte 030h                  ; 3c 30
-    jc short 0305eh                           ; 72 10
+    jc short 02f92h                           ; 72 10
     cmp AL, strict byte 039h                  ; 3c 39
-    jnbe short 0305eh                         ; 77 0c
+    jnbe short 02f92h                         ; 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 030b4h                          ; eb 56
-    cmp ah, 078h                              ; 80 fc 78
-    jne short 030b4h                          ; 75 51
+    jmp short 02fe2h                          ; eb 50
+    cmp AL, strict byte 078h                  ; 3c 78
+    jne short 02fe2h                          ; 75 4c
     inc si                                    ; 46
     inc si                                    ; 46
-    mov dx, si                                ; 89 f2
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02ff8h                               ; e8 8b ff
+    mov ax, word [ss:si]                      ; 36 8b 04
     mov word [bp-004h], ax                    ; 89 46 fc
     test bx, bx                               ; 85 db
-    jne short 03077h                          ; 75 03
+    jne short 02fa5h                          ; 75 03
     mov bx, strict word 00004h                ; bb 04 00
-    lea ax, [bx-001h]                         ; 8d 47 ff
-    mov word [bp-006h], ax                    ; 89 46 fa
-    xor di, di                                ; 31 ff
-    cmp di, bx                                ; 39 df
-    jnc short 030ach                          ; 73 29
-    mov cx, word [bp-006h]                    ; 8b 4e fa
+    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
+    mov cx, di                                ; 89 f9
     sal cx, 002h                              ; c1 e1 02
     mov ax, word [bp-004h]                    ; 8b 46 fc
@@ -5667,21 +5587,21 @@
     and ax, strict word 0000fh                ; 25 0f 00
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 0309fh                         ; 77 09
+    jnbe short 02fcdh                         ; 77 09
     add ax, strict word 00030h                ; 05 30 00
-    mov dx, 003b7h                            ; ba b7 03
-    out DX, AL                                ; ee
-    jmp short 030a6h                          ; eb 07
+    mov dx, 00504h                            ; ba 04 05
+    out DX, AL                                ; ee
+    jmp short 02fd4h                          ; eb 07
     add ax, strict word 00037h                ; 05 37 00
-    mov dx, 003b7h                            ; ba b7 03
-    out DX, AL                                ; ee
-    dec word [bp-006h]                        ; ff 4e fa
-    inc di                                    ; 47
-    jmp short 0307fh                          ; eb d3
-    xor di, di                                ; 31 ff
-    jmp short 030b4h                          ; eb 04
-    mov dx, 003b7h                            ; ba b7 03
+    mov dx, 00504h                            ; ba 04 05
+    out DX, AL                                ; ee
+    dec di                                    ; 4f
+    inc word [bp-002h]                        ; ff 46 fe
+    jmp short 02fadh                          ; eb d3
+    xor cx, cx                                ; 31 c9
+    jmp short 02fe2h                          ; eb 04
+    mov dx, 00504h                            ; ba 04 05
     out DX, AL                                ; ee
     inc word [bp+00eh]                        ; ff 46 0e
-    jmp near 03029h                           ; e9 6f ff
+    jmp near 02f64h                           ; e9 7c ff
     leave                                     ; c9
     pop di                                    ; 5f
@@ -5702,23 +5622,27 @@
     add ax, 00304h                            ; 05 04 03
     add al, byte [bx+di]                      ; 02 01
-    add ch, ch                                ; 00 ed
-    xor AL, strict byte 059h                  ; 34 59
-    xor word [bp-055cfh], dx                  ; 31 96 31 aa
-    xor word [bp+di-02ccfh], di               ; 31 bb 31 d3
-    xor sp, sp                                ; 31 e4
-    xor di, bp                                ; 31 ef
-    xor word [bx+di], bp                      ; 31 29
-    xor ch, byte [di]                         ; 32 2d
-    xor al, byte [bx+si+032h]                 ; 32 40 32
-    pop bp                                    ; 5d
-    xor bh, byte [bp+si+032h]                 ; 32 7a 32
-    call far 0ca32h:0b332h                    ; 9a 32 b3 32 ca
-    db  032h, 0d6h
-    ; xor dl, dh                                ; 32 d6
-    xor ch, byte [di-015cdh]                  ; 32 ad 33 ea
-    xor dx, word [bx]                         ; 33 17
-    xor AL, strict byte 02ch                  ; 34 2c
-    xor AL, strict byte 070h                  ; 34 70
-    xor AL, strict byte 030h                  ; 34 30
+    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
     and AL, strict byte 023h                  ; 24 23
     and ah, byte [bx+di]                      ; 22 21
@@ -5727,22 +5651,20 @@
     adc byte [si], al                         ; 10 04
     add al, byte [bx+di]                      ; 02 01
-    add ch, ch                                ; 00 ed
-    xor AL, strict byte 0f7h                  ; 34 f7
-    xor bl, byte [bp+di]                      ; 32 1b
-    xor bp, word [bx+di]                      ; 33 29
-    xor si, word [bx]                         ; 33 37
-    db  033h, 0f7h
-    ; xor si, di                                ; 33 f7
-    xor bl, byte [bp+di]                      ; 32 1b
-    xor bp, word [bx+di]                      ; 33 29
-    xor si, word [bx]                         ; 33 37
-    xor ax, word [di+033h]                    ; 33 45 33
-    push cx                                   ; 51
-    xor bp, word [si+033h]                    ; 33 6c 33
-    jnbe short 0315dh                         ; 77 33
-    db  082h, 033h, 08dh
-    ; xor byte [bp+di], 08dh                    ; 82 33 8d
-    db  033h
-_int10_func:                                 ; 0xc312e LB 0x3c3
+    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
+    db  032h
+_int10_func:                                 ; 0xc305c LB 0x3c7
     push si                                   ; 56
     push di                                   ; 57
@@ -5752,38 +5674,40 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jnbe near 034edh                          ; 0f 87 a9 03
+    jnbe near 0341fh                          ; 0f 87 ad 03
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00016h                ; b9 16 00
-    mov di, 030c1h                            ; bf c1 30
+    mov di, 02fefh                            ; bf ef 2f
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+030d6h]               ; 2e 8b 85 d6 30
+    mov ax, word [cs:di+03004h]               ; 2e 8b 85 04 30
+    mov cl, byte [bp+016h]                    ; 8a 4e 16
     jmp ax                                    ; ff e0
-    movzx ax, byte [bp+016h]                  ; 0f b6 46 16
-    call 00d85h                               ; e8 25 dc
+    mov al, byte [bp+016h]                    ; 8a 46 16
+    xor ah, ah                                ; 30 e4
+    call 00fc1h                               ; e8 2f 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 03180h                           ; 74 15
+    je short 030b2h                           ; 74 15
     cmp ax, strict word 00006h                ; 3d 06 00
-    je short 03177h                           ; 74 07
+    je short 030a9h                           ; 74 07
     cmp ax, strict word 00005h                ; 3d 05 00
-    jbe short 03180h                          ; 76 0b
-    jmp short 03189h                          ; eb 12
+    jbe short 030b2h                          ; 76 0b
+    jmp short 030bbh                          ; eb 12
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 03fh                   ; 0c 3f
-    jmp short 03190h                          ; eb 10
+    jmp short 030c2h                          ; eb 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 030h                   ; 0c 30
-    jmp short 03190h                          ; eb 07
+    jmp short 030c2h                          ; 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 034edh                           ; e9 57 03
+    jmp near 0341fh                           ; e9 57 03
     mov al, byte [bp+014h]                    ; 8a 46 14
     movzx dx, al                              ; 0f b6 d0
@@ -5791,22 +5715,19 @@
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 00b14h                               ; e8 6d d9
-    jmp near 034edh                           ; e9 43 03
+    call 00daah                               ; e8 d1 dc
+    jmp near 0341fh                           ; 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 00bb5h                               ; e8 fd d9
-    jmp near 034edh                           ; e9 32 03
-    lea dx, [bp+012h]                         ; 8d 56 12
-    push SS                                   ; 16
-    push dx                                   ; 52
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp+014h]                         ; 8d 5e 14
+    call 00e4bh                               ; e8 61 dd
+    jmp near 0341fh                           ; e9 32 03
+    lea bx, [bp+012h]                         ; 8d 5e 12
+    lea dx, [bp+014h]                         ; 8d 56 14
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 00c53h                               ; e8 83 da
-    jmp near 034edh                           ; e9 1a 03
+    call 00a8ch                               ; e8 8e d9
+    jmp near 0341fh                           ; e9 1e 03
     xor ax, ax                                ; 31 c0
     mov word [bp+016h], ax                    ; 89 46 16
@@ -5814,9 +5735,9 @@
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 034edh                           ; e9 09 03
-    mov al, byte [bp+016h]                    ; 8a 46 16
+    jmp near 0341fh                           ; e9 0d 03
+    mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 00ca8h                               ; e8 bc da
-    jmp near 034edh                           ; e9 fe 02
+    call 00ee9h                               ; e8 d0 dd
+    jmp near 0341fh                           ; e9 03 03
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
@@ -5840,15 +5761,14 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 01306h                               ; e8 e0 e0
-    jmp near 034edh                           ; e9 c4 02
+    call 01542h                               ; e8 ef e3
+    jmp near 0341fh                           ; e9 c9 02
     xor ax, ax                                ; 31 c0
-    jmp short 031f2h                          ; eb c5
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp+016h]                         ; 8d 5e 16
+    jmp short 0311fh                          ; 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 01807h                               ; e8 ca e5
-    jmp near 034edh                           ; e9 ad 02
+    call 00acch                               ; e8 64 d9
+    jmp near 0341fh                           ; e9 b4 02
     mov cx, word [bp+014h]                    ; 8b 4e 14
     mov al, byte [bp+010h]                    ; 8a 46 10
@@ -5859,6 +5779,6 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 01b37h                               ; e8 dd e8
-    jmp near 034edh                           ; e9 90 02
+    call 01cceh                               ; e8 49 eb
+    jmp near 0341fh                           ; e9 97 02
     mov cx, word [bp+014h]                    ; 8b 4e 14
     mov al, byte [bp+010h]                    ; 8a 46 10
@@ -5869,6 +5789,6 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 01c9fh                               ; e8 28 ea
-    jmp near 034edh                           ; e9 73 02
+    call 01e31h                               ; e8 8f ec
+    jmp near 0341fh                           ; e9 7a 02
     mov cx, word [bp+012h]                    ; 8b 4e 12
     mov bx, word [bp+014h]                    ; 8b 5e 14
@@ -5880,16 +5800,16 @@
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 01e0ch                               ; e8 75 eb
-    jmp near 034edh                           ; e9 53 02
-    lea dx, [bp+016h]                         ; 8d 56 16
-    push SS                                   ; 16
-    push dx                                   ; 52
+    call 01f9bh                               ; e8 d9 ed
+    jmp near 0341fh                           ; e9 5a 02
+    lea cx, [bp+016h]                         ; 8d 4e 16
     mov bx, word [bp+012h]                    ; 8b 5e 12
     mov dx, word [bp+014h]                    ; 8b 56 14
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
+    mov word [bp-002h], ax                    ; 89 46 fe
+    mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 01f74h                               ; e8 c4 ec
-    jmp near 034edh                           ; e9 3a 02
+    call 00beeh                               ; e8 0f da
+    jmp near 0341fh                           ; e9 3d 02
     mov cx, strict word 00002h                ; b9 02 00
     mov al, byte [bp+010h]                    ; 8a 46 10
@@ -5898,22 +5818,22 @@
     mov al, byte [bp+016h]                    ; 8a 46 16
     xor ah, ah                                ; 30 e4
-    call 020bbh                               ; e8 f4 ed
-    jmp near 034edh                           ; e9 23 02
+    call 02103h                               ; e8 0d ef
+    jmp near 0341fh                           ; e9 26 02
     mov dx, word [bp+014h]                    ; 8b 56 14
     mov ax, word [bp+010h]                    ; 8b 46 10
-    call 00a8ch                               ; e8 b9 d7
-    jmp near 034edh                           ; e9 17 02
+    call 00d22h                               ; e8 20 db
+    jmp near 0341fh                           ; 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 034edh                          ; 0f 87 0b 02
+    jnbe near 0341fh                          ; 0f 87 0e 02
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000fh                ; b9 0f 00
-    mov di, 03102h                            ; bf 02 31
+    mov di, 03030h                            ; bf 30 30
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+03110h]               ; 2e 8b 85 10 31
+    mov ax, word [cs:di+0303eh]               ; 2e 8b 85 3e 30
     jmp ax                                    ; ff e0
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -5921,29 +5841,37 @@
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
-    movzx ax, byte [bp+010h]                  ; 0f b6 46 10
+    mov al, byte [bp+010h]                    ; 8a 46 10
+    xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push word [bp+012h]                       ; ff 76 12
-    movzx ax, byte [bp+016h]                  ; 0f b6 46 16
+    mov al, byte [bp+016h]                    ; 8a 46 16
+    xor ah, ah                                ; 30 e4
     mov cx, word [bp+014h]                    ; 8b 4e 14
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, word [bp+01ah]                    ; 8b 56 1a
-    call 02466h                               ; e8 4e f1
-    jmp near 034edh                           ; e9 d2 01
-    movzx dx, byte [bp+010h]                  ; 0f b6 56 10
-    movzx ax, byte [bp+016h]                  ; 0f b6 46 16
-    call 024deh                               ; e8 b8 f1
-    jmp near 034edh                           ; e9 c4 01
-    movzx dx, byte [bp+010h]                  ; 0f b6 56 10
-    movzx ax, byte [bp+016h]                  ; 0f b6 46 16
-    call 0254ah                               ; e8 16 f2
-    jmp near 034edh                           ; e9 b6 01
-    movzx dx, byte [bp+010h]                  ; 0f b6 56 10
-    movzx ax, byte [bp+016h]                  ; 0f b6 46 16
-    call 025b8h                               ; e8 76 f2
-    jmp near 034edh                           ; e9 a8 01
+    call 024a0h                               ; e8 57 f2
+    jmp near 0341fh                           ; 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
+    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
+    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
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov ax, word [bp+01ah]                    ; 8b 46 1a
-    call 02626h                               ; e8 d8 f2
-    jmp near 034edh                           ; e9 9c 01
+    call 02660h                               ; e8 d8 f3
+    jmp near 0341fh                           ; e9 94 01
     mov al, byte [bp+012h]                    ; 8a 46 12
     xor ah, ah                                ; 30 e4
@@ -5954,58 +5882,53 @@
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov ax, word [bp+01ah]                    ; 8b 46 1a
-    call 0262bh                               ; e8 c2 f2
-    jmp near 034edh                           ; e9 81 01
+    call 02665h                               ; e8 c2 f3
+    jmp near 0341fh                           ; e9 79 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     xor ah, ah                                ; 30 e4
-    call 02632h                               ; e8 be f2
-    jmp near 034edh                           ; e9 76 01
+    call 0266ch                               ; e8 be f3
+    jmp near 0341fh                           ; e9 6e 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     xor ah, ah                                ; 30 e4
-    call 02637h                               ; e8 b8 f2
-    jmp near 034edh                           ; e9 6b 01
+    call 02671h                               ; e8 b8 f3
+    jmp near 0341fh                           ; e9 63 01
     mov al, byte [bp+010h]                    ; 8a 46 10
     xor ah, ah                                ; 30 e4
-    call 0263ch                               ; e8 b2 f2
-    jmp near 034edh                           ; e9 60 01
-    lea dx, [bp+012h]                         ; 8d 56 12
-    push SS                                   ; 16
-    push dx                                   ; 52
-    lea dx, [bp+014h]                         ; 8d 56 14
-    push SS                                   ; 16
-    push dx                                   ; 52
-    lea dx, [bp+00ch]                         ; 8d 56 0c
-    push SS                                   ; 16
-    push dx                                   ; 52
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp+01ah]                         ; 8d 5e 1a
+    call 02676h                               ; e8 b2 f3
+    jmp near 0341fh                           ; e9 58 01
+    lea ax, [bp+012h]                         ; 8d 46 12
+    push ax                                   ; 50
+    lea cx, [bp+014h]                         ; 8d 4e 14
+    lea bx, [bp+00ch]                         ; 8d 5e 0c
+    lea dx, [bp+01ah]                         ; 8d 56 1a
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
-    call 02651h                               ; e8 a7 f2
-    jmp near 034edh                           ; e9 40 01
+    call 00b6fh                               ; e8 92 d8
+    jmp near 0341fh                           ; 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 033e0h                           ; 74 29
+    je short 03312h                           ; 74 28
     cmp ax, strict word 00035h                ; 3d 35 00
-    je short 033c9h                           ; 74 0d
+    je short 032fch                           ; 74 0d
     cmp ax, strict word 00020h                ; 3d 20 00
-    jne near 034edh                           ; 0f 85 2a 01
-    call 0273fh                               ; e8 79 f3
-    jmp near 034edh                           ; e9 24 01
-    movzx ax, byte [bp+016h]                  ; 0f b6 46 16
+    jne near 0341fh                           ; 0f 85 29 01
+    call 0267bh                               ; e8 82 f3
+    jmp near 0341fh                           ; 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 02744h                               ; e8 6e f3
+    call 02680h                               ; e8 78 f3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 012h                   ; 0c 12
-    jmp near 03190h                           ; e9 b0 fd
-    mov al, byte [bp+016h]                    ; 8a 46 16
+    jmp near 030c2h                           ; e9 b0 fd
+    mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 02749h                               ; e8 61 f3
-    jmp short 033d6h                          ; eb ec
+    call 02685h                               ; e8 6c f3
+    jmp short 03308h                          ; eb ed
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+01ah]                       ; ff 76 1a
-    movzx ax, byte [bp+012h]                  ; 0f b6 46 12
+    mov al, byte [bp+012h]                    ; 8a 46 12
+    xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -6013,82 +5936,82 @@
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
-    movzx bx, byte [bp+010h]                  ; 0f b6 5e 10
-    mov dx, word [bp+010h]                    ; 8b 56 10
-    shr dx, 008h                              ; c1 ea 08
-    xor dh, dh                                ; 30 f6
-    movzx ax, byte [bp+016h]                  ; 0f b6 46 16
+    mov al, byte [bp+010h]                    ; 8a 46 10
+    movzx bx, al                              ; 0f b6 d8
+    mov ax, word [bp+010h]                    ; 8b 46 10
+    shr ax, 008h                              ; c1 e8 08
+    movzx dx, al                              ; 0f b6 d0
+    movzx ax, cl                              ; 0f b6 c1
     mov cx, word [bp+014h]                    ; 8b 4e 14
-    call 0274eh                               ; e8 3a f3
-    jmp near 034edh                           ; e9 d6 00
+    call 0268ah                               ; e8 42 f3
+    jmp near 0341fh                           ; 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 027eah                               ; e8 c8 f3
+    call 02721h                               ; e8 cb f3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 01bh                   ; 0c 1b
-    jmp near 03190h                           ; e9 64 fd
+    jmp near 030c2h                           ; 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 0345ah                           ; 74 24
+    je short 0338ch                           ; 74 22
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 0344ch                           ; 74 11
+    je short 0337eh                           ; 74 0f
     test ax, ax                               ; 85 c0
-    jne short 03466h                          ; 75 27
-    mov cx, ss                                ; 8c d1
-    lea bx, [bp+010h]                         ; 8d 5e 10
+    jne short 03398h                          ; 75 25
+    lea dx, [bp+010h]                         ; 8d 56 10
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 02917h                               ; e8 cd f4
-    jmp short 03466h                          ; eb 1a
+    call 0284eh                               ; e8 d2 f4
+    jmp short 03398h                          ; 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 02932h                               ; e8 da f4
-    jmp short 03466h                          ; eb 0c
+    call 0285dh                               ; e8 d3 f4
+    jmp short 03398h                          ; 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 02c97h                               ; e8 31 f8
+    call 02bc2h                               ; e8 2a f8
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor al, al                                ; 30 c0
     or AL, strict byte 01ch                   ; 0c 1c
-    jmp near 03190h                           ; e9 20 fd
-    call 007d4h                               ; e8 61 d3
+    jmp near 030c2h                           ; e9 20 fd
+    call 007d4h                               ; e8 2f d4
     test ax, ax                               ; 85 c0
-    je near 034e8h                            ; 0f 84 6f 00
+    je near 0341ah                            ; 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 03496h                           ; 72 13
-    jbe short 034bch                          ; 76 37
+    jc short 033c8h                           ; 72 13
+    jbe short 033eeh                          ; 76 37
     cmp ax, strict word 0000ah                ; 3d 0a 00
-    je short 034e1h                           ; 74 57
+    je short 03413h                           ; 74 57
     cmp ax, strict word 00009h                ; 3d 09 00
-    je short 034e1h                           ; 74 52
+    je short 03413h                           ; 74 52
     cmp ax, strict word 00004h                ; 3d 04 00
-    je short 034cch                           ; 74 38
-    jmp short 034e1h                          ; eb 4b
+    je short 033feh                           ; 74 38
+    jmp short 03413h                          ; eb 4b
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 034ach                           ; 74 11
+    je short 033deh                           ; 74 11
     test ax, ax                               ; 85 c0
-    jne short 034e1h                          ; 75 42
+    jne short 03413h                          ; 75 42
     mov bx, si                                ; 89 f3
     mov dx, word [bp+01ah]                    ; 8b 56 1a
     lea ax, [bp+016h]                         ; 8d 46 16
-    call 035b5h                               ; e8 0b 01
-    jmp short 034edh                          ; eb 41
+    call 034e7h                               ; e8 0b 01
+    jmp short 0341fh                          ; 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 037b4h                               ; e8 fa 02
-    jmp short 034edh                          ; eb 31
+    call 036d1h                               ; e8 e5 02
+    jmp short 0341fh                          ; 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 0386fh                               ; e8 a5 03
-    jmp short 034edh                          ; eb 21
+    call 03781h                               ; e8 85 03
+    jmp short 0341fh                          ; eb 21
     lea ax, [bp+010h]                         ; 8d 46 10
     push ax                                   ; 50
@@ -6097,8 +6020,8 @@
     mov dx, word [bp+014h]                    ; 8b 56 14
     lea ax, [bp+016h]                         ; 8d 46 16
-    call 03a79h                               ; e8 9a 05
-    jmp short 034edh                          ; eb 0c
+    call 03970h                               ; e8 5f 05
+    jmp short 0341fh                          ; eb 0c
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
-    jmp short 034edh                          ; eb 05
+    jmp short 0341fh                          ; eb 05
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
     leave                                     ; c9
@@ -6106,5 +6029,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-dispi_set_xres_:                             ; 0xc34f1 LB 0x18
+dispi_set_xres_:                             ; 0xc3423 LB 0x18
     push bx                                   ; 53
     push dx                                   ; 52
@@ -6122,5 +6045,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-dispi_set_yres_:                             ; 0xc3509 LB 0x18
+dispi_set_yres_:                             ; 0xc343b LB 0x18
     push bx                                   ; 53
     push dx                                   ; 52
@@ -6138,5 +6061,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-dispi_set_bpp_:                              ; 0xc3521 LB 0x18
+dispi_set_bpp_:                              ; 0xc3453 LB 0x18
     push bx                                   ; 53
     push dx                                   ; 52
@@ -6154,5 +6077,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-in_word_:                                    ; 0xc3539 LB 0xf
+in_word_:                                    ; 0xc346b LB 0xf
     push bx                                   ; 53
     push bp                                   ; 55
@@ -6166,5 +6089,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-in_byte_:                                    ; 0xc3548 LB 0x11
+in_byte_:                                    ; 0xc347a LB 0x11
     push bx                                   ; 53
     push bp                                   ; 55
@@ -6180,5 +6103,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-mode_info_find_mode_:                        ; 0xc3559 LB 0x5c
+mode_info_find_mode_:                        ; 0xc348b LB 0x5c
     push bx                                   ; 53
     push cx                                   ; 51
@@ -6191,32 +6114,32 @@
     xor dx, dx                                ; 31 d2
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 cd ff
+    call 0346bh                               ; e8 cd ff
     cmp ax, 077cch                            ; 3d cc 77
-    je short 0357dh                           ; 74 0c
+    je short 034afh                           ; 74 0c
     push ax                                   ; 50
     push 07ee2h                               ; 68 e2 7e
-    call 03014h                               ; e8 9c fa
+    call 02f54h                               ; e8 aa fa
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp short 035adh                          ; eb 30
+    jmp short 034dfh                          ; eb 30
     mov bx, strict word 00004h                ; bb 04 00
     mov dx, bx                                ; 89 da
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 b1 ff
+    call 0346bh                               ; e8 b1 ff
     mov cx, ax                                ; 89 c1
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 035adh                           ; 74 1e
+    je short 034dfh                           ; 74 1e
     lea dx, [bx+002h]                         ; 8d 57 02
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 a1 ff
+    call 0346bh                               ; e8 a1 ff
     cmp cx, di                                ; 39 f9
-    jne short 035a8h                          ; 75 0c
+    jne short 034dah                          ; 75 0c
     test si, si                               ; 85 f6
-    jne short 035a4h                          ; 75 04
+    jne short 034d6h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 035afh                          ; eb 0b
+    jmp short 034e1h                          ; eb 0b
     test AL, strict byte 080h                 ; a8 80
-    jne short 035a0h                          ; 75 f8
+    jne short 034d2h                          ; 75 f8
     add bx, strict byte 00044h                ; 83 c3 44
-    jmp short 03580h                          ; eb d3
+    jmp short 034b2h                          ; eb d3
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
@@ -6226,197 +6149,191 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vbe_biosfn_return_controller_information_: ; 0xc35b5 LB 0x1ff
+vbe_biosfn_return_controller_information_: ; 0xc34e7 LB 0x1ea
     push cx                                   ; 51
     push si                                   ; 56
     push di                                   ; 57
-    enter 0000ah, 000h                        ; c8 0a 00 00
+    enter 00006h, 000h                        ; c8 06 00 00
     push ax                                   ; 50
     mov si, dx                                ; 89 d6
     mov di, bx                                ; 89 df
-    mov ax, ss                                ; 8c d0
-    mov word [bp-008h], ax                    ; 89 46 f8
+    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
-    mov word [bp-006h], strict word 00022h    ; c7 46 fa 22 00
-    call 005d7h                               ; e8 06 d0
-    mov word [bp-00ah], ax                    ; 89 46 f6
     xor dx, dx                                ; 31 d2
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 5d ff
+    call 0346bh                               ; e8 65 ff
     cmp ax, 077cch                            ; 3d cc 77
-    je short 035f9h                           ; 74 18
-    mov bx, 00100h                            ; bb 00 01
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
-    mov ax, word [bp-008h]                    ; 8b 46 f8
-    call 03006h                               ; e8 19 fa
+    je short 03521h                           ; 74 16
+    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 03014h                               ; e8 21 fa
+    call 02f54h                               ; e8 39 fa
     add sp, strict byte 00002h                ; 83 c4 02
-    jmp near 037afh                           ; e9 b6 01
+    jmp near 036cch                           ; e9 ab 01
     mov cx, strict word 00004h                ; b9 04 00
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 02ff8h                               ; e8 f3 f9
-    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
+    mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 cb f9
+    call 02f0ah                               ; e8 da f9
     cmp AL, strict byte 056h                  ; 3c 56
-    jne short 03639h                          ; 75 24
+    jne short 03558h                          ; 75 24
     lea dx, [di+001h]                         ; 8d 55 01
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 bf f9
+    call 02f0ah                               ; e8 ce f9
     cmp AL, strict byte 042h                  ; 3c 42
-    jne short 03639h                          ; 75 18
+    jne short 03558h                          ; 75 18
     lea dx, [di+002h]                         ; 8d 55 02
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 b3 f9
+    call 02f0ah                               ; e8 c2 f9
     cmp AL, strict byte 045h                  ; 3c 45
-    jne short 03639h                          ; 75 0c
+    jne short 03558h                          ; 75 0c
     lea dx, [di+003h]                         ; 8d 55 03
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 a7 f9
+    call 02f0ah                               ; e8 b6 f9
     cmp AL, strict byte 032h                  ; 3c 32
-    je short 03668h                           ; 74 2f
+    je short 03587h                           ; 74 2f
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 9c f9
+    call 02f0ah                               ; e8 ab f9
     cmp AL, strict byte 056h                  ; 3c 56
-    jne short 0366dh                          ; 75 29
+    jne short 0358ch                          ; 75 29
     lea dx, [di+001h]                         ; 8d 55 01
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 90 f9
+    call 02f0ah                               ; e8 9f f9
     cmp AL, strict byte 045h                  ; 3c 45
-    jne short 0366dh                          ; 75 1d
+    jne short 0358ch                          ; 75 1d
     lea dx, [di+002h]                         ; 8d 55 02
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 84 f9
+    call 02f0ah                               ; e8 93 f9
     cmp AL, strict byte 053h                  ; 3c 53
-    jne short 0366dh                          ; 75 11
+    jne short 0358ch                          ; 75 11
     lea dx, [di+003h]                         ; 8d 55 03
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 78 f9
+    call 02f0ah                               ; e8 87 f9
     cmp AL, strict byte 041h                  ; 3c 41
-    jne short 0366dh                          ; 75 05
-    mov word [bp-004h], strict word 00001h    ; c7 46 fc 01 00
+    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 02feah                               ; e8 73 f9
+    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 02feah                               ; e8 68 f9
+    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 02feah                               ; e8 5d f9
+    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 02feah                               ; e8 52 f9
+    call 02f18h                               ; e8 61 f9
     lea dx, [di+004h]                         ; 8d 55 04
     mov bx, 00200h                            ; bb 00 02
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 63 f9
+    call 02f34h                               ; e8 72 f9
     lea dx, [di+008h]                         ; 8d 55 08
     mov bx, 0c000h                            ; bb 00 c0
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 58 f9
+    call 02f34h                               ; e8 67 f9
     lea dx, [di+006h]                         ; 8d 55 06
     mov bx, 07e20h                            ; bb 20 7e
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 4d f9
+    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 02feah                               ; e8 26 f9
+    call 02f18h                               ; e8 35 f9
     lea dx, [di+00bh]                         ; 8d 55 0b
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 1c f9
+    call 02f18h                               ; e8 2b f9
     lea dx, [di+00ch]                         ; 8d 55 0c
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 12 f9
+    call 02f18h                               ; e8 21 f9
     lea dx, [di+00dh]                         ; 8d 55 0d
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
-    call 02feah                               ; e8 08 f9
+    call 02f18h                               ; e8 17 f9
     lea dx, [di+010h]                         ; 8d 55 10
     mov bx, si                                ; 89 f3
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 1a f9
+    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 03006h                               ; e8 0f f9
+    call 02f34h                               ; e8 1e f9
     mov dx, strict word 0ffffh                ; ba ff ff
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 39 fe
+    call 0346bh                               ; e8 4c fe
     lea dx, [di+012h]                         ; 8d 55 12
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 fc f8
-    cmp word [bp-004h], strict byte 00000h    ; 83 7e fc 00
-    je short 0375dh                           ; 74 4d
+    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 00002h                ; bb 02 00
-    mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 eb f8
+    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 03006h                               ; e8 e0 f8
+    call 02f34h                               ; e8 ef f8
     lea dx, [di+016h]                         ; 8d 55 16
     mov bx, 07e35h                            ; bb 35 7e
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 d5 f8
+    call 02f34h                               ; e8 e4 f8
     lea dx, [di+01ch]                         ; 8d 55 1c
     mov bx, 0c000h                            ; bb 00 c0
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 ca f8
+    call 02f34h                               ; e8 d9 f8
     lea dx, [di+01ah]                         ; 8d 55 1a
     mov bx, 07e48h                            ; bb 48 7e
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 bf f8
+    call 02f34h                               ; e8 ce f8
     lea dx, [di+020h]                         ; 8d 55 20
     mov bx, 0c000h                            ; bb 00 c0
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 b4 f8
+    call 02f34h                               ; e8 c3 f8
     lea dx, [di+01eh]                         ; 8d 55 1e
     mov bx, 07e69h                            ; bb 69 7e
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 a9 f8
+    call 02f34h                               ; e8 b8 f8
     mov dx, cx                                ; 89 ca
     add dx, strict byte 0001bh                ; 83 c2 1b
     mov ax, 003b6h                            ; b8 b6 03
-    call 03548h                               ; e8 e0 fd
+    call 0347ah                               ; e8 f3 fd
     xor ah, ah                                ; 30 e4
-    cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    jnbe short 03787h                         ; 77 18
+    cmp ax, word [bp-002h]                    ; 3b 46 fe
+    jnbe short 036a6h                         ; 77 18
     mov dx, cx                                ; 89 ca
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 c2 fd
-    mov dx, word [bp-006h]                    ; 8b 56 fa
+    call 0346bh                               ; e8 d5 fd
+    mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, di                                ; 01 fa
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 83 f8
-    add word [bp-006h], strict byte 00002h    ; 83 46 fa 02
+    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 03539h                               ; e8 a7 fd
+    call 0346bh                               ; e8 ba fd
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 0375dh                          ; 75 c6
-    mov dx, word [bp-006h]                    ; 8b 56 fa
+    jne short 0367ch                          ; 75 c6
+    mov dx, word [bp-004h]                    ; 8b 56 fc
     add dx, di                                ; 01 fa
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 63 f8
-    mov bx, strict word 0004fh                ; bb 4f 00
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
-    mov ax, word [bp-002h]                    ; 8b 46 fe
-    call 03006h                               ; e8 57 f8
+    call 02f34h                               ; e8 72 f8
+    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
     leave                                     ; c9
     pop di                                    ; 5f
@@ -6424,24 +6341,21 @@
     pop cx                                    ; 59
     retn                                      ; c3
-vbe_biosfn_return_mode_information_:         ; 0xc37b4 LB 0xbb
+vbe_biosfn_return_mode_information_:         ; 0xc36d1 LB 0xb0
     push si                                   ; 56
     push di                                   ; 57
-    enter 00006h, 000h                        ; c8 06 00 00
-    push ax                                   ; 50
-    push dx                                   ; 52
+    enter 00004h, 000h                        ; c8 04 00 00
+    push ax                                   ; 50
+    mov ax, dx                                ; 89 d0
     mov si, bx                                ; 89 de
     mov word [bp-002h], cx                    ; 89 4e fe
-    mov ax, ss                                ; 8c d0
+    test dh, 040h                             ; f6 c6 40
+    db  00fh, 095h, 0c2h
+    ; setne dl                                  ; 0f 95 c2
+    xor dh, dh                                ; 30 f6
+    and ah, 001h                              ; 80 e4 01
+    call 0348bh                               ; e8 9e fd
     mov word [bp-004h], ax                    ; 89 46 fc
-    test byte [bp-009h], 040h                 ; f6 46 f7 40
-    db  00fh, 095h, 0c0h
-    ; setne al                                  ; 0f 95 c0
-    movzx dx, al                              ; 0f b6 d0
-    and byte [bp-009h], 001h                  ; 80 66 f7 01
-    mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 03559h                               ; e8 7f fd
-    mov word [bp-006h], ax                    ; 89 46 fa
     test ax, ax                               ; 85 c0
-    je near 0385fh                            ; 0f 84 7c 00
+    je near 03772h                            ; 0f 84 7c 00
     mov cx, 00100h                            ; b9 00 01
     xor ax, ax                                ; 31 c0
@@ -6449,40 +6363,40 @@
     mov es, bx                                ; 8e c3
     cld                                       ; fc
-    jcxz 037f2h                               ; e3 02
+    jcxz 03705h                               ; e3 02
     rep stosb                                 ; f3 aa
     xor cx, cx                                ; 31 c9
-    jmp short 037fbh                          ; eb 05
+    jmp short 0370eh                          ; eb 05
     cmp cx, strict byte 00042h                ; 83 f9 42
-    jnc short 03818h                          ; 73 1d
-    mov dx, word [bp-006h]                    ; 8b 56 fa
+    jnc short 0372bh                          ; 73 1d
+    mov dx, word [bp-004h]                    ; 8b 56 fc
     inc dx                                    ; 42
     inc dx                                    ; 42
     add dx, cx                                ; 01 ca
     mov ax, 003b6h                            ; b8 b6 03
-    call 03548h                               ; e8 40 fd
+    call 0347ah                               ; e8 5f fd
     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 02feah                               ; e8 d5 f7
-    inc cx                                    ; 41
-    jmp short 037f6h                          ; eb de
+    call 02f18h                               ; e8 f0 f7
+    inc cx                                    ; 41
+    jmp short 03709h                          ; eb de
     mov dx, word [bp-002h]                    ; 8b 56 fe
     inc dx                                    ; 42
     inc dx                                    ; 42
     mov ax, si                                ; 89 f0
-    call 02fdch                               ; e8 ba f7
+    call 02f0ah                               ; e8 d5 f7
     test AL, strict byte 001h                 ; a8 01
-    je short 03842h                           ; 74 1c
+    je short 03755h                           ; 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 03006h                               ; e8 d2 f7
+    call 02f34h                               ; e8 ed f7
     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 03006h                               ; e8 c4 f7
+    call 02f34h                               ; e8 df f7
     mov ax, strict word 0000bh                ; b8 0b 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6494,89 +6408,85 @@
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 ac f7
-    mov bx, strict word 0004fh                ; bb 4f 00
-    jmp short 03862h                          ; eb 03
-    mov bx, 00100h                            ; bb 00 01
-    mov dx, word [bp-008h]                    ; 8b 56 f8
-    mov ax, word [bp-004h]                    ; 8b 46 fc
-    call 03006h                               ; e8 9b f7
+    call 02f34h                               ; e8 c7 f7
+    mov ax, strict word 0004fh                ; b8 4f 00
+    jmp short 03775h                          ; eb 03
+    mov ax, 00100h                            ; b8 00 01
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov bx, word [bp-006h]                    ; 8b 5e fa
+    mov word [es:bx], ax                      ; 26 89 07
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-vbe_biosfn_set_mode_:                        ; 0xc386f LB 0x112
+vbe_biosfn_set_mode_:                        ; 0xc3781 LB 0xf7
     push si                                   ; 56
-    push di                                   ; 57
-    enter 0000ah, 000h                        ; c8 0a 00 00
+    enter 00006h, 000h                        ; c8 06 00 00
     mov si, ax                                ; 89 c6
-    mov word [bp-008h], dx                    ; 89 56 f8
-    mov ax, ss                                ; 8c d0
-    mov word [bp-00ah], ax                    ; 89 46 f6
-    test byte [bp-007h], 040h                 ; f6 46 f9 40
+    mov word [bp-006h], dx                    ; 89 56 fa
+    test byte [bp-005h], 040h                 ; f6 46 fb 40
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
-    movzx dx, al                              ; 0f b6 d0
-    mov ax, dx                                ; 89 d0
-    test dx, dx                               ; 85 d2
-    je short 03892h                           ; 74 03
-    mov dx, strict word 00040h                ; ba 40 00
-    mov byte [bp-002h], dl                    ; 88 56 fe
-    test byte [bp-007h], 080h                 ; f6 46 f9 80
-    je short 038a0h                           ; 74 05
-    mov dx, 00080h                            ; ba 80 00
-    jmp short 038a2h                          ; eb 02
-    xor dx, dx                                ; 31 d2
-    mov byte [bp-004h], dl                    ; 88 56 fc
-    and byte [bp-007h], 001h                  ; 80 66 f9 01
-    cmp word [bp-008h], 00100h                ; 81 7e f8 00 01
-    jnc short 038c6h                          ; 73 16
-    push strict byte 00000h                   ; 6a 00
-    call 005f9h                               ; e8 44 cd
-    add sp, strict byte 00002h                ; 83 c4 02
-    mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 00d85h                               ; e8 c5 d4
+    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
+    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
+    and byte [bp-005h], 001h                  ; 80 66 fb 01
+    cmp word [bp-006h], 00100h                ; 81 7e fa 00 01
+    jnc short 037cdh                          ; 73 12
+    xor ax, ax                                ; 31 c0
+    call 005f9h                               ; e8 39 ce
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    call 00fc1h                               ; e8 fa d7
     mov ax, strict word 0004fh                ; b8 4f 00
-    jmp near 03973h                           ; e9 ad 00
-    mov dx, ax                                ; 89 c2
-    mov ax, word [bp-008h]                    ; 8b 46 f8
-    call 03559h                               ; e8 8b fc
+    jmp near 03872h                           ; e9 a5 00
+    mov ax, word [bp-006h]                    ; 8b 46 fa
+    call 0348bh                               ; e8 b8 fc
     mov bx, ax                                ; 89 c3
-    mov di, ax                                ; 89 c7
+    mov cx, ax                                ; 89 c1
     test ax, ax                               ; 85 c0
-    je near 03970h                            ; 0f 84 98 00
+    je near 0386fh                            ; 0f 84 92 00
     lea dx, [bx+014h]                         ; 8d 57 14
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 58 fc
+    call 0346bh                               ; e8 85 fc
     lea dx, [bx+016h]                         ; 8d 57 16
     mov ax, 003b6h                            ; b8 b6 03
-    call 03539h                               ; e8 4f fc
+    call 0346bh                               ; e8 7c fc
     lea dx, [bx+01bh]                         ; 8d 57 1b
     mov ax, 003b6h                            ; b8 b6 03
-    call 03548h                               ; e8 55 fc
-    mov byte [bp-006h], al                    ; 88 46 fa
-    push strict byte 00000h                   ; 6a 00
-    call 005f9h                               ; e8 fe cc
-    add sp, strict byte 00002h                ; 83 c4 02
-    cmp byte [bp-006h], 004h                  ; 80 7e fa 04
-    jne short 0390ah                          ; 75 06
+    call 0347ah                               ; e8 82 fc
+    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
     mov ax, strict word 0006ah                ; b8 6a 00
-    call 00d85h                               ; e8 7b d4
-    lea dx, [di+01bh]                         ; 8d 55 1b
+    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 03548h                               ; e8 35 fc
+    call 0347ah                               ; e8 65 fc
     xor ah, ah                                ; 30 e4
-    call 03521h                               ; e8 09 fc
-    lea dx, [di+014h]                         ; 8d 55 14
+    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 03539h                               ; e8 18 fc
-    call 034f1h                               ; e8 cd fb
-    lea dx, [di+016h]                         ; 8d 55 16
+    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 03539h                               ; e8 0c fc
-    call 03509h                               ; e8 d9 fb
-    push strict byte 00000h                   ; 6a 00
-    call 00617h                               ; e8 e2 cc
-    add sp, strict byte 00002h                ; 83 c4 02
+    call 0346bh                               ; e8 38 fc
+    call 0343bh                               ; e8 05 fc
+    xor ax, ax                                ; 31 c0
+    call 00617h                               ; e8 dc cd
     mov al, byte [bp-004h]                    ; 8a 46 fc
     or AL, strict byte 001h                   ; 0c 01
@@ -6584,12 +6494,10 @@
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     or ax, dx                                 ; 09 d0
-    push ax                                   ; 50
-    call 005f9h                               ; e8 af cc
-    add sp, strict byte 00002h                ; 83 c4 02
-    call 006f3h                               ; e8 a3 cd
-    mov bx, word [bp-008h]                    ; 8b 5e f8
+    call 005f9h                               ; e8 ad cd
+    call 006f3h                               ; e8 a4 ce
+    mov bx, word [bp-006h]                    ; 8b 5e fa
     mov dx, 000bah                            ; ba ba 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 03006h                               ; e8 aa f6
+    call 02f34h                               ; e8 d9 f6
     mov al, byte [bp-004h]                    ; 8a 46 fc
     or AL, strict byte 060h                   ; 0c 60
@@ -6597,16 +6505,12 @@
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02feah                               ; e8 7d f6
-    jmp near 038c0h                           ; e9 50 ff
+    call 02f18h                               ; e8 ac f6
+    jmp near 037c7h                           ; e9 58 ff
     mov ax, 00100h                            ; b8 00 01
-    mov bx, ax                                ; 89 c3
-    mov dx, si                                ; 89 f2
-    mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 03006h                               ; e8 89 f6
+    mov word [ss:si], ax                      ; 36 89 04
     leave                                     ; c9
-    pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-vbe_biosfn_read_video_state_size_:           ; 0xc3981 LB 0x8
+vbe_biosfn_read_video_state_size_:           ; 0xc3878 LB 0x8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6614,5 +6518,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_save_video_state_:                ; 0xc3989 LB 0x58
+vbe_biosfn_save_video_state_:                ; 0xc3880 LB 0x58
     push bx                                   ; 53
     push cx                                   ; 51
@@ -6631,15 +6535,15 @@
     mov dx, cx                                ; 89 ca
     mov ax, di                                ; 89 f8
-    call 03006h                               ; e8 5a f6
+    call 02f34h                               ; e8 91 f6
     inc cx                                    ; 41
     inc cx                                    ; 41
     test byte [bp-002h], 001h                 ; f6 46 fe 01
-    je short 039dbh                           ; 74 27
+    je short 038d2h                           ; 74 27
     mov si, strict word 00001h                ; be 01 00
-    jmp short 039beh                          ; eb 05
+    jmp short 038b5h                          ; eb 05
     cmp si, strict byte 00009h                ; 83 fe 09
-    jnbe short 039dbh                         ; 77 1d
+    jnbe short 038d2h                         ; 77 1d
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 039d8h                           ; 74 15
+    je short 038cfh                           ; 74 15
     mov ax, si                                ; 89 f0
     mov dx, 001ceh                            ; ba ce 01
@@ -6650,9 +6554,9 @@
     mov dx, cx                                ; 89 ca
     mov ax, di                                ; 89 f8
-    call 03006h                               ; e8 30 f6
+    call 02f34h                               ; e8 67 f6
     inc cx                                    ; 41
     inc cx                                    ; 41
     inc si                                    ; 46
-    jmp short 039b9h                          ; eb de
+    jmp short 038b0h                          ; eb de
     leave                                     ; c9
     pop di                                    ; 5f
@@ -6661,5 +6565,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vbe_biosfn_restore_video_state_:             ; 0xc39e1 LB 0x98
+vbe_biosfn_restore_video_state_:             ; 0xc38d8 LB 0x98
     push bx                                   ; 53
     push cx                                   ; 51
@@ -6668,10 +6572,10 @@
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
-    call 02ff8h                               ; e8 09 f6
+    call 02f26h                               ; e8 40 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 03a0ah                          ; 75 10
+    jne short 03901h                          ; 75 10
     mov ax, strict word 00004h                ; b8 04 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6680,5 +6584,5 @@
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
-    jmp short 03a74h                          ; eb 6a
+    jmp short 0396bh                          ; eb 6a
     mov ax, strict word 00001h                ; b8 01 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6686,5 +6590,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02ff8h                               ; e8 e0 f5
+    call 02f26h                               ; e8 17 f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6696,5 +6600,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02ff8h                               ; e8 cc f5
+    call 02f26h                               ; e8 03 f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6706,5 +6610,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02ff8h                               ; e8 b8 f5
+    call 02f26h                               ; e8 ef f5
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6718,7 +6622,7 @@
     out DX, ax                                ; ef
     mov si, strict word 00005h                ; be 05 00
-    jmp short 03a5eh                          ; eb 05
+    jmp short 03955h                          ; eb 05
     cmp si, strict byte 00009h                ; 83 fe 09
-    jnbe short 03a74h                         ; 77 16
+    jnbe short 0396bh                         ; 77 16
     mov ax, si                                ; 89 f0
     mov dx, 001ceh                            ; ba ce 01
@@ -6726,5 +6630,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02ff8h                               ; e8 8d f5
+    call 02f26h                               ; e8 c4 f5
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6732,5 +6636,5 @@
     inc bx                                    ; 43
     inc si                                    ; 46
-    jmp short 03a59h                          ; eb e5
+    jmp short 03950h                          ; eb e5
     leave                                     ; c9
     pop si                                    ; 5e
@@ -6738,65 +6642,61 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vbe_biosfn_save_restore_state_:              ; 0xc3a79 LB 0x96
+vbe_biosfn_save_restore_state_:              ; 0xc3970 LB 0x89
     push si                                   ; 56
     push di                                   ; 57
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    push ax                                   ; 50
-    push dx                                   ; 52
-    mov ax, ss                                ; 8c d0
+    enter 00002h, 000h                        ; c8 02 00 00
     mov si, ax                                ; 89 c6
+    mov word [bp-002h], dx                    ; 89 56 fe
+    mov ax, bx                                ; 89 d8
+    mov bx, word [bp+008h]                    ; 8b 5e 08
     mov di, strict word 0004fh                ; bf 4f 00
-    xor bh, bh                                ; 30 ff
-    mov dx, bx                                ; 89 da
-    cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 03addh                           ; 74 4d
-    cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 03abeh                           ; 74 29
-    test bx, bx                               ; 85 db
-    jne short 03afch                          ; 75 63
-    mov ax, word [bp-004h]                    ; 8b 46 fc
-    call 028f4h                               ; e8 55 ee
-    mov dx, ax                                ; 89 c2
-    test byte [bp-004h], 008h                 ; f6 46 fc 08
-    je short 03aach                           ; 74 05
-    call 03981h                               ; e8 d7 fe
-    add ax, dx                                ; 01 d0
-    mov bx, ax                                ; 89 c3
-    add bx, strict byte 0003fh                ; 83 c3 3f
-    shr bx, 006h                              ; c1 eb 06
-    mov dx, word [bp+008h]                    ; 8b 56 08
-    mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 4a f5
-    jmp short 03affh                          ; eb 41
-    mov dx, word [bp+008h]                    ; 8b 56 08
-    call 02ff8h                               ; e8 34 f5
-    mov bx, ax                                ; 89 c3
-    mov dx, cx                                ; 89 ca
-    mov ax, word [bp-004h]                    ; 8b 46 fc
-    call 02932h                               ; e8 64 ee
-    test byte [bp-004h], 008h                 ; f6 46 fc 08
-    je short 03affh                           ; 74 2b
+    xor ah, ah                                ; 30 e4
+    cmp ax, strict word 00002h                ; 3d 02 00
+    je short 039cfh                           ; 74 45
+    cmp ax, strict word 00001h                ; 3d 01 00
+    je short 039b3h                           ; 74 24
+    test ax, ax                               ; 85 c0
+    jne short 039ebh                          ; 75 58
+    mov ax, word [bp-002h]                    ; 8b 46 fe
+    call 0282bh                               ; e8 92 ee
+    mov cx, ax                                ; 89 c1
+    test byte [bp-002h], 008h                 ; f6 46 fe 08
+    je short 039a6h                           ; 74 05
+    call 03878h                               ; e8 d4 fe
+    add ax, cx                                ; 01 c8
+    add ax, strict word 0003fh                ; 05 3f 00
+    shr ax, 006h                              ; c1 e8 06
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov word [es:bx], ax                      ; 26 89 07
+    jmp short 039eeh                          ; eb 3b
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov bx, word [es:bx]                      ; 26 8b 1f
+    mov dx, cx                                ; 89 ca
+    mov ax, word [bp-002h]                    ; 8b 46 fe
+    call 0285dh                               ; e8 9d ee
+    test byte [bp-002h], 008h                 ; f6 46 fe 08
+    je short 039eeh                           ; 74 28
     mov dx, ax                                ; 89 c2
     mov ax, cx                                ; 89 c8
-    call 03989h                               ; e8 ae fe
-    jmp short 03affh                          ; eb 22
-    mov dx, word [bp+008h]                    ; 8b 56 08
-    call 02ff8h                               ; e8 15 f5
-    mov bx, ax                                ; 89 c3
-    mov dx, cx                                ; 89 ca
-    mov ax, word [bp-004h]                    ; 8b 46 fc
-    call 02c97h                               ; e8 aa f1
-    test byte [bp-004h], 008h                 ; f6 46 fc 08
-    je short 03affh                           ; 74 0c
+    call 03880h                               ; e8 b3 fe
+    jmp short 039eeh                          ; eb 1f
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov bx, word [es:bx]                      ; 26 8b 1f
+    mov dx, cx                                ; 89 ca
+    mov ax, word [bp-002h]                    ; 8b 46 fe
+    call 02bc2h                               ; e8 e6 f1
+    test byte [bp-002h], 008h                 ; f6 46 fe 08
+    je short 039eeh                           ; 74 0c
     mov dx, ax                                ; 89 c2
     mov ax, cx                                ; 89 c8
-    call 039e1h                               ; e8 e7 fe
-    jmp short 03affh                          ; eb 03
+    call 038d8h                               ; e8 ef fe
+    jmp short 039eeh                          ; eb 03
     mov di, 00100h                            ; bf 00 01
-    mov bx, di                                ; 89 fb
-    mov dx, word [bp-002h]                    ; 8b 56 fe
-    mov ax, si                                ; 89 f0
-    call 03006h                               ; e8 fd f4
+    push SS                                   ; 16
+    pop ES                                    ; 07
+    mov word [es:si], di                      ; 26 89 3c
     leave                                     ; c9
     pop di                                    ; 5f
@@ -6804,6 +6704,6 @@
     retn 00002h                               ; c2 02 00
 
-  ; Padding 0xaf1 bytes at 0xc3b0f
-  times 2801 db 0
+  ; Padding 0xc07 bytes at 0xc39f9
+  times 3079 db 0
 
 section VBE32 progbits vstart=0x4600 align=1 ; size=0x111 class=CODE group=AUTO
@@ -6815,7 +6715,7 @@
     add dh, cl                                ; 00 ce
     add di, cx                                ; 01 cf
-    add di, cx                                ; 01 cf
-    add ax, dx                                ; 01 d0
-    add di, di                                ; 01 ff
+    add word [bp-048fdh], si                  ; 01 b6 03 b7
+    db  003h, 0ffh
+    ; add di, di                                ; 03 ff
     db  0ffh
     db  0ffh
@@ -7855,3 +7755,3 @@
     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, 093h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 041h
Index: /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum	(revision 42453)
+++ /trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum	(revision 42454)
@@ -1,1 +1,1 @@
-8c47720e81b0539a2ed49f2c09bf2174 *VBoxVgaBios.rom
+3cbb45d118bbb62f3fe41ea02ab546cd *VBoxVgaBios.rom
