home *** CD-ROM | disk | FTP | other *** search
/ 100 af Verdens Bedste Spil / 100Spil.iso / dos / wolf3d / source / wolfsrc.1 / ID_VH_A.ASM < prev    next >
Assembly Source File  |  1993-02-04  |  1KB  |  111 lines

  1. ; ID_VL.ASM
  2.  
  3.     IDEAL
  4.     MODEL    MEDIUM,C
  5.  
  6.     INCLUDE    'ID_VL.EQU'
  7.  
  8. SCREENSEG    =    0a000h
  9.  
  10. UPDATEWIDE    =    20
  11. UPDATEHIGH    =    13
  12.  
  13.     DATASEG
  14.  
  15.  
  16. EXTRN    bufferofs            :WORD
  17. EXTRN    displayofs            :WORD
  18. EXTRN    ylookup                :WORD
  19. EXTRN    linewidth            :WORD
  20. EXTRN    blockstarts            :WORD    ;offsets from drawofs for each update block
  21.  
  22. EXTRN    update                :BYTE
  23.  
  24.     CODESEG
  25.  
  26.  
  27. ;=================
  28. ;
  29. ; VH_UpdateScreen
  30. ;
  31. ;=================
  32.  
  33. PROC    VH_UpdateScreen
  34. PUBLIC    VH_UpdateScreen
  35. USES    si,di
  36.  
  37.     mov    dx,SC_INDEX
  38.     mov    ax,SC_MAPMASK+15*256
  39.     out    dx,ax
  40.  
  41.     mov dx,GC_INDEX
  42.     mov al,GC_MODE
  43.     out dx,al
  44.  
  45.     inc dx
  46.     in    al,dx
  47.     and al,252
  48.     or    al,1
  49.     out dx,al
  50.  
  51.     mov    bx,UPDATEWIDE*UPDATEHIGH-1        ; bx is the tile number
  52.     mov    dx,[linewidth]
  53.  
  54. ;
  55. ; see if the tile needs to be copied
  56. ;
  57. @@checktile:
  58.     test    [update+bx],1
  59.     jnz    @@copytile
  60. @@next:
  61.     dec    bx
  62.     jns    @@checktile
  63.  
  64. ;
  65. ; done
  66. ;
  67.     mov dx,GC_INDEX+1
  68.     in    al,dx
  69.     and al,NOT 3
  70.     or    al,0
  71.     out dx,al
  72.     ret
  73.  
  74. ;
  75. ; copy a tile
  76. ;
  77. @@copytile:
  78.     mov    [update+bx],0
  79.     shl    bx,1
  80.     mov    si,[blockstarts+bx]
  81.     shr    bx,1
  82.     mov    di,si
  83.     add    si,[bufferofs]
  84.     add    di,[displayofs]
  85.  
  86.     mov    ax,SCREENSEG
  87.     mov    ds,ax
  88.  
  89. REPT    16
  90.     mov    al,[si]
  91.     mov    [di],al
  92.     mov    al,[si+1]
  93.     mov    [di+1],al
  94.     mov    al,[si+2]
  95.     mov    [di+2],al
  96.     mov    al,[si+3]
  97.     mov    [di+3],al
  98.     add    si,dx
  99.     add    di,dx
  100. ENDM
  101.  
  102.     mov    ax,ss
  103.     mov    ds,ax
  104.     jmp    @@next
  105.  
  106. ENDP
  107.  
  108.  
  109.     END
  110.  
  111.