NBPrg40. MiniOS. OpenSource. NBPrg40(40,41 и 42). Описание(украинская, английская и другие справки) и помощь в использовании NBPrg40. Разработка OS L'IMMENSITAv1.

NBPrg40
*****************

*CFProc
*****************


(*)CFPROC.DAT


(*)CFPROC.PAS


(*)CFPROC.TS


(*)dirinfo

*CFProc_
*****************

(*)CFproc_.JPG.


(*)CFPROC1.DAT


(*)CFPROC1.PAS


(*)CFPROC1.TS


(*)dirinfo

(*)IF_CFproc_.JPG


(*)TRUE.DAT

*crt.md
*****************


(*)dirinfo


(*)P_ED.PAS


(*)PED_T.PAS


(*)PLUS.P


(*)PLUS.TMP

(*)tedit_source.zip

(**)tedit_source


(***)MY.T


(***)TEDIT.PAS

(*)p5make_source.zip

(**)p5make_source


(***)P5MAKE.PAS


(***)PLUS.P5

*Ext_source
*****************

**CONCALC
*****************


(**)CONCALC.PAS


(**)CONCALC.TS


(**)dirinfo

**CPFILE
*****************


(**)CPFILE.PAS


(**)CPFILE.TS


(**)dirinfo

**CRFILE
*****************


(**)CRFILE.PAS


(**)CRFILE.TS


(**)dirinfo

**EDFILE
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDFILE.PAS


(**)EDFILE.TS

**EDSFILE
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDSFILE.PAS


(**)EDSFILE.TS

**HISTOGR
*****************


(**)dirinfo


(**)HISTOGR.DAT


(**)HISTOGR.PAS


(**)HISTOGR.TS

**NBPRG40U
*****************

***inc
*****************

****CalcWS
*****************


(****)cadd.inc


(****)catan.inc


(****)ccos.inc


(****)cdiv.inc


(****)cexp.inc


(****)cln.inc


(****)cmov.inc


(****)cmul.inc


(****)cset.inc


(****)csin.inc


(****)csqrt.inc


(****)csub.inc


(****)dirinfo


(***)dirinfo


(**)CALC.PAS


(**)CALCWS.PAS


(**)dirinfo


(**)EDIT.PAS


(**)FILES.PAS


(**)FILEWS.PAS


(**)GR.P


(**)INST.PAS


(**)INTERF_W.PAS


(**)LIST.TCK


(**)N40T1.PAS


(**)N40T2.PAS


(**)N40T3.PAS


(**)N40T4.PAS


(**)NBPRG_I.PAS


(**)NBPRG40U.PAS


(**)NBPRG40U.TS


(**)PLUS.P


(**)SIMPLE.PAS


(**)TASK.TMP


(**)W_TEXT.PAS


(**)WORK_SYS.PAS

**TYFile
*****************


(**)dirinfo


(**)TYFILE.PAS


(**)TYFILE.TS


(*)dirinfo

*EXT31
*****************

**alg.ed
*****************


(**)ALGED.DAT


(**)ALGED.PAS


(**)alged.TS


(**)dirinfo


(**)EDBUF.TMP


(**)EDFP.PAS


(**)TST.PAS

**lst.ed
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDFP.PAS


(**)LIST.TCK


(**)LSTED.PAS


(**)lsted.TS


(**)TST.PAS

**mmlst.ed
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDFP.PAS


(**)MMLED.PAS


(**)mmled.TS


(**)MMLIST.TCK


(**)TST.PAS

**module.ed
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDFP.PAS


(**)MOED.PAS


(**)moed.TS


(**)SIMPLE.PAS


(**)TST.PAS

**ts.ed
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDFP.PAS


(**)TSED.PAS


(**)tsed.TS


(**)TST.PAS

**unit.ed
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDFP.PAS


(**)MY.PAS


(**)TST.PAS


(**)UNED.PAS


(**)uned.TS

**x16pic.ed
*****************


(**)dirinfo


(**)EDBUF.TMP


(**)EDFP.PAS


(**)GR.P


(**)SPED.PAS


(**)sped.ts


(**)TST.PAS


(*)dirinfo

*graph.md
*****************


(*)dirinfo


(*)OUT.P


(*)OUT.P5


(*)OUT11.P


(*)OUT12.P


(*)OUT13.P


(*)OUT14.P


(*)OUT15.P


(*)OUT21.P


(*)OUT22.P


(*)OUT23.P


(*)OUT24.P


(*)OUT25.P


(*)OUT31.P


(*)OUT32.P


(*)OUT33.P


(*)OUT34.P


(*)OUT35.P


(*)OUT41.P


(*)OUT42.P


(*)OUT43.P


(*)OUT44.P


(*)OUT45.P


(*)OUT51.P


(*)OUT52.P


(*)OUT53.P


(*)OUT54.P


(*)OUT55.P


(*)P_CREATE.DAT


(*)P_CREATE.PAS


(*)P_ED.PAS


(*)PED_T.PAS


(*)PLUS.P


(*)PLUS.TMP

(*)p5view_source.zip

(**)p5view_source


(***)GR.P


(***)P5VIEW.PAS


(***)PLUS.P


(***)PLUS.P5

*HELP
*****************

**prog
*****************

(**)asm.JPG

(**)bas.JPG

(**)bat.JPG

(**)cpp.JPG


(**)dirinfo

(**)for.JPG

(**)html.JPG

(**)php.JPG

(*)CFproc.JPG

(*)CFproc_.JPG


(*)dirinfo

(*)EXT31.JPG

(*)IF_CFproc_.JPG

(*)ListTck.JPG

(*)SmallPic.JPG

(*)TWriteLn.JPG

*inc
*****************

**CalcWS
*****************


(**)cadd.inc


(**)catan.inc


(**)ccos.inc


(**)cdiv.inc


(**)cexp.inc


(**)cln.inc


(**)cmov.inc


(**)cmul.inc


(**)cset.inc


(**)csin.inc


(**)csqrt.inc


(**)csub.inc


(**)dirinfo


(*)dirinfo

*info
*****************


(*)dirinfo


(*)NBPrg23.TXT


(*)NBPrg24.TXT


(*)NBPrg25.TXT


(*)NBPrg26.TXT


(*)NBPrg27.TXT


(*)NBPrg28.TXT


(*)NBPrg29.TXT


(*)NBPrg30.TXT


(*)NBPrg31.TXT


(*)NBPrg32.TXT


(*)NBPrg33.TXT


(*)NBPrg34.TXT


(*)NBPrg35.TXT


(*)NBPrg36.TXT


(*)NBPrg37.TXT


(*)NBPrg38.TXT


(*)NBPrg39.TXT


(*)NBPrg40.TXT

*prog
*****************

**asm
*****************


dirinfo

dirinfo.JPG


FRAG.ASM


pasm.PAS


pasm.ts


PRG.PAS

Thanks_for_Wiki.bmp

**bas
*****************


dirinfo

dirinfo.JPG


OUT.BAS


pbas.PAS


pbas.ts


PRG.PAS

**bat
*****************


dirinfo

dirinfo.JPG


OUT.BAT


pbat.PAS


pbat.ts


PRG.PAS

**cpp
*****************


dirinfo

dirinfo.JPG


OUT.cpp


OUT.H


PCPP.PAS


pcpp.ts


PRG.PAS

**for
*****************


dirinfo

dirinfo.JPG


OUT.FOR


pfor.PAS


pfor.ts


PRG.PAS

**html
*****************


dirinfo

dirinfo.JPG


OUT.HTM


PHTML.PAS


phtml.ts


PRG.PAS

**php
*****************


dirinfo

dirinfo.JPG


OUT.PHP


pphp.PAS


pphp.ts


PRG.PAS

**sql
*****************


dirinfo

EX1.JPG


help1.txt

*TWriteLn
*****************


(*)dirinfo


(*)IFCMDS.TMP


(*)MMLIST.TCK


(*)MTEST.PAS


(*)MTEST1.PAS


(*)MY.PAS


(*)MY.TS


(*)TWRITELN.PAS


(*)TWRITELN.TMP


(*)TWRLN1.PAS

AAAAAA.CLC

CALC.PAS

CALCWS.PAS

CFPROC.DAT

CFproc.JPG

CFPROC.PAS

CFPROC.TS

CFproc_.JPG

CFPROC1.DAT

CFPROC1.PAS

CFPROC1.TS

CONCALC.PAS

CONCALC.TS

CPFILE.PAS

CPFILE.TS

CRFILE.PAS

CRFILE.TS

dirinfo

EDBUF.TMP

EDFILE.PAS

EDFILE.TS

EDIT.PAS

EDSFILE.PAS

EDSFILE.TS

FILES.PAS

FILEWS.PAS

GR.P

HISTOGR.DAT

HISTOGR.PAS

HISTOGR.TS

IF_CFproc_.JPG

INST.PAS

INTERF_W.PAS

LIST.TCK

MMLIST.TCK

MTEST.PAS

MTEST1.PAS

MY.PAS

MY.TS

MY1.PAS

MY1.TS

MYTEST.TXT

N40T1.PAS

N40T2.PAS

N40T3.PAS

N40T4.PAS

NBPRG_I.PAS

NBPRG40.PAS

NBPRG40U.PAS

NBPRG40U.TS

PLUS.P

SIMPLE.PAS

TASK.TMP

TESTF.TXT

TESTF1.TXT

TREE.PAS

TREE.TS

TRUE.DAT

TWRITELN.PAS

TWRITELN.TMP

TYFILE.PAS

TYFILE.TS

W_TEXT.PAS

WORK_SYS.PAS


TLIMM.PAS
***********************

{2018}

{ISSLEDOVANIE MODELI ALGORITMA S USLOVIYAMI NO
BEZ VOZVRATOV I CYCLOV BINARNIM DEREVOM.
VISUALIZACIYA I PODSCHET VARIANTOV (SKOLKO
ZVEZD V KONCE)}

{Odna iz proverok(ispolzovanie) na binarnoe derevo
Prosto vivesti massiv iz zvezdochek
i yeto budet uze nechto
Derevo mogno zavesti v takoi massiv
Binarnoe derevo v massive v vide kvadrata
s kornem v 1,1 ne moget rasti za diagonal
Pri chtenii net neobhodimosti v polnom
perebore
Nige diagonali nichego ne budet
Istennoe znachenie massiva daet vivod
zvezdochki v sootvetstvuyushem pologenii
na ekran
Odnako takoi massiv(gde nichego net
nige diagonali) moget i ne bit binarnim derevom}

