On Sep 5, 2022, at 9:35 AM, Tom Lake <tl...@twcny.rr.com> wrote:
I have a program that draws a hat in hi-res using the enhanced VT-100 codes included with the Altair-Duino. I can draw points by drawing a line with the start and end points the same.
What I'd like to do, though, is be able to draw lines and circles in the background color so that they're invisible and erase whatever they cross. I don't see a way to do this. I tried turning invisible text mode on before drawing but that didn't work. Is there a way?
--
You received this message because you are subscribed to the Google Groups "Altair-Duino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/8efe72a2-b04e-4299-8a80-3e2b75ce7b73n%40googlegroups.com.
On Sep 5, 2022, at 4:38 PM, John Galt <furba...@gmail.com> wrote:
I was explaining this months ago when I posted my original spiral on the forums;I talked about modifying the terminal i/o code to allow you to delete a pixel, line, circle, or box currently the only way is you must clear the screen in order to do this.In order to do this you must reprogram the PIC32 in the Terminal I/OAttached in the code required to modify Geoff Graham's ASCII video terminals with David's USB mod for the Altair Pro Terminal I/O card to include my little graphics patch.it adds 5 additional escape codes allowing additional graphics functions.The current escape codes areDraw a line ESC [Z1;;;;ZDraw a box ESC [Z2;;;;ZDraw a filled box ESC [Z3;;;;ZDraw a circle ESC [Z4;;;ZDraw a filled circle ESC [Z5;;;ZI've addederase a line ESC [Z6;;;;Zerase a box ESC [Z7;;;;Zerase a filled box ESC [Z8;;;;Zerase a circle ESC [Z9;;;Zerase a filled circle ESC [Z10;;;ZIt is backwards compatible since it adds 5 more escape codes rather then redoing the original 5 with another option.the main changes are in VT100.Cthe code is// draw graphics
void cmd_Draw(void) {
// if(Display24Lines) {
// arg[2] = (arg[2]/3)*2;
// arg[4] = (arg[4]/3)*2;
// }
if(arg[0] == 1) DrawLine(arg[1], arg[2], arg[3], arg[4], 1);
if(arg[0] == 2) DrawBox(arg[1], arg[2], arg[3], arg[4], 0, 1);
if(arg[0] == 3) DrawBox(arg[1], arg[2], arg[3], arg[4], 1, 1);
if(arg[0] == 4) DrawCircle(arg[1], arg[2], arg[3], 0, 1, vga ? 1.14 : 1.0);
if(arg[0] == 5) DrawCircle(arg[1], arg[2], arg[3], 1, 1, vga ? 1.14 : 1.0);
if(arg[0] == 6) DrawLine(arg[1], arg[2], arg[3], arg[4], 0);
if(arg[0] == 7) DrawBox(arg[1], arg[2], arg[3], arg[4], 0, 0);
if(arg[0] == 8) DrawBox(arg[1], arg[2], arg[3], arg[4], 1, 0);
if(arg[0] == 9) DrawCircle(arg[1], arg[2], arg[3], 0, 0, vga ? 1.14 : 1.0);
if(arg[0] == 10) DrawCircle(arg[1], arg[2], arg[3], 1, 0, vga ? 1.14 : 1.0);
google will not allow me to attach the entire code archive.but here are the 2 main changes i made.download the code off Github https://github.com/dhansel/TerminalUSB and then copy over main.c and vt100.c from the attached zip file.recompile and upload the new firmware to your PIC32 in the terminal I/O board. you will get a new message on startup confirming the patch i made is enabled.it will allow you to do what you want.
--
You received this message because you are subscribed to the Google Groups "Altair-Duino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/67dfbdd4-06ad-45f4-b8ae-f337d18bbf09n%40googlegroups.com.
i just realized this old code i threw together months ago just using the space bar to quit when its done.i thought it was using any of the keys but it isn't. if you compile the code to run it faster then just hit stop reset if you don't want to wait for it to finish.On Tuesday, September 6, 2022 at 8:46:26 PM UTC-4 John Galt wrote:0 ' ARCHIMEDES SPIRAL PORT TO ALTAIR WITH ASCII VIDEO TERMINAL VER 1.3 BY JOHN GALT 2022
10 ' SETUP TERMINAL DRAW FUNCTIONS FOR ALTAIR PRO 8800 TERMINAL
25 F1$="[Z1;":F2$=";":F3$="Z":F4$="[":F5$="H":F6$="[H":F7$="[2J":F8$="[Z6;"
30 ESC$= CHR$(27) 'ESC CHARACTER
40 HOME$= ESC$+F6$ 'HOME THE CURSOR UPPER LEFT
50 CLS$= ESC$+F7$ 'CLEAR SREEN
60 DEF FNLTRIM$ (X$)= RIGHT$(X$, (LEN(X$)-1)) 'STRIP THE LEADING SPACE STR CONVERT
70 DEF FNLOCATE$ (X$,Y$)= ESC$+F4$+X$+F2$+Y$+F5$ 'LOCATE TEXT ON TERMINAL AT ROW,COL
80 DEF FNPIXEL$ (X$,Y$)= ESC$+F1$+X$+F2$+Y$+F2$+X$+f2$+Y$+F3$ 'PSET(X,Y) ON
85 DEF FNPIXEL1$ (X$,Y$)= ESC$+F8$+X$+F2$+Y$+F2$+X$+f2$+Y$+F3$ 'PSET(X,Y) OFF
86 DEF FNLINE$ (X3$,Y3$,X4$,Y4$)= ESC$+F1$+X3$+F2$+Y3$+F2$+X4$+f2$+Y4$+F3$ 'LINE(X1,Y1,X2,Y2) 'LINE ON
87 DEF FNLINE1$ (X3$,Y3$,X4$,Y4$)= ESC$+F8$+X3$+F2$+Y3$+F2$+X4$+f2$+Y4$+F3$ 'LINE(X1,Y1,X2,Y2) 'LINE OFF
400 '
410 ' PREPARE FOR GRAPHICS
420 GALT=0
430 PRINT "THIS PROGRAM CAN TAKE UPWARDS OF 4 HOURS TO COMPLETE"
440 PRINT "IT IS DESIGNED TO RUN TO COMPLETION BEFORE ALLOWING KEYBOARD INPUT TO RESUME"
450 PRINT "WHEN COMPLETE PRESS ANY KEY TO EXIT BACK TO CPM"
460 PRINT "DO YOU WANT TO PLOT AS A SOLID (Y/n)? (SOLID: REQUIRES GRAPHICS PATCH 2022 JOHN GALT FOR TERMINAL)"
470 INPUT SOLID$:
480 IF (SOLID$="y" OR SOLID$="Y") THEN GALT=1
490 PRINT CLS$;:PRINT ESC$+"[?25l"; ' CURSOR OFF
500 '
510 ' MAIN PROGRAM
520 '
530 XP=144:XR=4.71238905:XF=XR/XP '4.71238905 2.25X2.25
540 FOR ZI=-64 TO 64
550 ZT=ZI*2.25:ZS=ZT*ZT
560 XL=INT(SQR(20736-ZS)+0.5)
570 FOR XI=0-XL TO XL
580 XT=SQR(XI*XI+ZS)*XF
590 YY=(SIN(XT)+SIN(XT*3)*0.4)*56
600 X1=XI+ZI+160:Y1=90-YY+ZI '240x144 160=240 90=144
610 X1=INT(X1):Y1=INT(Y1) ' CHANGED FROM CINT TO INT
620 PRINT HOME$+FNPIXEL$ (FNLTRIM$(STR$(X1)),FNLTRIM$(STR$(Y1)));
630 IF GALT THEN PRINT HOME$+FNLINE1$ (FNLTRIM$(STR$(X1)),FNLTRIM$(STR$(Y1+1)),FNLTRIM$(STR$(X1)),FNLTRIM$(STR$(191)));
640 NEXT XI:NEXT ZI
650 WHILE INKEY$<>" ":WEND
660 ENDOn Tuesday, September 6, 2022 at 8:28:38 PM UTC-4 John Galt wrote:I went back to the code I worked on last year and cleaned it up for the ASCII terminal patch. I'm running 2 tests on it solid and transparent when I'm done, I'll post it here.Solid will only work with my little graphics patch otherwise transparent will work as normal. Solid takes much longer to run.I would recommend compiling the code with BASCOM so it does not take 6 hours to complete.check back soon.
--
You received this message because you are subscribed to the Google Groups "Altair-Duino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/017ad80d-75f3-4d30-a6f6-74ca846f54b2n%40googlegroups.com.
Hi,
The odd thing is that the code compiles and works as a compiled program.
I ran it before I went to bed last night, and now I have a nice clean solid hat on my Altair-Duino Pro LCD monitor.
I tried runnign it on my Altair 8800c connected to a VersaTerm in VT-102 mode, but only got a bunch of numbers on the screen.
I tried all three emulations, PETASCII, VT-52 and VT-102, both Solid and regular mode. Just numbers on the screen.
THIS PROGRAM CAN TAKE UPWARDS OF 4 HOURS TO
COMPLETE
IT IS DESIGNED TO RUN TO COMPLETION BEFORE
ALLOWING KEYBOARD INPUT TO RESUME
WHEN COMPLETE PRESS ANY KEY TO EXIT BACK TO CPM
DO YOU WANT TO PLOT AS A SOLID (Y/n)? (SOLID:
REQUIRES GRAPHICS PATCH 2022 JOHN
GALT FOR TERMINAL)
?
i would add some changes to make my program a little more stable.There appears to be some issues with the ASCII Terminal where it can miss a character being sent. I've seen it send incorrect information as a character is dropped.I would1) disable interrupts.2) have a temp$ that just assembles all the strings being Concatenate together all at once then print that statement to avoid some kind of missed character where the Concatenate is active in the print statement.
I've noticed this behavior of the Ascii terminal before and just kind of ignored it but it shouldn't really being doing it. i minimized it somewhat by forcing variables instead of direct print " " statements.if you say 10 print "HELLO" and loop it it eventually fills basic dynamic memory and forces a garbage clean up. where if you say 10 A$="hello" 20 print A$ and loop it A$ has a permanent place in memory and is no longer dynamic and thus the garbage clean up basic does will not occur. this can cause the terminal to drop a character-----
"I tried runnign it on my Altair 8800c connected to a VersaTerm in VT-102 mode, but only got a bunch of numbers on the screen.I tried all three emulations, PETASCII, VT-52 and VT-102, both Solid and regular mode. Just numbers on the screen."
-----
this is because the graphics commands are not VT102 or VT52 standard the Ascii Terminal has extra graphics abilities.these are driven by escape codes hence when you have a non-compatible terminal it cannot translate the escape codes into something for the screen.this is what happens when you attempt to run a TEK graphics program on a non-TEK supported terminal you will just see escape codes.
i would add some changes to make my program a little more stable.There appears to be some issues with the ASCII Terminal where it can miss a character being sent. I've seen it send incorrect information as a character is dropped.I would1) disable interrupts.2) have a temp$ that just assembles all the strings being Concatenate together all at once then print that statement to avoid some kind of missed character where the Concatenate is active in the print statement.
I've noticed this behavior of the Ascii terminal before and just kind of ignored it but it shouldn't really being doing it. i minimized it somewhat by forcing variables instead of direct print " " statements.if you say 10 print "HELLO" and loop it it eventually fills basic dynamic memory and forces a garbage clean up. where if you say 10 A$="hello" 20 print A$ and loop it A$ has a permanent place in memory and is no longer dynamic and thus the garbage clean up basic does will not occur. this can cause the terminal to drop a character-----
"I tried runnign it on my Altair 8800c connected to a VersaTerm in VT-102 mode, but only got a bunch of numbers on the screen.I tried all three emulations, PETASCII, VT-52 and VT-102, both Solid and regular mode. Just numbers on the screen."
-----
this is because the graphics commands are not VT102 or VT52 standard the Ascii Terminal has extra graphics abilities.
these are driven by escape codes hence when you have a non-compatible terminal it cannot translate the escape codes into something for the screen.
this is what happens when you attempt to run a TEK graphics program on a non-TEK supported terminal you will just see escape codes.
On Wednesday, September 7, 2022 at 7:07:21 AM UTC-4 r4r...@gmail.com wrote:
--
You received this message because you are subscribed to the Google Groups "Altair-Duino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/0bb1ad0a-0ae9-4ca0-b2ed-1d588588ea62n%40googlegroups.com.
I was explaining this months ago when I posted my original spiral on the forums;I talked about modifying the terminal i/o code to allow you to delete a pixel, line, circle, or box currently the only way is you must clear the screen in order to do this.In order to do this you must reprogram the PIC32 in the Terminal I/OAttached in the code required to modify Geoff Graham's ASCII video terminals with David's USB mod for the Altair Pro Terminal I/O card to include my little graphics patch.it adds 5 additional escape codes allowing additional graphics functions.The current escape codes areDraw a line ESC [Z1;;;;ZDraw a box ESC [Z2;;;;ZDraw a filled box ESC [Z3;;;;ZDraw a circle ESC [Z4;;;ZDraw a filled circle ESC [Z5;;;ZI've addederase a line ESC [Z6;;;;Zerase a box ESC [Z7;;;;Zerase a filled box ESC [Z8;;;;Zerase a circle ESC [Z9;;;Zerase a filled circle ESC [Z10;;;ZIt is backwards compatible since it adds 5 more escape codes rather then redoing the original 5 with another option.the main changes are in VT100.Cthe code is// draw graphics
void cmd_Draw(void) {
// if(Display24Lines) {
// arg[2] = (arg[2]/3)*2;
// arg[4] = (arg[4]/3)*2;
// }
if(arg[0] == 1) DrawLine(arg[1], arg[2], arg[3], arg[4], 1);
if(arg[0] == 2) DrawBox(arg[1], arg[2], arg[3], arg[4], 0, 1);
if(arg[0] == 3) DrawBox(arg[1], arg[2], arg[3], arg[4], 1, 1);
if(arg[0] == 4) DrawCircle(arg[1], arg[2], arg[3], 0, 1, vga ? 1.14 : 1.0);
if(arg[0] == 5) DrawCircle(arg[1], arg[2], arg[3], 1, 1, vga ? 1.14 : 1.0);
if(arg[0] == 6) DrawLine(arg[1], arg[2], arg[3], arg[4], 0);
if(arg[0] == 7) DrawBox(arg[1], arg[2], arg[3], arg[4], 0, 0);
if(arg[0] == 8) DrawBox(arg[1], arg[2], arg[3], arg[4], 1, 0);
if(arg[0] == 9) DrawCircle(arg[1], arg[2], arg[3], 0, 0, vga ? 1.14 : 1.0);
if(arg[0] == 10) DrawCircle(arg[1], arg[2], arg[3], 1, 0, vga ? 1.14 : 1.0);
google will not allow me to attach the entire code archive.but here are the 2 main changes i made.download the code off Github https://github.com/dhansel/TerminalUSB and then copy over main.c and vt100.c from the attached zip file.recompile and upload the new firmware to your PIC32 in the terminal I/O board. you will get a new message on startup confirming the patch i made is enabled.it will allow you to do what you want.
And congrats on the beautiful archimedes spiral. I did one of the these and showed it to my 7th grade teacher who was floored. I asked if there were more formulas like theirs, he did that he didn’t even know what this one was.Sent from my iPhone 12pm!Charley Jones, PMP
--
You received this message because you are subscribed to the Google Groups "Altair-Duino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/67dfbdd4-06ad-45f4-b8ae-f337d18bbf09n%40googlegroups.com.
On Sep 17, 2022, at 12:48 PM, Eightbitswide <jeffl...@gmail.com> wrote:
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/026e4ac1-d051-439d-bea9-82c67effd92en%40googlegroups.com.
Hi,
Here are a few equations that make interesting graphics;
MOBIUS STRIP:
LOG(R) * SIN(1/2 * T) = Z * COS(1/2 * T)
BOOBS:
exp(-((x-4)^2+(y-4)^2)^2/1000) + exp(-((x +4)^2+(y+4)^2)^2/1000) + 0.1exp(-((x +4)^2+(y+4)^2)^2)+0.1exp(-((x -4)^2+(y-4)^2)^2)
SIZE 10 FLOWER CIRCLE:
((A + B) COS(T) – B * COS((A/B + 1) * T)), ((A + B) * SIN(T) – B * SIN((A/B + 1) * T)))
FLOWER:
R(X) = 2 + COS(10X) + 2 * SIN(5X)
SPIDER:
Plot3D[Sin[x * y], {x, -Pi, Pi}, {y, -Pi, Pi}]
A FUN MESS:
SIN(COS(TAN(XY))) = SIN(COS(TAN(X))) + SIN(COS(TAN(Y)))
COS(XY + COS(4Y))^2 + SIN(Y) = 0.4X + 0.1Y^2
HAT:
SIN(SQR(X^2+Y^2))^2