VirtualBox

Changeset 42454 in vbox


Ignore:
Timestamp:
Jul 30, 2012 3:55:42 PM (12 years ago)
Author:
vboxsync
Message:

VGA bios: update alternative

Location:
trunk/src/VBox/Devices/Graphics/BIOS-new
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.asm

    r42147 r42454  
    120120;  #include "vgabios.h"
    121121;  #include <inttypes.h>
    122 ;  #include <VBox/version.h>
    123122
    124123;
     
    247246    mov bx, 0c000h                            ; bb 00 c0
    248247    mov ds, bx                                ; 8e db
    249     call 0312eh                               ; e8 3e 30
     248    call 0305ch                               ; e8 6c 2f
    250249    popaw                                     ; 61
    251250    pop DS                                    ; 1f
     
    10291028    pop dx                                    ; 5a
    10301029    retn                                      ; c3
    1031 _dispi_set_enable:                           ; 0xc05f9 LB 0x1e
     1030dispi_set_enable_:                           ; 0xc05f9 LB 0x1e
    10321031    push dx                                   ; 52
    10331032    push ax                                   ; 50
     
    10481047    pop dx                                    ; 5a
    10491048    retn                                      ; c3
    1050 _dispi_set_bank:                             ; 0xc0617 LB 0x1e
     1049dispi_set_bank_:                             ; 0xc0617 LB 0x1e
    10511050    push dx                                   ; 52
    10521051    push ax                                   ; 50
     
    15491548  times 109 db 0
    15501549
    1551 section _TEXT progbits vstart=0xa00 align=1 ; size=0x310f class=CODE group=AUTO
     1550section _TEXT progbits vstart=0xa00 align=1 ; size=0x2ff9 class=CODE group=AUTO
    15521551set_int_vector_:                             ; 0xc0a00 LB 0x1a
    15531552    push bx                                   ; 53
     
    15771576    out DX, AL                                ; ee
    15781577    push 04800h                               ; 68 00 48
    1579     call 03014h                               ; e8 de 25
     1578    call 02f54h                               ; e8 1e 25
    15801579    add sp, strict byte 00002h                ; 83 c4 02
    15811580    pop bp                                    ; 5d
     
    16151614    pop bp                                    ; 5d
    16161615    retf                                      ; cb
    1617 biosfn_perform_gray_scale_summing_:          ; 0xc0a8c LB 0x88
     1616vga_get_cursor_pos_:                         ; 0xc0a8c LB 0x40
     1617    push cx                                   ; 51
     1618    push si                                   ; 56
     1619    push bp                                   ; 55
     1620    mov bp, sp                                ; 89 e5
     1621    mov cl, al                                ; 88 c1
     1622    mov si, dx                                ; 89 d6
     1623    cmp AL, strict byte 007h                  ; 3c 07
     1624    jbe short 00aa7h                          ; 76 0e
     1625    push SS                                   ; 16
     1626    pop ES                                    ; 07
     1627    mov word [es:si], strict word 00000h      ; 26 c7 04 00 00
     1628    mov word [es:bx], strict word 00000h      ; 26 c7 07 00 00
     1629    jmp short 00ac8h                          ; eb 21
     1630    mov dx, strict word 00060h                ; ba 60 00
     1631    mov ax, strict word 00040h                ; b8 40 00
     1632    call 02f26h                               ; e8 76 24
     1633    push SS                                   ; 16
     1634    pop ES                                    ; 07
     1635    mov word [es:si], ax                      ; 26 89 04
     1636    movzx dx, cl                              ; 0f b6 d1
     1637    add dx, dx                                ; 01 d2
     1638    add dx, strict byte 00050h                ; 83 c2 50
     1639    mov ax, strict word 00040h                ; b8 40 00
     1640    call 02f26h                               ; e8 63 24
     1641    push SS                                   ; 16
     1642    pop ES                                    ; 07
     1643    mov word [es:bx], ax                      ; 26 89 07
     1644    pop bp                                    ; 5d
     1645    pop si                                    ; 5e
     1646    pop cx                                    ; 59
     1647    retn                                      ; c3
     1648vga_read_char_attr_:                         ; 0xc0acc LB 0xa3
     1649    push bx                                   ; 53
     1650    push cx                                   ; 51
     1651    push si                                   ; 56
     1652    push di                                   ; 57
     1653    enter 00008h, 000h                        ; c8 08 00 00
     1654    mov cl, al                                ; 88 c1
     1655    mov si, dx                                ; 89 d6
     1656    mov dx, strict word 00049h                ; ba 49 00
     1657    mov ax, strict word 00040h                ; b8 40 00
     1658    call 02f0ah                               ; e8 29 24
     1659    xor ah, ah                                ; 30 e4
     1660    call 02ee3h                               ; e8 fd 23
     1661    mov ch, al                                ; 88 c5
     1662    cmp AL, strict byte 0ffh                  ; 3c ff
     1663    je short 00b59h                           ; 74 6d
     1664    movzx ax, cl                              ; 0f b6 c1
     1665    lea bx, [bp-008h]                         ; 8d 5e f8
     1666    lea dx, [bp-006h]                         ; 8d 56 fa
     1667    call 00a8ch                               ; e8 94 ff
     1668    mov al, byte [bp-008h]                    ; 8a 46 f8
     1669    mov byte [bp-002h], al                    ; 88 46 fe
     1670    mov ax, word [bp-008h]                    ; 8b 46 f8
     1671    xor al, al                                ; 30 c0
     1672    shr ax, 008h                              ; c1 e8 08
     1673    mov word [bp-004h], ax                    ; 89 46 fc
     1674    mov dx, 00084h                            ; ba 84 00
     1675    mov ax, strict word 00040h                ; b8 40 00
     1676    call 02f0ah                               ; e8 f8 23
     1677    movzx di, al                              ; 0f b6 f8
     1678    inc di                                    ; 47
     1679    mov dx, strict word 0004ah                ; ba 4a 00
     1680    mov ax, strict word 00040h                ; b8 40 00
     1681    call 02f26h                               ; e8 07 24
     1682    movzx bx, ch                              ; 0f b6 dd
     1683    sal bx, 003h                              ; c1 e3 03
     1684    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     1685    jne short 00b59h                          ; 75 2d
     1686    mov dx, ax                                ; 89 c2
     1687    imul dx, di                               ; 0f af d7
     1688    add dx, dx                                ; 01 d2
     1689    or dl, 0ffh                               ; 80 ca ff
     1690    xor ch, ch                                ; 30 ed
     1691    inc dx                                    ; 42
     1692    imul cx, dx                               ; 0f af ca
     1693    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     1694    imul dx, ax                               ; 0f af d0
     1695    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     1696    add ax, dx                                ; 01 d0
     1697    add ax, ax                                ; 01 c0
     1698    mov dx, cx                                ; 89 ca
     1699    add dx, ax                                ; 01 c2
     1700    mov ax, word [bx+04833h]                  ; 8b 87 33 48
     1701    call 02f26h                               ; e8 d0 23
     1702    mov word [ss:si], ax                      ; 36 89 04
     1703    leave                                     ; c9
     1704    pop di                                    ; 5f
     1705    pop si                                    ; 5e
     1706    pop cx                                    ; 59
     1707    pop bx                                    ; 5b
     1708    retn                                      ; c3
     1709    mov cl, byte [bp+di]                      ; 8a 0b
     1710    db  0c6h, 00bh, 0cbh
     1711    ; mov byte [bp+di], 0cbh                    ; c6 0b cb
     1712    db  00bh, 0d3h
     1713    ; or dx, bx                                 ; 0b d3
     1714    db  00bh, 0d8h
     1715    ; or bx, ax                                 ; 0b d8
     1716    db  00bh, 0ddh
     1717    ; or bx, bp                                 ; 0b dd
     1718    db  00bh, 0e2h
     1719    ; or sp, dx                                 ; 0b e2
     1720    db  00bh, 0e7h
     1721    ; or sp, di                                 ; 0b e7
     1722    db  00bh
     1723vga_get_font_info_:                          ; 0xc0b6f LB 0x7f
     1724    push si                                   ; 56
     1725    push di                                   ; 57
     1726    enter 00002h, 000h                        ; c8 02 00 00
     1727    mov si, dx                                ; 89 d6
     1728    mov word [bp-002h], bx                    ; 89 5e fe
     1729    mov bx, cx                                ; 89 cb
     1730    cmp ax, strict word 00007h                ; 3d 07 00
     1731    jnbe short 00bc0h                         ; 77 3f
     1732    mov di, ax                                ; 89 c7
     1733    add di, ax                                ; 01 c7
     1734    jmp word [cs:di+00b5fh]                   ; 2e ff a5 5f 0b
     1735    mov dx, strict word 0007ch                ; ba 7c 00
     1736    xor ax, ax                                ; 31 c0
     1737    call 02f42h                               ; e8 b0 23
     1738    push SS                                   ; 16
     1739    pop ES                                    ; 07
     1740    mov di, word [bp-002h]                    ; 8b 7e fe
     1741    mov word [es:di], ax                      ; 26 89 05
     1742    mov word [es:si], dx                      ; 26 89 14
     1743    mov dx, 00085h                            ; ba 85 00
     1744    mov ax, strict word 00040h                ; b8 40 00
     1745    call 02f0ah                               ; e8 64 23
     1746    xor ah, ah                                ; 30 e4
     1747    push SS                                   ; 16
     1748    pop ES                                    ; 07
     1749    mov word [es:bx], ax                      ; 26 89 07
     1750    mov dx, 00084h                            ; ba 84 00
     1751    mov ax, strict word 00040h                ; b8 40 00
     1752    call 02f0ah                               ; e8 54 23
     1753    xor ah, ah                                ; 30 e4
     1754    push SS                                   ; 16
     1755    pop ES                                    ; 07
     1756    mov bx, word [bp+008h]                    ; 8b 5e 08
     1757    mov word [es:bx], ax                      ; 26 89 07
     1758    leave                                     ; c9
     1759    pop di                                    ; 5f
     1760    pop si                                    ; 5e
     1761    retn 00002h                               ; c2 02 00
     1762    mov dx, 0010ch                            ; ba 0c 01
     1763    jmp short 00b8dh                          ; eb c2
     1764    mov ax, 05dafh                            ; b8 af 5d
     1765    mov dx, 0c000h                            ; ba 00 c0
     1766    jmp short 00b92h                          ; eb bf
     1767    mov ax, 055afh                            ; b8 af 55
     1768    jmp short 00bceh                          ; eb f6
     1769    mov ax, 059afh                            ; b8 af 59
     1770    jmp short 00bceh                          ; eb f1
     1771    mov ax, 07bafh                            ; b8 af 7b
     1772    jmp short 00bceh                          ; eb ec
     1773    mov ax, 06bafh                            ; b8 af 6b
     1774    jmp short 00bceh                          ; eb e7
     1775    mov ax, 07cdch                            ; b8 dc 7c
     1776    jmp short 00bceh                          ; eb e2
     1777    jmp short 00bc0h                          ; eb d2
     1778vga_read_pixel_:                             ; 0xc0bee LB 0x134
     1779    push si                                   ; 56
     1780    push di                                   ; 57
     1781    enter 00006h, 000h                        ; c8 06 00 00
     1782    mov si, dx                                ; 89 d6
     1783    mov word [bp-006h], bx                    ; 89 5e fa
     1784    mov di, cx                                ; 89 cf
     1785    mov dx, strict word 00049h                ; ba 49 00
     1786    mov ax, strict word 00040h                ; b8 40 00
     1787    call 02f0ah                               ; e8 06 23
     1788    xor ah, ah                                ; 30 e4
     1789    call 02ee3h                               ; e8 da 22
     1790    mov cl, al                                ; 88 c1
     1791    cmp AL, strict byte 0ffh                  ; 3c ff
     1792    je near 00d1eh                            ; 0f 84 0d 01
     1793    movzx bx, al                              ; 0f b6 d8
     1794    sal bx, 003h                              ; c1 e3 03
     1795    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     1796    je near 00d1eh                            ; 0f 84 fe 00
     1797    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
     1798    cmp bl, 003h                              ; 80 fb 03
     1799    jc short 00c3ah                           ; 72 11
     1800    jbe short 00c42h                          ; 76 17
     1801    cmp bl, 005h                              ; 80 fb 05
     1802    je near 00cfbh                            ; 0f 84 c9 00
     1803    cmp bl, 004h                              ; 80 fb 04
     1804    je short 00c42h                           ; 74 0b
     1805    jmp near 00d19h                           ; e9 df 00
     1806    cmp bl, 002h                              ; 80 fb 02
     1807    je short 00c9ah                           ; 74 5b
     1808    jmp near 00d19h                           ; e9 d7 00
     1809    mov dx, strict word 0004ah                ; ba 4a 00
     1810    mov ax, strict word 00040h                ; b8 40 00
     1811    call 02f26h                               ; e8 db 22
     1812    imul ax, word [bp-006h]                   ; 0f af 46 fa
     1813    mov bx, si                                ; 89 f3
     1814    shr bx, 003h                              ; c1 eb 03
     1815    add bx, ax                                ; 01 c3
     1816    mov cx, si                                ; 89 f1
     1817    and cx, strict byte 00007h                ; 83 e1 07
     1818    mov ax, 00080h                            ; b8 80 00
     1819    sar ax, CL                                ; d3 f8
     1820    mov byte [bp-004h], al                    ; 88 46 fc
     1821    mov byte [bp-002h], ch                    ; 88 6e fe
     1822    jmp short 00c70h                          ; eb 08
     1823    cmp byte [bp-002h], 004h                  ; 80 7e fe 04
     1824    jnc near 00d1bh                           ; 0f 83 ab 00
     1825    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     1826    sal ax, 008h                              ; c1 e0 08
     1827    or AL, strict byte 004h                   ; 0c 04
     1828    mov dx, 003ceh                            ; ba ce 03
     1829    out DX, ax                                ; ef
     1830    mov dx, bx                                ; 89 da
     1831    mov ax, 0a000h                            ; b8 00 a0
     1832    call 02f0ah                               ; e8 85 22
     1833    and al, byte [bp-004h]                    ; 22 46 fc
     1834    test al, al                               ; 84 c0
     1835    jbe short 00c95h                          ; 76 09
     1836    mov cl, byte [bp-002h]                    ; 8a 4e fe
     1837    mov AL, strict byte 001h                  ; b0 01
     1838    sal al, CL                                ; d2 e0
     1839    or ch, al                                 ; 08 c5
     1840    inc byte [bp-002h]                        ; fe 46 fe
     1841    jmp short 00c68h                          ; eb ce
     1842    mov ax, word [bp-006h]                    ; 8b 46 fa
     1843    shr ax, 1                                 ; d1 e8
     1844    imul ax, ax, strict byte 00050h           ; 6b c0 50
     1845    mov bx, si                                ; 89 f3
     1846    shr bx, 002h                              ; c1 eb 02
     1847    add bx, ax                                ; 01 c3
     1848    test byte [bp-006h], 001h                 ; f6 46 fa 01
     1849    je short 00cb2h                           ; 74 03
     1850    add bh, 020h                              ; 80 c7 20
     1851    mov dx, bx                                ; 89 da
     1852    mov ax, 0b800h                            ; b8 00 b8
     1853    call 02f0ah                               ; e8 50 22
     1854    movzx bx, cl                              ; 0f b6 d9
     1855    sal bx, 003h                              ; c1 e3 03
     1856    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
     1857    jne short 00ce2h                          ; 75 1b
     1858    mov cx, si                                ; 89 f1
     1859    xor ch, ch                                ; 30 ed
     1860    and cl, 003h                              ; 80 e1 03
     1861    mov bx, strict word 00003h                ; bb 03 00
     1862    sub bx, cx                                ; 29 cb
     1863    mov cx, bx                                ; 89 d9
     1864    add cx, bx                                ; 01 d9
     1865    xor ah, ah                                ; 30 e4
     1866    sar ax, CL                                ; d3 f8
     1867    mov ch, al                                ; 88 c5
     1868    and ch, 003h                              ; 80 e5 03
     1869    jmp short 00d1bh                          ; eb 39
     1870    mov cx, si                                ; 89 f1
     1871    xor ch, ch                                ; 30 ed
     1872    and cl, 007h                              ; 80 e1 07
     1873    mov bx, strict word 00007h                ; bb 07 00
     1874    sub bx, cx                                ; 29 cb
     1875    mov cx, bx                                ; 89 d9
     1876    xor ah, ah                                ; 30 e4
     1877    sar ax, CL                                ; d3 f8
     1878    mov ch, al                                ; 88 c5
     1879    and ch, 001h                              ; 80 e5 01
     1880    jmp short 00d1bh                          ; eb 20
     1881    mov dx, strict word 0004ah                ; ba 4a 00
     1882    mov ax, strict word 00040h                ; b8 40 00
     1883    call 02f26h                               ; e8 22 22
     1884    sal ax, 003h                              ; c1 e0 03
     1885    imul ax, word [bp-006h]                   ; 0f af 46 fa
     1886    mov dx, si                                ; 89 f2
     1887    add dx, ax                                ; 01 c2
     1888    mov ax, 0a000h                            ; b8 00 a0
     1889    call 02f0ah                               ; e8 f5 21
     1890    mov ch, al                                ; 88 c5
     1891    jmp short 00d1bh                          ; eb 02
     1892    xor ch, ch                                ; 30 ed
     1893    mov byte [ss:di], ch                      ; 36 88 2d
     1894    leave                                     ; c9
     1895    pop di                                    ; 5f
     1896    pop si                                    ; 5e
     1897    retn                                      ; c3
     1898biosfn_perform_gray_scale_summing_:          ; 0xc0d22 LB 0x88
    16181899    push bx                                   ; 53
    16191900    push cx                                   ; 51
     
    16321913    xor si, si                                ; 31 f6
    16331914    cmp si, di                                ; 39 fe
    1634     jnc short 00afch                          ; 73 52
     1915    jnc short 00d92h                          ; 73 52
    16351916    mov al, bl                                ; 88 d8
    16361917    mov dx, 003c7h                            ; ba c7 03
     
    16601941    sar cx, 008h                              ; c1 f9 08
    16611942    cmp cx, strict byte 0003fh                ; 83 f9 3f
    1662     jbe short 00aeah                          ; 76 03
     1943    jbe short 00d80h                          ; 76 03
    16631944    mov cx, strict word 0003fh                ; b9 3f 00
    16641945    mov al, bl                                ; 88 d8
     
    16721953    inc bx                                    ; 43
    16731954    inc si                                    ; 46
    1674     jmp short 00aa6h                          ; eb aa
     1955    jmp short 00d3ch                          ; eb aa
    16751956    mov dx, 003dah                            ; ba da 03
    16761957    in AL, DX                                 ; ec
     
    16901971    pop bx                                    ; 5b
    16911972    retn                                      ; c3
    1692 biosfn_set_cursor_shape_:                    ; 0xc0b14 LB 0xa1
     1973biosfn_set_cursor_shape_:                    ; 0xc0daa LB 0xa1
    16931974    push bx                                   ; 53
    16941975    push cx                                   ; 51
     
    17081989    mov dx, strict word 00060h                ; ba 60 00
    17091990    mov ax, strict word 00040h                ; b8 40 00
    1710     call 03006h                               ; e8 cb 24
     1991    call 02f34h                               ; e8 63 21
    17111992    mov dx, 00089h                            ; ba 89 00
    17121993    mov ax, strict word 00040h                ; b8 40 00
    1713     call 02fdch                               ; e8 98 24
     1994    call 02f0ah                               ; e8 30 21
    17141995    mov bl, al                                ; 88 c3
    17151996    mov dx, 00085h                            ; ba 85 00
    17161997    mov ax, strict word 00040h                ; b8 40 00
    1717     call 02ff8h                               ; e8 a9 24
     1998    call 02f26h                               ; e8 41 21
    17181999    mov dx, ax                                ; 89 c2
    17192000    test bl, 001h                             ; f6 c3 01
    1720     je short 00b8dh                           ; 74 37
     2001    je short 00e23h                           ; 74 37
    17212002    cmp ax, strict word 00008h                ; 3d 08 00
    1722     jbe short 00b8dh                          ; 76 32
     2003    jbe short 00e23h                          ; 76 32
    17232004    cmp cl, 008h                              ; 80 f9 08
    1724     jnc short 00b8dh                          ; 73 2d
     2005    jnc short 00e23h                          ; 73 2d
    17252006    cmp ch, 020h                              ; 80 fd 20
    1726     jnc short 00b8dh                          ; 73 28
     2007    jnc short 00e23h                          ; 73 28
    17272008    inc di                                    ; 47
    17282009    cmp si, di                                ; 39 fe
    1729     je short 00b73h                           ; 74 09
     2010    je short 00e09h                           ; 74 09
    17302011    imul ax, di                               ; 0f af c7
    17312012    shr ax, 003h                              ; c1 e8 03
    17322013    dec ax                                    ; 48
    1733     jmp short 00b7eh                          ; eb 0b
     2014    jmp short 00e14h                          ; eb 0b
    17342015    lea si, [di+001h]                         ; 8d 75 01
    17352016    imul ax, si                               ; 0f af c6
     
    17462027    mov dx, strict word 00063h                ; ba 63 00
    17472028    mov ax, strict word 00040h                ; b8 40 00
    1748     call 02ff8h                               ; e8 62 24
     2029    call 02f26h                               ; e8 fa 20
    17492030    mov bx, ax                                ; 89 c3
    17502031    mov AL, strict byte 00ah                  ; b0 0a
     
    17672048    pop bx                                    ; 5b
    17682049    retn                                      ; c3
    1769 biosfn_set_cursor_pos_:                      ; 0xc0bb5 LB 0x9e
     2050biosfn_set_cursor_pos_:                      ; 0xc0e4b LB 0x9e
    17702051    push bx                                   ; 53
    17712052    push cx                                   ; 51
     
    17752056    mov cx, dx                                ; 89 d1
    17762057    cmp AL, strict byte 007h                  ; 3c 07
    1777     jnbe near 00c4eh                          ; 0f 87 87 00
     2058    jnbe near 00ee4h                          ; 0f 87 87 00
    17782059    movzx dx, al                              ; 0f b6 d0
    17792060    add dx, dx                                ; 01 d2
     
    17812062    mov bx, cx                                ; 89 cb
    17822063    mov ax, strict word 00040h                ; b8 40 00
    1783     call 03006h                               ; e8 2f 24
     2064    call 02f34h                               ; e8 c7 20
    17842065    mov dx, strict word 00062h                ; ba 62 00
    17852066    mov ax, strict word 00040h                ; b8 40 00
    1786     call 02fdch                               ; e8 fc 23
     2067    call 02f0ah                               ; e8 94 20
    17872068    cmp al, byte [bp-002h]                    ; 3a 46 fe
    1788     jne short 00c4eh                          ; 75 69
     2069    jne short 00ee4h                          ; 75 69
    17892070    mov dx, strict word 0004ah                ; ba 4a 00
    17902071    mov ax, strict word 00040h                ; b8 40 00
    1791     call 02ff8h                               ; e8 0a 24
     2072    call 02f26h                               ; e8 a2 20
    17922073    mov bx, ax                                ; 89 c3
    17932074    mov dx, 00084h                            ; ba 84 00
    17942075    mov ax, strict word 00040h                ; b8 40 00
    1795     call 02fdch                               ; e8 e3 23
     2076    call 02f0ah                               ; e8 7b 20
    17962077    xor ah, ah                                ; 30 e4
    17972078    mov dx, ax                                ; 89 c2
     
    18132094    mov dx, strict word 00063h                ; ba 63 00
    18142095    mov ax, strict word 00040h                ; b8 40 00
    1815     call 02ff8h                               ; e8 cc 23
     2096    call 02f26h                               ; e8 64 20
    18162097    mov bx, ax                                ; 89 c3
    18172098    mov AL, strict byte 00eh                  ; b0 0e
     
    18362117    pop bx                                    ; 5b
    18372118    retn                                      ; c3
    1838 biosfn_get_cursor_pos_:                      ; 0xc0c53 LB 0x55
    1839     push cx                                   ; 51
    1840     push si                                   ; 56
    1841     push di                                   ; 57
    1842     enter 00002h, 000h                        ; c8 02 00 00
    1843     mov byte [bp-002h], al                    ; 88 46 fe
    1844     mov si, dx                                ; 89 d6
    1845     mov di, bx                                ; 89 df
    1846     mov ax, ss                                ; 8c d0
    1847     mov cx, ax                                ; 89 c1
    1848     xor bx, bx                                ; 31 db
    1849     call 03006h                               ; e8 9c 23
    1850     xor bx, bx                                ; 31 db
    1851     mov dx, di                                ; 89 fa
    1852     mov ax, cx                                ; 89 c8
    1853     call 03006h                               ; e8 93 23
    1854     cmp byte [bp-002h], 007h                  ; 80 7e fe 07
    1855     jnbe short 00ca3h                         ; 77 2a
    1856     mov dx, strict word 00060h                ; ba 60 00
    1857     mov ax, strict word 00040h                ; b8 40 00
    1858     call 02ff8h                               ; e8 76 23
    1859     mov bx, ax                                ; 89 c3
    1860     mov dx, si                                ; 89 f2
    1861     mov ax, cx                                ; 89 c8
    1862     call 03006h                               ; e8 7b 23
    1863     movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
    1864     add dx, dx                                ; 01 d2
    1865     add dx, strict byte 00050h                ; 83 c2 50
    1866     mov ax, strict word 00040h                ; b8 40 00
    1867     call 02ff8h                               ; e8 5e 23
    1868     mov bx, ax                                ; 89 c3
    1869     mov dx, di                                ; 89 fa
    1870     mov ax, cx                                ; 89 c8
    1871     call 03006h                               ; e8 63 23
    1872     leave                                     ; c9
    1873     pop di                                    ; 5f
    1874     pop si                                    ; 5e
    1875     pop cx                                    ; 59
    1876     retn                                      ; c3
    1877 biosfn_set_active_page_:                     ; 0xc0ca8 LB 0xdd
     2119biosfn_set_active_page_:                     ; 0xc0ee9 LB 0xd8
    18782120    push bx                                   ; 53
    18792121    push cx                                   ; 51
     
    18812123    push si                                   ; 56
    18822124    push di                                   ; 57
    1883     enter 00006h, 000h                        ; c8 06 00 00
    1884     mov byte [bp-002h], al                    ; 88 46 fe
     2125    enter 00004h, 000h                        ; c8 04 00 00
     2126    mov cl, al                                ; 88 c1
    18852127    cmp AL, strict byte 007h                  ; 3c 07
    1886     jnbe near 00d7eh                          ; 0f 87 c4 00
     2128    jnbe near 00fbah                          ; 0f 87 c0 00
    18872129    mov dx, strict word 00049h                ; ba 49 00
    18882130    mov ax, strict word 00040h                ; b8 40 00
    1889     call 02fdch                               ; e8 19 23
     2131    call 02f0ah                               ; e8 07 20
    18902132    xor ah, ah                                ; 30 e4
    1891     call 02fb5h                               ; e8 ed 22
    1892     mov dl, al                                ; 88 c2
     2133    call 02ee3h                               ; e8 db 1f
     2134    mov ch, al                                ; 88 c5
    18932135    cmp AL, strict byte 0ffh                  ; 3c ff
    1894     je near 00d7eh                            ; 0f 84 ae 00
     2136    je near 00fbah                            ; 0f 84 aa 00
     2137    movzx ax, cl                              ; 0f b6 c1
    18952138    lea bx, [bp-004h]                         ; 8d 5e fc
    1896     push SS                                   ; 16
    1897     push bx                                   ; 53
    1898     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    1899     mov cx, ss                                ; 8c d1
    1900     lea bx, [bp-006h]                         ; 8d 5e fa
    1901     call 00c53h                               ; e8 72 ff
    1902     movzx bx, dl                              ; 0f b6 da
     2139    lea dx, [bp-002h]                         ; 8d 56 fe
     2140    call 00a8ch                               ; e8 70 fb
     2141    movzx bx, ch                              ; 0f b6 dd
    19032142    mov si, bx                                ; 89 de
    19042143    sal si, 003h                              ; c1 e6 03
    19052144    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    1906     jne short 00d2fh                          ; 75 3f
     2145    jne short 00f6bh                          ; 75 40
    19072146    mov dx, strict word 0004ah                ; ba 4a 00
    19082147    mov ax, strict word 00040h                ; b8 40 00
    1909     call 02ff8h                               ; e8 ff 22
    1910     mov si, ax                                ; 89 c6
     2148    call 02f26h                               ; e8 f2 1f
     2149    mov bx, ax                                ; 89 c3
    19112150    mov dx, 00084h                            ; ba 84 00
    19122151    mov ax, strict word 00040h                ; b8 40 00
    1913     call 02fdch                               ; e8 d8 22
     2152    call 02f0ah                               ; e8 cb 1f
    19142153    xor ah, ah                                ; 30 e4
    19152154    inc ax                                    ; 40
     2155    mov si, bx                                ; 89 de
    19162156    imul si, ax                               ; 0f af f0
    19172157    mov ax, si                                ; 89 f0
    19182158    add ax, si                                ; 01 f0
    19192159    or AL, strict byte 0ffh                   ; 0c ff
    1920     movzx di, byte [bp-002h]                  ; 0f b6 7e fe
     2160    movzx di, cl                              ; 0f b6 f9
    19212161    mov bx, ax                                ; 89 c3
    19222162    inc bx                                    ; 43
     
    19242164    mov dx, strict word 0004eh                ; ba 4e 00
    19252165    mov ax, strict word 00040h                ; b8 40 00
    1926     call 03006h                               ; e8 e3 22
     2166    call 02f34h                               ; e8 d5 1f
    19272167    or si, 000ffh                             ; 81 ce ff 00
    1928     lea cx, [si+001h]                         ; 8d 4c 01
    1929     imul cx, di                               ; 0f af cf
    1930     jmp short 00d40h                          ; eb 11
     2168    lea bx, [si+001h]                         ; 8d 5c 01
     2169    imul bx, di                               ; 0f af df
     2170    jmp short 00f7dh                          ; eb 12
    19312171    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
    19322172    sal bx, 006h                              ; c1 e3 06
    1933     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    1934     imul cx, word [bx+048c6h]                 ; 0f af 8f c6 48
     2173    movzx ax, cl                              ; 0f b6 c1
     2174    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
     2175    imul bx, ax                               ; 0f af d8
    19352176    mov dx, strict word 00063h                ; ba 63 00
    19362177    mov ax, strict word 00040h                ; b8 40 00
    1937     call 02ff8h                               ; e8 af 22
    1938     mov bx, ax                                ; 89 c3
     2178    call 02f26h                               ; e8 a0 1f
     2179    mov si, ax                                ; 89 c6
    19392180    mov AL, strict byte 00ch                  ; b0 0c
    1940     mov dx, bx                                ; 89 da
    1941     out DX, AL                                ; ee
    1942     mov ax, cx                                ; 89 c8
    1943     xor al, cl                                ; 30 c8
     2181    mov dx, si                                ; 89 f2
     2182    out DX, AL                                ; ee
     2183    mov ax, bx                                ; 89 d8
     2184    xor al, bl                                ; 30 d8
    19442185    shr ax, 008h                              ; c1 e8 08
    1945     lea si, [bx+001h]                         ; 8d 77 01
     2186    lea di, [si+001h]                         ; 8d 7c 01
     2187    mov dx, di                                ; 89 fa
     2188    out DX, AL                                ; ee
     2189    mov AL, strict byte 00dh                  ; b0 0d
    19462190    mov dx, si                                ; 89 f2
    19472191    out DX, AL                                ; ee
    1948     mov AL, strict byte 00dh                  ; b0 0d
    1949     mov dx, bx                                ; 89 da
    1950     out DX, AL                                ; ee
    1951     mov al, cl                                ; 88 c8
    1952     mov dx, si                                ; 89 f2
    1953     out DX, AL                                ; ee
    1954     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    1955     mov bx, cx                                ; 89 cb
     2192    mov al, bl                                ; 88 d8
     2193    mov dx, di                                ; 89 fa
     2194    out DX, AL                                ; ee
     2195    movzx si, cl                              ; 0f b6 f1
     2196    mov bx, si                                ; 89 f3
    19562197    mov dx, strict word 00062h                ; ba 62 00
    19572198    mov ax, strict word 00040h                ; b8 40 00
    1958     call 02feah                               ; e8 74 22
     2199    call 02f18h                               ; e8 66 1f
    19592200    mov dx, word [bp-004h]                    ; 8b 56 fc
    1960     mov ax, cx                                ; 89 c8
    1961     call 00bb5h                               ; e8 37 fe
     2201    mov ax, si                                ; 89 f0
     2202    call 00e4bh                               ; e8 91 fe
    19622203    leave                                     ; c9
    19632204    pop di                                    ; 5f
     
    19672208    pop bx                                    ; 5b
    19682209    retn                                      ; c3
    1969 biosfn_set_video_mode_:                      ; 0xc0d85 LB 0x38c
     2210biosfn_set_video_mode_:                      ; 0xc0fc1 LB 0x38c
    19702211    push bx                                   ; 53
    19712212    push cx                                   ; 51
     
    19772218    and AL, strict byte 080h                  ; 24 80
    19782219    mov byte [bp-002h], al                    ; 88 46 fe
    1979     call 007d4h                               ; e8 3b fa
     2220    call 007d4h                               ; e8 ff f7
    19802221    test ax, ax                               ; 85 c0
    1981     je short 00da9h                           ; 74 0c
     2222    je short 00fe5h                           ; 74 0c
    19822223    mov AL, strict byte 007h                  ; b0 07
    19832224    mov dx, 003c4h                            ; ba c4 03
     
    19882229    and byte [bp-008h], 07fh                  ; 80 66 f8 7f
    19892230    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1990     call 02fb5h                               ; e8 01 22
     2231    call 02ee3h                               ; e8 f3 1e
    19912232    mov byte [bp-004h], al                    ; 88 46 fc
    19922233    cmp AL, strict byte 0ffh                  ; 3c ff
    1993     je near 0110ah                            ; 0f 84 4d 03
     2234    je near 01346h                            ; 0f 84 4d 03
    19942235    movzx si, al                              ; 0f b6 f0
    19952236    mov al, byte [si+048afh]                  ; 8a 84 af 48
     
    20052246    mov dx, 00087h                            ; ba 87 00
    20062247    mov ax, strict word 00040h                ; b8 40 00
    2007     call 02fdch                               ; e8 ee 21
     2248    call 02f0ah                               ; e8 e0 1e
    20082249    mov dx, 00088h                            ; ba 88 00
    20092250    mov ax, strict word 00040h                ; b8 40 00
    2010     call 02fdch                               ; e8 e5 21
     2251    call 02f0ah                               ; e8 d7 1e
    20112252    mov dx, 00089h                            ; ba 89 00
    20122253    mov ax, strict word 00040h                ; b8 40 00
    2013     call 02fdch                               ; e8 dc 21
     2254    call 02f0ah                               ; e8 ce 1e
    20142255    mov ah, al                                ; 88 c4
    20152256    test AL, strict byte 008h                 ; a8 08
    2016     jne near 00e92h                           ; 0f 85 8a 00
     2257    jne near 010ceh                           ; 0f 85 8a 00
    20172258    mov bx, si                                ; 89 f3
    20182259    sal bx, 003h                              ; c1 e3 03
     
    20252266    mov bl, byte [bx+04836h]                  ; 8a 9f 36 48
    20262267    cmp bl, 001h                              ; 80 fb 01
    2027     jc short 00e32h                           ; 72 0e
    2028     jbe short 00e3bh                          ; 76 15
     2268    jc short 0106eh                           ; 72 0e
     2269    jbe short 01077h                          ; 76 15
    20292270    cmp bl, 003h                              ; 80 fb 03
    2030     je short 00e45h                           ; 74 1a
     2271    je short 01081h                           ; 74 1a
    20312272    cmp bl, 002h                              ; 80 fb 02
    2032     je short 00e40h                           ; 74 10
    2033     jmp short 00e48h                          ; eb 16
     2273    je short 0107ch                           ; 74 10
     2274    jmp short 01084h                          ; eb 16
    20342275    test bl, bl                               ; 84 db
    2035     jne short 00e48h                          ; 75 12
     2276    jne short 01084h                          ; 75 12
    20362277    mov di, 05043h                            ; bf 43 50
    2037     jmp short 00e48h                          ; eb 0d
     2278    jmp short 01084h                          ; eb 0d
    20382279    mov di, 05103h                            ; bf 03 51
    2039     jmp short 00e48h                          ; eb 08
     2280    jmp short 01084h                          ; eb 08
    20402281    mov di, 051c3h                            ; bf c3 51
    2041     jmp short 00e48h                          ; eb 03
     2282    jmp short 01084h                          ; eb 03
    20422283    mov di, 05283h                            ; bf 83 52
    20432284    xor bx, bx                                ; 31 db
    2044     jmp short 00e5bh                          ; eb 0f
     2285    jmp short 01097h                          ; eb 0f
    20452286    xor al, al                                ; 30 c0
    20462287    mov dx, 003c9h                            ; ba c9 03
     
    20502291    inc bx                                    ; 43
    20512292    cmp bx, 00100h                            ; 81 fb 00 01
    2052     jnc short 00e85h                          ; 73 2a
     2293    jnc short 010c1h                          ; 73 2a
    20532294    movzx si, byte [bp-004h]                  ; 0f b6 76 fc
    20542295    sal si, 003h                              ; c1 e6 03
     
    20562297    movzx dx, byte [si+048bfh]                ; 0f b6 94 bf 48
    20572298    cmp bx, dx                                ; 39 d3
    2058     jnbe short 00e4ch                         ; 77 dc
     2299    jnbe short 01088h                         ; 77 dc
    20592300    imul si, bx, strict byte 00003h           ; 6b f3 03
    20602301    add si, di                                ; 01 fe
     
    20662307    mov al, byte [si+002h]                    ; 8a 44 02
    20672308    out DX, AL                                ; ee
    2068     jmp short 00e54h                          ; eb cf
     2309    jmp short 01090h                          ; eb cf
    20692310    test ah, 002h                             ; f6 c4 02
    2070     je short 00e92h                           ; 74 08
     2311    je short 010ceh                           ; 74 08
    20712312    mov dx, 00100h                            ; ba 00 01
    20722313    xor ax, ax                                ; 31 c0
    2073     call 00a8ch                               ; e8 fa fb
     2314    call 00d22h                               ; e8 54 fc
    20742315    mov dx, 003dah                            ; ba da 03
    20752316    in AL, DX                                 ; ec
     
    20772318    ; sub ah, ah                                ; 2a e4
    20782319    xor bx, bx                                ; 31 db
    2079     jmp short 00ea1h                          ; eb 05
     2320    jmp short 010ddh                          ; eb 05
    20802321    cmp bx, strict byte 00013h                ; 83 fb 13
    2081     jnbe short 00eb8h                         ; 77 17
     2322    jnbe short 010f4h                         ; 77 17
    20822323    mov al, bl                                ; 88 d8
    20832324    mov dx, 003c0h                            ; ba c0 03
     
    20892330    out DX, AL                                ; ee
    20902331    inc bx                                    ; 43
    2091     jmp short 00e9ch                          ; eb e4
     2332    jmp short 010d8h                          ; eb e4
    20922333    mov AL, strict byte 014h                  ; b0 14
    20932334    mov dx, 003c0h                            ; ba c0 03
     
    21012342    out DX, AL                                ; ee
    21022343    mov bx, strict word 00001h                ; bb 01 00
    2103     jmp short 00ed5h                          ; eb 05
     2344    jmp short 01111h                          ; eb 05
    21042345    cmp bx, strict byte 00004h                ; 83 fb 04
    2105     jnbe short 00eefh                         ; 77 1a
     2346    jnbe short 0112bh                         ; 77 1a
    21062347    mov al, bl                                ; 88 d8
    21072348    mov dx, 003c4h                            ; ba c4 03
     
    21142355    out DX, AL                                ; ee
    21152356    inc bx                                    ; 43
    2116     jmp short 00ed0h                          ; eb e1
     2357    jmp short 0110ch                          ; eb e1
    21172358    xor bx, bx                                ; 31 db
    2118     jmp short 00ef8h                          ; eb 05
     2359    jmp short 01134h                          ; eb 05
    21192360    cmp bx, strict byte 00008h                ; 83 fb 08
    2120     jnbe short 00f12h                         ; 77 1a
     2361    jnbe short 0114eh                         ; 77 1a
    21212362    mov al, bl                                ; 88 d8
    21222363    mov dx, 003ceh                            ; ba ce 03
     
    21292370    out DX, AL                                ; ee
    21302371    inc bx                                    ; 43
    2131     jmp short 00ef3h                          ; eb e1
     2372    jmp short 0112fh                          ; eb e1
    21322373    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    21332374    sal bx, 003h                              ; c1 e3 03
    21342375    cmp byte [bx+04831h], 001h                ; 80 bf 31 48 01
    2135     jne short 00f25h                          ; 75 05
     2376    jne short 01161h                          ; 75 05
    21362377    mov dx, 003b4h                            ; ba b4 03
    2137     jmp short 00f28h                          ; eb 03
     2378    jmp short 01164h                          ; eb 03
    21382379    mov dx, 003d4h                            ; ba d4 03
    21392380    mov si, dx                                ; 89 d6
     
    21412382    out DX, ax                                ; ef
    21422383    xor bx, bx                                ; 31 db
    2143     jmp short 00f37h                          ; eb 05
     2384    jmp short 01173h                          ; eb 05
    21442385    cmp bx, strict byte 00018h                ; 83 fb 18
    2145     jnbe short 00f52h                         ; 77 1b
     2386    jnbe short 0118eh                         ; 77 1b
    21462387    mov al, bl                                ; 88 d8
    21472388    mov dx, si                                ; 89 f2
     
    21552396    out DX, AL                                ; ee
    21562397    inc bx                                    ; 43
    2157     jmp short 00f32h                          ; eb e0
     2398    jmp short 0116eh                          ; eb e0
    21582399    mov bx, cx                                ; 89 cb
    21592400    mov al, byte [bx+048cch]                  ; 8a 87 cc 48
     
    21682409    ; sub ah, ah                                ; 2a e4
    21692410    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    2170     jne short 00fcdh                          ; 75 5f
     2411    jne short 01209h                          ; 75 5f
    21712412    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    21722413    sal bx, 003h                              ; c1 e3 03
    21732414    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    2174     jne short 00f8fh                          ; 75 13
     2415    jne short 011cbh                          ; 75 13
    21752416    mov es, [bx+04833h]                       ; 8e 87 33 48
    21762417    mov cx, 04000h                            ; b9 00 40
     
    21782419    xor di, di                                ; 31 ff
    21792420    cld                                       ; fc
    2180     jcxz 00f8dh                               ; e3 02
     2421    jcxz 011c9h                               ; e3 02
    21812422    rep stosw                                 ; f3 ab
    2182     jmp short 00fcdh                          ; eb 3e
     2423    jmp short 01209h                          ; eb 3e
    21832424    cmp byte [bp-008h], 00dh                  ; 80 7e f8 0d
    2184     jnc short 00fa7h                          ; 73 12
     2425    jnc short 011e3h                          ; 73 12
    21852426    mov es, [bx+04833h]                       ; 8e 87 33 48
    21862427    mov cx, 04000h                            ; b9 00 40
     
    21882429    xor di, di                                ; 31 ff
    21892430    cld                                       ; fc
    2190     jcxz 00fa5h                               ; e3 02
     2431    jcxz 011e1h                               ; e3 02
    21912432    rep stosw                                 ; f3 ab
    2192     jmp short 00fcdh                          ; eb 26
     2433    jmp short 01209h                          ; eb 26
    21932434    mov AL, strict byte 002h                  ; b0 02
    21942435    mov dx, 003c4h                            ; ba c4 03
     
    22062447    xor di, di                                ; 31 ff
    22072448    cld                                       ; fc
    2208     jcxz 00fc9h                               ; e3 02
     2449    jcxz 01205h                               ; e3 02
    22092450    rep stosw                                 ; f3 ab
    22102451    mov al, byte [bp-010h]                    ; 8a 46 f0
     
    22132454    mov dx, strict word 00049h                ; ba 49 00
    22142455    mov ax, strict word 00040h                ; b8 40 00
    2215     call 02feah                               ; e8 10 20
     2456    call 02f18h                               ; e8 02 1d
    22162457    mov bx, word [bp-00ch]                    ; 8b 5e f4
    22172458    mov dx, strict word 0004ah                ; ba 4a 00
    22182459    mov ax, strict word 00040h                ; b8 40 00
    2219     call 03006h                               ; e8 20 20
     2460    call 02f34h                               ; e8 12 1d
    22202461    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    22212462    sal bx, 006h                              ; c1 e3 06
     
    22232464    mov dx, strict word 0004ch                ; ba 4c 00
    22242465    mov ax, strict word 00040h                ; b8 40 00
    2225     call 03006h                               ; e8 0c 20
     2466    call 02f34h                               ; e8 fe 1c
    22262467    mov bx, si                                ; 89 f3
    22272468    mov dx, strict word 00063h                ; ba 63 00
    22282469    mov ax, strict word 00040h                ; b8 40 00
    2229     call 03006h                               ; e8 01 20
     2470    call 02f34h                               ; e8 f3 1c
    22302471    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    22312472    mov dx, 00084h                            ; ba 84 00
    22322473    mov ax, strict word 00040h                ; b8 40 00
    2233     call 02feah                               ; e8 d8 1f
     2474    call 02f18h                               ; e8 ca 1c
    22342475    mov bx, word [bp-00eh]                    ; 8b 5e f2
    22352476    mov dx, 00085h                            ; ba 85 00
    22362477    mov ax, strict word 00040h                ; b8 40 00
    2237     call 03006h                               ; e8 e8 1f
     2478    call 02f34h                               ; e8 da 1c
    22382479    mov al, byte [bp-002h]                    ; 8a 46 fe
    22392480    or AL, strict byte 060h                   ; 0c 60
     
    22412482    mov dx, 00087h                            ; ba 87 00
    22422483    mov ax, strict word 00040h                ; b8 40 00
    2243     call 02feah                               ; e8 bb 1f
     2484    call 02f18h                               ; e8 ad 1c
    22442485    mov bx, 000f9h                            ; bb f9 00
    22452486    mov dx, 00088h                            ; ba 88 00
    22462487    mov ax, strict word 00040h                ; b8 40 00
    2247     call 02feah                               ; e8 af 1f
     2488    call 02f18h                               ; e8 a1 1c
    22482489    mov dx, 00089h                            ; ba 89 00
    22492490    mov ax, strict word 00040h                ; b8 40 00
    2250     call 02fdch                               ; e8 98 1f
     2491    call 02f0ah                               ; e8 8a 1c
    22512492    and AL, strict byte 07fh                  ; 24 7f
    22522493    movzx bx, al                              ; 0f b6 d8
    22532494    mov dx, 00089h                            ; ba 89 00
    22542495    mov ax, strict word 00040h                ; b8 40 00
    2255     call 02feah                               ; e8 98 1f
     2496    call 02f18h                               ; e8 8a 1c
    22562497    mov bx, strict word 00008h                ; bb 08 00
    22572498    mov dx, 0008ah                            ; ba 8a 00
    22582499    mov ax, strict word 00040h                ; b8 40 00
    2259     call 02feah                               ; e8 8c 1f
     2500    call 02f18h                               ; e8 7e 1c
    22602501    mov bx, 05593h                            ; bb 93 55
    22612502    mov dx, 000a8h                            ; ba a8 00
    22622503    mov ax, strict word 00040h                ; b8 40 00
    2263     call 03006h                               ; e8 9c 1f
     2504    call 02f34h                               ; e8 8e 1c
    22642505    mov bx, 0c000h                            ; bb 00 c0
    22652506    mov dx, 000aah                            ; ba aa 00
    22662507    mov ax, strict word 00040h                ; b8 40 00
    2267     call 03006h                               ; e8 90 1f
     2508    call 02f34h                               ; e8 82 1c
    22682509    xor bx, bx                                ; 31 db
    22692510    mov dx, strict word 00065h                ; ba 65 00
    22702511    mov ax, strict word 00040h                ; b8 40 00
    2271     call 02feah                               ; e8 69 1f
     2512    call 02f18h                               ; e8 5b 1c
    22722513    xor bx, bx                                ; 31 db
    22732514    mov dx, strict word 00066h                ; ba 66 00
    22742515    mov ax, strict word 00040h                ; b8 40 00
    2275     call 02feah                               ; e8 5e 1f
     2516    call 02f18h                               ; e8 50 1c
    22762517    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    22772518    sal bx, 003h                              ; c1 e3 03
    22782519    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    2279     jne short 010a3h                          ; 75 09
     2520    jne short 012dfh                          ; 75 09
    22802521    mov dx, strict word 00007h                ; ba 07 00
    22812522    mov ax, strict word 00006h                ; b8 06 00
    2282     call 00b14h                               ; e8 71 fa
     2523    call 00daah                               ; e8 cb fa
    22832524    xor bx, bx                                ; 31 db
    2284     jmp short 010ach                          ; eb 05
     2525    jmp short 012e8h                          ; eb 05
    22852526    cmp bx, strict byte 00008h                ; 83 fb 08
    2286     jnc short 010b7h                          ; 73 0b
     2527    jnc short 012f3h                          ; 73 0b
    22872528    movzx ax, bl                              ; 0f b6 c3
    22882529    xor dx, dx                                ; 31 d2
    2289     call 00bb5h                               ; e8 01 fb
     2530    call 00e4bh                               ; e8 5b fb
    22902531    inc bx                                    ; 43
    2291     jmp short 010a7h                          ; eb f0
     2532    jmp short 012e3h                          ; eb f0
    22922533    xor ax, ax                                ; 31 c0
    2293     call 00ca8h                               ; e8 ec fb
     2534    call 00ee9h                               ; e8 f1 fb
    22942535    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    22952536    sal bx, 003h                              ; c1 e3 03
    22962537    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    2297     jne short 010dah                          ; 75 10
     2538    jne short 01316h                          ; 75 10
    22982539    xor bl, bl                                ; 30 db
    22992540    mov AL, strict byte 004h                  ; b0 04
     
    23062547    mov dx, 059afh                            ; ba af 59
    23072548    mov ax, strict word 0001fh                ; b8 1f 00
    2308     call 00a00h                               ; e8 1d f9
     2549    call 00a00h                               ; e8 e1 f6
    23092550    mov ax, word [bp-00eh]                    ; 8b 46 f2
    23102551    cmp ax, strict word 00010h                ; 3d 10 00
    2311     je short 01105h                           ; 74 1a
     2552    je short 01341h                           ; 74 1a
    23122553    cmp ax, strict word 0000eh                ; 3d 0e 00
    2313     je short 01100h                           ; 74 10
     2554    je short 0133ch                           ; 74 10
    23142555    cmp ax, strict word 00008h                ; 3d 08 00
    2315     jne short 0110ah                          ; 75 15
     2556    jne short 01346h                          ; 75 15
    23162557    mov dx, 055afh                            ; ba af 55
    23172558    mov ax, strict word 00043h                ; b8 43 00
    2318     call 00a00h                               ; e8 02 f9
    2319     jmp short 0110ah                          ; eb 0a
     2559    call 00a00h                               ; e8 c6 f6
     2560    jmp short 01346h                          ; eb 0a
    23202561    mov dx, 05dafh                            ; ba af 5d
    2321     jmp short 010f8h                          ; eb f3
     2562    jmp short 01334h                          ; eb f3
    23222563    mov dx, 06bafh                            ; ba af 6b
    2323     jmp short 010f8h                          ; eb ee
     2564    jmp short 01334h                          ; eb ee
    23242565    leave                                     ; c9
    23252566    pop di                                    ; 5f
     
    23292570    pop bx                                    ; 5b
    23302571    retn                                      ; c3
    2331 vgamem_copy_pl4_:                            ; 0xc1111 LB 0x72
     2572vgamem_copy_pl4_:                            ; 0xc134d LB 0x72
    23322573    push si                                   ; 56
    23332574    push di                                   ; 57
     
    23522593    xor bl, bl                                ; 30 db
    23532594    cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
    2354     jnc short 01176h                          ; 73 29
     2595    jnc short 013b2h                          ; 73 29
    23552596    movzx cx, bh                              ; 0f b6 cf
    23562597    movzx si, bl                              ; 0f b6 f3
     
    23642605    mov es, dx                                ; 8e c2
    23652606    cld                                       ; fc
    2366     jcxz 01172h                               ; e3 06
     2607    jcxz 013aeh                               ; e3 06
    23672608    push DS                                   ; 1e
    23682609    mov ds, dx                                ; 8e da
     
    23712612    db  0feh, 0c3h
    23722613    ; inc bl                                    ; fe c3
    2373     jmp short 01148h                          ; eb d2
     2614    jmp short 01384h                          ; eb d2
    23742615    mov ax, strict word 00005h                ; b8 05 00
    23752616    mov dx, 003ceh                            ; ba ce 03
     
    23792620    pop si                                    ; 5e
    23802621    retn 00004h                               ; c2 04 00
    2381 vgamem_fill_pl4_:                            ; 0xc1183 LB 0x5d
     2622vgamem_fill_pl4_:                            ; 0xc13bf LB 0x5d
    23822623    push di                                   ; 57
    23832624    enter 00004h, 000h                        ; c8 04 00 00
     
    23972638    xor bl, bl                                ; 30 db
    23982639    cmp bl, byte [bp+006h]                    ; 3a 5e 06
    2399     jnc short 011d4h                          ; 73 22
     2640    jnc short 01410h                          ; 73 22
    24002641    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    24012642    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     
    24072648    mov es, dx                                ; 8e c2
    24082649    cld                                       ; fc
    2409     jcxz 011d0h                               ; e3 02
     2650    jcxz 0140ch                               ; e3 02
    24102651    rep stosb                                 ; f3 aa
    24112652    db  0feh, 0c3h
    24122653    ; inc bl                                    ; fe c3
    2413     jmp short 011adh                          ; eb d9
     2654    jmp short 013e9h                          ; eb d9
    24142655    mov ax, strict word 00005h                ; b8 05 00
    24152656    mov dx, 003ceh                            ; ba ce 03
     
    24182659    pop di                                    ; 5f
    24192660    retn 00004h                               ; c2 04 00
    2420 vgamem_copy_cga_:                            ; 0xc11e0 LB 0xa0
     2661vgamem_copy_cga_:                            ; 0xc141c LB 0xa0
    24212662    push si                                   ; 56
    24222663    push di                                   ; 57
     
    24402681    xor bl, bl                                ; 30 db
    24412682    cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
    2442     jnc short 0127ah                          ; 73 61
     2683    jnc short 014b6h                          ; 73 61
    24432684    test bl, 001h                             ; f6 c3 01
    2444     je short 0124fh                           ; 74 31
     2685    je short 0148bh                           ; 74 31
    24452686    movzx cx, bh                              ; 0f b6 cf
    24462687    movzx si, bl                              ; 0f b6 f3
     
    24572698    mov es, dx                                ; 8e c2
    24582699    cld                                       ; fc
    2459     jcxz 0124dh                               ; e3 06
     2700    jcxz 01489h                               ; e3 06
    24602701    push DS                                   ; 1e
    24612702    mov ds, dx                                ; 8e da
    24622703    rep movsb                                 ; f3 a4
    24632704    pop DS                                    ; 1f
    2464     jmp short 01276h                          ; eb 27
     2705    jmp short 014b2h                          ; eb 27
    24652706    movzx cx, bh                              ; 0f b6 cf
    24662707    movzx ax, bl                              ; 0f b6 c3
     
    24752716    mov es, dx                                ; 8e c2
    24762717    cld                                       ; fc
    2477     jcxz 01276h                               ; e3 06
     2718    jcxz 014b2h                               ; e3 06
    24782719    push DS                                   ; 1e
    24792720    mov ds, dx                                ; 8e da
     
    24822723    db  0feh, 0c3h
    24832724    ; inc bl                                    ; fe c3
    2484     jmp short 01214h                          ; eb 9a
     2725    jmp short 01450h                          ; eb 9a
    24852726    leave                                     ; c9
    24862727    pop di                                    ; 5f
    24872728    pop si                                    ; 5e
    24882729    retn 00004h                               ; c2 04 00
    2489 vgamem_fill_cga_:                            ; 0xc1280 LB 0x86
     2730vgamem_fill_cga_:                            ; 0xc14bc LB 0x86
    24902731    push si                                   ; 56
    24912732    push di                                   ; 57
     
    25032744    xor bl, bl                                ; 30 db
    25042745    cmp bl, byte [bp+008h]                    ; 3a 5e 08
    2505     jnc short 01300h                          ; 73 57
     2746    jnc short 0153ch                          ; 73 57
    25062747    test bl, 001h                             ; f6 c3 01
    2507     je short 012ddh                           ; 74 2f
     2748    je short 01519h                           ; 74 2f
    25082749    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    25092750    movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
     
    25202761    mov es, dx                                ; 8e c2
    25212762    cld                                       ; fc
    2522     jcxz 012dbh                               ; e3 02
     2763    jcxz 01517h                               ; e3 02
    25232764    rep stosb                                 ; f3 aa
    2524     jmp short 012fch                          ; eb 1f
     2765    jmp short 01538h                          ; eb 1f
    25252766    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    25262767    movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
     
    25332774    mov es, dx                                ; 8e c2
    25342775    cld                                       ; fc
    2535     jcxz 012fch                               ; e3 02
     2776    jcxz 01538h                               ; e3 02
    25362777    rep stosb                                 ; f3 aa
    25372778    db  0feh, 0c3h
    25382779    ; inc bl                                    ; fe c3
    2539     jmp short 012a4h                          ; eb a4
     2780    jmp short 014e0h                          ; eb a4
    25402781    leave                                     ; c9
    25412782    pop di                                    ; 5f
    25422783    pop si                                    ; 5e
    25432784    retn 00004h                               ; c2 04 00
    2544 biosfn_scroll_:                              ; 0xc1306 LB 0x501
     2785biosfn_scroll_:                              ; 0xc1542 LB 0x501
    25452786    push si                                   ; 56
    25462787    push di                                   ; 57
     
    25512792    mov byte [bp-002h], cl                    ; 88 4e fe
    25522793    cmp bl, byte [bp+008h]                    ; 3a 5e 08
    2553     jnbe near 01801h                          ; 0f 87 e2 04
     2794    jnbe near 01a3dh                          ; 0f 87 e2 04
    25542795    cmp cl, byte [bp+00ah]                    ; 3a 4e 0a
    2555     jnbe near 01801h                          ; 0f 87 db 04
     2796    jnbe near 01a3dh                          ; 0f 87 db 04
    25562797    mov dx, strict word 00049h                ; ba 49 00
    25572798    mov ax, strict word 00040h                ; b8 40 00
    2558     call 02fdch                               ; e8 ad 1c
     2799    call 02f0ah                               ; e8 9f 19
    25592800    xor ah, ah                                ; 30 e4
    2560     call 02fb5h                               ; e8 81 1c
     2801    call 02ee3h                               ; e8 73 19
    25612802    mov byte [bp-00ah], al                    ; 88 46 f6
    25622803    cmp AL, strict byte 0ffh                  ; 3c ff
    2563     je near 01801h                            ; 0f 84 c4 04
     2804    je near 01a3dh                            ; 0f 84 c4 04
    25642805    mov dx, 00084h                            ; ba 84 00
    25652806    mov ax, strict word 00040h                ; b8 40 00
    2566     call 02fdch                               ; e8 96 1c
     2807    call 02f0ah                               ; e8 88 19
    25672808    movzx cx, al                              ; 0f b6 c8
    25682809    inc cx                                    ; 41
    25692810    mov dx, strict word 0004ah                ; ba 4a 00
    25702811    mov ax, strict word 00040h                ; b8 40 00
    2571     call 02ff8h                               ; e8 a5 1c
     2812    call 02f26h                               ; e8 97 19
    25722813    mov word [bp-012h], ax                    ; 89 46 ee
    25732814    cmp byte [bp+00ch], 0ffh                  ; 80 7e 0c ff
    2574     jne short 01368h                          ; 75 0c
     2815    jne short 015a4h                          ; 75 0c
    25752816    mov dx, strict word 00062h                ; ba 62 00
    25762817    mov ax, strict word 00040h                ; b8 40 00
    2577     call 02fdch                               ; e8 77 1c
     2818    call 02f0ah                               ; e8 69 19
    25782819    mov byte [bp+00ch], al                    ; 88 46 0c
    25792820    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    25802821    cmp ax, cx                                ; 39 c8
    2581     jc short 01377h                           ; 72 07
     2822    jc short 015b3h                           ; 72 07
    25822823    mov al, cl                                ; 88 c8
    25832824    db  0feh, 0c8h
     
    25862827    movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
    25872828    cmp ax, word [bp-012h]                    ; 3b 46 ee
    2588     jc short 01388h                           ; 72 08
     2829    jc short 015c4h                           ; 72 08
    25892830    mov al, byte [bp-012h]                    ; 8a 46 ee
    25902831    db  0feh, 0c8h
     
    25932834    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    25942835    cmp ax, cx                                ; 39 c8
    2595     jbe short 01394h                          ; 76 04
     2836    jbe short 015d0h                          ; 76 04
    25962837    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    25972838    mov al, byte [bp+00ah]                    ; 8a 46 0a
     
    26122853    imul ax, cx                               ; 0f af c1
    26132854    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
    2614     jne near 01563h                           ; 0f 85 9f 01
     2855    jne near 0179fh                           ; 0f 85 9f 01
    26152856    mov dx, ax                                ; 89 c2
    26162857    add dx, ax                                ; 01 c2
     
    26202861    imul bx, dx                               ; 0f af da
    26212862    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2622     jne short 01413h                          ; 75 3a
     2863    jne short 0164fh                          ; 75 3a
    26232864    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2624     jne short 01413h                          ; 75 34
     2865    jne short 0164fh                          ; 75 34
    26252866    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    2626     jne short 01413h                          ; 75 2e
     2867    jne short 0164fh                          ; 75 2e
    26272868    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
    26282869    cmp dx, word [bp-016h]                    ; 3b 56 ea
    2629     jne short 01413h                          ; 75 25
     2870    jne short 0164fh                          ; 75 25
    26302871    movzx dx, byte [bp+00ah]                  ; 0f b6 56 0a
    26312872    cmp dx, word [bp-014h]                    ; 3b 56 ec
    2632     jne short 01413h                          ; 75 1c
     2873    jne short 0164fh                          ; 75 1c
    26332874    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    26342875    sal dx, 008h                              ; c1 e2 08
     
    26392880    mov di, bx                                ; 89 df
    26402881    cld                                       ; fc
    2641     jcxz 01410h                               ; e3 02
     2882    jcxz 0164ch                               ; e3 02
    26422883    rep stosw                                 ; f3 ab
    2643     jmp near 01801h                           ; e9 ee 03
     2884    jmp near 01a3dh                           ; e9 ee 03
    26442885    cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
    2645     jne near 014b8h                           ; 0f 85 9d 00
     2886    jne near 016f4h                           ; 0f 85 9d 00
    26462887    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    26472888    mov word [bp-010h], ax                    ; 89 46 f0
    26482889    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
    26492890    cmp dx, word [bp-010h]                    ; 3b 56 f0
    2650     jc near 01801h                            ; 0f 82 d4 03
     2891    jc near 01a3dh                            ; 0f 82 d4 03
    26512892    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    26522893    add ax, word [bp-010h]                    ; 03 46 f0
    26532894    cmp ax, dx                                ; 39 d0
    2654     jnbe short 0143eh                         ; 77 06
     2895    jnbe short 0167ah                         ; 77 06
    26552896    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2656     jne short 01471h                          ; 75 33
     2897    jne short 016adh                          ; 75 33
    26572898    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    26582899    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     
    26702911    mov es, [si+04833h]                       ; 8e 84 33 48
    26712912    cld                                       ; fc
    2672     jcxz 0146fh                               ; e3 02
     2913    jcxz 016abh                               ; e3 02
    26732914    rep stosw                                 ; f3 ab
    2674     jmp short 014b2h                          ; eb 41
     2915    jmp short 016eeh                          ; eb 41
    26752916    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    26762917    mov word [bp-018h], dx                    ; 89 56 e8
     
    26942935    mov es, ax                                ; 8e c0
    26952936    cld                                       ; fc
    2696     jcxz 014b2h                               ; e3 06
     2937    jcxz 016eeh                               ; e3 06
    26972938    push DS                                   ; 1e
    26982939    mov ds, dx                                ; 8e da
     
    27002941    pop DS                                    ; 1f
    27012942    inc word [bp-010h]                        ; ff 46 f0
    2702     jmp near 01422h                           ; e9 6a ff
     2943    jmp near 0165eh                           ; e9 6a ff
    27032944    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    27042945    mov word [bp-010h], ax                    ; 89 46 f0
    27052946    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    27062947    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2707     jnbe near 01801h                          ; 0f 87 37 03
     2948    jnbe near 01a3dh                          ; 0f 87 37 03
    27082949    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    27092950    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    27102951    add ax, dx                                ; 01 d0
    27112952    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2712     jnbe short 014dfh                         ; 77 06
     2953    jnbe short 0171bh                         ; 77 06
    27132954    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2714     jne short 01512h                          ; 75 33
     2955    jne short 0174eh                          ; 75 33
    27152956    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    27162957    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     
    27282969    mov es, [si+04833h]                       ; 8e 84 33 48
    27292970    cld                                       ; fc
    2730     jcxz 01510h                               ; e3 02
     2971    jcxz 0174ch                               ; e3 02
    27312972    rep stosw                                 ; f3 ab
    2732     jmp short 01552h                          ; eb 40
     2973    jmp short 0178eh                          ; eb 40
    27332974    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    27342975    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     
    27512992    mov es, ax                                ; 8e c0
    27522993    cld                                       ; fc
    2753     jcxz 01552h                               ; e3 06
     2994    jcxz 0178eh                               ; e3 06
    27542995    push DS                                   ; 1e
    27552996    mov ds, dx                                ; 8e da
     
    27582999    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    27593000    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2760     jc near 01801h                            ; 0f 82 a4 02
     3001    jc near 01a3dh                            ; 0f 82 a4 02
    27613002    dec word [bp-010h]                        ; ff 4e f0
    2762     jmp near 014bfh                           ; e9 5c ff
     3003    jmp near 016fbh                           ; e9 5c ff
    27633004    movzx bx, byte [si+048afh]                ; 0f b6 9c af 48
    27643005    sal bx, 006h                              ; c1 e3 06
     
    27673008    mov bl, byte [di+04831h]                  ; 8a 9d 31 48
    27683009    cmp bl, 004h                              ; 80 fb 04
    2769     je short 0158ah                           ; 74 0f
     3010    je short 017c6h                           ; 74 0f
    27703011    cmp bl, 003h                              ; 80 fb 03
    2771     je short 0158ah                           ; 74 0a
     3012    je short 017c6h                           ; 74 0a
    27723013    cmp bl, 002h                              ; 80 fb 02
    2773     je near 016c9h                            ; 0f 84 42 01
    2774     jmp near 01801h                           ; e9 77 02
     3014    je near 01905h                            ; 0f 84 42 01
     3015    jmp near 01a3dh                           ; e9 77 02
    27753016    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2776     jne short 015e2h                          ; 75 52
     3017    jne short 0181eh                          ; 75 52
    27773018    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2778     jne short 015e2h                          ; 75 4c
     3019    jne short 0181eh                          ; 75 4c
    27793020    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    2780     jne short 015e2h                          ; 75 46
     3021    jne short 0181eh                          ; 75 46
    27813022    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
    27823023    mov ax, cx                                ; 89 c8
    27833024    dec ax                                    ; 48
    27843025    cmp dx, ax                                ; 39 c2
    2785     jne short 015e2h                          ; 75 3b
     3026    jne short 0181eh                          ; 75 3b
    27863027    movzx dx, byte [bp+00ah]                  ; 0f b6 56 0a
    27873028    mov ax, word [bp-012h]                    ; 8b 46 ee
    27883029    dec ax                                    ; 48
    27893030    cmp dx, ax                                ; 39 c2
    2790     jne short 015e2h                          ; 75 2f
     3031    jne short 0181eh                          ; 75 2f
    27913032    mov ax, 00205h                            ; b8 05 02
    27923033    mov dx, 003ceh                            ; ba ce 03
     
    28013042    xor di, di                                ; 31 ff
    28023043    cld                                       ; fc
    2803     jcxz 015dbh                               ; e3 02
     3044    jcxz 01817h                               ; e3 02
    28043045    rep stosb                                 ; f3 aa
    28053046    mov ax, strict word 00005h                ; b8 05 00
    28063047    out DX, ax                                ; ef
    2807     jmp near 01801h                           ; e9 1f 02
     3048    jmp near 01a3dh                           ; e9 1f 02
    28083049    cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
    2809     jne short 01651h                          ; 75 69
     3050    jne short 0188dh                          ; 75 69
    28103051    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    28113052    mov word [bp-010h], ax                    ; 89 46 f0
    28123053    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    28133054    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2814     jc near 01801h                            ; 0f 82 07 02
     3055    jc near 01a3dh                            ; 0f 82 07 02
    28153056    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    28163057    add dx, word [bp-010h]                    ; 03 56 f0
    28173058    cmp dx, ax                                ; 39 c2
    2818     jnbe short 0160bh                         ; 77 06
     3059    jnbe short 01847h                         ; 77 06
    28193060    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2820     jne short 0162ah                          ; 75 1f
     3061    jne short 01866h                          ; 75 1f
    28213062    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    28223063    push ax                                   ; 50
     
    28273068    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    28283069    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2829     call 01183h                               ; e8 5b fb
    2830     jmp short 0164ch                          ; eb 22
     3070    call 013bfh                               ; e8 5b fb
     3071    jmp short 01888h                          ; eb 22
    28313072    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    28323073    push ax                                   ; 50
     
    28393080    movzx dx, al                              ; 0f b6 d0
    28403081    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2841     call 01111h                               ; e8 c5 fa
     3082    call 0134dh                               ; e8 c5 fa
    28423083    inc word [bp-010h]                        ; ff 46 f0
    2843     jmp short 015efh                          ; eb 9e
     3084    jmp short 0182bh                          ; eb 9e
    28443085    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    28453086    mov word [bp-010h], ax                    ; 89 46 f0
    28463087    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    28473088    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2848     jnbe near 01801h                          ; 0f 87 9e 01
     3089    jnbe near 01a3dh                          ; 0f 87 9e 01
    28493090    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    28503091    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    28513092    add ax, dx                                ; 01 d0
    28523093    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2853     jnbe short 01678h                         ; 77 06
     3094    jnbe short 018b4h                         ; 77 06
    28543095    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2855     jne short 01697h                          ; 75 1f
     3096    jne short 018d3h                          ; 75 1f
    28563097    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    28573098    push ax                                   ; 50
     
    28623103    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    28633104    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2864     call 01183h                               ; e8 ee fa
    2865     jmp short 016b9h                          ; eb 22
     3105    call 013bfh                               ; e8 ee fa
     3106    jmp short 018f5h                          ; eb 22
    28663107    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    28673108    push ax                                   ; 50
     
    28743115    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    28753116    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2876     call 01111h                               ; e8 58 fa
     3117    call 0134dh                               ; e8 58 fa
    28773118    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    28783119    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2879     jc near 01801h                            ; 0f 82 3d 01
     3120    jc near 01a3dh                            ; 0f 82 3d 01
    28803121    dec word [bp-010h]                        ; ff 4e f0
    2881     jmp short 01658h                          ; eb 8f
     3122    jmp short 01894h                          ; eb 8f
    28823123    mov dl, byte [di+04832h]                  ; 8a 95 32 48
    28833124    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2884     jne short 01710h                          ; 75 3d
     3125    jne short 0194ch                          ; 75 3d
    28853126    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2886     jne short 01710h                          ; 75 37
     3127    jne short 0194ch                          ; 75 37
    28873128    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    2888     jne short 01710h                          ; 75 31
     3129    jne short 0194ch                          ; 75 31
    28893130    movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
    28903131    cmp bx, word [bp-016h]                    ; 3b 5e ea
    2891     jne short 01710h                          ; 75 28
     3132    jne short 0194ch                          ; 75 28
    28923133    movzx bx, byte [bp+00ah]                  ; 0f b6 5e 0a
    28933134    cmp bx, word [bp-014h]                    ; 3b 5e ec
    2894     jne short 01710h                          ; 75 1f
     3135    jne short 0194ch                          ; 75 1f
    28953136    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    28963137    imul ax, bx                               ; 0f af c3
     
    29013142    xor di, di                                ; 31 ff
    29023143    cld                                       ; fc
    2903     jcxz 0170dh                               ; e3 02
     3144    jcxz 01949h                               ; e3 02
    29043145    rep stosb                                 ; f3 aa
    2905     jmp near 01801h                           ; e9 f1 00
     3146    jmp near 01a3dh                           ; e9 f1 00
    29063147    cmp dl, 002h                              ; 80 fa 02
    2907     jne short 0171eh                          ; 75 09
     3148    jne short 0195ah                          ; 75 09
    29083149    sal byte [bp-002h], 1                     ; d0 66 fe
    29093150    sal byte [bp-00eh], 1                     ; d0 66 f2
    29103151    sal word [bp-012h], 1                     ; d1 66 ee
    29113152    cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
    2912     jne short 0178dh                          ; 75 69
     3153    jne short 019c9h                          ; 75 69
    29133154    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    29143155    mov word [bp-010h], ax                    ; 89 46 f0
    29153156    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    29163157    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2917     jc near 01801h                            ; 0f 82 cb 00
     3158    jc near 01a3dh                            ; 0f 82 cb 00
    29183159    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    29193160    add dx, word [bp-010h]                    ; 03 56 f0
    29203161    cmp dx, ax                                ; 39 c2
    2921     jnbe short 01747h                         ; 77 06
     3162    jnbe short 01983h                         ; 77 06
    29223163    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2923     jne short 01766h                          ; 75 1f
     3164    jne short 019a2h                          ; 75 1f
    29243165    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    29253166    push ax                                   ; 50
     
    29303171    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    29313172    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2932     call 01280h                               ; e8 1c fb
    2933     jmp short 01788h                          ; eb 22
     3173    call 014bch                               ; e8 1c fb
     3174    jmp short 019c4h                          ; eb 22
    29343175    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    29353176    push ax                                   ; 50
     
    29423183    movzx dx, al                              ; 0f b6 d0
    29433184    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2944     call 011e0h                               ; e8 58 fa
     3185    call 0141ch                               ; e8 58 fa
    29453186    inc word [bp-010h]                        ; ff 46 f0
    2946     jmp short 0172bh                          ; eb 9e
     3187    jmp short 01967h                          ; eb 9e
    29473188    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    29483189    mov word [bp-010h], ax                    ; 89 46 f0
    29493190    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    29503191    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2951     jnbe short 01801h                         ; 77 64
     3192    jnbe short 01a3dh                         ; 77 64
    29523193    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    29533194    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    29543195    add ax, dx                                ; 01 d0
    29553196    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2956     jnbe short 017b2h                         ; 77 06
     3197    jnbe short 019eeh                         ; 77 06
    29573198    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2958     jne short 017d1h                          ; 75 1f
     3199    jne short 01a0dh                          ; 75 1f
    29593200    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    29603201    push ax                                   ; 50
     
    29653206    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    29663207    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2967     call 01280h                               ; e8 b1 fa
    2968     jmp short 017f3h                          ; eb 22
     3208    call 014bch                               ; e8 b1 fa
     3209    jmp short 01a2fh                          ; eb 22
    29693210    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    29703211    push ax                                   ; 50
     
    29773218    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    29783219    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    2979     call 011e0h                               ; e8 ed f9
     3220    call 0141ch                               ; e8 ed f9
    29803221    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    29813222    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2982     jc short 01801h                           ; 72 05
     3223    jc short 01a3dh                           ; 72 05
    29833224    dec word [bp-010h]                        ; ff 4e f0
    2984     jmp short 01794h                          ; eb 93
     3225    jmp short 019d0h                          ; eb 93
    29853226    leave                                     ; c9
    29863227    pop di                                    ; 5f
    29873228    pop si                                    ; 5e
    29883229    retn 00008h                               ; c2 08 00
    2989 biosfn_read_char_attr_:                      ; 0xc1807 LB 0xa5
    2990     push bx                                   ; 53
    2991     push cx                                   ; 51
    2992     push si                                   ; 56
    2993     push di                                   ; 57
    2994     enter 0000ch, 000h                        ; c8 0c 00 00
    2995     mov byte [bp-006h], al                    ; 88 46 fa
    2996     mov si, dx                                ; 89 d6
    2997     mov ax, ss                                ; 8c d0
    2998     mov di, ax                                ; 89 c7
    2999     mov dx, strict word 00049h                ; ba 49 00
    3000     mov ax, strict word 00040h                ; b8 40 00
    3001     call 02fdch                               ; e8 bb 17
    3002     xor ah, ah                                ; 30 e4
    3003     call 02fb5h                               ; e8 8f 17
    3004     mov byte [bp-004h], al                    ; 88 46 fc
    3005     cmp AL, strict byte 0ffh                  ; 3c ff
    3006     je short 018a6h                           ; 74 79
    3007     lea dx, [bp-00ch]                         ; 8d 56 f4
    3008     push SS                                   ; 16
    3009     push dx                                   ; 52
    3010     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    3011     mov cx, ss                                ; 8c d1
    3012     lea bx, [bp-00ah]                         ; 8d 5e f6
    3013     call 00c53h                               ; e8 15 f4
    3014     mov al, byte [bp-00ch]                    ; 8a 46 f4
    3015     mov byte [bp-002h], al                    ; 88 46 fe
    3016     mov ax, word [bp-00ch]                    ; 8b 46 f4
    3017     xor al, al                                ; 30 c0
    3018     shr ax, 008h                              ; c1 e8 08
    3019     mov word [bp-008h], ax                    ; 89 46 f8
    3020     mov dx, 00084h                            ; ba 84 00
    3021     mov ax, strict word 00040h                ; b8 40 00
    3022     call 02fdch                               ; e8 84 17
    3023     movzx cx, al                              ; 0f b6 c8
    3024     inc cx                                    ; 41
    3025     mov dx, strict word 0004ah                ; ba 4a 00
    3026     mov ax, strict word 00040h                ; b8 40 00
    3027     call 02ff8h                               ; e8 93 17
    3028     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    3029     sal bx, 003h                              ; c1 e3 03
    3030     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    3031     jne short 018a6h                          ; 75 33
    3032     mov dx, ax                                ; 89 c2
    3033     imul dx, cx                               ; 0f af d1
    3034     add dx, dx                                ; 01 d2
    3035     or dl, 0ffh                               ; 80 ca ff
    3036     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
    3037     inc dx                                    ; 42
    3038     imul dx, cx                               ; 0f af d1
    3039     movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
    3040     imul ax, cx                               ; 0f af c1
    3041     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    3042     add ax, cx                                ; 01 c8
    3043     add ax, ax                                ; 01 c0
    3044     add dx, ax                                ; 01 c2
    3045     mov ax, word [bx+04833h]                  ; 8b 87 33 48
    3046     call 02ff8h                               ; e8 5b 17
    3047     mov bx, ax                                ; 89 c3
    3048     mov dx, si                                ; 89 f2
    3049     mov ax, di                                ; 89 f8
    3050     call 03006h                               ; e8 60 17
    3051     leave                                     ; c9
    3052     pop di                                    ; 5f
    3053     pop si                                    ; 5e
    3054     pop cx                                    ; 59
    3055     pop bx                                    ; 5b
    3056     retn                                      ; c3
    3057 write_gfx_char_pl4_:                         ; 0xc18ac LB 0xe6
     3230write_gfx_char_pl4_:                         ; 0xc1a43 LB 0xe6
    30583231    push si                                   ; 56
    30593232    push di                                   ; 57
     
    30623235    mov ah, bl                                ; 88 dc
    30633236    cmp byte [bp+00ah], 010h                  ; 80 7e 0a 10
    3064     je short 018c8h                           ; 74 0b
     3237    je short 01a5fh                           ; 74 0b
    30653238    cmp byte [bp+00ah], 00eh                  ; 80 7e 0a 0e
    3066     jne short 018cdh                          ; 75 0a
     3239    jne short 01a64h                          ; 75 0a
    30673240    mov di, 05dafh                            ; bf af 5d
    3068     jmp short 018d0h                          ; eb 08
     3241    jmp short 01a67h                          ; eb 08
    30693242    mov di, 06bafh                            ; bf af 6b
    3070     jmp short 018d0h                          ; eb 03
     3243    jmp short 01a67h                          ; eb 03
    30713244    mov di, 055afh                            ; bf af 55
    30723245    movzx si, cl                              ; 0f b6 f1
     
    30883261    out DX, ax                                ; ef
    30893262    test byte [bp-002h], 080h                 ; f6 46 fe 80
    3090     je short 0190bh                           ; 74 06
     3263    je short 01aa2h                           ; 74 06
    30913264    mov ax, 01803h                            ; b8 03 18
    30923265    out DX, ax                                ; ef
    3093     jmp short 0190fh                          ; eb 04
     3266    jmp short 01aa6h                          ; eb 04
    30943267    mov ax, strict word 00003h                ; b8 03 00
    30953268    out DX, ax                                ; ef
    30963269    xor ch, ch                                ; 30 ed
    30973270    cmp ch, byte [bp+00ah]                    ; 3a 6e 0a
    3098     jnc short 0197dh                          ; 73 67
     3271    jnc short 01b14h                          ; 73 67
    30993272    movzx si, ch                              ; 0f b6 f5
    31003273    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     
    31023275    add si, word [bp-00ah]                    ; 03 76 f6
    31033276    mov byte [bp-004h], 000h                  ; c6 46 fc 00
    3104     jmp short 0193ch                          ; eb 13
     3277    jmp short 01ad3h                          ; eb 13
    31053278    xor bx, bx                                ; 31 db
    31063279    mov dx, si                                ; 89 f2
    31073280    mov ax, 0a000h                            ; b8 00 a0
    3108     call 02feah                               ; e8 b7 16
     3281    call 02f18h                               ; e8 4e 14
    31093282    inc byte [bp-004h]                        ; fe 46 fc
    31103283    cmp byte [bp-004h], 008h                  ; 80 7e fc 08
    3111     jnc short 01979h                          ; 73 3d
     3284    jnc short 01b10h                          ; 73 3d
    31123285    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    31133286    mov cl, al                                ; 88 c1
     
    31223295    mov dx, si                                ; 89 f2
    31233296    mov ax, 0a000h                            ; b8 00 a0
    3124     call 02fdch                               ; e8 7f 16
     3297    call 02f0ah                               ; e8 16 14
    31253298    movzx ax, ch                              ; 0f b6 c5
    31263299    add ax, word [bp-006h]                    ; 03 46 fa
     
    31293302    movzx ax, byte [bx]                       ; 0f b6 07
    31303303    test word [bp-008h], ax                   ; 85 46 f8
    3131     je short 01929h                           ; 74 ba
     3304    je short 01ac0h                           ; 74 ba
    31323305    mov al, byte [bp-002h]                    ; 8a 46 fe
    31333306    and AL, strict byte 00fh                  ; 24 0f
    31343307    movzx bx, al                              ; 0f b6 d8
    3135     jmp short 0192bh                          ; eb b2
     3308    jmp short 01ac2h                          ; eb b2
    31363309    db  0feh, 0c5h
    31373310    ; inc ch                                    ; fe c5
    3138     jmp short 01911h                          ; eb 94
     3311    jmp short 01aa8h                          ; eb 94
    31393312    mov ax, 0ff08h                            ; b8 08 ff
    31403313    mov dx, 003ceh                            ; ba ce 03
     
    31483321    pop si                                    ; 5e
    31493322    retn 00004h                               ; c2 04 00
    3150 write_gfx_char_cga_:                         ; 0xc1992 LB 0x119
     3323write_gfx_char_cga_:                         ; 0xc1b29 LB 0x119
    31513324    push si                                   ; 56
    31523325    push di                                   ; 57
     
    31643337    sal di, 003h                              ; c1 e7 03
    31653338    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    3166     jmp near 01a10h                           ; e9 50 00
     3339    jmp near 01ba7h                           ; e9 50 00
    31673340    xor al, al                                ; 30 c0
    31683341    xor ah, ah                                ; 30 e4
    3169     jmp short 019d1h                          ; eb 0b
     3342    jmp short 01b68h                          ; eb 0b
    31703343    or al, bl                                 ; 08 d8
    31713344    shr ch, 1                                 ; d0 ed
     
    31733346    ; inc ah                                    ; fe c4
    31743347    cmp ah, 008h                              ; 80 fc 08
    3175     jnc short 019f9h                          ; 73 28
     3348    jnc short 01b90h                          ; 73 28
    31763349    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    31773350    add bx, di                                ; 01 fb
     
    31803353    movzx dx, ch                              ; 0f b6 d5
    31813354    test bx, dx                               ; 85 d3
    3182     je short 019c8h                           ; 74 e5
     3355    je short 01b5fh                           ; 74 e5
    31833356    mov CL, strict byte 007h                  ; b1 07
    31843357    sub cl, ah                                ; 28 e1
     
    31873360    sal bl, CL                                ; d2 e3
    31883361    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3189     je short 019c6h                           ; 74 d1
     3362    je short 01b5dh                           ; 74 d1
    31903363    xor al, bl                                ; 30 d8
    3191     jmp short 019c8h                          ; eb cf
     3364    jmp short 01b5fh                          ; eb cf
    31923365    movzx bx, al                              ; 0f b6 d8
    31933366    mov dx, word [bp-006h]                    ; 8b 56 fa
    31943367    mov ax, 0b800h                            ; b8 00 b8
    3195     call 02feah                               ; e8 e5 15
     3368    call 02f18h                               ; e8 7c 13
    31963369    inc byte [bp-002h]                        ; fe 46 fe
    31973370    cmp byte [bp-002h], 008h                  ; 80 7e fe 08
    3198     jnc near 01aa5h                           ; 0f 83 95 00
     3371    jnc near 01c3ch                           ; 0f 83 95 00
    31993372    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    32003373    sar ax, 1                                 ; d1 f8
     
    32043377    mov word [bp-006h], bx                    ; 89 5e fa
    32053378    test byte [bp-002h], 001h                 ; f6 46 fe 01
    3206     je short 01a2bh                           ; 74 04
     3379    je short 01bc2h                           ; 74 04
    32073380    add byte [bp-005h], 020h                  ; 80 46 fb 20
    32083381    mov CH, strict byte 080h                  ; b5 80
    32093382    cmp byte [bp+00ah], 001h                  ; 80 7e 0a 01
    3210     jne short 01a44h                          ; 75 11
     3383    jne short 01bdbh                          ; 75 11
    32113384    test byte [bp-004h], ch                   ; 84 6e fc
    3212     je short 019c0h                           ; 74 88
     3385    je short 01b57h                           ; 74 88
    32133386    mov dx, word [bp-006h]                    ; 8b 56 fa
    32143387    mov ax, 0b800h                            ; b8 00 b8
    3215     call 02fdch                               ; e8 9b 15
    3216     jmp near 019c2h                           ; e9 7e ff
     3388    call 02f0ah                               ; e8 32 13
     3389    jmp near 01b59h                           ; e9 7e ff
    32173390    test ch, ch                               ; 84 ed
    3218     jbe short 01a05h                          ; 76 bd
     3391    jbe short 01b9ch                          ; 76 bd
    32193392    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3220     je short 01a59h                           ; 74 0b
     3393    je short 01bf0h                           ; 74 0b
    32213394    mov dx, word [bp-006h]                    ; 8b 56 fa
    32223395    mov ax, 0b800h                            ; b8 00 b8
    3223     call 02fdch                               ; e8 85 15
    3224     jmp short 01a5bh                          ; eb 02
     3396    call 02f0ah                               ; e8 1c 13
     3397    jmp short 01bf2h                          ; eb 02
    32253398    xor al, al                                ; 30 c0
    32263399    xor ah, ah                                ; 30 e4
    3227     jmp short 01a6ah                          ; eb 0b
     3400    jmp short 01c01h                          ; eb 0b
    32283401    or al, bl                                 ; 08 d8
    32293402    shr ch, 1                                 ; d0 ed
     
    32313404    ; inc ah                                    ; fe c4
    32323405    cmp ah, 004h                              ; 80 fc 04
    3233     jnc short 01a94h                          ; 73 2a
     3406    jnc short 01c2bh                          ; 73 2a
    32343407    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    32353408    add bx, di                                ; 01 fb
     
    32383411    movzx bx, ch                              ; 0f b6 dd
    32393412    test bx, dx                               ; 85 d3
    3240     je short 01a61h                           ; 74 e5
     3413    je short 01bf8h                           ; 74 e5
    32413414    mov CL, strict byte 003h                  ; b1 03
    32423415    sub cl, ah                                ; 28 e1
     
    32463419    sal bl, CL                                ; d2 e3
    32473420    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3248     je short 01a5fh                           ; 74 cf
     3421    je short 01bf6h                           ; 74 cf
    32493422    xor al, bl                                ; 30 d8
    3250     jmp short 01a61h                          ; eb cd
     3423    jmp short 01bf8h                          ; eb cd
    32513424    movzx bx, al                              ; 0f b6 d8
    32523425    mov dx, word [bp-006h]                    ; 8b 56 fa
    32533426    mov ax, 0b800h                            ; b8 00 b8
    3254     call 02feah                               ; e8 4a 15
     3427    call 02f18h                               ; e8 e1 12
    32553428    inc word [bp-006h]                        ; ff 46 fa
    3256     jmp short 01a44h                          ; eb 9f
     3429    jmp short 01bdbh                          ; eb 9f
    32573430    leave                                     ; c9
    32583431    pop di                                    ; 5f
    32593432    pop si                                    ; 5e
    32603433    retn 00004h                               ; c2 04 00
    3261 write_gfx_char_lin_:                         ; 0xc1aab LB 0x8c
     3434write_gfx_char_lin_:                         ; 0xc1c42 LB 0x8c
    32623435    push si                                   ; 56
    32633436    push di                                   ; 57
     
    32763449    sal si, 003h                              ; c1 e6 03
    32773450    xor cl, cl                                ; 30 c9
    3278     jmp short 01b14h                          ; eb 3b
     3451    jmp short 01cabh                          ; eb 3b
    32793452    cmp ch, 008h                              ; 80 fd 08
    3280     jnc short 01b0dh                          ; 73 2f
     3453    jnc short 01ca4h                          ; 73 2f
    32813454    xor al, al                                ; 30 c0
    32823455    movzx dx, cl                              ; 0f b6 d1
     
    32873460    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    32883461    test dx, bx                               ; 85 da
    3289     je short 01af7h                           ; 74 03
     3462    je short 01c8eh                           ; 74 03
    32903463    mov al, byte [bp-002h]                    ; 8a 46 fe
    32913464    movzx bx, al                              ; 0f b6 d8
     
    32933466    add dx, word [bp-006h]                    ; 03 56 fa
    32943467    mov ax, 0a000h                            ; b8 00 a0
    3295     call 02feah                               ; e8 e4 14
     3468    call 02f18h                               ; e8 7b 12
    32963469    shr byte [bp-004h], 1                     ; d0 6e fc
    32973470    db  0feh, 0c5h
    32983471    ; inc ch                                    ; fe c5
    3299     jmp short 01ad9h                          ; eb cc
     3472    jmp short 01c70h                          ; eb cc
    33003473    db  0feh, 0c1h
    33013474    ; inc cl                                    ; fe c1
    33023475    cmp cl, 008h                              ; 80 f9 08
    3303     jnc short 01b31h                          ; 73 1d
     3476    jnc short 01cc8h                          ; 73 1d
    33043477    movzx bx, cl                              ; 0f b6 d9
    33053478    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
     
    33113484    mov byte [bp-004h], 080h                  ; c6 46 fc 80
    33123485    xor ch, ch                                ; 30 ed
    3313     jmp short 01adeh                          ; eb ad
     3486    jmp short 01c75h                          ; eb ad
    33143487    leave                                     ; c9
    33153488    pop di                                    ; 5f
    33163489    pop si                                    ; 5e
    33173490    retn 00002h                               ; c2 02 00
    3318 biosfn_write_char_attr_:                     ; 0xc1b37 LB 0x168
     3491biosfn_write_char_attr_:                     ; 0xc1cce LB 0x163
    33193492    push si                                   ; 56
    33203493    push di                                   ; 57
    3321     enter 0001ah, 000h                        ; c8 1a 00 00
    3322     mov byte [bp-00ch], al                    ; 88 46 f4
    3323     mov byte [bp-012h], dl                    ; 88 56 ee
    3324     mov byte [bp-006h], bl                    ; 88 5e fa
     3494    enter 00018h, 000h                        ; c8 18 00 00
     3495    mov byte [bp-00ah], al                    ; 88 46 f6
     3496    mov byte [bp-00ch], dl                    ; 88 56 f4
     3497    mov byte [bp-00eh], bl                    ; 88 5e f2
    33253498    mov si, cx                                ; 89 ce
    33263499    mov dx, strict word 00049h                ; ba 49 00
    33273500    mov ax, strict word 00040h                ; b8 40 00
    3328     call 02fdch                               ; e8 8b 14
     3501    call 02f0ah                               ; e8 22 12
    33293502    xor ah, ah                                ; 30 e4
    3330     call 02fb5h                               ; e8 5f 14
     3503    call 02ee3h                               ; e8 f6 11
     3504    mov cl, al                                ; 88 c1
    33313505    mov byte [bp-002h], al                    ; 88 46 fe
    3332     mov byte [bp-00ah], al                    ; 88 46 f6
    33333506    cmp AL, strict byte 0ffh                  ; 3c ff
    3334     je near 01c9bh                            ; 0f 84 39 01
    3335     lea dx, [bp-01ah]                         ; 8d 56 e6
    3336     push SS                                   ; 16
    3337     push dx                                   ; 52
    3338     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
    3339     mov cx, ss                                ; 8c d1
     3507    je near 01e2dh                            ; 0f 84 35 01
     3508    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    33403509    lea bx, [bp-018h]                         ; 8d 5e e8
    3341     call 00c53h                               ; e8 e0 f0
    3342     mov al, byte [bp-01ah]                    ; 8a 46 e6
    3343     mov byte [bp-00eh], al                    ; 88 46 f2
    3344     mov cx, word [bp-01ah]                    ; 8b 4e e6
    3345     xor cl, cl                                ; 30 c9
    3346     shr cx, 008h                              ; c1 e9 08
    3347     mov byte [bp-010h], cl                    ; 88 4e f0
     3510    lea dx, [bp-016h]                         ; 8d 56 ea
     3511    call 00a8ch                               ; e8 87 ed
     3512    mov al, byte [bp-018h]                    ; 8a 46 e8
     3513    mov byte [bp-008h], al                    ; 88 46 f8
     3514    mov ax, word [bp-018h]                    ; 8b 46 e8
     3515    xor al, al                                ; 30 c0
     3516    shr ax, 008h                              ; c1 e8 08
     3517    mov byte [bp-006h], al                    ; 88 46 fa
    33483518    mov dx, 00084h                            ; ba 84 00
    33493519    mov ax, strict word 00040h                ; b8 40 00
    3350     call 02fdch                               ; e8 4f 14
     3520    call 02f0ah                               ; e8 eb 11
    33513521    xor ah, ah                                ; 30 e4
    33523522    inc ax                                    ; 40
    3353     mov word [bp-016h], ax                    ; 89 46 ea
     3523    mov word [bp-014h], ax                    ; 89 46 ec
    33543524    mov dx, strict word 0004ah                ; ba 4a 00
    33553525    mov ax, strict word 00040h                ; b8 40 00
    3356     call 02ff8h                               ; e8 5c 14
    3357     mov word [bp-014h], ax                    ; 89 46 ec
    3358     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     3526    call 02f26h                               ; e8 f8 11
     3527    mov word [bp-012h], ax                    ; 89 46 ee
     3528    movzx bx, cl                              ; 0f b6 d9
    33593529    mov di, bx                                ; 89 df
    33603530    sal di, 003h                              ; c1 e7 03
    33613531    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
    3362     jne short 01bf5h                          ; 75 46
    3363     mov dx, word [bp-016h]                    ; 8b 56 ea
    3364     imul dx, ax                               ; 0f af d0
    3365     add dx, dx                                ; 01 d2
    3366     or dl, 0ffh                               ; 80 ca ff
    3367     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
    3368     inc dx                                    ; 42
    3369     imul bx, dx                               ; 0f af da
    3370     movzx dx, cl                              ; 0f b6 d1
    3371     imul ax, dx                               ; 0f af c2
    3372     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    3373     add ax, dx                                ; 01 d0
     3532    jne short 01d87h                          ; 75 47
     3533    mov bx, word [bp-014h]                    ; 8b 5e ec
     3534    imul bx, ax                               ; 0f af d8
     3535    add bx, bx                                ; 01 db
     3536    or bl, 0ffh                               ; 80 cb ff
     3537    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     3538    inc bx                                    ; 43
     3539    imul dx, bx                               ; 0f af d3
     3540    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     3541    imul ax, bx                               ; 0f af c3
     3542    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     3543    add ax, bx                                ; 01 d8
    33743544    add ax, ax                                ; 01 c0
    3375     add bx, ax                                ; 01 c3
    3376     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    3377     sal dx, 008h                              ; c1 e2 08
    3378     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    33793545    add dx, ax                                ; 01 c2
    3380     mov word [bp-018h], dx                    ; 89 56 e8
    3381     mov ax, word [bp-018h]                    ; 8b 46 e8
     3546    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     3547    sal ax, 008h                              ; c1 e0 08
     3548    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     3549    add ax, bx                                ; 01 d8
     3550    mov word [bp-016h], ax                    ; 89 46 ea
     3551    mov ax, word [bp-016h]                    ; 8b 46 ea
    33823552    mov es, [di+04833h]                       ; 8e 85 33 48
    33833553    mov cx, si                                ; 89 f1
    3384     mov di, bx                                ; 89 df
     3554    mov di, dx                                ; 89 d7
    33853555    cld                                       ; fc
    3386     jcxz 01bf2h                               ; e3 02
     3556    jcxz 01d84h                               ; e3 02
    33873557    rep stosw                                 ; f3 ab
    3388     jmp near 01c9bh                           ; e9 a6 00
     3558    jmp near 01e2dh                           ; e9 a6 00
    33893559    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
    33903560    sal bx, 006h                              ; c1 e3 06
    33913561    mov al, byte [bx+048c5h]                  ; 8a 87 c5 48
    3392     mov byte [bp-008h], al                    ; 88 46 f8
     3562    mov byte [bp-004h], al                    ; 88 46 fc
    33933563    mov al, byte [di+04832h]                  ; 8a 85 32 48
    3394     mov byte [bp-004h], al                    ; 88 46 fc
     3564    mov byte [bp-010h], al                    ; 88 46 f0
    33953565    dec si                                    ; 4e
    33963566    cmp si, strict byte 0ffffh                ; 83 fe ff
    3397     je near 01c9bh                            ; 0f 84 88 00
    3398     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    3399     cmp ax, word [bp-014h]                    ; 3b 46 ec
    3400     jnc near 01c9bh                           ; 0f 83 7d 00
    3401     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     3567    je near 01e2dh                            ; 0f 84 88 00
     3568    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     3569    cmp ax, word [bp-012h]                    ; 3b 46 ee
     3570    jnc near 01e2dh                           ; 0f 83 7d 00
     3571    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    34023572    sal bx, 003h                              ; c1 e3 03
    34033573    mov al, byte [bx+04831h]                  ; 8a 87 31 48
    34043574    cmp AL, strict byte 003h                  ; 3c 03
    3405     jc short 01c39h                           ; 72 0c
    3406     jbe short 01c3fh                          ; 76 10
     3575    jc short 01dcbh                           ; 72 0c
     3576    jbe short 01dd1h                          ; 76 10
    34073577    cmp AL, strict byte 005h                  ; 3c 05
    3408     je short 01c7dh                           ; 74 4a
     3578    je short 01e0fh                           ; 74 4a
    34093579    cmp AL, strict byte 004h                  ; 3c 04
    3410     je short 01c3fh                           ; 74 08
    3411     jmp short 01c95h                          ; eb 5c
     3580    je short 01dd1h                           ; 74 08
     3581    jmp short 01e27h                          ; eb 5c
    34123582    cmp AL, strict byte 002h                  ; 3c 02
    3413     je short 01c5eh                           ; 74 21
    3414     jmp short 01c95h                          ; eb 56
    3415     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    3416     push ax                                   ; 50
    3417     movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    3418     push ax                                   ; 50
    3419     movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
    3420     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
    3421     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    3422     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    3423     call 018ach                               ; e8 50 fc
    3424     jmp short 01c95h                          ; eb 37
     3583    je short 01df0h                           ; 74 21
     3584    jmp short 01e27h                          ; eb 56
    34253585    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    34263586    push ax                                   ; 50
    3427     movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    3428     push ax                                   ; 50
    3429     movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
    3430     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
    3431     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    3432     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    3433     call 01992h                               ; e8 17 fd
    3434     jmp short 01c95h                          ; eb 18
    3435     movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    3436     push ax                                   ; 50
    3437     movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
    3438     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
    3439     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    3440     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    3441     call 01aabh                               ; e8 16 fe
    3442     inc byte [bp-00eh]                        ; fe 46 f2
    3443     jmp near 01c0bh                           ; e9 70 ff
     3587    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     3588    push ax                                   ; 50
     3589    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     3590    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     3591    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     3592    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     3593    call 01a43h                               ; e8 55 fc
     3594    jmp short 01e27h                          ; eb 37
     3595    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     3596    push ax                                   ; 50
     3597    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     3598    push ax                                   ; 50
     3599    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     3600    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     3601    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     3602    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     3603    call 01b29h                               ; e8 1c fd
     3604    jmp short 01e27h                          ; eb 18
     3605    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     3606    push ax                                   ; 50
     3607    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     3608    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     3609    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     3610    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     3611    call 01c42h                               ; e8 1b fe
     3612    inc byte [bp-008h]                        ; fe 46 f8
     3613    jmp near 01d9dh                           ; e9 70 ff
    34443614    leave                                     ; c9
    34453615    pop di                                    ; 5f
    34463616    pop si                                    ; 5e
    34473617    retn                                      ; c3
    3448 biosfn_write_char_only_:                     ; 0xc1c9f LB 0x16d
     3618biosfn_write_char_only_:                     ; 0xc1e31 LB 0x16a
    34493619    push si                                   ; 56
    34503620    push di                                   ; 57
    3451     enter 0001ah, 000h                        ; c8 1a 00 00
    3452     mov byte [bp-00ah], al                    ; 88 46 f6
     3621    enter 00018h, 000h                        ; c8 18 00 00
     3622    mov byte [bp-00eh], al                    ; 88 46 f2
    34533623    mov byte [bp-002h], dl                    ; 88 56 fe
    3454     mov byte [bp-012h], bl                    ; 88 5e ee
     3624    mov byte [bp-010h], bl                    ; 88 5e f0
    34553625    mov si, cx                                ; 89 ce
    34563626    mov dx, strict word 00049h                ; ba 49 00
    34573627    mov ax, strict word 00040h                ; b8 40 00
    3458     call 02fdch                               ; e8 23 13
     3628    call 02f0ah                               ; e8 bf 10
    34593629    xor ah, ah                                ; 30 e4
    3460     call 02fb5h                               ; e8 f7 12
    3461     mov byte [bp-004h], al                    ; 88 46 fc
    3462     mov byte [bp-00ch], al                    ; 88 46 f4
     3630    call 02ee3h                               ; e8 93 10
     3631    mov cl, al                                ; 88 c1
     3632    mov byte [bp-00ah], al                    ; 88 46 f6
    34633633    cmp AL, strict byte 0ffh                  ; 3c ff
    3464     je near 01e08h                            ; 0f 84 3e 01
    3465     lea dx, [bp-018h]                         ; 8d 56 e8
    3466     push SS                                   ; 16
    3467     push dx                                   ; 52
     3634    je near 01f97h                            ; 0f 84 3c 01
    34683635    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3469     mov cx, ss                                ; 8c d1
    3470     lea bx, [bp-01ah]                         ; 8d 5e e6
    3471     call 00c53h                               ; e8 78 ef
     3636    lea bx, [bp-018h]                         ; 8d 5e e8
     3637    lea dx, [bp-016h]                         ; 8d 56 ea
     3638    call 00a8ch                               ; e8 24 ec
    34723639    mov al, byte [bp-018h]                    ; 8a 46 e8
    34733640    mov byte [bp-008h], al                    ; 88 46 f8
    3474     mov cx, word [bp-018h]                    ; 8b 4e e8
    3475     xor cl, cl                                ; 30 c9
    3476     shr cx, 008h                              ; c1 e9 08
    3477     mov byte [bp-00eh], cl                    ; 88 4e f2
     3641    mov ax, word [bp-018h]                    ; 8b 46 e8
     3642    xor al, al                                ; 30 c0
     3643    shr ax, 008h                              ; c1 e8 08
     3644    mov byte [bp-00ch], al                    ; 88 46 f4
    34783645    mov dx, 00084h                            ; ba 84 00
    34793646    mov ax, strict word 00040h                ; b8 40 00
    3480     call 02fdch                               ; e8 e7 12
     3647    call 02f0ah                               ; e8 88 10
    34813648    xor ah, ah                                ; 30 e4
    34823649    inc ax                                    ; 40
    3483     mov word [bp-016h], ax                    ; 89 46 ea
     3650    mov word [bp-014h], ax                    ; 89 46 ec
    34843651    mov dx, strict word 0004ah                ; ba 4a 00
    34853652    mov ax, strict word 00040h                ; b8 40 00
    3486     call 02ff8h                               ; e8 f4 12
    3487     mov word [bp-014h], ax                    ; 89 46 ec
    3488     movzx di, byte [bp-004h]                  ; 0f b6 7e fc
     3653    call 02f26h                               ; e8 95 10
     3654    mov word [bp-012h], ax                    ; 89 46 ee
     3655    movzx di, cl                              ; 0f b6 f9
    34893656    mov bx, di                                ; 89 fb
    34903657    sal bx, 003h                              ; c1 e3 03
    34913658    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    3492     jne short 01d5eh                          ; 75 47
    3493     mov dx, word [bp-016h]                    ; 8b 56 ea
     3659    jne short 01eedh                          ; 75 4a
     3660    mov dx, word [bp-014h]                    ; 8b 56 ec
    34943661    imul dx, ax                               ; 0f af d0
    34953662    add dx, dx                                ; 01 d2
     
    34973664    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    34983665    inc dx                                    ; 42
    3499     imul dx, bx                               ; 0f af d3
    3500     movzx bx, cl                              ; 0f b6 d9
    3501     imul bx, ax                               ; 0f af d8
    3502     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    3503     add ax, bx                                ; 01 d8
    3504     add ax, ax                                ; 01 c0
    3505     mov cx, dx                                ; 89 d1
    3506     add cx, ax                                ; 01 c1
     3666    imul bx, dx                               ; 0f af da
     3667    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     3668    mov cx, ax                                ; 89 c1
     3669    imul cx, dx                               ; 0f af ca
     3670    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     3671    add cx, dx                                ; 01 d1
     3672    add cx, cx                                ; 01 c9
     3673    add cx, bx                                ; 01 d9
    35073674    dec si                                    ; 4e
    35083675    cmp si, strict byte 0ffffh                ; 83 fe ff
    3509     je near 01e08h                            ; 0f 84 c4 00
    3510     movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
    3511     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     3676    je near 01f97h                            ; 0f 84 c6 00
     3677    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     3678    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    35123679    sal bx, 003h                              ; c1 e3 03
    3513     mov ax, word [bx+04833h]                  ; 8b 87 33 48
    3514     mov bx, dx                                ; 89 d3
    3515     mov dx, cx                                ; 89 ca
    3516     call 02feah                               ; e8 90 12
    3517     inc cx                                    ; 41
    3518     inc cx                                    ; 41
    3519     jmp short 01d3ch                          ; eb de
     3680    mov di, word [bx+04833h]                  ; 8b bf 33 48
     3681    mov bx, ax                                ; 89 c3
     3682    mov dx, cx                                ; 89 ca
     3683    mov ax, di                                ; 89 f8
     3684    call 02f18h                               ; e8 2f 10
     3685    inc cx                                    ; 41
     3686    inc cx                                    ; 41
     3687    jmp short 01ec9h                          ; eb dc
    35203688    movzx di, byte [di+048afh]                ; 0f b6 bd af 48
    35213689    sal di, 006h                              ; c1 e7 06
     
    35233691    mov byte [bp-006h], al                    ; 88 46 fa
    35243692    mov al, byte [bx+04832h]                  ; 8a 87 32 48
    3525     mov byte [bp-010h], al                    ; 88 46 f0
     3693    mov byte [bp-004h], al                    ; 88 46 fc
    35263694    dec si                                    ; 4e
    35273695    cmp si, strict byte 0ffffh                ; 83 fe ff
    3528     je near 01e08h                            ; 0f 84 8c 00
     3696    je near 01f97h                            ; 0f 84 8c 00
    35293697    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    3530     cmp ax, word [bp-014h]                    ; 3b 46 ec
    3531     jnc near 01e08h                           ; 0f 83 81 00
    3532     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     3698    cmp ax, word [bp-012h]                    ; 3b 46 ee
     3699    jnc near 01f97h                           ; 0f 83 81 00
     3700    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    35333701    sal bx, 003h                              ; c1 e3 03
    35343702    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
    35353703    cmp bl, 003h                              ; 80 fb 03
    3536     jc short 01da5h                           ; 72 0e
    3537     jbe short 01dach                          ; 76 13
     3704    jc short 01f34h                           ; 72 0e
     3705    jbe short 01f3bh                          ; 76 13
    35383706    cmp bl, 005h                              ; 80 fb 05
    3539     je short 01deah                           ; 74 4c
     3707    je short 01f79h                           ; 74 4c
    35403708    cmp bl, 004h                              ; 80 fb 04
    3541     je short 01dach                           ; 74 09
    3542     jmp short 01e02h                          ; eb 5d
     3709    je short 01f3bh                           ; 74 09
     3710    jmp short 01f91h                          ; eb 5d
    35433711    cmp bl, 002h                              ; 80 fb 02
    3544     je short 01dcbh                           ; 74 21
    3545     jmp short 01e02h                          ; eb 56
     3712    je short 01f5ah                           ; 74 21
     3713    jmp short 01f91h                          ; eb 56
    35463714    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    35473715    push ax                                   ; 50
    3548     movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    3549     push ax                                   ; 50
    3550     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     3716    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     3717    push ax                                   ; 50
     3718    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    35513719    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    3552     movzx dx, byte [bp-012h]                  ; 0f b6 56 ee
    3553     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3554     call 018ach                               ; e8 e3 fa
    3555     jmp short 01e02h                          ; eb 37
    3556     movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
    3557     push ax                                   ; 50
    3558     movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    3559     push ax                                   ; 50
    3560     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     3720    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     3721    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     3722    call 01a43h                               ; e8 eb fa
     3723    jmp short 01f91h                          ; eb 37
     3724    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     3725    push ax                                   ; 50
     3726    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     3727    push ax                                   ; 50
     3728    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    35613729    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    3562     movzx dx, byte [bp-012h]                  ; 0f b6 56 ee
    3563     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3564     call 01992h                               ; e8 aa fb
    3565     jmp short 01e02h                          ; eb 18
    3566     movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    3567     push ax                                   ; 50
    3568     movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     3730    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     3731    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     3732    call 01b29h                               ; e8 b2 fb
     3733    jmp short 01f91h                          ; eb 18
     3734    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     3735    push ax                                   ; 50
     3736    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    35693737    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    3570     movzx dx, byte [bp-012h]                  ; 0f b6 56 ee
    3571     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3572     call 01aabh                               ; e8 a9 fc
     3738    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     3739    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     3740    call 01c42h                               ; e8 b1 fc
    35733741    inc byte [bp-008h]                        ; fe 46 f8
    3574     jmp near 01d74h                           ; e9 6c ff
     3742    jmp near 01f03h                           ; e9 6c ff
    35753743    leave                                     ; c9
    35763744    pop di                                    ; 5f
    35773745    pop si                                    ; 5e
    35783746    retn                                      ; c3
    3579 biosfn_write_pixel_:                         ; 0xc1e0c LB 0x168
     3747biosfn_write_pixel_:                         ; 0xc1f9b LB 0x168
    35803748    push si                                   ; 56
    35813749    enter 00008h, 000h                        ; c8 08 00 00
     
    35843752    mov dx, strict word 00049h                ; ba 49 00
    35853753    mov ax, strict word 00040h                ; b8 40 00
    3586     call 02fdch                               ; e8 bc 11
     3754    call 02f0ah                               ; e8 5b 0f
    35873755    xor ah, ah                                ; 30 e4
    3588     call 02fb5h                               ; e8 90 11
     3756    call 02ee3h                               ; e8 2f 0f
    35893757    mov byte [bp-002h], al                    ; 88 46 fe
    35903758    cmp AL, strict byte 0ffh                  ; 3c ff
    3591     je near 01f71h                            ; 0f 84 43 01
     3759    je near 02100h                            ; 0f 84 43 01
    35923760    movzx bx, al                              ; 0f b6 d8
    35933761    sal bx, 003h                              ; c1 e3 03
    35943762    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    3595     je near 01f71h                            ; 0f 84 34 01
     3763    je near 02100h                            ; 0f 84 34 01
    35963764    mov al, byte [bx+04831h]                  ; 8a 87 31 48
    35973765    cmp AL, strict byte 003h                  ; 3c 03
    3598     jc short 01e54h                           ; 72 0f
    3599     jbe short 01e5bh                          ; 76 14
     3766    jc short 01fe3h                           ; 72 0f
     3767    jbe short 01feah                          ; 76 14
    36003768    cmp AL, strict byte 005h                  ; 3c 05
    3601     je near 01f4fh                            ; 0f 84 02 01
     3769    je near 020deh                            ; 0f 84 02 01
    36023770    cmp AL, strict byte 004h                  ; 3c 04
    3603     je short 01e5bh                           ; 74 0a
     3771    je short 01feah                           ; 74 0a
    36043772    leave                                     ; c9
    36053773    pop si                                    ; 5e
    36063774    retn                                      ; c3
    36073775    cmp AL, strict byte 002h                  ; 3c 02
    3608     je short 01ec0h                           ; 74 68
     3776    je short 0204fh                           ; 74 68
    36093777    leave                                     ; c9
    36103778    pop si                                    ; 5e
     
    36123780    mov dx, strict word 0004ah                ; ba 4a 00
    36133781    mov ax, strict word 00040h                ; b8 40 00
    3614     call 02ff8h                               ; e8 94 11
     3782    call 02f26h                               ; e8 33 0f
    36153783    imul ax, cx                               ; 0f af c1
    36163784    mov bx, word [bp-008h]                    ; 8b 5e f8
     
    36313799    mov dx, bx                                ; 89 da
    36323800    mov ax, 0a000h                            ; b8 00 a0
    3633     call 02fdch                               ; e8 48 11
     3801    call 02f0ah                               ; e8 e7 0e
    36343802    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3635     je short 01ea1h                           ; 74 07
     3803    je short 02030h                           ; 74 07
    36363804    mov ax, 01803h                            ; b8 03 18
    36373805    mov dx, 003ceh                            ; ba ce 03
     
    36403808    mov dx, word [bp-006h]                    ; 8b 56 fa
    36413809    mov ax, 0a000h                            ; b8 00 a0
    3642     call 02feah                               ; e8 3c 11
     3810    call 02f18h                               ; e8 db 0e
    36433811    mov ax, 0ff08h                            ; b8 08 ff
    36443812    mov dx, 003ceh                            ; ba ce 03
     
    36553823    imul ax, ax, strict byte 00050h           ; 6b c0 50
    36563824    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
    3657     jne short 01ed6h                          ; 75 08
     3825    jne short 02065h                          ; 75 08
    36583826    mov bx, word [bp-008h]                    ; 8b 5e f8
    36593827    shr bx, 002h                              ; c1 eb 02
    3660     jmp short 01edch                          ; eb 06
     3828    jmp short 0206bh                          ; eb 06
    36613829    mov bx, word [bp-008h]                    ; 8b 5e f8
    36623830    shr bx, 003h                              ; c1 eb 03
     
    36643832    mov word [bp-006h], bx                    ; 89 5e fa
    36653833    test cl, 001h                             ; f6 c1 01
    3666     je short 01eeah                           ; 74 04
     3834    je short 02079h                           ; 74 04
    36673835    add byte [bp-005h], 020h                  ; 80 46 fb 20
    36683836    mov dx, word [bp-006h]                    ; 8b 56 fa
    36693837    mov ax, 0b800h                            ; b8 00 b8
    3670     call 02fdch                               ; e8 e9 10
     3838    call 02f0ah                               ; e8 88 0e
    36713839    mov bl, al                                ; 88 c3
    36723840    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
    36733841    sal si, 003h                              ; c1 e6 03
    36743842    cmp byte [si+04832h], 002h                ; 80 bc 32 48 02
    3675     jne short 01f1ch                          ; 75 19
     3843    jne short 020abh                          ; 75 19
    36763844    mov al, byte [bp-008h]                    ; 8a 46 f8
    36773845    and AL, strict byte 003h                  ; 24 03
     
    36843852    sal bh, CL                                ; d2 e7
    36853853    mov AL, strict byte 003h                  ; b0 03
    3686     jmp short 01f2fh                          ; eb 13
     3854    jmp short 020beh                          ; eb 13
    36873855    mov al, byte [bp-008h]                    ; 8a 46 f8
    36883856    and AL, strict byte 007h                  ; 24 07
     
    36953863    sal al, CL                                ; d2 e0
    36963864    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3697     je short 01f3bh                           ; 74 04
     3865    je short 020cah                           ; 74 04
    36983866    xor bl, bh                                ; 30 fb
    3699     jmp short 01f41h                          ; eb 06
     3867    jmp short 020d0h                          ; eb 06
    37003868    not al                                    ; f6 d0
    37013869    and bl, al                                ; 20 c3
     
    37043872    mov dx, word [bp-006h]                    ; 8b 56 fa
    37053873    mov ax, 0b800h                            ; b8 00 b8
    3706     call 02feah                               ; e8 9e 10
     3874    call 02f18h                               ; e8 3d 0e
    37073875    leave                                     ; c9
    37083876    pop si                                    ; 5e
     
    37103878    mov dx, strict word 0004ah                ; ba 4a 00
    37113879    mov ax, strict word 00040h                ; b8 40 00
    3712     call 02ff8h                               ; e8 a0 10
     3880    call 02f26h                               ; e8 3f 0e
    37133881    sal ax, 003h                              ; c1 e0 03
    37143882    imul cx, ax                               ; 0f af c8
     
    37193887    mov dx, ax                                ; 89 c2
    37203888    mov ax, 0a000h                            ; b8 00 a0
    3721     jmp short 01f49h                          ; eb d8
     3889    jmp short 020d8h                          ; eb d8
    37223890    leave                                     ; c9
    37233891    pop si                                    ; 5e
    37243892    retn                                      ; c3
    3725 biosfn_read_pixel_:                          ; 0xc1f74 LB 0x147
     3893biosfn_write_teletype_:                      ; 0xc2103 LB 0x27f
    37263894    push si                                   ; 56
    3727     push di                                   ; 57
    3728     enter 00008h, 000h                        ; c8 08 00 00
    3729     mov si, dx                                ; 89 d6
    3730     mov word [bp-008h], bx                    ; 89 5e f8
    3731     mov di, cx                                ; 89 cf
    3732     mov ax, ss                                ; 8c d0
    3733     mov word [bp-006h], ax                    ; 89 46 fa
     3895    enter 00016h, 000h                        ; c8 16 00 00
     3896    mov byte [bp-00ah], al                    ; 88 46 f6
     3897    mov byte [bp-002h], dl                    ; 88 56 fe
     3898    mov byte [bp-004h], bl                    ; 88 5e fc
     3899    mov byte [bp-00eh], cl                    ; 88 4e f2
     3900    cmp dl, 0ffh                              ; 80 fa ff
     3901    jne short 02125h                          ; 75 0c
     3902    mov dx, strict word 00062h                ; ba 62 00
     3903    mov ax, strict word 00040h                ; b8 40 00
     3904    call 02f0ah                               ; e8 e8 0d
     3905    mov byte [bp-002h], al                    ; 88 46 fe
    37343906    mov dx, strict word 00049h                ; ba 49 00
    37353907    mov ax, strict word 00040h                ; b8 40 00
    3736     call 02fdch                               ; e8 4d 10
     3908    call 02f0ah                               ; e8 dc 0d
    37373909    xor ah, ah                                ; 30 e4
    3738     call 02fb5h                               ; e8 21 10
    3739     mov cl, al                                ; 88 c1
     3910    call 02ee3h                               ; e8 b0 0d
     3911    mov byte [bp-00ch], al                    ; 88 46 f4
    37403912    cmp AL, strict byte 0ffh                  ; 3c ff
    3741     je near 020b7h                            ; 0f 84 1b 01
    3742     movzx bx, al                              ; 0f b6 d8
    3743     sal bx, 003h                              ; c1 e3 03
    3744     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    3745     je near 020b7h                            ; 0f 84 0c 01
    3746     mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
    3747     cmp bl, 003h                              ; 80 fb 03
    3748     jc short 01fc5h                           ; 72 11
    3749     jbe short 01fcdh                          ; 76 17
    3750     cmp bl, 005h                              ; 80 fb 05
    3751     je near 02080h                            ; 0f 84 c3 00
    3752     cmp bl, 004h                              ; 80 fb 04
    3753     je short 01fcdh                           ; 74 0b
    3754     jmp near 0209eh                           ; e9 d9 00
    3755     cmp bl, 002h                              ; 80 fb 02
    3756     je short 02025h                           ; 74 5b
    3757     jmp near 0209eh                           ; e9 d1 00
    3758     mov dx, strict word 0004ah                ; ba 4a 00
    3759     mov ax, strict word 00040h                ; b8 40 00
    3760     call 02ff8h                               ; e8 22 10
    3761     imul ax, word [bp-008h]                   ; 0f af 46 f8
    3762     mov bx, si                                ; 89 f3
    3763     shr bx, 003h                              ; c1 eb 03
    3764     add bx, ax                                ; 01 c3
    3765     mov cx, si                                ; 89 f1
    3766     and cx, strict byte 00007h                ; 83 e1 07
    3767     mov ax, 00080h                            ; b8 80 00
    3768     sar ax, CL                                ; d3 f8
    3769     mov byte [bp-004h], al                    ; 88 46 fc
    3770     mov byte [bp-002h], ch                    ; 88 6e fe
    3771     jmp short 01ffbh                          ; eb 08
    3772     cmp byte [bp-002h], 004h                  ; 80 7e fe 04
    3773     jnc near 020a0h                           ; 0f 83 a5 00
     3913    je near 0237fh                            ; 0f 84 43 02
    37743914    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3775     sal ax, 008h                              ; c1 e0 08
    3776     or AL, strict byte 004h                   ; 0c 04
    3777     mov dx, 003ceh                            ; ba ce 03
    3778     out DX, ax                                ; ef
    3779     mov dx, bx                                ; 89 da
    3780     mov ax, 0a000h                            ; b8 00 a0
    3781     call 02fdch                               ; e8 cc 0f
    3782     and al, byte [bp-004h]                    ; 22 46 fc
    3783     test al, al                               ; 84 c0
    3784     jbe short 02020h                          ; 76 09
    3785     mov cl, byte [bp-002h]                    ; 8a 4e fe
    3786     mov AL, strict byte 001h                  ; b0 01
    3787     sal al, CL                                ; d2 e0
    3788     or ch, al                                 ; 08 c5
    3789     inc byte [bp-002h]                        ; fe 46 fe
    3790     jmp short 01ff3h                          ; eb ce
    3791     mov ax, word [bp-008h]                    ; 8b 46 f8
    3792     shr ax, 1                                 ; d1 e8
    3793     imul ax, ax, strict byte 00050h           ; 6b c0 50
    3794     mov bx, si                                ; 89 f3
    3795     shr bx, 002h                              ; c1 eb 02
    3796     add bx, ax                                ; 01 c3
    3797     test byte [bp-008h], 001h                 ; f6 46 f8 01
    3798     je short 0203dh                           ; 74 03
    3799     add bh, 020h                              ; 80 c7 20
    3800     mov dx, bx                                ; 89 da
    3801     mov ax, 0b800h                            ; b8 00 b8
    3802     call 02fdch                               ; e8 97 0f
    3803     movzx bx, cl                              ; 0f b6 d9
    3804     sal bx, 003h                              ; c1 e3 03
    3805     cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
    3806     jne short 02067h                          ; 75 15
    3807     and si, strict byte 00003h                ; 83 e6 03
    3808     mov cx, strict word 00003h                ; b9 03 00
    3809     sub cx, si                                ; 29 f1
    3810     add cx, cx                                ; 01 c9
    3811     xor ah, ah                                ; 30 e4
    3812     sar ax, CL                                ; d3 f8
    3813     mov ch, al                                ; 88 c5
    3814     and ch, 003h                              ; 80 e5 03
    3815     jmp short 020a0h                          ; eb 39
    3816     mov cx, si                                ; 89 f1
    3817     xor ch, ch                                ; 30 ed
    3818     and cl, 007h                              ; 80 e1 07
    3819     mov bx, strict word 00007h                ; bb 07 00
    3820     sub bx, cx                                ; 29 cb
    3821     mov cx, bx                                ; 89 d9
    3822     xor ah, ah                                ; 30 e4
    3823     sar ax, CL                                ; d3 f8
    3824     mov ch, al                                ; 88 c5
    3825     and ch, 001h                              ; 80 e5 01
    3826     jmp short 020a0h                          ; eb 20
    3827     mov dx, strict word 0004ah                ; ba 4a 00
    3828     mov ax, strict word 00040h                ; b8 40 00
    3829     call 02ff8h                               ; e8 6f 0f
    3830     sal ax, 003h                              ; c1 e0 03
    3831     imul ax, word [bp-008h]                   ; 0f af 46 f8
    3832     mov dx, si                                ; 89 f2
    3833     add dx, ax                                ; 01 c2
    3834     mov ax, 0a000h                            ; b8 00 a0
    3835     call 02fdch                               ; e8 42 0f
    3836     mov ch, al                                ; 88 c5
    3837     jmp short 020a0h                          ; eb 02
    3838     xor ch, ch                                ; 30 ed
    3839     mov dx, di                                ; 89 fa
    3840     mov ax, word [bp-006h]                    ; 8b 46 fa
    3841     call 02ff8h                               ; e8 50 0f
    3842     xor al, al                                ; 30 c0
    3843     movzx bx, ch                              ; 0f b6 dd
    3844     or bx, ax                                 ; 09 c3
    3845     mov dx, di                                ; 89 fa
    3846     mov ax, word [bp-006h]                    ; 8b 46 fa
    3847     call 03006h                               ; e8 4f 0f
    3848     leave                                     ; c9
    3849     pop di                                    ; 5f
    3850     pop si                                    ; 5e
    3851     retn                                      ; c3
    3852 biosfn_write_teletype_:                      ; 0xc20bb LB 0x28d
    3853     push si                                   ; 56
    3854     push di                                   ; 57
    3855     enter 00016h, 000h                        ; c8 16 00 00
    3856     mov byte [bp-004h], al                    ; 88 46 fc
    3857     mov byte [bp-00ch], dl                    ; 88 56 f4
    3858     mov byte [bp-006h], bl                    ; 88 5e fa
    3859     mov byte [bp-008h], cl                    ; 88 4e f8
    3860     cmp dl, 0ffh                              ; 80 fa ff
    3861     jne short 020deh                          ; 75 0c
    3862     mov dx, strict word 00062h                ; ba 62 00
    3863     mov ax, strict word 00040h                ; b8 40 00
    3864     call 02fdch                               ; e8 01 0f
    3865     mov byte [bp-00ch], al                    ; 88 46 f4
    3866     mov dx, strict word 00049h                ; ba 49 00
    3867     mov ax, strict word 00040h                ; b8 40 00
    3868     call 02fdch                               ; e8 f5 0e
    3869     xor ah, ah                                ; 30 e4
    3870     call 02fb5h                               ; e8 c9 0e
    3871     mov byte [bp-00eh], al                    ; 88 46 f2
    3872     cmp AL, strict byte 0ffh                  ; 3c ff
    3873     je near 02344h                            ; 0f 84 4f 02
    3874     lea dx, [bp-016h]                         ; 8d 56 ea
    3875     push SS                                   ; 16
    3876     push dx                                   ; 52
    3877     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    3878     mov cx, ss                                ; 8c d1
    3879     lea bx, [bp-014h]                         ; 8d 5e ec
    3880     call 00c53h                               ; e8 4d eb
     3915    lea bx, [bp-016h]                         ; 8d 5e ea
     3916    lea dx, [bp-014h]                         ; 8d 56 ec
     3917    call 00a8ch                               ; e8 43 e9
    38813918    mov al, byte [bp-016h]                    ; 8a 46 ea
    3882     mov byte [bp-00ah], al                    ; 88 46 f6
    3883     mov bx, word [bp-016h]                    ; 8b 5e ea
    3884     xor bl, bl                                ; 30 db
    3885     shr bx, 008h                              ; c1 eb 08
    3886     mov byte [bp-002h], bl                    ; 88 5e fe
    3887     mov dx, 00084h                            ; ba 84 00
    3888     mov ax, strict word 00040h                ; b8 40 00
    3889     call 02fdch                               ; e8 bc 0e
    3890     xor ah, ah                                ; 30 e4
    3891     inc ax                                    ; 40
    3892     mov word [bp-010h], ax                    ; 89 46 f0
    3893     mov dx, strict word 0004ah                ; ba 4a 00
    3894     mov ax, strict word 00040h                ; b8 40 00
    3895     call 02ff8h                               ; e8 c9 0e
    3896     mov word [bp-012h], ax                    ; 89 46 ee
    3897     mov al, byte [bp-004h]                    ; 8a 46 fc
    3898     cmp AL, strict byte 009h                  ; 3c 09
    3899     jc short 02145h                           ; 72 0c
    3900     jbe short 0216eh                          ; 76 33
    3901     cmp AL, strict byte 00dh                  ; 3c 0d
    3902     je short 0215fh                           ; 74 20
    3903     cmp AL, strict byte 00ah                  ; 3c 0a
    3904     je short 02166h                           ; 74 23
    3905     jmp short 021b3h                          ; eb 6e
    3906     cmp AL, strict byte 008h                  ; 3c 08
    3907     je short 02151h                           ; 74 08
    3908     cmp AL, strict byte 007h                  ; 3c 07
    3909     je near 0228fh                            ; 0f 84 40 01
    3910     jmp short 021b3h                          ; eb 62
    3911     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
    3912     jbe near 0228fh                           ; 0f 86 36 01
    3913     dec byte [bp-00ah]                        ; fe 4e f6
    3914     jmp near 0228fh                           ; e9 30 01
    3915     mov byte [bp-00ah], 000h                  ; c6 46 f6 00
    3916     jmp near 0228fh                           ; e9 29 01
    3917     db  0feh, 0c3h
    3918     ; inc bl                                    ; fe c3
    3919     mov byte [bp-002h], bl                    ; 88 5e fe
    3920     jmp near 0228fh                           ; e9 21 01
    3921     movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
    3922     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    3923     movzx si, byte [bp-00ch]                  ; 0f b6 76 f4
    3924     mov dx, si                                ; 89 f2
    3925     mov ax, strict word 00020h                ; b8 20 00
    3926     call 020bbh                               ; e8 39 ff
    3927     lea dx, [bp-016h]                         ; 8d 56 ea
    3928     push SS                                   ; 16
    3929     push dx                                   ; 52
    3930     mov cx, ss                                ; 8c d1
    3931     lea bx, [bp-014h]                         ; 8d 5e ec
    3932     mov ax, si                                ; 89 f0
    3933     call 00c53h                               ; e8 c2 ea
    3934     mov al, byte [bp-016h]                    ; 8a 46 ea
    3935     mov byte [bp-00ah], al                    ; 88 46 f6
     3919    mov byte [bp-006h], al                    ; 88 46 fa
    39363920    mov ax, word [bp-016h]                    ; 8b 46 ea
    39373921    xor al, al                                ; 30 c0
    39383922    shr ax, 008h                              ; c1 e8 08
    3939     mov byte [bp-002h], al                    ; 88 46 fe
    3940     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     3923    mov byte [bp-008h], al                    ; 88 46 f8
     3924    mov dx, 00084h                            ; ba 84 00
     3925    mov ax, strict word 00040h                ; b8 40 00
     3926    call 02f0ah                               ; e8 a7 0d
     3927    xor ah, ah                                ; 30 e4
     3928    inc ax                                    ; 40
     3929    mov word [bp-012h], ax                    ; 89 46 ee
     3930    mov dx, strict word 0004ah                ; ba 4a 00
     3931    mov ax, strict word 00040h                ; b8 40 00
     3932    call 02f26h                               ; e8 b4 0d
     3933    mov word [bp-010h], ax                    ; 89 46 f0
     3934    mov al, byte [bp-00ah]                    ; 8a 46 f6
     3935    cmp AL, strict byte 009h                  ; 3c 09
     3936    jc short 02188h                           ; 72 0c
     3937    jbe short 021afh                          ; 76 31
     3938    cmp AL, strict byte 00dh                  ; 3c 0d
     3939    je short 021a2h                           ; 74 20
     3940    cmp AL, strict byte 00ah                  ; 3c 0a
     3941    je short 021a9h                           ; 74 23
     3942    jmp short 021f0h                          ; eb 68
     3943    cmp AL, strict byte 008h                  ; 3c 08
     3944    je short 02194h                           ; 74 08
     3945    cmp AL, strict byte 007h                  ; 3c 07
     3946    je near 022cch                            ; 0f 84 3a 01
     3947    jmp short 021f0h                          ; eb 5c
     3948    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
     3949    jbe near 022cch                           ; 0f 86 30 01
     3950    dec byte [bp-006h]                        ; fe 4e fa
     3951    jmp near 022cch                           ; e9 2a 01
     3952    mov byte [bp-006h], 000h                  ; c6 46 fa 00
     3953    jmp near 022cch                           ; e9 23 01
     3954    inc byte [bp-008h]                        ; fe 46 f8
     3955    jmp near 022cch                           ; e9 1d 01
     3956    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     3957    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     3958    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
     3959    mov dx, si                                ; 89 f2
     3960    mov ax, strict word 00020h                ; b8 20 00
     3961    call 02103h                               ; e8 40 ff
     3962    lea bx, [bp-016h]                         ; 8d 5e ea
     3963    lea dx, [bp-014h]                         ; 8d 56 ec
     3964    mov ax, si                                ; 89 f0
     3965    call 00a8ch                               ; e8 be e8
     3966    mov al, byte [bp-016h]                    ; 8a 46 ea
     3967    mov byte [bp-006h], al                    ; 88 46 fa
     3968    mov ax, word [bp-016h]                    ; 8b 46 ea
     3969    xor al, al                                ; 30 c0
     3970    shr ax, 008h                              ; c1 e8 08
     3971    mov byte [bp-008h], al                    ; 88 46 f8
     3972    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     3973    mov bx, strict word 00008h                ; bb 08 00
    39413974    cwd                                       ; 99
    3942     mov bx, strict word 00008h                ; bb 08 00
    39433975    idiv bx                                   ; f7 fb
    39443976    test dx, dx                               ; 85 d2
    3945     je short 0216eh                           ; 74 be
    3946     jmp near 0228fh                           ; e9 dc 00
    3947     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     3977    je short 021afh                           ; 74 c2
     3978    jmp near 022cch                           ; e9 dc 00
     3979    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    39483980    mov si, bx                                ; 89 de
    39493981    sal si, 003h                              ; c1 e6 03
    39503982    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    3951     jne short 0220eh                          ; 75 4b
    3952     mov ax, word [bp-012h]                    ; 8b 46 ee
    3953     imul ax, word [bp-010h]                   ; 0f af 46 f0
     3983    jne short 0224bh                          ; 75 4b
     3984    mov ax, word [bp-010h]                    ; 8b 46 f0
     3985    imul ax, word [bp-012h]                   ; 0f af 46 ee
    39543986    add ax, ax                                ; 01 c0
    39553987    or AL, strict byte 0ffh                   ; 0c ff
    3956     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     3988    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
    39573989    inc ax                                    ; 40
    3958     imul ax, dx                               ; 0f af c2
    3959     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    3960     imul cx, word [bp-012h]                   ; 0f af 4e ee
    3961     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     3990    imul dx, ax                               ; 0f af d0
     3991    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
     3992    imul cx, word [bp-010h]                   ; 0f af 4e f0
     3993    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    39623994    add cx, bx                                ; 01 d9
    39633995    add cx, cx                                ; 01 c9
    3964     add cx, ax                                ; 01 c1
     3996    add cx, dx                                ; 01 d1
     3997    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     3998    mov ax, word [si+04833h]                  ; 8b 84 33 48
     3999    mov dx, cx                                ; 89 ca
     4000    call 02f18h                               ; e8 e6 0c
     4001    cmp byte [bp-00eh], 003h                  ; 80 7e f2 03
     4002    jne near 022c9h                           ; 0f 85 8f 00
    39654003    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    3966     mov ax, word [si+04833h]                  ; 8b 84 33 48
    3967     mov dx, cx                                ; 89 ca
    3968     call 02feah                               ; e8 f5 0d
    3969     cmp byte [bp-008h], 003h                  ; 80 7e f8 03
    3970     jne near 0228ch                           ; 0f 85 8f 00
    3971     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    39724004    mov dx, cx                                ; 89 ca
    39734005    inc dx                                    ; 42
    39744006    mov ax, word [si+04833h]                  ; 8b 84 33 48
    3975     call 02feah                               ; e8 df 0d
    3976     jmp near 0228ch                           ; e9 7e 00
     4007    call 02f18h                               ; e8 d0 0c
     4008    jmp near 022c9h                           ; e9 7e 00
    39774009    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
    39784010    sal bx, 006h                              ; c1 e3 06
    3979     mov dl, byte [bx+048c5h]                  ; 8a 97 c5 48
    3980     mov ah, byte [si+04832h]                  ; 8a a4 32 48
     4011    mov ah, byte [bx+048c5h]                  ; 8a a7 c5 48
     4012    mov dl, byte [si+04832h]                  ; 8a 94 32 48
    39814013    mov al, byte [si+04831h]                  ; 8a 84 31 48
    39824014    cmp AL, strict byte 003h                  ; 3c 03
    3983     jc short 02232h                           ; 72 0c
    3984     jbe short 02238h                          ; 76 10
     4015    jc short 0226fh                           ; 72 0c
     4016    jbe short 02275h                          ; 76 10
    39854017    cmp AL, strict byte 005h                  ; 3c 05
    3986     je short 02274h                           ; 74 48
     4018    je short 022b1h                           ; 74 48
    39874019    cmp AL, strict byte 004h                  ; 3c 04
    3988     je short 02238h                           ; 74 08
    3989     jmp short 0228ch                          ; eb 5a
     4020    je short 02275h                           ; 74 08
     4021    jmp short 022c9h                          ; eb 5a
    39904022    cmp AL, strict byte 002h                  ; 3c 02
    3991     je short 02256h                           ; 74 20
    3992     jmp short 0228ch                          ; eb 54
     4023    je short 02293h                           ; 74 20
     4024    jmp short 022c9h                          ; eb 54
     4025    movzx ax, ah                              ; 0f b6 c4
     4026    push ax                                   ; 50
     4027    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     4028    push ax                                   ; 50
     4029    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
     4030    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     4031    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     4032    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     4033    call 01a43h                               ; e8 b2 f7
     4034    jmp short 022c9h                          ; eb 36
    39934035    movzx ax, dl                              ; 0f b6 c2
    39944036    push ax                                   ; 50
    3995     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
    3996     push ax                                   ; 50
    3997     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    3998     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    3999     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    4000     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    4001     call 018ach                               ; e8 58 f6
    4002     jmp short 0228ch                          ; eb 36
    4003     movzx ax, ah                              ; 0f b6 c4
    4004     push ax                                   ; 50
    4005     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
    4006     push ax                                   ; 50
    4007     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    4008     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    4009     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    4010     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    4011     call 01992h                               ; e8 20 f7
    4012     jmp short 0228ch                          ; eb 18
    4013     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
    4014     push ax                                   ; 50
    4015     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    4016     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    4017     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    4018     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    4019     call 01aabh                               ; e8 1f f8
    4020     inc byte [bp-00ah]                        ; fe 46 f6
     4037    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     4038    push ax                                   ; 50
     4039    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
     4040    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     4041    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    40214042    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     4043    call 01b29h                               ; e8 7a f8
     4044    jmp short 022c9h                          ; eb 18
     4045    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     4046    push ax                                   ; 50
     4047    movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
     4048    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     4049    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     4050    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     4051    call 01c42h                               ; e8 79 f9
     4052    inc byte [bp-006h]                        ; fe 46 fa
     4053    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     4054    cmp ax, word [bp-010h]                    ; 3b 46 f0
     4055    jne short 022dch                          ; 75 07
     4056    mov byte [bp-006h], 000h                  ; c6 46 fa 00
     4057    inc byte [bp-008h]                        ; fe 46 f8
     4058    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    40224059    cmp ax, word [bp-012h]                    ; 3b 46 ee
    4023     jne short 0229fh                          ; 75 07
    4024     mov byte [bp-00ah], 000h                  ; c6 46 f6 00
    4025     inc byte [bp-002h]                        ; fe 46 fe
    4026     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    4027     cmp ax, word [bp-010h]                    ; 3b 46 f0
    4028     jne near 02328h                           ; 0f 85 7e 00
    4029     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     4060    jne near 02363h                           ; 0f 85 7c 00
     4061    movzx si, byte [bp-00ch]                  ; 0f b6 76 f4
    40304062    sal si, 003h                              ; c1 e6 03
    4031     mov bl, byte [bp-010h]                    ; 8a 5e f0
     4063    mov bl, byte [bp-012h]                    ; 8a 5e ee
    40324064    db  0feh, 0cbh
    40334065    ; dec bl                                    ; fe cb
    4034     mov bh, byte [bp-012h]                    ; 8a 7e ee
     4066    mov bh, byte [bp-010h]                    ; 8a 7e f0
    40354067    db  0feh, 0cfh
    40364068    ; dec bh                                    ; fe cf
    40374069    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    4038     jne short 0230ah                          ; 75 48
    4039     mov ax, word [bp-012h]                    ; 8b 46 ee
    4040     imul ax, word [bp-010h]                   ; 0f af 46 f0
     4070    jne short 02345h                          ; 75 46
     4071    mov ax, word [bp-010h]                    ; 8b 46 f0
     4072    imul ax, word [bp-012h]                   ; 0f af 46 ee
    40414073    add ax, ax                                ; 01 c0
    40424074    or AL, strict byte 0ffh                   ; 0c ff
    4043     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    4044     mov di, ax                                ; 89 c7
    4045     inc di                                    ; 47
    4046     imul di, dx                               ; 0f af fa
    4047     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    4048     dec cx                                    ; 49
    4049     imul cx, word [bp-012h]                   ; 0f af 4e ee
    4050     movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
     4075    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     4076    inc ax                                    ; 40
     4077    imul dx, ax                               ; 0f af d0
     4078    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     4079    dec ax                                    ; 48
     4080    imul ax, word [bp-010h]                   ; 0f af 46 f0
     4081    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     4082    add cx, ax                                ; 01 c1
     4083    add cx, cx                                ; 01 c9
    40514084    add dx, cx                                ; 01 ca
    4052     add dx, dx                                ; 01 d2
    4053     add dx, di                                ; 01 fa
    40544085    inc dx                                    ; 42
    40554086    mov ax, word [si+04833h]                  ; 8b 84 33 48
    4056     call 02fdch                               ; e8 ea 0c
     4087    call 02f0ah                               ; e8 dd 0b
    40574088    push strict byte 00001h                   ; 6a 01
    4058     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     4089    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
    40594090    push dx                                   ; 52
    40604091    movzx dx, bh                              ; 0f b6 d7
     
    40654096    xor cx, cx                                ; 31 c9
    40664097    xor bx, bx                                ; 31 db
    4067     jmp short 0231fh                          ; eb 15
     4098    jmp short 0235ah                          ; eb 15
    40684099    push strict byte 00001h                   ; 6a 01
    4069     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     4100    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    40704101    push ax                                   ; 50
    40714102    movzx ax, bh                              ; 0f b6 c7
     
    40774108    xor dx, dx                                ; 31 d2
    40784109    mov ax, strict word 00001h                ; b8 01 00
    4079     call 01306h                               ; e8 e1 ef
    4080     dec byte [bp-002h]                        ; fe 4e fe
    4081     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     4110    call 01542h                               ; e8 e2 f1
     4111    dec byte [bp-008h]                        ; fe 4e f8
     4112    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    40824113    mov word [bp-016h], ax                    ; 89 46 ea
    40834114    sal word [bp-016h], 008h                  ; c1 66 ea 08
    4084     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     4115    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    40854116    add word [bp-016h], ax                    ; 01 46 ea
    40864117    mov dx, word [bp-016h]                    ; 8b 56 ea
    4087     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    4088     call 00bb5h                               ; e8 71 e8
     4118    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     4119    call 00e4bh                               ; e8 cc ea
    40894120    leave                                     ; c9
    4090     pop di                                    ; 5f
    40914121    pop si                                    ; 5e
    40924122    retn                                      ; c3
    4093 get_font_access_:                            ; 0xc2348 LB 0x29
     4123get_font_access_:                            ; 0xc2382 LB 0x29
    40944124    push dx                                   ; 52
    40954125    push bp                                   ; 55
     
    41144144    pop dx                                    ; 5a
    41154145    retn                                      ; c3
    4116 release_font_access_:                        ; 0xc2371 LB 0x39
     4146release_font_access_:                        ; 0xc23ab LB 0x39
    41174147    push dx                                   ; 52
    41184148    push bp                                   ; 55
     
    41454175    pop dx                                    ; 5a
    41464176    retn                                      ; c3
    4147 set_scan_lines_:                             ; 0xc23aa LB 0xbc
     4177set_scan_lines_:                             ; 0xc23e4 LB 0xbc
    41484178    push bx                                   ; 53
    41494179    push cx                                   ; 51
     
    41564186    mov dx, strict word 00063h                ; ba 63 00
    41574187    mov ax, strict word 00040h                ; b8 40 00
    4158     call 02ff8h                               ; e8 3b 0c
     4188    call 02f26h                               ; e8 2f 0b
    41594189    mov dx, ax                                ; 89 c2
    41604190    mov si, ax                                ; 89 c6
     
    41734203    out DX, AL                                ; ee
    41744204    cmp bl, 008h                              ; 80 fb 08
    4175     jne short 023e1h                          ; 75 08
     4205    jne short 0241bh                          ; 75 08
    41764206    mov dx, strict word 00007h                ; ba 07 00
    41774207    mov ax, strict word 00006h                ; b8 06 00
    4178     jmp short 023eeh                          ; eb 0d
     4208    jmp short 02428h                          ; eb 0d
    41794209    mov al, bl                                ; 88 d8
    41804210    sub AL, strict byte 003h                  ; 2c 03
     
    41834213    sub AL, strict byte 004h                  ; 2c 04
    41844214    xor ah, ah                                ; 30 e4
    4185     call 00b14h                               ; e8 23 e7
     4215    call 00daah                               ; e8 7f e9
    41864216    movzx di, bl                              ; 0f b6 fb
    41874217    mov bx, di                                ; 89 fb
    41884218    mov dx, 00085h                            ; ba 85 00
    41894219    mov ax, strict word 00040h                ; b8 40 00
    4190     call 03006h                               ; e8 07 0c
     4220    call 02f34h                               ; e8 fb 0a
    41914221    mov AL, strict byte 012h                  ; b0 12
    41924222    mov dx, si                                ; 89 f2
     
    42234253    mov dx, 00084h                            ; ba 84 00
    42244254    mov ax, strict word 00040h                ; b8 40 00
    4225     call 02feah                               ; e8 a7 0b
     4255    call 02f18h                               ; e8 9b 0a
    42264256    mov dx, strict word 0004ah                ; ba 4a 00
    42274257    mov ax, strict word 00040h                ; b8 40 00
    4228     call 02ff8h                               ; e8 ac 0b
     4258    call 02f26h                               ; e8 a0 0a
    42294259    movzx dx, cl                              ; 0f b6 d1
    42304260    mov bx, ax                                ; 89 c3
     
    42334263    mov dx, strict word 0004ch                ; ba 4c 00
    42344264    mov ax, strict word 00040h                ; b8 40 00
    4235     call 03006h                               ; e8 a7 0b
     4265    call 02f34h                               ; e8 9b 0a
    42364266    pop bp                                    ; 5d
    42374267    pop di                                    ; 5f
     
    42414271    pop bx                                    ; 5b
    42424272    retn                                      ; c3
    4243 biosfn_load_text_user_pat_:                  ; 0xc2466 LB 0x78
     4273biosfn_load_text_user_pat_:                  ; 0xc24a0 LB 0x78
    42444274    push si                                   ; 56
    42454275    push di                                   ; 57
     
    42494279    mov word [bp-004h], bx                    ; 89 5e fc
    42504280    mov word [bp-006h], cx                    ; 89 4e fa
    4251     call 02348h                               ; e8 cd fe
     4281    call 02382h                               ; e8 cd fe
    42524282    mov al, byte [bp+00ah]                    ; 8a 46 0a
    42534283    and AL, strict byte 003h                  ; 24 03
     
    42634293    xor bx, bx                                ; 31 db
    42644294    cmp bx, word [bp-006h]                    ; 3b 5e fa
    4265     jnc short 024c8h                          ; 73 2b
     4295    jnc short 02502h                          ; 73 2b
    42664296    movzx cx, byte [bp+00ch]                  ; 0f b6 4e 0c
    42674297    mov si, bx                                ; 89 de
     
    42764306    mov es, ax                                ; 8e c0
    42774307    cld                                       ; fc
    4278     jcxz 024c5h                               ; e3 06
     4308    jcxz 024ffh                               ; e3 06
    42794309    push DS                                   ; 1e
    42804310    mov ds, dx                                ; 8e da
     
    42824312    pop DS                                    ; 1f
    42834313    inc bx                                    ; 43
    4284     jmp short 02498h                          ; eb d0
    4285     call 02371h                               ; e8 a6 fe
     4314    jmp short 024d2h                          ; eb d0
     4315    call 023abh                               ; e8 a6 fe
    42864316    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4287     jc short 024d8h                           ; 72 07
     4317    jc short 02512h                           ; 72 07
    42884318    movzx ax, byte [bp+00ch]                  ; 0f b6 46 0c
    4289     call 023aah                               ; e8 d2 fe
     4319    call 023e4h                               ; e8 d2 fe
    42904320    leave                                     ; c9
    42914321    pop di                                    ; 5f
    42924322    pop si                                    ; 5e
    42934323    retn 00006h                               ; c2 06 00
    4294 biosfn_load_text_8_14_pat_:                  ; 0xc24de LB 0x6c
     4324biosfn_load_text_8_14_pat_:                  ; 0xc2518 LB 0x6c
    42954325    push bx                                   ; 53
    42964326    push cx                                   ; 51
     
    42994329    enter 00004h, 000h                        ; c8 04 00 00
    43004330    mov byte [bp-002h], al                    ; 88 46 fe
    4301     call 02348h                               ; e8 5c fe
     4331    call 02382h                               ; e8 5c fe
    43024332    mov al, dl                                ; 88 d0
    43034333    and AL, strict byte 003h                  ; 24 03
     
    43124342    mov word [bp-004h], bx                    ; 89 5e fc
    43134343    xor bx, bx                                ; 31 db
    4314     jmp short 0250fh                          ; eb 06
     4344    jmp short 02549h                          ; eb 06
    43154345    cmp bx, 00100h                            ; 81 fb 00 01
    4316     jnc short 02535h                          ; 73 26
     4346    jnc short 0256fh                          ; 73 26
    43174347    imul si, bx, strict byte 0000eh           ; 6b f3 0e
    43184348    mov di, bx                                ; 89 df
     
    43254355    mov es, ax                                ; 8e c0
    43264356    cld                                       ; fc
    4327     jcxz 02532h                               ; e3 06
     4357    jcxz 0256ch                               ; e3 06
    43284358    push DS                                   ; 1e
    43294359    mov ds, dx                                ; 8e da
     
    43314361    pop DS                                    ; 1f
    43324362    inc bx                                    ; 43
    4333     jmp short 02509h                          ; eb d4
    4334     call 02371h                               ; e8 39 fe
     4363    jmp short 02543h                          ; eb d4
     4364    call 023abh                               ; e8 39 fe
    43354365    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4336     jc short 02544h                           ; 72 06
     4366    jc short 0257eh                           ; 72 06
    43374367    mov ax, strict word 0000eh                ; b8 0e 00
    4338     call 023aah                               ; e8 66 fe
     4368    call 023e4h                               ; e8 66 fe
    43394369    leave                                     ; c9
    43404370    pop di                                    ; 5f
     
    43434373    pop bx                                    ; 5b
    43444374    retn                                      ; c3
    4345 biosfn_load_text_8_8_pat_:                   ; 0xc254a LB 0x6e
     4375biosfn_load_text_8_8_pat_:                   ; 0xc2584 LB 0x6e
    43464376    push bx                                   ; 53
    43474377    push cx                                   ; 51
     
    43504380    enter 00004h, 000h                        ; c8 04 00 00
    43514381    mov byte [bp-002h], al                    ; 88 46 fe
    4352     call 02348h                               ; e8 f0 fd
     4382    call 02382h                               ; e8 f0 fd
    43534383    mov al, dl                                ; 88 d0
    43544384    and AL, strict byte 003h                  ; 24 03
     
    43634393    mov word [bp-004h], bx                    ; 89 5e fc
    43644394    xor bx, bx                                ; 31 db
    4365     jmp short 0257bh                          ; eb 06
     4395    jmp short 025b5h                          ; eb 06
    43664396    cmp bx, 00100h                            ; 81 fb 00 01
    4367     jnc short 025a3h                          ; 73 28
     4397    jnc short 025ddh                          ; 73 28
    43684398    mov si, bx                                ; 89 de
    43694399    sal si, 003h                              ; c1 e6 03
     
    43774407    mov es, ax                                ; 8e c0
    43784408    cld                                       ; fc
    4379     jcxz 025a0h                               ; e3 06
     4409    jcxz 025dah                               ; e3 06
    43804410    push DS                                   ; 1e
    43814411    mov ds, dx                                ; 8e da
     
    43834413    pop DS                                    ; 1f
    43844414    inc bx                                    ; 43
    4385     jmp short 02575h                          ; eb d2
    4386     call 02371h                               ; e8 cb fd
     4415    jmp short 025afh                          ; eb d2
     4416    call 023abh                               ; e8 cb fd
    43874417    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4388     jc short 025b2h                           ; 72 06
     4418    jc short 025ech                           ; 72 06
    43894419    mov ax, strict word 00008h                ; b8 08 00
    4390     call 023aah                               ; e8 f8 fd
     4420    call 023e4h                               ; e8 f8 fd
    43914421    leave                                     ; c9
    43924422    pop di                                    ; 5f
     
    43954425    pop bx                                    ; 5b
    43964426    retn                                      ; c3
    4397 biosfn_load_text_8_16_pat_:                  ; 0xc25b8 LB 0x6e
     4427biosfn_load_text_8_16_pat_:                  ; 0xc25f2 LB 0x6e
    43984428    push bx                                   ; 53
    43994429    push cx                                   ; 51
     
    44024432    enter 00004h, 000h                        ; c8 04 00 00
    44034433    mov byte [bp-002h], al                    ; 88 46 fe
    4404     call 02348h                               ; e8 82 fd
     4434    call 02382h                               ; e8 82 fd
    44054435    mov al, dl                                ; 88 d0
    44064436    and AL, strict byte 003h                  ; 24 03
     
    44154445    mov word [bp-004h], bx                    ; 89 5e fc
    44164446    xor bx, bx                                ; 31 db
    4417     jmp short 025e9h                          ; eb 06
     4447    jmp short 02623h                          ; eb 06
    44184448    cmp bx, 00100h                            ; 81 fb 00 01
    4419     jnc short 02611h                          ; 73 28
     4449    jnc short 0264bh                          ; 73 28
    44204450    mov si, bx                                ; 89 de
    44214451    sal si, 004h                              ; c1 e6 04
     
    44294459    mov es, ax                                ; 8e c0
    44304460    cld                                       ; fc
    4431     jcxz 0260eh                               ; e3 06
     4461    jcxz 02648h                               ; e3 06
    44324462    push DS                                   ; 1e
    44334463    mov ds, dx                                ; 8e da
     
    44354465    pop DS                                    ; 1f
    44364466    inc bx                                    ; 43
    4437     jmp short 025e3h                          ; eb d2
    4438     call 02371h                               ; e8 5d fd
     4467    jmp short 0261dh                          ; eb d2
     4468    call 023abh                               ; e8 5d fd
    44394469    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4440     jc short 02620h                           ; 72 06
     4470    jc short 0265ah                           ; 72 06
    44414471    mov ax, strict word 00010h                ; b8 10 00
    4442     call 023aah                               ; e8 8a fd
     4472    call 023e4h                               ; e8 8a fd
    44434473    leave                                     ; c9
    44444474    pop di                                    ; 5f
     
    44474477    pop bx                                    ; 5b
    44484478    retn                                      ; c3
    4449 biosfn_load_gfx_8_8_chars_:                  ; 0xc2626 LB 0x5
     4479biosfn_load_gfx_8_8_chars_:                  ; 0xc2660 LB 0x5
    44504480    push bp                                   ; 55
    44514481    mov bp, sp                                ; 89 e5
    44524482    pop bp                                    ; 5d
    44534483    retn                                      ; c3
    4454 biosfn_load_gfx_user_chars_:                 ; 0xc262b LB 0x7
     4484biosfn_load_gfx_user_chars_:                 ; 0xc2665 LB 0x7
    44554485    push bp                                   ; 55
    44564486    mov bp, sp                                ; 89 e5
    44574487    pop bp                                    ; 5d
    44584488    retn 00002h                               ; c2 02 00
    4459 biosfn_load_gfx_8_14_chars_:                 ; 0xc2632 LB 0x5
     4489biosfn_load_gfx_8_14_chars_:                 ; 0xc266c LB 0x5
    44604490    push bp                                   ; 55
    44614491    mov bp, sp                                ; 89 e5
    44624492    pop bp                                    ; 5d
    44634493    retn                                      ; c3
    4464 biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2637 LB 0x5
     4494biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2671 LB 0x5
    44654495    push bp                                   ; 55
    44664496    mov bp, sp                                ; 89 e5
    44674497    pop bp                                    ; 5d
    44684498    retn                                      ; c3
    4469 biosfn_load_gfx_8_16_chars_:                 ; 0xc263c LB 0x15
     4499biosfn_load_gfx_8_16_chars_:                 ; 0xc2676 LB 0x5
    44704500    push bp                                   ; 55
    44714501    mov bp, sp                                ; 89 e5
    44724502    pop bp                                    ; 5d
    44734503    retn                                      ; c3
    4474     jns short 02669h                          ; 79 26
    4475     pushfw                                    ; 9c
    4476     db  026h, 0eeh
    4477     ; es out DX, AL                             ; 26 ee
    4478     db  026h, 0fbh
    4479     ; es sti                                    ; 26 fb
    4480     or byte [es:bx], ah                       ; 26 08 27
    4481     adc ax, 02227h                            ; 15 27 22
    4482     daa                                       ; 27
    4483     das                                       ; 2f
    4484     daa                                       ; 27
    4485 biosfn_get_font_info_:                       ; 0xc2651 LB 0xee
    4486     push si                                   ; 56
    4487     push di                                   ; 57
    4488     enter 00004h, 000h                        ; c8 04 00 00
    4489     push ax                                   ; 50
    4490     mov di, dx                                ; 89 d7
    4491     mov si, bx                                ; 89 de
    4492     mov word [bp-004h], cx                    ; 89 4e fc
    4493     mov ax, ss                                ; 8c d0
    4494     mov cx, ax                                ; 89 c1
    4495     mov word [bp-002h], ax                    ; 89 46 fe
    4496     mov ax, word [bp-006h]                    ; 8b 46 fa
    4497     cmp ax, strict word 00007h                ; 3d 07 00
    4498     jnbe near 026e8h                          ; 0f 87 78 00
    4499     mov bx, ax                                ; 89 c3
    4500     add bx, ax                                ; 01 c3
    4501     jmp word [cs:bx+02641h]                   ; 2e ff a7 41 26
    4502     mov dx, strict word 0007ch                ; ba 7c 00
    4503     xor ax, ax                                ; 31 c0
    4504     call 02ff8h                               ; e8 77 09
    4505     mov bx, ax                                ; 89 c3
    4506     mov dx, di                                ; 89 fa
    4507     mov ax, word [bp-002h]                    ; 8b 46 fe
    4508     call 03006h                               ; e8 7b 09
    4509     mov dx, strict word 0007eh                ; ba 7e 00
    4510     xor ax, ax                                ; 31 c0
    4511     call 02ff8h                               ; e8 65 09
    4512     mov bx, ax                                ; 89 c3
    4513     mov dx, si                                ; 89 f2
    4514     mov ax, word [bp-002h]                    ; 8b 46 fe
    4515     jmp short 026bbh                          ; eb 1f
    4516     mov dx, 0010ch                            ; ba 0c 01
    4517     xor ax, ax                                ; 31 c0
    4518     call 02ff8h                               ; e8 54 09
    4519     mov bx, ax                                ; 89 c3
    4520     mov dx, di                                ; 89 fa
    4521     mov ax, cx                                ; 89 c8
    4522     call 03006h                               ; e8 59 09
    4523     mov dx, 0010eh                            ; ba 0e 01
    4524     xor ax, ax                                ; 31 c0
    4525     call 02ff8h                               ; e8 43 09
    4526     mov bx, ax                                ; 89 c3
    4527     mov dx, si                                ; 89 f2
    4528     mov ax, cx                                ; 89 c8
    4529     call 03006h                               ; e8 48 09
    4530     mov dx, 00085h                            ; ba 85 00
    4531     mov ax, strict word 00040h                ; b8 40 00
    4532     call 02fdch                               ; e8 15 09
    4533     movzx bx, al                              ; 0f b6 d8
    4534     mov dx, word [bp-004h]                    ; 8b 56 fc
    4535     mov ax, word [bp-002h]                    ; 8b 46 fe
    4536     call 03006h                               ; e8 33 09
    4537     mov dx, 00084h                            ; ba 84 00
    4538     mov ax, strict word 00040h                ; b8 40 00
    4539     call 02fdch                               ; e8 00 09
    4540     movzx bx, al                              ; 0f b6 d8
    4541     mov dx, word [bp+008h]                    ; 8b 56 08
    4542     mov ax, word [bp-002h]                    ; 8b 46 fe
    4543     call 03006h                               ; e8 1e 09
    4544     leave                                     ; c9
    4545     pop di                                    ; 5f
    4546     pop si                                    ; 5e
    4547     retn 00002h                               ; c2 02 00
    4548     mov bx, 0c000h                            ; bb 00 c0
    4549     mov ax, cx                                ; 89 c8
    4550     call 03006h                               ; e8 10 09
    4551     mov bx, 05dafh                            ; bb af 5d
    4552     jmp short 026b7h                          ; eb bc
    4553     mov bx, 0c000h                            ; bb 00 c0
    4554     mov ax, cx                                ; 89 c8
    4555     call 03006h                               ; e8 03 09
    4556     mov bx, 055afh                            ; bb af 55
    4557     jmp short 026b7h                          ; eb af
    4558     mov bx, 0c000h                            ; bb 00 c0
    4559     mov ax, cx                                ; 89 c8
    4560     call 03006h                               ; e8 f6 08
    4561     mov bx, 059afh                            ; bb af 59
    4562     jmp short 026b7h                          ; eb a2
    4563     mov bx, 0c000h                            ; bb 00 c0
    4564     mov ax, cx                                ; 89 c8
    4565     call 03006h                               ; e8 e9 08
    4566     mov bx, 07bafh                            ; bb af 7b
    4567     jmp short 026b7h                          ; eb 95
    4568     mov bx, 0c000h                            ; bb 00 c0
    4569     mov ax, cx                                ; 89 c8
    4570     call 03006h                               ; e8 dc 08
    4571     mov bx, 06bafh                            ; bb af 6b
    4572     jmp short 026b7h                          ; eb 88
    4573     mov bx, 0c000h                            ; bb 00 c0
    4574     mov ax, cx                                ; 89 c8
    4575     call 03006h                               ; e8 cf 08
    4576     mov bx, 07cdch                            ; bb dc 7c
    4577     jmp near 026b7h                           ; e9 7a ff
    4578     jmp short 026e8h                          ; eb a9
    4579 biosfn_alternate_prtsc_:                     ; 0xc273f LB 0x5
     4504biosfn_alternate_prtsc_:                     ; 0xc267b LB 0x5
    45804505    push bp                                   ; 55
    45814506    mov bp, sp                                ; 89 e5
    45824507    pop bp                                    ; 5d
    45834508    retn                                      ; c3
    4584 biosfn_switch_video_interface_:              ; 0xc2744 LB 0x5
     4509biosfn_switch_video_interface_:              ; 0xc2680 LB 0x5
    45854510    push bp                                   ; 55
    45864511    mov bp, sp                                ; 89 e5
    45874512    pop bp                                    ; 5d
    45884513    retn                                      ; c3
    4589 biosfn_enable_video_refresh_control_:        ; 0xc2749 LB 0x5
     4514biosfn_enable_video_refresh_control_:        ; 0xc2685 LB 0x5
    45904515    push bp                                   ; 55
    45914516    mov bp, sp                                ; 89 e5
    45924517    pop bp                                    ; 5d
    45934518    retn                                      ; c3
    4594 biosfn_write_string_:                        ; 0xc274e LB 0x9c
     4519biosfn_write_string_:                        ; 0xc268a LB 0x97
    45954520    push si                                   ; 56
    45964521    push di                                   ; 57
    45974522    enter 0000ah, 000h                        ; c8 0a 00 00
    4598     mov byte [bp-004h], al                    ; 88 46 fc
    4599     mov byte [bp-002h], dl                    ; 88 56 fe
    4600     mov byte [bp-006h], bl                    ; 88 5e fa
     4523    mov byte [bp-006h], al                    ; 88 46 fa
     4524    mov byte [bp-004h], dl                    ; 88 56 fc
     4525    mov byte [bp-002h], bl                    ; 88 5e fe
    46014526    mov si, cx                                ; 89 ce
    46024527    mov di, word [bp+00eh]                    ; 8b 7e 0e
     4528    movzx ax, dl                              ; 0f b6 c2
     4529    lea bx, [bp-00ah]                         ; 8d 5e f6
    46034530    lea dx, [bp-008h]                         ; 8d 56 f8
    4604     push SS                                   ; 16
    4605     push dx                                   ; 52
    4606     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    4607     mov cx, ss                                ; 8c d1
    4608     lea bx, [bp-00ah]                         ; 8d 5e f6
    4609     call 00c53h                               ; e8 e0 e4
     4531    call 00a8ch                               ; e8 e2 e3
    46104532    cmp byte [bp+008h], 0ffh                  ; 80 7e 08 ff
    4611     jne short 0278ah                          ; 75 11
    4612     mov al, byte [bp-008h]                    ; 8a 46 f8
     4533    jne short 026c1h                          ; 75 11
     4534    mov al, byte [bp-00ah]                    ; 8a 46 f6
    46134535    mov byte [bp+00ah], al                    ; 88 46 0a
    4614     mov ax, word [bp-008h]                    ; 8b 46 f8
     4536    mov ax, word [bp-00ah]                    ; 8b 46 f6
    46154537    xor al, al                                ; 30 c0
    46164538    shr ax, 008h                              ; c1 e8 08
     
    46204542    movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
    46214543    add dx, ax                                ; 01 c2
    4622     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    4623     call 00bb5h                               ; e8 17 e4
     4544    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     4545    call 00e4bh                               ; e8 76 e7
    46244546    dec si                                    ; 4e
    46254547    cmp si, strict byte 0ffffh                ; 83 fe ff
    4626     je short 027d4h                           ; 74 30
     4548    je short 0270bh                           ; 74 30
    46274549    mov dx, di                                ; 89 fa
    46284550    inc di                                    ; 47
    46294551    mov ax, word [bp+00ch]                    ; 8b 46 0c
    4630     call 02fdch                               ; e8 2f 08
     4552    call 02f0ah                               ; e8 26 08
    46314553    mov cl, al                                ; 88 c1
    4632     test byte [bp-004h], 002h                 ; f6 46 fc 02
    4633     je short 027c1h                           ; 74 0c
     4554    test byte [bp-006h], 002h                 ; f6 46 fa 02
     4555    je short 026f8h                           ; 74 0c
    46344556    mov dx, di                                ; 89 fa
    46354557    inc di                                    ; 47
    46364558    mov ax, word [bp+00ch]                    ; 8b 46 0c
    4637     call 02fdch                               ; e8 1e 08
    4638     mov byte [bp-006h], al                    ; 88 46 fa
    4639     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    4640     movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     4559    call 02f0ah                               ; e8 15 08
     4560    mov byte [bp-002h], al                    ; 88 46 fe
     4561    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     4562    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    46414563    movzx ax, cl                              ; 0f b6 c1
    46424564    mov cx, strict word 00003h                ; b9 03 00
    4643     call 020bbh                               ; e8 e9 f8
    4644     jmp short 0279eh                          ; eb ca
    4645     test byte [bp-004h], 001h                 ; f6 46 fc 01
    4646     jne short 027e4h                          ; 75 0a
    4647     mov dx, word [bp-008h]                    ; 8b 56 f8
    4648     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    4649     call 00bb5h                               ; e8 d1 e3
     4565    call 02103h                               ; e8 fa f9
     4566    jmp short 026d5h                          ; eb ca
     4567    test byte [bp-006h], 001h                 ; f6 46 fa 01
     4568    jne short 0271bh                          ; 75 0a
     4569    mov dx, word [bp-00ah]                    ; 8b 56 f6
     4570    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     4571    call 00e4bh                               ; e8 30 e7
    46504572    leave                                     ; c9
    46514573    pop di                                    ; 5f
    46524574    pop si                                    ; 5e
    46534575    retn 00008h                               ; c2 08 00
    4654 biosfn_read_state_info_:                     ; 0xc27ea LB 0x10a
     4576biosfn_read_state_info_:                     ; 0xc2721 LB 0x10a
    46554577    push cx                                   ; 51
    46564578    push si                                   ; 56
     
    46634585    mov dx, word [bp-004h]                    ; 8b 56 fc
    46644586    mov ax, word [bp-002h]                    ; 8b 46 fe
    4665     call 03006h                               ; e8 08 08
     4587    call 02f34h                               ; e8 ff 07
    46664588    mov dx, word [bp-004h]                    ; 8b 56 fc
    46674589    inc dx                                    ; 42
     
    46694591    mov bx, 0c000h                            ; bb 00 c0
    46704592    mov ax, word [bp-002h]                    ; 8b 46 fe
    4671     call 03006h                               ; e8 fa 07
     4593    call 02f34h                               ; e8 f1 07
    46724594    mov di, word [bp-004h]                    ; 8b 7e fc
    46734595    add di, strict byte 00004h                ; 83 c7 04
     
    46774599    mov es, [bp-002h]                         ; 8e 46 fe
    46784600    cld                                       ; fc
    4679     jcxz 02827h                               ; e3 06
     4601    jcxz 0275eh                               ; e3 06
    46804602    push DS                                   ; 1e
    46814603    mov ds, dx                                ; 8e da
     
    46894611    mov es, [bp-002h]                         ; 8e 46 fe
    46904612    cld                                       ; fc
    4691     jcxz 02842h                               ; e3 06
     4613    jcxz 02779h                               ; e3 06
    46924614    push DS                                   ; 1e
    46934615    mov ds, dx                                ; 8e da
     
    46964618    mov dx, 0008ah                            ; ba 8a 00
    46974619    mov ax, strict word 00040h                ; b8 40 00
    4698     call 02fdch                               ; e8 91 07
     4620    call 02f0ah                               ; e8 88 07
    46994621    movzx bx, al                              ; 0f b6 d8
    47004622    mov dx, word [bp-004h]                    ; 8b 56 fc
    47014623    add dx, strict byte 00025h                ; 83 c2 25
    47024624    mov ax, word [bp-002h]                    ; 8b 46 fe
    4703     call 02feah                               ; e8 90 07
     4625    call 02f18h                               ; e8 87 07
    47044626    mov dx, word [bp-004h]                    ; 8b 56 fc
    47054627    add dx, strict byte 00026h                ; 83 c2 26
    47064628    xor bx, bx                                ; 31 db
    47074629    mov ax, word [bp-002h]                    ; 8b 46 fe
    4708     call 02feah                               ; e8 82 07
     4630    call 02f18h                               ; e8 79 07
    47094631    mov dx, word [bp-004h]                    ; 8b 56 fc
    47104632    add dx, strict byte 00027h                ; 83 c2 27
    47114633    mov bx, strict word 00010h                ; bb 10 00
    47124634    mov ax, word [bp-002h]                    ; 8b 46 fe
    4713     call 02feah                               ; e8 73 07
     4635    call 02f18h                               ; e8 6a 07
    47144636    mov dx, word [bp-004h]                    ; 8b 56 fc
    47154637    add dx, strict byte 00028h                ; 83 c2 28
    47164638    xor bx, bx                                ; 31 db
    47174639    mov ax, word [bp-002h]                    ; 8b 46 fe
    4718     call 02feah                               ; e8 65 07
     4640    call 02f18h                               ; e8 5c 07
    47194641    mov dx, word [bp-004h]                    ; 8b 56 fc
    47204642    add dx, strict byte 00029h                ; 83 c2 29
    47214643    mov bx, strict word 00008h                ; bb 08 00
    47224644    mov ax, word [bp-002h]                    ; 8b 46 fe
    4723     call 02feah                               ; e8 56 07
     4645    call 02f18h                               ; e8 4d 07
    47244646    mov dx, word [bp-004h]                    ; 8b 56 fc
    47254647    add dx, strict byte 0002ah                ; 83 c2 2a
    47264648    mov bx, strict word 00002h                ; bb 02 00
    47274649    mov ax, word [bp-002h]                    ; 8b 46 fe
    4728     call 02feah                               ; e8 47 07
     4650    call 02f18h                               ; e8 3e 07
    47294651    mov dx, word [bp-004h]                    ; 8b 56 fc
    47304652    add dx, strict byte 0002bh                ; 83 c2 2b
    47314653    xor bx, bx                                ; 31 db
    47324654    mov ax, word [bp-002h]                    ; 8b 46 fe
    4733     call 02feah                               ; e8 39 07
     4655    call 02f18h                               ; e8 30 07
    47344656    mov dx, word [bp-004h]                    ; 8b 56 fc
    47354657    add dx, strict byte 0002ch                ; 83 c2 2c
    47364658    xor bx, bx                                ; 31 db
    47374659    mov ax, word [bp-002h]                    ; 8b 46 fe
    4738     call 02feah                               ; e8 2b 07
     4660    call 02f18h                               ; e8 22 07
    47394661    mov dx, word [bp-004h]                    ; 8b 56 fc
    47404662    add dx, strict byte 00031h                ; 83 c2 31
    47414663    mov bx, strict word 00003h                ; bb 03 00
    47424664    mov ax, word [bp-002h]                    ; 8b 46 fe
    4743     call 02feah                               ; e8 1c 07
     4665    call 02f18h                               ; e8 13 07
    47444666    mov dx, word [bp-004h]                    ; 8b 56 fc
    47454667    add dx, strict byte 00032h                ; 83 c2 32
    47464668    xor bx, bx                                ; 31 db
    47474669    mov ax, word [bp-002h]                    ; 8b 46 fe
    4748     call 02feah                               ; e8 0e 07
     4670    call 02f18h                               ; e8 05 07
    47494671    mov di, word [bp-004h]                    ; 8b 7e fc
    47504672    add di, strict byte 00033h                ; 83 c7 33
     
    47534675    mov es, [bp-002h]                         ; 8e 46 fe
    47544676    cld                                       ; fc
    4755     jcxz 028efh                               ; e3 02
     4677    jcxz 02826h                               ; e3 02
    47564678    rep stosb                                 ; f3 aa
    47574679    leave                                     ; c9
     
    47604682    pop cx                                    ; 59
    47614683    retn                                      ; c3
    4762 biosfn_read_video_state_size2_:              ; 0xc28f4 LB 0x23
     4684biosfn_read_video_state_size2_:              ; 0xc282b LB 0x23
    47634685    push dx                                   ; 52
    47644686    push bp                                   ; 55
     
    47674689    xor ax, ax                                ; 31 c0
    47684690    test dl, 001h                             ; f6 c2 01
    4769     je short 02904h                           ; 74 03
     4691    je short 0283bh                           ; 74 03
    47704692    mov ax, strict word 00046h                ; b8 46 00
    47714693    test dl, 002h                             ; f6 c2 02
    4772     je short 0290ch                           ; 74 03
     4694    je short 02843h                           ; 74 03
    47734695    add ax, strict word 0002ah                ; 05 2a 00
    47744696    test dl, 004h                             ; f6 c2 04
    4775     je short 02914h                           ; 74 03
     4697    je short 0284bh                           ; 74 03
    47764698    add ax, 00304h                            ; 05 04 03
    47774699    pop bp                                    ; 5d
    47784700    pop dx                                    ; 5a
    47794701    retn                                      ; c3
    4780 biosfn_read_video_state_size_:               ; 0xc2917 LB 0x1b
     4702vga_get_video_state_size_:                   ; 0xc284e LB 0xf
    47814703    push bx                                   ; 53
    4782     push cx                                   ; 51
    47834704    push bp                                   ; 55
    47844705    mov bp, sp                                ; 89 e5
    4785     mov bx, ax                                ; 89 c3
    4786     mov ax, ss                                ; 8c d0
    4787     mov cx, ax                                ; 89 c1
    4788     mov ax, bx                                ; 89 d8
    4789     call 028f4h                               ; e8 cd ff
    4790     mov bx, ax                                ; 89 c3
    4791     mov ax, cx                                ; 89 c8
    4792     call 03006h                               ; e8 d8 06
     4706    mov bx, dx                                ; 89 d3
     4707    call 0282bh                               ; e8 d4 ff
     4708    mov word [ss:bx], ax                      ; 36 89 07
    47934709    pop bp                                    ; 5d
    4794     pop cx                                    ; 59
    47954710    pop bx                                    ; 5b
    47964711    retn                                      ; c3
    4797 biosfn_save_video_state_:                    ; 0xc2932 LB 0x365
     4712biosfn_save_video_state_:                    ; 0xc285d LB 0x365
    47984713    push cx                                   ; 51
    47994714    push si                                   ; 56
     
    48054720    mov dx, strict word 00063h                ; ba 63 00
    48064721    mov ax, strict word 00040h                ; b8 40 00
    4807     call 02ff8h                               ; e8 b1 06
     4722    call 02f26h                               ; e8 b4 06
    48084723    mov di, ax                                ; 89 c7
    48094724    test byte [bp-006h], 001h                 ; f6 46 fa 01
    4810     je near 02ab4h                            ; 0f 84 63 01
     4725    je near 029dfh                            ; 0f 84 63 01
    48114726    mov dx, 003c4h                            ; ba c4 03
    48124727    in AL, DX                                 ; ec
     
    48164731    mov dx, cx                                ; 89 ca
    48174732    mov ax, si                                ; 89 f0
    4818     call 02feah                               ; e8 89 06
     4733    call 02f18h                               ; e8 8c 06
    48194734    inc cx                                    ; 41
    48204735    mov dx, di                                ; 89 fa
     
    48254740    mov dx, cx                                ; 89 ca
    48264741    mov ax, si                                ; 89 f0
    4827     call 02feah                               ; e8 79 06
     4742    call 02f18h                               ; e8 7c 06
    48284743    inc cx                                    ; 41
    48294744    mov dx, 003ceh                            ; ba ce 03
     
    48344749    mov dx, cx                                ; 89 ca
    48354750    mov ax, si                                ; 89 f0
    4836     call 02feah                               ; e8 68 06
     4751    call 02f18h                               ; e8 6b 06
    48374752    inc cx                                    ; 41
    48384753    mov dx, 003dah                            ; ba da 03
     
    48484763    mov dx, cx                                ; 89 ca
    48494764    mov ax, si                                ; 89 f0
    4850     call 02feah                               ; e8 4d 06
     4765    call 02f18h                               ; e8 50 06
    48514766    inc cx                                    ; 41
    48524767    mov dx, 003cah                            ; ba ca 03
     
    48574772    mov dx, cx                                ; 89 ca
    48584773    mov ax, si                                ; 89 f0
    4859     call 02feah                               ; e8 3c 06
     4774    call 02f18h                               ; e8 3f 06
    48604775    mov ax, strict word 00001h                ; b8 01 00
    48614776    mov word [bp-004h], ax                    ; 89 46 fc
    48624777    add cx, ax                                ; 01 c1
    4863     jmp short 029beh                          ; eb 06
     4778    jmp short 028e9h                          ; eb 06
    48644779    cmp word [bp-004h], strict byte 00004h    ; 83 7e fc 04
    4865     jnbe short 029dbh                         ; 77 1d
     4780    jnbe short 02906h                         ; 77 1d
    48664781    mov al, byte [bp-004h]                    ; 8a 46 fc
    48674782    mov dx, 003c4h                            ; ba c4 03
     
    48744789    mov dx, cx                                ; 89 ca
    48754790    mov ax, si                                ; 89 f0
    4876     call 02feah                               ; e8 15 06
     4791    call 02f18h                               ; e8 18 06
    48774792    inc cx                                    ; 41
    48784793    inc word [bp-004h]                        ; ff 46 fc
    4879     jmp short 029b8h                          ; eb dd
     4794    jmp short 028e3h                          ; eb dd
    48804795    xor al, al                                ; 30 c0
    48814796    mov dx, 003c4h                            ; ba c4 03
     
    48884803    mov dx, cx                                ; 89 ca
    48894804    mov ax, si                                ; 89 f0
    4890     call 02feah                               ; e8 f9 05
     4805    call 02f18h                               ; e8 fc 05
    48914806    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    48924807    inc cx                                    ; 41
    4893     jmp short 029ffh                          ; eb 06
     4808    jmp short 0292ah                          ; eb 06
    48944809    cmp word [bp-004h], strict byte 00018h    ; 83 7e fc 18
    4895     jnbe short 02a1bh                         ; 77 1c
     4810    jnbe short 02946h                         ; 77 1c
    48964811    mov al, byte [bp-004h]                    ; 8a 46 fc
    48974812    mov dx, di                                ; 89 fa
     
    49044819    mov dx, cx                                ; 89 ca
    49054820    mov ax, si                                ; 89 f0
    4906     call 02feah                               ; e8 d5 05
     4821    call 02f18h                               ; e8 d8 05
    49074822    inc cx                                    ; 41
    49084823    inc word [bp-004h]                        ; ff 46 fc
    4909     jmp short 029f9h                          ; eb de
     4824    jmp short 02924h                          ; eb de
    49104825    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    4911     jmp short 02a28h                          ; eb 06
     4826    jmp short 02953h                          ; eb 06
    49124827    cmp word [bp-004h], strict byte 00013h    ; 83 7e fc 13
    4913     jnbe short 02a51h                         ; 77 29
     4828    jnbe short 0297ch                         ; 77 29
    49144829    mov dx, 003dah                            ; ba da 03
    49154830    in AL, DX                                 ; ec
     
    49284843    mov dx, cx                                ; 89 ca
    49294844    mov ax, si                                ; 89 f0
    4930     call 02feah                               ; e8 9f 05
     4845    call 02f18h                               ; e8 a2 05
    49314846    inc cx                                    ; 41
    49324847    inc word [bp-004h]                        ; ff 46 fc
    4933     jmp short 02a22h                          ; eb d1
     4848    jmp short 0294dh                          ; eb d1
    49344849    mov dx, 003dah                            ; ba da 03
    49354850    in AL, DX                                 ; ec
     
    49374852    ; sub ah, ah                                ; 2a e4
    49384853    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    4939     jmp short 02a64h                          ; eb 06
     4854    jmp short 0298fh                          ; eb 06
    49404855    cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
    4941     jnbe short 02a81h                         ; 77 1d
     4856    jnbe short 029ach                         ; 77 1d
    49424857    mov al, byte [bp-004h]                    ; 8a 46 fc
    49434858    mov dx, 003ceh                            ; ba ce 03
     
    49504865    mov dx, cx                                ; 89 ca
    49514866    mov ax, si                                ; 89 f0
    4952     call 02feah                               ; e8 6f 05
     4867    call 02f18h                               ; e8 72 05
    49534868    inc cx                                    ; 41
    49544869    inc word [bp-004h]                        ; ff 46 fc
    4955     jmp short 02a5eh                          ; eb dd
     4870    jmp short 02989h                          ; eb dd
    49564871    mov bx, di                                ; 89 fb
    49574872    mov dx, cx                                ; 89 ca
    49584873    mov ax, si                                ; 89 f0
    4959     call 03006h                               ; e8 7c 05
     4874    call 02f34h                               ; e8 7f 05
    49604875    inc cx                                    ; 41
    49614876    inc cx                                    ; 41
     
    49634878    mov dx, cx                                ; 89 ca
    49644879    mov ax, si                                ; 89 f0
    4965     call 02feah                               ; e8 55 05
     4880    call 02f18h                               ; e8 58 05
    49664881    inc cx                                    ; 41
    49674882    xor bx, bx                                ; 31 db
    49684883    mov dx, cx                                ; 89 ca
    49694884    mov ax, si                                ; 89 f0
    4970     call 02feah                               ; e8 4b 05
     4885    call 02f18h                               ; e8 4e 05
    49714886    inc cx                                    ; 41
    49724887    xor bx, bx                                ; 31 db
    49734888    mov dx, cx                                ; 89 ca
    49744889    mov ax, si                                ; 89 f0
    4975     call 02feah                               ; e8 41 05
     4890    call 02f18h                               ; e8 44 05
    49764891    inc cx                                    ; 41
    49774892    xor bx, bx                                ; 31 db
    49784893    mov dx, cx                                ; 89 ca
    49794894    mov ax, si                                ; 89 f0
    4980     call 02feah                               ; e8 37 05
     4895    call 02f18h                               ; e8 3a 05
    49814896    inc cx                                    ; 41
    49824897    test byte [bp-006h], 002h                 ; f6 46 fa 02
    4983     je near 02c23h                            ; 0f 84 67 01
     4898    je near 02b4eh                            ; 0f 84 67 01
    49844899    mov dx, strict word 00049h                ; ba 49 00
    49854900    mov ax, strict word 00040h                ; b8 40 00
    4986     call 02fdch                               ; e8 17 05
     4901    call 02f0ah                               ; e8 1a 05
    49874902    movzx bx, al                              ; 0f b6 d8
    49884903    mov dx, cx                                ; 89 ca
    49894904    mov ax, si                                ; 89 f0
    4990     call 02feah                               ; e8 1b 05
     4905    call 02f18h                               ; e8 1e 05
    49914906    inc cx                                    ; 41
    49924907    mov dx, strict word 0004ah                ; ba 4a 00
    49934908    mov ax, strict word 00040h                ; b8 40 00
    4994     call 02ff8h                               ; e8 1f 05
     4909    call 02f26h                               ; e8 22 05
    49954910    mov bx, ax                                ; 89 c3
    49964911    mov dx, cx                                ; 89 ca
    49974912    mov ax, si                                ; 89 f0
    4998     call 03006h                               ; e8 24 05
     4913    call 02f34h                               ; e8 27 05
    49994914    inc cx                                    ; 41
    50004915    inc cx                                    ; 41
    50014916    mov dx, strict word 0004ch                ; ba 4c 00
    50024917    mov ax, strict word 00040h                ; b8 40 00
    5003     call 02ff8h                               ; e8 0b 05
     4918    call 02f26h                               ; e8 0e 05
    50044919    mov bx, ax                                ; 89 c3
    50054920    mov dx, cx                                ; 89 ca
    50064921    mov ax, si                                ; 89 f0
    5007     call 03006h                               ; e8 10 05
     4922    call 02f34h                               ; e8 13 05
    50084923    inc cx                                    ; 41
    50094924    inc cx                                    ; 41
    50104925    mov dx, strict word 00063h                ; ba 63 00
    50114926    mov ax, strict word 00040h                ; b8 40 00
    5012     call 02ff8h                               ; e8 f7 04
     4927    call 02f26h                               ; e8 fa 04
    50134928    mov bx, ax                                ; 89 c3
    50144929    mov dx, cx                                ; 89 ca
    50154930    mov ax, si                                ; 89 f0
    5016     call 03006h                               ; e8 fc 04
     4931    call 02f34h                               ; e8 ff 04
    50174932    inc cx                                    ; 41
    50184933    inc cx                                    ; 41
    50194934    mov dx, 00084h                            ; ba 84 00
    50204935    mov ax, strict word 00040h                ; b8 40 00
    5021     call 02fdch                               ; e8 c7 04
     4936    call 02f0ah                               ; e8 ca 04
    50224937    movzx bx, al                              ; 0f b6 d8
    50234938    mov dx, cx                                ; 89 ca
    50244939    mov ax, si                                ; 89 f0
    5025     call 02feah                               ; e8 cb 04
     4940    call 02f18h                               ; e8 ce 04
    50264941    inc cx                                    ; 41
    50274942    mov dx, 00085h                            ; ba 85 00
    50284943    mov ax, strict word 00040h                ; b8 40 00
    5029     call 02ff8h                               ; e8 cf 04
     4944    call 02f26h                               ; e8 d2 04
    50304945    mov bx, ax                                ; 89 c3
    50314946    mov dx, cx                                ; 89 ca
    50324947    mov ax, si                                ; 89 f0
    5033     call 03006h                               ; e8 d4 04
     4948    call 02f34h                               ; e8 d7 04
    50344949    inc cx                                    ; 41
    50354950    inc cx                                    ; 41
    50364951    mov dx, 00087h                            ; ba 87 00
    50374952    mov ax, strict word 00040h                ; b8 40 00
    5038     call 02fdch                               ; e8 9f 04
     4953    call 02f0ah                               ; e8 a2 04
    50394954    movzx bx, al                              ; 0f b6 d8
    50404955    mov dx, cx                                ; 89 ca
    50414956    mov ax, si                                ; 89 f0
    5042     call 02feah                               ; e8 a3 04
     4957    call 02f18h                               ; e8 a6 04
    50434958    inc cx                                    ; 41
    50444959    mov dx, 00088h                            ; ba 88 00
    50454960    mov ax, strict word 00040h                ; b8 40 00
    5046     call 02fdch                               ; e8 8b 04
     4961    call 02f0ah                               ; e8 8e 04
    50474962    movzx bx, al                              ; 0f b6 d8
    50484963    mov dx, cx                                ; 89 ca
    50494964    mov ax, si                                ; 89 f0
    5050     call 02feah                               ; e8 8f 04
     4965    call 02f18h                               ; e8 92 04
    50514966    inc cx                                    ; 41
    50524967    mov dx, 00089h                            ; ba 89 00
    50534968    mov ax, strict word 00040h                ; b8 40 00
    5054     call 02fdch                               ; e8 77 04
     4969    call 02f0ah                               ; e8 7a 04
    50554970    movzx bx, al                              ; 0f b6 d8
    50564971    mov dx, cx                                ; 89 ca
    50574972    mov ax, si                                ; 89 f0
    5058     call 02feah                               ; e8 7b 04
     4973    call 02f18h                               ; e8 7e 04
    50594974    inc cx                                    ; 41
    50604975    mov dx, strict word 00060h                ; ba 60 00
    50614976    mov ax, strict word 00040h                ; b8 40 00
    5062     call 02ff8h                               ; e8 7f 04
     4977    call 02f26h                               ; e8 82 04
    50634978    mov bx, ax                                ; 89 c3
    50644979    mov dx, cx                                ; 89 ca
    50654980    mov ax, si                                ; 89 f0
    5066     call 03006h                               ; e8 84 04
     4981    call 02f34h                               ; e8 87 04
    50674982    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    50684983    inc cx                                    ; 41
    50694984    inc cx                                    ; 41
    5070     jmp short 02b91h                          ; eb 06
     4985    jmp short 02abch                          ; eb 06
    50714986    cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
    5072     jnc short 02bafh                          ; 73 1e
     4987    jnc short 02adah                          ; 73 1e
    50734988    mov dx, word [bp-004h]                    ; 8b 56 fc
    50744989    add dx, dx                                ; 01 d2
    50754990    add dx, strict byte 00050h                ; 83 c2 50
    50764991    mov ax, strict word 00040h                ; b8 40 00
    5077     call 02ff8h                               ; e8 59 04
     4992    call 02f26h                               ; e8 5c 04
    50784993    mov bx, ax                                ; 89 c3
    50794994    mov dx, cx                                ; 89 ca
    50804995    mov ax, si                                ; 89 f0
    5081     call 03006h                               ; e8 5e 04
     4996    call 02f34h                               ; e8 61 04
    50824997    inc cx                                    ; 41
    50834998    inc cx                                    ; 41
    50844999    inc word [bp-004h]                        ; ff 46 fc
    5085     jmp short 02b8bh                          ; eb dc
     5000    jmp short 02ab6h                          ; eb dc
    50865001    mov dx, strict word 0004eh                ; ba 4e 00
    50875002    mov ax, strict word 00040h                ; b8 40 00
    5088     call 02ff8h                               ; e8 40 04
     5003    call 02f26h                               ; e8 43 04
    50895004    mov bx, ax                                ; 89 c3
    50905005    mov dx, cx                                ; 89 ca
    50915006    mov ax, si                                ; 89 f0
    5092     call 03006h                               ; e8 45 04
     5007    call 02f34h                               ; e8 48 04
    50935008    inc cx                                    ; 41
    50945009    inc cx                                    ; 41
    50955010    mov dx, strict word 00062h                ; ba 62 00
    50965011    mov ax, strict word 00040h                ; b8 40 00
    5097     call 02fdch                               ; e8 10 04
     5012    call 02f0ah                               ; e8 13 04
    50985013    movzx bx, al                              ; 0f b6 d8
    50995014    mov dx, cx                                ; 89 ca
    51005015    mov ax, si                                ; 89 f0
    5101     call 02feah                               ; e8 14 04
     5016    call 02f18h                               ; e8 17 04
    51025017    inc cx                                    ; 41
    51035018    mov dx, strict word 0007ch                ; ba 7c 00
    51045019    xor ax, ax                                ; 31 c0
    5105     call 02ff8h                               ; e8 19 04
     5020    call 02f26h                               ; e8 1c 04
    51065021    mov bx, ax                                ; 89 c3
    51075022    mov dx, cx                                ; 89 ca
    51085023    mov ax, si                                ; 89 f0
    5109     call 03006h                               ; e8 1e 04
     5024    call 02f34h                               ; e8 21 04
    51105025    inc cx                                    ; 41
    51115026    inc cx                                    ; 41
    51125027    mov dx, strict word 0007eh                ; ba 7e 00
    51135028    xor ax, ax                                ; 31 c0
    5114     call 02ff8h                               ; e8 06 04
     5029    call 02f26h                               ; e8 09 04
    51155030    mov bx, ax                                ; 89 c3
    51165031    mov dx, cx                                ; 89 ca
    51175032    mov ax, si                                ; 89 f0
    5118     call 03006h                               ; e8 0b 04
     5033    call 02f34h                               ; e8 0e 04
    51195034    inc cx                                    ; 41
    51205035    inc cx                                    ; 41
    51215036    mov dx, 0010ch                            ; ba 0c 01
    51225037    xor ax, ax                                ; 31 c0
    5123     call 02ff8h                               ; e8 f3 03
     5038    call 02f26h                               ; e8 f6 03
    51245039    mov bx, ax                                ; 89 c3
    51255040    mov dx, cx                                ; 89 ca
    51265041    mov ax, si                                ; 89 f0
    5127     call 03006h                               ; e8 f8 03
     5042    call 02f34h                               ; e8 fb 03
    51285043    inc cx                                    ; 41
    51295044    inc cx                                    ; 41
    51305045    mov dx, 0010eh                            ; ba 0e 01
    51315046    xor ax, ax                                ; 31 c0
    5132     call 02ff8h                               ; e8 e0 03
     5047    call 02f26h                               ; e8 e3 03
    51335048    mov bx, ax                                ; 89 c3
    51345049    mov dx, cx                                ; 89 ca
    51355050    mov ax, si                                ; 89 f0
    5136     call 03006h                               ; e8 e5 03
     5051    call 02f34h                               ; e8 e8 03
    51375052    inc cx                                    ; 41
    51385053    inc cx                                    ; 41
    51395054    test byte [bp-006h], 004h                 ; f6 46 fa 04
    5140     je short 02c90h                           ; 74 67
     5055    je short 02bbbh                           ; 74 67
    51415056    mov dx, 003c7h                            ; ba c7 03
    51425057    in AL, DX                                 ; ec
     
    51465061    mov dx, cx                                ; 89 ca
    51475062    mov ax, si                                ; 89 f0
    5148     call 02feah                               ; e8 b1 03
     5063    call 02f18h                               ; e8 b4 03
    51495064    inc cx                                    ; 41
    51505065    mov dx, 003c8h                            ; ba c8 03
     
    51555070    mov dx, cx                                ; 89 ca
    51565071    mov ax, si                                ; 89 f0
    5157     call 02feah                               ; e8 a0 03
     5072    call 02f18h                               ; e8 a3 03
    51585073    inc cx                                    ; 41
    51595074    mov dx, 003c6h                            ; ba c6 03
     
    51645079    mov dx, cx                                ; 89 ca
    51655080    mov ax, si                                ; 89 f0
    5166     call 02feah                               ; e8 8f 03
     5081    call 02f18h                               ; e8 92 03
    51675082    inc cx                                    ; 41
    51685083    xor al, al                                ; 30 c0
     
    51715086    xor ah, ah                                ; 30 e4
    51725087    mov word [bp-004h], ax                    ; 89 46 fc
    5173     jmp short 02c70h                          ; eb 07
     5088    jmp short 02b9bh                          ; eb 07
    51745089    cmp word [bp-004h], 00300h                ; 81 7e fc 00 03
    5175     jnc short 02c86h                          ; 73 16
     5090    jnc short 02bb1h                          ; 73 16
    51765091    mov dx, 003c9h                            ; ba c9 03
    51775092    in AL, DX                                 ; ec
     
    51815096    mov dx, cx                                ; 89 ca
    51825097    mov ax, si                                ; 89 f0
    5183     call 02feah                               ; e8 6a 03
     5098    call 02f18h                               ; e8 6d 03
    51845099    inc cx                                    ; 41
    51855100    inc word [bp-004h]                        ; ff 46 fc
    5186     jmp short 02c69h                          ; eb e3
     5101    jmp short 02b94h                          ; eb e3
    51875102    xor bx, bx                                ; 31 db
    51885103    mov dx, cx                                ; 89 ca
    51895104    mov ax, si                                ; 89 f0
    5190     call 02feah                               ; e8 5b 03
     5105    call 02f18h                               ; e8 5e 03
    51915106    inc cx                                    ; 41
    51925107    mov ax, cx                                ; 89 c8
     
    51965111    pop cx                                    ; 59
    51975112    retn                                      ; c3
    5198 biosfn_restore_video_state_:                 ; 0xc2c97 LB 0x31e
     5113biosfn_restore_video_state_:                 ; 0xc2bc2 LB 0x321
    51995114    push cx                                   ; 51
    52005115    push si                                   ; 56
     
    52055120    mov cx, bx                                ; 89 d9
    52065121    test byte [bp-008h], 001h                 ; f6 46 f8 01
    5207     je near 02df2h                            ; 0f 84 47 01
     5122    je near 02d20h                            ; 0f 84 4a 01
    52085123    mov dx, 003dah                            ; ba da 03
    52095124    in AL, DX                                 ; ec
     
    52125127    lea dx, [bx+040h]                         ; 8d 57 40
    52135128    mov ax, si                                ; 89 f0
    5214     call 02ff8h                               ; e8 3f 03
     5129    call 02f26h                               ; e8 42 03
    52155130    mov di, ax                                ; 89 c7
    52165131    mov word [bp-002h], strict word 00001h    ; c7 46 fe 01 00
    52175132    lea cx, [bx+005h]                         ; 8d 4f 05
    5218     jmp short 02ccbh                          ; eb 06
     5133    jmp short 02bf6h                          ; eb 06
    52195134    cmp word [bp-002h], strict byte 00004h    ; 83 7e fe 04
    5220     jnbe short 02ce3h                         ; 77 18
     5135    jnbe short 02c0eh                         ; 77 18
    52215136    mov al, byte [bp-002h]                    ; 8a 46 fe
    52225137    mov dx, 003c4h                            ; ba c4 03
     
    52245139    mov dx, cx                                ; 89 ca
    52255140    mov ax, si                                ; 89 f0
    5226     call 02fdch                               ; e8 03 03
     5141    call 02f0ah                               ; e8 06 03
    52275142    mov dx, 003c5h                            ; ba c5 03
    52285143    out DX, AL                                ; ee
    52295144    inc cx                                    ; 41
    52305145    inc word [bp-002h]                        ; ff 46 fe
    5231     jmp short 02cc5h                          ; eb e2
     5146    jmp short 02bf0h                          ; eb e2
    52325147    xor al, al                                ; 30 c0
    52335148    mov dx, 003c4h                            ; ba c4 03
     
    52355150    mov dx, cx                                ; 89 ca
    52365151    mov ax, si                                ; 89 f0
    5237     call 02fdch                               ; e8 ec 02
     5152    call 02f0ah                               ; e8 ef 02
    52385153    mov dx, 003c5h                            ; ba c5 03
    52395154    out DX, AL                                ; ee
     
    52435158    out DX, ax                                ; ef
    52445159    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    5245     jmp short 02d08h                          ; eb 06
     5160    jmp short 02c33h                          ; eb 06
    52465161    cmp word [bp-002h], strict byte 00018h    ; 83 7e fe 18
    5247     jnbe short 02d25h                         ; 77 1d
     5162    jnbe short 02c50h                         ; 77 1d
    52485163    cmp word [bp-002h], strict byte 00011h    ; 83 7e fe 11
    5249     je short 02d1fh                           ; 74 11
     5164    je short 02c4ah                           ; 74 11
    52505165    mov al, byte [bp-002h]                    ; 8a 46 fe
    52515166    mov dx, di                                ; 89 fa
     
    52535168    mov dx, cx                                ; 89 ca
    52545169    mov ax, si                                ; 89 f0
    5255     call 02fdch                               ; e8 c1 02
     5170    call 02f0ah                               ; e8 c4 02
    52565171    lea dx, [di+001h]                         ; 8d 55 01
    52575172    out DX, AL                                ; ee
    52585173    inc cx                                    ; 41
    52595174    inc word [bp-002h]                        ; ff 46 fe
    5260     jmp short 02d02h                          ; eb dd
     5175    jmp short 02c2dh                          ; eb dd
    52615176    mov dx, 003cch                            ; ba cc 03
    52625177    in AL, DX                                 ; ec
     
    52655180    and AL, strict byte 0feh                  ; 24 fe
    52665181    mov word [bp-004h], ax                    ; 89 46 fc
    5267     mov di, 003d4h                            ; bf d4 03
     5182    cmp di, 003d4h                            ; 81 ff d4 03
     5183    jne short 02c65h                          ; 75 04
    52685184    or byte [bp-004h], 001h                   ; 80 4e fc 01
    52695185    mov al, byte [bp-004h]                    ; 8a 46 fc
     
    52765192    add dx, strict byte 0fff9h                ; 83 c2 f9
    52775193    mov ax, si                                ; 89 f0
    5278     call 02fdch                               ; e8 8f 02
    5279     mov dx, 003d5h                            ; ba d5 03
     5194    call 02f0ah                               ; e8 8f 02
     5195    lea dx, [di+001h]                         ; 8d 55 01
    52805196    out DX, AL                                ; ee
    52815197    lea dx, [bx+003h]                         ; 8d 57 03
    52825198    mov ax, si                                ; 89 f0
    5283     call 02fdch                               ; e8 83 02
     5199    call 02f0ah                               ; e8 83 02
    52845200    xor ah, ah                                ; 30 e4
    52855201    mov word [bp-006h], ax                    ; 89 46 fa
     
    52895205    ; sub ah, ah                                ; 2a e4
    52905206    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    5291     jmp short 02d71h                          ; eb 06
     5207    jmp short 02c9fh                          ; eb 06
    52925208    cmp word [bp-002h], strict byte 00013h    ; 83 7e fe 13
    5293     jnbe short 02d8fh                         ; 77 1e
     5209    jnbe short 02cbdh                         ; 77 1e
    52945210    mov ax, word [bp-006h]                    ; 8b 46 fa
    52955211    and ax, strict word 00020h                ; 25 20 00
     
    52995215    mov dx, cx                                ; 89 ca
    53005216    mov ax, si                                ; 89 f0
    5301     call 02fdch                               ; e8 57 02
     5217    call 02f0ah                               ; e8 57 02
    53025218    mov dx, 003c0h                            ; ba c0 03
    53035219    out DX, AL                                ; ee
    53045220    inc cx                                    ; 41
    53055221    inc word [bp-002h]                        ; ff 46 fe
    5306     jmp short 02d6bh                          ; eb dc
     5222    jmp short 02c99h                          ; eb dc
    53075223    mov al, byte [bp-006h]                    ; 8a 46 fa
    53085224    mov dx, 003c0h                            ; ba c0 03
     
    53135229    ; sub ah, ah                                ; 2a e4
    53145230    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    5315     jmp short 02da9h                          ; eb 06
     5231    jmp short 02cd7h                          ; eb 06
    53165232    cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
    5317     jnbe short 02dc1h                         ; 77 18
     5233    jnbe short 02cefh                         ; 77 18
    53185234    mov al, byte [bp-002h]                    ; 8a 46 fe
    53195235    mov dx, 003ceh                            ; ba ce 03
     
    53215237    mov dx, cx                                ; 89 ca
    53225238    mov ax, si                                ; 89 f0
    5323     call 02fdch                               ; e8 25 02
     5239    call 02f0ah                               ; e8 25 02
    53245240    mov dx, 003cfh                            ; ba cf 03
    53255241    out DX, AL                                ; ee
    53265242    inc cx                                    ; 41
    53275243    inc word [bp-002h]                        ; ff 46 fe
    5328     jmp short 02da3h                          ; eb e2
     5244    jmp short 02cd1h                          ; eb e2
    53295245    add cx, strict byte 00006h                ; 83 c1 06
    53305246    mov dx, bx                                ; 89 da
    53315247    mov ax, si                                ; 89 f0
    5332     call 02fdch                               ; e8 11 02
     5248    call 02f0ah                               ; e8 11 02
    53335249    mov dx, 003c4h                            ; ba c4 03
    53345250    out DX, AL                                ; ee
     
    53365252    mov dx, bx                                ; 89 da
    53375253    mov ax, si                                ; 89 f0
    5338     call 02fdch                               ; e8 05 02
     5254    call 02f0ah                               ; e8 05 02
    53395255    mov dx, di                                ; 89 fa
    53405256    out DX, AL                                ; ee
     
    53425258    mov dx, bx                                ; 89 da
    53435259    mov ax, si                                ; 89 f0
    5344     call 02fdch                               ; e8 fa 01
     5260    call 02f0ah                               ; e8 fa 01
    53455261    mov dx, 003ceh                            ; ba ce 03
    53465262    out DX, AL                                ; ee
    53475263    lea dx, [bx+002h]                         ; 8d 57 02
    53485264    mov ax, si                                ; 89 f0
    5349     call 02fdch                               ; e8 ee 01
     5265    call 02f0ah                               ; e8 ee 01
    53505266    lea dx, [di+006h]                         ; 8d 55 06
    53515267    out DX, AL                                ; ee
    53525268    test byte [bp-008h], 002h                 ; f6 46 f8 02
    5353     je near 02f61h                            ; 0f 84 67 01
    5354     mov dx, cx                                ; 89 ca
    5355     mov ax, si                                ; 89 f0
    5356     call 02fdch                               ; e8 db 01
     5269    je near 02e8fh                            ; 0f 84 67 01
     5270    mov dx, cx                                ; 89 ca
     5271    mov ax, si                                ; 89 f0
     5272    call 02f0ah                               ; e8 db 01
    53575273    movzx bx, al                              ; 0f b6 d8
    53585274    mov dx, strict word 00049h                ; ba 49 00
    53595275    mov ax, strict word 00040h                ; b8 40 00
    5360     call 02feah                               ; e8 dd 01
    5361     inc cx                                    ; 41
    5362     mov dx, cx                                ; 89 ca
    5363     mov ax, si                                ; 89 f0
    5364     call 02ff8h                               ; e8 e3 01
     5276    call 02f18h                               ; e8 dd 01
     5277    inc cx                                    ; 41
     5278    mov dx, cx                                ; 89 ca
     5279    mov ax, si                                ; 89 f0
     5280    call 02f26h                               ; e8 e3 01
    53655281    mov bx, ax                                ; 89 c3
    53665282    mov dx, strict word 0004ah                ; ba 4a 00
    53675283    mov ax, strict word 00040h                ; b8 40 00
    5368     call 03006h                               ; e8 e6 01
    5369     inc cx                                    ; 41
    5370     inc cx                                    ; 41
    5371     mov dx, cx                                ; 89 ca
    5372     mov ax, si                                ; 89 f0
    5373     call 02ff8h                               ; e8 cf 01
     5284    call 02f34h                               ; e8 e6 01
     5285    inc cx                                    ; 41
     5286    inc cx                                    ; 41
     5287    mov dx, cx                                ; 89 ca
     5288    mov ax, si                                ; 89 f0
     5289    call 02f26h                               ; e8 cf 01
    53745290    mov bx, ax                                ; 89 c3
    53755291    mov dx, strict word 0004ch                ; ba 4c 00
    53765292    mov ax, strict word 00040h                ; b8 40 00
    5377     call 03006h                               ; e8 d2 01
    5378     inc cx                                    ; 41
    5379     inc cx                                    ; 41
    5380     mov dx, cx                                ; 89 ca
    5381     mov ax, si                                ; 89 f0
    5382     call 02ff8h                               ; e8 bb 01
     5293    call 02f34h                               ; e8 d2 01
     5294    inc cx                                    ; 41
     5295    inc cx                                    ; 41
     5296    mov dx, cx                                ; 89 ca
     5297    mov ax, si                                ; 89 f0
     5298    call 02f26h                               ; e8 bb 01
    53835299    mov bx, ax                                ; 89 c3
    53845300    mov dx, strict word 00063h                ; ba 63 00
    53855301    mov ax, strict word 00040h                ; b8 40 00
    5386     call 03006h                               ; e8 be 01
    5387     inc cx                                    ; 41
    5388     inc cx                                    ; 41
    5389     mov dx, cx                                ; 89 ca
    5390     mov ax, si                                ; 89 f0
    5391     call 02fdch                               ; e8 8b 01
     5302    call 02f34h                               ; e8 be 01
     5303    inc cx                                    ; 41
     5304    inc cx                                    ; 41
     5305    mov dx, cx                                ; 89 ca
     5306    mov ax, si                                ; 89 f0
     5307    call 02f0ah                               ; e8 8b 01
    53925308    movzx bx, al                              ; 0f b6 d8
    53935309    mov dx, 00084h                            ; ba 84 00
    53945310    mov ax, strict word 00040h                ; b8 40 00
    5395     call 02feah                               ; e8 8d 01
    5396     inc cx                                    ; 41
    5397     mov dx, cx                                ; 89 ca
    5398     mov ax, si                                ; 89 f0
    5399     call 02ff8h                               ; e8 93 01
     5311    call 02f18h                               ; e8 8d 01
     5312    inc cx                                    ; 41
     5313    mov dx, cx                                ; 89 ca
     5314    mov ax, si                                ; 89 f0
     5315    call 02f26h                               ; e8 93 01
    54005316    mov bx, ax                                ; 89 c3
    54015317    mov dx, 00085h                            ; ba 85 00
    54025318    mov ax, strict word 00040h                ; b8 40 00
    5403     call 03006h                               ; e8 96 01
    5404     inc cx                                    ; 41
    5405     inc cx                                    ; 41
    5406     mov dx, cx                                ; 89 ca
    5407     mov ax, si                                ; 89 f0
    5408     call 02fdch                               ; e8 63 01
     5319    call 02f34h                               ; e8 96 01
     5320    inc cx                                    ; 41
     5321    inc cx                                    ; 41
     5322    mov dx, cx                                ; 89 ca
     5323    mov ax, si                                ; 89 f0
     5324    call 02f0ah                               ; e8 63 01
    54095325    movzx bx, al                              ; 0f b6 d8
    54105326    mov dx, 00087h                            ; ba 87 00
    54115327    mov ax, strict word 00040h                ; b8 40 00
    5412     call 02feah                               ; e8 65 01
    5413     inc cx                                    ; 41
    5414     mov dx, cx                                ; 89 ca
    5415     mov ax, si                                ; 89 f0
    5416     call 02fdch                               ; e8 4f 01
     5328    call 02f18h                               ; e8 65 01
     5329    inc cx                                    ; 41
     5330    mov dx, cx                                ; 89 ca
     5331    mov ax, si                                ; 89 f0
     5332    call 02f0ah                               ; e8 4f 01
    54175333    movzx bx, al                              ; 0f b6 d8
    54185334    mov dx, 00088h                            ; ba 88 00
    54195335    mov ax, strict word 00040h                ; b8 40 00
    5420     call 02feah                               ; e8 51 01
    5421     inc cx                                    ; 41
    5422     mov dx, cx                                ; 89 ca
    5423     mov ax, si                                ; 89 f0
    5424     call 02fdch                               ; e8 3b 01
     5336    call 02f18h                               ; e8 51 01
     5337    inc cx                                    ; 41
     5338    mov dx, cx                                ; 89 ca
     5339    mov ax, si                                ; 89 f0
     5340    call 02f0ah                               ; e8 3b 01
    54255341    movzx bx, al                              ; 0f b6 d8
    54265342    mov dx, 00089h                            ; ba 89 00
    54275343    mov ax, strict word 00040h                ; b8 40 00
    5428     call 02feah                               ; e8 3d 01
    5429     inc cx                                    ; 41
    5430     mov dx, cx                                ; 89 ca
    5431     mov ax, si                                ; 89 f0
    5432     call 02ff8h                               ; e8 43 01
     5344    call 02f18h                               ; e8 3d 01
     5345    inc cx                                    ; 41
     5346    mov dx, cx                                ; 89 ca
     5347    mov ax, si                                ; 89 f0
     5348    call 02f26h                               ; e8 43 01
    54335349    mov bx, ax                                ; 89 c3
    54345350    mov dx, strict word 00060h                ; ba 60 00
    54355351    mov ax, strict word 00040h                ; b8 40 00
    5436     call 03006h                               ; e8 46 01
     5352    call 02f34h                               ; e8 46 01
    54375353    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    54385354    inc cx                                    ; 41
    54395355    inc cx                                    ; 41
    5440     jmp short 02ecfh                          ; eb 06
     5356    jmp short 02dfdh                          ; eb 06
    54415357    cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
    5442     jnc short 02eedh                          ; 73 1e
    5443     mov dx, cx                                ; 89 ca
    5444     mov ax, si                                ; 89 f0
    5445     call 02ff8h                               ; e8 22 01
     5358    jnc short 02e1bh                          ; 73 1e
     5359    mov dx, cx                                ; 89 ca
     5360    mov ax, si                                ; 89 f0
     5361    call 02f26h                               ; e8 22 01
    54465362    mov bx, ax                                ; 89 c3
    54475363    mov dx, word [bp-002h]                    ; 8b 56 fe
     
    54495365    add dx, strict byte 00050h                ; 83 c2 50
    54505366    mov ax, strict word 00040h                ; b8 40 00
    5451     call 03006h                               ; e8 20 01
     5367    call 02f34h                               ; e8 20 01
    54525368    inc cx                                    ; 41
    54535369    inc cx                                    ; 41
    54545370    inc word [bp-002h]                        ; ff 46 fe
    5455     jmp short 02ec9h                          ; eb dc
    5456     mov dx, cx                                ; 89 ca
    5457     mov ax, si                                ; 89 f0
    5458     call 02ff8h                               ; e8 04 01
     5371    jmp short 02df7h                          ; eb dc
     5372    mov dx, cx                                ; 89 ca
     5373    mov ax, si                                ; 89 f0
     5374    call 02f26h                               ; e8 04 01
    54595375    mov bx, ax                                ; 89 c3
    54605376    mov dx, strict word 0004eh                ; ba 4e 00
    54615377    mov ax, strict word 00040h                ; b8 40 00
    5462     call 03006h                               ; e8 07 01
    5463     inc cx                                    ; 41
    5464     inc cx                                    ; 41
    5465     mov dx, cx                                ; 89 ca
    5466     mov ax, si                                ; 89 f0
    5467     call 02fdch                               ; e8 d4 00
     5378    call 02f34h                               ; e8 07 01
     5379    inc cx                                    ; 41
     5380    inc cx                                    ; 41
     5381    mov dx, cx                                ; 89 ca
     5382    mov ax, si                                ; 89 f0
     5383    call 02f0ah                               ; e8 d4 00
    54685384    movzx bx, al                              ; 0f b6 d8
    54695385    mov dx, strict word 00062h                ; ba 62 00
    54705386    mov ax, strict word 00040h                ; b8 40 00
    5471     call 02feah                               ; e8 d6 00
    5472     inc cx                                    ; 41
    5473     mov dx, cx                                ; 89 ca
    5474     mov ax, si                                ; 89 f0
    5475     call 02ff8h                               ; e8 dc 00
     5387    call 02f18h                               ; e8 d6 00
     5388    inc cx                                    ; 41
     5389    mov dx, cx                                ; 89 ca
     5390    mov ax, si                                ; 89 f0
     5391    call 02f26h                               ; e8 dc 00
    54765392    mov bx, ax                                ; 89 c3
    54775393    mov dx, strict word 0007ch                ; ba 7c 00
    54785394    xor ax, ax                                ; 31 c0
    5479     call 03006h                               ; e8 e0 00
    5480     inc cx                                    ; 41
    5481     inc cx                                    ; 41
    5482     mov dx, cx                                ; 89 ca
    5483     mov ax, si                                ; 89 f0
    5484     call 02ff8h                               ; e8 c9 00
     5395    call 02f34h                               ; e8 e0 00
     5396    inc cx                                    ; 41
     5397    inc cx                                    ; 41
     5398    mov dx, cx                                ; 89 ca
     5399    mov ax, si                                ; 89 f0
     5400    call 02f26h                               ; e8 c9 00
    54855401    mov bx, ax                                ; 89 c3
    54865402    mov dx, strict word 0007eh                ; ba 7e 00
    54875403    xor ax, ax                                ; 31 c0
    5488     call 03006h                               ; e8 cd 00
    5489     inc cx                                    ; 41
    5490     inc cx                                    ; 41
    5491     mov dx, cx                                ; 89 ca
    5492     mov ax, si                                ; 89 f0
    5493     call 02ff8h                               ; e8 b6 00
     5404    call 02f34h                               ; e8 cd 00
     5405    inc cx                                    ; 41
     5406    inc cx                                    ; 41
     5407    mov dx, cx                                ; 89 ca
     5408    mov ax, si                                ; 89 f0
     5409    call 02f26h                               ; e8 b6 00
    54945410    mov bx, ax                                ; 89 c3
    54955411    mov dx, 0010ch                            ; ba 0c 01
    54965412    xor ax, ax                                ; 31 c0
    5497     call 03006h                               ; e8 ba 00
    5498     inc cx                                    ; 41
    5499     inc cx                                    ; 41
    5500     mov dx, cx                                ; 89 ca
    5501     mov ax, si                                ; 89 f0
    5502     call 02ff8h                               ; e8 a3 00
     5413    call 02f34h                               ; e8 ba 00
     5414    inc cx                                    ; 41
     5415    inc cx                                    ; 41
     5416    mov dx, cx                                ; 89 ca
     5417    mov ax, si                                ; 89 f0
     5418    call 02f26h                               ; e8 a3 00
    55035419    mov bx, ax                                ; 89 c3
    55045420    mov dx, 0010eh                            ; ba 0e 01
    55055421    xor ax, ax                                ; 31 c0
    5506     call 03006h                               ; e8 a7 00
     5422    call 02f34h                               ; e8 a7 00
    55075423    inc cx                                    ; 41
    55085424    inc cx                                    ; 41
    55095425    test byte [bp-008h], 004h                 ; f6 46 f8 04
    5510     je short 02faeh                           ; 74 47
    5511     inc cx                                    ; 41
    5512     mov dx, cx                                ; 89 ca
    5513     mov ax, si                                ; 89 f0
    5514     call 02fdch                               ; e8 6d 00
     5426    je short 02edch                           ; 74 47
     5427    inc cx                                    ; 41
     5428    mov dx, cx                                ; 89 ca
     5429    mov ax, si                                ; 89 f0
     5430    call 02f0ah                               ; e8 6d 00
    55155431    xor ah, ah                                ; 30 e4
    55165432    mov word [bp-004h], ax                    ; 89 46 fc
     
    55185434    mov dx, cx                                ; 89 ca
    55195435    mov ax, si                                ; 89 f0
    5520     call 02fdch                               ; e8 60 00
     5436    call 02f0ah                               ; e8 60 00
    55215437    mov dx, 003c6h                            ; ba c6 03
    55225438    out DX, AL                                ; ee
     
    55275443    xor ah, ah                                ; 30 e4
    55285444    mov word [bp-002h], ax                    ; 89 46 fe
    5529     jmp short 02f95h                          ; eb 07
     5445    jmp short 02ec3h                          ; eb 07
    55305446    cmp word [bp-002h], 00300h                ; 81 7e fe 00 03
    5531     jnc short 02fa6h                          ; 73 11
    5532     mov dx, cx                                ; 89 ca
    5533     mov ax, si                                ; 89 f0
    5534     call 02fdch                               ; e8 40 00
     5447    jnc short 02ed4h                          ; 73 11
     5448    mov dx, cx                                ; 89 ca
     5449    mov ax, si                                ; 89 f0
     5450    call 02f0ah                               ; e8 40 00
    55355451    mov dx, 003c9h                            ; ba c9 03
    55365452    out DX, AL                                ; ee
    55375453    inc cx                                    ; 41
    55385454    inc word [bp-002h]                        ; ff 46 fe
    5539     jmp short 02f8eh                          ; eb e8
     5455    jmp short 02ebch                          ; eb e8
    55405456    inc cx                                    ; 41
    55415457    mov al, byte [bp-004h]                    ; 8a 46 fc
     
    55485464    pop cx                                    ; 59
    55495465    retn                                      ; c3
    5550 find_vga_entry_:                             ; 0xc2fb5 LB 0x27
     5466find_vga_entry_:                             ; 0xc2ee3 LB 0x27
    55515467    push bx                                   ; 53
    55525468    push dx                                   ; 52
     
    55565472    mov AH, strict byte 0ffh                  ; b4 ff
    55575473    xor al, al                                ; 30 c0
    5558     jmp short 02fc8h                          ; eb 06
     5474    jmp short 02ef6h                          ; eb 06
    55595475    db  0feh, 0c0h
    55605476    ; inc al                                    ; fe c0
    55615477    cmp AL, strict byte 00fh                  ; 3c 0f
    5562     jnbe short 02fd6h                         ; 77 0e
     5478    jnbe short 02f04h                         ; 77 0e
    55635479    movzx bx, al                              ; 0f b6 d8
    55645480    sal bx, 003h                              ; c1 e3 03
    55655481    cmp dl, byte [bx+0482fh]                  ; 3a 97 2f 48
    5566     jne short 02fc2h                          ; 75 ee
     5482    jne short 02ef0h                          ; 75 ee
    55675483    mov ah, al                                ; 88 c4
    55685484    mov al, ah                                ; 88 e0
     
    55715487    pop bx                                    ; 5b
    55725488    retn                                      ; c3
    5573 read_byte_:                                  ; 0xc2fdc LB 0xe
     5489read_byte_:                                  ; 0xc2f0a LB 0xe
    55745490    push bx                                   ; 53
    55755491    push bp                                   ; 55
     
    55815497    pop bx                                    ; 5b
    55825498    retn                                      ; c3
    5583 write_byte_:                                 ; 0xc2fea LB 0xe
     5499write_byte_:                                 ; 0xc2f18 LB 0xe
    55845500    push si                                   ; 56
    55855501    push bp                                   ; 55
     
    55915507    pop si                                    ; 5e
    55925508    retn                                      ; c3
    5593 read_word_:                                  ; 0xc2ff8 LB 0xe
     5509read_word_:                                  ; 0xc2f26 LB 0xe
    55945510    push bx                                   ; 53
    55955511    push bp                                   ; 55
     
    56015517    pop bx                                    ; 5b
    56025518    retn                                      ; c3
    5603 write_word_:                                 ; 0xc3006 LB 0xe
     5519write_word_:                                 ; 0xc2f34 LB 0xe
    56045520    push si                                   ; 56
    56055521    push bp                                   ; 55
     
    56115527    pop si                                    ; 5e
    56125528    retn                                      ; c3
    5613 printf_:                                     ; 0xc3014 LB 0x11a
     5529read_dword_:                                 ; 0xc2f42 LB 0x12
     5530    push bx                                   ; 53
     5531    push bp                                   ; 55
     5532    mov bp, sp                                ; 89 e5
     5533    mov bx, dx                                ; 89 d3
     5534    mov es, ax                                ; 8e c0
     5535    mov ax, word [es:bx]                      ; 26 8b 07
     5536    mov dx, word [es:bx+002h]                 ; 26 8b 57 02
     5537    pop bp                                    ; 5d
     5538    pop bx                                    ; 5b
     5539    retn                                      ; c3
     5540printf_:                                     ; 0xc2f54 LB 0x108
    56145541    push bx                                   ; 53
    56155542    push cx                                   ; 51
     
    56175544    push si                                   ; 56
    56185545    push di                                   ; 57
    5619     enter 00006h, 000h                        ; c8 06 00 00
     5546    enter 00004h, 000h                        ; c8 04 00 00
    56205547    lea si, [bp+00eh]                         ; 8d 76 0e
    5621     mov ax, ss                                ; 8c d0
    5622     mov word [bp-002h], ax                    ; 89 46 fe
    5623     xor di, di                                ; 31 ff
     5548    xor cx, cx                                ; 31 c9
    56245549    xor bx, bx                                ; 31 db
    5625     mov dx, word [bp+00eh]                    ; 8b 56 0e
    5626     mov ax, 0c000h                            ; b8 00 c0
    5627     call 02fdch                               ; e8 aa ff
    5628     mov ah, al                                ; 88 c4
     5550    mov di, word [bp+00eh]                    ; 8b 7e 0e
     5551    mov al, byte [di]                         ; 8a 05
    56295552    test al, al                               ; 84 c0
    5630     je near 030bah                            ; 0f 84 80 00
     5553    je near 02fe8h                            ; 0f 84 79 00
    56315554    cmp AL, strict byte 025h                  ; 3c 25
    5632     jne short 03046h                          ; 75 08
    5633     mov di, strict word 00001h                ; bf 01 00
     5555    jne short 02f7ah                          ; 75 07
     5556    mov cx, strict word 00001h                ; b9 01 00
    56345557    xor bx, bx                                ; 31 db
    5635     jmp near 030b4h                           ; e9 6e 00
    5636     test di, di                               ; 85 ff
    5637     je short 030b0h                           ; 74 66
     5558    jmp short 02fe2h                          ; eb 68
     5559    test cx, cx                               ; 85 c9
     5560    je short 02fdeh                           ; 74 60
    56385561    cmp AL, strict byte 030h                  ; 3c 30
    5639     jc short 0305eh                           ; 72 10
     5562    jc short 02f92h                           ; 72 10
    56405563    cmp AL, strict byte 039h                  ; 3c 39
    5641     jnbe short 0305eh                         ; 77 0c
     5564    jnbe short 02f92h                         ; 77 0c
    56425565    xor ah, ah                                ; 30 e4
    56435566    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    56445567    sub ax, strict word 00030h                ; 2d 30 00
    56455568    add bx, ax                                ; 01 c3
    5646     jmp short 030b4h                          ; eb 56
    5647     cmp ah, 078h                              ; 80 fc 78
    5648     jne short 030b4h                          ; 75 51
     5569    jmp short 02fe2h                          ; eb 50
     5570    cmp AL, strict byte 078h                  ; 3c 78
     5571    jne short 02fe2h                          ; 75 4c
    56495572    inc si                                    ; 46
    56505573    inc si                                    ; 46
    5651     mov dx, si                                ; 89 f2
    5652     mov ax, word [bp-002h]                    ; 8b 46 fe
    5653     call 02ff8h                               ; e8 8b ff
     5574    mov ax, word [ss:si]                      ; 36 8b 04
    56545575    mov word [bp-004h], ax                    ; 89 46 fc
    56555576    test bx, bx                               ; 85 db
    5656     jne short 03077h                          ; 75 03
     5577    jne short 02fa5h                          ; 75 03
    56575578    mov bx, strict word 00004h                ; bb 04 00
    5658     lea ax, [bx-001h]                         ; 8d 47 ff
    5659     mov word [bp-006h], ax                    ; 89 46 fa
    5660     xor di, di                                ; 31 ff
    5661     cmp di, bx                                ; 39 df
    5662     jnc short 030ach                          ; 73 29
    5663     mov cx, word [bp-006h]                    ; 8b 4e fa
     5579    lea di, [bx-001h]                         ; 8d 7f ff
     5580    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
     5581    cmp bx, word [bp-002h]                    ; 3b 5e fe
     5582    jbe short 02fdah                          ; 76 28
     5583    mov cx, di                                ; 89 f9
    56645584    sal cx, 002h                              ; c1 e1 02
    56655585    mov ax, word [bp-004h]                    ; 8b 46 fc
     
    56675587    and ax, strict word 0000fh                ; 25 0f 00
    56685588    cmp ax, strict word 00009h                ; 3d 09 00
    5669     jnbe short 0309fh                         ; 77 09
     5589    jnbe short 02fcdh                         ; 77 09
    56705590    add ax, strict word 00030h                ; 05 30 00
    5671     mov dx, 003b7h                            ; ba b7 03
    5672     out DX, AL                                ; ee
    5673     jmp short 030a6h                          ; eb 07
     5591    mov dx, 00504h                            ; ba 04 05
     5592    out DX, AL                                ; ee
     5593    jmp short 02fd4h                          ; eb 07
    56745594    add ax, strict word 00037h                ; 05 37 00
    5675     mov dx, 003b7h                            ; ba b7 03
    5676     out DX, AL                                ; ee
    5677     dec word [bp-006h]                        ; ff 4e fa
    5678     inc di                                    ; 47
    5679     jmp short 0307fh                          ; eb d3
    5680     xor di, di                                ; 31 ff
    5681     jmp short 030b4h                          ; eb 04
    5682     mov dx, 003b7h                            ; ba b7 03
     5595    mov dx, 00504h                            ; ba 04 05
     5596    out DX, AL                                ; ee
     5597    dec di                                    ; 4f
     5598    inc word [bp-002h]                        ; ff 46 fe
     5599    jmp short 02fadh                          ; eb d3
     5600    xor cx, cx                                ; 31 c9
     5601    jmp short 02fe2h                          ; eb 04
     5602    mov dx, 00504h                            ; ba 04 05
    56835603    out DX, AL                                ; ee
    56845604    inc word [bp+00eh]                        ; ff 46 0e
    5685     jmp near 03029h                           ; e9 6f ff
     5605    jmp near 02f64h                           ; e9 7c ff
    56865606    leave                                     ; c9
    56875607    pop di                                    ; 5f
     
    57025622    add ax, 00304h                            ; 05 04 03
    57035623    add al, byte [bx+di]                      ; 02 01
    5704     add ch, ch                                ; 00 ed
    5705     xor AL, strict byte 059h                  ; 34 59
    5706     xor word [bp-055cfh], dx                  ; 31 96 31 aa
    5707     xor word [bp+di-02ccfh], di               ; 31 bb 31 d3
    5708     xor sp, sp                                ; 31 e4
    5709     xor di, bp                                ; 31 ef
    5710     xor word [bx+di], bp                      ; 31 29
    5711     xor ch, byte [di]                         ; 32 2d
    5712     xor al, byte [bx+si+032h]                 ; 32 40 32
    5713     pop bp                                    ; 5d
    5714     xor bh, byte [bp+si+032h]                 ; 32 7a 32
    5715     call far 0ca32h:0b332h                    ; 9a 32 b3 32 ca
    5716     db  032h, 0d6h
    5717     ; xor dl, dh                                ; 32 d6
    5718     xor ch, byte [di-015cdh]                  ; 32 ad 33 ea
    5719     xor dx, word [bx]                         ; 33 17
    5720     xor AL, strict byte 02ch                  ; 34 2c
    5721     xor AL, strict byte 070h                  ; 34 70
    5722     xor AL, strict byte 030h                  ; 34 30
     5624    add byte [bx], bl                         ; 00 1f
     5625    xor AL, strict byte 08ah                  ; 34 8a
     5626    xor al, cl                                ; 30 c8
     5627    xor ah, bl                                ; 30 dc
     5628    xor ch, ch                                ; 30 ed
     5629    xor byte [bx+di], al                      ; 30 01
     5630    xor word [bp+si], dx                      ; 31 12
     5631    xor word [si], bx                         ; 31 1c
     5632    xor word [bp+031h], dx                    ; 31 56 31
     5633    pop dx                                    ; 5a
     5634    xor word [bp+di+031h], bp                 ; 31 6b 31
     5635    mov byte [bx+di], dh                      ; 88 31
     5636    movsw                                     ; a5
     5637    xor bp, ax                                ; 31 c5
     5638    xor dx, sp                                ; 31 e2
     5639    xor cx, di                                ; 31 f9
     5640    xor word [di], ax                         ; 31 05
     5641    db  032h, 0e0h
     5642    ; xor ah, al                                ; 32 e0
     5643    xor bl, byte [bp+di]                      ; 32 1b
     5644    xor cx, word [bp+di+033h]                 ; 33 4b 33
     5645    pushaw                                    ; 60
     5646    xor sp, word [bp+si+03033h]               ; 33 a2 33 30
    57235647    and AL, strict byte 023h                  ; 24 23
    57245648    and ah, byte [bx+di]                      ; 22 21
     
    57275651    adc byte [si], al                         ; 10 04
    57285652    add al, byte [bx+di]                      ; 02 01
    5729     add ch, ch                                ; 00 ed
    5730     xor AL, strict byte 0f7h                  ; 34 f7
    5731     xor bl, byte [bp+di]                      ; 32 1b
    5732     xor bp, word [bx+di]                      ; 33 29
    5733     xor si, word [bx]                         ; 33 37
    5734     db  033h, 0f7h
    5735     ; xor si, di                                ; 33 f7
    5736     xor bl, byte [bp+di]                      ; 32 1b
    5737     xor bp, word [bx+di]                      ; 33 29
    5738     xor si, word [bx]                         ; 33 37
    5739     xor ax, word [di+033h]                    ; 33 45 33
    5740     push cx                                   ; 51
    5741     xor bp, word [si+033h]                    ; 33 6c 33
    5742     jnbe short 0315dh                         ; 77 33
    5743     db  082h, 033h, 08dh
    5744     ; xor byte [bp+di], 08dh                    ; 82 33 8d
    5745     db  033h
    5746 _int10_func:                                 ; 0xc312e LB 0x3c3
     5653    add byte [bx], bl                         ; 00 1f
     5654    xor AL, strict byte 026h                  ; 34 26
     5655    xor cl, byte [si+032h]                    ; 32 4c 32
     5656    pop bp                                    ; 5d
     5657    xor ch, byte [bp+032h]                    ; 32 6e 32
     5658    xor cl, byte [es:si+032h]                 ; 26 32 4c 32
     5659    pop bp                                    ; 5d
     5660    xor ch, byte [bp+032h]                    ; 32 6e 32
     5661    jnle short 03084h                         ; 7f 32
     5662    mov si, word [bp+si]                      ; 8b 32
     5663    cmpsb                                     ; a6
     5664    xor dh, byte [bx+di-043ceh]               ; 32 b1 32 bc
     5665    db  032h, 0c7h
     5666    ; xor al, bh                                ; 32 c7
     5667    db  032h
     5668_int10_func:                                 ; 0xc305c LB 0x3c7
    57475669    push si                                   ; 56
    57485670    push di                                   ; 57
     
    57525674    shr ax, 008h                              ; c1 e8 08
    57535675    cmp ax, strict word 0004fh                ; 3d 4f 00
    5754     jnbe near 034edh                          ; 0f 87 a9 03
     5676    jnbe near 0341fh                          ; 0f 87 ad 03
    57555677    push CS                                   ; 0e
    57565678    pop ES                                    ; 07
    57575679    mov cx, strict word 00016h                ; b9 16 00
    5758     mov di, 030c1h                            ; bf c1 30
     5680    mov di, 02fefh                            ; bf ef 2f
    57595681    repne scasb                               ; f2 ae
    57605682    sal cx, 1                                 ; d1 e1
    57615683    mov di, cx                                ; 89 cf
    5762     mov ax, word [cs:di+030d6h]               ; 2e 8b 85 d6 30
     5684    mov ax, word [cs:di+03004h]               ; 2e 8b 85 04 30
     5685    mov cl, byte [bp+016h]                    ; 8a 4e 16
    57635686    jmp ax                                    ; ff e0
    5764     movzx ax, byte [bp+016h]                  ; 0f b6 46 16
    5765     call 00d85h                               ; e8 25 dc
     5687    mov al, byte [bp+016h]                    ; 8a 46 16
     5688    xor ah, ah                                ; 30 e4
     5689    call 00fc1h                               ; e8 2f df
    57665690    mov ax, word [bp+016h]                    ; 8b 46 16
    57675691    and ax, strict word 0007fh                ; 25 7f 00
    57685692    cmp ax, strict word 00007h                ; 3d 07 00
    5769     je short 03180h                           ; 74 15
     5693    je short 030b2h                           ; 74 15
    57705694    cmp ax, strict word 00006h                ; 3d 06 00
    5771     je short 03177h                           ; 74 07
     5695    je short 030a9h                           ; 74 07
    57725696    cmp ax, strict word 00005h                ; 3d 05 00
    5773     jbe short 03180h                          ; 76 0b
    5774     jmp short 03189h                          ; eb 12
     5697    jbe short 030b2h                          ; 76 0b
     5698    jmp short 030bbh                          ; eb 12
    57755699    mov ax, word [bp+016h]                    ; 8b 46 16
    57765700    xor al, al                                ; 30 c0
    57775701    or AL, strict byte 03fh                   ; 0c 3f
    5778     jmp short 03190h                          ; eb 10
     5702    jmp short 030c2h                          ; eb 10
    57795703    mov ax, word [bp+016h]                    ; 8b 46 16
    57805704    xor al, al                                ; 30 c0
    57815705    or AL, strict byte 030h                   ; 0c 30
    5782     jmp short 03190h                          ; eb 07
     5706    jmp short 030c2h                          ; eb 07
    57835707    mov ax, word [bp+016h]                    ; 8b 46 16
    57845708    xor al, al                                ; 30 c0
    57855709    or AL, strict byte 020h                   ; 0c 20
    57865710    mov word [bp+016h], ax                    ; 89 46 16
    5787     jmp near 034edh                           ; e9 57 03
     5711    jmp near 0341fh                           ; e9 57 03
    57885712    mov al, byte [bp+014h]                    ; 8a 46 14
    57895713    movzx dx, al                              ; 0f b6 d0
     
    57915715    shr ax, 008h                              ; c1 e8 08
    57925716    xor ah, ah                                ; 30 e4
    5793     call 00b14h                               ; e8 6d d9
    5794     jmp near 034edh                           ; e9 43 03
     5717    call 00daah                               ; e8 d1 dc
     5718    jmp near 0341fh                           ; e9 43 03
    57955719    mov dx, word [bp+012h]                    ; 8b 56 12
    57965720    mov ax, word [bp+010h]                    ; 8b 46 10
    57975721    shr ax, 008h                              ; c1 e8 08
    57985722    xor ah, ah                                ; 30 e4
    5799     call 00bb5h                               ; e8 fd d9
    5800     jmp near 034edh                           ; e9 32 03
    5801     lea dx, [bp+012h]                         ; 8d 56 12
    5802     push SS                                   ; 16
    5803     push dx                                   ; 52
    5804     mov cx, ss                                ; 8c d1
    5805     lea bx, [bp+014h]                         ; 8d 5e 14
     5723    call 00e4bh                               ; e8 61 dd
     5724    jmp near 0341fh                           ; e9 32 03
     5725    lea bx, [bp+012h]                         ; 8d 5e 12
     5726    lea dx, [bp+014h]                         ; 8d 56 14
    58065727    mov ax, word [bp+010h]                    ; 8b 46 10
    58075728    shr ax, 008h                              ; c1 e8 08
    58085729    xor ah, ah                                ; 30 e4
    5809     call 00c53h                               ; e8 83 da
    5810     jmp near 034edh                           ; e9 1a 03
     5730    call 00a8ch                               ; e8 8e d9
     5731    jmp near 0341fh                           ; e9 1e 03
    58115732    xor ax, ax                                ; 31 c0
    58125733    mov word [bp+016h], ax                    ; 89 46 16
     
    58145735    mov word [bp+014h], ax                    ; 89 46 14
    58155736    mov word [bp+012h], ax                    ; 89 46 12
    5816     jmp near 034edh                           ; e9 09 03
    5817     mov al, byte [bp+016h]                    ; 8a 46 16
     5737    jmp near 0341fh                           ; e9 0d 03
     5738    mov al, cl                                ; 88 c8
    58185739    xor ah, ah                                ; 30 e4
    5819     call 00ca8h                               ; e8 bc da
    5820     jmp near 034edh                           ; e9 fe 02
     5740    call 00ee9h                               ; e8 d0 dd
     5741    jmp near 0341fh                           ; e9 03 03
    58215742    mov ax, strict word 00001h                ; b8 01 00
    58225743    push ax                                   ; 50
     
    58405761    mov al, byte [bp+016h]                    ; 8a 46 16
    58415762    xor ah, ah                                ; 30 e4
    5842     call 01306h                               ; e8 e0 e0
    5843     jmp near 034edh                           ; e9 c4 02
     5763    call 01542h                               ; e8 ef e3
     5764    jmp near 0341fh                           ; e9 c9 02
    58445765    xor ax, ax                                ; 31 c0
    5845     jmp short 031f2h                          ; eb c5
    5846     mov cx, ss                                ; 8c d1
    5847     lea bx, [bp+016h]                         ; 8d 5e 16
     5766    jmp short 0311fh                          ; eb c5
     5767    lea dx, [bp+016h]                         ; 8d 56 16
    58485768    mov ax, word [bp+010h]                    ; 8b 46 10
    58495769    shr ax, 008h                              ; c1 e8 08
    58505770    xor ah, ah                                ; 30 e4
    5851     call 01807h                               ; e8 ca e5
    5852     jmp near 034edh                           ; e9 ad 02
     5771    call 00acch                               ; e8 64 d9
     5772    jmp near 0341fh                           ; e9 b4 02
    58535773    mov cx, word [bp+014h]                    ; 8b 4e 14
    58545774    mov al, byte [bp+010h]                    ; 8a 46 10
     
    58595779    mov al, byte [bp+016h]                    ; 8a 46 16
    58605780    xor ah, ah                                ; 30 e4
    5861     call 01b37h                               ; e8 dd e8
    5862     jmp near 034edh                           ; e9 90 02
     5781    call 01cceh                               ; e8 49 eb
     5782    jmp near 0341fh                           ; e9 97 02
    58635783    mov cx, word [bp+014h]                    ; 8b 4e 14
    58645784    mov al, byte [bp+010h]                    ; 8a 46 10
     
    58695789    mov al, byte [bp+016h]                    ; 8a 46 16
    58705790    xor ah, ah                                ; 30 e4
    5871     call 01c9fh                               ; e8 28 ea
    5872     jmp near 034edh                           ; e9 73 02
     5791    call 01e31h                               ; e8 8f ec
     5792    jmp near 0341fh                           ; e9 7a 02
    58735793    mov cx, word [bp+012h]                    ; 8b 4e 12
    58745794    mov bx, word [bp+014h]                    ; 8b 5e 14
     
    58805800    mov al, byte [bp-002h]                    ; 8a 46 fe
    58815801    xor ah, ah                                ; 30 e4
    5882     call 01e0ch                               ; e8 75 eb
    5883     jmp near 034edh                           ; e9 53 02
    5884     lea dx, [bp+016h]                         ; 8d 56 16
    5885     push SS                                   ; 16
    5886     push dx                                   ; 52
     5802    call 01f9bh                               ; e8 d9 ed
     5803    jmp near 0341fh                           ; e9 5a 02
     5804    lea cx, [bp+016h]                         ; 8d 4e 16
    58875805    mov bx, word [bp+012h]                    ; 8b 5e 12
    58885806    mov dx, word [bp+014h]                    ; 8b 56 14
    58895807    mov ax, word [bp+010h]                    ; 8b 46 10
    58905808    shr ax, 008h                              ; c1 e8 08
     5809    mov word [bp-002h], ax                    ; 89 46 fe
     5810    mov al, byte [bp-002h]                    ; 8a 46 fe
    58915811    xor ah, ah                                ; 30 e4
    5892     call 01f74h                               ; e8 c4 ec
    5893     jmp near 034edh                           ; e9 3a 02
     5812    call 00beeh                               ; e8 0f da
     5813    jmp near 0341fh                           ; e9 3d 02
    58945814    mov cx, strict word 00002h                ; b9 02 00
    58955815    mov al, byte [bp+010h]                    ; 8a 46 10
     
    58985818    mov al, byte [bp+016h]                    ; 8a 46 16
    58995819    xor ah, ah                                ; 30 e4
    5900     call 020bbh                               ; e8 f4 ed
    5901     jmp near 034edh                           ; e9 23 02
     5820    call 02103h                               ; e8 0d ef
     5821    jmp near 0341fh                           ; e9 26 02
    59025822    mov dx, word [bp+014h]                    ; 8b 56 14
    59035823    mov ax, word [bp+010h]                    ; 8b 46 10
    5904     call 00a8ch                               ; e8 b9 d7
    5905     jmp near 034edh                           ; e9 17 02
     5824    call 00d22h                               ; e8 20 db
     5825    jmp near 0341fh                           ; e9 1a 02
    59065826    mov ax, word [bp+016h]                    ; 8b 46 16
    59075827    xor ah, ah                                ; 30 e4
    59085828    cmp ax, strict word 00030h                ; 3d 30 00
    5909     jnbe near 034edh                          ; 0f 87 0b 02
     5829    jnbe near 0341fh                          ; 0f 87 0e 02
    59105830    push CS                                   ; 0e
    59115831    pop ES                                    ; 07
    59125832    mov cx, strict word 0000fh                ; b9 0f 00
    5913     mov di, 03102h                            ; bf 02 31
     5833    mov di, 03030h                            ; bf 30 30
    59145834    repne scasb                               ; f2 ae
    59155835    sal cx, 1                                 ; d1 e1
    59165836    mov di, cx                                ; 89 cf
    5917     mov ax, word [cs:di+03110h]               ; 2e 8b 85 10 31
     5837    mov ax, word [cs:di+0303eh]               ; 2e 8b 85 3e 30
    59185838    jmp ax                                    ; ff e0
    59195839    mov ax, word [bp+010h]                    ; 8b 46 10
     
    59215841    xor ah, ah                                ; 30 e4
    59225842    push ax                                   ; 50
    5923     movzx ax, byte [bp+010h]                  ; 0f b6 46 10
     5843    mov al, byte [bp+010h]                    ; 8a 46 10
     5844    xor ah, ah                                ; 30 e4
    59245845    push ax                                   ; 50
    59255846    push word [bp+012h]                       ; ff 76 12
    5926     movzx ax, byte [bp+016h]                  ; 0f b6 46 16
     5847    mov al, byte [bp+016h]                    ; 8a 46 16
     5848    xor ah, ah                                ; 30 e4
    59275849    mov cx, word [bp+014h]                    ; 8b 4e 14
    59285850    mov bx, word [bp+00ch]                    ; 8b 5e 0c
    59295851    mov dx, word [bp+01ah]                    ; 8b 56 1a
    5930     call 02466h                               ; e8 4e f1
    5931     jmp near 034edh                           ; e9 d2 01
    5932     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
    5933     movzx ax, byte [bp+016h]                  ; 0f b6 46 16
    5934     call 024deh                               ; e8 b8 f1
    5935     jmp near 034edh                           ; e9 c4 01
    5936     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
    5937     movzx ax, byte [bp+016h]                  ; 0f b6 46 16
    5938     call 0254ah                               ; e8 16 f2
    5939     jmp near 034edh                           ; e9 b6 01
    5940     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
    5941     movzx ax, byte [bp+016h]                  ; 0f b6 46 16
    5942     call 025b8h                               ; e8 76 f2
    5943     jmp near 034edh                           ; e9 a8 01
     5852    call 024a0h                               ; e8 57 f2
     5853    jmp near 0341fh                           ; e9 d3 01
     5854    mov al, byte [bp+010h]                    ; 8a 46 10
     5855    movzx dx, al                              ; 0f b6 d0
     5856    mov al, byte [bp+016h]                    ; 8a 46 16
     5857    xor ah, ah                                ; 30 e4
     5858    call 02518h                               ; e8 be f2
     5859    jmp near 0341fh                           ; e9 c2 01
     5860    mov al, byte [bp+010h]                    ; 8a 46 10
     5861    movzx dx, al                              ; 0f b6 d0
     5862    mov al, byte [bp+016h]                    ; 8a 46 16
     5863    xor ah, ah                                ; 30 e4
     5864    call 02584h                               ; e8 19 f3
     5865    jmp near 0341fh                           ; e9 b1 01
     5866    mov al, byte [bp+010h]                    ; 8a 46 10
     5867    movzx dx, al                              ; 0f b6 d0
     5868    mov al, byte [bp+016h]                    ; 8a 46 16
     5869    xor ah, ah                                ; 30 e4
     5870    call 025f2h                               ; e8 76 f3
     5871    jmp near 0341fh                           ; e9 a0 01
    59445872    mov dx, word [bp+00ch]                    ; 8b 56 0c
    59455873    mov ax, word [bp+01ah]                    ; 8b 46 1a
    5946     call 02626h                               ; e8 d8 f2
    5947     jmp near 034edh                           ; e9 9c 01
     5874    call 02660h                               ; e8 d8 f3
     5875    jmp near 0341fh                           ; e9 94 01
    59485876    mov al, byte [bp+012h]                    ; 8a 46 12
    59495877    xor ah, ah                                ; 30 e4
     
    59545882    mov dx, word [bp+00ch]                    ; 8b 56 0c
    59555883    mov ax, word [bp+01ah]                    ; 8b 46 1a
    5956     call 0262bh                               ; e8 c2 f2
    5957     jmp near 034edh                           ; e9 81 01
     5884    call 02665h                               ; e8 c2 f3
     5885    jmp near 0341fh                           ; e9 79 01
    59585886    mov al, byte [bp+010h]                    ; 8a 46 10
    59595887    xor ah, ah                                ; 30 e4
    5960     call 02632h                               ; e8 be f2
    5961     jmp near 034edh                           ; e9 76 01
     5888    call 0266ch                               ; e8 be f3
     5889    jmp near 0341fh                           ; e9 6e 01
    59625890    mov al, byte [bp+010h]                    ; 8a 46 10
    59635891    xor ah, ah                                ; 30 e4
    5964     call 02637h                               ; e8 b8 f2
    5965     jmp near 034edh                           ; e9 6b 01
     5892    call 02671h                               ; e8 b8 f3
     5893    jmp near 0341fh                           ; e9 63 01
    59665894    mov al, byte [bp+010h]                    ; 8a 46 10
    59675895    xor ah, ah                                ; 30 e4
    5968     call 0263ch                               ; e8 b2 f2
    5969     jmp near 034edh                           ; e9 60 01
    5970     lea dx, [bp+012h]                         ; 8d 56 12
    5971     push SS                                   ; 16
    5972     push dx                                   ; 52
    5973     lea dx, [bp+014h]                         ; 8d 56 14
    5974     push SS                                   ; 16
    5975     push dx                                   ; 52
    5976     lea dx, [bp+00ch]                         ; 8d 56 0c
    5977     push SS                                   ; 16
    5978     push dx                                   ; 52
    5979     mov cx, ss                                ; 8c d1
    5980     lea bx, [bp+01ah]                         ; 8d 5e 1a
     5896    call 02676h                               ; e8 b2 f3
     5897    jmp near 0341fh                           ; e9 58 01
     5898    lea ax, [bp+012h]                         ; 8d 46 12
     5899    push ax                                   ; 50
     5900    lea cx, [bp+014h]                         ; 8d 4e 14
     5901    lea bx, [bp+00ch]                         ; 8d 5e 0c
     5902    lea dx, [bp+01ah]                         ; 8d 56 1a
    59815903    mov ax, word [bp+010h]                    ; 8b 46 10
    59825904    shr ax, 008h                              ; c1 e8 08
    5983     call 02651h                               ; e8 a7 f2
    5984     jmp near 034edh                           ; e9 40 01
     5905    call 00b6fh                               ; e8 92 d8
     5906    jmp near 0341fh                           ; e9 3f 01
    59855907    mov ax, word [bp+010h]                    ; 8b 46 10
    59865908    xor ah, ah                                ; 30 e4
    59875909    cmp ax, strict word 00036h                ; 3d 36 00
    5988     je short 033e0h                           ; 74 29
     5910    je short 03312h                           ; 74 28
    59895911    cmp ax, strict word 00035h                ; 3d 35 00
    5990     je short 033c9h                           ; 74 0d
     5912    je short 032fch                           ; 74 0d
    59915913    cmp ax, strict word 00020h                ; 3d 20 00
    5992     jne near 034edh                           ; 0f 85 2a 01
    5993     call 0273fh                               ; e8 79 f3
    5994     jmp near 034edh                           ; e9 24 01
    5995     movzx ax, byte [bp+016h]                  ; 0f b6 46 16
     5914    jne near 0341fh                           ; 0f 85 29 01
     5915    call 0267bh                               ; e8 82 f3
     5916    jmp near 0341fh                           ; e9 23 01
     5917    movzx ax, cl                              ; 0f b6 c1
    59965918    mov bx, word [bp+012h]                    ; 8b 5e 12
    59975919    mov dx, word [bp+01ah]                    ; 8b 56 1a
    5998     call 02744h                               ; e8 6e f3
     5920    call 02680h                               ; e8 78 f3
    59995921    mov ax, word [bp+016h]                    ; 8b 46 16
    60005922    xor al, al                                ; 30 c0
    60015923    or AL, strict byte 012h                   ; 0c 12
    6002     jmp near 03190h                           ; e9 b0 fd
    6003     mov al, byte [bp+016h]                    ; 8a 46 16
     5924    jmp near 030c2h                           ; e9 b0 fd
     5925    mov al, cl                                ; 88 c8
    60045926    xor ah, ah                                ; 30 e4
    6005     call 02749h                               ; e8 61 f3
    6006     jmp short 033d6h                          ; eb ec
     5927    call 02685h                               ; e8 6c f3
     5928    jmp short 03308h                          ; eb ed
    60075929    push word [bp+00ch]                       ; ff 76 0c
    60085930    push word [bp+01ah]                       ; ff 76 1a
    6009     movzx ax, byte [bp+012h]                  ; 0f b6 46 12
     5931    mov al, byte [bp+012h]                    ; 8a 46 12
     5932    xor ah, ah                                ; 30 e4
    60105933    push ax                                   ; 50
    60115934    mov ax, word [bp+012h]                    ; 8b 46 12
     
    60135936    xor ah, ah                                ; 30 e4
    60145937    push ax                                   ; 50
    6015     movzx bx, byte [bp+010h]                  ; 0f b6 5e 10
    6016     mov dx, word [bp+010h]                    ; 8b 56 10
    6017     shr dx, 008h                              ; c1 ea 08
    6018     xor dh, dh                                ; 30 f6
    6019     movzx ax, byte [bp+016h]                  ; 0f b6 46 16
     5938    mov al, byte [bp+010h]                    ; 8a 46 10
     5939    movzx bx, al                              ; 0f b6 d8
     5940    mov ax, word [bp+010h]                    ; 8b 46 10
     5941    shr ax, 008h                              ; c1 e8 08
     5942    movzx dx, al                              ; 0f b6 d0
     5943    movzx ax, cl                              ; 0f b6 c1
    60205944    mov cx, word [bp+014h]                    ; 8b 4e 14
    6021     call 0274eh                               ; e8 3a f3
    6022     jmp near 034edh                           ; e9 d6 00
     5945    call 0268ah                               ; e8 42 f3
     5946    jmp near 0341fh                           ; e9 d4 00
    60235947    mov bx, si                                ; 89 f3
    60245948    mov dx, word [bp+01ah]                    ; 8b 56 1a
    60255949    mov ax, word [bp+010h]                    ; 8b 46 10
    6026     call 027eah                               ; e8 c8 f3
     5950    call 02721h                               ; e8 cb f3
    60275951    mov ax, word [bp+016h]                    ; 8b 46 16
    60285952    xor al, al                                ; 30 c0
    60295953    or AL, strict byte 01bh                   ; 0c 1b
    6030     jmp near 03190h                           ; e9 64 fd
     5954    jmp near 030c2h                           ; e9 62 fd
    60315955    mov ax, word [bp+016h]                    ; 8b 46 16
    60325956    xor ah, ah                                ; 30 e4
    60335957    cmp ax, strict word 00002h                ; 3d 02 00
    6034     je short 0345ah                           ; 74 24
     5958    je short 0338ch                           ; 74 22
    60355959    cmp ax, strict word 00001h                ; 3d 01 00
    6036     je short 0344ch                           ; 74 11
     5960    je short 0337eh                           ; 74 0f
    60375961    test ax, ax                               ; 85 c0
    6038     jne short 03466h                          ; 75 27
    6039     mov cx, ss                                ; 8c d1
    6040     lea bx, [bp+010h]                         ; 8d 5e 10
     5962    jne short 03398h                          ; 75 25
     5963    lea dx, [bp+010h]                         ; 8d 56 10
    60415964    mov ax, word [bp+014h]                    ; 8b 46 14
    6042     call 02917h                               ; e8 cd f4
    6043     jmp short 03466h                          ; eb 1a
     5965    call 0284eh                               ; e8 d2 f4
     5966    jmp short 03398h                          ; eb 1a
    60445967    mov bx, word [bp+010h]                    ; 8b 5e 10
    60455968    mov dx, word [bp+01ah]                    ; 8b 56 1a
    60465969    mov ax, word [bp+014h]                    ; 8b 46 14
    6047     call 02932h                               ; e8 da f4
    6048     jmp short 03466h                          ; eb 0c
     5970    call 0285dh                               ; e8 d3 f4
     5971    jmp short 03398h                          ; eb 0c
    60495972    mov bx, word [bp+010h]                    ; 8b 5e 10
    60505973    mov dx, word [bp+01ah]                    ; 8b 56 1a
    60515974    mov ax, word [bp+014h]                    ; 8b 46 14
    6052     call 02c97h                               ; e8 31 f8
     5975    call 02bc2h                               ; e8 2a f8
    60535976    mov ax, word [bp+016h]                    ; 8b 46 16
    60545977    xor al, al                                ; 30 c0
    60555978    or AL, strict byte 01ch                   ; 0c 1c
    6056     jmp near 03190h                           ; e9 20 fd
    6057     call 007d4h                               ; e8 61 d3
     5979    jmp near 030c2h                           ; e9 20 fd
     5980    call 007d4h                               ; e8 2f d4
    60585981    test ax, ax                               ; 85 c0
    6059     je near 034e8h                            ; 0f 84 6f 00
     5982    je near 0341ah                            ; 0f 84 6f 00
    60605983    mov ax, word [bp+016h]                    ; 8b 46 16
    60615984    xor ah, ah                                ; 30 e4
    60625985    cmp ax, strict word 00002h                ; 3d 02 00
    6063     jc short 03496h                           ; 72 13
    6064     jbe short 034bch                          ; 76 37
     5986    jc short 033c8h                           ; 72 13
     5987    jbe short 033eeh                          ; 76 37
    60655988    cmp ax, strict word 0000ah                ; 3d 0a 00
    6066     je short 034e1h                           ; 74 57
     5989    je short 03413h                           ; 74 57
    60675990    cmp ax, strict word 00009h                ; 3d 09 00
    6068     je short 034e1h                           ; 74 52
     5991    je short 03413h                           ; 74 52
    60695992    cmp ax, strict word 00004h                ; 3d 04 00
    6070     je short 034cch                           ; 74 38
    6071     jmp short 034e1h                          ; eb 4b
     5993    je short 033feh                           ; 74 38
     5994    jmp short 03413h                          ; eb 4b
    60725995    cmp ax, strict word 00001h                ; 3d 01 00
    6073     je short 034ach                           ; 74 11
     5996    je short 033deh                           ; 74 11
    60745997    test ax, ax                               ; 85 c0
    6075     jne short 034e1h                          ; 75 42
     5998    jne short 03413h                          ; 75 42
    60765999    mov bx, si                                ; 89 f3
    60776000    mov dx, word [bp+01ah]                    ; 8b 56 1a
    60786001    lea ax, [bp+016h]                         ; 8d 46 16
    6079     call 035b5h                               ; e8 0b 01
    6080     jmp short 034edh                          ; eb 41
     6002    call 034e7h                               ; e8 0b 01
     6003    jmp short 0341fh                          ; eb 41
    60816004    mov cx, si                                ; 89 f1
    60826005    mov bx, word [bp+01ah]                    ; 8b 5e 1a
    60836006    mov dx, word [bp+014h]                    ; 8b 56 14
    60846007    lea ax, [bp+016h]                         ; 8d 46 16
    6085     call 037b4h                               ; e8 fa 02
    6086     jmp short 034edh                          ; eb 31
     6008    call 036d1h                               ; e8 e5 02
     6009    jmp short 0341fh                          ; eb 31
    60876010    mov cx, si                                ; 89 f1
    60886011    mov bx, word [bp+01ah]                    ; 8b 5e 1a
    60896012    mov dx, word [bp+010h]                    ; 8b 56 10
    60906013    lea ax, [bp+016h]                         ; 8d 46 16
    6091     call 0386fh                               ; e8 a5 03
    6092     jmp short 034edh                          ; eb 21
     6014    call 03781h                               ; e8 85 03
     6015    jmp short 0341fh                          ; eb 21
    60936016    lea ax, [bp+010h]                         ; 8d 46 10
    60946017    push ax                                   ; 50
     
    60976020    mov dx, word [bp+014h]                    ; 8b 56 14
    60986021    lea ax, [bp+016h]                         ; 8d 46 16
    6099     call 03a79h                               ; e8 9a 05
    6100     jmp short 034edh                          ; eb 0c
     6022    call 03970h                               ; e8 5f 05
     6023    jmp short 0341fh                          ; eb 0c
    61016024    mov word [bp+016h], 00100h                ; c7 46 16 00 01
    6102     jmp short 034edh                          ; eb 05
     6025    jmp short 0341fh                          ; eb 05
    61036026    mov word [bp+016h], 00100h                ; c7 46 16 00 01
    61046027    leave                                     ; c9
     
    61066029    pop si                                    ; 5e
    61076030    retn                                      ; c3
    6108 dispi_set_xres_:                             ; 0xc34f1 LB 0x18
     6031dispi_set_xres_:                             ; 0xc3423 LB 0x18
    61096032    push bx                                   ; 53
    61106033    push dx                                   ; 52
     
    61226045    pop bx                                    ; 5b
    61236046    retn                                      ; c3
    6124 dispi_set_yres_:                             ; 0xc3509 LB 0x18
     6047dispi_set_yres_:                             ; 0xc343b LB 0x18
    61256048    push bx                                   ; 53
    61266049    push dx                                   ; 52
     
    61386061    pop bx                                    ; 5b
    61396062    retn                                      ; c3
    6140 dispi_set_bpp_:                              ; 0xc3521 LB 0x18
     6063dispi_set_bpp_:                              ; 0xc3453 LB 0x18
    61416064    push bx                                   ; 53
    61426065    push dx                                   ; 52
     
    61546077    pop bx                                    ; 5b
    61556078    retn                                      ; c3
    6156 in_word_:                                    ; 0xc3539 LB 0xf
     6079in_word_:                                    ; 0xc346b LB 0xf
    61576080    push bx                                   ; 53
    61586081    push bp                                   ; 55
     
    61666089    pop bx                                    ; 5b
    61676090    retn                                      ; c3
    6168 in_byte_:                                    ; 0xc3548 LB 0x11
     6091in_byte_:                                    ; 0xc347a LB 0x11
    61696092    push bx                                   ; 53
    61706093    push bp                                   ; 55
     
    61806103    pop bx                                    ; 5b
    61816104    retn                                      ; c3
    6182 mode_info_find_mode_:                        ; 0xc3559 LB 0x5c
     6105mode_info_find_mode_:                        ; 0xc348b LB 0x5c
    61836106    push bx                                   ; 53
    61846107    push cx                                   ; 51
     
    61916114    xor dx, dx                                ; 31 d2
    61926115    mov ax, 003b6h                            ; b8 b6 03
    6193     call 03539h                               ; e8 cd ff
     6116    call 0346bh                               ; e8 cd ff
    61946117    cmp ax, 077cch                            ; 3d cc 77
    6195     je short 0357dh                           ; 74 0c
     6118    je short 034afh                           ; 74 0c
    61966119    push ax                                   ; 50
    61976120    push 07ee2h                               ; 68 e2 7e
    6198     call 03014h                               ; e8 9c fa
     6121    call 02f54h                               ; e8 aa fa
    61996122    add sp, strict byte 00004h                ; 83 c4 04
    6200     jmp short 035adh                          ; eb 30
     6123    jmp short 034dfh                          ; eb 30
    62016124    mov bx, strict word 00004h                ; bb 04 00
    62026125    mov dx, bx                                ; 89 da
    62036126    mov ax, 003b6h                            ; b8 b6 03
    6204     call 03539h                               ; e8 b1 ff
     6127    call 0346bh                               ; e8 b1 ff
    62056128    mov cx, ax                                ; 89 c1
    62066129    cmp cx, strict byte 0ffffh                ; 83 f9 ff
    6207     je short 035adh                           ; 74 1e
     6130    je short 034dfh                           ; 74 1e
    62086131    lea dx, [bx+002h]                         ; 8d 57 02
    62096132    mov ax, 003b6h                            ; b8 b6 03
    6210     call 03539h                               ; e8 a1 ff
     6133    call 0346bh                               ; e8 a1 ff
    62116134    cmp cx, di                                ; 39 f9
    6212     jne short 035a8h                          ; 75 0c
     6135    jne short 034dah                          ; 75 0c
    62136136    test si, si                               ; 85 f6
    6214     jne short 035a4h                          ; 75 04
     6137    jne short 034d6h                          ; 75 04
    62156138    mov ax, bx                                ; 89 d8
    6216     jmp short 035afh                          ; eb 0b
     6139    jmp short 034e1h                          ; eb 0b
    62176140    test AL, strict byte 080h                 ; a8 80
    6218     jne short 035a0h                          ; 75 f8
     6141    jne short 034d2h                          ; 75 f8
    62196142    add bx, strict byte 00044h                ; 83 c3 44
    6220     jmp short 03580h                          ; eb d3
     6143    jmp short 034b2h                          ; eb d3
    62216144    xor ax, ax                                ; 31 c0
    62226145    pop bp                                    ; 5d
     
    62266149    pop bx                                    ; 5b
    62276150    retn                                      ; c3
    6228 vbe_biosfn_return_controller_information_: ; 0xc35b5 LB 0x1ff
     6151vbe_biosfn_return_controller_information_: ; 0xc34e7 LB 0x1ea
    62296152    push cx                                   ; 51
    62306153    push si                                   ; 56
    62316154    push di                                   ; 57
    6232     enter 0000ah, 000h                        ; c8 0a 00 00
     6155    enter 00006h, 000h                        ; c8 06 00 00
    62336156    push ax                                   ; 50
    62346157    mov si, dx                                ; 89 d6
    62356158    mov di, bx                                ; 89 df
    6236     mov ax, ss                                ; 8c d0
    6237     mov word [bp-008h], ax                    ; 89 46 f8
     6159    mov word [bp-004h], strict word 00022h    ; c7 46 fc 22 00
     6160    call 005d7h                               ; e8 dc d0
    62386161    mov word [bp-002h], ax                    ; 89 46 fe
    6239     mov word [bp-006h], strict word 00022h    ; c7 46 fa 22 00
    6240     call 005d7h                               ; e8 06 d0
    6241     mov word [bp-00ah], ax                    ; 89 46 f6
    62426162    xor dx, dx                                ; 31 d2
    62436163    mov ax, 003b6h                            ; b8 b6 03
    6244     call 03539h                               ; e8 5d ff
     6164    call 0346bh                               ; e8 65 ff
    62456165    cmp ax, 077cch                            ; 3d cc 77
    6246     je short 035f9h                           ; 74 18
    6247     mov bx, 00100h                            ; bb 00 01
    6248     mov dx, word [bp-00ch]                    ; 8b 56 f4
    6249     mov ax, word [bp-008h]                    ; 8b 46 f8
    6250     call 03006h                               ; e8 19 fa
     6166    je short 03521h                           ; 74 16
     6167    push SS                                   ; 16
     6168    pop ES                                    ; 07
     6169    mov bx, word [bp-008h]                    ; 8b 5e f8
     6170    mov word [es:bx], 00100h                  ; 26 c7 07 00 01
    62516171    push 07efbh                               ; 68 fb 7e
    6252     call 03014h                               ; e8 21 fa
     6172    call 02f54h                               ; e8 39 fa
    62536173    add sp, strict byte 00002h                ; 83 c4 02
    6254     jmp near 037afh                           ; e9 b6 01
     6174    jmp near 036cch                           ; e9 ab 01
    62556175    mov cx, strict word 00004h                ; b9 04 00
    6256     mov dx, word [bp-00ch]                    ; 8b 56 f4
    6257     mov ax, word [bp-002h]                    ; 8b 46 fe
    6258     call 02ff8h                               ; e8 f3 f9
    6259     mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
     6176    mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
    62606177    mov dx, di                                ; 89 fa
    62616178    mov ax, si                                ; 89 f0
    6262     call 02fdch                               ; e8 cb f9
     6179    call 02f0ah                               ; e8 da f9
    62636180    cmp AL, strict byte 056h                  ; 3c 56
    6264     jne short 03639h                          ; 75 24
     6181    jne short 03558h                          ; 75 24
    62656182    lea dx, [di+001h]                         ; 8d 55 01
    62666183    mov ax, si                                ; 89 f0
    6267     call 02fdch                               ; e8 bf f9
     6184    call 02f0ah                               ; e8 ce f9
    62686185    cmp AL, strict byte 042h                  ; 3c 42
    6269     jne short 03639h                          ; 75 18
     6186    jne short 03558h                          ; 75 18
    62706187    lea dx, [di+002h]                         ; 8d 55 02
    62716188    mov ax, si                                ; 89 f0
    6272     call 02fdch                               ; e8 b3 f9
     6189    call 02f0ah                               ; e8 c2 f9
    62736190    cmp AL, strict byte 045h                  ; 3c 45
    6274     jne short 03639h                          ; 75 0c
     6191    jne short 03558h                          ; 75 0c
    62756192    lea dx, [di+003h]                         ; 8d 55 03
    62766193    mov ax, si                                ; 89 f0
    6277     call 02fdch                               ; e8 a7 f9
     6194    call 02f0ah                               ; e8 b6 f9
    62786195    cmp AL, strict byte 032h                  ; 3c 32
    6279     je short 03668h                           ; 74 2f
     6196    je short 03587h                           ; 74 2f
    62806197    mov dx, di                                ; 89 fa
    62816198    mov ax, si                                ; 89 f0
    6282     call 02fdch                               ; e8 9c f9
     6199    call 02f0ah                               ; e8 ab f9
    62836200    cmp AL, strict byte 056h                  ; 3c 56
    6284     jne short 0366dh                          ; 75 29
     6201    jne short 0358ch                          ; 75 29
    62856202    lea dx, [di+001h]                         ; 8d 55 01
    62866203    mov ax, si                                ; 89 f0
    6287     call 02fdch                               ; e8 90 f9
     6204    call 02f0ah                               ; e8 9f f9
    62886205    cmp AL, strict byte 045h                  ; 3c 45
    6289     jne short 0366dh                          ; 75 1d
     6206    jne short 0358ch                          ; 75 1d
    62906207    lea dx, [di+002h]                         ; 8d 55 02
    62916208    mov ax, si                                ; 89 f0
    6292     call 02fdch                               ; e8 84 f9
     6209    call 02f0ah                               ; e8 93 f9
    62936210    cmp AL, strict byte 053h                  ; 3c 53
    6294     jne short 0366dh                          ; 75 11
     6211    jne short 0358ch                          ; 75 11
    62956212    lea dx, [di+003h]                         ; 8d 55 03
    62966213    mov ax, si                                ; 89 f0
    6297     call 02fdch                               ; e8 78 f9
     6214    call 02f0ah                               ; e8 87 f9
    62986215    cmp AL, strict byte 041h                  ; 3c 41
    6299     jne short 0366dh                          ; 75 05
    6300     mov word [bp-004h], strict word 00001h    ; c7 46 fc 01 00
     6216    jne short 0358ch                          ; 75 05
     6217    mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
    63016218    mov bx, strict word 00056h                ; bb 56 00
    63026219    mov dx, di                                ; 89 fa
    63036220    mov ax, si                                ; 89 f0
    6304     call 02feah                               ; e8 73 f9
     6221    call 02f18h                               ; e8 82 f9
    63056222    lea dx, [di+001h]                         ; 8d 55 01
    63066223    mov bx, strict word 00045h                ; bb 45 00
    63076224    mov ax, si                                ; 89 f0
    6308     call 02feah                               ; e8 68 f9
     6225    call 02f18h                               ; e8 77 f9
    63096226    lea dx, [di+002h]                         ; 8d 55 02
    63106227    mov bx, strict word 00053h                ; bb 53 00
    63116228    mov ax, si                                ; 89 f0
    6312     call 02feah                               ; e8 5d f9
     6229    call 02f18h                               ; e8 6c f9
    63136230    lea dx, [di+003h]                         ; 8d 55 03
    63146231    mov bx, strict word 00041h                ; bb 41 00
    63156232    mov ax, si                                ; 89 f0
    6316     call 02feah                               ; e8 52 f9
     6233    call 02f18h                               ; e8 61 f9
    63176234    lea dx, [di+004h]                         ; 8d 55 04
    63186235    mov bx, 00200h                            ; bb 00 02
    63196236    mov ax, si                                ; 89 f0
    6320     call 03006h                               ; e8 63 f9
     6237    call 02f34h                               ; e8 72 f9
    63216238    lea dx, [di+008h]                         ; 8d 55 08
    63226239    mov bx, 0c000h                            ; bb 00 c0
    63236240    mov ax, si                                ; 89 f0
    6324     call 03006h                               ; e8 58 f9
     6241    call 02f34h                               ; e8 67 f9
    63256242    lea dx, [di+006h]                         ; 8d 55 06
    63266243    mov bx, 07e20h                            ; bb 20 7e
    63276244    mov ax, si                                ; 89 f0
    6328     call 03006h                               ; e8 4d f9
     6245    call 02f34h                               ; e8 5c f9
    63296246    lea dx, [di+00ah]                         ; 8d 55 0a
    63306247    mov bx, strict word 00001h                ; bb 01 00
    63316248    mov ax, si                                ; 89 f0
    6332     call 02feah                               ; e8 26 f9
     6249    call 02f18h                               ; e8 35 f9
    63336250    lea dx, [di+00bh]                         ; 8d 55 0b
    63346251    xor bx, bx                                ; 31 db
    63356252    mov ax, si                                ; 89 f0
    6336     call 02feah                               ; e8 1c f9
     6253    call 02f18h                               ; e8 2b f9
    63376254    lea dx, [di+00ch]                         ; 8d 55 0c
    63386255    xor bx, bx                                ; 31 db
    63396256    mov ax, si                                ; 89 f0
    6340     call 02feah                               ; e8 12 f9
     6257    call 02f18h                               ; e8 21 f9
    63416258    lea dx, [di+00dh]                         ; 8d 55 0d
    63426259    xor bx, bx                                ; 31 db
    63436260    mov ax, si                                ; 89 f0
    6344     call 02feah                               ; e8 08 f9
     6261    call 02f18h                               ; e8 17 f9
    63456262    lea dx, [di+010h]                         ; 8d 55 10
    63466263    mov bx, si                                ; 89 f3
    63476264    mov ax, si                                ; 89 f0
    6348     call 03006h                               ; e8 1a f9
     6265    call 02f34h                               ; e8 29 f9
    63496266    lea bx, [di+022h]                         ; 8d 5d 22
    63506267    lea dx, [di+00eh]                         ; 8d 55 0e
    63516268    mov ax, si                                ; 89 f0
    6352     call 03006h                               ; e8 0f f9
     6269    call 02f34h                               ; e8 1e f9
    63536270    mov dx, strict word 0ffffh                ; ba ff ff
    63546271    mov ax, 003b6h                            ; b8 b6 03
    6355     call 03539h                               ; e8 39 fe
     6272    call 0346bh                               ; e8 4c fe
    63566273    lea dx, [di+012h]                         ; 8d 55 12
    63576274    mov bx, ax                                ; 89 c3
    63586275    mov ax, si                                ; 89 f0
    6359     call 03006h                               ; e8 fc f8
    6360     cmp word [bp-004h], strict byte 00000h    ; 83 7e fc 00
    6361     je short 0375dh                           ; 74 4d
     6276    call 02f34h                               ; e8 0b f9
     6277    cmp word [bp-006h], strict byte 00000h    ; 83 7e fa 00
     6278    je short 0367ch                           ; 74 4d
    63626279    lea dx, [di+014h]                         ; 8d 55 14
    6363     mov bx, strict word 00002h                ; bb 02 00
    6364     mov ax, si                                ; 89 f0
    6365     call 03006h                               ; e8 eb f8
     6280    mov bx, strict word 00003h                ; bb 03 00
     6281    mov ax, si                                ; 89 f0
     6282    call 02f34h                               ; e8 fa f8
    63666283    lea dx, [di+018h]                         ; 8d 55 18
    63676284    mov bx, 0c000h                            ; bb 00 c0
    63686285    mov ax, si                                ; 89 f0
    6369     call 03006h                               ; e8 e0 f8
     6286    call 02f34h                               ; e8 ef f8
    63706287    lea dx, [di+016h]                         ; 8d 55 16
    63716288    mov bx, 07e35h                            ; bb 35 7e
    63726289    mov ax, si                                ; 89 f0
    6373     call 03006h                               ; e8 d5 f8
     6290    call 02f34h                               ; e8 e4 f8
    63746291    lea dx, [di+01ch]                         ; 8d 55 1c
    63756292    mov bx, 0c000h                            ; bb 00 c0
    63766293    mov ax, si                                ; 89 f0
    6377     call 03006h                               ; e8 ca f8
     6294    call 02f34h                               ; e8 d9 f8
    63786295    lea dx, [di+01ah]                         ; 8d 55 1a
    63796296    mov bx, 07e48h                            ; bb 48 7e
    63806297    mov ax, si                                ; 89 f0
    6381     call 03006h                               ; e8 bf f8
     6298    call 02f34h                               ; e8 ce f8
    63826299    lea dx, [di+020h]                         ; 8d 55 20
    63836300    mov bx, 0c000h                            ; bb 00 c0
    63846301    mov ax, si                                ; 89 f0
    6385     call 03006h                               ; e8 b4 f8
     6302    call 02f34h                               ; e8 c3 f8
    63866303    lea dx, [di+01eh]                         ; 8d 55 1e
    63876304    mov bx, 07e69h                            ; bb 69 7e
    63886305    mov ax, si                                ; 89 f0
    6389     call 03006h                               ; e8 a9 f8
     6306    call 02f34h                               ; e8 b8 f8
    63906307    mov dx, cx                                ; 89 ca
    63916308    add dx, strict byte 0001bh                ; 83 c2 1b
    63926309    mov ax, 003b6h                            ; b8 b6 03
    6393     call 03548h                               ; e8 e0 fd
     6310    call 0347ah                               ; e8 f3 fd
    63946311    xor ah, ah                                ; 30 e4
    6395     cmp ax, word [bp-00ah]                    ; 3b 46 f6
    6396     jnbe short 03787h                         ; 77 18
     6312    cmp ax, word [bp-002h]                    ; 3b 46 fe
     6313    jnbe short 036a6h                         ; 77 18
    63976314    mov dx, cx                                ; 89 ca
    63986315    mov ax, 003b6h                            ; b8 b6 03
    6399     call 03539h                               ; e8 c2 fd
    6400     mov dx, word [bp-006h]                    ; 8b 56 fa
     6316    call 0346bh                               ; e8 d5 fd
     6317    mov dx, word [bp-004h]                    ; 8b 56 fc
    64016318    add dx, di                                ; 01 fa
    64026319    mov bx, ax                                ; 89 c3
    64036320    mov ax, si                                ; 89 f0
    6404     call 03006h                               ; e8 83 f8
    6405     add word [bp-006h], strict byte 00002h    ; 83 46 fa 02
     6321    call 02f34h                               ; e8 92 f8
     6322    add word [bp-004h], strict byte 00002h    ; 83 46 fc 02
    64066323    add cx, strict byte 00044h                ; 83 c1 44
    64076324    mov dx, cx                                ; 89 ca
    64086325    mov ax, 003b6h                            ; b8 b6 03
    6409     call 03539h                               ; e8 a7 fd
     6326    call 0346bh                               ; e8 ba fd
    64106327    cmp ax, strict word 0ffffh                ; 3d ff ff
    6411     jne short 0375dh                          ; 75 c6
    6412     mov dx, word [bp-006h]                    ; 8b 56 fa
     6328    jne short 0367ch                          ; 75 c6
     6329    mov dx, word [bp-004h]                    ; 8b 56 fc
    64136330    add dx, di                                ; 01 fa
    64146331    mov bx, ax                                ; 89 c3
    64156332    mov ax, si                                ; 89 f0
    6416     call 03006h                               ; e8 63 f8
    6417     mov bx, strict word 0004fh                ; bb 4f 00
    6418     mov dx, word [bp-00ch]                    ; 8b 56 f4
    6419     mov ax, word [bp-002h]                    ; 8b 46 fe
    6420     call 03006h                               ; e8 57 f8
     6333    call 02f34h                               ; e8 72 f8
     6334    push SS                                   ; 16
     6335    pop ES                                    ; 07
     6336    mov bx, word [bp-008h]                    ; 8b 5e f8
     6337    mov word [es:bx], strict word 0004fh      ; 26 c7 07 4f 00
    64216338    leave                                     ; c9
    64226339    pop di                                    ; 5f
     
    64246341    pop cx                                    ; 59
    64256342    retn                                      ; c3
    6426 vbe_biosfn_return_mode_information_:         ; 0xc37b4 LB 0xbb
     6343vbe_biosfn_return_mode_information_:         ; 0xc36d1 LB 0xb0
    64276344    push si                                   ; 56
    64286345    push di                                   ; 57
    6429     enter 00006h, 000h                        ; c8 06 00 00
    6430     push ax                                   ; 50
    6431     push dx                                   ; 52
     6346    enter 00004h, 000h                        ; c8 04 00 00
     6347    push ax                                   ; 50
     6348    mov ax, dx                                ; 89 d0
    64326349    mov si, bx                                ; 89 de
    64336350    mov word [bp-002h], cx                    ; 89 4e fe
    6434     mov ax, ss                                ; 8c d0
     6351    test dh, 040h                             ; f6 c6 40
     6352    db  00fh, 095h, 0c2h
     6353    ; setne dl                                  ; 0f 95 c2
     6354    xor dh, dh                                ; 30 f6
     6355    and ah, 001h                              ; 80 e4 01
     6356    call 0348bh                               ; e8 9e fd
    64356357    mov word [bp-004h], ax                    ; 89 46 fc
    6436     test byte [bp-009h], 040h                 ; f6 46 f7 40
    6437     db  00fh, 095h, 0c0h
    6438     ; setne al                                  ; 0f 95 c0
    6439     movzx dx, al                              ; 0f b6 d0
    6440     and byte [bp-009h], 001h                  ; 80 66 f7 01
    6441     mov ax, word [bp-00ah]                    ; 8b 46 f6
    6442     call 03559h                               ; e8 7f fd
    6443     mov word [bp-006h], ax                    ; 89 46 fa
    64446358    test ax, ax                               ; 85 c0
    6445     je near 0385fh                            ; 0f 84 7c 00
     6359    je near 03772h                            ; 0f 84 7c 00
    64466360    mov cx, 00100h                            ; b9 00 01
    64476361    xor ax, ax                                ; 31 c0
     
    64496363    mov es, bx                                ; 8e c3
    64506364    cld                                       ; fc
    6451     jcxz 037f2h                               ; e3 02
     6365    jcxz 03705h                               ; e3 02
    64526366    rep stosb                                 ; f3 aa
    64536367    xor cx, cx                                ; 31 c9
    6454     jmp short 037fbh                          ; eb 05
     6368    jmp short 0370eh                          ; eb 05
    64556369    cmp cx, strict byte 00042h                ; 83 f9 42
    6456     jnc short 03818h                          ; 73 1d
    6457     mov dx, word [bp-006h]                    ; 8b 56 fa
     6370    jnc short 0372bh                          ; 73 1d
     6371    mov dx, word [bp-004h]                    ; 8b 56 fc
    64586372    inc dx                                    ; 42
    64596373    inc dx                                    ; 42
    64606374    add dx, cx                                ; 01 ca
    64616375    mov ax, 003b6h                            ; b8 b6 03
    6462     call 03548h                               ; e8 40 fd
     6376    call 0347ah                               ; e8 5f fd
    64636377    movzx bx, al                              ; 0f b6 d8
    64646378    mov dx, word [bp-002h]                    ; 8b 56 fe
    64656379    add dx, cx                                ; 01 ca
    64666380    mov ax, si                                ; 89 f0
    6467     call 02feah                               ; e8 d5 f7
    6468     inc cx                                    ; 41
    6469     jmp short 037f6h                          ; eb de
     6381    call 02f18h                               ; e8 f0 f7
     6382    inc cx                                    ; 41
     6383    jmp short 03709h                          ; eb de
    64706384    mov dx, word [bp-002h]                    ; 8b 56 fe
    64716385    inc dx                                    ; 42
    64726386    inc dx                                    ; 42
    64736387    mov ax, si                                ; 89 f0
    6474     call 02fdch                               ; e8 ba f7
     6388    call 02f0ah                               ; e8 d5 f7
    64756389    test AL, strict byte 001h                 ; a8 01
    6476     je short 03842h                           ; 74 1c
     6390    je short 03755h                           ; 74 1c
    64776391    mov dx, word [bp-002h]                    ; 8b 56 fe
    64786392    add dx, strict byte 0000ch                ; 83 c2 0c
    64796393    mov bx, 00635h                            ; bb 35 06
    64806394    mov ax, si                                ; 89 f0
    6481     call 03006h                               ; e8 d2 f7
     6395    call 02f34h                               ; e8 ed f7
    64826396    mov dx, word [bp-002h]                    ; 8b 56 fe
    64836397    add dx, strict byte 0000eh                ; 83 c2 0e
    64846398    mov bx, 0c000h                            ; bb 00 c0
    64856399    mov ax, si                                ; 89 f0
    6486     call 03006h                               ; e8 c4 f7
     6400    call 02f34h                               ; e8 df f7
    64876401    mov ax, strict word 0000bh                ; b8 0b 00
    64886402    mov dx, 001ceh                            ; ba ce 01
     
    64946408    mov bx, ax                                ; 89 c3
    64956409    mov ax, si                                ; 89 f0
    6496     call 03006h                               ; e8 ac f7
    6497     mov bx, strict word 0004fh                ; bb 4f 00
    6498     jmp short 03862h                          ; eb 03
    6499     mov bx, 00100h                            ; bb 00 01
    6500     mov dx, word [bp-008h]                    ; 8b 56 f8
    6501     mov ax, word [bp-004h]                    ; 8b 46 fc
    6502     call 03006h                               ; e8 9b f7
     6410    call 02f34h                               ; e8 c7 f7
     6411    mov ax, strict word 0004fh                ; b8 4f 00
     6412    jmp short 03775h                          ; eb 03
     6413    mov ax, 00100h                            ; b8 00 01
     6414    push SS                                   ; 16
     6415    pop ES                                    ; 07
     6416    mov bx, word [bp-006h]                    ; 8b 5e fa
     6417    mov word [es:bx], ax                      ; 26 89 07
    65036418    leave                                     ; c9
    65046419    pop di                                    ; 5f
    65056420    pop si                                    ; 5e
    65066421    retn                                      ; c3
    6507 vbe_biosfn_set_mode_:                        ; 0xc386f LB 0x112
     6422vbe_biosfn_set_mode_:                        ; 0xc3781 LB 0xf7
    65086423    push si                                   ; 56
    6509     push di                                   ; 57
    6510     enter 0000ah, 000h                        ; c8 0a 00 00
     6424    enter 00006h, 000h                        ; c8 06 00 00
    65116425    mov si, ax                                ; 89 c6
    6512     mov word [bp-008h], dx                    ; 89 56 f8
    6513     mov ax, ss                                ; 8c d0
    6514     mov word [bp-00ah], ax                    ; 89 46 f6
    6515     test byte [bp-007h], 040h                 ; f6 46 f9 40
     6426    mov word [bp-006h], dx                    ; 89 56 fa
     6427    test byte [bp-005h], 040h                 ; f6 46 fb 40
    65166428    db  00fh, 095h, 0c0h
    65176429    ; setne al                                  ; 0f 95 c0
    6518     movzx dx, al                              ; 0f b6 d0
    6519     mov ax, dx                                ; 89 d0
    6520     test dx, dx                               ; 85 d2
    6521     je short 03892h                           ; 74 03
    6522     mov dx, strict word 00040h                ; ba 40 00
    6523     mov byte [bp-002h], dl                    ; 88 56 fe
    6524     test byte [bp-007h], 080h                 ; f6 46 f9 80
    6525     je short 038a0h                           ; 74 05
    6526     mov dx, 00080h                            ; ba 80 00
    6527     jmp short 038a2h                          ; eb 02
    6528     xor dx, dx                                ; 31 d2
    6529     mov byte [bp-004h], dl                    ; 88 56 fc
    6530     and byte [bp-007h], 001h                  ; 80 66 f9 01
    6531     cmp word [bp-008h], 00100h                ; 81 7e f8 00 01
    6532     jnc short 038c6h                          ; 73 16
    6533     push strict byte 00000h                   ; 6a 00
    6534     call 005f9h                               ; e8 44 cd
    6535     add sp, strict byte 00002h                ; 83 c4 02
    6536     mov al, byte [bp-008h]                    ; 8a 46 f8
    65376430    xor ah, ah                                ; 30 e4
    6538     call 00d85h                               ; e8 c5 d4
     6431    mov dx, ax                                ; 89 c2
     6432    test ax, ax                               ; 85 c0
     6433    je short 0379dh                           ; 74 03
     6434    mov ax, strict word 00040h                ; b8 40 00
     6435    mov byte [bp-002h], al                    ; 88 46 fe
     6436    test byte [bp-005h], 080h                 ; f6 46 fb 80
     6437    je short 037abh                           ; 74 05
     6438    mov ax, 00080h                            ; b8 80 00
     6439    jmp short 037adh                          ; eb 02
     6440    xor ax, ax                                ; 31 c0
     6441    mov byte [bp-004h], al                    ; 88 46 fc
     6442    and byte [bp-005h], 001h                  ; 80 66 fb 01
     6443    cmp word [bp-006h], 00100h                ; 81 7e fa 00 01
     6444    jnc short 037cdh                          ; 73 12
     6445    xor ax, ax                                ; 31 c0
     6446    call 005f9h                               ; e8 39 ce
     6447    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     6448    call 00fc1h                               ; e8 fa d7
    65396449    mov ax, strict word 0004fh                ; b8 4f 00
    6540     jmp near 03973h                           ; e9 ad 00
    6541     mov dx, ax                                ; 89 c2
    6542     mov ax, word [bp-008h]                    ; 8b 46 f8
    6543     call 03559h                               ; e8 8b fc
     6450    jmp near 03872h                           ; e9 a5 00
     6451    mov ax, word [bp-006h]                    ; 8b 46 fa
     6452    call 0348bh                               ; e8 b8 fc
    65446453    mov bx, ax                                ; 89 c3
    6545     mov di, ax                                ; 89 c7
     6454    mov cx, ax                                ; 89 c1
    65466455    test ax, ax                               ; 85 c0
    6547     je near 03970h                            ; 0f 84 98 00
     6456    je near 0386fh                            ; 0f 84 92 00
    65486457    lea dx, [bx+014h]                         ; 8d 57 14
    65496458    mov ax, 003b6h                            ; b8 b6 03
    6550     call 03539h                               ; e8 58 fc
     6459    call 0346bh                               ; e8 85 fc
    65516460    lea dx, [bx+016h]                         ; 8d 57 16
    65526461    mov ax, 003b6h                            ; b8 b6 03
    6553     call 03539h                               ; e8 4f fc
     6462    call 0346bh                               ; e8 7c fc
    65546463    lea dx, [bx+01bh]                         ; 8d 57 1b
    65556464    mov ax, 003b6h                            ; b8 b6 03
    6556     call 03548h                               ; e8 55 fc
    6557     mov byte [bp-006h], al                    ; 88 46 fa
    6558     push strict byte 00000h                   ; 6a 00
    6559     call 005f9h                               ; e8 fe cc
    6560     add sp, strict byte 00002h                ; 83 c4 02
    6561     cmp byte [bp-006h], 004h                  ; 80 7e fa 04
    6562     jne short 0390ah                          ; 75 06
     6465    call 0347ah                               ; e8 82 fc
     6466    mov dl, al                                ; 88 c2
     6467    xor ax, ax                                ; 31 c0
     6468    call 005f9h                               ; e8 fa cd
     6469    cmp dl, 004h                              ; 80 fa 04
     6470    jne short 0380ah                          ; 75 06
    65636471    mov ax, strict word 0006ah                ; b8 6a 00
    6564     call 00d85h                               ; e8 7b d4
    6565     lea dx, [di+01bh]                         ; 8d 55 1b
     6472    call 00fc1h                               ; e8 b7 d7
     6473    mov dx, cx                                ; 89 ca
     6474    add dx, strict byte 0001bh                ; 83 c2 1b
    65666475    mov ax, 003b6h                            ; b8 b6 03
    6567     call 03548h                               ; e8 35 fc
     6476    call 0347ah                               ; e8 65 fc
    65686477    xor ah, ah                                ; 30 e4
    6569     call 03521h                               ; e8 09 fc
    6570     lea dx, [di+014h]                         ; 8d 55 14
     6478    call 03453h                               ; e8 39 fc
     6479    mov dx, cx                                ; 89 ca
     6480    add dx, strict byte 00014h                ; 83 c2 14
    65716481    mov ax, 003b6h                            ; b8 b6 03
    6572     call 03539h                               ; e8 18 fc
    6573     call 034f1h                               ; e8 cd fb
    6574     lea dx, [di+016h]                         ; 8d 55 16
     6482    call 0346bh                               ; e8 46 fc
     6483    call 03423h                               ; e8 fb fb
     6484    mov dx, cx                                ; 89 ca
     6485    add dx, strict byte 00016h                ; 83 c2 16
    65756486    mov ax, 003b6h                            ; b8 b6 03
    6576     call 03539h                               ; e8 0c fc
    6577     call 03509h                               ; e8 d9 fb
    6578     push strict byte 00000h                   ; 6a 00
    6579     call 00617h                               ; e8 e2 cc
    6580     add sp, strict byte 00002h                ; 83 c4 02
     6487    call 0346bh                               ; e8 38 fc
     6488    call 0343bh                               ; e8 05 fc
     6489    xor ax, ax                                ; 31 c0
     6490    call 00617h                               ; e8 dc cd
    65816491    mov al, byte [bp-004h]                    ; 8a 46 fc
    65826492    or AL, strict byte 001h                   ; 0c 01
     
    65846494    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    65856495    or ax, dx                                 ; 09 d0
    6586     push ax                                   ; 50
    6587     call 005f9h                               ; e8 af cc
    6588     add sp, strict byte 00002h                ; 83 c4 02
    6589     call 006f3h                               ; e8 a3 cd
    6590     mov bx, word [bp-008h]                    ; 8b 5e f8
     6496    call 005f9h                               ; e8 ad cd
     6497    call 006f3h                               ; e8 a4 ce
     6498    mov bx, word [bp-006h]                    ; 8b 5e fa
    65916499    mov dx, 000bah                            ; ba ba 00
    65926500    mov ax, strict word 00040h                ; b8 40 00
    6593     call 03006h                               ; e8 aa f6
     6501    call 02f34h                               ; e8 d9 f6
    65946502    mov al, byte [bp-004h]                    ; 8a 46 fc
    65956503    or AL, strict byte 060h                   ; 0c 60
     
    65976505    mov dx, 00087h                            ; ba 87 00
    65986506    mov ax, strict word 00040h                ; b8 40 00
    6599     call 02feah                               ; e8 7d f6
    6600     jmp near 038c0h                           ; e9 50 ff
     6507    call 02f18h                               ; e8 ac f6
     6508    jmp near 037c7h                           ; e9 58 ff
    66016509    mov ax, 00100h                            ; b8 00 01
    6602     mov bx, ax                                ; 89 c3
    6603     mov dx, si                                ; 89 f2
    6604     mov ax, word [bp-00ah]                    ; 8b 46 f6
    6605     call 03006h                               ; e8 89 f6
     6510    mov word [ss:si], ax                      ; 36 89 04
    66066511    leave                                     ; c9
    6607     pop di                                    ; 5f
    66086512    pop si                                    ; 5e
    66096513    retn                                      ; c3
    6610 vbe_biosfn_read_video_state_size_:           ; 0xc3981 LB 0x8
     6514vbe_biosfn_read_video_state_size_:           ; 0xc3878 LB 0x8
    66116515    push bp                                   ; 55
    66126516    mov bp, sp                                ; 89 e5
     
    66146518    pop bp                                    ; 5d
    66156519    retn                                      ; c3
    6616 vbe_biosfn_save_video_state_:                ; 0xc3989 LB 0x58
     6520vbe_biosfn_save_video_state_:                ; 0xc3880 LB 0x58
    66176521    push bx                                   ; 53
    66186522    push cx                                   ; 51
     
    66316535    mov dx, cx                                ; 89 ca
    66326536    mov ax, di                                ; 89 f8
    6633     call 03006h                               ; e8 5a f6
     6537    call 02f34h                               ; e8 91 f6
    66346538    inc cx                                    ; 41
    66356539    inc cx                                    ; 41
    66366540    test byte [bp-002h], 001h                 ; f6 46 fe 01
    6637     je short 039dbh                           ; 74 27
     6541    je short 038d2h                           ; 74 27
    66386542    mov si, strict word 00001h                ; be 01 00
    6639     jmp short 039beh                          ; eb 05
     6543    jmp short 038b5h                          ; eb 05
    66406544    cmp si, strict byte 00009h                ; 83 fe 09
    6641     jnbe short 039dbh                         ; 77 1d
     6545    jnbe short 038d2h                         ; 77 1d
    66426546    cmp si, strict byte 00004h                ; 83 fe 04
    6643     je short 039d8h                           ; 74 15
     6547    je short 038cfh                           ; 74 15
    66446548    mov ax, si                                ; 89 f0
    66456549    mov dx, 001ceh                            ; ba ce 01
     
    66506554    mov dx, cx                                ; 89 ca
    66516555    mov ax, di                                ; 89 f8
    6652     call 03006h                               ; e8 30 f6
     6556    call 02f34h                               ; e8 67 f6
    66536557    inc cx                                    ; 41
    66546558    inc cx                                    ; 41
    66556559    inc si                                    ; 46
    6656     jmp short 039b9h                          ; eb de
     6560    jmp short 038b0h                          ; eb de
    66576561    leave                                     ; c9
    66586562    pop di                                    ; 5f
     
    66616565    pop bx                                    ; 5b
    66626566    retn                                      ; c3
    6663 vbe_biosfn_restore_video_state_:             ; 0xc39e1 LB 0x98
     6567vbe_biosfn_restore_video_state_:             ; 0xc38d8 LB 0x98
    66646568    push bx                                   ; 53
    66656569    push cx                                   ; 51
     
    66686572    mov cx, ax                                ; 89 c1
    66696573    mov bx, dx                                ; 89 d3
    6670     call 02ff8h                               ; e8 09 f6
     6574    call 02f26h                               ; e8 40 f6
    66716575    mov word [bp-002h], ax                    ; 89 46 fe
    66726576    inc bx                                    ; 43
    66736577    inc bx                                    ; 43
    66746578    test byte [bp-002h], 001h                 ; f6 46 fe 01
    6675     jne short 03a0ah                          ; 75 10
     6579    jne short 03901h                          ; 75 10
    66766580    mov ax, strict word 00004h                ; b8 04 00
    66776581    mov dx, 001ceh                            ; ba ce 01
     
    66806584    mov dx, 001cfh                            ; ba cf 01
    66816585    out DX, ax                                ; ef
    6682     jmp short 03a74h                          ; eb 6a
     6586    jmp short 0396bh                          ; eb 6a
    66836587    mov ax, strict word 00001h                ; b8 01 00
    66846588    mov dx, 001ceh                            ; ba ce 01
     
    66866590    mov dx, bx                                ; 89 da
    66876591    mov ax, cx                                ; 89 c8
    6688     call 02ff8h                               ; e8 e0 f5
     6592    call 02f26h                               ; e8 17 f6
    66896593    mov dx, 001cfh                            ; ba cf 01
    66906594    out DX, ax                                ; ef
     
    66966600    mov dx, bx                                ; 89 da
    66976601    mov ax, cx                                ; 89 c8
    6698     call 02ff8h                               ; e8 cc f5
     6602    call 02f26h                               ; e8 03 f6
    66996603    mov dx, 001cfh                            ; ba cf 01
    67006604    out DX, ax                                ; ef
     
    67066610    mov dx, bx                                ; 89 da
    67076611    mov ax, cx                                ; 89 c8
    6708     call 02ff8h                               ; e8 b8 f5
     6612    call 02f26h                               ; e8 ef f5
    67096613    mov dx, 001cfh                            ; ba cf 01
    67106614    out DX, ax                                ; ef
     
    67186622    out DX, ax                                ; ef
    67196623    mov si, strict word 00005h                ; be 05 00
    6720     jmp short 03a5eh                          ; eb 05
     6624    jmp short 03955h                          ; eb 05
    67216625    cmp si, strict byte 00009h                ; 83 fe 09
    6722     jnbe short 03a74h                         ; 77 16
     6626    jnbe short 0396bh                         ; 77 16
    67236627    mov ax, si                                ; 89 f0
    67246628    mov dx, 001ceh                            ; ba ce 01
     
    67266630    mov dx, bx                                ; 89 da
    67276631    mov ax, cx                                ; 89 c8
    6728     call 02ff8h                               ; e8 8d f5
     6632    call 02f26h                               ; e8 c4 f5
    67296633    mov dx, 001cfh                            ; ba cf 01
    67306634    out DX, ax                                ; ef
     
    67326636    inc bx                                    ; 43
    67336637    inc si                                    ; 46
    6734     jmp short 03a59h                          ; eb e5
     6638    jmp short 03950h                          ; eb e5
    67356639    leave                                     ; c9
    67366640    pop si                                    ; 5e
     
    67386642    pop bx                                    ; 5b
    67396643    retn                                      ; c3
    6740 vbe_biosfn_save_restore_state_:              ; 0xc3a79 LB 0x96
     6644vbe_biosfn_save_restore_state_:              ; 0xc3970 LB 0x89
    67416645    push si                                   ; 56
    67426646    push di                                   ; 57
    6743     push bp                                   ; 55
    6744     mov bp, sp                                ; 89 e5
    6745     push ax                                   ; 50
    6746     push dx                                   ; 52
    6747     mov ax, ss                                ; 8c d0
     6647    enter 00002h, 000h                        ; c8 02 00 00
    67486648    mov si, ax                                ; 89 c6
     6649    mov word [bp-002h], dx                    ; 89 56 fe
     6650    mov ax, bx                                ; 89 d8
     6651    mov bx, word [bp+008h]                    ; 8b 5e 08
    67496652    mov di, strict word 0004fh                ; bf 4f 00
    6750     xor bh, bh                                ; 30 ff
    6751     mov dx, bx                                ; 89 da
    6752     cmp bx, strict byte 00002h                ; 83 fb 02
    6753     je short 03addh                           ; 74 4d
    6754     cmp bx, strict byte 00001h                ; 83 fb 01
    6755     je short 03abeh                           ; 74 29
    6756     test bx, bx                               ; 85 db
    6757     jne short 03afch                          ; 75 63
    6758     mov ax, word [bp-004h]                    ; 8b 46 fc
    6759     call 028f4h                               ; e8 55 ee
    6760     mov dx, ax                                ; 89 c2
    6761     test byte [bp-004h], 008h                 ; f6 46 fc 08
    6762     je short 03aach                           ; 74 05
    6763     call 03981h                               ; e8 d7 fe
    6764     add ax, dx                                ; 01 d0
    6765     mov bx, ax                                ; 89 c3
    6766     add bx, strict byte 0003fh                ; 83 c3 3f
    6767     shr bx, 006h                              ; c1 eb 06
    6768     mov dx, word [bp+008h]                    ; 8b 56 08
    6769     mov ax, si                                ; 89 f0
    6770     call 03006h                               ; e8 4a f5
    6771     jmp short 03affh                          ; eb 41
    6772     mov dx, word [bp+008h]                    ; 8b 56 08
    6773     call 02ff8h                               ; e8 34 f5
    6774     mov bx, ax                                ; 89 c3
    6775     mov dx, cx                                ; 89 ca
    6776     mov ax, word [bp-004h]                    ; 8b 46 fc
    6777     call 02932h                               ; e8 64 ee
    6778     test byte [bp-004h], 008h                 ; f6 46 fc 08
    6779     je short 03affh                           ; 74 2b
     6653    xor ah, ah                                ; 30 e4
     6654    cmp ax, strict word 00002h                ; 3d 02 00
     6655    je short 039cfh                           ; 74 45
     6656    cmp ax, strict word 00001h                ; 3d 01 00
     6657    je short 039b3h                           ; 74 24
     6658    test ax, ax                               ; 85 c0
     6659    jne short 039ebh                          ; 75 58
     6660    mov ax, word [bp-002h]                    ; 8b 46 fe
     6661    call 0282bh                               ; e8 92 ee
     6662    mov cx, ax                                ; 89 c1
     6663    test byte [bp-002h], 008h                 ; f6 46 fe 08
     6664    je short 039a6h                           ; 74 05
     6665    call 03878h                               ; e8 d4 fe
     6666    add ax, cx                                ; 01 c8
     6667    add ax, strict word 0003fh                ; 05 3f 00
     6668    shr ax, 006h                              ; c1 e8 06
     6669    push SS                                   ; 16
     6670    pop ES                                    ; 07
     6671    mov word [es:bx], ax                      ; 26 89 07
     6672    jmp short 039eeh                          ; eb 3b
     6673    push SS                                   ; 16
     6674    pop ES                                    ; 07
     6675    mov bx, word [es:bx]                      ; 26 8b 1f
     6676    mov dx, cx                                ; 89 ca
     6677    mov ax, word [bp-002h]                    ; 8b 46 fe
     6678    call 0285dh                               ; e8 9d ee
     6679    test byte [bp-002h], 008h                 ; f6 46 fe 08
     6680    je short 039eeh                           ; 74 28
    67806681    mov dx, ax                                ; 89 c2
    67816682    mov ax, cx                                ; 89 c8
    6782     call 03989h                               ; e8 ae fe
    6783     jmp short 03affh                          ; eb 22
    6784     mov dx, word [bp+008h]                    ; 8b 56 08
    6785     call 02ff8h                               ; e8 15 f5
    6786     mov bx, ax                                ; 89 c3
    6787     mov dx, cx                                ; 89 ca
    6788     mov ax, word [bp-004h]                    ; 8b 46 fc
    6789     call 02c97h                               ; e8 aa f1
    6790     test byte [bp-004h], 008h                 ; f6 46 fc 08
    6791     je short 03affh                           ; 74 0c
     6683    call 03880h                               ; e8 b3 fe
     6684    jmp short 039eeh                          ; eb 1f
     6685    push SS                                   ; 16
     6686    pop ES                                    ; 07
     6687    mov bx, word [es:bx]                      ; 26 8b 1f
     6688    mov dx, cx                                ; 89 ca
     6689    mov ax, word [bp-002h]                    ; 8b 46 fe
     6690    call 02bc2h                               ; e8 e6 f1
     6691    test byte [bp-002h], 008h                 ; f6 46 fe 08
     6692    je short 039eeh                           ; 74 0c
    67926693    mov dx, ax                                ; 89 c2
    67936694    mov ax, cx                                ; 89 c8
    6794     call 039e1h                               ; e8 e7 fe
    6795     jmp short 03affh                          ; eb 03
     6695    call 038d8h                               ; e8 ef fe
     6696    jmp short 039eeh                          ; eb 03
    67966697    mov di, 00100h                            ; bf 00 01
    6797     mov bx, di                                ; 89 fb
    6798     mov dx, word [bp-002h]                    ; 8b 56 fe
    6799     mov ax, si                                ; 89 f0
    6800     call 03006h                               ; e8 fd f4
     6698    push SS                                   ; 16
     6699    pop ES                                    ; 07
     6700    mov word [es:si], di                      ; 26 89 3c
    68016701    leave                                     ; c9
    68026702    pop di                                    ; 5f
     
    68046704    retn 00002h                               ; c2 02 00
    68056705
    6806   ; Padding 0xaf1 bytes at 0xc3b0f
    6807   times 2801 db 0
     6706  ; Padding 0xc07 bytes at 0xc39f9
     6707  times 3079 db 0
    68086708
    68096709section VBE32 progbits vstart=0x4600 align=1 ; size=0x111 class=CODE group=AUTO
     
    68156715    add dh, cl                                ; 00 ce
    68166716    add di, cx                                ; 01 cf
    6817     add di, cx                                ; 01 cf
    6818     add ax, dx                                ; 01 d0
    6819     add di, di                                ; 01 ff
     6717    add word [bp-048fdh], si                  ; 01 b6 03 b7
     6718    db  003h, 0ffh
     6719    ; add di, di                                ; 03 ff
    68206720    db  0ffh
    68216721    db  0ffh
     
    78557755    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    78567756    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7857     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 093h
     7757    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 041h
  • trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum

    r42147 r42454  
    1 8c47720e81b0539a2ed49f2c09bf2174 *VBoxVgaBios.rom
     13cbb45d118bbb62f3fe41ea02ab546cd *VBoxVgaBios.rom
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette