E:310996                                     (C) 1996 ORIONSOFT
---------------------------------------------------------------

               TURBO PASCAL
                         "ORION-PRO"

                 COPYRIGHT (C) 1996 ORIONSOFT

---------------------------------------------------------------


              1.    
              ==================================

    । ⥪ 㫥 V1.01 ᮤন   -
ணࠬ  몥 TURBO PASCAL  ࠢ 묨 -
ᠬ   ० "Orion-Pro",   ⠪   ࢨ
ணࠬ,  ᮧ ⢥ ணࠬ -
⮢.

     ਬ ⥪ ॡ  ᭮ 몠 TUR-
BO PASCAL    ⥩ ࠩ ᯫ "TV-PRO",   ⮬
ணࠬ ᢮    ⮭⥩,  易
 "TV-PRO"  㣨 ࠩࠬ ROM-BIOS.

    ⥪ ᯮ    ஬  TURBO PASCAL V3.0
 BORLAND Inc.  ࠢ 樮 ⥬ PRODOS.
  ᪮७  ᮢ  ।஢  樨 ணࠬ
४ ᯮ짮  D: (1 ).

     ࠧࠡ⪥ 室  ⠢  㫥   ண-
ࠬ ⠢ 楫  ࠭稢  "Orion-Pro";  
㣮 ஭,  뫠 ᤥ ⪠ 㭪樮쭮  ਡ
⥪   ⠬  IBM.

       ⠥  ࠧࠡ ᫮ ⠭⮬,  
 ࠢ ࠡ 㫨 ⠪, ਬ, ⮡  -
   ᮢ⨬   IBM  ஬ ࠭祭 -
⥩ "Orion-Pro",   ,    ⥪  
楫 ᨬ쭮 ᯮ짮 ᮢ .   -
 砥    ਬ ⮣,    ࠩ
"TV-PRO"  㣨 ணࠬ BIOS.

    ⨬,  ᪮ ࠢ  ORIONSOFT  -
  ணࠬ,  ࠧࠡ⠭    ᯮ짮  㫥
। ⥪,       ࠧ蠥 த
 । - ⥪ 㫥.


                     2.  
                     ====================

    ⥪ ⮨   ᪮쪨  㫥,  ᠭ  
몥 TURBO  PASCAL,     ᮤন  㭪樮-
쭮 易 楤  㭪権:

    SCREEN.PAS - ᭮  ,  ᯥ稢騩 ࠢ-
                  ࠭;
    SEGMEM.PAS - ᯮ⥫  ᪮ ।-
                  ᥣ⭮ ⨢ ;
    WINDOW.PAS -  ࠢ  뢮 (ᯮ -
                 㫨 SCREEN.PAS  SEGMEM.PAS);
    FONT.PAS   -  ࠢ ⠬  ஬ (ᯮ-
                   SCREEN.PAS);
    GRAPH.PAS  -  뢮 䨪 (ᯮ SCREEN.PAS);
    ENTRY.PAS  -        (ᯮ
                 SCREEN.PAS);
    MENU.PAS   -   ନ஢    (ᯮ 㫨
                 SCREEN.PAS, SEGMEM.PAS, WINDOW.PAS);
    YES.PAS    - ணࠬ 롮 ⢥ "", ""  -
                  (ᯮ SCREEN.PAS,  SEGMEM.PAS,  WIN-
                 DOW.PAS, MENU.PAS);
    FILES.PAS  -  롮 䠩    ⠫  (ᯮ
                 SCREEN.PAS, SEGMEM.PAS, WINDOW.PAS, ENTRY.PAS,
                 MENU.PAS);

     ᬮ७    ORIONSOFT   ⠢   
祭 ⥫ 㫨.


               3.   
               ================================

    祭 ᯮ㥬 㫥    ⢫
  ४⨢ 

    {$I < > }

    ४⨢ {$I..}  ᯮ    砫  ணࠬ ᫥
᫮ "PROGRAM",  祬 ᭠砫 㪠뢠  㫨, 
ᯮ ᫥騬 ﬨ, ਬ:

    program Demo;
    {$I Screen }
    {$I SegMem }
    {$I Window }
    {$I Graph  }
    ...
    begin
    ...
    end.


                      4.  
                      ===================

      ᬮ७ ⠢ 㫥  ᠭ  -
䥩, ..  ⠭,  ⨯,  ६, 楤  㭪権,
㯭 ணࠬ.


                      4.1.  SCREEN
                      ------------------

     SCREEN ।祭  ࠢ ࠭:  ०-
