Tooling UP, Workbench and Recommendations

Building your first 6502-based project? We'll help you get started here.
User avatar
Dr Jefyll
Posts: 3525
Joined: 11 Dec 2009
Location: Ontario, Canada
Contact:

Re: Tooling UP, Workbench and Recommendations

Post by Dr Jefyll »

wayfarer wrote:
I have tried several times to 'un-upside down it'... something something jpeg internal descriptor and I dont have IrfanView on here to change it atm.
Orientation is one of the aspects of the EXIF info that's stored along with the image itself. It's on my list to learn more. Meanwhile, I do know enough to "brute force" the problem. (ie, rotate the actual image data, rather than tweaking the specification for how software ought to render the image on screen). :roll:

ETA: Ooo! -- just discovered this FOS tool! 8)

-- Jeff
Attachments
radio_shack_sm51123.jpg
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html
User avatar
wayfarer
Posts: 191
Joined: 19 Mar 2023
Location: about an hour outside of Springfield

Re: Tooling UP, Workbench and Recommendations

Post by wayfarer »

Dr Jefyll wrote:
wayfarer wrote:
I have tried several times to 'un-upside down it'... something something jpeg internal descriptor and I dont have IrfanView on here to change it atm.
Orientation is one of the aspects of the EXIF info that's stored along with the image itself. It's on my list to learn more. Meanwhile, I do know enough to "brute force" the problem. (ie, rotate the actual image data, rather than tweaking the specification for how software ought to render the image on screen). :roll:

ETA: Ooo! -- just discovered this FOS tool! 8)

-- Jeff
yeah thx, I tried doing that twice in different software, it would appear okay on my computer, and upload upside down.
you have photo evidence, they DO still exist!
User avatar
BigDumbDinosaur
Posts: 9425
Joined: 28 May 2009
Location: Midwestern USA (JB Pritzker’s dystopia)
Contact:

Re: Tooling UP, Workbench and Recommendations

Post by BigDumbDinosaur »

What’s truly astonishing is that Radio Shack actually has a brick-and-mortar store somewhere. They vanished long ago in our area.
x86?  We ain't got no x86.  We don't NEED no stinking x86!
User avatar
GARTHWILSON
Forum Moderator
Posts: 8773
Joined: 30 Aug 2002
Location: Southern California
Contact:

Re: Tooling UP, Workbench and Recommendations

Post by GARTHWILSON »

Last I checked (months ago), Radio Shack was still in business, but I thought it was online only, with virtually no stores left.  This surprised me just now though:  https://www.radioshack.com/pages/store-locator
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?
User avatar
wayfarer
Posts: 191
Joined: 19 Mar 2023
Location: about an hour outside of Springfield

Re: Tooling UP, Workbench and Recommendations

Post by wayfarer »

so I have a 6502, and i have no ROM!
no way to flash one, and no way to use an mcu and a ROMulator!!

Hark!, my new WDC 65c02 is not useless. upon my breadboard, I can use a dip switch wired to an address to send commands.
Blinkenlichten-a-go-go!

so, I have a 555, and some passives, Ill make a very low speed, ~10hz or Single Stepper, and use my dips, and see about doing a tiny bit if 'turn on, wait, turn off, wait' and see what we can do. Ill have to look around in my 4000 and 7400 stuff and see if i can find a latch. I have plenty of RAM., so lets see what 6502 can do. get it tested for working at least, until I get an mcu ROMulator.
User avatar
GARTHWILSON
Forum Moderator
Posts: 8773
Joined: 30 Aug 2002
Location: Southern California
Contact:

Re: Tooling UP, Workbench and Recommendations

Post by GARTHWILSON »

wayfarer wrote:
so I have a 6502, and i have no ROM!
no way to flash one, and no way to use an mcu and a ROMulator!!
The one I linked to on page 1 of this topic has been discontinued, and the replacement is:
https://www.jameco.com/z/TL866-3G-T48-J ... 04999.html
And again, you only flash flash memory.  EPROMs and EEPROMs are programmed, not flashed, since they're not flash memory.  Well, actually, flash memory is a special type of EEPROM that lets you erase or program entire sectors or pages or blocks at a time, dramatically reducing the erase or programming time; but the way it is usually addressed does not make it suitable to put directly on the 65xx bus.

As I mentioned earlier, my first programmer was completely manual, and was for EPROMs.  I don't remember if EEPROMs were available to us mere hobbyists yet; but if they were, they were probably more expensive and had less memory.  Compared to EPROM, a nice thing about EEPROM, especially if you make a manual programmer, is that programming mistakes don't require you to erase the whole thing and start over; you can back up and erase and re-do just the one byte.

Quote:
Hark!, my new WDC 65c02 is not useless. upon my breadboard, I can use a dip switch wired to an address to send commands.
Note that most DIP switches are only rated for something like a hundred cycles.  You'll want to look into the spec.s of whatever switches you use before you commit to them for something that will experience many thousands or tens of thousands of cycles.
Quote:
so, I have a 555, and some passives, Ill make a very low speed, ~10hz or Single Stepper, and use my dips, and see about doing a tiny bit if 'turn on, wait, turn off, wait' and see what we can do.
The 555's output slew rate is much too slow to meet the W65C02S's specified clock-input timing.  You might get lucky and it'll work; but it's not guaranteed to.  I recommend revisiting the clock-generation page of the 6502 primer.  Hmmm... I really ought to add the simple Figure 6 circuit of Fairchild's AN-118 linked there.  It's about as simple as you can get, with just a Schmitt-trigger inverter like the 74HC14 and a resistor and capacitor.  I've used it for various things.  Schmitt-trigger-input gates, especially inverters, can do so many things, and there's hardly any reason to use a 555.
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?
User avatar
BigDumbDinosaur
Posts: 9425
Joined: 28 May 2009
Location: Midwestern USA (JB Pritzker’s dystopia)
Contact:

Re: Tooling UP, Workbench and Recommendations

Post by BigDumbDinosaur »

GARTHWILSON wrote:
The 555's output slew rate is much too slow to meet the W65C02S's specified clock-input timing.
Specifically, the slew rate should not exceed 5ns and the high-phase clock amplitude should rise to at least VCC × 0.8.  While a 555 timer may be able to satisfy the VCC × 0.8 requirement, it will not come close to the required slew rate.
Quote:
Hmmm... I really ought to add the simple Figure 6 circuit of Fairchild's AN-118 linked there.  It's about as simple as you can get, with just a Schmitt-trigger inverter like the 74HC14 and a resistor and capacitor.
I’ve monkeyed with such circuits in the past, and they work well if you don’t have a critical frequency requirement—minor changes in VCC can affect prop time and hence the frequency.  74HC logic is not actually capable of achieving the 5ns slew rate, but is usually close enough for hobby purposes.

A can oscillator remains your best bet for reliable clock generation.
x86?  We ain't got no x86.  We don't NEED no stinking x86!
plasmo
Posts: 1273
Joined: 21 Dec 2018
Location: Albuquerque NM USA

Re: Tooling UP, Workbench and Recommendations

Post by plasmo »

You have w65c02, RAM, and some basic TTL logic, you can build this programmer based on 6502:
https://www.retrobrewcomputers.org/doku ... og65r2home

There was a rather long discussion about it on 6502.org here:
viewtopic.php?f=4&t=6841&hilit=Prog65#p88087
User avatar
wayfarer
Posts: 191
Joined: 19 Mar 2023
Location: about an hour outside of Springfield

Re: Tooling UP, Workbench and Recommendations

Post by wayfarer »

