The CompuBBS code

SPP <[email protected]> Mon, 26 Jul 2021 22:58:53 -0500
Newsgroups alt.comics.alternative
Message-ID <[email protected]>
The CompuBBS code
Please use it to communicate :-) 
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
readme.txt - file below between horizontal rule 
----------------------------------------------------------------------------- 
Disclaimer:
-----------
I recommend the use of a blue background(hexadecimal #0000CD) and white 
text(hexadecimal #ffffff) for the terminal session of the CompuBBS 
computer bulletin board system.  Somthing about the blue black 
background that helps anybody to be able to critically think and use the 
tool toward some level of sufficiency.  Notice the success of the black 
board or chalkboard of the Jewish pedagogy industry of whichever school 
system.  The black board was quite effective in helping so many be able 
to read, write, and do arithmetic amidst that world of the Jewish 
religious war trying to degenerate whichever organ of our human bodys to 
disrupt critical thinking.  Such organizations I mention in the killfile 
under the username of [email protected] through USENET Newsgroups 
as in giganews.com and groups.google.com.  So check it out and may you 
too find the clues you need to help you deal with your life condition.  
Good luck to you.  I want you to win.  The nature of the good is to 
overcome and defeat the bad.  Reading is fundamental.  Always a 
pleasure.  Indeed, there is some good out there.  However, don't be 
naieve.  Beware of the sucker punch when dealing with whomever in a 
world of Jewish religious war ideations for whichever resources.

I find the Evangelicalism, Nazism, and Existentialism are worth the 
investment. That world of the Maosit Transcendentalism, Marxist 
Communism, and Mussolini Zionism are no good, you know.  Mao, Marx, and 
Mussolini are Jews who are only for the Jewish and nobody else.  Our 
Network of 72 is heavily challenged by the world of the Jewish isms and 
their 3 sabotages in whichever system of things.  That is the issue, 
which this CompuBBS helps overcome in some limit.

The CompuBBS unix computer bulletin board system is one of the HUFA(s) 
weaponrys.  In laymens terms the HUFA is elaborated this way:

H - Homeopathys
U - Unix technologys
F - FIAT moneys through whichever social security office
A - Ayn Rand postulates of the self using the "I am"(Soham)

It is like that as we are...
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
The CompuBBS code
Satyababu Popuri 
Bachelors in Computer Science

Silence is death.  The need for an open source bulletin board system is 
vital for communication to prosper across this earth planet.  In my 
travels I have discovered certain tools that help many to research and 
develop with ease while maintaining a sound and cogent system toward 
such an end.  This CompuBBS is an open source version of the NYUNET 
bulletin board system I discovered while mistakenly studying and working 
there in my quest for enligtenment.  As fate would have it, I chanced 
upon certain tools that I now present with an assortment of other tools 
I have discovered in my triste with death while working in the I.T. 
industry that just work.

Indeed, such tools have helped me here and there to maintain a 
consistent understanding of not only Unix fundamentals but also a feel 
good experience that is second to none.  These tools represent the love 
affair that never quits.  Not only has it valorized and inundated across 
this earth planet but has been the aims and means of my reason for 
living.

Man needs a proper meditation of the heart and this tool list is one of 
the things I have used to be able to better understand myself and 
others.  It was during the college years that I was exposed to such 
tools in over 3 universities and 11 years of employment here and there.  
They just work.  Given the level of complexity the graphical user 
interface(GUI) engenders it is refreshing to fall back on a tool base 
that is 
time immemorial.  So please feel free to use them and contribute toward 
the open source endeavor to foster freedom of speech.

For me prayer works but without a means of communication that is 
uninhibited and unmoderated we are at a loss for words.  That is the 
shear beauty of the traditional tools as in 'tin' of the USENET NEWS 
servers; 
as well as the 'irssi' of the IRC servers.  It goes on.  The list of 
tools 
I mention are as follows based on over 20 years of experience with the 
UNIX pragma.
-----------------------------------------------------------------------
0. Alpine - a nice email client 

1. Tin - a nice newsreader 

2. Irssi - a nice internet relay chat client 

3. Lynx - a nice web browser 

4. Gopher - a nice ftp client 

5. Nslookup - a nice directory service 

6. Telnet - a nice remote login tool 

7. Tailer - a nice monitoring tool [This I discovered at a .com I worked 
for.  It simply goes to an i.p. address and searches for a string.  If 
the string is not there an alert is genertated.  Maybe it is out there 
in the wild blue yonder of the internet as I chanced upon it once during 
the dawn of the internet in the late 90s and early millenium.]

8. Sendpage - this is a nice beeper software that helps to keep in touch 
with loved ones and others through the beeper or pager tool.  At one 
time during the golden 80s the beeper was the hallmark of those of teh 2 
car garage suburban american dream home.

9. Calcurse - a nice calendar application to assist with scheduling.  
Indeed, I have seen quite a number of tenured administrators invest into 
a simple calendar tool to assist with their work.  The calendar it seems 
is like the most auspicious tool for anyone trying to work for a living.  
Seems to be the hallmark of tenure.  Let's see..

A. ECN - a nice day trading game [This is Josh Green's day trading 
algorithym in Python when he worked at Daytek which is posted once again 
under the username of [email protected].  I encourage learning how 
to deal with money because "when men and women get together [money] gets 
in the way".]  That too, they say, education is about learning how to 
communicate and learn how to deal with money.

B. Bible - a nice text based bible program [Does anyone know of an old 
school Bible program that is text based and worthy of praise?  Prayer to 
Jesus Christ works!]

C. T.I.A. - this is the Tiny IDE Ada editor.  Could Ada be the language 
to mature with as a programmer, just as the UNIX is the operating system 
to mature with as a sysadmin?  Surely, Ada is used by the federations as 
NASA, while the UNIX is used by industrys.  It seems the larger than 
thou organizations of the world just invest in things that work.  
Unlike those nigger Jews, with thier bullshit Microsoft or pathetic 
solutions to a complex problems.  I am trying to encourage the Ada 
programming language over C++ and Java.  Does it work?  I have no clue.  
Been through so many heartaches and pain trying to go beyond the 
learning curve trying to program.  HTML was the best experience.  After 
that, it all went downhill.

D. Tutor - a nice Unix tutorial, which I discovered at New York 
University.  Somewhere there is an open source version of it.  It is a 
great way to learn the Unix operating system.

E. Nano - a nice text editor 

F. Bash - a nice command prompt 

$. Exit - a simple exit to the whole CompuBBS tools for research and 
development.

I have foregoed useing the 'queue' tool as it may cause some problems as 
far as managing and maintaining the print spool.  The queue tool is 
always an issue for any I.T. computer lab as it is often the target of 
attacks by occidental miscreants.  There are other tools, such as 
'talk', that are also good if you know how to use them in the code I 
mentioned.  I refrained from mentioning 'talk' tool because it requires 
input about the user and terminal to literally talk to using a text 
based interface.  That too, I find the talk tool is used by Satanists 
among the Orientals who are in the ways of life of the Yiddish, Zen, 
Vudu, Hindu, LGBTQ, Trini, Creole, Hapa, Hoon, and Roma ancestorys to 
brainwash and influence naive people to become hostages of their 
JUBU(Judeo-Buddhist) suicide rituals.  That is how some nigger of the 
Made in Taiwan Zen tribe of the Jewish tried to influence me to be a 
Shaolin enthusiast.  As well, there is a tool which has been mentioned 
that is called 'calc'.  Is the 'calc' tool how they implement the 
black-scholes weapon of mass destruction?  Who really can calculate 
properly?  Even if the tool is properly designed, what do you do about 
the shit culture of psychotropics, narcotics, liquor, soya-neurotoxins, 
tobacco, and steroids that are all over the place from cool drinks to 
ingredients in condiments that degenerate any organ of our body 
assisting the interplay of consciousness?  When I was on psychotropics I 
really could not tell if it was night or day.  Yet, they say 80 percent 
are on the pill of some kind.  So what does that mean?

Well, I tell ya, the whole culture of the psychotropics, narcotics, 
liquor, soya-neurotoxins, tobacco, and steroids are the means by which 
the evil empire of the JUBU; eminating from republics as Taiwan, Israel, 
Sicily, Haiti, Hawaii, Trinidad, Indonesia, Phillipines, Tibet, and 
Brooklyn(NY, USA); area ble to control the masses by having said control 
substances bind to various parts of our humanoid body as the brain, 
heart, stomach, liver, kindeys, intestine, muscles, and lungs.  People 
are literally puppeted to be mindless automatons of the whole 
multi-level massacre.  Not only is this done through criminals but also 
through gorvernment authorized institutions with fake diplomas as in 
doctor, lawyer, social worker, nurse, pharmacist, dentist, psychiatrist 
garnered through bribing of school systems.  The whole thing is a farce.  
That too, a fabrication of the false business practices of mlms.  
Although, mlms are colloquially known as multi-level marketing 
businesses they are really multi-level massacre blood money 
manufacturing organizations where the human body is used to make serious 
alloy in the human body and the alloys possibly used to built the novus 
ordo secularam pyramid.  The world of Maoist Transcendentalism as an 
economic system is one of human sacrifices where the human body is fed 
to the very tool being manufactured or maintained.  That is why the 
level of domestic violence, communal war, and religious war is rampant 
all throughout this earth planet.

So many governments use the kill organizations of 
Transcendentalism(Temples, Ashrams, and Mandals), Allopathy, Microsoft, 
Niggervision, Palmistry, Insurance, Gambling, Utilitys, Pedagogy, 
Security, and Legality to garner the blood money to enact their 
multi-level massacre scenarios.  It is like that among them.  To simply 
eat, sleep, sex, socialize, study, suffice, synergy, spirituality, 
succeed, evagelize, and open source is like more difficult than 
anything.  Somehow, the American Dream we find out is alot about at 
least a 6 figure debt in serious economic terms.  That is what they are 
like.  A world of heinous domestic violence, communal war, and even 
religious war to further the Jewish dogmatic supremacy of the torment 
and torture looming around the nothing, which they brag of as the non 
one thing that is the everything.  That of a TNT leads to a world of 
hurt where each of the articles of incorporation that evidences a Jewish 
leader or presence for that matter in wanton disregard and disrespect 
unders up going inferno.

The destruction of the World Trade Center, Louisiana, IRAQ, Hispania and 
the projected Caribbean and Rule by Might of Hongkong, Pakistan, 
Germany, Morocco, and Argentina are a result of the Jewish trespass and 
Jew baiting treachery.  It is like that in a world of Jewish pride and 
prejudice by the most elite of human beings only to betray the very laws 
they are signatory to.  That is the result of the Maoist 
Transcendentalism, Marxist Communism, and Mussolini Zionism that is all 
over the place to the depths of the cosmos mentioned through the Star 
Trek reports.  That is what is there.

What they boast of is true.  The disparity between the rich and poor is 
growing worse day by day.  As well, the insitutionalization of the 
educated is the norm.  Additionally, the usurping of sovereignty and 
hegemony is the very thign that is most invited through the Jewish 
trespass and Jew baiting treachery.  That too Satanism through the 
worship of false gods as Gandhi, Buddha, and Khudaji of Judea is like 
all over the place.  It is like that among them and thier wanton 
disregard and disrespect toward sentient life, liberty, pursuit of 
happiness, property, faith, and propriety.  This has been thier end game 
for nearly 5,000 to 1 million years minimum.

Yet, amidst it all somethings work.  One thing to mention is that the 
forces of the JUBU and their Satanic Dharma get weaker over time.  
Apparently, the 2019 A.D. marks the end of their pagan occult calendar.  
Will 
they enter it?  The so called Kale Yuga they brag of?  What was once 
theirs will be ours.

In my vector of life, I find whichever the JUBU satanists are against 
are the very things that help me survive.  Take for example the Jewish 
denuncation of beef, pork, egg, cola, cake, sugar and even to the point 
of Indian, Christian, Muslim, European, Women, and Nazi ways.  Those are 
the very things that are the most lambasted by those of the Jewish 
diaspora and their foot soldiers of the Jewish literati who seek to 
destroy each and everything that has made their life worth living.  So 
many are just happy go lucky with the Jewish slave identitys that is the 
allurement of the masses.  They would rather be turned into an alloy 
through serious austerites of whicever caveats, banalitys, and 
divestments to further the Jewish xenophobia as their own.  It is like 
that as they seek to garner success in moneys and prayers without ever 
reading a Bid or Bible.

While we are fundamentally money getting animals who seek to hunt and 
gather for moneys as the squirrel hunts and gathers for nuts; rare few 
are of the study of books and whichever accompanying things regard the 
garnering of money.  Most are content with the Jewish propoganda and 
niggervision as they source of information.  For what?  That is how well 
controlled the populace by the world of devils triangle corporations 
using the hyperdermic syringe; control substances as psychotropics, 
narcotics, liquor, soya, tobacco, and steroids; as well as the 
brainwashing by the jewish occults in the worship of the swamis of 
Gandhi, Buddha, and Kudaji.  Those three lists seperated by the 
semicolon are the literal they mainting to further thier jewish 
religious war for blood money manufacturing leading to a premature death 
filled with trajedy, terrorism, and trauma to say the least.  That is 
what most governments of the world bank to justify their sovereignty and 
hegemony and maintain the Jewish higher law.

Amidst it all somethings work.  Things as Evangelicalism, Nazism, and 
Existentialism help to countermeasure the Maoist Transcendentalism, 
Marxist Communism, and Mussolinist Zionism; for the Jews like nothing 
more than to implement 3 sabotages in any system of things.  That maybe.  
Indeed, in the I.T. industry the Jews are the most consistent in 
establish the sabotage of the cron scheduler, mmu(memory management 
unit), and math corprocessor.  That is what they are able to do.  Henve 
them being mentioned in my killfile in this venture of the Cybermatrix 
or to say open source FIAT like moneys contract.

Evangelicalism - spiritual countermeasures to the Mussolini Zionism
Nazism - political countermeasures to the Marxist Communism
Existentialism - financial countermeasures to the Maiost 
Transcendentalism of whichever caste like pyramid scheme of the 
corporate slavery mentioned as the Jewish mlm or multilevel massacre.

Here in America the reigning mlms that have governed the world of false 
money getting have been herbalife, amway, and citigroup.  What is there?  
Only false receipts that are never honored.  A world of let downs that 
just get reiterated unto nothing.  A collapse of the very economic 
systems themselves.  That is how the Asian economic global contagion 
unleashed as so many orientals are heavily of the Jewish marriage and 
Jew baiting treachery toward anyone they have chanced upon.  As a result 
the following has been evidenced by the Jew baiting Orientals of the 
Chini, Thai, Ainy, and Malay ethnic groups.

Asian economic tigers have gone kaput
Model minority has gone bygone
Oriental mystique has gone satanic
Race supremacy has gone genocided

Now, the challenge for many is the evil empire of the 
JUBU(Judeo-Buddhist) satanists who have hostaged 90 percent of the 
worlds money or gdp through the forced consumption of the psychotropics, 
narcotics, liquor, soya, tobacco, and steroids either ilegally, 
criminally, institutionally, politically, religiouslly, or 
internationally.  The madness or to say mutually assured destructin goes 
on like this in a world of false ways of money getting; meditation of 
the heart; and sovereignty and hegemony.

I post more online under the username of [email protected].  
Kindly search for keywords as 'the deprogram', 'the cybermatrix', 'the 
emcronexus'.  Again, somethings work.  Thanks god for the guru Christ 
Jesus is the god.  Indeed, there is some good out there.  While there is 
no that of a thing as a hundred percent it is possible to juxtapose for 
a well and balanced fully that can endure the test of time and surpass 
all understanding.

Please find mentioned the postings of "The Deprogram Evangelical 
Savoire" on USENET News as in groups.google.com and giganews.com.  I try 
to communicate it as often as I can.  It is an ongoiing process of 
enlightenment.  I share some clues I have gathered in my nearly 45 years 
of travel across thise earth planet, most in this cosmopolitan city as 
New York City, which to me is a Jewish death camp.  I like to collect 
clues.  Has America done it again, to allow for the development of a 
proper meditation of the heart the can endure the test of time and 
surpass all understanding?  Indeed, there is some good out there.

The file list for this CompuBBS endeavor is as follows:

readme.txt
compubbs.sh 
bash-menu.sh 
bash-draw.sh 
Josh Greenes' Island ECN code

Please find the code in the following USENET newsgroups:

soc.culture.indian 
soc.culture.asian.american 
soc.culture.usa 
soc.cutlure.spain 
soc.culture.bangladesh 
soc.culture.puerto-rico 
alt.computer.consultants 
alt.sex.stories.hetero
soc.culture.africa
soc.culture.china
soc.culture.europe
soc.culture.telugu
soc.culture.iran

Let's setup servers of this type of an unmoderated open source bulletin 
board system.  The internet through such tools as the BBS has encouraged 
reciprocity or mutual respect.  This Cybermatrix endeavor which I am 
trying to contravecy is an attempt toward synergy or mutual success.  As 
well, there is a need for unity or mutual purpose, which I am coining as 
Emcronexus.  The T.E.A.M. acronymn for "together everyone accomplishes 
more" is worth encouraging.

The following are some nice networks I am encouraging toward some level 
of mutuality:

# - network - tool - description - industry - smurf - mutuality - 
insult(waveform)  
-----------------------------------------------------------------------------------
1 - Simulcast - tablet - educational - pedagogy - 2 race mix of British 
and one of any other race mix - infidelity - conehead(analog)
2 - Internet - computer - technological - technology - indian - 
reciprocity - squarehead(digital)
3 - Cybermatrix - television - financial - fiduciary - hispanic - synergy 
- tacohead(pulse)
4 - Tektocracy - beeper - political - grocery - british - ? - skinhead(?)
5 - Emcronexus - tazergun - fraternal - security - caribbeanese(tamil, 
taino, terron, and tiwi australoids) - fraternity - burrhead(triangle)
6 - Darkring - console - architectural - realty - african - ? - dothead?
(dotpitch?)
7 - Datatron - tracker(i.e. fitbit) - medical - homeopathy - european - ? 
- ?
8 - Heliopex - WET(wearable electronic timepiece)(i.e. smartwatch) - 
historical - history - russian - unity - ?
9 - Transpace - PDA(portable digital assistant)(i.e. smartphone) - sexual 
- sexuality - oriental - ? - slopehead(sawtooth)
10 - Starscape - controller - audiovisual - hospitality - australian - ? 
- ?
-----------------------------------------------------------------------------------
11 - Sneakerweb - tablet - spiritual - spirituality - arabian - comaradery 
- ?(?)

Datatron
Data - basis of reasoning
Tron - tool for scientific work

As well, I have noticed the following dutys that seem to withstand the 
test of time and surpass all understanding with my I.T. industry.  They 
are as follows:

CIS Sysadmins:
(Computer Information Specialties)
----------------------------------
0. networking - solaris/sparc : british(a.k.a grocer)
1. databasing - linux/intel : mulatto(Terron,Tamil,Taino,Tiwi)(a.k.a 
bouncer?)
2. multimedia - osx(bsd)/motorola : european(a.k.a physcian)
3. programming - haiku/amd : indian(a.k.a consultant)
4. troubleshooting - cytrix? : hispanic(a.k.a. accountant)
5. management - sap/vax? : african(a.k.a. landlord)
6. gaming - irix : russian(a.k.a. lawyer?)
7. productivity - minix-x11-react os/arm : australian?(a.k.a designer?)
8. security – sgi? : oriental?(a.k.a. escort)
9. testing - sco/sylk? : arabian?(a.k.a. scholar)
----------
Outside contractors:
10.tutoring - amix : jewish(teacher)[outside contractor]

With respect to the involvement of the Jewish blight upon humanity 
within the I.T. industry I find they are a curse more than anything.  
All they do is sabotage whichever system to justify yet another failed 
investment into thier diaspora.  It is like that among them as their 
history of failure is not only evidenced in the Holy Bible as in the 
Nubian kingdom of Egypt but also in whichever other civilization to have 
graced this earth planet.  That is why the Jews of the Yiddish, Zen, 
Vudu, Hindu, LGBTQ(Zoroastrian), Trini, Creole, Hapa, Hoon, and Roma 
ancestorys are known as the Negroid race, the niggers of the world.

Anyway, join us in this endeavor to liberate humanity from the vice grip 
of the Jew baiting culture of the Jewish idiot and Zen wrong.  I pray to 
Jesus Christ that you find these clues useful and worthy of praise as I 
have.  
This CompuBBS is a brief history of time and space of a world so good.  
In a way, the nature of the good is to overcome and defeat the bad.  So, 
God bless and God speed for Jesus Christ is God.  Always a pleasure.  
May you and your loved one's in the name of Jesus Christ be well, happy, 
prosperous, peacefull, healthy, and safe.

P.S. 
Let it be said, "[financial] frustration creates a great imbalance 
in mind and body."  We need to allay our antogonizing forces so that 
open source fiat like monies are provided for all concerned.  The UNIX 
may help with learning how to communicate but the FIAT may help with 
learning how to deal with monies.

The only issues I have are the evil empire of the JUBU and their 
branches of Transcedentalism, Allopathy, Microsoft, Niggervision, 
Palmistry, and Insurance corporations of whichever bilk and swindel.  
There is that of a thing as evil and it is their incessant anti-Christ 
ways which ruin the whole thing.  That is the issue.  The dangers of the 
Jewish, Zen, Vudu, Hindu, LGBTQ, Trini, Creole, Hapa, Hoon, and Roma 
masters of the nothing or meaningless things as in zazen(breathing 
excercises), mantra(meaningless word recitations), and 
koan(visualizations on meaningless riddles) of the Satanic Dharma is 
more than anything.  They are more of an evil and a bad influence than 
one can possibly dream.  Quite a number bank on those Jewish nigger 
masters of the nothing in order to eliminate innocent and good people to 
further their zero sum end game.  Simply say the words Jesus Christ in 
your prayers to escape from such negative influences.

The following republics are the bases of the evil empire of the JUBU:

Taiwan - empire of Zen 
Israel - empire of Jews 
Sicily - empire of LGBTQ 
Haiti - empire of Vudu 
Hawaii - empire of Hindus 
Trinidad - empire of Trini
Indonesia - empire of Creole
Phillipines - empire of Hapa 
Tibet - empire of Hoon
Brooklyn - empire of the Roma

The Transcendentalist mafia are from such areas acenstorally and are 
harbingers of the worst known massacre known to man, called the 
religious war.  This ComuBBS tool is to help people communicate for the 
sake of not only the ontology of Jesus Christ but also to better get 
clues on how to deal with those people of the Dying Arts.  I really want 
to setup this system so that those stinken Jews are not a part of it.  
Their trespass into literally every industry to do stupid and sabotaging 
things is a real danger for all concerned.  Those people of the Dying 
Arts and the Jewish diaspora are like criminals hell bent on suicide and 
sacrifice, to name a few.  With their penchant toward brain degenerating 
ways, we are headed toward a nuclear war and economic collapse the world 
over unlike anything before.  What is the use?

Already the evil empire of the JUBU has perpetuated the destruction of 
the World Trade Center through thier Y2K bug fix pretention.  Already 
the state of Louisiana has been horribly flooded because of yet another 
Jew baiting fetish gone wrong.  Already the coronavirus has been 
unleashed to kill off more people.

I see a trend in history by the Jewish diaspora to literally war with 
anyone for the sake of thier religious war.  A religious war documented 
in religious books, life experiences, and television programming.  It is 
like all over the place.  Open and unmoderated communication for our 
people of Abraham hostaged by those of the evil empire of the JUBU is a 
good means toward liberating us from the ignorance which is not bliss.  
More will arrive to the body of Christ.  Believe you me, those stinken 
Jews have to be defeated.

Already, the Europeans, Russians, Chinese, and now the Arabians have 
politically made it known that Jews are unwanted in their realm.  I as a 
Deshi or ethnic of the Indian subcontinent do the same.  I tell ya, 
travelling to my homeland of the Indian subcontinent or Aryavarta was a 
real shocking reality to see so many of my people in abject life 
conditions due to the Hindu pride and prejudice maintained for over 
5,000 years and then some.  Those gypsy niggers or even to say the 
negroid race are the very reason why Deshi civilization could never come 
up and was the repulsion of the masses.

Now with this wonderful capitalism, we can see a world where anyone and 
everyone is able to use such weapons to ward off the evil ones.  Nothing 
worse than trying to find enlightenment in the wrong way through a one 
way ticket to the foothills of the Himalayas after following some 
Satanic master of the Zen empire of Taiwan.  Ignorance is not bliss and 
ignorance of Jesus Christ is like the worst.  God bless and God speed 
for Jesus Christ is God.  Always a pleasure.  Nothing worse than being 
on a park bench drinking liquor going through an existential doubt in a 
land of "One nation under God".  Believe it.

Sincerely,

Satya P. Popuri (Satyababu)
Signature:
"The nature of the good is to overcome and defeat the bad." - divine 
voice  
----------------------------------------------------------------------------- 
compubbs.sh - file below between horizontal rule 
-----------------------------------------------------------------------------
#!/bin/bash
 
# Ensure we are running under bash
if [ "$BASH_SOURCE" = "" ]; then
    /bin/bash "$0"
    exit 0
fi
 
#
# Load bash-menu script
#
# NOTE: Ensure this is done before using
#       or overriding menu functions/variables.
#
. "bash-menu.sh"
 
 
################################
## Example Menu Actions
##
## They should return 1 to indicate that the menu
## should continue, or return 0 to signify the menu
## should exit.
################################
actionA() {
    alpine
    return 1
}
 
actionB() {
    tin -g news.giganews.com
    return 1
}
 
actionC() {
    irssi
    return 1
}
 
actionD() {
    lynx
    return 1
}
 
actionE() {
    gopher
    return 1
}
 
actionF() {
    nslookup
    return 1
}

actionG() {
    telnet
    return 1
}

actionH() {
    tailer
    return 1
}

actionI() {
    sendpage
    return 1
}

actionJ() {
    calcurse
    return 1
}

actionK() {
    ecn
    return 1
}

actionL() {
    bible
    return 1
}

actionM() {
    tutor
    return 1
}

actionN() {
    tia
    return 1
}

actionO() {
    nano
    return 1
}
 
actionP() {
    bash
    return 1
}
 
actionX() {
    return 0
}
 
 
################################
## Setup Example Menu
################################
 
## Menu Item Text
##
## It makes sense to have "Exit" as the last item,
## as pressing Esc will jump to last item (and
## pressing Esc while on last item will perform the
## associated action).
##
## NOTE: If these are not all the same width
##       the menu highlight will look wonky
menuItems=(
    "0. Alpine  -----------------------  email client"
    "1. Tin  --------------------------  usenet reader"
    "2. Irssi  ------------------------  irc network"  
    "3. Lynx  -------------------------  url browser"
    "4. Gopher  -----------------------  ftp protocol"
    "5. Nslookup  ---------------------  directory service"
    "6. Telnet  -----------------------  remote login"
    "7. Tailer  -----------------------  monitoring tool"
    "8. Sendpage  ---------------------  beeper server"
    "9. Calcurse  ---------------------  calendar app"
    "A. ECN  --------------------------  daytrading game"
    "B. Bible  ------------------------  the deprogram"
    "C. Tutor  ------------------------  unix tutorial"
    "D. T.I.A.  -----------------------  programming IDE"
    "E. Nano  -------------------------  text editor"
    "F. Bash  -------------------------  command prompt"
    "$. Exit  -------------------------  [god] speed...✝"
)
 
## Menu Item Actions
menuActions=(
    actionA
    actionB
    actionC
    actionD
    actionE
    actionF
    actionG
    actionH
    actionI
    actionJ
    actionK
    actionL
    actionM
    actionN
    actionO
    actionP
    actionX
)
 
## Override some menu defaults

menuTitle=" CompuBBS - The nature of the good is to overcome and defeat 
the bad..."
menuFooter=" Enter=Select, Navigate via Up/Down/First number/letter - 
[Prayer works!]"
menuWidth=74
menuLeft=13
menuHighlight=$DRAW_COL_WHITE
 
 
################################
## Run Menu
################################
menuInit
menuLoop
 
 
exit 0 
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
bash-menu.sh - file below between horizontal rule 
-----------------------------------------------------------------------------
#!/bin/bash
 
#
# Public Functions
#
#   menuInit() menuLoop()
#
#
# Public Variables to Override
#
# Should these get passed into menuInit() rather than be set as global 
# script variables?
#
#   menuTop # Top row of menu (defaults to row 2) 
#   menuLeft # Left offset for menu item text (defaults to column 15) 
#   menuWidth # Width of menu (defaults to 42 columns) 
#   menuMargin # Left offset for menu border (defaults to column 4)
#
#   menuColour # Colour of menu text (defaults to DRAW_COL_WHITE) 
#   menuHighlight # Highlight colour for menu (defaults to 
#   DRAW_COL_GREEN)
#
#   menuTitle # Title of menu menuFooter # Footer text of menu
#
#   menuItems # Array containing menu item text 
#   menuActions # Array 
#   containing functions to call upon menu item selection
#
 
 
# Ensure we are running under bash (will not work under sh or dash etc)
if [ "$BASH_SOURCE" = "" ]; then echo "ERROR: bash-menu requires to be 
    running under bash" exit 1
fi
 
# Get script root (as we are sourced from another script, $0 will not be 
# us)
declare -r menuScript=$(readlink -f ${BASH_SOURCE[0]}) 
menuRoot=$(dirname "$menuScript")
 
# Ensure we can access our dependencies
if [ ! -s "$menuRoot/bash-draw.sh" ]; then echo "ERROR: Missing required 
    draw.sh script" exit 1
fi
 
# Load terminal drawing functions
. "$menuRoot/bash-draw.sh"
 
 
################################
# Private Variables
#
# These should not be overridden
################################
declare -a menuItems declare -a menuActions
 
menuHeaderText="" menuFooterText="" menuBorderText=""
 
 
################################
# Setup Menu
#
# These are defaults which should be overridden as required.
################################
 
# Top of menu (row 2)
menuTop=2
 
# Left offset for menu items (not border)
menuLeft=15
 
# Width of menu
menuWidth=42
 
# Left offset for menu border (not menu items)
menuMargin=4
 
menuItems[0]="Exit" menuActions[0]="return 0"
 
menuItemCount=1 menuLastItem=0
 
menuColour=$DRAW_COL_WHITE menuHighlight=$DRAW_COL_GREEN
 
menuTitle=" Super Bash Menu System" menuFooter=" Enter=Select, 
Up/Down=Prev/Next Option"
 
 
################################
# Initialise Menu
################################
menuInit() { menuItemCount=${#menuItems[@]} 
    menuLastItem=$((menuItemCount-1))
 
    # Ensure header and footer are padded appropriately
    menuHeaderText=`printf "%-${menuWidth}s" "$menuTitle"` 
    menuFooterText=`printf "%-${menuWidth}s" "$menuFooter"`
 
    # Menu (side) borders
    local marginSpaces=$((menuMargin-1)) local 
    menuSpaces=$((menuWidth-2)) local leftGap=`printf 
    "%${marginSpaces}s" ""` local midGap=`printf "%${menuSpaces}s" ""` 
    menuBorderText="${leftGap}x${midGap}x"
}
 
 
################################
# Show Menu
################################
menu_Display() { local menuSize=$((menuItemCount+2)) local 
    menuEnd=$((menuSize+menuTop+1))
 
    drawClear drawColour $menuColour $menuHighlight
 
    # Menu header
    drawHighlightAt $menuTop $menuMargin "$menuHeaderText" 1
 
    # Menu (side) borders
    for row in $(seq 1 $menuSize); do drawSpecial "$menuBorderText" 1 
    done
 
    # Menu footer
    drawHighlightAt $menuEnd $menuMargin "$menuFooterText" 1
 
    # Menu items
    for item in $(seq 0 $menuLastItem); do menu_ClearItem $item done
}
 
 
################################
# Mark Menu Items
################################
 
# Ensure menu item is not highlighted
menu_ClearItem() { local item=$1 local top=$((menuTop+item+2)) local 
    menuText=${menuItems[$item]}
 
    drawPlainAt $top $menuLeft "$menuText"
}
 
# Highlight menu item
menu_HighlightItem() { local item=$1 local top=$((menuTop+item+2)) local 
    menuText=${menuItems[$item]}
 
    drawHighlightAt $top $menuLeft "$menuText"
}
 
 
################################
# Wait for and process user input
################################
menu_HandleInput() { local choice=$1
 
    local after=$((choice+1)) [[ $after -gt $menuLastItem ]] && after=0
 
    local before=$((choice-1)) [[ $before -lt 0 ]] && 
    before=$menuLastItem
 
    # Clear highlight from prev/next menu items
    menu_ClearItem $before menu_ClearItem $after
 
    # Highlight current menu item
    menu_HighlightItem $choice
 
    # Get keyboard input
    local key="" local extra=""
 
    read -s -n1 key 2> /dev/null >&2 while read -s -n1 -t .05 extra 2> 
    /dev/null >&2 ; do
        key="$key$extra" done
 
    # Handle known keys
    local escKey=`echo -en "\033"` local upKey=`echo -en "\033[A"` local 
    downKey=`echo -en "\033[B"`
 
    if [[ $key = $upKey ]]; then return $before elif [[ $key = $downKey 
    ]]; then
        return $after elif [[ $key = $escKey ]]; then if [[ $choice -eq 
        $menuLastItem ]]; then
            # Pressing Esc while on last menu item will trigger action 
            # This is a helper as we assume the last menu option is exit
            key="" else
            # Jumping possibly more than 1 (next/prev) item
            menu_ClearItem $choice return $menuLastItem fi elif [[ 
    ${#key} -eq 1 ]]; then
        # See if we wanrt to jump to a menu item by entering the first 
        # character
        for index in $(seq 0 $menuLastItem) ; do local 
            item=${menuItems[$index]} local startChar=${item:0:1} if [[ 
            "$key" = "$startChar" ]]; then
                # Jumping possibly more than 1 (next/prev) item
                menu_ClearItem $choice return $index fi done fi
 
    if [[ "$key" = "" ]]; then
        # Notify that Enter key was pressed
        return 255 fi
 
    return $choice
}
 
 
################################
# Main Menu Loop
################################
menuLoop() { local choice=0 local running=1
 
    menu_Display
 
    while [[ $running -eq 1 ]]; do
        # Enable case insensitive matching
        local caseMatch=`shopt -p nocasematch` shopt -s nocasematch
 
        menu_HandleInput $choice local newChoice=$?
 
        # Revert to previous case matching
        $caseMatch
 
        if [[ $newChoice -eq 255 ]]; then
            # Enter pressed - run menu action
            drawClear action=${menuActions[$choice]} $action running=$?
 
            # Back from action If we are still running, redraw menu
            [[ $running -eq 1 ]] && menu_Display
 
        elif [[ $newChoice -lt $menuItemCount ]]; then
            # Update selected menu item
            choice=$newChoice fi done
 
    # Cleanup screen
    drawClear
}
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
bash-draw.sh - file below between horizontal rule 
-----------------------------------------------------------------------------
#!/bin/bash
 
#
# Public Functions:
#
#   drawClear() drawColour(colour = DRAW_COL_DEF, bgColour = 
#   DRAW_COL_DEF)
#
#   drawPlain(text, newLine = 0) drawSpecial(text, newLine = 0) 
#   drawHighlight(text, newLine = 0) drawPlainAt(left, top, text, 
#   newLine = 0) drawHighlightAt(left, top, text, newLine = 0)
#
#
# Colours
#
#   DRAW_COL_DEF # Default colour DRAW_COL_BLACK DRAW_COL_WHITE 
#   DRAW_COL_RED DRAW_COL_GREEN DRAW_COL_YELLOW DRAW_COL_BLUE 
#   DRAW_COL_GRAY # Light gray (grey?)
#
 
 
# Ensure we are running under bash (will not work under sh or dash etc)
if [ "$BASH_SOURCE" = "" ]; then echo "ERROR: bash-draw requires to be 
    running under bash" exit 1
fi
 
 
DRAW_COL_DEF=39 DRAW_COL_BLACK=30 DRAW_COL_WHITE=97 DRAW_COL_RED=31 
DRAW_COL_GREEN=32 DRAW_COL_YELLOW=33 DRAW_COL_BLUE=34 DRAW_COL_GRAY=37
 
 
# drawClear()
drawClear() { $ESC_WRITE "\033c"
}
 
# drawColour(colour = DRAW_COL_DEF, bgColour = DRAW_COL_DEF)
drawColour() { local colour=$DRAW_COL_DEF local 
    bgColour=$((DRAW_COL_DEF+10))
 
    if [[ ! -z "$1" && "$1" != "" ]]; then colour="$1" fi
 
    if [[ ! -z "$2" && "$2" != "" ]]; then bgColour="$2" fi
 
    $ESC_ECHO "\033c\033[H\033[J\033[${colour};${bgColour}m\033[J"
}
 
# drawPlain(text, newLine = 0)
drawPlain() { if [[ -z "$2" || "$2" -eq 0 ]]; then $ESC_WRITE "$1" else 
        $ESC_ECHO "$1"
    fi
}
 
# drawSpecial(text, newLine = 0)
drawSpecial() { [[ -z "$2" ]] && newLine=0 || newLine="$2"
 
    draw_SetDrawMode drawPlain "$1" "$newLine" draw_SetWriteMode
}
 
# drawHighlight(text, newLine = 0)
drawHighlight() { [[ -z "$2" ]] && newLine=0 || newLine="$2"
 
    draw_StartHighlight drawPlain "$1" "$newLine" draw_EndHighlight
}
 
# drawPlainAt(left, top, text, newLine = 0)
drawPlainAt() { [[ -z "$4" ]] && newLine=0 || newLine="$4"
 
    draw_MoveTo $1 $2 drawPlain "$3" "$newLine"
}
 
# drawHighlightAt(left, top, text, newLine = 0)
drawHighlightAt() { [[ -z "$4" ]] && newLine=0 || newLine="$4"
 
    draw_StartHighlight drawPlainAt "$1" "$2" "$3" "$newLine" 
    draw_EndHighlight
}
 
 
# Write escape sequence with no newline
ESC_WRITE='echo -en'
 
# Write escape sequence adding newline
ESC_ECHO='echo -e'
 
 
# Move cursor to specified location
draw_MoveTo() { $ESC_WRITE "\033[${1};${2}H"
}
 
draw_StartHighlight() { $ESC_WRITE "\033[7m"
}
 
draw_EndHighlight() { $ESC_WRITE "\033[27m"
}
 
draw_SetDrawMode() { $ESC_WRITE "\033%@\033(0"
}
 
draw_SetWriteMode() { $ESC_WRITE "\033(B"
}
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
----------------------------------------------------------------------------- 
CompuBBS - ECN code 
----------------------------------------------------------------------------- 
Please find below the CompuBBS ECN code originally developed by Josh 
Greene.  It is something a former friend of mine once told me about as 
he worked at Daytek during the dawn of the internet.  At the time I was 
to oblivous to the fact that money is the very means by which our lives 
revolve around.  As they say, "when men and women get together [money] 
gets in the way".  The Josh Greene's ECN day trading code is intended as 
a game for now until it becomes more viable for the purposes of the 
Cybermatrix.

The below ECN day trading code is in Python.  So check it out.  Try to 
make it into a game at first so that you and your network can learn how 
to play it before proceeding.  I heard when it comes to the stock market 
one can literally loose their shirt on this.  So beware.  Ignorance is 
not bliss.

The intention for this code is toward the establishment of the 
cybermatrix or to say the opern source fiat like monies initiative for 
the sake of synergy or mutual success.  The meaning of cybermartix is 
virtual as in cyber and a database of the nth dimension as in matrix.  
So the cybermatrix is a network of databases of a given 
dimension(matricees) with a larger databases of the nth 
dimension(matrix).  So, let's do this.

God bless and God speed for Jesus Christ is God.  Always a pleasure.  
Good luck to you all.  I want you to win.  Allahu Akhbar! 
----------------------------------------------------------------------------- 
Josh Greene's Island ECN day trading code in Python between horizontal 
rule 
----------------------------------------------------------------------------- 
SET TALK OFF SET CURSOR OFF SET SAFETY OFF SET MEMOWIDTH TO 80 CLEAR ALL 
CLOSE ALL CLEAR CLEAR MACRO && Get rid of F keys typing commands SET 
HELP OFF && Needed to clear out F1 key too

=rand(-1)

#define COREDEST "FFFFFFFF0673"

gstoredflag = .F.  && Are there any messages buffered that could be 
flushed?

#define VERSION "2.40"

malertfile = "M:\logs\island2.err" mholdofffile = 
"M:\island2\holdoff.txt"

blanknbuffer="R"+replicate( " " , 200 ) && get BRIGADEN message here

#define CORELINELEN 124 define COREMESSAGELEN 122

#define READPORT "067F"

load int99

define window title from 0,0 to 0,scols()-1 COLOR "W/B" NONE define 
window output from 1,0 to 10,scols()-1 NONE COLOR "W+/N" define window 
ticker from 12,0 to srows()-1,scols()-1 NONE define window status from 
11,0 to 11,scols()-1 COLOR "W+/R" NONE

do title do initstatus

activate window title activate window status

activate window output activate window ticker


s = fopen( "ISLAND2.TXT" )

if s <= 0 wait window "COULD NOT FIND ISLAND2.TXT IN CURRENT DIR. RUN 
        RESET." quit
endif

x = fgets( s )

if "ISLAND2" # x wait window "ACCOUNT IN ISLAND2.TXT DOES NOT MATCH 
        ACCOUNT ENV VAR. RUN RESET." =fclose( s ) quit
endif

tcount = 0 && For counting random stuff

tseq = val( fgets( s ) ) && Next order number tmatch = val( fgets( s ) ) 
&& Next match number tnextdead = val( fgets( s ) ) && Next dead order 
(zero=none) =fclose( s )

select select(1) use events set order to WHEN

tnow = 0

ttoolate = 0 && Count the too late to cancel events

gaccept = .F.  && Let any orders in? Set by SOD, cleared by EOD 
gactaccept = .F.  && Let ACT orders in? Set by SOD, cleared by EOA

geom = .F.  && Have we gotten EOM yet?

gprinting = .F.  && Print incoming messages?

go top

if eof("EVENTS")

        tnext = 99999.999
        
else

        tnext = WHEN && Time of next event
        
endif

select 0 use sources set order to SOURCE

select select(1) use island

gsx = alltrim( str( date() - {2/6/1996} ) )

gsession = left( "0000000000" , 9-len( gsx ) ) + gsx + "F"

s="N"+gsession+"5050" && Open the islandfile for writing Mold on port 
5050 call int99 with s

if s # "n" && Valid open file?

        do alert with "InitMold filed with reason >"+s
        
        do case
        
                case s = "i"
                
                        sm ="Error opening files in deney-write mode"
                        
                case s = "j"
                
                        sm = "a file had a partial line fragment"
                        
                case s = "k"
                
                        sm = "not all trailing files are empty"
                        
                case s = "l"
                
                        sm = "all files full"
                
                otherwise
                
                        sm = "Unknown error"

        endcase
        
        do alert with sm
        
        wait window "Error on ISLAND.OUT or ISLAND2.OUT OPEN:"+s
        
        quit
                
endif

select island

tecount = 0 && Assume worst case, just to make sure ecount is high 
enough txcount = 0 && Cancels

x = "L"+READPORT+" " && Read Island2 requests call int99 with x if x # 
"l"
        do alert with "Could not open Command listen!" endif


gstatdelay = 0.25 do showstatus gnextstats = seconds() + gstatdelay

gmolddelay = 1 && Time between mold heartbeats gmoldheart = seconds() + 
gmolddelay && Time to send a MOLD heartbeat by doing a FLUSH

gmessages = 0 && Number of messages written to the stream gpackets = 0 
&& Number of packets writtento the stream

mdone = .F.

do while !mdone

        tnow = seconds()
        
        do while tnow >= tnext
                
                if !EVENTS.PROCESSED
                
                        do swrite with "G" , EVENTS.CODE
                        
                        select EVENTS replace PROCESSED with .T. select 
                        ISLAND
                        
                else
                
                        ? time()+" Event bypassed:"+ EVENTS.CODE
                
                endif
                
                do seteventflags with EVENTS.CODE
                
                skip 1 in EVENTS
                
                if eof("EVENTS")
                
                        tnext = 99999.999
                        
                else
                
                        tnext = EVENTS.WHEN
                
                endif
                
        enddo
                
        nbuffer = blanknbuffer
        
        call int99 with nbuffer
        
        if nbuffer = "r"

                tlenstr = substr( nbuffer , 2 , 5 )
                                                                
                tlen = val( tlenstr )
                                        
                tmessage = substr( nbuffer , 43 , tlen )
                                
                if gprinting ? time()+" >"+tmessage+"<" endif
                                                                
                if tmessage = "P" && PING REQUEST
                                
                        tsource = substr( nbuffer ,11 , 8)
                                        
                        do pingreply with tsource , tmessage
                                        
                else
                
                        do processtcpip with tmessage
                                
                endif

        else && No pending commands...
                                
                if gstoredflag
                
                        do flush
                
                        gstoredflag = .F.
                        
                        gmoldheart = seconds() + gmolddelay
                        
                        gpackets = gpackets + 1
                                                
                else
                
                        if gmoldheart < seconds()
                        
                                do flush
                                
                                gmoldheart = seconds() + gmolddelay
                                
                        endif
                        
                endif
        
        endif
        
        if gnextstats <= seconds()
        
                do showstatus gnextstats = seconds() + gstatdelay
        
        endif
        
        lastkey=inkey()
        
        if lastkey # 0
        
                activate window output
        
                do case case lastkey = asc("~") ? time()+" Quitting..." 
                                mdone = .T.
                        
                        case lastkey = asc("@") ? time()+" Copying to 
                                island2.dbf" set order to copy to 
                                m:\island2\island2 ?? "Done"
                        
                        case lastkey = asc("#") ? time()+" 
                                Suspending..." suspend
                        
                        case lastkey = asc("!")
                        
                                ? time()+" 
                                ACCEPT="+iif(gaccept,"T","F")+" ACT="+ 
                                iif(gactaccept,"T","F") + " 
                                EOM="+iif(geom,"T","F")+" 
                                NEXT="+str(tnext,9,3)+ " 
                                TOO-LATE="+str(ttoolate,6,0)+" 
                                COUNT="+str(tcount,9,0)

                                s = "T"+space(60) call int99 with s
                        
                                if s = "t"
                                
                                        tbuffered = val( substr(s,26,5) 
                                        )
                                                
                                        ? "MOLD INFO: 
                                        SESSION="+substr(s,2,10)+" 
                                        SEQ="+substr(s,12,10)+" 
                                        SOCKET="+substr(s,22,4)+" 
                                        BUFFERED="+str(tbuffered,5,0)
                                
                                else
                        
                                        ? "Could not get mold info!"
                                        
                                        tbuffered = 0
                                
                                endif

                                
                                if gpackets > 0
                                
                                        ? 
                                  "MESSAGES:"+str(gmessages-tbuffered,
12,0)+" 
                                        PACKETS:"+str(gpackets,12,0)+" 
                                        ("+str( (gmessages-tbuffered)/ 
                                        gpackets , 5 , 3 )+")"

                                        gmessages = tbuffered gpackets 
                                        =0
                                        
                                endif
                                                        
                        case lastkey = asc("%") ? time()+" Shutdown 
                                attempt..." do shutdown
                                
                        case lastkey = asc("(") ? time()+" toggled 
                                gaccept" gaccept = !gaccept
                        
                        case lastkey = asc("?") ? "@-Copy to island2.DBF 
                                ~-Quit !-Status #-Suspend %-ShutDown 
                                $-Print incoming"
                                
                        case lastkey = asc("$")
                        
                                if gprinting
                                
                                        ? time()+" Printing off" 
                                        gprinting = .F.
                                else
                                
                                        ? time()+" Printing on" 
                                        gprinting = .T.
                                
                                endif
                                
                                        
                endcase
                
                activate window ticker
                        
        endif
                
enddo && Main Loop

activate window output

&& Final flush to mak sure everything is sent

do flush

&& Close file

s = "C" call int99 with s

x = "H"+READPORT call int99 with x if x # "h" do alert with "Could not 
        close PingPort!"
endif

use && Unuse Island

&& Create fresh waypoint file

f = fcreate("ISLAND2.TXT")

if f<=0 ? "Could not create ISLAND.TXT!" suspend endif

=fputs( f , "ISLAND2" ) && ROLE

=fputs( f , str( tseq , 9 , 0 ) ) && Order number =fputs( f , str( 
tmatch , 9 , 0 ) ) && Match number =fputs( f , str( tnextdead , 9 , 0 ) 
) && Next dead order pointer =fclose(f)
        
quit


procedure title activate window title SAME clear @ 0,0 SAY " Island2 ú 
        Version "+VERSION+" (c)1996 Joshua Levine ú Press [?] for help" 
        activate window ticker SAME
return

proc werror param wcode
        
        do case
        
                case wcode = "w"
                
                        return "Error on file write"
                        
                case wcode = "s"
                
                        return "Error on nework send"
                        
                case wcode = "c"
                
                        return "Invalid message length"
                        
                case wcode = "d"
                
                        return "all files full"
                                                
        endcase
        
return "Unknown error"




**** write actualy writes a string the the file, steam, and screen

proc write parameter wstring
                
        wl = len( wstring )
        
        ws="W"+chr(wl)+wstring

         call int99 with ws
         
         gmessages = gmessages + 1
         
        if ws = 'b'
        
                gstoredflag = .T.
                
        else
        
                if ws = "f"
                
                        gpackets = gpackets + 1
                        
                        gstoredflag = .F.
                                                
                else
                
                        activate window output
        
                        ? time() +" !!!! ERROR ON WRITE!!!!!!"

                        ? ws
                        
                        do alert with "Erorr on write:"+werror(ws)
                        
                        activate window ticker
                                
                        suspend
                        
                endif
                
        endif
        
return



*** Write a message

**** ACTIONS: **** A - Accept the order was accepted into Island **** B 
- Booked this order hit the book **** E - Execute the order was executed 
for this many shares at this price **** X - Cancel this many shares were 
canceled **** C - Break this order was executed, now broken **** G - 
Control stock is the control type **** R - Report trade done away but 
will report/clear through Island

**** ON Cancel CONTRA = Reason for cancel


***** MINDICATE = on accept always "D" (legacy) ***** on execute "A"= 
added liquidity, "R"=Removed liquidity ***** on report "Y" trade report, 
"N" don't report, "S" step-out

****** mmatch = on accept or book is MINIMUM shares, in execution is 
match number ****** not defined on cancels, but 0 for now

proc mwrite

        parameter 
        maction,mseq,mshares,mprice,mcontra,mindicate,mmatch,mlocate
        
        mwhen = str( tnow , 9 , 3)
        
        w = left( mwhen , 5 ) + "," 
+maction+","+str(mseq,9,0)+","+PORT+","+USER+","+TOKEN+","+BUY_SELL+","
+str(mshares,9,0)+","+str(mmatch,9,0)+","+STOCK+","+str(mprice,11,4)+"," 
        +str(mlocate,8,0)+ ", 
0,"+SHORT+","+MMID+","+PA+","+mcontra+","+mindicate+","+DISPLAY+","
+right(mwhen,3)+","+CLEARING+",D"

        do write with w
        
return

****** Swrite writes a status message that doesnot concern an order, 
Like G-Good morning

proc swrite

        param maction , mcode
        
        mwhen = str( tnow , 9 , 3)
                        
        xcode = left( padr( mcode , 3) , 3 )
        
        w = left( mwhen , 5 ) +","+maction+","+" 0"+", , , , , 0, 
        0,*"+xcode+" , 0.0000,00000000, 0, , , , , , ,"+right( mwhen , 3 
        )+", , "

        do write with w
                 
return

****** Enter order adds the audit, tries for a match, and if it don't 
work, books it. ****** Enter order assumes ostock and obuy_sell are the 
right length. ****** Also assumes that buy_sell has aready been checked 
to be B or S. ****** Also assumes that the token is no already used

proc enter2order

        parameter 
        
oport,ouser,otoken,obuy_sell,oshares,ostock,oprice,otif,oshort,ommid,
opa,odisplay,omin,oclearing,oflags
        
        
        if odisplay = "P"
        
                obasefirm = ouser
                
        else
        
                obasefirm = "####"
                
        endif
        
        && Get the working record
        
        if tnextdead > 0
        
                tlocate = tnextdead goto tnextdead tnextdead = SEQ
                
        else
        
                insert into ISLAND (LEAVES) values (0) && Keep it out of 
                the indexes for now tlocate = recno()
                
        endif
                                        
        tseq = tseq + 1
                                                                                
        awhen = str( tnow , 9 , 3)
        
        oleaves = oshares
        
        ofilled = 0
                
        aflag = .f.  && have we written the "A" message yet?
                
        if obuy_sell = "B" && Buy order...
                                                
                set order to SSEEK
                
                do case
                                                                                
                        case omin > 1 && Minimum quantity specified?
                        
                                *** if the min is bigger than the size, 
                                set it to the size
                
                                if omin > oshares
                                
                                        mmin = oshares
                                        
                                else
        
                                        mmin = omin
                                        
                                endif
                                
                                *** First prescan to see if we have 
                                enough size to fill it
                                                        
                                if seek( ostock )
                                                                        
                                        scan while mmin > 0 .and. ostock 
                                        = STOCK .and. BUY_SELL = "S" 
                                        .and. oprice >= PRICE
                                
                                                mmin = mmin - LEAVES
                                
                                        endscan
                                
                                endif
                                
                                if mmin <= 0
                                
                                        *** There were at least enough 
                                        to fill the minimum quantity
                                
                                        mmax = oshares
                                        
                                else
                                
                                        *** Not enough to fill the min, 
                                        so fill none
                                
                                        mmax = 0
                                        
                                endif
                                
                        case odisplay = "R" .or. odisplay = "P" && Is 
                        this a round-lot only order?
                        
                                mmax = 0

                                *** Prescan to find the number of a 
                                shares available
                                                        
                                if seek( ostock )
                                                                        
                                        scan while mmax <= oshares .and. 
                                        ostock = STOCK .and. BUY_SELL = 
                                        "S" .and. oprice >= PRICE .and. 
                                        obasefirm # MMID
                                
                                                mmax = mmax + LEAVES
                                
                                        endscan
                                
                                endif
                                
                                if mmax >= oshares
                                
                                        *** Max out with the number of 
                                        shares specified
                                                                        
                                        mmax = oshares
                                        
                                endif
                                
                                *** Round down to nearest round lot 
                                wihtout using floating point
                                
                                mmax = val( substr( str( mmax , 6, 0 ) , 
                                1 ,4 ) + "00" )
                                        
                                
                        otherwise
                                
                                mmax = oshares
                                
                endcase
                        
                do while mmax > 0 .and. seek( ostock ) .and. oprice >= 
                PRICE
                
                        if !aflag

                                w = left( awhen , 5 ) +",A," 
                                +str(tseq,9,0) +"," +oport+"," +ouser 
                                +"," +otoken +"," +obuy_sell +", " 
                                +str(oshares,6,0) +", " +str(omin,6,0) 
                                +"," +ostock +"," +str(oprice,11,4) +"," 
                                +str(tlocate,8,0) +"," +str(otif,5,0) 
                                +"," +oshort +"," +ommid +"," 
                                +opa+","+oflags+", ," +odisplay +"," 
                                +right(awhen,3) +"," +oclearing+",D"

                                do write with w
                                
                                aflag = .T.
                                                                
                        endif
                        
                        tecount = tecount + 1
                        
                        eshares = min( LEAVES , mmax )
                                
                        oleaves = oleaves - eshares
                        
                        mmax = mmax - eshares
                                
                        ofilled = ofilled + eshares
                                                                                                                                
                        tmatch = tmatch + 1
                        
                        w = left( awhen , 5 ) +",E," +str( SEQ ,9,0) 
                        +"," +PORT +"," +USER +"," +TOKEN +"," +BUY_SELL 
                        +", " +str(eshares,6,0) +"," +str(tmatch,9,0) 
                        +"," +ostock +"," +str(PRICE,11,4) +"," +str( 
                        recno() ,8,0)+ ", 0," +SHORT +"," +MMID +"," 
                        +PA+"," +ommid+",A," +DISPLAY +"," 
                        +right(awhen,3) +"," +CLEARING+",D"

                        do write with w

                        w = left( awhen , 5 ) +",E," +str(tseq,9,0) +"," 
                        +oport+"," +ouser +"," +otoken +"," +obuy_sell 
                        +", " +str(eshares,6,0) +"," +str(tmatch,9,0) 
                        +"," +ostock +"," +str(PRICE,11,4) +"," 
                        +str(tlocate,8,0)+", 0," +oshort +"," +ommid 
                        +"," +opa+","+MMID+",R," +odisplay +"," 
                        +right(awhen,3) +"," +oclearing+",D"

                        do write with w


                        dleaves = LEAVES - eshares
                        
                        if dleaves <= 0 && Dead record?
                        
                                replace LEAVES with 0 , SEQ with 
                                tnextdead tnextdead = recno()
                                
                        else

                                replace LEAVES with dleaves , FILLED 
                                with FILLED + eshares
                                
                        endif
                                                                        
                enddo
                                                                        
        else && sell order..
                        
                set order to BSEEK
                        
                do case
                                                                                
                        case omin > 1 && Minimum quantity specified?
                        
                                *** if the min is bigger than the size, 
                                set it to the size
                
                                if omin > oshares
                                
                                        mmin = oshares
                                        
                                else
        
                                        mmin = omin
                                        
                                endif
                                
                                *** First prescan to see if we have 
                                enough size to fill it
                                                        
                                if seek( ostock )
                                                                        
                                        scan while mmin > 0 .and. ostock 
                                        = STOCK .and. BUY_SELL = "B" 
                                        .and. oprice <= PRICE
                                
                                                mmin = mmin - LEAVES
                                
                                        endscan
                                
                                endif
                                
                                if mmin <= 0
                                
                                        mmax = oshares
                                        
                                else
                                
                                        mmax = 0
                                        
                                endif
                                
                        case odisplay = "R" .or. odisplay = "P" && Is 
                        this a round-lot only order?
                        
                                mmax = 0

                                *** Prescan to find the number of a 
                                shares available
                                                        
                                if seek( ostock )
                                                                        
                                        scan while mmax <= oshares .and. 
                                        ostock = STOCK .and. BUY_SELL = 
                                        "B" .and. oprice <= PRICE .and. 
                                        obasefirm # MMID
                                
                                                mmax = mmax + LEAVES
                                
                                        endscan
                                
                                endif
                                
                                if mmax >= oshares
                                
                                        mmax = oshares
                                        
                                endif
                                
                                *** Round down to nearest round lot 
                                wihtout using floating point
                                
                                mmax = val( substr( str( mmax , 6, 0 ) , 
                                1 ,4 ) + "00" )
                                        
                                
                        otherwise
                                
                                mmax = oshares
                                
                endcase

                do while mmax > 0 .and. seek( ostock ) .and. oprice <= 
                PRICE
                        
                        if !aflag

                                w = left( awhen , 5 ) +",A," 
                                +str(tseq,9,0) +"," +oport+"," +ouser 
                                +"," +otoken +"," +obuy_sell +", " 
                                +str(oshares,6,0) +", " +str(omin,6,0) 
                                +"," +ostock +"," +str(oprice,11,4) +"," 
                                +str(tlocate,8,0) +","+str(otif,5,0) 
                                +"," +oshort +"," +ommid +"," 
                                +opa+","+oflags+", ," +odisplay +"," 
                                +right(awhen,3) +"," +oclearing+",D"

                                do write with w
                                
                                aflag = .T.
                                                                        
                        endif
                        
                        tecount = tecount + 1
                        
                        eshares = min( LEAVES , mmax )
                                
                        oleaves = oleaves - eshares
                        
                        mmax = mmax - eshares
                                
                        ofilled = ofilled + eshares
                                                                                                        
                        tmatch = tmatch + 1
                                                                
                        w = left( awhen , 5 ) +",E," +str( SEQ ,9,0) 
                        +"," +PORT +"," +USER +"," +TOKEN +"," +BUY_SELL 
                        +", " +str(eshares,6,0) +"," +str(tmatch,9,0) 
                        +"," +ostock +"," +str(PRICE,11,4) +"," +str( 
                        recno() ,8,0) +", 0," +SHORT +"," +MMID +"," 
                        +PA+"," +ommid+",A," +DISPLAY +"," 
                        +right(awhen,3) +"," +CLEARING+",D"

                        do write with w

                        w = left( awhen , 5 ) +",E," +str(tseq,9,0) +"," 
                        +oport+"," +ouser +"," +otoken +"," +obuy_sell 
                        +", " +str(eshares,6,0) +"," +str(tmatch,9,0) 
                        +"," +ostock +"," +str(PRICE,11,4) +"," 
                        +str(tlocate,8,0) +", 0," +oshort +"," +ommid 
                        +"," +opa+","+MMID+",R," +odisplay +"," 
                        +right(awhen,3) +"," +oclearing+",D"

                        do write with w

                        dleaves = LEAVES - eshares
                        
                        if dleaves <= 0 && Dead record?
                        
                                replace LEAVES with 0 , SEQ with 
                                tnextdead tnextdead = recno()
                                
                        else

                                replace LEAVES with dleaves , FILLED 
                                with FILLED + eshares
                                
                        endif
                                                                                        
                enddo
                                                                                                                        
        endif
                
        if oleaves > 0 && any non-executed shares left?
        
                if otif = 0 && Fill or kill, so cancel leaves

                        if !aflag && did we not make an A message yet?
                        
                                w = left( awhen , 5 ) +",A," 
                                +str(tseq,9,0) +"," +oport+"," +ouser 
                                +"," +otoken +"," +obuy_sell +", " 
                                +str(oshares,6,0) +", " +str(omin,6,0) 
                                +"," +ostock +"," +str(oprice,11,4) +"," 
                                +str(tlocate,8,0)+ "," +str(otif,5,0) 
                                +"," +oshort +"," +ommid +"," 
                                +opa+","+oflags+", ," +odisplay +"," 
                                +right(awhen,3) +"," +oclearing+",D" do 
                                write with w
                                
                        endif
                
                        w = left( awhen , 5 ) +",X," +str(tseq,9,0) +"," 
                        +oport+"," +ouser +"," +otoken +"," +obuy_sell 
                        +", " +str(oleaves,6,0) +", 0," +ostock +"," 
                        +str(oprice,11,4) +"," +str(tlocate,8,0)+ ", 0," 
                        +oshort +"," +ommid +"," +opa+",#IOC, ," 
                        +odisplay +"," +right(awhen,3) +"," 
                        +oclearing+",D" do write with w
                        
                        oleaves = 0
                                                                        
                else
                
                        if !aflag && did we not make an A message yet?
                                                
                                w = left( awhen , 5 ) +",A," 
                                +str(tseq,9,0) +"," +oport+"," +ouser 
                                +"," +otoken +"," +obuy_sell +", " 
                                +str(oshares,6,0) +", " +str(omin,6,0) 
                                +"," +ostock +"," +str(oprice,11,4) +"," 
                                +str(tlocate,8,0) +"," +str(otif,5,0) 
                                +"," +oshort +"," +ommid +"," 
                                +opa+","+oflags+",B," +odisplay +"," 
                                +right(awhen,3) +"," +oclearing+",D"
                                                                                                        
                        else

                                w = left( awhen , 5 ) +",B," 
                                +str(tseq,9,0) +"," +oport+"," +ouser 
                                +"," +otoken +"," +obuy_sell +", " 
                                +str(oleaves,6,0) +", 0," +ostock +"," 
                                +str(oprice,11,4) +"," +str(tlocate,8,0) 
                                +"," +str(otif,5,0) +"," +oshort +"," 
                                +ommid +"," +opa+", , ," +odisplay +"," 
                                +right(awhen,3) +"," +oclearing+",D"
                                
                        endif

                        do write with w
                        
                endif && otif == 0
                
        endif && oleaves > 0
                
        if oleaves > 0 && Still open?
        
                goto tlocate
                                                
                replace ; PORT with oport,; USER with ouser,; TOKEN with 
                        otoken,; BUY_SELL with obuy_sell,; LEAVES with 
                        oleaves,; STOCK with ostock,; PRICE with 
                        oprice,; SHORT with oshort,; MMID with ommid,; 
                        PA with opa,; DISPLAY with odisplay,; CLEARING 
                        with oclearing,; FILLED with ofilled,; SEQ with 
                        tseq
                                        
        else && leaves = 0 (add current order to deadlist)
        
                goto tlocate replace SEQ with tnextdead tnextdead = 
                recno()
        
        endif && oleaves > 0
                        
return

****** Enter Report adds a type R line to the file ****** Enter order 
assumes ostock and obuy_sell are the right length.

proc enter2report

        parameter 
        
oport,ouser,otoken,obuy_sell,oshares,ostock,oprice,oshort,ommid,opa,oreport,oclearing,ocontra
                
        tseq = tseq + 1
                                                  
        tmatch = tmatch + 1

        mwhen = str( tnow , 9 , 3)
        
        w = left( mwhen , 5 ) + ",R,"+str(tseq,9,0) +"," +oPORT+"," 
        +oUSER+"," +oTOKEN+"," +oBUY_SELL +", 
        "+str(oshares,6,0)+","+str(tmatch,9,0)+"," 
        +oSTOCK+","+str(oprice,11,4)+",00000000, 
        
0,"+oSHORT+","+oMMID+","+oPA+","+ocontra+","+oreport+",R,"+right(mwhen,
3)+","+oCLEARING+",D"

        do write with w
        
return


****** Enter Reject adds a type J line to the file

proc enter2reject

        parameter oport,ouser,otoken,otype,oreason
                        
        tseq = tseq + 1
                                                  
        *** Leaves MUST be 0 or it might be included in the match!
                                                                                 
        mwhen = str( tnow , 9 , 3)
        
        w = left( mwhen , 5 ) + ",J," +str(tseq,9,0) +"," +oport+"," 
        +ouser +"," +otoken+"," +otype+", 0, 0, , 0.0000,00000000, 0, , 
        , , ," +oreason +",N,"+right(mwhen,3)+", ,D"

        do write with w
        
return


****** Enter break adds a type C line to the file

proc enterbreak

        parameter oseq, oport , ouser, otoken, obuy_sell, oshares, 
        omatch, ostock, oprice, ommid, oreason, omisc, oclearing , 
        oshort
        
        if oseq > tseq .or. oseq < 1
        
                ? time()+" Bad SEQ in Break! OSEQ="+str(oseq,9,0)+" 
                RECS="+str( tseq, 9,0)
                
                return
        
        endif
        
        if oshares <= 0

                ? time()+" Jerk boy BREAK zero shares 
                SEQ="+str(oseq,9,0)
                
                return
                
        endif

        if oprice <= 0
        
                ? time()+" Jerk boy BREAK zero price SEQ="+str(oseq,9,0)
                
                return
                
        endif
        
        if ! omisc $ "AR"
        
                ? time()+" Invalid A/R BREAK MISC="+omisc+" 
                SEQ="+str(oseq,9,0)
                
                return
                
        endif
                
        mwhen = str( tnow , 9 , 3)
        
        w = left( mwhen , 5 ) + ",C,"+str(oseq,9,0) +"," +oPORT+"," 
        +oUSER+"," +oTOKEN+"," +oBUY_SELL +", 
        "+str(oshares,6,0)+","+str(omatch,9,0)+"," 
        +oSTOCK+","+str(oprice,11,4)+",00000000, 0,"+oshort+","+oMMID+", 
        ,"+oreason +","+omisc+", ,"+right(mwhen,3)+","+oCLEARING+",D"

        do write with w
        
return


****** Enter maint adds a type M line to the file


*** SHORTTYPE ***** N - No short sale checks ***** B - Bidtick test 
***** L - Lasttrade test

*** BLOCKSUB - Block subscriber only orders? ***** B - Block ***** N - 
No block

*** CENTER ***** Q - NASDAQ ***** L - LISTED

proc entermaint

        parameter 
        oport,ouser,otoken,ostock,oshorttype,oblocksub,ocenter,omisc
        
        if ! oshorttype $ "NBL"
                
                ? time()+" Bad SHORTTYPE="+oshorttype+" STOCK="+ostock
                        
                return
                        
        endif
        
        if !oblocksub $ "BN" ? time()+" Bad BLOCKSUB="+oblocksub+" 
                STOCK="+ostock
                        
                return endif
        
        if !ocenter $ "QL" ? time()+" Bad CENTER="+ocenter+" 
                STOCK="+ostock
                        
                return endif
        
        if len( omisc ) # 4 ? time()+" Bad omisc len!"+omisc return 
        endif
        
        for eml = 1 to 4
        
                emb = substr( omisc , eml , 1 )
        
                if !isalpha( emb ) .and. emb # " "
                
                        ? time()+" Bad omisc letter!"+omisc return
                        
                endif
                
        endfor
        
        awhen = str( tnow , 9 , 3 )

        w = left( awhen , 5 ) +",M, 0,"+oport+","+ouser+","+otoken+",S, 
        0, 0," +ostock +", 0.0000,00000000, 0,"+oshorttype+", , 
        ,"+omisc+","+ocenter+","+oblocksub+"," +right(awhen,3) +", , "

        do write with w
        
return

*** STATE - Trading state ***** T - Trading ***** H - Halted

proc enterstate

        parameter oport,ouser,otoken,ostock,ostate
        
        if !ostate $ "TH" ? time()+" Bad STATE="+ostate+" STOCK="+ostock
                        
                return endif
        
        awhen = str( tnow , 9 , 3 )

        w = left( awhen , 5 ) +",M, 0,"+oport+","+ouser+","+otoken+",T, 
        0, 0," +ostock +", 0.0000,00000000, 0, , , , ,"+ostate+", ," 
        +right(awhen,3) +", , "

        do write with w
        
return

*** Enter account configures an OUCH account

proc enteraccount

        parameter oaccount,opassword,otest,otrusted, othresh, 
        osscheck,oiflag, odefault
        
        if !otest$"TN"
        
                ? time()+" Bad TEST flag in enteraccount:"+otest return
                
        endif
        
        if !otrusted$"TN"
        
                ? time()+" Bad TRUSTED flag in enteraccount:"+otrusted 
                return
                
        endif
        
        if !osscheck$"YN"
        
                ? time()+" Bad SSCHECK flag in enteraccount:"+osscheck 
                return
                
        endif

        if !oiflag$"IN"
        
                ? time()+" Bad IFLAG flag in enteraccount:"+oiflag 
                return
                
        endif
                
        if len( opassword ) # 10 ? time()+" Bad opassword 
                len!"+opassword return
        endif
        
        for eml = 1 to 10
        
                emb = substr( opassword , eml , 1 )
        
                if !isalpha( emb ) .and. !isdigit( emb) .and. emb # " " 
                .and. emb # "!" .and. emb # "#"
                
                        ? time()+" Bad opassword 
                        letter!"+opassword+":"+str(eml) return
                        
                endif
                
        endfor


        if len( oaccount ) # 6 ? time()+" Bad oaccount len!"+oaccount 
                return
        endif
        
        for eml = 1 to 6
        
                emb = substr( oaccount , eml , 1 )
        
                if !isalpha( emb ) .and. !isdigit( emb ) .and. emb # " "
                
                        ? time()+" Bad oaccount 
                        letter!"+oaccount+":"+str(eml) return
                        
                endif
                
        endfor

        if len( odefault ) # 4 ? time()+" Bad odefault len!"+odefault 
                return
        endif
        
        for eml = 1 to 4
        
                emb = substr( odefault , eml , 1 )
        
                if !isalpha( emb ) .and. !isdigit( emb) .and. emb # " "
                
                        ? time()+" Bad odefault letter!"+odefault 
                        +":"+str(eml) return
                        
                endif
                
        endfor
                
        awhen = str( tnow , 9 , 3 )

        w = left( awhen , 5 ) +",M, 0,"+oaccount+", 
        ,"+opassword+",A,"+str(othresh,9,0)+", 0, , 0.0000,00000000, 
        0,"+osscheck+","+odefault +", ,"+otest+ " "+ otrusted +" 
        ,"+oiflag+", ," +right(awhen,3) +", , "

        do write with w
        
return


*** Enter firm configures an OUCH account for clearing

proc enterfirm

        parameter oaccount,ommid,oclearing
        
        if !oclearing$"AIQRN"
        
                ? time()+" Bad clearing in enterfirm:"+oclearing return
                
        endif
                        
        if len( ommid ) # 4 ? time()+" Bad ommid len!"+ommid return 
        endif
        
        for eml = 1 to 4
        
                emb = substr( ommid , eml , 1 )
        
                if !isalpha( emb ) .and. !isdigit( emb) .and. emb # " "
                
                        ? time()+" Bad ommid letter!"+ommid+":"+str(eml) 
                        return
                        
                endif
                
        endfor

        if len( oaccount ) # 6 ? time()+" Bad oaccount len!"+oaccount 
                return
        endif
        
        for eml = 1 to 6
        
                emb = substr( oaccount , eml , 1 )
        
                if !isalpha( emb ) .and. !isdigit( emb ) .and. emb # " "
                
                        ? time()+" Bad oaccount 
                        letter!"+oaccount+":"+str(eml) return
                        
                endif
                
        endfor
        
        
        awhen = str( tnow , 9 , 3 )

        w = left( awhen , 5 ) +",M, 0,"+oaccount+", , ,F, 0, 0, , 
        0.0000,00000000, 0, ,"+ ommid +", , , , ," +right(awhen,3) 
        +","+oclearing+", "

        do write with w
        
return

proc new2cancel

        parameter olocate,oseq,oshares,ocontra && Contra indeicates 
        reason for cancel
        
        if olocate <= 0 .or. olocate > reccount()
                
                ? time()+" CANCEL LOCATE OUT OF BOUNDS " +str( olocate , 
                8 , 0)+ " SEQ=" +str(oseq,8,0)
                
                return 0
        
        endif
        
        goto olocate

        if oseq # SEQ
                
*** ? time()+" CANCEL OUT OF DATE " +str( olocate , 8 , 0)+ " SEQ=" 
+str(oseq,8,0)

                ttoolate = ttoolate + 1
                
                return 0
        
        endif
        
        if LEAVES <= oshares
        
                ttoolate = ttoolate + 1
        
                return
        
        endif
        
        xshares = LEAVES - oshares

        do mwrite with "X", SEQ , xshares , PRICE , ocontra , " " , 0 , 
        recno()

        txcount = txcount + 1
        
        dleaves = LEAVES - xshares
        
        if dleaves <=0
        
                && Must set LEAVES to zero to pull order from indexes
                
                replace LEAVES with 0 , SEQ with tnextdead tnextdead = 
                recno()
                
        else
        
                replace LEAVES with dleaves
                
        endif
                
return


****** Cancel Order takes a locator and a SEQ number ****** passed 
shares in new intedned order size ****** returns number of shares 
canceled and leaves record pointer on order canceled.

proc i2cancel

        parameter olocate,oseq,oshares,ocontra && Contra indeicates 
        reason for cancel

        
        if olocate <= 0 .or. olocate > reccount()
                
                ? time()+" CANCEL LOCATE OUT OF BOUNDS " +str( olocate , 
                8 , 0)+ " SEQ=" +str(oseq,8,0)
                
                return 0
        
        endif
        
        goto olocate

        if oseq # SEQ
                
*** ? time()+" CANCEL OUT OF DATE " +str( olocate , 8 , 0)+ " SEQ=" 
+str(oseq,8,0)

                ttoolate = ttoolate + 1
                
                return 0
        
        endif
        
        msize = LEAVES + FILLED && Current size of order
                
        if oshares >= msize
        
*** ? time()+" INTENEDED CANCEL BIGGER THAN ORDER SHARES="+str( oshares, 
6 , 0 )+" REASON="+ocontra
                
                return 0
        
        endif

        xshares = msize - oshares && HOwmany do we have to cancel to get 
        from current size to new size?
        
        if xshares > LEAVES && Don't cancel more than are open
        
                xshares = LEAVES
                
        endif
        
        if xshares = 0

                ttoolate = ttoolate + 1
                
                return 0
        
        endif

        do mwrite with "X", SEQ , xshares , PRICE , ocontra , " " , 0 , 
        recno()

        txcount = txcount + 1
                
        dleaves = LEAVES - xshares
        
        if dleaves <=0
        
                && Must set LEAVES to zero to pull order from indexes
                
                replace LEAVES with 0 , SEQ with tnextdead tnextdead = 
                recno()
                
        else
        
                replace LEAVES with dleaves
                
        endif
                                
return xshares


proc initstatus activate window status @ 0,1 SAY "Orders:" @ 0,27 SAY 
        "Executions:" @ 0,52 SAY "Cancels:" activate window ticker
return

proc showstatus activate window status @ 0,11 SAY tseq PICTURE 
        "##,###,###" @ 0,38 SAY tmatch PICTURE "##,###,###" @ 0,60 SAY 
        txcount PICTURE "##,###,###" activate window ticker
return

proc processtcpip

        param ptm
        
        tcommand = substr( ptm , 1 , 1 )
                
        if geom
        
                ? time()+" Command recieved after EOM:"+tcommand return
        
        endif
                
        do case
                
                case tcommand = "H"
                                
                        tport = substr( ptm , 2 , 6 )
                                                
                        if !seek( tport , "SOURCES" )
                        
                                insert into SOURCES values ( tport , 1 )
                                
                        endif
                        
                        tinseq = val(substr( ptm , 73, 9 ) )
                        
                        if tinseq # SOURCES.SEQ
                        
                                if tinseq < SOURCES.SEQ
                        
*** ? time()+" Duped inseq "+tport+" Expected:"+str( SOURCES.SEQ , 9, 
                                        0)+" Got:"+str( tinseq , 9 , 0 ) 
                                        return

                                endif
                                
                                do alert with "Gapped inseq "+tport+" 
                                Expected:"+str( SOURCES.SEQ , 9, 0)+" 
                                Got:"+str( tinseq , 9 , 0 )
                                
                        endif
                                                                        
                        tuser = substr( ptm , 8 , 4 ) ttoken = substr( 
                        ptm , 12 , 10 ) tbuy_sell = substr( ptm , 22 , 1 
                        ) tshares = val( substr( ptm , 23 , 6 ) ) tmin = 
                        val( substr( ptm , 29 , 6 ) ) tstock = substr( 
                        ptm , 35 , 6 ) tprice = val( substr( ptm , 41 , 
                        11 ) ) ttif = val( substr( ptm , 52 , 5 ) ) 
                        tdisplay = substr( ptm , 57 , 1 ) tshort = 
                        substr( ptm , 58 , 1 ) tpa = substr( ptm , 59 , 
                        1 ) tmmid = substr( ptm , 60 , 4 ) tclearing = 
                        substr( ptm , 64 , 1 ) tflags = substr( ptm , 65 
                        , 4 )
                                                
                        if tbuy_sell = "B"
                        
                                xshort = " "
                                
                        else
                        
                                if tbuy_sell # "S"

                                        ? time()+" Bad buy_sell 
                                        "+tbuy_sell+" port="+tport
                                        
                                        return
                                        
                                endif
                        
                                do case case tshort = "Y" xshort = "S"
                                                
                                        case tshort = "S" xshort = "S"
                                                
                                        case tshort = "N" xshort = "L"
                                                
                                        case tshort = "L" xshort = "L"
                                                
                                        case tshort = "E" xshort = "E"
                                        
                                        otherwise xshort = "?"
                                                
                                endcase
                                
                        endif

                        if tshares <= 0

                                ? time()+" Jerk boy zero shares TOKEN " 
                                +tport+"-" +tuser+"-" +ttoken
                
                                return
                
                        endif

                        if tshares >= 1000000

                                ? time()+" Jerk boy million shares TOKEN 
                                " +tport+"-" +tuser+"-" +ttoken
                
                                return
                
                        endif


                        if tprice <= 0
        
                                ? time()+" Jerk boy zero price TOKEN " 
                                +tport+"-" +tuser+"-" +ttoken
                
                                return
                
                        endif
        
        
                        if tprice >= 1000000
        
                                ? time()+" Jerk boy million price TOKEN 
                                " +tport+"-" +tuser+"-" +ttoken
                
                                return
                
                        endif
                
        
                        if ! tclearing $ "AIQOR"
        
                                ? time()+" Jerk boy strange clearing >" 
                                +tclearing+"< TOKEN " +tport+"-" 
                                +tuser+"-" +ttoken
                
                                return
                
                        endif


                        if ! tdisplay $ "YNLRP"
        
                                ? time()+" Jerk boy strange display >" 
                                +tdisplay+"< TOKEN " +tport+"-" 
                                +tuser+"-" +ttoken
                
                                return
                
                        endif
                        
                        if (tdisplay = "R" .or. tdisplay = "P" ) .and. 
                        ttif > 0
                        
                                ? time()+" Jerk boy R or P or Q display 
                                with nonzero tif >" +str(ttif,5,0)+"< 
                                TOKEN " +tport+"-"+tuser+"-"+ttoken
                
                                return
                
                        endif
                
                        if !gaccept
        
                                ? time()+" Trade ignored outside SOD-EOD 
                                time "+tport+"-" +tuser+"-" +ttoken
                
                                return
                        
                        endif
        
                        if tclearing = "A"
        
                                if !gactaccept
        
                                        ? time()+" ACT trade ignored 
                                        outside ACT time " +tport+"-" 
                                        +tuser+"-" +ttoken
                
                                        return
                        
                                endif
                                
                        endif

                        
                        select SOURCES replace SEQ with tinseq + 1 
                        select ISLAND
                                                                                                                
                        do enter2order with tport , tuser , ttoken , 
                        tbuy_sell , tshares , tstock , tprice , ttif , 
                        xshort , tmmid , tpa , tdisplay , tmin , 
                        tclearing , tflags
                                                        
                case tcommand = "L"

                        tolocate = val( substr( ptm , 2 , 8 ) ) toseq = 
                        val( substr( ptm , 10 , 9 ) ) tshares = val( 
                        substr( ptm , 19 , 6 ) ) treason = substr( ptm , 
                        25 , 1 )
                        
                        do case case treason = "A" xreason = "#USR" case 
                                treason = "B"
                                        xreason = "#TME" case treason = 
                                "C"
                                        xreason = "#HLT" case treason = 
                                "D"
                                        xreason = "#SUP" case treason = 
                                "E"
                                        xreason = "#DNT" case treason = 
                                "F"
                                        xreason = "#MBL"
                                        
                                otherwise xreason = "#USR" endcase
                                                        
                        do new2cancel with tolocate , toseq , tshares , 
                        xreason
                        
                case tcommand = "I"

                        tport = substr( ptm , 2 , 6 )
                        
                                                                        
                        if !seek( tport , "SOURCES" )
                        
                                insert into SOURCES values ( tport , 1 )
                                
                        endif
                        
                        tinseq = val( substr( ptm , 24 , 9 ) )
                        
                        if tinseq # SOURCES.SEQ
                        
                                if tinseq < SOURCES.SEQ
                        
*** ? time()+" Duped REJ inseq "+tport+" Expected:"+str( SOURCES.SEQ , 
                                        9, 0)+" Got:"+str( tinseq , 9 , 
                                        0 ) return

                                endif
                                
                                do alert with "Gapped REJ inseq 
                                "+tport+" Expected:"+str( SOURCES.SEQ , 
                                9, 0)+" Got:"+str( tinseq , 9 , 0 )
                                
                        endif
                                                                                                
                        
                        tuser = substr( ptm , 8 , 4 ) ttoken = substr( 
                        ptm , 12 , 10 ) ttype = substr( ptm , 22 , 1 ) 
                        treason = substr( ptm , 23 , 1 )
                        
                        do enter2reject with tport , tuser , ttoken , 
                        ttype , treason

                        select SOURCES replace SEQ with tinseq + 1 
                        select ISLAND

                case tcommand = "Z"

                        tolocate = val( substr( ptm , 2 , 8 ) ) toseq = 
                        val( substr( ptm , 10 , 9 ) ) tshares = val( 
                        substr( ptm , 19 , 6 ) ) treason = substr( ptm , 
                        25 , 1 )
                        
                        do case case treason = "A" xreason = "#USR" case 
                                treason = "B"
                                        xreason = "#TME" case treason = 
                                "C"
                                        xreason = "#HLT" case treason = 
                                "D"
                                        xreason = "#SUP" case treason = 
                                "E"
                                        xreason = "#DNT" case treason = 
                                "F"
                                        xreason = "#MBL"
                                        
                                otherwise xreason = "#USR" endcase
                                        
                
                        =i2cancel( tolocate , toseq , tshares , xreason 
                        )
                        
                case tcommand = "S"

                        tport = substr( ptm , 2 , 6 )
                        
                        if !seek( tport , "SOURCES" )
                        
                                insert into SOURCES values ( tport , 1 )
                                
                         endif
                        
                        tinseq = val(substr( ptm , 58 , 9 ) )
                        
                        if tinseq # SOURCES.SEQ
                        
                                if tinseq < SOURCES.SEQ
                        
*** ? time()+" Duped REP inseq "+tport+" Expected:"+str( SOURCES.SEQ , 
                                        9, 0)+" Got:"+str( tinseq , 9 , 
                                        0 ) return

                                endif
                                
                                do alert with "Gapped REP inseq 
                                "+tport+" Expected:"+str( SOURCES.SEQ , 
                                9, 0)+" Got:"+str( tinseq , 9 , 0 )
                                
                        endif
                
                        tuser = substr( ptm , 8 , 4 ) ttoken = substr( 
                        ptm , 12 , 10 ) tbuy_sell = substr( ptm , 22 , 1 
                        ) tshares = val( substr( ptm , 23 , 6 ) ) tstock 
                        = substr( ptm , 29 , 6 ) tprice = val( substr( 
                        ptm , 35 , 11 ) ) treport = substr( ptm , 46 , 1 
                        ) tshort = substr( ptm , 47 , 1 ) tpa = substr( 
                        ptm , 48 , 1 ) tmmid = substr( ptm , 49 , 4 ) 
                        tclearing = substr( ptm , 53 , 1 ) tcontra = 
                        substr( ptm , 54 , 4 )
                                                                
        
                        if ! treport $ "YNS" ? time()+" Jerk boy REPORT 
                                code TOKEN " +tport
                                
                                return
                
                        endif

        
                        if tshares <= 0

                                ? time()+" Jerk boy REPORT zero shares 
                                TOKEN "+tport+"-"+tuser+"-"+ttoken
                
                                return
                
                        endif


                        if tshares >= 1000000

                                ? "Jerk boy REPORT million shares TOKEN 
                                "+tport+"-"+tuser+"-"+ttoken
                
                                return
                
                        endif


                        if tprice <= 0
        
                                ? "Jerk boy REPORT zero price TOKEN 
                                "+tport+"-"+tuser+"-"+ttoken
                
                                return
                
                        endif

                        if tprice >= 1000000
        
                                ? "Jerk boy REPORT million price TOKEN 
                                "+tport+"-"+tuser+"-"+ttoken
                
                                return
                
                        endif

        
                        if ! tclearing $ "ABSIQORN"
        
                                ? "Jerk boy REPORT strange clearing 
                                >"+tclearing+"< TOKEN 
                                "+tport+"-"+tuser+"-"+ttoken
                
                                return
                
                        endif
        
                        if !gaccept
        
                                ? "Report ignored outside SOD-EOD time 
                                "+tport+"-"+tuser+"-"+ttoken
                
                                return
                        
                        endif
        
                        if tclearing = "A"
        
                                if !gactaccept
                
                                        ? "ACT trade REPORT ignored 
                                        outside ACT time 
                                        "+tport+"-"+tuser+"-"+ttoken
                
                                        return
                        
                                endif
                
                        endif

                        do enter2report with tport , tuser , ttoken , 
                        tbuy_sell , tshares , tstock , tprice , tshort , 
                        tmmid , tpa , treport , tclearing , tcontra

                        select SOURCES replace SEQ with tinseq + 1 
                        select ISLAND

                case tcommand = "D"

                        tcseq = val( substr( ptm , 2 , 9 ) ) tcport = 
                        substr( ptm , 11 , 6 ) tcuser = substr( ptm , 17 
                        , 4 ) tctoken = substr( ptm , 21 , 10 ) 
                        tcbuy_sell = substr( ptm , 31 , 1 ) tcshares = 
                        val( substr( ptm , 32 , 6 ) ) tcmatch = val( 
                        substr( ptm , 38 , 9 ) ) tcstock = substr( ptm , 
                        47 , 6 ) tcprice = val( substr( ptm , 53 , 11 ) 
                        ) tcmmid = substr( ptm , 64 , 4 ) tcmisc = 
                        substr( ptm , 68 , 1 ) tcreason = substr( ptm , 
                        69 , 1 ) tcclearing = substr( ptm , 70 , 1 )
                        
                        do case case tcreason = "A" xreason = "#ERR" 
                                case tcreason = "B"
                                        xreason = "#CON" case tcreason = 
                                "C"
                                        xreason = "#SUP" case tcreason = 
                                "D"
                                        xreason = "#SYS" case tcreason = 
                                "E"
                                        xreason = "#EXT"
                                        
                                otherwise
                                
                                        ? time()+" Unvalid break reason 
                                        = "+tcreason
                                        
                                        return
                                        
                        endcase
                        
                        do case
                        
                                case tcbuy_sell = "B" xbuy_sell = "B" 
                                        xshort = " "
                                        
                                case tcbuy_sell = "S" xbuy_sell = "S" 
                                        xshort = "L"
                                        
                                case tcbuy_sell = "T" xbuy_sell = "S" 
                                        xshort = "S"
                                        
                                case tcbuy_sell = "E" xbuy_sell = "S" 
                                        xshort = "E"
                                        
                                otherwise
                                
                                        ? time()+" Unvalid break 
                                        buy_sell = "+tcbuy_sell return
                                        
                        endcase
                                                                                                        
                        do enterbreak with tcseq , tcport, tcuser, 
                        tctoken, xbuy_sell, tcshares , tcmatch ,tcstock 
                        , tcprice , tcmmid , xreason , tcmisc , 
                        tcclearing , xshort

                case tcommand = "M"
                
                        tctype = substr( ptm , 2 , 1 )
                        
                        do case
                        
                                case tctype = "S" && Stock maintence

                                        tport = substr( ptm , 3 , 6 ) 
                                        tuser = substr( ptm , 9 , 4 ) 
                                        ttoken = substr( ptm , 13 , 10 )
                                                
                                        tcstock = substr( ptm , 23 , 6 )
                                
                                        tcshorttype = substr( ptm , 29 , 
                                        1 ) tcblocksub = substr( ptm , 
                                        30 , 1 ) tccenter = substr( ptm 
                                        , 31 , 1 ) tcmisc = substr( ptm 
                                        , 32 , 4 )

                                        do entermaint with tport, tuser, 
                                        ttoken, tcstock , tcshorttype , 
                                        tcblocksub , tccenter , tcmisc

                                case tctype = "A" && Account settings

                                        taccount = substr( ptm , 3 , 6 ) 
                                        tpassword = substr( ptm , 9 , 10 
                                        ) ttest = substr( ptm , 19 , 1 ) 
                                        ttrusted = substr( ptm , 20 , 1 
                                        ) tthresh = val( substr( ptm , 
                                        21 , 6 ) ) tsscheck = substr( 
                                        ptm , 27 , 1 ) tiflag = substr( 
                                        ptm , 28 , 1 ) tdefault = 
                                        substr( ptm , 29 , 4 )
                                        
                                        do enteraccount with taccount, 
                                        tpassword, ttest , ttrusted , 
                                        tthresh, tsscheck, tiflag, 
                                        tdefault
                                
                                case tctype = "F" && Account settings

                                        taccount = substr( ptm , 3 , 6 ) 
                                        tmmid = substr( ptm , 9 , 4 ) 
                                        tclearing = substr( ptm , 13 , 1 
                                        )
                                        
                                        do enterfirm with taccount, 
                                        tmmid, tclearing
                                        
                                case tctype = "T" && Stock state

                                        tport = substr( ptm , 3 , 6 ) 
                                        tuser = substr( ptm , 9 , 4 ) 
                                        ttoken = substr( ptm , 13 , 10 )
                                                
                                        tcstock = substr( ptm , 23 , 6 )
                                
                                        tcstate = substr( ptm , 29 , 1 )
                                        
                                        do enterstate with tport, tuser, 
                                        ttoken, tcstock , tcstate
                        
                                otherwise
                                                        
                                        ? time()+" Unvalid maint reason 
                                        = "+tctype
                                        
                                
                        endcase
                                                
                otherwise
                        
                        do alert with "Unknown command"+ptm
                                
        endcase
                                
return

proc sendeos

        s = "E" call int99 with s

        if s # "f" .and. s # "b"

                activate window output
        
                ? time() +" !!!! ERROR ON EOS WRITE!!!!!!"
                        
                ? ws

                activate window ticker
                                
                suspend
                
        endif
                        
return


proc flush

        s = "F" call int99 with s if s # "f" ? "!!!!ERROR ON FLUSH!!!!"
                
                do alert with "Error on flush:"+werror(s) suspend endif
                
        gstoredflag = .F.
                
return

proc shutdown

        do alert with "Shutdown initiated"
        
        if !geom && Shutting down too early? Just in case...
        
                wait window "Can't end day, EOM has not happened yet!" 
                nowait
                
                do alert with "Ending day attempted before EOM time!"
                
                return
                
        endif
        
                
        sdk = chr( (rand() * 25) + asc("A") )

        wait window "Initiate Shutdown by pressing ["+sdk+"] within 10 
        seconds" to sdh timeout 10
        
        if upper( sdh ) # sdk
        
                wait window "Shutdown Aborted" nowait
                
                do alert with "Shutdown aborted"
                
                return
                
        endif
        
        wait window "Confirm Shutdown by pressing the magic key within 
        10 seconds" to sdh timeout 10
        
        if upper( sdh ) # "M"
        
                wait window "Inccorect Shutdown confirmation" nowait
                
                do alert with "Incorrect shutdown magic key"
                
                return
                
        endif

        do alert with "Shutdown confirmed"
        
        if file( mholdofffile )
        
                ? "Holdoff file exists! Escalate!" suspend
                
        else
        
                sdf = fcreate( mholdofffile ) =fputs( sdf , "Stop in the 
                name of love!") =fclose( sdf )
                
        endif

        if !file( mholdofffile )
        
                wait window "No HOLDOFF file created, aborting Shutdown" 
                nowait
                
                do alert with "No HOLDOFF file created, aborting 
                shutdown"
                
                return
                
        endif
                
        wait window "Shutting down..." nowait
        
        do swrite with "N" , "" wait window "Shutting down... 3" timeout 
        1

        do swrite with "N" , "" wait window "Shutting down... 2" timeout 
        1

        do swrite with "N" , "" wait window "Shutting down... 1" timeout 
        1
        
        do flush
        
        wait window "Flushing..." timeout 1
        
        do sendeos do flush

        wait window "Sending End of Session... 3" timeout 1 do flush
        
        wait window "Sending End of Session... 2" timeout 1 do flush
        
        wait window "Sending End of Session... 1" timeout 1 do flush
        
        wait window "Sending End of Session... 0" timeout 1 do flush
        
        mdone = .T.
        
        zap
        
return


proc pingreply param preply , ptm
                
        ptoken = substr( ptm , 2 , 12 ) pport = substr( ptm , 14 , 4 )
        
        x = "R"+ptoken+str( tseq ,9,0)+str( tmatch ,9,0)+str(0,9,0)

        
        s = "S"+chr(len(x))+ preply+pport+ x call int99 with s
        
return


proc seteventflags param secode
        
        do case
        
                case secode = "SOD"
                
                        gaccept = .T. gactaccept = .T.
                        
                case secode = "EOA"
                
                        gactaccept = .F.
                        
                case secode = "EOD"
                
                        gaccept = .F.
                                                
                case secode = "EOM"
                
                        geom = .T. endcase
        
return

proc alert parameter s xs = dtoc(date())+" "+time() +"-"+ s
        
        ? xs
        
        IF FILE( malertfile ) && Does file exist? errfile = FOPEN( 
                malertfile ,12) && If so, open read/write
        ELSE errfile = FCREATE( malertfile ) && If not create it ENDIF
        
        IF errfile < 0 && Check for error opening file WAIT 'Cannot open 
                or create output file' WINDOW NOWAIT
        ELSE && If no error, write to file =fseek( errfile, 0 , 2 ) 
                =FWRITE(errfile, xs + chr(13) + chr(10) )
        ENDIF

        =FCLOSE(errfile) && Close file
        
        * ? chr(07)+chr(07)+chr(07)+chr(07) return 
-----------------------------------------------------------------------------
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMWNXKKKKXXNWMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMN0xoc;'..'::,..',:lxOXWMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMWKd:'.      ;kXXO:.      .;d0WMMMMMMMMMMMMMMM
MMMMMMMMMMMMMNk:.        ;kNMMMMWO,        .;dXMMMMMMMMMMMMM
MMMMMMMMMMMNx,         ;kNMMMMMMXd'           .oXMMMMMMMMMMM
MMMMMMMMMWO;         ;kNMMMMMX0d'               'kNMMMMMMMMM
MMMMMMMMNd.        ;kNMMMMMXd'.      .:d:.       .lXMMMMMMMM
MMMMMMMNo.       ;kNMMMMMXd'       .:OWMWO:.       cXMMMMMMM
MMMMMMWd.       .xWMMMMXo'    .    ;0WMMMMWO:.      lNMMMMMM
MMMMMMO'         .:OWXo.    .d0:    .lKWMMMMWO:.    .xMMMMMM
MMMMMWl    ''      .,.      lNMO.     .lKWMMMMWO:.   :NMMMMM
MMMMMX;  ;kNNx'            ,KMMWo.      .lKWMMMMWO:. '0MMMMM
MMMMMK,.dNMMMMXd'        .lKWMMMNk,       .lKMMMMMWk..OMMMMM
MMMMMK, ,xNMMMMMNx'    .:kK0kxdxO00o'       .lKWMNk;..OMMMMM
MMMMMN:   ,xNMMMMMXx'  .,'.      ..''         .ld;   ,KMMMMM
MMMMMMx.    ,xNMMMMMXd'              .oOo.           oWMMMMM
MMMMMMN:      ,xNMMMMMXd.          .oXMMWKo.        ,KMMMMMM
MMMMMMM0,       ,xNMMMW0;        .oKMMMMMNk'       .OMMMMMMM
MMMMMMMM0,        ,xX0c.       .oXMMMMMNk;        .OWMMMMMMM
MMMMMMMMMXc.        ..      .oOKWMMMMNk;         ;0WMMMMMMMM
MMMMMMMMMMWk,             .oXMMMMMMNk;         'xNMMMMMMMMMM
MMMMMMMMMMMMNx;.         '0MMMMMMNk;         ,dXMMMMMMMMMMMM
MMMMMMMMMMMMMMW0o,.       ,xNMMNk;        'lkNMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMW0xl,..    ,lo;    ..,cdONMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMWX0Oxdoooooodxk0XWMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
-----------------------------------------------------------------------------
Political Swastika ascii
............................................................
............................................................
.....................';cloddxxxxxdolc;,.....................
................';ldOKXWMMMMMMMMMMMMWXKOdl;'................
..............;oOXWMMMMMMMMXd::dXMMMMMMMMWXko;..............
...........':xXWMMMMMMMMMXx'    'dXMMMMMMMMMWXx:'...........
..........:kNMMMMMMMMMMXd'       ,OMMMMMMMMMMMMNk:..........
........,oXMMMMMMMMMMXd'       'dXMMMMMMMMMMMMMMMXo,........
.......;kNMMMMMMMMMXd'      'dOXMMMMMXxxXMMMMMMMMMNk;.......
......;kWMMMMMMMMXd'      'dXMMMMMMXd'  'dXMMMMMMMMWk;......
.....,xWMMMMMMMMNo.      'OMMMMMMXd'      'dXMMMMMMMWx,.....
.....lXMMMMMMMMMMXd'      'dXMMXd'          'dXMMMMMMXl.....
....,kMMMMMXOXMMMMMXd'      'c:'      ..      'dXMMMMMk,....
....:0MMMXd' 'dXMMMMMXd'            'dXXd'      'dXMMM0:....
....cKMM0,     'dXMMMMMXl.        .lXMMMMXd'      ,0MMKc....
....:KMMXd'      'dXMMXd'          'dXMMMMMXd'   'dXMMK:....
....;OMMMMXd'      'oo'       .      'dXMMMMMXd:dXMMMMO;....
....'dWMMMMMXd'            'd00d'      'dXMMMMMWMMMMMWd'....
.....:0MMMMMMMXd'        'dXMMMMXd.      'xNMMMMMMMMM0;.....
......lXMMMMMMMMXd'    'dXMMMMMMXo.      'xNMMMMMMMMXl......
......'lXMMMMMMMMMXd,,dXMMMMMXOd'      'dXMMMMMMMMMXl'......
.......'c0WMMMMMMMMMNNMMMMMXd'       'dXMMMMMMMMMW0c........
.........;xXMMMMMMMMMMMMMXd'       'dXMMMMMMMMMMXx;.........
..........':kNMMMMMMMMMMMO,      'dXMMMMMMMMMWXk:'..........
............':d0NMMMMMMMMMXd'  'dXMMMMMMMMMN0d:'............
...............,cdOXWMMMMMMMXOOXMMMMMMMWXOdc,...............
..................';coxk0KKXXNXXXKK0kxoc;'..................
........................',,;;;;;;,,'........................
............................................................
............................................................
-----------------------------------------------------------------------------
Sig : "The nature of the good is to overcome and defeat the bad."



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice



-- 
"The nature of the good is to overcome and defeat the bad." - divine voice