Scooter lo que propone no esta mal para implementar como una siguiente version, creo entender que seria algo como crear dos paginas de 64K donde residen independientemente en una la ROM y en otra la RAM sin cruzarse , me hago la idea de que tendria que apoyarse en una extencion del acceso al mapa de memoria con una señal extra mas de bus de direcciones que seria como un A16 que al reseteo por hard le da el funcionamiento a la pagina de la ROM y esta despues de recibir los datos via serial accederia a la segunda pagina donde reside enteramente la RAM y como dice al terminar la recepcion de los datos esa señal A16 commutaria para intercambiar el orden de las paginas y el programa a ejecutar arrancaria en la direccion 0000H ya desde la RAM, le andaba dandole vueltas en mi cabeza como hacer la commutacion de paginas de forma segura, un metodo asi de tener toda la RAM disponible es casi equivalente a como la tecnica invasiva de colgar a todos los buses de datos, direcciones, control las amplias señales digitales de un arduino mega mientras mantiene al microprocesador en estado de tri-estado , luego ya con el sketch envian toda la data mismo DMA a la RAM y luego lo liberan para que arranque .
Hace dos noches que llevo trabajando en el Bootloader , utilize el Z80 simulator IDE para prepararlo, este me genero casi 2 Kbytes al compilar en hexadecimal y pensaba que porque tanto asi que con el codigo en ASM le tuve que andar reduciendo el codigo inflado haciendolo bajar hasta 1 Kilobyte y eso que aun se puede optimizar para reducirle un 20% mas, bueno entonces al ser de esa capacidad tan pequeña respecto a los 64K del mapa total se podria hasta poder considerarlo como tener 1K de ROM + 63K de RAM pero para hacer una distribucion asi requeririamos ya tambien incluir una gal22v10 , con muchos cambios mas de rediseño de hardware , asi que por este momento por cuestion de simplicidad de circuiteria seguiria manejandolo como dos bancos de 32K que ya esta distribuido asi en los modulos preparados, el Bootloader + RAM , y en el codigo ASM en la cabecera hay que agregarle el ORG 8000H para que corresponda con el banco de RAM.
Dr. Zoidberg efectivamente me estoy inspirando en el funcionamiento del bootloader del arduino , asi que casi se comportara de forma similar ,despues de energizar el circuito el bootloader le hara al Z80 estar a la espera de la llegada de datos via puerto serial por un tiempo , los datos van a llegar por el usart 68B50 generando interrupciones , pasado este tiempo pasaria a ejecutar el programa que tenga cargado en la RAM , pero como no hay ningun programa cargado tendria que quedarse en un bucle de espera , ahora para completar la parte del funcionamiento del Arduino de ejecutar un programa cargado en su memoria flash , este seria suplido no por una RAM con bateria sino tal como lo hace un Propeller de Parallax con una memoria I2C 24C256,
en un modulo preparare un 24C256 + RTC DS1307 , en la memoria I2C se respaldara el contenido de la RAM de tal manera que una vez energizado el circuito y al no recibirse por unos segundos nada desde la PC el bootloader haria que el contenido de la 24C256 se vuelque completa hacia la RAM y comienza su ejecucion.
El Basic del Z80 simulator IDE es muy basico , le faltan mas instrucciones y tipos de variables , si yo manejara un Visual Basic me daria a la tarea tambien de crearle una plataforma IDE con un Basic , C , Pascal o quizas un nuevo lenguaje derivado del Sketch de arduino jeje que tenga su editor , compilador y cargador amigables , es mas hasta lo haria compatible con varios microprocesadores , asi con solo cambiar en la cabecera el microprocesador con una directiva que especifique si es para un 8085, 6502, 6809, Z80, 68008 nos daria el HEX respectivo para cargarse, despues me imagino que a las tarjetas microprocesadoras se le puede conectar toda esa gama de sensores que se conectan a los arduinos para practicas y poco a poco prepararles sus propias librerias para ir adjuntadolas
Hace dos noches que llevo trabajando en el Bootloader , utilize el Z80 simulator IDE para prepararlo, este me genero casi 2 Kbytes al compilar en hexadecimal y pensaba que porque tanto asi que con el codigo en ASM le tuve que andar reduciendo el codigo inflado haciendolo bajar hasta 1 Kilobyte y eso que aun se puede optimizar para reducirle un 20% mas, bueno entonces al ser de esa capacidad tan pequeña respecto a los 64K del mapa total se podria hasta poder considerarlo como tener 1K de ROM + 63K de RAM pero para hacer una distribucion asi requeririamos ya tambien incluir una gal22v10 , con muchos cambios mas de rediseño de hardware , asi que por este momento por cuestion de simplicidad de circuiteria seguiria manejandolo como dos bancos de 32K que ya esta distribuido asi en los modulos preparados, el Bootloader + RAM , y en el codigo ASM en la cabecera hay que agregarle el ORG 8000H para que corresponda con el banco de RAM.
Dr. Zoidberg efectivamente me estoy inspirando en el funcionamiento del bootloader del arduino , asi que casi se comportara de forma similar ,despues de energizar el circuito el bootloader le hara al Z80 estar a la espera de la llegada de datos via puerto serial por un tiempo , los datos van a llegar por el usart 68B50 generando interrupciones , pasado este tiempo pasaria a ejecutar el programa que tenga cargado en la RAM , pero como no hay ningun programa cargado tendria que quedarse en un bucle de espera , ahora para completar la parte del funcionamiento del Arduino de ejecutar un programa cargado en su memoria flash , este seria suplido no por una RAM con bateria sino tal como lo hace un Propeller de Parallax con una memoria I2C 24C256,
en un modulo preparare un 24C256 + RTC DS1307 , en la memoria I2C se respaldara el contenido de la RAM de tal manera que una vez energizado el circuito y al no recibirse por unos segundos nada desde la PC el bootloader haria que el contenido de la 24C256 se vuelque completa hacia la RAM y comienza su ejecucion.
El Basic del Z80 simulator IDE es muy basico , le faltan mas instrucciones y tipos de variables , si yo manejara un Visual Basic me daria a la tarea tambien de crearle una plataforma IDE con un Basic , C , Pascal o quizas un nuevo lenguaje derivado del Sketch de arduino jeje que tenga su editor , compilador y cargador amigables , es mas hasta lo haria compatible con varios microprocesadores , asi con solo cambiar en la cabecera el microprocesador con una directiva que especifique si es para un 8085, 6502, 6809, Z80, 68008 nos daria el HEX respectivo para cargarse, despues me imagino que a las tarjetas microprocesadoras se le puede conectar toda esa gama de sensores que se conectan a los arduinos para practicas y poco a poco prepararles sus propias librerias para ir adjuntadolas