TIPS

* Turn-off or reboot(CTRL-ALT-DEL/CTRL-ALT-D) at any time, except during disk 
writes.  Writes are not cached unless you call CacheWrites(). 

* If you make changes to LoseThos files in your HOME directory, generally you 
reboot to make them take effect.  (You don't compile anything.)  You should have 
two LoseThos partitions on your hard drive because a syntax error in a start-up 
file will make the partition unbootable.  Boot to the second partition or a 
recovery CD and fix it, or boot to a standard LoseThos CD-ROM and use Mount() to 
mount your hard drive.

* I copy my files to a mirrored identical partition, periodically with CopyTree(
) commands in scripts.  I do merge commands with a menu entry like this:
M(\"D:/LT/*\",\"E:/LT/*\",\"+r+d\"); to check my changes.

* Press the WINDOW's key at the cmd line to access your personal menu.  Place 
macros there with CTRL-L, or icon-like pictures with CTRL-R.  Use the Pop-Up 
option on macros to Spawn() a task to run a file.  It dies when it is finished.  
This returns mem to the system.  Be sure to press CTRL-S to save your macro/menu 
area after making changes.

* You can adjust the num of answers displayed by setting Fs->answers_displayed 
to a num from 0-3 in your HOME/UserStartUp.CPZ file.

* You can use ans0,ans1, etc. in cmd line expressions.  They hold results from 
the last cmd line operations.  You can use the cmd prompt as a calculator by 
just entering expressions like 1+2*3;.  F8 results can be accessed with ansf0 or 
ansf1.

* Use the PullDown menu at the top of the screen to learn commands, like for 
games.

* You can adjust the mouse movement rate by setting global variables in your 
start-up file.  See mouse_scale.

* If your mouse wheel doesn't work, you might try an actual PS/2 mouse.  My new 
machine does not have PS/2 ports.

* You can set your local time zone by setting the local_time_offset global 
variable in a start-up file.  It's units are LTDATE_FREQ.  See local time.

* See Key Map for a list of defined keys.  Define your own keys in MyPutKey().  
See ::/LT/Doc/KeyBoard.TXZ.

* Press CTRL-C in the editor to autoindent a function.  If it's not a static 
module, say YES to recompile.  Otherwise, say NO and it will use the compiler 
info collected when it was most recently compiled.  The sole purpose of the $PJ
,"",""$  (project) dollar sign cmd is to help autoindent.  This can be used to 
test if a file will compile.  (Note: CTRL-ALT-C breaks a program.)

* While developing applications, keeping everything in one source file allows 
you to use the CTRL-C compile check/autoindent feature.  Alternatively, you can 
#include the files in a project a file depends on before entering the editor and 
CTRL-C it.

* You can use filter_lines in the editor text search form (CTRL-F) to 
temporarily display just lines near each match.  A value of filter lines set to 
5 will display lines within 5 lines of matches.  Then, you can do another find 
to a different string and achieve a AND search.  When finished, press ESC.
 
* You can recompile and reinstall the kernel with InstallBoot().  You'll 
probably want to make a function for recompiling that uses the Auto() function 
to answer the config questions.  See ::/LT/Demo/AcctExample/Distribute.APZ.

* You can disable WORDSTAT commenting-out WsInit() and the WordStat() in 
HOME/Adam3.APZ.

* You can reset MultiCore CPU's if they get hung with MPStart().  HD Audio will 
get screwed-up, however.

* Boolean expressions not in if statements don't have short circuit logic and 
are compiled inefficiently.

* You can use progress1-progress4 in your programs for whatever you like.  
They're just global variables that are shown on the wallpaper.  The original 
intent was to indicate how far along operations were.  There's no coordination, 
so different apps might interfere.  I use them most for debugging--just values 
easily viewed.  See ::/LT/Demo/Progress.CPZ.

* Use LtfMax() to adjust the size of the cmd line buf.  It counts Ltf entries, 
not lines.

* Many data structures have a user_data member.  Those are available for you to 
store a data item, for convenience.  TaskStruct, LtfEntry and LTDirEntry have 
them.  You shouldn't encounter conflicts with LoseThos using them.

* You can reduce mem usage by making a smaller disk cache when you recompile the 
kernel; disabling WORDSTAT; Specifying smaller stack sizes when doing Spawn(), 
changing DEFAULT_STK, and using LtfMax() to reduce the cmd line buffer size.

* Filenames ending in Z will be automatically compressed and uncompressed when 
read or written.  The compression method is not supported by other operating 
systems.  You can store files uncompressed by Move()ing them to a filename not 
ending in Z.  See ::/LT/Doc/LTZ.TXZ if you want to uncompress while in WINDOWS.

* MergeChk() can be used to see what's changed.  The +d flag will show 
differences of files which have changed and allow you to merge code.  (The +r 
flag will recurse.)

* There is a utility LinkChk() which will check for broken links in 
documentation.

* You can use OptOn(OPTf_PAREN_WARN) to find unnecessary parentheses in code.

* Use Plain() to edit a plain text file.  You'll need this if your file has $ 's
.  Use the ::/LT/Opt/Dollar.APZ utility to strip dollar signs in text files.

* Use Silent() to disable screen text output.

* Use IOSnd() to disable noise from disk access.

* Use CTRL-ALT-Z to zoom-in and CTRL-ALT-SHIFT-Z to zoom-out.  You can scroll by 
moving to the edge of the window.  Set gr_continuous_scroll to TRUE if you want. 

* There are handy functions--F(),R(),FD() and RD() which are defined in 
HOME/UserStartUp.CPZ.  You're encouraged to change them, since they're in acct 
files.  They will perform find-and-replace operations accross multiple files.  
The +l flag is particularly useful since it limits to whole labels.  You are 
encouraged to add or modify handy wrapper functions to make cmd line operations 
easier.

* When using Grep() while modifying code, work from the bottom-up so that line 
numbers are correct.  If you work top-down, then inserting or deleting lines 
causes the lower file links will be incorrect.

* You can save files after making changes, anytime you are within the editor, 
like when viewing help/macro files.  CTRL-A saves as, CTRL-S saves with the same 
name in the scrolling title bar.  Hitting ESC will exit and save.  (CTRL-Q will 
exit and not save).  You can save the cmd line window to a file, too, since 
you're actually in the editor when you're at the cmd line.

* When using CTRL-L to insert links in documents, you can usually leave the Tag 
Text blank and it will be filled-in automatically based on other entries.

* There is a feature of the precompiler that allows code to be executed in the 
middle of compilation and data inserted into the compilation stream.  Click here 
for an example: #exe {.

* If you output to the cmd line and wish to allow users to scroll around and 
view data, you can use View().

* Use View() in Pop-up macros to linger until the user presses ESC or CTRL-Q.

* You can access the word under the cursor at ws_cur_word, but you should 
probably turn-off preemption or interrupts momentarily to copy it.

* You can reactivate WORDSTAT after closing it by pressing CTRL-FUNCTION KEY.

* If you use consistent variable names for items of different classes, you'll 
usually be able to use WORDSTAT's autocomplete for member variables.  I always 
use lx for LexStruct ptrs; l for Ltf ptrs; ll or cl for LtfEntry ptrs, etc.


* Preempt() is used to keep a task from being interrupted and swapped-out.  It 
has a similar effect to turning-off interrupts.  Each task has it's own 
preemption control.  A task with preemption turned-off can voluntarily Yield() 
with preemption off.

* You can set a color for different drives with SetDriveTextAttr().  Place calls 
to this in HOME/Adam3.APZ.

* If you toggle to plain text when you are working with graphics in a document, 
you can add duplicate entries for pictures by entering a PI cmd with the same 
num.

* If you toggle to plain text when working with graphics, you can add a str to 
the $PI$   entry to keep track of it.  Try $PI,"<2>",2$   where '2' is the 
picture num.

* I use spaces-to-tab operations on all my src files to keep them small.  You 
have to be careful, though, because spaces in strings will be converted.  I use 
SHIFT-SPACE ' ' in such cases.  See S2T() for spaces-to-tabs.

* You can edit an existing Graphic Element by putting the cursor on it and 
pressing CTRL-R.

* When editing a Graphic Element, you can cut and paste the elements in the text 
list window.

* I recommend keeping GrElems in vector format until you are done creating them, 
so you can edit the control points.  Then, convert them to bitmaps, so the flood 
fills work well.  If you are doing interpolation, however, they must be vector.

* You can customize the wallpaper.  See ::/LT/Demo/Graphics/MyWallPaper.APZ.

* You can adjust the screen refresh rate (software).  It is automatically 
adjusted based on load.  The range is win_min_refresh,win_max_refresh.

* You can make a RAM disk and it will not be reformatted if you reboot with 
Boot().  You can even boot to a RAM disk.  See Install2RAMDrive() and 
Boot2RAMDrive().

* It is slightly more efficient to return an 8-byte value from a function.  That 
is why the standard functions do so.

* A try{} catch{} in a function will cause all variables to be non-register.

* A usage of a int byte array, i.u1[3], for example, will force a variable 
non-register.

* You can delete the HOME/Registry.CPZ file.  The policy is that deleting it 
will restore defaults.  It should plain text, if you want to edit it.  Be 
careful of tree indentations.

* Study ::/LT/Opt/MemRep.APZ and WallPaper() to learn how the system resources 
are put together.

* The editor's select-text mechanism allows for disjoint portions of selected 
text.  This is a feature, not a bug -- you can cut-and-paste disjoint text.

* time_stamp_freq is continuously calibrated, so be careful because expressions 
involving it might decrease.  Take a snap-shot, like this: timeout=GetTimeStamp+
time_stamp_freq x seconds; and compare against GetTimeStamp().

* Use HeapLog() and HeapLogRep() to find leaks.  Don't be confused by Ltf 
allocations.  Those are generated when text is written to the cmd line buffer.

* For advanced heap debugging, play with _CFG_HEAP_DBG.  You're on your own.