VirtualBox

Changeset 67683 in vbox for trunk/src/VBox/Devices/PC/BIOS


Ignore:
Timestamp:
Jun 29, 2017 8:57:09 AM (8 years ago)
Author:
vboxsync
Message:

BIOS: updated alternative source

Location:
trunk/src/VBox/Devices/PC/BIOS
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm

    r67495 r67683  
    11901190  times 1144 db 0
    11911191
    1192 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8d48 class=CODE group=AUTO
     1192section _TEXT progbits vstart=0x1600 align=1 ; size=0x8d88 class=CODE group=AUTO
    11931193rom_scan_:                                   ; 0xf1600 LB 0x50
    11941194    push bp                                   ; 55
     
    15851585    mov bx, strict word 0000ah                ; bb 0a 00
    15861586    xor cx, cx                                ; 31 c9
    1587     call 09fe0h                               ; e8 13 87
     1587    call 0a020h                               ; e8 53 87
    15881588    mov word [bp-008h], ax                    ; 89 46 f8
    15891589    mov cx, dx                                ; 89 d1
     
    18151815    mov dx, word [bp-026h]                    ; 8b 56 da
    18161816    mov si, word [bp-01eh]                    ; 8b 76 e2
    1817     call 0a010h                               ; e8 13 85
     1817    call 0a050h                               ; e8 53 85
    18181818    mov ax, dx                                ; 89 d0
    18191819    xor ah, dh                                ; 30 f4
     
    22542254    mov dx, word [es:si]                      ; 26 8b 14
    22552255    mov si, strict word 00018h                ; be 18 00
    2256     call 0a010h                               ; e8 c0 80
     2256    call 0a050h                               ; e8 00 81
    22572257    xor dh, dh                                ; 30 f6
    22582258    mov word [bp-014h], dx                    ; 89 56 ec
     
    22642264    mov dx, word [es:si]                      ; 26 8b 14
    22652265    mov si, strict word 00020h                ; be 20 00
    2266     call 0a010h                               ; e8 a0 80
     2266    call 0a050h                               ; e8 e0 80
    22672267    mov bx, dx                                ; 89 d3
    22682268    mov ax, word [bp-01ch]                    ; 8b 46 e4
     
    22952295    mov dx, word [es:si]                      ; 26 8b 14
    22962296    mov si, strict word 00008h                ; be 08 00
    2297     call 0a010h                               ; e8 4f 80
     2297    call 0a050h                               ; e8 8f 80
    22982298    mov word [bp-012h], dx                    ; 89 56 ee
    22992299    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23042304    mov dx, word [es:si]                      ; 26 8b 14
    23052305    mov si, strict word 00018h                ; be 18 00
    2306     call 0a010h                               ; e8 31 80
     2306    call 0a050h                               ; e8 71 80
    23072307    mov ah, dl                                ; 88 d4
    23082308    and ah, 00fh                              ; 80 e4 0f
     
    28612861    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    28622862    mov si, strict word 0000bh                ; be 0b 00
    2863     call 0a010h                               ; e8 89 7a
     2863    call 0a050h                               ; e8 c9 7a
    28642864    mov word [bp-024h], dx                    ; 89 56 dc
    28652865    mov word [bp-032h], cx                    ; 89 4e ce
     
    31373137    mov dx, word [bp-024h]                    ; 8b 56 dc
    31383138    mov si, strict word 00018h                ; be 18 00
    3139     call 0a010h                               ; e8 c7 77
     3139    call 0a050h                               ; e8 07 78
    31403140    xor dh, dh                                ; 30 f6
    31413141    mov word [bp-014h], dx                    ; 89 56 ec
     
    31453145    mov dx, word [bp-024h]                    ; 8b 56 dc
    31463146    mov si, strict word 00020h                ; be 20 00
    3147     call 0a010h                               ; e8 b0 77
     3147    call 0a050h                               ; e8 f0 77
    31483148    mov bx, dx                                ; 89 d3
    31493149    mov ax, word [bp-022h]                    ; 8b 46 de
     
    31793179    mov dx, word [bp-024h]                    ; 8b 56 dc
    31803180    mov si, strict word 00008h                ; be 08 00
    3181     call 0a010h                               ; e8 5c 77
     3181    call 0a050h                               ; e8 9c 77
    31823182    mov word [bp-00ch], ax                    ; 89 46 f4
    31833183    mov word [bp-00eh], bx                    ; 89 5e f2
     
    31863186    mov word [bp-018h], dx                    ; 89 56 e8
    31873187    mov si, strict word 00010h                ; be 10 00
    3188     call 0a010h                               ; e8 47 77
     3188    call 0a050h                               ; e8 87 77
    31893189    mov word [bp-024h], dx                    ; 89 56 dc
    31903190    mov ax, dx                                ; 89 d0
     
    54685468    mov dx, ss                                ; 8c d2
    54695469    lea ax, [bp-026h]                         ; 8d 46 da
    5470     call 0a030h                               ; e8 7d 62
     5470    call 0a070h                               ; e8 bd 62
    54715471    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    54725472    mov ax, strict word 00011h                ; b8 11 00
     
    59415941    xor dl, dl                                ; 30 d2
    59425942    xor cx, cx                                ; 31 c9
    5943     call 09fc0h                               ; e8 a7 5c
     5943    call 0a000h                               ; e8 e7 5c
    59445944    xor bx, bx                                ; 31 db
    59455945    add ax, si                                ; 01 f0
     
    59475947    mov bx, di                                ; 89 fb
    59485948    xor cx, cx                                ; 31 c9
    5949     call 09fc0h                               ; e8 9a 5c
     5949    call 0a000h                               ; e8 da 5c
    59505950    mov bx, ax                                ; 89 c3
    59515951    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    59825982    mov dx, ss                                ; 8c d2
    59835983    lea ax, [bp-02eh]                         ; 8d 46 d2
    5984     call 0a030h                               ; e8 b3 5c
     5984    call 0a070h                               ; e8 f3 5c
    59855985    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    59865986    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    63216321    mov dx, ss                                ; 8c d2
    63226322    lea ax, [bp-030h]                         ; 8d 46 d0
    6323     call 0a030h                               ; e8 d6 58
     6323    call 0a070h                               ; e8 16 59
    63246324    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    63256325    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    82518251    mov dx, word [bp+00ch]                    ; 8b 56 0c
    82528252    mov si, strict word 00020h                ; be 20 00
    8253     call 0a010h                               ; e8 ea 45
     8253    call 0a050h                               ; e8 2a 46
    82548254    test ax, ax                               ; 85 c0
    82558255    jne short 05a36h                          ; 75 0c
     
    82898289    mov bx, strict word 0003fh                ; bb 3f 00
    82908290    xor cx, cx                                ; 31 c9
    8291     call 09fc0h                               ; e8 41 45
     8291    call 0a000h                               ; e8 81 45
    82928292    mov bx, ax                                ; 89 c3
    82938293    mov cx, dx                                ; 89 d1
    82948294    mov ax, word [bp-004h]                    ; 8b 46 fc
    82958295    mov dx, si                                ; 89 f2
    8296     call 09fe0h                               ; e8 55 45
     8296    call 0a020h                               ; e8 95 45
    82978297    mov word [es:di+002h], ax                 ; 26 89 45 02
    82988298    cmp ax, 00400h                            ; 3d 00 04
     
    85118511    mov bx, cx                                ; 89 cb
    85128512    xor cx, cx                                ; 31 c9
    8513     call 09fc0h                               ; e8 1a 43
     8513    call 0a000h                               ; e8 5a 43
    85148514    xor bx, bx                                ; 31 db
    85158515    add ax, word [bp-008h]                    ; 03 46 f8
     
    85178517    mov bx, word [bp-00ah]                    ; 8b 5e f6
    85188518    xor cx, cx                                ; 31 c9
    8519     call 09fc0h                               ; e8 0b 43
     8519    call 0a000h                               ; e8 4b 43
    85208520    xor bx, bx                                ; 31 db
    85218521    add ax, word [bp-006h]                    ; 03 46 fa
     
    86858685    mov bx, word [bp-008h]                    ; 8b 5e f8
    86868686    xor cx, cx                                ; 31 c9
    8687     call 09fc0h                               ; e8 34 41
     8687    call 0a000h                               ; e8 74 41
    86888688    mov bx, word [bp-006h]                    ; 8b 5e fa
    86898689    xor cx, cx                                ; 31 c9
    8690     call 09fc0h                               ; e8 2c 41
     8690    call 0a000h                               ; e8 6c 41
    86918691    mov word [bp-010h], ax                    ; 89 46 f0
    86928692    mov word [bp-00ch], dx                    ; 89 56 f4
     
    88468846    xor bx, bx                                ; 31 db
    88478847    mov si, strict word 00020h                ; be 20 00
    8848     call 0a020h                               ; e8 ef 3f
     8848    call 0a060h                               ; e8 2f 40
    88498849    mov si, ax                                ; 89 c6
    88508850    mov word [bp-00ch], bx                    ; 89 5e f4
     
    90039003    mov bx, word [bp-00ch]                    ; 8b 5e f4
    90049004    mov si, strict word 00020h                ; be 20 00
    9005     call 0a010h                               ; e8 fb 3d
     9005    call 0a050h                               ; e8 3b 3e
    90069006    mov bx, di                                ; 89 fb
    90079007    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    93599359    mov bx, strict word 0000fh                ; bb 0f 00
    93609360    xor cx, cx                                ; 31 c9
    9361     call 09fe0h                               ; e8 38 3a
     9361    call 0a020h                               ; e8 78 3a
    93629362    mov cx, ax                                ; 89 c1
    93639363    mov bx, dx                                ; 89 d3
     
    1246512465    mov dx, ss                                ; 8c d2
    1246612466    lea ax, [bp-046h]                         ; 8d 46 ba
    12467     call 0a030h                               ; e8 1d 1d
     12467    call 0a070h                               ; e8 5d 1d
    1246812468    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1246912469    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1259612596    mov dx, word [bp-014h]                    ; 8b 56 ec
    1259712597    mov si, strict word 0000ch                ; be 0c 00
    12598     call 0a010h                               ; e8 b6 1b
     12598    call 0a050h                               ; e8 f6 1b
    1259912599    mov word [bp-02ah], ax                    ; 89 46 d6
    1260012600    mov word [bp-016h], bx                    ; 89 5e ea
     
    1261812618    mov dx, word [bp-014h]                    ; 8b 56 ec
    1261912619    mov si, strict word 00006h                ; be 06 00
    12620     call 0a010h                               ; e8 75 1b
     12620    call 0a050h                               ; e8 b5 1b
    1262112621    mov si, word [bp-01eh]                    ; 8b 76 e2
    1262212622    add si, dx                                ; 01 d6
     
    1263612636    mov dx, si                                ; 89 f2
    1263712637    mov si, strict word 00008h                ; be 08 00
    12638     call 0a010h                               ; e8 45 1b
     12638    call 0a050h                               ; e8 85 1b
    1263912639    mov word [bp-02eh], bx                    ; 89 5e d2
    1264012640    mov word [bp-030h], cx                    ; 89 4e d0
     
    1264512645    mov dx, word [bp-036h]                    ; 8b 56 ca
    1264612646    mov si, strict word 00010h                ; be 10 00
    12647     call 0a010h                               ; e8 2a 1b
     12647    call 0a050h                               ; e8 6a 1b
    1264812648    mov si, word [bp-032h]                    ; 8b 76 ce
    1264912649    add si, dx                                ; 01 d6
     
    1267112671    mov dx, word [bp-014h]                    ; 8b 56 ec
    1267212672    mov si, strict word 0000bh                ; be 0b 00
    12673     call 0a010h                               ; e8 de 1a
     12673    call 0a050h                               ; e8 1e 1b
    1267412674    mov si, dx                                ; 89 d6
    1267512675    mov dx, cx                                ; 89 ca
     
    1314513145    mov ax, 00080h                            ; b8 80 00
    1314613146    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13147     call 0a030h                               ; e8 7b 16
     13147    call 0a070h                               ; e8 bb 16
    1314813148    mov es, [bp-00ah]                         ; 8e 46 f6
    1314913149    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1316313163    mov dx, word [es:si]                      ; 26 8b 14
    1316413164    mov si, strict word 00008h                ; be 08 00
    13165     call 0a010h                               ; e8 17 16
     13165    call 0a050h                               ; e8 57 16
    1316613166    mov es, [bp-00ah]                         ; 8e 46 f6
    1316713167    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1317413174    mov dx, word [es:si]                      ; 26 8b 14
    1317513175    mov si, strict word 00010h                ; be 10 00
    13176     call 0a010h                               ; e8 f1 15
     13176    call 0a050h                               ; e8 31 16
    1317713177    mov es, [bp-00ah]                         ; 8e 46 f6
    1317813178    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1318613186    mov dx, word [es:si]                      ; 26 8b 14
    1318713187    mov si, strict word 00018h                ; be 18 00
    13188     call 0a010h                               ; e8 c5 15
     13188    call 0a050h                               ; e8 05 16
    1318913189    mov es, [bp-00ah]                         ; 8e 46 f6
    1319013190    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1319713197    mov dx, word [es:si]                      ; 26 8b 14
    1319813198    mov si, strict word 00020h                ; be 20 00
    13199     call 0a010h                               ; e8 9f 15
     13199    call 0a050h                               ; e8 df 15
    1320013200    mov es, [bp-00ah]                         ; 8e 46 f6
    1320113201    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1320813208    mov dx, word [es:si]                      ; 26 8b 14
    1320913209    mov si, strict word 00028h                ; be 28 00
    13210     call 0a010h                               ; e8 79 15
     13210    call 0a050h                               ; e8 b9 15
    1321113211    mov es, [bp-00ah]                         ; 8e 46 f6
    1321213212    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1322213222    mov bx, word [bp-010h]                    ; 8b 5e f0
    1322313223    xor cx, cx                                ; 31 c9
    13224     call 09fc0h                               ; e8 f4 14
     13224    call 0a000h                               ; e8 34 15
    1322513225    push dx                                   ; 52
    1322613226    push ax                                   ; 50
     
    1323213232    mov ax, 0026ah                            ; b8 6a 02
    1323313233    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13234     call 09f13h                               ; e8 2b 14
     13234    call 09f59h                               ; e8 71 14
    1323513235    mov es, [bp-00ah]                         ; 8e 46 f6
    1323613236    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1329513295    add ax, 0026ah                            ; 05 6a 02
    1329613296    mov dx, cx                                ; 89 ca
    13297     call 09f8ah                               ; e8 c5 13
     13297    call 09fd0h                               ; e8 0b 14
    1329813298    mov es, cx                                ; 8e c1
    1329913299    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     
    1337913379    mov ax, di                                ; 89 f8
    1338013380    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13381     call 0a030h                               ; e8 bb 13
     13381    call 0a070h                               ; e8 fb 13
    1338213382    lea ax, [di+00080h]                       ; 8d 85 80 00
    1338313383    mov cx, strict word 00040h                ; b9 40 00
    1338413384    xor bx, bx                                ; 31 db
    1338513385    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13386     call 0a030h                               ; e8 ac 13
     13386    call 0a070h                               ; e8 ec 13
    1338713387    lea ax, [di+00200h]                       ; 8d 85 00 02
    1338813388    mov cx, strict word 00060h                ; b9 60 00
    1338913389    xor bx, bx                                ; 31 db
    1339013390    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13391     call 0a030h                               ; e8 9d 13
     13391    call 0a070h                               ; e8 dd 13
    1339213392    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1339313393    xor ah, ah                                ; 30 e4
     
    1356313563    mov ax, si                                ; 89 f0
    1356413564    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13565     call 0a030h                               ; e8 3a 12
     13565    call 0a070h                               ; e8 7a 12
    1356613566    lea ax, [si+00080h]                       ; 8d 84 80 00
    1356713567    mov cx, strict word 00040h                ; b9 40 00
    1356813568    xor bx, bx                                ; 31 db
    1356913569    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13570     call 0a030h                               ; e8 2b 12
     13570    call 0a070h                               ; e8 6b 12
    1357113571    lea di, [si+00200h]                       ; 8d bc 00 02
    1357213572    mov cx, strict word 00060h                ; b9 60 00
     
    1357413574    mov ax, di                                ; 89 f8
    1357513575    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13576     call 0a030h                               ; e8 1a 12
     13576    call 0a070h                               ; e8 5a 12
    1357713577    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1357813578    xor bh, bh                                ; 30 ff
     
    1390613906    mov dx, word [bp+008h]                    ; 8b 56 08
    1390713907    xor cx, cx                                ; 31 c9
    13908     call 09fe0h                               ; e8 79 0e
     13908    call 0a020h                               ; e8 b9 0e
    1390913909    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1391013910    xor di, di                                ; 31 ff
     
    1393313933    mov ax, 000c0h                            ; b8 c0 00
    1393413934    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13935     call 0a040h                               ; e8 85 0e
     13935    call 0a080h                               ; e8 c5 0e
    1393613936    mov es, [bp-008h]                         ; 8e 46 f8
    1393713937    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1465214652    pop bp                                    ; 5d
    1465314653    retn                                      ; c3
    14654     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0deh, 099h, 0bch, 099h, 0c2h, 099h, 0c8h, 099h, 0ceh
    14655     db  099h, 0d4h, 099h, 0dah, 099h, 0deh, 099h
    14656 _ahci_init:                                  ; 0xf98f6 LB 0x119
     14654    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0dfh, 099h, 0bdh, 099h, 0c3h, 099h, 0c9h, 099h, 0cfh
     14655    db  099h, 0d5h, 099h, 0dbh, 099h, 0dfh, 099h
     14656_ahci_init:                                  ; 0xf98f6 LB 0x13a
    1465714657    push bp                                   ; 55
    1465814658    mov bp, sp                                ; 89 e5
     14659    push si                                   ; 56
    1465914660    push di                                   ; 57
    14660     sub sp, strict byte 0000eh                ; 83 ec 0e
     14661    sub sp, strict byte 00012h                ; 83 ec 12
    1466114662    mov ax, 00601h                            ; b8 01 06
    1466214663    mov dx, strict word 00001h                ; ba 01 00
    14663     call 09e2ah                               ; e8 24 05
     14664    call 09e4bh                               ; e8 44 05
    1466414665    mov dx, ax                                ; 89 c2
    1466514666    cmp ax, strict word 0ffffh                ; 3d ff ff
    14666     je short 09959h                           ; 74 4c
     14667    je short 0995ah                           ; 74 4c
    1466714668    xor al, al                                ; 30 c0
    1466814669    shr ax, 008h                              ; c1 e8 08
    14669     mov byte [bp-008h], al                    ; 88 46 f8
    14670     mov byte [bp-006h], dl                    ; 88 56 fa
     14670    mov byte [bp-006h], al                    ; 88 46 fa
     14671    mov byte [bp-00ah], dl                    ; 88 56 f6
    1467114672    xor dh, dh                                ; 30 f6
    1467214673    xor ah, ah                                ; 30 e4
    1467314674    mov bx, strict word 00034h                ; bb 34 00
    14674     call 09e32h                               ; e8 10 05
     14675    call 09e53h                               ; e8 30 05
    1467514676    mov cl, al                                ; 88 c1
    1467614677    test cl, cl                               ; 84 c9
    14677     je short 0995ch                           ; 74 34
     14678    je short 0995dh                           ; 74 34
    1467814679    mov bl, cl                                ; 88 cb
    1467914680    xor bh, bh                                ; 30 ff
     14681    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14682    mov byte [bp-00eh], al                    ; 88 46 f2
     14683    mov byte [bp-00dh], bh                    ; 88 7e f3
    1468014684    mov al, byte [bp-006h]                    ; 8a 46 fa
    14681     mov byte [bp-010h], al                    ; 88 46 f0
    14682     mov byte [bp-00fh], bh                    ; 88 7e f1
    14683     mov al, byte [bp-008h]                    ; 8a 46 f8
    14684     mov byte [bp-00ch], al                    ; 88 46 f4
    14685     mov byte [bp-00bh], bh                    ; 88 7e f5
    14686     mov dx, word [bp-010h]                    ; 8b 56 f0
    14687     mov ax, word [bp-00ch]                    ; 8b 46 f4
    14688     call 09e32h                               ; e8 eb 04
     14685    mov byte [bp-014h], al                    ; 88 46 ec
     14686    mov byte [bp-013h], bh                    ; 88 7e ed
     14687    mov dx, word [bp-00eh]                    ; 8b 56 f2
     14688    mov ax, word [bp-014h]                    ; 8b 46 ec
     14689    call 09e53h                               ; e8 0b 05
    1468914690    cmp AL, strict byte 012h                  ; 3c 12
    14690     je short 0995ch                           ; 74 11
     14691    je short 0995dh                           ; 74 11
    1469114692    mov bl, cl                                ; 88 cb
    1469214693    db  0feh, 0c3h
    1469314694    ; inc bl                                    ; fe c3
    1469414695    xor bh, bh                                ; 30 ff
    14695     mov dx, word [bp-010h]                    ; 8b 56 f0
    14696     mov ax, word [bp-00ch]                    ; 8b 46 f4
    14697     jmp short 0991fh                          ; eb c6
    14698     jmp near 09a09h                           ; e9 ad 00
     14696    mov dx, word [bp-00eh]                    ; 8b 56 f2
     14697    mov ax, word [bp-014h]                    ; 8b 46 ec
     14698    jmp short 09920h                          ; eb c6
     14699    jmp near 09a29h                           ; e9 cc 00
    1469914700    test cl, cl                               ; 84 c9
    14700     je short 09959h                           ; 74 f9
     14701    je short 0995ah                           ; 74 f9
    1470114702    add cl, 002h                              ; 80 c1 02
    1470214703    mov bl, cl                                ; 88 cb
    1470314704    xor bh, bh                                ; 30 ff
     14705    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14706    mov byte [bp-012h], al                    ; 88 46 ee
     14707    mov byte [bp-011h], bh                    ; 88 7e ef
    1470414708    mov al, byte [bp-006h]                    ; 8a 46 fa
    14705     mov byte [bp-00eh], al                    ; 88 46 f2
    14706     mov byte [bp-00dh], bh                    ; 88 7e f3
    14707     mov al, byte [bp-008h]                    ; 8a 46 f8
    14708     mov byte [bp-00ah], al                    ; 88 46 f6
    14709     mov byte [bp-009h], bh                    ; 88 7e f7
    14710     mov dx, word [bp-00eh]                    ; 8b 56 f2
    14711     mov ax, word [bp-00ah]                    ; 8b 46 f6
    14712     call 09e32h                               ; e8 b0 04
     14709    mov byte [bp-00ch], al                    ; 88 46 f4
     14710    mov byte [bp-00bh], bh                    ; 88 7e f5
     14711    mov dx, word [bp-012h]                    ; 8b 56 ee
     14712    mov ax, word [bp-00ch]                    ; 8b 46 f4
     14713    call 09e53h                               ; e8 d0 04
    1471314714    cmp AL, strict byte 010h                  ; 3c 10
    14714     jne short 09959h                          ; 75 d3
    14715     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     14715    jne short 0995ah                          ; 75 d3
     14716    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1471614717    mov bl, cl                                ; 88 cb
    1471714718    add bl, 002h                              ; 80 c3 02
    1471814719    xor bh, bh                                ; 30 ff
    14719     mov dx, word [bp-00eh]                    ; 8b 56 f2
    14720     mov ax, word [bp-00ah]                    ; 8b 46 f6
    14721     call 09e60h                               ; e8 c6 04
     14720    mov dx, word [bp-012h]                    ; 8b 56 ee
     14721    mov ax, word [bp-00ch]                    ; 8b 46 f4
     14722    call 09e81h                               ; e8 e6 04
    1472214723    mov dx, ax                                ; 89 c2
    1472314724    and ax, strict word 0000fh                ; 25 0f 00
    1472414725    sub ax, strict word 00004h                ; 2d 04 00
    1472514726    cmp ax, strict word 0000bh                ; 3d 0b 00
    14726     jnbe short 099deh                         ; 77 37
     14727    jnbe short 099dfh                         ; 77 37
    1472714728    push CS                                   ; 0e
    1472814729    pop ES                                    ; 07
     
    1473414735    mov ax, word [cs:di-0671ah]               ; 2e 8b 85 e6 98
    1473514736    jmp ax                                    ; ff e0
    14736     mov byte [bp-004h], 010h                  ; c6 46 fc 10
    14737     jmp short 099deh                          ; eb 1c
    14738     mov byte [bp-004h], 014h                  ; c6 46 fc 14
    14739     jmp short 099deh                          ; eb 16
    14740     mov byte [bp-004h], 018h                  ; c6 46 fc 18
    14741     jmp short 099deh                          ; eb 10
    14742     mov byte [bp-004h], 01ch                  ; c6 46 fc 1c
    14743     jmp short 099deh                          ; eb 0a
    14744     mov byte [bp-004h], 020h                  ; c6 46 fc 20
    14745     jmp short 099deh                          ; eb 04
    14746     mov byte [bp-004h], 024h                  ; c6 46 fc 24
    14747     mov cx, dx                                ; 89 d1
    14748     shr cx, 004h                              ; c1 e9 04
    14749     sal cx, 002h                              ; c1 e1 02
    14750     mov al, byte [bp-004h]                    ; 8a 46 fc
     14737    mov byte [bp-008h], 010h                  ; c6 46 f8 10
     14738    jmp short 099dfh                          ; eb 1c
     14739    mov byte [bp-008h], 014h                  ; c6 46 f8 14
     14740    jmp short 099dfh                          ; eb 16
     14741    mov byte [bp-008h], 018h                  ; c6 46 f8 18
     14742    jmp short 099dfh                          ; eb 10
     14743    mov byte [bp-008h], 01ch                  ; c6 46 f8 1c
     14744    jmp short 099dfh                          ; eb 0a
     14745    mov byte [bp-008h], 020h                  ; c6 46 f8 20
     14746    jmp short 099dfh                          ; eb 04
     14747    mov byte [bp-008h], 024h                  ; c6 46 f8 24
     14748    mov si, dx                                ; 89 d6
     14749    shr si, 004h                              ; c1 ee 04
     14750    sal si, 002h                              ; c1 e6 02
     14751    mov al, byte [bp-008h]                    ; 8a 46 f8
    1475114752    test al, al                               ; 84 c0
    14752     je short 09a09h                           ; 74 1c
     14753    je short 09a29h                           ; 74 3b
    1475314754    mov bl, al                                ; 88 c3
    1475414755    xor bh, bh                                ; 30 ff
    14755     mov dl, byte [bp-006h]                    ; 8a 56 fa
    14756     xor dh, dh                                ; 30 f6
    14757     mov al, byte [bp-008h]                    ; 8a 46 f8
    14758     xor ah, ah                                ; 30 e4
    14759     call 09e8ah                               ; e8 8c 04
     14756    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14757    mov byte [bp-010h], al                    ; 88 46 f0
     14758    mov byte [bp-00fh], bh                    ; 88 7e f1
     14759    mov al, byte [bp-006h]                    ; 8a 46 fa
     14760    mov byte [bp-016h], al                    ; 88 46 ea
     14761    mov byte [bp-015h], bh                    ; 88 7e eb
     14762    mov dx, word [bp-010h]                    ; 8b 56 f0
     14763    mov ax, word [bp-016h]                    ; 8b 46 ea
     14764    call 09eabh                               ; e8 9e 04
    1476014765    test AL, strict byte 001h                 ; a8 01
    14761     je short 09a09h                           ; 74 07
     14766    je short 09a29h                           ; 74 18
    1476214767    and AL, strict byte 0f0h                  ; 24 f0
    14763     add ax, cx                                ; 01 c8
    14764     call 09789h                               ; e8 80 fd
    14765     lea sp, [bp-002h]                         ; 8d 66 fe
     14768    add si, ax                                ; 01 c6
     14769    mov cx, strict word 00007h                ; b9 07 00
     14770    mov bx, strict word 00004h                ; bb 04 00
     14771    mov dx, word [bp-010h]                    ; 8b 56 f0
     14772    mov ax, word [bp-016h]                    ; 8b 46 ea
     14773    call 09ef9h                               ; e8 d5 04
     14774    mov ax, si                                ; 89 f0
     14775    call 09789h                               ; e8 60 fd
     14776    lea sp, [bp-004h]                         ; 8d 66 fc
    1476614777    pop di                                    ; 5f
     14778    pop si                                    ; 5e
    1476714779    pop bp                                    ; 5d
    1476814780    retn                                      ; c3
    14769 apm_out_str_:                                ; 0xf9a0f LB 0x39
     14781apm_out_str_:                                ; 0xf9a30 LB 0x39
    1477014782    push bp                                   ; 55
    1477114783    mov bp, sp                                ; 89 e5
     
    1477314785    mov bx, ax                                ; 89 c3
    1477414786    cmp byte [bx], 000h                       ; 80 3f 00
    14775     je short 09a24h                           ; 74 0a
     14787    je short 09a45h                           ; 74 0a
    1477614788    mov al, byte [bx]                         ; 8a 07
    1477714789    out DX, AL                                ; ee
     
    1478014792    db  00ah, 0c0h
    1478114793    ; or al, al                                 ; 0a c0
    14782     jne short 09a1ch                          ; 75 f8
     14794    jne short 09a3dh                          ; 75 f8
    1478314795    lea sp, [bp-002h]                         ; 8d 66 fe
    1478414796    pop bx                                    ; 5b
    1478514797    pop bp                                    ; 5d
    1478614798    retn                                      ; c3
    14787     imul bx, word [bp+si-0650fh], 09a7bh      ; 69 9a f1 9a 7b 9a
    14788     xchg si, ax                               ; 96
    14789     call far 09ac1h:09af1h                    ; 9a f1 9a c1 9a
    14790     db  0f1h
    14791     call far 09ac6h:09af7h                    ; 9a f7 9a c6 9a
    14792     db  0c6h, 09ah, 0c6h, 09ah, 036h
    14793     ; mov byte [bp+si-0653ah], 036h             ; c6 9a c6 9a 36
     14799    mov bl, byte [bp+si-064eeh]               ; 8a 9a 12 9b
     14800    pushfw                                    ; 9c
     14801    call far 09b12h:09ab7h                    ; 9a b7 9a 12 9b
     14802    loop 099f1h                               ; e2 9a
     14803    adc bl, byte [bp+di-064e8h]               ; 12 9b 18 9b
     14804    out 09ah, ax                              ; e7 9a
     14805    out 09ah, ax                              ; e7 9a
     14806    out 09ah, ax                              ; e7 9a
     14807    push di                                   ; 57
    1479414808    wait                                      ; 9b
    14795     db  0c6h, 09ah, 0c6h, 09ah, 02fh
    14796     ; mov byte [bp+si-0653ah], 02fh             ; c6 9a c6 9a 2f
     14809    out 09ah, ax                              ; e7 9a
     14810    out 09ah, ax                              ; e7 9a
     14811    push ax                                   ; 50
    1479714812    wait                                      ; 9b
    14798 _apm_function:                               ; 0xf9a48 LB 0xf3
     14813_apm_function:                               ; 0xf9a69 LB 0xf3
    1479914814    push bp                                   ; 55
    1480014815    mov bp, sp                                ; 89 e5
     
    1480414819    xor ah, ah                                ; 30 e4
    1480514820    cmp ax, strict word 0000eh                ; 3d 0e 00
    14806     jnbe short 09ac6h                         ; 77 6c
     14821    jnbe short 09ae7h                         ; 77 6c
    1480714822    mov bx, ax                                ; 89 c3
    1480814823    add bx, ax                                ; 01 c3
    1480914824    mov dx, word [bp+018h]                    ; 8b 56 18
    1481014825    or dl, 001h                               ; 80 ca 01
    14811     jmp word [cs:bx-065d6h]                   ; 2e ff a7 2a 9a
     14826    jmp word [cs:bx-065b5h]                   ; 2e ff a7 4b 9a
    1481214827    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1481314828    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1481414829    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14815     jmp near 09af1h                           ; e9 76 00
     14830    jmp near 09b12h                           ; e9 76 00
    1481614831    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14817     mov word [bp+00ch], 0a0b4h                ; c7 46 0c b4 a0
     14832    mov word [bp+00ch], 0a0f4h                ; c7 46 0c f4 a0
    1481814833    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1481914834    mov ax, strict word 0fff0h                ; b8 f0 ff
    1482014835    mov word [bp+006h], ax                    ; 89 46 06
    1482114836    mov word [bp+004h], ax                    ; 89 46 04
    14822     jmp near 09af1h                           ; e9 5b 00
     14837    jmp near 09b12h                           ; e9 5b 00
    1482314838    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1482414839    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1483314848    mov si, ax                                ; 89 c6
    1483414849    sal esi, 010h                             ; 66 c1 e6 10
    14835     jmp near 09af1h                           ; e9 30 00
     14850    jmp near 09b12h                           ; e9 30 00
    1483614851    sti                                       ; fb
    1483714852    hlt                                       ; f4
    14838     jmp near 09af1h                           ; e9 2b 00
     14853    jmp near 09b12h                           ; e9 2b 00
    1483914854    mov bx, 00da0h                            ; bb a0 0d
    1484014855    mov cx, ds                                ; 8c d9
    1484114856    mov ax, strict word 00004h                ; b8 04 00
    14842     call 01923h                               ; e8 52 7e
     14857    call 01923h                               ; e8 31 7e
    1484314858    push word [bp+00ch]                       ; ff 76 0c
    1484414859    push word [bp+012h]                       ; ff 76 12
    1484514860    push 00d29h                               ; 68 29 0d
    1484614861    push strict byte 00004h                   ; 6a 04
    14847     call 01966h                               ; e8 87 7e
     14862    call 01966h                               ; e8 66 7e
    1484814863    add sp, strict byte 00008h                ; 83 c4 08
    1484914864    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1485714872    retn                                      ; c3
    1485814873    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14859     je short 09b1ch                           ; 74 1f
     14874    je short 09b3dh                           ; 74 1f
    1486014875    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14861     je short 09b14h                           ; 74 11
     14876    je short 09b35h                           ; 74 11
    1486214877    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14863     jne short 09b24h                          ; 75 1b
     14878    jne short 09b45h                          ; 75 1b
    1486414879    mov dx, 0040fh                            ; ba 0f 04
    1486514880    mov ax, 00d10h                            ; b8 10 0d
    14866     call 09a0fh                               ; e8 fd fe
    14867     jmp short 09af1h                          ; eb dd
     14881    call 09a30h                               ; e8 fd fe
     14882    jmp short 09b12h                          ; eb dd
    1486814883    mov dx, 0040fh                            ; ba 0f 04
    1486914884    mov ax, 00d18h                            ; b8 18 0d
    14870     jmp short 09b0fh                          ; eb f3
     14885    jmp short 09b30h                          ; eb f3
    1487114886    mov dx, 0040fh                            ; ba 0f 04
    1487214887    mov ax, 00d20h                            ; b8 20 0d
    14873     jmp short 09b0fh                          ; eb eb
     14888    jmp short 09b30h                          ; eb eb
    1487414889    or ah, 00ah                               ; 80 cc 0a
    1487514890    mov word [bp+012h], ax                    ; 89 46 12
    1487614891    mov word [bp+018h], dx                    ; 89 56 18
    14877     jmp short 09af1h                          ; eb c2
     14892    jmp short 09b12h                          ; eb c2
    1487814893    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14879     jmp short 09af1h                          ; eb bb
     14894    jmp short 09b12h                          ; eb bb
    1488014895    or ah, 080h                               ; 80 cc 80
    14881     jmp short 09b27h                          ; eb ec
    14882 pci16_select_reg_:                           ; 0xf9b3b LB 0x24
     14896    jmp short 09b48h                          ; eb ec
     14897pci16_select_reg_:                           ; 0xf9b5c LB 0x24
    1488314898    push bp                                   ; 55
    1488414899    mov bp, sp                                ; 89 e5
     
    1489714912    pop bp                                    ; 5d
    1489814913    retn                                      ; c3
    14899 pci16_find_device_:                          ; 0xf9b5f LB 0xf9
     14914pci16_find_device_:                          ; 0xf9b80 LB 0xf9
    1490014915    push bp                                   ; 55
    1490114916    mov bp, sp                                ; 89 e5
     
    1491114926    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1491214927    test bl, 007h                             ; f6 c3 07
    14913     jne short 09ba7h                          ; 75 2d
     14928    jne short 09bc8h                          ; 75 2d
    1491414929    mov dx, strict word 0000eh                ; ba 0e 00
    1491514930    mov ax, bx                                ; 89 d8
    14916     call 09b3bh                               ; e8 b9 ff
     14931    call 09b5ch                               ; e8 b9 ff
    1491714932    mov dx, 00cfeh                            ; ba fe 0c
    1491814933    in AL, DX                                 ; ec
     
    1492114936    mov byte [bp-006h], al                    ; 88 46 fa
    1492214937    cmp AL, strict byte 0ffh                  ; 3c ff
    14923     jne short 09b95h                          ; 75 06
     14938    jne short 09bb6h                          ; 75 06
    1492414939    add bx, strict byte 00008h                ; 83 c3 08
    14925     jmp near 09c28h                           ; e9 93 00
     14940    jmp near 09c49h                           ; e9 93 00
    1492614941    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14927     je short 09ba2h                           ; 74 07
     14942    je short 09bc3h                           ; 74 07
    1492814943    mov word [bp-010h], strict word 00001h    ; c7 46 f0 01 00
    14929     jmp short 09ba7h                          ; eb 05
     14944    jmp short 09bc8h                          ; eb 05
    1493014945    mov word [bp-010h], strict word 00008h    ; c7 46 f0 08 00
    1493114946    mov al, byte [bp-006h]                    ; 8a 46 fa
    1493214947    and AL, strict byte 007h                  ; 24 07
    1493314948    cmp AL, strict byte 001h                  ; 3c 01
    14934     jne short 09bcfh                          ; 75 1f
     14949    jne short 09bf0h                          ; 75 1f
    1493514950    mov ax, bx                                ; 89 d8
    1493614951    shr ax, 008h                              ; c1 e8 08
    1493714952    test ax, ax                               ; 85 c0
    14938     jne short 09bcfh                          ; 75 16
     14953    jne short 09bf0h                          ; 75 16
    1493914954    mov dx, strict word 0001ah                ; ba 1a 00
    1494014955    mov ax, bx                                ; 89 d8
    14941     call 09b3bh                               ; e8 7a ff
     14956    call 09b5ch                               ; e8 7a ff
    1494214957    mov dx, 00cfeh                            ; ba fe 0c
    1494314958    in AL, DX                                 ; ec
     
    1494514960    ; sub ah, ah                                ; 2a e4
    1494614961    cmp al, byte [bp-008h]                    ; 3a 46 f8
    14947     jbe short 09bcfh                          ; 76 03
     14962    jbe short 09bf0h                          ; 76 03
    1494814963    mov byte [bp-008h], al                    ; 88 46 f8
    1494914964    test di, di                               ; 85 ff
    14950     je short 09bd8h                           ; 74 05
     14965    je short 09bf9h                           ; 74 05
    1495114966    mov dx, strict word 00008h                ; ba 08 00
    14952     jmp short 09bdah                          ; eb 02
     14967    jmp short 09bfbh                          ; eb 02
    1495314968    xor dx, dx                                ; 31 d2
    1495414969    mov ax, bx                                ; 89 d8
    14955     call 09b3bh                               ; e8 5c ff
     14970    call 09b5ch                               ; e8 5c ff
    1495614971    mov dx, 00cfch                            ; ba fc 0c
    1495714972    in eax, DX                                ; 66 ed
     
    1496414979    mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
    1496514980    test di, di                               ; 85 ff
    14966     je short 09c09h                           ; 74 0f
     14981    je short 09c2ah                           ; 74 0f
    1496714982    mov cx, strict word 00008h                ; b9 08 00
    1496814983    shr dx, 1                                 ; d1 ea
    1496914984    rcr ax, 1                                 ; d1 d8
    14970     loop 09bfdh                               ; e2 fa
     14985    loop 09c1eh                               ; e2 fa
    1497114986    mov word [bp-00ah], ax                    ; 89 46 f6
    1497214987    mov word [bp-00ch], dx                    ; 89 56 f4
    1497314988    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1497414989    cmp ax, word [bp-014h]                    ; 3b 46 ec
    14975     jne short 09c19h                          ; 75 08
     14990    jne short 09c3ah                          ; 75 08
    1497614991    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1497714992    cmp ax, word [bp-012h]                    ; 3b 46 ee
    14978     je short 09c1fh                           ; 74 06
     14993    je short 09c40h                           ; 74 06
    1497914994    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    14980     je short 09c25h                           ; 74 06
     14995    je short 09c46h                           ; 74 06
    1498114996    dec si                                    ; 4e
    1498214997    cmp si, strict byte 0ffffh                ; 83 fe ff
    14983     je short 09c39h                           ; 74 14
     14998    je short 09c5ah                           ; 74 14
    1498414999    add bx, word [bp-010h]                    ; 03 5e f0
    1498515000    mov dx, bx                                ; 89 da
     
    1498815003    xor ah, ah                                ; 30 e4
    1498915004    cmp dx, ax                                ; 39 c2
    14990     jnbe short 09c39h                         ; 77 03
    14991     jmp near 09b75h                           ; e9 3c ff
     15005    jnbe short 09c5ah                         ; 77 03
     15006    jmp near 09b96h                           ; e9 3c ff
    1499215007    cmp si, strict byte 0ffffh                ; 83 fe ff
    14993     jne short 09c42h                          ; 75 04
     15008    jne short 09c63h                          ; 75 04
    1499415009    mov ax, bx                                ; 89 d8
    14995     jmp short 09c45h                          ; eb 03
     15010    jmp short 09c66h                          ; eb 03
    1499615011    mov ax, strict word 0ffffh                ; b8 ff ff
    1499715012    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1500015015    pop bp                                    ; 5d
    1500115016    retn                                      ; c3
    15002     cmp word [di-062aeh], bx                  ; 39 9d 52 9d
    15003     db  064h, 09dh
    15004     ; fs popfw                                  ; 64 9d
    15005     js short 09bf1h                           ; 78 9d
    15006     mov bl, byte [di-06263h]                  ; 8a 9d 9d 9d
    15007 _pci16_function:                             ; 0xf9c58 LB 0x1d2
     15017    pop dx                                    ; 5a
     15018    popfw                                     ; 9d
     15019    jnc short 09c0eh                          ; 73 9d
     15020    test word [di-06267h], bx                 ; 85 9d 99 9d
     15021    stosw                                     ; ab
     15022    popfw                                     ; 9d
     15023    db  0beh
     15024    popfw                                     ; 9d
     15025_pci16_function:                             ; 0xf9c79 LB 0x1d2
    1500815026    push bp                                   ; 55
    1500915027    mov bp, sp                                ; 89 e5
     
    1501915037    xor ah, ah                                ; 30 e4
    1502015038    cmp bx, strict byte 00003h                ; 83 fb 03
    15021     jc short 09c8ah                           ; 72 13
    15022     jbe short 09cddh                          ; 76 64
     15039    jc short 09cabh                           ; 72 13
     15040    jbe short 09cfeh                          ; 76 64
    1502315041    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15024     je short 09ce5h                           ; 74 67
     15042    je short 09d06h                           ; 74 67
    1502515043    cmp bx, strict byte 00008h                ; 83 fb 08
    15026     jc short 09c94h                           ; 72 11
     15044    jc short 09cb5h                           ; 72 11
    1502715045    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15028     jbe short 09ce8h                          ; 76 60
    15029     jmp short 09c94h                          ; eb 0a
     15046    jbe short 09d09h                          ; 76 60
     15047    jmp short 09cb5h                          ; eb 0a
    1503015048    cmp bx, strict byte 00002h                ; 83 fb 02
    15031     je short 09cb3h                           ; 74 24
     15049    je short 09cd4h                           ; 74 24
    1503215050    cmp bx, strict byte 00001h                ; 83 fb 01
    15033     je short 09c97h                           ; 74 03
    15034     jmp near 09df6h                           ; e9 5f 01
     15051    je short 09cb8h                           ; 74 03
     15052    jmp near 09e17h                           ; e9 5f 01
    1503515053    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1503615054    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1503815056    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1503915057    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15040     jmp near 09e23h                           ; e9 70 01
     15058    jmp near 09e44h                           ; e9 70 01
    1504115059    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15042     jne short 09cbfh                          ; 75 06
     15060    jne short 09ce0h                          ; 75 06
    1504315061    or ah, 083h                               ; 80 cc 83
    15044     jmp near 09e1ch                           ; e9 5d 01
     15062    jmp near 09e3dh                           ; e9 5d 01
    1504515063    mov bx, word [bp+008h]                    ; 8b 5e 08
    1504615064    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1504715065    mov ax, word [bp+018h]                    ; 8b 46 18
    1504815066    xor cx, cx                                ; 31 c9
    15049     call 09b5fh                               ; e8 92 fe
     15067    call 09b80h                               ; e8 92 fe
    1505015068    cmp ax, strict word 0ffffh                ; 3d ff ff
    15051     jne short 09cdfh                          ; 75 0d
     15069    jne short 09d00h                          ; 75 0d
    1505215070    mov ax, word [bp+020h]                    ; 8b 46 20
    1505315071    xor ah, ah                                ; 30 e4
    1505415072    or ah, 086h                               ; 80 cc 86
    15055     jmp near 09e1ch                           ; e9 3f 01
    15056     jmp short 09ceah                          ; eb 0b
     15073    jmp near 09e3dh                           ; e9 3f 01
     15074    jmp short 09d0bh                          ; eb 0b
    1505715075    mov word [bp+014h], ax                    ; 89 46 14
    15058     jmp near 09e23h                           ; e9 3e 01
    15059     jmp near 09db1h                           ; e9 c9 00
    15060     jmp short 09d0fh                          ; eb 25
     15076    jmp near 09e44h                           ; e9 3e 01
     15077    jmp near 09dd2h                           ; e9 c9 00
     15078    jmp short 09d30h                          ; eb 25
    1506115079    mov bx, word [bp+008h]                    ; 8b 5e 08
    1506215080    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1506315081    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1506415082    mov cx, strict word 00001h                ; b9 01 00
    15065     call 09b5fh                               ; e8 66 fe
     15083    call 09b80h                               ; e8 66 fe
    1506615084    cmp ax, strict word 0ffffh                ; 3d ff ff
    15067     jne short 09d09h                          ; 75 0b
     15085    jne short 09d2ah                          ; 75 0b
    1506815086    mov ax, word [bp+020h]                    ; 8b 46 20
    1506915087    xor ah, ah                                ; 30 e4
    1507015088    or ah, 086h                               ; 80 cc 86
    15071     jmp near 09e1ch                           ; e9 13 01
     15089    jmp near 09e3dh                           ; e9 13 01
    1507215090    mov word [bp+014h], ax                    ; 89 46 14
    15073     jmp near 09e23h                           ; e9 14 01
     15091    jmp near 09e44h                           ; e9 14 01
    1507415092    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15075     jc short 09d1ch                           ; 72 06
     15093    jc short 09d3dh                           ; 72 06
    1507615094    or ah, 087h                               ; 80 cc 87
    15077     jmp near 09e1ch                           ; e9 00 01
     15095    jmp near 09e3dh                           ; e9 00 01
    1507815096    mov dx, word [bp+004h]                    ; 8b 56 04
    1507915097    mov ax, word [bp+014h]                    ; 8b 46 14
    15080     call 09b3bh                               ; e8 16 fe
     15098    call 09b5ch                               ; e8 16 fe
    1508115099    mov bx, word [bp+020h]                    ; 8b 5e 20
    1508215100    xor bh, bh                                ; 30 ff
    1508315101    sub bx, strict byte 00008h                ; 83 eb 08
    1508415102    cmp bx, strict byte 00005h                ; 83 fb 05
    15085     jnbe short 09d9ah                         ; 77 68
     15103    jnbe short 09dbbh                         ; 77 68
    1508615104    add bx, bx                                ; 01 db
    15087     jmp word [cs:bx-063b4h]                   ; 2e ff a7 4c 9c
     15105    jmp word [cs:bx-06393h]                   ; 2e ff a7 6d 9c
    1508815106    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1508915107    xor bl, bl                                ; 30 db
     
    1509615114    or bx, ax                                 ; 09 c3
    1509715115    mov word [bp+01ch], bx                    ; 89 5e 1c
    15098     jmp short 09d9ah                          ; eb 48
     15116    jmp short 09dbbh                          ; eb 48
    1509915117    mov dx, word [bp+004h]                    ; 8b 56 04
    1510015118    xor dh, dh                                ; 30 f6
     
    1510315121    in ax, DX                                 ; ed
    1510415122    mov word [bp+01ch], ax                    ; 89 46 1c
    15105     jmp short 09d9ah                          ; eb 36
     15123    jmp short 09dbbh                          ; eb 36
    1510615124    mov dx, 00cfch                            ; ba fc 0c
    1510715125    in eax, DX                                ; 66 ed
     
    1511215130    mov word [bp+01ch], ax                    ; 89 46 1c
    1511315131    mov word [bp+01eh], dx                    ; 89 56 1e
    15114     jmp short 09d9ah                          ; eb 22
     15132    jmp short 09dbbh                          ; eb 22
    1511515133    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1511615134    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1511915137    add dx, 00cfch                            ; 81 c2 fc 0c
    1512015138    out DX, AL                                ; ee
    15121     jmp short 09d9ah                          ; eb 10
     15139    jmp short 09dbbh                          ; eb 10
    1512215140    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1512315141    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1512615144    add dx, 00cfch                            ; 81 c2 fc 0c
    1512715145    out DX, ax                                ; ef
    15128     jmp near 09e23h                           ; e9 86 00
     15146    jmp near 09e44h                           ; e9 86 00
    1512915147    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1513015148    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1513515153    ; mov ax, cx                                ; 8b c1
    1513615154    out DX, eax                               ; 66 ef
    15137     jmp short 09e23h                          ; eb 72
     15155    jmp short 09e44h                          ; eb 72
    1513815156    mov bx, word [bp+004h]                    ; 8b 5e 04
    1513915157    mov es, [bp+026h]                         ; 8e 46 26
    1514015158    mov word [bp-008h], bx                    ; 89 5e f8
    1514115159    mov [bp-006h], es                         ; 8c 46 fa
    15142     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     15160    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1514315161    cmp cx, word [es:bx]                      ; 26 3b 0f
    15144     jbe short 09dd7h                          ; 76 11
     15162    jbe short 09df8h                          ; 76 11
    1514515163    mov ax, word [bp+020h]                    ; 8b 46 20
    1514615164    xor ah, ah                                ; 30 e4
     
    1514815166    mov word [bp+020h], ax                    ; 89 46 20
    1514915167    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15150     jmp short 09debh                          ; eb 14
     15168    jmp short 09e0ch                          ; eb 14
    1515115169    les di, [es:bx+002h]                      ; 26 c4 7f 02
    15152     mov si, 0f2c0h                            ; be c0 f2
     15170    mov si, 0f1a0h                            ; be a0 f1
    1515315171    mov dx, ds                                ; 8c da
    1515415172    push DS                                   ; 1e
     
    1515715175    pop DS                                    ; 1f
    1515815176    mov word [bp+014h], 00a00h                ; c7 46 14 00 0a
    15159     mov ax, word [0f4a0h]                     ; a1 a0 f4
     15177    mov ax, word [0f380h]                     ; a1 80 f3
    1516015178    les bx, [bp-008h]                         ; c4 5e f8
    1516115179    mov word [es:bx], ax                      ; 26 89 07
    15162     jmp short 09e23h                          ; eb 2d
     15180    jmp short 09e44h                          ; eb 2d
    1516315181    mov bx, 00da0h                            ; bb a0 0d
    1516415182    mov cx, ds                                ; 8c d9
    1516515183    mov ax, strict word 00004h                ; b8 04 00
    15166     call 01923h                               ; e8 22 7b
     15184    call 01923h                               ; e8 01 7b
    1516715185    mov ax, word [bp+014h]                    ; 8b 46 14
    1516815186    push ax                                   ; 50
     
    1517115189    push 00d5ch                               ; 68 5c 0d
    1517215190    push strict byte 00004h                   ; 6a 04
    15173     call 01966h                               ; e8 55 7b
     15191    call 01966h                               ; e8 34 7b
    1517415192    add sp, strict byte 00008h                ; 83 c4 08
    1517515193    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1518315201    pop bp                                    ; 5d
    1518415202    retn                                      ; c3
    15185 pci_find_classcode_:                         ; 0xf9e2a LB 0x8
     15203pci_find_classcode_:                         ; 0xf9e4b LB 0x8
    1518615204    push bp                                   ; 55
    1518715205    mov bp, sp                                ; 89 e5
     
    1518915207    pop bp                                    ; 5d
    1519015208    retn                                      ; c3
    15191 pci_read_config_byte_:                       ; 0xf9e32 LB 0x2e
     15209pci_read_config_byte_:                       ; 0xf9e53 LB 0x2e
    1519215210    push bp                                   ; 55
    1519315211    mov bp, sp                                ; 89 e5
     
    1521515233    pop bp                                    ; 5d
    1521615234    retn                                      ; c3
    15217 pci_read_config_word_:                       ; 0xf9e60 LB 0x2a
     15235pci_read_config_word_:                       ; 0xf9e81 LB 0x2a
    1521815236    push bp                                   ; 55
    1521915237    mov bp, sp                                ; 89 e5
     
    1523915257    pop bp                                    ; 5d
    1524015258    retn                                      ; c3
    15241 pci_read_config_dword_:                      ; 0xf9e8a LB 0x4e
     15259pci_read_config_dword_:                      ; 0xf9eab LB 0x4e
    1524215260    push bp                                   ; 55
    1524315261    mov bp, sp                                ; 89 e5
     
    1526115279    int 01ah                                  ; cd 1a
    1526215280    test cx, cx                               ; 85 c9
    15263     jne short 09ec9h                          ; 75 14
     15281    jne short 09eeah                          ; 75 14
    1526415282    mov al, byte [bp-006h]                    ; 8a 46 fa
    1526515283    xor ah, ah                                ; 30 e4
     
    1527115289    int 01ah                                  ; cd 1a
    1527215290    test cx, cx                               ; 85 c9
    15273     je short 09eceh                           ; 74 05
     15291    je short 09eefh                           ; 74 05
    1527415292    mov ax, strict word 00001h                ; b8 01 00
    15275     jmp short 09ed0h                          ; eb 02
     15293    jmp short 09ef1h                          ; eb 02
    1527615294    xor ax, ax                                ; 31 c0
    1527715295    cwd                                       ; 99
     
    1528115299    pop bp                                    ; 5d
    1528215300    retn                                      ; c3
    15283 vds_is_present_:                             ; 0xf9ed8 LB 0x1d
     15301pci_write_config_word_:                      ; 0xf9ef9 LB 0x25
     15302    push bp                                   ; 55
     15303    mov bp, sp                                ; 89 e5
     15304    push di                                   ; 57
     15305    push ax                                   ; 50
     15306    mov byte [bp-004h], al                    ; 88 46 fc
     15307    mov al, bl                                ; 88 d8
     15308    xor ah, ah                                ; 30 e4
     15309    mov di, ax                                ; 89 c7
     15310    mov al, byte [bp-004h]                    ; 8a 46 fc
     15311    mov bx, ax                                ; 89 c3
     15312    sal bx, 008h                              ; c1 e3 08
     15313    mov al, dl                                ; 88 d0
     15314    or bx, ax                                 ; 09 c3
     15315    mov ax, 0b10ch                            ; b8 0c b1
     15316    int 01ah                                  ; cd 1a
     15317    lea sp, [bp-002h]                         ; 8d 66 fe
     15318    pop di                                    ; 5f
     15319    pop bp                                    ; 5d
     15320    retn                                      ; c3
     15321vds_is_present_:                             ; 0xf9f1e LB 0x1d
    1528415322    push bx                                   ; 53
    1528515323    push bp                                   ; 55
     
    1528915327    mov es, ax                                ; 8e c0
    1529015328    test byte [es:bx], 020h                   ; 26 f6 07 20
    15291     je short 09ef0h                           ; 74 06
     15329    je short 09f36h                           ; 74 06
    1529215330    mov ax, strict word 00001h                ; b8 01 00
    1529315331    pop bp                                    ; 5d
     
    1529815336    pop bx                                    ; 5b
    1529915337    retn                                      ; c3
    15300 vds_real_to_lin_:                            ; 0xf9ef5 LB 0x1e
     15338vds_real_to_lin_:                            ; 0xf9f3b LB 0x1e
    1530115339    push bx                                   ; 53
    1530215340    push cx                                   ; 51
     
    1530915347    sal ax, 1                                 ; d1 e0
    1531015348    rcl dx, 1                                 ; d1 d2
    15311     loop 09f03h                               ; e2 fa
     15349    loop 09f49h                               ; e2 fa
    1531215350    xor cx, cx                                ; 31 c9
    1531315351    add ax, bx                                ; 01 d8
     
    1531715355    pop bx                                    ; 5b
    1531815356    retn                                      ; c3
    15319 vds_build_sg_list_:                          ; 0xf9f13 LB 0x77
     15357vds_build_sg_list_:                          ; 0xf9f59 LB 0x77
    1532015358    push bp                                   ; 55
    1532115359    mov bp, sp                                ; 89 e5
     
    1533115369    mov bx, word [bp+006h]                    ; 8b 5e 06
    1533215370    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15333     call 09ef5h                               ; e8 c3 ff
     15371    call 09f3bh                               ; e8 c3 ff
    1533415372    mov es, si                                ; 8e c6
    1533515373    mov word [es:di+004h], ax                 ; 26 89 45 04
    1533615374    mov word [es:di+006h], dx                 ; 26 89 55 06
    1533715375    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15338     call 09ed8h                               ; e8 93 ff
     15376    call 09f1eh                               ; e8 93 ff
    1533915377    test ax, ax                               ; 85 c0
    15340     je short 09f5ah                           ; 74 11
     15378    je short 09fa0h                           ; 74 11
    1534115379    mov es, si                                ; 8e c6
    1534215380    mov ax, 08105h                            ; b8 05 81
    1534315381    mov dx, strict word 00000h                ; ba 00 00
    1534415382    int 04bh                                  ; cd 4b
    15345     jc short 09f57h                           ; 72 02
     15383    jc short 09f9dh                           ; 72 02
    1534615384    db  032h, 0c0h
    1534715385    ; xor al, al                                ; 32 c0
    1534815386    cbw                                       ; 98
    15349     jmp short 09f81h                          ; eb 27
     15387    jmp short 09fc7h                          ; eb 27
    1535015388    mov es, si                                ; 8e c6
    1535115389    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1536415402    pop bp                                    ; 5d
    1536515403    retn 00004h                               ; c2 04 00
    15366 vds_free_sg_list_:                           ; 0xf9f8a LB 0x36
     15404vds_free_sg_list_:                           ; 0xf9fd0 LB 0x30
    1536715405    push bp                                   ; 55
    1536815406    mov bp, sp                                ; 89 e5
     
    1537015408    push di                                   ; 57
    1537115409    mov bx, ax                                ; 89 c3
    15372     call 09ed8h                               ; e8 44 ff
     15410    call 09f1eh                               ; e8 44 ff
    1537315411    test ax, ax                               ; 85 c0
    15374     je short 09fa9h                           ; 74 11
     15412    je short 09fefh                           ; 74 11
    1537515413    mov di, bx                                ; 89 df
    1537615414    mov es, dx                                ; 8e c2
     
    1537815416    mov dx, strict word 00000h                ; ba 00 00
    1537915417    int 04bh                                  ; cd 4b
    15380     jc short 09fa8h                           ; 72 02
     15418    jc short 09feeh                           ; 72 02
    1538115419    db  032h, 0c0h
    1538215420    ; xor al, al                                ; 32 c0
     
    1538915427    pop bp                                    ; 5d
    1539015428    retn                                      ; c3
    15391     times 0x8 db 0
    15392 __U4M:                                       ; 0xf9fc0 LB 0x20
     15429    times 0x2 db 0
     15430__U4M:                                       ; 0xfa000 LB 0x20
    1539315431    pushfw                                    ; 9c
    1539415432    push si                                   ; 56
     
    1541715455    retn                                      ; c3
    1541815456    times 0x4 db 0
    15419 __U4D:                                       ; 0xf9fe0 LB 0x30
     15457__U4D:                                       ; 0xfa020 LB 0x30
    1542015458    pushfw                                    ; 9c
    1542115459    push DS                                   ; 1e
     
    1543215470    push dx                                   ; 52
    1543315471    push ax                                   ; 50
    15434     call 0a0c5h                               ; e8 d0 00
     15472    call 0a105h                               ; e8 d0 00
    1543515473    mov cx, word [bp-002h]                    ; 8b 4e fe
    1543615474    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1544315481    retn                                      ; c3
    1544415482    times 0xe db 0
    15445 __U8RS:                                      ; 0xfa010 LB 0x10
     15483__U8RS:                                      ; 0xfa050 LB 0x10
    1544615484    test si, si                               ; 85 f6
    15447     je short 0a01fh                           ; 74 0b
     15485    je short 0a05fh                           ; 74 0b
    1544815486    shr ax, 1                                 ; d1 e8
    1544915487    rcr bx, 1                                 ; d1 db
     
    1545115489    rcr dx, 1                                 ; d1 da
    1545215490    dec si                                    ; 4e
    15453     jne short 0a014h                          ; 75 f5
     15491    jne short 0a054h                          ; 75 f5
    1545415492    retn                                      ; c3
    15455 __U8LS:                                      ; 0xfa020 LB 0x10
     15493__U8LS:                                      ; 0xfa060 LB 0x10
    1545615494    test si, si                               ; 85 f6
    15457     je short 0a02fh                           ; 74 0b
     15495    je short 0a06fh                           ; 74 0b
    1545815496    sal dx, 1                                 ; d1 e2
    1545915497    rcl cx, 1                                 ; d1 d1
     
    1546115499    rcl ax, 1                                 ; d1 d0
    1546215500    dec si                                    ; 4e
    15463     jne short 0a024h                          ; 75 f5
     15501    jne short 0a064h                          ; 75 f5
    1546415502    retn                                      ; c3
    15465 _fmemset_:                                   ; 0xfa030 LB 0x10
     15503_fmemset_:                                   ; 0xfa070 LB 0x10
    1546615504    push di                                   ; 57
    1546715505    mov es, dx                                ; 8e c2
     
    1547415512    retn                                      ; c3
    1547515513    times 0x3 db 0
    15476 _fmemcpy_:                                   ; 0xfa040 LB 0x3a
     15514_fmemcpy_:                                   ; 0xfa080 LB 0x3a
    1547715515    push bp                                   ; 55
    1547815516    db  08bh, 0ech
     
    1549915537    add byte [bx+si], al                      ; 00 00
    1550015538    add byte [bx+si], al                      ; 00 00
    15501     nop                                       ; 90
    15502     mov AL, byte [0a092h]                     ; a0 92 a0
    15503     xchg si, ax                               ; 96
    15504     mov AL, byte [0a096h]                     ; a0 96 a0
    15505     xchg si, ax                               ; 96
    15506     mov AL, byte [0a098h]                     ; a0 98 a0
    15507     cbw                                       ; 98
    15508     mov AL, byte [0a09ah]                     ; a0 9a a0
    15509     sahf                                      ; 9e
    15510     mov AL, byte [0a09eh]                     ; a0 9e a0
    15511     mov AL, byte [0a5a0h]                     ; a0 a0 a5
    15512     mov AL, byte [0a0a7h]                     ; a0 a7 a0
    15513 apm_worker:                                  ; 0xfa07a LB 0x3a
     15539    sal byte [bx+si-05f2eh], 1                ; d0 a0 d2 a0
     15540    db  0d6h
     15541    mov AL, byte [0a0d6h]                     ; a0 d6 a0
     15542    db  0d6h
     15543    mov AL, byte [0a0d8h]                     ; a0 d8 a0
     15544    fsub dword [bx+si-05f26h]                 ; d8 a0 da a0
     15545    fisub word [bx+si-05f22h]                 ; de a0 de a0
     15546    loopne 0a056h                             ; e0 a0
     15547    in ax, 0a0h                               ; e5 a0
     15548    out 0a0h, ax                              ; e7 a0
     15549apm_worker:                                  ; 0xfa0ba LB 0x3a
    1551415550    sti                                       ; fb
    1551515551    push ax                                   ; 50
     
    1552315559    pop ax                                    ; 58
    1552415560    mov AH, strict byte 053h                  ; b4 53
    15525     jnc short 0a0b0h                          ; 73 25
    15526     jmp word [cs:bp-05fa0h]                   ; 2e ff a6 60 a0
    15527     jmp short 0a0aeh                          ; eb 1c
     15561    jnc short 0a0f0h                          ; 73 25
     15562    jmp word [cs:bp-05f60h]                   ; 2e ff a6 a0 a0
     15563    jmp short 0a0eeh                          ; eb 1c
    1552815564    sti                                       ; fb
    1552915565    hlt                                       ; f4
    15530     jmp short 0a0aeh                          ; eb 18
    15531     jmp short 0a0aeh                          ; eb 16
    15532     jmp short 0a0b0h                          ; eb 16
     15566    jmp short 0a0eeh                          ; eb 18
     15567    jmp short 0a0eeh                          ; eb 16
     15568    jmp short 0a0f0h                          ; eb 16
    1553315569    mov AH, strict byte 080h                  ; b4 80
    15534     jmp short 0a0b2h                          ; eb 14
    15535     jmp short 0a0b0h                          ; eb 10
     15570    jmp short 0a0f2h                          ; eb 14
     15571    jmp short 0a0f0h                          ; eb 10
    1553615572    mov ax, 00102h                            ; b8 02 01
    15537     jmp short 0a0aeh                          ; eb 09
    15538     jmp short 0a0aeh                          ; eb 07
     15573    jmp short 0a0eeh                          ; eb 09
     15574    jmp short 0a0eeh                          ; eb 07
    1553915575    mov BL, strict byte 000h                  ; b3 00
    1554015576    mov cx, strict word 00000h                ; b9 00 00
    15541     jmp short 0a0aeh                          ; eb 00
     15577    jmp short 0a0eeh                          ; eb 00
    1554215578    clc                                       ; f8
    1554315579    retn                                      ; c3
     
    1554515581    stc                                       ; f9
    1554615582    retn                                      ; c3
    15547 apm_pm16_entry:                              ; 0xfa0b4 LB 0x11
     15583apm_pm16_entry:                              ; 0xfa0f4 LB 0x11
    1554815584    mov AH, strict byte 002h                  ; b4 02
    1554915585    push DS                                   ; 1e
     
    1555315589    add bp, strict byte 00008h                ; 83 c5 08
    1555415590    mov ds, bp                                ; 8e dd
    15555     call 0a07ah                               ; e8 b8 ff
     15591    call 0a0bah                               ; e8 b8 ff
    1555615592    pop bp                                    ; 5d
    1555715593    pop DS                                    ; 1f
    1555815594    retf                                      ; cb
    15559 _DoUInt32Div:                                ; 0xfa0c5 LB 0x26b
     15595_DoUInt32Div:                                ; 0xfa105 LB 0x26b
    1556015596    push bp                                   ; 55
    1556115597    mov bp, sp                                ; 89 e5
     
    1557515611    mov [bp-006h], ds                         ; 8c 5e fa
    1557615612    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15577     jne short 0a115h                          ; 75 22
     15613    jne short 0a155h                          ; 75 22
    1557815614    mov ax, word [bx]                         ; 8b 07
    1557915615    test ax, ax                               ; 85 c0
    15580     je short 0a112h                           ; 74 19
     15616    je short 0a152h                           ; 74 19
    1558115617    cmp ax, strict word 00001h                ; 3d 01 00
    15582     jne short 0a115h                          ; 75 17
     15618    jne short 0a155h                          ; 75 17
    1558315619    xor ax, ax                                ; 31 c0
    1558415620    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1558815624    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1558915625    mov word [bp+006h], ax                    ; 89 46 06
    15590     jmp near 0a31dh                           ; e9 08 02
     15626    jmp near 0a35dh                           ; e9 08 02
    1559115627    lds bx, [bp-00ch]                         ; c5 5e f4
    1559215628    mov ax, word [bx+002h]                    ; 8b 47 02
    1559315629    mov ds, [bp-006h]                         ; 8e 5e fa
    1559415630    cmp ax, word [si+002h]                    ; 3b 44 02
    15595     je short 0a13bh                           ; 74 18
     15631    je short 0a17bh                           ; 74 18
    1559615632    mov ds, [bp-00ah]                         ; 8e 5e f6
    1559715633    mov ax, word [bx+002h]                    ; 8b 47 02
    1559815634    mov ds, [bp-006h]                         ; 8e 5e fa
    1559915635    cmp ax, word [si+002h]                    ; 3b 44 02
    15600     jbe short 0a136h                          ; 76 05
     15636    jbe short 0a176h                          ; 76 05
    1560115637    mov ax, strict word 00001h                ; b8 01 00
    15602     jmp short 0a15ch                          ; eb 26
     15638    jmp short 0a19ch                          ; eb 26
    1560315639    mov ax, strict word 0ffffh                ; b8 ff ff
    15604     jmp short 0a15ch                          ; eb 21
     15640    jmp short 0a19ch                          ; eb 21
    1560515641    mov ds, [bp-00ah]                         ; 8e 5e f6
    1560615642    mov ax, word [bx]                         ; 8b 07
    1560715643    mov ds, [bp-006h]                         ; 8e 5e fa
    1560815644    cmp ax, word [si]                         ; 3b 04
    15609     je short 0a15ah                           ; 74 13
     15645    je short 0a19ah                           ; 74 13
    1561015646    mov ds, [bp-00ah]                         ; 8e 5e f6
    1561115647    mov ax, word [bx]                         ; 8b 07
    1561215648    mov ds, [bp-006h]                         ; 8e 5e fa
    1561315649    cmp ax, word [si]                         ; 3b 04
    15614     jbe short 0a155h                          ; 76 02
    15615     jmp short 0a131h                          ; eb dc
     15650    jbe short 0a195h                          ; 76 02
     15651    jmp short 0a171h                          ; eb dc
    1561615652    mov ax, strict word 0ffffh                ; b8 ff ff
    15617     jmp short 0a15ch                          ; eb 02
     15653    jmp short 0a19ch                          ; eb 02
    1561815654    xor ax, ax                                ; 31 c0
    1561915655    test ax, ax                               ; 85 c0
    15620     jnl short 0a17eh                          ; 7d 1e
     15656    jnl short 0a1beh                          ; 7d 1e
    1562115657    lds bx, [bp-00ch]                         ; c5 5e f4
    1562215658    mov ax, word [bx]                         ; 8b 07
     
    1562815664    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1562915665    mov word [bx], strict word 00000h         ; c7 07 00 00
    15630     jmp short 0a112h                          ; eb 94
    15631     jne short 0a195h                          ; 75 15
     15666    jmp short 0a152h                          ; eb 94
     15667    jne short 0a1d5h                          ; 75 15
    1563215668    mov ds, [bp-008h]                         ; 8e 5e f8
    1563315669    mov word [di+002h], ax                    ; 89 45 02
     
    1563615672    mov word [bx], strict word 00001h         ; c7 07 01 00
    1563715673    mov word [bx+002h], ax                    ; 89 47 02
    15638     jmp near 0a31dh                           ; e9 88 01
     15674    jmp near 0a35dh                           ; e9 88 01
    1563915675    lds bx, [bp-00ch]                         ; c5 5e f4
    1564015676    mov ax, word [bx+002h]                    ; 8b 47 02
    1564115677    test ax, ax                               ; 85 c0
    15642     je short 0a1b0h                           ; 74 11
     15678    je short 0a1f0h                           ; 74 11
    1564315679    push ax                                   ; 50
    1564415680    mov ax, 0f000h                            ; b8 00 f0
    1564515681    mov ds, ax                                ; 8e d8
    15646     call 0a330h                               ; e8 88 01
     15682    call 0a370h                               ; e8 88 01
    1564715683    add sp, strict byte 00002h                ; 83 c4 02
    1564815684    add ax, strict word 00010h                ; 05 10 00
    15649     jmp short 0a1bdh                          ; eb 0d
     15685    jmp short 0a1fdh                          ; eb 0d
    1565015686    push word [bx]                            ; ff 37
    1565115687    mov ax, 0f000h                            ; b8 00 f0
    1565215688    mov ds, ax                                ; 8e d8
    15653     call 0a330h                               ; e8 76 01
     15689    call 0a370h                               ; e8 76 01
    1565415690    add sp, strict byte 00002h                ; 83 c4 02
    1565515691    mov word [bp-014h], ax                    ; 89 46 ec
     
    1565715693    mov ax, word [si+002h]                    ; 8b 44 02
    1565815694    test ax, ax                               ; 85 c0
    15659     je short 0a1dbh                           ; 74 11
     15695    je short 0a21bh                           ; 74 11
    1566015696    push ax                                   ; 50
    1566115697    mov ax, 0f000h                            ; b8 00 f0
    1566215698    mov ds, ax                                ; 8e d8
    15663     call 0a330h                               ; e8 5d 01
     15699    call 0a370h                               ; e8 5d 01
    1566415700    add sp, strict byte 00002h                ; 83 c4 02
    1566515701    add ax, strict word 00010h                ; 05 10 00
    15666     jmp short 0a1e8h                          ; eb 0d
     15702    jmp short 0a228h                          ; eb 0d
    1566715703    push word [si]                            ; ff 34
    1566815704    mov ax, 0f000h                            ; b8 00 f0
    1566915705    mov ds, ax                                ; 8e d8
    15670     call 0a330h                               ; e8 4b 01
     15706    call 0a370h                               ; e8 4b 01
    1567115707    add sp, strict byte 00002h                ; 83 c4 02
    1567215708    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1567915715    mov word [bp-016h], ax                    ; 89 46 ea
    1568015716    test dx, dx                               ; 85 d2
    15681     je short 0a258h                           ; 74 56
     15717    je short 0a298h                           ; 74 56
    1568215718    mov cx, dx                                ; 89 d1
    1568315719    xor ch, dh                                ; 30 f5
     
    1568515721    mov ax, word [si]                         ; 8b 04
    1568615722    mov dx, word [si+002h]                    ; 8b 54 02
    15687     jcxz 0a216h                               ; e3 06
     15723    jcxz 0a256h                               ; e3 06
    1568815724    sal ax, 1                                 ; d1 e0
    1568915725    rcl dx, 1                                 ; d1 d2
    15690     loop 0a210h                               ; e2 fa
     15726    loop 0a250h                               ; e2 fa
    1569115727    mov word [bp-018h], ax                    ; 89 46 e8
    1569215728    mov word [bp-016h], dx                    ; 89 56 ea
     
    1569415730    lds bx, [bp-00ch]                         ; c5 5e f4
    1569515731    cmp ax, word [bx+002h]                    ; 3b 47 02
    15696     jnbe short 0a236h                         ; 77 0f
     15732    jnbe short 0a276h                         ; 77 0f
    1569715733    mov ax, word [bp-016h]                    ; 8b 46 ea
    1569815734    cmp ax, word [bx+002h]                    ; 3b 47 02
    15699     jne short 0a23ah                          ; 75 0b
     15735    jne short 0a27ah                          ; 75 0b
    1570015736    mov ax, word [bp-018h]                    ; 8b 46 e8
    1570115737    cmp ax, word [bx]                         ; 3b 07
    15702     jbe short 0a23ah                          ; 76 04
     15738    jbe short 0a27ah                          ; 76 04
    1570315739    mov AL, strict byte 001h                  ; b0 01
    15704     jmp short 0a23ch                          ; eb 02
     15740    jmp short 0a27ch                          ; eb 02
    1570515741    xor al, al                                ; 30 c0
    1570615742    test al, al                               ; 84 c0
    15707     je short 0a263h                           ; 74 23
     15743    je short 0a2a3h                           ; 74 23
    1570815744    shr word [bp-016h], 1                     ; d1 6e ea
    1570915745    rcr word [bp-018h], 1                     ; d1 5e e8
    1571015746    dec word [bp-012h]                        ; ff 4e ee
    15711     jmp short 0a263h                          ; eb 18
     15747    jmp short 0a2a3h                          ; eb 18
    1571215748    mov cx, strict word 0001fh                ; b9 1f 00
    1571315749    sal word [bp-018h], 1                     ; d1 66 e8
    1571415750    rcl word [bp-016h], 1                     ; d1 56 ea
    15715     loop 0a24eh                               ; e2 f8
    15716     jmp short 0a246h                          ; eb ee
     15751    loop 0a28eh                               ; e2 f8
     15752    jmp short 0a286h                          ; eb ee
    1571715753    mov ax, word [si]                         ; 8b 04
    1571815754    mov word [bp-018h], ax                    ; 89 46 e8
     
    1573115767    mov ds, [bp-006h]                         ; 8e 5e fa
    1573215768    cmp ax, word [si+002h]                    ; 3b 44 02
    15733     jnbe short 0a28fh                         ; 77 06
    15734     jne short 0a293h                          ; 75 08
     15769    jnbe short 0a2cfh                         ; 77 06
     15770    jne short 0a2d3h                          ; 75 08
    1573515771    cmp dx, word [si]                         ; 3b 14
    15736     jc short 0a293h                           ; 72 04
     15772    jc short 0a2d3h                           ; 72 04
    1573715773    mov AL, strict byte 001h                  ; b0 01
    15738     jmp short 0a295h                          ; eb 02
     15774    jmp short 0a2d5h                          ; eb 02
    1573915775    xor al, al                                ; 30 c0
    1574015776    test al, al                               ; 84 c0
    15741     je short 0a2fah                           ; 74 61
     15777    je short 0a33ah                           ; 74 61
    1574215778    mov ds, [bp-008h]                         ; 8e 5e f8
    1574315779    mov ax, word [di+002h]                    ; 8b 45 02
    1574415780    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15745     jnbe short 0a2b0h                         ; 77 0c
     15781    jnbe short 0a2f0h                         ; 77 0c
    1574615782    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15747     jne short 0a2b4h                          ; 75 0b
     15783    jne short 0a2f4h                          ; 75 0b
    1574815784    mov ax, word [di]                         ; 8b 05
    1574915785    cmp ax, word [bp-018h]                    ; 3b 46 e8
    15750     jc short 0a2b4h                           ; 72 04
     15786    jc short 0a2f4h                           ; 72 04
    1575115787    mov AL, strict byte 001h                  ; b0 01
    15752     jmp short 0a2b6h                          ; eb 02
     15788    jmp short 0a2f6h                          ; eb 02
    1575315789    xor al, al                                ; 30 c0
    1575415790    test al, al                               ; 84 c0
    15755     je short 0a2e0h                           ; 74 26
     15791    je short 0a320h                           ; 74 26
    1575615792    mov ax, word [bp-018h]                    ; 8b 46 e8
    1575715793    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1576215798    xor dx, dx                                ; 31 d2
    1576315799    mov cx, word [bp-012h]                    ; 8b 4e ee
    15764     jcxz 0a2d8h                               ; e3 06
     15800    jcxz 0a318h                               ; e3 06
    1576515801    sal ax, 1                                 ; d1 e0
    1576615802    rcl dx, 1                                 ; d1 d2
    15767     loop 0a2d2h                               ; e2 fa
     15803    loop 0a312h                               ; e2 fa
    1576815804    lds bx, [bp-010h]                         ; c5 5e f0
    1576915805    or word [bx], ax                          ; 09 07
     
    1577415810    mov ds, [bp-006h]                         ; 8e 5e fa
    1577515811    cmp ax, word [si+002h]                    ; 3b 44 02
    15776     jc short 0a2f6h                           ; 72 06
    15777     jne short 0a2fch                          ; 75 0a
     15812    jc short 0a336h                           ; 72 06
     15813    jne short 0a33ch                          ; 75 0a
    1577815814    cmp dx, word [si]                         ; 3b 14
    15779     jnc short 0a2fch                          ; 73 06
     15815    jnc short 0a33ch                          ; 73 06
    1578015816    mov AL, strict byte 001h                  ; b0 01
    15781     jmp short 0a2feh                          ; eb 04
    15782     jmp short 0a31dh                          ; eb 21
     15817    jmp short 0a33eh                          ; eb 04
     15818    jmp short 0a35dh                          ; eb 21
    1578315819    xor al, al                                ; 30 c0
    1578415820    test al, al                               ; 84 c0
    15785     je short 0a311h                           ; 74 0f
    15786     jmp short 0a31dh                          ; eb 19
     15821    je short 0a351h                           ; 74 0f
     15822    jmp short 0a35dh                          ; eb 19
    1578715823    mov cx, strict word 0001fh                ; b9 1f 00
    1578815824    sal word [bp-018h], 1                     ; d1 66 e8
    1578915825    rcl word [bp-016h], 1                     ; d1 56 ea
    15790     loop 0a307h                               ; e2 f8
    15791     jmp short 0a317h                          ; eb 06
     15826    loop 0a347h                               ; e2 f8
     15827    jmp short 0a357h                          ; eb 06
    1579215828    shr word [bp-016h], 1                     ; d1 6e ea
    1579315829    rcr word [bp-018h], 1                     ; d1 5e e8
    1579415830    dec word [bp-012h]                        ; ff 4e ee
    15795     jmp near 0a299h                           ; e9 7c ff
     15831    jmp near 0a2d9h                           ; e9 7c ff
    1579615832    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1579715833    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1580215838    retn                                      ; c3
    1580315839    times 0x6 db 0
    15804 _ASMBitLastSetU16:                           ; 0xfa330 LB 0x18
     15840_ASMBitLastSetU16:                           ; 0xfa370 LB 0x18
    1580515841    push bp                                   ; 55
    1580615842    db  08bh, 0ech
     
    1580815844    mov cx, word [bp+004h]                    ; 8b 4e 04
    1580915845    test cx, cx                               ; 85 c9
    15810     je short 0a344h                           ; 74 0a
     15846    je short 0a384h                           ; 74 0a
    1581115847    mov ax, strict word 00010h                ; b8 10 00
    1581215848    sal cx, 1                                 ; d1 e1
    15813     jc short 0a346h                           ; 72 05
     15849    jc short 0a386h                           ; 72 05
    1581415850    dec ax                                    ; 48
    15815     jmp short 0a33dh                          ; eb f9
     15851    jmp short 0a37dh                          ; eb f9
    1581615852    db  033h, 0c0h
    1581715853    ; xor ax, ax                                ; 33 c0
     
    1581915855    retn                                      ; c3
    1582015856
    15821   ; Padding 0x36b8 bytes at 0xfa348
    15822   times 14008 db 0
     15857  ; Padding 0x3678 bytes at 0xfa388
     15858  times 13944 db 0
    1582315859
    1582415860section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1586715903    add bp, strict byte 00008h                ; 83 c5 08
    1586815904    push ebp                                  ; 66 55
    15869     mov bp, 0a0b6h                            ; bd b6 a0
     15905    mov bp, 0a0f6h                            ; bd f6 a0
    1587015906    add byte [bx+si], al                      ; 00 00
    1587115907    push ebp                                  ; 66 55
     
    1619916235    mov bx, ax                                ; 89 c3
    1620016236    mov edx, dword [di]                       ; 66 8b 15
    16201     mov AL, byte [000f4h]                     ; a0 f4 00
     16237    xor bl, 000h                              ; 80 f3 00
    1620216238    add byte [bp+026h], ah                    ; 00 66 26
    1620316239    cmp dx, word [bx+si]                      ; 3b 10
     
    1621616252    mov di, word [es:bx+si+002h]              ; 26 8b 78 02
    1621716253    mov dx, ds                                ; 8c da
    16218     mov si, 0f2c0h                            ; be c0 f2
     16254    mov si, 0f1a0h                            ; be a0 f1
    1621916255    add byte [bx+si], al                      ; 00 00
    1622016256    mov es, [di-014h]                         ; 8e 45 ec
     
    1622516261    pop DS                                    ; 1f
    1622616262    mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1
    16227     mov AL, byte [000f4h]                     ; a0 f4 00
     16263    xor bl, 000h                              ; 80 f3 00
    1622816264    add byte [bp-00fbbh], cl                  ; 00 8e 45 f0
    1622916265    db  066h, 026h, 089h, 003h
     
    1727817314    pop eax                                   ; 66 58
    1727917315    retn                                      ; c3
    17280 pcibios_init_iomem_bases:                    ; 0xff13c LB 0x16
     17316pcibios_init_iomem_bases:                    ; 0xff13c LB 0x12
    1728117317    push bp                                   ; 55
    1728217318    db  08bh, 0ech
    1728317319    ; mov bp, sp                                ; 8b ec
    17284     mov eax, strict dword 0e0000000h          ; 66 b8 00 00 00 e0
    17285     push eax                                  ; 66 50
    17286     mov ax, 0d000h                            ; b8 00 d0
    17287     push ax                                   ; 50
    17288     mov ax, strict word 00010h                ; b8 10 00
    17289     push ax                                   ; 50
    17290     mov bx, strict word 00008h                ; bb 08 00
    17291 pci_init_io_loop1:                           ; 0xff152 LB 0xe
    17292     mov DL, strict byte 000h                  ; b2 00
    17293     call 0f121h                               ; e8 ca ff
    17294     mov dx, 00cfch                            ; ba fc 0c
    17295     in ax, DX                                 ; ed
    17296     cmp ax, strict byte 0ffffh                ; 83 f8 ff
    17297     je short 0f199h                           ; 74 39
    17298 enable_iomem_space:                          ; 0xff160 LB 0x39
    17299     mov DL, strict byte 004h                  ; b2 04
    17300     call 0f121h                               ; e8 bc ff
    17301     mov dx, 00cfch                            ; ba fc 0c
    17302     in AL, DX                                 ; ec
    17303     or AL, strict byte 007h                   ; 0c 07
    17304     out DX, AL                                ; ee
    17305     mov DL, strict byte 000h                  ; b2 00
    17306     call 0f121h                               ; e8 b0 ff
    17307     mov dx, 00cfch                            ; ba fc 0c
    17308     in eax, DX                                ; 66 ed
    17309     cmp eax, strict dword 020001022h          ; 66 3d 22 10 00 20
    17310     jne short 0f199h                          ; 75 1b
    17311     mov DL, strict byte 010h                  ; b2 10
    17312     call 0f121h                               ; e8 9e ff
    17313     mov dx, 00cfch                            ; ba fc 0c
    17314     in ax, DX                                 ; ed
    17315     and ax, strict byte 0fffch                ; 83 e0 fc
    17316     db  08bh, 0c8h
    17317     ; mov cx, ax                                ; 8b c8
    17318     db  08bh, 0d1h
    17319     ; mov dx, cx                                ; 8b d1
    17320     add dx, strict byte 00014h                ; 83 c2 14
    17321     in ax, DX                                 ; ed
    17322     db  08bh, 0d1h
    17323     ; mov dx, cx                                ; 8b d1
    17324     add dx, strict byte 00018h                ; 83 c2 18
    17325     in eax, DX                                ; 66 ed
    17326 next_pci_dev:                                ; 0xff199 LB 0xf
    17327     mov byte [bp-008h], 010h                  ; c6 46 f8 10
    17328     inc bx                                    ; 43
    17329     cmp bx, 00100h                            ; 81 fb 00 01
    17330     jne short 0f152h                          ; 75 ae
     17320    mov eax, strict dword 00124f9fdh          ; 66 b8 fd f9 24 01
     17321    mov dx, 00410h                            ; ba 10 04
     17322    out DX, eax                               ; 66 ef
    1733117323    db  08bh, 0e5h
    1733217324    ; mov sp, bp                                ; 8b e5
    1733317325    pop bp                                    ; 5d
    1733417326    retn                                      ; c3
    17335 pcibios_init_set_elcr:                       ; 0xff1a8 LB 0xc
     17327pcibios_init_set_elcr:                       ; 0xff14e LB 0xc
    1733617328    push ax                                   ; 50
    1733717329    push cx                                   ; 51
    1733817330    mov dx, 004d0h                            ; ba d0 04
    1733917331    test AL, strict byte 008h                 ; a8 08
    17340     je short 0f1b4h                           ; 74 03
     17332    je short 0f15ah                           ; 74 03
    1734117333    inc dx                                    ; 42
    1734217334    and AL, strict byte 007h                  ; 24 07
    17343 is_master_pic:                               ; 0xff1b4 LB 0xd
     17335is_master_pic:                               ; 0xff15a LB 0xd
    1734417336    db  08ah, 0c8h
    1734517337    ; mov cl, al                                ; 8a c8
     
    1735317345    pop ax                                    ; 58
    1735417346    retn                                      ; c3
    17355 pcibios_init_irqs:                           ; 0xff1c1 LB 0x53
     17347pcibios_init_irqs:                           ; 0xff167 LB 0x39
    1735617348    push DS                                   ; 1e
    1735717349    push bp                                   ; 55
    1735817350    mov ax, 0f000h                            ; b8 00 f0
    1735917351    mov ds, ax                                ; 8e d8
    17360     mov dx, 004d0h                            ; ba d0 04
    17361     mov AL, strict byte 000h                  ; b0 00
    17362     out DX, AL                                ; ee
    17363     inc dx                                    ; 42
    17364     out DX, AL                                ; ee
    17365     mov si, 0f2a0h                            ; be a0 f2
    17366     mov bh, byte [si+008h]                    ; 8a 7c 08
    17367     mov bl, byte [si+009h]                    ; 8a 5c 09
    17368     mov DL, strict byte 000h                  ; b2 00
    17369     call 0f121h                               ; e8 43 ff
    17370     mov dx, 00cfch                            ; ba fc 0c
    17371     in eax, DX                                ; 66 ed
    17372     cmp eax, dword [si+00ch]                  ; 66 3b 44 0c
    17373     jne near 0f291h                           ; 0f 85 a6 00
    17374     mov dl, byte [si+022h]                    ; 8a 54 22
    17375     call 0f121h                               ; e8 30 ff
    17376     push bx                                   ; 53
    17377     mov dx, 00cfch                            ; ba fc 0c
    17378     mov ax, 08080h                            ; b8 80 80
    17379     out DX, ax                                ; ef
    17380     add dx, strict byte 00002h                ; 83 c2 02
    17381     out DX, ax                                ; ef
    17382     mov ax, word [si+006h]                    ; 8b 44 06
    17383     sub ax, strict byte 00020h                ; 83 e8 20
    17384     shr ax, 004h                              ; c1 e8 04
    17385     db  08bh, 0c8h
    17386     ; mov cx, ax                                ; 8b c8
    17387     add si, strict byte 00020h                ; 83 c6 20
    17388     db  08bh, 0ech
    17389     ; mov bp, sp                                ; 8b ec
    17390     mov ax, 0f11dh                            ; b8 1d f1
    17391     push ax                                   ; 50
    17392     db  033h, 0c0h
    17393     ; xor ax, ax                                ; 33 c0
    17394     push ax                                   ; 50
    17395 pci_init_irq_loop1:                          ; 0xff214 LB 0x5
    17396     mov bh, byte [si]                         ; 8a 3c
    17397     mov bl, byte [si+001h]                    ; 8a 5c 01
    17398 pci_init_irq_loop2:                          ; 0xff219 LB 0x15
    17399     mov DL, strict byte 000h                  ; b2 00
    17400     call 0f121h                               ; e8 03 ff
    17401     mov dx, 00cfch                            ; ba fc 0c
    17402     in ax, DX                                 ; ed
    17403     cmp ax, strict byte 0ffffh                ; 83 f8 ff
    17404     jne short 0f22eh                          ; 75 07
    17405     test bl, 007h                             ; f6 c3 07
    17406     je short 0f285h                           ; 74 59
    17407     jmp short 0f27bh                          ; eb 4d
    17408 pci_test_int_pin:                            ; 0xff22e LB 0x3c
    17409     mov DL, strict byte 03ch                  ; b2 3c
    17410     call 0f121h                               ; e8 ee fe
    17411     mov dx, 00cfdh                            ; ba fd 0c
    17412     in AL, DX                                 ; ec
    17413     and AL, strict byte 007h                  ; 24 07
    17414     je short 0f27bh                           ; 74 40
    17415     db  0feh, 0c8h
    17416     ; dec al                                    ; fe c8
    17417     mov DL, strict byte 003h                  ; b2 03
    17418     mul dl                                    ; f6 e2
    17419     add AL, strict byte 002h                  ; 04 02
    17420     db  032h, 0e4h
    17421     ; xor ah, ah                                ; 32 e4
    17422     db  08bh, 0d8h
    17423     ; mov bx, ax                                ; 8b d8
    17424     mov al, byte [bx+si]                      ; 8a 00
    17425     db  08ah, 0d0h
    17426     ; mov dl, al                                ; 8a d0
    17427     mov bx, word [byte bp+000h]               ; 8b 5e 00
    17428     call 0f121h                               ; e8 d0 fe
    17429     mov dx, 00cfch                            ; ba fc 0c
    17430     and AL, strict byte 003h                  ; 24 03
    17431     db  002h, 0d0h
    17432     ; add dl, al                                ; 02 d0
    17433     in AL, DX                                 ; ec
    17434     cmp AL, strict byte 080h                  ; 3c 80
    17435     jc short 0f26ah                           ; 72 0d
    17436     mov bx, word [bp-002h]                    ; 8b 5e fe
    17437     mov al, byte [bx]                         ; 8a 07
    17438     out DX, AL                                ; ee
    17439     inc bx                                    ; 43
    17440     mov word [bp-002h], bx                    ; 89 5e fe
    17441     call 0f1a8h                               ; e8 3e ff
    17442 pirq_found:                                  ; 0xff26a LB 0x11
    17443     mov bh, byte [si]                         ; 8a 3c
    17444     mov bl, byte [si+001h]                    ; 8a 5c 01
    17445     add bl, byte [bp-003h]                    ; 02 5e fd
    17446     mov DL, strict byte 03ch                  ; b2 3c
    17447     call 0f121h                               ; e8 aa fe
    17448     mov dx, 00cfch                            ; ba fc 0c
    17449     out DX, AL                                ; ee
    17450 next_pci_func:                               ; 0xff27b LB 0xa
    17451     inc byte [bp-003h]                        ; fe 46 fd
    17452     db  0feh, 0c3h
    17453     ; inc bl                                    ; fe c3
    17454     test bl, 007h                             ; f6 c3 07
    17455     jne short 0f219h                          ; 75 94
    17456 next_pir_entry:                              ; 0xff285 LB 0xc
    17457     add si, strict byte 00010h                ; 83 c6 10
    17458     mov byte [bp-003h], 000h                  ; c6 46 fd 00
    17459     loop 0f214h                               ; e2 86
    17460     db  08bh, 0e5h
    17461     ; mov sp, bp                                ; 8b e5
    17462     pop bx                                    ; 5b
    17463 pci_init_end:                                ; 0xff291 LB 0x2f
    1746417352    pop bp                                    ; 5d
    1746517353    pop DS                                    ; 1f
    1746617354    retn                                      ; c3
    17467     db  089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 024h, 050h, 049h, 052h
    17468     db  000h, 001h, 000h, 002h, 000h, 008h, 000h, 000h, 086h, 080h, 000h, 070h, 000h, 000h, 000h, 000h
    17469     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 031h
    17470 _pci_routing_table:                          ; 0xff2c0 LB 0x1e0
     17355    mov ax, ax                                ; 89 c0
     17356    mov ax, ax                                ; 89 c0
     17357    mov ax, ax                                ; 89 c0
     17358    mov ax, ax                                ; 89 c0
     17359    mov ax, ax                                ; 89 c0
     17360    mov ax, ax                                ; 89 c0
     17361    mov ax, ax                                ; 89 c0
     17362    cld                                       ; fc
     17363    and AL, strict byte 050h                  ; 24 50
     17364    dec cx                                    ; 49
     17365    push dx                                   ; 52
     17366    add byte [bx+di], al                      ; 00 01
     17367    add byte [bp+si], al                      ; 00 02
     17368    add byte [bx+si], cl                      ; 00 08
     17369    add byte [bx+si], al                      ; 00 00
     17370    xchg byte [bx+si+07000h], al              ; 86 80 00 70
     17371    times 0xf db 0
     17372    db  031h
     17373_pci_routing_table:                          ; 0xff1a0 LB 0x1e0
    1747117374    db  000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
    1747217375    db  000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
     
    1749917402    db  000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
    1750017403    db  000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
    17501 _pci_routing_table_size:                     ; 0xff4a0 LB 0x2
    17502     loopne 0f4a3h                             ; e0 01
    17503 biosorg_check_before_or_at_0F83Fh:           ; 0xff4a2 LB 0x39f
    17504     times 0x39d db 0
     17404_pci_routing_table_size:                     ; 0xff380 LB 0x2
     17405    loopne 0f383h                             ; e0 01
     17406biosorg_check_before_or_at_0F83Fh:           ; 0xff382 LB 0x4bf
     17407    times 0x4bd db 0
    1750517408    db  'XM'
    1750617409int12_handler:                               ; 0xff841 LB 0xc
     
    1755717460    popfw                                     ; 9d
    1755817461    jmp short 0f8a5h                          ; eb 11
    17559     call 09a48h                               ; e8 b1 a1
     17462    call 09a69h                               ; e8 d2 a1
    1756017463    jmp short 0f88eh                          ; eb f5
    1756117464int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1782217725cpu_reset:                                   ; 0xffff0 LB 0x10
    1782317726    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17824     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 04dh
     17727    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 061h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum

    r67495 r67683  
    1 6082f0eb1fd2fca0245f382a0d155fa7 *VBoxPcBios286.rom
     17c48fdf41ba0103589789d127c80d165 *VBoxPcBios286.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm

    r67495 r67683  
    11541154  times 1126 db 0
    11551155
    1156 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8ae5 class=CODE group=AUTO
     1156section _TEXT progbits vstart=0x1600 align=1 ; size=0x8b15 class=CODE group=AUTO
    11571157rom_scan_:                                   ; 0xf1600 LB 0x50
    11581158    push bp                                   ; 55
     
    16761676    mov bx, strict word 0000ah                ; bb 0a 00
    16771677    xor cx, cx                                ; 31 c9
    1678     call 09ff0h                               ; e8 1e 86
     1678    call 0a020h                               ; e8 4e 86
    16791679    mov word [bp-008h], ax                    ; 89 46 f8
    16801680    mov cx, dx                                ; 89 d1
     
    19021902    mov dx, word [bp-026h]                    ; 8b 56 da
    19031903    mov si, word [bp-01eh]                    ; 8b 76 e2
    1904     call 0a030h                               ; e8 2c 84
     1904    call 0a060h                               ; e8 5c 84
    19051905    mov ax, dx                                ; 89 d0
    19061906    xor ah, dh                                ; 30 f4
     
    23442344    mov dx, word [es:si]                      ; 26 8b 14
    23452345    mov si, strict word 00018h                ; be 18 00
    2346     call 0a030h                               ; e8 d0 7f
     2346    call 0a060h                               ; e8 00 80
    23472347    xor dh, dh                                ; 30 f6
    23482348    mov word [bp-016h], dx                    ; 89 56 ea
     
    23542354    mov dx, word [es:si]                      ; 26 8b 14
    23552355    mov si, strict word 00020h                ; be 20 00
    2356     call 0a030h                               ; e8 b0 7f
     2356    call 0a060h                               ; e8 e0 7f
    23572357    mov bx, dx                                ; 89 d3
    23582358    mov ax, word [bp-01eh]                    ; 8b 46 e2
     
    23852385    mov dx, word [es:si]                      ; 26 8b 14
    23862386    mov si, strict word 00008h                ; be 08 00
    2387     call 0a030h                               ; e8 5f 7f
     2387    call 0a060h                               ; e8 8f 7f
    23882388    mov word [bp-014h], dx                    ; 89 56 ec
    23892389    mov bx, word [bp-018h]                    ; 8b 5e e8
     
    23942394    mov dx, word [es:si]                      ; 26 8b 14
    23952395    mov si, strict word 00018h                ; be 18 00
    2396     call 0a030h                               ; e8 41 7f
     2396    call 0a060h                               ; e8 71 7f
    23972397    and dx, strict byte 0000fh                ; 83 e2 0f
    23982398    or dl, 040h                               ; 80 ca 40
     
    29502950    mov dx, word [es:si+036h]                 ; 26 8b 54 36
    29512951    mov si, strict word 0000bh                ; be 0b 00
    2952     call 0a030h                               ; e8 79 79
     2952    call 0a060h                               ; e8 a9 79
    29532953    mov word [bp-030h], dx                    ; 89 56 d0
    29542954    mov word [bp-02eh], cx                    ; 89 4e d2
     
    32213221    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32223222    mov si, strict word 00018h                ; be 18 00
    3223     call 0a030h                               ; e8 a3 76
     3223    call 0a060h                               ; e8 d3 76
    32243224    xor dh, dh                                ; 30 f6
    32253225    mov word [bp-01ch], dx                    ; 89 56 e4
     
    32293229    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32303230    mov si, strict word 00020h                ; be 20 00
    3231     call 0a030h                               ; e8 8c 76
     3231    call 0a060h                               ; e8 bc 76
    32323232    mov bx, dx                                ; 89 d3
    32333233    mov ax, word [bp-01ah]                    ; 8b 46 e6
     
    32633263    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32643264    mov si, strict word 00008h                ; be 08 00
    3265     call 0a030h                               ; e8 38 76
     3265    call 0a060h                               ; e8 68 76
    32663266    mov word [bp-010h], ax                    ; 89 46 f0
    32673267    mov word [bp-014h], bx                    ; 89 5e ec
     
    32703270    mov word [bp-026h], dx                    ; 89 56 da
    32713271    mov si, strict word 00010h                ; be 10 00
    3272     call 0a030h                               ; e8 23 76
     3272    call 0a060h                               ; e8 53 76
    32733273    mov word [bp-01eh], dx                    ; 89 56 e2
    32743274    mov ax, dx                                ; 89 d0
     
    55205520    mov dx, ss                                ; 8c d2
    55215521    lea ax, [bp-026h]                         ; 8d 46 da
    5522     call 0a050h                               ; e8 44 61
     5522    call 0a080h                               ; e8 74 61
    55235523    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    55245524    mov ax, strict word 00011h                ; b8 11 00
     
    59805980    xor dl, dl                                ; 30 d2
    59815981    xor cx, cx                                ; 31 c9
    5982     call 09fb0h                               ; e8 42 5b
     5982    call 09fe0h                               ; e8 72 5b
    59835983    xor bx, bx                                ; 31 db
    59845984    add ax, si                                ; 01 f0
     
    59865986    mov bx, di                                ; 89 fb
    59875987    xor cx, cx                                ; 31 c9
    5988     call 09fb0h                               ; e8 35 5b
     5988    call 09fe0h                               ; e8 65 5b
    59895989    mov bx, ax                                ; 89 c3
    59905990    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    60216021    mov dx, ss                                ; 8c d2
    60226022    lea ax, [bp-02eh]                         ; 8d 46 d2
    6023     call 0a050h                               ; e8 7e 5b
     6023    call 0a080h                               ; e8 ae 5b
    60246024    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    60256025    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    63286328    mov dx, ss                                ; 8c d2
    63296329    lea ax, [bp-02ch]                         ; 8d 46 d4
    6330     call 0a050h                               ; e8 e3 57
     6330    call 0a080h                               ; e8 13 58
    63316331    mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
    63326332    mov ax, word [bp-018h]                    ; 8b 46 e8
     
    81758175    mov dx, word [bp+00ch]                    ; 8b 56 0c
    81768176    mov si, strict word 00020h                ; be 20 00
    8177     call 0a030h                               ; e8 45 45
     8177    call 0a060h                               ; e8 75 45
    81788178    test ax, ax                               ; 85 c0
    81798179    jne short 05afbh                          ; 75 0c
     
    82138213    mov bx, strict word 0003fh                ; bb 3f 00
    82148214    xor cx, cx                                ; 31 c9
    8215     call 09fb0h                               ; e8 6c 44
     8215    call 09fe0h                               ; e8 9c 44
    82168216    mov bx, ax                                ; 89 c3
    82178217    mov cx, dx                                ; 89 d1
    82188218    mov ax, word [bp-004h]                    ; 8b 46 fc
    82198219    mov dx, si                                ; 89 f2
    8220     call 09ff0h                               ; e8 a0 44
     8220    call 0a020h                               ; e8 d0 44
    82218221    mov word [es:di+002h], ax                 ; 26 89 45 02
    82228222    cmp ax, 00400h                            ; 3d 00 04
     
    84478447    mov bx, cx                                ; 89 cb
    84488448    xor cx, cx                                ; 31 c9
    8449     call 09fb0h                               ; e8 3b 42
     8449    call 09fe0h                               ; e8 6b 42
    84508450    xor bx, bx                                ; 31 db
    84518451    add ax, word [bp-008h]                    ; 03 46 f8
     
    84538453    mov bx, word [bp-00ah]                    ; 8b 5e f6
    84548454    xor cx, cx                                ; 31 c9
    8455     call 09fb0h                               ; e8 2c 42
     8455    call 09fe0h                               ; e8 5c 42
    84568456    xor bx, bx                                ; 31 db
    84578457    add ax, word [bp-006h]                    ; 03 46 fa
     
    86138613    mov bx, word [bp-008h]                    ; 8b 5e f8
    86148614    xor cx, cx                                ; 31 c9
    8615     call 09fb0h                               ; e8 64 40
     8615    call 09fe0h                               ; e8 94 40
    86168616    mov bx, word [bp-006h]                    ; 8b 5e fa
    86178617    xor cx, cx                                ; 31 c9
    8618     call 09fb0h                               ; e8 5c 40
     8618    call 09fe0h                               ; e8 8c 40
    86198619    mov word [bp-010h], ax                    ; 89 46 f0
    86208620    mov word [bp-00eh], dx                    ; 89 56 f2
     
    87608760    xor bx, bx                                ; 31 db
    87618761    mov si, strict word 00020h                ; be 20 00
    8762     call 0a040h                               ; e8 68 3f
     8762    call 0a070h                               ; e8 98 3f
    87638763    mov word [bp-00eh], bx                    ; 89 5e f2
    87648764    mov bx, word [es:di+008h]                 ; 26 8b 5d 08
     
    89118911    mov bx, word [bp-00eh]                    ; 8b 5e f2
    89128912    mov si, strict word 00020h                ; be 20 00
    8913     call 0a030h                               ; e8 7e 3d
     8913    call 0a060h                               ; e8 ae 3d
    89148914    mov bx, di                                ; 89 fb
    89158915    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    92689268    mov bx, strict word 0000fh                ; bb 0f 00
    92699269    xor cx, cx                                ; 31 c9
    9270     call 09ff0h                               ; e8 a5 39
     9270    call 0a020h                               ; e8 d5 39
    92719271    mov cx, ax                                ; 89 c1
    92729272    mov bx, dx                                ; 89 d3
     
    1227912279    mov dx, ss                                ; 8c d2
    1228012280    lea ax, [bp-046h]                         ; 8d 46 ba
    12281     call 0a050h                               ; e8 ad 1c
     12281    call 0a080h                               ; e8 dd 1c
    1228212282    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1228312283    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1240412404    mov dx, word [bp-016h]                    ; 8b 56 ea
    1240512405    mov si, strict word 0000ch                ; be 0c 00
    12406     call 0a030h                               ; e8 4a 1b
     12406    call 0a060h                               ; e8 7a 1b
    1240712407    mov word [bp-018h], ax                    ; 89 46 e8
    1240812408    mov word [bp-014h], bx                    ; 89 5e ec
     
    1242412424    mov dx, word [bp-016h]                    ; 8b 56 ea
    1242512425    mov si, strict word 00006h                ; be 06 00
    12426     call 0a030h                               ; e8 0a 1b
     12426    call 0a060h                               ; e8 3a 1b
    1242712427    mov si, word [bp-020h]                    ; 8b 76 e0
    1242812428    add si, dx                                ; 01 d6
     
    1244212442    mov dx, si                                ; 89 f2
    1244312443    mov si, strict word 00008h                ; be 08 00
    12444     call 0a030h                               ; e8 da 1a
     12444    call 0a060h                               ; e8 0a 1b
    1244512445    mov word [bp-022h], bx                    ; 89 5e de
    1244612446    mov word [bp-02ch], cx                    ; 89 4e d4
     
    1245112451    mov dx, word [bp-02ah]                    ; 8b 56 d6
    1245212452    mov si, strict word 00010h                ; be 10 00
    12453     call 0a030h                               ; e8 bf 1a
     12453    call 0a060h                               ; e8 ef 1a
    1245412454    mov si, word [bp-01ah]                    ; 8b 76 e6
    1245512455    add si, dx                                ; 01 d6
     
    1247512475    mov dx, word [bp-016h]                    ; 8b 56 ea
    1247612476    mov si, strict word 0000bh                ; be 0b 00
    12477     call 0a030h                               ; e8 77 1a
     12477    call 0a060h                               ; e8 a7 1a
    1247812478    mov si, dx                                ; 89 d6
    1247912479    mov dx, cx                                ; 89 ca
     
    1292412924    mov ax, 00080h                            ; b8 80 00
    1292512925    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12926     call 0a050h                               ; e8 3a 16
     12926    call 0a080h                               ; e8 6a 16
    1292712927    mov es, [bp-00ah]                         ; 8e 46 f6
    1292812928    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1294212942    mov dx, word [es:si]                      ; 26 8b 14
    1294312943    mov si, strict word 00008h                ; be 08 00
    12944     call 0a030h                               ; e8 d6 15
     12944    call 0a060h                               ; e8 06 16
    1294512945    mov es, [bp-00ah]                         ; 8e 46 f6
    1294612946    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1295312953    mov dx, word [es:si]                      ; 26 8b 14
    1295412954    mov si, strict word 00010h                ; be 10 00
    12955     call 0a030h                               ; e8 b0 15
     12955    call 0a060h                               ; e8 e0 15
    1295612956    mov es, [bp-00ah]                         ; 8e 46 f6
    1295712957    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1296512965    mov dx, word [es:si]                      ; 26 8b 14
    1296612966    mov si, strict word 00018h                ; be 18 00
    12967     call 0a030h                               ; e8 84 15
     12967    call 0a060h                               ; e8 b4 15
    1296812968    mov es, [bp-00ah]                         ; 8e 46 f6
    1296912969    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1297612976    mov dx, word [es:si]                      ; 26 8b 14
    1297712977    mov si, strict word 00020h                ; be 20 00
    12978     call 0a030h                               ; e8 5e 15
     12978    call 0a060h                               ; e8 8e 15
    1297912979    mov es, [bp-00ah]                         ; 8e 46 f6
    1298012980    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1298712987    mov dx, word [es:si]                      ; 26 8b 14
    1298812988    mov si, strict word 00028h                ; be 28 00
    12989     call 0a030h                               ; e8 38 15
     12989    call 0a060h                               ; e8 68 15
    1299012990    mov es, [bp-00ah]                         ; 8e 46 f6
    1299112991    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1300113001    mov bx, word [bp-010h]                    ; 8b 5e f0
    1300213002    xor cx, cx                                ; 31 c9
    13003     call 09fb0h                               ; e8 83 14
     13003    call 09fe0h                               ; e8 b3 14
    1300413004    push dx                                   ; 52
    1300513005    push ax                                   ; 50
     
    1301113011    mov ax, 0026ah                            ; b8 6a 02
    1301213012    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13013     call 09efbh                               ; e8 b2 13
     13013    call 09f2fh                               ; e8 e6 13
    1301413014    mov es, [bp-00ah]                         ; 8e 46 f6
    1301513015    mov ax, word [es:di+0027eh]               ; 26 8b 85 7e 02
     
    1306913069    add ax, 0026ah                            ; 05 6a 02
    1307013070    mov dx, cx                                ; 89 ca
    13071     call 09f74h                               ; e8 53 13
     13071    call 09fa8h                               ; e8 87 13
    1307213072    mov es, cx                                ; 8e c1
    1307313073    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     
    1315113151    mov ax, di                                ; 89 f8
    1315213152    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13153     call 0a050h                               ; e8 7f 13
     13153    call 0a080h                               ; e8 af 13
    1315413154    lea ax, [di+00080h]                       ; 8d 85 80 00
    1315513155    mov cx, strict word 00040h                ; b9 40 00
    1315613156    xor bx, bx                                ; 31 db
    1315713157    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13158     call 0a050h                               ; e8 70 13
     13158    call 0a080h                               ; e8 a0 13
    1315913159    lea ax, [di+00200h]                       ; 8d 85 00 02
    1316013160    mov cx, strict word 00060h                ; b9 60 00
    1316113161    xor bx, bx                                ; 31 db
    1316213162    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13163     call 0a050h                               ; e8 61 13
     13163    call 0a080h                               ; e8 91 13
    1316413164    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1316513165    sal ax, 007h                              ; c1 e0 07
     
    1333213332    mov ax, si                                ; 89 f0
    1333313333    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13334     call 0a050h                               ; e8 01 12
     13334    call 0a080h                               ; e8 31 12
    1333513335    lea ax, [si+00080h]                       ; 8d 84 80 00
    1333613336    mov cx, strict word 00040h                ; b9 40 00
    1333713337    xor bx, bx                                ; 31 db
    1333813338    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13339     call 0a050h                               ; e8 f2 11
     13339    call 0a080h                               ; e8 22 12
    1334013340    lea di, [si+00200h]                       ; 8d bc 00 02
    1334113341    mov cx, strict word 00060h                ; b9 60 00
     
    1334313343    mov ax, di                                ; 89 f8
    1334413344    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13345     call 0a050h                               ; e8 e1 11
     13345    call 0a080h                               ; e8 11 12
    1334613346    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    1334713347    sal bx, 007h                              ; c1 e3 07
     
    1367013670    mov dx, word [bp+008h]                    ; 8b 56 08
    1367113671    xor cx, cx                                ; 31 c9
    13672     call 09ff0h                               ; e8 38 0e
     13672    call 0a020h                               ; e8 68 0e
    1367313673    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1367413674    xor di, di                                ; 31 ff
     
    1369413694    mov ax, 000c0h                            ; b8 c0 00
    1369513695    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13696     call 0a060h                               ; e8 58 0e
     13696    call 0a090h                               ; e8 88 0e
    1369713697    mov es, [bp-008h]                         ; 8e 46 f8
    1369813698    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1438314383    pop bp                                    ; 5d
    1438414384    retn                                      ; c3
    14385     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0d9h, 099h, 0b7h, 099h, 0bdh, 099h, 0c3h, 099h, 0c9h
    14386     db  099h, 0cfh, 099h, 0d5h, 099h, 0d9h, 099h
    14387 _ahci_init:                                  ; 0xf990a LB 0xfe
     14385    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0dah, 099h, 0b8h, 099h, 0beh, 099h, 0c4h, 099h, 0cah
     14386    db  099h, 0d0h, 099h, 0d6h, 099h, 0dah, 099h
     14387_ahci_init:                                  ; 0xf990a LB 0x116
    1438814388    push bp                                   ; 55
    1438914389    mov bp, sp                                ; 89 e5
    1439014390    push si                                   ; 56
    1439114391    push di                                   ; 57
    14392     sub sp, strict byte 00006h                ; 83 ec 06
     14392    sub sp, strict byte 00008h                ; 83 ec 08
    1439314393    mov ax, 00601h                            ; b8 01 06
    1439414394    mov dx, strict word 00001h                ; ba 01 00
    14395     call 09e28h                               ; e8 0d 05
    14396     mov dx, ax                                ; 89 c2
     14395    call 09e40h                               ; e8 25 05
     14396    mov bx, ax                                ; 89 c3
    1439714397    cmp ax, strict word 0ffffh                ; 3d ff ff
    14398     je near 09a01h                            ; 0f 84 dd 00
     14398    je near 09a19h                            ; 0f 84 f5 00
    1439914399    xor al, al                                ; 30 c0
    1440014400    shr ax, 008h                              ; c1 e8 08
    1440114401    mov byte [bp-00ah], al                    ; 88 46 f6
    14402     mov byte [bp-008h], dl                    ; 88 56 f8
    14403     xor dh, dh                                ; 30 f6
     14402    mov byte [bp-008h], bl                    ; 88 5e f8
     14403    movzx dx, bl                              ; 0f b6 d3
    1440414404    xor ah, ah                                ; 30 e4
    1440514405    mov bx, strict word 00034h                ; bb 34 00
    14406     call 09e53h                               ; e8 1a 05
     14406    call 09e6bh                               ; e8 31 05
    1440714407    mov cl, al                                ; 88 c1
    1440814408    test cl, cl                               ; 84 c9
    14409     je short 09962h                           ; 74 23
     14409    je short 09963h                           ; 74 23
    1441014410    movzx bx, cl                              ; 0f b6 d9
    1441114411    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1441314413    mov dx, di                                ; 89 fa
    1441414414    mov ax, si                                ; 89 f0
    14415     call 09e53h                               ; e8 02 05
     14415    call 09e6bh                               ; e8 19 05
    1441614416    cmp AL, strict byte 012h                  ; 3c 12
    14417     je short 09962h                           ; 74 0d
     14417    je short 09963h                           ; 74 0d
    1441814418    mov al, cl                                ; 88 c8
    1441914419    db  0feh, 0c0h
     
    1442214422    mov dx, di                                ; 89 fa
    1442314423    mov ax, si                                ; 89 f0
    14424     jmp short 09936h                          ; eb d4
     14424    jmp short 09937h                          ; eb d4
    1442514425    test cl, cl                               ; 84 c9
    14426     je near 09a01h                            ; 0f 84 99 00
     14426    je near 09a19h                            ; 0f 84 b0 00
    1442714427    add cl, 002h                              ; 80 c1 02
    1442814428    movzx bx, cl                              ; 0f b6 d9
    14429     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
    14430     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    14431     mov dx, di                                ; 89 fa
    14432     mov ax, si                                ; 89 f0
    14433     call 09e53h                               ; e8 d6 04
     14429    movzx si, byte [bp-008h]                  ; 0f b6 76 f8
     14430    movzx di, byte [bp-00ah]                  ; 0f b6 7e f6
     14431    mov dx, si                                ; 89 f2
     14432    mov ax, di                                ; 89 f8
     14433    call 09e6bh                               ; e8 ed 04
    1443414434    cmp AL, strict byte 010h                  ; 3c 10
    14435     jne near 09a01h                           ; 0f 85 7e 00
     14435    jne near 09a19h                           ; 0f 85 95 00
    1443614436    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1443714437    mov al, cl                                ; 88 c8
    1443814438    add AL, strict byte 002h                  ; 04 02
    1443914439    movzx bx, al                              ; 0f b6 d8
    14440     mov dx, di                                ; 89 fa
    14441     mov ax, si                                ; 89 f0
    14442     call 09e77h                               ; e8 e2 04
     14440    mov dx, si                                ; 89 f2
     14441    mov ax, di                                ; 89 f8
     14442    call 09e8fh                               ; e8 f9 04
    1444314443    mov dx, ax                                ; 89 c2
    1444414444    and ax, strict word 0000fh                ; 25 0f 00
    1444514445    sub ax, strict word 00004h                ; 2d 04 00
    1444614446    cmp ax, strict word 0000bh                ; 3d 0b 00
    14447     jnbe short 099d9h                         ; 77 37
     14447    jnbe short 099dah                         ; 77 37
    1444814448    push CS                                   ; 0e
    1444914449    pop ES                                    ; 07
     
    1445614456    jmp ax                                    ; ff e0
    1445714457    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    14458     jmp short 099d9h                          ; eb 1c
     14458    jmp short 099dah                          ; eb 1c
    1445914459    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    14460     jmp short 099d9h                          ; eb 16
     14460    jmp short 099dah                          ; eb 16
    1446114461    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    14462     jmp short 099d9h                          ; eb 10
     14462    jmp short 099dah                          ; eb 10
    1446314463    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    14464     jmp short 099d9h                          ; eb 0a
     14464    jmp short 099dah                          ; eb 0a
    1446514465    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    14466     jmp short 099d9h                          ; eb 04
     14466    jmp short 099dah                          ; eb 04
    1446714467    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    14468     mov si, dx                                ; 89 d6
    14469     shr si, 004h                              ; c1 ee 04
    14470     sal si, 002h                              ; c1 e6 02
     14468    mov cx, dx                                ; 89 d1
     14469    shr cx, 004h                              ; c1 e9 04
     14470    sal cx, 002h                              ; c1 e1 02
    1447114471    mov al, byte [bp-006h]                    ; 8a 46 fa
    1447214472    test al, al                               ; 84 c0
    14473     je short 09a01h                           ; 74 19
     14473    je short 09a19h                           ; 74 30
    1447414474    movzx bx, al                              ; 0f b6 d8
    14475     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    14476     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    14477     call 09e99h                               ; e8 a3 04
     14475    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     14476    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     14477    mov dx, di                                ; 89 fa
     14478    mov ax, si                                ; 89 f0
     14479    call 09eb1h                               ; e8 b6 04
    1447814480    test AL, strict byte 001h                 ; a8 01
    14479     je short 09a01h                           ; 74 07
     14481    je short 09a19h                           ; 74 1a
    1448014482    and AL, strict byte 0f0h                  ; 24 f0
    14481     add ax, si                                ; 01 f0
    14482     call 097a4h                               ; e8 a3 fd
     14483    add ax, cx                                ; 01 c8
     14484    mov word [bp-00ch], ax                    ; 89 46 f4
     14485    mov cx, strict word 00007h                ; b9 07 00
     14486    mov bx, strict word 00004h                ; bb 04 00
     14487    mov dx, di                                ; 89 fa
     14488    mov ax, si                                ; 89 f0
     14489    call 09ed8h                               ; e8 c5 04
     14490    mov ax, word [bp-00ch]                    ; 8b 46 f4
     14491    call 097a4h                               ; e8 8b fd
    1448314492    lea sp, [bp-004h]                         ; 8d 66 fc
    1448414493    pop di                                    ; 5f
     
    1448614495    pop bp                                    ; 5d
    1448714496    retn                                      ; c3
    14488 apm_out_str_:                                ; 0xf9a08 LB 0x39
     14497apm_out_str_:                                ; 0xf9a20 LB 0x39
    1448914498    push bp                                   ; 55
    1449014499    mov bp, sp                                ; 89 e5
     
    1449214501    mov bx, ax                                ; 89 c3
    1449314502    cmp byte [bx], 000h                       ; 80 3f 00
    14494     je short 09a1dh                           ; 74 0a
     14503    je short 09a35h                           ; 74 0a
    1449514504    mov al, byte [bx]                         ; 8a 07
    1449614505    out DX, AL                                ; ee
     
    1449914508    db  00ah, 0c0h
    1450014509    ; or al, al                                 ; 0a c0
    14501     jne short 09a15h                          ; 75 f8
     14510    jne short 09a2dh                          ; 75 f8
    1450214511    lea sp, [bp-002h]                         ; 8d 66 fe
    1450314512    pop bx                                    ; 5b
    1450414513    pop bp                                    ; 5d
    1450514514    retn                                      ; c3
    14506     db  064h, 09ah, 030h, 09bh, 076h, 09ah
    14507     ; fs call far fs:09a76h:09b30h              ; 64 9a 30 9b 76 9a
    14508     xchg cx, ax                               ; 91
    14509     call far 09abch:09b30h                    ; 9a 30 9b bc 9a
    14510     xor byte [bp+di-0653fh], bl               ; 30 9b c1 9a
    14511     add ax, 0059bh                            ; 05 9b 05
     14515    jl short 099d7h                           ; 7c 9a
     14516    dec ax                                    ; 48
    1451214517    wait                                      ; 9b
    14513     add ax, 0009bh                            ; 05 9b 00
     14518    mov ds, [bp+si-06557h]                    ; 8e 9a a9 9a
     14519    dec ax                                    ; 48
    1451414520    wait                                      ; 9b
    14515     add ax, 0059bh                            ; 05 9b 05
     14521    aam 09ah                                  ; d4 9a
     14522    dec ax                                    ; 48
    1451614523    wait                                      ; 9b
    14517     stc                                       ; f9
    14518     db  09ah
    14519 _apm_function:                               ; 0xf9a41 LB 0xf5
     14524    fstp dword [bp+si-064e3h]                 ; d9 9a 1d 9b
     14525    sbb ax, 01d9bh                            ; 1d 9b 1d
     14526    wait                                      ; 9b
     14527    sbb byte [bp+di-064e3h], bl               ; 18 9b 1d 9b
     14528    sbb ax, 0119bh                            ; 1d 9b 11
     14529    wait                                      ; 9b
     14530_apm_function:                               ; 0xf9a59 LB 0xf5
    1452014531    push bp                                   ; 55
    1452114532    mov bp, sp                                ; 89 e5
     
    1452514536    xor ah, ah                                ; 30 e4
    1452614537    cmp ax, strict word 0000eh                ; 3d 0e 00
    14527     jnbe near 09b05h                          ; 0f 87 b0 00
     14538    jnbe near 09b1dh                          ; 0f 87 b0 00
    1452814539    mov bx, ax                                ; 89 c3
    1452914540    add bx, ax                                ; 01 c3
    1453014541    mov dx, word [bp+018h]                    ; 8b 56 18
    1453114542    or dl, 001h                               ; 80 ca 01
    14532     jmp word [cs:bx-065ddh]                   ; 2e ff a7 23 9a
     14543    jmp word [cs:bx-065c5h]                   ; 2e ff a7 3b 9a
    1453314544    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1453414545    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1453514546    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14536     jmp near 09b30h                           ; e9 ba 00
     14547    jmp near 09b48h                           ; e9 ba 00
    1453714548    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14538     mov word [bp+00ch], 0a0d4h                ; c7 46 0c d4 a0
     14549    mov word [bp+00ch], 0a104h                ; c7 46 0c 04 a1
    1453914550    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1454014551    mov ax, strict word 0fff0h                ; b8 f0 ff
    1454114552    mov word [bp+006h], ax                    ; 89 46 06
    1454214553    mov word [bp+004h], ax                    ; 89 46 04
    14543     jmp near 09b30h                           ; e9 9f 00
     14554    jmp near 09b48h                           ; e9 9f 00
    1454414555    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1454514556    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1455414565    mov si, ax                                ; 89 c6
    1455514566    sal esi, 010h                             ; 66 c1 e6 10
    14556     jmp near 09b30h                           ; e9 74 00
     14567    jmp near 09b48h                           ; e9 74 00
    1455714568    sti                                       ; fb
    1455814569    hlt                                       ; f4
    14559     jmp near 09b30h                           ; e9 6f 00
     14570    jmp near 09b48h                           ; e9 6f 00
    1456014571    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14561     je short 09ae6h                           ; 74 1f
     14572    je short 09afeh                           ; 74 1f
    1456214573    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14563     je short 09adeh                           ; 74 11
     14574    je short 09af6h                           ; 74 11
    1456414575    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14565     jne short 09aeeh                          ; 75 1b
     14576    jne short 09b06h                          ; 75 1b
    1456614577    mov dx, 0040fh                            ; ba 0f 04
    1456714578    mov ax, 00d22h                            ; b8 22 0d
    14568     call 09a08h                               ; e8 2c ff
    14569     jmp short 09b30h                          ; eb 52
     14579    call 09a20h                               ; e8 2c ff
     14580    jmp short 09b48h                          ; eb 52
    1457014581    mov dx, 0040fh                            ; ba 0f 04
    1457114582    mov ax, 00d2ah                            ; b8 2a 0d
    14572     jmp short 09ad9h                          ; eb f3
     14583    jmp short 09af1h                          ; eb f3
    1457314584    mov dx, 0040fh                            ; ba 0f 04
    1457414585    mov ax, 00d32h                            ; b8 32 0d
    14575     jmp short 09ad9h                          ; eb eb
     14586    jmp short 09af1h                          ; eb eb
    1457614587    or ah, 00ah                               ; 80 cc 0a
    1457714588    mov word [bp+012h], ax                    ; 89 46 12
    1457814589    mov word [bp+018h], dx                    ; 89 56 18
    14579     jmp short 09b30h                          ; eb 37
     14590    jmp short 09b48h                          ; eb 37
    1458014591    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14581     jmp short 09b30h                          ; eb 30
     14592    jmp short 09b48h                          ; eb 30
    1458214593    or ah, 080h                               ; 80 cc 80
    14583     jmp short 09af1h                          ; eb ec
     14594    jmp short 09b09h                          ; eb ec
    1458414595    mov bx, 00db2h                            ; bb b2 0d
    1458514596    mov cx, ds                                ; 8c d9
    1458614597    mov ax, strict word 00004h                ; b8 04 00
    14587     call 01a2ah                               ; e8 1a 7f
     14598    call 01a2ah                               ; e8 02 7f
    1458814599    push word [bp+00ch]                       ; ff 76 0c
    1458914600    push word [bp+012h]                       ; ff 76 12
    1459014601    push 00d3bh                               ; 68 3b 0d
    1459114602    push strict byte 00004h                   ; 6a 04
    14592     call 01a6bh                               ; e8 4d 7f
     14603    call 01a6bh                               ; e8 35 7f
    1459314604    add sp, strict byte 00008h                ; 83 c4 08
    1459414605    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1460114612    pop bp                                    ; 5d
    1460214613    retn                                      ; c3
    14603 pci16_select_reg_:                           ; 0xf9b36 LB 0x24
     14614pci16_select_reg_:                           ; 0xf9b4e LB 0x24
    1460414615    push bp                                   ; 55
    1460514616    mov bp, sp                                ; 89 e5
     
    1461814629    pop bp                                    ; 5d
    1461914630    retn                                      ; c3
    14620 pci16_find_device_:                          ; 0xf9b5a LB 0xf7
     14631pci16_find_device_:                          ; 0xf9b72 LB 0xf7
    1462114632    push bp                                   ; 55
    1462214633    mov bp, sp                                ; 89 e5
     
    1463214643    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1463314644    test bl, 007h                             ; f6 c3 07
    14634     jne short 09ba2h                          ; 75 2d
     14645    jne short 09bbah                          ; 75 2d
    1463514646    mov dx, strict word 0000eh                ; ba 0e 00
    1463614647    mov ax, bx                                ; 89 d8
    14637     call 09b36h                               ; e8 b9 ff
     14648    call 09b4eh                               ; e8 b9 ff
    1463814649    mov dx, 00cfeh                            ; ba fe 0c
    1463914650    in AL, DX                                 ; ec
     
    1464214653    mov byte [bp-006h], al                    ; 88 46 fa
    1464314654    cmp AL, strict byte 0ffh                  ; 3c ff
    14644     jne short 09b90h                          ; 75 06
     14655    jne short 09ba8h                          ; 75 06
    1464514656    add bx, strict byte 00008h                ; 83 c3 08
    14646     jmp near 09c23h                           ; e9 93 00
     14657    jmp near 09c3bh                           ; e9 93 00
    1464714658    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14648     je short 09b9dh                           ; 74 07
     14659    je short 09bb5h                           ; 74 07
    1464914660    mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
    14650     jmp short 09ba2h                          ; eb 05
     14661    jmp short 09bbah                          ; eb 05
    1465114662    mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
    1465214663    mov al, byte [bp-006h]                    ; 8a 46 fa
    1465314664    and AL, strict byte 007h                  ; 24 07
    1465414665    cmp AL, strict byte 001h                  ; 3c 01
    14655     jne short 09bcah                          ; 75 1f
     14666    jne short 09be2h                          ; 75 1f
    1465614667    mov ax, bx                                ; 89 d8
    1465714668    shr ax, 008h                              ; c1 e8 08
    1465814669    test ax, ax                               ; 85 c0
    14659     jne short 09bcah                          ; 75 16
     14670    jne short 09be2h                          ; 75 16
    1466014671    mov dx, strict word 0001ah                ; ba 1a 00
    1466114672    mov ax, bx                                ; 89 d8
    14662     call 09b36h                               ; e8 7a ff
     14673    call 09b4eh                               ; e8 7a ff
    1466314674    mov dx, 00cfeh                            ; ba fe 0c
    1466414675    in AL, DX                                 ; ec
     
    1466614677    ; sub ah, ah                                ; 2a e4
    1466714678    cmp al, byte [bp-008h]                    ; 3a 46 f8
    14668     jbe short 09bcah                          ; 76 03
     14679    jbe short 09be2h                          ; 76 03
    1466914680    mov byte [bp-008h], al                    ; 88 46 f8
    1467014681    test di, di                               ; 85 ff
    14671     je short 09bd3h                           ; 74 05
     14682    je short 09bebh                           ; 74 05
    1467214683    mov dx, strict word 00008h                ; ba 08 00
    14673     jmp short 09bd5h                          ; eb 02
     14684    jmp short 09bedh                          ; eb 02
    1467414685    xor dx, dx                                ; 31 d2
    1467514686    mov ax, bx                                ; 89 d8
    14676     call 09b36h                               ; e8 5c ff
     14687    call 09b4eh                               ; e8 5c ff
    1467714688    mov dx, 00cfch                            ; ba fc 0c
    1467814689    in eax, DX                                ; 66 ed
     
    1468514696    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    1468614697    test di, di                               ; 85 ff
    14687     je short 09c04h                           ; 74 0f
     14698    je short 09c1ch                           ; 74 0f
    1468814699    mov cx, strict word 00008h                ; b9 08 00
    1468914700    shr dx, 1                                 ; d1 ea
    1469014701    rcr ax, 1                                 ; d1 d8
    14691     loop 09bf8h                               ; e2 fa
     14702    loop 09c10h                               ; e2 fa
    1469214703    mov word [bp-00eh], ax                    ; 89 46 f2
    1469314704    mov word [bp-00ch], dx                    ; 89 56 f4
    1469414705    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1469514706    cmp ax, word [bp-014h]                    ; 3b 46 ec
    14696     jne short 09c14h                          ; 75 08
     14707    jne short 09c2ch                          ; 75 08
    1469714708    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1469814709    cmp ax, word [bp-012h]                    ; 3b 46 ee
    14699     je short 09c1ah                           ; 74 06
     14710    je short 09c32h                           ; 74 06
    1470014711    cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
    14701     je short 09c20h                           ; 74 06
     14712    je short 09c38h                           ; 74 06
    1470214713    dec si                                    ; 4e
    1470314714    cmp si, strict byte 0ffffh                ; 83 fe ff
    14704     je short 09c32h                           ; 74 12
     14715    je short 09c4ah                           ; 74 12
    1470514716    add bx, word [bp-00ah]                    ; 03 5e f6
    1470614717    mov dx, bx                                ; 89 da
     
    1470814719    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1470914720    cmp dx, ax                                ; 39 c2
    14710     jbe near 09b70h                           ; 0f 86 3e ff
     14721    jbe near 09b88h                           ; 0f 86 3e ff
    1471114722    cmp si, strict byte 0ffffh                ; 83 fe ff
    14712     jne short 09c3bh                          ; 75 04
     14723    jne short 09c53h                          ; 75 04
    1471314724    mov ax, bx                                ; 89 d8
    14714     jmp short 09c3eh                          ; eb 03
     14725    jmp short 09c56h                          ; eb 03
    1471514726    mov ax, strict word 0ffffh                ; b8 ff ff
    1471614727    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1471914730    pop bp                                    ; 5d
    1472014731    retn                                      ; c3
    14721     xor bx, word [di-062b3h]                  ; 33 9d 4d 9d
    14722     pushaw                                    ; 60
     14732    dec bx                                    ; 4b
    1472314733    popfw                                     ; 9d
    14724     jne short 09beah                          ; 75 9d
    14725     mov byte [di-06265h], bl                  ; 88 9d 9b 9d
    14726 _pci16_function:                             ; 0xf9c51 LB 0x1d7
     14734    db  065h, 09dh
     14735    ; gs popfw                                  ; 65 9d
     14736    js short 09c00h                           ; 78 9d
     14737    lea bx, [di-06260h]                       ; 8d 9d a0 9d
     14738    mov BL, strict byte 09dh                  ; b3 9d
     14739_pci16_function:                             ; 0xf9c69 LB 0x1d7
    1472714740    push bp                                   ; 55
    1472814741    mov bp, sp                                ; 89 e5
     
    1473814751    xor ah, ah                                ; 30 e4
    1473914752    cmp bx, strict byte 00003h                ; 83 fb 03
    14740     jc short 09c8ah                           ; 72 1a
    14741     jbe short 09ce2h                          ; 76 70
     14753    jc short 09ca2h                           ; 72 1a
     14754    jbe short 09cfah                          ; 76 70
    1474214755    cmp bx, strict byte 0000eh                ; 83 fb 0e
    14743     je near 09dafh                            ; 0f 84 36 01
     14756    je near 09dc7h                            ; 0f 84 36 01
    1474414757    cmp bx, strict byte 00008h                ; 83 fb 08
    14745     jc near 09df4h                            ; 0f 82 74 01
     14758    jc near 09e0ch                            ; 0f 82 74 01
    1474614759    cmp bx, strict byte 0000dh                ; 83 fb 0d
    14747     jbe near 09d07h                           ; 0f 86 80 00
    14748     jmp near 09df4h                           ; e9 6a 01
     14760    jbe near 09d1fh                           ; 0f 86 80 00
     14761    jmp near 09e0ch                           ; e9 6a 01
    1474914762    cmp bx, strict byte 00002h                ; 83 fb 02
    14750     je short 09cb2h                           ; 74 23
     14763    je short 09ccah                           ; 74 23
    1475114764    cmp bx, strict byte 00001h                ; 83 fb 01
    14752     jne near 09df4h                           ; 0f 85 5e 01
     14765    jne near 09e0ch                           ; 0f 85 5e 01
    1475314766    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1475414767    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1475614769    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1475714770    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    14758     jmp near 09e21h                           ; e9 6f 01
     14771    jmp near 09e39h                           ; e9 6f 01
    1475914772    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    14760     jne short 09cbeh                          ; 75 06
     14773    jne short 09cd6h                          ; 75 06
    1476114774    or ah, 083h                               ; 80 cc 83
    14762     jmp near 09e1ah                           ; e9 5c 01
     14775    jmp near 09e32h                           ; e9 5c 01
    1476314776    mov bx, word [bp+008h]                    ; 8b 5e 08
    1476414777    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1476514778    mov ax, word [bp+018h]                    ; 8b 46 18
    1476614779    xor cx, cx                                ; 31 c9
    14767     call 09b5ah                               ; e8 8e fe
     14780    call 09b72h                               ; e8 8e fe
    1476814781    cmp ax, strict word 0ffffh                ; 3d ff ff
    14769     jne short 09cdch                          ; 75 0b
     14782    jne short 09cf4h                          ; 75 0b
    1477014783    mov ax, word [bp+020h]                    ; 8b 46 20
    1477114784    xor ah, ah                                ; 30 e4
    1477214785    or ah, 086h                               ; 80 cc 86
    14773     jmp near 09e1ah                           ; e9 3e 01
     14786    jmp near 09e32h                           ; e9 3e 01
    1477414787    mov word [bp+014h], ax                    ; 89 46 14
    14775     jmp near 09e21h                           ; e9 3f 01
     14788    jmp near 09e39h                           ; e9 3f 01
    1477614789    mov bx, word [bp+008h]                    ; 8b 5e 08
    1477714790    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1477814791    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1477914792    mov cx, strict word 00001h                ; b9 01 00
    14780     call 09b5ah                               ; e8 69 fe
     14793    call 09b72h                               ; e8 69 fe
    1478114794    cmp ax, strict word 0ffffh                ; 3d ff ff
    14782     jne short 09d01h                          ; 75 0b
     14795    jne short 09d19h                          ; 75 0b
    1478314796    mov ax, word [bp+020h]                    ; 8b 46 20
    1478414797    xor ah, ah                                ; 30 e4
    1478514798    or ah, 086h                               ; 80 cc 86
    14786     jmp near 09e1ah                           ; e9 19 01
     14799    jmp near 09e32h                           ; e9 19 01
    1478714800    mov word [bp+014h], ax                    ; 89 46 14
    14788     jmp near 09e21h                           ; e9 1a 01
     14801    jmp near 09e39h                           ; e9 1a 01
    1478914802    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    14790     jc short 09d14h                           ; 72 06
     14803    jc short 09d2ch                           ; 72 06
    1479114804    or ah, 087h                               ; 80 cc 87
    14792     jmp near 09e1ah                           ; e9 06 01
     14805    jmp near 09e32h                           ; e9 06 01
    1479314806    mov dx, word [bp+004h]                    ; 8b 56 04
    1479414807    mov ax, word [bp+014h]                    ; 8b 46 14
    14795     call 09b36h                               ; e8 19 fe
     14808    call 09b4eh                               ; e8 19 fe
    1479614809    mov bx, word [bp+020h]                    ; 8b 5e 20
    1479714810    xor bh, bh                                ; 30 ff
    1479814811    sub bx, strict byte 00008h                ; 83 eb 08
    1479914812    cmp bx, strict byte 00005h                ; 83 fb 05
    14800     jnbe near 09e21h                          ; 0f 87 f5 00
     14813    jnbe near 09e39h                          ; 0f 87 f5 00
    1480114814    add bx, bx                                ; 01 db
    14802     jmp word [cs:bx-063bbh]                   ; 2e ff a7 45 9c
     14815    jmp word [cs:bx-063a3h]                   ; 2e ff a7 5d 9c
    1480314816    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1480414817    xor bl, bl                                ; 30 db
     
    1481114824    or bx, ax                                 ; 09 c3
    1481214825    mov word [bp+01ch], bx                    ; 89 5e 1c
    14813     jmp near 09e21h                           ; e9 d4 00
     14826    jmp near 09e39h                           ; e9 d4 00
    1481414827    mov dx, word [bp+004h]                    ; 8b 56 04
    1481514828    xor dh, dh                                ; 30 f6
     
    1481814831    in ax, DX                                 ; ed
    1481914832    mov word [bp+01ch], ax                    ; 89 46 1c
    14820     jmp near 09e21h                           ; e9 c1 00
     14833    jmp near 09e39h                           ; e9 c1 00
    1482114834    mov dx, 00cfch                            ; ba fc 0c
    1482214835    in eax, DX                                ; 66 ed
     
    1482714840    mov word [bp+01ch], ax                    ; 89 46 1c
    1482814841    mov word [bp+01eh], dx                    ; 89 56 1e
    14829     jmp near 09e21h                           ; e9 ac 00
     14842    jmp near 09e39h                           ; e9 ac 00
    1483014843    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1483114844    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1483414847    add dx, 00cfch                            ; 81 c2 fc 0c
    1483514848    out DX, AL                                ; ee
    14836     jmp near 09e21h                           ; e9 99 00
     14849    jmp near 09e39h                           ; e9 99 00
    1483714850    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1483814851    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1484114854    add dx, 00cfch                            ; 81 c2 fc 0c
    1484214855    out DX, ax                                ; ef
    14843     jmp near 09e21h                           ; e9 86 00
     14856    jmp near 09e39h                           ; e9 86 00
    1484414857    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1484514858    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1485014863    ; mov ax, cx                                ; 8b c1
    1485114864    out DX, eax                               ; 66 ef
    14852     jmp short 09e21h                          ; eb 72
     14865    jmp short 09e39h                          ; eb 72
    1485314866    mov bx, word [bp+004h]                    ; 8b 5e 04
    1485414867    mov es, [bp+026h]                         ; 8e 46 26
    1485514868    mov word [bp-008h], bx                    ; 89 5e f8
    1485614869    mov [bp-006h], es                         ; 8c 46 fa
    14857     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     14870    mov cx, word [0f370h]                     ; 8b 0e 70 f3
    1485814871    cmp cx, word [es:bx]                      ; 26 3b 0f
    14859     jbe short 09dd5h                          ; 76 11
     14872    jbe short 09dedh                          ; 76 11
    1486014873    mov ax, word [bp+020h]                    ; 8b 46 20
    1486114874    xor ah, ah                                ; 30 e4
     
    1486314876    mov word [bp+020h], ax                    ; 89 46 20
    1486414877    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    14865     jmp short 09de9h                          ; eb 14
     14878    jmp short 09e01h                          ; eb 14
    1486614879    les di, [es:bx+002h]                      ; 26 c4 7f 02
    14867     mov si, 0f2c0h                            ; be c0 f2
     14880    mov si, 0f190h                            ; be 90 f1
    1486814881    mov dx, ds                                ; 8c da
    1486914882    push DS                                   ; 1e
     
    1487214885    pop DS                                    ; 1f
    1487314886    mov word [bp+014h], 00a00h                ; c7 46 14 00 0a
    14874     mov ax, word [0f4a0h]                     ; a1 a0 f4
     14887    mov ax, word [0f370h]                     ; a1 70 f3
    1487514888    les bx, [bp-008h]                         ; c4 5e f8
    1487614889    mov word [es:bx], ax                      ; 26 89 07
    14877     jmp short 09e21h                          ; eb 2d
     14890    jmp short 09e39h                          ; eb 2d
    1487814891    mov bx, 00db2h                            ; bb b2 0d
    1487914892    mov cx, ds                                ; 8c d9
    1488014893    mov ax, strict word 00004h                ; b8 04 00
    14881     call 01a2ah                               ; e8 2b 7c
     14894    call 01a2ah                               ; e8 13 7c
    1488214895    mov ax, word [bp+014h]                    ; 8b 46 14
    1488314896    push ax                                   ; 50
     
    1488614899    push 00d6eh                               ; 68 6e 0d
    1488714900    push strict byte 00004h                   ; 6a 04
    14888     call 01a6bh                               ; e8 5c 7c
     14901    call 01a6bh                               ; e8 44 7c
    1488914902    add sp, strict byte 00008h                ; 83 c4 08
    1489014903    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1489814911    pop bp                                    ; 5d
    1489914912    retn                                      ; c3
    14900 pci_find_classcode_:                         ; 0xf9e28 LB 0x2b
     14913pci_find_classcode_:                         ; 0xf9e40 LB 0x2b
    1490114914    push bp                                   ; 55
    1490214915    mov bp, sp                                ; 89 e5
     
    1491314926    int 01ah                                  ; cd 1a
    1491414927    cmp ah, 000h                              ; 80 fc 00
    14915     je near 09e49h                            ; 0f 84 03 00
     14928    je near 09e61h                            ; 0f 84 03 00
    1491614929    mov bx, strict word 0ffffh                ; bb ff ff
    1491714930    mov ax, bx                                ; 89 d8
     
    1492214935    pop bp                                    ; 5d
    1492314936    retn                                      ; c3
    14924 pci_read_config_byte_:                       ; 0xf9e53 LB 0x24
     14937pci_read_config_byte_:                       ; 0xf9e6b LB 0x24
    1492514938    push bp                                   ; 55
    1492614939    mov bp, sp                                ; 89 e5
     
    1494114954    pop bp                                    ; 5d
    1494214955    retn                                      ; c3
    14943 pci_read_config_word_:                       ; 0xf9e77 LB 0x22
     14956pci_read_config_word_:                       ; 0xf9e8f LB 0x22
    1494414957    push bp                                   ; 55
    1494514958    mov bp, sp                                ; 89 e5
     
    1496014973    pop bp                                    ; 5d
    1496114974    retn                                      ; c3
    14962 pci_read_config_dword_:                      ; 0xf9e99 LB 0x27
     14975pci_read_config_dword_:                      ; 0xf9eb1 LB 0x27
    1496314976    push bp                                   ; 55
    1496414977    mov bp, sp                                ; 89 e5
     
    1498114994    pop bp                                    ; 5d
    1498214995    retn                                      ; c3
    14983 vds_is_present_:                             ; 0xf9ec0 LB 0x1d
     14996pci_write_config_word_:                      ; 0xf9ed8 LB 0x1c
     14997    push bp                                   ; 55
     14998    mov bp, sp                                ; 89 e5
     14999    push di                                   ; 57
     15000    movzx di, bl                              ; 0f b6 fb
     15001    xor ah, ah                                ; 30 e4
     15002    sal ax, 008h                              ; c1 e0 08
     15003    movzx bx, dl                              ; 0f b6 da
     15004    or bx, ax                                 ; 09 c3
     15005    mov ax, 0b10ch                            ; b8 0c b1
     15006    int 01ah                                  ; cd 1a
     15007    lea sp, [bp-002h]                         ; 8d 66 fe
     15008    pop di                                    ; 5f
     15009    pop bp                                    ; 5d
     15010    retn                                      ; c3
     15011vds_is_present_:                             ; 0xf9ef4 LB 0x1d
    1498415012    push bx                                   ; 53
    1498515013    push bp                                   ; 55
     
    1498915017    mov es, ax                                ; 8e c0
    1499015018    test byte [es:bx], 020h                   ; 26 f6 07 20
    14991     je short 09ed8h                           ; 74 06
     15019    je short 09f0ch                           ; 74 06
    1499215020    mov ax, strict word 00001h                ; b8 01 00
    1499315021    pop bp                                    ; 5d
     
    1499815026    pop bx                                    ; 5b
    1499915027    retn                                      ; c3
    15000 vds_real_to_lin_:                            ; 0xf9edd LB 0x1e
     15028vds_real_to_lin_:                            ; 0xf9f11 LB 0x1e
    1500115029    push bx                                   ; 53
    1500215030    push cx                                   ; 51
     
    1500915037    sal ax, 1                                 ; d1 e0
    1501015038    rcl dx, 1                                 ; d1 d2
    15011     loop 09eebh                               ; e2 fa
     15039    loop 09f1fh                               ; e2 fa
    1501215040    xor cx, cx                                ; 31 c9
    1501315041    add ax, bx                                ; 01 d8
     
    1501715045    pop bx                                    ; 5b
    1501815046    retn                                      ; c3
    15019 vds_build_sg_list_:                          ; 0xf9efb LB 0x79
     15047vds_build_sg_list_:                          ; 0xf9f2f LB 0x79
    1502015048    push bp                                   ; 55
    1502115049    mov bp, sp                                ; 89 e5
     
    1503115059    mov bx, word [bp+006h]                    ; 8b 5e 06
    1503215060    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15033     call 09eddh                               ; e8 c3 ff
     15061    call 09f11h                               ; e8 c3 ff
    1503415062    mov es, si                                ; 8e c6
    1503515063    mov word [es:di+004h], ax                 ; 26 89 45 04
    1503615064    mov word [es:di+006h], dx                 ; 26 89 55 06
    1503715065    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15038     call 09ec0h                               ; e8 93 ff
     15066    call 09ef4h                               ; e8 93 ff
    1503915067    test ax, ax                               ; 85 c0
    15040     je short 09f44h                           ; 74 13
     15068    je short 09f78h                           ; 74 13
    1504115069    mov es, si                                ; 8e c6
    1504215070    mov ax, 08105h                            ; b8 05 81
    1504315071    mov dx, strict word 00000h                ; ba 00 00
    1504415072    int 04bh                                  ; cd 4b
    15045     jc near 09f41h                            ; 0f 82 02 00
     15073    jc near 09f75h                            ; 0f 82 02 00
    1504615074    db  032h, 0c0h
    1504715075    ; xor al, al                                ; 32 c0
    1504815076    cbw                                       ; 98
    15049     jmp short 09f6bh                          ; eb 27
     15077    jmp short 09f9fh                          ; eb 27
    1505015078    mov es, si                                ; 8e c6
    1505115079    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1506415092    pop bp                                    ; 5d
    1506515093    retn 00004h                               ; c2 04 00
    15066 vds_free_sg_list_:                           ; 0xf9f74 LB 0x3c
     15094vds_free_sg_list_:                           ; 0xf9fa8 LB 0x38
    1506715095    push bp                                   ; 55
    1506815096    mov bp, sp                                ; 89 e5
     
    1507015098    push di                                   ; 57
    1507115099    mov bx, ax                                ; 89 c3
    15072     call 09ec0h                               ; e8 42 ff
     15100    call 09ef4h                               ; e8 42 ff
    1507315101    test ax, ax                               ; 85 c0
    15074     je short 09f95h                           ; 74 13
     15102    je short 09fc9h                           ; 74 13
    1507515103    mov di, bx                                ; 89 df
    1507615104    mov es, dx                                ; 8e c2
     
    1507815106    mov dx, strict word 00000h                ; ba 00 00
    1507915107    int 04bh                                  ; cd 4b
    15080     jc near 09f94h                            ; 0f 82 02 00
     15108    jc near 09fc8h                            ; 0f 82 02 00
    1508115109    db  032h, 0c0h
    1508215110    ; xor al, al                                ; 32 c0
     
    1508915117    pop bp                                    ; 5d
    1509015118    retn                                      ; c3
    15091     times 0xc db 0
    15092 __U4M:                                       ; 0xf9fb0 LB 0x40
     15119    times 0x8 db 0
     15120__U4M:                                       ; 0xf9fe0 LB 0x40
    1509315121    pushfw                                    ; 9c
    1509415122    push eax                                  ; 66 50
     
    1511615144    retn                                      ; c3
    1511715145    times 0xf db 0
    15118 __U4D:                                       ; 0xf9ff0 LB 0x40
     15146__U4D:                                       ; 0xfa020 LB 0x40
    1511915147    pushfw                                    ; 9c
    1512015148    push eax                                  ; 66 50
     
    1514715175    retn                                      ; c3
    1514815176    times 0x7 db 0
    15149 __U8RS:                                      ; 0xfa030 LB 0x10
     15177__U8RS:                                      ; 0xfa060 LB 0x10
    1515015178    test si, si                               ; 85 f6
    15151     je short 0a03fh                           ; 74 0b
     15179    je short 0a06fh                           ; 74 0b
    1515215180    shr ax, 1                                 ; d1 e8
    1515315181    rcr bx, 1                                 ; d1 db
     
    1515515183    rcr dx, 1                                 ; d1 da
    1515615184    dec si                                    ; 4e
    15157     jne short 0a034h                          ; 75 f5
     15185    jne short 0a064h                          ; 75 f5
    1515815186    retn                                      ; c3
    15159 __U8LS:                                      ; 0xfa040 LB 0x10
     15187__U8LS:                                      ; 0xfa070 LB 0x10
    1516015188    test si, si                               ; 85 f6
    15161     je short 0a04fh                           ; 74 0b
     15189    je short 0a07fh                           ; 74 0b
    1516215190    sal dx, 1                                 ; d1 e2
    1516315191    rcl cx, 1                                 ; d1 d1
     
    1516515193    rcl ax, 1                                 ; d1 d0
    1516615194    dec si                                    ; 4e
    15167     jne short 0a044h                          ; 75 f5
     15195    jne short 0a074h                          ; 75 f5
    1516815196    retn                                      ; c3
    15169 _fmemset_:                                   ; 0xfa050 LB 0x10
     15197_fmemset_:                                   ; 0xfa080 LB 0x10
    1517015198    push di                                   ; 57
    1517115199    mov es, dx                                ; 8e c2
     
    1517815206    retn                                      ; c3
    1517915207    times 0x3 db 0
    15180 _fmemcpy_:                                   ; 0xfa060 LB 0x3a
     15208_fmemcpy_:                                   ; 0xfa090 LB 0x3a
    1518115209    push bp                                   ; 55
    1518215210    db  08bh, 0ech
     
    1520015228    pop bp                                    ; 5d
    1520115229    retn                                      ; c3
    15202     add byte [bx+si], al                      ; 00 00
    15203     add byte [bx+si], al                      ; 00 00
    15204     add byte [bx+si], al                      ; 00 00
    15205     mov AL, strict byte 0a0h                  ; b0 a0
    15206     mov DL, strict byte 0a0h                  ; b2 a0
    15207     mov DH, strict byte 0a0h                  ; b6 a0
    15208     mov DH, strict byte 0a0h                  ; b6 a0
    15209     mov DH, strict byte 0a0h                  ; b6 a0
    15210     mov ax, 0b8a0h                            ; b8 a0 b8
    15211     mov AL, byte [0a0bah]                     ; a0 ba a0
    15212     mov si, 0bea0h                            ; be a0 be
    15213     mov AL, byte [0a0c0h]                     ; a0 c0 a0
    15214     lds sp, [bx+si-05f39h]                    ; c5 a0 c7 a0
    15215 apm_worker:                                  ; 0xfa09a LB 0x3a
     15230    db  000h, 000h, 000h, 000h, 000h, 000h, 0e0h, 0a0h, 0e2h, 0a0h, 0e6h, 0a0h, 0e6h, 0a0h, 0e6h, 0a0h
     15231    db  0e8h, 0a0h, 0e8h, 0a0h, 0eah, 0a0h, 0eeh, 0a0h, 0eeh, 0a0h, 0f0h, 0a0h, 0f5h, 0a0h, 0f7h, 0a0h
     15232apm_worker:                                  ; 0xfa0ca LB 0x3a
    1521615233    sti                                       ; fb
    1521715234    push ax                                   ; 50
     
    1522515242    pop ax                                    ; 58
    1522615243    mov AH, strict byte 053h                  ; b4 53
    15227     jnc short 0a0d0h                          ; 73 25
    15228     jmp word [cs:bp-05f80h]                   ; 2e ff a6 80 a0
    15229     jmp short 0a0ceh                          ; eb 1c
     15244    jnc short 0a100h                          ; 73 25
     15245    jmp word [cs:bp-05f50h]                   ; 2e ff a6 b0 a0
     15246    jmp short 0a0feh                          ; eb 1c
    1523015247    sti                                       ; fb
    1523115248    hlt                                       ; f4
    15232     jmp short 0a0ceh                          ; eb 18
    15233     jmp short 0a0ceh                          ; eb 16
    15234     jmp short 0a0d0h                          ; eb 16
     15249    jmp short 0a0feh                          ; eb 18
     15250    jmp short 0a0feh                          ; eb 16
     15251    jmp short 0a100h                          ; eb 16
    1523515252    mov AH, strict byte 080h                  ; b4 80
    15236     jmp short 0a0d2h                          ; eb 14
    15237     jmp short 0a0d0h                          ; eb 10
     15253    jmp short 0a102h                          ; eb 14
     15254    jmp short 0a100h                          ; eb 10
    1523815255    mov ax, 00102h                            ; b8 02 01
    15239     jmp short 0a0ceh                          ; eb 09
    15240     jmp short 0a0ceh                          ; eb 07
     15256    jmp short 0a0feh                          ; eb 09
     15257    jmp short 0a0feh                          ; eb 07
    1524115258    mov BL, strict byte 000h                  ; b3 00
    1524215259    mov cx, strict word 00000h                ; b9 00 00
    15243     jmp short 0a0ceh                          ; eb 00
     15260    jmp short 0a0feh                          ; eb 00
    1524415261    clc                                       ; f8
    1524515262    retn                                      ; c3
     
    1524715264    stc                                       ; f9
    1524815265    retn                                      ; c3
    15249 apm_pm16_entry:                              ; 0xfa0d4 LB 0x11
     15266apm_pm16_entry:                              ; 0xfa104 LB 0x11
    1525015267    mov AH, strict byte 002h                  ; b4 02
    1525115268    push DS                                   ; 1e
     
    1525515272    add bp, strict byte 00008h                ; 83 c5 08
    1525615273    mov ds, bp                                ; 8e dd
    15257     call 0a09ah                               ; e8 b8 ff
     15274    call 0a0cah                               ; e8 b8 ff
    1525815275    pop bp                                    ; 5d
    1525915276    pop DS                                    ; 1f
    1526015277    retf                                      ; cb
    1526115278
    15262   ; Padding 0x391b bytes at 0xfa0e5
    15263   times 14619 db 0
     15279  ; Padding 0x38eb bytes at 0xfa115
     15280  times 14571 db 0
    1526415281
    1526515282section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1530815325    add bp, strict byte 00008h                ; 83 c5 08
    1530915326    push ebp                                  ; 66 55
    15310     mov bp, 0a0d6h                            ; bd d6 a0
     15327    mov bp, 0a106h                            ; bd 06 a1
    1531115328    add byte [bx+si], al                      ; 00 00
    1531215329    push ebp                                  ; 66 55
     
    1564015657    mov bx, ax                                ; 89 c3
    1564115658    mov edx, dword [di]                       ; 66 8b 15
    15642     mov AL, byte [000f4h]                     ; a0 f4 00
    15643     add byte [bp+026h], ah                    ; 00 66 26
    15644     cmp dx, word [bx+si]                      ; 3b 10
     15659    jo short 0dd57h                           ; 70 f3
     15660    add byte [bx+si], al                      ; 00 00
     15661    db  066h, 026h, 03bh, 010h
     15662    ; cmp edx, dword [es:bx+si]                 ; 66 26 3b 10
    1564515663    jbe short 0dd7eh                          ; 76 12
    1564615664    mov ax, word [di+024h]                    ; 8b 45 24
     
    1565715675    mov di, word [es:bx+si+002h]              ; 26 8b 78 02
    1565815676    mov dx, ds                                ; 8c da
    15659     mov si, 0f2c0h                            ; be c0 f2
     15677    mov si, 0f190h                            ; be 90 f1
    1566015678    add byte [bx+si], al                      ; 00 00
    1566115679    mov es, [di-014h]                         ; 8e 45 ec
     
    1566615684    pop DS                                    ; 1f
    1566715685    mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1
    15668     mov AL, byte [000f4h]                     ; a0 f4 00
    15669     add byte [bp-00fbbh], cl                  ; 00 8e 45 f0
     15686    jo short 0dd9bh                           ; 70 f3
     15687    add byte [bx+si], al                      ; 00 00
     15688    mov es, [di-010h]                         ; 8e 45 f0
    1567015689    db  066h, 026h, 089h, 003h
    1567115690    ; mov dword [es:bp+di], eax                 ; 66 26 89 03
     
    1586715886    call 0e778h                               ; e8 e9 05
    1586815887    call 0f13bh                               ; e8 a9 0f
    15869     call 0f1c0h                               ; e8 2b 10
     15888    call 0f166h                               ; e8 d1 0f
    1587015889    mov ax, 0fe6eh                            ; b8 6e fe
    1587115890    mov word [00068h], ax                     ; a3 68 00
     
    1678916808    pop eax                                   ; 66 58
    1679016809    retn                                      ; c3
    16791 pcibios_init_iomem_bases:                    ; 0xff13b LB 0x16
     16810pcibios_init_iomem_bases:                    ; 0xff13b LB 0x12
    1679216811    push bp                                   ; 55
    1679316812    db  08bh, 0ech
    1679416813    ; mov bp, sp                                ; 8b ec
    16795     mov eax, strict dword 0e0000000h          ; 66 b8 00 00 00 e0
    16796     push eax                                  ; 66 50
    16797     mov ax, 0d000h                            ; b8 00 d0
    16798     push ax                                   ; 50
    16799     mov ax, strict word 00010h                ; b8 10 00
    16800     push ax                                   ; 50
    16801     mov bx, strict word 00008h                ; bb 08 00
    16802 pci_init_io_loop1:                           ; 0xff151 LB 0xe
    16803     mov DL, strict byte 000h                  ; b2 00
    16804     call 0f120h                               ; e8 ca ff
    16805     mov dx, 00cfch                            ; ba fc 0c
    16806     in ax, DX                                 ; ed
    16807     cmp ax, strict byte 0ffffh                ; 83 f8 ff
    16808     je short 0f198h                           ; 74 39
    16809 enable_iomem_space:                          ; 0xff15f LB 0x39
    16810     mov DL, strict byte 004h                  ; b2 04
    16811     call 0f120h                               ; e8 bc ff
    16812     mov dx, 00cfch                            ; ba fc 0c
    16813     in AL, DX                                 ; ec
    16814     or AL, strict byte 007h                   ; 0c 07
    16815     out DX, AL                                ; ee
    16816     mov DL, strict byte 000h                  ; b2 00
    16817     call 0f120h                               ; e8 b0 ff
    16818     mov dx, 00cfch                            ; ba fc 0c
    16819     in eax, DX                                ; 66 ed
    16820     cmp eax, strict dword 020001022h          ; 66 3d 22 10 00 20
    16821     jne short 0f198h                          ; 75 1b
    16822     mov DL, strict byte 010h                  ; b2 10
    16823     call 0f120h                               ; e8 9e ff
    16824     mov dx, 00cfch                            ; ba fc 0c
    16825     in ax, DX                                 ; ed
    16826     and ax, strict byte 0fffch                ; 83 e0 fc
    16827     db  08bh, 0c8h
    16828     ; mov cx, ax                                ; 8b c8
    16829     db  08bh, 0d1h
    16830     ; mov dx, cx                                ; 8b d1
    16831     add dx, strict byte 00014h                ; 83 c2 14
    16832     in ax, DX                                 ; ed
    16833     db  08bh, 0d1h
    16834     ; mov dx, cx                                ; 8b d1
    16835     add dx, strict byte 00018h                ; 83 c2 18
    16836     in eax, DX                                ; 66 ed
    16837 next_pci_dev:                                ; 0xff198 LB 0xf
    16838     mov byte [bp-008h], 010h                  ; c6 46 f8 10
    16839     inc bx                                    ; 43
    16840     cmp bx, 00100h                            ; 81 fb 00 01
    16841     jne short 0f151h                          ; 75 ae
     16814    mov eax, strict dword 00124f9fdh          ; 66 b8 fd f9 24 01
     16815    mov dx, 00410h                            ; ba 10 04
     16816    out DX, eax                               ; 66 ef
    1684216817    db  08bh, 0e5h
    1684316818    ; mov sp, bp                                ; 8b e5
    1684416819    pop bp                                    ; 5d
    1684516820    retn                                      ; c3
    16846 pcibios_init_set_elcr:                       ; 0xff1a7 LB 0xc
     16821pcibios_init_set_elcr:                       ; 0xff14d LB 0xc
    1684716822    push ax                                   ; 50
    1684816823    push cx                                   ; 51
    1684916824    mov dx, 004d0h                            ; ba d0 04
    1685016825    test AL, strict byte 008h                 ; a8 08
    16851     je short 0f1b3h                           ; 74 03
     16826    je short 0f159h                           ; 74 03
    1685216827    inc dx                                    ; 42
    1685316828    and AL, strict byte 007h                  ; 24 07
    16854 is_master_pic:                               ; 0xff1b3 LB 0xd
     16829is_master_pic:                               ; 0xff159 LB 0xd
    1685516830    db  08ah, 0c8h
    1685616831    ; mov cl, al                                ; 8a c8
     
    1686416839    pop ax                                    ; 58
    1686516840    retn                                      ; c3
    16866 pcibios_init_irqs:                           ; 0xff1c0 LB 0x53
     16841pcibios_init_irqs:                           ; 0xff166 LB 0x2a
    1686716842    push DS                                   ; 1e
    1686816843    push bp                                   ; 55
    1686916844    mov ax, 0f000h                            ; b8 00 f0
    1687016845    mov ds, ax                                ; 8e d8
    16871     mov dx, 004d0h                            ; ba d0 04
    16872     mov AL, strict byte 000h                  ; b0 00
    16873     out DX, AL                                ; ee
    16874     inc dx                                    ; 42
    16875     out DX, AL                                ; ee
    16876     mov si, 0f2a0h                            ; be a0 f2
    16877     mov bh, byte [si+008h]                    ; 8a 7c 08
    16878     mov bl, byte [si+009h]                    ; 8a 5c 09
    16879     mov DL, strict byte 000h                  ; b2 00
    16880     call 0f120h                               ; e8 43 ff
    16881     mov dx, 00cfch                            ; ba fc 0c
    16882     in eax, DX                                ; 66 ed
    16883     cmp eax, dword [si+00ch]                  ; 66 3b 44 0c
    16884     jne near 0f290h                           ; 0f 85 a6 00
    16885     mov dl, byte [si+022h]                    ; 8a 54 22
    16886     call 0f120h                               ; e8 30 ff
    16887     push bx                                   ; 53
    16888     mov dx, 00cfch                            ; ba fc 0c
    16889     mov ax, 08080h                            ; b8 80 80
    16890     out DX, ax                                ; ef
    16891     add dx, strict byte 00002h                ; 83 c2 02
    16892     out DX, ax                                ; ef
    16893     mov ax, word [si+006h]                    ; 8b 44 06
    16894     sub ax, strict byte 00020h                ; 83 e8 20
    16895     shr ax, 004h                              ; c1 e8 04
    16896     db  08bh, 0c8h
    16897     ; mov cx, ax                                ; 8b c8
    16898     add si, strict byte 00020h                ; 83 c6 20
    16899     db  08bh, 0ech
    16900     ; mov bp, sp                                ; 8b ec
    16901     mov ax, 0f11ch                            ; b8 1c f1
    16902     push ax                                   ; 50
    16903     db  033h, 0c0h
    16904     ; xor ax, ax                                ; 33 c0
    16905     push ax                                   ; 50
    16906 pci_init_irq_loop1:                          ; 0xff213 LB 0x5
    16907     mov bh, byte [si]                         ; 8a 3c
    16908     mov bl, byte [si+001h]                    ; 8a 5c 01
    16909 pci_init_irq_loop2:                          ; 0xff218 LB 0x15
    16910     mov DL, strict byte 000h                  ; b2 00
    16911     call 0f120h                               ; e8 03 ff
    16912     mov dx, 00cfch                            ; ba fc 0c
    16913     in ax, DX                                 ; ed
    16914     cmp ax, strict byte 0ffffh                ; 83 f8 ff
    16915     jne short 0f22dh                          ; 75 07
    16916     test bl, 007h                             ; f6 c3 07
    16917     je short 0f284h                           ; 74 59
    16918     jmp short 0f27ah                          ; eb 4d
    16919 pci_test_int_pin:                            ; 0xff22d LB 0x3c
    16920     mov DL, strict byte 03ch                  ; b2 3c
    16921     call 0f120h                               ; e8 ee fe
    16922     mov dx, 00cfdh                            ; ba fd 0c
    16923     in AL, DX                                 ; ec
    16924     and AL, strict byte 007h                  ; 24 07
    16925     je short 0f27ah                           ; 74 40
    16926     db  0feh, 0c8h
    16927     ; dec al                                    ; fe c8
    16928     mov DL, strict byte 003h                  ; b2 03
    16929     mul dl                                    ; f6 e2
    16930     add AL, strict byte 002h                  ; 04 02
    16931     db  032h, 0e4h
    16932     ; xor ah, ah                                ; 32 e4
    16933     db  08bh, 0d8h
    16934     ; mov bx, ax                                ; 8b d8
    16935     mov al, byte [bx+si]                      ; 8a 00
    16936     db  08ah, 0d0h
    16937     ; mov dl, al                                ; 8a d0
    16938     mov bx, word [byte bp+000h]               ; 8b 5e 00
    16939     call 0f120h                               ; e8 d0 fe
    16940     mov dx, 00cfch                            ; ba fc 0c
    16941     and AL, strict byte 003h                  ; 24 03
    16942     db  002h, 0d0h
    16943     ; add dl, al                                ; 02 d0
    16944     in AL, DX                                 ; ec
    16945     cmp AL, strict byte 080h                  ; 3c 80
    16946     jc short 0f269h                           ; 72 0d
    16947     mov bx, word [bp-002h]                    ; 8b 5e fe
    16948     mov al, byte [bx]                         ; 8a 07
    16949     out DX, AL                                ; ee
    16950     inc bx                                    ; 43
    16951     mov word [bp-002h], bx                    ; 89 5e fe
    16952     call 0f1a7h                               ; e8 3e ff
    16953 pirq_found:                                  ; 0xff269 LB 0x11
    16954     mov bh, byte [si]                         ; 8a 3c
    16955     mov bl, byte [si+001h]                    ; 8a 5c 01
    16956     add bl, byte [bp-003h]                    ; 02 5e fd
    16957     mov DL, strict byte 03ch                  ; b2 3c
    16958     call 0f120h                               ; e8 aa fe
    16959     mov dx, 00cfch                            ; ba fc 0c
    16960     out DX, AL                                ; ee
    16961 next_pci_func:                               ; 0xff27a LB 0xa
    16962     inc byte [bp-003h]                        ; fe 46 fd
    16963     db  0feh, 0c3h
    16964     ; inc bl                                    ; fe c3
    16965     test bl, 007h                             ; f6 c3 07
    16966     jne short 0f218h                          ; 75 94
    16967 next_pir_entry:                              ; 0xff284 LB 0xc
    16968     add si, strict byte 00010h                ; 83 c6 10
    16969     mov byte [bp-003h], 000h                  ; c6 46 fd 00
    16970     loop 0f213h                               ; e2 86
    16971     db  08bh, 0e5h
    16972     ; mov sp, bp                                ; 8b e5
    16973     pop bx                                    ; 5b
    16974 pci_init_end:                                ; 0xff290 LB 0x30
    1697516846    pop bp                                    ; 5d
    1697616847    pop DS                                    ; 1f
    1697716848    retn                                      ; c3
    16978     db  089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 0fch, 024h, 050h, 049h
    16979     db  052h, 000h, 001h, 000h, 002h, 000h, 008h, 000h, 000h, 086h, 080h, 000h, 070h, 000h, 000h, 000h
    16980     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 031h
    16981 _pci_routing_table:                          ; 0xff2c0 LB 0x1e0
     16849    and AL, strict byte 050h                  ; 24 50
     16850    dec cx                                    ; 49
     16851    push dx                                   ; 52
     16852    add byte [bx+di], al                      ; 00 01
     16853    add byte [bp+si], al                      ; 00 02
     16854    add byte [bx+si], cl                      ; 00 08
     16855    add byte [bx+si], al                      ; 00 00
     16856    xchg byte [bx+si+07000h], al              ; 86 80 00 70
     16857    times 0xf db 0
     16858    db  031h
     16859_pci_routing_table:                          ; 0xff190 LB 0x1e0
    1698216860    db  000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
    1698316861    db  000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
     
    1701016888    db  000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
    1701116889    db  000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
    17012 _pci_routing_table_size:                     ; 0xff4a0 LB 0x2
    17013     loopne 0f4a3h                             ; e0 01
    17014 biosorg_check_before_or_at_0F83Fh:           ; 0xff4a2 LB 0x39f
    17015     times 0x39d db 0
     16890_pci_routing_table_size:                     ; 0xff370 LB 0x2
     16891    loopne 0f373h                             ; e0 01
     16892biosorg_check_before_or_at_0F83Fh:           ; 0xff372 LB 0x4cf
     16893    times 0x4cd db 0
    1701616894    db  'XM'
    1701716895int12_handler:                               ; 0xff841 LB 0xc
     
    1706816946    popfw                                     ; 9d
    1706916947    jmp short 0f8a7h                          ; eb 13
    17070     call 09a41h                               ; e8 aa a1
     16948    call 09a59h                               ; e8 c2 a1
    1707116949    jmp short 0f88eh                          ; eb f5
    1707216950int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1722117099    cld                                       ; fc
    1722217100    pushad                                    ; 66 60
    17223     call 09c51h                               ; e8 d4 9d
     17101    call 09c69h                               ; e8 ec 9d
    1722417102    popad                                     ; 66 61
    1722517103    pop DS                                    ; 1f
     
    1733517213cpu_reset:                                   ; 0xffff0 LB 0x10
    1733617214    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17337     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 03ah
     17215    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 098h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum

    r67495 r67683  
    1 8754dcaf0f6dc65cc52733150d18ab66 *VBoxPcBios386.rom
     106415a86773af2f396238f38b281aa40 *VBoxPcBios386.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm

    r67495 r67683  
    11901190  times 1144 db 0
    11911191
    1192 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e18 class=CODE group=AUTO
     1192section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e48 class=CODE group=AUTO
    11931193rom_scan_:                                   ; 0xf1600 LB 0x52
    11941194    push bp                                   ; 55
     
    15961596    mov bx, strict word 0000ah                ; bb 0a 00
    15971597    xor cx, cx                                ; 31 c9
    1598     call 0a0b0h                               ; e8 d3 87
     1598    call 0a0e0h                               ; e8 03 88
    15991599    mov word [bp-008h], ax                    ; 89 46 f8
    16001600    mov cx, dx                                ; 89 d1
     
    18331833    mov dx, word [bp-026h]                    ; 8b 56 da
    18341834    mov si, word [bp-01eh]                    ; 8b 76 e2
    1835     call 0a0e0h                               ; e8 c8 85
     1835    call 0a110h                               ; e8 f8 85
    18361836    mov ax, dx                                ; 89 d0
    18371837    xor ah, dh                                ; 30 f4
     
    22942294    mov dx, word [es:si]                      ; 26 8b 14
    22952295    mov si, strict word 00018h                ; be 18 00
    2296     call 0a0e0h                               ; e8 4e 81
     2296    call 0a110h                               ; e8 7e 81
    22972297    xor dh, dh                                ; 30 f6
    22982298    mov word [bp-014h], dx                    ; 89 56 ec
     
    23042304    mov dx, word [es:si]                      ; 26 8b 14
    23052305    mov si, strict word 00020h                ; be 20 00
    2306     call 0a0e0h                               ; e8 2e 81
     2306    call 0a110h                               ; e8 5e 81
    23072307    mov bx, dx                                ; 89 d3
    23082308    mov word [bp-010h], dx                    ; 89 56 f0
     
    23362336    mov dx, word [es:si]                      ; 26 8b 14
    23372337    mov si, strict word 00008h                ; be 08 00
    2338     call 0a0e0h                               ; e8 db 80
     2338    call 0a110h                               ; e8 0b 81
    23392339    mov word [bp-010h], dx                    ; 89 56 f0
    23402340    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23452345    mov dx, word [es:si]                      ; 26 8b 14
    23462346    mov si, strict word 00018h                ; be 18 00
    2347     call 0a0e0h                               ; e8 bd 80
     2347    call 0a110h                               ; e8 ed 80
    23482348    mov bl, dl                                ; 88 d3
    23492349    and bl, 00fh                              ; 80 e3 0f
     
    29232923    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    29242924    mov si, strict word 0000bh                ; be 0b 00
    2925     call 0a0e0h                               ; e8 e1 7a
     2925    call 0a110h                               ; e8 11 7b
    29262926    mov word [bp-02ah], dx                    ; 89 56 d6
    29272927    mov word [bp-026h], cx                    ; 89 4e da
     
    32153215    mov dx, word [bp-022h]                    ; 8b 56 de
    32163216    mov si, strict word 00018h                ; be 18 00
    3217     call 0a0e0h                               ; e8 04 78
     3217    call 0a110h                               ; e8 34 78
    32183218    xor dh, dh                                ; 30 f6
    32193219    mov word [bp-014h], dx                    ; 89 56 ec
     
    32233223    mov dx, word [bp-022h]                    ; 8b 56 de
    32243224    mov si, strict word 00020h                ; be 20 00
    3225     call 0a0e0h                               ; e8 ed 77
     3225    call 0a110h                               ; e8 1d 78
    32263226    mov bx, dx                                ; 89 d3
    32273227    mov word [bp-024h], dx                    ; 89 56 dc
     
    32573257    mov dx, word [bp-022h]                    ; 8b 56 de
    32583258    mov si, strict word 00008h                ; be 08 00
    3259     call 0a0e0h                               ; e8 99 77
     3259    call 0a110h                               ; e8 c9 77
    32603260    mov word [bp-00ch], ax                    ; 89 46 f4
    32613261    mov word [bp-020h], bx                    ; 89 5e e0
     
    32643264    mov word [bp-024h], dx                    ; 89 56 dc
    32653265    mov si, strict word 00010h                ; be 10 00
    3266     call 0a0e0h                               ; e8 84 77
     3266    call 0a110h                               ; e8 b4 77
    32673267    mov word [bp-022h], dx                    ; 89 56 de
    32683268    mov ax, dx                                ; 89 d0
     
    56135613    mov dx, ss                                ; 8c d2
    56145614    lea ax, [bp-026h]                         ; 8d 46 da
    5615     call 0a100h                               ; e8 61 62
     5615    call 0a130h                               ; e8 91 62
    56165616    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    56175617    mov ax, strict word 00011h                ; b8 11 00
     
    61056105    xor dl, dl                                ; 30 d2
    61066106    xor cx, cx                                ; 31 c9
    6107     call 0a090h                               ; e8 7c 5c
     6107    call 0a0c0h                               ; e8 ac 5c
    61086108    xor bx, bx                                ; 31 db
    61096109    add ax, si                                ; 01 f0
     
    61116111    mov bx, di                                ; 89 fb
    61126112    xor cx, cx                                ; 31 c9
    6113     call 0a090h                               ; e8 6f 5c
     6113    call 0a0c0h                               ; e8 9f 5c
    61146114    mov bx, ax                                ; 89 c3
    61156115    mov ax, word [bp-00ah]                    ; 8b 46 f6
     
    61466146    mov dx, ss                                ; 8c d2
    61476147    lea ax, [bp-030h]                         ; 8d 46 d0
    6148     call 0a100h                               ; e8 88 5c
     6148    call 0a130h                               ; e8 b8 5c
    61496149    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    61506150    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    65006500    mov dx, ss                                ; 8c d2
    65016501    lea ax, [bp-02eh]                         ; 8d 46 d2
    6502     call 0a100h                               ; e8 a0 58
     6502    call 0a130h                               ; e8 d0 58
    65036503    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    65046504    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    85038503    mov dx, word [bp+00ch]                    ; 8b 56 0c
    85048504    mov si, strict word 00020h                ; be 20 00
    8505     call 0a0e0h                               ; e8 3a 45
     8505    call 0a110h                               ; e8 6a 45
    85068506    test ax, ax                               ; 85 c0
    85078507    jne short 05bb6h                          ; 75 0c
     
    85418541    mov bx, strict word 0003fh                ; bb 3f 00
    85428542    xor cx, cx                                ; 31 c9
    8543     call 0a090h                               ; e8 91 44
     8543    call 0a0c0h                               ; e8 c1 44
    85448544    mov bx, ax                                ; 89 c3
    85458545    mov cx, dx                                ; 89 d1
    85468546    mov ax, word [bp-004h]                    ; 8b 46 fc
    85478547    mov dx, si                                ; 89 f2
    8548     call 0a0b0h                               ; e8 a5 44
     8548    call 0a0e0h                               ; e8 d5 44
    85498549    mov word [es:di+002h], ax                 ; 26 89 45 02
    85508550    cmp ax, 00400h                            ; 3d 00 04
     
    87778777    mov bx, cx                                ; 89 cb
    87788778    xor cx, cx                                ; 31 c9
    8779     call 0a090h                               ; e8 70 42
     8779    call 0a0c0h                               ; e8 a0 42
    87808780    xor bx, bx                                ; 31 db
    87818781    add ax, word [bp-00ch]                    ; 03 46 f4
     
    87838783    mov bx, word [bp-010h]                    ; 8b 5e f0
    87848784    xor cx, cx                                ; 31 c9
    8785     call 0a090h                               ; e8 61 42
     8785    call 0a0c0h                               ; e8 91 42
    87868786    xor bx, bx                                ; 31 db
    87878787    add ax, di                                ; 01 f8
     
    89578957    mov bx, word [bp-00ch]                    ; 8b 5e f4
    89588958    xor cx, cx                                ; 31 c9
    8959     call 0a090h                               ; e8 8a 40
     8959    call 0a0c0h                               ; e8 ba 40
    89608960    mov bx, di                                ; 89 fb
    89618961    xor cx, cx                                ; 31 c9
    8962     call 0a090h                               ; e8 83 40
     8962    call 0a0c0h                               ; e8 b3 40
    89638963    mov word [bp-008h], ax                    ; 89 46 f8
    89648964    mov word [bp-006h], dx                    ; 89 56 fa
     
    91049104    xor bx, bx                                ; 31 db
    91059105    mov si, strict word 00020h                ; be 20 00
    9106     call 0a0f0h                               ; e8 48 3f
     9106    call 0a120h                               ; e8 78 3f
    91079107    mov word [bp-00eh], ax                    ; 89 46 f2
    91089108    mov word [bp-010h], bx                    ; 89 5e f0
     
    92699269    mov dx, si                                ; 89 f2
    92709270    mov si, strict word 00020h                ; be 20 00
    9271     call 0a0e0h                               ; e8 41 3d
     9271    call 0a110h                               ; e8 71 3d
    92729272    mov bx, di                                ; 89 fb
    92739273    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    96339633    mov bx, strict word 0000fh                ; bb 0f 00
    96349634    xor cx, cx                                ; 31 c9
    9635     call 0a0b0h                               ; e8 73 39
     9635    call 0a0e0h                               ; e8 a3 39
    96369636    mov cx, ax                                ; 89 c1
    96379637    mov bx, dx                                ; 89 d3
     
    1267812678    mov dx, ss                                ; 8c d2
    1267912679    lea ax, [bp-048h]                         ; 8d 46 b8
    12680     call 0a100h                               ; e8 59 1d
     12680    call 0a130h                               ; e8 89 1d
    1268112681    mov byte [bp-048h], 09eh                  ; c6 46 b8 9e
    1268212682    mov byte [bp-047h], 010h                  ; c6 46 b9 10
     
    1281612816    mov dx, word [bp-024h]                    ; 8b 56 dc
    1281712817    mov si, strict word 0000ch                ; be 0c 00
    12818     call 0a0e0h                               ; e8 e9 1b
     12818    call 0a110h                               ; e8 19 1c
    1281912819    mov word [bp-02ah], ax                    ; 89 46 d6
    1282012820    mov word [bp-02ch], bx                    ; 89 5e d4
     
    1283812838    mov dx, word [bp-024h]                    ; 8b 56 dc
    1283912839    mov si, strict word 00006h                ; be 06 00
    12840     call 0a0e0h                               ; e8 a8 1b
     12840    call 0a110h                               ; e8 d8 1b
    1284112841    mov si, word [bp-018h]                    ; 8b 76 e8
    1284212842    add si, dx                                ; 01 d6
     
    1285612856    mov dx, si                                ; 89 f2
    1285712857    mov si, strict word 00008h                ; be 08 00
    12858     call 0a0e0h                               ; e8 78 1b
     12858    call 0a110h                               ; e8 a8 1b
    1285912859    mov word [bp-02eh], bx                    ; 89 5e d2
    1286012860    mov word [bp-030h], cx                    ; 89 4e d0
     
    1286512865    mov dx, word [bp-01eh]                    ; 8b 56 e2
    1286612866    mov si, strict word 00010h                ; be 10 00
    12867     call 0a0e0h                               ; e8 5d 1b
     12867    call 0a110h                               ; e8 8d 1b
    1286812868    mov si, word [bp-032h]                    ; 8b 76 ce
    1286912869    add si, dx                                ; 01 d6
     
    1289012890    mov dx, word [bp-024h]                    ; 8b 56 dc
    1289112891    mov si, strict word 0000bh                ; be 0b 00
    12892     call 0a0e0h                               ; e8 13 1b
     12892    call 0a110h                               ; e8 43 1b
    1289312893    mov si, dx                                ; 89 d6
    1289412894    mov word [bp-026h], cx                    ; 89 4e da
     
    1338313383    mov ax, 00080h                            ; b8 80 00
    1338413384    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13385     call 0a100h                               ; e8 8f 16
     13385    call 0a130h                               ; e8 bf 16
    1338613386    mov es, [bp-00ah]                         ; 8e 46 f6
    1338713387    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1340113401    mov dx, word [es:si]                      ; 26 8b 14
    1340213402    mov si, strict word 00008h                ; be 08 00
    13403     call 0a0e0h                               ; e8 2b 16
     13403    call 0a110h                               ; e8 5b 16
    1340413404    mov es, [bp-00ah]                         ; 8e 46 f6
    1340513405    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1341213412    mov dx, word [es:si]                      ; 26 8b 14
    1341313413    mov si, strict word 00010h                ; be 10 00
    13414     call 0a0e0h                               ; e8 05 16
     13414    call 0a110h                               ; e8 35 16
    1341513415    mov es, [bp-00ah]                         ; 8e 46 f6
    1341613416    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1342413424    mov dx, word [es:si]                      ; 26 8b 14
    1342513425    mov si, strict word 00018h                ; be 18 00
    13426     call 0a0e0h                               ; e8 d9 15
     13426    call 0a110h                               ; e8 09 16
    1342713427    mov es, [bp-00ah]                         ; 8e 46 f6
    1342813428    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1343513435    mov dx, word [es:si]                      ; 26 8b 14
    1343613436    mov si, strict word 00020h                ; be 20 00
    13437     call 0a0e0h                               ; e8 b3 15
     13437    call 0a110h                               ; e8 e3 15
    1343813438    mov es, [bp-00ah]                         ; 8e 46 f6
    1343913439    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1344613446    mov dx, word [es:si]                      ; 26 8b 14
    1344713447    mov si, strict word 00028h                ; be 28 00
    13448     call 0a0e0h                               ; e8 8d 15
     13448    call 0a110h                               ; e8 bd 15
    1344913449    mov es, [bp-00ah]                         ; 8e 46 f6
    1345013450    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1345913459    mov bx, word [bp-012h]                    ; 8b 5e ee
    1346013460    xor cx, cx                                ; 31 c9
    13461     call 0a090h                               ; e8 0b 15
     13461    call 0a0c0h                               ; e8 3b 15
    1346213462    push dx                                   ; 52
    1346313463    push ax                                   ; 50
     
    1346913469    mov ax, 0026ah                            ; b8 6a 02
    1347013470    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13471     call 09fdch                               ; e8 3b 14
     13471    call 0a019h                               ; e8 78 14
    1347213472    mov es, [bp-00ah]                         ; 8e 46 f6
    1347313473    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1353313533    add ax, 0026ah                            ; 05 6a 02
    1353413534    mov dx, cx                                ; 89 ca
    13535     call 0a053h                               ; e8 d7 13
     13535    call 0a090h                               ; e8 14 14
    1353613536    mov es, cx                                ; 8e c1
    1353713537    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     
    1361913619    mov ax, di                                ; 89 f8
    1362013620    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13621     call 0a100h                               ; e8 d2 13
     13621    call 0a130h                               ; e8 02 14
    1362213622    lea ax, [di+00080h]                       ; 8d 85 80 00
    1362313623    mov cx, strict word 00040h                ; b9 40 00
    1362413624    xor bx, bx                                ; 31 db
    1362513625    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13626     call 0a100h                               ; e8 c3 13
     13626    call 0a130h                               ; e8 f3 13
    1362713627    lea ax, [di+00200h]                       ; 8d 85 00 02
    1362813628    mov cx, strict word 00060h                ; b9 60 00
    1362913629    xor bx, bx                                ; 31 db
    1363013630    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13631     call 0a100h                               ; e8 b4 13
     13631    call 0a130h                               ; e8 e4 13
    1363213632    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1363313633    xor ah, ah                                ; 30 e4
     
    1380613806    mov ax, si                                ; 89 f0
    1380713807    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13808     call 0a100h                               ; e8 4e 12
     13808    call 0a130h                               ; e8 7e 12
    1380913809    lea ax, [si+00080h]                       ; 8d 84 80 00
    1381013810    mov cx, strict word 00040h                ; b9 40 00
    1381113811    xor bx, bx                                ; 31 db
    1381213812    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13813     call 0a100h                               ; e8 3f 12
     13813    call 0a130h                               ; e8 6f 12
    1381413814    lea di, [si+00200h]                       ; 8d bc 00 02
    1381513815    mov cx, strict word 00060h                ; b9 60 00
     
    1381713817    mov ax, di                                ; 89 f8
    1381813818    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13819     call 0a100h                               ; e8 2e 12
     13819    call 0a130h                               ; e8 5e 12
    1382013820    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1382113821    xor bh, bh                                ; 30 ff
     
    1415814158    mov dx, word [bp+008h]                    ; 8b 56 08
    1415914159    xor cx, cx                                ; 31 c9
    14160     call 0a0b0h                               ; e8 84 0e
     14160    call 0a0e0h                               ; e8 b4 0e
    1416114161    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1416214162    xor di, di                                ; 31 ff
     
    1418414184    mov ax, 000c0h                            ; b8 c0 00
    1418514185    mov dx, word [bp-00ah]                    ; 8b 56 f6
    14186     call 0a110h                               ; e8 92 0e
     14186    call 0a140h                               ; e8 c2 0e
    1418714187    mov es, [bp-008h]                         ; 8e 46 f8
    1418814188    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1491814918    pop bp                                    ; 5d
    1491914919    retn                                      ; c3
    14920     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0bah, 09ah, 098h, 09ah, 09eh, 09ah, 0a4h, 09ah, 0aah
    14921     db  09ah, 0b0h, 09ah, 0b6h, 09ah, 0bah, 09ah
    14922 _ahci_init:                                  ; 0xf99d5 LB 0x11a
     14920    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0bbh, 09ah, 099h, 09ah, 09fh, 09ah, 0a5h, 09ah, 0abh
     14921    db  09ah, 0b1h, 09ah, 0b7h, 09ah, 0bbh, 09ah
     14922_ahci_init:                                  ; 0xf99d5 LB 0x139
    1492314923    push bp                                   ; 55
    1492414924    mov bp, sp                                ; 89 e5
     14925    push si                                   ; 56
    1492514926    push di                                   ; 57
    14926     sub sp, strict byte 0000eh                ; 83 ec 0e
     14927    sub sp, strict byte 00012h                ; 83 ec 12
    1492714928    mov ax, 00601h                            ; b8 01 06
    1492814929    mov dx, strict word 00001h                ; ba 01 00
    14929     call 09f0eh                               ; e8 29 05
     14930    call 09f2dh                               ; e8 47 05
    1493014931    mov dx, ax                                ; 89 c2
    1493114932    cmp ax, strict word 0ffffh                ; 3d ff ff
    14932     je short 09a35h                           ; 74 49
     14933    je short 09a36h                           ; 74 49
    1493314934    mov al, ah                                ; 88 e0
    14934     mov byte [bp-006h], ah                    ; 88 66 fa
    14935     mov byte [bp-008h], dl                    ; 88 56 f8
     14935    mov byte [bp-008h], ah                    ; 88 66 f8
     14936    mov byte [bp-00ah], dl                    ; 88 56 f6
    1493614937    xor dh, ah                                ; 30 e6
    1493714938    xor ah, ah                                ; 30 e4
    1493814939    mov bx, strict word 00034h                ; bb 34 00
    14939     call 09f16h                               ; e8 18 05
     14940    call 09f35h                               ; e8 36 05
    1494014941    mov cl, al                                ; 88 c1
    1494114942    test cl, cl                               ; 84 c9
    14942     je short 09a38h                           ; 74 34
     14943    je short 09a39h                           ; 74 34
    1494314944    mov bl, cl                                ; 88 cb
    1494414945    xor bh, bh                                ; 30 ff
    14945     mov al, byte [bp-008h]                    ; 8a 46 f8
     14946    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1494614947    mov byte [bp-00ch], al                    ; 88 46 f4
    1494714948    mov byte [bp-00bh], bh                    ; 88 7e f5
    14948     mov al, byte [bp-006h]                    ; 8a 46 fa
    14949     mov byte [bp-010h], al                    ; 88 46 f0
    14950     mov byte [bp-00fh], bh                    ; 88 7e f1
     14949    mov al, byte [bp-008h]                    ; 8a 46 f8
     14950    mov byte [bp-012h], al                    ; 88 46 ee
     14951    mov byte [bp-011h], bh                    ; 88 7e ef
    1495114952    mov dx, word [bp-00ch]                    ; 8b 56 f4
    14952     mov ax, word [bp-010h]                    ; 8b 46 f0
    14953     call 09f16h                               ; e8 f3 04
     14953    mov ax, word [bp-012h]                    ; 8b 46 ee
     14954    call 09f35h                               ; e8 11 05
    1495414955    cmp AL, strict byte 012h                  ; 3c 12
    14955     je short 09a38h                           ; 74 11
     14956    je short 09a39h                           ; 74 11
    1495614957    mov bl, cl                                ; 88 cb
    1495714958    db  0feh, 0c3h
     
    1495914960    xor bh, bh                                ; 30 ff
    1496014961    mov dx, word [bp-00ch]                    ; 8b 56 f4
    14961     mov ax, word [bp-010h]                    ; 8b 46 f0
    14962     jmp short 099fbh                          ; eb c6
    14963     jmp near 09ae9h                           ; e9 b1 00
     14962    mov ax, word [bp-012h]                    ; 8b 46 ee
     14963    jmp short 099fch                          ; eb c6
     14964    jmp near 09b07h                           ; e9 ce 00
    1496414965    test cl, cl                               ; 84 c9
    14965     je short 09a35h                           ; 74 f9
     14966    je short 09a36h                           ; 74 f9
    1496614967    add cl, 002h                              ; 80 c1 02
    1496714968    mov bl, cl                                ; 88 cb
    1496814969    xor bh, bh                                ; 30 ff
    14969     mov al, byte [bp-008h]                    ; 8a 46 f8
     14970    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1497014971    mov byte [bp-00eh], al                    ; 88 46 f2
    1497114972    mov byte [bp-00dh], bh                    ; 88 7e f3
    14972     mov al, byte [bp-006h]                    ; 8a 46 fa
    14973     mov byte [bp-00ah], al                    ; 88 46 f6
    14974     mov byte [bp-009h], bh                    ; 88 7e f7
     14973    mov al, byte [bp-008h]                    ; 8a 46 f8
     14974    mov byte [bp-014h], al                    ; 88 46 ec
     14975    mov byte [bp-013h], bh                    ; 88 7e ed
    1497514976    mov dx, word [bp-00eh]                    ; 8b 56 f2
    14976     mov ax, word [bp-00ah]                    ; 8b 46 f6
    14977     call 09f16h                               ; e8 b8 04
     14977    mov ax, word [bp-014h]                    ; 8b 46 ec
     14978    call 09f35h                               ; e8 d6 04
    1497814979    cmp AL, strict byte 010h                  ; 3c 10
    14979     jne short 09a35h                          ; 75 d3
    14980     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     14980    jne short 09a36h                          ; 75 d3
     14981    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1498114982    mov bl, cl                                ; 88 cb
    1498214983    add bl, 002h                              ; 80 c3 02
    1498314984    xor bh, bh                                ; 30 ff
    1498414985    mov dx, word [bp-00eh]                    ; 8b 56 f2
    14985     mov ax, word [bp-00ah]                    ; 8b 46 f6
    14986     call 09f3dh                               ; e8 c7 04
     14986    mov ax, word [bp-014h]                    ; 8b 46 ec
     14987    call 09f5ch                               ; e8 e5 04
    1498714988    mov dx, ax                                ; 89 c2
    1498814989    and ax, strict word 0000fh                ; 25 0f 00
    1498914990    sub ax, strict word 00004h                ; 2d 04 00
    1499014991    cmp ax, strict word 0000bh                ; 3d 0b 00
    14991     jnbe short 09abah                         ; 77 37
     14992    jnbe short 09abbh                         ; 77 37
    1499214993    push CS                                   ; 0e
    1499314994    pop ES                                    ; 07
     
    1499915000    mov ax, word [cs:di-0663bh]               ; 2e 8b 85 c5 99
    1500015001    jmp ax                                    ; ff e0
    15001     mov byte [bp-004h], 010h                  ; c6 46 fc 10
    15002     jmp short 09abah                          ; eb 1c
    15003     mov byte [bp-004h], 014h                  ; c6 46 fc 14
    15004     jmp short 09abah                          ; eb 16
    15005     mov byte [bp-004h], 018h                  ; c6 46 fc 18
    15006     jmp short 09abah                          ; eb 10
    15007     mov byte [bp-004h], 01ch                  ; c6 46 fc 1c
    15008     jmp short 09abah                          ; eb 0a
    15009     mov byte [bp-004h], 020h                  ; c6 46 fc 20
    15010     jmp short 09abah                          ; eb 04
    15011     mov byte [bp-004h], 024h                  ; c6 46 fc 24
     15002    mov byte [bp-006h], 010h                  ; c6 46 fa 10
     15003    jmp short 09abbh                          ; eb 1c
     15004    mov byte [bp-006h], 014h                  ; c6 46 fa 14
     15005    jmp short 09abbh                          ; eb 16
     15006    mov byte [bp-006h], 018h                  ; c6 46 fa 18
     15007    jmp short 09abbh                          ; eb 10
     15008    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
     15009    jmp short 09abbh                          ; eb 0a
     15010    mov byte [bp-006h], 020h                  ; c6 46 fa 20
     15011    jmp short 09abbh                          ; eb 04
     15012    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1501215013    mov CL, strict byte 004h                  ; b1 04
    15013     mov ax, dx                                ; 89 d0
    15014     shr ax, CL                                ; d3 e8
    15015     mov cx, ax                                ; 89 c1
    15016     sal cx, 1                                 ; d1 e1
    15017     sal cx, 1                                 ; d1 e1
    15018     mov al, byte [bp-004h]                    ; 8a 46 fc
     15014    mov si, dx                                ; 89 d6
     15015    shr si, CL                                ; d3 ee
     15016    sal si, 1                                 ; d1 e6
     15017    sal si, 1                                 ; d1 e6
     15018    mov al, byte [bp-006h]                    ; 8a 46 fa
    1501915019    test al, al                               ; 84 c0
    15020     je short 09ae9h                           ; 74 1c
     15020    je short 09b07h                           ; 74 3b
    1502115021    mov bl, al                                ; 88 c3
    1502215022    xor bh, bh                                ; 30 ff
    15023     mov dl, byte [bp-008h]                    ; 8a 56 f8
    15024     xor dh, dh                                ; 30 f6
    15025     mov al, byte [bp-006h]                    ; 8a 46 fa
    15026     xor ah, ah                                ; 30 e4
    15027     call 09f62h                               ; e8 84 04
     15023    mov al, byte [bp-00ah]                    ; 8a 46 f6
     15024    mov byte [bp-010h], al                    ; 88 46 f0
     15025    mov byte [bp-00fh], bh                    ; 88 7e f1
     15026    mov al, byte [bp-008h]                    ; 8a 46 f8
     15027    mov byte [bp-016h], al                    ; 88 46 ea
     15028    mov byte [bp-015h], bh                    ; 88 7e eb
     15029    mov dx, word [bp-010h]                    ; 8b 56 f0
     15030    mov ax, word [bp-016h]                    ; 8b 46 ea
     15031    call 09f81h                               ; e8 96 04
    1502815032    test AL, strict byte 001h                 ; a8 01
    15029     je short 09ae9h                           ; 74 07
     15033    je short 09b07h                           ; 74 18
    1503015034    and AL, strict byte 0f0h                  ; 24 f0
    15031     add ax, cx                                ; 01 c8
    15032     call 09867h                               ; e8 7e fd
    15033     lea sp, [bp-002h]                         ; 8d 66 fe
     15035    add si, ax                                ; 01 c6
     15036    mov cx, strict word 00007h                ; b9 07 00
     15037    mov bx, strict word 00004h                ; bb 04 00
     15038    mov dx, word [bp-010h]                    ; 8b 56 f0
     15039    mov ax, word [bp-016h]                    ; 8b 46 ea
     15040    call 09fc0h                               ; e8 be 04
     15041    mov ax, si                                ; 89 f0
     15042    call 09867h                               ; e8 60 fd
     15043    lea sp, [bp-004h]                         ; 8d 66 fc
    1503415044    pop di                                    ; 5f
     15045    pop si                                    ; 5e
    1503515046    pop bp                                    ; 5d
    1503615047    retn                                      ; c3
    15037 apm_out_str_:                                ; 0xf9aef LB 0x39
     15048apm_out_str_:                                ; 0xf9b0e LB 0x39
    1503815049    push bp                                   ; 55
    1503915050    mov bp, sp                                ; 89 e5
     
    1504115052    mov bx, ax                                ; 89 c3
    1504215053    cmp byte [bx], 000h                       ; 80 3f 00
    15043     je short 09b04h                           ; 74 0a
     15054    je short 09b23h                           ; 74 0a
    1504415055    mov al, byte [bx]                         ; 8a 07
    1504515056    out DX, AL                                ; ee
     
    1504815059    db  00ah, 0c0h
    1504915060    ; or al, al                                 ; 0a c0
    15050     jne short 09afch                          ; 75 f8
     15061    jne short 09b1bh                          ; 75 f8
    1505115062    lea sp, [bp-002h]                         ; 8d 66 fe
    1505215063    pop bx                                    ; 5b
    1505315064    pop bp                                    ; 5d
    1505415065    retn                                      ; c3
    15055     dec cx                                    ; 49
     15066    push 0f39bh                               ; 68 9b f3
    1505615067    wait                                      ; 9b
    15057     aam 09bh                                  ; d4 9b
    15058     pop bx                                    ; 5b
     15068    jp short 09acah                           ; 7a 9b
     15069    xchg bp, ax                               ; 95
    1505915070    wait                                      ; 9b
    15060     jbe short 09aadh                          ; 76 9b
    15061     aam 09bh                                  ; d4 9b
    15062     mov ax, word [0d49bh]                     ; a1 9b d4
     15071    rep wait                                  ; f3 9b
     15072    rcr byte [bp+di-0640dh], 0f9h             ; c0 9b f3 9b f9
    1506315073    wait                                      ; 9b
    15064     ficomp dword [bp+di-0645ah]               ; da 9b a6 9b
    15065     cmpsb                                     ; a6
    15066     wait                                      ; 9b
    15067     cmpsb                                     ; a6
    15068     wait                                      ; 9b
    15069     sbb word [si-0645ah], bx                  ; 19 9c a6 9b
    15070     cmpsb                                     ; a6
    15071     wait                                      ; 9b
    15072     db  012h
     15074    lds bx, [bp+di-0643bh]                    ; c5 9b c5 9b
     15075    lds bx, [bp+di-063c8h]                    ; c5 9b 38 9c
     15076    lds bx, [bp+di-0643bh]                    ; c5 9b c5 9b
     15077    db  031h
    1507315078    pushfw                                    ; 9c
    15074 _apm_function:                               ; 0xf9b28 LB 0xf6
     15079_apm_function:                               ; 0xf9b47 LB 0xf6
    1507515080    push bp                                   ; 55
    1507615081    mov bp, sp                                ; 89 e5
     
    1508015085    xor ah, ah                                ; 30 e4
    1508115086    cmp ax, strict word 0000eh                ; 3d 0e 00
    15082     jnbe short 09ba6h                         ; 77 6c
     15087    jnbe short 09bc5h                         ; 77 6c
    1508315088    mov bx, ax                                ; 89 c3
    1508415089    sal bx, 1                                 ; d1 e3
    1508515090    mov dx, word [bp+018h]                    ; 8b 56 18
    1508615091    or dl, 001h                               ; 80 ca 01
    15087     jmp word [cs:bx-064f6h]                   ; 2e ff a7 0a 9b
     15092    jmp word [cs:bx-064d7h]                   ; 2e ff a7 29 9b
    1508815093    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1508915094    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1509015095    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    15091     jmp near 09bd4h                           ; e9 79 00
     15096    jmp near 09bf3h                           ; e9 79 00
    1509215097    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    15093     mov word [bp+00ch], 0a184h                ; c7 46 0c 84 a1
     15098    mov word [bp+00ch], 0a1b4h                ; c7 46 0c b4 a1
    1509415099    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1509515100    mov ax, strict word 0fff0h                ; b8 f0 ff
    1509615101    mov word [bp+006h], ax                    ; 89 46 06
    1509715102    mov word [bp+004h], ax                    ; 89 46 04
    15098     jmp near 09bd4h                           ; e9 5e 00
     15103    jmp near 09bf3h                           ; e9 5e 00
    1509915104    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1510015105    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1510915114    mov si, ax                                ; 89 c6
    1511015115    sal esi, 010h                             ; 66 c1 e6 10
    15111     jmp near 09bd4h                           ; e9 33 00
     15116    jmp near 09bf3h                           ; e9 33 00
    1511215117    sti                                       ; fb
    1511315118    hlt                                       ; f4
    15114     jmp near 09bd4h                           ; e9 2e 00
     15119    jmp near 09bf3h                           ; e9 2e 00
    1511515120    mov bx, 00da0h                            ; bb a0 0d
    1511615121    mov cx, ds                                ; 8c d9
    1511715122    mov ax, strict word 00004h                ; b8 04 00
    15118     call 01933h                               ; e8 82 7d
     15123    call 01933h                               ; e8 63 7d
    1511915124    push word [bp+00ch]                       ; ff 76 0c
    1512015125    push word [bp+012h]                       ; ff 76 12
     
    1512315128    mov ax, strict word 00004h                ; b8 04 00
    1512415129    push ax                                   ; 50
    15125     call 01976h                               ; e8 b4 7d
     15130    call 01976h                               ; e8 95 7d
    1512615131    add sp, strict byte 00008h                ; 83 c4 08
    1512715132    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1513515140    retn                                      ; c3
    1513615141    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    15137     je short 09bffh                           ; 74 1f
     15142    je short 09c1eh                           ; 74 1f
    1513815143    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    15139     je short 09bf7h                           ; 74 11
     15144    je short 09c16h                           ; 74 11
    1514015145    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    15141     jne short 09c07h                          ; 75 1b
     15146    jne short 09c26h                          ; 75 1b
    1514215147    mov dx, 0040fh                            ; ba 0f 04
    1514315148    mov ax, 00d10h                            ; b8 10 0d
    15144     call 09aefh                               ; e8 fa fe
    15145     jmp short 09bd4h                          ; eb dd
     15149    call 09b0eh                               ; e8 fa fe
     15150    jmp short 09bf3h                          ; eb dd
    1514615151    mov dx, 0040fh                            ; ba 0f 04
    1514715152    mov ax, 00d18h                            ; b8 18 0d
    15148     jmp short 09bf2h                          ; eb f3
     15153    jmp short 09c11h                          ; eb f3
    1514915154    mov dx, 0040fh                            ; ba 0f 04
    1515015155    mov ax, 00d20h                            ; b8 20 0d
    15151     jmp short 09bf2h                          ; eb eb
     15156    jmp short 09c11h                          ; eb eb
    1515215157    or ah, 00ah                               ; 80 cc 0a
    1515315158    mov word [bp+012h], ax                    ; 89 46 12
    1515415159    mov word [bp+018h], dx                    ; 89 56 18
    15155     jmp short 09bd4h                          ; eb c2
     15160    jmp short 09bf3h                          ; eb c2
    1515615161    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    15157     jmp short 09bd4h                          ; eb bb
     15162    jmp short 09bf3h                          ; eb bb
    1515815163    or ah, 080h                               ; 80 cc 80
    15159     jmp short 09c0ah                          ; eb ec
    15160 pci16_select_reg_:                           ; 0xf9c1e LB 0x24
     15164    jmp short 09c29h                          ; eb ec
     15165pci16_select_reg_:                           ; 0xf9c3d LB 0x24
    1516115166    push bp                                   ; 55
    1516215167    mov bp, sp                                ; 89 e5
     
    1517515180    pop bp                                    ; 5d
    1517615181    retn                                      ; c3
    15177 pci16_find_device_:                          ; 0xf9c42 LB 0xf7
     15182pci16_find_device_:                          ; 0xf9c61 LB 0xf7
    1517815183    push bp                                   ; 55
    1517915184    mov bp, sp                                ; 89 e5
     
    1518915194    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1519015195    test bl, 007h                             ; f6 c3 07
    15191     jne short 09c8ah                          ; 75 2d
     15196    jne short 09ca9h                          ; 75 2d
    1519215197    mov dx, strict word 0000eh                ; ba 0e 00
    1519315198    mov ax, bx                                ; 89 d8
    15194     call 09c1eh                               ; e8 b9 ff
     15199    call 09c3dh                               ; e8 b9 ff
    1519515200    mov dx, 00cfeh                            ; ba fe 0c
    1519615201    in AL, DX                                 ; ec
     
    1519915204    mov byte [bp-008h], al                    ; 88 46 f8
    1520015205    cmp AL, strict byte 0ffh                  ; 3c ff
    15201     jne short 09c78h                          ; 75 06
     15206    jne short 09c97h                          ; 75 06
    1520215207    add bx, strict byte 00008h                ; 83 c3 08
    15203     jmp near 09d0ah                           ; e9 92 00
     15208    jmp near 09d29h                           ; e9 92 00
    1520415209    test byte [bp-008h], 080h                 ; f6 46 f8 80
    15205     je short 09c85h                           ; 74 07
     15210    je short 09ca4h                           ; 74 07
    1520615211    mov word [bp-00eh], strict word 00001h    ; c7 46 f2 01 00
    15207     jmp short 09c8ah                          ; eb 05
     15212    jmp short 09ca9h                          ; eb 05
    1520815213    mov word [bp-00eh], strict word 00008h    ; c7 46 f2 08 00
    1520915214    mov al, byte [bp-008h]                    ; 8a 46 f8
    1521015215    and AL, strict byte 007h                  ; 24 07
    1521115216    cmp AL, strict byte 001h                  ; 3c 01
    15212     jne short 09cb1h                          ; 75 1e
     15217    jne short 09cd0h                          ; 75 1e
    1521315218    mov al, bh                                ; 88 f8
    1521415219    xor ah, ah                                ; 30 e4
    1521515220    test ax, ax                               ; 85 c0
    15216     jne short 09cb1h                          ; 75 16
     15221    jne short 09cd0h                          ; 75 16
    1521715222    mov dx, strict word 0001ah                ; ba 1a 00
    1521815223    mov ax, bx                                ; 89 d8
    15219     call 09c1eh                               ; e8 7b ff
     15224    call 09c3dh                               ; e8 7b ff
    1522015225    mov dx, 00cfeh                            ; ba fe 0c
    1522115226    in AL, DX                                 ; ec
     
    1522315228    ; sub ah, ah                                ; 2a e4
    1522415229    cmp al, byte [bp-006h]                    ; 3a 46 fa
    15225     jbe short 09cb1h                          ; 76 03
     15230    jbe short 09cd0h                          ; 76 03
    1522615231    mov byte [bp-006h], al                    ; 88 46 fa
    1522715232    test di, di                               ; 85 ff
    15228     je short 09cbah                           ; 74 05
     15233    je short 09cd9h                           ; 74 05
    1522915234    mov dx, strict word 00008h                ; ba 08 00
    15230     jmp short 09cbch                          ; eb 02
     15235    jmp short 09cdbh                          ; eb 02
    1523115236    xor dx, dx                                ; 31 d2
    1523215237    mov ax, bx                                ; 89 d8
    15233     call 09c1eh                               ; e8 5d ff
     15238    call 09c3dh                               ; e8 5d ff
    1523415239    mov dx, 00cfch                            ; ba fc 0c
    1523515240    in eax, DX                                ; 66 ed
     
    1524215247    mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
    1524315248    test di, di                               ; 85 ff
    15244     je short 09cebh                           ; 74 0f
     15249    je short 09d0ah                           ; 74 0f
    1524515250    mov cx, strict word 00008h                ; b9 08 00
    1524615251    shr dx, 1                                 ; d1 ea
    1524715252    rcr ax, 1                                 ; d1 d8
    15248     loop 09cdfh                               ; e2 fa
     15253    loop 09cfeh                               ; e2 fa
    1524915254    mov word [bp-00ah], ax                    ; 89 46 f6
    1525015255    mov word [bp-010h], dx                    ; 89 56 f0
    1525115256    mov ax, word [bp-010h]                    ; 8b 46 f0
    1525215257    cmp ax, word [bp-014h]                    ; 3b 46 ec
    15253     jne short 09cfbh                          ; 75 08
     15258    jne short 09d1ah                          ; 75 08
    1525415259    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1525515260    cmp ax, word [bp-012h]                    ; 3b 46 ee
    15256     je short 09d01h                           ; 74 06
     15261    je short 09d20h                           ; 74 06
    1525715262    cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
    15258     je short 09d07h                           ; 74 06
     15263    je short 09d26h                           ; 74 06
    1525915264    dec si                                    ; 4e
    1526015265    cmp si, strict byte 0ffffh                ; 83 fe ff
    15261     je short 09d1ah                           ; 74 13
     15266    je short 09d39h                           ; 74 13
    1526215267    add bx, word [bp-00eh]                    ; 03 5e f2
    1526315268    mov al, bh                                ; 88 f8
     
    1526615271    xor dh, dh                                ; 30 f6
    1526715272    cmp ax, dx                                ; 39 d0
    15268     jnbe short 09d1ah                         ; 77 03
    15269     jmp near 09c58h                           ; e9 3e ff
     15273    jnbe short 09d39h                         ; 77 03
     15274    jmp near 09c77h                           ; e9 3e ff
    1527015275    cmp si, strict byte 0ffffh                ; 83 fe ff
    15271     jne short 09d23h                          ; 75 04
     15276    jne short 09d42h                          ; 75 04
    1527215277    mov ax, bx                                ; 89 d8
    15273     jmp short 09d26h                          ; eb 03
     15278    jmp short 09d45h                          ; eb 03
    1527415279    mov ax, strict word 0ffffh                ; b8 ff ff
    1527515280    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1527815283    pop bp                                    ; 5d
    1527915284    retn                                      ; c3
    15280     sbb bl, byte [bp-061cdh]                  ; 1a 9e 33 9e
    15281     inc bp                                    ; 45
    15282     sahf                                      ; 9e
    15283     pop cx                                    ; 59
    15284     sahf                                      ; 9e
    15285     db  06bh
    15286     sahf                                      ; 9e
    15287     jle short 09cd7h                          ; 7e 9e
    15288 _pci16_function:                             ; 0xf9d39 LB 0x1d5
     15285    cmp word [bp-061aeh], bx                  ; 39 9e 52 9e
     15286    db  064h, 09eh
     15287    ; fs sahf                                   ; 64 9e
     15288    js short 09cf2h                           ; 78 9e
     15289    mov bl, byte [bp-06163h]                  ; 8a 9e 9d 9e
     15290_pci16_function:                             ; 0xf9d58 LB 0x1d5
    1528915291    push bp                                   ; 55
    1529015292    mov bp, sp                                ; 89 e5
     
    1530015302    xor ah, ah                                ; 30 e4
    1530115303    cmp bx, strict byte 00003h                ; 83 fb 03
    15302     jc short 09d6bh                           ; 72 13
    15303     jbe short 09dbeh                          ; 76 64
     15304    jc short 09d8ah                           ; 72 13
     15305    jbe short 09dddh                          ; 76 64
    1530415306    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15305     je short 09dc6h                           ; 74 67
     15307    je short 09de5h                           ; 74 67
    1530615308    cmp bx, strict byte 00008h                ; 83 fb 08
    15307     jc short 09d75h                           ; 72 11
     15309    jc short 09d94h                           ; 72 11
    1530815310    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15309     jbe short 09dc9h                          ; 76 60
    15310     jmp short 09d75h                          ; eb 0a
     15311    jbe short 09de8h                          ; 76 60
     15312    jmp short 09d94h                          ; eb 0a
    1531115313    cmp bx, strict byte 00002h                ; 83 fb 02
    15312     je short 09d94h                           ; 74 24
     15314    je short 09db3h                           ; 74 24
    1531315315    cmp bx, strict byte 00001h                ; 83 fb 01
    15314     je short 09d78h                           ; 74 03
    15315     jmp near 09ed7h                           ; e9 5f 01
     15316    je short 09d97h                           ; 74 03
     15317    jmp near 09ef6h                           ; e9 5f 01
    1531615318    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1531715319    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1531915321    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1532015322    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15321     jmp near 09f07h                           ; e9 73 01
     15323    jmp near 09f26h                           ; e9 73 01
    1532215324    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15323     jne short 09da0h                          ; 75 06
     15325    jne short 09dbfh                          ; 75 06
    1532415326    or ah, 083h                               ; 80 cc 83
    15325     jmp near 09f00h                           ; e9 60 01
     15327    jmp near 09f1fh                           ; e9 60 01
    1532615328    mov bx, word [bp+008h]                    ; 8b 5e 08
    1532715329    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1532815330    mov ax, word [bp+018h]                    ; 8b 46 18
    1532915331    xor cx, cx                                ; 31 c9
    15330     call 09c42h                               ; e8 94 fe
     15332    call 09c61h                               ; e8 94 fe
    1533115333    cmp ax, strict word 0ffffh                ; 3d ff ff
    15332     jne short 09dc0h                          ; 75 0d
     15334    jne short 09ddfh                          ; 75 0d
    1533315335    mov ax, word [bp+020h]                    ; 8b 46 20
    1533415336    xor ah, ah                                ; 30 e4
    1533515337    or ah, 086h                               ; 80 cc 86
    15336     jmp near 09f00h                           ; e9 42 01
    15337     jmp short 09dcbh                          ; eb 0b
     15338    jmp near 09f1fh                           ; e9 42 01
     15339    jmp short 09deah                          ; eb 0b
    1533815340    mov word [bp+014h], ax                    ; 89 46 14
    15339     jmp near 09f07h                           ; e9 41 01
    15340     jmp near 09e92h                           ; e9 c9 00
    15341     jmp short 09df0h                          ; eb 25
     15341    jmp near 09f26h                           ; e9 41 01
     15342    jmp near 09eb1h                           ; e9 c9 00
     15343    jmp short 09e0fh                          ; eb 25
    1534215344    mov bx, word [bp+008h]                    ; 8b 5e 08
    1534315345    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1534415346    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1534515347    mov cx, strict word 00001h                ; b9 01 00
    15346     call 09c42h                               ; e8 68 fe
     15348    call 09c61h                               ; e8 68 fe
    1534715349    cmp ax, strict word 0ffffh                ; 3d ff ff
    15348     jne short 09deah                          ; 75 0b
     15350    jne short 09e09h                          ; 75 0b
    1534915351    mov ax, word [bp+020h]                    ; 8b 46 20
    1535015352    xor ah, ah                                ; 30 e4
    1535115353    or ah, 086h                               ; 80 cc 86
    15352     jmp near 09f00h                           ; e9 16 01
     15354    jmp near 09f1fh                           ; e9 16 01
    1535315355    mov word [bp+014h], ax                    ; 89 46 14
    15354     jmp near 09f07h                           ; e9 17 01
     15356    jmp near 09f26h                           ; e9 17 01
    1535515357    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15356     jc short 09dfdh                           ; 72 06
     15358    jc short 09e1ch                           ; 72 06
    1535715359    or ah, 087h                               ; 80 cc 87
    15358     jmp near 09f00h                           ; e9 03 01
     15360    jmp near 09f1fh                           ; e9 03 01
    1535915361    mov dx, word [bp+004h]                    ; 8b 56 04
    1536015362    mov ax, word [bp+014h]                    ; 8b 46 14
    15361     call 09c1eh                               ; e8 18 fe
     15363    call 09c3dh                               ; e8 18 fe
    1536215364    mov bx, word [bp+020h]                    ; 8b 5e 20
    1536315365    xor bh, bh                                ; 30 ff
    1536415366    sub bx, strict byte 00008h                ; 83 eb 08
    1536515367    cmp bx, strict byte 00005h                ; 83 fb 05
    15366     jnbe short 09e7bh                         ; 77 68
     15368    jnbe short 09e9ah                         ; 77 68
    1536715369    sal bx, 1                                 ; d1 e3
    15368     jmp word [cs:bx-062d3h]                   ; 2e ff a7 2d 9d
     15370    jmp word [cs:bx-062b4h]                   ; 2e ff a7 4c 9d
    1536915371    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1537015372    xor bl, bl                                ; 30 db
     
    1537715379    or bx, ax                                 ; 09 c3
    1537815380    mov word [bp+01ch], bx                    ; 89 5e 1c
    15379     jmp short 09e7bh                          ; eb 48
     15381    jmp short 09e9ah                          ; eb 48
    1538015382    mov dx, word [bp+004h]                    ; 8b 56 04
    1538115383    xor dh, dh                                ; 30 f6
     
    1538415386    in ax, DX                                 ; ed
    1538515387    mov word [bp+01ch], ax                    ; 89 46 1c
    15386     jmp short 09e7bh                          ; eb 36
     15388    jmp short 09e9ah                          ; eb 36
    1538715389    mov dx, 00cfch                            ; ba fc 0c
    1538815390    in eax, DX                                ; 66 ed
     
    1539315395    mov word [bp+01ch], ax                    ; 89 46 1c
    1539415396    mov word [bp+01eh], dx                    ; 89 56 1e
    15395     jmp short 09e7bh                          ; eb 22
     15397    jmp short 09e9ah                          ; eb 22
    1539615398    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1539715399    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1540015402    add dx, 00cfch                            ; 81 c2 fc 0c
    1540115403    out DX, AL                                ; ee
    15402     jmp short 09e7bh                          ; eb 10
     15404    jmp short 09e9ah                          ; eb 10
    1540315405    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1540415406    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1540715409    add dx, 00cfch                            ; 81 c2 fc 0c
    1540815410    out DX, ax                                ; ef
    15409     jmp near 09f07h                           ; e9 89 00
     15411    jmp near 09f26h                           ; e9 89 00
    1541015412    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1541115413    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1541615418    ; mov ax, cx                                ; 8b c1
    1541715419    out DX, eax                               ; 66 ef
    15418     jmp short 09f07h                          ; eb 75
     15420    jmp short 09f26h                          ; eb 75
    1541915421    mov bx, word [bp+004h]                    ; 8b 5e 04
    1542015422    mov es, [bp+026h]                         ; 8e 46 26
    1542115423    mov word [bp-008h], bx                    ; 89 5e f8
    1542215424    mov [bp-006h], es                         ; 8c 46 fa
    15423     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     15425    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1542415426    cmp cx, word [es:bx]                      ; 26 3b 0f
    15425     jbe short 09eb8h                          ; 76 11
     15427    jbe short 09ed7h                          ; 76 11
    1542615428    mov ax, word [bp+020h]                    ; 8b 46 20
    1542715429    xor ah, ah                                ; 30 e4
     
    1542915431    mov word [bp+020h], ax                    ; 89 46 20
    1543015432    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15431     jmp short 09ecch                          ; eb 14
     15433    jmp short 09eebh                          ; eb 14
    1543215434    les di, [es:bx+002h]                      ; 26 c4 7f 02
    15433     mov si, 0f2c0h                            ; be c0 f2
     15435    mov si, 0f1a0h                            ; be a0 f1
    1543415436    mov dx, ds                                ; 8c da
    1543515437    push DS                                   ; 1e
     
    1543815440    pop DS                                    ; 1f
    1543915441    mov word [bp+014h], 00a00h                ; c7 46 14 00 0a
    15440     mov ax, word [0f4a0h]                     ; a1 a0 f4
     15442    mov ax, word [0f380h]                     ; a1 80 f3
    1544115443    les bx, [bp-008h]                         ; c4 5e f8
    1544215444    mov word [es:bx], ax                      ; 26 89 07
    15443     jmp short 09f07h                          ; eb 30
     15445    jmp short 09f26h                          ; eb 30
    1544415446    mov bx, 00da0h                            ; bb a0 0d
    1544515447    mov cx, ds                                ; 8c d9
    1544615448    mov ax, strict word 00004h                ; b8 04 00
    15447     call 01933h                               ; e8 51 7a
     15449    call 01933h                               ; e8 32 7a
    1544815450    mov ax, word [bp+014h]                    ; 8b 46 14
    1544915451    push ax                                   ; 50
     
    1545415456    mov ax, strict word 00004h                ; b8 04 00
    1545515457    push ax                                   ; 50
    15456     call 01976h                               ; e8 81 7a
     15458    call 01976h                               ; e8 62 7a
    1545715459    add sp, strict byte 00008h                ; 83 c4 08
    1545815460    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1546615468    pop bp                                    ; 5d
    1546715469    retn                                      ; c3
    15468 pci_find_classcode_:                         ; 0xf9f0e LB 0x8
     15470pci_find_classcode_:                         ; 0xf9f2d LB 0x8
    1546915471    push bp                                   ; 55
    1547015472    mov bp, sp                                ; 89 e5
     
    1547215474    pop bp                                    ; 5d
    1547315475    retn                                      ; c3
    15474 pci_read_config_byte_:                       ; 0xf9f16 LB 0x27
     15476pci_read_config_byte_:                       ; 0xf9f35 LB 0x27
    1547515477    push bp                                   ; 55
    1547615478    mov bp, sp                                ; 89 e5
     
    1549515497    pop bp                                    ; 5d
    1549615498    retn                                      ; c3
    15497 pci_read_config_word_:                       ; 0xf9f3d LB 0x25
     15499pci_read_config_word_:                       ; 0xf9f5c LB 0x25
    1549815500    push bp                                   ; 55
    1549915501    mov bp, sp                                ; 89 e5
     
    1551715519    pop bp                                    ; 5d
    1551815520    retn                                      ; c3
    15519 pci_read_config_dword_:                      ; 0xf9f62 LB 0x3f
     15521pci_read_config_dword_:                      ; 0xf9f81 LB 0x3f
    1552015522    push bp                                   ; 55
    1552115523    mov bp, sp                                ; 89 e5
     
    1553215534    int 01ah                                  ; cd 1a
    1553315535    test cx, cx                               ; 85 c9
    15534     jne short 09f92h                          ; 75 14
     15536    jne short 09fb1h                          ; 75 14
    1553515537    mov al, byte [bp-006h]                    ; 8a 46 fa
    1553615538    xor ah, ah                                ; 30 e4
     
    1554215544    int 01ah                                  ; cd 1a
    1554315545    test cx, cx                               ; 85 c9
    15544     je short 09f97h                           ; 74 05
     15546    je short 09fb6h                           ; 74 05
    1554515547    mov ax, strict word 00001h                ; b8 01 00
    15546     jmp short 09f99h                          ; eb 02
     15548    jmp short 09fb8h                          ; eb 02
    1554715549    xor ax, ax                                ; 31 c0
    1554815550    cwd                                       ; 99
     
    1555215554    pop bp                                    ; 5d
    1555315555    retn                                      ; c3
    15554 vds_is_present_:                             ; 0xf9fa1 LB 0x1d
     15556pci_write_config_word_:                      ; 0xf9fc0 LB 0x1e
     15557    push bp                                   ; 55
     15558    mov bp, sp                                ; 89 e5
     15559    push di                                   ; 57
     15560    push ax                                   ; 50
     15561    mov byte [bp-004h], al                    ; 88 46 fc
     15562    mov al, bl                                ; 88 d8
     15563    xor ah, ah                                ; 30 e4
     15564    mov di, ax                                ; 89 c7
     15565    mov bh, byte [bp-004h]                    ; 8a 7e fc
     15566    mov bl, dl                                ; 88 d3
     15567    mov ax, 0b10ch                            ; b8 0c b1
     15568    int 01ah                                  ; cd 1a
     15569    lea sp, [bp-002h]                         ; 8d 66 fe
     15570    pop di                                    ; 5f
     15571    pop bp                                    ; 5d
     15572    retn                                      ; c3
     15573vds_is_present_:                             ; 0xf9fde LB 0x1d
    1555515574    push bx                                   ; 53
    1555615575    push bp                                   ; 55
     
    1556015579    mov es, ax                                ; 8e c0
    1556115580    test byte [es:bx], 020h                   ; 26 f6 07 20
    15562     je short 09fb9h                           ; 74 06
     15581    je short 09ff6h                           ; 74 06
    1556315582    mov ax, strict word 00001h                ; b8 01 00
    1556415583    pop bp                                    ; 5d
     
    1556915588    pop bx                                    ; 5b
    1557015589    retn                                      ; c3
    15571 vds_real_to_lin_:                            ; 0xf9fbe LB 0x1e
     15590vds_real_to_lin_:                            ; 0xf9ffb LB 0x1e
    1557215591    push bx                                   ; 53
    1557315592    push cx                                   ; 51
     
    1558015599    sal ax, 1                                 ; d1 e0
    1558115600    rcl dx, 1                                 ; d1 d2
    15582     loop 09fcch                               ; e2 fa
     15601    loop 0a009h                               ; e2 fa
    1558315602    xor cx, cx                                ; 31 c9
    1558415603    add ax, bx                                ; 01 d8
     
    1558815607    pop bx                                    ; 5b
    1558915608    retn                                      ; c3
    15590 vds_build_sg_list_:                          ; 0xf9fdc LB 0x77
     15609vds_build_sg_list_:                          ; 0xfa019 LB 0x77
    1559115610    push bp                                   ; 55
    1559215611    mov bp, sp                                ; 89 e5
     
    1560215621    mov bx, word [bp+006h]                    ; 8b 5e 06
    1560315622    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15604     call 09fbeh                               ; e8 c3 ff
     15623    call 09ffbh                               ; e8 c3 ff
    1560515624    mov es, si                                ; 8e c6
    1560615625    mov word [es:di+004h], ax                 ; 26 89 45 04
    1560715626    mov word [es:di+006h], dx                 ; 26 89 55 06
    1560815627    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15609     call 09fa1h                               ; e8 93 ff
     15628    call 09fdeh                               ; e8 93 ff
    1561015629    test ax, ax                               ; 85 c0
    15611     je short 0a023h                           ; 74 11
     15630    je short 0a060h                           ; 74 11
    1561215631    mov es, si                                ; 8e c6
    1561315632    mov ax, 08105h                            ; b8 05 81
    1561415633    mov dx, strict word 00000h                ; ba 00 00
    1561515634    int 04bh                                  ; cd 4b
    15616     jc short 0a020h                           ; 72 02
     15635    jc short 0a05dh                           ; 72 02
    1561715636    db  032h, 0c0h
    1561815637    ; xor al, al                                ; 32 c0
    1561915638    cbw                                       ; 98
    15620     jmp short 0a04ah                          ; eb 27
     15639    jmp short 0a087h                          ; eb 27
    1562115640    mov es, si                                ; 8e c6
    1562215641    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1563515654    pop bp                                    ; 5d
    1563615655    retn 00004h                               ; c2 04 00
    15637 vds_free_sg_list_:                           ; 0xfa053 LB 0x3d
     15656vds_free_sg_list_:                           ; 0xfa090 LB 0x30
    1563815657    push bp                                   ; 55
    1563915658    mov bp, sp                                ; 89 e5
     
    1564115660    push di                                   ; 57
    1564215661    mov bx, ax                                ; 89 c3
    15643     call 09fa1h                               ; e8 44 ff
     15662    call 09fdeh                               ; e8 44 ff
    1564415663    test ax, ax                               ; 85 c0
    15645     je short 0a072h                           ; 74 11
     15664    je short 0a0afh                           ; 74 11
    1564615665    mov di, bx                                ; 89 df
    1564715666    mov es, dx                                ; 8e c2
     
    1564915668    mov dx, strict word 00000h                ; ba 00 00
    1565015669    int 04bh                                  ; cd 4b
    15651     jc short 0a071h                           ; 72 02
     15670    jc short 0a0aeh                           ; 72 02
    1565215671    db  032h, 0c0h
    1565315672    ; xor al, al                                ; 32 c0
     
    1566015679    pop bp                                    ; 5d
    1566115680    retn                                      ; c3
    15662     times 0xf db 0
    15663 __U4M:                                       ; 0xfa090 LB 0x20
     15681    times 0x2 db 0
     15682__U4M:                                       ; 0xfa0c0 LB 0x20
    1566415683    pushfw                                    ; 9c
    1566515684    push si                                   ; 56
     
    1568815707    retn                                      ; c3
    1568915708    times 0x4 db 0
    15690 __U4D:                                       ; 0xfa0b0 LB 0x30
     15709__U4D:                                       ; 0xfa0e0 LB 0x30
    1569115710    pushfw                                    ; 9c
    1569215711    push DS                                   ; 1e
     
    1570315722    push dx                                   ; 52
    1570415723    push ax                                   ; 50
    15705     call 0a195h                               ; e8 d0 00
     15724    call 0a1c5h                               ; e8 d0 00
    1570615725    mov cx, word [bp-002h]                    ; 8b 4e fe
    1570715726    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1571415733    retn                                      ; c3
    1571515734    times 0xe db 0
    15716 __U8RS:                                      ; 0xfa0e0 LB 0x10
     15735__U8RS:                                      ; 0xfa110 LB 0x10
    1571715736    test si, si                               ; 85 f6
    15718     je short 0a0efh                           ; 74 0b
     15737    je short 0a11fh                           ; 74 0b
    1571915738    shr ax, 1                                 ; d1 e8
    1572015739    rcr bx, 1                                 ; d1 db
     
    1572215741    rcr dx, 1                                 ; d1 da
    1572315742    dec si                                    ; 4e
    15724     jne short 0a0e4h                          ; 75 f5
     15743    jne short 0a114h                          ; 75 f5
    1572515744    retn                                      ; c3
    15726 __U8LS:                                      ; 0xfa0f0 LB 0x10
     15745__U8LS:                                      ; 0xfa120 LB 0x10
    1572715746    test si, si                               ; 85 f6
    15728     je short 0a0ffh                           ; 74 0b
     15747    je short 0a12fh                           ; 74 0b
    1572915748    sal dx, 1                                 ; d1 e2
    1573015749    rcl cx, 1                                 ; d1 d1
     
    1573215751    rcl ax, 1                                 ; d1 d0
    1573315752    dec si                                    ; 4e
    15734     jne short 0a0f4h                          ; 75 f5
     15753    jne short 0a124h                          ; 75 f5
    1573515754    retn                                      ; c3
    15736 _fmemset_:                                   ; 0xfa100 LB 0x10
     15755_fmemset_:                                   ; 0xfa130 LB 0x10
    1573715756    push di                                   ; 57
    1573815757    mov es, dx                                ; 8e c2
     
    1574515764    retn                                      ; c3
    1574615765    times 0x3 db 0
    15747 _fmemcpy_:                                   ; 0xfa110 LB 0x3a
     15766_fmemcpy_:                                   ; 0xfa140 LB 0x3a
    1574815767    push bp                                   ; 55
    1574915768    db  08bh, 0ech
     
    1577015789    add byte [bx+si], al                      ; 00 00
    1577115790    add byte [bx+si], al                      ; 00 00
    15772     pushaw                                    ; 60
    15773     mov ax, word [0a162h]                     ; a1 62 a1
    15774     mov eax, dword [0a166h]                   ; 66 a1 66 a1
    15775     mov eax, dword [0a168h]                   ; 66 a1 68 a1
    15776     push 06aa1h                               ; 68 a1 6a
    15777     mov ax, word [0a16eh]                     ; a1 6e a1
    15778     outsb                                     ; 6e
    15779     mov ax, word [0a170h]                     ; a1 70 a1
    15780     jne short 0a0e9h                          ; 75 a1
    15781     jnbe short 0a0ebh                         ; 77 a1
    15782 apm_worker:                                  ; 0xfa14a LB 0x3a
     15791    nop                                       ; 90
     15792    mov ax, word [0a192h]                     ; a1 92 a1
     15793    xchg si, ax                               ; 96
     15794    mov ax, word [0a196h]                     ; a1 96 a1
     15795    xchg si, ax                               ; 96
     15796    mov ax, word [0a198h]                     ; a1 98 a1
     15797    cbw                                       ; 98
     15798    mov ax, word [0a19ah]                     ; a1 9a a1
     15799    sahf                                      ; 9e
     15800    mov ax, word [0a19eh]                     ; a1 9e a1
     15801    mov AL, byte [0a5a1h]                     ; a0 a1 a5
     15802    mov ax, word [0a1a7h]                     ; a1 a7 a1
     15803apm_worker:                                  ; 0xfa17a LB 0x3a
    1578315804    sti                                       ; fb
    1578415805    push ax                                   ; 50
     
    1579215813    pop ax                                    ; 58
    1579315814    mov AH, strict byte 053h                  ; b4 53
    15794     jnc short 0a180h                          ; 73 25
    15795     jmp word [cs:bp-05ed0h]                   ; 2e ff a6 30 a1
    15796     jmp short 0a17eh                          ; eb 1c
     15815    jnc short 0a1b0h                          ; 73 25
     15816    jmp word [cs:bp-05ea0h]                   ; 2e ff a6 60 a1
     15817    jmp short 0a1aeh                          ; eb 1c
    1579715818    sti                                       ; fb
    1579815819    hlt                                       ; f4
    15799     jmp short 0a17eh                          ; eb 18
    15800     jmp short 0a17eh                          ; eb 16
    15801     jmp short 0a180h                          ; eb 16
     15820    jmp short 0a1aeh                          ; eb 18
     15821    jmp short 0a1aeh                          ; eb 16
     15822    jmp short 0a1b0h                          ; eb 16
    1580215823    mov AH, strict byte 080h                  ; b4 80
    15803     jmp short 0a182h                          ; eb 14
    15804     jmp short 0a180h                          ; eb 10
     15824    jmp short 0a1b2h                          ; eb 14
     15825    jmp short 0a1b0h                          ; eb 10
    1580515826    mov ax, 00102h                            ; b8 02 01
    15806     jmp short 0a17eh                          ; eb 09
    15807     jmp short 0a17eh                          ; eb 07
     15827    jmp short 0a1aeh                          ; eb 09
     15828    jmp short 0a1aeh                          ; eb 07
    1580815829    mov BL, strict byte 000h                  ; b3 00
    1580915830    mov cx, strict word 00000h                ; b9 00 00
    15810     jmp short 0a17eh                          ; eb 00
     15831    jmp short 0a1aeh                          ; eb 00
    1581115832    clc                                       ; f8
    1581215833    retn                                      ; c3
     
    1581415835    stc                                       ; f9
    1581515836    retn                                      ; c3
    15816 apm_pm16_entry:                              ; 0xfa184 LB 0x11
     15837apm_pm16_entry:                              ; 0xfa1b4 LB 0x11
    1581715838    mov AH, strict byte 002h                  ; b4 02
    1581815839    push DS                                   ; 1e
     
    1582215843    add bp, strict byte 00008h                ; 83 c5 08
    1582315844    mov ds, bp                                ; 8e dd
    15824     call 0a14ah                               ; e8 b8 ff
     15845    call 0a17ah                               ; e8 b8 ff
    1582515846    pop bp                                    ; 5d
    1582615847    pop DS                                    ; 1f
    1582715848    retf                                      ; cb
    15828 _DoUInt32Div:                                ; 0xfa195 LB 0x26b
     15849_DoUInt32Div:                                ; 0xfa1c5 LB 0x26b
    1582915850    push bp                                   ; 55
    1583015851    mov bp, sp                                ; 89 e5
     
    1584415865    mov [bp-006h], ds                         ; 8c 5e fa
    1584515866    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15846     jne short 0a1e5h                          ; 75 22
     15867    jne short 0a215h                          ; 75 22
    1584715868    mov ax, word [bx]                         ; 8b 07
    1584815869    test ax, ax                               ; 85 c0
    15849     je short 0a1e2h                           ; 74 19
     15870    je short 0a212h                           ; 74 19
    1585015871    cmp ax, strict word 00001h                ; 3d 01 00
    15851     jne short 0a1e5h                          ; 75 17
     15872    jne short 0a215h                          ; 75 17
    1585215873    xor ax, ax                                ; 31 c0
    1585315874    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1585715878    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1585815879    mov word [bp+006h], ax                    ; 89 46 06
    15859     jmp near 0a3edh                           ; e9 08 02
     15880    jmp near 0a41dh                           ; e9 08 02
    1586015881    lds bx, [bp-00ch]                         ; c5 5e f4
    1586115882    mov ax, word [bx+002h]                    ; 8b 47 02
    1586215883    mov ds, [bp-006h]                         ; 8e 5e fa
    1586315884    cmp ax, word [si+002h]                    ; 3b 44 02
    15864     je short 0a20bh                           ; 74 18
     15885    je short 0a23bh                           ; 74 18
    1586515886    mov ds, [bp-00ah]                         ; 8e 5e f6
    1586615887    mov ax, word [bx+002h]                    ; 8b 47 02
    1586715888    mov ds, [bp-006h]                         ; 8e 5e fa
    1586815889    cmp ax, word [si+002h]                    ; 3b 44 02
    15869     jbe short 0a206h                          ; 76 05
     15890    jbe short 0a236h                          ; 76 05
    1587015891    mov ax, strict word 00001h                ; b8 01 00
    15871     jmp short 0a22ch                          ; eb 26
     15892    jmp short 0a25ch                          ; eb 26
    1587215893    mov ax, strict word 0ffffh                ; b8 ff ff
    15873     jmp short 0a22ch                          ; eb 21
     15894    jmp short 0a25ch                          ; eb 21
    1587415895    mov ds, [bp-00ah]                         ; 8e 5e f6
    1587515896    mov ax, word [bx]                         ; 8b 07
    1587615897    mov ds, [bp-006h]                         ; 8e 5e fa
    1587715898    cmp ax, word [si]                         ; 3b 04
    15878     je short 0a22ah                           ; 74 13
     15899    je short 0a25ah                           ; 74 13
    1587915900    mov ds, [bp-00ah]                         ; 8e 5e f6
    1588015901    mov ax, word [bx]                         ; 8b 07
    1588115902    mov ds, [bp-006h]                         ; 8e 5e fa
    1588215903    cmp ax, word [si]                         ; 3b 04
    15883     jbe short 0a225h                          ; 76 02
    15884     jmp short 0a201h                          ; eb dc
     15904    jbe short 0a255h                          ; 76 02
     15905    jmp short 0a231h                          ; eb dc
    1588515906    mov ax, strict word 0ffffh                ; b8 ff ff
    15886     jmp short 0a22ch                          ; eb 02
     15907    jmp short 0a25ch                          ; eb 02
    1588715908    xor ax, ax                                ; 31 c0
    1588815909    test ax, ax                               ; 85 c0
    15889     jnl short 0a24eh                          ; 7d 1e
     15910    jnl short 0a27eh                          ; 7d 1e
    1589015911    lds bx, [bp-00ch]                         ; c5 5e f4
    1589115912    mov ax, word [bx]                         ; 8b 07
     
    1589715918    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1589815919    mov word [bx], strict word 00000h         ; c7 07 00 00
    15899     jmp short 0a1e2h                          ; eb 94
    15900     jne short 0a265h                          ; 75 15
     15920    jmp short 0a212h                          ; eb 94
     15921    jne short 0a295h                          ; 75 15
    1590115922    mov ds, [bp-008h]                         ; 8e 5e f8
    1590215923    mov word [di+002h], ax                    ; 89 45 02
     
    1590515926    mov word [bx], strict word 00001h         ; c7 07 01 00
    1590615927    mov word [bx+002h], ax                    ; 89 47 02
    15907     jmp near 0a3edh                           ; e9 88 01
     15928    jmp near 0a41dh                           ; e9 88 01
    1590815929    lds bx, [bp-00ch]                         ; c5 5e f4
    1590915930    mov ax, word [bx+002h]                    ; 8b 47 02
    1591015931    test ax, ax                               ; 85 c0
    15911     je short 0a280h                           ; 74 11
     15932    je short 0a2b0h                           ; 74 11
    1591215933    push ax                                   ; 50
    1591315934    mov ax, 0f000h                            ; b8 00 f0
    1591415935    mov ds, ax                                ; 8e d8
    15915     call 0a400h                               ; e8 88 01
     15936    call 0a430h                               ; e8 88 01
    1591615937    add sp, strict byte 00002h                ; 83 c4 02
    1591715938    add ax, strict word 00010h                ; 05 10 00
    15918     jmp short 0a28dh                          ; eb 0d
     15939    jmp short 0a2bdh                          ; eb 0d
    1591915940    push word [bx]                            ; ff 37
    1592015941    mov ax, 0f000h                            ; b8 00 f0
    1592115942    mov ds, ax                                ; 8e d8
    15922     call 0a400h                               ; e8 76 01
     15943    call 0a430h                               ; e8 76 01
    1592315944    add sp, strict byte 00002h                ; 83 c4 02
    1592415945    mov word [bp-014h], ax                    ; 89 46 ec
     
    1592615947    mov ax, word [si+002h]                    ; 8b 44 02
    1592715948    test ax, ax                               ; 85 c0
    15928     je short 0a2abh                           ; 74 11
     15949    je short 0a2dbh                           ; 74 11
    1592915950    push ax                                   ; 50
    1593015951    mov ax, 0f000h                            ; b8 00 f0
    1593115952    mov ds, ax                                ; 8e d8
    15932     call 0a400h                               ; e8 5d 01
     15953    call 0a430h                               ; e8 5d 01
    1593315954    add sp, strict byte 00002h                ; 83 c4 02
    1593415955    add ax, strict word 00010h                ; 05 10 00
    15935     jmp short 0a2b8h                          ; eb 0d
     15956    jmp short 0a2e8h                          ; eb 0d
    1593615957    push word [si]                            ; ff 34
    1593715958    mov ax, 0f000h                            ; b8 00 f0
    1593815959    mov ds, ax                                ; 8e d8
    15939     call 0a400h                               ; e8 4b 01
     15960    call 0a430h                               ; e8 4b 01
    1594015961    add sp, strict byte 00002h                ; 83 c4 02
    1594115962    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1594815969    mov word [bp-016h], ax                    ; 89 46 ea
    1594915970    test dx, dx                               ; 85 d2
    15950     je short 0a328h                           ; 74 56
     15971    je short 0a358h                           ; 74 56
    1595115972    mov cx, dx                                ; 89 d1
    1595215973    xor ch, dh                                ; 30 f5
     
    1595415975    mov ax, word [si]                         ; 8b 04
    1595515976    mov dx, word [si+002h]                    ; 8b 54 02
    15956     jcxz 0a2e6h                               ; e3 06
     15977    jcxz 0a316h                               ; e3 06
    1595715978    sal ax, 1                                 ; d1 e0
    1595815979    rcl dx, 1                                 ; d1 d2
    15959     loop 0a2e0h                               ; e2 fa
     15980    loop 0a310h                               ; e2 fa
    1596015981    mov word [bp-018h], ax                    ; 89 46 e8
    1596115982    mov word [bp-016h], dx                    ; 89 56 ea
     
    1596315984    lds bx, [bp-00ch]                         ; c5 5e f4
    1596415985    cmp ax, word [bx+002h]                    ; 3b 47 02
    15965     jnbe short 0a306h                         ; 77 0f
     15986    jnbe short 0a336h                         ; 77 0f
    1596615987    mov ax, word [bp-016h]                    ; 8b 46 ea
    1596715988    cmp ax, word [bx+002h]                    ; 3b 47 02
    15968     jne short 0a30ah                          ; 75 0b
     15989    jne short 0a33ah                          ; 75 0b
    1596915990    mov ax, word [bp-018h]                    ; 8b 46 e8
    1597015991    cmp ax, word [bx]                         ; 3b 07
    15971     jbe short 0a30ah                          ; 76 04
     15992    jbe short 0a33ah                          ; 76 04
    1597215993    mov AL, strict byte 001h                  ; b0 01
    15973     jmp short 0a30ch                          ; eb 02
     15994    jmp short 0a33ch                          ; eb 02
    1597415995    xor al, al                                ; 30 c0
    1597515996    test al, al                               ; 84 c0
    15976     je short 0a333h                           ; 74 23
     15997    je short 0a363h                           ; 74 23
    1597715998    shr word [bp-016h], 1                     ; d1 6e ea
    1597815999    rcr word [bp-018h], 1                     ; d1 5e e8
    1597916000    dec word [bp-012h]                        ; ff 4e ee
    15980     jmp short 0a333h                          ; eb 18
     16001    jmp short 0a363h                          ; eb 18
    1598116002    mov cx, strict word 0001fh                ; b9 1f 00
    1598216003    sal word [bp-018h], 1                     ; d1 66 e8
    1598316004    rcl word [bp-016h], 1                     ; d1 56 ea
    15984     loop 0a31eh                               ; e2 f8
    15985     jmp short 0a316h                          ; eb ee
     16005    loop 0a34eh                               ; e2 f8
     16006    jmp short 0a346h                          ; eb ee
    1598616007    mov ax, word [si]                         ; 8b 04
    1598716008    mov word [bp-018h], ax                    ; 89 46 e8
     
    1600016021    mov ds, [bp-006h]                         ; 8e 5e fa
    1600116022    cmp ax, word [si+002h]                    ; 3b 44 02
    16002     jnbe short 0a35fh                         ; 77 06
    16003     jne short 0a363h                          ; 75 08
     16023    jnbe short 0a38fh                         ; 77 06
     16024    jne short 0a393h                          ; 75 08
    1600416025    cmp dx, word [si]                         ; 3b 14
    16005     jc short 0a363h                           ; 72 04
     16026    jc short 0a393h                           ; 72 04
    1600616027    mov AL, strict byte 001h                  ; b0 01
    16007     jmp short 0a365h                          ; eb 02
     16028    jmp short 0a395h                          ; eb 02
    1600816029    xor al, al                                ; 30 c0
    1600916030    test al, al                               ; 84 c0
    16010     je short 0a3cah                           ; 74 61
     16031    je short 0a3fah                           ; 74 61
    1601116032    mov ds, [bp-008h]                         ; 8e 5e f8
    1601216033    mov ax, word [di+002h]                    ; 8b 45 02
    1601316034    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16014     jnbe short 0a380h                         ; 77 0c
     16035    jnbe short 0a3b0h                         ; 77 0c
    1601516036    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16016     jne short 0a384h                          ; 75 0b
     16037    jne short 0a3b4h                          ; 75 0b
    1601716038    mov ax, word [di]                         ; 8b 05
    1601816039    cmp ax, word [bp-018h]                    ; 3b 46 e8
    16019     jc short 0a384h                           ; 72 04
     16040    jc short 0a3b4h                           ; 72 04
    1602016041    mov AL, strict byte 001h                  ; b0 01
    16021     jmp short 0a386h                          ; eb 02
     16042    jmp short 0a3b6h                          ; eb 02
    1602216043    xor al, al                                ; 30 c0
    1602316044    test al, al                               ; 84 c0
    16024     je short 0a3b0h                           ; 74 26
     16045    je short 0a3e0h                           ; 74 26
    1602516046    mov ax, word [bp-018h]                    ; 8b 46 e8
    1602616047    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1603116052    xor dx, dx                                ; 31 d2
    1603216053    mov cx, word [bp-012h]                    ; 8b 4e ee
    16033     jcxz 0a3a8h                               ; e3 06
     16054    jcxz 0a3d8h                               ; e3 06
    1603416055    sal ax, 1                                 ; d1 e0
    1603516056    rcl dx, 1                                 ; d1 d2
    16036     loop 0a3a2h                               ; e2 fa
     16057    loop 0a3d2h                               ; e2 fa
    1603716058    lds bx, [bp-010h]                         ; c5 5e f0
    1603816059    or word [bx], ax                          ; 09 07
     
    1604316064    mov ds, [bp-006h]                         ; 8e 5e fa
    1604416065    cmp ax, word [si+002h]                    ; 3b 44 02
    16045     jc short 0a3c6h                           ; 72 06
    16046     jne short 0a3cch                          ; 75 0a
     16066    jc short 0a3f6h                           ; 72 06
     16067    jne short 0a3fch                          ; 75 0a
    1604716068    cmp dx, word [si]                         ; 3b 14
    16048     jnc short 0a3cch                          ; 73 06
     16069    jnc short 0a3fch                          ; 73 06
    1604916070    mov AL, strict byte 001h                  ; b0 01
    16050     jmp short 0a3ceh                          ; eb 04
    16051     jmp short 0a3edh                          ; eb 21
     16071    jmp short 0a3feh                          ; eb 04
     16072    jmp short 0a41dh                          ; eb 21
    1605216073    xor al, al                                ; 30 c0
    1605316074    test al, al                               ; 84 c0
    16054     je short 0a3e1h                           ; 74 0f
    16055     jmp short 0a3edh                          ; eb 19
     16075    je short 0a411h                           ; 74 0f
     16076    jmp short 0a41dh                          ; eb 19
    1605616077    mov cx, strict word 0001fh                ; b9 1f 00
    1605716078    sal word [bp-018h], 1                     ; d1 66 e8
    1605816079    rcl word [bp-016h], 1                     ; d1 56 ea
    16059     loop 0a3d7h                               ; e2 f8
    16060     jmp short 0a3e7h                          ; eb 06
     16080    loop 0a407h                               ; e2 f8
     16081    jmp short 0a417h                          ; eb 06
    1606116082    shr word [bp-016h], 1                     ; d1 6e ea
    1606216083    rcr word [bp-018h], 1                     ; d1 5e e8
    1606316084    dec word [bp-012h]                        ; ff 4e ee
    16064     jmp near 0a369h                           ; e9 7c ff
     16085    jmp near 0a399h                           ; e9 7c ff
    1606516086    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1606616087    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1607116092    retn                                      ; c3
    1607216093    times 0x6 db 0
    16073 _ASMBitLastSetU16:                           ; 0xfa400 LB 0x18
     16094_ASMBitLastSetU16:                           ; 0xfa430 LB 0x18
    1607416095    push bp                                   ; 55
    1607516096    db  08bh, 0ech
     
    1607716098    mov cx, word [bp+004h]                    ; 8b 4e 04
    1607816099    test cx, cx                               ; 85 c9
    16079     je short 0a414h                           ; 74 0a
     16100    je short 0a444h                           ; 74 0a
    1608016101    mov ax, strict word 00010h                ; b8 10 00
    1608116102    sal cx, 1                                 ; d1 e1
    16082     jc short 0a416h                           ; 72 05
     16103    jc short 0a446h                           ; 72 05
    1608316104    dec ax                                    ; 48
    16084     jmp short 0a40dh                          ; eb f9
     16105    jmp short 0a43dh                          ; eb f9
    1608516106    db  033h, 0c0h
    1608616107    ; xor ax, ax                                ; 33 c0
     
    1608816109    retn                                      ; c3
    1608916110
    16090   ; Padding 0x35e8 bytes at 0xfa418
    16091   times 13800 db 0
     16111  ; Padding 0x35b8 bytes at 0xfa448
     16112  times 13752 db 0
    1609216113
    1609316114section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1613616157    add bp, strict byte 00008h                ; 83 c5 08
    1613716158    push ebp                                  ; 66 55
    16138     mov bp, 0a186h                            ; bd 86 a1
     16159    mov bp, 0a1b6h                            ; bd b6 a1
    1613916160    add byte [bx+si], al                      ; 00 00
    1614016161    push ebp                                  ; 66 55
     
    1646816489    mov bx, ax                                ; 89 c3
    1646916490    mov edx, dword [di]                       ; 66 8b 15
    16470     mov AL, byte [000f4h]                     ; a0 f4 00
     16491    xor bl, 000h                              ; 80 f3 00
    1647116492    add byte [bp+026h], ah                    ; 00 66 26
    1647216493    cmp dx, word [bx+si]                      ; 3b 10
     
    1648516506    mov di, word [es:bx+si+002h]              ; 26 8b 78 02
    1648616507    mov dx, ds                                ; 8c da
    16487     mov si, 0f2c0h                            ; be c0 f2
     16508    mov si, 0f1a0h                            ; be a0 f1
    1648816509    add byte [bx+si], al                      ; 00 00
    1648916510    mov es, [di-014h]                         ; 8e 45 ec
     
    1649416515    pop DS                                    ; 1f
    1649516516    mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1
    16496     mov AL, byte [000f4h]                     ; a0 f4 00
     16517    xor bl, 000h                              ; 80 f3 00
    1649716518    add byte [bp-00fbbh], cl                  ; 00 8e 45 f0
    1649816519    db  066h, 026h, 089h, 003h
     
    1767517696    pop eax                                   ; 66 58
    1767617697    retn                                      ; c3
    17677 pcibios_init_iomem_bases:                    ; 0xff141 LB 0x16
     17698pcibios_init_iomem_bases:                    ; 0xff141 LB 0x12
    1767817699    push bp                                   ; 55
    1767917700    db  08bh, 0ech
    1768017701    ; mov bp, sp                                ; 8b ec
    17681     mov eax, strict dword 0e0000000h          ; 66 b8 00 00 00 e0
    17682     push eax                                  ; 66 50
    17683     mov ax, 0d000h                            ; b8 00 d0
    17684     push ax                                   ; 50
    17685     mov ax, strict word 00010h                ; b8 10 00
    17686     push ax                                   ; 50
    17687     mov bx, strict word 00008h                ; bb 08 00
    17688 pci_init_io_loop1:                           ; 0xff157 LB 0xe
    17689     mov DL, strict byte 000h                  ; b2 00
    17690     call 0f126h                               ; e8 ca ff
    17691     mov dx, 00cfch                            ; ba fc 0c
    17692     in ax, DX                                 ; ed
    17693     cmp ax, strict byte 0ffffh                ; 83 f8 ff
    17694     je short 0f19eh                           ; 74 39
    17695 enable_iomem_space:                          ; 0xff165 LB 0x39
    17696     mov DL, strict byte 004h                  ; b2 04
    17697     call 0f126h                               ; e8 bc ff
    17698     mov dx, 00cfch                            ; ba fc 0c
    17699     in AL, DX                                 ; ec
    17700     or AL, strict byte 007h                   ; 0c 07
    17701     out DX, AL                                ; ee
    17702     mov DL, strict byte 000h                  ; b2 00
    17703     call 0f126h                               ; e8 b0 ff
    17704     mov dx, 00cfch                            ; ba fc 0c
    17705     in eax, DX                                ; 66 ed
    17706     cmp eax, strict dword 020001022h          ; 66 3d 22 10 00 20
    17707     jne short 0f19eh                          ; 75 1b
    17708     mov DL, strict byte 010h                  ; b2 10
    17709     call 0f126h                               ; e8 9e ff
    17710     mov dx, 00cfch                            ; ba fc 0c
    17711     in ax, DX                                 ; ed
    17712     and ax, strict byte 0fffch                ; 83 e0 fc
    17713     db  08bh, 0c8h
    17714     ; mov cx, ax                                ; 8b c8
    17715     db  08bh, 0d1h
    17716     ; mov dx, cx                                ; 8b d1
    17717     add dx, strict byte 00014h                ; 83 c2 14
    17718     in ax, DX                                 ; ed
    17719     db  08bh, 0d1h
    17720     ; mov dx, cx                                ; 8b d1
    17721     add dx, strict byte 00018h                ; 83 c2 18
    17722     in eax, DX                                ; 66 ed
    17723 next_pci_dev:                                ; 0xff19e LB 0xf
    17724     mov byte [bp-008h], 010h                  ; c6 46 f8 10
    17725     inc bx                                    ; 43
    17726     cmp bx, 00100h                            ; 81 fb 00 01
    17727     jne short 0f157h                          ; 75 ae
     17702    mov eax, strict dword 00124f9fdh          ; 66 b8 fd f9 24 01
     17703    mov dx, 00410h                            ; ba 10 04
     17704    out DX, eax                               ; 66 ef
    1772817705    db  08bh, 0e5h
    1772917706    ; mov sp, bp                                ; 8b e5
    1773017707    pop bp                                    ; 5d
    1773117708    retn                                      ; c3
    17732 pcibios_init_set_elcr:                       ; 0xff1ad LB 0xc
     17709pcibios_init_set_elcr:                       ; 0xff153 LB 0xc
    1773317710    push ax                                   ; 50
    1773417711    push cx                                   ; 51
    1773517712    mov dx, 004d0h                            ; ba d0 04
    1773617713    test AL, strict byte 008h                 ; a8 08
    17737     je short 0f1b9h                           ; 74 03
     17714    je short 0f15fh                           ; 74 03
    1773817715    inc dx                                    ; 42
    1773917716    and AL, strict byte 007h                  ; 24 07
    17740 is_master_pic:                               ; 0xff1b9 LB 0xd
     17717is_master_pic:                               ; 0xff15f LB 0xd
    1774117718    db  08ah, 0c8h
    1774217719    ; mov cl, al                                ; 8a c8
     
    1775017727    pop ax                                    ; 58
    1775117728    retn                                      ; c3
    17752 pcibios_init_irqs:                           ; 0xff1c6 LB 0x53
     17729pcibios_init_irqs:                           ; 0xff16c LB 0x34
    1775317730    push DS                                   ; 1e
    1775417731    push bp                                   ; 55
    1775517732    mov ax, 0f000h                            ; b8 00 f0
    1775617733    mov ds, ax                                ; 8e d8
    17757     mov dx, 004d0h                            ; ba d0 04
    17758     mov AL, strict byte 000h                  ; b0 00
    17759     out DX, AL                                ; ee
    17760     inc dx                                    ; 42
    17761     out DX, AL                                ; ee
    17762     mov si, 0f2a0h                            ; be a0 f2
    17763     mov bh, byte [si+008h]                    ; 8a 7c 08
    17764     mov bl, byte [si+009h]                    ; 8a 5c 09
    17765     mov DL, strict byte 000h                  ; b2 00
    17766     call 0f126h                               ; e8 43 ff
    17767     mov dx, 00cfch                            ; ba fc 0c
    17768     in eax, DX                                ; 66 ed
    17769     cmp eax, dword [si+00ch]                  ; 66 3b 44 0c
    17770     jne near 0f296h                           ; 0f 85 a6 00
    17771     mov dl, byte [si+022h]                    ; 8a 54 22
    17772     call 0f126h                               ; e8 30 ff
    17773     push bx                                   ; 53
    17774     mov dx, 00cfch                            ; ba fc 0c
    17775     mov ax, 08080h                            ; b8 80 80
    17776     out DX, ax                                ; ef
    17777     add dx, strict byte 00002h                ; 83 c2 02
    17778     out DX, ax                                ; ef
    17779     mov ax, word [si+006h]                    ; 8b 44 06
    17780     sub ax, strict byte 00020h                ; 83 e8 20
    17781     shr ax, 004h                              ; c1 e8 04
    17782     db  08bh, 0c8h
    17783     ; mov cx, ax                                ; 8b c8
    17784     add si, strict byte 00020h                ; 83 c6 20
    17785     db  08bh, 0ech
    17786     ; mov bp, sp                                ; 8b ec
    17787     mov ax, 0f122h                            ; b8 22 f1
    17788     push ax                                   ; 50
    17789     db  033h, 0c0h
    17790     ; xor ax, ax                                ; 33 c0
    17791     push ax                                   ; 50
    17792 pci_init_irq_loop1:                          ; 0xff219 LB 0x5
    17793     mov bh, byte [si]                         ; 8a 3c
    17794     mov bl, byte [si+001h]                    ; 8a 5c 01
    17795 pci_init_irq_loop2:                          ; 0xff21e LB 0x15
    17796     mov DL, strict byte 000h                  ; b2 00
    17797     call 0f126h                               ; e8 03 ff
    17798     mov dx, 00cfch                            ; ba fc 0c
    17799     in ax, DX                                 ; ed
    17800     cmp ax, strict byte 0ffffh                ; 83 f8 ff
    17801     jne short 0f233h                          ; 75 07
    17802     test bl, 007h                             ; f6 c3 07
    17803     je short 0f28ah                           ; 74 59
    17804     jmp short 0f280h                          ; eb 4d
    17805 pci_test_int_pin:                            ; 0xff233 LB 0x3c
    17806     mov DL, strict byte 03ch                  ; b2 3c
    17807     call 0f126h                               ; e8 ee fe
    17808     mov dx, 00cfdh                            ; ba fd 0c
    17809     in AL, DX                                 ; ec
    17810     and AL, strict byte 007h                  ; 24 07
    17811     je short 0f280h                           ; 74 40
    17812     db  0feh, 0c8h
    17813     ; dec al                                    ; fe c8
    17814     mov DL, strict byte 003h                  ; b2 03
    17815     mul dl                                    ; f6 e2
    17816     add AL, strict byte 002h                  ; 04 02
    17817     db  032h, 0e4h
    17818     ; xor ah, ah                                ; 32 e4
    17819     db  08bh, 0d8h
    17820     ; mov bx, ax                                ; 8b d8
    17821     mov al, byte [bx+si]                      ; 8a 00
    17822     db  08ah, 0d0h
    17823     ; mov dl, al                                ; 8a d0
    17824     mov bx, word [byte bp+000h]               ; 8b 5e 00
    17825     call 0f126h                               ; e8 d0 fe
    17826     mov dx, 00cfch                            ; ba fc 0c
    17827     and AL, strict byte 003h                  ; 24 03
    17828     db  002h, 0d0h
    17829     ; add dl, al                                ; 02 d0
    17830     in AL, DX                                 ; ec
    17831     cmp AL, strict byte 080h                  ; 3c 80
    17832     jc short 0f26fh                           ; 72 0d
    17833     mov bx, word [bp-002h]                    ; 8b 5e fe
    17834     mov al, byte [bx]                         ; 8a 07
    17835     out DX, AL                                ; ee
    17836     inc bx                                    ; 43
    17837     mov word [bp-002h], bx                    ; 89 5e fe
    17838     call 0f1adh                               ; e8 3e ff
    17839 pirq_found:                                  ; 0xff26f LB 0x11
    17840     mov bh, byte [si]                         ; 8a 3c
    17841     mov bl, byte [si+001h]                    ; 8a 5c 01
    17842     add bl, byte [bp-003h]                    ; 02 5e fd
    17843     mov DL, strict byte 03ch                  ; b2 3c
    17844     call 0f126h                               ; e8 aa fe
    17845     mov dx, 00cfch                            ; ba fc 0c
    17846     out DX, AL                                ; ee
    17847 next_pci_func:                               ; 0xff280 LB 0xa
    17848     inc byte [bp-003h]                        ; fe 46 fd
    17849     db  0feh, 0c3h
    17850     ; inc bl                                    ; fe c3
    17851     test bl, 007h                             ; f6 c3 07
    17852     jne short 0f21eh                          ; 75 94
    17853 next_pir_entry:                              ; 0xff28a LB 0xc
    17854     add si, strict byte 00010h                ; 83 c6 10
    17855     mov byte [bp-003h], 000h                  ; c6 46 fd 00
    17856     loop 0f219h                               ; e2 86
    17857     db  08bh, 0e5h
    17858     ; mov sp, bp                                ; 8b e5
    17859     pop bx                                    ; 5b
    17860 pci_init_end:                                ; 0xff296 LB 0x2a
    1786117734    pop bp                                    ; 5d
    1786217735    pop DS                                    ; 1f
    1786317736    retn                                      ; c3
    17864     db  089h, 0c0h, 089h, 0c0h, 089h, 0c0h, 0fch, 024h, 050h, 049h, 052h, 000h, 001h, 000h, 002h, 000h
    17865     db  008h, 000h, 000h, 086h, 080h, 000h, 070h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    17866     db  000h, 000h, 000h, 000h, 000h, 000h, 031h
    17867 _pci_routing_table:                          ; 0xff2c0 LB 0x1e0
     17737    mov ax, ax                                ; 89 c0
     17738    mov ax, ax                                ; 89 c0
     17739    mov ax, ax                                ; 89 c0
     17740    mov ax, ax                                ; 89 c0
     17741    mov ax, ax                                ; 89 c0
     17742    and AL, strict byte 050h                  ; 24 50
     17743    dec cx                                    ; 49
     17744    push dx                                   ; 52
     17745    add byte [bx+di], al                      ; 00 01
     17746    add byte [bp+si], al                      ; 00 02
     17747    add byte [bx+si], cl                      ; 00 08
     17748    add byte [bx+si], al                      ; 00 00
     17749    xchg byte [bx+si+07000h], al              ; 86 80 00 70
     17750    times 0xf db 0
     17751    db  031h
     17752_pci_routing_table:                          ; 0xff1a0 LB 0x1e0
    1786817753    db  000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
    1786917754    db  000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
     
    1789617781    db  000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
    1789717782    db  000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
    17898 _pci_routing_table_size:                     ; 0xff4a0 LB 0x2
    17899     loopne 0f4a3h                             ; e0 01
    17900 biosorg_check_before_or_at_0F83Fh:           ; 0xff4a2 LB 0x39f
    17901     times 0x39d db 0
     17783_pci_routing_table_size:                     ; 0xff380 LB 0x2
     17784    loopne 0f383h                             ; e0 01
     17785biosorg_check_before_or_at_0F83Fh:           ; 0xff382 LB 0x4bf
     17786    times 0x4bd db 0
    1790217787    db  'XM'
    1790317788int12_handler:                               ; 0xff841 LB 0xc
     
    1795517840    popfw                                     ; 9d
    1795617841    jmp short 0f8afh                          ; eb 1f
    17957     call 09b28h                               ; e8 95 a2
     17842    call 09b47h                               ; e8 b4 a2
    1795817843    jmp short 0f883h                          ; eb ee
    1795917844int15_handler_mouse:                         ; 0xff895 LB 0x5
     
    1827818163cpu_reset:                                   ; 0xffff0 LB 0x10
    1827918164    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    18280     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0ffh
     18165    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0ddh
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum

    r67495 r67683  
    1 8ad7d52695284ae041ae25c322b029a5 *VBoxPcBios8086.rom
     15eaa6cc602fcf4c84c3d6d387c5eabad *VBoxPcBios8086.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