Í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.
Ya está desarrollado el manejo del interface del aparato, creo que se comporta como el original, según lo que he visto en YouTube de uno funcionando:
Este segundo paso completa la operatoria, ahora me falta el simulador de la
máquina en sí, junto a algunas ideas sobre un ensamblador y desensamblador.
Podéis probarlo en cualquier versión de Windows a partir de XP que disponga
del Framework 2 en adelante. Es un ejecutable en un solo fichero, no necesita
instalación.
Descargar
y funcionar.
Adelanto el conjunto completo de instrucciones que estoy montando, se aprecia
que hay 16 instrucciones que se refieren todas a HALT y otras 16 instrucciones
que son NOOP, esto es así pues solo mira los tres últimos bits de la instrucción
para determinar las, y si son 000 entonces mira los dos primeros para ver si
es HALT o NOOP. También hay un pequeño hueco entre la 203 y la 207 que no están
definidas en el juego de instrucciones, tengo que investigar un poco mas que
hacían.
El que existan 32 formas de indicar 2 instrucciones y 5 no definidas permiten
ampliar el conjunto de instrucciones de la máquina, añadiendo hasta 35 nuevas
instrucciones, además del truco de hacer que una instrucción indique solo que
se extiende el juego de instrucciones, y el siguiente byte puede usarse para
ampliar en otras 255 instrucciones. Yo de momento no voy a implementar nada
de esto, voy a desarrollar la parte del emulador que me falta.
Se indica Código (Tamaño Formato) Instrucción
- Código es el valor numérico en decimal de la instrucción
- Tamaño indica el número de bytes que conforman la instrucción, puede valer 1 o 2
- Formato indica el de la instrucción, y puede ser:
- I: Operación
- A: Operación Registro, Número
- B: Operación Registro, Dato
- C: Operación Número, Dato
- Las operaciones permitidas son ADD, AND, HALT, JMD, JMI, JPD, JPI, LNEG, LOAD, NOOP, OR, ROTL, ROTR, SET0, SET1, SFTL, SFTR, SKP0, SKP1, STORE, SUB
- Los registros que se manejan son A, B y X
- Número es un entero de 0 a 4 o de 0 a 8 máximo
- Dato es el valor que se maneja en la instrucción y depende del modo de direccionamiento, puede ser:
- c indica dato inmediato, se reemplaza por el contenido del siguiente byte
- d indica dirección inmediata, se reemplaza por el contenido de la dirección indicada en siguiente byte
- (d) indica dirección indirecta, se reemplaza por el contenido de la posición de memoria indicada por el contendió de la dirección indicada en siguiente byte
- X+c indica dato indexado, se reemplaza por el contenido de la posición de memoria indicada por sumar a X (sin alterarlo) el siguiente byte
- X+d indica dirección indexada, se reemplaza por el contenido de la posición de memoria indicada por sumar a X (sin alterarlo) el contenido de la dirección indicada en siguiente byte
000 (1I) HALT | 064 (1I) HALT | 128 (1I) NOOP | 192 (1I) NOOP |
001 (1B) SFTL A,4 | 065 (1B) ROTL A,4 | 129 (1B) SFTR A,4 | 193 (1B) ROTR A,4 |
002 (2C) SET0 0,d | 066 (2C) SET1 0,d | 130 (2C) SKP0 0,d | 194 (2C) SKP1 0,d |
003 (2A) ADD A,c | 067 (2A) ADD B,c | 131 (2A) ADD X,c | 195 (2A) OR A,c |
004 (2A) ADD A,d | 068 (2A) ADD B,d | 132 (2A) ADD X,d | 196 (2A) OR A,d |
005 (2A) ADD A,(d) | 069 (2A) ADD B,(d) | 133 (2A) ADD X,(d) | 197 (2A) OR A,(d) |
006 (2A) ADD A,X+c | 070 (2A) ADD B,X+c | 134 (2A) ADD X,X+c | 198 (2A) OR A,X+c |
007 (2A) ADD A,X+d | 071 (2A) ADD B,X+d | 135 (2A) ADD X,X+d | 199 (2A) OR A,X+d |
008 (1I) HALT | 072 (1I) HALT | 136 (1I) NOOP | 200 (1I) NOOP |
009 (1B) SFTL A,1 | 073 (1B) ROTL A,1 | 137 (1B) SFTR A,1 | 201 (1B) ROTR A,1 |
010 (2C) SET0 1,d | 074 (2C) SET1 1,d | 138 (2C) SKP0 1,d | 202 (2C) SKP1 1,d |
011 (2A) SUB A,c | 075 (2A) SUB B,c | 139 (2A) SUB X,c | 203 |
012 (2A) SUB A,d | 076 (2A) SUB B,d | 140 (2A) SUB X,d | 204 |
013 (2A) SUB A,(d) | 077 (2A) SUB B,(d) | 141 (2A) SUB X,(d) | 205 |
014 (2A) SUB A,X+c | 078 (2A) SUB B,X+c | 142 (2A) SUB X,X+c | 206 (1I) INVALID |
015 (2A) SUB A,X+d | 079 (2A) SUB B,X+d | 143 (2A) SUB X,X+d | 207 (1I) INVALID |
016 (1I) HALT | 080 (1I) HALT | 144 (1I) NOOP | 208 (1I) NOOP |
017 (1B) SFTL A,2 | 081 (1B) ROTL A,2 | 145 (1B) SFTR A,2 | 209 (1B) ROTR A,2 |
018 (2C) SET0 2,d | 082 (2C) SET1 2,d | 146 (2C) SKP0 2,d | 210 (2C) SKP1 2,d |
019 (2A) LOAD A,c | 083 (2A) LOAD B,c | 147 (2A) LOAD X,c | 211 (2A) AND A,c |
020 (2A) LOAD A,d | 084 (2A) LOAD B,d | 148 (2A) LOAD X,d | 212 (2A) AND A,d |
021 (2A) LOAD A,(d) | 085 (2A) LOAD B,(d) | 149 (2A) LOAD X,(d) | 213 (2A) AND A,(d) |
022 (2A) LOAD A,X+c | 086 (2A) LOAD B,X+c | 150 (2A) LOAD X,X+c | 214 (2A) AND A,X+c |
023 (2A) LOAD A,X+d | 087 (2A) LOAD B,X+d | 151 (2A) LOAD X,X+d | 215 (2A) AND A,X+d |
024 (1I) HALT | 088 (1I) HALT | 152 (1I) NOOP | 216 (1I) NOOP |
025 (1B) SFTL A,3 | 089 (1B) ROTL A,3 | 153 (1B) SFTR A,3 | 217 (1B) ROTR A,3 |
026 (2C) SET0 3,d | 090 (2C) SET1 3,d | 154 (2C) SKP0 3,d | 218 (2C) SKP1 3,d |
027 (2A) STORE A,c | 091 (2A) STORE B,c | 155 (2A) STORE X,c | 219 (2A) LNEG A,c |
028 (2A) STORE A,d | 092 (2A) STORE B,d | 156 (2A) STORE X,d | 220 (2A) LNEG A,d |
029 (2A) STORE A,(d) | 093 (2A) STORE B,(d) | 157 (2A) STORE X,(d) | 221 (2A) LNEG A,(d) |
030 (2A) STORE A,X+c | 094 (2A) STORE B,X+c | 158 (2A) STORE X,X+c | 222 (2A) LNEG A,X+c |
031 (2A) STORE A,X+d | 095 (2A) STORE B,X+d | 159 (2A) STORE X,X+d | 223 (2A) LNEG A,X+d |
032 (1I) HALT | 096 (1I) HALT | 160 (1I) NOOP | 224 (1I) NOOP |
033 (1B) SFTL B,4 | 097 (1B) ROTL B,4 | 161 (1B) SFTR B,4 | 225 (1B) ROTR B,4 |
034 (2C) SET0 4,d | 098 (2C) SET1 4,d | 162 (2C) SKP0 4,d | 226 (2C) SKP1 4,d |
035 (2A) JPD A,c | 099 (2A) JPD B,c | 163 (2A) JPD X,c | 227 (2A) JPD ,c |
036 (2A) JPD A,d | 100 (2A) JPD B,d | 164 (2A) JPD X,d | 228 (2A) JPD ,d |
037 (2A) JPD A,(d) | 101 (2A) JPD B,(d) | 165 (2A) JPD X,(d) | 229 (2A) JPD ,(d) |
038 (2A) JPD A,X+c | 102 (2A) JPD B,X+c | 166 (2A) JPD X,X+c | 230 (2A) JPD ,X+c |
039 (2A) JPD A,X+d | 103 (2A) JPD B,X+d | 167 (2A) JPD X,X+d | 231 (2A) JPD ,X+d |
040 (1I) HALT | 104 (1I) HALT | 168 (1I) NOOP | 232 (1I) NOOP |
041 (1B) SFTL B,1 | 105 (1B) ROTL B,1 | 169 (1B) SFTR B,1 | 233 (1B) ROTR B,1 |
042 (2C) SET0 5,d | 106 (2C) SET1 5,d | 170 (2C) SKP0 5,d | 234 (2C) SKP1 5,d |
043 (2A) JPI A,c | 107 (2A) JPI B,c | 171 (2A) JPI X,c | 235 (2A) JPI ,c |
044 (2A) JPI A,d | 108 (2A) JPI B,d | 172 (2A) JPI X,d | 236 (2A) JPI ,d |
045 (2A) JPI A,(d) | 109 (2A) JPI B,(d) | 173 (2A) JPI X,(d) | 237 (2A) JPI ,(d) |
046 (2A) JPI A,X+c | 110 (2A) JPI B,X+c | 174 (2A) JPI X,X+c | 238 (2A) JPI ,X+c |
047 (2A) JPI A,X+d | 111 (2A) JPI B,X+d | 175 (2A) JPI X,X+d | 239 (2A) JPI ,X+d |
048 (1I) HALT | 112 (1I) HALT | 176 (1I) NOOP | 240 (1I) NOOP |
049 (1B) SFTL B,2 | 113 (1B) ROTL B,2 | 177 (1B) SFTR B,2 | 241 (1B) ROTR B,2 |
050 (2C) SET0 6,d | 114 (2C) SET1 6,d | 178 (2C) SKP0 6,d | 242 (2C) SKP1 6,d |
051 (2A) JMD A,c | 115 (2A) JMD B,c | 179 (2A) JMD X,c | 243 (2A) JMD ,c |
052 (2A) JMD A,d | 116 (2A) JMD B,d | 180 (2A) JMD X,d | 244 (2A) JMD ,d |
053 (2A) JMD A,(d) | 117 (2A) JMD B,(d) | 181 (2A) JMD X,(d) | 245 (2A) JMD ,(d) |
054 (2A) JMD A,X+c | 118 (2A) JMD B,X+c | 182 (2A) JMD X,X+c | 246 (2A) JMD ,X+c |
055 (2A) JMD A,X+d | 119 (2A) JMD B,X+d | 183 (2A) JMD X,X+d | 247 (2A) JMD ,X+d |
056 (1I) HALT | 120 (1I) HALT | 184 (1I) NOOP | 248 (1I) NOOP |
057 (1B) SFTL B,3 | 121 (1B) ROTL B,3 | 185 (1B) SFTR B,3 | 249 (1B) ROTR B,3 |
058 (2C) SET0 7,d | 122 (2C) SET1 7,d | 186 (2C) SKP0 7,d | 250 (2C) SKP1 7,d |
059 (2A) JMI A,c | 123 (2A) JMI B,c | 187 (2A) JMI X,c | 251 (2A) JMI ,c |
060 (2A) JMI A,d | 124 (2A) JMI B,d | 188 (2A) JMI X,d | 252 (2A) JMI ,d |
061 (2A) JMI A,(d) | 125 (2A) JMI B,(d) | 189 (2A) JMI X,(d) | 253 (2A) JMI ,(d) |
062 (2A) JMI A,X+c | 126 (2A) JMI B,X+c | 190 (2A) JMI X,X+c | 254 (2A) JMI ,X+c |
063 (2A) JMI A,X+d | 127 (2A) JMI B,X+d | 191 (2A) JMI X,X+d | 255 (2A) JMI ,X+d |
No hay comentarios:
Publicar un comentario