Jump to content
oddemann

HELP - I AM STUCK! - TI EXtended BASIC

Recommended Posts

Since we're advertising our wares, here is Lee's running man demo in compiled BASIC. No changes required, just saved and compiled. Not as fast as the forth demo, but there are ways to get more speed...RUNNING.GIF.47e5b5d213d22d7ebfb8901fbb2b4568.GIF

  • Like 6

Share this post


Link to post
Share on other sites
6 hours ago, Asmusr said:

Maybe wait for vsync? 🙂

I will try that tomorrow and see what happens. Probably there is a magic speed that just looks best and is more like jogging speed.

 

Share this post


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

I just had to see how this would work at speed. :)  

Very nice animation work by @Oddeman 

The Six Million Dollar TI Man.

  • Like 1
  • Thanks 1
  • Haha 2

Share this post


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

Since we're advertising our wares, here is Lee's running man demo in compiled BASIC. No changes required, just saved and compiled. Not as fast as the forth demo, but there are ways to get more speed...RUNNING.GIF.47e5b5d213d22d7ebfb8901fbb2b4568.GIF

I suspect the difference here is that you might be converting the text strings to integers for the patterns every time you run CALL CHAR() .  (?)

When I tried it that way in Forth it was slower than your demo, because my CALL CHAR is also in Forth.

 

I pulled a stunt and borrowed the guts from my CALLCHAR and made it compile the strings as integers into CPU RAM as a contiguous integer array. 

Of course then it goes into VDP RAM really fast with VMBW which I call VWRITE.  Having access to the guts of the compiler is Forth's interesting feature.

You pay for it with a much longer learning curve.

 

I have to say that if your compiler existed in 1983 I would have probably never learned another programming language. :)  Very very cool.

  • Like 2

Share this post


Link to post
Share on other sites

Yep, CALL CHAR is not the quickest way to do this, nor is it the most compact. The fastest and most compact would be to use XB256 which lets you save an area of VDP ram as a compressed data string. You can take a picture of the character definitions from 32 to 96, and put it in one (or more) strings. This uses RLE compression and the first couple of bytes has the address in VDP. The subroutine CALL LINK("CWRITE",...) decompresses the string and moves it into VDP ram in the same place from which it was saved. Very fast and very compact. I would guess the definitions would take less than 1K of memory.

I would estimate that this technique would let the program run in XB at the same speed as the compiled demo, and if compiled it would be like your forth demo. A big downside is that the process is cumbersome and changes are difficult to make.

  • Like 3

Share this post


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

Using the strings for character definitions in XB consumes 2 bytes for every actual character byte, so we could cut that in half by loading a block of character definitions. I do not know of an easy XB way to do this except to use an Assembly Language Code (ALC) subroutine. We would not need the repeated character set, so the block of character graphics would consume 4.5 KiB of RAM—still quite a bit. I do not expect you, @oddemann, to learn ALC, but, just for grins, I will write one you can load and call from XB.

 

Here is an ALC version to load from DSK1:  RUNMAN.obj

 

Here is a simple XB program to run it:

100 CALL INIT
110 CALL LOAD("DSK1.RUNMAN.obj")
120 CALL CLEAR
129 ! CALL LINK("RUNMAN",row,col,delay)
130 CALL LINK("RUNMAN",3,1,10)
140 END

The delay (0 – 99) above is 10 times through the delay loop, which decrements a register 500 – 0, testing for 0 each time. The delay loop is run for each image change. It takes XB a god-awful long time to load the 4884-byte routine! If you change the delay to 0, you will see the running with no delay. Right now, you cannot interrupt the routine. I can change that or add another variable to limit the number of cycles through the images so you could set up several CALL LINK("RUNMAN",row,col,delay,cycles) statements for different speeds in the same program. Anyway—I had fun.

 

The ALC routine is in the spoiler: 

 

Spoiler
*==============================================================================
*    Filename:  RUNMAN.a99
*      Author:  Lee Stewart
*     Written:  24MAY2021
*    Modified:  
* Description:
*
*     This program will display a running man at (row,col). The following is
*     the call in XB:
*
*        CALL LINK ("RUNMAN",row,col,delay)
*
*     The row and col values are checked to keep the running man on the screen.
*
*     The value for delay can be 0-199.
*
*==============================================================================

       DEF  RUNMAN
       AORG >2500

NUMASG EQU  >2008
NUMREF EQU  >200C
STRASG EQU  >2010
STRREF EQU  >2014
XMLLNK EQU  >2018
VSBW   EQU  >2020
VMBW   EQU  >2024
VSBR   EQU  >2028
VMBR   EQU  >202C
VWTR   EQU  >2030
ERR    EQU  >2034
FAC    EQU  >834A
PATLOC EQU  >0408          pattern table location for '!' in XB
MYREGS BSS  32             our workspace
DELAY  DATA 0              delay multiplier

** Get row
RUNMAN LWPI MYREGS         we're using our own workspace
       CLR  R0             no array
       LI   R1,1           first parameter
       BLWP @NUMREF        get it to FAC
       MOVB @FAC+1,R3      get row
       SRL  R3,8              to LSB
       DEC  R3             adjust from XB notation
       CI   R3,17          < 17?
       JLT  SCRPOS         yes; screen position OK
       LI   R3,16          no; we'll insure man stays on screen
SCRPOS SLA  R3,5           (row * 32) for screen position

** Get column
       CLR  R0             no array
       LI   R1,2           second parameter
       BLWP @NUMREF        get it to FAC
       MOVB @FAC+1,R4      get column
       SRL  R4,8              to LSB
       DEC  R4             adjust from XB notation
       ANDI R4,>001F       insure <= 31
       CI   R4,24          < 24?
       JLT  COLPOS         yes; column position OK
       LI   R4,23          no; we'll insure man stays in one piece
COLPOS A    R4,R3          add column to screen position

** Load first character set
       LI   R0,PATLOC      pattern location in VRAM to write
       LI   R1,PATBUF      RAM address of patterns to write
       LI   R2,512         # of bytes to write
       LIMI 0              disable interrupts for sreen write
       BLWP @VMBW          write new patterns
       LIMI 2              enable interrupts


** Put up running-man image
DISP   LIMI 0              disable interrupts for screen write
       LI   R4,8           lines/image
       LI   R5,8           chars/line
       MOV  R3,R0          screen start
       LI   R1,>8100       '!' in MSB to start (ASCII >21 + >60 XB offset
DISPLP BLWP @VSBW          display next char
       INC  R0             inc screen location
       AI   R1,>100        inc char code
       DEC  R5             dec char count for this line
       JNE  DISPLP         write next char on line
       DEC  R4             dec line count
       JEQ  DSPXIT         we're outta here
       LI   R5,8           more..reset chars/line
       AI   R0,24          adjust screen pos
       JMP  DISPLP         next line
DSPXIT LIMI 2              enable interrupts
       
** Get time delay
       CLR  R0             no array
       LI   R1,3           third parameter
       BLWP @NUMREF        get it to FAC
       MOVB @FAC+1,R7      get delay count
       SRL  R7,8              to LSB of R7
       INC  R7
       MOV  R7,@DELAY      store delay

** Make the man run
ANIM   LI   R6,PATIDX      get pattern buffer address pointer
       LI   R4,9           load count of images
       LI   R0,PATLOC      pattern location in VRAM to write
       LI   R2,512         # of bytes to write
ANIMLP LIMI 0              disable interrupts for screen write
       MOV  *R6+,R1        pop RAM address of patterns to write
       BLWP @VMBW          write new patterns
       LIMI 2              enable interrupts
** Delay loop       
       MOV  @DELAY,R7      times thru delay loop
DLOOP1 DEC  R7             dec outer delay loop count
       JEQ  ANIM1          done with delay?
       LI   R8,500         one time thru delay loop
DLOOP2 DEC  R8             dec inner delay loop counter
       JNE  DLOOP2         not done with inner loop
       JMP  DLOOP1         check outer loop loop
** Continue animation
ANIM1  DEC  R4             dec image count
       JNE  ANIMLP         next image if not done
       JMP  ANIM           do it again
       
       LWPI >83E0          restore XB workspace
       RT

PATIDX DATA PATBUF,PATBF1,PATBF2,PATBF3,PATBF4,PATBF5,PATBF6,PATBF7,PATBF8
PATBUF DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0204,>0000
       DATA >0000,>0000,>0000,>2010,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0005,>0051,>0810,>0011,>2041,>0051
       DATA >0010,>2040,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >8254,>7804,>0211,>0805,>8111,>8111,>8015,>8A11
       DATA >0000,>0005,>2045,>0850,>0040,>0000,>8040,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0201,>0200,>0201,>0001,>0F04,>0004,>0804,>0A01
       DATA >8000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>3855,>0000,>0000,>0000,>0055
       DATA >0001,>0001,>0000,>0201,>0810,>0814,>0211,>0010
       DATA >0040,>0010,>0444,>2211,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >4840,>0B50,>0050,>3050,>0000,>A015,>0000,>0000
       DATA >2205,>0141,>0B00,>0000,>2050,>2050,>C000,>0000
       DATA >1811,>0111,>0911,>0901,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0805,>0005,>0005,>0B01,>0000,>0000,>8000,>8054
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0805,>0000,>0000,>0000,>0850,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF1 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0204,>0004
       DATA >0000,>0010,>0800,>0800,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0001,>0810,>1011,>0041,>8041
       DATA >0810,>0040,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0205,>0105,>0305,>0301,>8801,>9111,>8050,>2A55
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0001,>0200,>0204,>0201,>2014,>0200,>0814,>1211
       DATA >8054,>2254,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0001,>0201,>0000,>3050,>0C15,>1054
       DATA >0001,>0101,>0041,>3005,>1010,>0010,>8804,>8245
       DATA >0000,>0040,>2010,>1010,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0201,>0000,>0000,>8200,>0000,>0000,>0000
       DATA >8050,>2201,>0000,>0000,>C854,>2054,>0800,>0000
       DATA >A844,>7850,>4044,>4040,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >4044,>4044,>0844,>2857,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >2055,>0000,>0000,>0000,>E050,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF2 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0204,>0000
       DATA >0000,>0010,>0010,>0010,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0001,>0200,>0810,>2051,>8001,>0211
       DATA >0010,>2040,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0004,>0815,>1A15,>0905,>2041,>8101,>0000,>0205
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0404,>0205,>0405,>0001,>8245,>0A51,>9951,>2804
       DATA >0000,>8040,>0040,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0004,>0205
       DATA >0201,>0001,>8054,>0301,>0605,>8341,>E050,>3815
       DATA >0000,>0000,>8040,>2050,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0204,>0207,>0201,>0000
       DATA >2055,>8000,>8000,>0000,>0301,>2015,>2315,>2244
       DATA >9050,>B050,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0001,>0001,>0001,>4C44,>0850,>9010,>2050
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0201,>0000,>0000,>0000,>0C55,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF3 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0004,>0000,>0010
       DATA >0000,>0040,>0000,>2010,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0114,>2051,>0010,>2051,>8001,>2041
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >FE54,>0851,>2915,>1215,>8001,>8001,>0201,>0205
       DATA >0000,>0000,>0041,>2A01,>0000,>0000,>0040,>0040
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0A15,>0E05,>0004,>0201,>0004,>0810,>0C05,>0000
       DATA >AA01,>0000,>0000,>8050,>8000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0001,>0101,>0001,>0101,>2014,>0E01,>0805,>0B15
       DATA >0805,>0351,>2B45,>0214,>0000,>0000,>8000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0001,>0001,>0105,>0604,>B840,>0214,>0010,>0050
       DATA >2040,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0001,>0301
       DATA >0810,>2145,>CC18,>3014,>4854,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0101,>0000,>0000,>0000
       DATA >0E55,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF4 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0210,>0010,>0010
       DATA >0000,>0040,>0040,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0000,>0000
       DATA >0000,>3B10,>B055,>1051,>0010,>A201,>0051,>8101
       DATA >0040,>0014,>1A14,>2840,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0050,>0051,>0854,>0855,>8001,>8001,>8101,>0204
       DATA >8850,>9050,>A040,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0101,>0201,>0205,>0205,>0004,>0004,>0605,>0041
       DATA >0000,>0000,>0000,>8040,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0404,>0810,>0010,>2141,>2054,>2241,>0000,>0000
       DATA >2010,>0804,>8A55,>3215,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0A15,>0215,>0001,>0250,>8005,>2000
       DATA >6044,>0850,>2000,>0000,>0000,>0000,>0000,>0000
       DATA >0801,>0800,>0804,>0004,>0000,>0000,>8000,>8040
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >2040,>0010,>0810,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0200,>0001,>0201,>0000,>0040,>2051,>0A54,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF5 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0210,>0010,>0010
       DATA >0000,>0040,>0040,>2000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0214,>2845,>0000,>2251,>0201,>2041
       DATA >0040,>8000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >2C44,>2005,>0014,>0211,>8001,>8001,>8001,>0204
       DATA >8000,>0054,>0054,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0B15,>0200,>0201,>0101,>0004,>0004,>0404,>8241
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0005,>0805,>0915,>0000,>0000,>8050,>8241
       DATA >0200,>0204,>0404,>0851,>2010,>1010,>2044,>0301
       DATA >8040,>0040,>2010,>3050,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >2440,>2010,>0000,>0000,>2014,>0201,>0000,>0000
       DATA >2015,>0250,>0C00,>0000,>0000,>0000,>0000,>0000
       DATA >C854,>2044,>0044,>2210,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0211,>0011,>0F15,>0805,>0000,>0000,>0054,>0850
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0200,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF6 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0004,>0010
       DATA >0000,>0000,>0000,>2010,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0001,>0010,>0011,>2041,>0811
       DATA >0040,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0005,>0505,>0201,>0001,>2041,>8001,>0011,>9855
       DATA >0000,>0000,>0040,>0040,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0001
       DATA >0001,>0200,>0200,>0101,>2215,>0A00,>0804,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0204,>0811,>0251,>0010
       DATA >0041,>8051,>0004,>0311,>8241,>2111,>8014,>8855
       DATA >0000,>0000,>0040,>0040,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0004,>0300,>0000,>0000,>8A51,>B251,>0204,>0004
       DATA >2040,>2040,>0040,>0040,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0004,>0005,>0805,>0911
       DATA >8040,>8000,>0000,>0040,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0005,>0000,>0000,>0000
       DATA >0050,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF7 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0004,>0000
       DATA >0000,>0040,>0000,>0010,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0010,>0011,>0005,>2251
       DATA >0010,>2040,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0001,>0101,>0205,>0101,>C044,>2041,>C851,>9A51
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0001,>0001,>0001,>A005,>0004,>0004,>0605
       DATA >8050,>2010,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0005,>0901,>0215,>8245,>0044,>0044,>2201
       DATA >0000,>8040,>0000,>2050,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0004,>1014,>0000,>0000,>A215,>3314,>0044,>0000
       DATA >3850,>B050,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0101,>0200,>0205,>8010,>2000,>0040,>0040
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0005,>0000,>0000,>0000,>0050,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
                                                                                                                                                                                                                     
PATBF8 DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0001,>0004,>0000
       DATA >0000,>0010,>0010,>0010,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0314,>0800,>0010,>0041,>0045
       DATA >0010,>2000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0015,>0005,>0001,>0000,>8044,>0044,>0045,>0241
       DATA >8001,>8211,>8214,>A000,>8040,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0001,>0001,>0001,>8200,>0204,>0605,>0810
       DATA >0000,>0000,>0000,>8050,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0001,>0101,>0200,>0201,>0814,>1110,>0000,>2000
       DATA >0004,>0241,>2214,>3E51,>0000,>0000,>8040,>8000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0001
       DATA >0204,>0A11,>2040,>0000,>8045,>8851,>0644,>1211
       DATA >8014,>2000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0001,>0204,>0C15,>0211
       DATA >0000,>0040,>8000,>0000,>0905,>0000,>0000,>0000
       DATA >0040,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0805,>0000,>0000,>0000
       DATA >8040,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000
       DATA >0000,>0000,>0000,>0000,>0000,>0000,>0000,>0000

       END

 

...lee

 

  • Like 2

Share this post


Link to post
Share on other sites
Posted (edited)

My conclusion: Seeing all the different ways this can be solved!

BASIC and Ex BASIC is a good way into programming! But it is limited and slow! It makes one think that the tiny TI is slow! And all the other examples tells a different story.

The tiny TI is not slow, you just have to use its power in the right way. There are examples from down right stupid slow to insanely fast. So the power is there, to do stuff and also make great stuff.

If I am correct, the problem is memory! BUT, if one can keep feeding the TI with new data, then it is solved. If one can keep the 16k as "working memory" and when a program is bigger, then there is a way to put the data on hold on the "outside" until it is needed and then feed the TI. Then the sky is the limit for what one could do with the TI.

So the magic tool is from MY point of view... A program that can take BASIC or Ex BASIC (or any other) listing and translate it into something much more TI friendly for speed and what not, but also a good way to keep feeding the program with more data, WAY past 16k. Looking at all the stuff that is surrounding the TI, this tool is here (looking in the forum), but it is many different individual tools. Or maybe ANY lango of programming into the TI's preferred way of "talking". Then all the power is there. (Dream - A program that can translate ANY lango into TI's preferred way (fastest) of understanding. It would be a HUGE undertaking, and I know it will not happen. But I can dream ;) and in my dreams it exists hehehe)

I learned a lot from the different ways to solve it and I understand that BASIC or Ex BASIC is really... REALLY limited! Then looking at the cool games made in BASIC or Ex BASIC, it makes it even more impressive. Also, I guess if one would use this "tight" way of programming in the modern PC, it would unleash so much more power there too. One can only guess to how much power is lost to sloppy programming!

Furthermore... How much more power is there to press out of the tiny OLD TI? And looking at what is being done today, I think there is more! But, there is also a limit to how MUCH more.

Looking at all the stuff being done for the TI, all this into one tool - "To rule them all!", and with the hardware updates... 2021 TI-99/4A with all this mixed together - It would take advantage of all possibilities and make it shine!

 

***


It is cool to see that the Old tiny TI still has the power to spark imaginations, some 40 years later!
(Myself, I am looking forward to the F18A Mark II)

***

PS! @Lee Stewart, I tested your new way of doing it... All I can say... so nice! 😍  And looking at the listing... wow, that is a lot more reading and learning :p hehehehe

Edited by oddemann
PS!
  • Like 1

Share this post


Link to post
Share on other sites

"It takes XB a god-awful long time to load the 4884-byte routine!"

 

I hate to turn every post into an advertisement for XB 2.8 G.E.M., but if you tried it out, you would see this is no longer a problem.

  • Like 3

Share this post


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

"It takes XB a god-awful long time to load the 4884-byte routine!"

 

I hate to turn every post into an advertisement for XB 2.8 G.E.M., but if you tried it out, you would see this is no longer a problem.

 

I am well aware that there are better (read, “faster”) ways to load object code than standard XB. I was quite simply floored by how abysmally slow XB’s loader actually is. Your incorporation, Harry, of the MiniMemory module’s object-code loader into XB 2.8 G.E.M. is a phenomenal enhancement, I must say. :o

 

...lee

  • Like 2

Share this post


Link to post
Share on other sites

I could not resist playing with this just a bit more. :)

 

Edit: Doh!.  It's smoother when you use all the frames.  (9 MOD  versus 8 MOD) 

Spoiler
\ RUNNINGMAN animation graphics by @oddeman, code: theBF

INCLUDE DSK1.TOOLS
INCLUDE DSK1.GRAFIX
INCLUDE DSK1.VTYPE
INCLUDE DSK1.CHARSET
INCLUDE DSK1.BREAK

MARKER REMOVE

DECIMAL
: PATTERN! ( data[] -- ) 33 ]PDT 512 VWRITE  ;

: HEX#, ( addr len  --) \ can be used for longstrings (128 bytes)
        BASE @ >R  \ save radix
        HEX               \ we are converting hex numbers in the string
        BEGIN
        DUP WHILE        \ while len<>0
            2DUP DROP 4  \ get 4 digits from left end of string
            NUMBER? ABORT" Bad number"  \ convert string to number
             ,           \ compile the integer into memory
            4 /STRING    \ cut 4 digits off left side of string
        REPEAT
        2DROP
        R> BASE !  \ restore radix
;

\ Display initial graphic
DECIMAL
: .FIGURE ( col -- )
    DUP  3 AT-XY  33 (EMIT) 34 (EMIT) S" #$%&'(" VTYPE
    DUP  4 AT" )*+,-./0"
    DUP  5 AT" 12345678"
    DUP  6 AT" 9:;<=>[email protected]"
    DUP  7 AT" ABCDEFGH"
    DUP  8 AT" IJKLMNOP"
    DUP  9 AT" QRSTUVWX"
        10 AT" YZ[\]^_`"
;
: BLANKLN  ( col row -- ) >VPOS 8 BL VFILL ;

: /FIGURE ( n -- ) \ erase screen where frame is displayed
    DUP  3 BLANKLN
    DUP  4 BLANKLN
    DUP  5 BLANKLN
    DUP  6 BLANKLN
    DUP  7 BLANKLN
    DUP  8 BLANKLN
    DUP  9 BLANKLN
        10 BLANKLN
;

\ : RUNTEST   24 0 DO  I DUP  .FRAME CLR-FRAME LOOP ;
\ : GO  BEGIN RUNTEST ?TERMINAL UNTIL ;


CREATE FRAME0
S" 0000000000000000000000000000000000000000000000000000000102040000" HEX#,
S" 0000000000002010000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000500510810001120410051" HEX#,
S" 0010204000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000082547804021108058111811180158A11" HEX#,
S" 0000000520450850004000008040000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000002010200020100010F04000408040A01" HEX#,
S" 8000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000003855000000000000005500010001000002010810081402110010" HEX#,
S" 0040001004442211000000000000000000000000000000000000000000000000" HEX#,
S" 48400B50005030500000A01500000000220501410B00000020502050C0000000" HEX#,
S" 1811011109110901000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0805000500050B01000000008000805400000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0805000000000000085000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME1
S" 0000000000000000000000000000000000000000000000000000000102040004" HEX#,
S" 0000001008000800000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000010810101100418041" HEX#,
S" 0810004000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000002050105030503018801911180502A55" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000010200020402012014020008141211" HEX#,
S" 8054225400000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000010201000030500C15105400010101004130051010001088048245" HEX#,
S" 0000004020101010000000000000000000000000000000000000000000000000" HEX#,
S" 000002010000000082000000000000008050220100000000C854205408000000" HEX#,
S" A844785040444040000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 4044404408442857000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 2055000000000000E05000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME2
S" 0000000000000000000000000000000000000000000000000000000102040000" HEX#,
S" 0000001000100010000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000102000810205180010211" HEX#,
S" 0010204000000000000000000000000000000000000000000000000000000000" HEX#,
S" 00000000000000000000000000000000000408151A1509052041810100000205" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 00000000000000000000000000000000040402050405000182450A5199512804" HEX#,
S" 0000804000400000000000000000000000000000000000000000000000000000" HEX#,
S" 00000000000000000000000100040205020100018054030106058341E0503815" HEX#,
S" 0000000080402050000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000020402070201000020558000800000000301201523152244" HEX#,
S" 9050B05000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000001000100014C44085090102050" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000002010000000000000C55000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME3
S" 0000000000000000000000000000000000000000000000000000000400000010" HEX#,
S" 0000004000002010000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000011420510010205180012041" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 00000000000000000000000000000000FE540851291512158001800102010205" HEX#,
S" 0000000000412A01000000000040004000000000000000000000000000000000" HEX#,
S" 000000000000000000000000000000000A150E0500040201000408100C050000" HEX#,
S" AA01000000008050800000000000000000000000000000000000000000000000" HEX#,
S" 00000000000000000000000000000000000101010001010120140E0108050B15" HEX#,
S" 080503512B450214000000008000000000000000000000000000000000000000" HEX#,
S" 000000000000000000000000000000000001000101050604B840021400100050" HEX#,
S" 2040000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000001030108102145CC1830144854000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 000000000000000001010000000000000E550000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME4
S" 0000000000000000000000000000000000000000000000000000021000100010" HEX#,
S" 0000004000400000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000010000000000003B10B05510510010A20100518101" HEX#,
S" 004000141A142840000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000500051085408558001800181010204" HEX#,
S" 88509050A0400000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000001010201020502050004000406050041" HEX#,
S" 0000000000008040000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000004040810001021412054224100000000" HEX#,
S" 201008048A553215000000000000000000000000000000000000000000000000" HEX#,
S" 000000000A150215000102508005200060440850200000000000000000000000" HEX#,
S" 0801080008040004000000008000804000000000000000000000000000000000" HEX#,
S" 2040001008100000000000000000000000000000000000000000000000000000" HEX#,
S" 0200000102010000004020510A54000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME5
S" 0000000000000000000000000000000000000000000000000000021000100010" HEX#,
S" 0000004000402000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000021428450000225102012041" HEX#,
S" 0040800000000000000000000000000000000000000000000000000000000000" HEX#,
S" 000000000000000000000000000000002C442005001402118001800180010204" HEX#,
S" 8000005400540000000000000000000000000000000000000000000000000000" HEX#,
S" 000000000000000000000000000000000B150200020101010004000404048241" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000508050915000000008050824102000204040408512010101020440301" HEX#,
S" 8040004020103050000000000000000000000000000000000000000000000000" HEX#,
S" 24402010000000002014020100000000201502500C0000000000000000000000" HEX#,
S" C854204400442210000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 021100110F150805000000000054085000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0200000000000000000000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME6
S" 0000000000000000000000000000000000000000000000000000000100040010" HEX#,
S" 0000000000002010000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000010010001120410811"  HEX#,
S" 0040000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000050505020100012041800100119855" HEX#,
S" 0000000000400040000000000000000000000000000000000000000000000000" HEX#,
S" 00000000000000000000000000000001000102000200010122150A0008040000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000020408110251001000418051000403118241211180148855" HEX#,
S" 0000000000400040000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000040300000000008A51B25102040004" HEX#,
S" 2040204000400040000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000004000508050911" HEX#,
S" 8040800000000040000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000005000000000000" HEX#,
S" 0050000000000000000000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME7
S" 0000000000000000000000000000000000000000000000000000000100040000" HEX#,
S" 0000004000000010000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000010001100052251" HEX#,
S" 0010204000000000000000000000000000000000000000000000000000000000" HEX#,
S" 000000000000000000000000000000000001010102050101C0442041C8519A51" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 000000000000000000000000000000000000000100010001A005000400040605" HEX#,
S" 8050201000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000005090102158245004400442201" HEX#,
S" 0000804000002050000000000000000000000000000000000000000000000000" HEX#,
S" 000000000000000000000000000000000004101400000000A215331400440000" HEX#,
S" 3850B05000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000101020002058010200000400040" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000050000000000000050000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,


CREATE FRAME8
S" 0000000000000000000000000000000000000000000000000000000100040000" HEX#,
S" 0000001000100010000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000003140800001000410045" HEX#,
S" 0010200000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000150005000100008044004400450241" HEX#,
S" 800182118214A000804000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000001000100018200020406050810" HEX#,
S" 0000000000008050000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000010101020002010814111000002000" HEX#,
S" 0004024122143E51000000008040800000000000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000102040A11204000008045885106441211" HEX#,
S" 8014200000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000000102040C15021100000040800000000905000000000000" HEX#,
S" 0040000000000000000000000000000000000000000000000000000000000000" HEX#,
S" 0000000000000000080500000000000080400000000000000000000000000000" HEX#,
S" 0000000000000000000000000000000000000000000000000000000000000000" HEX#,

CREATE FILMSTRIP
FRAME0 , FRAME1 , FRAME2 , FRAME3 , FRAME4 , FRAME5 , FRAME6 , FRAME7 , FRAME8 ,

: []FIGURE ( n -- ) 9 MOD  CELLS FILMSTRIP + @ PATTERN! ;

VARIABLE SPEED

: STEP   ( n -- )
        DUP []FIGURE  \ load the figure for frame n
        DUP .FIGURE   \ show the figure
        SPEED @ MS    \ wait...
       /FIGURE ;      \ erase figure from display

: STEPS ( n-- )
    PAGE
     0 DO
       I STEP
       ?TERMINAL IF CHARSET CLEAR ABORT  THEN
    LOOP
    CHARSET ;

80 SPEED !

 

 

 

  • Like 5

Share this post


Link to post
Share on other sites
Posted (edited)

I did some work converting the character patterns into compressed data statements to run with XB256. Earlier, I was a little over optimistic about the amount of compression that would happen, thinking the data would be about 1K long. As it turned out, after being compressed, the data statements use 1760 bytes of memory. (Compared to 9000 bytes in the original program). As I speculated, when using compressed data statements and CWRITE the speed while running in XB is about the same as the compiled version of the original program. Of course, this program can be compiled and the results are in the short video below.

In the folder are:

RUNNING-X     compiled version of original program

RUNNING256   Requires XB256. XB version using compressed data and CWRITE to write the definitions to VDP.

RUNNING2-X   compiled version of RUNNING256 (shown in video below)

 

RUNNING2.GIF.045650cfb2727f86e0b094ea1b9459a4.GIF


1 !RUNNINGMAN DEMO FOR XB256 USES COMPRESSED DATA STATEMENTS
100 CALL CLEAR
190 RESTORE 30572
200 GOSUB 400 ! redefine character set
202 FOR I=33 TO 96 :: A$=A$&CHR$(I):: NEXT I :: CALL LINK("WINDOW",1,3,10,10):: CALL LINK("DISPLY",1,3,A$,0)
209 REM Display initial graphic
285 RESTORE 30508
289 REM Animation loop
290 FOR ANI=1 TO 9
300 GOSUB 400
310 NEXT ANI
320 RESTORE 30508 ! restore reads to second data set (last set is repeat of first)
330 GOTO 290 ! restart animation
399 REM Redefine character set
400 READ A$ :: IF A$="" THEN 440
420 CALL LINK("CWRITE",A$):: GOTO 400
440 RETURN
30508 (DATA STATEMENTS REMOVED)

RUNNINGMAN.zip

 

Edited by senior_falcon
  • Like 5

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