وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

وو

وحید آنلاین . آرشیو وبلاگ وحیدمی دات آی آر . شرکت بیان. vahidmy.blog.ir

Instant BookMark


Instant BookMark   .



[F11] [F12]


At any time, when you depress [F11], the current writing Position is saved in an internal Variable. Once this position is saved, you may move where you want in your Source. Then depressing [F12] will restore the Position saved by [F11]. Once back to this recorded Position, if you don't move and just depress [F12] again, the Editor will get back to the Position where you first ran [F12], enabling you with quick On-Off moves.


This feature is 'One Shot' (you can save only one given Position, like a single record BookMark), and it has no relationship with any of the other Source displacements features.


~~~~~~~










BookMarks


BookMarks   ..



When Double-Clicking upon a Label (either Data or Code, either Main Label or Local_Symbol), the floating Menu gets one more option for [BookMark]ing the Label. If this option is validated, the chosen Label is inserted at the top of the TreeView ListBox (if the Tree is dead, it is then activated).


In case the selected Label is already available in the BookMark List, the added Menu option becomes [UnBookMark], and as you might guess, may be used for retrieving the Label from the list.


When compiling a file with an active BookMark List, a file is created aside the Application (SameName.BKM), that will be reloaded at the next session. You can delete this file if you do not want to recover the BookMarks further on.


If a selected Label is a Local_Symbol, the previous Main Label is pasted before the label, in order to discriminate between several identical local names.


If all of this is not yet enough and that you want to set up some BookMark in a flow of instructions where there is no Label to BookMark, just write some dummy ''@BK:'', for example, and make it a BookMark. 


~~~~~~~










TreeView


TreeView   ..



For moving across your Source, added to the Right_Click feature, there is a 'Tree View' menu option. Choosing it, opens a Dialog, showing you a tree view list of your main labels. The tree list is built from two roots: 'MainWindowProc:' and 'Main:', each time you click on [Tree].


Actually, this feature poorly applies on such HLL sources as given in Beginners'tut 5, because the 'CALL' mnemonics are not visible in the source... May be later.


If your source is well written, with use of local labels inside routines and that routines are run by CALLs (and not by JMPs -in spagetti style-), tree view will give you a very good image of your source structure.


The Two flags, you can set in the configuration Tab, give you customized listings. First one adds what I call 'Orphan Labels' (the labels that are not properly called). When possible, the tree may add new branchings from an orphan root.


The other flag may be used for getting a full / simplified tree: Let us suppose that a routine is to be called many times in your source. The default tree will not list all the double calls (inside one same routine). You may check / uncheck for a 'First call only' listing. The tree-view building, when this flag is unchecked, includes tests for avoiding infinite loops along re-entrant imbricated source routines.


Of course, clicking on a tree item causes a jump to its declaration in the editor.


All Tree-View moves are recorded also in the rotary table with edition Right-Clicks.


In actual state, the only routines not pointed out by the Tree-View are just those called by the SetWindowLong Api and the ones reached by JMPs. Even the special CallBack Procedures of Dialog Boxes (either by direct calls or by 'api' macro evocations) are also listed in.


The Tree is re-built each time you Click upon [Tree] Menu item, without the Tree Dialog running , not when the Dialog is minimized. If you write a new Code Label, it will not appear in the Tree until you close the Dialog and once again Click again upon [Tree] (because it would be a bit too slow on older computers when running huge Sources).


An added Flag, in the [Configuration] tab, allows you to define if the Tree Dialog will (or not) auto-minimize on user edition.


~~~~~~~










Double Left-Click


Double Left-Click   ..



See also 'Double-Click' on text or 'Right-Click' on a selected text block. It opens a PopUp menu for Copying / Searching Up/Down / fromTop / ... to be continued.


If the selection is a Macro Evocation, the floating Menu offers one more option for [Unfold]ing. This is to say that, if you select this option, a Message Box will show you what the Macro Parser does with your statement. More details in Macros.


