
                       4.5.  GRAPH
                       -----------------

     Graph  ।祭   뢮 䨪.  ᯮ
 SCREEN.   뢮 ଠ樨  ࠭ "Orion" ᥣ
⢫  ᪮ ०,   ࠢ ࠭
 梥⠬   ᯮ짮   ணࠬ,   
ᨬ쭮 ०  (.  SCREEN).  ,   GRAPH
  ᯥ樠 楤  㭪権,  ᯥ稢 -
 ᪮ ଠ樨  ਢ離  ⥪饬 :


procedure GWindow (x1,y1,x2,y2: Integer);
  {-⠭   ᪨ न⠬ 㣫 }

function GWindMinX: Integer;
  {- ᪠ न X  }

function GWindMinY: Byte;
  {- ᪠ न Y  }

function GWindMaxX: Integer;
  {-ࠢ ᪠ न X  }

function GWindMaxY: Integer;
  {- ᪠ न Y  }

procedure PutPix (X,Y: Integer; Color: Byte);
  {-뢮 窨 }

function GetPix (X,Y: Integer): Byte;
  {-祭 梥 窨 }

procedure Draw (X1,Y1,X2,Y2: Integer; Color: Byte);
  {-뢮  }

procedure Rectangle (X1,Y1,X2,Y2: Integer; Color: Byte);
  {-뢮 אַ㣮쭮 ࠬ }

procedure Bar (X1,Y1,X2,Y2: Integer; Color: Byte);
  {-뢮 襭 ⮫ }

procedure Circle (X,Y,R: Integer; Color: byte);
  {-뢮 㦭 }

procedure FillShape (X,Y: Integer; FillColor,BorderColor,
                     Mode: Byte);
  {- ࠭祭  }

procedure GetImage (X1,Y1,X2,Y2: Integer; Buf: SegBufPtr);
  {-࠭ ⨭   }

procedure PutImage (X1,Y1,X2,Y2: Integer; Buf: SegBufPtr);
  {-뢮 ⨭   }

function ImageSize (X1,Y1,X2,Y2: Integer): Integer;
  {-।    ⨭ }

procedure OutText (X,Y: Integer; Bckg,Colr: Byte;
                   St: ScreenLine);
  {-뢮 ப     }


    楤 GWindow  ⠭  뢮  ᪨
न⠬ 㣫 X1,Y1,X2,Y2 ( ᥫ). 㭪樨 GWindMinX,
GWindMinY, GWindMaxX, GWindMaxY  न 㣫 -
饣   ᥫ ( ᪮, ⠪  ᨬ쭮).

    楤 PutPix 뢮   梥 Color   -
न X,Y .  㭪 GetPix 㦨  । 梥
㪠 窨.

    楤 Draw 뢮  㪠 梥    묨
न⠬  殢.

    楤 Rectangle    אַ㣮  ࠬ,   Bar -
襭 אַ㣮쭨 㪠 梥    न-
⠬ 㣫.

    楤 Circle 뢮 㦭  梥 Color 
न⠬ 業 X,Y  ࠤᮬ R.

    楤 FillShape 믮  () ࠭祭-
 ,  稭   窨 X,Y 梥⮬ FillColor  ࠭,
।塞 梥⮬ BorderColor. ࠬ Mode  ० -
: 0 - /, 1 - ࠢ/.

    楤 GetImage     ࠭  ࠣ  ࠭
(ࠩ)  㪠묨 न⠬  㣫   Buf  (⨯
SegBufPtr 뢠  㫥 Screen).  । 맮 ६-
 BUF   ந樠஢   ஢  ᥣ-
⮢ (   ࠭ ᪮⥩   梥⮢ -
)  砫 ᮬ   ᥣ.

    楤 PutImage ⠭ ࠧ ࠭  ᮤন-
  Buf.

     ।  ,  室  ࠭ /
⠭ ࠩ (  ࠭ ᪮),  ᯮ-
 㭪 ImageSize.

    楤 OutText 뢮 ப St   ࠭, -
塞 ᪨ न⠬ X,Y; ࠬ Bckg,Colr -
 梥  뢮 ப.   楤   
஢  뢮 ⥪  ⨪.



                       4.6.  ENTRY
                       -----------------

     ENTRY 砥  ᥡ  ணࠬ, ᯥ稢-
騩 ଠ஢  ᫥   :  -
,  ⢨⥫쭮 ᫮, 楫 ᫮.   ᫠ -
  祭   ਭ    .
ᯮ  SCREEN.


const
  PictureChar: Char = '*';    {  蠡   }
  ClearFirstChar: Boolean = true; { ਧ ⪨ ப
                                      ࢮ ᨬ }
  Inserting: Boolean = true;  { ਧ ० ⠢ }


