


















                 SPECIFICATION AND DEFINITION OF

                            FOXYCALC

                         APRIL 22, 1982

                   LAST UPDATE : MAY 9, 1982

                               BY

                          M. S. EDWARDS
.PA


1.   FOXYCALC MODULES:

          THE FOLLOWING MODULES ARE THE PRELIMINARY
     DEFINITION OF THE PACKAGE:

          1.   COMMAND LINE INTERPRETER PLUS HELP
          2.   EXPRESSION EVALUATOR
          3.   FLOATING POINT PACKAGE/(EXTENDED FUNCTIONS LATER)
          4.   DISPLAY / FORMAT
          5.   ERROR HANDLING
          6.   DISK INTERFACE 
          7.   CRT / KBD I/O
          8.   RUNTIME
          9.   MAIN
.PA
2.   PROGRAMMING LANGUAGE:  THE PROGRAM SHALL BE WRITTEN IN
     MODULES AND THE LANGUAGE USED WILL BE EITHER PLI80 OR 
     PLMX.  MODULES WILL BE WRITTEN IN THE LANGUAGE PRODUCING
     THE BEST MEMORY USEAGE WITH OPERATING SPEED BEING CON-
     SIDERED ONLY IF THE OVERALL PACKAGE OPERATION IS FOUND
     TO BE UNACCEPTABLY SLOW.  THE MODULES WILL BE LINKED 
     USING THE DIGITAL RESEARCH'S PLI80 LINKER.



