Rev 2288 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2288 | Rev 3539 | ||
---|---|---|---|
Line 36... | Line 36... | ||
36 | ;start of code: ; |
36 | ;start of code: ; |
37 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
37 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
38 | use16 |
38 | use16 |
39 | org 0x0 |
39 | org 0x0 |
40 | jmp start |
40 | jmp start |
41 | include 'sl_equ.inc' ; â ôàéëå ðàçìåùåíû âñå equ ïðåäîïðåäåëåíèÿ |
41 | include 'sl_equ.inc' ; в файле размещены все equ предопределения |
42 | include 'boot_st.inc' |
42 | include 'boot_st.inc' |
43 | include 'debug_msg.inc' ;here is message from debug |
43 | include 'debug_msg.inc' ;here is message from debug |
44 | include 'parse_dat.inc' |
44 | include 'parse_dat.inc' |
45 | include 'sl_proc.inc' |
45 | include 'sl_proc.inc' |
46 | include 'parse.inc' |
46 | include 'parse.inc' |
47 | include 'parse_loader.inc' |
47 | include 'parse_loader.inc' |
48 | include 'parse_any.inc' |
48 | include 'parse_any.inc' |
49 | include 'parse_def_sect.inc' |
49 | include 'parse_def_sect.inc' |
50 | include 'parse_err.inc' |
50 | include 'parse_err.inc' |
Line 51... | Line 51... | ||
51 | 51 | ||
52 | file_data dw 0x0,ini_data_ ;ôîðìàò: ñìåùåíèå: ñåãìåíò ò.ê. èñïîëüçóåòñÿ les |
52 | file_data dw 0x0,ini_data_ ;формат: смещение: сегмент т.к. используется les |
53 | size_data dw 16 ;16 áëîêîâ ïî 4 êá ò.å ïðåäåë äî 64 êá |
53 | size_data dw 16 ;16 блоков по 4 кб т.е предел до 64 кб |
Line 54... | Line 54... | ||
54 | name_ini_f db 'kord/startos.ini',0 |
54 | name_ini_f db 'kord/startos.ini',0 |
55 | 55 | ||
56 | ;//////////// |
56 | ;//////////// |
Line 84... | Line 84... | ||
84 | 84 | ||
85 | mov si, version |
85 | mov si, version |
86 | call printplain |
86 | call printplain |
87 | mov al, '#' |
87 | mov al, '#' |
88 | mov cx, 80 |
88 | mov cx, 80 |
89 | ;input cx=size al=char áóäåò âûâäåí ñèìâîë ñêîëüêî ðàç óêàçàíî â cx |
89 | ;input cx=size al=char будет вывден символ сколько раз указано в cx |
90 | @@: |
90 | @@: |
91 | call putchar |
91 | call putchar |
Line 92... | Line 92... | ||
92 | loop @b |
92 | loop @b |
93 | 93 | ||
94 | if DEBUG |
94 | if DEBUG |
95 | pushad |
95 | pushad |
96 | mov ax, cs |
96 | mov ax, cs |
97 | shl eax, 4 ; â äåñÿòè÷íîé ñèñòåìå àäðåñ ñåãìåíòà |
97 | shl eax, 4 ; в десятичной системе адрес сегмента |
98 | mov cx, 0xa |
98 | mov cx, 0xa |
99 | mov di, cseg_msg |
99 | mov di, cseg_msg |
100 | call decode |
100 | call decode |
Line 160... | Line 160... | ||
160 | 160 | ||
161 | 161 | ||
162 | 162 | ||
163 | 163 | ||
164 | ; Load startos.ini |
164 | ; Load startos.ini |
165 | mov cx, loop_read_startos_file ;êîë-âî ïîïûòîê ÷òåíèÿ ôàéëà êîíôèãóðàöèè startos.ini |
165 | mov cx, loop_read_startos_file ;кол-во попыток чтения файла конфигурации startos.ini |
166 | align 4 |
166 | align 4 |
Line 252... | Line 252... | ||
252 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
252 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
253 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
253 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
254 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
254 | db 0x00,0x00,0x0,0x00,0x00,0x00,0x0,0x0 |
Line 255... | Line 255... | ||
255 | 255 | ||
256 | fat12_buffer: |
256 | fat12_buffer: |
257 | .BS_jmpBoot db 0x90,0x90,0x90 ;3 áàéòà NOP èíñòðóêöèÿ - íè÷åãî íå äåëàòü |
257 | .BS_jmpBoot db 0x90,0x90,0x90 ;3 байта NOP инструкция - ничего не делать |
258 | .BS_OEMName db 'K SyS 64' ;8 áàéò |
258 | .BS_OEMName db 'K SyS 64' ;8 байт |
259 | .BPB_BytsPerSec dw 512 ;êîë-âî áàéòîâ â ñåêòîðå ìîæåò áûòü ëþáîå 512 1024 2048 4096 2 áàéòà |
259 | .BPB_BytsPerSec dw 512 ;кол-во байтов в секторе может быть любое 512 1024 2048 4096 2 байта |
260 | .BPB_SecPerClus db 0x1 ;êîë-âî ñåêòîðîâ â êëàñòåðå |
260 | .BPB_SecPerClus db 0x1 ;кол-во секторов в кластере |
261 | .BPB_RsvdSecCnt dw 0x1 ;äëÿ FAt12/16 òîëüêî 1, äëÿ FAT32 îáû÷íî 32 |
261 | .BPB_RsvdSecCnt dw 0x1 ;для FAt12/16 только 1, для FAT32 обычно 32 |
262 | .BPB_NumFATs db 0x1 ;êîë-âî ôàò òàáëèö, íà òîò ñëó÷àé åñëè áóäåò ñáðîñ íà äèñêåòó îáðàçà ðàì äèñêà |
262 | .BPB_NumFATs db 0x1 ;кол-во фат таблиц, на тот случай если будет сброс на дискету образа рам диска |
263 | .BPB_RootEntCnt dw 512 ;äëÿ ìàê ñîâìåñòèìîñòè ñ fat16 |
263 | .BPB_RootEntCnt dw 512 ;для мак совместимости с fat16 |
264 | .BPB_TotSec16 dw 0x0 ;êë-âî ñåêòîðîâ |
264 | .BPB_TotSec16 dw 0x0 ;кл-во секторов |
265 | .BPB_Media db 0xF0 |
265 | .BPB_Media db 0xF0 |
266 | .BPB_FATSz16 dw 0x0 |
266 | .BPB_FATSz16 dw 0x0 |
267 | .BPB_SecPerTrk dw 0x0 ;ñîäåðæèò ãåîìåòðèþ äèñêà äëÿ RAMFS íà êàê áû áåç ðàçíèöû, ïîêà ïóñòîå ïîëå, ïîçæå âíåñòè ðåàëüíûå çíà÷åíèÿ. |
267 | .BPB_SecPerTrk dw 0x0 ;содержит геометрию диска для RAMFS на как бы без разницы, пока пустое поле, позже внести реальные значения. |
268 | .BPB_NumHeads dw 0x0 |
268 | .BPB_NumHeads dw 0x0 |
269 | .BPB_HiddSec dd 0x0 ;êîë-âî ñêðûòûõ ñåêòîðîâ |
269 | .BPB_HiddSec dd 0x0 ;кол-во скрытых секторов |
270 | .BPB_TotSec32 dd 0x0 |
270 | .BPB_TotSec32 dd 0x0 |
271 | .BS_DrvNum db 'R' ;îò ñëîâà RAM |
271 | .BS_DrvNum db 'R' ;от слова RAM |
272 | .BS_Reserved1 db 0x0 |
272 | .BS_Reserved1 db 0x0 |
273 | .BS_BootSig db 0x29 |
273 | .BS_BootSig db 0x29 |
274 | .BS_VolID db 'RFKS' |
274 | .BS_VolID db 'RFKS' |
275 | .BS_VolLab db 'RAM DISK FS' ;11 ñèìâîëîâ |
275 | .BS_VolLab db 'RAM DISK FS' ;11 символов |
276 | .BS_FilSysType db 'FAT12 ' ;8 ñèìâîëîâ |
276 | .BS_FilSysType db 'FAT12 ' ;8 символов |
277 | ;62 áàéòà ñòðóêòóðà fat12. |
277 | ;62 байта структура fat12. |
Line 278... | Line 278... | ||
278 | db (512-($-fat12_buffer))dup(0x90) |
278 | db (512-($-fat12_buffer))dup(0x90) |
279 | 279 | ||
280 | 280 | ||
281 | 281 | ||
282 | ;ñòðóêòóðà äëÿ äèððåêòîðèè fat |
282 | ;структура для дирректории fat |
283 | struc FAT_32_entry ;Byte Directory Entry Structure |
283 | struc FAT_32_entry ;Byte Directory Entry Structure |
Line 295... | Line 295... | ||
295 | .DIR_FstClusLO dw ? |
295 | .DIR_FstClusLO dw ? |
296 | .DIR_FileSize dd ? |
296 | .DIR_FileSize dd ? |
Line 297... | Line 297... | ||
297 | 297 | ||
298 | 298 | ||
299 | } |
299 | } |
300 | ;Òóò áóäóò ðàñïîëîãàòñüÿ äàííûå, êîòîðûå çàòðóäíèòåëüíî ðàñïîëîãàòü â ñòåêîâîé îáëàñòè.... |
300 | ;Тут будут распологатсья данные, которые затруднительно распологать в стековой области.... |
301 | ;;; |
301 | ;;; |
Line 302... | Line 302... | ||
302 | ;timer |
302 | ;timer |
303 | shot_name_fat rb 11 ;âðåìåííûé áóôåð äëÿ fat12, â íåì õðàíÿòüñÿ èìåíà ôàéëîâ ïðèâåäåííûå ê ïðàâèëàì FAT /* âäàëüíåéøåì ïåðåíåñòè â ñòýê |
303 | shot_name_fat rb 11 ;временный буфер для fat12, в нем храняться имена файлов приведенные к правилам FAT /* вдальнейшем перенести в стэк |
304 | 304 | ||
305 | if DEBUG |
305 | if DEBUG |
306 | rb 1 ;íóæåí äëÿ îòëàäêè è âûâîäà èìåíè ôàéëà ïîñëå ïðåîáðàçîâàíèÿ |
306 | rb 1 ;нужен для отладки и вывода имени файла после преобразования |
Line 307... | Line 307... | ||
307 | dest_name_fat db 24 dup('_');12 |
307 | dest_name_fat db 24 dup('_');12 |
308 | db 0x0 |
308 | db 0x0 |
309 | end if |
309 | end if |
310 | 310 | ||
311 | value_timeout rw 1 ;value to timeout |
311 | value_timeout rw 1 ;value to timeout |
312 | old_timer rd 1 ;ñòàðîå çíà÷åíèå âåêòîðà òàéìåðà |
312 | old_timer rd 1 ;старое значение вектора таймера |