Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ; Copyright (c) 2008-2009, diamond
  2. ; All rights reserved.
  3. ;
  4. ; Redistribution and use in source and binary forms, with or without
  5. ; modification, are permitted provided that the following conditions are met:
  6. ;       * Redistributions of source code must retain the above copyright
  7. ;       notice, this list of conditions and the following disclaimer.
  8. ;       * Redistributions in binary form must reproduce the above copyright
  9. ;       notice, this list of conditions and the following disclaimer in the
  10. ;       documentation and/or other materials provided with the distribution.
  11. ;       * Neither the name of the <organization> nor the
  12. ;       names of its contributors may be used to endorse or promote products
  13. ;       derived from this software without specific prior written permission.
  14. ;
  15. ; THIS SOFTWARE IS PROVIDED BY Alexey Teplov aka <Lrz> ''AS IS'' AND ANY
  16. ; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  17. ; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  18. ; DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
  19. ; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  20. ; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  21. ; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  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
  24. ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  25. ;*****************************************************************************
  26.  
  27. Ñïåöèôèêàöèÿ íà ïåðâè÷íûé çàãðóç÷èê KordOS.
  28. Çàãðóç÷èê äîëæåí ïðåäîñòàâëÿòü ñëåäóþùèå ñåðâèñû:
  29. 1. Ïðè çàãðóçêå êîìïüþòåðà, ïîëó÷èâ óïðàâëåíèå îò BIOS'à, çàãðóæàòü
  30.         ôàéë loader èç ïàïêè kord ïî àäðåñó 1000:0000.
  31.         Ðàçìåð ôàéëà loader íå ïðåâîñõîäèò 30000h = 192 Kb.
  32. 2. Ïðè ýòîì óñòàíàâëèâàòü ñëåäóþùèå ðåãèñòðû:
  33.         ax èäåíòèôèöèðóåò óñòðîéñòâî:
  34.         al = òèï:
  35.                 'f' - ôëîïèê
  36.                 'h' - HDD
  37.                 'c' - CD/DVD
  38.                 'u' - USB ôëåøêà
  39.                 '?' - íåèçâåñòíîå óñòðîéñòâî
  40.         ah = íîìåð óñòðîéñòâà (ñðåäè âñåõ óñòðîéñòâ ôèêñèðîâàííîãî òèïà)
  41.         bx = òèï ôàéëîâîé ñèñòåìû:
  42.                 '12' = FAT12
  43.                 '16' = FAT16
  44.                 '32' = FAT32
  45.                 'nt' = NTFS
  46.                 'is' = ISO-9660
  47.         ds:si = far-óêàçàòåëü íà callback-ñåðâèñ
  48. 3. Ïðåäîñòàâëÿòü callback-ñåðâèñ äëÿ âòîðè÷íîãî çàãðóç÷èêà - far-ïðîöåäóðó:
  49.         íà âõîäå: ax = çàïðàøèâàåìàÿ ôóíêöèÿ
  50.         íà âûõîäå: CF=1, åñëè ôóíêöèÿ íå ïîääåðæèâàåòñÿ; CF=0 èíà÷å
  51.         Çàãðóç÷èê ìîæåò ðàçðóøàòü âñå ðåãèñòðû, âêëþ÷àÿ ñåãìåíòíûå,
  52.         çà èñêëþ÷åíèåì ss è sp.
  53. 4. Âñåãäà äîëæíà ïîääåðæèâàòüñÿ callback-ôóíêöèÿ 1:
  54.         íàçíà÷åíèå: ïðî÷èòàòü ôàéë, ðàñïîëîæåííûé íà çàãðóçî÷íîì óñòðîéñòâå
  55.         íà âõîäå: ax = 1, ds:di = óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó:
  56.                 dw:dw   far-óêàçàòåëü íà áóôåð,
  57.                         ïåðâîå ñëîâî - ñìåùåíèå, âòîðîå - ñåãìåíò
  58.                 dw      ìàêñèìàëüíîå ÷èñëî 4Kb-áëîêîâ äëÿ ÷òåíèÿ (0x1000 áàéò)
  59.                         äîëæíî áûòü íåíóëåâûì è ñòðîãî ìåíüøå 0x100
  60.                 ASCIIZ  èìÿ ôàéëà â ôîðìàòå "<ïàïêà1>/<ïàïêà2>/<ôàéë>"
  61.         Åñëè èìÿ ôàéëà ñîäåðæèò ñèìâîëû èç ñòàðøåé ïîëîâèíû
  62.         ASCIIZ-òàáëèöû èëè íå ÿâëÿåòñÿ 8.3-èìåíåì (â ñìûñëå, îäíà èç êîìïîíåíò
  63.         èìåíè ôàéëà èìååò èìÿ äëèííåå 8 ñèìâîëîâ èëè ðàñøèðåíèå äëèííåå 3),
  64.         çàãðóç÷èê ìîæåò íå íàéòè òàêîé ôàéë, äàæå åñëè îí åñòü
  65.         (à ìîæåò è íàéòè).
  66.         íà âûõîäå: bx = ñòàòóñ:
  67.                 0 = óñïåøíî
  68.                 1 = ôàéë îêàçàëñÿ ñëèøêîì áîëüøèì, áóôåð çàïîëíåí öåëèêîì
  69.                         è åñòü åù¸ äàííûå ôàéëà
  70.                 2 = ôàéë íå íàéäåí
  71.                 3 = ïðîèçîøëà îøèáêà ÷òåíèÿ
  72.                 dx:ax = ðàçìåð ôàéëà èëè FFFF:FFFF, åñëè ôàéë íå íàéäåí
  73. 5. Âñåãäà äîëæíà ïîääåðæèâàòüñÿ callback-ôóíêöèÿ 2:
  74.         íàçíà÷åíèå: ïðîäîëæèòü ÷òåíèå ôàéëà, ÷àñòè÷íî çàãðóæåííîãî ôóíêöèåé 1
  75.         íà âõîäå: ax = 2, ds:di = óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó:
  76.                 dw:dw   far-óêàçàòåëü íà áóôåð,
  77.                         ïåðâîå ñëîâî - ñìåùåíèå, âòîðîå - ñåãìåíò
  78.                 dw      ìàêñèìàëüíîå ÷èñëî 4Kb-áëîêîâ äëÿ ÷òåíèÿ (0x1000 áàéò)
  79.                         äîëæíî áûòü íåíóëåâûì è ñòðîãî ìåíüøå 0x100
  80.         íà âûõîäå: bx = ñòàòóñ:
  81.                 0 = óñïåøíî
  82.                 1 = ôàéë îêàçàëñÿ ñëèøêîì áîëüøèì, áóôåð çàïîëíåí öåëèêîì
  83.                         è åñòü åù¸ äàííûå ôàéëà
  84.                 3 = ïðîèçîøëà îøèáêà ÷òåíèÿ
  85.                 dx:ax = ðàçìåð ôàéëà
  86.         Ôóíêöèþ ìîæíî âûçûâàòü òîëüêî â ñëó÷àå, êîãäà ïîñëåäíèé âûçîâ ôóíêöèè
  87.         1 è âñå ïîñëåäóþùèå âûçîâû ôóíêöèè 2 âåðíóëè bx=1 (èíûìè ñëîâàìè,
  88.         òîëüêî äëÿ ïðîäîëæåíèÿ çàãðóçêè ôàéëà, êîòîðûé óæå áûë ÷àñòè÷íî
  89.         çàãðóæåí, íî åù¸ íå çàãðóæåí ïîëíîñòüþ).
  90. Çàãðóç÷èê ìîæåò áûòü óâåðåí, ÷òî äàííûå â îáëàñòÿõ ïàìÿòè 0-9000 è
  91.         60000-A0000 íå áóäóò ìîäèôèöèðîâàíû ÿäðîì.
  92.