[comp.sys.ibm.pc] CLIPPER OVERLAY HELP

santol@cbnewsc.ATT.COM (shawn.r.antol) (02/07/90)

Question:    How do I make external clipper overlays?

Preliminary:	I have read the manuals on the "overlaying" 
and have tried many things.   None seem to work.   I have
created a ".LNK" file that I feed into plink86 (yuck!).  The
.LNK file contains the commands:
	BEGINAREA
		SECTION FILE xxx.ovl INTO a,b,c
		SECTION FILE yyy.ovl INTO c,d,e
	ENDAREA
I have compiled a,b,c,d,e and the .OBJ files are in the right
directory.   The question is:   What makes xxx.ovl and yyy.ovl?
Is it the compiler (I don't think so), is it plink86?  Is there
any way to use the MS-DOS linker instead of plink86?

Help!   

	Shawn Antol
	AT&T Bell Laboratories
	Naperville, IL, USA
	(708)-979-5622
	att!ihlpb!santol

rreiner@yunexus.UUCP (Richard Reiner) (02/11/90)

daniel.comeau@canremote.uucp (DANIEL COMEAU) writes:

>SA>Is there any way to use the MS-DOS linker instead of plink86?

>Yes, if you don't required overlays.  Many small applications don't
>need overlays.  The MS-DOS Linker is considerably faster than PLINK86.

MS Link has been able to do overlays for years.  It has the added
advantage of keeping the overlay code in the .exe file, rather than
littering your world with .ovl files.

-- 
Richard J. Reiner              rreiner@nexus.yorku.ca
BITNET: rreiner@yorkvm1.bitnet (also rreiner@vm1.yorku.ca)

william.pipher@canremote.uucp (WILLIAM PIPHER) (02/11/90)

To: ALL
santol@cbnewsc.ATT.COM asked recently:

>Question:    How do I make external clipper overlays?

>        BEGINAREA
>                SECTION FILE xxx.ovl INTO a,b,c
>                SECTION FILE yyy.ovl INTO c,d,e
>        ENDAREA

I'm not sure that your syntax is correct. A while ago I wrote an 
application that required internal overlays for efficient memory 
utilization at run-time.  I modified the link file so as to 
produce external overlays instead of internal, for  your 
edification.  I can't be sure that it is the best way to organize 
external overlays because it is designed to optimize for 
internals, but it nevertheless works.  Here it is by way of example: 

FI D:\clipobj\cupw, d:\clipobj\wmperror
MAP = d:\CLIPOBJ\cupw.map

OUTPUT E:\CUPW\TEST.EXE
LIB EXTEND.LIB, WMP_NET.LIB, OVERLAY.LIB
BEGIN
   SECTION INTO OVL1 FI d:\clipobj\change
   SECTION INTO OVL1 FI d:\clipobj\report
END
BEGIN
   SECTION INTO OVL2 FI d:\clipobj\menus
   SECTION INTO OVL2 FI d:\clipobj\exit
   SECTION INTO OVL2 FI d:\clipobj\sign_on
   SECTION INTO OVL2 FI d:\clipobj\sto
   SECTION INTO OVL2 FI d:\clipobj\reputil
   SECTION INTO OVL2 FI d:\clipobj\purgshow
   SECTION INTO OVL2 FI d:\clipobj\show
END
BEGIN
   SECTION INTO OVL3 FI d:\clipobj\lens
   SECTION INTO OVL3 FI d:\clipobj\lenr
   SECTION INTO OVL3 FI d:\clipobj\wrap
   SECTION INTO OVL3 FI d:\clipobj\compare
   SECTION INTO OVL3 FI d:\clipobj\status
   SECTION INTO OVL3 FI d:\clipobj\conf
END

The linker creates TEST.EXE and 3 overlay files named OVL1.OVL,
OVL2.OVL, OVL3.OVL.  I could have called them anything I liked.
Note that EXTEND.LIB and OVERLAY.LIB are linked in, but there is
no call to CLIPPER.LIB.

I organized the link file such that both:

a) each section within any one area is the same size (consult 
   your compiler output MEMORY.MAP) as each other section in the
   same area.  This maximizes memory use efficiency.

   AND

b) no one section, either directly or indirectly, ever calls another
   section within the SAME area.  Consult your flow charts.  Failure
   to abide by this condition will crash your program and probably 
   your system, guaranteed.

