home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / firmware / computers / b / pla-hp-906114-5.c < prev    next >
Encoding:
C/C++ Source or Header  |  2003-06-08  |  2.8 KB  |  107 lines

  1. /** pROGRAM TO CONVERT LOGIC EQUATIONS
  2.  * OF 16 INPUTS AND 8 OUTPUTS
  3.  * TO A 64-KILOBYTE TRUTH TABLE.
  4.  * @AUTHOR mARKO m{$e4}KEL{$e4} (MSMAKELA@NIC.FUNET.FI)
  5.  * @DATE 8TH jULY 2003, BASED ON A VERSION FROM 2ND jULY 2002
  6.  * tHE EQUATIONS IN THIS PROGRAM HAVE BEEN TRANSLATED FROM THE
  7.  * machxl DESIGN DESCRIPTION SUPPLIED BY jENS sCH{$f6}NFELD (JENS@AMI.GA),
  8.  * AND VERIFIED AGAINST THE 64-KILOBYTE DUMPS SUPPLIED BY jENS sCH{$f6}NFELD.
  9.  *
  10.  * cOMPILATION:
  11.  *CC -O PLA 906114-5.C
  12.  * eXAMPLE USAGE:
  13.  *./PLA {$7c} DIFF - PLA-DUMP.BIN
  14.  * OR
  15.  *./PLA > PLA-DUMP.BIN
  16.  */
  17.  
  18. #INCLUDE <STDIO.H>
  19.  
  20. /** eXTRACT AN INPUT BIT
  21.  * @PARAM BTHE BIT TO BE EXTRACTED
  22.  * @RETURNNONZERO IF THE INPUT BIT B IS SET
  23.  */
  24. #DEFINE i(B) (!!((I) & (1 << B)))
  25.  
  26. /** @NAME tHE INPUT SIGNALS.
  27.  * tHIS MAPPING CORRESPONDS TO THE 82s100 TO 27512 ADAPTER MADE BY
  28.  * jENS sCH{$f6}NFELD (JENS@AMI.GA).  nOTE ALSO THE PERMUTATION OF OUTPUTS
  29.  * IN THE MAIN LOOP.
  30.  */
  31. /*@{$7b}*/
  32. #DEFINE i0i(1)
  33. #DEFINE i1i(2)
  34. #DEFINE i2i(3)
  35. #DEFINE i3i(4)
  36. #DEFINE i4i(5)
  37. #DEFINE i5i(6)
  38. #DEFINE i6i(7)
  39. #DEFINE i7i(12)
  40. #DEFINE i8i(14)
  41. #DEFINE i9i(13)
  42. #DEFINE i10i(8)
  43. #DEFINE i11i(9)
  44. #DEFINE i12i(11)
  45. #DEFINE i13i(15)
  46. #DEFINE i14i(10)
  47. #DEFINE i15i(0)
  48. /*@{$7d}*/
  49.  
  50. /** @NAME tHE OUTPUT SIGNALS. */
  51. /*@{$7b}*/
  52. #DEFINE f4 !((!i3&&!i2&&!i1&&i0&&!i13&&i8){$7c}{$7c}\
  53.      (!i13&&i8&&i11){$7c}{$7c}\
  54.      (!i3&&!i2&&!i1&&i0&&!i10&&!i8){$7c}{$7c}\
  55.      (!i10&&!i8&&i11))
  56. #DEFINE f5 !((!i3&&!i2&&i1&&!i0&&!i13&&i8){$7c}{$7c}\
  57.      (!i13&&i8&&i11){$7c}{$7c}\
  58.      (!i3&&!i2&&i1&&!i0&&!i10&&!i8){$7c}{$7c}\
  59.      (!i10&&!i8&&i11))
  60. #DEFINE f6 !((!i3&&!i2&&i1&&i0&&!i13&&i8){$7c}{$7c}\
  61.      (!i13&&i8&&i11){$7c}{$7c}\
  62.      (!i3&&!i2&&i1&&i0&&!i10&&!i8){$7c}{$7c}\
  63.      (!i10&&!i8&&i11))
  64. #DEFINE f7 !((!i3&&i2&&!i1&&!i0&&!i13&&i8){$7c}{$7c}\
  65.      (!i13&&i8&&i11){$7c}{$7c}\
  66.      (!i3&&i2&&!i1&&!i0&&!i10&&!i8){$7c}{$7c}\
  67.      (!i10&&!i8&&i11))
  68. #DEFINE f0 !((!i3&&!i2&&!i1&&i0&&!i12&&i8&&!i11){$7c}{$7c}\
  69.      (!i3&&!i2&&!i1&&i0&&!i9&&!i8&&!i11))
  70. #DEFINE f1 !((!i3&&!i2&&i1&&!i0&&!i12&&i8&&!i11){$7c}{$7c}\
  71.      (!i3&&!i2&&i1&&!i0&&!i9&&!i8&&!i11))
  72. #DEFINE f2 !((!i3&&!i2&&i1&&i0&&!i12&&i8&&!i11){$7c}{$7c}\
  73.      (!i3&&!i2&&i1&&i0&&!i9&&!i8&&!i11))
  74. #DEFINE f3 !((!i3&&i2&&!i1&&!i0&&!i12&&i8&&!i11){$7c}{$7c}\
  75.      (!i3&&i2&&!i1&&!i0&&!i9&&!i8&&!i11))
  76. /*@{$7d}*/
  77.  
  78. /** tHE MAIN PROGRAM
  79.  * @PARAM ARGCCOMMAND LINE ARGUMENT COUNT
  80.  * @PARAM ARGVCOMMAND LINE ARGUMENT VECTOR
  81.  * @RETURNZERO ON SUCCESSFUL TERMINATION
  82.  */
  83. INT
  84. MAIN (INT ARGC, CHAR** ARGV)
  85. {$7b}
  86.   /** tHE INPUT COMBINATION, AT LEAST 16 BITS */
  87.   REGISTER UNSIGNED INT I = 0;
  88.   DO {$7b}
  89.     /** tHE OUTPUT COMBINATION, 8 BITS */
  90.     REGISTER UNSIGNED CHAR O = 0;
  91.     /* tHE OUTPUTS ARE PERMUTED SO THAT THEY CORRESPOND TO THE ADAPTER
  92.      * MADE BY jENS sCH{$f6}NFELD.
  93.      */
  94.     IF (f0) O {$7c}= 1 << 6;
  95.     IF (f1) O {$7c}= 1 << 5;
  96.     IF (f2) O {$7c}= 1 << 4;
  97.     IF (f3) O {$7c}= 1 << 3;
  98.     IF (f4) O {$7c}= 1 << 2;
  99.     IF (f5) O {$7c}= 1 << 1;
  100.     IF (f6) O {$7c}= 1 << 0;
  101.     IF (f7) O {$7c}= 1 << 7;
  102.     PUTCHAR (O);
  103.   {$7d}
  104.   WHILE (++I & 0XFFFF);
  105.   RETURN 0;
  106. {$7d}
  107.