Table of Contents
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
Download
- Mina (game in dsk format, compressed with zip)