Jump to content
Sign in to follow this  
acadiel

Thermal printer DSR Hacking help wanted

Recommended Posts

So...

 

Those with Thermal printers know that they usually take 3.5" (88.9mm) paper.  In today's society, the widest that is made is 3.125" (79.375mm).

 

The thermal printer has a small margin on the left, 32 characters, and a small margin on the right with the 3.5" paper.  With the 3.125" paper, you can get exactly almost 31 characters on the paper.  

 

I was thinking of adding some spacers (0.1875" or 3/16") on both sides of the 3 1/8" paper to center it, and maybe seeing if we can modify the DSR ROM for the Thermal printer to do 30 character lines.  However, I'm not too terribly good at figuring out where the >20 that I need to modify in the DSR ROM needs to change to >1E.  Thus, I'm asking for help here... attached is the Thermal Printer ROM.  It looks like there's a lot of empty space in it - so hopefully someone with some time and disassembly knowledge can look through it and see if they can find where the spacing and line length is...

 

Thanks ahead of time for the help! :)

 

tp.rom

  • Like 1

Share this post


Link to post
Share on other sites

With two washers on the left, I can get 31ish characters, or 30 if we want to play it safe, on the widely available 3 1/8” paper.  This would allow people who haven’t been able to use the printers to do so again.  There’s not that much difference between wrapping on 30 characters vs 32.

6C01BEA7-F5C4-4BAF-93D4-4A0876408064.jpeg

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites
8 hours ago, RXB said:

Richard, look in the description.  It's 3 1/8.  They describe it as 3.5, but it definitely isn't.  I have tried ordering two of those and they are not 3.5.

Share this post


Link to post
Share on other sites
On 4/11/2020 at 12:18 PM, acadiel said:

So...

 

Those with Thermal printers know that they usually take 3.5" (88.9mm) paper.  In today's society, the widest that is made is 3.125" (79.375mm).

 

The thermal printer has a small margin on the left, 32 characters, and a small margin on the right with the 3.5" paper.  With the 3.125" paper, you can get exactly almost 31 characters on the paper.  

 

I was thinking of adding some spacers (0.1875" or 3/16") on both sides of the 3 1/8" paper to center it, and maybe seeing if we can modify the DSR ROM for the Thermal printer to do 30 character lines.  However, I'm not too terribly good at figuring out where the >20 that I need to modify in the DSR ROM needs to change to >1E.  Thus, I'm asking for help here... attached is the Thermal Printer ROM.  It looks like there's a lot of empty space in it - so hopefully someone with some time and disassembly knowledge can look through it and see if they can find where the spacing and line length is...

 

Thanks ahead of time for the help! :)

 

tp.rom 8 kB · 6 downloads

I had a colleague who worked in a Wisconsin paper factory. This stuff comes out of a 100 foot wide machine that fills a room. It is then sold to packagers for slicing. 

 

I emailed customer service at my favorite Wisconsin distributor, Uline, to ask if they can source 3.5".

 

Nakagawa is a packager of thermal paper rolls. They make a 4.125" inch size, which is distributed widely.

I have not actually seen a TI thermal printer since the 1980s.. does it have any wiggle room for wider paper?

 

 

 

Share this post


Link to post
Share on other sites
6 minutes ago, FarmerPotato said:

I had a colleague who worked in a Wisconsin paper factory. This stuff comes out of a 100 foot wide machine that fills a room. It is then sold to packagers for slicing. 

 

I emailed customer service at my favorite Wisconsin distributor, Uline, to ask if they can source 3.5".

 

Nakagawa is a packager of thermal paper rolls. They make a 4.125" inch size, which is distributed widely.

I have not actually seen a TI thermal printer since the 1980s.. does it have any wiggle room for wider paper?

 

 

 

Awesome!  Yes, that's what someone else suggested - see if they can source a 3.5" roll custom cut  - I don't know if they'd entertain it for a small amount of rolls, but it's worth asking.  edit: I emailed these folks too asking them if they could get 3.5"  https://www.pospaper.com/contact-pos-paper/

 

The bad thing is that people are marking 3 1/8" stuff as 3.5, when it's not.  I've purchased two types of rolls advertised as 3.5, but they measure as 3 1/8".  That includes the one Rich mentioned above.  So, we have to be careful that we verify that it's actually 3.5" wide (whatever we find.)

 

examples:  

 

The TP can't fit anything larger than the 3.5" - it's an exact fit.  

 

-jg

 

  • Like 1

Share this post


Link to post
Share on other sites
27 minutes ago, acadiel said:

Awesome!  Yes, that's what someone else suggested - see if they can source a 3.5" roll custom cut  - I don't know if they'd entertain it for a small amount of rolls, but it's worth asking.

 

