Z80 Retro #10 - FLASH Programmer Software

Поделиться
HTML-код
  • Опубликовано: 2 фев 2025

Комментарии • 36

  • @andymouse
    @andymouse 3 года назад +1

    Thats one of the all time Blinky's....cheers.

  • @xxmountaindewxx7893
    @xxmountaindewxx7893 3 года назад

    Thanks a lot, data sheets are still a little taunting to me, but the more I get them explained the easier it becomes to read them myself

    • @JohnsBasement
      @JohnsBasement  3 года назад

      It never ceases to amaze me how 'creative' some data sheets are in their manner of expressing the function of a device. Diagrams that fail to note if you are looking at something from the front or back, arrows pointing in the wrong direction, missing parameters in tables,... This project alone has already burned me twice!
      If there is a point to this rant, it is that you need to question everything you read and go back and read it multiple times!
      Fortunately, these days, you can often do some google searching for other designs that use common parts to see if you find something that does not agree with your interpretation.
      Even so, as Mark Twain once noted:
      Whenever you find yourself on the side of the majority, it is time to pause and reflect.
      So, be paranoid and verify everything by building and operating test circuits!

  • @billstoner5559
    @billstoner5559 3 года назад

    Gee, John, all that to blink an led! Just kidding! 😉😉 Great video. So much detail to keep track of, your mind is amazing. I doubt I will ever do this project, but watching you do it is so very educational for any other project from a process management perspective. Thanks!

  • @daveschings828
    @daveschings828 2 года назад

    It's winter again and I'm finally back on this project and have both the Z80 and flash programmer boards built. I compiled flash.c program with "make world" but I do not understand it. What does "world" mean? In reading about gnu Makefiles it says it supposed to call a compiler and I don't see a compiler called in the included Makefile file. Can you point me to some resources to explain this? Also, looking at your setup I don't see a monitor or keyboard connected to I'm assuming you are using ssh, if so, what ssh client are you using that has cut & paste?

    • @JohnsBasement
      @JohnsBasement  2 года назад

      I discuss the Makefile in... one of the videos in this series.
      'world' is a 'phony target' that means to 'make' clean' and then 'make'
      Rest assured, an assembler is definitely called. It is called z80asm
      I know I talk about the Makefile somewhere. If you are not skipping anything, just follow the bouncing ball. I know it is in there somewhere early on.
      I learned make some 25+ years ago from the O'reilly "managing projects with make" book. READ IT... at least the early bits. The Makefiles in the retro project are relatively simple.
      It is possible that an equivalent to the O'reilly book is on line these days.
      Until part #12 there is no terminlal per-se.
      You might mean the ssh client app I use to connect to the PI? That is command-line 'ssh'. If you are on windows you can either install WSL or use putty.
      In this video series, I copy & paste old-school style where if it is highlighted then it is copied. If I middle-button, it is pasted. VERY DANGEROUS for those not used to it... But a HUGE time and carpal-tunnel saver if you are. YMMV. (I hate, very much, the pop-up copy & paste menus that litter most apps... If i didn't want it copied, I would not have hilighted it... I also removed the training wheels from my bike. I'm a wrekless rebel!! 🤣). This all works for free in the default terminal window on Ubuntu. I have no idea if/how to do same on Windows.
      I never expected to have so much content on this project. I (or someone?) should put together a master index of it all to make it easier for us to locate references to the parts where things like this were covered. 🙄 I'm sorry about that... this remains a work in progress.

  • @jackrubin
    @jackrubin 3 года назад

    Thanks - it's really helpful to have such a thorough code review that includes your top-level design decisions as well as your bit-wise implementation. I think I heard you mumble that you cloned your full development directory to the Pi. Just want to verify that you did _not_ do all the KiCad development on the Pi, but on a grown-up desktop!

    • @JohnsBasement
      @JohnsBasement  3 года назад

      😂 Yeah. I did the KiCad work on the desktop.
      But I have verified that it to is viable on a PI. In fact, I'm quite surprised how well KiCad runs on a PI 4!

    • @billstoner5559
      @billstoner5559 3 года назад

      @@JohnsBasement , yes, the pi4 is an amazing little computer. I have a 4gig with a 256gig ssd for storage and the system boot. I’m running Ubuntu Mate instead of the pi os.

  • @javiermitchell7073
    @javiermitchell7073 2 года назад

    Hi John, I really enjoy your explanations. Not sure if this has been asked before, can you document where in the raspberry have you saved the files ( she structure) so we can follow better how to assemble the code? Maybe you already have explained that on another video? Thanks

    • @JohnsBasement
      @JohnsBasement  2 года назад

      I'm sure I mentioned it somewhere... but can not recall. If you set up a PI like I set up mine (see the Z80 Retro! playlist (in the description below this video) then the path name of what directory you are in is printed as part of the command prompt. ~ is "your home directory" So if you see ~/X/Y/Z in my video then you can know that I am in the directory with the name X/Y/Z in my login/home directory.
      Sooo... if you see a command prompt that starts with pi@raspberrypi:~/2065-Z80-programmer/... then you are looking at files that are from my github repository called 2065-Z80-programmer that I cloned into the home directory of my PI after logging in as 'pi'. Eh?
      If you don't know how to set up a PI like I set up mine, then see the PI setup video in the Z80 Retro! playlist... that happens to be here: ruclips.net/video/Mty1iGqhYuU/видео.html

    • @javiermitchell7073
      @javiermitchell7073 2 года назад +1

      @@JohnsBasement actually, this was mentioned in some of the next episodes, so don't worry

  • @microhobbyist
    @microhobbyist Год назад

    Can we use something else than a Raspberry Pi to remotely flash the board? Could a microcontroller be used? We could transfer the hex file via the USB port since most microcontrollers don't have enough memory to hold all of the binary. Just a thought.

    • @JohnsBasement
      @JohnsBasement  Год назад

      Sure. That is what that smaller header is for. Just connect up any I2C-capable micro and have at it. You'll need something like my C app to manage the port expanders to write into the flash...
      I'd argue, however, that a PI-zero is fully capable of handling it for $10. How much $$ do you hope to save?

  • @TSteffi
    @TSteffi Год назад

    Just had an idea: could we write to ram the same way? That could be extremely helpful with development and debugging

    • @JohnsBasement
      @JohnsBasement  Год назад

      Sure. You can use it to manipulate the bus and interact with all the peripherals any you want!

  • @mikekaffetzakis
    @mikekaffetzakis 2 года назад

    John it is any way to implement the AMD 29F040 Flash ROM? it is similar to 39SF040 but the address to program the chip is 555 instead of 5555 and 2AA instead of 2AAA 39SF040 have 128 sectors of 4k bytes each 29F040 have 8 sectors 64k bytes each my knowledge in C is not good to be able to alter your code
    Thanks in advance Mike

    • @JohnsBasement
      @JohnsBasement  2 года назад +1

      Grab the latest version if the flash project files from github, remove the comment on the line that says:
      #define AM29F040B
      recompile, and try that version.
      It is impossible for me to test it without an AMD chip. So let me know if this works.

    • @mikekaffetzakis
      @mikekaffetzakis 2 года назад

      @@JohnsBasement John you are the best you save me some money thanks I have this flash roms fro the old good days from the satellite receivers

    • @JohnsBasement
      @JohnsBasement  2 года назад +1

      Here is an early preview link to a video I will release at some point where I go over the code mods: ruclips.net/video/cnFW806NBUc/видео.html

    • @mikekaffetzakis
      @mikekaffetzakis 2 года назад

      You did me a present form my birthday that's tomorrow I will stay home tomorrow so I can test it and post the results I can send you one to play again thanks John

    • @JohnsBasement
      @JohnsBasement  2 года назад

      @@mikekaffetzakis 🤣. Happy Birthday!!

  • @evaldonascimento3347
    @evaldonascimento3347 3 года назад +1

    How can I make a double like? Greatest video I've ever seen. Keep this amazing series

    • @JohnsBasement
      @JohnsBasement  3 года назад

      Double thanks back at ya!
      ...if you REALLY want to do a double-thanks then you might be interested in becomming a patreon. There is a link in the description below the video. 😁

  • @Torshak0
    @Torshak0 3 года назад

    As always, great and very helpfull video.
    I have a observation regarding memory access time though. I am trying to read Z80 opcode fetch timings, and I don't think you have entire 150ns. Yes, you have 1.5 periods, but... MREQ signal does not fall together with clock falling egde but it takes it up to 55 ns. Then Z80 expects data to be stable 25 ns before rising edge of the clock. (all timings for 10Mhz version) so you are left with 70ns, and that's wihtout glue logic. Of course this is almost the absolute worst scenario. Unless I am reading it wrong... which would not be the first time ;)

    • @JohnsBasement
      @JohnsBasement  3 года назад +2

      BLAST IT ALL!!!! I was looking at a page of the datasheet that included a wait-state in the diagram! It looks like the 55 and 25 numbers are right for the 10MHZ Z80.. The FLASH that I used has a 70ns access time (and the RAM is 55).
      [BEGIN EDIT 12/14/2021]
      I just went over all the timing on this and found that the combined critical worst case timing is 42ns... which is awful. However, I also measured thae actual times and they are nowhere NEAR the worst case values in the Z80 datasheet. [All the details have been recorded and will be posted here: ruclips.net/video/lBI_llO11Kg/видео.html ]
      While I hang my head in shame... I will observe that at 10MHZ, the measured Z80 timing at 20C is 89ns.
      The worst case 8MHZ timing is 79.5ns and the 20C measured time is 126.5.
      I could /officially/ slow the main clk to 8MHZ. But unless you have hacked your Z80 Retro! board and added significant additional load capacitance then 10MHZ should be just ducky as well! ...after all, I have been running mine at 10MHZ for months without incident... even WITH the FLASH programmer connected to it (which definitely adds load capacitance!)

    • @jackrubin
      @jackrubin 3 года назад

      @@JohnsBasement Is that as simple as swapping in an 8 MHz crystal?

    • @JohnsBasement
      @JohnsBasement  3 года назад

      @@jackrubin I believe in this case the answer is yes because the problems are caused by setup and hold times from clock edges... not clock cycles.
      This evening I am going to make a detailed pass over all the datasheets and check my calculations. I suspect that the worst-case timing numbers can be relaxed because I don't have anywhere near the load-capacitance used in the test-specs on the 74HC32 and we are not running anywhere near at 85C. It is a matter of seeing if/how such things impact the worst-case timing numbers is documented in the datasheets.

  • @zeidelrifai9388
    @zeidelrifai9388 2 года назад

    Well....after this tube, I'd say "for a hobyiest his Basement is better than MIT class"