rendered paste body; Sample full screen DOS application
[org 100h]
[segment .text]
mov al, 13h
int 10h ; FULL screen
xor dx, dx
xor cx, cx
mov ax, 13h ; mode 13h
int 10h
mov si, Colors
xor ah, ah
CreatePalette:
mov dx,03C8h
mov al, ah
out dx, al
inc dx
mov al, [si]
out dx, al
mov al, [si+1]
out dx, al
mov al, [si+2]
out dx, al
add si, 3
inc ah
cmp si, ColorEnd
jbe CreatePalette
xor edi, edi
xor cx, cx
xor ebx, ebx
BuildScreen:
lea si, [di+bx]
call DrawSquare
add di, 40
cmp di, 320
jb BuildScreen
xor di, di
add ebx, 6420 ; 20 lines
inc cx
cmp cx, 10
jnz BuildScreen
xor edi, edi
push word 0A000h
pop es
mov al, 1
LineBuild:
mov [es:di], al
inc di
cmp di, 320
jnz LineBuild
;
xor di, di
LineBuild2:
mov [es:di], al
add di, 319
mov [es:di], al
inc di
cmp di, 63680
jnz LineBuild2
;
mov di, 63680
LineBuild3:
mov [es:di], al
inc di
cmp di, 64000
jnz LineBuild3
xor ax, ax
xor bl, bl
MainLoop:
mov ah, 01 ; Exit if a key is pressed
int 16h
jz MainLoop
; ////////
mov ax,4C00h ; EXIT
int 21h
DrawSquare: ; draw a 20x20 white square
pushad
mov di, si
mov dx, di
add dx, 20
mov al, 1
push word 0A000h
pop es
xor cx, cx
xor bx, bx
SquareLoop:
mov [es:bx+si], al
inc si
cmp si, dx
jnz SquareLoop
mov si, di
add bx, 320
inc cx
cmp cx, 20
jnz SquareLoop
popad
retn
Colors db 0,0,0 ; Black
db 0FFh,0FFh,0FFh ; White
ColorEnd: