home *** CD-ROM | disk | FTP | other *** search
- UNIT VECTK;
-
- INTERFACE
-
- PROCEDURE YMode360x480;
- PROCEDURE YModeTexte;
- PROCEDURE YRemplitEcran(couleur:BYTE);
- PROCEDURE YLigne (x,y,x2,y2:WORD;couleur:BYTE);
- PROCEDURE YAttenteSynchro;
- PROCEDURE PauseSynchro(soixantedixiemes:WORD);
- PROCEDURE VideTamponClavier;
- FUNCTION ToucheAppuyee:BOOLEAN;
-
- IMPLEMENTATION
-
- PROCEDURE YMode360x480;ASSEMBLER;
- ASM
- mov ax, 013h
- int 10h
- mov dx, 03C4h
- mov ax, 0604h
- out dx, ax
- mov ax, 0F02h
- out dx, ax
- mov dx, 03C2h
- mov ax, 0E7h
- out dx, ax
- mov dx, 03D4h
- mov ax, 011h
- out dx, ax
- inc dx
- in al, dx
- and al, 7Fh
- dec dx
- mov cx, ax
- mov ax, 011h
- out dx, ax
- inc dx
- mov cx, ax
- out dx, ax
- dec dx
- {Les 18 registres CRTC du mode 360x480}
- mov ax, 6B00h
- out dx, ax
- mov ax, 5901h
- out dx, ax
- mov ax, 5A02h
- out dx, ax
- mov ax, 8E03h
- out dx, ax
- mov ax, 5E04h
- out dx, ax
- mov ax, 8A05h
- out dx, ax
- mov ax, 0D06h
- out dx, ax
- mov ax, 3E07h
- out dx, ax
- mov ax, 4009h
- out dx, ax
- mov ax, 0EA10h
- out dx, ax
- mov ax, 0DF12h
- out dx, ax
- mov ax, 2D13h
- out dx, ax
- mov ax, 0014h
- out dx, ax
- mov ax, 0E715h
- out dx, ax
- mov ax, 0616h
- out dx, ax
- mov ax, 0E317h
- out dx, ax
- mov ax, 0AC11h
- out dx, ax
- END;
-
-
- PROCEDURE YModeTexte;ASSEMBLER;
- ASM
- mov ax, 03h
- int 10h
- END;
-
-
- PROCEDURE YAttenteSynchro;ASSEMBLER;
- ASM
- mov dx, 03DAh
- @Bcl1:
- in al, dx
- test al, 8
- jnz @Bcl1
- @Bcl2:
- in al, dx
- test al, 8
- jz @Bcl2
- END;
-
-
- PROCEDURE YRemplitEcran(couleur:BYTE);ASSEMBLER;
- ASM
- mov ax, 0A000h
- mov es, ax
- mov dx, 3C4h
- mov ax, 0F02h
- out dx, ax
- xor di, di
- mov cx, 8000h
- cld
- mov al, couleur
- mov ah, al
- repz stosw
- END;
-
-
- PROCEDURE YLigne(x,y,x2,y2:WORD;couleur:BYTE);ASSEMBLER;
- VAR
- IncVert,Inc1,Inc2,Routine:WORD;
- ASM
- mov ax, 0A000h
- mov es, ax
- mov dx, 03C4h
- mov si, 90
- mov cx, x2
- sub cx, x
- jz @@LigneVert
- jns @@L01
- neg cx
- mov bx, x2
- xchg bx, x
- mov x2, bx
- mov bx, y2
- xchg bx, y
- mov y2, bx
- @@L01:
- mov bx, y2
- sub bx, y
- jnz @@Saut
- jmp @@LigneHori
- @@Saut:
- jns @@L03
- neg bx
- neg si
- @@L03:
- mov incvert, si
- mov routine, offset @@PenteB
- cmp bx, cx
- jle @@L04
- mov routine, offset @@PenteH
- xchg bx, cx
- @@L04:
- shl bx, 1
- mov inc1, bx
- sub bx, cx
- mov si, bx
- sub bx, cx
- mov inc2, bx
- push cx
- mov ax, y
- mov bx, x
- mov cl, bl
- push dx
- mov dx, 90
- mul dx
- pop dx
- shr bx, 2
- add bx, ax
- and cl, 3
- mov di, bx
- mov al, 1
- shl al, cl
- mov ah, al
- shl al, 4
- add ah, al
- mov bl, ah
- pop cx
- inc cx
- jmp routine
- @@LigneVert:
- mov ax, y
- mov bx, y2
- mov cx, bx
- sub cx, ax
- jge @@L31
- neg cx
- mov ax, bx
- @@L31:
- inc cx
- mov bx, x
- push cx
- mov cl, bl
- push dx
- mov dx, 90
- mul dx
- pop dx
- shr bx, 2
- add bx, ax
- and cl, 3
- mov ah, 1
- shl ah, cl
- mov al, 02h
- out dx, ax
- pop cx
- mov ax, word ptr [couleur]
- @@L32:
- mov es:[bx], al
- add bx, si
- loop @@L32
- jmp @@Lexit
- @@LigneHori:
- push ds
- mov ax, y
- mov bx, x
- mov cl, bl
- push dx
- mov dx, 90
- mul dx
- pop dx
- shr bx, 2
- add bx, ax
- and cl, 3
- mov di, bx
- mov dl, 00Fh
- shl dl, cl
- mov cx, x2
- and cl, 3
- mov dh, 00Eh
- shl dh, cl
- not dh
- mov ax, x2
- mov bx, x
- shr ax, 2
- shr bx, 2
- mov cx, ax
- sub cx, bx
- mov ax, dx
- mov dx, 03C4h
- mov bx, word ptr [couleur]
- or cx, cx
- jnz @@L42
- and ah, al
- jmp @@L44
- @@L42:
- push ax
- mov ah, al
- mov al, 02h
- out dx, ax
- mov al, bl
- stosb
- dec cx
- @@L43:
- mov ah, 0Fh
- mov al, 02h
- out dx, ax
- mov al, bl
- rep stosb
- pop ax
- @@L44:
- mov al, 02h
- out dx, ax
- mov byte ptr es:[di], bl
- pop ds
- jmp @@Lexit
- @@PenteB:
- mov al, 02h
- mov bh, byte ptr [couleur]
- @@L10:
- mov ah, bl
- @@L11:
- or ah, bl
- rol bl, 1
- jc @@L14
- or si, si
- jns @@L12
- add si, inc1
- loop @@L11
- out dx, ax
- mov es:[di], bh
- jmp @@Lexit
- @@L12:
- add si, inc2
- out dx, ax
- mov es:[di], bh
- add di, incvert
- loop @@L10
- jmp @@Lexit
- @@L14:
- out dx, ax
- mov es:[di], bh
- inc di
- or si, si
- jns @@L15
- add si, inc1
- loop @@L10
- jmp @@Lexit
- @@L15:
- add si, inc2
- add di, incvert
- loop @@L10
- jmp @@Lexit
- @@PenteH:
- mov bx, incvert
- mov al, 02h
- @@L21:
- out dx, ax
- push ax
- mov ax, word ptr [couleur]
- mov es:[di], al
- pop ax
- add di, bx
- @@L22:
- or si, si
- jns @@L23
- add si, inc1
- loop @@L21
- jmp @@Lexit
- @@L23:
- add si, inc2
- rol ah, 1
- adc di, 0
- @@lx21:
- loop @@L21
- @@Lexit:
- END;
-
-
- PROCEDURE PauseSynchro(soixantedixiemes:WORD);
- VAR
- i:WORD;
- BEGIN
- FOR i:=1 TO soixantedixiemes DO
- YAttenteSynchro;
- END;
-
-
- PROCEDURE VideTamponClavier;
- BEGIN
- MemW[$40:$1A]:=MemW[$40:$1C];
- END;
-
-
- FUNCTION ToucheAppuyee:BOOLEAN;ASSEMBLER;
- ASM
- mov ah, 0Bh
- int 21h
- and al, 0FEh
- END;
-
-
- END.