Skip to content

Latest commit

 

History

History
98 lines (87 loc) · 3.13 KB

SPEC.md

File metadata and controls

98 lines (87 loc) · 3.13 KB

Features

  • 4 16-bit Registers
  • 254 8-bit Flag Registers
    • Start at end of memory from 0xFF00
    • See FLAGS.md
  • 255 8-bit Ports
    • 0x00 console in/out
    • 0x01 tape in/out
    • 0x02-0x20 Reserved
    • Others Implementation Specific
  • 255 Syscall routines
  • Program Counter
  • Call Stack 16 x 16-bit
  • 64K x 8-bit Memory
  • MSB / big-endian

ASM Parameters

Type Symbol Example/Use
Registers R A-D
Marker : :XYZ
Absolute Location # 0-65535 | 0xFFFF

Location Parameter (@)

Code ASM Type Values
0x0 P Port 0-255 | 0xFF
0x1 R Register A-D
0x2 M Memory 0-65535 | 0xFFFF
0x3 L Immediate 0-65535 | 0xFFFF | 'a' | "a"
0x4 A Address In Register A-D

ASM Instructions

Hex ASM Parameters Notes
Misc
0x00 NOP
Load/Save
0x10 LOAD [R] [@]
0x11 SAVE [R] [@]
0x12 LOADH [R] [@]
0x13 LOADL [R] [@]
0x14 SAVEH [R] [@]
0x15 SAVEL [R] [@]
Math
0x20 CLR [R]
0x21 ADD [R] [@]
0x22 SUB [R] [@]
0x23 DIV [R] [@]
0x24 MUL [R] [@]
0x25 INC [R]
0x26 DEC [R]
Logic
0x30 NOT [R]
0x31 AND [R] [@]
0x32 OR [R] [@]
0x33 XOR [R] [@]
0x34 SHL [R] [0-7] Shift Left
0x35 SHR [R] [0-7] Shift Right
0x36 BTS [R] [1-8] Bit Set
0x37 BTC [R] [1-8] Bit Clear
Stack
0x40 CALL [#|:]
0x41 RET
0x42 PUSH [R]
0x43 POP [R]
Program Flow
0x50 HALT
0x51 JMP [#|:]
0x52 JZ [R] [#|:]
0x53 JNZ [R] [#|:]
0x54 JBS [R] [1-8] [#|:]
0x55 JBC [R] [1-8] [#|:]
System
0x60 SYS [0-255] Syscall, parameters depend on call
0x61 BRK Pauses program execution if debug is enabled

Assembler Only

ASM Parameters Notes
ORIGIN [#] Sets the Memory Address for the next instruction
ALIAS X Y Replaces word X with word Y where X and Y are alpha numberic, only applies after the instruction

Program Format

ORIGIN 0
:MARKERA    JMP :MARKERB    # This is a comment
:MARKERB    INC A
            JMP :MARKERA
[...ASM Instructions...]
MEMORY
0x100 "string abcd"
100 0x00 00 00