DavidMil Posted May 4, 2019 Share Posted May 4, 2019 (edited) 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 May 4, 2019 by DavidMil Quote Link to comment Share on other sites More sharing options...
toddtmw Posted May 4, 2019 Share Posted May 4, 2019 On my Panasonic KX-P1091i, holding both buttons puts it in hex mode. Worked as expected I guess, but I do not know what all the 0D's are. Is that the semicolon? Quote Link to comment Share on other sites More sharing options...
Kylev Posted May 4, 2019 Share Posted May 4, 2019 toddtmw, If this were an ASCII printout, that would be a carriage return. Quote Link to comment Share on other sites More sharing options...
+Nezgar Posted May 5, 2019 Share Posted May 5, 2019 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) 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 Quote Link to comment Share on other sites More sharing options...
toddtmw Posted May 5, 2019 Share Posted May 5, 2019 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? Quote Link to comment Share on other sites More sharing options...
DavidMil Posted May 5, 2019 Author Share Posted May 5, 2019 (edited) 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 May 5, 2019 by DavidMil Quote Link to comment Share on other sites More sharing options...
+Nezgar Posted May 6, 2019 Share Posted May 6, 2019 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. 3 Quote Link to comment Share on other sites More sharing options...
DavidMil Posted May 6, 2019 Author Share Posted May 6, 2019 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 4 Quote Link to comment Share on other sites More sharing options...
+Nezgar Posted May 6, 2019 Share Posted May 6, 2019 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. 2 Quote Link to comment Share on other sites More sharing options...
ClausB Posted May 6, 2019 Share Posted May 6, 2019 (edited) 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 May 6, 2019 by ClausB Quote Link to comment Share on other sites More sharing options...
+warerat Posted May 7, 2019 Share Posted May 7, 2019 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. 5 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.