home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / asic / alu / alu_lib.asi < prev    next >
Text File  |  1991-05-04  |  5KB  |  244 lines

  1. REM  ASIC ALU LIBRARY
  2. REM  (c) May,1991 Steve Almond
  3. REM  Call as 'gosub ALU:',               _opcode meaning_
  4. REM       with 'opcode'=0,1,2,3,4,5,6,7 {0=NOT           |
  5. REM  Call with 'int1' and 'int2' as     |1=OR            |
  6. REM            the integers to operate  |2=AND           |
  7. REM            on for OR,AND,XOR. If    |3=XOR           |
  8. REM            a NOT then only 'int1'   |4=SHIFTRIGHT    |
  9. REM            must be supplied. If a   |5=RINGSHIFTRIGHT|
  10. REM            shift operation then     |6=SHIFTLEFT     |
  11. REM            'int2' must hold the     |7=RINGSHIFTLEFT |
  12. REM            number of bit positions   ----------------
  13. REM            to shift (1-15).
  14. REM  Results are returned in 'int1';'opcode' and 'int2' are returned
  15. REM  unchanged.
  16. REM
  17. REM  OPERATION:   #bits: OPERANDS: ACTIONS:
  18. REM  NOT        |       |int1     |int1=not int1
  19. REM  OR         |       |int1,int2|int1=int1 or int2
  20. REM  AND        |       |int1,int2|int1=int1 and int2
  21. REM  XOR        |       |int1,int2|int1=int1 xor int2
  22. REM  SHIFTRIGHT |1 to 15|int1,int2|int1=shft int1 rgt int2 bits,0 to msb
  23. REM  RNGSHFTRGHT|1 to 15|int1,int2|int1=shft int1 rgt int2 bits,lsb to msb
  24. REM  SHIFTLEFT  |1 to 15|int1,int2|int1=shft int1 lft int2 bits,0 to lsb
  25. REM  RNGSHFTLEFT|1 to 15|int1,int2|int1=shft int1 lft int2 bits,msb to lsb
  26. REM
  27. REM  Variable names used: opcode, int1, int2, acc1.
  28. REM
  29. REM  Routine names used: ALU:, SHIFTRIGHT:, RINGSHIFTRIGHT:, SHIFTLEFT:,
  30. REM                      RINGSHIFTLEFT:, OR:, AND:, XOR:, NOT:.
  31. REM
  32. REM  WARNINGS: When using these routines, compile your program from the
  33. REM  command line (ASICC YOURPROG.ASI). Also, these routines use the ASIC
  34. REM  String Conversion Buffer located at 0103h-0109h in the current
  35. REM  segment. There is NO error checking for the number of bits to shift
  36. REM  in the shift operations. (One could supply any number from 0 to 255 so
  37. REM  use caution.)
  38. REM
  39. REM  Feel free to modify, alter or distribute these routines as you want.
  40. REM  (As long as NO fees of any kind are charged for them.)
  41. REM  The routines may be used individually ,also, without having to go
  42. REM  through ALU:. Simply make sure to supply them with the correct
  43. REM  operands.
  44. ALU:
  45.     if opcode=0 then NOT:
  46.     if opcode=1 then OR:
  47.     if opcode=2 then AND:
  48.     if opcode=3 then XOR:
  49.     if opcode=4 then SHIFTRIGHT:
  50.     if opcode=5 then RINGSHIFTRIGHT:
  51.     if opcode=6 then SHIFTLEFT:
  52.     if opcode=7 then RINGSHIFTLEFT:
  53.     return
  54.  
  55.  
  56. NOT:
  57.        acc1=varptr(int1)
  58.        code 83
  59.        code 137
  60.        code 195
  61.        code 139
  62.        code 7
  63.        code 247
  64.        code 208
  65.        code 137
  66.        code 7
  67.        code 91
  68.        return
  69.  
  70. OR:
  71.        acc1=varptr(int1)
  72.        code 163
  73.        code 3
  74.        code 1
  75.        acc1=varptr(int2)
  76.        code 83
  77.        code 82
  78.        code 137
  79.        code 195
  80.        code 139
  81.        code 23
  82.        code 139
  83.        code 30
  84.        code 3
  85.        code 1
  86.        code 139
  87.        code 7
  88.        code 9
  89.        code 208
  90.        code 137
  91.        code 7
  92.        code 90
  93.        code 91
  94.        return
  95.  
  96. AND:
  97.        acc1=varptr(int1)
  98.        code 163
  99.        code 3
  100.        code 1
  101.        acc1=varptr(int2)
  102.        code 83
  103.        code 82
  104.        code 137
  105.        code 195
  106.        code 139
  107.        code 23
  108.        code 139
  109.        code 30
  110.        code 3
  111.        code 1
  112.        code 139
  113.        code 7
  114.        code 33
  115.        code 208
  116.        code 137
  117.        code 7
  118.        code 90
  119.        code 91
  120.        return
  121.  
  122. XOR:
  123.        acc1=varptr(int1)
  124.        code 163
  125.        code 3
  126.        code 1
  127.        acc1=varptr(int2)
  128.        code 83
  129.        code 82
  130.        code 137
  131.        code 195
  132.        code 139
  133.        code 23
  134.        code 139
  135.        code 30
  136.        code 3
  137.        code 1
  138.        code 139
  139.        code 7
  140.        code 49
  141.        code 208
  142.        code 137
  143.        code 7
  144.        code 90
  145.        code 91
  146.        return
  147.  
  148. SHIFTRIGHT:
  149.         acc1=varptr(int1)
  150.        code 163
  151.        code 3
  152.        code 1
  153.        acc1=int2
  154.        code 83
  155.        code 81
  156.        code 136
  157.        code 193
  158.        code 139
  159.        code 30
  160.        code 3
  161.        code 1
  162.        code 139
  163.        code 7
  164.        code 211
  165.        code 232
  166.        code 137
  167.        code 7
  168.        code 89
  169.        code 91
  170.        return
  171.  
  172. RINGSHIFTRIGHT:
  173.         acc1=varptr(int1)
  174.        code 163
  175.        code 3
  176.        code 1
  177.        acc1=int2
  178.        code 83
  179.        code 81
  180.        code 136
  181.        code 193
  182.        code 139
  183.        code 30
  184.        code 3
  185.        code 1
  186.        code 139
  187.        code 7
  188.        code 211
  189.        code 200
  190.        code 137
  191.        code 7
  192.        code 89
  193.        code 91
  194.        return
  195.  
  196. SHIFTLEFT:
  197.         acc1=varptr(int1)
  198.        code 163
  199.        code 3
  200.        code 1
  201.        acc1=int2
  202.        code 83
  203.        code 81
  204.        code 136
  205.        code 193
  206.        code 139
  207.        code 30
  208.        code 3
  209.        code 1
  210.        code 139
  211.        code 7
  212.        code 211
  213.        code 224
  214.        code 137
  215.        code 7
  216.        code 89
  217.        code 91
  218.        return
  219.  
  220. RINGSHIFTLEFT:
  221.        acc1=varptr(int1)
  222.        code 163
  223.        code 3
  224.        code 1
  225.        acc1=int2
  226.        code 83
  227.        code 81
  228.        code 136
  229.        code 193
  230.        code 139
  231.        code 30
  232.        code 3
  233.        code 1
  234.        code 139
  235.        code 7
  236.        code 211
  237.        code 192
  238.        code 137
  239.        code 7
  240.        code 89
  241.        code 91
  242.        return
  243.  
  244.