Subversion Repositories Kolibri OS

Rev

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       ;старое значение вектора таймера