home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / developmen / s3asm2 / S3ASM.DOC < prev    next >
Text File  |  1994-06-02  |  13KB  |  549 lines

  1.                       S3Asm
  2.  
  3.                   Version 2.00C
  4.  
  5.  
  6.   Copyright Giles Goddard and Krister Wombell 1994
  7.  
  8.  
  9. Introduction:
  10. ------------
  11.  
  12.  S3Asm is an 8086 machine code assembler for Psion Series3a pocket
  13. computer. The bulk of the program is written in 8086, so its capable
  14. of very high assembly speeds. 
  15.  
  16.  Machine code compiled using S3Asm can be incorporated into OPL
  17. programs or can be translated into an image file ready for running
  18. from the System screen.
  19.  
  20.  
  21.  
  22. WARNING:
  23.  
  24.  Extreme caution should be taken when using this program, if the code
  25. you have just assembled has a bug, it could and most often does, crash 
  26. the machine. Also, S3Asm holds NO WARRANTY. If the bug is caused by S3Asm 
  27. itself not assembling correctly, then neither us (the authors) or Psion 
  28. can be held responsible for any loss of data or damaged caused to you, your
  29. machine or anything else in near proximity.
  30.  
  31.  
  32. Registration:
  33. -------------
  34.  
  35.  This version of S3Asm is fully functional, the only limitation is
  36. the size of the output object code. This is set 256 bytes, which is
  37. more than enough for most small programs. If you would like to 
  38. assemble larger programs or if you just want to show your appreciation 
  39. for this software please register it by either,
  40.  
  41. Sending 10 UK pounds to:
  42.  
  43.  Giles Goddard,
  44.  6, Court Royal Mews,
  45.  Northlands Road,
  46.  Southampton. SO3
  47.  England.
  48.  
  49. Or,
  50.  
  51.  Typing GO SWREG on Compuserve and following the prompts. S3Asm's
  52. registration code is 2703 and it costs 20.00 dollars.
  53.  
  54.  
  55. Installation:
  56. ------------
  57.  
  58. If you have RFM installed you may prefer to use the PC batch file
  59. Install.bat to setup S3Asm. It assumes you have the s3a connected and 
  60. ready. Otherwise just follow these simple steps:
  61.  
  62. Copy S3Asm.opa into an \APP directory on your Series3a, any drive will 
  63. do, and install it by pressing Psion-I from the system screen.
  64.  
  65. If everything is well you should have the S3Asm icon with S3Asm
  66. written underneath.
  67.  
  68. Next, make a directory on any drive called \ASM which holds the
  69. source files for any machine code you write. 
  70.  
  71. copy s3obj.opl to \OPL 
  72. copy s3obj.opo to \OPO
  73.  
  74. These files are used to load object code into your OPL programs.
  75.  
  76.  
  77. If you would like to use the example source and EPOC service include
  78. files then please:
  79.  
  80. Make another directory called \INC which holds the include files.
  81. copy *.inc to \INC 
  82. copy *.asm to \ASM
  83. copy win.opl to \OPL
  84.  
  85. Selecting one of the example files that should appear under the S3Asm 
  86. icon by pressing enter will run S3Asm using that file.
  87.  
  88.  
  89.  
  90. Usage:
  91. -----
  92.  
  93.  When you run S3Asm you should be presented with a menu of commands,
  94. these are:
  95.  
  96.  
  97. Open file - Change the current source file.  
  98.  
  99. Setup     - Change the intialisation file for S3Asm.
  100. Reset     - Reset intialisation file to default settings.
  101.  
  102. Assemble  - Start assembling the current source file.
  103.  
  104. Register  - Register S3Asm to assemble larger files and to the remove 
  105.             nag screen.
  106. About     - Show information about S3Asm.
  107. Exit      - Exit S3Asm
  108.  
  109.  
  110.  
  111. Setup:
  112. -----
  113.  
  114. The setup file for S3Asm is 'M:\OPD\s3asm.ini' it is created 
  115. automagically and reset to the default settings when you first run S3Asm. 
  116. You can change these settings using the Setup menu command.
  117.  
  118. Memory:
  119.  
  120. Amount of memory allocated for source block. S3Asm loads your source
  121. file in small chunks or blocks. If you dont have enough memory on
  122. your machine for the default setting, you can reduce the amount
  123. allocated.
  124.  
  125. Amount of memory allocated for object block. This is the maximum size
  126. of you object code output. For non-registered users this is limited
  127. to 256 bytes.
  128.  
  129. Amount of memory allocated for symbols. Everytime you define a label,
  130. equate or variable the name gets added to the symbol list. This is 
  131. the total memory available for all your symbols names.
  132.  
  133. Amount of memory allocated for Forward References. If you reference a
  134. label or variable which has been defined later on in the source file,
  135. S3Asm stores this reference in the FR block and then later adjusts
  136. the object code.
  137.  
  138. Amount of  memory allocated for relocations. If you use non-relative
  139. addresses, such as referencing a variable or address of a variable
  140. then S3Asm stores this information into the relocation block. When you 
  141. use the object file in your OPL program, the relocation is automatically 
  142. done for you.
  143.  
  144. Amount of memory for macros. Macros take up memory whenever they are
  145. defined, this lets adjust the maximum amount of memory for all the
  146. macros.
  147.  
  148.  
  149. Directories:
  150.  
  151. S3Asm normally writes all of its output files back into the directory
  152. from where the source file came from. You can override this for each
  153. output file type.
  154.  
  155. Binary files, .BIN files that use loaded into your OPL programs.
  156.  
  157. Image file, .IMG files that can be run from the system screen.
  158.  
  159. OPL files, .OPL files that can be included into your OPL programs and
  160. compiled.
  161. (Warning: It can be dangerous to set this to your main \OPL
  162. directory, where S3Asm may write over an existing OPL file of the
  163. same name.)
  164.  
  165.  
  166. Image files:
  167. The intitial stack size and priority used when creating image files
  168. may be changed.
  169.  
  170.  
  171.  
  172.  
  173.  
  174. Creating source files:
  175. ----------------------
  176.  
  177. Source files may be created using the built in Program application.
  178. The easiest way of doing this is by installing the Asm.als file included 
  179. with S3Asm, which makes a 'virtual' copy of Program and tells it to use 
  180. the directory \ASM and files with the .ASM extension. Copy the file 
  181. Asm.als into a \APP and install it using Psion-I. You can then create 
  182. and edit files the same way as you would OPL files.
  183.  
  184.  
  185.  
  186. Assembling source files:
  187. ------------------------
  188.  
  189. When you assemble a source file S3asm asks you which type of output
  190. you would like, this can be Binary, OPL or Image. This can be made 
  191. automatic by placing the word BINARY, OPL or IMAGE at the top of your 
  192. source file, eg.
  193.  
  194.     BINARY
  195.  
  196.     mov ax,0
  197.  
  198.     retf
  199.  
  200. or,
  201.  
  202.     OPL
  203.  
  204.     mov ax,0
  205.  
  206.     retf
  207.  
  208. or,    
  209.  
  210.     IMAGE
  211.  
  212. somedata
  213.     dw 1234
  214.  
  215.     CODE   
  216.     mov ax,0
  217.     retf
  218.  
  219.  
  220. Notice the CODE line in the last example. This tells S3Asm where your
  221. actual program starts. Image files are split into 2 parts, the Data
  222. segment and Code segment. All variables and other data should be
  223. placed before the CODE statment. 
  224.  
  225. If you select OPL output then S3Asm will ask you to give it a
  226. variable name. This variable is used to put object code into, see
  227. below for more details.
  228.  
  229.  
  230.  
  231. Note: The option to write out Image file types at the end of assembly
  232. is just included for completeness. If you select this option you will 
  233. be warned that you have no IMAGE statement in your code.
  234.  
  235.  
  236. Assembler syntax:
  237. ----------------
  238.  
  239. S3Asm tries to keep to standard 8086 assembler syntax where possible.
  240.  
  241. Comments must start with a  ';'  unless they come after the end of
  242. the instruction ie.
  243.  
  244. ; This  is ok
  245.  
  246.     mov ax,0  ; so is this
  247.     mov ax,1  and this
  248.  
  249. but this is not
  250.  
  251.  
  252.  
  253.  
  254.  
  255. Instruction format:
  256.  
  257. Instructions and data declarations must be preceeded by at least one
  258. space or tab, ie.
  259.   
  260.  mov ax,1 ; is ok
  261. mov ax,1 ; is bad
  262.  
  263. Labels and equates:
  264.  
  265. Labels and equates must start a line, ie. no spaces or tabs before
  266. them, ie.
  267.  
  268.     mylabel  mov ax,0   ; is bad
  269.  
  270. mylabel  mov ax,0       ; is ok
  271.  
  272.  
  273. Labels and equates must start with a non digit and can be upto 255
  274. bytes long. ie.
  275.  
  276. 6label dw 0            ; is bad
  277.  
  278. label6 dw 0            ; is ok
  279.  
  280. datapp1 equ $28   ; is ok
  281.  
  282.  
  283. Also, for future versions please dont use labels with these
  284. characters:
  285.  
  286.  - * , / + = % ! & > < $ " 
  287.  
  288.  
  289.  
  290. References to labels must be enclosed in square brackets, eg.
  291.  
  292.    mov ax,[a_label]
  293.  
  294.  
  295.  
  296. Addresses of labels use the OFFSET syntax, eg.
  297.  
  298.   mov bx, offset a_label
  299.  
  300.   mov ax,[bx]
  301.  
  302.  
  303.  
  304. Absolute addresses use the ABS syntax, eg.
  305.  
  306.   mov ax, ABS [datapp1]
  307.  
  308.  
  309.  
  310.  
  311.  
  312. Data:
  313.  
  314.  There are 3 types of data statement:
  315.  
  316.   db 0
  317.   dw 0
  318.   db "A string",0
  319.  
  320.  
  321.  
  322.  
  323. Numbers:
  324.  
  325.  ASCII, Decimal, Hex and Binary numbers are supported, they have the
  326. following syntax:
  327.  
  328.  
  329.  
  330.     mov ax,1234    ; a decimal number
  331.  
  332.