In which language was the first assembler codede... it is possible to write an assembler in assembly language... how???
It was probably coded in machine code.
ozzy_85,
I don't really know the answer to that.
But I first wrote one for the Z80 by writing it on paper in assembly then hunting
up the OP codes and poking them into a E-Prom.
So I know it can be done in HEX after you yourself have done the converting
by hand. The problems with this is you make a misstake you have to stop and
erase the E-Prom and start over, so you don't want to do something like this
late at night.
Zcoder....
thnx man.... :U
The first one I played with was written in BASIC. It was slow, of course, but got the job done. Later I moved on to an assembler written in assembly, which was much more compact and much, much faster.
Huh... interesting question:) it's like - what was the first chicken or egg... But i know (read it in Flambeaux's Tech Help!) that old CPUs had BASIC interpreter in them... true? dont know...
Yes, the IBM PC had a BASIC interpreter, produced by Microsoft AFAIK, stored in four 8K ROMs, with the BIOS in a fifth 8K ROM.
According to this (http://www.columbia.edu/acis/history/650.html) Nathaniel Rochester wrote the first assembler in 1954 for the IBM 701. And according to this (http://www-03.ibm.com/ibm/history/exhibits/701/701_team.html) he had the ability to "prepare programs and test these programs on paper", and wrote the first assembler at home, apparently on paper. But this still does not answer the question of what language, because there is no indication of how he did any of this. Did he work directly in machine code, or was he using some sort of manual symbolic assembler?
I've read of something called microcode which is used by chip manufacturers and is kept as a proprietary secret. I was just wondering what it is and where it fits in the scheme of things? Somewhere between machine code and opcodes maybe?
hi MayanardG,
a microinstruction does not lie between a machine instruction and an opcode... microinstructions are at a lower lever than machine instructions, as a matter of fact all machine instructions can be mapped to one or more microinstructions ie., a machince instruction implements a microinstruction just as a high level language implements machine instructions.
and i don't think a programmer has direct access to microinstructions...
writing an assembler in microcode may not be possible...
regards.
Anyone with a mind, knows the true answer to this is question.
and it has to be that it was first hand coded as bytes or hex
onto some form of media.
this is like evalution, man may have came from cells that formed him the hard way.
but after he was made, sex made it easier to produce him there after.
the question then is how did these cells know to make a male amd female???
Zcoder....
Quote from: asmfan on April 24, 2006, 07:13:03 PM
Huh... interesting question:) it's like - what was the first chicken or egg... But i know (read it in Flambeaux's Tech Help!) that old CPUs had BASIC interpreter in them... true? dont know...
Not true for the "ancient" computers.
BASIC was created in 1963 at Dartmouth College, according to
Wikipedia (http://en.wikipedia.org/wiki/BASIC_programming_language). There's a link to a PDF version of Dartmouth's original manual in the article.
But a number of commercial computers were created during the 1950s.
There is something missing in the responses, the first assembler was coded in HARDWARE and this means that the first processing capacity contained something like an instruction set. You are going back to the 1940s to people like Von Neuman and similar. Computers of the 50s were powered by radio valves (vacuum tubes). By the early 60s you had core memory storage and recordable media on both magnetic tape and early rotating hard disks. Microprocessors came about somewhere in the 70s with transistor technology when enough transistors could be built on the same silicon wafer. Earlier transistors were based on germanium, lower resistence but higher leakage.
From the earliest working examples in the late 40s, early 50s they sequentially ran instructions and these instructions were built in hardware. It was only after the machnes got big enough to try and run more complex sequences of instructions that a level of abstraction was required which was a shift fom OCTAL notation directly into the core memory to something as high level as an assembler.
From then till now, the rest is by degree but the basic Von Neuman architecture is still there for single processors, multiple parallel processors are still currently Von Neuman machines with synchronisation hardware and other variations like common memory.
Mr. Hutch--,
Thank You for your Article!!! :U
It was always interesting to me how the first assembler has been written.
Now I shall sleep much more better. :bg
Yeah, I remember the '70s. Poking instructions into D4 EPROM Burners with a hexadecimal keypad for a keyboard and 6 LEDs for a monitor. Not anything I would want to do again but it was fun then. I remember once sitting on a rug in the living room programming EPROMs to be used in machinary in the Plastics field and I, without thinking, took the EPROM out of the ZIF and placed it on the rug. I caught a tiny spark out of the corner of my eye and the EPROM instantly became a ROM. Was I ever PO'd!
I hate typos, so I edit...
Paul
Hi All,
Quote from: hutch-- on April 26, 2006, 12:56:01 AM
There is something missing in the responses,
Yes
Quote from: hutch-- on April 26, 2006, 12:56:01 AM
You are going back to the 1940s to people like Von Neuman and similar.
In the 1940 a computer was a person who computed, just as in the 1900s a typewriter was a person whe used a machine to write with. It would seem in the context of the day that an assembler was a person who assembled programmes and the first one may well have been Miss Ada Lovelace in the 1840s
Quote
From the earliest working examples in the late 40s, early 50s they sequentially ran instructions and these instructions were built in hardware.
It is not the instructions but the mechanisms to execute the instructions that are built in hardware.
Maybe, in the 1930s and 40s fixed sequences of operations were built in or wired on patch boards but these machines were really what we would now call callculators.
By the 1950s the concept of stored programme has been realised and programming a computer has become a distinct process seperate from designing a computer.
Quote
It was only after the machnes got big enough to try and run more complex sequences of instructions that a level of abstraction was required which was a shift fom OCTAL notation directly into the core memory to something as high level as an assembler.
The Manchester mark 1 used base 32 not octal. AUTOCODER was writen for it in 1952. It translated symbolic statements into machine code which was then known as 'order code'. I don't know if it was strictly one to one so it may have been somewhat more than just an assembler but it must have been the first.
Quote from: PBrennick on April 26, 2006, 12:48:35 PM
Yeah, I remember the '70s. Poking instructions into D4 EPROM Burners with a hexadecimal keypad for a keyboard and 6 LEDs for a monitor. Not anything I would want to do again but it was fun then. I remember once sitting on a rug in the living room programming EPROMs to be used in machinary in the Plastics field and I, without thinking, took the EPROM out of the ZIF and placed it on the rug. I caught a tiny spark out of the corner of my eye and the EPROM instantly became a ROM. Was I ever PO'd!
I hate typos, so I edit...
I built a home brewed 8080 in 1973-1974 but I was lucky, I could programme the PROMs on a 4004 based Intelec MCS4 system at my place of work.
I typed in the 8080 machine code in hex which was dumped onto punched paper tape.
The first programme I wrote was an cross-unassembler. The unassembler was loaded from tape and this read the 8080 tape and printed it out ias an assembly listing so that I could check it. Then I would use the Intelec to programme the EPROM. At least it found some typos and and saved aiteration of the 24 hour development cycle (72 hours weekends).
Regards Roger
Roger,
You seem to be confusing the object and who operated it. A typewriter is a machine with a bunch of keys that an operator presses in order to produce print on paper. As far as computer development, a read around on Von Neuman will give you some idea of the development of what we now call computers. You will get sequential instruction operation and memory storage in this design range.
> It is not the instructions but the mechanisms to execute the instructions that are built in hardware.
Anyone who has ever prgrammed an EPROM already knows that this statement is incorrect. Opcodes must first be constructed in hardware and this is done at the design stage of the hardware, not post production operator based usage.
> The Manchester mark 1 used base 32 not octal.
There were numerous other methods as well based on the hardware's WORD size but OCTAL was common for a very long time on successful hardware well into the 60s and many of the old fellas could work directly in octal from a numeric pad.
Hutch,
Quote from: hutch-- on April 27, 2006, 02:37:29 AM
You seem to be confusing the object and who operated it. A typewriter is a machine with a bunch of keys that an operator presses in order to produce print on paper.
see http://en.wikipedia.org/wiki/Typewriter para 2
I was pointing out the difference in usage of words between then and now. In the early days of the last century a young lady could obtain employment as a typewriter. She would be expected to use a machine with a bunch of keys that she would press in order to produce print on paper. I have no idea what she would have called the machine but I doubt that either she or her employer would have ever imagined that over 100 years later people would be arguing about naming the machine after her job title. :lol
Similarly for computers before the word was used for certain machinery in rooms full of machinery( they didn't call them boxes then!!) and so by analogy think about assemblers.
Quote
As far as computer development, a read around on Von Neuman will give you some idea of the development of what we now call computers. You will get sequential instruction operation and memory storage in this design range.
You might like http://www.kzwp.com/lyons/leo.htm
Quote
> It is not the instructions but the mechanisms to execute the instructions that are built in hardware.
Anyone who has ever prgrammed an EPROM already knows that this statement is incorrect. Opcodes must first be constructed in hardware and this is done at the design stage of the hardware, not post production operator based usage.
The set of instructions which can be used is determined at the hardware design time. The mechanism consisting of numourous registers, gates etc. which executes that instruction set is designed and the hardware is made and sold (unless you know a company that gives it away). Seperately to this programmes can be writen and then run on the hardware. I have a processor with copyright dates 1978- 1982 which was put on a circuit board in 1991. On Friday, all being well, it will run instructions in a programme that I shall write tommorow. Tell me how these unwriten instructions can be in 15 year old CPU hardware.
The fact that they will be in EPROM rather than RAM, Core, Mercury delay line or other storage media is no more relavant than putting a value into .const or .data in MASM
This is what i meant by:-
" By the 1950s the concept of stored programme has been realised and programming a computer has become a distinct process seperate from designing a computer.""
Quote
> The Manchester mark 1 used base 32 not octal.
There were numerous other methods as well based on the hardware's WORD size but OCTAL was common for a very long time on successful hardware well into the 60s
I only mentioned it because It related to AUTOCODER. The point I was unsucessfully trying to make was that in those days the task of coding was different to now. Now we think in symbolic assembly language (and often expect macros to raise the level higher) and let the assembler and perhaps Linker do the clerical work of listing hex opcodes and various arguments and then counting them and substituting real addresses for simbolic ones.
Then, depending on the machine each instruction might have to include the address of the next. This being worked out from the time taken by the present instruction and the rotational speed of the storage drum to determine which address had the least latency. The early programming languages probably developed towards higher level functionality before the handling of low level clerical tasks was considersd. The high level languages would have done the clerical task of assembling.
The assembler as we know it probably came into common in the early days of microprocessors. Certainly Intel vided an assembler for the 4004 and an assembler for the 8080 (I don't remember what they had for the 8008) but even then they prefered to give programming examples writen in PL/M. (Programming Language/Microprocessor)
Regards Roger
PS
Quote
many of the old fellas could work directly in octal from a numeric pad.
Not so much of the old, young man
Roger,
Where I live in OZ we had computers very early in the scene, the one that comes to mind is the one built in the 50s at Sydney University but I could find the link to the first one built by the CSIRO dated 1951 complete with its earlier development http://www.cip.csiro.au/History/CSIRAC1.htm
Shifting from the actual gadget by whatever technology to an abstraction based on a theory of functionality does not do the job here. Is a 2000 year old abbacus a computer ? It can certainly be used to calculate things that computer currently do but I suggest that its not the same concept. Likewise, if you ever had the joy of seeing the guts of an early 60s NCR cash register for a supermarket you would see the sum total of gears and cams that made a mechanical calculator which of course a computer can also do but its not a related concept.
Sequential opcode processing with access to stored information is the type of stuff that made a Von Neuman type computer and while the hardware has got much faster and with far greater capacity, it is still basically the same concept, crunching one instruction after another with access to common memory.
I am not old enough to have seen the stuff in the early 50s, i was born in 1948 but i did work for Readers Digest in the middle 60s when they bought an IBM System 360 with 64 k core storage, reel to reel tape for mass storage, massive HDDs and this truly stunning 6 foot wide printer that used to spit continuous rolls of invoices out the top faster than the paper folder could manage it. It was managed by a team of well dressed COBOL programmers, complete with paper flow charts and a couple of dozen punch card operators, one of whom I used to go out with.
The "old fellas" (over 40) saw them as a bunch of high level fairies floating in fantasy land and these guys could perform a core dump, modify code on the fly and get it going again, the REAL MEN[tm] worked directly in OCTAL, assembler if they were lazy and apparently Fortran if it did not matter much.
Now in relation to the idea that an abstract programming language predates the hardware that enabled it, I suggest that you have the cart pulling the horse here. Most of the early stuff was written out on paper first, then enterered manually according to a list of instructions and tested. The point I am making here is that the opcode list predated the notion of abstract language which was a later development. If I remember correctly, people like Von Neuman saw high level languages as un-necessary.
hutch-- ,
If something has someform of a storage device and it can be switched to do different things is this a computer?
as I have seen a very old quilt machine that will make a quilt with a picture in it and the quilt machine just needs
a disk or plate changed on it to make different pictures, this plate has cams on it that make the quilt
Machine do each diffrent pattern.
So what I was wondering is if this would fall into being the form of a programmable computer??
Zcoder...
Gentlemen,
All I can say is that all the EPROMs that I programmed and it was VERY many, were programmed using OCTAL and not HEX. As these EPROMS were used as 'hardware to hardware' the addressing made more sense to an Electrical Engineer when expressed in OCTAL than any other numer system. Binary was a pig and hex was to archane and neither would lend itself to a schematic which is what we actually built on to the EPROM. It was like being in the back of a console wiring hundreds of control relays and timers except they did not really physically exist. The EPROMS were matrixed to NPN2007 transisters that drove opto-isolators to 5 volt relays which handled the higher voltages or drove the load contactors for the output section. The input section mas memory mapped to opto-isolators for digital inputs and AtoD chips for the analog stuff. But, definately, only OCTAL was used.
Paul
I would like to know, just how many of us here on this forum
have build their own computer by wire wraping or etching their
own design out and building a eprom programmer and program
that eprom all without a kit, or without buying a scematic just
sat down with the pinouts drew a scematic and began building?
I have done this way back in the 80's at that time I did not know
any language, but after I build it I played with the assembly from
a op code sheet for the z80 and got it to give me a sign that
it was working. from there I kept writing stuff into the eprom
to allow me to poke hex into ram so I would run program in
ram to learn assembly faster.
So how many of us on this forum have similer experiance's?
Zcoder....
I did, many times :)
I know how to make a computer from eiither transistors, logical gates, or small integrated chips...
I also know how to make a Z80 "thick" with some wires and switches fixed on an wooden plate with some duct tape :D
I have also done that many times. Single board computers were easy to build and with the use of an RF Converter, I could hook it to the TV. I also used to etch my own boards using Ammonia Perchloride and or some other chemical that I forget the name of (Copper Fulminate, I think, but don't trust my memory). Either worked. In the very beginning we used to build our own erasers. With the use of ZIF sockets (never used LIF because of the CMOS/HMOS problems, it was very easy to make printed circuit boards.. I new a lot of people who went the Heathkit route but not me, I wanted to do it all and not just assemble a kit. Those were fun times.
Paul
Hi Paul, do you mean Ammonium Persulphate and Cupric(II) Chloride? Building PCB's is fun and relaxing work. One of my recent projects was a PCB etcher using Cupric Chloride etchant (not recommended for the hobbyist!) The tank is a narrow 12"x12" rectangle made out of acrylic sheet (lexan), so a standard aquarium heater wasn't practical. Instead I used a temperature sensor, PIC microcontroller, linear stepper actuator, and a 150W halogen lamp to heat the solution. The light is absorbed by the dark green liquid and is warmed, while a PID algorithm moves the light farther away as the setpoint temperature is reached.
I wanted to say that I've discovered a way to "clean up" excess Cu2Cl so it can be disposed of. Cupric chloride etchant "grows" with use and is very toxic to the environment. But to neutralize it, simply drop in hunks of magnesium. Mg is more reactive than copper so the copper ions are precipitated out of the solution and MgCl2 is formed, which is non-toxic. I found 5 pounds of magnesium on eBay for dirt cheap in the form of surplus magnesium printing plates. (If you wanted to, you could then recover the Mg from the MgCl2 solution by using electrolysis, but then have to deal with the chlorine gas...) :toothy
...l and I guess the magnesium is a bit more stable than potassium. Mark, I am searching my archives to locate the name of the other chemical that I used that was less hazardous than Ammonium Persulphate.
I am interested in pursuing this discussion so to be fair to zcoder, if you are interested, why not start a new topic so we can compare notes. My records show that it was Copper Chloride that I used. I did not realize that it is the same as Cupric(II) Chloride until I googled it. Imagine my chagrin when I saw this information was EVERYWHERE! According to my notes, I played with Sodium Persulphate though I have no memory of it. I also used 2 masking methods.
Paul