senior_falcon Posted May 23, 2021 Share Posted May 23, 2021 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... 6 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted May 24, 2021 Share Posted May 24, 2021 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. Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted May 24, 2021 Share Posted May 24, 2021 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. 1 1 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted May 24, 2021 Share Posted May 24, 2021 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... 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. 2 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted May 24, 2021 Share Posted May 24, 2021 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. 3 Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted May 24, 2021 Share Posted May 24, 2021 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 2 Quote Link to comment Share on other sites More sharing options...
oddemann Posted May 24, 2021 Author Share Posted May 24, 2021 (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 May 24, 2021 by oddemann PS! 1 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted May 24, 2021 Share Posted May 24, 2021 "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. 3 Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted May 24, 2021 Share Posted May 24, 2021 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. ...lee 2 Quote Link to comment Share on other sites More sharing options...
+TheBF Posted May 24, 2021 Share Posted May 24, 2021 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:;<=>?@" 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 ! RUNNINGMAN3.mp4 5 Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted May 26, 2021 Share Posted May 26, 2021 (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) 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 May 26, 2021 by senior_falcon 5 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.