Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1817 Albom 1
 
2
;
3
; Simple program to view ZX Spectrum
4
; screen files.
5
; 6912 bytes (*.scr, *.s)
6
; and
7
; 6929 bytes (*.$c) files are supported now.
8
9
 
10
; файлов экранов ZX Spectrum.
11
; Поддерживаются файлы размером
12
; 6912 байт (*.scr, *.s)
13
; и
14
; 6929 байт (*.$c).
15
;
16
; author: Oleksandr Bogomaz
17
; e-mail: albom85@yandex.ru
18
; site: http://albom06.boom.ru/
19
;
20
;=========================================
21
22
 
23
org	0
24
db	'MENUET01'
25
dd	1
26
dd	_start
27
dd	_end
28
dd	_memory
29
dd	_stack
30
dd	_param
31
dd	0
32
33
 
34
35
 
36
37
 
38
call	file_getsize
39
call	file_read
40
call	file_convert
41
call	window_draw
42
43
 
44
45
 
46
int	0x40
47
48
 
49
je	__repaint_wnd
50
51
 
52
je    __key
53
54
 
55
je    __button
56
57
 
58
59
 
60
call	window_draw
61
jmp	_event_wait
62
63
 
64
 
65
mov	eax, 2
66
int	0x40
67
68
 
69
jne	_event_wait
70
71
 
72
73
 
74
75
 
76
77
 
78
int	0x40
79
80
 
81
jne	_event_wait
82
83
 
84
call	mem_free
85
86
 
87
int	0x40
88
89
 
90
 
91
 
92
93
 
94
mov	eax, 12
95
mov	ebx, 1
96
int	0x40
97
98
 
99
mov	ebx, 10*65536+290
100
mov	ecx, 10*65536+230
101
mov	edx, 0x34ffffff
102
mov	edi, _app_title
103
int	0x40
104
105
 
106
mov	ebx, [dst]
107
mov	ecx, 256*65536 + 192
108
mov	edx, 5*65536 + 5
109
mov	edi, _palette
110
mov	esi, 8
111
mov	ebp, 0
112
int    0x40
113
114
 
115
mov	ebx, 2
116
int	0x40
117
118
 
119
120
 
121
122
 
123
124
 
125
mov	ebx, 11
126
int	0x40
127
128
 
129
mov	ebx, 12
130
mov	ecx, 6144
131
int	0x40
132
mov	dword [src], eax
133
134
 
135
mov	ebx, 12
136
mov	ecx, 768
137
int	0x40
138
mov	dword [atr], eax
139
140
 
141
mov	ebx, 12
142
mov	ecx, 256*192
143
int	0x40
144
mov	dword [dst], eax
145
146
 
147
148
 
149
150
 
151
152
 
153
mov	ebx, 13
154
mov	ecx, [src]
155
int	0x40
156
157
 
158
mov	ebx, 13
159
mov	ecx, [atr]
160
int	0x40
161
162
 
163
mov	ebx, 13
164
mov	ecx, [dst]
165
int	0x40
166
167
 
168
169
 
170
171
 
172
173
 
174
mov	ebx, _in_f1
175
mov	ecx, [src]
176
mov	[_in_f1+16], ecx
177
int	0x40
178
179
 
180
mov	ebx, _in_f2
181
mov	ecx, [atr]
182
mov	[_in_f2+16], ecx
183
int	0x40
184
185
 
186
187
 
188
189
 
190
191
 
192
mov	ebx, 12
193
mov	ecx, 0x5000
194
int	0x40
195
mov	dword [tmp], eax
196
197
 
198
mov	ebx, _in_f0
199
mov	ecx, [tmp]
200
mov	[_in_f0+16], ecx
201
int	0x40
202
203
 
204
205
 
206
mov	ebx, 13
207
mov	ecx, [tmp]
208
int	0x40
209
210
 
211
jne	_ok_size
212
213
 
214
mov	dword [_in_f2+4], 6144+17
215
216
 
217
218
 
219
220
 
221
222
 
223
224
 
