====== ETHERNET ====== {{:otros:Ethernet_p1.jpg?690|}} ===== Info ===== ^ Author | Tim Barnes | ^ Computer | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | 1988 | ^ Gender | Arcade | ^ Controls | Keyboard | ^ Languages | English | ^ Status | [[preserved|Preserved]] | ===== Screenshots ===== {{:otros:Ethernet_screenshot01.png?220}} {{:otros:Ethernet_screenshot02.png?220}} {{:otros:Ethernet_screenshot03.png?220}} {{:otros:Ethernet_screenshot04.png?220}} ===== Descripction ===== The game starts on a 12x11 grid and the idea is to stay alive while being surrounded by an increasing number of threatening symbols including a skull. We can move in a straight line, even going off the edge of the screen, appearing on the opposite side. If we do not want to move, just press return. The symbols move around the screen and will try to surround us making it game over when they succeed. We can find some treasures on the screens like numbers or diamonds or kill one of our assassins. Our mission will be to avoid being killed by one of the assassins who can kill us in a square adjacent to ours. Another opportunity we have is to push one of the slaves. Quite a compulsive game. ===== Listing ===== * **__Listing 1 - SETUP.BAS__** 10 MEMORY &HBFFE: FOR h=&HC070 TO &HC098:READ p:POKE h,p:NEXT 20 FOR c=160 TO 187:POKE &HC099,c 30 FOR r=1 TO 8:READ binary(r):POKE &HC099+r,(binary(r)):NEXT r 40 cl=&HC070:CALL cl:NEXT c 50 DATA 243,62,129,211,241,62,130,211,242,175,95,103,22,184,58,153,192,111,41,41 60 DATA 41,25,17,154,192,235,1,8,0,237,176,62,133,211,241,62,134,211,242,251,201 70 DATA 0,32,0,2,2,0,32,0,0,8,0,128,128,0,8,0 80 DATA 10,41,169,170,186,42,10,0,240,252,206,254,126,188,240,0 90 DATA 85,131,135,131,131,131,85,0,84,130,130,130,130,130,84,0 100 DATA 85,143,156,129,135,159,85,0,84,226,114,226,130,242,84,0 110 DATA 85,143,156,129,156,143,85,0,84,226,114,226,114,226,84,0 120 DATA 3,15,58,251,58,15,3,170,129,225,185,191,185,225,129,170 130 DATA 31,195,192,243,192,195,31,85,224,12,12,60,12,12,224,85 140 DATA 249,225,7,86,7,225,249,85,62,14,192,212,192,14,62,85 150 DATA 0,31,57,63,29,7,0,170,1,241,153,249,113,193,1,170 160 DATA 229,249,206,195,200,192,255,85,84,68,84,148,228,56,252,85 170 DATA 255,213,213,215,220,240,255,85,252,118,198,6,6,6,254,85 180 DATA 253,253,253,0,169,169,169,85,84,84,84,0,252,252,252,85 190 DATA 255,213,215,214,215,213,255,85,254,86,214,214,214,86,254,85 200 DATA 153,36,90,169,149,90,36,90,90,36,90,149,169,90,36,153 210 CHAIN "ethernet * **__Listing 2 - ETHERNET.BAS__** 10 DEF FNxy$(x,y)=CHR$(27)+"Y"+CHR$(41+y)+CHR$(60+x*2):WIDTH 255 20 n$=CHR$(0)+CHR$(5)+STRING$(3,2)+STRING$(2,3)+CHR$(4)+STRING$(3,6)+STRING$(3,7) 30 n$=n$+STRING$(3,9)+STRING$(3,10)+STRING$(3,11)+STRING$(3,12) 40 DIM m(12):m(6)=5:m(7)=5:m(9)=3:m(10)=3:m(11)=7:m(12)=7 50 DIM s(99,2):DIM b(13,13):DIM c$(12) 60 PRINT CHR$(27);"E";CHR$(27);"0";CHR$(27);"f":b$=CHR$(186)+CHR$(187) 70 bb$=STRING$(28,186):rv$=CHR$(27)+"p":nv$=CHR$(27)+"q" 80 FOR z=160 TO 184 STEP 2:c$((z-160)/2)=CHR$(z)+CHR$(z+1):NEXT z:GOSUB 90:GOTO 200 90 FOR x=1 TO 12:FOR y=1 TO 11:b(x,y)=0:PRINT FNxy$(x,y);c$(b(x,y)):NEXT y:NEXT x 100 PRINT FNxy$(0,0);bb$;FNxy$(0,12);bb$;FNxy$(0,14);bb$ 110 FOR z=0 TO 13:b(0,z)=99:b(13,z)=99:b(z,0)=99:b(z,12)=99 120 PRINT FNxy$(0,z);b$;FNxy$(13,z);b$:NEXT z:RETURN 130 x=INT(RND*12)+1:y=INT(RND*11)+1:IF b(x,y)<>0 THEN 130 ELSE RETURN 140 FOR i=0 TO add-1:IF z<>i AND s(i,1)=ia AND s(i,2)=ib THEN 160 150 NEXT i:RETURN 160 FOR s=i TO add-1:s(s,1)=s(s+1,1):s(s,2)=s(s+1,2):NEXT s:add=add-1:RETURN 170 PRINT FNxy$(5,13);:PRINT rv$;USING "########";sc;:PRINT nv$:RETURN 180 GOSUB 130:IF ABS(x-p)<2 AND ABS(y-q)<2 THEN 180 190 f=x:g=y:b(f,g)=8:PRINT FNxy$(f,g);c$(8):RETURN 200 m$=" * * Collect prizes "+c$(2)+c$(3)+c$(4)+" AND "+c$(5)+" " 210 m$=m$+ "Wipe out killers "+c$(10)+c$(9)+c$(6)+c$(7)+" * Avoid the skull "+c$(8)+" * " 220 m$=m$+"Push slaves "+c$(11)+c$(12)+" * ¯ENTER® to pass * * * ¯SPACE® to start " 230 r=r+7:k$=INKEY$:PRINT FNxy$(0,13);LEFT$(m$,28):FOR t=1 TO 70:NEXT 240 m$=RIGHT$(m$,LEN(m$)-1)+LEFT$(m$,1) 250 IF k$<>" " THEN 230 ELSE RANDOMIZE r:FOR z=0 TO 13:PRINT FNxy$(z,13);b$:NEXT z 260 sc=0:add=0:GOSUB 90:GOSUB 130:b(x,y)=1:p=x:q=y:PRINT FNxy$(x,y);c$(1):GOSUB 180 270 IF b(f,g)<>8 THEN sc=sc-5000*(b(f,g)>10):GOSUB 180:GOSUB 170 280 n=INT(RND*26)+1:GOSUB 130:b(x,y)=ASC(MID$(n$,n,1)) 290 PRINT FNxy$(x,y);c$(b(x,y)):IF RND>0.8 THEN 280 300 IF b(x,y)>5 AND b(x,y)<11 THEN s(add,1)=x:s(add,2)=y:add=add+1 310 k1$=INKEY$:IF k1$="" THEN 310 ELSE IF k1$=CHR$(13) THEN 400 ELSE k$=k1$:GOTO 330 320 k$=INKEY$:IF k$=CHR$(13) THEN 400 ELSE IF k$<>k1$ THEN 320 330 p1=p:q1=q:p=p+(k$=CHR$(1))-(k$=CHR$(6)):q=q+(k$=CHR$(31))-(k$=CHR$(30)) 340 IF p=0 THEN p=12 ELSE IF p=13 THEN p=1 ELSE IF q=0 THEN q=11 ELSE IF q=12 THEN q=1 350 PRINT FNxy$(p1,q1);c$(0);FNxy$(p,q);c$(1):cc=b(p,q) 360 IF cc>1 AND cc<6 THEN sc=sc+1000*(cc-1)-3500*(cc=5):GOSUB 170 370 IF cc>5 AND cc<11 THEN ia=p:ib=q:z=-99:GOSUB 140:sc=sc-250*(cc=9 OR cc=10)-400*(cc=6 OR cc=7):GOSUB 170 380 IF cc>10 THEN GOSUB 720:b(b1,q1)=0:b(p,q)=1:PRINT FNxy$(p,q);c$(1):IF cc>1 THEN 270 ELSE 400 390 b(p1,q1)=0:b(p,q)=1:PRINT FNxy$(p,q);c$(1):IF cc=0 THEN GOTO 320 400 IF RND>0.5 THEN GOSUB 450:GOSUB 460:GOTO 420 410 GOSUB 460:GOSUB 450 420 IF f1<>f OR g1<>g THEN 430 ELSE 500 430 IF f1<>f AND g1<>g THEN IF RND>0.5 THEN g1=g ELSE f1=f 440 GOTO 470 450 IF b(f,q)=0 THEN f1=f:g1=q:RETURN 460 IF b(p,g)=0 THEN f1=p:g1=g:RETURN 470 df=SGN(f1-f):dg=SGN(g1-g):b(f,g)=0:IF (df<>0 AND dg<>0) THEN IF RND>0.5 THEN df=0 ELSE dg=0 480 WHILE (f<>f1 OR g<>g1) AND b(f+df,g+dg)=0 490 PRINT FNxy$(f,g);c$(b(f,g)):f=f+df:g=g+dg:PRINT FNxy$(f,g);c$(8):WEND 500 b(f,g)=8:IF ABS(f-p)<2 AND ABS(g-q)<2 THEN 790 510 FOR z=0 TO add-1 520 a=s(z,1):b=s(z,2):c=b(a,b) 530 IF c=9 OR c=10 THEN GOSUB 570 540 IF c=6 OR c=7 THEN GOSUB 690 550 s(z,1)=a:s(z,2)=b:IF b(p,q)<>1 THEN 790 560 FOR t=1 TO 300:NEXT t:NEXT z:GOTO 270 570 IF RND>0.5 THEN da=1 ELSE da=-1 580 IF c=10 THEN db=da ELSE db=-da 590 cc=-99:FOR k=1 TO m(c):FOR t=1 TO time:NEXT t:PRINT FNxy$(p,q);c$(1) 600 b(a,b)=0:a1=a:b1=b 610 IF c<11 THEN 640 620 IF a+da<1 THEN a=13 ELSE IF a+da>12 THEN a=0 ELSE IF b+db<1 THEN b=12 ELSE IF b+db>11 THEN b=0 630 GOTO 600 640 IF b+db<1 OR b+db>11 THEN db=-db 650 IF a+da<1 OR a+da>12 THEN da=-da 660 a=a+da:b=b+db:IF b(a,b)<>0 THEN GOSUB 740 670 s(z,1)=a:s(z,2)=b:b(a,b)=c:PRINT FNxy$(a,b);c$(b(a,b));FNxy$(a1,b1);c$(0) 680 NEXT k:RETURN 690 IF RND>0.5 THEN x=-1 ELSE x=1 700 da=0:db=0:IF RND>0.5 THEN da=x ELSE db=x 710 GOTO 590 720 da=0:db=0:IF k$=CHR$(1) THEN da=-1 ELSE IF k$=CHR$(6) THEN da=1 ELSE IF k$=CHR$(30) THEN db=1 ELSE bd=-1 730 a=p:b=q:c=cc:z=99:PRINT FNxy$(p,q);c$(1):b(p,q)=1:b(p1,q1)=0:GOTO 590 740 cc=b(a,b):IF c<6 THEN RETURN 750 IF cc=1 THEN k=99:RETURN 760 IF c>10 THEN sc=sc-500*(cc=9 OR cc=10)-800*(cc=6 OR cc=7)-(1000*(cc-1)-3500*(cc=5))*(cc>1 AND cc<6):GOSUB 170 770 k=99:IF cc>5 AND cc<11 THEN ia=a:ib=b:GOSUB 140:RETURN 780 IF b(a,b)<>8 THEN b(a,b)=c:RETURN 790 PRINT FNxy$(0,14);rv$;" G A M E O V E R ";nv$; 800 PRINT FNxy$(5,12);rv$;USING "########";sc;:PRINT nv$:GOTO 200 ===== Controls ===== ↑ = OFFSET SPACE = START GAME RETURN = MOVE SYMBOLS ===== Loading the program ===== 1.- Insert the CP/M disc on side 2 2.- Write BASIC and wait for it to load 3.- Remove the CP/M disk and insert the disk containing the Ethernet game 4.- Type run "Setup" and press the "ENTER" key ===== Extras ===== * Program listing in high-circulation magazines of the time. {{:otros:Ethernet_programa_01.jpg?200}} {{:otros:Ethernet_programa_02.jpg?200}} ===== Download ===== * {{:otros:Ethernet (Basic).zip|Ethernet }}(game in dsk format, compressed with zip)