home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / robot-pd / 12400.ZIP / 12400B.DSK / manual09.txt < prev    next >
Text File  |  1998-04-30  |  6KB  |  190 lines

  1.                   ╩C H A P T E R   E I G H TΩ
  2.  
  3.  
  4. ╩8.1 ASSEMΩ
  5.  
  6. ╩SyntaxΩ:╔ASSEM <source file path> <dest file path>Θ
  7.  
  8. Scans through the source file and generates an HAL machine
  9. code program from the contents. The  resulting  code  will
  10. then be written into the destination file.
  11.  
  12.  
  13. ╩8.1.2 The HAL MicroprocessorΩ
  14.  
  15. This is a software implemented tutorial microprocessor. It
  16. has the following features:-
  17.  
  18. 1.Four internal registers:A(accumulator),IX(index), SP(st-
  19. ack pointer) and PC(program counter).
  20.  
  21. 2.It is a 10 bit microprocessor. That is to  say,  it  can
  22. handle data in the range 0-1023.
  23.  
  24. 3.All arithmetic results are placed in the accumulator.
  25.  
  26. 4.Address range is the same as data range ie; 10 bits.
  27.  
  28. 5.Port address range is 0-255.
  29.  
  30. ╩8.1.3 The HAL Assembler LanguageΩ
  31.  
  32. In the following list, the following terms apply:-
  33.  
  34. <source> : Can be one of:-
  35.  
  36. <number> - A numeric value in the range 0..1023
  37. @<number>- The contents of memory location whose  address
  38. is the same as the given number
  39. ^<number>- The contents of the given I/O port.
  40. A        - Contents of accumulator
  41. SP       - Contents of stack pointer
  42. IX       - Contents of index register
  43. IX <num> - Contents of memory location, whose address  is
  44. the same as (IX + <num>)
  45.  
  46. <dest> : Can be:-
  47.  
  48. @<number>- Put result in given memory address.
  49. ^<number<- Put result in given port.
  50. A        - Put result in accumulator
  51. SP       - Put result in stack pointer
  52. etc.
  53.  
  54. <cond.> : Can be one of:-
  55.  
  56. Z - Return true if the last arithmetic operation  resulted
  57. in a zero value.
  58. C - Return true if the last arithmetic operation generated
  59. a carry.
  60. M - True if the  last  arithmetic  operation  produced   a
  61. negative result.
  62.  
  63. The possible commands are then:-
  64.  
  65. LD <dest>,<source>  -  Move  data  from  one  location  to
  66. another.
  67.  
  68. PUSH <source> - Place data onto machine stack.  The  stack
  69. pointer will move down once after this operation.
  70.  
  71. POP <dest> - Retrieve data from stack, SP moves up  before
  72. the data is retrieved.
  73.  
  74. {SP can be thought of as pointing to the next "free" entry
  75. on the stack. It starts at an initial value of 1023.}
  76.  
  77. ADD <source>,<source> - Add the  two  items  and  put  the
  78. result into the accumulator.
  79.  
  80. SUB <source>,<source> - As above but subtract.
  81.  
  82. CP <source>,<source> - Perform a subtraction  but  discard
  83. the result. This instructions  allows  comparisons  to  be
  84. made between numbers.
  85.  
  86. JP <source> - Jump to a different memory location
  87.  
  88. JPC <cond.>,<source> - If the  given  condition  is  TRUE,
  89. jump to the given location.
  90.  
  91. CALL <source> - Call a subroutine at location given.
  92. CALLC <cond.>,<source>
  93.  
  94. RET - Return from subroutine.
  95. RETC <cond.>
  96.  
  97. Later versions may also support the following:-
  98.  
  99. ROTR <source> - Rotate source  right,  placing  result  in
  100. accumulator.
  101.  
  102. ROTL <source> - Rotate left.
  103.  
  104. AND <source>,<source> - Place result of logical  operation
  105. in accumulator.
  106. XOR and OR are also supported.
  107.  
  108. ╩8.1.4 Port I/O SignalsΩ
  109.  
  110. Port 0 is the control register. The  value  sent  to  this
  111. port will determine the function to be carried out:-
  112.  
  113. 001-Output character whose ASCII code has previously  been
  114. sent to port 1. The code sent to port 1 will be forced  to
  115. ASCII range by ADDing it with 255.
  116.  
  117. 002-Read keyboard and place code of character pressed   at
  118. port 1. A value of zero at port 1 indicates  that  no  key
  119. was pressed.
  120.  
  121. 003-Change screen mode. The value at port 2 is modified to
  122. suit the range 0..2 by taking it MOD 3.
  123.  
  124. 004-Move cursor to given column. The column number is sent
  125. to port 1 as normal, but is not forced into range  by  the
  126. port controller.
  127.  
  128. 005-As above, but move cursor to given column.
  129.  
  130. ╩8.1.5 Numbers In Source CodeΩ
  131.  
  132. A <number> may be given in the following forms:-
  133.  
  134. [╤#±]<decimal digits> - Decimal form of number.
  135. {&}<Hexadecimal digits> - Hexadecimal form of number.
  136. %<binary digits> - Binary form of number.
  137. '<character>' - ASCII code of character. Any character may
  138. appear between the single quotes.
  139. <label name> - The value of the given label.
  140.  
  141. ╩8.1.6 Assembler CommandsΩ
  142.  
  143. EQU <number> - Set the last label to hold the given number
  144. DEFB ++<number> - Enter a list of bytes  into  the  source
  145. code at the current position.
  146. DEFM '<string>' - Store the given string in the code.
  147.  
  148. ╩8.2 Monitor CommandsΩ
  149.  
  150. ╩Format:Ω MONITOR <file path>
  151.  
  152. The given <file path> points to the object  code  produced
  153. by the assembler program.
  154.  
  155.  
  156. ╩8.2.1 Control KeysΩ
  157.  
  158. `P' - Change address stored in the program  counter  (PC).
  159. This is the address of the next instruction to be executed
  160. by the CPU.
  161.  
  162. `M' - Modify memory. Values  can  be  placed  into  memory
  163. using this option. To finish the operation, press [RETURN]
  164. on a blank line.
  165.  
  166. `R' - Run object  code  from  next  instruction.  In  this
  167. execution mode, MONITOR will display the contents  of  the
  168. CPU registers, and the memory that they point to. This  is
  169. the slowest method of running code-it also affects  screen
  170. displays.
  171.  
  172. `G' - Execute object code from next instruction.  In  this
  173. execution mode, the CPU is being emulated at it's  highest
  174. possible speed. On  average  the  CPU  can  execute  three
  175. instructions each second.
  176.  
  177. ` ' - Execute the next instruction only, in ╔RΘUN mode.
  178.  
  179. `D' - Disassemble memory.
  180.  
  181. In several of the above cases, you will  be  asked  for  a
  182. memory address. Hexadecimal numbers have to be prefixed by
  183. `&' or `&H'. Binary numbers have to be prefixed by `&X'.
  184.  
  185. The `R' and `G' options can be terminated by holding  down
  186. [CONTROL + [SPACE]]╒
  187. M <source file path> <dest file path>Θ
  188.  
  189. Sca