Commit Graph

166 Commits

Author SHA1 Message Date
Michael Steil 268d16647c fixed measure.c to work with new API 2020-06-13 19:18:57 +02:00
Michael Steil d4117f915f
Create LICENSE 2020-06-04 19:47:38 +02:00
Michael Steil 3e60b6dd44 cleanup: moved cbmbasic and apple1basic demos into subdirectories
* also changed "clang" to "cc"
* enabled optimizations for 64 bit (it's 10 years later!)
* updated README to reflect CPU speed in 2020 (5x faster than 2014!)
* added benchmarking instructions to README
2020-06-04 19:32:59 +02:00
Ian Henderson cb5469d7c3 optimize addNodeToGroup by improving memory locality 2020-06-04 18:50:24 +02:00
Tom Seddon 350f4b27e0 Add destroyChip. 2019-09-08 15:06:26 +02:00
Michael Steil 224ac909ee Merge pull request #5 from drfiemost/master
Avoid memory pollution
2017-01-22 20:55:00 +01:00
Dr. Fiemost 93bb291203 Fix UBSan error 2017-01-22 19:08:31 +01:00
Dr. Fiemost dff94ab870 Initialize remaining struct members 2017-01-21 14:17:39 +01:00
Dr. Fiemost 379a588484 Initialize allocated memory 2017-01-21 14:16:26 +01:00
Dr. Fiemost ed250b1a62 Avoid use of deprecated function 2017-01-21 14:13:06 +01:00
Michael Steil 98026be01f Merge pull request #4 from drfiemost/master
Fix setNode function
2017-01-18 12:39:52 +01:00
Dr. Fiemost aed0d9a3c3 Fix https://github.com/mist64/perfect6502/issues/3 2017-01-17 20:53:44 +01:00
Michael Steil 4142ac152e moved nodes names into netlist_6502.h 2014-12-01 16:42:48 +01:00
Michael Steil 0269c1bdf1 cleanups 2014-12-01 14:03:16 +01:00
Michael Steil 76d798db79 split code into generic netlist simulation and 6502-specific code 2014-12-01 13:53:46 +01:00
Michael Steil 44cde717a1 cleanup 2014-12-01 13:29:08 +01:00
Michael Steil c93f229339 cleanup 2014-12-01 13:10:28 +01:00
Michael Steil 4b70feb863 cleanup 2014-12-01 12:48:41 +01:00
Michael Steil 79d5e114ef cleanups 2014-12-01 12:44:03 +01:00
Michael Steil c7ede71e52 actually de-dup transistors! 2014-12-01 12:31:14 +01:00
Michael Steil e49ca0be5f cleanups 2014-12-01 12:23:47 +01:00
Michael Steil b31b545032 malloc'ed all state instead of having a gigantic struct
state_t is now 208 bytes on x86_64 instead of 26 MB. Startup is a little slower though because of ~7000 malloc calls.
2014-12-01 12:10:21 +01:00
Michael Steil 1c9eb78154 cleaned up node names 2014-12-01 11:48:01 +01:00
Michael Steil fc3082a259 updated copyright 2014-12-01 11:01:11 +01:00
Michael Steil c4f7cfb449 The state pointer is no longer global, but passed down to every function.
...and surprisingly, it's not any slower. if anything, it's 1% faster.
2014-12-01 11:00:30 +01:00
Michael Steil b8af4edbbe moved all globals into a single global struct -> 3% speedup with clang :) 2014-11-29 00:55:06 +01:00
Michael Steil b3f4c56541 added README 2014-11-28 08:31:36 +01:00
Michael Steil 9a8e2c396f fixed line endings 2014-11-28 07:57:38 +01:00
Michael Steil 8161e5e600 added object files to .gitignore 2014-11-28 07:56:51 +01:00
Michael Steil b2cce88620 optimizations (~25%) and cleanup
Optimizations:
1. When a transistor is turned on, only add one of the nodes it
   controls to listout, otherwise group calculation would be done twice
   for this group. This simplifies recalcNodeList(). (This required
   the following change: Instead of adding the nodes that control
   transistors that have changed to listout, put the nodes that are
   switched by transistors on listout.)
2. The group value is calculated while collecting nodes, and the enum
   group_contains_value makes sure we don't check for weaker value
   indicators than have already been established.
3. listout is now a set, no node will be visited twice for group
   calculation, within one interation.
4. When setting input pins of the package to a value, only recalc the
   node if it actually changes.
5. Toggling a transistor is done by assigning it the group value
   instead of the inverse of its value.

Cleanup:
* Merge the concept of listin with the concept of nodes that change
  from the outside and trigger a recalc.
2014-11-28 07:04:07 +01:00
Michael Steil bdbe8eff59 ... 2010-10-20 07:49:51 +00:00
Michael Steil 63ce225449 added apple1basic 2010-10-12 14:29:11 +00:00
Michael Steil f424b464f2 cleanup 2010-10-08 04:09:56 +00:00
Michael Steil 48e5756c38 cleanup 2010-10-08 03:58:09 +00:00
Michael Steil 8d948b5f64 indirect lostout 2010-10-08 03:22:54 +00:00
Michael Steil d9ba3fc769 experimental... 2010-10-07 05:20:49 +00:00
Michael Steil c0d191a03f added concept of dependants - same speed, but might
lead to more optimization opportunities
2010-10-07 04:39:40 +00:00
Michael Steil 6e8fd7f401 debug code; eliminate more duplicate transistors (with c1 and c2 reversed) 2010-10-07 02:19:44 +00:00
Michael Steil 07d31a1529 cleanup 2010-10-07 00:28:02 +00:00
Michael Steil 44f7f48a9c fixed "broken transistors" test 2010-10-06 16:53:40 +00:00
Michael Steil 217ba8f681 rename 2010-10-06 16:34:57 +00:00
Michael Steil f8fe8d9d46 made test work independently 2010-10-06 16:33:26 +00:00
Michael Steil 9318b580e4 huh, missing file? 2010-10-06 16:33:04 +00:00
Michael Steil a2ad35412c separated emulator and runtime 2010-10-06 15:58:13 +00:00
Michael Steil c53fa8ff9c cleanup 2010-10-06 04:32:54 +00:00
Michael Steil 7c58dfd703 memory read and write on the same edge now; cleanup 2010-10-06 03:00:20 +00:00
Michael Steil 4b95933e67 bitmap size fix -> 10% faster 2010-10-06 02:13:38 +00:00
Michael Steil 1b22b7fec9 rename 2010-10-05 18:20:02 +00:00
Michael Steil 4189c81c70 cleanup, restore missing loop exit case 2010-10-05 18:13:48 +00:00
Michael Steil 57d2ce2c91 cleanup 2010-10-05 18:01:13 +00:00