6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Thu Nov 21, 2024 10:49 pm

All times are UTC




Post new topic Reply to topic  [ 146 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 10  Next
Author Message
PostPosted: Sun Oct 31, 2021 3:29 am 
Offline

Joined: Wed Jun 17, 2020 10:51 am
Posts: 60
GARTHWILSON wrote:
There is a fascination with being a survivalist and being independent of things like markets that don't sit still, which is why we've had discussions on computers one can boot without any ROM or µC at all. The EPROM programmer I've been using plugs into an ISA slot in the PC; but most modern PCs don't have ISA slots anymore. My DOS PC that had one went down recently, and although I've gotten another PC going in its place, it doesn't have the ISA slots, so the programmer is one function I have not gotten back. Someone gave me a MB with ISA which I'll try to get going; otherwise I might have to get one of these new industrial motherboards with the ISA slots, or get another programmer. If I get one with RS-232 instead of USB, I can use it with any one of many older and home-made computers.


Maybe this might work for you: http://arstech.com/install/ecom-prodshow/usb2isa.html

_________________
No simulation survives contact with reality!


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 3:31 am 
Offline

Joined: Wed Jun 17, 2020 10:51 am
Posts: 60
BillO wrote:
Didn't Ben Eater show how to build one with an Arduino?


yes he did - see https://eater.net/8bit/output

_________________
No simulation survives contact with reality!


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 3:40 pm 
Offline
User avatar

Joined: Wed Feb 13, 2013 1:38 pm
Posts: 589
Location: Michigan, USA
Dr Jefyll wrote:
drogon wrote:
Given the general lack of parallel ports on modern PCs these days then that leaves a microcontroller and so if using a µC, then I'm struggling to see why there is a need for a 6502 at all. [...] You can build up a device uing an Arduino Uno and a pair of 74x595 shift registers
I agree it's questionable whether the proposed EPROM programmer ought to be 6502-based. But I don't feel that the lack of parallel ports on modern PCs forces us into microcontroller territory.

74x595 shift registers can also be driven from an asynch ("RS232") port. Besides the 595's, what would be on the receiving end is an oscillator and four 74xx chips, as shown below (one each of 'hc4520, 'hc74, 'hc4015 and 'hc132). I like some of the other approaches that were mentioned, including the FTDI FT245, but let's have a closer look at my Dumb Asynch® approach. :)

While not my intention to detract from Jeff's very cool discrete Async' Receiver concept... I believe sending four bytes at ~86-us intervals (115,200 baud) for each single byte+address+control 'frame' may preclude the use of EEPROM and Flash ROM targets. Please correct me if I'm wrong but I don't see how you can meet the timing limits for the multi-byte command sequences on those devices.
_____________________________________________________________________________

Since we're discussing tools and barriers to participate in the hobby (necessary tools, costs, ease of construction, etc.), I'd like to suggest that the Arduino Uno and the Arduino Nano clones are a worthwhile investment. I'm necessarily frugal (financially challenged?) and a commercial programmer, while not entirely out of reach, would have used up several months of my meager $20/month hobby budget. Instead I enjoyed designing and building a FLASH/EEPROM programmer shield for an Arduino Uno. I bought five Arduino Uno clones with micro-USB connector ($3.03 each, including shipping) one month, ordered ten Flash Programmer PCBs ($18.20, including shipping) the next month, and I ordered 32-pin ZIF sockets ($1.29 each) the following month. Drawing & details below... I used a pair of latches which can be loaded with 16 address bits much faster than a pair of shift registers (while also using less pins on the Arduino board).

I believe newcomers might enjoy building simple and relatively inexpensive tools like a Flash/EEPROM Programmer shield, especially with the gratification of seeing results immediately after a couple hours of assembly. A relatively simple set of instructions could guide them through installing the Arduino IDE and a 'sketch' (program) into the Arduino board as well as guiding them through the programmer shield assembly process (some 100+ solder connections). Program Flash or EEPROM chips using a terminal program with x-modem at 115200 baud.


Attachments:
Flash Programmer #3A.png
Flash Programmer #3A.png [ 304.71 KiB | Viewed 915 times ]
Flash Programmer #3.png
Flash Programmer #3.png [ 209.2 KiB | Viewed 1341 times ]
Flash Programmer Pic.png
Flash Programmer Pic.png [ 1.88 MiB | Viewed 1341 times ]


Last edited by Michael on Tue Jan 17, 2023 2:16 pm, edited 3 times in total.
Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 5:17 pm 
Offline

Joined: Thu Mar 03, 2011 5:56 pm
Posts: 284
Back in 2013, there was an Arduino shield for programming 28Cxxx EEPROMS: viewtopic.php?f=4&t=2491 . The shield used to be available from https://www.tindie.com/products/UnaCloc ... r-arduino/, but has been out of stock since 2014.


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 7:06 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8543
Location: Southern California
Getting back to the original post's subject matter, I think anything to help the newbie in this way needs to refrain from requiring him to learn Arduino, ARM, other programming languages, etc.. It should be pretty close to plug-and-play (possibly following an easy PCB assembly) with Windows, Mac, and Linux, maybe even DOS. I don't see any problem with something that only programs a few devices, since this is to get him started, not support long-term professional development.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 7:33 pm 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 1007
Location: Canada
GARTHWILSON wrote:
Getting back to the original post's subject matter, I think anything to help the newbie in this way needs to refrain from requiring him to learn Arduino, ARM, other programming languages, etc.. It should be pretty close to plug-and-play (possibly following an easy PCB assembly) with Windows, Mac, and Linux, maybe even DOS. I don't see any problem with something that only programs a few devices, since this is to get him started, not support long-term professional development.


