• Please review our updated Terms and Rules here

Using a printer with an Eagle I (?)

SMichelsen

Experienced Member
Joined
Jan 30, 2015
Messages
105
Location
Lewes, Delaware
I have an AVL Eagle I computer. I am looking to connect a printer. I figured I would use my Epson LX-80, which has a Centronics parallel cable. I see that the parallel ports on the Eagle are not the same - please see the photo. It has serial ports that are actually the same pin config as my typical parallel cable - but "that can't be right".
Can anyone advise on the type of printer that will work with these?
Thanks,
Steve

Eagle_ports.png
 
That certainly looks like a centronics port. Are you using a ribbon cable or a PC style centronics cable with a DB25?z

Also, it might be broken, or might be mapped differently in the BIOS to what you expect.
I don't know anything about the Eagle 1 sorry, so can't offer much beyond that, but an oscilloscope should make it easy to see what the port does.
 
The cable I have is a 36 pin centronics (printer side) to a DB25 (computer side). I take it this is a "PC" cable?

Perhaps I should try this one - a 36-36 pin cable that would connect with the "parallel B" port on the Eagle (??) I am not quite sure if the Eagle is going to want me to select the "A" or "B" parallel port to print from, or just print to the one that's connected - surely the software I will be printing from doesn't give an option.

Snap 2023-09-29 at 23.19.59.png
 
Yes, the PCs used a DB25 to Centronics connection.

The cable you've pictured looks more like what I would expect, but again I'll add that I don't know much about the Eagle 1, and so I'm only making an assumption based on what I would expect to find.

There's some options in the BIOS on CP/M 2.0 and upwards that let you select a printer, but the software may send the information just about anywhere. Maybe test with Wordstar or something similar and see what happens? Or you could write a test program to write a line of text to the printer or different output devices through the BIOS. It won't be likely to be buffered, so the printer should work straight away.
 
OK I have the 36 pin -36 pin cable, but upon attempting to print to my LX-80 from a couple of applications I get - nothing. I suppose that I need to tell the BIOS what port to use? I am sorry to say that I have no idea where to start. I am pretty much a CP/M noob; I have a lot of hours USING CP/M computers but pretty much zero time programming them.
 
Keep in mind the default printer port might also be either serial or either parallel. If you can check their outputs, you can get a better idea of what is happening.
 
Which version of CP/M?

Read this and have a look at the IOBYTE - https://hc-ddr.hucki.net/wiki/lib/exe/fetch.php/cpm/easybdos.pdf

Regards
David
The Eagle uses CP/M 2.2.

I took a look at the page you linked-to, and also this one... https://www.seasip.info/Cpm/iobyte.html

My question is, what do I need to access and edit the IOBYTE setting? Is there an application that gives a user interface for such things? Is that something like KERMIT? And then there's the question of getting such an application from the web to my Eagle. I have XT-PCs with a removable card "C drive" that I can use in a modern PC to move files in and out - maybe that's the go-between? Clearly I am near the bottom of the learning curve on all this.

Here's IOBYTE at the bottom.
Snap 2023-10-06 at 12.12.36.png
 
My question is, what do I need to access and edit the IOBYTE setting? Is there an application that gives a user interface for such things?
STAT.COM (part of the CP/M distribution) is used to change the IOBYTE assignment. For example, "STAT LST:=LPT:" assigns the printer ( LST: ) to the "line printing device" ( LPT: ). Whatever that means in detail depends on your Eagle's BIOS.

CP/M was very flexible in these assignments, and not all BIOS implementations honored the IOBYTE. Additionally, the interface is quite limited, so you often configured the application (e.g. WordStar) for the specific hardware, bypassing the CP/M interface. If you do that, the LST: assignment does not even matter.
 
This is the challenge with CP/M. The best solution would be to find the manuals for the Eagle I if you can and see what it says and how it uses the ports. Otherwise, you can still figure it out, but there's going to be some guesswork and learning, and you need something to figure out what changes in software equate to what changes in hardware.

