DataMuseum.dk

Presents historical artifacts from the history of:

ICL Comet

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

See our Wiki for more about ICL Comet

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦bb2b23608⟧ TextFile

    Length: 8192 (0x2000)
    Types: TextFile
    Names: »REGN.PAS«

Derivation

└─⟦5c8344fa1⟧ Bits:30004223 REGN version 2.1 til ICL Comet
    └─ ⟦this⟧ »REGN.PAS« 

TextFile

(* REGN.PAS *)

æ Dette program er en videreudvikling af programmet MICROCALC fra    å
æ TURBO PASCAL (Borland Corp.)                                       å
æ Programmet er opstaaet som et programudviklingsprojekt under       å
æ Landcentralen for Undervisningsmidler.                             å
æ Da der er tale om en videreudvikling af et eksisterende program,   å
æ vil der findes ting i programmet, som vi nok ville have foretruk-  å
æ ket lavet paa en anden maade. Men med de resourcer, vi har haft    å
æ raadighed, er dette resultatet. TAKE IT - OR LEAVE IT!!!!          å

æ The rest of the comments in this source text are in english to     å
æ avoid some danish characters, which have special meaning for the   å
æ compiler.                                                          å

æ This version can with very few changes be compiled to a running    å
æ program on other 8-bit machines using a POLY-PASCAL compiler       å

æ If you should be interested in the compability problem, here is a  å
æ lot of hints on how to make a program movable from one machine to  å
æ another.                                                           å 

æ The source consists of 8 seperate files:                           å
æ REGNDEF.PAS  REGN.PAS  REGN1.PAS  REGN2.PAS  REGN3.PAS  REGN4.PAS  å
æ REGN5.PAS and REGN6.PAS                                            å
æ REGN.PAS, REGN2.PAS, REGN3.PAS, REGN4.PAS, REGN5.PAS and REGN6.PAS å
æ are made to be as nearly machine independent as possible.          å

æ REGNDEF.PAS consists of definitions regarding special keys and     å
æ strings to be sent to the terminal.                                å

æ REGN1.PAS has a procedure in which function keys can be set        å
æ up to send the desired strings. Special characters can be made     å
æ here as well.                                                      å

æ If you should be in need of more free memory the procedures in     å
æ REGN5.PAS are all suitable as overlayes                            å 

æ The group, which have made this particular version of REGN, does   å
æ not want to have any responsibility for other versions of the      å
æ program, which should be made by using this particular source text.å
æ We kindly request, that you use another name for your own version! å

æ This program is donated to the public domain for                   å
æ non commercial use only. Donated by TURBO PASCAL (Borland Corp.)   å

PROGRAM REGN; (*$R-,U-,A+,C-*)

const
 maxtegn      = 77;   æ maximum length of string                    å
 tom:stringÆmaxtegnÅ='                                                                            ';
 fxmax: char  = 'G';  æ maximum number of columns in spread sheet   å
 fymax        = 21;   æ maximum number of lines in spread sheet     å
 normwidth    = 10;   æ default width of coloumn                    å

(*$I REGNDEF.PAS*)    æ machine- and system dependend procedures    å
                      æ see also Include file REGN1.PAS             å

type
 str3        = stringÆ3Å;
 str11       = stringÆ11Å;
 str14       = stringÆ14Å;
 str30       = stringÆ30Å;
 str33       = stringÆ33Å;
 anystring   = stringÆmaxtegnÅ;
 str128      = stringÆ128Å;
 sheetindex  = 'A'..'G';
 attributes  = (constant,formula,txt,overwritten,locked,calculated,onscreen);

æ 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ÆmaxtegnÅ;   æ contains a formula or some text å
  value:      real;              æ last calculated cell value      å
  dec,fw:     0..maxtegn;        æ decimals and cell whith         å
 end;

 cells      =  arrayÆsheetindex,1..fymaxÅ of cellrec;

