137 lines
3.4 KiB
Plaintext
137 lines
3.4 KiB
Plaintext
# uxn tutorial
|
|
|
|
a beginner's guide for programming the varvara computer based on the {uxn} core, and a slow-paced companion to the official documentation.
|
|
|
|
=> https://wiki.xxiivv.com/site/uxn.html uxn technical documentation
|
|
|
|
the tutorial is divided in 8 days (or sections), as it can be followed along with a workshop.
|
|
|
|
(as of today, this is a work in progress)
|
|
|
|
there's a collaborative translation to spanish also in progress: {tutorial de uxn}
|
|
|
|
# day 1
|
|
|
|
in this first section of the tutorial we talk about the basics of the uxn computer called varvara, its programming paradigm in a language called uxntal, its architecture, and why you would want to learn to program it.
|
|
|
|
we also jump right in into our first simple programs to demonstrate fundamental concepts that we will develop further in the following days.
|
|
|
|
=> ./uxn_tutorial_day_1.gmi {uxn tutorial day 1}
|
|
|
|
# day 2
|
|
|
|
in this section we start exploring the visual aspects of the varvara computer: we talk about the fundamentals of the screen device so that we can start drawing on it!
|
|
|
|
we also discuss working with shorts (2-bytes) besides single bytes in uxntal.
|
|
|
|
=> ./uxn_tutorial_day_2.gmi {uxn tutorial day 2}
|
|
|
|
# day 3
|
|
|
|
here we introduce the use of the controller device in the varvara computer: this allows us to add interactivity to our programs, and to start implementing control flow in uxntal.
|
|
|
|
we also talk about logic and stack manipulation instructions in uxntal.
|
|
|
|
=> ./uxn_tutorial_day_3.gmi {uxn tutorial day 3}
|
|
|
|
# day 4
|
|
|
|
coming soon!
|
|
|
|
# draft outline
|
|
|
|
this outline is here and now as a reference of the overall structure of the tutorial.
|
|
|
|
changes are expected to happen.
|
|
|
|
## day 1: the basics
|
|
|
|
* why uxn?
|
|
* {postfix} notation
|
|
* uxn computer architecture
|
|
* installation and toolchain
|
|
* a very basic hello world
|
|
* labels, macros, and runes
|
|
* an improved hello world
|
|
* print a digit
|
|
|
|
new instructions: LIT, DEO, ADD, SUB
|
|
|
|
=> https://git.sr.ht/~rabbits/uxn/ uxn repo
|
|
|
|
## day 2: the screen
|
|
|
|
* short mode
|
|
* system colors
|
|
* draw pixels
|
|
* sprites: chr format, nasu
|
|
* draw sprites
|
|
* stack operations
|
|
* practice: manual repetition of sprite
|
|
|
|
new instructions: DEI, MUL, DIV, SWP, OVR, ROT, DUP, POP
|
|
|
|
new mode: short mode
|
|
|
|
=> https://wiki.xxiivv.com/site/nasu.html nasu
|
|
|
|
## day 3: interactivity with the keyboard
|
|
|
|
* controller vector
|
|
* flow control: conditionals, relative and absolute jumps
|
|
* runes for addresses
|
|
* button and key
|
|
* bitwise masks
|
|
* practice: move/change sprite with keyboard
|
|
|
|
new instructions: EQU, NEQ, JCN, JMP, AND, ORA, EOR, SFT
|
|
|
|
## day 4: loops and animation
|
|
|
|
* flow control: repetition of a sprite
|
|
* screen vector
|
|
* variables: zero page, relative, absolute
|
|
* offsets in addresses
|
|
* animation timing
|
|
* practice: animated sprite
|
|
|
|
new instructions: LTH, GTH, STZ, STR, STA, LDZ, LDR, LDA
|
|
|
|
## day 5: interactivity with mouse
|
|
|
|
* mouse device and vector
|
|
* return stack and mode
|
|
* subroutines: parameters, calling, returning
|
|
* practice: sprite as pointer
|
|
* practice: simple drawing tool
|
|
|
|
new instructions: STH, JSR
|
|
|
|
new mode: return mode
|
|
|
|
## day 6: audio
|
|
|
|
* the audio device
|
|
* samples as audio sprites
|
|
* adsr
|
|
* pitch
|
|
* practice: small music instrument
|
|
|
|
## day 7: keep mode and other devices
|
|
|
|
* keep mode
|
|
* re-writing code with keep mode
|
|
* file device: saving and loading a simple state
|
|
* datetime device: reading the date and time
|
|
* practice: visualization of time
|
|
|
|
new mode: keep mode
|
|
|
|
## day 8: demo time
|
|
|
|
* share what you created :)
|
|
|
|
# support
|
|
|
|
if you found this tutorial to be helpful, consider sharing it and giving it your {support} :)
|