1
0
Fork 0
mirror of https://github.com/pnx/m16vm synced 2026-06-16 03:44:55 +02:00

README.md: document interrupts.

This commit is contained in:
Henrik Hautakoski 2018-10-28 14:24:16 +01:00
parent 1088e4960e
commit 3db5f117d6
No known key found for this signature in database
GPG key ID: 839F3A7EAFAEAFAA

View file

@ -40,7 +40,7 @@ There are 16 different instructions.
| 1100 | - | - | Reserved |
| 1101 | - | - | Reserved |
| 1110 | - | - | Reserved |
| 1111 | wr | I | I/O Write |
| 1111 | int | I | Interrupt |
NOTE: Subtraction can be implemented via `add` and negative register values, so no
special opcode is needed.
@ -73,6 +73,28 @@ Jump format (J):
opcode (4) | addr (signed 12)
## Interrupts
There can be a total of `16` Interrupts and the instruction uses the `I-format`.
The interrupt number is stored in `reg` (note that for interrupts this is a constant and not a register).
The `data` field can be used as an argument to the interrupt.
| Number | Name | data | Description |
| ---------: | -----------| ------ | -------------------------------------------------------- |
| 10 | I/O Write | format | Outputs a value to the screen, value are stored in `r15` |
### I/O Write - int 10
The formatting of the output can be controlled by the number in `data` as follows:
| Argument | Datatype |
| ------------ | ----------------------- |
| 0 | Integer (16 bit signed) |
| 1 | Integer (8 bit signed) |
| 2 | Character |
## Example programs.
in the `programs` directory, there is some example programs to run.