home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 255_01 / gprddot.asm < prev    next >
Assembly Source File  |  1988-03-30  |  2KB  |  86 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  _gdcur_x:word,_gdcur_y:word
  15.  
  16. _data     ends
  17.  
  18. _text     segment byte public 'code'
  19.  
  20.           assume cs:_text,ds:dgroup
  21.           public _gprddot
  22. _gprddot  proc   near
  23.  
  24.           push   bp
  25.           mov    bp,sp
  26.           push   si
  27.  
  28.           mov    ax,[bp+6]             ; Compute the segment of the graphic
  29.           mov    _GDCUR_Y,ax           ;
  30.           shl    ax,1                  ;   byte that is to be changed
  31.           shl    ax,1                  ;   ES = A000 + (80 * Y) / 16;
  32.           add    ax,_GDCUR_Y           ;   ...
  33.           add    ax,0A000h             ;   ...
  34.           mov    es,ax                 ;   ...
  35.           mov    si,[bp+4]             ; Compute the column byte offset
  36.           mov    _GDCUR_X,si
  37.           mov    cx,si                 ;   ... (Save for later)
  38.           shr    si,1                  ;   SI = X / 8;
  39.           shr    si,1                  ;   ...
  40.           shr    si,1                  ;   ...
  41.           and    cl,7                  ;   ...  (It has to be done this way to
  42.           mov    ah,80h
  43.           ror    ah,cl
  44.  
  45.           mov    dx,03CEh
  46.           mov    al,4
  47.           out    dx,al
  48.           inc    dx
  49.  
  50.           xor    bx,bx
  51.  
  52.           mov    al,0
  53.           out    dx,al
  54.           test   es:[si],ah
  55.           jz     bit1
  56.           or     bl,1
  57. bit1:
  58.           mov    al,1
  59.           out    dx,al
  60.           test   es:[si],ah
  61.           jz     bit2
  62.           or     bl,2
  63. bit2:
  64.           mov    al,2
  65.           out    dx,al
  66.           test   es:[si],ah
  67.           jz     bit3
  68.           or     bl,4
  69. bit3:
  70.           mov    al,3
  71.           out    dx,al
  72.           test   es:[si],ah
  73.           jz     bit4
  74.           or     bl,8
  75. bit4:
  76.           mov    ax,bx
  77.  
  78.           pop    si
  79.           pop    bp
  80.           ret
  81.  
  82. _gprddot  endp
  83.  
  84. _text     ends
  85.           end
  86.