29,11 → 29,14 |
mov edx, sizeof.system_colors |
int 0x40 |
|
mov eax, 58 ; load MENU.DAT |
mov eax, 70 ; load MENU.DAT |
mov ebx, fileinfo |
int 0x40 |
test eax, eax ; error ? |
jz @f |
cmp eax,6 |
jnz close |
@@: |
test ebx, ebx ; length = 0 ? |
jz close |
mov ecx, ebx |
233,26 → 236,11 |
mov edi, fileinfo_start.name |
rep movsb ; copy string |
mov byte [edi], 0 ; store terminator |
|
; mov eax,fileinfo_start.name |
; cmp eax,'/rd/' |
; jne run_hd |
; mov ebx,fileinfo_start.name+6 |
; mov eax,19 |
; xor ecx,ecx |
; jmp run_for_all |
;run_hd: |
mov eax, 58 ; start program |
mov eax, 70 ; start program |
mov ebx, fileinfo_start |
;run_for_all: |
int 0x40 |
mcall 5,100 |
; mov eax,5 |
; mov ebx,100 |
; int 0x40 |
|
; mcall 5,100 |
or [close_now], 1 ; set close flag |
|
pop edi |
mov [mousemask], 0 |
jmp close |
310,7 → 298,7 |
|
cmp [thread_stack], 0x1e000 |
jne thread_stack_not_full |
mov [thread_stack], 0xc000 |
mov [thread_stack], 0xE000 |
|
thread_stack_not_full: |
add [thread_stack], 0x2000 ; start new thread |
530,24 → 518,24 |
|
;*** DATA AREA **************************************************************** |
|
thread_stack dd 0xc000 |
thread_stack dd 0xE000 |
processes dd 0 |
|
fileinfo: |
.mode dd 0 ; 0=READ |
.start_block dd 0x0 ; 512 block to read 0+ |
.size dd (0x10000-mem_end)/512 ;0x80; blocks to read (0x10000 bytes max) |
.subfunction dd 0 ; 0=READ |
.start dd 0 ; start byte |
.size_high dd 0 ; rezerved |
.size dd 0x10000-mem_end ; blocks to read |
.return dd mem_end ; return data pointer |
.work dd workarea ; work area for os - 16384 bytes |
.name: |
db '/RD/1/MENU.DAT',0 ; ASCIIZ dir & filename |
|
fileinfo_start: |
.mode dd 16 ; 16=START APPLICATION |
.start_block dd 0x0 ; nop |
.size dd 0x0 ; nop |
.return dd 0x0 ; nop |
.work dd workarea ; work area for os - 16384 bytes |
.subfunction dd 7 ; 7=START APPLICATION |
.flags dd 0 ; flags |
.params dd 0x0 ; nop |
.rezerved dd 0x0 ; nop |
.rezerved_1 dd 0x0 ; nop |
.name: |
times 50 db ' ' |
|
563,9 → 551,6 |
menu_data: |
rb 0x4000 ;x10000 |
|
workarea: |
rb 0x4000 ;0x10000 |
|
virtual at 0 ; PROCESSES TABLE (located at menu_data) |
pointer dd ? ; +0 pointer in file |
rows db ? ; +4 numer of strings |