If the selection is a Code Label, an added option is given for [BookMark]ing (see BookMarks down here).


If the selection is a Number, an option is added to view the various Numbers Formats.


See also Mouse_BreakPoints (Double-Left-Click in the left margin).


~~~~~~~










Right Click


Right Click   ..



Right-Click is the most powerful feature you could ever dream of for moving across your source, back and forth, and for retrieving various kinds of information:


Right-Click for moving across your sources: Right clicking on any defined symbolic name produces a jump to the edition of the symbol's declaration. This is to say for example, if you Right-Click on 'MyRoutine' in 'call MyRoutine', the editing function jumps to 'MyRoutine:' Declaration. This works for Macro, Equates, Data Labels, main Code Labels. Right clicking again on a blank area of the text window returns the caret to the original location in the source. All moves are stored in a rotary table. You can go back and forth too, with the '<<<<' and '>>>>' menu items, like in a Html editor (Sources are simple ASCII).


Right Click on a Win Equate shows its value, (if written upper case).


Right Click on a mnemonic opens a Mnemonics List, or B_U_Asm [Mnemonics]/[Selected Mnemonic], if you have it installed.


Right Click on an Api call shows a DialogBox with the expected parameters and the DLL name.


Right Click on a Double-quote, at the begining of a multi-lines text Chunk, selects all of the downward text (same for '[', which selects all of a Data Block, down to the next ']' ). This is useful for selecting wide chunks of data at once without seemingly endless mouse scrolling.


Right Click on a Tag Statement will run whatever associated action. Description in Tag .


Right Click on a selected block greater than 50 Characters will append, in the associated Float menu, an Item for a quick and simplified ''Replace All'' feature, that only applies the usual Find-Replace method to the selection only.



Right Click is really the best feature of this Editor. It saves an important amount of development time. This feature alone would be a massive argument for mono-files programming. When working on the source of a Real life Application, the main time consuming problem, once the Source has grown up to some significant size, is to point out where the things are inside.


With multi-included Files, the problem is often the same -if not worse-, because you will not remember, after some time in which file you stored this or that Routine. 


With the Right-Click Search, you will point them out in one or two second(s) even if you have forgotten their names (!!!). You can re-read the dependancy Routines very easily; you can verify that a new name is not already in use or that your last entered typing conforms to its declaration in Click times, and so on...


The Editor, when opening a file, tries first to locate at ''MainWindowProc:''. If it fails, it try tries to locate at ''Main:'. If it fails again, it locates to the top. So, in usual cases, it locates at ''MainWindowProc'', when opening your file, and this location is used as a base point for the the recording of moves. As most of your Routines are called from there, moving across the Source organization is made really easy and fast.


~~~~~~~










Scroll Bar


Scroll Bar   ..



Why no ScrollBar ?   Its by default?


This editor is an attempt for avoiding scroll bars. The Source Editor is designed to manage huge files, and, on huge files, scroll bars are of little help. They make the screen smaller, too. So, I have searched for another way for moving inside text.


There are now 2 user-Flags inside the [Configuration] Tabbed Dialog that allow you to run RosAsm with a Vertical Scroll Bar, and with a Status Bar. You should avoid these no use, time and space consuming features. If you really feel in need of a Scroll Bar, this is because you do not yet understand how to use the Editor's unique Right-Click and other advanced features.


Several features will save much of your development time, compared to scrollings or the 'Find/Replace box':


Right_Click and Double_Left_Click, mainly.


~~~~~~~










Errors Manager


Errors Manager ..



RosAsm offers three unified methods for pointing out your typing errors. All three features achieve in a selected Block, shown directly in your Source.



Write-Time errors detection (Temporarily disabled. Will be reviewed and extended later)


This feature is only implemented as a Try&See attempt, that will not be completed soon, a coming attraction because of time issues in the other Developments.


