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 / EGASET.ASM next >
Assembly Source File  |  1991-05-15  |  2KB  |  130 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.     PUBLIC    _EGAset
  21. else
  22.     PSEG
  23.     PUBLIC    EGAset
  24. endif
  25.  
  26. ;NAME:        PIXELADDR10
  27. ;
  28. ;CALLER:    AX = Y-COORDINATE
  29. ;        BX = X-COORDINATE
  30. ;
  31. ;RETURNS:    AH = BITMASK
  32. ;            BX = BYTE OFFSET IN BUFFER
  33. ;            CL = NUMBER OF BITS TO SHIFT LEFT
  34. ;            ES = VIDEO BUFFER SEGMENT
  35. ;
  36. ;
  37. ;
  38. BYTESPERLINE    EQU    80
  39. ORIGINOFFSET    EQU    0
  40. VIDEOBUFFERSEG    EQU    0A000H
  41. PIXELADDR10    PROC    NEAR
  42.     MOV        CL,BL
  43.     PUSH    DX
  44.  
  45.     MOV        DX,BYTESPERLINE
  46.     MUL        DX
  47.  
  48.     POP        DX
  49.     SHR        BX,1
  50.     SHR        BX,1
  51.     SHR        BX,1
  52.     ADD        BX,AX
  53.     ADD        BX,ORIGINOFFSET
  54.  
  55.     MOV        AX,VIDEOBUFFERSEG
  56.     MOV        ES,AX
  57.  
  58.     AND        CL, 7
  59.     XOR        CL, 7
  60.     MOV        AH,    1
  61.     RET
  62.  
  63. PIXELADDR10    ENDP
  64.  
  65.  
  66. ;NAME        EGAset
  67.  
  68. ARGX    EQU    WORD PTR [BP+6]
  69. ARGY    EQU    WORD PTR [BP+8]
  70. ARGN    EQU    BYTE PTR [BP+10]
  71.  
  72. RMWBITS    EQU    00H
  73.  
  74. ifdef Microsoft
  75. _EGAset    PROC    FAR
  76. else
  77. EGAset    PROC    FAR
  78. endif
  79.     PUSH    BP
  80.     MOV    BP,SP
  81.     PUSH    ES
  82.  
  83.     MOV    AX,ARGY
  84.     MOV    BX,ARGX
  85.     CALL PIXELADDR10
  86.     
  87. ;SET GRAPHICS CONTROLLER BIT MASK REGISTER
  88.     SHL    AH,CL
  89.     MOV DX,3CEH
  90.     MOV AL,8
  91.     OUT DX,AX
  92.     
  93. ;SET GRAPHICS CONTROLLER MODE REGISTER
  94.     MOV AX,205H
  95.     OUT DX,AX
  96.     
  97. ;SET DATA ROTATE/FUNCTION SELECT REGISTER
  98.     MOV AH,RMWBITS
  99.     MOV AL,3
  100.     OUT    DX,AX
  101.     
  102. ;SET PIXEL VALUE
  103.     MOV    AL,ES:[BX]
  104.     MOV    AL,ARGN
  105.     MOV    ES:[BX],AL
  106.     
  107. ;RESTORE DEFAULT GRAPHICS CONTROLLER REGISTERS
  108.     MOV    AX,0FF08H
  109.     OUT DX,AX
  110.     MOV AX,0005
  111.     OUT DX,AX
  112.     
  113.     MOV AX,0003
  114.     OUT DX,AX
  115.  
  116.     POP    ES
  117.     MOV SP,BP
  118.     POP BP
  119.     RET
  120. ifdef Microsoft    
  121. _EGAset    ENDP
  122. else
  123. EGAset    ENDP
  124. endif
  125.  
  126. ifdef Lattice
  127.     ENDPS
  128. endif
  129.     END
  130.