Commit Graph

2787 Commits

Author SHA1 Message Date
Vas Crabb
c44073056f netlist: Remove copyright-infringing descriptions copy/pasted from datasheets.
Certain things are not considered "creative works" under copyright law,
making them ineligible for copyright protection.  This includes pinouts
(facts), descriptions of circuits (utilitarian), integrated circuit
lithography masks (utilitarian, but there's a separate field of IP law
protecting them), and character shapes (utilitarian).

However, many of these descriptions are substantial enough to be treated
creative works.  A number of them include suggested applications.  There
are situations where reproducing the descriptions may be permitted, for
example:

* The publisher may permit reproducing the entire datasheet for
  reference.

* In some jurisdictions, fair use doctrine may allow the description to
  be quoted in its entirety in a larger creative work (e.g. in a
  research paper, patent application, or an original description of a
  circuit utilising the device).

* Some jurisdictions allow reproduction of no more than 50% of a
  creative work for inclusion in teaching materials.

I am not confident that these soure code comments qualify as a situation
where the long-form descriptions can be copied verbatim lawfully,
especially without reproducing copyright notices for them.  If you want
long form plain language descriptions in the comments, you need to write
them yourself.  That way, you will be the copyright holder of the
creative work, and you can make it availble under a permissive or
"copyleft" license.
2020-08-29 01:16:27 +10:00
couriersud
5d3342c837 netlist: Fix processing of TRUTHTABLES for generated files.
* also made nld_devinc.h srcclean friendly.
* nld_devinc.h and lib_entries.hxx are currently not used. You can try
the automated build by changing NL_AUTO_DEVICES in setup.h to 1.
2020-08-28 09:32:24 +02:00
couriersud
e00a6ccf41 netlist: Truth tables are now standalone objects.
* Added TRUTHTABLE_ENTRY to netlist language.
* Please see nlm_ttl74xx for reference implementation.
2020-08-26 22:12:57 +02:00
couriersud
654be7c635 netlist: standalone makefile support for OSX 2020-08-26 22:12:56 +02:00
couriersud
d49f54d3e0 netlist: Change license to CC0 in macro folder.
* Got agreement from contributors over social media.
2020-08-25 22:02:01 +02:00
couriersud
0aa5aea84f netlist: Fix various issues around include directories.
* removed include directory src/lib/netlist from various genie files to
avoid potential issues.
* Code using netlist should use #include "netlist/*".
* Updated includes.
* Fixed standalone makefile depend target to properly deal with relative
paths.
2020-08-25 19:41:32 +02:00
couriersud
f1cb622089 netlist: more standalone makefile changes
* On windows a simple make is now enough to build.
* Devices, macro and tests folders now included with wildcard.
* No more makefile changes if a device is added.
* Moved nld_devinc.h to generated folder
* Added to python scripts to create nld_devinc.h and lib_entries.hxx
* TEST MODE: these two files are created automatically but are not used
currently. Once I get feedback that the python scripts work in different
environments I will remove header files from devices and macro and start
using these files in production.
2020-08-24 22:04:21 +02:00
Aaron Giles
2b82913843 netlist: Add 7417, 7438, 74290/74293 devices. Fix PROM DIPs. 2020-08-24 22:02:20 +02:00
couriersud
b612367b33 netlist: clang tidy include order fixes. 2020-08-24 22:01:58 +02:00
couriersud
8335c1bed5 netlist: build system improvements
* Medium term this will significantly ease adding devices to netlist.
2020-08-24 22:01:38 +02:00
couriersud
1bd446a192 netlist: in devices folder all DIP devices were removed.
* NE555 and MC1455P were the last devices with DIP definitions in
devices.
2020-08-23 20:12:31 +02:00
couriersud
915e4a3171 netlist: References to subdevices should be symbolic.
* Exposing sub-device members is not best practice.
* The need for sub-devices is a clear indication that a netlist language
implementation would be a better solution.
2020-08-23 17:25:18 +02:00
couriersud
d1c74db666 netlist: Fix visibility in some devices.
* private rules.
2020-08-23 17:24:24 +02:00
couriersud
113de38237 netlist: templatize 74107 and code maintenance.
* removed some dead friend declarations
* optimized template times_ns2
2020-08-23 17:24:22 +02:00
couriersud
f7ace42947 netlist: macro dip definition for 8277,am2847,mm5837. 2020-08-23 14:09:11 +02:00
couriersud
86f4a96c4a netlist: Macro DIP definitons for TMS4800, 9314, 9334 2020-08-23 10:57:35 +02:00
Vas Crabb
164ef47ad2 srcclean for 0.224 2020-08-23 11:13:56 +10:00
Vas Crabb
15e71127fb formats: Removed some inappropriate uses of emu_fatalerror and stderr. 2020-08-23 10:55:03 +10:00
couriersud
a594ee4933 netlist: use macro dips for 74175, 74192, 74193, 74194, 74365. 2020-08-22 22:57:37 +02:00
couriersud
4b7eaf67e3 netlist: remove duplicate device definitions. 2020-08-22 21:31:06 +02:00
couriersud
f6049d73b2 netlist: fix clang build. 2020-08-22 16:55:37 +02:00
couriersud
b0e0ac2b24 netlist: Add NETLIB_DELEGATE_NOOP()
* This should be used for inputs which do not need a handler.
* Examples are data inputs which are only accessed on a clock change.
2020-08-22 16:31:22 +02:00
couriersud
9e401f0b3e netlist: Fix some documentation issues. 2020-08-22 16:30:16 +02:00
couriersud
1d723a69db netlist: Fix some pedantic clang warnings. 2020-08-22 16:30:15 +02:00
couriersud
3f50652a5c netlist: Add AN6551 opamp 2020-08-20 18:55:22 +02:00
couriersud
1e74aa6bff netlist: optimized 7416 2020-08-20 18:16:17 +02:00
Tiago Pierezan Camargo
4cc6d5bb7e
palloc: use posix_memalign with android 2020-08-20 09:56:41 -03:00
Aaron Giles
10173161ad Updated static solvers. 2020-08-19 19:42:37 -07:00
Aaron Giles
f7b263de20
Sound and other improvements to Sega G-80 games. (#7103)
Sound and other improvements to Sega G-80 games: [Aaron Giles, couriersud]
* Added netlist-based sound to Eliminator, Zektor, Space Fury, and Astro Blaster.
* Split the Sega Universal Sound Board and Speech Boards into their own separate files.
* Improved Universal Sound Board implementation for better accuracy in Star Trek and Tac/Scan.
* Wrote netlist-based backend for Universal Sound Board; currently disabled due to limitations in the system.
* Wrote netlist-based backend for Speech Board; currently disabled pending future sound system changes.
* Implemented wait states and the vector DRAW flag to help improve timing.

SP0250 Improvements: [Aaron Giles]
* Matched clock divider to real chip measurements.
* Fixed behavior when not fed enough data; addresses "gapping" in speech in Sega games.
* Implemented accurate LFR noise generator according to real chip measurements.
* Added pulse-width modulation DAC output mode for future consumption by netlist.

Netlist additions: [Aaron Giles]
* Added compile-time option to record nltool-compatible CSV files.
* Improved CD4020 implementation.
* Fixed CD4053 behavior.
* Added 74139 device.
* Added TL082 device.

8253 PIT changes: [Aaron Giles]
* Added explicit synchronization to all writes.
* Cleaned up some timing calculations to avoid double<->attotime conversions.
2020-08-19 19:33:13 -07:00
Ryan Holtz
e022ccd040 -tank: Assorted fixes and changes. For some reason, GNE (H4.6) never goes low at the start of the game. 2020-08-18 09:37:27 +02:00
couriersud
da734ea0c9 netlist: fix some pedantic clang warnings. 2020-08-17 22:24:17 +02:00
couriersud
b55747b276 netlist: dead code removal.
* moved dead code into examples/lostfound.cpp
* This work didn't improve performance but still may serve as examples
for complex truth table implementations.
2020-08-17 22:24:17 +02:00
Ryan Holtz
96921ccac9 -netlist: Properly fixed 74165 implementation. Fixed MK28000 address latching. 2020-08-17 16:24:46 +02:00
Ryan Holtz
dd47a15e3a -tank: Commented out CPU-choking motor sound for now. Fixed a transcription error. At least partially fixed screen parameters. 2020-08-17 13:49:13 +02:00
Ryan Holtz
48c847f89a -nld_9321: Fixed Enable input, it should be inverted. 2020-08-17 13:47:27 +02:00
Colin Douglas Howell
f7d786d3d0
sspeedr: new netlist audio implementation (#7081)
* sspeedr: new netlist audio implementation

Netlist-based audio implementation for sspeedr (Super Speed Race, 1979)
derived from Midway audio schematics, and based on that used for
280zzzap (280-ZZZAP) and lagunar (Laguna Racer) in the mw8080bw driver.
The Super Speed Race audio circuits are clearly derived from those games;
the biggest difference is the use of a linear feedback shift register
for noise generation.

* Updated netlist static solvers with recent netlist changes.
2020-08-16 21:32:45 -04:00
couriersud
c44d930015 netlist: Add tank to nl subtarget, update static_solvers. 2020-08-17 01:34:04 +02:00
couriersud
c619fbe40c netlist: increase queue sizes to accomodate nl_tank complexity. 2020-08-17 01:34:03 +02:00
Ryan Holtz
6c5e9d3eff -netlist: Regenerated static solvers, and fixed errors preventing static solvers from generating. 2020-08-16 20:44:00 +02:00
Robbbert
395cf63d30 *atom: cleanup 2020-08-17 04:33:05 +10:00
Ryan Holtz
e2231ddcd2 -atarittl: Added netlist for Tank. currently runs at about 0.005% of full speed, unsure why. 2020-08-16 20:04:34 +02:00
Nigel Barnes
c2a670bda8 acorn_dsk: Added support for Kenda formatted SSD images. 2020-08-16 16:14:07 +01:00
couriersud
75925e1905 netlist: buffered_param_setter refactoring
* Each parameter to set now has a dedicated buffered_param_setter
device.
* This allows different sample times per device
* Updated netlist.cpp for new approach
* buffered_param_setter is a template. The template parameter is a class
which is expected to support the [] operator. The value passed to []
operator is the requested sample number.
2020-08-16 00:21:52 +02:00
couriersud
290ffa74fc netlist: Remove printf debugging.
* also raises error if during parsing a local source is not found.
2020-08-15 22:20:24 +02:00
couriersud
a2248e8e18 netlist: Fix elif processing. 2020-08-15 22:20:23 +02:00
couriersud
6d7f41871c netlist: improve two error messages.
* Provide more detail and rephrase to make them more clear.
2020-08-15 20:12:18 +02:00
Aaron Giles
204818a509 netlist: Add THRESH parameter to AFUNC 2020-08-15 20:01:03 +02:00
couriersud
68b7535dd1 netlist: make streams accept logic parameters as well. 2020-08-15 20:01:00 +02:00
couriersud
9d00d87dac netlist: commit missing files in last commit. 2020-08-12 22:12:20 +02:00
couriersud
87b702b31f netlist: more include untangling.
* nl_base.h now basically only includes files from core.
* all headers in core compile on their own.
2020-08-12 20:17:10 +02:00
couriersud
167da15753 netlist: improve parsing performance
* preparational work for easier device addition.
2020-08-12 20:17:10 +02:00
Colin Douglas Howell
e87939ac9a mw8080bw: add lagunar to 280zzzap netlist audio, other tweaks
Added Laguna Racer to the 280-ZZZAP netlist audio driver, with
conditional changes to the netlist for the circuitry differences
between the two games.

Adjust some netlist components that apparently changed from the
280-ZZZAP schematic to production machines.

Removed the driver's private MC3340 netlist, using the equivalent
one in the netlist library instead.
2020-08-11 16:20:43 -07:00
Ryan Holtz
add6f68bec -destroyr: Added netlist sound. [Ryan Holtz] 2020-08-11 19:48:52 +02:00
Ryan Holtz
461b8338a2 -flyball: Added netlist sound. [Ryan Holtz, Ivan Vangelista] 2020-08-11 05:36:52 +02:00
Ryan Holtz
1c11ecb000 -starfire: Removed MACHINE_IMPERFECT_SOUND flags. Added missing music and Alert sound effect to Fire One netlist and added Star Fire netlist. [Ryan Holtz, Colin Howell, Aaron Giles] 2020-08-10 22:15:53 +02:00
couriersud
9809a7b991 netlist: align naming of files within the macro folder.
* Use a consistent naming scheme. This is a preparational step towards
improved parsing performance.
2020-08-10 18:31:34 +02:00
couriersud
77dbc79547 netlist: fix line-number tracking when at end of line.
* Also remove a semicolon from nlm_opamp.cpp
2020-08-09 12:00:57 +02:00
couriersud
b0b2e1351a netlist: fix creation of static solvers. 2020-08-09 08:04:07 +02:00
couriersud
923de88abb netlist: more header file separation 2020-08-08 20:10:12 +02:00
Ryan Holtz
e404f347c6 -fireone: Committed netlist for couriersud to have a look at. 2020-08-06 20:16:22 +02:00
couriersud
2c799e1160 netlist: add man target to netlist makefile. 2020-08-06 09:46:43 +02:00
couriersud
738e9cc136 netlist: Make new documentation items appear in doxygen output. 2020-08-06 09:46:20 +02:00
Aaron Giles
64db8f054b netlist: Documentation updates for CDxxxx devices 2020-08-06 09:46:08 +02:00
Aaron Giles
7c88d7813f netlist: Rename DM9312 to TTL_9312 for consistency. 2020-08-06 09:45:56 +02:00
Aaron Giles
056426059f netlist: Added documentation for devices in nlm_ttl74xxx.cpp
* Documentation for all devices in nlm_ttl74xxx now is available in the
doxygen documentation.
2020-08-06 09:45:44 +02:00
couriersud
4959fbaa8b netlist: Add CD4013 to net_lib.cpp 2020-08-06 09:45:29 +02:00
couriersud
d524688df1 netlist: Refactored pokenizer.
* Separated tokenizing and reading of tokens.
* This enables caching of parsing results on the token level.
* Implemented caching of token stream.
* Overall this significantly improves parsing performance (~10x)
* Next step towards a bare-bone nltool which does not depend on macro
devices.
2020-08-06 09:44:59 +02:00
Justin Kerk
d2b7643753 netlist: Better fixes for Emscripten (#7031)
Silence indentation warning in 3rdparty/ under Emscripten (#7031)
2020-08-04 23:53:52 -07:00
Justin Kerk
2dd0985999 netlist: Fix build under Emscripten (#7031)
netlist: Fix crash under Emscripten by disabling aligned optimizations
2020-08-05 05:58:14 +00:00
Vas Crabb
93110b8cc4 Revert "mdos dsk: support legacy floppy images, add XDOS support"
This reverts commit 8ada258ec7.

We are not accepting further legacy floppy formats.
2020-08-04 05:51:56 +10:00
Colin Douglas Howell
d35e103b9f
mw8080bw: engine sound tone fix for 280zzzap netlist audio (#7028) 2020-08-02 22:35:58 -04:00
couriersud
8b43aabf0e netlist: add example documentation to SN74LS629_DIP 2020-08-02 21:52:13 +02:00
Ryan Holtz
48be14bade -tankbatt: Added netlist audio. [Ryan Holtz] 2020-08-02 20:53:32 +02:00
couriersud
a68287d6a6 netlist: Move documentation from header to cpp file. Batch 3.
* Header files will disappear and only nld_devinc.h which is can be
created by nltool will stay.
* These commits ensure that the documentation is preserved when the
header files are deleted at some point in the future
2020-08-02 14:47:12 +02:00
couriersud
8c4f283a77 netlist: Move documentation from header to cpp file. Batch 2. 2020-08-02 14:30:49 +02:00
couriersud
759ee29329 netlist: Move documentation from header to cpp file. Batch 1. 2020-08-02 13:43:32 +02:00
Aaron Giles
cfcae647d5 netlist: Minor optimization to remove sqrt from inner loop. 2020-08-02 13:04:59 +02:00
Aaron Giles
d8733b9f25 netlist: Macro-ized 74174 DIPs 2020-08-02 12:49:44 +02:00
Aaron Giles
cdca99f353 netlist: Macro-ized CD4006 DIPs 2020-08-02 12:41:28 +02:00
Aaron Giles
5f991abda1 netlist: Macro-ized 74393 DIPs 2020-08-02 12:41:27 +02:00
Aaron Giles
88c4e1d76a netlist: Macro-ized 74166 DIPs 2020-08-02 12:41:27 +02:00
Aaron Giles
90e4d6410a netlist: Macro-ized 74165 DIPs 2020-08-02 12:41:26 +02:00
Aaron Giles
f40b7e48f1 netlist: Macro-ized 74164 DIPs 2020-08-02 12:41:25 +02:00
Aaron Giles
8fff0b57ab netlist: Macro-ized 74153 DIPs 2020-08-02 12:41:25 +02:00
Aaron Giles
2347096a88 netlist: Macro-ized 74113 DIPs 2020-08-02 12:41:15 +02:00
Aaron Giles
8705fe505e netlist: Macro-ized 74107 DIPs 2020-08-02 12:40:47 +02:00
Aaron Giles
fe8c88862f netlist: Macro-ized 9322 DIPs. 2020-08-02 12:36:28 +02:00
Aaron Giles
bd6cbb17aa netlist: Macro-ized 9310/9316/74161/74163 DIPs 2020-08-02 12:29:07 +02:00
Aaron Giles
daa62d6c32 netlist: Macro-ized 7493/7497 DIPs 2020-08-02 12:29:07 +02:00
Aaron Giles
b2d4b6d887 netlist: Macro-ized 7492 DIP 2020-08-02 12:29:06 +02:00
Aaron Giles
ca10c41883 netlist: Macro-ized 7490 DIP 2020-08-02 12:29:05 +02:00
Aaron Giles
5649ce186f netlist: Macro-ized 7485 DIP 2020-08-02 12:29:05 +02:00
Aaron Giles
ea921a554d netlist: Macro-ized 7483 DIP 2020-08-02 12:29:04 +02:00
couriersud
51d840703d netlist: Fix 7492 and roms include bug. 2020-08-02 09:20:35 +02:00
Aaron Giles
9414a219a9 netlist: Added CD4017/4022 devices.
* Also contains squashed clang signedness fixes
2020-08-01 18:27:21 +02:00
Aaron Giles
2719654114 netlist: Better implementation of CD4053. 2020-08-01 18:27:21 +02:00
Aaron Giles
c06ebeb787 netlist: Fix incorrect sense in warning. 2020-08-01 18:27:20 +02:00
Aaron Giles
0487858692 netlist: More dip macros and device refactoring
* Updated 7450, 7473/7473A, 7474, 7475/7477 devices to use DIP macros
instead of C++ DIPs.
* Reworked 7475/7477 more in the style of 7474, leveraging system signal
activation and edge detection.
2020-08-01 18:27:19 +02:00
couriersud
15172f15ca netlist: Disable dangerous optimization.
* This was an over-aggressive optimization. Now prints an info and
recommends to comment out if appropriate.
2020-08-01 18:27:19 +02:00
couriersud
d876f4cd82 netlist: Fix 74ls629 implementation and some cherry-picking issues. 2020-08-01 18:27:18 +02:00
Aaron Giles
c0ecd68341 netlist: Device refactoring
* Move DIPs for 82S16, 82S115, and 2102A devices into nlm_proms
* Moved 7448 DIP to a macro. Replaced 7442 with truthtable and macro.
* Moved 74LS629 DIP into macro.
* Expand truthtable to handle 10 outputs.
2020-08-01 18:27:17 +02:00
couriersud
bcfc49f5b8 netlist: Fix CD4053 device
* also fix signedness warning (clang) in CD4020
2020-08-01 18:27:17 +02:00
ajrhacker
a7b1347ac3
Merge pull request #7015 from 68bit/mdos_dsk_legacy
mdos dsk: support legacy floppy images, add XDOS support
2020-07-29 10:37:40 -04:00
Ryan Holtz
03c45ffbc7 -starcrus: Added netlist sound. [Ryan Holtz, Colin Howell, Aaron Giles] 2020-07-29 14:23:58 +02:00
68bit
8ada258ec7 mdos dsk: support legacy floppy images, add XDOS support
Add legacy floppy image support which is currently required for the
mc6843 FDC emulator and used by the EXORset which run XDOS a variant
of MDOS.

Add support for 5.25 inch XDOS floppy drive formats as used by the
EXORset.

Make some of the identity tests more permissive to work with observer
disks. The date day and month are reversed on some disks, and the boot
rib cluster is lower.
2020-07-29 14:00:05 +10:00
AJR
ecb1d266c6 nld_4053.cpp: Remove unused lambda capture 2020-07-28 23:59:03 -04:00
couriersud
c7359e0aea netlist: Fix an issue during proxy hookup.
* Add cd4053 to netlist.lua
* Recreated nld_devinc.h
2020-07-28 20:44:07 +02:00
Aaron Giles
179d03ac96 netlist: Convert CD4013 DIP to macro. 2020-07-28 20:43:44 +02:00
couriersud
f761f6f7be netlist: Fix 4011 implementation. 2020-07-28 20:43:19 +02:00
Aaron Giles
44e4ea141d netlist: Add CD4011, CD4024, 7407 and CD4053 devices. 2020-07-28 20:43:03 +02:00
couriersud
0cbbbdc846 netlist: source stream refactoring
* This is an infrastructure change to enable better error reporting
including file/source and line numbers in the future
2020-07-28 20:42:47 +02:00
couriersud
09e987486a netlist: necessary changes towards runtime processing of macro directory 2020-07-28 20:42:30 +02:00
couriersud
c00cbad238 netlist: Add a missing directive to the file parser. 2020-07-28 20:42:13 +02:00
couriersud
45713f390c netlist: fix a bug in preprocessor if and elif parsing. 2020-07-28 20:41:51 +02:00
couriersud
ffb37e9ae8 netlist: further nl_base.h splitting into headers in core subdir. 2020-07-28 20:40:59 +02:00
couriersud
cbba06308f netlist: remove test code 2020-07-28 20:40:37 +02:00
couriersud
38be1d4296 netlist: hopefully fix issue #7006 2020-07-26 10:54:14 +02:00
Vas Crabb
60bd3086cc srcclean for 0.223 2020-07-26 12:56:13 +10:00
couriersud
28ca04dc7e netlist: sub solvers now have their own parameter set.
* Example: PARAM(Solver.Solver_0.METHOD, "GMRES")
* Will use the GMRES solver instead of the default MAT_CR solver.
* Same applies to all Solver parameters.
* Please use with care. If you change your netlist (e.g. using
frontiers) the allocation of nets to solvers and the number of solvers
may change. Thus this type of tweaking should only be used after the
netlist completely works.
2020-07-25 14:47:26 +02:00
couriersud
89687cc1a4 netlist: Fix scheduling bug. 2020-07-25 14:47:25 +02:00
couriersud
ad1bc7b318 netlist: include GMRES solver in build.
* The GMRES solver for larger matrices (>>100) can outperform Gaussian
elimination. Including it so it gets wider attention.
* As far as I know netlist is the only SPICE-like circuit simulation
providing a GMRES solver.
2020-07-25 14:47:24 +02:00
couriersud
599f5572e7 netlist: Fix format string in gcr code. 2020-07-25 14:47:24 +02:00
couriersud
6e2e3dab4f netlist: Fix clang unused variable warning. 2020-07-25 14:47:23 +02:00
couriersud
494690081b netlist: separate nl_base.h into separate header files.
* This clean-up exercise will hopefully make it easier to navigate the
core code. Another long term goal is to further straighten the object
model.
2020-07-25 14:47:22 +02:00
couriersud
2231bf8ae0 netlist: Rewrote scheduler scheduling.
* All solver scheduling is now handled by nld_solver.
* Previously, for dynamic timestepping the sub solvers would be
responsible for their scheduling themselves.
- This prevented any attemps to use parallel execution of solvers.
* Now the route is free towards experiments to use parallel execution of
solvers.
* Uses ptimed_queue_linear in solver scheduling
* Improved netlist queue implementation (template now)
* Added const delegates.
* Added subsolver stats
* Removed dead code.
2020-07-25 14:47:22 +02:00
couriersud
016c636bb3 netlist: add frontier documentation 2020-07-25 14:47:21 +02:00
couriersud
c29a37c393 netlist: fix some clang tidy warnings. 2020-07-25 14:47:20 +02:00
couriersud
3a9ab286c6 netlist: nld_matrix_solver is now owned by nld_solver. 2020-07-25 14:47:19 +02:00
Colin Douglas Howell
ca461323c6
mw8080bw: improvements to 280zzzap netlist audio (#6984)
mw8080bw: improvements to 280zzzap netlist audio
* Noise-based sound effects corrected. The original strength of the
zener noise voltage was about three orders of magnitude too low
for the current being passed through a zener of this type. This
prevented the noise generator from working as designed and made
the noise far too weak for the noise-based sound effects to work
properly. Those effects now sound much closer to the real hardware.
* Implemented faster high-level emulation version of noise generator.
(Credit to couriersud for suggesting this.) The corrected noise
voltage made the component-level emulation of the noise generator
much too demanding on the minimum timestep needed to produce
accurate results without unrealistic voltage spikes, and so will
not run accurately at reasonable emulation speeds. But by replacing
it with a simple but effective AFUNC()-based comparator, we get a
functionally similar noise signal generator that produces
effectively identical output while still being able to run with
48 kHz static timestepping. So we get both decent emulation speed
and correct-sounding noise effects.
* Added output voltage clipping on post-crash sound to remove
voltage spikes, resulting in a smoother, more accurate sound.
(Credit to Aaron Giles for suggesting this clipping method.)
* Changed output to be taken from second LM3900 output opamp
(inverted signal) for smoother waveform and better tone quality.
* Added master volume potentiometer which can be user-set, set to
midpoint by default. Adjusted output scaling and offset to match.
* Various explanatory comments expanded or corrected.
2020-07-23 13:47:39 -04:00
Aaron Giles
f23db5da38
Added netlist-based audio to early Cinematronics vector games (#6979)
* Added netlist simulations for the following games: Space War, Barrier, Star Hawk, Speed Freak, Star Castle, War of the Worlds, Sundance, Tail Gunner, Rip Off, Armor Attack, Warrior, Solar Quest, Boxing Bugs. Removed previous samples-based sound. [Aaron Giles, Couriersud]

* Added built-in minimal artwork for Warrior. [Aaron Giles]

* Changed speaker maximum sample tracking to be based on new compile-time define SPEAKER_TRACK_MAX_SAMPLE instead of MAME_DEBUG. [Aaron Giles]

* Modernized 74164 and 74393 netlist TTL devices. [Aaron Giles]
2020-07-22 14:07:34 -07:00
couriersud
cfa1cacaf2 netlist: fix logging of final timestamp. 2020-07-19 07:51:54 +02:00
couriersud
a1bb5475cc netlist: include timestamp in newton-raphson loop warnings. 2020-07-18 17:38:52 +02:00
couriersud
94d76c89a4 netlist: Fix 4066 2020-07-17 23:13:04 +02:00
couriersud
f0d012c1f5 netlist: Potential regression trigger.
* Removed update and NETLIB_UPDATE completely.
* Startup initialization order may change.
* This may cause regression tests to trigger. This is expected. Logic
TTL devices do not have a defined power-up state. That's why reset
circuits exist which create a reset signal *after* all power supply
lines are stable.
2020-07-17 23:12:24 +02:00
Aaron Giles
976212053c netlist: add 74157 device. 2020-07-17 23:12:04 +02:00
couriersud
5d0786a449 netlist: prepare road towards trapezoidal integration.
* This is a long term transition goal. Documented in source (see
NL_USE_BACKWARD_EULER).
2020-07-17 23:11:39 +02:00
AJR
dd2bf77ba6 nld_4066.cpp: Actually fix build for now 2020-07-16 18:07:09 -04:00
MetalliC
896a982d1b spectrum: implemented Swift Disc and Swift Disc II interfaces 2020-07-17 00:50:06 +03:00
AJR
c92a885a3a nld_4066.cpp: Fix clang error: no matching constructor for initialization of 'analog::nld_twoterm' 2020-07-16 16:33:12 -04:00
couriersud
49ed748401 netlist: avoid ne555 oscillation due to overshoot compensation 2020-07-16 09:56:09 +02:00
couriersud
847d473163 netlist: comment out empty reset and update calls 2020-07-16 09:55:50 +02:00
couriersud
8cd6774cac netlist: code maintenance.
* more handler alignment
* dead code removal
* remove update calls which do nothing
2020-07-16 09:55:15 +02:00
couriersud
0dfa500a4a netlist: Fix Inductor state saving. 2020-07-16 09:34:57 +02:00
Colin Douglas Howell
f2145ce867 mw8080bw: multiple improvements to gunfight netlist audio
Model for transistors adjusted, replacing default NPN transistor
model with a high-gain NPN transistor type that more closely
resembles those used by the real Gun Fight sound circuits. This
has a quite obvious effect on the shot sounds, and it seems the
circuits were designed for this effect.

Made all volume potentiometers user-adjustable; previously fixed
at 50%.

Replaced abstract model of noise generator with component-level
one, including a model of the generator's zener diode. Zener
noise is provided by an associated Gaussian white noise source
running off a 48 kHz clock. Both the zener diode and Gaussian
white noise source are component models recently added to the
netlist library.

Supply voltage to amplifying transistors tweaked downward from
16.5 volts to 16 volts, determined by properly analyzing power
supply circuit and confirmed with a documented reference.

Much more commentary describing the sound circuits' function and
modeling issues.
2020-07-14 15:57:19 -07:00
MetalliC
06b98bd357 trd_dsk.cpp add more formats, improve image type detection 2020-07-14 19:26:42 +03:00
couriersud
735752cea8 netlist: reduce overshoot impact on NE555 astable frequency.
If TRIG and TRESH are connected overshoot compensation will be enabled.
The approach is raw but delivers results (at 5 to 10 steps per
discharge/charge) within a couple of percent. Please take into account
that any datasheet formulas are idealistic. Neither capacitor, resistor,
internal resistor tolerances are taken into account. Nor are ambient
temperature and chip temperature.
2020-07-14 05:36:41 +02:00
MetalliC
97042aa7f9 spectrum: add Logitek Proceed 1 C1541 disk interface (not fully working yet) 2020-07-12 22:58:58 +03:00
couriersud
8cf1c1feca netlist: Always take power pin names from logic family.
* Default nmos power pins to VCC and GND.
* MOS uses VDD/VSS - update gamemachine netlist.
2020-07-12 21:48:50 +02:00
couriersud
6328b0e995 netlist: finished input handler refactoring.
* all inputs now explicitly specify a signal handler.
2020-07-12 20:29:04 +02:00
couriersud
54fe9d1678 netlist: and the next batch of non-virtual handlers. 2020-07-12 20:29:03 +02:00
couriersud
f873cbcbad netlist: another batch of explicit handler refactoring. 2020-07-12 16:44:13 +02:00
couriersud
985c0225d1 netlist: next batch of explicit handlers. 2020-07-12 16:44:12 +02:00
couriersud
0fd8742bbb netlist: emit a warning every 100 invocations of nr resolution. 2020-07-12 12:24:54 +02:00
couriersud
2683665665 netlist: first batch of explicit handlers.
* Currently devices use the "update" function if no handler is given for
an input.
* For this to work the update function has to be virtual. This will
cause issues on shared execution schemes like CPU/GPU using nvcc.
* This is the first batch of changes to ensure that handler resolution
is static.
2020-07-12 12:12:27 +02:00
couriersud
a5fc819f50 netlist: fix power pin names for CMOS devices.
* For truthtable cmos devices the power pin names will now be set
according to the logic family.
* Fix some issues for CD4538
* Change "already connected" warning to info level. Some ICs (CD4538)
connect pins internally to GND and the schematics again externally. This
will cause this info to be printed. The warning now is a lot more
verbose.
2020-07-12 12:12:26 +02:00
Aaron Giles
b4555c13a0 netlist: fix 74121 clocking logic. 2020-07-11 23:04:52 +02:00
couriersud
ad4a446d5f netlist: use threads on netlist logs.
* This significantly increases the performance of output/terminal logs.
* Adds a psemaphore class to pmulti_threading.h.
2020-07-11 23:03:12 +02:00
couriersud
b13aced50a netlist: improve dealing with non-convergence situations.
* No changes for well-behaved netlists.
* Netlists reporting "newton loops exceeded" messages should now report
a lot less of these messages.
* In case newton-raphson does not converge, netlist will reset the state
back to the beginning of the timestep. It will than use a number of very
small timesteps to hopefully deal with the non-convergence due to a too
big timesteps. Afterwards solving continues using dynamic timestepping
until the time-slice is complete.
* This is a lot better than the previous approach.
* This is meant as a performance optimization helper. Ideally, your
netlists never produce "newton loops exceeded" messages.
* Any events for connected analog and digital inputs will happen after
the timeslice is complete. Thus this approach - as the previous one -
are not suited for high-frequency (such as video outputs) situations. In
these case, only dynamic timestepping or reducing the fixed timestep are
a suitable solution.
2020-07-11 23:03:11 +02:00
MetalliC
fb7f6b7841 spectrum: implemented Speccy-DOS and FloppyOne DOS interfaces, add "IC-DOS" Beta Plus clone 2020-07-11 17:34:41 +03:00
Aaron Giles
647d4f431f netlist: Forgot this as part of the 74113 change. 2020-07-11 08:06:45 +02:00
Aaron Giles
a6239d582b netlist: Add 74113 device. 2020-07-10 20:04:17 +02:00
couriersud
5eef12fe18 netlist: add 74121 device and refactor 74123 code.
* added 74121 device
* migrate dip devices to netlist devices
* refactor code to be based on device description structs
2020-07-10 20:04:16 +02:00
couriersud
d3422e1c94 netlist: unit test macros now have a "P" prefix.
* will allow to use both googletest and Catch frameworks.
* on unexpected std::exception include what() in error message.
2020-07-10 20:04:15 +02:00
couriersud
4a3bc13554 netlist: fix signedness warnings in ptime.h 2020-07-10 20:04:15 +02:00
couriersud
03900b67de netlist: remove some warning suppression from makefile. 2020-07-10 20:04:14 +02:00
couriersud
8d9fde525d netlist: pfunction supports unary minus and removed duplicate code. 2020-07-10 20:04:13 +02:00
couriersud
c4b9b2a3ac netlist: update documenation on noise sources. 2020-07-05 21:50:54 +02:00
couriersud
d71717e75b netlist: pfunction now supports unary minus operators. 2020-07-05 21:50:53 +02:00
couriersud
e339a280f4 netlist: remove soft reset support.
* Electronic circuits and base components like resistors or capacitors
do not have a reset line. You can use them to create reset circuits.
There is thus no point to support soft reset, the equivalent to pressing
the reset button.
* Fixed some bugs around reset and start up logic.
* This also fixes the "scramble F3" crash.
2020-07-05 15:49:59 +02:00
couriersud
9e86f5e866 netlist: Add basic unit testing support.
* Add google test syntax compatible unit testing support. This is a very
limited subset of the google test framework and not intended ever to be
a replacement. Adding a dependency to google test for the functionality
required was considered to be an overkill.
* nltool -c tests runs unit tests if linked in. This is *not* the case
for the version of nltool compiled with TOOLS=1.
* Added unit tests for plib::pfunction.
2020-07-05 11:48:07 +02:00
68bit
e2b6f6edb0 mdos dsk: fix the cells size and gaps, make clear its Motorola MDOS 2020-07-04 21:42:16 +10:00
couriersud
207fd27e8c netlist: Fix polarity of 74LS125 tristate input. 2020-07-04 10:22:01 +02:00
couriersud
bdc1bb4778 netlist: fix pfunction if
The if postfix evaluation corrupted the stack.
2020-07-04 09:28:49 +02:00
couriersud
edab7d1a40 netlist: add progress indicator to nltool.
When running a netlist "--progress" may be used to display a progress
indicator.
2020-07-04 09:24:30 +02:00
couriersud
f6e9386745 netlist: add more constructors and () operator to pfunction. 2020-07-03 20:36:59 +02:00
Aaron Giles
0718a20df2 netlist: Align design VARCLOCK to AFUNC. 2020-07-03 20:36:59 +02:00
Aaron Giles
fa54fa1b65 netlist: Add a parameter to varclock. 2020-07-03 20:36:58 +02:00
Aaron Giles
0eccd6adc7 netlist: Add log() to pfunction. 2020-07-03 20:36:57 +02:00
couriersud
fb90cac2f2 netlist: Add comparison operators to pfunction.
Comparison operators evaluate either into 0.0 or 1.0. Thus they can be
used like "(a==1)*(b==2)" which will only result in 1.0 if a equal 1 and
b equal 1. From the yet to be released test code:

* PFUNCEXPECT("1==1", 1.0)
* PFUNCEXPECT("1 *0 == 2-1-1", 1.0)
* PFUNCEXPECT("0!=1", 1.0)
* PFUNCEXPECT("0<1",  1.0)
* PFUNCEXPECT("1>0",  1.0)
* PFUNCEXPECT("0<=1", 1.0)
* PFUNCEXPECT("1>=0", 1.0)
* PFUNCEXPECT("1<=1", 1.0)
* PFUNCEXPECT("1>=1", 1.0)
* PFUNCEXPECT("if(1>0, 2, 0)", 2.0)
* PFUNCEXPECT("if(0>1, 2, 3)", 3.0)
* PFUNCEXPECT("if(sin(1)>0, 2, 3)", 3.0) // fail
2020-07-02 21:29:25 +02:00
ajrhacker
50887a1b08
Merge pull request #6896 from 68bit/os9-8inch-16sectors
os9 dsk: add 8 inch, 16 sector, single density formats
2020-07-02 13:55:53 -04:00
ajrhacker
10208ebd88
Merge pull request #6897 from 68bit/motorola-mdos-dsk
MDOS disk format support
2020-07-02 13:55:06 -04:00
68bit
58a414675a wd177x dsk: be permissive of some missing sectors in later tracks
A single missing sector was causing it to give up on an images,
as incompatible. Being a little more permissive here helps working
with some old recovered disk images with some lost sectors.
2020-07-03 00:26:32 +10:00
68bit
d5187fe74c MDOS disk format support
Motorola DOS, used on the EXORciser etc.
2020-07-03 00:16:35 +10:00
68bit
3dfce5b66a os9 dsk: add 8 inch, 16 sector, single density formats
These formats were by OS9 L1 on the Motorola EXORciser.
2020-07-03 00:05:00 +10:00
couriersud
319be2dfd2 netlist: code maintenance and bug fixes.
* palloc.h/pmatrix2d.h: Fix static_assert warnings at the origin.
* Rework hints to broaden their use and fix NC hint.
* 74377: use NC hint
* plists.h: Fix debugging in MSVC
* Include cleanup: Move everything not needed by netlists from
nl_setup.h into core/setup.h
* Fix some clang tidy warnings
* srcclean
2020-07-01 20:59:04 +02:00
Aaron Giles
afb3a9b6cb Fix crash on Windows when freeing netlist objects. 2020-06-29 17:03:57 -07:00
couriersud
1408aab30c netlist: add hints for outputs not connected. [Couriersud, Aaron Giles]
* Logic and analogue outputs can now be flagged as "NC" (not connected).
* Example: "HINT(IC13.4, NC)".
* This will suppress info messages to be logged.
* The HINT must apply to an existing terminal. HINTs for non-existing
terminals are treated as fatal errors.
* Terminals and logic inputs not connected are still treated as
warnings. These need though and a proper fix.
2020-06-28 16:55:34 +02:00
couriersud
e6d7db27cf netlist: Fix parameter value resolution on rom devices.
* also simplifiy a return.
* document parameter value resolution.
2020-06-28 14:21:36 +02:00
couriersud
d7cbe855aa netlist: fix 74377 pin assignment 2020-06-28 13:14:44 +02:00
couriersud
ab31af569f netlist: include file refactoring.
The purpose of this ongoing exercise is to remove unnecessary
dependencies in header files. netlist implementations should only have
access to what they need. The same applies to device implementations.

Core stuff will be moved to the core subdirectory going forward.
2020-06-28 13:14:43 +02:00
couriersud
3fcdfa0a9b netlist: code maintenance
* decrease use of reinterpret_cast.
* change some defaults for better ttl game optimization.
* various code cleanup.
2020-06-28 13:14:42 +02:00
MetalliC
fc7f76dc12 this format was redundant (nw) 2020-06-22 12:43:34 +03:00
Vas Crabb
01661be41c srcclean and cleanup (nw) 2020-06-21 14:59:50 +10:00
MetalliC
5c3f020bf8 spectrum.cpp: add Didaktik D40/D80 disk interface 2020-06-21 01:51:11 +03:00
hap
63a7bbb5f2 recording: fix frame sync regression (nw) 2020-06-19 11:54:40 +02:00
AJR
a58685ec6d Fix nltool build on CWG 1579-noncompliant compilers (nw) 2020-06-18 16:47:33 -04:00
lfantoniosi
16be7cb5b7 Add ImageDisk IMD save support
Allow to save IMD floppy image disk. Tested on Zorba and Kaypro II
2020-06-13 20:16:36 -07:00
couriersud
fe3bd223d8 netlist: Fix copy elusion bug on OSX and clang < 8 [AJR, Couriersud]
Solution discussed with AJR in chat.
2020-06-14 00:04:34 +02:00
couriersud
23c0490019 netlist: fix some clang-tidy warnings. (nw) 2020-06-13 23:54:14 +02:00
AJR
0572ca886e nl_setup.cpp: Fix for some compilers not being CWG 1579 compliant (nw) 2020-06-13 17:27:49 -04:00
couriersud
e949e9c29d netlist: Performance improvement and refactoring. [Couriersud]
Kidniki now achieves up to 910% when run with static solvers and with
nltool. That is significant better than the 860% we have seen
previously.

This increase is driven by using a global memory pool in the solver
code.

In addition the following refactoring and code maintenance work is
included. Please excuse the large commit, some of this took interfered
with other work and the detail development steps were ugly.

- gsl support: This commit adds pgsl.h which implements a very limited
  number of the functionality of the gsl header described in the c++ core
  guidelines.
- clang-tidy fixes
- A significant refactoring of palloc.h. Aligned hints were removed,
  they added complexity without a significant performance gain. Vector
  operations should better be done on special spans/views.

The code has been tested on linux with g++-7, g++-9, clang-11.
On Windows mingw-10 and VS2019, OSX clang-11.
2020-06-13 15:49:35 +02:00
couriersud
75681d760c netlist: Make fostrm actually write to file. (nw)
Also fix typos and a tidy warning.
2020-06-13 15:48:54 +02:00
couriersud
a48f64e018 netlist: Improve static solver performance by 5%. [Couriersud]
Use a more condensed matrix format for go, gt and Id matrices.
In addition, optimize the static compilation code.
2020-06-13 15:48:14 +02:00
AJR
8384a50597 Fix clang error: unknown warning group '-Wpmf-conversions', ignored [-Werror,-Wunknown-pragmas] (nw) 2020-06-08 12:13:39 -04:00
couriersud
6f24deceec netlist: fix mingw7.2 compile. (nw) 2020-06-08 12:52:57 +02:00
couriersud
773a23f503 netlist: prepare path to non-virtual update functions. (nw) 2020-06-08 03:12:03 +02:00
couriersud
ec0f62d789 netlist: further optimize ppmf.h [Couriersud]
Move towards a pure c++ constexpr solution to derive the optimal
pointer to member function solution.

All the macro madness is centralized to a compile_info struct with
static members.

For the time being the evaluation result is compared against the
previous approach. Going forward this will be dropped as well as the
support for MINGW with GCC <= 4.6
2020-06-08 03:11:41 +02:00
couriersud
d041e74e2c netlist: allow selection of base arena for pmempool_arena. (nw) 2020-06-08 03:10:58 +02:00
couriersud
1c635c1bfd netlist: Fix MSVC build. [Couriersud]
MSVC has an issue with SFINAE and overloading resolution.
A discussion can be found here:

https://stackoverflow.com/questions/31062892/overloading-on-static-in-conjunction-with-sfinae

The previous code compiled with gcc and clang on all platforms and
compilers apart from MSVC. Replaced with double template specialization.
2020-06-08 03:10:27 +02:00
couriersud
bed452a874 netlist: arena code maintenance. (nw) 2020-06-08 03:10:13 +02:00
couriersud
3c6b49898b netlist: ppmf simplification. (nw) 2020-06-08 03:08:31 +02:00
couriersud
f9fa6b1c81 netlist: code maintenance. (nw)
- more c++14, use enable_if_t instead of enable_if
- cleaned up the use of memory allocation arenas
- reduce MACRO usage, use std::conditional where possible
2020-06-08 02:52:39 +02:00
couriersud
ea0f297c85 netlist: remove more macro usage, fix win float exceptions. (nw) 2020-06-06 20:43:13 +02:00
couriersud
8a1ece4a3b netlist: Reduce macro usage and make use of pstring utf8. (nw) 2020-06-06 20:43:12 +02:00
couriersud
e3901f419c netlist: code maintenance. (nw)
Fix visibility of classes in nlid_system.h.
Fix tidy warning for penum.
2020-06-06 20:43:11 +02:00
couriersud
3f9bb5d1ea netlist: Enable utf7 filenames on windows. (nw) 2020-06-06 20:43:10 +02:00
couriersud
251b11266d netlist: fix dpatrol. (nw) 2020-06-01 20:10:58 +02:00
couriersud
37258b7439 netlist: clang-tidy, header order fixes. (nw) 2020-06-01 19:59:54 +02:00
couriersud
ef11941a92 netlist: move multiparameter streaming into nl_interface.h (nw) 2020-06-01 19:59:54 +02:00
couriersud
9cd005b574 netlist: drop c++11 support. (nw)
This wasn't working since the last factory changes. Removed it.
Basically replace C14CONSTEXPR with constexpr.
2020-06-01 19:59:53 +02:00
couriersud
3fd176a7a6 netlist: device factory enhancements. (nw)
Factory elements can now pass additional parameters to device
constructors. This makes the design of interface objects like analog
callbacks easier.

The change also allowed to remove some "deep" calls into the core from
the MAME interface in netlist.h
2020-06-01 19:59:52 +02:00
couriersud
efa12efc37 netlist: debugger - use callbacks to access terminals. (nw) 2020-06-01 19:59:52 +02:00
couriersud
215aa82cec netlist: Change use of NETLIB_DELEGATE macro. (nw)
The macro now has only one parameter, the local name of the delegate.
2020-06-01 19:59:51 +02:00
couriersud
c00dc87830 netlist: refactored ppmf.h [Couriersud]
Make more use of c++.
Prepare coexistence of different delegate types.
Untangle code.
Reduced macro usage.
2020-06-01 19:59:50 +02:00
MetalliC
eda94384f6 forgot this one (nw) 2020-05-31 10:27:33 +03:00
Colin Douglas Howell
1984fb5f94
mw8080bw: 280zzzap netlist audio (#6760)
* mw8080bw: update 280zzzap audio API in preparation for netlist audio

This is only API changes, following the pattern used by cuavas within the
past year to update other games in mw8080bw.

* mw8080bw: new netlist audio implementation for 280zzzap

New netlist-based audio implementation for 280zzzap (280-ZZZAP, 1976),
derived from Midway game logic board schematic. The sound generally
matches that heard in videos of the machine, though the real machine
seems to have more bass and less treble. This may be a cabinet effect
or something else, such as a difference in component values.

Due to the number of complex components being emulated and the nature
of the circuits, this netlist adds a lot of overhead, but it's still
fast enough to run at greater than real speed on modern hardware.

With minor changes, this implementation should also support lagunar
(Laguna Racer, 1977); with somewhat more substantial changes, it
would also support sspeedr (Super Speed Race, 1979). Both of these
games use sound circuits based on those for 280-ZZZAP.
2020-05-30 08:36:17 -04:00
MetalliC
186b50e8df dsk_dsk.cpp: be nice and allow to use DS images with SS drives (nw) 2020-05-26 14:51:34 +03:00
MetalliC
0fe92226a8 ZX-Spectrum Beta-disc FDCs: modernize/fix FDD motor control 2020-05-26 14:50:34 +03:00
couriersud
10e4f10d41 netlist: split plists.h and fix nvcc compile for 10.2 (nw)
plists.h was splitted into plists.h, pmulti_threading.h and
ptimed_queue.h. In addition removed plists.h from a number of files it
wasn't used in.

Certain minor adjustment needed to be made for cuda toolkit 10.1 and
10.2.
2020-05-25 23:57:49 +02:00
couriersud
54293ab546 netlist: small memory system cleanup. (nw) 2020-05-25 23:57:49 +02:00
couriersud
e97a8709a8 netlist: code maintenance. (nw) 2020-05-25 23:57:48 +02:00
couriersud
8120e2fe0d netlist: move netlist parsing where it belongs. (nw) 2020-05-25 23:57:47 +02:00
couriersud
c432b50bda netlist: move configuration entries into netlist namespace. (nw) 2020-05-25 23:57:47 +02:00
couriersud
97244a743a netlist: improve performance. [Couriersud]
pongf now peaks at 589% compared to 570% before.

Amongst a number of improvements in nl_base.h, the 7493 was touched.
Also has some code cleanup and hopefully faster compilation due to
extern template declarations.
2020-05-24 10:48:06 +02:00
couriersud
de615ac138 netlist: move penum into own header file. (nw) 2020-05-24 10:48:06 +02:00
couriersud
fff7f6ef55 netlist: Better integretation of INT128. (nw)
Also some minor optimisations bringing pong and breakout to previous
performance.
2020-05-24 10:48:05 +02:00
couriersud
80aeecc227 netlist: fix a memory issue. (nw)
+ cosmetic changes in nl_base.cpp and build/makefile
2020-05-24 10:48:04 +02:00
couriersud
f88a576c54 netlist: various clang-tidy-11 fixes. (nw) 2020-05-24 10:48:03 +02:00
couriersud
6141fa4a9c netlist: Fix performance issues and VC2019. [Couriersud]
For reasons unknown to me compile optimizations do not behave for
template code. If the implementation is in separate compile units, the
code compiles and performs.
2020-05-22 01:15:18 +02:00
couriersud
5a43cc6432 netlist: consolidate 9316-type counters. [Couriersud]
This needs more attention since for certain compilers there is a
considerable performance degregation. It looks like this is only
triggered if too many variants are declared in one cpp file and the
compiler stops inlining.
2020-05-22 01:15:18 +02:00
couriersud
dae6a396c9 netlist: fix performance decrease. (nw) 2020-05-22 01:15:17 +02:00
couriersud
e9a364dcc9 netlist: Add tristate support for rom devices. [Couriersud]
Rom and prom devices now properly support tristate outputs. Native OC
output still on the todo list.

In addition this commit fixes a number of bugs around dealing with macro
level parameters and improves documentation by adding a parameter table.

Also srcclean.
2020-05-20 07:59:46 +02:00
couriersud
11af744ef3 netlist: improve syntax of generic device descriptors. (nw) 2020-05-20 07:59:00 +02:00
couriersud
40628bc269 netlist: simplify factory call structure. (nw)
This change will make it a lot easier to add enhanced functionality to
the factory infrastructure.
Using integral constants also improves linking stability.
2020-05-20 07:58:57 +02:00
AJR
383297b101 nlm_ttl74xx.cpp: Fix clang build [-Werror,-Wunused-function] (nw) 2020-05-18 14:09:42 -04:00
Aaron Giles
d1db16413c Add 7421 device. 2020-05-18 08:50:15 -07:00
Aaron Giles
c630deef6d Added missing definition. 2020-05-18 08:46:33 -07:00
Aaron Giles
fbe6b0fc0d 74S127 outputs are numbered starting at 0. 2020-05-18 08:46:14 -07:00
couriersud
a94de94c73 netlist: improve typesafety for source locations. (nw)
During object creation netlist tracks the source files which provide
object creation. This is later used e.g. by nltool to create
documentation from source.
2020-05-17 19:52:24 +02:00
couriersud
22fb995337 netlist: Add working 74125 and 74126 implementations. [Couriersud]
These tristate buffers natively support tristate outputs. For use cases
with fixed enable inputs the devices support a parameter
FORCE_TRISTATE_LOGIC which if being set to 1 makes the device behave
like a logic output.

Added additional syntax and consistency checks for tristate outputs.
Updated the example and added dip implementations including
documentation.
2020-05-17 19:52:09 +02:00