Subversion Repositories Kolibri OS

Rev

Rev 1065 | Rev 1156 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1065 Rev 1151
Line 10... Line 10...
10
;       documentation and/or other materials provided with the distribution.
10
;       documentation and/or other materials provided with the distribution.
11
;       * Neither the name of the  nor the
11
;       * Neither the name of the  nor the
12
;       names of its contributors may be used to endorse or promote products
12
;       names of its contributors may be used to endorse or promote products
13
;       derived from this software without specific prior written permission.
13
;       derived from this software without specific prior written permission.
14
;
14
;
15
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka  ''AS IS'' AND ANY
15
; THIS SOFTWARE IS PROVIDED BY Alexey Teplov nickname  ''AS IS'' AND ANY
16
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
; DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
18
; DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
19
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
Line 175... Line 175...
175
 
175
 
Line 176... Line -...
176
 
-
 
177
        jmp	far	dword [es:si]
-
 
178
 
176
 
179
 
177
        jmp     far     dword [es:si]
180
 
178
 
181
 
179
 
182
.error_LM:
180
.error_LM:
Line 192... Line 190...
192
macro use_RamdiskFS
190
macro use_RamdiskFS
193
; ôîðìèðîâàíèå ðàì äèñêà, + îáðàáîòêà âñåãî ñâÿçàííîãî.
191
; ôîðìèðîâàíèå ðàì äèñêà, + îáðàáîòêà âñåãî ñâÿçàííîãî.
194
{
192
{
195
if DEBUG
193
if DEBUG
196
local ._not_memory_in_sys
194
local ._not_memory_in_sys
-
 
195
;//////// clear window
-
 
196
        mov     ax,3
-
 
197
        int     0x10
-
 
198
;\\\\\\\\\ clear window is end
197
	mov	si,ramdiskFS_st
199
        mov     si,ramdiskFS_st
198
	call	printplain
200
        call    printplain
199
end if
201
end if
200
; îáíóëèì ðåãèñòð ñîñòîÿíèÿ îøèáîê
202
; îáíóëèì ðåãèñòð ñîñòîÿíèÿ îøèáîê
201
	xor	ax,ax
203
        xor     ax,ax
Line 340... Line 342...
340
}
342
}
Line 341... Line 343...
341
 
343
 
