zemu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/zemu/config.rb +312 -0
- data/lib/zemu/instance.rb +179 -0
- data/lib/zemu.rb +172 -0
- data/src/debug.c +118 -0
- data/src/debug.h +30 -0
- data/src/external/Z/API/Z/ABIs/generic/allocator.h +36 -0
- data/src/external/Z/API/Z/ABIs/generic/cipher.h +47 -0
- data/src/external/Z/API/Z/ABIs/generic/data codec.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/emulation.h +103 -0
- data/src/external/Z/API/Z/ABIs/generic/hash function.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/module.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/wave codec.h +40 -0
- data/src/external/Z/API/Z/classes/base/InitializerList.hpp +34 -0
- data/src/external/Z/API/Z/classes/base/OpaqueFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/OpaqueMemberFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/Pair.hpp +46 -0
- data/src/external/Z/API/Z/classes/base/Range.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/SizedString.hpp +66 -0
- data/src/external/Z/API/Z/classes/base/Status.hpp +89 -0
- data/src/external/Z/API/Z/classes/base/Symbol.hpp +39 -0
- data/src/external/Z/API/Z/classes/base/Tuple.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/Value2D.hpp +389 -0
- data/src/external/Z/API/Z/classes/base/Value3D.hpp +368 -0
- data/src/external/Z/API/Z/classes/buffering/RingBuffer.hpp +93 -0
- data/src/external/Z/API/Z/classes/buffering/TripleBuffer.hpp +68 -0
- data/src/external/Z/API/Z/classes/functional/Functor.hpp +265 -0
- data/src/external/Z/API/Z/classes/functional/MemberFunction.hpp +98 -0
- data/src/external/Z/API/Z/classes/functional/ObjectMemberFunction.hpp +172 -0
- data/src/external/Z/API/Z/classes/functional/ObjectSelector.hpp +219 -0
- data/src/external/Z/API/Z/classes/functional/Selector.hpp +146 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABB.hpp +81 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABR.hpp +685 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Box.hpp +219 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Circle.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp +93 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp +675 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp +0 -0
- data/src/external/Z/API/Z/classes/memory/Shared.hpp +90 -0
- data/src/external/Z/API/Z/constants/base.h +35 -0
- data/src/external/Z/API/Z/constants/chemical elements.h +6385 -0
- data/src/external/Z/API/Z/constants/numbers.h +963 -0
- data/src/external/Z/API/Z/constants/version.h +15 -0
- data/src/external/Z/API/Z/formats/character set/ASCII.h +158 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP437.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP737.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP775.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP850.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP852.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP855.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP857.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP858.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP860.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP861.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP862.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP863.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP864.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP865.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP866.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP869.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP872.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP874.h +159 -0
- data/src/external/Z/API/Z/formats/character set/Unicode.h +30119 -0
- data/src/external/Z/API/Z/formats/data model/I16LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/IP16L32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LLP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/SILP64.h +19 -0
- data/src/external/Z/API/Z/formats/file system/FAT12.h +61 -0
- data/src/external/Z/API/Z/formats/floating-point/IEEE 754.h +141 -0
- data/src/external/Z/API/Z/formats/floating-point/x87.h +74 -0
- data/src/external/Z/API/Z/formats/image/ICNS.h +39 -0
- data/src/external/Z/API/Z/formats/keymap/Mac OS.h +284 -0
- data/src/external/Z/API/Z/formats/keymap/Z.h +141 -0
- data/src/external/Z/API/Z/formats/multimedia/Creative Voice.h +106 -0
- data/src/external/Z/API/Z/formats/multimedia/Microsoft Wave.h +49 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h +44 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h +54 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h +33 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h +46 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h +34 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h +37 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h +62 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h +56 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h +70 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/UNIF.h +26 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/iNES.h +76 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TAP.h +25 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TZX.h +1185 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/Warajevo TAP.h +32 -0
- data/src/external/Z/API/Z/formats/storage medium image/floppy disk/FDI.h +45 -0
- data/src/external/Z/API/Z/functions/base/Z2D.h +583 -0
- data/src/external/Z/API/Z/functions/base/Z3D.h +712 -0
- data/src/external/Z/API/Z/functions/base/ZRange.h +137 -0
- data/src/external/Z/API/Z/functions/base/all.h +16 -0
- data/src/external/Z/API/Z/functions/base/casting.hpp +37 -0
- data/src/external/Z/API/Z/functions/base/character.h +38 -0
- data/src/external/Z/API/Z/functions/base/constructors.h +326 -0
- data/src/external/Z/API/Z/functions/base/structure.hpp +26 -0
- data/src/external/Z/API/Z/functions/base/type.hpp +60 -0
- data/src/external/Z/API/Z/functions/base/value.h +1901 -0
- data/src/external/Z/API/Z/functions/base/value.hpp +112 -0
- data/src/external/Z/API/Z/functions/buffering/ZRingBuffer.h +85 -0
- data/src/external/Z/API/Z/functions/buffering/ZTripleBuffer.h +65 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h +179 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h +168 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABB.h +361 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABR.h +1081 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZBox.h +340 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZCircle.h +142 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h +1267 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZSphere.h +156 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/all.h +18 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/constructors.h +620 -0
- data/src/external/Z/API/Z/functions/time/date.h +29 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/6502.h +90 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/Z80.h +245 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/i4004.h +37 -0
- data/src/external/Z/API/Z/hardware/PSG/General Instrument/AY-3-891x.h +180 -0
- data/src/external/Z/API/Z/hardware/VDC/Ricoh/RP2C0x.h +625 -0
- data/src/external/Z/API/Z/hardware/bus/AGP.h +24 -0
- data/src/external/Z/API/Z/hardware/bus/USB.h +510 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h +47 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h +158 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h +82 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h +109 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/platform/computer/ZX Spectrum.h +405 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Game Boy.h +49 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h +350 -0
- data/src/external/Z/API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h +238 -0
- data/src/external/Z/API/Z/inspection/C/completion.h +178 -0
- data/src/external/Z/API/Z/inspection/C/modules/C11.h +41 -0
- data/src/external/Z/API/Z/inspection/C/modules/C18.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C89.h +19 -0
- data/src/external/Z/API/Z/inspection/C/modules/C90.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C94.h +15 -0
- data/src/external/Z/API/Z/inspection/C/modules/C99.h +29 -0
- data/src/external/Z/API/Z/inspection/C/modules/KR C.h +19 -0
- data/src/external/Z/API/Z/inspection/C++/completion.h +512 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++03.h +15 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++11.h +80 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++14.h +26 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++17.h +55 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++85.h +11 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++89.h +13 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++98.h +17 -0
- data/src/external/Z/API/Z/inspection/C++.h +78 -0
- data/src/external/Z/API/Z/inspection/C.h +79 -0
- data/src/external/Z/API/Z/inspection/CPU/completion.h +56 -0
- data/src/external/Z/API/Z/inspection/CPU/detection.h +714 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/6502.h +25 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch32.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch64.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/Z80.h +26 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-32.h +31 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-64.h +312 -0
- data/src/external/Z/API/Z/inspection/CPU.h +209 -0
- data/src/external/Z/API/Z/inspection/OS/completion.h +36 -0
- data/src/external/Z/API/Z/inspection/OS/detection.h +768 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Linux.h +22 -0
- data/src/external/Z/API/Z/inspection/OS/modules/MS-DOS.h +16 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Mac OS X.h +23 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Windows.h +19 -0
- data/src/external/Z/API/Z/inspection/OS/modules/iPhone OS.h +23 -0
- data/src/external/Z/API/Z/inspection/OS.h +236 -0
- data/src/external/Z/API/Z/inspection/Objective-C/completion.h +8 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v1.0.h +11 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v2.0.h +15 -0
- data/src/external/Z/API/Z/inspection/Objective-C.h +51 -0
- data/src/external/Z/API/Z/inspection/Z.h +19 -0
- data/src/external/Z/API/Z/inspection/build.h +22 -0
- data/src/external/Z/API/Z/inspection/character set.h +66 -0
- data/src/external/Z/API/Z/inspection/compiler/completion.h +2885 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Apple LLVM.h +26 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Clang.h +1664 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/GCC.h +1366 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/SCCZ80.h +473 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Visual C++.h +606 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/cc65.h +529 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/generic.h +13 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/template.h +650 -0
- data/src/external/Z/API/Z/inspection/compiler.h +299 -0
- data/src/external/Z/API/Z/inspection/data model/completion.h +128 -0
- data/src/external/Z/API/Z/inspection/data model/deduction.h +9 -0
- data/src/external/Z/API/Z/inspection/data model/detection.h +45 -0
- data/src/external/Z/API/Z/inspection/data model.h +362 -0
- data/src/external/Z/API/Z/inspection/floating-point/completion.h +50 -0
- data/src/external/Z/API/Z/inspection/floating-point.h +324 -0
- data/src/external/Z/API/Z/inspection/language.h +163 -0
- data/src/external/Z/API/Z/inspection/platform/detection.h +9 -0
- data/src/external/Z/API/Z/inspection/platform.h +29 -0
- data/src/external/Z/API/Z/keys/C++.h +27 -0
- data/src/external/Z/API/Z/keys/C.h +29 -0
- data/src/external/Z/API/Z/keys/CPU.h +80 -0
- data/src/external/Z/API/Z/keys/OS.h +182 -0
- data/src/external/Z/API/Z/keys/Objective-C.h +17 -0
- data/src/external/Z/API/Z/keys/chemistry.h +26 -0
- data/src/external/Z/API/Z/keys/compiler.h +178 -0
- data/src/external/Z/API/Z/keys/data model.h +32 -0
- data/src/external/Z/API/Z/keys/endianness.h +24 -0
- data/src/external/Z/API/Z/keys/language.h +21 -0
- data/src/external/Z/API/Z/keys/layout.h +20 -0
- data/src/external/Z/API/Z/keys/mathematics/geometry.h +29 -0
- data/src/external/Z/API/Z/keys/mathematics/number.h +21 -0
- data/src/external/Z/API/Z/keys/order.h +18 -0
- data/src/external/Z/API/Z/keys/platform.h +87 -0
- data/src/external/Z/API/Z/keys/program.h +39 -0
- data/src/external/Z/API/Z/keys/science/chemical elements.h +200 -0
- data/src/external/Z/API/Z/keys/science/electricity.h +18 -0
- data/src/external/Z/API/Z/keys/science/magnetism.h +19 -0
- data/src/external/Z/API/Z/keys/status.h +69 -0
- data/src/external/Z/API/Z/keys/text.h +27 -0
- data/src/external/Z/API/Z/keys/value.h +88 -0
- data/src/external/Z/API/Z/macros/arguments.h +25 -0
- data/src/external/Z/API/Z/macros/casting.h +22 -0
- data/src/external/Z/API/Z/macros/character.h +159 -0
- data/src/external/Z/API/Z/macros/date.h +14 -0
- data/src/external/Z/API/Z/macros/key.h +20 -0
- data/src/external/Z/API/Z/macros/language.h +126 -0
- data/src/external/Z/API/Z/macros/language.hpp +81 -0
- data/src/external/Z/API/Z/macros/members.h +86 -0
- data/src/external/Z/API/Z/macros/pasting.h +308 -0
- data/src/external/Z/API/Z/macros/pointer.h +33 -0
- data/src/external/Z/API/Z/macros/repetition.h +283 -0
- data/src/external/Z/API/Z/macros/structure.h +104 -0
- data/src/external/Z/API/Z/macros/templating.h +407 -0
- data/src/external/Z/API/Z/macros/tokens.h +14 -0
- data/src/external/Z/API/Z/macros/type enumeration.h +43 -0
- data/src/external/Z/API/Z/macros/type selection.hpp +76 -0
- data/src/external/Z/API/Z/macros/value.h +489 -0
- data/src/external/Z/API/Z/macros/variadic pasting.h +21 -0
- data/src/external/Z/API/Z/macros/variadic selection.h +56 -0
- data/src/external/Z/API/Z/macros/variadic.h +46 -0
- data/src/external/Z/API/Z/macros/version.h +17 -0
- data/src/external/Z/API/Z/network/3/IP.h +36 -0
- data/src/external/Z/API/Z/network/4/TCP.h +24 -0
- data/src/external/Z/API/Z/network/4/UDP.h +26 -0
- data/src/external/Z/API/Z/network/7/ED2K.h +104 -0
- data/src/external/Z/API/Z/network/7/HTTP.h +100 -0
- data/src/external/Z/API/Z/traits/SelectType.hpp +71 -0
- data/src/external/Z/API/Z/traits/TernaryType.hpp +20 -0
- data/src/external/Z/API/Z/traits/Type.hpp +4516 -0
- data/src/external/Z/API/Z/traits/TypeCount.hpp +52 -0
- data/src/external/Z/API/Z/traits/TypeList.hpp +376 -0
- data/src/external/Z/API/Z/traits/base.hpp +19 -0
- data/src/external/Z/API/Z/traits/filtering.hpp +30 -0
- data/src/external/Z/API/Z/traits/mathematics.hpp +48 -0
- data/src/external/Z/API/Z/types/arguments.h +19 -0
- data/src/external/Z/API/Z/types/base.h +1655 -0
- data/src/external/Z/API/Z/types/base.hpp +169 -0
- data/src/external/Z/API/Z/types/buffering.h +27 -0
- data/src/external/Z/API/Z/types/mathematics.h +135 -0
- data/src/external/Z/API/Z/types/time.h +23 -0
- data/src/external/Z/COPYING.LESSER +165 -0
- data/src/external/Z/development/Qt Creator/Z.pro +253 -0
- data/src/external/Z/distribution/CocoaPods/Zeta.podspec +18 -0
- data/src/external/Z/distribution/Gentoo Linux/Zeta-0.1.ebuild +22 -0
- data/src/external/Z/distribution/Gentoo Linux/metadata.xml +8 -0
- data/src/external/Z/distribution/Homebrew/Zeta.rb +11 -0
- data/src/external/z80/API/emulation/CPU/Z80.h +201 -0
- data/src/external/z80/README.md +229 -0
- data/src/external/z80/building/premake4.lua +33 -0
- data/src/external/z80/development/Xcode/Z80.xcodeproj/project.pbxproj +520 -0
- data/src/external/z80/sources/Z80.c +1660 -0
- data/src/interrupt.c +6 -0
- data/src/interrupt.h +3 -0
- data/src/io.c.erb +115 -0
- data/src/io.h.erb +18 -0
- data/src/main.c +69 -0
- data/src/memory.c.erb +43 -0
- data/src/memory.h.erb +9 -0
- metadata +329 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
/* Z Kit - hardware/CPU/architecture/6502.h
|
2
|
+
_____ _______________
|
3
|
+
/_ /_/ -_/_ _/ _ |
|
4
|
+
/____/\___/ /__//___/_| Kit
|
5
|
+
Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
|
6
|
+
Released under the terms of the GNU Lesser General Public License v3.
|
7
|
+
|
8
|
+
Registers:
|
9
|
+
.-----------------------------------.
|
10
|
+
| F E D C B A 9 8 | 7 6 5 4 3 2 1 0 |
|
11
|
+
|-----------------------------------|
|
12
|
+
| PC | Program Counter
|
13
|
+
'-----------------------------------|
|
14
|
+
| S | Stack Pointer
|
15
|
+
|-----------------|
|
16
|
+
| P | Program Status (flags)
|
17
|
+
|-----------------|
|
18
|
+
| A | Accumulator
|
19
|
+
|-----------------|
|
20
|
+
| X | X Index
|
21
|
+
|-----------------|
|
22
|
+
| Y | Y Index
|
23
|
+
'-----------------'
|
24
|
+
|
25
|
+
Status (P register):
|
26
|
+
.-----------------.
|
27
|
+
| 7 6 5 4 3 2 1 0 |
|
28
|
+
| N V - B D I Z C |
|
29
|
+
'-|-|-|-|-|-|-|-|-'
|
30
|
+
| | | | | | | '-> carry
|
31
|
+
| | | | | | '---> zero
|
32
|
+
| | | | | '-----> interrupt (IRQ disable)
|
33
|
+
| | | | '-------> decimal (use BCD for arithmetics)
|
34
|
+
| | | '---------> break
|
35
|
+
| | '-----------> (ignored)
|
36
|
+
| '-------------> overflow
|
37
|
+
'---------------> negative */
|
38
|
+
|
39
|
+
#ifndef _Z_hardware_CPU_architecture_6502_H_
|
40
|
+
#define _Z_hardware_CPU_architecture_6502_H_
|
41
|
+
|
42
|
+
#include <Z/types/base.h>
|
43
|
+
|
44
|
+
/* MARK: - Addresses */
|
45
|
+
|
46
|
+
#define Z_6502_ADDRESS_NMI_POINTER 0xFFFA
|
47
|
+
#define Z_6502_ADDRESS_RESET_POINTER 0XFFFC
|
48
|
+
#define Z_6502_ADDRESS_IRQ_POINTER 0xFFFE
|
49
|
+
#define Z_6502_ADDRESS_BRK_POINTER 0xFFFE
|
50
|
+
#define Z_6502_ADDRESS_STACK 0x0100
|
51
|
+
|
52
|
+
/* MARK: - Values after power on */
|
53
|
+
|
54
|
+
#define Z_6502_VALUE_AFTER_POWER_ON_PC 0x0000
|
55
|
+
#define Z_6502_VALUE_AFTER_POWER_ON_S 0xFD
|
56
|
+
#define Z_6502_VALUE_AFTER_POWER_ON_P 0x36
|
57
|
+
#define Z_6502_VALUE_AFTER_POWER_ON_A 0x00
|
58
|
+
#define Z_6502_VALUE_AFTER_POWER_ON_X 0x00
|
59
|
+
#define Z_6502_VALUE_AFTER_POWER_ON_Y 0x00
|
60
|
+
|
61
|
+
/* MARK: - State storage type */
|
62
|
+
|
63
|
+
Z_DEFINE_STRICT_STRUCTURE_BEGIN
|
64
|
+
zuint16 pc;
|
65
|
+
zuint8 s, p, a, x, y;
|
66
|
+
|
67
|
+
struct {zuint8 irq :1;
|
68
|
+
zuint8 nmi :1;
|
69
|
+
} internal;
|
70
|
+
Z_DEFINE_STRICT_STRUCTURE_END Z6502State;
|
71
|
+
|
72
|
+
#define Z_6502_STATE_PC( object) (object)->pc
|
73
|
+
#define Z_6502_STATE_S( object) (object)->s
|
74
|
+
#define Z_6502_STATE_P( object) (object)->p
|
75
|
+
#define Z_6502_STATE_A( object) (object)->a
|
76
|
+
#define Z_6502_STATE_X( object) (object)->x
|
77
|
+
#define Z_6502_STATE_Y( object) (object)->y
|
78
|
+
#define Z_6502_STATE_NMI(object) (object)->internal.nmi
|
79
|
+
#define Z_6502_STATE_IRQ(object) (object)->internal.irq
|
80
|
+
|
81
|
+
#define Z_6502_STATE_MEMBER_PC pc
|
82
|
+
#define Z_6502_STATE_MEMBER_S s
|
83
|
+
#define Z_6502_STATE_MEMBER_P p
|
84
|
+
#define Z_6502_STATE_MEMBER_A a
|
85
|
+
#define Z_6502_STATE_MEMBER_X x
|
86
|
+
#define Z_6502_STATE_MEMBER_Y y
|
87
|
+
#define Z_6502_STATE_MEMBER_NMI internal.nmi
|
88
|
+
#define Z_6502_STATE_MEMBER_IRQ internal.irq
|
89
|
+
|
90
|
+
#endif /* _Z_hardware_CPU_architecture_6502_H_ */
|
@@ -0,0 +1,245 @@
|
|
1
|
+
/* Z Kit - hardware/CPU/architecture/Z80.h
|
2
|
+
_____ _______________
|
3
|
+
/_ /_/ -_/_ _/ _ |
|
4
|
+
/____/\___/ /__//___/_| Kit
|
5
|
+
Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
|
6
|
+
Released under the terms of the GNU Lesser General Public License v3.
|
7
|
+
|
8
|
+
Registers:
|
9
|
+
.-----------------------------------.
|
10
|
+
| F E D C B A 9 8 | 7 6 5 4 3 2 1 0 |
|
11
|
+
|-----------------------------------|
|
12
|
+
| PC |
|
13
|
+
|-----------------------------------|
|
14
|
+
| SP |
|
15
|
+
|-----------------------------------|
|
16
|
+
| A AF F |
|
17
|
+
|-----------------------------------|
|
18
|
+
| B BC C |
|
19
|
+
|-----------------------------------|
|
20
|
+
| D DE E |
|
21
|
+
|-----------------------------------|
|
22
|
+
| H HL L |
|
23
|
+
|-----------------------------------|
|
24
|
+
| IXH IX IXL |
|
25
|
+
|-----------------------------------|
|
26
|
+
| IYH IY IYL |
|
27
|
+
|-----------------------------------|
|
28
|
+
| AF' |
|
29
|
+
|-----------------------------------|
|
30
|
+
| BC' |
|
31
|
+
|-----------------------------------|
|
32
|
+
| DE' |
|
33
|
+
|-----------------------------------|
|
34
|
+
| HL' |
|
35
|
+
'-----------------------------------|
|
36
|
+
| I |
|
37
|
+
|-----------------|
|
38
|
+
| R |
|
39
|
+
'-----------------'
|
40
|
+
|
41
|
+
Flags (F register):
|
42
|
+
.-----------------.
|
43
|
+
| 7 6 5 4 3 2 1 0 |
|
44
|
+
| S Z Y H X P N C |
|
45
|
+
'-|-|-|-|-|-|-|-|-'
|
46
|
+
| | | | | | | '-> carry
|
47
|
+
| | | | | | '---> addition / subtraction
|
48
|
+
| | | | | '-----> parity / 2-compliment signed overflow
|
49
|
+
| | | | '-------> result bit 3 copy (undocumented)
|
50
|
+
| | | '---------> half carry
|
51
|
+
| | '-----------> result bit 5 copy (undocumented)
|
52
|
+
| '-------------> zero
|
53
|
+
'---------------> sign */
|
54
|
+
|
55
|
+
#ifndef _Z_hardware_CPU_architecture_Z80_H_
|
56
|
+
#define _Z_hardware_CPU_architecture_Z80_H_
|
57
|
+
|
58
|
+
#include <Z/types/base.h>
|
59
|
+
|
60
|
+
/* MARK: - Limits and features */
|
61
|
+
|
62
|
+
#define Z_Z80_MINIMUM_CYCLES_PER_INSTRUCTION 4
|
63
|
+
#define Z_Z80_MAXIMUM_CYCLES_PER_INSTRUCTION 23
|
64
|
+
#define Z_Z80_MINIMUM_BITS_INSTRUCTION 8
|
65
|
+
#define Z_Z80_MAXIMUM_BITS_INSTRUCTION 32
|
66
|
+
#define Z_Z80_BITS_ADDRESS_BUS 16
|
67
|
+
#define Z_Z80_BITS_DATA_BUS 8
|
68
|
+
#define Z_Z80_BITS_ADDRESSING 16
|
69
|
+
|
70
|
+
/* MARK: - Addresses */
|
71
|
+
|
72
|
+
#define Z_Z80_ADDRESS_NMI_POINTER 0x0066
|
73
|
+
|
74
|
+
/* MARK: - Values after power on */
|
75
|
+
/*
|
76
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_PC 0x0000
|
77
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_SP 0x0000
|
78
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_AF 0x0040
|
79
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_BC 0x0000
|
80
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_DE 0x0000
|
81
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_HL 0x0000
|
82
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IX 0x0000
|
83
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IY 0xFFFF
|
84
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_AF_ 0x0000
|
85
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_BC_ 0x0000
|
86
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_DE_ 0x0000
|
87
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_HL_ 0x0000
|
88
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_I 0x00
|
89
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_R 0x00
|
90
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_MEMPTR 0x0000
|
91
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IFF1 0
|
92
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IFF2 0
|
93
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IM 1*/
|
94
|
+
|
95
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_PC 0x0000
|
96
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_SP 0xFFFF
|
97
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_AF 0xFFFF
|
98
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_BC 0xFFFF
|
99
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_DE 0xFFFF
|
100
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_HL 0xFFFF
|
101
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IX 0xFFFF
|
102
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IY 0xFFFF
|
103
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_AF_ 0xFFFF
|
104
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_BC_ 0xFFFF
|
105
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_DE_ 0xFFFF
|
106
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_HL_ 0xFFFF
|
107
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_I 0x00
|
108
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_R 0x00
|
109
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_MEMPTR 0x0000
|
110
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IFF1 0
|
111
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IFF2 0
|
112
|
+
#define Z_Z80_VALUE_AFTER_POWER_ON_IM 0
|
113
|
+
|
114
|
+
/* MARK: - Values after reset */
|
115
|
+
|
116
|
+
#define Z_Z80_VALUE_AFTER_RESET_PC Z_Z80_VALUE_AFTER_POWER_ON_PC
|
117
|
+
#define Z_Z80_VALUE_AFTER_RESET_SP Z_Z80_VALUE_AFTER_POWER_ON_SP
|
118
|
+
#define Z_Z80_VALUE_AFTER_RESET_AF Z_Z80_VALUE_AFTER_POWER_ON_AF
|
119
|
+
#define Z_Z80_VALUE_AFTER_RESET_BC Z_Z80_VALUE_AFTER_POWER_ON_BC
|
120
|
+
#define Z_Z80_VALUE_AFTER_RESET_DE Z_Z80_VALUE_AFTER_POWER_ON_DE
|
121
|
+
#define Z_Z80_VALUE_AFTER_RESET_HL Z_Z80_VALUE_AFTER_POWER_ON_HL
|
122
|
+
#define Z_Z80_VALUE_AFTER_RESET_IX Z_Z80_VALUE_AFTER_POWER_ON_IX
|
123
|
+
#define Z_Z80_VALUE_AFTER_RESET_IY Z_Z80_VALUE_AFTER_POWER_ON_IY
|
124
|
+
#define Z_Z80_VALUE_AFTER_RESET_AF_ Z_Z80_VALUE_AFTER_POWER_ON_AF_
|
125
|
+
#define Z_Z80_VALUE_AFTER_RESET_BC_ Z_Z80_VALUE_AFTER_POWER_ON_BC_
|
126
|
+
#define Z_Z80_VALUE_AFTER_RESET_DE_ Z_Z80_VALUE_AFTER_POWER_ON_DE_
|
127
|
+
#define Z_Z80_VALUE_AFTER_RESET_HL_ Z_Z80_VALUE_AFTER_POWER_ON_HL_
|
128
|
+
#define Z_Z80_VALUE_AFTER_RESET_I Z_Z80_VALUE_AFTER_POWER_ON_I
|
129
|
+
#define Z_Z80_VALUE_AFTER_RESET_R Z_Z80_VALUE_AFTER_POWER_ON_R
|
130
|
+
#define Z_Z80_VALUE_AFTER_RESET_MEMPTR Z_Z80_VALUE_AFTER_POWER_ON_MEMPTR
|
131
|
+
#define Z_Z80_VALUE_AFTER_RESET_IFF1 Z_Z80_VALUE_AFTER_POWER_ON_IFF1
|
132
|
+
#define Z_Z80_VALUE_AFTER_RESET_IFF2 Z_Z80_VALUE_AFTER_POWER_ON_IFF2
|
133
|
+
#define Z_Z80_VALUE_AFTER_RESET_IM Z_Z80_VALUE_AFTER_POWER_ON_IM
|
134
|
+
|
135
|
+
/* MARK: - Information for emulation */
|
136
|
+
|
137
|
+
#define Z_Z80_RESET_IS_EQUAL_TO_POWER_ON TRUE
|
138
|
+
|
139
|
+
/* MARK: - State storage type */
|
140
|
+
|
141
|
+
Z_DEFINE_STRICT_STRUCTURE_BEGIN
|
142
|
+
zuint16 pc, sp;
|
143
|
+
Z16Bit af, bc, de, hl, ix, iy;
|
144
|
+
Z16Bit af_, bc_, de_, hl_;
|
145
|
+
zuint8 r, i;
|
146
|
+
|
147
|
+
zuint16 memptr;
|
148
|
+
|
149
|
+
struct {zuint8 halt :1;
|
150
|
+
zuint8 irq :1;
|
151
|
+
zuint8 nmi :1;
|
152
|
+
zuint8 iff1 :1;
|
153
|
+
zuint8 iff2 :1;
|
154
|
+
zuint8 ei :1;
|
155
|
+
zuint8 im :2;
|
156
|
+
} internal;
|
157
|
+
Z_DEFINE_STRICT_STRUCTURE_END ZZ80State;
|
158
|
+
|
159
|
+
#define Z_Z80_STATE_AF( object) (object)->af.value_uint16
|
160
|
+
#define Z_Z80_STATE_BC( object) (object)->bc.value_uint16
|
161
|
+
#define Z_Z80_STATE_DE( object) (object)->de.value_uint16
|
162
|
+
#define Z_Z80_STATE_HL( object) (object)->hl.value_uint16
|
163
|
+
#define Z_Z80_STATE_IX( object) (object)->ix.value_uint16
|
164
|
+
#define Z_Z80_STATE_IY( object) (object)->iy.value_uint16
|
165
|
+
#define Z_Z80_STATE_PC( object) (object)->pc
|
166
|
+
#define Z_Z80_STATE_SP( object) (object)->sp
|
167
|
+
#define Z_Z80_STATE_AF_( object) (object)->af_.value_uint16
|
168
|
+
#define Z_Z80_STATE_BC_( object) (object)->bc_.value_uint16
|
169
|
+
#define Z_Z80_STATE_DE_( object) (object)->de_.value_uint16
|
170
|
+
#define Z_Z80_STATE_HL_( object) (object)->hl_.value_uint16
|
171
|
+
#define Z_Z80_STATE_A( object) (object)->af.values_uint8.index1
|
172
|
+
#define Z_Z80_STATE_F( object) (object)->af.values_uint8.index0
|
173
|
+
#define Z_Z80_STATE_B( object) (object)->bc.values_uint8.index1
|
174
|
+
#define Z_Z80_STATE_C( object) (object)->bc.values_uint8.index0
|
175
|
+
#define Z_Z80_STATE_D( object) (object)->de.values_uint8.index1
|
176
|
+
#define Z_Z80_STATE_E( object) (object)->de.values_uint8.index0
|
177
|
+
#define Z_Z80_STATE_H( object) (object)->hl.values_uint8.index1
|
178
|
+
#define Z_Z80_STATE_L( object) (object)->hl.values_uint8.index0
|
179
|
+
#define Z_Z80_STATE_IXH( object) (object)->ix.values_uint8.index1
|
180
|
+
#define Z_Z80_STATE_IXL( object) (object)->ix.values_uint8.index0
|
181
|
+
#define Z_Z80_STATE_IYH( object) (object)->iy.values_uint8.index1
|
182
|
+
#define Z_Z80_STATE_IYL( object) (object)->iy.values_uint8.index0
|
183
|
+
#define Z_Z80_STATE_A_( object) (object)->af_.values_uint8.index1
|
184
|
+
#define Z_Z80_STATE_F_( object) (object)->af_.values_uint8.index0
|
185
|
+
#define Z_Z80_STATE_B_( object) (object)->bc_.values_uint8.index1
|
186
|
+
#define Z_Z80_STATE_C_( object) (object)->bc_.values_uint8.index0
|
187
|
+
#define Z_Z80_STATE_D_( object) (object)->de_.values_uint8.index1
|
188
|
+
#define Z_Z80_STATE_E_( object) (object)->de_.values_uint8.index0
|
189
|
+
#define Z_Z80_STATE_H_( object) (object)->hl_.values_uint8.index1
|
190
|
+
#define Z_Z80_STATE_L_( object) (object)->hl_.values_uint8.index0
|
191
|
+
#define Z_Z80_STATE_I( object) (object)->i
|
192
|
+
#define Z_Z80_STATE_R( object) (object)->r
|
193
|
+
#define Z_Z80_STATE_MEMPTR(object) (object)->memptr
|
194
|
+
#define Z_Z80_STATE_HALT( object) (object)->internal.halt
|
195
|
+
#define Z_Z80_STATE_IFF1( object) (object)->internal.iff1
|
196
|
+
#define Z_Z80_STATE_IFF2( object) (object)->internal.iff2
|
197
|
+
#define Z_Z80_STATE_EI( object) (object)->internal.ei
|
198
|
+
#define Z_Z80_STATE_IM( object) (object)->internal.im
|
199
|
+
#define Z_Z80_STATE_NMI( object) (object)->internal.nmi
|
200
|
+
#define Z_Z80_STATE_IRQ( object) (object)->internal.irq
|
201
|
+
|
202
|
+
#define Z_Z80_STATE_MEMBER_AF af.value_uint16
|
203
|
+
#define Z_Z80_STATE_MEMBER_BC bc.value_uint16
|
204
|
+
#define Z_Z80_STATE_MEMBER_DE de.value_uint16
|
205
|
+
#define Z_Z80_STATE_MEMBER_HL hl.value_uint16
|
206
|
+
#define Z_Z80_STATE_MEMBER_IX ix.value_uint16
|
207
|
+
#define Z_Z80_STATE_MEMBER_IY iy.value_uint16
|
208
|
+
#define Z_Z80_STATE_MEMBER_PC pc
|
209
|
+
#define Z_Z80_STATE_MEMBER_SP sp
|
210
|
+
#define Z_Z80_STATE_MEMBER_AF_ af_.value_uint16
|
211
|
+
#define Z_Z80_STATE_MEMBER_BC_ bc_.value_uint16
|
212
|
+
#define Z_Z80_STATE_MEMBER_DE_ de_.value_uint16
|
213
|
+
#define Z_Z80_STATE_MEMBER_HL_ hl_.value_uint16
|
214
|
+
#define Z_Z80_STATE_MEMBER_A af.values_uint8.index1
|
215
|
+
#define Z_Z80_STATE_MEMBER_F af.values_uint8.index0
|
216
|
+
#define Z_Z80_STATE_MEMBER_B bc.values_uint8.index1
|
217
|
+
#define Z_Z80_STATE_MEMBER_C bc.values_uint8.index0
|
218
|
+
#define Z_Z80_STATE_MEMBER_D de.values_uint8.index1
|
219
|
+
#define Z_Z80_STATE_MEMBER_E de.values_uint8.index0
|
220
|
+
#define Z_Z80_STATE_MEMBER_H hl.values_uint8.index1
|
221
|
+
#define Z_Z80_STATE_MEMBER_L hl.values_uint8.index0
|
222
|
+
#define Z_Z80_STATE_MEMBER_IXH ix.values_uint8.index1
|
223
|
+
#define Z_Z80_STATE_MEMBER_IXL ix.values_uint8.index0
|
224
|
+
#define Z_Z80_STATE_MEMBER_IYH iy.values_uint8.index1
|
225
|
+
#define Z_Z80_STATE_MEMBER_IYL iy.values_uint8.index0
|
226
|
+
#define Z_Z80_STATE_MEMBER_A_ af_.values_uint8.index1
|
227
|
+
#define Z_Z80_STATE_MEMBER_F_ af_.values_uint8.index0
|
228
|
+
#define Z_Z80_STATE_MEMBER_B_ bc_.values_uint8.index1
|
229
|
+
#define Z_Z80_STATE_MEMBER_C_ bc_.values_uint8.index0
|
230
|
+
#define Z_Z80_STATE_MEMBER_D_ de_.values_uint8.index1
|
231
|
+
#define Z_Z80_STATE_MEMBER_E_ de_.values_uint8.index0
|
232
|
+
#define Z_Z80_STATE_MEMBER_H_ hl_.values_uint8.index1
|
233
|
+
#define Z_Z80_STATE_MEMBER_L_ hl_.values_uint8.index0
|
234
|
+
#define Z_Z80_STATE_MEMBER_I i
|
235
|
+
#define Z_Z80_STATE_MEMBER_R r
|
236
|
+
#define Z_Z80_STATE_MEMPTR_MEMPTR memptr
|
237
|
+
#define Z_Z80_STATE_MEMBER_HALT internal.halt
|
238
|
+
#define Z_Z80_STATE_MEMBER_IFF1 internal.iff1
|
239
|
+
#define Z_Z80_STATE_MEMBER_IFF2 internal.iff2
|
240
|
+
#define Z_Z80_STATE_MEMBER_EI internal.ei
|
241
|
+
#define Z_Z80_STATE_MEMBER_IM internal.im
|
242
|
+
#define Z_Z80_STATE_MEMBER_NMI internal.nmi
|
243
|
+
#define Z_Z80_STATE_MEMBER_IRQ internal.irq
|
244
|
+
|
245
|
+
#endif /* _Z_hardware_CPU_architecture_Z80_H_ */
|
@@ -0,0 +1,37 @@
|
|
1
|
+
/* Z Kit - hardware/CPU/architecture/i4004.h
|
2
|
+
_____ _______________
|
3
|
+
/_ /_/ -_/_ _/ _ |
|
4
|
+
/____/\___/ /__//___/_| Kit
|
5
|
+
Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
|
6
|
+
Released under the terms of the GNU Lesser General Public License v3. */
|
7
|
+
|
8
|
+
#ifndef _Z_hardware_CPU_architecture_i4004_H_
|
9
|
+
#define _Z_hardware_CPU_architecture_i4004_H_
|
10
|
+
|
11
|
+
#include <Z/types/base.h>
|
12
|
+
|
13
|
+
/* MARK: - Addresses */
|
14
|
+
|
15
|
+
|
16
|
+
/* MARK: - Values after power on */
|
17
|
+
|
18
|
+
|
19
|
+
/* MARK: - Values after reset */
|
20
|
+
|
21
|
+
|
22
|
+
/* MARK: - Information for emulation */
|
23
|
+
|
24
|
+
|
25
|
+
/* MARK: - State storage type */
|
26
|
+
|
27
|
+
typedef struct {
|
28
|
+
zuint16 stack[4];
|
29
|
+
zuint8 pc;
|
30
|
+
zuint8 p[8];
|
31
|
+
zuint8 a;
|
32
|
+
zuint8 c;
|
33
|
+
} Zi4004State;
|
34
|
+
|
35
|
+
/* MARK: - State structure macros */
|
36
|
+
|
37
|
+
#endif /* _Z_hardware_CPU_architecture_i4004_H_ */
|
@@ -0,0 +1,180 @@
|
|
1
|
+
/* Z Kit - hardware/PSG/General Instrument/AY-3-891x.h
|
2
|
+
_____ _______________
|
3
|
+
/_ /_/ -_/_ _/ _ |
|
4
|
+
/____/\___/ /__//___/_| Kit
|
5
|
+
Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
|
6
|
+
Released under the terms of the GNU Lesser General Public License v3.
|
7
|
+
|
8
|
+
.----._.----.
|
9
|
+
Vss (GND) -01-| \_/ |-40- Vcc (+5V)
|
10
|
+
N.C. -02-| |-39- TEST 1
|
11
|
+
ANALOG CHANNEL B -03-| _ |-38- ANALOG CHANNEL C
|
12
|
+
ANALOG CHANNEL A -04-| (_) |-37- DA0
|
13
|
+
N.C. -05-| |-36- DA1
|
14
|
+
IOB7 -06-| |-35- DA2
|
15
|
+
IOB6 -07-| |-34- DA3
|
16
|
+
IOB5 -08-| |-33- DA4
|
17
|
+
IOB4 -09-| |-32- DA5
|
18
|
+
IOB3 -10-| SOUND |-31- DA6
|
19
|
+
IOB2 -11-| AY-3-8910 |-30- DA7
|
20
|
+
IOB1 -12-| |-29- BC1
|
21
|
+
IOB0 -13-| GI |-28- BC2
|
22
|
+
IOA7 -14-| |-27- BDIR
|
23
|
+
IOA6 -15-| |-26- TEST 2
|
24
|
+
IOA5 -16-| _ |-25- A8
|
25
|
+
IOA4 -17-| (_) |-24- A9
|
26
|
+
IOA3 -18-| |-23- RESET
|
27
|
+
IOA2 -19-| |-22- CLOCK
|
28
|
+
IOA1 -20-| |-21- IOA0
|
29
|
+
'-----------'
|
30
|
+
|
31
|
+
.----._.----.
|
32
|
+
ANALOG CHANNEL C -01-| \_/ |-28- DA0
|
33
|
+
TEST 1 -02-| |-27- DA1
|
34
|
+
Vcc (+5V) -03-| |-26- DA2
|
35
|
+
ANALOG CHANNEL B -04-| |-25- DA3
|
36
|
+
ANALOG CHANNEL A -05-| |-24- DA4
|
37
|
+
Vss (GND) -06-| SOUND |-23- DA5
|
38
|
+
IOA7 -07-| AY-3-8912 |-22- DA6
|
39
|
+
IOA6 -08-| |-21- DA7
|
40
|
+
IOA5 -09-| GI |-20- BC1
|
41
|
+
IOA4 -10-| |-19- BC2
|
42
|
+
IOA3 -11-| |-18- BDIR
|
43
|
+
IOA2 -12-| |-17- A8
|
44
|
+
IOA1 -13-| |-16- RESET
|
45
|
+
IOA0 -14-| |-15- CLOCK
|
46
|
+
'-----------'
|
47
|
+
|
48
|
+
.----._.----.
|
49
|
+
Vss (GND) -01-| \_/ |-24- CHIP SELECT
|
50
|
+
BDIR -02-| |-23- A8
|
51
|
+
BC1 -03-| |-22- A9
|
52
|
+
DA7 -04-| |-21- RESET
|
53
|
+
DA6 -05-| |-20- CLOCK
|
54
|
+
DA5 -06-| SOUND |-19- Vss (GND)
|
55
|
+
DA4 -07-| AY-3-8913 |-18- ANALOG C
|
56
|
+
DA3 -08-| |-17- ANALOG A
|
57
|
+
DA2 -09-| GI |-16- NO CONNECT
|
58
|
+
DA1 -10-| |-15- ANALOG B
|
59
|
+
DA0 -11-| |-14- TEST IN
|
60
|
+
TEST OUT -12-| |-13- Vcc
|
61
|
+
'-----------'
|
62
|
+
|
63
|
+
Content
|
64
|
+
.-----------------------------------------------.
|
65
|
+
Register | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
66
|
+
.-----------------------------+-----------------------------------------------|
|
67
|
+
| R0 | | 8-Bit Fine Tune A |
|
68
|
+
|-----| Channel A Tone Period |-----------------------------------------------|
|
69
|
+
| R1 | | ///////////////////// | 4-Bit Coarse Tune A |
|
70
|
+
|-----+-----------------------+-----------------------------------------------|
|
71
|
+
| R2 | | 8-Bit Fine Tune B |
|
72
|
+
|-----| Channel B Tone Period |-----------------------------------------------|
|
73
|
+
| R3 | | ///////////////////// | 4-Bit Coarse Tune B |
|
74
|
+
|-----+-----------------------+-----------------------------------------------|
|
75
|
+
| R4 | | 8-Bit Fine Tune C |
|
76
|
+
|-----| Channel C Tone Period |-----------------------------------------------|
|
77
|
+
| R5 | | ///////////////////// | 4-Bit Coarse Tune C |
|
78
|
+
|-----+-----------------------+-----------------------------------------------|
|
79
|
+
| R6 | Noise Period | /////////////// | 5-Bit Period Control |
|
80
|
+
|-----+-----------------------+-----------------------------------------------|
|
81
|
+
| R7 | Enable | IN OUT | Noise | Noise |
|
82
|
+
| | |-----------+-----------------+-----------------|
|
83
|
+
| | | IOB | IOA | C | B | A | C | B | A |
|
84
|
+
|-----+-----------------------+-----------------+-----+-----+-----+-----+-----|
|
85
|
+
| R10 | Channel A Amplitude | /////////////// | M | L3 | L2 | L1 | L0 |
|
86
|
+
|-----+-----------------------+-----------------+-----+-----+-----+-----+-----|
|
87
|
+
| R11 | Channel B Amplitude | /////////////// | M | L3 | L2 | L1 | L0 |
|
88
|
+
|-----+-----------------------+-----------------+-----+-----+-----+-----+-----|
|
89
|
+
| R12 | Channel C Amplitude | /////////////// | M | L3 | L2 | L1 | L0 |
|
90
|
+
|-----+-----------------------+-----------------------------------------------|
|
91
|
+
| R13 | | 8-Bit Fine Tune E |
|
92
|
+
|-----| Envelope Period |-----------------------------------------------|
|
93
|
+
| R14 | | 8-Bit Coarse Tune E |
|
94
|
+
|-----+-----------------------+-----------------------------------------------|
|
95
|
+
| R15 | Envelope Shape Cycle | ///////////////////// | CONT| ATT | ALT | HOLD|
|
96
|
+
|-----+-----------------------+-----------------------------------------------|
|
97
|
+
| R16 | I/O Port A Data Store | 8-Bit Parallel I/O on Port A |
|
98
|
+
|-----+-----------------------+-----------------------------------------------|
|
99
|
+
| R17 | I/O Port B Data Store | 8-Bit Parallel I/O on Port A |
|
100
|
+
'----------------------------------------------------------------------------*/
|
101
|
+
|
102
|
+
#ifndef _Z_hardware_PSG_General_Instrument_AY_3_891x_H_
|
103
|
+
#define _Z_hardware_PSG_General_Instrument_AY_3_891x_H_
|
104
|
+
|
105
|
+
#include <Z/types/base.h>
|
106
|
+
|
107
|
+
Z_DEFINE_STRICT_STRUCTURE (Z_BIT_FIELD(8, 8) (
|
108
|
+
zuint8 unused0 :1,
|
109
|
+
zuint8 unused1 :1,
|
110
|
+
zuint8 unused2 :1,
|
111
|
+
zuint8 m :1,
|
112
|
+
zuint8 l3 :1,
|
113
|
+
zuint8 l2 :1,
|
114
|
+
zuint8 l1 :1,
|
115
|
+
zuint8 l0 :1
|
116
|
+
)) ZAY3891xAmplitude;
|
117
|
+
|
118
|
+
Z_DEFINE_STRICT_UNION (
|
119
|
+
zuint8 registers[16];
|
120
|
+
|
121
|
+
struct {zuint8 channel_a_tone_period_fine_tune;
|
122
|
+
zuint8 channel_a_tone_period_coarse_tune;
|
123
|
+
zuint8 channel_b_tone_period_fine_tune;
|
124
|
+
zuint8 channel_b_tone_perid_coarse_tune;
|
125
|
+
zuint8 channel_c_tone_period_fine_tune;
|
126
|
+
zuint8 channel_c_tone_period_coarse_tune;
|
127
|
+
zuint8 noise_period;
|
128
|
+
|
129
|
+
struct {Z_BIT_FIELD(8, 8) (
|
130
|
+
zuint8 iob :1,
|
131
|
+
zuint8 ioa :1,
|
132
|
+
zuint8 noise_c :1,
|
133
|
+
zuint8 noise_b :1,
|
134
|
+
zuint8 noise_a :1,
|
135
|
+
zuint8 tone_c :1,
|
136
|
+
zuint8 tone_b :1,
|
137
|
+
zuint8 tone_a :1
|
138
|
+
)} enable;
|
139
|
+
|
140
|
+
ZAY3891xAmplitude channel_a_amplitude;
|
141
|
+
ZAY3891xAmplitude channel_b_amplitude;
|
142
|
+
ZAY3891xAmplitude channel_c_amplitude;
|
143
|
+
|
144
|
+
zuint8 envelope_period_fine_tune;
|
145
|
+
zuint8 envelope_period_coarse_tune;
|
146
|
+
|
147
|
+
struct {Z_BIT_FIELD(8, 8) (
|
148
|
+
zuint8 unused0 :1,
|
149
|
+
zuint8 unused1 :1,
|
150
|
+
zuint8 unused2 :1,
|
151
|
+
zuint8 unused3 :1,
|
152
|
+
zuint8 cont :1,
|
153
|
+
zuint8 att :1,
|
154
|
+
zuint8 alt :1,
|
155
|
+
zuint8 hold :1
|
156
|
+
)} envelope_shape_cycle;
|
157
|
+
|
158
|
+
zuint8 io_port_a_data_store;
|
159
|
+
zuint8 io_port_b_data_store;
|
160
|
+
} values;
|
161
|
+
) ZAY3891xState;
|
162
|
+
|
163
|
+
#define Z_AY_3_891X_CHANNEL_A_TONE_PERIOD_FINE_TUNE 0
|
164
|
+
#define Z_AY_3_891X_CHANNEL_A_TONE_PERIOD_COARSE_TUNE 1
|
165
|
+
#define Z_AY_3_891X_CHANNEL_B_TONE_PERIOD_FINE_TUNE 2
|
166
|
+
#define Z_AY_3_891X_CHANNEL_B_TONE_PERID_COARSE_TUNE 3
|
167
|
+
#define Z_AY_3_891X_CHANNEL_C_TONE_PERIOD_FINE_TUNE 4
|
168
|
+
#define Z_AY_3_891X_CHANNEL_C_TONE_PERIOD_COARSE_TUNE 5
|
169
|
+
#define Z_AY_3_891X_NOISE_PERIOD 6
|
170
|
+
#define Z_AY_3_891X_ENABLEE 7
|
171
|
+
#define Z_AY_3_891X_CHANNEL_A_AMPLITUDE 8
|
172
|
+
#define Z_AY_3_891X_CHANNEL_B_AMPLITUDE 9
|
173
|
+
#define Z_AY_3_891X_CHANNEL_C_AMPLITUDE 10
|
174
|
+
#define Z_AY_3_891X_ENVELOPE_PERIOD_FINE_TUNE 11
|
175
|
+
#define Z_AY_3_891X_ENVELOPE_PERIOD_COARSE_TUNE 12
|
176
|
+
#define Z_AY_3_891X_ENVELOPE_SHAPE_CYCLE 13
|
177
|
+
#define Z_AY_3_891X_IO_PORT_A_DATA_STORE 14
|
178
|
+
#define Z_AY_3_891X_IO_PORT_B_DATA_STORE 15
|
179
|
+
|
180
|
+
#endif /* _Z_hardware_PSG_General_Instrument_AY_3_891x_H_ */
|