Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help with porting allegro timer
#11
You must declare "thetimer" as SHARED, or it won't be global -- always use OPTION EXPLICIT when working with big libraries, it's more safe.

This test from's Allegro worked fine:

Code:
''
''    Example program for the Allegro library, by Shawn Hargreaves.
''
''    This program demonstrates how to use the timer routines.
''    These can be a bit of a pain, because you have to be sure you lock
''    all the memory that is used inside your interrupt handlers.
''


#include "allegro.bi"


    '' globals
    dim shared as integer x, y, z



'' timer interrupt handler
sub inc_x cdecl ()
    x += 1
end sub

'' timer interrupt handler
sub inc_y cdecl ()
       y += 1
end sub

'' timer interrupt handler
sub inc_z cdecl ()
       z += 1
end sub


       allegro_init
       install_keyboard()
       install_timer()
  
       if( set_gfx_mode(GFX_AUTODETECT_WINDOWED, 320, 200, 0, 0) <> 0 ) then
          set_gfx_mode(GFX_TEXT, 0, 0, 0, 0)
        end 1
       end if
  
       'set_palette(desktop_palette)
       clear_to_color(screen, makecol(255, 255, 255))
       text_mode(makecol(255, 255, 255))

       '' the speed can be specified in milliseconds (this is once a second)
       install_int(@inc_x, 1000)

       '' or in beats per second (this is 10 ticks a second)
       install_int_ex(@inc_y, BPS_TO_TIMER(10))

       '' or in seconds (this is 10 seconds a tick)
       install_int_ex(@inc_z, SECS_TO_TIMER(10))

       '' the interrupts are now active...
    do while (keypressed() = 0)
        textout_centre( screen, font, "x=" + str$(x) + ", y=" + str$(y) + ", z=" + str$(z), _
                          SCREEN_W\2, 176, makecol(0, 0, 0) )
    loop

    end 0
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)