Subversion Repositories Kolibri OS

Rev

Go to most recent revision | 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