compudanzas/src/uxn_tutorial.gmo

127 lines
3.0 KiB
Plaintext
Raw Normal View History

2021-07-22 00:22:54 +00:00
# uxn tutorial
2021-07-23 18:33:07 +00:00
a beginner's guide for programming the {uxn} computer, and a slow-paced companion to the official documentation.
2021-07-22 00:22:54 +00:00
2021-07-23 21:21:47 +00:00
=> https://wiki.xxiivv.com/site/uxn.html uxn technical documentation
2021-07-22 00:22:54 +00:00
2021-07-23 18:33:07 +00:00
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)
2021-07-28 23:19:22 +00:00
there's a collaborative translation to spanish also in progress: {tutorial de uxn}
2021-07-23 18:33:07 +00:00
# day 1
in this first section of the tutorial we talk about the basics of the uxn computer, its programming paradigm, 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.
2021-07-22 00:22:54 +00:00
2021-07-23 18:33:07 +00:00
=> ./uxn_tutorial_day_1.gmi {uxn tutorial day 1}
# day 2
2021-07-26 22:43:05 +00:00
in this section we start exploring the visual aspects of the uxn 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.
=> ./uxn_tutorial_day_2.gmi {uxn tutorial day 2}
# day 3
2021-07-23 18:33:07 +00:00
coming soon!
# draft outline
this outline is here and now as a reference of the overall structure of the tutorial.
2021-07-22 00:22:54 +00:00
## 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
2021-07-23 18:33:07 +00:00
if you found this tutorial to be helpful, consider sharing it and giving it your {support} :)