home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s199 / 1.img / CNT10ROM.ABL < prev    next >
Encoding:
Text File  |  1986-02-04  |  2.7 KB  |  112 lines

  1. module _cnt10rom   flag '-D82'
  2. title 'decimal Up/Down counter in PROM
  3. Dave Pellerin  FutureNet - Data I/O  Jan 1986'
  4.  
  5.     cnt10rom    device 'RA10R8';
  6.  
  7. "The RA10R8 is a subset of the MMI 63RS881, the registers are not implemented.
  8.  
  9.     Clr,Dir,OE        pin 3,4,19;
  10.     I3,I2,I1,I0        pin 5,6,7,8;
  11.     Q3,Q2,Q1,Q0        pin 13,11,10,9 ;
  12.     
  13. " Inputs I3..I0 are the external feedback from registers Q3..Q0.
  14.  
  15.     Input    = [I3,I2,I1,I0];
  16.     Output    = [Q3,Q2,Q1,Q0];
  17.  
  18.     X,Z    =  .X., .Z.;
  19.  
  20. " Counter States
  21.     S0 = 0; S1 = 1;    S2 = 2; S3 = 3;    S4 = 4;
  22.     S5 = 5; S6 = 6;    S7 = 7; S8 = 8;    S9 = 9;
  23.  
  24. " Counter modes
  25.     Mode    = [Clr,Dir];
  26.     Up    = [ 1 , 1 ];
  27.     Down    = [ 1 , 0 ];
  28.     Clear    = [ 0 , X ];
  29.  
  30. " This FUSES section will set the initialization words to force 
  31. " the device to power up in state S9.  A different value could 
  32. " be used for each of the 16 words.  Look at the expanded list
  33. " file (Parse option -E) to see how to create such a FUSES section.
  34.  
  35. fuses    @const a = 1024 * 8;    
  36.     @repeat 16 {
  37.      [@expr a; .. @expr a + 7;] = S9;  @const a = a + 8;}
  38.  
  39. test_vectors (  [OE, Mode ,Input] -> Output)
  40.         [ 0, Clear,  X  ] ->    S0;
  41.         [ 0, Up   , S0  ] ->    S1;
  42.         [ 0, Up   , S1  ] ->    S2;
  43.         [ 0, Up   , S2  ] ->    S3;
  44.         [ 0, Up   , S3  ] ->    S4;
  45.         [ 0, Up   , S4  ] ->    S5;
  46.         [ 0, Up   , S5  ] ->    S6;
  47.         [ 0, Up   , S6  ] ->    S7;
  48.         [ 0, Up   , S7  ] ->    S8;
  49.         [ 0, Up   , S8  ] ->    S9;
  50.         [ 0, Up   , S9  ] ->    S0;
  51.         [ 0, Up   , S0  ] ->    S1;
  52.         [ 0, Down , S1  ] ->    S0;
  53.         [ 0, Down , S0  ] ->    S9;
  54.         [ 1, Down , S9  ] ->    Z ;
  55.         [ 0, Down , S8  ] ->    S7;
  56.         [ 0, Clear,  X  ] ->    S0;
  57. @page
  58.  
  59. state_diagram Input->Output
  60.  
  61.     State S0:    case (Mode == Up)    : S1;
  62.                  (Mode == Down)  : S9;
  63.                  (Mode == Clear) : S0;
  64.             endcase;
  65.  
  66.     State S1:    case (Mode == Up)    : S2;
  67.                  (Mode == Down)  : S0;
  68.                  (Mode == Clear) : S0;
  69.             endcase;
  70.  
  71.     State S2:    case (Mode == Up)    : S3;
  72.                  (Mode == Down)  : S1;
  73.                  (Mode == Clear) : S0;
  74.             endcase;
  75.  
  76.     State S3:    case (Mode == Up)    : S4;
  77.                  (Mode == Down)  : S2;
  78.                  (Mode == Clear) : S0;
  79.             endcase;
  80.  
  81.     State S4:    case (Mode == Up)    : S5;
  82.                  (Mode == Down)  : S3;
  83.                  (Mode == Clear) : S0;
  84.             endcase;
  85.  
  86.     State S5:    case (Mode == Up)    : S6;
  87.                  (Mode == Down)  : S4;
  88.                  (Mode == Clear) : S0;
  89.             endcase;
  90.  
  91.     State S6:    case (Mode == Up)    : S7;
  92.                  (Mode == Down)  : S5;
  93.                  (Mode == Clear) : S0;
  94.             endcase;
  95.  
  96.     State S7:    case (Mode == Up)    : S8;
  97.                  (Mode == Down)  : S6;
  98.                  (Mode == Clear) : S0;
  99.             endcase;
  100.  
  101.     State S8:    case (Mode == Up)    : S9;
  102.                  (Mode == Down)  : S7;
  103.                  (Mode == Clear) : S0;
  104.             endcase;
  105.  
  106.     State S9:    case (Mode == Up)    : S0;
  107.                  (Mode == Down)  : S8;
  108.                  (Mode == Clear) : S0;
  109.             endcase;
  110. end 
  111.  
  112.