miércoles, 29 de mayo de 2019

Instalamos LAMP en Ubuntu 18.04, solucionamos el fallo con el socket y lo configuramos para Moodle 3.7

Instalamos los paquetes necesarios

sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql php-curl php-zip php-xml php-intl php-xmlrpc php-gd php-mbstring php-ldap php-pear php-soap

Reiniciamos la contraseña de mysql

Arrancamos el servidor

sudo service mysql start

Vamos a la carpeta del socket

cd /var/run

Hacemos una copia de seguridad del socket

sudo cp -rp ./mysqld ./mysqld.bak

Paramos el servidor

sudo service mysql stop

Restauramos el socket

sudo mv ./mysqld.bak ./mysqld

Iniciamos mysqld_safe

sudo mysqld_safe --skip-grant-tables --skip-networking &

Iniciamos el shell de mysql

mysql -u root

Cambiamos la contraseña

Elegimos la base de datos mysql
mysql> use mysql;
Hacemos las siguientes consultas:
mysql> update user set authentication_string=password('pontuclaveaqui') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';

Actualizamos los privilegios
mysql> flush privileges;
mysql> quit;

Salimos del modo seguro para entrar en el normal
sudo pkill mysqld
sudo service mysql start

Probamos que funciona bien:
mysql -u root -p

Nos debe pedir la contraseña.


Instalamos Moodle

  1. Creamos la tabla que vamos a usar en Moodle:
    CREATE DATABASE mymoodle CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. Salimos de mysql.
    quit;
  3. Descargamos la última versión de Moodle
  4. La descomprimimos en /var/www/html/moodle
  5. Damos permisos de escritura momentáneamente a /var/www
  6. Abrimos desde el navegador la página http://localhost/moodle
  7. Seguimos los pasos del asistente introduciendo la información que se nos va solicitando.
    El puerto de la base de datos y el socket unix no hay que introducirlo.
  8. No nos permitirá crear el archivo config.php así que creamos uno vacío con el contenido que nos indica.
  9. Quitamos los premisos de escritura que dimos a /var/www
  10. Volvemos a cargar la página http://localhost/moodle
  11. Seguimos los pasos del asistente hasta el final, nos pedirá los datos de la configuración del moodle.


Enlaces de interés

viernes, 24 de mayo de 2019

Menu para disquete de Amstrad CPC

Recupero un viejo programa Basic que usaba para poder cargar distintos programas que tuviera en un disquete con un menú como éste:


Nos podemos mover por las entradas con los cursores o el joystick y seleccionarla con las teclas ESPACIO, ENTER o el disparo 0 del joystick.
Este es el listado del programa:

10 REM Ejemplo Menu para seleccionar diversos programas en disquete.
20 MODE 1
30 PEN 1:PAPER 0
40 DIM B$(20)
50 cabecera$="EJEMPLO MENU DE DISCO (CPCBEGIN)"
60 X%=19-LEN(cabecera$)/2
70 ESPACIOS%=4+LEN(cabecera$)
80 PAPER 3
90 FOR Y%=1 TO 3
100 LOCATE X%,Y%:PRINT SPACE$(ESPACIOS%)
110 NEXT Y%
120 LOCATE X%,2
130 PRINT"  "+cabecera$
140 PAPER 0:READ Z%:FOR I%=1 TO Z%:READ a$,b$(i%):LOCATE 5,I%*(2+(z%>10))+5:PEN 2:PRINT USING"##";i%;:PRINT") ";:PEN 1:PRINT a$:NEXT i%
150 REM PEN 3:LOCATE 11,25:PRINT CHR$(164)+" 2019, MENSAJE COPYRIGHT";
160 opcion%=1
170 LOCATE 5,opcion%*(2+(z%>10))+5:PEN 0:PAPER 2:PRINT USING"##";opcion%;:PRINT") ";:a$="":WHILE a$="":a$=INKEY$:WEND
180 IF a$=CHR$(241) OR a$=CHR$(10) THEN LOCATE 5,opcion%*(2+(z%>10))+5:PAPER 0:PEN 2:PRINT USING"##";opcion%;:PRINT") ";:opcion%=opcion%+1:IF opcion%=Z%+1 THEN opcion%=Z%
190 IF a$=CHR$(240) OR a$=CHR$(11) THEN LOCATE 5,opcion%*(2+(z%>10))+5:PAPER 0:PEN 2:PRINT USING"##";opcion%;:PRINT") ";:opcion%=opcion%-1:IF opcion%=0 THEN opcion%=1
200 IF VAL("0"+a$)>0 THEN opcion%=VAL(a$):GOTO 230
210 IF a$<>CHR$(13) AND a$<>"X" AND a$<>" " THEN a$="":GOTO 170 ELSE 230
220 PRINT"Cargando..."b$(opcion%)
230 FOR j%=1 TO z%
240 PEN 2:PAPER 0
250 IF opcion%=j% THEN PRINT CHR$(24);
260 LOCATE 5,j%*(2+(z%>10))+5:PRINT USING"##";j%;:PRINT") ";
270 NEXT j%
280 PEN 1:PAPER 0:RUN B$(OPCION%)
290 END
300 'Use this syntax in DATA line:
310 'DATA number of programs,description 1,access 1,description 2,access 2,...
320 DATA 19,ALGEBRA,ALGEBRA.BAS,"BARAJA ESPANOLA",BARAJA.BAS,EDITOR DE CARACTERES,CARACTER.BAS,CRONOS I,CRONOS.BAS,IMPRIME DIRECTORIOS,DIR.BAS,DIRECCIONES Y TELEFONOS,DIRECCIO.BAS,CALCULO DIVISORES,DIVISOR.BAS,DEMO TINTAS,INKERS.BAS,TEST JOYSTICK
330 DATA JOYTEST.SPA,CALCULO NIF,NIF.SPA,PAGINADOR,PAGINAS.BAS,PIRAMIDE MALAGA,PIRAMIDE.BAS,NUMEROS PRIMOS,PRIMOS.BAS,QUIMICA JBL,QUIMICA.BAS,QUINIELA ALEATORIA,QUINIELA.BAS,TELEFONOS Y PREFIJOS,TELEFONO.BAS,TYPE AMSDOS,TYPE.BAS
340 DATA LEA ESTO,README.BAS,ENGLISH SOFTWARE,ENGLISH.BAS
350 'autosaving
360 SAVE"disc.bas",a

