home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / firmware / drives / new / 1551 / 1551.251641-3.c < prev    next >
C/C++ Source or Header  |  2003-06-08  |  2KB  |  94 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 251641-3.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 f0 !((!i15&&i0&&i1&&i2&&i3&&i4&&i5&&i6&&\
  53.       i11&&i14&&!i12&&!i7&&i9&&!i8&&i13){$7c}{$7c}\
  54.      (i15&&i0&&i1&&i2&&i3&&i4&&i5&&i6&&\
  55.       i11&&i14&&!i12&&!i7&&i9&&i8&&i13))
  56. #DEFINE f1 i0&&i6&&!i7
  57. #DEFINE f2 0
  58. #DEFINE f3 0
  59. #DEFINE f4 0
  60. #DEFINE f5 0
  61. #DEFINE f6 0
  62. #DEFINE f7 i10{$7c}{$7c}(!i10&&i6&&i0&&!i7)
  63. /*@{$7d}*/
  64.  
  65. /** tHE MAIN PROGRAM
  66.  * @PARAM ARGCCOMMAND LINE ARGUMENT COUNT
  67.  * @PARAM ARGVCOMMAND LINE ARGUMENT VECTOR
  68.  * @RETURNZERO ON SUCCESSFUL TERMINATION
  69.  */
  70. INT
  71. MAIN (INT ARGC, CHAR** ARGV)
  72. {$7b}
  73.   /** tHE INPUT COMBINATION, AT LEAST 16 BITS */
  74.   REGISTER UNSIGNED INT I = 0;
  75.   DO {$7b}
  76.     /** tHE OUTPUT COMBINATION, 8 BITS */
  77.     REGISTER UNSIGNED CHAR O = 0;
  78.     /* tHE OUTPUTS ARE PERMUTED SO THAT THEY CORRESPOND TO THE ADAPTER
  79.      * MADE BY jENS sCH{$f6}NFELD.
  80.      */
  81.     IF (f0) O {$7c}= 1 << 6;
  82.     IF (f1) O {$7c}= 1 << 5;
  83.     IF (f2) O {$7c}= 1 << 4;
  84.     IF (f3) O {$7c}= 1 << 3;
  85.     IF (f4) O {$7c}= 1 << 2;
  86.     IF (f5) O {$7c}= 1 << 1;
  87.     IF (f6) O {$7c}= 1 << 0;
  88.     IF (f7) O {$7c}= 1 << 7;
  89.     PUTCHAR (O);
  90.   {$7d}
  91.   WHILE (++I & 0XFFFF);
  92.   RETURN 0;
  93. {$7d}
  94.