small change. Add make a fdd image.
git-svn-id: svn://kolibrios.org@1151 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -13,4 +13,8 @@ echo ==============================
|
|||||||
echo ** building firs loader for fat32 **
|
echo ** building firs loader for fat32 **
|
||||||
@fasm -m 65535 fat32/bootsect.asm fat32/bootsect.bin
|
@fasm -m 65535 fat32/bootsect.asm fat32/bootsect.bin
|
||||||
@fasm -m 65535 fat32/kordldr.f1x.asm fat32/kordldr.f1x
|
@fasm -m 65535 fat32/kordldr.f1x.asm fat32/kordldr.f1x
|
||||||
|
echo ==============================
|
||||||
|
echo ** make a image of fdd **
|
||||||
|
@fasm -m 65535 floppy.asc kord.img
|
||||||
|
|
||||||
@pause
|
@pause
|
||||||
|
49
kernel/trunk/sec_loader/trunk/boot/floppy.asc
Normal file
49
kernel/trunk/sec_loader/trunk/boot/floppy.asc
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
include "mkfloppy.inc"
|
||||||
|
;// insert boot sect
|
||||||
|
file "fat1x/bootsect.bin", 512
|
||||||
|
|
||||||
|
; fat1
|
||||||
|
db 0F0h, 0FFh, 0FFh, 9*512-3 dup 0
|
||||||
|
; fat2
|
||||||
|
db 0F0h, 0FFh, 0FFh, 9*512-3 dup 0
|
||||||
|
|
||||||
|
; root
|
||||||
|
dent kordldr, "KORDLDR F1X", FA_ARC
|
||||||
|
dent kord, "KORD ",FA_DIR
|
||||||
|
dent kolibri, "KOLIBRI ",FA_DIR
|
||||||
|
; ...
|
||||||
|
|
||||||
|
rb 33*512-$
|
||||||
|
;///////////////////////////
|
||||||
|
defdir kord
|
||||||
|
{
|
||||||
|
dent loader, "LOADER ", FA_ARC
|
||||||
|
dent ini,"STARTOS INI", FA_ARC
|
||||||
|
}
|
||||||
|
|
||||||
|
defdir kolibri
|
||||||
|
{
|
||||||
|
dent kolibri_ldm, "KOLIBRI LDM", FA_ARC
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; data
|
||||||
|
stof kordldr, "fat1x/kordldr.f1x"
|
||||||
|
stod kord,root
|
||||||
|
|
||||||
|
stof loader, "../loader"
|
||||||
|
stof ini,"../startos.ini"
|
||||||
|
|
||||||
|
store dword ini_base/512+1 at ini_base+1F8h
|
||||||
|
store word (ini_size+511)/512-1 at ini_base+1FCh
|
||||||
|
store word 220h at ini_base+1FEh
|
||||||
|
|
||||||
|
stod kolibri,root
|
||||||
|
stof kolibri_ldm, "../kolibri_ldm/bin/kolibri.ldm"
|
||||||
|
store dword kolibri_ldm_base/512+1 at kolibri_ldm_base+1F8h
|
||||||
|
store word (kolibri_ldm_size+511)/512-1 at kolibri_ldm_base+1FCh
|
||||||
|
store word 220h at kolibri_ldm_base+1FEh
|
||||||
|
|
||||||
|
|
||||||
|
; ...
|
||||||
|
rb 2*80*18*512-$
|
90
kernel/trunk/sec_loader/trunk/boot/mkfloppy.inc
Normal file
90
kernel/trunk/sec_loader/trunk/boot/mkfloppy.inc
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; mkfloppy.inc
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; Created by Phantom-84
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FA_RO equ 01h
|
||||||
|
FA_HID equ 02h
|
||||||
|
FA_SYS equ 04h
|
||||||
|
FA_VOL equ 08h
|
||||||
|
FA_DIR equ 10h
|
||||||
|
FA_ARC equ 20h
|
||||||
|
|
||||||
|
DSTAMP equ 28C1h
|
||||||
|
TSTAMP equ 6000h
|
||||||
|
|
||||||
|
root_size=0
|
||||||
|
|
||||||
|
macro reset id
|
||||||
|
{
|
||||||
|
local count, cur, disp, val, var
|
||||||
|
times 511-($+511) mod 512 db 0
|
||||||
|
if id#_size>0
|
||||||
|
count=(id#_size+511)/512
|
||||||
|
cur=id#_base/512-(33-2)
|
||||||
|
repeat count
|
||||||
|
if %=count
|
||||||
|
val=0FFFh
|
||||||
|
else
|
||||||
|
val=cur+1
|
||||||
|
end if
|
||||||
|
if cur and 1
|
||||||
|
val=val shl 4
|
||||||
|
end if
|
||||||
|
disp=(cur*3)/2
|
||||||
|
load var word from 512+disp
|
||||||
|
var=var or val
|
||||||
|
store word var at 512+disp
|
||||||
|
store word var at 10*512+disp
|
||||||
|
cur=cur+1
|
||||||
|
end repeat
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro dent id, name, attr
|
||||||
|
{
|
||||||
|
@@ db name
|
||||||
|
times @b+11-$ db 32
|
||||||
|
db attr
|
||||||
|
dw 0, TSTAMP, DSTAMP, DSTAMP, 0, TSTAMP, DSTAMP
|
||||||
|
if id#_size=0
|
||||||
|
dw 0
|
||||||
|
else
|
||||||
|
dw id#_base/512-(33-2)
|
||||||
|
end if
|
||||||
|
if (attr) and FA_DIR
|
||||||
|
dd 0
|
||||||
|
else
|
||||||
|
dd id#_size
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
macro orgdir id, parentid
|
||||||
|
{
|
||||||
|
id#_base:
|
||||||
|
dent id, ".", FA_DIR
|
||||||
|
dent parentid, "..", FA_DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
macro findir id
|
||||||
|
{
|
||||||
|
id#_size=$-id#_base
|
||||||
|
reset id
|
||||||
|
}
|
||||||
|
|
||||||
|
macro stod id, parentid
|
||||||
|
{
|
||||||
|
orgdir id, parentid
|
||||||
|
id
|
||||||
|
findir id
|
||||||
|
}
|
||||||
|
|
||||||
|
macro stof id, name
|
||||||
|
{
|
||||||
|
id#_base: file name
|
||||||
|
id#_size=$-id#_base
|
||||||
|
reset id
|
||||||
|
}
|
||||||
|
|
||||||
|
defdir fix macro
|
@@ -31,14 +31,14 @@
|
|||||||
;======================================================================
|
;======================================================================
|
||||||
|
|
||||||
|
|
||||||
version db 'Secondary Loader v 0.009',0
|
version db 'Secondary Loader v 0.010',0
|
||||||
version_end:
|
version_end:
|
||||||
|
|
||||||
select_section db 'Select section:'
|
select_section db 'Select section:'
|
||||||
select_section_end:
|
select_section_end:
|
||||||
section_description db 'Section description:'
|
section_description db 'Section description:'
|
||||||
section_description_end:
|
section_description_end:
|
||||||
soft_mes db 'Soft (c) 2008'
|
soft_mes db 'Soft (c) 2008-2009'
|
||||||
soft_mes_end:
|
soft_mes_end:
|
||||||
|
|
||||||
badprocessor db '>Fatal - CPU 586+ required.',0
|
badprocessor db '>Fatal - CPU 586+ required.',0
|
||||||
@@ -58,7 +58,7 @@ load_ini db '>Ini file loaded successfully',0
|
|||||||
parse_ini_end db '>End parsing ini file',0
|
parse_ini_end db '>End parsing ini file',0
|
||||||
point_to_default_sec_not_found db '>Point to default section is not found in ini file',0
|
point_to_default_sec_not_found db '>Point to default section is not found in ini file',0
|
||||||
incorect_section_define db ">Incorect section define not found ']'",0
|
incorect_section_define db ">Incorect section define not found ']'",0
|
||||||
default_section_name db '"Section unname"'
|
default_section_name db '"Section unname"'
|
||||||
|
|
||||||
start_msg db "Press any key to change default section, press [Enter] to continue booting"
|
start_msg db "Press any key to change default section, press [Enter] to continue booting"
|
||||||
start_msg_e:
|
start_msg_e:
|
||||||
|
@@ -26,11 +26,12 @@
|
|||||||
|
|
||||||
;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
If DEBUG
|
If DEBUG
|
||||||
stack_msg db 'Set stack & segments is have completed',0
|
cseg_msg db ' - Adress of code segment',0
|
||||||
show_string db 'Have loaded size:'
|
stack_msg db 'Set stack & segments is have completed',0
|
||||||
show_decode db ' ',0
|
show_string db 'Have loaded size:'
|
||||||
show_db1 db ' -Message debug1',0
|
show_decode db ' ',0
|
||||||
show_db2 db ' -Message debug2',0
|
show_db1 db ' -Message debug1',0
|
||||||
|
show_db2 db ' -Message debug2',0
|
||||||
|
|
||||||
|
|
||||||
lm_l_found db '[loader] is found',0
|
lm_l_found db '[loader] is found',0
|
||||||
@@ -45,23 +46,24 @@ _not_found db '[ not found',0
|
|||||||
_found_1 db '[] found',0
|
_found_1 db '[] found',0
|
||||||
_found_2 db '[ found',0
|
_found_2 db '[ found',0
|
||||||
say_hello db 'Hello $)',0
|
say_hello db 'Hello $)',0
|
||||||
ramdiskFS_st db 'Start use_RamdiskFS macros',0
|
ramdiskFS_st db 'Start use_RamdiskFS macros',0
|
||||||
free_memory_msg db ' -Kb availability system free memory',0
|
free_memory_msg db ' -Kb availability system free memory',0
|
||||||
RamdiskSize_msg db ' -Kb equal RamdiskSize',0
|
RamdiskSize_msg db ' -Kb equal RamdiskSize',0
|
||||||
RamdiskSector_msg db ' -byts RamdiskSector',0
|
RamdiskSector_msg db ' -byts RamdiskSector',0
|
||||||
RamdiskCluster_msg db ' -RamdiskCluster',0
|
RamdiskCluster_msg db ' -RamdiskCluster',0
|
||||||
RamdiskFile_msg db ' -size RamdiskFile',0
|
RamdiskFile_msg db ' -size RamdiskFile',0
|
||||||
fat_create_msg db ' -first create fat table, point to next block',0
|
fat_create_msg db ' -first create fat table, point to next block',0
|
||||||
BPB_msg db ' -in byte, why we get data from move BPB struct',0
|
BPB_msg db ' -in byte, why we get data from move BPB struct',0
|
||||||
firstDataSect_msg db ' -first data sector, offset to data in sectors',0
|
firstDataSect_msg db ' -first data sector, offset to data in sectors',0
|
||||||
size_root_dir_msg db ' -size root dir in sectrors',0
|
size_root_dir_msg db ' -size root dir in sectrors',0
|
||||||
DataClasters_msg db ' -size data in Clasters',0
|
DataClasters_msg db ' -size data in Clasters',0
|
||||||
check_name_fat_msg db ' -if -1 name is present, else 0 then not present name',0
|
check_name_fat_msg db ' -if -1 name is present, else 0 then not present name',0
|
||||||
convertion_file_name_msg db ' -if -1, then destination name is bad',0
|
convertion_file_name_msg db ' -if -1, then destination name of file is bad',0
|
||||||
|
start_making_FAT12_msg db '>>>>>> Begin making fat12 FS on RAMDISK <<<<<<<',0
|
||||||
make_fat12_RFS_msg db '-Make FAT12 Ram FS',0
|
make_fat12_RFS_msg db '-Make FAT12 Ram FS',0
|
||||||
get_type_FS_msg db '-End make RamDisk',0
|
get_type_FS_msg db '-End make RamDisk',0
|
||||||
return_code_af_move db ' -return code after 0x87 int 0x15, move block',0
|
return_code_af_move db ' -return code after 0x87 int 0x15, move block',0
|
||||||
return_code_af_fat_m db ' -return code after 0x87 int 0x15, move fat struc',0
|
return_code_af_fat_m db ' -return code after 0x87 int 0x15, move fat struc',0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
635
kernel/trunk/sec_loader/trunk/listing.inc
Normal file
635
kernel/trunk/sec_loader/trunk/listing.inc
Normal file
@@ -0,0 +1,635 @@
|
|||||||
|
; Listing generator
|
||||||
|
; LocoDelAssembly 2007.06.01
|
||||||
|
|
||||||
|
INSTRUCTIONS equ bt in ja jb jc je jg jl jo jp js jz or \
|
||||||
|
aaa aad aam aas adc add and bsf bsr btc btr bts cbw cdq clc \
|
||||||
|
cld cli cmc cmp cqo cwd daa das dec div fld fst hlt inc ins \
|
||||||
|
int jae jbe jge jle jmp jna jnb jnc jne jng jnl jno jnp jns \
|
||||||
|
jnz jpe jpo lar lds lea les lfs lgs lsl lss ltr mov mul neg \
|
||||||
|
nop not out pop por rcl rcr ret rol ror rsm sal sar sbb shl \
|
||||||
|
shr stc std sti str sub ud2 xor \
|
||||||
|
arpl call cdqe clgi clts cmps cwde emms fabs fadd fbld fchs \
|
||||||
|
fcom fcos fdiv feni fild fist fld1 fldz fmul fnop fsin fstp \
|
||||||
|
fsub ftst fxam fxch idiv imul insb insd insw int1 int3 into \
|
||||||
|
invd iret jcxz jnae jnbe jnge jnle lahf lgdt lidt lldt lmsw \
|
||||||
|
lods loop movd movq movs orpd orps outs pand popa popd popf \
|
||||||
|
popq popw push pxor retd retf retn retq retw sahf salc scas \
|
||||||
|
seta setb setc sete setg setl seto setp sets setz sgdt shld \
|
||||||
|
shrd sidt sldt smsw stgi stos test verr verw wait xadd xchg \
|
||||||
|
xlat \
|
||||||
|
addpd addps addsd addss andpd andps bound bswap cmova cmovb \
|
||||||
|
cmovc cmove cmovg cmovl cmovo cmovp cmovs cmovz cmppd cmpps \
|
||||||
|
cmpsb cmpsd cmpsq cmpss cmpsw cpuid divpd divps divsd divss \
|
||||||
|
enter f2xm1 faddp fbstp fclex fcomi fcomp fdisi fdivp fdivr \
|
||||||
|
femms ffree fiadd ficom fidiv fimul finit fistp fisub fldcw \
|
||||||
|
fldpi fmulp fneni fprem fptan fsave fsqrt fstcw fstsw fsubp \
|
||||||
|
fsubr fucom fwait fyl2x icebp iretd iretq iretw jecxz jrcxz \
|
||||||
|
lddqu leave lodsb lodsd lodsq lodsw loopd loope loopq loopw \
|
||||||
|
loopz maxpd maxps maxsd maxss minpd minps minsd minss movsb \
|
||||||
|
movsd movsq movss movsw movsx movzx mulpd mulps mulsd mulss \
|
||||||
|
mwait outsb outsd outsw pabsb pabsd pabsw paddb paddd paddq \
|
||||||
|
paddw pandn pause pavgb pavgw pf2id pf2iw pfacc pfadd pfmax \
|
||||||
|
pfmin pfmul pfrcp pfsub pi2fd pi2fw popad popaw popfd popfq \
|
||||||
|
popfw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb \
|
||||||
|
psubd psubq psubw pusha pushd pushf pushq pushw rcpps rcpss \
|
||||||
|
rdmsr rdpmc rdtsc retfd retfq retfw retnd retnq retnw scasb \
|
||||||
|
scasd scasq scasw setae setbe setge setle setna setnb setnc \
|
||||||
|
setne setng setnl setno setnp setns setnz setpe setpo stosb \
|
||||||
|
stosd stosq stosw subpd subps subsd subss vmrun vmxon wrmsr \
|
||||||
|
xlatb xorpd xorps \
|
||||||
|
andnpd andnps cmovae cmovbe cmovge cmovle cmovna cmovnb cmovnc\
|
||||||
|
cmovne cmovng cmovnl cmovno cmovnp cmovns cmovnz cmovpe cmovpo\
|
||||||
|
comisd comiss fcmovb fcmove fcmovu fcomip fcompp fdivrp ffreep\
|
||||||
|
ficomp fidivr fisttp fisubr fldenv fldl2e fldl2t fldlg2 fldln2\
|
||||||
|
fnclex fndisi fninit fnsave fnstcw fnstsw fpatan fprem1 frstor\
|
||||||
|
frstpm fscale fsetpm fstenv fsubrp fucomi fucomp fxsave haddpd\
|
||||||
|
haddps hsubpd hsubps invlpg lfence looped loopeq loopew loopne\
|
||||||
|
loopnz loopzd loopzq loopzw mfence movapd movaps movdqa movdqu\
|
||||||
|
movhpd movhps movlpd movlps movnti movntq movsxd movupd movups\
|
||||||
|
paddsb paddsw pextrw pfnacc pfsubr phaddd phaddw phsubd phsubw\
|
||||||
|
pinsrw pmaxsw pmaxub pminsw pminub pmulhw pmullw psadbw pshufb\
|
||||||
|
pshufd pshufw psignb psignd psignw pslldq psrldq psubsb psubsw\
|
||||||
|
pswapd pushad pushaw pushfd pushfq pushfw rdmsrq rdtscp setalc\
|
||||||
|
setnae setnbe setnge setnle sfence shufpd shufps skinit sqrtpd\
|
||||||
|
sqrtps sqrtsd sqrtss swapgs sysret vmcall vmload vmread vmsave\
|
||||||
|
vmxoff wbinvd wrmsrq \
|
||||||
|
clflush cmovnae cmovnbe cmovnge cmovnle cmpeqpd cmpeqps \
|
||||||
|
cmpeqsd cmpeqss cmplepd cmpleps cmplesd cmpless cmpltpd \
|
||||||
|
cmpltps cmpltsd cmpltss cmpxchg fcmovbe fcmovnb fcmovne \
|
||||||
|
fcmovnu fdecstp fincstp fnstenv frndint fsincos fucomip \
|
||||||
|
fucompp fxrstor fxtract fyl2xp1 invlpga ldmxcsr loopned \
|
||||||
|
loopneq loopnew loopnzd loopnzq loopnzw monitor movddup \
|
||||||
|
movdq2q movhlps movlhps movntdq movntpd movntps movq2dq \
|
||||||
|
paddusb paddusw palignr pavgusb pcmpeqb pcmpeqd pcmpeqw \
|
||||||
|
pcmpgtb pcmpgtd pcmpgtw pfcmpeq pfcmpge pfcmpgt pfpnacc \
|
||||||
|
pfrsqrt phaddsw phsubsw pmaddwd pmulhrw pmulhuw pmuludq \
|
||||||
|
pshufhw pshuflw psubusb psubusw rsqrtps rsqrtss stmxcsr \
|
||||||
|
syscall sysexit sysretq ucomisd ucomiss vmclear vmmcall \
|
||||||
|
vmptrld vmptrst vmwrite \
|
||||||
|
addsubpd addsubps cmpneqpd cmpneqps cmpneqsd cmpneqss cmpnlepd\
|
||||||
|
cmpnleps cmpnlesd cmpnless cmpnltpd cmpnltps cmpnltsd cmpnltss\
|
||||||
|
cmpordpd cmpordps cmpordsd cmpordss cvtdq2pd cvtdq2ps cvtpd2dq\
|
||||||
|
cvtpd2pi cvtpd2ps cvtpi2pd cvtpi2ps cvtps2dq cvtps2pd cvtps2pi\
|
||||||
|
cvtsd2si cvtsd2ss cvtsi2sd cvtsi2ss cvtss2sd cvtss2si fcmovnbe\
|
||||||
|
maskmovq movmskpd movmskps movshdup movsldup packssdw packsswb\
|
||||||
|
packuswb pfrcpit1 pfrcpit2 pfrsqit1 pmovmskb pmulhrsw prefetch\
|
||||||
|
sysenter sysexitq unpckhpd unpckhps unpcklpd unpcklps vmlaunch\
|
||||||
|
vmresume \
|
||||||
|
cmpxchg8b cvttpd2dq cvttpd2pi cvttps2dq cvttps2pi cvttsd2si \
|
||||||
|
cvttss2si pmaddubsw prefetchw punpckhbw punpckhdq punpckhwd \
|
||||||
|
punpcklbw punpckldq punpcklwd \
|
||||||
|
cmpunordpd cmpunordps cmpunordsd cmpunordss cmpxchg16b \
|
||||||
|
loadall286 loadall386 maskmovdqu prefetcht0 prefetcht1 \
|
||||||
|
prefetcht2 punpckhqdq punpcklqdq prefetchnta
|
||||||
|
|
||||||
|
PREFIXES equ rep lock repe repz repne repnz
|
||||||
|
|
||||||
|
DATA_DEFINITORS equ db dw du dd dp df dq dt file
|
||||||
|
DATA_RESERVERS equ rb rw rd rp rf rq rt
|
||||||
|
|
||||||
|
CRLF equ 13, 10 ; Remove 13 for Linux
|
||||||
|
MAX_BYTES equ 13
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MODE MACROSES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
macro use16
|
||||||
|
{
|
||||||
|
use16
|
||||||
|
_USE = 16
|
||||||
|
}
|
||||||
|
|
||||||
|
macro use32
|
||||||
|
{
|
||||||
|
use32
|
||||||
|
_USE = 32
|
||||||
|
}
|
||||||
|
|
||||||
|
macro use64
|
||||||
|
{
|
||||||
|
use64
|
||||||
|
_USE = 64
|
||||||
|
}
|
||||||
|
|
||||||
|
macro detect_mode
|
||||||
|
{
|
||||||
|
local aux
|
||||||
|
|
||||||
|
_USE = 32
|
||||||
|
|
||||||
|
virtual at 0
|
||||||
|
xchg eax, eax
|
||||||
|
load aux byte from 0
|
||||||
|
|
||||||
|
if aux = $66
|
||||||
|
_USE = 16
|
||||||
|
else if aux = $87
|
||||||
|
_USE = 64
|
||||||
|
end if
|
||||||
|
end virtual
|
||||||
|
}
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISPLAYING MACROSES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
macro display_address address*
|
||||||
|
{
|
||||||
|
local aux, digit
|
||||||
|
|
||||||
|
aux = address
|
||||||
|
|
||||||
|
repeat _USE / 4
|
||||||
|
digit = aux shr (_USE - 4 * %) and $F
|
||||||
|
|
||||||
|
display digit + '0' + ('9' - 'B') and (9 - digit) shr 4 and $F
|
||||||
|
end repeat
|
||||||
|
|
||||||
|
display ': '
|
||||||
|
}
|
||||||
|
|
||||||
|
macro display_bytes pointer
|
||||||
|
{
|
||||||
|
local aux, size, digit
|
||||||
|
|
||||||
|
size = $ - pointer
|
||||||
|
|
||||||
|
if size > MAX_BYTES
|
||||||
|
size = MAX_BYTES
|
||||||
|
end if
|
||||||
|
|
||||||
|
repeat size
|
||||||
|
load aux byte from pointer+%-1
|
||||||
|
|
||||||
|
digit = aux shr 4
|
||||||
|
display digit + '0' + ('9' - 'B') and (9 - digit) shr 4 and $F
|
||||||
|
|
||||||
|
digit = aux and $F
|
||||||
|
display digit + '0' + ('9' - 'B') and (9 - digit) shr 4 and $F
|
||||||
|
|
||||||
|
|
||||||
|
display ' '
|
||||||
|
end repeat
|
||||||
|
|
||||||
|
repeat MAX_BYTES - size
|
||||||
|
display ' '
|
||||||
|
end repeat
|
||||||
|
}
|
||||||
|
|
||||||
|
; The macro below in some situations doesn't adds a space to separate things unfortunatelly, so for readability ensurance
|
||||||
|
; another one will be used instead...
|
||||||
|
;macro display_args [args]
|
||||||
|
;{
|
||||||
|
;common
|
||||||
|
; aux = 1
|
||||||
|
;
|
||||||
|
;forward
|
||||||
|
; if ~args eq
|
||||||
|
; if aux
|
||||||
|
; display ' '
|
||||||
|
; else
|
||||||
|
; display ', '
|
||||||
|
; end if
|
||||||
|
;
|
||||||
|
; aux = 0
|
||||||
|
;
|
||||||
|
; match =ON, _RESOLVE_EQUATES
|
||||||
|
; \{
|
||||||
|
; match args, args
|
||||||
|
; \\{
|
||||||
|
; irps arg, args
|
||||||
|
; \\\{
|
||||||
|
; display \\\`arg
|
||||||
|
; \\\}
|
||||||
|
; \\}
|
||||||
|
; \}
|
||||||
|
; match =OFF, _RESOLVE_EQUATES
|
||||||
|
; \{
|
||||||
|
; irps arg, args
|
||||||
|
; \\{
|
||||||
|
; display \\`arg
|
||||||
|
; \\}
|
||||||
|
;
|
||||||
|
; \}
|
||||||
|
; end if
|
||||||
|
;}
|
||||||
|
|
||||||
|
; This one separates everything with one space. A very ugly listing but at least you will not see things
|
||||||
|
; like "push ebxesiedi" nor "ret word0"
|
||||||
|
|
||||||
|
macro display_args [args]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
aux = 1
|
||||||
|
|
||||||
|
forward
|
||||||
|
if ~args eq
|
||||||
|
if ~aux
|
||||||
|
display ','
|
||||||
|
end if
|
||||||
|
|
||||||
|
aux = 0
|
||||||
|
|
||||||
|
match =ON, _RESOLVE_EQUATES
|
||||||
|
\{
|
||||||
|
match args, args
|
||||||
|
\\{
|
||||||
|
if ~args eqtype ""
|
||||||
|
irps arg, args
|
||||||
|
\\\{
|
||||||
|
display ' ', \\\`arg
|
||||||
|
\\\}
|
||||||
|
else
|
||||||
|
display " '", args, "'"
|
||||||
|
end if
|
||||||
|
\\}
|
||||||
|
\}
|
||||||
|
match =OFF, _RESOLVE_EQUATES
|
||||||
|
\{
|
||||||
|
if ~args eqtype ""
|
||||||
|
irps arg, args
|
||||||
|
\\{
|
||||||
|
display ' ', \\`arg
|
||||||
|
\\}
|
||||||
|
else
|
||||||
|
display " '", args, "'"
|
||||||
|
end if
|
||||||
|
\}
|
||||||
|
end if
|
||||||
|
}
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;; INSTRUCTIONS & PREFIXES MACROSES ;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
macro prefix mnemonic
|
||||||
|
{
|
||||||
|
local aux
|
||||||
|
|
||||||
|
macro mnemonic [args]
|
||||||
|
\{
|
||||||
|
\common
|
||||||
|
match =1, _ON_VIRTUAL\\{_LISTING equ 0\\}
|
||||||
|
match =equ, args\\{_LISTING equ 0\\}
|
||||||
|
match =equ any, args\\{_LISTING equ 0\\}
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_address $
|
||||||
|
aux = $
|
||||||
|
\\}
|
||||||
|
|
||||||
|
mnemonic
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_bytes aux
|
||||||
|
|
||||||
|
display \`mnemonic
|
||||||
|
display CRLF
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match =1, _ON_VIRTUAL\\{restore _LISTING\\}
|
||||||
|
match =equ, args\\{restore _LISTING\\}
|
||||||
|
match =equ any, args\\{restore _LISTING\\}
|
||||||
|
|
||||||
|
def_prefix mnemonic
|
||||||
|
args
|
||||||
|
purge mnemonic
|
||||||
|
\}
|
||||||
|
}
|
||||||
|
|
||||||
|
macro def_prefix mnemonic
|
||||||
|
{
|
||||||
|
macro def_prefix mnemonic
|
||||||
|
\{
|
||||||
|
prefix mnemonic
|
||||||
|
\}
|
||||||
|
def_prefix mnemonic
|
||||||
|
}
|
||||||
|
|
||||||
|
macro instruction mnemonic
|
||||||
|
{
|
||||||
|
local aux
|
||||||
|
|
||||||
|
macro mnemonic [args]
|
||||||
|
\{
|
||||||
|
\common
|
||||||
|
match =1, _ON_VIRTUAL\\{_LISTING equ 0\\}
|
||||||
|
match =equ, args\\{_LISTING equ 0\\}
|
||||||
|
match =equ any, args\\{_LISTING equ 0\\}
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_address $
|
||||||
|
aux = $
|
||||||
|
\\}
|
||||||
|
|
||||||
|
mnemonic args
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_bytes aux
|
||||||
|
|
||||||
|
display \`mnemonic
|
||||||
|
|
||||||
|
virtual at 0
|
||||||
|
db \`mnemonic
|
||||||
|
repeat 11 - $
|
||||||
|
display ' '
|
||||||
|
end repeat
|
||||||
|
end virtual
|
||||||
|
|
||||||
|
display_args args
|
||||||
|
display CRLF
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match =1, _ON_VIRTUAL\\{restore _LISTING\\}
|
||||||
|
match =equ, args\\{restore _LISTING\\}
|
||||||
|
match =equ any, args\\{restore _LISTING\\}
|
||||||
|
\}
|
||||||
|
}
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA MACROSES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
macro data_define mnemonic
|
||||||
|
{
|
||||||
|
local aux
|
||||||
|
macro mnemonic [args]
|
||||||
|
\{
|
||||||
|
\common
|
||||||
|
match =1, _ON_VIRTUAL\\{_LISTING equ 0\\}
|
||||||
|
match =equ, args\\{_LISTING equ 0\\}
|
||||||
|
match =equ any, args\\{_LISTING equ 0\\}
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_address $
|
||||||
|
aux = $
|
||||||
|
\\}
|
||||||
|
|
||||||
|
mnemonic args
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_bytes aux
|
||||||
|
|
||||||
|
display \`mnemonic
|
||||||
|
|
||||||
|
display_args args
|
||||||
|
display CRLF
|
||||||
|
|
||||||
|
aux = aux + MAX_BYTES
|
||||||
|
|
||||||
|
repeat ($ - aux + MAX_BYTES - 1) / MAX_BYTES
|
||||||
|
display_address aux
|
||||||
|
display_bytes aux
|
||||||
|
display CRLF
|
||||||
|
|
||||||
|
aux = aux + MAX_BYTES
|
||||||
|
end repeat
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match =1, _ON_VIRTUAL\\{restore _LISTING\\}
|
||||||
|
match =equ, args\\{restore _LISTING\\}
|
||||||
|
match =equ any, args\\{restore _LISTING\\}
|
||||||
|
\}
|
||||||
|
|
||||||
|
struc mnemonic [args]
|
||||||
|
\{
|
||||||
|
\common
|
||||||
|
match =1, _ON_VIRTUAL\\{_LISTING equ 0\\}
|
||||||
|
match =equ, args\\{_LISTING equ 0\\}
|
||||||
|
match =equ any, args\\{_LISTING equ 0\\}
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_address $
|
||||||
|
aux = $
|
||||||
|
\\}
|
||||||
|
|
||||||
|
. mnemonic args
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_bytes aux
|
||||||
|
|
||||||
|
display \`., ' ', \`mnemonic
|
||||||
|
|
||||||
|
display_args args
|
||||||
|
display CRLF
|
||||||
|
|
||||||
|
aux = aux + MAX_BYTES
|
||||||
|
|
||||||
|
repeat ($ - aux + MAX_BYTES - 1) / MAX_BYTES
|
||||||
|
display_address aux
|
||||||
|
display_bytes aux
|
||||||
|
display CRLF
|
||||||
|
|
||||||
|
aux = aux + MAX_BYTES
|
||||||
|
end repeat
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match =1, _ON_VIRTUAL\\{restore _LISTING\\}
|
||||||
|
match =equ, args\\{restore _LISTING\\}
|
||||||
|
match =equ any, args\\{restore _LISTING\\}
|
||||||
|
\}
|
||||||
|
}
|
||||||
|
|
||||||
|
macro data_reserve mnemonic
|
||||||
|
{
|
||||||
|
local aux
|
||||||
|
macro mnemonic [args]
|
||||||
|
\{
|
||||||
|
\common
|
||||||
|
match =1, _ON_VIRTUAL\\{_LISTING equ 0\\}
|
||||||
|
match =equ, args\\{_LISTING equ 0\\}
|
||||||
|
match =equ any, args\\{_LISTING equ 0\\}
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_address $
|
||||||
|
aux = $
|
||||||
|
\\}
|
||||||
|
|
||||||
|
mnemonic args
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
times MAX_BYTES display ' '
|
||||||
|
|
||||||
|
display \`mnemonic
|
||||||
|
|
||||||
|
display_args args
|
||||||
|
display CRLF
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match =1, _ON_VIRTUAL\\{restore _LISTING\\}
|
||||||
|
match =equ, args\\{restore _LISTING\\}
|
||||||
|
match =equ any, args\\{restore _LISTING\\}
|
||||||
|
\}
|
||||||
|
|
||||||
|
struc mnemonic [args]
|
||||||
|
\{
|
||||||
|
\common
|
||||||
|
match =1, _ON_VIRTUAL\\{_LISTING equ 0\\}
|
||||||
|
match =equ, args\\{_LISTING equ 0\\}
|
||||||
|
match =equ any, args\\{_LISTING equ 0\\}
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
display_address $
|
||||||
|
aux = $
|
||||||
|
\\}
|
||||||
|
|
||||||
|
. mnemonic args
|
||||||
|
|
||||||
|
match =1, _LISTING
|
||||||
|
\\{
|
||||||
|
times MAX_BYTES display ' '
|
||||||
|
|
||||||
|
display \`., ' ', \`mnemonic
|
||||||
|
|
||||||
|
display_args args
|
||||||
|
display CRLF
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match =1, _ON_VIRTUAL\\{restore _LISTING\\}
|
||||||
|
match =equ, args\\{restore _LISTING\\}
|
||||||
|
match =equ any, args\\{restore _LISTING\\}
|
||||||
|
\}
|
||||||
|
}
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;; LISTING CONTROL MACROSES ;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
macro virtual [args]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
_ON_VIRTUAL equ 1
|
||||||
|
|
||||||
|
virtual args
|
||||||
|
}
|
||||||
|
|
||||||
|
macro end [args]
|
||||||
|
{
|
||||||
|
common
|
||||||
|
match =virtual, args\{restore _ON_VIRTUAL\}
|
||||||
|
|
||||||
|
end args
|
||||||
|
}
|
||||||
|
|
||||||
|
macro enable_listing
|
||||||
|
{
|
||||||
|
detect_mode
|
||||||
|
|
||||||
|
match =0, _MACROSES_INSTALLED
|
||||||
|
\{
|
||||||
|
match instructions, INSTRUCTIONS
|
||||||
|
\\{
|
||||||
|
irps ins, instructions
|
||||||
|
\\\{
|
||||||
|
instruction ins
|
||||||
|
\\\}
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match prefixes, PREFIXES
|
||||||
|
\\{
|
||||||
|
irps prefix, prefixes
|
||||||
|
\\\{
|
||||||
|
def_prefix prefix
|
||||||
|
\\\}
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match data_definitors, DATA_DEFINITORS
|
||||||
|
\\{
|
||||||
|
irps def, data_definitors
|
||||||
|
\\\{
|
||||||
|
data_define def
|
||||||
|
\\\}
|
||||||
|
\\}
|
||||||
|
|
||||||
|
match data_reservers, DATA_RESERVERS
|
||||||
|
\\{
|
||||||
|
irps def, data_reservers
|
||||||
|
\\\{
|
||||||
|
data_reserve def
|
||||||
|
\\\}
|
||||||
|
\\}
|
||||||
|
\}
|
||||||
|
|
||||||
|
_MACROSES_INSTALLED equ 1
|
||||||
|
_LISTING equ 1
|
||||||
|
}
|
||||||
|
|
||||||
|
macro disable_listing
|
||||||
|
{
|
||||||
|
_LISTING equ 0
|
||||||
|
}
|
||||||
|
|
||||||
|
macro enable [feature*]
|
||||||
|
{
|
||||||
|
forward
|
||||||
|
UNKNOWN equ 1
|
||||||
|
|
||||||
|
match =resolve_equates, feature
|
||||||
|
\{
|
||||||
|
restore _RESOLVE_EQUATES
|
||||||
|
_RESOLVE_EQUATES equ ON
|
||||||
|
UNKNOWN equ 0
|
||||||
|
\}
|
||||||
|
|
||||||
|
match =listing, feature
|
||||||
|
\{
|
||||||
|
enable_listing
|
||||||
|
UNKNOWN equ 0
|
||||||
|
\}
|
||||||
|
|
||||||
|
match =1, UNKNOWN
|
||||||
|
\{
|
||||||
|
display 'ERROR: Unknown "',`feature, '" feature', 13, 10
|
||||||
|
err
|
||||||
|
\}
|
||||||
|
|
||||||
|
restore UNKNOWN
|
||||||
|
restore UNKNOWN
|
||||||
|
}
|
||||||
|
|
||||||
|
macro disable [feature*]
|
||||||
|
{
|
||||||
|
UNKNOWN equ 1
|
||||||
|
|
||||||
|
match =resolve_equates, feature
|
||||||
|
\{
|
||||||
|
restore _RESOLVE_EQUATES
|
||||||
|
_RESOLVE_EQUATES equ OFF
|
||||||
|
UNKNOWN equ 0
|
||||||
|
\}
|
||||||
|
|
||||||
|
match =listing, feature
|
||||||
|
\{
|
||||||
|
disable_listing
|
||||||
|
UNKNOWN equ 0
|
||||||
|
\}
|
||||||
|
|
||||||
|
match =1, UNKNOWN
|
||||||
|
\{
|
||||||
|
display 'ERROR: Unknown "',`feature, '" feature', 13, 10
|
||||||
|
err
|
||||||
|
\}
|
||||||
|
|
||||||
|
restore UNKNOWN
|
||||||
|
restore UNKNOWN
|
||||||
|
}
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INITIALIZATION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
_MACROSES_INSTALLED equ 0
|
||||||
|
_ON_VIRTUAL equ 0
|
||||||
|
|
||||||
|
disable resolve_equates
|
@@ -1,4 +1,4 @@
|
|||||||
; Copyright (c) 2009, <Lrz>
|
; Copyright (c) 2008-2009, <Lrz>
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
;
|
;
|
||||||
; Redistribution and use in source and binary forms, with or without
|
; Redistribution and use in source and binary forms, with or without
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
; names of its contributors may be used to endorse or promote products
|
; names of its contributors may be used to endorse or promote products
|
||||||
; derived from this software without specific prior written permission.
|
; derived from this software without specific prior written permission.
|
||||||
;
|
;
|
||||||
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka <Lrz> ''AS IS'' AND ANY
|
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY
|
||||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||||
@@ -25,103 +25,29 @@
|
|||||||
;*****************************************************************************
|
;*****************************************************************************
|
||||||
|
|
||||||
;start of the project 13.02.2008 year.
|
;start of the project 13.02.2008 year.
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;Secondary Loader copyright Alexey Teplov aka <Lrz> & K Soft team
|
;Secondary Loader copyright Alexey Teplov nickname <Lrz>
|
||||||
;if you need log preproc
|
;if you need log preproc
|
||||||
;/////////////
|
;/////////////
|
||||||
;include 'listing.inc'
|
;include 'listing.inc'
|
||||||
;enable listing
|
;enable listing
|
||||||
;////////////
|
;////////////
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;start of code:
|
;start of code: ;
|
||||||
;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
DEBUG equ 1
|
|
||||||
root_dir_entry_count equ 224 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
;point_to_fat_struc equ 0xA000 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Fat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 1 <20><>
|
|
||||||
ini_data_ equ 0x2000 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
size_show_section equ 18
|
|
||||||
default_timeout_value equ 5 ;default value to timeout is will was some errors
|
|
||||||
flag_found_default equ 0x1 ;default value is found
|
|
||||||
flag_found_timeout equ 0x2 ;timeout value is found
|
|
||||||
flag_found_LM equ 0x1 ;found LM value
|
|
||||||
flag_found_RS equ 0x2 ;found RS value
|
|
||||||
flag_found_GTRFMS equ 0x4 ;found type RamFS
|
|
||||||
flag_found_RamdiskSector equ 0x8 ;found RamdiskSector
|
|
||||||
flag_found_RamdiskCluster equ 0x16 ;found RamdiskCluster
|
|
||||||
;statick data <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
save_cx equ word [bp-2] ;save cx size ini file
|
|
||||||
ret_on_ch equ word [bp-4] ;point to return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
save_cx_d equ word [bp-6] ;save cx - size default section and working section
|
|
||||||
status_flag equ word [bp-8] ;status flag
|
|
||||||
point_loader equ word [bp-10]
|
|
||||||
point_default equ word [bp-12] ;point to default
|
|
||||||
|
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
point_to_hframe equ word [bp-14] ;point on start frame (for change section)
|
|
||||||
point_to_1 equ word [bp-16]
|
|
||||||
point_to_2 equ word [bp-18]
|
|
||||||
point_to_3 equ word [bp-20]
|
|
||||||
point_to_4 equ word [bp-22]
|
|
||||||
point_to_5 equ word [bp-24]
|
|
||||||
point_to_6 equ word [bp-26]
|
|
||||||
point_to_7 equ word [bp-28]
|
|
||||||
point_to_8 equ word [bp-30]
|
|
||||||
point_to_9 equ word [bp-32]
|
|
||||||
point_to_10 equ word [bp-34]
|
|
||||||
point_to_11 equ word [bp-36]
|
|
||||||
point_to_12 equ word [bp-38]
|
|
||||||
point_to_13 equ word [bp-40]
|
|
||||||
point_to_14 equ word [bp-42]
|
|
||||||
point_to_15 equ word [bp-44]
|
|
||||||
point_to_16 equ word [bp-46]
|
|
||||||
point_to_16 equ word [bp-48]
|
|
||||||
point_to_17 equ word [bp-50]
|
|
||||||
point_to_18 equ word [bp-52]
|
|
||||||
;here array for fast scroling 16 word - poin to start section
|
|
||||||
point_to_point_def equ word [bp-54]
|
|
||||||
point_to_eframe equ word [bp-56] ;point on point frame
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> cx <20> di <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
find_sec_di equ word [bp-58] ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> di
|
|
||||||
info_real_mode_size equ word [bp-60];<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
free_ad_memory equ word [bp-62] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
show_errors_sect equ word [bp-64] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
save_descript_size equ word [bp-66] ;save descript size previos section <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
save_ramdisksize equ dword [bp-70] ;save size of ramdisk in byte
|
|
||||||
save_file_size equ dword [bp-74] ;save size of reading file
|
|
||||||
set_ramfs equ word [bp-76] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
point_next_fat_str equ word [bp-78] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
size_root_dir equ word [bp-80] ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 512 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
firstDataSect equ word [bp-82] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 0
|
|
||||||
DataClasters equ word [bp-84] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
point_to_free_root equ word [bp-86] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD>
|
|
||||||
point_to_dest_file_name equ word [bp-88] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
data_offset equ word [bp-90] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 1-<2D> <20><>
|
|
||||||
first_input equ word [bp-92] ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|
||||||
save_di_RAMDISK equ word [bp-94] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> di -<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
save_cx_RAMDISK equ word [bp-96] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
status_flag_loader_f equ word [bp-98] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Enter, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 0<>1000:0000
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
use16
|
use16
|
||||||
org 0x0
|
org 0x0
|
||||||
jmp start
|
jmp start
|
||||||
|
include 'sl_equ.inc' ; <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> equ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
include 'boot_st.inc'
|
include 'boot_st.inc'
|
||||||
include 'debug_msg.inc' ;here is message from debug
|
include 'debug_msg.inc' ;here is message from debug
|
||||||
include 'parse_dat.inc'
|
include 'parse_dat.inc'
|
||||||
include 'sl_proc.inc'
|
include 'sl_proc.inc'
|
||||||
include 'parse.inc'
|
include 'parse.inc'
|
||||||
include 'parse_loader.inc'
|
include 'parse_loader.inc'
|
||||||
include 'parse_any.inc'
|
include 'parse_any.inc'
|
||||||
include 'parse_def_sect.inc'
|
include 'parse_def_sect.inc'
|
||||||
include 'parse_err.inc'
|
include 'parse_err.inc'
|
||||||
|
|
||||||
file_data dw 0x0,ini_data_ ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> les
|
file_data dw 0x0,ini_data_ ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> les
|
||||||
size_data dw 16 ;16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 4 <20><> <20>.<2E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 64 <20><>
|
size_data dw 16 ;16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 4 <20><> <20>.<2E> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 64 <20><>
|
||||||
@@ -158,13 +84,25 @@ start:
|
|||||||
|
|
||||||
mov si,version
|
mov si,version
|
||||||
call printplain
|
call printplain
|
||||||
mov al,'#'
|
mov al,'#'
|
||||||
mov cx,80
|
mov cx,80
|
||||||
;input cx=size al=char <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> cx
|
;input cx=size al=char <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> cx
|
||||||
@@:
|
@@:
|
||||||
call putchar
|
call putchar
|
||||||
loop @b
|
loop @b
|
||||||
|
|
||||||
|
if DEBUG
|
||||||
|
pushad
|
||||||
|
mov ax,cs
|
||||||
|
shl eax,4 ; <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
mov cx,0xa
|
||||||
|
mov di,cseg_msg
|
||||||
|
call decode
|
||||||
|
;***************
|
||||||
|
mov si,cseg_msg
|
||||||
|
call printplain
|
||||||
|
popad
|
||||||
|
end if
|
||||||
|
|
||||||
|
|
||||||
if DEBUG
|
if DEBUG
|
||||||
@@ -216,19 +154,64 @@ cpugood:
|
|||||||
; set up esp
|
; set up esp
|
||||||
movzx esp, sp
|
movzx esp, sp
|
||||||
|
|
||||||
;Load startos.ini
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
xor ax,ax ; function 1 - read file
|
; init memory
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Load startos.ini
|
||||||
|
mov cx,loop_read_startos_file ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> startos.ini
|
||||||
|
align 4
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; Load startos.ini ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
load_startos_file:
|
||||||
|
|
||||||
|
xor ax,ax
|
||||||
mov di,file_data
|
mov di,file_data
|
||||||
inc ax
|
inc ax ;function 1 - read file
|
||||||
|
push cx
|
||||||
call far dword [loader_callback]
|
call far dword [loader_callback]
|
||||||
|
pop cx
|
||||||
|
push cs
|
||||||
push cs
|
push cs
|
||||||
push cs
|
|
||||||
pop ds
|
pop ds
|
||||||
pop es
|
pop es
|
||||||
|
|
||||||
test bx,bx
|
test bx,bx
|
||||||
jnz error_ini
|
jz check_conf_file
|
||||||
|
dec cx
|
||||||
|
jnz load_startos_file
|
||||||
|
|
||||||
|
;SET DEFAULT Not use ini file
|
||||||
|
error_ini:
|
||||||
|
mov si, error_ini_f1 ;Error: cannot load ini file, buffer is full
|
||||||
|
dec bx
|
||||||
|
jz err_show_ini
|
||||||
|
mov si, error_ini_f2 ;Error: ini file not found
|
||||||
|
dec bx
|
||||||
|
jz err_show_ini
|
||||||
|
mov si, error_ini_f3 ;Error: cannot read ini file
|
||||||
|
dec bx
|
||||||
|
jz err_show_ini
|
||||||
|
|
||||||
|
mov si, error_ini_nf ;Error: unrecognized error when loading ini file
|
||||||
|
err_show_ini:
|
||||||
|
call printplain
|
||||||
|
mov si, error_ini_common
|
||||||
|
call printplain
|
||||||
|
; wait for keypress
|
||||||
|
xor ax,ax
|
||||||
|
int 16h
|
||||||
|
|
||||||
|
ini_loaded:
|
||||||
|
|
||||||
|
jmp $
|
||||||
|
|
||||||
|
align 4
|
||||||
|
check_conf_file:
|
||||||
;Check config file in current dir
|
;Check config file in current dir
|
||||||
push ax ;save size file
|
push ax ;save size file
|
||||||
if DEBUG
|
if DEBUG
|
||||||
@@ -250,46 +233,18 @@ use_parse ;parsing startos.ini
|
|||||||
;
|
;
|
||||||
jmp ini_loaded
|
jmp ini_loaded
|
||||||
|
|
||||||
;SET DEFAULT Not use ini file
|
|
||||||
error_ini:
|
|
||||||
mov si, error_ini_f1 ;Error: cannot load ini file, buffer is full
|
|
||||||
dec bx
|
|
||||||
jz err_show_ini
|
|
||||||
mov si, error_ini_f2 ;Error: ini file not found
|
|
||||||
dec bx
|
|
||||||
jz err_show_ini
|
|
||||||
mov si, error_ini_f3 ;Error: cannot read ini file
|
|
||||||
dec bx
|
|
||||||
jz err_show_ini
|
|
||||||
|
|
||||||
mov si, error_ini_nf ;Error: unrecognized error when loading ini file
|
|
||||||
err_show_ini:
|
|
||||||
call printplain
|
|
||||||
mov si, error_ini_common
|
|
||||||
call printplain
|
|
||||||
; wait for keypress
|
|
||||||
mov ah, 0
|
|
||||||
int 16h
|
|
||||||
|
|
||||||
ini_loaded:
|
|
||||||
|
|
||||||
jmp $
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;DATA
|
;DATA
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; table for move to extended memory (int 15h, ah=87h)
|
; table for move to extended memory (int 15h, ah=87h)
|
||||||
align 8
|
align 4
|
||||||
table_15_87:
|
table_15_87:
|
||||||
db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0
|
db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0
|
||||||
db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0
|
db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0
|
||||||
|
|
||||||
db 0xff,0xff
|
db 0xff,0xff
|
||||||
db 0x0,0x10
|
db 0x0,0x10
|
||||||
db 0x00,0x93,0x0,0x0
|
db 0x00,0x93,0x0,0x0
|
||||||
|
|
||||||
db 0xff,0xff,0x0,0x00,0x10,0x93,0x0,0x0
|
db 0xff,0xff,0x0,0x00,0x10,0x93,0x0,0x0
|
||||||
|
|
||||||
@@ -299,26 +254,26 @@ table_15_87:
|
|||||||
db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0
|
db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0
|
||||||
|
|
||||||
fat12_buffer:
|
fat12_buffer:
|
||||||
.BS_jmpBoot db 0x90,0x90,0x90 ;3 <20><><EFBFBD><EFBFBD><EFBFBD> NOP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.BS_jmpBoot db 0x90,0x90,0x90 ;3 <20><><EFBFBD><EFBFBD><EFBFBD> NOP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.BS_OEMName db 'K SyS 64' ;8 <20><><EFBFBD><EFBFBD>
|
.BS_OEMName db 'K SyS 64' ;8 <20><><EFBFBD><EFBFBD>
|
||||||
.BPB_BytsPerSec dw 512 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 512 1024 2048 4096 2 <20><><EFBFBD><EFBFBD><EFBFBD>
|
.BPB_BytsPerSec dw 512 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 512 1024 2048 4096 2 <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.BPB_SecPerClus db 0x1 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.BPB_SecPerClus db 0x1 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.BPB_RsvdSecCnt dw 0x1 ;<3B><><EFBFBD> FAt12/16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1, <20><><EFBFBD> FAT32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
|
.BPB_RsvdSecCnt dw 0x1 ;<3B><><EFBFBD> FAt12/16 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1, <20><><EFBFBD> FAT32 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32
|
||||||
.BPB_NumFATs db 0x1 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
.BPB_NumFATs db 0x1 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.BPB_RootEntCnt dw 512 ;<3B><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> fat16
|
.BPB_RootEntCnt dw 512 ;<3B><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> fat16
|
||||||
.BPB_TotSec16 dw 0x0 ;<3B><>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.BPB_TotSec16 dw 0x0 ;<3B><>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.BPB_Media db 0xF0
|
.BPB_Media db 0xF0
|
||||||
.BPB_FATSz16 dw 0x0
|
.BPB_FATSz16 dw 0x0
|
||||||
.BPB_SecPerTrk dw 0x0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> RAMFS <20><> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
.BPB_SecPerTrk dw 0x0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> RAMFS <20><> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
.BPB_NumHeads dw 0x0
|
.BPB_NumHeads dw 0x0
|
||||||
.BPB_HiddSec dd 0x0 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.BPB_HiddSec dd 0x0 ;<3B><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.BPB_TotSec32 dd 0x0
|
.BPB_TotSec32 dd 0x0
|
||||||
.BS_DrvNum db 'R' ;<3B><> <20><><EFBFBD><EFBFBD><EFBFBD> RAM
|
.BS_DrvNum db 'R' ;<3B><> <20><><EFBFBD><EFBFBD><EFBFBD> RAM
|
||||||
.BS_Reserved1 db 0x0
|
.BS_Reserved1 db 0x0
|
||||||
.BS_BootSig db 0x29
|
.BS_BootSig db 0x29
|
||||||
.BS_VolID db 'RFKS'
|
.BS_VolID db 'RFKS'
|
||||||
.BS_VolLab db 'RAM DISK FS' ;11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.BS_VolLab db 'RAM DISK FS' ;11 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.BS_FilSysType db 'FAT12 ' ;8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.BS_FilSysType db 'FAT12 ' ;8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
;62 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fat12.
|
;62 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fat12.
|
||||||
|
|
||||||
|
|
||||||
@@ -327,33 +282,33 @@ fat12_buffer:
|
|||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fat
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fat
|
||||||
struc FAT_32_entry ;Byte Directory Entry Structure
|
struc FAT_32_entry ;Byte Directory Entry Structure
|
||||||
{
|
{
|
||||||
.DIR_Name rb 11
|
.DIR_Name rb 11
|
||||||
.DIR_Attr db ?
|
.DIR_Attr db ?
|
||||||
.DIR_NTRes db ?
|
.DIR_NTRes db ?
|
||||||
.DIR_CrtTimeTenth db ?
|
.DIR_CrtTimeTenth db ?
|
||||||
.DIR_CrtTime dw ?
|
.DIR_CrtTime dw ?
|
||||||
.DIR_CrtDate dw ?
|
.DIR_CrtDate dw ?
|
||||||
.DIR_LstAccDate dw ?
|
.DIR_LstAccDate dw ?
|
||||||
.DIR_FstClusHI dw ?
|
.DIR_FstClusHI dw ?
|
||||||
.DIR_WrtTime dw ?
|
.DIR_WrtTime dw ?
|
||||||
.DIR_WrtDate dw ?
|
.DIR_WrtDate dw ?
|
||||||
.DIR_FstClusLO dw ?
|
.DIR_FstClusLO dw ?
|
||||||
.DIR_FileSize dd ?
|
.DIR_FileSize dd ?
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>....
|
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>....
|
||||||
;;;
|
;;;
|
||||||
;timer
|
;timer
|
||||||
shot_name_fat rb 11
|
shot_name_fat rb 11 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> fat12, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FAT /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||||
if DEBUG
|
if DEBUG
|
||||||
rb 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
rb 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
dest_name_fat rb 12
|
dest_name_fat rb 12
|
||||||
end if
|
end if
|
||||||
value_timeout rw 1 ;value to timeout
|
value_timeout rw 1 ;value to timeout
|
||||||
old_timer rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
old_timer rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
start_timer rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
start_timer rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
timer_ rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. SL
|
timer_ rd 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. SL
|
||||||
start_stack rw 1 ;save stack
|
start_stack rw 1 ;save stack
|
||||||
save_bp_from_timer rw 1 ;save bp from timer
|
save_bp_from_timer rw 1 ;save bp from timer
|
||||||
|
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
; names of its contributors may be used to endorse or promote products
|
; names of its contributors may be used to endorse or promote products
|
||||||
; derived from this software without specific prior written permission.
|
; derived from this software without specific prior written permission.
|
||||||
;
|
;
|
||||||
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka <Lrz> ''AS IS'' AND ANY
|
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY
|
||||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||||
@@ -36,45 +36,45 @@ macro use_parse
|
|||||||
parse_start:
|
parse_start:
|
||||||
;es:di as 2000:0000 new segment
|
;es:di as 2000:0000 new segment
|
||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
enter 256,0 ;set 16 byte for current task in stack
|
enter 256,0 ;set 16 byte for current task in stack
|
||||||
;we are is not use bp because bp is pointer on array 16 byte
|
;we are is not use bp because bp is pointer on array 16 byte
|
||||||
mov word [save_bp_from_timer],bp ;save point to own data array
|
mov word [save_bp_from_timer],bp ;save point to own data array
|
||||||
mov save_cx,cx ;it's placed size of ini file
|
mov save_cx,cx ;it's placed size of ini file
|
||||||
les di,dword [file_data]
|
les di,dword [file_data]
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
;init flag
|
;init flag
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
mov status_flag,ax
|
mov status_flag,ax
|
||||||
;set data size
|
;set data size
|
||||||
mov info_real_mode_size,ini_data_ +0x1000 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov info_real_mode_size,ini_data_ +0x1000 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
;///////////check [loader]
|
;///////////check [loader]
|
||||||
cld
|
cld
|
||||||
|
|
||||||
mov ret_on_ch,.start ;set return
|
mov ret_on_ch,.start ;set return
|
||||||
mov al,byte [es:di]
|
mov al,byte [es:di]
|
||||||
push word .first_ret
|
push word .first_ret
|
||||||
cmp al,' '
|
cmp al,' '
|
||||||
jz .first_sp_1
|
jz .first_sp_1
|
||||||
jmp get_firs_sym.not_space
|
jmp get_firs_sym.not_space
|
||||||
.first_sp_1:
|
.first_sp_1:
|
||||||
jmp get_firs_sym.first_sp
|
jmp get_firs_sym.first_sp
|
||||||
|
|
||||||
.start:
|
.start:
|
||||||
call get_firs_sym ;get first symbol on new line
|
call get_firs_sym ;get first symbol on new line
|
||||||
.first_ret: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.first_ret: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
; jcxz .end_file ;.end_loader ;found or not found parametrs in section exit in section
|
; jcxz .end_file ;.end_loader ;found or not found parametrs in section exit in section
|
||||||
test cx,cx
|
test cx,cx
|
||||||
jz error.not_loader
|
jz error.not_loader
|
||||||
cmp al,'['
|
cmp al,'['
|
||||||
jz .parse_loader
|
jz .parse_loader
|
||||||
jmp .start
|
jmp .start
|
||||||
;////// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> loader
|
;////// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> loader
|
||||||
use_parse_loader
|
use_parse_loader
|
||||||
;pause
|
;pause
|
||||||
if DEBUG
|
if DEBUG
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
int 16h
|
int 16h
|
||||||
end if
|
end if
|
||||||
;////// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;////// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
@@ -25,18 +25,18 @@
|
|||||||
;*****************************************************************************
|
;*****************************************************************************
|
||||||
|
|
||||||
;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
color_sym_black equ 0
|
color_sym_black equ 0
|
||||||
color_sym_blue equ 1
|
color_sym_blue equ 1
|
||||||
color_sym_green equ 2
|
color_sym_green equ 2
|
||||||
color_sym_turquoise equ 3
|
color_sym_turquoise equ 3
|
||||||
color_sym_red equ 4
|
color_sym_red equ 4
|
||||||
|
|
||||||
color_sym_lightgray equ 7
|
color_sym_lightgray equ 7
|
||||||
|
|
||||||
color_sym_lightblue equ 9
|
color_sym_lightblue equ 9
|
||||||
color_sym_lettuce equ 10
|
color_sym_lettuce equ 10
|
||||||
color_sym_pink equ 12
|
color_sym_pink equ 12
|
||||||
color_sym_yellow equ 14
|
color_sym_yellow equ 14
|
||||||
|
|
||||||
macro use_any_sec
|
macro use_any_sec
|
||||||
{
|
{
|
||||||
@@ -45,12 +45,12 @@ macro use_any_sec
|
|||||||
|
|
||||||
if DEBUG
|
if DEBUG
|
||||||
pusha
|
pusha
|
||||||
mov ax,word [value_timeout] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> timeout, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>.<EFBFBD>. <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> =0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov ax,word [value_timeout] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> timeout, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>.<EFBFBD>. <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> =0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
; mov ax,cx
|
; mov ax,cx
|
||||||
mov cx,0x0a
|
mov cx,0x0a
|
||||||
mov di,show_db1
|
mov di,show_db1
|
||||||
mov dword[ds:di],' '
|
mov dword[ds:di],' '
|
||||||
mov word [ds:di+4],' '
|
mov word [ds:di+4],' '
|
||||||
call decode
|
call decode
|
||||||
;Show size
|
;Show size
|
||||||
mov si,show_db1
|
mov si,show_db1
|
||||||
@@ -59,15 +59,15 @@ if DEBUG
|
|||||||
popa
|
popa
|
||||||
end if
|
end if
|
||||||
|
|
||||||
test ax,ax
|
test ax,ax
|
||||||
jz .parse_run_only
|
jz .parse_run_only
|
||||||
|
|
||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
if DEBUG
|
if DEBUG
|
||||||
pusha
|
pusha
|
||||||
mov si,show_all_sect
|
mov si,show_all_sect
|
||||||
call printplain
|
call printplain
|
||||||
popa
|
popa
|
||||||
end if
|
end if
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
mov al, 0xf6 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov al, 0xf6 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@ -115,141 +115,141 @@ end if
|
|||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
;if DEBUG
|
;if DEBUG
|
||||||
; pusha
|
; pusha
|
||||||
; mov ax,point_default
|
; mov ax,point_default
|
||||||
; mov ax,cx
|
; mov ax,cx
|
||||||
; mov cx,0x0a
|
; mov cx,0x0a
|
||||||
; mov di,show_db1
|
; mov di,show_db1
|
||||||
; mov dword[ds:di],' '
|
; mov dword[ds:di],' '
|
||||||
; mov word [ds:di+4],' '
|
; mov word [ds:di+4],' '
|
||||||
; call decode
|
; call decode
|
||||||
;Show size
|
;Show size
|
||||||
; mov si,show_db1
|
; mov si,show_db1
|
||||||
; call printplain
|
; call printplain
|
||||||
;
|
;
|
||||||
; xor ax,ax
|
; xor ax,ax
|
||||||
; int 0x16
|
; int 0x16
|
||||||
; popa
|
; popa
|
||||||
;end if
|
;end if
|
||||||
;;;;;;;;;;;;;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =0
|
;;;;;;;;;;;;;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =0
|
||||||
mov save_descript_size,18
|
mov save_descript_size,18
|
||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> black screen
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> black screen
|
||||||
show_bl_sc ;es=0xb800
|
show_bl_sc ;es=0xb800
|
||||||
.show_all_scr:
|
.show_all_scr:
|
||||||
get_frame_buffer ;es=0x2000
|
get_frame_buffer ;es=0x2000
|
||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
call show_bl_sc_sect ;es=0xb800
|
call show_bl_sc_sect ;es=0xb800
|
||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.show_active_cursor:
|
.show_active_cursor:
|
||||||
show_act_cursor
|
show_act_cursor
|
||||||
show_descript ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
show_descript ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Press any key ....
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Press any key ....
|
||||||
mov eax,dword [old_timer]
|
mov eax,dword [old_timer]
|
||||||
cmp eax,dword [timer_]
|
cmp eax,dword [timer_]
|
||||||
jz .interrupt_16
|
jz .interrupt_16
|
||||||
|
|
||||||
show_timer_message
|
show_timer_message
|
||||||
mov word [start_stack],sp
|
mov word [start_stack],sp
|
||||||
.interrupt_16:
|
.interrupt_16:
|
||||||
xor ax,ax ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
xor ax,ax ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
int 0x16
|
int 0x16
|
||||||
;check on change
|
;check on change
|
||||||
mov ebx,dword [old_timer]
|
mov ebx,dword [old_timer]
|
||||||
cmp ebx,dword [timer_]
|
cmp ebx,dword [timer_]
|
||||||
jz @f
|
jz @f
|
||||||
;restore timer interrupt
|
;restore timer interrupt
|
||||||
cli
|
cli
|
||||||
push 0
|
push 0
|
||||||
pop es
|
pop es
|
||||||
; mov eax,dword [old_timer] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; mov eax,dword [old_timer] ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov [es:8*4],ebx
|
mov [es:8*4],ebx
|
||||||
mov dword [timer_],ebx
|
mov dword [timer_],ebx
|
||||||
sti
|
sti
|
||||||
|
|
||||||
push ax
|
push ax
|
||||||
clear_timer_msg
|
clear_timer_msg
|
||||||
pop ax
|
pop ax
|
||||||
@@:
|
@@:
|
||||||
call clean_active_cursor ;clean old cursor ;es=0xb800
|
call clean_active_cursor ;clean old cursor ;es=0xb800
|
||||||
|
|
||||||
cmp ah,0x48 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
cmp ah,0x48 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
jz .up
|
jz .up
|
||||||
cmp ah,0x50
|
cmp ah,0x50
|
||||||
jz .down
|
jz .down
|
||||||
cmp ah,0x49
|
cmp ah,0x49
|
||||||
jz .pgup
|
jz .pgup
|
||||||
cmp ah,0x51
|
cmp ah,0x51
|
||||||
jz .pgdown
|
jz .pgdown
|
||||||
cmp ah,0x47
|
cmp ah,0x47
|
||||||
jz .home
|
jz .home
|
||||||
cmp ah,0x4f
|
cmp ah,0x4f
|
||||||
jz .end
|
jz .end
|
||||||
|
|
||||||
cmp al,0xD
|
cmp al,0xD
|
||||||
jnz .show_active_cursor
|
jnz .show_active_cursor
|
||||||
|
|
||||||
jmp .end_show_all ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> point_default
|
jmp .end_show_all ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> point_default
|
||||||
.up:
|
.up:
|
||||||
mov si,point_to_point_def ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov si,point_to_point_def ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
add si,2
|
add si,2
|
||||||
lea ax,point_to_hframe
|
lea ax,point_to_hframe
|
||||||
|
|
||||||
cmp si,ax
|
cmp si,ax
|
||||||
ja @f
|
ja @f
|
||||||
|
|
||||||
mov point_to_point_def,si
|
mov point_to_point_def,si
|
||||||
mov ax,[si]
|
mov ax,[si]
|
||||||
mov point_default,ax
|
mov point_default,ax
|
||||||
jmp .show_active_cursor
|
jmp .show_active_cursor
|
||||||
@@:
|
@@:
|
||||||
call find_before_sect
|
call find_before_sect
|
||||||
jmp .show_all_scr
|
jmp .show_all_scr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.down:
|
.down:
|
||||||
mov si,point_to_point_def ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov si,point_to_point_def ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov ax,point_to_eframe ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov ax,point_to_eframe ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
sub si,2
|
sub si,2
|
||||||
cmp si,ax
|
cmp si,ax
|
||||||
jb @f
|
jb @f
|
||||||
|
|
||||||
mov point_to_point_def,si
|
mov point_to_point_def,si
|
||||||
mov ax,[si]
|
mov ax,[si]
|
||||||
mov point_default,ax
|
mov point_default,ax
|
||||||
jmp .show_active_cursor
|
jmp .show_active_cursor
|
||||||
|
|
||||||
@@: call find_next_sect
|
@@: call find_next_sect
|
||||||
jmp .show_all_scr
|
jmp .show_all_scr
|
||||||
|
|
||||||
.pgup:
|
.pgup:
|
||||||
mov cx,size_show_section
|
mov cx,size_show_section
|
||||||
@@:
|
@@:
|
||||||
push cx
|
push cx
|
||||||
call find_before_sect
|
call find_before_sect
|
||||||
pop cx
|
pop cx
|
||||||
loop @b
|
loop @b
|
||||||
jmp .show_all_scr
|
jmp .show_all_scr
|
||||||
|
|
||||||
|
|
||||||
.pgdown:
|
.pgdown:
|
||||||
mov cx,size_show_section
|
mov cx,size_show_section
|
||||||
@@:
|
@@:
|
||||||
push cx
|
push cx
|
||||||
call find_next_sect
|
call find_next_sect
|
||||||
pop cx
|
pop cx
|
||||||
loop @b
|
loop @b
|
||||||
jmp .show_all_scr
|
jmp .show_all_scr
|
||||||
|
|
||||||
.home:
|
.home:
|
||||||
xor di,di
|
xor di,di
|
||||||
call find_next_sect.h
|
call find_next_sect.h
|
||||||
jmp .show_all_scr
|
jmp .show_all_scr
|
||||||
|
|
||||||
.end:
|
.end:
|
||||||
mov di,save_cx
|
mov di,save_cx
|
||||||
call find_before_sect.e
|
call find_before_sect.e
|
||||||
jmp .show_all_scr
|
jmp .show_all_scr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -257,10 +257,10 @@ clear_timer_msg
|
|||||||
; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
.parse_run_only:
|
.parse_run_only:
|
||||||
if DEBUG
|
if DEBUG
|
||||||
pusha
|
pusha
|
||||||
mov si,no_show_only_w
|
mov si,no_show_only_w
|
||||||
call printplain
|
call printplain
|
||||||
popa
|
popa
|
||||||
end if
|
end if
|
||||||
|
|
||||||
|
|
||||||
@@ -287,63 +287,63 @@ macro show_bl_sc
|
|||||||
;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;
|
||||||
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
; draw frames
|
; draw frames
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
if DEBUG
|
if DEBUG
|
||||||
mov ax,0x0720
|
mov ax,0x0720
|
||||||
end if
|
end if
|
||||||
push 0xb800
|
push 0xb800
|
||||||
pop es
|
pop es
|
||||||
xor di, di
|
xor di, di
|
||||||
; draw top
|
; draw top
|
||||||
mov cx, 25 * 80
|
mov cx, 25 * 80
|
||||||
rep stosw
|
rep stosw
|
||||||
;;;;;;;;;;;;;;;;;;;;;;; show 'Secondary Loader v0.xxx'
|
;;;;;;;;;;;;;;;;;;;;;;; show 'Secondary Loader v0.xxx'
|
||||||
mov di,164
|
mov di,164
|
||||||
mov si,version
|
mov si,version
|
||||||
mov cx,version_end-version
|
mov cx,version_end-version
|
||||||
mov ah,color_sym_yellow
|
mov ah,color_sym_yellow
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
;;;;;;;;;;;;;;;;;;;;;;; show firm ))
|
;;;;;;;;;;;;;;;;;;;;;;; show firm ))
|
||||||
mov di,286
|
mov di,(2*160-(2*(soft_mes_end-soft_mes+4))) ;286
|
||||||
mov ah,color_sym_pink;color_sym_red
|
mov ah,color_sym_pink;color_sym_red
|
||||||
mov al,'K'
|
mov al,'K'
|
||||||
stosw
|
stosw
|
||||||
mov al,' '
|
mov al,' '
|
||||||
stosw
|
stosw
|
||||||
mov ah,color_sym_lightgray;color_sym_lightblue;color_sym_pink
|
mov ah,color_sym_lightgray;color_sym_lightblue;color_sym_pink
|
||||||
mov si,soft_mes
|
mov si,soft_mes
|
||||||
mov cx,soft_mes_end- soft_mes
|
mov cx,soft_mes_end- soft_mes
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
;;;;;;;;;;;;;;;;;;;;;;; show '__________________________'
|
;;;;;;;;;;;;;;;;;;;;;;; show '__________________________'
|
||||||
mov di,480
|
mov di,480
|
||||||
mov ah,color_sym_yellow
|
mov ah,color_sym_yellow
|
||||||
mov al,'<27>'
|
mov al,'<27>'
|
||||||
mov cx,61
|
mov cx,61
|
||||||
rep stosw
|
rep stosw
|
||||||
;;;;;;;;;;;;;;;;;;;;;;; show 'Select section'
|
;;;;;;;;;;;;;;;;;;;;;;; show 'Select section'
|
||||||
mov di,804
|
mov di,804
|
||||||
mov si,select_section
|
mov si,select_section
|
||||||
mov cx,select_section_end - select_section
|
mov cx,select_section_end - select_section
|
||||||
mov ah,color_sym_lightgray
|
mov ah,color_sym_lightgray
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
;;;;;;;;;;;;;;;;;;;;;;; show 'Section description'
|
;;;;;;;;;;;;;;;;;;;;;;; show 'Section description'
|
||||||
mov di,880
|
mov di,880
|
||||||
mov si,section_description
|
mov si,section_description
|
||||||
mov cx,section_description_end - section_description
|
mov cx,section_description_end - section_description
|
||||||
; mov ah,color_sym_lightgray
|
; mov ah,color_sym_lightgray
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -352,54 +352,54 @@ macro show_timer_message
|
|||||||
;;;;;;;;;;;;;;;;;;;;; show Press any key
|
;;;;;;;;;;;;;;;;;;;;; show Press any key
|
||||||
;;;;;;;;;;;;;;;;;;;;; show ramk
|
;;;;;;;;;;;;;;;;;;;;; show ramk
|
||||||
|
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
mov di,3360
|
mov di,3360
|
||||||
mov cx,80*4
|
mov cx,80*4
|
||||||
rep stosw
|
rep stosw
|
||||||
|
|
||||||
mov di,3362
|
mov di,3362
|
||||||
mov ah,color_sym_pink
|
mov ah,color_sym_pink
|
||||||
mov al,0xDA
|
mov al,0xDA
|
||||||
stosw
|
stosw
|
||||||
mov al,0xc4
|
mov al,0xc4
|
||||||
mov cx,76
|
mov cx,76
|
||||||
rep stosw
|
rep stosw
|
||||||
mov al,0xBF
|
mov al,0xBF
|
||||||
stosw
|
stosw
|
||||||
add di,4
|
add di,4
|
||||||
mov al,0xb3
|
mov al,0xb3
|
||||||
stosw
|
stosw
|
||||||
add di,152
|
add di,152
|
||||||
stosw
|
stosw
|
||||||
add di,4
|
add di,4
|
||||||
stosw
|
stosw
|
||||||
add di,152
|
add di,152
|
||||||
stosw
|
stosw
|
||||||
add di,4
|
add di,4
|
||||||
mov al,0xc0
|
mov al,0xc0
|
||||||
stosw
|
stosw
|
||||||
mov al,0xc4
|
mov al,0xc4
|
||||||
mov cx,76
|
mov cx,76
|
||||||
rep stosw
|
rep stosw
|
||||||
mov al,0xd9
|
mov al,0xd9
|
||||||
stosw
|
stosw
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;ramk is complete show
|
;;;;;;;;;;;;;;;;;;;;;;;;ramk is complete show
|
||||||
;show first message
|
;show first message
|
||||||
mov si,start_msg
|
mov si,start_msg
|
||||||
mov cx,start_msg_e-start_msg
|
mov cx,start_msg_e-start_msg
|
||||||
mov di,3526
|
mov di,3526
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
;;;;;;;;;;;;;;;;;;;; show press Enter to....
|
;;;;;;;;;;;;;;;;;;;; show press Enter to....
|
||||||
add di,44
|
add di,44
|
||||||
mov si,time_msg
|
mov si,time_msg
|
||||||
mov cx,time_msg_e-time_msg
|
mov cx,time_msg_e-time_msg
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -411,144 +411,144 @@ macro show_timer_message
|
|||||||
|
|
||||||
macro get_frame_buffer
|
macro get_frame_buffer
|
||||||
{
|
{
|
||||||
mov cx,save_cx ;it's placed size of ini file
|
mov cx,save_cx ;it's placed size of ini file
|
||||||
les di,dword [file_data]
|
les di,dword [file_data]
|
||||||
|
|
||||||
mov si,di ;point frame
|
mov si,di ;point frame
|
||||||
mov bx,cx
|
mov bx,cx
|
||||||
mov dx,size_show_section
|
mov dx,size_show_section
|
||||||
; mov point_to_hframe,di ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
; mov point_to_hframe,di ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
mov al,byte [es:di]
|
mov al,byte [es:di]
|
||||||
push word .first_ret_bl_sc
|
push word .first_ret_bl_sc
|
||||||
cmp al,' '
|
cmp al,' '
|
||||||
jz .first_bl_sc
|
jz .first_bl_sc
|
||||||
jmp get_firs_sym.not_space
|
jmp get_firs_sym.not_space
|
||||||
.first_bl_sc:
|
.first_bl_sc:
|
||||||
jmp get_firs_sym.first_sp
|
jmp get_firs_sym.first_sp
|
||||||
|
|
||||||
.start_hbl:
|
.start_hbl:
|
||||||
call get_firs_sym ;get first symbol on new line
|
call get_firs_sym ;get first symbol on new line
|
||||||
test cx,cx
|
test cx,cx
|
||||||
jz error.correct_exit_bl ;critical error not found default point it's not possible because it's param chacking before
|
jz error.correct_exit_bl ;critical error not found default point it's not possible because it's param chacking before
|
||||||
cmp al,'['
|
cmp al,'['
|
||||||
jnz .start_hbl
|
jnz .start_hbl
|
||||||
|
|
||||||
mov si,di ;point frame
|
mov si,di ;point frame
|
||||||
mov bx,cx
|
mov bx,cx
|
||||||
mov dx,size_show_section
|
mov dx,size_show_section
|
||||||
jmp .analisist_al
|
jmp .analisist_al
|
||||||
|
|
||||||
|
|
||||||
.start_bl:
|
.start_bl:
|
||||||
call get_firs_sym ;get first symbol on new line
|
call get_firs_sym ;get first symbol on new line
|
||||||
.first_ret_bl_sc: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.first_ret_bl_sc: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
test cx,cx
|
test cx,cx
|
||||||
jz error.correct_exit_bl ;critical error not found default point it's not possible because it's param chacking before
|
jz error.correct_exit_bl ;critical error not found default point it's not possible because it's param chacking before
|
||||||
.analisist_al:
|
.analisist_al:
|
||||||
cmp al,'['
|
cmp al,'['
|
||||||
jnz .start_bl
|
jnz .start_bl
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ini <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> default
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ini <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> default
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> default
|
;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> default
|
||||||
.found_sect_bl:
|
.found_sect_bl:
|
||||||
cmp di,point_loader
|
cmp di,point_loader
|
||||||
jz .start_bl
|
jz .start_bl
|
||||||
cmp di,point_default
|
cmp di,point_default
|
||||||
jz .save_point_def
|
jz .save_point_def
|
||||||
|
|
||||||
dec dx
|
dec dx
|
||||||
jnz .start_bl
|
jnz .start_bl
|
||||||
|
|
||||||
jmp .start_hbl
|
jmp .start_hbl
|
||||||
|
|
||||||
|
|
||||||
.save_point_def:
|
.save_point_def:
|
||||||
;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> frame <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> frame <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov di,si ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov di,si ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov cx,bx
|
mov cx,bx
|
||||||
lea si,point_to_hframe
|
lea si,point_to_hframe
|
||||||
mov dx,size_show_section+1 ;<3B>.<2E>. <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> 1 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
mov dx,size_show_section+1 ;<3B>.<2E>. <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> 1 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
mov al,byte [es:di]
|
mov al,byte [es:di]
|
||||||
push word .first_ret_mfb
|
push word .first_ret_mfb
|
||||||
cmp al,' '
|
cmp al,' '
|
||||||
jz .first_bl_mbf
|
jz .first_bl_mbf
|
||||||
jmp get_firs_sym.not_space
|
jmp get_firs_sym.not_space
|
||||||
.first_bl_mbf:
|
.first_bl_mbf:
|
||||||
jmp get_firs_sym.first_sp
|
jmp get_firs_sym.first_sp
|
||||||
|
|
||||||
.start_mfb:
|
.start_mfb:
|
||||||
call get_firs_sym ;get first symbol on new line
|
call get_firs_sym ;get first symbol on new line
|
||||||
.first_ret_mfb: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
.first_ret_mfb: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
jcxz .val_buff_comp ;.end_loader ;found or not found parametrs in section exit in section
|
jcxz .val_buff_comp ;.end_loader ;found or not found parametrs in section exit in section
|
||||||
cmp al,'['
|
cmp al,'['
|
||||||
jnz .start_mfb
|
jnz .start_mfb
|
||||||
|
|
||||||
.found_sect_mfb:
|
.found_sect_mfb:
|
||||||
cmp di,point_loader ;if we have section loader
|
cmp di,point_loader ;if we have section loader
|
||||||
jz .start_mfb
|
jz .start_mfb
|
||||||
|
|
||||||
mov [si],di
|
mov [si],di
|
||||||
|
|
||||||
sub si,2
|
sub si,2
|
||||||
dec dx
|
dec dx
|
||||||
jnz .start_mfb
|
jnz .start_mfb
|
||||||
;bufer is full
|
;bufer is full
|
||||||
jmp @f
|
jmp @f
|
||||||
.val_buff_comp:
|
.val_buff_comp:
|
||||||
push save_cx
|
push save_cx
|
||||||
pop word [si]
|
pop word [si]
|
||||||
sub si,2
|
sub si,2
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
add si,4
|
add si,4
|
||||||
mov point_to_eframe,si
|
mov point_to_eframe,si
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
macro show_act_cursor
|
macro show_act_cursor
|
||||||
{
|
{
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
lea si,point_to_hframe
|
lea si,point_to_hframe
|
||||||
mov di,962-160
|
mov di,962-160
|
||||||
mov ax,point_default
|
mov ax,point_default
|
||||||
mov cx,size_show_section
|
mov cx,size_show_section
|
||||||
.home_show_cur:
|
.home_show_cur:
|
||||||
mov bx,[si]
|
mov bx,[si]
|
||||||
add di,160
|
add di,160
|
||||||
cmp bx,ax
|
cmp bx,ax
|
||||||
jz .show_cursor_activ
|
jz .show_cursor_activ
|
||||||
sub si,2
|
sub si,2
|
||||||
loop .home_show_cur
|
loop .home_show_cur
|
||||||
|
|
||||||
.show_cursor_activ:
|
.show_cursor_activ:
|
||||||
; push 0xb800
|
; push 0xb800
|
||||||
; pop es
|
; pop es
|
||||||
mov point_to_point_def,si
|
mov point_to_point_def,si
|
||||||
mov ax,(color_sym_red*0x100+0x10)
|
mov ax,(color_sym_red*0x100+0x10)
|
||||||
stosw
|
stosw
|
||||||
add di,68
|
add di,68
|
||||||
inc ax
|
inc ax
|
||||||
stosw
|
stosw
|
||||||
}
|
}
|
||||||
|
|
||||||
macro clear_timer_msg
|
macro clear_timer_msg
|
||||||
{
|
{
|
||||||
push 0xb800
|
push 0xb800
|
||||||
pop es
|
pop es
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
if DEBUG
|
if DEBUG
|
||||||
mov ax,0x0720
|
mov ax,0x0720
|
||||||
end if
|
end if
|
||||||
;;;;;;;;;;;;;;;;;;;;; show Press any key
|
;;;;;;;;;;;;;;;;;;;;; show Press any key
|
||||||
mov di,3360
|
mov di,3360
|
||||||
mov cx,80*4
|
mov cx,80*4
|
||||||
rep stosw
|
rep stosw
|
||||||
|
|
||||||
;show sect
|
;show sect
|
||||||
push ini_data_
|
push ini_data_
|
||||||
pop es
|
pop es
|
||||||
call show_bl_sc_sect ;es=0xb800
|
call show_bl_sc_sect ;es=0xb800
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -562,21 +562,21 @@ local .rest_value_loop_sh_d
|
|||||||
local .end_sh_desc_sec
|
local .end_sh_desc_sec
|
||||||
local .loop_message
|
local .loop_message
|
||||||
local .show_mess_prev_eq
|
local .show_mess_prev_eq
|
||||||
mov di,point_default
|
mov di,point_default
|
||||||
push ini_data_
|
push ini_data_
|
||||||
mov si,point_to_point_def
|
mov si,point_to_point_def
|
||||||
pop es
|
pop es
|
||||||
sub si,2
|
sub si,2
|
||||||
mov cx,[si] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
mov cx,[si] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
sub cx,di ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
sub cx,di ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
;di - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cx - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;di - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cx - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
.start_p_sh_d:
|
.start_p_sh_d:
|
||||||
call get_firs_sym ;get first symbol on new line
|
call get_firs_sym ;get first symbol on new line
|
||||||
test cx,cx
|
test cx,cx
|
||||||
jz .exit ;<3B><><EFBFBD><EFBFBD>? <20><> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> )
|
jz .exit ;<3B><><EFBFBD><EFBFBD>? <20><> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> )
|
||||||
cmp al,'d'
|
cmp al,'d'
|
||||||
jnz .start_p_sh_d
|
jnz .start_p_sh_d
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
mov bx,cx
|
mov bx,cx
|
||||||
@@ -585,99 +585,99 @@ local .show_mess_prev_eq
|
|||||||
mov si,parse_descript
|
mov si,parse_descript
|
||||||
mov cx,parse_descript_e - parse_descript
|
mov cx,parse_descript_e - parse_descript
|
||||||
repe cmpsb
|
repe cmpsb
|
||||||
jnz .rest_value_loop_sh_d ;is not compare
|
jnz .rest_value_loop_sh_d ;is not compare
|
||||||
|
|
||||||
sub bx,parse_descript_e - parse_descript ;correct cx
|
sub bx,parse_descript_e - parse_descript ;correct cx
|
||||||
add bx,cx
|
add bx,cx
|
||||||
mov cx,bx
|
mov cx,bx
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ' = '
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ' = '
|
||||||
mov ax,0x3d20 ;cut al=' ' ah='='
|
mov ax,0x3d20 ;cut al=' ' ah='='
|
||||||
repe scasb
|
repe scasb
|
||||||
jcxz .rest_value_loop_sh_d ;not found param timeout
|
jcxz .rest_value_loop_sh_d ;not found param timeout
|
||||||
|
|
||||||
cmp ah,byte [es:di-1] ;find '='
|
cmp ah,byte [es:di-1] ;find '='
|
||||||
jnz .rest_value_loop_sh_d
|
jnz .rest_value_loop_sh_d
|
||||||
|
|
||||||
repe scasb ;cut ' '
|
repe scasb ;cut ' '
|
||||||
inc cx
|
inc cx
|
||||||
dec di
|
dec di
|
||||||
;;;;;;;;;;;;;;;;;;;;di <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
;;;;;;;;;;;;;;;;;;;;di <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 37 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 37 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
;es:di - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ds:si <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;es:di - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ds:si <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
push di
|
push di
|
||||||
pop si
|
pop si
|
||||||
|
|
||||||
push es
|
push es
|
||||||
pop ds
|
pop ds
|
||||||
|
|
||||||
push 0xb800
|
push 0xb800
|
||||||
pop es
|
pop es
|
||||||
|
|
||||||
mov di,1040
|
mov di,1040
|
||||||
mov bx,18
|
mov bx,18
|
||||||
mov find_sec_di,di
|
mov find_sec_di,di
|
||||||
mov save_cx_d,bx
|
mov save_cx_d,bx
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;clean string
|
;clean string
|
||||||
|
|
||||||
push di
|
push di
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
|
|
||||||
@@: mov cx,38
|
@@: mov cx,38
|
||||||
push di
|
push di
|
||||||
rep stosw
|
rep stosw
|
||||||
pop di
|
pop di
|
||||||
|
|
||||||
cmp save_descript_size,bx
|
cmp save_descript_size,bx
|
||||||
jz @f
|
jz @f
|
||||||
|
|
||||||
|
|
||||||
add di,160
|
add di,160
|
||||||
dec bx
|
dec bx
|
||||||
jnz @b
|
jnz @b
|
||||||
|
|
||||||
@@: pop di
|
@@: pop di
|
||||||
;enter in mess
|
;enter in mess
|
||||||
.show_mess_prev_eq:
|
.show_mess_prev_eq:
|
||||||
lodsb
|
lodsb
|
||||||
mov ah,color_sym_lettuce;color_sym_turquoise
|
mov ah,color_sym_lettuce;color_sym_turquoise
|
||||||
; sub di,2
|
; sub di,2
|
||||||
cmp al,'"'
|
cmp al,'"'
|
||||||
jz .loop_message
|
jz .loop_message
|
||||||
cmp al,"'"
|
cmp al,"'"
|
||||||
jnz .end_sh_desc_sec
|
jnz .end_sh_desc_sec
|
||||||
|
|
||||||
.loop_message:
|
.loop_message:
|
||||||
mov cx,38
|
mov cx,38
|
||||||
@@:
|
@@:
|
||||||
lodsb
|
lodsb
|
||||||
cmp al,'"'
|
cmp al,'"'
|
||||||
jz .end_sh_desc_sec
|
jz .end_sh_desc_sec
|
||||||
cmp al,"'"
|
cmp al,"'"
|
||||||
jz .end_sh_desc_sec
|
jz .end_sh_desc_sec
|
||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
|
|
||||||
add find_sec_di,160
|
add find_sec_di,160
|
||||||
mov di,find_sec_di
|
mov di,find_sec_di
|
||||||
dec save_cx_d
|
dec save_cx_d
|
||||||
cmp save_cx_d,0
|
cmp save_cx_d,0
|
||||||
jnz .loop_message
|
jnz .loop_message
|
||||||
|
|
||||||
.end_sh_desc_sec:
|
.end_sh_desc_sec:
|
||||||
push save_cx_d
|
push save_cx_d
|
||||||
pop save_descript_size
|
pop save_descript_size
|
||||||
|
|
||||||
push cs
|
push cs
|
||||||
pop ds
|
pop ds
|
||||||
jmp .exit
|
jmp .exit
|
||||||
|
|
||||||
|
|
||||||
.rest_value_loop_sh_d:
|
.rest_value_loop_sh_d:
|
||||||
mov di,ax
|
mov di,ax
|
||||||
mov cx,bx
|
mov cx,bx
|
||||||
jmp .start_p_sh_d
|
jmp .start_p_sh_d
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
}
|
}
|
@@ -12,7 +12,7 @@
|
|||||||
; names of its contributors may be used to endorse or promote products
|
; names of its contributors may be used to endorse or promote products
|
||||||
; derived from this software without specific prior written permission.
|
; derived from this software without specific prior written permission.
|
||||||
;
|
;
|
||||||
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka <Lrz> ''AS IS'' AND ANY
|
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY
|
||||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||||
@@ -29,11 +29,11 @@ parse_loader db '[loader]'
|
|||||||
parse_loader_e:
|
parse_loader_e:
|
||||||
parse_l_timeout db 'timeout'
|
parse_l_timeout db 'timeout'
|
||||||
parse_l_timeout_e:
|
parse_l_timeout_e:
|
||||||
parse_l_default db 'default'
|
parse_l_default db 'default'
|
||||||
parse_l_default_e:
|
parse_l_default_e:
|
||||||
parse_name db 'ame'
|
parse_name db 'ame'
|
||||||
parse_name_e:
|
parse_name_e:
|
||||||
parse_descript db 'descript'
|
parse_descript db 'descript'
|
||||||
parse_descript_e:
|
parse_descript_e:
|
||||||
|
|
||||||
parse_LoaderModule db 'LoaderModule'
|
parse_LoaderModule db 'LoaderModule'
|
||||||
@@ -42,15 +42,15 @@ parse_RamdiskSize db 'RamdiskSize'
|
|||||||
parse_RamdiskSize_e:
|
parse_RamdiskSize_e:
|
||||||
parse_RamdiskFS db 'RamdiskFS'
|
parse_RamdiskFS db 'RamdiskFS'
|
||||||
parse_RamdiskFS_e:
|
parse_RamdiskFS_e:
|
||||||
parse_RamdiskSector db 'RamdiskSector'
|
parse_RamdiskSector db 'RamdiskSector'
|
||||||
parse_RamdiskSector_e:
|
parse_RamdiskSector_e:
|
||||||
parse_RamdiskCluster db 'RamdiskCluster'
|
parse_RamdiskCluster db 'RamdiskCluster'
|
||||||
parse_RamdiskCluster_e:
|
parse_RamdiskCluster_e:
|
||||||
parse_RFS_FAT db 'FAT'
|
parse_RFS_FAT db 'FAT'
|
||||||
parse_RFS_FAT_e:
|
parse_RFS_FAT_e:
|
||||||
parse_RFS_KRFS db 'KRFS'
|
parse_RFS_KRFS db 'KRFS'
|
||||||
parse_RFS_KRFS_e:
|
parse_RFS_KRFS_e:
|
||||||
parse_Loader_Image db 'LoaderImage'
|
parse_Loader_Image db 'LoaderImage'
|
||||||
parse_Loader_Image_e:
|
parse_Loader_Image_e:
|
||||||
parse_RamdiskFile db 'RamdiskFile'
|
parse_RamdiskFile db 'RamdiskFile'
|
||||||
parse_RamdiskFile_e:
|
parse_RamdiskFile_e:
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -12,7 +12,7 @@
|
|||||||
; names of its contributors may be used to endorse or promote products
|
; names of its contributors may be used to endorse or promote products
|
||||||
; derived from this software without specific prior written permission.
|
; derived from this software without specific prior written permission.
|
||||||
;
|
;
|
||||||
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka <Lrz> ''AS IS'' AND ANY
|
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname <Lrz> ''AS IS'' AND ANY
|
||||||
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||||
|
98
kernel/trunk/sec_loader/trunk/sl_equ.inc
Normal file
98
kernel/trunk/sec_loader/trunk/sl_equ.inc
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
; Copyright (c) 2008-2009, <Lrz>
|
||||||
|
; All rights reserved.
|
||||||
|
;
|
||||||
|
; Redistribution and use in source and binary forms, with or without
|
||||||
|
; modification, are permitted provided that the following conditions are met:
|
||||||
|
; * Redistributions of source code must retain the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer.
|
||||||
|
; * Redistributions in binary form must reproduce the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer in the
|
||||||
|
; documentation and/or other materials provided with the distribution.
|
||||||
|
; * Neither the name of the <organization> nor the
|
||||||
|
; names of its contributors may be used to endorse or promote products
|
||||||
|
; derived from this software without specific prior written permission.
|
||||||
|
;
|
||||||
|
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka <Lrz> ''AS IS'' AND ANY
|
||||||
|
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||||
|
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
;*****************************************************************************
|
||||||
|
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
DEBUG equ 1 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =1 <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =0
|
||||||
|
loop_read_startos_file equ 3 ;<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> callback <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
|
||||||
|
root_dir_entry_count equ 224 ;<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
;point_to_fat_struc equ 0xA000 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Fat <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 1 <EFBFBD><EFBFBD>
|
||||||
|
ini_data_ equ 0x2000 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
size_show_section equ 18
|
||||||
|
default_timeout_value equ 5 ;default value to timeout is will was some errors
|
||||||
|
flag_found_default equ 0x1 ;default value is found
|
||||||
|
flag_found_timeout equ 0x2 ;timeout value is found
|
||||||
|
flag_found_LM equ 0x1 ;found LM value
|
||||||
|
flag_found_RS equ 0x2 ;found RS value
|
||||||
|
flag_found_GTRFMS equ 0x4 ;found type RamFS
|
||||||
|
flag_found_RamdiskSector equ 0x8 ;found RamdiskSector
|
||||||
|
flag_found_RamdiskCluster equ 0x16 ;found RamdiskCluster
|
||||||
|
;statick data <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
save_cx equ word [bp-2] ;save cx size ini file
|
||||||
|
ret_on_ch equ word [bp-4] ;point to return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
save_cx_d equ word [bp-6] ;save cx - size default section and working section
|
||||||
|
status_flag equ word [bp-8] ;status flag
|
||||||
|
point_loader equ word [bp-10]
|
||||||
|
point_default equ word [bp-12] ;point to default
|
||||||
|
|
||||||
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
point_to_hframe equ word [bp-14] ;point on start frame (for change section)
|
||||||
|
point_to_1 equ word [bp-16]
|
||||||
|
point_to_2 equ word [bp-18]
|
||||||
|
point_to_3 equ word [bp-20]
|
||||||
|
point_to_4 equ word [bp-22]
|
||||||
|
point_to_5 equ word [bp-24]
|
||||||
|
point_to_6 equ word [bp-26]
|
||||||
|
point_to_7 equ word [bp-28]
|
||||||
|
point_to_8 equ word [bp-30]
|
||||||
|
point_to_9 equ word [bp-32]
|
||||||
|
point_to_10 equ word [bp-34]
|
||||||
|
point_to_11 equ word [bp-36]
|
||||||
|
point_to_12 equ word [bp-38]
|
||||||
|
point_to_13 equ word [bp-40]
|
||||||
|
point_to_14 equ word [bp-42]
|
||||||
|
point_to_15 equ word [bp-44]
|
||||||
|
point_to_16 equ word [bp-46]
|
||||||
|
point_to_16 equ word [bp-48]
|
||||||
|
point_to_17 equ word [bp-50]
|
||||||
|
point_to_18 equ word [bp-52]
|
||||||
|
;here array for fast scroling 16 word - poin to start section
|
||||||
|
point_to_point_def equ word [bp-54]
|
||||||
|
point_to_eframe equ word [bp-56] ;point on point frame
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> cx <EFBFBD> di <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
find_sec_di equ word [bp-58] ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> di
|
||||||
|
info_real_mode_size equ word [bp-60];<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>.<EFBFBD>. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
free_ad_memory equ word [bp-62] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
show_errors_sect equ word [bp-64] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
save_descript_size equ word [bp-66] ;save descript size previos section <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
save_ramdisksize equ dword [bp-70] ;save size of ramdisk in byte
|
||||||
|
save_file_size equ dword [bp-74] ;save size of reading file
|
||||||
|
set_ramfs equ word [bp-76] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
point_next_fat_str equ word [bp-78] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fat <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
size_root_dir equ word [bp-80] ;<EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 512 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
firstDataSect equ word [bp-82] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 0
|
||||||
|
DataClasters equ word [bp-84] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
point_to_free_root equ word [bp-86] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
point_to_dest_file_name equ word [bp-88] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
data_offset equ word [bp-90] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>.<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> 1-<EFBFBD> <EFBFBD><EFBFBD>
|
||||||
|
first_input equ word [bp-92] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
|
save_di_RAMDISK equ word [bp-94] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> di -<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
save_cx_RAMDISK equ word [bp-96] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
status_flag_loader_f equ word [bp-98] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD>.<EFBFBD>. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Enter, <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD>.<EFBFBD>. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 0<EFBFBD>1000:0000
|
Reference in New Issue
Block a user