An Arduino solution provides all this Garth. All the newbie needs to do is download the pre-developed 'sketch' to their device and away they go. The shield concept mentioned in the previous post to yours would be an easy build with just 2 or 3 74HC575s on it and a zif socket.

Arduinos program in C/C++, so a lot of folks will already be familiar with it anyway.

_________________
Bill


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 7:40 pm 
Offline
User avatar

Joined: Wed Feb 13, 2013 1:38 pm
Posts: 589
Location: Michigan, USA
GARTHWILSON wrote:
Getting back to the original post's subject matter, I think anything to help the newbie in this way needs to refrain from requiring him to learn Arduino, ARM, other programming languages, etc.. It should be pretty close to plug-and-play (possibly following an easy PCB assembly) with Windows, Mac, and Linux, maybe even DOS. I don't see any problem with something that only programs a few devices, since this is to get him started, not support long-term professional development.

I agree. Since the Arduino program has already been written, the end user doesn't really need to learn a language. Programming the Arduino Uno or Nano would be similar to using the program that comes with your commercial EPROM programmer to program an EPROM. That is, you install then run the Arduino IDE, <file><load> the Arduino sketch, select com port and board type, and hit the <program> button. Easy peazy!


Last edited by Michael on Sat Dec 31, 2022 2:18 pm, edited 1 time in total.

Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 7:47 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8543
Location: Southern California
Michael wrote:
I agree. Since the Arduino program has already been written, the end user doesn't really need to learn a language. Programming the Arduino Uno or Nano would be similar to using the program that comes with your commercial EPROM programmer to program an EPROM. That is, you install then run the Arduino IDE, <file><load> the Arduino sketch, select com port and board type, and hit the <program> button. Easy peazy!

If you supply the boards, you can supply the pre-programmed Arduino too, right? Even that little bit of software requires a bit of learning. It's not hard, but it's just one more hurdle.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 8:04 pm 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
Granted, there are many options available for programming an EEPROM, etc. Buy or build, where build could be a kit from someone or obtain parts for a known design, or just make your own from scratch.

I think having multiple options is nice, but in the end, it's the "newbie" that will need to decide on how to proceed. I would mention that the typical TL866II Plus seems to be going for just under $60 with free shipping from many online sources.

In any case, getting started is just that... getting started. There's a list of typical parts that need to be acquired, then some set of tools and test equipment. If Bill (Plasmo) or anyone else opted to make a simple partial kit based on a 65C02, that could be a multi-function system, albeit a pre-programmed EEPROM and/or CPLD to make it all work could be part of the partial kit.

_________________
Regards, KM
https://github.com/floobydust


Top
 Profile  
Reply with quote  
PostPosted: Sun Oct 31, 2021 9:24 pm 
Offline
User avatar

Joined: Wed Feb 13, 2013 1:38 pm
Posts: 589
Location: Michigan, USA
GARTHWILSON wrote:
Michael wrote:
I agree. Since the Arduino program has already been written, the end user doesn't really need to learn a language. Programming the Arduino Uno or Nano would be similar to using the program that comes with your commercial EPROM programmer to program an EPROM. That is, you install then run the Arduino IDE, <file><load> the Arduino sketch, select com port and board type, and hit the <program> button. Easy peazy!

If you supply the boards, you can supply the pre-programmed Arduino too, right? Even that little bit of software requires a bit of learning. It's not hard, but it's just one more hurdle.

Honestly, I think learning how to install the Arduino IDE and how to load programs onto Arduino boards would be a useful skill. Besides, the same Arduino Uno or Nano could be used for several different projects, each requiring a different Arduino 'sketch'. Frequency counter, HexOut display, to name a couple. For example, here's an alternative to Ben Eater's variation of Garth Wilson's "potpourri" 65C02 system that doesn't force you to buy an EEPROM / Flash ROM programmer (below). Just for fun, I doodled the second concept drawing for a dedicated EEPROM / Flash ROM programmer that uses a 65C02 CPU instead of a pair of latches. The Arduino connects to and communicates with the 65C02 using an 11 pin "Blind Interface" method in both drawings.


Attachments:
Beater 08.png
Beater 08.png [ 468.9 KiB | Viewed 1290 times ]
Novelty 65C02 Flash Programmer.png
Novelty 65C02 Flash Programmer.png [ 400.96 KiB | Viewed 1290 times ]


Last edited by Michael on Sat Dec 31, 2022 2:19 pm, edited 1 time in total.
Top
 Profile  
