VirtualBox

Changeset 43078 in vbox for trunk/src/VBox/Devices/Graphics


Ignore:
Timestamp:
Aug 29, 2012 2:34:43 PM (12 years ago)
Author:
vboxsync
Message:

BIOS: new alternatives for the VBox BIOS and VGA BIOS

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

Legend:

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

    r42454 r43078  
    118118;  //
    119119;  // ============================================================================================
     120;  #include <inttypes.h>
    120121;  #include "vgabios.h"
    121 ;  #include <inttypes.h>
    122122
    123123;
     
    157157
    158158
    159 section VGAROM progbits vstart=0x0 align=1 ; size=0x993 class=CODE group=AUTO
     159section VGAROM progbits vstart=0x0 align=1 ; size=0x971 class=CODE group=AUTO
    160160    db  055h, 0aah, 040h, 0e9h, 068h, 00ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    161161    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 049h, 042h
    162162    db  04dh, 000h
    163 vgabios_int10_handler:                       ; 0xc0022 LB 0x5b5
     163vgabios_int10_handler:                       ; 0xc0022 LB 0x593
    164164    pushfw                                    ; 9c
    165165    cmp ah, 00fh                              ; 80 fc 0f
     
    215215    cmp AL, strict byte 003h                  ; 3c 03
    216216    jne short 000afh                          ; 75 05
    217     call 0080ch                               ; e8 5f 07
     217    call 007eah                               ; e8 3d 07
    218218    jmp short 000f3h                          ; eb 44
    219219    cmp AL, strict byte 005h                  ; 3c 05
    220220    jne short 000b8h                          ; 75 05
    221     call 00831h                               ; e8 7b 07
     221    call 0080fh                               ; e8 59 07
    222222    jmp short 000f3h                          ; eb 3b
    223223    cmp AL, strict byte 006h                  ; 3c 06
    224224    jne short 000c1h                          ; 75 05
    225     call 0085eh                               ; e8 9f 07
     225    call 0083ch                               ; e8 7d 07
    226226    jmp short 000f3h                          ; eb 32
    227227    cmp AL, strict byte 007h                  ; 3c 07
    228228    jne short 000cah                          ; 75 05
    229     call 008abh                               ; e8 e3 07
     229    call 00889h                               ; e8 c1 07
    230230    jmp short 000f3h                          ; eb 29
    231231    cmp AL, strict byte 008h                  ; 3c 08
    232232    jne short 000d3h                          ; 75 05
    233     call 008dfh                               ; e8 0e 08
     233    call 008bdh                               ; e8 ec 07
    234234    jmp short 000f3h                          ; eb 20
    235235    cmp AL, strict byte 009h                  ; 3c 09
    236236    jne short 000dch                          ; 75 05
    237     call 00916h                               ; e8 3c 08
     237    call 008f4h                               ; e8 1a 08
    238238    jmp short 000f3h                          ; eb 17
    239239    cmp AL, strict byte 00ah                  ; 3c 0a
    240240    jne short 000e5h                          ; 75 05
    241     call 0097ah                               ; e8 97 08
     241    call 00958h                               ; e8 75 08
    242242    jmp short 000f3h                          ; eb 0e
    243243    push ES                                   ; 06
     
    246246    mov bx, 0c000h                            ; bb 00 c0
    247247    mov ds, bx                                ; 8e db
    248     call 0305ch                               ; e8 6c 2f
     248    call 03058h                               ; e8 68 2f
    249249    popaw                                     ; 61
    250250    pop DS                                    ; 1f
     
    987987    pop dx                                    ; 5a
    988988    retn                                      ; c3
     989_dispi_get_max_bpp:                          ; 0xc05b5 LB 0x22
    989990    push dx                                   ; 52
    990991    push bx                                   ; 53
    991     call 00609h                               ; e8 4f 00
     992    call 005e7h                               ; e8 2d 00
    992993    db  08bh, 0d8h
    993994    ; mov bx, ax                                ; 8b d8
    994995    or ax, strict byte 00002h                 ; 83 c8 02
    995     call 005f9h                               ; e8 37 00
     996    call 005d7h                               ; e8 15 00
    996997    mov dx, 001ceh                            ; ba ce 01
    997     mov ax, strict word 00001h                ; b8 01 00
     998    mov ax, strict word 00003h                ; b8 03 00
    998999    out DX, ax                                ; ef
    9991000    mov dx, 001cfh                            ; ba cf 01
     
    10021003    db  08bh, 0c3h
    10031004    ; mov ax, bx                                ; 8b c3
    1004     call 005f9h                               ; e8 26 00
     1005    call 005d7h                               ; e8 04 00
    10051006    pop ax                                    ; 58
    10061007    pop bx                                    ; 5b
    10071008    pop dx                                    ; 5a
    10081009    retn                                      ; c3
    1009 _dispi_get_max_bpp:                          ; 0xc05d7 LB 0x22
    1010     push dx                                   ; 52
    1011     push bx                                   ; 53
    1012     call 00609h                               ; e8 2d 00
    1013     db  08bh, 0d8h
    1014     ; mov bx, ax                                ; 8b d8
    1015     or ax, strict byte 00002h                 ; 83 c8 02
    1016     call 005f9h                               ; e8 15 00
    1017     mov dx, 001ceh                            ; ba ce 01
    1018     mov ax, strict word 00003h                ; b8 03 00
    1019     out DX, ax                                ; ef
    1020     mov dx, 001cfh                            ; ba cf 01
    1021     in ax, DX                                 ; ed
    1022     push ax                                   ; 50
    1023     db  08bh, 0c3h
    1024     ; mov ax, bx                                ; 8b c3
    1025     call 005f9h                               ; e8 04 00
    1026     pop ax                                    ; 58
    1027     pop bx                                    ; 5b
    1028     pop dx                                    ; 5a
    1029     retn                                      ; c3
    1030 dispi_set_enable_:                           ; 0xc05f9 LB 0x1e
     1010dispi_set_enable_:                           ; 0xc05d7 LB 0x1e
    10311011    push dx                                   ; 52
    10321012    push ax                                   ; 50
     
    10471027    pop dx                                    ; 5a
    10481028    retn                                      ; c3
    1049 dispi_set_bank_:                             ; 0xc0617 LB 0x1e
     1029dispi_set_bank_:                             ; 0xc05f5 LB 0x1e
    10501030    push dx                                   ; 52
    10511031    push ax                                   ; 50
     
    10661046    pop dx                                    ; 5a
    10671047    retn                                      ; c3
    1068 _dispi_set_bank_farcall:                     ; 0xc0635 LB 0xbe
     1048_dispi_set_bank_farcall:                     ; 0xc0613 LB 0xbe
    10691049    cmp bx, 00100h                            ; 81 fb 00 01
    1070     je short 00659h                           ; 74 1e
     1050    je short 00637h                           ; 74 1e
    10711051    db  00bh, 0dbh
    10721052    ; or bx, bx                                 ; 0b db
    1073     jne short 00667h                          ; 75 28
     1053    jne short 00645h                          ; 75 28
    10741054    db  08bh, 0c2h
    10751055    ; mov ax, dx                                ; 8b c2
     
    10861066    db  03bh, 0d0h
    10871067    ; cmp dx, ax                                ; 3b d0
    1088     jne short 00667h                          ; 75 12
     1068    jne short 00645h                          ; 75 12
    10891069    mov ax, strict word 0004fh                ; b8 4f 00
    10901070    retf                                      ; cb
     
    11401120    db  08bh, 0d8h
    11411121    ; mov bx, ax                                ; 8b d8
    1142     call 00598h                               ; e8 e9 fe
     1122    call 00598h                               ; e8 0b ff
    11431123    cmp AL, strict byte 004h                  ; 3c 04
    1144     jnbe short 006b5h                         ; 77 02
     1124    jnbe short 00693h                         ; 77 02
    11451125    shr bx, 1                                 ; d1 eb
    11461126    shr bx, 003h                              ; c1 eb 03
     
    11541134    pop ax                                    ; 58
    11551135    retn                                      ; c3
    1156     call 006a7h                               ; e8 e0 ff
     1136    call 00685h                               ; e8 e0 ff
    11571137    push dx                                   ; 52
    11581138    push ax                                   ; 50
     
    11811161    pop dx                                    ; 5a
    11821162    retn                                      ; c3
    1183 _vga_compat_setup:                           ; 0xc06f3 LB 0xe1
     1163_vga_compat_setup:                           ; 0xc06d1 LB 0xe1
    11841164    push ax                                   ; 50
    11851165    push dx                                   ; 52
     
    12021182    out DX, ax                                ; ef
    12031183    pop ax                                    ; 58
    1204     call 006a7h                               ; e8 90 ff
     1184    call 00685h                               ; e8 90 ff
    12051185    mov dx, 001ceh                            ; ba ce 01
    12061186    mov ax, strict word 00002h                ; b8 02 00
     
    12221202    and AL, strict byte 0bdh                  ; 24 bd
    12231203    test ah, 001h                             ; f6 c4 01
    1224     je short 0073bh                           ; 74 02
     1204    je short 00719h                           ; 74 02
    12251205    or AL, strict byte 002h                   ; 0c 02
    12261206    test ah, 002h                             ; f6 c4 02
    1227     je short 00742h                           ; 74 02
     1207    je short 00720h                           ; 74 02
    12281208    or AL, strict byte 040h                   ; 0c 40
    12291209    out DX, AL                                ; ee
     
    12661246    in ax, DX                                 ; ed
    12671247    cmp AL, strict byte 008h                  ; 3c 08
    1268     jc short 007d2h                           ; 72 40
     1248    jc short 007b0h                           ; 72 40
    12691249    mov dx, 003d4h                            ; ba d4 03
    12701250    mov AL, strict byte 014h                  ; b0 14
     
    13031283    pop dx                                    ; 5a
    13041284    pop ax                                    ; 58
    1305 _vbe_has_vbe_display:                        ; 0xc07d4 LB 0x13
     1285_vbe_has_vbe_display:                        ; 0xc07b2 LB 0x13
    13061286    push DS                                   ; 1e
    13071287    push bx                                   ; 53
     
    13161296    pop DS                                    ; 1f
    13171297    retn                                      ; c3
    1318 _vbe_init:                                   ; 0xc07e7 LB 0x25
     1298_vbe_init:                                   ; 0xc07c5 LB 0x25
    13191299    mov ax, 0b0c0h                            ; b8 c0 b0
    1320     call 00588h                               ; e8 9b fd
    1321     call 0057ah                               ; e8 8a fd
     1300    call 00588h                               ; e8 bd fd
     1301    call 0057ah                               ; e8 ac fd
    13221302    cmp ax, 0b0c0h                            ; 3d c0 b0
    1323     jne short 0080bh                          ; 75 16
     1303    jne short 007e9h                          ; 75 16
    13241304    push DS                                   ; 1e
    13251305    push bx                                   ; 53
     
    13321312    pop DS                                    ; 1f
    13331313    mov ax, 0b0c4h                            ; b8 c4 b0
    1334     call 00588h                               ; e8 7d fd
    1335     retn                                      ; c3
    1336 vbe_biosfn_return_current_mode:              ; 0xc080c LB 0x25
     1314    call 00588h                               ; e8 9f fd
     1315    retn                                      ; c3
     1316vbe_biosfn_return_current_mode:              ; 0xc07ea LB 0x25
    13371317    push DS                                   ; 1e
    13381318    mov ax, strict word 00040h                ; b8 40 00
    13391319    mov ds, ax                                ; 8e d8
    1340     call 00609h                               ; e8 f4 fd
     1320    call 005e7h                               ; e8 f4 fd
    13411321    and ax, strict byte 00001h                ; 83 e0 01
    1342     je short 00823h                           ; 74 09
     1322    je short 00801h                           ; 74 09
    13431323    mov bx, 000bah                            ; bb ba 00
    13441324    mov ax, word [bx]                         ; 8b 07
    13451325    db  08bh, 0d8h
    13461326    ; mov bx, ax                                ; 8b d8
    1347     jne short 0082ch                          ; 75 09
     1327    jne short 0080ah                          ; 75 09
    13481328    mov bx, strict word 00049h                ; bb 49 00
    13491329    mov al, byte [bx]                         ; 8a 07
     
    13551335    pop DS                                    ; 1f
    13561336    retn                                      ; c3
    1357 vbe_biosfn_display_window_control:           ; 0xc0831 LB 0x2d
     1337vbe_biosfn_display_window_control:           ; 0xc080f LB 0x2d
    13581338    cmp bl, 000h                              ; 80 fb 00
    1359     jne short 0085ah                          ; 75 24
     1339    jne short 00838h                          ; 75 24
    13601340    cmp bh, 001h                              ; 80 ff 01
    1361     je short 00851h                           ; 74 16
    1362     jc short 00841h                           ; 72 04
     1341    je short 0082fh                           ; 74 16
     1342    jc short 0081fh                           ; 72 04
    13631343    mov ax, 00100h                            ; b8 00 01
    13641344    retn                                      ; c3
    13651345    db  08bh, 0c2h
    13661346    ; mov ax, dx                                ; 8b c2
    1367     call 00617h                               ; e8 d1 fd
    1368     call 00627h                               ; e8 de fd
     1347    call 005f5h                               ; e8 d1 fd
     1348    call 00605h                               ; e8 de fd
    13691349    db  03bh, 0c2h
    13701350    ; cmp ax, dx                                ; 3b c2
    1371     jne short 0085ah                          ; 75 0d
     1351    jne short 00838h                          ; 75 0d
    13721352    mov ax, strict word 0004fh                ; b8 4f 00
    13731353    retn                                      ; c3
    1374     call 00627h                               ; e8 d3 fd
     1354    call 00605h                               ; e8 d3 fd
    13751355    db  08bh, 0d0h
    13761356    ; mov dx, ax                                ; 8b d0
     
    13791359    mov ax, 0014fh                            ; b8 4f 01
    13801360    retn                                      ; c3
    1381 vbe_biosfn_set_get_logical_scan_line_length: ; 0xc085e LB 0x4d
     1361vbe_biosfn_set_get_logical_scan_line_length: ; 0xc083c LB 0x4d
    13821362    db  08bh, 0c1h
    13831363    ; mov ax, cx                                ; 8b c1
    13841364    cmp bl, 001h                              ; 80 fb 01
    1385     je short 00889h                           ; 74 24
     1365    je short 00867h                           ; 74 24
    13861366    cmp bl, 002h                              ; 80 fb 02
    1387     je short 00870h                           ; 74 06
    1388     jc short 00886h                           ; 72 1a
     1367    je short 0084eh                           ; 74 06
     1368    jc short 00864h                           ; 72 1a
    13891369    mov ax, 00100h                            ; b8 00 01
    13901370    retn                                      ; c3
    13911371    push ax                                   ; 50
    1392     call 00598h                               ; e8 24 fd
     1372    call 00598h                               ; e8 46 fd
    13931373    db  032h, 0ffh
    13941374    ; xor bh, bh                                ; 32 ff
     
    13971377    db  00ah, 0dbh
    13981378    ; or bl, bl                                 ; 0a db
    1399     jne short 00881h                          ; 75 05
     1379    jne short 0085fh                          ; 75 05
    14001380    sal ax, 003h                              ; c1 e0 03
    14011381    mov BL, strict byte 001h                  ; b3 01
     
    14041384    pop ax                                    ; 58
    14051385    div bx                                    ; f7 f3
    1406     call 006c4h                               ; e8 3b fe
    1407     call 00598h                               ; e8 0c fd
     1386    call 006a2h                               ; e8 3b fe
     1387    call 00598h                               ; e8 2e fd
    14081388    db  032h, 0ffh
    14091389    ; xor bh, bh                                ; 32 ff
    14101390    db  08ah, 0dch
    14111391    ; mov bl, ah                                ; 8a dc
    1412     call 006d7h                               ; e8 44 fe
     1392    call 006b5h                               ; e8 44 fe
    14131393    db  08bh, 0c8h
    14141394    ; mov cx, ax                                ; 8b c8
    14151395    db  00ah, 0dbh
    14161396    ; or bl, bl                                 ; 0a db
    1417     jne short 0089eh                          ; 75 05
     1397    jne short 0087ch                          ; 75 05
    14181398    shr ax, 003h                              ; c1 e8 03
    14191399    mov BL, strict byte 001h                  ; b3 01
     
    14211401    db  08bh, 0d8h
    14221402    ; mov bx, ax                                ; 8b d8
    1423     call 006e5h                               ; e8 40 fe
     1403    call 006c3h                               ; e8 40 fe
    14241404    db  08bh, 0d0h
    14251405    ; mov dx, ax                                ; 8b d0
    14261406    mov ax, strict word 0004fh                ; b8 4f 00
    14271407    retn                                      ; c3
    1428 vbe_biosfn_set_get_display_start:            ; 0xc08ab LB 0x34
     1408vbe_biosfn_set_get_display_start:            ; 0xc0889 LB 0x34
    14291409    cmp bl, 080h                              ; 80 fb 80
    1430     je short 008bbh                           ; 74 0b
     1410    je short 00899h                           ; 74 0b
    14311411    cmp bl, 001h                              ; 80 fb 01
    1432     je short 008cfh                           ; 74 1a
    1433     jc short 008c1h                           ; 72 0a
     1412    je short 008adh                           ; 74 1a
     1413    jc short 0089fh                           ; 72 0a
    14341414    mov ax, 00100h                            ; b8 00 01
    14351415    retn                                      ; c3
    1436     call 0056dh                               ; e8 af fc
    1437     call 00560h                               ; e8 9f fc
     1416    call 0056dh                               ; e8 d1 fc
     1417    call 00560h                               ; e8 c1 fc
    14381418    db  08bh, 0c1h
    14391419    ; mov ax, cx                                ; 8b c1
    1440     call 0066bh                               ; e8 a5 fd
     1420    call 00649h                               ; e8 a5 fd
    14411421    db  08bh, 0c2h
    14421422    ; mov ax, dx                                ; 8b c2
    1443     call 00689h                               ; e8 be fd
     1423    call 00667h                               ; e8 be fd
    14441424    mov ax, strict word 0004fh                ; b8 4f 00
    14451425    retn                                      ; c3
    1446     call 0067bh                               ; e8 a9 fd
     1426    call 00659h                               ; e8 a9 fd
    14471427    db  08bh, 0c8h
    14481428    ; mov cx, ax                                ; 8b c8
    1449     call 00699h                               ; e8 c2 fd
     1429    call 00677h                               ; e8 c2 fd
    14501430    db  08bh, 0d0h
    14511431    ; mov dx, ax                                ; 8b d0
     
    14541434    mov ax, strict word 0004fh                ; b8 4f 00
    14551435    retn                                      ; c3
    1456 vbe_biosfn_set_get_dac_palette_format:       ; 0xc08df LB 0x37
     1436vbe_biosfn_set_get_dac_palette_format:       ; 0xc08bd LB 0x37
    14571437    cmp bl, 001h                              ; 80 fb 01
    1458     je short 00902h                           ; 74 1e
    1459     jc short 008eah                           ; 72 04
     1438    je short 008e0h                           ; 74 1e
     1439    jc short 008c8h                           ; 72 04
    14601440    mov ax, 00100h                            ; b8 00 01
    14611441    retn                                      ; c3
    1462     call 00609h                               ; e8 1c fd
     1442    call 005e7h                               ; e8 1c fd
    14631443    cmp bh, 006h                              ; 80 ff 06
    1464     je short 008fch                           ; 74 0a
     1444    je short 008dah                           ; 74 0a
    14651445    cmp bh, 008h                              ; 80 ff 08
    1466     jne short 00912h                          ; 75 1b
     1446    jne short 008f0h                          ; 75 1b
    14671447    or ax, strict byte 00020h                 ; 83 c8 20
    1468     jne short 008ffh                          ; 75 03
     1448    jne short 008ddh                          ; 75 03
    14691449    and ax, strict byte 0ffdfh                ; 83 e0 df
    1470     call 005f9h                               ; e8 f7 fc
     1450    call 005d7h                               ; e8 f7 fc
    14711451    mov BH, strict byte 006h                  ; b7 06
    1472     call 00609h                               ; e8 02 fd
     1452    call 005e7h                               ; e8 02 fd
    14731453    and ax, strict byte 00020h                ; 83 e0 20
    1474     je short 0090eh                           ; 74 02
     1454    je short 008ech                           ; 74 02
    14751455    mov BH, strict byte 008h                  ; b7 08
    14761456    mov ax, strict word 0004fh                ; b8 4f 00
     
    14781458    mov ax, 0014fh                            ; b8 4f 01
    14791459    retn                                      ; c3
    1480 vbe_biosfn_set_get_palette_data:             ; 0xc0916 LB 0x64
     1460vbe_biosfn_set_get_palette_data:             ; 0xc08f4 LB 0x64
    14811461    test bl, bl                               ; 84 db
    1482     je short 00929h                           ; 74 0f
     1462    je short 00907h                           ; 74 0f
    14831463    cmp bl, 001h                              ; 80 fb 01
    1484     je short 00951h                           ; 74 32
     1464    je short 0092fh                           ; 74 32
    14851465    cmp bl, 003h                              ; 80 fb 03
    1486     jbe short 00976h                          ; 76 52
     1466    jbe short 00954h                          ; 76 52
    14871467    cmp bl, 080h                              ; 80 fb 80
    1488     jne short 00972h                          ; 75 49
     1468    jne short 00950h                          ; 75 49
    14891469    pushad                                    ; 66 60
    14901470    push DS                                   ; 1e
     
    15051485    rol eax, 008h                             ; 66 c1 c0 08
    15061486    out DX, AL                                ; ee
    1507     loop 00937h                               ; e2 ed
     1487    loop 00915h                               ; e2 ed
    15081488    pop DS                                    ; 1f
    15091489    popad                                     ; 66 61
     
    15241504    in AL, DX                                 ; ec
    15251505    stosd                                     ; 66 ab
    1526     loop 0095ch                               ; e2 ee
     1506    loop 0093ah                               ; e2 ee
    15271507    popad                                     ; 66 61
    1528     jmp short 0094dh                          ; eb db
     1508    jmp short 0092bh                          ; eb db
    15291509    mov ax, 0014fh                            ; b8 4f 01
    15301510    retn                                      ; c3
    15311511    mov ax, 0024fh                            ; b8 4f 02
    15321512    retn                                      ; c3
    1533 vbe_biosfn_return_protected_mode_interface: ; 0xc097a LB 0x19
     1513vbe_biosfn_return_protected_mode_interface: ; 0xc0958 LB 0x19
    15341514    test bl, bl                               ; 84 db
    1535     jne short 0098fh                          ; 75 11
     1515    jne short 0096dh                          ; 75 11
    15361516    mov di, 0c000h                            ; bf 00 c0
    15371517    mov es, di                                ; 8e c7
    15381518    mov di, 04600h                            ; bf 00 46
    1539     mov cx, 04711h                            ; b9 11 47
     1519    mov cx, 00115h                            ; b9 15 01
    15401520    db  02bh, 0cfh
    15411521    ; sub cx, di                                ; 2b cf
     
    15451525    retn                                      ; c3
    15461526
    1547   ; Padding 0x6d bytes at 0xc0993
    1548   times 109 db 0
     1527  ; Padding 0x8f bytes at 0xc0971
     1528  times 143 db 0
    15491529
    1550 section _TEXT progbits vstart=0xa00 align=1 ; size=0x2ff9 class=CODE group=AUTO
     1530section _TEXT progbits vstart=0xa00 align=1 ; size=0x2f27 class=CODE group=AUTO
    15511531set_int_vector_:                             ; 0xc0a00 LB 0x1a
    15521532    push bx                                   ; 53
     
    15761556    out DX, AL                                ; ee
    15771557    push 04800h                               ; 68 00 48
    1578     call 02f54h                               ; e8 1e 25
     1558    call 02f50h                               ; e8 1a 25
    15791559    add sp, strict byte 00002h                ; 83 c4 02
    15801560    pop bp                                    ; 5d
     
    16041584    call 00a1ah                               ; e8 a6 ff
    16051585    call 00a3ch                               ; e8 c5 ff
    1606     call 007e7h                               ; e8 6d fd
     1586    call 007c5h                               ; e8 4b fd
    16071587    mov dx, strict word 00022h                ; ba 22 00
    16081588    mov ax, strict word 00010h                ; b8 10 00
     
    16301610    mov dx, strict word 00060h                ; ba 60 00
    16311611    mov ax, strict word 00040h                ; b8 40 00
    1632     call 02f26h                               ; e8 76 24
     1612    call 02f10h                               ; e8 60 24
    16331613    push SS                                   ; 16
    16341614    pop ES                                    ; 07
     
    16381618    add dx, strict byte 00050h                ; 83 c2 50
    16391619    mov ax, strict word 00040h                ; b8 40 00
    1640     call 02f26h                               ; e8 63 24
     1620    call 02f10h                               ; e8 4d 24
    16411621    push SS                                   ; 16
    16421622    pop ES                                    ; 07
     
    16561636    mov dx, strict word 00049h                ; ba 49 00
    16571637    mov ax, strict word 00040h                ; b8 40 00
    1658     call 02f0ah                               ; e8 29 24
     1638    call 02ef4h                               ; e8 13 24
    16591639    xor ah, ah                                ; 30 e4
    1660     call 02ee3h                               ; e8 fd 23
     1640    call 02ecdh                               ; e8 e7 23
    16611641    mov ch, al                                ; 88 c5
    16621642    cmp AL, strict byte 0ffh                  ; 3c ff
     
    16741654    mov dx, 00084h                            ; ba 84 00
    16751655    mov ax, strict word 00040h                ; b8 40 00
    1676     call 02f0ah                               ; e8 f8 23
     1656    call 02ef4h                               ; e8 e2 23
    16771657    movzx di, al                              ; 0f b6 f8
    16781658    inc di                                    ; 47
    16791659    mov dx, strict word 0004ah                ; ba 4a 00
    16801660    mov ax, strict word 00040h                ; b8 40 00
    1681     call 02f26h                               ; e8 07 24
     1661    call 02f10h                               ; e8 f1 23
    16821662    movzx bx, ch                              ; 0f b6 dd
    16831663    sal bx, 003h                              ; c1 e3 03
    1684     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     1664    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
    16851665    jne short 00b59h                          ; 75 2d
    16861666    mov dx, ax                                ; 89 c2
     
    16981678    mov dx, cx                                ; 89 ca
    16991679    add dx, ax                                ; 01 c2
    1700     mov ax, word [bx+04833h]                  ; 8b 87 33 48
    1701     call 02f26h                               ; e8 d0 23
     1680    mov ax, word [bx+04836h]                  ; 8b 87 36 48
     1681    call 02f10h                               ; e8 ba 23
    17021682    mov word [ss:si], ax                      ; 36 89 04
    17031683    leave                                     ; c9
     
    17351715    mov dx, strict word 0007ch                ; ba 7c 00
    17361716    xor ax, ax                                ; 31 c0
    1737     call 02f42h                               ; e8 b0 23
     1717    call 02f2ch                               ; e8 9a 23
    17381718    push SS                                   ; 16
    17391719    pop ES                                    ; 07
     
    17431723    mov dx, 00085h                            ; ba 85 00
    17441724    mov ax, strict word 00040h                ; b8 40 00
    1745     call 02f0ah                               ; e8 64 23
     1725    call 02ef4h                               ; e8 4e 23
    17461726    xor ah, ah                                ; 30 e4
    17471727    push SS                                   ; 16
     
    17501730    mov dx, 00084h                            ; ba 84 00
    17511731    mov ax, strict word 00040h                ; b8 40 00
    1752     call 02f0ah                               ; e8 54 23
     1732    call 02ef4h                               ; e8 3e 23
    17531733    xor ah, ah                                ; 30 e4
    17541734    push SS                                   ; 16
     
    17621742    mov dx, 0010ch                            ; ba 0c 01
    17631743    jmp short 00b8dh                          ; eb c2
    1764     mov ax, 05dafh                            ; b8 af 5d
     1744    mov ax, 05db2h                            ; b8 b2 5d
    17651745    mov dx, 0c000h                            ; ba 00 c0
    17661746    jmp short 00b92h                          ; eb bf
    1767     mov ax, 055afh                            ; b8 af 55
     1747    mov ax, 055b2h                            ; b8 b2 55
    17681748    jmp short 00bceh                          ; eb f6
    1769     mov ax, 059afh                            ; b8 af 59
     1749    mov ax, 059b2h                            ; b8 b2 59
    17701750    jmp short 00bceh                          ; eb f1
    1771     mov ax, 07bafh                            ; b8 af 7b
     1751    mov ax, 07bb2h                            ; b8 b2 7b
    17721752    jmp short 00bceh                          ; eb ec
    1773     mov ax, 06bafh                            ; b8 af 6b
     1753    mov ax, 06bb2h                            ; b8 b2 6b
    17741754    jmp short 00bceh                          ; eb e7
    1775     mov ax, 07cdch                            ; b8 dc 7c
     1755    mov ax, 07cdfh                            ; b8 df 7c
    17761756    jmp short 00bceh                          ; eb e2
    17771757    jmp short 00bc0h                          ; eb d2
     
    17851765    mov dx, strict word 00049h                ; ba 49 00
    17861766    mov ax, strict word 00040h                ; b8 40 00
    1787     call 02f0ah                               ; e8 06 23
     1767    call 02ef4h                               ; e8 f0 22
    17881768    xor ah, ah                                ; 30 e4
    1789     call 02ee3h                               ; e8 da 22
     1769    call 02ecdh                               ; e8 c4 22
    17901770    mov cl, al                                ; 88 c1
    17911771    cmp AL, strict byte 0ffh                  ; 3c ff
     
    17931773    movzx bx, al                              ; 0f b6 d8
    17941774    sal bx, 003h                              ; c1 e3 03
    1795     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     1775    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
    17961776    je near 00d1eh                            ; 0f 84 fe 00
    1797     mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
     1777    mov bl, byte [bx+04834h]                  ; 8a 9f 34 48
    17981778    cmp bl, 003h                              ; 80 fb 03
    17991779    jc short 00c3ah                           ; 72 11
     
    18091789    mov dx, strict word 0004ah                ; ba 4a 00
    18101790    mov ax, strict word 00040h                ; b8 40 00
    1811     call 02f26h                               ; e8 db 22
     1791    call 02f10h                               ; e8 c5 22
    18121792    imul ax, word [bp-006h]                   ; 0f af 46 fa
    18131793    mov bx, si                                ; 89 f3
     
    18301810    mov dx, bx                                ; 89 da
    18311811    mov ax, 0a000h                            ; b8 00 a0
    1832     call 02f0ah                               ; e8 85 22
     1812    call 02ef4h                               ; e8 6f 22
    18331813    and al, byte [bp-004h]                    ; 22 46 fc
    18341814    test al, al                               ; 84 c0
     
    18511831    mov dx, bx                                ; 89 da
    18521832    mov ax, 0b800h                            ; b8 00 b8
    1853     call 02f0ah                               ; e8 50 22
     1833    call 02ef4h                               ; e8 3a 22
    18541834    movzx bx, cl                              ; 0f b6 d9
    18551835    sal bx, 003h                              ; c1 e3 03
    1856     cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
     1836    cmp byte [bx+04835h], 002h                ; 80 bf 35 48 02
    18571837    jne short 00ce2h                          ; 75 1b
    18581838    mov cx, si                                ; 89 f1
     
    18811861    mov dx, strict word 0004ah                ; ba 4a 00
    18821862    mov ax, strict word 00040h                ; b8 40 00
    1883     call 02f26h                               ; e8 22 22
     1863    call 02f10h                               ; e8 0c 22
    18841864    sal ax, 003h                              ; c1 e0 03
    18851865    imul ax, word [bp-006h]                   ; 0f af 46 fa
     
    18871867    add dx, ax                                ; 01 c2
    18881868    mov ax, 0a000h                            ; b8 00 a0
    1889     call 02f0ah                               ; e8 f5 21
     1869    call 02ef4h                               ; e8 df 21
    18901870    mov ch, al                                ; 88 c5
    18911871    jmp short 00d1bh                          ; eb 02
     
    19891969    mov dx, strict word 00060h                ; ba 60 00
    19901970    mov ax, strict word 00040h                ; b8 40 00
    1991     call 02f34h                               ; e8 63 21
     1971    call 02f1eh                               ; e8 4d 21
    19921972    mov dx, 00089h                            ; ba 89 00
    19931973    mov ax, strict word 00040h                ; b8 40 00
    1994     call 02f0ah                               ; e8 30 21
     1974    call 02ef4h                               ; e8 1a 21
    19951975    mov bl, al                                ; 88 c3
    19961976    mov dx, 00085h                            ; ba 85 00
    19971977    mov ax, strict word 00040h                ; b8 40 00
    1998     call 02f26h                               ; e8 41 21
     1978    call 02f10h                               ; e8 2b 21
    19991979    mov dx, ax                                ; 89 c2
    20001980    test bl, 001h                             ; f6 c3 01
     
    20272007    mov dx, strict word 00063h                ; ba 63 00
    20282008    mov ax, strict word 00040h                ; b8 40 00
    2029     call 02f26h                               ; e8 fa 20
     2009    call 02f10h                               ; e8 e4 20
    20302010    mov bx, ax                                ; 89 c3
    20312011    mov AL, strict byte 00ah                  ; b0 0a
     
    20622042    mov bx, cx                                ; 89 cb
    20632043    mov ax, strict word 00040h                ; b8 40 00
    2064     call 02f34h                               ; e8 c7 20
     2044    call 02f1eh                               ; e8 b1 20
    20652045    mov dx, strict word 00062h                ; ba 62 00
    20662046    mov ax, strict word 00040h                ; b8 40 00
    2067     call 02f0ah                               ; e8 94 20
     2047    call 02ef4h                               ; e8 7e 20
    20682048    cmp al, byte [bp-002h]                    ; 3a 46 fe
    20692049    jne short 00ee4h                          ; 75 69
    20702050    mov dx, strict word 0004ah                ; ba 4a 00
    20712051    mov ax, strict word 00040h                ; b8 40 00
    2072     call 02f26h                               ; e8 a2 20
     2052    call 02f10h                               ; e8 8c 20
    20732053    mov bx, ax                                ; 89 c3
    20742054    mov dx, 00084h                            ; ba 84 00
    20752055    mov ax, strict word 00040h                ; b8 40 00
    2076     call 02f0ah                               ; e8 7b 20
     2056    call 02ef4h                               ; e8 65 20
    20772057    xor ah, ah                                ; 30 e4
    20782058    mov dx, ax                                ; 89 c2
     
    20942074    mov dx, strict word 00063h                ; ba 63 00
    20952075    mov ax, strict word 00040h                ; b8 40 00
    2096     call 02f26h                               ; e8 64 20
     2076    call 02f10h                               ; e8 4e 20
    20972077    mov bx, ax                                ; 89 c3
    20982078    mov AL, strict byte 00eh                  ; b0 0e
     
    21292109    mov dx, strict word 00049h                ; ba 49 00
    21302110    mov ax, strict word 00040h                ; b8 40 00
    2131     call 02f0ah                               ; e8 07 20
     2111    call 02ef4h                               ; e8 f1 1f
    21322112    xor ah, ah                                ; 30 e4
    2133     call 02ee3h                               ; e8 db 1f
     2113    call 02ecdh                               ; e8 c5 1f
    21342114    mov ch, al                                ; 88 c5
    21352115    cmp AL, strict byte 0ffh                  ; 3c ff
     
    21422122    mov si, bx                                ; 89 de
    21432123    sal si, 003h                              ; c1 e6 03
    2144     cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
     2124    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
    21452125    jne short 00f6bh                          ; 75 40
    21462126    mov dx, strict word 0004ah                ; ba 4a 00
    21472127    mov ax, strict word 00040h                ; b8 40 00
    2148     call 02f26h                               ; e8 f2 1f
     2128    call 02f10h                               ; e8 dc 1f
    21492129    mov bx, ax                                ; 89 c3
    21502130    mov dx, 00084h                            ; ba 84 00
    21512131    mov ax, strict word 00040h                ; b8 40 00
    2152     call 02f0ah                               ; e8 cb 1f
     2132    call 02ef4h                               ; e8 b5 1f
    21532133    xor ah, ah                                ; 30 e4
    21542134    inc ax                                    ; 40
     
    21642144    mov dx, strict word 0004eh                ; ba 4e 00
    21652145    mov ax, strict word 00040h                ; b8 40 00
    2166     call 02f34h                               ; e8 d5 1f
     2146    call 02f1eh                               ; e8 bf 1f
    21672147    or si, 000ffh                             ; 81 ce ff 00
    21682148    lea bx, [si+001h]                         ; 8d 5c 01
    21692149    imul bx, di                               ; 0f af df
    21702150    jmp short 00f7dh                          ; eb 12
    2171     movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     2151    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
    21722152    sal bx, 006h                              ; c1 e3 06
    21732153    movzx ax, cl                              ; 0f b6 c1
    2174     mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
     2154    mov bx, word [bx+048c9h]                  ; 8b 9f c9 48
    21752155    imul bx, ax                               ; 0f af d8
    21762156    mov dx, strict word 00063h                ; ba 63 00
    21772157    mov ax, strict word 00040h                ; b8 40 00
    2178     call 02f26h                               ; e8 a0 1f
     2158    call 02f10h                               ; e8 8a 1f
    21792159    mov si, ax                                ; 89 c6
    21802160    mov AL, strict byte 00ch                  ; b0 0c
     
    21972177    mov dx, strict word 00062h                ; ba 62 00
    21982178    mov ax, strict word 00040h                ; b8 40 00
    2199     call 02f18h                               ; e8 66 1f
     2179    call 02f02h                               ; e8 50 1f
    22002180    mov dx, word [bp-004h]                    ; 8b 56 fc
    22012181    mov ax, si                                ; 89 f0
     
    22082188    pop bx                                    ; 5b
    22092189    retn                                      ; c3
    2210 biosfn_set_video_mode_:                      ; 0xc0fc1 LB 0x38c
     2190biosfn_set_video_mode_:                      ; 0xc0fc1 LB 0x382
    22112191    push bx                                   ; 53
    22122192    push cx                                   ; 51
     
    22152195    push di                                   ; 57
    22162196    enter 00010h, 000h                        ; c8 10 00 00
    2217     mov byte [bp-008h], al                    ; 88 46 f8
     2197    mov byte [bp-004h], al                    ; 88 46 fc
    22182198    and AL, strict byte 080h                  ; 24 80
    2219     mov byte [bp-002h], al                    ; 88 46 fe
    2220     call 007d4h                               ; e8 ff f7
     2199    mov byte [bp-006h], al                    ; 88 46 fa
     2200    call 007b2h                               ; e8 dd f7
    22212201    test ax, ax                               ; 85 c0
    22222202    je short 00fe5h                           ; 74 0c
     
    22272207    mov dx, 003c5h                            ; ba c5 03
    22282208    out DX, AL                                ; ee
    2229     and byte [bp-008h], 07fh                  ; 80 66 f8 7f
    2230     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    2231     call 02ee3h                               ; e8 f3 1e
    2232     mov byte [bp-004h], al                    ; 88 46 fc
     2209    and byte [bp-004h], 07fh                  ; 80 66 fc 7f
     2210    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     2211    call 02ecdh                               ; e8 dd 1e
     2212    mov byte [bp-008h], al                    ; 88 46 f8
    22332213    cmp AL, strict byte 0ffh                  ; 3c ff
    2234     je near 01346h                            ; 0f 84 4d 03
     2214    je near 0133ch                            ; 0f 84 43 03
    22352215    movzx si, al                              ; 0f b6 f0
    2236     mov al, byte [si+048afh]                  ; 8a 84 af 48
    2237     mov byte [bp-006h], al                    ; 88 46 fa
     2216    mov al, byte [si+048b2h]                  ; 8a 84 b2 48
     2217    mov byte [bp-002h], al                    ; 88 46 fe
    22382218    movzx bx, al                              ; 0f b6 d8
    22392219    sal bx, 006h                              ; c1 e3 06
    2240     movzx ax, byte [bx+048c3h]                ; 0f b6 87 c3 48
     2220    movzx ax, byte [bx+048c6h]                ; 0f b6 87 c6 48
     2221    mov word [bp-00eh], ax                    ; 89 46 f2
     2222    movzx ax, byte [bx+048c7h]                ; 0f b6 87 c7 48
    22412223    mov word [bp-00ch], ax                    ; 89 46 f4
    2242     movzx ax, byte [bx+048c4h]                ; 0f b6 87 c4 48
     2224    movzx ax, byte [bx+048c8h]                ; 0f b6 87 c8 48
    22432225    mov word [bp-00ah], ax                    ; 89 46 f6
    2244     movzx ax, byte [bx+048c5h]                ; 0f b6 87 c5 48
    2245     mov word [bp-00eh], ax                    ; 89 46 f2
    22462226    mov dx, 00087h                            ; ba 87 00
    22472227    mov ax, strict word 00040h                ; b8 40 00
    2248     call 02f0ah                               ; e8 e0 1e
     2228    call 02ef4h                               ; e8 ca 1e
    22492229    mov dx, 00088h                            ; ba 88 00
    22502230    mov ax, strict word 00040h                ; b8 40 00
    2251     call 02f0ah                               ; e8 d7 1e
     2231    call 02ef4h                               ; e8 c1 1e
    22522232    mov dx, 00089h                            ; ba 89 00
    22532233    mov ax, strict word 00040h                ; b8 40 00
    2254     call 02f0ah                               ; e8 ce 1e
     2234    call 02ef4h                               ; e8 b8 1e
    22552235    mov ah, al                                ; 88 c4
    22562236    test AL, strict byte 008h                 ; a8 08
     
    22582238    mov bx, si                                ; 89 f3
    22592239    sal bx, 003h                              ; c1 e3 03
    2260     mov al, byte [bx+04835h]                  ; 8a 87 35 48
     2240    mov al, byte [bx+04838h]                  ; 8a 87 38 48
    22612241    mov dx, 003c6h                            ; ba c6 03
    22622242    out DX, AL                                ; ee
     
    22642244    mov dx, 003c8h                            ; ba c8 03
    22652245    out DX, AL                                ; ee
    2266     mov bl, byte [bx+04836h]                  ; 8a 9f 36 48
     2246    mov bl, byte [bx+04839h]                  ; 8a 9f 39 48
    22672247    cmp bl, 001h                              ; 80 fb 01
    22682248    jc short 0106eh                           ; 72 0e
     
    22752255    test bl, bl                               ; 84 db
    22762256    jne short 01084h                          ; 75 12
    2277     mov di, 05043h                            ; bf 43 50
     2257    mov di, 05046h                            ; bf 46 50
    22782258    jmp short 01084h                          ; eb 0d
    2279     mov di, 05103h                            ; bf 03 51
     2259    mov di, 05106h                            ; bf 06 51
    22802260    jmp short 01084h                          ; eb 08
    2281     mov di, 051c3h                            ; bf c3 51
     2261    mov di, 051c6h                            ; bf c6 51
    22822262    jmp short 01084h                          ; eb 03
    2283     mov di, 05283h                            ; bf 83 52
     2263    mov di, 05286h                            ; bf 86 52
    22842264    xor bx, bx                                ; 31 db
    22852265    jmp short 01097h                          ; eb 0f
     
    22922272    cmp bx, 00100h                            ; 81 fb 00 01
    22932273    jnc short 010c1h                          ; 73 2a
    2294     movzx si, byte [bp-004h]                  ; 0f b6 76 fc
     2274    movzx si, byte [bp-008h]                  ; 0f b6 76 f8
    22952275    sal si, 003h                              ; c1 e6 03
    2296     movzx si, byte [si+04836h]                ; 0f b6 b4 36 48
    2297     movzx dx, byte [si+048bfh]                ; 0f b6 94 bf 48
     2276    movzx si, byte [si+04839h]                ; 0f b6 b4 39 48
     2277    movzx dx, byte [si+048c2h]                ; 0f b6 94 c2 48
    22982278    cmp bx, dx                                ; 39 d3
    22992279    jnbe short 01088h                         ; 77 dc
     
    23242304    mov dx, 003c0h                            ; ba c0 03
    23252305    out DX, AL                                ; ee
    2326     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     2306    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
    23272307    sal si, 006h                              ; c1 e6 06
    23282308    add si, bx                                ; 01 de
    2329     mov al, byte [si+048e6h]                  ; 8a 84 e6 48
     2309    mov al, byte [si+048e9h]                  ; 8a 84 e9 48
    23302310    out DX, AL                                ; ee
    23312311    inc bx                                    ; 43
     
    23482328    mov dx, 003c4h                            ; ba c4 03
    23492329    out DX, AL                                ; ee
    2350     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     2330    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
    23512331    sal si, 006h                              ; c1 e6 06
    23522332    add si, bx                                ; 01 de
    2353     mov al, byte [si+048c7h]                  ; 8a 84 c7 48
     2333    mov al, byte [si+048cah]                  ; 8a 84 ca 48
    23542334    mov dx, 003c5h                            ; ba c5 03
    23552335    out DX, AL                                ; ee
     
    23632343    mov dx, 003ceh                            ; ba ce 03
    23642344    out DX, AL                                ; ee
    2365     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     2345    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
    23662346    sal si, 006h                              ; c1 e6 06
    23672347    add si, bx                                ; 01 de
    2368     mov al, byte [si+048fah]                  ; 8a 84 fa 48
     2348    mov al, byte [si+048fdh]                  ; 8a 84 fd 48
    23692349    mov dx, 003cfh                            ; ba cf 03
    23702350    out DX, AL                                ; ee
    23712351    inc bx                                    ; 43
    23722352    jmp short 0112fh                          ; eb e1
    2373     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     2353    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    23742354    sal bx, 003h                              ; c1 e3 03
    2375     cmp byte [bx+04831h], 001h                ; 80 bf 31 48 01
     2355    cmp byte [bx+04834h], 001h                ; 80 bf 34 48 01
    23762356    jne short 01161h                          ; 75 05
    23772357    mov dx, 003b4h                            ; ba b4 03
     
    23882368    mov dx, si                                ; 89 f2
    23892369    out DX, AL                                ; ee
    2390     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     2370    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    23912371    sal cx, 006h                              ; c1 e1 06
    23922372    mov di, cx                                ; 89 cf
    23932373    add di, bx                                ; 01 df
    23942374    lea dx, [si+001h]                         ; 8d 54 01
    2395     mov al, byte [di+048cdh]                  ; 8a 85 cd 48
     2375    mov al, byte [di+048d0h]                  ; 8a 85 d0 48
    23962376    out DX, AL                                ; ee
    23972377    inc bx                                    ; 43
    23982378    jmp short 0116eh                          ; eb e0
    23992379    mov bx, cx                                ; 89 cb
    2400     mov al, byte [bx+048cch]                  ; 8a 87 cc 48
     2380    mov al, byte [bx+048cfh]                  ; 8a 87 cf 48
    24012381    mov dx, 003c2h                            ; ba c2 03
    24022382    out DX, AL                                ; ee
     
    24082388    db  02ah, 0e4h
    24092389    ; sub ah, ah                                ; 2a e4
    2410     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
     2390    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    24112391    jne short 01209h                          ; 75 5f
    2412     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     2392    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    24132393    sal bx, 003h                              ; c1 e3 03
    2414     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     2394    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
    24152395    jne short 011cbh                          ; 75 13
    2416     mov es, [bx+04833h]                       ; 8e 87 33 48
     2396    mov es, [bx+04836h]                       ; 8e 87 36 48
    24172397    mov cx, 04000h                            ; b9 00 40
    24182398    mov ax, 00720h                            ; b8 20 07
     
    24222402    rep stosw                                 ; f3 ab
    24232403    jmp short 01209h                          ; eb 3e
    2424     cmp byte [bp-008h], 00dh                  ; 80 7e f8 0d
     2404    cmp byte [bp-004h], 00dh                  ; 80 7e fc 0d
    24252405    jnc short 011e3h                          ; 73 12
    2426     mov es, [bx+04833h]                       ; 8e 87 33 48
     2406    mov es, [bx+04836h]                       ; 8e 87 36 48
    24272407    mov cx, 04000h                            ; b9 00 40
    24282408    xor ax, ax                                ; 31 c0
     
    24422422    mov AL, strict byte 00fh                  ; b0 0f
    24432423    out DX, AL                                ; ee
    2444     mov es, [bx+04833h]                       ; 8e 87 33 48
     2424    mov es, [bx+04836h]                       ; 8e 87 36 48
    24452425    mov cx, 08000h                            ; b9 00 80
    24462426    xor ax, ax                                ; 31 c0
     
    24512431    mov al, byte [bp-010h]                    ; 8a 46 f0
    24522432    out DX, AL                                ; ee
    2453     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     2433    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    24542434    mov dx, strict word 00049h                ; ba 49 00
    24552435    mov ax, strict word 00040h                ; b8 40 00
    2456     call 02f18h                               ; e8 02 1d
    2457     mov bx, word [bp-00ch]                    ; 8b 5e f4
     2436    call 02f02h                               ; e8 ec 1c
     2437    mov bx, word [bp-00eh]                    ; 8b 5e f2
    24582438    mov dx, strict word 0004ah                ; ba 4a 00
    24592439    mov ax, strict word 00040h                ; b8 40 00
    2460     call 02f34h                               ; e8 12 1d
    2461     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     2440    call 02f1eh                               ; e8 fc 1c
     2441    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    24622442    sal bx, 006h                              ; c1 e3 06
    2463     mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
     2443    mov bx, word [bx+048c9h]                  ; 8b 9f c9 48
    24642444    mov dx, strict word 0004ch                ; ba 4c 00
    24652445    mov ax, strict word 00040h                ; b8 40 00
    2466     call 02f34h                               ; e8 fe 1c
     2446    call 02f1eh                               ; e8 e8 1c
    24672447    mov bx, si                                ; 89 f3
    24682448    mov dx, strict word 00063h                ; ba 63 00
    24692449    mov ax, strict word 00040h                ; b8 40 00
    2470     call 02f34h                               ; e8 f3 1c
    2471     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     2450    call 02f1eh                               ; e8 dd 1c
     2451    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    24722452    mov dx, 00084h                            ; ba 84 00
    24732453    mov ax, strict word 00040h                ; b8 40 00
    2474     call 02f18h                               ; e8 ca 1c
    2475     mov bx, word [bp-00eh]                    ; 8b 5e f2
     2454    call 02f02h                               ; e8 b4 1c
     2455    mov bx, word [bp-00ah]                    ; 8b 5e f6
    24762456    mov dx, 00085h                            ; ba 85 00
    24772457    mov ax, strict word 00040h                ; b8 40 00
    2478     call 02f34h                               ; e8 da 1c
    2479     mov al, byte [bp-002h]                    ; 8a 46 fe
     2458    call 02f1eh                               ; e8 c4 1c
     2459    mov al, byte [bp-006h]                    ; 8a 46 fa
    24802460    or AL, strict byte 060h                   ; 0c 60
    24812461    movzx bx, al                              ; 0f b6 d8
    24822462    mov dx, 00087h                            ; ba 87 00
    24832463    mov ax, strict word 00040h                ; b8 40 00
    2484     call 02f18h                               ; e8 ad 1c
     2464    call 02f02h                               ; e8 97 1c
    24852465    mov bx, 000f9h                            ; bb f9 00
    24862466    mov dx, 00088h                            ; ba 88 00
    24872467    mov ax, strict word 00040h                ; b8 40 00
    2488     call 02f18h                               ; e8 a1 1c
     2468    call 02f02h                               ; e8 8b 1c
    24892469    mov dx, 00089h                            ; ba 89 00
    24902470    mov ax, strict word 00040h                ; b8 40 00
    2491     call 02f0ah                               ; e8 8a 1c
     2471    call 02ef4h                               ; e8 74 1c
    24922472    and AL, strict byte 07fh                  ; 24 7f
    24932473    movzx bx, al                              ; 0f b6 d8
    24942474    mov dx, 00089h                            ; ba 89 00
    24952475    mov ax, strict word 00040h                ; b8 40 00
    2496     call 02f18h                               ; e8 8a 1c
     2476    call 02f02h                               ; e8 74 1c
    24972477    mov bx, strict word 00008h                ; bb 08 00
    24982478    mov dx, 0008ah                            ; ba 8a 00
    24992479    mov ax, strict word 00040h                ; b8 40 00
    2500     call 02f18h                               ; e8 7e 1c
    2501     mov bx, 05593h                            ; bb 93 55
     2480    call 02f02h                               ; e8 68 1c
     2481    mov cx, ds                                ; 8c d9
     2482    mov bx, 05596h                            ; bb 96 55
    25022483    mov dx, 000a8h                            ; ba a8 00
    25032484    mov ax, strict word 00040h                ; b8 40 00
    2504     call 02f34h                               ; e8 8e 1c
    2505     mov bx, 0c000h                            ; bb 00 c0
    2506     mov dx, 000aah                            ; ba aa 00
    2507     mov ax, strict word 00040h                ; b8 40 00
    2508     call 02f34h                               ; e8 82 1c
     2485    call 02f3eh                               ; e8 96 1c
    25092486    xor bx, bx                                ; 31 db
    25102487    mov dx, strict word 00065h                ; ba 65 00
    25112488    mov ax, strict word 00040h                ; b8 40 00
    2512     call 02f18h                               ; e8 5b 1c
     2489    call 02f02h                               ; e8 4f 1c
    25132490    xor bx, bx                                ; 31 db
    25142491    mov dx, strict word 00066h                ; ba 66 00
    25152492    mov ax, strict word 00040h                ; b8 40 00
    2516     call 02f18h                               ; e8 50 1c
    2517     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     2493    call 02f02h                               ; e8 44 1c
     2494    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    25182495    sal bx, 003h                              ; c1 e3 03
    2519     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    2520     jne short 012dfh                          ; 75 09
     2496    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
     2497    jne short 012d5h                          ; 75 09
    25212498    mov dx, strict word 00007h                ; ba 07 00
    25222499    mov ax, strict word 00006h                ; b8 06 00
    2523     call 00daah                               ; e8 cb fa
     2500    call 00daah                               ; e8 d5 fa
    25242501    xor bx, bx                                ; 31 db
    2525     jmp short 012e8h                          ; eb 05
     2502    jmp short 012deh                          ; eb 05
    25262503    cmp bx, strict byte 00008h                ; 83 fb 08
    2527     jnc short 012f3h                          ; 73 0b
     2504    jnc short 012e9h                          ; 73 0b
    25282505    movzx ax, bl                              ; 0f b6 c3
    25292506    xor dx, dx                                ; 31 d2
    2530     call 00e4bh                               ; e8 5b fb
     2507    call 00e4bh                               ; e8 65 fb
    25312508    inc bx                                    ; 43
    2532     jmp short 012e3h                          ; eb f0
     2509    jmp short 012d9h                          ; eb f0
    25332510    xor ax, ax                                ; 31 c0
    2534     call 00ee9h                               ; e8 f1 fb
    2535     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     2511    call 00ee9h                               ; e8 fb fb
     2512    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    25362513    sal bx, 003h                              ; c1 e3 03
    2537     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    2538     jne short 01316h                          ; 75 10
     2514    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
     2515    jne short 0130ch                          ; 75 10
    25392516    xor bl, bl                                ; 30 db
    25402517    mov AL, strict byte 004h                  ; b0 04
     
    25452522    mov AH, strict byte 011h                  ; b4 11
    25462523    int 010h                                  ; cd 10
    2547     mov dx, 059afh                            ; ba af 59
     2524    mov dx, 059b2h                            ; ba b2 59
    25482525    mov ax, strict word 0001fh                ; b8 1f 00
    2549     call 00a00h                               ; e8 e1 f6
    2550     mov ax, word [bp-00eh]                    ; 8b 46 f2
     2526    call 00a00h                               ; e8 eb f6
     2527    mov ax, word [bp-00ah]                    ; 8b 46 f6
    25512528    cmp ax, strict word 00010h                ; 3d 10 00
    2552     je short 01341h                           ; 74 1a
     2529    je short 01337h                           ; 74 1a
    25532530    cmp ax, strict word 0000eh                ; 3d 0e 00
    2554     je short 0133ch                           ; 74 10
     2531    je short 01332h                           ; 74 10
    25552532    cmp ax, strict word 00008h                ; 3d 08 00
    2556     jne short 01346h                          ; 75 15
    2557     mov dx, 055afh                            ; ba af 55
     2533    jne short 0133ch                          ; 75 15
     2534    mov dx, 055b2h                            ; ba b2 55
    25582535    mov ax, strict word 00043h                ; b8 43 00
    2559     call 00a00h                               ; e8 c6 f6
    2560     jmp short 01346h                          ; eb 0a
    2561     mov dx, 05dafh                            ; ba af 5d
    2562     jmp short 01334h                          ; eb f3
    2563     mov dx, 06bafh                            ; ba af 6b
    2564     jmp short 01334h                          ; eb ee
     2536    call 00a00h                               ; e8 d0 f6
     2537    jmp short 0133ch                          ; eb 0a
     2538    mov dx, 05db2h                            ; ba b2 5d
     2539    jmp short 0132ah                          ; eb f3
     2540    mov dx, 06bb2h                            ; ba b2 6b
     2541    jmp short 0132ah                          ; eb ee
    25652542    leave                                     ; c9
    25662543    pop di                                    ; 5f
     
    25702547    pop bx                                    ; 5b
    25712548    retn                                      ; c3
    2572 vgamem_copy_pl4_:                            ; 0xc134d LB 0x72
     2549vgamem_copy_pl4_:                            ; 0xc1343 LB 0x72
    25732550    push si                                   ; 56
    25742551    push di                                   ; 57
     
    25932570    xor bl, bl                                ; 30 db
    25942571    cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
    2595     jnc short 013b2h                          ; 73 29
     2572    jnc short 013a8h                          ; 73 29
    25962573    movzx cx, bh                              ; 0f b6 cf
    25972574    movzx si, bl                              ; 0f b6 f3
     
    26052582    mov es, dx                                ; 8e c2
    26062583    cld                                       ; fc
    2607     jcxz 013aeh                               ; e3 06
     2584    jcxz 013a4h                               ; e3 06
    26082585    push DS                                   ; 1e
    26092586    mov ds, dx                                ; 8e da
     
    26122589    db  0feh, 0c3h
    26132590    ; inc bl                                    ; fe c3
    2614     jmp short 01384h                          ; eb d2
     2591    jmp short 0137ah                          ; eb d2
    26152592    mov ax, strict word 00005h                ; b8 05 00
    26162593    mov dx, 003ceh                            ; ba ce 03
     
    26202597    pop si                                    ; 5e
    26212598    retn 00004h                               ; c2 04 00
    2622 vgamem_fill_pl4_:                            ; 0xc13bf LB 0x5d
     2599vgamem_fill_pl4_:                            ; 0xc13b5 LB 0x5d
    26232600    push di                                   ; 57
    26242601    enter 00004h, 000h                        ; c8 04 00 00
     
    26382615    xor bl, bl                                ; 30 db
    26392616    cmp bl, byte [bp+006h]                    ; 3a 5e 06
    2640     jnc short 01410h                          ; 73 22
     2617    jnc short 01406h                          ; 73 22
    26412618    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    26422619    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     
    26482625    mov es, dx                                ; 8e c2
    26492626    cld                                       ; fc
    2650     jcxz 0140ch                               ; e3 02
     2627    jcxz 01402h                               ; e3 02
    26512628    rep stosb                                 ; f3 aa
    26522629    db  0feh, 0c3h
    26532630    ; inc bl                                    ; fe c3
    2654     jmp short 013e9h                          ; eb d9
     2631    jmp short 013dfh                          ; eb d9
    26552632    mov ax, strict word 00005h                ; b8 05 00
    26562633    mov dx, 003ceh                            ; ba ce 03
     
    26592636    pop di                                    ; 5f
    26602637    retn 00004h                               ; c2 04 00
    2661 vgamem_copy_cga_:                            ; 0xc141c LB 0xa0
     2638vgamem_copy_cga_:                            ; 0xc1412 LB 0xa0
    26622639    push si                                   ; 56
    26632640    push di                                   ; 57
     
    26812658    xor bl, bl                                ; 30 db
    26822659    cmp bl, byte [bp+00ah]                    ; 3a 5e 0a
    2683     jnc short 014b6h                          ; 73 61
     2660    jnc short 014ach                          ; 73 61
    26842661    test bl, 001h                             ; f6 c3 01
    2685     je short 0148bh                           ; 74 31
     2662    je short 01481h                           ; 74 31
    26862663    movzx cx, bh                              ; 0f b6 cf
    26872664    movzx si, bl                              ; 0f b6 f3
     
    26982675    mov es, dx                                ; 8e c2
    26992676    cld                                       ; fc
    2700     jcxz 01489h                               ; e3 06
     2677    jcxz 0147fh                               ; e3 06
    27012678    push DS                                   ; 1e
    27022679    mov ds, dx                                ; 8e da
    27032680    rep movsb                                 ; f3 a4
    27042681    pop DS                                    ; 1f
    2705     jmp short 014b2h                          ; eb 27
     2682    jmp short 014a8h                          ; eb 27
    27062683    movzx cx, bh                              ; 0f b6 cf
    27072684    movzx ax, bl                              ; 0f b6 c3
     
    27162693    mov es, dx                                ; 8e c2
    27172694    cld                                       ; fc
    2718     jcxz 014b2h                               ; e3 06
     2695    jcxz 014a8h                               ; e3 06
    27192696    push DS                                   ; 1e
    27202697    mov ds, dx                                ; 8e da
     
    27232700    db  0feh, 0c3h
    27242701    ; inc bl                                    ; fe c3
    2725     jmp short 01450h                          ; eb 9a
     2702    jmp short 01446h                          ; eb 9a
    27262703    leave                                     ; c9
    27272704    pop di                                    ; 5f
    27282705    pop si                                    ; 5e
    27292706    retn 00004h                               ; c2 04 00
    2730 vgamem_fill_cga_:                            ; 0xc14bc LB 0x86
     2707vgamem_fill_cga_:                            ; 0xc14b2 LB 0x86
    27312708    push si                                   ; 56
    27322709    push di                                   ; 57
     
    27442721    xor bl, bl                                ; 30 db
    27452722    cmp bl, byte [bp+008h]                    ; 3a 5e 08
    2746     jnc short 0153ch                          ; 73 57
     2723    jnc short 01532h                          ; 73 57
    27472724    test bl, 001h                             ; f6 c3 01
    2748     je short 01519h                           ; 74 2f
     2725    je short 0150fh                           ; 74 2f
    27492726    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    27502727    movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
     
    27612738    mov es, dx                                ; 8e c2
    27622739    cld                                       ; fc
    2763     jcxz 01517h                               ; e3 02
     2740    jcxz 0150dh                               ; e3 02
    27642741    rep stosb                                 ; f3 aa
    2765     jmp short 01538h                          ; eb 1f
     2742    jmp short 0152eh                          ; eb 1f
    27662743    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    27672744    movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
     
    27742751    mov es, dx                                ; 8e c2
    27752752    cld                                       ; fc
    2776     jcxz 01538h                               ; e3 02
     2753    jcxz 0152eh                               ; e3 02
    27772754    rep stosb                                 ; f3 aa
    27782755    db  0feh, 0c3h
    27792756    ; inc bl                                    ; fe c3
    2780     jmp short 014e0h                          ; eb a4
     2757    jmp short 014d6h                          ; eb a4
    27812758    leave                                     ; c9
    27822759    pop di                                    ; 5f
    27832760    pop si                                    ; 5e
    27842761    retn 00004h                               ; c2 04 00
    2785 biosfn_scroll_:                              ; 0xc1542 LB 0x501
     2762biosfn_scroll_:                              ; 0xc1538 LB 0x501
    27862763    push si                                   ; 56
    27872764    push di                                   ; 57
     
    27922769    mov byte [bp-002h], cl                    ; 88 4e fe
    27932770    cmp bl, byte [bp+008h]                    ; 3a 5e 08
    2794     jnbe near 01a3dh                          ; 0f 87 e2 04
     2771    jnbe near 01a33h                          ; 0f 87 e2 04
    27952772    cmp cl, byte [bp+00ah]                    ; 3a 4e 0a
    2796     jnbe near 01a3dh                          ; 0f 87 db 04
     2773    jnbe near 01a33h                          ; 0f 87 db 04
    27972774    mov dx, strict word 00049h                ; ba 49 00
    27982775    mov ax, strict word 00040h                ; b8 40 00
    2799     call 02f0ah                               ; e8 9f 19
     2776    call 02ef4h                               ; e8 93 19
    28002777    xor ah, ah                                ; 30 e4
    2801     call 02ee3h                               ; e8 73 19
     2778    call 02ecdh                               ; e8 67 19
    28022779    mov byte [bp-00ah], al                    ; 88 46 f6
    28032780    cmp AL, strict byte 0ffh                  ; 3c ff
    2804     je near 01a3dh                            ; 0f 84 c4 04
     2781    je near 01a33h                            ; 0f 84 c4 04
    28052782    mov dx, 00084h                            ; ba 84 00
    28062783    mov ax, strict word 00040h                ; b8 40 00
    2807     call 02f0ah                               ; e8 88 19
     2784    call 02ef4h                               ; e8 7c 19
    28082785    movzx cx, al                              ; 0f b6 c8
    28092786    inc cx                                    ; 41
    28102787    mov dx, strict word 0004ah                ; ba 4a 00
    28112788    mov ax, strict word 00040h                ; b8 40 00
    2812     call 02f26h                               ; e8 97 19
     2789    call 02f10h                               ; e8 8b 19
    28132790    mov word [bp-012h], ax                    ; 89 46 ee
    28142791    cmp byte [bp+00ch], 0ffh                  ; 80 7e 0c ff
    2815     jne short 015a4h                          ; 75 0c
     2792    jne short 0159ah                          ; 75 0c
    28162793    mov dx, strict word 00062h                ; ba 62 00
    28172794    mov ax, strict word 00040h                ; b8 40 00
    2818     call 02f0ah                               ; e8 69 19
     2795    call 02ef4h                               ; e8 5d 19
    28192796    mov byte [bp+00ch], al                    ; 88 46 0c
    28202797    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    28212798    cmp ax, cx                                ; 39 c8
    2822     jc short 015b3h                           ; 72 07
     2799    jc short 015a9h                           ; 72 07
    28232800    mov al, cl                                ; 88 c8
    28242801    db  0feh, 0c8h
     
    28272804    movzx ax, byte [bp+00ah]                  ; 0f b6 46 0a
    28282805    cmp ax, word [bp-012h]                    ; 3b 46 ee
    2829     jc short 015c4h                           ; 72 08
     2806    jc short 015bah                           ; 72 08
    28302807    mov al, byte [bp-012h]                    ; 8a 46 ee
    28312808    db  0feh, 0c8h
     
    28342811    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    28352812    cmp ax, cx                                ; 39 c8
    2836     jbe short 015d0h                          ; 76 04
     2813    jbe short 015c6h                          ; 76 04
    28372814    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    28382815    mov al, byte [bp+00ah]                    ; 8a 46 0a
     
    28522829    mov ax, word [bp-012h]                    ; 8b 46 ee
    28532830    imul ax, cx                               ; 0f af c1
    2854     cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
    2855     jne near 0179fh                           ; 0f 85 9f 01
     2831    cmp byte [di+04833h], 000h                ; 80 bd 33 48 00
     2832    jne near 01795h                           ; 0f 85 9f 01
    28562833    mov dx, ax                                ; 89 c2
    28572834    add dx, ax                                ; 01 c2
     
    28612838    imul bx, dx                               ; 0f af da
    28622839    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2863     jne short 0164fh                          ; 75 3a
     2840    jne short 01645h                          ; 75 3a
    28642841    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2865     jne short 0164fh                          ; 75 34
     2842    jne short 01645h                          ; 75 34
    28662843    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    2867     jne short 0164fh                          ; 75 2e
     2844    jne short 01645h                          ; 75 2e
    28682845    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
    28692846    cmp dx, word [bp-016h]                    ; 3b 56 ea
    2870     jne short 0164fh                          ; 75 25
     2847    jne short 01645h                          ; 75 25
    28712848    movzx dx, byte [bp+00ah]                  ; 0f b6 56 0a
    28722849    cmp dx, word [bp-014h]                    ; 3b 56 ec
    2873     jne short 0164fh                          ; 75 1c
     2850    jne short 01645h                          ; 75 1c
    28742851    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    28752852    sal dx, 008h                              ; c1 e2 08
    28762853    add dx, strict byte 00020h                ; 83 c2 20
    2877     mov es, [di+04833h]                       ; 8e 85 33 48
     2854    mov es, [di+04836h]                       ; 8e 85 36 48
    28782855    mov cx, ax                                ; 89 c1
    28792856    mov ax, dx                                ; 89 d0
    28802857    mov di, bx                                ; 89 df
    28812858    cld                                       ; fc
    2882     jcxz 0164ch                               ; e3 02
     2859    jcxz 01642h                               ; e3 02
    28832860    rep stosw                                 ; f3 ab
    2884     jmp near 01a3dh                           ; e9 ee 03
     2861    jmp near 01a33h                           ; e9 ee 03
    28852862    cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
    2886     jne near 016f4h                           ; 0f 85 9d 00
     2863    jne near 016eah                           ; 0f 85 9d 00
    28872864    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    28882865    mov word [bp-010h], ax                    ; 89 46 f0
    28892866    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
    28902867    cmp dx, word [bp-010h]                    ; 3b 56 f0
    2891     jc near 01a3dh                            ; 0f 82 d4 03
     2868    jc near 01a33h                            ; 0f 82 d4 03
    28922869    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    28932870    add ax, word [bp-010h]                    ; 03 46 f0
    28942871    cmp ax, dx                                ; 39 d0
    2895     jnbe short 0167ah                         ; 77 06
     2872    jnbe short 01670h                         ; 77 06
    28962873    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2897     jne short 016adh                          ; 75 33
     2874    jne short 016a3h                          ; 75 33
    28982875    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    28992876    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     
    29092886    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    29102887    sal si, 003h                              ; c1 e6 03
    2911     mov es, [si+04833h]                       ; 8e 84 33 48
     2888    mov es, [si+04836h]                       ; 8e 84 36 48
    29122889    cld                                       ; fc
    2913     jcxz 016abh                               ; e3 02
     2890    jcxz 016a1h                               ; e3 02
    29142891    rep stosw                                 ; f3 ab
    2915     jmp short 016eeh                          ; eb 41
     2892    jmp short 016e4h                          ; eb 41
    29162893    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    29172894    mov word [bp-018h], dx                    ; 89 56 e8
     
    29232900    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    29242901    sal si, 003h                              ; c1 e6 03
    2925     mov ax, word [si+04833h]                  ; 8b 84 33 48
     2902    mov ax, word [si+04836h]                  ; 8b 84 36 48
    29262903    mov si, word [bp-010h]                    ; 8b 76 f0
    29272904    imul si, word [bp-012h]                   ; 0f af 76 ee
     
    29352912    mov es, ax                                ; 8e c0
    29362913    cld                                       ; fc
    2937     jcxz 016eeh                               ; e3 06
     2914    jcxz 016e4h                               ; e3 06
    29382915    push DS                                   ; 1e
    29392916    mov ds, dx                                ; 8e da
     
    29412918    pop DS                                    ; 1f
    29422919    inc word [bp-010h]                        ; ff 46 f0
    2943     jmp near 0165eh                           ; e9 6a ff
     2920    jmp near 01654h                           ; e9 6a ff
    29442921    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    29452922    mov word [bp-010h], ax                    ; 89 46 f0
    29462923    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    29472924    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2948     jnbe near 01a3dh                          ; 0f 87 37 03
     2925    jnbe near 01a33h                          ; 0f 87 37 03
    29492926    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    29502927    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    29512928    add ax, dx                                ; 01 d0
    29522929    cmp ax, word [bp-010h]                    ; 3b 46 f0
    2953     jnbe short 0171bh                         ; 77 06
     2930    jnbe short 01711h                         ; 77 06
    29542931    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2955     jne short 0174eh                          ; 75 33
     2932    jne short 01744h                          ; 75 33
    29562933    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    29572934    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     
    29672944    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    29682945    sal si, 003h                              ; c1 e6 03
    2969     mov es, [si+04833h]                       ; 8e 84 33 48
     2946    mov es, [si+04836h]                       ; 8e 84 36 48
    29702947    cld                                       ; fc
    2971     jcxz 0174ch                               ; e3 02
     2948    jcxz 01742h                               ; e3 02
    29722949    rep stosw                                 ; f3 ab
    2973     jmp short 0178eh                          ; eb 40
     2950    jmp short 01784h                          ; eb 40
    29742951    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    29752952    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     
    29822959    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    29832960    sal si, 003h                              ; c1 e6 03
    2984     mov ax, word [si+04833h]                  ; 8b 84 33 48
     2961    mov ax, word [si+04836h]                  ; 8b 84 36 48
    29852962    mov si, word [bp-010h]                    ; 8b 76 f0
    29862963    imul si, word [bp-012h]                   ; 0f af 76 ee
     
    29922969    mov es, ax                                ; 8e c0
    29932970    cld                                       ; fc
    2994     jcxz 0178eh                               ; e3 06
     2971    jcxz 01784h                               ; e3 06
    29952972    push DS                                   ; 1e
    29962973    mov ds, dx                                ; 8e da
     
    29992976    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    30002977    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3001     jc near 01a3dh                            ; 0f 82 a4 02
     2978    jc near 01a33h                            ; 0f 82 a4 02
    30022979    dec word [bp-010h]                        ; ff 4e f0
    3003     jmp near 016fbh                           ; e9 5c ff
    3004     movzx bx, byte [si+048afh]                ; 0f b6 9c af 48
     2980    jmp near 016f1h                           ; e9 5c ff
     2981    movzx bx, byte [si+048b2h]                ; 0f b6 9c b2 48
    30052982    sal bx, 006h                              ; c1 e3 06
    3006     mov dl, byte [bx+048c5h]                  ; 8a 97 c5 48
     2983    mov dl, byte [bx+048c8h]                  ; 8a 97 c8 48
    30072984    mov byte [bp-006h], dl                    ; 88 56 fa
    3008     mov bl, byte [di+04831h]                  ; 8a 9d 31 48
     2985    mov bl, byte [di+04834h]                  ; 8a 9d 34 48
    30092986    cmp bl, 004h                              ; 80 fb 04
    3010     je short 017c6h                           ; 74 0f
     2987    je short 017bch                           ; 74 0f
    30112988    cmp bl, 003h                              ; 80 fb 03
    3012     je short 017c6h                           ; 74 0a
     2989    je short 017bch                           ; 74 0a
    30132990    cmp bl, 002h                              ; 80 fb 02
    3014     je near 01905h                            ; 0f 84 42 01
    3015     jmp near 01a3dh                           ; e9 77 02
     2991    je near 018fbh                            ; 0f 84 42 01
     2992    jmp near 01a33h                           ; e9 77 02
    30162993    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    3017     jne short 0181eh                          ; 75 52
     2994    jne short 01814h                          ; 75 52
    30182995    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    3019     jne short 0181eh                          ; 75 4c
     2996    jne short 01814h                          ; 75 4c
    30202997    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    3021     jne short 0181eh                          ; 75 46
     2998    jne short 01814h                          ; 75 46
    30222999    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
    30233000    mov ax, cx                                ; 89 c8
    30243001    dec ax                                    ; 48
    30253002    cmp dx, ax                                ; 39 c2
    3026     jne short 0181eh                          ; 75 3b
     3003    jne short 01814h                          ; 75 3b
    30273004    movzx dx, byte [bp+00ah]                  ; 0f b6 56 0a
    30283005    mov ax, word [bp-012h]                    ; 8b 46 ee
    30293006    dec ax                                    ; 48
    30303007    cmp dx, ax                                ; 39 c2
    3031     jne short 0181eh                          ; 75 2f
     3008    jne short 01814h                          ; 75 2f
    30323009    mov ax, 00205h                            ; b8 05 02
    30333010    mov dx, 003ceh                            ; ba ce 03
     
    30393016    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    30403017    sal bx, 003h                              ; c1 e3 03
    3041     mov es, [bx+04833h]                       ; 8e 87 33 48
     3018    mov es, [bx+04836h]                       ; 8e 87 36 48
    30423019    xor di, di                                ; 31 ff
    30433020    cld                                       ; fc
    3044     jcxz 01817h                               ; e3 02
     3021    jcxz 0180dh                               ; e3 02
    30453022    rep stosb                                 ; f3 aa
    30463023    mov ax, strict word 00005h                ; b8 05 00
    30473024    out DX, ax                                ; ef
    3048     jmp near 01a3dh                           ; e9 1f 02
     3025    jmp near 01a33h                           ; e9 1f 02
    30493026    cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
    3050     jne short 0188dh                          ; 75 69
     3027    jne short 01883h                          ; 75 69
    30513028    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    30523029    mov word [bp-010h], ax                    ; 89 46 f0
    30533030    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    30543031    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3055     jc near 01a3dh                            ; 0f 82 07 02
     3032    jc near 01a33h                            ; 0f 82 07 02
    30563033    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    30573034    add dx, word [bp-010h]                    ; 03 56 f0
    30583035    cmp dx, ax                                ; 39 c2
    3059     jnbe short 01847h                         ; 77 06
     3036    jnbe short 0183dh                         ; 77 06
    30603037    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    3061     jne short 01866h                          ; 75 1f
     3038    jne short 0185ch                          ; 75 1f
    30623039    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    30633040    push ax                                   ; 50
     
    30683045    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    30693046    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3070     call 013bfh                               ; e8 5b fb
    3071     jmp short 01888h                          ; eb 22
     3047    call 013b5h                               ; e8 5b fb
     3048    jmp short 0187eh                          ; eb 22
    30723049    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    30733050    push ax                                   ; 50
     
    30803057    movzx dx, al                              ; 0f b6 d0
    30813058    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3082     call 0134dh                               ; e8 c5 fa
     3059    call 01343h                               ; e8 c5 fa
    30833060    inc word [bp-010h]                        ; ff 46 f0
    3084     jmp short 0182bh                          ; eb 9e
     3061    jmp short 01821h                          ; eb 9e
    30853062    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    30863063    mov word [bp-010h], ax                    ; 89 46 f0
    30873064    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    30883065    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3089     jnbe near 01a3dh                          ; 0f 87 9e 01
     3066    jnbe near 01a33h                          ; 0f 87 9e 01
    30903067    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    30913068    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    30923069    add ax, dx                                ; 01 d0
    30933070    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3094     jnbe short 018b4h                         ; 77 06
     3071    jnbe short 018aah                         ; 77 06
    30953072    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    3096     jne short 018d3h                          ; 75 1f
     3073    jne short 018c9h                          ; 75 1f
    30973074    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    30983075    push ax                                   ; 50
     
    31033080    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    31043081    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3105     call 013bfh                               ; e8 ee fa
    3106     jmp short 018f5h                          ; eb 22
     3082    call 013b5h                               ; e8 ee fa
     3083    jmp short 018ebh                          ; eb 22
    31073084    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    31083085    push ax                                   ; 50
     
    31153092    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    31163093    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3117     call 0134dh                               ; e8 58 fa
     3094    call 01343h                               ; e8 58 fa
    31183095    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    31193096    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3120     jc near 01a3dh                            ; 0f 82 3d 01
     3097    jc near 01a33h                            ; 0f 82 3d 01
    31213098    dec word [bp-010h]                        ; ff 4e f0
    3122     jmp short 01894h                          ; eb 8f
    3123     mov dl, byte [di+04832h]                  ; 8a 95 32 48
     3099    jmp short 0188ah                          ; eb 8f
     3100    mov dl, byte [di+04835h]                  ; 8a 95 35 48
    31243101    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    3125     jne short 0194ch                          ; 75 3d
     3102    jne short 01942h                          ; 75 3d
    31263103    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    3127     jne short 0194ch                          ; 75 37
     3104    jne short 01942h                          ; 75 37
    31283105    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    3129     jne short 0194ch                          ; 75 31
     3106    jne short 01942h                          ; 75 31
    31303107    movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
    31313108    cmp bx, word [bp-016h]                    ; 3b 5e ea
    3132     jne short 0194ch                          ; 75 28
     3109    jne short 01942h                          ; 75 28
    31333110    movzx bx, byte [bp+00ah]                  ; 0f b6 5e 0a
    31343111    cmp bx, word [bp-014h]                    ; 3b 5e ec
    3135     jne short 0194ch                          ; 75 1f
     3112    jne short 01942h                          ; 75 1f
    31363113    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    31373114    imul ax, bx                               ; 0f af c3
     
    31393116    imul cx, ax                               ; 0f af c8
    31403117    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    3141     mov es, [di+04833h]                       ; 8e 85 33 48
     3118    mov es, [di+04836h]                       ; 8e 85 36 48
    31423119    xor di, di                                ; 31 ff
    31433120    cld                                       ; fc
    3144     jcxz 01949h                               ; e3 02
     3121    jcxz 0193fh                               ; e3 02
    31453122    rep stosb                                 ; f3 aa
    3146     jmp near 01a3dh                           ; e9 f1 00
     3123    jmp near 01a33h                           ; e9 f1 00
    31473124    cmp dl, 002h                              ; 80 fa 02
    3148     jne short 0195ah                          ; 75 09
     3125    jne short 01950h                          ; 75 09
    31493126    sal byte [bp-002h], 1                     ; d0 66 fe
    31503127    sal byte [bp-00eh], 1                     ; d0 66 f2
    31513128    sal word [bp-012h], 1                     ; d1 66 ee
    31523129    cmp byte [bp+00eh], 001h                  ; 80 7e 0e 01
    3153     jne short 019c9h                          ; 75 69
     3130    jne short 019bfh                          ; 75 69
    31543131    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    31553132    mov word [bp-010h], ax                    ; 89 46 f0
    31563133    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    31573134    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3158     jc near 01a3dh                            ; 0f 82 cb 00
     3135    jc near 01a33h                            ; 0f 82 cb 00
    31593136    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    31603137    add dx, word [bp-010h]                    ; 03 56 f0
    31613138    cmp dx, ax                                ; 39 c2
    3162     jnbe short 01983h                         ; 77 06
     3139    jnbe short 01979h                         ; 77 06
    31633140    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    3164     jne short 019a2h                          ; 75 1f
     3141    jne short 01998h                          ; 75 1f
    31653142    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    31663143    push ax                                   ; 50
     
    31713148    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    31723149    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3173     call 014bch                               ; e8 1c fb
    3174     jmp short 019c4h                          ; eb 22
     3150    call 014b2h                               ; e8 1c fb
     3151    jmp short 019bah                          ; eb 22
    31753152    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    31763153    push ax                                   ; 50
     
    31833160    movzx dx, al                              ; 0f b6 d0
    31843161    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3185     call 0141ch                               ; e8 58 fa
     3162    call 01412h                               ; e8 58 fa
    31863163    inc word [bp-010h]                        ; ff 46 f0
    3187     jmp short 01967h                          ; eb 9e
     3164    jmp short 0195dh                          ; eb 9e
    31883165    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    31893166    mov word [bp-010h], ax                    ; 89 46 f0
    31903167    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    31913168    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3192     jnbe short 01a3dh                         ; 77 64
     3169    jnbe short 01a33h                         ; 77 64
    31933170    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    31943171    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    31953172    add ax, dx                                ; 01 d0
    31963173    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3197     jnbe short 019eeh                         ; 77 06
     3174    jnbe short 019e4h                         ; 77 06
    31983175    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    3199     jne short 01a0dh                          ; 75 1f
     3176    jne short 01a03h                          ; 75 1f
    32003177    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    32013178    push ax                                   ; 50
     
    32063183    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    32073184    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3208     call 014bch                               ; e8 b1 fa
    3209     jmp short 01a2fh                          ; eb 22
     3185    call 014b2h                               ; e8 b1 fa
     3186    jmp short 01a25h                          ; eb 22
    32103187    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    32113188    push ax                                   ; 50
     
    32183195    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    32193196    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    3220     call 0141ch                               ; e8 ed f9
     3197    call 01412h                               ; e8 ed f9
    32213198    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    32223199    cmp ax, word [bp-010h]                    ; 3b 46 f0
    3223     jc short 01a3dh                           ; 72 05
     3200    jc short 01a33h                           ; 72 05
    32243201    dec word [bp-010h]                        ; ff 4e f0
    3225     jmp short 019d0h                          ; eb 93
     3202    jmp short 019c6h                          ; eb 93
    32263203    leave                                     ; c9
    32273204    pop di                                    ; 5f
    32283205    pop si                                    ; 5e
    32293206    retn 00008h                               ; c2 08 00
    3230 write_gfx_char_pl4_:                         ; 0xc1a43 LB 0xe6
     3207write_gfx_char_pl4_:                         ; 0xc1a39 LB 0xe6
    32313208    push si                                   ; 56
    32323209    push di                                   ; 57
     
    32353212    mov ah, bl                                ; 88 dc
    32363213    cmp byte [bp+00ah], 010h                  ; 80 7e 0a 10
    3237     je short 01a5fh                           ; 74 0b
     3214    je short 01a55h                           ; 74 0b
    32383215    cmp byte [bp+00ah], 00eh                  ; 80 7e 0a 0e
    3239     jne short 01a64h                          ; 75 0a
    3240     mov di, 05dafh                            ; bf af 5d
    3241     jmp short 01a67h                          ; eb 08
    3242     mov di, 06bafh                            ; bf af 6b
    3243     jmp short 01a67h                          ; eb 03
    3244     mov di, 055afh                            ; bf af 55
     3216    jne short 01a5ah                          ; 75 0a
     3217    mov di, 05db2h                            ; bf b2 5d
     3218    jmp short 01a5dh                          ; eb 08
     3219    mov di, 06bb2h                            ; bf b2 6b
     3220    jmp short 01a5dh                          ; eb 03
     3221    mov di, 055b2h                            ; bf b2 55
    32453222    movzx si, cl                              ; 0f b6 f1
    32463223    movzx bx, byte [bp+00ah]                  ; 0f b6 5e 0a
     
    32613238    out DX, ax                                ; ef
    32623239    test byte [bp-002h], 080h                 ; f6 46 fe 80
    3263     je short 01aa2h                           ; 74 06
     3240    je short 01a98h                           ; 74 06
    32643241    mov ax, 01803h                            ; b8 03 18
    32653242    out DX, ax                                ; ef
    3266     jmp short 01aa6h                          ; eb 04
     3243    jmp short 01a9ch                          ; eb 04
    32673244    mov ax, strict word 00003h                ; b8 03 00
    32683245    out DX, ax                                ; ef
    32693246    xor ch, ch                                ; 30 ed
    32703247    cmp ch, byte [bp+00ah]                    ; 3a 6e 0a
    3271     jnc short 01b14h                          ; 73 67
     3248    jnc short 01b0ah                          ; 73 67
    32723249    movzx si, ch                              ; 0f b6 f5
    32733250    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     
    32753252    add si, word [bp-00ah]                    ; 03 76 f6
    32763253    mov byte [bp-004h], 000h                  ; c6 46 fc 00
    3277     jmp short 01ad3h                          ; eb 13
     3254    jmp short 01ac9h                          ; eb 13
    32783255    xor bx, bx                                ; 31 db
    32793256    mov dx, si                                ; 89 f2
    32803257    mov ax, 0a000h                            ; b8 00 a0
    3281     call 02f18h                               ; e8 4e 14
     3258    call 02f02h                               ; e8 42 14
    32823259    inc byte [bp-004h]                        ; fe 46 fc
    32833260    cmp byte [bp-004h], 008h                  ; 80 7e fc 08
    3284     jnc short 01b10h                          ; 73 3d
     3261    jnc short 01b06h                          ; 73 3d
    32853262    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    32863263    mov cl, al                                ; 88 c1
     
    32953272    mov dx, si                                ; 89 f2
    32963273    mov ax, 0a000h                            ; b8 00 a0
    3297     call 02f0ah                               ; e8 16 14
     3274    call 02ef4h                               ; e8 0a 14
    32983275    movzx ax, ch                              ; 0f b6 c5
    32993276    add ax, word [bp-006h]                    ; 03 46 fa
     
    33023279    movzx ax, byte [bx]                       ; 0f b6 07
    33033280    test word [bp-008h], ax                   ; 85 46 f8
    3304     je short 01ac0h                           ; 74 ba
     3281    je short 01ab6h                           ; 74 ba
    33053282    mov al, byte [bp-002h]                    ; 8a 46 fe
    33063283    and AL, strict byte 00fh                  ; 24 0f
    33073284    movzx bx, al                              ; 0f b6 d8
    3308     jmp short 01ac2h                          ; eb b2
     3285    jmp short 01ab8h                          ; eb b2
    33093286    db  0feh, 0c5h
    33103287    ; inc ch                                    ; fe c5
    3311     jmp short 01aa8h                          ; eb 94
     3288    jmp short 01a9eh                          ; eb 94
    33123289    mov ax, 0ff08h                            ; b8 08 ff
    33133290    mov dx, 003ceh                            ; ba ce 03
     
    33213298    pop si                                    ; 5e
    33223299    retn 00004h                               ; c2 04 00
    3323 write_gfx_char_cga_:                         ; 0xc1b29 LB 0x119
     3300write_gfx_char_cga_:                         ; 0xc1b1f LB 0x119
    33243301    push si                                   ; 56
    33253302    push di                                   ; 57
    33263303    enter 00008h, 000h                        ; c8 08 00 00
    33273304    mov byte [bp-004h], dl                    ; 88 56 fc
    3328     mov si, 055afh                            ; be af 55
     3305    mov si, 055b2h                            ; be b2 55
    33293306    xor bh, bh                                ; 30 ff
    33303307    movzx di, byte [bp+00ah]                  ; 0f b6 7e 0a
     
    33373314    sal di, 003h                              ; c1 e7 03
    33383315    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    3339     jmp near 01ba7h                           ; e9 50 00
     3316    jmp near 01b9dh                           ; e9 50 00
    33403317    xor al, al                                ; 30 c0
    33413318    xor ah, ah                                ; 30 e4
    3342     jmp short 01b68h                          ; eb 0b
     3319    jmp short 01b5eh                          ; eb 0b
    33433320    or al, bl                                 ; 08 d8
    33443321    shr ch, 1                                 ; d0 ed
     
    33463323    ; inc ah                                    ; fe c4
    33473324    cmp ah, 008h                              ; 80 fc 08
    3348     jnc short 01b90h                          ; 73 28
     3325    jnc short 01b86h                          ; 73 28
    33493326    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    33503327    add bx, di                                ; 01 fb
     
    33533330    movzx dx, ch                              ; 0f b6 d5
    33543331    test bx, dx                               ; 85 d3
    3355     je short 01b5fh                           ; 74 e5
     3332    je short 01b55h                           ; 74 e5
    33563333    mov CL, strict byte 007h                  ; b1 07
    33573334    sub cl, ah                                ; 28 e1
     
    33603337    sal bl, CL                                ; d2 e3
    33613338    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3362     je short 01b5dh                           ; 74 d1
     3339    je short 01b53h                           ; 74 d1
    33633340    xor al, bl                                ; 30 d8
    3364     jmp short 01b5fh                          ; eb cf
     3341    jmp short 01b55h                          ; eb cf
    33653342    movzx bx, al                              ; 0f b6 d8
    33663343    mov dx, word [bp-006h]                    ; 8b 56 fa
    33673344    mov ax, 0b800h                            ; b8 00 b8
    3368     call 02f18h                               ; e8 7c 13
     3345    call 02f02h                               ; e8 70 13
    33693346    inc byte [bp-002h]                        ; fe 46 fe
    33703347    cmp byte [bp-002h], 008h                  ; 80 7e fe 08
    3371     jnc near 01c3ch                           ; 0f 83 95 00
     3348    jnc near 01c32h                           ; 0f 83 95 00
    33723349    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    33733350    sar ax, 1                                 ; d1 f8
     
    33773354    mov word [bp-006h], bx                    ; 89 5e fa
    33783355    test byte [bp-002h], 001h                 ; f6 46 fe 01
    3379     je short 01bc2h                           ; 74 04
     3356    je short 01bb8h                           ; 74 04
    33803357    add byte [bp-005h], 020h                  ; 80 46 fb 20
    33813358    mov CH, strict byte 080h                  ; b5 80
    33823359    cmp byte [bp+00ah], 001h                  ; 80 7e 0a 01
    3383     jne short 01bdbh                          ; 75 11
     3360    jne short 01bd1h                          ; 75 11
    33843361    test byte [bp-004h], ch                   ; 84 6e fc
    3385     je short 01b57h                           ; 74 88
     3362    je short 01b4dh                           ; 74 88
    33863363    mov dx, word [bp-006h]                    ; 8b 56 fa
    33873364    mov ax, 0b800h                            ; b8 00 b8
    3388     call 02f0ah                               ; e8 32 13
    3389     jmp near 01b59h                           ; e9 7e ff
     3365    call 02ef4h                               ; e8 26 13
     3366    jmp near 01b4fh                           ; e9 7e ff
    33903367    test ch, ch                               ; 84 ed
    3391     jbe short 01b9ch                          ; 76 bd
     3368    jbe short 01b92h                          ; 76 bd
    33923369    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3393     je short 01bf0h                           ; 74 0b
     3370    je short 01be6h                           ; 74 0b
    33943371    mov dx, word [bp-006h]                    ; 8b 56 fa
    33953372    mov ax, 0b800h                            ; b8 00 b8
    3396     call 02f0ah                               ; e8 1c 13
    3397     jmp short 01bf2h                          ; eb 02
     3373    call 02ef4h                               ; e8 10 13
     3374    jmp short 01be8h                          ; eb 02
    33983375    xor al, al                                ; 30 c0
    33993376    xor ah, ah                                ; 30 e4
    3400     jmp short 01c01h                          ; eb 0b
     3377    jmp short 01bf7h                          ; eb 0b
    34013378    or al, bl                                 ; 08 d8
    34023379    shr ch, 1                                 ; d0 ed
     
    34043381    ; inc ah                                    ; fe c4
    34053382    cmp ah, 004h                              ; 80 fc 04
    3406     jnc short 01c2bh                          ; 73 2a
     3383    jnc short 01c21h                          ; 73 2a
    34073384    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    34083385    add bx, di                                ; 01 fb
     
    34113388    movzx bx, ch                              ; 0f b6 dd
    34123389    test bx, dx                               ; 85 d3
    3413     je short 01bf8h                           ; 74 e5
     3390    je short 01beeh                           ; 74 e5
    34143391    mov CL, strict byte 003h                  ; b1 03
    34153392    sub cl, ah                                ; 28 e1
     
    34193396    sal bl, CL                                ; d2 e3
    34203397    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3421     je short 01bf6h                           ; 74 cf
     3398    je short 01bech                           ; 74 cf
    34223399    xor al, bl                                ; 30 d8
    3423     jmp short 01bf8h                          ; eb cd
     3400    jmp short 01beeh                          ; eb cd
    34243401    movzx bx, al                              ; 0f b6 d8
    34253402    mov dx, word [bp-006h]                    ; 8b 56 fa
    34263403    mov ax, 0b800h                            ; b8 00 b8
    3427     call 02f18h                               ; e8 e1 12
     3404    call 02f02h                               ; e8 d5 12
    34283405    inc word [bp-006h]                        ; ff 46 fa
    3429     jmp short 01bdbh                          ; eb 9f
     3406    jmp short 01bd1h                          ; eb 9f
    34303407    leave                                     ; c9
    34313408    pop di                                    ; 5f
    34323409    pop si                                    ; 5e
    34333410    retn 00004h                               ; c2 04 00
    3434 write_gfx_char_lin_:                         ; 0xc1c42 LB 0x8c
     3411write_gfx_char_lin_:                         ; 0xc1c38 LB 0x8c
    34353412    push si                                   ; 56
    34363413    push di                                   ; 57
    34373414    enter 00008h, 000h                        ; c8 08 00 00
    34383415    mov byte [bp-002h], dl                    ; 88 56 fe
    3439     mov di, 055afh                            ; bf af 55
     3416    mov di, 055b2h                            ; bf b2 55
    34403417    movzx dx, cl                              ; 0f b6 d1
    34413418    movzx cx, byte [bp+008h]                  ; 0f b6 4e 08
     
    34493426    sal si, 003h                              ; c1 e6 03
    34503427    xor cl, cl                                ; 30 c9
    3451     jmp short 01cabh                          ; eb 3b
     3428    jmp short 01ca1h                          ; eb 3b
    34523429    cmp ch, 008h                              ; 80 fd 08
    3453     jnc short 01ca4h                          ; 73 2f
     3430    jnc short 01c9ah                          ; 73 2f
    34543431    xor al, al                                ; 30 c0
    34553432    movzx dx, cl                              ; 0f b6 d1
     
    34603437    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    34613438    test dx, bx                               ; 85 da
    3462     je short 01c8eh                           ; 74 03
     3439    je short 01c84h                           ; 74 03
    34633440    mov al, byte [bp-002h]                    ; 8a 46 fe
    34643441    movzx bx, al                              ; 0f b6 d8
     
    34663443    add dx, word [bp-006h]                    ; 03 56 fa
    34673444    mov ax, 0a000h                            ; b8 00 a0
    3468     call 02f18h                               ; e8 7b 12
     3445    call 02f02h                               ; e8 6f 12
    34693446    shr byte [bp-004h], 1                     ; d0 6e fc
    34703447    db  0feh, 0c5h
    34713448    ; inc ch                                    ; fe c5
    3472     jmp short 01c70h                          ; eb cc
     3449    jmp short 01c66h                          ; eb cc
    34733450    db  0feh, 0c1h
    34743451    ; inc cl                                    ; fe c1
    34753452    cmp cl, 008h                              ; 80 f9 08
    3476     jnc short 01cc8h                          ; 73 1d
     3453    jnc short 01cbeh                          ; 73 1d
    34773454    movzx bx, cl                              ; 0f b6 d9
    34783455    movzx dx, byte [bp+008h]                  ; 0f b6 56 08
     
    34843461    mov byte [bp-004h], 080h                  ; c6 46 fc 80
    34853462    xor ch, ch                                ; 30 ed
    3486     jmp short 01c75h                          ; eb ad
     3463    jmp short 01c6bh                          ; eb ad
    34873464    leave                                     ; c9
    34883465    pop di                                    ; 5f
    34893466    pop si                                    ; 5e
    34903467    retn 00002h                               ; c2 02 00
    3491 biosfn_write_char_attr_:                     ; 0xc1cce LB 0x163
     3468biosfn_write_char_attr_:                     ; 0xc1cc4 LB 0x163
    34923469    push si                                   ; 56
    34933470    push di                                   ; 57
     
    34993476    mov dx, strict word 00049h                ; ba 49 00
    35003477    mov ax, strict word 00040h                ; b8 40 00
    3501     call 02f0ah                               ; e8 22 12
     3478    call 02ef4h                               ; e8 16 12
    35023479    xor ah, ah                                ; 30 e4
    3503     call 02ee3h                               ; e8 f6 11
     3480    call 02ecdh                               ; e8 ea 11
    35043481    mov cl, al                                ; 88 c1
    35053482    mov byte [bp-002h], al                    ; 88 46 fe
    35063483    cmp AL, strict byte 0ffh                  ; 3c ff
    3507     je near 01e2dh                            ; 0f 84 35 01
     3484    je near 01e23h                            ; 0f 84 35 01
    35083485    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    35093486    lea bx, [bp-018h]                         ; 8d 5e e8
    35103487    lea dx, [bp-016h]                         ; 8d 56 ea
    3511     call 00a8ch                               ; e8 87 ed
     3488    call 00a8ch                               ; e8 91 ed
    35123489    mov al, byte [bp-018h]                    ; 8a 46 e8
    35133490    mov byte [bp-008h], al                    ; 88 46 f8
     
    35183495    mov dx, 00084h                            ; ba 84 00
    35193496    mov ax, strict word 00040h                ; b8 40 00
    3520     call 02f0ah                               ; e8 eb 11
     3497    call 02ef4h                               ; e8 df 11
    35213498    xor ah, ah                                ; 30 e4
    35223499    inc ax                                    ; 40
     
    35243501    mov dx, strict word 0004ah                ; ba 4a 00
    35253502    mov ax, strict word 00040h                ; b8 40 00
    3526     call 02f26h                               ; e8 f8 11
     3503    call 02f10h                               ; e8 ec 11
    35273504    mov word [bp-012h], ax                    ; 89 46 ee
    35283505    movzx bx, cl                              ; 0f b6 d9
    35293506    mov di, bx                                ; 89 df
    35303507    sal di, 003h                              ; c1 e7 03
    3531     cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
    3532     jne short 01d87h                          ; 75 47
     3508    cmp byte [di+04833h], 000h                ; 80 bd 33 48 00
     3509    jne short 01d7dh                          ; 75 47
    35333510    mov bx, word [bp-014h]                    ; 8b 5e ec
    35343511    imul bx, ax                               ; 0f af d8
     
    35503527    mov word [bp-016h], ax                    ; 89 46 ea
    35513528    mov ax, word [bp-016h]                    ; 8b 46 ea
    3552     mov es, [di+04833h]                       ; 8e 85 33 48
     3529    mov es, [di+04836h]                       ; 8e 85 36 48
    35533530    mov cx, si                                ; 89 f1
    35543531    mov di, dx                                ; 89 d7
    35553532    cld                                       ; fc
    3556     jcxz 01d84h                               ; e3 02
     3533    jcxz 01d7ah                               ; e3 02
    35573534    rep stosw                                 ; f3 ab
    3558     jmp near 01e2dh                           ; e9 a6 00
    3559     movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     3535    jmp near 01e23h                           ; e9 a6 00
     3536    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
    35603537    sal bx, 006h                              ; c1 e3 06
    3561     mov al, byte [bx+048c5h]                  ; 8a 87 c5 48
     3538    mov al, byte [bx+048c8h]                  ; 8a 87 c8 48
    35623539    mov byte [bp-004h], al                    ; 88 46 fc
    3563     mov al, byte [di+04832h]                  ; 8a 85 32 48
     3540    mov al, byte [di+04835h]                  ; 8a 85 35 48
    35643541    mov byte [bp-010h], al                    ; 88 46 f0
    35653542    dec si                                    ; 4e
    35663543    cmp si, strict byte 0ffffh                ; 83 fe ff
    3567     je near 01e2dh                            ; 0f 84 88 00
     3544    je near 01e23h                            ; 0f 84 88 00
    35683545    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    35693546    cmp ax, word [bp-012h]                    ; 3b 46 ee
    3570     jnc near 01e2dh                           ; 0f 83 7d 00
     3547    jnc near 01e23h                           ; 0f 83 7d 00
    35713548    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    35723549    sal bx, 003h                              ; c1 e3 03
    3573     mov al, byte [bx+04831h]                  ; 8a 87 31 48
     3550    mov al, byte [bx+04834h]                  ; 8a 87 34 48
    35743551    cmp AL, strict byte 003h                  ; 3c 03
    3575     jc short 01dcbh                           ; 72 0c
    3576     jbe short 01dd1h                          ; 76 10
     3552    jc short 01dc1h                           ; 72 0c
     3553    jbe short 01dc7h                          ; 76 10
    35773554    cmp AL, strict byte 005h                  ; 3c 05
    3578     je short 01e0fh                           ; 74 4a
     3555    je short 01e05h                           ; 74 4a
    35793556    cmp AL, strict byte 004h                  ; 3c 04
    3580     je short 01dd1h                           ; 74 08
    3581     jmp short 01e27h                          ; eb 5c
     3557    je short 01dc7h                           ; 74 08
     3558    jmp short 01e1dh                          ; eb 5c
    35823559    cmp AL, strict byte 002h                  ; 3c 02
    3583     je short 01df0h                           ; 74 21
    3584     jmp short 01e27h                          ; eb 56
     3560    je short 01de6h                           ; 74 21
     3561    jmp short 01e1dh                          ; eb 56
    35853562    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    35863563    push ax                                   ; 50
     
    35913568    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    35923569    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3593     call 01a43h                               ; e8 55 fc
    3594     jmp short 01e27h                          ; eb 37
     3570    call 01a39h                               ; e8 55 fc
     3571    jmp short 01e1dh                          ; eb 37
    35953572    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
    35963573    push ax                                   ; 50
     
    36013578    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    36023579    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3603     call 01b29h                               ; e8 1c fd
    3604     jmp short 01e27h                          ; eb 18
     3580    call 01b1fh                               ; e8 1c fd
     3581    jmp short 01e1dh                          ; eb 18
    36053582    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
    36063583    push ax                                   ; 50
     
    36093586    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    36103587    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3611     call 01c42h                               ; e8 1b fe
     3588    call 01c38h                               ; e8 1b fe
    36123589    inc byte [bp-008h]                        ; fe 46 f8
    3613     jmp near 01d9dh                           ; e9 70 ff
     3590    jmp near 01d93h                           ; e9 70 ff
    36143591    leave                                     ; c9
    36153592    pop di                                    ; 5f
    36163593    pop si                                    ; 5e
    36173594    retn                                      ; c3
    3618 biosfn_write_char_only_:                     ; 0xc1e31 LB 0x16a
     3595biosfn_write_char_only_:                     ; 0xc1e27 LB 0x16a
    36193596    push si                                   ; 56
    36203597    push di                                   ; 57
     
    36263603    mov dx, strict word 00049h                ; ba 49 00
    36273604    mov ax, strict word 00040h                ; b8 40 00
    3628     call 02f0ah                               ; e8 bf 10
     3605    call 02ef4h                               ; e8 b3 10
    36293606    xor ah, ah                                ; 30 e4
    3630     call 02ee3h                               ; e8 93 10
     3607    call 02ecdh                               ; e8 87 10
    36313608    mov cl, al                                ; 88 c1
    36323609    mov byte [bp-00ah], al                    ; 88 46 f6
    36333610    cmp AL, strict byte 0ffh                  ; 3c ff
    3634     je near 01f97h                            ; 0f 84 3c 01
     3611    je near 01f8dh                            ; 0f 84 3c 01
    36353612    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    36363613    lea bx, [bp-018h]                         ; 8d 5e e8
    36373614    lea dx, [bp-016h]                         ; 8d 56 ea
    3638     call 00a8ch                               ; e8 24 ec
     3615    call 00a8ch                               ; e8 2e ec
    36393616    mov al, byte [bp-018h]                    ; 8a 46 e8
    36403617    mov byte [bp-008h], al                    ; 88 46 f8
     
    36453622    mov dx, 00084h                            ; ba 84 00
    36463623    mov ax, strict word 00040h                ; b8 40 00
    3647     call 02f0ah                               ; e8 88 10
     3624    call 02ef4h                               ; e8 7c 10
    36483625    xor ah, ah                                ; 30 e4
    36493626    inc ax                                    ; 40
     
    36513628    mov dx, strict word 0004ah                ; ba 4a 00
    36523629    mov ax, strict word 00040h                ; b8 40 00
    3653     call 02f26h                               ; e8 95 10
     3630    call 02f10h                               ; e8 89 10
    36543631    mov word [bp-012h], ax                    ; 89 46 ee
    36553632    movzx di, cl                              ; 0f b6 f9
    36563633    mov bx, di                                ; 89 fb
    36573634    sal bx, 003h                              ; c1 e3 03
    3658     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    3659     jne short 01eedh                          ; 75 4a
     3635    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
     3636    jne short 01ee3h                          ; 75 4a
    36603637    mov dx, word [bp-014h]                    ; 8b 56 ec
    36613638    imul dx, ax                               ; 0f af d0
     
    36743651    dec si                                    ; 4e
    36753652    cmp si, strict byte 0ffffh                ; 83 fe ff
    3676     je near 01f97h                            ; 0f 84 c6 00
     3653    je near 01f8dh                            ; 0f 84 c6 00
    36773654    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    36783655    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    36793656    sal bx, 003h                              ; c1 e3 03
    3680     mov di, word [bx+04833h]                  ; 8b bf 33 48
     3657    mov di, word [bx+04836h]                  ; 8b bf 36 48
    36813658    mov bx, ax                                ; 89 c3
    36823659    mov dx, cx                                ; 89 ca
    36833660    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
    3688     movzx di, byte [di+048afh]                ; 0f b6 bd af 48
     3661    call 02f02h                               ; e8 23 10
     3662    inc cx                                    ; 41
     3663    inc cx                                    ; 41
     3664    jmp short 01ebfh                          ; eb dc
     3665    movzx di, byte [di+048b2h]                ; 0f b6 bd b2 48
    36893666    sal di, 006h                              ; c1 e7 06
    3690     mov al, byte [di+048c5h]                  ; 8a 85 c5 48
     3667    mov al, byte [di+048c8h]                  ; 8a 85 c8 48
    36913668    mov byte [bp-006h], al                    ; 88 46 fa
    3692     mov al, byte [bx+04832h]                  ; 8a 87 32 48
     3669    mov al, byte [bx+04835h]                  ; 8a 87 35 48
    36933670    mov byte [bp-004h], al                    ; 88 46 fc
    36943671    dec si                                    ; 4e
    36953672    cmp si, strict byte 0ffffh                ; 83 fe ff
    3696     je near 01f97h                            ; 0f 84 8c 00
     3673    je near 01f8dh                            ; 0f 84 8c 00
    36973674    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    36983675    cmp ax, word [bp-012h]                    ; 3b 46 ee
    3699     jnc near 01f97h                           ; 0f 83 81 00
     3676    jnc near 01f8dh                           ; 0f 83 81 00
    37003677    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    37013678    sal bx, 003h                              ; c1 e3 03
    3702     mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
     3679    mov bl, byte [bx+04834h]                  ; 8a 9f 34 48
    37033680    cmp bl, 003h                              ; 80 fb 03
    3704     jc short 01f34h                           ; 72 0e
    3705     jbe short 01f3bh                          ; 76 13
     3681    jc short 01f2ah                           ; 72 0e
     3682    jbe short 01f31h                          ; 76 13
    37063683    cmp bl, 005h                              ; 80 fb 05
    3707     je short 01f79h                           ; 74 4c
     3684    je short 01f6fh                           ; 74 4c
    37083685    cmp bl, 004h                              ; 80 fb 04
    3709     je short 01f3bh                           ; 74 09
    3710     jmp short 01f91h                          ; eb 5d
     3686    je short 01f31h                           ; 74 09
     3687    jmp short 01f87h                          ; eb 5d
    37113688    cmp bl, 002h                              ; 80 fb 02
    3712     je short 01f5ah                           ; 74 21
    3713     jmp short 01f91h                          ; eb 56
     3689    je short 01f50h                           ; 74 21
     3690    jmp short 01f87h                          ; eb 56
    37143691    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    37153692    push ax                                   ; 50
     
    37203697    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    37213698    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    3722     call 01a43h                               ; e8 eb fa
    3723     jmp short 01f91h                          ; eb 37
     3699    call 01a39h                               ; e8 eb fa
     3700    jmp short 01f87h                          ; eb 37
    37243701    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    37253702    push ax                                   ; 50
     
    37303707    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    37313708    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    3732     call 01b29h                               ; e8 b2 fb
    3733     jmp short 01f91h                          ; eb 18
     3709    call 01b1fh                               ; e8 b2 fb
     3710    jmp short 01f87h                          ; eb 18
    37343711    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
    37353712    push ax                                   ; 50
     
    37383715    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
    37393716    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    3740     call 01c42h                               ; e8 b1 fc
     3717    call 01c38h                               ; e8 b1 fc
    37413718    inc byte [bp-008h]                        ; fe 46 f8
    3742     jmp near 01f03h                           ; e9 6c ff
     3719    jmp near 01ef9h                           ; e9 6c ff
    37433720    leave                                     ; c9
    37443721    pop di                                    ; 5f
    37453722    pop si                                    ; 5e
    37463723    retn                                      ; c3
    3747 biosfn_write_pixel_:                         ; 0xc1f9b LB 0x168
     3724biosfn_write_pixel_:                         ; 0xc1f91 LB 0x168
    37483725    push si                                   ; 56
    37493726    enter 00008h, 000h                        ; c8 08 00 00
     
    37523729    mov dx, strict word 00049h                ; ba 49 00
    37533730    mov ax, strict word 00040h                ; b8 40 00
    3754     call 02f0ah                               ; e8 5b 0f
     3731    call 02ef4h                               ; e8 4f 0f
    37553732    xor ah, ah                                ; 30 e4
    3756     call 02ee3h                               ; e8 2f 0f
     3733    call 02ecdh                               ; e8 23 0f
    37573734    mov byte [bp-002h], al                    ; 88 46 fe
    37583735    cmp AL, strict byte 0ffh                  ; 3c ff
    3759     je near 02100h                            ; 0f 84 43 01
     3736    je near 020f6h                            ; 0f 84 43 01
    37603737    movzx bx, al                              ; 0f b6 d8
    37613738    sal bx, 003h                              ; c1 e3 03
    3762     cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    3763     je near 02100h                            ; 0f 84 34 01
    3764     mov al, byte [bx+04831h]                  ; 8a 87 31 48
     3739    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
     3740    je near 020f6h                            ; 0f 84 34 01
     3741    mov al, byte [bx+04834h]                  ; 8a 87 34 48
    37653742    cmp AL, strict byte 003h                  ; 3c 03
    3766     jc short 01fe3h                           ; 72 0f
    3767     jbe short 01feah                          ; 76 14
     3743    jc short 01fd9h                           ; 72 0f
     3744    jbe short 01fe0h                          ; 76 14
    37683745    cmp AL, strict byte 005h                  ; 3c 05
    3769     je near 020deh                            ; 0f 84 02 01
     3746    je near 020d4h                            ; 0f 84 02 01
    37703747    cmp AL, strict byte 004h                  ; 3c 04
    3771     je short 01feah                           ; 74 0a
     3748    je short 01fe0h                           ; 74 0a
    37723749    leave                                     ; c9
    37733750    pop si                                    ; 5e
    37743751    retn                                      ; c3
    37753752    cmp AL, strict byte 002h                  ; 3c 02
    3776     je short 0204fh                           ; 74 68
     3753    je short 02045h                           ; 74 68
    37773754    leave                                     ; c9
    37783755    pop si                                    ; 5e
     
    37803757    mov dx, strict word 0004ah                ; ba 4a 00
    37813758    mov ax, strict word 00040h                ; b8 40 00
    3782     call 02f26h                               ; e8 33 0f
     3759    call 02f10h                               ; e8 27 0f
    37833760    imul ax, cx                               ; 0f af c1
    37843761    mov bx, word [bp-008h]                    ; 8b 5e f8
     
    37993776    mov dx, bx                                ; 89 da
    38003777    mov ax, 0a000h                            ; b8 00 a0
    3801     call 02f0ah                               ; e8 e7 0e
     3778    call 02ef4h                               ; e8 db 0e
    38023779    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3803     je short 02030h                           ; 74 07
     3780    je short 02026h                           ; 74 07
    38043781    mov ax, 01803h                            ; b8 03 18
    38053782    mov dx, 003ceh                            ; ba ce 03
     
    38083785    mov dx, word [bp-006h]                    ; 8b 56 fa
    38093786    mov ax, 0a000h                            ; b8 00 a0
    3810     call 02f18h                               ; e8 db 0e
     3787    call 02f02h                               ; e8 cf 0e
    38113788    mov ax, 0ff08h                            ; b8 08 ff
    38123789    mov dx, 003ceh                            ; ba ce 03
     
    38223799    shr ax, 1                                 ; d1 e8
    38233800    imul ax, ax, strict byte 00050h           ; 6b c0 50
    3824     cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
    3825     jne short 02065h                          ; 75 08
     3801    cmp byte [bx+04835h], 002h                ; 80 bf 35 48 02
     3802    jne short 0205bh                          ; 75 08
    38263803    mov bx, word [bp-008h]                    ; 8b 5e f8
    38273804    shr bx, 002h                              ; c1 eb 02
    3828     jmp short 0206bh                          ; eb 06
     3805    jmp short 02061h                          ; eb 06
    38293806    mov bx, word [bp-008h]                    ; 8b 5e f8
    38303807    shr bx, 003h                              ; c1 eb 03
     
    38323809    mov word [bp-006h], bx                    ; 89 5e fa
    38333810    test cl, 001h                             ; f6 c1 01
    3834     je short 02079h                           ; 74 04
     3811    je short 0206fh                           ; 74 04
    38353812    add byte [bp-005h], 020h                  ; 80 46 fb 20
    38363813    mov dx, word [bp-006h]                    ; 8b 56 fa
    38373814    mov ax, 0b800h                            ; b8 00 b8
    3838     call 02f0ah                               ; e8 88 0e
     3815    call 02ef4h                               ; e8 7c 0e
    38393816    mov bl, al                                ; 88 c3
    38403817    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
    38413818    sal si, 003h                              ; c1 e6 03
    3842     cmp byte [si+04832h], 002h                ; 80 bc 32 48 02
    3843     jne short 020abh                          ; 75 19
     3819    cmp byte [si+04835h], 002h                ; 80 bc 35 48 02
     3820    jne short 020a1h                          ; 75 19
    38443821    mov al, byte [bp-008h]                    ; 8a 46 f8
    38453822    and AL, strict byte 003h                  ; 24 03
     
    38523829    sal bh, CL                                ; d2 e7
    38533830    mov AL, strict byte 003h                  ; b0 03
    3854     jmp short 020beh                          ; eb 13
     3831    jmp short 020b4h                          ; eb 13
    38553832    mov al, byte [bp-008h]                    ; 8a 46 f8
    38563833    and AL, strict byte 007h                  ; 24 07
     
    38633840    sal al, CL                                ; d2 e0
    38643841    test byte [bp-004h], 080h                 ; f6 46 fc 80
    3865     je short 020cah                           ; 74 04
     3842    je short 020c0h                           ; 74 04
    38663843    xor bl, bh                                ; 30 fb
    3867     jmp short 020d0h                          ; eb 06
     3844    jmp short 020c6h                          ; eb 06
    38683845    not al                                    ; f6 d0
    38693846    and bl, al                                ; 20 c3
     
    38723849    mov dx, word [bp-006h]                    ; 8b 56 fa
    38733850    mov ax, 0b800h                            ; b8 00 b8
    3874     call 02f18h                               ; e8 3d 0e
     3851    call 02f02h                               ; e8 31 0e
    38753852    leave                                     ; c9
    38763853    pop si                                    ; 5e
     
    38783855    mov dx, strict word 0004ah                ; ba 4a 00
    38793856    mov ax, strict word 00040h                ; b8 40 00
    3880     call 02f26h                               ; e8 3f 0e
     3857    call 02f10h                               ; e8 33 0e
    38813858    sal ax, 003h                              ; c1 e0 03
    38823859    imul cx, ax                               ; 0f af c8
     
    38873864    mov dx, ax                                ; 89 c2
    38883865    mov ax, 0a000h                            ; b8 00 a0
    3889     jmp short 020d8h                          ; eb d8
     3866    jmp short 020ceh                          ; eb d8
    38903867    leave                                     ; c9
    38913868    pop si                                    ; 5e
    38923869    retn                                      ; c3
    3893 biosfn_write_teletype_:                      ; 0xc2103 LB 0x27f
     3870biosfn_write_teletype_:                      ; 0xc20f9 LB 0x27f
    38943871    push si                                   ; 56
    38953872    enter 00016h, 000h                        ; c8 16 00 00
     
    38993876    mov byte [bp-00eh], cl                    ; 88 4e f2
    39003877    cmp dl, 0ffh                              ; 80 fa ff
    3901     jne short 02125h                          ; 75 0c
     3878    jne short 0211bh                          ; 75 0c
    39023879    mov dx, strict word 00062h                ; ba 62 00
    39033880    mov ax, strict word 00040h                ; b8 40 00
    3904     call 02f0ah                               ; e8 e8 0d
     3881    call 02ef4h                               ; e8 dc 0d
    39053882    mov byte [bp-002h], al                    ; 88 46 fe
    39063883    mov dx, strict word 00049h                ; ba 49 00
    39073884    mov ax, strict word 00040h                ; b8 40 00
    3908     call 02f0ah                               ; e8 dc 0d
     3885    call 02ef4h                               ; e8 d0 0d
    39093886    xor ah, ah                                ; 30 e4
    3910     call 02ee3h                               ; e8 b0 0d
     3887    call 02ecdh                               ; e8 a4 0d
    39113888    mov byte [bp-00ch], al                    ; 88 46 f4
    39123889    cmp AL, strict byte 0ffh                  ; 3c ff
    3913     je near 0237fh                            ; 0f 84 43 02
     3890    je near 02375h                            ; 0f 84 43 02
    39143891    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    39153892    lea bx, [bp-016h]                         ; 8d 5e ea
    39163893    lea dx, [bp-014h]                         ; 8d 56 ec
    3917     call 00a8ch                               ; e8 43 e9
     3894    call 00a8ch                               ; e8 4d e9
    39183895    mov al, byte [bp-016h]                    ; 8a 46 ea
    39193896    mov byte [bp-006h], al                    ; 88 46 fa
     
    39243901    mov dx, 00084h                            ; ba 84 00
    39253902    mov ax, strict word 00040h                ; b8 40 00
    3926     call 02f0ah                               ; e8 a7 0d
     3903    call 02ef4h                               ; e8 9b 0d
    39273904    xor ah, ah                                ; 30 e4
    39283905    inc ax                                    ; 40
     
    39303907    mov dx, strict word 0004ah                ; ba 4a 00
    39313908    mov ax, strict word 00040h                ; b8 40 00
    3932     call 02f26h                               ; e8 b4 0d
     3909    call 02f10h                               ; e8 a8 0d
    39333910    mov word [bp-010h], ax                    ; 89 46 f0
    39343911    mov al, byte [bp-00ah]                    ; 8a 46 f6
    39353912    cmp AL, strict byte 009h                  ; 3c 09
    3936     jc short 02188h                           ; 72 0c
    3937     jbe short 021afh                          ; 76 31
     3913    jc short 0217eh                           ; 72 0c
     3914    jbe short 021a5h                          ; 76 31
    39383915    cmp AL, strict byte 00dh                  ; 3c 0d
    3939     je short 021a2h                           ; 74 20
     3916    je short 02198h                           ; 74 20
    39403917    cmp AL, strict byte 00ah                  ; 3c 0a
    3941     je short 021a9h                           ; 74 23
    3942     jmp short 021f0h                          ; eb 68
     3918    je short 0219fh                           ; 74 23
     3919    jmp short 021e6h                          ; eb 68
    39433920    cmp AL, strict byte 008h                  ; 3c 08
    3944     je short 02194h                           ; 74 08
     3921    je short 0218ah                           ; 74 08
    39453922    cmp AL, strict byte 007h                  ; 3c 07
    3946     je near 022cch                            ; 0f 84 3a 01
    3947     jmp short 021f0h                          ; eb 5c
     3923    je near 022c2h                            ; 0f 84 3a 01
     3924    jmp short 021e6h                          ; eb 5c
    39483925    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    3949     jbe near 022cch                           ; 0f 86 30 01
     3926    jbe near 022c2h                           ; 0f 86 30 01
    39503927    dec byte [bp-006h]                        ; fe 4e fa
    3951     jmp near 022cch                           ; e9 2a 01
     3928    jmp near 022c2h                           ; e9 2a 01
    39523929    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    3953     jmp near 022cch                           ; e9 23 01
     3930    jmp near 022c2h                           ; e9 23 01
    39543931    inc byte [bp-008h]                        ; fe 46 f8
    3955     jmp near 022cch                           ; e9 1d 01
     3932    jmp near 022c2h                           ; e9 1d 01
    39563933    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    39573934    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     
    39593936    mov dx, si                                ; 89 f2
    39603937    mov ax, strict word 00020h                ; b8 20 00
    3961     call 02103h                               ; e8 40 ff
     3938    call 020f9h                               ; e8 40 ff
    39623939    lea bx, [bp-016h]                         ; 8d 5e ea
    39633940    lea dx, [bp-014h]                         ; 8d 56 ec
    39643941    mov ax, si                                ; 89 f0
    3965     call 00a8ch                               ; e8 be e8
     3942    call 00a8ch                               ; e8 c8 e8
    39663943    mov al, byte [bp-016h]                    ; 8a 46 ea
    39673944    mov byte [bp-006h], al                    ; 88 46 fa
     
    39753952    idiv bx                                   ; f7 fb
    39763953    test dx, dx                               ; 85 d2
    3977     je short 021afh                           ; 74 c2
    3978     jmp near 022cch                           ; e9 dc 00
     3954    je short 021a5h                           ; 74 c2
     3955    jmp near 022c2h                           ; e9 dc 00
    39793956    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    39803957    mov si, bx                                ; 89 de
    39813958    sal si, 003h                              ; c1 e6 03
    3982     cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    3983     jne short 0224bh                          ; 75 4b
     3959    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
     3960    jne short 02241h                          ; 75 4b
    39843961    mov ax, word [bp-010h]                    ; 8b 46 f0
    39853962    imul ax, word [bp-012h]                   ; 0f af 46 ee
     
    39963973    add cx, dx                                ; 01 d1
    39973974    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
     3975    mov ax, word [si+04836h]                  ; 8b 84 36 48
     3976    mov dx, cx                                ; 89 ca
     3977    call 02f02h                               ; e8 da 0c
    40013978    cmp byte [bp-00eh], 003h                  ; 80 7e f2 03
    4002     jne near 022c9h                           ; 0f 85 8f 00
     3979    jne near 022bfh                           ; 0f 85 8f 00
    40033980    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    40043981    mov dx, cx                                ; 89 ca
    40053982    inc dx                                    ; 42
    4006     mov ax, word [si+04833h]                  ; 8b 84 33 48
    4007     call 02f18h                               ; e8 d0 0c
    4008     jmp near 022c9h                           ; e9 7e 00
    4009     movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     3983    mov ax, word [si+04836h]                  ; 8b 84 36 48
     3984    call 02f02h                               ; e8 c4 0c
     3985    jmp near 022bfh                           ; e9 7e 00
     3986    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
    40103987    sal bx, 006h                              ; c1 e3 06
    4011     mov ah, byte [bx+048c5h]                  ; 8a a7 c5 48
    4012     mov dl, byte [si+04832h]                  ; 8a 94 32 48
    4013     mov al, byte [si+04831h]                  ; 8a 84 31 48
     3988    mov ah, byte [bx+048c8h]                  ; 8a a7 c8 48
     3989    mov dl, byte [si+04835h]                  ; 8a 94 35 48
     3990    mov al, byte [si+04834h]                  ; 8a 84 34 48
    40143991    cmp AL, strict byte 003h                  ; 3c 03
    4015     jc short 0226fh                           ; 72 0c
    4016     jbe short 02275h                          ; 76 10
     3992    jc short 02265h                           ; 72 0c
     3993    jbe short 0226bh                          ; 76 10
    40173994    cmp AL, strict byte 005h                  ; 3c 05
    4018     je short 022b1h                           ; 74 48
     3995    je short 022a7h                           ; 74 48
    40193996    cmp AL, strict byte 004h                  ; 3c 04
    4020     je short 02275h                           ; 74 08
    4021     jmp short 022c9h                          ; eb 5a
     3997    je short 0226bh                           ; 74 08
     3998    jmp short 022bfh                          ; eb 5a
    40223999    cmp AL, strict byte 002h                  ; 3c 02
    4023     je short 02293h                           ; 74 20
    4024     jmp short 022c9h                          ; eb 54
     4000    je short 02289h                           ; 74 20
     4001    jmp short 022bfh                          ; eb 54
    40254002    movzx ax, ah                              ; 0f b6 c4
    40264003    push ax                                   ; 50
     
    40314008    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    40324009    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    4033     call 01a43h                               ; e8 b2 f7
    4034     jmp short 022c9h                          ; eb 36
     4010    call 01a39h                               ; e8 b2 f7
     4011    jmp short 022bfh                          ; eb 36
    40354012    movzx ax, dl                              ; 0f b6 c2
    40364013    push ax                                   ; 50
     
    40414018    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    40424019    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    4043     call 01b29h                               ; e8 7a f8
    4044     jmp short 022c9h                          ; eb 18
     4020    call 01b1fh                               ; e8 7a f8
     4021    jmp short 022bfh                          ; eb 18
    40454022    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
    40464023    push ax                                   ; 50
     
    40494026    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    40504027    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    4051     call 01c42h                               ; e8 79 f9
     4028    call 01c38h                               ; e8 79 f9
    40524029    inc byte [bp-006h]                        ; fe 46 fa
    40534030    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    40544031    cmp ax, word [bp-010h]                    ; 3b 46 f0
    4055     jne short 022dch                          ; 75 07
     4032    jne short 022d2h                          ; 75 07
    40564033    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    40574034    inc byte [bp-008h]                        ; fe 46 f8
    40584035    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    40594036    cmp ax, word [bp-012h]                    ; 3b 46 ee
    4060     jne near 02363h                           ; 0f 85 7c 00
     4037    jne near 02359h                           ; 0f 85 7c 00
    40614038    movzx si, byte [bp-00ch]                  ; 0f b6 76 f4
    40624039    sal si, 003h                              ; c1 e6 03
     
    40674044    db  0feh, 0cfh
    40684045    ; dec bh                                    ; fe cf
    4069     cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    4070     jne short 02345h                          ; 75 46
     4046    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
     4047    jne short 0233bh                          ; 75 46
    40714048    mov ax, word [bp-010h]                    ; 8b 46 f0
    40724049    imul ax, word [bp-012h]                   ; 0f af 46 ee
     
    40844061    add dx, cx                                ; 01 ca
    40854062    inc dx                                    ; 42
    4086     mov ax, word [si+04833h]                  ; 8b 84 33 48
    4087     call 02f0ah                               ; e8 dd 0b
     4063    mov ax, word [si+04836h]                  ; 8b 84 36 48
     4064    call 02ef4h                               ; e8 d1 0b
    40884065    push strict byte 00001h                   ; 6a 01
    40894066    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     
    40964073    xor cx, cx                                ; 31 c9
    40974074    xor bx, bx                                ; 31 db
    4098     jmp short 0235ah                          ; eb 15
     4075    jmp short 02350h                          ; eb 15
    40994076    push strict byte 00001h                   ; 6a 01
    41004077    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     
    41084085    xor dx, dx                                ; 31 d2
    41094086    mov ax, strict word 00001h                ; b8 01 00
    4110     call 01542h                               ; e8 e2 f1
     4087    call 01538h                               ; e8 e2 f1
    41114088    dec byte [bp-008h]                        ; fe 4e f8
    41124089    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     
    41174094    mov dx, word [bp-016h]                    ; 8b 56 ea
    41184095    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    4119     call 00e4bh                               ; e8 cc ea
     4096    call 00e4bh                               ; e8 d6 ea
    41204097    leave                                     ; c9
    41214098    pop si                                    ; 5e
    41224099    retn                                      ; c3
    4123 get_font_access_:                            ; 0xc2382 LB 0x29
     4100get_font_access_:                            ; 0xc2378 LB 0x29
    41244101    push dx                                   ; 52
    41254102    push bp                                   ; 55
     
    41444121    pop dx                                    ; 5a
    41454122    retn                                      ; c3
    4146 release_font_access_:                        ; 0xc23ab LB 0x39
     4123release_font_access_:                        ; 0xc23a1 LB 0x39
    41474124    push dx                                   ; 52
    41484125    push bp                                   ; 55
     
    41754152    pop dx                                    ; 5a
    41764153    retn                                      ; c3
    4177 set_scan_lines_:                             ; 0xc23e4 LB 0xbc
     4154set_scan_lines_:                             ; 0xc23da LB 0xbc
    41784155    push bx                                   ; 53
    41794156    push cx                                   ; 51
     
    41864163    mov dx, strict word 00063h                ; ba 63 00
    41874164    mov ax, strict word 00040h                ; b8 40 00
    4188     call 02f26h                               ; e8 2f 0b
     4165    call 02f10h                               ; e8 23 0b
    41894166    mov dx, ax                                ; 89 c2
    41904167    mov si, ax                                ; 89 c6
     
    42034180    out DX, AL                                ; ee
    42044181    cmp bl, 008h                              ; 80 fb 08
    4205     jne short 0241bh                          ; 75 08
     4182    jne short 02411h                          ; 75 08
    42064183    mov dx, strict word 00007h                ; ba 07 00
    42074184    mov ax, strict word 00006h                ; b8 06 00
    4208     jmp short 02428h                          ; eb 0d
     4185    jmp short 0241eh                          ; eb 0d
    42094186    mov al, bl                                ; 88 d8
    42104187    sub AL, strict byte 003h                  ; 2c 03
     
    42134190    sub AL, strict byte 004h                  ; 2c 04
    42144191    xor ah, ah                                ; 30 e4
    4215     call 00daah                               ; e8 7f e9
     4192    call 00daah                               ; e8 89 e9
    42164193    movzx di, bl                              ; 0f b6 fb
    42174194    mov bx, di                                ; 89 fb
    42184195    mov dx, 00085h                            ; ba 85 00
    42194196    mov ax, strict word 00040h                ; b8 40 00
    4220     call 02f34h                               ; e8 fb 0a
     4197    call 02f1eh                               ; e8 ef 0a
    42214198    mov AL, strict byte 012h                  ; b0 12
    42224199    mov dx, si                                ; 89 f2
     
    42534230    mov dx, 00084h                            ; ba 84 00
    42544231    mov ax, strict word 00040h                ; b8 40 00
    4255     call 02f18h                               ; e8 9b 0a
     4232    call 02f02h                               ; e8 8f 0a
    42564233    mov dx, strict word 0004ah                ; ba 4a 00
    42574234    mov ax, strict word 00040h                ; b8 40 00
    4258     call 02f26h                               ; e8 a0 0a
     4235    call 02f10h                               ; e8 94 0a
    42594236    movzx dx, cl                              ; 0f b6 d1
    42604237    mov bx, ax                                ; 89 c3
     
    42634240    mov dx, strict word 0004ch                ; ba 4c 00
    42644241    mov ax, strict word 00040h                ; b8 40 00
    4265     call 02f34h                               ; e8 9b 0a
     4242    call 02f1eh                               ; e8 8f 0a
    42664243    pop bp                                    ; 5d
    42674244    pop di                                    ; 5f
     
    42714248    pop bx                                    ; 5b
    42724249    retn                                      ; c3
    4273 biosfn_load_text_user_pat_:                  ; 0xc24a0 LB 0x78
     4250biosfn_load_text_user_pat_:                  ; 0xc2496 LB 0x78
    42744251    push si                                   ; 56
    42754252    push di                                   ; 57
     
    42794256    mov word [bp-004h], bx                    ; 89 5e fc
    42804257    mov word [bp-006h], cx                    ; 89 4e fa
    4281     call 02382h                               ; e8 cd fe
     4258    call 02378h                               ; e8 cd fe
    42824259    mov al, byte [bp+00ah]                    ; 8a 46 0a
    42834260    and AL, strict byte 003h                  ; 24 03
     
    42934270    xor bx, bx                                ; 31 db
    42944271    cmp bx, word [bp-006h]                    ; 3b 5e fa
    4295     jnc short 02502h                          ; 73 2b
     4272    jnc short 024f8h                          ; 73 2b
    42964273    movzx cx, byte [bp+00ch]                  ; 0f b6 4e 0c
    42974274    mov si, bx                                ; 89 de
     
    43064283    mov es, ax                                ; 8e c0
    43074284    cld                                       ; fc
    4308     jcxz 024ffh                               ; e3 06
     4285    jcxz 024f5h                               ; e3 06
    43094286    push DS                                   ; 1e
    43104287    mov ds, dx                                ; 8e da
     
    43124289    pop DS                                    ; 1f
    43134290    inc bx                                    ; 43
    4314     jmp short 024d2h                          ; eb d0
    4315     call 023abh                               ; e8 a6 fe
     4291    jmp short 024c8h                          ; eb d0
     4292    call 023a1h                               ; e8 a6 fe
    43164293    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4317     jc short 02512h                           ; 72 07
     4294    jc short 02508h                           ; 72 07
    43184295    movzx ax, byte [bp+00ch]                  ; 0f b6 46 0c
    4319     call 023e4h                               ; e8 d2 fe
     4296    call 023dah                               ; e8 d2 fe
    43204297    leave                                     ; c9
    43214298    pop di                                    ; 5f
    43224299    pop si                                    ; 5e
    43234300    retn 00006h                               ; c2 06 00
    4324 biosfn_load_text_8_14_pat_:                  ; 0xc2518 LB 0x6c
     4301biosfn_load_text_8_14_pat_:                  ; 0xc250e LB 0x6c
    43254302    push bx                                   ; 53
    43264303    push cx                                   ; 51
     
    43294306    enter 00004h, 000h                        ; c8 04 00 00
    43304307    mov byte [bp-002h], al                    ; 88 46 fe
    4331     call 02382h                               ; e8 5c fe
     4308    call 02378h                               ; e8 5c fe
    43324309    mov al, dl                                ; 88 d0
    43334310    and AL, strict byte 003h                  ; 24 03
     
    43424319    mov word [bp-004h], bx                    ; 89 5e fc
    43434320    xor bx, bx                                ; 31 db
    4344     jmp short 02549h                          ; eb 06
     4321    jmp short 0253fh                          ; eb 06
    43454322    cmp bx, 00100h                            ; 81 fb 00 01
    4346     jnc short 0256fh                          ; 73 26
     4323    jnc short 02565h                          ; 73 26
    43474324    imul si, bx, strict byte 0000eh           ; 6b f3 0e
    43484325    mov di, bx                                ; 89 df
    43494326    sal di, 005h                              ; c1 e7 05
    43504327    add di, word [bp-004h]                    ; 03 7e fc
    4351     add si, 05dafh                            ; 81 c6 af 5d
     4328    add si, 05db2h                            ; 81 c6 b2 5d
    43524329    mov cx, strict word 0000eh                ; b9 0e 00
    43534330    mov dx, 0c000h                            ; ba 00 c0
     
    43554332    mov es, ax                                ; 8e c0
    43564333    cld                                       ; fc
    4357     jcxz 0256ch                               ; e3 06
     4334    jcxz 02562h                               ; e3 06
    43584335    push DS                                   ; 1e
    43594336    mov ds, dx                                ; 8e da
     
    43614338    pop DS                                    ; 1f
    43624339    inc bx                                    ; 43
    4363     jmp short 02543h                          ; eb d4
    4364     call 023abh                               ; e8 39 fe
     4340    jmp short 02539h                          ; eb d4
     4341    call 023a1h                               ; e8 39 fe
    43654342    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4366     jc short 0257eh                           ; 72 06
     4343    jc short 02574h                           ; 72 06
    43674344    mov ax, strict word 0000eh                ; b8 0e 00
    4368     call 023e4h                               ; e8 66 fe
     4345    call 023dah                               ; e8 66 fe
    43694346    leave                                     ; c9
    43704347    pop di                                    ; 5f
     
    43734350    pop bx                                    ; 5b
    43744351    retn                                      ; c3
    4375 biosfn_load_text_8_8_pat_:                   ; 0xc2584 LB 0x6e
     4352biosfn_load_text_8_8_pat_:                   ; 0xc257a LB 0x6e
    43764353    push bx                                   ; 53
    43774354    push cx                                   ; 51
     
    43804357    enter 00004h, 000h                        ; c8 04 00 00
    43814358    mov byte [bp-002h], al                    ; 88 46 fe
    4382     call 02382h                               ; e8 f0 fd
     4359    call 02378h                               ; e8 f0 fd
    43834360    mov al, dl                                ; 88 d0
    43844361    and AL, strict byte 003h                  ; 24 03
     
    43934370    mov word [bp-004h], bx                    ; 89 5e fc
    43944371    xor bx, bx                                ; 31 db
    4395     jmp short 025b5h                          ; eb 06
     4372    jmp short 025abh                          ; eb 06
    43964373    cmp bx, 00100h                            ; 81 fb 00 01
    4397     jnc short 025ddh                          ; 73 28
     4374    jnc short 025d3h                          ; 73 28
    43984375    mov si, bx                                ; 89 de
    43994376    sal si, 003h                              ; c1 e6 03
     
    44014378    sal di, 005h                              ; c1 e7 05
    44024379    add di, word [bp-004h]                    ; 03 7e fc
    4403     add si, 055afh                            ; 81 c6 af 55
     4380    add si, 055b2h                            ; 81 c6 b2 55
    44044381    mov cx, strict word 00008h                ; b9 08 00
    44054382    mov dx, 0c000h                            ; ba 00 c0
     
    44074384    mov es, ax                                ; 8e c0
    44084385    cld                                       ; fc
    4409     jcxz 025dah                               ; e3 06
     4386    jcxz 025d0h                               ; e3 06
    44104387    push DS                                   ; 1e
    44114388    mov ds, dx                                ; 8e da
     
    44134390    pop DS                                    ; 1f
    44144391    inc bx                                    ; 43
    4415     jmp short 025afh                          ; eb d2
    4416     call 023abh                               ; e8 cb fd
     4392    jmp short 025a5h                          ; eb d2
     4393    call 023a1h                               ; e8 cb fd
    44174394    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4418     jc short 025ech                           ; 72 06
     4395    jc short 025e2h                           ; 72 06
    44194396    mov ax, strict word 00008h                ; b8 08 00
    4420     call 023e4h                               ; e8 f8 fd
     4397    call 023dah                               ; e8 f8 fd
    44214398    leave                                     ; c9
    44224399    pop di                                    ; 5f
     
    44254402    pop bx                                    ; 5b
    44264403    retn                                      ; c3
    4427 biosfn_load_text_8_16_pat_:                  ; 0xc25f2 LB 0x6e
     4404biosfn_load_text_8_16_pat_:                  ; 0xc25e8 LB 0x6e
    44284405    push bx                                   ; 53
    44294406    push cx                                   ; 51
     
    44324409    enter 00004h, 000h                        ; c8 04 00 00
    44334410    mov byte [bp-002h], al                    ; 88 46 fe
    4434     call 02382h                               ; e8 82 fd
     4411    call 02378h                               ; e8 82 fd
    44354412    mov al, dl                                ; 88 d0
    44364413    and AL, strict byte 003h                  ; 24 03
     
    44454422    mov word [bp-004h], bx                    ; 89 5e fc
    44464423    xor bx, bx                                ; 31 db
    4447     jmp short 02623h                          ; eb 06
     4424    jmp short 02619h                          ; eb 06
    44484425    cmp bx, 00100h                            ; 81 fb 00 01
    4449     jnc short 0264bh                          ; 73 28
     4426    jnc short 02641h                          ; 73 28
    44504427    mov si, bx                                ; 89 de
    44514428    sal si, 004h                              ; c1 e6 04
     
    44534430    sal di, 005h                              ; c1 e7 05
    44544431    add di, word [bp-004h]                    ; 03 7e fc
    4455     add si, 06bafh                            ; 81 c6 af 6b
     4432    add si, 06bb2h                            ; 81 c6 b2 6b
    44564433    mov cx, strict word 00010h                ; b9 10 00
    44574434    mov dx, 0c000h                            ; ba 00 c0
     
    44594436    mov es, ax                                ; 8e c0
    44604437    cld                                       ; fc
    4461     jcxz 02648h                               ; e3 06
     4438    jcxz 0263eh                               ; e3 06
    44624439    push DS                                   ; 1e
    44634440    mov ds, dx                                ; 8e da
     
    44654442    pop DS                                    ; 1f
    44664443    inc bx                                    ; 43
    4467     jmp short 0261dh                          ; eb d2
    4468     call 023abh                               ; e8 5d fd
     4444    jmp short 02613h                          ; eb d2
     4445    call 023a1h                               ; e8 5d fd
    44694446    cmp byte [bp-002h], 010h                  ; 80 7e fe 10
    4470     jc short 0265ah                           ; 72 06
     4447    jc short 02650h                           ; 72 06
    44714448    mov ax, strict word 00010h                ; b8 10 00
    4472     call 023e4h                               ; e8 8a fd
     4449    call 023dah                               ; e8 8a fd
    44734450    leave                                     ; c9
    44744451    pop di                                    ; 5f
     
    44774454    pop bx                                    ; 5b
    44784455    retn                                      ; c3
    4479 biosfn_load_gfx_8_8_chars_:                  ; 0xc2660 LB 0x5
     4456biosfn_load_gfx_8_8_chars_:                  ; 0xc2656 LB 0x5
    44804457    push bp                                   ; 55
    44814458    mov bp, sp                                ; 89 e5
    44824459    pop bp                                    ; 5d
    44834460    retn                                      ; c3
    4484 biosfn_load_gfx_user_chars_:                 ; 0xc2665 LB 0x7
     4461biosfn_load_gfx_user_chars_:                 ; 0xc265b LB 0x7
    44854462    push bp                                   ; 55
    44864463    mov bp, sp                                ; 89 e5
    44874464    pop bp                                    ; 5d
    44884465    retn 00002h                               ; c2 02 00
    4489 biosfn_load_gfx_8_14_chars_:                 ; 0xc266c LB 0x5
     4466biosfn_load_gfx_8_14_chars_:                 ; 0xc2662 LB 0x5
    44904467    push bp                                   ; 55
    44914468    mov bp, sp                                ; 89 e5
    44924469    pop bp                                    ; 5d
    44934470    retn                                      ; c3
    4494 biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2671 LB 0x5
     4471biosfn_load_gfx_8_8_dd_chars_:               ; 0xc2667 LB 0x5
    44954472    push bp                                   ; 55
    44964473    mov bp, sp                                ; 89 e5
    44974474    pop bp                                    ; 5d
    44984475    retn                                      ; c3
    4499 biosfn_load_gfx_8_16_chars_:                 ; 0xc2676 LB 0x5
     4476biosfn_load_gfx_8_16_chars_:                 ; 0xc266c LB 0x5
    45004477    push bp                                   ; 55
    45014478    mov bp, sp                                ; 89 e5
    45024479    pop bp                                    ; 5d
    45034480    retn                                      ; c3
    4504 biosfn_alternate_prtsc_:                     ; 0xc267b LB 0x5
     4481biosfn_alternate_prtsc_:                     ; 0xc2671 LB 0x5
    45054482    push bp                                   ; 55
    45064483    mov bp, sp                                ; 89 e5
    45074484    pop bp                                    ; 5d
    45084485    retn                                      ; c3
    4509 biosfn_switch_video_interface_:              ; 0xc2680 LB 0x5
     4486biosfn_switch_video_interface_:              ; 0xc2676 LB 0x5
    45104487    push bp                                   ; 55
    45114488    mov bp, sp                                ; 89 e5
    45124489    pop bp                                    ; 5d
    45134490    retn                                      ; c3
    4514 biosfn_enable_video_refresh_control_:        ; 0xc2685 LB 0x5
     4491biosfn_enable_video_refresh_control_:        ; 0xc267b LB 0x5
    45154492    push bp                                   ; 55
    45164493    mov bp, sp                                ; 89 e5
    45174494    pop bp                                    ; 5d
    45184495    retn                                      ; c3
    4519 biosfn_write_string_:                        ; 0xc268a LB 0x97
     4496biosfn_write_string_:                        ; 0xc2680 LB 0x97
    45204497    push si                                   ; 56
    45214498    push di                                   ; 57
     
    45294506    lea bx, [bp-00ah]                         ; 8d 5e f6
    45304507    lea dx, [bp-008h]                         ; 8d 56 f8
    4531     call 00a8ch                               ; e8 e2 e3
     4508    call 00a8ch                               ; e8 ec e3
    45324509    cmp byte [bp+008h], 0ffh                  ; 80 7e 08 ff
    4533     jne short 026c1h                          ; 75 11
     4510    jne short 026b7h                          ; 75 11
    45344511    mov al, byte [bp-00ah]                    ; 8a 46 f6
    45354512    mov byte [bp+00ah], al                    ; 88 46 0a
     
    45434520    add dx, ax                                ; 01 c2
    45444521    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    4545     call 00e4bh                               ; e8 76 e7
     4522    call 00e4bh                               ; e8 80 e7
    45464523    dec si                                    ; 4e
    45474524    cmp si, strict byte 0ffffh                ; 83 fe ff
    4548     je short 0270bh                           ; 74 30
     4525    je short 02701h                           ; 74 30
    45494526    mov dx, di                                ; 89 fa
    45504527    inc di                                    ; 47
    45514528    mov ax, word [bp+00ch]                    ; 8b 46 0c
    4552     call 02f0ah                               ; e8 26 08
     4529    call 02ef4h                               ; e8 1a 08
    45534530    mov cl, al                                ; 88 c1
    45544531    test byte [bp-006h], 002h                 ; f6 46 fa 02
    4555     je short 026f8h                           ; 74 0c
     4532    je short 026eeh                           ; 74 0c
    45564533    mov dx, di                                ; 89 fa
    45574534    inc di                                    ; 47
    45584535    mov ax, word [bp+00ch]                    ; 8b 46 0c
    4559     call 02f0ah                               ; e8 15 08
     4536    call 02ef4h                               ; e8 09 08
    45604537    mov byte [bp-002h], al                    ; 88 46 fe
    45614538    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     
    45634540    movzx ax, cl                              ; 0f b6 c1
    45644541    mov cx, strict word 00003h                ; b9 03 00
    4565     call 02103h                               ; e8 fa f9
    4566     jmp short 026d5h                          ; eb ca
     4542    call 020f9h                               ; e8 fa f9
     4543    jmp short 026cbh                          ; eb ca
    45674544    test byte [bp-006h], 001h                 ; f6 46 fa 01
    4568     jne short 0271bh                          ; 75 0a
     4545    jne short 02711h                          ; 75 0a
    45694546    mov dx, word [bp-00ah]                    ; 8b 56 f6
    45704547    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    4571     call 00e4bh                               ; e8 30 e7
     4548    call 00e4bh                               ; e8 3a e7
    45724549    leave                                     ; c9
    45734550    pop di                                    ; 5f
    45744551    pop si                                    ; 5e
    45754552    retn 00008h                               ; c2 08 00
    4576 biosfn_read_state_info_:                     ; 0xc2721 LB 0x10a
     4553biosfn_read_state_info_:                     ; 0xc2717 LB 0xfe
    45774554    push cx                                   ; 51
    45784555    push si                                   ; 56
     
    45824559    push dx                                   ; 52
    45834560    push bx                                   ; 53
    4584     mov bx, 05583h                            ; bb 83 55
     4561    mov cx, ds                                ; 8c d9
     4562    mov bx, 05586h                            ; bb 86 55
    45854563    mov dx, word [bp-004h]                    ; 8b 56 fc
    45864564    mov ax, word [bp-002h]                    ; 8b 46 fe
    4587     call 02f34h                               ; e8 ff 07
    4588     mov dx, word [bp-004h]                    ; 8b 56 fc
    4589     inc dx                                    ; 42
    4590     inc dx                                    ; 42
    4591     mov bx, 0c000h                            ; bb 00 c0
    4592     mov ax, word [bp-002h]                    ; 8b 46 fe
    4593     call 02f34h                               ; e8 f1 07
     4565    call 02f3eh                               ; e8 11 08
    45944566    mov di, word [bp-004h]                    ; 8b 7e fc
    45954567    add di, strict byte 00004h                ; 83 c7 04
     
    45994571    mov es, [bp-002h]                         ; 8e 46 fe
    46004572    cld                                       ; fc
    4601     jcxz 0275eh                               ; e3 06
     4573    jcxz 02748h                               ; e3 06
    46024574    push DS                                   ; 1e
    46034575    mov ds, dx                                ; 8e da
     
    46114583    mov es, [bp-002h]                         ; 8e 46 fe
    46124584    cld                                       ; fc
    4613     jcxz 02779h                               ; e3 06
     4585    jcxz 02763h                               ; e3 06
    46144586    push DS                                   ; 1e
    46154587    mov ds, dx                                ; 8e da
     
    46184590    mov dx, 0008ah                            ; ba 8a 00
    46194591    mov ax, strict word 00040h                ; b8 40 00
    4620     call 02f0ah                               ; e8 88 07
     4592    call 02ef4h                               ; e8 88 07
    46214593    movzx bx, al                              ; 0f b6 d8
    46224594    mov dx, word [bp-004h]                    ; 8b 56 fc
    46234595    add dx, strict byte 00025h                ; 83 c2 25
    46244596    mov ax, word [bp-002h]                    ; 8b 46 fe
    4625     call 02f18h                               ; e8 87 07
     4597    call 02f02h                               ; e8 87 07
    46264598    mov dx, word [bp-004h]                    ; 8b 56 fc
    46274599    add dx, strict byte 00026h                ; 83 c2 26
    46284600    xor bx, bx                                ; 31 db
    46294601    mov ax, word [bp-002h]                    ; 8b 46 fe
    4630     call 02f18h                               ; e8 79 07
     4602    call 02f02h                               ; e8 79 07
    46314603    mov dx, word [bp-004h]                    ; 8b 56 fc
    46324604    add dx, strict byte 00027h                ; 83 c2 27
    46334605    mov bx, strict word 00010h                ; bb 10 00
    46344606    mov ax, word [bp-002h]                    ; 8b 46 fe
    4635     call 02f18h                               ; e8 6a 07
     4607    call 02f02h                               ; e8 6a 07
    46364608    mov dx, word [bp-004h]                    ; 8b 56 fc
    46374609    add dx, strict byte 00028h                ; 83 c2 28
    46384610    xor bx, bx                                ; 31 db
    46394611    mov ax, word [bp-002h]                    ; 8b 46 fe
    4640     call 02f18h                               ; e8 5c 07
     4612    call 02f02h                               ; e8 5c 07
    46414613    mov dx, word [bp-004h]                    ; 8b 56 fc
    46424614    add dx, strict byte 00029h                ; 83 c2 29
    46434615    mov bx, strict word 00008h                ; bb 08 00
    46444616    mov ax, word [bp-002h]                    ; 8b 46 fe
    4645     call 02f18h                               ; e8 4d 07
     4617    call 02f02h                               ; e8 4d 07
    46464618    mov dx, word [bp-004h]                    ; 8b 56 fc
    46474619    add dx, strict byte 0002ah                ; 83 c2 2a
    46484620    mov bx, strict word 00002h                ; bb 02 00
    46494621    mov ax, word [bp-002h]                    ; 8b 46 fe
    4650     call 02f18h                               ; e8 3e 07
     4622    call 02f02h                               ; e8 3e 07
    46514623    mov dx, word [bp-004h]                    ; 8b 56 fc
    46524624    add dx, strict byte 0002bh                ; 83 c2 2b
    46534625    xor bx, bx                                ; 31 db
    46544626    mov ax, word [bp-002h]                    ; 8b 46 fe
    4655     call 02f18h                               ; e8 30 07
     4627    call 02f02h                               ; e8 30 07
    46564628    mov dx, word [bp-004h]                    ; 8b 56 fc
    46574629    add dx, strict byte 0002ch                ; 83 c2 2c
    46584630    xor bx, bx                                ; 31 db
    46594631    mov ax, word [bp-002h]                    ; 8b 46 fe
    4660     call 02f18h                               ; e8 22 07
     4632    call 02f02h                               ; e8 22 07
    46614633    mov dx, word [bp-004h]                    ; 8b 56 fc
    46624634    add dx, strict byte 00031h                ; 83 c2 31
    46634635    mov bx, strict word 00003h                ; bb 03 00
    46644636    mov ax, word [bp-002h]                    ; 8b 46 fe
    4665     call 02f18h                               ; e8 13 07
     4637    call 02f02h                               ; e8 13 07
    46664638    mov dx, word [bp-004h]                    ; 8b 56 fc
    46674639    add dx, strict byte 00032h                ; 83 c2 32
    46684640    xor bx, bx                                ; 31 db
    46694641    mov ax, word [bp-002h]                    ; 8b 46 fe
    4670     call 02f18h                               ; e8 05 07
     4642    call 02f02h                               ; e8 05 07
    46714643    mov di, word [bp-004h]                    ; 8b 7e fc
    46724644    add di, strict byte 00033h                ; 83 c7 33
     
    46754647    mov es, [bp-002h]                         ; 8e 46 fe
    46764648    cld                                       ; fc
    4677     jcxz 02826h                               ; e3 02
     4649    jcxz 02810h                               ; e3 02
    46784650    rep stosb                                 ; f3 aa
    46794651    leave                                     ; c9
     
    46824654    pop cx                                    ; 59
    46834655    retn                                      ; c3
    4684 biosfn_read_video_state_size2_:              ; 0xc282b LB 0x23
     4656biosfn_read_video_state_size2_:              ; 0xc2815 LB 0x23
    46854657    push dx                                   ; 52
    46864658    push bp                                   ; 55
     
    46894661    xor ax, ax                                ; 31 c0
    46904662    test dl, 001h                             ; f6 c2 01
    4691     je short 0283bh                           ; 74 03
     4663    je short 02825h                           ; 74 03
    46924664    mov ax, strict word 00046h                ; b8 46 00
    46934665    test dl, 002h                             ; f6 c2 02
    4694     je short 02843h                           ; 74 03
     4666    je short 0282dh                           ; 74 03
    46954667    add ax, strict word 0002ah                ; 05 2a 00
    46964668    test dl, 004h                             ; f6 c2 04
    4697     je short 0284bh                           ; 74 03
     4669    je short 02835h                           ; 74 03
    46984670    add ax, 00304h                            ; 05 04 03
    46994671    pop bp                                    ; 5d
    47004672    pop dx                                    ; 5a
    47014673    retn                                      ; c3
    4702 vga_get_video_state_size_:                   ; 0xc284e LB 0xf
     4674vga_get_video_state_size_:                   ; 0xc2838 LB 0xf
    47034675    push bx                                   ; 53
    47044676    push bp                                   ; 55
    47054677    mov bp, sp                                ; 89 e5
    47064678    mov bx, dx                                ; 89 d3
    4707     call 0282bh                               ; e8 d4 ff
     4679    call 02815h                               ; e8 d4 ff
    47084680    mov word [ss:bx], ax                      ; 36 89 07
    47094681    pop bp                                    ; 5d
    47104682    pop bx                                    ; 5b
    47114683    retn                                      ; c3
    4712 biosfn_save_video_state_:                    ; 0xc285d LB 0x365
     4684biosfn_save_video_state_:                    ; 0xc2847 LB 0x365
    47134685    push cx                                   ; 51
    47144686    push si                                   ; 56
     
    47204692    mov dx, strict word 00063h                ; ba 63 00
    47214693    mov ax, strict word 00040h                ; b8 40 00
    4722     call 02f26h                               ; e8 b4 06
     4694    call 02f10h                               ; e8 b4 06
    47234695    mov di, ax                                ; 89 c7
    47244696    test byte [bp-006h], 001h                 ; f6 46 fa 01
    4725     je near 029dfh                            ; 0f 84 63 01
     4697    je near 029c9h                            ; 0f 84 63 01
    47264698    mov dx, 003c4h                            ; ba c4 03
    47274699    in AL, DX                                 ; ec
     
    47314703    mov dx, cx                                ; 89 ca
    47324704    mov ax, si                                ; 89 f0
    4733     call 02f18h                               ; e8 8c 06
     4705    call 02f02h                               ; e8 8c 06
    47344706    inc cx                                    ; 41
    47354707    mov dx, di                                ; 89 fa
     
    47404712    mov dx, cx                                ; 89 ca
    47414713    mov ax, si                                ; 89 f0
    4742     call 02f18h                               ; e8 7c 06
     4714    call 02f02h                               ; e8 7c 06
    47434715    inc cx                                    ; 41
    47444716    mov dx, 003ceh                            ; ba ce 03
     
    47494721    mov dx, cx                                ; 89 ca
    47504722    mov ax, si                                ; 89 f0
    4751     call 02f18h                               ; e8 6b 06
     4723    call 02f02h                               ; e8 6b 06
    47524724    inc cx                                    ; 41
    47534725    mov dx, 003dah                            ; ba da 03
     
    47634735    mov dx, cx                                ; 89 ca
    47644736    mov ax, si                                ; 89 f0
    4765     call 02f18h                               ; e8 50 06
     4737    call 02f02h                               ; e8 50 06
    47664738    inc cx                                    ; 41
    47674739    mov dx, 003cah                            ; ba ca 03
     
    47724744    mov dx, cx                                ; 89 ca
    47734745    mov ax, si                                ; 89 f0
    4774     call 02f18h                               ; e8 3f 06
     4746    call 02f02h                               ; e8 3f 06
    47754747    mov ax, strict word 00001h                ; b8 01 00
    47764748    mov word [bp-004h], ax                    ; 89 46 fc
    47774749    add cx, ax                                ; 01 c1
    4778     jmp short 028e9h                          ; eb 06
     4750    jmp short 028d3h                          ; eb 06
    47794751    cmp word [bp-004h], strict byte 00004h    ; 83 7e fc 04
    4780     jnbe short 02906h                         ; 77 1d
     4752    jnbe short 028f0h                         ; 77 1d
    47814753    mov al, byte [bp-004h]                    ; 8a 46 fc
    47824754    mov dx, 003c4h                            ; ba c4 03
     
    47894761    mov dx, cx                                ; 89 ca
    47904762    mov ax, si                                ; 89 f0
    4791     call 02f18h                               ; e8 18 06
     4763    call 02f02h                               ; e8 18 06
    47924764    inc cx                                    ; 41
    47934765    inc word [bp-004h]                        ; ff 46 fc
    4794     jmp short 028e3h                          ; eb dd
     4766    jmp short 028cdh                          ; eb dd
    47954767    xor al, al                                ; 30 c0
    47964768    mov dx, 003c4h                            ; ba c4 03
     
    48034775    mov dx, cx                                ; 89 ca
    48044776    mov ax, si                                ; 89 f0
    4805     call 02f18h                               ; e8 fc 05
     4777    call 02f02h                               ; e8 fc 05
    48064778    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    48074779    inc cx                                    ; 41
    4808     jmp short 0292ah                          ; eb 06
     4780    jmp short 02914h                          ; eb 06
    48094781    cmp word [bp-004h], strict byte 00018h    ; 83 7e fc 18
    4810     jnbe short 02946h                         ; 77 1c
     4782    jnbe short 02930h                         ; 77 1c
    48114783    mov al, byte [bp-004h]                    ; 8a 46 fc
    48124784    mov dx, di                                ; 89 fa
     
    48194791    mov dx, cx                                ; 89 ca
    48204792    mov ax, si                                ; 89 f0
    4821     call 02f18h                               ; e8 d8 05
     4793    call 02f02h                               ; e8 d8 05
    48224794    inc cx                                    ; 41
    48234795    inc word [bp-004h]                        ; ff 46 fc
    4824     jmp short 02924h                          ; eb de
     4796    jmp short 0290eh                          ; eb de
    48254797    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    4826     jmp short 02953h                          ; eb 06
     4798    jmp short 0293dh                          ; eb 06
    48274799    cmp word [bp-004h], strict byte 00013h    ; 83 7e fc 13
    4828     jnbe short 0297ch                         ; 77 29
     4800    jnbe short 02966h                         ; 77 29
    48294801    mov dx, 003dah                            ; ba da 03
    48304802    in AL, DX                                 ; ec
     
    48434815    mov dx, cx                                ; 89 ca
    48444816    mov ax, si                                ; 89 f0
    4845     call 02f18h                               ; e8 a2 05
     4817    call 02f02h                               ; e8 a2 05
    48464818    inc cx                                    ; 41
    48474819    inc word [bp-004h]                        ; ff 46 fc
    4848     jmp short 0294dh                          ; eb d1
     4820    jmp short 02937h                          ; eb d1
    48494821    mov dx, 003dah                            ; ba da 03
    48504822    in AL, DX                                 ; ec
     
    48524824    ; sub ah, ah                                ; 2a e4
    48534825    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    4854     jmp short 0298fh                          ; eb 06
     4826    jmp short 02979h                          ; eb 06
    48554827    cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
    4856     jnbe short 029ach                         ; 77 1d
     4828    jnbe short 02996h                         ; 77 1d
    48574829    mov al, byte [bp-004h]                    ; 8a 46 fc
    48584830    mov dx, 003ceh                            ; ba ce 03
     
    48654837    mov dx, cx                                ; 89 ca
    48664838    mov ax, si                                ; 89 f0
    4867     call 02f18h                               ; e8 72 05
     4839    call 02f02h                               ; e8 72 05
    48684840    inc cx                                    ; 41
    48694841    inc word [bp-004h]                        ; ff 46 fc
    4870     jmp short 02989h                          ; eb dd
     4842    jmp short 02973h                          ; eb dd
    48714843    mov bx, di                                ; 89 fb
    48724844    mov dx, cx                                ; 89 ca
    48734845    mov ax, si                                ; 89 f0
    4874     call 02f34h                               ; e8 7f 05
     4846    call 02f1eh                               ; e8 7f 05
    48754847    inc cx                                    ; 41
    48764848    inc cx                                    ; 41
     
    48784850    mov dx, cx                                ; 89 ca
    48794851    mov ax, si                                ; 89 f0
    4880     call 02f18h                               ; e8 58 05
     4852    call 02f02h                               ; e8 58 05
    48814853    inc cx                                    ; 41
    48824854    xor bx, bx                                ; 31 db
    48834855    mov dx, cx                                ; 89 ca
    48844856    mov ax, si                                ; 89 f0
    4885     call 02f18h                               ; e8 4e 05
     4857    call 02f02h                               ; e8 4e 05
    48864858    inc cx                                    ; 41
    48874859    xor bx, bx                                ; 31 db
    48884860    mov dx, cx                                ; 89 ca
    48894861    mov ax, si                                ; 89 f0
    4890     call 02f18h                               ; e8 44 05
     4862    call 02f02h                               ; e8 44 05
    48914863    inc cx                                    ; 41
    48924864    xor bx, bx                                ; 31 db
    48934865    mov dx, cx                                ; 89 ca
    48944866    mov ax, si                                ; 89 f0
    4895     call 02f18h                               ; e8 3a 05
     4867    call 02f02h                               ; e8 3a 05
    48964868    inc cx                                    ; 41
    48974869    test byte [bp-006h], 002h                 ; f6 46 fa 02
    4898     je near 02b4eh                            ; 0f 84 67 01
     4870    je near 02b38h                            ; 0f 84 67 01
    48994871    mov dx, strict word 00049h                ; ba 49 00
    49004872    mov ax, strict word 00040h                ; b8 40 00
    4901     call 02f0ah                               ; e8 1a 05
     4873    call 02ef4h                               ; e8 1a 05
    49024874    movzx bx, al                              ; 0f b6 d8
    49034875    mov dx, cx                                ; 89 ca
    49044876    mov ax, si                                ; 89 f0
    4905     call 02f18h                               ; e8 1e 05
     4877    call 02f02h                               ; e8 1e 05
    49064878    inc cx                                    ; 41
    49074879    mov dx, strict word 0004ah                ; ba 4a 00
    49084880    mov ax, strict word 00040h                ; b8 40 00
    4909     call 02f26h                               ; e8 22 05
     4881    call 02f10h                               ; e8 22 05
    49104882    mov bx, ax                                ; 89 c3
    49114883    mov dx, cx                                ; 89 ca
    49124884    mov ax, si                                ; 89 f0
    4913     call 02f34h                               ; e8 27 05
     4885    call 02f1eh                               ; e8 27 05
    49144886    inc cx                                    ; 41
    49154887    inc cx                                    ; 41
    49164888    mov dx, strict word 0004ch                ; ba 4c 00
    49174889    mov ax, strict word 00040h                ; b8 40 00
    4918     call 02f26h                               ; e8 0e 05
     4890    call 02f10h                               ; e8 0e 05
    49194891    mov bx, ax                                ; 89 c3
    49204892    mov dx, cx                                ; 89 ca
    49214893    mov ax, si                                ; 89 f0
    4922     call 02f34h                               ; e8 13 05
     4894    call 02f1eh                               ; e8 13 05
    49234895    inc cx                                    ; 41
    49244896    inc cx                                    ; 41
    49254897    mov dx, strict word 00063h                ; ba 63 00
    49264898    mov ax, strict word 00040h                ; b8 40 00
    4927     call 02f26h                               ; e8 fa 04
     4899    call 02f10h                               ; e8 fa 04
    49284900    mov bx, ax                                ; 89 c3
    49294901    mov dx, cx                                ; 89 ca
    49304902    mov ax, si                                ; 89 f0
    4931     call 02f34h                               ; e8 ff 04
     4903    call 02f1eh                               ; e8 ff 04
    49324904    inc cx                                    ; 41
    49334905    inc cx                                    ; 41
    49344906    mov dx, 00084h                            ; ba 84 00
    49354907    mov ax, strict word 00040h                ; b8 40 00
    4936     call 02f0ah                               ; e8 ca 04
     4908    call 02ef4h                               ; e8 ca 04
    49374909    movzx bx, al                              ; 0f b6 d8
    49384910    mov dx, cx                                ; 89 ca
    49394911    mov ax, si                                ; 89 f0
    4940     call 02f18h                               ; e8 ce 04
     4912    call 02f02h                               ; e8 ce 04
    49414913    inc cx                                    ; 41
    49424914    mov dx, 00085h                            ; ba 85 00
    49434915    mov ax, strict word 00040h                ; b8 40 00
    4944     call 02f26h                               ; e8 d2 04
     4916    call 02f10h                               ; e8 d2 04
    49454917    mov bx, ax                                ; 89 c3
    49464918    mov dx, cx                                ; 89 ca
    49474919    mov ax, si                                ; 89 f0
    4948     call 02f34h                               ; e8 d7 04
     4920    call 02f1eh                               ; e8 d7 04
    49494921    inc cx                                    ; 41
    49504922    inc cx                                    ; 41
    49514923    mov dx, 00087h                            ; ba 87 00
    49524924    mov ax, strict word 00040h                ; b8 40 00
    4953     call 02f0ah                               ; e8 a2 04
     4925    call 02ef4h                               ; e8 a2 04
    49544926    movzx bx, al                              ; 0f b6 d8
    49554927    mov dx, cx                                ; 89 ca
    49564928    mov ax, si                                ; 89 f0
    4957     call 02f18h                               ; e8 a6 04
     4929    call 02f02h                               ; e8 a6 04
    49584930    inc cx                                    ; 41
    49594931    mov dx, 00088h                            ; ba 88 00
    49604932    mov ax, strict word 00040h                ; b8 40 00
    4961     call 02f0ah                               ; e8 8e 04
     4933    call 02ef4h                               ; e8 8e 04
    49624934    movzx bx, al                              ; 0f b6 d8
    49634935    mov dx, cx                                ; 89 ca
    49644936    mov ax, si                                ; 89 f0
    4965     call 02f18h                               ; e8 92 04
     4937    call 02f02h                               ; e8 92 04
    49664938    inc cx                                    ; 41
    49674939    mov dx, 00089h                            ; ba 89 00
    49684940    mov ax, strict word 00040h                ; b8 40 00
    4969     call 02f0ah                               ; e8 7a 04
     4941    call 02ef4h                               ; e8 7a 04
    49704942    movzx bx, al                              ; 0f b6 d8
    49714943    mov dx, cx                                ; 89 ca
    49724944    mov ax, si                                ; 89 f0
    4973     call 02f18h                               ; e8 7e 04
     4945    call 02f02h                               ; e8 7e 04
    49744946    inc cx                                    ; 41
    49754947    mov dx, strict word 00060h                ; ba 60 00
    49764948    mov ax, strict word 00040h                ; b8 40 00
    4977     call 02f26h                               ; e8 82 04
     4949    call 02f10h                               ; e8 82 04
    49784950    mov bx, ax                                ; 89 c3
    49794951    mov dx, cx                                ; 89 ca
    49804952    mov ax, si                                ; 89 f0
    4981     call 02f34h                               ; e8 87 04
     4953    call 02f1eh                               ; e8 87 04
    49824954    mov word [bp-004h], strict word 00000h    ; c7 46 fc 00 00
    49834955    inc cx                                    ; 41
    49844956    inc cx                                    ; 41
    4985     jmp short 02abch                          ; eb 06
     4957    jmp short 02aa6h                          ; eb 06
    49864958    cmp word [bp-004h], strict byte 00008h    ; 83 7e fc 08
    4987     jnc short 02adah                          ; 73 1e
     4959    jnc short 02ac4h                          ; 73 1e
    49884960    mov dx, word [bp-004h]                    ; 8b 56 fc
    49894961    add dx, dx                                ; 01 d2
    49904962    add dx, strict byte 00050h                ; 83 c2 50
    49914963    mov ax, strict word 00040h                ; b8 40 00
    4992     call 02f26h                               ; e8 5c 04
     4964    call 02f10h                               ; e8 5c 04
    49934965    mov bx, ax                                ; 89 c3
    49944966    mov dx, cx                                ; 89 ca
    49954967    mov ax, si                                ; 89 f0
    4996     call 02f34h                               ; e8 61 04
     4968    call 02f1eh                               ; e8 61 04
    49974969    inc cx                                    ; 41
    49984970    inc cx                                    ; 41
    49994971    inc word [bp-004h]                        ; ff 46 fc
    5000     jmp short 02ab6h                          ; eb dc
     4972    jmp short 02aa0h                          ; eb dc
    50014973    mov dx, strict word 0004eh                ; ba 4e 00
    50024974    mov ax, strict word 00040h                ; b8 40 00
    5003     call 02f26h                               ; e8 43 04
     4975    call 02f10h                               ; e8 43 04
    50044976    mov bx, ax                                ; 89 c3
    50054977    mov dx, cx                                ; 89 ca
    50064978    mov ax, si                                ; 89 f0
    5007     call 02f34h                               ; e8 48 04
     4979    call 02f1eh                               ; e8 48 04
    50084980    inc cx                                    ; 41
    50094981    inc cx                                    ; 41
    50104982    mov dx, strict word 00062h                ; ba 62 00
    50114983    mov ax, strict word 00040h                ; b8 40 00
    5012     call 02f0ah                               ; e8 13 04
     4984    call 02ef4h                               ; e8 13 04
    50134985    movzx bx, al                              ; 0f b6 d8
    50144986    mov dx, cx                                ; 89 ca
    50154987    mov ax, si                                ; 89 f0
    5016     call 02f18h                               ; e8 17 04
     4988    call 02f02h                               ; e8 17 04
    50174989    inc cx                                    ; 41
    50184990    mov dx, strict word 0007ch                ; ba 7c 00
    50194991    xor ax, ax                                ; 31 c0
    5020     call 02f26h                               ; e8 1c 04
     4992    call 02f10h                               ; e8 1c 04
    50214993    mov bx, ax                                ; 89 c3
    50224994    mov dx, cx                                ; 89 ca
    50234995    mov ax, si                                ; 89 f0
    5024     call 02f34h                               ; e8 21 04
     4996    call 02f1eh                               ; e8 21 04
    50254997    inc cx                                    ; 41
    50264998    inc cx                                    ; 41
    50274999    mov dx, strict word 0007eh                ; ba 7e 00
    50285000    xor ax, ax                                ; 31 c0
    5029     call 02f26h                               ; e8 09 04
     5001    call 02f10h                               ; e8 09 04
    50305002    mov bx, ax                                ; 89 c3
    50315003    mov dx, cx                                ; 89 ca
    50325004    mov ax, si                                ; 89 f0
    5033     call 02f34h                               ; e8 0e 04
     5005    call 02f1eh                               ; e8 0e 04
    50345006    inc cx                                    ; 41
    50355007    inc cx                                    ; 41
    50365008    mov dx, 0010ch                            ; ba 0c 01
    50375009    xor ax, ax                                ; 31 c0
    5038     call 02f26h                               ; e8 f6 03
     5010    call 02f10h                               ; e8 f6 03
    50395011    mov bx, ax                                ; 89 c3
    50405012    mov dx, cx                                ; 89 ca
    50415013    mov ax, si                                ; 89 f0
    5042     call 02f34h                               ; e8 fb 03
     5014    call 02f1eh                               ; e8 fb 03
    50435015    inc cx                                    ; 41
    50445016    inc cx                                    ; 41
    50455017    mov dx, 0010eh                            ; ba 0e 01
    50465018    xor ax, ax                                ; 31 c0
    5047     call 02f26h                               ; e8 e3 03
     5019    call 02f10h                               ; e8 e3 03
    50485020    mov bx, ax                                ; 89 c3
    50495021    mov dx, cx                                ; 89 ca
    50505022    mov ax, si                                ; 89 f0
    5051     call 02f34h                               ; e8 e8 03
     5023    call 02f1eh                               ; e8 e8 03
    50525024    inc cx                                    ; 41
    50535025    inc cx                                    ; 41
    50545026    test byte [bp-006h], 004h                 ; f6 46 fa 04
    5055     je short 02bbbh                           ; 74 67
     5027    je short 02ba5h                           ; 74 67
    50565028    mov dx, 003c7h                            ; ba c7 03
    50575029    in AL, DX                                 ; ec
     
    50615033    mov dx, cx                                ; 89 ca
    50625034    mov ax, si                                ; 89 f0
    5063     call 02f18h                               ; e8 b4 03
     5035    call 02f02h                               ; e8 b4 03
    50645036    inc cx                                    ; 41
    50655037    mov dx, 003c8h                            ; ba c8 03
     
    50705042    mov dx, cx                                ; 89 ca
    50715043    mov ax, si                                ; 89 f0
    5072     call 02f18h                               ; e8 a3 03
     5044    call 02f02h                               ; e8 a3 03
    50735045    inc cx                                    ; 41
    50745046    mov dx, 003c6h                            ; ba c6 03
     
    50795051    mov dx, cx                                ; 89 ca
    50805052    mov ax, si                                ; 89 f0
    5081     call 02f18h                               ; e8 92 03
     5053    call 02f02h                               ; e8 92 03
    50825054    inc cx                                    ; 41
    50835055    xor al, al                                ; 30 c0
     
    50865058    xor ah, ah                                ; 30 e4
    50875059    mov word [bp-004h], ax                    ; 89 46 fc
    5088     jmp short 02b9bh                          ; eb 07
     5060    jmp short 02b85h                          ; eb 07
    50895061    cmp word [bp-004h], 00300h                ; 81 7e fc 00 03
    5090     jnc short 02bb1h                          ; 73 16
     5062    jnc short 02b9bh                          ; 73 16
    50915063    mov dx, 003c9h                            ; ba c9 03
    50925064    in AL, DX                                 ; ec
     
    50965068    mov dx, cx                                ; 89 ca
    50975069    mov ax, si                                ; 89 f0
    5098     call 02f18h                               ; e8 6d 03
     5070    call 02f02h                               ; e8 6d 03
    50995071    inc cx                                    ; 41
    51005072    inc word [bp-004h]                        ; ff 46 fc
    5101     jmp short 02b94h                          ; eb e3
     5073    jmp short 02b7eh                          ; eb e3
    51025074    xor bx, bx                                ; 31 db
    51035075    mov dx, cx                                ; 89 ca
    51045076    mov ax, si                                ; 89 f0
    5105     call 02f18h                               ; e8 5e 03
     5077    call 02f02h                               ; e8 5e 03
    51065078    inc cx                                    ; 41
    51075079    mov ax, cx                                ; 89 c8
     
    51115083    pop cx                                    ; 59
    51125084    retn                                      ; c3
    5113 biosfn_restore_video_state_:                 ; 0xc2bc2 LB 0x321
     5085biosfn_restore_video_state_:                 ; 0xc2bac LB 0x321
    51145086    push cx                                   ; 51
    51155087    push si                                   ; 56
     
    51205092    mov cx, bx                                ; 89 d9
    51215093    test byte [bp-008h], 001h                 ; f6 46 f8 01
    5122     je near 02d20h                            ; 0f 84 4a 01
     5094    je near 02d0ah                            ; 0f 84 4a 01
    51235095    mov dx, 003dah                            ; ba da 03
    51245096    in AL, DX                                 ; ec
     
    51275099    lea dx, [bx+040h]                         ; 8d 57 40
    51285100    mov ax, si                                ; 89 f0
    5129     call 02f26h                               ; e8 42 03
     5101    call 02f10h                               ; e8 42 03
    51305102    mov di, ax                                ; 89 c7
    51315103    mov word [bp-002h], strict word 00001h    ; c7 46 fe 01 00
    51325104    lea cx, [bx+005h]                         ; 8d 4f 05
    5133     jmp short 02bf6h                          ; eb 06
     5105    jmp short 02be0h                          ; eb 06
    51345106    cmp word [bp-002h], strict byte 00004h    ; 83 7e fe 04
    5135     jnbe short 02c0eh                         ; 77 18
     5107    jnbe short 02bf8h                         ; 77 18
    51365108    mov al, byte [bp-002h]                    ; 8a 46 fe
    51375109    mov dx, 003c4h                            ; ba c4 03
     
    51395111    mov dx, cx                                ; 89 ca
    51405112    mov ax, si                                ; 89 f0
    5141     call 02f0ah                               ; e8 06 03
     5113    call 02ef4h                               ; e8 06 03
    51425114    mov dx, 003c5h                            ; ba c5 03
    51435115    out DX, AL                                ; ee
    51445116    inc cx                                    ; 41
    51455117    inc word [bp-002h]                        ; ff 46 fe
    5146     jmp short 02bf0h                          ; eb e2
     5118    jmp short 02bdah                          ; eb e2
    51475119    xor al, al                                ; 30 c0
    51485120    mov dx, 003c4h                            ; ba c4 03
     
    51505122    mov dx, cx                                ; 89 ca
    51515123    mov ax, si                                ; 89 f0
    5152     call 02f0ah                               ; e8 ef 02
     5124    call 02ef4h                               ; e8 ef 02
    51535125    mov dx, 003c5h                            ; ba c5 03
    51545126    out DX, AL                                ; ee
     
    51585130    out DX, ax                                ; ef
    51595131    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    5160     jmp short 02c33h                          ; eb 06
     5132    jmp short 02c1dh                          ; eb 06
    51615133    cmp word [bp-002h], strict byte 00018h    ; 83 7e fe 18
    5162     jnbe short 02c50h                         ; 77 1d
     5134    jnbe short 02c3ah                         ; 77 1d
    51635135    cmp word [bp-002h], strict byte 00011h    ; 83 7e fe 11
    5164     je short 02c4ah                           ; 74 11
     5136    je short 02c34h                           ; 74 11
    51655137    mov al, byte [bp-002h]                    ; 8a 46 fe
    51665138    mov dx, di                                ; 89 fa
     
    51685140    mov dx, cx                                ; 89 ca
    51695141    mov ax, si                                ; 89 f0
    5170     call 02f0ah                               ; e8 c4 02
     5142    call 02ef4h                               ; e8 c4 02
    51715143    lea dx, [di+001h]                         ; 8d 55 01
    51725144    out DX, AL                                ; ee
    51735145    inc cx                                    ; 41
    51745146    inc word [bp-002h]                        ; ff 46 fe
    5175     jmp short 02c2dh                          ; eb dd
     5147    jmp short 02c17h                          ; eb dd
    51765148    mov dx, 003cch                            ; ba cc 03
    51775149    in AL, DX                                 ; ec
     
    51815153    mov word [bp-004h], ax                    ; 89 46 fc
    51825154    cmp di, 003d4h                            ; 81 ff d4 03
    5183     jne short 02c65h                          ; 75 04
     5155    jne short 02c4fh                          ; 75 04
    51845156    or byte [bp-004h], 001h                   ; 80 4e fc 01
    51855157    mov al, byte [bp-004h]                    ; 8a 46 fc
     
    51925164    add dx, strict byte 0fff9h                ; 83 c2 f9
    51935165    mov ax, si                                ; 89 f0
    5194     call 02f0ah                               ; e8 8f 02
     5166    call 02ef4h                               ; e8 8f 02
    51955167    lea dx, [di+001h]                         ; 8d 55 01
    51965168    out DX, AL                                ; ee
    51975169    lea dx, [bx+003h]                         ; 8d 57 03
    51985170    mov ax, si                                ; 89 f0
    5199     call 02f0ah                               ; e8 83 02
     5171    call 02ef4h                               ; e8 83 02
    52005172    xor ah, ah                                ; 30 e4
    52015173    mov word [bp-006h], ax                    ; 89 46 fa
     
    52055177    ; sub ah, ah                                ; 2a e4
    52065178    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    5207     jmp short 02c9fh                          ; eb 06
     5179    jmp short 02c89h                          ; eb 06
    52085180    cmp word [bp-002h], strict byte 00013h    ; 83 7e fe 13
    5209     jnbe short 02cbdh                         ; 77 1e
     5181    jnbe short 02ca7h                         ; 77 1e
    52105182    mov ax, word [bp-006h]                    ; 8b 46 fa
    52115183    and ax, strict word 00020h                ; 25 20 00
     
    52155187    mov dx, cx                                ; 89 ca
    52165188    mov ax, si                                ; 89 f0
    5217     call 02f0ah                               ; e8 57 02
     5189    call 02ef4h                               ; e8 57 02
    52185190    mov dx, 003c0h                            ; ba c0 03
    52195191    out DX, AL                                ; ee
    52205192    inc cx                                    ; 41
    52215193    inc word [bp-002h]                        ; ff 46 fe
    5222     jmp short 02c99h                          ; eb dc
     5194    jmp short 02c83h                          ; eb dc
    52235195    mov al, byte [bp-006h]                    ; 8a 46 fa
    52245196    mov dx, 003c0h                            ; ba c0 03
     
    52295201    ; sub ah, ah                                ; 2a e4
    52305202    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    5231     jmp short 02cd7h                          ; eb 06
     5203    jmp short 02cc1h                          ; eb 06
    52325204    cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
    5233     jnbe short 02cefh                         ; 77 18
     5205    jnbe short 02cd9h                         ; 77 18
    52345206    mov al, byte [bp-002h]                    ; 8a 46 fe
    52355207    mov dx, 003ceh                            ; ba ce 03
     
    52375209    mov dx, cx                                ; 89 ca
    52385210    mov ax, si                                ; 89 f0
    5239     call 02f0ah                               ; e8 25 02
     5211    call 02ef4h                               ; e8 25 02
    52405212    mov dx, 003cfh                            ; ba cf 03
    52415213    out DX, AL                                ; ee
    52425214    inc cx                                    ; 41
    52435215    inc word [bp-002h]                        ; ff 46 fe
    5244     jmp short 02cd1h                          ; eb e2
     5216    jmp short 02cbbh                          ; eb e2
    52455217    add cx, strict byte 00006h                ; 83 c1 06
    52465218    mov dx, bx                                ; 89 da
    52475219    mov ax, si                                ; 89 f0
    5248     call 02f0ah                               ; e8 11 02
     5220    call 02ef4h                               ; e8 11 02
    52495221    mov dx, 003c4h                            ; ba c4 03
    52505222    out DX, AL                                ; ee
     
    52525224    mov dx, bx                                ; 89 da
    52535225    mov ax, si                                ; 89 f0
    5254     call 02f0ah                               ; e8 05 02
     5226    call 02ef4h                               ; e8 05 02
    52555227    mov dx, di                                ; 89 fa
    52565228    out DX, AL                                ; ee
     
    52585230    mov dx, bx                                ; 89 da
    52595231    mov ax, si                                ; 89 f0
    5260     call 02f0ah                               ; e8 fa 01
     5232    call 02ef4h                               ; e8 fa 01
    52615233    mov dx, 003ceh                            ; ba ce 03
    52625234    out DX, AL                                ; ee
    52635235    lea dx, [bx+002h]                         ; 8d 57 02
    52645236    mov ax, si                                ; 89 f0
    5265     call 02f0ah                               ; e8 ee 01
     5237    call 02ef4h                               ; e8 ee 01
    52665238    lea dx, [di+006h]                         ; 8d 55 06
    52675239    out DX, AL                                ; ee
    52685240    test byte [bp-008h], 002h                 ; f6 46 f8 02
    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
     5241    je near 02e79h                            ; 0f 84 67 01
     5242    mov dx, cx                                ; 89 ca
     5243    mov ax, si                                ; 89 f0
     5244    call 02ef4h                               ; e8 db 01
    52735245    movzx bx, al                              ; 0f b6 d8
    52745246    mov dx, strict word 00049h                ; ba 49 00
    52755247    mov ax, strict word 00040h                ; b8 40 00
    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
     5248    call 02f02h                               ; e8 dd 01
     5249    inc cx                                    ; 41
     5250    mov dx, cx                                ; 89 ca
     5251    mov ax, si                                ; 89 f0
     5252    call 02f10h                               ; e8 e3 01
    52815253    mov bx, ax                                ; 89 c3
    52825254    mov dx, strict word 0004ah                ; ba 4a 00
    52835255    mov ax, strict word 00040h                ; b8 40 00
    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
     5256    call 02f1eh                               ; e8 e6 01
     5257    inc cx                                    ; 41
     5258    inc cx                                    ; 41
     5259    mov dx, cx                                ; 89 ca
     5260    mov ax, si                                ; 89 f0
     5261    call 02f10h                               ; e8 cf 01
    52905262    mov bx, ax                                ; 89 c3
    52915263    mov dx, strict word 0004ch                ; ba 4c 00
    52925264    mov ax, strict word 00040h                ; b8 40 00
    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
     5265    call 02f1eh                               ; e8 d2 01
     5266    inc cx                                    ; 41
     5267    inc cx                                    ; 41
     5268    mov dx, cx                                ; 89 ca
     5269    mov ax, si                                ; 89 f0
     5270    call 02f10h                               ; e8 bb 01
    52995271    mov bx, ax                                ; 89 c3
    53005272    mov dx, strict word 00063h                ; ba 63 00
    53015273    mov ax, strict word 00040h                ; b8 40 00
    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
     5274    call 02f1eh                               ; e8 be 01
     5275    inc cx                                    ; 41
     5276    inc cx                                    ; 41
     5277    mov dx, cx                                ; 89 ca
     5278    mov ax, si                                ; 89 f0
     5279    call 02ef4h                               ; e8 8b 01
    53085280    movzx bx, al                              ; 0f b6 d8
    53095281    mov dx, 00084h                            ; ba 84 00
    53105282    mov ax, strict word 00040h                ; b8 40 00
    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
     5283    call 02f02h                               ; e8 8d 01
     5284    inc cx                                    ; 41
     5285    mov dx, cx                                ; 89 ca
     5286    mov ax, si                                ; 89 f0
     5287    call 02f10h                               ; e8 93 01
    53165288    mov bx, ax                                ; 89 c3
    53175289    mov dx, 00085h                            ; ba 85 00
    53185290    mov ax, strict word 00040h                ; b8 40 00
    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
     5291    call 02f1eh                               ; e8 96 01
     5292    inc cx                                    ; 41
     5293    inc cx                                    ; 41
     5294    mov dx, cx                                ; 89 ca
     5295    mov ax, si                                ; 89 f0
     5296    call 02ef4h                               ; e8 63 01
    53255297    movzx bx, al                              ; 0f b6 d8
    53265298    mov dx, 00087h                            ; ba 87 00
    53275299    mov ax, strict word 00040h                ; b8 40 00
    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
     5300    call 02f02h                               ; e8 65 01
     5301    inc cx                                    ; 41
     5302    mov dx, cx                                ; 89 ca
     5303    mov ax, si                                ; 89 f0
     5304    call 02ef4h                               ; e8 4f 01
    53335305    movzx bx, al                              ; 0f b6 d8
    53345306    mov dx, 00088h                            ; ba 88 00
    53355307    mov ax, strict word 00040h                ; b8 40 00
    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
     5308    call 02f02h                               ; e8 51 01
     5309    inc cx                                    ; 41
     5310    mov dx, cx                                ; 89 ca
     5311    mov ax, si                                ; 89 f0
     5312    call 02ef4h                               ; e8 3b 01
    53415313    movzx bx, al                              ; 0f b6 d8
    53425314    mov dx, 00089h                            ; ba 89 00
    53435315    mov ax, strict word 00040h                ; b8 40 00
    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
     5316    call 02f02h                               ; e8 3d 01
     5317    inc cx                                    ; 41
     5318    mov dx, cx                                ; 89 ca
     5319    mov ax, si                                ; 89 f0
     5320    call 02f10h                               ; e8 43 01
    53495321    mov bx, ax                                ; 89 c3
    53505322    mov dx, strict word 00060h                ; ba 60 00
    53515323    mov ax, strict word 00040h                ; b8 40 00
    5352     call 02f34h                               ; e8 46 01
     5324    call 02f1eh                               ; e8 46 01
    53535325    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    53545326    inc cx                                    ; 41
    53555327    inc cx                                    ; 41
    5356     jmp short 02dfdh                          ; eb 06
     5328    jmp short 02de7h                          ; eb 06
    53575329    cmp word [bp-002h], strict byte 00008h    ; 83 7e fe 08
    5358     jnc short 02e1bh                          ; 73 1e
    5359     mov dx, cx                                ; 89 ca
    5360     mov ax, si                                ; 89 f0
    5361     call 02f26h                               ; e8 22 01
     5330    jnc short 02e05h                          ; 73 1e
     5331    mov dx, cx                                ; 89 ca
     5332    mov ax, si                                ; 89 f0
     5333    call 02f10h                               ; e8 22 01
    53625334    mov bx, ax                                ; 89 c3
    53635335    mov dx, word [bp-002h]                    ; 8b 56 fe
     
    53655337    add dx, strict byte 00050h                ; 83 c2 50
    53665338    mov ax, strict word 00040h                ; b8 40 00
    5367     call 02f34h                               ; e8 20 01
     5339    call 02f1eh                               ; e8 20 01
    53685340    inc cx                                    ; 41
    53695341    inc cx                                    ; 41
    53705342    inc word [bp-002h]                        ; ff 46 fe
    5371     jmp short 02df7h                          ; eb dc
    5372     mov dx, cx                                ; 89 ca
    5373     mov ax, si                                ; 89 f0
    5374     call 02f26h                               ; e8 04 01
     5343    jmp short 02de1h                          ; eb dc
     5344    mov dx, cx                                ; 89 ca
     5345    mov ax, si                                ; 89 f0
     5346    call 02f10h                               ; e8 04 01
    53755347    mov bx, ax                                ; 89 c3
    53765348    mov dx, strict word 0004eh                ; ba 4e 00
    53775349    mov ax, strict word 00040h                ; b8 40 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
     5350    call 02f1eh                               ; e8 07 01
     5351    inc cx                                    ; 41
     5352    inc cx                                    ; 41
     5353    mov dx, cx                                ; 89 ca
     5354    mov ax, si                                ; 89 f0
     5355    call 02ef4h                               ; e8 d4 00
    53845356    movzx bx, al                              ; 0f b6 d8
    53855357    mov dx, strict word 00062h                ; ba 62 00
    53865358    mov ax, strict word 00040h                ; b8 40 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
     5359    call 02f02h                               ; e8 d6 00
     5360    inc cx                                    ; 41
     5361    mov dx, cx                                ; 89 ca
     5362    mov ax, si                                ; 89 f0
     5363    call 02f10h                               ; e8 dc 00
    53925364    mov bx, ax                                ; 89 c3
    53935365    mov dx, strict word 0007ch                ; ba 7c 00
    53945366    xor ax, ax                                ; 31 c0
    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
     5367    call 02f1eh                               ; e8 e0 00
     5368    inc cx                                    ; 41
     5369    inc cx                                    ; 41
     5370    mov dx, cx                                ; 89 ca
     5371    mov ax, si                                ; 89 f0
     5372    call 02f10h                               ; e8 c9 00
    54015373    mov bx, ax                                ; 89 c3
    54025374    mov dx, strict word 0007eh                ; ba 7e 00
    54035375    xor ax, ax                                ; 31 c0
    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
     5376    call 02f1eh                               ; e8 cd 00
     5377    inc cx                                    ; 41
     5378    inc cx                                    ; 41
     5379    mov dx, cx                                ; 89 ca
     5380    mov ax, si                                ; 89 f0
     5381    call 02f10h                               ; e8 b6 00
    54105382    mov bx, ax                                ; 89 c3
    54115383    mov dx, 0010ch                            ; ba 0c 01
    54125384    xor ax, ax                                ; 31 c0
    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
     5385    call 02f1eh                               ; e8 ba 00
     5386    inc cx                                    ; 41
     5387    inc cx                                    ; 41
     5388    mov dx, cx                                ; 89 ca
     5389    mov ax, si                                ; 89 f0
     5390    call 02f10h                               ; e8 a3 00
    54195391    mov bx, ax                                ; 89 c3
    54205392    mov dx, 0010eh                            ; ba 0e 01
    54215393    xor ax, ax                                ; 31 c0
    5422     call 02f34h                               ; e8 a7 00
     5394    call 02f1eh                               ; e8 a7 00
    54235395    inc cx                                    ; 41
    54245396    inc cx                                    ; 41
    54255397    test byte [bp-008h], 004h                 ; f6 46 f8 04
    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
     5398    je short 02ec6h                           ; 74 47
     5399    inc cx                                    ; 41
     5400    mov dx, cx                                ; 89 ca
     5401    mov ax, si                                ; 89 f0
     5402    call 02ef4h                               ; e8 6d 00
    54315403    xor ah, ah                                ; 30 e4
    54325404    mov word [bp-004h], ax                    ; 89 46 fc
     
    54345406    mov dx, cx                                ; 89 ca
    54355407    mov ax, si                                ; 89 f0
    5436     call 02f0ah                               ; e8 60 00
     5408    call 02ef4h                               ; e8 60 00
    54375409    mov dx, 003c6h                            ; ba c6 03
    54385410    out DX, AL                                ; ee
     
    54435415    xor ah, ah                                ; 30 e4
    54445416    mov word [bp-002h], ax                    ; 89 46 fe
    5445     jmp short 02ec3h                          ; eb 07
     5417    jmp short 02eadh                          ; eb 07
    54465418    cmp word [bp-002h], 00300h                ; 81 7e fe 00 03
    5447     jnc short 02ed4h                          ; 73 11
    5448     mov dx, cx                                ; 89 ca
    5449     mov ax, si                                ; 89 f0
    5450     call 02f0ah                               ; e8 40 00
     5419    jnc short 02ebeh                          ; 73 11
     5420    mov dx, cx                                ; 89 ca
     5421    mov ax, si                                ; 89 f0
     5422    call 02ef4h                               ; e8 40 00
    54515423    mov dx, 003c9h                            ; ba c9 03
    54525424    out DX, AL                                ; ee
    54535425    inc cx                                    ; 41
    54545426    inc word [bp-002h]                        ; ff 46 fe
    5455     jmp short 02ebch                          ; eb e8
     5427    jmp short 02ea6h                          ; eb e8
    54565428    inc cx                                    ; 41
    54575429    mov al, byte [bp-004h]                    ; 8a 46 fc
     
    54645436    pop cx                                    ; 59
    54655437    retn                                      ; c3
    5466 find_vga_entry_:                             ; 0xc2ee3 LB 0x27
     5438find_vga_entry_:                             ; 0xc2ecd LB 0x27
    54675439    push bx                                   ; 53
    54685440    push dx                                   ; 52
     
    54725444    mov AH, strict byte 0ffh                  ; b4 ff
    54735445    xor al, al                                ; 30 c0
    5474     jmp short 02ef6h                          ; eb 06
     5446    jmp short 02ee0h                          ; eb 06
    54755447    db  0feh, 0c0h
    54765448    ; inc al                                    ; fe c0
    54775449    cmp AL, strict byte 00fh                  ; 3c 0f
    5478     jnbe short 02f04h                         ; 77 0e
     5450    jnbe short 02eeeh                         ; 77 0e
    54795451    movzx bx, al                              ; 0f b6 d8
    54805452    sal bx, 003h                              ; c1 e3 03
    5481     cmp dl, byte [bx+0482fh]                  ; 3a 97 2f 48
    5482     jne short 02ef0h                          ; 75 ee
     5453    cmp dl, byte [bx+04832h]                  ; 3a 97 32 48
     5454    jne short 02edah                          ; 75 ee
    54835455    mov ah, al                                ; 88 c4
    54845456    mov al, ah                                ; 88 e0
     
    54875459    pop bx                                    ; 5b
    54885460    retn                                      ; c3
    5489 read_byte_:                                  ; 0xc2f0a LB 0xe
     5461read_byte_:                                  ; 0xc2ef4 LB 0xe
    54905462    push bx                                   ; 53
    54915463    push bp                                   ; 55
     
    54975469    pop bx                                    ; 5b
    54985470    retn                                      ; c3
    5499 write_byte_:                                 ; 0xc2f18 LB 0xe
     5471write_byte_:                                 ; 0xc2f02 LB 0xe
    55005472    push si                                   ; 56
    55015473    push bp                                   ; 55
     
    55075479    pop si                                    ; 5e
    55085480    retn                                      ; c3
    5509 read_word_:                                  ; 0xc2f26 LB 0xe
     5481read_word_:                                  ; 0xc2f10 LB 0xe
    55105482    push bx                                   ; 53
    55115483    push bp                                   ; 55
     
    55175489    pop bx                                    ; 5b
    55185490    retn                                      ; c3
    5519 write_word_:                                 ; 0xc2f34 LB 0xe
     5491write_word_:                                 ; 0xc2f1e LB 0xe
    55205492    push si                                   ; 56
    55215493    push bp                                   ; 55
     
    55275499    pop si                                    ; 5e
    55285500    retn                                      ; c3
    5529 read_dword_:                                 ; 0xc2f42 LB 0x12
     5501read_dword_:                                 ; 0xc2f2c LB 0x12
    55305502    push bx                                   ; 53
    55315503    push bp                                   ; 55
     
    55385510    pop bx                                    ; 5b
    55395511    retn                                      ; c3
    5540 printf_:                                     ; 0xc2f54 LB 0x108
     5512write_dword_:                                ; 0xc2f3e LB 0x12
     5513    push si                                   ; 56
     5514    push bp                                   ; 55
     5515    mov bp, sp                                ; 89 e5
     5516    mov si, dx                                ; 89 d6
     5517    mov es, ax                                ; 8e c0
     5518    mov word [es:si], bx                      ; 26 89 1c
     5519    mov word [es:si+002h], cx                 ; 26 89 4c 02
     5520    pop bp                                    ; 5d
     5521    pop si                                    ; 5e
     5522    retn                                      ; c3
     5523printf_:                                     ; 0xc2f50 LB 0x108
    55415524    push bx                                   ; 53
    55425525    push cx                                   ; 51
     
    55515534    mov al, byte [di]                         ; 8a 05
    55525535    test al, al                               ; 84 c0
    5553     je near 02fe8h                            ; 0f 84 79 00
     5536    je near 02fe4h                            ; 0f 84 79 00
    55545537    cmp AL, strict byte 025h                  ; 3c 25
    5555     jne short 02f7ah                          ; 75 07
     5538    jne short 02f76h                          ; 75 07
    55565539    mov cx, strict word 00001h                ; b9 01 00
    55575540    xor bx, bx                                ; 31 db
    5558     jmp short 02fe2h                          ; eb 68
     5541    jmp short 02fdeh                          ; eb 68
    55595542    test cx, cx                               ; 85 c9
    5560     je short 02fdeh                           ; 74 60
     5543    je short 02fdah                           ; 74 60
    55615544    cmp AL, strict byte 030h                  ; 3c 30
    5562     jc short 02f92h                           ; 72 10
     5545    jc short 02f8eh                           ; 72 10
    55635546    cmp AL, strict byte 039h                  ; 3c 39
    5564     jnbe short 02f92h                         ; 77 0c
     5547    jnbe short 02f8eh                         ; 77 0c
    55655548    xor ah, ah                                ; 30 e4
    55665549    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    55675550    sub ax, strict word 00030h                ; 2d 30 00
    55685551    add bx, ax                                ; 01 c3
    5569     jmp short 02fe2h                          ; eb 50
     5552    jmp short 02fdeh                          ; eb 50
    55705553    cmp AL, strict byte 078h                  ; 3c 78
    5571     jne short 02fe2h                          ; 75 4c
     5554    jne short 02fdeh                          ; 75 4c
    55725555    inc si                                    ; 46
    55735556    inc si                                    ; 46
     
    55755558    mov word [bp-004h], ax                    ; 89 46 fc
    55765559    test bx, bx                               ; 85 db
    5577     jne short 02fa5h                          ; 75 03
     5560    jne short 02fa1h                          ; 75 03
    55785561    mov bx, strict word 00004h                ; bb 04 00
    55795562    lea di, [bx-001h]                         ; 8d 7f ff
    55805563    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
    55815564    cmp bx, word [bp-002h]                    ; 3b 5e fe
    5582     jbe short 02fdah                          ; 76 28
     5565    jbe short 02fd6h                          ; 76 28
    55835566    mov cx, di                                ; 89 f9
    55845567    sal cx, 002h                              ; c1 e1 02
     
    55875570    and ax, strict word 0000fh                ; 25 0f 00
    55885571    cmp ax, strict word 00009h                ; 3d 09 00
    5589     jnbe short 02fcdh                         ; 77 09
     5572    jnbe short 02fc9h                         ; 77 09
    55905573    add ax, strict word 00030h                ; 05 30 00
    55915574    mov dx, 00504h                            ; ba 04 05
    55925575    out DX, AL                                ; ee
    5593     jmp short 02fd4h                          ; eb 07
     5576    jmp short 02fd0h                          ; eb 07
    55945577    add ax, strict word 00037h                ; 05 37 00
    55955578    mov dx, 00504h                            ; ba 04 05
     
    55975580    dec di                                    ; 4f
    55985581    inc word [bp-002h]                        ; ff 46 fe
    5599     jmp short 02fadh                          ; eb d3
     5582    jmp short 02fa9h                          ; eb d3
    56005583    xor cx, cx                                ; 31 c9
    5601     jmp short 02fe2h                          ; eb 04
     5584    jmp short 02fdeh                          ; eb 04
    56025585    mov dx, 00504h                            ; ba 04 05
    56035586    out DX, AL                                ; ee
    56045587    inc word [bp+00eh]                        ; ff 46 0e
    5605     jmp near 02f64h                           ; e9 7c ff
     5588    jmp near 02f60h                           ; e9 7c ff
    56065589    leave                                     ; c9
    56075590    pop di                                    ; 5f
     
    56225605    add ax, 00304h                            ; 05 04 03
    56235606    add al, byte [bx+di]                      ; 02 01
    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
     5607    add byte [bp+di], bl                      ; 00 1b
     5608    xor AL, strict byte 086h                  ; 34 86
     5609    xor ah, al                                ; 30 c4
     5610    xor al, bl                                ; 30 d8
     5611    xor cl, ch                                ; 30 e9
     5612    xor ch, bh                                ; 30 fd
     5613    xor byte [01831h], cl                     ; 30 0e 31 18
     5614    xor word [bp+si+031h], dx                 ; 31 52 31
     5615    push si                                   ; 56
     5616    xor word [bx+031h], sp                    ; 31 67 31
     5617    test byte [bx+di], dh                     ; 84 31
     5618    mov ax, word [0c131h]                     ; a1 31 c1
     5619    xor si, bx                                ; 31 de
     5620    xor bp, si                                ; 31 f5
     5621    xor word [bx+di], ax                      ; 31 01
     5622    db  032h, 0dch
     5623    ; xor bl, ah                                ; 32 dc
     5624    xor dl, byte [bx]                         ; 32 17
     5625    xor ax, word [bx+033h]                    ; 33 47 33
     5626    pop sp                                    ; 5c
     5627    xor bx, word [bp+03033h]                  ; 33 9e 33 30
    56475628    and AL, strict byte 023h                  ; 24 23
    56485629    and ah, byte [bx+di]                      ; 22 21
     
    56515632    adc byte [si], al                         ; 10 04
    56525633    add al, byte [bx+di]                      ; 02 01
    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
     5634    add byte [bp+di], bl                      ; 00 1b
     5635    xor AL, strict byte 022h                  ; 34 22
     5636    xor cl, byte [bx+si+032h]                 ; 32 48 32
     5637    pop cx                                    ; 59
     5638    xor ch, byte [bp+si+032h]                 ; 32 6a 32
     5639    and dh, byte [bp+si]                      ; 22 32
     5640    dec ax                                    ; 48
     5641    xor bl, byte [bx+di+032h]                 ; 32 59 32
     5642    push strict byte 00032h                   ; 6a 32
     5643    jnp short 03080h                          ; 7b 32
     5644    xchg word [bp+si], si                     ; 87 32
     5645    mov byte [0ad32h], AL                     ; a2 32 ad
     5646    xor bh, byte [bx+si-03cceh]               ; 32 b8 32 c3
    56675647    db  032h
    5668 _int10_func:                                 ; 0xc305c LB 0x3c7
     5648_int10_func:                                 ; 0xc3058 LB 0x3c7
    56695649    push si                                   ; 56
    56705650    push di                                   ; 57
     
    56745654    shr ax, 008h                              ; c1 e8 08
    56755655    cmp ax, strict word 0004fh                ; 3d 4f 00
    5676     jnbe near 0341fh                          ; 0f 87 ad 03
     5656    jnbe near 0341bh                          ; 0f 87 ad 03
    56775657    push CS                                   ; 0e
    56785658    pop ES                                    ; 07
    56795659    mov cx, strict word 00016h                ; b9 16 00
    5680     mov di, 02fefh                            ; bf ef 2f
     5660    mov di, 02febh                            ; bf eb 2f
    56815661    repne scasb                               ; f2 ae
    56825662    sal cx, 1                                 ; d1 e1
    56835663    mov di, cx                                ; 89 cf
    5684     mov ax, word [cs:di+03004h]               ; 2e 8b 85 04 30
     5664    mov ax, word [cs:di+03000h]               ; 2e 8b 85 00 30
    56855665    mov cl, byte [bp+016h]                    ; 8a 4e 16
    56865666    jmp ax                                    ; ff e0
    56875667    mov al, byte [bp+016h]                    ; 8a 46 16
    56885668    xor ah, ah                                ; 30 e4
    5689     call 00fc1h                               ; e8 2f df
     5669    call 00fc1h                               ; e8 33 df
    56905670    mov ax, word [bp+016h]                    ; 8b 46 16
    56915671    and ax, strict word 0007fh                ; 25 7f 00
    56925672    cmp ax, strict word 00007h                ; 3d 07 00
    5693     je short 030b2h                           ; 74 15
     5673    je short 030aeh                           ; 74 15
    56945674    cmp ax, strict word 00006h                ; 3d 06 00
    5695     je short 030a9h                           ; 74 07
     5675    je short 030a5h                           ; 74 07
    56965676    cmp ax, strict word 00005h                ; 3d 05 00
    5697     jbe short 030b2h                          ; 76 0b
    5698     jmp short 030bbh                          ; eb 12
     5677    jbe short 030aeh                          ; 76 0b
     5678    jmp short 030b7h                          ; eb 12
    56995679    mov ax, word [bp+016h]                    ; 8b 46 16
    57005680    xor al, al                                ; 30 c0
    57015681    or AL, strict byte 03fh                   ; 0c 3f
    5702     jmp short 030c2h                          ; eb 10
     5682    jmp short 030beh                          ; eb 10
    57035683    mov ax, word [bp+016h]                    ; 8b 46 16
    57045684    xor al, al                                ; 30 c0
    57055685    or AL, strict byte 030h                   ; 0c 30
    5706     jmp short 030c2h                          ; eb 07
     5686    jmp short 030beh                          ; eb 07
    57075687    mov ax, word [bp+016h]                    ; 8b 46 16
    57085688    xor al, al                                ; 30 c0
    57095689    or AL, strict byte 020h                   ; 0c 20
    57105690    mov word [bp+016h], ax                    ; 89 46 16
    5711     jmp near 0341fh                           ; e9 57 03
     5691    jmp near 0341bh                           ; e9 57 03
    57125692    mov al, byte [bp+014h]                    ; 8a 46 14
    57135693    movzx dx, al                              ; 0f b6 d0
     
    57155695    shr ax, 008h                              ; c1 e8 08
    57165696    xor ah, ah                                ; 30 e4
    5717     call 00daah                               ; e8 d1 dc
    5718     jmp near 0341fh                           ; e9 43 03
     5697    call 00daah                               ; e8 d5 dc
     5698    jmp near 0341bh                           ; e9 43 03
    57195699    mov dx, word [bp+012h]                    ; 8b 56 12
    57205700    mov ax, word [bp+010h]                    ; 8b 46 10
    57215701    shr ax, 008h                              ; c1 e8 08
    57225702    xor ah, ah                                ; 30 e4
    5723     call 00e4bh                               ; e8 61 dd
    5724     jmp near 0341fh                           ; e9 32 03
     5703    call 00e4bh                               ; e8 65 dd
     5704    jmp near 0341bh                           ; e9 32 03
    57255705    lea bx, [bp+012h]                         ; 8d 5e 12
    57265706    lea dx, [bp+014h]                         ; 8d 56 14
     
    57285708    shr ax, 008h                              ; c1 e8 08
    57295709    xor ah, ah                                ; 30 e4
    5730     call 00a8ch                               ; e8 8e d9
    5731     jmp near 0341fh                           ; e9 1e 03
     5710    call 00a8ch                               ; e8 92 d9
     5711    jmp near 0341bh                           ; e9 1e 03
    57325712    xor ax, ax                                ; 31 c0
    57335713    mov word [bp+016h], ax                    ; 89 46 16
     
    57355715    mov word [bp+014h], ax                    ; 89 46 14
    57365716    mov word [bp+012h], ax                    ; 89 46 12
    5737     jmp near 0341fh                           ; e9 0d 03
     5717    jmp near 0341bh                           ; e9 0d 03
    57385718    mov al, cl                                ; 88 c8
    57395719    xor ah, ah                                ; 30 e4
    5740     call 00ee9h                               ; e8 d0 dd
    5741     jmp near 0341fh                           ; e9 03 03
     5720    call 00ee9h                               ; e8 d4 dd
     5721    jmp near 0341bh                           ; e9 03 03
    57425722    mov ax, strict word 00001h                ; b8 01 00
    57435723    push ax                                   ; 50
     
    57615741    mov al, byte [bp+016h]                    ; 8a 46 16
    57625742    xor ah, ah                                ; 30 e4
    5763     call 01542h                               ; e8 ef e3
    5764     jmp near 0341fh                           ; e9 c9 02
     5743    call 01538h                               ; e8 e9 e3
     5744    jmp near 0341bh                           ; e9 c9 02
    57655745    xor ax, ax                                ; 31 c0
    5766     jmp short 0311fh                          ; eb c5
     5746    jmp short 0311bh                          ; eb c5
    57675747    lea dx, [bp+016h]                         ; 8d 56 16
    57685748    mov ax, word [bp+010h]                    ; 8b 46 10
    57695749    shr ax, 008h                              ; c1 e8 08
    57705750    xor ah, ah                                ; 30 e4
    5771     call 00acch                               ; e8 64 d9
    5772     jmp near 0341fh                           ; e9 b4 02
     5751    call 00acch                               ; e8 68 d9
     5752    jmp near 0341bh                           ; e9 b4 02
    57735753    mov cx, word [bp+014h]                    ; 8b 4e 14
    57745754    mov al, byte [bp+010h]                    ; 8a 46 10
     
    57795759    mov al, byte [bp+016h]                    ; 8a 46 16
    57805760    xor ah, ah                                ; 30 e4
    5781     call 01cceh                               ; e8 49 eb
    5782     jmp near 0341fh                           ; e9 97 02
     5761    call 01cc4h                               ; e8 43 eb
     5762    jmp near 0341bh                           ; e9 97 02
    57835763    mov cx, word [bp+014h]                    ; 8b 4e 14
    57845764    mov al, byte [bp+010h]                    ; 8a 46 10
     
    57895769    mov al, byte [bp+016h]                    ; 8a 46 16
    57905770    xor ah, ah                                ; 30 e4
    5791     call 01e31h                               ; e8 8f ec
    5792     jmp near 0341fh                           ; e9 7a 02
     5771    call 01e27h                               ; e8 89 ec
     5772    jmp near 0341bh                           ; e9 7a 02
    57935773    mov cx, word [bp+012h]                    ; 8b 4e 12
    57945774    mov bx, word [bp+014h]                    ; 8b 5e 14
     
    58005780    mov al, byte [bp-002h]                    ; 8a 46 fe
    58015781    xor ah, ah                                ; 30 e4
    5802     call 01f9bh                               ; e8 d9 ed
    5803     jmp near 0341fh                           ; e9 5a 02
     5782    call 01f91h                               ; e8 d3 ed
     5783    jmp near 0341bh                           ; e9 5a 02
    58045784    lea cx, [bp+016h]                         ; 8d 4e 16
    58055785    mov bx, word [bp+012h]                    ; 8b 5e 12
     
    58105790    mov al, byte [bp-002h]                    ; 8a 46 fe
    58115791    xor ah, ah                                ; 30 e4
    5812     call 00beeh                               ; e8 0f da
    5813     jmp near 0341fh                           ; e9 3d 02
     5792    call 00beeh                               ; e8 13 da
     5793    jmp near 0341bh                           ; e9 3d 02
    58145794    mov cx, strict word 00002h                ; b9 02 00
    58155795    mov al, byte [bp+010h]                    ; 8a 46 10
     
    58185798    mov al, byte [bp+016h]                    ; 8a 46 16
    58195799    xor ah, ah                                ; 30 e4
    5820     call 02103h                               ; e8 0d ef
    5821     jmp near 0341fh                           ; e9 26 02
     5800    call 020f9h                               ; e8 07 ef
     5801    jmp near 0341bh                           ; e9 26 02
    58225802    mov dx, word [bp+014h]                    ; 8b 56 14
    58235803    mov ax, word [bp+010h]                    ; 8b 46 10
    5824     call 00d22h                               ; e8 20 db
    5825     jmp near 0341fh                           ; e9 1a 02
     5804    call 00d22h                               ; e8 24 db
     5805    jmp near 0341bh                           ; e9 1a 02
    58265806    mov ax, word [bp+016h]                    ; 8b 46 16
    58275807    xor ah, ah                                ; 30 e4
    58285808    cmp ax, strict word 00030h                ; 3d 30 00
    5829     jnbe near 0341fh                          ; 0f 87 0e 02
     5809    jnbe near 0341bh                          ; 0f 87 0e 02
    58305810    push CS                                   ; 0e
    58315811    pop ES                                    ; 07
    58325812    mov cx, strict word 0000fh                ; b9 0f 00
    5833     mov di, 03030h                            ; bf 30 30
     5813    mov di, 0302ch                            ; bf 2c 30
    58345814    repne scasb                               ; f2 ae
    58355815    sal cx, 1                                 ; d1 e1
    58365816    mov di, cx                                ; 89 cf
    5837     mov ax, word [cs:di+0303eh]               ; 2e 8b 85 3e 30
     5817    mov ax, word [cs:di+0303ah]               ; 2e 8b 85 3a 30
    58385818    jmp ax                                    ; ff e0
    58395819    mov ax, word [bp+010h]                    ; 8b 46 10
     
    58505830    mov bx, word [bp+00ch]                    ; 8b 5e 0c
    58515831    mov dx, word [bp+01ah]                    ; 8b 56 1a
    5852     call 024a0h                               ; e8 57 f2
    5853     jmp near 0341fh                           ; e9 d3 01
     5832    call 02496h                               ; e8 51 f2
     5833    jmp near 0341bh                           ; e9 d3 01
    58545834    mov al, byte [bp+010h]                    ; 8a 46 10
    58555835    movzx dx, al                              ; 0f b6 d0
    58565836    mov al, byte [bp+016h]                    ; 8a 46 16
    58575837    xor ah, ah                                ; 30 e4
    5858     call 02518h                               ; e8 be f2
    5859     jmp near 0341fh                           ; e9 c2 01
     5838    call 0250eh                               ; e8 b8 f2
     5839    jmp near 0341bh                           ; e9 c2 01
    58605840    mov al, byte [bp+010h]                    ; 8a 46 10
    58615841    movzx dx, al                              ; 0f b6 d0
    58625842    mov al, byte [bp+016h]                    ; 8a 46 16
    58635843    xor ah, ah                                ; 30 e4
    5864     call 02584h                               ; e8 19 f3
    5865     jmp near 0341fh                           ; e9 b1 01
     5844    call 0257ah                               ; e8 13 f3
     5845    jmp near 0341bh                           ; e9 b1 01
    58665846    mov al, byte [bp+010h]                    ; 8a 46 10
    58675847    movzx dx, al                              ; 0f b6 d0
    58685848    mov al, byte [bp+016h]                    ; 8a 46 16
    58695849    xor ah, ah                                ; 30 e4
    5870     call 025f2h                               ; e8 76 f3
    5871     jmp near 0341fh                           ; e9 a0 01
     5850    call 025e8h                               ; e8 70 f3
     5851    jmp near 0341bh                           ; e9 a0 01
    58725852    mov dx, word [bp+00ch]                    ; 8b 56 0c
    58735853    mov ax, word [bp+01ah]                    ; 8b 46 1a
    5874     call 02660h                               ; e8 d8 f3
    5875     jmp near 0341fh                           ; e9 94 01
     5854    call 02656h                               ; e8 d2 f3
     5855    jmp near 0341bh                           ; e9 94 01
    58765856    mov al, byte [bp+012h]                    ; 8a 46 12
    58775857    xor ah, ah                                ; 30 e4
     
    58825862    mov dx, word [bp+00ch]                    ; 8b 56 0c
    58835863    mov ax, word [bp+01ah]                    ; 8b 46 1a
    5884     call 02665h                               ; e8 c2 f3
    5885     jmp near 0341fh                           ; e9 79 01
     5864    call 0265bh                               ; e8 bc f3
     5865    jmp near 0341bh                           ; e9 79 01
    58865866    mov al, byte [bp+010h]                    ; 8a 46 10
    58875867    xor ah, ah                                ; 30 e4
    5888     call 0266ch                               ; e8 be f3
    5889     jmp near 0341fh                           ; e9 6e 01
     5868    call 02662h                               ; e8 b8 f3
     5869    jmp near 0341bh                           ; e9 6e 01
    58905870    mov al, byte [bp+010h]                    ; 8a 46 10
    58915871    xor ah, ah                                ; 30 e4
    5892     call 02671h                               ; e8 b8 f3
    5893     jmp near 0341fh                           ; e9 63 01
     5872    call 02667h                               ; e8 b2 f3
     5873    jmp near 0341bh                           ; e9 63 01
    58945874    mov al, byte [bp+010h]                    ; 8a 46 10
    58955875    xor ah, ah                                ; 30 e4
    5896     call 02676h                               ; e8 b2 f3
    5897     jmp near 0341fh                           ; e9 58 01
     5876    call 0266ch                               ; e8 ac f3
     5877    jmp near 0341bh                           ; e9 58 01
    58985878    lea ax, [bp+012h]                         ; 8d 46 12
    58995879    push ax                                   ; 50
     
    59035883    mov ax, word [bp+010h]                    ; 8b 46 10
    59045884    shr ax, 008h                              ; c1 e8 08
    5905     call 00b6fh                               ; e8 92 d8
    5906     jmp near 0341fh                           ; e9 3f 01
     5885    call 00b6fh                               ; e8 96 d8
     5886    jmp near 0341bh                           ; e9 3f 01
    59075887    mov ax, word [bp+010h]                    ; 8b 46 10
    59085888    xor ah, ah                                ; 30 e4
    59095889    cmp ax, strict word 00036h                ; 3d 36 00
    5910     je short 03312h                           ; 74 28
     5890    je short 0330eh                           ; 74 28
    59115891    cmp ax, strict word 00035h                ; 3d 35 00
    5912     je short 032fch                           ; 74 0d
     5892    je short 032f8h                           ; 74 0d
    59135893    cmp ax, strict word 00020h                ; 3d 20 00
    5914     jne near 0341fh                           ; 0f 85 29 01
    5915     call 0267bh                               ; e8 82 f3
    5916     jmp near 0341fh                           ; e9 23 01
     5894    jne near 0341bh                           ; 0f 85 29 01
     5895    call 02671h                               ; e8 7c f3
     5896    jmp near 0341bh                           ; e9 23 01
    59175897    movzx ax, cl                              ; 0f b6 c1
    59185898    mov bx, word [bp+012h]                    ; 8b 5e 12
    59195899    mov dx, word [bp+01ah]                    ; 8b 56 1a
    5920     call 02680h                               ; e8 78 f3
     5900    call 02676h                               ; e8 72 f3
    59215901    mov ax, word [bp+016h]                    ; 8b 46 16
    59225902    xor al, al                                ; 30 c0
    59235903    or AL, strict byte 012h                   ; 0c 12
    5924     jmp near 030c2h                           ; e9 b0 fd
     5904    jmp near 030beh                           ; e9 b0 fd
    59255905    mov al, cl                                ; 88 c8
    59265906    xor ah, ah                                ; 30 e4
    5927     call 02685h                               ; e8 6c f3
    5928     jmp short 03308h                          ; eb ed
     5907    call 0267bh                               ; e8 66 f3
     5908    jmp short 03304h                          ; eb ed
    59295909    push word [bp+00ch]                       ; ff 76 0c
    59305910    push word [bp+01ah]                       ; ff 76 1a
     
    59435923    movzx ax, cl                              ; 0f b6 c1
    59445924    mov cx, word [bp+014h]                    ; 8b 4e 14
    5945     call 0268ah                               ; e8 42 f3
    5946     jmp near 0341fh                           ; e9 d4 00
     5925    call 02680h                               ; e8 3c f3
     5926    jmp near 0341bh                           ; e9 d4 00
    59475927    mov bx, si                                ; 89 f3
    59485928    mov dx, word [bp+01ah]                    ; 8b 56 1a
    59495929    mov ax, word [bp+010h]                    ; 8b 46 10
    5950     call 02721h                               ; e8 cb f3
     5930    call 02717h                               ; e8 c5 f3
    59515931    mov ax, word [bp+016h]                    ; 8b 46 16
    59525932    xor al, al                                ; 30 c0
    59535933    or AL, strict byte 01bh                   ; 0c 1b
    5954     jmp near 030c2h                           ; e9 62 fd
     5934    jmp near 030beh                           ; e9 62 fd
    59555935    mov ax, word [bp+016h]                    ; 8b 46 16
    59565936    xor ah, ah                                ; 30 e4
    59575937    cmp ax, strict word 00002h                ; 3d 02 00
    5958     je short 0338ch                           ; 74 22
     5938    je short 03388h                           ; 74 22
    59595939    cmp ax, strict word 00001h                ; 3d 01 00
    5960     je short 0337eh                           ; 74 0f
     5940    je short 0337ah                           ; 74 0f
    59615941    test ax, ax                               ; 85 c0
    5962     jne short 03398h                          ; 75 25
     5942    jne short 03394h                          ; 75 25
    59635943    lea dx, [bp+010h]                         ; 8d 56 10
    59645944    mov ax, word [bp+014h]                    ; 8b 46 14
    5965     call 0284eh                               ; e8 d2 f4
    5966     jmp short 03398h                          ; eb 1a
     5945    call 02838h                               ; e8 c0 f4
     5946    jmp short 03394h                          ; eb 1a
    59675947    mov bx, word [bp+010h]                    ; 8b 5e 10
    59685948    mov dx, word [bp+01ah]                    ; 8b 56 1a
    59695949    mov ax, word [bp+014h]                    ; 8b 46 14
    5970     call 0285dh                               ; e8 d3 f4
    5971     jmp short 03398h                          ; eb 0c
     5950    call 02847h                               ; e8 c1 f4
     5951    jmp short 03394h                          ; eb 0c
    59725952    mov bx, word [bp+010h]                    ; 8b 5e 10
    59735953    mov dx, word [bp+01ah]                    ; 8b 56 1a
    59745954    mov ax, word [bp+014h]                    ; 8b 46 14
    5975     call 02bc2h                               ; e8 2a f8
     5955    call 02bach                               ; e8 18 f8
    59765956    mov ax, word [bp+016h]                    ; 8b 46 16
    59775957    xor al, al                                ; 30 c0
    59785958    or AL, strict byte 01ch                   ; 0c 1c
    5979     jmp near 030c2h                           ; e9 20 fd
    5980     call 007d4h                               ; e8 2f d4
     5959    jmp near 030beh                           ; e9 20 fd
     5960    call 007b2h                               ; e8 11 d4
    59815961    test ax, ax                               ; 85 c0
    5982     je near 0341ah                            ; 0f 84 6f 00
     5962    je near 03416h                            ; 0f 84 6f 00
    59835963    mov ax, word [bp+016h]                    ; 8b 46 16
    59845964    xor ah, ah                                ; 30 e4
    59855965    cmp ax, strict word 00002h                ; 3d 02 00
    5986     jc short 033c8h                           ; 72 13
    5987     jbe short 033eeh                          ; 76 37
     5966    jc short 033c4h                           ; 72 13
     5967    jbe short 033eah                          ; 76 37
    59885968    cmp ax, strict word 0000ah                ; 3d 0a 00
    5989     je short 03413h                           ; 74 57
     5969    je short 0340fh                           ; 74 57
    59905970    cmp ax, strict word 00009h                ; 3d 09 00
    5991     je short 03413h                           ; 74 52
     5971    je short 0340fh                           ; 74 52
    59925972    cmp ax, strict word 00004h                ; 3d 04 00
    5993     je short 033feh                           ; 74 38
    5994     jmp short 03413h                          ; eb 4b
     5973    je short 033fah                           ; 74 38
     5974    jmp short 0340fh                          ; eb 4b
    59955975    cmp ax, strict word 00001h                ; 3d 01 00
    5996     je short 033deh                           ; 74 11
     5976    je short 033dah                           ; 74 11
    59975977    test ax, ax                               ; 85 c0
    5998     jne short 03413h                          ; 75 42
     5978    jne short 0340fh                          ; 75 42
    59995979    mov bx, si                                ; 89 f3
    60005980    mov dx, word [bp+01ah]                    ; 8b 56 1a
    60015981    lea ax, [bp+016h]                         ; 8d 46 16
    6002     call 034e7h                               ; e8 0b 01
    6003     jmp short 0341fh                          ; eb 41
     5982    call 034e5h                               ; e8 0d 01
     5983    jmp short 0341bh                          ; eb 41
    60045984    mov cx, si                                ; 89 f1
    60055985    mov bx, word [bp+01ah]                    ; 8b 5e 1a
    60065986    mov dx, word [bp+014h]                    ; 8b 56 14
    60075987    lea ax, [bp+016h]                         ; 8d 46 16
    6008     call 036d1h                               ; e8 e5 02
    6009     jmp short 0341fh                          ; eb 31
     5988    call 03612h                               ; e8 2a 02
     5989    jmp short 0341bh                          ; eb 31
    60105990    mov cx, si                                ; 89 f1
    60115991    mov bx, word [bp+01ah]                    ; 8b 5e 1a
    60125992    mov dx, word [bp+010h]                    ; 8b 56 10
    60135993    lea ax, [bp+016h]                         ; 8d 46 16
    6014     call 03781h                               ; e8 85 03
    6015     jmp short 0341fh                          ; eb 21
     5994    call 036c2h                               ; e8 ca 02
     5995    jmp short 0341bh                          ; eb 21
    60165996    lea ax, [bp+010h]                         ; 8d 46 10
    60175997    push ax                                   ; 50
     
    60206000    mov dx, word [bp+014h]                    ; 8b 56 14
    60216001    lea ax, [bp+016h]                         ; 8d 46 16
    6022     call 03970h                               ; e8 5f 05
    6023     jmp short 0341fh                          ; eb 0c
     6002    call 0389eh                               ; e8 91 04
     6003    jmp short 0341bh                          ; eb 0c
    60246004    mov word [bp+016h], 00100h                ; c7 46 16 00 01
    6025     jmp short 0341fh                          ; eb 05
     6005    jmp short 0341bh                          ; eb 05
    60266006    mov word [bp+016h], 00100h                ; c7 46 16 00 01
    60276007    leave                                     ; c9
     
    60296009    pop si                                    ; 5e
    60306010    retn                                      ; c3
    6031 dispi_set_xres_:                             ; 0xc3423 LB 0x18
     6011dispi_set_xres_:                             ; 0xc341f LB 0x18
    60326012    push bx                                   ; 53
    60336013    push dx                                   ; 52
     
    60456025    pop bx                                    ; 5b
    60466026    retn                                      ; c3
    6047 dispi_set_yres_:                             ; 0xc343b LB 0x18
     6027dispi_set_yres_:                             ; 0xc3437 LB 0x18
    60486028    push bx                                   ; 53
    60496029    push dx                                   ; 52
     
    60616041    pop bx                                    ; 5b
    60626042    retn                                      ; c3
    6063 dispi_set_bpp_:                              ; 0xc3453 LB 0x18
     6043dispi_set_bpp_:                              ; 0xc344f LB 0x18
    60646044    push bx                                   ; 53
    60656045    push dx                                   ; 52
     
    60776057    pop bx                                    ; 5b
    60786058    retn                                      ; c3
    6079 in_word_:                                    ; 0xc346b LB 0xf
     6059in_word_:                                    ; 0xc3467 LB 0xf
    60806060    push bx                                   ; 53
    60816061    push bp                                   ; 55
     
    60896069    pop bx                                    ; 5b
    60906070    retn                                      ; c3
    6091 in_byte_:                                    ; 0xc347a LB 0x11
     6071in_byte_:                                    ; 0xc3476 LB 0x11
    60926072    push bx                                   ; 53
    60936073    push bp                                   ; 55
     
    61036083    pop bx                                    ; 5b
    61046084    retn                                      ; c3
    6105 mode_info_find_mode_:                        ; 0xc348b LB 0x5c
     6085mode_info_find_mode_:                        ; 0xc3487 LB 0x5e
    61066086    push bx                                   ; 53
    61076087    push cx                                   ; 51
     
    61106090    push bp                                   ; 55
    61116091    mov bp, sp                                ; 89 e5
    6112     mov di, ax                                ; 89 c7
    6113     mov si, dx                                ; 89 d6
     6092    mov si, ax                                ; 89 c6
     6093    mov di, dx                                ; 89 d7
    61146094    xor dx, dx                                ; 31 d2
    61156095    mov ax, 003b6h                            ; b8 b6 03
    6116     call 0346bh                               ; e8 cd ff
     6096    call 03467h                               ; e8 cd ff
    61176097    cmp ax, 077cch                            ; 3d cc 77
    6118     je short 034afh                           ; 74 0c
    6119     push ax                                   ; 50
    6120     push 07ee2h                               ; 68 e2 7e
    6121     call 02f54h                               ; e8 aa fa
     6098    je short 034abh                           ; 74 0c
     6099    push ax                                   ; 50
     6100    push 07ee8h                               ; 68 e8 7e
     6101    call 02f50h                               ; e8 aa fa
    61226102    add sp, strict byte 00004h                ; 83 c4 04
    6123     jmp short 034dfh                          ; eb 30
     6103    jmp short 034ddh                          ; eb 32
    61246104    mov bx, strict word 00004h                ; bb 04 00
    61256105    mov dx, bx                                ; 89 da
    61266106    mov ax, 003b6h                            ; b8 b6 03
    6127     call 0346bh                               ; e8 b1 ff
     6107    call 03467h                               ; e8 b1 ff
    61286108    mov cx, ax                                ; 89 c1
    61296109    cmp cx, strict byte 0ffffh                ; 83 f9 ff
    6130     je short 034dfh                           ; 74 1e
     6110    je short 034ddh                           ; 74 20
    61316111    lea dx, [bx+002h]                         ; 8d 57 02
    61326112    mov ax, 003b6h                            ; b8 b6 03
    6133     call 0346bh                               ; e8 a1 ff
    6134     cmp cx, di                                ; 39 f9
    6135     jne short 034dah                          ; 75 0c
    6136     test si, si                               ; 85 f6
    6137     jne short 034d6h                          ; 75 04
     6113    call 03467h                               ; e8 a1 ff
     6114    lea dx, [bx+044h]                         ; 8d 57 44
     6115    cmp cx, si                                ; 39 f1
     6116    jne short 034d9h                          ; 75 0c
     6117    test di, di                               ; 85 ff
     6118    jne short 034d5h                          ; 75 04
    61386119    mov ax, bx                                ; 89 d8
    6139     jmp short 034e1h                          ; eb 0b
     6120    jmp short 034dfh                          ; eb 0a
    61406121    test AL, strict byte 080h                 ; a8 80
    6141     jne short 034d2h                          ; 75 f8
    6142     add bx, strict byte 00044h                ; 83 c3 44
    6143     jmp short 034b2h                          ; eb d3
     6122    jne short 034d1h                          ; 75 f8
     6123    mov bx, dx                                ; 89 d3
     6124    jmp short 034b0h                          ; eb d3
    61446125    xor ax, ax                                ; 31 c0
    61456126    pop bp                                    ; 5d
     
    61496130    pop bx                                    ; 5b
    61506131    retn                                      ; c3
    6151 vbe_biosfn_return_controller_information_: ; 0xc34e7 LB 0x1ea
     6132vbe_biosfn_return_controller_information_: ; 0xc34e5 LB 0x12d
    61526133    push cx                                   ; 51
    61536134    push si                                   ; 56
    61546135    push di                                   ; 57
    6155     enter 00006h, 000h                        ; c8 06 00 00
    6156     push ax                                   ; 50
    6157     mov si, dx                                ; 89 d6
    6158     mov di, bx                                ; 89 df
    6159     mov word [bp-004h], strict word 00022h    ; c7 46 fc 22 00
    6160     call 005d7h                               ; e8 dc d0
    6161     mov word [bp-002h], ax                    ; 89 46 fe
     6136    enter 0000ah, 000h                        ; c8 0a 00 00
     6137    mov si, ax                                ; 89 c6
     6138    mov di, dx                                ; 89 d7
     6139    mov word [bp-004h], bx                    ; 89 5e fc
     6140    mov word [bp-006h], strict word 00022h    ; c7 46 fa 22 00
     6141    call 005b5h                               ; e8 ba d0
     6142    mov word [bp-00ah], ax                    ; 89 46 f6
     6143    mov bx, word [bp-004h]                    ; 8b 5e fc
     6144    mov word [bp-002h], di                    ; 89 7e fe
    61626145    xor dx, dx                                ; 31 d2
    61636146    mov ax, 003b6h                            ; b8 b6 03
    6164     call 0346bh                               ; e8 65 ff
     6147    call 03467h                               ; e8 5b ff
    61656148    cmp ax, 077cch                            ; 3d cc 77
    6166     je short 03521h                           ; 74 16
     6149    je short 03524h                           ; 74 13
    61676150    push SS                                   ; 16
    61686151    pop ES                                    ; 07
    6169     mov bx, word [bp-008h]                    ; 8b 5e f8
    6170     mov word [es:bx], 00100h                  ; 26 c7 07 00 01
    6171     push 07efbh                               ; 68 fb 7e
    6172     call 02f54h                               ; e8 39 fa
     6152    mov word [es:si], 00100h                  ; 26 c7 04 00 01
     6153    push 07f01h                               ; 68 01 7f
     6154    call 02f50h                               ; e8 32 fa
    61736155    add sp, strict byte 00002h                ; 83 c4 02
    6174     jmp near 036cch                           ; e9 ab 01
     6156    jmp near 0360dh                           ; e9 e9 00
    61756157    mov cx, strict word 00004h                ; b9 04 00
    6176     mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
    6177     mov dx, di                                ; 89 fa
    6178     mov ax, si                                ; 89 f0
    6179     call 02f0ah                               ; e8 da f9
    6180     cmp AL, strict byte 056h                  ; 3c 56
    6181     jne short 03558h                          ; 75 24
    6182     lea dx, [di+001h]                         ; 8d 55 01
    6183     mov ax, si                                ; 89 f0
    6184     call 02f0ah                               ; e8 ce f9
    6185     cmp AL, strict byte 042h                  ; 3c 42
    6186     jne short 03558h                          ; 75 18
    6187     lea dx, [di+002h]                         ; 8d 55 02
    6188     mov ax, si                                ; 89 f0
    6189     call 02f0ah                               ; e8 c2 f9
    6190     cmp AL, strict byte 045h                  ; 3c 45
    6191     jne short 03558h                          ; 75 0c
    6192     lea dx, [di+003h]                         ; 8d 55 03
    6193     mov ax, si                                ; 89 f0
    6194     call 02f0ah                               ; e8 b6 f9
    6195     cmp AL, strict byte 032h                  ; 3c 32
    6196     je short 03587h                           ; 74 2f
    6197     mov dx, di                                ; 89 fa
    6198     mov ax, si                                ; 89 f0
    6199     call 02f0ah                               ; e8 ab f9
    6200     cmp AL, strict byte 056h                  ; 3c 56
    6201     jne short 0358ch                          ; 75 29
    6202     lea dx, [di+001h]                         ; 8d 55 01
    6203     mov ax, si                                ; 89 f0
    6204     call 02f0ah                               ; e8 9f f9
    6205     cmp AL, strict byte 045h                  ; 3c 45
    6206     jne short 0358ch                          ; 75 1d
    6207     lea dx, [di+002h]                         ; 8d 55 02
    6208     mov ax, si                                ; 89 f0
    6209     call 02f0ah                               ; e8 93 f9
    6210     cmp AL, strict byte 053h                  ; 3c 53
    6211     jne short 0358ch                          ; 75 11
    6212     lea dx, [di+003h]                         ; 8d 55 03
    6213     mov ax, si                                ; 89 f0
    6214     call 02f0ah                               ; e8 87 f9
    6215     cmp AL, strict byte 041h                  ; 3c 41
    6216     jne short 0358ch                          ; 75 05
    6217     mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
    6218     mov bx, strict word 00056h                ; bb 56 00
    6219     mov dx, di                                ; 89 fa
    6220     mov ax, si                                ; 89 f0
    6221     call 02f18h                               ; e8 82 f9
    6222     lea dx, [di+001h]                         ; 8d 55 01
    6223     mov bx, strict word 00045h                ; bb 45 00
    6224     mov ax, si                                ; 89 f0
    6225     call 02f18h                               ; e8 77 f9
    6226     lea dx, [di+002h]                         ; 8d 55 02
    6227     mov bx, strict word 00053h                ; bb 53 00
    6228     mov ax, si                                ; 89 f0
    6229     call 02f18h                               ; e8 6c f9
    6230     lea dx, [di+003h]                         ; 8d 55 03
    6231     mov bx, strict word 00041h                ; bb 41 00
    6232     mov ax, si                                ; 89 f0
    6233     call 02f18h                               ; e8 61 f9
    6234     lea dx, [di+004h]                         ; 8d 55 04
    6235     mov bx, 00200h                            ; bb 00 02
    6236     mov ax, si                                ; 89 f0
    6237     call 02f34h                               ; e8 72 f9
    6238     lea dx, [di+008h]                         ; 8d 55 08
    6239     mov bx, 0c000h                            ; bb 00 c0
    6240     mov ax, si                                ; 89 f0
    6241     call 02f34h                               ; e8 67 f9
    6242     lea dx, [di+006h]                         ; 8d 55 06
    6243     mov bx, 07e20h                            ; bb 20 7e
    6244     mov ax, si                                ; 89 f0
    6245     call 02f34h                               ; e8 5c f9
    6246     lea dx, [di+00ah]                         ; 8d 55 0a
    6247     mov bx, strict word 00001h                ; bb 01 00
    6248     mov ax, si                                ; 89 f0
    6249     call 02f18h                               ; e8 35 f9
    6250     lea dx, [di+00bh]                         ; 8d 55 0b
    6251     xor bx, bx                                ; 31 db
    6252     mov ax, si                                ; 89 f0
    6253     call 02f18h                               ; e8 2b f9
    6254     lea dx, [di+00ch]                         ; 8d 55 0c
    6255     xor bx, bx                                ; 31 db
    6256     mov ax, si                                ; 89 f0
    6257     call 02f18h                               ; e8 21 f9
    6258     lea dx, [di+00dh]                         ; 8d 55 0d
    6259     xor bx, bx                                ; 31 db
    6260     mov ax, si                                ; 89 f0
    6261     call 02f18h                               ; e8 17 f9
    6262     lea dx, [di+010h]                         ; 8d 55 10
    6263     mov bx, si                                ; 89 f3
    6264     mov ax, si                                ; 89 f0
    6265     call 02f34h                               ; e8 29 f9
    6266     lea bx, [di+022h]                         ; 8d 5d 22
    6267     lea dx, [di+00eh]                         ; 8d 55 0e
    6268     mov ax, si                                ; 89 f0
    6269     call 02f34h                               ; e8 1e f9
     6158    mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
     6159    mov es, [bp-002h]                         ; 8e 46 fe
     6160    cmp word [es:bx+002h], 03245h             ; 26 81 7f 02 45 32
     6161    jne short 0353eh                          ; 75 07
     6162    cmp word [es:bx], 04256h                  ; 26 81 3f 56 42
     6163    je short 0354dh                           ; 74 0f
     6164    cmp word [es:bx+002h], 04153h             ; 26 81 7f 02 53 41
     6165    jne short 03552h                          ; 75 0c
     6166    cmp word [es:bx], 04556h                  ; 26 81 3f 56 45
     6167    jne short 03552h                          ; 75 05
     6168    mov word [bp-008h], strict word 00001h    ; c7 46 f8 01 00
     6169    mov es, [bp-002h]                         ; 8e 46 fe
     6170    db  066h, 026h, 0c7h, 007h, 056h, 045h, 053h, 041h
     6171    ; mov dword [es:bx], strict dword 041534556h ; 66 26 c7 07 56 45 53 41
     6172    mov word [es:bx+004h], 00200h             ; 26 c7 47 04 00 02
     6173    mov word [es:bx+006h], 07e24h             ; 26 c7 47 06 24 7e
     6174    mov [es:bx+008h], ds                      ; 26 8c 5f 08
     6175    db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 000h
     6176    ; mov dword [es:bx+00ah], strict dword 000000001h ; 66 26 c7 47 0a 01 00 00 00
     6177    mov word [es:bx+010h], di                 ; 26 89 7f 10
     6178    mov ax, word [bp-004h]                    ; 8b 46 fc
     6179    add ax, strict word 00022h                ; 05 22 00
     6180    mov word [es:bx+00eh], ax                 ; 26 89 47 0e
    62706181    mov dx, strict word 0ffffh                ; ba ff ff
    62716182    mov ax, 003b6h                            ; b8 b6 03
    6272     call 0346bh                               ; e8 4c fe
    6273     lea dx, [di+012h]                         ; 8d 55 12
    6274     mov bx, ax                                ; 89 c3
    6275     mov ax, si                                ; 89 f0
    6276     call 02f34h                               ; e8 0b f9
    6277     cmp word [bp-006h], strict byte 00000h    ; 83 7e fa 00
    6278     je short 0367ch                           ; 74 4d
    6279     lea dx, [di+014h]                         ; 8d 55 14
    6280     mov bx, strict word 00003h                ; bb 03 00
    6281     mov ax, si                                ; 89 f0
    6282     call 02f34h                               ; e8 fa f8
    6283     lea dx, [di+018h]                         ; 8d 55 18
    6284     mov bx, 0c000h                            ; bb 00 c0
    6285     mov ax, si                                ; 89 f0
    6286     call 02f34h                               ; e8 ef f8
    6287     lea dx, [di+016h]                         ; 8d 55 16
    6288     mov bx, 07e35h                            ; bb 35 7e
    6289     mov ax, si                                ; 89 f0
    6290     call 02f34h                               ; e8 e4 f8
    6291     lea dx, [di+01ch]                         ; 8d 55 1c
    6292     mov bx, 0c000h                            ; bb 00 c0
    6293     mov ax, si                                ; 89 f0
    6294     call 02f34h                               ; e8 d9 f8
    6295     lea dx, [di+01ah]                         ; 8d 55 1a
    6296     mov bx, 07e48h                            ; bb 48 7e
    6297     mov ax, si                                ; 89 f0
    6298     call 02f34h                               ; e8 ce f8
    6299     lea dx, [di+020h]                         ; 8d 55 20
    6300     mov bx, 0c000h                            ; bb 00 c0
    6301     mov ax, si                                ; 89 f0
    6302     call 02f34h                               ; e8 c3 f8
    6303     lea dx, [di+01eh]                         ; 8d 55 1e
    6304     mov bx, 07e69h                            ; bb 69 7e
    6305     mov ax, si                                ; 89 f0
    6306     call 02f34h                               ; e8 b8 f8
     6183    call 03467h                               ; e8 da fe
     6184    mov es, [bp-002h]                         ; 8e 46 fe
     6185    mov word [es:bx+012h], ax                 ; 26 89 47 12
     6186    cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
     6187    je short 035beh                           ; 74 24
     6188    mov word [es:bx+014h], strict word 00003h ; 26 c7 47 14 03 00
     6189    mov word [es:bx+016h], 07e39h             ; 26 c7 47 16 39 7e
     6190    mov [es:bx+018h], ds                      ; 26 8c 5f 18
     6191    mov word [es:bx+01ah], 07e4ch             ; 26 c7 47 1a 4c 7e
     6192    mov [es:bx+01ch], ds                      ; 26 8c 5f 1c
     6193    mov word [es:bx+01eh], 07e6dh             ; 26 c7 47 1e 6d 7e
     6194    mov [es:bx+020h], ds                      ; 26 8c 5f 20
    63076195    mov dx, cx                                ; 89 ca
    63086196    add dx, strict byte 0001bh                ; 83 c2 1b
    63096197    mov ax, 003b6h                            ; b8 b6 03
    6310     call 0347ah                               ; e8 f3 fd
     6198    call 03476h                               ; e8 ad fe
    63116199    xor ah, ah                                ; 30 e4
    6312     cmp ax, word [bp-002h]                    ; 3b 46 fe
    6313     jnbe short 036a6h                         ; 77 18
     6200    cmp ax, word [bp-00ah]                    ; 3b 46 f6
     6201    jnbe short 035e9h                         ; 77 19
    63146202    mov dx, cx                                ; 89 ca
    63156203    mov ax, 003b6h                            ; b8 b6 03
    6316     call 0346bh                               ; e8 d5 fd
     6204    call 03467h                               ; e8 8f fe
     6205    mov bx, ax                                ; 89 c3
    63176206    mov dx, word [bp-004h]                    ; 8b 56 fc
    6318     add dx, di                                ; 01 fa
     6207    add dx, word [bp-006h]                    ; 03 56 fa
     6208    mov ax, di                                ; 89 f8
     6209    call 02f1eh                               ; e8 39 f9
     6210    add word [bp-006h], strict byte 00002h    ; 83 46 fa 02
     6211    add cx, strict byte 00044h                ; 83 c1 44
     6212    mov dx, cx                                ; 89 ca
     6213    mov ax, 003b6h                            ; b8 b6 03
     6214    call 03467h                               ; e8 73 fe
    63196215    mov bx, ax                                ; 89 c3
    6320     mov ax, si                                ; 89 f0
    6321     call 02f34h                               ; e8 92 f8
    6322     add word [bp-004h], strict byte 00002h    ; 83 46 fc 02
    6323     add cx, strict byte 00044h                ; 83 c1 44
    6324     mov dx, cx                                ; 89 ca
    6325     mov ax, 003b6h                            ; b8 b6 03
    6326     call 0346bh                               ; e8 ba fd
    63276216    cmp ax, strict word 0ffffh                ; 3d ff ff
    6328     jne short 0367ch                          ; 75 c6
     6217    jne short 035beh                          ; 75 c3
    63296218    mov dx, word [bp-004h]                    ; 8b 56 fc
    6330     add dx, di                                ; 01 fa
    6331     mov bx, ax                                ; 89 c3
    6332     mov ax, si                                ; 89 f0
    6333     call 02f34h                               ; e8 72 f8
     6219    add dx, word [bp-006h]                    ; 03 56 fa
     6220    mov ax, di                                ; 89 f8
     6221    call 02f1eh                               ; e8 18 f9
    63346222    push SS                                   ; 16
    63356223    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
     6224    mov word [es:si], strict word 0004fh      ; 26 c7 04 4f 00
    63386225    leave                                     ; c9
    63396226    pop di                                    ; 5f
     
    63416228    pop cx                                    ; 59
    63426229    retn                                      ; c3
    6343 vbe_biosfn_return_mode_information_:         ; 0xc36d1 LB 0xb0
     6230vbe_biosfn_return_mode_information_:         ; 0xc3612 LB 0xb0
    63446231    push si                                   ; 56
    63456232    push di                                   ; 57
     
    63546241    xor dh, dh                                ; 30 f6
    63556242    and ah, 001h                              ; 80 e4 01
    6356     call 0348bh                               ; e8 9e fd
     6243    call 03487h                               ; e8 59 fe
    63576244    mov word [bp-004h], ax                    ; 89 46 fc
    63586245    test ax, ax                               ; 85 c0
    6359     je near 03772h                            ; 0f 84 7c 00
     6246    je near 036b3h                            ; 0f 84 7c 00
    63606247    mov cx, 00100h                            ; b9 00 01
    63616248    xor ax, ax                                ; 31 c0
     
    63636250    mov es, bx                                ; 8e c3
    63646251    cld                                       ; fc
    6365     jcxz 03705h                               ; e3 02
     6252    jcxz 03646h                               ; e3 02
    63666253    rep stosb                                 ; f3 aa
    63676254    xor cx, cx                                ; 31 c9
    6368     jmp short 0370eh                          ; eb 05
     6255    jmp short 0364fh                          ; eb 05
    63696256    cmp cx, strict byte 00042h                ; 83 f9 42
    6370     jnc short 0372bh                          ; 73 1d
     6257    jnc short 0366ch                          ; 73 1d
    63716258    mov dx, word [bp-004h]                    ; 8b 56 fc
    63726259    inc dx                                    ; 42
     
    63746261    add dx, cx                                ; 01 ca
    63756262    mov ax, 003b6h                            ; b8 b6 03
    6376     call 0347ah                               ; e8 5f fd
     6263    call 03476h                               ; e8 1a fe
    63776264    movzx bx, al                              ; 0f b6 d8
    63786265    mov dx, word [bp-002h]                    ; 8b 56 fe
    63796266    add dx, cx                                ; 01 ca
    63806267    mov ax, si                                ; 89 f0
    6381     call 02f18h                               ; e8 f0 f7
    6382     inc cx                                    ; 41
    6383     jmp short 03709h                          ; eb de
     6268    call 02f02h                               ; e8 99 f8
     6269    inc cx                                    ; 41
     6270    jmp short 0364ah                          ; eb de
    63846271    mov dx, word [bp-002h]                    ; 8b 56 fe
    63856272    inc dx                                    ; 42
    63866273    inc dx                                    ; 42
    63876274    mov ax, si                                ; 89 f0
    6388     call 02f0ah                               ; e8 d5 f7
     6275    call 02ef4h                               ; e8 7e f8
    63896276    test AL, strict byte 001h                 ; a8 01
    6390     je short 03755h                           ; 74 1c
     6277    je short 03696h                           ; 74 1c
    63916278    mov dx, word [bp-002h]                    ; 8b 56 fe
    63926279    add dx, strict byte 0000ch                ; 83 c2 0c
    6393     mov bx, 00635h                            ; bb 35 06
    6394     mov ax, si                                ; 89 f0
    6395     call 02f34h                               ; e8 ed f7
     6280    mov bx, 00613h                            ; bb 13 06
     6281    mov ax, si                                ; 89 f0
     6282    call 02f1eh                               ; e8 96 f8
    63966283    mov dx, word [bp-002h]                    ; 8b 56 fe
    63976284    add dx, strict byte 0000eh                ; 83 c2 0e
    63986285    mov bx, 0c000h                            ; bb 00 c0
    63996286    mov ax, si                                ; 89 f0
    6400     call 02f34h                               ; e8 df f7
     6287    call 02f1eh                               ; e8 88 f8
    64016288    mov ax, strict word 0000bh                ; b8 0b 00
    64026289    mov dx, 001ceh                            ; ba ce 01
     
    64086295    mov bx, ax                                ; 89 c3
    64096296    mov ax, si                                ; 89 f0
    6410     call 02f34h                               ; e8 c7 f7
     6297    call 02f1eh                               ; e8 70 f8
    64116298    mov ax, strict word 0004fh                ; b8 4f 00
    6412     jmp short 03775h                          ; eb 03
     6299    jmp short 036b6h                          ; eb 03
    64136300    mov ax, 00100h                            ; b8 00 01
    64146301    push SS                                   ; 16
     
    64206307    pop si                                    ; 5e
    64216308    retn                                      ; c3
    6422 vbe_biosfn_set_mode_:                        ; 0xc3781 LB 0xf7
     6309vbe_biosfn_set_mode_:                        ; 0xc36c2 LB 0xe4
    64236310    push si                                   ; 56
     6311    push di                                   ; 57
    64246312    enter 00006h, 000h                        ; c8 06 00 00
    64256313    mov si, ax                                ; 89 c6
     
    64286316    db  00fh, 095h, 0c0h
    64296317    ; setne al                                  ; 0f 95 c0
    6430     xor ah, ah                                ; 30 e4
    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
     6318    movzx dx, al                              ; 0f b6 d0
     6319    mov ax, dx                                ; 89 d0
     6320    test dx, dx                               ; 85 d2
     6321    je short 036e0h                           ; 74 03
     6322    mov dx, strict word 00040h                ; ba 40 00
     6323    mov byte [bp-002h], dl                    ; 88 56 fe
    64366324    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
     6325    je short 036eeh                           ; 74 05
     6326    mov dx, 00080h                            ; ba 80 00
     6327    jmp short 036f0h                          ; eb 02
     6328    xor dx, dx                                ; 31 d2
     6329    mov byte [bp-004h], dl                    ; 88 56 fc
    64426330    and byte [bp-005h], 001h                  ; 80 66 fb 01
    64436331    cmp word [bp-006h], 00100h                ; 81 7e fa 00 01
    6444     jnc short 037cdh                          ; 73 12
     6332    jnc short 03710h                          ; 73 12
    64456333    xor ax, ax                                ; 31 c0
    6446     call 005f9h                               ; e8 39 ce
     6334    call 005d7h                               ; e8 d4 ce
    64476335    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    6448     call 00fc1h                               ; e8 fa d7
     6336    call 00fc1h                               ; e8 b7 d8
    64496337    mov ax, strict word 0004fh                ; b8 4f 00
    6450     jmp near 03872h                           ; e9 a5 00
     6338    jmp near 0379fh                           ; e9 8f 00
     6339    mov dx, ax                                ; 89 c2
    64516340    mov ax, word [bp-006h]                    ; 8b 46 fa
    6452     call 0348bh                               ; e8 b8 fc
     6341    call 03487h                               ; e8 6f fd
    64536342    mov bx, ax                                ; 89 c3
    6454     mov cx, ax                                ; 89 c1
    64556343    test ax, ax                               ; 85 c0
    6456     je near 0386fh                            ; 0f 84 92 00
     6344    je near 0379ch                            ; 0f 84 7c 00
    64576345    lea dx, [bx+014h]                         ; 8d 57 14
    64586346    mov ax, 003b6h                            ; b8 b6 03
    6459     call 0346bh                               ; e8 85 fc
     6347    call 03467h                               ; e8 3e fd
     6348    mov cx, ax                                ; 89 c1
    64606349    lea dx, [bx+016h]                         ; 8d 57 16
    64616350    mov ax, 003b6h                            ; b8 b6 03
    6462     call 0346bh                               ; e8 7c fc
     6351    call 03467h                               ; e8 33 fd
     6352    mov di, ax                                ; 89 c7
    64636353    lea dx, [bx+01bh]                         ; 8d 57 1b
    64646354    mov ax, 003b6h                            ; b8 b6 03
    6465     call 0347ah                               ; e8 82 fc
     6355    call 03476h                               ; e8 37 fd
     6356    mov bl, al                                ; 88 c3
    64666357    mov dl, al                                ; 88 c2
    64676358    xor ax, ax                                ; 31 c0
    6468     call 005f9h                               ; e8 fa cd
    6469     cmp dl, 004h                              ; 80 fa 04
    6470     jne short 0380ah                          ; 75 06
     6359    call 005d7h                               ; e8 8f ce
     6360    cmp bl, 004h                              ; 80 fb 04
     6361    jne short 03753h                          ; 75 06
    64716362    mov ax, strict word 0006ah                ; b8 6a 00
    6472     call 00fc1h                               ; e8 b7 d7
    6473     mov dx, cx                                ; 89 ca
    6474     add dx, strict byte 0001bh                ; 83 c2 1b
    6475     mov ax, 003b6h                            ; b8 b6 03
    6476     call 0347ah                               ; e8 65 fc
    6477     xor ah, ah                                ; 30 e4
    6478     call 03453h                               ; e8 39 fc
    6479     mov dx, cx                                ; 89 ca
    6480     add dx, strict byte 00014h                ; 83 c2 14
    6481     mov ax, 003b6h                            ; b8 b6 03
    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
    6486     mov ax, 003b6h                            ; b8 b6 03
    6487     call 0346bh                               ; e8 38 fc
    6488     call 0343bh                               ; e8 05 fc
     6363    call 00fc1h                               ; e8 6e d8
     6364    movzx ax, dl                              ; 0f b6 c2
     6365    call 0344fh                               ; e8 f6 fc
     6366    mov ax, cx                                ; 89 c8
     6367    call 0341fh                               ; e8 c1 fc
     6368    mov ax, di                                ; 89 f8
     6369    call 03437h                               ; e8 d4 fc
    64896370    xor ax, ax                                ; 31 c0
    6490     call 00617h                               ; e8 dc cd
     6371    call 005f5h                               ; e8 8d ce
    64916372    mov al, byte [bp-004h]                    ; 8a 46 fc
    64926373    or AL, strict byte 001h                   ; 0c 01
     
    64946375    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    64956376    or ax, dx                                 ; 09 d0
    6496     call 005f9h                               ; e8 ad cd
    6497     call 006f3h                               ; e8 a4 ce
     6377    call 005d7h                               ; e8 5e ce
     6378    call 006d1h                               ; e8 55 cf
    64986379    mov bx, word [bp-006h]                    ; 8b 5e fa
    64996380    mov dx, 000bah                            ; ba ba 00
    65006381    mov ax, strict word 00040h                ; b8 40 00
    6501     call 02f34h                               ; e8 d9 f6
     6382    call 02f1eh                               ; e8 96 f7
    65026383    mov al, byte [bp-004h]                    ; 8a 46 fc
    65036384    or AL, strict byte 060h                   ; 0c 60
     
    65056386    mov dx, 00087h                            ; ba 87 00
    65066387    mov ax, strict word 00040h                ; b8 40 00
    6507     call 02f18h                               ; e8 ac f6
    6508     jmp near 037c7h                           ; e9 58 ff
     6388    call 02f02h                               ; e8 69 f7
     6389    jmp near 0370ah                           ; e9 6e ff
    65096390    mov ax, 00100h                            ; b8 00 01
    65106391    mov word [ss:si], ax                      ; 36 89 04
    65116392    leave                                     ; c9
     6393    pop di                                    ; 5f
    65126394    pop si                                    ; 5e
    65136395    retn                                      ; c3
    6514 vbe_biosfn_read_video_state_size_:           ; 0xc3878 LB 0x8
     6396vbe_biosfn_read_video_state_size_:           ; 0xc37a6 LB 0x8
    65156397    push bp                                   ; 55
    65166398    mov bp, sp                                ; 89 e5
     
    65186400    pop bp                                    ; 5d
    65196401    retn                                      ; c3
    6520 vbe_biosfn_save_video_state_:                ; 0xc3880 LB 0x58
     6402vbe_biosfn_save_video_state_:                ; 0xc37ae LB 0x58
    65216403    push bx                                   ; 53
    65226404    push cx                                   ; 51
     
    65356417    mov dx, cx                                ; 89 ca
    65366418    mov ax, di                                ; 89 f8
    6537     call 02f34h                               ; e8 91 f6
     6419    call 02f1eh                               ; e8 4d f7
    65386420    inc cx                                    ; 41
    65396421    inc cx                                    ; 41
    65406422    test byte [bp-002h], 001h                 ; f6 46 fe 01
    6541     je short 038d2h                           ; 74 27
     6423    je short 03800h                           ; 74 27
    65426424    mov si, strict word 00001h                ; be 01 00
    6543     jmp short 038b5h                          ; eb 05
     6425    jmp short 037e3h                          ; eb 05
    65446426    cmp si, strict byte 00009h                ; 83 fe 09
    6545     jnbe short 038d2h                         ; 77 1d
     6427    jnbe short 03800h                         ; 77 1d
    65466428    cmp si, strict byte 00004h                ; 83 fe 04
    6547     je short 038cfh                           ; 74 15
     6429    je short 037fdh                           ; 74 15
    65486430    mov ax, si                                ; 89 f0
    65496431    mov dx, 001ceh                            ; ba ce 01
     
    65546436    mov dx, cx                                ; 89 ca
    65556437    mov ax, di                                ; 89 f8
    6556     call 02f34h                               ; e8 67 f6
     6438    call 02f1eh                               ; e8 23 f7
    65576439    inc cx                                    ; 41
    65586440    inc cx                                    ; 41
    65596441    inc si                                    ; 46
    6560     jmp short 038b0h                          ; eb de
     6442    jmp short 037deh                          ; eb de
    65616443    leave                                     ; c9
    65626444    pop di                                    ; 5f
     
    65656447    pop bx                                    ; 5b
    65666448    retn                                      ; c3
    6567 vbe_biosfn_restore_video_state_:             ; 0xc38d8 LB 0x98
     6449vbe_biosfn_restore_video_state_:             ; 0xc3806 LB 0x98
    65686450    push bx                                   ; 53
    65696451    push cx                                   ; 51
     
    65726454    mov cx, ax                                ; 89 c1
    65736455    mov bx, dx                                ; 89 d3
    6574     call 02f26h                               ; e8 40 f6
     6456    call 02f10h                               ; e8 fc f6
    65756457    mov word [bp-002h], ax                    ; 89 46 fe
    65766458    inc bx                                    ; 43
    65776459    inc bx                                    ; 43
    65786460    test byte [bp-002h], 001h                 ; f6 46 fe 01
    6579     jne short 03901h                          ; 75 10
     6461    jne short 0382fh                          ; 75 10
    65806462    mov ax, strict word 00004h                ; b8 04 00
    65816463    mov dx, 001ceh                            ; ba ce 01
     
    65846466    mov dx, 001cfh                            ; ba cf 01
    65856467    out DX, ax                                ; ef
    6586     jmp short 0396bh                          ; eb 6a
     6468    jmp short 03899h                          ; eb 6a
    65876469    mov ax, strict word 00001h                ; b8 01 00
    65886470    mov dx, 001ceh                            ; ba ce 01
     
    65906472    mov dx, bx                                ; 89 da
    65916473    mov ax, cx                                ; 89 c8
    6592     call 02f26h                               ; e8 17 f6
     6474    call 02f10h                               ; e8 d3 f6
    65936475    mov dx, 001cfh                            ; ba cf 01
    65946476    out DX, ax                                ; ef
     
    66006482    mov dx, bx                                ; 89 da
    66016483    mov ax, cx                                ; 89 c8
    6602     call 02f26h                               ; e8 03 f6
     6484    call 02f10h                               ; e8 bf f6
    66036485    mov dx, 001cfh                            ; ba cf 01
    66046486    out DX, ax                                ; ef
     
    66106492    mov dx, bx                                ; 89 da
    66116493    mov ax, cx                                ; 89 c8
    6612     call 02f26h                               ; e8 ef f5
     6494    call 02f10h                               ; e8 ab f6
    66136495    mov dx, 001cfh                            ; ba cf 01
    66146496    out DX, ax                                ; ef
     
    66226504    out DX, ax                                ; ef
    66236505    mov si, strict word 00005h                ; be 05 00
    6624     jmp short 03955h                          ; eb 05
     6506    jmp short 03883h                          ; eb 05
    66256507    cmp si, strict byte 00009h                ; 83 fe 09
    6626     jnbe short 0396bh                         ; 77 16
     6508    jnbe short 03899h                         ; 77 16
    66276509    mov ax, si                                ; 89 f0
    66286510    mov dx, 001ceh                            ; ba ce 01
     
    66306512    mov dx, bx                                ; 89 da
    66316513    mov ax, cx                                ; 89 c8
    6632     call 02f26h                               ; e8 c4 f5
     6514    call 02f10h                               ; e8 80 f6
    66336515    mov dx, 001cfh                            ; ba cf 01
    66346516    out DX, ax                                ; ef
     
    66366518    inc bx                                    ; 43
    66376519    inc si                                    ; 46
    6638     jmp short 03950h                          ; eb e5
     6520    jmp short 0387eh                          ; eb e5
    66396521    leave                                     ; c9
    66406522    pop si                                    ; 5e
     
    66426524    pop bx                                    ; 5b
    66436525    retn                                      ; c3
    6644 vbe_biosfn_save_restore_state_:              ; 0xc3970 LB 0x89
     6526vbe_biosfn_save_restore_state_:              ; 0xc389e LB 0x89
    66456527    push si                                   ; 56
    66466528    push di                                   ; 57
     
    66536535    xor ah, ah                                ; 30 e4
    66546536    cmp ax, strict word 00002h                ; 3d 02 00
    6655     je short 039cfh                           ; 74 45
     6537    je short 038fdh                           ; 74 45
    66566538    cmp ax, strict word 00001h                ; 3d 01 00
    6657     je short 039b3h                           ; 74 24
     6539    je short 038e1h                           ; 74 24
    66586540    test ax, ax                               ; 85 c0
    6659     jne short 039ebh                          ; 75 58
     6541    jne short 03919h                          ; 75 58
    66606542    mov ax, word [bp-002h]                    ; 8b 46 fe
    6661     call 0282bh                               ; e8 92 ee
     6543    call 02815h                               ; e8 4e ef
    66626544    mov cx, ax                                ; 89 c1
    66636545    test byte [bp-002h], 008h                 ; f6 46 fe 08
    6664     je short 039a6h                           ; 74 05
    6665     call 03878h                               ; e8 d4 fe
     6546    je short 038d4h                           ; 74 05
     6547    call 037a6h                               ; e8 d4 fe
    66666548    add ax, cx                                ; 01 c8
    66676549    add ax, strict word 0003fh                ; 05 3f 00
     
    66706552    pop ES                                    ; 07
    66716553    mov word [es:bx], ax                      ; 26 89 07
    6672     jmp short 039eeh                          ; eb 3b
     6554    jmp short 0391ch                          ; eb 3b
    66736555    push SS                                   ; 16
    66746556    pop ES                                    ; 07
     
    66766558    mov dx, cx                                ; 89 ca
    66776559    mov ax, word [bp-002h]                    ; 8b 46 fe
    6678     call 0285dh                               ; e8 9d ee
     6560    call 02847h                               ; e8 59 ef
    66796561    test byte [bp-002h], 008h                 ; f6 46 fe 08
    6680     je short 039eeh                           ; 74 28
     6562    je short 0391ch                           ; 74 28
    66816563    mov dx, ax                                ; 89 c2
    66826564    mov ax, cx                                ; 89 c8
    6683     call 03880h                               ; e8 b3 fe
    6684     jmp short 039eeh                          ; eb 1f
     6565    call 037aeh                               ; e8 b3 fe
     6566    jmp short 0391ch                          ; eb 1f
    66856567    push SS                                   ; 16
    66866568    pop ES                                    ; 07
     
    66886570    mov dx, cx                                ; 89 ca
    66896571    mov ax, word [bp-002h]                    ; 8b 46 fe
    6690     call 02bc2h                               ; e8 e6 f1
     6572    call 02bach                               ; e8 a2 f2
    66916573    test byte [bp-002h], 008h                 ; f6 46 fe 08
    6692     je short 039eeh                           ; 74 0c
     6574    je short 0391ch                           ; 74 0c
    66936575    mov dx, ax                                ; 89 c2
    66946576    mov ax, cx                                ; 89 c8
    6695     call 038d8h                               ; e8 ef fe
    6696     jmp short 039eeh                          ; eb 03
     6577    call 03806h                               ; e8 ef fe
     6578    jmp short 0391ch                          ; eb 03
    66976579    mov di, 00100h                            ; bf 00 01
    66986580    push SS                                   ; 16
     
    67046586    retn 00002h                               ; c2 02 00
    67056587
    6706   ; Padding 0xc07 bytes at 0xc39f9
    6707   times 3079 db 0
     6588  ; Padding 0xcd9 bytes at 0xc3927
     6589  times 3289 db 0
    67086590
    6709 section VBE32 progbits vstart=0x4600 align=1 ; size=0x111 class=CODE group=AUTO
    6710 vesa_pm_start:                               ; 0xc4600 LB 0x110
    6711     adc AL, strict byte 000h                  ; 14 00
    6712     dec bx                                    ; 4b
    6713     add byte [si], cl                         ; 00 0c
     6591section VBE32 progbits vstart=0x4600 align=1 ; size=0x115 class=CODE group=AUTO
     6592vesa_pm_start:                               ; 0xc4600 LB 0x114
     6593    sbb byte [bx+si], al                      ; 18 00
     6594    dec di                                    ; 4f
     6595    add byte [bx+si], dl                      ; 00 10
    67146596    add word [bx+si], cx                      ; 01 08
    67156597    add dh, cl                                ; 00 ce
    67166598    add di, cx                                ; 01 cf
     6599    add di, cx                                ; 01 cf
     6600    add ax, dx                                ; 01 d0
    67176601    add word [bp-048fdh], si                  ; 01 b6 03 b7
    67186602    db  003h, 0ffh
     
    67376621    db  066h, 03bh, 0d0h
    67386622    ; cmp edx, eax                              ; 66 3b d0
    6739     jne short 04646h                          ; 75 05
     6623    jne short 0464ah                          ; 75 05
    67406624    mov eax, strict dword 066c3004fh          ; 66 b8 4f 00 c3 66
    67416625    mov ax, 0014fh                            ; b8 4f 01
    67426626    retn                                      ; c3
    67436627    cmp bl, 080h                              ; 80 fb 80
    6744     je short 0465ah                           ; 74 0a
     6628    je short 0465eh                           ; 74 0a
    67456629    cmp bl, 000h                              ; 80 fb 00
    6746     je short 0466ah                           ; 74 15
     6630    je short 0466eh                           ; 74 15
    67476631    mov eax, strict dword 052c30100h          ; 66 b8 00 01 c3 52
    67486632    mov edx, strict dword 0a8ec03dah          ; 66 ba da 03 ec a8
     
    67506634    in AL, DX                                 ; ec
    67516635    test AL, strict byte 008h                 ; a8 08
    6752     je short 04664h                           ; 74 fb
     6636    je short 04668h                           ; 74 fb
    67536637    pop dx                                    ; 5a
    67546638    push ax                                   ; 50
     
    67806664    pop ax                                    ; 58
    67816665    cmp si, strict byte 00004h                ; 83 fe 04
    6782     je short 046c3h                           ; 74 17
     6666    je short 046c7h                           ; 74 17
    67836667    add si, strict byte 00007h                ; 83 c6 07
    67846668    shr si, 003h                              ; c1 ee 03
     
    67946678    ; xor dx, dx                                ; 33 d2
    67956679    div si                                    ; f7 f6
    6796     jmp short 046cfh                          ; eb 0c
     6680    jmp short 046d3h                          ; eb 0c
    67976681    shr cx, 1                                 ; d1 e9
    67986682    db  033h, 0d2h
     
    68296713    mov eax, strict dword 066c3004fh          ; 66 b8 4f 00 c3 66
    68306714    mov ax, 0014fh                            ; b8 4f 01
    6831 vesa_pm_end:                                 ; 0xc4710 LB 0x1
     6715vesa_pm_end:                                 ; 0xc4714 LB 0x1
    68326716    retn                                      ; c3
    68336717
    6834   ; Padding 0xef bytes at 0xc4711
    6835   times 239 db 0
     6718  ; Padding 0xeb bytes at 0xc4715
     6719  times 235 db 0
    68366720
    6837 section _DATA progbits vstart=0x4800 align=1 ; size=0x36e1 class=DATA group=DGROUP
    6838 _msg_vga_init:                               ; 0xc4800 LB 0x2f
    6839     db  'Oracle VM VirtualBox Version 4.1.51 VGA BIOS', 00dh, 00ah, 000h
    6840 _vga_modes:                                  ; 0xc482f LB 0x80
     6721section _DATA progbits vstart=0x4800 align=1 ; size=0x36e8 class=DATA group=DGROUP
     6722_msg_vga_init:                               ; 0xc4800 LB 0x32
     6723    db  'Oracle VM VirtualBox Version 4.2.0_RC2 VGA BIOS', 00dh, 00ah, 000h
     6724_vga_modes:                                  ; 0xc4832 LB 0x80
    68416725    db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
    68426726    db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     
    68476731    db  011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
    68486732    db  013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
    6849 _line_to_vpti:                               ; 0xc48af LB 0x10
     6733_line_to_vpti:                               ; 0xc48b2 LB 0x10
    68506734    db  017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
    6851 _dac_regs:                                   ; 0xc48bf LB 0x4
     6735_dac_regs:                                   ; 0xc48c2 LB 0x4
    68526736    dd  0ff3f3f3fh
    6853 _video_param_table:                          ; 0xc48c3 LB 0x780
     6737_video_param_table:                          ; 0xc48c6 LB 0x780
    68546738    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    68556739    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     
    69726856    db  073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
    69736857    db  03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
    6974 _palette0:                                   ; 0xc5043 LB 0xc0
     6858_palette0:                                   ; 0xc5046 LB 0xc0
    69756859    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    69766860    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
     
    69856869    db  02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
    69866870    db  03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
    6987 _palette1:                                   ; 0xc5103 LB 0xc0
     6871_palette1:                                   ; 0xc5106 LB 0xc0
    69886872    db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
    69896873    db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
     
    69986882    db  015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
    69996883    db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
    7000 _palette2:                                   ; 0xc51c3 LB 0xc0
     6884_palette2:                                   ; 0xc51c6 LB 0xc0
    70016885    db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
    70026886    db  000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
     
    70116895    db  015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
    70126896    db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
    7013 _palette3:                                   ; 0xc5283 LB 0x300
     6897_palette3:                                   ; 0xc5286 LB 0x300
    70146898    db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
    70156899    db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     
    70606944    db  00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    70616945    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7062 _static_functionality:                       ; 0xc5583 LB 0x10
     6946_static_functionality:                       ; 0xc5586 LB 0x10
    70636947    db  0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
    7064 _video_save_pointer_table:                   ; 0xc5593 LB 0x1c
    7065     db  0c3h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     6948_video_save_pointer_table:                   ; 0xc5596 LB 0x1c
     6949    db  0c6h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    70666950    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7067 _vgafont8:                                   ; 0xc55af LB 0x800
     6951_vgafont8:                                   ; 0xc55b2 LB 0x800
    70686952    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
    70696953    db  07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
     
    71947078    db  078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
    71957079    db  000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7196 _vgafont14:                                  ; 0xc5daf LB 0xe00
     7080_vgafont14:                                  ; 0xc5db2 LB 0xe00
    71977081    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    71987082    db  07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
     
    74197303    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
    74207304    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7421 _vgafont16:                                  ; 0xc6baf LB 0x1000
     7305_vgafont16:                                  ; 0xc6bb2 LB 0x1000
    74227306    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    74237307    db  000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
     
    76767560    db  000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
    76777561    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7678 _vgafont14alt:                               ; 0xc7baf LB 0x12d
     7562_vgafont14alt:                               ; 0xc7bb2 LB 0x12d
    76797563    db  01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
    76807564    db  000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
     
    76967580    db  000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
    76977581    db  018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
    7698 _vgafont16alt:                               ; 0xc7cdc LB 0x144
     7582_vgafont16alt:                               ; 0xc7cdf LB 0x145
    76997583    db  01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
    77007584    db  000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
     
    77177601    db  000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
    77187602    db  000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
    7719     db  006h, 000h, 000h, 000h
    7720 _vbebios_copyright:                          ; 0xc7e20 LB 0x15
     7603    db  006h, 000h, 000h, 000h, 000h
     7604_vbebios_copyright:                          ; 0xc7e24 LB 0x15
    77217605    db  'VirtualBox VESA BIOS', 000h
    7722 _vbebios_vendor_name:                        ; 0xc7e35 LB 0x13
     7606_vbebios_vendor_name:                        ; 0xc7e39 LB 0x13
    77237607    db  'Oracle Corporation', 000h
    7724 _vbebios_product_name:                       ; 0xc7e48 LB 0x21
     7608_vbebios_product_name:                       ; 0xc7e4c LB 0x21
    77257609    db  'Oracle VM VirtualBox VBE Adapter', 000h
    7726 _vbebios_product_revision:                   ; 0xc7e69 LB 0x24
    7727     db  'Oracle VM VirtualBox Version 4.1.51', 000h
    7728 _vbebios_info_string:                        ; 0xc7e8d LB 0x2b
     7610_vbebios_product_revision:                   ; 0xc7e6d LB 0x27
     7611    db  'Oracle VM VirtualBox Version 4.2.0_RC2', 000h
     7612_vbebios_info_string:                        ; 0xc7e94 LB 0x2b
    77297613    db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
    7730 _no_vbebios_info_string:                     ; 0xc7eb8 LB 0x29
     7614_no_vbebios_info_string:                     ; 0xc7ebf LB 0x29
    77317615    db  'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
    77327616
    7733   ; Padding 0x1 bytes at 0xc7ee1
    7734   times 1 db 0
    7735 
    7736 section CONST progbits vstart=0x7ee2 align=1 ; size=0x2e class=DATA group=DGROUP
     7617section CONST progbits vstart=0x7ee8 align=1 ; size=0x2e class=DATA group=DGROUP
    77377618    db   'Signature NOT found! %x', 00ah, 000h
    77387619    db   'Signature NOT found', 00ah, 000h
    77397620
    7740 section CONST2 progbits vstart=0x7f10 align=1 ; size=0x0 class=DATA group=DGROUP
     7621section CONST2 progbits vstart=0x7f16 align=1 ; size=0x0 class=DATA group=DGROUP
    77417622
    7742   ; Padding 0xf0 bytes at 0xc7f10
    7743     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7744     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7745     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7746     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7747     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7748     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7749     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7750     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7751     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7752     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7753     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7754     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7755     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7756     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7757     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 041h
     7623  ; Padding 0xea bytes at 0xc7f16
     7624    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7625    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7626    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7627    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7628    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7629    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7630    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7631    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7632    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7633    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7634    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7635    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7636    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7637    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7638    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh
  • trunk/src/VBox/Devices/Graphics/BIOS-new/VBoxVgaBiosAlternative.md5sum

    r42454 r43078  
    1 3cbb45d118bbb62f3fe41ea02ab546cd *VBoxVgaBios.rom
     154250906f009213dc80a23cc2201d899 *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