Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org 100h
- GREEN = 2h
- BLUE = 1h
- BROWN = 6h
- GRAY = 8h
- YELLOW = 0eh
- RED = 4h
- EntryPoint:
- mov ah, $0F
- int 10h
- mov [bOldMode], al
- mov [bOldPage], bh
- mov ax, $0013
- int 10h
- ; mov ax, $A000
- ; mov es, ax
- push $A000
- pop es
- ; drawing
- .Sky:
- mov al, BLUE
- xor di, di
- mov cx, 320 * 100
- rep stosb
- .Ground:
- mov al, GREEN
- mov di, 320 * 100
- mov cx, 320 * 100
- rep stosb
- .Facade:
- mov al, BROWN
- push 80 80 100 100 ; x y width height
- call DrawRect
- .Door:
- mov al, GRAY
- push 100 120 40 60
- call DrawRect
- .Roof:
- mov al, RED
- push 130 30 120 ; x y height
- call DrawTriangle
- .Sun:
- mov al, YELLOW
- push 0 0 50 50
- call DrawRect
- push 0 0 60 30
- call DrawRect
- push 0 0 30 60
- call DrawRect
- mov ax, $0C08
- int 21h
- test al, al
- jnz @F
- mov ah, $08
- int 21h
- @@:
- movzx ax, [bOldMode]
- int 10h
- mov ah, $05
- mov al, [bOldPage]
- int 10h
- ret
- DrawRect:
- push bp
- mov bp, sp
- push ax
- mov ax, [bp + 8]; y
- mov bx, 320
- mul bx
- mov di, ax
- add di, [bp + 10]; x
- pop ax
- xor si, si
- .draw_line:
- mov cx, [bp + 6]; width
- rep stosb
- add di, 320
- sub di, [bp + 6]
- inc si
- cmp si, [bp + 4]; height
- jnz .draw_line
- mov sp, bp
- pop bp
- ret 4 * 2
- DrawTriangle:
- push bp
- mov bp, sp
- push ax
- mov ax, [bp + 6]; y
- mov bx, 320
- mul bx
- mov di, ax
- add di, [bp + 8]; x
- pop ax
- mov bx, 1
- xor si, si
- .draw_line:
- mov cx, bx
- rep stosb
- add di, 320
- add bx, 2
- sub di, bx
- inc di
- inc si
- inc si
- cmp si, [bp + 4]; height
- jnz .draw_line
- mov sp, bp
- pop bp
- ret 3 * 2
- bOldMode db ?
- bOldPage db ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement