I was delighted to receive a Twitter notification from Frank Eggink, one of this project's followers, with news that he had created a table of Suite-16 instructions so that it can be used by TASM - a table driven assembler popular for small micros about 20 years ago.
His customised table and a link to the dowload site for TASM32 can be found at his Github repository: Here
Many thanks Frank - much appreciated your contribution!
I have re-jigged the instruction set slightly in the last few days - and the most recent can be found in this simulator file in my Github
With the changes to the instruction set, I now have no more empty slots, so the NOP at 0x0F00 seems a bit extravagant.
With an 8-bit immediate add to the accumulator, the NOP can be created from ADI 0.
This frees up the 0x0Fxx slot for my proposed (PDP-8 like) OPR instructions including shifts, clears, complements and small constants.
The main changes are documented in the text header:
// A simple simulator for Suite-16 processor
// Add and Subtract Immediate instructions ADI and SBI added at 0x0Axx and 0x0Bxx
// IN moved to 0x0D00
// JP@ - Branch to the address held in the accumulator added at 0x0E00
/* Suite-16 Instructions
Register OPS-
0n --- -- Non-Register Ops
1n SET Rn Constant (Set) Rn = @(PC+1)
2n LD Rn (Load) AC = Rn
3n ST Rn (Store) Rn = AC
4n LD @Rn (Load Indirect) AC = @Rn
5n ST @Rn (Store Indirect) @Rn = AC
6n POP @Rn Pop AC AC = @Rn Rn = Rn - 1
7n PUSH @Rn Push AC @Rn = AC Rn = Rn + 1
8n AND Rn (AND) AC = AC & Rn
9n OR Rn (OR) AC = AC | Rn
An ADD Rn (Add) AC = AC + Rn
Bn SUB Rn (Sub) AC = AC - Rn
Cn INV Rn (Invert) Rn = ~Rn
Dn DCR Rn (Decrement) Rn = Rn - 1
En INR Rn (Increment) Rn = Rn + 1
Fn XOR Rn (XOR) AC = AC ^ Rn
Non-register OPS-
00 BRA Always Target = IR7:0
01 BGT AC>0 Target = IR7:0
02 BLT AC<0 Target = IR7:0
03 BGE AC>=0 Target = IR7:0
04 BLE AC<=0 Target = IR7:0
05 BNE AC!=0 Target = IR7:0
06 BEQ AC=0 Target = IR7:0
07 JMP 16-bit Target = @(PC+1)
08 CALL 16-bit Target = @(PC+1)
09 RET Return
0A ADI Add 8-bit Immediate Immediate = IR7:0
0B SBI Subtract 8-bit Immediate Immediate = IR7:0
0C OUT putchar(AC)
0D IN AC = getchar()
0E JP@ BRA (R0)
0F NOP AC &= AC
*/
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.