believe it or not I studied robotics a long time ago and Im fully capable of running an (asea) LArge 8foot arm used in many factory floors to do all sorts of stuff from welding holding bolting etc..
anyway if u build yourself a small led tester board you could access this C++ code we did ages ago.
#include"stdio.h"
#include"conio.h"
#include"dos.h"
int a[40]={2,4,8,16,32,64,128,320,288,272,264,260,258,257,0};//night rider
int b[40]={24,36,66,129,66,36};//starts in middle and ends in middle
int c[40]={24,36,66,129};//starts in middle and ends out
int d[40]={129,66,36,24};//starts out and ends in middle
int e[40]={85,170};//alternative chaser
int f[40]={1,2,3,4,7,8,15,16,31,32,63,64,127,128,255};//cum. chaser
int g[40]={5,10,20,40,80,160,80,40,20,10,5};//R-L-R chaser(1 space,2 lgts)
int h[40]={5,10,21,42,85,170,85,42,21,10,5};//R-L-R chaser(1 space)
int l[40]={1,3,7,15,31,63,127,255,127,63,31,15,263,259};//the wall R-L-R
int m[60]={2,2,4,4,8,8,16,16,32,32,64,64,128,
128,255,256,85,170,85,170,255,256,24,36,66,129,
255,256,255,256,320,320,288,288,272,272,264,264,
260,260,258,258,257,257};//combo
void main()
{
int i,j,k,address,speed,cycles;
char letter,narottam;
narottam='y';
clrscr();
printf("\t\t PARALLEL PORT INTERFACE LIGHT DISPLAY\n");
printf("\t\t TAFE Assignment indi Aslan Vikash \n");
printf("\n\n");
printf("\t\t +-----------------------------------------+\n");
printf("\t\t I ------------- MAIN MENU ------------- I\n");
printf("\t\t I I\n");
printf("\t\t I ENTER 1: FOR PORT ADDRESS = 0x378 I\n");
printf("\t\t I ENTER 2: FOR PORT ADDRESS = 0x278 I\n");
printf("\t\t I ENTER 3: FOR PORT ADDRESS = 0x3bc I\n");
printf("\t\t +-----------------------------------------+\n");
scanf("%d",&address);
printf("\n");
while(narottam=='y'){ //main
clrscr();
printf("\n\n");
printf("\t\t +------------------------------------------+\n");
printf("\t\t I ---------- LIGHT DISPLAY ---------- I\n");
printf("\t\t I I\n");
printf("\t\t I ENTER a: FOR NIGHT-RIDER I\n");
printf("\t\t I ENTER b: FOR LOOP-DE-LOOP I\n");
printf("\t\t I ENTER c: FOR STRETCH-THE-ELASTIC I\n");
printf("\t\t I ENTER d: FOR CRUSH THE COKE CAN I\n");
printf("\t\t I ENTER e: FOR ALTERNATIVE HOPPING I\n");
printf("\t\t I ENTER f: FOR CUMULATIVE COUNTER I\n");
printf("\t\t I ENTER g: FOR SIDE STEP (RT-LT-RT) I\n");
printf("\t\t I ENTER h: FOR THE PICKET FENCE (RT-LT-RT) I\n");
printf("\t\t I ENTER l: FOR THE WALL (RT-LT-RT) I\n");
printf("\t\t I ENTER m: FOR THE COMBO SUPREME I\n");
printf("\t\t +------------------------------------------+\n");
letter=getche();
printf("\n\n");
if (address==1){//1
clrscr();
printf("Please enter the cycle speed:\n ");
scanf("%d",&speed);
clrscr();
printf("Please enter the number of cycles req'd:\n ");
scanf("%d",&cycles);
clrscr();
if (letter=='a'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<a[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",a[i]);
outportb(0x378,a[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='b'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<b[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",b[i]);
outportb(0x378,b[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='c'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<c[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",c[i]);
outportb(0x378,c[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='d'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<d[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",d[i]);
outportb(0x378,d[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='e'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<e[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",e[i]);
outportb(0x378,e[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='f'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<f[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",f[i]);
outportb(0x378,f[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='g'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<g[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",g[i]);
outportb(0x378,g[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='h'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<a[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",h[i]);
outportb(0x378,h[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='l'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<l[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",l[i]);
outportb(0x378,l[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='m'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<m[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",m[i]);
outportb(0x378,m[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
clrscr();
printf("\n\nDO YOU WANT TO HAVE ANOTHER GO? (yy/nn)");
narottam=getche();
clrscr();
}//1
else if (address==2){//1
clrscr();
printf("Please enter the cycle speed:\n ");
scanf("%d",&speed);
clrscr();
printf("Please enter the number of cycles req'd:\n ");
scanf("%d",&cycles);
clrscr();
if (letter=='a'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<a[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",a[i]);
outportb(0x278,a[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='b'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<b[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",b[i]);
outportb(0x278,b[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='c'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<c[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",c[i]);
outportb(0x278,c[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='d'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<d[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",d[i]);
outportb(0x278,d[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='e'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<e[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",e[i]);
outportb(0x278,e[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='f'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<f[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",f[i]);
outportb(0x278,f[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='g'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<g[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",g[i]);
outportb(0x278,g[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='h'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<a[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",h[i]);
outportb(0x278,h[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='l'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<l[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",l[i]);
outportb(0x278,l[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='m'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<m[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",m[i]);
outportb(0x278,m[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
clrscr();
printf("\n\nDO YOU WANT TO HAVE ANOTHER GO? (yy/nn)");
narottam=getche();
clrscr();
}//1
else if (address==3){//1
clrscr();
printf("Please enter the cycle speed:\n ");
scanf("%d",&speed);
clrscr();
printf("Please enter the number of cycles req'd:\n ");
scanf("%d",&cycles);
clrscr();
if (letter=='a'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<a[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",a[i]);
outportb(0x3bc,a[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='b'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<b[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",b[i]);
outportb(0x3bc,b[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='c'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<c[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",c[i]);
outportb(0x3bc,c[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='d'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<d[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",d[i]);
outportb(0x3bc,d[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='e'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<e[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",e[i]);
outportb(0x3bc,e[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='f'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<f[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",f[i]);
outportb(0x3bc,f[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='g'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<g[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",g[i]);
outportb(0x3bc,g[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='h'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<a[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",h[i]);
outportb(0x3bc,h[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='l'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<l[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",l[i]);
outportb(0x3bc,l[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
else if (letter=='m'){ ///1
printf("%c",letter);
clrscr();
do{ ///2
for(k=0;k<cycles;k++){///3
clrscr();
for(i=0;i<m[i];i++){///4
for (j=0;j<speed;j++){///5
window(1,1,80,25);
cprintf("Light decimal address:%d\n ",m[i]);
outportb(0x3bc,m[i]);
}///5
}///4
}///3
}while (!k==cycles); ///2
}///1
clrscr();
printf("\n\nDO YOU WANT TO HAVE ANOTHER GO? (yy/nn)");
narottam=getche();
clrscr();
}//1
}//final finish
printf("\n\t\t THANK-YOU FOR USING THIS PROGRAM");
printf("\n\t\t Press any key to exit");
getche();
}//main