.PA


                   ERROR HANDLING DEFINITIONS

     1.   ERROR MESSAGE FORMAT
          (MODULE NUMBER) * 1000 + (ERROR MESSAGE NUMBER)
     2.   ON ERROR:
          CALL ERROR HANDLER--PASS ERROR NUMBER
     3  FATA̠ ERRO HANDLING--(ERROR REQUIRIN SUSPENSIO O 
          CURRENԠ FUNCTION  PERMIԠ OPERATOҠ INTERVENTIOΠ T 
          CHANGE DISK, ETC.
     4 NON-FATA̠ ERRORS--PERMIԠ CORRECTIOΠ OƠ ERROҠ AN 
          RESUMPTION OF JOB IN PROGRESS.
     5.
.PA


                      DATA IMAGE IN MEMORY

     1.   VARIABLE LENGTH CELLS (255 MAXIMUM)
     2.   STORED IN MEMORY IN ROW MAJOR FORM
     3.   CALCULATING IN COLUMN MAJOR FORM
4.MINIMUM LENGTH CELL
5.MINIMUM STORAGE REQUIRED
6.DATA STORED IN ASCII FORM
7.TEX    O TEX AL BLANKS CELL WIL B STORE A 
A MINIMUM CELL.
.PA


       FOX MEMORY MAP DEFINING MAXIMUM SPACE FOR FOXYCALC


          1.  THE FOX HAS A MEMORY SPACE OF 64K
          2.  BDOS REQUIRES 3.6K
          3.  BIOS REQUIRES 6.0K
          4.  MAXIMUM TPA FOR HINET 54K
          5.  MAXIMUM TPA FOR STANDALONE ~ 57K
          6.  ASSUME 26K SPACE REQUIREMENT FOR FOXYCALC PROGRAM
              THEN FOR THE HINET VERSION, THERE WOULD BE ~ 28K
              FOR FOXYCALC DATA.
          7.  ASSUMING 4K FOR MISC DATA STORAGE REQUIREMENTS
              LEAVES 24K FOR THE SPREAD SHEET DATA.  IF EACH
              SPREAD SHEET CELL USES 20 BYTES THEN THERE CAN
              BE APPROXIMATELY 1200 ACTIVE CELLS IN ANY SPREAD
              SHEET LAYOUT.

.PA

                        CELL DEFINITIONS
                 E X P R E S S I O N    C E L L


       ---------------------------------------------------
       |      ROW (byte 0)      |     COLUMN (byte 1)    |
       ---------------------------------------------------
       ---------------------------------------------------
       |    FLAG / FORMAT       |         RANGE          |
       ---------------------------------------------------
       ---------------------------------------------------
       |     STRING LENGTH      |  STRING (byte 1..254) ==>
       ---------------------------------------------------


                      V A L U E    C E L L


       ---------------------------------------------------
       |    ROW (byte 0)        |    COLUMN (byte 1)     |
       ---------------------------------------------------
       ---------------------------------------------------
       |     FLAG / FORMAT      |    8-BYTE BCD VALUE ==>
       ---------------------------------------------------


                 F L A G / F O R M A T  B Y T E


 d7 d6 d5 d4 d3 d2 d1 d0
 |  |  |  |  |  |  |  |
 |  |  |  |  x  x  x  x --- Numeric precision (default 8.2)
 |  |  |  |
 |  |  0  0 --------------- Business "$" format (default)
 |  |  0  1 --------------- Integer format
 |  |  1  0 --------------- Graphic format
 |  |  1  1 --------------- Blank display
 |  |
 |  0 --------------------- Right-justify (default for numeric)
 |  --------------------- Left-justif(defaulfoalph)
 |
 0 ------------------------ NO protect (default)
 1 ------------------------ Protected cell

.PA


                          DEFINITION OF
                 C E L L   W I D T H   T A B L E


       ---------------------------------------------------
       |    BYTE 0 (not used)   |    BYTE 1 (first col)  |
       ---------------------------------------------------
       ---------------------------------------------------
       |                  BYTES 2...254                  |
       ---------------------------------------------------
       ---------------------------------------------------
       |  BYTE 255 (last col)   |   BYTE 256 (not used)  |
       ---------------------------------------------------
.pa

                   MAP OF FOXYCALC DATA MEMORY


                 -------------------------------
Top of memory    |      base of VALUE cells    |
                 |            GROWS            |
                 |              |              |
                 |              |              |
                 |              V              |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |              ^              |
                 |              |              |
                 |              |              |
                 |            GROWS            |
                 |     base of EXPR cells      |
                 |-----------------------------|
                 |                             |
                 |      base of C. W. T.       |
                 -------------------------------
.pa
           E X P E R S S I O N   F I L E   F O R M A T


                 -------------------------------
                 |       C. W. T. array        |
                 |                             |
                 -------------------------------
                 |         EXPER cells         |
                 |              .              |
                 |              .              |
                 |              .              |
                 |              .              |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 -------------------------------
                 |        VALUE cells          |
                 |              .              |
                 |              .              |
                 |              .              |
                 |              .              |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 |                             |
                 -------------------------------
                 |             EOF             |
                 -------------------------------
.pa


                        FOXYCALC DESIGN PHILOSOPHY

     1.KE STROKE WIL HAV TH SAM FUNCTIO  A TH BUNDLE 
  FOX EDITOR.
2.HARDWARE INTERFACE DEFINITION
3.EDITOR DEFINITION



                         COMMAND LINE INTERPRETER

      1.INCREMENTAL SYNTAX CHECKING




                           EXPRESSION EVALUATOR

     1.RUN-TIME ERROR DETECTOR


                                 DISK I/O

      1.NO VIRTUAL DATA
2.HANDLING MEDIA/HARDWARE FAILURE/ O/S ERRORS/ERRORS
3.COMMON I/O??



                              DISPLAY/FORMAT

      1.INTERRUPT DRIVEN
2.TYPE-AHEAD BUFF


.PA

                FOXYCALC OPERATIONS AND FUNCTIONS

     FOXYCALà SHAL̠ PROVIDŠ THŠ FOLLOWINǠ OPERATIONӠ AN 
FUNCTIONS:
     THE OPERATORS SHALL INCLUDE:

          1.   +    ADDITION
          2.   -    SUBTRACTION
          3.   *    MULTIPLICATION
          4.   /    DIVISION
          5.   ^    RAISING TO A POWER
          6.   =    IS EQUAL TO
          7.   <>   IS NOT EQUAL TO
          8.   <    IS LESS THAN
          9.   <=   IS LESS THAN OR EQUAL TO
          10.  >    IS GREATER THAN
          11.  >=   IS GREATER THAN OR EQUAL TO


.PA
     THE BUILT-IN FUNCTIONS SHALL INCLUDE:

          1.   ABS(VALUE)     ABSOLUTE VALUE
          2.   AVG(LIST)      ARITHMETIC MEAN OF THE VALUES IN
                              THE LIST.
          3  COUNT(LIST   COUN TH NUMBE OƠNON-BLAN 
                              ENTRIES IN THE LIST.
          4.   ERR.NSF        DISPLAY "ERROR-NO SUCH FUNCTION"
                              FOR ANY CELL HAVING THIS FUNCTION.
          5.   EXP(VALUE)     RAISE "e" EXPONENTIALLY WHERE
                              VALUE IS THE EXPONENT.
          6.   OR(E1,E2)      RESULTS TRUE(VALUE=1) IF EITHER
                              EXPRESSION 1(E1) OR EXPRESSION 2
                              ARE TRUE (NON-ZERO), OTHERWISE
                              RESULTS FALSE (VALUE=0).
          7.   AND(E1,E2)     RESULTS TRUE (VALUE=1) IF BOTH
                              EXPRESSION 1 (E1) AND EXPRESSION 2
                              ARE TRUE (NON-ZERO), OTHERWISE
                              RESULTS FALSE (VALUE=0).
          8.   NOT(EXPR)      RESULTS TRUE (VALUE=1) IF EXPRESS-
                              ION (EXPR) IS FALSE (ZERO), OTHER-
                              WISE RESULTS FALSE (VALUE=0).
          9.   IF(E1,E2,E3)   IF EXPRESSION 1 (E1) IS TRUE, THEN
                              USE EXPRESSION 2 (E2), OTHERWISE
                              USE EXPRESSION 3.
          10.  INT(VALUE)     INTEGER PORTION OF VALUE.
          11.  LOOKUP(SV,
                    RANGE)    SEARCH THE RANGE OF COL/ROW'S FOR
                              THE LAST VALUE LESS THAN OR EQUAL
                              TO SEARCH VALUE (SV).  RETURN
                              THE VALUE FROM THE COLUMN TO THE 
                              RIGHT OF THE SEARCH COLUMN,OR THE
                              ROW BELOW THE SEARCH ROW. ASSUMES
                              THE SEARCH RANGE IS IN ASCENDING
                              ORDER.


          12.  LOG10(VALUE)   LOG BASE 10 OF VALUE.
          13.  MAX(LIST)      RETURNS MAX VALUE IN LIST.
          14.  MIN(LIST)      RETURNS MIN VALUE IN LIST.
          15.  NPV(DISC,
                    RANGE)    NET PRESENT VALUE OF A GROUP OF
                              CASH RETURNS AT THE GIVEN RATE OF
                              DISCOUNT (DISC).  THE CASH AMOUNTS
                              ARE ASSUMED TO BE PROJECTED FOR 
                              EQUAL TIME PERIODS, SUCH AS EVERY
                              YEAR, AND THE DISCOUNT RATE IS FOR
                              THAT PERIOD.  THE FIRST CASH ENTRY
                              IӠ DISCOUNTEĠ ONCE THŠ SECON 
                              TWICE, AND SO ON, AND ADDED TO FORM 
                              THE TOTAL VALUE.
          16.  PI             PI TO 15 SIGNIFICANT DIGITS
          17.  e              e TO 15 SIGNIFICANT DIGITS
          18.  SQRT(VALUE)    SQUARE ROOT OF VALUE
          19.  SUM(LIST)      SUM OF THE VALUES IN LIST
          


    





                 FOXYCALC PSEUDO-REPRESENTATION

     THŠ FOLLOWIN LINE O PSEUD LANGUAG AR INTENDE T B  
DETAILE DESCRIPTIO O TH MAJO MODULE AND/O PROCEDURE RE-
QUIRE TϠ PERFOR THE FOXYCALC FUNCTIONS.


     0.   BEGIN MAIN

     1.   INITIALIZE DATA AREAS

     2.   DISPLAY STARTING FOXYCALC DISPLAY FRAME

     3.   IF HELP REQUESTED, THEN 4 ELSE 5

     4.   CALL DISPLAY HELP FRAME 1

     5  CALL DISPLA٠ BLAN SPREA SHEET WIT STATUӠ LINE 
          ERRO LINE PROMP LINE AN COMMAN LINE

     6.   IF HELP REQUESTED, THEN 7 ELSE 8

     7.   CALL DISPLAY HELP FRAME 1

     8.   CALL DISPLAY PROMPT LINE 0:

/1-CM  /2-DT  /3-CAL  /4-EXI  /5-MO  /6-RECA  /7-HELP!

     9.   ON KBD ENTRY CALL COMMAND LINE INTERPRETER

     10.  CALL EXIT

     11.  END [MAIN]


.PA


     0.   BEGIN COMMAND LINE INTERPRETER

     1.   INITIALIZE TO CELL DATA INPUT MODE THEN GET NEXT CHAR

     2.   IF FIRST CHAR THEN X ELSE 3.

     3.   ENABLE ALL EDIT FUNCTIONS THEN GET NEXT CHAR

     4.   ENABLE L & R CURSOR KEYS ONLY
      
     5.   IF DATA VALID (NUMERIC ONLY) THEN 8 ELSE 6.

     6.   CALL REPORT ERROR

     7.   GOTO 3.

     8.   IF TERMINATOR (CR) THEN 10 ELSE 9

     9.   GOTO 3

     10.  CALL PUT DATA

     11.  CALL CALCULATE DATA

     12.  CALL DISPLAY & CMD LINE REGISTER CLEANUP

     13.  CALL DISPLAY

     14.  GOTO 1.

     15.  IF CHAR="/" THEN 19 ELSE 16.

     16.  ENABLE ALL CURSOR KEYS.

     17.  ON CURSOR KEY INPUT CALL MOVE CURSOR

     18.  GOTO 1.

     19.  CALL GET_NEXT_NUMERIC_CHAR

     20 O KB INPU (1,2,3,4,5,6,7) GOT 
                         CMD, DT INP CALC EXIT RECAL O HELP!


.PA


          0.   BEGIN CMD

          1.   CALL DISPLAY PROMPT LINE 2:

1-DEFINE SHEET ! 2-SCREEN FMT ! 3-FILES ! 4-DATA FORMAT
5-OUTPUT       ! 6-GLOBAL     ! 7-HELP!

     2.  CALL GET_NEXT_NUMERIC_CHAR

        3.  ON KBD INPUT (1,2,3,4,5,6,7) GOTO
                         DEFINE_SHEET,SCREEN_FMT,FILES,DATA_FORMAT,
                         OUTPUT,GLOBAL,HELP!

     4.  END CMD




        0.     BEGIN CELL_DATA_INPUT

        1.     CALL GET_NEXT_DATA_CHAR

        2.     IF CHAR=CR THEN 3 ELSE 1
          
        3.     CALL PUT_DATA_CHAR

        4.     CALL CALCULATE

        5.     CALL CMD_LINE_&_STATUS_BUFFER_CLEANUP

        6.     CALL DISPLAY

        7.     GOTO 1

        8.     END CELL_DATA_INPUT

.PA


          0.   BEGIN CALCULATOR

          1.   GET DATA

          2.   DO CALCULATION

          3.   CALL DISPLAY

          4.   CALL CLEANUP

          5.   GOTO CELL_DATA_INPUT

          6.   END CALCULATOR



     0.   BEGIN EXIT

     1.   DISPLAY PROMPT LINE 3:
          1-SAVE FORM ! 2-EXIT TO CPM

     2.   IF KBD_INPUT=1 THEN CALL SAVE

     3.   IF KBD_INPUT=2 THEN RETURN TO CPM

     4.   GOTO 1

     5.   END EXIT



     0.   BEGIN MOVE

     1.   CALL CHANGE_CURSOR_POSITION

     2.   CALL DISPLAY

     3.   GOTO CELL_DATA_INPUT

     4.   END MOVE

.PA


     0.   BEGIN RECALCULATE

     1.   DISPLAY PROMPT LINE 4:
          CALCULATE BY 1-ROW ! 2-COL ! 3-AUTO ! 4-MANUAL

     2.   STORE CALCULATE FLAGS

     3.   CALL CALCULATE

     4.   CALL CLEANUP

     5.   CALL DISPLAY

     6.   GOTO CELL_DATA_INPUT

     7.   END RECALCULATE



     0.   BEGIN HELP_2

     1.   DISPLAY HELP_2 FRAME

     2.   ON NO KBD_INPUT GO TO 2

     3.   CALL DISPLAY

     4.   GO TO CELL_DATA_INPUT

     5.   END HELP_2

.PA

          0.   BEGIN DEFINE_SHEET

          1.   CALL DISPLAY PROMPT LINE 5:

1-TEXT INP ! 2-FORMULA INP ! 3-DELETE ! 4-INSERT ! 5-MOVE
! 6-COPY ! 7-HELP!

     2.  CALL GET_NEXT_NUMERIC_CHAR

     3.  ON KBD INPUT (1,2,3,4,5,6,7) GOTO
                              TEXT_INP, FORMULA_INP, DELETE,
                              INSERT, MOVE, COPY, HELP_3

     4.   END DEFINE_SHEET



     0.   BEGIN SCREEN_FORMAT

     1.   DISPLAY PROMPT LINE 6:
          1-TITLE LOCK ! 2-WINDOW

     2.   IF KBD_INPUT=1 THEN 7 ELSE 3

     3.   DISPLAY PROMPT LINE 7:
          1-HOR ! 2-VERT ! 3-CLEAR ! 4-SYNC ! 5-UNSYNC

     4.   ON KBD_INPUT (1,2,3,4,5) SET DISPLAY FLAG
                                   HOR,VERT,CLEAR,SYNC,UNSYNC
     5.   CALL DISPLAY
     
     6.   GOTO CELL_DATA_INPUT

     7.   DISPLAY PROMPT LINE 8:
     1-HOR LOCK ! 2-VERT LOCK ! 3-BOTH LOCK ! 4-CLEAR LOCK

     8.   ON KBD_INPUT (1,2,3,4) SET TITLE_LOCK FLAG

     9.   CALL DISPLAY

     10.  GOTO CELL_DATA_INPUT

     11.  END SCREEN_FORMAT

.PA


     0.   BEGIN FILES

     1.   DISPLAY PROMPT LINE 9:
     1-SAVE SHEET! 2-LOAD FILE ! 3-SHOW DIR

     2.   ON KBD_INPUT (1,2,3) CALL FILE_HANDLER

     3.   GOTO CELL_DATA_INPUT

     4.   END FILES


     0.   BEGIN DATA_FORMAT

     1.   DISPLAY PROMPT LINE 10:
     1-GLOBA  2-CO  3-RO  4-PROTEC  5-BLAN  6-ZA  7-HELP!

     2.   ON KBD_INPUT (1,2,3,4,5,6,7) CALL DFMT_CHANGE

     3.   CALL DISPLAY

     4.   GOTO CELL_DATA_INPUT

     5.   END DATA_FORMAT

.PA

     0.   BEGIN OUTPUT

     1.   




.PA

                    GENERAL SUPPORT ROUTINES


     0.   BEGIN GET_NEXT_NUMERIC_CHAR

     1.   IF NUMERIC INPUT THEN 4 ELSE 2

     2.   CALL REPORT_ERROR

     3.   GOTO 1

     4.   IF CORRECT RANGE THEN 7 ELSE 5

     5.   CALL REPORT_ERROR

     6.   GOTO 1

     7.   RETURN NUMERIC_DATA

     8.   END GET_NEXT_NUMERIC_CHAR


.PA

           DETAILED DESCRIPTION OF MODULES AND PROCEDURES




Expression Evalulator Modules:

Notes: 1) All commands shall be as orthognal as possible
       2) FoxyCalc would be more useful if cells could be addressed
            by labels and if they could be reached in other files
            --this would make FoxyCalc more like a report generator--