procedure ReadStringXY (X,Y,Bckg,Colr: Byte;Prompt: ScreenLine;
                        MaxLen: Byte; var S: MaxStr;
                        var Break: Boolean);
  {- ப                          }
  {    室e:                                     }
  { X,Y       - न ᮮ饭 Prompt         }
  { Bckg,Colr - 梥 䮭  ࠦ  Prompt }
  { MaxLen    - Max   ப           }
  { S         -  ப                     }
  {    室:                                    }
  { S         -  ப                    }
  { Break     - ਧ ⪠ (Esc)                }

procedure ReadRealXY (X,Y,Bckg,Colr: Byte; Prompt: ScreenLine;
                      MaxLen,DecimalPlaces: Byte;
                      Rmin,Rmax: Real; var R: Real;
                      var Break: Boolean);
  {- ⢨⥫쭮 ᫠                      }
  {    室e:                                     }
  { X,Y       - न ᮮ饭 Prompt         }
  { Bckg,Colr - 梥 䮭  ࠦ  Prompt }
  { MaxLen    - Max ᫮ ᨬ   ᫠ }
  { DecimalPlaces - ᫮  ᫥ ⮩      }
  { Rmin,Rmax - ࠧ襭 ।  ᫠ }
  { R         -  ᫮                      }
  {    室:                                    }
  { R         -  ᫮                     }
  { Break     - ਧ ⪠ (Esc)                }

procedure ReadIntegerXY (X,Y,Bckg,Colr: Byte;
                         Prompt: ScreenLine;
                         MaxLen: Byte; Imin,Imax: Integer;
                         var I: Integer; var Break: Boolean);
  {- 楫 ᫠                               }
  {    室e:                                     }
  { X,Y       - न ᮮ饭 Prompt         }
  { Bckg,Colr - 梥 䮭  ࠦ  Prompt }
  { MaxLen    - Max   ᫠           }
  { Imin,Imax - ࠧ襭 ।  ᫠ }
  { I         -  ᫮                      }
  {    室:                                    }
  { I         -  ᫮                     }
  { Break     - ਧ ⪠ (Esc)                }

procedure ReadString (Prompt: ScreenLine; MaxLen: Byte;
                      var S: MaxStr; var Break: Boolean);
  {- ப  ⥪饩 樨  }

procedure ReadReal (Prompt: ScreenLine; MaxLen,
                    DecimalPlaces: Byte; Rmin,Rmax: Real;
                    var R: Real; var Break: Boolean);
  {- ⢨⥫쭮 ᫠  ⥪饩 樨  }

procedure ReadInteger (Prompt: ScreenLine ; MaxLen: Byte;
                       Imin,Imax: Integer; var I: Integer;
                       var Break: Boolean);
  {- 楫 ᫠  ⥪饩 樨  }


    楤 ReadStringXY 믮      ப
S,   ⮬      ப ࠭稢 ࠬ஬
MaxLen. ࠬ X,Y   न  뢮  ᮮ饭
Prompt,   ࠬ Bckg,Colr -  梥.  室 ६
Break ᮤন ਧ ⪠   ⥬  CTRL-C 
ESC.

    । 맮  楤  ReadStringXY ப S  
᢮ 砫쭮 祭 (ਬ,   ப ''), ⠪
  뢮  ࠭  쭥襣 ।஢.  -
६ ClearFirstChar ࠢ ०  ⪨  ப  
ࢮ ⨨  ᨬ쭮   砫 .  ᫨ Clear-
FirstChar=True,   ⨨ ࢮ ᨬ쭮   ⥪-
饥  祭  ப 頥.  ᫨ ࢠ   -
ࠢ,  ⥪饥 祭 ப ࠭.    砥
ClearFirstChar=False 㫥 ப  ந室.

    ६ PictureChar  । ᨬ 蠡,  
   ( ஡).

    ६ Inserting । ० ⠢.

    楤 ReadStringXY      ᯮ 
 ⠫ 楤 .   ।஢  
祭   ᯮ짮 ᫥騥 :

    ^H     - ,
    ^D     - ࠢ,
    ^E,^L  -  砫 ப,
    ^X,^J  -   ப,
    ^A     -  ᫮ ,
    ^F     -  ᫮ ࠢ,
    ^V     - ४ ० ⠢,
    ^Y     - 㤠 ப,
    Del    - 㤠 ᨬ ᫥.

      蠥 , ESC (2) - ⬥.

        㪠   室  
