home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / PMPAL.ZIP / OS2PAL.ASM next >
Assembly Source File  |  1989-12-14  |  3KB  |  113 lines

  1.                 .model large,pascal
  2.                 .code  PALETTE
  3.                 .286
  4. readpal:
  5.                 mov     dx,3DAh
  6.                 cli
  7.                 in      al,dx
  8.                 push    dx
  9.                 mov     dl,0C0h
  10.                 mov     al,bl   ; pal register
  11.                 out     dx,al
  12.                 jmp     yyyy
  13. yyyy:
  14.                 inc     dx
  15.                 in      al,dx
  16.                 xor     ah,ah
  17.                 mov     si,ax
  18.                 pop     dx
  19.                 in      al,dx
  20.                 mov     dl,0C0h
  21.                 mov     al,20h
  22.                 out     dx,al
  23.                 sti
  24.                 ret
  25.  
  26. SETPAL_EGA      proc    near
  27.                 push    bp
  28.                 mov     bp,sp
  29.                 mov     bx,[bp+8]       ; color value
  30.                 mov     cx,[bp+6]       ; palette
  31.                 mov     dx,3DAh
  32.                 push    dx
  33.  
  34.                 cli
  35.                 in      al,dx
  36.                 mov     dl,0C0h
  37.                 mov     al,bl
  38.                 out     dx,al
  39.                 mov     al,cl
  40.                 out     dx,al
  41.                 pop     dx
  42.                 in      al,dx
  43.                 mov     dl,0C0h
  44.                 mov     al,20h
  45.                 out     dx,al
  46.                 sti
  47.  
  48.                 pop     bp
  49.                 retf    4
  50. SETPAL_EGA      endp
  51.  
  52. SETPAL_VGA      proc    near
  53.                 push    bp
  54.                 mov     bp,sp
  55.                 push    si
  56.  
  57.  
  58.                 mov     bx,word ptr [bp+10]     ; color value to remap
  59.  
  60.                 test    byte ptr [bp+9], 1      ; 256 colors mode ?
  61.                 jnz     noreadpal
  62.                 call    readpal
  63.                 mov     bx,si
  64. noreadpal:
  65.                 mov     dh,byte ptr [bp+ 8]     ; red 
  66.                 mov     ch,byte ptr [bp+ 7]     ; green
  67.                 mov     cl,byte ptr [bp+ 6]     ; blue
  68.  
  69.                 shr     dh,2
  70.                 shr     ch,2
  71.                 shr     cl,2
  72.  
  73.                 push    cx
  74.                 push    dx
  75.               jmp okay
  76.                 xor     cx,cx
  77. loop1:          mov     dx,3DAh
  78.                 in      al,dx
  79.                 and     al,8
  80.                 jnz     okay
  81.                 loop    loop1
  82. okay:
  83.                 pop     dx
  84.                 pop     cx
  85.                 mov     ah,dh
  86.  
  87.                 mov     al,bl
  88.                 mov     dx,3C8h         ; palette register
  89.                 pushf
  90.                 cli
  91.                 out     dx,al           ; palette register number
  92.                 inc     dx
  93.                 mov     al,ah
  94.                 out     dx,al           ; update red register
  95.                 mov     al,ch
  96.                 out     dx,al           ; update green register
  97.                 mov     al,cl
  98.                 out     dx,al           ; update blue register
  99.                 sti
  100.                 popf
  101.  
  102.                 jmp     retrn
  103.  
  104. retrn:
  105.                 mov     ax,si
  106.                 xor     ah,ah
  107.                 pop     si
  108.                 pop     bp
  109.                 retf    6
  110. SETPAL_VGA      endp
  111.                 end
  112.  
  113.