Rev 2288 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2288 | Rev 3539 | ||
---|---|---|---|
Line 22... | Line 22... | ||
22 | ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
22 | ; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
23 | ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
23 | ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
24 | ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
24 | ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
25 | ;***************************************************************************** |
25 | ;***************************************************************************** |
Line 26... | Line 26... | ||
26 | 26 | ||
27 | ; Ìîäóëü ïàðñèíãà - ýòî ñòàíäàðòíûé êîìïîíåíò, âñòðàèâàåìûé âî âòîðè÷íûé çàãðóç÷èê. |
27 | ; Модуль парсинга - это стандартный компонент, встраиваемый во вторичный загрузчик. |
28 | ; Äàííûé ìîäóëü ïîçâîëÿåò ñòàíäàðòíî ïðîèçâåñòè ðàçáîð ini ôàéëà |
28 | ; Данный модуль позволяет стандартно произвести разбор ini файла |
29 | ; (è ñ èñïîëüçîâàíèåì ïîëó÷åííûõ äàííûõ ÎÑ áóäåò çàãðóæàòüñÿ äàëüøå). |
29 | ; (и с использованием полученных данных ОС будет загружаться дальше). |
30 | ;  íà÷àëå íàéäåì îòêðûâàþùèé "[" - ýòî áóäåò óêàçûâàòü íà íà÷àëî |
30 | ; В начале найдем открывающий "[" - это будет указывать на начало |
31 | ; ñåêöèè. Ïîääåðæèâàåòñÿ 1 ñåêöèÿ ýòî [loader], îñòàëüíûå ñåêöèè ìîãóò èìåòü |
31 | ; секции. Поддерживается 1 секция это [loader], остальные секции могут иметь |
32 | ; ëþáûå èìåíà, íî îíè äîëæíû áûòü çàêëþ÷åíû â â ñêîáêè [] |
32 | ; любые имена, но они должны быть заключены в в скобки [] |
33 | macro use_parse |
33 | macro use_parse |
34 | { |
34 | { |
35 | ;input cx=size of ini file |
35 | ;input cx=size of ini file |
36 | parse_start: |
36 | parse_start: |
37 | ;es:di as 2000:0000 new segment |
37 | ;es:di as 2000:0000 new segment |
38 | ;óñòàíîâèì óêàçàòåëü íà çàãðóæåííûé áëîê |
38 | ;установим указатель на загруженный блок |
39 | enter 256, 0 ;set 16 byte for current task in stack |
39 | enter 256, 0 ;set 16 byte for current task in stack |
40 | ;we are is not use bp because bp is pointer on array 16 byte |
40 | ;we are is not use bp because bp is pointer on array 16 byte |
41 | mov word [save_bp_from_timer], bp ;save point to own data array |
41 | mov word [save_bp_from_timer], bp ;save point to own data array |
42 | mov save_cx, cx ;it's placed size of ini file |
42 | mov save_cx, cx ;it's placed size of ini file |
43 | les di, dword [file_data] |
43 | les di, dword [file_data] |
44 | ;îáíóëèì âñå ïåðåìåííûå âûäåëåííûå èç ñòåêà |
44 | ;обнулим все переменные выделенные из стека |
45 | ;init flag |
45 | ;init flag |
46 | xor ax, ax |
46 | xor ax, ax |
47 | mov status_flag, ax |
47 | mov status_flag, ax |
48 | ;set data size |
48 | ;set data size |
Line 49... | Line 49... | ||
49 | mov info_real_mode_size, ini_data_ +0x1000 ;èçìåíèì çíà÷åíèå çàíÿòîñòè ïàìÿòè |
49 | mov info_real_mode_size, ini_data_ +0x1000 ;изменим значение занятости памяти |
50 | 50 | ||
51 | ;ïîèñê íà÷àëà áëîêà. |
51 | ;поиск начала блока. |
Line 52... | Line 52... | ||
52 | ;///////////check [loader] |
52 | ;///////////check [loader] |
53 | cld |
53 | cld |
Line 61... | Line 61... | ||
61 | .first_sp_1: |
61 | .first_sp_1: |
62 | jmp get_firs_sym.first_sp |
62 | jmp get_firs_sym.first_sp |
Line 63... | Line 63... | ||
63 | 63 | ||
64 | .start: |
64 | .start: |
65 | call get_firs_sym ;get first symbol on new line |
65 | call get_firs_sym ;get first symbol on new line |
66 | .first_ret: ;ïåðâûé âîçâðàò |
66 | .first_ret: ;первый возврат |
67 | ; jcxz .end_file ;.end_loader ;found or not found parametrs in section exit in section |
67 | ; jcxz .end_file ;.end_loader ;found or not found parametrs in section exit in section |
68 | test cx, cx |
68 | test cx, cx |
69 | jz error.not_loader |
69 | jz error.not_loader |
70 | cmp al, '[' |
70 | cmp al, '[' |
71 | jz .parse_loader |
71 | jz .parse_loader |
72 | jmp .start |
72 | jmp .start |
73 | ;////// ïðîâåðêà íà íàëè÷åå ñåêöèè loader |
73 | ;////// проверка на наличее секции loader |
74 | use_parse_loader |
74 | use_parse_loader |
75 | ;pause |
75 | ;pause |
76 | if DEBUG |
76 | if DEBUG |
77 | xor ax, ax |
77 | xor ax, ax |
78 | int 16h |
78 | int 16h |
79 | end if |
79 | end if |
80 | ;////// âûâîä ãðàôè÷åñêîãî ýêðàíà, âûáîð, ñåêöèè ïîä äåôîëòó |
80 | ;////// вывод графического экрана, выбор, секции под дефолту |
81 | use_any_sec |
81 | use_any_sec |
82 | ;ïàðñèíã âûáðàíîé èëè äåôîëòíîé ñåêöèè ò.å. ðàçáîð ïàðàìåòðîâ âûïîëíåíèå ñöåíàðèÿ |
82 | ;парсинг выбраной или дефолтной секции т.е. разбор параметров выполнение сценария |
Line 83... | Line 83... | ||
83 | use_parse_def_sect |
83 | use_parse_def_sect |
84 | 84 | ||
85 | ;////////////////// |
85 | ;////////////////// |