GARTHWILSON wrote:
wayfarer wrote:
so I have a 6502, and i have no ROM!
no way to flash one, and no way to use an mcu and a ROMulator!!
The one I linked to on page 1 of this topic has been discontinued, and the replacement is:
https://www.jameco.com/z/TL866-3G-T48-J ... 04999.html
And again, you only flash flash memory.  EPROMs and EEPROMs are programmed, not flashed, since they're not flash memory.  Well, actually, flash memory is a special type of EEPROM that lets you erase or program entire sectors or pages or blocks at a time, dramatically reducing the erase or programming time; but the way it is usually addressed does not make it suitable to put directly on the 65xx bus.
thanks for the updated link, yeah, at $65+, thats in the "major purchase when I really need it" category, I dont really want to flash a bunch of ROMs. yes, "program" is the more correct term, and "flash" is just generic; before flash itself, I still heard it called that, from the UV flash (or whatever replaces that on the new stuff, NV RAM, flash Memory, EEPROMs, and all the other weird battery backed stuff out there :shock: ). Eventually, I will get or build a 'ROM Programmer' or adapters for my bench computer to run it. I think that's where we got the term Flash, the UV bulb on the eraser before its reprogrammed.
Quote:
As I mentioned earlier, my first programmer was completely manual, and was for EPROMs.  I don't remember if EEPROMs were available to us mere hobbyists yet; but if they were, they were probably more expensive and had less memory.  Compared to EPROM, a nice thing about EEPROM, especially if you make a manual programmer, is that programming mistakes don't require you to erase the whole thing and start over; you can back up and erase and re-do just the one byte.
Yeah I have an EPROM. and I might use it anyway, byte by byte, address by address, using my dip switches, it I have to. Its an EPROM, a few hundred instructions can go a long way, and possibly get a read from an octal latch, and sending codes to a 16x2 lcd. move buttons, enter command. so, even if I mess up, I can use my dip switches, and just change the upper byte for now, I think its 8k that was like $5 at Jameco, so thats a lot of bits, a lot of 'pages' of vectors I can easily set my RES or PWR vector to to look at.
I need to work on the ASM for
basic read, write addresses,
CRUD for bytes in ram,
turning on an off a variable,
counting
getting a button press
moving a cursor in ram,
controlling the 1602
putting characters,
storing to EPROM.
If I can do that, I can program it in system. I have 32k of RAM, actually I have 64k of Zilog 2k 6116-3s, so making a RAM tester, that writes all 0000s and all 1111s to a ram space, and counts up to the top of its range and sees if its holding values, is probably a good start. stuff like this needs to be done. So I figure, on my EPROM, I''ll try to think of it as a "BIOS" and try not to Program it more than 3-4 times if I can help it, though I can, append, my ROM until Im out of space. My 16x2 lcd I think uses an RAio chip that addresses 64k of ram, making it ideal for a 6502 workbench device, as it can share the mmio space completely and allow viewing of all native address locations.
Quote:
Note that most DIP switches are only rated for something like a hundred cycles.  You'll want to look into the spec.s of whatever switches you use before you commit to them for something that will experience many thousands or tens of thousands of cycles.
noted, hopefully, I only need them long enough to program my EPROM and control a few board settings.
Quote:
Quote:
so, I have a 555, and some passives, Ill make a very low speed, ~10hz or Single Stepper, and use my dips, and see about doing a tiny bit if 'turn on, wait, turn off, wait' and see what we can do.
The 555's output slew rate is much too slow to meet the W65C02S's specified clock-input timing.  You might get lucky and it'll work; but it's not guaranteed to.  I recommend revisiting the clock-generation page of the 6502 primer.  Hmmm... I really ought to add the simple Figure 6 circuit of Fairchild's AN-118 linked there.  It's about as simple as you can get, with just a Schmitt-trigger inverter like the 74HC14 and a resistor and capacitor.  I've used it for various things.  Schmitt-trigger-input gates, especially inverters, can do so many things, and there's hardly any reason to use a 555.
Actually, setting up a power supply and the RC clock with single step (or instruction) per your notes or something similar is one of my next projects, I have a breadboard power supply, and given the internals of a 555, you would think it would be 'more stable than' an RC network, now Im curious, because a 555 is so well understood, and from my understanding, predictable, that combining a 555 with a debounce type circuit youve show, or something similar, would be worth exploring.
Ill probably look into that RC controllable clock you have, those are Schmitt trigger diodes? the black triangle on the 50k resistor, that the wiper pin on a potentiometer? I have one handy actually. Though it might be a log pot. Combining a single step (and yes Id like to have full board control here through this), with a variable speed clock, is probably a good start
.
BigDumbDinosaur wrote:
GARTHWILSON wrote:
The 555's output slew rate is much too slow to meet the W65C02S's specified clock-input timing.
Specifically, the slew rate should not exceed 5ns and the high-phase clock amplitude should rise to at least VCC × 0.8. While a 555 timer may be able to satisfy the VCC × 0.8 requirement, it will not come close to the required slew rate.
Quote:
Hmmm... I really ought to add the simple Figure 6 circuit of Fairchild's AN-118 linked there. It's about as simple as you can get, with just a Schmitt-trigger inverter like the 74HC14 and a resistor and capacitor.
I’ve monkeyed with such circuits in the past, and they work well if you don’t have a critical frequency requirement—minor changes in VCC can affect prop time and hence the frequency. 74HC logic is not actually capable of achieving the 5ns slew rate, but is usually close enough for hobby purposes.
A can oscillator remains your best bet for reliable clock generation.
yeah. as I said, Idve tought a 555 would be 'better' than an RC setup. https://e2e.ti.com/support/clock-timing ... apacitance has the slew rate at 223ns, a lot greater than 5ns. So, I might out of interest and reproducibility, see if using a 555 for the clock, and going through a high speed trigger, helps here, or if its redundant.
plasmo wrote:
You have w65c02, RAM, and some basic TTL logic, you can build this programmer based on 6502:
https://www.retrobrewcomputers.org/doku ... og65r2home
There was a rather long discussion about it on 6502.org here:
viewtopic.php?f=4&t=6841&hilit=Prog65#p88087
When I order my next round of chips, this, or again, an mcu ROMulator board, will be used for this. I have a Keyestudio nano 340 board, it just has weird pins and im not sure how compatible it will be. I have several questions about how you have things set up here. I got one board, and its arduino, so doesnt fit my BB, won be buying anything arduino again. Ill just make my own components. So, yes, very much 'something similar', or maybe a RAM Tester.
User avatar
GARTHWILSON
Forum Moderator
Posts: 8773
Joined: 30 Aug 2002
Location: Southern California
Contact:

