• Bogolese (unregistered)

    I had the "pleasure" of converting a system that was running an an HP3000 to a COBOL system running on an IBM mainframe back in ~1988. It was a beast.

  • (nodebb)

    "Mini", of course, meant "refrigerator sized".

    As compared, at the time of the first minicomputers, with the size of a mainframe, that is, half a medium-large room.

    The version of Pascal that shipped on the HP3000 simply didn't have any. No and, or, not, or xor. Not even a shift-left or shift-right operation.

    That would be because Niklaus Wirth's initial version of Pascal (which survived much longer than it should have, seeing as how it would be only slightly unjust to describe it as "a toy language apparently designed just for teaching fundamental programming principles")(1) didn't have bitwise operators. It did have and, or and not (but not xor), but they were boolean operations, equivalent to C's &&, || and !.

    (1) No true definition of what happens if the equivalent of malloc fails to allocate memory, no way to open a named file where the name wasn't given to input or output on the program's command line, etc. And some hideous implementation details that looked like someone had had orgasms when reading about (or, worse, inventing) intensely complicated details of programming language theory, especially parameter passing,(2) and wanted to make sure that all real-world programmers using Pascal could share that intensity of pleasure.(3)

    (2) All centred around piles of nested procedures/functions and the fun that can be had with their access to local variables belonging to the less-nested procedures/functions in the pile. It's an unholy mess that Turbo Pascal (and maybe the UCSD P-System that influenced its later versions) dispensed with from the very beginning.

    (3) The sane ones (a category in which I include myself) didn't share that enthusiasm.

  • MIKE (unregistered)

    If I can recall, the HP3000 made in the '80s used a PA-RISC CPU emulating the older custom CPU of the other models. The computers were al most the same sold as HP9000 that were running Unix, and were less expensive. The only difference was the ROM missing the "BIOS" that was required by the MPE OS to run, and I think a license for running MPE.

  • Officer Johnny Holzkopf (unregistered)

    LANDs of LORe...

  • TopTension (unregistered)

    Very nice history article besides the WTF, thank you!

  • (nodebb)

    Anyone who, like me, wondered at a 16-bit processor having 128kB of memory, might be interested to know that the Wikipedia article mentions that the addresses had 16-bit granularity instead of 8-bit granularity.

  • (nodebb)

    Not surprisingly, It also had no real security. Our public school system had one, that ran all the business and student tracking systems. Someone had the nice idea to also use it for training, each High School got a computer lab and a BASIC programming course. A very few of us read the manuals and quickly figured out we could write a little program to scan the FEP sessions and take over active sessions, including the Admin. What an incentive!

  • Foo AKA Fooo (unregistered) in reply to Steve_The_Cynic

    (2) is not completely accurate. They did support access to local variables belonging to the less-nested procedures/functions. What they did away with is basically what we know as closures today (passing local functions as parameters, together with their stack frames) which is very much a thing in modern languages. A consequence of this was that Borland needed to resort to inline assembler code in their TUI system (Turbovision), not (only) for performance, but to emulate a feature that their language was lacking, but was supported in Wirth's Pascal, which is quite ironic.

    Pascal's real problems were its lack of a good I/O system and error handling (as you point out), bit operations etc. (as the article demonstrates) and most importantly modules and external interfaces which made almost all real-world programs non-standard from the beginning.

    Though there were ISO/ANSI standards, they were too little, too late, not supported by Wirth who had moved on to other languages (Modula, Oberon), and mostly ignored by vendors, which caused a level of fragmentation and non-portability of Pascal dialects probably unrivaled by any other language but BASIC.


    Obligatory reCAPTCHA rant: On my fist attempt to submit, it claimed I was sending automated requests, yeah sure. Remy, please get rid of that shit already! reCAPTCHA must die!

  • Jason Stringify (unregistered)

    This lead to a massive crunch

    *led

  • (nodebb)

    Also in the '70s, Jim Treybig was a marketing director at HP. He proposed a replacement for the HP3000 that would be fault-tolerant. HP passed on the idea. He left and formed Tandem Computers. Banks (ATMs) and airlines (selling seats) were enthusiastic customers for the Tandems that could keep business flowing even during hardware maintenance or failures.

    It's an ah-ha moment for me seeing today's code example for handling bit operations and the story of the 24-day clock failure. It explains two things. (A) The Tandem's proprietary language had built-in bit functions (just add a suffix to a variable name: XYZ.<7:9> would reference those three bits). (B) The timestamps used by the system were all three words (48 bits), and had a resolution of 1/100th of a second. (Later, that would become 64 bits with microsecond resolution.)

  • (author) in reply to flash

    I have a Tandem marketing mug- it has two handles, a reference to Tandem's fault tolerance. A depressingly long time ago, I worked at a company that had much of its business running on a Tandem system.

    There's a WTF story in there, somewhere, as the company was on VB6 (I know) and the only way to talk to Tandem from VB6 was to pay an exorbitant fee for a library that could do it maintained by a one person company, or use a shell terminal and screen scrape. So some apps shelled out for the library. Other apps shelled in and screen scraped.

    Now, the "fun" part, is that any data consumed by the screen scrape application couldn't add or alter fields without breaking the screen scrapers, but that impacted all applications.

    I started at that company in 2007, and "Tandem is going away any day now." It had "been going away" since the year 2000. I left years later, Tandem had not gone away. In conversations with former co-workers, it finally got replaced in 2018.

  • (nodebb)

    Here's Brian Kernighan's take (from 1981) on why Pascal isn't a serious programming language for production systems:

    https://www.cs.virginia.edu/~evans/cs655/readings/bwk-on-pascal.html
    
  • Klimax (unregistered) in reply to Foo AKA Fooo

    And Pascal was reason for extra parameter of x86 ENTER:

    The mysterious second parameter to the x86 ENTER instruction https://devblogs.microsoft.com/oldnewthing/20231211-00/?p=109126

  • Michael C (unregistered) in reply to Bogolese

    I also worked on an HP3000; no conversion, but it was a retail order-entry system written in COBOL. That put me through undergrad, and I remember the days pretty fondly. MPE-OS, as I recall. I didn't even know Pascal was an option or I would have used it.

  • (nodebb)

    My very first programming job, when I still had to ride my bicycle to work being not yet old enough to drive, was working on a shiny new version 1 HP3000. My employer was a warehousing distributor supplying retail stores with a wide range of stuff. They had a do-all business package running on Basic4 minis and my job (led by 2 undergrad CS students) was to port it to HP3000 BASIC. And upgrade all the Basic4 flat-file operations to HP's hot new database thingy called IMAGE.

    The Basic4 line of very early minis is so obscure not even Wiki knows about them. Just as well. As the hardware name implies, the "OS" was simply a BASIC interpreter.

    3 devs working at once could slow the v1 HP3000's timesharing noticeably, and as we got modules working and added actual employees, pretty quickly they found that 6 users was the system's max capacity. For a company with about 20 office workers who needed to use it. Oops. Fortunately HP came out with v2 of the real product, cleverly named the HP3000 Series III. Which had the RAM and horsepower to support a 30-person office.

    God did we create a lot of WTFs. And we also created, like this example, a LOT of stuff that anyone from 15 years in the future would shake their head and wonder why we didn't just use some built-in function. The answer being that back then there was no such built-in function. Not yet anyhow.

    But the conversion went well enough, and the landscape of HP3000 business software packages was so vast and empty that they built a whole new division of the company to sell the product we created. And did very well with it for a decade.

    That was 50 years ago. Literally 50 as in early 1974. Wow.

    Pascal was NOT an option from the git-go. That came out IIRC around 1980. There was COBOL or BASIC or what they called SPL-3000 which was essentially C, but tweaked to match the quirky stack oriented RISC-like CPU hardware vs C's assumption of a CISC non-stack CPU.

  • (nodebb) in reply to flash

    Well, the circle was completed as Tandem is now a part of HP: https://en.wikipedia.org/wiki/Tandem_Computers

  • (nodebb) in reply to WTFGuy

    True, but Pascal has some benefits.

    COBOL was a very niche language. It was by design intended to be used by non-developers, similar to SQL. So it had some major shortcomings early on and always sat in this uncomfortable corner of being easy early on but lacking later.

    BASIC on the other hand was a non-standardized language. Less powerful than COBOL (yes, there were so many iterations and dialects of both, but in the general context of last millennium versions, COBOL was on average a bit more feature rich), but especially in the 80s it has a huge benefit of being basically available on every home computer. Heck, I can't remember how many different Microsoft BASIC version I have encounter in this time.

    PASCAL on the other hand was a sleek, standardized and designed language and it was perfect for academic purposes and teaching. Hence it didn't need boolean operations; that's what those non-PhD engineers are doing, way to mundane for intellectuals and future generations of scientists. After all, in a few years nobody will do coding anyway and everything will just magically write itself by using graphical components like LEGO blocks :-)

    So personally I think all three are no very good programming languages. One was designed on the premise that people without skills should enabled to code without putting effort in, the other one was made as a compromise to not start programming courses with assembler but something a bit more easier and the last one was pretty much what you could describe the snob of programming languages. In other words, they all didn't had a vision that really matters to bring out the best and most out of capable developers.

  • John (unregistered)

    Should have converted the code to SPL (System Programming Language) which came with MPE3000. It was a mix of Pascal and Algol with functions for low level and high level programming, including good I/O.

    There was a time when I purchased from HP my own copies of the manuals for SPL and FCOPY.

  • hasseman (unregistered)

    Worked on a hospital chemical laboratory system written in FORTRAN IV for HP3000 (model 37) Had up-times of several month. Incredible stable. Quite some companies still run HP3000 programs using Stromasys emulators/VM's If I remember correct extended support was granted to 2012.

  • Terri Kennedy (unregistered) in reply to WTFGuy
    Comment held for moderation.
  • Randal L. Schwartz (github) in reply to Remy Porter

    I have a Tandem marketing mug- it has two handles, a reference to Tandem's fault tolerance.

    I'm sure I have one or two of those. I spent almost a year working at the headquarters, writing the Security Administration Guide in an attempt to get the system to be C2 (Orange Book) certified.

    The best part was the adjacent TGIFriday's restaurant in Vallco Fashion Mall started happy-hour specials of "NonStop Fajitas", with the weird capitalization mimicing the Tandem marketing materials at the time.

  • (nodebb)

    I wouldn't call the code a horrible approach to doing this

    Even though C is used uninitialised in BITON if A is outside the range zero to 15?

  • (nodebb) in reply to sibtrag

    I wasn't wondering at all. The number of bits a CPU has doesn't have to match the number of external address lines it has got. Some models of the PDP-11 had 256 kilobytes of memory despite being a 16 bit processor and being byte addressed. The 6502 could address 64 kilobytes despite being an 8 bit processor.

  • TroyR (unregistered) in reply to WTFGuy
    Comment held for moderation.
  • (nodebb) in reply to sibtrag

    Anyone who, like me, wondered at a 16-bit processor having 128kB of memory, might be interested to know that the Wikipedia article mentions that the addresses had 16-bit granularity instead of 8-bit granularity.

    Interesting, but the part that puzzled me was why a 32-bit memory model would only allow up to 4MB of memory. The Wiki article makes it clearer that this was the maximum amount of memory that was planned to be commercially offered, rather than the maximum amount addressable.

  • Ancient hacker (unregistered)

    The HP 3000 was one of the first systems that had no absolute linked programs. Everything was a dynamically linked relocatable binary. Even the system kernel. So boot up time til you got a login prompt was dismal, up to 20 minutes as a goodly part of the system had to be linked into memory. Eventually they compromised and linked enough of the system into a frozen binary so things would start up more expeditiously.

Leave a comment on “A Bit About the HP3000”

Log In or post as a guest

Replying to comment #:

« Return to Article