Advertisement
Guest User

Untitled

a guest
Apr 8th, 2022
40
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .set XSIZE 96h
  2. .set YSIZE 68h
  3. .org {11h * 2h}
  4. dw @vbi
  5.  
  6. .org 80h
  7.  
  8. .include "stdvideo.inc"
  9. process:
  10.     mov %cl YSIZE
  11.     .loopy:
  12.         mov %ch XSIZE
  13.         .loopx:
  14.             call @processCell
  15.             loop %ch @.loopx
  16.         loop %cl @.loopy
  17.     ret
  18.  
  19. processCell:
  20.     mov %d 0h
  21.     mov %bl 3h
  22.     .loopy:
  23.         mov %bh 3h
  24.         .loopx:
  25.             mov %e %c
  26.             add %e %b
  27.             sub %e 0202h
  28.  
  29.             cmp %e %c
  30.             ce jmp @.xskip
  31.  
  32.             push %e
  33.             mov %bp %sp
  34.             call @index2rel
  35.             pop %e
  36.  
  37.             cmpb [%e + @data] 0h
  38.             cg inc %d
  39.             .xskip:
  40.             loop %bh @.loopx
  41.         loop %bl @.loopy
  42.    
  43.     push %c
  44.     mov %bp %sp
  45.     call @index2rel
  46.     pop %e
  47.     mov %al [%e + @data]
  48.  
  49.     movb [%e + @ndata] 0h
  50.     cmp %al 0h
  51.     cz jmp @.dead
  52.         cmp %d 2h
  53.         cl ret
  54.         cmp %d 3h
  55.         cg ret
  56.         movb [%e + @ndata] 1h
  57.     ret
  58.     .dead:
  59.         cmp %d 3h
  60.         ce movb [%e + @ndata] 1h
  61.     ret
  62.  
  63. index2rel: ; l - y, h - x ;
  64.     ;push %a;
  65.     push %b
  66.     mov %a [%bp]
  67.  
  68.     mod %al YSIZE
  69.     mod %ah XSIZE
  70.     mov %b %al
  71.     mul %b XSIZE
  72.     add %b %ah
  73.  
  74.     mov [%bp] %b
  75.     pop %b
  76.     ;pop %a;
  77.     ret
  78.  
  79. fill:
  80.     mov %c {XSIZE * YSIZE}
  81.     .loop:
  82.         mov %b %c
  83.         mod %b 100h
  84.         div %b 8h
  85.         add %b 80h
  86.         mov %al [%b]
  87.         mov %b %c
  88.         mod %b 8h
  89.         mov %e 1h
  90.         shl %e %b
  91.         and %al %el
  92.         cnz movb [%c + @data] 1h
  93.         loop %c @.loop
  94.     ret
  95. render:
  96.     call @clsm1
  97.     mov %cl YSIZE
  98.     .loopy:
  99.         mov %ch XSIZE
  100.         .loopx:
  101.             push %c
  102.             mov %bp %sp
  103.             call @index2rel
  104.             pop %e
  105.             cmpb [%e + @data] 1h
  106.             cge push %c
  107.             cge call @setpixelm1
  108.             ; cnge call @resetpixelm1 ;
  109.             cge pop
  110.             loop %ch @.loopx
  111.         loop %cl @.loopy
  112.     ret
  113. start:
  114.     mov %sp FFFFh
  115.     outb 20h 1h
  116.     outb 21h 8h
  117.     out  22h @T1
  118.  
  119.     mov %al 1h
  120.     int 10h
  121.  
  122.     call @fill
  123.  
  124.     .loop:
  125.         jmp @.loop
  126. vbi:
  127.     cli
  128.     call @render
  129.     call @process
  130.     mov %c {XSIZE * YSIZE}
  131.     .loop:
  132.         movb [%c + @data] [%c + @ndata]
  133.         loop %c @.loop
  134.     rei
  135. T1:
  136. .org {3AAAh + @T1}
  137. data:
  138. .org {XSIZE * YSIZE + @data}
  139. ndata:
  140. .org {XSIZE * YSIZE + @ndata}
Advertisement
RAW Paste Data Copied
Advertisement