Jump to content
IGNORED

Bitmap mode.


bfollett

Recommended Posts

My first computer was a TI 99/4A, but I got an Atari not to long after and I've forgotten most of what I learned about basic programming on the TI. I've read that there is some sort of bitmap mode on the TI, but as best I can determine, it looks like it is still a character based mode. Is something as simple as a plot of a point and a draw to command not available from TI basic or ext. basic? There was a simple Atari program I was going to see if I could port over, but it doesn't look so easy now.

 

Bob

Link to comment
Share on other sites

With a stock console, it is most likely not possible to access the bitmap of the 4A .... there is software that will allow for it, called the missing link, but on a real TI you would need a disk drive (and probably 32K expansion) before you even get going.

 

This is the fault of Texas Instruments locking people out of the computer's capabilities. Apple do it to this day.

The bitmap mode of the TI allows for each pixel row to be manipulated within the tiles.

 

Other people will be able to tell you much better than me.

Link to comment
Share on other sites

Actually the issue was memory. Bit mapped mode takes a ton of VDP memory to change and control and the TI did not have RAM in the console.

 

That is why you need the 32K and a disk drive. The more complicated things you do the more memory you need to pull it off.

Link to comment
Share on other sites

True, but as was mentioned in another thread, ALL of the main home computer competitors of the TI-99/4A provided some sort of access to advanced video functionality. Either by way of enhanced BASIC commands or POKEs into memory. TI locked the console down, whereas on the Commodore 64 (and the VIC-20, for that matter) with a few POKEs I had a multi-color sprite. Same with Apple and its myriad BASIC extensions. Atari BASIC had graphics commands built-in.

 

The first time I was able to mess with 40 column mode and sprites on the TI was when I got my hands on a Mini Memory cartridge. (Okay, that is a lie, I actually borrowed an Extended BASIC cart before that and was able to play with sprites some.)

 

The basic console limitations notwithstanding, I suppose one could compare the advanced sprite and text manipulation available via Extended BASIC with something like Hesware Graphics BASIC cartridge for the Commodore 64. Even so, the bare console of anything other than the TI were very functional.

  • Like 3
Link to comment
Share on other sites

Someone recently reopened an old thread in the Atari forum of a program that was in Mad Magazine that drew a picture of Alfred E Neuman with what I thought were simple plot and line commands. Since all the data was already available. I thought it would be cute to convert it to TI basic and post it here, but from what you've posted above, it's not happening with a stock TI and basic or extended basic. What a shame that they chose that route when developing the computer. The magazine by the way had both the Atari and Apple versions of the code. Here's a screen capture from the Atari version, just so you can see what I was going to try to convert.

 

Bob

post-18691-0-22373900-1375498799_thumb.png

Link to comment
Share on other sites

The console is not really "locked down". The issue, as Rich said, is memory. In bitmap mode there is very little space left in VRAM for much of a program—only a fraction more than 1KB! You absolutely must have the 32KB memory expansion or other additional memory. Then, you can use assembly, TI Forth or fbForth (shameless self promotion :D ). You may be able to use XB, but I'm not sure how.

 

...lee

Link to comment
Share on other sites

Here's a screen capture from the Atari version, just so you can see what I was going to try to convert.

 

You could do it with a bunch of CHARs :)

 

The console is not really "locked down". The issue, as Rich said, is memory.

 

My point is that BASIC in a BARE console is not going to give the user access to bitmap mode. 32k with a bare console is not worth anything, either. You must have Extended BASIC, Mini Memory, Editor/Assembler with an ML program, or anything other than a bare console.

Link to comment
Share on other sites

Is something as simple as a plot of a point and a draw to command not available from TI basic or ext. basic? There was a simple Atari program I was going to see if I could port over, but it doesn't look so easy now.

 

With a stock console, it is most likely not possible to access the bitmap of the 4A .... there is software that will allow for it, called the missing link, but on a real TI you would need a disk drive (and probably 32K expansion) before you even get going.

 

This is the fault of Texas Instruments locking people out of the computer's capabilities.

 

That’s that. AFAIK.

 

You’re asking about plot and draw from within TI Basic or Ext. Basic.

 

- You’d need Ext. Basic, disk drive, 32K expansion, and The Missing Link software. The software is available in the pinned Development Resources thread.

 

The Mad program(s) ... http://meatfighter.com/mad

 

:)

Edited by sometimes99er
  • Like 1
Link to comment
Share on other sites

Some years ago I did this demo. It does exactly the same, plot and draws (in assembly).

 

Requirements: Unexpanded console and the 8K cartridge (2592 bytes used - so I guess Alfred could be fitted with a bit of datamassage).

 

The GIF below isn't as smooth as on emulation. It demonstrates thick lines, plots and thin lines. :)

 

windy.gif

 

 

Edited by sometimes99er
  • Like 3
Link to comment
Share on other sites

In all fairness to the TI, although an Atari program can draw Alfred with just standard Atari basic commands. The program also wouldn't run on a 16k Atari. Testing it on an emulator, it looks like it would require a machine with at least 48k of memory. There is no dedicated video memory on an Atari and Atari Basic itself has to eat up another 8k of memory and then there is also the space the system rom uses. It was just a bit of an eye opener to me when I thought I was going to convert a rather simple basic program and found it was going to take a beefier programming language than basic and extra memory to duplicate it on the TI. I guess every machine has it's strengths and weaknesses.

 

Bob

Link to comment
Share on other sites

The Missing Link would do this for you. As mentioned you need 32K, XB, and a disk drive. The subprogram to draw a line is:

CALL LINK("LINE",X1,Y1,X2,Y2)

 

Read the coordinates out of DATA statements with a program something like this:

10 FOR L=1 TO 53::READ X1,Y1,X2,Y2::CALL LINK("LINE",X1,Y1,X2,Y2)::NEXT L

20 GOTO 20

30 DATA 1,1,5,9,etc,

Link to comment
Share on other sites

Bit map has many programs you can use.

The oldest is XPD that uses Bit map or Text modes.

The other is XB Plot that uses Bit mapped mode.

Also The Missing Link.

 

You at least get the source code with XB Plot unlike the others.

Also XB Plot gives you more utilities then the others with source.

 

Rich

XB Bitmapped.zip

  • Like 1
Link to comment
Share on other sites

I kind of took this as a challenge for the old "hires" dot plot function for TI BASIC that I wrote ages ago.

 

It actually fits in memory in TI BASIC but because my plot function needs about 1.5k to run, there wasn't enough memory left to run it. So, I went ahead and re-packed the DATA statements using a base64-like encoding, which saved a ton of memory. Then I added a little code to unpack the data, and a line draw function -- all in TI BASIC, and set 'er loose.

 

It works, BUT there are not enough characters available to draw everything. The Apple2 version had a scaling factor to fix the aspect ratio, so I just extended that to both axes and let you set it at the beginning. At 1.0 scale, there are not enough characters to finish his head, but at 0.8 there are, plus a tiny bit of the logo. You can go smaller to see more, but give the size of the MAD logo I don't expect you'll see much of it.

 

This is /pure/ TI BASIC, and it's VERY slow. Even in Overdrive on Classic99 it takes a while to run. But it works! (might be fun to see it compiled?) Note you MUST run in TI BASIC, /not/ XB, it uses all the characters. (Besides, as was discussed, if you have XB and 32k you have better options!)

 

9 REM  PIXEL PLOT INIT 
10 DIM CC$(126),HPAT$(3),DAT(3)
11 FOR A=0 TO 126
12 CC$(A)="0000000000000000"
13 NEXT A
20 CURCHAR=33
25 STARTCHAR=33
30 HEX$="0123456789ABCDEF"
32 HPAT$(0)="89ABCDEF89ABCDEF"
34 HPAT$(1)="45674567CDEFCDEF"
36 HPAT$(2)="23236767ABABEFEF"
38 HPAT$(3)="1133557799BBDDFF"
50 GOTO 2520


99 REM  PLOT A DOT AT DOTCOL,DOTROW (0-BASED) 
100 MR=INT(DOTROW/8)+1
130 MC=INT(DOTCOL/8)+1
140 CALL GCHAR(MR,MC,CH)
150 IF CH>=STARTCHAR THEN 160
152 IF CURCHAR>159 THEN 310
155 CH=CURCHAR
157 CURCHAR=CURCHAR+1
160 TC$=CC$(CH-STARTCHAR)
170 XR=DOTROW-(MR-1)*8
180 XC=DOTCOL-(MC-1)*8
190 P=XR*2+1
210 IF XC<4 THEN 220
212 P=P+1
214 XC=XC-4
220 X$=SEG$(TC$,P,1)
260 TT$=SEG$(HPAT$(XC),POS(HEX$,X$,1),1)
265 IF TT$=X$ THEN 295
270 TC$=SEG$(TC$,1,P-1)&TT$&SEG$(TC$,P+1,16-P)
280 CALL CHAR(CH,TC$)
290 CC$(CH-STARTCHAR)=TC$
295 CALL HCHAR(MR,MC,CH)
300 RETURN
310 CALL SCREEN(7)
320 RETURN

