• Please review our updated Terms and Rules here

IBM 5110 initial info

@Agent Orange On the 5110 model2 BASIC hardware that I have, SHIFT-1 does print a double-quote (") but using it for PRINT (or assignment to A$ strings) gives an ERROR 500. So I've always had to use SHIFT-K and use a single quote instead of double quote on that system (which is running its basic using a SYSTEM/3 emulator - i.e. as coded for that system, although offhand I can't find any examples of old BASIC for that system)

@krebizfan Ah, thanks! Yep DIM A$50 or DIM A$80, etc, on up to DIM A$255 works (past 256 gives error 508, which is understandable)

And I just learned two things (verified on h/w and in emulator) - (1) if your line ends up with more than 64 characters, then in listing it repeats the line with an "*" asterisk after it to show the rest of that line (see example below, line "2*" where using a single digit line number, I put in 58 characters then the ending ' at col 64 -- in listing, the ending 678' portion ends up on line 2*). This "longer than 64" can happen since in listing the code, it expands out the line number. (2) And, I entered my code as DIM B$(50) on line 6 - but when I listed it back, it automatically put the 18 in there :D Nice.

Using STR to insert another STR at the end of A$, and the result ends up like this when printed:

(as typed)
1647494123311.png

LIST clears the screen... The result is 4-column padded line numbers, and DIM got 18 inserted.

1647492680167.png


EDIT: Looked at old typewriters... QWERTY was developed around 1873 to 1878, and the original QWERTY style patent by Sholes doesn't have double quote :) Maybe whatever teletype the System/3 had didn't either? Oh my, it doesn't have1 or 0 either. I guess if you want a 1, press I. And if you want a 0, use O - wild, wonde if any old post Civil War records have "letter I" for 1. Also notice the position of M :D
1647493648670.png
 

Attachments

  • 1647494050150.png
    1647494050150.png
    9.7 KB · Views: 5
Last edited:
BTW if anyone at CHM has any Smithsonian contacts - I think it would be great if next year, they opened up SCAMP as part of a 50 year anniversary, and did some 3D scans of the inside of that thing before closing it back up. I'm curious how much of the "clam" design it had, how similar the A1 board was, or if SCAMP has that "black goo" problem that so many 5100's ended up having. And just curious how similar the RWS and PALM processor "tin cans" are between '73 and '75. 50yr, make an event out of it :D
 
Yep, as pictured towards the end of this link:


Some kind of foam or rubber support pad between the case and the A1 cards. The 5110 I have, this was already removed (and a cardboard insert was used as a substitute, to help support the suspended cards from the A1 board). There is also some kind of "shielding" black paper behind the keyboard.
 
Ah, the disk routines are working in the CSF.DSK sample that I have - it's just that they aren't BASIC files. So I'm not exactly sure what file type they are to be loaded. I don't yet fully understand the IMF stuff on the 5100/5110 (they seem like some pre-loaded stuff, that then reduce the overall available RWS?). Sent a message to Norbert to see if he can provide a disk image that has actual BASIC sample file types to work with. But if anyone knows the proper commands to load those CSF programs, I need some help there (maybe it's from the ROS DIAG).


Also, read about another feature of the 5110: you can basically define macros to the keypad numbers, and access them like CMD-1, CMD-2, ... CMD-9. Something about the LOAD command is used to initialize these, and the manual calls these out as "function keys."



Also fixed my little emulator lock up issue - it was related to my instruction counter wrapping around and running back into my "step offset", hitting a step point that didn't have a way to resume from. Fixed that (made a longer counter, but also if it reaches near max, it'll just reset the counter back to 0 - so no wrap issue).


ALSO - got the ability to press "!" on the PC keyboard and have it converted on the fly into the 3-key sequence needed to make the IBM 5110 interpret and show it as a "!" on the screen. I also noticed it doesn't matter what order you do the composition - you can do ' LEFT . (period). Or you can do . LEFT ' .


Still cleaning up some code before tossing this into git for other folks to play around with.
 
Pre-built executables (32-bit and 64-bit) and a draft set of documentation prepared for a 5110VEMU version 1.0 available at:

Source is also available near that same location:


Still a work in progress, but it's a fully functional emulator (now with integrated disassembler!).


1647860439338.png
 
Probably a break for a few weeks to address some other projects. But a tentative look at CRC checksums - it might not be as straightforward as hoped. I thought the CRC might just be something like adding all the values of the ROS, referencing a table lookup, and some XOR and SHIFT manipulations - deriving to some final expected value. So far I'm not seeing that. The execros.asm from Christian is annotated with notes, that should narrow down the portions of where the CRC checks should be happening.

Aside from that, eventually I'd like to craft a header into the keyboard pins (maybe based on what you showed earlier). From there, maybe either an Arduino-project (or just a parallel port?) could have enough pins to "upload" content into a 5100/5110? Kind of a cheap way to exercise the system (with or without a keyboard, or just staying "hands off" and preserving the keyboard, or having a kind of "demo mode" for shows).


Longer term is either
(a) digging into the native tape or disk operations (and understanding what responses those have to give on the IO pins to emulate the boards on the tape and disk units) [ this would make an emulate storage solution that works with native BASIC or APL for saving/loading files)

or

(b) finding some set of PALM instructions to load content in our own way with the I/O ports on the back (and those instructions could be put in using the keyboard device described above). This is essentially creating our own storage solution, but should lead to loading machine language or BASIC/APL programs basically across a serial port type connection (probably won't support saving)
 
Last edited:
@stepleton Sir, I'm running your 5100 executive ROS :) It has been quite an adventure. The language ROS' still need some work, but it's a start.

In the 5100 MIM Appendix C - it has the PALM opcodes described (that appendix on microinstructions is just gone in the 5110 MIM !!). Then I found the old AssemblerGenerator.pdf that Christian refers to (the "Chapter 2" of a book that he was unable to obtain the complete copy of, but had enough PALM opcode info for him to work with). They are consistent (5100 MIM Appendix C, Christian's Chapter 2, and the core emulator OP fetch code). PALM just has 16 main instructions, and indeed remains unchanged between the 5100 and 5110.

Then I didn't think it was working, but I noticed in the RWS hex display there was "00 01 02 03 04 05 06 07 08" at the top - and something jogged in my memory that for the 5100 display, "01" is for the letter "A" - I had read that in appendix C of Harry Katzan's epic 5100 book (then I later found a similar chart in the 5100 MIM, a few pages before appendix A starts). Updated the display codes, and...

1648030977908.png

I think the display maybe takes longer on the 5100 to warm up? Or maybe they're just older... But in all the YT videos of the 5100 I could find, I didn't actually see this sequence. If you wait for the screen to warm up, then hit RESET, you should see it. The space before "A" is significant, since indeed that's what the 5100 ROS does (on the 5110 there is no space before the A).

The BUP sequence on the 5100 is much shorter, but it cycles through a slightly difference set of refreshes of the RWS (aside from just clearing it all to 00's). And the above "18 07" is just that it encountered a CRC error against the language ROS (that's expected). So about that....

From the old notes here:

That states the Common ROS of the 5100 should be 18KB and BASIC NX should be 36KB.. So then I noticed your BASICNX.BIN is 54KB (36KB + 18KB). Sure enough, at offset 0x9000 in your BASICNX.BIN there is a noticeable transition (a bunch of spaces between code). So I haven't quite puzzled it altogether.

Then recall your execros.bin is a full 64KB. And indeed in slot H of the 5100, there is a lot pack together there: Supervisor and multiple other ROS, as well as the Executable ROS. And similarly (via hex editor), there is a transition right between the 32K half-way portion of your execros.bin. Right at 0x8000, there is a small space, but the content after 0x8000 has a lot of "83" that is very similar to the APL ROS of the 5110 (i.e. I think this is the APL Supervisor code of the 5100). In otherwords, the pieces are there, I just need to adjust the emulator to point to the correct address of these pieces parts (that are spread across the 64KB execros.bin).

(below: addr 0x8000 32KB transition piece in the 5100 execros.bin)

1648031568194.png



Running out of steam for today, but one last interesting thing - I was able to enter the DCP mode of your execros.bin !!! The CMD-ATTN scancode is the same (5100/5110), and you press that during the startup sequence (a little after the ABCDEFGH shows up, but before the language ROS transition).

This showing "DCP1" below is also confirmation that it's 5100 ROS (because the 5110 just shows "DCP"). I'm not sure what the letters at the bottom of the DCP screen are (the A and EGR). If anyone is willing to power on a 5100 and enter DCP mode, I'm curious if the real machine shows anything on the bottom portion of the DCP (it doesn't on the 5110). I don't have the keyboard inputs working yet on this "5100-version" of the emulator (almost all the other scancodes are different, but at least CMD-ATTN stayed the same). TBD - but tentatively, it looks like your painfully extracted 5100 ROS binaries are workable :D

1648031897601.png
 
Wow, what an accomplishment! Congratulations --- to my knowledge, this is the first time that anyone has run a 5100 in emulation. This is also the first time anyone has put my Executable ROS extraction to the test: there was no checksum or any other way of determining whether the computer vision algorithm had copied all of the data correctly from the source images, though I had high confidence in its accuracy.

But in all the YT videos of the 5100 I could find, I didn't actually see this sequence.

Clearly my own YouTube videos are just not popular enough. I've made a video of exactly what you're looking for and yes, the A is indented by one blank space:

then I later found a similar chart in the 5100 MIM, a few pages before appendix A starts

indeed, I had already pointed this chart out last week 😜 --- quoted below:

you can find a character table on PDF page 336 in the Maintenance Information Manual.

As for the appearance of DCP:

I'm curious if the real machine shows anything on the bottom portion of the DCP (it doesn't on the 5110).

I don't recall it doing that. I will try it out on my 5100 soon and reply on this thread. My recollection is that it might not clear the stuff on the bottom of the screen, so there's a chance that what you're seeing there could be garbage from something else. I have video of DCP1 from the non-executable ROS recovery that has APL's "CLEAR WS" still lingering at the bottom of the screen.

Congratulations once again --- this is a major step in making the experience of these machines more available to everyone!
 
I've checked now with my 5100.

If I interrupt the bring-up diagnostic during the "I" stage (the non-executable ROS check) by entering DCP, I don't get any text at the bottom of the screen.

If I enter DCP in BASIC or APL, then the top of the screen is cleared, but the bottom 8 lines remain unchanged.

It's worth saying that I can't test the situation you've encountered in the simulator, where the non-executable ROS is absent or invalid.
 
So one thing on the 5110 I did forget to mention...

On the very first instruction (if you flip the internal HOLD switch), the first 512 bytes (on the register display) are literally showing the executive ROS. (no real surprise, and that was key to how you extracted the executive ROS in the first place) [ note, my emulator version1 didn't do that -- I've corrected that now, so you get that same emulated behavior; but I'll do more fixes before doing any official version increment ]

But what is interesting is that on the very NEXT step/instruction (on the real hardware) - that first 512 bytes goes to completely something else. And the content is repeatable between power cycles. The 4 corners on instruction 2 are this (no single instruction would change all that in a single go, so it's flipping from Executive ROS - I'm pretty sure it is flipping to RWS, but no idea when/how anything initialized RWS in a repeatable pattern like that-- unless it's just the nature of that RWS component hardware):

01..... FF
0C.....AF
.....
AC....A4
8D....B5

The 1C at top left makes sense, that's the 2nd instruction (it starts at 000A, add 2, 000C is next). But I figured the RWS would just be randomized between power cycles, but it's not!

I haven't figured out yet what it is changing to (maybe it's the disk sort Features ROS? that's one I don't have - it doesn't really matter, since basically the very first thing the executive ROS does is replace it all with 00's one byte at a time). But I found the repeatability curious.

I kind of wish we could hold down the step switch to FWD a bit :) But I put a sticker on the case to remind myself "thou shall not mod your 5110"
 
I've happened to get my hands on a 5110 Type 2 from Dec 1978 (where my first 5110 Type 2 was from around a year later, Sept '79). This is based on dates stamped inside the case underneath the power supply.

