| 
					
				 | 
			
			
				@@ -0,0 +1,321 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 7474 flip flop emulation using a fast clock to emulate asynchronous logic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module ff_7474s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  #( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    parameter logic init = 1'b1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input  fast_clk, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input  d, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input  c, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input  s_n, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input  r_n, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    output q_p, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    output q_n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   reg	   c_q = 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire	   strobe = c & ~c_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // Handle the transient state, too (R# = S# = 0  =>  Q = Q# = 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   reg	   q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire	   transient = ~r_n & ~s_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign q_p =  q | transient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign q_n = ~q | transient; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   always @(posedge fast_clk) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Clock edge detect 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	c_q <= c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (~r_n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  q <= 1'b0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	else if (~s_n) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  q <= 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	else if (strobe) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  q <=  d; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endmodule // ff_7474s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 74393 counter emulation using a fast clock to emulate a gated ripple clock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module ctr_74393s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  #( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    parameter bits = 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input		  fast_clk, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input		  cp_n, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    input		  mr, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    output reg [bits-1:0] q 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   reg			  cp_n_q = 1'b0; // Edge detect 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			  strobe = cp_n_q & ~cp_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   always @(posedge fast_clk) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	cp_n_q <= cp_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (mr)	     // Asynchronous reset 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  q <= 'b0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  q <= q + strobe; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endmodule // ctr_74393s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 74155 decoder emulation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module dc_74155 #( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  parameter bits = 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  parameter outs = 1 << bits 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  ) ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     input		   e, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     input [bits-1:0]	   a, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		     output reg [outs-1:0] q_n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   always_comb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for (int i = 0; i < outs; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     logic [bits-1:0] ii; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     ii = i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     q_n[i] = ~(e && a == ii); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     ii++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endmodule // dc_74155 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Smartaid Magnum asynchronous ROM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Open-coded to allow synthesis as random logic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module samu15 ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       input [8:0]	a, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       output reg [3:0]	q 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   always_comb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     casez (a[5:0]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       6'b0100_00: q = { 2'b11, ~a[6], 1'b1 };		// F, D 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       6'b0100_?1: q = 4'b1001;				// 9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       6'b0100_10: q = { 3'b100, a[8:7] == 2'b10 };	// 8, 9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       6'b0101_0?: q = 4'b1110;				// E 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       6'b0110_00: q = ~a[6] ? 4'hD : 4'h4;		// D, 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       6'b0111_10: q = { 3'b110, a[8:7] != 2'b10 };	// D, C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       default:	   q = 4'b0100;				// 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     endcase // casez (a[5:0]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endmodule // samu15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// Smartaid Magnum; SRAM not included 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module samagnum ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 input		   fast_clk, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 input		   stb_50us, // ~50 us fast_clk strobe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 input		   clk, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 input		   xmemwr_n, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 input		   xmemfl_n, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 output		   xmemfl_out_n, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 output		   resin_n, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 input [15:0]	   a, // Address from ABC-bus 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 output reg [15:0] a_out, // Possibly modified address 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 output		   a_map, // Use this map 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 output [7:0]	   dout, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 output		   dout_oe // Use the data from dout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      out_dir;   // "Real life" bus switch (0 = out) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      sram_we = xmemwr_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      sram_oe; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      sram_ce; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      pwrgood_n = 1'b0; // From Q1/Q2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire [1:0]		      eprom_ce; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      eprom_oe; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire [8:0]		      prom_a; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire [3:0]		      prom_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign prom_a[5:0] = a[15:10]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      bank_sel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire [1:0]		      bank; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // Memory address translation (the actual memory is external) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign a_map        = (~xmemfl_n & ~out_dir) | (~sram_ce & ~sram_oe); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   always_comb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	a_out = a; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (a_map) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     a_out[15:14] = bank; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     if (~eprom_ce[1]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       a_out[13:10] = 4'b1110; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     else if (~sram_ce) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       a_out[13:11] = 3'b010; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	     else if (~eprom_ce[0]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       a_out[13:12] = 2'b00; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     end // always_comb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire [7:0]		      u5_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire [3:0]		      u7a_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire [3:0]		      u7b_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      nor_in_9_2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      nor_in_10_2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      nor_in_12_1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u6d5a_q, u6d5a_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u6d5b_q, u6d5b_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9e2l1a_q, u9e2l1a_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9e2l1b_q, u9e2l1b_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9e2h1a_q, u9e2h1a_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9e2h1b_q, u9e2h1b_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9e3a_q, u9e3a_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9e3b_q, u9e3b_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U3 74LS245 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // Emulated using an output enable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign dout_oe = ~out_dir & (~&eprom_ce | eprom_oe) & (~sram_ce | sram_oe); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U4 74LS126 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // Emulated by using OR with the tristate component 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign dout[7:5] = 3'b111; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign dout[4]   = ~nor_out2 | u5_q[2]; // U4A 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign dout[3]   = ~nor_out2 | u5_q[3]; // U4C 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign dout[2]   = ~nor_out2 | u5_q[1]; // U4B 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign dout[1]   = 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign dout[0]   = ~nor_out2 | u5_q[4]; // U4D 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U5 74LS393 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ctr_74393s u5a(.fast_clk(fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 .cp_n(clk),     .mr(u9e3a_q), .q(u5_q[3:0])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ctr_74393s u5b(.fast_clk(fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .cp_n(u5_q[3]), .mr(u10c),    .q(u5_q[7:4])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U7 74LS155 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   dc_74155 u7a(.e(prom_q[3]), .a(prom_q[1:0]), .q_n(u7a_qn)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   dc_74155 u7b(.e(~sram_we),  .a(prom_q[1:0]), .q_n(u7b_qn)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign eprom_ce[1] = u7a_qn[0]; //  64 kbit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign eprom_ce[0] = u7a_qn[1]; // 128 kbit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign bank_sel    = u7b_qn[3]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U9 74LS260 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9a = ~(a[5] | a[7] | a[8] | a[9] | nor_in_12_1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u9b = ~(xmemfl_n | nor_in_9_2 | nor_in_10_2 | prom_q[2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      nor_out2 = u9b; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U10 74LS00 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u10a = ~prom_q[3]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u10b = ~(u5_q[2] & u5_q[4]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u10c = ~(u9e3b_qn & u9e3a_qn); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u10d = ~(a[6] & u9a); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign prom_a[6] = u10d; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U11 74LS32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u11a = prom_q[3] | xmemfl_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u11b = nor_out2 | xmemfl_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u11c = xmemfl_n | u10a; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u11d = prom_q[2] | xmemfl_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign xmemfl_out_n   = u11a; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign eprom_oe       = u11b; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U12 74LS08 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // This is an RC delay in the original; emulated here using 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // an up/down counter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   reg [2:0]		      u12b_rc_ctr = 3'd7; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   reg			      u12b_rc     = 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u12b_rc_in = u9e2l1b_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   always @(posedge fast_clk) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     if (stb_50us) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  if (u12b_rc_in & ~u12b_rc) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       if (&u12b_rc_ctr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 u12b_rc <= 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 u12b_rc_ctr <= u12b_rc_ctr + 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	  else if (~u12b_rc_in & u12b_rc) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       if (~|u12b_rc_ctr) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 u12b_rc <= 1'b0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	       else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 u12b_rc_ctr <= u12b_rc_ctr - 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   //wire		      u12a = xmemfl_n & xmemfl_out_n; // Dead 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u12b = u12b_rc & u9e3b_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u12c = u11c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   //wire		      u12d = 1'bx; // Unconnected 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign out_dir = u12c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U13 74HC32 (HC!) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u13a = pwrgood_n | u7a_qn[2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   //wire		      u13b = sram_we; // Dead 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   //wire		      u13c = pwrgood_n; // Dead 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      u13d = pwrgood_n | xmemfl_n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign sram_ce = u13a; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign sram_oe = u13d; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U15 82S131 decode PROM 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign prom_a[8:7] = bank; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   samu15 u15 (.a(prom_a), .q(prom_q)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U6_D5 74LS74 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ff_7474s u6d5a(.fast_clk (fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .d (xmemfl_n), .c (clk), .s_n (u9e3b_q), .r_n (1'b1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .q_p(u6d5a_q), .q_n ()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign nor_in_10_2 = u6d5a_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ff_7474s u6d5b(.fast_clk (fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .d (nor_in_10_2), .c (clk), .s_n (u9e3b_q), .r_n (1'b1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .q_p (u6d5b_q), .q_n()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign nor_in_9_2 = u6d5b_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   wire			      reset_bank = 1'b1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U9_E2_L1 74LS74 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ff_7474s u9e2l1a(.fast_clk (fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    .d(a[1]), .c(bank_sel), .s_n(1'b1), .r_n(reset_bank), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    .q_p(u9e2l1a_q), .q_n()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign bank[0] = u9e2l1a_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ff_7474s u9e2l1b(.fast_clk (fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    .d(clk), .c(u11d), .s_n(u12b), .r_n(1'b1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    .q_p(u9e2l1b_q), .q_n(u9e2l1b_qn)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign resin_n = ~u9e2l1b_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U9_E2_H1 74LS74 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ff_7474s u9e2h1a(.fast_clk (fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    .d(a[0]), .c(bank_sel), .s_n(1'b1), .r_n(reset_bank), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		    .q_p(u9e2h1a_q), .q_n()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign bank[1] = u9e2h1a_q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U9_E2_H1B unconnected 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   // U9_E3 74LS74 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ff_7474s u9e3a(.fast_clk (fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .d(clk), .c(u11d), .s_n(1'b1), .r_n(clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .q_p(u9e3a_q), .q_n(u9e3a_qn)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   ff_7474s u9e3b(.fast_clk (fast_clk), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .d(1'b0), .c(u9e3a_q), .s_n(u10b), .r_n(1'b1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		  .q_p(u9e3b_q), .q_n(u9e3b_qn)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   assign nor_in_12_1 = u9e3b_qn; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+endmodule // samagnum 
			 |