module DHCIO ( ZOUT, DTE, PAD, RI );
    output ZOUT; reg zout; reg ztmp;
    input DTE ;
    input PAD ;
    input RI  ;

    initial
       begin

       end

    always @(PAD)
       begin
          if ( !RI )
          begin
            zout = 1'b0;
            ztmp = 1'b0;
          end
          else if ( DTE === 0  )
               begin
                 zout = PAD;
                 ztmp = PAD;
               end
               else if ( DTE === 1'bx )
                        if ( PAD === 1'bz )
                          zout = 1'bx;
                        else
                          begin
                            zout = PAD;
                            ztmp = PAD;
                          end
               else if ( DTE === 1  )
                      if ( PAD === 1'bz )
                        zout = ztmp;
                      else
                        begin
                          zout = PAD;
                          ztmp = PAD;
                        end
       end
       buf  b1 (ZOUT, zout);
endmodule
