Compare commits

...

4 Commits

16 changed files with 139 additions and 158 deletions

View File

@ -7,7 +7,7 @@ introduction to uxn programming is a beginner's, slow-paced and comprehensive gu
originally available online as the {uxn tutorial}, this is a carefully revised version for you to have it offline and available anytime.
IMPORTANT (12024-03-28)! keep in mind that the contents of the ebook are written from a somewhat outdated perspective and some of them might be wrong. the online {uxn tutorial} is more up-to-date. some things are done differently now, and the tutorial doesn't cover all the possibilities in the language that exist nowadays. in doubt, always refer to the official documentation. however, we hope it's still useful to you as an introduction to the uxn ecosystem!
IMPORTANT (12024-03-28)! keep in mind that the uxn ecosystem has changed to some extent during the years. so, although everything here should work, it could happen that some things can be done differently now. additionally, right now the online {uxn tutorial} is more up-to-date. in doubt, always refer to the official documentation.
=> https://wiki.xxiivv.com/site/uxn.html XXIIVV — uxn official documentation

View File

@ -29,24 +29,7 @@ contributions are welcome! some of these issues were managed or identified durin
### pending
* remove square brackets in devices
* update images (to do: emulator needs a patch)
### in order to remove macros
this is an overview of how macros are used and what would be needed to replace them.
* in {uxn tutorial day 1} they are deeply embedded as a learning block, so they need some rewriting
* in {uxn tutorial day 2} they are used to increment coordinates and repeat the drawing of pixels or sprites. Replace with auto byte? (note that it's introduced until {uxn tutorial day 6})
* in {uxn tutorial day 2} we also have them as example for HALF and HALF2.
* in {uxn tutorial day 2} introduce the use of zero-page labels as constants.
```
|40 @color-clear
( and then use it as .color-clear )
```
* in {uxn tutorial day 3} we talk about a ?ASCII-DIGIT macro
* there are some macros from {uxn tutorial day 4} and onwards that are used as constants: replace them with zero-page labels!
* in {uxn tutorial day 4} we introduce MOD, 8MOD, TO-SHORT
* in {uxn tutorial day 5} we re-work MOD
* in {uxn tutorial day 6} we use constants, and HALF, DOUBLE
* it could happen that some wording regarding macros being deprecated is still present somewhere
### further possible changes
* make a folder of examples

View File

@ -30,9 +30,9 @@ comencemos con el siguiente programa como plantilla. incluye los datos para un s
|0100
@configuracion
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
BRK
@ -176,9 +176,9 @@ lo siguiente muestra nuestro programa en contexto, llenando completamente la pri
|0100
@configuracion
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
;tile-fondo .Pantalla/direc DEO2 ( establecer la dirección del tile )
#0000 ( x inicial )

View File

@ -185,9 +185,9 @@ podemos escribirlo de la siguiente manera:
( programa principal )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
```
¿cómo podríamos leer lo que significan esos cortos literales?
@ -325,9 +325,9 @@ el programa completo se vería de la siguiente manera:
( programa principal )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( dibujar un píxel en la pantalla )
#0008 .Pantalla/x DEO2
@ -452,9 +452,9 @@ usando estas macros que definimos arriba, nuestro código puede terminar viéndo
( programa princpal )
|0100
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer las coordenadas iniciales x,y )
#0008 .Pantalla/x DEO2
@ -677,9 +677,9 @@ el siguiente programa dibujará nuestro sprite una vez:
( programa principal )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer coordenadas x,y )
#0008 .Pantalla/x DEO2
@ -719,9 +719,9 @@ el siguiente código dibujará nuestro sprite cuadrado con las 16 combinaciones
( programa principal )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer coordenadas iniciales x,y )
INIT-X INIT-Y
@ -954,9 +954,9 @@ el siguiente código mostrará nuestro sprite en las 16 diferentes combinaciones
( programa principal )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer coordenadas iniciales x,y )
INIT-X INIT-Y

View File

@ -99,9 +99,9 @@ este utiliza el procedimiento de dibujo de sprites que probamos el día anterior
( programa principal )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( asignar vector del controlador )
;en-controlador .Controlador/vector DEO2
@ -659,9 +659,9 @@ observa el uso de las máscaras AND, los saltos condicionales y algunas operacio
( programa principal )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( asignar vector del controlador )
;en-controlador .Controlador/vector DEO2

View File

@ -40,9 +40,9 @@ el siguiente programa demuestra un uso básico pero potente del vector pantalla:
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer coordenadas iniciales x,y )
#0008 .Pantalla/x DEO2
@ -238,9 +238,9 @@ en este caso el programa es más largo, pero puede ser visto como una buena plan
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer coordenadas iniciales x,y )
#0008 .píxel/x STZ2
@ -410,9 +410,9 @@ el siguiente programa ilustra los puntos anteriores, haciendo que nuestro cuadra
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( fijar la Pantalla/y a la mitad de la pantalla, menos 4 )
.Pantalla/alto DEI2 MITAD2 #0004 SUB2 .Pantalla/y DEO2
@ -509,9 +509,9 @@ el siguiente programa nos permite controlar la posición horizontal de nuestro c
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( fijar la Pantalla/y a la mitad de la pantalla, menos 4 )
.Pantalla/alto DEI2 MITAD2 #0004 SUB2 .Pantalla/y DEO2
@ -833,9 +833,9 @@ la sección "borrar el sprite" no es realmente necesaria en este caso debido a l
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( fijar Pantalla/x e `y` a la mitad de la pantalla, menos 4 )
.Pantalla/ancho DEI2 MITAD2 #0004 SUB2 .Pantalla/x DEO2

View File

@ -94,9 +94,9 @@ dibuja nuestro cuadrado en la posición del ratón, cambiando su color cuando se
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer vector del ratón )
;en-ratón .Ratón/vector DEO2
@ -166,9 +166,9 @@ este es un programa que logra dibujar el puntero en la pantalla
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer el vector del ratón )
;en-ratón .Ratón/vector DEO2
@ -427,9 +427,9 @@ este es el programa hola-puntero.tal, pero utilizando dibuja-puntero como subrut
( init )
|0100
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer el vector del ratón )
;en-ratón .Ratón/vector DEO2

View File

@ -43,9 +43,9 @@ empecemos con el siguiente programa como plantilla. incluye los datos para un sp
|0100
@configuración
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
BRK
@ -187,9 +187,9 @@ lo siguiente muestra nuestro programa en contexto, llenando completamente la pri
|0100
@configuración
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( dibujar fondo )
;tile-fondo .Pantalla/direc DEO2 ( establecer la dirección del tile )
@ -634,9 +634,9 @@ omitiendo la definición de las subrutinas dibuja-fondo y dibuja-pala y como for
|0100
@configuración
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer vector de pantalla )
;en-cuadro .Pantalla/vector DEO2
@ -1361,9 +1361,9 @@ aquí está todo el código que hemos escrito hoy:
|0100
@configuración ( -> )
( establecer los colores del sistema )
#2eef .Sistema/r DEO2
#1eb8 .Sistema/g DEO2
#1e2e .Sistema/b DEO2
#2ce9 .Sistema/r DEO2
#01c0 .Sistema/g DEO2
#2ce5 .Sistema/b DEO2
( establecer el vector de la pantalla )
;en-cuadro .Pantalla/vector DEO2

View File

@ -4,7 +4,7 @@ a beginner's, slow-paced and comprehensive guide for programming the varvara com
if you prefer video, you can watch a short {intro to uxn programming} workshop that we taught as an introduction.
IMPORTANT (12024-03-28)! even though we updated to some extent the tutorial during our {maintenance practice}, and in principle everything that we say here works, keep in mind that it is written from a somewhat outdated perspective. some things are done differently now, and the tutorial doesn't cover all the possibilities in the language that exist nowadays. in doubt, always refer to the official documentation. however, we hope it's still useful to you as an introduction to the uxn ecosystem!
keep in mind that the uxn ecosystem has changed to some extent during the years. so, although everything here should work, it could happen that some things can be done differently now. in doubt, always refer to the official documentation.
=> https://wiki.xxiivv.com/site/uxn.html XXIIVV — uxn official documentation

View File

@ -30,9 +30,9 @@ let's start with the following program as a template. it includes the data for a
|0100
@setup
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
BRK
@ -176,9 +176,9 @@ the following shows our program in context, completely filling the first row of
|0100
@setup
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
;tile-background .Screen/addr DEO2 ( set tile address )
#0000 ( initial x )

View File

@ -4,7 +4,7 @@ hello! in this first section of the {uxn tutorial} we talk about the basics of t
we also jump right in into our first simple programs to demonstrate fundamental concepts that we will develop further in the following days.
IMPORTANT (12024-03-28)! even though we updated to some extent the tutorial during our {maintenance practice}, and in principle everything that we say here works, keep in mind that it is written from a somewhat outdated perspective. some things are done differently now, and the tutorial doesn't cover all the possibilities in the language that exist nowadays. in doubt, always refer to the official documentation. however, we hope it's still useful to you as an introduction to the uxn ecosystem!
keep in mind that the uxn ecosystem has changed to some extent during the years. so, although everything here should work, it could happen that some things can be done differently now. in doubt, always refer to the official documentation.
=> https://wiki.xxiivv.com/site/uxn.html XXIIVV — uxn official documentation
@ -497,9 +497,7 @@ we can call macros inside macros, for example:
%NL { #0a EMIT } ( -- )
```
note that macros are a helpful way of grouping and reusing code, especially when beginning to learn uxntal. for more advanced uses, macros are replaced by other strategies.
for that reason, some uxntal assemblers like the one in Uxntal Playground, don't allow their use.
note that macros are a helpful way of grouping and reusing code, especially when beginning to learn uxntal. for more advanced uses, macros can be replaced by other strategies.
# a more idiomatic hello world

View File

@ -199,12 +199,12 @@ how would we read what those literal shorts mean?
we can read each of the colors vertically, from left to right. therefore:
* color0 would have: red: 2, green: 1, blue: 1 (#221111 in hex color notation, brown)
* color1 would be red: e, green: e, blue: e (#eeeeee in hex color notation, white)
* color2 would be red: e, green: b, blue: 2 (#eebb22 in hex color notation, amber)
* color3 would be red: f, green: 8, blue: e (#ff88ee in hex color notation, pink)
* color0, a dark purple, would have: red: 2, green: 0, blue: 2 (#220022 in hex color notation)
* color1, magenta, would have: red: c, green: 1, blue: c (#cc11cc in hex color notation)
* color2, a light pink, would have: red: e, green: c, blue: e (#eeccee in hex color notation)
* color3, a dark red, would have: red: 9, green: 0, blue: 5 (#990055 in hex color notation)
if we run the program now we'll see a brown screen, instead of black as what we had before.
if we run the program now we'll see a dark purple screen (color0), instead of black as what we had before.
try changing the values of color0, i.e. the first column, and see what happens :)
@ -334,9 +334,9 @@ the complete program would look as follows:
( main program )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( draw a pixel in the screen )
#0008 .Screen/x DEO2
@ -463,9 +463,9 @@ using these macros we defined above, our code could end up looking as following:
( main program )
|0100
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set initial x,y coordinates )
#0008 .Screen/x DEO2
@ -693,9 +693,9 @@ the following program will draw our sprite once using color1 over a background o
( main program )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set x,y coordinates )
#0008 .Screen/x DEO2
@ -737,9 +737,9 @@ the following code will draw our square sprite with all 16 combinations of color
( main program )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set initial x,y coordinates )
INIT-X INIT-Y
@ -973,9 +973,9 @@ the following code will show our sprite in the 16 different combinations of colo
( main program )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set initial x,y coordinates )
INIT-X INIT-Y

View File

@ -99,9 +99,9 @@ it uses the sprite drawing procedure we tried in the previous day, but has it ha
( main program )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( assign controller vector )
;on-controller .Controller/vector DEO2
@ -659,9 +659,9 @@ note the use of AND masks, conditional jumps, and some stack operations!
( main program )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( assign controller vector )
;on-controller .Controller/vector DEO2

View File

@ -40,9 +40,9 @@ the following program demonstrates a basic but powerful use of the screen vector
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set initial x,y coordinates )
#0008 .Screen/x DEO2
@ -238,9 +238,9 @@ in this case the program is longer, but it could be seen as a nice template for
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set initial x,y coordinates )
#0008 .pixel/x STZ2
@ -410,9 +410,9 @@ it combines several things that we have covered in the past few days!
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set screen/y to half of screen minus 4 )
.Screen/height DEI2 HALF2 #0004 SUB2 .Screen/y DEO2
@ -509,9 +509,9 @@ note the similarities between the previous program, and what we covered on {uxn
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set screen/y to half of screen minus 4 )
.Screen/height DEI2 HALF2 #0004 SUB2 .Screen/y DEO2
@ -834,9 +834,9 @@ the clear sprite section is not actually needed in this case because of the colo
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set screen/x and y to half of screen minus 4 )
.Screen/width DEI2 HALF2 #0004 SUB2 .Screen/x DEO2

