DataMuseum.dk

Presents historical artifacts from the history of:

Jet Computer Jet80

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Jet Computer Jet80

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦6d77c20fd⟧ TextFile

    Length: 6272 (0x1880)
    Types: TextFile
    Names: »MC.PAS«

Derivation

└─⟦d482c3728⟧ Bits:30005987 Turbo Pascal v2.00A (Jet80)
    └─ ⟦this⟧ »MC.PAS« 

TextFile


æ********************************************************************å
æ*                BEFORE YOU COMPILE THIS PROGRAM:                  *å
æ*   1.  Use the O command from the main menu to select Options.    *å
æ*   2.  Select the C option to generate a COM file.                *å
æ*   3.  Select the Q option to Quit the Options menu.              *å
æ*   4.  Select the M option to make this file the Main file        *å
æ********************************************************************å

æ$R-,U-,V-,X-,A+,C-å
æ This program is Copyrighted by Borland International Inc. 1983     å

program MicroCalc;

const
  FXMax: Char  = 'G';  æ Maximum number of columns                   å
  FYMax        = 21;   æ Maximum number of lines                     å

type
  Anystring   = stringÆ255Å;
  ScreenIndex = 'A'..'G';
  Attributes  = (Constant,Formula,Txt,OverWritten,Locked,Calculated);

æ The spreadsheet is made out of Cells every Cell is defined as      å
æ the following record:                                              å

  CellRec    = record
    CellStatus: set of Attributes; æ Status of cell (see type def.)  å
    Contents:   StringÆ70Å;        æ Contains a formula or some text å
    Value:      Real;              æ Last calculated cell value      å
    DEC,FW:     0..20;             æ Decimals and Cell Whith         å
  end;

  Cells      =  arrayÆScreenIndex,1..FYMaxÅ of CellRec;

const
  XPOS: arrayÆScreenIndexÅ of integer = (3,14,25,36,47,58,68);

var
  Screen:        Cells;             æ Definition of the spread sheet å
  FX:            ScreenIndex;       æ Culumn of current cell         å
  FY:            Integer;           æ Line of current cell           å
  Ch:            Char;              æ Last read character            å
  MCFile:        file of CellRec;   æ File to store sheets in        å
  AutoCalc:      boolean;           æ Recalculate after each entry?  å


æ The following include files contain procedures used in MicroCalc.  å
æ In the following source code there is a reference after each       å
æ procedure call indicating in which module the procedure is located.å

æ If you want a printer listing of the following modules then you    å
æ must let the include directives start in column one and then use   å
æ the TLIST program to generate a listing.                           å

 æ$I MC-MOD00.INC        Miscelaneous procedures                     å
 æ$I MC-MOD01.INC        Initialization procedures                   å
 æ$I MC-MOD02.INC        Commands to move between fields             å
 æ$I MC-MOD03.INC        Commands to Load,Save,Print                 å
 æ$I MC-MOD04.INC        Evaluating an expression in a cell          å
 æ$I MC-MOD05.INC        Reading a cell definition and Format commandå


æ.PAå
æ*********************************************************************å
æ*                START OF MAIN PROGRAM PROCEDURES                   *å
æ*********************************************************************å


æ Procedure Commands is activated from the main loop in this program å
æ when the user type a semicolon. Commands then activates a procedureå
æ which will execute the command. These procedures are located in theå
æ above modules.                                                     å
æ For easy reference the source code module number is shown in a     å
æ comment on the right following the procedure call.                 å

procedure Commands;
begin
  GotoXY(1,24);
  HighVideo;
  Write('/ restore, Quit, Load, Save, Recalculate, Print,  Format, AutoCalc, Help ');
  Read(Kbd,Ch);
  Ch:=UpCase(Ch);
  case Ch of                                             æ In module å
    'Q': Halt;
    'F': Format;                                               æ  04 å
    'S': Save;                                                 æ  03 å
    'L': Load;                                                 æ  03 å
    'H': Help;                                                 æ  03 å
    'R': Recalculate;                                          æ  05 å
    'A': Auto;                                                 æ  00 å
    '/': Update;                                               æ  01 å
    'C': Clear;                                                æ  01 å
    'P': Print;                                                æ  03 å
  end;
  Grid;                                                        æ  01 å
  GotoCell(FX,FY);                                             æ  02 å
end;

æ Procedure Hello says hello and activates the help procedure if the å
æ user presses anything but Return                                   å

procedure Wellcome;

  procedure Center(S: AnyString);
  var I: integer;
  begin
    for I:=1 to (80-Length(S)) div 2 do Write(' ');
    writeln(S);
  end;

begin æ procedure Wellcome å
  ClrScr; GotoXY(1,9);
  Center('Welcome to MicroCalc.  A Turbo demonstation program');
  Center('Copyright 1983 by Borland International Inc. ');
  Center('Press any key for help or <RETURN> to start');
  GotoXY(40,12);
  Read(Kbd,Ch);
  if Ch<>^M then Help;
end;

æ.PAå
æ*********************************************************************å
æ*          THIS IS WHERE THE PROGRAM STARTS EXECUTING               *å
æ*********************************************************************å

begin
  Init;                                                        æ  01 å
  Wellcome;
  ClrScr; Grid;                                                æ  01 å
  GotoCell(FX,FY);
  repeat
    Read(Kbd,Ch);
    case Ch of
      ^E:       MoveUp;                                        æ  02 å
      ^X,^J:    MoveDown;                                      æ  02 å
      ^D,^M,^F: MoveRight;                                     æ  02 å
      ^S,^A:    MoveLeft;                                      æ  02 å
      '/':      Commands;
      ^Æ:       GetCell(FX,FY);                                æ  04 å
    else
      if Ch in Æ' '..'ü'Å then
      GetCell(FX,FY);                                          æ  04 å
    end;
  until true=false;          æ (program stops in procedure Commands) å
end.




«eof»