The best starting point if you can't find the manuals is to learn to code some simple CP/M software in assembly - either 8080 or z80. Then you can write some test routines to change things and attempt to send data to the parallel port and see it on an oscilloscope or logic probe. A cheap logic analyzer connected to the port might also be a good option.

Try Svenka's suggestion about STAT first. If that doesn't work, you can set the IOBYTE in software. For example,
.org $0100 ; Start point for CP/M applications.
LD E,$00 ; the value you want to set IOBYTE to.
LD C,8 ; The function call (7)
CALL BDOS ; Call to $0005
RET ; exit.

That's the code to set the IOBYTE... Then you can set E to a character and do the same again with "Printer Output" to send data to whatever the bios thinks is the printer.

At the moment, you're flying blind. Once you at least know you have the right port, you can start to work on pushing real data out.

David.
 
STAT.COM (part of the CP/M distribution) is used to change the IOBYTE assignment. For example, "STAT LST:=LPT:" assigns the printer ( LST: ) to the "line printing device" ( LPT: ). Whatever that means in detail depends on your Eagle's BIOS.
OK thanks much for that. One challenge I have now is being able to identify the various possibilities to assign the printer to. Also, once set, how can I choose (if I must choose) the correct output? My machine has two parallel outputs. I found the STAT application and attempted to assign "LPT", and then "LPT1", as my machine has two parallel ports. Both of those came back as an "Invalid Assignment".

I wonder if I should be looking for a 34-pin ribbon-cable style printer cable for use in the "other" parallel printer port (see the pic at the top of this thread).

Going in a different direction here, my LX-80 has various dipswitches, the function of which I do not know at the moment, but I assume I can easily find out. I also found a passage in the manual for an earlier version of the Eagle, which is an S-100 bus computer also running CP/M. I cannot say if this info can be equated with the computer in front of me, but it suggests that printer switch settings are crucial to printing from this machine. Here are photos of the Eagle I am trying to print from (on the left), the older Eagle the passage was written for (on the right), the manual passage referring to printer switches, and the dipswitches on my LX-80.

update: the printer output on the S-100 Eagle is 25 pins as opposed to 34 on the "newer" Eagle, so I suspect that the manual passage won't be of use. I am still looking for a manual for the newer machine.

Eagles and printers.jpg
 
The best starting point if you can't find the manuals is to learn to code some simple CP/M software in assembly - either 8080 or z80. Then you can write some test routines to change things and attempt to send data to the parallel port and see it on an oscilloscope or logic probe. A cheap logic analyzer connected to the port might also be a good option.

Try Svenka's suggestion about STAT first. If that doesn't work, you can set the IOBYTE in software. For example,
.org $0100 ; Start point for CP/M applications.
LD E,$00 ; the value you want to set IOBYTE to.
LD C,8 ; The function call (7)
CALL BDOS ; Call to $0005
RET ; exit.
David, thank you for all that, but it is all "outside of my skill set" at the moment. Much to learn.
 
OK thanks much for that. One challenge I have now is being able to identify the various possibilities to assign the printer to. Also, once set, how can I choose (if I must choose) the correct output? My machine has two parallel outputs.
CP/M has a fixed (and final) list of physical devices, and a fixed (and final) list of logical devices, and there is a limited number of possible assignments from one to the other. The full table is listed here: https://www.seasip.info/Cpm/iobyte.html

How the physical devices are mapped onto your ports (if at all) depends on your CP/M BIOS. I would guess that one of the parallel ports is assigned to the LST: device (LIST), and the other one maybe as UL1: (user-defined printer), but I do not know for sure.

I found the STAT application and attempted to assign "LPT", and then "LPT1", as my machine has two parallel ports. Both of those came back as an "Invalid Assignment".
LPT1 does not exist, but LPT: definitely does. You probably ignored the colons, these are required.

CP/M and CP/M programs do very limited or no error handling, so you have to precise in your input or things will just fail (or corrupt data).

