--------Para próxima versión:


-Error unpaws????
Thread 8 Crashed:
0   libsystem_kernel.dylib        	0x00007fff736102c6 __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff736cbbf1 pthread_kill + 284
2   libsystem_c.dylib             	0x00007fff7357a745 __abort + 144
3   libsystem_c.dylib             	0x00007fff7357aff3 __stack_chk_fail + 205
4   zesarux                       	0x0000000106702e13 util_paws_dump_vocabulary + 2019
5   zesarux                       	0x0000000106703a08 util_unpawsetc_dump_words + 104 (utils.c:14074)
6   zesarux                       	0x00000001066a1c5e menu_unpaws_ungac + 46 (menu.c:22138)


-Probar malloc en 32 bit de 2 gb

-En snapshot poder guardar notas. Visibles desde menú snapshot. Se pierden al cargar otro snapshot
Esto es un nuevo tipo de campo en ZSF

Como se pide? Al guardar un snapshot o desde menú snapshot? Quizá desde menú y con un first aid que lo explique


-separar los extras en otro repo? Reinicializar repositorio de ZEsarUX?

-Mostrar info en menu network de descargas, commits etc

-Modo de colores solarized


-utils.c: In function ‘util_extract_hdf’:
utils.c:11099:18: warning: this decimal constant is unsigned only in ISO C90
                  2147483648L, //8. 2 GB
                  ^
utils.c: In function ‘util_ascii_to_binary’:
utils.c:11248:9: warning: this decimal constant is unsigned only in ISO C90
         const unsigned int mascara=(unsigned int)2147483648;

Puede dar problemas?


-ventana debug cpu: si se estaba en vista 8, y luego cargamos un juego que no sea de paws/daad/quill,
la vista 1 sera ventana grande pero con alto total reducido. Parecido a lo que sucedia al cambiar de vista


-unpaws con quill:
*compression tokens existen?

-unpaws: 
*compression tokens no siempre estan hasta el 255


-ejemplos para spool, como:
./txt_to_basic_lines.sh FAQ 3 si si no > pruebaspool2.txt


-al salir emulador desde exit-emulator de ZRCP no acaba de salir del todo. Luego salgo con ctrl-c y el footer luego arranca desactivado


-cpuid ("zxid") según especificación de mcleod


-al cargar smartload, por ejemplo ultimo cargado es thelosttapesofalbion. situa el cursor ahi bien, 
pero al subir para arriba desplaza desde scroll sin mover
cursor hasta que esta arriba. O sea, deberia mover siempre cursor y no empezar a hacer scroll hasta que no esta arriba

-ZENG: Desde Mac (Master) a Windows (slave). Si abro ventana de enviar mensaje desde windows, al cabo de un rato parece 
desincronizarse y hasta acaba petando la instancia de Windows

-Impresión caracteres en consola texto nunca debe mostrar el 127. Es Delete
Quizá mostrar C en caso de 127
->Hecho de momento en chardetect y speech




-uso de settings.c y settings.h. revisar que tiene que ir ahi ?

-stdout algunos menus que no van bien. Como display->view colour palette

-Revisar al expulsar cinta si Windows lo libera 



-En overscan con curses salen colores con ??? a la derecha fuera de pantalla 

-Opción para formato de grabación de autosave snap

-Semáforo en debug print tiene sentido??
Quiza por el sprintf (pending_error_message
 para que no se pudiera escribir desde dos sitios?

-semáforos en Windows. Como? De momento no hace bloqueo si es Windows 

-Cuando haya fat driver, poder descargar cp/m dentro de la imagen mmc de TBBlue 

-Soporte ulaplus en Next

-Para próxima versión zx81/zx80 con utf blocky en curses 


--RED:

-Query zsock http que detecte si query es mayor que 1024 y de error

-rutinas zsock_read_all: deberia reintentar un par o dos de veces si no se ha alcanzado la longitud deseada
o bien, que quien llame ahi, que mire si se ha llegado al final de lo esperado
o bien que al principio se diga la longitud de lo que se envia-> util para get-snapshot

-Quizá Windows falla a aveces porque la lectura de datos del socket no viene toda de una vez?


--Fin RED


-para comprobar coordenada y footer, calcular desde abajo de alto ventana. Y usar funcion comun en screen.c
-quiza funcion footer a scr_putchar_footer_comun_zoom se tiene que hacer con coordenadas 0,1 o 2 simplemente

-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)

-condiciones breakpoint para paginas memoria Next (SEG0, SEG1, .... SEG7)

--Enter cpu step en ZRCP con drivers null stdout y simpletext. Se puede abrir menú con drivers null y simpletext? 
Con printf verbose error?


 
 --RED:

-zsock http request: Buffer response en z80_byte y no char

--Fin RED



--ZENG:


*en remote.c, bufferes de longitud MAX_LENGTH_PROTOCOL_COMMAND deberian ser con malloc
Ademas habria que hacer que MAX_LENGTH_PROTOCOL_COMMAND sea un poco mayor que ZRCP_GET_PUT_SNAPSHOT_MEM

*Quizá en sigpipe puede averiguar que socket ha fallado?
Quizá sigpipe se puede gestionar diferente para cada thread?
*funciones de envio snapshot, teclas y mensajes, deberian ver si reciben remote prompt? al llamar a zsock_read_all_until_command


Ampliar buffer de recepción y el de copia. Y asignarlos por malloc 

*parar thread zeng y cerrar socket zeng al salir emulador
*asegurarse que cuando conecte zeng contra remoto al principio, retorna el prompt esperado. Ya lee version pero quiza 
habria que hacer que leyera el primer prompt correcto


--Fin ZENG


-meter real tape en linea comandos siempre acelera la carga, aunque este desactivado
 ejemplo: ./zesarux --realtape tetris2.pzx

-no se ven enlaces simbólicos en navegador de archivos. Como mínimo de Mac no se ven. Y en Linux?



----Mac SSL


-como incluir libreria ssl en mac? hace falta /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
-quiza otro binario y que el usuario pueda copiarlo a mano, incluido la libssl?

-el compilado final de mac hay que hacerlo sin ssl? O ver si enlaza con la ssl del sistema operativo. Si no, igual se puede incluir la de homebrew de manera estática
Parece que depende del de brew:
~iMac-de-Cesar:src cesarhernandez$ ./zesarux --noconfigfile --ao null
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /Users/cesarhernandez/Documents/ZEsarUX/zesarux/src/./zesarux
  Reason: image not found
Abort trap: 6

-quiza meter la libreria ssl y el binario compilado en carpeta extras


otool -L zesarux|grep ssl

Es mas complicado pues luego va a buscar librerias de /usr/local/Cellar/openssl


----Fin Mac SSL


-Habilitar modos timex al seleccionar next. Importante para player nextdaw por ejemplo 

-Funciones deprecated mac corregir 

-4 puertos Dac de Next


-Setting de guardado tamanyo memoria RAM de divmmc/divide (probablemente variable diviface_current_ram_memory_bits)

-Soporte Z88 en snapshots zsf

-Función que usando misma rutina de imprimir Unicode diga la longitud en bytes que ocupa el carácter. 
Así sabremos la longitud de aquellos caracteres que si que imprimimos

Los que no, será 1 y interrogante 

-Idea de animación para logo

ZEsarUX con letras de colores rojo amarillo verde azul. Se comprime el texto y la Z va pillando los colores de las letras 

-cambiar de maquina no tbblue a tbblue provoca que no funcione divmmc

porque?

--ZSF tbblue:

* estado dma (esto no solo afecta a tbblue sino a todos. tener en cuenta grabar tambien valor datagear_dma_tbblue_prescaler)




-Tbblue: al cargar juegos .tap de 48k por ejemplo, cuando pide en que modo cargar, usa un nuevo registro en que cambia la rom:


-There was a major change in the hardware to support better compatibility with the 48k and 128k. Now when you load 48k or 128k programs, the original roms are put in place as well. This is done using a new hardware feature the alternate rom:
0x8C (140) => Alternate ROM 
(R/W) (hard reset = 0)
IMMEDIATE
bit 7 = 1 to enable alt rom
bit 6 = 1 to make alt rom visible only during writes, otherwise replaces rom during reads
bit 5 = 1 to lock ROM1 (48K rom)
bit 4 = 1 to lock ROM0 (128K rom)
AFTER SOFT RESET (copied into bits 7-4)
bit 3 = 1 to enable alt rom
bit 2 = 1 to make alt rom visible only during writes, otherwise replaces rom during reads
bit 1 = 1 to lock ROM1 (48K rom)
bit 0 = 1 to lock ROM0 (128K rom)
The locking mechanism also applies if the alt rom is not enabled. For the +3 and zx next, if the two lock bits are not
zero, then the corresponding rom page is locked in place. Other models use the bits to preferentially lock the corresponding
48K rom or the 128K rom.

--zsock_http:
-no tiene que tener un maximo de bloques la descarga, esto solo cuando el bloque es de 0 bytes, entonces si que aumentar
En ese caso no hacer mas alla de 500 por ejemplo

-Texto de “connecting” en ventana de progreso que se pueda cambiar
En ZENG queda bien pero en descargas no 



--ALTROM
Registro nuevo bloqueo rom

nr_8c_altrom_lock