497 REM  MAD IMAGE DATA, PACKED AS ASCII 6-BITS PER CHARACTER (TAKES LESS MEMORY 
498 REM  THAN THE DATA STATEMENTS DID - NECESSARY TO FIT IT WITH THE DOT PLOT 
499 REM  FUNCTION) 
500 DATA FDBVKS>`GTVYKd>hFD6SIbVPBS>EF1f]K5c-PC;1EeR;HbJQ@cj;K4O9M5^QNC?:@T2<JWNS
510 DATA WSjiOC[;NH//X1ZFAb.6GARQ=cR3GRFFBBSQ@7>6Cb.M?3.5FQ?6:W26NT?9JEfeS4C3IeVb
520 DATA R4K7K3R^G3bSHSV^FcfWHCR[Gd.<MRC7VTCXIEK;NeRdPDW5KbjiDdVIKR^hE4ZMKC:fEbRM
530 DATA CRJ/FaVF@S:;DAVL>cNGDRRF@Cb1GQJT@SN=Fb6GBSNCHGRSWd6jNcc;O8/1WVZGTb2PBT.H
540 DATA JAc7A6VGS22i:eefL@G2:UAdP0O5;7:4LR/2?T2IH2G>DW.@KQ[3A7N:VRCTAgF;VR7R?gB>
550 DATA VB7<Ff6URcgDH5^ZQcg5@V><J1Zj=TZ<PQk1=V.8BcbDFG^_Wc^WPCW;O7g/WRNVCC?WFX6Z
560 DATA GEfUNE;VMX.:BRR<ACF<D1Z[>CZ@F1ZVC3bHKH6[YT:TNCG;MGS6W3VdHDVXJcfgGdVbJcbe
570 DATA I4N4FQJQCbJHCaBN@RNFD2^EKc>gETVQKC73F5BONS;3EEFHOB^aCTfFKRjkDD:JK2RYHSj\
580 DATA ISf^Hcj[i3fYHd6\CCjJKX:_Y4>UO3S:MGO9Vb^gD4kVIWNdGENUOegTQgNSUS/RE7BPU3;M
590 DATA EW>PU2SODDZJLgN`WD>SNcC;RGK8VQ:P?2Z>DBFI@bR@BQ:U>BciG8JY\3SjE8bP\COiEhZL
600 DATA QA[2=UF=QAg5A567F2J[A469L16h@ER:FBBQADZ/O1B?PRG?AfR@PbG?BUZBOac-Pcc?I5f]
610 DATA QSc4HUN]O3k8I7JCVR[TC7NMWBkUCGJKVb_WC7ZCX2GZE7fIXBKWCWZDY4C\NgR_W4K<VEkQ
620 DATA QG?@V1jQA2Z0E16R?BbB@b6KBRb_<dUfPP_M>f5lR13;;VIlTbKMBE:CN2BWBCRCJa^d@6fE
630 DATA TB;;@VB=FB6TASF>FB2cJTB^JdBcIDF`K4:bJDNaRBWJB4R=LB.RAcZ>J1Rg=h/3YDCTJWRh
640 DATA QW;CUf;ORg7`LGc5W4[sJFKPWf3ZQF[NXRO[D7ZGWbS[EX>LXc7aE8RM[CCYFh2XNd;6K5Ve
650 DATA O4?DJe^fOdKEJXRTZCOaFhNU[3/dFXNR[3;aG8RSId:SHd>]JSf^ITB[Gd6\IV6YRCk9I6.Z
660 DATA O3_7HEbVQcRWGT:XI3VXGCZXHCRYGcfXXe?^LGRiVE7[Q7S=WF/\OGC1WDf<Jb.iWe[ZODg8
670 DATA MEZ>L2.dA4b<Le78O5O1OeS6XS/]F82GYBc_Ch:TYb[aEQNV>c:1G1>L?SR?Eb6EB2FADR:G
680 DATA B2ZCCb>GBRV=ARF<RD/7HVF\QcKAG6FZOSS?FbKNDG6DU2WMCVjCTbGMAffjD4>HNbc4DDbH
690 DATA K2^eCT^GO3g6I2b@EaFIARb8CR.S>bb=EQFK@3J2E1RT>2f<IP^I@CV0@db?NEW6N5k0PeG7
700 DATA NU[3PWjWZ3[]GhNYZc[]GhNY[cWE=7.1TQCO>g22Ua_P?7><\C/W@GZ:YbK_Bgb?[R[cBbSK
710 DATA AfJGTR7BAVN>Ob79BV[4EeFNPBc:DE>HO2c2D5NHI1je@UR8OAkACfbFHbRUBfBIU2>k=UB0
720 DATA OAG=?cFAGR6:MBC9Neg<PEc8QEOAOV[1BUZ<MUO:Qe_@OeW9RUSHNCN5GQBV>T]cGAN^<CZ4
730 DATA K0Nf:d=hJ0^i;CZ3I`^c;EMcP3/;DEbMP2[;DUbHOb[;D3jgJTN`JdFgJTRbKT>gIDW>DFBF
740 DATA Na7;?5f:Hb/1BE>>JD>aIT>`Jd2YI42]Hd.^I4BWJ3NdGT>VJc^bG4NYJcRKLRk3SEKJNfg5
750 DATA TUGLO7;6De:LLg35V5OQNg?/Ue?PNc/3EEZOOc;1Mh.jWD[VMX.h>DV/P1_BADf7LQZi>5:/
760 DATA B22D@aVU?36IBBZ=ABZ<E2N=Ab6GABbA>R^:C1FJA2;EBW.CLA:j=aVZ@Sfh;5QeOSW7GV:W
770 DATA QcW:I5b]OCc7H3JCGbK/?e>7TBOLAVVBRR/3JV6gPTWBKFFeNTC.CT6IIbZbE46JJ2kdCgR:
780 DATA XR/jDgR<VB.cGdFUF46WKDcXFW:SUd[VJgJYV3GOFWBg>U21G2BXBU:@Mb71@5>8_9T5\iL7
790 DATA ^Yh4\YGg^HT.ZIH;]J<-ahXC]8CdY8O^Wh3\Y8K][ZG[bWXAXZCYYWKaWX7TYgTBW:CTbW4C
800 DATA VX;NY7<<UhWO`g7gUXSM[78=U9kMbFh@Tj;La6h?TYkLZfcdUH3DYG/]SH/EYVG_T8K>`V8<
810 DATA R9kAa6@ARH;?Y6;_QH/=Y5g]QH3;YF<BOjG:Y5_bP8/8ZE[cPhS<[ughPXZl[eggLXW7bEL@
820 DATA NZ?.bU0CKjBgb4X=KJ:f`d\<LIjk`T;eIXNj`TghL8Ri[4kcM8K.Ze3cMH7-YTk]LX.fY4g^
830 DATA KX2gY4K`KH.cYTC^Hh2aY4/]Hh.XYcg]GX6^Zd/dHhNW`S\<HIjZa3dAGH2OYCO]EX.NY33d
840 DATA E8FMYC7dF8JYbCLCFZBPac?dE9FQZc44F::LbRhCCjFM^RK^CZBEb2P@C:2DabL<C:.H`R\;
850 DATA Bi2C]BX;BI.=`R4<Aij@a2<AAZB:bRG^AH2CY2/]A8.5^R/^?9J5^a?e@:B7b1T@>JB1bQ0C
860 DATA >HJ3ZQKc?HJ6ZQS_?864Y1K^=h23Y1?]=h.-Ya7]<h5lb@dA<J9j```@<9ik`a0<=Iei[0[d
870 DATA =9ekY@O^<8-dY0[d:hIdZ`K]:X1cZXd4\I3i_H_l[iSh_8`.[X_h\HGe[iWd`X\8ZZ/ca80=
880 DATA XYkd`hGeY8O\[GgfXig[`Wd;XHW4`5\/OY73`5T/MI7-]UH8
890 DATA "","","",""


2519 REM  MAIN CODE START - INIT THE DISPLAY 
2520 FOR A=1 TO 16
2530 CALL COLOR(A,2,16)
2540 NEXT A
2550 CALL CLEAR
2560 CALL SCREEN(2)
2620 XCEN=128
2625 YCEN=96
2627 INPUT "SCALE? (0.8 RECOMMENDED):":SIZE
2628 CALL CLEAR


2629 REM  MAIN LOOP - EACH GOSUB 400 UNPACKS ONE BYTE OF DATA 
2630 GOSUB 4000
2634 X=RET
2638 GOSUB 4000
2640 Y=RET
2642 GOSUB 4000
2644 X1=RET
2646 GOSUB 4000
2648 Y1=RET

2649 REM  TEST FOR END, SETUP AND DRAW LINE 
2650 IF X=999 THEN 2700

2659 REM  CALCULATE SCREEN COORDINATES BY SCALING AND ADDING CENTER 
2660 FX=X*SIZE+XCEN
2665 FY=176-(Y*SIZE+YCEN)
2670 LX=X1*SIZE+XCEN
2675 LY=176-(Y1*SIZE+YCEN)
2680 GOSUB 2800
2690 GOTO 2630

2699 REM  SIT FOREVER 
2700 CALL SCREEN(16)
2710 GOTO 2710

2799 REM  BRESHAM LINE DRAW FUNCTION 
2800 XERR=0
2810 YERR=0
2820 DELTAX=LX-FX
2830 DELTAY=LY-FY
2840 IF DELTAX<=0 THEN 2850
2845 INCX=1
2847 GOTO 2870
2850 IF DELTAX<>0 THEN 2860
2855 INCX=0
2857 GOTO 2870
2860 INCX=-1
2870 IF DELTAY<=0 THEN 2880
2875 INCY=1
2877 GOTO 2900
2880 IF DELTAY<>0 THEN 2890
2885 INCY=0
2887 GOTO 2900
2890 INCY=-1
2900 DELTAX=ABS(DELTAX)
2910 DELTAY=ABS(DELTAY)
2920 IF DELTAX<=DELTAY THEN 2930
2925 DISTANCE=DELTAX
2927 GOTO 2940
2930 DISTANCE=DELTAY
2940 FOR T=0 TO DISTANCE+1
2950 DOTROW=INT(FY+.5)
2955 IF (DOTROW>191)+(DOTROW<0)THEN 2980
2960 DOTCOL=INT(FX+.5)
2965 IF (DOTCOL>254)+(DOTCOL<0)THEN 2980
2970 GOSUB 100
2973 DOTCOL=DOTCOL+1
2976 GOSUB 100
2980 XERR=XERR+DELTAX
2985 YERR=YERR+DELTAY
2990 IF XERR<=DISTANCE THEN 3000
2995 XERR=XERR-DISTANCE
2997 FX=FX+INCX
3000 IF YERR<=DISTANCE THEN 3010
3005 YERR=YERR-DISTANCE
3007 FY=FY+INCY
3010 NEXT T
3020 RETURN


3999 REM  UNPACK THE NEXT CHARACTER FROM THE DATA 
4000 IF SPOS<>INT(SPOS)THEN 4150
4005 IF SPOS<LEN(A$)THEN 4040
4010 READ A$
4012 IF A$<>"" THEN 4020
4016 RET=999
4018 RETURN
4020 SPOS=1
4040 DAT(0)=INT((ASC(SEG$(A$,SPOS,1))-45)*4)+INT((ASC(SEG$(A$,SPOS+1,1))-45)/16)
4050 DAT(1)=ASC(SEG$(A$,SPOS+1,1))-45
4060 DAT(1)=DAT(1)-(INT(DAT(1)/16)*16)
4080 DAT(1)=DAT(1)*16+INT((ASC(SEG$(A$,SPOS+2,1))-45)/4)
4090 DAT(2)=ASC(SEG$(A$,SPOS+2,1))-45
4100 DAT(2)=DAT(2)-(INT(DAT(2)/4)*4)
4140 DAT(2)=DAT(2)*64+ASC(SEG$(A$,SPOS+3,1))-45
4150 RET=DAT((SPOS-INT(SPOS))*10)-128
4160 SPOS=SPOS+0.1
4170 IF SPOS-INT(SPOS)<0.3 THEN 4180
4175 SPOS=INT(SPOS)+4
4180 RETURN

 

(Despite the odd syntax highlighting of the forum, I just tested that copy-and-paste works. The data statements try to avoid risky characters.)

 

(Edit: Two bugs if you already copied it - it will crash at the end of data. Re-copy 890 and 4020 into your program!)

(Edit2: added code to change the border color to red when it runs out of characters (which means no new ones can be added, but existing chars can be updated) and white when it's finished).

 

One part that was trickier than I expected was unpacking the data.. bitshifts with multiply and divide were easy enough, but masking off high bits without bit-wise operators was tricky. I resorted to test-and-subtract, but I wonder if there is a better way (short of a table)?

 

This image shows drawing near the end at 0.8 (it stops when it runs out of characters):

 

post-12959-0-25786500-1375588466_thumb.jpg

Edited by Tursi
  • Like 2
Link to comment
Share on other sites

One part that was trickier than I expected was unpacking the data.. bitshifts with multiply and divide were easy enough, but masking off high bits without bit-wise operators was tricky. I resorted to test-and-subtract, but I wonder if there is a better way (short of a table)?

 

Ah ha... answered my question while proof-reading... since it's easy to get just the high bits via division, to mask them out I just need to subtract them from the original. This paste improves the speed of the data unpacking code (which doesn't have a huge effect on the overall performance, I must admit):

 

Old code:

4060 IF DAT(1)<32 THEN 4070
4065 DAT(1)=DAT(1)-32
4070 IF DAT(1)<16 THEN 4080
4075 DAT(1)=DAT(1)-16

4100 IF DAT(2)<32 THEN 4110
4105 DAT(2)=DAT(2)-32
4110 IF DAT(2)<16 THEN 4120
4115 DAT(2)=DAT(2)-16
4120 IF DAT(2)<8 THEN 4130
4125 DAT(2)=DAT(2)-8
4130 IF DAT(2)<4 THEN 4140
4135 DAT(2)=DAT(2)-4

 

New code:

4060 DAT(1)=DAT(1)-(INT(DAT(1)/16)*16)
4100 DAT(2)=DAT(2)-(INT(DAT(2)/4)*4)

 

 

  • Like 1
Link to comment
Share on other sites

I took the Java version (link elsewhere in this thread) and adjusted a few bits to make it fit the 9918A.

 

int WIDTH = 256;
int HEIGHT = 192;
double LINE_THICKNESS = 1;
double SCALE = 1.16;

 

Then I added assembly data source output (just example code) for plot and draw.

 

PrintWriter writer = new PrintWriter("alfred.txt", "UTF-8");
writer.println("\tbyte\t" + (int)x1 + "," + (int)y1 );
writer.close();

 

Recompiled my Windy City demo (now at 3956 bytes).

 

 

 

Here's a GIF demo. Oh, only one line/dot per frame (smoother with emu), otherwise you'll get the drawing almost instantly. :)

 

alfred.gif

  • Like 3
Link to comment
Share on other sites

Previously and accidentally read about MAD, the programming language, and thought this funny ...

 

In a pre-release version of the original MAD, as a reference to MAD's namesake, MAD magazine, when a program contained too many compile time errors the compiler would print a full-page picture of Alfred E. Neuman using ASCII art. The caption read, "See this man about your program--He might want to publish it. He never worries--but from the looks of your program, you should."[8] This feature was not included in the final official version.

 

And Bernie Galler remembers:

By the time we designed the language that we thought would be worth doing and for which we could do a compiler, we couldn't call it Algol any more; it really was different. That's when we adopted the name MAD, for the Michigan Algorithm Decoder. We had some funny interaction with the Mad Magazine people, when we asked for permission to use the name MAD. In a very funny letter, they told us that they would take us to court and everything else, but ended the threat with a P.S. at the bottom - "Sure, go ahead." Unfortunately, that letter is lost.

 

MAD-alfie-1960.jpg

Link to comment
Share on other sites

Here is is converted for The Missing Link. Note the lack of peeks and pokes which make a program almost undecipherable. From classic99, load and run TML then paste this program in and run it. I have attached a picture of the screen - don't know if it will show up or if you have to click on it.

5 !MAD

10 SIZ=1

20 XC=120 :: YC=84

40 READ X,Y,X1,Y1 :: IF X=999 THEN 95

60 FY=X*SIZ+XC :: FX=176-(Y+YC)

70 LY=X1*SIZ+XC :: LX=176-(Y1+YC)

80 CALL LINK("LINE",FX,FY,LX,LY):: CALL LINK("LINE",FX+1,FY,LX+1,LY)

90 GOTO 40

95 CALL LINK("PRINT",184,75,"WHAT, ME WORRY?")

100 GOTO 100

500 DATA -27,-11,-23,-6,-28,-13,-22,-6,-20,-5,-12,-5,-27,-14,-26,-13

510 DATA -38,-29,-42,-28,-40,-28,-50,-16,-8,13,0,13,-29,4,-29,9

520 DATA -50,-17,-41,-28,-49,-17,-50,-8,-8,12,0,12,-28,5,-28,13

530 DATA -50,-15,-49,-10,40,-26,42,-17,-4,9,-21,14,5,48,2,44

540 DATA -53,-39,-45,-48,-55,-23,-55,-28,-61,-23,-58,-22,-42,-39,-43,-39

550 DATA 36,-52,36,-55,-37,-48,-32,-56,-32,-56,-26,-60,9,-74,33,-55

560 DATA 6,-12,12,-11,14,-8,24,-11,6,-13,10,-11,20,-9,10,-8

570 DATA -23,-15,-24,-19,-26,-18,-22,-15,-25,-18,-22,-19,-23,-18,-21,-16

580 DATA -49,2,-43,10,38,-11,43,-15,7,14,7,9,-9,13,-6,8

590 DATA -5,-33,-4,-33,-6,-36,-6,-36,-5,-32,-5,-32,-7,-29,-7,-29

600 DATA -39,-32,-38,-41,-62,-25,-54,-39,-50,-29,-50,-35,-54,-33,-57,-24

610 DATA -38,-34,-39,-39,-51,-19,-60,-22,-57,-25,-50,-24,-48,-25,-46,-38

620 DATA -42,-24,-42,-19,41,-26,43,-14,-3,7,-19,14,8,48,4,42

630 DATA 27,-38,31,-47,-29,-42,-16,-37,-11,-51,10,-48,26,-38,24,-47

640 DATA -4,-73,14,-71,-3,-74,5,-74,5,-73,12,-72,8,-72,35,-57

650 DATA -2,-48,5,-54,-15,-36,-20,-42,17,-34,32,-45,-6,-53,6,-48

660 DATA 40,-51,38,-43,39,-45,38,-50,38,-46,37,-53,37,-47,37,-46

670 DATA 15,-25,18,-24,23,-18,23,-20,12,-19,19,-18

680 DATA 8,-50,20,-49,-12,-53,-3,-62,-5,-49,14,-49,4,-62,16,-53

690 DATA -41,-19,-41,-27,44,-14,43,-20,-22,13,-22,14,8,46,2,42

700 DATA -40,-23,-39,-28,42,-26,50,-19,-23,14,-24,5,3,41,2,48

710 DATA -51,-42,-39,-49,-47,-26,-49,-36,-53,-18,-59,-21,-45,-28,-53,-23

720 DATA -40,-19,-37,-7,50,-18,50,-13,-25,5,-26,14,1,41,9,40

730 DATA -22,-9,-19,-6,-21,-9,-18,-6,-21,-6,-11,-9,-19,-8,-16,-8

740 DATA -57,-26,-57,-28,-37,-41,-37,-37,-59,-31,-50,-40,-39,-36,-36,-40

750 DATA -5,-28,-6,-30,-6,-28,-7,-30,6,-28,5,-30,6,-29,6,-31

760 DATA 6,-37,9,-36,-12,-38,-2,-39,-6,-33,-2,-35,-13,-35,-8,-39

770 DATA -20,-18,-17,-17,-14,-18,-15,-17,-17,-18,-16,-18,-20,-17,-14,-17

780 DATA -39,-17,-35,-6,51,-14,48,-12,-24,8,-23,13,1,40,12,39

790 DATA -36,-6,-36,-1,41,-14,40,-9,-23,8,-24,11,14,39,19,40

800 DATA -26,34,-32,37,-32,37,-29,32,-29,32,-30,36,-29,32,-39,34

810 DATA -35,-5,-35,-1,40,-13,41,-12,-26,7,-27,14,21,39,11,38

820 DATA -61,-29,-56,-37,-47,-35,-42,-36,-49,-39,-45,-42,-61,-24,-59,-35

830 DATA 60,-24,55,-20,60,-23,61,-32,61,-29,61,-24,60,-29,59,-33

840 DATA 17,-53,5,-62,6,-48,17,-50,8,-48,2,-54,-28,-41,-18,-48

850 DATA -14,-52,-4,-62,-5,-51,9,-51,-27,-43,-28,-47,-5,-62,8,-59

860 DATA -46,14,-42,18,-45,25,-45,15,-42,18,-42,11,-43,11,-51,0

870 DATA 15,-19,18,-16,14,-16,18,-19,7,-18,8,-16,8,-17,11,-16

880 DATA 39,-42,38,-37,39,-40,40,-32,41,-33,40,-39,39,-34,39,-36

890 DATA 42,-40,43,-42,44,-42,45,-32,46,-36,45,-41,42,-38,43,-41

900 DATA 48,-11,47,7,41,-14,40,-9,15,37,15,36,17,36,19,36

910 DATA -49,-28,-48,-37,-61,-32,-62,-27,-55,-35,-43,-49,-46,-34,-42,-35

920 DATA -14,-65,-6,-71,14,-68,32,-57,18,-65,20,-63,14,-70,23,-65

930 DATA 31,-41,32,-43,3,-42,4,-43,-22,-43,-23,-42,-9,-52,-9,-52

940 DATA 30,-40,29,-45,14,-50,21,-48,-27,-46,-25,-46,-26,-47,-27,-47

950 DATA -10,-10,-11,-15,-9,-11,-10,-15,-10,-13,-8,-13,-11,-11,-8,-12

960 DATA 21,-38,29,-44,-7,-48,-3,-48,-27,-45,-21,-47,-12,-55,-6,-61

970 DATA 48,6,49,-11,39,-10,41,-5,18,35,22,35,19,34,23,34

980 DATA 51,-3,45,8,40,-5,38,-11,23,35,43,17,45,17,27,33

990 DATA 46,-40,46,-36,43,-38,43,-39,46,-30,52,-33,47,-30,52,-32

1000 DATA 57,-32,57,-27,44,-25,49,-21

1010 DATA 7,-13,9,-8,10,-8,8,-12,23,-9,12,-7,11,-9,24,-10

1020 DATA 57,-25,53,-24,52,-25,56,-24,56,-32,55,-26,56,-27,56,-29,52,-24,57,-26

1030 DATA -13,-13,-26,-17,-12,-16,-10,-18,-15,-14,-11,-18,-21,-14,-17,-14

1040 DATA 18,-20,21,-17,12,-16,16,-19,8,-20,10,-19,13,-23,19,-23

1050 DATA -22,-22,-13,-21,-16,-22,-21,-23,-21,-21,-19,-23,-20,-21,-18,-21

1060 DATA 47,4,49,-3,41,-4,37,2,46,16,41,16,41,16,47,9

1070 DATA 37,4,41,-2,-49,-9,-48,-4,43,11,45,9,-2,11,1,11

1080 DATA -47,-4,-48,-9,-48,-3,-49,-1,2,11,8,8,4,11,9,9

1090 DATA 46,-32,48,-28,49,-38,49,-35,50,-37,51,-25,51,-37,52,-30

1100 DATA -56,-23,-57,-29,-60,-24,-60,-33,-54,-23,-46,-29,-46,-40,-44,-42

1110 DATA -44,-34,-45,-38,-44,-37,-42,-37,-44,-38,-42,-38,-48,-46,-42,-49

1120 DATA 21,-16,10,-18,22,-17,19,-25,20,-24,22,-19,10,-23,18,-25

1130 DATA -41,33,-35,34,-41,32,-38,32,-38,31,-42,31,-42,32,-45,30

1140 DATA -3,-36,-12,-37,7,-35,7,-35,-3,-37,-8,-36,-8,-38,-4,-38

1150 DATA 8,-18,9,-16

1160 DATA -35,-45,-29,-58,-36,-46,-35,-53,-38,-48,-26,-57,-35,-48,-30,-58

1170 DATA -34,-52,-25,-59,-32,-55,-25,-60,-34,-49,-14,-68,-36,-51,-22,-61

1180 DATA -49,-3,-46,5,10,9,4,15,3,15,6,10,6,11,6,14

1190 DATA 47,-22,52,-21,48,-21,56,-20,55,-21,48,-21,56,-20,59,-22

1200 DATA 24,-64,32,-60,30,-59,34,-57,33,-59,35,-52,35,-56,36,-49

1210 DATA 61,-32,42,-51,43,-51,51,-41,50,-41,45,-46,58,-37,54,-41

1220 DATA -39,30,-45,23,-38,30,-46,21,-46,24,-47,11,-46,12,-42,27

1230 DATA 7,-29,6,-31,13,-35,13,-35,4,-37,8,-35,5,-36,8,-37

1240 DATA -16,-49,-8,-50,9,-53,9,-49,20,-37,29,-39,-17,-39,-24,-41

1250 DATA 21,-36,32,-44,-2,-62,5,-61,9,-58,16,-53,-26,-44,-22,-46

1260 DATA -51,1,-43,12,7,14,15,13,13,11,17,8,20,10,27,4

1270 DATA -42,11,-49,2,8,13,19,12,19,11,10,12,22,9,27,5

1280 DATA -24,-56,-22,-59,-23,-58,-4,-74,-23,-56,-15,-67,-21,-57,-8,-72

1290 DATA -7,-73,-12,-69,-12,-68,-4,-71,-21,-58,-13,-68,-10,-71,8,-74

1300 DATA 12,-32,14,-35,13,-32,12,-37,14,-34,13,-37,11,-37,14,-36

1310 DATA -17,-6,-10,-8,-13,-9,-10,-6,-10,-7,-11,-6,-12,-6,-15,-6

1320 DATA 17,-35,21,-39,7,-62,14,-56,14,-51,-17,-48,4,-43,4,-47

1330 DATA -11,-12,-12,-14,-12,-13,-9,-15,-20,-16,-15,-16,-17,-16,-15,-16

1340 DATA -11,-22,-12,-24,-9,-22,-12,-23,-9,-20,-11,-24,-8,-20,-9,-23

1350 DATA -34,-2,-33,6,25,7,29,7,30,8,30,6,31,8,35,9

1360 DATA -33,3,-33,-1,33,8,36,8,36,7,36,2,35,4,35,7

1370 DATA -32,6,-31,11,-30,11,-29,4,3,48,-3,41,-5,41,2,48

1380 DATA -5,-59,-6,-62,12,-52,21,-47,-2,-54,-2,-53,-4,-60,3,-62

1390 DATA -44,-47,-41,-49,-54,-24,-56,-30,-36,-43,-37,-48,-47,-37,-49,-32

1400 DATA -40,-48,-45,-46,-38,-47,-35,-44,-58,-36,-51,-40,-58,-35,-48,-45

1410 DATA 24,-42,32,-42,-3,-61,-3,-61,-54,-19,-50,-18,-5,-72,9,-72

1420 DATA 10,-22,10,-22,19,-22,19,-22,13,-16,13,-16,9,-19,10,-20

1430 DATA -25,-42,-21,-41,2,-53,4,-54,29,-40,31,-46,26,-43,22,-48

1440 DATA 6,-10,18,-6,14,-6,21,-7,22,-8,6,-11

1450 DATA 1,-38,-14,-36,-13,-37,-11,-32,-14,-35,-12,-33

1460 DATA 55,-37,41,-51,46,-48,61,-33,41,-49,37,-48

1470 DATA -10,-21,-10,-24,-28,-14,-22,-7

1480 DATA -3,43,-26,35,-26,35,-5,41,-9,39,-20,36,-26,34,-26,37

1490 DATA -6,-58,1,-60,-24,-43,-21,-42,3,-45,3,-46,4,-52,4,-53

1500 DATA 72,73,72,63,71,74,70,78,71,62,70,58,69,57,65,53,70,78,65,83

1510 DATA 64,83,58,86,64,53,55,48,56,49,43,49,47,48,55,48,58,86,46,86

1520 DATA 42,84,46,85,44,50,39,52,42,50,39,51,41,85,40,85,39,86,33,86

1530 DATA 38,51,33,48,35,79,35,58,34,79,34,58,34,57,32,56,34,80,32,79

1540 DATA 32,85,30,83,31,83,31,80,30,82,30,79,31,55,29,55,33,49,23,49

1550 DATA 32,48,25,48,24,50,22,50,28,55,17,78,18,79,20,79,20,80,20,84

1560 DATA 21,51,18,48,19,50,17,48,16,48,14,48,17,49,14,49,19,85,11,86

1570 DATA 13,48,12,53,12,48,11,53,11,54,15,57,15,58,14,59,14,59,-1,59

1580 DATA 14,58,-2,58,10,85,7,83,6,84,1,86,0,86,-5,85,-6,84,-6,80,-7,83,-7,79

1590 DATA -5,79,-3,79,-2,78,-13,56,-14,56,-3,78,-2,59,-4,57,-4,56,-1,54

1600 DATA 0,55,1,55,1,54,1,50,0,50,-1,48,-2,48,-7,48,-2,49,-6,49,-6,48,-9,51

1610 DATA -7,48,-10,50,-11,49,-17,49,-12,48,-16,48,-17,48,-21,51,-18,48,-22,50

1620 DATA -15,55,-16,55,-17,56,-22,78,-21,79,-19,79,-19,80,-19,84,-23,49,-30,49

1630 DATA -24,48,-30,48,-31,48,-31,55,-32,54,-32,49,-30,55,-28,55

1640 DATA -20,85,-25,86,-26,85,-29,83,-28,55,-32,70,-28,55,-31,71

1650 DATA -28,83,-33,86,-34,86,-37,86,-32,70,-41,49,-38,85,-40,84

1660 DATA -40,83,-40,81,-41,83,-41,79,-40,80,-37,78,-37,78,-41,65

1670 DATA -42,65,-38,78,-43,64,-48,78,-47,79,-45,79,-45,80,-45,84

1680 DATA -46,85,-51,86,-42,49,-47,49,-42,48,-48,48,-48,48,-56,70

1690 DATA -48,49,-56,71,-56,71,-60,56,-52,85,-54,84,-55,83,-59,85

1700 DATA -60,86,-64,86,-59,55,-58,54,-57,54,-55,55,-55,54,-55,50

1710 DATA -56,50,-57,48,-57,49,-61,49,-58,48,-60,48,-61,48,-64,51

1720 DATA -62,48,-65,50,-65,85,-67,84,-67,83,-67,79,-68,83,-68,79,-66,79,-64,79

1730 DATA -63,78,-68,56,-69,55,-64,78,-66,49,-72,49,-68,48,-73,48

1740 DATA -69,55,-73,55,-73,55,-73,48,-74,49,-74,54

1750 DATA 61,71,61,65,60,73,60,63,59,73,59,72,60,65,58,60

1760 DATA 59,61,54,56,59,74,55,78,59,75,54,80,54,80,48,80

1770 DATA 46,79,55,79,54,56,48,56,47,57,46,57,47,78,46,78

1780 DATA 45,78,45,58,7,76,11,66,10,66,6,76,9,66,1,66,0,66,6,75

1790 DATA 999,0,0,0

MAD.bmp

  • Like 1
Link to comment
Share on other sites

Hehe, sorry, Bob, I didn't mean to steal your thunder, but it really became a challenge for me. :)

 

We still need to see the RXB and Forth versions, now. ;)

 

LOL, no thunder stolen here. Once I realized that what I thought was going to be a simple conversion was actually quite a bit more involved, I was glad to see so many other with more TI experience join in.

 

Bob

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