Si no queréis teclear todo esto, tenéis la última versión en mi github.

Para adaptarlo a tus necesidades basta con que cambies las lineas de DATA según lo que dice la linea 300, el primer dato es el número de programas.
También deberías cambiar el texto de la cabecera con el nombre que le des al disco o compilación.

Deben sobrar al menos 2K en el disquete para que quepa el programita.

Para grabarlo en un CPC real o emulado, recuerda que ya hemos visto como hacerlo con disquetes, inyectar código en un DSK con un editor de texto profesional. y que emuladores como RVM permiten inyectar y extraer archivos de las imágenes de disquetes muy fácilmente.

domingo, 19 de mayo de 2019

Tostar un archivo DSK en un disco de 3" desde la unidad de 3.5" del propio Amstrad CPC con dsk-cpc

Imagina que tu copia original de CP/M deja de funcionar (y todas las copias de seguridad que deberías haber hecho), ¿qué haces ahora? ¿cómo vas a hacer tareas habituales en el CPC como formatear disquetes?

La solución es estampar en un disco el archivo DSK del disco estropeado desde la unidad B del propio Amstrad, ¿cómo? con la utilidad dsk-cpc.

¿Qué necesito?


Preparando los discos de 3.5" en el PC

  • Copiamos la aplicación dsk-cpc a un disco de 3.5" en algún formato que lea el CPC tal y como vimos en un artículo anterior.
  • Formateamos el segundo disco de 3.5" como disco IBM de doble densidad:
    SistemaComando para formatear en doble densidad
    DOS/Windows unidad internaformat a: /t:80 /n:9 /v:dsks
    GNU/Linux unidad internafdformat /dev/fd0u720
    DOS/Windows unidad USBufiformat -f
    GNU/Linux unidad USBsudo ufiformat -f 720 -v /dev/sdd #sustituir sdd por lo que corresponda con la disquetera
  • Copiamos los dsk que queramos tostar en este segundo disco, arrastrándolos desde el explorador por ejemplo.

Nota para disqueteras USB

  • Para GNU/Linux: sustituir /dev/sdd por lo que corresponda según lo que nos diga el comando mount.
    ¡Ojo! Si nos equivocamos podemos machacar la información de otra unidad.
  • Para Windows: el driver de la disquetera y la versión del S.O. debe soportar discos de doble densidad.
  • Para ambos: la disquetera debe soportar discos de doble densidad (se puede comprobar con el comando ufiformat -i

Uso de dsk-cpc en el Amstrad CPC

  1. Encendemos la disquetera de 3.5" y el Amstrad CPC.
  2. Introducimos el disquete de 3" a machacar y el disco de 3.5" con el programa dsk-cpc.
  3. Seleccionamos la unidad B: con el comando:
    |B
  4. Ejecutamos dsk-cpc
    RUN"dsk-cpc
  5. Sacamos el disquete de 3.5" con dsk-cpc y lo sustituimos por el disquete con las imagenes DSK.
  6. Pulsamos 1 para seleccionar el DSK.
  7. Seleccionamos el dsk que queramos tostar.
  8. Seleccionamos 1 para tostar el dsk en el disco de 3".
  9. Cuando termine podemos reiniciar y probamos que funciona el disco de 3".
Advertencia: este procedimiento no funciona con todas las imágenes dsk, especialmente si están protegidas o tienen pistas extrañas.

martes, 14 de mayo de 2019

Instalar Marble en Ubuntu Mate 18.04

Marble es una excelente alternativa libre a Google Maps que además consume muchos menos recursos y da un resultado muy bueno.



Se puede instalar desde los repositorios oficiales de Ubuntu Mate con este comando:

sudo apt-get install marble-qt marble-plugins marble-maps marble-data libmarblewidget-qt5-23 libastro

Si quieres instalarla en otras distros consulta este artículo.

martes, 7 de mayo de 2019

Poner una disquetera de 3.5'' al Amstrad CPC 6128


En realidad, este cable lo tenía hecho y comprobado por Diego Vizcaíno hace muchos años pero yo nunca había conseguido hacer que funcionara, ¿por qué? porque hay que alimentar a la disquetera como es debido, 5V 2A, hace poco me regalaron algunos componentes viejos de PC que me podían servir como una fuente de ordenador de las antiguas.

El cable

El cable utilizado es el que usaban para conectar las viejas disqueteras de 5.25" con ciertas modificaciones:
  • Pines 33 y 34: deben estar cortocircuitados permanentemente para conseguir la señal Ready.
  • Pines 31 y 32: cortocircuitados leen la "cara B" del disco, sin unir leen la "cara A".
  • Pines 11 y 12: hacen que la unidad externa se convierta en la unidad A, lo que nos permitiría ejecutar programas que estén pensados para arrancar solo desde esa unidad, como diversos juegos y el propio CP/M.
Lo más recomendable es poner interruptores entre los pines que se conectan o desconectan según nuestra necesidad, por precaución mejor no conectarlos o desconectarlos con el CPC encendido,

 
Otra opción válida para alimentarla es suministrar 5V 2A por el conector de alimentación de la disquetera (como se ve en la foto de la disquetera por detrás), un alimentador de raspberry pi 2 podría servir y no sería tan aparatoso como el de un PC.
La disposición de los pines depende de si la muesca para el cable está abajo o arriba, de todas formas el cable solo debería entrar solo de la manera correcta en la disquetera (pin 1 al cable rojo), en el Amstrad sí hay que tener más cuidado como vamos a ver.

 

Conectándolo al CPC y a la disquetera

Hay que fijarse en el pin 1, que es el cable rojo:
  • A la disquetera debe ir al pin 1 de la disquetera, la mayoría de cables y disqueteras traen una muesca para que se conecten como debe ser, pero mejor comprobar este punto.

    En la serigrafía inferior podemos ver que el cable rojo está en el pin 1, en la etiqueta estaba puesto arriba porque así tenía que ser en la disquetera que iba a usar originariamente, que resultó estar cascada.
  • Al CPC debe conectarse de manera que el cable rojo sea el más alejado de la disquetera de 3" interna, normalmente junto al cable de vídeo.
¡CUIDADO!: En el manual oficial del Amstrad os encontraréis este esquema:


NO LE HAGÁIS NI CASO, es válido para las unidades Amstrad por que los pines se montaron al revés que la norma de las disqueteras de PC, es decir, el 1 sería el 34, el 2 el 33...


Funcionamiento 

Una vez conectado todo, encendemos la fuente que alimenta la disquetera y a continuación el propio CPC.
Para usarla como unidad B tecleamos
|B
y los comandos habituales para cargar o ejecutar programas.

Hay que tener en cuenta que algunos juegos y el propio CP/M solo permiten arrancar con la unidad A, así que en esos casos tenemos que unir los pines correspondientes para anular la unidad interna y que la externa funcione como A:

Una advertencia: si hacéis CAT sobre una unidad sin disquete el Amstrad se quedará bloqueado hasta que lo apaguéis y  volváis a encender.
Lo más cómodo es tener un disquete en cada una para evitaros el incordio.


Acabados (mucho por mejorar)

Como habéis visto en las fotos, he metido la fuente de alimentación y la disquetera en una caja de cartón recortada y agujereada, es cutre pero por ahora es lo que hay.
Eso sí le he hecho muchos agujeros para que escape el calor por algún lado pero de todas formas voy a estar pendiente de posibles calentamientos.

También tengo que poner un par de interruptores para cambiar de cara y puede que también para usar como unidad A.

También puedo añadir conectores para alimentar al propio Amstrad CPC para cuando quiera usar monitores externos distintos al CTM-644.

En este vídeo podéis verlo en acción.


Fuentes y enlaces de interés


miércoles, 1 de mayo de 2019

Copiar archivos a disquetes de doble densidad desde el PC para el Amstrad CPC (mediante disquetera USB en máquina virtual VirtualBox)

El objetivo es pasar archivos a disquetes de doble densidad desde el PC en un formato que sea capaz de leer el Amstrad CPC, pero con dos limitaciones:
  • Hacerlo en un equipo moderno que no trae disquetera interna.
  • Hacerlo en un equipo que solo tiene como sistema nativo GNU/Linux (Ubuntu Mate 18.04).

Vamos a ver que necesito.

Hardware

Necesitaremos tres cosas:
  • Disquetes de doble densidad (DD Disks), si solo tienes de alta no hay problema, le pones un trozo de celo opaco tapando el agujero derecho como puedes ver en el disquete negro de la foto y ya es un disco de doble densidad como el azul (que no tiene el agujero).
  • Una disquetera USB que soporte discos de doble densidad, como la que me pille hace unos meses.
  • Un PC, en mi caso voy a usar mi i7.

Software

  • VirtualBox, se recomienda instalar el Extension Pack correspondiente a la  versión que instales para tener un soporte completo USB.
    Lo puedes instalar desde el centro de software de tu distro.
  • La máquina virtual con Windows, al menos XP, que es la que soporta el programa para pasar los disquetes.
    Simplemente se crea la máquina virtual y lo instalas en ella como si fuera un ordenador real, os dejo un manual para quien no sepa.
  • La disquetera USB la puedes montar a posteriori una vez arrancado el Windows virtual haciendo clic en el icono para mapear dispositivos USB pero mi recomendación es añadir un filtro de dispositivo USB en el apartado USB de la configuración de la máquina virtual antes de arrancarla y así hacer que se mapee automáticamente.
  • CPCDiskXP, el programa que va a pasar los archivos al disquete y que lógicamente hay que descargar e instalar en el Windows XP virtual.
    Debe ser la última versión que es la que permite usar disqueteras USB con limitaciones que veremos a continuación.
  • Los archivos sueltos o archivos dsk que queramos pasar que también deben estar en el sistema virtual.
 

Uso de CPCDiskXP

Este programa se distribuye en un archivo ZIP como aplicación portable, por tanto, basta con copiarla en una carpeta y hacer doble clic en el ejecutable CPCDiskXP.exe (crear un acceso directo para más comodidad).
También incluye otro binario llamado FDInstall.exe que es el driver para usar el disquete de forma nativa pero no es compatible con las unidades USB.
Recomiendo mantener conectada la disquetera con el disquete dentro desde que iniciamos la máquina virtual hasta que salgamos de ella.
Puede que algunos disquetes con tantos años fallen pero ya vimos que unos buenos soplidos en su interior hace maravillas.

Bueno, vamos al lio:
  1. Arrancamos la máquina virtual con la unidad conectada y el disquete dentro.
  2. Ejecutamos CPCDiskXP.
  3. Hacemos clic en el botón DSK EDITOR.
  4. Clic en New.
  5. Marcamos la opción USB Floppy Drive  Compatible Formats y dejamos el que nos ofrece por defecto.
  6. Hacemos clic en el botón Add Files para añadir archivos sueltos y/o..
  7. Hacemos clic en el botón Add Files From Another DSK para incluir archivos sueltos incluidos en un DSK que no esté protegido.
  8. Una vez incluidos todos los archivos deseados pulsamos los botones Write USB Floppy y Write Disk.
  9. Si todo ha ido bien cerramos la aplicación y salimos de la máquina virtual, ya tenemos nuestro disquete listo para usar en una unidad 3.5'' conectada a nuestro CPC.

Limitaciones

  • Realmente solo puede copiar ficheros sueltos, aunque los lea de un dsk desprotegido, no se podría "quemar" una imagen tal cual en el disquete (raw).
  • Hay que usar formatos IBM y además compatible con la ROM que tenemos en nuestro CPC, que en mi caso es la estándar.
  • Por otro lado sólo podemos grabar la cara A, lo que nos hace aprovechar muy poco del disco.
  • El disquete no se podrá releer desde la aplicación por lo que siempre hay que empezar de cero.
  • Posiblemente no sea reconocido ni por GNU/Linux ni por el Windows virtual. 

Videotutorial

El tutorial 'hacer un disco de 3.5 usando una disquetera USB' es bastante clarificador pero añado otro mío para las peculiaridades de hacerlo en una máquina virtual desde GNU/Linux:


Última hora

El compañero KaosOverride, una vez más, nos proporciona información interesante desde el grupo de Telegram Amstrad Power.
Se puede hacer directamente desde GNU/Linux con las aplicaciones dsk2ima y dd. 
Tomo buena nota para futuro artículo.