text:
Barring a miracle — and miracles are in short order on Texas' death row — Kenneth Foster is likely to die Thursday. The battle around his case has been a heroic one. Kenneth's horrifying story of being condemned to death on a misapplication of an already draconian legal monstrosity — Texas' "Law of Parties," which enshrines guilt by association — as well as his own clear-eyed and articulate work telling his story and speaking out for others, have won him a host of supporters.
Foremost, of course, there is his family, including his heartbreakingly articulate daughter Nydesha — who has never touched her father, and now may never do so. There is the Coalition to Save Kenneth Foster, a group of activists who have rallied to his defense. There is also the New York hip-hop collective the Welfare Poets, and Kenneth's wife, the Dutch hip-hop artist Jav'lin, who dedicated the moving song "Walk With Me" on the Poets' Cruel and Unusual Punishment CD to her husband's struggle to live. Mumia Abul-Jamal, from his own death row confinement, wrote in solidarity, while Amnesty International called the case "a new low for Texas" — and that is low indeed.
There are others. Sportswriter Dave Zirin's Jocks 4 Justice, a coalition of socially conscious sports figures like Ruben "Hurricane" Carter, Etan Thomas and Dr. John Carlos, said that Kenneth should live. Archbishop Desmond Tutu of South Africa filed an amicus curae brief for Kenneth. And the European Union singled Kenneth's case out as particularly egregious in condemning Texas' 400th execution. (Governor Perry's response was to state that the U.S. had fought a war to be free of European influence, and that "Texans are doing just fine governing Texas.")
The major papers in Texas have all come out against the execution. There is even a soul-searching statement from Sean-Paul Kelley, a boyhood friend of Michael LaHood, the murder victim in whose name Kenneth will be strapped to a gurney this Thursday: "the execution of a young man who didn't even kill Mike? That's not justice." Kelley writes. "It's senseless vengeance, a barbarism cloaked in the black robes of justice."
With the picture of this broad, international roster of supporters before our eyes, a coalition of activists in New York decided to approach our own formally anti-death-penalty Democratic representative Charles Rangel, co-founder of the Congressional Black Caucus. Kenneth's impeding execution is clearly a Civil Rights issue, as is the death penalty in general. It is difficult to imagine a wealthy white 19-year-old receiving the same treatment that Kenneth did. All five — yes, five — of the executions scheduled in Texas for this month are people of color (four are Black, one is Latino).
Two weeks ago, Rangel's staff took a draft letter we wrote to Governor Perry on Kenneth's behalf, which we hoped he would sign onto. They pumped us for information about the case; they wanted to know who was on board already. We told them that we wanted Rangel, as a politician with an abolitionist record, to take the lead in making Kenneth's case heard in the halls of power. Then we waited. And as of last week, we were informed that Rangel would not see our letter for "several more days." Given that after Tuesday it did not really matter, since it is was on Tuesday that the Pardons Board was to make its decision whether or not to recommend the case to the Governor (it has been delayed to today, Wednesday), this was the same as shutting the door.
So Monday morning, we decided to pay a visit to Charles Rangel.
We brought members of Harlem's Campaign to End the Death Penalty (CEDP) and supporters of Kenneth. There was Ray Ramirez from the Welfare Poets, and Ronnique Hawkins from the Anti-Lynching Movement, and Michael Letwin, the radical lawyer and former President of the Association of Legal Aid Attorneys/UAW. There was Jeffrey Deskovic, recently released on DNA evidence after 17 years in jail, and Lawrence Hayes, former Black Panther, New York death row inmate and Campaign founder. There was a man whose son has been a penpal of Kenneth's for years. We were students and activists and independent journalists, former prisoners and family members — those that have the most at stake in fighting the death penalty and criminal injustice. And we were there to ask that our anti-death-penalty representative to take a stand while it still mattered.
They didn't want to let us up at first, but at last Rangel's policy advisor came down to meet our community delegation. He sat us around a cafeteria table, and explained to us that Rangel was a very busy man, that he hadn't read the letter and that we hadn't gotten it to him in time. He explained that whether we liked it or not, Kenneth had been convicted by a real law in Texas, and that Rangel had to be careful what he said about that. He seemed to have forgotten that the fight for racial justice in the US meant overturning "real" laws like slavery and Jim Crow. Unjust laws are made to be broken. Rangel, the man said, had a pile of papers on his desk. This representative of our elected official sat at a table with those who'd been railroaded by the criminal injustice system and had their lives destroyed by it and told them that Kenneth's case was not urgent enough.
But, they'd "talk to the communications director at the Congressional Black Caucus." They'd "put it in front of Rangel."
Kenneth Foster's execution date is Thursday at 6 pm.
Meanwhile, a few of us, waiting outside in Adam Clayton Powell Plaza for our press conference to begin, were confronted by security guards for carrying "Save Kenneth" signs, who told us we needed a permit. Not even for holding up the signs. Just for holding them in our hands. A guard in a beret told us we were inciting a disturbance; that is, he seemed to think that the sight that the words "Save Kenneth Foster" and a picture of Kenneth and Nydesha under someone's arm might incite a disturbance.
Just another example of post-9/11 paranoia in New York, maybe. But it also shows how the law-and-order agenda has sapped away all our rights, has made acceptable affronts that would have seemed absurd a few years ago, with the death penalty being only the sharpest expression of this. Kenneth himself has written about how his case symbolizes this assault. And Kenneth, through his own activism behind bars, has helped build a movement to shine a light on the injustice — to expose the racism, the bloodlust and the social blindness that our criminal injustice system is built on… not least of all the out-of-control Texas death machine.
And it seems that some people would rather not have to be confronted with this.
There is a final thought. At the end of the day, Kenneth is being executed for not having predicted a murder that he had no way of predicting, for not having read Mauricio Brown's mind when he exited the car Kenneth has been driving. For not having called out to stop a murder he did not know was going to be committed. He is being killed for not seeing the future, "sentenced to death for leaving his crystal ball at home," as Amnesty puts it.
Our representatives, unlike Kenneth, can see the future. They know exactly the hour and the date that the killing of Kenneth Foster will take place. The state of Texas is methodically, inexorably plotting the death of Kenneth Foster, piece by piece, hour by hour.
Some politicians have built their careers on promises of racial equality — careers they've too often put ahead of the lives of individuals like Kenneth when it could make a difference. Texas is bucking a national trend against the death penalty. Texas kills with impunity, at least in part because none of our Democratic elected officials will call out to stop them. This may or may not make them "party" to Kenneth's murder by some obscure legal standard — the important thing is that the cries for justice have been too infrequent.
We know that unjust laws like the "law of parties" are applied only to the voiceless and never to the powerful with their lawyers and policy advisers. But this doesn't change the fact that those with power should speak out when their influence could make the difference. Or that it is long past time to call for a halt to the Civil Rights catastrophe that is the Texas killing machine, the fulcrum of the moral abyss that is the U.S. penal system. And if we cannot count on our elected officials to make this cry for justice heard, it will be up to us, at the grassroots — the kind of people represented so well Monday at Charles Rangel's office — to make it heard.
What you can do:
Call the Governor and the Texas Board and urge them to grant clemency to Kenneth Foster:
Texas Board of Pardons and Paroles:
Phone (512)406-5852
Fax (512)467-0945
Gov. Rick Perry
Phone (512)463-1782
Fax (512)463-1849
To get involved, go to www.freekenneth.com or email gro.ytlanephtaedonnull@cyn.


text:
The following questions have been forwarded to NVMC by members of the international maritime community. For each question, an answer we believe to be accurate is provided. If you have any further questions please use the Contact Us page for further inquiries.
FAQ Categories Index NOAD Submissions • eNOAD • Time Requirements • Customs and Border Protection (CBP) Requirements • Cargo Requirements • Crew and Non-Crew/Passenger Requirements • Hazardous Conditions/Non-Operating Equipment Requirements • Ballast Water Reporting • Outer Continental Shelf (OCS) Requirements • Notice Tracking • Non-Commercial Vessels • Port Clearance • Departures • Form Entry Questions • Definitions • Barge NOAD Requirements • Public Vessels • Low Sulphur Fuel Oil Non-Availability • Questions • VRP/NTVRP Reporting • [ ALL ]
In §160.206(c) of 33 CFR Part 160, it states that I may submit a copy of INS Form I-418 to meet the requirements of entries (4) and (5) in Table 160.206 pertaining to crewmembers onboard and persons onboard in addition to crew. There is no place on INS Form I-418 for place embarked; do I still need to provide this information on a separate form?
Yes, the embark information is still required. Embark information can be entered on the NOAD form and needs to be entered for each person listed in the crew and non-crew/passenger tabs.
Which submission formats meet the electronic reporting requirements of both USCG and USCBP?
Submissions received through the electronic Notice of Arrival/Departure (eNOAD) web format or via the NVMC WorkBook fulfill those requirements. Version 6.3.0 of the NVMC InfoPath template also meets both requirements, but it should be noted that the NVMC InfoPath template support is slated for future retirement. Also, many third party applications based on the eNOAD XML schema meet those requirements. A user may also build a system based on the eNOAD XML schema to generate notices for electronic submission. Schema requirements and tools may be found under the Developer Resources tab of the NVMC website.
Who is required to submit an eNOD?
Commercial vessels leaving a U.S. port to go to a foreign port or place (including lightering areas or zones and places on the OCS) are required to file an eNOD.

subset: commoncrawl


text:
Phone and Internet Services
All Service Sectors - Northern Ireland
No listings were found!
Locate all the services for your event quickly and easily using our directory. Simply select a services sector, the event location and your requirements.
Set my service sectorChange
Need to contact numerous event businesses for booking info and hire quotes? Make organising your event easier, give our free email service a try.
Learn more about the various event services, attractions, amusements and entertainment in our essential guide with FREE help and booking advice.
Every issue of our FREE newsletter is aimed at providing you with ideas and tips for your event plus keep you up to date with new features on the website.
Stay informed with our daily updates, articles and latest news feed. Read and discover who's new, advertiser services news and what's new on Countyfetes.
At Countyfetes we value your privacy and as set out in our Terms of Use and Privacy Policy if you continue to use this website without first changing your browser settings or click the 'Accept Cookies' button you agree to the use of the following required cookies 'Strictly Necessary', 'Functional' and from 'Trusted Affiliate Networks'. Additionally upon accepting cookies optional 'Performance', 'Third Party' and 'Targeting' cookies may be set from companies who may track and process your personal data i.e. IP Address to enhance your experience of their services. You can withdraw consent at any time to optional cookies, however some content items may not work.