const
 xpos: arrayÆsheetindexÅ of integer = (2,13,24,35,46,57,68);
 
 æ NOTE this is for  PASCAL with upper left corner in position (0,0)å
 æ      the numbers  are related to normwidth                       å
 
 points:str33='.................................';
 æ Line to be written, when calculation is impossible               å
 
 stars:str33='*********************************';
 æ Line to be written, when cell width is too small                 å

var
 sheet:         cells;             æ definition of the spread sheet å
 fx:            sheetindex;        æ column of current cell         å
 fy:            integer;           æ line of current cell           å
 forladt:       sheetindex;        æ last column                    å
 upfx:          sheetindex;        æ column under update            å 
 upfy:          integer;           æ line under update              å
 ch:            char;              æ last read character            å
 mcfile:        file of cellrec;   æ file to store sheets in        å
 tekstfil:      text;              æ file for writing sheets        å
 autocalc:      boolean;           æ recalculate after each entry?  å
 slut:          boolean;           æ control for end of program     å
 retning:       byte;              æ default cursor movement direct.å
 indicator:     char;              æ arrows to point the direction  å
 errmessage:    arrayÆ1..15Å of str30; æ errormessages              å
 beregnet:      boolean;           æ to test for emty cells         å
 repeteret:     boolean;           æ to test for repetition         å
 eline:         anystring;         æ temporary string               å
 filename:      str14;             æ filename string                å
 ro:            boolean;           æ returns true if READ ONLY file å
 default:       byte;              æ default drive                  å
 ramdisk:       boolean;           æ true if ramdisk                å
 formelbuffer:  cellrec;           æ record for  copying formulas   å
 kopierfra:     str3;              æ name of cell to be copied      å
 multi:         boolean;           æ COMET ONLY - true if multiuser å

(*$I REGN1.PAS*)      æ machine- and system dependend procedures    å
                      æ see also REGNDEF.PAS                        å

(*$I REGN2.PAS*)

(*$I REGN3.PAS*)

(*$I REGN4.PAS*)

(*$I REGN5.PAS*)

(*$I REGN6.PAS*)

æ*********************************************************************å 
æ*          this is where the program starts executing               *å
æ*********************************************************************å

begin
 TASTER;
 
 (* The following are only for COMET *)
 if ramdisk then ramdisk:=RAMDREVTEST; æ Special function in REGN5.PAS å
 if ramdisk then ovdrive(4);           (* Get overlays from drive D *)
 (*  *)
 
 CURSOR(false);
 INIT;
 BUFFERNULL;
 WELLCOME;
 MENU;
 if not slut then begin
  GOTOCELL(fx,fy);
  ch:=@0;
  repeat
   if ch<>return then ch:=KEY;
   case ch of
       op:    MOVEUP;
      ned:    MOVEDOWN;
   hoejre:    MOVERIGHT;
  venstre:    MOVELEFT;
   omregn:begin
           RECALCULATE(true);
           gotoxy(0,23);write(clreol);
           GOTOCELL(fx,fy);
          end;
   return:begin
           case retning of
            0:begin
               retning:=0;
               indicator:='*';
               gotoxy(0,0);write(indicator);
               GOTOCELL(fx,fy);
              end;
            1:MOVERIGHT;
            2:MOVEDOWN;
           end;
           ch:=@0;
          end;
      '/':begin
           COMMANDS;
           ch:=@0;
          end; 
      esc: GETCELL(fx,fy);
   otherwise
    if ch in Æ' '..'ü'Å then GETCELL(fx,fy);
   end;
   if slut then begin
    gotoxy(0,23);
    write(clreol,bell,'Skal programmet afbrydes nu?  J/N ');
    repeat
     ch:=UPCASE(KEY);
    until ch in Æ'J','N'Å;
    write(ch);
    if ch='N' then begin
     slut:=false;
     FLASH(37,'  Tast  /  for kommando  ',false);
     gotoxy(0,23);write(clreol);
     GOTOCELL(fx,fy);
    end; 
   end; 
  until slut;
 end;
 CURSOR(true);
 AFSLUT;
end.
«eof»