User Tools

Site Tools


en:ethernet

This is an old revision of the document!


ETHERNET

Info

Author Tim Barnes
Computer Amstrad PCW 8256 / 8512 / 9512
Year 1988
Gender Arcade
Controls Keyboard
Languages English
Status Preserved

Screenshots

Descripction

The game starts on a 12×11 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.

ethernet_programa_01.jpg ethernet_programa_02.jpg

Download

  • Ethernet (game in dsk format, compressed with zip)
en/ethernet.1655625943.txt.gz · Last modified: 2022/06/19 11:05 by jevicac