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.