The bad thing is that people are marking 3 1/8" stuff as 3.5, when it's not.  I've purchased two types of rolls advertised as 3.5, but they measure as 3 1/8".  That includes the one Rich mentioned above.  So, we have to be careful that we verify that it's actually 3.5" wide (whatever we find.)

 

The TP can't fit anything larger than the 3.5" - it's an exact fit.  

 

-jg

 

I'm intensely curious about thermal paper now!

 

Ideas:

1. Cut down some 4" or 8" rolls

2. Cut down 8.5" x 11" thermal sheet paper into 3.5" strips.. tape them onto your roll. big hassle but you could use a common  paper cutter, or picture frame cutter.

3. Print on 3.5" x 1" sticky thermal labels. Transfer some onto your used roll.

 

I see some 4" rolls. Here's one from pospaper.com. I also see the core size comes in tiny 3/4" (diameter of the inside tube)... and gigantic 3" core with 8" outer diameter of paper!

 

I wonder if 4" is really 4", or a little less?

 

I see  3.5" by 8" long thermal sticky labels on a gigantic roll. 

 

I have seen someone make a transformer winder at the hackerspace. Maybe something like that with a blade could transform 4" paper rolls to 3.5. Heck, even a turn crank winder with a spring holding down a blade, could replenish your 3.5" roll..? I could laser cut a box with axle holes and walls for 4" and 3.5" . An exacto knife positioned over the 3.5" mark. At worst you'd have to push the knife down while turning a crank...

 

 

Or, messilly, try to saw off a 4" or 8" roll?

 

Zebra.com has an industrial labeler that uses a giant roll of 5000 sticky thermal labels that are 3.5 x 1". I found it on their inventory list as Product no 10010243. Sounds good for diskette labels, if you have 1000s of floppies. Here's a seller of these giant label rolls.

 

 

  • Like 1

Share this post


Link to post
Share on other sites
On 4/11/2020 at 1:23 PM, RXB said:

Searching for that part number elsewhere shows that it is the common 80mm or 3.125"

Share this post


Link to post
Share on other sites
On 4/11/2020 at 10:07 PM, acadiel said:

Richard, look in the description.  It's 3 1/8.  They describe it as 3.5, but it definitely isn't.  I have tried ordering two of those and they are not 3.5.

Is this an industry change where the 'standard' was 3.5" then later reduced, but everyone still calls it 3.5" versus the actual size? 

 

(Sort of reminds me of the first time I went to buy 2"x4" studs and my wife - who used to help build houses - thought it was comical that I complained to the store that I didn't get actual 2x4 wood. )

  • Like 1

Share this post


Link to post
Share on other sites
51 minutes ago, InsaneMultitasker said:

Is this an industry change where the 'standard' was 3.5" then later reduced, but everyone still calls it 3.5" versus the actual size? 

 

(Sort of reminds me of the first time I went to buy 2"x4" studs and my wife - who used to help build houses - thought it was comical that I complained to the store that I didn't get actual 2x4 wood. )

That might be exactly what it is.  Whereas we probably use all 32 columns across with our printer, the other receipt printers, etc, probably aren't using the extreme right two characters, so they don't care.  

 

Anyone finding someone who's willing to cut exactly 3.5" rolls - will help out all of us /4A users with rolls.  In the meantime, I'd still like to get the DSR edited so we can put 30 instead of 32 characters so we can use the old paper.

 

Actually, what would even be better is if we had someone put a command line on the TP device so accept different line lengths.  i.e. OPEN #1:"TP.LL=30",OUTPUT

 

Share this post


Link to post
Share on other sites

What happens if you do this:

OPEN #1:”TP”,OUTPUT,VARIABLE 30 

 

Does that limit the maximum line length ?  I saw a reference to this in the Thermal Printer’s manual about adjusting the record size but it just said “Don’t supply a value higher than 32”

Share this post


Link to post
Share on other sites
16 minutes ago, Casey said:

What happens if you do this:

OPEN #1:”TP”,OUTPUT,VARIABLE 30 

 

Does that limit the maximum line length ?  I saw a reference to this in the Thermal Printer’s manual about adjusting the record size but it just said “Don’t supply a value higher than 32”

That does work within a program - but is there a way to do this with LIST, etc.?

Share this post


Link to post
Share on other sites

Is wrapping at 30 the only requirement or does it need to center the resulting output line?

 

Share this post


Link to post
Share on other sites

If you can, give this a try. It looks like the ROM is only 4k, so you may need a 4k EPROM instead of 8k.

 

There seem to be only two places that verify the record length. I changed them to pull the record length from >4001 - so the second byte of the ROM, and set this one to >1E (ie: 30).

 

Beyond that, I can only say it doesn't crash. Classic99 doesn't emulate the hardware of the Thermal Printer nor do I know how it works, so I can't check it formatted the output correctly. But it loads the PAB and then times out gracefully. If the PAB is right, based on what I see above, good chance the rest will be. ;)

TIThermalMod.zip

 

  • Like 5

Share this post


Link to post
Share on other sites

Awesome!  Thanks!  I need to get into the 'parts' thermal printer unit that I have and figure out what the pinout of the ROM is - it might indeed be a 4K one (which I can just write to twice and hookup to an 8K EPROM after shifting around pins.)

 

There's no tech manual on the thermal printer, so I'll be looking for the disk controller and RS232 pinouts for their DSR ROMs to get an idea about what the pins are when I substitute.  First step will be putting a socket in after using my desoldering iron.

 

Fred's 4K ROM RS232 pinout:  http://www.ti99-geek.nl/Projects/ti99hdx/Files/RS232_Ram.txt

 

C64B9CDF-D147-4829-8FCE-7E2FFEB623F4.jpeg

B0E13F36-0A7C-43B4-B5CF-52215423BEBF.jpeg

  • Like 1

Share this post


Link to post
Share on other sites
14 minutes ago, mizapf said:

Does the TP have an own CPU?

Not that I see.  It's just a bunch of logic chips and a 4K DSR ROM (I'm thinking it's a 2532 pinout if I'm not mistaken, so I need to get a 2764 to 2532 adapter.)

 

Share this post


Link to post
Share on other sites
On 4/13/2020 at 2:20 PM, acadiel said:

That does work within a program - but is there a way to do this with LIST, etc.?

SXB supports LIST "TP":28 (or some other number).

Share this post


Link to post
Share on other sites

Is there any technical CRU information about the device's CRU addressing ,etc?

 

Here's a snip from the thermal printer ROM that doesn't make much sense to me.  There are other spots where R12 is cleared and bits are set/reset.

 

      CLR  R12         
       SBZ  >00        
       SBZ  >03        
       LDCR @DA,15     ;@DA = DATA >7fff          
       SBZ  >00        

Share this post


Link to post
Share on other sites

Here is a partial ROM disassembly for those interested.  I didn't delve into the actual write routine as that is more involved than I can be right now ;) 

 

 

ThermalPrinter-DKADisassembly4-13.txt

 

Edit: For reference, I made a comment in the opcode section related to interrupts.  An excerpt from Thierry's RS232 page seems to confirm my suspicion that the thermal printer accounts for programs that use the special RS232 open opcode (i.e., setting the high bit) to open the Thermal printer, and adjusts its own PAB accordingly. The Thermal Printer DSR does not have an interrupt handler. 

 

"The DSR executes the following file operations: Open, Close, Read, Write, Load, and Save.The other opcodes (Rewind, Delete, Scratch and Status) generate an I/O error 3. In addition, the DSR accepts a special "Open" opcode, >80, that turns interrupts on"

  • Like 2

Share this post


Link to post
Share on other sites
Posted (edited)
13 minutes ago, InsaneMultitasker said:

Is there any technical CRU information about the device's CRU addressing ,etc?

 

Here's a snip from the thermal printer ROM that doesn't make much sense to me.  There are other spots where R12 is cleared and bits are set/reset.

 

      CLR  R12         
       SBZ  >00        
       SBZ  >03        
       LDCR @DA,15     ;@DA = DATA >7fff          
       SBZ  >00        

It looks like it's setting the CRU timer to the maximum possible value - maybe initializing a timeout?

 

Not sure why zero CRU bit 3... zeroing bit 0 is probably just to ensure a known starting state. The LDCR will switch to timer mode when bit 0 gets a 1, and then next 14 bits will fill the timer register. The last SBZ exits timer mode and starts counting.

 

Edit: ah, bit 3 is the timer interrupt bit

 

 

Edited by Tursi
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
1 hour ago, Tursi said:

It looks like it's setting the CRU timer to the maximum possible value - maybe initializing a timeout?

 

Thanks, Tursi!  I looked up Thierry's information to refresh my memory and landed on the "CRU Map of the 9901" about mid-way down the 9901 page.  I was perplexed as to how the joystick port was germane to the thermal printer.  (duh!) I better go eat a few more carbs.. ;)

 

Use of the timer would explain checking the console ROM to determine the clock speed, and subsequent use of different values based on the speed.  It would also mean that at least one subroutine is using the timer to determine how long to pause between operations. 

  • Like 2

Share this post


Link to post
Share on other sites

If that ROM follows standard TI practice at the time, it is probably a mask variant of a TMS2532.

Share this post


Link to post
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.

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...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...