-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathWEPutChG.Inc
73 lines (68 loc) · 1.46 KB
/
WEPutChG.Inc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
{\Source\Chantal\WEPutChG.Inc}
{ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÜ
³ Proc‚dure WEPutChrGattr Û
ÀÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ
Description
ÍÍÍÍÍÍÍÍÍÍÍ
Cette proc‚dure ‚crit un caractŠre en format d'Attribut GAT … l'int‚rieur
d'une fenˆtre de dialogue ®WE¯.
}
Procedure WEPutChrGAttr(Var Q:Window;Chr:Char;GAttr:Byte);
{$IFDEF FLAT386}
Begin
If(Q.X>Q.MaxX-1)or(Q.Y>Q.MaxY)Then Exit;
PutCharGAttr(WEGetRealX(Q),WEGetRealY(Q),Chr,Q.CurrColor,GAttr);
Inc(Q.X);
If GAttr and$10=$10Then Inc(Q.X)
End;
{$ELSE}
Assembler;ASM
{If(Q.X>Q.MaxX-1)or(Q.Y>Q.MaxY)Then Exit;}
{PutCharGAttr(WEGetRealX(Q),WEGetRealY(Q),Chr,Q.CurrColor,GAttr);}
{Inc(Q.X);}
{If GAttr and$10=$10Then Inc(Q.X)}
LES DI,Q
MOV AX,Word Ptr ES:[DI].Window.X
MOV BX,Word Ptr ES:[DI].Window.MaxX
DEC BX
CMP AL,BL
JA @End
CMP AH,BH
JA @End
CALL AsmWEGetReal
INC ES:[DI].Window.X
TEST GAttr,10h
JZ @1
INC ES:[DI].Window.X
@1:
CMP HoleMode,True
JNE @Run
PUSH AX
XCHG CX,AX
CALL NmXTxts
MUL CH
XOR CH,CH
ADD AX,CX
LES DI,Hole
ADD DI,AX
MOV AL,0
SCASB
POP AX
JNE @End
LES DI,Q
@Run:
PUSH AX
MOV AL,AH
PUSH AX
{ INC ES:[DI].Wins.X
TEST GAttr,10h
JZ @1
INC ES:[DI].Wins.X
@1:}
PUSH Word Ptr Chr
PUSH Word Ptr ES:[DI].Window.CurrColor
PUSH Word Ptr GAttr
CALL PutCharGAttr
@End:
END;
{$ENDIF}