My first language and interesting early software projects.
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
APL (yes a horrible language to start with but that's what was available on the first computer I had access to) BASIC SPECTRE[^] Assembler Pascal 6502 Assembler C Forth Lisp PL/1 Modula 2 x86 Assembler Prolog Data General Assembler VAX Assembler Objective C PostScript C++ AWK Perl SQL Java XSLT C# ECMAScript ActionScript Groovy
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
I started with FORTRAN that had to be punched into cards and submitted to the University computer center, which probably had about 256K of memory. Results were returned as a printout in about an hour.
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
30 years ago a friend and I used to visit the mall where they let us play with the computers in exhibition. Those were commodore 64 computers with no floppy or cassette recorder available. We liked to play "snake" but it was hard to convince the salesmen to let us use it. So we learned to program in Commodore BASIC and we did our own version of the game. So when we wanted to "play snake" we arrived to the mall and started writing the game, from memory, with no way to record it to any physical media. After writing and testing it we played for hours. Those were happy days! :)
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
IBM 1401 assembler or maybe machine code before I actually had access to one. One interesting project was a 2 line (just could not get it down to one line) APL function to look up a keyword in a table of the form keyword space value and return the value.
-
H.Brydon wrote:
I also wrote an operating system in machine language for PDP-11/05 with 2 X 8K core memory as storage
By any chance did you go to Wright State University[^] in the late 70's through early 80's? That matches a two course sequence I took there, 'Introduction to Real-Time Programming'. The first course was really "learn PDP-11 assembly language". The second introduced concurrent programming. The labs included a PDP-11/15 running RSX-11 that we used to edit and assemble our source code, and then two PDP-11/05's for testing. The 05's included core memory that mainly stored the RT-11 bootstrap code, which student apps routinely overwrote. You then had to toggle in the bootstrap, about 80 words worth, via the front-panel switches. I had to do it a couple of times. One guy in our class had to do it so often he could do the whole thing in less than 60 seconds. This was probably my second-favorite class in school :cool: (first favorite being the computer graphics sequence).
Software Zen:
delete this;
Gary Wheeler wrote:
By any chance did you go to Wright State University[^] in the late 70's through early 80's?
Nope - off by almost a decade. I started the /360 stuff in 1969 with high school in Winnipeg, then University of Manitoba and beyond. My PDP-11/05s (2 of them) were retired equipment from work that I got to take home (without most of the attached digital lab equipment, sniff).
-- Harvey
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
1967 Fortran IV 1968 IBM 360 assembler 1968 IBM 360 channel program (program peripherals to talk to each other without CPU) 1969 COBOL but now it gets interesting! In 1974'ish I convinced the company I was working for to purchase an Interdata 7/32 (first 32 bit minicomputer) It came with an operating system that made cp/cpm look good. It also came with minimal peripherals. It booted using the paper tape part of a telex machine. It had a 2.5 megabyte hard drive and a primitive CRT as a console. I and two helpers decided we would write a better operating system for it. Goal was multi-user virtual memory system (machine was organized into 16 64k segments,1 Megabyte total) Since we did not have driver code for the hard drive at first, the object files output from the existing Assembler (Interdata's) were sent to paper tape (slow telex) which we used to build the various parts of the new operating system (extreme bootstrapping) We ran into a hardware problem in that sometimes a register would be clobbered on segment/page fault The CPU was all ttl chips so I modified the CPU to not clobber registers. Within about 6 months we had a VM machine that could support 8 users and 1 background task. By then we had an Ampex 40 megabyte hard drive (bigger than a washing machine) The operating system used 64K and was not itself paged, and the hardware was limited to 1 megabyte. Next we needed an IBM Fortran IV compatible compiler. In about 4 months we had one that ran in about 48K with no paging. Since segment/page size was a maximum of 64k and users had access to only 14 of them as special linker was written that analyzed the function calls and clustered as much as possible into the same segment. We converted 100,000's of lines of Fortran from IBM to this system successfully. Next came a new CPU an 8/32 which was faster and had 16 megs total, but only 1 meg per task. We converted huge seismic programs (million's of lines of code) to it. Interesting that our system both compiled and ran the resulting programs faster than the existing IBM mainframe's at 1/10th cost. At least one of these systems is still in use due to the special peripherals we interfaced to it. I am currently contract programming (mostly in c/c++)
-
1967 Fortran IV 1968 IBM 360 assembler 1968 IBM 360 channel program (program peripherals to talk to each other without CPU) 1969 COBOL but now it gets interesting! In 1974'ish I convinced the company I was working for to purchase an Interdata 7/32 (first 32 bit minicomputer) It came with an operating system that made cp/cpm look good. It also came with minimal peripherals. It booted using the paper tape part of a telex machine. It had a 2.5 megabyte hard drive and a primitive CRT as a console. I and two helpers decided we would write a better operating system for it. Goal was multi-user virtual memory system (machine was organized into 16 64k segments,1 Megabyte total) Since we did not have driver code for the hard drive at first, the object files output from the existing Assembler (Interdata's) were sent to paper tape (slow telex) which we used to build the various parts of the new operating system (extreme bootstrapping) We ran into a hardware problem in that sometimes a register would be clobbered on segment/page fault The CPU was all ttl chips so I modified the CPU to not clobber registers. Within about 6 months we had a VM machine that could support 8 users and 1 background task. By then we had an Ampex 40 megabyte hard drive (bigger than a washing machine) The operating system used 64K and was not itself paged, and the hardware was limited to 1 megabyte. Next we needed an IBM Fortran IV compatible compiler. In about 4 months we had one that ran in about 48K with no paging. Since segment/page size was a maximum of 64k and users had access to only 14 of them as special linker was written that analyzed the function calls and clustered as much as possible into the same segment. We converted 100,000's of lines of Fortran from IBM to this system successfully. Next came a new CPU an 8/32 which was faster and had 16 megs total, but only 1 meg per task. We converted huge seismic programs (million's of lines of code) to it. Interesting that our system both compiled and ran the resulting programs faster than the existing IBM mainframe's at 1/10th cost. At least one of these systems is still in use due to the special peripherals we interfaced to it. I am currently contract programming (mostly in c/c++)
My first computer encounters was a calculator with a CRT screen at the pacific science center you could tell it divide by zero and lock it up.
The next was in the army hacking a field artillery computer (FADAC) to drive a teletype paper tape punch for target lists. Teletype operators always made too many errors with numbers.
The FADAC had rotating disk memory with heads on each track. It also had no program counter so you had to specify the location of the next instruction which had to be at least six sectors away from the current word or you would have to wait for the disk to spin around again and I implemented a software UART in that environment! Oh and it was 32 bit machine!
My first personal computer was a sphere 6800 based machine with 4K of dynamic memory that barely worked. To get it to work I implemented hardware interrupt to a real time clock to read a specific memory location to keep the memory from fading away!
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
Early 70's my to-be business partner and I bought a Redcor RC70 (the company had gone bankrupt). As I recall it was 16K of 18 bit magnetic core memory. We wedded it with an Execuport portable TTY like keyboard with thermal printer and a star-wheel paper tape reader from Autonetics surplus store. I forget the source of the paper tape punch we started with. I then started programming in Fortran and assembly. It was almost impossible to get the Fortran compiler tape to load with the flaky star-wheel reader. We shortly replaced it with another Autonetics surplus item -- a 1000 CPS, stop on character, Ferranti paper tape reader. It was wondrous and continued to work for years. This was a mechanical marvel with pancake motors for the paper tape reels and it would shake the 6 ft, rack it was mounted in. You did not want to get your hands tangled in the reels -- it could inflict severe damage. Eventually we added a General Automation 18/30 (an IBM 1130 look alike) with (gasp!) 5 MB hard disk drives that we bought at a bankruptcy auction. We did a lot of paper tape code conversion for PCB drilling machines and flex layout software that I wrote mainly in Fortran with assembly used for the interface boards we did for the paper tape punches, pen plotters, and Teletype chain line printers. Not exactly a microprocessor, but quite a do-it-yourself project.
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
First was DEC PDP8 FOCAL, an interpreter that had to be loaded in first from a mylar Tape Reader. Then followed a lot of others: Fortran IV Algol-60 PL/1 IBM 360 Assembler COBOL 74 - 80 Burroughs L-Series Assembler 8086 Assembler Z80 Assembler Datapoint Datashare Interpreter Bourne Shell BASH Shell Perl C# and others I cannot think of ... Mostly fun.
"Courtesy is the product of a mature, disciplined mind ... ridicule is lack of the same - DPM"
-
Folks, does anyone here pre-date me? First computer language, 1965: EDSAC2 Autocode in a programming course taught by Dr. Maurice Wilkes (who wrote the first book on computer programming, published in 1951). But there was a huge resource-constraint! Computer time was so valuable that we students were not allowed to run our programs. Dr. Wilkes desk-checked them. Then, for an interesting "software" project, later in 1965, I worked as a programmer for Electronic Associates who manufactured analog plug-board computers. One of my first projects was a real-time oil-field simulation on an EAI 360 which was somewhat bigger than this: http://www.technikum29.de/shared/photos/rechnertechnik/eai180.jpg - programming was done with wires.
Wilkes in person, wow !
-
I started with FORTRAN that had to be punched into cards and submitted to the University computer center, which probably had about 256K of memory. Results were returned as a printout in about an hour.
Join the club ;-)
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
Wrote an "operating system" for a 6502 to allow its use to receive 8 modem channels simultaneously and buffer and write the data out to a 9 track tape drive. Multi-tasking, but no disk drivers. It fit onto a 4K ROM. The devices sending it information were handheld computers used for stock control, running a RCA 1802 8 bit CMOS CPU (same as on the Galileo space probe). It ran with a 1 Megahertz clock, the fastest instruction was a NOP which took 8 clock cycles, so 0.1 MHz in reality. The devices were limited to 1200 baud because they lacked a dedicated serial chip so I had to raise and lower a CPU IO line in software and use loop timing to generate the 8 bit characters for RS-232 one bit at a time. 1200 baud was as fast as I could do it in software. Also 4K of ROM for the whole thing. All this was 1979.
-
Pascal Fortran, COBOL (in university) C Lisp OPS5 C++ Java C# /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
-
Update: Responses have reminded me of several laguages that I had forgotten. The responses to my post about my first computer got me thinking about my first languages. I think they were Basic MC 6800 Assembler Fortran (WatIV) C B Z80 Assembler 8086 Assembler (and worked on a Small C port on an original IBM PC) Turbo Pascal Turbo C Delphi Pascal PL-M MC 6809 Assembler (wrote a whole OS for traffic control systems) Forth (the MC6809 seemed to be designed to implement Forth) Clarion C++ (including Turbo C++) C# During this, a number of micro-controller assemblers. One of my favorite projects was a dual printer controller for a point of sale terminal. Had a roll and slip printer. I had to control the head motion, fire the print head pins and bit bang a serial port and include the fonts. All on a MC 6805 with 3096 BYTES of ROM and 112 BYTE of RAM (including stack). For another set of products, I developed an Operating Kernel and developement environment for an Embedded system using Turbo C++. All the Tasks were initialize with static initializers, so you could just link in new processes. The whole compiled Kernel took less than 15K. What extremely resource constrained development do you remember from the stone age?
I wrote an application on the original Tandy pocket computer (PC-1) that assisted a surveyor in closing a survey. The computer had ROM-based Basic 1.5 K (that's right K) of RAM The RAM had to be sufficient for both the program and variables. Some judicious reuse of variables was necessary to get it all to fit and run properly.