I wanted to report some interesting differences before I forgot (and to see if anyone else has experienced/noticed these differences):

(1) the '78 5110 has an acrylic (solid clear plastic) divider between the CRT electronics and the rest of the system (A1 board, etc). The "newer" '79 5110 has a thin soft plastic divider. I'll get a better photo of this later in the week. The acrylic piece ('78 model) has three clips that fit perfectly onto the rails around the CRT, so it fits securely-- so I'm pretty sure it is a stock piece, not any custom add-on. But it would be an obvious cost savings to just use the thin plastic divider.

(2) The power supply on the '78 5110 that I have isn't working - even so, I verified that all the A1 cards from the '78 5110 work in my '79 5110, *except* for the Display card. When using the "older" Display card, on power up the RED IN-PROGRESS stays on, and there is an audible persistent beep - per my understanding of the MAP, a solid IN-PROGRESS light on startup is an indicator of a Display fault (but it doesn't mention any audible alert to go along with that). I'm not sure if the Display card has actually gone bad, or if just somehow incompatible with the CRT or system (I don't see any noticeable damage on the card, but I don't know it's history -- for example, at some point maybe it was inserted into the wrong slot?).

(3) the '78 Common and Language ROS card doesn't let me by-pass the startup "013 D80" error. On my '79 5110, I'll get this error once if the system hasn't been powered on in awhile -- so I just press ATTN, press RESET, and I don't see this error anymore. My understanding from the MIM is that D is the disk device (E is cassette, other codes for printer, modem, serial, etc), and the error is basically just saying that a disk drive isn't connected (the Type 2 has no internal tape deck and was intended to be used with an external disk drive). I'm curious if on the earlier '78 model, IBM decided to be more strict about requiring a disk drive to be connected to these models. Since I can't get passed this error, I won't be able to extract the Language ROS and see if there is an actual code difference.

That's the only differences I've noticed so far.


Previously on MIM 4-70 I saw a brief paragraph about a jumper to by-pass startup errors, but that may refer to the CRC errors, not this other category of errors. And in any case, I don't see any jumpers on the Common and Language ROS itself.

Speaking of jumpers - per the MIM, there is a jumper on the PALM Processor card to make it compatible between the 5100 and 5110. I'm not sure what the difference between them might be (core opcodes should be the same), but point is it should mean a 5110 PALM processor can be retrofitted into a 5100.
 
Congrats on your acquisition!

I don't really know about the other stuff, but my 5100 has the solid acrylic shield, too.

Can you point out the part of the MIM that talks about 5100 compatibility?
 
To add to my earlier summary of noted differences:

(4) There are minor "component color" differences on some of the cards, I didn't enumerate all those. But as a couple examples:

The Processor (CPU) are noticeably different. And the tray for the RWS are different colors (black vs gray), but I suspect these style card-trays were used in other systems, so it could just be misc. stock. But the Dec '78 5110 with the "white chips" for the processor, that possibly could have been re-used stock from a 5100 ?

EDIT: minor note regarding date -- on my June '79 5110, the date is stamped on the bottom of the top cover, not under the PSU like the other two. And I'm confident it is the original cover, the consistency of the thick dust is the same all over inside. There is common sales brochures for the 5110 where it is being used "in the field" at a construction site -- I feel like that's the very one that I have, because it's filled with so much actual dirt inside! And yet it still works, I've had it running for over an hour at a time, several times.

IMG_1573A_small.jpg



BTW, spoiler alert: yes, as of recently, I have a 3rd 5110 that has an internal tape deck!! :D More on that later (it's not working yet).


And below is an image of the two different styles of CRT dividers I mentioned. The 5110's I have are definitely 5110 systems (black covering around the keyboard area, instead of white like on the 5100's), but I don't know their history. The acrylic divider could have come from a 5100 perhaps. Aside from the addition of the speaker (which I think is accessed by Display related IOCB's in software), I think the CRT is largely the same between the 5100 and 5110 (at least dimensions-wise).

IMG_1572A_small.jpg


Lastly, here is the "013 D80" error that I'm not able to get passed with the "older" Common and Language ROS card inserted. With no other change to the system, just inserting the newer Common and Language ROS, I'm able to by-pass this error by pressing ATTN (I tap it a few times) then flip RESET. I think somewhere in the MIM I tracked down the meaning of IPL in one paragraph, but can't find it at the moment (Internal Program Load, something like that -- where I think it is trying to load code to init/test the disk drive, but the D80 error at the bottom is just saying it's not present). I took it for granted that on any 5110 you could just by-pass using the "ATTN-trick", but it looks like perhaps older 5110 Type 2's might be "stuck" (until we build a disk emulator ^.^ someday)

IMG_1546A_smaller.jpg
 
Last edited:
Can you point out the part of the MIM that talks about 5100 compatibility?

I thought it was in the MIM, but not seeing it at the moment. But it is mentioned near the beginning of the MAP:

Page 10 (or MAP 050-6) of the following, near the bottom:


And sure, maybe I'm interpreting what it is saying wrong - maybe it is just noting where the jumpers are set to, but doesn't necessarily mean just changing the jumpers makes it interchangeable - not 100% sure. But I'm curious if the Processor card from the 5100 is "forward compatible" into a 5110 (i.e. does it even have these jumpers on its board?)
 
Last edited:
Back
Top