{INTERESNIM CHASNIM SLUCHAEM BUDET POLUCHENIE
KVADRATNOGO BULEVSKOGO MASSIVA NA VHODE V REZULTATE
MONTEKARLOVSKOGO MODELIROVANIYA NEKOGO ALGORITMA NA
ZADANNOM NABORE DANNIX. SLUCHAINO VIBRALI VX DANNIE
I PROSLEGIVAEM PO USLOVNIM VETVLENIYAM KUDA POPADAEM.
VETKI KUDA VOOBSHE NE POPADAEM BUDUT SOOTVETSTVOVAT
LINIYAM BEZ *. PODSHET VARIANTOV DLYA TAKOGO SLUCHAYA
BUDET INTERESEN DLYA AVTOMATICHESKOY OPTIMIZACII
ALGORITMA NA ZADANNOM NABORE DANNYX}

{Razvitie idei s obobsheniyem na cicli
***********>*<*********************
             *                    *
              *********************
               *
                ***********************>
                 *
                  ***********************>
Strelochek na izobrageniyah
so zvezdochkami seychas net}

Program TLIMM;
Uses
  Graph;
Const
  TLen              = 10;
  GrMode : Boolean  = false;
  FOut              = 'TLIMM_O.DAT';
  {Vvod dereva iz fayla}
  FInMode : Boolean = false;
  FIn               = 'TLIMM_I.DAT';
Var
  i,j,k:Byte;
  M:Array[1..TLen,1..TLen] Of Boolean;
  Gd,Gm:Integer;

Function Cond(Var i_,j_ : Byte) : Boolean;
Var
  Result : Boolean;
Begin
  Result := false;
  If i_ = 1 Then Result := true;
  If i_ = j_ Then Result := true;
  Cond := result;
End;

Function CLCTVar : Byte;
Var
  NVar:Byte;
Begin
  NVar:=0;
  For k:=1 To j Do
  Begin
    If M[TLen,k] Then Inc(NVar);
  End;
  CLCTVar:=NVar;
End;

Var
  T : Text;

{Procedura vvoda dereva iz fayla}
Procedure FInMode_run;
Var
  Ch : Char;
Begin
  {Predpolagaem pravilniy fayl}
  Assign(T,FIn);
  Reset(T);
  For i := 1 To TLen Do
  Begin
    For j := 1 To TLen Do
    Begin
      Read(T,Ch);
      If Ch=' ' Then M[j,i]:=false;
      If Ch='*' Then M[j,i]:=true;
    End;
    ReadLn(T);
  End;
  Close(T);
End;

{Perekinuto poka vsyu grafiku
v odnu proceduru}
Procedure GrMode_run;
Begin
  Gd:=Detect;
  If FInMode Then
  Begin
    {Esli vkluchen regim vvoda
    dereva iz fayla}
    FInMode_run;
  End Else
  Begin
    For i:=1 To TLen Do
    Begin
      For j:=1 To TLen Do
      Begin
        M[i,j]:=false;
        If (j=1) And (i > 5) Then M[i,j]:=true;
        If i=j Then M[i,j]:=true;
      End;
    End;
  End;
  InitGraph(Gd,Gm,'');
  SetColor(4);
  j:=1;
  For i:=1 To TLen Do
  Begin
    For k:=1 To j Do
    Begin
      If M[i,k] Then
      Begin
        OutTextXY(100+i*10,100+k*10,'*');
        If ((k=j) And (k < TLen)) Then
        Begin
          Inc(j);
        End;
      End;
    End;
    If i=TLen Then WriteLn(CLCTVar);
  End;
  ReadLn;
  CloseGraph;
End;

{Pechat v fayl}
Procedure PrintM_FOut;
Begin
  Assign(T,FOut);
  ReWrite(T);
  For i := 1 To TLen Do
  Begin
    For j := 1 To TLen Do
    Begin
      If M[j,i] Then Write(T,'*')
                Else Write(T,' ');
    End;
    WriteLn(T);
  End;
  Close(T);
End;

Begin
  If GrMode Then
  Begin
    GrMode_run;
  End Else
  Begin
    {Perekinuto TLIMM2 poka syuda}
    {Telo. To chto megdu begin i
    poslednim end.}
    {Funkziyu i proceduru razmesheno vishe}
    {2018}
    {Visualisiruem kvadratniy massiv
    gde nugno budet issledovat binarnoe derevo
    Pechatayem v fayl}
    If FInMode Then
    Begin
      {Esli vkluchen regim vvoda
      dereva iz fayla}
      WriteLn('FInMode_run');
      FInMode_run;
    End Else
    Begin
      For i := 1 To TLen Do
        For j := 1 To TLen Do
          If Cond(i,j) Then M[j,i]:=true
                       Else M[j,i]:=false;
    End;
    WriteLn;
    For i:= 1 To TLen Do
    Begin
      WriteLn;
      For j := 1 To TLen Do
      Begin
        If M[j,i] Then Write('*')
                  Else Write(' ');
      End;
    End;
    WriteLn;
    WriteLn(CLCTVar);
    ReadLn;
    PrintM_FOut;
    WriteLn;
  End;
End.

TLIMM_O.DAT
***********************

TLIMM_I.DAT
***********************

LIMM3.PAS
***********************

