home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / t / tel2305s.zip / RG / VGASET.ASM < prev   
Assembly Source File  |  1991-05-15  |  2KB  |  132 lines

  1. ;Microsoft EQU 1
  2. ;Lattice EQU 1
  3. ifndef Microsoft
  4.     ifndef Lattice
  5.         if2
  6.             %out
  7.             %out ERROR: You have to specify "/DMicrosoft" or "/DLattice" on the
  8.             %out        MASM command line to determine the type of assembly.
  9.             %out
  10.         endif
  11.         end
  12.     endif
  13. endif
  14. ;
  15.  
  16. ifdef Microsoft
  17. ;
  18.     .model    large
  19.     .code
  20. X    equ        6
  21.     PUBLIC    _VGAset
  22. else
  23.     include dos.mac
  24.     PSEG
  25.     PUBLIC    VGAset
  26. endif
  27.  
  28. ;NAME:        PIXELADDR12
  29. ;
  30. ;CALLER:    AX = Y-COORDINATE
  31. ;        BX = X-COORDINATE
  32. ;
  33. ;RETURNS:    AH = BITMASK
  34. ;            BX = BYTE OFFSET IN BUFFER
  35. ;            CL = NUMBER OF BITS TO SHIFT LEFT
  36. ;            ES = VIDEO BUFFER SEGMENT
  37. ;
  38. ;
  39. ;
  40. BYTESPERLINE    EQU    80
  41. ORIGINOFFSET    EQU    0
  42. VIDEOBUFFERSEG    EQU    0A000H
  43. PIXELADDR12    PROC    NEAR
  44.     MOV        CL,BL
  45.     PUSH    DX
  46.  
  47.     MOV        DX,BYTESPERLINE
  48.     MUL        DX
  49.  
  50.     POP        DX
  51.     SHR        BX,1
  52.     SHR        BX,1
  53.     SHR        BX,1
  54.     ADD        BX,AX
  55.     ADD        BX,ORIGINOFFSET
  56.  
  57.     MOV        AX,VIDEOBUFFERSEG
  58.     MOV        ES,AX
  59.  
  60.     AND        CL, 7
  61.     XOR        CL, 7
  62.     MOV        AH,    1
  63.     RET
  64.  
  65. PIXELADDR12    ENDP
  66.  
  67.  
  68. ;NAME        VGAset
  69.  
  70. ARGX    EQU    WORD PTR [BP+6]
  71. ARGY    EQU    WORD PTR [BP+8]
  72. ARGN    EQU    BYTE PTR [BP+10]
  73.  
  74. RMWBITS    EQU    00H
  75.  
  76. ifdef Microsoft
  77. _VGAset    PROC    FAR
  78. else
  79. VGAset    PROC    FAR
  80. endif
  81.     PUSH    BP
  82.     MOV    BP,SP
  83.     PUSH    ES
  84.  
  85.     MOV    AX,ARGY
  86.     MOV    BX,ARGX
  87.     CALL PIXELADDR12
  88.     
  89. ;SET GRAPHICS CONTROLLER BIT MASK REGISTER
  90.     SHL    AH,CL
  91.     MOV DX,3CEH
  92.     MOV AL,8
  93.     OUT DX,AX
  94.     
  95. ;SET GRAPHICS CONTROLLER MODE REGISTER
  96.     MOV AX,205H
  97.     OUT DX,AX
  98.     
  99. ;SET DATA ROTATE/FUNCTION SELECT REGISTER
  100.     MOV AH,RMWBITS
  101.     MOV AL,3
  102.     OUT    DX,AX
  103.     
  104. ;SET PIXEL VALUE
  105.     MOV    AL,ES:[BX]
  106.     MOV    AL,ARGN
  107.     MOV    ES:[BX],AL
  108.     
  109. ;RESTORE DEFAULT GRAPHICS CONTROLLER REGISTERS
  110.     MOV    AX,0FF08H
  111.     OUT DX,AX
  112.     MOV AX,0005
  113.     OUT DX,AX
  114.     
  115.     MOV AX,0003
  116.     OUT DX,AX
  117.  
  118.     POP    ES
  119.     MOV SP,BP
  120.     POP BP
  121.     RET
  122. ifdef Microsoft    
  123. _VGAset    ENDP
  124. else
  125. VGAset    ENDP
  126. endif
  127.  
  128. ifdef Lattice
  129.     ENDPS
  130. endif
  131.     END
  132.