Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 1816 → Rev 1817

/programs/media/scrv/build.bat
0,0 → 1,3
del scrv
fasm scrv.asm scrv
kpack scrv
/programs/media/scrv/readme.txt
0,0 → 1,27
 
=========================================
 
ScrV 0.2
 
=========================================
 
Simple program to view ZX Spectrum
screen files.
6912 bytes (*.scr, *.s)
and
6929 bytes (*.$c) files are supported now.
 
Ïðîñòàÿ ïðîãðàììà äëÿ ïðîñìîòðà
ôàéëîâ ýêðàíîâ ZX Spectrum.
Ïîääåðæèâàþòñÿ ôàéëû ðàçìåðîì
6912 áàéò (*.scr, *.s)
è
6929 áàéò (*.$c).
 
=========================================
 
author: Oleksandr Bogomaz
e-mail: albom85@yandex.ru
site: http://albom06.boom.ru/
 
=========================================
/programs/media/scrv/scrv.asm
0,0 → 1,409
 
;=========================================
;
; Simple program to view ZX Spectrum
; screen files.
; 6912 bytes (*.scr, *.s)
; and
; 6929 bytes (*.$c) files are supported now.
 
; Ïðîñòàÿ ïðîãðàììà äëÿ ïðîñìîòðà
; ôàéëîâ ýêðàíîâ ZX Spectrum.
; Ïîääåðæèâàþòñÿ ôàéëû ðàçìåðîì
; 6912 áàéò (*.scr, *.s)
; è
; 6929 áàéò (*.$c).
;
; author: Oleksandr Bogomaz
; e-mail: albom85@yandex.ru
; site: http://albom06.boom.ru/
;
;=========================================
 
use32
org 0
db 'MENUET01'
dd 1
dd _start
dd _end
dd _memory
dd _stack
dd _param
dd 0
 
;=========================================
 
_start:
 
call mem_init
call file_getsize
call file_read
call file_convert
call window_draw
 
_event_wait:
 
mov eax, 10
int 0x40
 
cmp eax, 1
je __repaint_wnd
 
cmp eax, 2
je __key
 
cmp eax, 3
je __button
 
jmp _event_wait
 
__repaint_wnd:
call window_draw
jmp _event_wait
 
 
__key:
mov eax, 2
int 0x40
 
cmp ah, 27
jne _event_wait
 
jmp __end
 
jmp _event_wait
 
__button:
 
mov eax, 17
int 0x40
 
cmp ah, 1
jne _event_wait
 
__end:
call mem_free
 
mov eax, -1
int 0x40
 
 
 
;=========================================
 
window_draw:
mov eax, 12
mov ebx, 1
int 0x40
 
xor eax, eax
mov ebx, 10*65536+290
mov ecx, 10*65536+230
mov edx, 0x34ffffff
mov edi, _app_title
int 0x40
 
mov eax, 65
mov ebx, [dst]
mov ecx, 256*65536 + 192
mov edx, 5*65536 + 5
mov edi, _palette
mov esi, 8
mov ebp, 0
int 0x40
 
mov eax, 12
mov ebx, 2
int 0x40
 
ret
 
;=========================================
 
mem_init:
 
mov eax, 68
mov ebx, 11
int 0x40
 
mov eax, 68
mov ebx, 12
mov ecx, 6144
int 0x40
mov dword [src], eax
 
mov eax, 68
mov ebx, 12
mov ecx, 768
int 0x40
mov dword [atr], eax
 
mov eax, 68
mov ebx, 12
mov ecx, 256*192
int 0x40
mov dword [dst], eax
 
ret
 
;=========================================
 
mem_free:
 
mov eax, 68
mov ebx, 13
mov ecx, [src]
int 0x40
 
mov eax, 68
mov ebx, 13
mov ecx, [atr]
int 0x40
 
mov eax, 68
mov ebx, 13
mov ecx, [dst]
int 0x40
 
ret
 
;=========================================
 
file_read:
 
mov eax, 70
mov ebx, _in_f1
mov ecx, [src]
mov [_in_f1+16], ecx
int 0x40
 
mov eax, 70
mov ebx, _in_f2
mov ecx, [atr]
mov [_in_f2+16], ecx
int 0x40
 