You can set it on, in the Configuration_Tab with the Write Time errors Detection Radio Button.


In its actual Try&See implementation, it only checks for valid Mnemonics and/or valid Macros Evocation.



Compile-Time errors detection


This error detection points you to all syntax errors in your Source. It is based on a case by case report, coming out under an accurate form, telling you explicitly and exactly what is  wrong with your source code statement.



Run-Time errors detection


The RosAsm Debugger, that is fired silently each time you hit [F6] or Click upon the Run Item of the Main Compile Menu, catching errors  to save your time .


~~~~~~~










Editor Keys List


Editor Keys List   .



Keyboard Shortcut Functions / Editor Special Features Below... 

 

[Ctrl][PgDn] > Jumps to end of Source

[Ctrl][PgUp] > Jumps to To of Source

[Ctrl][C] > Copy Selection to ClipBoard

[Ctrl][Ins] > Copy Selection to ClipBoard

[Ctrl][X] > Delete Selection (and Copy Selection to ClipBoard)

[Ctrl][Back] > Delete Selection (and Copy Selection to ClipBoard)

[Ctrl][D] >    Delete Selection (and do not Copy Selection to ClipBoard)

[Ctrl][Del] >    Delete Selection (and do not Copy Selection to ClipBoard)

[Ctrl][Space] >    Code_Completion


[Ctrl][V] > Paste ClipBord

[Shift][Del] > Delete Selected Block

[Shift][Ins] > Paste ClipBoard

[Ctrl][Z] > Undo

[Ctrl][Shift][Z] > Redo

[Ctrl][S] > Saves the Source.asm file on the fly. 

[Ctrl][K] > BackUp the PE on the fly. 

[Ctrl][Y] > Delete the whole Caret Line, if  'On' in [Configuration]

[Ctrl][Arrow Keys] > Words jumps

[Shift][Arrow Keys] > Selection

[Shift][BackSpace] > Delete previous Chars up to Auto-Indent Alignment.


[F1] > Runs B_U_Asm

[F2] > User defined Launcher

[F3] > Search Next

[F4] > Substitute to Double-Left-Click in the margin for Mouse_BreakPoints

[F5] > Compile

[F6] > Run

[F8] > Draw a line

[F9] > Toggles the Debugger Mem-View On / Off

[F11] > Saves the current pos for F12 switch

[F12] > Switches on and off the F11 saved Pos


With Block Selection holding full Lines:


[Tab] > Indent encrease

[Shift][Tab] > Indent decrease


(Both with respect of Labels at first row, if any).



