630234432f
git-svn-id: svn://kolibrios.org@109 a494cfbc-eb01-0410-851d-a64ba20cac60
2967 lines
36 KiB
NASM
2967 lines
36 KiB
NASM
; CMD - Command line interpreter
|
|
; copyleft Chemist dmitry_gt@tut.by
|
|
;
|
|
; Compile with FASM for Menuet
|
|
;
|
|
;
|
|
|
|
use32
|
|
|
|
org 0x0
|
|
|
|
db 'MENUET01'
|
|
dd 0x01
|
|
dd START
|
|
dd I_END
|
|
dd 0x300000
|
|
dd 0x7fff0
|
|
dd 0x0
|
|
dd 0x0
|
|
|
|
include "macros.inc"
|
|
|
|
START:
|
|
|
|
call cmdexist
|
|
call draw
|
|
call fill
|
|
call clearcmd
|
|
call autoexec
|
|
call ppr
|
|
call cursor
|
|
|
|
still:
|
|
|
|
mov eax,10
|
|
int 0x40
|
|
|
|
cmp eax,1
|
|
je re
|
|
cmp eax,2
|
|
je key
|
|
cmp eax,3
|
|
je button
|
|
|
|
jmp still
|
|
|
|
button:
|
|
mov eax,17
|
|
int 0x40
|
|
|
|
cmp ah,1
|
|
jne noclose
|
|
|
|
jmp exit
|
|
|
|
noclose:
|
|
jmp still
|
|
|
|
re:
|
|
call draw
|
|
call red
|
|
jmp still
|
|
|
|
red:
|
|
call cls1
|
|
|
|
mov dword [xpos],24
|
|
|
|
mov dword [linev],2000
|
|
|
|
mov eax,dword [ypos]
|
|
push eax
|
|
|
|
mov dword [ypos],6
|
|
|
|
mov ecx,dword [lpress]
|
|
loop1:
|
|
push ecx
|
|
mov eax,4
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov edx,tic_table
|
|
add edx,dword [linev]
|
|
mov esi,81
|
|
int 0x40
|
|
add dword [xpos],10
|
|
add dword [linev],81
|
|
pop ecx
|
|
loop loop1
|
|
|
|
sub dword [xpos],10
|
|
|
|
no_line:
|
|
pop eax
|
|
mov dword [ypos],eax
|
|
|
|
no_red:
|
|
ret
|
|
|
|
key:
|
|
mov eax,2
|
|
int 0x40
|
|
|
|
cmp ah,27
|
|
jne no_escape
|
|
|
|
mov dword [ypos],42
|
|
call clearstr
|
|
call ppr
|
|
mov dword [count],0
|
|
call cursor
|
|
jmp still
|
|
|
|
no_escape:
|
|
cmp ah,178
|
|
jne no_aup
|
|
cmp dword [count],0
|
|
jne no_aup
|
|
cmp dword [oldcount],0
|
|
je no_aup
|
|
|
|
call clearsum
|
|
sub dword [ypos],6
|
|
|
|
cld
|
|
mov ecx,81
|
|
mov edi,tic_table+600
|
|
mov esi,tic_table+900
|
|
rep movsb
|
|
|
|
cld
|
|
mov ecx,dword [oldcount]
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+600
|
|
rep movsb
|
|
|
|
call red
|
|
|
|
mov eax,dword [oldcount]
|
|
mov dword [count],eax
|
|
|
|
add dword [linen],eax
|
|
add dword [linel],eax
|
|
|
|
mov ebx,6
|
|
imul ebx,eax
|
|
|
|
add dword [ypos],ebx
|
|
|
|
call cursor
|
|
|
|
jmp still
|
|
|
|
no_aup:
|
|
cmp ah,8
|
|
jne no_backspace
|
|
cmp dword [count],0
|
|
je still
|
|
|
|
cmp dword [count],0
|
|
je no_backspace
|
|
|
|
call clearsum
|
|
sub dword [ypos],12
|
|
call clearsum
|
|
sub dword [ypos],6
|
|
call cursor
|
|
dec dword [count]
|
|
jmp still
|
|
|
|
no_backspace:
|
|
cmp ah,13
|
|
jne no_enter
|
|
|
|
cmp dword [count],0
|
|
jne enter_ok
|
|
call clearsum
|
|
jmp ecmd2
|
|
|
|
enter_ok:
|
|
call checkcmd
|
|
|
|
cmp byte [tic_table+600],'/'
|
|
jne no_script
|
|
cmp dword [count],1
|
|
je nparam5
|
|
|
|
jmp command
|
|
|
|
no_script:
|
|
|
|
call oldcmd
|
|
|
|
call checkprg
|
|
|
|
jmp ecmd2
|
|
|
|
no_enter:
|
|
|
|
cmp ah,176 ; Arrow keys, HOME, END, and DEL are unsupported now
|
|
je still
|
|
cmp ah,179
|
|
je still
|
|
cmp ah,177
|
|
je still
|
|
cmp ah,178
|
|
je still
|
|
cmp ah,182
|
|
je still
|
|
cmp ah,180
|
|
je still
|
|
cmp ah,181
|
|
je still
|
|
|
|
cmp dword [count],74
|
|
je still
|
|
|
|
mov byte [smb],ah
|
|
|
|
mov edi,tic_table+600
|
|
add edi,dword [count]
|
|
mov esi,smb
|
|
movsb
|
|
|
|
inc dword [count]
|
|
|
|
call clearsum
|
|
sub dword [ypos],6
|
|
call print
|
|
add dword [ypos],6
|
|
call cursor
|
|
|
|
jmp still
|
|
|
|
clearstr:
|
|
mov dword [ypos],6
|
|
mov dword [clr],480
|
|
call clear
|
|
|
|
mov eax,dword [linel]
|
|
sub dword [linen],eax
|
|
mov dword [linel],0
|
|
|
|
mov ecx,eax
|
|
push eax
|
|
loop4:
|
|
push ecx
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,fill1
|
|
movsb
|
|
|
|
inc dword [linen]
|
|
pop ecx
|
|
loop loop4
|
|
|
|
pop eax
|
|
sub dword [linen],eax
|
|
|
|
mov dword [ypos],42
|
|
|
|
ret
|
|
|
|
clearsum:
|
|
mov dword [clr],6
|
|
call clear
|
|
|
|
dec dword [linen]
|
|
dec dword [linel]
|
|
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,fill1
|
|
movsb
|
|
|
|
ret
|
|
|
|
clear:
|
|
mov eax,13
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[clr]
|
|
mov ecx,[xpos]
|
|
shl ecx,16
|
|
add ecx,9
|
|
mov edx,0
|
|
int 0x40
|
|
add dword [ypos],6
|
|
ret
|
|
|
|
draw:
|
|
|
|
mov eax,12
|
|
mov ebx,1
|
|
int 0x40
|
|
|
|
mov eax,0
|
|
mov ebx,100*65536+492
|
|
mov ecx,100*65536+280
|
|
mov edx,0
|
|
mov esi,0x805080d0
|
|
mov edi,0x005080d0
|
|
int 0x40
|
|
|
|
mov eax,4
|
|
mov ebx,8*65536+8
|
|
mov ecx,0x10ddeeff
|
|
mov edx,title
|
|
mov esi,title_end-title
|
|
int 0x40
|
|
|
|
mov eax,8
|
|
mov ebx,(492-19)*65536+12
|
|
mov ecx,5*65536+12
|
|
mov edx,1
|
|
mov esi,0x6688dd
|
|
int 0x40
|
|
|
|
mov eax,12
|
|
mov ebx,2
|
|
int 0x40
|
|
|
|
ret
|
|
|
|
print:
|
|
mov eax,4
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov edx,smb
|
|
mov esi,1
|
|
int 0x40
|
|
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,smb
|
|
movsb
|
|
inc dword [linen]
|
|
inc dword [linel]
|
|
|
|
ret
|
|
|
|
cursor:
|
|
mov eax,4
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov edx,smb_cursor
|
|
mov esi,1
|
|
int 0x40
|
|
|
|
mov edi,tic_table
|
|
mov esi,smb_cursor
|
|
add edi,dword [linen]
|
|
movsb
|
|
inc dword [linen]
|
|
inc dword [linel]
|
|
|
|
ret
|
|
|
|
ppr:
|
|
mov eax,4
|
|
mov ebx,6
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov edx,prompt
|
|
mov esi,5
|
|
int 0x40
|
|
mov dword [ypos],42
|
|
|
|
cld
|
|
mov ecx,5
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,prompt
|
|
rep movsb
|
|
|
|
add dword [linen],6
|
|
add dword [linel],6
|
|
|
|
ret
|
|
|
|
help:
|
|
cmp byte [callp],1
|
|
je gonext8
|
|
call clearsum
|
|
gonext8:
|
|
call newline
|
|
call newline
|
|
mov edx,h1
|
|
call printf
|
|
call newline
|
|
mov edx,h2
|
|
call printf
|
|
call newline
|
|
call newline
|
|
mov edx,h3
|
|
call printf
|
|
call newline
|
|
call newline
|
|
mov edx,h4
|
|
call printf
|
|
call newline
|
|
mov edx,h5
|
|
call printf
|
|
call newline
|
|
mov edx,h6
|
|
call printf
|
|
call newline
|
|
mov edx,h7
|
|
call printf
|
|
call newline
|
|
call newline
|
|
mov edx,h8
|
|
call printf
|
|
call newline
|
|
mov edx,h9
|
|
call printf
|
|
call newline
|
|
mov edx,h10
|
|
call printf
|
|
call newline
|
|
mov edx,h11
|
|
call printf
|
|
call newline
|
|
mov edx,h12
|
|
call printf
|
|
call newline
|
|
mov edx,h13
|
|
call printf
|
|
call newline
|
|
call newline
|
|
mov edx,h14
|
|
call printf
|
|
call newline
|
|
call newline
|
|
mov edx,h15
|
|
call printf
|
|
call newline
|
|
mov edx,h16
|
|
call printf
|
|
call newline
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
ver:
|
|
cmp byte [callp],1
|
|
je gonext7
|
|
call clearsum
|
|
gonext7:
|
|
call newline
|
|
mov edx,about
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
pause1:
|
|
cmp byte [callp],1
|
|
je gonext1
|
|
call clearsum
|
|
gonext1:
|
|
call pause2
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
ls:
|
|
call oldcmd
|
|
call cls2
|
|
|
|
loopls:
|
|
inc dword [blockcnt]
|
|
|
|
mov eax,34
|
|
mov ebx,0
|
|
mov ecx,0
|
|
mov edx,0
|
|
add edx,dword [blockcnt]
|
|
mov esi,1
|
|
mov edi,tic_table+7000
|
|
int 0x40
|
|
|
|
mov ecx,16
|
|
loop40:
|
|
push ecx
|
|
|
|
cld
|
|
mov ecx,8
|
|
mov edi,filename
|
|
mov esi,tic_table
|
|
add esi,dword [lscnt]
|
|
rep movsb
|
|
|
|
add dword [lscnt],8
|
|
|
|
mov edi,filename+8
|
|
mov esi,ddot
|
|
movsb
|
|
|
|
cld
|
|
mov ecx,3
|
|
mov edi,filename+9
|
|
mov esi,tic_table
|
|
add esi,dword [lscnt]
|
|
rep movsb
|
|
|
|
cmp byte [filename+10],0
|
|
jne no_fn_space1
|
|
|
|
mov edi,filename+10
|
|
mov esi,dzero
|
|
movsb
|
|
|
|
no_fn_space1:
|
|
cmp byte [filename],0xe5 ; deleted file
|
|
je no_newline
|
|
cmp byte [filename],0xf ; long fat32 filename
|
|
je no_newline
|
|
cmp byte [filename],0x10 ; folder
|
|
je no_newline
|
|
|
|
cmp word [filename],'AK'
|
|
jne filename_ok
|
|
cmp byte [filename+3],'e'
|
|
jne filename_ok
|
|
cmp byte [filename+5],'y'
|
|
jne filename_ok
|
|
cmp byte [filename+7],'a'
|
|
jne filename_ok
|
|
cmp byte [filename+10],'s'
|
|
jne filename_ok
|
|
|
|
jmp no_newline
|
|
|
|
filename_ok:
|
|
mov eax,6
|
|
mov ebx,filename
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
jne ls_print
|
|
|
|
jmp no_newline
|
|
|
|
ls_print_done:
|
|
inc byte [lscntf]
|
|
|
|
add dword [ypos],96
|
|
|
|
cmp byte [lscntf],5
|
|
jne no_newline
|
|
|
|
mov byte [lscntf],0
|
|
inc byte [lscntx]
|
|
|
|
cmp byte [lscntx],23
|
|
je pause2n
|
|
|
|
mov dword [ypos],6
|
|
call newline
|
|
|
|
no_newline:
|
|
add dword [lscnt],24
|
|
|
|
pop ecx
|
|
dec ecx
|
|
cmp ecx,0
|
|
jne loop40
|
|
|
|
cmp dword [blockcnt],16
|
|
je ls_end
|
|
|
|
jmp no_pause2
|
|
|
|
pause2n:
|
|
mov byte [lscntx],0
|
|
|
|
call newline
|
|
call pause2
|
|
call cls2
|
|
mov dword [lscnt],8024
|
|
jmp loopls
|
|
|
|
no_pause2:
|
|
mov dword [lscnt],8024
|
|
|
|
jmp loopls
|
|
|
|
ls_end:
|
|
mov dword [blockcnt],0
|
|
mov dword [lscnt],8024
|
|
mov byte [lscntf],0
|
|
mov byte [lscntx],0
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd2
|
|
|
|
ls_print:
|
|
mov edi,filename+8
|
|
mov esi,fill1
|
|
movsb
|
|
|
|
mov eax,4
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov edx,filename
|
|
mov ecx,0x00ddeeff
|
|
mov esi,12
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,12
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,filename
|
|
rep movsb
|
|
|
|
add dword [linen],16
|
|
add dword [linel],16
|
|
|
|
jmp ls_print_done
|
|
|
|
lscheck:
|
|
cmp byte [callp],1
|
|
je gonext9
|
|
call clearsum
|
|
gonext9:
|
|
sub dword [count],3
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,tic_table+400
|
|
mov esi,tic_table+600
|
|
add esi,3
|
|
rep movsb
|
|
|
|
mov ebx,tic_table+400
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,tic_table+400
|
|
mov ecx,70
|
|
strup2:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup2
|
|
pop eax ecx edi esi
|
|
|
|
mov ecx,dword [count]
|
|
|
|
looplsc:
|
|
cmp byte [tic_table+400+ecx],'.'
|
|
je chdot
|
|
|
|
loop looplsc
|
|
|
|
jmp chnodot
|
|
|
|
chdot:
|
|
mov ebx,dword [count]
|
|
|
|
cld
|
|
mov ecx,5
|
|
mov edi,tic_table+400
|
|
add edi,ebx
|
|
mov esi,dzero
|
|
rep movsb
|
|
|
|
mov eax,6
|
|
mov ebx,tic_table+400
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je nosuchfile
|
|
|
|
jmp lschok
|
|
|
|
chnodot:
|
|
mov ebx,dword [count]
|
|
|
|
mov edi,tic_table+400
|
|
add edi,ebx
|
|
mov esi,ddot
|
|
movsb
|
|
|
|
inc ebx
|
|
|
|
cld
|
|
mov ecx,3
|
|
mov edi,tic_table+400
|
|
add edi,ebx
|
|
mov esi,fill3
|
|
rep movsb
|
|
|
|
mov eax,6
|
|
mov ebx,tic_table+400
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je nosuchfile
|
|
|
|
mov edi,tic_table+400
|
|
add edi,dword [count]
|
|
mov esi,fill1
|
|
movsb
|
|
|
|
lschok:
|
|
call newline
|
|
|
|
mov eax,4
|
|
mov ebx,6
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov edx,tic_table+400
|
|
mov esi,12
|
|
mov ecx,0x00ddeeff
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,12
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+400
|
|
rep movsb
|
|
|
|
add dword [linen],12
|
|
add dword [linel],12
|
|
|
|
add dword [count],3
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
ps:
|
|
call oldcmd
|
|
call cls2
|
|
call newline
|
|
mov edx,proc_head
|
|
call printf
|
|
call newline
|
|
mov edx,proc_hd11
|
|
call printf
|
|
call newline
|
|
call newline
|
|
|
|
mov eax,9
|
|
mov ebx,tic_table
|
|
mov ecx,1
|
|
int 0x40
|
|
|
|
mov dword [count2],eax
|
|
|
|
ll1:
|
|
inc dword [pn]
|
|
mov eax,9
|
|
mov ebx,tic_table
|
|
mov ecx,[pn]
|
|
int 0x40
|
|
|
|
mov ebx,[tic_table+30]
|
|
mov dword [fnumb],4
|
|
mov dword [ypos],6
|
|
call decnumb
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+200
|
|
rep movsb
|
|
|
|
add dword [linen],5
|
|
add dword [linel],5
|
|
|
|
cld
|
|
mov ecx,11
|
|
mov esi,tic_table+10
|
|
mov edi,pname
|
|
rep movsb
|
|
|
|
mov dword [ypos],36
|
|
mov edx,pname
|
|
mov eax,4
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov esi,12
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,11
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,pname
|
|
rep movsb
|
|
|
|
add dword [linen],10
|
|
add dword [linel],10
|
|
|
|
mov dword [ypos],94
|
|
mov ebx,[tic_table+22]
|
|
mov dword [fnumb],8
|
|
call decnumb
|
|
|
|
cld
|
|
mov ecx,8
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+200
|
|
rep movsb
|
|
|
|
add dword [linen],10
|
|
add dword [linel],10
|
|
|
|
mov dword [ypos],154
|
|
mov ebx,[tic_table+26]
|
|
mov dword [fnumb],8
|
|
call decnumb
|
|
|
|
cld
|
|
mov ecx,8
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+200
|
|
rep movsb
|
|
|
|
add dword [linen],12
|
|
add dword [linel],12
|
|
|
|
mov dword [ypos],228
|
|
mov ebx,[pn]
|
|
mov dword [fnumb],4
|
|
call decnumb
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+200
|
|
rep movsb
|
|
|
|
add dword [linel],4
|
|
add dword [linen],4
|
|
|
|
call newline
|
|
|
|
mov dword [ypos],60
|
|
|
|
cmp dword [xpos],254
|
|
jne nscreen
|
|
|
|
call pause2
|
|
call cls2
|
|
|
|
mov dword [xpos],24
|
|
call newline
|
|
mov dword [ypos],60
|
|
|
|
mov edx,proc_head
|
|
call printf
|
|
call newline
|
|
mov edx,proc_hd11
|
|
call printf
|
|
call newline
|
|
call newline
|
|
|
|
nscreen:
|
|
mov eax, dword [count2]
|
|
cmp dword [pn],eax
|
|
jne ll1
|
|
mov dword [pn],0
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd2
|
|
|
|
printn:
|
|
mov eax,47
|
|
shl ebx,16
|
|
mov edx,[ypos]
|
|
shl edx,16
|
|
add edx,[xpos]
|
|
mov esi,0x00ddeeff
|
|
int 0x40
|
|
ret
|
|
|
|
pause2:
|
|
call newline
|
|
mov edx,mess1
|
|
call printf
|
|
|
|
mov eax,10
|
|
int 0x40
|
|
|
|
red3:
|
|
cmp eax,2
|
|
je back
|
|
cmp eax,3
|
|
je exit
|
|
|
|
call draw
|
|
call red
|
|
|
|
mov eax,10
|
|
int 0x40
|
|
jmp red3
|
|
|
|
back:
|
|
mov eax,2
|
|
int 0x40
|
|
cmp ah,27
|
|
je checmd
|
|
ret
|
|
|
|
exit:
|
|
mov eax,-1
|
|
int 0x40
|
|
|
|
checmd:
|
|
cmp byte [callp],1
|
|
je ecmd3
|
|
|
|
jmp ecmd
|
|
|
|
err:
|
|
call clearsum
|
|
|
|
call newline
|
|
|
|
call ppr
|
|
cmp dword [count],0
|
|
je ecmd1
|
|
mov edx,err1
|
|
mov eax,4
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov esi,27
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,27
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,err1
|
|
rep movsb
|
|
|
|
add dword [linen],27
|
|
add dword [linel],27
|
|
|
|
call clearcmd
|
|
|
|
jmp cmd_ok2
|
|
|
|
nparam:
|
|
cmp byte [callp],1
|
|
je gonext4
|
|
call clearsum
|
|
gonext4:
|
|
call newline
|
|
mov edx,mess2
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
nparam2:
|
|
cmp byte [callp],1
|
|
je gonext3
|
|
call clearsum
|
|
gonext3:
|
|
call newline
|
|
mov edx,mess5
|
|
call printf
|
|
|
|
cmp byte [callp],0
|
|
je ecmd
|
|
|
|
jmp go
|
|
|
|
cp:
|
|
cmp byte [callp],1
|
|
je gonext10
|
|
call clearsum
|
|
gonext10:
|
|
sub dword [count],3
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,tic_table+400
|
|
mov esi,tic_table+600
|
|
add esi,3
|
|
rep movsb
|
|
|
|
mov ecx,12
|
|
loop50:
|
|
cmp byte [tic_table+400+ecx],'+'
|
|
je file2
|
|
|
|
loop loop50
|
|
|
|
add dword [count],3
|
|
jmp nparam3
|
|
|
|
file2:
|
|
mov dword [f1len],ecx
|
|
|
|
inc ecx
|
|
mov ebx,ecx
|
|
cld
|
|
mov edi,tic_table+9000
|
|
mov esi,tic_table+400
|
|
rep movsb
|
|
|
|
mov ecx,12
|
|
mov edi,tic_table+9100
|
|
mov esi,tic_table+400
|
|
add esi,ebx
|
|
rep movsb
|
|
|
|
mov ebx,tic_table+9000
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,tic_table+9000
|
|
mov ecx,12
|
|
strup3:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup3
|
|
pop eax ecx edi esi
|
|
|
|
mov ecx,dword [f1len]
|
|
|
|
loopcp:
|
|
cmp byte [tic_table+9000+ecx],'.'
|
|
je chdotcp
|
|
|
|
loop loopcp
|
|
|
|
jmp chnodotcp
|
|
|
|
chdotcp:
|
|
mov ebx,dword [f1len]
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,tic_table+9000
|
|
add edi,ebx
|
|
mov esi,dzero
|
|
rep movsb
|
|
|
|
jmp gocp1
|
|
|
|
chnodotcp:
|
|
mov ebx,dword [f1len]
|
|
|
|
mov edi,tic_table+9000
|
|
add edi,ebx
|
|
mov esi,ddot
|
|
movsb
|
|
|
|
inc ebx
|
|
|
|
cld
|
|
mov ecx,3
|
|
mov edi,tic_table+9000
|
|
add edi,ebx
|
|
mov esi,fill3
|
|
rep movsb
|
|
|
|
gocp1:
|
|
mov eax,6
|
|
mov ebx,tic_table+9000
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je nosuchfile
|
|
|
|
mov dword [filesize],eax
|
|
|
|
mov ebx,tic_table+9100
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,tic_table+9100
|
|
mov ecx,12
|
|
strup4:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup4
|
|
pop eax ecx edi esi
|
|
|
|
mov ebx,dword [f1len]
|
|
mov ecx,dword [count]
|
|
sub ecx,ebx
|
|
|
|
mov dword [f2len],ecx
|
|
|
|
loopcp2:
|
|
cmp byte [tic_table+9100+ecx],'.'
|
|
je chdotcp2
|
|
|
|
loop loopcp2
|
|
|
|
jmp chnodotcp2
|
|
|
|
chdotcp2:
|
|
mov ebx,dword [f2len]
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,tic_table+9100
|
|
add edi,ebx
|
|
mov esi,dzero
|
|
rep movsb
|
|
|
|
jmp gocp2
|
|
|
|
chnodotcp2:
|
|
mov ebx,dword [f2len]
|
|
|
|
mov edi,tic_table+9100
|
|
add edi,ebx
|
|
mov esi,ddot
|
|
movsb
|
|
|
|
inc ebx
|
|
|
|
cld
|
|
mov ecx,3
|
|
mov edi,tic_table+9100
|
|
add edi,ebx
|
|
mov esi,fill3
|
|
rep movsb
|
|
|
|
gocp2:
|
|
mov eax,6
|
|
mov ebx,tic_table+9100
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
jne alreadyexist
|
|
|
|
mov eax,33
|
|
mov ebx,tic_table+9100
|
|
mov ecx,tic_table+25000
|
|
mov edx,dword [filesize]
|
|
mov esi,0
|
|
int 0x40
|
|
|
|
cmp eax,0
|
|
jne no_ok
|
|
|
|
mov eax,6
|
|
mov ebx,tic_table+9100
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je no_ok
|
|
|
|
call newline
|
|
mov edx,mess11
|
|
call printf
|
|
jmp cp_end
|
|
|
|
no_ok:
|
|
call newline
|
|
mov edx,mess12
|
|
call printf
|
|
|
|
cp_end:
|
|
add dword [count],3
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
alreadyexist:
|
|
add dword [count],3
|
|
call newline
|
|
mov edx,mess13
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
rn:
|
|
cmp byte [callp],1
|
|
je gonext11
|
|
call clearsum
|
|
gonext11:
|
|
sub dword [count],3
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,tic_table+400
|
|
mov esi,tic_table+600
|
|
add esi,3
|
|
rep movsb
|
|
|
|
mov ecx,12
|
|
loop51:
|
|
push ecx
|
|
cmp byte [tic_table+400+ecx],'+'
|
|
je file3
|
|
|
|
pop ecx
|
|
loop loop51
|
|
|
|
add dword [count],3
|
|
jmp nparam4
|
|
|
|
file3:
|
|
mov dword [f1len],ecx
|
|
|
|
inc ecx
|
|
mov ebx,ecx
|
|
cld
|
|
mov edi,tic_table+9000
|
|
mov esi,tic_table+400
|
|
rep movsb
|
|
|
|
mov ecx,12
|
|
mov edi,tic_table+9100
|
|
mov esi,tic_table+400
|
|
add esi,ebx
|
|
rep movsb
|
|
|
|
mov ebx,tic_table+9000
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,tic_table+9000
|
|
mov ecx,12
|
|
strup5:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup5
|
|
pop eax ecx edi esi
|
|
|
|
mov ecx,dword [f1len]
|
|
|
|
looprn:
|
|
cmp byte [tic_table+9000+ecx],'.'
|
|
je chdotrn
|
|
|
|
loop looprn
|
|
|
|
jmp chnodotrn
|
|
|
|
chdotrn:
|
|
mov ebx,dword [f1len]
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,tic_table+9000
|
|
add edi,ebx
|
|
mov esi,dzero
|
|
rep movsb
|
|
|
|
jmp gorn1
|
|
|
|
chnodotrn:
|
|
mov ebx,dword [f1len]
|
|
|
|
mov edi,tic_table+9000
|
|
add edi,ebx
|
|
mov esi,ddot
|
|
movsb
|
|
|
|
inc ebx
|
|
|
|
cld
|
|
mov ecx,3
|
|
mov edi,tic_table+9000
|
|
add edi,ebx
|
|
mov esi,fill3
|
|
rep movsb
|
|
|
|
gorn1:
|
|
mov eax,6
|
|
mov ebx,tic_table+9000
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je nosuchfile
|
|
|
|
mov ebx,tic_table+9100
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,tic_table+9100
|
|
mov ecx,12
|
|
strup6:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup6
|
|
pop eax ecx edi esi
|
|
|
|
mov ebx,dword [f1len]
|
|
mov ecx,dword [count]
|
|
sub ecx,ebx
|
|
|
|
mov dword [f2len],ecx
|
|
|
|
looprn2:
|
|
cmp byte [tic_table+9100+ecx],'.'
|
|
je chdotrn2
|
|
|
|
loop looprn2
|
|
|
|
jmp chnodotrn2
|
|
|
|
chdotrn2:
|
|
mov ebx,dword [f2len]
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,tic_table+9100
|
|
add edi,ebx
|
|
mov esi,dzero
|
|
rep movsb
|
|
|
|
jmp gorn2
|
|
|
|
chnodotrn2:
|
|
mov ebx,dword [f2len]
|
|
|
|
mov edi,tic_table+9100
|
|
add edi,ebx
|
|
mov esi,ddot
|
|
movsb
|
|
|
|
inc ebx
|
|
|
|
cld
|
|
mov ecx,3
|
|
mov edi,tic_table+9100
|
|
add edi,ebx
|
|
mov esi,fill3
|
|
rep movsb
|
|
|
|
gorn2:
|
|
mov eax,6
|
|
mov ebx,tic_table+9100
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
jne alreadyexist
|
|
|
|
mov eax,6
|
|
mov ebx,tic_table+9000
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
mov dword [filesize],eax
|
|
|
|
mov eax,33
|
|
mov ebx,tic_table+9100
|
|
mov ecx,tic_table+25000
|
|
mov edx,dword [filesize]
|
|
mov esi,0
|
|
int 0x40
|
|
|
|
cmp eax,0
|
|
jne no_ok1
|
|
|
|
mov eax,6
|
|
mov ebx,tic_table+9100
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je no_ok1
|
|
|
|
mov eax,32
|
|
mov ebx,tic_table+9000
|
|
int 0x40
|
|
|
|
call newline
|
|
mov edx,mess14
|
|
call printf
|
|
jmp rn_end
|
|
|
|
no_ok1:
|
|
call newline
|
|
mov edx,mess15
|
|
call printf
|
|
|
|
rn_end:
|
|
add dword [count],3
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
del:
|
|
cmp byte [callp],1
|
|
je gonext12
|
|
call clearsum
|
|
gonext12:
|
|
sub dword [count],4
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,tic_table+400
|
|
mov esi,tic_table+600
|
|
add esi,4
|
|
rep movsb
|
|
|
|
mov ebx,tic_table+400
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,tic_table+400
|
|
mov ecx,70
|
|
strup1:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup1
|
|
pop eax ecx edi esi
|
|
|
|
mov ecx,dword [count]
|
|
|
|
loopdel:
|
|
cmp byte [tic_table+400+ecx],'.'
|
|
je chdotdel
|
|
|
|
loop loopdel
|
|
|
|
jmp chnodotdel
|
|
|
|
chdotdel:
|
|
mov ebx,dword [count]
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,tic_table+400
|
|
add edi,ebx
|
|
mov esi,dzero
|
|
rep movsb
|
|
|
|
jmp godel
|
|
|
|
chnodotdel:
|
|
mov ebx,dword [count]
|
|
|
|
mov edi,tic_table+400
|
|
add edi,ebx
|
|
mov esi,ddot
|
|
movsb
|
|
|
|
inc ebx
|
|
|
|
cld
|
|
mov ecx,3
|
|
mov edi,tic_table+400
|
|
add edi,ebx
|
|
mov esi,fill3
|
|
rep movsb
|
|
|
|
godel:
|
|
mov eax,6
|
|
mov ebx,tic_table+400
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+25000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je nosuchfile2
|
|
|
|
mov eax,32
|
|
mov ebx,tic_table+400
|
|
int 0x40
|
|
|
|
call newline
|
|
mov edx,mess6
|
|
call printf
|
|
|
|
add dword [count],4
|
|
|
|
del_end:
|
|
add dword [count],4
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
nosuchfile:
|
|
add dword [count],3
|
|
call newline
|
|
mov edx,mess7
|
|
call printf
|
|
|
|
cmp byte [callp],0
|
|
je ecmd
|
|
|
|
jmp go
|
|
|
|
nosuchfile2:
|
|
add dword [count],4
|
|
call newline
|
|
mov edx,mess7
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
nosuchfile3:
|
|
inc dword [count]
|
|
call newline
|
|
mov edx,mess7
|
|
call printf
|
|
jmp ecmd
|
|
|
|
autoexec:
|
|
mov eax,6
|
|
mov ebx,autoexfile
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+15000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je noaxfile
|
|
|
|
sub dword [linen],81
|
|
sub dword [xpos],10
|
|
dec dword [lpress]
|
|
|
|
jmp autolabel
|
|
|
|
noaxfile:
|
|
ret
|
|
|
|
command:
|
|
call clearsum
|
|
dec dword [count]
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,filename
|
|
mov esi,tic_table+601
|
|
rep movsb
|
|
|
|
mov ebx,filename
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,filename
|
|
mov ecx,12
|
|
strup7:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup7
|
|
pop eax ecx edi esi
|
|
|
|
cld
|
|
mov ecx,4
|
|
mov edi,filename+8
|
|
mov esi,dcmd
|
|
rep movsb
|
|
|
|
mov eax,6
|
|
mov ebx,filename
|
|
mov ecx,0
|
|
mov edx,-1
|
|
mov esi,tic_table+15000
|
|
int 0x40
|
|
|
|
cmp eax,4294967295
|
|
je nosuchfile3
|
|
|
|
autolabel:
|
|
mov dword [filesize2],eax
|
|
mov byte [callp],1
|
|
|
|
go:
|
|
call clearcmd
|
|
|
|
gonext:
|
|
cmp dword [filesize2],0
|
|
je ecmd3
|
|
|
|
mov ebx,tic_table
|
|
add ebx,dword [readcnt]
|
|
cmp byte [ebx],13
|
|
je read
|
|
|
|
inc dword [readcnt]
|
|
inc dword [readcnt2]
|
|
dec dword [filesize2]
|
|
|
|
jmp gonext
|
|
|
|
read:
|
|
mov ecx,dword [readcnt2]
|
|
mov ebx,0
|
|
mov edx,dword [readcnt]
|
|
sub edx,dword [readcnt2]
|
|
loop60:
|
|
push ecx
|
|
mov edi,tic_table+600
|
|
add edi,ebx
|
|
mov esi,tic_table
|
|
add esi,edx
|
|
movsb
|
|
|
|
inc ebx
|
|
inc edx
|
|
|
|
pop ecx
|
|
loop loop60
|
|
|
|
mov eax,dword [readcnt2]
|
|
mov dword [count],eax
|
|
|
|
mov dword [readcnt2],0
|
|
add dword [readcnt],2
|
|
|
|
jmp checkcmd
|
|
|
|
decnumb:
|
|
cmp dword [fnumb],4
|
|
je go1
|
|
|
|
call divide
|
|
mov dword [n8],edx
|
|
mov ebx,eax
|
|
call divide
|
|
mov dword [n7],edx
|
|
mov ebx,eax
|
|
call divide
|
|
mov dword [n6],edx
|
|
mov ebx,eax
|
|
call divide
|
|
mov dword [n5],edx
|
|
mov ebx,eax
|
|
|
|
go1:
|
|
call divide
|
|
mov dword [n4],edx
|
|
mov ebx,eax
|
|
call divide
|
|
mov dword [n3],edx
|
|
mov ebx,eax
|
|
call divide
|
|
mov dword [n2],edx
|
|
mov ebx,eax
|
|
call divide
|
|
mov dword [n1],edx
|
|
|
|
add dword [n1],48
|
|
add dword [n2],48
|
|
add dword [n3],48
|
|
add dword [n4],48
|
|
|
|
cmp dword [fnumb],4
|
|
je go2
|
|
|
|
add dword [n5],48
|
|
add dword [n6],48
|
|
add dword [n7],48
|
|
add dword [n8],48
|
|
|
|
go2:
|
|
mov edi,tic_table+200
|
|
mov esi,n1
|
|
movsb
|
|
mov edi,tic_table+201
|
|
mov esi,n2
|
|
movsb
|
|
mov edi,tic_table+202
|
|
mov esi,n3
|
|
movsb
|
|
mov edi,tic_table+203
|
|
mov esi,n4
|
|
movsb
|
|
|
|
cmp dword [fnumb],4
|
|
je go4
|
|
|
|
mov edi,tic_table+204
|
|
mov esi,n5
|
|
movsb
|
|
mov edi,tic_table+205
|
|
mov esi,n6
|
|
movsb
|
|
mov edi,tic_table+206
|
|
mov esi,n7
|
|
movsb
|
|
mov edi,tic_table+207
|
|
mov esi,n8
|
|
movsb
|
|
|
|
go4:
|
|
mov eax,4
|
|
mov ebx,[ypos]
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov edx,tic_table+200
|
|
mov esi,dword [fnumb]
|
|
int 0x40
|
|
|
|
ret
|
|
|
|
divide:
|
|
mov eax,ebx
|
|
xor edx,edx
|
|
mov ecx,10
|
|
div ecx
|
|
ret
|
|
|
|
kill:
|
|
mov eax,0
|
|
mov ebx,0
|
|
mov ecx,0
|
|
mov edx,0
|
|
|
|
mov al, byte [tic_table+608]
|
|
mov bl, byte [tic_table+607]
|
|
mov cl, byte [tic_table+606]
|
|
mov dl, byte [tic_table+605]
|
|
|
|
sub al,48
|
|
sub bl,48
|
|
sub cl,48
|
|
sub dl,48
|
|
|
|
imul ebx,10
|
|
imul ecx,100
|
|
imul edx,1000
|
|
|
|
mov esi,0
|
|
add esi,eax
|
|
add esi,ebx
|
|
add esi,ecx
|
|
add esi,edx
|
|
mov ecx,esi
|
|
|
|
mov eax,9
|
|
mov ebx,tic_table
|
|
int 0x40
|
|
|
|
cmp eax,ecx
|
|
jb nosuchprocess
|
|
|
|
mov eax,18
|
|
mov ebx,2
|
|
mov edx,0
|
|
int 0x40
|
|
|
|
call clearsum
|
|
call newline
|
|
mov edx,mess3
|
|
call printf
|
|
call newline
|
|
mov edx,mess4
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
ecmd1:
|
|
sub dword [xpos],10
|
|
jmp ecmd
|
|
|
|
nosuchprocess:
|
|
call clearsum
|
|
call newline
|
|
mov edx,mess8
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
echoeol:
|
|
cmp byte [callp],1
|
|
je gonext15
|
|
call clearsum
|
|
gonext15:
|
|
call newline
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
echo:
|
|
cmp byte [callp],1
|
|
je gonext13
|
|
call clearsum
|
|
gonext13:
|
|
sub dword [count],5
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,tic_table+300
|
|
mov esi,tic_table+600
|
|
add esi,5
|
|
rep movsb
|
|
|
|
call newline
|
|
|
|
mov eax,4
|
|
mov ebx,6
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov edx,tic_table+300
|
|
mov ecx,0x00ddeeff
|
|
mov esi,dword [count]
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+300
|
|
rep movsb
|
|
|
|
mov eax,dword [count]
|
|
add dword [linen],eax
|
|
add dword [linel],eax
|
|
|
|
add dword [count],5
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
printf:
|
|
mov eax,4
|
|
mov ebx,6
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov esi,45
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,45
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,edx
|
|
rep movsb
|
|
|
|
add dword [linen],46
|
|
add dword [linel],46
|
|
|
|
add dword [ypos],6
|
|
|
|
ret
|
|
|
|
printipc:
|
|
mov eax,4
|
|
mov ebx,6
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov ecx,0x00ddeeff
|
|
mov esi,79
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,79
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,edx
|
|
rep movsb
|
|
|
|
add dword [linen],80
|
|
add dword [linel],80
|
|
|
|
mov dword [ypos],480
|
|
|
|
ret
|
|
|
|
clearcmd:
|
|
cld
|
|
mov ecx,80
|
|
mov edi,tic_table+600
|
|
mov esi,tic_table+500
|
|
rep movsb
|
|
|
|
mov ecx,80
|
|
mov edi,tic_table+400
|
|
mov esi,tic_table+500
|
|
rep movsb
|
|
|
|
mov ecx,81
|
|
mov edi,tic_table+800
|
|
mov [esi],byte 'x'
|
|
rep movsb
|
|
|
|
mov ecx,12
|
|
mov edi,filename
|
|
mov esi,pname
|
|
rep movsb
|
|
|
|
mov dword [count],0
|
|
mov dword [pn],0
|
|
mov dword [blockcnt],0
|
|
mov dword [lscnt],8024
|
|
ret
|
|
|
|
oldcmd:
|
|
mov eax,dword [count]
|
|
mov dword [oldcount],eax
|
|
|
|
cld
|
|
mov ecx,81
|
|
mov edi,tic_table+900
|
|
mov esi,tic_table+500
|
|
rep movsb
|
|
|
|
cld
|
|
mov ecx,81
|
|
mov edi,tic_table+900
|
|
mov esi,tic_table+600
|
|
rep movsb
|
|
|
|
ret
|
|
|
|
ecmd:
|
|
call oldcmd
|
|
call clearcmd
|
|
call newline
|
|
|
|
call ppr
|
|
call cursor
|
|
|
|
jmp still
|
|
|
|
ecmd2:
|
|
call clearcmd
|
|
call newline
|
|
|
|
call ppr
|
|
call cursor
|
|
jmp still
|
|
|
|
ecmd3:
|
|
call clearcmd
|
|
call newline
|
|
|
|
call ppr
|
|
call cursor
|
|
|
|
mov dword [readcnt],15000
|
|
mov dword [readcnt2],0
|
|
mov byte [callp],0
|
|
mov dword [filesize2],0
|
|
|
|
jmp still
|
|
|
|
chparam:
|
|
pop ecx
|
|
mov eax,ecx
|
|
mov edx,eax
|
|
push edx
|
|
inc eax
|
|
|
|
cld
|
|
mov edi,tic_table+400
|
|
mov esi,tic_table+600
|
|
rep movsb
|
|
|
|
mov ecx,dword [count]
|
|
sub ecx,eax
|
|
|
|
cld
|
|
mov edi,tic_table+800
|
|
mov esi,tic_table+600
|
|
add esi,eax
|
|
rep movsb
|
|
|
|
pop edx
|
|
|
|
mov dword [ipccount],edx
|
|
|
|
cld
|
|
mov ecx,11
|
|
mov edi,tic_table+400
|
|
add edi,edx
|
|
mov esi,qspace
|
|
rep movsb
|
|
|
|
mov eax,19
|
|
mov ebx,tic_table+400
|
|
mov ecx,tic_table+800
|
|
int 0x40
|
|
|
|
cmp eax,0xfffffff0
|
|
jb cmd_ok
|
|
|
|
jmp err
|
|
|
|
cls:
|
|
call oldcmd
|
|
call cls2
|
|
|
|
cmp byte [callp],0
|
|
jne needret
|
|
|
|
call clearcmd
|
|
call ppr
|
|
call cursor
|
|
|
|
jmp still
|
|
|
|
needret:
|
|
sub dword [linen],81
|
|
dec dword [lpress]
|
|
sub dword [xpos],10
|
|
|
|
jmp gonext
|
|
|
|
cls1:
|
|
mov eax,13
|
|
mov ebx,6*65536+486
|
|
mov ecx,24*65536+250
|
|
mov edx,0
|
|
int 0x40
|
|
ret
|
|
|
|
cls2:
|
|
mov dword [linen],2000
|
|
mov ecx,2025
|
|
loop2:
|
|
push ecx
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,fill1
|
|
movsb
|
|
|
|
inc dword [linen]
|
|
pop ecx
|
|
loop loop2
|
|
|
|
mov dword [linel],0
|
|
mov dword [linen],2000
|
|
mov dword [linev],2000
|
|
mov dword [xpos],24
|
|
mov dword [ypos],6
|
|
mov dword [lpress],1
|
|
mov dword [stnum],1
|
|
|
|
call cls1
|
|
|
|
ret
|
|
|
|
chscr:
|
|
cmp dword [xpos],264
|
|
jne no_scr
|
|
|
|
mov dword [cnt_loop1],4500
|
|
mov dword [cnt_loop2],2000
|
|
|
|
mov ecx,2025
|
|
loop10:
|
|
push ecx
|
|
mov edi,tic_table
|
|
add edi,dword [cnt_loop1]
|
|
mov esi,tic_table
|
|
add esi,dword [cnt_loop2]
|
|
movsb
|
|
|
|
inc dword [cnt_loop1]
|
|
inc dword [cnt_loop2]
|
|
|
|
pop ecx
|
|
loop loop10
|
|
|
|
mov dword [cnt_loop1],2000
|
|
|
|
mov ecx,2025
|
|
loop11:
|
|
push ecx
|
|
mov edi,tic_table
|
|
add edi,dword [cnt_loop1]
|
|
mov esi,fill1
|
|
movsb
|
|
|
|
inc dword [cnt_loop1]
|
|
|
|
pop ecx
|
|
loop loop11
|
|
|
|
mov dword [cnt_loop1],2000
|
|
mov dword [cnt_loop2],4581
|
|
|
|
mov ecx,1944
|
|
loop12:
|
|
push ecx
|
|
mov edi,tic_table
|
|
add edi,dword [cnt_loop1]
|
|
mov esi,tic_table
|
|
add esi,dword [cnt_loop2]
|
|
movsb
|
|
|
|
inc dword [cnt_loop1]
|
|
inc dword [cnt_loop2]
|
|
|
|
pop ecx
|
|
loop loop12
|
|
|
|
dec dword [lpress]
|
|
sub dword [linen],81
|
|
|
|
mov dword [xpos],264
|
|
mov dword [ypos],6
|
|
mov dword [clr],480
|
|
call clear
|
|
|
|
call red
|
|
|
|
no_scr:
|
|
ret
|
|
|
|
newline:
|
|
call chscr
|
|
push edx
|
|
mov edx,81
|
|
sub edx,dword [linel]
|
|
add dword [linen],edx
|
|
pop edx
|
|
|
|
inc dword [lpress]
|
|
|
|
mov dword [linel],0
|
|
add dword [xpos],10
|
|
ret
|
|
|
|
fill:
|
|
cld
|
|
mov ecx,81
|
|
mov edi,tic_table+500
|
|
mov esi,fill1
|
|
rep movsb
|
|
ret
|
|
|
|
nparam3:
|
|
cmp byte [callp],1
|
|
je gonext5
|
|
call clearsum
|
|
gonext5:
|
|
call newline
|
|
mov edx,mess9
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
nparam4:
|
|
cmp byte [callp],1
|
|
je gonext6
|
|
call clearsum
|
|
gonext6:
|
|
call newline
|
|
mov edx,mess0
|
|
call printf
|
|
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
jmp ecmd
|
|
|
|
nparam5:
|
|
cmp byte [callp],1
|
|
je gonext14
|
|
call clearsum
|
|
gonext14:
|
|
call newline
|
|
mov edx,mess16
|
|
call printf
|
|
jmp ecmd
|
|
|
|
endscr:
|
|
cmp byte [callp],1
|
|
je ecmd3
|
|
call clearsum
|
|
call newline
|
|
mov edx,mess17
|
|
call printf
|
|
jmp ecmd
|
|
|
|
checkcmd:
|
|
cmp dword [tic_table+600],'help'
|
|
jne no_help
|
|
cmp dword [count],4
|
|
jne no_help
|
|
|
|
jmp help
|
|
|
|
no_help:
|
|
cmp dword [tic_table+600],'exit'
|
|
jne no_exit
|
|
cmp dword [count],4
|
|
jne no_exit
|
|
|
|
jmp exit
|
|
|
|
no_exit:
|
|
cmp word [tic_table+600],'ve'
|
|
jne no_ver
|
|
cmp byte [tic_table+602],'r'
|
|
jne no_ver
|
|
cmp dword [count],3
|
|
jne no_ver
|
|
|
|
jmp ver
|
|
|
|
no_ver:
|
|
cmp word [tic_table+600],'cl'
|
|
jne no_cls
|
|
cmp byte [tic_table+602],'s'
|
|
jne no_cls
|
|
cmp dword [count],3
|
|
jne no_cls
|
|
|
|
jmp cls
|
|
|
|
no_cls:
|
|
cmp dword [tic_table+600],'shut'
|
|
jne no_shutdown
|
|
cmp dword [tic_table+604],'down'
|
|
jne no_shutdown
|
|
cmp dword [count],8
|
|
jne no_shutdown
|
|
|
|
mov eax,18
|
|
mov ebx,1
|
|
int 0x40
|
|
|
|
mov eax,5
|
|
mov ebx,200
|
|
int 0x40
|
|
|
|
no_shutdown:
|
|
cmp word [tic_table+600],'ps'
|
|
jne no_ps
|
|
cmp dword [count],2
|
|
je ps
|
|
|
|
no_ps:
|
|
cmp dword [tic_table+600],'kill'
|
|
jne no_kill
|
|
cmp byte [tic_table+604],' '
|
|
jne no_kill
|
|
cmp dword [count],9
|
|
je kill
|
|
|
|
jmp nparam
|
|
|
|
no_kill:
|
|
cmp dword [tic_table+600],'paus'
|
|
jne no_pause
|
|
cmp byte [tic_table+604],'e'
|
|
jne no_pause
|
|
cmp dword [count],5
|
|
je pause1
|
|
|
|
no_pause:
|
|
cmp dword [tic_table+600],'echo'
|
|
jne no_echo
|
|
cmp dword [count],4
|
|
je echoeol
|
|
cmp byte [tic_table+604],' '
|
|
je echo
|
|
|
|
no_echo:
|
|
cmp word [tic_table+600],'de'
|
|
jne no_del
|
|
cmp byte [tic_table+602],'l'
|
|
jne no_del
|
|
cmp byte [tic_table+603],' '
|
|
jne no_del
|
|
cmp dword [count],3
|
|
je nparam2
|
|
cmp dword [count],4
|
|
je nparam2
|
|
|
|
jmp del
|
|
|
|
no_del:
|
|
cmp word [tic_table+600],'ls'
|
|
jne no_ls
|
|
cmp dword [count],2
|
|
je ls
|
|
cmp dword [count],3
|
|
je ls
|
|
|
|
jmp lscheck
|
|
|
|
no_ls:
|
|
cmp word [tic_table+600],'cp'
|
|
jne no_cp
|
|
cmp dword [count],2
|
|
je nparam3
|
|
cmp dword [count],3
|
|
je nparam3
|
|
cmp dword [count],4
|
|
je nparam3
|
|
cmp dword [count],5
|
|
je nparam3
|
|
cmp byte [tic_table+602],' '
|
|
jne no_cp
|
|
|
|
jmp cp
|
|
|
|
no_cp:
|
|
cmp word [tic_table+600],'rn'
|
|
jne no_rn
|
|
cmp dword [count],2
|
|
je nparam4
|
|
cmp dword [count],3
|
|
je nparam4
|
|
cmp dword [count],4
|
|
je nparam4
|
|
cmp dword [count],5
|
|
je nparam4
|
|
cmp byte [tic_table+602],' '
|
|
jne no_rn
|
|
|
|
jmp rn
|
|
|
|
no_rn:
|
|
cmp dword [tic_table+600],'ends'
|
|
jne no_end
|
|
cmp dword [count],4
|
|
je endscr
|
|
|
|
no_end:
|
|
cmp byte [callp],1
|
|
je checkprg
|
|
|
|
ret
|
|
|
|
checkprg:
|
|
mov ebx,tic_table+600
|
|
push esi edi ecx eax
|
|
mov esi,ebx
|
|
|
|
mov edi,tic_table+600
|
|
mov ecx,74
|
|
strup:
|
|
mov al,[esi]
|
|
cmp al,'A'
|
|
jb @f
|
|
cmp al,'z'
|
|
ja @f
|
|
cmp al,'a'
|
|
jb @f
|
|
add al,-0x20
|
|
@@:
|
|
mov [edi],al
|
|
inc esi
|
|
inc edi
|
|
dec ecx
|
|
jnz strup
|
|
pop eax ecx edi esi
|
|
|
|
mov ecx,dword [count]
|
|
loop20:
|
|
push ecx
|
|
cmp byte [tic_table+600+ecx],'&'
|
|
je chparam
|
|
|
|
pop ecx
|
|
loop loop20
|
|
|
|
cld
|
|
mov ecx,11
|
|
mov edi,tic_table+600
|
|
add edi,dword [count]
|
|
mov esi,qspace
|
|
rep movsb
|
|
|
|
mov eax,19
|
|
mov ebx,tic_table+600
|
|
mov ecx,0
|
|
int 0x40
|
|
|
|
cmp eax,0xfffffff0
|
|
jb cmd_ok_1
|
|
|
|
jmp err
|
|
|
|
cmd_ok_1:
|
|
mov eax,dword [count]
|
|
mov dword [ipccount],eax
|
|
|
|
cmd_ok:
|
|
mov eax,60
|
|
mov ebx,1
|
|
mov ecx,ipcb
|
|
mov edx,118
|
|
int 0x40
|
|
|
|
call clearipc
|
|
|
|
mov eax,40
|
|
mov ebx,01000111b
|
|
int 0x40
|
|
|
|
mov eax,23
|
|
mov ebx,10
|
|
int 0x40
|
|
|
|
cmp eax,7
|
|
jne noipc
|
|
|
|
cmp byte [callp],1
|
|
je printipcprgname
|
|
|
|
call clearsum
|
|
|
|
ipccontinue:
|
|
mov eax,9
|
|
mov ebx,tic_table+100000
|
|
mov ecx,-1
|
|
int 0x40
|
|
|
|
mov ecx,eax
|
|
loopfindipc:
|
|
push ecx
|
|
|
|
mov eax,9
|
|
mov ebx,tic_table+100000
|
|
int 0x40
|
|
|
|
mov bl,[tic_table+600]
|
|
cmp byte [tic_table+100000+10],bl
|
|
jne goonipc
|
|
cmp dword [ipccount],1
|
|
je ipcfinished
|
|
|
|
mov bl,[tic_table+601]
|
|
cmp byte [tic_table+100000+11],bl
|
|
jne goonipc
|
|
cmp dword [ipccount],2
|
|
je ipcfinished
|
|
|
|
mov bl,[tic_table+602]
|
|
cmp byte [tic_table+100000+12],bl
|
|
jne goonipc
|
|
cmp dword [ipccount],3
|
|
je ipcfinished
|
|
|
|
mov bl,[tic_table+603]
|
|
cmp byte [tic_table+100000+13],bl
|
|
jne goonipc
|
|
cmp dword [ipccount],4
|
|
je ipcfinished
|
|
|
|
mov bl,[tic_table+604]
|
|
cmp byte [tic_table+100000+14],bl
|
|
jne goonipc
|
|
cmp dword [ipccount],5
|
|
je ipcfinished
|
|
|
|
mov bl,[tic_table+605]
|
|
cmp byte [tic_table+100000+15],bl
|
|
jne goonipc
|
|
cmp dword [ipccount],6
|
|
je ipcfinished
|
|
|
|
mov bl,[tic_table+606]
|
|
cmp byte [tic_table+100000+16],bl
|
|
jne goonipc
|
|
cmp dword [ipccount],7
|
|
je ipcfinished
|
|
|
|
mov bl,[tic_table+607]
|
|
cmp byte [tic_table+100000+17],bl
|
|
jne goonipc
|
|
|
|
goonipc:
|
|
pop ecx
|
|
dec ecx
|
|
jnz loopfindipc
|
|
|
|
ipcfinished:
|
|
mov ebx,[tic_table+100000+30]
|
|
mov dword [ipcpid],ebx
|
|
|
|
mov eax,60
|
|
mov ebx,2
|
|
mov ecx,dword [ipcpid]
|
|
mov edx,ddot
|
|
mov esi,1
|
|
int 0x40
|
|
|
|
call newline
|
|
call clearipc
|
|
|
|
jmp waitipc
|
|
|
|
printipcprgname:
|
|
call newline
|
|
call printcmd
|
|
jmp ipccontinue
|
|
|
|
noipc:
|
|
cmp byte [callp],1
|
|
je prtcmd
|
|
|
|
call clearsum
|
|
|
|
jmp cmd_ok2
|
|
|
|
printcmd:
|
|
mov eax,4
|
|
mov ebx,6
|
|
shl ebx,16
|
|
add ebx,[xpos]
|
|
mov edx,tic_table+600
|
|
mov ecx,0x00ddeeff
|
|
mov esi,dword [count]
|
|
int 0x40
|
|
|
|
cld
|
|
mov ecx,dword [count]
|
|
mov edi,tic_table
|
|
add edi,dword [linen]
|
|
mov esi,tic_table+600
|
|
rep movsb
|
|
|
|
mov eax,dword [count]
|
|
add dword [linen],eax
|
|
add dword [linel],eax
|
|
|
|
ret
|
|
|
|
prtcmd:
|
|
call newline
|
|
call printcmd
|
|
jmp go
|
|
|
|
cmd_ok2:
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
ret
|
|
|
|
waitipc:
|
|
mov eax,40
|
|
mov ebx,01000111b
|
|
int 0x40
|
|
|
|
mov eax,10
|
|
int 0x40
|
|
|
|
cmp eax,7
|
|
je ipcok
|
|
cmp eax,1
|
|
je reipc
|
|
cmp eax,3
|
|
je exit
|
|
cmp eax,2
|
|
je keyipc
|
|
|
|
jmp waitipc
|
|
|
|
keyipc:
|
|
mov eax,2
|
|
int 0x40
|
|
|
|
jmp waitipc
|
|
|
|
reipc:
|
|
call draw
|
|
call red
|
|
|
|
jmp waitipc
|
|
|
|
clearipc:
|
|
cld
|
|
mov ecx,118
|
|
mov edi,ipcb
|
|
mov esi,ipcc
|
|
rep movsb
|
|
|
|
ret
|
|
|
|
ipcok:
|
|
cmp dword [ipcb+16],'~ccc'
|
|
je ipccls
|
|
cmp dword [ipcb+16],'~eee'
|
|
je endipc
|
|
cmp dword [ipcb+16],'~lll'
|
|
je ipcline
|
|
cmp dword [ipcb+16],'~ppp'
|
|
je ipcprint
|
|
cmp dword [ipcb+16],'~kkk'
|
|
je ipckey
|
|
|
|
jmp waitipc
|
|
|
|
reipc2:
|
|
call draw
|
|
call red
|
|
|
|
ipckey:
|
|
mov eax,10
|
|
int 0x40
|
|
|
|
cmp eax,1
|
|
je reipc2
|
|
cmp eax,3
|
|
je exit
|
|
cmp eax,2
|
|
je ipckeypressed
|
|
|
|
jmp ipckey
|
|
|
|
ipckeypressed:
|
|
mov eax,2
|
|
int 0x40
|
|
|
|
mov byte [ipckeyvalue],ah
|
|
|
|
mov eax,60
|
|
mov ebx,2
|
|
mov ecx,dword [ipcpid]
|
|
mov edx,ipckeyvalue
|
|
mov esi,1
|
|
int 0x40
|
|
|
|
call clearipc
|
|
jmp waitipc
|
|
|
|
ipccls:
|
|
call cls2
|
|
call clearipc
|
|
jmp waitipc
|
|
|
|
ipcline:
|
|
call newline
|
|
call clearipc
|
|
jmp waitipc
|
|
|
|
ipcprint:
|
|
mov edx,ipcb+20
|
|
call printipc
|
|
call clearipc
|
|
jmp waitipc
|
|
|
|
endipc:
|
|
cmp byte [callp],1
|
|
je go
|
|
|
|
call clearsum
|
|
|
|
jmp ecmd
|
|
|
|
cmdexist:
|
|
mov eax,9
|
|
mov ebx,tic_table
|
|
mov ecx,-1
|
|
int 0x40
|
|
|
|
mov ecx,eax
|
|
loopex:
|
|
push ecx
|
|
|
|
mov eax,9
|
|
mov ebx,I_END
|
|
int 0x40
|
|
|
|
cmp word [I_END+10],'CM'
|
|
jne no_cmd
|
|
cmp byte [I_END+12],'D'
|
|
jne no_cmd
|
|
|
|
inc byte [cmd_ex]
|
|
|
|
cmp byte [cmd_ex],2
|
|
je exit
|
|
|
|
no_cmd:
|
|
pop ecx
|
|
loop loopex
|
|
|
|
ret
|
|
|
|
title:
|
|
db 'CMD - Command line interpreter'
|
|
title_end:
|
|
|
|
smb_cursor db '|'
|
|
|
|
prompt db 'CMD>>'
|
|
|
|
h1 db ' CMD - Command line interpreter version 0.26 '
|
|
h2 db ' copyleft Chemist - dmitry_gt@tut.by '
|
|
h3 db ' Available commands: '
|
|
h4 db ' HELP - Display this text LS - List files '
|
|
h5 db ' EXIT - Exit Programm CP - Copy file '
|
|
h6 db ' CLS - Clear Screen PS - Process info '
|
|
h7 db ' KILL - Kill Process RN - Rename File '
|
|
h8 db ' VER - Display programm version '
|
|
h9 db ' DEL - Delete file from ramdisk '
|
|
h10 db ' SHUTDOWN - Quit Menuet '
|
|
h11 db ' PAUSE - Wait for keypress '
|
|
h12 db ' ECHO - Print text to screen '
|
|
h13 db ' ENDS - End script '
|
|
h14 db ' /[filename] - Execute script '
|
|
h15 db ' Use & symbol to enter params: '
|
|
h16 db ' tinypad&cmd.asm - open cmd.asm '
|
|
|
|
about db 'Command Line Interpreter version 0.26 '
|
|
|
|
err1 db 'Unknown command or filename'
|
|
|
|
proc_head db ' PID Name Start Length Proc_NUMB '
|
|
proc_hd11 db '-------------------------------------------- '
|
|
|
|
mess1 db 'Press any key to continue (ESC - Cancel)... '
|
|
mess2 db 'Plz specify a 4 byte process number (not PID) '
|
|
mess3 db 'Process with number you specified has been '
|
|
mess4 db 'terminated. '
|
|
mess5 db 'Usage: del [filename] '
|
|
mess6 db 'Filename you specified has been deleted. '
|
|
mess7 db 'No such file! '
|
|
mess8 db 'No such process! '
|
|
mess9 db 'Usage: cp [source_file+destination_file] '
|
|
mess0 db 'Usage: rn [source_file+destination_file] '
|
|
|
|
mess11 db 'File successfully copied '
|
|
mess12 db 'ERROR: Can not copy file! '
|
|
mess13 db 'ERROR: Output file alredy exist! '
|
|
mess14 db 'File successfully renamed '
|
|
mess15 db 'ERROR: Can not rename file! '
|
|
mess16 db 'You must specify a command script filename! '
|
|
mess17 db 'This command is available only in scripts! '
|
|
|
|
|
|
linen dd 2000
|
|
lpress dd 1
|
|
linel dd 0
|
|
linev dd 2000
|
|
stnum dd 1
|
|
rdstat dd 0
|
|
|
|
ypos dd 6
|
|
xpos dd 24
|
|
count dd 0
|
|
clr dd 0
|
|
smb db 0
|
|
pn dd 0
|
|
count2 dd 0
|
|
count3 dd 9
|
|
oldcount dd 0
|
|
oldcount1 dd 0
|
|
|
|
fnumb dd 0
|
|
n1 dd 0
|
|
n2 dd 0
|
|
n3 dd 0
|
|
n4 dd 0
|
|
n5 dd 0
|
|
n6 dd 0
|
|
n7 dd 0
|
|
n8 dd 0
|
|
|
|
ddot db '.'
|
|
dcmd db '.CMD',0
|
|
|
|
cnt_loop1 dd 0
|
|
cnt_loop2 dd 0
|
|
|
|
lscnt dd 8024
|
|
blockcnt dd 0
|
|
lscntf db 0
|
|
lscntx db 0
|
|
|
|
filesize dd 0
|
|
filesize2 dd 0
|
|
|
|
readcnt dd 15000
|
|
readcnt2 dd 0
|
|
|
|
callp db 0
|
|
callp2 db 0
|
|
|
|
fill1 db ' '
|
|
fill3 db ' ',0
|
|
|
|
pname db ' ',0
|
|
autoexfile db 'AUTOEXEC.CMD',0
|
|
filename db ' ',0
|
|
|
|
dzero db 0,0,0,0
|
|
qspace db ' '
|
|
|
|
f1len dd 0
|
|
f2len dd 0
|
|
|
|
ipcpid dd 0
|
|
|
|
ipckeyvalue db 0
|
|
|
|
ipccount dd 0
|
|
|
|
cmd_ex db 0
|
|
|
|
ipcb:
|
|
db 0
|
|
db 0,0,0
|
|
dd 8
|
|
times 110 db 0
|
|
|
|
ipcc:
|
|
db 0
|
|
db 0,0,0
|
|
dd 8
|
|
times 110 db 0
|
|
|
|
I_END:
|
|
|
|
tic_table: |