Computer Engineering Wish List
Q: If anyone knows of a better newsgroup to stick this in, let me know. I am an inventor. In order to better understand the inner workings of the IBM compatible, Pentium computer system, I am working on a project to map the binary data (electronic signal) flow through the system. I seek a map of essential components at first. Essential components I believe to include: Hard-Drive, 3.5" floppy, DVD ROM, keyboard, mouse, stereo sound output, SVGA output RAM and processor and all ports and all parts in between. Standards that hold across most brands. This map being able to be expanded upon later. If there is not already such a map constructed in the detail and format that I need, then I will seek the next best thing. The document at this address: "http://www.repairfaq.org/filipg/LINK/F_IDE-tech.html#IDETECH_003" shows the detail that is needed for each of the standard essential parts of a computer. The example document is for an IDE Hard-Drive and it shows all of the macroscopic input and output connections and all of the binary and electronic signals that pass through them. Documents should also show the arrangement of all connector pins where a socket exists. The binary signals describe what is known as machine code. Further to the information about the machine code, I need a method of easy machine code insertion that does not involve any human abstractions like any assembly to high level languages or complicated programs. I want to be able to enter machine code in binary or Hexadecimal and have the resulting program stored directly onto an IDE hard-drive or onto a 3.5" floppy so that it can be run from startup from any PC without interference from any operating systems. The "programming kit" can either be a direct hardware connection using a hexadecimal keypad or via a program to be run on Windows 98. I need to know where I can get such things. If it is a program then it needs to be simple. I have seen too many things that are unnecessarily complicated. I just want to enter numbers in a list in the exact order that these numbers are processed. No assembly languages, no human interpretations to get in the way and no having to define the code with file extensions and extra bits of code just so Windows can recognize it. I want the code as clean as I have entered it. I am aware that Assembly Language is what most people will recommend to me (given that most people in the computing industry are very lazy about supporting documentation). It is only with great frustration that I will accept an Assembly Language. Every Assembly Language I have seen has left me without a context. For the Assembly Language I will need to see the group of binary instructions that goes into each of the Assembly Language commands. I will need to know from what device do these commands begin to propagate? In other words, what is the common starting point for each command? I am hoping not to need the use of an Assembly Language. I will work through the machine code using only what I need, as I need to use it. Hence instead of learning it, I need it documented for easy reference any time. The reason that I am seeking this information from you is because in all of my studies, I have only ever found a lot of mostly "chit chat" types of historical information that terminates in pin diagrams with abbreviated function names for the pins. If not that then info about more complicated newer additions, which obscure the basics, or information that lacks the defining of a context. No information that I can take action with. I need information that is written in lamer terms able to be understood by any electronics hobbyist with the ability to make and connect circuits with finger sized components. I am already aware that I am trying to do things different to most people. With Computer Engineering ideas in mind, I have specific needs that demand my approach but as this link demonstrates: "http://bobrich.lexitech.com/" I am not the only one that could benefit from this gathering of information that I believe should have already been provided.
A: -What you are trying to do is what myself and people like me did in the 70s when the first microprocessors came out (Intel 4004, 4040, 8008 and then the first "usable" 8080). We had to do it because there were no operating systems available. I remember having to enter 1000 lines of machine code using hexadecimal thumbwheel switches for a program that just printed out telemetric data from a photographic test instrument. It took me a week including the debugging. You want to type in a programme and store it on a floppy or hard disk without the use of operating system. Impossible! That's what an OS does! It knows how to store data and how to retrieve it later! Without it you would have to write your own routines for the various tasks required and basically would end up writing your own OS! Just to type in anything and have it displayed on screen requires some kind of a program running! I think you have completely wrong understanding of computers. But, if you want to really do it I'll give you some starting hints: First, get Intel programming reference manual for 86 range of processors Then get a some kind of a monitor program that allows you to enter data into memory using a hex keypad. Then get stacks and stacks of paper because you will have to write the program in mnemonic form and convert it by hand to hex format. It will take you a day to write a program that will just add 2 and 2 and display the result on screen. I hope you've got the time (BTW, that's what an assembler does, it converts your mnemonic instructions and data into binary form for the processor to execute.) -There was a series in Circuit Cellar ca. 1994 that covered using a computer as an embedded controller. The program was loaded by the bios on the motherboard into RAM from a floppy drive and it ran. The author supplied a toolkit of software to get this to work (the bootloader is the only tricky bit). Dave Dunfield's free tools were used. For example, reading a sector from a disk in assembly is only about 30 lines of assembly code = 30 instructions (of course that doesn't do all the work, it calls a BIOS routine). Assembly is about as clean as it comes. You have the option of using abstractions such as naming variables or you can painstakingly assign each absolute address (why?). There is generally a 1:1 correspondence between assembly instructions and machine instructions. A PC is inherently a quite complex machine, even without an operating system- there is a large piece of firmware on board (the BIOS) to perform