View File

@ -94,9 +94,9 @@ it draws our square in the position of the mouse, changing its color when any mo
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set mouse vector )
;on-mouse .Mouse/vector DEO2
@ -166,9 +166,9 @@ this is a program that accomplishes drawing the pointer on the screen!
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set mouse vector )
;on-mouse .Mouse/vector DEO2
@ -420,9 +420,9 @@ this is the hello-pointer.tal program, but using draw-pointer as a subroutine th
( init )
|0100
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set mouse vector )
;on-mouse .Mouse/vector DEO2

View File

@ -40,9 +40,9 @@ let's start with the following program as a template. it includes the data for a
|0100
@setup
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
BRK
@ -181,9 +181,9 @@ the following shows our program in context, completely filling the first row of
|0100
@setup
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( draw background )
;tile-background .Screen/addr DEO2 ( set tile address )
@ -626,9 +626,9 @@ omitting the definition of the draw-background and draw-paddle subroutines, and
|0100
@setup
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set screen vector )
;on-frame .Screen/vector DEO2
@ -1351,9 +1351,9 @@ here's all of the code we wrote today!
|0100
@setup ( -> )
( set system colors )
#2eef .System/r DEO2
#1eb8 .System/g DEO2
#1e2e .System/b DEO2
#2ce9 .System/r DEO2
#01c0 .System/g DEO2
#2ce5 .System/b DEO2
( set screen vector )
;on-frame .Screen/vector DEO2