home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / demosrce / hardin / animage.pas next >
Encoding:
Pascal/Delphi Source File  |  1994-08-03  |  4.9 KB  |  265 lines

  1. UNIT ANIMAGE;
  2.  
  3. INTERFACE
  4.  
  5. FUNCTION  Activation_MCGA:Boolean;
  6. PROCEDURE Activation_Texte;
  7. PROCEDURE Attente_Synchro;
  8. PROCEDURE Ecriture_Palette(Var palette;debut,quantite:Word);
  9. PROCEDURE Ecriture_Couleur(couleur,rouge,vert,bleu:Byte);
  10. PROCEDURE Ecriture_Pixel(x,y:Word;couleur:Byte);
  11. PROCEDURE Defilement_Ecran(decalage:Byte);
  12. PROCEDURE Dedoublement_Ecran(ligne:Word);
  13. PROCEDURE Zoom_Vertical(resolution_y:Byte);
  14. PROCEDURE Copie_Bloc_Normal(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  15.                 destination:Word);
  16. PROCEDURE Copie_Bloc_Masque(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  17.                 destination:Word);
  18.  
  19. IMPLEMENTATION
  20.  
  21.  FUNCTION  Activation_MCGA:Boolean;
  22.   BEGIN
  23.     ASM
  24.       MOV   AH, 0
  25.       MOV   AL, 13h
  26.       INT   10h
  27.       MOV   AH, 0Fh
  28.       INT   10h
  29.       CMP   AL, 13h
  30.       JE    @ok
  31.       MOV   AL, 0
  32.       JMP   @fin
  33.      @ok:
  34.       MOV   AL, 1
  35.      @fin:
  36.       MOV   @result, AL
  37.     END;
  38.   END;
  39.  
  40.  PROCEDURE Activation_Texte;ASSEMBLER;
  41.   ASM
  42.     MOV   AH, 0
  43.     MOV   AL, 3
  44.     INT   10h
  45.   END;
  46.  
  47.  PROCEDURE Attente_Synchro;ASSEMBLER;
  48.   ASM
  49.     MOV   DX, 3DAh
  50.    @deb1:
  51.     IN    AL, DX
  52.     TEST  AL, 8
  53.     JNE   @deb1
  54.    @deb2:
  55.     IN    AL, DX
  56.     TEST  AL, 8
  57.     JE    @deb2
  58.   END;
  59.  
  60.  PROCEDURE Ecriture_Palette(VAR palette;debut,quantite:Word);
  61.   BEGIN
  62.     ASM
  63.       PUSH  DS
  64.       LDS   SI, palette
  65.       MOV   DX, 3C8h
  66.       CLD
  67.       MOV   CX, quantite
  68.       MOV   BX, debut
  69.      @deb1:
  70.       MOV   AL, BL
  71.       OUT   DX, AL
  72.       INC   DX
  73.       LODSB
  74.       OUT   DX, AL
  75.       LODSB
  76.       OUT   DX, AL
  77.       LODSB
  78.       OUT   DX, AL
  79.       DEC   DX
  80.       INC   BL
  81.       LOOP  @deb1
  82.       POP   DS
  83.     END;
  84.   END;
  85.  
  86.  PROCEDURE Ecriture_Couleur(couleur,rouge,vert,bleu:Byte);ASSEMBLER;
  87.   ASM
  88.     MOV   DX, 3C8h
  89.     MOV   AL, couleur
  90.     OUT   DX, AL
  91.     INC   DL
  92.     MOV   AL, rouge
  93.     OUT   DX, AL
  94.     MOV   AL, vert
  95.     OUT   DX, AL
  96.     MOV   AL, bleu
  97.     OUT   DX, AL
  98.   END;
  99.  
  100.  PROCEDURE Ecriture_Pixel(x,y:Word;couleur:Byte);ASSEMBLER;
  101.   ASM
  102.     MOV   AX, y
  103.     MOV   BX, x
  104.     XCHG  AH, AL
  105.     ADD   BX, AX
  106.     SHR   AX, 1
  107.     SHR   AX, 1
  108.     ADD   BX, AX
  109.     MOV   AX, $A000
  110.     MOV   ES, AX
  111.     MOV   AL, couleur
  112.     MOV   ES:[BX], AL
  113.   END;
  114.  
  115.  PROCEDURE Defilement_Ecran(decalage:Byte);ASSEMBLER;
  116.   ASM
  117.     MOV   DX, 3D4h
  118.     MOV   AL, 0Dh
  119.     OUT   DX, AL
  120.     INC   DL
  121.     MOV   AL, decalage
  122.     OUT   DX, AL
  123.   END;
  124.  
  125.  PROCEDURE Dedoublement_Ecran(ligne:Word);ASSEMBLER;
  126.   ASM
  127.     PUSH  DS
  128.     MOV   DX, 3D4h
  129.     MOV   AX, ligne
  130.     MOV   BH, AH
  131.     MOV   BL, BH
  132.     AND   BX, 0201h
  133.     MOV   CL, 4
  134.     SHL   BX, CL
  135.     SHL   BH, 1
  136.     MOV   AH, AL
  137.     MOV   AL, 18h
  138.     OUT   DX, AX
  139.     MOV   AL, 7
  140.     OUT   DX, AX
  141.     INC   DL
  142.     IN    AL, DX
  143.     DEC   DL
  144.     MOV   AH, AL
  145.     AND   AH, 11101111b
  146.     OR    AH, BL
  147.     MOV   AL, 7
  148.     OUT   DX, AX
  149.     MOV   AL, 9
  150.     OUT   DX, AL
  151.     INC   DL
  152.     IN    AL, DX
  153.     DEC   DL
  154.     MOV   AH, AL
  155.     AND   AH, 10111111b
  156.     OR    AH, BH
  157.     MOV   AL, 9
  158.     OUT   DX, AX
  159.     POP   DS
  160.   END;
  161.  
  162.  PROCEDURE Zoom_Vertical(resolution_y:Byte);ASSEMBLER;
  163.   ASM
  164.     MOV   DX, 3D4h
  165.     MOV   AL, 09h
  166.     OUT   DX, AL
  167.     INC   DL
  168.     MOV   AL, resolution_y
  169.     OUT   DX, AL
  170.   END;
  171.  
  172.  PROCEDURE Copie_Bloc_Normal(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  173.                 destination:Word);ASSEMBLER;
  174.   ASM
  175.     PUSH  DS
  176.     MOV   DS, origine
  177.     MOV   ES, destination
  178.     MOV   BX, x1
  179.     MOV   AX, y1
  180.     XCHG  AH, AL
  181.     ADD   BX, AX
  182.     SHR   AX, 1
  183.     SHR   AX, 1
  184.     ADD   BX, AX
  185.     MOV   SI, BX
  186.     MOV   BX, x2
  187.     MOV   AX, y2
  188.     XCHG  AH, AL
  189.     ADD   BX, AX
  190.     SHR   AX, 1
  191.     SHR   AX, 1
  192.     ADD   BX, AX
  193.     MOV   DI, BX
  194.     MOV   DL, 0
  195.     MOV   DH, hauteur
  196.     MOV   AX, largeur
  197.     MOV   BX, 320
  198.     SUB   BX, AX
  199.     SHR   AX, 1
  200.     CLD
  201.    @boucle:
  202.     INC   DL
  203.     MOV   CX, AX
  204.     REP   MOVSW
  205.     ADD   SI, BX
  206.     ADD   DI, BX
  207.     CMP   DL, DH
  208.     JNE   @boucle
  209.     POP   DS
  210.   END;
  211.  
  212.  PROCEDURE Copie_Bloc_Masque(x1,y1,largeur:Word;hauteur:Byte;x2,y2,origine,
  213.                 destination:Word);ASSEMBLER;
  214.   ASM
  215.     PUSH  DS
  216.     MOV   DS, origine
  217.     MOV   ES, destination
  218.     MOV   BX, x1
  219.     MOV   AX, y1
  220.     XCHG  AH, AL
  221.     ADD   BX, AX
  222.     SHR   AX, 1
  223.     SHR   AX, 1
  224.     ADD   BX, AX
  225.     MOV   SI, BX
  226.     MOV   BX, x2
  227.     MOV   AX, y2
  228.     XCHG  AH, AL
  229.     ADD   BX, AX
  230.     SHR   AX, 1
  231.     SHR   AX, 1
  232.     ADD   BX, AX
  233.     MOV   DI, BX
  234.     MOV   DX, 0
  235.     MOV   AX, largeur
  236.     MOV   BX, 320
  237.     SUB   BX, AX
  238.     CLD
  239.    @boucle1:
  240.     INC   DH
  241.     MOV   CX, AX
  242.    @boucle2:
  243.     MOV   DL, [SI]
  244.     AND   DL, DL
  245.     JZ    @Suite
  246.     MOVSB
  247.     LOOP  @boucle2
  248.     ADD   SI, BX
  249.     ADD   DI, BX
  250.     CMP   DH, hauteur
  251.     JNE   @boucle1
  252.     JMP   @Fin
  253.    @Suite:
  254.     INC   SI
  255.     INC   DI
  256.     LOOP  @boucle2
  257.     ADD   SI, BX
  258.     ADD   DI, BX
  259.     CMP   DH, hauteur
  260.     JNE   @boucle1
  261.    @Fin:
  262.     POP   DS
  263.   END;
  264.  
  265. END.