From b5de33574d90c5ce1bb074100af74e06a111f7ff Mon Sep 17 00:00:00 2001 From: Rose Apollo <55228370+AUnicornWithNoLife@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:39:58 +0100 Subject: [PATCH] Update and rename README.md to README --- README | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 58 ------------------------------ 2 files changed, 105 insertions(+), 58 deletions(-) create mode 100644 README delete mode 100644 README.md diff --git a/README b/README new file mode 100644 index 0000000..a17c2d8 --- /dev/null +++ b/README @@ -0,0 +1,105 @@ +r16 + ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| number | instruction | argument 1 | argument 2 | fullname | explanation | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x00 | HLT | | | Halt | halts the CPU | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x01 | ADD | value 1 | value 2 | Add | ACU = value 1 + value 2 | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x02 | SUB | value 1 | value 2 | Subtract | ACU = value 1 - value 2 | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x03 | MUL | value 1 | value 2 | Multiply | ACU = value 1 * value 2 | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x04 | DIV | value 1 | value 2 | Divide | ACU = value 1 / value 2 | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x05 | LBS | value | amount | Left Bit-Shift | ACU = value << amount | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x06 | RBS | value | amount | Right Bit-Shift | ACU = value << amount | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x07 | BAN | value 1 | value 2 | Bitwise And | ACU = value 1 & value 2 | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x08 | BOR | value 1 | value 2 | Bitwise Or | ACU = value 1 \ | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x09 | BXO | value 1 | value 2 | Bitwise Exclusive Or | ACU = value 1 ^ value 2 | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x0A | BNO | value | | Bitwise Not | ACU = ~ value | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x0B | PUS | value | | Push | pushes value onto the stack | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x0C | POP | | | Pop | pops a value from the stack and stores it in ACU | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x0D | JMP | address | | Jump | jumps to address | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x0E | JEQ | address | value | Jump If Equal | jumps to address, if value is equal to ACU | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x0F | JNZ | address | value | Jump If Not Zero | jumps to address, if value is not zero | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x10 | CAL | address | | Call | pushes PC + 1 to the stack, then jumps to address | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x11 | RET | | | Return | pops value from stack and jumps to it | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x12 | REG | int type | address | Register Interrupt | registers int type to address | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x13 | INT | int type | | Interrupt | interrupts as int type | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x14 | INP | | | Input | inputs a character into ACU | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x15 | OUT | value | | Output | outputs value | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x16 | DIN | location | | Disk In | reads value from disk at location to ACU | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x17 | DOT | location | value | Disk Out | writes value to disk at location | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ +| 0x18 | MOV | value 1 | value 2 | Move | move value 2 to value 1 | ++--------+-------------+------------+------------+----------------------+---------------------------------------------------+ + ++--------+----------+-----------------+ +| Number | Register | Usage | ++--------+----------+-----------------+ +| 0x0 | R0 | general usage | ++--------+----------+-----------------+ +| 0x1 | R1 | general usage | ++--------+----------+-----------------+ +| 0x2 | R2 | general usage | ++--------+----------+-----------------+ +| 0x3 | R3 | general usage | ++--------+----------+-----------------+ +| 0x4 | ACU | Accumulator | ++--------+----------+-----------------+ +| 0x5 | PC | Program Counter | ++--------+----------+-----------------+ +| 0x6 | SP | Stack Pointer | ++--------+----------+-----------------+ + ++---------------+----------+----------+-------------------+ +| Area of RAM | reserved | Writable | usage | ++---------------+----------+----------+-------------------+ +| 00000 - 00064 | YES | NO | system header | ++---------------+----------+----------+-------------------+ +| 00064 - 65023 | NO | YES | executable | ++---------------+----------+----------+-------------------+ +| 65023 - 65279 | YES | YES | interupt pointers | ++---------------+----------+----------+-------------------+ +| 65279 - 65535 | YES | YES | stack | ++---------------+----------+----------+-------------------+ + ++-------------------------------------------+------------+------------+ +| BYTE 1 | BYTE 2 | BYTE 2 | ++--------+--------+------------+------------+------------+------------+ +| OPCODE | UNUSED | ARG 1 INFO | ARG 2 INFO | ARGUMENT 1 | ARGUMENT 2 | ++--------+--------+------------+------------+------------+------------+ +| 8 bits | 4 bits | 2 bits | 2 bits | 16 bits | 16 bits | ++--------+--------+------------+------------+------------+------------+ + ++-------+---------------------------------------------+ +| State | Argument Interpretation | ++-------+---------------------------------------------+ +| 0x0 | Value in argument | ++-------+---------------------------------------------+ +| 0x1 | Value in register | ++-------+---------------------------------------------+ +| 0x2 | Value in RAM | ++-------+---------------------------------------------+ +| 0x3 | Value in RAM, at address stored in register | ++-------+---------------------------------------------+ diff --git a/README.md b/README.md deleted file mode 100644 index a4466f9..0000000 --- a/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# r16 - -| number | instruction | argument 1 | argument 2 | fullname | explanation | -|-------:|:-----------:|------------|------------|----------------------|---------------------------------------------------| -| 0x00 | HLT | | | Halt | halts the CPU | -| 0x01 | ADD | value 1 | value 2 | Add | ACU = value 1 + value 2 | -| 0x02 | SUB | value 1 | value 2 | Subtract | ACU = value 1 - value 2 | -| 0x03 | MUL | value 1 | value 2 | Multiply | ACU = value 1 * value 2 | -| 0x04 | DIV | value 1 | value 2 | Divide | ACU = value 1 / value 2 | -| 0x05 | LBS | value | amount | Left Bit-Shift | ACU = value << amount | -| 0x06 | RBS | value | amount | Right Bit-Shift | ACU = value << amount | -| 0x07 | BAN | value 1 | value 2 | Bitwise And | ACU = value 1 & value 2 | -| 0x08 | BOR | value 1 | value 2 | Bitwise Or | ACU = value 1 \ | -| 0x09 | BXO | value 1 | value 2 | Bitwise Exclusive Or | ACU = value 1 ^ value 2 | -| 0x0A | BNO | value | | Bitwise Not | ACU = ~ value | -| 0x0B | PUS | value | | Push | pushes value onto the stack | -| 0x0C | POP | | | Pop | pops a value from the stack and stores it in ACU | -| 0x0D | JMP | address | | Jump | jumps to address | -| 0x0E | JEQ | address | value | Jump If Equal | jumps to address, if value is equal to ACU | -| 0x0F | JNZ | address | value | Jump If Not Zero | jumps to address, if value is not zero | -| 0x10 | CAL | address | | Call | pushes PC + 1 to the stack, then jumps to address | -| 0x11 | RET | | | Return | pops value from stack and jumps to it | -| 0x12 | REG | int type | address | Register Interrupt | registers int type to address | -| 0x13 | INT | int type | | Interrupt | interrupts as int type | -| 0x14 | INP | | | Input | inputs a character into ACU | -| 0x15 | OUT | value | | Output | outputs value | -| 0x16 | DIN | location | | Disk In | reads value from disk at location to ACU | -| 0x17 | DOT | location | value | Disk Out | writes value to disk at location | -| 0x18 | MOV | value 1 | value 2 | Move | move value 2 to value 1 | - -| Number | Register | Usage | -|-------:|---------:|-----------------| -| 0x0 | R0 | general usage | -| 0x1 | R1 | general usage | -| 0x2 | R2 | general usage | -| 0x3 | R3 | general usage | -| 0x4 | ACU | Accumulator | -| 0x5 | PC | Program Counter | -| 0x6 | SP | Stack Pointer | - -| Area of RAM | reserved | Writable | usage | -|:-------------:|:--------:|:--------:|-------------------| -| 00000 - 00064 | YES | NO | system header | -| 00064 - 65023 | NO | YES | executable | -| 65023 - 65279 | YES | YES | interupt pointers | -| 65279 - 65535 | YES | YES | stack | - -| BYTE 1 | | | | BYTE 2 | BYTE 2 | -|--------|--------|------------|------------|------------|------------| -| OPCODE | UNUSED | ARG 1 INFO | ARG 2 INFO | ARGUMENT 1 | ARGUMENT 2 | -| 8 bits | 4 bits | 2 bits | 2 bits | 16 bits | 16 bits | - -| State | Argument Interpretation | -|------:|---------------------------------------------| -| 0x0 | Value in argument | -| 0x1 | Value in register | -| 0x2 | Value in RAM | -| 0x3 | Value in RAM, at address stored in register |