Stories
Slash Boxes
Comments

SoylentNews is people

posted by Fnord666 on Thursday January 04 2018, @08:23PM   Printer-friendly
from the a-little-bit-at-a-time? dept.

With the recent brouhaha about vulnerabilities in many relatively recent processors, I got to thinking back to the time when I first started programming. Back then, things seemed so much simpler and much more straightforward.

To start off the new year, I thought it might be interesting to find out how people got their start in programming.

My first exposure to programming was by means of a Teletype over a dialup line using an acoustical coupler to a PDP-8 computer running TSS/8 and which had 24 KB of RAM. At the time, Star Trek ToS was on the air, and I thought this was the new, big thing. I was quickly disappointed by it not measuring up to anything like what I saw on TV, but I saw it had promise. Started with BASIC (and FOCAL). Later on was exposed to a PDP-11 running RSTS/E and programmed in BASIC+ as well as some Pascal.

As for owning a computer, the first one I bought was an OSI[*] Challenger 4P with a whopping 4KB of RAM!

From those humble beginnings, I ate up everything I could lay my hands on and later worked for a wide variety of companies that ranged in size from major internationals to tiny startups. Even had a hand in a project for Formula 1!

So, my fellow Soylentils, how did you get started programming? Where has it taken you?

[*] One day when my girlfriend came over and saw the OSI logo on my computer her eyes got huge! You see, The Six Million Dollar Man was on television at that time, and she suddenly suspected I was connected to the "Office of Scientific Intelligence"!


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 3, Interesting) by maxwell demon on Thursday January 04 2018, @09:42PM (6 children)

    by maxwell demon (1608) on Thursday January 04 2018, @09:42PM (#617979) Journal

    My first programming experience was a ZX81 (but already with the big 16 KB memory expansion pack attached). It certainly was helpful that the only thing you could do with it out of the box was to program it.

    I started with the built-in BASIC (using the manual that came with it) and then started to learn machine code from a magazine. Yes, not just assembly, machine code. I converted all those instructions into Hex codes by hand.

    Later I then got a ZX Spectrum 48K, which I used a lot (again, mostly BASIC, a bit of machine code, and later I also got a Pascal compiler for it, HiSoft Pascal).

    It's incredible how much obsolete knowledge you collect over time. I probably will never again need the fact that the Z80 ret instruction had opcode C9, but I probably won't ever forget it.

    --
    The Tao of math: The numbers you can count are not the real numbers.
    Starting Score:    1  point
    Moderation   +1  
       Interesting=1, Total=1
    Extra 'Interesting' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   3  
  • (Score: 5, Interesting) by coolgopher on Friday January 05 2018, @12:52AM

    by coolgopher (1157) on Friday January 05 2018, @12:52AM (#618130)

    Finally someone who mentions the ZX Spectrum! I think I was about 6 when I inherited one from my significantly older cousin. It came with a spiral-bound book full of BASIC programs, which I spent hours typing in. The only one I had success with was a graphing one which produced something that looked like a sombrero. I *almost* got the "asteroids" game working fully, except I couldn't work out how to type in the heart-in-a-square-with-inverted-colours character, which I believe is what would've made the erasing of the old spaceship sprite work rather than leave a trail of spaceships across the screen. Not reading English at that age (not my native language), I didn't get very far and kind of lost interest for a while.

    A few years later I eventually joined the wave of C64 owners (took me a long time to save up!), and got to tinker with it's version of BASIC. With the C64 being second hand, the available documentation was close to nil however, and almost everyone else who had one used it for gaming only. There were a couple of us who tried to get into programming, but there was also no documentation to be had via the local bookstore nor the library. Again, I didn't get very far with programming on the C64. Gaming on the other hand...

    Add another year or so, and we got to the first actual programming course. This was on some Ericsson hardware with dual 5 1/4" drives. Again, BASIC. Armed with the experience from the C64, we ran circles around the teacher... and while fun, it wasn't all that useful.

    The real breakthrough came in year 8, after I'd gotten myself a part time job at the local supermarket (pretty sure I was too young for it legally speaking, but it benefited both parties so we never brought it up). This allowed me to save up the comparatively yuuge sums required to by a Real PC. Thus, I acquired an IBM PS/1 with a 486sx-25MHz. Then in a stroke of luck, one of my colleagues at the supermarket introduced me to one of his friends who was seriously into computers. Through him I learned the ins and outs of assembling hardware and doing upgrades, and a never-ending stream of software from one of his mates who ran a BBS. I still have the jar of miscellaneous screws, nuts, standoffs and other bits and bobs he gifted me by splitting his such stash.

    Anyway, one of the times I was over visiting he was tinkering with something new. He was building a maze generator in something I'd never seen before. This something turned out to be Turbo Pascal, which I promptly got a less-than-legitimate copy of and started experimenting with. I finally had the tools to build "real executables"! Between the in-built help reference and various text files sourced from the local BBS, I was able to start building useful things for the first time. I wrote a handful of save game editors (which incidentally is how I learned that the AI in Civilization cheats), an address book with approximate search capability, and various other small things. It was a lot of fun, but I still felt limited by the tools at my disposal. Sprinkling the code with inline assembler 'db 66h' gets tedious after a while...

    The second breakthrough came in '95 when I got to go on exchange to Australia, and in a bookstore in Canberra found several books on programming in C and C++. After negotiating a serious discount with the sales manager I left lugging a backpack full of books and a very light wallet. Once having picked up rudimentary C (using Turbo C that came with one of the books), I splashed out on a genuine copy of Watcom's C/C++ compiler suite. This gave me access to Windows programming as well, and the event driven approach was somewhat of a revelation at the time. I used Watcom for quite some time until I found gcc after having installed FreeBSD (since I couldn't get NetBSD to install on my hardware at the time).

  • (Score: 3, Interesting) by Arik on Friday January 05 2018, @01:47AM (4 children)

    by Arik (4543) on Friday January 05 2018, @01:47AM (#618154) Journal
    Nice!

    I'm pretty sure my first *experience* was with my cousins TRS-80. He had written a few useful programs, two in particular I remember; one did ballistics, the other was a dungeon masters assistant.

    I had to get my own. Money was tight but somehow I managed to get my dad to spring for a Timex/Sinclair kit. Then he had to teach me how to use the soldering gun. Good times.

    "I started with the built-in BASIC (using the manual that came with it) and then started to learn machine code from a magazine. Yes, not just assembly, machine code. I converted all those instructions into Hex codes by hand."

    From a magazine? IIRC my kit came with a manual which listed all the z80 opcodes in an appendix. Just optimized the most important subroutines into peeks and pokes using that. This was from age 9 to 11 or 12. Then I lost interest in computers completely for a few years.

    Good times.
    --
    If laughter is the best medicine, who are the best doctors?
    • (Score: 1) by anubi on Friday January 05 2018, @06:06AM (3 children)

      by anubi (2828) on Friday January 05 2018, @06:06AM (#618231) Journal

      You were sure lucky to have been able to acquire your knowledge of how computers actually work in a day and age where doing such things was legal.

      I learned mine on an IMSAI 8080. Mostly hand-assembled machine code. Until I got the assembler working anyway. Which was another 4K bytes ( 2 * 2716 EPROMS ) of hand entered machine code. At that time, a large brown paperback book had been published with the code for the assembler, but I still had to rely on my own routines for input/output/file save devices.

      All of my hardware was what I could get my hands on. A TV and a video card for 16 lines * 64 character memory-mapped video, and a salvaged dot matrix printer where I only got the print mechanism, drive motor, line feed solenoid, and the eight solenoids on the print head. It was up to me to design the hardware/software to interface to make something readable come out.

      My file storage was a cassette deck where I wrote directly to the head ( Signetics 8T97 drivers, IIRC, and read with an LM382 circuit and I believe an 8T20 monostable to decode the manchester code I was using. Really simple file system. Just a block number followed by the load address then 2K bytes. Because that was the size of a 2716. ( At the lowest level, I had sync bytes for the manchester decoder to lock up on... but once locked, the payload was 2K bytes ).

      I had everything on that old IMSAI was segmented into 2K blocks - so I could either read or write any segment of the memory to/from tape.

      Fixed size so I could overwrite a block without having to reformat the whole tape.

      The onus was on me to keep track of what block on tape was for what. If I said "R2A", my monitor would wait for hex block "2A" to pass under the read head, then it would put the data in the 2K block the header pointed to. Same with writing. The monitor would show me where I was on the tape, so as to cue me to manually rewind or fast forward the tape to get it closer to the beginning of the desired data.

      Uhhh, one can do damned nearly anything in machine code!

      Boy, its been a trip down memory lane just typing this post in...

      --
      "Prove all things; hold fast that which is good." [KJV: I Thessalonians 5:21]
      • (Score: 2) by Arik on Friday January 05 2018, @07:18AM (1 child)

        by Arik (4543) on Friday January 05 2018, @07:18AM (#618252) Journal
        "You were sure lucky to have been able to acquire your knowledge of how computers actually work in a day and age where doing such things was legal. "

        I truly weep for those who have grown up in a world where it makes no sense that the library hasn't been raided yet.

        "I learned mine on an IMSAI 8080."

        Nice.

        "Which was another 4K bytes ( 2 * 2716 EPROMS ) of hand entered machine code."

        And by 'hand entered' you mean you toggled physical switches for the ones and zeros then pushed the button once they were all right, one instruction at a time, is that right?

        "Uhhh, one can do damned nearly anything in machine code!"

        s/do damned nearly anything/gain full access to the hardware one owns

        Anyhow, if you really entered and debugged your own assembler using toggle switches Imma gonna get back off your lawn now.

        You have a nice night sir.
        --
        If laughter is the best medicine, who are the best doctors?
        • (Score: 3, Interesting) by anubi on Friday January 05 2018, @11:16AM

          by anubi (2828) on Friday January 05 2018, @11:16AM (#618289) Journal

          And by 'hand entered' you mean you toggled physical switches for the ones and zeros then pushed the button once they were all right, one instruction at a time, is that right?

          Yes. Flip a row of toggle switches up and down. Load address. Flip switches again. Load data. Flip switches again. Load data. ... ad nauseum .. until all loaded.

          Go back. Step through again. Make sure you did not misload any. One crash going through usually scrambles everything with a runaway stack.

          My first EPROM programmer was a Godsend! ( 1702. Required a +105V programming voltage. 256 bytes each. And thank God they gave me the 8080 programming code preloaded on one of the chips that came on the board. I think it was Godbout electronics, but I can't be sure. )

          Once I had that EPROM in place, that made all subsequent construction a helluva lot easier.

          First thing was videoram handlers, keyboard handlers, and my first magtape storage.

          It took several years before I had 2716 in place and was actually doing assembler. Once I was that advanced, I was getting my magtape filesystem up and running, along with more advanced serial I/O, print head drivers, and dreams of using it for industrial control.

          To be honest, by the time I was able to get assembler, I already had a monitor in place and was using a rudimentary keyboard and TV based videoram. The assembler came shortly after I had 2716 storage capability.

          I guess the first peripheral I had going on the IMSAI was the videoram driver, keyboard, and tape transport, which at that time had no file structure at all... I was putting all my code at 4000H, and I would read or write the whole 1K block... kinda like a bootstrap program... the code that did that was sitting at a 1702 address 8000H. I had 1K Videorams at E800H and EC00H, with other I/O starting at E000H. The F000H thru FFFFH was the last 4K RAM/ROM slot. I had lots of RAM.. 32K of it. 0000H-8000H. Never did use it all.

          What I did not stuff with RAM, I stuffed with 2716, and at the time had it filled with support routines... much like the BIOS calls of DOS ... for reading keyboards, writing to the videorams, reading or writing to tape, and invoking my beloved assembler which was 99% copied from a large brown paperback book ( I believe SAMS published it ). I just had to point their assembler to my keyboard and display routines, and show it where the source file was, and where I wanted it to put the object code, and where some temp space was for it to put the symbol tables.

          Those were the days!

          It would be many years later before my next big head scratcher... Jeremy Bentham's book on "TCP/IP Lean" and the "TCP/IP illustrated" books came out, and I began horsing around with making my own "micro packets" and little custom protocols. Something I wanted to do, but never got around to it, was to put my IMSAI on the internet....just for the hell of it ... even if all I could do is ping and telnet into it. I would have to cheat and use some later technology to interface it though... like an X-Port or something similar. Well, by the time I do that, I've cheated.... then what's the point. If I am going to cheat, I may as well do an Arduino.

          Back then, when the internet was just getting going, we had the +HCU, with +ORC and +Fravia ( I'm giving you the exact spelling, so if you want a little retro fun, Google still finds these guys if you aren't already aware of them. ).

          I learned more stuff from those guys.... look for mirrors of "searchlores". There is still a helluva lot of stuff there. But at one time there was a lot more. I was really getting into their steganography stuff.

          Now, the whole scene seems to be about what I can buy - but not understand.

          I am the guy who loves to take a bunch of scrap and build a car... not shop all day at showrooms for stuff I can't afford.

          I do not think there is any way to recreate the environment required for the education those of our generation got. Too encumbered with intellectual property rights and congressionally legislated ignorance. They do not want us knowing how the machines they use to control us work. Just like the priests of old took great offense to the public getting access to the holy books, and making their own judgements of whether the priest was full of shit or not. The priests lost their power when the people knew the truth. Now the priests are re-emerging with different robes... the robes of their self-proclaimed rightsholder status, codified into law by their congressional cohorts.

          Where will it end? My guess is that another country will technically advance over us, build all of our stuff, then one day decide they will take our country as payment. We will fight back but our stuff, backdoored by them, ceases to function. They come in and all those property deeds filed by the haves, become heating fuel.

          And we all will do whatever they tell us to do.

          --
          "Prove all things; hold fast that which is good." [KJV: I Thessalonians 5:21]
      • (Score: 2) by All Your Lawn Are Belong To Us on Tuesday January 09 2018, @04:06PM

        by All Your Lawn Are Belong To Us (6553) on Tuesday January 09 2018, @04:06PM (#620054) Journal

        Did you ever demon dial Sunnyvale, California and have a system ask if you wanted to play a game?

        But seriously, thanks for sharing. I've never gotten to see and IMSAI up close, let alone use one, but how many of use had that fantasy?

        --
        This sig for rent.