User Tools

Site Tools


en:mina

MINA

Info

Author Xavier Artigas
Computer Amstrad PCW 8256 / 8512 / 9512
Year 1988
Gender Action
Controls Keyboard
Languages Spanish
Status preserved

Screenshots

Description

Mina is a fun game in which we have to move our miner (a nice doll) through the mine, where we have to make the tunnels as short as possible and collect all the diamonds that we find in it, in the shortest time possible. We talk about time because in the game, there is a clock that starts, this clock indicates the time we have left before our oxygen runs out. But we shouldn't worry so much, because when we go for the diamonds, we can find an oxygen bottle and recover a little more breath to get the diamonds for each mission. One drawback is that if we stand still, time will run faster leading to oxygen loss much sooner. We can only carry one bomb each time we go for a diamond, these are collected by touching only the booths that are at the top of the screen. We will come across hard rocks that will make our mission impossible. Let's try to avoid them and be somewhat ingenious when placing the bombs. Remember that our main mission is the collection of diamonds, do not entertain yourselves.

Listing

  • Listing 1 - MINAS.BAS
10 '*** SPRITES PARA EL PROGRAMA MINA ***
20 '
30 MEMORY &HEA5F
40 FOR n=0 TO 53:READ a:POKE &HEA60+n,a:NEXT n
50 DATA 42,1,0,17,87,0,237,90
60 DATA 34,123,234,33,160,234,1,128
70 DATA 234,205,122,234,233,0,0,201
80 DATA 0,0,195,0,0,201,0,0
90 DATA 126,35,229,111,38,0,41,41
100 DATA 41,17,0,184,25,229,209,225
110 DATA 1,8,0,237,176,201
120 rutina=&HEA60:codigo=&HEAA0
130 READ b:IF b=0 THEN 180
140 FOR l=1 TO 8:READ a:POKE codigo+l,a:NEXT
150 POKE codigo,b
160 CALL rutina
170 GOTO 130
180 RUN "m
190 DATA 245,7,8,10,8,11,8,7,1:' EL SIMPATICO HOMBRECITO
200 DATA 64,224,16,80,16,208,16,224,128
210 DATA 179,63,1,1,1,2,4,8,56
220 DATA 94,252,128,128,128,64,32,16,14
230 DATA 33,0,0,31,36,68,136,124,35:' DIAMANTE
240 DATA 34,0,0,248,36,34,17,62,196
250 DATA 35,18,9,5,3,1,0,0,0
260 DATA 36,72,144,160,192,128,0,0,0
270 DATA 38,0,3,4,8,8,15,16,32:' BOTELLA DE OXIGENO
280 DATA 39,0,192,32,16,16,240,8,4
290 DATA 40,33,34,34,33,32,32,63,96
300 DATA 41,132,68,68,132,4,4,252,6
310 DATA 42,0,66,68,56,16,16,8,5:' ROCAS QUEBRADAS
320 DATA 43,0,32,16,9,62,98,197,136
330 DATA 60,3,6,12,156,82,33,64,0
340 DATA 62,0,1,46,16,40,69,130,0
350 DATA 59,0,130,84,43,92,40,84,130:' BASE DE APROVISIONAMIENTO
360 DATA 47,0,64,224,30,31,31,31,14
370 DATA 160,0,6,14,30,26,26,30,30
380 DATA 161,0,96,112,120,88,88,120,120
390 DATA 0
  • Listing 2 - M.BAS
