Jump to content
Omega-TI

OT: Dumping Thread

Recommended Posts

Where is everyone? on spring break...

This place is sooooo quiet

Back to work on snp...

Edited by GDMike
  • Like 1

Share this post


Link to post
Share on other sites

As I predicted My Babylon 5 watching has concluded and I have canceled my HBO Max Subscription. Now I have moved on to Paramount+.

 

fc8d7729c481fdd746d6972e598352b8.jpg

 

I’m sure that subscription will also be over soon. Oh look they also have the Chappelle show.

 

 

 

 

Share this post


Link to post
Share on other sites
13 hours ago, GDMike said:

Question, is there something called funnel-web? What does it do

Funnel web was/is an extremely good package for XB auto load that puts up a menu of your commonly used programs.


Like TI-Writer and E/A, program launcher, DM1000, and custom entries you put in.

 

around 1987-89 I did all my programming and word processing under Funnelweb. 
 

special treat  was that the authors took a US vacation and visited users groups to demonstrate Funnelweb to those not yet aware of its power. Tony and Will Mcgivern were guests of the Front Range 99’ers where I saw Fweb for  the first time. 
 

 

  • Like 3

Share this post


Link to post
Share on other sites
5 hours ago, FarmerPotato said:

Funnel web was/is an extremely good package for XB auto load that puts up a menu of your commonly used programs.


Like TI-Writer and E/A, program launcher, DM1000, and custom entries you put in.

 

around 1987-89 I did all my programming and word processing under Funnelweb. 
 

special treat  was that the authors took a US vacation and visited users groups to demonstrate Funnelweb to those not yet aware of its power. Tony and Will Mcgivern were guests of the Front Range 99’ers where I saw Fweb for  the first time. 
 

 

I used it back in 83'87 somewhere around there, but could not remember what it was.. thx

Edited by GDMike
  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, TheBF said:

VAX had a POLY instruction to evaluate polynomials.  :)

We always looked for excuses in our school projects to find ways to call that. So many twisted designs seen during our Compilers course...

  • Like 2

Share this post


Link to post
Share on other sites
3 hours ago, InfiniteTape said:

We always looked for excuses in our school projects...

Long live tape

I wasn't hitting the tapes I guess I wasn't old enough, but was more into cd. But I use tape backup!

Infinite tape...let's have a moment of hiss

https://www.bbc.com/news/world-europe-56355444

And let's have a moment of silence for the CD development.

https://www.washingtonpost.com/local/obituaries/lou-ottens-dead/2021/03/10/2acec574-81c7-11eb-ac37-4383f7709abe_story.html

Edited by GDMike
  • Like 2

Share this post


Link to post
Share on other sites

I am SO HAPPY. (but also sleepy)

 

After I dont know how many goddamn hours of fiddling, (And then whipping up a simple spoon-feeder qbasic64 program, to get around the ABSURDLY CRIPPLED serial buffer baked in), I have gotten my hack&slashed HP 7440A (an 8 pen serial pen plotter) finally able to print reliably!

 

Apparently, Even setting the port speed down to 1200 baud was not sufficient, because the computer would just overflow the minuscule 60 byte (Yes, 60 BYTE, I looked it up!!) buffer inside the printer very quickly, causing it to overflow, and then draw random insane scribbles. (HP felt that if you wanted to you know, ACTUALLY USE the thing, you should get a special upgrade cartridge that increases the buffer to 1024 bytes. I can not find either this cartridge, or schematics for the cartridge. SO, Spoon-Feeding it is!)

 

I made a QB64 program that reads an input HPGL file and the appropriate COM port (with an output buffer size that is correct), and then literally SPOON FEEDS the printer one byte at a time with a sensible delay between bytes sent.

 

 

Since the plotter does not really give any feedback on the serial port that it has completed the contents of its buffer, I have to be super conservative on how much I feed it to avoid overflowing it.

BUT-- I can make fancy greeting cards on cardstock using magic markers now.  8 pens! Fully addressable!

 

Now I just need to play with the Axidraw extension for Inkscape so I can get used to making this thing blend colors using overlapping layers... (Since it lets me make hatched shading of arbitrary distance, and angle.)

 

 

