Reciprocating Bill Posted May 30, 2022 Share Posted May 30, 2022 This Demo is running on a TI-99/4a modified with 32K 16-bit static RAM (for about 40% more speed). With the exception of the Lorenz Attractor, each of these assembly programs utilizes a tree structure and pseudo-recursion (implemented using stacks). There are no edits; all of these programs are resident simultaneously. A SuperCart or Mini Memory cartridge is required for the additional RAM. 1. Pentominos solver based on “PENTOMINOS, A Puzzle-Solving Progam,” Compute! magazine, May 1984 page 106. First three solutions of 10x6 puzzle. 2. NQUEENs puzzle, based on the FreeBASIC version at the Rosetta Code website. No queen attacks any other queen. 8 queens on 8x8 board, 10 queens on 10x10 board, 12 queens on 12x12 board. Only the first 1000 of 14,000+ 12x12 solutions displayed. Queens are sprites. 3. MAZE generator and solver. The generator was adapted from a Rosetta Code Commodore BASIC program. The solver is original with me. Each maze structured so there is always one and only one solution between any two points on maze. Starting and finishing points are randomly selected. Graphics1 mode. 4. Mandelbrot Snowflake, adapted from Compute! magazine, “IBM Fractal Graphics,” Paul Carson, March 1986 page 78 (“The Dragon Sweep”). The Snowflake line coordinates were pre-calculated and line coordinates saved to TIPI in two segments (about 11k total). Graphics2 mode. My Bresenham line drawing implementation. 5. Hilbert Curve, adapted from BASIC original, Michael Ackerman, BYTE Magazine, June 1986. Graphics2. 6. Sierpinski Carpet, adapted from Rosetta Code Spectrum BASIC version. Uses fixed point math for speed. Graphics2 7. Lorenz Attractor. This was based on version I wrote in TML Pascal for the Mac II in 1989. Calculated using ROM floating point routines, then saved to disk. This demo retrieves that data and displays it. Graphics2 8. Sierpinski Curve, based on David Ahl’s BASIC program, Creative Computing, July 1984. Graphics2. 11 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted May 30, 2022 Share Posted May 30, 2022 Very nice. The speed boost is quite impressive. What algorithm are you using for the line drawing routine? Quote Link to comment Share on other sites More sharing options...
Willsy Posted May 30, 2022 Share Posted May 30, 2022 This is great! It's such a shame the 9900 is crippled with the 8-bit external bus. Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted May 30, 2022 Author Share Posted May 30, 2022 (edited) LDATBSDATASDATBLDATADEMOMD1O These are the files, dragged directly from my TIPI to this window (does that work?). DEMOMD1O is an Option 3 file ("Demo Mini DSK1 Object.") The four data files must reside on DSK1. It runs on Classic99 or real iron - either Mini Memory or SuperCart required. Edited May 30, 2022 by Reciprocating Bill OCD 1 1 Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted May 30, 2022 Author Share Posted May 30, 2022 (edited) The line drawing algorithm is a Bresenham of my own devising, modeled after the pseudocode in the Wikipedia article about same. The whole thing runs about 1.4x faster on my hardware than in Classic99. Edited to add: the Demo runs in 9' 39" in Classic99, 6' 52" on my 16-bit console. Generally, the routines use >8300 and >8320 as their primary workspaces (out of habit). Edited May 30, 2022 by Reciprocating Bill 2 Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted May 30, 2022 Share Posted May 30, 2022 7 hours ago, Reciprocating Bill said: 4. Mandelbrot Snowflake, adapted from Compute! magazine, “IBM Fractal Graphics,” Paul Carson, March 1986 page 78 (“The Dragon Sweep”). The Snowflake line coordinates were pre-calculated and line coordinates saved to TIPI in two segments (about 11k total). Graphics2 mode. My Bresenham line drawing implementation. I really like the Mandelbrot snowflake. Really neat stuff! 1 Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted May 30, 2022 Author Share Posted May 30, 2022 1 hour ago, InsaneMultitasker said: I really like the Mandelbrot snowflake. Really neat stuff! It's a classic fractal demonstration - it and similar generators are described in detail in Mandelbrot's 1977 book "The Fractal Geometry of Nature" (W.H. Freeman and Company). Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted May 30, 2022 Author Share Posted May 30, 2022 3 Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted June 1, 2022 Author Share Posted June 1, 2022 (edited) This video displays the original Compute! TI BASIC Pentominos program running in Extended BASIC (RXB, actually). I then switch it to the assembly version. There's a bit of difference. Edited June 1, 2022 by Reciprocating Bill 1 2 Quote Link to comment Share on other sites More sharing options...
GDMike Posted June 1, 2022 Share Posted June 1, 2022 Yes. I stick to assembly when possible, but sometimes I can peek at some memory location easily in basic (using ea cart), but I'll write a little program and call it when needed, basic is my go-to when writing in assy. Quote Link to comment Share on other sites More sharing options...
+9640News Posted June 1, 2022 Share Posted June 1, 2022 On 5/30/2022 at 11:17 AM, Reciprocating Bill said: LDATB 3.25 kB · 7 downloads SDATA 7.94 kB · 5 downloads SDATB 3.25 kB · 5 downloads LDATA 7.94 kB · 6 downloads DEMOMD1O 15.88 kB · 6 downloads These are the files, dragged directly from my TIPI to this window (does that work?). DEMOMD1O is an Option 3 file ("Demo Mini DSK1 Object.") The four data files must reside on DSK1. It runs on Classic99 or real iron - either Mini Memory or SuperCart required. Any chance you would release the source code? I would be interested to see how well they run on the Geneve and converted to run from MDOS mode. Beery Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted June 1, 2022 Author Share Posted June 1, 2022 10 minutes ago, 9640News said: Any chance you would release the source code? Sure. I'm thinking that the source files for the original, stand-alone versions of each of the program would be most useful. They're fairly well commented. For the combined version I stripped out most of the commenting to reduce the source file size and hence the number of files COPIED during assembly. (I'm still using the E/A assembler, albeit sped up in Classic99. I know, I know, I need to move on, and have been playing with XTD99). 2 Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted June 4, 2022 Author Share Posted June 4, 2022 (edited) Here are the source files of which my demo is comprised, as displayed above. They are relatively (but not entirely) uncommented. (I have commented versions of the standalone versions if interested in their inner workings). I've assembled them (option 3) with the EA Assembler (on Classic99). It's a bit of a mishmash, as these were originally stand-alone programs that I have squeezed together, modifying labels to avoid duplicates and modifying routines (such as the Brensenham routine DRAWXY) so they can be shared. A SuperCart or MiniMemory is required to run it on real hardware. I've AORGed the code so that non speed-sensitive data and initialization routines are placed on the SuperCart or MiniMemory while the main programs are in 16-bit expansion RAM (on my console). The entry point is MAINST. DEMOS is the main source file. At the end of DEMOS are four COPY directives that continue assembly through SMALLLS4, SMALLQ, SMALLM, and SMALLPP. Right now the COPY directives expect to find those files on DSK4 (which is where CLASSIC99 sees my source files on my TIPI.) If you put them elsewhere you'll have to change the device accordingly. At runtime the demo expects to find SDATA, SDATB, LDATA and LDATB (in post #4, above) on DSK2. If you put them elsewhere you will need to change the PAB entries (in DEMOS) for those files to live on a different DSK. The filenames are at lines 107 and 116 for SDATA and SDATB and lines 185 and 194 for LDATA and LDATB. A routine in DEMOS labeled as SEL (line 719) calls each of the programs in order. @SELNUM is used to pass a parameter that controls how long each segment runs. In most instances it specifies number of repetitions, although for the Pentominoes and Queens program it specifies the number of solutions to be found. Edited to add: assemble the file DEMOMM to work with both the MiniMemory and the SuperCart. DEMOS works only with the SuperCart. DEMOSSMALLPPSMALLQSMALLLS4 SMALLM DEMOMM Edited June 5, 2022 by Reciprocating Bill Note file required to work with MiniMemory 4 Quote Link to comment Share on other sites More sharing options...
RXB Posted June 4, 2022 Share Posted June 4, 2022 On 5/31/2022 at 8:00 PM, Reciprocating Bill said: This video displays the original Compute! TI BASIC Pentominos program running in Extended BASIC (RXB, actually). I then switch it to the assembly version. There's a bit of difference. Curious which version of RXB? 2020? Or 2022? Quote Link to comment Share on other sites More sharing options...
Reciprocating Bill Posted June 4, 2022 Author Share Posted June 4, 2022 That's 2022. The program was written for TI BASIC and uses VCHAR and HCHAR to put characters on the screen one at a time. 1 1 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.