0 .. mspec.txt     s2 microprogram
0 .s
0 x_r1
0 x_r2
0 x_1
0 x_2
0 x_3
0 x_4
0 y_r3
0 y_1
0 y_2
0 y_3
0 y_4
0 z_ry
0 z_im
0 z_0
0 z_1
0 z_2
0 z_4
0 d_r1
0 d_1
0 d_2
0 d_3
0 d_4
0 a_ads
0 a_pc
0 a_tbus
0 j_pc1
0 j_ads
0 j_p1
0 r_mbus
0 r_tbus
0 r_pc
0 r_ads
0 alu_add
0 alu_pass1
0 alu_sub
0 alu_mul
0 alu_div
0 alu_and
0 alu_or
0 alu_xor
0 alu_shl
0 alu_shr
0 alu_pass2
0 alu_op
0 mr
0 mw
0 decode
0 jmp
0 jF
0 jT
0 jz
0 jnz
0 lmar
0 lpc
0 lir
0 lr
0 lt
0 .m
0 :fetch 
0 .. pc->mar, pc+1->pc
0 .. mr->ir, decode
0 	a_pc lmar j_pc1 lpc ;
1 	mr lir decode ;
2 :add
2 .. x=r2, y=r3, alu(add)->t
2 .. d=r1, t->r, fetch
2 	x_r2 y_r3 z_ry alu_add lt ;
3 	r_tbus d_r1 lr jmp /fetch ;
4 :bop
4 	x_r2 y_r3 z_ry alu_op lt ;
5 	r_tbus d_r1 lr jmp /fetch ;
6 :opim
6 	x_r2 z_im alu_op lt ;
7 	r_tbus d_r1 lr jmp /fetch ;
8 :lda
8 .. ads->mar
8 .. d=r1, mr->r, fetch
8 	a_ads lmar ;
9 	mr r_mbus d_r1 lr jmp /fetch ;
10 :ldi
10 .. ads->r, r=ads, d=r1, fetch
10 	d_r1 r_ads lr jmp /fetch ;
11 :ldd
11 .. x=r2, z=im, alu(add)->t
11 .. t->mar
11 .. mr->r, d=r1, fetch
11 	x_r2 z_im alu_add lt ;
12 	a_tbus lmar ;	
13 	mr r_mbus d_r1 lr jmp /fetch ;
14 :ldx
14 .. x=r2, y=r3, z=ry, alu(add)->t
14 .. t->mar
14 .. mr->r, d=r1, fetch
14 	x_r2 y_r3 z_ry alu_add lt ;
15 	a_tbus lmar ;
16 	mr r_mbus d_r1 lr jmp /fetch ;
17 :sta
17 .. ads->mar, r1->t
17 .. mw, fetch
17 	a_ads lmar x_r1 alu_pass1 lt ;
18 	mw jmp /fetch ;
19 :std
19 .. x=r2, z_im, alu(add)->t
19 .. t->mar, x=r1, alu(pass1)->t
19 .. mw, fetch
19 	x_r2 z_im alu_add lt ;
20 	a_tbus lmar x_r1 alu_pass1 lt ;
21 	mw jmp /fetch ;
22 :stx
22 .. x=r2, y=r3, z=ry, alu(add)->t
22 .. t->mar, x=r1, alu(pass1)->t
22 .. mw, fetch
22 	x_r2 y_r3 z_ry alu_add lt ;
23 	a_tbus lmar x_r1 alu_pass1 lt ;
24 	mw jmp /fetch ;
25 :jcc
25 .. if cond is false fetch
25 .. ads->pc fetch
25 	jF /fetch ;
26 	j_ads lpc jmp /fetch ;
27 :jal
27 .. pc->r1, ads->pc, fetch
27 	r_pc d_r1 lr j_ads lpc jmp /fetch ;
28 :jr
28 .. x=r1, j=p1, r->pc, fetch
28 	x_r1 j_p1 lpc jmp /fetch ;
29 :trap
29 	jmp /fetch ;
30 :xl
30 	jmp /fetch ;
31 :xd
31 	jmp /fetch ;
32 :xx 
32 .. search r1 x d
32 .. retval in r1
32 .. list x=r1, data d=r2, tmp=r3
32 .. 
32 .. 0->retval
32 .. :loop r1-0
32 .. jf fetch   ;; return
32 .. r1->mar, mr->r3
32 .. r3-r2
32 .. jt (eq) L1
32 .. 1->retval, jmp fetch ;; return
32 .. :L1 r1+1->t
32 .. t->mar, mr->r1, jmp loop
32 	z_0 alu_pass2 lt ;
33 	d_r1 r_tbus lr ;
34 :loop	x_1 z_0 alu_sub ;
35 	jz /fetch ;
36 	x_1 alu_pass1 lt ;
37 	a_tbus lmar ;
38 	mr d_3 r_mbus lr ;
39 	x_3 y_2 z_ry alu_sub ;
40 	jz /skip ;
41 	z_1 alu_pass2 lt ;
42 	d_r1 r_tbus lr jmp /fetch ;
43 :skip	x_1 z_1 alu_add lt ;
44 	a_tbus lmar ;
45 	mr d_1 r_mbus lr jmp /loop ;
46 .e
