forked from KolibriOS/kolibrios
3eda462807
Programs: fasm updated to 1.67.14, small fixes in desktop, stackcfg, calc, board, pipes, freecell, big cleanup of unused programs, added some applications from 0.6.3.0 distr... git-svn-id: svn://kolibrios.org@205 a494cfbc-eb01-0410-851d-a64ba20cac60
213 lines
4.5 KiB
NASM
213 lines
4.5 KiB
NASM
;
|
||
; Save Ramdisk to HD and FD
|
||
; Mario79 2005
|
||
; Compile with FASM for Menuet
|
||
;
|
||
|
||
include 'lang.inc'
|
||
include 'macros.inc'
|
||
|
||
appname equ 'RDsave '
|
||
version equ '1.1'
|
||
|
||
use32
|
||
org 0x0
|
||
|
||
db 'MENUET01' ; 8 byte id
|
||
dd 0x01 ; header version
|
||
dd START ; start of code
|
||
dd I_END ; size of image
|
||
dd 0x1000 ; memory for app
|
||
dd 0x1000 ; esp
|
||
dd 0x0 , 0x0 ; I_Param , I_Icon
|
||
|
||
|
||
;******************************************************************************
|
||
|
||
|
||
START: ; start of execution
|
||
xor eax,eax
|
||
mov edi,bootpath
|
||
mov ecx,128
|
||
rep stosd
|
||
|
||
mcall 6,filename,0,-1,bootpath
|
||
|
||
mov esi,bootpath+1
|
||
mov cx,512
|
||
start_search:
|
||
lodsb
|
||
cmp al,"'"
|
||
jz set_end_path
|
||
dec cx
|
||
cmp cx,0
|
||
ja start_search
|
||
set_end_path:
|
||
mov [esi-1],byte 0
|
||
|
||
mov eax,40
|
||
mov ebx,101b
|
||
int 0x40
|
||
|
||
red:
|
||
call draw_window
|
||
|
||
still:
|
||
mov eax, 10 ; wait here for event
|
||
int 0x40
|
||
|
||
dec eax ; redraw request ?
|
||
je red
|
||
; dec eax
|
||
; dec eax ; button in buffer ?
|
||
; je button
|
||
|
||
|
||
button: ; button
|
||
mov eax,17 ; get id
|
||
int 0x40
|
||
cmp ah,2
|
||
jne ah_3
|
||
mcall 18,6,1
|
||
jmp red
|
||
ah_3:
|
||
cmp ah,3
|
||
jne ah_4
|
||
mcall 18,6,2
|
||
jmp red
|
||
ah_4:
|
||
cmp ah,4
|
||
jne ah_5
|
||
mcall 18,6,3,bootpath+1
|
||
jmp red
|
||
ah_5:
|
||
cmp ah,5
|
||
jne ah_6
|
||
mcall 16,1
|
||
jmp red
|
||
ah_6:
|
||
cmp ah,6
|
||
jne ah_1
|
||
mcall 16,2
|
||
jmp red
|
||
|
||
ah_1:
|
||
cmp ah,1
|
||
je exit
|
||
jmp still
|
||
|
||
exit:
|
||
or eax,-1 ; close this program
|
||
int 0x40
|
||
|
||
|
||
; *********************************************
|
||
; ******* WINDOW DEFINITIONS AND DRAW ********
|
||
; *********************************************
|
||
|
||
draw_window:
|
||
|
||
mov eax,48
|
||
mov ebx,3
|
||
mov ecx,sc
|
||
mov edx,sizeof.system_colors
|
||
int 0x40
|
||
|
||
mov eax, 12 ; function 12:tell os about windowdraw
|
||
mov ebx, 1 ; 1, start of draw
|
||
int 0x40
|
||
; DRAW WINDOW
|
||
mov eax, 0 ; function 0 : define and draw window
|
||
mov ebx, 200*65536+230 ; [x start] *65536 + [x size]
|
||
mov ecx, 200*65536+260 ; [y start] *65536 + [y size]
|
||
mov edx, [sc.work] ; color of work area RRGGBB,8->color gl
|
||
or edx,0x33000000
|
||
mov edi,header ; WINDOW LABEL
|
||
int 0x40
|
||
|
||
mcall 8,<11,17>,<26,17>,2,[sc.work_button]
|
||
inc edx
|
||
mcall , ,<56,17>, ,
|
||
inc edx
|
||
mcall , ,<86,17>, ,
|
||
inc edx
|
||
mcall , ,<166,17>, ,
|
||
inc edx
|
||
mcall , ,<196,17>, ,
|
||
|
||
mov ecx,[sc.work_button_text]
|
||
or ecx,0x10000000
|
||
mcall 4,<17,31>, ,text_123,1
|
||
add ebx,30
|
||
add edx,1
|
||
mcall
|
||
add ebx,30
|
||
add edx,1
|
||
mcall
|
||
add ebx,80
|
||
add edx,1
|
||
mcall
|
||
add ebx,30
|
||
add edx,1
|
||
mcall
|
||
|
||
mov ecx,[sc.work_text]
|
||
or ecx,0x80000000
|
||
mcall ,<40,31>, ,text_1,
|
||
add ebx,30
|
||
mcall , , ,text_2,
|
||
add ebx,30
|
||
mcall , , ,text_3,
|
||
mcall ,<15,115>, ,text_4,
|
||
mcall ,<35,125>, ,text_5,
|
||
|
||
mcall ,<35,41>, ,text_6,
|
||
mcall ,<35,101>, ,text_6,
|
||
mcall ,<40,171>, ,text_7,
|
||
mcall ,<40,201>, ,text_8,
|
||
mcall ,<25,10>, ,text_9,
|
||
mcall ,<25,150>, ,text_10,
|
||
|
||
mov eax,12 ; function 12:tell os about windowdraw
|
||
mov ebx,2 ; 2, end of draw
|
||
int 0x40
|
||
ret
|
||
|
||
|
||
header db appname,version,0
|
||
|
||
text_123 db '12345'
|
||
|
||
if lang eq ru
|
||
|
||
text_1 db '<27> <20><><EFBFBD><EFBFBD><EFBFBD> <20>:\KOLIBRI',0
|
||
text_2 db '<27> <20><>७<EFBFBD> <20><>᪠ <20>',0
|
||
text_3 db '<27><><EFBFBD><EFBFBD> <20> 䠩<><E4A0A9> RD2HD.TXT',0
|
||
text_4 db '<27>.3 <20><><EFBFBD> १<>ࢭ<EFBFBD><E0A2AD><EFBFBD> <20><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD>',0
|
||
text_5 db '<27>.<2E>. <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>.',0
|
||
text_6 db '(<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮<EFBFBD><E2A2AE><EFBFBD><EFBFBD>)',0
|
||
text_7 db '<27><> /FD/1',0
|
||
text_8 db '<27><> /FD/2',0
|
||
text_9 db '<27><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>⪨<EFBFBD> <20><><EFBFBD><EFBFBD>:',0
|
||
text_10 db '<27><><EFBFBD>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><> <20><>᪥<EFBFBD><E1AAA5>:',0
|
||
|
||
else
|
||
|
||
text_1 db 'To the folder C:\KOLIBRI',0
|
||
text_2 db 'To the root of C',0
|
||
text_3 db 'To path in the file RD2HD.TXT',0
|
||
text_4 db 'p.3 for backup, as the kernel',0
|
||
text_5 db 'can not boot from there.',0
|
||
text_6 db '(folder must exist)',0
|
||
text_7 db 'To /FD/1',0
|
||
text_8 db 'To /FD/2',0
|
||
text_9 db 'Save to hard disk:',0
|
||
text_10 db 'Save to floppy:',0
|
||
|
||
end if
|
||
|
||
filename db 'RD2HD TXT'
|
||
I_END:
|
||
sc system_colors
|
||
bootpath:
|