home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / grafik / vgakit / util / vgargb.asm < prev    next >
Encoding:
Assembly Source File  |  1991-08-13  |  1.1 KB  |  78 lines

  1.     .MODEL    TPASCAL
  2. ;
  3. ; SETZEN EINES PIXELS R,G,B AUF VGA MIT RASTERUNG
  4. ;
  5. ;  c't 6/91 S. 212
  6. ;
  7.     PUBLIC    RGB_DOT
  8.     .DATA
  9.     EXTRN    RGB_DM : BYTE, RGB_XSIZE : WORD
  10. DATA    ENDS
  11.     .CODE
  12.     .286
  13. ;
  14. ;
  15. DITHCOLOR MACRO COLOR,WIDTH
  16.     LOCAL    F2,F3
  17.     MOV    AL,COLOR
  18.     SHR    AL,2        ; / 4
  19.     MOV    AH,AL
  20.     SHR    AH,6 - WIDTH
  21.     SUB    AH,1
  22.     JNS    F2
  23.     XOR    AH,AH
  24.     JMP    F3
  25. F2:    AND    AL,03FH SHR WIDTH
  26.     IF    (WIDTH - 2) EQ 1
  27.     ADD    AL,AL
  28.     ELSE
  29.     IF    (WIDTH - 2) GE 2
  30.     SHL    AL,WIDTH - 2
  31.     ENDIF
  32.     ENDIF
  33.     CMP    AL,BH    ;???
  34.     JBE    F3
  35.     INC    AH
  36. F3:
  37.     ENDM
  38. ;
  39. ;
  40. RGB_DOT    PROC    FAR X:WORD,Y:WORD,R:BYTE,G:BYTE,B:BYTE
  41.     MOV    AL,BYTE PTR X
  42.     MOV    AH,BYTE PTR Y
  43.     AND    AX,0303H
  44.     SHL    AH,2
  45.     OR    AL,AH
  46.     MOV    BX,OFFSET RGB_DM
  47.     XLAT
  48.     MOV    BH,AL
  49.     DITHCOLOR R,3
  50.     MOV    BL,AH
  51.     DITHCOLOR G,3
  52.     SHL    BL,3
  53.     OR    BL,AH
  54.     DITHCOLOR B,2
  55.     SHL    BL,2
  56.     OR    BL,AH
  57. ; ADRESSE ERRECHNEN
  58.     MOV    AX,0A000H
  59.     MOV    ES,AX
  60.     MOV    AX,Y
  61.     MOV    DX,RGB_XSIZE
  62.     MUL    DX
  63.     ADD    AX,X
  64.     MOV    DI,AX
  65. ; VGA- BANK SELEKTIEREN
  66.     ADC    DX,0
  67.     MOV    AL,DL
  68. ;    OR    AL,40H
  69.     MOV    DX,3CDH
  70.     OUT    DX,AL        ; BANK ADRESSE
  71.     MOV    ES:DI,BL    ; PIXEL SCHREIBEN
  72.     RET
  73. RGB_DOT    ENDP
  74. ;
  75. CODE    ENDS
  76. ;
  77.     END
  78.