SMicro

Icono T-REX

Apr 22nd, 2020 (edited)
1,843
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      : Icono T-REX
  3. * Written by : Fulgencio
  4. * Date       : Abril 2020
  5. * Description:
  6. *-----------------------------------------------------------
  7.  
  8. GRAY EQU $00808080
  9. WHITE EQU $00FFFFFF
  10. SCALE EQU 4
  11. X1POS EQU 50             * Coordenada X esquina izquierda
  12. Y1POS EQU 200            * Coordenada Y esquina superior
  13. X2POS EQU X1POS+20*SCALE * Máxima coordenada alcanzada en X
  14. Y2POS EQU Y1POS+21*SCALE * Máxima coordenada alcanzada en Y
  15.     ORG    $1000
  16.  
  17. START:                 ; first instruction of program
  18.  
  19. * Put program code here
  20.     MOVE.L #81,D0
  21.     MOVE.L #WHITE,D1 *Selecciona color de relleno blanco
  22.     TRAP #15
  23.    
  24.     MOVE.L #89,D0 *Rellena la pantalla del color de relleno
  25.     MOVE.L #0,D1
  26.     MOVE.L #0,D2  *Punto arbitrario 0,0
  27.     TRAP #15
  28.      
  29.     MOVE.L #80,D0
  30.     MOVE.L #GRAY,D1
  31.     TRAP #15
  32.  
  33.     MOVE.L #81,D0
  34.     MOVE.L #GRAY,D1
  35.     TRAP #15
  36.    
  37.     MOVE.L #TREXICON,A0  
  38.     MOVE.L #X1POS,D1
  39.     MOVE.L #Y1POS,D2
  40.  
  41. WHITESCAN
  42.    
  43.     MOVE.B (A0)+,D0 *Longitud de la tramo blanco
  44.     MULU #SCALE,D0  *ESCALAMOS en X
  45.  
  46.     ADD.L D0,D1
  47.    
  48.     CMP.L #X2POS,D1 *¿Hemos llegado al extremo derecho?
  49.     BEQ NEWSCAN
  50.  
  51.     MOVE.L D1,D3    *Copiamos de momento las coordenadas
  52.     MOVE.L D2,D4    *de la esquina izquierda a la derecha
  53.    
  54.     MOVE.B (A0)+,D0 *Longitud de la línea gris
  55.     MULU #SCALE,D0  *ESCALAMOS en X
  56.     ADD.L D0,D3     *Desplazamiento en X
  57.    
  58.     SUB.L #1,D3         *La coordenada final es una menos
  59.     ADD.L #SCALE-1,D4   *ESCALAMOS grosor en Y
  60.    
  61.     JSR GRAYRECT        *Dibujamos línea horizontal en gris
  62.     ADD.L D0,D1         *Avanzamos hasta el siguiente punto
  63.     CMP.L #X2POS,D1     *¿Hemos llegado al extremo derecho?
  64.     BEQ NEWSCAN
  65.    
  66.     JMP WHITESCAN
  67.        
  68. NEWSCAN
  69.  
  70.     ADD.L #SCALE,D2 *ESCALADO en Y
  71.     CMP.L #Y2POS,D2
  72.     BEQ FIN
  73.     MOVE.L #X1POS,D1
  74.     JMP WHITESCAN    
  75.  
  76. FIN SIMHALT
  77.  
  78. GRAYRECT
  79.    MOVE.L D0,-(A7)
  80.     MOVE.L #87,D0
  81.     TRAP #15
  82.     MOVE.L (A7)+,D0
  83.     RTS
  84.  
  85.     SIMHALT             ; halt simulator
  86.  
  87. * Put variables and constants here
  88.  
  89. TREXICON *ICONO T-REX EN FORMATO 20x21*
  90.           *El formato codifica un gráfico en dos colores, fondo y tinta. El gráfico se va definiendo por líneas horizontales.
  91.           *La secuencia de números representan alternativamente la longitud de línea de color de fondo (que no se dibuja) y
  92.           *la longitud de la línea de tinta (la que se dibuja) y así sucesivamente hasta que suman el total del ancho que en
  93.           *este caso es de 20. Después se vuelve a empezar con la longitud de línea de fondo de la línea horizontal siguiente
  94.           *Ej. 10,2,1,7 significa 10 pixels de fondo (blanco), 2 en tinta, 1 de fondo (blanco) y 7 en tinta. A continuación
  95.           *se definiría la línea siguiente empezando de nuevo por el fondo y así hasta definir todas las líneas del gráfico,
  96.           *que en este caso concreto son 21
  97.          
  98.     DC.B 11,8,1,10,2,1,7,10,10,10,10,10,10,10,5,5,10,8,2,0,1,8,5,6
  99.     DC.B 0,1,7,6,6,0,2,4,10,4,0,3,2,9,1,1,4,0,14,6,0,14,6
  100.     DC.B 1,13,6,2,11,7,3,9,8,4,7,9,5,3,2,3,7,5,2,13,5,1,14,5,2,13
  101.    
  102.     END    START        ; last line of source
Add Comment
Please, Sign In to add comment