, 梥⠬  .  ஬ ⮣,  ᮤন  ணࠬ
饭  ROM-BIOS   㣨 ணࠬ.

     㫥 SCREEN । ᫥騥 ,  楤 
㭪樨,  ᯮ   㣨      ணࠬ
짮⥫:


const                  {  ࠢ  }
  Left      = ^H;  Right     = ^D;  Up        = ^E; 
  Down      = ^X;  WordLeft  = ^A;  WordRight = ^F;
  PgUp      = ^R;  PgDn      = ^C;  Home      = ^L;  
  ToEnd     = ^J;  DelStr    = ^Y;  Ins       = ^V;
  Cr        = ^M;  Esc       = ^[;  Del       = #$7F;


type
  Registers = record   {  ॣ஢ Z80 }
                case Byte of
                     0: (AF,BC,DE,HL: Integer);
                     1: (F,A,C,B,E,D,L,H: Byte);
              end;

  MaxStr = string[255];
  ScreenLine = string[80];

  SegBufPtr = record  { ⥫   ࠭  }
                Seg:  array[1..4] of Byte; {  ᥣ⮢ }
                Addr: Integer;  { .   ᥣ }
              end;

var
  Regs: Registers; {  Z80 }

procedure Call (Addr: Integer; var Regs: Registers);
  {-맮 ணࠬ  設    Addr }

procedure ProTest;
  {-஢ઠ ० Pro }

function UpCase (C: Char): Char;
  {-८ࠧ ᨬ  孨 ॣ }
  {  ୠ⨢ ஢ }

function TrimSpaces (s: MaxStr): MaxStr;
  {-祭 楢 ஡  ப }

procedure Sound (Hz,mS: Integer);
  {-ନ஢ 㪠 }

procedure SetActMode (Mode: Byte);
  {-⠭ ० 㯭 ࠭ }

function GetActMode: Byte;
  {- ० 㯭 ࠭ }

procedure SetVisMode (Mode: Byte);
  {-⠭ ०  ࠭ }

function GetVisMode: Byte;
  {- ०  ࠭ }

procedure SetActPage (Page: Byte);
  {-⠭  㯭 ࠭ }

function GetActPage: Byte;
  {-  㯭 ࠭ }

procedure SetVisPage (Page: Byte);
  {-⠭   ࠭ }

function GetVisPage: Byte;
  {-   ࠭ }

procedure OffVideo;
  {-몫 ᨣ }

procedure OnVideo;
  {- ᨣ }

procedure SetBackGround (BackGround: Byte);
  {-⠭ 梥 䮭 }

function GetBackGround: Byte;
  {- 梥 䮭 }

procedure SetColor (Color: Byte);
  {-⠭ 梥 ।  }

function GetColor: Byte;
  {- 梥 ।  }

procedure SetVisPalette (Pal: Byte);
  {-⠭   ࠭ }

function GetVisPalette: Byte;
  {-   ࠭ }

procedure GotoXY (X,Y: Byte);
  {-⠭  }

function WhereX: Byte;
  {-न X  }

function WhereY: Byte;
  {-न Y  }

procedure WriteXY (X,Y,Bckg,Colr: Byte; St: MaxStr);
  {-뢮 ப      梥⮬ }


    楤   㭪樨  ࠪ᪨  㫥  
ணࠬ ROM-BIOS   ணࠬ      Call,
  ࠬ஢ ன  ६ ⨯ Registers.
 ६    ਠ⮬  㫨  -
   Z80,  祬    ,  ᮮ-
騬  ⤥ ॣࠬ,  ⠪  ॣ஢  ࠬ,
ਬ:

    Regs.A:=16;
    Regs.C:=Y;  Regs.DE:=X;
    Regs.B:=dY; Regs.HL:=dX;
    Call ($F80C,Regs);
    if Regs.F .....

     ⤠ ᥡ ,   ६ Regs ࠭ 
⥪騥 祭 ॣ஢ ,   祭, ⠭-
 । 맮 楤 Call,  ᫥  맮.

     砫 ୮  ᢮ ணࠬ ᥣ 뢠
楤 ProTest ( ࠬ஢),  ⮬᪨ ४-
頥 ணࠬ, ᫨  饭  OSDOS, ਬ:

    program Demo;
    {$I Screen}
    ...
    begin
      ProTest;
    ...
    end.

    㭪 TrimSpaces  ࢨ᭮  믮  -
㥬   祭    墮⮢  ஡
 ப.

    㭪 UpCase  ୠ⨢ ஢  -
 ⠭ 㭪 TURBO,  ⠪  ᫥   -
  ᪨ 㪢.

    楤 Sound  ନ 㪮 ᨣ  
()  ⥫쭮 ().

     ⠫ 楤  㭪樨   ᭮  
ᯮ짮    ࠢ   ࠭   0F80CH  ࠩ
"TV-PRO".

    ணࠬ SetActMode, GetActMode, SetVisMode, GetVisMode
ᯮ   ࠢ ० 㯭   -
࠭, SetActPage, GetActPage, SetVisPage, GetVisPage -  -
४祭  ஢ 㯭     ࠭,  OffVideo,
OnVideo -  ⪫祭  祭 ᨣ (ਬ, 
६ ४祭 ० ࠭).

    ணࠬ    SetbackGround,   GetBackGround,   SetColor,
GetColor ᯮ  ४祭 梥⮢ 䮭   ࠦ-
 㯭 ࠭, SetVisPalette, GetVisPalette -  -
 ⭮   ࠭.

    ᭮ ਭ樯 ᯮ짮    ணࠬ  (  
⮫쪮 )  砥  ᫥饬:   砫 ࠡ ணࠬ
⥪騥 祭 塞 ࠬ஢ ࠭,    -
⠭, ਬ:

    Program Demo;
    ...
    var
      am,vm,ap,vp,bg,col,pal: Byte;
    ...
    begin
      ProTest;
      am:=GetactMode; vm:=GetVisMode; {  ࠢ am=vm }
      ap:=GetActPage; vp:=GetVisPage; {  ࠢ ap=vp }
      bg:=GetBackGround; col:=GetColor; pal:=GetVisPalette;
      OffVideo;
      SetActMode (...);
      SetVisMode (...);
      SetActPage (...);
      SetVisPage (...);
      SetBackGround(...);
      SetColor(...);
      SetVisPalette(...);
      ClrScr;
      OnVideo;
      ...
      ...
      OffVideo;
      SetActMode (am);
      SetVisMode (vm);
      SetActPage (ap);
      SetVisPage (vp);
      SetBackGround(bg);
      SetColor(col);
      SetVisPalette(pal);
      ClrScr;
      OnVideo;
    end.

       ਬ   楤 ⠭ ࠧ-
஢ ⥪饣  뢮,    ᬮ७  -
ᠭ  WINDOW.  室  ᯮ짮 뢠
⥬,   ⠭ ० 㯭 ࠭   -
 ⥪饥  뢮 ⠭   ࠭.

    ணࠬ  ,  ⪠  ४祭 -
 ࠭          ⠭  ⥬
ணࠬ.   ⮬  砥 ணࠬ 짮⥫  ஢-
 ⥪騩 梥⮢ ० ࠭ ,  ᫨   ᮮ⢥
ॡ㥬, 뤠  ᮮ饭  室  樮 -
, ਬ: "ॡ ப 8-梥 ࠭!".

    쭮 ࠢ 㯭   ࠭  -
 ࠡ뢠 㯭 ࠭    ⥭  ०  (
 ᠭ   㬥樨  "TV-PRO").  ᬮ७
ᥢ ਠ⮢ ᯮ짮 楤 ࠢ  ०-
   ࠬ  ࠭  室  ࠬ  ᮡ,  
     䠭⠧ ணࠬ.

    楤 GotoXY   ⠭ 楤-
 TURBO    ⠢    .

    㭪樨 WhereX, WhereY  ⥪騥 न -
 X,Y.

    楤 WriteXY ।祭  뢮 ப  ᨬ
   ࠭  梥⮬.


                      4.2.  SEGMEM
                      ------------------

     SEGMEM    ᯥ樠஢   ।祭
 ࠢ । ᥣ⭮ ᪮ , 
⭮,  প 楤 ࠭/⠭ -
 ࠭  㫥 WINDOW.

        ᯮ짮 ⠪   ।-
 ᥣ⭮    ࠧ ,   
..   믮 ணࠬ.

    ᭮  ᯮ짮  ᥣ⭮    ⮨  
⮬,   ࠭  , ࠧ  ⢮ -
 ࠭ ,  뤥 ᪮쪮 ᥣ⮢  ,
  ।  ᢮   ᯮ짮-
 , .. ᪨.  ࣠樨 ⥬ -
 ᥣ⭮    ᯥ樠 ᯨ᮪ ᢮-
 ⥩,     ந樠஢   砫
ࠡ ணࠬ.

    ᬮਬ 䥩  SEGMEM:


const
  MaxFreeElem = 20;   { Max  ᯨ᪠ ᢮ ⥩ }
  MaxSegNum   = 31;   { Max  ᥣ  }

type
  SegList  = record  { ᮪ ஢ ᥣ⮢ .  }
               N: Byte;      { ᫮ ᥣ⮢ }
               Seg: array[0..MaxSegnum] of Byte;
             end;

  FreeElem = record  { ᠭ  ᯨ᪠ ᢮.⥩ }
               Seg:  Byte;     {  ᥣ  }
               Addr: Integer;  { 砫   ᥣ }
               Len:  Integer;  {  ᢮  }
               Flag: Byte;     { ਧ ।.=N ७ }
             end;

  FreeList = record  { ᠭ ᯨ᪠ ᢮ ⥩ }
               N: Byte;  {   ᯨ᪠ }
               List: array[1..MaxFreeElem] of FreeElem;
             end;

procedure InitSegMem (SList: SegList; var FList: FreeList;
                      var Error: Byte);
  {-樠 ᥣ⭮ ᪮  }
  {     室:                                 }
  { SList -  ᯮ㥬 ᥣ⮢     }
  {     室:                                }
  { FList - ᯨ᮪ ᢮ ⥩         }
  { Error -  訡:                          }
  {         1 - ९ ᯨ᪠ FList        }
  {         3 -   ᥣ  SList }

procedure GetSegMem (var FList: FreeList; Len: Integer;
                     Dim: Byte;  var SBuf: SegBufPtr;
                     var Error: Byte);
  {-뤥 ᥣ⭮ ᪮   }
  {     室:                                 }
  { Flist   - ᯨ᮪ ᢮ ⥩          }
  { Len     -  ࠧ頥  1..4000H  }
  { Dim     - ࠧ୮  1..4            }
  {     室:                                }
  { SBuf    - ࠬ 뤥        }
  { Error   - ਧ 訡:                    }
  {           1 - ९ ᯨ᪠ FList      }
  {           2 -    ࠧ饭 }

procedure FreeSegMem (SList: SegList; var FList: FreeList;
                      Len: Integer; Dim: Byte;
                      SBuf: SegBufPtr; var Error: Byte);
  {-᢮ ᥣ⭮ ᪮   }
  {     室:                                 }
  { SList   - ᯨ᮪ ஢ .ᥣ⮢       }
  { Flist   - ᯨ᮪ ᢮ ⥩          }
  { Len     -  㤠塞  1..4000H    }
  { Dim     - ࠧ୮  1..4            }
  { SBuf    - ࠬ ᢮     }
  {     室:                                }
  { Error   - ਧ 訡:                    }
  {           1 - ९ ᯨ᪠ FList      }


    楤 InitSegMem 樠 ᯨ᮪ ᢮ -
⥩  FList    ᭮      室 ᯨ᪠ ᥣ⮢
SList.

    楤 GetSegMem 뤥 (।)  ᥣ⭮
 㪠 ࠧ୮ Dim (1..4),  Len, 
  ࠧ୮ (1..4000H),   ⮬ ᯮ ᯨ᮪
᢮ ⥩ FList.   室 楤 頥 
 SBuf, 騩  ஢ 뤥 ᥣ⮢ ( -
 ७ Dim)  砫쭮   ᥣ.

     ࠧ୮  ⢮ ६ 뤥-
 ⥩  ࠧ ᥣ,   砫-
 .  ᫨  ⥬ । ᥣ⭮ ᪮
 ᯮ   ࠭/⠭  ᮤন
࠭,   ࠧ୮ 㤥 । ⢮ ࠭
᪮⥩.  ⠫    ࠧ饭  -
᪮    묨.

    楤 FreeSegMem  ᢮    ᥣ⭮
᪮  SBuf  ࠧ୮ Dim    Len,  
⮬ ᯮ ᯨ᮪ ᥣ⮢ SList  ᯨ᮪ ᢮ -
⥩ FList.

     ணࠬ ६   ᮧ ᪮쪮 -
ᥪ ⥬ ࠢ ᥣ⭮ ᪮ ,
 ⮬   ᠭ  樠஢ ᮮ⢥饥
᫮  ६ ⨯ SegList  FreeList  ࠧ묨 ࠬ
ᥣ⮢.  , ⠪ 室,  ࠢ,  -
, ⠪   ⥬ ࠢ ᥣ⭮  -
 ६ ।  ࠧ ࠧ୮⥩. -
 ᯮ짮  SEGMEM    㫥 WINDOW.

     ⨬,   楤 GetSegMem  믮  
窥   뤥  ᥣ  -      㣨
।⢠. 楤 GetSegMem  FreeSegMem 宦  楤-
 ᪠ GETMEM   FREEMEM,  ᯮ㥬    ।
"⠭⭮" ᪮ .

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