祭 ᮮ⢥ ⠭  㫥 SCREEN.

    楤 ReadRealXY ।祭   ⢨⥫쭮-
 ᫠ R  ଠ,  ।塞 祭ﬨ  MaxLen  (-
쭠   ᫠)   DecimalPlaces (᫮ 祪 ᫥ -
⮩). ࠬ Rmin,  Rmax । ⨬   
 ᫠.  ६  R ।    
᢮ 砫쭮 祭.

    楤 ReadIntegerXY  楫 ᫮  I    
Imin,Imax.

    楤 ReadString, ReadReal  ReadInteger 믮 -
 㭪樨,     ⥪饩 樨   ⥪騬 梥-
⮬.


                       4.7.  MENU
                       ----------------

     MENU ᮤন  ।  প  ⨯
: 筮    筮.  筮    । 롮
짮⥫   ०,  ᯨ᮪  뢥  -
࠭   ⮫  ப. ६饭 㪠⥫  
०  㣮 ⢫  ⮬  浪,      뫨
㪠 ०    樠樨 .   筮  ०
ᯮ  ப  ⮫栬   ,   । -
ண  짮⥫    ६    ࠢ.
ᯮ  SCREEN.

       蠥  롮  ०,    ESC (2) -
४頥 (⪠).  ६饭 㪠⥫ ᯮ -
 ^H, ^D, ^E, ^X, ^L, ^J.         㪠
  室   祭  ᮮ⢥ ⠭
 㫥 SCREEN.

       ࠧࠡ⪨ ᯥ樠஢ -
ணࠬ  롮  ,   ᪮쪨 㭪⮢  ᯮ짮-
 ⠪ 뢠 䫠 짮⥫,  ᢠ -
࠭ ०.    ஡  㦤.

          ॡ   易⥫쭮   ᯮ짮
㫥  SEGMEM    WINDOW,      ᮧ   ଠ
ணࠬ   ਬ     㪠     㫥     室.
ᯮ짮 楤  প  ⥪    
 ॠ뢠  ⨯ "Pop-Up"  "Pull-Down".

    ஢ ⥬  ந  筮    ᫥饬
饬 ਭ樯:   孥 ப ᯮ 祢 ᫮,
ᮮ⢥騥 ᭮ ०  ࠡ.    ६饭
   ⠭ 㪠⥫  㦭 ,  ᫥
祣 롮 ⢥ত 襩 .  롮 㭪   
 ਢ       ࠭ 饣  ண
஢.  ⫨稥     뢮  । -
ண אַ㣮쭮  ,    㭪 ᯮ -
쭮.  ᢮ ।,  㭪 ⮣   뢠 
 ᫥饣 ஢,  ..  ᫥騥  筮 ⮦
  ஬ אַ㣮쭮 , 祬  ।-
 ,    ४⨥.    뢠
"Pop-Up" ("ᯫ뢠騥"),  , 騥  롮 㭪-
  ਧ⠫쭮 ப, - "Pull-Down" ("믠騥").

      ⢮ ⮢    ࠧ ࠭  -
᧢,  ᠭ  ᯮ ᪨ ६-
.   ᮧ     뤥  ᪮
, ஥ ⥬        ⥫
। 㭪⮢ (०).      뢥 
࠭ ( )  맮 楤 롮 ०. ᫥ ᯮ-
     㤠  ᢮ ᪮
.

    ᫥ 믮 権,  易  뤥  -
᪮ , 室 ஢ 祭 ६ MenuEr-
ror (⠪ ,    ६ WindowError  㫥 Window).
ᬮਬ 䥩  MENU:


const
  MenuError: Byte = 0;  { 訡 権   }
     { 0 - ଠ                            }
     { 1 - ९ ᪮    }
     { 2 - ९ 筮        }
     { 3 - ᮮ⢥ᢨ ⨯   ० }

  PullDown: Boolean = False; {  "PullDown"- }

type
  MenuPtr = ^MenuRec;   { ⥫         }
  ModePtr = ^ModeRec;   { ⥫  ०  }
  ModeStr = string[20]; {  㭪     }

  ModeRec = record      { ᠭ ०  }
              x,y,      { न ᮮ饭 }
              Bckg,     { ⮢ ਡ    }
              Colr,
              Flag: Byte;  {  짮⥫ }
              Prompt: ModeStr;  {      }
              Next: ModePtr; { 騩 ० }
            end;

  MenuRec = record     { ᠭ  }
              N,       { ᫮ ० }
              Mode: Byte;     { 騩 ० }
              List: ModePtr;  { ᮪ ० }
              Case Block: Boolean of      { ਧ . }
                   True:  (BlockX,BlockY, { .㣫    }
                           ColNum,RowNum, { ᫮ ⮫. .}
                           ColWidth,      { ਭ     }
                           dX: Byte);     { . .}
                   False: ();
            end;