Re: Tooling UP, Workbench and Recommendations

Post by GARTHWILSON »

wayfarer wrote:
yes, "program" is the more correct term, and "flash" is just generic; before flash itself, I still heard it called that, from the UV flash
I don't think I'd call 10-20 minutes in the UV eraser a "flash."  If you had a really strong one, you might get full erasure in 4-5 minutes, but the ones I've used sure couldn't erase one that fast, let alone in a small fraction of a second which is what I would call a flash.  EEPROMs generally take a few ms (not µs, let alone ns) to do a program or erase; so they're not suitable to use as RAM.  To program or erase a large section would take a long, long time; so to cut the time way down and do it "in a flash" so to speak, they came up with flash memory which was made to do large sections in the same few ms, erasing or programming many bytes (possibly even kilobytes) at the same time, to save time.  Internally, it happens in parallel, not sequentially.  They normally have SRAM buffers built in that allow you to load in for example 1024 bytes at once, and while that one is busy in the program cycle, you can be loading another parallel buffer, then switch places, and so on.  I'm sure there are other variations besides the ones I've worked with; but that's the general idea.
Quote:
Yeah I have an EPROM. and I might use it anyway, byte by byte, address by address, using my dip switches, it I have to. Its an EPROM, a few hundred instructions can go a long way, and possibly get a read from an octal latch, and sending codes to a 16x2 lcd. move buttons, enter command. so, even if I mess up, I can use my dip switches, and just change the upper byte for now, I think its 8k that was like $5 at Jameco, so thats a lot of bits, a lot of 'pages' of vectors I can easily set my RES or PWR vector to to look at.
I don't know if you have an eraser yet.  Putting an EPROM out in the sun takes about a week to erase it; so obviously you can't be cycling them through unless you have an awful lot of them.  Just a bootstrap loader wouldn't need to take much memory, just a page or two; so hopefully, being very careful, you could get through it with a manual programmer.  The erased state for any bit is '1', and the programmed state is '0'.  You can re-program any previously programmed byte without erasing so long as you don't have to change any 0's to 1's.  To start over without having to erase every time, whether to fix an error or to do a new version, you could start with pages that are near the top (near $1FFF of a 8Kx8 EPROM) where all the high address bits are 1's, then go to lower pages, so that when you modify the vectors for the newer efforts you can be changing 1 bits to 0 bits.  You could get a lot of efforts that way without having to erase.

Then there's the term "burn," or "blow," which came from early PROMs which actually used arrays of tiny fuses, and you'd actually blow the fuses that didn't make the desired connections, to end up with your program.  Since the fuse-blowing was irreversible, obviously these were not erasable.  We don't "burn" PROMs anymore.

We also have a topic on dead-start-panel computers which you can boot with no ROM at all, at viewtopic.php?p=42926#p42926 .  [Edit: There's another one at viewtopic.php?f=4&t=4341 .]  There's a certain allure to being able to get off the ground with nothing programmed at all.  One thing discussed there is loading in a bootloader with a home-made bar-code wand that only uses 74-series logic, and bar code written by hand on quadrille paper.  Without reviewing, I think there's something about diode arrays there too.  A diode-array ROM would be a lot of work, but small diodes get pretty cheap if you buy them a thousand at a time.

Quote:
and given the internals of a 555, you would think it would be 'more stable than' an RC network, now Im curious,
Using a CMOS 74xx14 inverter with Schmitt-trigger input is no less stable and no less dependable; the only slight disadvantage is that the hysteresis points are not as well controlled, so if you want accuracy, you'll want a trimmer resistor in there.  It still won't be crystal-accurate of course, no matter what you do, as even if you trim it perfectly, it could drift slightly with things like temperature and power-supply voltage variations.  If you want to use a 555, just follow it with a Schmitt-trigger gate to speed up the rise and fall edges.  Myself, I never saw any reason to use a 555 after I used one in school in about 1980.
Quote:
Ill probably look into that RC controllable clock you have, those are Schmitt trigger diodes?
If you're referring to download/file.php?id=8853&mode=view, I think you're talking about the Schmitt-trigger inverters, the 74AC14.  Diodes are never Schmitt-trigger, but there are Schottky diodes, which begin conducting at a much lower voltage than standard silicon diodes.  The schematic symbol for a Schottky diode has a little hook at each end of the line corresponding to the cathode.
Quote:
the black triangle on the 50k resistor, that the wiper pin on a potentiometer?
Yes.
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?
User avatar
wayfarer
Posts: 191
Joined: 19 Mar 2023
Location: about an hour outside of Springfield

