/*----------------------------------------------------------------------------+
|   Copyright (C) 2003  Hsu-Ping Feng                                         |
|                                                                             |
|   This program is free software; you can redistribute it and/or modify      |
|   it under the terms of the GNU General Public License as published by      |
|   the Free Software Foundation; either version 2 of the License, or         |
|   (at your option) any later version.                                       |
|                                                                             |
|   This program is distributed in the hope that it will be useful,           |
|   but WITHOUT ANY WARRANTY; without even the implied warranty of            |
|   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             |
|   GNU General Public License for more details.                              |
|                                                                             |
|   You should have received a copy of the GNU General Public License         |
|   along with this program; if not, write to the Free Software               |
|                                                                             |
|   Foundation, Inc., 59 Temple Place, Suite 330,                             |
|   Boston, MA  02111-1307 USA                                                |
|                                                                             |
|                                                                             |
|   Author e-mail: spferng@ksts.seed.net.tw                                   |
+----------------------------------------------------------------------------*/

ؿCG
    ɮצvD
    @̪
    vD
    p Compile
    `Nƶ
    ܼƪRWWh
    Ulɮ²
    peܪ


 ɮצvD

      Ъ`NG {r (fontdata.c) vyqѥqzҾ
               ADzwtoӤq\iA_hȯϥΦb SPFDisk {
               WAåBo󪺰ӷ~欰ApHIzN|ItIvk
               dI

      ѩ󥻵{YLoǦrAb compile  link NLkTAҥH
      WɡAШϥΪ̪`NWzҨAb fontdata.c Y̤]P˦g
      WĵyAФŨϥΦbӷ~γ~AHKtWnk߳dI
      @@bl@(Shiuh-Pyng Ferng)o̦@y줤rzϥv
      ҩѡArɧϥήɡAHPyѥqzsA
      ú^ҩѡAխYzӤHۤvгy fontdata.c ̪ҦrrA@N
      NӦrvyz񵹥{ϥΡAлPpA@ҹ꧹N
      rɫA̫K|PyѥqzsAåBú^Ӧrϥҩ
      ѡC


 @̪ܡG

  @@۱q̱N SPFDisk WAĤ@}lPϥΪ̦
  YA̲`誺|NO user ̤jAzγ\Oӳ]p̨SApG
  SϥΪ@NϥΡANNӵ{ͩRAҥH]pn
  bϥΪ̪רӦҼ{ϥΪ̤AbhP̨ͭӦ^LHA
  ̪DۤvoIèSܦnALˬO̦bu@WFӭ
  ANOZOHϥΪ̬XoNաAoOo̤jҥܡA\h
  ]p̩{\వXӫANۥHF_(N̳o̳J@)A
  AG@ʫʡy|Ρz^ıoZkAoO@Ӹg
  AXPjaɡA@U]p̦b}o{PɥiHյۯb
  user ߳^Q@UApGzOĤ@ϥθӵ{Aγ\|JW
  DI
  @@SPFDisk b}oɨèSҼ{쥭xಾAϥΪ̸߰
  ̬O_NN SPFDisk Ө Linux UA굧̨èSQLA
  Aɵ̥bLALoӰDˬO̰F@Ӱʧ@ANҦ
  int Oܼ typedef  swordAOC@AO wordA
  NswЪhPWhAϥ{ätסAҥHh call
  Xh禡]|vTA٦ӰDNO̷]pɤw{wu
   real mode U small model compileAҥH]Fss Ȧs@
  w ds ȡAثewאּ medium model compileAP˪D
  ٬OsbAխYzQಾxܥio`No@IFCLinux 
  ]ƥ]twгiHɮרӳBzAҥHӪ INT 13h N
   /dev/hdaB/dev/hdb.... }ɤFAMAϥ IOCTL() Өo
  wЪXѼơAϥ fseek YiHʺYwЪUBI
  @@ݤF SPFDisk  Code zեıogOܦnAIN
  Uhh]]Ф[СAĴp̦p󼶼giHֳtΪ̬Oi
  Hu{XAwUDPСAӫH̤@
  ĳPɡA̯ǲ߱z״IgΪѡA̯Wi@
  ǯA̫NOƱ Open Source |O@ӵ{ͩRg
  AӬO@ӹs}lI


 p CompileG
    {ϥ Turbo C v2.0  MASM 6.x sBĶAunإߤ@Ӥl
    ؿNҥH .c  .h ɤ .asm ɩM@ makefile bP@
    ӤlؿUABӥؿn䥦ۤz .c  .asm ɡA
    J make  [Enter] YiisĶsC


 `Nƶ (HUĳW Makefile wu)G
@@@@бҥίBIBOѼ (-f87)Api{jp֪ 10K C
@@@@Фnҥ word aligment (-a) ѼƩΧj쪺ѼơA]{
    ǽwİϷ|H૬覡@ӵcWAoɦpGcͤFy
    Ŭ}(hole)zܡAN|o͸Ʀm~I
    @@Фnҥ Merge duplicate strings (-d) ѼơAo|t ID ҹ
    ɮרtΦW٦r}CeoͦrQX֩ΧRDI
        ĳWǫeH -w Ѽ(ܩҦĵi) compile LAݬݬO_
    SOĵiTANiɭPDTAWǦܺWAثe}
     makefile YϥγoӰѼơI
   @@̫ANOCW[ΧRǥ\аȥsɡAʦBЦbQ
    ʪ{ɸӳBаOѡAæbɮYOʪǸBαzmWYg
    AаȥuAHK󵧪̤Ψ䥦ק̪ʤο~lܡC


 ܼƪRWWhG

@@ҦܼưF file scope ~ܼơAjŧib global.cA
@@bU{ɸ̭Yݨ g_, gs_  bm_ }YܼƤ@wOܼơA
     g_  bm_ Oŧib global.c ̡A gs_ hOݩ file scope 
    ܼơAbɬݨN@wbɩΨ禡̪̤WYŧiC
    @@g_ M bm_ }YtOAOb g_ }YܼƦiϥΦb
    @ɤA bm_ }YXGuϥΦb bootmgr.c (SPF Boot Manager
    Kernel file) ̡A̬FKgҰʺ޲z{w˵{qҥHϥΤF
    jqܼơAо\Ū̪`NܼƪRWWhA䥦ϰܼƫhSSw
    WhC


 Ulɮ²G

diskdrv  c      ϺЦs driverAoɦb porting ɤ@w|ʨ

platform c      oɪ禡OPxAǨ禡bYǧ@~
                tάOݭnAHUOn禡G

          sword SystemInitial (void)
                  {lƤ@}lN|Is禡AҥHbP@~tΩһݭnS
                  Ol]wib禡i

          void SystemRecovery (void)
                  b{`ɷ|۰ʥsγoӨ禡AҥHiΨ٭tΪ
                  AAҦpb DOS UɦdI INT 24h hiboӨ禡[J
                  ٭ INT 24h {X

          sword CreateDiskParaTable (void)
                  إߺϺаѼƪ禡A䤤wХNܦbP@~t
                  Ωγ\|PAҦp DOS Uϥ INT 13h wз|H 0x80B0x81
                  ӪܡAӦb Linux hOH} /dev/hd? Ҩo file handle
                  ӥNAporting ɷ|ݭnW[έק lowlevel.h  DiskDT c
                  ܼơAФn diskNO ܼơAoܼƬOΨӤKw
                  οѳnwХΪAb porting ɽкoܼƤΨ䤺eTA
                  Ъ`NASPF Boot Manager Ob real mode U檺A|ϥΨ
                  INT 13h \AױzN SPFDisk porting  x86 W@~
                  tΡA`NIC

bootmgr  c      Ұʺ޲z{֤ߡ]]tܤDDD禡^A
                \hNQ쪺禡bAҥH禡ɥi䦹ɡA
                porting ɳoɵiϥΨ@~tΪ귽AB@wO
                buҦUAϥ inline assembly language
                AOdr 'asm' bP compiler |PgkA
                LӫܤjDANOoɮשҽsĶX{X
                O real mode 檺 codeAѩ{bw C yӼ
                gAgnu c O_ C code compile X real mode U code
                ANOiHAȤ]LkP SPFDisk 䥦ɮ link \
                AB SPFDisk ܼҲդ]AϥΦɪ codeAխYzQ
                 SPFDisk ܡAĳz٬Oղӭ^媩rҦ
                Τu㪺AYz󪺫ĳ]бz[СC
                @@t~ѩoɮ׳̦OѲզXy@AӤ~g C
                yA]yŪ̷|o{YǦaݰ_ӥi|h@|
                {AbO]̤QʤӦh codeA]oɮ debug
                _ӤxA]HOd½Ķ C yAٽṶ̦̄h
                h][C

input    c      @ǳBzJ禡A䤤X c_ }Y禡񩳼hA
                GPxC

output   c      @ܤrΪ禡Ab porting `NAY SPFDisk
                ObuҦUAhɸ̪ܨ禡is
                BOOTMGR.C ̪ܨ禡AYnb䥦 Linux 
                @~tΰANsgFAĳդrҦ
                NnAҦp c_printf() brҦis vprintf()I

main     c      main 禡bɡA{iJIΪlƳbBI

global   c      Ҧ쪺ܼ
selemenu c      ο沣;
getobj   c      hrs貣;
proc_pic c      Bz@
proc_fil c      s]˩Ҧɮת I/OAY}ϺХN@ήɡA
                (H SPFDisk ҰʤOĤ@wЪ DOS K|ͺϺХN)
                ҦQ]˪ɮ I/O |ҥκϺФ\~iɮתs
undo     c      UNDO ɪBz
showsect c      ܡBsϰϤe
fontdata c      r(vݩqq)
bootfile c      Ұʺ޲z{]wŪɻPs
bootget  c      Ұʺ޲z{ѨϥΪ̥ew˪mŪҰʿ]w
bootinst c      Ұʺ޲z{w
bootmenu c      Ұʺ޲z{ϥΪ̿椶
bootrec  c      Ұʺ޲z{Ҧ]w\禡
fdisk    c      wФΤuiJI
chg_disk c      ܤu@
chk_disk c      Ϻд
fd_menu  c      wФΤu㪺Bl
fd_comm  c      wФΤu@Ϊ禡
             
findspac c      CBzΫjMtmŶ
             
help     c      ROCDU
message  c      ܮت
             
partnadj c      վΤηh
partnchg c      Τ
partndel c      ΧR
partnid  c      ]wt ID
partnmak c      إߥDΡBXRΡB޿
partnmnu c      οLo禡AMwǤΥiHϥΪ̿
partnobj c      BzΪ
partnsav c      xsΪ
proc_err c      ܿ~T
qkformat c      ֳt榡Ƥ

sortpart c      ƧǰO餤Ϊ
dostools c      DOS u
diskop   c      @Ǥu@ϺЦs򥻪禡
             
int13    asm    }ĤGwЪ DOS ɹFmϺХN{
loader   asm    SPF Boot Manager Loader
pre_load asm    SPF's Master Boot Record
bootsect asm    Quick format AmҰʺϰϤܵLk}{q


 peܪsG

@@ config.h  VERSION wqrC
     kernel.h  VER_STR wqrC
    
    Ъ`NI config.h  VER_NO wqrOҰʺ޲z{sɥΪɮתs
    AФHNʡA_hzbϥαqɮ׸JҰʿ檺\ɡAN|I쪩
    ۮeӵLkJTADzuNҰʺ޲z{sɪ榡
    FܰʡAobɮ׸JҰʿɥiPwO_ϥηsWhŪɮפeI


 pܪҦG
    N config.h  DISPLAY wqreܩwqUC䤤@ءA
    M᭫s rebuild {G

         CHINESE      ܡ]øϼҦ^
         ENGLISH      ^ܡ]øϼҦ^
         TEXTMODE     ^ܡ]rҥܡ^