procedure NewMenu (var Menu: MenuPtr);
  {-   }

procedure AddMode (x,y: Byte; Prompt: ModeStr;
                   var Menu: MenuPtr);
  {- ०   }

procedure NewBlockMenu (BlockX,BlockY,ColNum,RowNum,
                        ColWidth,dX: Byte;
                        var Menu: MenuPtr);
  {-  筮  }

procedure AddBlockMode (Prompt: ModeStr;
                        var Menu: MenuPtr);
  {- ०  筮  }

procedure DelMenu (var Menu: MenuPtr);
  {-    }

function FindMode (N: Byte; Menu: MenuPtr): ModePtr;
  {- ० N   Menu }

procedure SetModeFlag (Flag,N: Byte; Menu: MenuPtr);
  {-⠭ 䫠 짮⥫  ० N   Menu }

function GetModeFlag (N: Byte; Menu: MenuPtr): Byte;
  {-祭 䫠 짮⥫  ० N   Menu }

procedure OutMode (N,Bckg,Colr: Byte; Menu: MenuPtr);
  {-뢮 N- ०   梥⮬ }

procedure MarkMode (N: Byte; Menu: MenuPtr);
  {-ᢥ⪠ N- ०  }

procedure OutMenu (Menu: MenuPtr);
  {-뢮   ࠭ }

procedure GetMode (var N: Integer; Menu: MenuPtr; Key: Char);
  {-⭠ 楤 . ० N   Key }

procedure SelectMode (var N: Integer; Menu: MenuPtr;
                      var Break: Boolean);
  {-楤 롮 ०   }
  { ਧ "PullDown" ࠧ蠥 室  蠬 <-  ->  }


    楤 NewMenu ᮧ (ࠧ頥  ᪮ )
 ,   ஥ ᫥ 맮 楤 㤥  㪠뢠
६-ࠬ ⨯ MenuPtr. ਬ:

    var
      Menu1: MenuPtr;
    ...
    NewMenu(Menu1);
    if MenuError<>0 then ...

    ᫥ ⮣,    ࠧ饭  ᪮ ,
    楤  AddMode      ᮥ
() ०, ਬ:

    NewMenu(Menu1);
    AddMode(3,2,'⠫ ',Menu1);
    AddMode(3,3,'㧪',Menu1);
    AddMode(3,4,'  ',Menu1);
    if MenuError<>0 then ...

     ᮧ  筮    ᯮ  ᮮ⢥騥
楤 NewBlockMenu    AddBlockMode.  ਬ  ᯮ짮
筮     㫥 FILES.

    楤 DelMenu ᢮  ,  
뫠 ⢥   㪠 .  ਬ  楤
室 ᫥ ⮣,     ᯮ.

    㭪 FindMode  ᯮ⥫쭮   -
 㪠⥫  㭪   ᪮    .

    㭪樨 SetModeFlag    GetModeFlag   ᯮ짮
 ⠭  祭 䫠 짮⥫  㭪   
㪠 ஬.

    楤 OutMode    MarkMode ᯥ稢 ⮡ࠦ -
 㭪 ,  楤 OutMenu 뢮  .

     롮      㭪⮢   ( 筮,  ⠪ 
筮) 㦨 楤 SelectMode.   맮  
 뢥  ࠭   楤 OutMode. ஬ ⮣,
६,  ࠭  ०,   砫쭮 (-
饥)  祭,  ஥  㤥 । ᢥ祭 ०
 室  楤 SelectMode.  ᫨ 짮⥫  -
  ESC,    믮 SelectMode ४頥  ⠭
䫠 Break.   ⨨  ࠢ ஬  㪠⥫
६頥,    ⨨   ந室 室  Se-
lectMode  ஬ ࠭ ०.

    ᫨ । 맮 SelectMode ⠭ 䫠 PullDown,  
 ⨨    ࠢ  ஬  ""  "ࠢ"
⠪ ந室 室  ,    ⮬   
  ⮩     ,  ᯥ稢-
 ⮬᪨  室    ᥤ          ⨯
"Pull-Down". ਧ  PullDown  室  SelectMode -
 ⮬᪨.

     ࠧࠡ⪥ ᯥ樠஢  楤  롮  ०
 SelectMode    ࠡ⪮  ⥫ ࠢ
  ᯮ짮 ⭠ 楤 GetMode,  
  ⥪騩  ०   ᮮ⢥⢨  -
  .  ਬ  ⠪  ᯮ짮  GetMode  
筮     㫥 FILES.

