module RPEX
title 'ROM-PORT EXPANDER for Atari ST Computers'

RPEXIC1 device 'P20V8' ;

        X,C,L,H,OFF,ON,HI       =       .X., .C., 0, 1, 0, 1, .Z.;
        VCC, GND                pin     24,12 ;
        CLK, !HIGH, !UDS, !ROM4 pin     1, 2, 3, 4 ;
        A1,A2,A3,A4,A5,A6,A7    pin     5,6,7,8,9,10,11 ;
        IS1ST, TAST             pin     14, 23 ;
        !D0, !D1                pin     17, 18 ;
        !ENAA, !ENAB, CLKOUT    pin     15, 16, 22 ;
        O1, O2, O3              pin     19, 20, 21;
        D0,D1                   istype 'NEG' ;
        ENAA, ENAB              istype 'NEG' ;
        ISHIGH                  = HIGH & A7 & A6 & A5 & A4;
        ADDR                    = [HIGH,A7,A6,A5,A4,A3,A2,A1] ;
        ENA = [ENAB,ENAA] ; SEL = [UDS, ROM4] ;
        VOID = ^B11 ; DIS = ^B00 ; A = ^B01 ; B = ^B10 ;

EQUATIONS

STATE_DIAGRAM IN RPEXIC1 ENA
  STATE DIS : IF TAST THEN A ;
  STATE A   : IF TAST THEN B ;
  STATE B   : IF TAST THEN DIS ;
  STATE VOID: GOTO A ;
  
EQUATIONS

 ENA  :=  (!TAST & O1 & O2 & ISHIGH & !A3 & IS1ST &!A1) & A
         #(!TAST & O1 & O2 & ISHIGH & !A3 &!IS1ST &!A2) & A
         #(!TAST & O1 & O2 & ISHIGH & !A3 & IS1ST & A1) & B
         #(!TAST & O1 & O2 & ISHIGH & !A3 &!IS1ST & A2) & B
         #(!TAST & (!O1 # !O2 # !ISHIGH # A3)) & ENA ;
  
  O1  :=   ISHIGH & !O1 & A3 & A2 & A1
         # ISHIGH & O2 & O1 ;
  O2  :=   ISHIGH & (O2 # O1) & A3 & A2 & A1
         # ISHIGH & O2 & O1 ;
  D0   =   !O1 & ENAB ;
  D1   =   !O1 & ENAB ;
CLKOUT =   (ROM4 & UDS) # TAST ;


ENABLE CLKOUT = ON ;
ENABLE D0     = O2 & ISHIGH & IS1ST ;
ENABLE D1     = O2 & ISHIGH &!IS1ST ;

end RPEX