text:
Before I get too knee-deep in this blog, I thought I should outline what my labels mean. Do you really care? Nah, probably not, but I actually put quite a bit of thought into them, so you're going to skim this and pretend you care. :P
When I started Quirky Jessi, I really had no plan. Over the years, I kept the labels/tags relatively vague so that I have a fair bit of them, but they're so general that sometimes a post falls into several at once…or none at all. And to top it off, they don't really 'mean' much of anything.
So for Quirky Cookery, I knew I wanted to have some pretty tight labels to help keep things organized. So many cooking sites have 50 million tags so that every post is tagged with 20 tags each. One recipe may fit into the categories of "dinner," "vegetarian," "ethnic," "Mexican," "easy," "cheap," "dairy-free," "diabetes-friendly," "organic," "healthy," etc, etc.
I don't want to be every other cooking site, though. And I certainly don't want to juggle all those tags when most people just honestly don't care. If you're looking for Mexican recipes, google "Mexican recipe." If you want food that simply 'looks' like a Mexican flag, then now we're talking.
Cravings and curiosities – Whether it's food or kitchen products, these are things I'm curious about. A recipe I think would be fun to try out, but I haven't actually tried it yet? A kitchen accessory I'm drooling over? A new food that I'm curious how it'd be? All goes here.
Culinary detours – Stories mostly, I figure. When the kids say something so hilarious that I can't resist posting it here, or when I make a goofy mistake like burning my belly button repeatedly, I want a place to put them.
Gadgets and gizmos – Self-explanatory really. I run across a lot of quirky gadgets and the best (read: strangest) ones will end up here.
Images – Yeah, so it's vague, general, and it doesn't have an interesting name at all. What's it to you? I ran out of ideas, ok? And I know I'll be posting random pictures that won't fit anywhere in the rest of these categories. Leave me alone! Or suggest a quirkier name.
OAMC – Stands for "Once a month cooking." While I don't do it just once a month, I 'do' tend to cook a whole bunch at once to put meals in the freezer. This frees up a lot of time for me and allows me to play with my food a bit more on some other days. I have a lot of fun shopping just once a month (minus the occasional trip for fresh produce, bread, and milk), and even more fun taking pictures of how much I cook at once.
Other sites – I love to link to other people. Everyone seems to have so many amazing ideas and they deserve as much linky love as possible.
Quirky creations – These are my own creations. Here will be silly, quirky, and/or messed up dishes that I've made myself.
Recipes – Duh. Recipes here. These will likely be mostly ones I've tried (or am going to try shortly), but that aren't necessarily "quirky."
Reviews – Do I need to explain this one?
Tips – Or this one? These are boring. Shhh. Tips will be listed in italics, usually at the end of posts.
So there you have it. Now you know what they all mean. Or what they're supposed to mean. We'll consider this my cheat sheet for the next time I forget how to label one of my own posts, ok? ;)
Disclosure: All labels are mine and I'll change them whenever I feel like, so this list could easily multiply like flour seems to all over my table, counter, feet, and hair. In 5 years if I'm still writing here and forget that once upon a time, I wrote this post, I cannot be held liable for these being completely outdated and false. It's not my fault. And you shouldn't care, so shush it and go click a link instead.


text:
Housing related insurance compulsory earthquake insurance, earthquake provides coverage against damage that could be caused. Earthquake insurance is mandatory natural disaster insurance and service offered by the institution. Insurance companies and agents that are authorized by the institution through the development of the policy is provided.
Compulsory earthquake insurance policy
The validity of the compulsory earthquake insurance and the time involved in the contract before the end of the period is 1 year for the renewal of the policy is mandatory. Earthquake insurance is steel with a reinforced concrete frame, brick masonry structures such as masonry and wood and is secured to excluding these groups.
What is the punishment for compulsory earthquake insurance to get?
Mandatory earthquake insurance, although they are not applied any criminal process in the event of failure the owners of the property, the purchase and sale of dwellings are not available, earthquake insurance, water, electricity and natural gas infrastructure facilities such as subscriptions operations cannot be performed. It is imperative that the subscription be done to obtain earthquake insurance.
Compulsory earthquake insurance general conditions
Disaster insurance according to the law, the compulsory earthquake insurance can be done in the following buildings.
- Record the deed, and to own private property built as a residence on immovable property and buildings
- The Condominium Act which are included in independent sections and buildings located in other sections of our vineyard that are used for commercial purposes
- Made by the state as a result of natural disasters or houses made with a loan from the state
In addition, the easement provides that the above conditions are established buildings, the deed and land registry have not yet been delivered in the last plot also houses cooperative buildings, earthquake insurance can be done.


text:
Hello dear friends !
Hope and pray that all of you are feeling the excitement of season and are busy in preparation for Christma the most enthusiastic event of the year which pour life in dull routines of usual days :)
According to news weather is being disturbing in some part of lands specially in united states of america .
Still there is much liveliness and excitement seems to roam about due to coming holiday and Christmas . Everybody seems to enjoy all the enthusiasm and fun related to festival .
Through the blogging world has squeezed for me ,i can feel the almost same sense of happiness inside me :)
as i am truly enjoying the knowing about fellow dear people who just like us celebrate their festival with all the traditional style by buying gifts for loved ones ,making festive meals and being together !
All what we do here on our festival like Eid ! We all create reasons for our joys and pleasures and we all celebrate them with same positive and optimistic perspective that "life is beautiful against all odds"
What i LOVE most about Christmas is
" giving gifts to loved ones "
this is very beautiful part of the event when everybody seems to
"think about others rather than just himself"
This makes this wonderful Christmas more special .
Each hearts feel for other heart ,thinks for his likes and dislikes try to buy or prepare gift according to the likening of his loved ones . Whole process takes long period of time and this is what matters most that we take time to think about others .
Either we here on our yearly festival Eid give each other gifts but they are mostly sweets and chocolates packets or cash which called Eidi.
But buying goodies or making gifts with hands is not in here and i want to start this lovely tradition here in my family too hope you won't mind :) i think learning is good?
anyway sweet people ,
Enjoy the sensational season!
Now sharing some pics from our recent visit to the park situated beside the river Indus , and than next day to city hospital for the checkup (story next time).
Last sunday when i came out in front yard the whole tree was beaded with crows ,they flew when i tried to capture the interesting view
we decided to visit the park 45 minutes drive away from our small city khairpur
Hubby did not wore his fav black jacket as he thought if it rained ,it will spoil his jacket (annoying!) we saw a large family was getting in boat for riding
due to freezing northern weather river had less water ,barrage door were closed ,view was serene
medicines effect can be seen in slight swelling on face and little dizziness as hubby was asking me to stay away from water as he doesn't know swimming lol
we were early as park get crowded from evening ,instead of busy sides where rides were we sat for while near water
wind was cold so i wore sweater and shaal , quick shot by younger son
My naughty one!,taking selfie
our northern areas having heavy snow and quetta which is in southern part of country though and not much far from our city is bearing minus 10 c.
Temperature in our city drops to 3 or 4 and rise till 21 or less so WE ARE HAVING STRONG WINTERS .
Take great care lovely people ,stay blessed with beauty of soul and peace of heart!
God Bless You All!!!


text:
In September 2017 Master James Sinclair met up with a number of the leading Wing Chun Kung Fu teachers available. As a special guest of Grandmaster Wan Kam Leung, James was invited to meet up at the Los Angeles Wing Chun Headquarters of Master Gary Lam in Alhambra California. James was treated very well and honoured to be given a seat next to Grandmaster Wan in the photo session. This was a surprise as James was only a guest of the Grandmaster and was expecting such 'face' to be given.
It was a great pleasure for James to meet Garandmaster Wan's family and spend some time with his long term friend of approaching 12 years.
Special thanks also have to go out to Master Gary Lam for opening the doors to James and allowing him to be present at what was a very exclusive series of seminars held by the Masters of the Wong Shun Leung lineage.
James and his son enjoyed an extended lunch with the Grandmaster and William Kwok of the Gotham Wing Chun School in New York.
During James' time in California he also visited respected Wing Chun Master Robert Chu, who remain one of the greatest authorities on the history of the Art. He has traced by genuine manuscripts outlining the original concepts and approaches of Wing Chun Kung from its earlier days. A fascinating discussion and of particular interest was the discussion on Qi Gong and its use in the Wing Chun system.


text: The agriculture sector is one of the major consumers of electricity and groundwater in India. Inefficient water pumps used by farmers lead to the overuse and waste of two important resources: energy and water. USAID's Water Energy Nexus (WENEXA) project has worked to address this problem through a pilot program that replaces inefficient pumps with efficient ones and activities which result in the improvement of the groundwater table. Watch the video to learn more.


text:
Clarion Gaming commits to provide a safe, respectful, ethical and appropriate working environment for everyone, including staff, exhibitors, customers and suppliers, which is not discriminatory towards, or offensive to, individuals or groups for reasons of age, disability, sexual orientation, class, ethnicity, race, colour, faith, marital status or gender.
Dress Code: stand staff
- This dress code applies to "stand staff", who are defined as staff of any gender used by exhibitors or sponsors to promote their products or services at an event.
- Partial or total nudity or overtly sexual or suggestive clothing or marketing methods (including for example, in the case of female stand staff, the overt display of cleavage or navel) will not be allowed.
- At the discretion of Clarion Gaming, the sole possible exception to this rule may be promotional characters that are seen "in-game" but exhibitors must obtain permission in this respect from Clarion Gaming show management prior to commencement of the show.
- If, for any reason, stand staff and/or an exhibit and/or its contents are deemed inappropriate by Clarion Gaming show management, the exhibitor will be asked to alter the attire of its stand staff and/or the exhibit and/or its contents.
- The decision of Clarion Gaming show management in each of the above respects will be final.