Edited by wierd_w
  • Like 3

Share this post


Link to post
Share on other sites

It looks like one of the 17440A Graphics Enhancement Cartridges sold sometime in the recent past on eBay for $25, and I found two companies online saying they have them (but you don't want their prices, most likely, as they tend to supply the aviation/government market and probably have serious markup issues).

  • Like 1

Share this post


Link to post
Share on other sites

25$ is an acceptable price, but Ebay does not have any right now. (and no, I am not paying govt contractor prices.)

 

Spoon feeding works, it just prints V.E.R.Y. S.L.O.W.L.Y.

 

The issue I have, is that without a means of getting feedback from the printer about its buffer state, I cannot efficiently keep the buffer filled, and some instructions take longer to process than others.  For instance, an SPx; command (Select Pen #x) takes about 5 seconds to complete, but is only 4 bytes.  Meanwhile, a PDxxxx,yyyy(xxxx,yyyy...) command sequence can complete in fractions of a second for each position the pen seeks to. 

 

The only control messages I get back from the plotter are XON/XOFF messages.

 

So, I defined an output buffer for the serial port of 60char with QB64, then spoon feed the individual bytes to it at 1 byte per 1/60th a second. Since most instructions complete faster than this, the buffer stays mostly empty. This permits a bit of leeway when a pen change happens, allowing that 60 byte buffer to catch the spill while the plotter jiggery pokes getting the pen.

 

I suppose a more intelligent spoon-feeder would look for and catch SPx; instructions, and introduce a 5 sec wait before throwing data down the port. Buffer management would be easier that way, and the plotter could accept data more quickly. 

 

So far though, the plotter spends most of its time stuttering (since it is waiting for data), and going "thud thud thud" fairly quickly, but is actually plotting reliably, regardless of what I have sent at it.  (Sent arcs, lines, and fills at it, which covers basically everything it can do. HPGL is hardly a robust language you know.)

 

Slow but free makes me happy. 

 

  • Like 3

Share this post


Link to post
Share on other sites

I was viewing a new post today...

6 hours ago, oddemann said:

New program I am testing... BUT... in line 160 I find this, "@=23" the character in the book dos not look anything like @, been trying to figure this one... I think it has to do with printing on paper. So the main question, is the listing correct with @ in it?

Book "entertainment-games-in-ti-basic-and-extended-basic", program: Biorhythm
From here: http://www.hexbus.com/tibooks/

Downloaded the files, then as it did not work, I "fixed" it (downloaded the PDF to look), but could not make out @ character. So I ask you!

 

  Hide contents

10 !/////////////
20 !/ BIORHYTHM /
30 !/////////////
40 !
50 !///INITIALIZE///
60 DIM DOM(12) :: ON WARNING NEXT :: CALL INIT :: CALL LOAD(-31878,0)
70 DATA 31,28,31,30,31,30,31,31,30,31,30,31
80 FOR I=1 TO 12 :: READ S :: K=K+S :: DOM(I)=K :: NEXT I
90 CALL CHAR(39,"000000007E",96,"1899FF1818246642",104,"0066E7FFFF7E3C18",112,"1014583FFC1A2808",120,"817E665A5A667E81")
100 CALL COLOR(9,11,1,10,9,1,11,5,1,12,13,1)
110 !///OPENING///
120 CALL CLEAR :: CALL SCREEN(16) :: CALL COLOR(2,9,1)
130 A$=RPT$(" ",7) :: B$=RPT$("*",13) :: C$="*           *" :: PRINT A$;B$:A$;C$:A$;"* BIORHYTHM *":A$;C$:A$;B$: : : : : : : : : : : : : :"NEED INSTRUCTIONS?(Y/N)*";
140 CALL CHARPAT(42,A$) :: B$="000000103810"
150 CALL KEY(0,K,S) :: IF K=78 THEN 320 ELSE IF K<>89 THEN CALL SOUND(100,110,3) :: CALL CHAR(42,B$) :: CALL SOUND(200,110,16) :: CALL CHAR(42,A$) :: CALL SOUND(400,44733,30) :: GOTO 150
160 INPUT "TO PRINTER OR SCREEN?(P/S)":A$ :: IF A$="P" THEN FILE=1 :: @=23 :: OPEN #1:"RS232.DA=8.BA=4800" ELSE IF A$<>"S" THEN 160 ELSE FILE=0 :: @=1
170 !//INSTRUCTIONS//
180 DATA "********* BIORHYTHM ********",,"*THE THEORY OF BIORHYTHM","STATES THAT EVERYONE HAS","THREE CYCLES WHICH START ON"
190 DATA THE DAY OF HIS BIRTH.,,*THESE CYCLES ARE:,-----PHYSICAL CYCLE(23 DAYS),----EMOTIONAL CYCLE(28 DAYS)
200 DATA -INTELLECTUAL CYCLE(33 DAYS),,"*IN THIS PROGRAM,CYCLES SPAN",FROM -1(LOW) TO 1(HIGH).
210 DATA ,"*""HIGH"" DAYS OF A CYCLE ARE",WHEN FIGURES OF THAT CYCLE,"RISE ABOVE THE MIDDLE LINE,","AND ""LOW"" DAYS ARE BELOW IT."
220 DATA,*WHEN ALL 3 OF THE CYCLES,COINCIDE ABOVE THE MIDDLE,"LINE,PERSON IS AT HIS BEST!"
230 CALL CLEAR :: RESTORE 180 :: FOR I=1 TO 23 :: READ A$ :: PRINT #FILE:TAB(@);A$ :: NEXT I :: IF FILE=1 THEN 250 ELSE PRINT "****PRESS ANY KEY";
240 CALL KEY(0,K,S) :: IF S=0 THEN 240
250 CALL CLEAR :: PRINT "*WHEN ASKED FOR THESE KEYS, THEY HAVE THE FOLLOWING":"FUNCTIONS:"
260 PRINT:"-PROCEED: CONTINUE PROGRAM": :"-REDO: BACK TO INPUT SCREEN": :"-": IF IN INPUT, SCREEN WILL":"PRINT TO PRINTER 12 MONTHS"
270 PRINT "    IF IN GRAPH, SCREEN WILL PRINT TO PRINTER BIORHYTHM  GRAPH": :"-BEGIN: ASK FOR DIFFERENT   NAME": :"-BACK: END PROGRAM"
280 PRINT #FILE: :TAB(@);"*AVERAGE OF CYCLES IS THE":TAB(@);"AVERAGE ON DAY LISTED.";CHR$(12)
290 PRINT:"****PRESS ANY KEY";
300 CALL KEY(0,K,S) :: IF S=0 THEN 300 ELSE IF FILE=1 THEN CLOSE #1
310 !///START///
320 CALL CLEAR :: RD,PR=0 :: CALL CHAR(43,"0010101010101")
330 INPUT "WHAT IS YOUR NAME?":N$ :: CALL CLEAR :: PRINT: : :"HELLO ";N$: : : : : : : : : : : :: CALL SAY("HELLO")
340 !//MONTHS//
350 DATA JANUARY,3,FEBRUARY,0,MARCH,3,APRIL,2,MAY,3,JUNE,2,JULY,3,AUGUST,3,SEPTEMBER,2,OCTOBER,3,NOVEMBER,2,DECEMBER,3
360 !//BIRTHDATES//
370 !DATA ODD KRISTENSEN, AUGUST,11,1968
380 !DATA**IN THIS FORM:<NAME,MONTH,DATE,YEAR>. EXAMPLE: JOE BLOW,JANUARY,1,1892,MARY BLOW,APRIL,4,1983 ETC...
390 !DATA**BUT PUT IT BEFORE DATA ZZZ,ZZZ,0,0
400 DATA ZZZ,ZZZ,0,0
410 DISPLAY AT(1,1)ERASE ALL:"*********BIRTHDATE**********": : :"MONTH OF BIRTH:": :"DATE OF BIRTH:": :"YEAR OF BIRTH:"
420 IF RD THEN 450
430 RESTORE 370
440 READ A$,MO$,DA,YR :: IF A$="ZZZ" THEN 460 ELSE IF A$<>N$ THEN 440
450 DISPLAY AT(4,20)BEEP:MO$ :: DISPLAY AT(6,19):DA :: DISPLAY AT(8,19):YR :: GOTO 510
460 CALL SAY("PLEASE+ANSWER THEN PRESS+ENTER") :: ACCEPT AT(4,20)SIZE(-9)BEEP:MO$ :: ACCEPT AT(6,20)SIZE(-2)BEEP:DA :: ACCEPT AT(8,20)SIZE(-4)BEEP:YR
470 IF(DA>0 AND YR>0 AND DA=INT(DA)AND YR=INT(YR))THEN 510
480 CALL SAY("#THAT IS INCORRECT# #TRY AGAIN#") :: GOTO 460
490 IF I=13 THEN B$="WHAT IS A "&MO$&"?" ELSE B$=STR$(DA)&" DAYS IN "&MO$&"?!?"
500 DISPLAY AT(24,1):B$ :: GOTO 460
510 RESTORE 350
520 FOR I=1 TO 12 :: READ A$,BT :: IF A$=MO$ THEN MO=I :: I=14
530 NEXT I :: IF YR/4=INT(YR/4)AND BT=0 THEN BT=1
540 IF I=13 OR DA>BT+28 THEN 490
550 DISPLAY AT(24,1)BEEP:"PRESS PROCEED,REDO OR """
560 CALL KEY(0,K,S) :: IF K=6 THEN 460 ELSE IF K=34 THEN 570 ELSE IF K=12 THEN 600 ELSE 560
570 DISPLAY AT(24,1):"IS PRINTER READY?(Y/N):N" :: ACCEPT AT(24,24)SIZE(-1)VALIDATE("YN"):A$ :: IF A$="N" THEN 550 ELSE DISPLAY AT(24,1):"WHAT YEAR?1983" :: ACCEPT AT(24,11)SIZE(-4)VALIDATE(DIGIT):YR1
580 IF YR1<YR THEN 570
590 DISPLAY AT(24,1):"STARTING MONTH:JANUARY" :: ACCEPT AT(24,16)SIZE(-9)BEEP:MO1$ :: GOTO 690
600 DISPLAY AT(12,1):"*******PROJECTION DAY*******": : :"THE MONTH:": :"THE DATE:": :"THE YEAR:": : : : : :
610 IF K=34 THEN 720 ELSE CALL SAY("PLEASE+ANSWER THEN PRESS+ENTER")
620 DISPLAY AT(19,20):"1983"
630 ACCEPT AT(15,20)SIZE(-9)BEEP:MO1$ :: ACCEPT AT(17,20)SIZE(-2)BEEP:DA1 :: ACCEPT AT(19,20)SIZE(-4)BEEP:YR1
640 IF(DA1>0 AND YR1>0 AND DA1=INT(DA1)AND YR1=INT(YR1)AND YR<=YR1)THEN 740
650 CALL SAY("#THAT IS INCORRECT# #TRY AGAIN#") :: GOTO 630
660 IF I=13 THEN B$="   INVENTED A NEW MONTH?" ELSE B$="ONLY "&STR$(NT+28)&" DAYS IN "&MO1$
670 DISPLAY AT(24,1):B$ :: GOTO 630
680 !///LOOPS FOR 1 YEAR///
690 RESTORE 350
700 FOR I=1 TO 12 :: READ A$,NT :: IF A$=MO1$ THEN MO1=I :: I=14
710 NEXT I :: IF I=13 THEN 590
720 PR=1 :: DA1=15 :: FOR LFY=MO1 TO 12 :: RESTORE 350 :: FOR K=1 TO LFY :: READ MO1$,NT :: NEXT K :: MO1=LFY
730 DISPLAY AT(15,20)BEEP:MO1$ :: DISPLAY AT(17,19):DA1 :: DISPLAY AT(19,19):YR1 :: GOTO 790
740 RESTORE 350
750 FOR I=1 TO 12 :: READ A$,NT :: IF A$=MO1$ THEN MO1=I :: I=14
760 NEXT I :: IF YR1/4=INT(YR1/4)AND NT=0 THEN NT=1
770 IF I=13 OR DA1>NT+28 THEN 660
780 DISPLAY AT(24,1)BEEP:"   PRESS PROCEED OR REDO"
790 CALL KEY(0,K,S) :: IF K=6 THEN 630 ELSE IF K<>12 AND PR=0 THEN 790
800 !//DAYS LIVED//
810 DTB=INT(365.25*YR+DOM(MO-1))+DA
820 DTN=INT(365.25*YR1+DOM(MO1-1))+DA1
830 DL=DTN-DTB
840 !///SINE GRAPH///
850 DISPLAY AT(1,1)ERASE ALL:"*********BIORHYTHM**********": :"NAME: ";N$:"+=";MO1$;" ";STR$(DA1);",";YR1
860 CALL HCHAR(12,2,39,31) :: CALL VCHAR(5,16,43,14)
870 DISPLAY AT(20,1):CHR$(96);"=PHYSICAL CYCLE":CHR$(104);"=EMOTIONAL CYCLE":CHR$(112);"=INTELLECTUAL CYCLE"
880 DISPLAY AT(24,1):"PRESS REDO,BEGIN,",OR BACK"
890 CALL GRAPH(23,DL) :: CALL GRAPH(28,DL) :: CALL GRAPH(33,DL)
900 DISPLAY AT(23,1):"AVERAGE OF CYCLES:";SEG$(STR$((SIN(PI/180*360*DL/23)+SIN(PI/180*360*DL/28)+SIN(PI/180*360*DL/33))/3),1,7)
910 CALL KEY(0,K,S) :: IF K=6 THEN RD=1 :: GOTO 410 ELSE IF K=14 THEN 320 ELSE IF K=15 THEN CALL CLEAR :: STOP ELSE IF K<>34 AND PR=0 THEN 910
920 !///PRINTOUT///
930 @=16 :: GR$=CHR$(27)&"K"&CHR$(8)&CHR$(0) :: B$=CHR$(96)&CHR$(35)&CHR$(38)&CHR$(248)&CHR$(248)&CHR$(38)&CHR$(35)&CHR$(96)!/MAN/
940 C$=CHR$(56)&CHR$(124)&CHR$(126)&CHR$(31)&CHR$(31)&CHR$(126)&CHR$(124)&CHR$(56)!/HEART/
950 D$=CHR$(8)&CHR$(40)&CHR$(26)&CHR$(252)&CHR$(63)&CHR$(88)&CHR$(20)&CHR$(16)!/CROSS/
960 E$=RPT$(CHR$(0),8)!/SPACE/
970 F$=CHR$(0)&RPT$(CHR$(8),6)&CHR$(0)!/DASH/
980 G$=RPT$(CHR$(0),4)&CHR$(255)&RPT$(CHR$(0),3)
990 H$=CHR$(129)&CHR$(126)&CHR$(102)&CHR$(153)&CHR$(153)&CHR$(102)&CHR$(126)&CHR$(129)!/COINC/
1000 OPEN #1:"RS232.DA=8.BA=4800.CR"
1010 PRINT #1:CHR$(14);TAB(16);"BIORHYTHM";CHR$(10);CHR$(10);TAB(@);"NAME: ";N$;CHR$(10);TAB(@);"BIRTHDATE: ";MO$;" ";STR$(DA);",";YR;CHR$(10)
1020 PRINT #1:TAB(@);GR$&G$;CHR$(27);"E";"=";MO1$;" ";STR$(DA1);",";YR1;CHR$(@);CHR$(10);CHR$(27);"F";CHR$(10)
1030 IF DA1<>15 THEN 1060 ELSE A$="1234567890123456789012345678" :: IF MO1=2 AND YR1/4=INT(YR1/4)THEN A$=A$&"9" ELSE A$=A$&SEG$("901",1,NT)
1040 PRINT #1:TAB(@);
1050 FOR I=1 TO LEN(A$) :: PRINT #1:CHR$(27);"K";CHR$(2);CHR$(0);CHR$(0);CHR$(0);SEG$(A$,I,1) :: NEXT I :: PRINT #1:CHR$(10)
1060 FOR I=5 TO 18 :: A$="" :: FOR K=2 TO 32 :: CALL GCHAR(I,K,S) :: IF S=39 THEN A$=A$&F$ ELSE IF S=120 THEN A$=A$&H$ ELSE IF S>95 THEN 1080 ELSE IF S=43 THEN A$=A$&G$ ELSE A$=A$&E$
1070 GOTO 1090
1080 IF S=96 THEN A$=A$&B$ ELSE IF S=104 THEN A$=A$&C$ ELSE A$=A$&D$
1090 NEXT K :: PRINT #1:TAB(@);CHR$(27);"K";CHR$(248);CHR$(0);A$;CHR$(10) :: NEXT I
1100 PRINT #1:TAB(@);GR$&B$;"=PHYSICAL CYCLE";CHR$(10);TAB(@);GR$&C$;"=EMOTIONAL CYCLE";CHR$(10);TAB(@);GR$&D$;"=INTELLECTUAL CYCLE";CHR$(10)
1110 PRINT #1:TAB(@);GR$&H$;"=COINCIDENCE";CHR$(10)
1120 PRINT #1:TAB(@);"AVERAGE OF CYCLES:";SEG$(STR$((SIN(PI/180*360*DL/23)+SIN(PI/180*360*DL/28)+SIN(PI/180*360*DL/33))/3),1,7);CHR$(13)
1130 IF PR=1 THEN IF LFY/2=INT(LFY/2)THEN PRINT #1:CHR$(12)ELSE PRINT #1:RPT$(CHR$(10),5)
1140 CLOSE #1 :: IF PR<>1 THEN 910
1150 NEXT LFY :: PR=0 :: GOTO 910
1160 SUB GRAPH(A,B)
1170 FOR Y=2 TO 32 :: X=INT(SIN(PI/180*360*(B+Y-16)/A)*-6)+12
1180 CALL GCHAR(X,Y,C) :: IF C>95 THEN CALL SOUND(100,999,0) :: CALL VCHAR(X,Y,120)ELSE CALL VCHAR(X,Y,(A-23)/5*8+96)
1190 NEXT Y
1200 SUBEND

 

 

...and was reminded of a fellow I hadn't recalled in some 30+ years!

He pioneered some sort of vending type machines in California, that produced(printed) your biorhythm, while you wait!

Well, this was new at the time '76-'77.

 

Curiously, it brought me here...

 

Electronic Fun with Computer & Games - Vol 02 No 02 (1983-12)(Fun & Games Publishing)(US)

 

Page 8(hardcopy), Page 10(viewer). "TI HITS COMING!"👀

 

I don't think I'd ever perused this chronicle.8)

Edited by HOME AUTOMATION
  • Like 1

Share this post


Link to post
Share on other sites

Ran into an issue where pen-change has a snafu, and takes longer than expected, and the print buffer overflows (making the crazy happen.)

 

Implemented the hard 5 second timeout on pen change. Literally halts sending data to the port for 5 whole seconds after a pen-change operation. I can adjust this to be more obnoxious if needed.

Reading more, the "enhanced graphics cartridge" does more than just make the buffer bigger. It also adds several missing HPGL instructions that would be very nice to have, like filled polygon.

 

Currently, I am having to manually fill my polygon areas with axidraw extension's "Crosshatch" function.  However, it is very.. Hrmm..  Let's just say it is not the fastest operation, nor the most stable.

  • Like 1

Share this post


Link to post
Share on other sites

Also, been making some "not the best quality, but still more accurate than 3D prints" pen collets using some re-usable mold maker, some straight sewing pins (to help hold a naked pen ink barrel) and some 2 part liquid epoxy.

 

I am hoping for better pen retention, better pen pickup, and better pen tip registration alignment.  So far so good.

 

These particlar ones are for papermate InkJoy gel pens. (have a .15mm dia line thickness, and write very smooth.)

Edited by wierd_w
  • Like 1

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...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...