home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / asic / alu / alu_demo.asi next >
Text File  |  1991-05-04  |  6KB  |  341 lines

  1. REM  ASIC ALU LIBRARY DEMONSTRATION
  2. REM  (c) May,1991 Steve Almond
  3. REM
  4. REM  WARNING!! Compile this from the command line ONLY.(asicc alu-demo.asi)
  5. REM
  6. MAIN:
  7. cls
  8. locate 2,20
  9. color 4,7
  10. print "ASIC ALU Library Demonstration"
  11. locate 3,22
  12. print "(c) May,1991 Steve Almond"
  13. color 7,0
  14. print " "
  15. print " "
  16. print "This will demonstrate the actions of the ALU-LIB functions-NOT:,OR:,";
  17. print "AND:,"
  18. print "XOR:,SHIFTRIGHT:,RINGSHIFTRIGHT:,SHIFTLEFT:,RINGSHIFTLEFT:."
  19. b$="                                                                          " 
  20. randomize
  21. for k=0 to 7
  22. gosub WAITFORKEY:
  23. int1=rnd(0)
  24. int2=rnd(0)
  25. gosub PRINTRESULT:
  26. next k
  27. color 2,0
  28. locate 22,0
  29. print "Press 'z' to run again. Any other key to end."
  30. gosub WAITFORKEY:
  31. if c$="z" then MAIN:
  32. end
  33. WAITFORKEY:
  34. color 4,0
  35. locate 23,0
  36. print "Press any key to continue."
  37. KEY:
  38. c$=inkey$
  39. if c$="" then KEY:
  40. return
  41. PRINTRESULT:
  42. if k>0 then NEXT1:
  43. d$=" NOT:-if bit=1 then bit=0.If bit=0 then bit=1."
  44. goto PNUM:
  45. NEXT1:
  46. if k>1 then NEXT2:
  47. d$=" OR:-(1 or 1)=1,(1 or 0)=1,(0 or 1)=1,(0 or 0)=0."
  48. goto PNUM:
  49. NEXT2:
  50. if k>2 then next3:
  51. d$=" AND:-(1 and 1)=1,(1 and 0)=0,(0 and 1)=0,(0 and 0)=0."
  52. goto PNUM:
  53. next3:
  54. if k>3 then next4:
  55. d$=" XOR:-(1 xor 1)=0,(1 xor 0)=1,(0 xor 1)=1,(0 xor 0)=0."
  56. goto PNUM:
  57. next4:
  58. if k>4 then next5:
  59. d$=" SHIFTRIGHT:=number shifted right nbits, 0 to msb."
  60. goto PNUM:
  61. next5:
  62. if k>5 then next6:
  63. d$=" RINGSHIFTRIGHT:=number shifted right nbits, lsb to msb."
  64. goto PNUM:
  65. next6:
  66. if k>6 then next7:
  67. d$=" SHIFTLEFT:=number shifted left nbits, 0 to lsb."
  68. goto PNUM:
  69. next7:
  70. d$=" RINGSHIFTLEFT:=number shifted left nbits, msb to lsb."
  71. PNUM:
  72. acc2=int1
  73. locate 10,0
  74. print b$;
  75. print "     "
  76. print b$
  77. print b$
  78. print b$
  79. locate 10,0
  80. print "The current function is";
  81. color 4,7
  82. print d$
  83. color 7,0
  84. gosub mnum:
  85. print "=INT1=";
  86. print int1
  87. opcode=k
  88. if k=0 then res:
  89. if k>3 then shf:
  90. acc2=int2
  91. gosub mnum:
  92. print "=INT2=";
  93. print int2
  94. goto res:
  95. shf:
  96. int2=1
  97. for j=1 to 15
  98. locate 12,0
  99. color 7,0
  100. res:
  101. gosub ALU:
  102. acc2=int1
  103. gosub mnum:
  104. print "=result=";
  105. print int1
  106. print "^              ^"
  107. print "msb          lsb"
  108. print b$
  109. if k < 4 then DONE:
  110. color 5,0
  111. print "INT1 shifted ";
  112. print j;
  113. print " bits"
  114. color 3,0
  115. locate 22,0
  116. print "'n' to continue shifting."
  117. gosub WAITFORKEY:
  118. locate 22,0
  119. print b$
  120. if c$="n" then nodone:
  121. j=15
  122. nodone:
  123. next j
  124. DONE:
  125. return
  126. mnum:
  127. acc3=15
  128. d$=""
  129. nmloop:
  130. acc1=zbit(acc3,acc2)
  131. if acc1=0 then nextm:
  132. d$=d$+"1"
  133. goto nextm1:
  134. nextm:
  135. d$=d$+"0"
  136. nextm1:
  137. acc3=acc3-1
  138. if acc3 > -1 then nmloop:
  139. print d$;
  140. return
  141. ALU:
  142.     if opcode=0 then NOT:
  143.     if opcode=1 then OR:
  144.     if opcode=2 then AND:
  145.     if opcode=3 then XOR:
  146.     if opcode=4 then SHIFTRIGHT:
  147.     if opcode=5 then RINGSHIFTRIGHT:
  148.     if opcode=6 then SHIFTLEFT:
  149.     if opcode=7 then RINGSHIFTLEFT:
  150.     return
  151.  
  152.  
  153. NOT:
  154.        acc1=varptr(int1)
  155.        code 83
  156.        code 137
  157.        code 195
  158.        code 139
  159.        code 7
  160.        code 247
  161.        code 208
  162.        code 137
  163.        code 7
  164.        code 91
  165.        return
  166.  
  167. OR:
  168.        acc1=varptr(int1)
  169.        code 163
  170.        code 3
  171.        code 1
  172.        acc1=varptr(int2)
  173.        code 83
  174.        code 82
  175.        code 137
  176.        code 195
  177.        code 139
  178.        code 23
  179.        code 139
  180.        code 30
  181.        code 3
  182.        code 1
  183.        code 139
  184.        code 7
  185.        code 9
  186.        code 208
  187.        code 137
  188.        code 7
  189.        code 90
  190.        code 91
  191.        return
  192.  
  193. AND:
  194.        acc1=varptr(int1)
  195.        code 163
  196.        code 3
  197.        code 1
  198.        acc1=varptr(int2)
  199.        code 83
  200.        code 82
  201.        code 137
  202.        code 195
  203.        code 139
  204.        code 23
  205.        code 139
  206.        code 30
  207.        code 3
  208.        code 1
  209.        code 139
  210.        code 7
  211.        code 33
  212.        code 208
  213.        code 137
  214.        code 7
  215.        code 90
  216.        code 91
  217.        return
  218.  
  219. XOR:
  220.        acc1=varptr(int1)
  221.        code 163
  222.        code 3
  223.        code 1
  224.        acc1=varptr(int2)
  225.        code 83
  226.        code 82
  227.        code 137
  228.        code 195
  229.        code 139
  230.        code 23
  231.        code 139
  232.        code 30
  233.        code 3
  234.        code 1
  235.        code 139
  236.        code 7
  237.        code 49
  238.        code 208
  239.        code 137
  240.        code 7
  241.        code 90
  242.        code 91
  243.        return
  244.  
  245. SHIFTRIGHT:
  246.         acc1=varptr(int1)
  247.        code 163
  248.        code 3
  249.        code 1
  250.        acc1=int2
  251.        code 83
  252.        code 81
  253.        code 136
  254.        code 193
  255.        code 139
  256.        code 30
  257.        code 3
  258.        code 1
  259.        code 139
  260.        code 7
  261.        code 211
  262.        code 232
  263.        code 137
  264.        code 7
  265.        code 89
  266.        code 91
  267.        return
  268.  
  269. RINGSHIFTRIGHT:
  270.         acc1=varptr(int1)
  271.        code 163
  272.        code 3
  273.        code 1
  274.        acc1=int2
  275.        code 83
  276.        code 81
  277.        code 136
  278.        code 193
  279.        code 139
  280.        code 30
  281.        code 3
  282.        code 1
  283.        code 139
  284.        code 7
  285.        code 211
  286.        code 200
  287.        code 137
  288.        code 7
  289.        code 89
  290.        code 91
  291.        return
  292.  
  293. SHIFTLEFT:
  294.         acc1=varptr(int1)
  295.        code 163
  296.        code 3
  297.        code 1
  298.        acc1=int2
  299.        code 83
  300.        code 81
  301.        code 136
  302.        code 193
  303.        code 139
  304.        code 30
  305.        code 3
  306.        code 1
  307.        code 139
  308.        code 7
  309.        code 211
  310.        code 224
  311.        code 137
  312.        code 7
  313.        code 89
  314.        code 91
  315.        return
  316.  
  317. RINGSHIFTLEFT:
  318.        acc1=varptr(int1)
  319.        code 163
  320.        code 3
  321.        code 1
  322.        acc1=int2
  323.        code 83
  324.        code 81
  325.        code 136
  326.        code 193
  327.        code 139
  328.        code 30
  329.        code 3
  330.        code 1
  331.        code 139
  332.        code 7
  333.        code 211
  334.        code 192
  335.        code 137
  336.        code 7
  337.        code 89
  338.        code 91
  339.        return
  340.  
  341.