home *** CD-ROM | disk | FTP | other *** search
- .MODEL TPASCAL
- ;
- ; SETZEN EINES PIXELS R,G,B AUF VGA MIT RASTERUNG
- ;
- ; c't 6/91 S. 212
- ;
- PUBLIC RGB_DOT
- .DATA
- EXTRN RGB_DM : BYTE, RGB_XSIZE : WORD
- DATA ENDS
- .CODE
- .286
- ;
- ;
- DITHCOLOR MACRO COLOR,WIDTH
- LOCAL F2,F3
- MOV AL,COLOR
- SHR AL,2 ; / 4
- MOV AH,AL
- SHR AH,6 - WIDTH
- SUB AH,1
- JNS F2
- XOR AH,AH
- JMP F3
- F2: AND AL,03FH SHR WIDTH
- IF (WIDTH - 2) EQ 1
- ADD AL,AL
- ELSE
- IF (WIDTH - 2) GE 2
- SHL AL,WIDTH - 2
- ENDIF
- ENDIF
- CMP AL,BH ;???
- JBE F3
- INC AH
- F3:
- ENDM
- ;
- ;
- RGB_DOT PROC FAR X:WORD,Y:WORD,R:BYTE,G:BYTE,B:BYTE
- MOV AL,BYTE PTR X
- MOV AH,BYTE PTR Y
- AND AX,0303H
- SHL AH,2
- OR AL,AH
- MOV BX,OFFSET RGB_DM
- XLAT
- MOV BH,AL
- DITHCOLOR R,3
- MOV BL,AH
- DITHCOLOR G,3
- SHL BL,3
- OR BL,AH
- DITHCOLOR B,2
- SHL BL,2
- OR BL,AH
- ; ADRESSE ERRECHNEN
- MOV AX,0A000H
- MOV ES,AX
- MOV AX,Y
- MOV DX,RGB_XSIZE
- MUL DX
- ADD AX,X
- MOV DI,AX
- ; VGA- BANK SELEKTIEREN
- ADC DX,0
- MOV AL,DL
- ; OR AL,40H
- MOV DX,3CDH
- OUT DX,AL ; BANK ADRESSE
- MOV ES:DI,BL ; PIXEL SCHREIBEN
- RET
- RGB_DOT ENDP
- ;
- CODE ENDS
- ;
- END