text:
Flairck & Basily - Global Orchestra: CD
Recorded with The Van Mobile at Stadstheater Zoetermeer, Holland, May 28th 2010. Mixed, Edited and Mastered by Paul Schuurman and Erik Visser. Produced by Erik Visser. Audio settings: PCM 2.0 Audio.
- Intro 0:21
- Antara (Popy Basily) 3:12
- Cembalon Intro (Marius Preda) 1:46
- Minor Swing (Django Reinhart/Stephane Grappelli) 3:04
- Contrabass Flute / Rain (Lorre Trytten) 0:33
- Gipsy Emigrant (Traditional/Erik Visser) 6:36
- Prelude In A-Minor (Manuel Ponce) 3:03
- Riviera (Popy Basily) 2:52
- Violin Intro (Erik Visser/Luluk Purwanto) 2:03
- Variations On A Gypsy Lady (Erik Visser) 6:41
- Gypsy Party (Traditional/Basily) 2:09
- Awen Nachas (Traditional/Basily) 3:55
- Circus Tziganesky (Erik Visser/Traditional/Basily) 13:13
- Dank Je Wel 0:12
- Es Lilin (Traditional/Luluk Purwanto) 2:03
- Valse De Niglo (Traditional/Basily) 4:03
- Cembalon Intro (Marius Preda) 1:10
- Aquelarre (Pablo Ortiz) 7:38
- Dark Eyes (Traditional/Basily) 7:28
- Applause 0:36
- Popy's Guitar Intro (Popy Basily) 1:01
- Wooden Gipsy Wedding (Erik Visser) 4:35
- Applause 0:28
Flairck, established in the late seventies, has always been a group with an unpredictable style of instrumental and acoustic music. The group has cooperated with a vast number of great musicians and has played over 2500 concerts worldwide. On the occasion of the 30th anniversary in 2007 Flairck released a 22 CD box.
In the eighties Flairck frontman Erik Visser met the talented young musicians of the Basily gipsy family in their hometown Delft, Holland. He produced the Basily debut album 'Antara' (1 990) and the second album 'La Bikina' (1993).
Over the years Basily developed a new style of jazz mixed with original and traditional gipsy influences. The group is now known internationally and performs at big jazz festivals all over Europe, in Asia and the US. They even played at a private Rolling Stones party.
In 2008 violinist Tucsi Basily and Erik Visser initiated a collaboration between gipsy musicians and a variety of instrumentalists from different countries and backgrounds. In the summer of 2009 this World-Music-orchestra gave its first performances at the International Gipsy Festival and the well known Boulevard Festival.
The enthusiastic responses to the instrumental acrobatics of this large band created a follow up. The first Global Orchestra tour took place in the spring of 2010. The last concert of this tour was filmed and is featured entirely on this first Global Orchestra DVD. For the audio CD some tracks have been shortened, while keeping the construction of the music intact.
Global Orchestra is a pact between the musicians of Flairck and Basily, in collaboration with Indonesian jazz violinist Luluk Purwanto, Hungarian percussionist Antal Steixner and Rumanian cimbalon player Marius Preda.
Together they form the flexible ranks of this orchestra, which is meant to be a forum for musicians from different background aiming towards a "new approach to old traditions".


text:
Omega vertical vegetable juicer and fruit juicer options offer a compact footprint. If you like your vegetable and fruit juicer vertical, we have slow juicers, masticating juicers and cold press juicers.
Juice fruits, veggies, leafy greens, and wheatgrass. These multi-purpose juicers can also make nut milks, nut butters, all-natural baby food & more!
Cold Press Juicer with Celery Juice Function- Delivers Maximum Celery Juice and Nutrition.
These slow vegetable juicers are slow cold press juicers in cube form. Our slow speed fruit juicers with cube design are easy to store.
Our high speed fruit juicers and vegetable juicers include fast juicers with pulp ejection. Try fruit and vegetable juicers to juice oranges, celery, carrots, apples and more.
Use our citrus juicers to juice all types of citrus fruits. The best fruit juicers make it easy to make orange juice, lemon juice, lime juice, grapefruit juice and more.
Browse fruit juicers at Omega Juicers to juice apples, oranges and other fruits, and discover slow juicers that create tasty, nutrient-rich treats.
Achieve your nutritional and lifestyle goals with the easy-to-use, easy-to-clean Omega Effortless™ Batch Juicer. Get your day's worth of fruits and veggies by creating delicious, cold press juice.
Our best fruit blenders are not only great for fruit smoothies, but also for milkshakes, soups, and sauces and more.
This commercial drink mixer mixes milkshakes, bar drinks, eggs, batter & more.
With the Omega Drink Mixer spindle machines you can mix ice cream, bar drinks, eggs, pancake batter, waffle batter and more. The extra-large Stainless Steel blending cup clicks on and off for ease-of-use and serving. The powerful motor and detachable spindle aerates mixtures into frothy, smooth textures for superior whipping results.
" I've been juicing with Omega long before it was 'cool'. I beat the 'incurable' disease, lupus, along with cancer with the help of juicing and my Omega.
Tracee, JuiceRecipes.com
" If you consume a wide variety of juices and want to experiment with new and interesting flavor combinations, Model 8006 is the juicer for you.
BestReviews.com Omega voted Best of the Best 2018
" Omega Vert proved efficient and powerful, chewing through every kale leaf and apple chunk we fed it.
Mens Journal, Gear of the Year
" Dr. Oz identifies the Omega VRT350 Juicer as his go-to-juicer in his Best Advice ever segment.
Drink well, eat well, live well . . . with Omega.


text:
LEW1SS Label Leg - Wartnaby Gardens Range
Delicate galvanised wire leg for use ONLY with zinc labels ZH9 & ZH7 or aluminium labels AH9 - approx 24 cms from top to bottom. Once the leg is in the ground the label cannot be lifted off (this may be of interest to those who open their gardens to the public).
We are now manufacturing these legs ourselves. This means that we can make them to any length to order subject to minimum quantities. Please call if this is of interest. |


text:
Porsche is the most successful manufacturer of exclusive sports cars and has an outstanding reputation. This success is based on the desirability of the vehicles, but equally importantly, due to its unique corporate culture that is shaped by integrity and compliance. And it should stay that way. All board members, members of the management bodies, managers and employees make their own contributions every day according to the motto: Sporty and fair - that's typical Porsche.
Porsche stands for strong values such as fairness, responsibility, mutual respect and trust, transparency and openness, and acting ethically. These values apply to the way managers and employees treat themselves among each other as well as to their contact with customers, business partners, and public authorities. Only by adhering to these values can long-term business relationships be established and maintained, conflicts be resolved openly, mistakes be rectified in a solution-oriented manner, and trust in leadership and reliable cooperation be ensured.
Lawful conduct is an expected daily practice at Porsche and a key condition for the business success. Porsche complies with applicable laws in all countries of business. Compliance is put into practice through a clear commitment by the Executive Board for adherence to the law, by the senior management acting as compliance role models, and by employees abiding to applicable rules and regulations. Enforcement will be consistently applied if the law is broken or internal company guidelines are violated.
Read more
Porsche rejects all forms of corruption, cartelization, money laundering or any other white-collar crime and does not tolerate any unlawful behavior by employees or other third parties like customers or business partners. Porsche has set up a whistleblower system for the submission of tips of potential violations by Porsche employees. Submitting tips, helps Porsche to prevent damage to the company and to identify misconduct.
For us, respect for human rights is a fundamental component of responsible corporate governance. Our aspiration is that human rights are respected both in our company and by our business partners. You can submit any Human Rights & Environment related complaints through the input channels which can be accessed through the following button.


text:
Our School
A place of learning, friendship and fun. Here, girls and boys build firm academic foundations in an environment designed to meet their specific needs.
Students' intrinsic curiosity is shaped toward new goals of academic excellence. Each is supported to achieve their best, build healthy relationships and discover their strengths.
Here, students prepare to reach new standards of academic achievement, refining their capacities to lead, contribute, and act as agents of positive change.
Our Approach
Our aspiration is for our students to be architects of their own lives. We ask them to look beyond the ordinary, to achieve the extraordinary, and to make a difference to the world in which they live.
Our Community
A sense of community lies at the heart of Melbourne Grammar School. From the first Headmaster who walked through the door in 1858, through to our youngest Prep student of today, everyone is valued for the contribution they make to the fabric of the School.


text:
While I will no longer be involved in any new analysis, please continue to read, review and build upon the documents, links and prior postings in American Herds as sources of information, education, history, and interconnected relationships in what appears to be the ongoing perpetuation of a broken, inhumane and fraudulent Program whose criminal activities have been swept under the rug and covered up for decades.
Over this time, I have accumulated a wide variety of environmental assessments, reports and related documents that I hope to periodically upload to American Herds in order to make them available for those who seek to know more of the truth about what has – and is – really occurring behind the scenes of the sound byte propaganda continually regurgitated by industry related enemies of America's remaining "free" wild horse and burro populations. Please check back occasionally for new material that may be of assistance in learning and knowing more about these issues.
I would also like to deeply thank the untold number of citizens and grass roots activists I have had the distinct honor and pleasure to work with during this time. Your dedication to the well being of our herds, pursuit of the truth, and infinite sacrifices has been truly humbling.
Cindy MacDonald


text:
Wild Shaman
Square Kilim Floor Cushion
Casual floor seating made of one-of-a-kind Turkish kilim rugs. Soft rectangular-shaped floor pouf.
- Handwoven
- 100% Wool on Wool or Wool on Cotton unless otherwise specified (hemp, goat hair, camel hair)
- All naturally dyed with roots and other plants
- Cotton fabric bottom. Zip closure for easy fill.
- Dimensions: 26in x 26in x 10in
- Filling: Poli foam and bean bag filler.
Please view our Store Policy for detailed information.
Contact us with product questions prior to purchase.


