Odyssee — Kampf der Bruderschaft
Eine abenteuerliche Reise durch das Land des bösen Zauberers Saruman.

Bei Odyssee handelt es sich um eine Kombination aus Abenteuer- und Rollenspiel.
Als Auserwählter einer Bruderschaft erhalten Sie den Auftrag, das Land vom Zauberer zu befreien. Sie begeben sich auf die Reise, den Zauberer zu suchen und zu vernichten; dabei werden Sie gefährliche Situationen zu meistern haben, Feinden, aber auch Freunden begegnen.
Vor 20 Jahren hat der mächtige Zauberer Saruman die Herrschaft über das Land Sosaria an sich gerissen. Ihre Bruderschaft ist jedoch nicht länger gewillt, seine Tyrannei noch länger zu erdulden und hat Ihnen den Auftrag gegeben, den Zauberer zu suchen und zu vernichten. Auf Ihrer Reise begegnen Sie vielen Feinden und einigen Ordensbrüdern, aber auch unter diesen gibt es Verräter. Ausgerüstet sind Sie mit 400 Einheiten Kraft, 350 goldenen Münzen und 50 Vorratseinheiten. Sie werden schnell feststellen, daß Sie noch sehr schwach sind, aber es gibt in Dörfern und Städten Kleider, Waffen und Vorräte zu kaufen. Geld bekommen Sie in zahlreichen Kämpfen.
Eingabe und Speicherung
Zuerst muß man den »Creater« eingeben und speichern. Nach dem Starten prüft das Programm, ob alle DATA-Zeilen richtig eingegeben worden sind. Ist dies nicht der Fall, so erscheint eine Fehlermeldung. Stimmen die DATAs, dauert es noch etwa 3,5 Minuten, bis das Programm »World« auf Diskette gespeichert ist. »World« beinhaltet einen neuen Zeichensatz, eine Maschinensprache-Routine zum waagerechten Scrollen des Bildschirms und zirka 16 KByte, die die Landschaft der Odyssee ausmachen.
Die Odyssee ist das Hauptprogramm. Nach Eintippen und Speichern startet man es mit RUN. Zuerst gilt es, sich einen Spieler zu erstellen. Hier kann man 100 Punkte auf Stärke (Strength), Widerstandskraft (Stamina), Intelligenz (Intelligence) und Wissen (Wisdom) verteilen. Die Eingabe der Punkte muß immer zwei Ziffern lang sein. Falls man einmal zuviel Punkte (100) eingegeben hat, werden alle Kriterien wieder auf Null gesetzt, und man beginnt von vorne. Nun entschließt man sich noch zu einem fantasievollen Namen und muß jetzt erst einmal Geduld aufbringen, da man noch ungefähr eine Minute zu warten hat. Diese Wartezeit braucht jedoch nur beim 1. Spiel in Kauf genommen zu werden. Nun erscheint das Titelbild mit dem Hinweis darauf, daß der 2.Teil geladen wird. Ist der Ladevorgang abgeschlossen, kann das Spiel begonnen werden.
Änderungen für Kassette:
- CREATER; Zeile 265 SYS(57812)»WORLD«,1
- ODYSSEE:Die Änderungen stehen im Listing von Zeile 9299—9320
Bewegung der Spielfigur
Die Spielfigur wird ausschließlich über die Tastatur gesteuert. Hier die Belegung der einzelnen Tasten:
@ = Die Spielfigur bewegt sich nach Norden
/ = Die Spielfigur geht nach Süden
; = Die Spielfigur läuft nach Westen
: = Die Spielfigur schreitet nach Osten
A = angreifen (ATTACK)
Im unteren Fenster erscheint ATTACK —. Nun muß man eine Richtungstaste drücken (siehe oben), um dem Computer zu zeigen, in welche Richtung der Befehl zielen soll. Das Programm gibt daraufhin an, ob getroffen worden ist. Dies hängt von der Stärke des Spielers und von seinen Waffen ab. Ist ein Feind besiegt, so erhält man eine Anzahl von Goldstücken und, wenn man Glück hat, einen Matrosenanzug (BLUE TASSLE).
T = verhandeln (TRANSACT)
Nach Eingabe der Richtung, in die verhandelt werden soll, erscheint die Antwort im Textfenster. Falls sich in der angegebenen Richtung niemand aufhält, erscheint die Meldung: »NO RESPONSE«
E = betreten (ENTER)
Mit diesem Befehl kann man in Dörfer und Städte gelangen.
B = Schiff betreten (BOARD SHIP)
Um auf ein Schiff zu gelangen, muß man diesen Befehl benutzen. Man braucht aber einen Matrosenanzug (BLUE TASSLE), damit man von der Besatzung an Bord gelassen wird. Ausnahme ist, wenn man das Schiff in einem Dorf kauft.
X = Das vorher betretene Schiff wird verlassen.
Z = Inventar
Hier wird der Name des Spielers, seine Waffen, seine Kleidung, seine Eigenschaften, seine Kraft und die Sachen (TOOLS), die er bei sich trägt, auf dem Bildschirm angezeigt. Drückt man eine Taste, so dauert es noch einen Moment, bis das Spiel fortgesetzt werden kann.
U =Tür aufschließen (UNLOCK DOOR)
Eine Tür kann geöffnet werden, wenn man den Schlüssel zu ihr besitzt.
G = Zeigt an, wieviel Goldstücke man besitzt.
H = Gibt an, wieviel Kraft (POWER) man noch hat.
F = Zeigt die verbleibenden FOOD-Einheiten.
M = MAGIC MISSILE auslösen
Ein weißes Quadrat läuft über den Bildschirm und tötet alle Feinde und Freunde. Fürjedes Lebewesen erhält man 5 Goldstücke. Man kann es nur einmal benutzen.
R = Neues Spiel (RESTART GAME)
Hiermit kann ein neues Spiel begonnen werden, falls man in einer aussichtslosen Lage ist. Der Computer fragt, ob man sich sicher ist, daß man ein neues Spiel starten möchte. Antwortet man mit »Y«, so kann man sich eine neue Spielfigur erstellen.
Dörfer und Städte
In den Dörfern und Städten des Landes erhält man viele Gegenstände, die zur Lösung der Aufgabe beitragen. In jeder Stadt kann man Waffen und Kleider kaufen. Um seine Vorräte aufzufüllen oder seine Spielsucht zu befriedigen, muß man sich schon in die Dörfer bequemen.
Kauf einer Waffe: Man betritt eine Stadt und geht in den WEAPONSHOP, indem man eine 1 drückt. Aus den vier angebotenen Waffen wählt man sich eine aus, indem man die Ziffer der Waffe drückt. Der Ladeninhaber sagt den Preis, und man kann sich entscheiden, ob man die Waffe kaufen oder lieber seinen Geldbeutel schonen möchte.
Der Kauf eines Kleidungsstücks vollzieht sich genauso, wie der Erwerb einer Waffe.
Kaufen von Nahrung: In einem Dorf betritt man mit 1 den FOODSHOP und erfährt den Preis für 100 FOOD-Einheiten. Der Preisschwanktzwischen 32 und 52 Goldstücken und ist bei jedem Versuch anders. Scheint der Preis annehmbar, so beantwortet man die Frage ob man kaufen möchte mit »Y«, und der Computer zeigt an, wieviel Einheiten FOOD man besitzt.
Hat man einmal nichtgenug Geld, um den geforderten Preis zu bezahlen, erscheint die Fehlermeldung »YOU HAVE NOT ENOUGH MONEY«.
Freunde und Feinde
Zu Ihrem Unglück gibt es viele Ihnen feindlich gesonnene Krieger, die im Dienste des Zauberers stehen, jedoch nur wenige Ordensbrüder, die Ihnen aber wertvolle Dinge geben können. Manche dieser Ordensbrüder stehen Ihnen aber auch mißtrauisch gegenüber, so daß Sie von Ihnen Geheimwörterwissen wollen oder Sie nach Ihrer Intelligenz (INTELLIGENCE) oder nach Ihrem Wissen (WISDOM) beurteilen.
Werden Sie in einen Kampf mit den Feinden verstrickt, so erscheint im Textfenster immer HIT und MISS. HIT bedeutet, daß der Gegner Sie getroffen hat; MISS, daß er verfehlt hat. Wie oft Sie getroffen werden, hängt von der Dauer des Kampfes, IhrerWiderstandsfähigkeit (STAMINA) und Ihrer Kleidung ab.
Sie haben das Spiel verloren, wenn Sie keine Nahrung (FOOD) oder keine Kraft (POWER) mehr haben. FOOD verlieren Sie, wenn Sie durch das Land gehen (pro Schritt 0,2 Einheiten). Kraft verlieren Sie in den Kämpfen, wenn Sie getroffen werden.
Hilfsmittel
Die Hilfsmittel braucht man, um die gestellte Aufgabe zu lösen. Man erhält sie in Kämpfen, Dörfern und Städten und von den Ordensbrüdern. Wenn man »Z« drückt, werden sie unter TOOLS aufgelistet.
BLUE TASSLE: Matrosenanzug
Hat man keinen Matrosenanzug, läßt einen die Besatzung eines Schiffes nicht an Bord. Es erscheint die Meldung »THE CREW DOES NOT ALLOW THIS«.
MAGIC MISSILE: magische Waffe
Mit ihr vernichtet man alle Feinde, leider aber auch alle Freunde, die auf dem Bildschirm zu sehen sind. Für jeden Freund oder Feind erhält man durch diese Tötungsaktion 5 Goldstücke. Man kann sie also dazu benutzen, sich Geld zu verschaffen odereine ÜbermaChtvon Feindenzuvernichten.
KEY: Schlüssel
Braucht man um Türen zu öffnen.
GOLDEN KEY: goldener Schlüssel
Erklärt sich im Spielverlauf
SWIM-WEST: Schwimmweste
Hat man die Schwimmweste, kann man 12 Felder weit schwimmen. Danach löst sie sich in Luft auf.
BOOTS: Schuhe
Trägt man Schuhe, so kann man 2 Felder über felsigen Grund laufen. Danach sind sie verschlissen.
MARK OF FIRE:
Mit MARK OF FIRE kann man durch LAVA gehen.
Verschiedenes
Wie Sie vielleicht bemerkt haben, habe ich drei Einzeiler aus der Ausgabe 11/84 des 64’er Magazins in mein Programm übernommen. Im »Creater« istes die SAVE-Routine für Maschinenspracheprogramme und in der »Odyssee« der Einzeiler zum Kopieren des Basic ins RAM. Der Einzeiler, der die »Odyssee« überhaupt erst ermöglicht hat, ist der zum Feststellen eines Bildschirmbereiches von Peter Eckart.
(Jan Geißelmann/rg)Erläuterung der Grafik
Ohne Hilfsmittel können Sie sich nur auf Gras fortbewegen. Bis auf Steinmauern können alle anderen Hindernisse überwunden werden. Energiemauern nehmen Ihnen 100 POWER-Einheiten ab.
Normales Zeichen | ||
---|---|---|
![]() |
Spielfigur | ! |
![]() |
Der Ordensbruder | " |
![]() |
Der Feind | # |
![]() |
Eine Stadt | $ |
![]() |
Wasser | % |
![]() |
Ein Schiff | & |
![]() |
Ein Dorf | / |
![]() |
Gras | ( |
![]() |
Fels | ) |
![]() |
Lava | + |
![]() |
Energiemauer | * |
![]() |
Zauber Saruman | ↑ |
![]() |
Der dunkle Turm | ← |
![]() |
Mauerstein | ] |
![]() |
Schloß eines Lords | ' |
![]() |
Tür |
Variablen | ||
K | Variable für Kleidung | |
W | Variable für Waffe | |
W$ | augenblickliche Waffe | |
AR$ | augenblickliches Kleidungsstück | |
G | Gold | |
H | Kraft | |
Y | Y-Koordinate Bildschirm | |
T | X-Koordinate Landschaft | |
V | Vergleichsvariable | |
I,X,Z | Laufvariablen | |
p | Bildschirmposition Spielfigur | |
s | Bildschirmposition bei Richtungsangabe | |
Y1 | Y-Koordinate bei Richtungsangabe | |
V1 | Zeichen unter Spielfigur | |
V2 | letztes Zeichen unter Spielfigur | |
G(4) | Kraft der Feinde | |
S%(64) | Sprungadressen der Befehle | |
V$(1,4) | Sachen in Dörfern und Städten | |
W$(2,4) | Waffen und Kleidungsstücke | |
W(2,4) | Preis für Waffen und Kleidungsstücke | |
Speicherbelegung | ||
048—12287 | Basic-Programm | |
12288—16383 | Zeichensatz | |
16384—16695 | Maschinensprache | |
16862—33001 | Landschaft |
10 - 25 | Variablen definieren |
33 — 90 | Bildschirmaufbau |
100 | reagieren auf Tastendruck |
110 — 170 | Angriff der Feinde |
180 | Spielfigur tot |
210 — 230 | Routine für Bewegung |
1000 — 1080 | Befehl ATTACK |
1200 — 1290 | Inventar |
1400 — 1499 | Befehl ENTER |
1700 - 1720 | Neues Spiel |
2100 | Anzeige von FOOD |
2200 — 2297 | Befehle TRANSACT |
2300 - 2360 | Befehl EXIT |
2600 | Anzeige von GOLD |
2800 - 2870 | Befehl BOARD SHIP |
2900 | Anzeige von POWER |
3000 — 3020 | Befehl UNLOCK DOOR |
3600 — 3650 | Befehl MAGIC MISSILE |
4500 — 4540 | Befehl WEST |
4600 — 4610 | Befehl NORTH |
5000 — 5020 | Befehl EAST |
5500 — 5510 | Befehl SOUTH |
9000 - 9197 | Spielfigur erstellen |
9200 — 9300 | Ladebild und Laden von Teil 2 |
15000— 15540 | in Stadt oder Dorf |
16000— 16050 | im Schloß eines Lords |
18000— 18040 | Spiel gewonnen |
60000- 60020 | DATAs |
1 rem *************** 2 rem * odyssee : * 3 rem * * 4 rem * mainprg. * 5 rem *************** 6 : 7 : 8 : 9 ifz=0then9000 10 dimt(4),v$(1,4),w$(1,4),w(2,4),s%(64):ti$="000000":w$="hand":v1=40 15 g=350:y=9:w=3:f=50:t=17061:h=300:forz=1to4:g(z)=5:next:poke12762,0 16 forz=1to27:readz$:next:forz=0to63 17 s%(z)=50:next:s%(64)=100:forz=1to16 18 readi:s%(i)=i*100:next:forz=1to100 21 i=int(rnd(0)*20):x=int(rnd(0)*440+20):ifpeek(17001+(20-i)+x*20)<>40then21 22 poke17001+(20-i)+x*20,35:next:fori=0to1:forz=1to4:readw$(i,z),w(i,z):next:next 23 v$(0,1)="foodshop":v$(0,2)="pub":v$(1,1)="weaponshop":v$(1,2)="armourshop" 24 v$(1,4)="exit the town":poke788,52 25 v$(0,3)="talk to people":v$(1,3)=v$(0,3):v$(0,4)="exit the village" 26 printchr$(147):poke53265,11 33 i=t:forz=1to40:poke16604,i-256*int(i/256):poke16605,int(i/256):i=i+20 34 sys16484:next:poke1043+y*40,33:ifb=5thenpoke1043+y*40,38:poke55296+y*40,14 35 poke 214,20 : sys58640 : print "{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}"; 40 poke53265,155:poke53272,29:goto 90 50 print"illegal command":goto90 60 print"not there":goto90 70 print"no way":goto90 80 print"pass" 90 print"cmd: "; 100 sys16674:p=1043+y*40:i=i+1:ifi<15thenz=peek(197):ta=z*100:goto s%(z) 110 i=0:ifpeek(p-1)=35then160 120 ifpeek(p+1)=35then160 130 ifpeek(p-40)=35then160 140 ifpeek(p+40)=35then160 150 goto100 160 i=int(rnd(0)*18):ifk+a(2)<ithenprint"hit":h=h-int(rnd(0)*5)-1:ifh<1then180 165 ifk+a(2)>i-1thenprint"missed" 170 print"cmd: ";:goto100 180 printn$" is dead":forz=1to10:poke198,0:next:wait198,1:run 210 i=v1:v1=peek(z) 211 ifb=0thenifpeek(z)=40thengoto x 212 ifb=5thenifpeek(z)=37thengoto x 213 ifpeek(z)=41and(spand2)=2then220 214 ifpeek(z)=37and(spand16)=16thensw=sw+1:goto2180 215 ifpeek(z)=37and(spand16)=16thengoto x 216 ifpeek(z)=42thenh=h-100:ifh<0then180 217 ifpeek(z)=42thengoto x 218 ifpeek(z)=43and(spand8)=8thengoto x 219 v1=i:goto70 220 bo=bo+1:ifbo=2thensp=sp-2 230 goto x 1000 print"attack --- ";:goto10000 1010 ifpeek(s)<>35thenprint"miss":goto90 1020 i=int(rnd(0)*20):ifw+a(1)>iorze=5thenprint"hit":ze=0:goto1040 1030 ze=ze+1:print"miss":goto90 1040 print"hit":g(z)=g(z)-1:ifg(z)<1theng(z)=int(rnd(0)*3)+3:goto1060 1050 forz=1to5:poke197,64:next:goto90 1060 i=int(rnd(0)*20):print" killed --- gold found :"i:g=g+i:pokes,40:u=40:p=35 1070 c=c+1:ifc=20thenprint"you get a blue tassle":sp=sp+1 1080 goto2110 1200 ifb=5thenprint"only on foot":goto90 1205 print"{clr}{rvon}"n$:print:print:print:print 1210 forz=1to5:printk$(z);b(z):next 1215 poke214,5:sys58640:printtab(29)"food :"int(f):printtab(29)"gold :"g 1217 printtab(29)"power:"h:print:print 1220 print:print:print"weapon : "w$ 1230 print:print"armour : "ar$ 1240 print:print"tools : "; 1250 i=1:x=0:forz=1to7:if(spandi)=ithenx=x+1:printsp$(z)";"; 1255 i=i*2:next 1260 ifx=0thenprint"no tool":goto1290 1270 print"{left} " 1290 poke198,0:wait198,1:goto26 1400 print"enter --- ";:goto10000 1410 ifpeek(s)=36thena$="a town.":a=1:goto1460 1420 ifpeek(s)=39thena$="a village.":a=0:goto1460 1430 ifpeek(s)=44then16000 1440 ifpeek(s)=31thent=26641:y=15:goto26 1450 goto60 1460 poke53272,21:print"{clr}you have entered "a$;:goto15000 1700 print"restart game --- are you sure ? "; 1710 poke198,0:wait198,1:getz$:ifz$="y"thenprintz$:run 1720 print"n":print"i knew it":goto90 2100 print"food: "int(f):goto90 2110 s=s-1024:i=int(s/40):z=t+(40-(s-i*40))*20-y1:pokez,u:goto90 2160 goto x 2180 ifsw=12thensp=sp-16 2190 goto x 2200 print"transact --- ";:goto10000 2210 print"ok":print"==> ";:ifpeek(s)=34then2215 2211 ifpeek(s)=35thenprint"nice day;today":goto90 2212 print"no response":goto90 2215 ify1=3anda(3)<16then20000 2220 ify1=12anda(5)<10then20010 2225 ify1=10andg<100thenprint"he wants to have 100 golden coins.":goto90 2227 ify1=10theng=g-100:print"he takes 100 coins":print"==> ";:goto2290 2230 ify1=2anda(5)<30then20010 2235 ify1=4anda(5)<20then20010 2240 ify1=13thenprint"he tells you a secret password.":a(5)=10:goto2295 2245 ify1=1thenprint"he gives you magical boots.":sp=spor2:goto2295 2250 ify1=9thenprint"he gives you a golden key":sp=spor32:goto2295 2255 ify1=19and(spand32)=32thenprint"he take the golden key.":sp=sp-32:goto2290 2257 ify1=19thenprint"he wants to have the golden key":goto90 2260 ify1=11thenprint"he gives you a key.":sp=spor6:goto2295 2265 ify1=0anda(4)<17thenprint"wisdom no high enough.":goto20005 2270 ify1=8anda(3)<22then20000 2275 ify1=6thenprint"he gives you a swim-west":sp=spor16:goto2295 2280 ify1=14thenprint"he stoles all your gold":g=0:goto2295 2285 ify1=5thenprint"he gives you a magic missile.":sp=spor4:goto2295 2290 print"you may pass" 2295 forz=1to16:pokes+54272,z:fori=1to50:next:next:u=40:p=34 2297 pokes+54272,13:pokes,40:goto2110 2300 print"exit ";:ifb=0thenprint"what ?":goto90 2305 print"ship --- ";:goto10000 2310 ifpeek(s)<>40then60 2320 y1=y:pokes,33:print"ok":ifs=p-40thens=p-40:y=y-1:goto2360 2330 ifs=p+1thens=p-1:t=t-20:poke16604,(t)and255:poke16605,int(t/256):sys16384:goto2360 2340 ifs=p+40theny=y+1:s=p-40:goto2360 2350 s=p+1:t=t+20:i=t+780:poke16604,iand255:poke16605,int(i/256):sys16484 2360 u=38:b=0:v1=40:goto2110 2600 print"gold: "g:goto90 2800 print"board ship --- ";:goto10000 2810 ifpeek(s)<>38then60 2820 if(spand1)<>1thenprint"no":print"==> the crew does not allow this":goto90 2830 print"ok":b=5:pokep,v1:poke54272+s,14:p=p+1:ifs=p-41theny=y-1:goto2870 2840 ifs=pthent=t-20:poke16604,(t)and255:poke16605,int(t/256):sys16384:goto2870 2850 ifs=p+39theny=y+1:goto2870 2860 t=t+20:i=t+780:poke16604,iand255:poke16605,int(i/256):sys16484:goto2870 2870 u=37:s=p-1:p=38:v1=37:goto2110 2900 print"power: "h:goto90 3000 print"unlock door --- ";:if(spand64)<>64thenprint"no key":goto90 3005 goto10000 3010 ifpeek(s)<>194then60 3020 print"ok":pokes,40:pokes-41,192:goto90 3600 if(spand4)<>4thenprint"no magic missile":goto90 3610 print"magic missile" 3620 forz=1024to1823:i=peek(z+54272):pokez+54272,1 3630 ifpeek(z)<>35andpeek(z)<>34then3640 3635 x=z-1024:n=int(x/40):poket+(40-(x-n*40))*20-n,40:g=g+5:pokez,40 3640 ifpeek(z)=30thengoto18000 3650 pokez+54272,i:next:sp=sp-4:goto90 4500 v2=v1 4505 z=1042+y*40:x=4510:goto210 4510 t=t+20:i=t+780:poke16604,iand255:poke16605,int(i/256):print"west" 4520 sys16484:pokep+1,v2:pokez+1,33+b 4530 f=f-.2:iff<0thenprint"no food --- ";:goto180 4540 goto90 4600 v2=v1:z=1043+y*40-40:x=4610:goto210 4610 print"north":pokez+40,v2:y=y-1:pokez,33+b:goto4530 5000 v2=v1 5005 z=1044+y*40:x=5010:goto210 5010 t=t-20:poke16604,(t)and255:poke16605,int(t/256):print"east":sys16384 5020 pokep-1,v2:pokez-1,33+b:goto4530 5500 v2=v1:z=1043+y*40+40:x=5510:goto210 5510 print"south":pokez-40,v2:y=y+1:poke1043+y*40,33+b:goto4530 9000 poke53280,0:poke53281,0:poke53272,21:printchr$(142),chr$(8):ar$="skin" 9010 poke95,0:poke96,160:poke90,0:poke91,192:poke88,0:poke89,192:sys41919 9020 gosub9500:k$(5)=k$(5)+"00" 9100 print"{clr}{wht}{down}{down}"tab(10)"creating a player":printtab(7)"=-=-=-=-=-=-=-=-=-=-=-=" 9110 print:print:print:forz=1to5:printtab(10);k$(z):a$(z)="":next:i=7:s=0 9115 forz=1to4:poke214,i:sys58640 9120 printtab(25);:poke198,0:wait198,1:getz$ 9130 ifz$=chr$(20)andlen(a$(z))thena$(z)=left$(a$(z),len(a$(z))-1):goto9165 9140 iflen(a$(z))=2thenprint:goto9170 9150 ifasc(z$)<48orasc(z$)>57then9120 9160 a$(z)=a$(z)+z$ 9165 printz$;:goto9120 9170 a(z)=val(a$(z)):s=s+a(z):ifs>100then9100 9175 i=peek(214):poke214,20:sys58640:print"points left : {left}{left}{left}{left}{left}"100-s:next 9180 input"{up}{up}{up}{up}{up}{up}your name ";n$ 9184 ifpeek(2)=0thenforz=57344to65535:pokez,peek(z):next:poke59639,20 9185 gosub9500:a(1)=int(a(1)/5):a(2)=int(a(2)/5):poke2,1:poke1,53 9190 i=43168:pokei,32:pokei+1,192:pokei+2,2:i=704:pokei,32:pokei+1,138 9195 pokei+2,173:pokei+3,76:pokei+4,247:pokei+5,183:printchr$(147) 9197 forz=1to4:b(z)=a(z):next 9200 printtab(12)"{down}{down}{down}{wht}<<< odyssee >>>" 9210 print"{down}"tab(9)"<<< please wait >>>" 9220 printtab(6)"{down}<<< while loading part2 >>>" 9230 printtab(3)"{down}<<< (c) by jan geiszelmann >>>" 9240 print"{down}<<<-------------* 1984 *------------>>>" 9250 printtab(4)"{down}{down}{down}*******************************" 9260 printtab(4)"* *" 9270 printtab(4)"*******************************":print"{up}{up}"tab(6); 9280 forz=1to27:readz$ 9290 forx=1to100:next:ifz$="x"thenprint" ";:next 9295 printz$;:next 9297 load"world",8,1 9299 rem fuer datasette : zeile 9297 loeschen und zeile 9300-9320 eingeben 9300 print:print:print:print"{blk}load"chr$(34)"world"chr$(34)",1,1{wht}{up}{up}";:poke631,13 9310 poke632,90:poke633,61:poke634,49:poke635,58:poke636,71:poke637,111 9320 poke638,49:poke639,13:poke198,10:end 9500 k$(1)="strenght.......":k$(2)="stamina........":k$(3)="intelligence..." 9510 k$(4)="wisdom.........":k$(5)="passwords......":sp$(1)="blue tassle" 9520 sp$(2)="boots":sp$(3)="magic missile":sp$(4)="mark of fire" 9530 sp$(5)="swim-west":sp$(6)="golden key":sp$(7)="key":return 10000 poke198,0:wait198,1:getz$ 10010 ifz$="@"thens=p-40:print"north -- ";:z=1:y1=y-1:gotota+10 10020 ifz$=":"thens=p-1:print"west --- ";:z=2:y1=y:gotota+10 10030 ifz$=";"thens=p+1:print"east --- ";:z=3:y1=y:gotota+10 10040 ifz$="/"thens=p+40:print"south -- ";:z=4:y1=y+1:gotota+10 10050 goto80 15000 poke214,3:sys58640:print:v=1 15010 ify1=9thenv$(a,3)="buy a boat":v$(a,2)="talk to people":v=2 15020 ify1=1thenv=3 15030 ify1=17thenv$(a,3)="buy the mark of fire":v=4 15100 i=1:forz=1to4:printi"{left}.) "v$(a,z):i=i+1:next:print"{down}{down}what do you want ? "; 15110 poke198,0:wait198,1:getz$:ifval(z$)<1orval(z$)>4then15110 15120 printz$:print:print:onval(z$)goto15125,15127,15128,15370 15125 x=0:ona+1goto15230,15130 15127 x=1:ona+1goto15276,15130 15128 onvgoto15200,15330,15276,15400 15130 forz=1to4:printz"{left}.) "w$(x,z):next:print"{down}{down}your interest ? "; 15150 poke198,0:wait198,1:getz$:printz$:ifval(z$)<1orval(z$)>4then1460 15160 z=val(z$):print"{down}the "w$(x,z)" cost you"w(x,z)"{left}. ok ? ";:u=15170:goto15530 15170 i=w(x,z):u=15180:goto15500 15180 g=g-i:print"{down}ok!":ifx=0thenw$=w$(0,z):w=3+z*2:goto15520 15190 ar$=w$(1,z):k=z*2+1:goto15520 15200 print"the people here do not know anything.":goto15520 15230 p=int(rnd(0)*20)+32:print"100 food units cost you"p"{left}. ok ? "; 15235 u=15240:goto15530 15240 i=p:u=15250:f=f+100:goto15500 15250 print"{down}now you have"int(f)"food units":g=g-p:goto15520 15276 ifv<>2andv<>3then15280 15277 print"they tell you a secret password.":b(5)=v*10:goto15520 15280 p=int(rnd(0)*75)-50:ifg=0thenprint"no money !":goto1460 15282 print"gambling ...":forz=1to1000:next:i=0:u=15285:goto15500 15285 ifp<0thenprint"i'm sorry but you have lost";:goto15310 15290 ifp>0thenprint"ohh. you have won";:goto15312 15300 goto15282 15310 ifsgn(p)*p>gthenp=-1*g 15312 printp*sgn(p)"!"::g=g+p:goto15520 15315 goto15520 15330 print"{down}the boat cost 100 coins ! ok ? ";:u=15340:goto15530 15340 i=100:u=15350:goto15500 15350 g=g-100:y=9:b=5:t=21101:ri=0:v1=37:forz=1to500:next 15370 poke53272,29:goto23 15400 print"the mark of fire cost 50 ! ok ? ";:u=15410:goto15530 15410 u=15420:i=50:goto15500 15420 sp=spor8:g=g-i:goto15520 15500 ifg<ithenprint"{down}you have not enough money !":forz=1to500:next:goto1460 15510 goto u 15520 forz=1to700:next:goto1460 15530 poke198,0:wait198,1:getz$:ifz$<>"y"thenprint"n":goto15520 15540 printz$:goto u 16000 print"{clr}you have entered the castle of a lord" 16010 print"{down}{down}for 50 coins you get 1000 units of power" 16020 print"do you want ? "; 16030 poke198,0:wait198,1:getz$:ifz$<>"y"thenprint"n":forz=1to200:next:goto26 16040 ifg<50thenprint"you have not enough money":goto26 16050 printz$:forz=1to200:next:g=g-50:h=h+1000:goto26 18000 forz=1to16:fori=1to16::poke53280,i:next:poke53281,z:next 18010 print"{clr}congratulations "n$ 18020 a$="{down}{down}{down}you have managed it to destroy the dark tower and to kill the" 18030 a$=a$+" wizard saruman.thepeople living in sosaria have made you to " 18035 a$=a$+"their new king for the next 20 years.{down}{down}{rvon} end of report {down}{down}" 18040 forz=1to183:printmid$(a$,z,1);:fori=1to150:next:next:end 20000 print"you are not intelligent enough" 20005 printtab(4)"so that you may pass.":goto90 20010 print"you do not know the secret password.":goto90 60000 dataa,x,f,a,n,t,a,s,y,x,r,o,l,e,x,p,l,a,y,i,n,g,x,g,a,m,e 60010 data10,12,14,17,22,23,28,30,36,45,46,50,55,26,21,29,dagger 60020 data 50,axe,80,bow,100,gun,150,cloth,50,leather,80,chain,100,shield,150
1 rem *************** 2 rem * odyssee : * 3 rem * * 4 rem *world-creater* 5 rem *************** 6 : 7 : 8 : 9 poke53280,0:poke53281,0 10 : 11 : 12 poke53280,0:poke53281,0:print"{clr}{wht}"tab(12)"<<< odyssee >>>{down}" 13 printtab(9)"<<< world-creater >>>" 14 printtab(6)"{down}<<< please wait 3.5 min >>>" 15 print"{down}{down}=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=" 16 poke214,20:sys58640:print"=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=" 17 poke214,9:sys58640:printtab(6)"verifying datas ..." 18 forz=1to255:readi:s=s+i:next:ifs<>25150thenb=1:goto25 19 s=0:forz=1to255:readi:s=s+i:next:ifs<>35192thenb=2:goto25 20 s=0:forz=1to255:readi:s=s+i:next:ifs<>24056thenb=3:goto25 21 s=0:forz=1to255:readi:s=s+i:next:ifs<>34311thenb=4:goto25 22 s=0:forz=1to255:readi:s=s+i:next:ifs<>29496thenb=5:goto25 23 s=0:forz=1to28:readi:s=s+i:next:ifs<>2922thenb=6:goto25 24 goto26 25 print"error in block"b:end 26 restore:printtab(6)"{down}defining new tokens ..." 27 forz=51200to51252:readx:pokez,x:s=s+x:next 28 s=0:sys51200:forz=12520to12647:readx:pokez,255-x:next:print 29 printtab(6)"creating the world ...{down}" 30 fori=16862to17420:pokei,37:next 31 fori=17421to26161:pokei,40:next 32 fori=26162to30008:pokei,37:next 33 fori=26645to28006:pokei,40:next 34 forz=30008to32014:pokez,40:next 35 forz=32015to33001:pokez,41:next 36 readz1,s1:ifz1=-1thenp=s1:goto36 37 ifz1=-2then43 38 ifz1=-3thenm=1:goto36 39 ifm=1thenpoke17001+(20-z1)+s1*20,p:goto36 40 readz2,s2:z1=z1-1:z2=z2-1:ifz1=z2then42 41 fori=17001+(20-z1)+s1*20to17001+(20-z2)+s2*20:pokei,p:next:goto36 42 fori=17001+(20-z1)+s1*20to17001+(20-z2)+s2*20step20:pokei,p:next:goto36 43 readz1,s1:ifz1=-2then47 44 p=17001+(20-z1)+s1*20:forz=ptop+120step20:pokez,41:next:p=p+39 45 forz=ptop+40step20:pokez,41:next:p=p+2:forz=ptop+40step20:pokez,41:next 46 goto43 47 readz1,s1:ifz1=-2then50 48 p=17001+(20-z1)+s1*20:forz=ptop+6:pokez,41:next:p=p-18:forz=ptop+2:pokez,41 49 next:p=p+40:forz=ptop+2:pokez,41:next:goto47 50 printtab(6)"reading assembler-data ...":forz=16384to16695:readi:pokez,i:next 51 printtab(6)"{down}saving ..." 52 sys(57812)"@:world",8 53 poke193,0:poke194,48:poke174,73:poke175,129:sys62957:end 54 rem ***** block 1 ***** 55 data120,165,1,72,41,251,133,1,169,208,133,3,169,48,133,5,160,0,132,2,132,4 56 data162,32,177,2,145,4,200,208,249,230,3,230,5,202,208,242,104,133,1,173,24 57 data208,41,241,9,12,141,24,208,88,96 58 data129,129,129,255,24,24,24,255,24,153,153,126,24,60,36,36,219,219,255,255 59 data231,195,195,195,255,255,255,255,255,255,255,255,184,185,162,252,144,184 60 data168,168,152,152,254,153,152,188,164,164,56,57,18,60,56,48,40,40,231,189 61 data231,66,66,231,189,231,0,48,75,132,0,48,75,132,32,60,62,62,62,153,255,62 62 data32,114,119,7,64,228,238,14,64,0,2,16,0,128,4,0,65,78,8,168,7,182,144,18 63 data255,0,255,0,255,0,255,0,198,99,120,0,108,6,48,3,195,195,255,255,255,231 64 data195,195,-1,37,16,21,11,21,15,22,12,22,15,23,13,23,15,24,13,24,16,25,13 65 data25,17,26,14,26,18,27,15,27,16,28,16,52,15,39,15,41,17,28,17,54,18,28,18 66 data38,18,42,18,58,17,58,17,61,18,61,18,63,19,63,19,65,5,21,2,21,20,457,13 67 data457,13,135,1,135 68 rem ***** block 2 ***** 69 data13,136,1,136,13,134,10,134,12,133,11,133,13,137,10,137,12,138,11 70 data138,3,223,1,223,6,224,1,224,20,225,1,225,16,226,4,226,14,227,7,227,20 71 data224,15,224,20,223,17,223,9,282,9,284,10,281,10,285,11,281,11,285,12,282 72 data12,284,1,311,1,313,9,312,2,312,9,313,2,313,9,314,2,314,20,311,16,311,20 73 data312,13,312,20,313,13,313,15,314,13,314,-1,242,10,311,10,315,12,311,12 74 data315,-1,42,20,423,1,423,20,424,1,424,15,439,3,439,15,455,3,455,3,440,3 75 data454,12,401,6,401,12,403,6,403,11,451,7,451,11,443,7,443,7,444,7,450,11 76 data444,11,450,-1,41,19,66,19,112,18,112,18,137,18,138,16,138,16,139 77 data16,147,18,148,16,148,4,229,1,229,4,227,4,228,6,399,1,399,6,405,1,405,8 78 data400,6,400,8,404,6,404,9,416,1,416,20,416,12,416,3,414,3,415,14,414,14 79 data415,18,411,8,411,10,408,10,410,14,39,5,39,3,39,1,39,7,41,2,41,7,42,7,43 80 data9,41,9,53,15,42,11,42,11,43,11,44,13,46,9,46,15 81 rem ***** block 3 ***** 82 data48,11,48,13,50,9,50,15 83 data52,11,52,12,53,11,53,2,43,2,54,3,49,3,50,5,43,5,52,4,52,4,60,2,60,2,66,7 84 data45,7,57,6,54,6,60,3,56,2,56,16,58,16,59,15,54,15,58,14,55,9,55,8,58,8,61 85 data9,58,9,61,13,59,11,59,14,60,11,60,12,62,4,62,14,61,14,66,10,63,10,64,13 86 data64,12,64,17,70,13,70,14,71,13,71,18,72,14,72,15,73,14,73,12,73,1,73,6,72 87 data3,72,2,68,1,68,17,62,17,66,18,64,18,66,17,68,10,68,15,65,15,67,3,65,3,66 88 data4,64,4,69,8,70,2,70,9,71,8,71,11,69,11,72,13,66,9,66,8,64,8,69,6,64,6,68 89 data15,57,8,57,12,370,8,370,12,366,8,366,12,367,12,369,8,367,8,369,-1,42,12 90 data487,12,516,13,487,13,516,15,440,15,454,-1,43,20,382,1,383,20,383,1,383 91 data8,384,1,384,4,381,1,381,-1,29,40,486,1,486,40,518,1,518,1,486,1,518,19 92 data486,19,518,5,500,5,508,6,500,6,508,11,501,7,501,2,486,2,518,20,486 93 rem ***** block 4 ***** 94 data20,518,10,500 95 data7,500,11,507,7,507,10,508,7,508,11,502,11,507,-1,37,3,509,3,516,4,509 96 data4,516,5,515,5,600,6,515,6,600,7,515,7,600,8,509,8,516,9,509,9,516,7,509 97 data5,509,9,510,5,510,-1,38,5,511,5,514,6,511,6,514,7,511,7,514,-3,0 98 data-1,41,0,54,3,43,3,47,14,61,15,63,2,60,7,53,-1,36,17,23,7,105,1,227,-1 99 data39,9,223,16,56,3,360,-1,31,8,447,-1,44,1,402,-1,41,7,283,12,283,6,64 100 data-1,34,3,39,12,73,2,43,4,64,6,65,19,66,11,67,14,71,10,311,8,402,13,56 101 data5,748,1,77,9,368,0,60,-1,30,7,504,-1,242,2,507,-1,194,3,507 102 data-2,0,4,102,10,102,2,160,7,160,12,160,17,160,4,200,17,200 103 data9,244,7,274,12,274,7,286,12,286,-2,0 104 data10,97,10,113,12,247,13,201,13,205,19,211,6,211,6,244,19,244,6,250,19 105 data250,12,241,12,253,6,283,19,283,-2,0 106 data169,4,141,37,64,141,40,64,162,1,142,36,64,142,42,64,202,142,39,64,142 107 data45,64,169,216,141,43,64,141 108 rem ***** block 5 ***** 109 data46,64,162,21,160,0,185,33,7,153,32,7,185 110 data33,219,153,32,219,200,192,39,208,239,202,208,5,169,0,76,200,64,173 111 data36,64,105,39,144,12,238,37,64,238,40,64,238,43,64,238,46,64,141,36 112 data64,141,42,64,141,39,64,141,45,64,206,45,64,206,39,64,76,33,64,169,3 113 data141,137,64,141,140,64,162,255,142,139,64,142,145,64,202,142,136,64 114 data142,142,64,169,215,141,143,64,141,146,64,162,21,160,40,185,30,7,153 115 data31,7,185,30,219,153,31,219,136,192,1,208,239,202,208,5,169,1,76,200 116 data64,173,136,64,105,39,144,12,238,137,64,238,140,64,238,143,64,238,146 117 data64,141,136,64,141,139,64,141,142,64,141,145,64,238,139,64,238,145,64 118 data76,133,64,240,5,169,0,76,209,64,169,39,141,223,64,169,4,141,224,64 119 data162,20,189,101,70,141,32,7,72,173,223,64,141,254,64,173,224,64,24,105 120 data212,141,255,64,104,201,37,208,5,169,14,76,253,64,169,13,141,248,218 121 data173,223,64,24,105,40,144,14,238,224,64,141,223,64,160,40,140 122 rem ***** block 6 ***** 123 data5,65,76 124 data30,65,141,223,64,160,40,140,5,65,202,208,186,96,160,0,162,8,189,40 125 data49,140,15,3,42,234,109,15,3,157,40,49,202,208,239,96 126 : 127 : 128 : 129 ******************************** 130 * o d y s s e e * 131 * * 132 * w r i t t e n b y * 133 * * 134 * j a n g e i s z e l m a n n * 135 * * 136 * 1 9 8 4 * 137 ******************************** 138 * josef-roemer strasse 17 * 139 * * 140 * 5060 bergisch gladbach 2 * 141 * * 142 * telefon : 02202 / 53256 * 143 ********************************