LEVEL 0::

Main sections:
EE (Expression Evalulator)
FP (Floating Point)
EF (Extended Functions)


LEVEL 1::

Expression Evalulator Procedures:
  [Thi sectio i the basi calculato an dat handler  
Supporte function include + - * / ln(x) ex square 
squar root SUM MIN an MAX  Thi sectio wil b complete 
during phase 1 of FC.
  ASCII_to_INTERNAL_FORM
  INTERNAL_to_ASCII_FORM
  AOS_to_RPN
  RPN_Calculator
  GET_NEXT_DATA
  GET_DATA_AT_CELL_XY
  STORE_DATA_AT_LAST_CELL
  STORE_DATA_AT_CELL_XY
  EE_DIRECTOR [calls EE_procs as needed]



Floating Point Procedures:
  [Provide floatin砠 poin an䠠 transcendenta젠 function 
extension t th Expressio Evalulato package   Thi se o 
procs will be finished during phase 2 of FC.]
  FP_RPN_Extension
  INTEGER_OVERFLOW_HANDLER
  EXTENDED_TRANCENDENTAL_FUNCTION [include log(10) sin cos 
tan {in both degree and rad modes}, TABLE_LOOKUP, SORT--WITH, etc]


.pa

Extended Functions Procedures:
  [Thi modul add i th abilit t ru shor programs handl 
dat structures etc  I man way i i th mos interestin 
modul o thi section bu i wil no b implemente unti 
phas  o th F release  Thi modul require an support th 
addition of virtual cells and 2D cells.]
  WHILE--WEND
  IF--THEN--ELSE
  CASE--ESAC
  COBEGIN--COEND
  PORT_I/O
  DISK_I/O



LEVEL 2::
Expression Evalulator Procedures:
  [Thi sectio i you basi calculato an dat handler  
Supporte function include + - * / ln(x) ex square 
squar root SUM MIN an MAX  Thi sectio wil b complete 
during phase 1 of FC.

  ASCII_to_INTERNAL_FORM  Thi modul convert ASCI number t 
th require bc interna form  I doe no affec no numbers  
I ca operat wit decimal octal binary an he an wel a 
integer and scientific form o numbers.  
  INPUTS ASCIɠ characters for_fla (intege o scientifi 
form)
  OUTPUTS ASCI character (strippe o numbers an number i 
the normal form        

  INTERNAL_to_ASCII_FORM  Thi modul convert number i th 
norma for t ASCII  I doe no operat o no numeri data  
Th outpu ca b i decimal octal binary o he form  Th 
outpu wil b i scientifi for i i i to larg t b 
displayed in integer form, otherwise as per the form_flag.
  INPUTS norma for numbers for t b converte t (hex 
decimal, octal, or binary, and integer or scentific form)
  OUTPUTS: ASCII characters

  AOS_to_RPN Thi modul convert expression fro AO t RP 
form  Th executio o thes expression i don b th 
EE_Director  Th for o AO i tha o mos calculators wit 
presceden an paren ('()')  Th for o RP i simila t tha 
o th H 41c calculato wit  4-hig stack las x scratc 
memory, etc.
  INPUTS:  tokenized AOS command strings
  OUTPUTS:  a que of RPN commands for the EE_Director to act upon
.pa
  RPN_Calculator  Thi modul implement th basi calculator  
I i controle b th EE_Director  I implement  basi 4-hig 
RP stac simila t tha i a HP-41c calculator  I include 
th X Y Z T an LS  register an som scratchpa memory  
Thes register ca operat o 1 digi BC dat o dat i 
floating point format.
  INPUTS:  numbers and commands
  OUTPUTS:  numbers

  GET_NEXT_DATA_CELL  Thi modul get th content o th nex 
cell  I i externa t thi sectio (handle i th genera I/ 
pack).
  INPUTS: none
  OUTPUTS ASCI strin fro th nex dat cel an th addres 
of that cell (x,y form)

  GET_DATA_AT_CELL_XY  Thi modul get th content o cel XY  
It is external to this section (handled in the general I/O pack).
  INPUTS:  address of cell XY
  OUTPUTS:  ASCII string from cell XY

  STORE_DATA_AT_LAST_CELL  Thi modul store th ASCI strin 
a th las cel accesse b 'GET_NEXT_DATA_CELL'  Thi modul 
is external to this section, (it is in the general I/O pack).
  INPUTS:  ASCII string
  OUTPUTS: none

  STORE_DATA_AT_CELL_XY  Thi modul store th ASCI strin a 
cel XY  Thi modul i externa t thi sectio (handle i th 
general I/O pack.
  INPUTS:  ASCII string, address XY
  OUTPUTS:  none

  EE_DIRECTOR  Thi modul control th RP calculator  I wil 
later be expanded to allow direct calculation, and programming.
  INPUTS:  a que of commands to be executed (via a CASE switch)
  OUTPUTS:  commands to the RPN calculator and other procs.

.pa
Level 3::

Expression Evalulator Procedures:
  [Thi sectio i you basi calculato an dat handler  
Supporte function include + - * / ln(x) ex square 
squar root SUM MIN an MAX  Thi sectio wil b complete 
during phase 1 of FC.

***********************************************************

  ASCII_to_INTERNAL_FORM  Thi modul convert ASCI number t 
th require bc interna form  I doe no affec no numbers  
I ca operat wit decimal octal binary an he an wel a 
integer and scientific form o numbers.  
  INPUTS ASCIɠ characters for_fla (intege o scientifi 
form)
  OUTPUTS ASCI character (strippe o numbers an number i 
the normal form        
   
  Thi procedur call th followin procedures  Som o thes 
procedure ar externa t thi modul (the ar i th Displa  
Formater)

  INTEGER-TO-FLOATING-POINT (external)

  FLOATING-POINT-TO-INTEGER (external)

  DECIMAL-TO-BASE-N (external)

  BASE-N-TO-DECIMAL (external)

  ASCII-TO-BCD (external?)

  ASCII-TO-FLOATING-POINT (external?)

***********************************************************

  INTERNAL_to_ASCII_FORM  Thi modul convert number i th 
norma for t ASCII  I doe no operat o no numeri data  
Th outpu ca b i decimal octal binary o he form  Th 
outpu wil b i scientifi for i i i to larg t b 
displayed in integer form, otherwise as per the form_flag.
  INPUTS norma for numbers for t b converte t (hex 
decimal, octal, or binary, and integer or scentific form)
  OUTPUTS: ASCII characters

  Th followin proc ar use b INTERNAL-TO-ASCII-FORM   
numbe o the ma b externa proc calle fro th Displa  
Formater.

  BCD-TO-ASCII (external?)

  FLOATING-POINT-TO-ASCII (external?)

***********************************************************

  AOS_to_RPN Thi modul convert expression fro AO t RP 
form  Th executio o thes expression i don b th 
EE_Director  Th for o AO i tha o mos calculators wit 
presceden an paren ('()')  Th for o RP i simila t tha 
o th H 41c calculato wit  4-hig stack las x scratc 
memory, etc.
  INPUTS:  tokenized AOS command strings
  OUTPUTS:  a que of RPN commands for the EE_Director to act upon

  Thi routin wil b develope later  

***********************************************************

  RPN_Calculator  Thi modul implement th basi calculator  
I i controle b th EE_Director  I implement  basi 4-hig 
RP stac simila t tha i a HP-41c calculator  I include 
th X Y Z T an LS  register an som (1610 register o 
scratchpa memory  Thes register ca operat o 1 digi BC 
dat o dat i floatin poin format.
  INPUTS:  numbers and commands
  OUTPUTS:  numbers

  Th mode o dat structure fo thi routin i a follows  
Eac cel i  registe tha i abl t hol a 1 digi bc 
numbe o  floatin poin number  Thi mode i ver simila t 
that of an HP-41cv calculator subset.

    RPN STACK                          MEMORY CELLS
    T-REGISTER                         MEMORY-#-0
    Z-REGISTER                         MEMORY-#-1
    Y-REGISTER                         MEMORY-#-2
    X-REGISTER     LAST-X-REGISTER     MEMORY-#-3
                                       MEMORY-#-4
                                         .
                                         .
                                       MEMORY-#-E
                                       MEMORY-#-F

    BCD-OR-FLOATING-POINT-FLAG
    DEGREE-OR-RADIAN-FLAG
       
  Th followin proc ar use i thi routin t manuiplat th 
stac an th operands  Initall i wil wor onl wit BC 
numbers.

.pa



  ENTER-NUMBER

  ROLL-STACK-DOWN-ONE-REGISTER

  ROLL-STACK-UP-ONE-REGISTER

  EXCHANGE-X-AND-Y-REGISTERS

  PUSH-LAST-X-REGISTER-INTO-STACK-AT-X

  DO-MATHIMATICAL-OPERATION-ON-STACK
    Thi pro ha  numbe o proc workin fo it  The wil b 
discussed in detail at level 4.  The basic set is, however:
    + (of contents of X-reg and Y-reg)
    - (of contents of X-reg and Y-reg)
    * (of contents of X-reg and Y-reg)
    / (of contents of X-reg and Y-reg)
    MIN (of X and Y)
    MAX (of X and Y)
    SUM (I'm not sure if this belongs here or elsewhere)
    INTEGER-PART (of contents of X-reg)
    FRACTIONAL-PART (of contents of X-reg)
    LN (of contents of X-reg)
    EX
    SQUARE (of contents of X-reg)
    SQUARE-ROOT (of contents of X-reg)


  CLEAR-X-REGISTER

  STORE-THE-CONTENTS-OF-THE-X-REGISTER-AT-(0 THRU F)

  RECALL-THE-CONTENTS-OF-(0 THRU F)-TO-THE-X-REGISTER

  CHANGE-SIGN

  ENTER-EXPONET (later)

  OUTPUT-THE-CONTENTS-OF-THE-X-REGISTER (?)

***********************************************************

  GET_NEXT_DATA_CELL  Thi modul get th content o th nex 
cell  I i externa t thi sectio (handle i th genera I/ 
pack).
  INPUTS: form(numeric, equation,format), search(via lables & files)
  OUTPUTS ASCI strin fro th nex dat cel an th addres 
of that cell (x,y form)

  Sinc thi i a externa routin i i discusse i dept 
elsewhere.

***********************************************************

  GET_DATA_AT_CELL_XY  Thi modul get th content o cel XY  
It is external to this section (handled in the general I/O pack).
  INPUTS:  address of cell XY, form
  OUTPUTS:  ASCII string from cell XY

  Sinc thi i a externa routin i i discusse i dept 
elsewhere.

***********************************************************

  STORE_DATA_AT_LAST_CELL  Thi modul store th ASCI strin 
a th las cel accesse b 'GET_NEXT_DATA_CELL'  Thi modul 
is external to this section, (it is in the general I/O pack).
  INPUTS:  ASCII string, form
  OUTPUTS: none

  Sinc thi i a externa routin i i discusse i dept 
elsewhere.

***********************************************************

  STORE_DATA_AT_CELL_XY  Thi modul store th ASCI strin a 
cel XY  Thi modul i externa t thi sectio (handle i th 
general I/O pack.
  INPUTS:  ASCII string, address XY, form
  OUTPUTS:  none

  Sinc thi i a externa routin i i discusse i dept 
elsewhere.

**********************************************************

  EE_DIRECTOR  Thi modul control th RP calculator  I wil 
later be expanded to allow direct calculation, and programming.
  INPUTS:  a que of commands to be executed (via a CASE switch)
  OUTPUTS:  commands to the RPN calculator and other procs.
 
  I primitiv堠 for th EE-Directo doe th堠 followin 
operations:
  0 direc dat fro outsid t th RPN-Calculator changin it 
format as needed in the process
  1) send data to the RPN-Calculator
  2) send operations to the RPN-Calculator
  3) receive data from the RPN-Calculator
  4 outpu dat t th outsid changin it forma a neede i 
the process.
                 





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