Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2224 | leency | 1 | use16 |
2 | org $100 |
||
3 | |||
4 | ;============================================================================== |
||
5 | |||
6 | macro fopen { ; DX = filename |
||
7 | mov ax,$3D00 |
||
8 | int $21 |
||
9 | } |
||
10 | |||
11 | macro fclose { ; BX = file handle |
||
12 | mov ah,$3E |
||
13 | int $21 |
||
14 | } |
||
15 | |||
16 | macro fread { ; BX = file handle, CX = count, DX = buffer |
||
17 | mov ah,$3F |
||
18 | int $21 |
||
19 | } |
||
20 | |||
21 | macro fwrite { ; BX = file handle, CX = count, DX = buffer |
||
22 | mov ah,$40 |
||
23 | int $21 |
||
24 | } |
||
25 | |||
26 | ;============================================================================== |
||
27 | |||
28 | ; /////////////// char.mt /////////////// |
||
29 | |||
30 | mov dx,_font1_in |
||
31 | fopen |
||
32 | jc exit |
||
33 | xchg ax,bx |
||
34 | mov cx,$5000 |
||
35 | mov dx,_buf |
||
36 | fread |
||
37 | jc exit |
||
38 | fclose |
||
39 | ;--------------------------------------- |
||
40 | mov bx,_buf+8 |
||
41 | xor si,si |
||
42 | mov di,_buf |
||
43 | mov cl,1 |
||
44 | xor al,al |
||
45 | cld |
||
46 | @@: |
||
47 | cmp byte[bx+si],$20 |
||
48 | je .sp |
||
49 | or al,cl |
||
50 | .sp: |
||
51 | inc si |
||
52 | shl cl,1 |
||
53 | cmp cl,00100000b |
||
54 | jne @b |
||
55 | mov cl,1 |
||
56 | stosb |
||
57 | xor al,al |
||
58 | add si,3 |
||
59 | cmp si,8*9 |
||
60 | jb @b |
||
61 | xor si,si |
||
62 | add bx,8*10 |
||
63 | cmp di,_buf+$900 |
||
64 | jb @b |
||
65 | ;--------------------------------------- |
||
66 | mov dx,_font1_out |
||
67 | xor cx,cx |
||
68 | mov ah,$3C ; create |
||
69 | int $21 |
||
70 | jc exit |
||
71 | xchg ax,bx |
||
72 | mov cx,$900 |
||
73 | mov dx,_buf |
||
74 | fwrite |
||
75 | jc exit |
||
76 | fclose |
||
77 | |||
78 | ; /////////////// char2.mt /////////////// |
||
79 | |||
80 | mov dx,_font2_in |
||
81 | fopen |
||
82 | jc exit |
||
83 | xchg ax,bx |
||
84 | mov cx,$6500 |
||
85 | mov dx,_buf |
||
86 | fread |
||
87 | jc exit |
||
88 | fclose |
||
89 | ;--------------------------------------- |
||
90 | mov bx,_buf+10 |
||
91 | mov di,_buf |
||
92 | cld |
||
93 | newchar: |
||
94 | ; width of character |
||
95 | mov al, 8 |
||
96 | cmp byte [bx-4], ' ' |
||
97 | jz @f |
||
98 | mov al, [bx-4] |
||
99 | sub al, '0'-1 |
||
100 | @@: |
||
101 | stosb |
||
102 | ; character itself |
||
103 | xor si, si |
||
104 | charloop: |
||
105 | xor al, al |
||
106 | mov cl, 1 |
||
107 | @@: |
||
108 | cmp byte[bx+si],$20 |
||
109 | je .sp2 |
||
110 | or al,cl |
||
111 | .sp2: |
||
112 | inc si |
||
113 | shl cl,1 |
||
114 | cmp cl,10000000b |
||
115 | jne @b |
||
116 | stosb |
||
117 | add si,3 |
||
118 | cmp si,10*9 |
||
119 | jb charloop |
||
120 | add bx,10*10 |
||
121 | cmp di,_buf+$A00 |
||
122 | jb newchar |
||
123 | ;--------------------------------------- |
||
124 | mov dx,_font2_out |
||
125 | xor cx,cx |
||
126 | mov ah,$3C ; create |
||
127 | int $21 |
||
128 | jc exit |
||
129 | xchg ax,bx |
||
130 | mov cx,$A00 |
||
131 | mov dx,_buf |
||
132 | fwrite |
||
133 | jc exit |
||
134 | fclose |
||
135 | |||
136 | exit: |
||
137 | ret |
||
138 | |||
139 | ;============================================================================== |
||
140 | |||
141 | _font1_in db 'char.txt',0 |
||
142 | _font1_out db 'char.mt',0 |
||
143 | _font2_in db 'char2.txt',0 |
||
144 | _font2_out db 'char2.mt',0 |
||
145 | |||
146 | _buf: rb $6500 |