home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 255_01 / gpreadrw.asm < prev    next >
Assembly Source File  |  1988-03-30  |  3KB  |  123 lines

  1.           page   80,132
  2.           page
  3. ;
  4. ;         Kent Cedola
  5. ;         2015 Meadow Lake Court
  6. ;         Norfolk, Virginia  23518
  7. ;
  8.  
  9. dgroup    group  _data
  10.  
  11. _data     segment word public 'data'
  12.           assume ds:dgroup
  13.  
  14.           extrn  _xdwritbp:word
  15.           extrn  _xdwritw1:word,_xdwritw2:word,_xdwritw3:word
  16.           extrn  _xdwritb1:byte
  17.  
  18. _data     ends
  19.  
  20. _text     segment byte public 'code'
  21.  
  22.           assume cs:_text,ds:dgroup
  23.           public _gpwritrw
  24.  
  25. _gpwritrw proc   near
  26.  
  27.           push   si
  28.           push   di
  29.  
  30.           mov    si,0
  31.           mov    di,_xdwritbp
  32.           mov    es,_xdwritw1
  33.           mov    bp,_xdwritw3
  34.           mov    cl,_xdwritb1
  35.  
  36.           mov    dx,03CEh
  37.           mov    al,4
  38.           out    dx,al
  39.           inc    dx
  40.  
  41. ; four plane code
  42. ;         SI    = address of first byte
  43. ;         DX    = address of memory read port (all set up)
  44. ;         DI    = address of output array
  45. ;         BP    = width
  46. ;         CL    = bit rotate
  47. ;         ES    = graphic segment
  48.  
  49.           mov    al,0
  50.           out    dx,al
  51.           mov    ah,es:[si]
  52.           rol    ah,cl
  53.           mov    al,1
  54.           out    dx,al
  55.           mov    bh,es:[si]
  56.           rol    bh,cl
  57.           mov    al,2
  58.           out    dx,al
  59.           mov    bl,es:[si]
  60.           rol    bl,cl
  61.           mov    al,3
  62.           out    dx,al
  63.           mov    ch,es:[si]
  64.           rol    ch,cl
  65.  
  66.           sub    cl,8
  67.           neg    cl
  68.  
  69. nextbit4:
  70.           xor    al,al
  71.  
  72.           rol    ch,1
  73.           adc    al,0
  74.           rol    al,1
  75.           rol    bl,1
  76.           adc    al,0
  77.           rol    al,1
  78.           rol    bh,1
  79.           adc    al,0
  80.           rol    al,1
  81.           rol    ah,1
  82.           adc    al,0
  83.  
  84.           mov    [di],al
  85.           inc    di
  86.  
  87.           dec    bp
  88.           jz     rowend4
  89.  
  90.           dec    cl
  91.           jnz    nextbit4
  92.           inc    si
  93.           mov    al,0
  94.           out    dx,al
  95.           mov    ah,es:[si]
  96.           mov    al,1
  97.           out    dx,al
  98.           mov    bh,es:[si]
  99.           mov    al,2
  100.           out    dx,al
  101.           mov    bl,es:[si]
  102.           mov    al,3
  103.           out    dx,al
  104.           mov    ch,es:[si]
  105.  
  106.           mov    cl,8
  107.  
  108.           jmp    short nextbit4
  109.  
  110. rowend4:
  111.  
  112.           mov    ax,_xdwritw2
  113.           add    _xdwritw1,ax
  114.  
  115.           pop    di
  116.           pop    si
  117.           ret
  118.  
  119. _gpwritrw endp
  120.  
  121. _text     ends
  122.           END
  123.