Setup DSLogic Plus DSView v1.01 for Z80 ======================================= 1) Top menu: File | Settings | Default 2) Top menu: Options button. Set the following options: Operation Mode: Buffer Mode Stop Options: Upload Captured Data Threshold Level: 1.0V Filter Targets: None Max Height: 1X Next 3 items not checked Channels: Use Channels 0~15 (Max 100MHz) 3) Top menu: Decode | Protocol | Drop-down | Z80 (at the bottom) 4) Right-side top area: Protocol | + 5) Observe values in the list. Defaults are: D0 to D7 /M1 /RD /WR /MREQ /IORQ A0 to A15 You have 16 channels numbered 0 to 15. Close this menu for now. 6) On the far left side, choose the grey block beside channel "0". Choose colour from the left bank of choices, e.g. light yellow. (We'll do this for the first 8 items.) 7) On the far left side, choose "0" beside the grey block you recoloured earlier, and type "D0". Continue with the next block in position 1: make it the same colour and label it "D1". 8) Continue until D0 through D7 are done. 9) On the right side, click again on the "+" under Protocol. Now you can click on D0 and select D0 from the list you have started to create. 10) Repeat for the first bunch until D7 matches D7. You have finished the first 8 assignments. 11) Notice how /M1 is the next one available. You cannot assign it to M1 until it's entered on the left-side of the app. 12) On the left side of the app, add the following after D7: M1 RD WR MR IR The shorter the name, the better. You have used 8 channels for data lines and 5 so far for control. Of the 16 channels, you have 3 left that you can add here. 13) I recommend you add INT next for Z80 interrupts. 14) To trace the Arduino ATtiny85 physical pins 5 and 6, I'll add AR5 and AR6. I'm troubleshooting an Interrupt issue from the CTC through the backplane bus to the Z80. When the CPU receives the interrupt, its interrupt service routine at $4038 will send a signal to /TONE1 which will cause the Arduino ATtiny85 to play a tune through a piezo speaker. 15) Once you have added these last 8 channels, you can return to "+" under Protocol and add them there, too. 16) Don't forget to colour the remaining channels appropriately, maybe blue for control lines, red for INT, and greens for the two data lines AR5 and AR6. 17) Once you've added the yellow data bus channels and the blue control channels, you'll notice the next entries in the Protocol list will be the address bus lines, A0, A1, etc. Think of the names on the left side of the list as simply placeholders. We'll use INT for A0, AR5 for A1, and AR6 for A2. What you enter is what will be used, not the placeholders. 18) Once you've taken care of the left-side channels list and the right-side protocol list, you should see a few fields populate on the right side under Protocol List Viewer. They are: Z80 Operands, Instructions, Data bus, and Address bus. There is a "search" line above these headers if you need to find something specific in the code. 19) We're almost ready to start. The issue I am having that required I pullout the LA (logic analyzer) is in determining if the Interrupt Service Routine runs on the Z80 when the CTC triggers /INT low to the Z80. On the left side channel controls, click the negative-going symbol on the INT line that resembles a Z of sorts. This indicates we'll trigger on /INT going low. You can see there are several trigger choices including positive-going, high level, low-going, low level, and edge trigger. 20) At the top left of your screen beside the crossed tools Option icon, you should see a drop-down list for Duration (it's not labeled Duration): choose 2.00ms. The longer the timer interval, the longer you'll have to wait for the right side and top data area to complete their decodes. Let's start with 2ms while we're learning the product; we can increase the duration later (500ms @ 20MHz for 16 channels) and save it as our preferred configuration for this kind of platform. 21) Beside Options and the Duration dropdown is another dropdown, but this one is for the Sample speed. According to the manual, it MUST be set for 4x to 10x the signal speed. Initially I chose some value like 1MHz, the default I think, and it did not decode properly. I'll choose 20MHz for my 4MHz system. 22) Setup your Z80 to run. For me, I'll load my test file CTC_4ch_1int__13.bin into location $4000 but I won't run it just yet. 23) At the top of your DSLogic Plus screen, click the Start button. You will notice a medium-sized graphic in the screen center that indicates it's waiting for the trigger. Now you can run the Z80 program. 24) You specified 2ms so you should have got 2ms worth of "trace" when the graphic briefly turns green in colour to indicate it was successful in buffering the data. 25) In the upper right corner you'll see see a new item under Protocol. It will show "100%" in green indicating it has finished decoding the buffered "trace" completely. If you choose a very high time duration value, you may have to wait a while for the decodes to complete. 26) If all went well then you'll see the operand hex values in green below the top menu and above the channels. Just below them will be the decoded operands in purple. 27) If you can't really see what I described, it's because we'll need to zoom in on the display. The app should already have moved to the trigger, the /INT channel going low. At the very bottom of the screen, move the slider ever so slightly to the right so that the trigger marker moves to the left. You could also use left-mouse click and drag to do the same. 28) With your mouse clicked on the display near the trigger, use the mouse wheel to slowly expand the time frame so you can start to see the operand hex and the decoded data. 29) This would be a good time to save your configuration: File | Settings | Store and give it an appropriate name. For me, it will be Z80_CTC-INT_Trigger which will be stored with a .dsc extension. Now you know what to load up if you lose or change your configuration. 30) My issue was that /INT was firing but the interrupt service routine I placed at $4038 in my code was not running. When I examined the decodes immediately after the trigger, I expected to see the CTC put the full address on the bus which would also include CTC port binary number 3 as part of the address; it did not happen. This was a good troubleshooting starting point. Have fun!