Nuke

Members
  • Content Count

    2,290
  • Joined

  • Last visited

Community Reputation

610 Excellent

2 Followers

About Nuke

  • Rank
    Mutants Worship Me

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Nuke

    How does software "work"?

    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.
  2. Nuke

    How does software "work"?

    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.
  3. Nuke

    What does everyone think of my wood computer?

    just kill the dust bunnies from time to time.
  4. Nuke

    What does everyone think of my wood computer?

    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.
  5. Nuke

    What does everyone think of my wood computer?

    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.
  6. Nuke

    What does everyone think of my wood computer?

    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.
  7. Nuke

    Today I Made...

    its one of those chase is better than the catch things.
  8. Nuke

    Today I Made...

    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.
  9. Nuke

    Today I Made...

    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.
  10. Nuke

    [Windows 10] Gamepad Help

    its fine and dandy until you cant get your $500 hotas to work with your game.
  11. Nuke

    What does everyone think of my wood computer?

    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.
  12. Nuke

    Thread to complain bout stuff

    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.
  13. Nuke

    Thread to complain bout stuff

    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.
  14. Nuke

    Thread to complain bout stuff

    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).
  15. Nuke

    Thread to complain bout stuff

    tell it to the mobo manufacturer. never buying asus again. every time i buy their hardware i get burned. yet that 8 year old asrock board that everyone told me not to buy still works.