////////////////////////////////////////////////////////////////////////////////////////
// OVERVIEW
////////////////////////////////////////////////////////////////////////////////////////
/*
DESCRIPTION: This code is for hacking and testing only.
AUTHOR: Andre' LaMothe
COMMENTS:
HISTORY:
*/
////////////////////////////////////////////////////////////////////////////////////////
// INCLUDES
////////////////////////////////////////////////////////////////////////////////////////
#include <Arduino.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <avr/pgmspace.h>
using namespace std;
////////////////////////////////////////////////////////////////////////////////////////
// STRUCTS AND CLASSES
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// PROTOTYPES
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// DEFINES AND MACROS
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// GLOBALS
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// FUNCTIONS, API, METHODS
////////////////////////////////////////////////////////////////////////////////////////
// normally, you could just use extern for each prototype, but C++ "name mangles" the symbols
// so we need to use the "extern C" syntax to tell the compiler to leave the symbols alone, so
// they match up to the external ASM file symbols without any funky business
extern "C"
{
int16_t Multiply(int16_t x, int16_t y);
void DigitalSetASM( uint8_t port, uint8_t bit );
void DigitalClrASM( uint8_t port, uint8_t bit );
void TurnLEDOn();
void TurnLEDOff();
void SetLED( uint8_t state );
int8_t PrimeNth( uint8_t number );
int16_t PlayerFitness();
} // end externals
char stringBuffer[ 80 ];
volatile int16_t x = 2;
volatile int16_t y = 10;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
// the setup function runs once when you press reset or power the board
// initialize serial port
Serial.begin(115200);
Serial.print( "\n\rIn Setup()...\n\r" );
sprintf(stringBuffer, "\nCalling External ASM Multiply(%d, %d) = %d", x, y, Multiply( x, y ) );
Serial.print( stringBuffer );
for (int index = 0; index < 16; index++)
{
sprintf(stringBuffer, "\nCalling External ASM PrimeNth(%d) = %d",index, PrimeNth( index ) );
Serial.print( stringBuffer );
} // end for index
sprintf(stringBuffer, "\nCalling External ASM PlayerFitness() = %d",PlayerFitness() );
Serial.print( stringBuffer );
} // end setup
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop()
{
SetLED( HIGH );
//TurnLEDOn();
delay(200);
SetLED( LOW );
//TurnLEDOff();
delay(200);
} // end loop
////////////////////////////////////////////////////////////////////////////////////////