home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / TANK11.ZIP / SOURCE.ZIP / DC13.ASM < prev    next >
Assembly Source File  |  1993-01-16  |  1KB  |  82 lines

  1. ; void DisplayChar13( c, x, y, fgd, bkgd)
  2. ; requires: video mode 13
  3. ; ensures:  char c written to x,y (all ints)
  4. ; Note:Chars are 8x8
  5. ARGc    EQU    word ptr [bp+4]
  6. ARGx    EQU    word ptr [bp+6]
  7. ARGy    EQU    word ptr [bp+8]
  8. ARGfgd      EQU    byte ptr [bp+10]
  9. ARGbkgd    EQU    byte ptr [bp+12]
  10.  
  11. BytesPerLine    EQU    320
  12.  
  13. _TEXT    SEGMENT    byte public 'CODE'
  14.     ASSUME    cs:_TEXT
  15.  
  16.     EXTRN    PixelAddr13:near
  17.  
  18.     PUBLIC    _DisplayChar13
  19. _DisplayChar13    PROC    near
  20.  
  21.     push    bp
  22.     mov    bp,sp
  23.     push    di
  24.     push    si
  25.     push    ds
  26.  
  27. ;calc first pixel
  28.     mov    ax,ARGy
  29.     mov    bx,ARGx
  30.     call    PixelAddr13
  31.     mov    di,bx
  32.  
  33. ;set up char def table addressing
  34.     mov    ax,40h
  35.     mov    ds,ax
  36.  
  37.     mov    cx,ds:[85h]
  38.  
  39.     xor    ax,ax
  40.     mov    ds,ax
  41.  
  42.     mov    ax,ARGc
  43.     mov    bx,43h*4
  44.     lds    si,ds:[bx]
  45.     mul    cl
  46.  
  47.     add    si,ax
  48.  
  49. ;store char in video buffer
  50.     mov    bl,ARGfgd
  51.     mov    bh,ARGbkgd
  52.  
  53.  
  54. L10:    push    cx
  55.     mov    cx,8
  56.     lodsb
  57.     mov    ah,al
  58.  
  59. L11:    mov    al,bl
  60.     shl    ah,1
  61.     jc    L12
  62.  
  63.     mov    al,bh
  64.  
  65. L12:    stosb
  66.     loop    L11
  67.  
  68.     add    di,BytesPerLine-8
  69.  
  70.     pop    cx
  71.     loop    L10
  72.  
  73.     pop    ds
  74.     pop    si
  75.     pop    di
  76.     mov    sp,bp
  77.     pop    bp
  78.     ret
  79.  
  80. _DisplayChar13    ENDP
  81. _TEXT    ENDS
  82.     END