Do you really need external overlays?  You do if the size of your
executable file on disk is too large for easy handling i.e. larger
than 360K for DD disk storage.

But if the object of the overlays are to reduce run-time memory 
requirements only, then go with internal overlays.  They run faster
than the external kind, and are more reliable.  

The above link file is converted back to internal overlays by simply 
removing the "INTO OVLn" phrases from the list.

>The question is: What makes xxx.ovl and yyy.ovl?  Is it the compiler?

No.

>is it plink86? 

Yes.

>Is there any way to use the MS-DOS linker instead of plink86?

You cannot at this time produce overlaid CLIPPER applications unless
you link with PLINK.  Maybe the new CLIPPER, due out real soon now,
will provide a faster linker. The MS-DOS linker works fine on 
non-overlaid CLIPPER apps. 

Good luck -- it took me a week or 2 to figure this stuff out the 
first time, maybe you'll do better!
---
 ~ DeLuxe 1.11a18 #3744  william.pipher@canremote.uucp

cs4g6ag@maccs.dcss.mcmaster.ca (Stephen M. Dunn) (02/12/90)

In article <90021007304075@masnet.uucp> daniel.comeau@canremote.uucp (DANIEL COMEAU) writes:
$SA>Is there any way to use the MS-DOS linker instead of plink86?
$Yes, if you don't required overlays.  Many small applications don't
$need overlays.  The MS-DOS Linker is considerably faster than PLINK86.

   And if you have Turbo C 1.0, you can use TLINK and it's several
times faster again than the DOS linker.  I've found that TLINK V2.0
doesn't work reliably with Clipper, but V1.0 does.

-- 
Stephen M. Dunn                               cs4g6ag@maccs.dcss.mcmaster.ca
          <std_disclaimer.h> = "\nI'm only an undergraduate!!!\n";
****************************************************************************
               I Think I'm Going Bald - Caress of Steel, Rush

cs4g6ag@maccs.dcss.mcmaster.ca (Stephen M. Dunn) (02/12/90)

In article <7453@yunexus.UUCP> rreiner@yunexus.UUCP (Richard Reiner) writes:
$MS Link has been able to do overlays for years.  It has the added
$advantage of keeping the overlay code in the .exe file, rather than
$littering your world with .ovl files.

   PLINK will also do internal overlays if you want them.  However, there
may be valid reasons for not wanting them.  For example, let's say your
program's .EXE is 450K and you want to distribute it on 360K disks but
don't want to have to archive it and provide an unarchiving program.
If you can split it up into a 350K executable and one or more overlays,
you can now distribute it.

-- 
Stephen M. Dunn                               cs4g6ag@maccs.dcss.mcmaster.ca
          <std_disclaimer.h> = "\nI'm only an undergraduate!!!\n";
****************************************************************************
               I Think I'm Going Bald - Caress of Steel, Rush

daniel.comeau@canremote.uucp (DANIEL COMEAU) (02/14/90)

RR> MS Link has been able to do overlays for years.

When it comes to linking Clipper applications, the Clipper Manual
states:

  Note: Overlays cannot be constructed with the DOS Linker.
  To construct overlays, use PLINK86-Plus.

                        p.7-7 Clipper Summer '87 Manual

RR> It has the added advantage of keeping the overlay code in the .exe
RR> file, rather than littering your world with .ovl files.

PLINK86-Plus has no problems with generating internal overlays.

Daniel Comeau
---
 * Via Qwikmail 2.02a.
 ~ RNet 1.04A: Synapse BBS - Gatineau PQ - (819) 561-5268

daniel.comeau@canremote.uucp (DANIEL COMEAU) (03/14/90)

SA>The question is:   What makes xxx.ovl and yyy.ovl?
SA>Is it the compiler (I don't think so), is it plink86?

Yes, PLINK86 (the overlay linker) makes the OVL (overlay) files.

SA>Is there any way to use the MS-DOS linker instead of plink86?

Yes, if you don't required overlays.  Many small applications don't
need overlays.  The MS-DOS Linker is considerably faster than PLINK86.

Dan
---
 * Via Qwikmail 2.02a.
 ~ RNet 1.04A: Synapse BBS - Gatineau PQ - (819) 561-5268