====== Documentación PCP ====== ===== CPU Ithladin ===== La CPU del PCP es un nucleo emulado por el Atmega 328. Se trata de una plataforma de 32 bits, con una longitud de instruccion fija de 32 bits. El sistema posee 14 registros de uso general y 2 de uso interno. He aqui una documentacion preliminar del mismo: registros: r0 -- r13 rpc, rsp (r14 y r15) especiales: 0 - nop -- no hace nada 1 - sys - sys 1 -- hace la llamada del sistema 1 (tienen que haber parametros en los registros correspondientes) carga: 2 - lw - lw r1,r2 -- guarda en r1 la palabra en [r2] 3 - sw 4 - lb - lb r1,r2 -- guarda en r1 el byte en [r2] 5 - sb 6 - ld - ld r1,1 -- guarda en r1 el valor inmediato especificado 7 - cp - cp r1,r2 -- guarda en r2 el valor de r1 aritmeticas: 8 - add - add r1,r2,r3 -- suma r1 y r2 y guarda el valor en r3 9 - sub 10 - mul 11 - div manejo de bits: 12 - shr - shr r1,5,r2 -- desplaza los bits de r1 5 posiciones a la derecha y guarda el resultado en r2 13 - shl control de flujo: 14 - jmp - jmp r1 -- salto absoluto a [r1] 15 - beq - beq r1,r2,r3-- salta a [r3] si r1 = r2 16 - bne -- salta si no igual 17 - bgt -- salta si mayor que 18 - blt -- salta si menor que pila: 19 - push r1 20 - pop r1 logicas: 21 - and r1,r2,r3 hace el and logico de r1 y r2 y guarda el resultado en r3 22 - or r1,r2,r3 23 - not r1,r2 24 - xor r1,r2,r3 salto a subrutina: 25 - call r1 -- Salta a la subrutina en [r1] apilando la direccion de vuelta en la pila 26 - ret -- Vuelve de una subrutina desapilando la direccion 5 bits codigo de operacion 4 bits para direccionar registro ===== Llamadas al sistema ===== Variables de sistema: color,attribute : dos bytes que seran el color y el atributo global Registros parametro: r9 - especifica la subfuncion r10 r11 r12 r13 r14 Funcion 0: Acceso a pantalla Subfuncion 0: Leer la posicion del cursor y datos del caracter actual Devuelve en r10 y r11 X,Y del cursor, en r12 el caracter, y en r13 y r14 los atributos y color del mismo Subfuncion 1: Cambiar atributo de caracter global Se cambia el atributo por el valor leido en r10 Subfuncion 2: Cambiar color de caracter global Se cambia el color por el valor leido en r10 Subfuncion 3: Escribir caracter Escribe el caracter en r10 en la posicion actual, con los atributos globales y el color global Subfuncion 4: Escribir caracter especifico Escribe el caracter en r10 en la posicion r11xr12 con atributo r13 y color r14 Subfuncion 5: Cambiar x,y Cambia x,y por los valores que haya en r10,r11 Subfuncion 6: Borrar pantalla Borra la pantalla Subfuncion 7: Activar cursor Activa el cursor de texto Subfuncion 8: Desactivar cursor Desactiva el cursor de texto Funcion 1: Lectura de teclado Subfuncion 0: Preguntar si se ha pulsado una tecla Devuelve 1 en r10 si es asi y 0 en caso contrario Subfuncion 1: Leer el caracter que hay en el buffer Devuelve en r10 el caracter Subfuncion 2: Espera una pulsacion de tecla y la lee Devuelve en r10 el caracter Funcion 2: Sistema TTS Subfuncion 0: Reproducir alofono Se reproduce el alofono contenido en r10