## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 80×86 Architecture: Geos DRV

Assembler code

    seg003:0A36                 push    si
    seg003:0A37                 push    di
    seg003:0A38                 mov     [bp+var_C], 0
    seg003:0A3D                 mov     [bp+fDocDir], 0
    seg003:0A42                 call    FILEPUSHDIR     ; void pascal FilePushDir(void) in file.h
    seg003:0A47                 test    byte_9E, 1
    seg003:0A4C                 jz      short loc_410D
    seg003:0A4E                 mov     [bp+fDocDir], 8
    seg003:0A53                 push    [bp+fDocDir]    ; fDocDir
    seg003:0A56                 call    FOAMSETDOCUMENTDIR ; void pascal FoamSetDocumentDir(FDocumentDir fDocDir) in foam.goh
    seg003:0A5B                 jmp     short loc_411A
    seg003:0A5D ; ---------------------------------------------------------------------------
    seg003:0A5D
    seg003:0A5D loc_410D:                               ; CODE XREF: sub_40E0+1C↑j
    seg003:0A5D                 mov     [bp+var_C], 31h ; '1'
    seg003:0A62                 push    [bp+var_C]      ; sp
    seg003:0A65                 call    FILESETSTANDARDPATH ; void pascal FileSetStandardPath(StandardPath sp) in file.h
    seg003:0A6A
    seg003:0A6A loc_411A:                               ; CODE XREF: sub_40E0+2B↑j
    seg003:0A6A                 push    0
    seg003:0A6C                 push    0C800h
    seg003:0A6F                 call    sub_5B83
    seg003:0A74                 mov     [bp+var_16], ax
    seg003:0A77                 cmp     [bp+var_16], 0
    seg003:0A7B                 jz      short loc_419E
    seg003:0A7D                 test    byte_9E, 1
    seg003:0A82                 jz      short loc_4148
    seg003:0A84                 push    word ptr [bp+name+2]
    seg003:0A87                 push    word ptr [bp+name] ; name
    seg003:0A8A                 call    FILEDELETE      ; word pascal FileDelete(const char *name) in file.h
    seg003:0A8F                 les     bx, [bp+name]
    seg003:0A92                 mov     byte ptr es:[bx], 0
    seg003:0A96                 jmp     short loc_4188
    seg003:0A98 ; ---------------------------------------------------------------------------
    seg003:0A98
    seg003:0A98 loc_4148:                               ; CODE XREF: sub_40E0+52↑j
    seg003:0A98                 xor     si, si