text:
Welcome to the Carnival of MS Bloggers, a bi-weekly compendium of thoughts and experiences shared by those living with multiple sclerosis.
cycles in life and hope
By Mary K. Mennenga
Learning your capable of doing something doesn't mean you should
Time teaches us we aren't as smart as we thought
When we become willing to admit this, that's when growth begins
We no longer need to be told what someone else thinks
The answer to our question is
We begin to seek out the answers for ourselves
To the questions that the answers bring to mind
Creating even more answers that need questioning
As we begin to make decisions about what we believe the truth is
Who we are and what's important to us and why
We learn that each choice we make will change
What choices and options are available to us
It becomes a lifelong cycle of questions, answers
Learning and personal growth making decisions and choices
It's a kind of learning that you learn as you go
So don't judge yourself too harshly
This never-ending cycle helps you become
The person you know you want to be
It's a journey that no matter what you do
Still takes a lifetime to finish
Well coordinated
by Toots of Maybe MS Truth
by Toots of Maybe MS Truth
Today (now yesterday) my masseuse commented that my knickers matched my walking stick. Let me explain.
- a) I have had regular massages since suffering a work related shoulder injury many years ago. I wrenched something. It hurt. A lot.
- b) Unusually for me, these particular knickers are patterned with red cherries.
- c) I own a variety of patterned walking sticks. This is one of two recent bargain buys from Timpsons. It is bizarre how excited I now get about buying new walking sticks. Who'd have thought someone my age would get so much pleasure from a pretty stick! Not a euphemism.
Loss of coordination was one of the first symptoms to affect me when I suffered the MS relapse that led to my diagnosis. I don't remember what I was wearing when I went into hospital (in an ambulance) but I bet it wasn't in any way coordinated. I do remember I couldn't write properly with my left hand. I am left hand dominant. Left-handed to you and me.
I had also started dropping things. I was already using a stick due to footdrop, balance and coordination difficulties when walking - and when standing or bending down. Sitting seemed to be ok but that doesn't take a huge amount of coordination.
None of this is unusual for someone with MS but when you don't know you have MS and these difficulties are accompanied by visual disturbances, extreme tiredness (fatigue), strange numbness/tingling in limbs and crushing pain round your midriff then the loss of coordination is disturbing. It was the midriff pain that landed me in hospital, It moved up to my chest and the out of hours doctor told me I had to phone 999. Best thing I did. Once in hospital I had the raft of tests that led to my diagnosis.
On diagnosis, I was told by the hospital MS Specialist Nurse that the crushing midriff pain, which felt like a far-too-tight twisting belt, is known as the MS Hug. I think of a hug as a pleasant thing. This wasn't, and still isn't, at all pleasant.
One of the problems with all my symptoms is that they didn't/don't feel coordinated. To a lay person like me, it's like having a whole jumble of stuff wrong. So yesterday it was good to be told that one part of me was coordinated. My knickers matched my walking stick. I was well coordinated. Very important, I feel, to look your best... in case you get run over by a bus.
by Maryann of MS and ME
These are my two grandsons, Alex (8) and Albert (12). They came, along with their parents, for a visit in March. We had a wonderful time with them. Behind them in the picture is the Roanoke River. We were all walking on the Greenways, a very nice asphalt walkway that goes through Salem and Roanoke.
I had MRI scans of my brain, cervical spine, and thoracic spine taken with and without contrast. Following that, I had a visit with my MS specialist neurologist last week. He said there were no changes since my last MRI. However, in a blood test taken the first of March, I tested positive for the virus that causes PML in people who are on Tysabri. Dr. S told me to discontinue my T infusions for now, but to not have my port removed.
Because of my tiredness, sleepiness and fatigue, he is weaning me off of the Flexeril and Baclofen that I had been taking. If my muscle spasms come back and are too painful, I am to start taking the meds again.
He did a lumbar puncture, which was my second in 20 years. There was a problem gaining entry, and they ended up having me sitting on the exam table, with my arms extended over a walker, and my chin tucked into my chest. That opened the area up and the LP was done. I also had to go to the lab, carrying the fluid from my spine, and have blood drawn.
I will also have a sleep study done because I am overweight and I snore. Then, I will also begin Physical Therapy.
That's an awful lot of stuff. Dr. S seems to think I have another disease along with my MS. He mentioned Primary Progressive MS, and he also mentioned Parkinson's Disease. I hope I'm negative for both of those!
We're going to Margate, NJ to celebrate Passover with Arnie's family. Along the way, we are stopping in Philadelphia to visit a friend I met on Facebook. I am so looking forward to seeing Rita in person, along with her little dog Jake. Can't wait to see the family and be with them for the Seder. This will be a pleasant trip for all of us.
by Jodi Bean
I am wearing a pair of shoes.
They are ugly shoes.
Uncomfortable Shoes.
I hate my shoes.
Each day I wear them, and each day I wish I had another pair.
Some days my shoes hurt so bad that I do not think I can take another step.
Yet, I continue to wear them.
I get funny looks wearing these shoes.
They are looks of sympathy.
I can tell in others eyes that they are glad they are my shoes and not theirs.
They never talk about my shoes.
To learn how awful my shoes are might make them uncomfortable.
To truly understand these shoes you must walk in them.
But, once you put them on, you can never take them off.
I now realize that I am not the other one who wears these shoes.
There are many pairs in the world.
Some women are like me and ache daily as they try and walk in them.
Some have learned how to walk in them so they don't hurt quite as much.
Some have work the shoes so long that days will go by
before they think of how much they hurt.
No woman deserves to wear these shoes.
Yet, because of the shoes I am a stronger women.
These shoes have given me the strength to face anything.
They have made me who I am.
I will forever walk in the shoes of a woman who has MS.
Author Unknown
I changed the last line of this poem to "who has MS." It was written for another use but rings so true for people living with MS. As a social worker and as a person I try not to be judgmental or to make assumptions about people. I often say to myself and/or co-workers "until I've walked a day in her shoes I'm not going to judge/assume." I think it is a good motto to live by.I don't know what it is like to live someone else's life. Life is different for everyone. Everyone's journey is different. I walk in my shoes on my journey which has been shaped by MS. I can honestly say that it has greatly impacted everything I do and every decision I now make. But my journey is not a sad journey or an angry journey or even a depressing journey. Yes there are bad days and my future health is unknown. But there are also a lot of good days, great days, happy days, time with family, vacations, time with friends, dinners out, sunny days, good books, funny reality tv shows, laughs, drinks, memories, support, love and HOPE.
My journey is filled with hope. Hope that one day I won't walk my journey in shoes with MS. I hope that one day there will be a cure. I hope that I will continue to be strong and happy and motivated. I hope I will never give up the fight against MS.
This concludes the 87th edition of the Carnival.
The next Carnival of MS Bloggers will be hosted here on May 19, 2011. Please remember to submit a post (via email) from your blog of which you are particularly proud, or which you simply want to share, by noon on Tuesday, May 17, 2011.
Thank you.
Thank you.
Comments for this post.


text:
Fume Unlimited Strawberry
Strawberry Fume Unlimited - The traditional strawberries flavor is a simple flavor that offer great vape taste and rich sweet taste.
Fume Unlimited by QRjoy is here. A spectacular 7000 Puffs powerful and rechargeable disposable vape device that comes with more than 16 flavors to choose from. Unlimited by Fume has a 400mAh rechargeable battery that is guaranteed it will never run out.
Fume is one of the best disposable vape companies in Florida. In addition, the firm is known for introducing new high quality devices in the market. First, the company came with Fume extra. which has 1500 Puffs.
Then, the Fume came with Fume Ultra, a 2500 Puffs device. In addition, the company came with Fume infinity, a 3500 Puffs which is a better choice than HQD Cuvie Plus
Fume Unlimited flavors
The new device initially came with 16 flavors, however, fume will continue to ad more flavors. the first 16 flavors are:
- Banana Ice
Try this yellow banana flavor in this new device. Banana ice is one great flavor that you can vape in any summery hot day. it's refreshing, smooth and amazing.
- Black Ice
Black Ice is a great blend of blackberries and black cherries blended with blueberries and a fine hint of an icy taste.
- Blueberry Mint
The Blueberry mint is a great mixture of yummy blueberries and fresh mint flavor. Try this smooth flavor and you will be just happy.
- Cotton Candy
Enjoy unlimited pleasure of sweetness with the Cotton Candy flavor in this amazing device.
- Grape Ice
A fresh and crisp red grapes flavor in this amazing device will ensure that it will draw a smile on your face.
- Lush Ice
The Lush Ice is one great blend of watermelon and ice. this great combination will offer vapors an amazing taste of fresh watermelons.
- Melon Ice
Try this spectacular melon ice fume with unlimited flavor that will ensure draw a huge smile to your face.
- Mint Ice
Feel the amazing menthol pleasure with this great flavor.
- Peach Ice
Peach Ice is one of the amazing flavors that you will enjoy. specially with adding an icy taste to the peaches
- Pineapple
Amazing pineapples rich taste. a sweet flavor that will take your vape experience to a higher level with this great Pineapple Ice.
- Purple Rain
The Purple Rain Fume Unlimited is one of the top flavors and it is a great blend of different berries mix together such as blueberry and raspberries.
- Rainbow Candy
The rainbow candy is an amazing mix of different of candy fruits.
- Strawberry
The traditional strawberries flavor is a simple flavor that offer great vape taste and rich sweet taste.
- Strawberry Mango
A tropical mangos mix with red crystal strawberries will change your mindset of this great flavor. try this great flavor and you will be just more than happy.
- Strawberry Watermelon
Fantastic mix of fresh watermelons and strawberries. this is one of the top selling flavors by this device.
- Tropical Punch
Super rich mix of different fruits including pineapples , strawberries, and blackberries as well as banana.
Specification of the device
- The Size of the device is: 14ml e-liquid with 5% salt nicotine
- Strength of Nicotine : 5.0%
- Capacity of Battery : 400mAh ( Rechargeable )
- hits Count: 7000+ Puffs


text: Greetings, friends. It is the distinct pleasure of the Board of Commissioners to welcome you to our official website; your portal into the dynamic and expressive world that is all things Trinidad and Tobago Carnival. Without a doubt, Carnival remains one of our nation's greatest gifts, not only to ourselves, but to the entire world as, year after year, various artistic and cultural segments, stakeholders, and the national community work in harmony to stage this, the Greatest Show on Earth.


text:
EcoSox Bamboo Socks are available in multiple styles including quarter style. Our quarter style socks fit comfortably above the ankle, providing more coverage and protection than our no show or low cut styles.
EcoSox are made with viscose fibers derived from sustainable and eco-friendly bamboo that are as soft as silk and as dry as a desert. Along with an arch support that helps fight fatigue and keep the sock in place, most models offer a channeled and padded foot for enhanced air flow and comfort. Wear a pair of EcoSox and feel your feet smile!


text:
The Midnight Library By: Matt Haig
Between life and death there is a library, and within that library, the shelves go on forever. Every book provides a chance to try another life you could have lived. To see how things would be if you had made other choices . . . Would you have done anything different, if you had the chance to undo your regrets? A novel about all the choices that go into a life well lived.
Somewhere out beyond the edge of the universe there is a library that contains an infinite number of books, each one the story of another reality. One tells the story of your life as it is, along with another book for the other life you could have lived if you had made a different choice at any point in your life. While we all wonder how our lives might have been, what if you had the chance to go to the library and see for yourself? Would any of these other lives truly be better?
Nora Seed finds herself faced with this decision. Faced with the possibility of changing her life for a new one, following a different career, undoing old breakups, realizing her dreams of becoming a glaciologist; she must search within herself as she travels through the Midnight Library to decide what is truly fulfilling in life, and what makes it worth living in the first place.


