WriteControl Macro
local wait
push ax
mov dx,3B1h
wait:
in al,dx
and al,3
cmp al,3
jne wait
;
pop ax
out dx,al
Endm
WriteData Macro
local wait
push ax
mov dx,3B1h
wait:
in al,dx
and al,3
cmp al,3
jne wait
;
pop ax
dec dx
out dx,al
Endm
TestDisp:
mov al,81h ; CGROM mode, OR mode
WriteControl
;
xor al,al
WriteData
xor al,al
WriteData
mov al,42h
WriteControl ; set graphics home = 0000
;
mov al,28h
WriteData
xor al,al
WriteData
mov al,43h
WriteControl ; set graphics area = 0028
;
xor al,al
WriteData
mov al,20h
WriteData
mov al,40h
WriteControl ; set text home = 2000
;
mov al,28h
WriteData
xor al,al
WriteData
mov al,41h
WriteControl ; set text area = 0028
;
mov al,3
WriteData
xor al,al
WriteData
mov al,22h
WriteControl ; set CGRAM offset = 03
;
mov al,9Ah
WriteControl ; graphics on, text on, cursor off
;
xor al,al
WriteData
xor al,al
WriteData
mov al,24h
WriteControl
;
mov al,0B0h
WriteControl
;
xor si,si
ylo:
xor di,di
ilo:
cmp di,1
je ilo_ff
;
cmp di,28
je ilo_ff
;
cmp si,1
jle ilo_norm
;
cmp si,8
jg ilo_norm
ilo_ff:
mov al,0FFh
WriteData
jmp ilo_next
ilo_norm:
cmp di,15
jne ilo_00
cmp si, 8 * 8
jge ilo_00
;
mov al,55h
WriteData
jmp ilo_next
ilo_00:
xor al,al
WriteData
ilo_next:
inc di
cmp di,40
jb ilo
ylo_next:
inc si
cmp si,16 * 8
jb ylo
;
mov al,0B2h
WriteControl