file-list :
s1m.h, s1m.c, supportm.c     simulator files
mpgm.txt                                
microprogram file used by s1m.c
in.obj                                      
test machine code
mgen.c, hash.c                      
microprogram generator
mspec.txt                                
input microprogram in human readable form
s1mx.txt                                  
explain S1 instruction set and microprogram format.
Run mgen.exe, it takes input from mspec.txt and outputs a microprogram
in the form that s1m.exe can read. (see mpgm.txt)
0  dest   r
1         pc
2         ir
3         mar
4         mdr
5  src    r
6         pc
7         ir
8         mar
9         mdr
10        t
11 selr   ir:r0
12        ir:r1
13        ir:r2
14        ir:r1,r2
15 alu    pass1
16        add
17        sub
18        add1
19 mctl   rd
20        wr
21 misc   pc+1
22 cond   u
23        mrdy
24        testcc
25        decode
26 goto   5 bits 26..30
where nn is the number of microword, aaaa is address
and xxxxx... is
the microprogram bit.  xxx... begins at the column 5.
Input to mgen is in a simple form as follows :
.w N      // width of microword N
bits
.a B E    // bit position of Goto field, B
start, E end
.s        // start symbolic
name section
name bit  // "name" is the signal at "bit"
position
...
.m        // start microprogram
section
:label name name ...  /label ;
          //
lable begins with ":"
          //
name is signal name
          //
/label is in Goto field
          //
";" end a microword spec.
...
.e        end of microprogram
spec.
Example from mspec.txt (comment shows here for explanation, no comments are allowed in mspec.txt).
.w 31       // width 31 bits
.a 26 30    // Goto start at bit 26 end at
30
.s          //
symbol section
dr   0      // dest R bit
0
dpc  1      // dest PC bit 1
...
sub  17     // alu sub bit 17
add1 18
mrd  19     // memory read bit 19
mwr  20
pc+1 21
u    22     // Cond uncond
bit 22
mrdy 23
testcc 24
decode 25
.m                             
// microprogram section
:ifetch dmar spc ;             
// <ifetch> MAR = PC
:w0     mrd mrdy /w0 ;         
// MDR = M[MAR]; MREAD  MRDY w0
        dir smdr pc+1 decode
;  // IR = MDR; PC = PC + 1  DECODE
:load   dmar sir:ads ;         
// <load> MAR = IR:ADS
:w1     mrd mrdy /w1 ;
        dr smdr ir:r0 u /ifetch
;
...
.e                             
// end
This is the output (from mpgm.txt )
29
  0 0001001000000000000000000000000
  1 0000000000000000000100010000001
  2 0010000001000000000001000100000
  3 0001000100000000000000000000000
  4 0000000000000000000100010000100
  5 1000000001010000000000100000000
  6 0001000100000000000000000000000
  ....
 27 0100000100000000000000100000000
 28 0100010000001000000000100000000
S1m microprogram simulator reads this microprogram (mpgm.txt) to instantiate
its microstore.  S1m runs the same machine code program as S1, such
as "in.obj" which is sum(a[0]..a[n]). The "in.obj" executed 1109 instructions
6054 clocks with CPI = 5.46
 
26 July 1998
Prabhas Chongstitvatana