Índice
de entradas de Preservación de máquinas
Colabora con el proyecto: Simplemente haz click de vez en cuanto en los anuncios, no te cuesta nada y me ayudas con los costes del proyecto. Cada 11 click aportas un euro.
Colabora con el proyecto: Simplemente haz click de vez en cuanto en los anuncios, no te cuesta nada y me ayudas con los costes del proyecto. Cada 11 click aportas un euro.
Como primer paso voy a desarrollar el interface para el emulador del Kenbak-1, esto me permite conocer a fondo como se comporta la máquina, y el manejo de su interface, en este caso los botones y luces frontales.
El desarrollo lo quiero hacer en Visual Studio, usando Visual Basic, que mejor que el viejo y querido Basic para emular estas máquinas, aunque luego lo pasaré a C para poder subirlo al Arduino.
El interface es muy simple, se trata de poner un fondo con la máquina, y sobre el ubicar para cada bombilla un objeto imagen, que puedo ir alternando entre dos imágenes, una de luz encendida y otra de luz apagada. Los interruptores lo mismo, son objetos imagen que voy alternando entre las dos posiciones del interruptor. Los botones son objetos button que ya tienen un pequeño efecto cuando los pulsas por no complicarme, aunque podrían ser imágenes igualmente. En los botones voy a activar que con clic se pulsan, y con doble-clic se mantienen pulsados hasta otros clic, de esta forma se pueden pulsar dos botones a la vez, lo que hace falta para la ejecución paso a paso.
Con esto tengo el interface del aparato, pero por comodidad voy a poner también los registros visibles y la memoria debajo, con botones para verla en octal, decimal, hexadecimal, binario, o no verla. Así es mas sencillo meter programas para el aparato. Al disponer solo de 256 posiciones de memoria, caben todas en una sola pantalla, pero no voy a poner 256 objetos TextBox durante el diseño, y responder a 256 eventos de validación diferentes en ellos, sino que los monto en tiempo de ejecución con un bucle y los enlazo a un solo manejador de eventos de validación, así es mas rápido y práctico. Cuando arranca el emulador la memoria está oculta por defecto, pero he puesto los registros principales visibles de todas formas.
Emulador sin memoria visible |
Pulsando cualquiera de los botones se abrirá la inspección de la memoria y este es el resultado de momento, pues estoy pensando en otras alternativas para que se vea el código del programa, pero así cabe bien en una pantalla de ordenador actual.
Emulador con la memoria visible |
Para los programadores, este es el trozo que crea los textBox de las posiciones de memoria, enlaza el evento de validación para poder editar sin problemas, y los añade al formulario:
'Creo los TextBox para presentar la memoria For Col = 0 To 15 For Lin = 0 To 15 'Calculo la posición para evitar hacerlo muchas veces, y creo el TextBox con su manejador de evento Dim nro As Integer = Lin * 16 + Col Dim tb As New TextBox AddHandler tb.Validating, AddressOf bt_Validating 'Ponemos colores especiales en estas posiciones de memoria Select Case nro Case posRegA, posRegAOC : tb.BackColor = col_RA Case posRegB, posRegBOC : tb.BackColor = col_RB Case posRegX, posRegXOC : tb.BackColor = col_RX Case posPC : tb.BackColor = col_PC Case posOUT : tb.BackColor = col_OU Case posIN : tb.BackColor = col_IN End Select 'Ajusto el TextBox tb.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) tb.Location = New System.Drawing.Point(Base_Columna + (Col * tbAncho), Base_Linea + (Lin * tbAlto)) tb.Name = "M" + (nro).ToString.PadLeft(3, "0"c) tb.Size = New System.Drawing.Size(tbAncho, tbAlto) tb.TabIndex = 102 + (nro) tb.Text = tb.Name 'Añado el TextBox al control que presenta la memoria Me.gbMemoria.Controls.Add(tb) 'Me lo guardo en el arreglo tbMemoria(nro) = tb Next Next
please upload again
ResponderEliminar