home *** CD-ROM | disk | FTP | other *** search
- ╓─────┐ ╓─┐ ╓─┐ ╥──┐ ╓─╥─┐ ╥─┐ ╥ ╥──┐ ╥──┐
- ║ │ ╙─┐ ╙─┐ ╟─ ║ ║ │ ╟─┴┐ ║ ╟─ ╟─┬┘
- ╟─────┤ ╙──┘ ╙──┘ ╨──┘ ╨ ╨ ┴ ╨──┘ ╨──┘ ╨──┘ ╨ ┴
- ║ │ ╥ ╓──┐ ╥─┐ ╓──┐ ╥──┐ ╓──┐ ╓─╥─┐ ╓──┐ ╥──┐ ╥ ┬
- ╨ ┴ ║ ╟──┤ ╟─┴┐ ║ │ ╟─┬┘ ╟──┤ ║ ║ │ ╟─┬┘ ╙──┤
- ║ ╨ ┴ ╨──┘ ╙──┘ ╨ ┴ ╨ ┴ ╨ ╙──┘ ╨ ┴ ╙──┘
- ║ (c) 1994-1998 Kurt Inge Groenbech
- ╨─────┘ Assembler coders' first choice IDE?
-
- ───────────────────────────────┤ Version 1.3 ├─────────────────────────────────
- R E F E R E N C E M A N U A L
- ───────────────────────────────────────────────────────────────────────────────
-
- Table of Contents:
-
- Chapter 0 - Legal stuff
- 0.1 - Disclaimer
- 0.2 - Distribution
- 0.3 - Acknowledgements
- Chapter 1 - Introduction
- 1.1 - About this reference manual
- 1.2 - New version release notes!!
- Chapter 2 - Installation
- Chapter 3 - Command line switches
- Chapter 4 - Features
- 4.1 - Summary
- 4.2 - Procedure/macro Worksheet
- 4.3 - Heuristic Scan
- 4.4 - Block comment/uncomment
- 4.5 - Label Jumps
- 4.6 - Opcode help
- 4.7 - Tab characters
- 4.8 - Bookmarks
- 4.9 - Instruction Scheduler
- Chapter 5 - Project Manager
- 5.1 - What is it?
- 5.2 - Creating a project file
- 5.3 - Making a project
- Chapter 6 - FAQ and Known bugs
- 6.1 - Known bugs
- 6.2 - Alab hangs when I open a window!
- 6.3 - How can I get Alab to work properly on a network?
- Chapter 7 - People involved
- 7.1 - Public domain software
- 7.2 - Beta testers
- Chapter 8 - The author/contacting
- ───────────────────────────────────────────────────────────────────────────────
- Chapter 0 - Legal stuff
- =======================
-
- 0.1 - Disclaimer
- ----------------
-
- Assembler Laboratory is provided "as is" and without any warranty.
- To the extent premitted under applicable law, I disclaim all warranties,
- express or implied, including but not limited to, any implied warranty
- of merchantability or fitness for a particular purpose. Specifically, I
- make no representation or warranty that the software is fit for any
- particular purpose.
-
- I shall not be liable for any damages resulting from the use of this
- software, including but not limited to, loss of profit, data or use of
- the software, or indirect, special, incidental or consequential damages
- or other similar claims, even if I has been specifically advised of the
- possibility of such damages.
-
- NB! From this version and on, Alab is distributed as FREEWARE. This is
- because 1) i'm almost not earning anything at all on it anyway (so much
- work on both ends for so little), and 2) i will not work on Alab any more,
- so there will not be much support and upgrades.
-
- I hope that those who have already registered themselves can understand,
- and not have the feeling that they paid for nothing - 1.3 wouldn't be
- here at all if it weren't for your support in the 2 first releases.
-
- 0.2 - Distribution
- ------------------
-
- Distribution of Alab must happen under these conditions:
-
- - Alab should be distributed in its original archive.
- (the ZIP file YOU receive, is the ZIP file YOU should distribute)
- If impossible, the ZIP file you distribute must contain all files
- which belongs to Alab that you received.
-
- - No money can be charged for it, EXCEPT a little amount for the
- disk or similar.
-
- 0.3 - Acknowledgements
- ----------------------
-
- Many hours have gone into the development of this product, and I have
- got many a useful idea from various beta testers. Especially I would like
- to thank the following people for extensive betatesting:
-
- - Tor-Helge Skei (Axon/ Xenon), Main beta tester
- - Kovács Balázs (Joe Forster/ STA), also main tester
-
- (hmm.. guess there's only 2 _extensive_ beta testers!)
- Actually, Axon is the main reason you've got a product named Alab on
- your computer, and Joe Forster/STA is the main reason I released v1.3.
-
- Thanks for all your patience and all your extensive bugreports, Joe !!
-
- [shameless plug]
- Do you want to be able to transfer files from the PC <-> C64 in an easy
- way ? Well, check out a program made by Joe Forster/STA called the
- "Star Commander", it's the best there is !
- [/shameless plug]
-
- A complete list of beta testers comes at the end of this document.
-
- Also, I acknowledge these packages in the development of Alab:
-
- Turbo Vision for Turbo Pascal 6.0 by Borland International
- Turbo Vision for Borland Pascal 7.0 by Borland International
- Turbo Assembler by Borland International
- Turbo Link by Borland International
- Turbo Debugger by Borland International
- Turbo Profiler by Borland International
- Microsoft Macro Assembler by Microsoft Corp
- Microsoft Overlay Linker by Microsoft Corp
- Microsoft Codeview by Microsoft Corp
- Extended Memory Manager for Pascal by Jeroen W. Pluimers
- DOS32 (great package!) by Adam Seychell
- HelpPC v2.10 by David Jurgens
-
- Btw; Different things in the disclaimer is stolen from various other
- shareware programs, mainly Qedit and the RAR archiver. This is because
- I'm so new to this that I actually don't know what to write, and I
- wanted the English to be correct in those parts, so I hope you don't mind!
-
- Chapter 1 - Introduction
- ========================
-
- 1.1 - New version release notes!!
- ---------------------------------
-
- So, Alab v1.3 is finally out!
-
- Last version was released 4. February *1996* ! Alab has been far down
- on my priority list since then...
-
- Alab was completely "dead" and I haven't done much on it for a long,
- long time, but I've decided to just release the current 1.3 beta which
- i've got lying here anyway.
-
- I've got some extensive bug reports, and finally almost everything is
- fixed... Thanks again Joe, just can't thank you enough. It was
- recommended that I didn't release Alab, but I really don't care if it
- still has some bugs now - if I don't release it it will just be lying
- on my harddisk and gathering dust !
-
- Well, nothing much to say, except that Alab will be even lower on my
- priority list after this. Don't expect some major rewrites, only bug
- fixes here and there perhaps... That is, if this version doesn't take
- off for some reason ;)
-
- NB! This doc is not completely up to date...
-
- Chapter 2 - Installation
- ========================
-
- - Copy the zip file to the directory where you wish to have Alab
- - Unzip the zip file with "-d" switch (unzip with subdirectories)
- - Include the directory in your path if you want (easiest to do
- in your autoexec.bat)
-
- If you want to use Dlink, you may want to edit "LINK\DLINK.CFG" so
- that Dlink will find DOS32.EXE (if you don't do this, you'll have to
- place DOS32.EXE in your workdirectory all the time). Search for this
- line :
-
- " -Sdos32.exe DOS32 as stubfile "
-
- and include the complete path to dos32.exe.
-
- Now Alab is ready to go. The first thing you should do when you start
- Alab, is go to the Options|Assembler, Options|Linker and/or
- Options|Compiler to configurate the paths and switches.
-
- You have probably already noticed all the directories included in this
- version... If you want to strip all the uneccessary things from Alab,
- this is what you can do:
-
- - Place your favourite assembler/linker/compiler configurations in three
- files called ASM.CFG, LINK.CFG and COMPILE.CFG in your main Alab
- directory. Then you can just delete the directories "ASM\", "LINK\"
- and "COMPILE\".
- - Delete all the other uneccessary directories
-
- Chapter 3 - Command line switches
- =================================
-
- Syntax : ALAB [file(s)] [/V]
-
- file(s) : Specify files to directly open in Alab.
- -V : Verbose, display status info during startup.
-
- Chapter 4 - Features
- ====================
-
- 4.1 - Summary
- -------------
-
- - Syntax highlighting
- - Error highlighting
- - Procedure worksheet (useful procedure browser)
- - Macro/data Worksheet (same as proc worksheet, but for macros/data)
- - Heuristic scan (scans through source code for coding bugs, not
- fully implemented yet)
- - [Project Manager (removed in this version due to major rewrite)]
- - Label jumps (Ctrl+J on a jump opcode (Jxx/CALL) jumps to the
- destination)
- - Instruction Scheduler
- - Configurable menus
- - Online opcode help, also context sensitive (Topic Search)
- - Block comment/uncomment
- - Bookmarks
- - ASCII/scan codes table
- - Dec/Hex/Bin calculator
-
- ... and I have also included an 'unhang' utility ('Unhang.com') which
- can prevent your machine from hanging in many cases (that is, you can
- press the stated key combination when your machine hangs, and Unhang will
- try to quit back to DOS.) Beware that this program can be very unstable
- I think. It will not work if you either hook INT 9 or disable keyboard
- interrupt. It will probably not work if you run some module player in
- the background, because the memory will get messed up... What it does is
- to hook INT 9 and saves an exit-command at the address found on the stack
- (the point where the interrupt was called). Just 'mov ax, 4c00h -
- int 21h', but it works on most smaller programs ! :) It is actually
- _very_ useful when coding demos under dos for example (without sound in
- the background).
-
- 4.2 - Procedure/macro Worksheet
- -------------------------------
-
- It is a popup menu with complete procedure overview. Here you have a nice
- list of all the procedures in the current source code, and by pressing
- [Space], you jump directly to the item the bar is on! Well, perhaps you
- are familar with something like this. Borland Pascal has a browser which
- is quite similar to this. The reason why I call it 'worksheet' is because
- I at first had planned to implement a procedure/macro reordering and
- delete... If I did it would be more like a worksheet rather than a browser
- (perhaps I'll implement it later).
-
- 4.3 - Heuristic Scan
- --------------------
-
- I actually got this idea from the famous virus-scanner F-PROT. What
- Heuristic Scan does, is scan through the source code and look for
- bugs that weren't reported by the compiler, but are likely to cause some
- problems. E.g. it scans for missing 'ret's in procedures (which is
- likely to hang your program). This is the only thing in Heuristic Scan
- so far, but I have some more ideas, and I will most probably get
- many ideas from you out there. (E.g. I have planned to make Heuristic
- Scan search for places where it is possible that DS doesn't point to the
- data segment (or the segment where the variable is) when accessing
- variables (this can also make your program hang in many cases).
-
- 4.4 - Block comment/uncomment
- -----------------------------
-
- This feature is pretty much self-explanatory. You mark a block,
- choose Block comment from the menu or shortcut-keys, and the block
- is commented. I guess uncomment is obvious by now :)
-
- 4.5 - Label Jumps
- -----------------
-
- This is a nice one! You just position the cursor on a line that holds
- a CALL or Jxx (all jump opcodes), and press Ctrl+J. The cursor then
- jumps to the procedure or label following the opcode.
-
- 4.6 - Online Opcode Help
- ------------------------
-
- Also a nice one! In Help|Opcodes you have an extensive online help
- about the instruction set. Just choose one and there you have it all,
- just as detailed as any TSR. There is also a context sensitive help for
- this. Position the cursor on a word and press the command for Topic
- Search (Shift+F1 by default). Help for that specific opcode is
- automatically brought up.
-
- 4.7 - Tab characters
- --------------------
-
- Not full support yet.
-
- 4.8 - Bookmarks
- ---------------
-
- This is a great new feature added to Alab. The principle is the same as
- the usual bookmarks for books. Sometimes you want to mark a position in
- your source code, and return to that position later. Bookmarks make this
- an easy task. Just choose Search|Place bookmark, or press "Ctrl+Q n"
- (where n is a number between 1 and 9), and Alab places a bookmark at
- the current cursor position. You can have up to 9 bookmarks for each
- window. When you want to jump to a bookmark, choose Search|Jump to
- bookmark, or press "Ctrl+Q J n" (where n is the bookmark number), and
- Alab places the cursor on the line where the bookmark is. In the
- registered version, you will also have the opportunity to save the
- bookmarks so that you can return to the bookmarks after exiting from Alab.
-
- 4.9 - Instruction Scheduler
- ---------------------------
-
- Tired of handoptimizing your critical routines for ages and trying out
- the code to be sure it does what you expect?
- Are you frustrated by all the stuff you have to know to be able to
- optimize fast and efficient? Tired of not knowing exactly what will
- happen in some situations?
- Intimidated by pipelining, overlap, Address Generation Lock's (AGI's),
- memory dependance, etc., etc?
-
- Well, the Instruction Scheduler comes at your rescue !
-
- The Instruction Scheduler (hereby IS) can be a very handy tool when
- optimizing your code. In the IS you have complete control of pipelining
- information, Address Generation Interlocks (AGI's), latency control etc.
-
- There are 4 different options of how the IS starts to calculate
- pipelining:
-
- 1 - "Topmost instruction" : IS assumes that the topmost instruction in
- the window is executed in the U pipe.
- IS always assumes that the topmost
- instruction is executed in the U pipe,
- regardless if this mode is set to Labels or
- Bookmarks.
- 2 - "Labels" : IS assumes that all instructions directly
- following a label is executed in the U pipe.
- 3 - "Bookmarks" : IS assumes that all instructions directly
- following a bookmark is executed in the U
- pipe.
- 4 - "Both" (LB) : Both Labels and Bookmarks.
-
- Keys: Ctrl+S = Toggle Instruction Scheduler
- Ctrl+G = Cycle IS modes
-
- 5 - Project Manager
- ===================
-
- NB! Removed because of the major rewrite of the setup.
-
- 5.1 - What is it?
- -----------------
-
- Project Manager lets you create and maintain a project file (extension
- .APF for Alab Project File) where you specify all the .asm, .obj and
- .lib files that are to be included in your program. If you specify an
- .asm file in your project YOU DO NOT HAVE TO specify the .obj file
- created from that .asm file! With Project Manager it gets easy to
- maintain your program, and easy to link/run it.
-
- 5.2 - Creating a project file
- -----------------------------
-
- Let's say, you are starting on a program with 3-4 source files, 2
- additional object files you got from a friend with video routines
- etc., and 1 of your own library files. You then first choose Open on the
- Project menu and type in the name for the project file (the name of the
- project file will be used to create an .exe/.com file). You then get an
- open Project Manager window with no files in it. Press Insert or choose
- Add Item from the menu to insert new items. Insert the 3-4 source files,
- the 2 object files and the library file. Then you can go to one of the
- source file and press ENTER to open it (or choose Open from the File
- menu). You then write your source code in it and assemble it the usual
- way. You also do this with the other .asm files.
-
- 5.3 - Making a project
- ----------------------
-
- When you choose Make and you have an open project, the Project Manager
- goes through the files specified in the project file (project window),
- top to bottom, and do this: If the file is a source file (.asm), the
- Project Manager checks whether the source file is modified. If it is, the
- file is assembled and the .obj file created is added to the parameters
- which will be passed to the linker later. If the file is an .obj or a
- .lib file, the file is added to the parameters to pass to the linker.
- When the Project Manager has gone through all the files, the linker
- is invoked and an executable is created. The name of the executable will
- be the same as that of the project file.
-
- Chapter 6 - FAQ and Known bugs
- ==============================
-
- 6.1 - Known bugs
- ----------------
-
- - I don't know what the hell happended to the ASCII chart!
- The cursor movement worked during very early versions of Alab
- (not released versions).
- - Not actually a bug, but lots of useless code in there!
- (and code which is never used, too..)
- - The calculator doesn't handle negative decimal->hex
- - Project Manager:
- You have to specify full path to include files in the source files
- in most cases.
- - Problems on earlier machines (< 386) Should handle monochrom screen
- now, although I haven't tested it. Also there might be some problem
- with 386 specific code somewhere. Atleast you have to turn off syntax
- highlighting.
- - Other small bugs.
-
- - (Mats J. from Sweden: Sorry man, it just wasn't to be)
-
- 6.2 - Alab hangs when I open a window!
- --------------------------------------
-
- The most probable reason for this is that you don't have a 386+ and that
- the syntax highlighting checkbox is checked in Options|Editor. What
- happens is that syntax highlighting uses 386 code, and this will hang
- your machine. You will have to turn off syntax highlighting and clear
- the 'Highlight extensions' field in Options|Editor before you open any
- windows.
-
- 6.3 - How can I get Alab to work properly on a network?
- -------------------------------------------------------
-
- If you run Alab on a network station, from a public read-only directory,
- you have to
-
- 1 - specify a temporary directory in Options|Directories *or*
- 2 - make sure there is a TEMP environment variable on each
- workstation which points to a temporary directory.
-
- Alab first checks "Options|Directories/Temporary directory", then TEMP
- environment variable, then Alab directory.
-
- Alab needs to redirect all output from the assemblers and linkers, and
- the redirected file is created in the temporary directory. This file is
- read by Alab to get all errors.
-
- Chapter 7 - People Involved
- ===========================
-
- 7.2 - Beta testers
- ------------------
-
- Here is the complete list of beta testers:
- (I haven't heard shit from some of them, so they are removed)
-
- - Kovács Balázs (Joe Forster/ STA), Main beta tester v1.3
- - Tor-Helge Skei (Axon/ Xenon), Main beta tester <1.3
- - Jorgen H. Seland (St. George/ Index)
- - Anders Sandvig (Cortex/ Index)
- - Espen Grimsgaard (Twinny/ Gollum)
- - Haavard Engum (Hobbes/ Xenon)
- - Knut Petter Svendsen (Mephisto/ Xenon)
- - Staale Singstad (Cyberman/ Xenon)
- - Michal Karpinski (Mike X/ Xenon)
- - Thomas Loevlie
- - Thomas Kjoernes
-
- To all others out there : Thanks for all the emails!
-
- Obtw: Check out Star Commander from Joe Forster/STA... It's a great
- program for transferring files between the PC and C64 !
-
- Chapter 8 - The author/contacting
- =================================
-
- I'm 22 years old and live in Trondheim, Norway.
- Finished the army, and now a student at Trondheim School of
- Engineering.
- A.k.a. Rib/Daze/Spike/Coil (can't make up my mind:) - Talent/Xenon.
- I've been programming since I was 15/16... I started late, but have
- learned a lot in a short time.
-
- NB!! Alab is in no way representative for what I can program now. Alab
- was my first "big" project, started all the way back in 94 ! It's been
- on the shelf for the most the last couple of years, because I have so
- many other things to do. Check out my homepage for more information...
-
- If you have suggestions/questions/problems about Alab you can send me
- an email, hook up to my homepage, or send me a letter by snail mail.
-
- Email : kurtg@colargol.tihlde.hist.no
- WWW : http://www.colargol.tihlde.hist.no/~kurtg/
-
- Snailmail : Kurt Inge Groenbech
- Sigrid Johansens veg 23
- 7025 Trondheim
- NORWAY
-
- Happy coding,
- Kurt Inge Groenbech
-
-