Changeset 239


Ignore:
Timestamp:
Jul 8, 2018, 7:40:35 PM (7 years ago)
Author:
Ben Rietbroek
Message:

Fixed display-quirk occurring on HP Pavilion dv9000 [v1.1.5-testing]

Loading the custom charsets on that machine messed with the settings of
the video-adapter with regard to the buffer-start of video-pages.
Using a different call solved the problem.

Working replacement: (0x1100)
http://www.ctyme.com/intr/rb-0136.htm

Quirky predecessor: (0x1110)
http://www.ctyme.com/intr/rb-0143.htm
Note the comment about video-page 0 needing to be the active page.

CAUTION:
This is a testbuild !
AirBoot uses the BIOS to access disks and a small coding error can trash
partition tables or other vital disk structures. You are advised to make
backups of TRACK0 and EBRs before using this testbuild. More info at:
https://rousseaux.github.io/netlabs.air-boot/pdf/AirBoot-v1.1.4-manual.pdf

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bootcode/special/charset.asm

    r234 r239  
    152152
    153153; -----------------------------------------------------------------------------
    154 ; Load the glyphs to the video-bios assuming 400 scanlines
     154; Get the standard CP437 glyphs from the video-bios -- (400 scanlines version)
     155; -----------------------------------------------------------------------------
     156; Returns ES:BP pointer to charset (in Video-ROM)
     157; http://www.ctyme.com/intr/rb-0158.htm
    155158; -----------------------------------------------------------------------------
    156159CHARSET_GetRomGlyphs    Proc
     
    158161        mov    bh, 6                ; Get ROM VGA 25x80 charset
    159162        int    10h                  ; VIDEO BIOS: Get charset table pointer
    160         mov    bx, ds               ; ES:BP point to charset (in Video-ROM)
     163        mov    bx, ds
    161164        mov    ax, es
    162         mov    es, bx
    163         mov    ds, ax
    164         mov    si, bp               ; DS:SI - ROM Font 25x80 and ES==CS
    165         mov    di, offset CharsetTempBuffer
     165        mov    es, bx               ; ES now points to Data-Segment      (dest)
     166        mov    ds, ax               ; DS now points to Video-ROM          (src)
     167        mov    si, bp               ; SI now points to ROM Font 25x80
     168        mov    di, offset CharsetTempBuffer     ; Located in BSS
    166169        mov    cx, 2048
    167         rep    movsw                ; Copy ROM-charset to Temp-Buffer
    168         mov    ds, bx               ; DS==CS
     170        rep    movsw                ; Copy ROM-charset to Temp-Buffer in BSS
     171        mov    ds, bx               ; Restore DS (DS==ES==CS)
    169172        ret
    170173CHARSET_GetRomGlyphs    EndP
     
    173176
    174177; -----------------------------------------------------------------------------
    175 ; Load the glyphs to the video-bios assuming 400 scanlines
     178; Set the custom glyphs for the video-adapter assuming 400 scanlines
     179; -----------------------------------------------------------------------------
     180; rousseau.comment.201807071938 :: Changed call from 0x1110 to 0x1100
     181; On a HP Pavilion dv9000 laptop, when pressing TAB to switch to preboot-menu,
     182; the text did not start at 0,0 anymore but was moved some 50 odd characters
     183; to the right. However, the preboot-menu was displayed correctly during the
     184; scanning phase, so the quirk occurred when the preboot-menu was moved to the
     185; second video-page. Information from Ralph Brown does state that for 0x1110h
     186; video-page 0 needs to be active, which might not be the case when the custom
     187; glyphs are loaded. Switching to 0x1100 solves the problem on the Hp Pavilion
     188; and the other test-laptop, which did not have this quirk, still works fine.
     189; That leaves the question why 0x1110 was chosen by Martin in the first place.
     190; http://www.ctyme.com/intr/rb-0136.htm  <!-- 0x1100 -->
     191; http://www.ctyme.com/intr/rb-0143.htm  <!-- 0x1110 ~~ video page 0 remark -->
    176192; -----------------------------------------------------------------------------
    177193CHARSET_SetCutsomGlyphs Proc
     
    179195        call    FX_WaitRetrace      ; Wait for retrace to reduce flickering
    180196ENDIF
    181         mov     ax, 1110h
     197        ;~ mov     ax, 1110h           ; Works quirky on HP Pavilion dv9000
     198        mov     ax, 1100h           ; Works OK on HP Pavilion dv9000
    182199        mov     bh, 16
    183200        xor     bl, bl
Note: See TracChangeset for help on using the changeset viewer.