Changeset 244 for trunk/bootcode/special/charset.asm
- Timestamp:
- Jul 8, 2018, 7:40:47 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bootcode/special/charset.asm
r239 r244 115 115 116 116 ; Pointer to table with glyphs using compressed format 117 mov si, offset CHARSET_Cyrillic118 mov di, offset CharsetTempBuffer+2048119 120 mov dl, 64; Decode 64 character bitmaps121 xor al, al122 xor ch, ch123 DecodeLoop:; This is an uncompressing-loop124 mov ah, ds:[si]125 inc si126 mov cl, ah127 and cl, 0Fh128 rep stosb; Write NULs, count: lower 4 bits129 mov cl, ah130 shr cl, 4131 or cl, cl132 jz EndOfStream133 rep movsb134 jmp DecodeLoop135 136 cmp di, offset CharsetTempBuffer+3840137 jae DecodeDone138 add di, 768; Skip 3x16 char blocks139 jmp DecodeLoop140 141 117 mov si, offset CHARSET_Cyrillic 118 mov di, offset CharsetTempBuffer+2048 119 120 mov dl, 64 ; Decode 64 character bitmaps 121 xor al, al 122 xor ch, ch 123 DecodeLoop: ; This is an uncompressing-loop 124 mov ah, ds:[si] 125 inc si 126 mov cl, ah 127 and cl, 0Fh 128 rep stosb ; Write NULs, count: lower 4 bits 129 mov cl, ah 130 shr cl, 4 131 or cl, cl 132 jz EndOfStream 133 rep movsb 134 jmp DecodeLoop 135 EndOfStream: 136 cmp di, offset CharsetTempBuffer+3840 137 jae DecodeDone 138 add di, 768 ; Skip 3x16 char blocks 139 jmp DecodeLoop 140 141 DecodeDone: 142 142 ; Upload the custom charset to the video-adapter 143 call CHARSET_SetCutsomGlyphs143 call CHARSET_SetCutsomGlyphs 144 144 145 145 popa … … 158 158 ; ----------------------------------------------------------------------------- 159 159 CHARSET_GetRomGlyphs Proc 160 mov ax, 1130h161 mov bh, 6; Get ROM VGA 25x80 charset162 int 10h; VIDEO BIOS: Get charset table pointer163 mov bx, ds164 mov ax, es165 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 25x80168 mov di, offset CharsetTempBuffer; Located in BSS169 mov cx, 2048170 rep movsw; Copy ROM-charset to Temp-Buffer in BSS171 mov ds, bx; Restore DS (DS==ES==CS)160 mov ax, 1130h 161 mov bh, 6 ; Get ROM VGA 25x80 charset 162 int 10h ; VIDEO BIOS: Get charset table pointer 163 mov bx, ds 164 mov ax, es 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 169 mov cx, 2048 170 rep movsw ; Copy ROM-charset to Temp-Buffer in BSS 171 mov ds, bx ; Restore DS (DS==ES==CS) 172 172 ret 173 173 CHARSET_GetRomGlyphs EndP … … 185 185 ; second video-page. Information from Ralph Brown does state that for 0x1110h 186 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 H pPavilion187 ; glyphs are loaded. Switching to 0x1100 solves the problem on the HP Pavilion 188 188 ; and the other test-laptop, which did not have this quirk, still works fine. 189 189 ; That leaves the question why 0x1110 was chosen by Martin in the first place.
Note:
See TracChangeset
for help on using the changeset viewer.