More VGA tests
This commit is contained in:
parent
c71823356d
commit
13eeef57d9
4 changed files with 574 additions and 0 deletions
81
tests/pc/vga/L29-4.ASM
Normal file
81
tests/pc/vga/L29-4.ASM
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
; Program to demonstrate screen blanking via bit 5 of the
|
||||
; Attribute Controller Index register.
|
||||
;
|
||||
AC_INDEX equ 3c0h ;Attribute Controller Index register
|
||||
INPUT_STATUS_1 equ 3dah ;color-mode address of the Input
|
||||
; Status 1 register
|
||||
;
|
||||
; Macro to wait for and clear the next keypress.
|
||||
;
|
||||
WAIT_KEY macro
|
||||
mov ah,8 ;DOS input without echo function
|
||||
int 21h
|
||||
endm
|
||||
;
|
||||
stack segment para stack 'STACK'
|
||||
db 512 dup (?)
|
||||
stack ends
|
||||
;
|
||||
Data segment word 'DATA'
|
||||
SampleText db 'This is bit-mapped text, drawn in hi-res '
|
||||
db 'EGA graphics mode 10h.', 0dh, 0ah, 0ah
|
||||
db 'Press any key to blank the screen, then '
|
||||
db 'any key to unblank it,', 0dh, 0ah
|
||||
db 'then any key to end.$'
|
||||
Data ends
|
||||
;
|
||||
Code segment
|
||||
assume cs:Code, ds:Data
|
||||
Start proc near
|
||||
mov ax,Data
|
||||
mov ds,ax
|
||||
;
|
||||
; Go to hi-res graphics mode.
|
||||
;
|
||||
mov ax,10h ;AH = 0 means mode set, AL = 10h selects
|
||||
; hi-res graphics mode
|
||||
int 10h ;BIOS video interrupt
|
||||
;
|
||||
; Put up some text, so the screen isn't empty.
|
||||
;
|
||||
mov ah,9 ;DOS print string function
|
||||
mov dx,offset SampleText
|
||||
int 21h
|
||||
;
|
||||
WAIT_KEY
|
||||
;
|
||||
; Blank the screen.
|
||||
;
|
||||
mov dx,INPUT_STATUS_1
|
||||
in al,dx ;reset port 3c0h to index (rather than data)
|
||||
; mode
|
||||
mov dx,AC_INDEX
|
||||
sub al,al ;make bit 5 zero...
|
||||
out dx,al ;...which blanks the screen
|
||||
;
|
||||
WAIT_KEY
|
||||
;
|
||||
; Unblank the screen.
|
||||
;
|
||||
mov dx,INPUT_STATUS_1
|
||||
in al,dx ;reset port 3c0h to Index (rather than data)
|
||||
; mode
|
||||
mov dx,AC_INDEX
|
||||
mov al,20h ;make bit 5 one...
|
||||
out dx,al ;...which unblanks the screen
|
||||
;
|
||||
WAIT_KEY
|
||||
;
|
||||
; Restore text mode.
|
||||
;
|
||||
mov ax,2
|
||||
int 10h
|
||||
;
|
||||
; Done.
|
||||
;
|
||||
Done:
|
||||
mov ah,4ch ;DOS terminate function
|
||||
int 21h
|
||||
Start endp
|
||||
Code ends
|
||||
end Start
|
||||
Loading…
Reference in a new issue