Sim, mas com blinker e overlay fica até pior.
BLINKER: tem a do Clipper e a versão em separado
PLINK86: tem a do Clipper e a versão em separado
Os recursos são diferentes, é lógico.
O RTLINK faz overlay automática, o PLINK86 e BLINKER fazem manualmente.
OVL era apenas a questão do arquivo em separado, não significa que está ou não usando overlay.
No caso de overlay manual, dá pra retirar partes do Clipper também pra overlay.
Necessita de um pequeno estudo sobre o que pode ou não ficar em overlay.
Também dá pra otimizar os fontes, transformando o máximo de variáveis pra LOCAL, porque PUBLIC e PRIVATE utilizam a tabela geral, "fora da overlay".
Tambem transformando funções em STATIC, pra serem carregadas somente junto com o módulo.
No RTLInk, os módulos praticamente viram overlay automaticamente.
Neste caso, os módulos devem ser o menor possiveis, porque são reservadas áreas de memória de tamanho suficiente pra carregar um módulo.
(No caso de overlays em geral, não apenas rtlink).
Ao compilar usando CLP, juntando vários fontes, o tamanho total para o CLP será reservado na memória, por isso o melhor é compilando cada fonte em separado.
Mas é tudo muito trabalho pra pouca coisa, comparado ao blinker.
Pra que brigar por talvez uns míseros 100kb, se com blinker você apenas usa e libera 65.000kb ?
Por mais que seja feita otimização, overlay, etc. nada supera o uso de blinker em modo extendido.
Overlay vai ajudar por determinado tempo, depois vai precisar de revisões, e revisões e revisões....
A propaganda do Blinker era verdadeira: "use Blinker e esqueça problemas de memória".
Se dá pra usar isto e ter 65.000kb de memória livre:
Pra que arriscar com isto, e ter só uns 200kb a mais:
Código: Selecionar todos
#
# CL520MAX.LNK - 03/22/93 Version 1.0
#
# Blinker link script for CA-Clipper 5.2
#
# This script may help with very tight memory situations, and when using the
# Clipper debugger (CLD) with large programs.
#
# For ease of use this script should be stored in your library directory,
# (the directory pointed to by the LIB environment variable), which will allow
# Blinker to find the script without you having to specify a full path.
#
# This script MUST be included outside of any BEGINAREA / ENDAREA commands
# and after all libraries except the RDDs and LLIBCA if it is being used.
#
# example:
#
# FILE one
# BEGINAREA
# FILE two
# FILE three
# FILE four
# ENDAREA
# @CL520MAX
# LIB DBFCDX
# LIB LLIBCA # (if used)
#
# Modules within CLIPPER.LIB are, by their nature, called very frequently
# within any CLIPPER application. Therefore, overlaying these routines
# will almost certainly result in some performance degradation, which can
# be minimised by increasing the OVERLAY OPSIZE.
#
# You may also wish to consider using BLINKER OVERLAY PAGEFRAME ON to expand
# the overlay pool to 64K, and remove it from conventional memory, to both
# increase available memory and performance.
#
# ie BLINKER OVERLAY PAGEFRAME ON
#
# Blinker 2.0+ users will find that specifying an overlay cache will increase
# execution speed significantly.
#
# eg BLINKER CACHE XMS 128
# BLINKER CACHE EMS 128
#
# The amount of performance degradation will vary from application to
# application, - it may be necessary to modify this script by commenting
# out some MODULE statements to increase performance to an acceptable level
# in some areas.
#
# Please note that some third party libraries may replace or modify routines
# in the CLIPPER library, so that they are no longer overlayable. The link
# time command BLINKER MESSAGE DUPLICATES may help in determining such
# conflicts or replacements.
#
#
# mod tbrowse0 # Uncomment these three lines
# mod tbrowse1 # to speed up TBROWSE by forcing
# mod linelen # it into the root.
#
lib clipper
beginarea
mod ACCEPT # .c
mod ACOPY # .c
mod ADEL # .c
mod AEVAL # .c
mod AINS # .c
mod APPEXIT # .c
mod APPINIT # .c
mod ATAIL # .c
mod BOX # .c
mod COLOR # .c
mod DATE # .c
mod DBCMD0 # .c
mod DBCMD1 # .c
mod DBCMD2 # .c
mod DBCMD3 # .c
mod DBCMD4 # .c
mod DBCMD5 # .c
mod DBCREATE # .c
mod DBF0 # .c
mod DBF1 # .c
mod DBFDYN # .asm
mod DBGAPI # .c
mod DBGSHADO # .c
mod DBJUNCT # .c
mod DBNUBS # .asm
mod DBSTRUCT # .c
mod DELIMDYN # .asm
mod DISKIO # .c
mod DLM0 # .c
mod DLM1 # .c
mod EMMALLOC # .asm
mod EMMCOUNT # .asm
mod EMMFREE # .asm
mod EMMINST # .asm
mod EMMPAGE # .asm
mod EMMREALL # .asm
mod EMMSTAT # .asm
mod EMMVERS # .asm
mod ERRORSYS # Clipper
mod ERRSYS0 # .c
# mod ERRSYS1 # .c (Overlay if not using PS ERROR)
mod EXACTCMP # .c
mod FGET # .c
mod FIELD # .c
mod FILESYS # .asm
mod GETENV # .c
mod GETS0 # .c
mod GETS1 # .c
mod GETS2 # .c
mod INITEXIT # .c
mod INSTD # .asm
mod JOINLIST # .c
mod LUPDATE # .c
mod MAIN # .c
mod MAXROW # .c
mod MEMORY # .c
mod MRELEASE # .c
mod MSAVE # .c
mod NET # .c
mod OLDBOX # .c
mod OLDCLEAR # .c
mod OSDATE # .asm
mod OUTSTD # .c
mod PHILES # .c
mod PICT # .c
mod RDDORD # .c
mod RDDSVR # .c
mod RUN # .c
mod SAVEREST # .c
mod SCROLL # .c
mod SDF0 # .c
mod SDF1 # .c
mod SDFDYN # .asm
mod SEND # .c
mod SET # .c
mod SETCURS # .c
mod SORTBLOC # .c
mod SORTOF # .c
mod SQUAWK # .asm
mod STARTSYM # .asm
mod TB # .c
mod TSUPPORT # .c
# mod TXOPEN # .c (Overlay if not using NETLIB)
mod VERSION # .c
mod WORKAREA # .c
mod _AFIELDS # Clipper
mod _APPINI # Clipper
mod _ATPROMP # Clipper
mod _CENTURY # Clipper
mod _DBCOPY # Clipper
mod _DBDELIM # Clipper
mod _DBF # Clipper
mod _DBFLIST # Clipper
mod _DBGBROW # Clipper
mod _DBGHELP # Clipper
mod _DBGINSP # Clipper
mod _DBGMENU # Clipper
mod _DBJOIN # Clipper
mod _DBLIST # Clipper
mod _DBLOCAT # Clipper
mod _DBSDF # Clipper
mod _DBSORT # Clipper
mod _DBSTRUX # Clipper
mod _DBTOTAL # Clipper
mod _DBUPDAT # Clipper
mod _DELIM # Clipper
mod _ERRSYS # Clipper
mod _FLEDIT # Clipper
mod _GETMSG # Clipper
mod _GETSYS # Clipper
mod _HELPKEY # Clipper
mod _INPUT # Clipper
mod _RDDORD # Clipper
mod _READVAR # Clipper
mod _SAVESCR # Clipper
mod _SETFUNC # Clipper
mod _SETTA # Clipper
mod _TEXT # Clipper
mod _WAIT # Clipper
lib extend
endarea
lib terminal
lib dbfntx