text:
Our Business Philosophy
MyProjectorLamps supplies projector lamps for more than 8000 DLP and LCD projectors. We ship to every country in the world and have physical offices in the United States, Canada, Mexico, Brazil, the Netherlands, Australia, Japan and India. We have customer support in the following languages - English, Spanish, Portuguese, Dutch, French, German, Polish, Japanese, Korean, Italian and Russian. Depending on your region all languages may not be available.
Commitment to Quality
MyProjectorLamps is committed to selling high-quality original projector lamps and bulbs. Our competition often sells aftermarket lamps or third-party lamps. Aftermarket lamps are not manufactured by Philips, Osram or Ushio and often fail within hours of installation and can damage your projector permanently.
Look for this logo on our website to ensure your lamp is original (example).
We also give you the option, when possible, to buy the pre-assembled projector lamp in the plastic housing OR just the bare projector lamp. The projector lamp in housing is a simple one-minute installation and the bare projector lamp takes about 5-10 minutes to install. We provide instructions on how to install both options. The bare projector lamps we sell are typically £30 - £75 cheaper than the projector lamp in module. Look for both options on the website (example).
Lowest Price Promise
We have the best prices in Europe for ORIGINAL manufacturer projector lamps and if we have a higher price we promise to beat any competitors price. All the projector lamps we sell will last 1500-3000 hours and the lamp life hours will be clearly displayed on our product pages. We do not sell used or remanufactured lamps and we caution you about buying lamps from vendors that do.
All of our projector lamps we sell are designed specifically for the projector models outlined on each product page, on the right column in grey (example).
A Guaranteed Buying Experience and Easy Installation
We back-up our products with a 180-Day Guarantee, if your lamp fails to last or you simply need to return it, our policy and website are designed for no hassle.
We ship out installation instructions for every projector lamp we sell.
We ship all of our projector lamps within 24 hours of receiving payment and we accept all major credit cards. If you need to use an alternative mode of payment please use PayPal or wire transfer.
Please feel free to browse the site, search for your lamp, read the blog or ask us sales questions via email.
We look forward to you joining the ranks of our loyal customers!


