Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *-----------------------------------------------------------
- * Title :Lectura de teclado en buffer reseteable de 3 posiciones
- * Written by :Fulgencio
- * Date :05/2015
- * Description:Subrutina de lectura de teclado con almacenamiento de caracteres
- * recibidos en un buffer de 3 posiciones reseteable y presentación
- * dinámica en pantalla gráfica del contenido del mismo
- *-----------------------------------------------------------
- ORG $1000
- XTEC EQU 580
- YTEC EQU 460
- ENTER EQU $0D
- START: ; first instruction of program
- MOVE.L #RECTEC,A3 *Reservamos A3 para el control de buffer de teclado
- MOVE.L #12,D0
- MOVE.L #0,D1 *Eco off
- TRAP #15
- BUCLE
- JSR TECLADO
- JMP BUCLE
- SIMHALT ; halt simulator
- TECLADO ************Comprueba si hay alguna tecla y si está dentro del
- *rango permitido, la introduce en el buffer RECTEC
- *El buffer se vacía cada vez que se introducen 3
- *caracteres o cuando se pulsa la tecla ENTER
- MOVE.L #7,D0
- TRAP #15 *¿Hay tecla pendiente?
- TST D1
- BEQ NOTECLA
- MOVE.L #5,D0
- TRAP #15 *Lee tecla que se almacena en D1
- CMP.L #RECTEC+3,A3 *¿Final del buffer?
- BNE NOBORRA *Si no ha llegado al final del buffer no hay que borrar
- JSR BORRATEC *Borramos si el buffer estaba lleno para dejar sitio
- NOBORRA
- CMP.B #ENTER,D1 *¿Es ENTER?
- BNE NOENTER
- JSR BORRATEC *Si es ENTER borramos el buffer como esté
- JMP NOTECLA *y regresamos
- NOENTER *************Restricción a cifras numéricas
- CMP.B #'0',D1
- BCS NOTECLA *Rechaza <'0'
- CMP.B #'9',D1
- BHI NOTECLA *Rechaza >'9'
- *************Se puede sustituir por otras restricciones
- MOVE.B D1,(A3)+ *Introduce caracter aceptado en el buffer
- JSR PINTA
- NOTECLA RTS
- PINTA MOVEM.L D0-D2/A1,-(A7)
- MOVE.L #95,D0 *Saca el texto almacenado por pantalla
- MOVE.L #XTEC,D1 *en una coordenada fija
- MOVE.L #YTEC,D2
- MOVE.L #RECTEC,A1
- TRAP #15
- MOVEM.L (A7)+,D0-D2/A1
- RTS
- BORRATEC *Borra el buffer de memoria y el texto en pantalla
- MOVEM.L D0-D2/A1,-(A7)
- MOVE.L #95,D0
- MOVE.L #XTEC,D1
- MOVE.L #YTEC,D2
- MOVE.L #VACIOS,A1 *Borra el texto de pantalla
- TRAP #15
- CLR.L RECTEC *Vaciamos buffer de memoria como .L (más rápido)
- MOVE.L #RECTEC,A3 *Reiniciamos puntero al inicio
- MOVEM.L (A7)+,D0-D2/A1
- RTS
- * Put variables and constants here
- ORG $5000
- RECTEC DC.B 0,0,0,0 *buffer 3 car+\0 inicialmente vacío, todo a \0
- VACIOS DC.B ' ',0
- END START ; last line of source
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement