Jump to content
IGNORED

Printers on the Classic TI-99/4A


Omega-TI

Printer on the TI-99/4A  

43 members have voted

  1. 1. Do you have a printer hooked up to your TI-99/4A?

    • Yes
      18
    • No
      25
  2. 2. If yes, does it get much use?

    • Yes
      7
    • No
      11
    • N/A
      25
  3. 3. If NO to question 1, do you plan to purchase one in the future?

    • Yes
      10
    • No
      25
    • Not sure
      8

  • Please sign in to vote in this poll.

Recommended Posts

I don't do a lot of printing at home--and the only functional printer I have right now is connected to my /4A. I have an ink jet that I use to print photos for one of my PCs, but it has been so long since I needed to print any pictures that I boxed it up to make room on that computer table. . .leaving my trusty Star Micronics printer as the only active printer in the house

  • Like 1
Link to comment
Share on other sites

The only reason I would like to have a printer hooked up to my TI is for one very specifc, obscure purpose:

 

What I'd like to find is something akin to a thermal receipt printer, but with sticky-backed paper, so I can print floppy diskette labels on the fly from disk listings. That'd make cataloging much faster.

  • Like 1
Link to comment
Share on other sites

I have on-and-off. I had a couple of HP DeskJets with parallel ports that worked fine. I just used those for printing program listings. That is really how I used my TI: for programming and games. I never got into word processing and I tried PRK a few times but never really got into it (a disk drive would have helped in both cases, but since my C64 with GEOS had everything I needed, off I went.)

  • Like 1
Link to comment
Share on other sites

 

GAWD! I forgot how annoying that really was! I love it! GREAT POST!

 

Thanks. Believe it or not, I actually keep a lot of stuff like this on my phone. At any given moment, there is a chance that I have some sound or graphic on my phone related to what you are talking about.

  • Like 1
Link to comment
Share on other sites

what's the most modern printer i can get for my lil ti? is there an ink jet that will work? do i have to get a dot matrix?

 

I have used a few different HP DeskJet inkjet printers. It just needs to have a parallel port.

Link to comment
Share on other sites

what's the most modern printer i can get for my lil ti? is there an ink jet that will work? do i have to get a dot matrix?

 

If the ink jet has a parallel port, odds are it can print from "DOS" which counts as printing from a TI. However, unless it includes some sort of "epson emulation" you won't get anything other than text out of it with most TI software as the TI software only seems to support epson printer codes for doing graphics and special fonts etc.. There are a couple other printers supported in various specific software programs, but all of them are dot matrix printers, none are HP's language used in the inkjets. BEST thing to do is use TI print on a PC and hook your TI to the pc with a serial cable, print to that, it will use the PC's printer driver to output whatever you print.

 

Greg

Link to comment
Share on other sites

  • 1 year later...

Just remember that a lot of these cables are wired differently but look exactly the same. I have a cable for a Star Printer to the TI and one for a Panasonic Printer to a TI and they are not interchangeable even though they look identical. Some of the internal wiring is crossed or goes to different pins. My Star Cable will not work with the Panasonic and vica-versa even though the end connectors are identical.

Link to comment
Share on other sites

I have had my Panasonic KXP-1123 since the mid-90's, and it still sees a lot of use. Most of my programming these days is related to hardware interfacing which obviously cannot be done under emulation, and I always print hard copies of my programs for debugging as well as archiving purposes. Thankfully the ribbon cartridges are still in plentiful supply, and I have been hoarding them :)

Perforated tractor paper is becoming rather scarce and expensive though, and I probably should stock up before I run out...

Link to comment
Share on other sites

  • 6 years later...

From 2015 to 2021. 

Just got a PHP2500 connected.

 

Can print text from TI-Writer.

I've been reading around and haven't found a way yet so I thought I'd ask others who own printers. 

 

Is there a way to print TI-BASIC graphics displayed on the screen?

I have an image converted to BASIC via Magellan. 

I'd like to be able to print that image.

Can it be done?

 

 

Link to comment
Share on other sites

 FIRST-  The BASIC way- requires TI Basic with Mini Memory OR Extended Basic, plus a suitable printer (eg that uses the Epson printer code ESC K ) 


 

NOTE: Using square brackets (that is a [  and ])in a variable name is legal!


 

Insert this code into your program as required- the screen will be printed when you get to this code.  You could put it into a GOSUB. The routine reads the screen and prints it- rather slowly.

 100 OPEN #1:"PIO.CRLF" 
 110 REM OR EQUIVALENT RS232 
 FILE NAME 
 120 PRINT #1:CHR$(27);"A";CH 
 R$(8) 
 130 FOR [A=1 TO 32 
 140 PRINT #1:CHR$(27);"K";CH 
 R$(192);CHR$(0) 
 150 FOR [B=24 TO 1 STEP -1 
 160 CALL GCHAR([B,[A,[CHAR) 
 170 IF [CHAR<33 THEN 300 
 180 CALL CHARPAT([CHAR,DEF$) 
 190 IF DEF$="000000000000000 
 0" THEN 300 
 200 FOR [SEG=16 TO 2 STEP -2 
 210 [HEX=ASC(SEG$(DEF$,[SEG,1))
 220 GOSUB 430 
 230 [PRINTDEF=[HEX 
 240 [HEX=ASC(SEG$(DEF$,[SEG-1,1))
 250 GOSUB 430 
 260 [PRINTDEF=[PRINTDEF+[HEX*16 
 270 PRINT #1:CHR$([PRINTDEF); 
 280 NEXT [SEG 
 290 GOTO 340 
 300 FOR []=1 TO 7 
 310 PRINT #1:CHR$(0); 
 320 NEXT [] 
 330 PRINT #1:CHR$(0) 
 340 NEXT [B 
 350 PRINT #1:CHR$(13);CHR$(10) 
 360 NEXT [A 
 370 PRINT #1:CHR$(27);"@" 
 380 PRINT #1:CHR$(7) 
 390 CLOSE #1 
 400 REM NOW GO WHERE YOU WISH 
 410 REM USING RETURN OR GO 
 TO AS APPROPRIATE 
 420 STOP 
 430 [HEX=[HEX-48+([HEX>64)*7 
 440 RETURN 
 450 END 

 To permit the routine to be added to any program, the square bracket has been used in front of each variable: [. The [ is accepted as a valid character in variable names. 

 ESC K {CHR$(27);"K"} is used in the Epson printer, and some others, to select: 'Normal density 8 pin bit image mode'


 

OR  The assembly code way- faster-    


 

If you are running a TI Basic program, in order to print the screen you must first leave the TI Basic program and run an assembly language program that will output to a printer with Epson graphics coding.

You need to have a "Load Interrupt Switch" fitted, 32k ram and printer plus printer interface. Plus a suitable assembly language program.  The switch will cause the computer to jump to an assembly routine while your program is running and not interfere with the display you wish to print.

eg Danny Michael's DUMP


OR- if the program will run in Extended Basic, a machine code utility plus 32k ram, printer and interface. The utility needs to use a "hot key" that will not interfere with your Basic program, that will jump to the assembly routine to print the screen image OR the utility may permit you to insert a CALL LINK in an appropriate part of the program to print the screen...

eg use the disk based utility THE MISSING LINK and in your program at an opportune place insert CALL LINK("DUMP")


 

Yes it can be done  (and has been done).  Several options but you first need the printer interface and Epson code printer;  then you need 32k ram and an assembly program or routine.  

To load the assembly routine you will probably need to have a disk system too.


 

  [Does RXB support screen dumps?? ]

There is also a utility that takes a screen image and transfers it to a code you can insert into your TI Writer documents so that TI Writer can print a screen dump with text around it....(can't recall what it was called...)

 




 

Edited by blackbox
ti writer added
  • Like 1
Link to comment
Share on other sites

3 hours ago, blackbox said:

Yes it can be done  (and has been done).
 

I will have to dig into this.  I have everything besides the program.  Not sure if my printer is correct. It's the PHP2500.

 

I will also give that, basic code you provided, a shot this week for sure.

 

EDIT: I believe I found the program "Dump". I think it's archive034.dsk in the collection I recently uploaded.  Extensive instructions too.

  • Like 1
Link to comment
Share on other sites

4 hours ago, blackbox said:

 

 To permit the routine to be added to any program, the square bracket has been used in front of each variable: [. The [ is accepted as a valid character in variable names. 

 ESC K {CHR$(27);"K"} is used in the Epson printer, and some others, to select: 'Normal density 8 pin bit image mode'


 

 



 

Yep, I think I'm going to have to figure out the LINK to DUMP option.

The basic way doesn't work for me. I bet it's an incompatible printer.

 

I will attach a photo of the result after i finish posting this. @computer, photo on phone.

 

 

Here's the entire program with the graphic I'm try to print.

The code you sent is lines 1300 - 1660

 

100 CALL COLOR(5,2,1)
110 CALL COLOR(6,2,1)
120 CALL COLOR(7,2,1)
130 CALL COLOR(8,2,1)
140 CALL COLOR(9,2,1)
150 CALL COLOR(10,2,1)
160 CALL COLOR(11,2,1)
170 CALL COLOR(12,2,1)
500 CALL CHAR(64,"00000103070F0F0F")
510 CALL CHAR(65,"7FFFF1FBFEFFFFFF")
520 CALL CHAR(66,"FECE2A33B5DDFFFF")
530 CALL CHAR(67,"FF351D1FBFBFBFFF")
540 CALL CHAR(68,"80C040E0F0F8FC3E")
550 CALL CHAR(72,"1F1F1F1F1F1F1F1F")
560 CALL CHAR(73,"FFFFF18080808080")
570 CALL CHAR(74,"FFFFFF0800000000")
580 CALL CHAR(75,"FCF0C00000000000")
590 CALL CHAR(76,"131B0F0F0D0F0F2F")
600 CALL CHAR(80,"1F1F1F1F1F3F2F27")
610 CALL CHAR(81,"80808080BFFFC3DF")
620 CALL CHAR(82,"000000000080C0E0")
630 CALL CHAR(83,"000000001F3F60FF")
640 CALL CHAR(84,"2D6F7F2DADEF7735")
650 CALL CHAR(88,"371F1F1F1F151515")
660 CALL CHAR(89,"FF6F3C011F000080")
670 CALL CHAR(90,"F1F1F0B030302020")
680 CALL CHAR(91,"FF6D3D180C000000")
690 CALL CHAR(92,"D797971707050505")
700 CALL CHAR(96,"150D070303030301")
710 CALL CHAR(97,"8080C1C6EDF9FBE7")
720 CALL CHAR(98,"21A100A0FBFEF8FF")
730 CALL CHAR(99,"003078CD0F071FFC")
740 CALL CHAR(100,"0614BCF8F8F8F8F8")
750 CALL CHAR(104,"0100000000000000")
760 CALL CHAR(105,"E7F3F35151292B17")
770 CALL CHAR(106,"04C0FFF0FFE03F3F")
780 CALL CHAR(107,"183020000001C183")
790 CALL CHAR(108,"707060E0E0C0C080")
800 CALL CHAR(112,"0C225BB387F3FB79")
810 CALL CHAR(113,"0E1E3FFBF1E1C0C0")
820 CALL CHAR(114,"60E0C0C0C0FE3F00")
830 CALL CHAR(115,"0307061C3870E000")
840 CALL CHAR(116,"8000000000000000")
850 CALL CHAR(120,"793F1E0000000000")
860 CALL CHAR(121,"8000000000000000")
900 PRINT "BCD                         JKL                         RST                         "
910 PRINT "Z[\                         bcd                         jkl                         "
920 PRINT "rst                         "
930 PRINT
940 PRINT
950 PRINT
960 PRINT
970 PRINT
980 PRINT
990 PRINT
1000 PRINT
1010 PRINT
1020 PRINT
1030 PRINT
1040 PRINT
1050 PRINT
1060 PRINT
1070 PRINT
1080 PRINT
1190 DATA 1,1,64,1,2,65,2,1,72,2,2,73,3,1,80,3,2,81,4,1,88,4,2,89
1200 DATA 5,1,96,5,2,97,6,1,104,6,2,105,7,1,112,7,2,113,8,1,120,8,2,121
1230 RESTORE 1190
1240 FOR FILL=1 TO 16
1250 READ Y,X,CP
1260 CALL VCHAR(Y,X,CP)
1270 NEXT FILL
1280 CALL KEY(0,K,S)
1290 IF S=0 THEN 1280
1300 OPEN #1:"PIO"
1310 REM  OR EQUIVALENT RS232 FILE NAME
1320 PRINT #1:CHR$(27);"A";CHR$(8)
1330 FOR A=1 TO 32
1340 PRINT #1:CHR$(27);"K";CHR$(192);CHR$(0)
1350 FOR B=24 TO 1 STEP-1
1360 CALL GCHAR(B,A,[CHAR)
1370 IF CHAR<33 THEN 1500
1380 CALL CHARPAT(CHAR,DEF$)
1390 IF DEF$="0000000000000000" THEN 1500
1400 FOR SEG=16 TO 2 STEP-2
1410 HEX=ASC(SEG$(DEF$,SEG,1))
1420 GOSUB 1640
1430 PRINTDEF=HEX
1440 HEX=ASC(SEG$(DEF$,SEG-1,1))
1450 GOSUB 1640
1460 PRINTDEF=PRINTDEF+[HEX*16
1470 PRINT #1:CHR$(PRINTDEF);
1480 NEXT SEG
1490 GOTO 1540
1500 FOR J=1 TO 7
1510 PRINT #1:CHR$(0);
1520 NEXT J
1530 PRINT #1:CHR$(0)
1540 NEXT B
1550 PRINT #1:CHR$(13);CHR$(10)
1560 NEXT A
1570 PRINT #1:CHR$(27);"@"
1580 PRINT #1:CHR$(7)
1590 CLOSE #1
1600 REM  NOW GO WHERE YOU WISH
1610 REM  USING RETURN OR GO TO AS APPROPRIATE
1620 RETURN
1630 STOP
1640 HEX=HEX-48+(HEX>64)*7
1650 RETURN
1660 END
2000 END

 

20211010_214444.jpg

  • Like 1
Link to comment
Share on other sites

Note the original TI printer is a rebadged EPSON MX80 with a serial card in it (the MX80 had either a serial or a parallel card in it, and the cards were available separately as well to allow switching one to the other), so it should work with any program that uses EPSON controls.

  • Like 1
Link to comment
Share on other sites

Your line 1300 is in error- you have used "PIO", whereas  my original code used "PIO.CR.LF"  (I actually omitted the stop between CR and LF, sorry... my eyesight is not what is used to be..).
The printer interface manual actually says you only need "PIO.CR" and that .CR will turn off the carriage return and line feed but the manuals for many TI graphiucs programs refer to PIO.CR.LF.- The Printers Apprentice says to use either PIO.CR.LF or PIO.CR....
Confusingly the .CR is referred to in the manual as CRLF OFF. By default the interface has CRLF ON.

You MUST use PIO.CR.LF  (or PIO.CR) for all TI graphics programs, otherwise there will be a line feed after each character.

In your coding line 1550 takes care of the line feeds at the appropriate time.

That should get things going....

Edited by blackbox
reduce to PIO.CR
  • Like 1
Link to comment
Share on other sites

9 hours ago, blackbox said:

Your line 1300 is in error- you have used "PIO", whereas  my original code used "PIO.CR.LF"  (I actually omitted the stop between CR and LF, sorry... my eyesight is not what is used to be..).
The printer interface manual actually says you only need "PIO.CR" and that .CR will turn off the carriage return and line feed but the manuals for many TI graphiucs programs refer to PIO.CR.LF.- The Printers Apprentice says to use either PIO.CR.LF or PIO.CR....
Confusingly the .CR is referred to in the manual as CRLF OFF. By default the interface has CRLF ON.

You MUST use PIO.CR.LF  (or PIO.CR) for all TI graphics programs, otherwise there will be a line feed after each character.

In your coding line 1550 takes care of the line feeds at the appropriate time.

That should get things going....

HAHAAA! Thanks. i will try this as soon as I can. I suppose the original post with pio.crlf is what threw me off. i hadn't even thought about the stop. so when I got the error, I removed it entirely and it started printing. I will fix and try again, probably later tonight if not, then tomorrow.

Link to comment
Share on other sites

On 10/11/2021 at 6:41 AM, blackbox said:

Your line 1300 is in error- you have used "PIO", whereas  my original code used "PIO.CR.LF"  (I actually omitted the stop between CR and LF, sorry... my eyesight is not what is used to be..).
The printer interface manual actually says you only need "PIO.CR" and that .CR will turn off the carriage return and line feed but the manuals for many TI graphiucs programs refer to PIO.CR.LF.- The Printers Apprentice says to use either PIO.CR.LF or PIO.CR....
Confusingly the .CR is referred to in the manual as CRLF OFF. By default the interface has CRLF ON.

You MUST use PIO.CR.LF  (or PIO.CR) for all TI graphics programs, otherwise there will be a line feed after each character.

In your coding line 1550 takes care of the line feeds at the appropriate time.

That should get things going....

Continuing this conversation here so as to return this thread to its original intent: 

 

Link to comment
Share on other sites

...

 

Should see about writing a handler for serial pen plotters using HPGL.

 

WHY?!

 

I hear some people ask.  Well, I will tell you.  When HP created PCL for their laser printers (which includes anything modern!), they included nearly the entire HPGL language syntax as a subset of PCL-- SO-- targetting those old as sin pen plotters (which I happen to have!) will also target modern laser printers.

 

It really is quite simple to control such a plotter BTW.  All commands are naked ascii characters, with each command string terminated by a semicolon.  You dont even need the whole language to do 99% of everything you would want to do. The following commands in the language will do basically anything you need that printer to do:

 

[Initialize the printer]

IN;

 

[Set the printer to internal defaults]

DF;

 

[Select Pen. Pen 0 is 'no pen'/put pen away]

SPx;

 

[Set pen thickness; useful for laser printers which dont have an actual pen, but you might want thicker lines]

PT<foo>;

 

[Pick the pen up from the paper]

PU;

 

[Put the pen down on the paper]

PD;

 

[Plot a string of text using the internal font]

LB<string of text terminated by ASCII character 03. May contain CR and LF chars.>;

 

PU and PD accept sequences of absolute coordinates in millimeters.  Imagine controlling an etch-a-sketch.

 

On laser printers, the default pen size is some tiny little dot-- like .01mm diameter. 

 

It should be possible to list a program, for instance, just by initializing the printer, setting defaults, then wrapping the entire program's text in an LB command.

 

 

Sadly, I do not know of a way to reprogram the printer's internal font with user-defined vectors.

 

Still, with the minimal command-set needed to do basically "everything"; an assembler handler should be quite doable.

  • Like 2
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...