5 CLEAR ,,256
10 DEFSTR h
20 hesc=CHR$(27)
30 home=hesc+"H":hbor=hesc+"E"+home
40 hcun=hesc+"e":hcuf=hesc+"f"
50 hneg=hesc+"p":hpos=hesc+"q"
60 hsun=hesc+"r":hsuf=hesc+"u"
70 DEF FN hpos(x,y)=hesc+"Y"+CHR$(32+y)+CHR$(32+x)
80 DIM po(40,10)
90 bo$="       NO          "
100 PRINT hbor
101 GOSUB 6000:' INSTALA PITIDO
105 GOSUB 2000:' PRESENTACION DEL JUEGO
110 GOSUB 1000:' DIBUJA LA MINA
120 PRINT hcuf;
130 pt=INT(dia*1.5 + 3-bas)
140 PRINT FN hpos(2,1);"DIAMANTES"
141 PRINT FN hpos(2,3);"BOMBA ?"
142 PRINT FN hpos(2,5);"CONTADORES : "
143 PRINT FN hpos(0,0)+CHR$(150)+STRING$(40,154)+CHR$(158)+STRING$(12,154)+CHR$(158)+STRING$(33,154)+CHR$(156);
144 FOR l=1 TO 8:PRINT FN hpos(0,l);CHR$(149);FN hpos(41,l);CHR$(149);FN hpos(88,l);CHR$(149); FN hpos(54,l);CHR$(149);:NEXT
145 PRINT FN hpos(0,9)+CHR$(147)+STRING$(40,154)+CHR$(155)+STRING$(12,154)+CHR$(155)+STRING$(33,154)+CHR$(153);
146 PRINT FN hpos(42,1);di$;" Diamante."
147 PRINT FN hpos(42,3);ox$;" Oxigeno."
148 PRINT FN hpos(42,7);du$;" Roca dura"
149 PRINT FN hpos(42,5);na$;" Base."
150 PRINT FN hpos(20,7);"PUNTUACION:"
151 PRINT FN hpos(2,7);hneg;"Tienes";hpos
152 PRINT FN hpos(2,8);hneg;"ß 00:";RIGHT$(STR$(pt+INT(RND(1)*3)-1),2);":00 T.";hpos
153 PRINT FN hpos(55,1);hneg;"CAN";hpos;" Abandonar."
154 PRINT FN hpos(55,3);hneg;"INTRO";hpos;" Pausa."
155 PRINT FN hpos(55,5);hneg;"SPACE";hpos;" Deja bomba."
156 PRINT FN hpos(55,7);hneg;"CURSOR";hpos;" Mueve al hombre."
190 PRINT FN hpos(17,1);:FOR l=1 TO dia:PRINT "» ";:NEXT
199 ndm=2:GOSUB 1500:ndm=2
200 PRINT FN hpos(17,1);je$
201 PRINT FN hpos(20,3);bo$
202 PRINT FN hpos(20,5);"TIEMPO   : ";ti$
203 PRINT FN hpos(20,7);"PUNTUACION:";sc
204 sc=(je*10)-bom
210 se=se+1
211 IF se=60 THEN se=0:mi=mi+1
212 IF mi=60 THEN mi=0:oras=oras+1
213 ti$=STR$(oras)+":"+RIGHT$(STR$(mi),2)+":"+RIGHT$(STR$(se),2)
220 g$=INKEY$:IF g$="" THEN 200
221 PRINT FN hpos(x+2,y+4);nvb$
222 IF g$=CHR$(8) THEN ndm=-3:GOSUB 1500:PRINT hbor;:GOTO 310
223 IF g$=CHR$(13) THEN GOSUB 450
225 IF g$=CHR$(31) AND py>1 THEN ax=0:ay=-1:GOSUB 400:GOTO 290
230 IF g$=CHR$(30) AND py<10 THEN ax=0:ay=1:GOSUB 400:GOTO 290
235 IF g$=CHR$(6) AND px<40 THEN ax=1:ay=0:GOSUB 400:GOTO 290
240 IF g$=CHR$(1) AND px>1 THEN ax=-1:ay=0:GOSUB 400:GOTO 290
245 IF g$=" " AND LEN(bo$)=22 THEN GOSUB 500
290 PRINT FN hpos(x+2,y+4);nv$
295 IF je=dia THEN 305
296 IF mi=pt THEN FOR kl=1 TO 1000:NEXT:PRINT hbor;SPC(20);"SE TERMINO EL OXIGENO ,";n$:GOTO 310
300 GOTO 200
305 PRINT hbor;SPC(20);"LO CONSEGUISTE ";n$:sc=sc+10
310 PRINT FN hpos(2,5);"Recogiste ";je;" Diamantes en tan solo ";ti$; " unidades de tiempo"
315 PRINT FN hpos(2,10);"Habia ";dia;" Diamantes, o sea que recogiste el ";(je*100)/dia;"%"
320 PRINT FN hpos(2,15);"Tenias una provisiãn de oxâgeno para tan solo 00:";pt;":00 unidades de T."
325 PRINT FN hpos(2,20);"Utilizaste änicamente ";bom;" bombas";
326 IF box=0 THEN PRINT"." ELSE PRINT ", y una botella de ox"+CHR$(226)+"geno, que saldr"+CHR$(224)+" del sueldo.":sc=sc-5
330 PRINT FN hpos(2,30);"OTRA PARTIDA ?  S o N"
331 PRINT FN hpos(2,25);"Con todos estos datos, tienes una puntuaciãn de ";sc;", mas un"10*nd" % por el nivel"
332 PRINT :PRINT"  de dificultad, tu puntuaciãn es de ";hneg;(sc*10*nd)/100+sc;hpos
335 g$=INKEY$:IF g$="" THEN 335
336 IF g$="s" OR g$="S" THEN RUN
337 IF g$="n" OR g$="N" THEN PRINT;hbor;hcun;:END
338 GOTO 335
400 IF po(px+ax,py+ay)=1 THEN RETURN
405 IF po(px+ax,py+ay)=3 THEN bo$=hneg+"       SI         "+hpos:GOSUB 435:RETURN
410 IF po(px+ax,py+ay)=4 THEN GOSUB 430:px=px+ax:py=py+ay:y=y+ay*2:x=x+ax*2:po(px,py)=2:RETURN
415 IF po(px+ax,py+ay)=2 THEN px=px+ax:py=py+ay:y=y+ay*2:x=x+ax*2:RETURN
416 IF po(px+ax,py+ay)=6 THEN sc=sc-5:GOSUB 440:box=1:px=px+ax:py=py+ay:y=y+ay*2:x=x+ax*2:po(px,py)=2:RETURN
420 RETURN
430 je=je+1:je$=je$+"¼ ":da1=8:da2=0.05:GOSUB 6051:RETURN
435 da1=9:da2=0.05:GOSUB 6051:RETURN
440 PRINT FN hpos(20,5);hneg;"TIME   :           ";hpos
444 da1=5:da2=0.5:GOSUB 6051
445 FOR k=1 TO 500:NEXT
446 PRINT FN hpos(20,5);hneg;"TIME   :  00:00:00";hpos
447 da1=5:da2=0.5:GOSUB 6051
448 FOR k=1 TO 500:NEXT:da1=5:da2=0.5:GOSUB 6051
449 mi=0:se=-1:RETURN
450 PRINT FN hpos(39,10);"P A U S A"
451 da1=1:da2=0.5:GOSUB 6051
455 k$=INKEY$:IF k$="" THEN 455
460 PRINT FN hpos(39,10);"---------"
461 FOR k=1 TO 700:NEXT:da1=1:da2=0.5:GOSUB 6051
462 PRINT FN hpos(39,10);"          "
465 RETURN
500 FOR l=1 TO 4:px(l)=px:py(l)=py:NEXT
504 IF py>1 THEN IF po(px,py-1)=1 THEN px(1)=px:py(1)=py-1
505 IF py<10 THEN IF po(px,py+1)=1 THEN px(2)=px:py(2)=py+1
510 IF px<40 THEN IF po(px+1,py)=1 THEN px(3)=px+1:py(3)=py
515 IF px>1 THEN IF po(px-1,py)=1 THEN px(4)=px-1:py(4)=py
520 FOR l=1 TO 5:da1=11:da2=0.1:GOSUB 6051:FOR l1=1 TO 250:NEXT
521 PRINT FN hpos(px*2,9+py*2);nvb$:FOR l1=1 TO 250:NEXT
522 da1=5:da2=0.01:GOSUB 6051:PRINT FN hpos(px*2,9+py*2);nv$:NEXT
525 FOR l1=1 TO 300:NEXT
526 FOR k=1 TO 3
530 FOR l=1 TO 4:PRINT:PRINT FN hpos(px(l)*2,9+py(l)*2);ex$;
531 da1=2:da2=0.05:GOSUB 6051
532 PRINT:PRINT FN hpos(px(l)*2,9+py(l)*2);nvb$;:po(px(l),py(l))=2
533 NEXT l,k
534 PRINT FN hpos(px*2,9+py*2);nv$
535 bo$="       NO           ":bom=bom+1
540 FOR l=1 TO 4:PRINT FN hpos(px(l)*2,9+py(l)*2);nvb$:NEXT
541 PRINT FN hpos(px*2,9+py*2);nv$
545 RETURN
1000 '----------------------------------- DIBUJAR MINA
1001 ne$=hneg+"  "+STRING$(2,8)+hesc+"B"+"  "+hpos
1002 na$=hneg+";/"+STRING$(2,8)+hesc+"B"+" ¡"+hpos
1003 di$=hneg+"!"+CHR$(34)+STRING$(2,8)+hesc+"B"+"#$"+hpos
1004 du$=hneg+".."+STRING$(2,8)+hesc+"B"+".."+hpos
1008 ox$=hneg+"&'"+STRING$(2,8)+hesc+"B"+"()"+hpos:hbeep=CHR$(7)
1009 ex$=hneg+"*+"+STRING$(2,8)+hesc+"B"+"<>"+hpos
1010 a=INT(RND(1)*nd)+1
1011 IF a=3 OR a=4 THEN bas=bas+1
1012 IF x=60 AND bas=0 THEN a=INT(RND(1)*2)+3
1013 IF nd=0 THEN RESTORE 4000:GOSUB 1060: GOTO 1016
1015 ON a GOSUB 1020,1030,1040,1050,1051,1052,1053,1054,1055,1056:GOSUB 1060
1016 x=x+20:IF x=80 THEN 1100 ELSE GOTO 1010
1020 RESTORE 3000:RETURN
1030 RESTORE 3100:RETURN
1040 RESTORE 3200:RETURN
1050 RESTORE 3300:RETURN
1051 RESTORE 3400:RETURN
1052 RESTORE 3500:RETURN
1053 RESTORE 3600:RETURN
1054 RESTORE 3700:RETURN
1055 RESTORE 3800:RETURN
1056 RESTORE 3900:RETURN
1060 FOR y1=1 TO 10:FOR x1=1 TO 10
1065 READ k:k=k+1
1070 PRINT FN hpos(x+x1*2,9+y1*2);
1073 IF k=6 AND bo=1 THEN k=1
1074 IF k=6 AND bo=0 THEN PRINT ox$:bo=1:GOTO 1083
1075 IF k=1 THEN PRINT ne$
1076 IF k=4 THEN dia=dia+1
1080 IF k=3 THEN PRINT na$
1081 IF k=4 THEN PRINT di$
1082 IF k=5 THEN PRINT du$
1083 po((x/2)+x1,y1)=k
1084 NEXT x1,y1
1085 RETURN
1100 x=0:y=13
1105 px=1:py=4
1106 nv$="õ@"+CHR$(8)+CHR$(8)+hesc+"B"+"³^"
1107 nvb$="  "+CHR$(8)+CHR$(8)+hesc+"B"+"  "
1108 FOR l=11 TO 30 STEP 2:PRINT FN hpos(0,l);ne$;FN hpos(82,l);ne$:NEXT
1115 RETURN
1500 RESTORE 1600
1510 READ da1,da2
1520 IF da1=0 THEN RETURN
1530 da1=da1+ndm:GOSUB 6051
1540 GOTO 1510
1600 DATA 3,.1
1605 DATA 5,.1
1610 DATA 7,.1
1620 DATA 9,.3
1630 DATA 7,.1
1640 DATA 9,.4
1650 DATA 0,0
1999 END
2000 '----------------------------------- COMIENZO DEL JUEGO, PRESENTACION
2005 a$=CHR$(138)
2010 PRINT hbor;hcun;hsuf;hpos;
2020 PRINT FN hpos(38,1);hneg;STRING$(14,138);hpos
2025 PRINT FN hpos(38,2);hneg;a$;a$;"M";a$;a$;"I";a$;a$;"N";a$;a$;"A";a$;a$;hpos
2030 PRINT FN hpos(38,3);hneg;STRING$(14,138);hpos
2035 PRINT hesc+"0"
2040 PRINT:PRINT " Mueve tu minero por la mina, haz los tuneles lo mas corto posible y"
2050 PRINT:PRINT "destrozate los nervios en las curvas. El tiempo es implacable y serà..."
2060 PRINT:PRINT "tu perdiciãn "
2070 PRINT:PRINT:PRINT "Con "+hneg+" CURSOR "+hpos+" te movearàs."
2080 PRINT "Con "+hneg+" SPACE "+hpos+" dejaràs la bomba."
2090 PRINT "Con solo tocar las bases, recojeràs una bomba."
2100 PRINT "Si no crees poder resistirlo, pulsa "+hneg+" CAN "+hpos
2101 PRINT "Pulsando ";hneg;" INTRO ";hpos;" se detendrà el programa."
2105 PRINT:PRINT "Recuerda que tu objetivo es cojer los diamantes...":PRINT
2110 PRINT:PRINT "P.D. Puede que haya alguna botella de oxâgeno..."
2120 PRINT SPC(6);"I recuerda que no pudes dejar de moverte o el tiempo correrà mas a prisa."
2130 PRINT SPC(6);"I cuidado con las rocas duras, te haran la vida imposible."
2135 PRINT SPC(6);"Tambi"+CHR$(225)+"n recuerda que solo puedes llevar una bomba cada vez."
2136 PRINT SPC(6);"I que no puedes parar el juego durante una explosi"+CHR$(227)+"n."
2170 PRINT:PRINT "El cero es el sencillâsimo."
2180 da1=11:da2=0.05:GOSUB 6051:PRINT "NIVEL DE DIFICULTAD ?  0 - 10   :   ";hesc+"D"+hesc+"D";:LINE INPUT nd$
2181 nd=VAL(nd$)
2182 IF nd<0 THEN PRINT hesc+"A";:da1=3:da2=1:GOSUB 6051:GOTO 2180
2183 IF nd>10 THEN PRINT hesc+"A";:da1=3:da2=1:GOSUB 6051:GOTO 2180
2190 da1=11:da2=0.05:GOSUB 6051:PRINT:PRINT "INTRODUZCA SU NOMBRE : ";hcun;hsun;:LINE INPUT n$:PRINT hcuf;hsuf
2191 FOR l=1 TO LEN(n$):r=r+ASC(MID$(n$,l,1)):NEXT: RANDOMIZE r
2199 PRINT CHR$(27)"E"+CHR$(27)"H"
2200 PRINT FN hpos(7,31);"PULSE UNA TECLA PARA EMPEZAR, CAN PARA FINALIZAR O INTRO PARA MODIFICAR";
2210 g$=INKEY$:IF g$="" THEN 2210 
2220 IF g$=CHR$(8) THEN PRINT hbor;hcun;hsuf:END
2230 IF g$=CHR$(13) THEN RUN
2235 PRINT hbor
2300 RETURN
2999 '----------------------------- PANTALLA 1
3000 DATA 0,0,0,0,0,0,0,0,0,0
3005 DATA 1,1,0,0,5,3,0,0,0,1
3010 DATA 1,1,1,4,0,0,0,4,1,1
3020 DATA 1,1,1,1,0,0,0,1,1,1
3030 DATA 1,1,1,1,1,0,1,1,1,1
3040 DATA 1,1,1,1,1,1,1,1,1,1
3050 DATA 1,1,0,1,1,1,1,1,1,1
3060 DATA 1,1,0,0,1,1,1,1,1,0
3070 DATA 1,1,4,4,1,0,0,0,0,0
3080 DATA 0,0,0,0,0,0,3,0,0,0
3099 '----------------------------- PANTALLA 2
3100 DATA 0,0,0,0,0,0,0,0,0,0
3110 DATA 0,0,0,0,3,0,0,0,0,0
3120 DATA 0,0,0,0,0,0,0,0,0,0
3130 DATA 1,1,1,1,1,1,1,1,1,1
3140 DATA 1,1,1,1,1,1,1,1,1,1
3150 DATA 4,4,4,0,1,0,0,4,4,4
3160 DATA 0,3,0,0,1,0,0,0,0,0
3170 DATA 0,0,0,0,1,0,1,0,3,0
3180 DATA 0,1,1,1,1,1,1,0,0,0
3190 DATA 0,0,0,0,0,0,0,0,0,5
3199 '----------------------------- PANTALLA 3
3200 DATA 0,0,0,0,0,0,0,0,0,0
3210 DATA 0,0,0,0,0,2,2,2,0,0
3220 DATA 1,1,1,1,1,1,1,1,1,1
3230 DATA 1,1,1,1,0,1,4,1,1,1
3240 DATA 1,1,4,0,0,1,0,1,1,1
3250 DATA 1,1,0,3,4,1,0,1,1,0
3260 DATA 1,1,0,0,1,1,0,1,1,0
3270 DATA 1,1,0,0,1,1,0,1,1,0
3280 DATA 0,0,0,0,0,0,0,0,0,4
3290 DATA 0,0,0,0,0,0,0,4,4,4
3299 '----------------------------- PANTALLA 4
3300 DATA 0,0,0,0,0,0,0,0,0,0
3310 DATA 0,0,0,0,2,2,0,0,0,0
3320 DATA 0,0,0,1,1,1,1,0,0,0
3330 DATA 1,1,1,1,1,1,1,1,1,1
3340 DATA 1,1,1,1,1,1,1,1,1,1
3350 DATA 0,0,1,1,0,0,0,0,0,0
3360 DATA 0,4,1,1,0,0,4,4,4,0
3370 DATA 0,1,1,1,0,1,1,3,1,0
3380 DATA 0,4,4,4,4,4,0,4,4,4
3390 DATA 0,0,0,0,3,1,1,0,0,0
3399 '---------------------------- PANTALLA 5
3400 DATA 0,0,0,0,0,0,0,0,0,0
3410 DATA 0,0,0,0,3,0,0,0,0,0
3420 DATA 0,0,0,0,0,0,0,0,0,0
3430 DATA 1,1,1,1,1,1,1,1,1,1
3440 DATA 1,1,1,1,1,1,1,1,1,1
3450 DATA 0,0,4,4,1,0,0,4,4,0
3460 DATA 0,0,3,4,1,0,0,0,3,0
3470 DATA 0,0,0,0,1,0,0,0,0,0
3480 DATA 1,1,1,1,1,1,1,1,1,1
3490 DATA 0,0,0,0,0,0,0,0,0,0
3499 '--------------------------- PANTALLA 6
3500 DATA 0,0,0,0,0,0,0,0,0,0
3510 DATA 0,0,0,0,0,0,0,0,0,0
3520 DATA 0,0,0,0,0,0,0,0,0,0
3530 DATA 1,1,1,1,1,1,1,1,1,1
3540 DATA 1,1,1,1,1,1,1,1,1,1
3550 DATA 0,4,4,4,4,4,4,4,0,0
3560 DATA 0,0,5,3,0,0,0,0,0,0
3570 DATA 0,0,0,0,1,1,1,1,0,0
3580 DATA 1,1,1,1,1,1,1,1,0,0
3590 DATA 0,0,0,0,0,0,0,0,0,0
3599 '-------------------------- PANTALLA 7
3600 DATA 0,0,0,0,0,0,0,0,0,0
3610 DATA 0,0,0,0,0,3,0,0,0,0
3620 DATA 0,0,0,0,0,0,0,0,0,0
3630 DATA 1,1,0,0,0,0,0,0,0,0
3640 DATA 1,1,1,0,0,0,1,1,1,1
3650 DATA 0,0,1,1,0,1,1,0,0,0
3660 DATA 0,0,0,1,1,1,0,0,0,0
3670 DATA 0,0,0,0,0,0,0,0,0,0
3680 DATA 0,3,0,0,0,0,0,5,0,0
3690 DATA 0,0,0,0,0,0,0,0,0,0
3699 '--------------------------- PANTALLA 8
3700 DATA 0,0,0,0,0,3,0,0,0,0
3710 DATA 0,0,0,0,0,0,0,0,0,0
3720 DATA 0,0,0,0,0,0,0,0,0,0
3730 DATA 1,1,1,1,1,1,1,1,1,1
3740 DATA 1,1,1,1,1,1,1,1,1,1
3750 DATA 0,1,1,0,0,0,0,0,1,0
3760 DATA 0,0,1,1,0,0,0,0,1,0
3770 DATA 0,0,0,1,1,0,0,0,1,0
3780 DATA 0,3,0,0,1,1,1,1,1,0
3790 DATA 0,0,0,0,0,0,0,0,0,0
3799 '-------------------------- PANTALLA 9
3800 DATA 0,0,0,0,0,0,0,0,0,0
3810 DATA 0,1,1,1,2,1,1,1,0,0
3820 DATA 0,1,0,1,0,1,0,1,0,0
3830 DATA 1,1,0,1,0,1,0,1,0,0
3840 DATA 1,1,0,1,0,1,0,1,1,1
3850 DATA 0,0,0,1,0,1,0,0,0,0
3860 DATA 0,1,1,1,0,1,0,0,0,0
3870 DATA 0,1,0,0,0,1,0,0,3,0
3880 DATA 0,1,1,1,1,1,0,0,0,0
3890 DATA 0,0,0,0,0,0,0,0,0,3
3899 '--------------------------- PANTALLA 10
3900 DATA 4,4,4,2,4,4,4,4,4,4
3910 DATA 4,1,1,1,1,1,1,1,1,4
3920 DATA 4,1,4,0,4,4,4,4,1,4
3930 DATA 1,1,4,0,4,4,4,4,1,1
3940 DATA 1,1,4,0,4,4,4,4,1,1
3950 DATA 4,4,4,1,4,4,4,4,4,4
3960 DATA 4,0,3,0,4,0,1,0,3,4
3970 DATA 4,0,4,4,4,0,4,0,3,4
3980 DATA 4,0,0,1,1,0,4,0,5,4
3990 DATA 4,4,4,4,4,4,4,4,4,4
3999 '------------------------ PANTALLA 0, LA MAS SENCILLA
4000 DATA 0,0,0,0,0,0,0,0,0,0
4010 DATA 0,0,1,1,2,2,1,1,0,0
4020 DATA 0,0,1,1,1,1,1,1,0,0
4030 DATA 1,1,1,1,1,1,1,1,1,1
4040 DATA 1,1,1,1,1,1,1,1,1,1
4050 DATA 1,1,1,1,1,1,1,1,1,1
4060 DATA 0,0,0,3,0,0,4,4,0,0
4070 DATA 0,0,0,0,0,3,5,0,0,0
4080 DATA 0,0,0,0,0,0,4,0,0,0
4090 DATA 0,0,0,0,0,0,0,0,0,0
6000 REM PCW8256/8512   Pitido musical AMSTRAD USER
6001 :
6002 REM * SITUAR CODIGO MAQUINA EN 49152 (&HC000) *
6003 RESTORE 6010
6004 MEMORY &HBFFF:REM PROTEGER CODIGO MAQUINA A PARTIR DE &HC000
6005 FOR n=49152! TO 49243!:REM COMIENZO (49152) Y FIN (49243)
6006 READ d
6007 fo=fo+d
6008 POKE n,d
6009 NEXT
6010 DATA 229,213,197,221,229,42,27,192,237,91,25,192,205,29,192,62
6011 DATA 12,211,248,221,225,193,209,225,201,0,0,0,0,243,125,203
6012 DATA 61,203,61,47,230,3,79,6,0,221,33,49,192,221,9,62
6013 DATA 11,0,0,0,4,12,13,32,253,14,63,5,32,248,60,254
6014 DATA 13,32,2,61,61,211,248,68,79,254,11,32,9,122,179,40
6015 DATA 9,121,77,27,221,233,77,12,221,233,251,201
6016 :
6017 '
6018 ' AHORA COMPROBAMOS
6019 p=0
6020 FOR n=&HC000 TO &HC05B
6021 p=p+PEEK(n)
6022 NEXT
6023 IF p=10282 THEN GOTO 6028
6024 PRINT "[ ERROR EN LOS DATAS , COMPRUEBELOS !"
6025 LIST 6010-6015
6026 END
6027 REM VARIABLES   "VERY IMPORTANT"
6028 ak=&HC000:' DIRECCION DEL CALL
6029 bk=&HC019:' BYTE DEL ORDEN BAJO DE LA FREEQUENCIA
6030 ck=&HC01B:' BYTE DEL ORDEN BAJO DE LOS T-ESTADOS
6031 ' INICIAR TABLA DE SEMITONOS PARA LA MATRIZ 'E'n
6032 DIM e(13)
6033 FOR n=0 TO 13
6034 READ f
6035 e(n)=f
6036 NEXT
6037 DATA 261.63:REM NOTA DO   -------- C
6038 DATA 277.18:REM NOTA RE BEMOL ---- D$
6039 DATA 293.66:REM NOTA RE   -------- D
6040 DATA 311.13:REM NOTA MI BEMOL ---- E$
6041 DATA 329.63:REM NOTA MI   -------- E
6042 DATA 349.23:REM NOTA FA   -------- F
6043 DATA 369.99:REM NOTA SOL BEMOL --- G$
6044 DATA 392.00:REM NOTA SOL   ------- G
6045 DATA 415.30:REM NOTA LA BEMOL ---- A$
6046 DATA 440.00:REM NOTA LA   -------- A
6047 DATA 466.16:REM NOTA SI BEMOL ---- B$
6048 DATA 493.88:REM NOTA SI   -------- B
6049 DATA 250.00,241.50:REM NOTA SI, Y LA, B,A,
6050 RETURN
6051 REM * HAZ POKE DE FREQUENCIA Y DURACION Y LLAMA A LA SUBRUTINA EN CODIGO MAQUINA *
6052 REM * O LA SUBRUTINA EMITIRA UN GRU\IDO *
6053 IF da1<0 THEN PRINT "ERROR: F NO PUEDE SER MENOR DE 0":STOP
6054 f2=e(da1):REM coger semi-tono de la matriz
6055 t=3500000!/(f2*2):t=INT(t/4-30.125):REM LA MEDIDA DE TIEMPO DEL Z80 DE TU PCW
6056 IF t<0 THEN t=1
6057 f2=INT(f2*da2): REM FREQUENCIA*TIEMPO
6058 IF f2<0 THEN f2=1
6059 POKE bk,f2-256*INT(f2/256):REM BYTE BAJO
6060 POKE bk+1,INT(f2/256):REM BYTE ALTO
6061 POKE ck,t-256*INT(t/256):REM BYTE BAJO DEL TIEMPO
6062 POKE ck+1,INT(t/256):REM BYTE ALTO DEL TIEMPO
6063 CALL ak
6064 RETURN

Controls

       ↑ = UP
       ↓ = DOWN
       → = RIGHT
       ← = LEFT
   SPACE = LEAVE BOMB
   ENTER = PAUSE
     CAN = Exit

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 Mina game
 4.- Type run "Mina" and press the "ENTER" key

Extras

  • Listing of the program in a large-circulation magazine of the time

mina_programa_01.jpg mina_programa_02.jpg mina_programa_03.jpg

Download

  • Mina (game in dsk format, compressed with zip)

Video

en/mina.txt · Last modified: 2022/06/30 11:18 by jevicac