Reply with quote  
PostPosted: Mon Nov 01, 2021 5:30 am 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1117
Location: Albuquerque NM USA
Lots of good discussions. My reason for focusing on a 6502 solution is because when a newbie comes to 6502.org to learn about what 6502 can do, an Arduino or Pi solution seems not satisfy the newcomer's interest. My guess is the newcomer does expect some challenges dealing with 40+ year old technology; a modern peripheral maybe acceptable but abandoning the core 6502 CPU for modern CPU may be disappointing.

I'm intrigued by the possibility of serial bootstrapping. The serial receive ready can tie to 6502's RDY so 6502 executes one instruction and wait on next instruction to be ready. While waiting for such serial bootstrap engine to be realized, a FT245R may fit the function quite nicely. Attached is my strawman design of bootstrapping using FT245R. The basic idea is locating FT245R at reset vector memory area and connect its receive data ready to 6502's RDY such that FT245R's 8-bit parallel port provides the opcode to 6502. This way PC sent 6502 opcode over USB for 6502 to execute. First, the binary opcode stream builds a small bootstrap program in RAM and then jumps into the bootstrap program to load bigger & better program over FT245R.
Bill


Attachments:
Prog65_rev0_sch.pdf [22.83 KiB]
Downloaded 66 times
Top
 Profile  
Reply with quote  
PostPosted: Mon Nov 01, 2021 11:36 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10985
Location: England
(I like the idea of being able to just load up a microcontroller with a binary, without needing an IDE, if the immediate aim is to get something done rather than to learn something about that particular microcontroller setup. It's a black box approach. I know that the Raspberry Pi Pico is trivial to use this way: you plug in the USB cable, it appears as a storage device, and you drag a uf2 file to it. I did this yesterday. It immediately reboots with the new firmware. I'm not sure about the Teensy, or Arduinos, as to whether they are easy to program without any tools, but ideally they are.)

But back to serial bootstrapping...!


Top
 Profile  
Reply with quote  
PostPosted: Mon Nov 01, 2021 12:25 pm 
Offline
User avatar

Joined: Tue Oct 25, 2016 8:56 pm
Posts: 362
plasmo wrote:
Attached is my strawman design of bootstrapping using FT245R. The basic idea is locating FT245R at reset vector memory area and connect its receive data ready to 6502's RDY such that FT245R's 8-bit parallel port provides the opcode to 6502. This way PC sent 6502 opcode over USB for 6502 to execute. First, the binary opcode stream builds a small bootstrap program in RAM and then jumps into the bootstrap program to load bigger & better program over FT245R.
Bill



I hadn't considered using the RXF# output to control RDY. That's a very cool idea, and sidesteps problems with RESET and differing speeds of the host and the 6502 device. Indeed you could run an indefinitely long program that way, so long as you make sure that the program contains jumps back to the start of the relevant address range frequently enough. I think you'd want a way to remove RXF# from controlling the RDY input once you've got enough of the bootstrap program in place that its not necessary, otherwise the device's execution speed will be limited by the speed at which you can feed it program code - even when you're no longer executing from that area.

Also, I appreciate its a rough sketch, but you'd need to use a open-drain inverter instead of the AND gate, or a resistor after the AND gate, on your RDY signal or you could damage something if the WAI instruction is executed.

---

Finally, whilst I do appreciate people's points that this microcontroller or that cheap programmer can do the job with less fuss, and you're entirely right and objectively they may be better solutions, I'm not actually that bothered about that. I just think this is a fun project and I would like to see what we can come up with that meets the original design critiera.

_________________
Want to design a PCB for your project? I strongly recommend KiCad. Its free, its multiplatform, and its easy to learn!
Also, I maintain KiCad libraries of Retro Computing and Arduino components you might find useful.


Top
 Profile  
Reply with quote  
PostPosted: Mon Nov 01, 2021 12:54 pm 
Offline

Joined: Fri Dec 21, 2018 1:05 am
Posts: 1117
Location: Albuquerque NM USA
The inspiration for RXF# to RDY comes from this link that kernelthread provided earlier.

I do want to add some jumper options so RDY can be pulled up and RXF# goes to IRQ and memory map of FT245R, RAM, EPROM are swapped around so once the EPROM is programmed, it can be the boot device with RAM at lower 32K and FT245R as the console I/O device. This way it can also be an usable 6502 computer.

Bill


Top
 Profile  
Reply with quote  
PostPosted: Mon Nov 01, 2021 1:39 pm 
Offline

Joined: Wed Jun 23, 2021 8:02 am
Posts: 166
I don't know about the FT245, but the FT240 has an option to output a 6MHz clock (or 12MHz or 24MHz) on the CBUS5 and/or CBUS6 pins. This could be used to clock the processor so you wouldn't need a separate clock oscillator. It should also help avoid issues with the processor RDY input changing at inopportune moments relative to the processor clock.
The RDY input should be held low if you try to read from the FT24x with RXF high or write to the FT24x with TXE high. When accessing RAM or I/O RDY needs to be high.
It would be good if there were some way to reset the 6502 remotely from the other end of the USB connection, but I'm not sure there is.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 146 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7 ... 10  Next

All times are UTC


Who is online

Users browsing this forum: pdragon and 37 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: