Para versión siguiente:



-------------
---Errores---
-------------

-exolon rzx, si se abre menu, se queda continuamente disparando y agachado (joystick seleccionado: cursor&shift, aunque parece que no importa esto)


-parpadeos en driver xwindow en zx desktop al moverse por menus

-cacalib, en consola texto pura, parpadeo en menu (y en general en cualquier pixel emulado con brillo)

-con daad debug, si hago un cambio de gui style, se activa la opcion de watch en daad debug... quiza no está gestionando bien el overlay??


-ZENG soporte para QL. ok aunque no envia teclas extendidas
-ZENG para msx se leen los cursores en destino





-revisar en menu_debug_change_registers(void),
//Si lanzo con debug_print ERR, y estamos en modo step, se habilita multitarea, por que?


-archivos de cintas que no se cierran en windows al expulsarlas

-kempston mouse en cursor draw en menu abierto lee en apariencia aleatoriamente

-speech con caracteres con acentos no los envia, los filtra. acentos de menu? quiza habria que pasar primero otro filtro para solo acentos, convertirlos a sin acentos o caracteres con acentos utf

-snapshot ZSF de nextdows, no guarda la parte inferior de pantalla aparentemente

-quiza en threads que no se cancelan en windows (zeng?) agregar llamada a pthread_testcancel();



-en daad debug, pulsar m de condmessage, sale dos veces (con cozumel 1 y inventario)

-text adventure map: opcion mostrar descripciones. localidad 14 por ejemplo se mezcla??





-en menus al moverse con pgup down creo que no siempre va bien, por ejemplo en tracks list de +3 al pgdn siempre queda abajo, mientras que pgup no


-En visor dsk que solo muestre primer extent de un archivo. ya esta??
-extractor dsk no obtiene bien longitudes de disco cpc (porque intenta obtener cabecera plus3dos). ok ya?
-extractor dsk que use misma manera que visor dsk?
-extractor dsk creo que a veces lee archivos con cabecera plus3dos. ejemplo : chase hq2. tampoco parece obtener bien siempre los datos (de otro sitio...)
lecturas de plus3dos headers no van bien: Real length file SCREEN  .    read from PLUS3DOS header: 55560


-Linux: al hacer alt-tab para ir a otra ventana, al volver con raton por ejemplo, el alt "sigue pulsado" en ZEsarUX



-revisar mensajes splash (por ejemplo de cambio modo video) que aparezcan correctamente cuando hay ventanas en background
->parece que con config actual, no se ve el mensaje splash aunque borra decoraciones ventanas
->con noconfigfile, si que muestra splash. aunque se ve el texto por debajo de otras ventanas abiertas


-quiza seek beyond limit no deberia saltar error (solo verbose), caso de tauceti pcw

-rutinas speech y kill speech se llaman aunque no haya nada pendiente. desde timer, llama a scrtextspeech_filter_run_pending

-file browser no muestra dispositivos. importante para uart
Por alguna razón, en /dev no llega a leerlos ni entrando antes del filtro. Quiza algun parametro especial del directorio
o algo que no hago bien al leer directorio. La solución pasa por escribir el nombre directamente en el file selector (pulsando TAB o click de raton
arriba)
-no lee enlaces simbolicos en filesystem: ejemplo /home/pi/PREPARADOS de raspiboy
-no se ven enlaces simbólicos en navegador de archivos. Como mínimo de Mac no se ven. Y en Linux?
-quiza get_file_type deberia excluir sockets y devices, no considerarlos archivos normales,
asi en smartload y similares no aparecerian -> pero en caso de UART si que deben salir dispositivos!!

-al conmutar de ventana de ZEsarUX, en Mac, a veces se congela la aplicación. por que? tanto pasa con menu abierto como cerrado.

-revisar pantalla completa en SDL, X11
--en sdl1, con windows en maquina virtual, parece que pone una resolucion menor que la ventana de ZEsarUX, y el footer y la pantalla emulada quedan mezcladas


-cambio de maquina con full screen (16k a 48k) peta: quiza son en Mac?

-boton derecho sobre una ventana, que conmute a esa ventana (pero solo cuando el uso de boton derecho no sea ESC)
aunque cuando conmuta con boton izquierdo, espera a liberar el boton y por tanto no se lanza la accion del boton izquierdo
(y no se lanzaria tampoco la del botón derecho)


-Al conmutar de ventana, no guarda del todo la posicion, pues no restaura bien al desmaximizar: ejemplo
*Esto en ascii table. Posicion 1. La muevo a otra posicion, Posicion 2
*Conmuto a otra ventana (pulsando con raton en otra ventana). Vuelvo a ascii table. Maximizo, y desmaximizo. En vez de volver a Posicion 2, se va a Posicion 1.

-si se pulsa boton de cerrar todos los menus, desde una ventana que se ha abierto desde otra con menu tabulado, se cierra esa ventana de menu tabulado,
en vez de dejarse en background
Ejemplo: AY Player, pulsar Editar playlist, y ahí cerrar todos menus


-full screen en cpc + real video (y creo que sin real video tambien) se ve mal. Probar por ejemplo con brunilda dandanator

-en linux, con "stop emulation on menu", raton no mueve opciones de menu, ni deja mover ventanas
->no he conseguido reproducirlo

---Fin Errores---



-------------
---Mejoras---
-------------

-mejorar render paws/gac/daad/quill:
*uso atributos igual que spectrum: 8x8 paper+tinta
*implementar relleno: mapa de puntos rellenos, y mostrar con tramado adecuado. solo fill cuando ventana esté dirty (misma logica que Location Image o ZXLife por ejemplo). algoritmo relleno recursivo? habria que tener un mapa de pixeles de spectrum de 256x192 tal cual

-poder detectar si una instancia se ejecuta desde docker (y NO si se ha compilado desde docker):
esto a nivel de estadística, permito saber en estadisticas web (enviando un parametro) que se han ejecutado instancias de testeo de docker

-mejoras accesibilidad:
* https://www.w3.org/TR/low-vision-needs/
* eventos en menu con sonidos. metiendo sonido raw directamente en buffer de sonido? o quizá sonidos que sean frecuencias fijas (notas)
aprovechando cosas como el frequency generator
ok-eventos: error, mover cursor, cerrar ventana (ventana no de menu)

-dall-e. text aventure location image
*esperar a waitpid?
*en hobbit las descripciones salen antes de borrar la pantalla
*faq de dall-e: comprar creditos en openai (no en dall-e), export variable KEY en windows y  Linux/mac
*en linux: cierro ventana imagen, borro output imagen, abro y segfault



-ctrl/alt +qaop o wskl para mover ventana, en vez de shift, y hacer que todas las ventanas lo soporten (por ejemplo ahora solo va con ventanas que no tengan menu)



-text adventure map: texto en mapa deberia seguir char filter. Pero char filter
esta pensado solo para print char y mostrarlo en consola. deberia haber una funcion que teniendo un caracter, retornase otro pasado por el filtro

-Mostrar juego cargado en titulo ventana. Desaparece al hacer reset. Que limite tiene el texto en los diferentes sistemas operativos?

-Browser cintas standard que permita alterar la posición de la cinta

-parametro de setting para process switcher para estar siempre encima de todas las ventanas

-setting de "siempre visible" en ventanas, que tambien el foco funcione al pulsar encima y/o pasar el raton, aunque haya otra ventana por encima
ejemplo: poner el process switcher siempre visible, y pasar otra ventana por encima, los clicks de raton no van al process switcher


-setting autorebobinado de cintas real tape?

-zxvision_window: buffer para pixeles, con doble buffer para saber si no ha cambiado un pixel, no refrescarlo
Hacer uso de parametro dirty, usado igual en draw_window_contents, para saber _si hay que redibujar capa de pixel o no
ventanas escriben aqui con otra funcion, por ejemplo llamada zxvision_putpixel_buffer, o quiza, renombrar
todas zxvision_putpixel por zxvision_putpixel_direct, y la nueva llamarla tal cual zxvision_putpixel
*definición anterior:
-Nuevo concepto para ventanas:
Buffer de pixel gestionado desde ventanas y renderizado desde draw window contents
Ideal para help keyboard por ejemplo
En draw window contents solo renderiza si se ha modificado o bien la capa de texto o de la de píxeles. Y en ese caso renderiza las dos capas


-----tbblue:
Se probaron cambios presentes en carpeta tbblue_cambios_pruebas_ultimo_cambio_alt_rom_ZEsarUX_10_10/

* carga nex falla. aunque tileeditor.nex funciona, tambien show512.nex
* carga z80 falla
* carga tap falla
* carga sna falla
* guide desde el menu principal falla
* tape loaded desde menu principal falla
* saltar a 48kb basic desde el menu principal funciona
* saltar a 128kb basic desde el menu principal falla
* tape loader desde menu no carga

* carga Bas FUNCIONA
* juegos zx81 FUNCIONA
* juegos zx80 FUNCIONA
* juegos zmachine FUNCIONA
* dizzy.dsk FUNCIONA
* .aky songs FUNCIONA
* dot commands desde cli FUNCIONA. ejemplo .cowsay. PERO .mem peta


*registro C0. lo pone a 8 en el boot

0xC0 (192) => Interrupt Control
(R/W) (soft reset = 0)
  bits 7:5 = Programmable portion of im2 vector*
  bit 4 = Reserved must be 0
  bit 3 = Enable stackless nmi response**
  bits 2:1 = Reserved must be 0
  bit 0 = Maskable interrupt mode: pulse (0) or im2 (1)
* In im2 mode the interrupt vector generated is:
  bits 7:5 = nextreg 0xC0 bits 7:5
  bits 4:1 = 0  line interrupt (highest priority)
    = 1  uart0 Rx
    = 2  uart1 Rx
    = 3-10  ctc channels 0-7
    = 11 ula
    = 12 uart0 Tx
    = 13 uart1 Tx (lowest priority)
  bit 0 = 0
* In im2 mode the expansion bus is the lowest priority interrupter
  and if no vector is supplied externally then 0xFF is generated.
** The return address pushed during an nmi acknowledge cycle will
  be written to nextreg instead of memory (the stack pointer will
  be decremented) and the first RETN after the acknowledge will
  take its return address from nextreg instead of memory (the stack
  pointer will be incremented).  If bit 3 = 0 and in other
  circumstances, RETN functions normally.


-registros que se resetean con soft reset. tanto al escribir registro 2 como cpu reset de menu
-quiza soft reset no esté activando trap de divmmc (si es que se cumplen las condiciones)

-revisar altrompointer en poke_byte
---- fin tbblue


-lectura de audio de casette? SDL1 parece que no permite hacerlo


-pcw: soporte puerto FF para cambiar modo video, poder definir una zona en pantalla donde aplicar modo color o modo normal.
https://github.com/MiSTer-devel/Amstrad-PCW_MiSTer

-pcw modo color. knight lore por ejemplo. Implementado modos 0-2

https://www.habisoft.com/irmia/comentarios.asp?id=358

Modo 0 (720x256x2), el nativo del PCW: negro y verde, o Negro y blanco, a elegir vía puente.
Modo 1 (360x256x4): los colores de la paleta 1 con intensidad del modo de 4 colores de la CGA.
Modo 2 (180x256x16): los colores de la paleta de la CGA (los 16 clásicos que trae por defecto la EGA).
Modo 3 (360x256x16): los mismos colores que el modo 2. Aquí tenemos píxeles cuadrados, como el modo 1 pero con los colores del modo 2. ¿La trampa? Es un modo de atributos: no podemos tener más de dos colores distintos en una celda 1x8. Facilita mucho portar cosas de Spectrum, MSX, Thomson, … Y si mantenemos los colores tenemos la mitad de memoria de vídeo, con lo que es más rápido el volcado, movimiento de sprites, etc.


-custom rom
*manera de seleccionar maquina +2e, que es +2a40 con rom "alternaterom_plus3e_mmcen3eE.rom"
find_sharedfile(CUSTOM_MACHINE_2E_MMC_ROM_FILE,custom_romfile);
#define CUSTOM_MACHINE_2E_MMC_ROM_FILE "alternaterom_plus3e_mmcen3eE.rom"


-plus3doshandler: se necesita muchas revisiones para que funcione correctamente, algunas llamadas al leer sector que se va a leer puertos,
ejemplo badlands.dsk y rutina en la 2114h que esta en los traps

---ZRCP
*array para guardar los threads que se van lanzando?
-completar remote_cerrar_conexion para que cierre todas las conexiones de cliente que puedan haber


-botones superiores redefinidos que puedan tener parametros asociados, por ejemplo set-machine y parametro "48k"

-algun tipo de build que no sea ni linux ni mac ni windows, sino simplemente UNIX_GENERIC o algo similar

-conviene ocultar Wall y Wextra en version estable? puede salir algun warning util solo en version estable? no deberia, son warnings muy especificos

-Botón derecho botones acciones: editar botón superior. Y en dispositivos? Quizá settings de ese dispositivo?

-Quiza registro DE al volver de rutina de trap load, deberia ser DE -=bytes_leidos


-Renombrar setting de background windows por multitask windows? O algo así
Debe indicar que se puede dejar ventanas en background pero que también pueden haber múltiples ventanas a la vez


-al abrir ventanas por primera vez, la coordenada y debe ser por debajo de los botones superiores



-driver fbdev en pc , con "zesarux --noconfigfile --vo fbdev > /dev/null". al desactivar border, genera panic. tambien desactivando border


-Ayuda en process management. Cada ítem de ayuda muestra mismo mensaje. Además debe ser un string definido una sola vez que en cada ítem apunta a mismo puntero . Que significa esto????????
-process management: no muestra uso tiempo de ventana zxlife si la ventana actual es zxlife


-Pulsar en ventana emulación desde menú que quizá cierre menú. Depende de settings background. O de setting expresamente para esto

-En visor de disco (dsk) con archivos, que indique User number (UU) de cada archivo? Ver https://www.seasip.info/Cpm/format22.html
-O incluso mejor un browser/viewer de formato CP/M, que indique:
*extent number
*date file
*etc


-registro EPC para tbblue, zxuno, ....


-Si se cambia el prompt de ZRCP, esperar también ese prompt en ZENG



-Funciones de utils no deberían involucrar nada del menú


-quiza funcion que espera_no_tecla sin considerar movimiento raton, deberia ser la habitual, y solo en casos concretos
usar la que si considera movimiento raton


- ajustar memory zones para zx81: rom deberia ser 8kb. revisar tambien zx80


-A mejorar en Next para próxima versión: Ver TODO_machines, sección Next, en : "A mejorar en Next para próxima versión"


-incorporar ZEsarUX en taskbar (dbus??) de kde, gnome o lo que se pueda



-Texto fondo tiene que sea carácter 255 para que no se redibuje con espacios. O usar un flag de ventana que dice que no tiene que redibujar el texto



-paws debug que funcione con aventuras en 128k. Ver manual de paws para esto
-daad no usa 128kb. Aunque hay un nuevo parser de daad (hecho en zxbasic) que si usa 128kb. comentar con Carlos-uto

-mensajes panic con codigo error. Por ejemplo, 0001 out of memory. mas bien seria un tipo de error, porque out of memory
hay muchos tipos: out of memory cargando, out of memory asignando buffer rainbow, etc.
Seria: error message: igual que hay ahora. Y luego clases: 0001 out of memory. 0002 segmentation fault, etc

-combinacion de tecla especial que haga un "reinicio" del menu, por si se ha colgado en algun sitio

-footer que tambien amplie tamaño segun menu_gui_zoom

-Por determinar visibilidad de processswitcher. siempre visible si o no?



-quiza obtener mas info en descargas speccy online: autor, tamaño archivo, etc


-pid de ventana creo que deberia incrementarse siempre. ahora si cierras y abres una ventana continuamente, usa mismo pid, porque siempre busca el ultimo disponible. quiza al crearse una ventana deberia incrementarse en 1? o no?



-texto speech en menu se oye antes que se empiece a mostrar filesel

-en rpi quiza compilar con onebitspeaker? o no? entiendo que pcspeaker no usara sino que intentara usar gpio


-Función joystick conmuta full screen
-F función cualquiera Tecla F por joystick

-Teclado en pantalla en gpi borra el input de debajo
-on screen keyboard, si se activa desde menu, luego no refresca adecuadamente las ventanas


-Smartload path tiene setting en command line? si Y en menú? es el del ultimo archivo cargado con smartload

-Juego "Simón" haciendo uso del logo X. Y con sonidos de eventos de menú

-En imagen IA de descripción, botón para pedir otra imagen a la IA

-Estandarizar el nombre del User agent en las peticiones web
Ahora:
"ZEsarUX X Darwin"

Uno de ejemplo de Safari:
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6.1 Safari/605.1.15"

Esto permite estadisticas mejor con goaccess. Aunque no parece reconocer el browser como tal "ZEsarUX/10.0"

Soportar uft-8 en el footer, que sirva para texto footer normal pero tambien con opciones de --programsettingsinfo de archivos .config.
Quitar el parche para soportar la eñe en dicha opcion
Cuidado que  en la consola si hay verbose debug, se muestra caracter extraño para la ñ

-Cat en cpc 6128 con pd765 desactivado, se cuelga

revisar paso de parametros en pthread_create, debe ser con estructuras estaticas (no en stack) o bien estructuras en malloc
y los miembros no deben ser punteros a *, sino contenido todo en la estructura
Por ejemplo en
menu_zsock_http(
    Si se cancela la query y el thread sigue activo, hay el riesgo de acceder a memoria que ya no esta disponible
Esa funcion se llama por ejemplo desde speccy browser y viene con punteros que habria que convertir todos en una estructura
mejorada de menu_zsock_http_struct en que no haya punteros
Lista en teoria completa de llamadas a pthreads con parametros a revisar:
menu_zsock_http
menu_download_file


-Visor de variables de sistema de programa en ejecución. Con nombre y descripción. Para spectrum, zx80 y 81
-Poder ver variables de una cinta .P, .O e incluso basic de spectrum (desde el bloque de basic de un .tap?)


-fbdev en linux, fbdev_cls peta al cambiar de maquina. Ejemplo de 48k a +3

-asociar archivos tap, tzx etc en Mac a ZEsarUX

-otro tipo de overlay pero que no se llame continuamente, solo se llame al mover/redimensionar ventanas.
y desde su aplicacion logicamente si que se llama a su overlay para dibujar
ejemplo: process switcher: no se necesita que continuamente se estén redibujando todos los iconos, solo cuando haya movimiento de ventanas
(pues en ese caso se repintan todas).
otro ejemplo: el logo de la ventana de about: solo hay que redibujarlo cuando hay cambios de ventanas
otro ejemplo: help keyboard
y muchos otros ejemplos en que son pixeles que no cambian, que no hay que redibujar continuamente
Con eso se reducirá mucho el uso de cpu en cada frame

-cambio modo stereo de zxuno mediante hardware. registro F7. https://www.zxuno.com/wiki/index.php/ZX_Spectrum
algun programa que lo use? el zxunocfg?

-poder usar tipo de letra de los iconos en el menu. cuando se active char width a 4

-cuando se llama a funcion overlay de cada ventana, se deberia pasar como parametro la propia ventana (zxvision_window *),
asi la funcion de overlay no tiene que guardar un puntero estatico fuera siempre
complementario: quizá en todos los overlay que no necesiten redibujar siempre, detectar el flag que indica precisamente que se ha borrado, movido, etc, para solo redibujar cuando haya que hacerlo (dirty_user_must_draw_contents)
->Realmente hay pocas ventanas que tengan overlay de pixeles estaticos
Una de ellas es el "About" pero ya esta usando dirty_user_must_draw_contents


-poder hacer save pantalla a .txt, usando ocr y pixeles a caracteres, como hace curses

-menus (pero no menus tabulados) no deberian permitir minimizar, aunque sí redimensionar.
Creo que no hay setting en zxvision_window para permitir redimensionar pero no minimizar


-con speech en menu habilitado
*teniendo varias ventanas abiertas
*pulsar F5 para abrir menu principal
*pulsar ESC
*se cierra menu, se va el foco a la ventana de mas arriba, y se lee el contenido a speech. ERROR!
*luego se quita el foco de esa ventana y todo prosigue normalmente

-algun tipo de indicacion en un menu que diga que no debe activar salir_todos_menus al pulsar ESC, por ejemplo en algunos no quiero
que se cierren los anteriores, ejemplo:
*cambio de zona de memoria desde debug cpu o hexdump
*breakpoints
*watches
En estos casos de momento lo que he hecho es que al final de cada menu se haga un "salir_todos_menus=0"


-hexadecimal editor deberia refrescar continuamente al estar dentro de la ventana?

-si pulsado OSD keyboard (F8) desde una ventana, al volver con ESC quedan mal redibujadas las ventanas

-tecla de (G)graphics en vista 8 ya no deberia salir para GAC, porque eso ya se hace desde vista 8

-tiene sentido items de "ESC back/close"?

---Fin Mejoras---