Advertisement
Guest User

house

a guest
Apr 15th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         org 100h
  2.  
  3. GREEN = 2h
  4. BLUE = 1h
  5. BROWN = 6h
  6. GRAY = 8h
  7. YELLOW = 0eh
  8. RED = 4h
  9.  
  10. EntryPoint:
  11.         mov     ah, $0F
  12.         int     10h
  13.         mov     [bOldMode], al
  14.         mov     [bOldPage], bh
  15.  
  16.         mov     ax, $0013
  17.         int     10h
  18.  
  19.         ; mov ax, $A000
  20.         ; mov es, ax
  21.         push    $A000
  22.         pop     es
  23.  
  24.         ; drawing
  25.  
  26. .Sky:
  27.         mov     al, BLUE
  28.         xor     di, di
  29.         mov     cx, 320 * 100
  30.         rep stosb
  31.  
  32.  
  33. .Ground:  
  34.         mov     al, GREEN
  35.         mov     di, 320 * 100
  36.         mov     cx, 320 * 100
  37.         rep stosb
  38.  
  39.  
  40.  
  41. .Facade:
  42.         mov al, BROWN
  43.         push 80 80 100 100 ; x y width height
  44.         call DrawRect
  45.  
  46. .Door:
  47.         mov al, GRAY
  48.         push 100 120 40 60
  49.         call DrawRect
  50.  
  51. .Roof:
  52.         mov al, RED
  53.         push 130 30 120 ; x y height
  54.         call DrawTriangle
  55.  
  56.  
  57. .Sun:
  58.         mov al, YELLOW
  59.         push 0 0 50 50
  60.         call DrawRect
  61.  
  62.         push 0 0 60 30
  63.         call DrawRect
  64.  
  65.         push 0 0 30 60
  66.         call DrawRect
  67.  
  68.         mov     ax, $0C08
  69.         int     21h
  70.         test    al, al
  71.         jnz     @F
  72.         mov     ah, $08
  73.         int     21h
  74. @@:
  75.         movzx   ax, [bOldMode]
  76.         int     10h
  77.         mov     ah, $05
  78.         mov     al, [bOldPage]
  79.         int     10h
  80.         ret
  81.  
  82.  
  83. DrawRect:
  84.         push bp
  85.         mov bp, sp
  86.  
  87.         push ax
  88.         mov ax, [bp + 8]; y
  89.         mov bx, 320
  90.         mul bx
  91.         mov di, ax
  92.         add di, [bp + 10]; x
  93.         pop ax
  94.  
  95.         xor si, si
  96.         .draw_line:
  97.                 mov cx, [bp + 6]; width
  98.                 rep stosb
  99.  
  100.                 add di, 320
  101.                 sub di, [bp + 6]
  102.  
  103.                 inc si
  104.                 cmp si, [bp + 4]; height
  105.                 jnz .draw_line
  106.  
  107.         mov sp, bp
  108.         pop bp
  109.         ret 4 * 2
  110.  
  111. DrawTriangle:
  112.         push bp
  113.         mov bp, sp
  114.  
  115.         push ax
  116.         mov ax, [bp + 6]; y
  117.         mov bx, 320
  118.         mul bx
  119.         mov di, ax
  120.         add di, [bp + 8]; x
  121.         pop ax
  122.  
  123.         mov bx, 1
  124.         xor si, si
  125.         .draw_line:
  126.                 mov cx, bx
  127.                 rep stosb
  128.  
  129.                 add di, 320
  130.                 add bx, 2
  131.                 sub di, bx
  132.                 inc di
  133.  
  134.                 inc si
  135.                
  136.                 inc si
  137.                 cmp si, [bp + 4]; height
  138.                 jnz .draw_line
  139.  
  140.         mov sp, bp
  141.         pop bp
  142.         ret 3 * 2
  143.  
  144. bOldMode        db      ?
  145. bOldPage        db      ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement