Jump to content
IGNORED

Something a Little Different


Recommended Posts

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.

 

 

 

  • Like 11
Link to comment
Share on other sites

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 by Reciprocating Bill
OCD
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

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 by Reciprocating Bill
  • Like 2
Link to comment
Share on other sites

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!

  • Like 1
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

 

  • Like 2
Link to comment
Share on other sites

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 by Reciprocating Bill
Note file required to work with MiniMemory
  • Like 4
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...