//8c: 
		/*
		Registro nuevo bloqueo rom

nr_8c_altrom_lock


There are two 16k blocks of memory set aside to hold alternate roms.  
These exist at the same level as the usual roms and can substitute for them.

Only bits 7:4 of nextreg 0x8c apply to the current state of the machine.  
bits 3:0 are copied into bits 7:4 on a soft reset.

The altrom replaces the rom in the bottom 16k if nextreg 0x8c bit 7 is set (altrom_en) 
and either the cpu is writing with nextreg 0x8c bit 6 is 1 or the cpu is reading and nextreg 0x8c bit 6 is 0.  
The intention here is the altrom can be put in write-only mode so that the regular rom is still present for 
reading but the altroms can be written.  Remember mmu can still cover it because the altrom is at the same level as normal rom.

Which of the two altroms is seen?  This depends on the machine type but for a zx next the type is +3.  For a +3 machine:

 if nr_8c_altrom_lock_rom1 = '1' or nr_8c_altrom_lock_rom0 = '1' then
    sram_active_rom <= nr_8c_altrom_lock_rom1 & nr_8c_altrom_lock_rom0;
    sram_alt_128 <= not nr_8c_altrom_lock_rom1;
 else
    sram_active_rom <= port_1ffd_rom;
    sram_alt_128 <= not port_1ffd_rom(0);
 end if;

sram_alt_128 is either 0 or 1 choosing one of the altroms.

sram_active_rom is the rom selection 0-3 used when the altrom is not active.  
port_1ffd_rom is two bits with the usual port_1ffd rom bit as most significant bit and 
the port_7ffd rom bit as the least significant.

I think that covers the details.


0x8C (140) => Alternate ROM
(R/W) (hard reset = 0)
IMMEDIATE
  bit 7 = 1 to enable alt rom
  bit 6 = 1 to make alt rom visible only during writes, otherwise replaces rom during reads
  bit 5 = 1 to lock ROM1 (48K rom)
  bit 4 = 1 to lock ROM0 (128K rom)
AFTER SOFT RESET (copied into bits 7-4)
  bit 3 = 1 to enable alt rom
  bit 2 = 1 to make alt rom visible only during writes, otherwise replaces rom during reads
  bit 1 = 1 to lock ROM1 (48K rom)
  bit 0 = 1 to lock ROM0 (128K rom)
The locking mechanism also applies if the alt rom is not enabled. For the +3 and zx next, if the two lock bits are not
zero, then the corresponding rom page is locked in place. Other models use the bits to preferentially lock the corresponding
48K rom or the 128K rom.


Allen Albright I see on the vhdl sources the new memory map with the alt roms

-- 0x000000 - 0x00FFFF (64K)  => ZX Spectrum ROM         A20:A16 = 00000
   -- 0x010000 - 0x011FFF ( 8K)  => divMMC ROM              A20:A16 = 00001,000
   -- 0x012000 - 0x013FFF ( 8K)  => unused                  A20:A16 = 00001,001
   -- 0x014000 - 0x017FFF (16K)  => Multiface ROM,RAM       A20:A16 = 00001,01
   -- 0x018000 - 0x01BFFF (16K)  => Alt ROM0 128k           A20:A16 = 00001,10
   -- 0x01c000 - 0x01FFFF (16K)  => Alt ROM1 48k            A20:A16 = 00001,11
   -- 0x020000 - 0x03FFFF (128K) => divMMC RAM              A20:A16 = 00010
   -- 0x040000 - 0x05FFFF (128K) => ZX Spectrum RAM         A20:A16 = 00100
   -- 0x060000 - 0x07FFFF (128K) => Extra RAM
   -- 0x080000 - 0x0FFFFF (512K) => 1st Extra IC RAM (if present)
   -- 0x100000 - 0x17FFFF (512K) => 2nd Extra IC RAM (if present)
   -- 0x180000 - 0x1FFFFF (512K) => 3rd Extra IC RAM (if present)

	-> Soft reset can be the button or via nextreg 2

-> Ver patch_tbblue_add_alt_rom.diff

When altrom is off (bit 7), the locking mechanism applies to the normal roms.  
A few posts up I gave you an excerpt from the vhdl where you can see the lock bits are checked to 
determine which normal rom (sram_active_rom) and which altrom (sram_alt_128) will be selected in 
the bottom 16k (later on the choice between normal and alt rom is made depending on whether the alt 
rom is enabled and whether it's a read or write).

That applies to the +3 machine type (the next).  I'm not sure how far you are going with the emulation.  
If you are doing the machine types (you boot into the 48k personality with a machine type of 48k instead of +3) 
then normal rom selection has more cases.  
See https://gitlab.com/SpectrumNext/ZX_Spectrum_Next_FPGA/-/blob/master/cores/zxnext/src/zxnext.vhd#L2299 .  
The machine type is coming from nextreg 3 
 https://gitlab.com/SpectrumNext/ZX_Spectrum_Next_FPGA/-/blob/master/cores/zxnext/src/zxnext.vhd#L4586

The machine type does affect a few things like which ports are used for the multiface (multiface 1, multiface 128, multiface +3), whether certain configuration bits in the nextreg can be changed and some port decoding on ports 7ffd, eg, (although that is going to be changed to depend on video timing instead soon).

-Quizá falte alguna instrucción de z80n para lo del altrom?

-Soft reset can be the button or via nextreg 2: que cuando haga ese reset, copie bits bajos a altos de registro 8c

--Fin ALTROM

-Windows no es capaz de usar imagen mmc de 2 GB. Quiza porque es un compilado para 32 bits?

-Mkdir en esxdos handler?. running from RAM, not dot commands, IX points to the ASCIIZ filename. The call is f_mkdir equ fsys_base + 18;			// $aa

-Eliminar función realtime

-feature request. Could the Chloe support CPU speed setting via the Uno register?
