module counter2

title 'digital tone sequencer'

counter2 device 'P26V12';

" Inputs: clk - 1.3824MHz from external prescaler
"         a0-a5 - address lines from other PAL
"         a0a1  - a0 & a1 done with external AND gate
"         p0p1  - p0 & p1 done with external AND gate

clk pin 1;
a0 pin 2;
a1 pin 3;
a2 pin 4;
a3 pin 5;
a4 pin 6;
a5 pin 8;
a0a1 pin 9;
p0p1 pin 10;
p0 pin 11;
p1 pin 12;

a15 pin 22 istype 'buffer,reg_d';
a14 pin 20 istype 'buffer,reg_d';
a13 pin 23 istype 'buffer,reg_d';
a12 pin 19 istype 'buffer,reg_d';
a11 pin 24 istype 'buffer,reg_d';
a10 pin 18 istype 'buffer,reg_d';
a9 pin 25 istype 'buffer,reg_d';
a8 pin 17 istype 'buffer,reg_d';
a7 pin 26 istype 'buffer,reg_d';
a6 pin 16 istype 'buffer,reg_d';
rle pin 27 istype 'buffer,reg_d';
clear pin 15 istype 'buffer,reg_d';

"
" definitions
"

c,z,x  =  .c.,.z.,.x. ;
h,l    =  1,0         ;

equations

a15.clk = clk;
a14.clk = clk;
a13.clk = clk;
a12.clk = clk;
a11.clk = clk;
a10.clk = clk;
a9.clk = clk;
a8.clk = clk;
a7.clk = clk;
a6.clk = clk;
rle.clk = clk;
clear.clk = clk;



rle.d =  a15&!a14&!a13&!a12&!a11&!a10&!a9& a8& a7&!a6&!a5& a4& a3&!a2&!a1& a0
      # !a15&!a14&!a13& a12& a11& a10&!a9&!a8&!a7& a6&!a5& a4& a3&!a2&!a1& a0
      # !a15&!a14& a13& a12& a11& a10& a9&!a8&!a7&!a6&!a5& a4& a3&!a2&!a1& a0
      # !a15& a14&!a13& a12& a11& a10& a9& a8& a7& a6&!a5& a4& a3&!a2&!a1& a0;

" clear should be asserted during the last phase of address 0x8703.  That causes
" the high byte of the counter to count to 0x00 on the next clock cycle.  Also,
" the rising edge of 'clear' causes the tone select inputs to be updated, just
" after all the 'null' samples have gone out (during 0x8700-8703).
 
clear.d = a15 & a10 & a9 & a8 & a1 & a0 & p1 & !p0;  " 0x8703, last phase
 
a6.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & !a6
       # !clear & !a5 & a6
       # !clear & !a4 & a6
       # !clear & !a3 & a6
       # !clear & !a2 & a6
       # !clear & !a0a1 & a6
       # !clear & !p0p1 & a6;
 
a7.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & !a7
       # !clear & !a6 & a7
       # !clear & !a5 & a7
       # !clear & !a4 & a7
       # !clear & !a3 & a7
       # !clear & !a2 & a7
       # !clear & !a0a1 & a7
       # !clear & !p0p1 & a7;
 
a8.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & !a8
       # !clear & !a7 & a8
       # !clear & !a6 & a8
       # !clear & !a5 & a8
       # !clear & !a4 & a8
       # !clear & !a3 & a8
       # !clear & !a2 & a8
       # !clear & !a0a1 & a8
       # !clear & !p0p1 & a8;
 
a9.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & a8 & !a9
       # !clear & !a8 & a9
       # !clear & !a7 & a9
       # !clear & !a6 & a9
       # !clear & !a5 & a9
       # !clear & !a4 & a9
       # !clear & !a3 & a9
       # !clear & !a2 & a9
       # !clear & !a0a1 & a9
       # !clear & !p0p1 & a9;
 
a10.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & a8 & a9 & !a10
        # !clear & !a9 & a10
        # !clear & !a8 & a10
        # !clear & !a7 & a10
        # !clear & !a6 & a10
        # !clear & !a5 & a10
        # !clear & !a4 & a10
        # !clear & !a3 & a10
        # !clear & !a2 & a10
        # !clear & !a0a1 & a10
        # !clear & !p0p1 & a10;
 
a11.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & a8 & a9
        & a10 & !a11
        # !clear & !a10 & a11
        # !clear & !a9 & a11
        # !clear & !a8 & a11
        # !clear & !a7 & a11
        # !clear & !a6 & a11
        # !clear & !a5 & a11
        # !clear & !a4 & a11
        # !clear & !a3 & a11
        # !clear & !a2 & a11
        # !clear & !a0a1 & a11
        # !clear & !p0p1 & a11;
 
a12.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & a8 & a9
        & a10 & a11 & !a12
        # !clear & !a11 & a12
        # !clear & !a10 & a12
        # !clear & !a9 & a12
        # !clear & !a8 & a12
        # !clear & !a7 & a12
        # !clear & !a6 & a12
        # !clear & !a5 & a12
        # !clear & !a4 & a12
        # !clear & !a3 & a12
        # !clear & !a2 & a12
        # !clear & !a0a1 & a12
        # !clear & !p0p1 & a12;
 
a13.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & a8 & a9
        & a10 & a11 & a12 & !a13
        # !clear & !a12 & a13
        # !clear & !a11 & a13
        # !clear & !a10 & a13
        # !clear & !a9 & a13
        # !clear & !a8 & a13
        # !clear & !a7 & a13
        # !clear & !a6 & a13
        # !clear & !a5 & a13
        # !clear & !a4 & a13
        # !clear & !a3 & a13
        # !clear & !a2 & a13
        # !clear & !a0a1 & a13
        # !clear & !p0p1 & a13;
 
a14.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & a8 & a9
        & a10 & a11 & a12 & a13 & !a14
        # !clear & !a13 & a14
        # !clear & !a12 & a14
        # !clear & !a11 & a14
        # !clear & !a10 & a14
        # !clear & !a9 & a14
        # !clear & !a8 & a14
        # !clear & !a7 & a14
        # !clear & !a6 & a14
        # !clear & !a5 & a14
        # !clear & !a4 & a14
        # !clear & !a3 & a14
        # !clear & !a2 & a14
        # !clear & !a0a1 & a14
        # !clear & !p0p1 & a14;
 
a15.d =   !clear & p0p1 & a0a1 & a2 & a3 & a4 & a5 & a6 & a7 & a8 & a9
        & a10 & a11 & a12 & a13 & a14 & !a15
        # !clear & !a14 & a15
        # !clear & !a13 & a15
        # !clear & !a12 & a15
        # !clear & !a11 & a15
        # !clear & !a10 & a15
        # !clear & !a9 & a15
        # !clear & !a8 & a15
        # !clear & !a7 & a15
        # !clear & !a6 & a15
        # !clear & !a5 & a15
        # !clear & !a4 & a15
        # !clear & !a3 & a15
        # !clear & !a2 & a15
        # !clear & !a0a1 & a15
        # !clear & !p0p1 & a15;

end counter2
Back