home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / grafik / vgakit / vgakit / point.asm < prev    next >
Encoding:
Assembly Source File  |  1991-10-14  |  2.7 KB  |  149 lines

  1.  
  2.     include    model.h
  3.  
  4. ;
  5. ;    VGAKIT Version 3.4
  6. ;
  7. ;    Copyright 1988,89,90 John Bridges
  8. ;    Free for use in commercial, shareware or freeware applications
  9. ;
  10. ;    POINT.ASM
  11. ;
  12. ;
  13. .data
  14.  
  15.     extrn    curbk:word
  16.     EXTRN    XWID:WORD,YWID:WORD
  17.     EXTRN    MINX:WORD,MINY:WORD
  18.     extrn    maxx:word,maxy:word
  19.  
  20. .code
  21.  
  22.     extrn    newbank:proc
  23.  
  24.     public    point,XPOINT
  25.     public    point13x,XPOINT13X
  26.  
  27. point    proc    FAR xpos:word,ypos:word,color:word
  28.     mov    bx,[xpos]
  29.     mov    ax,[ypos]
  30.     mov    dx,[XWID]
  31.     cmp    bx,[MINX]
  32.     jl    nope1
  33.     cmp    bx,DX        ;[XWID]
  34.     jge    nope1
  35.     cmp    ax,[MINY]
  36.     jl    nope1
  37.     cmp    ax,[YWID]
  38.     jge    nope1
  39.     mul    dx            ;640 dots wide in most cases
  40.     add    bx,ax
  41.     adc    dx,0
  42.     mov    ax,dx
  43.     cmp    ax,[curbk]
  44.     jz    nonew
  45.     PUSH    AX
  46.     call    newbank            ;switch banks if a new bank entered
  47. nonew:    mov    ax,0a000h        ;setup screen segment A000
  48.     mov    es,ax
  49.     mov    al,byte ptr [color]    ;get color of pixel to plot
  50.     mov    es:[bx],al
  51. nope1:    ret
  52. point    endp
  53.  
  54. Xpoint    proc    FAR xpos:word,ypos:word,color:word
  55.     mov    bx,[xpos]
  56.     mov    ax,[ypos]
  57.     mov    dx,[XWID]
  58.     cmp    bx,[MINX]
  59.     jl    Xnope1
  60.     cmp    bx,DX        ;[MAXX]
  61.     jge    Xnope1
  62.     cmp    ax,[MINY]
  63.     jl    Xnope1
  64.     cmp    ax,[YWID]
  65.     jge    Xnope1
  66.     mul    dx            ;640 dots wide in most cases
  67.     add    bx,ax
  68.     adc    dx,0
  69.     mov    ax,dx
  70.     cmp    ax,[curbk]
  71.     jz    Xnonew
  72.     PUSH    AX
  73.     call    newbank            ;switch banks if a new bank entered
  74. Xnonew:    mov    ax,0a000h        ;setup screen segment A000
  75.     mov    es,ax
  76.     mov    al,byte ptr [color]    ;get color of pixel to plot
  77.     XOR    es:[bx],al
  78. Xnope1:    ret
  79. Xpoint    endp
  80.  
  81. point13x proc    FAR xpos:word,ypos:word,color:word
  82.     mov    bx,[xpos]
  83.     mov    ax,[ypos]
  84.     mov    dx,[XWID]
  85.     cmp    bx,[MINX]
  86.     jl    nope2
  87.     cmp    bx,[MAXX]
  88.     jge    nope2
  89.     cmp    ax,[MINY]
  90.     jl    nope2
  91.     cmp    ax,[maxy]
  92.     jge    nope2
  93.     shr    dx,1
  94.     shr    dx,1
  95.     mul    dx        ;360 dots wide (for 360x480 mode)
  96.     mov    cx,bx
  97.     shr    bx,1
  98.     shr    bx,1
  99.     add    bx,ax
  100.     mov    ax,102h    
  101.     and    cl,3
  102.     shl    ah,cl            ;create bit plane mask
  103.     mov    dx,3c4h
  104.     out    dx,ax            ;set EGA bit plane mask register
  105.     mov    ax,0a000h        ;setup screen segment A000
  106.     mov    es,ax
  107.     mov    al,byte ptr [color]    ;get color of pixel to plot
  108.     mov    es:[bx],al
  109. nope2:    ret
  110. point13x endp
  111.  
  112. xpoint13x proc    FAR xpos:word,ypos:word,color:word
  113.     mov    bx,[xpos]
  114.     mov    ax,[ypos]
  115.     mov    dx,[XWID]
  116.     cmp    bx,[MINX]    ;0
  117.     jl    nope4
  118.     cmp    bx,[MAXX]    ;dx
  119.     jge    nope4
  120.     cmp    ax,[MINY]    ;0
  121.     jl    nope4
  122.     cmp    ax,[YWID]    ;[maxy]
  123.     jge    nope4
  124.     shr    dx,1
  125.     shr    dx,1
  126.     mul    dx        ;360 dots wide (for 360x480 mode)
  127.     mov    cx,bx
  128.     shr    bx,1
  129.     shr    bx,1
  130.     add    bx,ax
  131.     mov    ax,102h    
  132.     and    cl,3
  133.     shl    ah,cl            ;create bit plane mask
  134.     mov    dx,3c4h
  135.     out    dx,ax            ;set EGA bit plane mask register
  136.     mov    dl,0ceh
  137.     mov    al,4
  138.     mov    ah,cl
  139.     out    dx,ax            ;set EGA bit plane read regsiter
  140.     mov    ax,0a000h        ;setup screen segment A000
  141.     mov    es,ax
  142.     mov    al,byte ptr [color]    ;get color of pixel to plot
  143.     xor    es:[bx],al
  144. nope4:    ret
  145. xpoint13x endp
  146.  
  147.     end
  148.  
  149.