Jump to content
IGNORED

Atari Printer Output And Epson Printers...


DavidMil

Recommended Posts

Here is a little Basic program to look at the printer output of you Atari and the 850 printer

port. This works on my RX80 and I'm wondering if it works with other Epson printers too.

Hold down the FF button while you turn the printer on. Then run this little Basic program.

If it works correctly you should get a Hex printout starting at 00 and ending at FF. You may

have to take your printer offline for it to print the last line. Holding down the FF at power

up, puts the printer in Hex dump mode. In this mode the printer will print all the data that

it receives in Hexadecimal regardless of what is sent to it. Not really of much value, but

kind of interesting.

 

10 FOR N=0 TO 255

20 LPRINT CHR$(N);

30 NEXT N

40 END

 

Anyone with an Epson printer, let me know if this works. You're also welcome to try it

on other printers too. You'll have to look in your user manual to see if your printer has

a hex dump mode.

DM

 

DavidMil

Edited by DavidMil
Link to comment
Share on other sites

Also visible is the 850's 'translation' of the ATASCII Carriage return character $9B (Decimal 155) - As you can see here, it replaces it with $20 $0D (Space, Carriage Return)

 

post-53052-0-62221400-1557070596_thumb.jpg

 

To eliminate all the 0D characters, it would be necessary to modify the program to put all 256 bytes into a variable first, and then print the string with a single LPRINT. Although I don't think the 850's buffer is big enough, so I think it would be broken into a few segments showing a few spurious "$20 $0D" here and there..

 

Give this a try. I think I got it right... the variable offset starts at 1 (N) and the characters start at 0 (N-1):

5 DIM S$(256)
10 FOR N=1 TO 256
20 S$(N)=CHR$(N-1)
30 NEXT N
35 LPRINT S$
40 END
Link to comment
Share on other sites

Not that this isn't an interesting topic, (it is), i was just wondering if there was another reason why David is interested in this?

 

For about a year I've been trying to find a way to individually address the eight data lines of the printer port on the

850. Even thought a lot of people have said it's not possible, I keep looking. I came across this program in my

searches. I thought it was an interesting little program. That's all.

 

DavidMil

Edited by DavidMil
Link to comment
Share on other sites

For about a year I've been trying to find a way to individually address the eight data lines of the printer port on the 850. Even thought a lot of people have said it's not possible, I keep looking.

It seems to be generally pretty well accepted that the code in the 850 ROM has no capability to individually address each data line, similar to how there is no way to print a $9B (Decimal 155) byte, as there was no way to escape it in the firmware.

 

However, with exploitation of the undocumented "test and execute" command in the source code as warerat has done with his utility to download the firmware from the 850, I think this should be possible by using custom uploaded code to directly manipulate the PIA parallel port lines.

  • Like 3
Link to comment
Share on other sites

It seems to be generally pretty well accepted that the code in the 850 ROM has no capability to individually address each data line, similar to how there is no way to print a $9B (Decimal 155) byte, as there was no way to escape it in the firmware.

 

However, with exploitation of the undocumented "test and execute" command in the source code as warerat has done with his utility to download the firmware from the 850, I think this should be possible by using custom uploaded code to directly manipulate the PIA parallel port lines.

 

Rewriting the ROM wouldn't be possible for most Atari users, and besides, I wanted to test the 850's as the were so any problems

in the hardware could be corrected. I've made a test board to turn on an LED for each line if it goes high and different colored LED's

for the four control lines. I guess I'll have too live with that. Next I'll make a smaller SMD board. Here's a picture of what I have...

 

DavidMil

post-47264-0-93460500-1557171642_thumb.jpg

post-47264-0-87031900-1557171679_thumb.jpg

  • Like 4
Link to comment
Share on other sites

Rewriting the ROM wouldn't be possible for most Atari users, and besides, I wanted to test the 850's as the were so any problems in the hardware could be corrected.

That's just the thing though, with the test & execute commands, you can send 6502 code to an unmodified 850's RAM and execute it, to do whatever you want with the hardware.

  • Like 2
Link to comment
Share on other sites

For about a year I've been trying to find a way to individually address the eight data lines of the printer port on the

850. Even thought a lot of people have said it's not possible, I keep looking. I came across this program in my

searches. I thought it was an interesting little program. That's all.

 

DavidMil

I did it in the day, though I cheated by writing my own P: driver to use joystick ports.

http://atariage.com/forums/topic/234831-prantic/?do=findComment&comment=3173297

 

Another cheat is to replace $9B with $9A or $9F and live with one wrong dot.

 

Edit: looked at the code and see that the custom driver doesn't help since it still goes through CIO, so I used the very cheat I mentioned above.

Edited by ClausB
Link to comment
Share on other sites

It seems to be generally pretty well accepted that the code in the 850 ROM has no capability to individually address each data line, similar to how there is no way to print a $9B (Decimal 155) byte, as there was no way to escape it in the firmware.

 

However, with exploitation of the undocumented "test and execute" command in the source code as warerat has done with his utility to download the firmware from the 850, I think this should be possible by using custom uploaded code to directly manipulate the PIA parallel port lines.

 

 

 

For about a year I've been trying to find a way to individually address the eight data lines of the printer port on the

850. Even thought a lot of people have said it's not possible, I keep looking. I came across this program in my

searches. I thought it was an interesting little program. That's all.

 

DavidMil

 

This is actually how I did the proof of concept to see if the 850 was executing anything. I connected a LED between pins 7 and 11 and wrote a loop to incrementally write all of the values to the printer port and if the D7 LED blinked I knew it worked.

 

If you want to do this in BASIC:

 

10 FOR I=0 TO 5:READ A:POKE 1536+I,A:NEXT I

20 DATA 96,1,130,141,0,169

30 POKE 768,80:POKE 769,1:POKE 770,32:POKE 771,128:POKE 772,0:POKE 773,6:POKE 776,6:POKE 777,0:POKE 778,6

40 POKE 779,0

50 INPUT VAL

60 POKE 1540,VAL

70 X=USR(ADR("hLYd"))

80 GOTO 30

 

IMPORTANT: The lowercase d inside the ADR in line 70 is inverse video.

 

When you run it, whatever value you input is written directly to the 8-bit printer port D0-D7 without intervention from the printer driver.

  • Like 5
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...