# 2026-07-05 - Wildfire Simulation
       
       For the 2026 Old Computer Challenge i selected the 1970s
       Forest Fire simulation, a BASIC listing from Stimulating Simulations
       by C. William Engel [1].  This seems appropriate considering that
       this is the time of year for fireworks and wildfires here on the
       west coast of the USA.  I'll name my version Wildfire.  I am aware
       of two DOS games inspired by Forest Fire: Fire Fighter [2] and
       Firestorm [3].  These go beyond the scope of what i plan to do this
       week.
       
       I typed in the BASIC listing [4].  It basically ran without changes.
       
       I changed the output to print the columns double-spaced.  This fixes
       the aspect ratio for a more square grid.  I changed the program to
       seed the RNG based on the system time.  This causes it to give a
       different simulation every time.
       
       I made a few changes to make it compile with FreeBASIC.  The CLEAR
       and RUN statements work differently in FreeBASIC than in QBASIC.EXE,
       so i changed the code to RESET and GOTO.  I posted the resulting
       WILDFIRE.BAS [5] and WILDFIRE.EXE [6].
       
       My next step will be to convert this to an AWK program.  I intend to
       change the program to use a command style interface.  This should
       make it possible to write more idiomatic AWK code where each command
       is handled by an AWK pattern and action.  I also plan to use
       chess-style algebraic notation for the grid, which in my opinion will
       make the commands less ambiguous.
       
       What follows is the book's description of the Forest Fire simulation.
       
       # Scenario
       
       A lightning storm has ignited fires in a forest. Your task is to put
       out the fires and save as many trees as possible. The forest is
       divided into 81 sectors formed by a 9x9 grid. Each sector is
       identified by the number of its row and column. The symbol, ".",
       represents woods, an "*" represents fire, and a blank space
       represents burnt out woods.
       
       The chance of an existing fire spreading to adjacent wooded areas is
       70%. Fires last for nine turns before burning out.
       
       You have two weapons with which to fight the fire. You can drop
       chemicals that are designed to extinguish the fires in a specified
       sector. The chance that the drop will affect the fires in this sector
       and its eight adjacent sectors is 50%. For example, if there are six
       fires burning in a nine-square area, approximately three will be
       affected by the chemicals. The effect of chemicals is to reduce the
       number of turns before the fire burns out by three. Since a fire
       lasts only nine turns, three successful chemical hits will be needed
       to extinguish a fire. If the fire has been burning for six turns,
       then one hit will suffice.
       
       The second weapon available to you is a backfire. To start a
       backfire, you must respond to the row input with a zero. You will
       then be asked for a backfire row and column. The sector in which a
       backfire is started must be wooded. This backfire will not spread and
       will burn out in the next turn, forming a barrier against the spread
       of fire.
       
       Your rating will be the number of trees remaining after all the fires
       are out, plus 30.
       
       # Sample Run
       
           Turn #1
           -------
           
             1 2 3 4 5 6 7 8 9
           1 . . . . . . . . .
           2 . . . . . . . . .
           3 . . . . . . . . .
           4 . . . . . . . * .
           5 . . . . . . . * .
           6 . . . * . . . . .
           7 . . . . . . . . .
           8 . . . . . . . . .
           9 . . . . . . . . .
           
           ROW?  0
           BACKFIRE ROW?  4
           BACKFIRE COLUMN?  7
           
           Turn #2
           -------
           
             1 2 3 4 5 6 7 8 9
           1 . . . . . . . . .
           2 . . . . . . . . .
           3 . . . . . . . . .
           4 . . . . . . * * .
           5 . . . . . . . * .
           6 . . . * . . . . .
           7 . . * . . . . . .
           8 . . . . . . . . .
           9 . . . . . . . . .
           
           ROW?  0
           BACKFIRE ROW?  5
           BACKFIRE COLUMN?  7
           
           Turn #3
           -------
           
             1 2 3 4 5 6 7 8 9
           1 . . . . . . . . .
           2 . . . . . . . . .
           3 . . . . . . . . *
           4 . . . . . . . * .
           5 . . * . . . * * .
           6 . . . * . . . * .
           7 . . * . . . . . .
           8 . . . . . . . . .
           9 . . . . . . . . .
           
           ROW?  0
           BACKFIRE ROW?  6
           BACKFIRE COLUMN?  7
           
           Turn #4
           -------
           
             1 2 3 4 5 6 7 8 9
           1 . . . . . . . . .
           2 . . . . . . . . .
           3 . . . . . . . . *
           4 . . . . . .   * .
           5 . . * . . .   * *
           6 . . . * . . * * .
           7 . . * . . . . . .
           8 . . . . . . . . .
           9 . . . . . . . . .
           
           ROW?  6
           COLUMN?  3
       
       Skip forward past turns 5 through 10...
       
           Turn #11
           --------
           
             1 2 3 4 5 6 7 8 9
           1 . . .   * * . * *
           2 . . . . * * *   .
           3 . . . . .        
           4 . . . . . .     .
           5 . *   . . .      
           6 *       . .      
           7 . *   . . . *    
           8 . .     . . . *  
           9 . .   * . . * . .
           
           ROW?  6
           COLUMN?  2
           
           Turn #12
           --------
           
             1 2 3 4 5 6 7 8 9
           1 . . .     * .    
           2 . . . .         .
           3 . . . . .       .
           4 . . . . . .     .
           5 .     . . .      
           6         . *      
           7 .     .          
           8 . .   . .   .    
           9 . .     . .   . .
           
           ROW?  8
           COLUMN?  7
       
       Skip forward past turns 13 through 15...
       
           Turn #16
           --------
           
             1 2 3 4 5 6 7 8 9
           1 . . .     * .     
           2 . . . .         .
           3 . . . . .        
           4 . . . . . .     .
           5 .     . . .      
           6         . *      
           7 .     .          
           8 . .   . .   .    
           9 . .     . .   . .
           
           ROW?  6
           COLUMN?  6
           
           
           YOUR RATING IS 69.
           PLAY AGAIN?
       
       # Variables
       
           L(R,C) -- Grid location status
                R -- Row
                C -- Column
                I -- Row number increment
                J -- Column number increment
                A -- Adjacent row
                B -- Adjacent column
                F -- Count
                T -- Temporary variable
                R -- Rating
       
       # Grid location status
       
                0 -- Burnt woods
           1 to 9 -- Fire
               10 -- Woods
               11 -- Temporary variable
       
       # Minor Modifications
       
       * Number of beginning fires -- line 50
       * Location of beginning fires -- lines 60 , 70
       * Probability of putting out fire -- line 290
       * Amount fire burns out each turn -- line 300
       * Size of backfire -- line 370
       * Probability of spread -- line 480
       * Size of spread fires -- line 550
       * Rating scale -- lines 660, 670
       
       # Major Modifications
       
       * Change grid size.
       * Randomly choose location of beginning fires.
       * Add time to move from one place to another.
       * Have wind speed and direction affect the spread of the fire.
       * Include barriers such as lakes and roads.
       * Have some of the sectors burn faster than others.
       
       tags: occ2026,retrocomputing
       
       # Footnotes
       
       [1] Stimulation Simulations by C. William Engel
       
 (HTM) Edition 1 (1977)
       
 (HTM) Edition 2 (1979) (Atari)
       
 (HTM) [2] Fire Fighter (JS) (Lynx not allowed, boo hiss)
       
 (HTM) [3] Firestorm
       
 (TXT) [4] FIRE.BAS
       
 (TXT) [5] WILDFIRE.BAS
       
 (BIN) [6] WILDFIRE.EXE
       
 (IMG) [7] Flow chart
       
       # Tags
       
 (DIR) occ2026
 (DIR) retrocomputing