|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 112896 (0x1b900) Types: TextFileVerbose Names: »rc3503«
└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system └─⟦093e2ad1c⟧ └─⟦this⟧ »rc3503«
;; rc3503 microprogram, disassembled version ;; ;; this listing is produced by disassembling the original rc3503 ;; microprogram listing. ;; during the process of disassembling some information (especially ;; concerning the use of the alu slice) is lost. the disassembled ;; listing specifies the same logical function as the original ;; microprogram, but the way of doing it may differ. as a consequence ;; the binary output from the disassembler may differ from the original ;; binary output, and the original binary output listing should ;; therefore be consulted whenever information about the binary ;; microinstruction word is needed. ;; ;; please note that all constants generated by the disassembler are ;; represented as hexadecimal numbers, whereas the comments in the ;; listing are unchanged and hence may contain numbers in any ;; number representation. .p ;; rc3503 microprogram description. ;; ;; date 1980.11.11 kneh. ;; listing rcsl 52 - aa 1005 ;; source tape rcsl 52 - aa 1006 ;; macro source rcsl 52 - aa 1007 ;; ;; des35 source rcsl 52 - aa 1008 ;; def1 source rcsl 52 - aa 1009 ;; ;; slice register layout. ;; w0 save current w0. ;; w1 current level number. ;; w2 save read address (m:ram). ;; w3 ea (effective address) ;; w4 op (operand). ;; w5 current i/o level. ;; w6 enable/disable flag; =4 if enable else =5. ;; w7 scratch register. ;; w8 constant 8.177000 ;; w9 constant 8.400 ;; w10 constant 8.2 ;; w11 module select. ;; w12 constant 8.37 ;; w13 current level shift logical left 3 positions. ;; w14 memory address to mem read/write routines. ;; w15 data to/from mem read/write routines. .p!0002 m3503 ;; rc3503 microprogram description. ;; the microprogram listing has the following format: ;; ;; microaddress word1 word2 word3 word4 ;; xxxx xxxx xxxx xxxx xxxx ;; x means hex ciffer. ;; xxxx --> bit 0-15 ;; ;; word1 : ;;-------- ;; bit 0-3 next i0-3 next microinstruction. ;; 0 jz jump zero. ;; 1 cjs cond jsb pl. ;; 2 jmap jump map. ;; 3 cjp cond jump pl. ;; 4 push push/cond ld cntr ;; 5 jsrp cond jsb r/pl. ;; 6 cjv cond jump vector. ;; 7 jrp cond jump r/pl. ;; 8 rfct repeat loop,cntr<>0 ;; 9 rpct repeat pl,cntr<>0. ;; a crtn cond rtn. ;; b cjpp cond jump pl&pop. ;; c ldct ld cntr&continue. ;; d loop test end loop ;; e cont continue. ;; f twb three-way branch. ;; ;; bit 4-7 cond 0-3 condition select. ;; bit 8-11 asel 0-3 a-slice register select. ;; bit 12-15 bsel 0-3 b-slice register select. .p!0003 m3503 ;; rc3503 microprogram description. ;; word2 : ;; ------- ;; bit 0-2 slice 0-2 alu destination control. ;; bit 3-6 alu func 0-2,c alu function and carry. ;; bit 7-9 alu op 0-2 alu source operand. ;; bit10 enable hold ;; bit 11-12 cload 0-1 carry load control field ;; bit 13-15 wreg 0-2 w-register ram address control. ;; ;; word 3 : ;; -------- ;; bit 0-3 dummy ;; bit 4 escape/polx ;; bit5 -,sup itr. ;; bit 6 test ack. ;; bit 7 -,byte en/nxt mar 0. ;; bit 8 -,update alu status. ;; bit 9 -,update carry. ;; bit 10 -,set base ;; bit 11 -,syn itr/-,sign extend. ;; bit12 -,reg load. ;; bit 13 -,ccen ;; bit14 -,forward read. ;; bit 15 -,inta. .p!0004 m3503 ;; rc3503 microprogram description. ;; ;; word 4 : ;; ------- ;; bit 0-2 bus source control field. ;; bit 3-5 bus destination field. ;; bit 6-15 nxt mar 1-10. .p!0005 m3503 ;; log: rcm35 03b -- bj -- ;; ;; date 1980-11-11 ;; .w0=0 .w1=1 .w2=2 .w3=3 .w4=4 .w5=5 .w6=6 .w7=7 .w8=8 .w9=9 .w10=0a .w11=0b .w12=0c .w13=0d .w14=0e .w15=0f nop=0 aucon= 1ff citr= 40 cpuve= 3b fi5= 3ff fi4= 3fe fi3= 3fd fi2= 3fc fi1= 3fb fi0= 3fa fia = 3ef ; save of parity error information fib = 3ee fic = 3ed fid = 3ec fie = 3eb fif = 3ea perro= 41 ritr= 0 sitr= 20 timer= 140 waits= 06 wctim= 08 .p!0006 m3503 ;; 1980.11.04 kneh. ;; rc3503 microprogram. ;; initialization routine. ;; place the following constants in slice registers: ;; w10:= 2 ;; w9:= 400 ;; w06:= 4 ;; w11:= 1 ;; w12:= 37 ;; w8:= 1000 ;; enable interrupt init: w10:=2,, ; w9:=100,, ; w11:=1,, ; w12:=1f,, ; w8:=200,, ; led:=4,w6:=4,, ; ra:=80,w13:=80,, ; ba:=w1:=,,cjp uptab ; ;; debug initialization routine. debug: w0,,cjv 6 map45 ; dupdat: w0,,cjp cr dupdat ; w0,,cjp not c7 debug ; ccr,w0,, ; ir:=w0,,cjp fetch ; ;; exec one instruction. fetcd: w6 and w11,s,cjp cr fetcd ; int,w0,,cjp fetca ; nop .p!0007 m3503 ;; rc3503 microprogram. 1979.10.07 kneh. ;; shift rotate-instructions with ir(7:8)=00. ;; the number of shifts of shifts is specified by ir(12:15). shiti: w15:=0f and q,s, ; ;b01:= w(current level). shlop: w0,,cjp zro nupdat ; rc:=w15--,,ldct ; ; q and a13 -----> a17. a17-1 ----> n-counter (am2910). w7:=zdw,s,cjp not st7 shrop; ,,cjv 0d rleft ; ; if ir11=1 then jump vector "rleft" else continue. shrop: w0,,cjv 0d rright ; nop nop nop ;; shift rotate-instructions with ir(7:8) <> 00. ;; the number of shifts is specified by x(12:15). shitx: w7:=0f,, ; w15:=zdx and w7,s,cjp shlop; ; (x) and a07 -----> a17. nop .p!0008 m3503 ;; rc3503 microprogram. ;; main loop.fetch routine. yfetch: w1:=int,,cjp not cr debug ; ra:=w1,,cjs gint1 ; xfetca: c:=rd,w0:=rd,, ; bf:=0c0,w0,h , ; bd:=w14:=w0,h r , ; led:=5,w0,h , ; ir:=bd,q:=bd,h w s, ; led:=w6,w2:=,,cjv 3 sparf ; fetrd: rm:=w0:=w10+w0,,jmap 0 ; nop .p!0009 m3503 ;; rc 3503 microprogram ;; jump to address calculation map. ;; ir jump to routine: ;; 78901234 ;; 00xxxxxx ir(0:4)<24 format a, x=0 fax0 ;; 01xxxxxx ir(0:4)<24 format a, x<>0 faxn ;; 10xxxxxx ir(0:4)<24 format a ,x<>0 faxn ;; 11xxxxxx ir(0:4)<24 format a, x<>0 faxn ;; 00011110 format b,x=0,i=0 bx001 ;; 00111110 format b,x=0,i=1 bx0i1 ;; 01011110 format b,x<>0,i=0 bxn01 ;; 10011110 format b,x<>0,i=0 bxn01 ;; 11011110 format b,x<>0,i=0 bxn01 ;; 01111110 format b,x<>0,i=1 bxni1 ;; 10111110 format b,x<>0,i=1 bxni1 ;; 11111110 format b,x<>0,i=1 bxni1 ;; 00011111 format c,x=0,i=0 cx001 ;; 00111111 format c,x=0,i=1 cx0i1 ;; 01011111 format c,x<>0,i=0 cxn01 ;; 10011111 format c,x<>0,i=0 cxn01 ;; 11011111 format c,x<>0,i=0 cxn01 ;; 01111111 format c,x<>0,i=1 cxni1 ;; 10111111 format c,x<>0,i=1 cxni1 ;; 11111111 format c,x<>0,i=1 cxni1 ;; xx011000 read status/word rxc ;; xx111000 read block of bytes/word rbx ;; 00011001 write control/word,x=0 wxcx0 ;; 01011001 write control/word,x<>0 wxcxn ;; 10011001 write control/word,x<>0 wxcxn ;; 11011001 write control/word,x<>0 wxcxn ;; xx111001 write block of bytes/word wbx ;; 00x11100 shift/rotate,x=0 shiti ;; 01x11100 shift/rotate,x<>0 shitx ;; 10x11100 shift/rotate,x<>0 shitx ;; 11x11100 shift/rotate,x<>0 shitx ;; xxx11010 interlevel load ild ;; xxx11011 interlevel store ist ;; xxx11101 not used update ;; xxx01110 not used update .p!0010 m3503 ;; rc3503 microprogram. ;; address calculation. format a. x=0. ;; when called: ;; w0=w0(current); ;; q=d(sign extended); ;; return: ;; w3=ea; w4=operand fax0: w3:=q,, ; w4:=q,,jmap not 0 ; ;; address calculation. format a. x<>0. ;; call: w0=w0(current); q=d(displacement sign extended); ;; return: w3=ea; w4=operand; faxn: w3:=zdx+q,, ; bd:=w14:=w3,h r ,cjs ywread; w4:=w15,,jmap not 0 ; .p!0011 m3503 ;; rc3503 microprogram. ;; address calculation. format c.(ir(0:4))=31. x<>0.i=0. ;; call: w0=w0(current); q=d(displacement sign extended); ;; return: w3=ea; w4=operand; cxn01: bd:=w14:=w0,h r ,cjs ywread; ; w15:= a( next word); w3:=zdx+w15,, ; ; w3:= ea; bd:=w14:=w3,h r ,cjs ywread; rm:=w0:=w10+w0,, ; ; w15:= st( xn+a); w4:=w15,,jmap not 8 ; ;; address calculation. format c. ir(0:4)=31. x<>0. i=1. ;; call: w0=w0(current); q=d(displacement sign extended); ;; return: w3= ea; w4= operand = ea; cxni1: bd:=w14:=w0,h r ,cjs ywread; w3:=zdx+w15,, ; rm:=w0:=w10+w0,, ; w4:=w3,,jmap 8 ; .p!0012 m3503 ;; rc3503 microprogram. ;; address calculation. format c. ir(0:4)=31. x=0. i=0. ;; call: w0=w0(current); q=d(displacement sign extended); ;; return: w3=ea; w4=operand= st(ea); cx001: bd:=w14:=w0,h r ,cjs ywread; w3:=w15,, ; bd:=w14:=w15,h r ,cjs ywread; rm:=w0:=w10+w0,, ; w4:=w15,,jmap not 8 ; ;; address calculation .format c. ir(0:4)=31. x=0. i=1. ;; call: w0=w0(current); q=d(displacement sign extended); ;; return: w3=ea; w4=operand; cx0i1: bd:=w14:=w0,h r ,cjs ywread; w3:=w15,, ; rm:=w0:=w10+w0,, ; w4:=w15,,jmap not 8 ; .p!0013 m3503 ;; rc3503 microprogram. ;; address calculation. format b. ir(0:4)=30. x<>0. i=0. ;; call: w0=w0(current); ;; return: w3=ea ; w4=operand; bxn01: w3:=zdx,, ; bd:=w14:=w3,h r ,cjs ywread; w4:=w15,,jmap not 8 ; ;; address calculation. format b. ir(0:4)=30. x<>0. i=1. ;; call: w0=w0(current); ;; return: w3=ea; w4=operand; bxni1: w3:=zdx,, ; w4:=w3,,jmap 8 ; ;; rc3503 microprogram. ;; address calculation. format b. ir(0:4)=30. x=0. i=1. bx0i1: w3:=,, ; w4:=w3,,jmap not 8 ; ;; address calculation. format b. ir(0:4)=30. x=0. i=1. ;; call: w0=w0(current); ;; return: w3=ea; w4=operand. bx001: w3:=,, ; bd:=w14:=,h r ,cjs ywread ; w4:=w15,,jmap not 8 ; nop nop nop nop nop nop nop nop .p!0014 m3503 ;; interlevel store (ist). ;; store the w-register into the working register specified by x ;; from interruption level n. the contents of w remain unchanged. ;; control the status of the interruption system as follows: ;; x(nth level):= w(current level). ;; if code= d then enable:=0. ;; if code= e then enable:=1. ;; if code= s then interrupt(n):=1. ist: w7:=zdw,, ; ; b07:= w(current level). ra:=w3:=w12 and q,, ; ; q and a14 ---> wadd register. istx: w14:=rd,, ; ra:=w14,, ; zdx:=w7,, ; ; b07 ---> x(nth level). ra:=w13,,cjv 0d upitr ; ; b15 ---> wadd register (set cur level). nop nop ;; interlevel load (ild). ;; load the w-register with the working register specified by x from ;; interruption level n.control the status of the interruption system as ;; follows: ;; w(current level):= x(nth level). ;; if code= d then enable:= 0. ;; if code= e then enable:= 1. ;; if code= s then interrupt(n):=1. ild: ra:=w3:=w12 and q,, ; ; q and a14 --> wadd,b16. ildx: w14:=rd,, ; ra:=w14:=w14,, ; w7:=zdx,, ; ; b02:= (x). ra:=w13,, ; ; b15 --> wadd. zdw:=w7,,cjv 0d upitr ; ; b02---> w(current level). nop nop .p!0015 m3503 ;; rc3503 microprogram. ;; subroutines. ;; routine to set the interrupt level specified in a16(9:15). sitrn: bf:=w14+w8,,200 ; ; a17:= a16+(-, iors0=1,-,iors1=0). w15:=sitr,, ; ; load set condition in reg 17 (bus 10= 1). bd:=w15 ior w14,h w ,crtn ; ; set intr. and return. nop ;; routine to reset the interrupt level specified in a16(9:15). citrn: bf:=w14+w8,,200 ; ; a17:= a16 +(-,iors0=1,-,iors1=0). ; modul select + set/clear condition bd:=w12 and w14,h w ,crtn ; ; clear interrupt and return. nop nop nop nop .p!0016 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; ldr. load register. format a. ldr1: zdw:=w4,,cjp cupdat ; nop nop nop nop ;; arithmetic and logical instructions. ;; ldr. load register. format b&c. ldr23: zdw:=w4,,cjp not i10 cupdat; w4:=zdx+w10,, ; zdx:=w4,,cjp cupdat ; nop nop nop nop .p!0017 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; ldc. load complement. format a. ;; w:= -operand (w4); carry:= alu carry. ldc1: zdw:=-w4,s, ; c:-w4,,cjp nupdat ; nop nop nop ;; arithmetic and logical instructions. ;; ldc. load complement. format b&c. ldc23: zdw:=-w4,s, ; c:-w4,,cjp not i10 nupdat ; w4:=zdx+w10,, ; zdx:=w4,,cjp nupdat ; nop ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; ldi. load indirect. ldi1: bd:=w14:=w4,h r ,cjs ywread; zdw:=w4:=w15,,cjp nupdat ; w0,,cjp fetch ; nop ;; arithmetic and logical instructions. ;; ldi. load indirect. format b&c. ldi23: bd:=w14:=w4,h r ,cjs ywread; zdw:=w15,,cjp not i10 nupdat; w4:=zdx+w10,, ; zdx:=w4,,cjp nupdat ; nop nop .p!0018 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; str.store register. format a. ;; st(ea):= w. str1: w14:=w3,, ; w15:=zdw,,cjs wwrite ; w0:=rd,,cjp qupdat ; nop nop ;; arithmetic and logical instructions. ;; str. store register. format b&c. ;; if i=0 then st(ea):= w; ;; if i=1 and x<>0 then x:=w; ;; if i=1 and x=0 then st(ea):=w; ;; if n=1 then x:=x+2; stri0: w14:=w3,, ; w15:=zdw,,cjs wwrite ; w4:=zdx+w10,,cjp not i10 nupdat; zdx:=w4,,cjp nupdat ; strix: w4:=zdw,, ; zdx:=w4,,cjp not i10 nupdat; zdx:=w10+w4,,cjp nupdat ; nop nop ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; store indirect. format a. ;; st(operand):= w; sti1: w14:=w4,, ; w15:=zdw,,cjs wwrite ; w0:=rd,,cjp qupdat ; nop nop ;; arithmetic and logical instructions. ;; store indirect. format b&c. sti23: w14:=w4,, ; w15:=zdw,,cjs wwrite ; w4:=zdx+w10,,cjp not i10 nupdat; zdx:=w4,,cjp nupdat ; nop nop .p!0019 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; xsr. exchange register and store. format a. ;; i=1(x=0); st(ea):=w; w:=ea; ;; i=0(x<>0); a:=st(ea);st(ea):=w;w:=a; xsrai: w14:=w3,, ; w15:=zdw,,cjs wwrite ; zdw:=w4,,cjp nupdat ; nop nop ;; arithmetic and logical instructions. ;; xsr.exchange register and store. format b&c. ;; if i=0 then a:=st(ea);st(ea):=w;w:=a; ;; if i=1 and x=0 then st(ea):=w;w:=ea. ;; if i=1 and x<>0 then a:=x;x:=w;w:=a; xsrb0: w14:=w3,, ; w15:=zdw,,cjs wwrite ; zdw:=w4,,cjp not i10 nupdat; w4:=zdx+w10,, ; zdx:=w4,,cjp nupdat ; xsrbx: w3:=zdw,, ; zdw:=w4,, ; zdx:=w3,,cjp not i10 nupdat; zdx:=w10+w3,,cjp nupdat ; nop nop .p!0020 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;;ldb. load byte. format a. lba: 1 and w3,s, ; w4,,cjp zro ldbal ; w4:=0ff and w4,, ; zdw:=w4,,cjp nupdat ; ldbal: w4:=swp,, ; w4:=0ff and w4,, ; zdw:=w4,,cjp nupdat ; nop nop ;; ldb. load byte. format b&c. ldbb: 1 and w3,s, ; w4,,cjp zro ldbbl ; ldbl: w4:=0ff and w4,, ; zdw:=w4,,cjp not i10 nupdat; w4:=zdx++,, ; zdx:=w4,,cjp nupdat ; ldbbl: w4:=swp,,cjp ldbl ; nop nop .p!0021 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instruction. ;; stb. store byte. format a. stba: w14:=w3,, ; w15:=zdw,,cjs bwrite ; w0:=rd,,cjp qupdat ; nop nop ;; stb. store byte. format b&c. ;; if n=1 then x:=x+1 stbb: w14:=w3,, ; w15:=zdw,,cjs bwrite ; w4:=zdx++,,cjp not i10 nupdat; zdx:=w4,,cjp nupdat ; nop nop ;; rc3503 microprogram. ;; arithmetic and logical instruction. ;; add. add integer word. format a. ;; w:= w+operand. adda: w4:=c:zdw+w4,, ; zdw:=w4,,cjp nupdat ; nop nop ;; add. add integer word. format b&c. ;; w:= w+operand; ;; if n=1 then x:=x+2; addb: w4:=c:zdw+w4,, ; logll: zdw:=w4,,cjp not i10 nupdat; w4:=zdx+w10,, ; zdx:=w4,,cjp nupdat ; nop nop .p!0022 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instruction. ;; sub. subtract integer word. format a. ;; w:=w-operand; carry:=alu carry. suba: w4:=c:zdw-w4,, ; zdw:=w4,,cjp nupdat ; nop nop ;; sub.subtract integer word. format b&c. ;; w:=w-operand; ;; if n=1 then x:=x+2; subb: w4:=c:zdw-w4,,cjp logll ; nop nop .p!0023 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instruction. ;; and. logic and. format a. ;; w:=w and operand. anda: w4:=zdw and w4,, ; zdw:=w4,,cjp cupdat ; nop nop ;; logic and . format b&c. andb: w4:=zdw and w4,,cjp cogll ; nop nop ;; lor. logic or. format a. ;; w:= w or operand. lora: w4:=zdw ior w4,, ; zdw:=w4,,cjp cupdat ; nop nop ;; lor. logic or . format b&c. lorb: w4:=zdw ior w4,,cjp cogll ; nop nop ;; xor. logical exclusive or. format a. xora: w4:=w4 xor zdw,, ; zdw:=w4,,cjp cupdat ; nop nop ;; xor. logical exclusive or. format b&c. xorb: w4:=w4 xor zdw,,cjp cogll ; nop nop .p!0024 m3503 ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; lce. load clear enable. format a. lce1: zdw:=w4,, ; lcec: bf:=w1+w8,, ; bd:=w12 and w1,h w ,cjp eupdat; nop nop nop nop nop ;; lce. load clear enable. format b&c. lce23: zdw:=w4,,cjp not i10 lcec ; w4:=zdx+w10,, ; zdx:=w4,,cjp lcec ; nop nop ;; rc3503 microprogram. ;; arithmetic and logical instructions. ;; rsw. read switches. format a. rsw1: ra:=0d4,w0,, ; rd,w0,, ; w5:=swp,, ; ra:=0dc,w0,, ; w5:=rd+w5,, ; ra:=w13,, ; zdw:=w5,,cjp nupdat ; nop nop ;; rsw. read switches. format b&c. rsw23: w4:=zdx+w10,,cjp not i10 rsw1; zdx:=w4,,cjp rsw1 ; nop nop .p!0025 m3503 ;; rc3503 microprogram. ;; branch and continue instructions. ;; bgw. branch if greater. format b&c. ;; w0:= if w>operand then b else w0+2; bgwb: w7:=w4 xor zdw,s, ; w7,s, ; zdw+w4,s,cjp not b0 blp10 ; zdw--w4,s,cjp not b0 carg1 ; w0,,cjp blp01 ; blp03: w10+w0,,cjp acy carg1 ; blp01: w14:=w0,,cjp not i10 vupdat; w15,,cjs xwread ; rm:=w0:=w15,,cjp nupdat ; carg1: w14:=w0,,cjp i10 vupdat ; w15,,cjs xwread ; rm:=w0:=w15,,cjp nupdat ; blp10: zdw--w4,s,cjp blp03 ; nop ;; bgw. branch if greater. format a. bgwa: w7:=w4 xor zdw,, ; w7,s, ; zdw,w4,s,cjp not b0 blp11 ; zdw--w4,s,cjp not b0 blp15 ; w0,,cjp vupdat ; blp02: w10+w0,,cjp not acy vupdat ; blp15: w14:=w0,,cjs xwread ; rm:=w0:=w15,,cjp nupdat ; blp11: zdw--w4,s,cjp blp02 ; nop .p!0026 m3503 ;; rc3503 microprogram. ;; branch and continue instruction. ;; bew. branch if equal. format a. ;; w0:= if w=operand then b else w0+2 bewa: zdw-w4,s, ; blp04: w10+w0,,cjp not zro vupdat ; bd:=w14:=w0,h r ,cjs ywread; rm:=w0:=w15,,cjp nupdat ; nop nop ;; bew. branch if equal. format b&c. bewb: zdw-w4,s, ; blp05: w10+w0,,cjp zro carg1 ; w14:=w0,,cjp not i10 vupdat; bd:=w14,h r ,cjs ywread ; rm:=w0:=w15,,cjp nupdat ; nop nop .p!0027 m3503 ;; rc3503 microprogram. ;; branch and continue instructions. ;; branch if less. blw. format a. ;; w0:= if w<operand then b else w0+2. blwa: w7:=w4 xor zdw,, ; w7,s, ; zdw,w4,s,cjp not b0 blp13 ; w4--zdw,s,cjp b0 blp15 ; w0,,cjp vupdat ; w4,,cjp blp02 ; blp13: w4--zdw,s,cjp blp02 ; nop ;; blw. branch if less. format b&c. blwb: w7:=w4 xor zdw,, ; w7,s, ; zdw,w4,s,cjp not b0 blp12 ; w4--zdw,s,cjp b0 carg1 ; w4,,cjp blp01 ; blp12: w4--zdw,s,cjp blp03 ; nop nop ;; bgb. branch if greater than byte. format a. ;; a(0:7):=0; ;; a(8:15):= if ea(15)=0 then operand(0:7) else operand(8:15); bgba: w0,,cjs boper ; zdw-w4,s,cjp bgwa ; nop nop ;; bgb. branch if greater than byte. format b&c. bgbb: w0,,cjs boper ; zdw-w4,s,cjp bgwb ; nop nop ;; subroutine to get the byte operand. ;; call: w4=operand. ;; rtn: w4(8:15):= if ea(15)=0 then w4(0:7) else w4(8:15); ;; w4(0:7):= 0; boper: 1 and w3,s, ; w4,,cjp not zro bopbl ; bopal: w4:=swp,, ; bopbl: w4:=0ff and w4,,crtn ; nop nop .p!0028 m3503 ;; rc3503 microprogram. ;; branch and continue instruction. ;; branch if equal to byte. beb. format a. ;; a(0:7):=0; ;; a(8:15):= if ea(15)=0 then operand(0:7) else operand(8:15); ;; w0:= if w=a then b else w0+2. beba: w0,,cjs boper ; zdw-w4,s,cjp blp04 ; nop nop ;; beb. branch if equal to byte. format b&c. bebb: w0,,cjs boper ; zdw-w4,s,cjp blp05 ; nop nop ;; blb. branch if less than byte. format a. ;; a(0:7):=0; ;; a(8:15):= if ea(15)=0 then operand(0:7) else operand(8:15); ;; w0:= if w<a then belse w0+2; blba: w0,,cjs boper ; w4-zdw,s,cjp blwa ; nop nop ;; blb. branch if less than byte. format b&c. blbb: w0,,cjs boper ; zdw-w4,s,cjp blwb ; nop nop .p!0029 m3503 ;; rc3503 microprogram. ;; branch and continue instructions. ;; bsz. branch if all selected bits are zero. format a. ;; a:=w and operand; ;; w0:= if a=0 then b else w0+2; bsza: zdw and w4,s,cjp blp04 ; ; bsz. branch if all selected bits are zero. format b&c. nop nop bszb: zdw and w4,s,cjp blp05 ; nop nop ;; bop. branch if odd parity. format a. ;; a:= w and operand; ;; w0:= if odd a then b else w0+2; bopa: w4:=zdw and w4,, ; w4,s, ; w10+w0,,cjv 3 xpeven ; xbopa: bd:=w14:=w0,h r ,cjs ywread; rm:=w0:=w15,,cjp nupdat ; nop nop ;; bop. branch if odd parity. format b&c bopb: w4:=zdw and w4,, ; w4,s, ; w10+w0,,cjv 3 peven ; bopc: w14:=w0,,cjp not i10 vupdat; bd:=w14,h r ,cjs ywread ; rm:=w0:=w15,,cjp nupdat ; nop nop .p!0030 m3503 ;; routine to write into memory (word). ;; w14=address. w15=data. (w14-17 bitslice registers). wwrite: bf:=0c0,w0+q,, ; ; 8.306 --> modul select register. bd:=w14,h , ; ; load address(w14) out on the back plane bus. bfm:=0c1,w0+q,h , ; ; set modul select to data mode. bd:=w15,h w ,crtn ; ; return from subroutine. ;; routine to write into memory (byte). bwrite: bf:=0c0,w0+q,, ; ; load 8.306 into modul select register. bd:=w14,h , ; ; load address(w14) out onto the back plane bus. bf:=0c1,w0+q,h b , ; ; set modul select to data mode. bd:=w15,h w b ,crtn ; nop nop nop nop ;; return from subroutine. .p!0031 m3503 ;; rc3503 microprogram. ;; write control/word. x=0. wxcx0: w5:=1f and q,s, ; ; test if ir(11:15)=0. w3:=w12,,cjp not zro wxcx1 ; w5:=w1,, ; wxcx1: bf:=w5,w3:=w5 and w3,,cjp not i10 wwc; w0,,cjp wcc0 ; nop nop ;; write control/word. x<>0. wxcxn: w5:=1f and q,s, ; w3:=w12,,cjp not zro wxcx2 ; w5:=w1,, ; wxcx2: bf:=w5,w3:=w5 and w3,,cjp not i10 wwc; w0,,cjp wccx ; nop nop ;; rc3503 microprogram. ;; write block of bytes/words. wbxx: w5:=1f and q,s, ; ; test if ir(11:15)=0. w3:=w12,,cjp not zro wbx1 ; w5:=w1,, ; wbx1: w3:=w5 and w3,,cjp not i10 wbb; w0,,cjp wbww ; nop nop ;; read status/word. rxc: w5:=1f and q,s, ; w3:=w12,,cjp not zro rxc1 ; w5:=w1,, ; rxc1: bf:=w5,w3:=w5 and w3,,cjp not i10 rwc; w0,,cjp rsc ; nop nop .p!0032 m3503 ;; rc3503 microprogram. ;; read block of bytes/word. rbx: w5:=1f and q,s, ; ; test if ir(11:15)=0. w3:=w12,,cjp not zro rbx1 ; w5:=w1,, ; rbx1: bf:=w5,w3:=w5 and w3,,cjp not i10 rbb; w0,,cjp rbw ; nop nop nop nop ;; rc3503 microprogram. ;; routine to set devno/head bits(w3+devno) and ;; transmit the contents of w4 to the device. ;; call: w3= 0 read data. ;; 100 write data. ;; 200 read status. ;; 300 write control. ;; w4= transmit data. ;; w5= device number. xhead: bf:=w9+w5,,cjp not st2 xhead; ; set modul selext:= 400+device number. bd:=w3,h w , ; xwait: bf:=w5,, ; bd:=w4,h w ,crtn ; ;; rc3503 microprogram. ;; routine to set timer and wait upon ;; timeout or data in ready. ;; if eoi or timeout then zero flag=0 w0,i ,push timer ; w0,i ,twb st5 timot ; wdal: ,i s,crtn st3 ; timot: 0++,i s,crtn ; .p!0033 m3503 ;; read word and compare. ;; w7:=x; ;; w1:= data in; ;; if w<>a and eoi=0 then begin ir(current level):=0; w0:=w0-2 end; ;; enable:=1; rwc: w3:=0+w3,, ; w4:=zd1,,1 ; w7:=zdx,,cjs xhead ; ,s,cjs wdair ; zdw-w7,s,cjp not zro eupdat; w0,,cjp rbbl ; nop nop nop ;; read block of bytes. ;; if x(15)=0 then st(x)(0:7):=data in(8:15); ;; else st(x):=data in(8:15); ;; x:=x+1; ;; if w<>x and eoi=0 then begin ir(current level):=0; w0:=w0-2 end; ;; enable:=1; rbb: w3:=0+w3,, ; ; "read data" frame to reg 3 w4:=zd1,,1 ; ; read w1 to reg 4 w7:=zdx,,cjs xhead ; ; read x-reg to reg 7, jump xhead w14:=w7,,cjs wdain ; ; wait data in ready, jump wdain bf:=w8+w1,, ; bd:=w12 and w1,h w , ; w15:=bd,h w ,cjs bwrite ; ; write byte into mem, incr x-reg zdx:=w7:=++w7,,cjp xrbb ; ; jump if eoi to eupdat rbbl: bf:=w8+w1,,cjp zro eupdat ; ; prepare iors signals for clear itr bd:=w12 and w1,h w ,cjp bupdat; ; clear itr-f/f, jump bupdat .p!0034 m3503 ;; rc3503 microprogram. ;; read block of words. ;; st(x):=data in; ;; x:=x+2; ;; if w<>x and eoi=0 then begin ir(current level):=0; w0:=w0-2 end; ;; enable:=1; rbw: w3:=0+w3,, ; w4:=zd1,,1 ; w7:=zdx,,cjs xhead ; w14:=w7,,cjs wdain ; bf:=w8+w1,, ; bd:=w12 and w1,h w , ; w15:=bd,w ,cjs wwrite ; zdx:=w7:=w10+w7,,cjp xrbb ; ;; write word and compare. ;; data out:= w1; ;; w<>x then begin ir(current level):=0; w0:=w0-2 end; ;; enable:=1; wwc: w3:=40+w3,, ; w4:=zd1,,1 ; w7:=zdx,,cjs xhead ; wwcl: w7-zdw,s,cjp rbbl ; ; compare x and w reg .p!0035 m3503 ;; rc3503 microprogram. ;; write block of bytes. ;; data out(8:15):= if x(15)=0 then st(x)(0:7) else st(x)(8:15); ;; x:=x+1; ;; if w<>x then begin ir(current level):=0; w0:=w0-2 end; ;; enable:= 1; wbb: w3:=40+w3,, ; ; "write data" frame to reg 3 w14:=zdx,,cjs xbread ; ; read byte from mem w4:=w15,,cjs xhead ; ; move byte to reg 17, jump xhead zdx:=w7:=++w14,,cjp wwcl ; ; incr. x reg, jump to wwcl ;; write block of words. ;; data out:= st(x); ;; x:=x+2; ;; if w<>x then begin ir(current level):=0; w0:=w0-2 end; ;; enable:=1. wbww: w3:=40+w3,, ; w14:=zdx,,cjs xwread ; w4:=w15,,cjs xhead ; zdx:=w14:=w10+w14,, ; w14-zdw,s,cjp rbbl ; .p!0036 m3503 ;; rc3503 microprogram. ;; write control. x<>0. ;; control:= w1; ;; enable:=1; wccx: w3:=0c0+w3,, ; w4:=zd1,,1 ; w0,,cjs xhead ; wccl: led:=4,w6:=4,, ; ir:=w0,,cjp fetch ; ;; write control. x=0. ;; control:=w1; ;; enable:=1; ir(current level):=0; wcc0: w3:=0c0+w3,, ; w4:=zd1,,1 ; w0,,cjs lhead ; bf:=w8+w1,, ; bd:=w12 and w1,h w ,cjp wccl; ;; rc3503 microprogram. ;; read status and compare. ;; w6:=x ;; w1:=status. ;; if w<>w6 and eoi=0 then begin ir(current):=0;w0:=w0-2 end; ;; enable:=1; rsc: w3:=80+w3,, ; w4:=zd1,,1 ; w7:=zdx,,cjs xhead ; ,s,cjs wdair ; rscl: ,,cjp not zro eupdat ; w7-zdw,s, ; bf:=w8+w1,,cjp zro eupdat ; bd:=w12 and w1,h w ,cjp bupdat; nop .p!0037 m3503 ;; rc3503 microprogram. ;; update w0 routine. ;; sync interrupt. update: ir:=w10+w0,,cjp fetch ; fetch,w0,,cjp ; nupdat: w0:=zd0,, ; qupdat: ir:=zm0:=w0,,cjp fetch ; fetch,w0,,cjp ; ;; bupdat. w0:=w0-2; enable; bupdat: led:=4,w6:=4,, ; ; set enable in reg 6, enable, sync-itr ir:=rm:=w0:=w0-w10,,cjp fetch; ; decr w0 (-2), jump fetch eupdat: led:=4,w6:=4,, ; ir:=w0,,cjp fetch ; ;; subroutine to update w13 with highest priority level number. ginta: ra:=w1,, ; gint1: w13:=rd,, ; ra:=w13,,crtn ; cupdat: ir:=w0,,cjp fetch ; w0,,cjp fetch ; cogll: zdw:=w4,,cjp not i10 cupdat; w4:=zdx+w10,, ; zdx:=w4,,cjp cupdat ; wdain: w15:=waits,, ; rc:=w15,,ldct ; wdasp: w0,,rpct wdasp ; w0,i ,push timer ; w0,i ,twb st5 timot ; w0,i ,cjp wdal ; vupdat: ir:=zm0:=w0:=w10+w0,,cjp fetch; w0,,cjp fetch ; .p!0038 m3503 ;; rc3503 microprogram. ;; interlevel store (ist). format c. istc: w7:=zdw,, ; w14:=w0,, ; w14:=w14-w10,,cjs wread ; ra:=w3:=w15,,cjp istx ; ;; interlevel load (ild). format c. ildc: w14:=w0,, ; w14:=w14-w10,,cjs wread ; ra:=w3:=w15,,cjp ildx ; ;; instruction to set the module select. mseta: w4,,cjp msetc ; msetb: w4,,cjp msetc ; .p!0039 m3503 ;; routine to read from memory(word). ;; w14=address.w15:=data. wread: bf:=0c0,w14,, ; ; load 8.300 into modul select. xwread: bd:=w14,h r , ; ; load address register. ywread: w15:=bd,h w s, ; ; read answer,v-jump on lpe/rpe status w15,h ,crtn not pty ; w15:=bd,h w , ; w2:=,,cjv 3 sparw ; ;; routine to read from memory (byte). bread: bf:=0c0,w0+q,, ; ; load 8.300 into modul select register. xbread: bd:=w14,h r , ; ; load address register. bf:=0c1,w15+q,h b , ; ; select data mode. w15:=bd,h w b s, ; ; read answer, v-jump on lpe/rpe status w2:=,,cjv 3 bypar ; wdair: w15:=waits,, ; rc:=w15,,ldct ; wdai1: w0,,rpct wdai1 ; w0,i ,push timer ; w0,i ,twb st5 timxx ; w15:=bd,h i ,1 ; zd1:=w15,i ,crtn st3 1 ; zz1:=,i ,1 ; timxx: 0++,i s,crtn ; ;; write control timer loop. lhead: w15:=wctim,, ; w0,,cjs xhead ; rc:=w15,,ldct ; wdao1: w0,,rpct wdao1 ; w0,,crtn ; .p!0040 m3503 ;; routine to write into the w-register. ;; w14=address.w15=data. wwreg: ra:=w14,, ; ; load working register address register. rd:=w15,h , ; ; write into working register. ra:=w13,,crtn ; ; restore current level and return. ;; routine to read from the w-register. ;; w14=address. w15:=data. rwreg: ra:=w14,, ; ; load working register address. w15:=rd,h , ; ; read from working register. ra:=w13,,crtn ; ; restore current level and return. ;; routine to read from memory module. the module number is send ;; from the debug'er. ;; call: w14=offset address,w07=module number. ;; ret : w15=data. dbread: ba:=w7,, ; bfm:=0c0,w14,, ; bd:=w14,h r , ; bwrd: ,h ,cjp not st2 bwrd ; w15:=bd,h w s, ; ; read answer, v-jump on lpe/rpe status ba:=w2:=,,cjv 3 sparw ; ;; routine to write into memory module. ;; call: w14=offset addr.,w07=module no,w15=data. dbwrit: ba:=w7,, ; bfm:=0c0,w14,, ; bd:=w14,h , ; bfm:=0c1,w14,h , ; bd:=w15,h w , ; ba:=,,crtn ; .p!0041 m3503 ;; rc3503 microprogram. ;; procedure to receive one byte from the debug microprocessor. ;; w3(8:15):= cdi; ;; w3(0:7) := 0; ;; w4(0:7):= cdi; ;; w4(8:15):= 0; gbyte: w3:=,, ; glp1: w3,,cjp cr glp1 ; w3:=cd,, ; w3:=0ff and w3,, ; w3,, ; w4:=swp,, ; w0,,crtn ; ;; routine to send w3(8:15) to the debug microprocessor(m). prbyt: w14:=fi5,, ; w15:=w3,,cjp wwreg ; ;; rtn cs00,ar00,br00,nonf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 ;; routine to send w3(0:7) to the debug microprocessor. plbyt: w14:=fi4,, ; w3,, ; w15:=swp,,cjp wwreg ; ;; rtn cs00,ar00,br00,nonf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 ;; routine to get word from fifo. ;; call: w14= fix. ;; return: w14(0:7)=fix-1 and w14(8:15)=fix. gword: w14,,cjs rwreg ; w3:=0ff and w15,, ; w14:=w14--,,cjs rwreg ; w15:=0ff and w15,, ; w15,, ; w14:=swp+w3,,crtn ; .p!0042 m3503 ;; rc3503 microprogram. ;; debug routine. get mem. ;; transfer a word from l-mem to m. getm: w14:=fi3,, ; w14,,cjs gword ; ; fetch module no from fi3-fi2 w7:=w14,, ; ; save module no in reg 7 w14:=fi1,, ; w14,,cjs gword ; ; fetch offset addr from fi1-fi0 w0,,cjs dbread ; ; read word from mem w3:=w15,,cjs prbyt ; ; put right byte into fifo fi5 w0,,cjp plbyt ; ; put left byte into fifo fi4 ;; rtn cs00,ar00,br00,nonf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 ; return ;; debug routine. put mem. ;; transfer a word from m to l-mem. putm: w14:=fi5,, ; w14,,cjs gword ; ; fetch module no from fifo fi5-fi4 w7:=w14,, ; ; module to reg 7 w14:=fi3,, ; w14,,cjs gword ; ; fetch offset addr from fifo fi3-fi2 w4:=w14,, ; ; save addr in reg 4 w14:=fi1,, ; w14,,cjs gword ; ; fetch data from fifo fi1-fi0 w15:=w14,, ; ; move data to reg 17 w14:=w4,,cjp dbwrit ; ; move addr to reg 16 ;; rtn cs00,ar00,br00,nonf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 ; return .p!0043 m3503 ;; rc3503 microprogram. ;; debug routine. get reg. ;; transfer a word from l-reg to m. getr: w14:=fi1,, ; w14,,cjs gword ; ; fetch w-reg addr from fifo fi1-fi0 w4+w14,,cjs rwreg ; ; read w-reg w3:=w15,,cjs prbyt ; ; put right byte into fifo fi5 w0,,cjp plbyt ; ; put left byte into fifo fi4 ;; rtn cs00,ar00,br00,nonf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 ; return ;; debug routine. put reg. ;; transfer a word from m to l-reg. putr: w14:=fi3,, ; w14,,cjs gword ; ; fetch w-reg addr from fifo fi3-fi2 w4:=w14,, ; ; save w-reg addr in reg 4 w14:=fi1,, ; w14,,cjs gword ; ; fetch write data from fifo fi1-fi0 w15:=w14,, ; ; move write data to reg 17 w14:=w4,,cjp wwreg ; ; w-reg addr to reg 16, write into w-reg ;; rtn cs00,ar00,br00,nonf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 ; return rdat: w0,,cjs fifos ; ; circulate fifo ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun .p!0044 m3503 ;; rc3503 microprogram. ;; debug routine. read data. ;; w((w2)+copy):= w3; received byte. ;; copy means start of the image of the microprocessor ram ;; in the w-register array. rdadr: w14:=fi1,, ; w14,,cjs rwreg ; ; fetch lsb addr from fifo w2:=<w15,, ; ; shift addr one step left w2:=<w2+w2,, ; ; one step more w14:=w14--,,cjs rwreg ; ; fetch data from fifo w3:=0ff and w15,, ; ; mask and save in reg 3 w14:=1f8 and w2,, ; ; mask for max cells 3f w14:=84+w14,, ; ; add base+offset w15:=w3,,cjp wwreg ; ; reg 3 to reg 17, write data into image ;; rtn cs00,ar00,br00,ldbf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 .p!0045 m3503 ;; rc3503 microprogram ;; debug routine. get level. ;; transfer current level to m. getl: cd:=w3:=w1,, ; ; current level to cdo-reg w0,,crtn ; ; return ;; test the state of run/stop. tsrun: w0,,cjp not c7 dupdat ; w0,,cjp fetch ; ;; routine to ;; input level number and ;; output register offset. gloff: w0,,cjs gbyte ; ; read wanted level from cdo-reg w14:=w3,,cjs rwreg ; ; fetch offset from table w3:=w15,,cjs prbyt ; ; put right byte into fifo fi5 w0,,cjs plbyt ; ; put left byte into fifo fi4 ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun .p!0046 m3503 ;; rc3503 microprogram. ;; debug fifo administration. ;; fi5 (top of fifo) - fi4 - fi3 - fi2 - fi1 - fi0 (input to fifo) ;; when called: ;; cdi->fi0->fi1->fi2->fi3->fi4->fi5->cdo fifos: w14:=fi5,, ; ; fi5 addr to reg 16 w14,,cjs rwreg ; ; "read fifo" result in reg 17 cd:=w15,, ; ; reg 17 to cdo-reg w14:=fi4,, ; ; fi4 addr to reg 16 w14,,cjs rwreg ; ; "read fifo" (fi4) w14:=++w14,,cjs wwreg ; ; "write fifo" in fi5 w14:=w14-w10,,cjs rwreg ; ; "read fifo" (fi3) w14:=++w14,,cjs wwreg ; ; "write fifo" in fi4 w14:=w14-w10,,cjs rwreg ; ; "read fifo" (fi2) w14:=++w14,,cjs wwreg ; ; "write fifo" in fi3 w14:=w14-w10,,cjs rwreg ; ; "read fifo" (fi1) w14:=++w14,,cjs wwreg ; ; "write fifo" in fi2 w14:=w14-w10,,cjs rwreg ; ; "read fifo" (fi0) w14:=++w14,,cjs wwreg ; ; "write fifo" in fi1 w14:=fi0,, ; ; fi0 addr to reg 16 w15:=cd,,cjp wwreg ; ; "write fifo" cdi to fi0 ;; rtn cs00,ar00,br00,nonf,addz,rsoa,cb,waw,bs5,bd0,doxx,0 ; return .p!0047 m3503 ;; rc3503 microprogram. ;; debug routine. set timer level. ;; itr(w(copy)):=1; sett: w14:=84,, ; ; addr to rtc level (image) setl: w0,,cjs rwreg ; ; read from image w14:=7f and w15,, ; ; mask for max 127 levels w14,,cjs sitrn ; ; set level (reg 16) ccr,w4,,cjp tsrun ; ; clear cr f/f , jump tsrun seto: w14:=8c,, ; ; addr to tto level (image) w0,,cjp setl ; ; jump setl seti: w14:=94,, ; ; addr to tti level (image) w0,,cjp setl ; ; jump setl ;; set version number and cpu no. setver: w14:=fi5,, ; ; fi5 addr to reg 16 w15:=cpuve,, ; ; cpu-type and m-prog. ver to reg 17 w0,,cjs wwreg ; ; write number to fi5 w0,,cjp lclear ; ; jump lclear .p!0048 m3503 ;; rc3503 microprogram. ;; routine to move autoload from prom mem to ram ;; starting from h.fe00. ;; w5=prom addr.; w7=ram addr. auctl: w5:=4,, ; ; 4 to reg 5 (rom start addr) w7:=aucon,, ; ; 8.777 to reg 7 w7:=--w7,, ; ; 8.177000 to reg 7 aurep: ba:=10,w14:=w5,, ; ; reg 5 to reg 16, sel prom w14,,cjs wread ; ; read word (byte) from prom ba:=0,w14:=w7,, ; ; reg 7 to reg 16, sel ram w14,,cjs bwrite ; ; write byte into ram w5:=w10+w5,, ; ; incr. prom addr +2 - to reg 5 w7:=++w7,s, ; ; incr. ram addr +1 - to reg 7 w0,,cjp not zro aurep ; ; jump to aurep if not finish with move ir:=w0,,cjp pfetch ; ; jump to fetch lclear: w14:=80,, ; ; 1f (level 31) to reg 16 ; set interrupt level 31 lcrep: w14:=w14--,s, ; ; decr. level (reg 16) w14,,cjp zro set32 ; ; jump to set31 if level decremented to zero w14,,cjs citrn ; ; clear level (level no in reg 16) int,w0,,cjp lcrep ; ; jump lcrep set32: w14:=fie,, ; w15:=,,cjs wwreg ; w14:=1f,, ; ,,cjs sitrn ; .p!0049 m3503 ;; rc3503 micro program ;; prepare level 1f to start in autoload code ;; placed in area fe00 to ffff. set31: w15:=aucon,, ; ; 8.777 to reg 17 w15:=--w15,, ; ; 8.177000 to reg 17 w14:=17a,, ; ; 8.572 to reg 16 w0,,cjs wwreg ; ; write hex fe00 into w2 level 1f w15:=33,, ; ; 8.63 to reg 17 w15:=--w15,, ; ; 8.177714 to reg 17 w14:=178,, ; ; 8.570 to reg 16 w0,,cjs wwreg ; ; write hex ffcc into w0 on level 1f w15:=,, ; ; zero to reg 17 w14:=17b,, ; ; 8.573 to reg 16 w0,,cjs wwreg ; ; write zero into w3 on level 1f w0,,cjp auctl ; ; jump to auctl .p!0050 m3503 ;; rc3503 microprogram ;; generation of w-reg offset table uptab: w4:=0,, ; ; zero to reg 4 w7:=80,, ; ; hex 80 to reg 7 (last addr) w5:=0,, ; ; zero to reg 5 up20: w14:=w4,, ; ; reg 4 to reg 16 (addr) w15:=w7,,cjs wwreg ; ; reg 7 to reg 17 (data) , write offset w4:=++w4,, ; ; incr reg 4 w5:=++w5,, ; ; incr reg 5 w7:=8+w7,, ; ; incr. reg 7 with 8 (to next level) w5-80,s, ; ; is it last level ? w0,,cjp not zro up20 ; ; no jump to up20 w0,,cjp setver ; ; jump to setver .p!0051 m3503 ;; rc3503 microprogram. ;; decoder for test command. ;; =01 xmt 7.5 intr to 8085. ;; =02 working register address test. ;; =03 working register data test. ;; =04 memory address test. ;; =05 memory data test. tscom: w14:=fi0,, ; ; addr fi0 to reg 16 w0,,cjs rwreg ; ; read fi0 result in reg 17 w15:=7 and w15,, ; ; and read value (test number) with 7 w15 xor 1,s, ; ; exor with 1 - is it test 1 ? w0,,cjp zro tes01 ; ; yes - jump to tes01 w15 xor 2,s, ; ; exor with 2 - is it test 2 ? w0,,cjp zro tes02 ; ; yes - jump to tes02 w15 xor 3,s, ; ; exor with 3 - is it test 3 ? w0,,cjp zro tes03 ; ; yes - jump to tes03 w15 xor 4,s, ; ; exor with 4 - is it test 4 ? w0,,cjp zro tes04 ; ; yes - jump to test 4 w15 xor 5,s, ; ; exor with 5 - is it test 5 ? w0,,cjp zro tes05 ; ; yes - jump to tes05 w0,,cjp dupdat ; ; not used test number - jump to dupdat .p!0052 m3503 ;; rc3503 microprogram. ;; tes01.xmit 7.5 intr to 8085. tes01: led:=6,w0,, ; ; send itr to 8085 (rst 7.5) ccr,w0,,cjp tsrun ; ; clear cr f/f, jump to tsrun ;; working address register test. ;; (addr):=addr. ;; if test=ok then (fi5)=0 else (fi5)<>0 and (fi3,fi4)=addr a tes02: w14:=fi5,, ; ; fi5 addr to reg 16 ts020: w15:=w14,,cjs wwreg ; ; write addr on addr w14:=w14--,s, ; ; decr. addr w14,,cjp not zro ts020 ; ; jump if addr<>0 to ts020 w15:=w14,,cjs wwreg ; ; write in addr 0 ts021: w14,,cjs rwreg ; ; start check-read from addr 0 w14-w15,s, ; ; sub addr- read w14,,cjp not zro te02 ; ; jump if result <>0 to te02 w14:=++w14,, ; ; incr addr fi5-w14,s, ; ; is it last addr ? w14,,cjp not zro ts021 ; ; jump if it isen't to ts021 w14:=fi5,, ; ; fi5 addr to reg 16 w15:=,,cjs wwreg ; ; zero to fi5 ccr,w0,,cjp tsrun ; ; clear cr f/f, jump to tsrun .p!0053 m3503 ;; rc3503 microprogram. ;; working address register test. (cont.) ;; (addr):=addr. ;; if test=ok then (fi5)=0 else (fi5)<>0 and (fi3,fi4)=addr a te02: w3:=w14,, ; ; save addr in reg 3 w4:=w15,, ; ; save read data in reg 4 w14:=fi5,, ; ; fi5 addr to reg 16 w15:=w14,,cjs wwreg ; ; write "addr" into fi5 a value <>0 w14:=w14--,, ; ; fi4 addr to reg 16 w15:=w3,,cjs wwreg ; ; write addr 8:15 into fi4 w14:=w14--,, ; ; fi3 addr to reg 16 w3,, ; ; load swap reg w15:=swp,,cjs wwreg ; ; write addr 0:7 into fi3 w14:=w14--,, ; ; fi2 addr to reg 16 w15:=w4,,cjs wwreg ; ; write read 8:15 into fi2 w14:=w14--,, ; ; fi1 addr to reg 16 w4,, ; ; load swap w15:=swp,,cjs wwreg ; ; write read 0:7 into fi1 ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun .p!0054 m3503 ;; rc3503 microprogram. ;; working register data test. ;; when called: (fi1,fi2)= data constant. ;; return: ;; if test=ok then (fi5)=0 else (fi5)<>0 ;; and (fi3,fi4)=addr. and (fi1,fi2)=wanted data. tes03: w14:=fi2,, ; ; fi2 addr to reg 16 w14,,cjs gword ; ; read fi1 and fi2, result in reg 16 (testpat) w7:=w14,, ; ; save pattern in reg 7 w14:=,, ; ; zero to reg 16 (addr) w15:=w7,, ; ; pattern to reg 17 ts031: w14,,cjs wwreg ; ; write pattern w15:=--w15,, ; ; complement test pattern w14:=++w14,, ; ; incr. addr bf:=fi5,fi5-w14,s, ; ; compare with max addr w14,,cjp not zro ts031 ; ; jump if not max to ts031 w14:=,, ; ; zero to reg 16 .p!0055 m3503 ;; rc3503 microprogram. ;; working register data test. (cont.) ;; when called: (fi1,fi2)= data constant. ;; return: ;; if test=ok then (fi5)=0 else (fi5)<>0 ;; and (fi3,fi4)=addr. and (fi1,fi2)=wanted data. ts032: w14,,cjs rwreg ; ; read value w7-w15,s, ; ; is read = wanted ? w15:=w7,,cjp not zro te02 ; ; jump if it isen't to te02 w7:=--w7,, ; ; complement wanted value w14:=++w14,, ; ; incr. addr bf:=fi5,fi5-w14,s, ; ; compare with max addr w14,,cjp not zro ts032 ; ; jump if not max to ts032 w14:=fi5,, ; ; fi5 addr to reg 16 w15:=,,cjs wwreg ; ; zero to fi5 (test ok) ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun .p!0056 m3503 ;; rc3503 microprogram. ;; memory address register test. ;; call: (fi1,fi2)= modul no. ;; if test=ok then (fi5)=0 else (fi5)<>0 ;; and (fi3,fi4)=addr and (fi1,fi2)=wanted data. tes04: w14:=fi2,, ; ; fi2 addr to reg 16 w14,,cjs gword ; ; read fi1 and fi2, result in reg17 (modul number) w7:=w14,, ; ; save modul number in reg 7 w14:=,, ; ; zero to reg 16 (addr) ts041: w15:=w14,,cjs dbwrit ; ; write addr on addr w14:=w10+w14,, ; ; incr. addr w14,s, ; ; is offset = 0 (finish with module) w0,,cjp not zro ts041 ; ; if not jump to ts041 ts042: w14,,cjs dbread ; ; read from mem. starting in cell 0 w14-w15,s, ; ; is read = wanted ? w14,,cjp not zro te02 ; ; if not jump to te02 (error) w14:=w10+w14,s, ; ; incr. addr w14,,cjp not zro ts042 ; ; is offset = 0 (finish with module) if not jump to ts042 w14:=fi5,, ; ; fi5 addr to reg 16 w15:=,,cjs wwreg ; ; write zero into fi5 (test ok) ccr,w14,,cjp tsrun ; ; clear cr f/f, jump to tsrun .p!0057 m3503 ;; rc3503 microprogram. ;; memory data test. ;; call: (fi1,fi2)=modul no. and (fi3,fi4)=data constant. ;; if test=ok then (fi5)=0 else (fi5)<>0 ;; and (fi3,fi4)=addr and (fi1,fi2)=wanted data. tes05: w14:=fi2,, ; ; fi2 addr to reg 16 w14,,cjs gword ; ; read fi1 and fi2, result in reg 16,(modul no.) w7:=w14,, ; ; save modul number in reg 7 w14:=fi4,, ; ; fi4 addr to reg 16 w14,,cjs gword ; ; read fi3 and fi4, result in reg 16, (testpattern) w13:=w14,, ; ; save test pattern in reg 15 w14:=,, ; ; zero to reg 16 (addr) w15:=w13,, ; ; test pattern to reg 17 ts051: w14,,cjs dbwrit ; ; write pattern. (starting in cell 0) w14:=w10+w14,s, ; ; incr. addr w15:=--w15,, ; ; complement test pattern w14,,cjp not zro ts051 ; ; is offset =0, if not jump to ts051 w14:=,, ; ; zero to reg 16 (addr) .p!0058 m3503 ;; rc3503 microprogram. ;; memory data test. (cont.) ;; call: (fi1,fi2)=modul no. and (fi3,fi4)=data constant. ;; if test=ok then (fi5)=0 else (fi5)<>0 ;; and (fi3,fi4)=addr and (fi1,fi2)=wanted data. ts052: w14,,cjs dbread ; ; read mem w15-w13,s, ; ; is read = wanted ? w15:=w13,,cjp not zro te02 ; ; if not move wanted to reg 17 and jump to te02 w13:=--w13,, ; ; complement test pattern w14:=w10+w14,s, ; ; is offset = 0? w14,,cjp not zro ts052 ; ; if not jump ts052 w14:=fi5,, ; ; fi5 addr to reg 16 w15:=,,cjs wwreg ; ; zero to fi5 (test ok) ccr,w14,,cjp tsrun ; ; clear cr f/f, jump tsrun .p!0059 m3503 ;; rc3503 microprogram. ;; routine to test that the level in cdi exist. ;; if level(cdi) exist then cdo<>0 else cdo=0 tslev: w14:=cd,, ; ; level under test to reg 16 w14:=7f and w14,, ; ; mask for max 127 levels w3:=w14,,cjs sitrn ; ; set level, save level no in reg 3 tsl03: ir:=w0,, ; ; send sync-itr puls int,w0,, ; ; dummy (delay) w14:=int,, ; ; read inta answer to reg 16 w4:= equ w14,, ; ; >:reg16 to reg4 w14-w3,s, ; ; exist level ? (reg 16 = reg 3) w0,,cjp not zro tsl02 ; ; if not jump to tsl02 cd:=0ff,w0,, ; ; load cdo reg with *ff (level exist) ccr,w0,,cjp tsrun ; ;clear cr f/f, jump to tsrun tsl02: w4+w3,s, ; ;is it a higher level ? w0,,cjp not acy tsl01 ; ;if yes jump to tsl01 cd:=0,w0,, ; ; load cdo-reg with zero (level exist not) ccr,w0,,cjp tsrun ; ; clear cr f/f, jump to tsrun tsl01: w14,,cjs citrn ; ; clear the higher level w14,,cjp tsl03 ; ; jump tsl03 .p!0060 m3503 ;; rc3503 microprogram. ;; parity error routine. ;; (fi4,5)= module no. ;; (fi2,3)=address. pxer1: w4:=w14,,crtn not pty ; w14:=fif,, ; w14,,cjs wwreg ; w14:=fie,, ; w14,,cjs rwreg ; w15 and w15,s, ; w0,,cjp not zro pxer2 ; w14:=fib,, ; ; addr fi5 to reg 16 w15:=,,cjs wwreg ; ; zero to reg 17, write zero into fi5 w14:=fia,, ; ; addr fi4 to reg 16 w15:=,,cjs wwreg ; ; zero to reg 17, write zero into fi4 w14:=fid,, ; ; addr fi3 to reg 16 w15:=w4,,cjs wwreg ; ; mem addr 8:15 to reg 17, write it into fi3 w14:=fic,, ; ; addr fi2 to reg 16 w15:=w4,, ; ; mem addr 0:7 to reg 17 w15:=swp,,cjs wwreg ; ; swap reg 17, mem addr 0:7 into fi2 w14:=fie,, ; w15:=w2,,cjs wwreg ; led:=6,w0,, ; ; send itr to 8085 pxer2: w14:=fif,, ; w14,,cjs rwreg ; w14:=w4,,crtn ; .p!0061 m3503 ;; rc3503 microprogram. ;; parity error routine. ;; (fi4,5)= module no. ;; (fi2,3)= address. wrreq: w14:=fia,, ; w14,,cjs rwreg ; w14:=fi4,, ; w14,,cjs wwreg ; w14:=fib,, ; w14,,cjs rwreg ; w14:=fi5,, ; w14,,cjs wwreg ; w14:=fic,, ; w14,,cjs rwreg ; w14:=fi2,, ; w14,,cjs wwreg ; w14:=fid,, ; w14,,cjs rwreg ; w14:=fi3,, ; w14,,cjs wwreg ; w14:=fie,, ; w14,,cjs rwreg ; w2:=w15,, ; w15:=,,cjs wwreg ; w2:=<w2,, ; ; shift reg 2 < 1 parity error info w2:=6 and w2,, ; ; mask with 6 w2:=perro+w2,, ; ; add parity base command cd:=w2,, ; ; load cdo reg with parity information ccr,w0,, ; ; clear cr f/f w0,,cjp dupdat ; ; jump dupdat .p!0062 m3503 xrbb: ++w7,,cjp not zro pupdat ; w7-zdw,s, ; w0,,cjp not zro bupdat ; pupdat: w14:=w1,,cjs sitrn ; w0,,cjp eupdat ; pxerf: w0,,cjs pxer1 ; w0,,cjp fetrd ; ;; instruction to transfer a word ;; from memory with module select m(s) to memory module select m(d) ;; before execution of this instruction the following working ;; registers had to be set. ;; w1(0:7) source module select;w1(8:15) destinatin module select. ;; w2 source address. ;; w3 destination address. msetc: w7:=zd1,,1 ; w7:=swp,, ; w14:=zd2,,2 ; w14,,cjs dbread ; w7:=zd1,,1 ; w14:=zd3,,3 ; w14,,cjs dbwrit ; w0,,cjp nupdat ; .p!0063 m3503 ;; rc3503 microprogram. ;; fetch routine . pfetch: ra:=178,w13:=178,, ; w1:=1f,, ; led:=4,w6:=4,, ; ir:=w0,,cjp fetch ; .p!0064 m3503 ;; rc3503 micro program ;; condition vector map. .k=380 vec30: w0,w0:=++w0,,cjp nupdat ; led:=cd,w0+q,, ; vec31: led:=4,w6:=4,, ; w0:=rd,,cjp qupdat ; vec32: led:=5,w6:=5,, ; w0:=rd,,cjp qupdat ; vec33: w14:=w3,,cjs sitrn ; w0:=rd,,cjp qupdat ; vec40: w7:=>c>w7,,rpct vec40 ; zdw:=w4:=w7,,cjp nupdat ; rr01: w7:=>c>w7,,rpct rr01 ; zdw:=w4:=w7,,cjp nupdat ; rr02: w7:=>w7,,rpct rr02 ; zdw:=w4:=w7,,cjp nupdat ; rr03: w7:=>c>w7,,rpct rr03 ; zdw:=w4:=w7,,cjp nupdat ; .p!0065 m3503 ;; rc3503 microprogram ;; this routine controls the enable/disable interrupt ;; flag in accordance to the value of ir(9:10). ;; ir(9:10)= 00 do nothing ;; ir(9:10)= 01 enable interrupt system ;; ir(9:10)= 10 disable interrupt system ;; ir(9:10)= 11 set level specified by q(11:15). upitr: w0:=rd,,cjp qupdat ; ; jump vec30 w0,,cjp vec31 ; ; jump vec31 w0,,cjp vec32 ; ; jump vec32 w0,,cjp vec33 ; ; jump vec 33 ;; routine to shift right b01 the number of times ;; specified in the n-counter (am2910). ;; the specified operation is controlled by ir(9:10) ;; ir(9:10)= 00 rotate right ;; ir(9:10)= 01 logical shift right ;; ir(9:10)= 10 no carry shift right ;; ir(9:10)= 11 arithmetic shift right rright: w0,,cjp vec40 ; ; jump vec 40 w0,,cjp rr01 ; ; jump rr01 w0,,cjp rr02 ; ; jump rr02 w0,,cjp rr03 ; ; jump rr03 .p!0066 m3503 ;; rc3503 microprogram ;; routine to shift left b01 the number of times ;; specified in the n-counter. ;; called by jump vector "rleft". ;; the specified operation is controlled by ir(9:10). ;; ir(9:10)= 00 rotate left. ;; ir(9:10)= 01 logical shift left. ;; ir(9:10)= 10 no carry shift left. ;; ir(9:10)= 11 dummy. vec21: w7:=<c<w7,,rpct vec21 ; ; ir(9:10)=00. b07:=b07 shift left n-times. zdw:=w4:=w7,,cjp nupdat ; ; b07---> w(current level). rl01: w7:=<c<w7,,rpct rl01 ; ; ir(9:10)=01. b07:=b07 shift left n-times. zdw:=w4:=w7,,cjp nupdat ; ; b07---> w(current level). rl02: w7:=<w7,,rpct rl02 ; ; ir(9:10)=10. b07:=b07 shift left n-times. zdw:=w4:=w7,,cjp nupdat ; ; b07---> w(current level). updw0: w0,,cjp vupdat ; ; ir(9:10)=11. b0---> w0(current level). nop rleft: w0,,cjp vec21 ; ; jump vec21 w0,,cjp rl01 ; ; jump rl01 w0,,cjp rl02 ; ; jump rl02 w0,,cjp updw0 ; ; jump updw0 .p!0067 m3503 ;; rc3503 microprogram. ;; debug routine. ;; condition vector map,depending upon cs(0:1). ;; cs(0:1)= 11 goto grup3 ;; cs(0:1)= 10 goto grup2 ;; cs(0:1)= 01 goto grup1 ;; cs(0:1)= 00 goto grup0. dmap: w0,,cjv 5 grup0 ; ; jump grup0 w0,,cjv 5 grup1 ; ; jump grup1 w0,,cjv 5 grup2 ; ; jump grup2 w0,,cjv 5 grup3 ; ; jump grup3 .p!0068 m3503 ;; rc3503 microprogram. vec13: ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun nop vec14: w0,,cjs getm ; ; load fifo with wanted word ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun vec15: w0,,cjs getl ; ; load current level into cdo reg ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun vec16: w0,,cjs getr ; ; load fifo with wanted w-reg contents ccr,w0,,cjp tsrun ; ; clear cr f/f, jump tsrun vec17: ccr,w0,,cjs rdadr ; w0,,cjp tsrun ; vec18: w0,,cjs putm ; ; write into mem cell in question ccr,w0,,cjp dupdat ; ; clear cr f/f, jump dupdat vec19: ccr,w0,,cjp ; ; clear cr f/f, jump init nop vec20: w0,,cjs putr ; ; write into w-reg in question ccr,w0,,cjp dupdat ; ; clear cr f/f, jump dupdat .p!0069 m3503 ;; rc3503 microprogram ;; grup3 vector jump (test af cs(2:3)) ;; cs(2:3)= 00 ;; cs(2:3)= 01 get memory (getm). ;; cs(2:3)= 10 get level (getl). ;; cs(2:3)= 11 get register (getr). grup3: w0,,cjp wrreq ; ; jump vec13 w0,,cjp vec14 ; ; jump vec14 w0,,cjp vec15 ; ; jump vec15 w0,,cjp vec16 ; ; jump vec16 ;; grup2 vector jump (test af cs(2:3)). ;; cs(2:3)= 00 read address (rdadr). ;; cs(2:3)= 01 put memory (putm). ;; cs(2:3)= 10 autoload (init). ;; cs(2:3)= 11 put register (putr). grup2: w0,,cjp vec17 ; ; jump vec17 w0,,cjp vec18 ; ; jump vec18 w0,,cjp vec19 ; ; jump vec19 w0,,cjp vec20 ; ; jump vec20 .p!0070 m3503 ;; rc3503 microprogram. vec05: w0,,cjp rdat ; ; jump rdat nop vec06: ccr,w0,,cjp fetcd ; ; clear cr f/f, jump fetcd nop vec07: w0,,cjp gloff ; ; jump gloff nop vec08: ccr,w0,,cjp dupdat ; ; clear cr f/f, jump dupdat nop ;; grup0. vector jump (test af cs(2:3)). ;; cs(2:3)= 00 read data (rdat). ;; cs(2:3)= 01 exec next instruction (fetcd). ;; cs(2:3)= 10 dummy ;; cs(2:3)= 11 dummy grup0: w0,,cjp vec05 ; ; jump vec05 w0,,cjp vec06 ; ; jump vec06 w0,,cjp vec07 ; ; jump vec07 w0,,cjp vec08 ; ; jump vec08 .p!0071 m3503 ;; rc3503 microprogram ;; map45. jump vector cs(4:5). ;; cs(4:5)= 00 set timer and console level (settc). ;; cs(4:5)= 01 set timer level (sett). ;; cs(4:5)= 10 set console level (setc). ;; cs(4:5)= 11 jump vector dmap. map45: w0,,cjp seti ; ; jump seti w0,,cjp sett ; ; jump sett w0,,cjp seto ; ; jump seto w0,,cjv 4 dmap ; ; jump dmap (debug map) ;; parity error test for read byte. ;; left parity is don't care ;; 00 parity ok ;; 01 error ;; 10 parity ok ;; 11 error bypar: w0,,crtn ; ; return no error w0,,cjp pxer1 ; ; jump to error routine w0,,crtn ; ; return no error w0,,cjp pxer1 ; ; jump to error routine .p!0072 m3503 ;; rc3503 microprogram. ;; vector table to test parity for bop format a. ;; 00 odd+odd continue ;; 01 even+odd branch ;; 10 odd+even branch ;; 11 even+even continue xpeven: ir:=zm0:=w0:=w10+w0,,cjp fetch; w0,,cjp xbopa ; w0,,cjp xbopa ; ir:=zm0:=w0:=w10+w0,,cjp fetch; ;; rc3503 microprogram. ;; vector table to test parity. ;; 00 odd+odd --> even; continue. ;; 01 even+odd --> odd ; branch. ;; 10 odd+even --> odd ; branch. ;; 11 even+even--> even; continue. peven: w0,,cjp bopc ; ; jump bopc w0,,cjp carg1 ; ; jump carg1 w0,,cjp carg1 ; ; jump carg1 w0,,cjp bopc ; ; jump bopc ;; vector table to test cs(0:1). ;; 00 jump gloff ;; 01 jump tsrun ;; 10 jump init ;; 11 jump tsrun xgl00: w0,,cjp gloff ; ; jump gloff w0,,cjp tsrun ; ; jump tsrun w0,,cjp ; ; jump init w0,,cjp tsrun ; ; jump tsrun .p!0073 m3503 ;; rc3503 microprogram ;; vector table grup1. test of cs(2:3). ;; cs(2:3)= 00 dummy (return to test run f/f) ;; 01 dummy (return to test run f/f) ;; 10 level exist test ;; 11 tscom grup1: ccr,w0,,cjp tsrun ; ; clear cr f/f , jump tsrun ccr,w0,,cjp tsrun ; ; clear cr f/f , jump tsrun w0,,cjp tslev ; ; jump tslev w0,,cjp tscom ; ; jump tscom ;; vector table to test parity. ;; 00 w2=w2 no parity error ;; 01 w2=1 right parity error ;; 10 w2=2 left parity error ;; 11 w2=0 left/right parity error sparf: rm:=w0:=w10+w0,,jmap 0 ; ; return no parity error w2:=++w2,,cjp pxerf ; ; 1 to reg 2 w2:=w10,,cjp pxerf ; ; 2 to reg 2 w2:=w10++w2,,cjp pxerf ; ; 3 to reg 2 sparw: w2,,crtn ; w2:=++w2,,cjp pxer1 ; w2:=w10,,cjp pxer1 ; w2:=w10++w2,,cjp pxer1 ; .p!0074 m3503 ;; rc3503 microprogram. fetch: int,w6 and w11,s,cjp not cr debug; fetca: int-w1,s,cjp not zro disab ; int,w0,,cjp zro disab ; ra:=int,w1:=int,, ; w13:=rd,, ; ra:=w13,, ; disab: c:=rd,w0:=rd,, ; bf:=0c0,w0,h , ; bd:=w14:=w0,h r , ; ir:=bd,q:=bd,h w s, ; led:=w6,w2:=,,cjv 3 sparf ; .p!0075 m3503 .mapk 200 ;; table pro layout. ;; ic23,25. ;; address calculation jump table.escape=0. .addr fax0,18 .addr rxc ; read status/word. .addr wxcx0 ; write control/word. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shiti ; shift/rotate,x=0. .addr update ; dummy. .addr bx001 ; format b,x=0,i=0. .addr cx001 ; format c,x=0,i=0. .addr fax0,18 ; format a,x=0. .addr rbx ; read block of bytes/word. .addr wbxx ; write block of bytes/word. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shiti ; shift/rotate,x=0. .addr update ; dummy. .addr bx0i1 ; format b,x=0,i=1. .addr cx0i1 ; format c,x=0,i=1. .addr faxn,18 ; format a,x<>0. .addr rxc ; read status/word. .addr wxcxn ; write control/word,x<>0. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shitx ; shift/rotate,x<>0. .addr update ; dummy. .addr bxn01 ; format b,x<>0,i=0. .addr cxn01 ; format c,x<>0,i=0. .addr faxn,18 ; format a,x<>0. .addr rbx ; read block of bytes/word. .addr wbxx ; write block of bytes/word. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shitx ; shift/rotate,x<>0. .addr update ; dummy. .addr bxni1 ; format b,x<>0,i=1. .addr cxni1 ; format c,x<>0,i=1. .p!0076 m3503 ;; address calculation map cont'd. .addr faxn,18 ; format a,x<>0. .addr rxc ; read status/word. .addr wxcxn ; write control/word,x<>0. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shitx ; shift/rotate,x<>0. .addr update ; dummy. .addr bxn01 ; format b,x<>0,i=0. .addr cxn01 ; format c,x<>0,i=0. .addr faxn,18 ; format a,x<>0. .addr rbx ; read block of bytes/word. .addr wbxx ; write block of bytes/word. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shitx ; shift/rotate,x<>0. .addr update ; dummy. .addr bxni1 ; format b,x<>0,i=1. .addr cxni1 ; format c,x<>0,i=1. .addr faxn,18 ; format a,x<>0. .addr rxc ; read status/word. .addr wxcxn ; write control/word,x<>0. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shitx ; shift/rotate,x<>0. .addr update ; dummy. .addr bxn01 ; format b,x<>0,i=0. .addr cxn01 ; format c,x<>0,i=0. .addr faxn,18 ; format a,x<>0. .addr rbx ; read block of bytes/word. .addr wbxx ; write block of bytes/word. .addr ild ; interlevel load. .addr ist ; interlevel store. .addr shitx ; shift/rotate,x<>0. .addr update ; dummy. .addr bxni1 ; format b,x<>0,i=1. .addr cxni1 ; format c,x<>0,i=1. .p!0077 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0078 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0079 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0080 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0081 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0082 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0083 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0084 m3503 ;; format a instruction jump map. escape=1. ;; ic 23,25. .addr ldr1 ; ldr. load register. .addr ldc1 ; ldc. load complement. .addr ldi1 ; ldi. load indirect. .addr str1 ; str. store register. .addr sti1 ; sti. store indirect. .addr xsrai ; xsr. exchange store and register. .addr lba ; ldb. load byte. .addr stba ; stb. store byte. .addr adda ; add. add integer word. .addr suba ; sub. subtract. .addr anda ; and. logical and. .addr lora ; logical or. .addr xora ; xor. exlusive or. .addr lce1 ; lce. load clear enable. .addr mseta ; dummy. .addr rsw1 ; rsw. read switches. .addr bgwa ; bgw. branch if greater. .addr bewa ; bew. branch if equal. .addr blwa ; blw. branch if less. .addr bgba ; bgb. branch if greater byte. .addr beba ; beb. branch if equal byte. .addr blba ; blb. branch if less byte. .addr bsza ; bsz. branch if selected bits are zero. .addr bopa ; bop. branch if selected bits has odd parity. .addr update,8 .p!0085 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0086 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0087 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0088 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0089 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0090 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0091 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0092 m3503 ;; format b instruction jump map. escape=0. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr strix ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrbx ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0093 m3503 ;; format b instruction jump map. escape=1. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0094 m3503 ;; format b instruction jump map. escape=1. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0095 m3503 ;; format b instruction jump map. escape=1. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0096 m3503 ;; format b instruction jump map. escape=1. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0097 m3503 ;; format b instruction jump map. escape=1. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0098 m3503 ;; format b instruction jump map. escape=1. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0099 m3503 ;; format b instruction jump map. escape=1. ;; ic 22,18 .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 .p!0100 m3503 ;; format b instruction jump map. escape=1. ;; ic 23,25. .addr ldr23 ; ldr. load register. .addr ldc23 ; ldc. load complement. .addr ldi23 ; ldi. load indirect. .addr stri0 ; str. store register. .addr sti23 ; sti. store indirect. .addr xsrb0 ; xsr. exchange store and register. .addr ldbb ; ldb. load byte. .addr stbb ; stb. store byte. .addr addb ; add. add integer word. .addr subb ; sub. subtract. .addr andb ; and. logical and. .addr lorb ; logical or. .addr xorb ; xor. exlusive or. .addr lce23 ; lce. load clear enable. .addr msetb ; dummy. .addr rsw23 ; rsw. read switches. .addr bgwb ; bgw. branch if greater. .addr bewb ; bew. branch if equal. .addr blwb ; blw. branch if less. .addr bgbb ; bgb. branch if greater byte. .addr bebb ; beb. branch if equal byte. .addr blbb ; blb. branch if less byte. .addr bszb ; bsz. branch if selected bits are zero. .addr bopb ; bop. branch if selected bits has odd parity. .addr update .addr update .addr ildc .addr istc .addr update,4 !\f !rc35mass 81 06 09 15 49 13 page 1 ! ! 76 blocksread «eof»