home *** CD-ROM | disk | FTP | other *** search
/ Dr. CD ROM (Annual Premium Edition) / premium.zip / premium / DOSGRAPH / MASWED.ZIP / SPIX.ASM < prev    next >
Assembly Source File  |  1992-07-15  |  2KB  |  72 lines

  1. ;SPIX.ASM
  2. ;Program för att skriva en pixel på skärmen i 16-färgers lägen
  3. ;640*480, 800*600 och 1024*768
  4. ;TB syntax:
  5. ;   call    plot    (column%,x%,y%,col%)
  6. ;   sub plot    inline
  7. ;       $inline "spix.bin"
  8. ;   end sub     
  9.  
  10. .286
  11. pixseg  equ 0A000h      ;segment för displayminnet
  12. col equ 6               ;färg
  13. y   equ 10              ;y-koordinat
  14. x   equ 14              ;x-koordinat
  15. column  equ 18          ;antal columner (byte) bildbredd
  16.  
  17. code segment
  18.     assume  cs:code
  19.     
  20.     push    bp          ;save base pointer
  21.     mov bp,sp           ;move stack pointer to bp
  22.     push    ds
  23.  
  24.     mov dx,3CEh     
  25.     mov ax,0F01h        ;alla färgplan till
  26.     out dx,ax           ;skriv Fh till enable set/reset reg
  27.  
  28.     mov al,0        
  29.     lds di,[bp+col] 
  30.     mov ah,byte ptr ds:[di] 
  31.     out dx,ax           ;skriv col till set/reset reg
  32.  
  33.     lds di,[bp+x]
  34.     mov ax,ds:[di]      ;ladda x-koordinaten
  35.     mov cx,ax           ;spara x i cx
  36.     shr ax,3            ;x1=x/8
  37.     mov bx,ax           ;spara x1 i bx
  38.     and cx,7            ;isolera 3 lägsta bitar i cl
  39.     mov ah,128          ;1 i MSB
  40.     ror ah,cl           ;rotera höger cl steg
  41.     mov al,8        
  42.     out dx,ax           ;skriv mask till bit mask reg
  43.  
  44.     lds di,[bp+y]
  45.     mov ax,ds:[di]      ;ladda y-koordinaten
  46. ;   mov cx,ax           ;spara y i cx
  47. ;   and ax,511          ;isolera bit 0-7, y'=y mod 512
  48.     lds di,[bp+column]
  49.     mul ds:[di]         ;column*y'  
  50.     shl dx,12           ;1000h om dx=1 (>64k vid mul)
  51.     add ax,bx           ;column*y+x1
  52.     mov si,ax           ;offset 
  53.  
  54.     mov ax,pixseg   
  55.     add ax,dx           ;addera 1000h om adr>64k
  56.     mov ds,ax           ;segment
  57.     mov bl,ds:si        ;dummy read
  58.     mov ds:si,al        ;dummy write
  59.  
  60.     mov dx,3CEh         ;återställ vissa register
  61.     mov ax,0FF08h       ;återställ med FF   
  62.     out dx,ax           ;skriv till bit mask reg
  63.  
  64.     mov ax,0001h        ;återställ med 0
  65.     out dx,ax           ;skriv till enable set/reset reg
  66.  
  67.     pop ds
  68.     pop bp
  69.  
  70. code ends
  71. end
  72.