342
macro use_free_memory
344
macro use_free_memory
343
{	
345
{       
344
local _support_function_use_free_memory
346
local _support_function_use_free_memory
345
;ìàêðîñ äëÿ ïîëó÷åíèÿ îáùåãî ÷èñëà äîñòóïíîé ïàìÿòè äëÿ ôîðìèðîâàíèÿ ðàì äèñêà çà ïðåäåëàìè 1 ìá.
347
;ìàêðîñ äëÿ ïîëó÷åíèÿ îáùåãî ÷èñëà äîñòóïíîé ïàìÿòè â êá, äëÿ ôîðìèðîâàíèÿ ðàì äèñêà çà ïðåäåëàìè 1 ìá.
346
;èñïîëüçóåòñÿ 0õ88 ôóíêöèÿ 0õ15 ïðåðûâàíèÿ
348
;èñïîëüçóåòñÿ 0õ88 ôóíêöèÿ 0õ15 ïðåðûâàíèÿ
347
; åñëè ïîääåðæèâàåòñÿ ôóíêöèÿ, òî â ax çíà÷åíèå â êá, åñëè íåò, òî â ax=0
349
; åñëè ïîääåðæèâàåòñÿ ôóíêöèÿ, òî â ax çíà÷åíèå â êá, åñëè íåò, òî â ax=0
348
	mov	ah,0x88	 ;ah,0x88
350
        mov     ah,0x88  ;ah,0x88
349
	int	0x15
351
        int     0x15
350
	jnc	._support_function_use_free_memory
352
        jnc     ._support_function_use_free_memory
351
	xor	ax,ax
353
        xor     ax,ax
352
;âîçâðàùàåò â ax ÷èñëî â êá 
354
;âîçâðàùàåò â ax ÷èñëî â êá 
353
._support_function_use_free_memory:
355
._support_function_use_free_memory:
354
	mov	free_ad_memory,ax  ; åñëè íå ïîääåðæèâàåòñÿ áèîñîì, òî â ax=0
356
        mov     free_ad_memory,ax  ; åñëè íå ïîääåðæèâàåòñÿ áèîñîì, òî â ax=0
355
if DEBUG
357
if DEBUG
356
        pusha
358
        pushad
357
        movzx   eax,ax
359
        movzx   eax,ax
358
        mov     cx,0x0a
360
        mov     cx,0x0a
359
        mov     di,free_memory_msg
361
        mov     di,free_memory_msg
360
        mov     dword[ds:di],'    '
362
        mov     dword[ds:di],'    '
361
	mov	word [ds:di+4],'  '
363
        mov     word [ds:di+4],'  '
362
        call    decode
364
        call    decode
363
;Show size
365
;Show size
364
        mov     si,free_memory_msg
366
        mov     si,free_memory_msg
Line 365... Line 367...
365
        call    printplain
367
        call    printplain
366
 
368
 
Line 610... Line 612...
610
 
612
 
-
 
613
 
-
 
614
 
-
 
615
 
-
 
616
.fat12: ;fat12
-
 
617
if DEBUG
-
 
618
; âûâåäåì â îòëàäêå, ÷òî ñîáèðàåìñÿ äåëàòü îáðàç äèñêà c FS=fat12
-
 
619
	pushad
-
 
620
	mov	si,start_making_FAT12_msg
-
 
621
	call	printplain
-
 
622
	popad
611
 
623
end if
612
 
624
 
613
 
625
 
614
.fat12: ;fat12
626
 
Line 1307... Line 1319...
1307
	
1319
        
1308
	xor	di,di
1320
        xor     di,di
Line 1309... Line -...
1309
	mov	point_to_free_root,di	;çíà÷åíèå ñìåùåíèÿ =0 â êîðíåâîé ôàò òàáëèöå îïèñàíèÿ 
-
 
-
 
1321
        mov     point_to_free_root,di   ;çíà÷åíèå ñìåùåíèÿ =0 â êîðíåâîé ôàò òàáëèöå îïèñàíèÿ 
Line 1310... Line 1322...
1310
 
1322
 
1311
 
1323
 
1312
	pop	ds
1324
        pop     ds   ; çàãðóæåí ñëåäóþùèé ñåãìåíò ò.å. ïóñòîé ñåãìåíò
1313
 
1325
 
Line 1320... Line 1332...
1320
 
1332
 
1321
	pop	ds
1333
        pop     ds
Line 1322... Line 1334...
1322
	mov	point_next_fat_str,3
1334
        mov     point_next_fat_str,3
1323
 
1335
 
1324
if DEBUG        
1336
if DEBUG        
1325
        pusha
1337
        pushad
1326
	mov	ax,point_next_fat_str
1338
        mov     ax,point_next_fat_str
1327
        mov     cx,0x0a
1339
        mov     cx,0x0a
1328
        mov     di,fat_create_msg
1340
        mov     di,fat_create_msg
1329
        call    decode                                                                    
1341
        call    decode                                                                    
1330
;Show size
1342
;Show size
1331
        mov     si,fat_create_msg
1343
        mov     si,fat_create_msg
1332
        call    printplain
1344
        call    printplain
Line 1333... Line 1345...
1333
        popa
1345
        popad
1334
end if  
1346
end if  
1335
 
1347
 
Line 1530... Line 1542...
1530
	cwd
1542
        cwd
1531
	idiv	bx
1543
        idiv    bx
1532
	mov	DataClasters,ax
1544
        mov     DataClasters,ax
Line 1533... Line 1545...
1533
 
1545
 
1534
if DEBUG        
1546
if DEBUG        
1535
        pusha
1547
        pushad
1536
	mov	ax,firstDataSect	;ïåðâûé ñåêòîð äàííûõ
1548
        mov     ax,firstDataSect        ;ïåðâûé ñåêòîð äàííûõ
1537
        mov     cx,0x0a
1549
        mov     cx,0x0a
1538
        mov     di,firstDataSect_msg
1550
        mov     di,firstDataSect_msg
1539
        call    decode                                                                    
1551
        call    decode                                                                    
Line 1554... Line 1566...
1554
        mov     di,DataClasters_msg
1566
        mov     di,DataClasters_msg
1555
        call    decode                                                                    
1567
        call    decode                                                                    
1556
;Show size
1568
;Show size
1557
        mov     si,DataClasters_msg
1569
        mov     si,DataClasters_msg
1558
        call    printplain
1570
        call    printplain
1559
        popa
1571
        popad
Line 1560... Line 1572...
1560
 
1572
 
Line 1561... Line 1573...
1561
end if  
1573
end if  
Line 1613... Line 1625...
1613
	mov	cx,11	;size of name in struct FAT
1625
        mov     cx,11   ;size of name in struct FAT
Line 1614... Line 1626...
1614
 
1626
 
1615
@@:	
1627
@@:     
1616
	mov	al,byte [ds:si+bx]
1628
        mov     al,byte [ds:si+bx]
-
 
1629
        mov     ah,byte [gs:di+bx]      ;gs:di - point to name in fat struct
-
 
1630
 
-
 
1631
if DEBUG
-
 
1632
        pushad
-
 
1633
 
-
 
1634
        
-
 
1635
        mov     cx,11
-
 
1636
;input cx=size al=char áóäåò âûâåäåí ñèìâîë ñêîëüêî ðàç óêàçàíî â cx
-
 
1637
@@:
-
 
1638
        mov     al,byte [gs:di]
-
 
1639
        inc     di
-
 
1640
        call    putchar
-
 
1641
        loop    @b
-
 
1642
 
-
 
1643
        xor     ax,ax
-
 
1644
        int     0x16
-
 
1645
 
-
 
1646
        
-
 
1647
        popad
1617
	mov	ah,byte [gs:di+bx] 	;gs:di - point to name in fat struct
1648
end if
Line 1618... Line 1649...
1618
	inc	bx
1649
        inc     bx
1619
 
1650
 
Line 1659... Line 1690...
1659
 
1690
 
1660
 
1691
 
1661
macro convertion_file_name
1692
macro convertion_file_name
-
 
1693
;ìàêðîñ êîíâåðòàöèè èìåíè, ýòî íóæíî ïîñêîëüêó ôîðìàò ïðåäñòàâëåííûé íå ñîîòâåòñâóåò ôàò è íàïðÿìóþ ðåäêî ìîæíî êîãäà èñïîëüçîâàòü
1662
;ìàêðîñ êîíâåðòàöèè èìåíè, ýòî íóæíî ïîñêîëüêó ôîðìàò ïðåäñòàâëåííûé íå ñîîòâåòñâóåò ôàò è íàïðÿìóþ ðåäêî ìîæíî êîãäà èñïîëüçîâàòü
1694
;ïðåîáðàçîâàíèå èìåíè òèïà hello.asm â 'HELLO   ASM', â ñîîòâåòñòâèè ñ ïðàâèëàìè fat.
1663
;ïðåîáðàçîâàíèå èìåíè òèïà hello.asm â 'HELLO   ASM', â ñîîòâåòñòâèè ñ ïðàâèëàìè fat.
1695
;âõîäíûå ïàðàìåòðû es:di óêàçàòåëü íà èìÿ ôàéëà êîòîðîå íóæíî ïðåîáðàçîâàòü, êîíå÷íûé áóôåð shot_name_fat
1664
{
1696
{
1665
local	.next_step
1697
local   .next_step
1666
local   .error
1698
local   .error