Program LImm3;
{***********************************}
{ Nikita Beloshenko(GNU) 2016.      }
{ Based on NBPrg40(41,42).          }
{ LImm3.pas(for OS L'IMMENSITAv1).  }
{***********************************}
Uses MTest,
{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }
     MY,
{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }
     MTest1,
     Crt;

Const
 ScrLImm3MAX = 40;
 ScrLImm3PFile = 'scr.lim';
 ScrLImm3BackgroundCh : Char = '*';

Var
    BCrtScrLImm3:Boolean;
    task:String;
    tasks:Array[1..100] Of String;
    N_TASK_VAR,i:Byte;   
 

{ ADD_NEW_TASK }
Procedure add_new_task_run;
Var T,T1:text; TempS:String;
    T2:text; TFILENAME : String;

    MODULE_UNIT : String;
    MODULE_NAME : String;
    MODULE_PROCEDURE : String;

    T3,T3_:text;

Begin
  { SELF REWRITING }
  assign(T,'TWRITELN.PAS');
  assign(T1,'TWRITELN.TMP');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
  End;
  close(T);
  close(T1);

  { ADD->TASK (FROM FILE) }
  WRITELN(' ----- TASK FILE NAME? ----- ');
  WRITELN(' Sample:My.ts');
  READLN(TFILENAME);
  assign(T2,TFILENAME); reset(T2);
  {MY.TS - test}

  MODULE_UNIT := '';
  MODULE_NAME := '';
  MODULE_PROCEDURE := '';

  If Not eof(T2) Then readln(T2,MODULE_UNIT);
  If Not eof(T2) Then readln(T2,MODULE_NAME);
  If Not eof(T2) Then readln(T2,MODULE_PROCEDURE);

  If MODULE_NAME <> '' Then
  Begin
    { ADD MODULE NAME TO TASK LIST }
    assign(T3,'MMLIST.TCK');
    assign(T3_,'MMLIST.BAK');
    reset(T3);
    rewrite(T3_);
    While Not eof(T3) Do
    Begin
      readln(T3,TempS);
      writeln(T3_,TempS);
    End;
    close(T3);
    close(T3_);

    assign(T3,'MMLIST.BAK');
    assign(T3_,'MMLIST.TCK');
    reset(T3);
    rewrite(T3_);
    writeln(T3_,MODULE_NAME);
    While Not eof(T3) Do
    Begin
      readln(T3,TempS);
      writeln(T3_,TempS);
    End;
    close(T3);
    close(T3_);
  End;

  assign(T,'TWRITELN.TMP');
  assign(T1,'TWRITELN.PAS');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
    If(TempS='{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }') Then
    Begin
      If MODULE_UNIT<>'' Then
      Begin
        writeln(T1,'     ',MODULE_UNIT,',');
      End;
    End;
    If(TempS='{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }') Then
    Begin
      If (MODULE_NAME<>'') And (MODULE_PROCEDURE<>'') Then
      Begin
        writeln(T1,'  If (task=''',MODULE_NAME,''') Then ',MODULE_PROCEDURE,';');
      End;
    End;
  End;
  close(T);
  close(T1);

  close(T2);
End;

{ DELETE TASK }
Procedure delete_task_run;
Var
  T,T1:text; TempS:String;
  T2:text; TFILENAME : String;

  MODULE_UNIT : String;
  MODULE_NAME : String;
  MODULE_PROCEDURE : String;

  TempIFCmdS : String;
  T_IFCMDStmp : text;

Begin

  { SELF REWRITING }
  assign(T,'TWRITELN.PAS');
  assign(T1,'TWRITELN.TMP');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
  End;
  close(T);
  close(T1);

  { DELETE TASK . GET DATA ABOUT TASK . }
  WRITELN(' ----- TASK FILE NAME? ----- ');
  WRITELN(' Sample:My.ts');
  READLN(TFILENAME);
  assign(T2,TFILENAME); reset(T2);
  {MY.TS - test}

  MODULE_UNIT := '';
  MODULE_NAME := '';
  MODULE_PROCEDURE := '';

  If Not eof(T2) Then readln(T2,MODULE_UNIT);
  If Not eof(T2) Then readln(T2,MODULE_NAME);
  If Not eof(T2) Then readln(T2,MODULE_PROCEDURE);

  Close(T2);

  { DELETE TASK . SELF REWRITING . }
  assign(T,'TWRITELN.TMP');
  assign(T1,'TWRITELN.PAS');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    If(TempS='{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }') Then
    Begin
      While((TempS<>'{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }')And(Not eof(T))) Do
      Begin
        If MODULE_UNIT<>'' Then
        Begin
          If(TempS='     '+MODULE_UNIT+',')Then
          Begin
            TempS := TempS;
          End Else
          Begin
            writeln(T1,TempS);
          End;
        End Else
        Begin
          writeln(T1,TempS);
        End;
        readln(T,TempS);
      End;
      If(TempS='{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }')Then
      Begin
        writeln(T1,TempS);
      End;
    End Else
    Begin
      If(TempS='{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }') Then
      Begin
        While((TempS<>'{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }')And(Not eof(T))) Do
        Begin
          If (MODULE_NAME<>'') And (MODULE_PROCEDURE<>'') Then
          Begin
            Assign(T_IFCMDStmp,'IFCMDS.TMP');
            ReWrite(T_IFCMDStmp);
            WriteLn(T_IFCMDStmp,'  If (task=''',MODULE_NAME,''') Then ',MODULE_PROCEDURE,';');
            Close(T_IFCMDStmp);
            Assign(T_IFCMDStmp,'IFCMDS.TMP');
            Reset(T_IFCMDStmp);
            ReadLn(T_IFCMDStmp,TempIFCmdS);
            Close(T_IFCMDStmp);
            If(TempS=TempIFCmdS)Then
            Begin
              TempS := TempS;
            End Else
            Begin
              writeln(T1,TempS);
            End;
          End Else
          Begin
            writeln(T1,TempS);
          End;
          readln(T,TempS);
        End;
        If(TempS='{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }')Then
        Begin
          writeln(T1,TempS);
        End;
      End Else
      Begin
        writeln(T1,TempS);
      End;
    End;
  End;
  close(T);
  close(T1);

  { DELETE TASK . MMLIST.TCK }
  Assign(T,'MMLIST.TCK');
  Assign(T1,'MMLIST.TMP');
  Reset(T);
  ReWrite(T1);
  While Not eof(T) Do
  Begin
    ReadLn(T,TempS);
    WriteLn(T1,TempS);
  End;
  Close(T);
  Close(T1);

  Assign(T,'MMLIST.TCK');
  Assign(T1,'MMLIST.TMP');
  Reset(T1);
  ReWrite(T);
  While Not eof(T1) Do
  Begin
    ReadLn(T1,TempS);
    If(MODULE_NAME<>'') Then
    Begin
      If(TempS=MODULE_NAME)Then
      Begin
        TempS:=TempS;
      End Else
      Begin
        WriteLn(T,TempS);
      End;
    End Else
    Begin
      WriteLn(T,TempS);
    End;
  End;
  Close(T);
  Close(T1);

End;

{ PROCESSOR }
Procedure processor_run;
Begin

  { ADD NEW TASK }
  If(task='ADD NEW TASK') Then add_new_task_run;

  { DELETE TASK }
  If(task='DELETE TASK') Then delete_task_run;

  { PLACE TO WORK WITH COMMAND }
  { -------------------------- }

{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }
  If (task='MY') Then MY_run;
{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }


End;

Procedure HELP_UNIT_INTERNAL;
Begin
End;

Procedure CLS_UNIT_INTERNAL;
Var
  T   : Text;
  i,j : Byte;
Begin
  Assign(T,ScrLImm3PFile);
  ReWrite(T);
  For i := 1 To ScrLImm3MAX Do
  Begin
    For j := 1 To ScrLImm3MAX Do
    Begin
      WriteLn(T,i,' ',j);
      WriteLn(T,ScrLImm3BackgroundCh);
    End;
  End;
  Close(T);
End;

Procedure TWRITELN_UNIT_INTERNAL;
Label EXIT_label,START_label;
Var T4:text;
Begin

  { READ MMLIST.TCK }

  assign(T4,'MMLIST.TCK');
  reset(T4);
  N_TASK_VAR := 0;
  While Not eof(T4) Do Begin
    Inc(N_TASK_VAR);
    readln(T4,tasks[N_TASK_VAR]);
  End;
  close(T4);

START_label : { START }

  WriteLn(' ----- T E S T ----- {(text)(os)} ----- ');
  WriteLn(' Beloshenko Nikita 2013,2014,2016 (GNU) ');
  WriteLn(' -------------------------------------- ');
  WriteLn('');

  WriteLn('Type E+M+M to exit.');
  WriteLn('HELP = MAIN MODULE -> {(TASK)(LIST)}.');
  WriteLn('MAIN MODULE : ENTER?');
  ReadLn(task);

  { HELP }
  If(task='HELP') Then
  Begin
    WriteLn(' ----- HELP ----- ');
    For i := 1 To N_TASK_VAR Do
    Begin
      WriteLn(i,').',tasks[i]);

      { BLOCK = 5 tasks }
      { Pause. }
      If i Mod 5 = 0 Then
      Begin
        WriteLn(' ---- Press ENTER to see next ---- ');
        Write(' ----  group of   T A S K S.  ---- ');
        ReadLn;
      End;
    End;
  End;

  { PROCESSOR }
  processor_run;

  { E+M+M }
  If(task='E+M+M') Then
  Begin
    Goto EXIT_label;  { EXIT }
  End Else
  Begin
    Goto START_label; { RELOAD }
  End;

EXIT_label:

  { END }
End;

Function BScrLImm3GetCh(Var i,j : Byte) : Boolean;
Var
  T:Text;
  i1,j1:Byte;
  Ch:Char;
Begin
  BScrLImm3GetCh := False;
  Assign(T,ScrLImm3PFile);
  Reset(T);
  Repeat
    ReadLn(T,i1,j1);
    ReadLn(T,Ch);
    If (i=i1) And (j=j1) Then
       BScrLImm3GetCh:=True;
  Until Eof(T);
  Close(T);
End;

Function ChScrLImm3GetCh(Var i,j : Byte) : Char;
Var
  T:Text;
  i1,j1:Byte;
  Ch:Char;
Begin
  Assign(T,'scr.lim');
  Reset(T);
  Repeat
    ReadLn(T,i1,j1);
    ReadLn(T,Ch);
    If (i=i1) And (j=j1) Then
       ChScrLImm3GetCh:=Ch;
  Until Eof(T);
  Close(T);
End;

Procedure ScrLImm3;
Var
 i,j : Byte;
Begin
  ClrScr;
  For i:=1 To ScrLImm3MAX Do
  Begin
    For j:=1 To ScrLImm3MAX Do
    Begin
      If BCrtScrLImm3 = False Then
      Begin
        Write(ScrLImm3BackgroundCh);
      End Else
      Begin
        If BScrLImm3GetCh(i,j) Then
            Write(ChScrLImm3GetCh(i,j));
      End;
    End;
    WriteLn;
  End;
End;

Var
 LImm3Cmd : String;
Begin
  BCrtScrLImm3:=False;
  ScrLImm3;
  ReadLn;
  Repeat
    BCrtScrLImm3:=True;
    ScrLImm3;
    ReadLn(LImm3Cmd);
    If LImm3Cmd = 'HELP' Then HELP_UNIT_INTERNAL;
    If LImm3Cmd = 'CLS'  Then CLS_UNIT_INTERNAL;
    If LImm3Cmd = 'TWRITELN' Then TWRITELN_UNIT_INTERNAL;
  Until LImm3Cmd = 'LImm3 EXIT';
  BCrtScrLImm3:=False;
  ScrLImm3;
End.

SCR.LIM
***********************

1 1
*
1 2
*
1 3
*
1 4
*
1 5
*
1 6
*
1 7
*
1 8
*
1 9
*
1 10
*
1 11
*
1 12
*
1 13
*
1 14
*
1 15
*
1 16
*
1 17
*
1 18
*
1 19
*
1 20
*
1 21
*
1 22
*
1 23
*
1 24
*
1 25
*
1 26
*
1 27
*
1 28
*
1 29
*
1 30
*
1 31
*
1 32
*
1 33
*
1 34
*
1 35
*
1 36
*
1 37
*
1 38
*
1 39
*
1 40
*
2 1
*
2 2
*
2 3
*
2 4
*
2 5
*
2 6
*
2 7
*
2 8
*
2 9
*
2 10
*
2 11
*
2 12
*
2 13
*
2 14
*
2 15
*
2 16
*
2 17
*
2 18
*
2 19
*
2 20
*
2 21
*
2 22
*
2 23
*
2 24
*
2 25
*
2 26
*
2 27
*
2 28
*
2 29
*
2 30
*
2 31
*
2 32
*
2 33
*
2 34
*
2 35
*
2 36
*
2 37
*
2 38
*
2 39
*
2 40
*
3 1
*
3 2
*
3 3
*
3 4
*
3 5
*
3 6
*
3 7
*
3 8
*
3 9
*
3 10
*
3 11
*
3 12
*
3 13
*
3 14
*
3 15
*
3 16
*
3 17
*
3 18
*
3 19
*
3 20
*
3 21
*
3 22
*
3 23
*
3 24
*
3 25
*
3 26
*
3 27
*
3 28
*
3 29
*
3 30
*
3 31
*
3 32
*
3 33
*
3 34
*
3 35
*
3 36
*
3 37
*
3 38
*
3 39
*
3 40
*
4 1
*
4 2
*
4 3
*
4 4
*
4 5
*
4 6
*
4 7
*
4 8
*
4 9
*
4 10
*
4 11
*
4 12
*
4 13
*
4 14
*
4 15
*
4 16
*
4 17
*
4 18
*
4 19
*
4 20
*
4 21
*
4 22
*
4 23
*
4 24
*
4 25
*
4 26
*
4 27
*
4 28
*
4 29
*
4 30
*
4 31
*
4 32
*
4 33
*
4 34
*
4 35
*
4 36
*
4 37
*
4 38
*
4 39
*
4 40
*
5 1
*
5 2
*
5 3
*
5 4
*
5 5
*
5 6
*
5 7
*
5 8
*
5 9
*
5 10
*
5 11
*
5 12
*
5 13
*
5 14
*
5 15
*
5 16
*
5 17
*
5 18
*
5 19
*
5 20
*
5 21
*
5 22
*
5 23
*
5 24
*
5 25
*
5 26
*
5 27
*
5 28
*
5 29
*
5 30
*
5 31
*
5 32
*
5 33
*
5 34
*
5 35
*
5 36
*
5 37
*
5 38
*
5 39
*
5 40
*
6 1
*
6 2
*
6 3
*
6 4
*
6 5
*
6 6
*
6 7
*
6 8
*
6 9
*
6 10
*
6 11
*
6 12
*
6 13
*
6 14
*
6 15
*
6 16
*
6 17
*
6 18
*
6 19
*
6 20
*
6 21
*
6 22
*
6 23
*
6 24
*
6 25
*
6 26
*
6 27
*
6 28
*
6 29
*
6 30
*
6 31
*
6 32
*
6 33
*
6 34
*
6 35
*
6 36
*
6 37
*
6 38
*
6 39
*
6 40
*
7 1
*
7 2
*
7 3
*
7 4
*
7 5
*
7 6
*
7 7
*
7 8
*
7 9
*
7 10
*
7 11
*
7 12
*
7 13
*
7 14
*
7 15
*
7 16
*
7 17
*
7 18
*
7 19
*
7 20
*
7 21
*
7 22
*
7 23
*
7 24
*
7 25
*
7 26
*
7 27
*
7 28
*
7 29
*
7 30
*
7 31
*
7 32
*
7 33
*
7 34
*
7 35
*
7 36
*
7 37
*
7 38
*
7 39
*
7 40
*
8 1
*
8 2
*
8 3
*
8 4
*
8 5
*
8 6
*
8 7
*
8 8
*
8 9
*
8 10
*
8 11
*
8 12
*
8 13
*
8 14
*
8 15
*
8 16
*
8 17
*
8 18
*
8 19
*
8 20
*
8 21
*
8 22
*
8 23
*
8 24
*
8 25
*
8 26
*
8 27
*
8 28
*
8 29
*
8 30
*
8 31
*
8 32
*
8 33
*
8 34
*
8 35
*
8 36
*
8 37
*
8 38
*
8 39
*
8 40
*
9 1
*
9 2
*
9 3
*
9 4
*
9 5
*
9 6
*
9 7
*
9 8
*
9 9
*
9 10
*
9 11
*
9 12
*
9 13
*
9 14
*
9 15
*
9 16
*
9 17
*
9 18
*
9 19
*
9 20
*
9 21
*
9 22
*
9 23
*
9 24
*
9 25
*
9 26
*
9 27
*
9 28
*
9 29
*
9 30
*
9 31
*
9 32
*
9 33
*
9 34
*
9 35
*
9 36
*
9 37
*
9 38
*
9 39
*
9 40
*
10 1
*
10 2
*
10 3
*
10 4
*
10 5
*
10 6
*
10 7
*
10 8
*
10 9
*
10 10
*
10 11
*
10 12
*
10 13
*
10 14
*
10 15
*
10 16
*
10 17
*
10 18
*
10 19
*
10 20
*
10 21
*
10 22
*
10 23
*
10 24
*
10 25
*
10 26
*
10 27
*
10 28
*
10 29
*
10 30
*
10 31
*
10 32
*
10 33
*
10 34
*
10 35
*
10 36
*
10 37
*
10 38
*
10 39
*
10 40
*
11 1
*
11 2
*
11 3
*
11 4
*
11 5
*
11 6
*
11 7
*
11 8
*
11 9
*
11 10
*
11 11
*
11 12
*
11 13
*
11 14
*
11 15
*
11 16
*
11 17
*
11 18
*
11 19
*
11 20
*
11 21
*
11 22
*
11 23
*
11 24
*
11 25
*
11 26
*
11 27
*
11 28
*
11 29
*
11 30
*
11 31
*
11 32
*
11 33
*
11 34
*
11 35
*
11 36
*
11 37
*
11 38
*
11 39
*
11 40
*
12 1
*
12 2
*
12 3
*
12 4
*
12 5
*
12 6
*
12 7
*
12 8
*
12 9
*
12 10
*
12 11
*
12 12
*
12 13
*
12 14
*
12 15
*
12 16
*
12 17
*
12 18
*
12 19
*
12 20
*
12 21
*
12 22
*
12 23
*
12 24
*
12 25
*
12 26
*
12 27
*
12 28
*
12 29
*
12 30
*
12 31
*
12 32
*
12 33
*
12 34
*
12 35
*
12 36
*
12 37
*
12 38
*
12 39
*
12 40
*
13 1
*
13 2
*
13 3
*
13 4
*
13 5
*
13 6
*
13 7
*
13 8
*
13 9
*
13 10
*
13 11
*
13 12
*
13 13
*
13 14
*
13 15
*
13 16
*
13 17
*
13 18
*
13 19
*
13 20
*
13 21
*
13 22
*
13 23
*
13 24
*
13 25
*
13 26
*
13 27
*
13 28
*
13 29
*
13 30
*
13 31
*
13 32
*
13 33
*
13 34
*
13 35
*
13 36
*
13 37
*
13 38
*
13 39
*
13 40
*
14 1
*
14 2
*
14 3
*
14 4
*
14 5
*
14 6
*
14 7
*
14 8
*
14 9
*
14 10
*
14 11
*
14 12
*
14 13
*
14 14
*
14 15
*
14 16
*
14 17
*
14 18
*
14 19
*
14 20
*
14 21
*
14 22
*
14 23
*
14 24
*
14 25
*
14 26
*
14 27
*
14 28
*
14 29
*
14 30
*
14 31
*
14 32
*
14 33
*
14 34
*
14 35
*
14 36
*
14 37
*
14 38
*
14 39
*
14 40
*
15 1
*
15 2
*
15 3
*
15 4
*
15 5
*
15 6
*
15 7
*
15 8
*
15 9
*
15 10
*
15 11
*
15 12
*
15 13
*
15 14
*
15 15
*
15 16
*
15 17
*
15 18
*
15 19
*
15 20
*
15 21
*
15 22
*
15 23
*
15 24
*
15 25
*
15 26
*
15 27
*
15 28
*
15 29
*
15 30
*
15 31
*
15 32
*
15 33
*
15 34
*
15 35
*
15 36
*
15 37
*
15 38
*
15 39
*
15 40
*
16 1
*
16 2
*
16 3
*
16 4
*
16 5
*
16 6
*
16 7
*
16 8
*
16 9
*
16 10
*
16 11
*
16 12
*
16 13
*
16 14
*
16 15
*
16 16
*
16 17
*
16 18
*
16 19
*
16 20
*
16 21
*
16 22
*
16 23
*
16 24
*
16 25
*
16 26
*
16 27
*
16 28
*
16 29
*
16 30
*
16 31
*
16 32
*
16 33
*
16 34
*
16 35
*
16 36
*
16 37
*
16 38
*
16 39
*
16 40
*
17 1
*
17 2
*
17 3
*
17 4
*
17 5
*
17 6
*
17 7
*
17 8
*
17 9
*
17 10
*
17 11
*
17 12
*
17 13
*
17 14
*
17 15
*
17 16
*
17 17
*
17 18
*
17 19
*
17 20
*
17 21
*
17 22
*
17 23
*
17 24
*
17 25
*
17 26
*
17 27
*
17 28
*
17 29
*
17 30
*
17 31
*
17 32
*
17 33
*
17 34
*
17 35
*
17 36
*
17 37
*
17 38
*
17 39
*
17 40
*
18 1
*
18 2
*
18 3
*
18 4
*
18 5
*
18 6
*
18 7
*
18 8
*
18 9
*
18 10
*
18 11
*
18 12
*
18 13
*
18 14
*
18 15
*
18 16
*
18 17
*
18 18
*
18 19
*
18 20
*
18 21
*
18 22
*
18 23
*
18 24
*
18 25
*
18 26
*
18 27
*
18 28
*
18 29
*
18 30
*
18 31
*
18 32
*
18 33
*
18 34
*
18 35
*
18 36
*
18 37
*
18 38
*
18 39
*
18 40
*
19 1
*
19 2
*
19 3
*
19 4
*
19 5
*
19 6
*
19 7
*
19 8
*
19 9
*
19 10
*
19 11
*
19 12
*
19 13
*
19 14
*
19 15
*
19 16
*
19 17
*
19 18
*
19 19
*
19 20
*
19 21
*
19 22
*
19 23
*
19 24
*
19 25
*
19 26
*
19 27
*
19 28
*
19 29
*
19 30
*
19 31
*
19 32
*
19 33
*
19 34
*
19 35
*
19 36
*
19 37
*
19 38
*
19 39
*
19 40
*
20 1
*
20 2
*
20 3
*
20 4
*
20 5
*
20 6
*
20 7
*
20 8
*
20 9
*
20 10
*
20 11
*
20 12
*
20 13
*
20 14
*
20 15
*
20 16
*
20 17
*
20 18
*
20 19
*
20 20
*
20 21
*
20 22
*
20 23
*
20 24
*
20 25
*
20 26
*
20 27
*
20 28
*
20 29
*
20 30
*
20 31
*
20 32
*
20 33
*
20 34
*
20 35
*
20 36
*
20 37
*
20 38
*
20 39
*
20 40
*
21 1
*
21 2
*
21 3
*
21 4
*
21 5
*
21 6
*
21 7
*
21 8
*
21 9
*
21 10
*
21 11
*
21 12
*
21 13
*
21 14
*
21 15
*
21 16
*
21 17
*
21 18
*
21 19
*
21 20
*
21 21
*
21 22
*
21 23
*
21 24
*
21 25
*
21 26
*
21 27
*
21 28
*
21 29
*
21 30
*
21 31
*
21 32
*
21 33
*
21 34
*
21 35
*
21 36
*
21 37
*
21 38
*
21 39
*
21 40
*
22 1
*
22 2
*
22 3
*
22 4
*
22 5
*
22 6
*
22 7
*
22 8
*
22 9
*
22 10
*
22 11
*
22 12
*
22 13
*
22 14
*
22 15
*
22 16
*
22 17
*
22 18
*
22 19
*
22 20
*
22 21
*
22 22
*
22 23
*
22 24
*
22 25
*
22 26
*
22 27
*
22 28
*
22 29
*
22 30
*
22 31
*
22 32
*
22 33
*
22 34
*
22 35
*
22 36
*
22 37
*
22 38
*
22 39
*
22 40
*
23 1
*
23 2
*
23 3
*
23 4
*
23 5
*
23 6
*
23 7
*
23 8
*
23 9
*
23 10
*
23 11
*
23 12
*
23 13
*
23 14
*
23 15
*
23 16
*
23 17
*
23 18
*
23 19
*
23 20
*
23 21
*
23 22
*
23 23
*
23 24
*
23 25
*
23 26
*
23 27
*
23 28
*
23 29
*
23 30
*
23 31
*
23 32
*
23 33
*
23 34
*
23 35
*
23 36
*
23 37
*
23 38
*
23 39
*
23 40
*
24 1
*
24 2
*
24 3
*
24 4
*
24 5
*
24 6
*
24 7
*
24 8
*
24 9
*
24 10
*
24 11
*
24 12
*
24 13
*
24 14
*
24 15
*
24 16
*
24 17
*
24 18
*
24 19
*
24 20
*
24 21
*
24 22
*
24 23
*
24 24
*
24 25
*
24 26
*
24 27
*
24 28
*
24 29
*
24 30
*
24 31
*
24 32
*
24 33
*
24 34
*
24 35
*
24 36
*
24 37
*
24 38
*
24 39
*
24 40
*
25 1
*
25 2
*
25 3
*
25 4
*
25 5
*
25 6
*
25 7
*
25 8
*
25 9
*
25 10
*
25 11
*
25 12
*
25 13
*
25 14
*
25 15
*
25 16
*
25 17
*
25 18
*
25 19
*
25 20
*
25 21
*
25 22
*
25 23
*
25 24
*
25 25
*
25 26
*
25 27
*
25 28
*
25 29
*
25 30
*
25 31
*
25 32
*
25 33
*
25 34
*
25 35
*
25 36
*
25 37
*
25 38
*
25 39
*
25 40
*
26 1
*
26 2
*
26 3
*
26 4
*
26 5
*
26 6
*
26 7
*
26 8
*
26 9
*
26 10
*
26 11
*
26 12
*
26 13
*
26 14
*
26 15
*
26 16
*
26 17
*
26 18
*
26 19
*
26 20
*
26 21
*
26 22
*
26 23
*
26 24
*
26 25
*
26 26
*
26 27
*
26 28
*
26 29
*
26 30
*
26 31
*
26 32
*
26 33
*
26 34
*
26 35
*
26 36
*
26 37
*
26 38
*
26 39
*
26 40
*
27 1
*
27 2
*
27 3
*
27 4
*
27 5
*
27 6
*
27 7
*
27 8
*
27 9
*
27 10
*
27 11
*
27 12
*
27 13
*
27 14
*
27 15
*
27 16
*
27 17
*
27 18
*
27 19
*
27 20
*
27 21
*
27 22
*
27 23
*
27 24
*
27 25
*
27 26
*
27 27
*
27 28
*
27 29
*
27 30
*
27 31
*
27 32
*
27 33
*
27 34
*
27 35
*
27 36
*
27 37
*
27 38
*
27 39
*
27 40
*
28 1
*
28 2
*
28 3
*
28 4
*
28 5
*
28 6
*
28 7
*
28 8
*
28 9
*
28 10
*
28 11
*
28 12
*
28 13
*
28 14
*
28 15
*
28 16
*
28 17
*
28 18
*
28 19
*
28 20
*
28 21
*
28 22
*
28 23
*
28 24
*
28 25
*
28 26
*
28 27
*
28 28
*
28 29
*
28 30
*
28 31
*
28 32
*
28 33
*
28 34
*
28 35
*
28 36
*
28 37
*
28 38
*
28 39
*
28 40
*
29 1
*
29 2
*
29 3
*
29 4
*
29 5
*
29 6
*
29 7
*
29 8
*
29 9
*
29 10
*
29 11
*
29 12
*
29 13
*
29 14
*
29 15
*
29 16
*
29 17
*
29 18
*
29 19
*
29 20
*
29 21
*
29 22
*
29 23
*
29 24
*
29 25
*
29 26
*
29 27
*
29 28
*
29 29
*
29 30
*
29 31
*
29 32
*
29 33
*
29 34
*
29 35
*
29 36
*
29 37
*
29 38
*
29 39
*
29 40
*
30 1
*
30 2
*
30 3
*
30 4
*
30 5
*
30 6
*
30 7
*
30 8
*
30 9
*
30 10
*
30 11
*
30 12
*
30 13
*
30 14
*
30 15
*
30 16
*
30 17
*
30 18
*
30 19
*
30 20
*
30 21
*
30 22
*
30 23
*
30 24
*
30 25
*
30 26
*
30 27
*
30 28
*
30 29
*
30 30
*
30 31
*
30 32
*
30 33
*
30 34
*
30 35
*
30 36
*
30 37
*
30 38
*
30 39
*
30 40
*
31 1
*
31 2
*
31 3
*
31 4
*
31 5
*
31 6
*
31 7
*
31 8
*
31 9
*
31 10
*
31 11
*
31 12
*
31 13
*
31 14
*
31 15
*
31 16
*
31 17
*
31 18
*
31 19
*
31 20
*
31 21
*
31 22
*
31 23
*
31 24
*
31 25
*
31 26
*
31 27
*
31 28
*
31 29
*
31 30
*
31 31
*
31 32
*
31 33
*
31 34
*
31 35
*
31 36
*
31 37
*
31 38
*
31 39
*
31 40
*
32 1
*
32 2
*
32 3
*
32 4
*
32 5
*
32 6
*
32 7
*
32 8
*
32 9
*
32 10
*
32 11
*
32 12
*
32 13
*
32 14
*
32 15
*
32 16
*
32 17
*
32 18
*
32 19
*
32 20
*
32 21
*
32 22
*
32 23
*
32 24
*
32 25
*
32 26
*
32 27
*
32 28
*
32 29
*
32 30
*
32 31
*
32 32
*
32 33
*
32 34
*
32 35
*
32 36
*
32 37
*
32 38
*
32 39
*
32 40
*
33 1
*
33 2
*
33 3
*
33 4
*
33 5
*
33 6
*
33 7
*
33 8
*
33 9
*
33 10
*
33 11
*
33 12
*
33 13
*
33 14
*
33 15
*
33 16
*
33 17
*
33 18
*
33 19
*
33 20
*
33 21
*
33 22
*
33 23
*
33 24
*
33 25
*
33 26
*
33 27
*
33 28
*
33 29
*
33 30
*
33 31
*
33 32
*
33 33
*
33 34
*
33 35
*
33 36
*
33 37
*
33 38
*
33 39
*
33 40
*
34 1
*
34 2
*
34 3
*
34 4
*
34 5
*
34 6
*
34 7
*
34 8
*
34 9
*
34 10
*
34 11
*
34 12
*
34 13
*
34 14
*
34 15
*
34 16
*
34 17
*
34 18
*
34 19
*
34 20
*
34 21
*
34 22
*
34 23
*
34 24
*
34 25
*
34 26
*
34 27
*
34 28
*
34 29
*
34 30
*
34 31
*
34 32
*
34 33
*
34 34
*
34 35
*
34 36
*
34 37
*
34 38
*
34 39
*
34 40
*
35 1
*
35 2
*
35 3
*
35 4
*
35 5
*
35 6
*
35 7
*
35 8
*
35 9
*
35 10
*
35 11
*
35 12
*
35 13
*
35 14
*
35 15
*
35 16
*
35 17
*
35 18
*
35 19
*
35 20
*
35 21
*
35 22
*
35 23
*
35 24
*
35 25
*
35 26
*
35 27
*
35 28
*
35 29
*
35 30
*
35 31
*
35 32
*
35 33
*
35 34
*
35 35
*
35 36
*
35 37
*
35 38
*
35 39
*
35 40
*
36 1
*
36 2
*
36 3
*
36 4
*
36 5
*
36 6
*
36 7
*
36 8
*
36 9
*
36 10
*
36 11
*
36 12
*
36 13
*
36 14
*
36 15
*
36 16
*
36 17
*
36 18
*
36 19
*
36 20
*
36 21
*
36 22
*
36 23
*
36 24
*
36 25
*
36 26
*
36 27
*
36 28
*
36 29
*
36 30
*
36 31
*
36 32
*
36 33
*
36 34
*
36 35
*
36 36
*
36 37
*
36 38
*
36 39
*
36 40
*
37 1
*
37 2
*
37 3
*
37 4
*
37 5
*
37 6
*
37 7
*
37 8
*
37 9
*
37 10
*
37 11
*
37 12
*
37 13
*
37 14
*
37 15
*
37 16
*
37 17
*
37 18
*
37 19
*
37 20
*
37 21
*
37 22
*
37 23
*
37 24
*
37 25
*
37 26
*
37 27
*
37 28
*
37 29
*
37 30
*
37 31
*
37 32
*
37 33
*
37 34
*
37 35
*
37 36
*
37 37
*
37 38
*
37 39
*
37 40
*
38 1
*
38 2
*
38 3
*
38 4
*
38 5
*
38 6
*
38 7
*
38 8
*
38 9
*
38 10
*
38 11
*
38 12
*
38 13
*
38 14
*
38 15
*
38 16
*
38 17
*
38 18
*
38 19
*
38 20
*
38 21
*
38 22
*
38 23
*
38 24
*
38 25
*
38 26
*
38 27
*
38 28
*
38 29
*
38 30
*
38 31
*
38 32
*
38 33
*
38 34
*
38 35
*
38 36
*
38 37
*
38 38
*
38 39
*
38 40
*
39 1
*
39 2
*
39 3
*
39 4
*
39 5
*
39 6
*
39 7
*
39 8
*
39 9
*
39 10
*
39 11
*
39 12
*
39 13
*
39 14
*
39 15
*
39 16
*
39 17
*
39 18
*
39 19
*
39 20
*
39 21
*
39 22
*
39 23
*
39 24
*
39 25
*
39 26
*
39 27
*
39 28
*
39 29
*
39 30
*
39 31
*
39 32
*
39 33
*
39 34
*
39 35
*
39 36
*
39 37
*
39 38
*
39 39
*
39 40
*
40 1
*
40 2
*
40 3
*
40 4
*
40 5
*
40 6
*
40 7
*
40 8
*
40 9
*
40 10
*
40 11
*
40 12
*
40 13
*
40 14
*
40 15
*
40 16
*
40 17
*
40 18
*
40 19
*
40 20
*
40 21
*
40 22
*
40 23
*
40 24
*
40 25
*
40 26
*
40 27
*
40 28
*
40 29
*
40 30
*
40 31
*
40 32
*
40 33
*
40 34
*
40 35
*
40 36
*
40 37
*
40 38
*
40 39
*
40 40
*

TWRITELN.PAS
***********************

{ Beloshenko Nikita (GNU) 2016 }
{ Beloshenko Nikita (GNU) 2013,2014 }

(*

     TWRITELN.PAS

*)

Program Test_WriteLn;

Uses MTest,
{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }
     CFPROC1,
     CFPROC,
     NBPRG42U,
     HISTOGR,
     EDSFILE,
     CPFILE,
     EDFILE,
     TYFILE,
     CRFILE,
     CONCALC,
     TREE,
     MY1,
     MY,
{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }
     MTest1;


Label EXIT_label,START_label;
Var task:String;
    tasks:Array[1..100] Of String;
    N_TASK_VAR,i:Byte;

{ ADD_NEW_TASK }
Procedure add_new_task_run;
Var T,T1:text; TempS:String;
    T2:text; TFILENAME : String;

    MODULE_UNIT : String;
    MODULE_NAME : String;
    MODULE_PROCEDURE : String;

    T3,T3_:text;

Begin
  { SELF REWRITING }
  assign(T,'TWRITELN.PAS');
  assign(T1,'TWRITELN.TMP');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
  End;
  close(T);
  close(T1);

  { ADD->TASK (FROM FILE) }
  WRITELN(' ----- TASK FILE NAME? ----- ');
  WRITELN(' Sample:My.ts');
  READLN(TFILENAME);
  assign(T2,TFILENAME); reset(T2);
  {MY.TS - test}

  MODULE_UNIT := '';
  MODULE_NAME := '';
  MODULE_PROCEDURE := '';

  If Not eof(T2) Then readln(T2,MODULE_UNIT);
  If Not eof(T2) Then readln(T2,MODULE_NAME);
  If Not eof(T2) Then readln(T2,MODULE_PROCEDURE);

  If MODULE_NAME <> '' Then
  Begin
    { ADD MODULE NAME TO TASK LIST }
    assign(T3,'MMLIST.TCK');
    assign(T3_,'MMLIST.BAK');
    reset(T3);
    rewrite(T3_);
    While Not eof(T3) Do
    Begin
      readln(T3,TempS);
      writeln(T3_,TempS);
    End;
    close(T3);
    close(T3_);

    assign(T3,'MMLIST.BAK');
    assign(T3_,'MMLIST.TCK');
    reset(T3);
    rewrite(T3_);
    writeln(T3_,MODULE_NAME);
    While Not eof(T3) Do
    Begin
      readln(T3,TempS);
      writeln(T3_,TempS);
    End;
    close(T3);
    close(T3_);
  End;

  assign(T,'TWRITELN.TMP');
  assign(T1,'TWRITELN.PAS');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
    If(TempS='{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }') Then
    Begin
      If MODULE_UNIT<>'' Then
      Begin
        writeln(T1,'     ',MODULE_UNIT,',');
      End;
    End;
    If(TempS='{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }') Then
    Begin
      If (MODULE_NAME<>'') And (MODULE_PROCEDURE<>'') Then
      Begin
        writeln(T1,'  If (task=''',MODULE_NAME,''') Then ',MODULE_PROCEDURE,';');
      End;
    End;
  End;
  close(T);
  close(T1);

  close(T2);
End;

{ DELETE TASK }
Procedure delete_task_run;
Var
  T,T1:text; TempS:String;
  T2:text; TFILENAME : String;

  MODULE_UNIT : String;
  MODULE_NAME : String;
  MODULE_PROCEDURE : String;

  TempIFCmdS : String;
  T_IFCMDStmp : text;

Begin

  { SELF REWRITING }
  assign(T,'TWRITELN.PAS');
  assign(T1,'TWRITELN.TMP');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
  End;
  close(T);
  close(T1);

  { DELETE TASK . GET DATA ABOUT TASK . }
  WRITELN(' ----- TASK FILE NAME? ----- ');
  WRITELN(' Sample:My.ts');
  READLN(TFILENAME);
  assign(T2,TFILENAME); reset(T2);
  {MY.TS - test}

  MODULE_UNIT := '';
  MODULE_NAME := '';
  MODULE_PROCEDURE := '';

  If Not eof(T2) Then readln(T2,MODULE_UNIT);
  If Not eof(T2) Then readln(T2,MODULE_NAME);
  If Not eof(T2) Then readln(T2,MODULE_PROCEDURE);

  Close(T2);

  { DELETE TASK . SELF REWRITING . }
  assign(T,'TWRITELN.TMP');
  assign(T1,'TWRITELN.PAS');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    If(TempS='{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }') Then
    Begin
      While((TempS<>'{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }')And(Not eof(T))) Do
      Begin
        If MODULE_UNIT<>'' Then
        Begin
          If(TempS='     '+MODULE_UNIT+',')Then
          Begin
            TempS := TempS;
          End Else
          Begin
            writeln(T1,TempS);
          End;
        End Else
        Begin
          writeln(T1,TempS);
        End;
        readln(T,TempS);
      End;
      If(TempS='{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }')Then
      Begin
        writeln(T1,TempS);
      End;
    End Else
    Begin
      If(TempS='{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }') Then
      Begin
        While((TempS<>'{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }')And(Not eof(T))) Do
        Begin
          If (MODULE_NAME<>'') And (MODULE_PROCEDURE<>'') Then
          Begin
            Assign(T_IFCMDStmp,'IFCMDS.TMP');
            ReWrite(T_IFCMDStmp);
            WriteLn(T_IFCMDStmp,'  If (task=''',MODULE_NAME,''') Then ',MODULE_PROCEDURE,';');
            Close(T_IFCMDStmp);
            Assign(T_IFCMDStmp,'IFCMDS.TMP');
            Reset(T_IFCMDStmp);
            ReadLn(T_IFCMDStmp,TempIFCmdS);
            Close(T_IFCMDStmp);
            If(TempS=TempIFCmdS)Then
            Begin
              TempS := TempS;
            End Else
            Begin
              writeln(T1,TempS);
            End;
          End Else
          Begin
            writeln(T1,TempS);
          End;
          readln(T,TempS);
        End;
        If(TempS='{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }')Then
        Begin
          writeln(T1,TempS);
        End;
      End Else
      Begin
        writeln(T1,TempS);
      End;
    End;
  End;
  close(T);
  close(T1);

  { DELETE TASK . MMLIST.TCK }
  Assign(T,'MMLIST.TCK');
  Assign(T1,'MMLIST.TMP');
  Reset(T);
  ReWrite(T1);
  While Not eof(T) Do
  Begin
    ReadLn(T,TempS);
    WriteLn(T1,TempS);
  End;
  Close(T);
  Close(T1);

  Assign(T,'MMLIST.TCK');
  Assign(T1,'MMLIST.TMP');
  Reset(T1);
  ReWrite(T);
  While Not eof(T1) Do
  Begin
    ReadLn(T1,TempS);
    If(MODULE_NAME<>'') Then
    Begin
      If(TempS=MODULE_NAME)Then
      Begin
        TempS:=TempS;
      End Else
      Begin
        WriteLn(T,TempS);
      End;
    End Else
    Begin
      WriteLn(T,TempS);
    End;
  End;
  Close(T);
  Close(T1);

End;

{ PROCESSOR }
Procedure processor_run;
Begin

  { ADD NEW TASK }
  If(task='ADD NEW TASK') Then add_new_task_run;

  { DELETE TASK }
  If(task='DELETE TASK') Then delete_task_run;

  { PLACE TO WORK WITH COMMAND }
  { -------------------------- }

{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }
  If (task='CFprocessor1') Then CFPROC1_run;
  If (task='CFprocessor') Then CFPROC_run;
  If (task='GraphModule') Then NBPRG42U_run;
  If (task='HISTOGR') Then HISTOGR_run;
  If (task='File->(Edit)->(With Search)') Then Edit_S_FILE_run;
  If (task='File->(Copy)') Then CopyFILE_run;
  If (task='File->(Edit)') Then EditFILE_run;
  If (task='Type File') Then TypeFILE_run;
  If (task='Create Text File') Then CRFILE_run;
  If (task='Console Calc') Then CONCALC_run;
  If (task='TREE') Then TREE_run;
  If (task='MY1') Then MY1_run;
  If (task='MY') Then MY_run;
{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }


End;

{ MAIN MODULE }
Var T4:text;
Begin

  { READ MMLIST.TCK }

  assign(T4,'MMLIST.TCK');
  reset(T4);
  N_TASK_VAR := 0;
  While Not eof(T4) Do Begin
    Inc(N_TASK_VAR);
    readln(T4,tasks[N_TASK_VAR]);
  End;
  close(T4);

START_label : { START }

  WriteLn(' ----- T E S T ----- {(text)(os)} ----- ');
  WriteLn(' Beloshenko Nikita (GNU) 2016 ');
  WriteLn(' Beloshenko Nikita (GNU) 2013,2014 ');
  WriteLn(' -------------------------------------- ');
  WriteLn('');

  WriteLn('Type E+M+M to exit.');
  WriteLn('HELP = MAIN MODULE -> {(TASK)(LIST)}.');
  WriteLn('MAIN MODULE : ENTER?');
  ReadLn(task);

  { HELP }
  If(task='HELP') Then
  Begin
    WriteLn(' ----- HELP ----- ');
    For i := 1 To N_TASK_VAR Do
    Begin
      WriteLn(i,').',tasks[i]);

      { BLOCK = 5 tasks }
      { Pause. }
      If i Mod 5 = 0 Then
      Begin
        WriteLn(' ---- Press ENTER to see next ---- ');
        Write(' ----  group of   T A S K S.  ---- ');
        ReadLn;
      End;
    End;
  End;

  { PROCESSOR }
  processor_run;

  { E+M+M }
  If(task='E+M+M') Then
  Begin
    Goto EXIT_label;  { EXIT }
  End Else
  Begin
    Goto START_label; { RELOAD }
  End;

EXIT_label:

  { END }
End.

TWRITELN.TMP
***********************

{ Beloshenko Nikita (GNU) 2016 }
{ Beloshenko Nikita (GNU) 2013,2014 }

(*

     TWRITELN.TMP

*)

Program Test_WriteLn;

Uses MTest,
{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }
     CFPROC1,
     CFPROC,
     NBPRG42U,
     HISTOGR,
     EDSFILE,
     CPFILE,
     EDFILE,
     TYFILE,
     CRFILE,
     CONCALC,
     TREE,
     MY1,
     MY,
{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }
     MTest1;


Label EXIT_label,START_label;
Var task:String;
    tasks:Array[1..100] Of String;
    N_TASK_VAR,i:Byte;

{ ADD_NEW_TASK }
Procedure add_new_task_run;
Var T,T1:text; TempS:String;
    T2:text; TFILENAME : String;

    MODULE_UNIT : String;
    MODULE_NAME : String;
    MODULE_PROCEDURE : String;

    T3,T3_:text;

Begin
  { SELF REWRITING }
  assign(T,'TWRITELN.PAS');
  assign(T1,'TWRITELN.TMP');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
  End;
  close(T);
  close(T1);

  { ADD->TASK (FROM FILE) }
  WRITELN(' ----- TASK FILE NAME? ----- ');
  WRITELN(' Sample:My.ts');
  READLN(TFILENAME);
  assign(T2,TFILENAME); reset(T2);
  {MY.TS - test}

  MODULE_UNIT := '';
  MODULE_NAME := '';
  MODULE_PROCEDURE := '';

  If Not eof(T2) Then readln(T2,MODULE_UNIT);
  If Not eof(T2) Then readln(T2,MODULE_NAME);
  If Not eof(T2) Then readln(T2,MODULE_PROCEDURE);

  If MODULE_NAME <> '' Then
  Begin
    { ADD MODULE NAME TO TASK LIST }
    assign(T3,'MMLIST.TCK');
    assign(T3_,'MMLIST.BAK');
    reset(T3);
    rewrite(T3_);
    While Not eof(T3) Do
    Begin
      readln(T3,TempS);
      writeln(T3_,TempS);
    End;
    close(T3);
    close(T3_);

    assign(T3,'MMLIST.BAK');
    assign(T3_,'MMLIST.TCK');
    reset(T3);
    rewrite(T3_);
    writeln(T3_,MODULE_NAME);
    While Not eof(T3) Do
    Begin
      readln(T3,TempS);
      writeln(T3_,TempS);
    End;
    close(T3);
    close(T3_);
  End;

  assign(T,'TWRITELN.TMP');
  assign(T1,'TWRITELN.PAS');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
    If(TempS='{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }') Then
    Begin
      If MODULE_UNIT<>'' Then
      Begin
        writeln(T1,'     ',MODULE_UNIT,',');
      End;
    End;
    If(TempS='{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }') Then
    Begin
      If (MODULE_NAME<>'') And (MODULE_PROCEDURE<>'') Then
      Begin
        writeln(T1,'  If (task=''',MODULE_NAME,''') Then ',MODULE_PROCEDURE,';');
      End;
    End;
  End;
  close(T);
  close(T1);

  close(T2);
End;

{ DELETE TASK }
Procedure delete_task_run;
Var
  T,T1:text; TempS:String;
  T2:text; TFILENAME : String;

  MODULE_UNIT : String;
  MODULE_NAME : String;
  MODULE_PROCEDURE : String;

  TempIFCmdS : String;
  T_IFCMDStmp : text;

Begin

  { SELF REWRITING }
  assign(T,'TWRITELN.PAS');
  assign(T1,'TWRITELN.TMP');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    writeln(T1,TempS);
  End;
  close(T);
  close(T1);

  { DELETE TASK . GET DATA ABOUT TASK . }
  WRITELN(' ----- TASK FILE NAME? ----- ');
  WRITELN(' Sample:My.ts');
  READLN(TFILENAME);
  assign(T2,TFILENAME); reset(T2);
  {MY.TS - test}

  MODULE_UNIT := '';
  MODULE_NAME := '';
  MODULE_PROCEDURE := '';

  If Not eof(T2) Then readln(T2,MODULE_UNIT);
  If Not eof(T2) Then readln(T2,MODULE_NAME);
  If Not eof(T2) Then readln(T2,MODULE_PROCEDURE);

  Close(T2);

  { DELETE TASK . SELF REWRITING . }
  assign(T,'TWRITELN.TMP');
  assign(T1,'TWRITELN.PAS');
  reset(T);
  rewrite(T1);
  While Not eof(T) Do
  Begin
    readln(T,TempS);
    If(TempS='{ ----- frag1:agc2723djdnw3hdknkdn3h83dms ----- }') Then
    Begin
      While((TempS<>'{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }')And(Not eof(T))) Do
      Begin
        If MODULE_UNIT<>'' Then
        Begin
          If(TempS='     '+MODULE_UNIT+',')Then
          Begin
            TempS := TempS;
          End Else
          Begin
            writeln(T1,TempS);
          End;
        End Else
        Begin
          writeln(T1,TempS);
        End;
        readln(T,TempS);
      End;
      If(TempS='{ ----- frag1:agc272dmflkse9ekrm9t5kl5095 ----- }')Then
      Begin
        writeln(T1,TempS);
      End;
    End Else
    Begin
      If(TempS='{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }') Then
      Begin
        While((TempS<>'{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }')And(Not eof(T))) Do
        Begin
          If (MODULE_NAME<>'') And (MODULE_PROCEDURE<>'') Then
          Begin
            Assign(T_IFCMDStmp,'IFCMDS.TMP');
            ReWrite(T_IFCMDStmp);
            WriteLn(T_IFCMDStmp,'  If (task=''',MODULE_NAME,''') Then ',MODULE_PROCEDURE,';');
            Close(T_IFCMDStmp);
            Assign(T_IFCMDStmp,'IFCMDS.TMP');
            Reset(T_IFCMDStmp);
            ReadLn(T_IFCMDStmp,TempIFCmdS);
            Close(T_IFCMDStmp);
            If(TempS=TempIFCmdS)Then
            Begin
              TempS := TempS;
            End Else
            Begin
              writeln(T1,TempS);
            End;
          End Else
          Begin
            writeln(T1,TempS);
          End;
          readln(T,TempS);
        End;
        If(TempS='{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }')Then
        Begin
          writeln(T1,TempS);
        End;
      End Else
      Begin
        writeln(T1,TempS);
      End;
    End;
  End;
  close(T);
  close(T1);

  { DELETE TASK . MMLIST.TCK }
  Assign(T,'MMLIST.TCK');
  Assign(T1,'MMLIST.TMP');
  Reset(T);
  ReWrite(T1);
  While Not eof(T) Do
  Begin
    ReadLn(T,TempS);
    WriteLn(T1,TempS);
  End;
  Close(T);
  Close(T1);

  Assign(T,'MMLIST.TCK');
  Assign(T1,'MMLIST.TMP');
  Reset(T1);
  ReWrite(T);
  While Not eof(T1) Do
  Begin
    ReadLn(T1,TempS);
    If(MODULE_NAME<>'') Then
    Begin
      If(TempS=MODULE_NAME)Then
      Begin
        TempS:=TempS;
      End Else
      Begin
        WriteLn(T,TempS);
      End;
    End Else
    Begin
      WriteLn(T,TempS);
    End;
  End;
  Close(T);
  Close(T1);

End;

{ PROCESSOR }
Procedure processor_run;
Begin

  { ADD NEW TASK }
  If(task='ADD NEW TASK') Then add_new_task_run;

  { DELETE TASK }
  If(task='DELETE TASK') Then delete_task_run;

  { PLACE TO WORK WITH COMMAND }
  { -------------------------- }

{ ----- frag2:sjdnakdn8291agc27kdn3h83dms ----- }
  If (task='CFprocessor1') Then CFPROC1_run;
  If (task='CFprocessor') Then CFPROC_run;
  If (task='GraphModule') Then NBPRG42U_run;
  If (task='HISTOGR') Then HISTOGR_run;
  If (task='File->(Edit)->(With Search)') Then Edit_S_FILE_run;
  If (task='File->(Copy)') Then CopyFILE_run;
  If (task='File->(Edit)') Then EditFILE_run;
  If (task='Type File') Then TypeFILE_run;
  If (task='Create Text File') Then CRFILE_run;
  If (task='Console Calc') Then CONCALC_run;
  If (task='TREE') Then TREE_run;
  If (task='MY1') Then MY1_run;
  If (task='MY') Then MY_run;
{ ----- frag2:sfnkueei9454jmlkty96kyhg69o ----- }


End;

{ MAIN MODULE }
Var T4:text;
Begin

  { READ MMLIST.TCK }

  assign(T4,'MMLIST.TCK');
  reset(T4);
  N_TASK_VAR := 0;
  While Not eof(T4) Do Begin
    Inc(N_TASK_VAR);
    readln(T4,tasks[N_TASK_VAR]);
  End;
  close(T4);

START_label : { START }

  WriteLn(' ----- T E S T ----- {(text)(os)} ----- ');
  WriteLn(' Beloshenko Nikita (GNU) 2016 ');
  WriteLn(' Beloshenko Nikita (GNU) 2013,2014 ');
  WriteLn(' -------------------------------------- ');
  WriteLn('');

  WriteLn('Type E+M+M to exit.');
  WriteLn('HELP = MAIN MODULE -> {(TASK)(LIST)}.');
  WriteLn('MAIN MODULE : ENTER?');
  ReadLn(task);

  { HELP }
  If(task='HELP') Then
  Begin
    WriteLn(' ----- HELP ----- ');
    For i := 1 To N_TASK_VAR Do
    Begin
      WriteLn(i,').',tasks[i]);

      { BLOCK = 5 tasks }
      { Pause. }
      If i Mod 5 = 0 Then
      Begin
        WriteLn(' ---- Press ENTER to see next ---- ');
        Write(' ----  group of   T A S K S.  ---- ');
        ReadLn;
      End;
    End;
  End;

  { PROCESSOR }
  processor_run;

  { E+M+M }
  If(task='E+M+M') Then
  Begin
    Goto EXIT_label;  { EXIT }
  End Else
  Begin
    Goto START_label; { RELOAD }
  End;

EXIT_label:

  { END }
End.

NBPRG42.PAS
***********************

{ Nikita Beloshenko (GNU) 2016 }
{ Nikita Beloshenko (GNU) 2013,2014 }

{ NBPRG23 -> ... -> NBPRG42 -> L'IMMENSITA v1. }

{ Nikita Beloshenko (GNU) 2012 }

Program NBPRG42;

(************************************************
 *                                              *
 *   NBPRG42.PAS                                *
 *                                              *
 *   NBPRG42.                                   *
 *                                              *
 ************************************************)

Uses Graph,Crt,N42t1,N42t2,N42t3,N42t4,Inst,Simple,Calc,Edit,Files,NBPRG_I;
Label NEXT,PREV,START,EXIT;
Const
  MaxNTask = 20;
  MenuColor = 4;
Var
  TFile : Text;
  TaskList : Array[1..MaxNTask] Of String;
  PNameList : Array[1..MaxNTask] Of String;
  Ntask : Byte;
  gd,gm,i : Integer;
  s : String;
  ch : Char;

Procedure DrawSmallPicture16x16(Var X0,Y0 : Integer; Path : String);
Var
  X,Y : Integer;
  i1,j1 : Byte;
  TFile : Text;
  Color : Byte;
Begin
  assign(TFile, Path);
  reset(TFile);
  For i1 := 1 To 16 Do
  Begin
    For j1 := 1 To 16 Do
    Begin
      X := X0 + j1;
      Y := Y0 + i1;
      Read(TFile, Color);
      PutPixel(X,Y,Color);
    End;
    ReadLn(TFile);
  End;
  close(TFile);
End;

Procedure DrawRectangle(Var x1,y1,x2,y2:Integer);
Begin
  Line(x1,y1,x2,y1);
  Line(x2,y1,x2,y2);
  Line(x2,y2,x1,y2);
  Line(x1,y2,x1,y1);
End;

Procedure DrawNtaskRectangle;
Var
  x1,y1,x2,y2:Integer;
  j:Byte;
  Path : String;
Begin
  SetColor(MenuColor);
  For j:=1 To Ntask Do
  Begin
    x1 := 20; y1 := 20 + (j-1)*40;
    x2 := 40; y2 := 40 + (j-1)*40;
    DrawRectangle(x1,y1,x2,y2);
    SetTextStyle(2, HorizDir, 5);
    OutTextXY(x2 + 20, y1, TaskList[j]);

    Path := PNameList[j];
    DrawSmallPicture16x16(x1,y1,Path);
  End;

  x1 := 20 - 5;
  x2 := 20 + 20 + 5;
  y1 := 20 - 5;
  y2 := 40 + (Ntask - 1)*40 + 5;

  DrawRectangle(x1,y1,x2,y2);
End;

Procedure DrawMRectangle;
Var
  x1,y1,x2,y2:Integer;
Begin
  SetColor(4);
  x1:=20 - 1;y1:=20 + (i-1)*40 - 1;x2:=40 + 1;y2:=40 + (i-1)*40 + 1;
  DrawRectangle(x1,y1,x2,y2);
End;

Procedure ErraseMRectangle;
Var
  x1,y1,x2,y2:Integer;
Begin
  SetColor(0);
  x1:=20 - 1;y1:=20 + (i-1)*40 - 1;x2:=40 + 1;y2:=40 + (i-1)*40 + 1;
  DrawRectangle(x1,y1,x2,y2);
End;

Procedure ExecuteTask(Var Command:String);
Begin
  If Command ='task1' Then DoTask1;
  If Command ='task2(histogram)' Then DoTask2; {task2->histogram}
  If Command ='task3' Then DoTask3;
  If Command ='task4' Then DoTask4;

  {...TODO : ADD HERE REACTIONS...}

  If Command = 'calc' Then DoCalc;
  If Command = 'edit' Then DoEdit;
  If Command = 'files' Then DoFiles;

  If Command ='install/del customer task (help)' Then DoInstHelp;
  If Command ='Reset SIMPLE.PAS (test user task)' Then DoInst;
  If Command ='Simple (test user task)' Then DoSimple;

End;

Var
  x1,y1,x2,y2 : Integer;
Begin
  gd := Detect;
  InitGraph(gd,gm,'');

  Ntask := 0;

  assign(TFile,'list.tck');
  reset(TFile);
  While Not eof(TFile) Do
  Begin
    Inc(NTask);
    ReadLn(TFile,TaskList[Ntask]);
    ReadLn(TFile,PNameList[Ntask]);
  End;
  close(TFile); 

  If NTask > MaxNTask Then NTask := MaxNTask;

  i:=1;

  { ADDITION GRAPHICAL INTERFACE RELOADING ... }
  NBPRG_I_reload_interf;

START:

  DrawNtaskRectangle;

  SetTextStyle(2, HorizDir, 5);
  OutTextXY(350,300,'Enter - Select task');

  x1 := 350 - 10;
  x2 := 500 + 10;
  y1 := 300 - 10;
  y2 := 300 + 20 + 10;
  DrawRectangle(x1,y1,x2,y2);

  OutTextXY(350,50,'Nikita Beloshenko (GNU) 2012,2013');
  OutTextXY(350,70,'                        2014,2016');

  DrawMRectangle;
  ch := ReadKey;
  ErraseMRectangle;
  If Ord(ch) = 80 Then Goto NEXT;
  If Ord(ch) = 72 Then Goto PREV;
  If Ord(ch) = 27 Then Goto EXIT;

  { 13 = "ENTER". }
  If Ord(ch) = 13 Then
  Begin
    ExecuteTask(TaskList[i]);

    { ADDITION GRAPHICAL INTERFACE RELOADING ... }
    NBPRG_I_reload_interf;
  End;
  Goto START;

NEXT:
  Inc(i);
  If i>Ntask Then Dec(i);
  Goto START;

PREV:
  Dec(i);
  If i<1 Then Inc(i);
  Goto START;

EXIT:
  ReadLn(s);
  CloseGraph;
End.

NBPRG42U.PAS
***********************

{ Nikita Beloshenko (GNU) 2016 }
{ Nikita Beloshenko (GNU) 2013,2014 }

{ NBPRG23 -> ... -> NBPRG42 -> L'IMMENSITA v1. }

{ Nikita Beloshenko (GNU) 2012 }

Unit NBPRG42U;

(***************************************************
 *                                                 *
 *   NBPRG42U.PAS                                  *
 *                                                 *
 *   NBPRG42U.                                     *
 *                                                 *
 ***************************************************)

Interface

Procedure NBPRG42U_run;

Implementation

Uses Graph,Crt,N42t1,N42t2,N42t3,N42t4,Inst,Simple,Calc,Edit,Files,NBPRG_I;

Const
  MaxNTask = 20;
  MenuColor = 4;
Var
  TFile     : Text;
  TaskList  : Array[1..MaxNTask] Of String;
  PNameList : Array[1..MaxNTask] Of String;
  Ntask     : Byte;
  gd,gm,i   : Integer;
  s         : String;
  ch        : Char;

Procedure DrawSmallPicture16x16(Var X0,Y0 : Integer; Path : String);
Var
  X,Y   : Integer;
  i1,j1 : Byte;
  TFile : Text;
  Color : Byte;
Begin
  assign(TFile, Path);
  reset(TFile);
  For i1 := 1 To 16 Do
  Begin
    For j1 := 1 To 16 Do
    Begin
      X := X0 + j1;
      Y := Y0 + i1;
      Read(TFile, Color);
      PutPixel(X,Y,Color);
    End;
    ReadLn(TFile);
  End;
  close(TFile);
End;

Procedure DrawRectangle(Var x1,y1,x2,y2:Integer);
Begin
  Line(x1,y1,x2,y1);
  Line(x2,y1,x2,y2);
  Line(x2,y2,x1,y2);
  Line(x1,y2,x1,y1);
End;

Procedure DrawNtaskRectangle;
Var
  x1,y1,x2,y2 : Integer;
  j           : Byte;
  Path        : String;
Begin
  SetColor(MenuColor);
  For j:=1 To Ntask Do
  Begin
    x1 := 20; y1 := 20 + (j-1)*40;
    x2 := 40; y2 := 40 + (j-1)*40;
    DrawRectangle(x1,y1,x2,y2);
    SetTextStyle(2, HorizDir, 5);
    OutTextXY(x2 + 20, y1, TaskList[j]);

    Path := PNameList[j];
    DrawSmallPicture16x16(x1,y1,Path);
  End;

  x1 := 20 - 5;
  x2 := 20 + 20 + 5;
  y1 := 20 - 5;
  y2 := 40 + (Ntask - 1)*40 + 5;

  DrawRectangle(x1,y1,x2,y2);
End;

Procedure DrawMRectangle;
Var
  x1,y1,x2,y2 : Integer;
Begin
  SetColor(4);
  x1 := 20 - 1; y1 := 20 + (i-1)*40 - 1;
  x2 := 40 + 1; y2 := 40 + (i-1)*40 + 1;
  DrawRectangle(x1,y1,x2,y2);
End;

Procedure ErraseMRectangle;
Var
  x1,y1,x2,y2 : Integer;
Begin
  SetColor(0);
  x1 := 20 - 1; y1 := 20 + (i-1)*40 - 1;
  x2 := 40 + 1; y2 := 40 + (i-1)*40 + 1;
  DrawRectangle(x1,y1,x2,y2);
End;

Procedure ExecuteTask(var Command:String);
Begin
  If Command ='task1' Then DoTask1;
  If Command ='task2(histogram)' Then DoTask2; {task2->histogram}
  If Command ='task3' Then DoTask3;
  If Command ='task4' Then DoTask4;

  {...TODO : ADD HERE REACTIONS...}

  If Command = 'calc' Then DoCalc;
  If Command = 'edit' Then DoEdit;
  If Command = 'files' Then DoFiles;

  If Command ='install/del customer task (help)' Then DoInstHelp;
  If Command ='Reset SIMPLE.PAS (test user task)' Then DoInst;
  If Command ='Simple (test user task)' Then DoSimple;

End;

Procedure NBPRG42U_run;
Label NEXT,PREV,START,EXIT;
Var
  x1,y1,x2,y2 : Integer;
Begin
  gd := Detect;
  InitGraph(gd,gm,'');

  Ntask := 0;

  assign(TFile,'list.tck');
  reset(TFile);
  While Not eof(TFile) Do
  Begin
    Inc(NTask);
    ReadLn(TFile,TaskList[Ntask]);
    ReadLn(TFile,PNameList[Ntask]);
  End;
  close(TFile);

  If NTask > MaxNTask Then NTask := MaxNTask;

  i:=1;

  { ADDITION GRAPHICAL INTERFACE RELOADING ... }
  NBPRG_I_reload_interf;

START:

  DrawNtaskRectangle;

  SetTextStyle(2, HorizDir, 5);
  OutTextXY(350,300,'Enter - Select task');

  x1 := 350 - 10;
  x2 := 500 + 10;
  y1 := 300 - 10;
  y2 := 300 + 20 + 10;
  DrawRectangle(x1,y1,x2,y2);

  OutTextXY(350,50,'Nikita Beloshenko (GNU) 2012,2013');
  OutTextXY(350,70,'                     2014,2015,2016');

  DrawMRectangle;
  ch := ReadKey;
  ErraseMRectangle;
  If Ord(ch) = 80 Then Goto NEXT;
  If Ord(ch) = 72 Then Goto PREV;
  If Ord(ch) = 27 Then Goto EXIT;

  { 13 = "ENTER". }
  If Ord(ch) = 13 Then
  Begin
    ExecuteTask(TaskList[i]);

    { ADDITION GRAPHICAL INTERFACE RELOADING ... }
    NBPRG_I_reload_interf;
  End;
  Goto START;

NEXT:
  Inc(i);
  If i>Ntask Then Dec(i);
  Goto START;

PREV:
  Dec(i);
  If i<1 Then Inc(i);
  Goto START;

EXIT:
  ReadLn(s);
  CloseGraph;
End;

End.