Framework VII's Low Level Interface
- LLI. Dynamically Linked Loadable Program
Modules.
LLI documented in the Framework Developers' Toolkit.
Following is a brief description and answers to some of the questions you
may have about it.
Each Framework frame has four areas. The first three, The Label, Content, and Formula areas
are accessible by the user and may respectively contain text of the frame label (name), content or graph (data) and formulas (FRED program).
The fourth area is a hidden container, not accessible to users, that can contain binary machine-code
programs and data that was prepared outside Framework and linked into a DOS EXE file.
The first three areas are visible: A frames label first line appears on its border.
A frames content appears inside its border. And the first line of a frames formula
appears on the status line.
Accessing the first three areas, from a frame border:
-- To edit the Label Area press the {Space Bar}.
-- To edit the Content Area press the {In} key.
-- To edit the Formula Area press the {F2} key.
The EXE area on the other hand is not accessible by the user except via special programs.
It may contain only hidden binary code and data.
FRED can be used for application development
without ever dealing with LLI. FRED is designed to give full programing power to Framework
users.
How a LLI routine is loaded into Framework?
When an EXE file is selected in a drive cabinet and loaded into
the Framework desktop its code is copied into the EXE area of the frame.
The frame can be renamed, moved, copied or saved with the LLI code just
as any other frame. It may contain a formula and content, programs and
sub frames and as other frames can be used as a FRED function and display
the result of its formula. The code in the EXE area is called by the FRED function @exec(EXE_Frame_Name,
routine #).
What code can be put in the EXE LLI area?
A binary compiled machine language code written in a compiled language
(C, Pascal, Assembler, etc.) and linked into a DOS EXE file. It usually
contains calls to assembly language routines that access and manipulate
frames and performs Framework operations.
What happens when you call an LLI program in an EXE
area?
When FRED encounters @exec(FRAME) the code in the EXE area of the
FRAME is executed performing tasks such as disk operations, input, output,
updating frames on the desktop, etc. When the EXE code finishes control
returns to the FRED formula that called the EXE code and the execution
of the FRED code continues.
Where is the LLI documented?
In the Framework Developer's Toolkits.
What is a compiler?
A program that translates text to machine language instructions.
You need to have one in order to create LLI code. You do not need one to
write FRED applications.
Is understanding the LLI essential to your ability
to use FRED?
No. Understanding LLI will give you the power to use code written
in other languages like C, Pascal or compiled Basic as part of a FRED program.
It can be used to add functionality to Framework, however, if you need
more programming functionality in Framework call us, we may be able to
suggest some practical solutions.
How practical is using LLI program in Framework?
While any EXE file smaller then 64 KB can be loaded into Framework LLI programs must be written,
compiled and linked especially to be able to run in Framework. They need to include the LLI
Service Routines to communicate with Framework and use the DTK LLI Linked Library.
Since the code, in an EXE format, is relocated once upon loading and then managed and moved in memory
just like any other Framework object, it must follow the Small Memory Model (no segmentation)
hence it is limited to a total size of 64 KB for code, data, and stack combined.
However, data can be accessed from disk or frames and there is nothing (except system programming)
that prevents using OS and other resources such as communication with pre-loaded TSR, dealing
with protected or extended memory, or accessing hardware.
How can I start using LLI?
You will need to know something or be ready to learn about compiled languages and Assembly.
Just copy the Developer's Toolkit source code examples.
A library of LLI routines written in C and Assembly language with
ready to use MAKE files is included.