man uxntal updates
This commit is contained in:
parent
a6e0b734d5
commit
d1ac45feae
83
uxntal.1
83
uxntal.1
|
@ -86,8 +86,89 @@ Thus for regular instructions writing a "generic" effect (leaving sigils off val
|
|||
.SS OVR
|
||||
( x y -- x y x )
|
||||
|
||||
.SS EQU
|
||||
( x y -- x==y^ )
|
||||
|
||||
.SS NEQ
|
||||
( x y -- x!=y^ )
|
||||
|
||||
.SS GTH
|
||||
( x y -- x>y^ )
|
||||
|
||||
.SS LTH
|
||||
( x y -- x<y^ )
|
||||
|
||||
.SS JMP
|
||||
( x -- ; pc <- x )
|
||||
|
||||
The program counter (\fIpc\fP) is unconditionally updated. When \fIx\fP is a byte, it is treated as relative (\fBpc += x\fP) and when \fIx\fP is a short it is treated as absolute (\fBpc = x\fP).
|
||||
|
||||
.SS JCN
|
||||
( x bool^ -- ; pc <- x if bool )
|
||||
|
||||
The program counter (\fIpc\fP) is updated when \fIbool\fP is non-zero. When \fIx\fP is a byte, it is treated as relative (\fBpc += x\fP) and when \fIx\fP is a short it is treated as absolute (\fBpc = x\fP).
|
||||
|
||||
.SS JSR
|
||||
( x -- [pc+1*] )
|
||||
|
||||
Store the next address to execute before unconditionally updating the program counter (\fIpc\fP). This instruction is usually used to invoke subroutines, which use the \fBJMP2r\fP to return.
|
||||
|
||||
.SS STH
|
||||
( x -- [x] )
|
||||
|
||||
.SS LDZ
|
||||
( zp^ -- x )
|
||||
|
||||
Load data from a zero-page address (\fB0x0000 - 0x00ff\fP).
|
||||
|
||||
.SS STZ
|
||||
( x zp^ -- )
|
||||
|
||||
Store data at a zero-page address (\fB0x0000 - 0x00ff\fP).
|
||||
|
||||
.SS LDR
|
||||
( rel^ -- x )
|
||||
|
||||
Load data from a relative address (\fBpc + x\fP).
|
||||
|
||||
Note that unlike \fBLDZk\fP and \fBLDAk\fP the \fBLDRk\fP instruction is not very useful, since a relative address is usually only meaningful when run from a particular address (i.e. for a particular \fBpc\fP value).
|
||||
|
||||
|
||||
.SS STR
|
||||
( x rel^ -- )
|
||||
|
||||
Store data at a relative address (\fBpc + x\fP).
|
||||
|
||||
Note that unlike \fBSTZk\fP and \fBSTAk\fP the \fBSTRk\fP instruction is not very useful, since a relative address is usually only meaningful when run from a particular address (i.e. for a particular \fBpc\fP value).
|
||||
|
||||
.SS LDA
|
||||
( abs* -- x )
|
||||
|
||||
Load data from an absolute address (\fB0x0000 - 0xffff\fP).
|
||||
|
||||
.SS STA
|
||||
( x abs* -- )
|
||||
|
||||
Store data at an absolute address (\fB0x0000 - 0xffff\fP).
|
||||
|
||||
.SS DEI
|
||||
( dev^ -- x )
|
||||
|
||||
Read data from a device port (\fB0x00 - 0xff\fP).
|
||||
|
||||
Reading from some ports may have an effect on the underlying VM; in other cases it will simply read values from device memory. See Varvara device documentation for more details.
|
||||
|
||||
.SS DEO
|
||||
( x dev^ -- )
|
||||
|
||||
Write data to a device port (\fB0x00 - 0xff\fP).
|
||||
|
||||
Writing to some ports may have an effect on the underlying VM; in other cases it will simply write values to device memory. See Varvara device documentation for more details.
|
||||
|
||||
.SH SPECIAL INSTRUCTIONS
|
||||
|
||||
These instructions do not accept all mode flags (some do not accept any).
|
||||
|
||||
.SS BRK
|
||||
|
||||
The break instruction is used to end a vector call and return control to the virtual machine.
|
||||
|
@ -98,7 +179,7 @@ The "immediate jump" instructions are produced by the assembler. They interpret
|
|||
|
||||
\fBJMI\fP ( -- ) jump to \fIaddr\fP unconditionally
|
||||
\fBJCI\fP ( bool^ -- ) jump to \fIaddr\fP if \fIbool\fP is non-zero
|
||||
\fBJSI\fP ( -- [cur*] ) jump to \fIaddr\fP saving the current address (\fIcur\fP) on the return stack
|
||||
\fBJSI\fP ( -- [pc*] ) jump to \fIaddr\fP saving the current address (\fIpc\fP) on the return stack
|
||||
|
||||
(The instruction pointer will be moved forward 2 bytes, past the relative address.)
|
||||
|
||||
|
|
Loading…
Reference in New Issue