summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/machine/nl_hazelvid.cpp
blob: acfb9a5e625bb4995b31f8dd7c278a552879c2de (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
                       









                                                                            






































                                                                                    
                                                                                               
                                               

                             
                                                                    







                                      

                                           









                                                                                    
                                                    
 
                                   

                                                                              
                                      


                                                      

                                                    
 


                                                       
 


                                                                             



















                                                     


                                                                              






                                                           
                              
 


                                                                          
 


                                             





                                                                                              

                                                                              



                         
                         







                          










                                               



















                                                                                              











                                                                                              














                                                                                                                                            
                                                                                              




                                                                                                                 
                                     























                                                                                                                          
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz

/***************************************************************************

  Netlist (hazelvid) included from hazeltin.cpp

***************************************************************************/

#include "netlist/devices/net_lib.h"

#ifndef __PLIB_PREPROCESSOR__
#endif

NETLIST_START(hazelvid)

	SOLVER(Solver, 48000)
	PARAM(Solver.PARALLEL, 0) // Don't do parallel solvers
	PARAM(Solver.ACCURACY, 1e-4) // works and is sufficient
	PARAM(NETLIST.USE_DEACTIVATE, 1)

	ANALOG_INPUT(V5, 5)

	TTL_INPUT(high, 1)
	TTL_INPUT(low, 0)

	MAINCLOCK(video_clk, 16632000.0)

	/* Character line counter, divide-by-9 */
	TTL_74161(u88, high, high, high, low, high, u87_6.Q, video_clk, high, high)

	TTL_7404_INVERT(u87_6, u88.RCO)

	TTL_74175(u81, video_clk, u88.RCO, u81.Q1, low, u88.QC, high)

	TTL_7404_INVERT(u87_5, u81.Q1)
	ALIAS(ndot, u87_5.Q)
	TTL_7404_INVERT(u59_4, u81.Q1Q)
	ALIAS(dot, u59_4.Q)

	/* Character bucket counter */

	/* least significant 4 bits */
	TTL_74161(u70, low, low, low, low, high, u59_5.Q, u81.Q2Q, high, high)

	/* most significant 4 bits */
	TTL_74161(u69, low, low, low, low, high, u59_5.Q, u81.Q2Q, u70.RCO, u70.RCO)
	/* Horizontal/Vertical timing signals */

	/* signal lookup PROM */
	PROM_82S126(u71, low, low, u70.QA, u70.QB, u70.QC, u70.QD, u69.QA, u69.QB, u69.QC, low)
	PARAM(u71.ROM, "u90_702128_82s129.bin")

	/* signal decoding */
	TTL_9334(u72, high, u81.Q1Q, u71.O4, u71.O1, u71.O2, u71.O3)
	ALIAS(hms, u72.Q1)
	ALIAS(hmsd, u72.Q2)
	ALIAS(hblank, u72.Q3)
	ALIAS(vstrobe, u72.Q4)
	ALIAS(hdriveq, u72.Q5)
	ALIAS(vidbus, u72.Q6)
	TTL_7404_INVERT(u59_5, u72.Q7)

	TTL_7400_NAND(u83_1, high, vstrobe)
	ALIAS(char_line_clk, u83_1.Q)

	/* Character line counter */
	TTL_74161(u84, low, low, low, low, high, u83_3.Q, char_line_clk, high, high)
	ALIAS(lc20, u84.QA)
	ALIAS(lc21, u84.QB)
	ALIAS(lc22, u84.QC)
	ALIAS(lc23, u84.QD)
	TTL_7400_NAND(u83_3, u84.QB, u84.QD)
	TTL_7404_INVERT(u92_5, u90.QD)

	TTL_7410_NAND(u89_3, u90.QD, u90.QC, u90.QA)

	/* Character row counter */
	TTL_74161(u90, low, low, low, low, high, u89_3.Q, u92_3.Q, high, high)
	TTL_7404_INVERT(u92_3, u84.QD)
	TTL_7404_INVERT(u92_1, u90.QB)

	TTL_7474(u95_2, u92_5.Q, u95_2.QQ, high, high)

	TTL_7411_AND(u91_3, u84.QA, u84.QD, u90.QB)
	TTL_7411_AND(u91_1, u92_1.Q, u90.QA, u84.QC)

	TTL_7404_INVERT(u92_2, u90.QC)
	TTL_7411_AND(u91_2, u95_2.QQ, u92_2.Q, u92_5.Q)
	TTL_7404_INVERT(u92_6, u91_2.Q)

	/* Vertical blanking and drive */
	TTL_7473(u85_vdrive, char_line_clk, u91_1.Q, u91_3.Q, u85_vblankq.QQ)
	TTL_7473(u85_vblankq, char_line_clk, u92_6.Q, u91_2.Q, high)

	/* Outgoing signals */
	TTL_7404_INVERT(u73_4, hdriveq)
	ALIAS(hdrive, u73_4.Q)

	TTL_7404_INVERT(u61_6, hmsd)
	TTL_7402_NOR(u60_1, u61_6.Q, u81.Q4)
	ALIAS(lbc, u60_1.Q)

	TTL_7404_INVERT(u74_1, u84.QB)
	TTL_7410_NAND(u89_2, vidbus, vidbus, u82_2.Q)
	ALIAS(ncntbenq, u89_2.Q)

	TTL_7410_NAND(u89_1, u81.Q2, hmsd, u82_2.Q)
	TTL_7400_NAND(u83_4, u89_1.Q, high)
	ALIAS(cntclk, u83_4.Q)

	TTL_7402_NOR(u60_2, hblank, u85_vblankq.QQ)
	ALIAS(clr_vid_sr, u60_2.Q)

	TTL_7404_INVERT(u92_4, u84.QB)
	TTL_74260_NOR(u82_2, u85_vblankq.QQ, u92_3.Q, u84.QC, u92_4.Q, u84.QA)
	TTL_7400_NAND(u83_2, vstrobe, u82_2.Q)
	ALIAS(sync_bus_disable_q, u83_2.Q)

	ALIAS(vdrive, u85_vdrive.Q)
	TTL_7404_INVERT(u73_5, vdrive)
	ALIAS(vdriveq, u73_5.Q)

	TTL_7474(u95_1, u84.QD, u85_vblankq.QQ, high, high)
	ALIAS(vblank, u95_1.Q)

	TTL_74260_NOR(u82_1, u85_vblankq.QQ, u92_4.Q, u84.QD, u84.QC, low)
	TTL_7404_INVERT(u61_3, u82_1.Q)
	ALIAS(tvinterq, u61_3.Q)

	TTL_INPUT(cpu_iowq, 1)
	TTL_INPUT(cpu_ba4, 1)
	TTL_7432_OR(u36_1, cpu_iowq, cpu_ba4)

	/* Character address counter */
	TTL_74193(u7, low,   low,   low,   low,   low, u36_1.Q, cntclk, high)
	TTL_74193(u5, cpu_db0, cpu_db1, cpu_db2, cpu_db3, low, u36_1.Q, u7.CARRYQ, u7.BORROWQ)
	TTL_74193(u3, cpu_db4, cpu_db5, cpu_db6, cpu_db7, low, u36_1.Q, u5.CARRYQ, u5.BORROWQ)

	TTL_74365(u6, low, ncntbenq, u7.QA, u7.QB, u7.QC, u7.QD, u5.QA, u5.QB)
	TTL_74365(u4, low, ncntbenq, u5.QC, u5.QD, u3.QA, u3.QB, u3.QC, low)
	ALIAS(ba0, u6.Y1)
	ALIAS(ba1, u6.Y2)
	ALIAS(ba2, u6.Y3)
	ALIAS(ba3, u6.Y4)
	ALIAS(ba4, u6.Y5)
	ALIAS(ba5, u6.Y6)
	ALIAS(ba6, u4.Y1)
	ALIAS(ba7, u4.Y2)
	ALIAS(ba8, u4.Y3)
	ALIAS(ba9, u4.Y4)
	ALIAS(ba10, u4.Y5)

	/* Video RAM */
	TTL_INPUT(memwq, 1)
	TTL_INPUT(mrq, 1)
	TTL_INPUT(ba13, 0)

	TTL_7432_OR(u36_2, memwq, memwq)
	TTL_7400_NAND(u37_2, u36_2.Q, mrq)
	TTL_7400_NAND(u37_3, u37_2.Q, ba13)
	TTL_7400_NAND(u37_4, u37_3.Q, ncntbenq)
	TTL_7404_INVERT(u17_2, u4.Y5)
	TTL_7400_NAND(u30_2, u17_2.Q, u37_4.Q)
	TTL_7400_NAND(u37_1, u4.Y5, u37_4.Q)
	TTL_INPUT(rwq, 1)

	/* Lower 1K */
	RAM_2102A(u22, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u22.DO)
	RAM_2102A(u23, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u23.DO)
	RAM_2102A(u24, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u24.DO)
	RAM_2102A(u25, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u25.DO)
	RAM_2102A(u26, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u26.DO)
	RAM_2102A(u27, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u27.DO)
	RAM_2102A(u28, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u28.DO)
	RAM_2102A(u29, u30_2.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u29.DO)

	/* Upper 1K */
	RAM_2102A(u9,  u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u9.DO)
	RAM_2102A(u10, u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u10.DO)
	RAM_2102A(u11, u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u11.DO)
	RAM_2102A(u12, u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u12.DO)
	RAM_2102A(u13, u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u13.DO)
	RAM_2102A(u14, u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u14.DO)
	RAM_2102A(u15, u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u15.DO)
	RAM_2102A(u16, u37_1.Q, ba0, ba1, ba2, ba3, ba4, ba5, ba6, ba7, ba8, ba9, rwq, u16.DO)

	TTL_INPUT(cpu_db0, 0)
	TTL_INPUT(cpu_db1, 0)
	TTL_INPUT(cpu_db2, 0)
	TTL_INPUT(cpu_db3, 0)
	TTL_INPUT(cpu_db4, 0)
	TTL_INPUT(cpu_db5, 0)
	TTL_INPUT(cpu_db6, 0)
	TTL_INPUT(cpu_db7, 0)

	TTL_TRISTATE(db0, u30_2.Q, u29.DO, u37_1.Q, u16.DO)
	TTL_TRISTATE(db1, u30_2.Q, u28.DO, u37_1.Q, u15.DO)
	TTL_TRISTATE(db2, u30_2.Q, u27.DO, u37_1.Q, u14.DO)
	TTL_TRISTATE(db3, u30_2.Q, u26.DO, u37_1.Q, u13.DO)
	TTL_TRISTATE(db4, u30_2.Q, u25.DO, u37_1.Q, u12.DO)
	TTL_TRISTATE(db5, u30_2.Q, u24.DO, u37_1.Q, u11.DO)
	TTL_TRISTATE(db6, u30_2.Q, u23.DO, u37_1.Q, u10.DO)
	TTL_TRISTATE(db7, u30_2.Q, u22.DO, u37_1.Q, u9.DO)

	/* Character generation */
	TTL_74175(u68, dot, db0.Q, db1.Q, db2.Q, db3.Q, high) // least significant 4 bits of each character
	TTL_AM2847(u67, lbc, u68.Q1, u68.Q2, u68.Q3, u68.Q4, sync_bus_disable_q, sync_bus_disable_q, sync_bus_disable_q, sync_bus_disable_q)

	TTL_74175(u58, dot, db4.Q, db5.Q, db6.Q, db7.Q, high) // most signifcant 4 bits of each character
	TTL_AM2847(u57, lbc, u58.Q1, u58.Q2, u58.Q3, u58.Q4, sync_bus_disable_q, sync_bus_disable_q, sync_bus_disable_q, sync_bus_disable_q)

	TTL_74174(u66, ndot, u67.OUTA, u67.OUTB, u67.OUTC, u67.OUTD, u57.OUTA, u57.OUTB, high)
	TTL_74175(u56, ndot, u57.OUTC, clr_vid_sr, u79_1.Q, u57.OUTD, high)
	TTL_7400_NAND(u79_1, u56.Q4, clr_vid_sr)
	ALIAS(fgbit_q, u56.Q3Q)

	EPROM_2716(u78, low, low, lc20, lc21, lc22, lc23, u66.Q1, u66.Q2, u66.Q3, u66.Q4, u66.Q5, u66.Q6, u56.Q1)
	PARAM(u78.ROM, "u83_chr.bin")

	TTL_74166(u77, video_clk, low, ndot, low, u78.D0, u78.D1, u78.D2, u78.D3, u78.D4, u78.D5, u78.D6, low, clr_vid_sr)
	ALIAS(raw_dot, u77.QH)

	TTL_7400_NAND(u79_4, fgbit_q, fgbit_q)
	ALIAS(highlight, u79_4.Q)

	ALIAS(video_out, raw_dot)

	/* Highlight and contrast - not yet hooked up */
	RES(R40, 160)
	RES(R41, 270)
	POT(R21_POT, 500)

	NET_C(R40.1, V5)
	NET_C(R40.2, R21_POT.1)
	NET_C(raw_dot, R21_POT.1)
	NET_C(highlight, R41.1)
	NET_C(R41.2, R21_POT.1)

	NET_C(R21_POT.3, GND)
	NET_C(R21_POT.2, GND)

NETLIST_END()