.. sx microprogram v 1.0 .. .s .. ======= signal definitions ======= x.ts x.fp x.sp x.nx y.ff y.arg b.tbus b.dbus b.pc d.fp d.ts a.tbus a.pc j.pc1 j.pcarg j.tbus alu.add alu.sub alu.inc alu.dec alu.z alu.eq alu.op alu.p1 alu.p2 .. load registers lir lts lfp lsp lnx lff lpc mR mW .. next micro ads ifT ifF decode trap .m .. ========= micro program ============= :fetch a.pc mR lir decode ; :bop x.sp alu.p1 a.tbus mR b.dbus lff ; x.sp alu.dec b.tbus lsp ; x.ts y.ff alu.op b.tbus lts j.pc1 lpc /fetch ; :uop x.ts alu.op b.tbus lts j.pc1 lpc /fetch ; :get x.sp alu.inc b.tbus lsp ; d.ts x.sp alu.p1 a.tbus mW ; x.fp y.arg alu.sub a.tbus mR b.dbus lts j.pc1 lpc /fetch ; :put x.fp y.arg alu.sub a.tbus d.ts mW ; :popts x.sp alu.p1 a.tbus mR b.dbus lts ; x.sp alu.dec b.tbus lsp j.pc1 lpc /fetch ; :ld x.sp alu.inc b.tbus lsp ; d.ts x.sp alu.p1 a.tbus mW ; y.arg alu.p2 a.tbus mR b.dbus lts j.pc1 lpc /fetch ; :st d.ts y.arg alu.p2 a.tbus mW /popts ; :ldx x.sp alu.p1 a.tbus mR b.dbus lff ; x.sp alu.dec b.tbus lsp ; x.ts y.ff alu.add a.tbus mR b.dbus lts j.pc1 lpc /fetch ; :stx x.sp alu.p1 a.tbus mR b.dbus lnx ; x.sp alu.dec b.tbus lsp ; x.sp alu.p1 a.tbus mR b.dbus lff ; x.nx y.ff alu.add a.tbus d.ts mW ; x.sp alu.dec b.tbus lsp /popts ; :lit x.sp alu.inc b.tbus lsp ; d.ts x.sp alu.p1 a.tbus mW ; y.arg alu.p2 b.tbus lts j.pc1 lpc /fetch ; :jmp j.pcarg lpc /fetch ; :jt x.ts alu.z ifT /j3 ; :j2 .. j.pcarg lpc x.sp alu.p1 a.tbus mR b.dbus lts ; x.sp alu.dec b.tbus lsp /fetch ; :jf x.ts alu.z ifT /j2 ; :j3 .. j.pc1 lpc x.sp alu.p1 a.tbus mR b.dbus lts ; x.sp alu.dec b.tbus lsp /fetch ; :call x.sp alu.inc b.tbus lsp ; x.sp alu.p1 a.tbus d.ts mW j.pc1 lpc ; b.pc lts ; y.arg alu.p2 b.tbus lnx a.tbus mR lir ; x.sp y.arg alu.add a.tbus d.fp mW ; x.sp y.arg alu.add b.tbus lfp lsp ; x.nx alu.inc j.tbus lpc /fetch ; :ret x.sp alu.p1 b.tbus lff ; x.fp y.ff alu.eq ifF /r2 ; x.ts alu.p1 j.tbus lpc ; x.fp y.arg alu.sub b.tbus lsp ; x.sp alu.p1 a.tbus mR b.dbus lts ; x.sp alu.dec b.tbus lsp ; x.fp alu.p1 a.tbus mR b.dbus lfp /fetch ; :r2 x.fp alu.inc a.tbus mR b.dbus lff ; y.ff alu.p2 j.tbus lpc ; x.fp y.arg alu.sub b.tbus lsp ; x.fp alu.p1 a.tbus mR b.dbus lfp /fetch ; :sys :array :end trap j.pc1 lpc /fetch ; .. .e .. sx2 microprogram v 1.0 .. .s .. ========= signal definition ========= x.ts x.fp x.nx y.ff y.arg y.u b.tbus b.dbus b.sp d.fp d.ts d.v d.u a.tbus a.pc a.sp a.fp j.pc1 j.pcarg j.tbus so.sp so.spx si.inc si.dec si.k si.tbus w.v1 w.v2 w.v3 w.v4 w.varg z.dbus z.ts t.v t.pc t.bus u.iru u.dbus alu.add alu.sub alu.inc alu.dec alu.add2 alu.z alu.eq alu.op alu.p1 alu.p2 .. load registers lir lts lfp lsp lnx lff lpc lv1 lv2 lv3 lv4 lvarg lu mR mW .. next micro ads ifT ifF ifu0 ifp0 ifargm skipu decode trap .m .. ======== micro program ================ :fetch a.pc mR lir decode ; :bop so.sp si.dec lsp a.sp mR b.dbus lff ; x.ts y.ff alu.op b.tbus t.bus lts j.pc1 lpc /fetch ; :uop x.ts alu.op b.tbus t.bus lts j.pc1 lpc /fetch ; :get so.spx si.inc lsp a.sp d.ts mW ; x.fp y.arg alu.sub a.tbus mR b.dbus t.bus lts j.pc1 lpc /fetch ; :get1 so.spx si.inc lsp a.sp d.ts mW w.v1 t.v lts j.pc1 lpc /fetch ; :get2 so.spx si.inc lsp a.sp d.ts mW w.v2 t.v lts j.pc1 lpc /fetch ; :get3 so.spx si.inc lsp a.sp d.ts mW w.v3 t.v lts j.pc1 lpc /fetch ; :get4 so.spx si.inc lsp a.sp d.ts mW w.v4 t.v lts j.pc1 lpc /fetch ; :put x.fp y.arg alu.sub a.tbus d.ts mW ; :popts so.sp si.dec lsp a.sp mR b.dbus t.bus lts j.pc1 lpc /fetch ; :put1 z.ts lv1 so.sp si.dec lsp a.sp mR b.dbus t.bus lts j.pc1 lpc /fetch ; :put2 z.ts lv2 so.sp si.dec lsp a.sp mR b.dbus t.bus lts j.pc1 lpc /fetch ; :put3 z.ts lv3 so.sp si.dec lsp a.sp mR b.dbus t.bus lts j.pc1 lpc /fetch ; :put4 z.ts lv4 so.sp si.dec lsp a.sp mR b.dbus t.bus lts j.pc1 lpc /fetch ; :ld so.spx si.inc lsp a.sp d.ts mW ; y.arg alu.p2 a.tbus mR b.dbus t.bus lts j.pc1 lpc /fetch ; :st d.ts y.arg alu.p2 a.tbus mW /popts ; :ldx so.sp si.dec lsp a.sp mR b.dbus lff ; x.ts y.ff alu.add a.tbus mR b.dbus t.bus lts j.pc1 lpc /fetch ; :stx so.sp si.dec lsp a.sp mR b.dbus lnx ; so.sp si.dec lsp a.sp mR b.dbus lff ; x.nx y.ff alu.add a.tbus d.ts mW /popts ; :lit so.spx si.inc lsp a.sp d.ts mW y.arg alu.p2 b.tbus t.bus lts j.pc1 lpc /fetch ; :jmp j.pcarg lpc /fetch ; :jt x.ts alu.z ifT /j3 ; :j2 .. j.pcarg lpc so.sp si.dec lsp a.sp mR b.dbus t.bus lts /fetch ; :jf x.ts alu.z ifT /j2 ; :j3 .. j.pc1 lpc so.sp si.dec lsp a.sp mR b.dbus t.bus lts /fetch ; :call so.spx si.inc lsp a.sp d.ts mW j.pc1 lpc ; t.pc lts y.arg alu.p2 j.tbus lpc ifu0 /fetch ; .. x.fp y.u alu.sub b.tbus lfp skipu ; w.v4 a.fp d.v mW x.fp alu.inc b.tbus lfp ; w.v3 a.fp d.v mW x.fp alu.inc b.tbus lfp ; w.v2 a.fp d.v mW x.fp alu.inc b.tbus lfp ; w.v1 a.fp d.v mW x.fp alu.inc b.tbus lfp /fetch ; :fun si.k lsp so.spx a.sp d.fp mW ; b.sp lfp ; si.inc so.spx lsp a.sp d.u mW u.iru lu ; j.pc1 lpc ifp0 /fetch ; :cachev x.fp y.u alu.sub b.tbus lfp skipu ; a.fp mR z.dbus lv4 x.fp alu.inc b.tbus lfp ; a.fp mR z.dbus lv3 x.fp alu.inc b.tbus lfp ; a.fp mR z.dbus lv2 x.fp alu.inc b.tbus lfp ; a.fp mR z.dbus lv1 x.fp alu.inc b.tbus lfp /fetch ; :ret si.dec so.spx b.sp lff ; x.fp y.ff alu.eq ifF /r2 ; .. x.ts alu.p1 j.tbus lpc ; so.sp a.sp mR u.dbus lu ; x.fp y.arg alu.sub si.tbus lsp ; so.sp si.dec lsp a.sp mR b.dbus t.bus lts ifu0 /r3 ; a.fp mR b.dbus lfp /cachev ; :r2 .. x.fp alu.add2 a.tbus mR b.dbus lff ; y.ff alu.p2 j.tbus lpc ; x.fp alu.inc a.tbus mR u.dbus lu ; x.fp y.arg alu.sub si.tbus lsp ifu0 /r3 ; a.fp mR b.dbus lfp /cachev ; :r3 .. a.fp mR b.dbus lfp /fetch ; :inc x.ts alu.p1 b.tbus lnx w.varg t.v lts ifargm /inc2 ; x.ts alu.inc b.tbus t.bus lts ; z.ts lvarg x.nx alu.p1 b.tbus t.bus lts j.pc1 lpc /fetch ; :inc2 .. x.fp y.arg alu.sub a.tbus mR b.dbus t.bus lts ; x.ts alu.inc b.tbus t.bus lts ; x.fp y.arg alu.sub a.tbus d.ts mW ; x.nx alu.p1 b.tbus t.bus lts j.pc1 lpc /fetch ; :dec x.ts alu.p1 b.tbus lnx w.varg t.v lts ifargm /dec2 ; x.ts alu.dec b.tbus t.bus lts ; z.ts lvarg x.nx alu.p1 b.tbus t.bus lts j.pc1 lpc /fetch ; :dec2 .. x.fp y.arg alu.sub a.tbus mR b.dbus t.bus lts ; x.ts alu.dec b.tbus t.bus lts ; x.fp y.arg alu.sub a.tbus d.ts mW ; x.nx alu.p1 b.tbus t.bus lts j.pc1 lpc /fetch ; :sys :array :end trap j.pc1 lpc /fetch ; .. .e .. ======== extended instructions ======== :ldxv x.sp alu.inc b.tbus lsp ; d.ts x.sp alu.p1 a.tbus mW ; x.fp y.a1 alu.sub a.tbus mR b.dbus lts ; x.ts y.a2 alu.add a.tbus mR b.dbus lts j.pc1 lpc /fetch ; :stxv x.fp y.a1 alu.sub a.tbus mR b.dbus lnx ; x.nx y.a2 alu.add a.tbus d.ts mW /popts ; :jne x.sp alu.p1 a.tbus mR b.dbus lff ; x.sp alu.dec b.tbus lsp ; x.ts y.ff alu.eq ifT /j3 ; j.pcarg lpc x.sp alu.p1 a.tbus mR b.dbus lts ; x.sp alu.dec b.tbus lsp /fetch ; :seqi x.sp alu.inc b.tbus lsp j.pc1 lpc ; d.ts x.sp alu.p1 a.tbus mW ; x.fp y.a1 alu.sub a.tbus mR b.dbus lnx ; x.nx alu.p1 a.tbus mR b.dbus lts lff ; x.ts alu.z ifT /fetch ; x.fp y.a2 alu.sub a.tbus mR b.dbus lnx ; x.nx alu.p1 a.tbus mR b.dbus lts ; x.ts alu.z ifT /fetch ; x.ts y.ff alu.eq b.tbus lts ifF /fetch ; x.nx alu.inc b.tbus lts ; x.fp y.a2 alu.sub a.tbus d.ts mW ; x.fp y.a1 alu.sub a.tbus mR b.dbus lnx ; x.nx alu.inc b.tbus lts lff ; x.fp y.a1 alu.sub a.tbus d.ts mW ; x.nx y.ff alu.ne b.tbus lts /fetch ; .. End