(I’m going to post the following few blog posts all at once, but they are from quite a few nights working on this project.)
So I picked up the Male to Male DB9 gender changer, hooked it into my relatively newly built Commodore User Port RS232 adapter, fired it up, wrote a quick BASIC program, typed RUN and … and … NOTHING.
Hmm. I re-confirm that the Commodore and PC can communicate at 2400 baud. Everything is perfect. I confirm that the PC can communicate to the printer at 9600 baud, but no matter what I set the printer DIP switches to, I can’t get it to communicate at any baud rate OTHER than 9600.
Since I’m writing these blog posts in retrospect of the last few nights working on this project, I can say that now in hindsight, this began a long venture to figure out what was going on. I’ve got lots of experience with serial communication, and may have been a bit cocky relating to this project. Turns out, you shouldn’t take anything for granted.
As I worked through each piece of the puzzle, checking and re-checking, I had isolated the problem to the printer. Over and over again I confirmed DIP switch settings, tested things, and confirmed the printer just wasn’t working. But I had also not confirmed that the PC and the Commodore could communicate with anything else at 2400 BPS (aside from each other). This calls for a trip to my local computer junk/thrift shop!
I picked up a Hayes 2400 Baud modem, a litany of random serial cables and adapters and a few other things that didn’t relate to this particular project. Plugging the Hayes modem into the PC, I was able to communicate without a problem using an assortment of the various serial cables I had at-hand. Here and there, I had to use a null modem adapter naturally (depending on the construction of the serial cable I was using), but it worked perfectly. Plugging my home-made Commodore User Port RS232 adapter into the modem confirmed my findings, I could communicate with the modem at 2400 baud without issue.
The problem was definitely the printer. Drat.
My $35 eBay special dot matrix Epson printer was failing me and I didn’t quite know why. Something was overriding the DIP switch settings, but what?!
As I poked and prodded, grasped at straws and guessed at settings, Googled and hunted for any clue I could find… Lo a light on the horizon came from a post at BeagleHardware relating to Epson printers… They noted a diagnostic test that I hadn’t seen before, not in Epson documentation nor any other tome I had found relating to Epson receipt/POS printers. Power on the printer, press the Feed once, close the printer. Out pops a diagnostic report that gave me the clue I needed that eventually would lead me to what was wrong with my printer.
What’s this!? “Bank of America Custom Version”!!!! I bet that has something to do with my problem!! This is part of the clue, the other part of the clue came from re-reading the BeagleHardware post. They mention a Serial Buffer II card and Jumper Settings. My printer had DIP switches, not jumpers. Or so I thought.
I decide to open the printer and do some exploratory surgery. Turns out, it had the upgraded Serial Buffer II card installed.
Now we’re onto something! I start investigating and it turns out this card basically takes over all serial communications from the printer. Long story short, it has a set of software DIP switches that can be adjusted. Cool! This has to be the problem! Days of working on this problem, finally coming to some form of an answer. Or so I thought.
The Serial Buffer Module II (or IIb in my case) has configuration software. That software doesn’t cooperate with any newer 64-bit versions of Windows. It wants a true 16-bit environment. Easy enough, I fire up DosBox with a serial port mapping to my USB-to-RS232 cable’s port, mount the folders with the files as drives in DosBox and launch the application.
Great success! I can talk with the printer from the app. I decide to configure things in the SoftSwitches to my liking. Additionally, I found that Epson had two versions of this software. One version had a default SoftSwitch file and a default Application that shipped with a version of the SBMII card. Sweet, I proceed to install the SoftSwitch…
And then upload the default Application. I didn’t mention it above, but apparently you can custom program applications that can run locally on the SBMII card. I wanted to eliminate the Bank of America demon from my printer. Upon installing (or attempting to install) the default application, I was greeted with an error from the printer indicating that the application I was installing was incompatible with the firmware currently installed on the printer.
Queue hours of searching for firmware for this printer only to come up empty. Epson doesn’t seem to distribute firmware updates for this printer. Additionally, searching for part numbers of the serial interface board that is installed in my printer seems to turn up almost nothing. I’m guessing that this isn’t just a custom firmware, but possibly a custom board designed just for Bank of America. Either way, it doesn’t look like I’m getting back to any “normal” firmware anytime soon.
I reboot the printer, and it responds by barfing out an error indicating that my SoftSwitch settings don’t match the installed app. I’m in a catch-22 between my default SoftSwitch settings and the custom app. I can’t re-install my original SoftSwitch settings as I didn’t back them up. :-/
*** SoftSwitch Data Error ***
*** Wrong Application Data **
I try setting the SoftSwitches to the settings I need, but they don’t seem to be sticking properly. Maybe something to do with the custom application (and maybe custom firmware) installed on this SBMII card. Who knows.
I decide to try utilizing the physical DIP switches on the board and determine that they seem to override whatever grasp the application and/or firmware have on this board. Now I’m able to communicate with this printer at 2400 baud!!!
(The picture above shows no jumpers installed, but JP2 controls “Manual Override Mode” and must be installed. Then you select your baud rate with jumpers JP4 through JP6. In my case, JP6 represents a 2400 BPS setting.)
I then confirmed that I can now communicate with the printer at 2400, N, 8, 1. Perfect! It should be all downhill from here!
So much for easy. 🙂