Jump to content

Nuke

Members
  • Posts

    3,740
  • Joined

  • Last visited

Everything posted by Nuke

  1. Nuke

    Aipryl Fulz Dei

    april fools day or as i call it nothing on the internet worth reading day.
  2. you got specs for your network packet data structures so people can design their own client side (for example raspi or esp8266/esp32) as an alternate to the droid app (i got an old android tablet but its so old i doubt it would work).
  3. i think you would need to treat the single mass as a pair of masses, like 2 smaller denser planets (but together being the same mass as the original planet) in a binary orbit. in that case your orbit would intersect one of the lagrange points between the two objects. that should throw things off. maybe. idk. anyway thats a gross oversimplification. the division of mass would be along the orbiral trajectory, and the resulting planet sections would be non-spherical gravity sources and how close you actually pass the lagrange point between them would factor in. there is a reason we simplify down to point masses. you might be able to treat the planetary sections as point masses however part of one of those bodies would be concave and that might factor in as well. you aren't really being pulled toward the planet but to all the particles with mass which the planet is made of so its a big n-body problem with n being pretty damn huge.
  4. behold! the 5-way hatswitch! sure i could get a bag of 5-way tactile joysticks on ebay for a buck, but wheres the fun in that? this thing uses a 4.8mm ball stud (spare parts for my now defunct rc heli hobby) as the joint that enables this design. there is an inverted cone built into the core of the part that accepts the ball, and it screws into the bottom of the post. you can then install a tactile button in the bottom and screw it down, this holds the ball in its socket and also provides a 5th funcion. this is actually a new version of an old design, which was built around a machineed ball and socket salvaged from a busted sewing machine. that made a damn fine hat switch, but i needed more than one of them. seeing as i had only one of those parts i had to come up with a replacement socket design, and one day while organizing my endless array of random parts bins i got an idea around the time i got to the chopper parts bin and found a stash of way too many ball screws. the new design also has the added benefit of being slightly smaller.
  5. i usually call the saved delta-v 'gravy'
  6. those are good but the price of cold cuts in these parts render them a rather expensive meal. i do make a stack of them once or twice a year and call it dinner.
  7. that's like saying meatloaf=hamburger. granted they use the same stuff but its completely different.
  8. c used to be the language for games back in the 90s. back then the overhead of oop was somewhat prohibitive. these days its hardly noticeable to use a virtual machine for everything.
  9. ive used some avr asm in some embedded projects, useful when you need to prune a tight loop or to fix timing bugs. the atmegas only have like 130 or so instructions so its a pretty lightweight instruction set to learn. x86 is a beast beast in comparison. lately ive been thinking about what kind of hardware id need to make my theory crafted cpu. turing machine is just a memory with relative addressing. i got some 8 bit srams somewhere, i stick a mux/demux on the data bus, the inputs become part of the memory address, turning it from a 32x8k ram into a 256x1k ram. since all addressing is relative you need a bi-directional binary counter with enough output pins for the address, since its a 32k sram i would need 15+3 address pins total. simply setting the direction and cycling the counter covers the INC/DEC commands. the LD/SD commands would control the memory read/write logic and register (which i think could just be a flip flop). LD would require sending a read command to the chip and writing a bit to the flipflop, the ST would take the output of the flipflop feed it back into the memory with a write command. STR/CLR just requires putting a high/low on flipflop input. CMP and OR can be handled with simple gates. putting the program on the sram would be somewhat problematic and would probibly double the complexity of the computer. doing what i suggested in my theorycrafted cpu would also be really slow, and it might be better to use a separate memory for program, with its own counter (this would be the program counter). a 4-bit flash or eeprom would work great here. also you need some kind of timing, each cycle, get the 3 bit instruction decode and execute. decoding is probably the hard part. probably require a bunch of muxes and buffers to control all the signals between chips. probably wouldn't be worth designing in hardware. probably do it in software or with an fpga if i was so inclined. incidentally i do kind of need a simple virtual machine of some sort for a project i was working on. but its going to be a little more robust and somewhat specialized.
  10. nah just something i made up with what little i know about asm. a lot of those are common memonics used in a lot of flavors of asm. theres no data as none of the instructions in the very minimalistic computer i discribed can use them. you also arent going to find a lot of architectures out there with 3 bit instructions and a one bit memory bus.
  11. analog computers did exist, many were used in ww2 for fire control systems and things like that. we even use that technology now, the qlc nand in one of my ssds has 16 voltage levels per cell, so you essentially get 4 bits in a single memory cell. memristor memory is one of those new up and comers which is totally analog memory. one of the disadvantages to analog computing, where voltages represent numbers, is that its highly susceptible to interference and those systems often require frequent calibration. you had decimal systems where you had 10 discreet voltages, but it turns out you can simplify the circuitry a lot if you just use 2 discrete levels and just convert to decimal in software as needed. this gives you highly accurate calculations which are very repeatable. you do the same operation twice you get the same result. the levels used are dictated by the logic family. cmos is the most common in modern devices, mostly due to its very low power consumptions. with 5v cmos the transition level is 2.5v with 1.3 being the maximum low voltage, and 3.7 being the minimum high. other logic families arent as symmetrical. when the state transitions from low to high there is a period in which the state is indeterminate since the transition is non-instantaneous. so you usually delay sampling of the outputs until the transition is complete. as for why we call high 1 and low 0. that's totally arbitrary. obviously we need these voltages to represent a binary number system. you could easily call low 1 and high 0 and so long as the whole system makes that assumption it will run no differently than if it were reversed. and sometimes its much more confusing, like some serial data busses a transition of level is the 1 and the level staying the same is 0 (i believe usb does this). you might want to look up information theory and boolean logic.
  12. the turring machine is usually the thing you want to get your head around. it pretty much has four instructions, read write increment and decrement. thats an example of a 2-bit instruction set. the thing to understand is that any instruction is ultimately just a number that configures the cpu for a particular task. say by activating the alu and enabling a addition operation or setting an output register for the operation or loading an adresss int a memory register for a write. in case of our turring machine the first bit would select between moving the tape, and read/write. the second bit is for parameters. say which direction to move the "tape" or or which memory operation you want to perform. then there is the concept of a register, you need a place to stick the value retrieved from the tape or to place the bit you want to write. thats the machine but how do you code that. you want an assembler. all that does is maps each number to a named instruction, say INC (increment), DEC (decrement), LD (load), ST (store). now you really cant do a whole lot with four instructions, granted what you can do would amaze you. for example there is no way to operate on the data in the register, you cant even do anything with the data there. so you just add bits to the instruction that adds more machinery. say a bit thats says 'i want to operate on the register, not the tape', this one bit essentially doubles your instruction set. not only that it can also change the meanings of the other bits. so we can now do four things to the register, write a 1, write a 0, lets call these STR (set register) and CLR (clear register). reading doesn't make much sense yet because there is nothing to do with the value, but you can push data onto the tape. however you can CMP (compare) the tape to the register, and the output goes back into the register. incidentally CMP is the same as a bitwise and, and it would be good to complement that with a OR (bitwise or). once you have four logic operations you can start doing math. but can we use what we have to figure out the others? so here is your 3-bit instruction set. INC --increment tape by one cell DEC --decrement tape by one cell LD --load the tape value to the register ST --store the register value on the tape STR --set the register to one CLR --set the register to zero CMP --compare/and the register value with the tape value and write the output to the register OR --bitwise or the values on the tape and register and write the output to the register with that you can determine the bitwise not of the value in on the tape: //we want to get thenot of the current bit in the tape. but we need some memory to do the operation so advance the tape INC //we can use the CMP as a not if we control one of the inputs, we can do that by writing a zero onto the tape CLR ST //now we need to go back to fetch the value we want to operate on and register it DEC LD //go back to the zero we wrote earlier INC //now if the value we retrieved is a one CMP will write a zero to the register, if its a zero it will write a one CMP //and we can put the output back on the tape for later use STR that looks a lot like low level code to me, for a very simple computer. if you need a nor gate, you can use four ands and four nots (see here). anyone who produced code to do that should get a bunch of likes. i should also point out that real asm doesnt look like this. more robust instruction sets often allow you to put data into the instruction, say with an LDI instruction, but that requires allocating more bits you your instruction set. of course that makes the computer more complex and likewise the code. also this theoretical machine doesnt include any machinery to actually load code into the machine, so you would have to key it in manually. you could stick the code on the tape if the machinery had some way to fetch commands from the tape, jump to the end of the program, perform the instruction, and then jump back to the beginning of the program plus a value from a program counter *3 (instructions are 3 bits so every increment of the program counter would translates to 3 INC commands from the start of the program. you also need to keep track of the offset between the start of the program and the beginning of the "memory area". to do that you need a few things. you need a way to store that instruction so that it can be performed when the hardware moves the tape back to the start of the memory area. easiest way to do that is turn the one bit register into a 4 bit shift register. every time you write a value to the register, the previous values are shifted down until they "fall off" the end. the instruction set does not have any access to values other than first bit, but the other 3 bits can be used by hardware to store the instruction (call it the instruction register). you could then load instructions into it by alternating between LD and INC 3 times, and follow that with another LD to make sure the instruction is aligned right. you need a program counter to index each instruction so you can always get to the next one by incrementing the pc by one, this would be done in hardware since counting is easy to do electronically or even mechanically. you also need to have a offset vector to find where you left off in the memory area relative to the start of the program. initially this would be the number of instructions in the program plus one. this would go up or down with each INC or DEC called from the instruction register (but not ones generated by hardware for the purpose of fetching instructions). your machine might be preloaded with a tape with the code already on it or it might be loaded from some other device like a punch card reader or even a keypad. execution would start at the first bit of the program. hardware would first call INC programCounter *3 (initially this would be zero and nothing would happen), then do the LD,INC,LD,INC,LD,INC,LD to feed the instruction into the instruction register. hardware would then call DEC programCounter *3 times (again doing nothing initially) to get back to the start of the program. at this point the program counter would be incremented as well. hardware would also call INC offsetVector times to get to the memory area. the operation stored in the register would be executed. if this was an inc or an dec, the offset vector would be adjusted accordingly. hardware would then call DEC offsetVector times to get back to the start of the code. this loop would continue till the end of the program (when the pc has been incremented program size times). i think that goes far enough down the computer science rabbit hole. just an example of how to make a turing machine do something useful. programs would be huge just to do something simple like add 2 numbers. thats why modern cpus do as much in hardware as possible.
  13. just kill the dust bunnies from time to time.
  14. theres a lot of lvdc differential signaling going on, mainly on the pcie bus and the dmi bus (the internal connection between the cpu and the south bridge on intel boards, idk what the amd version is called), which i do believe is highly resistant to outside interference. memory bus i think uses parity on its address and data lines so it can detect errors and try again (all handled on the fly so you dont notice). any other high speed serial busses like sata or usb are pretty well shielded and differential as well. mobo designers likely hide the high speed busses between a couple of ground planes for added signal clarity. so all of the high speed busses i think are protected some way. its the low speed stuff you have to worry about. like if your mobo has rgb theres a good chance its on a low speed i2c or spi bus. there is the i2s bus in the sound subsystem to communicate between the controllers and the dac. you might hear some extra static in there, bit it would take a good ear to notice. anywhere where you have analog signals (some video connections). though most of this stuff is non-critical to the function of the computer.
  15. hard to say with digital systems, especially something as complex as a pc. you can try using a radio tuned to am and see if you get any interference around the computer. though ive never met a computer that didnt play havok with am radio.
  16. its not really that big of a deal. it might not pass fcc compliance testing, but its not like they will bust down your door over it. but if you have issues with it or any other electronics, a bit of foil is a cheap fix solution.
  17. its one of those chase is better than the catch things.
  18. where i live its prohibitively expensive to get chemicals shipped here. ive been using the egregiously slow salt+vinnegar+peroxide etch solution, moving on to something better is just not an option. its also a good intro to cnc machines in a way that solves a problem i have. if i was interested in making high quality boards is probably just order them from one of those chinese board houses, which i hear can get dual layer tinned and silkscreened boards as low as $2 / square inch.
  19. there was a recent hack-a-day article for something like that, was that you? nvm google fu proves otherwise i kind of want to get into machining but i dont have the cash for that hobby. im currently doing a long term cnc pcb mill project, still gathering parts, a leadscrew here, a cnc shield there, a couple nema 17s, some rail systems. i also have some spare 3d printer parts that aren't doing anything. i got a lot of salvaged acrylic from old lcd monitors, pretty heavy duty stuff in 3/8" or more. im curious if its properties would be sufficient to handle any structural duties for my machine. i also have an unused 3d printer bed that is known to be flat, thinking that might be a good place to connect the tooling to the horizontal axis. i dont really have a design yet, i just know its going to be a cartesian machine with a dremel flex shaft acting as the business end.
  20. its fine and dandy until you cant get your $500 hotas to work with your game.
  21. cool, but i think id give the inside a bit of foil tape and ground it for emi shielding. i tried putting a bare board raspberry pi in my networking cabinet and it caused a lot of connectivity issues with the wifi. but if it aint broke no need to fix it.
  22. i usually just pxe boot. its what oems do and only requires another computer on the same network (and unless you do some router fu like i did you have to use ethernet). i use something called serva, which is free for private use.
  23. ive probably built a few hundred machines. so its all muscle memory for me. i had zero doubts that it would boot. i guess i was taking cds full of drivers for at least four operating systems for granted. not that i could open the cd since my last optical drive went tango uniform and im probably never going to buy another.
  24. its not like i didnt try, the big thing was i couldnt get networking to work, and without that fixing the other things would have been a nightmare (my other computer is upstairs, and i dont like stairs).
×
×
  • Create New...