The Hex processor is an instruction set where all instructions are readable in a Hex dump.For example it has the '10ad' instruction to access memory or the 'baff1e' (produce obscure error message) instruction.
The hex instruction set - an instruction set whose sole design criteria
was that it be readable in a hex dump.
V0.05 07/10/01 01:05 dave atsign treblig.org
Rules:
All letters A-F are allowed,
Numbers allowed as themselves
0 - for O
1 - for I and L (try not to mix within one instruction!!)
4 - for the suffix fore
5 - for S
8 - for the suffix ate
Less liked:
9 - g
2 - z
Contributions from:
Dave Gilbert (dave atsign treblig.org)
Andrew Bardsley (bardslea atsign cs.man.ac.uk)
Jim Garside (jdg atsign cs.man.ac.uk)
(Charlie_Gibbs atsign mindlink.bc.ca)
Gene Wirchenko (genew atsign mindlink.bc.ca)
James Youngman (jay atsign gnu.org)
05 - return to OS, terminate process
052 - switch to OS/2
0be5e - switch to VAX instruction set
0dd - set low-order bit
0de - generate poetry
0f10 - trap arithmetic overflow
0ffa1 - gut the system
0ff10ad - store
0ff1c1a1 - OS trap
105e - output
105e - (lose a file - alternative)
10ad - load a word from memory
10b - output more vigourously
10ca1e - switch to international hex instruction set
15 - assignment
15d - enable VR extension
1abe1 - place marker for 1f .. e1se .. f1
1abe1 - assembler mnemonic for explicitly declaring labels
1c1c1e - Really, really turn up air conditioners
1ed - set console display indicators
1eee - floating point ops.
1e55 - subtract
1e551e55 - decrement by 1
1f - if
1f18 - trap to timeout routine (If Late !)
10ada11 - restore after trap
10ca1 - allocate space for local variables
5011d - select final(?) version
50da - Refresh
50d0ff - Branch (50d 0ff to ....)
511de - shift
5a1ad - Munch card
5a1d - input?
5afe - switch to user mode
5c01d - produce error message
5ca1e - multiply
5cab - Instruction fetched during a strike?
5caff01d - build stack frame
5eed - initialise random number generator
510b - do nothing
a110c - push to stack
a1d - call admin
a1901 - Unimplemented
a1ia5 - See 1abe1
a5c11 - Superseded by dec0de
abide - Wait for interrupt
ab1e - optimise logic expressions
ab5ci55a - Reserved for future use my maths co-processor
abba - Enable swedish extensions
ac1d - enable VR extension
acce55 - Attempt privilege level elevation
ada - Switch to ada interpretation
add - addition
addadd - increment by 1
affab1e - Enable debugging support
b055ca11 - OS trap
ba51c - not for the RISC version
babb1e - access comms ports (or other IO)
Babba9e - See Ada
bad - the error message
baff1e - Produce obscure error message
be5ie9e - See f100d
b00 - unexpected error
b001 - enable binary logic
b0i1 - Reverses the effect of 1c1c1e instruction
b0110c5 - discard input
b0991e - See baff1e
b100d - terminate with extreme prejudice
bia5ed - Add constant to result of next dec1de instruction
b1ab - Copy data between privilege levels
b1e55 - verify program
b1i55 - Disable interrupts
b10b - Ends program unless followed by 1c1c1e
b4 - post-loop processing (done after d0)
b5 - generate unreliable data
bed - Wait for NMI
be9 - High-priority request (otherwise equivalent to a1d)
c001 - activate air conditioner
c01d - interrupt on low temperature
c0b - sandwich interrupt
c0bb1e - select first version
c0b01 - Multiply program length
c0de - encrypt
c0ffee - switch to J-code instruction set
c109 - Input instruction complementary to 10b
c15c - trap out of RISC version
c1a55 - enable OO features
c1a551c - switch to PDP11 instruction set
c105e - end of file processing
ca11 - call a subroutine
ca1c - evaluate expression
ca5cade - coprocessor escape
ca5e - multi-way branch
ca5e - jump table based jump (indirect jump)
cab1e - network escape
cafebabe - Run Java Class file (cafebabe really is the magic number on Java class files! (even if it is wrong endian))
ce110 - used in music generation routines (string handling?)
c1a55 - Used by C++ support library
daff0di1 - See 0de
decibe1 - Set output volume
def - define constant
def18 - data compression routine
defec8 - garbage compaction and disposal
d0 - Loop start
d0d0 - dead/orphan code
d00d1e - (aliased from 1d1e) - an Idle loop
d15cf11e - as above with parameter
d1ce - read random number generator
d1d - loop end
dc - arithmetic operations ;)
deaf - disable interrupts
dea11oc - Stack freeing
dec - possibly decrement
dec0de - Conversion from .... (Indexing into lookup table?)
dec1de - Comparison
decade - BCD arithmetic
d1ff - subtract
Ecc1e5 - See f00d
e151f - see e1se
e15e - 1f ... e1se ... f1
e0f - End of file (too obvious really...)
ebcdic - Superseded by c0de
f01d - give up
f01dca5E - toupper(register)
f00d - generate data
f00l - generate deceptive output
f1 - end 1f
f11e - read/write filing system
f1a5c0 - switch to x86 instruction set
f1ab - run Nigel's programme
f1a9 - See fea51b1e
f1b - produce error
f1dd1e - generic bit manipulation
f1ee - throw an exception
f1ed - catch an exception
f1eece - run Doug's financial programme
f100d - generate huge amounts of data
f1055 - clean stray bits from between registers
fa110ff - enable 'Stack underflow' exception
fade - appear to give up (or screen intensity)
fa11 - shut the system down
fe11 - system shutdown complete
fee - Report instruction cost
fcc - test EMI emissions
fda - throw 'This processor is not a food stuff' exception
fea51b1e - test and set ?
feed - more input
f1e1d - bit field extract
01d - restore registers from stack
An example program
------------------
(Hello World by Andrew Bardsley bardslea@cs.man.ac.uk)
PUTS:
10ad e1 500000001
d0
10ad e2 11
1f e2 15 d00000000 50d0ff dC
a110c d00000001
10ad 500000000 e2
ca11 dPUTCHAR
dea110c d00000002
d1d
C: 50d0ff 500000000
A: "Hello world"
10ad e0 d00000001
d0
a110c d00000001
10ad 500000000 dA
ca11 dPUTS
dea110c d00000002
add e0 e0 d00000001
1f e0 15 d0000000A 50d0ff dB
d1d
B: