Тёмный

EEVblog  

EEVblog
Подписаться 942 тыс.
Просмотров 47 тыс.
50% 1

How does a PC read an old school analog joystick?
It might be more interesting than you think.
Or how to make an ADC out of a 555 Timer...
IBM PC Jr Technical Reference Manual:
www.retroarchive.org/dos/docs/...
Tandy 1000 Technical Reference Manual:
ia801708.us.archive.org/5/ite...
Forum: www.eevblog.com/forum/blog/eev...
EEVblog Main Web Site: www.eevblog.com
The 2nd EEVblog Channel: / eevblog2
Support the EEVblog through Patreon!
/ eevblog
Donate With Bitcoin & Other Crypto Currencies!
www.eevblog.com/crypto-currency/
EEVblog Amazon Store (Dave gets a cut):
astore.amazon.com/eevblogstore-20
T-Shirts: teespring.com/stores/eevblog
💗 Likecoin - Coins for Likes: likecoin.pro/@eevblog/dil9/hcq3

Наука

Опубликовано:

 

28 янв 2018

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 201   
@nychold
@nychold 6 лет назад
(the moment you realize how a 555 timer can be used to turn an analog signal into a digital signal) That's brilliant. Absolutely brilliant.
@mheermance
@mheermance 6 лет назад
You can also use a 555 as a touch or proximity sensor by measuring the effect of hand capacitance on the oscillator.
@NamacilHDx
@NamacilHDx 6 лет назад
my dad is as old as dave i think and xD he once said "555 timers can be used for EVERYTHING, if you knew what people allrady did with 555 timers" ive seen some people building plasma speaker with them as a trigger but xD that is next lvl shit xD
@absalomdraconis
@absalomdraconis 6 лет назад
NamacilHDx : Ha, you can make (odd, and obviously slow) logic gates with them. 555s, resistors, capacitors, inductors, power transistors, and I/O hardware are enough to recreate the modern computer age (just very, very slowly).
@xotmatrix
@xotmatrix 6 лет назад
The Apple II used essentially the same method. An interesting side-effect of software timing, at least with its relatively slow processor, is that games would run noticeably slower when the joystick was pointed right and/or down.
@KuraIthys
@KuraIthys 6 лет назад
I was surprised to read how the Pokey chip in the Atari 8 bit home computers performed analogue input... Then I heard about this trick a day later. XD There are no discrete 555 timers in the Ataris, but I wouldn't be surprised, based on how the documentation describes how it reads the controller pots (those are used for paddle controllers, mostly), that something akin to the 555 was implemented into the Pokey chip itself, because what the chip documentation describes is almost identical in operating principle...
@worroSfOretsevraH
@worroSfOretsevraH 6 лет назад
Dave, you should make a video series on these nice but rather complex old PC schematics in detail explaining every single bit of it. As we saw in this video, there are many many interesting parts. Btw. this joystick technique (hardware) is used even today in RC transmitters.
@Matthias051
@Matthias051 6 лет назад
Thank you soo much for all the interesting videos. Love it so much. Greetings from Germany, Düsseldorf
@mikeselectricstuff
@mikeselectricstuff 6 лет назад
BBC had an ADC as it was intended for other educational uses - datalogging etc. It was labelled as an analogue port, not joystick
@gotj
@gotj 6 лет назад
I ended up buying a BBC micro and you're the culprit. Well not you your video of your "beeb". I plugged it in and puff, the magic smoke escaped. Fuck you RIFA :-) I have yet to fix it to play with it.
@EEVblog
@EEVblog 6 лет назад
Makes sense in that case. Pretty crap voltage reference for datalogging though! But I guess you could software calibrate at temperatures, only 10mV/deg C drift :-/ But good enough to see a waveform.
@Zadster
@Zadster 6 лет назад
Yep, 12 bits / 5ms, but really only intended for school level data logging. Temperature, light levels etc. Not massively useful for audio with
@EVguru
@EVguru 6 лет назад
The built in reference was for Joystick use. You could use an external reference for better accuracy.
@enigma7070
@enigma7070 6 лет назад
If I recall correctly, my TRS-80 Color Computer used a binary resistive network (which was a true analog output) in place of the ramp generator mentioned in the video. Since the software could control each resistor, it would do a successive approximation and stop once the comparator trigged (after backing off to find the least possible value that still triggers). Therefore, there was no need to read a pulse width signal since the software already "knew" the output value. That was when I first learned that an analog output + comparator could serve as an analog input.
@rovpilot1
@rovpilot1 4 года назад
Man your comment is uplifting, great video thx
@magiczneshoty4034
@magiczneshoty4034 6 лет назад
Great videos Dave. Thank YOU.
@JLSoftware
@JLSoftware 6 лет назад
From Wikipedia on the Apple ][, which premiered in 1977 (PC Jr was 1983): "Rather than use a complex analog-to-digital circuit to read the outputs of the game controller, Wozniak used a simple timer circuit whose period is proportional to the resistance of the game controller, and used a software loop to measure the timer." Sound familiar? Sound earlier? en.wikipedia.org/wiki/Apple_II
@user-qf6yt3id3w
@user-qf6yt3id3w 6 лет назад
Atari computers did something similar for their paddle controllers as well - this dates back to the 2600 and probably to earlier Atari arcade machines. You discharged a capacitor for each channel in the vertical blank and then charged it through a constant current source until it hit some reference voltage. When that happened you latched the horizontal line counter. So you didn't actually need a software loop - software could just read the current potentiometer position out of a register. The Atari 8 bit machines even had a fast scan mode where the capacitors charged in two scan lines rather than a whole screenful. www.atarimagazines.com/v2n4/talkischeap.html The POKEY chip converts the POT resistances into numbers. This technique is called voltage-to frequency conversion, and is noted for low cost and relative inaccuracy, reflected in the speaker output as noise and hiss. Still, most of the original sound remains intact. POKEY normally requires 228 TV scan lines to read the POT. The number produced by POKE is actually a count of scan lines it took to charge a capacitor located in POKEY. If there is little resistance (paddle knob turned right), the capacitor charges in fewer scan lines and the resultant number is smaller. A fast POT-scan mode is available, which causes the capacitors to charge up in only two scan lines. This fast POT-scan is what we use to read the values from the microphone, because the values must be read thousands of times per second and the normal POT-scan mode is much too slow.
@savirien4266
@savirien4266 6 лет назад
Yeah I remember how clever these old joysticks were. I remember fiddling around forever trying to get them to zero out properly (without randomly drifting in one direction). Then you finally get it right and on the next reboot it was back to drifting again! Thank the guy that came up with rotary encoders instead.
@vehasmaa
@vehasmaa 6 лет назад
Davecad supports two screens now? :O
@l3p3
@l3p3 6 лет назад
I think Dave upgraded it to version 2.
@UpLateGeek
@UpLateGeek 6 лет назад
Nah, it's the multi-sheet feature, pretty much standard in every half decent cad program. But DaveCAD's got a unique feature that allows you to join multiple sheets to make larger ones!
@TheMrKeksLp
@TheMrKeksLp 6 лет назад
Yeah but you have to have the enterprise version
@TechnikZaba
@TechnikZaba 6 лет назад
It's call the frame buffer :)
@JONOVID
@JONOVID 6 лет назад
the 555 was the 1st chip or ic that I used as a kid. 101 use's for it.
@gotj
@gotj 6 лет назад
The '77 Apple II did it like that too: trigger the 558 in one shot mode and use the µP to count until the pulse ends.
@JLSoftware
@JLSoftware 6 лет назад
Of course. But you'll never see that on PC fanboys videos. OMG it doesn't teh have teh STANDARD USB CONNECTOR!!!
@gotj
@gotj 6 лет назад
JL Software LOL
@CassioRogerioEskelsen
@CassioRogerioEskelsen 6 лет назад
Another great lesson, thanks Dave :)
@jonathanfadden9299
@jonathanfadden9299 6 лет назад
Steve Wozniak (Apple II) first came up with the RC design. In a presentation, he said something about this being cheapest way he could think of. The timing was all done in software.
@peterschmidt9942
@peterschmidt9942 6 лет назад
It was interesting to see how these little guys worked and explains a lot about how inaccurate the joysticks were back then! I can remember playing games on similar PC's back in the day and all of sudden your character would start walking in the opposite direction to what you'd selected on the joystick. I always thought the software was the cause, but I reckon it was just the slow speed's of the PC and not being able to scan the joystick ports quick enough with the shared resources.
@Hogscraper
@Hogscraper 6 лет назад
Wow, I remember the days playing with a joystick like that on a Tandy 1000. Good Times:) Thanks for the video about the inner workings!
@LeMecanoDuDimanche
@LeMecanoDuDimanche 6 лет назад
cool video ! thanks... I wish I had such an interesting electronics teacher back in the days
@p_mouse8676
@p_mouse8676 6 лет назад
Thanks for following my suggestion/question ;) (unintentionally probably) Love this little circuit, so easy yet so extremely useful! Makes you realize how over engineered ADCs actually are.
@insoft_uk
@insoft_uk 6 лет назад
I use to program games in DOS, and had to write a calibration routine as CPU speed was an unknown so one had to get the min and max timing and convert it to 0-255 8 bit value
@EEVblog
@EEVblog 6 лет назад
Glad you remember, it's been too long ago for me!
@anlumo1
@anlumo1 6 лет назад
Not only that, the potentiometers also had very “flexible” tolerances and did vary a lot between different joystick models.
@rich1051414
@rich1051414 6 лет назад
Couldn't you store the current time at the end of a frame then wait at the end of the next frame until the appropriate time had elapsed, then the speed of the processor would not matter.
@bkucenski
@bkucenski 6 лет назад
I believe a lot of games had you move the joystick to the upper left corner and then the lower right corner to calibrate the min and max on the axis. I'm thinking if you wanted to not use software to get the digital value, you could use a second 555 timer running astable to increment a binary counter and then grab the data from those pins to get the digital value. Might be useful for an arduino controller you want to minimize computations with. That'd be more expensive but a good exercise with some more chips.
@anlumo1
@anlumo1 6 лет назад
On an Arduino, you could just use the built-in ADC to read the values.
@rotareneg
@rotareneg 6 лет назад
The Amiga used hardware to count how many scan lines it took to charge a 47 nF cap through the joystick pot. You'd write to a control register during the CRT vertical blanking period to discharge the cap and start the counters and then read the pot register when the next vertical blanking period started, followed by setting the control register again to repeat the process every frame.
@SteveHodge
@SteveHodge 6 лет назад
Clever. Though I think analogue joysticks were rare on the Amiga, certainly all the joysticks I took apart were simple switch-based (digital) designs.
@Fiercesoulking
@Fiercesoulking 6 лет назад
I'm not sure weren't those not the same which were used in the C64 ? Yeah they were switched based but the funny thing is there were certain types of games you could only implement with those kinds of joysticks mainly sport games which was a disappointment when I changed to PC.
@rotareneg
@rotareneg 6 лет назад
Indeed, virtually all joysticks on the Amiga were digital and used the same Atari standard (the controller port was reconfigurable and could use mice, digital or analog joysticks, light pen, or act as a 4 bit I/O port.) A native analog Amiga joystick was supposed to use 470k pots and was not directly interchangeable with PC analog sticks, even accounting for the pin-out difference. The rarity of native sticks lead to there being hardware adapters that let you use PC sticks on the Amiga if you had one of the few Amiga sims that supported analog input. One example, Fighter Duel Pro 2, even supported analog rudder pedals along with an analog stick when using the Smart Port adapter, which fed the rudder axis into the Amiga mixed with the mouse signals by reconfiguring the middle mouse pin to analog mode.
@Starphot
@Starphot 6 лет назад
Nice one, Dave! The venerable 555. I started making transistor multivribrators for my projects in 1972. In 1973, I made a Sputnik beeper for a model rocket using transistor multivibrators. I still have my first 'breadboard' and the rocket beacon, still working. After that, the LM 555 came out and that was a godsend! My first real project was making an LED blinker for a phony security camera body. Since I was the shop tinkerer onboard my ship, I made the blinker for a case with a phony glass lens that looked like the security cams that were available for that day. That seemed to stop the thefts. You open the door and one of the first things you see was the blinking LED on the phony camera body. Later I got an AC synchronous motor drive controller for my telescope with joystick. The circuit in that was MUNTZ unstable and I used a 555 chip and a regulated supply to remedy that problem. The autoguider socket and add-on was added later. I still use it to photograph the night sky.
@ilanmower
@ilanmower 6 лет назад
#1054 Should be about our favorite 50MHz 1Gs/S 4 channel Digital Storage Oscilloscope, with "upgradable" Bandwith, memory and math functions.
@Trendinglive
@Trendinglive 5 лет назад
Great videos, add some specific topics also to have some deeper knowledge. Although all your videos are great. 😀👌👍
@ChipGuy
@ChipGuy 6 лет назад
Back in the day, when technical solutions were crude but exciting. Today: Pick a microcontroller with USB and a sufficient number of ADC channels...technically much better, but booooring ;)
@absalomdraconis
@absalomdraconis 6 лет назад
Chip Guy Vids : You could always hang a cpld feed by a clock, reset, and timers off of an spi, if you wanted something more interesting ;) .
@ChipGuy
@ChipGuy 6 лет назад
Doesn't sound too bad, actually. Silly but interesting.
@BlackEpyon
@BlackEpyon 6 лет назад
Agreed. I'm working on designing a multi-configuration CompackFlash/ATA2 controller exclusively for the PLUS card interface on the Tandy 1000EX/HX (actually just an XT on a 62-pin BERG connector) based on the popular lo-tech 8-bit CF-IDE card (James Pierce hasn't been active since 2015, but like all of the XT-IDE community projects, his stuff is Open Source). The digital logic of the day was simple enough that with a little electronics know-how, you could make whatever you needed yourself if there wasn't anything available! There's something very satisfying about being able to make your own expansion cards using discrete logic (74xxx series in this case) and a flash chip.
@dave_sic1365
@dave_sic1365 2 года назад
Yes that's why I'm fascinated by old electronics like radar.
@SzDavidHUN
@SzDavidHUN 6 лет назад
What an amazing idea. I wonder how precise was it because the software timing, I couldn't make a wav player without interrupts on an esp32 :D
@electronash
@electronash 6 лет назад
The Vectrex used a similar method, but using the main DAC instead... The CPU sent out a few incremental values to the DAC, and when the voltage from the DAC matched what was on the pot in the joystick, a comparator then just outputs a High signal to a digital input pin. With the use of a mux chip (4066, IIRC?), it meant that they could just one of the relatively expensive DAC chips for the X/Y/Z, and both joysticks. (the "Z" axis on the Vectrex was just the beam brightness.) Quite a few clever tricks were used to cut costs back then. Sadly, cutting costs these days often means manufacturers using crappy plastics etc. Bring back the heavy IBM cases and tank-like build quality, I say. :p (for non-portables, obviously. lol) Dave - It would be fantastic if you could get hold of some of the MIPS era SGI machines for a teardown. I could be wrong, but I don't think you've covered one of those as yet? Huge amount of engineering went in to the SGI Octane / Indy / Onyx etc., and they had a huge price tag to match. I had an Octane (MIPS R5000) and O2 for a few years. They weighed so much, I was slightly worried about the floorboards. lol
@PhateShepherd
@PhateShepherd 6 лет назад
The joystick looks suspiciously like the Kraft joystick. Likely just rebranded for IBM. Nearly identical circuit used for the Apple 2 in 1977. A 558 timer.
@JLSoftware
@JLSoftware 6 лет назад
Gee, you think maybe somebody opened up an Apple ][ and took a peek at how Woz did the game paddles? And then erased all of that from everyone's memories? SMH
@PhateShepherd
@PhateShepherd 6 лет назад
I remember converting Apple and PC sticks back and forth. Problem was one use 100K pots, and the other used 150K pots. Who knows, someone else probably did it with a 555 earlier than Apple back in the pong days.
@Audio_Simon
@Audio_Simon 6 лет назад
Love the comparison between the two timing circuits. I had a joystick that never returned dead center back in the 486 days. Calibrated it and trimmed it but my spaceship would always slide about on is own! >.< Nothing beats mouse and keyboard anyway.
@tandy
@tandy 6 лет назад
The joystick was made by Kraft, it was also sold as the Tandy Deluxe Joystick for the Tandy CoCo and Tandy 1000.
@Da40kOrks
@Da40kOrks 6 лет назад
Looks just like a Tandy joystick I have for my Color Computer.
@13lake
@13lake 5 лет назад
Could you do an in-depth study of how a modern Xbox or Dualshock analog stick works? And why my Joystick tester on PC shows shaky analog axes and drift sometimes?
@daveyfenwick
@daveyfenwick 6 лет назад
Of note, the MCS series microcontrollers from Intel were released starting in 1982. They have built in AD converters in them and were used pretty extensively in a variety of applications. My Roland W-30 music workstation had an 8098 in it. The 8061 was primarily built for Ford for their cars, but the 8051 is a classic microcontroller in a bunch of industries. It was released in 1980. However, you're right, it would *never* be cost effective as a simple joystick read circuit. I just wanted to note that there were a quite a few microcontrollers on the market by the time the peanut was released. Programming for the 8097/8098 was a blast though, especially the banked RAM configurations. :)
@tl1024
@tl1024 6 лет назад
DaveCAD 558 joystick schematic warms my heart. Gotta love the hex address decode, don't remember hex addresses? That's your good, or bad fortune, depends how you look at it..
@anlumo1
@anlumo1 6 лет назад
Back when I started with using computers all sound cards had a joystick port built in. From a technical perspective this doesn't make any sense, but you'd want both for playing games, so it was kinda useful.
@Spikejwh1
@Spikejwh1 6 лет назад
I remember I build my own gameport card for my PC on a piece of perfboard back then.... Played many hours of Flightsim 1 and Elite with it.. I think I just copied the schematics from the PC technical reference manual (I worked for IBM at the time so had access to all these books)
@Mystickneon
@Mystickneon 6 лет назад
I owned one of them.... the Tandy one, though(for my 1000EX). The neat thing about them is that you could unlock the axii so they didn't automatically return to center. (I see now he covers this in the video - lol, with the same descriptor)
@ajar1000
@ajar1000 6 лет назад
I wonder how much of a delay the timing of the 555 signal width causes to the input signal
@mattjmwmatt
@mattjmwmatt 6 лет назад
Holy crap, saw 555 liked it!!! Bloody brilliant! Gotta say my first thought was: Meh... just stick a micro in there! Man, engineering back then sure was fun.
@gotj
@gotj 6 лет назад
Vintage tech FTW :-)
@shurdi3
@shurdi3 6 лет назад
Holy fuck that is beautifully elegant solution Brillian
6 лет назад
C64 SID chip had 2 analog inputs as well. It could measure the analog values of 2 pots without blocking the CPU, with less parts needed. A "Single Slope" ADC was included in the chip. Cheap ADC in 1982.
@MedSou
@MedSou 6 лет назад
thanks 👍👍
@bryandrap123
@bryandrap123 6 лет назад
Hey Dave, As an industrial automation/process control guy I'd like to see a detailed video on how modern industrial transmitters keep a stable constant current loop indifferent to a reasonable (0-1387ohm) resistance.
@foo1898
@foo1898 6 лет назад
The joystick port in the SoundBlaster, which later became the PC standard, was directly connected to the bus with a single I/O address. There was no timer, only capacitors. To read the axis positions, software would write to the port to reset the capacitors, and then read the port in a tight loop until the bits flipped. There was no precise enough timers on the PC, so the time was measured using a counter in the loop. Of course this doesn't allow any inference during the loop, which meant disabling all interrupts for devices like the keyboard and soundcard. Which doesn't work that well in a modern multitasking operating system...
@BlackEpyon
@BlackEpyon 6 лет назад
Fun fact: The Tandy 1000 series, up to the RLX (which was, I think, the last model based on the PC-Jr) could use a joystick in lieu of a mouse in DeskMate.
@shickster1
@shickster1 6 лет назад
I recall that joystick being branded "CH Products" and "Kraft".
@brandonleblanc9611
@brandonleblanc9611 6 лет назад
Would you be interested in maybe making a video about an LCD controller board design? Or be able to point me in the direction of something I could read to learn more about it?
@1337GameDev
@1337GameDev 6 лет назад
9:00 - Why did they need 4 channels? I thought there was only 2 pots in the joystick? Or was this for "controllers" that had 2 sticks?
@trcostan
@trcostan 6 лет назад
When and how was MIDI implemented in the game port?
@rdxdt
@rdxdt 6 лет назад
Tyler Costantini im not sure if i recall it correctly but the non mpu 401 compatible interface was integrated on the first Sound Blaster by Creative, they used the unused pins on the gameport connector, all you needed was a cable that splitted the gameport connector to another gameport connector and the midi in and midi out DIN connectors.
@absalomdraconis
@absalomdraconis 6 лет назад
The details escape me, but the implementation was a repurposing of extra power pins, and the actual signal was a optically-insulated current-loop carrying fixed-speed serial.
@SwitchingPower
@SwitchingPower 6 лет назад
So the Tandy 1000 is not compatible with the Microsoft sidewinder gamepads because they use a trick to read the trigger pulse out of the analog input through the discharge transistor of the 555 timer.
@AmRadPodcast
@AmRadPodcast 6 лет назад
I still miss using BASIC to make little jingles on that crappy paper cone speaker. Back when computers came with programming manuals.
@gerff01
@gerff01 6 лет назад
No reason you can't still do that...
@RetroBoxRoom
@RetroBoxRoom 6 лет назад
Would it be possible to make an external adapter to convert any PC analogue joystick to a BBC micro? I don't know enough about electronics
@gerff01
@gerff01 6 лет назад
I HAD ONE OF THOSE!!
@-taz-
@-taz- 6 лет назад
It's a Kraft joystick. I had one a lot like that, until my little brother cannibalized it to build a steering wheel and gas pedal to play Stuntz.
@betamax80
@betamax80 6 лет назад
I believe CH made the IBM joystick, and produced an identical product under their own brand - they may have bundled that original game card as well.
@Mostlyharmless1985
@Mostlyharmless1985 6 лет назад
That’s exactly what an Apple II joystick looks like. I wonder who came first.
@JLSoftware
@JLSoftware 6 лет назад
Apple: 1976 IBM: 1983 You decide.
@alexanderwikstrom1829
@alexanderwikstrom1829 6 лет назад
Software timing? I would have used some 7400 series counter and an oscillator that is gated by the 555 timer, then fetch that counter value and toss into a buffer for the software to enjoy. Though, it would need two 8 bit counters per joystick, and two AND gates too... But no more software timing!
@johncundiss9098
@johncundiss9098 6 лет назад
Did not Apple have a joystick for its first computers? I think I remember it having a rather smooth fluid feel, it had x/y trim pots on each side. But I think the biggest thing I liked was that you could disengage the centering springs of the stick so it would stay wherever you put it instead of it moving back to center. Both x and y axis.
@gunnish1337
@gunnish1337 6 лет назад
Does it have a what-not-gate?
@mrozu1337
@mrozu1337 6 лет назад
RC Hobby still uses PWM signal for radio transmitter joysticks and servo/motor controlling :) 50Hz, 1000-2000us width signal. Fortunately, "drones"/multirotors are pushing it to digital communication :)
@anlumo1
@anlumo1 6 лет назад
Easy enough to read and generate on a microcontroller.
@kippie80
@kippie80 6 лет назад
Awa, Dave, you could have stuck a signal generator on there to force the triggering. Output would go to buffer .. shouldnt cause lockup.
@EEVblog
@EEVblog 6 лет назад
I would have had to force an active logic line, and it's not the same as running software and watching it do it's thing in a loop.
@RayMerrell68
@RayMerrell68 6 лет назад
Please teardown ye olde Microsoft Precision Pro and show us how that 'patented optical technology' works.
@rich1051414
@rich1051414 6 лет назад
I tore one down when I was a teenager, but I believe it had an IR LED mounted to the moving part and 2 IR sensors mounted stationary(adjustable), and the output of those sensors were compared to get the location of the IR LED. Not unlike modern motion cap :)
@Bleats_Sinodai
@Bleats_Sinodai 6 лет назад
I have an old Genius joystick that my mom wants to use to play Wolfenstein3D (I got the exact model she used to play when I was a kid), but I'm having trouble getting it to work with the USB adapter I found. If anyone knows of a universal or customizable/calibrating type of gameport-to-usb adapter, I'd be super thankful!
@simontay4851
@simontay4851 6 лет назад
Better/easier way would be to just buy a cheap basic PCI sound card on eBay. A creative ensonique/ PCI 128 for example. They have game ports onboard.
@absalomdraconis
@absalomdraconis 6 лет назад
blackcorvo : You'll need an analog to Genesis converter, the info is available online.
@simontay4851
@simontay4851 6 лет назад
en.m.wikipedia.org/wiki/Ensoniq_AudioPCI
@MatthewSuffidy
@MatthewSuffidy 6 лет назад
I got a free gameport joystick on the internet. I thought it would work with my Creative cards, but windows did not have drivers. It turned out to be more or less a digital joystick with an analog startup. So I made sort of a driver using various thing so it works again and is mentioned on my youtube channel. My stuff works for the Microsoft Sidewinder Precision Pro exclusively be warned.
@MatthewSuffidy
@MatthewSuffidy 6 лет назад
I think I could almost make an analog driver by changing the source in a few places, but since it works 100% ok as is I don't know if I'd really want to inflict in on myself.
@izimsi
@izimsi 6 лет назад
AFAIR windows OSs (like 8+) don't support gameport, just to warn you
@MatthewSuffidy
@MatthewSuffidy 6 лет назад
Yah but it didn't stop be dude. Its history. Here it is in windows 10: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-M64WAWSGGdo.html
@jasonmhite
@jasonmhite 6 лет назад
You mentioned the tolerances on the pots wasn't that great, so I guess that was part of the calibration routine you used to have to run? It was looking for the pulse length corresponding to center, min and max on each channel for your specific stick? I always figured it was more to do with small mechanical differences causing variations in where the stick would center physically, but the values of the pots not being consistent makes a lot of sense.
@absalomdraconis
@absalomdraconis 6 лет назад
nobodybodybody : It was a couple things. Differences between sticks and models, changes over time and temperature (pots do wear out after all), mechanical wiggle and stickiness, it basically covered everything to some level of detail.
@ElectricGears
@ElectricGears 6 лет назад
I think that could be made a lot less software intensive with only 3 extra chips. An 8-bit binary counter driven by the main clock, AND gated with each output channel of the 558 AND one output line of a binary-to-decimal decoder on the main bus. The binary value written to the bus selects the channel that will be delivered via the AND gates (along with the system clock) to the binary counter which will cunt as long as the 558 output is high and transfer that accumulated value to the data bus. I don't know if the main clock would be running at a good speed for this to work but another local oscillator could be used. If you were willing to wait 256 cycles for a full 8 bit resolution position, you could queue up a joystick read 256 cycles ahead of time and do something else. Although I imagine the maximum delay would still be less than the software loop. Another bonus would be waiting a different number of clocks to achieve different resolution counts if some application favored response over precision. The sample rate could be arbitrary for each sample. You might also be able to mix the buttons in there to grab 1 axis (6 bit) + 2 buttons depending on an address value mixed with some more AND gates. I bet there are other clever ways to chain 2 4-bit counters and some extra decode logic to allow 2 axes to be sampled in one read (at 4-bit resolution). Side note: do stand-alone ADCs work this way? I always thought they had a series of comparators (one for each bit) with a precise binary sequence of thresholds. They would all receive the input signal in parallel and the pattern of comparators that were on represented the binary translation of the the analog input.
@oskardzida
@oskardzida 6 лет назад
0:23-1:03 5 times "actually" ;) Now i know where did my "twice a sentence actually" came from.
@gotj
@gotj 6 лет назад
And if you put an LDR you could "measure" light hahaha I did a scanner with that and a plotter
@logandihel
@logandihel 6 лет назад
Why did they need 4 pulses from the joystick instead of just 2, one for each pot?
@SkyCharger001
@SkyCharger001 6 лет назад
error compensation, increasing accuracy through averaging or the last two pulses are for the buttons (they need to be probed as well)
@cthree87
@cthree87 6 лет назад
You can use POKE in BIOS BASIC to write to the joystick address.
@mheermance
@mheermance 6 лет назад
Externally that joystick looks exactly like the Color Computer one. Except the CoCo used an ADC.
@shurdi3
@shurdi3 6 лет назад
15:00 Isn't that integral schematic one of the more primitive ADCs?
@izimsi
@izimsi 6 лет назад
well, it's an ADC with time output.
@EEVblog
@EEVblog 6 лет назад
It's basically single slope integration. Multimeters use dual slope integration for example.
@rivards1
@rivards1 6 лет назад
Looks like the Kraft joystick for the Apple //. Apple // joysticks and paddles were analog and predated the PC versions.
@JLSoftware
@JLSoftware 6 лет назад
I'm SO glad to see people know the ACTUAL place where this engineering came from: the non-college mind of THE WOZ.
@AxelWerner
@AxelWerner 6 лет назад
Dave, you should start upload your stuff on dtube too.
@michaelparker2449
@michaelparker2449 6 лет назад
I've lost count of the times I've had to clean or replace the potentiometers in game controllers when they start to develop stick drift, and the worst part is most people just buy a new controller when this happens.
@gotj
@gotj 6 лет назад
The problem with that is 1) it takes a "long" time, and 2) you never know how long it's going to take and 3) you can't read paddle one and immediately after read paddle 2 or 3 or 4 because the readings might be wrong, IIRC
@Peter_S_
@Peter_S_ 6 лет назад
1) Yes, on the Apples I think it was 12uSec per count so maximum was about 3mSec to get the value. 2) Having to waste the extra read loop cycles was always painful when the CPU is running at 1MHz 3) So true, you did need a guard time between successive 558 triggerings. On the Apple][ at least I had code that read all four pots at the same time to sidestep that issue.
@gotj
@gotj 6 лет назад
Yes but the built-in code didn't do that :-)
@NetworkXIII
@NetworkXIII 6 лет назад
The amazing 555, is there anything that it can't do?
@Peter_S_
@Peter_S_ 6 лет назад
Woz invented that circuit in 1976 and used it in the whole AppleX series.
@rcmonks
@rcmonks 3 года назад
I'm not educated in electrical circuits at all. I want to learn enough so that I can build a joystick control system which will control a 12v trolling motor on my kayak. I want to increase the speed as I push the stick forward and go in reverse as I pull the stick back. At the same time I want to be able to steer the kayak by rotating the motor by moving the stick left and right. And finally, if I fall overboard, the motor should stop as the stick automatically goes to the neutral position. I'm guessing the type of analog joystick shown in your video might be able to do this when connected to servos or actuators to rotate the motor. Am I on the right track?
@Seegalgalguntijak
@Seegalgalguntijak 6 лет назад
So how does a Joystick nowadays work, if there are still those? Do they still have a potentiometer for determining their position? Or are there other methods that are more clever for digitally reading the X- and Y- position of a joystick? I think maybe some capacitive thingy with two coils on each axis that move in relation to each other and change the capacity of the circuit, or something like that?
@BlackEpyon
@BlackEpyon 6 лет назад
+Applied Science used to make fiber-optic joysticks for use in medical research involving MRI (say, you need to have a patient manipulate something while inside an MRI so you can see what lights up in his brain, and obviously you can't have any metal nearby. Until the USB era, all joysticks were just dumb pots and contact switches, with the ADC on the motherboard or expansion card.
@Seegalgalguntijak
@Seegalgalguntijak 6 лет назад
Midi has been used for Joysticks since the early 90's, my first sound card that I put in my 386 (which was a really crappy card at that) had a midi port that was designated as a "Joystick port". But how did the mechanical part that translates movement/positioning into data change from pots? optical sensors OK, but they can't have been that accurate, could they? Hall sensors is an interesting concept, is a hall sensor capable of measuring the strength of a magnetic field (as opposed to something like a reed switch which only turns on or off)? And how else could this be done?
@BlackEpyon
@BlackEpyon 6 лет назад
Optical is actually quite accurate. What do you think your computer mouse is using? Here's a couple examples of what Applied Science did for controllers utilizing fiber optics: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-dbrvLQamR0U.html ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-X2Uj3-B_MSo.html I'd highly recommend you check out the rest of his videos. If you like EEVBlog, then Applied Science is right up your alley. I recall one of my early game cards was a Gravis dual-port with a little pot on a dongle hanging out the back of the card. I can't quite recall what that dongle was for though. Adjusting something...
@Seegalgalguntijak
@Seegalgalguntijak 6 лет назад
I'm mainly interested in the transition between mechanical positioning and digital data (of that mechanical position), so it's a 90+% theoretical effort for me.
@BlackEpyon
@BlackEpyon 6 лет назад
Encoding wheels. Same way ball mice used to work.
@trifidsagitarius
@trifidsagitarius 6 лет назад
Use DOS debug and out to port 201H (if I remember correctly) that will trigger the 555 DOS debug commands montcs.bloomu.edu/Information/LowLevel/DOS-Debug.html Example in DOS run debug enter O 201 xx ( output port byte )
@KuraIthys
@KuraIthys 6 лет назад
Ah, the 15 pin PC joystick port. Almost as ubiquitous as the Atari joystick port. Although, more long-lived I suppose. It's actually kinda surprising how many systems ended up with Atari ports or minor variations on it. To this day the best input device for most 8 bit computers (though you have to watch it with some, especially those which deviate from the Atari spec somewhat) often turns out the be a mega drive gamepad. Granted, in existing games only one button and the d-pad works; and given how the IO for most ports works (And the Atari port in particular), with custom software routines the best you'll get is the d-pad and two of the 4 buttons. (2 of the 7 buttons on the 6 button version.) It wouldn't be hard to create a simple adapter that lets you use more buttons, but as is without rewiring either the controller or the port, this somehow just works. It shouldn't, because it doesn't quite match. But it works anyway because the Sega controller expects +5 volts on a pin that according to official atari specs does nothing, but in fact is generally pulled high (eg. gives +5 volts) in most systems. The reason you can't use all the buttons even with custom software is related to this; the Sega specification uses one of the pins as a 'select' switch. Pull it high and you read Button B and C, pull it low and you can read A and Start. It just so happens that the pin chosen for this is the pin that in the Atari specification is used as the power pin. So it's always high. Which is why you get two buttons but cannot access the others; there's no software control over that pin. (There are 4 pins that can be set as either input OR output, but those are the ones that give the D-pad inputs on the Sega controller. - and in fact by default the joystick inputs on a standard Atari joystick as well. Part of why this works at all - the D-pad maps to the same pins as an Atari Joystick, and the B button maps to the atari controller's Fire button. The C button maps to what is officially an unused pin, but which IS readable in software - Except no existing software reads that pin, for obvious reasons.) Kinda weird how many systems used that same standard, or near enough to it, in the end. Nintendo's logic for how to read a game controller is quite different. Though in their case one of the things that might not be obvious is that the NES and SNES controllers have the exact same pinouts and behaviour; Obviously the SNES has extra buttons, but beyond that the only difference is that the two have physically different connectors... For a short summary of the differences, the Atari specification, while it has some variations for stuff like paddles and the like, really just treats the 9 pins as +5 volts, ground, and 7 inputs. - two are unused in the official spec, but you register an input by puling the relevant pin to ground. The Sega controllers are almost identical, barring a change in which is officially the +5 volt pin, and using up the unused pins for extra functions. That's all there is to a Master System controller, but a Mega Drive controller then uses a 'select' pin to swap between two possible interpretations of what the pins mean. An Atari controller therefore is just a bunch of buttons wired such that they pull specific pins to ground as needed. A sega controller is the same but in the Mega Drive adds a bit of logic to switch between multiple sets of buttons. (the active set pulls pins to ground, the inactive set is ignored.). The 6 button controller contains a microcontroller and uses a special timing sequence of the select pin to access the additional buttons. the way Nintendo does it is effectively a simple serial port; Compared to the atari and sega approach (excluding the 6 button controller) this is slightly more complex. But, it's not compex circuitry. The controller simply contains a pair of 8 bit shift registers, which are hooked up to form a 16 bit shift register. The console sends a latch signal to lock the shift registers into a specific state (the combination of buttons when the latch was enabled), then sends a clock signal to shift out the bits one by one, then releases the latch signal. A completely different approach, which is somewhat more complex, but also more adaptable in the long term; All you need to do to get more capable controllers is either add more shift registers or use a microcontroller in the gamepad (depending on the complexity), and redefine what format the serial data that gets returned is in. The n64's controllers have a much faster bus, and have been reduced to just 3 wires from 7 (obviously the fact that the n64's memory cards attach to the controller has implications for what the transmission protocol is capable of; But the SNES controller ports have been adapted to attach some kind of flash storage to, as were the NES ports before them.), but the principle is similar. The gamecube controller still follows roughly this principle... The wired Wii controllers have switched to using an I^2C bus, but it's still roughly the same concept... All this stuff is surprisingly interesting when you look at it up close. (in case you're wondering why I haven't mentioned anything else besides Atari and Nintendo... - well, like I said, the atari standard was VERY influential in the 80's. While a bunch of systems didn't follow the spec all that closely, they still broadly followed the idea of the port, and changes were usually just swapping the meaning of some of the pins around...)
@EEVblog
@EEVblog 6 лет назад
Great input, thanks.
@CODMarioWarfare
@CODMarioWarfare 6 лет назад
And yet, ironically Atari had a 15 pin joystick port that was decidedly NOT ubiquitous
@KuraIthys
@KuraIthys 6 лет назад
@CODMarioWarfare - As I recall both the Atari ST and Amiga used 15 pin ports, but with a breakout cable the result is more or less that each port is two Atari ports put together. Atari did then go on to use an unrelated 15 pin port for the Jaguar... Which matches neither the original Atari spec, the Atari ST 15 pin port spec, the PC 15 pin spec, nor anything else. It's it's own thing, for whatever reason. I mean, the Jaguar had what was it, a dpad, 4 buttons and for some reason a keypad with 12 keys? But... Yeah, I'm not surprised that never caught on if the only thing that used it was the Jaguar. XD Besides which Atari in the 90's was on the brink of collapse, and a mere shadow of what it was in the 1970's. The reason the 9 pin Atari port was so influential can almost certainly be traced to how big Atari was in the late 70's... But by the 90's... I don't think anyone cared anymore...
@rflberg
@rflberg 6 лет назад
tandy 1000 disk are found here: www.oldskool.org/guides/tvdog/system.html
@romanpryce3999
@romanpryce3999 6 лет назад
Dave, I thought all of those computers of that era came with BASIC in ROM so would boot into a BASIC interpreter, well the IBM PC did. And you could have used a simple BASIC program to POKE the address of the joystick control and that would have generated the triggers you need with using game software or DOS. Something like this: 10 ADDRESS = ???? 20 POKE ADDRESS, 1 30 GOTO 20 the syntax maybe off but that all you needed. Replace the ???? with the address of the latch/controller.
@thewolfin
@thewolfin 6 лет назад
I saw "55?" on the block in the thumbnail and was confused AF. Thank you for the thought-provoking clickbait.
@mrx1050
@mrx1050 6 лет назад
12:50 all the way with LBJ up to 125 K
@djvanzz
@djvanzz 6 лет назад
Why is this not appearing on my timeline?
@EEVblog
@EEVblog 6 лет назад
+Edward Ciotic RU-vid is retarded lately
@inductorbackemf7204
@inductorbackemf7204 6 лет назад
lately? seems like always.
@gotj
@gotj 6 лет назад
I'm sure Woz didn't do it like the Tandy because he didn't like to mess with analog electronics very much
@Peter_S_
@Peter_S_ 6 лет назад
Woz did it many years before Tandy did it and the 558 solution is about as cheap and simple as it gets which is what drives Woz. The Apple ][ contains multiple little analog blocks but it also contains six 555 timer cores... most systems had eight of them if you count the 556 on the Disk][ controller.
@gotj
@gotj 6 лет назад
He did not do it *like*the*Tandy*
@JimLeonard
@JimLeonard 8 месяцев назад
5 years too late, but you actually didn't need a boot floppy to test the joysticks: The PCjr has built-in diagnostics, including a joystick routine. Hit CTRl-ALT-INS after POST, and then press spacebar until the cursor is by the picture of a joystick, then hit ENTER. At that point, the ports will be constantly triggering to show an image you can use to calibrate the joystick positions.
@MrDrifterNL
@MrDrifterNL 6 лет назад
The moment you realize that your Tandy TRS-80 Deluxe Joystick was an IBM clone....
@Dellenite
@Dellenite 6 лет назад
Why didn't they use a DAC?
@absalomdraconis
@absalomdraconis 6 лет назад
Dellenite : This is a type of DAC, and a very cheap one at that. More advanced sticks did all sorts of things too (I've read of some sticks reading out different buttons over the button lines based of charge state on a particular axis).
@binaryglitch64
@binaryglitch64 6 лет назад
How does one go about knowing that NE558N V8407 S is generically known as just a 558 chip... with so much other stuff written on IC's how do you extrapolate what means what, i mean even date codes are written several different ways and are not always present on components, so how does one come to know weather they are looking at a modek number, part number, date code, manufacture specific model number that contains a generic model number, etc.? Is that just experience, or is there a method to the madness that is reading component labeling? My guess is it's a mix.., some combination of methods that one gets a feel for which to apply in a given component type given the rough date and type of electronic circuit being looked at by way of experience. Am I close? My current method is to just type the type of component in to a google search and try following it with what's written on the component one Alphanumeric/numeric code than the next, than the next until i get a hit, but it doesn't always work. I did this with an ac fan relay recently and got some love from google, but sometimes i get no love so any hints would be appreciated.
@apexmike849
@apexmike849 6 лет назад
Experience.
@qwertyFUBAR
@qwertyFUBAR 6 лет назад
Love 'dem EPLS and WWCD (Easy Peasy Lemon Squeezy, Winner Winner Chicken Dinner)
@FASTFabrication
@FASTFabrication 6 лет назад
Hello, do you repairs? I am a 1 handed gamer. I have 2 of the old edimensional access ben heck designed controllers. It uses like 4 universal boards so you can move these little pods into different locations. I have 1 arrangement (eventually i like to make my own permanent controller, because i think the universal boards cause issues.) Anyways all 4 of my joysticks (both lefts and rights [use as lefts sometimes with remapping]) ill show input when not being touched or not resetting to 0 after letting go of joystick. Makes playing ro oncket league really hard. I order a ps2 potentiometer but the one that is in the access controller pod has a small 32 pin connector on bottom of it that connects it to the board. I cant even figure out how to get it out of the pod, im guessing you need to pop off the joy stick pad somehow or remove board from potentometer. I be willing to pay for getting new potentiometers in my access pods
@jimmihenry
@jimmihenry 6 лет назад
Holly smoks you can buy a 5 1/4 Floppy Brand new!!! Guess i need a Floppy drive now. Good old times!
@electrokidzz2183
@electrokidzz2183 6 лет назад
Hey I have a question for all of you enthusiasts out there, I have recently started hobby electronics and have opened a lot of old electronics and do these old electronics contain large amounts of lead and is it a risk touching then and leaving them about, I also have 2 cats and I want to know if this is safe
@apexmike849
@apexmike849 6 лет назад
The lead isn't a problem unless you start ingesting it. Soldering is OK. Modern regulatory bodies are hysterical...
@hadtomakeachannel
@hadtomakeachannel 6 лет назад
There's no risk from the lead. do be tidy though and don't just leave old PCBs lying around all over the place - They might break if your cats knock them off the bench, and you don't want to be tripping over, standing on them, or stubbing your toe on one!
@hadtomakeachannel
@hadtomakeachannel 6 лет назад
also, old CRT TVs can carry a dangerous electrical charge even for quite a while after being unplugged. I'd leave them alone for the time being :)
@electrokidzz2183
@electrokidzz2183 6 лет назад
hadtomakeachannel thanks guys! I’ll be more careful.
@ZlayaCo6aka
@ZlayaCo6aka 6 лет назад
The joystick looks an awful lot like a Kraft.
@Combat.Wombat.official
@Combat.Wombat.official 6 лет назад
every game: Calibrate Joystick *holds joystick to bottom left and press button* *holds joystick to top right and press button* Joystick calibrated!!! :D
@km5405
@km5405 6 лет назад
who needs micros when you have 555 timers?
@adamelekes
@adamelekes 6 лет назад
Wow :D
Далее
Телеграмм-Колян Карелия #юмор
00:10
EEVblog #1081 - Are Bypass Capacitors REALLY needed?
35:07
The Micro Mechanisms in Your Phone
19:31
Просмотров 1,2 млн
EEVblog #908 - Zener Diodes
32:34
Просмотров 471 тыс.
The Best Practical Effect EVAR
15:16
Просмотров 95 тыс.
I built my own computer. by hand.
13:03
Просмотров 1,1 млн
Memristors for Analog AI Chips
16:25
Просмотров 117 тыс.
Why build an entire computer on breadboards?
28:43
Просмотров 3,1 млн
Телефон-електрошокер
0:43
Просмотров 1,3 млн
$1 vs $100,000 Slow Motion Camera!
0:44
Просмотров 26 млн