ret
 
;=========================================
 
file_getsize:
 
mov eax, 68
mov ebx, 12
mov ecx, 0x5000
int 0x40
mov dword [tmp], eax
 
mov eax, 70
mov ebx, _in_f0
mov ecx, [tmp]
mov [_in_f0+16], ecx
int 0x40
 
mov [fsize], ebx
 
mov eax, 68
mov ebx, 13
mov ecx, [tmp]
int 0x40
 
cmp [fsize], 6929
jne _ok_size
 
mov dword [_in_f1+4], 17
mov dword [_in_f2+4], 6144+17
 
_ok_size:
 
ret
 
;=========================================
 
file_convert:
 
xor eax, eax
mov [I], eax
mov [J], eax
mov [K], eax
mov [L], eax
mov [M], eax
mov [N], eax
 
__J:
__I:
__K:
__L:
xor ebx, ebx
mov eax, [J]
shl eax, 0x0b ; eax * 2048
add ebx, eax
mov eax, [K]
shl eax, 0x08 ; eax * 256
add ebx, eax
mov eax, [I]
shl eax, 0x05 ; eax * 32
add ebx, eax
add ebx, [L]
add ebx, [src]
 
xor eax, eax
mov ah, [ebx]
mov [C], ah
 
__M:
mov ah, [C]
and ah, 128
shr ah, 7
mov [S], ah
 
xor ebx, ebx
mov eax, [J]
shl eax, 0x08 ; eax * 256
add ebx, eax
mov eax, [I]
shl eax, 0x05 ; eax * 32
add ebx, eax
add ebx, [L]
add ebx, [atr]
 
xor eax, eax
mov ah, [ebx]
mov [A], ah
 
and ah, 64
cmp ah, 64
jne __b0
mov [B], 8
jmp __OK_b
__b0:
mov [B], 0
__OK_b:
 
mov ah, [S]
cmp ah, 0
jne __1
 
mov ah, [A]
shr ah, 3
and ah, 7
add ah, [B]
jmp __OK_col
 
__1:
mov ah, [A]
and ah, 7
add ah, [B]
 
__OK_col:
mov ebx, [dst]
add ebx, [N]
mov [ebx], ah
inc [N]
 
shl [C], 1
 
inc [M]
cmp [M], 8
jne __M
 
mov [M], 0
inc [L]
cmp [L], 32
jne __L
 
mov [L], 0
inc [K]
cmp [K], 8
jne __K
 
mov [K], 0
inc [I]
cmp [I], 8
jne __I
 
mov [I], 0
inc [J]
cmp [J], 3
jne __J
 
 
ret
 
;=========================================
 
_app_title:
db 'ScrV 0.2 by O.Bogomaz', 0
 
_in_f0:
dd 0
dq 0
dd 0x5000
dd 0
db 0
dd _param
 
_in_f1:
dd 0
dq 0
dd 6144
dd 0
db 0
dd _param
 
_in_f2:
dd 0
dq 6144
dd 768
dd 0
db 0
dd _param
 
_palette:
dd 0 ; black
dd 0x000000b0 ; blue
dd 0x00b00000 ; red
dd 0x00b000b0 ; magenta
dd 0x0000b000 ; green
dd 0x0000b0b0 ; cyan
dd 0x00b0b000 ; yellow
dd 0x00b0b0b0 ; gray
dd 0 ; black
dd 0x000000ff ; light blue
dd 0x00ff0000 ; light red
dd 0x00ff00ff ; light magenta
dd 0x0000ff00 ; light green
dd 0x0000ffff ; light cyan
dd 0x00ffff00 ; light yellow
dd 0x00ffffff ; white
 
src dd 0
dst dd 0
atr dd 0
tmp dd 0
 
fsize dd 0
 
I dd 0
J dd 0
K dd 0
L dd 0
M dd 0
N dd 0
 
C db 0
A db 0
B db 0
S db 0
 
_param:
rb 256
 
_end:
 
align 32
rb 2048
_stack:
_memory:
 
;=========================================
/programs/media/scrv
Property changes:
Added: tsvn:logminsize
+5
\ No newline at end of property