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

  1. module    led2   flag '-r2'
  2. title
  3. 'Binary to seven segment display decoder for Blackjack machine
  4. Michael Holley & Walter Bright     Data I/O Corp  24 Feb 1984'
  5. "
  6. "          a       binary-to-seven-segment decimal decoder
  7. "       ---
  8. "    f| g |b
  9. "      ---        segment identification
  10. "    e| d |c
  11. "      ---
  12. " digit0  digit1  digit2  digit3  blank    hit    stand    bust
  13. "  ---             ---     ---                     ---        
  14. " |   |       |       |       |           |   |   |       |   
  15. "                  ---     ---             ---     ---     ---
  16. " |   |       |   |           |           |   |       |   |   |
  17. "  ---             ---     ---                     ---     ---
  18. "
  19.     BJ5A    device    'F82S153';
  20.  
  21.     S4,S3,S2,S1,S0  pin 1,2,3,4,5;         score  = [S4,S3,S2,S1,S0];
  22.     Q3,Q2,Q1,Q0     pin 6,7,8,9;         Qstate = [Q3,Q2,Q1,Q0];
  23.     a,b,c,d,e,f,g   pin 12,13,14,15,16,17,18;     led    = [a,b,c,d,e,f,g];
  24.  
  25.     ena            pin  11;    
  26.         
  27.     ON,OFF    = 1,0;        " for common anode LEDs    
  28.     L,H,X,Z = 0,1,.X.,.Z.;
  29.     XXXX    = [.X.,.X.,.X.,.X.];
  30.  
  31. @include 'bjstate.tab'
  32.  
  33. "      input             outputs
  34. "            a    b    c    d    e    f    g
  35.     digit0    = [OFF, OFF, OFF, OFF, OFF, OFF, OFF];
  36.     digit1    = [OFF,  ON,  ON, OFF, OFF, OFF, OFF];
  37.     digit2    = [ ON,  ON, OFF,  ON,  ON, OFF,  ON];
  38.     digit3    = [ ON,  ON,  ON,  ON, OFF, OFF,  ON];
  39.     blank    = [OFF, OFF, OFF, OFF, OFF, OFF, OFF];
  40.         hit     = [OFF,  ON,  ON, OFF,  ON,  ON,  ON];
  41.         stand    = [ ON, OFF,  ON,  ON, OFF,  ON,  ON];
  42.         bust     = [OFF, OFF,  ON,  ON,  ON,  ON,  ON];
  43.  
  44.     highZ    macro { [Z, Z, Z, Z, Z, Z, Z]};
  45.  
  46. truth_table
  47.     ([ena,score] -> led)
  48.     @const i = 0;
  49.     @repeat 32 {
  50.          [ L, @expr i; ] -> @expr {digit} i/10; ; @const i = i+1;}
  51.  
  52. truth_table
  53.     ([ena,Qstate   ] -> led)
  54.      [ H, Wait     ] -> blank;
  55.      [ H, ShowHit  ] -> hit;
  56.      [ H, ShowStand] -> stand;
  57.      [ H, ShowBust ] -> bust;
  58. @page
  59.  
  60. test_vectors  'Test digits'
  61.        ([ena,Qstate   ,score] -> led )
  62.     @const i = 0;
  63.     @repeat 27 {
  64.     [ L ,ShowStand,  i  ] -> @expr {digit} i/10; ; 
  65.     [ L ,ShowBust ,  i  ] -> @expr {digit} i/10; ; 
  66.     [ L ,ShowHit  ,  i  ] -> @expr {digit} i/10; ; @const i = i+1;}
  67.  
  68. test_vectors  'Test Hit, Stand, Bust'
  69.        ([ena,Qstate   ,score] -> led )
  70.     @const i = 0;
  71.     @repeat 27 {
  72.     [ H ,Wait     , i   ] -> blank;
  73.     [ H ,ShowStand, i   ] -> stand;
  74.     [ H ,ShowHit  , i   ] -> hit;
  75.     [ H ,ShowBust , i   ] -> bust;  @const i=i+1;}
  76.  
  77. end led2
  78.  
  79.