text:
Version 1.23
There aren't too many beginners interested in the game of Core War these days. Of course, this is quite natural — not that many people would consider optimizing assembly code to be fun anyway — but one reason for the high starting threshold may be the difficulty of finding information on the very basics of the game. True, there are many good documents around, but most of them are either too technical, outdated, too hard to find or simply incomplete.
That is why I decided to write this guide. My aim is to guide newcomers from their very first contact with Core War and Redcode to the point where they can write a working (if not successful) warrior, and are able to proceed to the more technical stuff.
To be honest, I am still a beginner in this game myself. I know the language fairly well, but have yet to produce a really successful warrior. But I decided not to wait until I've gotten more experienced and instead write this guide as soon as possible while I still have a fresh memory of what it's like to be a new player struggling to comprehend the peculiarities of the game.
This guide is intended for the very beginners. No previous knowledge of any assembly language (or programming in general) should be needed, though knowing the general idea should help in understanding the basic terms. Redcode, especially the modern versions, may look like any assembly code, but it is more abstract than most and quite different in details from any other assembly language.
The flavor of Redcode used in this guide is (mostly) the current de facto standard, the ICWS '94 Standard Draft with pMARS 0.8 extensions. (Sort of like the Netscape extensions to HTML... Hmm... Luckily we still don't have a Microsoft Corewar Simulator. Maybe they think the market's too small.) The earlier '88 standard will be mentioned briefly, but this guide is mostly about the '94 standard. For those who want to learn it, there are plenty of '88 tutorials available on the Web.
Important: There is no simple way to teach Redcode — or any programming language — in a strictly linear way. While I've tried to organise this guide into a somewhat sensible order, if you want to skip around, by all means do so. That's what the contents section is for.
To maintain any coherency at all, I've often been forced to show you things and then explain them a few chapters later. If you don't seem to understand something, read on for a while. If you still can't figure it out, try browsing around to see if it's explained in some other chapter.
Everybody learns in a different way, and so any order you decide to read the chapters in is probably better than the one I've chosen. But if you think something is boring and leave it completely unread, the chances are you'll miss some important piece if information. I've tried to mark important parts with emphasis, so you know where to stop and think, but try to read everything carefully. I simply can't spell everything out, or this guide would grow too long to read.
Core War (or Core Wars) is a programming game where assembly programs try to destroy each other in the memory of a simulated computer. The programs (or warriors) are written in a special language called Redcode, and run by a program called MARS (Memory Array Redcode Simulator).
Both Redcode and the MARS environment are much simplified and abstracted compared to ordinary computer systems. This is a good thing, since CW programs are written for performance, not for clarity. If the game used an ordinary assembly language, there might be two or three people in the world capable of writing an effective and durable warrior, and even they wouldn't probably be able to understand it fully. It would certainly be challenging and full of potential, but it'd probably take years to reach even a moderate level of skill.
The system in which the programs run is quite simple. The core (the memory of the simulated computer) is a continuous array of instructions, empty except for the competing programs. The core wraps around, so that after the last instruction comes the first one again.
In fact, the programs have no way of knowing where the core ends, since there are no absolute addresses. That is, the address 0 doesn't mean the first instruction in the memory, but the instruction that contains the address. The next instruction is 1, and the previous one obviously -1.
As you can see, the basic unit of memory in Core War is one instruction, instead of one byte as is usual. Each Redcode instruction contains three parts: the OpCode itself, the source address (a.k.a. the A-field) and the destination address (the B-field). While it is possible for example to move data between the A-field and the B-field, in general you need to treat the instructions as indivisible blocks.
The execution of the programs is equally simple. The MARS executes one instruction at a time,
and then proceeds to the next one in the memory, unless the instruction explicitly tells it to
jump to another address. If there is more than one program running, (as is usual) the programs
execute alternately, one instruction at a time. The execution of each instruction takes the same
time, one cycle, whether it is MOV
or even DAT
(which kills the process).
The number of instructions in Redcode has grown with each new standard, from the original number of about 5 to the current 18 or 19. And this doesn't even include the new modifiers and addressing modes that allow literally hundreds of combinations. Luckily, we don't need to learn all the combinations. It is enough to remember the instructions, and how the modifiers change them.
Here is a list of all the instructions used in Redcode:
— data (kills the process)MOV
— move (copies data from one address to another)ADD
— add (adds one number to another)SUB
— subtract (subtracts one number from another)MUL
— multiply (multiplies one number with another)DIV
— divide (divides one number with another)MOD
— modulus (divides one number with another and gives the
— jump (continues execution from another address)JMZ
— jump if zero (tests a number and jumps to an address if it's
— jump if not zero (tests a number and jumps if it isn't 0)DJN
— decrement and jump if not zero (decrements a number by one, and
jumps unless the result is 0)SPL
— split (starts a second process at another address)CMP
— compare (same as SEQ
— skip if equal (compares two instructions, and skips the next
instruction if they are equal)SNE
— skip if not equal (compares two instructions, and skips the next
instruction if they aren't equal)SLT
— skip if lower than (compares two values, and skips the next
instruction if the first is lower than the second)LDP
— load from p-space (loads a number from private storage
— save to p-space (saves a number to private storage space)NOP
— no operation (does nothing)Don't worry if some of them seem, to put it mildly, weird. As I said, Redcode is quite a bit different from more ordinary assembly languages, which results from its abstract nature.
The truth is, the most important parts of Redcode are the easiest ones. Most of the basic warrior types were invented before the new instructions and modes existed. The simplest, and probably the first, Core War program is the Imp, published by A. K. Dewdney in the original 1984 Scientific American article that first introduced Core War to the public.
Yes, that's it. Just one lousy MOV
. But what does it do? MOV
of course copies an instruction. You should recall that all addresses in Core
War are relative to the current instruction, so the Imp in fact copies itself to the instruction
just after itself.
MOV 0, 1 ; this was just executed MOV 0, 1 ; this instruction will be executed next
Now, the Imp will execute the instruction it just wrote! Since it's exactly the same as the
first one, it will once again copy itself one instruction forward, execute the copy, and continue
to move forward while filling the core with MOV
s. Since the core has no
actual end, the Imp, after filling the whole core, reaches its starting position again and keeps
on running happily in circles ad infinitum.
So the Imp actually creates it's own code as it executes it! In Core War, self-modification is a rule rather than an exception. You need to be effective to be successful, and that nearly always means changing your code on the fly. Luckily, the abstract environment makes this a lot easier to follow than in ordinary assembly.
BTW, it should be obvious that there are no caches in Core War. Well, actually the current instruction is cached so you can't modify it in the middle of executing it, but maybe we should leave all that for the later...
The Imp has one little drawback as a warrior. It won't win too many games, since when it
overwrites another warrior, it too starts to execute the MOV
and becomes an imp itself, resulting in a tie. To kill a program, you'd have to copy a
over its code.
This is just what another classic warrior by Dewdney, the Dwarf, does. It "bombs"
the core at regularly spaced locations with DAT
s, while making sure it won't
hit itself.
ADD #4, 3 ; execution begins here MOV 2, @2 JMP -2 DAT #0, #0
Actually, this isn't precisely what Dewdney wrote, but it works exactly the same way. The
execution begins again at the first instruction. This time it's an ADD
The ADD
instruction adds the source and the destination together, and puts
the result in the destination. If you're familiar with other assembly languages, you may
recognise the #
sign as a way of marking immediate addressing. That is,
the ADD
adds the number 4 to the instruction at address 3, instead of adding
the instruction 4 to the instruction 3. Since the 3rd instruction after the ADD
is the DAT
, the result will be:
ADD #4, 3 MOV 2, @2 ; next instruction JMP -2 DAT #0, #4
If you add two instructions together, both the A- and the B-fields will be added together
independently of each other. If you add a single number to an instruction, it will by default be
added to the B-field. It's quite possible to use a #
in the B-field of
the ADD
too. Then the A-field would be added to the B-field of the ADD
The immediate addressing mode may seem simple and familiar, but the new modifiers in the ICWS '94 standard will give it an entirely new twist. But let's look at the Dwarf first.
The MOV
once again presents us with yet another addressing mode: the
or the indirect addressing mode. It means that the DAT
will not be copied on itself as it seems (what good would that be?), but on
the instruction its B-field points to, like this:
ADD #4, 3 MOV 2, @2 ; --. JMP -2 ; | +2 DAT #0, #4 ; <--' --. The B-field of the MOV points here. ... | ... | +4 ... | DAT #0, #4 ; <------' The B-field of the DAT points here.
As you can see, the DAT
will be copied 4 instructions ahead of it. The
next instruction, JMP
, simply makes the process jump two instructions
backwards, back to the ADD
. Since the JMP
ignores its
B-field I've left it empty. The MARS will initialise it for me as a 0.
By the way, as you see the MARS will not start tracing further chains of indirect addresses. If the indirect operand points to an instruction with a B-field of, say, 4, the actual destination will be 4 instructions after it, regardless of the addressing mode.
Now the ADD
and the MOV
will be executed again.
When the execution reaches the JMP
again, the core looks like this:
ADD #4, 3 MOV 2, @2 JMP -2 ; next instruction DAT #0, #8 ... ... ... DAT #0, #4 ... ... ... DAT #0, #8
The Dwarf will keep on dropping DAT
s every 4 instructions, until it has
looped around the whole core and reached itself again:
... DAT #0, #-8 ... ... ... DAT #0, #-4 ADD #4, 3 ; next instruction MOV 2, @2 JMP -2 DAT #0, #-4 ... ... ... DAT #0, #4 ...
Now, the ADD
will turn the DAT
back into #
, the MOV
will perform an exercise in futility by copying the DAT
right where it already is, and the whole process will start again from the beginning.
This naturally won't work unless the size of the core is divisible by 4, since otherwise the
Dwarf would hit an instruction from 1 to 3 instructions behind the DAT
, thus
killing itself. Luckily, the most popular core size is currently 8000, followed by 8192, 55400,
800, all of them divisible by 4, so our Dwarf should be safe
As a side note, including the DAT
in the warrior wouldn't really have been necessary;
The instruction the core is initially filled with, which I've written as three dots (...
) is actually DAT
0, 0
. I'll continue
to use the dots to describe empty core, since is it shorter and easier to read.
In the first versions of Core War the only addressing modes were the immediate (#
), the direct ($
or nothing at all) and the B-field
indirect (@
) addressing modes. Later, the predecrement addressing mode,
or <
, was added. It's the same as the indirect mode, except that the
pointer will be decremented by one before the target address is calculated.
DAT #0, #5 MOV 0, <-1 ; next instruction
When this MOV
is executed, the result will be:
The ICWS '94 standard draft added four more addressing modes, mostly to deal with A-field indirection, to give a total of 8 modes:
— immediate$
— direct (the $
may be omitted)*
— A-field indirect@
— B-field indirect{
— A-field indirect with predecrement<
— B-field indirect with predecrement}
— A-field indirect with postincrement>
— B-field indirect with postincrementThe postincrement modes are similar to the predecrement, but the pointer will be incremented by one after the instruction has been executed, as you might have guessed.
DAT #5, #-10 MOV -1, }-1 ; next instruction
will after execution look like this:
One important thing to remember about the predecrement and postincrement modes is that the
pointers will be in-/decremented even if they're not used for anything. So JMP
would decrement
the instruction 100 even if the value it points to isn't used for anything. Even DAT
will decrement the addresses in addition to killing the
If you looked at the instruction table a few chapters above closely, you may have wondered
about an instruction named SPL
. There's certainly nothing like that in any
ordinary assembly language...
Quite early in the history of Core War, it was suggested that adding multitasking to the game would make it much more interesting. Since the rough time-slicing techniques used in ordinary systems wouldn't fit in the abstract Core War environment (most importantly, you'd need an OS to control them), a system was invented whereby each process is executed for one cycle in turn.
The instruction used to create new processes is the SPL
. It takes an
address as a parameter in its A-field, just like JMP
. The difference
between JMP
and SPL
is that, in addition to starting
execution at the new address, SPL
also continues execution at the
next instruction.
The two — or more — processes thus created will share the processing time equally.
Instead of a single process counter that would show the current instruction, the MARS has
a process queue, a list of processes that are executed repeatedly in the order in which
they were started. New processes created by SPL
are added just after the
current process, while those that execute a DAT
will be removed from the
queue. If all the processes die, the warrior will lose.
It's important to remember that each program has its own process queue. With more than one program in the core, they will be executed alternately, one cycle at a time regardless of the length of their process queue, so that the processing time will always be divided equally. If program A has 3 processes, and program B only 1, the order of execution will look like:
And finally, a small example of the use of SPL
. More information will be
available in the later chapters.
SPL 0 ; execution starts here MOV 0, 1
Since the SPL
points to itself, after one cycle the processes will be
like this:
SPL 0 ; second process is here MOV 0, 1 ; first process is here
After both of the processes have executed, the core will now look like:
SPL 0 ; third process is here MOV 0, 1 ; second process is here MOV 0, 1 ; first process is here
So this code evidently launches a series of imps, one after another. It will keep on doing
this until the imps have circled the whole core and overwrite the SPL
The size of the process queue for each program is limited. If the maximum number of processes
has been reached, SPL
continues execution only at the next
instruction, effectively duplicating the behaviour of NOP
. In most
cases the process limit is quite high, often the same as the length of the core, but it can be
lower (even 1, in which case splitting is effectively disabled).
Oh, and as for thruth often being stranger than fiction, I recently came across a web page
titled "Opcodes that should've been". Amongst some really absurd ones I found "BBW
— Branch Both Ways". As all the opcodes were supposed to be fictitious, I can only conclude
that the author wasn't familiar with Redcode..
The most important new thing brought by the ICWS '94 standard wasn't the new instructions or
the new addressing modes, but the modifiers. In the old '88 standard the addressing modes alone
decide which parts of the instructions are affected by an operation. For example, MOV
1, 2
always moves a whole instruction, while MOV
1, 2
moves a single number. (and
always to the B-field!)
Naturally, this could cause some difficulties. What if you wanted to move only the A- and
B-fields of an instruction, but not the OpCode? (you'd need to use ADD
) Or what if
you wanted to move something from the B-field to the A-field? (possible, but very tricky) To
clarify the situation, the instruction modifiers were invented.
The modifiers are suffixes that are added to the instruction to specify which parts of the
source and the destination it will affect. For example, MOV
4, 5
would move the A-field of the instruction 4 into the
B-field of the instruction 5. There are 7 different modifiers available:
— moves the A-field of the source into
the A-field of the destinationMOV
— moves the B-field of the source into
the B-field of the destinationMOV
— moves the A-field of the source into
the B-field of the destinationMOV
— moves the B-field of the source into
the A-field of the destinationMOV
— moves both fields of the source into
the same fields in the destinationMOV
— moves both fields of the source into
the opposite fields in the destinationMOV
— moves the whole source instruction
into the destinationNaturally the same modifiers can be used for all instructions, not just for MOV
. Some instructions like JMP
and SPL
, however, don't care about the modifiers. (Why should they? They don't handle
any actual data, they just jump around.)
Since not all the modifiers make sense for all the instructions, they will default to the
closest one that does make sense. The most common case involves the .I
modifier: To keep the language simple and abstract no numerical equivalents have been defined for
the OpCodes, so using mathematical operations on them wouldn't make any sense at all. This means
that for all instructions except MOV
and SNE
(and CMP
which is just an alias for SEQ
) the .I
modifier will mean the same as the .F
Another thing to remember about the .I
and the .F
is that the addressing modes too are part of the OpCode, and are not copied by MOV
We can now rewrite the old programs to use modifiers as an example. The Imp would naturally be
0, 1
. The Dwarf would become:
Note that I've left out the modifiers for JMP
and DAT
since they don't use them for anything. The MARS turns them into (for
example) JMP
and DAT
, but who cares?
Oh, one more thing. How did I know which modifier to add to which instruction? (and, more importantly, how does the MARS add them if we leave them off?) Well, you can usually do it with a bit of common sense, but the '94 standard does defines a set of rules for that purpose.
, but it's ignored.MOV
(but it's ignored for JMP
and SPL
).The defined behavior of the immediate addressing mode (#
) in the '94
standard is quite unusual. While the standard is 100% compatible with the old syntax, the
immediate addressing has been defined in a very clever and unique way that lets it be used
logically with all the instructions and modifiers, and makes it a very powerful tool.
Looking at the modifiers, you might wonder what MOV
7, 10
would do. .F
should move both fields, but there's only one number in the source?? Would it
move 7 into both fields of the destination?
No, it definitely wouldn't. In fact, it would move 7 into the A-field of the destination, and 10 into the B-field! Why?
The reason is that, in the '94 syntax, the source (and the destination) is always a
whole instruction. In the case of immediate addressing, it's simply always the current
instruction, (ie. 0) whatever the actual value. So MOV
7, 10
moves both fields of the source
(0) to the destination (10). Surprising, isn't it?
The same even works for MOV
. This way of
defining immediate addressing also lets us use instructions which, even without modifiers,
wouldn't make sense in the '88 standard such as JMP
. Obviously you can't jump into a number, but you can jump into the
address of that number, or 0. This offers many obvious advantages, since not only can we store
data in the A-field for "free", but the code will survive even if someone decrements it. We could
now rewrite the earlier imp-making code to be a bit more robust:
It still works the same, but now the A-fields are free. Just for fun I've let the SPL
increment the A-field of the imp, so that all the imps will look different.
Since SPL
doesn't use its B-field, that increment is also "free". It works,
trust me — or try it yourself!
You should already know that addresses in the core wrap around, so that the instruction one coresize ahead or behind the current instruction refers to the current instruction itself. But in fact, this effect goes much deeper: all numbers in Core War are converted into the range 0 - coresize-1.
For those of you who already know about programming and limited-range integer math, let's just say that all numbers in Core War are considered unsigned, with the maximum integer being coresize-1. If that didn't clarify everything, read on...
In effect, all numbers in Core War are divided by the length of the core, or coresize, and only the remainder is kept. You might try thinking of a calculator with a display of only 8 numbers that throws off any digits past that, so that 100*12345678 (1234567800, of course) is only shown (and stored) as 34567800. Similarly, in a core of 8000 instructions, 7900+222 (8122) becomes only 122.
What happens to negative numbers, then? They are normalised too, by adding coresize until they become positive. This means that what I wrote as -1 is actually stored by the MARS as coresize-1, or in an 8000 instruction core, as is common, 7999.
Of course, this makes no difference for the addresses, which wrap around anyway. In fact, it
doesn't make any difference to the simple math instructions like ADD
either, since with coresize=8000, 6+7998 gives the same
result of 4 (or 8004) as does 6-2.
What's the problem, then? Well, there are a few instructions where it makes a difference. Such
instructions as DIV
and SLT
always treat numbers as unsigned. This means that -2/2 isn't -1, but (coresize-2)/2 =
(coresize/2)-1 (or for coresize=8000, 7998/2=3999, not 7999). Similarly,
considers -2 (or 7998) to be greater than 0! In fact, 0 is the
lowest possible number in Core War, so all other numbers are considered greater than it.
Ok, your patience has been rewarded. Until now I've given you only some separate pieces of information. Now it's time to tie it all together by describing each instruction to you.
Of course I could've listed them at the very beginning, when I shoved you the instruction set, and it probably would've saved you from a lot of guessing. But I had — at least in my opinion — a very good reason to wait. Not only did I want to show you some practical code before getting into the boring theoretical stuff, but most of all I wanted you to grasp at least the basic idea of addressing modes and modifiers before describing the instructions in detail. If I had described the instructions before the modifiers, I would've had to first teach you the older '88 rules, and later teach it all again with modifiers included. It's not a bad way to learn Redcode, but it'd make this guide unnecessarily complicated.
was intended for storing data, just
like in most languages. Since in Core War you want to minimise the number of instructions,
storing pointers etc. in unused parts of other instructions is common. This means that the most
important thing about DAT
is that executing it kills a process. In fact,
since the '94 standard has no illegal instructions, DAT
is defined as a
completely legal instruction, which removes the currently executing process from the process
queue. Sounds like splitting hairs, maybe, but precisely defining the obvious can often
save a lot of confusion.DAT
, and in fact some MARSes remove them.
However, remember that predecrementing and postincrementing are always done even if the value
isn't used for anything. One unusual thing about DAT
, a relic of the
previous standards, is that if it has only one argument it's placed in the
copies data from one instruction to another. If you don't know
everything about that already, you should probably re-read the earlier chapters. MOV
is one of the few instructions that support .I
, and
that's its default behavior if no modifier is given (and if neither of the fields uses immediate
adds the source value(s) to the destination. The modifiers work
like with MOV
, except that .I
isn't supported but
behaves like .F
. (What would MOV
be?) Also remember that
all math in Core War is done modulo coresize.SUB
, except for one fairly obvious
difference. In fact, all the "arithmetic-logical" instructions work pretty much the
too. If you can't guess what it does,
you've probably missed something very important.DIV
too works pretty much the same as MUL
the others, but there are a few things to keep in mind. First of all, this is unsigned division, which can give surprising results sometimes.
Division by zero kills the process, just like executing a DAT
, and leaves the destination unchanged. If you use DIV
or .X
to divide two numbers
at a time and one of the divisors is 0, the other division will still be done as normal.MOD
applies here too, including the division
by zero part. Remember that the result of a calculation like MOD
depends on the size of the core. For the common
8000-instruction core the result would be 9 (7999 mod 10).JMP
moves execution to the address its A-field points to. The obvious
but important difference to the "math" instructions is that JMP
only cares
about the address, not the data that address points to. Another significant difference is that
doesn't use its B-field for anything (and so also ignores its
modifier). Being able to jump (or split) into two addresses would simply be too powerful, and
it'd make implementing the next three instructions quite difficult. Remember that you can still
place an increment or a decrement in the unused B-field, with luck damaging your opponent's
, but instead of ignoring its B-field,
it tests the value(s) it points to and only jumps if it's zero. Otherwise the execution will
continue at the next address. Since there's only one instruction to test, the choice of
modifiers is fairly limited. .AB
means the same as .B
the same as .A
, and .X
and .I
the same as .F
. If you
test both fields of an instruction with JMZ
, it
will jump only if both fields are zero.JMN
works like JMZ
, but jumps if the value
tested is not zero (surprise, surprise...). JMN
jumps if either of the fields is non-zero.DJN
is like JMN
, but the value(s) are
decremented by one before testing. This instruction is useful for making a loop
counter, but it can also be used to damage your opponent.SPL
into the language was
probably the most significant change ever made to Redcode, only rivalled perhaps by the
introduction of the ICWS '94 standard. SPL
works like JMP
but the execution also continues at the next instruction, so that
the process is "split" into two new ones. The process at the next instruction executes
before the one which jumped to a new address, which is a small but very
important detail. (Many, if not most, modern warriors wouldn't work without it!) If the
max. number of processes has been reached, SPL
works like NOP
. Like JMP
ignores its
B-field and its modifier.SEQ
compares two instructions, and skips the next instruction if they
are equal. (It always jumps only those two instructions forward, since there's no room for a
jump address.) Since the instructions are compared only for equality, using the .I
modifier is supported. Quite naturally, with the modifiers .F
and .I
the next
instruction will be skipped only if all the fields are equal.SNE
and JMN
is an alias for SEQ
. This was the only name
of the instruction before SEQ
and SNE
introduced. Nowadays it doesn't really matter which name you use, since the most popular MARS
programs recognise SEQ
even in '88 mode.SLT
skips the next instruction, this
time if the first value is lower than the second. Since this is an arithmetical comparison
instead of a logical one, it makes no sense to use .I
. It might seem
that there should be an instruction called SGT
, (skip if greater than) but
in most cases the same effect can be achieved simply by swapping the operands of SLT
. Remember that all values are considered unsigned,
so 0 is the smallest possible number and -1 is the largest.NOP
You might notice that two instructions, namely LDP
and STP
are missing. They are a fairly recent addition to the language, and will be
discussed... um, well right now. :-)
P-space is the latest addition to Redcode, introduced by pMARS 0.8. The "P" stands for private, permanent, personal, pathetic and so on, whichever you like. Basically, the P-space is an area of memory which only your program can access, and which survives between rounds in a multi-round match.
The P-space is in many ways different from the normal core. First of all, each P-space
location can only store one number, not a whole instruction. Also, the addressing in P-space is
absolute, ie. the P-space address 1 is always 1 regardless of where in the core the instruction
containing it is. And last but not least, the P-space can only be accessed by two special
instructions, LDP
and STP
The syntax of these two instructions is a bit unusual. The STP
, for
example has an ordinary value in the core as its source, which is put into the P-space field
pointed to by the destination. So the P-space location isn't determined by the destination
address, but by its value, ie. the value that would be overwritten if this were
a MOV
So STP
for example would put the value 4 into the
P-space field 5. Similarly,
would put the value 10 into the P-space field 7, not 3! This can get pretty
confusing if the STP
itself uses indirect addressing, which leads into a
sort of "double-indirect" addressing system.
works the same way, except that now the source is a P-space field and
the destination a core instruction.
The size of the P-space is usually smaller than that of the core, typically 1/16 of the core size. The addresses in the P-space wrap around just like in the core. The size of the P-space must naturally be a factor of the core size, or something weird will happen.
The P-space location 0 is special, in that it is initialised to a special value before each round. This value is -1 for the first round, 0 if the program died in the previous round, and otherwise the number of surviving programs. Thus, for one-on-one matches, 0 means a loss, 1 a win and 2 a tie. This special initialization also means that location 0 cannot be used to pass any other information from one round to the next, since it will be overwritten by the MARS before the next round begins.
There is one little peculiarity in the pMARS implementation of P-space. Since the intention
was to keep access to P-space slow, loading or saving two P-space fields with one instruction
isn't allowed. This is a Good Thing, but the result is at the very least a kludge. What this
actually means is that LDP
and .I
all work like LDP
! (and the same for STP
too, of course)
Absolutely the most common use of P-space is to use it to select a strategy. In its simplest form, this means saving the previous strategy in P-space, and switching strategies if the P-space field 0 shows the program lost last time. This kind of programs are called P-warriors, P-switchers or P-brains (pronounced pea-brains).
Unfortunately, the P-space isn't as private as it seems. While your opponent can't read or
write your P-space directly, your processes may be captured and made execute your opponents code,
including STP
s. This kind of technique is known as brainwashing, and all
P-switchers must be prepared for it, and not freak out if the strategy field contains something
So far, I've written all the addresses in our example programs as instruction numbers, relative to the current instruction. But in larger programs, this can get annoying, not to mention difficult to read. Luckily, we don't really have to do this, since Redcode lets us use labels, symbolic constants, macros and all the other things you'd expect of a good assembler. All we need to do is to label the instructions an refer to them with the labels, and the parser calculates the real addresses for us, like this:
imp: mov.i imp, imp+1
Whoa, what happened? This is exactly the same program as the one I showed you in the very beginning. I've just replaced the numerical addressed with references to a label, "imp". Of course, in this case doing that is pretty futile. The only instruction in which the label is used is "imp" itself, in which the label is replaced by 0.
Before executing it, the parser in the MARS converts all such labels and other symbols into the
familiar numbers. Such a "pre-compiled" Redcode file is called a load file, for
whatever reason. All MARSes must be able to read load files, but some may not have a real parser.
In load file format, the previous code becomes MOV
0, 1
. We could've also written the same code as
imp: mov.i imp, next next: dat 0, 0 ; or whatever
In this case, the instruction labelled "next" is one instruction after "imp", so it's replaced
by 1. Remember that the real addresses are still relative numbers, so the Imp will continue to be
0, 1
even after it has copied
itself forward over "next".
Actually, the :
in the end of the labels isn't really necessary. I've used it
here to help you see where the labels are, but I usually don't use it in my own programs. It's a
matter of taste.
Oh, and just in case you're wondering about it, Redcode instructions are case-insensitive. I like using lower case for the sources since it looks nicer, and upper case only for the compiled, "load file" format (mostly because it's a tradition).
While the examples in previous chapters might compile just fine, they're not really complete programs, but parts of one. A typical redcode file contains some extra information for the MARS.
;redcode-94 org imp imp: mov.i imp, imp+1 end
As you probably have already figured out, everything after a ;
is a
comment in Redcode. The lines on the top of this program, however, aren't just ordinary comments.
The MARS uses them to get some information about the program.
The first line, ;redcode-94
, tells the MARS that this really is a
Redcode file. Anything above this line is ignored by the MARS. Actually, the MARS only expects a
line starting with ;redcode
, but we can use the rest of the
line to identify the flavor of Redcode used. Specially, the KotH
servers read this line themselves, and use it to identify the hill the program is going
The ;name
and ;author
lines just give
some information on the program. Of course you could give it in any format, but using the
specific codes lets the MARS read the names and display them when the program is run.
The line with the word END
— surprise, surprise — ends
the program. Anything after it will be ignored. Together
with ;redcode
, it can be use for example to include Redcode programs in
The line with ORG
tells where the execution of the program should
start. This lets us put other instructions before the beginning of the program. The ORG
command is one of the new things included in the '94 standard. The older
syntax, which still works in modern programs too, is to give the starting address as an argument
to the END
;redcode-94 imp: mov.i imp, imp+1 end imp
Simple, compact, and unfortunately quite illogical. And with long programs, you have to scroll
to the end just to see where it begins. In Redcode terminology, both ORG
and END
are called pseudo-OpCodes.
They look like actual instructions, but they're not actually compiled into the program.
But enough of the Imp. Let's see what the Dwarf would look like in modern Redcode:
;redcode-94 ;(slightly modified by Ilmari Karonen) ;assert CORESIZE % 4 == 0 org loop loop: add.ab #4, bomb mov.i bomb, @bomb jmp loop bomb: dat #0, #0 end
The labels make understanding the program a lot easier, don't they? Notice that I've added two
new comment lines. The ;strategy
line describes the program briefly.
There may be several such lines in the program. Most current MARSes ignore them, so you might as
well use ordinary comments like the one my name is in, but the Hills display the ;strategy
lines to others. Sending the previous program to one, something
like this might be shown:
A new challenger has appeared on the '94 hill! Dwarf by A.K. Dewdney: (length 4) ;strategy Bombs the core at regular intervals. [other info here...]
Another new detail in our example code is the ;assert
line. It can
be used to make sure the program really works with the current settings. The Dwarf, for example,
kills itself if the size of the core isn't evenly divisible by 4. So, I've used the line ;assert
to make sure it always is.
The CORESIZE is a predefined constant which tells us the size of the core. That is,
n+CORESIZE is always the same address as n. The %
is the modulus operator, which gives the remainder in a division. The syntax of the expressions
used in the ;assert
lines and elsewhere in Redcode is the same as in
the C language, although the set of operators is much more limited.
For those who don't know C, here's some sort of a list of the operators which are used in Redcode expressions:
subtraction (or negation)*
modulus (remainder)==
doesn't equal<
is less than>
is greater than<=
is equal or less than>=
is equal or greater than&&
assignment to a variableThe ;assert
is followed by a logical expression. If it's false, the
program will not be compiled. In C, a value of 0 means false and anything else means true. The
logical and comparison operators return 1 for true, a fact which can be useful later.
Typically, ;assert
is used to check that the size of the core is the
one the constants have been designed for, like ;assert
. If the program uses P-space, its existence may be tested with ;assert
. Since our example, the Dwarf, is fairly adaptable,
I only tested the CORESIZE for divisibility, not for a specific size. The Imp, which
runs with any settings, could use ;assert
, ;assert
0 == 0
and so on, all of which always evaluate as true.
This is useful since otherwise the MARS may complain about a "missing ;assert line --
warrior may not work with current settings."
Some of the predefined constants, such as CORESIZE, are defined by the '94 standard, and others may and have been added. pMARS 0.8 should support at least the following:
The predefined constants are useful, and so are labels, but is that really all? Can't I use some variables or something?
Well, Redcode is an assembly language, and they don't really use a lot of variables. But
there's something almost as good, or maybe sometimes even better. There's a pseudo-OpCode EQU
that lets us define our own constants, expressions and even macros. It
looks like this:
step equ 2667
After this, step is always replaced by 2667. There's a catch, however. The
replacement is textual, not numerical. In this case it shouldn't do any harm, but while it makes
a very powerful tool, it can create some problems which C
programmers should be quite familiar with. Let's take an example.
step equ 2667 target equ step-100 start mov.i target, step-target
The A-field of the MOV
would be 2567, just as it should be. But the
B-field would become 2667-2667-100 == -100, not 2667-(2667-100) == 2667-2567 == 100, as it was
probably intended. The solution is simple. Just put parentheses around every expression in EQU
s, such as "target
With the modern versions of pMARS it's possible to use multi-line equ
s, and thus create some sort of macros. The way it's done is this:
dec7 equ dat #1, #1 equ dat $1, $1 equ dat @1, @1 equ dat *1, *1 equ dat {1, {1 equ dat }1, }1 equ dat <1, <1 decoy dec7 dec7 ; 21-instruction decoy dec7
There are a few more features of the pMARS parser left, and this one is perhaps more powerful
(and harder to learn) than any of the above. The FOR
pseudo-OpCodes not only can make your sources shorter and create complex
code sequences easily, but they can be used to create conditional code for different settings.
block begins with — yes, you guessed it — the
, followed by the number of times the block should be repeated. If
there's a label before the block, it will be used as a loop counter, like this:
index for 7 dat index, 10-index rof
The block ends, as you can see, with ROF
. (Much better that the old
clich� NEXT
or REPEAT
, I'd say.) The block above would be parsed by
pMARS into:
It's quite possible to have several FOR
blocks inside each other.
The blocks can even contain EQU
s inside them, which lets us create some
very interesting code. An even more useful feature is that the loop counter can be joined to a
label with the &
-operator. This is most commonly used to avoid declaring labels
twice, but it can be useful for various other purposes as well.
dest01 equ 1000 dest02 equ 1234 dest03 equ 1666 dest04 equ (CORESIZE-1111) jtable ix for 4 jump&ix spl dest&ix djn.b jump&ix, #ix rof
This would, after the FOR
is parsed,
jtable jump01 spl dest01 djn.b jump01, #1 jump02 spl dest02 djn.b jump02, #2 jump03 spl dest03 djn.b jump03, #3 jump04 spl dest04 djn.b jump04, #4
As for what this would be useful for, well, that's up to your own imagination. The only
warriors I've seen using such complex expressions are some quickscanners. The predefined
constants can also be used with FOR
, like
; The main warrior body is here decoy foo for (MAXLENGTH-CURLINE) dat 1, 1 rof end
This fills the remaining space in your warrior with DAT
. Such a decoy can misdirect other warriors' attacks, provided that you've copied
(booted) your own program away from the decoy. Note that I've used foo as a
loop counter even though it isn't used for anything. That's because otherwise the MARS would
consider decoy to be a loop counter instead of the label it should be.
Finally, here's an example of some more creative ways of using FOR
;redcode-94 ;assert CORESIZE == 8000 || CORESIZE == 800 ;assert MAXPROCESSES >= 256 && MAXPROCESSES < 10000 ;assert MAXLENGTH >= 100 org start for 0 This is a for/rof comment block. This will be repeated 0 times, which means that everything here will be ignored by the MARS. This is a perfect place for explaining the complex strategy this warrior uses. rof ;Of course, using ordinary comments is also possible. You can use ;whichever alternative you like. for (CORESIZE == 8000) step equ normalstep ;Since a true comparison returns 1 and a false one 0, this piece of ;code is only compiled if the comparison is true. rof for (CORESIZE == 800) step equ tinystep ;And here we can put optimized constants for the smaller core size. rof for 0 rof ;[Actual code here..]
The problem with the constants defined with EQU
is that they're,
well, constants. Once you've defined them, you can't change their values. This is fine for most
purposes, but it makes a few tricks damn near impossible.
Luckily pMARS provides a few real variables for us to use. Their use is a bit tricky and it's been a long time since I've seen anyone really using them, but they do exist.
The variable names have only one letter, effectively limiting their number to 26 (a
through z). Instead of using EQU
, the variables are assigned
their values with the =
operator. The tricky bit is that, to use the operator, one
has to have an expression. And since pMARS does not recognize the comma operator, it may be
necessary to write dummy expressions.
Still, the variables can be useful. For example, the following auto-generated Fibonacci sequence would probably be impossible without them.
dat #1, (g=0)+(f=1) idx for 15 dat #idx+1, (f=f+g)+((g=f-g) && 0) rof
Note how the expression (g=f-g)
is "hidden" by ANDing it with 0. The system works
because pMARS won't reorder the expression but always evaluates the left side of addition first,
so that when the right side is being computed, f has already been increased.
Okay, I almost forgot. There's one more pseudo-Op left to describe. It's almost never used,
but yes, it's there. The PIN
stands for "P-space Identification
Number". If two programs have the same number as their PIN
, they will
share their P-space. This can be used to provide a sort of inter-process communication and even
cooperation. Unfortunately the strategy doesn't seem to be worth the trouble it takes to create
an affective and fast method of communication. Of course, if you want to try it, go ahead. You
never know if it'll be a success...
If the program has no PIN
, their P-space will always be private.
Even if two programs do share their P-space, the special read-only location 0 is always
If you didn't already know about them, the King of the Hill servers (often called just hills) are continuous Core War tournaments on the Internet. Warriors are sent by e-mail — or entered on a web form — to the server, which pits them agains all the (usually 10-30) programs already on the hill. The program with the lowest total score falls off the hill, and the new warrior will replace it (assuming it got a better score than at least one of the original programs). There are also quite a few variations of this basic setup around, like "infinite" hills, diversity hills, etc.
Note that the hills typically pre-compile the warriors into load files before actually running
them to save time. This can lead to some of the predefined constants, such as
WARRIORS, being incorrect, and thus to mysterious ;assert
There are currently (April 2012) two main KotH servers available:
Also, the Koenigstuhl server hosts 10 "infinite" hills for published warriors. Warriors sent to these hills never get pushed off, so the hills keep getting bigger and bigger. The Koenigstuhl also uses a recursive scoring argorithm that adjusts a warrior's contribution to the scores based on its ranking.
The list above is not meant to be comprehensive, and is likely to become outdated. A more detailed and up-to-date list of active KotH servers can (currently) be found at the corewar.info pages.
operator. Might as well
call this thing "version 1". (May 5, 1997)<DD>
backwards all this time! Fixed. (March 8, 1998)Copyright 1997-2020 Ilmari Karonen.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.