home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / ASM / ALAB13B1.ZIP / DOC / ALAB.DOC next >
Encoding:
Text File  |  1998-08-23  |  20.6 KB  |  492 lines

  1.        ╓─────┐  ╓─┐  ╓─┐ ╥──┐ ╓─╥─┐ ╥─┐  ╥    ╥──┐ ╥──┐
  2.        ║     │  ╙─┐  ╙─┐ ╟─   ║ ║ │ ╟─┴┐ ║    ╟─   ╟─┬┘
  3.        ╟─────┤ ╙──┘ ╙──┘ ╨──┘ ╨ ╨ ┴ ╨──┘ ╨──┘ ╨──┘ ╨ ┴
  4.        ║     │  ╥       ╓──┐ ╥─┐  ╓──┐ ╥──┐ ╓──┐ ╓─╥─┐ ╓──┐ ╥──┐ ╥  ┬
  5.        ╨     ┴  ║       ╟──┤ ╟─┴┐ ║  │ ╟─┬┘ ╟──┤   ║   ║  │ ╟─┬┘ ╙──┤
  6.                 ║       ╨  ┴ ╨──┘ ╙──┘ ╨ ┴  ╨  ┴   ╨   ╙──┘ ╨ ┴  ╙──┘
  7.                 ║         (c) 1994-1998 Kurt Inge Groenbech
  8.                 ╨─────┘   Assembler coders' first choice IDE?
  9.  
  10. ───────────────────────────────┤ Version 1.3 ├─────────────────────────────────
  11.                   R  E  F  E  R  E  N  C  E    M  A  N  U  A  L
  12. ───────────────────────────────────────────────────────────────────────────────
  13.  
  14. Table of Contents:
  15.  
  16.     Chapter 0 - Legal stuff
  17.                   0.1 - Disclaimer
  18.                   0.2 - Distribution
  19.                   0.3 - Acknowledgements
  20.     Chapter 1 - Introduction
  21.                   1.1 - About this reference manual
  22.                   1.2 - New version release notes!!
  23.     Chapter 2 - Installation
  24.     Chapter 3 - Command line switches
  25.     Chapter 4 - Features
  26.                   4.1 - Summary
  27.                   4.2 - Procedure/macro Worksheet
  28.                   4.3 - Heuristic Scan
  29.                   4.4 - Block comment/uncomment
  30.                   4.5 - Label Jumps
  31.                   4.6 - Opcode help
  32.                   4.7 - Tab characters
  33.                   4.8 - Bookmarks
  34.                   4.9 - Instruction Scheduler
  35.     Chapter 5 - Project Manager
  36.                   5.1 - What is it?
  37.                   5.2 - Creating a project file
  38.                   5.3 - Making a project
  39.     Chapter 6 - FAQ and Known bugs
  40.                   6.1 - Known bugs
  41.                   6.2 - Alab hangs when I open a window!
  42.                   6.3 - How can I get Alab to work properly on a network?
  43.     Chapter 7 - People involved
  44.                   7.1 - Public domain software
  45.                   7.2 - Beta testers
  46.     Chapter 8 - The author/contacting
  47. ───────────────────────────────────────────────────────────────────────────────
  48. Chapter 0 - Legal stuff
  49. =======================
  50.  
  51. 0.1 - Disclaimer
  52. ----------------
  53.  
  54. Assembler Laboratory is provided "as is" and without any warranty.
  55. To the extent premitted under applicable law, I disclaim all warranties,
  56. express or implied, including but not limited to, any implied warranty
  57. of merchantability or fitness for a particular purpose. Specifically, I
  58. make no representation or warranty that the software is fit for any
  59. particular purpose.
  60.  
  61. I shall not be liable for any damages resulting from the use of this
  62. software, including but not limited to, loss of profit, data or use of
  63. the software, or indirect, special, incidental or consequential damages
  64. or other similar claims, even if I has been specifically advised of the
  65. possibility of such damages.
  66.  
  67. NB! From this version and on, Alab is distributed as FREEWARE. This is
  68. because 1) i'm almost not earning anything at all on it anyway (so much
  69. work on both ends for so little), and 2) i will not work on Alab any more,
  70. so there will not be much support and upgrades.
  71.  
  72. I hope that those who have already registered themselves can understand,
  73. and not have the feeling that they paid for nothing - 1.3 wouldn't be
  74. here at all if it weren't for your support in the 2 first releases.
  75.  
  76. 0.2 - Distribution
  77. ------------------
  78.  
  79. Distribution of Alab must happen under these conditions:
  80.  
  81.     - Alab should be distributed in its original archive.
  82.       (the ZIP file YOU receive, is the ZIP file YOU should distribute)
  83.       If impossible, the ZIP file you distribute must contain all files
  84.       which belongs to Alab that you received.
  85.  
  86.     - No money can be charged for it, EXCEPT a little amount for the
  87.       disk or similar.
  88.  
  89. 0.3 - Acknowledgements
  90. ----------------------
  91.  
  92. Many hours have gone into the development of this product, and I have
  93. got many a useful idea from various beta testers. Especially I would like
  94. to thank the following people for extensive betatesting:
  95.  
  96.   - Tor-Helge Skei              (Axon/         Xenon), Main beta tester
  97.   - Kovács Balázs               (Joe Forster/    STA), also main tester
  98.  
  99. (hmm.. guess there's only 2 _extensive_ beta testers!)
  100. Actually, Axon is the main reason you've got a product named Alab on
  101. your computer, and Joe Forster/STA is the main reason I released v1.3.
  102.  
  103. Thanks for all your patience and all your extensive bugreports, Joe !!
  104.  
  105. [shameless plug]
  106. Do you want to be able to transfer files from the PC <-> C64 in an easy
  107. way ? Well, check out a program made by Joe Forster/STA called the
  108. "Star Commander", it's the best there is !
  109. [/shameless plug]
  110.  
  111. A complete list of beta testers comes at the end of this document.
  112.  
  113. Also, I acknowledge these packages in the development of Alab:
  114.  
  115. Turbo Vision for Turbo Pascal 6.0           by Borland International
  116. Turbo Vision for Borland Pascal 7.0         by Borland International
  117. Turbo Assembler                             by Borland International
  118. Turbo Link                                  by Borland International
  119. Turbo Debugger                              by Borland International
  120. Turbo Profiler                              by Borland International
  121. Microsoft Macro Assembler                   by Microsoft Corp
  122. Microsoft Overlay Linker                    by Microsoft Corp
  123. Microsoft Codeview                          by Microsoft Corp
  124. Extended Memory Manager for Pascal          by Jeroen W. Pluimers
  125. DOS32 (great package!)                      by Adam Seychell
  126. HelpPC v2.10                                by David Jurgens
  127.  
  128. Btw; Different things in the disclaimer is stolen from various other
  129.      shareware programs, mainly Qedit and the RAR archiver. This is because
  130.      I'm so new to this that I actually don't know what to write, and I
  131.      wanted the English to be correct in those parts, so I hope you don't mind!
  132.  
  133. Chapter 1 - Introduction
  134. ========================
  135.  
  136. 1.1 - New version release notes!!
  137. ---------------------------------
  138.  
  139. So, Alab v1.3 is finally out!
  140.  
  141. Last version was released 4. February *1996* ! Alab has been far down
  142. on my priority list since then...
  143.  
  144. Alab was completely "dead" and I haven't done much on it for a long,
  145. long time, but I've decided to just release the current 1.3 beta which
  146. i've got lying here anyway.
  147.  
  148. I've got some extensive bug reports, and finally almost everything is
  149. fixed... Thanks again Joe, just can't thank you enough. It was
  150. recommended that I didn't release Alab, but I really don't care if it
  151. still has some bugs now - if I don't release it it will just be lying
  152. on my harddisk and gathering dust !
  153.  
  154. Well, nothing much to say, except that Alab will be even lower on my
  155. priority list after this. Don't expect some major rewrites, only bug
  156. fixes here and there perhaps... That is, if this version doesn't take
  157. off for some reason ;)
  158.  
  159. NB! This doc is not completely up to date...
  160.  
  161. Chapter 2 - Installation
  162. ========================
  163.  
  164.   - Copy the zip file to the directory where you wish to have Alab
  165.   - Unzip the zip file with "-d" switch (unzip with subdirectories)
  166.   - Include the directory in your path if you want (easiest to do
  167.     in your autoexec.bat)
  168.  
  169. If you want to use Dlink, you may want to edit "LINK\DLINK.CFG" so
  170. that Dlink will find DOS32.EXE (if you don't do this, you'll have to
  171. place DOS32.EXE in your workdirectory all the time). Search for this
  172. line :
  173.  
  174. "         -Sdos32.exe  DOS32 as stubfile                           "
  175.  
  176. and include the complete path to dos32.exe.
  177.  
  178. Now Alab is ready to go. The first thing you should do when you start
  179. Alab, is go to the Options|Assembler, Options|Linker and/or
  180. Options|Compiler to configurate the paths and switches.
  181.  
  182. You have probably already noticed all the directories included in this
  183. version... If you want to strip all the uneccessary things from Alab,
  184. this is what you can do:
  185.  
  186. - Place your favourite assembler/linker/compiler configurations in three
  187.   files called ASM.CFG, LINK.CFG and COMPILE.CFG in your main Alab
  188.   directory. Then you can just delete the directories "ASM\", "LINK\"
  189.   and "COMPILE\".
  190. - Delete all the other uneccessary directories
  191.  
  192. Chapter 3 - Command line switches
  193. =================================
  194.  
  195. Syntax  : ALAB [file(s)] [/V]
  196.  
  197. file(s) : Specify files to directly open in Alab.
  198. -V      : Verbose, display status info during startup.
  199.  
  200. Chapter 4 - Features
  201. ====================
  202.  
  203. 4.1 - Summary
  204. -------------
  205.  
  206.   - Syntax highlighting
  207.   - Error highlighting
  208.   - Procedure worksheet (useful procedure browser)
  209.   - Macro/data Worksheet (same as proc worksheet, but for macros/data)
  210.   - Heuristic scan (scans through source code for coding bugs, not
  211.                     fully implemented yet)
  212.   - [Project Manager (removed in this version due to major rewrite)]
  213.   - Label jumps (Ctrl+J on a jump opcode (Jxx/CALL) jumps to the
  214.                  destination)
  215.   - Instruction Scheduler
  216.   - Configurable menus
  217.   - Online opcode help, also context sensitive (Topic Search)
  218.   - Block comment/uncomment
  219.   - Bookmarks
  220.   - ASCII/scan codes table
  221.   - Dec/Hex/Bin calculator
  222.  
  223. ... and I have also included an 'unhang' utility ('Unhang.com') which
  224. can prevent your machine from hanging in many cases (that is, you can
  225. press the stated key combination when your machine hangs, and Unhang will
  226. try to quit back to DOS.) Beware that this program can be very unstable
  227. I think. It will not work if you either hook INT 9 or disable keyboard
  228. interrupt. It will probably not work if you run some module player in
  229. the background, because the memory will get messed up... What it does is
  230. to hook INT 9 and saves an exit-command at the address found on the stack
  231. (the point where the interrupt was called). Just 'mov ax, 4c00h -
  232. int 21h', but it works on most smaller programs ! :) It is actually
  233. _very_ useful when coding demos under dos for example (without sound in
  234. the background).
  235.  
  236. 4.2 - Procedure/macro Worksheet
  237. -------------------------------
  238.  
  239. It is a popup menu with complete procedure overview. Here you have a nice
  240. list of all the procedures in the current source code, and by pressing
  241. [Space], you jump directly to the item the bar is on! Well, perhaps you
  242. are familar with something like this. Borland Pascal has a browser which
  243. is quite similar to this. The reason why I call it 'worksheet' is because
  244. I at first had planned to implement a procedure/macro reordering and
  245. delete... If I did it would be more like a worksheet rather than a browser
  246. (perhaps I'll implement it later).
  247.  
  248. 4.3 - Heuristic Scan
  249. --------------------
  250.  
  251. I actually got this idea from the famous virus-scanner F-PROT. What
  252. Heuristic Scan does, is scan through the source code and look for
  253. bugs that weren't reported by the compiler, but are likely to cause some
  254. problems. E.g. it scans for missing 'ret's in procedures (which is
  255. likely to hang your program). This is the only thing in Heuristic Scan
  256. so far, but I have some more ideas, and I will most probably get
  257. many ideas from you out there. (E.g. I have planned to make Heuristic
  258. Scan search for places where it is possible that DS doesn't point to the
  259. data segment (or the segment where the variable is) when accessing
  260. variables (this can also make your program hang in many cases).
  261.  
  262. 4.4 - Block comment/uncomment
  263. -----------------------------
  264.  
  265. This feature is pretty much self-explanatory. You mark a block,
  266. choose Block comment from the menu or shortcut-keys, and the block
  267. is commented. I guess uncomment is obvious by now :)
  268.  
  269. 4.5 - Label Jumps
  270. -----------------
  271.  
  272. This is a nice one! You just position the cursor on a line that holds
  273. a CALL or Jxx (all jump opcodes), and press Ctrl+J. The cursor then
  274. jumps to the procedure or label following the opcode.
  275.  
  276. 4.6 - Online Opcode Help
  277. ------------------------
  278.  
  279. Also a nice one! In Help|Opcodes you have an extensive online help
  280. about the instruction set. Just choose one and there you have it all,
  281. just as detailed as any TSR. There is also a context sensitive help for
  282. this. Position the cursor on a word and press the command for Topic
  283. Search (Shift+F1 by default). Help for that specific opcode is
  284. automatically brought up.
  285.  
  286. 4.7 - Tab characters
  287. --------------------
  288.  
  289. Not full support yet.
  290.  
  291. 4.8 - Bookmarks
  292. ---------------
  293.  
  294. This is a great new feature added to Alab. The principle is the same as
  295. the usual bookmarks for books. Sometimes you want to mark a position in
  296. your source code, and return to that position later. Bookmarks make this
  297. an easy task. Just choose Search|Place bookmark, or press "Ctrl+Q n"
  298. (where n is a number between 1 and 9), and Alab places a bookmark at
  299. the current cursor position. You can have up to 9 bookmarks for each
  300. window. When you want to jump to a bookmark, choose Search|Jump to
  301. bookmark, or press "Ctrl+Q J n" (where n is the bookmark number), and
  302. Alab places the cursor on the line where the bookmark is. In the
  303. registered version, you will also have the opportunity to save the
  304. bookmarks so that you can return to the bookmarks after exiting from Alab.
  305.  
  306. 4.9 - Instruction Scheduler
  307. ---------------------------
  308.  
  309. Tired of handoptimizing your critical routines for ages and trying out
  310. the code to be sure it does what you expect?
  311. Are you frustrated by all the stuff you have to know to be able to
  312. optimize fast and efficient? Tired of not knowing exactly what will
  313. happen in some situations?
  314. Intimidated by pipelining, overlap, Address Generation Lock's (AGI's),
  315. memory dependance, etc., etc?
  316.  
  317. Well, the Instruction Scheduler comes at your rescue !
  318.  
  319. The Instruction Scheduler (hereby IS) can be a very handy tool when
  320. optimizing your code. In the IS you have complete control of pipelining
  321. information, Address Generation Interlocks (AGI's), latency control etc.
  322.  
  323. There are 4 different options of how the IS starts to calculate
  324. pipelining:
  325.  
  326. 1 - "Topmost instruction" : IS assumes that the topmost instruction in
  327.                             the window is executed in the U pipe.
  328.                             IS always assumes that the topmost
  329.                             instruction is executed in the U pipe,
  330.                             regardless if this mode is set to Labels or
  331.                             Bookmarks.
  332. 2 - "Labels"              : IS assumes that all instructions directly
  333.                             following a label is executed in the U pipe.
  334. 3 - "Bookmarks"           : IS assumes that all instructions directly
  335.                             following a bookmark is executed in the U
  336.                             pipe.
  337. 4 - "Both" (LB)           : Both Labels and Bookmarks.
  338.  
  339. Keys: Ctrl+S = Toggle Instruction Scheduler
  340.       Ctrl+G = Cycle IS modes
  341.  
  342. 5 - Project Manager
  343. ===================
  344.  
  345. NB! Removed because of the major rewrite of the setup.
  346.  
  347. 5.1 - What is it?
  348. -----------------
  349.  
  350. Project Manager lets you create and maintain a project file (extension
  351. .APF for Alab Project File) where you specify all the .asm, .obj and
  352. .lib files that are to be included in your program. If you specify an
  353. .asm file in your project YOU DO NOT HAVE TO specify the .obj file
  354. created from that .asm file! With Project Manager it gets easy to
  355. maintain your program, and easy to link/run it.
  356.  
  357. 5.2 - Creating a project file
  358. -----------------------------
  359.  
  360. Let's say, you are starting on a program with 3-4 source files, 2
  361. additional object files you got from a friend with video routines
  362. etc., and 1 of your own library files. You then first choose Open on the
  363. Project menu and type in the name for the project file (the name of the
  364. project file will be used to create an .exe/.com file). You then get an
  365. open Project Manager window with no files in it. Press Insert or choose
  366. Add Item from the menu to insert new items. Insert the 3-4 source files,
  367. the 2 object files and the library file. Then you can go to one of the
  368. source file and press ENTER to open it (or choose Open from the File
  369. menu). You then write your source code in it and assemble it the usual
  370. way. You also do this with the other .asm files.
  371.  
  372. 5.3 - Making a project
  373. ----------------------
  374.  
  375. When you choose Make and you have an open project, the Project Manager
  376. goes through the files specified in the project file (project window),
  377. top to bottom, and do this: If the file is a source file (.asm), the
  378. Project Manager checks whether the source file is modified. If it is, the
  379. file is assembled and the .obj file created is added to the parameters
  380. which will be passed to the linker later. If the file is an .obj or a
  381. .lib file, the file is added to the parameters to pass to the linker.
  382. When the Project Manager has gone through all the files, the linker
  383. is invoked and an executable is created. The name of the executable will
  384. be the same as that of the project file.
  385.  
  386. Chapter 6 - FAQ and Known bugs
  387. ==============================
  388.  
  389. 6.1 - Known bugs
  390. ----------------
  391.  
  392.   - I don't know what the hell happended to the ASCII chart!
  393.     The cursor movement worked during very early versions of Alab
  394.     (not released versions).
  395.   - Not actually a bug, but lots of useless code in there!
  396.     (and code which is never used, too..)
  397.   - The calculator doesn't handle negative decimal->hex
  398.   - Project Manager:
  399.       You have to specify full path to include files in the source files
  400.       in most cases.
  401.   - Problems on earlier machines (< 386) Should handle monochrom screen
  402.     now, although I haven't tested it. Also there might be some problem
  403.     with 386 specific code somewhere. Atleast you have to turn off syntax
  404.     highlighting.
  405.   - Other small bugs.
  406.  
  407.   - (Mats J. from Sweden: Sorry man, it just wasn't to be)
  408.  
  409. 6.2 - Alab hangs when I open a window!
  410. --------------------------------------
  411.  
  412. The most probable reason for this is that you don't have a 386+ and that
  413. the syntax highlighting checkbox is checked in Options|Editor. What
  414. happens is that syntax highlighting uses 386 code, and this will hang
  415. your machine. You will have to turn off syntax highlighting and clear
  416. the 'Highlight extensions' field in Options|Editor before you open any
  417. windows.
  418.  
  419. 6.3 - How can I get Alab to work properly on a network?
  420. -------------------------------------------------------
  421.  
  422. If you run Alab on a network station, from a public read-only directory,
  423. you have to
  424.  
  425.    1 - specify a temporary directory in Options|Directories *or*
  426.    2 - make sure there is a TEMP environment variable on each
  427.        workstation which points to a temporary directory.
  428.  
  429. Alab first checks "Options|Directories/Temporary directory", then TEMP
  430. environment variable, then Alab directory.
  431.  
  432. Alab needs to redirect all output from the assemblers and linkers, and
  433. the redirected file is created in the temporary directory. This file is
  434. read by Alab to get all errors.
  435.  
  436. Chapter 7 - People Involved
  437. ===========================
  438.  
  439. 7.2 - Beta testers
  440. ------------------
  441.  
  442. Here is the complete list of beta testers:
  443. (I haven't heard shit from some of them, so they are removed)
  444.  
  445.   - Kovács Balázs          (Joe Forster/    STA), Main beta tester v1.3
  446.   - Tor-Helge Skei         (Axon/         Xenon), Main beta tester <1.3
  447.   - Jorgen H. Seland       (St. George/   Index)
  448.   - Anders Sandvig         (Cortex/       Index)
  449.   - Espen Grimsgaard       (Twinny/      Gollum)
  450.   - Haavard Engum          (Hobbes/       Xenon)
  451.   - Knut Petter Svendsen   (Mephisto/     Xenon)
  452.   - Staale Singstad        (Cyberman/     Xenon)
  453.   - Michal Karpinski       (Mike X/       Xenon)
  454.   - Thomas Loevlie
  455.   - Thomas Kjoernes
  456.  
  457. To all others out there : Thanks for all the emails!
  458.  
  459. Obtw: Check out Star Commander from Joe Forster/STA... It's a great
  460. program for transferring files between the PC and C64 !
  461.  
  462. Chapter 8 - The author/contacting
  463. =================================
  464.  
  465. I'm 22 years old and live in Trondheim, Norway.
  466. Finished the army, and now a student at Trondheim School of
  467. Engineering.
  468. A.k.a. Rib/Daze/Spike/Coil (can't make up my mind:) - Talent/Xenon.
  469. I've been programming since I was 15/16... I started late, but have
  470. learned a lot in a short time.
  471.  
  472. NB!! Alab is in no way representative for what I can program now. Alab
  473. was my first "big" project, started all the way back in 94 ! It's been
  474. on the shelf for the most the last couple of years, because I have so
  475. many other things to do. Check out my homepage for more information...
  476.  
  477. If you have suggestions/questions/problems about Alab you can send me
  478. an email, hook up to my homepage, or send me a letter by snail mail.
  479.  
  480.   Email     : kurtg@colargol.tihlde.hist.no
  481.   WWW       : http://www.colargol.tihlde.hist.no/~kurtg/
  482.  
  483.   Snailmail : Kurt Inge Groenbech
  484.               Sigrid Johansens veg 23
  485.               7025 Trondheim
  486.               NORWAY
  487.  
  488.                                            Happy coding,
  489.                                                 Kurt Inge Groenbech
  490.  
  491. 
  492.