You are here: Home DOCUMENTATION information SBASIC Manual - Page 45

Technological Arts Inc.

Your Shopping Cart

Your Cart is currently empty.

SBASIC Manual - Page 45

Article Index
SBASIC Manual
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10
Page 11
Page 12
Page 13
Page 14
Page 15
Page 16
Page 17
Page 18
Page 19
Page 20
Page 21
Page 22
Page 23
Page 24
Page 25
Page 26
Page 27
Page 28
Page 29
Page 30
Page 31
Page 32
Page 33
Page 34
Page 35
Page 36
Page 37
Page 38
Page 39
Page 40
Page 41
Page 42
Page 43
Page 44
Page 45
Page 46
Page 47
Page 48
Page 49
Page 50
Page 51
Page 52
Page 53
Page 54
Page 55
Page 56
Page 57
Page 58
Page 59
Page 60
Table of Contents
Index
All Pages

     SBasic User's Manual     SBasic Version 2.7             Page 45
     Printed:  December 5, 1999
     Interrupts


     SBasic provides support for processing interrupts on the target
     system.

     You can write interrupt service routines (ISRs) directly in SBasic,
     rather than having to drop down into assembly language for the target
     machine.  However, you must declare a block of SBasic code as an ISR
     by using the INTERRUPT statement.

     The INTERRUPT statement can accept a single argument, which is the
     address on the target system to use as an interrupt vector.  SBasic
     will determine the address of the ISR code, then write that address to
     the vector address you specify.

     Later, when your program is running on the target system, an interrupt
     will cause control to transfer to the address stored in the vector
     address.  This in turn starts execution of your SBasic routine.

     Example:

          interrupt $fff0          ' use $fff0 as the interrupt vector
          a = peekb(porta)         ' read 8 bits from port A
          end                      ' return from the interrupt

     Given the above example, an interrupt that uses $fff0 as its vector
     will cause control to jump to the statement containing the PEEKB
     function.  This small program will read a value from port A, then
     return from the interrupt.

     Note that your SBasic routine does not get written to address $fff0;
     only the address of your routine gets written there.  If necessary,
     examine the code created by the compiler to help understand how SBasic
     interrupts work.

     You must use an END statment to terminate all ISR code following an
     INTERRUPT statement.  When it processes this END statement, SBasic
     compiles the proper Return from Interrupt instruction for the target
     system.

     You sometimes need more than one exit from an ISR.  If so, simply use
     the RETURN statement to exit the ISR.  SBasic will automatically
     compile the proper instruction for leaving the interrupt section.

     Example:

          interrupt $fff0
          if n = $66
               return
          endif
          n = $10
          end