I wonder if I should be looking for a 34-pin ribbon-cable style printer cable for use in the "other" parallel printer port (see the pic at the top of this thread).
IBM PCs use a 25-pin D-SUB connector and corresponding printers use a 36-pin Centronics connector. Your need to figure out the pinout for your system first, just getting a random cable off the internet may or may not work, and you don't learn anything useful if it does not.

Your system uses two different connectors for its parallel ports, so the manufacturer likely designated one of them as a printer port (and the other one for an external floppy or other device). Port B might be a dedicated printer port for use with a centronics-centronics cable, but I don't have experience with actual vintage CP/M machines and don't know. Try to find the manual for your machine's CP/M version...

Going in a different direction here, my LX-80 has various dipswitches, the function of which I do not know at the moment, but I assume I can easily find out. I also found a passage in the manual for an earlier version of the Eagle, which is an S-100 bus computer also running CP/M. I cannot say if this info can be equated with the computer in front of me, but it suggests that printer switch settings are crucial to printing from this machine.
Well, switches usually exist for a reason, so they tend to be important. Where serial printers require specific setting to be correct for any communication to happen (baud rate, data and stop bits, parity), parallel printers only require the switches to print correctly. Simply sending ASCII characters should print something; the switches then set some details.

Here are photos of the Eagle I am trying to print from (on the left), the older Eagle the passage was written for (on the right), the manual passage referring to printer switches, and the dipswitches on my LX-80.
The manual passage refers to a serial printer, not a parallel printer.
 
Looking briefly online, the data suggests;

"Eagle Computers were originally manufactured by AVL (Audio Visual Labs) as a controller for audio-video projectors. The original models, the Eagle I and II, had AV ports on the back.

The computers proved so popular that the AV ports were removed, and standard RS-232 and Centronics ports added. The computer division was spun off and Eagle Computers, Inc. was created.

The complete line of CP/M computers they made was: Eagle I, II, III, IV, and V. All were the same except for the storage. The Eagle I had a single single-sided (SS) double-density (DD) 96-tpi 5.25" floppy-disk drive, the Eagle II had two of these. The Eagle III had two double-sided (DS) DD 96-tpi 5.25" FDD. The Eagle IV had one of these and a 10-Mb hard disk, and the Eagle V had one of these and a 32-Mb hard disk.

The Is and Vs were not sold in large numbers, because of the small storage capacity of the former, and the high capacity and higher price of the latter. Who needed 32 Mb?"


So the Eagle I and II should be the same, with different drives. That also looks like it should be a centronics port.

The key elements are that standardised architectures didn't really arise until the PC came out, and still persisted with bespoke cables even there for a few years. Handshake lines were only sometimes implemented on either the PC or Peripheral side, and sometimes they even inverted or change signal levels and moved pins around seemingly randomly in the same interface.

A lack of any real standards was only changed because the way the PC clones did it was becoming the defacto standard, and so it became less common to do things differently, but there was a time where every cable was bespoke, and that meant you needed the manufacturer's cable to connect to the manufacturers recommended peripheral.

Centronics is a pretty strong standard though and you can reasonably assume the centronics port on the back is most likely the primary printer port, but there's no telling if the boot disks had something that configured the I/O byte to make it work.

What software are you trying to print from? Also, there might be a fault with the port - that is not uncommon. Centronics were often unbuffered TTL signals.
 
I am trying to print from "Procall", which is the software written by AVL for the Eagle to drive multi-image slide shows. Running this software is the reason that the Eagle exists at all. Here's a screenshot of the application at work, in this case, a six-projector show. There is no control available here regarding printing other than the command "PRINT" (!)

Snap 2023-10-09 at 00.04.37.png
 
Check this out:

If correct, Parallel A is the one you want, and the other is a SASI (SCSI) Hard Disk port.

Time to get some IDC Crimps for dual pin header and Centronics and make your own cable out of ribbon cable.

David.

p.s. Also look for the following software.
SpellbinderwordprocessorMenu
UltracalcspreadsheetMenu
 
Last edited:
It's all learning curve for me too. I am still quite recent to it all in my own work with CP/M.

That project looks incredible. I understand now why the correct function of everything is critical to your project.
 
Back
Top