225
mov	[I], eax
226
mov	[J], eax
227
mov	[K], eax
228
mov	[L], eax
229
mov	[M], eax
230
mov	[N], eax
231
232
 
233
__I:
234
__K:
235
__L:
236
	xor	ebx, ebx
237
	mov	eax, [J]
238
	shl	eax, 0x0b ; eax * 2048
239
	add	ebx, eax
240
	mov	eax, [K]
241
	shl	eax, 0x08 ; eax * 256
242
	add	ebx, eax
243
	mov	eax, [I]
244
	shl	eax, 0x05 ; eax * 32
245
	add	ebx, eax
246
	add	ebx, [L]
247
	add	ebx, [src]
248
249
 
250
	mov	ah, [ebx]
251
	mov	[C], ah
252
253
 
254
		mov	ah, [C]
255
		and	ah, 128
256
		shr	ah, 7
257
		mov	[S], ah
258
259
 
260
		mov	eax, [J]
261
		shl	eax, 0x08 ; eax * 256
262
		add	ebx, eax
263
		mov	eax, [I]
264
		shl	eax, 0x05 ; eax * 32
265
		add	ebx, eax
266
		add	ebx, [L]
267
		add	ebx, [atr]
268
269
 
270
		mov	ah, [ebx]
271
		mov	[A], ah
272
273
 
274
		cmp	ah, 64
275
		jne	__b0
276
		mov	[B], 8
277
		jmp	__OK_b
278
		__b0:
279
		mov	[B], 0
280
		__OK_b:
281
282
 
283
		cmp	ah, 0
284
		jne	__1
285
286
 
287
		shr	ah, 3
288
		and	ah, 7
289
		add	ah, [B]
290
		jmp	__OK_col
291
292
 
293
		mov	ah, [A]
294
		and	ah, 7
295
		add	ah, [B]
296
297
 
298
		mov	ebx, [dst]
299
		add	ebx, [N]
300
		mov	[ebx], ah
301
		inc	[N]
302
303
 
304
305
 
306
		cmp	[M], 8
307
		jne	__M
308
309
 
310
		inc	[L]
311
		cmp	[L], 32
312
		jne	__L
313
314
 
315
		inc	[K]
316
		cmp	[K], 8
317
		jne	__K
318
319
 
320
		inc	[I]
321
		cmp	[I], 8
322
		jne	__I
323
324
 
325
		inc	[J]
326
		cmp	[J], 3
327
		jne	__J
328
329
 
330
 
331
332
 
333
334
 
335
db 'ScrV 0.2 by O.Bogomaz', 0
336
337
 
338
dd	0
339
dq	0
340
dd	0x5000
341
dd	0
342
db	0
343
dd	_param
344
345
 
346
dd	0
347
dq	0
348
dd	6144
349
dd	0
350
db	0
351
dd	_param
352
353
 
354
dd	0
355
dq	6144
356
dd	768
357
dd	0
358
db	0
359
dd	_param
360
361
 
362
dd	0		; black
363
dd	0x000000b0	; blue
364
dd	0x00b00000	; red
365
dd	0x00b000b0	; magenta
366
dd	0x0000b000	; green
367
dd	0x0000b0b0	; cyan
368
dd	0x00b0b000	; yellow
369
dd	0x00b0b0b0	; gray
370
dd	0		; black
371
dd	0x000000ff	; light blue
372
dd	0x00ff0000	; light red
373
dd	0x00ff00ff	; light magenta
374
dd	0x0000ff00	; light green
375
dd	0x0000ffff	; light cyan
376
dd	0x00ffff00	; light yellow
377
dd	0x00ffffff	; white
378
379
 
380
dst	dd	0
381
atr	dd	0
382
tmp	dd	0
383
384
 
385
386
 
387
J	dd	0
388
K	dd	0
389
L	dd	0
390
M	dd	0
391
N	dd	0
392
393
 
394
A	db	0
395
B	db	0
396
S	db	0
397
398
 
399
rb 256
400
401
 
402
403
 
404
rb 2048
405
_stack:
406
_memory:
407
408
 
409