All pastes #507642 Raw Edit

Damier en asm 16bits ^^

public text v1 · immutable
·published 2007-05-24 17:38 UTC
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: