Commit Graph

170 Commits

Author SHA1 Message Date
David Banks
c6f860ed2c 6502: seperate top level for GODIL and old LX9, rename modules for consistency
Change-Id: I6d9f390a24b63a303f4a557e49ee68109af4c76a
2019-11-02 19:31:32 +00:00
David Banks
cfce5b1bd7 Z80/6809: rename clocks for consistency
Change-Id: Iecd3ac5ede39865efc58eaa9e45f5892a44acb82
2019-11-02 19:31:32 +00:00
David Banks
e0db1ccd7c Removed ice6502mon as it's never really been used
Change-Id: I0898ea3450573c5dafc143e5589aa0a3b4a1dc6c
2019-11-02 19:31:38 +00:00
David Banks
1227d174a9 Removed ice6502fast as it's never really been used
Change-Id: I7179414838f0488b12f0cc01d51b09184d835546
2019-11-02 19:31:32 +00:00
David Banks
9c4c0837e5 6809: seperate top level for GODIL and old LX9
Change-Id: I4a7d2a67c8aeaabc25d2987edb4a9026e92b1efc
2019-11-02 15:18:33 +00:00
David Banks
29438683b2 Z80: seperate top level for GODIL and old LX9
Change-Id: I1f339996037bb8a20afb7664877e0ed1d53d3868
2019-11-02 14:50:43 +00:00
David Banks
d9f53c1f09 Z80: refactor at top level to better support tristateable outputs
Change-Id: Ic4a55eb99c85ff2032079d8d12c7d7e44803b6e2
2019-11-02 13:26:00 +00:00
David Banks
d23ebe6913 Z80: push tristating up to Z80CpuMon
Change-Id: I6fd3e0a170f908d47a7cf0a7f82ab4f74ed980d9
2019-11-01 18:31:31 +00:00
David Banks
71cb5ff561 Z80: started implementing BUSRQ/BUSAK
Change-Id: I3d5ef9842ff5346a2e5df96d69e47ef94a81d8b8
2019-11-01 17:48:17 +00:00
David Banks
ceedc701ca Z80: cosmetic (remove replication of a register)
Change-Id: I9ac3bf846da6f713e12b3d336cd9a25b5b6d8c96
2019-10-30 17:41:50 +00:00
David Banks
768863fb85 Z80: show halted state when single stepping
Change-Id: Iefe132a98f6b476d9ab7252f0ce551bf0435b3cd
2019-10-30 17:31:49 +00:00
David Banks
c6bc245b3d Z80: indicate NMI and INT cycles when single stepping
Change-Id: Iafef4059bd136dd9f3aebf2b03ab5ac186e035a6
2019-10-29 15:48:43 +00:00
David Banks
4818f026b2 Removed unused h44780 support (free AVR PortA)
Change-Id: Iadde3718cfd6e8be08b680796d8c9cd01016e694
2019-10-29 14:56:16 +00:00
David Banks
b6abb6964a Z80: Update all builds to 8 comparators and 16KB code
Change-Id: I8adc986caab323de395301ba397f4c7874e50d49
2019-10-27 17:32:29 +00:00
David Banks
ab80df2406 Z80: give a tad more address delay time (Acorn 2nd Proc issue)
Change-Id: I4872f8cc25d68978e856610ca7abaf4a12520028
2019-10-27 16:27:35 +00:00
David Banks
e76bdc6da2 Z80: Stop T80 in T3 not T2 (work in progress)
Change-Id: I19fa754cc09a068b628116b9636a995c162ad964
2019-10-27 14:52:42 +00:00
David Banks
d479dedf4b Z80: fix bug when NOP mode disbled
Change-Id: I1853967582bf241a74f8fd8687deda2d5555b153
2019-10-27 10:14:35 +00:00
David Banks
2c4ad8363b Z80: corrected watch/breakpoint when wait is being used
Change-Id: Ifb464548650e82fc655524186c07f98ed188e957
2019-10-26 17:39:56 +01:00
David Banks
c39cf8649b Z80: Added mode input to control idle mode
Change-Id: I59c4696c9921ecad62be0785764fdf35ec9d82d5
2019-10-26 15:35:53 +01:00
David Banks
26f0bea110 Z80: Output NOPs when paused (inc M1)
Change-Id: I100fac021d68662497fbd2d0c7428dcaf9ef98a3
2019-10-26 15:19:44 +01:00
David Banks
ac521aad15 Z80: support interrupt masking in hardware
Change-Id: I97683cc03e9d65e496e5f9f2ee366cc0bc18087b
2019-10-25 17:14:27 +01:00
David Banks
a29aa3015a lx9_dave z80: increase code space to 32KB
Change-Id: I7ab22f8cca51184b94e709336b661b8685d02d0b
2019-10-25 17:11:13 +01:00
David Banks
89cd34c7db T80: comments only
Change-Id: Id680066f04c3ede403eea87b6c433c6c913f09a8
2019-10-25 17:07:27 +01:00
David Banks
c045ebd10c All 6809 designs now use MC6809CpuMonCore
Change-Id: I97ca73690c7e1258a5b359260d695af25c21ca54
2019-10-24 14:06:03 +01:00
David Banks
be8e23fdfb 6502/65C02: Add memory state machine that takes account of Rdy
Change-Id: I11ae008f630cb2803727204f5c383218656e6cfc
2019-10-18 10:47:50 +01:00
David Banks
b4402844ae 6502/65c02: Implement Rdy internally
Change-Id: I0ddc55cf7d4674c68760f7ad53fcea7d07629f8b
2019-10-17 15:55:49 +01:00
David Banks
9d0e74b94e 6502/65C02: Add power up reset generation (AlanD 65C02 core needs this)
Change-Id: I8e24d0f724dc353be296546815462feba8dffc4b
2019-10-17 11:25:32 +01:00
David Banks
1c44718f91 Seperate 6502 and 65c02 builds
Change-Id: I41af27c62e61a6490bda4da01da6e4f8740121fb
2019-10-16 20:40:15 +01:00
David Banks
131312e0e9 Multiboot: initial impl
Change-Id: I7efa2cf8079b4bfc1e89c5c26ecce30dfae34782
2019-10-16 15:49:58 +01:00
David Banks
ddaa266c12 z80: fix a T80 build error on Spartan 3
Change-Id: I6fca1eea44e1cc8e244d3d892ee25e0b7fea9eac
2019-10-15 16:28:55 +01:00
David Banks
f710f7a20f z80: updated T80 to version 350
Copyright (c) 2018 Sorgelig

Taken from https://github.com/EisernSchild/t80/commit/cbaa6450b

Changes I needed to make afterwards:
1. Fixup T80_Pack.vhd (missing params)
2. Replace T80a.vhd with my own version

Change-Id: I275153ffbddb0d9d5b2d8b1fdc2109468cafb256
2019-10-15 15:47:55 +01:00
David Banks
975ba22848 z80: temporarily disable IORQ_inhibit
The fixed unreliable IM2 interrupts on the Acorn Z80 Co Pro

Change-Id: Icd7e55a8a92391bd81218e9646bd243992677ce8
2019-10-15 11:48:32 +01:00
David Banks
5845409961 z80: added a resume state
This allows time for the paused instruction to be re-read

Without this, the Acorn Z80 Co Pro always seemed to be single
stepping NOP instructions.

Change-Id: I0bcb424293071efc0370b862854455a33f42faf2
2019-10-15 11:46:50 +01:00
David Banks
50658b358e z80: generate RFSH_n cycles when stopped
Change-Id: Ice9a78932bda74098cdde8d0a5571bc4bb784bb4
2019-10-14 20:26:04 +01:00
David Banks
d9d552475a z80: rework wait state / break point logic
Change-Id: I2b41c014165e8d753693d3ed7806087e85202a6e
2019-10-14 17:33:32 +01:00
David Banks
4c746994cb z80: major rewrite of memory access state machine
Change-Id: Icc5c7c991120ed155691c1e74517ac02f8ea2ada
2019-10-14 13:35:13 +01:00
David Banks
2a79bc6819 6809: Added special command to inhibit IRQ/FIRQ/NMI
Change-Id: I9b94fec5f464ecdb6bb0a4cd2a430401a182c929
2019-10-01 15:21:28 +01:00
David Banks
c660ea87be Updated lx9_dave/ice6502 for active level shifter design
Change-Id: Ib2e98050d02c9c1e3dd7c9a9b63eea118b95a540
2019-09-20 15:34:44 +01:00
David Banks
a25a008ffc Updated lx9_dave/icez80 for active level shifter design
Change-Id: I546e1afc0943443f444ae7f55783bac7e3379453
2019-09-20 15:34:34 +01:00
David Banks
9c6960cc04 ICE-6809: Added glitch filtering to E
Change-Id: Ide53c1776bc1eafc5fd746415a83a1f34f32b3a0
2019-09-17 17:36:11 +01:00
David Banks
d86d51e020 ICE-6809: Adjusted the timings slightly
Change-Id: I56ef5d22df2a329bba2853bcc7d39571492edb01
2019-09-17 16:17:36 +01:00
David Banks
b7d6ca23b3 Revert accidental change to MC6809ECpuMon
Change-Id: I7c5627b8a056bc1a784af1d8ed4cdc61862e7aa2
2019-09-17 10:31:12 +01:00
David Banks
4b88d2aedd Kicad v2: complete routing
Change-Id: Iae7b92ccb95a640158a3a9c1239e2491624e5da2
2019-09-11 18:19:02 +01:00
David Banks
efdd41a239 6502: Added special command to inhibit IRQ/NMI
Change-Id: I6ba8a1b3b92e5852382d35eee7a59b6a9d7e63e8
2019-06-15 17:50:29 +01:00
David Banks
285697d175 6502: remove 40ns skew between phi1/phi2 outputs, as this erodes address hold time time from phi1
Change-Id: Idd2b1418a18f6bb5cf2b553b6a069c42a0e64b97
2018-12-21 17:25:37 +00:00
David Banks
1dcf9fa247 Updated lx9_dave/ice6502 with correct .ucf file and a new top-level design
Change-Id: Ic67e37fb876322983a44c35e9db08b1b8371aea2
2018-11-20 17:32:02 +00:00
David Banks
c1b0902f96 6502: Change din sampling from Phi0_b to Phi0_a
Change-Id: Id1cf604cfa61dba7aae8da670a38e460a059e7bb
2018-02-15 13:06:25 +00:00
David Banks
a4aa6df31a Added new top level generics to 6502 and 6809 designs
Change-Id: I14d70471b97948c165210bebad88b60965531207
2017-08-01 09:25:12 +01:00
David Banks
f2974d12df Swapped names of sw_interrupt_n and sw_reset_n (as they were wrong way around)
Change-Id: I8819b4898be3beb36ec7f2ecb97f6797a7ab03b2
2017-08-01 08:18:20 +01:00
David Banks
6415a81a40 On LX9 board, updated Tx=51 and Rx=55
Change-Id: I5bcd032eab29ef93d36e8011fee673028042483f
2017-07-29 19:55:27 +01:00
David Banks
7453cf4f9f LX9 support: massive refactor of the build system
Change-Id: I75ff141a0d3b2c30a37d8f0e497f4f923e302b8b
2017-07-26 14:59:20 +01:00
David Banks
78adf0030b LX9 support: corrected pin assignment in Z80CpuMonLX9Jason.ucf
Change-Id: Iacf21daea16b68a3886eb68618016e76c8dc0998
2017-07-26 09:45:01 +01:00
David Banks
79d890bcb9 LX9 support: in Z80CpuMon made the switch/led polarity configurable with generics
Change-Id: I026bc8e56fe760b453edf970b33f6897a695d0d2
2017-07-25 19:18:59 +01:00
David Banks
17acd5afdd LX9 support: updated Z80CpuMon ucf file - not final yet!
Change-Id: I8dbf4f4012c3b43d8bdf07ca707d6d8b6ef8a1d1
2017-07-25 19:17:55 +01:00
David Banks
0da1fa06bb LX9 support: work in progress
Change-Id: I76249db20f992f92c5fc0454f698c40e578b5e54
2017-07-25 17:34:19 +01:00
David Banks
f64641f99c Added build scripts for xc3s500e
Change-Id: Icc7990c3ee257d1511fa478fd0d2b3575362eb29
2016-10-24 14:24:18 +01:00
David Banks
6291faa4bd Updated to 0249 of the Z80 core by TobiFlex to fix issues with Spectrum Keyboard
Change-Id: I2d92c541cdb7feaad84bd3d37ec125594b6b47a8
2016-08-22 14:46:41 +01:00
David Banks
de6f722978 Adjusted Din sampling point ~40ns later so it co-incides with Phi2
Change-Id: Ibdd44b83a139b6560efc886e95714ee91daef3dc
2016-08-01 16:34:47 +01:00
David Banks
5410c32db3 Eliminated some warnings - changes mostly cosmetic
Change-Id: Ic7a7a107f9343bac2b49512d92ee2ad8f13c8bb2
2015-11-29 12:22:13 +00:00
David Banks
de16b3af1a Eliminated some warnings - changes mostly cosmetic
Change-Id: I141b05c932d0736e689ff3a2cb2c90c24c850933
2015-11-29 12:06:42 +00:00
David Banks
dd2ea9182b Fixed an incorrect module name
Change-Id: I952135d7be04e332ca4cc5de7f6491bc0fedf5ec
2015-11-28 17:32:08 +00:00
David Banks
e63266f720 Made AVR XPM and XDM more generic
Change-Id: I0025d56d4ba7fa3e20d73f09ac51068ffd1859c5
2015-11-28 17:22:23 +00:00
David Banks
cc6c062b4b Updated XDM2Kx8 to a more portable implementation
Change-Id: I37cbe56b7b0113e24855eb1c0fcf7bbe006eefd3
2015-11-28 11:19:27 +00:00
David Banks
a785d7e73f Refactored AtomFast6502 to use new MOS6502CpuMonCore - works in new Atom at 4MHz and with tube
Change-Id: I73c769919e2634a4656a6edec2c5a1100bd70083
2015-11-15 11:50:06 +00:00
David Banks
55c8889881 Updated reset output to avoid the use of a tristate signal in BusMonCore
Change-Id: I3f49317689eb5808a5edb5fe5b10552d01a3db59
2015-11-15 11:37:50 +00:00
David Banks
dc6165f826 Cosmetic tweaks to avoid warnings to Quartus
Change-Id: I9f044a50d599dfcd3d3b7bd46f6e99e1ef3e92b6
2015-11-14 13:36:15 +00:00
David Banks
568fd2906d Fixed AlanD core 65C02 bugs: D was being set in IRQ/BRK; sync was inferring a latch
Change-Id: Ia7163e996c403a1caae04df10de3d7a42a91b45c
2015-11-11 13:07:19 +00:00
David Banks
6aeb0c7b8a Refactor: 2nd stage - bug fixes
Change-Id: Ic3bd520d0cc8b74f33068c53085229506d6968b2
2015-10-31 18:31:41 +00:00
David Banks
99c5f951d1 Refactor: 2nd stage
Change-Id: I6959bbc88082cc46930f907378d42adf1abf180e
2015-10-31 14:29:14 +00:00
David Banks
b563a030ee Refactor: 1st stage
Change-Id: I8889ff76ce802099fae67c147e110356adbd23ac
2015-10-31 13:45:09 +00:00
David Banks
8a857ae45e Experimental AtomFast6502 adding bus mon function
Change-Id: Ib5115d9e7b736c45bb46a0a063325a0173b6f823
2015-10-31 11:46:40 +00:00
David Banks
eaf6f90ab6 ICE T65: Fixed the single stepping issue with AlanD's core (sync bug); increased CCLK rate to 25MHz
Change-Id: I226a63a10b80973001f4b0ee825dcecadaece8cb
2015-10-27 19:34:02 +00:00
David Banks
3c31e9e875 ICT T65: Fixed an issue the caused an immediate NMI on a Beeb Model B
Change-Id: I5f0e00fc5e4f647c81778821282316e812215cb8
2015-10-27 18:03:45 +00:00
David Banks
344e03185d Reworked the 6502 single stepping to hide the fact that register writes are pipelined
Change-Id: I6d9157e3d9ade9af72e11d255b224cc7f210f376
2015-10-26 16:44:25 +00:00
David Banks
9c4b9aa944 In ICE-T65 fixed the timing of ICE initiated read/write cycles to give them a whole cycle
Change-Id: I6bfdf624ad4340a219096f231334ec8a9bbfc5af
2015-10-26 12:54:17 +00:00
David Banks
92177196c0 Experimental AtomFast6502 with a different clocking arrangement
Change-Id: Ic6f5275bc0982254e9b5508ec79f0365712657de
2015-09-23 14:56:31 +01:00
David Banks
d3224a651d Fixed a bug with the I Flag being 0 rather than 1 following reset
Change-Id: Ifc1573026e93944d33a756bd601200441ba20c1d
2015-08-29 20:57:49 +01:00
David Banks
d44d3a889e Updated 6809 clocking scheme; tested on Dragon 32 and Simple 6809; fixed 6809 reset command bug; version now 0.64
Change-Id: Id772f50d3676b057ed31c001b211fdf92a9f49f8
2015-08-08 13:49:13 +01:00
David Banks
aeed6c1a65 Further improvements to the clocking of the 6809 for Roland to try
Change-Id: Ida0384c65ca405f50652a3c26665d1c5adac0748
2015-07-19 18:04:22 +01:00
David Banks
66b65f1bd6 Changed 6809 timing to provide bags of write address setup and hold time, version now 0.62
Change-Id: I1da33ddd81253f123e231e3cfad7e086bd3de08d
2015-07-16 18:16:07 +01:00
David Banks
d6c9287067 Changed to 18K ROM/2K RAM, version now 0.60, bitfiles published for all three designs
Change-Id: I2dd2b203e68d3ddde7d8bbb9052d4d46b802fbbb
2015-07-06 18:49:57 +01:00
David Banks
2677a945aa Corrected the function of EXTAL and XTAL; version now 0.53
Change-Id: Ib9c329b06827a83c8d9d307db12f16a91e2cb977
2015-07-04 17:50:03 +01:00
David Banks
3afc09c07d Added a jumper to select between 6809 and 6809E clocking; increased breakpoints to 8; version now 0.52
Change-Id: If17d2d0ff336fde2aafd9613eba47bbe7392ad8c
2015-07-04 16:51:08 +01:00
David Banks
34dacfb72e Reworked the 6809 single stepping to hide the fact that register writes are pipelined
Change-Id: I60d51d4584c44e36db37fb3953af818d83cf7958
2015-07-04 14:51:40 +01:00
David Banks
17d02c19fa Increased Z80 drive to 4mA, as 2mA is barely sufficient to counter the 1K5 GODIL pullups
Change-Id: I09e512bb7415c6b69e97df7bae870647adcd12d4
2015-07-04 14:49:59 +01:00
David Banks
20269623ea Initial checkin of ICE-6809; version now 0.49
Change-Id: I502840a0be0fa58adfc9ddb27c4e2a35a7c2849c
2015-07-02 15:35:05 +01:00
David Banks
727a1c0f2a Implemented IO watches/breakpoints; fixed a bug with stepping through CB/DD/ED/FD prefixed opcodes which have 2 M1 cycles; version not 0.47
Change-Id: Iad5cb406bd96a8020ccb65be5cd440bebec20481
2015-06-30 14:19:19 +01:00
David Banks
caec07483d Fixed a problem with breakpoints running on one instruction on the Z80, version now 0.46
Change-Id: I597087a8ed7d4da211c706e0c4972f5d037706ee
2015-06-29 17:16:23 +01:00
David Banks
8a2615d6b3 Added additional IO outputs to 6502 designs
Change-Id: I6253c507e766f8af13e52556818f725fda198cb4
2015-06-29 14:47:31 +01:00
David Banks
6d0ec41db0 Added commands to read/write/dump Z80 IO space; version now 0.45
Change-Id: I85e99f8c19bd285f2dd69ea46b0e662499a5d9e2
2015-06-29 14:43:20 +01:00
David Banks
e66ecdfc3e Made sure CycleCount stopped when Z80 is paused
Change-Id: Ia5d4a7d216a089e06e1aaa86bcd43d512a429aaa
2015-06-28 22:17:32 +01:00
David Banks
0c0fde6a32 Working Z80 memory access and disassembler in the small GODIL, incremented version to 0.44
Change-Id: I718be7476ec330743c206e737389856fc4b41fc8
2015-06-28 19:42:25 +01:00
David Banks
e4e0f864df Switched to Timing-Driven Packing, fixed a bug with instr wait states that meant single stepping executed RST 38 because FF was read off databus; increased comparators to 8; incremented version to 0.43. Works with 100pF capgit add -u!
Change-Id: Ie6c8c8fc610599516eb1baf957d001079713e462
2015-06-27 18:40:12 +01:00
David Banks
9a68d96233 Initial checking of Z80 work; slight refactor of BusMonCore; version updated to 0.41
Change-Id: I95f574abb93e84ffb5ca44c45b4c9aa8304e2e58
2015-06-27 11:07:58 +01:00
David Banks
eec6e10440 Added option to do repeat a read/write command n times (where n can be large), incremented version to 0.37
Change-Id: I4b1b02e8d67a581acbf4d5b044e86ffb2bc7e27e
2015-06-22 18:11:11 +01:00
David Banks
3c7fb3429e Updated AtomBusMon pinout to match 6502, would allow piggy-backing in principle
Change-Id: Ib2c8b2c3fd55f7fbba9b7aecc3d2289ff3114305
2015-06-20 22:36:10 +01:00
David Banks
14e4adda94 Implemented cycle counter and data bus monitoring during read/write watches/breakpoints, incremented version to 0.32
Change-Id: I408f57e66800ea58a56896ec4af5d815d1f12c34
2015-06-20 12:30:18 +01:00
David Banks
993f04e395 Added mask to breakpoint/watches; improved disassembly of breakpoints; incremented version to 0.31
Change-Id: If2a68ba1597d8be5479302f15110602614cc25e1
2015-06-19 16:10:07 +01:00
David Banks
73fc5a7eb1 Fixed write breakpoints to stop immediately; switched back to T65 core
Change-Id: I33bc0f7b0dd6caf89572fa4f494c3cc93c673107
2015-06-19 15:37:01 +01:00
David Banks
8a81b56304 Updated to use 65C02 core
Change-Id: Ieb458e48d3dc42cee08a9f03237271f101d105b7
2015-06-19 12:08:38 +01:00