The name is ''Source Editor'' not ''Text Editor''. I mean that you should consider some unusual text features from the point of view of the specific requirements for Sources editing, the first one being security. For example, this Editor has no automatic Blocks replacement feature (if you select a Block and hit [Del] or [BackSpace], the block will not be erased. 


The Caret management, too, is completely different from the usual one under Windows: Under Windows, the Caret is Text dependent. With such Caret behavior, the control of your own input may easily be lost. This is why I implemented an old fashioned screen dependent Caret management, which is much more secure. Also, the first [PgUp] / [PgDn] hit have as its first effect to move the Cursor to the top or bottom of the actual page before entering in the real pages up or down mode.


~~~~~~~










Configuration Tab


Configuration Tab .



Tree View


List orphans. If some Routines Labels are never called in your source, they do not appear in the Tree output. If this Flag is on, these orphean Labels are listed at the end of the Tree.


First call only. A complete Tree of a huge Source may be painful to read. When this Flag is on, Labels called from several places are provided only for the first encountered call.


Auto hide on source edition. When this Flag is on, as soon as your Source gets the user input focus, the Tree view is minimized, in order to free your work space.


Rebuild after each Compilation. In normal mode (Flag off), if you want to rebuild a fresh new Tree View List, you have to close it and to select the [Tree View] Menu option. With this Flag on, this is done silently each time you recompile your Application.



Sources Editor


Auto-Indent on Carriage Return. Sets the Auto-Indentation feature on.


Load last used File on Start-Up. As it says. Default is off.


Tab is........... Definition of the number of spaces to be used instead of Tab. 4 is recommended.


Blinking Cursor. By default, The Source Editor Cursor is static. You can have it blinking and define the Blinking time.


BackUp Files Max. Defines the number of Files you wish to have saved into your /Path/BackUp Directory, when hitting [Ctrl][K].


Vertical ScrollBar. Implement a Scroll Bar.


With Security. Send a MessageBox if you close RosAsm after having modified an Application without compiling it.


With Code Completion. Enables the Code Completions features.


With Write Time error Detection. Partial Try&See Implementation: Actually simply check for the Instruction being a correct Mnemonic or a correct Macro Evocation.


With Sounds. Beeps on several actions.


Fonts. Definition of the Source Editor Font.



Bad Habits


[Ctrl][Y]. Deletes the whole Line, in the Source Editor when you hit these Keys.


Selections Auto-Deletions. Deletes selected Block, in the Sources Editor in the same way as in Text Editors.



Colors


Defines the Colors to be used in the Source Editor, for BackGround, Statements, Comments, Text, Brackets and Controls BackGround.



Help Files


You provide here the Paths to Help Files referenced in the Main Menu [Help] Option.



Companion Files


Calc. Definition of the Path to the Calculator you want to be executed from the [Tool] Menu Option.


Clip. Path to your Clip.txt File (for the Snippets Manager).


B_U_Asm. Definition of the Path to the Main RosASm Help File.


[F2] runs.... You definition here whatever File you want to be run when hitting [F2], in the IDE.


Browse.... Definition of the Path to RosAsm Equates.equ File. All other RosAsm Files (for Structure, Api,...) should be saved in this same Directory).



User Menu


You may add a private Main Menu Item here. In the Edit Boxes, you input the name(s) you want to insert in this sub Menu. Then you Click on [File >>> ...] to select what external File to run on the according Menu Selection.


The Buttons with a cross, at right are for deleting Items.


This feature is not very robust, when editing. Do it clean and in the proper order. If you mess it all up, delete everything and restart fresh.



Pos (Position and size of RosAsm Window)


Get Window Pos. This action reads the actual Position of the RosAsm Window (you just move/resize the RosAsm Window  where you want it to be on start-up, and Click here).


Edit Boxes. Manual input of the Window Coordinates.


Set Window Pos. Sets the Window Position depending on Edit Boxes contents.


Save Pos on Closure. When this Flag is on, each time you close RosAsm, the default Start-Up position is modified and saved accordingly.



~~~~~~~

Other Win32 able Assemblers

     

Other Win32 able Assemblers  ...




-For 'multi-purpose' programming, NASM is the Assembler of choice. Free open sources (GPLed), basic syntax close to RosAsm's (in fact, the reverse is true: 

I implemented RosAsm syntax as close as possible to NASM's...). 

But written in C (!!! Joke of the day... Ha Ha !) ???).


http://nasm.dhs.org/



FASM is a simple, small and fast, Multi-Purpose Assembler (freeware, with Sources provided, but not GPLed). It  is auto-compilable and can actually output binaries for Dos, Win32, Linux and any other x86 OS (example, MenuetOS). Very interesting literal approach (highly flexible, true Low Level Assembler).


Available at: < http://flatassembler.net/ >



Jeremy Gordon:


http://www.godevtool.com/index.html


He recently released an interesting Assembler: GoAsm, also specifically designed for Win32 Programming. As this author previously released several other tools, including a good Debugger, a well known Resources Editor and an effective Linker, the offer is really impressive. Not GPLed. Last time I gave it a try, I found it to be faster than RosAsm (the Macros System is -was...- a bit 'light'). Shareware, for the full Intructions Set.

~~~~~~~