+++ /dev/null
-;-----------------------------------------------------------\r
-;\r
-; MXSP.ASM - Set palette function\r
-; Copyright (c) 1993,1994 by Alessandro Scotti\r
-;\r
-;-----------------------------------------------------------\r
-WARN PRO\r
-INCLUDE MODEX.DEF\r
-\r
-PUBLIC mxSetPalette\r
-\r
-MX_TEXT SEGMENT USE16 PARA PUBLIC 'CODE'\r
- ASSUME cs:MX_TEXT, ds:NOTHING, es:NOTHING\r
-\r
-;-----------------------------------------------------------\r
-;\r
-; Updates the VGA palette.\r
-;\r
-; Input:\r
-; Buffer = pointer to palette data (R,G,B)\r
-; Start = index of first color to set\r
-; Count = number of color to set\r
-; Output:\r
-; none\r
-;\r
-mxSetPalette PROC FAR\r
- ARG Count:WORD, \\r
- Start:WORD, \\r
- Buffer:DWORD = ARG_SIZE\r
- ASSUME ds:NOTHING\r
- .enter 0\r
- .push ds, si\r
-\r
- lds si, [Buffer]\r
- mov cx, [Count]\r
- mov ax, [Start]\r
- mov dx, 3C8h ; PEL write address register\r
- out dx, al\r
- inc dx\r
- cld\r
- cli ; Disable interrupts\r
-@@Loop:\r
- lodsb\r
- out dx, al ; Red\r
- lodsb\r
- out dx, al ; Green\r
- lodsb\r
- out dx, al ; Blue\r
- loop @@Loop ; Loop until done\r
- sti ; Enable interrupts\r
-\r
- .pop ds, si\r
- .leave ARG_SIZE\r
-mxSetPalette ENDP\r
-\r
-MX_TEXT ENDS\r
-END\r