Re: Tooling UP, Workbench and Recommendations

Post by wayfarer »

ok, this is what I came up with, and I think Im overdoing it with the schmitt-triggers, and could move that Flip-Flop/Toggle there (that should switch its state from hi-to-low or low-to-hi on each button press.)
555_FastClock _A.png
Im thinking it could be put behind the first trigger and omit the one after it. Id like to step through this, and make sure Ive got each part of it understood and not just copied, like what is that diode to ground for on your debounce circuit, other examples dont use them.?
plasmo
Posts: 1273
Joined: 21 Dec 2018
Location: Albuquerque NM USA

Re: Tooling UP, Workbench and Recommendations

Post by plasmo »

That’s rather complicated. Dr J has a much simpler debounced single stepper here:
viewtopic.php?f=4&t=8059&hilit=Debounce ... 45#p108132
John West
Posts: 383
Joined: 03 Sep 2002

Re: Tooling UP, Workbench and Recommendations

Post by John West »

The diode is there to provide a path for current to flow on the falling edge of the inverter's output. That will push the right hand side of the capacitor below 0V, and that's not good for any inputs connected to it.

The series capacitor turns it from a debounced button to an edge detector: you'll get a short positive pulse when the button is pressed, and (thanks to the diode) nothing when it is released.

As drawn, the flip-flop won't work at all. You've got the clock input connected to 0V, so the output will remain in whatever random state it powered up in forever. If you want a toggle, feed the debounced button (without the series capacitor, diode, and resistor) to the clock input of a 74xx74 with its /Q output connected to the D input. If you like, you can have a capacitor to 0V with a pullup resistor on one of the S or R inputs to force it into one state or the other on power-up.

Also, the flip-flop will be forcing its output onto the clock whenever it feels like it, which can be at any interval after an edge of the 555's output. You will occasionally get very short clock pulses, which could lead to unpredictable behaviour. It's better to use another flip-flop to synchronise the enable signal to the 555's output.

Also, if the 555 you are using actually is the ICM7555, its output has better rise and fall times than the 40106. There's little reason to use the 4000 series unless you need supply voltages above 5V.
User avatar
GARTHWILSON
Forum Moderator
Posts: 8773
Joined: 30 Aug 2002
Location: Southern California
Contact:

Re: Tooling UP, Workbench and Recommendations

Post by GARTHWILSON »

John West saved me some typing. :D And yes, the 40106 will be very slow compared to the 74HC14 I recommended.  (74AC14 would be better for the W65C02S's desired rise & fall time, but the 74AC series is not friendly to breadboarding, which is why I didn't say 74AC14.)  Save the 4000-series logic for when you need to interface it to 12V or other high voltage the 74's won't handle.
plasmo wrote:
That’s rather complicated. Dr J has a much simpler debounced single stepper here:
viewtopic.php?f=4&t=8059&hilit=Debounce ... 45#p108132
That one is good for delaying the reaction to the button.  I used it for a circuit when my boss wanted an ON/OFF pushbutton switch that required holding the button for a couple of seconds for either on or off, so simply bumping it my accident wouldn't turn the thing on or off.  It was for something too simple to justify putting a microcontroller in it.  If you just hold the button continuously, it'd keep toggling on...off...on...off...indefinitely, a couple of seconds each state.

I mentioned somewhere that I should add a Schmitt-trigger-inverter oscillator to the clock-generation page of the 6502 primer.  I finally did that last week.
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?
User avatar
wayfarer
Posts: 191
Joined: 19 Mar 2023
Location: about an hour outside of Springfield

Re: Tooling UP, Workbench and Recommendations

Post by wayfarer »

here this might be a little clearer, kicad sometimes puts chip ids in when I just want generics.
I swapped the DFF, really, it should just be Toggle or maybe a latch.
555_FastClock _B.png
I think the middle is a bit cluttered and could probably clean it up a bit. the DFF/Toggle should be 'earlier' in the circuit, we just need a debounced switch, and a debounced clock edge. 2 nands instead?
someone else said use the other DFF, and have the output go to its input, Q=>D, and have the button tied to the Clk on the DFF
Post Reply