CORE WARS (Wojny rdzeniowe)¢Niniejszy opis jest fragmentem artykuu¢W. Zientary zawartego w numerze 6/91¢"Mojego Atari"¢¢1. Zasady¢¢W "Wojnach rdzeniowych" rozgrywka toczy¢si❎ mi❎dzy dwoma programami napisanymi¢przez zawodnikw. Najciekawsz⇧ i naj-¢trudniejsz⇧ faz⇧ gry jest uoəenie¢programu, ktry b❎dzie w stanie pokona⇨¢program przeciwnika. Po wprowadzeniu¢do pami❎ci programw zostaje juə tylko¢obserwacja tocz⇧cej si❎ bitwy i oczeki-¢wanie na zwyci❎stwo jednego z graczy.¢ Polem walki jest obszar pami❎ci¢zamkni❎ty w p❎tl❎ bez koca. przekro-¢czenie przez jeden z programw koca¢tego obszaru powoduje pojawienie si❎ go¢ na pocz⇧tku i odwrotnie.¢Walcz⇧ce programy s⇧ umieszczone loso-¢wo w pami❎ci komputera i na przemian¢wykonywane. Podczas wykonywania progra-¢my mog⇧ przemieszcza⇨ si❎ w pami❎ci i¢dzieli⇨. Je③li w przypadaj⇧cej na niego¢ kolejno③ci program nie moəe by⇨¢prawidowo wykonany, to zostaje¢zniszczony.Gracz, ktry straci wszy-¢stkie programy przegrywa.¢Programy wojenne s⇧ napisane w specja-¢lnym j❎zyku zwanym "Redcode". Do ich¢tworzenia moəna wykorzysta⇨ dowolny¢edytor tekstowy(np. Panther). Program¢wojenny musi by⇨ zapisany w postaci¢pliku na dysku, sk⇧d jest odczytywany¢przez gr❎.¢¢2.REDCODE¢¢J❎zyk Redcode zosta w wersji dla¢naszego komputerka nieco uproszczony,¢w stosunku do standartu, co zostao¢wymuszone niewielk⇧ ilo③ci⇧ pami❎ci.¢J❎zyk ten zawiera 10 rozkazw:¢¢DAT - rozkaz zawieraj⇧cy wy⇧cznie dane¢i niemoəliwy do wykonania(prba taka¢niszczy program);¢¢MOV - przepisz zawarto③⇨ komrki A do¢komrki B, a je③li A jest dan⇧ to¢utwrz w komrce B rozkaz DAT;¢¢ADD - dodaj argumenty A i B a wynik¢umie③⇨ w komrce B;¢¢SUB - odejmij argumenty A i B, a wynik¢umie③⇨ w komrce B;¢¢JMP - skocz do komrki okre③lonej przez¢argument;¢¢JMZ - skocz do komrki okre③lonej przez¢argument A, gdy zawarto③⇨ komrki B¢jest rwna zero;¢¢JMN - skocz do komrki okre③lonej przez¢argument A, gdy zawarto③⇨ komrki B¢jest rəna od zera;¢¢DJN - zmniejsz o jeden argument B i¢skocz do komrki okre③lonej przez¢argument A, gdy wynik jest roəny od¢zera;¢¢CMP - porwnaj zawarto③ci A i B, a¢je③li s⇧ rəne to opu③⇨(przeskocz)¢nast❎pny rozkaz¢¢SPL - podziel si❎ na cz❎③ci: jedn⇧¢wykonywan⇧ od nast❎pnego rozkazu i¢drug⇧ wykonywan⇧ od rozkazu wskazanego¢przez argument.¢¢Argumentami rozkazw mog⇧ by⇨ wy⇧cznie¢liczby okre③laj⇧ce dane i adresy.¢Adresy s⇧ podawane wzgl❎dnie, czyli¢licz⇧c od rozkazu, ktry zawiera dany¢adres. Dane czyli liczby uəywane¢bezpo③rednio, a nie jako adresy oznacza¢si❎ znakiem "#". Np.:¢¢MOV 10 20¢¢oznacza przepisanie zawarto③ci komrki¢odlegej od tego rozkazu o 10 do¢komrki, ktrej adres znajduje si❎ w¢komrce odlegej o 20, a¢¢MOV #10 20¢¢oznacza umieszczenie w komrce, ktrej¢adres jest odlegy o 20, liczby 10.¢Ponadto dopuszczane jest stosowanie w¢argumentach znakw "<", ">", "@".¢Oznaczaj⇧ one dodanie do warto③ci¢argumentu pobranego ze wskazanej¢komrki odpowiednio warto③ci -1, 1 lub¢0. Rozkaz:¢¢MOV 10<20¢¢oznacza przepisanie zawarto③ci komrki¢odlegej o 10 do komrki, ktrej¢aderesem jest zmniejszona o 1 zawarto③⇨¢komrki odlegej o 20.¢W odrənieniu od innych wersji REDCODE,¢na Atarce nie moəna stosowa⇨ etykiet i¢wszystkie adresy i dane musz⇧ by⇨¢podawane bezpo③rednio liczbami. Of coz¢uəycie liczby ujemnej nakazuje¢odliczanie wstecz od rozkazu, ktry j⇧¢zawiera.¢¢3. GRA¢¢Dziaanie programw wojennych¢nadzorowane jest przez program o nazwie¢MARS( Memory Array Redcode Simulator ).¢Program, ktrego listing znajduje si❎ w¢w/w pi③mie. Powinien by⇨ rozpowsze-¢chniany z niniejszym plikiem.¢¢W celu rozpocz❎cia gry naleəy uruchomi⇨¢program MARS. Nast❎pnie podaje si❎¢nazwy plikw zawieraj⇧cych wybrane¢programy wojenne. Zostan⇧ one odczytane¢i rozpoczn⇧ walk❎. Batalia toczy si❎,¢aə do skutku , czyli do momentu, gdy¢jeden z programw zostanie cakowicie¢zniszczony. Jeəeli trzeba przerwa⇨ gr❎¢, wystarczy nacisn⇧⇨ BREAK.¢¢Program przystosowany jest do wsp-¢pracy zarwno ze s tacj⇧ dyskw jak i¢ magnetem. Aby zaadowa⇨ jaki③ program¢trzeba poda⇨ s pecyfikacj❎ oraz w¢przypadku stacji oczywi③cie nazw❎¢programu wojennego.¢¢4 PROGRAMY WOJENNE¢¢Poniewaə napisanie wasnego progu¢wojennego moəe sprawi⇧⇨ pewne trudno③ci¢to do pakietu powinne by⇨ do⇧czone¢przykadowe programy wojenne(*.CW):¢¢SKOCZEK - skada si❎ tylko z jednego¢rozkazu. Kopiuje on samego siebie do¢nast❎pnej komrki pami❎ci i w ten¢sposb systematycznie "zadeptuje" jej¢zawarto③⇨;¢¢BLI`NIAKI - w❎druj⇧ po pami❎ci kopiuj⇧c¢si❎ do obszaru pooəonego o 100 komrek¢dalej;¢¢KARZE{ - prbuje "upolowa⇨" przeciwnika¢strzelaj⇧c w co 5 komrk❎ pami❎ci;¢¢ZMIENIACZ - trudny przciwnik, ktry¢dzieli si❎ podczas walki na cz❎③ci o¢odmiennym dziaaniu¢¢KOPIER - dzieli si❎ na cz❎③ci, ktre¢rozrzucane s⇧ po caym obszrze pami❎ci;¢¢ROBAK - gro♪ny, cho⇨ powolny przciwnik.¢Posuwa si❎ on powoli do przodu¢kontroluj⇧c przy tym swj "ogon",¢dzi❎ki czemu unika "zdeptania" od tyu.¢¢SKOCZEK ZBROJNY - odmiana Skoczka,¢ktra dzieli si❎ co 200 kolejek tworz⇧c¢nowego Skoczka.¢¢BLI`NIAKI ZBROJNE - analogicznie jak¢Skoczek zbrojny ale efektem podziau s⇧¢rosn⇧ce zast❎py Bli♪niakw.¢¢5 ROZKAZY REDCODE(zestawienie)¢¢symbol rozkaz argumenty operacja¢------ ------ --------- --------¢ 0 DAT A dane¢ 1 MOV A B przepisz¢ 2 ADD A B dodaj¢ 3 SUB A B odejmij¢ 4 JMP A skocz¢ 5 JMZ A B skocz gdy 0¢ 6 JMN A B skocz gdy nie 0¢ 7 DJN A B zmniejsz i¢ skocz gdy nie 0¢ 8 CMP A B porwnaj¢ 9 SPL A podziel si❎¢¢¢¢ Wklepa: McMaster¢ ----------¢