(*
*******************************************************************************
*         Copyright (C) SofCon 2003 All Rights Reserved                       *
*******************************************************************************
*
*    project:     DEMO LOADER
*
*    title:       uxDesc
*
*******************************************************************************
*
*    description: Ukazka kodu, ktery provede modifikace obsazeni pameti,
*                 verze a zpusobu komunikace vlastniho LOADER
*
*    version:     1.04 {verze teto unit, verze LOADER je v Loader.pas}
*    language:    Borland Pascal 7.0
*
*    author:      Jan Hvozdovic
*    history:     date      sign   remark
*                 6.02      hv     zacatek vyvoje
*                11.02      hv     prvni release
*                 4.03      hv	   oprava komentare + zruseni cVer a cName
*                12.03      hv     ve verzi pro PC se nevola Halt v ExitProc
*                 1.04      hv     zmena umisteni tLdrDesc - zmena struktury
*                                  pridany priklady nastaveni adres
*					laModuleTable
*					laLoaderStart
*******************************************************************************
*)
unit uxDesc;
{$i sets.inc}
interface

procedure AdaptToMyApp;


implementation
uses
   HwSyst
  ,xDesc              { definice konstant, typu a funkci sdilenych
                        s uzivatelskou aplikaci }
  ,NumToStr           { prace s retezeci }
  ;


{ procedura se vola po spusteni LOADER a umoznuje signalizovat stav
  chodu LOADER na sbernici PBUS }
{$S-,R-,Q-}
procedure AdaptToMyApp;
begin
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
{+ nastaveni umisteni aplikace a sdilenych struktur v pameti Flash +}
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
  { bazova adresa pameti FLASH - mela by se nastavovat pomoci HwSyst }
  laFlashBase := $80000; { GetBaseAddr }
  { dale uvedene hodnoty se pouziji pouze pokud se nepodari identifikace }
  wFlashManDev  :=$A41F; { AT29C040A       }
  wFlashLenSect :=512;   { 16b - AT29C040A }
  { pocatecni adresa modulu vlastni aplikace, ktery obsahuje --LOADER--}
  { -- v pripade poskozeni ModuleTable se pouzije tato adresa jako
    defaultni adresa pro start aplikace }
  { spodni 4bity jsou ignorovany  }
  laAppStart  := $E0000;

 { !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   Absolutni adresa zacatku aplikace LOADER ve Flash pameti ->
   musi odpovidat nastaveni v RTD
   Pozn: Pri umistovani LOADER je doporuceno ponechat v modulu
         alespon 4KB volneho prostoru z duvodu budouciho rozsirovani
         LOADER nebo pro pripadne upravy systemovych knihoven LIB
   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! }
 {$ifdef V40}
  {$ifdef Ldr_Deb_Crt}
   laLoaderStart  := $F0200;
  {$else}
   laLoaderStart  := $F3A00;
  {$endif}
 {$endif V40}

 {$ifdef COM}
  {$ifdef Ldr_Deb_Crt}
   laLoaderStart  := $ED200;
  {$else}
   laLoaderStart  := $F1200;
  {$endif}
 {$endif COM}

  laModuleTable:=laLoaderStart - $200{rezervovana velikost pro ModuleTable};

  { max. a min. adresa zalohovane pameti RAM obsahujici pevna data }
  laMaxFixedMemory := $40000; {256KB}
 {$ifdef VerMC}
  laMinFixedMemory := PtrToAbsAddr(HeapEnd);
 {$else}
  laMinFixedMemory := $15B00;
 {$endif}

  { definice konstant popisujici adresy sdilenych struktur mezi
    LOADER a ridici aplikaci, tj. aplikace MUSI mit tyto konstanty
    nastavene na stejne hodnoty }
  _laAppRstDesc := $3FE00;  { laMaxFixedMemory - sizeof(tAppRstDesc1) - Reserve(13B) }
  _laLdrDesc    := $3FDE0;  { _laAppRstDesc - sizeof(tLdrDesc3) - Reserve(9B) }
end;
{$S+,R+,Q+}


{ V inicializacni casti teto unit nesmi byt zadny kod }
end.
