Normal quotes
This commit is contained in:
parent
5e10794a24
commit
18011c595a
352 changed files with 6040 additions and 6040 deletions
38
27-05.md
38
27-05.md
|
|
@ -3,7 +3,7 @@
|
|||
------------------------ --------------------------------- --------------------
|
||||
|
||||
Another interesting point about flipping from graphics to text and back
|
||||
is that the standard mode 3 character/attribute map doesn’t actually
|
||||
is that the standard mode 3 character/attribute map doesn't actually
|
||||
take up every byte of the first 4000 bytes of planes 0 and 1. The
|
||||
standard mode 3 character/attribute map actually only takes up every
|
||||
even byte of the first 4000 in each plane; the odd bytes are left
|
||||
|
|
@ -21,10 +21,10 @@ single block.
|
|||
Explaining why only every other byte of planes 0 and 1 is used in text
|
||||
mode and why characters and attributes appear to be contiguous bytes
|
||||
when they are actually in different planes is a large part of the
|
||||
explanation I’m not going to go into now. One bit of fallout from this,
|
||||
explanation I'm not going to go into now. One bit of fallout from this,
|
||||
however, is that if you flip to text mode and preserve the graphics
|
||||
bitmap using the mechanism illustrated in Listing 27.3, you shouldn’t
|
||||
write to any text page other than page 0 (that is, don’t write to any
|
||||
bitmap using the mechanism illustrated in Listing 27.3, you shouldn't
|
||||
write to any text page other than page 0 (that is, don't write to any
|
||||
offset in display memory above 3999 in text mode) or alter the Page
|
||||
Select bit in the Miscellaneous Output register (3C2H) while in text
|
||||
mode. In order to allow completely unfettered access to text pages, it
|
||||
|
|
@ -37,10 +37,10 @@ saved, up to a maximum of all 64K of plane 2. In the worst case, a full
|
|||
128K would have to be saved in order to preserve all the memory
|
||||
potentially used by text mode.
|
||||
|
||||
As I said, Phil Coleman’s question is an interesting one, and I’ve only
|
||||
As I said, Phil Coleman's question is an interesting one, and I've only
|
||||
touched on the intriguing possibilities arising from the various
|
||||
configurations of display memory in VGA graphics and text modes. Right
|
||||
now, though, we’ve still got the basics of the remarkably complex (but
|
||||
now, though, we've still got the basics of the remarkably complex (but
|
||||
rewarding!) VGA to cover.
|
||||
|
||||
**LISTING 27.3 L27-3.ASM**
|
||||
|
|
@ -52,7 +52,7 @@ rewarding!) VGA to cover.
|
|||
;
|
||||
; By Michael Abrash
|
||||
;
|
||||
Stack segment para stack ‘STACK’
|
||||
Stack segment para stack ‘STACK'
|
||||
db 512 dup(0)
|
||||
Stack ends
|
||||
|
||||
|
|
@ -63,19 +63,19 @@ rewarding!) VGA to cover.
|
|||
GC_INDEX equ 3ceh ;Graphics Controller Index register
|
||||
READ_MAP equ 4 ;index of Read Map register
|
||||
|
||||
Data segment para common ‘DATA’
|
||||
Data segment para common ‘DATA'
|
||||
|
||||
GStrikeAnyKeyMsg0 label byte
|
||||
db 0dh, 0ah, ‘Graphics mode’, 0dh, 0ah
|
||||
db ‘Strike any key to continue...’, 0dh, 0ah, ‘$’
|
||||
db 0dh, 0ah, ‘Graphics mode', 0dh, 0ah
|
||||
db ‘Strike any key to continue...', 0dh, 0ah, ‘$'
|
||||
|
||||
GStrikeAnyKeyMsg1 label byte
|
||||
db 0dh, 0ah, ‘Graphics mode again’, 0dh, 0ah
|
||||
db ‘Strike any key to continue...’, 0dh, 0ah, ‘$’
|
||||
db 0dh, 0ah, ‘Graphics mode again', 0dh, 0ah
|
||||
db ‘Strike any key to continue...', 0dh, 0ah, ‘$'
|
||||
|
||||
TStrikeAnyKeyMsg label byte
|
||||
db 0dh, 0ah, ‘Text mode’, 0dh, 0ah
|
||||
db ‘Strike any key to continue...’, 0dh, 0ah, ‘$’
|
||||
db 0dh, 0ah, ‘Text mode', 0dh, 0ah
|
||||
db ‘Strike any key to continue...', 0dh, 0ah, ‘$'
|
||||
|
||||
Plane2Save db 2000h dup (?) ;save area for plane 2 data
|
||||
; where font gets loaded
|
||||
|
|
@ -84,7 +84,7 @@ rewarding!) VGA to cover.
|
|||
; data in text mode
|
||||
Data ends
|
||||
|
||||
Code segment para public ‘CODE’
|
||||
Code segment para public ‘CODE'
|
||||
assume cs:Code, ds:Data
|
||||
Start proc near
|
||||
mov ax,10h
|
||||
|
|
@ -116,7 +116,7 @@ rewarding!) VGA to cover.
|
|||
shl ah,1
|
||||
loop FillBitMap
|
||||
;
|
||||
; Put up “strike any key” message.
|
||||
; Put up "strike any key" message.
|
||||
;
|
||||
mov ax,Data
|
||||
mov ds,ax
|
||||
|
|
@ -162,13 +162,13 @@ rewarding!) VGA to cover.
|
|||
mov cx,4000/2 ;length of one text screen in words
|
||||
rep movsw
|
||||
;
|
||||
; Fill the text mode screen with dots and put up “strike any key”
|
||||
; Fill the text mode screen with dots and put up "strike any key"
|
||||
; message.
|
||||
;
|
||||
mov ax,TEXT_SEGMENT
|
||||
mov es,ax
|
||||
sub di,di
|
||||
mov al,‘.’ ;fill character
|
||||
mov al,‘.' ;fill character
|
||||
mov ah,7 ;fill attribute
|
||||
mov cx,4000/2 ;length of one text screen in words
|
||||
rep stosw
|
||||
|
|
@ -217,7 +217,7 @@ rewarding!) VGA to cover.
|
|||
mov cx,2000h/2 ;restore 8K (length of default font)
|
||||
rep movsw
|
||||
;
|
||||
; Put up “strike any key” message.
|
||||
; Put up "strike any key" message.
|
||||
;
|
||||
mov ax,Data
|
||||
mov ds,ax
|
||||
|
|
|
|||
Loading…
Reference in a new issue