open-simh.simtools/tests/test-opcodes.mac
Olaf Seibert 6369384e25 Add some missing instructions.
- to tests: MFPT, MTPS, MFPS
- also to opcode set: CSM, TSTSET, WRTLCK
2021-03-13 22:55:04 +01:00

293 lines
5.9 KiB
Plaintext

;;;;;
;
; Use all opcodes once
;
halt
wait
rti
bpt
iot
reset
rtt
mfpt
; 00 00 10 ... 00 00 77 unused
jmp .
rts pc
; 00 02 10 ... 00 02 27 unused
spl 3
nop ; = clear NO condition codes
clc
clv
clz
cln
ccc
sec
sev
sez
sen
scc
swab @(r3)+
br .
bne .
beq .
bge .
blt .
bgt .
ble .
jsr pc,.
clr @(r3)+
com @(r3)+
inc @(r3)+
dec @(r3)+
neg @(r3)+
adc @(r3)+
sbc @(r3)+
tst @(r3)+
ror @(r3)+
rol @(r3)+
asr @(r3)+
asl @(r3)+
mark #33
mfpi @(r3)+
mtpi @(r3)+
sxt @(r3)+
csm @(r3)+ ; only some models
; 00 71 00 ... 00 71 77 unused
tstset @(r3)+ ; only some models
wrtlck @(r3)+ ; only some models
; 00 74 00 ... 00 77 77 unused
mov (r1),(r2)+
cmp (r1),(r2)+
bit (r1),(r2)+
bic (r1),(r2)+
bis (r1),(r2)+
add (r1),(r2)+
mul (r1),r2
div (r1),r2
ash (r1),r2
ashc (r1),r2
xor r1,(r2)+
fadd r1 ; PDP-11/35, 11/40 floating point unit (FIS)
fsub r1
fmul r1
fdiv r1
; 07 50 40 ... 07 60 17 unused
; 07 60 20 ... 07 61 77 CIS Commercial Instruction Set
; 07600x unused
; 07601x unused
l2d0 ; 07602x
l2d1
l2d2
l2d3
l2d4
l2d5
l2d6
l2d7
movc ; 07603x
movrc
movtc
; 3..7?
locc ;07604x
skpc
scanc
spanc
cmpc
matc
; 6..7?
addn ; 07605x
subn
cmpn
cvtnl
cvtpn
cvtnp
ashn
cvtln
l3d0 ; 07606x
l3d1
l3d2
l3d3
l3d4
l3d5
l3d6
l3d7
addp ; 07607x
subp
cmpp
cvtlp
cvtpl
mulp
divp
ashp
; 7?
; 07610x unused
; 07611x unused
; 07612x unused: would be L2D0I
; All the *I instructions need inline operands, which are omitted in this test.
; This Macro11 (as an extension) allows to specify them as arguments
; following the opcode, so you don't have to use inline .word directives.
movci ; 07613x
movrci
movtci
; 3..7?
locci ; 07614x
skpci
scanci
spanci
cmpci
matci
; 6..7?
addni ; 07615x
subni
cmpni
cvtnli
cvtpni
cvtnpi
ashni
cvtlni
; 07616x unused: would be L3D0I
addpi ; 07617x
subpi
cmppi
cvtlpi
cvtpli
mulpi
divpi
ashpi
; 7?
; 07 62 00 ... 07 67 77 unused
sob r1,.
bpl .
bmi .
bhi .
blos .
bvc .
bcc .
bhis . ; same
bcs .
blo . ; same
emt #0 ; ...
emt #255.
trap #0 ; ...
trap #255.
clrb @(r3)+
comb @(r3)+
incb @(r3)+
decb @(r3)+
negb @(r3)+
adcb @(r3)+
sbcb @(r3)+
tstb @(r3)+
rorb @(r3)+
rolb @(r3)+
asrb @(r3)+
aslb @(r3)+
mtps @(r3)+
mfpd (r1)
mtpd (r1)
mfps @(r3)+
movb (r1),(r2)+
cmpb (r1),(r2)+
bitb (r1),(r2)+
bicb (r1),(r2)+
bisb (r1),(r2)+
sub (r1),(r2)+
; 17 00 00 ... 17 77 77 Floating Point Processor (FPP) floating point
cfcc
setf
seti
setd
setl
ldfps @(r1)+
stfps @(r1)+
stst @(r1)+
ac1 = %1
ac5 = %5
clrf ac5 ; fdst: fpp register or general mode (not register)
clrd @(r5)+ ; same opcode
tstf ac5
tstd @(r5)+ ; same opcode
absf ac5
absd @(r5)+ ; same opcode
negf ac5
negd @(r5)+ ; same opcode
mulf @(r5)+,ac1
muld ac5,ac1 ; same opcode
modf @(r5)+,ac1
modd ac5,ac1 ; same opcode
addf @(r5)+,ac1
addd r5,ac1 ; same opcode
ldf @(r5)+,ac1
ldd r5,ac1 ; same opcode
subf @(r5)+,ac1
subd r5,ac1 ; same opcode
cmpf @(r5)+,ac1
cmpd r5,ac1 ; same opcode
stf ac1,@(r5)+
std ac1,r5 ; same opcode
divf @(r5)+,ac1
divd r5,ac1 ; same opcode
stexp ac1,@(r5)+
stcfi ac1,@(r5)+
stcfl ac1,@(r5)+ ; same opcode
stcdi ac1,@(r5)+ ; same opcode
stcdl ac1,@(r5)+ ; same opcode
stcfd ac1,@(r5)+
stcdf ac1,@(r5)+ ; same opcode
ldexp @(r5)+,ac1
ldcif @(r5)+,ac1 ; same opcode
ldcid @(r5)+,ac1 ; same opcode
ldclf @(r5)+,ac1 ; same opcode
ldcld @(r5)+,ac1 ; same opcode
ldcdf @(r5)+,ac1
ldcfd @(r5)+,ac1 ; same opcode
.end