├── foonly ├── f2-f3 │ └── ff.1 ├── f2 │ ├── DSK:CFB125.SLO;1 │ ├── DSK:CFBARE.SLO;1 │ ├── DSK:CFDEF.SLO;3 │ ├── DSK:CFKNYD.SLO;12 │ ├── DSK:CFKNYP.SLO;1 │ ├── DSK:CFMAIN.SLO;10 │ ├── DSK:CFNEW.SLO;73 │ ├── DSK:CFTLX.SLO;1 │ ├── DSK:DIAG4.LST;2 │ ├── DSK:DIAG4.SLO;1 │ ├── DSK:DIAINS.SLO;1 │ ├── DSK:DLS.SLO;5 │ ├── DSK:DLSDEB.SLO;1 │ ├── DSK:DR11.SLO;33 │ ├── DSK:F2N.SLO;4 │ ├── DSK:F2SYM.LST;22 │ ├── DSK:F2SYM.SLO;3 │ ├── DSK:F2T.LST;5 │ ├── DSK:F2T.SLO;2 │ ├── DSK:F2X.LST;26 │ ├── DSK:F2X.SLO;12 │ ├── DSK:F2X75.SLO;1 │ ├── DSK:F2XA.LST;2 │ ├── DSK:F2XB.LST;2 │ ├── DSK:F2XT.SLO;6 │ ├── DSK:F2Y.SLO;1 │ ├── DSK:F2Z.SLO;1 │ ├── DSK:F3.SLO;6 │ ├── DSK:F31.SLO;3 │ ├── DSK:F33.SLO;1 │ ├── DSK:F3N.SLO;1 │ ├── DSK:IMP.SLO;3 │ ├── DSK:IMP1.SLO;1 │ ├── DSK:IMPTNX.MAC;1 │ ├── DSK:LPTX.SLO;2 │ ├── DSK:MEMT1.LST;10 │ ├── DSK:MEMT1.SLO;6 │ ├── DSK:MEMTST.SLO;13 │ ├── DSK:MTMT1.LST;1 │ ├── DSK:ODLS.SLO;3 │ ├── DSK:ODLSDE.SLO;1 │ ├── DSK:PAN.SLO;1 │ ├── DSK:SCI.LST;1 │ ├── DSK:SCI.SLO;12 │ ├── DSK:SWINIT.SLO;7 │ ├── DSK:TAPE.SLO;29 │ ├── DSK:TEST.MAC;1 │ ├── DSK:TMPGRN.SLO;1 │ ├── DSK:TYMNET.SLO;2 │ ├── DSK:VC.SLO;3 │ ├── DSK:VID.LST;2 │ └── DSK:VID.SLO;86 ├── sloe.trp └── superfoonly │ ├── foonly.cm │ └── foonly.ucode ├── kl10 ├── its │ ├── 1proc.plan │ ├── arith.6 │ ├── arith.modelb │ ├── basgls.1 │ ├── basic.22 │ ├── basic.23 │ ├── basic.modelb │ ├── bcirc.3 │ ├── blt.8 │ ├── blt.9 │ ├── blt.modelb │ ├── byte.5 │ ├── byte.7 │ ├── byte.modelb │ ├── crap.(init) │ ├── define.21 │ ├── define.27 │ ├── define.31 │ ├── define.32 │ ├── define.modelb │ ├── diaga.modelb │ ├── diagb.modelb │ ├── diagbk.modelb │ ├── eis.6 │ ├── eis.modelb │ ├── ewe.(init) │ ├── ewe.1 │ ├── ewegls.(init) │ ├── ewej.(init) │ ├── ewej.1 │ ├── fp.5 │ ├── fp.modelb │ ├── io.43 │ ├── io.50 │ ├── io.51 │ ├── io.modelb │ ├── its.5 │ ├── its.7 │ ├── its.9 │ ├── jpc.2 │ ├── jpc.3 │ ├── jpc.4 │ ├── jpcr.3 │ ├── jpctst.2 │ ├── kla.modelb │ ├── klb.modelb │ ├── kll.modelb │ ├── klx.modelb │ ├── lisp.(init) │ ├── lisp.14 │ ├── lisp.18 │ ├── lithp.2 │ ├── macro.42 │ ├── macro.43 │ ├── macro.modelb │ ├── music.(init) │ ├── music.15 │ ├── music.16 │ ├── muzak.2 │ ├── shift.5 │ ├── shift.6 │ ├── shift.modelb │ ├── skpjmp.27 │ ├── skpjmp.31 │ ├── skpjmp.32 │ ├── skpjmp.modelb │ ├── u.modelb │ ├── u126.doc │ ├── u2.(init) │ ├── ub.modelb │ ├── ucode.bugs │ ├── ucode.info │ ├── udoc.modelb │ ├── ulisp.ram │ └── xx.modelb ├── v1(357) │ ├── arith.mic │ ├── basic.mic │ ├── blt.mic │ ├── byte.mic │ ├── convrt.exe │ ├── define.mic │ ├── diagb.ccl │ ├── diagb.mic │ ├── diagbk.mic │ ├── edhis.mic │ ├── eis.mic │ ├── extexp.mic │ ├── fp.mic │ ├── io.mic │ ├── klx.ccl │ ├── klx.mcr │ ├── klx.mic │ ├── klx.ram │ ├── macro.mic │ ├── micro.exe │ ├── rel10-20.ctl │ ├── rel20.ctl │ ├── shift.mic │ └── skpjmp.mic ├── v2(411) │ └── source │ │ ├── arith.mic │ │ ├── basic.mic │ │ ├── blt.mic │ │ ├── byte.mic │ │ ├── bytsub.mic │ │ ├── convrt.exe │ │ ├── define.mic │ │ ├── edhis.mic │ │ ├── eis.mic │ │ ├── extexp.mic │ │ ├── fp.mic │ │ ├── io.mic │ │ ├── klx.ccl │ │ ├── klx.mcb │ │ ├── klx.mcr │ │ ├── klx.mic │ │ ├── klx.ram │ │ ├── macro.mic │ │ ├── micro.exe │ │ ├── rel10.ctl │ │ ├── shift.mic │ │ ├── skpjmp.mic │ │ └── ucode.doc ├── v2.1(442) │ └── source │ │ ├── arith.mic │ │ ├── basic.mic │ │ ├── blt.mic │ │ ├── byte.mic │ │ ├── bytsub.mic │ │ ├── c.unv │ │ ├── convrt.exe │ │ ├── define.mic │ │ ├── edhis.mic │ │ ├── eis.mic │ │ ├── extexp.mic │ │ ├── fp.mic │ │ ├── io.mic │ │ ├── klx.ccl │ │ ├── klx.dir │ │ ├── klx.doc │ │ ├── klx.mcb │ │ ├── klx.mcr │ │ ├── klx.mic │ │ ├── klx.ram │ │ ├── macro.mic │ │ ├── micro.exe │ │ ├── micro.mac │ │ ├── rel10.ctl │ │ ├── rel20.ctl │ │ ├── shift.mic │ │ ├── skpjmp.mic │ │ └── stats.mic ├── v2a(442) │ └── source │ │ ├── arith.mic │ │ ├── basic.mic │ │ ├── blt.mic │ │ ├── byte.mic │ │ ├── bytsub.mic │ │ ├── c.unv │ │ ├── convrt.exe │ │ ├── define.mic │ │ ├── edhis.mic │ │ ├── eis.mic │ │ ├── extexp.mic │ │ ├── fp.mic │ │ ├── io.mic │ │ ├── klu2_442.tap │ │ ├── klx.ccl │ │ ├── klx.dir │ │ ├── klx.doc │ │ ├── klx.mcb │ │ ├── klx.mcr │ │ ├── klx.mic │ │ ├── klx.ram │ │ ├── macro.mic │ │ ├── micro.exe │ │ ├── micro.mac │ │ ├── rel10.ctl │ │ ├── rel20.ctl │ │ ├── shift.mic │ │ ├── skpjmp.mic │ │ └── stats.mic ├── v326 │ └── docs │ │ ├── kl-ucode-instal-guide.man │ │ ├── kl-ucode-release.doc │ │ └── kl-ucode.bwr ├── v336 │ └── source │ │ ├── arith.mic │ │ ├── basic.mic │ │ ├── blt.mic │ │ ├── byte.mic │ │ ├── convrt.exe │ │ ├── convrt.sav │ │ ├── define.mic │ │ ├── edhis.mic │ │ ├── eis.mic │ │ ├── extexp.mic │ │ ├── fp.mic │ │ ├── io.mic │ │ ├── macro.mic │ │ ├── micro.exe │ │ ├── micro.mac │ │ ├── rel10.ctl │ │ ├── shift.mic │ │ ├── skpjmp.mic │ │ ├── ub.ccl │ │ ├── ub.mcb │ │ ├── ub.mcr │ │ ├── ub.mic │ │ ├── ub.ram │ │ ├── ucode.dir │ │ └── ucode.doc └── v347 │ └── docs │ ├── kl-ucode-instal-guide.man │ ├── kl-ucode-release.doc │ └── kl-ucode.bwr └── ks10 ├── its(262) ├── -read-.-this- ├── 1proc.bugs ├── beware.1 ├── bits.1 ├── dcode.5 ├── duck.1 ├── extend.3 ├── extend.4 ├── files.260 ├── flt.3 ├── flt.5 ├── inout.42 ├── inout.49 ├── inout.50 ├── its.11 ├── its.14 ├── its.15 ├── its.16 ├── its.xfile ├── itspag.88 ├── itspag.97 ├── itspag.98 ├── kns10.4_2 ├── ks10.36 ├── ks10.45 ├── ks10.47 ├── mcr.262 ├── micro.116 ├── micro.52 ├── pagef.10 ├── ram.259 ├── ram.260 ├── ram.261 ├── ram.262 ├── red20.1 ├── ref.1 ├── simple.22 ├── simple.38 ├── simple.42 └── ts.micro └── v2.0(130) ├── blast.exe ├── blast.mac ├── check.exe ├── check.mac ├── extend.mic ├── flt.mic ├── format.exe ├── inout.mic ├── ks10.chk ├── ks10.cmd ├── ks10.ctl ├── ks10.doc ├── ks10.mcr ├── ks10.mic ├── ks10.ram ├── ks10.rnd ├── ks10.uld ├── ks124.txt ├── micro.exe ├── micro.mac ├── pagef.mic ├── simple.mic ├── smfile.cmd ├── smfile.mic ├── t10ki.cmd ├── t10ki.mcr ├── t10ki.mic ├── t10ki.ram ├── t10ki.uld ├── t10kl.cmd ├── t10kl.mcr ├── t10kl.mic ├── t10kl.ram ├── t10kl.uld ├── ucodes.ctl └── ucodes.log /foonly/f2/DSK:DIAINS.SLO;1: -------------------------------------------------------------------------------- 1 | COMMENT  VALID 00002 PAGES 2 | C REC PAGE DESCRIPTION 3 | C00001 00001 4 | C00002 00002 F2 VERSION OF MICROCODE 5 | C00004 ENDMK 6 | C; 7 | ; F2 VERSION OF MICROCODE 8 | 9 | .INSERT SWINIT 10 | 11 | F2SW = 1 12 | 13 | 14 | XLIST 15 | 16 | .INSERT CFDEF 17 | 18 | LIST 19 | 20 | .INSERT CFEXT 21 | 22 | :5122 23 | DIAGI: FIXM1 PUSHJ[DIAGI2] NORM $ 24 | ALU[Q] DEST[MEMSTO] MEMST $ 25 | ; --- 26 | :5126 27 | DIAGO: FIXM1 PUSHJ[DIAGO2] $ 28 | SPEC[MA_PC] DEST[MA] JUMP[MAIN1] NORM $ 29 | ; --- 30 | 31 | :7700 32 | DIAGI2: D[MEM] DEST[AR DEV-ADR] PUSHJ[DIAGSB] NORM $ 33 | ;Set device address and setup for MAPF 34 | D[MA] ALU[D+1] DEST[MA] NORM $ 35 | SPEC[IOB-IN] ALU[Q] SDISP $ 36 | ; --- 37 | 38 | DIAGO2: D[MEM] DEST[AR DEV-ADR] PUSHJ[DIAGSB] NORM $ 39 | D[MA] ALU[D+1] DEST[MA] NORM $ 40 | FIXM1 $ 41 | D[MEM] DEST[IOD] NORM $ 42 | SPEC[IOB-OUT] ALU[Q] SDISP $ 43 | ; --- 44 | 45 | 46 | MAPFTB: 47 | MAPFNO = 0 48 | .REPEAT 20 [ 49 | MAPF[MAPFNO] D[IOD] DEST[Q] POPJ $ 50 | MAPFNO = MAPFNO + 1 51 | ] 52 | 53 | DIAGSB: 54 | D[AR] ROT[36. - 6] MASK[4] DEST[Q] $ 55 | ;Extract subselect 56 | D[CONST (MAPFTB / 100)] ROT[6] ALU[D+Q] DEST[Q] NORM $ 57 | ;Construct pointer into MAPF table 58 | D[CONST (MAPFTB \ 100)] ALU[D+Q] DEST[Q] POPJ NORM $ 59 | ;Finished with MAPF pointer. Done 60 | 61 | -------------------------------------------------------------------------------- /foonly/f2/DSK:DLSDEB.SLO;1: -------------------------------------------------------------------------------- 1 | ;DLS DEBUGGING IOTS 2 | 3 | .DEFINE SETLIN [ ] [D[MASK[8.]] DEST[Q] PUSHJ[DLS.SETLIN] NORM] 4 | 5 | .DEFINE MJUMP[X] [D[AR] ALU[DORQ] DEST[Q] JUMP[X] NORM] 6 | 7 | ;;;;; DWP 1/27/80:7600 8 | DLS.DEB: 9 | :DLSDISP2 + 20 ;IOT DISPATCH FOR DEVICE 374 10 | 11 | SETLIN $ ;BLKI 374 = READ CR1 12 | JUMP[DLS.RCR1] NORM $ 13 | 14 | SETLIN $ ;DATAI 374 = READ CR2 15 | JUMP[DLS.RCR2] NORM $ 16 | 17 | SETLIN $ ;BLKO 374 = READ STAT 18 | JUMP[DLS.RSTAT] NORM $ 19 | 20 | SETLIN $ ;DATAO 374 = READ HOLD 21 | JUMP[DLS.RHOLD] NORM $ 22 | 23 | SETLIN $ ;CONO 374 = WRITE CR1 24 | MJUMP[DLS.WCR1] $ 25 | 26 | SETLIN $ ;CONI 374 = WRITE CR2 27 | MJUMP[DLS.WCR2] $ 28 | 29 | SETLIN $ ;CONSZ 374 = WRITE STAT (SYN,DLE) 30 | MJUMP[DLS.WSTAT] $ 31 | 32 | SETLIN $ ;CONSO 374 = WRITE HOLD 33 | MJUMP[DLS.WHOLD] $ 34 | 35 | :DLS.DEB 36 | 37 | DLS.SETLIN: FIXM1 $ ;SETUP LINE # IN Q 38 | D[MEM] ALU[D&Q] DEST[AR] NORM $ 39 | D[MASK[DLSLNSIZE]] ROT[21.] DEST[Q] NORM $ 40 | D[MEM] ROT[3] ALU[D&Q] DEST[Q] POPJ NORM $ 41 | 42 | DLS.RCR1: DLSREAD[DLSCR1 AR 8.] JUMP[DLS.READ] $ 43 | 44 | DLS.RCR2: DLSREAD[DLSCR2 AR 8.] JUMP[DLS.READ] $ 45 | 46 | DLS.RSTAT: DLSREAD[DLSSTAT AR 8.] JUMP[DLS.READ] $ 47 | 48 | DLS.RHOLD: DLSREAD[DLSHOLD AR 8.] JUMP[DLS.READ] $ 49 | 50 | DLS.READ: D[MASK[8.]] DEST[Q] NORM $ 51 | D[AR] ALU[D&Q] DEST[Q] NORM $ 52 | D[MEM] SPEC[LEFT] ALU[DORQ] DEST[MEMSTO] MEMST $ 53 | 54 | DLS.WCR1: DLSWRITE[DLSCR1] JUMP[MAIN] $ 55 | 56 | DLS.WCR2: DLSWRITE[DLSCR2] JUMP[MAIN] $ 57 | 58 | DLS.WSTAT: DLSWRITE[DLSSTAT] JUMP[MAIN] $ 59 | 60 | DLS.WHOLD: DLSWRITE[DLSHOLD] JUMP[MAIN] $ 61 | 62 | DLS.INT: JUMP[.] $ 63 | JUMP[. + 1] $ 64 | ALU[0] DEST[IOD] SPEC[IOB-OUT] NORM $ 65 | MAPF[DLSCSR] CYLEN[IOB-OUT] $ 66 | DEST[CLR-DEV-FROM-INTR] JUMP[MAIN] $ 67 | 68 | DLS.RINT: 69 | : DLSDISP2 + 0 ;BLKI 370 - GET INTERRUPT STATUS 70 | JUMP[.] $ 71 | JUMP[DLS.RINT] $ 72 | : DLS.RINT 73 | D[CONST 1] ROT[26.] DEST[Q] NORM $ 74 | MAPF[DLSNOSEL] SPEC[IOB-OUT] D[CONST 1] ROT[20.] 75 | ALU[D+Q+1] DEST[IOD] NORM $ 76 | MAPF[DLSNOSEL] CYLEN[IOB-OUT] $ 77 | MAPF[DLSIACK] LONG $ 78 | MAPF[DLSIACK] LONG $ 79 | MAPF[DLSIACK] LONG $ 80 | MAPF[DLSIACK] LONG $ 81 | MAPF[DLSIACK] SPEC[IOB-OUT] ALU[Q] DEST[IOD] LONG $ 82 | MAPF[DLSIACK] SPEC[IOB-IN] LONG $ 83 | MAPF[DLSIACK] CYLEN[IOB-IN] D[IOD] DEST[Q] $ 84 | ALU[Q] DEST[MEMSTO] MEMST $ 85 | 86 | DLS.EINT: 87 | : DLSDISP2 + 4 ;BLKO 370 - ENABLE INTERRUPT 88 | JUMP[.] $ 89 | JUMP[DLS.EINT] $ 90 | :DLS.EINT 91 | D[CONST 1] ROT[27.] DEST[IOD] SPEC[IOB-OUT] NORM $ 92 | MAPF[DLSCSR] CYLEN[IOB-OUT] JUMP[MAIN] $ 93 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2N.SLO;4: -------------------------------------------------------------------------------- 1 | ;F2 with 8K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | ;;XUCODE = 1 ;8K u-mem present 13 | 14 | XLIST 15 | 16 | NEWMAP = 0 17 | 18 | .INSERT CFDEF.SLO 19 | 20 | LIST 21 | 22 | TIMER = 0 23 | 24 | IMP = 0 25 | 26 | DLSDEV = 20 ; udevice code for TTY scanner 27 | 28 | DLS = 1 29 | 30 | DLSDEB = 1 31 | 32 | DLS2 = 0 33 | 34 | NTP = 1 35 | 36 | ;;;VID = 1 37 | 38 | VC = 1 ; Set to 1 for Versatec 39 | VCDEV = 14 ; udevice code for Versatec 40 | 41 | CROCK = 1 ;for now!! 42 | 43 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 44 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 45 | .INSERT CFMAIN 46 | 47 | LIST-LABELS 48 | LIST-CORMAP 49 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2SYM.SLO;3: -------------------------------------------------------------------------------- 1 | ;Symbolics F2 with 8K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | XUCODE = 1 ;8K u-mem present 13 | 14 | NEWMAP = 1 15 | 16 | TIMER = 1 17 | 18 | DR11P = 1 ;DR11 interface with packet-oriented microcode 19 | 20 | ;;;IMP = 1 21 | 22 | DLSDEV = 20 ; udevice code for TTY scanner 23 | 24 | DLS = 1 25 | 26 | DLSDEB = 1 27 | 28 | DLS2 = 1 29 | 30 | NTP = 1 31 | 32 | TAPE = 1 ; New tape code 33 | 75IPS = 1 ;75 IPS TAPE SPEED -- USED FOR READING OLD CCRMA TAPES. 34 | 35 | VID = 0 ; FooVision video turned off 3/31/81 Moon 36 | VIC2 = 0 ; No smart video control (with synthesis) 37 | DPYDEV = 36 38 | DPYDEV2 = 2 39 | 40 | ;;VC = 1 ; Set to 1 for Versatec 41 | VCDEV = 14 ; udevice code for Versatec 42 | 43 | ;----------------------------------------------------------------------- 44 | ;Default DLS configuration. Lines are reset to this on initialization. 45 | ;See DLS definition page for meaning of this bits. 46 | 47 | ;Caution: Only lower 6 bits are permissible here. This means you 48 | ; can't start out with looped, in break mode, or with character 49 | ; length other than 8. You must use macro code to set those. 50 | ; 51 | ;----------------------------------------------------------------------- 52 | ;The following comments are bogus -- Moon 53 | ; 54 | ;Three groups of 55 | ;lines may be initialized, allowing for local terminal, 300 buad modems 56 | ;and split speed modems. 57 | ;Note: Groups can be omitted by setting DLSGRPxN to zero. 58 | ;----------------------------------------------------------------------- 59 | .DEFINE DLSINI [] [ 60 | DLSGRP[0 13 247 34] ;Lines 0-13 9600 baud 61 | DLSGRP[14 DLSNLINES 247 33] ;Lines 14-LAST 1200 62 | ] ;DLSINI 63 | 64 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 65 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 66 | 67 | XLIST 68 | 69 | .INSERT CFDEF.SLO 70 | 71 | LIST 72 | 73 | .INSERT CFNEW 74 | 75 | LIST-LABELS 76 | LIST-CORMAP 77 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2T.SLO;2: -------------------------------------------------------------------------------- 1 | ;F2 with 8K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | ;;;XUCODE = 1 ;8K u-mem present 13 | 14 | NEWMAP = 1 15 | 16 | ;;;TIMER = 1 17 | 18 | ;;;IMP = 1 19 | 20 | DLSDEV = 20 ; udevice code for TTY scanner 21 | 22 | DLS = 1 23 | 24 | DLSDEB = 1 25 | 26 | DLS2 = 1 27 | 28 | NTP = 1 29 | 30 | TAPE = 1 31 | 32 | ;;;VID = 1 33 | 34 | ;;;VC = 1 ; Set to 1 for Versatec 35 | VCDEV = 14 ; udevice code for Versatec 36 | 37 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 38 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 39 | 40 | XLIST 41 | 42 | .INSERT CFDEF.SLO 43 | 44 | LIST 45 | 46 | .INSERT CFNEW 47 | 48 | LIST-LABELS 49 | LIST-CORMAP 50 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2X.SLO;12: -------------------------------------------------------------------------------- 1 | ;F2 with 8K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | XUCODE = 1 ;8K u-mem present 13 | 14 | NEWMAP = 1 15 | 16 | TIMER = 1 17 | 18 | TYMNET = 1 ;For F5 diagnostics 19 | 20 | ;;;IMP = 1 21 | 22 | DLSDEV = 20 ; udevice code for TTY scanner 23 | 24 | DLS = 1 25 | 26 | DLSDEB = 1 27 | 28 | DLS2 = 1 29 | 30 | NTP = 1 31 | 32 | TAPE = 1 ; New tape code 33 | 75IPS = 1 ;75 IPS TAPE SPEED -- USED FOR READING OLD CCRMA TAPES. 34 | 35 | VID = 1 ; FooVision video 36 | VIC2 = 0 ; No smart video control (with synthesis) 37 | DPYDEV = 36 38 | DPYDEV2 = 2 39 | 40 | ;;VC = 1 ; Set to 1 for Versatec 41 | VCDEV = 14 ; udevice code for Versatec 42 | ;----------------------------------------------------------------------- 43 | ;Default DLS configuration. Lines are reset to this on initialization. 44 | ;See DLS definition page for meaning of this bits. 45 | 46 | ;Caution: Only lower 6 bits are permissible here. This means you 47 | ; can't start out with looped, in break mode, or with character 48 | ; length other than 8. You must use macro code to set those. 49 | ; 50 | ;----------------------------------------------------------------------- 51 | ;The following comments are bogus -- Moon 52 | ; 53 | ;Three groups of 54 | ;lines may be initialized, allowing for local terminal, 300 buad modems 55 | ;and split speed modems. 56 | ;Note: Groups can be omitted by setting DLSGRPxN to zero. 57 | ;----------------------------------------------------------------------- 58 | .DEFINE DLSINI [] [ 59 | DLSGRP[0 0 247 32] ;Line 0 300 baud 60 | DLSGRP[1 3 247 23] ;Lines 1-3 150/1200 *** Temp. 61 | DLSGRP[4 DLSNLINES 247 34] ;Lines 4-LAST 9600 62 | ] ;DLSINI 63 | 64 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 65 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 66 | 67 | XLIST 68 | 69 | .INSERT CFDEF.SLO 70 | 71 | LIST 72 | 73 | .INSERT CFNEW 74 | 75 | LIST-LABELS 76 | LIST-CORMAP 77 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2X75.SLO;1: -------------------------------------------------------------------------------- 1 | ;F2 with 8K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | XUCODE = 1 ;8K u-mem present 13 | 14 | NEWMAP = 1 15 | 16 | TIMER = 1 17 | 18 | TYMNET = 1 ;For F5 diagnostics 19 | 20 | ;;;IMP = 1 21 | 22 | DLSDEV = 20 ; udevice code for TTY scanner 23 | 24 | DLS = 1 25 | 26 | DLSDEB = 1 27 | 28 | DLS2 = 1 29 | 30 | NTP = 1 31 | 32 | TAPE = 1 ; New tape code 33 | 34 | 75IPS = 1 35 | 36 | VID = 1 ; FooVision video 37 | VIC2 = 0 ; No smart video control (with synthesis) 38 | 39 | ;;VC = 1 ; Set to 1 for Versatec 40 | VCDEV = 14 ; udevice code for Versatec 41 | 42 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 43 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 44 | 45 | XLIST 46 | 47 | .INSERT CFDEF.SLO 48 | 49 | LIST 50 | 51 | .INSERT CFNEW 52 | 53 | LIST-LABELS 54 | LIST-CORMAP 55 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2XA.LST;2: -------------------------------------------------------------------------------- 1 | 2 | ; F2X.LST;19 Mon 9-Feb-81 4:29PM Page 1 3 | 4 | 5 | 01 0001 ;F2 with 8K micro-memory 6 | 01 0002 7 | 01 0003 ;Initialize switch settings 8 | 01 0004 .INSERT SWINIT.SLO 9 | 10 | ^L 11 | ; F2X.LST;19 Mon 9-Feb-81 4:29PM Page 100 12 | 13 | 14 | SLOE Jan ***, 1859 00:00:03 file DSK:CFNEW.SLO -- of -- F2X 15 | 16 | 29m0141 ;XFIXMA XCTBLT XBLTL XPUSH1 XPDLO2 XPOP1 XPOP2 XPOP3 17 | 29m0141 05770 642140000571000440005715 XFIXMA: COND[MA-AC] JUMP[XCTAC] NORM $; J IF ADDRS IS AC 18 | 29m0141 05771 530300020571020010020000 D[PC] ROT[10] MASK[1] COND[-OBUS=0] POPJ C550 MAPF[2] $; LEAVE IF CALL FM MON 19 | 29m0141 05772 640705614571022170000000 SET-TEMP-USER $ 20 | 29m0141 05773 640320024571000440000000 D[MA] DEST[MA] POPJ NORM $ 21 | 29m0141 22 | 29m0141 ;;;;;.USE[OTHER] DWP 9-19-80 23 | 29m0141 24 | 29m0141 05774 640710025171000442000000 XCTBLT: D[MA] SPEC[PC+1] DEST[O_AC AR] NORM $; END ADR IN AC, AC IN AR 25 | 29m0141 05775 640720000571044220000000 XBLTL: D[AR] ROT[18.] MASK[18.] DEST[MA] SHORT $; GET WORD 26 | 29m0141 05776 530040034571104010005770 D[IR] ROT[42] MASK[1] COND[-OBUS=0] PUSHJ[XFIXMA] C550 $; FIX IF USER ADDRS 27 | 29m0141 05777 640706000550400440070000 ACSEL[MA] ALU[AC] DEST[FIXMAC-MAPF-RD] MAPF[BLT-RDA] CYLEN[FIXM] $ 28 | 29m0141 06000 640700004171000440000000 D[MEM] DEST[Q] SHORT $; GET DATA WORD 29 | 29m0141 06001 640720000571000220000000 D[AR] MASK[18.] DEST[MA] SHORT $; GET DEST ADR 30 | 29m0141 06002 530045634571000010005770 D[IR] MASK[1] DEST[MAP-EXEC-SR] COND[-OBUS=0] PUSHJ[XFIXMA] C550 $;FIX MA ADDRS 31 | 29m0141 06003 640704200555000440000000 ALU[Q] DEST[MEMSTO] SHORT $ 32 | 29m0141 06004 471140000523000220144344 D[AR] MASK[18.] ALU[D-AC] MAPF[BLT-WRTB] COND[-OBUS<0] JUMP[BLTA12] C600 $ 33 | 29m0141 06005 662145614171001000006007 D[CONST 1,,1] DEST[Q MAP-EXEC-SR] COND[-MA-AC] JUMP[. + 2] NORM $ 34 | 29m0141 06006 640700005570400440000000 D[MEM] ACSEL[MA] DEST[AC] SHORT $ 35 | 29m0141 06007 640150000435000440005775 D[AR] ALU[D+Q] DEST[AR] JUMP[XBLTL] NORM $; TEST FOR INTERPT HERE ? ***** 36 | 29m0141 37 | 29m0141 ;Special case for PUSH. Check for AC reference from stack pointer 38 | 29m0141 06010 510140034571000010005702 XPUSH1: D[IR] MASK[1] COND[OBUS=0] JUMP[XCT13] C550 $ 39 | 29m0141 ;If not mapping stack references, it's simple 40 | 29m0141 06011 530040034571104012005770 D[IR] ROT[36. - 2] MASK[1] COND[-OBUS=0] PUSHJ[XFIXMA] SPEC[PC+1] C550$ 41 | 29m0141 ;Make sure we're referring to the right place here. 42 | 29m0141 ;Also, we're now executing the instruction (PC+1) 43 | 29m0141 06012 640706000550400440020000 FIXM1 $ ;Check page faults for effective address part. 44 | 29m0141 06013 640710004571000440000000 D[MEM] DEST[AR] NORM $ 45 | 29m0141 ;Copy away the thing that we want to push 46 | 29m0141 06014 515160015421001000000000 D[CONST 1,,1] ALU[D+AC] DEST[AC MA] COND[CRY0] JUMP[XPDLO2] C550 $ 47 | 29m0141 ;Advance frame pointer and check for overflow 48 | 29m0141 06015 640040000571000440005770 PUSHJ[XFIXMA] NORM $ 49 | 29m0141 ;Decide whether to map destination. 50 | 29m0141 06016 662104200571000440002032 D[AR] DEST[MEMSTO] MEMST OND[-MA-AC] LBJUMP[MSMAIN] NORM ]$ 51 | 29m0141 ;Finish instruction. We're done 52 | 29m0141 06017 640040000571000440005770 XPDLO2: PUSHJ[XFIXMA] NORM $ 53 | 29m0141 ;Fixup AC references 54 | 29m0141 06020 640140000571000440000000 JUMP[PDLO2] NORM $ 55 | 29m0141 ;Done. Take stack overflow trap 56 | 29m0141 57 | 29m0141 ;Special case for POP. Check for AC reference from stack pointer 58 | 29m0141 06021 640700034171022442000000 XPOP1: D[IR] ROT[11] DEST[Q] NORM SPEC[PC+1] $ 59 | 29m0141 ;Save bit meaning 'source from user' in format that can 60 | 29m0141 ;be fed easily to EXEC-SR 61 | 29m0141 ;Now we're executing the PUSH (implied by PC+1) 62 | 29m0141 06022 640700224571000440000000 D[MA] DEST[IR-ADR] NORM $ 63 | 29m0141 ;Restore normal effective address 64 | 29m0141 06023 640720015063001000000000 ACSEL[AC] D[CONST 1,,1] ALU[AC-D] DEST[MA O_AC] NORM $ 65 | 66 | ; F2X.LST;19 Mon 9-Feb-81 4:29PM Page 100:1 67 | 68 | 69 | 29m0141 ;Update AC and MA for stack reference 70 | 29m0141 06024 530040014635022040005770 D[CONST 4] ROT[11] ALU[D&Q] COND[-OBUS=0] PUSHJ[XFIXMA] C550 $ 71 | 29m0141 ;Fixup stack addressing if user AC 72 | 29m0141 06025 640706000550400440160000 ACSEL[MA] ALU[AC] DEST[FIXMAC-MAPF-RD] MAPF[PPOP] CYLEN[FIXM] $ 73 | 29m0141 ;Check for page faults 74 | 29m0141 06026 640710004571000440000000 D[MEM] DEST[AR] NORM $ 75 | 29m0141 ;Find somewhere safer for thing to push 76 | 29m0141 D[CONST 1] ROT[11] ALU[D&Q] DEST[MAP-EXEC-SR] 77 | ^L 78 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2XB.LST;2: -------------------------------------------------------------------------------- 1 | 2 | ; F2X.LST;19 Mon 9-Feb-81 4:29PM Page 100 3 | 4 | 5 | SLOE Jan ***, 1859 00:00:03 file DSK:CFNEW.SLO -- of -- F2X 6 | 7 | 29m0141 ;XFIXMA XCTBLT XBLTL XPUSH1 XPDLO2 XPOP1 XPOP2 XPOP3 8 | 29m0141 05770 642140000571000440005715 XFIXMA: COND[MA-AC] JUMP[XCTAC] NORM $; J IF ADDRS IS AC 9 | 29m0141 05771 530300020571020010020000 D[PC] ROT[10] MASK[1] COND[-OBUS=0] POPJ C550 MAPF[2] $; LEAVE IF CALL FM MON 10 | 29m0141 05772 640705614571022170000000 SET-TEMP-USER $ 11 | 29m0141 05773 640320024571000440000000 D[MA] DEST[MA] POPJ NORM $ 12 | 29m0141 13 | 29m0141 ;;;;;.USE[OTHER] DWP 9-19-80 14 | 29m0141 15 | 29m0141 05774 640710025171000442000000 XCTBLT: D[MA] SPEC[PC+1] DEST[O_AC AR] NORM $; END ADR IN AC, AC IN AR 16 | 29m0141 05775 640720000571044220000000 XBLTL: D[AR] ROT[18.] MASK[18.] DEST[MA] SHORT $; GET WORD 17 | 29m0141 05776 530040034571104010005770 D[IR] ROT[42] MASK[1] COND[-OBUS=0] PUSHJ[XFIXMA] C550 $; FIX IF USER ADDRS 18 | 29m0141 05777 640706000550400440070000 ACSEL[MA] ALU[AC] DEST[FIXMAC-MAPF-RD] MAPF[BLT-RDA] CYLEN[FIXM] $ 19 | 29m0141 06000 640700004171000440000000 D[MEM] DEST[Q] SHORT $; GET DATA WORD 20 | 29m0141 06001 640720000571000220000000 D[AR] MASK[18.] DEST[MA] SHORT $; GET DEST ADR 21 | 29m0141 06002 530045634571000010005770 D[IR] MASK[1] DEST[MAP-EXEC-SR] COND[-OBUS=0] PUSHJ[XFIXMA] C550 $;FIX MA ADDRS 22 | 29m0141 06003 640704200555000440000000 ALU[Q] DEST[MEMSTO] SHORT $ 23 | 29m0141 06004 471140000523000220144344 D[AR] MASK[18.] ALU[D-AC] MAPF[BLT-WRTB] COND[-OBUS<0] JUMP[BLTA12] C600 $ 24 | 29m0141 06005 662145614171001000006007 D[CONST 1,,1] DEST[Q MAP-EXEC-SR] COND[-MA-AC] JUMP[. + 2] NORM $ 25 | 29m0141 06006 640700005570400440000000 D[MEM] ACSEL[MA] DEST[AC] SHORT $ 26 | 29m0141 06007 640150000435000440005775 D[AR] ALU[D+Q] DEST[AR] JUMP[XBLTL] NORM $; TEST FOR INTERPT HERE ? ***** 27 | 29m0141 28 | 29m0141 ;Special case for PUSH. Check for AC reference from stack pointer 29 | 29m0141 06010 510140034571000010005702 XPUSH1: D[IR] MASK[1] COND[OBUS=0] JUMP[XCT13] C550 $ 30 | 29m0141 ;If not mapping stack references, it's simple 31 | 29m0141 06011 530040034571104012005770 D[IR] ROT[36. - 2] MASK[1] COND[-OBUS=0] PUSHJ[XFIXMA] SPEC[PC+1] C550$ 32 | 29m0141 ;Make sure we're referring to the right place here. 33 | 29m0141 ;Also, we're now executing the instruction (PC+1) 34 | 29m0141 06012 640706000550400440020000 FIXM1 $ ;Check page faults for effective address part. 35 | 29m0141 06013 640710004571000440000000 D[MEM] DEST[AR] NORM $ 36 | 29m0141 ;Copy away the thing that we want to push 37 | 29m0141 06014 515160015421001000000000 D[CONST 1,,1] ALU[D+AC] DEST[AC MA] COND[CRY0] JUMP[XPDLO2] C550 $ 38 | 29m0141 ;Advance frame pointer and check for overflow 39 | 29m0141 06015 640040000571000440005770 PUSHJ[XFIXMA] NORM $ 40 | 29m0141 ;Decide whether to map destination. 41 | 29m0141 06016 662104200571000440002032 D[AR] DEST[MEMSTO] MEMST OND[-MA-AC] LBJUMP[MSMAIN] NORM ]$ 42 | 29m0141 ;Finish instruction. We're done 43 | 29m0141 06017 640040000571000440005770 XPDLO2: PUSHJ[XFIXMA] NORM $ 44 | 29m0141 ;Fixup AC references 45 | 29m0141 06020 640140000571000440000000 JUMP[PDLO2] NORM $ 46 | 29m0141 ;Done. Take stack overflow trap 47 | 29m0141 48 | 29m0141 ;Special case for POP. Check for AC reference from stack pointer 49 | 29m0141 06021 640700034171022442000000 XPOP1: D[IR] ROT[11] DEST[Q] NORM SPEC[PC+1] $ 50 | 29m0141 ;Save bit meaning 'source from user' in format that can 51 | 29m0141 ;be fed easily to EXEC-SR 52 | 29m0141 ;Now we're executing the PUSH (implied by PC+1) 53 | 29m0141 06022 640700224571000440000000 D[MA] DEST[IR-ADR] NORM $ 54 | 29m0141 ;Restore normal effective address 55 | 29m0141 06023 640720015063001000000000 ACSEL[AC] D[CONST 1,,1] ALU[AC-D] DEST[MA O_AC] NORM $ 56 | 57 | ; F2X.LST;19 Mon 9-Feb-81 4:29PM Page 100:1 58 | 59 | 60 | 29m0141 ;Update AC and MA for stack reference 61 | 29m0141 06024 530040014635022040005770 D[CONST 4] ROT[11] ALU[D&Q] COND[-OBUS=0] PUSHJ[XFIXMA] C550 $ 62 | 29m0141 ;Fixup stack addressing if user AC 63 | 29m0141 06025 640706000550400440160000 ACSEL[MA] ALU[AC] DEST[FIXMAC-MAPF-RD] MAPF[PPOP] CYLEN[FIXM] $ 64 | 29m0141 ;Check for page faults 65 | 29m0141 06026 640710004571000440000000 D[MEM] DEST[AR] NORM $ 66 | 29m0141 ;Find somewhere safer for thing to push 67 | 29m0141 D[CONST 1] ROT[11] ALU[D&Q] DEST[MAP-EXEC-SR] 68 | ^L 69 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2XT.SLO;6: -------------------------------------------------------------------------------- 1 | ;F2 with 8K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | XUCODE = 1 ;8K u-mem present 13 | 14 | NEWMAP = 1 15 | 16 | TIMER = 1 17 | 18 | ;;;IMP = 1 19 | 20 | DLSDEV = 20 ; udevice code for TTY scanner 21 | 22 | DLS = 1 23 | 24 | DLSDEB = 1 25 | 26 | DLS2 = 1 27 | 28 | NTP = 1 29 | 30 | TAPE = 1 31 | 32 | VID = 1 33 | 34 | ;;;VC = 1 ; Set to 1 for Versatec 35 | VCDEV = 14 ; udevice code for Versatec 36 | 37 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 38 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 39 | 40 | XLIST 41 | 42 | .INSERT CFDEF.SLO 43 | 44 | LIST 45 | 46 | .INSERT CFNEW 47 | 48 | LIST-LABELS 49 | LIST-CORMAP 50 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2Y.SLO;1: -------------------------------------------------------------------------------- 1 | COMMENT  VALID 00002 PAGES 2 | C REC PAGE DESCRIPTION 3 | C00001 00001 4 | C00002 00002 F2 with 8K micro-memory 5 | C00004 ENDMK 6 | C; 7 | ;F2 with 8K micro-memory 8 | 9 | ;Initialize switch settings 10 | .INSERT SWINIT.SLO 11 | 12 | ; F2 VERSION OF MICROCODE 13 | 14 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 15 | 16 | F2SW = 1 17 | 18 | XUCODE = 1 ;8K u-mem present 19 | 20 | XLIST 21 | 22 | .INSERT CFDEF.SLO 23 | 24 | LIST 25 | 26 | NEWMAP = 1 27 | 28 | TIMER = 1 29 | 30 | IMP = 1 31 | 32 | DLSDEV = 20 ; udevice code for TTY scanner 33 | 34 | DLS = 1 35 | 36 | DLSDEB = 1 37 | 38 | DLS2 = 1 39 | 40 | NTP = 1 41 | 42 | ;;;VID = 1 43 | 44 | VC = 1 ; Set to 1 for Versatec 45 | VCDEV = 14 ; udevice code for Versatec 46 | 47 | CROCK = 1 ;for now!! 48 | 49 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 50 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 51 | .INSERT CFMAIN 52 | 53 | LIST-LABELS 54 | LIST-CORMAP 55 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F2Z.SLO;1: -------------------------------------------------------------------------------- 1 | ;F2 with 8K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | XUCODE = 1 ;8K u-mem present 13 | 14 | NEWMAP = 1 15 | 16 | TIMER = 1 17 | 18 | ;;;IMP = 1 19 | 20 | DLSDEV = 20 ; udevice code for TTY scanner 21 | 22 | DLS = 1 23 | 24 | DLSDEB = 1 25 | 26 | DLS2 = 1 27 | 28 | NTP = 1 29 | 30 | TAPE = 1 31 | 32 | ;;;VID = 1 33 | 34 | ;;;VC = 1 ; Set to 1 for Versatec 35 | VCDEV = 14 ; udevice code for Versatec 36 | 37 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 38 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 39 | 40 | XLIST 41 | 42 | .INSERT CFDEF.SLO 43 | 44 | LIST 45 | 46 | .INSERT CFNEW 47 | 48 | LIST-LABELS 49 | LIST-CORMAP 50 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F3.SLO;6: -------------------------------------------------------------------------------- 1 | ;microcrox for SLYMSHARE system 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F3 VERSION OF MICROCODE 7 | 8 | F2SW = 1 9 | 10 | NTP = 1 11 | TAPE = 1 ;These two get latest tape as of 1-1-80 12 | 13 | NEWMAP = 1 ;SET FOR MACHINES F3-3 AND LATER. 14 | 15 | TYMNET = 1 16 | 17 | TIMER = 1 18 | 19 | IMP = 1 ;ARPANET 20 | 21 | XLIST 22 | 23 | .INSERT CFDEF.SLO 24 | 25 | LIST 26 | 27 | .INSERT CFNEW 28 | 29 | LIST-LABELS 30 | LIST-CORMAP 31 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F31.SLO;3: -------------------------------------------------------------------------------- 1 | 2 | ;Initialize switch settings 3 | .INSERT SWINIT.SLO 4 | 5 | ; F3 VERSION OF MICROCODE 6 | 7 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 8 | 9 | FAST = 0 10 | 11 | F2SW = 0 12 | 13 | NEWMAP = 0 14 | 15 | ;;;TIMER = 1 16 | 17 | ;;;IMP = 1 18 | 19 | DLSDEV = 20 ; udevice code for TTY scanner 20 | 21 | ;DLS = 1 22 | 23 | ;DLSDEB = 1 24 | 25 | DLS2 = 1 26 | 27 | NTP = 1 28 | TAPE = 1 29 | 30 | ;;;VID = 1 31 | 32 | ;;;VC = 1 ; Set to 1 for Versatec 33 | VCDEV = 14 ; udevice code for Versatec 34 | 35 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 36 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 37 | 38 | XLIST 39 | 40 | .INSERT CFDEF.SLO 41 | 42 | LIST 43 | 44 | .INSERT CFNEW 45 | 46 | LIST-LABELS 47 | LIST-CORMAP 48 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F33.SLO;1: -------------------------------------------------------------------------------- 1 | ;microcrox for SCI system 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 0 11 | 12 | SLOW1 = 1 13 | 14 | XLIST 15 | 16 | .INSERT CFDEF.SLO 17 | 18 | LIST 19 | 20 | KNYTAPE = 1 ;Formatting in interrupt mode (i think) 21 | 22 | SLOWTAPE = 0 23 | 24 | NEWMAP = 1 ;SET FOR MACHINES F3-3 AND LATER. 25 | 26 | TYMNET = 1 27 | 28 | TIMER = 1 ;??? 29 | 30 | CROCK = 1 ;for now!! 31 | 32 | .INSERT CFMAIN 33 | 34 | 35 | LIST-LABELS 36 | LIST-CORMAP 37 | -------------------------------------------------------------------------------- /foonly/f2/DSK:F3N.SLO;1: -------------------------------------------------------------------------------- 1 | ;F2 with 4K micro-memory 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; F2 VERSION OF MICROCODE 7 | 8 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 9 | 10 | F2SW = 1 11 | 12 | 13 | XLIST 14 | 15 | .INSERT CFDEF.SLO 16 | 17 | LIST 18 | 19 | NEWMAP = 1 20 | 21 | TIMER = 1 22 | 23 | IMP = 1 24 | 25 | DLSDEV = 20 ; udevice code for TTY scanner 26 | 27 | 28 | TYMNET = 1 29 | 30 | DLS2 = 1 31 | 32 | NTP = 1 33 | 34 | 35 | VCDEV = 14 ; udevice code for Versatec 36 | 37 | CROCK = 1 ;for now!! 38 | 39 | .DEFINE DLIST [] [LIST] ;Define as LIST to enable FOOLIST 40 | .DEFINE DXLIST [] [XLIST] ;Define as XLIST for FOOLIST stuff 41 | .INSERT CFMAIN 42 | 43 | LIST-LABELS 44 | LIST-CORMAP 45 | -------------------------------------------------------------------------------- /foonly/f2/DSK:MEMT1.SLO;6: -------------------------------------------------------------------------------- 1 | 2 | 3 | ;MEMTST Memory diagnostic 4 | ;128k, new tape ctrl version 5 | 6 | NMEMS = 1 ;Test only 128k words. 7 | 8 | XLIST 9 | .INSERT SWINIT 10 | .INSERT CFDEF.SLO ; get machine definition 11 | LIST 12 | 13 | NTP = 1 ;NEW TAPE CONTROLLER 14 | 15 | .INSERT MEMTST 16 | -------------------------------------------------------------------------------- /foonly/f2/DSK:MTMT1.LST;1: -------------------------------------------------------------------------------- 1 | ?ERROR - file not found 2 | -------------------------------------------------------------------------------- /foonly/f2/DSK:ODLSDE.SLO;1: -------------------------------------------------------------------------------- 1 | ;DLS DEBUGGING IOTS 2 | 3 | .DEFINE SETLIN [ ] [D[MASK[8.]] DEST[Q] PUSHJ[DLS.SETLIN] NORM] 4 | 5 | .DEFINE MJUMP[X] [D[AR] ALU[DORQ] DEST[Q] JUMP[X] NORM] 6 | 7 | ;;;;; DWP 1/27/80:7600 8 | DLS.DEB: 9 | :DLSDISP2 + 20 ;IOT DISPATCH FOR DEVICE 374 10 | 11 | SETLIN $ ;BLKI 374 = READ CR1 12 | JUMP[DLS.RCR1] NORM $ 13 | 14 | SETLIN $ ;DATAI 374 = READ CR2 15 | JUMP[DLS.RCR2] NORM $ 16 | 17 | SETLIN $ ;BLKO 374 = READ STAT 18 | JUMP[DLS.RSTAT] NORM $ 19 | 20 | SETLIN $ ;DATAO 374 = READ HOLD 21 | JUMP[DLS.RHOLD] NORM $ 22 | 23 | SETLIN $ ;CONO 374 = WRITE CR1 24 | MJUMP[DLS.WCR1] $ 25 | 26 | SETLIN $ ;CONI 374 = WRITE CR2 27 | MJUMP[DLS.WCR2] $ 28 | 29 | SETLIN $ ;CONSZ 374 = WRITE STAT (SYN,DLE) 30 | MJUMP[DLS.WSTAT] $ 31 | 32 | SETLIN $ ;CONSO 374 = WRITE HOLD 33 | MJUMP[DLS.WHOLD] $ 34 | 35 | :DLS.DEB 36 | 37 | DLS.SETLIN: FIXM1 $ ;SETUP LINE # IN Q 38 | D[MEM] ALU[D&Q] DEST[AR] NORM $ 39 | D[MASK[4]] ROT[21.] DEST[Q] NORM $ 40 | D[MEM] ROT[3] ALU[D&Q] DEST[Q] POPJ NORM $ 41 | 42 | DLS.RCR1: DLSREAD[DLSCR1 AR 8.] JUMP[DLS.READ] $ 43 | 44 | DLS.RCR2: DLSREAD[DLSCR2 AR 8.] JUMP[DLS.READ] $ 45 | 46 | DLS.RSTAT: DLSREAD[DLSSTAT AR 8.] JUMP[DLS.READ] $ 47 | 48 | DLS.RHOLD: DLSREAD[DLSHOLD AR 8.] JUMP[DLS.READ] $ 49 | 50 | DLS.READ: D[MASK[8.]] DEST[Q] NORM $ 51 | D[AR] ALU[D&Q] DEST[Q] NORM $ 52 | D[MEM] SPEC[LEFT] ALU[DORQ] DEST[MEMSTO] MEMST $ 53 | 54 | DLS.WCR1: DLSWRITE[DLSCR1] JUMP[MAIN] $ 55 | 56 | DLS.WCR2: DLSWRITE[DLSCR2] JUMP[MAIN] $ 57 | 58 | DLS.WSTAT: DLSWRITE[DLSSTAT] JUMP[MAIN] $ 59 | 60 | DLS.WHOLD: DLSWRITE[DLSHOLD] JUMP[MAIN] $ 61 | 62 | DLS.INT: JUMP[.] $ 63 | JUMP[. + 1] $ 64 | ALU[0] DEST[IOD] SPEC[IOB-OUT] NORM $ 65 | MAPF[DLSCSR] CYLEN[IOB-OUT] $ 66 | DEST[CLR-DEV-FROM-INTR] JUMP[MAIN] $ 67 | 68 | DLS.RINT: 69 | : DLSDISP2 + 0 ;BLKI 370 - GET INTERRUPT STATUS 70 | JUMP[.] $ 71 | JUMP[DLS.RINT] $ 72 | : DLS.RINT 73 | D[CONST 1] ROT[26.] DEST[Q] NORM $ 74 | MAPF[DLSNOSEL] SPEC[IOB-OUT] D[CONST 1] ROT[20.] 75 | ALU[D+Q+1] DEST[IOD] NORM $ 76 | MAPF[DLSNOSEL] CYLEN[IOB-OUT] $ 77 | MAPF[DLSIACK] LONG $ 78 | MAPF[DLSIACK] LONG $ 79 | MAPF[DLSIACK] LONG $ 80 | MAPF[DLSIACK] LONG $ 81 | MAPF[DLSIACK] SPEC[IOB-OUT] ALU[Q] DEST[IOD] LONG $ 82 | MAPF[DLSIACK] SPEC[IOB-IN] LONG $ 83 | MAPF[DLSIACK] CYLEN[IOB-IN] D[IOD] DEST[Q] $ 84 | ALU[Q] DEST[MEMSTO] MEMST $ 85 | 86 | DLS.EINT: 87 | : DLSDISP2 + 4 ;BLKO 370 - ENABLE INTERRUPT 88 | JUMP[.] $ 89 | JUMP[DLS.EINT] $ 90 | :DLS.EINT 91 | D[CONST 1] ROT[27.] DEST[IOD] SPEC[IOB-OUT] NORM $ 92 | MAPF[DLSCSR] CYLEN[IOB-OUT] JUMP[MAIN] $ 93 | -------------------------------------------------------------------------------- /foonly/f2/DSK:SCI.SLO;12: -------------------------------------------------------------------------------- 1 | ;microcrox for SCI system 2 | 3 | ;Initialize switch settings 4 | .INSERT SWINIT.SLO 5 | 6 | ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 7 | 8 | XUCODE = 1 9 | 10 | F2SW = 1 11 | 12 | NEWMAP = 0 13 | 14 | TLXTAPE = 0 ;Down: THIS IMPLIES TELEX TAPE CTRLR 15 | 16 | NTP = 1 17 | TAPE = 1 18 | 19 | DLS = 1 ;Set to 1 to include DLS 20 | DLSDEB = 1 ;Set to 1 for debugging 21 | DLS2 = 1 22 | DLSDEV = 20 23 | 24 | IMP = 1 ;Set to 1 to include IMP 25 | 26 | VC = 1 27 | VCDEV = 14 28 | 29 | XLIST 30 | 31 | .INSERT CFDEF.SLO 32 | 33 | LIST 34 | 35 | .INSERT CFNEW 36 | 37 | LIST-LABELS 38 | LIST-CORMAP 39 | -------------------------------------------------------------------------------- /foonly/f2/DSK:SWINIT.SLO;7: -------------------------------------------------------------------------------- 1 | ;INIT ALL SWITCHES FOR CF TO 0. 2 | 3 | .DEFINE FOOLIST[] [ XLIST ] 4 | 5 | !-.INSERT-'SWINIT.SLO'-! = 0 ;ERROR MESSAGE FOR LOSERS 6 | 7 | F2SW = 1 ; SET F2SW = 1 FOR F2, F2SW = 0 FOR F3 8 | 9 | FAST = 1 ;IF 0, ALL CYCLES ARE 500NS OR MORE. 10 | 11 | SLOW1 = 1 ;MAKES 350NS CYCLES LONGER BY 50*SLOW1 NS. DWP 2/10 12 | 13 | SLOW2 = 0 ;MAKES 400NS CYCLES LONGER BY 50*SLOW2 NS. 14 | 15 | TYMNET = 0 16 | 17 | DR11P = 0 18 | 19 | TLXTAPE = 0 20 | 21 | 125TAPE = 0 22 | 23 | SLOWTAPE = 0 24 | 25 | KNYTAPE = 0 26 | 27 | NTP = 0 ;NEW TAPE CTRL (DMA TYPE) 28 | 29 | TAPE = 0 ;New tape ctrl with long records. 30 | 31 | 75IPS = 0 ;Not 75IPS drive -- implies 125IPS 32 | 33 | DLS = 0 34 | 35 | IMP = 0 36 | IMP1 = 0 ;HIGH U-MEM VERSION OF IMP 37 | 38 | WK = 0 ;Walt's Kluge 39 | 40 | VID = 0 ;FooVision 41 | VIC2 = 0 ;Smart video controler (with sysnthsis) 42 | 43 | LPT = 0 ;Lineprinter (Printronix, etc.) 44 | 45 | VC = 0 ;Versatec/Varian plotter interface. 46 | 47 | NEWMAP = 1 ;SET FOR MACHINES F3-3 AND LATER. 48 | 49 | CROCK = 1 ;set to 1 to get some old crockish code back 50 | 51 | DEBUGSW = 0 ;Set to 1 to get some debugging crocks 52 | 53 | TIMER = 0 ;INTERVAL TIMER 54 | 55 | STANSW = 0 ;Special Stanford I/O devices 56 | 57 | WAITS = 0 ;BBN Pager was modified for WAITS 58 | 59 | XUCODE = 0 ;Set to 1 (exactly !) if 8k u-memory present. 60 | -------------------------------------------------------------------------------- /foonly/f2/DSK:TEST.MAC;1: -------------------------------------------------------------------------------- 1 | 2 | BEGIN: MOVEI 1,101 3 | RFMOD 4 | TRZ 2,1B28!1B29 5 | SFMOD 6 | START: PBIN 7 | MOVE 2,1 8 | MOVEI 1,101 9 | MOVEI 3,10 10 | NOUT 11 | HALT 12 | HRROI 1,[ASCIZ/ 13 | /] 14 | PSOUT 15 | CAIE 2,3 16 | CAIN 2,203 17 | HALTF 18 | JRST START 19 | END BEGIN 20 | -------------------------------------------------------------------------------- /foonly/f2/DSK:TMPGRN.SLO;1: -------------------------------------------------------------------------------- 1 | ;----------------------------------------------------------------------; 2 | ; ; 3 | ; GRN - Temporary Grinnel Interface ; 4 | ; ; 5 | ;----------------------------------------------------------------------; 6 | GRN-UDEV = PAN-UDEV ;uDevice address 7 | 8 | ;MAPF fields 9 | GRN-STATUS = 5 ;Read status register 10 | ;200 G INT RQ (= G INT ENB  G INT REQ) 11 | ;100 FIFO BSY FIFO input register ready 12 | ;40 GWBSY Grinnell is busy 13 | ;20 G INT REQ FIFO seems empty 14 | ;10 G INT ENB Micro interrupt enable 15 | GRN-CONTROL = 5 ;Set control 16 | ;10 G INT ENB Micro interrupt enable 17 | GRN-DATA = 6 ;Send Data 18 | 19 | ;A-MEM usage 20 | GRN-DISP = 4 ;IOT dispatch in LH, RH unused 21 | GRN-PICHN = 5 ;PI channel for Grinnell (not used, just saved for now) 22 | 23 | .PAIR 24 | D[PC] ROT[6 + 1] MASK[1] COND[OBUS=0] JUMP[MUUO] $ 25 | ;Trap if User and not IOT-USER 26 | GRNIOT: D[IR] ROT[12. + 1 + 1] MASK[4] DEST[Q] NORM $ 27 | ;Extract IOT decode * 2. Note we can do this because the 28 | ;machine has already done indexing/indirection and bits 29 | ;13:17 are guaranteed zero 30 | D[10 + GRN-DISP] ROT[18.] MASK[16.] ALU[D+Q] SDISP CYLEN[DISP] $ 31 | ;Dispatch of type of IOT 32 | 33 | ;Normal IOT dispatch for Grinnell 34 | GRN-DISPATCH: 35 | ;BLKI XXX, - Not implemented 36 | JUMP[MUUO] $ 37 | NOP $ 38 | ;DATAI XXX, 39 | JUMP[MUUO] $ 40 | NOP $ 41 | ;BLKO XXX, - Not implemented 42 | JUMP[MUUO] $ 43 | NOP $ 44 | ;DATAO XXX, 45 | FIXM1 $ 46 | D[MEM] DEST[IOD] SPEC[IOB-OUT] JUMP[GRNDTO] $ 47 | ;Send data blindly to Grinnell 48 | ;(Continued below, two microinstructions' worth) 49 | ;CONO XXX, 50 | D[IR] DEST[IOD] SPEC[IOB-OUT] NORM $ 51 | ;Remember PI channel and start setting micro interrupt enable 52 | ;bit. 53 | MAPF[GRN-CONTROL] CYLEN[IOB-OUT] 54 | D[IR] MASK[4] DEST[GRN-PICHN] DEST-A-MEM JUMP[MAIN] $ 55 | ;Finish setting micro-interrupt enable bit and also save it 56 | ;away 57 | ;CONI XXX, 58 | SPEC[IOB-IN] PUSHJ[GRNSTS] NORM $ 59 | ;Start reading status 60 | MAPF[GRN-STATUS] CYLEN[IOB-IN] ALU[Q] DEST[MEMSTO] 61 | COND[-MA-AC] LBJUMP[MSMAIN] $ 62 | ;Finish reading status from Grinell interface. 63 | ;Start store and let MSMAIN finish it. 64 | ;CONSZ XXX, 65 | SPEC[IOB-IN] PUSHJ[GRNSTS] NORM $ 66 | ;Start reading status 67 | JUMP[XXCONSZ] NORM $ 68 | ;Go do generalized CONSZ. 69 | ;CONSO XXX, 70 | SPEC[IOB-IN] PUSHJ[GRNSTS] NORM $ 71 | ;Start reading status 72 | JUMP[XXCONSO] NORM $ 73 | ;Go do generalized CONSO. 74 | 75 | ;Get status from Grinnell 76 | GRNSTS: MAPF[GRN-STATUS] CYLEN[IOB-IN] D[IOD] DEST[Q] $ 77 | ;Finish reading hardware status 78 | D[CONST 17] ALU[-D&Q] DEST[Q] SHORT $ 79 | ;Remove old PI channel and interrupt enable 80 | D[10 + GRN-PICHN] ALU[DORQ] DEST[Q] POPJ NORM $ 81 | ;Put in PI channel and firmware interrupt enable 82 | 83 | ;Finish writing to Grinnell and start next instruction. 84 | GRNDTO: MAPF[GRN-DATA] CYLEN[IOB-OUT] SPEC[MA_PC] DEST[MA] JUMP[MAIN1] $ 85 | 86 | ;Grinnell interrupt. Pass to system, if enabled. Otherwise, ignore 87 | GRNINT: SPEC[IOB-IN] SHORT $ 88 | ;Fetch status 89 | MAPF[GRN-STATUS] CYLEN[IOB-IN] D[IOD] ROT[35. - 7] DEST[Q] $ 90 | ;Get interrupt request bit 91 | ALU[Q] COND[OBUS=0] JUMP[.] NORM $ 92 | ;Interrupt without a cause. 93 | ALU[0] DEST[IOD] SPEC[IOB-OUT] SHORT $ 94 | ;Clear micro-interrupt enable 95 | MAPF[GRN-CONTROL] CYLEN[IOB-OUT] 96 | D[10 + GRN-PICHN] MASK[3] DEST[AR] COND[-OBUS=0] JUMP[PIGEN] $ 97 | ;Take interrupt, if enabled. 98 | DEST[CLR-DEV-FROM-INTR MA] SPEC[MA_PC] JUMP[MAIN1] NORM $ 99 | ;Dismiss interrupt 100 | 101 | ;Reset Grinnell, Set dispatch addresses 102 | GRNRST: ALU[0] DEST[GRN-PICHN] DEST-A-MEM SHORT $ 103 | ;No PI channel yet. 104 | D[CONST (GRN-DISPATCH / 100)] ROT[30] DEST[Q] NORM $ 105 | ;Construct dispatch address: high 6 bits. Finish IOB RESET 106 | D[CONST (GRN-DISPATCH \ 100)] ROT[22] ALU[DORQ] 107 | DEST[GRN-DISP] SPEC[DEST-A-MEM] NORM POPJ $ 108 | ;Finish contructing dispatch address and store away. 109 | ;We're done. 110 | -------------------------------------------------------------------------------- /kl10/its/1proc.plan: -------------------------------------------------------------------------------- 1 | MOON 0306 EST Friday, 7 November 1975 2 | 3 | PLAN FOR ONE PROCEED 4 | 5 | TO CAUSE A ONE-PROCEED, SET THE USER'S PC TO CONTAIN 6 | TRAP1+TRAP2+ADDR BRK INH (%PSTR1+%PSTR2+%PSINH). 7 | WHEN THE SYSTEM STARTS UP THE USER, THE JRST 12 8 | TURNS ON TRAP 3, TURNS OFF ADDR BRK INH, AND TURNS 9 | ON ADDR BRK CYCLE (SCD4 & SCD5). IF THE INSTRUCTION 10 | IS ABORTED ADDR BRK INH TURNS BACK ON, THE PC GETS SAVED 11 | WITH IT ON, THEN IT TURNS OFF. IF THE INSTRUCTION COMPLETES 12 | ADDR BRK INH AND ADDR BRK CYC GO OFF. 13 | 14 | NOW WHEN THE MICRO CODE SEES A TRAP, IT HAS TO CHECK 15 | IF IT IS TRAP 3 AND ADDR BRK CYC IS ON. IF SO, DON'T 16 | TAKE THE TRAP, JUST DO THE INSTRUCTION. SEE UCODE;BASIC .LOS 17 | FOR CODE TO NOT TAKE TRAPS. 18 | 19 | SCD ADDR BRK CYC IS BIT 4.4 OF DIAGNOSTIC READ 137. 20 | I DON'T THINK IT'S AVAILABLE ANY OTHER WAY, SO THAT MEANS 21 | HAVE TO GRAB ECL EBUS ETC ETC. 22 | 23 | THIS WINS BECAUSE HARDWARE MAINTAINS THE FLAG OF WHETHER 24 | THE INSTRUCTION HAS COMPLETED YET. 25 | 26 | IT LOSES BECAUSE THE "MAR" WILL BE DISABLED DURING A 27 | "ONE PROCEED." HOWEVER, THE FACT THAT IT ISN'T ON THE KA10 28 | CAN BE ANNOYING, ANYWAY, WHO CARES? 29 | 30 | THIS IS THE ONLY SIMPLE WAY TO DO ONE-PROCEED THAT I HAVE 31 | BEEN ABLE TO THINK OF. 32 | DLST k|I -------------------------------------------------------------------------------- /kl10/its/arith.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/arith.6 -------------------------------------------------------------------------------- /kl10/its/basic.22: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/basic.22 -------------------------------------------------------------------------------- /kl10/its/bcirc.3: -------------------------------------------------------------------------------- 1 | 2 | .SET/CIRC.BIG.OPT=1 3 | .SET/CIRC=1 4 | -------------------------------------------------------------------------------- /kl10/its/blt.8: -------------------------------------------------------------------------------- 1 | .TOC "BLT" 2 | ; ENTER WITH 0,E IN AR 3 | 4 | ;IN THE LOOP, ARX CONTAINS THE CURRENT DESTINATION ADDRESS, 5 | ; BRX CONTAINS THE TERMINAL ADDRESS, AND BR CONTAINS THE DIFFERENCE 6 | ; BETWEEN THE SOURCE AND DESTINATION ADDRESSES. 7 | 8 | ;UNLIKE EARLIER -10 PROCESSORS, THIS CODE CHECKS FOR THE CASE IN WHICH 9 | ; THE DESTINATION ADDRESS IN RH(AC) IS GREATER THAN E, AND RATHER THAN 10 | ; STOPPING AFTER ONE WORD, COPIES DOWNWARD (EFFECTIVELY DECREMENTING 11 | ; AC BY 1,,1 ON EACH STEP, RATHER THAN INCREMENTING). 12 | 13 | ;THIS CODE ALSO PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF 14 | ; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD 15 | ; OF THE DESTINATION BLOCK). WHEN AC IS NOT PART OF THE DESTINATION 16 | ; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING 17 | ; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST- 18 | ; INATION BLOCK (IN THE RH). IF AC IS THE LAST WORD OF THE DESTINATION 19 | ; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK. 20 | 21 | ;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH 22 | ; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER. IN THIS CASE, 23 | ; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH 24 | ; TRANSFER. THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP. 25 | 26 | ;BLT: ARX_AR,MQ_AR,ARR_AC0,ARL_ARL ;END TO ARX & MQ, DEST TO AR 27 | BLT1: BR/AR,ARX_AR,BRX/ARX, ;DST TO BR & ARX, END TO BRX 28 | AR_AC0 ;SRC TO ARL 29 | ARR_ARL,ARL_0.M ;SRC TO ARR 30 | AR_AR-BR ;SRC-DST TO ARR 31 | .IF/BACK.BLT 32 | BR/AR,SKP ARX LE BRX ;SRC-DST TO BR. UP OR DOWN? 33 | =00 AR_MQ-1,CALL,J/BLTAC ;DOWN, READY WITH E-1 34 | AR_MQ+1,CALL,J/BLTAC ;UP, PUT E+1 IN AR FOR AC 35 | DOWN: VMA_ARX+BR,LOAD AR,J/DN1 ;DOWN, START THE LOOP 36 | .IFNOT/BACK.BLT 37 | =0* BR/AR,AR_MQ+1,CALL,J/BLTAC ;SRC-DST TO BR, E+1 IN AR 38 | .ENDIF/BACK.BLT 39 | SKP BR EQ -1,J/UP ;IS THIS CORE CLEARING CASE? 40 | 41 | 42 | ;HERE TO SETUP FINAL AC 43 | 44 | BLTAC: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 45 | AR_AR SWAP,SR_BLT(SRC) ;REARRANGE 46 | AC0_AR,RETURN2 47 | ;HERE FOR UPWARD BLT (AC RH .LE. E) 48 | =0 49 | UP: VMA_ARX+BR,LOAD AR,J/UP1 ;NOT CLEAR CORE 50 | SKP P!S XCT,VMA_ARX+BR,LOAD AR ;DO NOT OPTIMIZE UNDER EXT ADDR 51 | 52 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 53 | 54 | =00 AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET THE WORD TO STORE IN ALL 55 | UP1: AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET SOURCE WORD 56 | CALL,SR_BLT(DST),J/UP2 ;HERE TO STORE SAME SRC AGAIN 57 | VMA_ARX+BR,LOAD AR,J/UP1 ;HERE TO GET NEXT SRC 58 | 59 | UP2: VMA_ARX,STORE,SKP INTRPT ;OK, GET DST ADDRESS 60 | =0 61 | UP3: SKP ARX LT BRX,J/UP4 ;CHECK FOR LAST TRANSFER 62 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 63 | =0 64 | UP4: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 65 | MEM_AR,ARX_ARX+1, ;STORE DST, 66 | SR_BLT(SRC),RETURN2 ; CONTINUE 67 | 68 | ;BLT CONTINUED - HERE FOR DOWNWARD BLT (AC RH .GT. E) 69 | .IF/BACK.BLT 70 | 71 | DN1: AR_MEM,SR_BLT(DST) ;WAIT FOR SOURCE DATA 72 | VMA_ARX,STORE,SKP INTRPT ;OK, START DST REF 73 | =0 SKP ARX LE BRX,J/DN3 ;CHECK FOR END CONDITION 74 | MEM_AR,J/BLTPF ;FINISH STORE, TAKE INTRPT 75 | =0 76 | DN3: MEM_AR,ARX_ARX-1, ;NOT END, LOOP 77 | SR_BLT(SRC),J/DOWN 78 | FIN STORE,I FETCH,J/NOP ;END 79 | .ENDIF/BACK.BLT 80 | .TOC "STORING OF JPC" 81 | 82 | .IF/JPC SUPPORT 83 | 84 | AOBJPC: ;HERE TO STORE JPC FOR AOBJN/AOBJP 85 | SOJJPC: ;HERE FOR SOJ SERIES 86 | AOJJPC: ;HERE FOR AOJ SERIES 87 | .IFNOT/NXT.INSTR.BITES 88 | AC0_AR,B DISP 89 | .IF/NXT.INSTR.BITES 90 | AC0_AR ;AVOID WRITING WRONG PARITY IN FAST MEMORY 91 | B DISP 92 | .ENDIF/NXT.INSTR.BITES 93 | =*1*000 ;HERE FOR JUMP SERIES 94 | JMPJPC: GEN AR-1,SKP AR0,SIGNS DISP,J/JPCP ;LE 95 | SKP AR NE,J/NJPCP ;E 96 | SKP AR0,J/JPCP ;L 97 | J/FINI ;- 98 | GEN AR-1,SKP AR0,SIGNS DISP,J/NJPCP ;G 99 | SKP AR NE,J/JPCP ;N 100 | SKP AR0,J/NJPCP ;GE 101 | AR_PC,SC_#,#/32.,SKP USER,J/JPCEX ;A 102 | 103 | =*1*110 104 | JPCP: NXT INSTR ;NOT JUMPING 105 | JPCIFY: AR_PC,SC_#,#/32.,SKP USER,J/JPCEX ;JUMPING 106 | 107 | ;THIS IS LIKE STORAC, EXCEPT IT STORES THE JPC ALSO. 108 | ;CALLED WITH SKP USER, BECAUSE WRITING IN FM USES THE COND 109 | ;FIELD, WHICH MEANS JPCSTO CAN'T DO THE SKP USER ITSELF. 110 | 111 | =0 112 | JPCSTO: AC0_AR,AR_PC,SC_#,#/32.,J/JPCEX 113 | AC0_AR,AR_PC,SC_#,#/32.,J/JPCUSR 114 | 115 | .IFNOT/JPC.RING 116 | =*1***0 117 | JPCEX: XJPC_AR,NXT INSTR AFTER JPC 118 | JPCUSR: JPC_AR,NXT INSTR AFTER JPC 119 | .IF/JPC.RING 120 | ;COME HERE WITH: SKP USER,SC_#,#/32. 121 | =*1***0 122 | JPCEX: AR_XJPC+1,J/JPCEX1 123 | JPCUSR: AR_JPC+1 124 | JPC_AR,SH DISP,AR_PC 125 | =*10000 126 | JPC0_AR,NXT INSTR AFTER JPC 127 | JPC1_AR,NXT INSTR AFTER JPC 128 | JPC2_AR,NXT INSTR AFTER JPC 129 | JPC3_AR,NXT INSTR AFTER JPC 130 | JPC4_AR,NXT INSTR AFTER JPC 131 | JPC5_AR,NXT INSTR AFTER JPC 132 | JPC6_AR,NXT INSTR AFTER JPC 133 | JPC7_AR,NXT INSTR AFTER JPC 134 | JPC10_AR,NXT INSTR AFTER JPC 135 | JPC11_AR,NXT INSTR AFTER JPC 136 | JPC12_AR,NXT INSTR AFTER JPC 137 | JPC13_AR,NXT INSTR AFTER JPC 138 | JPC14_AR,NXT INSTR AFTER JPC 139 | JPC15_AR,NXT INSTR AFTER JPC 140 | JPC16_AR,NXT INSTR AFTER JPC 141 | JPC17_AR,NXT INSTR AFTER JPC 142 | 143 | JPCEX1: XJPC_AR,SH DISP,AR_PC 144 | =*10000 145 | XJPC0_AR,NXT INSTR AFTER JPC 146 | XJPC1_AR,NXT INSTR AFTER JPC 147 | XJPC2_AR,NXT INSTR AFTER JPC 148 | XJPC3_AR,NXT INSTR AFTER JPC 149 | XJPC4_AR,NXT INSTR AFTER JPC 150 | XJPC5_AR,NXT INSTR AFTER JPC 151 | XJPC6_AR,NXT INSTR AFTER JPC 152 | XJPC7_AR,NXT INSTR AFTER JPC 153 | XJPC10_AR,NXT INSTR AFTER JPC 154 | XJPC11_AR,NXT INSTR AFTER JPC 155 | XJPC12_AR,NXT INSTR AFTER JPC 156 | XJPC13_AR,NXT INSTR AFTER JPC 157 | XJPC14_AR,NXT INSTR AFTER JPC 158 | XJPC15_AR,NXT INSTR AFTER JPC 159 | XJPC16_AR,NXT INSTR AFTER JPC 160 | XJPC17_AR,NXT INSTR AFTER JPC 161 | .ENDIF/JPC.RING 162 | .ENDIF/JPC SUPPORT 163 | -------------------------------------------------------------------------------- /kl10/its/blt.9: -------------------------------------------------------------------------------- 1 | .TOC "BLT" 2 | ; ENTER WITH 0,E IN AR 3 | 4 | ;IN THE LOOP, ARX CONTAINS THE CURRENT DESTINATION ADDRESS, 5 | ; BRX CONTAINS THE TERMINAL ADDRESS, AND BR CONTAINS THE DIFFERENCE 6 | ; BETWEEN THE SOURCE AND DESTINATION ADDRESSES. 7 | 8 | ;UNLIKE EARLIER -10 PROCESSORS, THIS CODE CHECKS FOR THE CASE IN WHICH 9 | ; THE DESTINATION ADDRESS IN RH(AC) IS GREATER THAN E, AND RATHER THAN 10 | ; STOPPING AFTER ONE WORD, COPIES DOWNWARD (EFFECTIVELY DECREMENTING 11 | ; AC BY 1,,1 ON EACH STEP, RATHER THAN INCREMENTING). 12 | 13 | ;THIS CODE ALSO PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF 14 | ; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD 15 | ; OF THE DESTINATION BLOCK). WHEN AC IS NOT PART OF THE DESTINATION 16 | ; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING 17 | ; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST- 18 | ; INATION BLOCK (IN THE RH). IF AC IS THE LAST WORD OF THE DESTINATION 19 | ; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK. 20 | 21 | ;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH 22 | ; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER. IN THIS CASE, 23 | ; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH 24 | ; TRANSFER. THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP. 25 | 26 | ;BLT: ARX_AR,MQ_AR,ARR_AC0,ARL_ARL ;END TO ARX & MQ, DEST TO AR 27 | BLT1: BR/AR,ARX_AR,BRX/ARX, ;DST TO BR & ARX, END TO BRX 28 | AR_AC0 ;SRC TO ARL 29 | ARR_ARL,ARL_0.M ;SRC TO ARR 30 | AR_AR-BR ;SRC-DST TO ARR 31 | .IF/BACK.BLT 32 | BR/AR,SKP ARX LE BRX ;SRC-DST TO BR. UP OR DOWN? 33 | =00 AR_MQ-1,CALL,J/BLTAC ;DOWN, READY WITH E-1 34 | AR_MQ+1,CALL,J/BLTAC ;UP, PUT E+1 IN AR FOR AC 35 | DOWN: VMA_ARX+BR,LOAD AR,J/DN1 ;DOWN, START THE LOOP 36 | .IFNOT/BACK.BLT 37 | =0* BR/AR,AR_MQ+1,CALL,J/BLTAC ;SRC-DST TO BR, E+1 IN AR 38 | .ENDIF/BACK.BLT 39 | SKP BR EQ -1,J/UP ;IS THIS CORE CLEARING CASE? 40 | 41 | 42 | ;HERE TO SETUP FINAL AC 43 | 44 | BLTAC: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 45 | AR_AR SWAP,SR_BLT(SRC) ;REARRANGE 46 | AC0_AR,RETURN2 47 | ;HERE FOR UPWARD BLT (AC RH .LE. E) 48 | =0 49 | UP: VMA_ARX+BR,LOAD AR,J/UP1 ;NOT CLEAR CORE 50 | SKP P!S XCT,VMA_ARX+BR,LOAD AR ;DO NOT OPTIMIZE UNDER EXT ADDR 51 | 52 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 53 | 54 | =00 AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET THE WORD TO STORE IN ALL 55 | UP1: AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET SOURCE WORD 56 | CALL,SR_BLT(DST),J/UP2 ;HERE TO STORE SAME SRC AGAIN 57 | VMA_ARX+BR,LOAD AR,J/UP1 ;HERE TO GET NEXT SRC 58 | 59 | UP2: VMA_ARX,STORE,SKP INTRPT ;OK, GET DST ADDRESS 60 | =0 61 | UP3: SKP ARX LT BRX,J/UP4 ;CHECK FOR LAST TRANSFER 62 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 63 | =0 64 | UP4: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 65 | MEM_AR,ARX_ARX+1, ;STORE DST, 66 | SR_BLT(SRC),RETURN2 ; CONTINUE 67 | 68 | ;BLT CONTINUED - HERE FOR DOWNWARD BLT (AC RH .GT. E) 69 | .IF/BACK.BLT 70 | 71 | DN1: AR_MEM,SR_BLT(DST) ;WAIT FOR SOURCE DATA 72 | VMA_ARX,STORE,SKP INTRPT ;OK, START DST REF 73 | =0 SKP ARX LE BRX,J/DN3 ;CHECK FOR END CONDITION 74 | MEM_AR,J/BLTPF ;FINISH STORE, TAKE INTRPT 75 | =0 76 | DN3: MEM_AR,ARX_ARX-1, ;NOT END, LOOP 77 | SR_BLT(SRC),J/DOWN 78 | FIN STORE,I FETCH,J/NOP ;END 79 | .ENDIF/BACK.BLT 80 | .TOC "STORING OF JPC" 81 | 82 | .IF/JPC SUPPORT 83 | 84 | AOBJPC: ;HERE TO STORE JPC FOR AOBJN/AOBJP 85 | SOJJPC: ;HERE FOR SOJ SERIES 86 | AOJJPC: ;HERE FOR AOJ SERIES 87 | AC0_AR,B DISP 88 | =*1*000 ;HERE FOR JUMP SERIES 89 | JMPJPC: GEN AR-1,SKP AR0,SIGNS DISP,J/JPCP ;LE 90 | SKP AR NE,J/NJPCP ;E 91 | SKP AR0,J/JPCP ;L 92 | J/FINI ;- 93 | GEN AR-1,SKP AR0,SIGNS DISP,J/NJPCP ;G 94 | SKP AR NE,J/JPCP ;N 95 | SKP AR0,J/NJPCP ;GE 96 | AR_PC,SC_#,#/32.,SKP USER,J/JPCEX ;A 97 | 98 | =*1*110 99 | JPCP: NXT INSTR ;NOT JUMPING 100 | JPCIFY: AR_PC,SC_#,#/32.,SKP USER,J/JPCEX ;JUMPING 101 | 102 | ;THIS IS LIKE STORAC, EXCEPT IT STORES THE JPC ALSO. 103 | ;CALLED WITH SKP USER, BECAUSE WRITING IN FM USES THE COND 104 | ;FIELD, WHICH MEANS JPCSTO CAN'T DO THE SKP USER ITSELF. 105 | 106 | =0 107 | JPCSTO: AC0_AR,AR_PC,SC_#,#/32.,J/JPCEX 108 | AC0_AR,AR_PC,SC_#,#/32.,J/JPCUSR 109 | 110 | .IFNOT/JPC.RING 111 | =*1***0 112 | JPCEX: XJPC_AR,NXT INSTR AFTER JPC 113 | JPCUSR: JPC_AR,NXT INSTR AFTER JPC 114 | .IF/JPC.RING 115 | ;COME HERE WITH: SKP USER,SC_#,#/32. 116 | =*1***0 117 | JPCEX: AR_XJPC+1,J/JPCEX1 118 | JPCUSR: AR_JPC+1 119 | JPC_AR,SH DISP,AR_PC 120 | =*10000 121 | JPC0_AR,NXT INSTR AFTER JPC 122 | JPC1_AR,NXT INSTR AFTER JPC 123 | JPC2_AR,NXT INSTR AFTER JPC 124 | JPC3_AR,NXT INSTR AFTER JPC 125 | JPC4_AR,NXT INSTR AFTER JPC 126 | JPC5_AR,NXT INSTR AFTER JPC 127 | JPC6_AR,NXT INSTR AFTER JPC 128 | JPC7_AR,NXT INSTR AFTER JPC 129 | JPC10_AR,NXT INSTR AFTER JPC 130 | JPC11_AR,NXT INSTR AFTER JPC 131 | JPC12_AR,NXT INSTR AFTER JPC 132 | JPC13_AR,NXT INSTR AFTER JPC 133 | JPC14_AR,NXT INSTR AFTER JPC 134 | JPC15_AR,NXT INSTR AFTER JPC 135 | JPC16_AR,NXT INSTR AFTER JPC 136 | JPC17_AR,NXT INSTR AFTER JPC 137 | 138 | JPCEX1: XJPC_AR,SH DISP,AR_PC 139 | =*10000 140 | XJPC0_AR,NXT INSTR AFTER JPC 141 | XJPC1_AR,NXT INSTR AFTER JPC 142 | XJPC2_AR,NXT INSTR AFTER JPC 143 | XJPC3_AR,NXT INSTR AFTER JPC 144 | XJPC4_AR,NXT INSTR AFTER JPC 145 | XJPC5_AR,NXT INSTR AFTER JPC 146 | XJPC6_AR,NXT INSTR AFTER JPC 147 | XJPC7_AR,NXT INSTR AFTER JPC 148 | XJPC10_AR,NXT INSTR AFTER JPC 149 | XJPC11_AR,NXT INSTR AFTER JPC 150 | XJPC12_AR,NXT INSTR AFTER JPC 151 | XJPC13_AR,NXT INSTR AFTER JPC 152 | XJPC14_AR,NXT INSTR AFTER JPC 153 | XJPC15_AR,NXT INSTR AFTER JPC 154 | XJPC16_AR,NXT INSTR AFTER JPC 155 | XJPC17_AR,NXT INSTR AFTER JPC 156 | .ENDIF/JPC.RING 157 | .ENDIF/JPC SUPPORT 158 | -------------------------------------------------------------------------------- /kl10/its/blt.modelb: -------------------------------------------------------------------------------- 1 | .TOC "XBLT" 2 | 3 | ;HERE FROM EXTEND, WHEN OPCODE IS 20 OR GREATER 4 | ;ARX CONTAINS AC2, SKP ON PC SEC0, OR OPCODE >20 5 | .IF/XADDR 6 | 7 | =110 8 | XBLT: AR_AC1,SR_XBLT(SRC),J/XBLT2 ;OK IN EXTENDED SECTION 9 | AR_BR,J/UUO ;SECTION 0 (OR BAD OPCODE) 10 | XBLT2: BR/AR,BRX/ARX,MQ_AR, ;SRC ADDR TO BR, DST TO BRX 11 | AR_AC0,SKP AD0,J/XBLT3 ;GET LENGTH, TEST DIRECTION 12 | =0 13 | XBLT3: SKP AR NE,MQ_AR,J/XBLT4 14 | AR_MQ-1,ARX_ARX-1, ;DECR SRC & DST ADDR'S FOR DOWN 15 | VMA/AD,LOAD AR ;GET FIRST WORD 16 | 17 | ;HERE IS MAIN LOOP FOR XBLT, DOWNWARDS 18 | 19 | XBLTDN: MQ_AR,AR_MEM,SR_XBLT(DST) ;WAIT FOR SOURCE WORD 20 | VMA_ARX,STORE,SR_XBLT(SRC) ;STORE IT IN DESTINATION 21 | MEM_AR,AR_MQ,SKP INTRPT ;WAIT, CHECK FOR INTRPT 22 | =0 BR/AR,BRX/ARX, ;PUT DECREMENTED ADDR'S IN BR,X 23 | AR_AC0+1,SKP CRY0,J/XBLTD1 ;COUNT OFF LENGTH 24 | BR/AR,BRX/ARX,AR_AC0+1,J/PGFAC0 ;CLEANUP AND TAKE INTERRUPT 25 | =0 26 | XBLTD1: AC0_AR,AR_MQ-1,ARX_ARX-1, ;STORE NEW LENGTH, GET NEXT ADDR 27 | VMA/AD,LOAD AR,J/XBLTDN ; AND READ SRC WORD 28 | AC0_AR,AR_ARX,ARX/MQ, ;DONE! PUT ALL AWAY 29 | I FETCH 30 | XBLTX: AC2_AR,AR_ARX,J/STRAC1 31 | 32 | ;HERE FOR UPWARD BLT, TESTING FOR NON-ZERO LENGTH 33 | 34 | =0 35 | XBLT4: I FETCH,SR_0,J/NOP ;DO NOTHING IF AC =0 36 | VMA_BR,LOAD AR, ;ELSE START RIGHT IN 37 | SR_XBLT(DST),J/XBLTU1 38 | 39 | ;HERE IS MAIN LOOP FOR XBLT, UPWARDS 40 | 41 | XBLTUP: MEM_AR,AR_MQ-1,SKP AD NE ;COUNT EXHAUSTED? 42 | =0 AC0_AR,ARX_BR+1,AR_BRX+1, ;YES. GET FINAL ADDRESSES 43 | I FETCH,J/XBLTX ; READY TO STORE 44 | AC0_AR,MQ_AR,AR_BR+1,ARX_BRX+1, 45 | VMA/AD,LOAD AR ;GET SOURCE WORD 46 | BR/AR,BRX/ARX,SR_XBLT(DST) ;MUST BE SAVED PRIOR TO MBWAIT 47 | XBLTU1: AR_MEM,SKP INTRPT ;WAIT FOR SRC, TEST INTRPT 48 | =0 VMA_ARX,STORE, ;COPY TO DST 49 | SR_XBLT(SRC),J/XBLTUP ;LOOP 50 | AR_BR LONG,SR_0,J/XBLTPF ;TAKE INTERRUPT 51 | 52 | .ENDIF/XADDR 53 | .TOC "BLT" 54 | ; ENTER WITH 0,E IN AR 55 | 56 | ;IN THE LOOP, ARX CONTAINS THE CURRENT DESTINATION ADDRESS, 57 | ; BRX CONTAINS THE TERMINAL ADDRESS, AND BR CONTAINS THE DIFFERENCE 58 | ; BETWEEN THE SOURCE AND DESTINATION ADDRESSES. 59 | 60 | ;UNLIKE EARLIER -10 PROCESSORS, THIS CODE CHECKS FOR THE CASE IN WHICH 61 | ; THE DESTINATION ADDRESS IN RH(AC) IS GREATER THAN E, AND RATHER THAN 62 | ; STOPPING AFTER ONE WORD, COPIES DOWNWARD (EFFECTIVELY DECREMENTING 63 | ; AC BY 1,,1 ON EACH STEP, RATHER THAN INCREMENTING). 64 | 65 | ;THIS CODE ALSO PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF 66 | ; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD 67 | ; OF THE DESTINATION BLOCK). WHEN AC IS NOT PART OF THE DESTINATION 68 | ; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING 69 | ; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST- 70 | ; INATION BLOCK (IN THE RH). IF AC IS THE LAST WORD OF THE DESTINATION 71 | ; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK. 72 | 73 | ;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH 74 | ; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER. IN THIS CASE, 75 | ; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH 76 | ; TRANSFER. THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP. 77 | 78 | ;BLT: ARX_AR,MQ_AR,ARR_AC0,ARL_ARL ;END TO ARX & MQ, DEST TO AR 79 | BLT1: BR/AR,ARX_AR,BRX/ARX, ;DST TO BR & ARX, END TO BRX 80 | AR_AC0 ;SRC TO ARL 81 | .IFNOT/BLT.PXCT 82 | ARR_ARL,ARL_BRL ;SRC TO ARR (SAME SECTION AS E) 83 | AR_AR-BR ;SRC-DST TO ARR 84 | .IF/BLT.PXCT 85 | ARR_ARL,ARL_BRL.M,SKP P!S XCT ;SRC TO ARR (SAME SECTION AS E) 86 | =0 AR_AR-BR,J/BLT2 ;SRC-DST TO ARR 87 | AR_AR-BR,J/BLTPXCT ;TREAT PXCT OF BLT SPECIAL 88 | .ENDIF/BLT.PXCT 89 | .IF/BACK.BLT 90 | BR/AR,SKP ARX LE BRX ;SRC-DST TO BR. UP OR DOWN? 91 | =00 AR_MQ-1,CALL,J/BLTAC ;DOWN, READY WITH E-1 92 | AR_MQ+1,CALL,J/BLTAC ;UP, PUT E+1 IN AR FOR AC 93 | DOWN: LOAD VMA(EA)_ARX+BR,J/DN1 ;DOWN, START THE LOOP 94 | .IFNOT/BACK.BLT 95 | =0* 96 | BLT2: BR/AR,AR_MQ+1,CALL,J/BLTAC ;SRC-DST TO BR, E+1 IN AR 97 | .ENDIF/BACK.BLT 98 | SKP BR EQ -1,J/UP ;IS THIS CORE CLEARING CASE? 99 | 100 | 101 | ;HERE TO SETUP FINAL AC 102 | 103 | BLTAC: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 104 | AR_AR SWAP,SR_BLT(SRC) ;REARRANGE 105 | AC0_AR,RETURN2 106 | ;HERE FOR UPWARD BLT (AC RH .LE. E) 107 | =0 108 | UP: LOAD VMA(EA)_ARX+BR,J/UP1 ;NOT CLEAR CORE 109 | SKP P!S XCT,LOAD VMA(EA)_ARX+BR ;DO NOT OPTIMIZE UNDER EXT ADDR 110 | 111 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 112 | 113 | =00 AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET THE WORD TO STORE IN ALL 114 | UP1: AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET SOURCE WORD 115 | CALL,SR_BLT(DST),J/UP2 ;HERE TO STORE SAME SRC AGAIN 116 | LOAD VMA(EA)_ARX+BR,J/UP1 ;HERE TO GET NEXT SRC 117 | 118 | UP2: STORE VMA(EA)_ARX,SKP INTRPT ;OK, GET DST ADDRESS 119 | =0 120 | UP3: SKP ARX LT BRX,J/UP4 ;CHECK FOR LAST TRANSFER 121 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 122 | =0 123 | UP4: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 124 | MEM_AR,ARX_ARX+1, ;STORE DST, 125 | SR_BLT(SRC),RETURN2 ; CONTINUE 126 | 127 | ;BLT CONTINUED - HERE FOR DOWNWARD BLT (AC RH .GT. E) 128 | .IF/BACK.BLT 129 | 130 | DN1: AR_MEM,SR_BLT(DST) ;WAIT FOR SOURCE DATA 131 | VMA_ARX,STORE,SKP INTRPT ;OK, START DST REF 132 | =0 SKP ARX LE BRX,J/DN3 ;CHECK FOR END CONDITION 133 | MEM_AR,J/BLTPF ;FINISH STORE, TAKE INTRPT 134 | =0 135 | DN3: MEM_AR,ARX_ARX-1, ;NOT END, LOOP 136 | SR_BLT(SRC),J/DOWN 137 | FIN STORE,I FETCH,J/NOP ;END 138 | .ENDIF/BACK.BLT 139 | .TOC "EXTENDED ADDRESSING CODE FOR PXCT OF BLT" 140 | 141 | ;THIS MUST BE SEPERATE CODE TO MAKE PXCT WORK NOTE THAT PXCT ONLY CAN 142 | ;BE USED IN SECTION 0 AND IN FACT WILL EVENTUALLY BE REMOVED FROM THERE 143 | ;HOPEFULLY THIS CODE CAN GO AWAY THE SPEC IS THAT PXCT OF BLT IS NOT DEFINED 144 | ;AND WILL NOT BE USED ON EXTENDED ADDRESSING MACHINES. 145 | 146 | .IF/BLT.PXCT 147 | =0* 148 | BLTPXCT:BR/AR,AR_MQ+1,CALL,J/BLTPX1 ;SRC-DST TO BR, E+1 IN AR 149 | UPPX: VMA_ARX+BR,LOAD AR,J/UP1PX ;NOT CLEAR CORE 150 | ;CORE CLEARING NOT LEGAL 151 | 152 | 153 | ;HERE TO SETUP FINAL AC 154 | 155 | BLTPX1: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 156 | AR_AR SWAP,SR_BLT(PXCT SRC) ;REARRANGE 157 | AC0_AR,RETURN2 158 | 159 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 160 | 161 | =00 162 | =01 163 | UP1PX: AR_MEM,CALL,SR_BLT(PXCT DST),J/UP2PX ;GET SOURCE WORD 164 | CALL,SR_BLT(PXCT DST),J/UP2PX ;HERE TO STORE SAME SRC AGAIN 165 | VMA_ARX+BR,LOAD AR,J/UP1PX ;HERE TO GET NEXT SRC 166 | 167 | UP2PX: VMA_ARX,STORE,SKP INTRPT ;OK, GET DST ADDRESS 168 | =0 169 | UP3PX: SKP ARX LT BRX,J/UP4PX ;CHECK FOR LAST TRANSFER 170 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 171 | =0 172 | UP4PX: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 173 | MEM_AR,ARX_ARX+1, ;STORE DST, 174 | SR_BLT(PXCT SRC),RETURN2 ; CONTINUE 175 | .ENDIF/BLT.PXCT 176 | -------------------------------------------------------------------------------- /kl10/its/byte.5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/byte.5 -------------------------------------------------------------------------------- /kl10/its/crap.(init): -------------------------------------------------------------------------------- 1 | :MICRO UCODE;UCRAP=UCODE;ITS,LITHP,MUZAK,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT,LISP,MUSIC 2 | -------------------------------------------------------------------------------- /kl10/its/diaga.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR MODEL A DIAGNOSTIC MICRO-CODE 2 | .SET/SXCT=1 3 | .SET/DIAG.INST=1 4 | -------------------------------------------------------------------------------- /kl10/its/diagb.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR MODEL B DIAGNOSTIC MICRO-CODE 2 | .SET/MODEL.B=1 3 | .SET/DIAG.INST=1 4 | .SET/MOS=1 5 | -------------------------------------------------------------------------------- /kl10/its/diagbk.modelb: -------------------------------------------------------------------------------- 1 | .TOC "BLOCK OF RESERVED MICRO LOCS FOR DIAG INSTRS" 2 | 3 | ;RESERVE A BLOCK OF MICRO-CODE LOCATIONS FOR DIAGNOSTIC 4 | ;OVERLAY USAGE..SAME BLOCKS IN BOTH MODEL A AND MODEL B 5 | ;MICRO-CODES..THIS BLOCK SELECTION CURRENTLY REQUIRES 6 | ;THAT NO "NORMAL" PDP10 INSTRUCTIONS BE ELIMINATED FROM 7 | ;THIS RUNNING VERSION OF THE MICRO-CODE.. 8 | 9 | 2340: 10 | DIAGINSTR: J/UUO 11 | 2341: J/UUO 12 | 2342: J/UUO 13 | 2343: J/UUO 14 | 2344: J/UUO 15 | 2345: J/UUO 16 | 2346: J/UUO 17 | 2347: J/UUO 18 | 2350: J/UUO 19 | 2351: J/UUO 20 | 2352: J/UUO 21 | 2353: J/UUO 22 | 2354: J/UUO 23 | 2355: J/UUO 24 | 2356: J/UUO 25 | 2357: J/UUO 26 | 2360: J/UUO 27 | 2361: J/UUO 28 | 2362: J/UUO 29 | 2363: J/UUO 30 | 2364: J/UUO 31 | 2365: J/UUO 32 | 2366: J/UUO 33 | 2367: J/UUO 34 | 2370: J/UUO 35 | 2371: J/UUO 36 | 2372: J/UUO 37 | 2373: J/UUO 38 | 2374: J/UUO 39 | 2375: J/UUO 40 | 2376: J/UUO 41 | -------------------------------------------------------------------------------- /kl10/its/eis.6: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/eis.6 -------------------------------------------------------------------------------- /kl10/its/ewe.(init): -------------------------------------------------------------------------------- 1 | :MICRO UCODE;U1=UCODE;ITS,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT 2 | :UCNVRT UCODE;U1 MCR 3 | :RENAME UCODE;U1 RAM,EWE 4 | :KLFEDR WRITE UCODE;EWE RAM 5 | :DELETE UCODE;EWE RAM 6 | -------------------------------------------------------------------------------- /kl10/its/ewe.1: -------------------------------------------------------------------------------- 1 | :MICRO UCODE;U1=UCODE;ITS,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT,LISP,MUSIC 2 | :UCNVRT UCODE;U1 MCR 3 | :RENAME UCODE;U1 RAM,EWE 4 | :KLFEDR WRITE UCODE;EWE RAM 5 | :DELETE UCODE;EWE RAM 6 | -------------------------------------------------------------------------------- /kl10/its/ewegls.(init): -------------------------------------------------------------------------------- 1 | :MICRO UCODE;U43=UCODE;ITS,DEFINE,MACRO,BASGLS,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT 2 | :UCNVRT UCODE;U43 MCR 3 | :RENAME UCODE;U43 RAM,EWEGLS 4 | :KLFEDR WRITE UCODE;EWEGLS RAM 5 | :DELETE UCODE;EWEGLS RAM 6 | -------------------------------------------------------------------------------- /kl10/its/ewej.(init): -------------------------------------------------------------------------------- 1 | :MICRO UCODE;U1=UCODE;ITS,JPC,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT 2 | :UCNVRT UCODE;U1 MCR 3 | :RENAME UCODE;U1 RAM,EWE 4 | :KLFEDR WRITE UCODE;EWE RAM 5 | :DELETE UCODE;EWE RAM 6 | -------------------------------------------------------------------------------- /kl10/its/ewej.1: -------------------------------------------------------------------------------- 1 | :MICRO UCODE;U1=UCODE;ITS,JPC,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT,LISP,MUSIC 2 | :UCNVRT UCODE;U1 MCR 3 | :RENAME UCODE;U1 RAM,EWE 4 | :KLFEDR WRITE UCODE;EWE RAM 5 | :DELETE UCODE;EWE RAM 6 | -------------------------------------------------------------------------------- /kl10/its/fp.5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/fp.5 -------------------------------------------------------------------------------- /kl10/its/its.5: -------------------------------------------------------------------------------- 1 | .TOC "MICROCODE CONDITIONAL ASSEMBLY PARAMETERS FOR ITS" 2 | 3 | .SET/ITSPAGE=1 ;ITS-STYLE PAGING 4 | .SET/MAP=0 ;NO MAP INSTRUCTION 5 | .SET/PFAIL.PIHACK=1 ;PI OFF ON PAGE FAILURE 6 | .SET/JRSTON=1 ;JRST 17, TURNS ON PI THEN DOES JRST 2, 7 | .SET/LPM.SPM=1 ;LPMR AND SPM INSTRUCTIONS 8 | .SET/XCTR=1 ;XCTR INSTRUCTIONS (PXCT AND PXCTI) 9 | .SET/EIS=0 ;NO STRING STUFF FOR NOW 10 | .SET/DECIMAL=0 ;NO DECIMAL STUFF FOR NOW 11 | .SET/CIRC=1 ;WINNING CIRC INSTRUCTION 12 | .SET/MVSQZ=0 ;RANDOM MVSQZ INSTRUCTION 13 | .SET/KLPAGE=1 ;U CODE CONTROLS PAGE REFILLS 14 | -------------------------------------------------------------------------------- /kl10/its/its.7: -------------------------------------------------------------------------------- 1 | .TOC "MICROCODE CONDITIONAL ASSEMBLY PARAMETERS FOR ITS" 2 | 3 | .SET/ITSPAGE=1 ;ITS-STYLE PAGING 4 | .SET/MAP=0 ;NO MAP INSTRUCTION 5 | .SET/PFAIL.PIHACK=1 ;PI OFF ON PAGE FAILURE 6 | .SET/JRSTON=1 ;JRST 17, TURNS ON PI THEN DOES JRST 2, 7 | .SET/LPM.SPM=1 ;LPMR AND SPM INSTRUCTIONS 8 | .SET/XCTR=1 ;XCTR INSTRUCTIONS (PXCT AND PXCTI) 9 | .SET/EIS=0 ;NO STRING STUFF FOR NOW 10 | .SET/DECIMAL=0 ;NO DECIMAL STUFF FOR NOW 11 | .SET/CIRC=1 ;WINNING CIRC INSTRUCTION 12 | .SET/MVSQZ=0 ;RANDOM MVSQZ INSTRUCTION 13 | .SET/KLPAGE=1 ;U CODE CONTROLS PAGE REFILLS 14 | -------------------------------------------------------------------------------- /kl10/its/its.9: -------------------------------------------------------------------------------- 1 | .TOC "MICROCODE CONDITIONAL ASSEMBLY PARAMETERS FOR ITS" 2 | 3 | .SET/ITSPAGE=1 ;ITS-STYLE PAGING 4 | .SET/MAP=0 ;NO MAP INSTRUCTION 5 | .SET/PFAIL.PIHACK=1 ;PI OFF ON PAGE FAILURE 6 | .SET/JRSTON=1 ;JRST 17, TURNS ON PI THEN DOES JRST 2, 7 | .SET/LPM.SPM=1 ;LPMR AND SPM INSTRUCTIONS 8 | .SET/XCTR=1 ;XCTR INSTRUCTIONS (PXCT AND PXCTI) 9 | .SET/EIS=0 ;NO STRING STUFF FOR NOW 10 | .SET/DECIMAL=0 ;NO DECIMAL STUFF FOR NOW 11 | .SET/CIRC=1 ;WINNING CIRC INSTRUCTION 12 | .SET/MVSQZ=0 ;RANDOM MVSQZ INSTRUCTION 13 | .SET/KLPAGE=1 ;U CODE CONTROLS PAGE REFILLS 14 | .SET/NXT.INSTR.BITES=0 ;FIXED IN REV 9? 15 | -------------------------------------------------------------------------------- /kl10/its/jpc.2: -------------------------------------------------------------------------------- 1 | .TOC "PARAMETER FILE FOR SINGLE JPC FEATURE" 2 | 3 | .SET/JPC.RING=0 4 | .SET/JPC=1 5 | -------------------------------------------------------------------------------- /kl10/its/jpc.3: -------------------------------------------------------------------------------- 1 | .TOC "PARAMETER FILE FOR SINGLE JPC FEATURE" 2 | 3 | .SET/JPC.RING=0 4 | .SET/JPC=1 5 | .SET/NXT.INSTR.BITES=0 ;CAN'T RUN WITH THIS=1, HAS PF GTR 6 TICKS LOSSAGE 6 | -------------------------------------------------------------------------------- /kl10/its/jpc.4: -------------------------------------------------------------------------------- 1 | .TOC "PARAMETER FILE FOR SINGLE JPC FEATURE" 2 | 3 | .SET/JPC.RING=0 4 | .SET/JPC=1 5 | ;.SET/NXT.INSTR.BITES=0 ;CAN'T RUN WITH THIS=1, HAS PF GTR 6 TICKS LOSSAGE 6 | ;ABOVE COMMENTED OUT SINCE IT IS NOW THE DEFAULT AND PROVOKES A CRUFTY WARNING 7 | -------------------------------------------------------------------------------- /kl10/its/jpcr.3: -------------------------------------------------------------------------------- 1 | .TOC "PARAMETER FILE FOR RING OF 16 JPC'S FEATURE" 2 | 3 | .SET/JPC.RING=1 4 | .SET/JPC=1 5 | -------------------------------------------------------------------------------- /kl10/its/jpctst.2: -------------------------------------------------------------------------------- 1 | .TOC "PARAMETER FILE FOR TESTING SINGLE JPC FEATURE" 2 | 3 | .SET/JPC TEST=1 4 | -------------------------------------------------------------------------------- /kl10/its/kla.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 20-SERIES MICROCODE 2 | 3 | .SET/KLPAGE=1 4 | .SET/FPLONG=0 5 | -------------------------------------------------------------------------------- /kl10/its/klb.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 20-SERIES MICROCODE 2 | ;MODEL B MACHINE 3 | 4 | .SET/SNORM.OPT=1 5 | .SET/IMULI.OPT=1 6 | .SET/MODEL.B=1 7 | .SET/KLPAGE=1 8 | .SET/FPLONG=0 9 | .SET/XADDR=0 10 | .SET/BLT.PXCT=1 11 | -------------------------------------------------------------------------------- /kl10/its/kll.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 20-SERIES MICROCODE 2 | ;FOR LONG PC FORMAT MONITORS MODEL A MACHINES INCLUDING AND AFTER RELEASE 3 3 | 4 | .SET/KLPAGE=1 5 | .SET/FPLONG=0 6 | .SET/LONG.PC=1 7 | .SET/SHIFT.MUUO=1 8 | .SET/EPT540=1 9 | -------------------------------------------------------------------------------- /kl10/its/klx.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 20-SERIES MICROCODE 2 | ;MODEL B MACHINE EXTENDED ADRESSING 3 | 4 | .SET/SNORM.OPT=1 5 | .SET/XADDR=1 6 | .SET/EPT540=1 7 | .SET/LONG.PC=1 8 | .SET/MODEL.B=1 9 | .SET/KLPAGE=1 10 | .SET/FPLONG=0 11 | .SET/BLT.PXCT=1 12 | -------------------------------------------------------------------------------- /kl10/its/lisp.(init): -------------------------------------------------------------------------------- 1 | :MICRO UCODE;ULISP=UCODE;ITS,LITHP,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT,LISP 2 | -------------------------------------------------------------------------------- /kl10/its/lisp.14: -------------------------------------------------------------------------------- 1 | .TOC "LISP INSTRUCTIONS" 2 | 3 | ;;; MARK: LSPGCM A,FOO 4 | ;;; LISP GARBAGE COLLECTION MARK INSTRUCTION. 5 | ;;; IF THE GCSTBR IS NOT SET UP, BEHAVES AS A UUO (OPCODE 070). 6 | ;;; OTHERWISE, MARKS THE ITEM IN A IF POSSIBLE, THEN RETURNS 7 | ;;; TO ONE OF SEVERAL PLACES: 8 | ;;; MARK-1 BOTH CAR AND CDR NEED MARKING (CAR IN A, CDR IN A+1) 9 | ;;; MARK ONE OF CAR OR CDR NEED MARKING (ITEM IN A) 10 | ;;; MARK+1 ITEM ALREADY MARKED, OR NOT MARKABLE 11 | ;;; FOO+N BIT 4.<8-N> WAS SET IN THE GCST TABLE ENTRY, 12 | ;;; INDICATING SOMETHING FUNNY LIKE A SYMBOL OR A SAR. 13 | 14 | ;TO HELP SEE WHAT'S GOING ON, ;AR ARX BR BRX MQ 15 | ; REGISTER CONTENTS AFTER EACH STEP ARE SHOWN ;------ ------- ------- ------- ------- 16 | 17 | =0 18 | LGCM0: AR_BR,J/UUO ;GCSTBR NOT SET UP => UUO 19 | SC_#,#/44-SEGLOG,BR/AR,ARX_AC0,AR_0.C ;0 ITEM GCSTBR EFFADR 20 | ARX_SHIFT,AR_ARX (AD) ;ITEM SEG# GCSTBR EFFADR 21 | VMA_ARX+BR,LOAD ARX,AR_SHIFT ;WD#_33 -LOAD- EFFADR 22 | SC_AR0-8 AND #,#/37,BR/AR,AR_0.C ;0 -LOAD- WD#_33 EFFADR 23 | ARX_MEM,AR0-8_#,#/400 ;0 TBLENT WD#_33 EFFADR 24 | SKP ARX0,SC_#-SC,#/5,BRX/ARX ;SETZ TBLENT WD#_33 TBLENT EFFADR 25 | =0 I FETCH,J/NOP ;NOT MARKABLE => NEXT INSTRUCTION 26 | AR_ARX (AD),ARX_AR ;TBLENT SETZ WD#_33 TBLENT EFFADR 27 | AR_0S,FE_AR0-8 AND #, 28 | #/200,SKP SCAD NE ;0 SETZ WD#_33 TBLENT EFFADR 29 | ;HERE FOR MARKABLE NON-FUNNY THINGS 30 | =0 MQ_SHIFT,AR_BRX,ARX_BR, 31 | SC_#,#/SEGLOG-5,J/LGCM1 ;TBLENT WD#_33 TBLENT MARKBIT 32 | ;HERE FOR MARKABLE FUNNY THINGS (SYMBOLS, ETC.) 33 | VMA_MQ 34 | LGCM3: GEN FE AND #,#/7,SKP SCAD NE ;LOOP TO GENERATE EFFADR+N 35 | =0 FETCH,J/NOP 36 | VMA_VMA+1,FE_FE-1,J/LGCM3 37 | 38 | LGCM1: ARX_SHIFT,AR_MQ ;MARKBIT BITSADR TBLENT 39 | BR/AR,VMA_ARX,LOAD AR ;-LOAD- MARKBIT TBLENT 40 | AR_MEM ;BITS MARKBIT TBLENT 41 | AD/ANDCA,ADA/AR,ADB/BR,SKP AD NE 42 | =0 I FETCH,J/NOP ;ALREADY MARKED 43 | AR_AR*BR,AD/ANDCB,STORE ;BITS\MARKBIT TBLENT 44 | MEM_AR,AR_BRX ;TBLENT 45 | GEN # AND AR0-8,#/GCBCDR,SKP SCAD NE 46 | =0 I FETCH,J/NOP ;DON'T MARK THROUGH 47 | VMA_AC0,LOAD ARX ;TBLENT -LOAD- 48 | ARX_MEM,VMA/PC,GEN # AND AR0-8, 49 | #/GCBCAR,SKP SCAD NE ; CARCDR 50 | =0 ARL_0.S,ARR_ARXR,J/LGCM2 ;ONLY MARK CDR 51 | ARL_0.S,ARR_ARXR,VMA_VMA-1 ;0,,CDR CARCDR 52 | ARX_AR (AD),SKP AD NE,ARR_0.S,ARL_ARXL ;0,,CAR 0,,CDR 53 | =0 REFETCH,AR_AR SWAP,J/STAC ;CDR IS NIL => MARK ONLY CAR 54 | ARX_AR (AD),SKP AD NE,AR_ARX ;0,,CDR 0,,CAR 55 | =0 56 | LGCM2: REFETCH,J/STAC ;CAR IS NIL => MARK ONLY CDR 57 | AC1_AR,AR_ARX 58 | AR_AR SWAP,FETCH,J/STAC ;CDR IN AC1, CAR IN AC0, RET TO INST-1 59 | 60 | ;;; SWEEP: LSPGCS A,N 61 | ;;; LISP GARBAGE COLLECTION SWEEP INSTRUCTION. 62 | ;;; IF THE GCSTBR IS NOT SET UP, BEHAVES AS A UUO (OPCODE 071). 63 | ;;; OTHERWISE, SWEEPS UP A SECTION OF MEMORY. 64 | ;;; A/ AOBJN POINTER TO REGION OF MEMORY TO SWEEP: <# CELLS>,, 65 | ;;; THE CELLS ARE N WORDS LONG. 66 | ;;; A+1/ POINTER TO NEXT WORD OF MARK BITS TO USE. A BIT=0 => MARKED. 67 | ;;; A+2/ FREELIST (TO BE ADDED TO THE FRONT OF). 68 | ;;; A+3/ COUNT OF RECLAIMED CELLS, TO BE INCREMENTED. 69 | ;;; THE INSTRUCTION OPERATES IN GROUPS OF 40 WORDS (ONE WORD OF MARK BITS). 70 | ;;; IT CHECKS FOR INTERRUPTS ONLY THAT OFTEN, AFTER CHECKPOINTING ITSELF 71 | ;;; BACK INTO THE FOUR AC'S. IF A PAGE FAULT OR OTHER MEMORY ERROR OCCURS, 72 | ;;; IT WILL RESTART CORRECTLY AT THE BEGINNING OF THE GROUP OF 40 WORDS. 73 | 74 | =0 75 | LGCS0: AR_BR,J/UUO ;MAYBE CRAP OUT AS UUO 76 | AR_BR+1000000 ;BR GETS 1,,N (FOR BUMPING AOBJN PTR) 77 | ARX_AC2,BR/AR ;WE STANDARDLY KEEP THE FREELIST IN BRX, 78 | BRX/ARX,VMA_AC1,LOAD ARX ; THE AOBJN PTR IN ARX, THE COUNT IN MQ, 79 | AR_AC3,FE_SC ; AND THE MARK BITS POINTED TO BY AC1 80 | MQ_AR,CLR AR,SC_#,#/40,J/LGCS1 ; IN AR (CONSTANTLY SHIFTED OVER). 81 | 82 | =010 83 | LGCS7: NXT INSTR ;DONE, NO INTERRUPT 84 | NXT INSTR ;DONE, INTERRUPT PENDING 85 | LGCS1: ARX_MEM,J/LGCS6 ;NOT DONE, NO INTERRUPT 86 | FIN XFER,REFETCH,J/NOP ;NOT DONE, INTERRUPT PENDING 87 | = 88 | 89 | LGCS6: AR_SHIFT,ARX_AR (AD),SC_#,#/4 90 | ARX_AC0,AR_SHIFT,SH DISP,SC_#,#/-40,J/LGCS3 91 | 92 | =0**0 93 | LGCS2: AR_AC1+1,VMA/AD,SKP ARX0,J/LGCS4 94 | LGCS3: AR_SHIFT,SH DISP,SC_FE+SC,SKP SCAD0,ARX_ARX+BR,J/LGCS2 95 | AR_AC1+1,VMA/AD,SKP ARX0,J/LGCS4 96 | AR_ARX (AD),ARX_AR 97 | = AR_BR,BR/AR 98 | AR_BRX,ARX_BR,VMA_BR,BR/AR,BRX/ARX,STORE 99 | MEM_AR,AR_MQ+1 100 | MQ_AR,AR_BRX,BRX/ARX,J/LGCS3 101 | 102 | =0 103 | LGCS4: I FETCH,AC1_AR,AR_MQ,MQ_ARX,J/LGCS5 104 | LOAD ARX,AC1_AR,AR_MQ,MQ_ARX 105 | LGCS5: AC3_AR,AR_BRX 106 | AC2_AR,AR_MQ 107 | AC0_AR 108 | AD/0S,SIGNS DISP,SKP INTRPT,J/LGCS7 109 | -------------------------------------------------------------------------------- /kl10/its/lisp.18: -------------------------------------------------------------------------------- 1 | .TOC "LISP INSTRUCTIONS" 2 | 3 | .IF/LISP 4 | ;;; MARK: LSPGCM A,FOO 5 | ;;; LISP GARBAGE COLLECTION MARK INSTRUCTION. 6 | ;;; IF THE GCSTBR IS NOT SET UP, BEHAVES AS A UUO (OPCODE 070). 7 | ;;; OTHERWISE, MARKS THE ITEM IN A IF POSSIBLE, THEN RETURNS 8 | ;;; TO ONE OF SEVERAL PLACES: 9 | ;;; MARK-1 BOTH CAR AND CDR NEED MARKING (CAR IN A, CDR IN A+1) 10 | ;;; MARK ONE OF CAR OR CDR NEED MARKING (ITEM IN A) 11 | ;;; MARK+1 ITEM ALREADY MARKED, OR NOT MARKABLE 12 | ;;; FOO+N BIT 4.8 WAS SET IN GCST TABLE (N=BITS 4.3-4.1), 13 | ;;; INDICATING SOMETHING FUNNY LIKE A SYMBOL OR A SAR. 14 | 15 | ;TO HELP SEE WHAT'S GOING ON, ;AR ARX BR BRX MQ 16 | ; REGISTER CONTENTS AFTER EACH STEP ARE SHOWN ;------ ------- ------- ------- ------- 17 | 18 | ;LSPGCM: BR/AR,MQ_AR,AR_GCSTBR,SKP AD NE,J/LGCM0 ;START OF GC MARK INSTR 19 | =0 20 | LGCM0: AR_BR,J/UUO ;GCSTBR NOT SET UP => UUO 21 | SC_#,#/44-SEGLOG,BR/AR,ARX_AC0,AR_0.C ;0 ITEM GCSTBR EFFADR 22 | ARX_SHIFT,AR_ARX (AD) ;ITEM SEG# GCSTBR EFFADR 23 | VMA_ARX+BR,LOAD ARX,AR_SHIFT ;WD#_33 -LOAD- EFFADR 24 | SC_AR0-8 AND #,#/37,BR/AR,AR_0.C ;0 -LOAD- WD#_33 EFFADR 25 | ARX_MEM,AR0-8_#,#/400 ;SETZ TBLENT WD#_33 EFFADR 26 | SKP ARX0,SC_#-SC,#/44,BRX/ARX ;SETZ TBLENT WD#_33 TBLENT EFFADR 27 | =0 I FETCH,J/NOP ;NOT MARKABLE => NEXT INSTRUCTION 28 | AR_ARX (AD),ARX_AR ;TBLENT SETZ WD#_33 TBLENT EFFADR 29 | AR_0S,FE_AR0-8 AND #, 30 | #/207,SKP SCAD NE ;0 SETZ WD#_33 TBLENT EFFADR 31 | ;HERE FOR MARKABLE NON-FUNNY THINGS 32 | =0 MQ_SHIFT,AR_BRX,ARX_BR, 33 | SC_#,#/SEGLOG-5,J/LGCM1 ;TBLENT WD#_33 TBLENT MARKBIT 34 | ;HERE FOR MARKABLE FUNNY THINGS (SYMBOLS, ETC.) 35 | VMA_MQ,FE_FE-#,#/201,BYTE DISP 36 | =110 37 | LGCM3: VMA_VMA+1,FE_FE-1,BYTE DISP,J/LGCM3 ;LOOP TO GENERATE EFFADR+N 38 | FETCH,J/NOP 39 | 40 | LGCM1: ARX_SHIFT,AR_MQ ;MARKBIT BITSADR TBLENT 41 | BR/AR,VMA_ARX,LOAD AR ;-LOAD- MARKBIT TBLENT 42 | AR_MEM ;BITS MARKBIT TBLENT 43 | AD/AND,ADA/AR,ADB/BR,SKP AD NE 44 | =0 I FETCH,J/NOP ;ALREADY MARKED 45 | AR_AR*BR,AD/ANDCB,STORE ;BITS\MARKBIT TBLENT 46 | MEM_AR,AR_BRX ;TBLENT 47 | GEN # AND AR0-8,#/GCBCDR,SKP SCAD NE 48 | =0 I FETCH,J/NOP ;DON'T MARK THROUGH 49 | VMA_AC0,LOAD ARX ;TBLENT -LOAD- 50 | ARX_MEM,VMA/PC,GEN # AND AR0-8, 51 | #/GCBCAR,SKP SCAD NE ; CARCDR 52 | =0 ARL_0.S,ARR_ARXR,J/LGCM2 ;ONLY MARK CDR 53 | ARL_0.S,ARR_ARXR,VMA_VMA-1 ;0,,CDR CARCDR 54 | ARX_AR (AD),SKP AD NE,ARR_0.S,ARL_ARXL ;0,,CAR 0,,CDR 55 | =0 REFETCH,AR_AR SWAP,J/STAC ;CDR IS NIL => MARK ONLY CAR 56 | ARX_AR (AD),SKP AD NE,AR_ARX ;0,,CDR 0,,CAR 57 | =0 58 | LGCM2: REFETCH,J/STAC ;CAR IS NIL => MARK ONLY CDR 59 | AC1_AR,AR_ARX 60 | AR_AR SWAP,FETCH,J/STAC ;CDR IN AC1, CAR IN AC0, RET TO INST-1 61 | 62 | ;;; SWEEP: LSPGCS A,N 63 | ;;; LISP GARBAGE COLLECTION SWEEP INSTRUCTION. 64 | ;;; IF THE GCSTBR IS NOT SET UP, BEHAVES AS A UUO (OPCODE 071). 65 | ;;; OTHERWISE, SWEEPS UP A SECTION OF MEMORY. 66 | ;;; A/ AOBJN POINTER TO REGION OF MEMORY TO SWEEP: <# CELLS>,, 67 | ;;; THE CELLS ARE N WORDS LONG. 68 | ;;; A+1/ POINTER TO NEXT WORD OF MARK BITS TO USE. A BIT=0 => MARKED. 69 | ;;; A+2/ FREELIST (TO BE ADDED TO THE FRONT OF). 70 | ;;; A+3/ COUNT OF RECLAIMED CELLS, TO BE INCREMENTED. 71 | ;;; THE INSTRUCTION OPERATES IN GROUPS OF 40 WORDS (ONE WORD OF MARK BITS). 72 | ;;; IT CHECKS FOR INTERRUPTS ONLY THAT OFTEN, AFTER CHECKPOINTING ITSELF 73 | ;;; BACK INTO THE FOUR AC'S. IF A PAGE FAULT OR OTHER MEMORY ERROR OCCURS, 74 | ;;; IT WILL RESTART CORRECTLY AT THE BEGINNING OF THE GROUP OF 40 WORDS. 75 | 76 | 77 | ;LSPGCS: BR/AR,SC_EA,AR_GCSTBR,SKP AD NE,J/LGCS0 ;START OF GC SWEEP INSTR 78 | 79 | =0 80 | LGCS0: AR_BR,J/UUO ;MAYBE CRAP OUT AS UUO 81 | AR_BR+1000000 ;BR GETS 1,,N (FOR BUMPING AOBJN PTR) 82 | ARX_AC2,BR/AR ;WE STANDARDLY KEEP THE FREELIST IN BRX, 83 | BRX/ARX,VMA_AC1,LOAD ARX ; THE AOBJN PTR IN ARX, THE COUNT IN MQ, 84 | AR_AC3,FE_SC ; AND THE MARK BITS POINTED TO BY AC1 85 | MQ_AR,CLR AR,SC_#,#/40,J/LGCS1 ; IN AR (CONSTANTLY SHIFTED OVER). 86 | 87 | =010 88 | LGCS7: NXT INSTR ;DONE, NO INTERRUPT 89 | NXT INSTR ;DONE, INTERRUPT PENDING 90 | LGCS1: ARX_MEM,J/LGCS6 ;NOT DONE, NO INTERRUPT 91 | FIN XFER,REFETCH,J/NOP ;NOT DONE, INTERRUPT PENDING 92 | = 93 | 94 | LGCS6: AR_SHIFT,ARX_AR (AD),SC_#,#/4 95 | ARX_AC0,AR_SHIFT,SH DISP,SC_#,#/-40,J/LGCS3 96 | 97 | =0**0 98 | LGCS2: AR_AC1+1,VMA/AD,SKP ARX0,J/LGCS4 99 | LGCS3: AR_SHIFT,SH DISP,SC_FE+SC,SKP SCAD0,ARX_ARX+BR,J/LGCS2 100 | AR_AC1+1,VMA/AD,SKP ARX0,J/LGCS4 101 | AR_ARX (AD),ARX_AR 102 | = AR_BR,BR/AR 103 | AR_BRX,ARX_BR,VMA_BR,BR/AR,BRX/ARX,STORE 104 | MEM_AR,AR_MQ+1 105 | MQ_AR,AR_BRX,BRX/ARX,J/LGCS3 106 | 107 | =0 108 | LGCS4: I FETCH,AC1_AR,AR_MQ,MQ_ARX,J/LGCS5 109 | LOAD ARX,AC1_AR,AR_MQ,MQ_ARX 110 | LGCS5: AC3_AR,AR_BRX 111 | AC2_AR,AR_MQ 112 | AC0_AR 113 | AD/0S,SIGNS DISP,SKP INTRPT,J/LGCS7 114 | 115 | .ENDIF/LISP 116 | 117 | .TOC "LISP DEBUGGING INSTRUCTION" 118 | 119 | ;;; LSPDBG A, 120 | ;;; PUTS STBR IN A, GCSTBR IN A+1 121 | 122 | ;LSPDBG: AR_GCSTBR,J/LSPDB1 123 | 124 | LSPDB1: AC1_AR,I FETCH 125 | AR_STBR,J/STAC 126 | -------------------------------------------------------------------------------- /kl10/its/lithp.2: -------------------------------------------------------------------------------- 1 | .TOC "PARAMETER FILE FOR LISP MICROCODE" 2 | 3 | .SET/LISP=1 4 | -------------------------------------------------------------------------------- /kl10/its/macro.42: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/macro.42 -------------------------------------------------------------------------------- /kl10/its/music.(init): -------------------------------------------------------------------------------- 1 | :MICRO UCODE;UMUSIC=UCODE;ITS,MUZAK,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT,MUSIC 2 | -------------------------------------------------------------------------------- /kl10/its/muzak.2: -------------------------------------------------------------------------------- 1 | .TOC "PARAMETER FILE FOR MUSIC MICROCODE" 2 | 3 | .SET/MUSIC=1 4 | -------------------------------------------------------------------------------- /kl10/its/shift.5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/shift.5 -------------------------------------------------------------------------------- /kl10/its/shift.6: -------------------------------------------------------------------------------- 1 | .TOC "ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO" 2 | 3 | .DCODE 4 | 240: I, B/0, J/ASH 5 | I, B/0, J/ROT 6 | I, B/2, J/LSH 7 | I, J/JFFO 8 | I, B/1, J/ASHC 9 | I, J/ROTC 10 | I, J/LSHC 11 | .IFNOT/CIRC 12 | I, J/UUO 13 | .IF/CIRC 14 | I, J/CIRC 15 | .ENDIF/CIRC 16 | .UCODE 17 | 18 | ;ENTER WITH 0,E IN AR 19 | ; NOTE THAT VALUES OF SC GREATER THAN 36 20 | ; CAUSE THE SHIFTER TO SELECT ARX. 21 | 22 | =00***0 23 | LSH: AR_AC0,ARL/AD,ARX_0.M,SC_EA, 24 | SKP AR18,J/SHR1 25 | 26 | JFFO: AR_AC0,SKP AD NE,SC_#,#/6 27 | = 28 | =0 AC1_AR,I FETCH,J/NOP ;AC WAS ZERO, NO JUMP 29 | ARX+MQ_0.M,FE_P,SKP SCAD NE, ;TEST FIRST 6 BITS 30 | AR_SHIFT,ARL/SH ;DISCARD THEM 31 | =1****0 32 | JFFO1: AR_SHIFT,FE_P,SKP SCAD NE, ;TEST NEXT 6 BITS 33 | ARX_ARX-1,J/JFFO1 ;LOOP, COUNTING, TILL NE 34 | P_FE,ARR_0.S, ;RESTORE 6 NON-ZERO BITS 35 | ARX_ARX*-6 ;GET POS GROUP COUNT*6 36 | =*1***0 37 | JFFO2: SKP AR0,AR_2(AR+1), ;LOOP TO FIND A 1 38 | ARX_ARX+1,J/JFFO2 ;COUNTING AS WE GO 39 | .IFNOT/JPC 40 | AR_ARX-1,FETCH,J/STRAC1 41 | .IF/JPC 42 | AR_ARX-1,FETCH,SKP USER 43 | =0 AC1_AR,AR_PC,SC_#,#/32.,J/JPCEX 44 | AC1_AR,AR_PC,SC_#,#/32.,J/JPCUSR 45 | .ENDIF/JPC 46 | 47 | =00***0 48 | ASH: SC_EA,SKP AR18, ;GET SHIFT AMOUNT 49 | AR_0S,J/ASHL ;SET LOW PART = 0 50 | ROT: AR_AC0,ARX_AC0,SC_EA,SKP AR18 51 | = 52 | ;SINGLE-WORD LSH/ROT 53 | ; FOR ROT, B=0, AR AND ARX BOTH CONTAIN AC 54 | ; FOR LSH, B=2, AR HAS AC, ARX IS ZERO 55 | 56 | =00 57 | SHR1: AR_SHIFT,SC_#+SC,#/-36., ;DO POS (LEFT) SHIFT, CHK RANGE 58 | SKP SCAD0,J/SHR2 59 | ARX_AR (AD),AR_ARX (ADX), 60 | SC_#+SC,#/36., 61 | B DISP,SKP SCAD0,J/SHR1 ;MAKE NEG SHIFT TO EQUIV POS 62 | SHR2: AR_SHIFT,SC_#+SC,#/-36., 63 | SKP SCAD0,J/SHR2 ;BRING SC INTO RANGE 64 | AC0_AR,I FETCH,J/NOP ;DONE 65 | .TOC "ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC" 66 | 67 | =00***0 68 | ASHC: SC_EA,SKP AR18, ;SETUP SHIFT COUNT 69 | AR_AC1*2,J/ASHL ;GET LOW WORD 70 | ROTC: ARX_AC1 71 | = AR_AC0,SC_EA,SKP AR18 ;SETUP BOTH AC'S 72 | =1****0 73 | ROT3: MQ_SHIFT,ARX_AR (AD), 74 | AR_ARX (ADX),J/ROT4 75 | ARX_AR (AD),AR_ARX (ADX), 76 | SC_#+SC,#/36.,SKP SCAD0,J/ROT3 77 | 78 | ROT4: AR_MQ,ARX_SHIFT, 79 | SC_#+SC,#/-36.,SKP SCAD0 80 | =0 MQ_SHIFT,ARX_AR (AD), 81 | AR_ARX (ADX),J/ROT4 82 | STDAC: AC0_AR,AR_ARX,I FETCH,J/STRAC1 83 | 84 | 85 | .IFNOT/CIRC 86 | 1004: ;NEXT TO UUO 87 | .IF/CIRC 88 | =00**00 89 | .ENDIF/CIRC 90 | LSHC: ARX_AC1,MQ_0.M,J/LSHC1 91 | .IF/CIRC 92 | =01 93 | CIRC: MQ_AR,AR_AC1,FE_#,SC_#,#/35.,CLR ARX,CALL,J/WDREV 94 | =11 SC_EA,AR_AC0,SKP AR18,J/CIRC3 95 | .ENDIF/CIRC 96 | = 97 | LSHC1: AR_AC0,SC_EA,FE_#,#/36.,SKP AR18 98 | =*1***0 99 | LSH2: MQ_SHIFT,AR_ARX (ADX), 100 | ARX/MQ,FE_#,#/-36.,J/LSH3 101 | ARX_AR (AD),AR_0.M,MQ_ARX, 102 | SC_FE+SC,SKP SCAD0,J/LSH2 103 | 104 | LSH3: AR_MQ,ARL/AD,ARX_SHIFT,MQ_0.M, 105 | SC_FE+SC,SKP SCAD0 106 | =0 MQ_SHIFT,AR_ARX (ADX),ARX/MQ,J/LSH3 107 | AC0_AR,AR_ARX,I FETCH,J/STRAC1 108 | .TOC "CIRC INSTRUCTION" 109 | 110 | .IF/CIRC 111 | =1****0 112 | CIRC3: MQ_SHIFT,ARX_AR (AD),AR_ARX (ADX),J/CIRC4 113 | ARX_AR (AD),AR_ARX (ADX),SC_#+SC,#/36.,SKP SCAD0,J/CIRC3 114 | 115 | CIRC4: AR_MQ,ARX_SHIFT,SC_#+SC,#/-36.,SKP SCAD0 116 | =1***00 117 | MQ_SHIFT,ARX_AR (AD),AR_ARX (ADX),J/CIRC4 118 | AC0_AR,AR_ARX,FE_#,SC_#,#/35.,ARX_0S,CALL,J/WDREV 119 | =11 AR_ARX,CLR SC,I FETCH,J/STD1 120 | 121 | 122 | ;SUBROUTINE TO REVERSE A WORD IN AR, RETURNING IT IN ARX. 123 | ;ON ENTRY, ARX MUST BE CLEAR, AND SC AND FE MUST BOTH CONTAIN 35. 124 | ;ON EXIT, MQ IS COPIED INTO AR. 125 | 126 | .IFNOT/CIRC.BIG.OPT 127 | =*1***0 128 | WDREV: BRX/ARX,SH DISP,J/WDREV1 129 | AR_MQ,RETURN2 130 | =1*0111 131 | WDREV1: FE_FE-1,SC/SCAD,SKP SCAD0,ARX_BRX*2,J/WDREV 132 | FE_FE-1,SC/SCAD,SKP SCAD0,ARX_BRX*2+1,J/WDREV 133 | .IF/CIRC.BIG.OPT 134 | =1****0 135 | WDREV: SH DISP,BR/AR,AR_ARX (ADX),SC_#,#/32.,J/WDREV1 136 | AR_MQ,RETURN2 137 | 138 | =1*0000 139 | WDREV1: AR_BR,ARX_SHIFT,FE_FE-#,#/4,SC/SCAD,SKP SCAD0,J/WDREV 140 | AR_SHIFT,SC_#,#/10,J/WDREV2 141 | AR_SHIFT,SC_#,#/4,J/WDREV2 142 | AR_SHIFT,SC_#,#/14,J/WDREV2 143 | AR_SHIFT,SC_#,#/2,J/WDREV2 144 | AR_SHIFT,SC_#,#/12,J/WDREV2 145 | AR_SHIFT,SC_#,#/6,J/WDREV2 146 | AR_SHIFT,SC_#,#/16,J/WDREV2 147 | AR_SHIFT,SC_#,#/1,J/WDREV2 148 | AR_SHIFT,SC_#,#/11,J/WDREV2 149 | AR_SHIFT,SC_#,#/5,J/WDREV2 150 | AR_SHIFT,SC_#,#/15,J/WDREV2 151 | AR_SHIFT,SC_#,#/3,J/WDREV2 152 | AR_SHIFT,SC_#,#/13,J/WDREV2 153 | AR_SHIFT,SC_#,#/7,J/WDREV2 154 | AR_SHIFT,SC_#,#/17,J/WDREV2 155 | 156 | WDREV2: AR0-5_AR0-5 OR SC 157 | AR_BR,ARX_AR,FE_FE-#,#/4,SC/SCAD,SKP SCAD0,J/WDREV 158 | .ENDIF/CIRC.BIG.OPT 159 | .ENDIF/CIRC 160 | .TOC "ARITHMETIC SHIFTS -- ASH, ASHC" 161 | 162 | ;COMMON CODE FOR ARITHMETIC SHIFTS 163 | 164 | =*1***0 165 | ASHL: ARX_AR,AR_AC0, ;INPUT NOW IN AR LONG 166 | SKP SC NE,J/ASHL1 ;CHECK FOR NULL SHIFT 167 | ARX_AR,AR_AC0, ;HERE IF RIGHT SHIFT 168 | SC_#+SC,#/36.,SKP SCAD0 ;CHECK FOR LONG ONE 169 | =1****0 170 | ASHR1: BR/AR,ARX_SHIFT,AR_SIGN,J/ASHR2 ;LOW OUTPUT TO ARX 171 | ARX_AR,AR_SIGN, ;HERE IF SHIFT COUNT .GT. 36 172 | SC_#+SC,#/36., ;BRING COUNT UP BY 36 173 | SKP SCAD0,J/ASHR1 ;LOOP TILL COUNT REASONABLE 174 | 175 | ASHR2: BRX/ARX,ARX_BR, ;HIGH INPUT TO ARX 176 | B DISP,J/ASHX 177 | 178 | ;HERE FOR LEFT ARITHMETIC SHIFT 179 | 180 | =*1***0 181 | ASHL1: I FETCH,J/NOP ;SHIFT 0 IS A NOP 182 | BR_AR LONG,AR_SIGN ;SAVE INPUT, GEN SIGN WORD 183 | BR/AR,AR_BR*2 LONG ;SAVE SIGN, GET MAGNITUDE BITS 184 | =0* 185 | ASHL2: BRX/ARX,ARX_AR,AR_BR, ;HI IN TO ARX, LOW TO BRX 186 | CALL,J/SHIFT ;CALL SHIFTER TO GET BITS LOST 187 | SKP AR SIG ;ANY SIGNIFICANT BITS? 188 | =1****0 189 | ASHL3: AR_ARX,ARX_BRX, ;RESTORE HI TO AR, LOW TO ARX 190 | GEN #+SC,#/-36.,SKP SCAD0,J/ASHL4 191 | SET AROV,J/ASHL3 ;BITS SHIFTED OUT NE SIGN 192 | =*1***0 193 | ASHL4: AR_ARX,ARX_0S, ;HERE IF E .GT. 36 194 | SC_#+SC,#/-36.,J/ASHL2 ;SHIFT 36 PLACES, TRY AGAIN 195 | MQ_SHIFT,AR_BRX,CLR ARX, ;HIGH OUTPUT TO MQ, 196 | SC_#+SC,#/-1,B DISP ;COMPENSATE FOR EXTRA SHIFT 197 | =1****0 198 | ASHL5: AR_BR,BRX/ARX,ARX/MQ, ;SIGN TO AR, HIGH OUT TO ARX 199 | SC_#,#/35., ;READY TO COMBINE THEM 200 | B DISP,J/ASHX ;STORE AS APPROPRIATE 201 | ARX_SHIFT,J/ASHL5 ;LOW OUTPUT TO ARX 202 | 203 | ;HERE TO GET FINAL RESULTS. 204 | 205 | =*1***0 206 | ASHX: AR_SHIFT,I FETCH,J/STORAC ;HERE AFTER ASH 207 | AR_SHIFT,ARX_BRX, ;HERE AFTER ASHC 208 | SC_#,#/35.,J/ST2AC 209 | -------------------------------------------------------------------------------- /kl10/its/shift.modelb: -------------------------------------------------------------------------------- 1 | .TOC "ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO" 2 | 3 | .DCODE 4 | 240: I, B/0, J/ASH 5 | I, B/0, J/ROT 6 | I, B/2, J/LSH 7 | I, J/JFFO 8 | I, B/1, J/ASHC 9 | I, J/ROTC 10 | I, J/LSHC 11 | EA, J/UUO 12 | .UCODE 13 | 14 | ;ENTER WITH 0,E IN AR 15 | ; NOTE THAT VALUES OF SC GREATER THAN 36 16 | ; CAUSE THE SHIFTER TO SELECT ARX. 17 | 18 | =0****00***0 19 | LSH: AR_AC0,ARL/AD,ARX_0.M,SC_EA, 20 | SKP AR18,J/SHR1 21 | 22 | JFFO: AR_AC0,SKP AD NE,SC_#,#/6 23 | = 24 | =0 AC1_AR,I FETCH,J/NOP ;AC WAS ZERO, NO JUMP 25 | ARX+MQ_0.M,FE_P,SKP SCAD NE, ;TEST FIRST 6 BITS 26 | AR_SHIFT,ARL/SH ;DISCARD THEM 27 | =0 28 | JFFO1: AR_SHIFT,FE_P,SKP SCAD NE, ;TEST NEXT 6 BITS 29 | ARX_ARX-1,J/JFFO1 ;LOOP, COUNTING, TILL NE 30 | P_FE,ARR_0.S, ;RESTORE 6 NON-ZERO BITS 31 | ARX_ARX*-6 ;GET POS GROUP COUNT*6 32 | =0 33 | JFFO2: SKP AR0,AR_2(AR+1), ;LOOP TO FIND A 1 34 | ARX_ARX+1,J/JFFO2 ;COUNTING AS WE GO 35 | AR_ARX-1,FETCH,J/STRAC1 36 | 37 | =0****00***0 38 | ASH: SC_EA,SKP AR18, ;GET SHIFT AMOUNT 39 | AR_0S,J/ASHL ;SET LOW PART = 0 40 | ROT: AR_AC0,ARX_AC0,SC_EA,SKP AR18 41 | = 42 | ;SINGLE-WORD LSH/ROT 43 | ; FOR ROT, B=0, AR AND ARX BOTH CONTAIN AC 44 | ; FOR LSH, B=2, AR HAS AC, ARX IS ZERO 45 | 46 | =00 47 | SHR1: AR_SHIFT,SC_#+SC,#/-36., ;DO POS (LEFT) SHIFT, CHK RANGE 48 | SKP SCAD0,J/SHR2 49 | ARX_AR (AD),AR_ARX (ADX), 50 | SC_#+SC,#/36., 51 | B DISP,SKP SCAD0,J/SHR1 ;MAKE NEG SHIFT TO EQUIV POS 52 | SHR2: AR_SHIFT,SC_#+SC,#/-36., 53 | SKP SCAD0,J/SHR2 ;BRING SC INTO RANGE 54 | AC0_AR,I FETCH,J/NOP ;DONE 55 | .TOC "ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC" 56 | 57 | =0****00***0 58 | ASHC: SC_EA,SKP AR18, ;SETUP SHIFT COUNT 59 | AR_AC1*2,J/ASHL ;GET LOW WORD 60 | ROTC: ARX_AC1 61 | = AR_AC0,SC_EA,SKP AR18 ;SETUP BOTH AC'S 62 | =0 63 | ROT3: MQ_SHIFT,ARX_AR (AD), 64 | AR_ARX (ADX),J/ROT4 65 | ARX_AR (AD),AR_ARX (ADX), 66 | SC_#+SC,#/36.,SKP SCAD0,J/ROT3 67 | 68 | ROT4: AR_MQ,ARX_SHIFT, 69 | SC_#+SC,#/-36.,SKP SCAD0 70 | =0 MQ_SHIFT,ARX_AR (AD), 71 | AR_ARX (ADX),J/ROT4 72 | STDAC: AC0_AR,AR_ARX,I FETCH,J/STRAC1 73 | 74 | 75 | 1004: ;NEXT TO UUO 76 | LSHC: ARX_AC1,MQ_0.M 77 | LSH1: AR_AC0,SC_EA,FE_#,#/36.,SKP AR18 78 | =0 79 | LSH2: MQ_SHIFT,AR_ARX (ADX), 80 | ARX/MQ,FE_#,#/-36.,J/LSH3 81 | ARX_AR (AD),AR_0.M,MQ_ARX, 82 | SC_FE+SC,SKP SCAD0,J/LSH2 83 | 84 | LSH3: AR_MQ,ARL/AD,ARX_SHIFT,MQ_0.M, 85 | SC_FE+SC,SKP SCAD0 86 | =0 MQ_SHIFT,AR_ARX (ADX),ARX/MQ,J/LSH3 87 | AC0_AR,AR_ARX,I FETCH,J/STRAC1 88 | .TOC "ARITHMETIC SHIFTS -- ASH, ASHC" 89 | 90 | ;COMMON CODE FOR ARITHMETIC SHIFTS 91 | 92 | =0 93 | ASHL: ARX_AR,AR_AC0, ;INPUT NOW IN AR LONG 94 | SKP SC NE,J/ASHL1 ;CHECK FOR NULL SHIFT 95 | ARX_AR,AR_AC0, ;HERE IF RIGHT SHIFT 96 | SC_#+SC,#/36.,SKP SCAD0 ;CHECK FOR LONG ONE 97 | =0 98 | ASHR1: BR/AR,ARX_SHIFT,AR_SIGN,J/ASHR2 ;LOW OUTPUT TO ARX 99 | ARX_AR,AR_SIGN, ;HERE IF SHIFT COUNT .GT. 36 100 | SC_#+SC,#/36., ;BRING COUNT UP BY 36 101 | SKP SCAD0,J/ASHR1 ;LOOP TILL COUNT REASONABLE 102 | 103 | ASHR2: BRX/ARX,ARX_BR, ;HIGH INPUT TO ARX 104 | B DISP,J/ASHX 105 | 106 | ;HERE FOR LEFT ARITHMETIC SHIFT 107 | 108 | =0 109 | ASHL1: I FETCH,J/NOP ;SHIFT 0 IS A NOP 110 | BR_AR LONG,AR_SIGN ;SAVE INPUT, GEN SIGN WORD 111 | BR/AR,AR_BR*2 LONG ;SAVE SIGN, GET MAGNITUDE BITS 112 | =0* 113 | ASHL2: BRX/ARX,ARX_AR,AR_BR, ;HI IN TO ARX, LOW TO BRX 114 | CALL,J/SHIFT ;CALL SHIFTER TO GET BITS LOST 115 | SKP AR NE BR ;ANY BITS DIFFERENT FROM SIGN? 116 | =0 117 | ASHL3: AR_ARX,ARX_BRX, ;RESTORE HI TO AR, LOW TO ARX 118 | GEN #+SC,#/-36.,SKP SCAD0,J/ASHL4 119 | SET AROV,J/ASHL3 ;BITS SHIFTED OUT NE SIGN 120 | =0 121 | ASHL4: AR_ARX,ARX_0S, ;HERE IF E .GT. 36 122 | SC_#+SC,#/-36.,J/ASHL2 ;SHIFT 36 PLACES, TRY AGAIN 123 | MQ_SHIFT,AR_BRX,CLR ARX, ;HIGH OUTPUT TO MQ, 124 | SC_#+SC,#/-1,B DISP ;COMPENSATE FOR EXTRA SHIFT 125 | =0 126 | ASHL5: AR_BR,BRX/ARX,ARX/MQ, ;SIGN TO AR, HIGH OUT TO ARX 127 | SC_#,#/35., ;READY TO COMBINE THEM 128 | B DISP,J/ASHX ;STORE AS APPROPRIATE 129 | ARX_SHIFT,J/ASHL5 ;LOW OUTPUT TO ARX 130 | 131 | ;HERE TO GET FINAL RESULTS. 132 | 133 | =0 134 | ASHX: AR_SHIFT,I FETCH,J/STORAC ;HERE AFTER ASH 135 | AR_SHIFT,ARX_BRX, ;HERE AFTER ASHC 136 | SC_#,#/35.,J/ST2AC 137 | -------------------------------------------------------------------------------- /kl10/its/skpjmp.27: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/its/skpjmp.27 -------------------------------------------------------------------------------- /kl10/its/u.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 TOPS-10 SERIES MICROCODE MODEL A MACHINE 2 | 3 | ;NO CHANGES NEEDED 4 | -------------------------------------------------------------------------------- /kl10/its/u126.doc: -------------------------------------------------------------------------------- 1 | U.DOC -- Third release, edit 126 2 | January 16, 1976 3 | Copyright 1976, Digital Equipment Corp., Maynard, Mass. 4 | 1.0 SUMMARY 5 | 1.1 Edit version 126 is the third release of U, the KL10 6 | microcode. 7 | 1.2 U is not dependent on any monitor, but because of 8 | hardware differences between the various -10 9 | processors, a monitor must be built specifically for 10 | the KL10. It has been tested with the 6.02 monitor 11 | and the TOPS-20 version 1 monitor. U has no DATE75 12 | dependencies. 13 | The following are known deficiencies in U 126: 14 | U 126 will not work correctly with processor 15 | revision levels less than 6. This will not 16 | ordinarily be a problem, because this release is part 17 | of rev 7a and rev 8, and should therefore be applied 18 | to machines already at rev 6; if there is any doubt 19 | whether a machine has been kept up to ECO level, 20 | however, customers should check before installing U 21 | 126. The symptom of this failure is that the PC 22 | doesn't get loaded if a page failure occurs on an 23 | instruction fetch, and therefore the instruction 24 | which preceeded the page failure gets performed again 25 | on return from the page fault handler. 26 | If rev 8 is installed U 126 is necessary. 27 | KLpaging does not work with the cache on, because 28 | there is too much time from "REQ SV.VMA" till 29 | "RETURN0". the fix (as yet untested or installed): 30 | =0 31 | PGRST2: BR/AR,AR_ARX, 32 | ARX_SV.ARX,J/PGRST3 33 | BR/AR,AR_ARX,SC_-SC-1, 34 | ARX_SV.ARX 35 | PGRST3: REQ SV.VMA 36 | SET ACCOUNT EN,RETURN0 37 | This bug does not matter for 2040 machines (they have 38 | no cache) and thus there is no need to fix it in this 39 | release. It will be fixed in the next release. 40 | The code which performs START and CONTINUE 41 | functions on leaving the HALT loop is incorrectly 42 | coded, in that it sets the interrupt inhibit flag for 43 | one instruction. This results in a processor hang at 44 | WGRANT if there is an interrupt request up when the 45 | processor is continued, and the first instruction 46 | after the continue is an i/o instruction. This 47 | should be fixed in DEFINE.MIC by setting SPEC 48 | INSTR/CONT=0. This fix has received only minimal 49 | testing. It will be fixed in the next release. 50 | U.DOC -- Third release, edit 126 Page 2 51 | The following problems have been fixed: 52 | Race if page fail occurs while writing FM. 53 | microcode patch eliminates most probable cause, which 54 | is page fail at nicond time while writing ac other 55 | than 0. it does not take care of the possibility 56 | that cond/fm write will glitch at instr 1777 time. 57 | Fixes in several places to set and clear account 58 | enable so as to get repeatable accounting measures of 59 | useful work done. the enable is now cleared for 60 | meter update cycles and KL page refill cycles. the 61 | hardware already takes care of PI cycles. 62 | Spec change to exit from halt loop, so that 63 | AR0-8=0 with AR9-35 non-zero loads AR into PC to 64 | start processor. this is different from executing 65 | JRST because PC flags are cleared. 66 | Fix EIS to tolerate page fail on read of fill byte 67 | in MOVSRJ or binary to decimal conversion. 68 | Integrate opcode counting/timing code under 69 | conditionals. 70 | Fix parity error code to writeback AR on read 71 | pause write error. 72 | Rewrite of DDIV, so that the no-divide test is on 73 | the most significant half of the magnitude of the 74 | dividend, rather than the magnitude of the most 75 | significant half. in the process, save time and 76 | space. Also put in conditional assembly variable 77 | "WRTST" to inhibit write test cycle for instructions 78 | which appear not to need it, and thus to speed them 79 | up. 80 | Fix the S-bus diag instruction. (It was page 81 | faulting on the register function.) 82 | Recode string compare to save space and time. 83 | change defaults for KLpaging to include EIS, exclude 84 | tracks feature. change KLpaging (new spec) to keep 85 | "logically writable" in software bit. recode 86 | KLpaging to eliminate problem of writing hardware 87 | page table before checking for age trap, and 88 | therefore leaving the page accessible after the trap. 89 | The recoding also improves the algorithm in that the 90 | hardware entry includes the W bit set if the core 91 | tables allowed write and the CST indicates written, 92 | even if the current reference was not a write. 93 | Also fix code which writes page table directory, 94 | to get write reference bit from VMA HELD into bit 5 95 | of saved page fail word. 96 | 1.3 U is implicitly documented in the System Reference 97 | Manual, in that it is an implimentation of a PDP10. 98 | The only other documentation is in the listing and 99 | prints of the KL10 processor. 100 | 1.4 Function of U 101 | U is the microprogram which directs the operation of 102 | the KL10 hardware to emulate the behaviour of a 103 | U.DOC -- Third release, edit 126 Page 3 104 | PDP10. 105 | -------------------------------------------------------------------------------- /kl10/its/u2.(init): -------------------------------------------------------------------------------- 1 | :MICRO UCODE;U2=UCODE;ITS,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,IO,EIS,BLT 2 | -------------------------------------------------------------------------------- /kl10/its/ub.modelb: -------------------------------------------------------------------------------- 1 | ;MODEL B TOPS 10 MICROCODE 2 | 3 | .SET/SNORM.OPT=1 4 | .SET/MODEL.B=1 5 | .SET/BLT.PXCT=1 6 | -------------------------------------------------------------------------------- /kl10/its/ucode.info: -------------------------------------------------------------------------------- 1 | MOON 1150 EST Thursday, 13 November 1975 2 | 3 | TO ASSEMBLE MICROCODE, USE :MICRO 4 | COMMAND LINE IS OUTPUT FILE NAME, EQUAL SIGN OR BACKARROW, 5 | LIST OF INPUT FILES SEPARATED BY COMMAS. FILE NAMES 6 | ARE IN USUAL ITS FORMAT. DEFAULTS ARE AS USUAL; SAME 7 | AS E.G. MIDAS. IT TAKES EITHER JCL OR TY INPUT. 8 | DEFAULT SECOND FILE NAME FOR THE OUTPUT FILE IS MCR. 9 | DEFAULT FOR THE INPUT FILES IS >. 10 | 11 | NAMING CONVENTIONS FOR RAMS. 12 | THE FOLLOWING RAMS PRESENTLY EXIST: 13 | 14 | U DEC STANDARD MICROCODE. SACRED. 15 | U1 "INSTALLED" ITS UCODE. SEMI-SACRED. 16 | U2 TEMPORARY ITS UCODE FILE. 17 | UJPC TEMPORARY ITS UCODE FILE, FOR JPC DEBUGGING. 18 | UJPCR TEMPORARY ITS UCODE FILE, FOR JPC DEBUGGING. 19 | UMN MIKE NEWMAN 20 | MICRO APPARENTLY A TEMPORARY DEC UCODE FILE. 21 | EBOX DEC DIAGNOSTICS. SACRED. 22 | MBOX DEC DIAGNOSTICS. SACRED. 23 | USAVE BACKUP COPY OF U. 24 | U1SAVE BACKUP COPY OF U1. 25 | 26 | TO CONVERT THINGS TO KLDCP 'ASCIIZED' FORMAT, USE 27 | :UCNVRT FOR MICROCODE 28 | :MCNVRT FOR MIDAS BINARY CODE (SBLK FILES) 29 | :PCNVRT FOR PALX BINARY CODE (-11 ABS TAPE) 30 | THE COMMAND LINE IS THE NAME OF THE FILE (EITHER JCL 31 | OR TTY INPUT). DEFAULT SECOND FILE ON INPUT IS MCR, BIN, 32 | OR BIN (RESPECTIVELY). THE OUTPUT FILE GOES TO THE SAME 33 | DEVICE AND DIRECTORY AND THE SECOND FILE NAME IS RAM, A10, 34 | OR A11 RESPECTIVELY. 35 | 36 | TO MANIPULATE THE KLDCP FILE SYSTEM, USE :KLFEDR. 37 | IT TAKES EITHER ONE COMMAND FROM JCL OR A SERIES 38 | OF COMMANDS FROM THE TTY. ? GIVES HELP. 39 | CMD? GIVES HELP ON THE CMD COMMAND. 40 | 41 | AT PRESENT THE SOURCE FOR ALL THESE PROGRAMS RESIDES 42 | IN THE SYSENG DIRECTORY. 43 | 4078 k|I -------------------------------------------------------------------------------- /kl10/its/xx.modelb: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 20-SERIES MICROCODE 2 | ;MODEL B MACHINE EXTENDED ADRESSING 3 | 4 | .SET/SNORM.OPT=1 5 | .SET/XADDR=1 6 | .SET/EPT540=1 7 | .SET/LONG.PC=1 8 | .SET/MODEL.B=1 9 | .SET/KLPAGE=1 10 | .SET/FPLONG=0 11 | .SET/BLT.PXCT=1 12 | .SET/BACK.BLT=1 13 | -------------------------------------------------------------------------------- /kl10/v1(357)/blt.mic: -------------------------------------------------------------------------------- 1 | .TOC "XBLT" 2 | 3 | ;HERE FROM EXTEND, ARX CONTAINS AC2 4 | .IF/XADDR 5 | 6 | XBLT: AR_AC1,SR_XBLT(SRC) ;[262] IN CASE OF INTERRUPT 7 | BR/AR,BRX/ARX,MQ_AR, ;SRC ADDR TO BR, DST TO BRX 8 | AR_AC0,SKP AD0,J/XBLT3 ;GET LENGTH, TEST DIRECTION 9 | =0 10 | XBLT3: SKP AR NE,MQ_AR,J/XBLT4 11 | AR_MQ-1,ARX_ARX-1, ;DECR SRC & DST ADDR'S FOR DOWN 12 | VMA/AD,LOAD AR ;GET FIRST WORD 13 | 14 | ;HERE IS MAIN LOOP FOR XBLT, DOWNWARDS 15 | 16 | XBLTDN: MQ_AR,AR_MEM,SR_XBLT(DST) ;WAIT FOR SOURCE WORD 17 | VMA_ARX,STORE,SR_XBLT(SRC) ;STORE IT IN DESTINATION 18 | MEM_AR,AR_MQ,SKP INTRPT ;WAIT, CHECK FOR INTRPT 19 | =0 BR/AR,BRX/ARX, ;PUT DECREMENTED ADDR'S IN BR,X 20 | AR_AC0+1,SKP CRY0,J/XBLTD1 ;COUNT OFF LENGTH 21 | BR/AR,BRX/ARX,AR_AC0+1,J/PGFAC0 ;CLEANUP AND TAKE INTERRUPT 22 | =0 23 | XBLTD1: AC0_AR,AR_MQ-1,ARX_ARX-1, ;STORE NEW LENGTH, GET NEXT ADDR 24 | VMA/AD,LOAD AR,J/XBLTDN ; AND READ SRC WORD 25 | AC0_AR,AR_ARX,ARX/MQ, ;DONE! PUT ALL AWAY 26 | I FETCH 27 | XBLTX: AC2_AR,AR_ARX,J/STRAC1 28 | 29 | ;HERE FOR UPWARD BLT, TESTING FOR NON-ZERO LENGTH 30 | 31 | =0 32 | XBLT4: I FETCH,SR_0,J/NOP ;DO NOTHING IF AC =0 33 | VMA_BR,LOAD AR, ;ELSE START RIGHT IN 34 | SR_XBLT(DST),J/XBLTU1 35 | 36 | ;HERE IS MAIN LOOP FOR XBLT, UPWARDS 37 | 38 | XBLTUP: MEM_AR,AR_MQ-1,SKP AD NE ;COUNT EXHAUSTED? 39 | =0 AC0_AR,ARX_BR+1,AR_BRX+1, ;YES. GET FINAL ADDRESSES 40 | I FETCH,J/XBLTX ; READY TO STORE 41 | AC0_AR,MQ_AR,AR_BR+1,ARX_BRX+1, 42 | VMA/AD,LOAD AR ;GET SOURCE WORD 43 | BR/AR,BRX/ARX,SR_XBLT(DST) ;MUST BE SAVED PRIOR TO MBWAIT 44 | XBLTU1: AR_MEM,SKP INTRPT ;WAIT FOR SRC, TEST INTRPT 45 | =0 VMA_ARX,STORE, ;COPY TO DST 46 | SR_XBLT(SRC),J/XBLTUP ;LOOP 47 | AR_BR LONG,SR_0,J/XBLTPF ;TAKE INTERRUPT 48 | 49 | .ENDIF/XADDR 50 | .TOC "BLT" 51 | ; ENTER WITH 0,E IN AR 52 | 53 | ;IN THE LOOP, ARX CONTAINS THE CURRENT DESTINATION ADDRESS, 54 | ; BRX CONTAINS THE TERMINAL ADDRESS, AND BR CONTAINS THE DIFFERENCE 55 | ; BETWEEN THE SOURCE AND DESTINATION ADDRESSES. 56 | 57 | ;UNLIKE EARLIER -10 PROCESSORS, THIS CODE CHECKS FOR THE CASE IN WHICH 58 | ; THE DESTINATION ADDRESS IN RH(AC) IS GREATER THAN E, AND RATHER THAN 59 | ; STOPPING AFTER ONE WORD, COPIES DOWNWARD (EFFECTIVELY DECREMENTING 60 | ; AC BY 1,,1 ON EACH STEP, RATHER THAN INCREMENTING). 61 | 62 | ;THIS CODE ALSO PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF 63 | ; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD 64 | ; OF THE DESTINATION BLOCK). WHEN AC IS NOT PART OF THE DESTINATION 65 | ; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING 66 | ; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST- 67 | ; INATION BLOCK (IN THE RH). IF AC IS THE LAST WORD OF THE DESTINATION 68 | ; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK. 69 | 70 | ;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH 71 | ; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER. IN THIS CASE, 72 | ; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH 73 | ; TRANSFER. THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP. 74 | 75 | ;BLT: ARX_AR,MQ_AR,ARR_AC0,ARL_ARL ;END TO ARX & MQ, DEST TO AR 76 | BLT1: BR/AR,ARX_AR,BRX/ARX, ;DST TO BR & ARX, END TO BRX 77 | AR_AC0 ;SRC TO ARL 78 | .IFNOT/BLT.PXCT 79 | ARR_ARL,ARL_BRL ;SRC TO ARR (SAME SECTION AS E) 80 | AR_AR-BR ;SRC-DST TO ARR 81 | .IF/BLT.PXCT 82 | ARR_ARL,ARL_BRL.M,SKP P!S XCT ;SRC TO ARR (SAME SECTION AS E) 83 | =0 AR_AR-BR,J/BLT2 ;SRC-DST TO ARR 84 | AR_AR-BR,J/BLTPXCT ;TREAT PXCT OF BLT SPECIAL 85 | .ENDIF/BLT.PXCT 86 | .IF/BACK.BLT 87 | BR/AR,SKP ARX LE BRX ;SRC-DST TO BR. UP OR DOWN? 88 | =00 AR_MQ-1,CALL,J/BLTAC ;DOWN, READY WITH E-1 89 | AR_MQ+1,CALL,J/BLTAC ;UP, PUT E+1 IN AR FOR AC 90 | DOWN: LOAD VMA(EA)_ARX+BR,J/DN1 ;DOWN, START THE LOOP 91 | .IFNOT/BACK.BLT 92 | =0* 93 | BLT2: BR/AR,AR_MQ+1,CALL,J/BLTAC ;SRC-DST TO BR, E+1 IN AR 94 | .ENDIF/BACK.BLT 95 | SKP BR EQ -1,J/UP ;IS THIS CORE CLEARING CASE? 96 | 97 | 98 | ;HERE TO SETUP FINAL AC 99 | 100 | BLTAC: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 101 | AR_AR SWAP,SR_BLT(SRC) 102 | ACSETU: AC0_AR,RETURN2 ;[334] Used below as well 103 | ;HERE FOR UPWARD BLT (AC RH .LE. E) 104 | =0 105 | UP: LOAD VMA(EA)_ARX+BR,J/UP1 ;NOT CLEAR CORE 106 | SKP P!S XCT,LOAD VMA(EA)_ARX+BR ;DO NOT OPTIMIZE UNDER EXT ADDR 107 | 108 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 109 | 110 | =00 AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET THE WORD TO STORE IN ALL 111 | UP1: AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET SOURCE WORD 112 | CALL,SR_BLT(DST),J/UP2 ;HERE TO STORE SAME SRC AGAIN 113 | LOAD VMA(EA)_ARX+BR,J/UP1 ;HERE TO GET NEXT SRC 114 | 115 | UP2: STORE VMA(EA)_ARX,SKP INTRPT ;OK, GET DST ADDRESS 116 | =0 117 | UP3: SKP ARX LT BRX,J/UP4 ;CHECK FOR LAST TRANSFER 118 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 119 | =0 120 | UP4: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 121 | MEM_AR,ARX_ARX+1, ;STORE DST, 122 | SR_BLT(SRC),RETURN2 ; CONTINUE 123 | 124 | ;BLT CONTINUED - HERE FOR DOWNWARD BLT (AC RH .GT. E) 125 | .IF/BACK.BLT 126 | 127 | DN1: AR_MEM,SR_BLT(DST) ;WAIT FOR SOURCE DATA 128 | VMA_ARX,STORE,SKP INTRPT ;OK, START DST REF 129 | =0 SKP ARX LE BRX,J/DN3 ;CHECK FOR END CONDITION 130 | MEM_AR,J/BLTPF ;FINISH STORE, TAKE INTRPT 131 | =0 132 | DN3: MEM_AR,ARX_ARX-1, ;NOT END, LOOP 133 | SR_BLT(SRC),J/DOWN 134 | FIN STORE,I FETCH,J/NOP ;END 135 | .ENDIF/BACK.BLT 136 | .TOC "EXTENDED ADDRESSING CODE FOR PXCT OF BLT" 137 | 138 | ;THIS MUST BE SEPERATE CODE TO MAKE PXCT WORK NOTE THAT PXCT ONLY CAN 139 | ;BE USED IN SECTION 0 AND IN FACT WILL EVENTUALLY BE REMOVED FROM THERE 140 | ;HOPEFULLY THIS CODE CAN GO AWAY THE SPEC IS THAT PXCT OF BLT IS NOT DEFINED 141 | ;AND WILL NOT BE USED ON EXTENDED ADDRESSING MACHINES. 142 | 143 | .IF/BLT.PXCT 144 | =0* 145 | BLTPXCT:BR/AR,AR_MQ+1,CALL,J/BLTPX1 ;SRC-DST TO BR, E+1 IN AR 146 | UPPX: VMA_ARX+BR,LOAD AR,J/UP1PX ;NOT CLEAR CORE 147 | ;CORE CLEARING NOT LEGAL 148 | 149 | 150 | ;HERE TO SETUP FINAL AC 151 | 152 | BLTPX1: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 153 | AR_AR SWAP,SR_BLT(PXCT SRC), 154 | J/ACSETU ;[334] Use common return above 155 | 156 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 157 | 158 | =00 159 | =01 160 | UP1PX: AR_MEM,CALL,SR_BLT(PXCT DST),J/UP2PX ;GET SOURCE WORD 161 | CALL,SR_BLT(PXCT DST),J/UP2PX ;HERE TO STORE SAME SRC AGAIN 162 | VMA_ARX+BR,LOAD AR,J/UP1PX ;HERE TO GET NEXT SRC 163 | 164 | UP2PX: VMA_ARX,STORE,SKP INTRPT ;OK, GET DST ADDRESS 165 | =0 166 | UP3PX: SKP ARX LT BRX,J/UP4PX ;CHECK FOR LAST TRANSFER 167 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 168 | =0 169 | UP4PX: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 170 | MEM_AR,ARX_ARX+1, ;STORE DST, 171 | SR_BLT(PXCT SRC),RETURN2 ; CONTINUE 172 | .ENDIF/BLT.PXCT 173 | -------------------------------------------------------------------------------- /kl10/v1(357)/diagb.ccl: -------------------------------------------------------------------------------- 1 | DIAGB.MCR=UBdg,DIAGB,dDEFIN,MACRO,BASIC,DIAGBK,SKPJMP,SHIFT,ARITH,FP,BYTE,extexp,IO,eis,BLT 2 | -------------------------------------------------------------------------------- /kl10/v1(357)/diagb.mic: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR MODEL B DIAGNOSTIC MICRO-CODE 2 | ;.SET/MODEL.B=1 3 | .SET/DIAG.INST=1 4 | -------------------------------------------------------------------------------- /kl10/v1(357)/diagbk.mic: -------------------------------------------------------------------------------- 1 | .TOC "BLOCK OF RESERVED MICRO LOCS FOR DIAG INSTRS" 2 | 3 | ;RESERVE A BLOCK OF MICRO-CODE LOCATIONS FOR DIAGNOSTIC 4 | ;OVERLAY USAGE..SAME BLOCKS IN BOTH MODEL A AND MODEL B 5 | ;MICRO-CODES..THIS BLOCK SELECTION CURRENTLY REQUIRES 6 | ;THAT NO "NORMAL" PDP10 INSTRUCTIONS BE ELIMINATED FROM 7 | ;THIS RUNNING VERSION OF THE MICRO-CODE.. 8 | 9 | 2340: 10 | DIAGINSTR: J/UUO 11 | 2341: J/UUO 12 | 2342: J/UUO 13 | 2343: J/UUO 14 | 2344: J/UUO 15 | 2345: J/UUO 16 | 2346: J/UUO 17 | 2347: J/UUO 18 | 2350: J/UUO 19 | 2351: J/UUO 20 | 2352: J/UUO 21 | 2353: J/UUO 22 | 2354: J/UUO 23 | 2355: J/UUO 24 | 2356: J/UUO 25 | 2357: J/UUO 26 | 2360: J/UUO 27 | 2361: J/UUO 28 | 2362: J/UUO 29 | 2363: J/UUO 30 | 2364: J/UUO 31 | 2365: J/UUO 32 | 2366: J/UUO 33 | 2367: J/UUO 34 | 2370: J/UUO 35 | 2371: J/UUO 36 | 2372: J/UUO 37 | 2373: J/UUO 38 | 2374: J/UUO 39 | 2375: J/UUO 40 | 2376: J/UUO 41 | -------------------------------------------------------------------------------- /kl10/v1(357)/klx.ccl: -------------------------------------------------------------------------------- 1 | KLX=KLX,EDHIS,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,EXTEXP,BYTE,BLT,IO,EIS 2 | -------------------------------------------------------------------------------- /kl10/v1(357)/klx.mic: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 20-SERIES MICROCODE, no common file system 2 | ;MODEL B MACHINE EXTENDED ADDRESSING 3 | 4 | .SET/SNORM.OPT=1 5 | .SET/XADDR=1 6 | .SET/EPT540=1 7 | .SET/LONG.PC=1 8 | .SET/MODEL.B=1 9 | .SET/KLPAGE=1 10 | .SET/FPLONG=0 11 | .SET/BLT.PXCT=1 12 | .SET/SMP=0 ;No SMP (DOES RPW instead of RW FOR DPB, IDPB) 13 | .SET/EXTEXP=1 14 | .SET/MULTI=1 ;DOES NOT CACHE PAGE TABLE DATA 15 | .SET/NOCST=1 ;DOES NOT DO AGE UPDATES, ETC. WITH CST = 0 16 | .SET/OWGBP=1 ;ONE WORD GLOBAL BYTE POINTERS 17 | .SET/IPA20=1 ;IPA20-L 18 | .SET/GFTCNV=0 ;DO NOT DO GFLOAT CONVERSION INSTRUCTIONS [273] 19 | ;SAVES 75 WORDS. MONITOR WILL TAKE CARE OF THEM. 20 | .set/cst.write=0 ;No common file system support here 21 | .set/ddt.bug=1 ;For now, hack the big page table APRID bit 22 | -------------------------------------------------------------------------------- /kl10/v1(357)/rel10-20.ctl: -------------------------------------------------------------------------------- 1 | @DIR *.CCL,*.MIC,UCODE.*,*.MAC,*.REL,*.CTL,*.RAM,*.MCB,CONVRT.EXE, 2 | @CHECKSUM SEQU 3 | @ 4 | 5 | 6 | !ASSEMBLE TOPS-10 MICROCODE 7 | 8 | @R MICRO 9 | *@U.CCL 10 | 11 | !ASSEMBLE TOPS-10 MODEL B MICROCODE 12 | @R MICRO 13 | *@UB.CCL 14 | 15 | !ASSEMBLE TOPS-20 MODEL A MICROCODE 16 | @R MICRO 17 | *@KLL.CCL 18 | 19 | !ASSEMBEL TOPS-20 MODEL B MICROCODE 20 | @R MICRO 21 | *@KLX.CCL 22 | 23 | 24 | !NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 25 | 26 | 27 | !TOPS-10 MODEL A 28 | @R S:CONVRT 29 | *U/R 30 | 31 | !TOPS-10 MODEL B 32 | @R S:CONVRT 33 | *UB/R 34 | 35 | !TOPS-20 MODEL A 36 | @R S:CONVRT 37 | *KLL/R 38 | 39 | !TOPS-20 MODEL B 40 | @R S:CONVRT 41 | *KLX/R 42 | 43 | 44 | 45 | !NOW DO THE SECOND STEP OF CONVERSION THE RSXFMT IS A SUPPORTED TOPS-20 46 | !PROGRAM 47 | 48 | !TOPS-10 MODEL A 49 | @RSXFMT 50 | CONVERT U.RAM UA.MCB 51 | EXIT 52 | 53 | !TOPS-10 MODEL B 54 | @RSXFMT 55 | CONVERT UB.RAM UB.MCB 56 | EXIT 57 | 58 | !TOPS-20 MODEL A 59 | @RSXFMT 60 | CONVERT KLL.RAM KLA.MCB 61 | EXIT 62 | 63 | !TOPS-20 MODEL B 64 | @RSXFMT 65 | CONVERT KLX.RAM KLX.MCB 66 | EXIT 67 | 68 | 69 | 70 | !THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 71 | !HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 72 | @DIR *.RAM,*.MCB, 73 | @CHECKSUM SEQ 74 | @ 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /kl10/v1(357)/rel20.ctl: -------------------------------------------------------------------------------- 1 | @DIR *.CCL,*.MIC,*.MAC,*.REL,*.CTL,*.RAM,*.MCB,CONVRT.EXE, 2 | @CHECKSUM SEQU 3 | @ 4 | 5 | 6 | !ASSEMBLE TOPS-20 MODEL B MICROCODE 7 | @R MICRO 8 | *@KLX.CCL 9 | 10 | 11 | !NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 12 | 13 | !TOPS-20 MODEL B 14 | @R S:CONVRT 15 | *KLX/R 16 | 17 | 18 | !NOW DO THE SECOND STEP OF CONVERSION. THE RSXFMT IS A SUPPORTED TOPS-20 19 | !PROGRAM 20 | 21 | !TOPS-20 MODEL B 22 | @RSXFMT 23 | CONVERT KLX.RAM KLX.MCB 24 | EXIT 25 | 26 | 27 | 28 | !THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 29 | !HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 30 | @DIR *.RAM,*.MCB, 31 | @CHECKSUM SEQ 32 | @ 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /kl10/v1(357)/shift.mic: -------------------------------------------------------------------------------- 1 | .TOC "ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO" 2 | 3 | .DCODE 4 | 240: I, B/0, J/ASH 5 | I, B/0, J/ROT 6 | I, B/2, J/LSH 7 | I, J/JFFO 8 | I, B/1, J/ASHC 9 | I, J/ROTC 10 | I, J/LSHC 11 | EA, J/UUO 12 | .UCODE 13 | 14 | ;ENTER WITH 0,E IN AR 15 | ; NOTE THAT VALUES OF SC GREATER THAN 36 16 | ; CAUSE THE SHIFTER TO SELECT ARX. 17 | 18 | =0****00***0 19 | LSH: AR_AC0,ARL/AD,ARX_0.M,SC_EA, 20 | SKP AR18,J/SHR1 21 | 22 | JFFO: AR_AC0,SKP AD NE,SC_#,#/6 23 | = 24 | =0 AC1_AR,I FETCH,J/NOP ;AC WAS ZERO, NO JUMP 25 | ARX+MQ_0.M,FE_P,SKP SCAD NE, ;TEST FIRST 6 BITS 26 | AR_SHIFT,ARL/SH ;DISCARD THEM 27 | =0 28 | JFFO1: AR_SHIFT,FE_P,SKP SCAD NE, ;TEST NEXT 6 BITS 29 | ARX_ARX-1,J/JFFO1 ;LOOP, COUNTING, TILL NE 30 | P_FE,ARR_0.S, ;RESTORE 6 NON-ZERO BITS 31 | ARX_ARX*-6 ;GET POS GROUP COUNT*6 32 | =0 33 | JFFO2: SKP AR0,AR_2(AR+1), ;LOOP TO FIND A 1 34 | ARX_ARX+1,J/JFFO2 ;COUNTING AS WE GO 35 | AR_ARX-1,FETCH,J/STRAC1 36 | 37 | =0****00***0 38 | ASH: SC_EA,SKP AR18, ;GET SHIFT AMOUNT 39 | AR_0S,J/ASHL ;SET LOW PART = 0 40 | ROT: AR_AC0,ARX_AC0,SC_EA,SKP AR18 41 | = 42 | ;SINGLE-WORD LSH/ROT 43 | ; FOR ROT, B=0, AR AND ARX BOTH CONTAIN AC 44 | ; FOR LSH, B=2, AR HAS AC, ARX IS ZERO 45 | 46 | =00 47 | SHR1: AR_SHIFT,SC_#+SC,#/-36., ;DO POS (LEFT) SHIFT, CHK RANGE 48 | SKP SCAD0,J/SHR2 49 | ARX_AR (AD),AR_ARX (ADX), 50 | SC_#+SC,#/36., 51 | B DISP,SKP SCAD0,J/SHR1 ;MAKE NEG SHIFT TO EQUIV POS 52 | SHR2: AR_SHIFT,SC_#+SC,#/-36., 53 | SKP SCAD0,J/SHR2 ;BRING SC INTO RANGE 54 | AC0_AR,I FETCH,J/NOP ;DONE 55 | .TOC "ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC" 56 | 57 | =0****00***0 58 | ASHC: SC_EA,SKP AR18, ;SETUP SHIFT COUNT 59 | AR_AC1*2,J/ASHL ;GET LOW WORD 60 | ROTC: ARX_AC1 61 | = AR_AC0,SC_EA,SKP AR18 ;SETUP BOTH AC'S 62 | =0 63 | ROT3: MQ_SHIFT,ARX_AR (AD), 64 | AR_ARX (ADX),J/ROT4 65 | ARX_AR (AD),AR_ARX (ADX), 66 | SC_#+SC,#/36.,SKP SCAD0,J/ROT3 67 | 68 | ROT4: AR_MQ,ARX_SHIFT, 69 | SC_#+SC,#/-36.,SKP SCAD0 70 | =0 MQ_SHIFT,ARX_AR (AD), 71 | AR_ARX (ADX),J/ROT4 72 | STDAC: AC0_AR,AR_ARX,I FETCH,J/STRAC1 73 | 74 | 75 | 1004: ;NEXT TO UUO 76 | LSHC: ARX_AC1,MQ_0.M 77 | LSH1: AR_AC0,SC_EA,FE_#,#/36.,SKP AR18 78 | =0 79 | LSH2: MQ_SHIFT,AR_ARX (ADX), 80 | ARX/MQ,FE_#,#/-36.,J/LSH3 81 | ARX_AR (AD),AR_0.M,MQ_ARX, 82 | SC_FE+SC,SKP SCAD0,J/LSH2 83 | 84 | LSH3: AR_MQ,ARL/AD,ARX_SHIFT,MQ_0.M, 85 | SC_FE+SC,SKP SCAD0 86 | =0 MQ_SHIFT,AR_ARX (ADX),ARX/MQ,J/LSH3 87 | AC0_AR,AR_ARX,I FETCH,J/STRAC1 88 | .TOC "ARITHMETIC SHIFTS -- ASH, ASHC" 89 | 90 | ;COMMON CODE FOR ARITHMETIC SHIFTS 91 | 92 | =0 93 | ASHL: ARX_AR,AR_AC0, ;INPUT NOW IN AR LONG 94 | SKP SC NE,J/ASHL1 ;CHECK FOR NULL SHIFT 95 | ARX_AR,AR_AC0, ;HERE IF RIGHT SHIFT 96 | SC_#+SC,#/36.,SKP SCAD0 ;CHECK FOR LONG ONE 97 | =0 98 | ASHR1: BR/AR,ARX_SHIFT,AR_SIGN,J/ASHR2 ;LOW OUTPUT TO ARX 99 | ARX_AR,AR_SIGN, ;HERE IF SHIFT COUNT .GT. 36 100 | SC_#+SC,#/36., ;BRING COUNT UP BY 36 101 | SKP SCAD0,J/ASHR1 ;LOOP TILL COUNT REASONABLE 102 | 103 | ASHR2: BRX/ARX,ARX_BR, ;HIGH INPUT TO ARX 104 | B DISP,J/ASHX 105 | 106 | ;HERE FOR LEFT ARITHMETIC SHIFT 107 | 108 | =0 109 | ASHL1: I FETCH,J/NOP ;SHIFT 0 IS A NOP 110 | BR_AR LONG,AR_SIGN ;SAVE INPUT, GEN SIGN WORD 111 | BR/AR,AR_BR*2 LONG ;SAVE SIGN, GET MAGNITUDE BITS 112 | =0* 113 | ASHL2: BRX/ARX,ARX_AR,AR_BR, ;HI IN TO ARX, LOW TO BRX 114 | CALL,J/SHIFT ;CALL SHIFTER TO GET BITS LOST 115 | SKP AR NE BR ;ANY BITS DIFFERENT FROM SIGN? 116 | =0 117 | ASHL3: AR_ARX,ARX_BRX, ;RESTORE HI TO AR, LOW TO ARX 118 | GEN #+SC,#/-36.,SKP SCAD0,J/ASHL4 119 | SET AROV,J/ASHL3 ;BITS SHIFTED OUT NE SIGN 120 | =0 121 | ASHL4: AR_ARX,ARX_0S, ;HERE IF E .GT. 36 122 | SC_#+SC,#/-36.,J/ASHL2 ;SHIFT 36 PLACES, TRY AGAIN 123 | MQ_SHIFT,AR_BRX,CLR ARX, ;HIGH OUTPUT TO MQ, 124 | SC_#+SC,#/-1,B DISP ;COMPENSATE FOR EXTRA SHIFT 125 | =0 126 | ASHL5: AR_BR,BRX/ARX,ARX/MQ, ;SIGN TO AR, HIGH OUT TO ARX 127 | SC_#,#/35., ;READY TO COMBINE THEM 128 | B DISP,J/ASHX ;STORE AS APPROPRIATE 129 | ARX_SHIFT,J/ASHL5 ;LOW OUTPUT TO ARX 130 | 131 | ;HERE TO GET FINAL RESULTS. 132 | 133 | =0 134 | ASHX: AR_SHIFT,I FETCH,J/STORAC ;HERE AFTER ASH 135 | AR_SHIFT,ARX_BRX, ;HERE AFTER ASHC 136 | SC_#,#/35.,J/ST2AC 137 | -------------------------------------------------------------------------------- /kl10/v2(411)/source/blt.mic: -------------------------------------------------------------------------------- 1 | .TOC "XBLT" 2 | 3 | ;HERE FROM EXTEND, ARX CONTAINS AC2 4 | .IF/XADDR 5 | 6 | XBLT: AR_AC1,SR_XBLT(SRC) ;[262] IN CASE OF INTERRUPT 7 | BR/AR,BRX/ARX,MQ_AR, ;SRC ADDR TO BR, DST TO BRX 8 | AR_AC0,SKP AD0,J/XBLT3 ;GET LENGTH, TEST DIRECTION 9 | =0 10 | XBLT3: SKP AR NE,MQ_AR,J/XBLT4 11 | AR_MQ-1,ARX_ARX-1, ;DECR SRC & DST ADDR'S FOR DOWN 12 | VMA/AD,LOAD AR ;GET FIRST WORD 13 | 14 | ;HERE IS MAIN LOOP FOR XBLT, DOWNWARDS 15 | 16 | XBLTDN: MQ_AR,AR_MEM,SR_XBLT(DST) ;WAIT FOR SOURCE WORD 17 | VMA_ARX,STORE,SR_XBLT(SRC) ;STORE IT IN DESTINATION 18 | MEM_AR,AR_MQ,SKP INTRPT ;WAIT, CHECK FOR INTRPT 19 | =0 BR/AR,BRX/ARX, ;PUT DECREMENTED ADDR'S IN BR,X 20 | AR_AC0+1,SKP CRY0,J/XBLTD1 ;COUNT OFF LENGTH 21 | BR/AR,BRX/ARX,AR_AC0+1,J/PGFAC0 ;CLEANUP AND TAKE INTERRUPT 22 | =0 23 | XBLTD1: AC0_AR,AR_MQ-1,ARX_ARX-1, ;STORE NEW LENGTH, GET NEXT ADDR 24 | VMA/AD,LOAD AR,J/XBLTDN ; AND READ SRC WORD 25 | AC0_AR,AR_ARX,ARX/MQ, ;DONE! PUT ALL AWAY 26 | I FETCH 27 | XBLTX: AC2_AR,AR_ARX,J/STRAC1 28 | 29 | ;HERE FOR UPWARD BLT, TESTING FOR NON-ZERO LENGTH 30 | 31 | =0 32 | XBLT4: I FETCH,SR_0,J/NOP ;DO NOTHING IF AC =0 33 | VMA_BR,LOAD AR, ;ELSE START RIGHT IN 34 | SR_XBLT(DST),J/XBLTU1 35 | 36 | ;HERE IS MAIN LOOP FOR XBLT, UPWARDS 37 | 38 | XBLTUP: MEM_AR,AR_MQ-1,SKP AD NE ;COUNT EXHAUSTED? 39 | =0 AC0_AR,ARX_BR+1,AR_BRX+1, ;YES. GET FINAL ADDRESSES 40 | I FETCH,J/XBLTX ; READY TO STORE 41 | AC0_AR,MQ_AR,AR_BR+1,ARX_BRX+1, 42 | VMA/AD,LOAD AR ;GET SOURCE WORD 43 | BR/AR,BRX/ARX,SR_XBLT(DST) ;MUST BE SAVED PRIOR TO MBWAIT 44 | XBLTU1: AR_MEM,SKP INTRPT ;WAIT FOR SRC, TEST INTRPT 45 | =0 VMA_ARX,STORE, ;COPY TO DST 46 | SR_XBLT(SRC),J/XBLTUP ;LOOP 47 | AR_BR LONG,SR_0,J/XBLTPF ;TAKE INTERRUPT 48 | 49 | .ENDIF/XADDR 50 | .TOC "BLT" 51 | ; ENTER WITH 0,E IN AR 52 | 53 | ;IN THE LOOP, ARX CONTAINS THE CURRENT DESTINATION ADDRESS, 54 | ; BRX CONTAINS THE TERMINAL ADDRESS, AND BR CONTAINS THE DIFFERENCE 55 | ; BETWEEN THE SOURCE AND DESTINATION ADDRESSES. 56 | 57 | ;UNLIKE EARLIER -10 PROCESSORS, THIS CODE CHECKS FOR THE CASE IN WHICH 58 | ; THE DESTINATION ADDRESS IN RH(AC) IS GREATER THAN E, AND RATHER THAN 59 | ; STOPPING AFTER ONE WORD, COPIES DOWNWARD (EFFECTIVELY DECREMENTING 60 | ; AC BY 1,,1 ON EACH STEP, RATHER THAN INCREMENTING). 61 | 62 | ;THIS CODE ALSO PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF 63 | ; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD 64 | ; OF THE DESTINATION BLOCK). WHEN AC IS NOT PART OF THE DESTINATION 65 | ; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING 66 | ; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST- 67 | ; INATION BLOCK (IN THE RH). IF AC IS THE LAST WORD OF THE DESTINATION 68 | ; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK. 69 | 70 | ;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH 71 | ; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER. IN THIS CASE, 72 | ; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH 73 | ; TRANSFER. THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP. 74 | 75 | ;BLT: ARX_AR,MQ_AR,ARR_AC0,ARL_ARL ;END TO ARX & MQ, DEST TO AR 76 | BLT1: BR/AR,ARX_AR,BRX/ARX, ;DST TO BR & ARX, END TO BRX 77 | AR_AC0 ;SRC TO ARL 78 | .IFNOT/BLT.PXCT 79 | ARR_ARL,ARL_BRL ;SRC TO ARR (SAME SECTION AS E) 80 | AR_AR-BR ;SRC-DST TO ARR 81 | .IF/BLT.PXCT 82 | ARR_ARL,ARL_BRL.M,SKP P!S XCT ;SRC TO ARR (SAME SECTION AS E) 83 | =0 AR_AR-BR,J/BLT2 ;SRC-DST TO ARR 84 | AR_AR-BR,J/BLTPXCT ;TREAT PXCT OF BLT SPECIAL 85 | .ENDIF/BLT.PXCT 86 | .IF/BACK.BLT 87 | BR/AR,SKP ARX LE BRX ;SRC-DST TO BR. UP OR DOWN? 88 | =00 AR_MQ-1,CALL,J/BLTAC ;DOWN, READY WITH E-1 89 | AR_MQ+1,CALL,J/BLTAC ;UP, PUT E+1 IN AR FOR AC 90 | DOWN: LOAD VMA(EA)_ARX+BR,J/DN1 ;DOWN, START THE LOOP 91 | .IFNOT/BACK.BLT 92 | =0* 93 | BLT2: BR/AR,AR_MQ+1,CALL,J/BLTAC ;SRC-DST TO BR, E+1 IN AR 94 | .ENDIF/BACK.BLT 95 | SKP BR EQ -1,J/UP ;IS THIS CORE CLEARING CASE? 96 | 97 | 98 | ;HERE TO SETUP FINAL AC 99 | 100 | BLTAC: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 101 | AR_AR SWAP,SR_BLT(SRC) 102 | ACSETU: AC0_AR,RETURN2 ;[334] Used below as well 103 | ;HERE FOR UPWARD BLT (AC RH .LE. E) 104 | =0 105 | UP: LOAD VMA(EA)_ARX+BR,J/UP1 ;NOT CLEAR CORE 106 | SKP P!S XCT,LOAD VMA(EA)_ARX+BR ;DO NOT OPTIMIZE UNDER EXT ADDR 107 | 108 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 109 | 110 | =00 AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET THE WORD TO STORE IN ALL 111 | UP1: AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET SOURCE WORD 112 | CALL,SR_BLT(DST),J/UP2 ;HERE TO STORE SAME SRC AGAIN 113 | LOAD VMA(EA)_ARX+BR,J/UP1 ;HERE TO GET NEXT SRC 114 | 115 | UP2: STORE VMA(EA)_ARX,SKP INTRPT ;OK, GET DST ADDRESS 116 | =0 117 | UP3: SKP ARX LT BRX,J/UP4 ;CHECK FOR LAST TRANSFER 118 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 119 | =0 120 | UP4: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 121 | MEM_AR,ARX_ARX+1, ;STORE DST, 122 | SR_BLT(SRC),RETURN2 ; CONTINUE 123 | 124 | ;BLT CONTINUED - HERE FOR DOWNWARD BLT (AC RH .GT. E) 125 | .IF/BACK.BLT 126 | 127 | DN1: AR_MEM,SR_BLT(DST) ;WAIT FOR SOURCE DATA 128 | VMA_ARX,STORE,SKP INTRPT ;OK, START DST REF 129 | =0 SKP ARX LE BRX,J/DN3 ;CHECK FOR END CONDITION 130 | MEM_AR,J/BLTPF ;FINISH STORE, TAKE INTRPT 131 | =0 132 | DN3: MEM_AR,ARX_ARX-1, ;NOT END, LOOP 133 | SR_BLT(SRC),J/DOWN 134 | FIN STORE,I FETCH,J/NOP ;END 135 | .ENDIF/BACK.BLT 136 | .TOC "EXTENDED ADDRESSING CODE FOR PXCT OF BLT" 137 | 138 | ;THIS MUST BE SEPERATE CODE TO MAKE PXCT WORK NOTE THAT PXCT ONLY CAN 139 | ;BE USED IN SECTION 0 AND IN FACT WILL EVENTUALLY BE REMOVED FROM THERE 140 | ;HOPEFULLY THIS CODE CAN GO AWAY THE SPEC IS THAT PXCT OF BLT IS NOT DEFINED 141 | ;AND WILL NOT BE USED ON EXTENDED ADDRESSING MACHINES. 142 | 143 | .IF/BLT.PXCT 144 | =0* 145 | BLTPXCT:BR/AR,AR_MQ+1,CALL,J/BLTPX1 ;SRC-DST TO BR, E+1 IN AR 146 | UPPX: VMA_ARX+BR,LOAD AR,J/UP1PX ;NOT CLEAR CORE 147 | ;CORE CLEARING NOT LEGAL 148 | 149 | 150 | ;HERE TO SETUP FINAL AC 151 | 152 | BLTPX1: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 153 | AR_AR SWAP,SR_BLT(PXCT SRC), 154 | J/ACSETU ;[334] Use common return above 155 | 156 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 157 | 158 | =00 159 | =01 160 | UP1PX: AR_MEM,CALL,SR_BLT(PXCT DST),J/UP2PX ;GET SOURCE WORD 161 | CALL,SR_BLT(PXCT DST),J/UP2PX ;HERE TO STORE SAME SRC AGAIN 162 | VMA_ARX+BR,LOAD AR,J/UP1PX ;HERE TO GET NEXT SRC 163 | 164 | UP2PX: VMA_ARX,STORE,SKP INTRPT ;OK, GET DST ADDRESS 165 | =0 166 | UP3PX: SKP ARX LT BRX,J/UP4PX ;CHECK FOR LAST TRANSFER 167 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 168 | =0 169 | UP4PX: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 170 | MEM_AR,ARX_ARX+1, ;STORE DST, 171 | SR_BLT(PXCT SRC),RETURN2 ; CONTINUE 172 | .ENDIF/BLT.PXCT 173 | -------------------------------------------------------------------------------- /kl10/v2(411)/source/bytsub.mic: -------------------------------------------------------------------------------- 1 | .TOC "BYTE GROUP -- Some Old Style Subroutines" 2 | ; 3 | ; This file once included all of the byte instruction code. 4 | ; With the coming of the new version of the byte instructions, 5 | ; however, much of this stuff became unnecessary and has 6 | ; been eliminated as a result. It is hoped to be able to 7 | ; eliminate more of this once we rewrite the string instructions. 8 | ; [345] 9 | ; 10 | .TOC "INCREMENT BYTE POINTER SUBROUTINE" 11 | 12 | ;THIS SUBROUTINE IS CALLED BY THE INSTRUCTIONS ILDB, IDPB AS 13 | ;WELL AS THE MICROCODED 10/11 INTERFACE HANDLER. 14 | ;CALL WITH BYTE DISP TESTING FPD AND SIGN OF P-S 15 | ;[TIME=2+2(BP OVFLO)] 16 | 17 | .IFNOT/XADDR 18 | =010 ;BR12 IRELEVANT 19 | IBPS: STORE,RETURN4 ;SIMPLE, NO OVERFLOW 20 | FE_#,#/36.,GEN AR+1,TIME/2T, ;HERE IF OVRFLO OF WORD 21 | ARX_AR,J/NXTWRD 22 | AR_BR,RETURN4 ;FPD WAS SET, RESTORE AR 23 | AR_BR,RETURN4 ; AND CONVERT TO LDB OR DPB 24 | ;TEST BR12 ONLY 25 | NXTWRD: AR_AR+1,P_FE-S,STORE, 26 | TIME/2T,RETURN4 27 | 28 | 29 | .TOC "BYTE EFFECTIVE ADDRESS EVALUATOR - NO XADDR" 30 | 31 | ;ENTER WITH POINTER IN AR, ARX, AND BR 32 | ;RETURN1 WITH (EA) LOADING INTO AR AND ARX, 33 | ;FPD SET, P IN SC, AND S IN FE 34 | ;[TIME=4+1(INDEXED)+?(INDIRECT)] 35 | 36 | BYTEA: MEM_AR,FE_S,SET FPD, ;PUT AWAY UPDATED POINTER 37 | EA MOD DISP ;EVAL BP ADDR 38 | =1100 39 | BFETCH: GEN ARX,BYTE READ,RETURN1 ;START DATA FETCH 40 | GEN ARX+XR,BYTE READ,RETURN1 ;ADDRESS IS INDEXED 41 | GEN ARX,BYTE INDRCT,J/BYTEI ;DO INDIRECT 42 | GEN ARX+XR,BYTE INDRCT,J/BYTEI ;INDIRECT INDEXED!!! 43 | 44 | BYTEI: ARX_MEM,SKP INTRPT ;WAIT FOR INDIRECT WORD 45 | =0 EA MOD DISP,J/BFETCH ;PROCEED IN ADDR EVAL 46 | SR DISP,J/CLEAN ;INTERRUPTED, CLEAN UP AS REQ'D 47 | .IF/XADDR 48 | ;IBP SUBROUTINE 49 | ; CALL WITH BP IN AR, P_P-S, BYTE DISP 50 | 51 | =010 52 | IBPS: STORE,RETURN4 ;SIMPLE CASE 53 | FE_#,#/36.,GEN AR+1,TIME/2T, ;POINTER OVERFLOW, B12=0 54 | J/NXTWRD 55 | AR_BR,RETURN4 56 | AR_BR,RETURN4 57 | =0 58 | NXTWRD: P_FE-S,AR_AR+1,TIME/2T, ;SINGLE WORD BP 59 | STORE,RETURN4 60 | .TOC "BYTE EFFECTIVE ADDRESS EVALUATOR - XADDR" 61 | ;HERE TO EVALUATE EFFECTIVE ADDRESS OF BYTE POINTER. 62 | ; ENTER AT BYTEA WITH BYTE DISP (SCAD0=0), EXCEPT FOR EXTENDED 63 | ; INSTRUCTION SET, WHICH MUST GET SECOND PART OF POINTER FROM 64 | ; AC AND MUST NOT SET FPD, AND THEREFORE ENTERS AT BFETCH (FOR 65 | ; SINGLE-WORD POINTERS) OR BYTEI (FOR LONG POINTERS). 66 | 67 | =100 68 | BYTEA: MEM_AR,FE_S,SET FPD, 69 | EA MOD DISP,J/BFETCH 70 | READ BP2,FE_S,J/BPART2 ;GET SECOND WORD 71 | MEM_AR,SKP -VMA SEC0,J/BYTEA ;B12=1. OBEY IF NOT SEC0 72 | = 73 | =0000 74 | BXA: GEN ARX,GLOBAL,BYTE INDRCT, 75 | SKP INTRPT,J/BYTEI 76 | GEN ARX+XR,GLOBAL,BYTE INDRCT, 77 | SKP INTRPT,J/BYTEI 78 | GEN ARX,GLOBAL,BYTE INDRCT, 79 | SKP INTRPT,J/BYTEI 80 | GEN ARX+XR,GLOBAL,BYTE INDRCT, 81 | SKP INTRPT,J/BYTEI 82 | 83 | GEN ARX,GLOBAL,BYTE READ,RETURN1 84 | GEN ARX+XR,GLOBAL,BYTE READ,RETURN1 85 | GEN ARX,GLOBAL,BYTE READ,RETURN1 86 | GEN ARX+XR,GLOBAL,BYTE READ,RETURN1 87 | 88 | FE_#,#/24,J/PF24 ;ILLEGAL FORMAT INDIRECT WORD 89 | FE_#,#/24,J/PF24 90 | FE_#,#/24,J/PF24 91 | FE_#,#/24,J/PF24 92 | 93 | BFETCH: 94 | GEN AR,BYTE READ,RETURN1 95 | GEN AR+XR,INDEXED,BYTE READ,RETURN1 96 | GEN AR,BYTE INDRCT, 97 | SKP INTRPT,J/BYTEI 98 | GEN AR+XR,INDEXED,BYTE INDRCT, 99 | SKP INTRPT,J/BYTEI 100 | 101 | BPART2: SET FPD ;SET BEFORE FAULTING 102 | =0 103 | BYTEI: ARX_MEM,LONG EN,J/BYTEI2 104 | ARX_MEM,TAKE INTRPT 105 | BYTEI2: AR_ARX,XR,EA MOD DISP,TIME/3T,J/BXA 106 | .ENDIF/XADDR 107 | .TOC "LOAD BYTE SUBROUTINE" 108 | ;ENTER WITH S IN FE, P+S IN SC, AND AR LOAD IN PROGRESS 109 | ;SKP INTERRUPT AT ENTRY IS OPTIONAL 110 | ;RETURN2 WITH BYTE RIGHT JUSTIFIED IN AR 111 | ;[TIME=7] 112 | =0 113 | LDB1: AR_MEM,SC_#-SC,#/36.,SKP SCAD0, ;36-(P+S) 114 | TIME/3T,J/LDB2 115 | AR_MEM,SR DISP,J/CLEAN ;HERE IF INTERRUPT PENDING 116 | 117 | =0 118 | LDB2: ARX_SHIFT,AR_0S,SC_FE,J/SHIFT ;BYTE IN ARX HI, READY TO SHIFT 119 | ARX_AR,AR_0S, ;P+S > 36, PUT BYTE IN ARX HI 120 | SC_FE+SC,SKP SCAD0 ;ADJUST S AND SHIFT BYTE 121 | 122 | ;PUT BYTE INTO AR RIGHT-JUSTIFIED 123 | ; THIS INSTRUCTION ALSO CALLED ALONE AS A SUBROUTINE 124 | 125 | =0 126 | SHIFT: AR_SHIFT,RETURN2 ;RETURN WITH BYTE IN AR 127 | RETURN2 ;BYTE WAS OFF THE END, RETURN AR=0 128 | 129 | 130 | .TOC "DEPOSIT BYTE SUBROUTINE" 131 | ;ENTER WITH BYTE RIGHT JUSTIFIED IN AR, POINTER IN BR, 132 | ; S IN FE, 36-P IN SC, AND LOAD AR-ARX STARTED 133 | ; SKP IF P>36 134 | ;RETURN3 WITH FINAL STORE IN PROGRESS 135 | ;[TIME=11] 136 | 137 | =0 138 | DPB1: MQ_AR,AR_MEM,ARX_MEM, ;GET WORD TO ROTATE 36-P 139 | GEN FE-SC-1,TIME/3T, ; [303] COMPUTE S-(36-P)-1 140 | SKP SCAD0,J/DPB2 ;CHECK THAT P+S<=36 141 | AR_MEM,RETURN3 ;[226]P>36, STORE NOTHING 142 | 143 | =0 144 | DPB2: FE_SC ;P+S>36, S_36-P 145 | ARX_SHIFT,AR_MQ,SC_FE, ;ARX HAS P,X,S 146 | FE_#-SC,#/72. ;SC_S, FE_72-(36-P)=36+P 147 | SC_#-SC,#/36. ;SC_36-S (KNOWN .LE. P) 148 | AR_SHIFT,ARX_SHIFT, ;S,P,X 149 | SC_FE-SC ;SC_(36+P)-(36-S)=P+S 150 | AR_SHIFT,STORE,RETURN3 ;[335][345] DONE, STORE IT BACK 151 | ;SUBROUTINE TO GET CONTENTS OF SC RIGHT ALIGNED IN AR 152 | ;[TIME=6] 153 | 154 | GETSC: AR0-8_SC ;PUT SC INTO AR 155 | ARX_AR,SC_#,#/9.,J/SHIFT ;HERE WITH DATA IN AR0-8 156 | ; 157 | ; Some one word global subroutines. 158 | ; 159 | .IF/OWGBP 160 | =0 161 | GTST: SC_P-#,#/45, SKP SCAD0,J/GTST1 ;TEST FOR ONE WORD GLOBAL [265] 162 | RETURN1 ;NOT IN SEC 0 163 | =0 164 | GTST1: BR/AR,RETURN2 ;DO OWG CODE 165 | RETURN1 ;NOT OWG 166 | ; 167 | ;CNV2WD -- ROUTINE TO CALCULATE NEW P FIELD OF ONE WORD GLOBAL BYTE 168 | ;POINTER AND STORE NEW POINTER. A TABLE IS IN THE EPT STARTING AT 700 169 | ;AND THIS IS USED TO CONVERT THE OWGBP TO A TWO WORD GLOBAL POINTER 170 | ;AND TO CALCULATE THE NEW P FOR THE STORE. 171 | ; 172 | ;ENTER WITH P-45 IN SC 173 | ; BYTE POINTER IN BR 174 | ; 175 | 176 | CNV2WD: AR_VMA HELD ;[326] GET FULL VMA FOR WRITE 177 | MQ_AR ;SAVE FOR WRITE BACK 178 | AR0-8_SC ;P-45 IN AR 179 | =0* AR_ARX (AD),ARX_AR,SC_#,#/9., ;SWAP AROUND FOR SHIFT 180 | CALL [SHIFT] ;NOW SHIFT IT TO BIT 35 181 | AR_AR*.5 LONG ;MAKE IT AN OFFSET, LSB IN ARX0 182 | VMA_#+AR32-35,#/700 ;POINT TO RIGHT WORD 183 | LOAD AR,EPT REF CACHE ;GET AND CACHE DATA FROM EPT [260] 184 | MB WAIT,GEN ARX,SKP AD0 ;TEST FOR EVEN/ODD 185 | =0 186 | CNV01: FE_S,ARX_AR,J/CNV02 ;SKIP SWAP 187 | AR_AR SWAP,J/CNV01 ;SWAP HALVES FOR ODD 188 | CNV02: BRX/ARX,GEN AR,SKP AD NE ;DID WE GET 0 DATA ? 189 | =0 BR/AR,J/UUO ;P=77 OR EPT NOT SET UP 190 | RSTR VMA_MQ,RETURN1 ;[307][326]NO, RESTORE VMA AND EXIT 191 | .ENDIF/OWGBP 192 | -------------------------------------------------------------------------------- /kl10/v2(411)/source/klx.ccl: -------------------------------------------------------------------------------- 1 | klx=klx,edhis,DEFine,MACRO,BASic,SKPjmp,SHIFT,ARITH,fp,EXTexp,blt,byte,bytsub,EIS,IO 2 | -------------------------------------------------------------------------------- /kl10/v2(411)/source/klx.mic: -------------------------------------------------------------------------------- 1 | .TOC "KL10 Microcode with KL Paging" 2 | 3 | .SET/SNORM.OPT=1 4 | .SET/XADDR=1 5 | .SET/EPT540=1 6 | .SET/LONG.PC=1 7 | .SET/MODEL.B=1 8 | .SET/KLPAGE=1 9 | .SET/FPLONG=0 10 | .SET/BLT.PXCT=1 11 | .SET/SMP=0 ;No SMP (DOES RPW instead of RW FOR DPB, IDPB) 12 | .SET/EXTEXP=1 13 | .SET/MULTI=1 ;DOES NOT CACHE PAGE TABLE DATA 14 | .SET/NOCST=1 ;DOES NOT DO AGE UPDATES, ETC. WITH CST = 0 15 | .SET/OWGBP=1 ;ONE WORD GLOBAL BYTE POINTERS 16 | .SET/IPA20=1 ;IPA20-L 17 | .SET/GFTCNV=0 ;DO NOT DO GFLOAT CONVERSION INSTRUCTIONS [273] 18 | ;SAVES 75 WORDS. MONITOR WILL TAKE CARE OF THEM. 19 | -------------------------------------------------------------------------------- /kl10/v2(411)/source/rel10.ctl: -------------------------------------------------------------------------------- 1 | .assign dec sys 2 | .assign dec rel 3 | .assign dec unv 4 | .set watch version 5 | .set dskful pause 6 | .DIR/ch *.CCL,*.MIC,*.MAC,*.REL,*.CTL,*.RAM,*.MCB,CONVRT.SAV 7 | . 8 | 9 | 10 | !ASSEMBLE TOPS-10 MICROCODE 11 | 12 | .RUN MICRO 13 | *@KLX.CCL 14 | 15 | 16 | !NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 17 | 18 | !TOPS-10 MODEL B 19 | .RU CONVRT 20 | *KLX/R 21 | 22 | 23 | !NOW DO THE SECOND STEP OF CONVERSION THE RSXT10 IS A SUPPORTED TOPS-10 24 | !PROGRAM 25 | 26 | !TOPS-10 MODEL B 27 | .R RSXT10 28 | CONVERT KLX.RAM KLX.MCB 29 | EXIT 30 | 31 | 32 | 33 | !THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 34 | !HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 35 | .DIR *.RAM,*.MCB 36 | . 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /kl10/v2(411)/source/shift.mic: -------------------------------------------------------------------------------- 1 | .TOC "ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO" 2 | 3 | .DCODE 4 | 240: I, B/0, J/ASH 5 | I, B/0, J/ROT 6 | I, B/2, J/LSH 7 | I, J/JFFO 8 | I, B/1, J/ASHC 9 | I, J/ROTC 10 | I, J/LSHC 11 | EA, J/UUO 12 | .UCODE 13 | 14 | ;ENTER WITH 0,E IN AR 15 | ; NOTE THAT VALUES OF SC GREATER THAN 36 16 | ; CAUSE THE SHIFTER TO SELECT ARX. 17 | 18 | =0****00***0 19 | LSH: AR_AC0,ARL/AD,ARX_0.M,SC_EA, 20 | SKP AR18,J/SHR1 21 | 22 | JFFO: AR_AC0,SKP AD NE,SC_#,#/6 23 | = 24 | =0 AC1_AR,I FETCH,J/NOP ;AC WAS ZERO, NO JUMP 25 | ARX+MQ_0.M,FE_P,SKP SCAD NE, ;TEST FIRST 6 BITS 26 | AR_SHIFT,ARL/SH ;DISCARD THEM 27 | =0 28 | JFFO1: AR_SHIFT,FE_P,SKP SCAD NE, ;TEST NEXT 6 BITS 29 | ARX_ARX-1,J/JFFO1 ;LOOP, COUNTING, TILL NE 30 | P_FE,ARR_0.S, ;RESTORE 6 NON-ZERO BITS 31 | ARX_ARX*-6 ;GET POS GROUP COUNT*6 32 | =0 33 | JFFO2: SKP AR0,AR_2(AR+1), ;LOOP TO FIND A 1 34 | ARX_ARX+1,J/JFFO2 ;COUNTING AS WE GO 35 | AR_ARX-1,FETCH,J/STRAC1 36 | 37 | =0****00***0 38 | ASH: SC_EA,SKP AR18, ;GET SHIFT AMOUNT 39 | AR_0S,J/ASHL ;SET LOW PART = 0 40 | ROT: AR_AC0,ARX_AC0,SC_EA,SKP AR18 41 | = 42 | ;SINGLE-WORD LSH/ROT 43 | ; FOR ROT, B=0, AR AND ARX BOTH CONTAIN AC 44 | ; FOR LSH, B=2, AR HAS AC, ARX IS ZERO 45 | 46 | =00 47 | SHR1: AR_SHIFT,SC_#+SC,#/-36., ;DO POS (LEFT) SHIFT, CHK RANGE 48 | SKP SCAD0,J/SHR2 49 | ARX_AR (AD),AR_ARX (ADX), 50 | SC_#+SC,#/36., 51 | B DISP,SKP SCAD0,J/SHR1 ;MAKE NEG SHIFT TO EQUIV POS 52 | SHR2: AR_SHIFT,SC_#+SC,#/-36., 53 | SKP SCAD0,J/SHR2 ;BRING SC INTO RANGE 54 | AC0_AR,I FETCH,J/NOP ;DONE 55 | .TOC "ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC" 56 | 57 | =0****00***0 58 | ASHC: SC_EA,SKP AR18, ;SETUP SHIFT COUNT 59 | AR_AC1*2,J/ASHL ;GET LOW WORD 60 | ROTC: ARX_AC1 61 | = AR_AC0,SC_EA,SKP AR18 ;SETUP BOTH AC'S 62 | =0 63 | ROT3: MQ_SHIFT,ARX_AR (AD), 64 | AR_ARX (ADX),J/ROT4 65 | ARX_AR (AD),AR_ARX (ADX), 66 | SC_#+SC,#/36.,SKP SCAD0,J/ROT3 67 | 68 | ROT4: AR_MQ,ARX_SHIFT, 69 | SC_#+SC,#/-36.,SKP SCAD0 70 | =0 MQ_SHIFT,ARX_AR (AD), 71 | AR_ARX (ADX),J/ROT4 72 | STDAC: AC0_AR,AR_ARX,I FETCH,J/STRAC1 73 | 74 | 75 | 1004: ;NEXT TO UUO 76 | LSHC: ARX_AC1,MQ_0.M 77 | LSH1: AR_AC0,SC_EA,FE_#,#/36.,SKP AR18 78 | =0 79 | LSH2: MQ_SHIFT,AR_ARX (ADX), 80 | ARX/MQ,FE_#,#/-36.,J/LSH3 81 | ARX_AR (AD),AR_0.M,MQ_ARX, 82 | SC_FE+SC,SKP SCAD0,J/LSH2 83 | 84 | LSH3: AR_MQ,ARL/AD,ARX_SHIFT,MQ_0.M, 85 | SC_FE+SC,SKP SCAD0 86 | =0 MQ_SHIFT,AR_ARX (ADX),ARX/MQ,J/LSH3 87 | AC0_AR,AR_ARX,I FETCH,J/STRAC1 88 | .TOC "ARITHMETIC SHIFTS -- ASH, ASHC" 89 | 90 | ;COMMON CODE FOR ARITHMETIC SHIFTS 91 | 92 | =0 93 | ASHL: ARX_AR,AR_AC0, ;INPUT NOW IN AR LONG 94 | SKP SC NE,J/ASHL1 ;CHECK FOR NULL SHIFT 95 | ARX_AR,AR_AC0, ;HERE IF RIGHT SHIFT 96 | SC_#+SC,#/36.,SKP SCAD0 ;CHECK FOR LONG ONE 97 | =0 98 | ASHR1: BR/AR,ARX_SHIFT,AR_SIGN,J/ASHR2 ;LOW OUTPUT TO ARX 99 | ARX_AR,AR_SIGN, ;HERE IF SHIFT COUNT .GT. 36 100 | SC_#+SC,#/36., ;BRING COUNT UP BY 36 101 | SKP SCAD0,J/ASHR1 ;LOOP TILL COUNT REASONABLE 102 | 103 | ASHR2: BRX/ARX,ARX_BR, ;HIGH INPUT TO ARX 104 | B DISP,J/ASHX 105 | 106 | ;HERE FOR LEFT ARITHMETIC SHIFT 107 | 108 | =0 109 | ASHL1: I FETCH,J/NOP ;SHIFT 0 IS A NOP 110 | BR_AR LONG,AR_SIGN ;SAVE INPUT, GEN SIGN WORD 111 | BR/AR,AR_BR*2 LONG ;SAVE SIGN, GET MAGNITUDE BITS 112 | =0* 113 | ASHL2: BRX/ARX,ARX_AR,AR_BR, ;HI IN TO ARX, LOW TO BRX 114 | CALL,J/SHIFT ;CALL SHIFTER TO GET BITS LOST 115 | SKP AR NE BR ;ANY BITS DIFFERENT FROM SIGN? 116 | =0 117 | ASHL3: AR_ARX,ARX_BRX, ;RESTORE HI TO AR, LOW TO ARX 118 | GEN #+SC,#/-36.,SKP SCAD0,J/ASHL4 119 | SET AROV,J/ASHL3 ;BITS SHIFTED OUT NE SIGN 120 | =0 121 | ASHL4: AR_ARX,ARX_0S, ;HERE IF E .GT. 36 122 | SC_#+SC,#/-36.,J/ASHL2 ;SHIFT 36 PLACES, TRY AGAIN 123 | MQ_SHIFT,AR_BRX,CLR ARX, ;HIGH OUTPUT TO MQ, 124 | SC_#+SC,#/-1,B DISP ;COMPENSATE FOR EXTRA SHIFT 125 | =0 126 | ASHL5: AR_BR,BRX/ARX,ARX/MQ, ;SIGN TO AR, HIGH OUT TO ARX 127 | SC_#,#/35., ;READY TO COMBINE THEM 128 | B DISP,J/ASHX ;STORE AS APPROPRIATE 129 | ARX_SHIFT,J/ASHL5 ;LOW OUTPUT TO ARX 130 | 131 | ;HERE TO GET FINAL RESULTS. 132 | 133 | =0 134 | ASHX: AR_SHIFT,I FETCH,J/STORAC ;HERE AFTER ASH 135 | AR_SHIFT,ARX_BRX, ;HERE AFTER ASHC 136 | SC_#,#/35.,J/ST2AC 137 | -------------------------------------------------------------------------------- /kl10/v2(411)/source/ucode.doc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | UCODE.DOC -- v2(411) 5 | December 1985 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Copyright (C)1977,1985,1986 37 | Digital Equipment Corporation, Maynard, Mass. 38 | 39 | 40 | This software is furnished under a license for use only on a single 41 | computer system and may be copied only with the inclusion of the above 42 | copyright notice. This software, or any other copies thereof, may not 43 | be provided or otherwise made available to any other person except for 44 | use on such system and to one who agrees to these license terms. 45 | Title to and ownership of the software shall at all times remain in 46 | DEC. 47 | 48 | The information in this software is subject to change without notice 49 | and should not be construed as a commitment by Digital Equipment 50 | Corporation. 51 | 52 | DEC assumes no responsibility for the use or reliability of its 53 | software on equipment which is not supplied by DEC. 54 | UCODE.DOC Microcode Release Document Page 2 55 | 56 | 57 | UCODE.DOC -- v2(411) 58 | december 1985 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 1.0 SUMMARY 69 | 70 | 71 | 1. Microcode version 2(411) is the twelfth release of the KL10 72 | microcode. 73 | 74 | This is the seventh release of the KL10 microcode that 75 | supports an 'Extended KL10' described in the Hardware 76 | Reference Manual. Only KLX.RAM supports the 'Extended KL10'. 77 | (KLX.MCB is derived from KLX.RAM and does support the 78 | 'Extended KL10'.) 79 | 80 | The KL10 microcode is different for TOPS-10 and TOPS-20 81 | systems. The KL10 microcode is different for model A and 82 | model B processors. (What engineering calls a model B 83 | processor is sometimes known as a KL10-PV.) The TOPS-10 84 | microcode for model A processors is called U.RAM, for model B 85 | processors it is UB.RAM. The TOPS-20 microcode for model A 86 | processors is called KLL.RAM, for model B processors it is 87 | called KLX.RAM. The PDP-11 front end requires different 88 | formats of the microcode files. These translated files have 89 | different names. TOPS-10 model A: UA.MCB. TOPS-10 model B: 90 | UB.MCB. TOPS-20 model A: KLA.MCB. TOPS-20 model B: 91 | KLX.MCB. 92 | 93 | 2. The KL10 microcode is not dependent on any monitor, but 94 | because of hardware differences between the various -10 95 | processors, a monitor must be built specifically for the 96 | KL10. KL10 microcode version 2(411) has been tested with the 97 | TOPS-10 7.03 monitor. 98 | 99 | See LCREV for information regarding microcode requirements for various 100 | hardware revision levels. 101 | 102 | 103 | 104 | 2.0 KNOWN DEFICIENCIES 105 | 106 | At present there are no known deficiencies in microcode 2(411). 107 | UCODE.DOC Microcode Release Document Page 3 108 | 109 | 110 | 3.0 FIXED PROBLEMS 111 | 112 | The following problems have been fixed: 113 | 114 | 411 24 July 85--Another try at the SMP fix. PI cycle 7 must go to 115 | memory for interlock to work, so delete use of the cache on the 116 | PHYS REF. This may have performance drawbacks for TOPS-20 and 117 | TOPS-10 uniprocessor, so there may have to be two versions of 118 | microcode (again!) to resolve this. 119 | 410 11 July 85--Force PI functions 3 and 7 to use RPW cycles, so 120 | SMP will work properly. Save a couple words in the process. 121 | 407 18 June 85--Change macro ARX_2 to ARX_2+MQ0 and fix related bug 122 | in ADJBP by clearing MQ on entry to instruction. This prevents 123 | ADJBP from computing the wrong byte capacities for OWGs with 124 | byte sizes of 6 and 18. Also reverse AC1 and AC2 in DB2WD. 125 | That was causing CVTDBx to reverse the byte pointer halves if 126 | an OWG was used, ruining things entirely. 127 | 406 11 Mar 85--Define R17 as HARDPFW, and save the hard page fail word 128 | there for TOPS-10, thus protecting it from getting clobbered by a 129 | later soft page fail. 130 | 400 9 Aug 84--Initial first edit number for releasable version 2.0. 131 | 132 | 133 | 134 | 4.0 RELATED DOCUMENTATION 135 | 136 | 137 | The microcode is implicitly documented in the System Reference Manual, 138 | in that it is an implementation of a PDP-10. The only other 139 | documentation is in the listing and prints of the KL10 processor. 140 | 141 | 142 | 143 | 144 | 145 | 146 | 5.0 FUNCTION OF THE DIFFERENT MICROCODE VERSIONS. 147 | 148 | 149 | U.RAM is the microprogram which directs the operation of the KL10 150 | model A hardware to emulate the behavior of a PDP-10 for a TOPS-10 151 | system. UB.RAM is the microprogram which directs the operation of the 152 | KL10 model B hardware (KL10-PV) to emulate the behavior of a PDP-10 153 | for a TOPS-10 system. UB.RAM should look exactly like U.RAM to PDP-10 154 | software. 155 | 156 | 157 | 158 | KLL.RAM is the microprogram which directs the operation of the KL10 159 | model A hardware to emulate the behavior of a PDP-10 for a TOPS-20 160 | system. KLX.RAM is the microprogram which directs the operation of 161 | the KL10 model B hardware to emulate the behavior of a PDP-10 for a 162 | TOPS-20 system. KLX.RAM implements the 'Extended KL10' explained in 163 | the Hardware Reference Manual. 164 | UCODE.DOC Microcode Release Document Page 4 165 | 166 | 167 | [End of UCODE.RND] 168 | -------------------------------------------------------------------------------- /kl10/v2.1(442)/source/bytsub.mic: -------------------------------------------------------------------------------- 1 | .TOC "BYTE GROUP -- Some Old Style Subroutines" 2 | ; 3 | ; This file once included all of the byte instruction code. 4 | ; With the coming of the new version of the byte instructions, 5 | ; however, much of this stuff became unnecessary and has 6 | ; been eliminated as a result. It is hoped to be able to 7 | ; eliminate more of this once we rewrite the string instructions. 8 | ; [345] 9 | ; 10 | .TOC "INCREMENT BYTE POINTER SUBROUTINE" 11 | 12 | ; 13 | ; This subroutine is now called only by the 10/11 interface handler. 14 | ; Call testing sign of P-S. [Time=2+2(BP OVFLO)] 15 | ; CALL WITH BP IN AR, P_P-S,SKP SCAD0. 16 | ; 17 | =0 18 | IBPS: STORE,RETURN4 ;SIMPLE CASE 19 | FE_#,#/36.,GEN AR+1,TIME/2T ;[424] POINTER OVERFLOW, B12=0 20 | P_FE-S,AR_AR+1,TIME/2T, ;[424] SINGLE WORD BP 21 | STORE,RETURN4 22 | 23 | 24 | .TOC "BYTE EFFECTIVE ADDRESS EVALUATOR - XADDR" 25 | ; 26 | ; This code is no longer used by the single byte instructions. 27 | ; The string instructions get the second part of a two word pointer 28 | ; from an AC, and they do not set FPD. Thus, they enter at BFETCH 29 | ; (for single word pointers) or BYTEI (long word pointers). The 30 | ; DTE interface can only use single word pointers, and thus no longer 31 | ; requires the two word pointer test. [424] 32 | ; In the interest of saving space, we are now using the same indirec- 33 | ; tion evaluation technique as the single byte instructions. [427] 34 | ; 35 | BYTEA: MEM_AR,FE_S,SET FPD,EA MOD DISP ;[424] 36 | =1100 ;[427] 37 | BFETCH: GEN AR,BYTE READ,RETURN1 38 | GEN AR+XR,INDEXED,BYTE READ,RETURN1 39 | GEN AR,BYTE INDRCT,SKP INTRPT,J/BYTEI 40 | GEN AR+XR,INDEXED,BYTE INDRCT, 41 | SKP INTRPT 42 | =00 ;[427] 43 | BYTEI: ARX_MEM,LONG EN,CALL [BYTIND] ;[427] Unwind indirection chain 44 | ARX_MEM,SR DISP,J/CLEAN ;[427] Interrupted. Clean up first 45 | XR,EA MOD DISP,TIME/3T,J/BFETCH ;[427] Local at end. Untangle above 46 | XR,EA MOD DISP,TIME/3T ;[427] Global at end. Indexed? 47 | =1110 GEN ARX,GLOBAL,BYTE READ,RETURN1;No. Read global word 48 | GEN ARX+XR,GLOBAL,BYTE READ, ;Yes. Add index and do likewise 49 | RETURN1 50 | .TOC "Load and Deposit Byte Subroutines" 51 | ; 52 | ; Load byte subroutine. Enter with S in FE, P+S in SC, and 53 | ; AR load in progress. SKP INTRPT at entry is optional. 54 | ; RETURN2 WITH BYTE RIGHT JUSTIFIED IN AR. [TIME=7] 55 | ; 56 | =0 57 | LDB1: AR_MEM,SC_#-SC,#/36.,SKP SCAD0, ;36-(P+S) 58 | TIME/3T,J/LDB2 59 | AR_MEM,SR DISP,J/CLEAN ;HERE IF INTERRUPT PENDING 60 | 61 | =0 62 | LDB2: ARX_SHIFT,AR_0S,SC_FE,J/SHIFT ;BYTE IN ARX HI, READY TO SHIFT 63 | ARX_AR,AR_0S, ;P+S > 36, PUT BYTE IN ARX HI 64 | SC_FE+SC,SKP SCAD0 ;ADJUST S AND SHIFT BYTE 65 | 66 | ;PUT BYTE INTO AR RIGHT-JUSTIFIED 67 | ; THIS INSTRUCTION ALSO CALLED ALONE AS A SUBROUTINE 68 | 69 | =0 70 | SHIFT: AR_SHIFT,RETURN2 ;RETURN WITH BYTE IN AR 71 | RETURN2 ;BYTE WAS OFF THE END, RETURN AR=0 72 | ; 73 | ; Deposit byte subroutine. Enter with byte right justified in AR, 74 | ; pointer in BR, S in FE, 36-P in SC, and LOAD AR-ARX in progress. 75 | ; Skip if P > 36. Return3 with final store going. [TIME=11] 76 | ; 77 | =0 78 | DPB1: MQ_AR,AR_MEM,ARX_MEM,GEN FE-SC-1,;[303] Keep byte, get data word. 79 | SKP SCAD0,TIME/3T,J/DPB2 ; Is P+S <= 36? 80 | AR_MEM,RETURN3 ;[226]P>36, STORE NOTHING 81 | ; 82 | =0 83 | DPB2: FE_SC ;P+S>36, S_36-P 84 | ARX_SHIFT,AR_MQ,SC_FE, ;ARX HAS P,X,S 85 | FE_#-SC,#/72. ;SC_S, FE_72-(36-P)=36+P 86 | SC_#-SC,#/36. ;SC_36-S (KNOWN .LE. P) 87 | AR_SHIFT,ARX_SHIFT, ;S,P,X 88 | SC_FE-SC ;SC_(36+P)-(36-S)=P+S 89 | AR_SHIFT,STORE,RETURN3 ;[335][345] DONE, STORE IT BACK 90 | 91 | ;SUBROUTINE TO GET CONTENTS OF SC RIGHT ALIGNED IN AR 92 | ;[TIME=6] 93 | 94 | GETSC: AR0-8_SC ;PUT SC INTO AR 95 | ARX_AR,SC_#,#/9.,J/SHIFT ;HERE WITH DATA IN AR0-8 96 | -------------------------------------------------------------------------------- /kl10/v2.1(442)/source/klx.ccl: -------------------------------------------------------------------------------- 1 | klx=klx,edhis,DEFine,MACRO,BASic,SKPjmp,SHIFT,ARITH,fp,EXTexp,blt,byte,bytsub,EIS,IO 2 | -------------------------------------------------------------------------------- /kl10/v2.1(442)/source/klx.dir: -------------------------------------------------------------------------------- 1 | 2 | Read Density:1600 Parity:Odd 9-Track Write enabled REELID:MCRD 3 | 4 | BACKUP reel number 1; start save set: 5 | by version 5(614) at 10:18:01 on 1-Aug-86 6 | written on MTA260: on S/N 1026 at 1600 9-track 7 | under TOPS-10 system 703A(31320): RN301A DEC10 Development 8 | 9 | KLX DIR 3 <***> 616214 16-Jul-86 10 | ARITH MIC 24 <***> 530762 19-Mar-86 11 | BASIC MIC 41 <***> 003431 29-May-86 12 | BLT MIC 17 <***> 201447 23-May-86 13 | BYTE MIC 42 <***> 505745 14-Mar-86 14 | BYTSUB MIC 6 <***> 006705 22-May-86 15 | CONVRT EXE 32 <***> 207437 2-Feb-77 (11) 16 | DEFINE MIC 61 <***> 664700 23-May-86 17 | EDHIS MIC 111 <***> 046757 29-May-86 18 | EIS MIC 56 <***> 354346 27-May-86 19 | EXTEXP MIC 43 <***> 545662 8-Feb-86 20 | FP MIC 34 <***> 347522 8-Feb-86 21 | IO MIC 61 <***> 643554 17-Mar-86 22 | KLX CCL 1 <***> 666574 8-Feb-86 23 | KLX DOC 20 <***> 524205 23-Jul-86 24 | KLX MCB 55 <***> 777703 29-May-86 25 | KLX MCR 1287 <***> 337612 29-May-86 26 | KLX MIC 1 <***> 704640 8-Mar-86 27 | KLX RAM 68 <***> 772021 29-May-86 28 | MACRO MIC 73 <***> 222522 29-May-86 29 | MICRO EXE 96 <***> 554223 29-Feb-84 34(270) 30 | MICRO MAC 201 <***> 156145 31-Aug-78 31 | REL10 CTL 1 <***> 457206 10-Jul-86 32 | REL20 CTL 2 <***> 560442 3-Jun-86 33 | SHIFT MIC 13 <***> 264246 3-Apr-86 34 | SKPJMP MIC 35 <***> 321017 29-May-86 35 | STATS MIC 16 <***> 454112 8-Apr-86 36 | C UNV 110 <***> 531231 30-Jan-84 37 | Total of 2510 blocks in 28 files Checksum = 332414 38 | 39 | BACKUP reel number 1; end save set: 40 | by version 5(614) at 10:18:15 on 1-Aug-86 41 | written on MTA260: on S/N 1026 at 1600 9-track 42 | under TOPS-10 system 703A(31320): RN301A DEC10 Development 43 | 44 | -------------------------------------------------------------------------------- /kl10/v2.1(442)/source/klx.mic: -------------------------------------------------------------------------------- 1 | .TOC "KL10 Microcode with KL Paging" 2 | 3 | .SET/SNORM.OPT=1 4 | .SET/FPLONG=0 5 | .SET/EXTEXP=1 6 | .SET/MULTI=1 ;DOES NOT CACHE PAGE TABLE DATA 7 | .SET/NOCST=1 ;DOES NOT DO AGE UPDATES, ETC. WITH CST = 0 8 | .SET/OWGBP=1 ;ONE WORD GLOBAL BYTE POINTERS 9 | .SET/IPA20=1 ;IPA20-L 10 | .SET/GFTCNV=0 ;DO NOT DO GFLOAT CONVERSION INSTRUCTIONS [273] 11 | ;SAVES 75 WORDS. MONITOR WILL TAKE CARE OF THEM. 12 | -------------------------------------------------------------------------------- /kl10/v2.1(442)/source/rel10.ctl: -------------------------------------------------------------------------------- 1 | .assign dec sys 2 | .assign dec rel 3 | .assign dec unv 4 | .set watch version 5 | .set dskful pause 6 | .DIR/ch *.CCL,*.MIC,*.MAC,*.REL,*.CTL,*.RAM,*.MCB,CONVRT.EXE 7 | . 8 | 9 | 10 | !ASSEMBLE TOPS-10 MICROCODE 11 | 12 | .RUN MICRO 13 | *@KLX.CCL 14 | 15 | 16 | !NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 17 | 18 | !TOPS-10 MODEL B 19 | .RU CONVRT 20 | *KLX/R 21 | 22 | 23 | !NOW DO THE SECOND STEP OF CONVERSION THE RSXT10 IS A SUPPORTED TOPS-10 24 | !PROGRAM 25 | 26 | !TOPS-10 MODEL B 27 | .R RSXT10 28 | CONVERT KLX.RAM KLX.MCB 29 | EXIT 30 | 31 | 32 | 33 | !THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 34 | !HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 35 | .DIR *.RAM,*.MCB 36 | . 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /kl10/v2.1(442)/source/rel20.ctl: -------------------------------------------------------------------------------- 1 | !THIS IS A TOPS-20 CONTROL FILE FOR RELEASE OF THE KL MICROCODE, 2 | !MODEL B - TOPS-20 MONITOR. 3 | !THIS FILE FOR V2(442) RELEASE - RELEASE 6.1 OF TOPS-20 4 | 5 | !June 3, 1986 6 | 7 | 8 | 9 | 10 | 11 | !GET CHECKSUMS OF ALL RELEVENT FILES FOR ASSEMBLING BOTH MICROCODES 12 | !ALL CHECKSUMS TAKEN BELOW MUST MATCH IN ORDER TO PROVE THE 13 | !MICROCODE IS CORRECT 14 | 15 | @DIR *.CCL,*.MIC,*.MAC,*.REL,*.CTL,CONVRT.EXE, 16 | @CHECKSUM SEQU 17 | @ 18 | 19 | 20 | 21 | !NOTE .EXE FILES CANNOT BE CHECKSUMMED IF THEY ARE REASSEMBLED THE 22 | !CHECKSUMS WILL NOT MATCH IN ALL CASES THUS MICRO.EXE IS NOT CHECKSUMED 23 | 24 | 25 | 26 | !ASSEMBLE THE MICROASSEMBLER 27 | @load micro.mac/compile 28 | @SAVE 29 | 30 | !GET THE CHECKSUM OF THE .REL FILE 31 | @DIR MICRO.REL, 32 | @CHECKSUM SEQ 33 | @ 34 | 35 | !ASSEMBLE TOPS-20 MODEL B MICROCODE 36 | @run MICRO.EXE 37 | *@KLX.CCL 38 | 39 | 40 | !NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 41 | 42 | 43 | 44 | !TOPS-20 MODEL B 45 | @run CONVRT.EXE 46 | *KLX/R 47 | 48 | 49 | 50 | !NOW DO THE SECOND STEP OF CONVERSION THE RSXFMT IS A SUPPORTED TOPS-20 51 | !PROGRAM 52 | 53 | 54 | !TOPS-20 MODEL B 55 | @rsxfmt 56 | convert klx.ram klx.mcb 57 | EXIT 58 | 59 | 60 | 61 | !THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 62 | !HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 63 | @DIR *.RAM,*.MCB, 64 | @CHECKSUM SEQ 65 | @ 66 | 67 | 68 | !DONE QUIT 69 | 70 | @logo 71 | 72 | -------------------------------------------------------------------------------- /kl10/v2a(442)/source/bytsub.mic: -------------------------------------------------------------------------------- 1 | .TOC "BYTE GROUP -- Some Old Style Subroutines" 2 | ; 3 | ; This file once included all of the byte instruction code. 4 | ; With the coming of the new version of the byte instructions, 5 | ; however, much of this stuff became unnecessary and has 6 | ; been eliminated as a result. It is hoped to be able to 7 | ; eliminate more of this once we rewrite the string instructions. 8 | ; [345] 9 | ; 10 | .TOC "INCREMENT BYTE POINTER SUBROUTINE" 11 | 12 | ; 13 | ; This subroutine is now called only by the 10/11 interface handler. 14 | ; Call testing sign of P-S. [Time=2+2(BP OVFLO)] 15 | ; CALL WITH BP IN AR, P_P-S,SKP SCAD0. 16 | ; 17 | =0 18 | IBPS: STORE,RETURN4 ;SIMPLE CASE 19 | FE_#,#/36.,GEN AR+1,TIME/2T ;[424] POINTER OVERFLOW, B12=0 20 | P_FE-S,AR_AR+1,TIME/2T, ;[424] SINGLE WORD BP 21 | STORE,RETURN4 22 | 23 | 24 | .TOC "BYTE EFFECTIVE ADDRESS EVALUATOR - XADDR" 25 | ; 26 | ; This code is no longer used by the single byte instructions. 27 | ; The string instructions get the second part of a two word pointer 28 | ; from an AC, and they do not set FPD. Thus, they enter at BFETCH 29 | ; (for single word pointers) or BYTEI (long word pointers). The 30 | ; DTE interface can only use single word pointers, and thus no longer 31 | ; requires the two word pointer test. [424] 32 | ; In the interest of saving space, we are now using the same indirec- 33 | ; tion evaluation technique as the single byte instructions. [427] 34 | ; 35 | BYTEA: MEM_AR,FE_S,SET FPD,EA MOD DISP ;[424] 36 | =1100 ;[427] 37 | BFETCH: GEN AR,BYTE READ,RETURN1 38 | GEN AR+XR,INDEXED,BYTE READ,RETURN1 39 | GEN AR,BYTE INDRCT,SKP INTRPT,J/BYTEI 40 | GEN AR+XR,INDEXED,BYTE INDRCT, 41 | SKP INTRPT 42 | =00 ;[427] 43 | BYTEI: ARX_MEM,LONG EN,CALL [BYTIND] ;[427] Unwind indirection chain 44 | ARX_MEM,SR DISP,J/CLEAN ;[427] Interrupted. Clean up first 45 | XR,EA MOD DISP,TIME/3T,J/BFETCH ;[427] Local at end. Untangle above 46 | XR,EA MOD DISP,TIME/3T ;[427] Global at end. Indexed? 47 | =1110 GEN ARX,GLOBAL,BYTE READ,RETURN1;No. Read global word 48 | GEN ARX+XR,GLOBAL,BYTE READ, ;Yes. Add index and do likewise 49 | RETURN1 50 | .TOC "Load and Deposit Byte Subroutines" 51 | ; 52 | ; Load byte subroutine. Enter with S in FE, P+S in SC, and 53 | ; AR load in progress. SKP INTRPT at entry is optional. 54 | ; RETURN2 WITH BYTE RIGHT JUSTIFIED IN AR. [TIME=7] 55 | ; 56 | =0 57 | LDB1: AR_MEM,SC_#-SC,#/36.,SKP SCAD0, ;36-(P+S) 58 | TIME/3T,J/LDB2 59 | AR_MEM,SR DISP,J/CLEAN ;HERE IF INTERRUPT PENDING 60 | 61 | =0 62 | LDB2: ARX_SHIFT,AR_0S,SC_FE,J/SHIFT ;BYTE IN ARX HI, READY TO SHIFT 63 | ARX_AR,AR_0S, ;P+S > 36, PUT BYTE IN ARX HI 64 | SC_FE+SC,SKP SCAD0 ;ADJUST S AND SHIFT BYTE 65 | 66 | ;PUT BYTE INTO AR RIGHT-JUSTIFIED 67 | ; THIS INSTRUCTION ALSO CALLED ALONE AS A SUBROUTINE 68 | 69 | =0 70 | SHIFT: AR_SHIFT,RETURN2 ;RETURN WITH BYTE IN AR 71 | RETURN2 ;BYTE WAS OFF THE END, RETURN AR=0 72 | ; 73 | ; Deposit byte subroutine. Enter with byte right justified in AR, 74 | ; pointer in BR, S in FE, 36-P in SC, and LOAD AR-ARX in progress. 75 | ; Skip if P > 36. Return3 with final store going. [TIME=11] 76 | ; 77 | =0 78 | DPB1: MQ_AR,AR_MEM,ARX_MEM,GEN FE-SC-1,;[303] Keep byte, get data word. 79 | SKP SCAD0,TIME/3T,J/DPB2 ; Is P+S <= 36? 80 | AR_MEM,RETURN3 ;[226]P>36, STORE NOTHING 81 | ; 82 | =0 83 | DPB2: FE_SC ;P+S>36, S_36-P 84 | ARX_SHIFT,AR_MQ,SC_FE, ;ARX HAS P,X,S 85 | FE_#-SC,#/72. ;SC_S, FE_72-(36-P)=36+P 86 | SC_#-SC,#/36. ;SC_36-S (KNOWN .LE. P) 87 | AR_SHIFT,ARX_SHIFT, ;S,P,X 88 | SC_FE-SC ;SC_(36+P)-(36-S)=P+S 89 | AR_SHIFT,STORE,RETURN3 ;[335][345] DONE, STORE IT BACK 90 | 91 | ;SUBROUTINE TO GET CONTENTS OF SC RIGHT ALIGNED IN AR 92 | ;[TIME=6] 93 | 94 | GETSC: AR0-8_SC ;PUT SC INTO AR 95 | ARX_AR,SC_#,#/9.,J/SHIFT ;HERE WITH DATA IN AR0-8 96 | -------------------------------------------------------------------------------- /kl10/v2a(442)/source/klu2_442.tap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/kl10/v2a(442)/source/klu2_442.tap -------------------------------------------------------------------------------- /kl10/v2a(442)/source/klx.ccl: -------------------------------------------------------------------------------- 1 | klx=klx,edhis,DEFine,MACRO,BASic,SKPjmp,SHIFT,ARITH,fp,EXTexp,blt,byte,bytsub,EIS,IO 2 | -------------------------------------------------------------------------------- /kl10/v2a(442)/source/klx.dir: -------------------------------------------------------------------------------- 1 | 2 | Read Density:1600 Parity:Odd 9-Track Write enabled REELID:MCRD 3 | 4 | BACKUP reel number 1; start save set: 5 | by version 5(614) at 10:18:01 on 1-Aug-86 6 | written on MTA260: on S/N 1026 at 1600 9-track 7 | under TOPS-10 system 703A(31320): RN301A DEC10 Development 8 | 9 | KLX DIR 3 <***> 616214 16-Jul-86 10 | ARITH MIC 24 <***> 530762 19-Mar-86 11 | BASIC MIC 41 <***> 003431 29-May-86 12 | BLT MIC 17 <***> 201447 23-May-86 13 | BYTE MIC 42 <***> 505745 14-Mar-86 14 | BYTSUB MIC 6 <***> 006705 22-May-86 15 | CONVRT EXE 32 <***> 207437 2-Feb-77 (11) 16 | DEFINE MIC 61 <***> 664700 23-May-86 17 | EDHIS MIC 111 <***> 046757 29-May-86 18 | EIS MIC 56 <***> 354346 27-May-86 19 | EXTEXP MIC 43 <***> 545662 8-Feb-86 20 | FP MIC 34 <***> 347522 8-Feb-86 21 | IO MIC 61 <***> 643554 17-Mar-86 22 | KLX CCL 1 <***> 666574 8-Feb-86 23 | KLX DOC 20 <***> 524205 23-Jul-86 24 | KLX MCB 55 <***> 777703 29-May-86 25 | KLX MCR 1287 <***> 337612 29-May-86 26 | KLX MIC 1 <***> 704640 8-Mar-86 27 | KLX RAM 68 <***> 772021 29-May-86 28 | MACRO MIC 73 <***> 222522 29-May-86 29 | MICRO EXE 96 <***> 554223 29-Feb-84 34(270) 30 | MICRO MAC 201 <***> 156145 31-Aug-78 31 | REL10 CTL 1 <***> 457206 10-Jul-86 32 | REL20 CTL 2 <***> 560442 3-Jun-86 33 | SHIFT MIC 13 <***> 264246 3-Apr-86 34 | SKPJMP MIC 35 <***> 321017 29-May-86 35 | STATS MIC 16 <***> 454112 8-Apr-86 36 | C UNV 110 <***> 531231 30-Jan-84 37 | Total of 2510 blocks in 28 files Checksum = 332414 38 | 39 | BACKUP reel number 1; end save set: 40 | by version 5(614) at 10:18:15 on 1-Aug-86 41 | written on MTA260: on S/N 1026 at 1600 9-track 42 | under TOPS-10 system 703A(31320): RN301A DEC10 Development 43 | 44 | -------------------------------------------------------------------------------- /kl10/v2a(442)/source/klx.mic: -------------------------------------------------------------------------------- 1 | .TOC "KL10 Microcode with KL Paging" 2 | 3 | .SET/SNORM.OPT=1 4 | .SET/FPLONG=0 5 | .SET/EXTEXP=1 6 | .SET/MULTI=1 ;DOES NOT CACHE PAGE TABLE DATA 7 | .SET/NOCST=1 ;DOES NOT DO AGE UPDATES, ETC. WITH CST = 0 8 | .SET/OWGBP=1 ;ONE WORD GLOBAL BYTE POINTERS 9 | .SET/IPA20=1 ;IPA20-L 10 | .SET/GFTCNV=0 ;DO NOT DO GFLOAT CONVERSION INSTRUCTIONS [273] 11 | ;SAVES 75 WORDS. MONITOR WILL TAKE CARE OF THEM. 12 | -------------------------------------------------------------------------------- /kl10/v2a(442)/source/rel10.ctl: -------------------------------------------------------------------------------- 1 | .assign dec sys 2 | .assign dec rel 3 | .assign dec unv 4 | .set watch version 5 | .set dskful pause 6 | .DIR/ch *.CCL,*.MIC,*.MAC,*.REL,*.CTL,*.RAM,*.MCB,CONVRT.EXE 7 | . 8 | 9 | 10 | !ASSEMBLE TOPS-10 MICROCODE 11 | 12 | .RUN MICRO 13 | *@KLX.CCL 14 | 15 | 16 | !NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 17 | 18 | !TOPS-10 MODEL B 19 | .RU CONVRT 20 | *KLX/R 21 | 22 | 23 | !NOW DO THE SECOND STEP OF CONVERSION THE RSXT10 IS A SUPPORTED TOPS-10 24 | !PROGRAM 25 | 26 | !TOPS-10 MODEL B 27 | .R RSXT10 28 | CONVERT KLX.RAM KLX.MCB 29 | EXIT 30 | 31 | 32 | 33 | !THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 34 | !HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 35 | .DIR *.RAM,*.MCB 36 | . 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /kl10/v2a(442)/source/rel20.ctl: -------------------------------------------------------------------------------- 1 | !THIS IS A TOPS-20 CONTROL FILE FOR RELEASE OF THE KL MICROCODE, 2 | !MODEL B - TOPS-20 MONITOR. 3 | !THIS FILE FOR V2(442) RELEASE - RELEASE 6.1 OF TOPS-20 4 | 5 | !June 3, 1986 6 | 7 | 8 | 9 | 10 | 11 | !GET CHECKSUMS OF ALL RELEVENT FILES FOR ASSEMBLING BOTH MICROCODES 12 | !ALL CHECKSUMS TAKEN BELOW MUST MATCH IN ORDER TO PROVE THE 13 | !MICROCODE IS CORRECT 14 | 15 | @DIR *.CCL,*.MIC,*.MAC,*.REL,*.CTL,CONVRT.EXE, 16 | @CHECKSUM SEQU 17 | @ 18 | 19 | 20 | 21 | !NOTE .EXE FILES CANNOT BE CHECKSUMMED IF THEY ARE REASSEMBLED THE 22 | !CHECKSUMS WILL NOT MATCH IN ALL CASES THUS MICRO.EXE IS NOT CHECKSUMED 23 | 24 | 25 | 26 | !ASSEMBLE THE MICROASSEMBLER 27 | @load micro.mac/compile 28 | @SAVE 29 | 30 | !GET THE CHECKSUM OF THE .REL FILE 31 | @DIR MICRO.REL, 32 | @CHECKSUM SEQ 33 | @ 34 | 35 | !ASSEMBLE TOPS-20 MODEL B MICROCODE 36 | @run MICRO.EXE 37 | *@KLX.CCL 38 | 39 | 40 | !NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 41 | 42 | 43 | 44 | !TOPS-20 MODEL B 45 | @run CONVRT.EXE 46 | *KLX/R 47 | 48 | 49 | 50 | !NOW DO THE SECOND STEP OF CONVERSION THE RSXFMT IS A SUPPORTED TOPS-20 51 | !PROGRAM 52 | 53 | 54 | !TOPS-20 MODEL B 55 | @rsxfmt 56 | convert klx.ram klx.mcb 57 | EXIT 58 | 59 | 60 | 61 | !THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 62 | !HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 63 | @DIR *.RAM,*.MCB, 64 | @CHECKSUM SEQ 65 | @ 66 | 67 | 68 | !DONE QUIT 69 | 70 | @logo 71 | 72 | -------------------------------------------------------------------------------- /kl10/v326/docs/kl-ucode-instal-guide.man: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -- KL MICROCODE INSTALLATION GUIDE -- AA-AS78A-TM 5 | September 1983 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Copyright (C)1977,1978,1979,1980,1981,1982,1983,1984 37 | Digital Equipment Corporation, Maynard, Mass. 38 | 39 | 40 | This software is furnished under a license for use only on a single 41 | computer system and may be copied only with the inclusion of the above 42 | copyright notice. This software, or any other copies thereof, may not 43 | be provided or otherwise made available to any other person except for 44 | use on such system and to one who agrees to these license terms. 45 | Title to and ownership of the software shall at all times remain in 46 | DEC. 47 | 48 | The information in this software is subject to change without notice 49 | and should not be construed as a commitment by Digital Equipment 50 | Corporation. 51 | 52 | DEC assumes no responsibility for the use or reliability of its 53 | software on equipment which is not supplied by DEC. 54 | KL MICROCODE INSTALLATION GUIDE -- V326 Page 2 55 | 56 | 57 | September 1983 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 1.0 SUMMARY 68 | 69 | 70 | The installation package for microcode v326 consists of a magtape 71 | and RX0x floppy diskette. The tape saveset contains 3 files. 72 | KL-UCODE-RELEASE.DOC is the documentation file for the microcode 73 | itself. It contains among other things the edit history (what bugs 74 | got fixed) of the microcode since the last release. 75 | KL-UCODE-INSTAL-GUIDE.MAN (This document) is the installation 76 | instructions for microcode v326. KL-UCODE.BWR is the file which lists 77 | all the known bugs in V326 microcode. 78 | 79 | 80 | 81 | 2.0 ASSUMPTIONS 82 | 83 | 84 | 1. The reader is familiar with the installation instructions 85 | contained in Chapter 4 of the TOPS-20 KL Model B Installation 86 | Guide. 87 | 88 | 2. The system disk is DB0:. 89 | 90 | 3. The floppy disk is in DX0:. 91 | 92 | If drive numbers other than 0 are used, replace 0 in the 93 | description with the disk drive number. 94 | 95 | 96 | 97 | 3.0 INSTALLATION PROCEEDURE 98 | 99 | 100 | 1. Halt the TOPS-20 monitor with your site's shutdown 101 | proceedure. All further steps assume that SHUT has been 102 | typed to PARSER at the Front End console terminal or that the 103 | system disk was booted with the value of 000203 (octal) in 104 | the switch register and the SWITCH REGISTER and ENABLE 105 | buttons are depressed. 106 | 107 | 2. Place the floppy disk supplied with this package in Floppy 108 | drive 0. 109 | KL MICROCODE INSTALLATION GUIDE -- V326 Page 3 110 | 111 | 112 | 3. Type CTRL/\. The prompt PAR> or PAR% should appear. 113 | 114 | 4. Type MCR MOU (ret). The prompt MOU> should appear. 115 | 116 | 5. Type DX0: (ret). The message MOU -- MOUNT COMPLETE should 117 | appear and then another MOU>. 118 | 119 | 6. Type CTRL/Z and CTRL/\. The prompt PAR> or PAR% should 120 | appear. 121 | 122 | 7. Type MCR PIP. The prompt PIP> should appear. 123 | 124 | 8. Type DB0:=DX0:KLX.MCB;326. After about 10-15 seconds the 125 | prompt PIP> should appear. 126 | 127 | 9. Type CTRL/Z and CTRL/\. The prompt PAR> or PAR% should 128 | appear. 129 | 130 | 10. Type MCR KLI. A few lines of informational messages should 131 | appear and then the prompt KLI>. 132 | 133 | 11. Type NO (ret) or just (ret). 134 | 135 | 12. After KLI has run and loaded the BOOT program the prompt 136 | BOOT> should appear. KLI will have typed an informational 137 | line stating that the microcode has been loaded and give the 138 | version number. If the version is not 326, restart the 139 | installation and type YES to the first KLI prompt. The first 140 | question after that is for loading of the microcode. Type 141 | YES KLX.MCB;326. Answer all the other questions that KLI 142 | askes using your site's parameters. 143 | 144 | 13. Restart the system in the usual manner. 145 | 146 | -------------------------------------------------------------------------------- /kl10/v326/docs/kl-ucode.bwr: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -- KL MICROCODE BEWARE FILE -- 5 | September 1983 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Copyright (C)1977,1978,1979,1980,1981,1982,1983,1984 37 | Digital Equipment Corporation, Maynard, Mass. 38 | 39 | 40 | This software is furnished under a license for use only on a single 41 | computer system and may be copied only with the inclusion of the above 42 | copyright notice. This software, or any other copies thereof, may not 43 | be provided or otherwise made available to any other person except for 44 | use on such system and to one who agrees to these license terms. 45 | Title to and ownership of the software shall at all times remain in 46 | DEC. 47 | 48 | The information in this software is subject to change without notice 49 | and should not be construed as a commitment by Digital Equipment 50 | Corporation. 51 | 52 | DEC assumes no responsibility for the use or reliability of its 53 | software on equipment which is not supplied by DEC. 54 | KL MICROCODE BEWARE FILE -- V326 Page 2 55 | 56 | 57 | V326UC.BWR -- v326 58 | September 1983 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 1.0 KNOWN BUGS 69 | 70 | 71 | When executing a CVTBDO using a One Word Global Byte Pointer the 72 | fill is taken from E0 rather than E0+1. 73 | 74 | 75 | 76 | 77 | 1.1 Bug Solutions 78 | 79 | 80 | The problem only occurs using a One Word Global Byte pointer. 81 | Use a Two Word Global Byte pointer. 82 | -------------------------------------------------------------------------------- /kl10/v336/source/blt.mic: -------------------------------------------------------------------------------- 1 | .TOC "XBLT" 2 | 3 | ;HERE FROM EXTEND, ARX CONTAINS AC2 4 | .IF/XADDR 5 | 6 | XBLT: AR_AC1,SR_XBLT(SRC) ;[262] IN CASE OF INTERRUPT 7 | BR/AR,BRX/ARX,MQ_AR, ;SRC ADDR TO BR, DST TO BRX 8 | AR_AC0,SKP AD0,J/XBLT3 ;GET LENGTH, TEST DIRECTION 9 | =0 10 | XBLT3: SKP AR NE,MQ_AR,J/XBLT4 11 | AR_MQ-1,ARX_ARX-1, ;DECR SRC & DST ADDR'S FOR DOWN 12 | VMA/AD,LOAD AR ;GET FIRST WORD 13 | 14 | ;HERE IS MAIN LOOP FOR XBLT, DOWNWARDS 15 | 16 | XBLTDN: MQ_AR,AR_MEM,SR_XBLT(DST) ;WAIT FOR SOURCE WORD 17 | VMA_ARX,STORE,SR_XBLT(SRC) ;STORE IT IN DESTINATION 18 | MEM_AR,AR_MQ,SKP INTRPT ;WAIT, CHECK FOR INTRPT 19 | =0 BR/AR,BRX/ARX, ;PUT DECREMENTED ADDR'S IN BR,X 20 | AR_AC0+1,SKP CRY0,J/XBLTD1 ;COUNT OFF LENGTH 21 | BR/AR,BRX/ARX,AR_AC0+1,J/PGFAC0 ;CLEANUP AND TAKE INTERRUPT 22 | =0 23 | XBLTD1: AC0_AR,AR_MQ-1,ARX_ARX-1, ;STORE NEW LENGTH, GET NEXT ADDR 24 | VMA/AD,LOAD AR,J/XBLTDN ; AND READ SRC WORD 25 | AC0_AR,AR_ARX,ARX/MQ, ;DONE! PUT ALL AWAY 26 | I FETCH 27 | XBLTX: AC2_AR,AR_ARX,J/STRAC1 28 | 29 | ;HERE FOR UPWARD BLT, TESTING FOR NON-ZERO LENGTH 30 | 31 | =0 32 | XBLT4: I FETCH,SR_0,J/NOP ;DO NOTHING IF AC =0 33 | VMA_BR,LOAD AR, ;ELSE START RIGHT IN 34 | SR_XBLT(DST),J/XBLTU1 35 | 36 | ;HERE IS MAIN LOOP FOR XBLT, UPWARDS 37 | 38 | XBLTUP: MEM_AR,AR_MQ-1,SKP AD NE ;COUNT EXHAUSTED? 39 | =0 AC0_AR,ARX_BR+1,AR_BRX+1, ;YES. GET FINAL ADDRESSES 40 | I FETCH,J/XBLTX ; READY TO STORE 41 | AC0_AR,MQ_AR,AR_BR+1,ARX_BRX+1, 42 | VMA/AD,LOAD AR ;GET SOURCE WORD 43 | BR/AR,BRX/ARX,SR_XBLT(DST) ;MUST BE SAVED PRIOR TO MBWAIT 44 | XBLTU1: AR_MEM,SKP INTRPT ;WAIT FOR SRC, TEST INTRPT 45 | =0 VMA_ARX,STORE, ;COPY TO DST 46 | SR_XBLT(SRC),J/XBLTUP ;LOOP 47 | AR_BR LONG,SR_0,J/XBLTPF ;TAKE INTERRUPT 48 | 49 | .ENDIF/XADDR 50 | .TOC "BLT" 51 | ; ENTER WITH 0,E IN AR 52 | 53 | ;IN THE LOOP, ARX CONTAINS THE CURRENT DESTINATION ADDRESS, 54 | ; BRX CONTAINS THE TERMINAL ADDRESS, AND BR CONTAINS THE DIFFERENCE 55 | ; BETWEEN THE SOURCE AND DESTINATION ADDRESSES. 56 | 57 | ;UNLIKE EARLIER -10 PROCESSORS, THIS CODE CHECKS FOR THE CASE IN WHICH 58 | ; THE DESTINATION ADDRESS IN RH(AC) IS GREATER THAN E, AND RATHER THAN 59 | ; STOPPING AFTER ONE WORD, COPIES DOWNWARD (EFFECTIVELY DECREMENTING 60 | ; AC BY 1,,1 ON EACH STEP, RATHER THAN INCREMENTING). 61 | 62 | ;THIS CODE ALSO PROVIDES A GUARANTEED RESULT IN AC ON COMPLETION OF 63 | ; THE TRANSFER (EXCEPT IN THE CASE AC IS PART OF BUT NOT THE LAST WORD 64 | ; OF THE DESTINATION BLOCK). WHEN AC IS NOT PART OF THE DESTINATION 65 | ; BLOCK, IT IS LEFT CONTAINING THE ADDRESSES OF THE FIRST WORD FOLLOWING 66 | ; THE SOURCE BLOCK (IN THE LH), AND THE FIRST WORD FOLLOWING THE DEST- 67 | ; INATION BLOCK (IN THE RH). IF AC IS THE LAST WORD OF THE DESTINATION 68 | ; BLOCK, IT WILL BE A COPY OF THE LAST WORD OF THE SOURCE BLOCK. 69 | 70 | ;IN ADDITION, A SPECIAL-CASE CHECK IS MADE FOR THE CASE IN WHICH EACH 71 | ; WORD STORED IS USED AS THE SOURCE OF THE NEXT TRANSFER. IN THIS CASE, 72 | ; ONLY ONE READ NEED BE PERFORMED, AND THAT DATA MAY BE STORED FOR EACH 73 | ; TRANSFER. THUS THE COMMON USE OF BLT TO CLEAR CORE IS SPEEDED UP. 74 | 75 | ;BLT: ARX_AR,MQ_AR,ARR_AC0,ARL_ARL ;END TO ARX & MQ, DEST TO AR 76 | BLT1: BR/AR,ARX_AR,BRX/ARX, ;DST TO BR & ARX, END TO BRX 77 | AR_AC0 ;SRC TO ARL 78 | .IFNOT/BLT.PXCT 79 | ARR_ARL,ARL_BRL ;SRC TO ARR (SAME SECTION AS E) 80 | AR_AR-BR ;SRC-DST TO ARR 81 | .IF/BLT.PXCT 82 | ARR_ARL,ARL_BRL.M,SKP P!S XCT ;SRC TO ARR (SAME SECTION AS E) 83 | =0 AR_AR-BR,J/BLT2 ;SRC-DST TO ARR 84 | AR_AR-BR,J/BLTPXCT ;TREAT PXCT OF BLT SPECIAL 85 | .ENDIF/BLT.PXCT 86 | .IF/BACK.BLT 87 | BR/AR,SKP ARX LE BRX ;SRC-DST TO BR. UP OR DOWN? 88 | =00 AR_MQ-1,CALL,J/BLTAC ;DOWN, READY WITH E-1 89 | AR_MQ+1,CALL,J/BLTAC ;UP, PUT E+1 IN AR FOR AC 90 | DOWN: LOAD VMA(EA)_ARX+BR,J/DN1 ;DOWN, START THE LOOP 91 | .IFNOT/BACK.BLT 92 | =0* 93 | BLT2: BR/AR,AR_MQ+1,CALL,J/BLTAC ;SRC-DST TO BR, E+1 IN AR 94 | .ENDIF/BACK.BLT 95 | SKP BR EQ -1,J/UP ;IS THIS CORE CLEARING CASE? 96 | 97 | 98 | ;HERE TO SETUP FINAL AC 99 | 100 | BLTAC: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 101 | AR_AR SWAP,SR_BLT(SRC) 102 | ACSETU: AC0_AR,RETURN2 ;[334] Used below as well 103 | ;HERE FOR UPWARD BLT (AC RH .LE. E) 104 | =0 105 | UP: LOAD VMA(EA)_ARX+BR,J/UP1 ;NOT CLEAR CORE 106 | SKP P!S XCT,LOAD VMA(EA)_ARX+BR ;DO NOT OPTIMIZE UNDER EXT ADDR 107 | 108 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 109 | 110 | =00 AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET THE WORD TO STORE IN ALL 111 | UP1: AR_MEM,CALL,SR_BLT(DST),J/UP2 ;GET SOURCE WORD 112 | CALL,SR_BLT(DST),J/UP2 ;HERE TO STORE SAME SRC AGAIN 113 | LOAD VMA(EA)_ARX+BR,J/UP1 ;HERE TO GET NEXT SRC 114 | 115 | UP2: STORE VMA(EA)_ARX,SKP INTRPT ;OK, GET DST ADDRESS 116 | =0 117 | UP3: SKP ARX LT BRX,J/UP4 ;CHECK FOR LAST TRANSFER 118 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 119 | =0 120 | UP4: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 121 | MEM_AR,ARX_ARX+1, ;STORE DST, 122 | SR_BLT(SRC),RETURN2 ; CONTINUE 123 | 124 | ;BLT CONTINUED - HERE FOR DOWNWARD BLT (AC RH .GT. E) 125 | .IF/BACK.BLT 126 | 127 | DN1: AR_MEM,SR_BLT(DST) ;WAIT FOR SOURCE DATA 128 | VMA_ARX,STORE,SKP INTRPT ;OK, START DST REF 129 | =0 SKP ARX LE BRX,J/DN3 ;CHECK FOR END CONDITION 130 | MEM_AR,J/BLTPF ;FINISH STORE, TAKE INTRPT 131 | =0 132 | DN3: MEM_AR,ARX_ARX-1, ;NOT END, LOOP 133 | SR_BLT(SRC),J/DOWN 134 | FIN STORE,I FETCH,J/NOP ;END 135 | .ENDIF/BACK.BLT 136 | .TOC "EXTENDED ADDRESSING CODE FOR PXCT OF BLT" 137 | 138 | ;THIS MUST BE SEPERATE CODE TO MAKE PXCT WORK NOTE THAT PXCT ONLY CAN 139 | ;BE USED IN SECTION 0 AND IN FACT WILL EVENTUALLY BE REMOVED FROM THERE 140 | ;HOPEFULLY THIS CODE CAN GO AWAY THE SPEC IS THAT PXCT OF BLT IS NOT DEFINED 141 | ;AND WILL NOT BE USED ON EXTENDED ADDRESSING MACHINES. 142 | 143 | .IF/BLT.PXCT 144 | =0* 145 | BLTPXCT:BR/AR,AR_MQ+1,CALL,J/BLTPX1 ;SRC-DST TO BR, E+1 IN AR 146 | UPPX: VMA_ARX+BR,LOAD AR,J/UP1PX ;NOT CLEAR CORE 147 | ;CORE CLEARING NOT LEGAL 148 | 149 | 150 | ;HERE TO SETUP FINAL AC 151 | 152 | BLTPX1: ARL_ARR,AR_AR+BR ;FINAL DEST TO LH, SRC TO RH 153 | AR_AR SWAP,SR_BLT(PXCT SRC), 154 | J/ACSETU ;[334] Use common return above 155 | 156 | ;USE EVEN LOC'NS OF THIS BLOCK OF 4 IN SPECIAL "CLEAR CORE" CASE 157 | 158 | =00 159 | =01 160 | UP1PX: AR_MEM,CALL,SR_BLT(PXCT DST),J/UP2PX ;GET SOURCE WORD 161 | CALL,SR_BLT(PXCT DST),J/UP2PX ;HERE TO STORE SAME SRC AGAIN 162 | VMA_ARX+BR,LOAD AR,J/UP1PX ;HERE TO GET NEXT SRC 163 | 164 | UP2PX: VMA_ARX,STORE,SKP INTRPT ;OK, GET DST ADDRESS 165 | =0 166 | UP3PX: SKP ARX LT BRX,J/UP4PX ;CHECK FOR LAST TRANSFER 167 | MEM_AR,J/BLTPF ;FINISH THIS, GO SERVE INTRPT 168 | =0 169 | UP4PX: FIN STORE,I FETCH,J/NOP ;THAT'S ALL, FOLKS 170 | MEM_AR,ARX_ARX+1, ;STORE DST, 171 | SR_BLT(PXCT SRC),RETURN2 ; CONTINUE 172 | .ENDIF/BLT.PXCT 173 | -------------------------------------------------------------------------------- /kl10/v336/source/rel10.ctl: -------------------------------------------------------------------------------- 1 | ;THIS IS A TOPS-10 CONTROL FILE FOR RELEASE OF KL10 MICROCODE, 2 | ;MODEL B - TOPS-10 MONITORS. 3 | ;THIS FILE FOR VERSION 336 RELEASE - RELEASE 702 OF TOPS-10 4 | 5 | ;FEBRUARY 24, 1984 6 | .SET WATCH VERSION 7 | 8 | .SET DSKFUL PAUSE ; STOP JOB ON DISK FULL 9 | 10 | 11 | ;SET UP SEARCH LIST TO GET ALL FILES FROM DEC: AND THEN DISK NO OTHER PLACES 12 | .ASSIGN DEC SYS 13 | 14 | 15 | ;GET CHECKSUMS OF ALL RELEVENT FILES FOR ASSEMBLING BOTH MICROCODES 16 | ;ALL CHECKSUMS TAKEN BELOW MUST MATCH IN ORDER TO PROVE THE 17 | ;MICROCODE IS CORRECT 18 | 19 | .R DIRECT 20 | **.CCL/CHECK 21 | **.MIC/CHECK 22 | **.RNO/CHECK 23 | **.MAC/CHECK 24 | **.REL/CHECK 25 | **.CTL/CHECK 26 | **.RAM/CHECK 27 | **.MCB/CHECK 28 | *CONVRT.EXE/CHECK 29 | 30 | 31 | ;NOTE .EXE FILES CANNOT BE CHECKSUMMED IF THEY ARE REASSEMBLED THE 32 | ;CHECKSUMS WILL NOT MATCH IN ALL CASES THUS MICRO.EXE IS NOT CHECKSUMED 33 | 34 | 35 | 36 | ;ASSEMBLE THE MICROASSEMBLER 37 | 38 | .LOAD MICRO.MAC/COMPILE 39 | 40 | .SAVE MICRO.EXE 41 | 42 | ;GET THE CHECKSUM OF THE .REL FILE 43 | .R DIRECT 44 | *MICRO.REL/CHECK 45 | 46 | 47 | ;ASSEMBLE TOPS-10 MODEL B MICROCODE 48 | .RUN MICRO.EXE 49 | *@UB 50 | 51 | 52 | 53 | ;NOW DO THE FIRST STEP OF THE CONVERSION PROCESS 54 | 55 | ;BECAUSE TOPS-10 CAN NOT RUN .EXE FILES WRITTEN ON TOPS-20 56 | ;THIS STEP MUST BE DONE 57 | .GET CONVRT.EXE 58 | .SAVE CONVRT.SAV 59 | ;END OF STEP WHEN IT IS REMOVED THE CONVRT.SAV RUNS 60 | ;BELOW MUST BE CHANGED TO CONVRT.EXE 61 | 62 | 63 | ;TOPS-10 MODEL B 64 | .RUN CONVRT.SAV 65 | *UB/R 66 | 67 | 68 | 69 | 70 | ;NOW DO THE SECOND STEP OF CONVERSION THE RSXT10 IS A SUPPORTED TOPS-10 71 | ;PROGRAM AND SHOULD BE ON DEC: 72 | 73 | ;TOPS-10 MODEL B 74 | .R RSXT10 75 | CONVERT UB.RAM UB.MCB 76 | EXIT 77 | 78 | 79 | 80 | ;THERE HAVE BEEN SOFTWARE CHANGES TO THE CONVRT PROGRAM TO MAKE IT 81 | ;HAVE NO DATE DEPENDENCIES THE RAM AND MCB FILES SHOULD THEREFORE CHECKSUM 82 | ;PROPERLY 83 | .R DIRECT 84 | **.RAM/CHECK 85 | **.MCB/CHECK 86 | 87 | 88 | 89 | ;RUNOFF THE DOCUMENTATION 90 | .R RUNOFF 91 | *UCODE.DOC=UCODE.RNO 92 | 93 | ;TAKE CHECKSUMS FOR THE RUNOFF FILE 94 | .R DIRECT 95 | *UCODE.DOC/CHECK 96 | 97 | 98 | ;DONE QUIT 99 | -------------------------------------------------------------------------------- /kl10/v336/source/shift.mic: -------------------------------------------------------------------------------- 1 | .TOC "ROTATES AND LOGICAL SHIFTS -- ROT, LSH, JFFO" 2 | 3 | .DCODE 4 | 240: I, B/0, J/ASH 5 | I, B/0, J/ROT 6 | I, B/2, J/LSH 7 | I, J/JFFO 8 | I, B/1, J/ASHC 9 | I, J/ROTC 10 | I, J/LSHC 11 | EA, J/UUO 12 | .UCODE 13 | 14 | ;ENTER WITH 0,E IN AR 15 | ; NOTE THAT VALUES OF SC GREATER THAN 36 16 | ; CAUSE THE SHIFTER TO SELECT ARX. 17 | 18 | =0****00***0 19 | LSH: AR_AC0,ARL/AD,ARX_0.M,SC_EA, 20 | SKP AR18,J/SHR1 21 | 22 | JFFO: AR_AC0,SKP AD NE,SC_#,#/6 23 | = 24 | =0 AC1_AR,I FETCH,J/NOP ;AC WAS ZERO, NO JUMP 25 | ARX+MQ_0.M,FE_P,SKP SCAD NE, ;TEST FIRST 6 BITS 26 | AR_SHIFT,ARL/SH ;DISCARD THEM 27 | =0 28 | JFFO1: AR_SHIFT,FE_P,SKP SCAD NE, ;TEST NEXT 6 BITS 29 | ARX_ARX-1,J/JFFO1 ;LOOP, COUNTING, TILL NE 30 | P_FE,ARR_0.S, ;RESTORE 6 NON-ZERO BITS 31 | ARX_ARX*-6 ;GET POS GROUP COUNT*6 32 | =0 33 | JFFO2: SKP AR0,AR_2(AR+1), ;LOOP TO FIND A 1 34 | ARX_ARX+1,J/JFFO2 ;COUNTING AS WE GO 35 | AR_ARX-1,FETCH,J/STRAC1 36 | 37 | =0****00***0 38 | ASH: SC_EA,SKP AR18, ;GET SHIFT AMOUNT 39 | AR_0S,J/ASHL ;SET LOW PART = 0 40 | ROT: AR_AC0,ARX_AC0,SC_EA,SKP AR18 41 | = 42 | ;SINGLE-WORD LSH/ROT 43 | ; FOR ROT, B=0, AR AND ARX BOTH CONTAIN AC 44 | ; FOR LSH, B=2, AR HAS AC, ARX IS ZERO 45 | 46 | =00 47 | SHR1: AR_SHIFT,SC_#+SC,#/-36., ;DO POS (LEFT) SHIFT, CHK RANGE 48 | SKP SCAD0,J/SHR2 49 | ARX_AR (AD),AR_ARX (ADX), 50 | SC_#+SC,#/36., 51 | B DISP,SKP SCAD0,J/SHR1 ;MAKE NEG SHIFT TO EQUIV POS 52 | SHR2: AR_SHIFT,SC_#+SC,#/-36., 53 | SKP SCAD0,J/SHR2 ;BRING SC INTO RANGE 54 | AC0_AR,I FETCH,J/NOP ;DONE 55 | .TOC "ROTATE AND LOGICAL SHIFT COMBINED -- ROTC, LSHC" 56 | 57 | =0****00***0 58 | ASHC: SC_EA,SKP AR18, ;SETUP SHIFT COUNT 59 | AR_AC1*2,J/ASHL ;GET LOW WORD 60 | ROTC: ARX_AC1 61 | = AR_AC0,SC_EA,SKP AR18 ;SETUP BOTH AC'S 62 | =0 63 | ROT3: MQ_SHIFT,ARX_AR (AD), 64 | AR_ARX (ADX),J/ROT4 65 | ARX_AR (AD),AR_ARX (ADX), 66 | SC_#+SC,#/36.,SKP SCAD0,J/ROT3 67 | 68 | ROT4: AR_MQ,ARX_SHIFT, 69 | SC_#+SC,#/-36.,SKP SCAD0 70 | =0 MQ_SHIFT,ARX_AR (AD), 71 | AR_ARX (ADX),J/ROT4 72 | STDAC: AC0_AR,AR_ARX,I FETCH,J/STRAC1 73 | 74 | 75 | 1004: ;NEXT TO UUO 76 | LSHC: ARX_AC1,MQ_0.M 77 | LSH1: AR_AC0,SC_EA,FE_#,#/36.,SKP AR18 78 | =0 79 | LSH2: MQ_SHIFT,AR_ARX (ADX), 80 | ARX/MQ,FE_#,#/-36.,J/LSH3 81 | ARX_AR (AD),AR_0.M,MQ_ARX, 82 | SC_FE+SC,SKP SCAD0,J/LSH2 83 | 84 | LSH3: AR_MQ,ARL/AD,ARX_SHIFT,MQ_0.M, 85 | SC_FE+SC,SKP SCAD0 86 | =0 MQ_SHIFT,AR_ARX (ADX),ARX/MQ,J/LSH3 87 | AC0_AR,AR_ARX,I FETCH,J/STRAC1 88 | .TOC "ARITHMETIC SHIFTS -- ASH, ASHC" 89 | 90 | ;COMMON CODE FOR ARITHMETIC SHIFTS 91 | 92 | =0 93 | ASHL: ARX_AR,AR_AC0, ;INPUT NOW IN AR LONG 94 | SKP SC NE,J/ASHL1 ;CHECK FOR NULL SHIFT 95 | ARX_AR,AR_AC0, ;HERE IF RIGHT SHIFT 96 | SC_#+SC,#/36.,SKP SCAD0 ;CHECK FOR LONG ONE 97 | =0 98 | ASHR1: BR/AR,ARX_SHIFT,AR_SIGN,J/ASHR2 ;LOW OUTPUT TO ARX 99 | ARX_AR,AR_SIGN, ;HERE IF SHIFT COUNT .GT. 36 100 | SC_#+SC,#/36., ;BRING COUNT UP BY 36 101 | SKP SCAD0,J/ASHR1 ;LOOP TILL COUNT REASONABLE 102 | 103 | ASHR2: BRX/ARX,ARX_BR, ;HIGH INPUT TO ARX 104 | B DISP,J/ASHX 105 | 106 | ;HERE FOR LEFT ARITHMETIC SHIFT 107 | 108 | =0 109 | ASHL1: I FETCH,J/NOP ;SHIFT 0 IS A NOP 110 | BR_AR LONG,AR_SIGN ;SAVE INPUT, GEN SIGN WORD 111 | BR/AR,AR_BR*2 LONG ;SAVE SIGN, GET MAGNITUDE BITS 112 | =0* 113 | ASHL2: BRX/ARX,ARX_AR,AR_BR, ;HI IN TO ARX, LOW TO BRX 114 | CALL,J/SHIFT ;CALL SHIFTER TO GET BITS LOST 115 | SKP AR NE BR ;ANY BITS DIFFERENT FROM SIGN? 116 | =0 117 | ASHL3: AR_ARX,ARX_BRX, ;RESTORE HI TO AR, LOW TO ARX 118 | GEN #+SC,#/-36.,SKP SCAD0,J/ASHL4 119 | SET AROV,J/ASHL3 ;BITS SHIFTED OUT NE SIGN 120 | =0 121 | ASHL4: AR_ARX,ARX_0S, ;HERE IF E .GT. 36 122 | SC_#+SC,#/-36.,J/ASHL2 ;SHIFT 36 PLACES, TRY AGAIN 123 | MQ_SHIFT,AR_BRX,CLR ARX, ;HIGH OUTPUT TO MQ, 124 | SC_#+SC,#/-1,B DISP ;COMPENSATE FOR EXTRA SHIFT 125 | =0 126 | ASHL5: AR_BR,BRX/ARX,ARX/MQ, ;SIGN TO AR, HIGH OUT TO ARX 127 | SC_#,#/35., ;READY TO COMBINE THEM 128 | B DISP,J/ASHX ;STORE AS APPROPRIATE 129 | ARX_SHIFT,J/ASHL5 ;LOW OUTPUT TO ARX 130 | 131 | ;HERE TO GET FINAL RESULTS. 132 | 133 | =0 134 | ASHX: AR_SHIFT,I FETCH,J/STORAC ;HERE AFTER ASH 135 | AR_SHIFT,ARX_BRX, ;HERE AFTER ASHC 136 | SC_#,#/35.,J/ST2AC 137 | -------------------------------------------------------------------------------- /kl10/v336/source/ub.ccl: -------------------------------------------------------------------------------- 1 | UB=UB,EDHIS,DEFINE,MACRO,BASIC,SKPJMP,SHIFT,ARITH,FP,BYTE,EXTEXP,IO,EIS,BLT 2 | -------------------------------------------------------------------------------- /kl10/v336/source/ub.mic: -------------------------------------------------------------------------------- 1 | ;PARAMETER CHANGES FOR KL10 TOPS-10 MICROCODE 2 | ;MODEL B MACHINE EXTENDED ADDRESSING with KL style paging 3 | 4 | .SET/SNORM.OPT=1 5 | .SET/XADDR=1 6 | .SET/EPT540=1 7 | .SET/LONG.PC=1 8 | .SET/MODEL.B=1 9 | .SET/KLPAGE=1 10 | .SET/FPLONG=0 11 | .SET/BLT.PXCT=1 12 | .SET/SMP=1 ;SMP- DOES RPW FOR DPB, IDPB INSTEAD OF READ, WRITE 13 | .SET/EXTEXP=1 14 | .SET/MULTI=1 ;DOES NOT CACHE PAGE TABLE DATA 15 | .SET/NOCST=1 ;DOES NOT DO AGE UPDATES, ETC. WITH CST = 0 16 | .SET/OWGBP=0 ;No ONE WORD GLOBAL BYTE POINTERS 17 | .SET/IPA20=0 ;No IPA20-L 18 | .SET/GFTCNV=0 ;DO NOT DO GFLOAT CONVERSION INSTRUCTIONS [273] 19 | ;SAVES 75 WORDS. MONITOR WILL TAKE CARE OF THEM. 20 | .set/cst.write=0 ;No common file system on TOPS-10 21 | -------------------------------------------------------------------------------- /kl10/v336/source/ucode.dir: -------------------------------------------------------------------------------- 1 | 2 | Read Density:1600 Parity:Odd 9-Track Write enabled REELID:UCODE 3 | 4 | BACKUP reel number 1; start save set: KL Microcode Sources V336 5 | by version 4(440) at 13:22:57 on 29-Feb-84 6 | written on MTA260: on S/N 1026 at 1600 9-track 7 | under TOPS-10 system 702(25521): RL175B DEC10 Development 8 | 9 | UCODE DIR 3 <***> 440624 29-Feb-84 10 | MICRO EXE 96 <***> 554223 29-Feb-84 34(270) 11 | MICRO MAC 201 <***> 156145 31-Aug-78 12 | UB CCL 1 <***> 457203 28-Nov-83 13 | UB MCR 1253 <***> 764211 29-Feb-84 14 | REL10 CTL 3 <***> 334631 24-Feb-84 15 | ARITH MIC 19 <***> 234005 21-Jun-83 16 | BASIC MIC 35 <***> 036407 28-Nov-83 17 | BLT MIC 10 <***> 663023 6-Jul-83 18 | BYTE MIC 30 <***> 214364 9-Aug-83 19 | DEFINE MIC 65 <***> 625422 23-Nov-83 20 | EDHIS MIC 87 <***> 322164 29-Nov-83 21 | EIS MIC 59 <***> 625175 19-May-83 22 | EXTEXP MIC 43 <***> 473225 31-Aug-82 23 | FP MIC 35 <***> 202100 8-Oct-81 24 | IO MIC 80 <***> 264145 29-Nov-83 25 | MACRO MIC 71 <***> 530502 28-Nov-83 26 | SHIFT MIC 6 <***> 210516 16-Mar-78 27 | SKPJMP MIC 37 <***> 713736 19-Sep-83 28 | UB MIC 2 <***> 130412 20-Apr-83 29 | CONVRT EXE 32 <***> 060270 29-Feb-84 (11) 30 | CONVRT SAV 26 <***> 251404 29-Feb-84 (11) 31 | UB RAM 62 <***> 603177 29-Feb-84 32 | UB MCB 50 <***> 043073 29-Feb-84 33 | UCODE DOC 10 <***> 320051 29-Feb-84 34 | Total of 2316 blocks in 25 files Checksum = 574360 35 | 36 | BACKUP reel number 1; end save set: KL Microcode Sources V336 37 | by version 4(440) at 13:23:16 on 29-Feb-84 38 | written on MTA260: on S/N 1026 at 1600 9-track 39 | under TOPS-10 system 702(25521): RL175B DEC10 Development 40 | 41 | -------------------------------------------------------------------------------- /kl10/v336/source/ucode.doc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | KL MICROCODE RELEASE DOCUMENT -- V336 5 | September 1983 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Copyright (C)1977,1978,1979,1980,1981,1982,1983,1984 37 | Digital Equipment Corporation, Maynard, Mass. 38 | 39 | 40 | This software is furnished under a license for use only on a single 41 | computer system and may be copied only with the inclusion of the above 42 | copyright notice. This software, or any other copies thereof, may not 43 | be provided or otherwise made available to any other person except for 44 | use on such system and to one who agrees to these license terms. 45 | Title to and ownership of the software shall at all times remain in 46 | DEC. 47 | 48 | The information in this software is subject to change without notice 49 | and should not be construed as a commitment by Digital Equipment 50 | Corporation. 51 | 52 | DEC assumes no responsibility for the use or reliability of its 53 | software on equipment which is not supplied by DEC. 54 | KL MICROCODE RELEASE DOCUMENT -- V336 Page 2 55 | 56 | 57 | V336RG.DOC -- v336 58 | September 1983 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 1.0 SUMMARY 69 | 70 | 71 | 1. Microcode version 336 is the eleventh release of the KL10 72 | microcode. Microcode version 336 appears as UB.MCB only. It 73 | supports a model B KL10 for TOPS-10 V7.02. 74 | 75 | This is the sixth release of the KL10 microcode that supports 76 | an 'Extended KL10' described in the Hardware Reference 77 | Manual. Only KLX.RAM supports the 'Extended KL10'. (KLX.MCB 78 | is derived from KLX.RAM and does support the 'Extended 79 | KL10'.) 80 | 81 | The KL10 microcode is different for TOPS-10 and TOPS-20 82 | systems. The KL10 microcode is different for model A and 83 | model B processors. (What engineering calls a model B 84 | processor is sometimes known as a KL10-PV.) The TOPS-10 85 | microcode for model A processors is called U.RAM, for model B 86 | processors it is UB.RAM. The TOPS-20 microcode for model A 87 | processors is called KLL.RAM, for model B processors it is 88 | called KLX.RAM. The PDP-11 front end requires different 89 | formats of the microcode files. These translated files have 90 | different names. TOPS-10 model A: UA.MCB. TOPS-10 model B: 91 | UB.MCB. TOPS-20 model A: KLA.MCB. TOPS-20 model B: 92 | KLX.MCB. 93 | 94 | 2. The KL10 microcode is not dependent on any monitor, but 95 | because of hardware differences between the various -10 96 | processors, a monitor must be built specifically for the 97 | KL10. KL10 microcode version 336 has been tested with the 98 | TOPS-10 release 7.02 monitor. 99 | 100 | See LCREV for information regarding microcode requirements for various 101 | hardware revision levels. 102 | 103 | 104 | 105 | 2.0 KNOWN DEFICIENCIES 106 | 107 | 108 | When executing a CVTBDO using a One Word Global Byte Pointer the 109 | fill is taken from E0 rather than E0+1. 110 | 111 | KL MICROCODE RELEASE DOCUMENT -- V336 Page 3 112 | 113 | 114 | 3.0 FIXED PROBLEMS 115 | 116 | The following problems have been fixed: 117 | 118 | 336 Back off 330 for a bit, since TOPS-10 7.02 must be tested and 119 | OWGs in section 0 fail for string instructions (they get converted 120 | to TWGs, which are illegal in section 0). For now, we will maintain 121 | both sources. 122 | 335 Force memory to be released for SMP case of DPB if P > 36 causes no 123 | actual data to be stored. Make an OWG reference to an address > 124 | 37,,777777 cause a page fail (GBYTE was stripping the excess bits). 125 | 334 Fix conflict generated in CLRPT by 333 by creating new subroutine 126 | ARSWAP which is just AR_AR SWAP. Make several other routines call it, 127 | thus saving a few words. 128 | 333 Add new conditional BIG.PT. Under it, add code to implement the "Keep 129 | me" bit for paging as bit 5 of the page table, and to move it to page 130 | map bit 23 during page refill. Also make DATAO PAG not clear Kept 131 | pages if bit 3 of the word is off. 132 | 332 Redefine all bank 7 ACs as R0,...,R17, and all bank 6 ACs as P0,..., 133 | P17. Change all other alias definitions to refer to these. This 134 | gives us a uniform cross reference for all scratch register references. 135 | Put all macro definitions into alphabetical order, making it easier 136 | to look up a macro definition. Split the edit history into its own 137 | file. There are no functional changes from 331. 138 | 331 Allow XSFM anywhere. Clean up the code a bit in the process. There 139 | still remain a number of references to XSFM or XPCW distinctions, 140 | and these could almost certainly be cleaned up further. 141 | 330 Allow one word global byte pointers in section zero. This includes 142 | changes in BYTE, EIS, and FP. Change GBYTE and CNV2WD to return 2; 143 | eliminate GTST as obsolete. Also shuffle the calls to these routines 144 | to conform to the new calling conventions, and put the OWG test at 145 | the beginning of IBP, ILDB, IDBP, LDB, DPB, and ADJBP. 146 | 327 Add PAGCNT conditional. Under it, include control to count entry 147 | into PFH code and DATAO PAG with bit 2 set. 148 | 149 | 150 | 151 | 4.0 RELATED DOCUMENTATION 152 | 153 | 154 | The microcode is implicitly documented in the System Reference Manual, 155 | in that it is an implementation of a PDP-10. The only other 156 | documentation is in the listing and prints of the KL10 processor. 157 | 158 | 159 | 160 | 161 | 162 | 163 | 5.0 FUNCTION OF THE DIFFERENT MICROCODE VERSIONS. 164 | 165 | 166 | U.RAM is the microprogram which directs the operation of the KL10 167 | model A hardware to emulate the behavior of a PDP-10 for a TOPS-10 168 | system. UB.RAM is the microprogram which directs the operation of the 169 | KL MICROCODE RELEASE DOCUMENT -- V336 Page 4 170 | 171 | 172 | KL10 model B hardware (KL10-PV) to emulate the behavior of a PDP-10 173 | for a TOPS-10 system. UB.RAM should look exactly like U.RAM to PDP-10 174 | software. 175 | 176 | 177 | 178 | KLL.RAM is the microprogram which directs the operation of the KL10 179 | model A hardware to emulate the behavior of a PDP-10 for a TOPS-20 180 | system. KLX.RAM is the microprogram which directs the operation of 181 | the KL10 model B hardware to emulate the behavior of a PDP-10 for a 182 | TOPS-20 system. KLX.RAM implements the 'Extended KL10' explained in 183 | the Hardware Reference Manual. 184 | -------------------------------------------------------------------------------- /kl10/v347/docs/kl-ucode-instal-guide.man: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -- KL MICROCODE INSTALLATION GUIDE -- AA-AS78B-TM 6 | March 1984 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | Copyright (C)1977,1978,1979,1980,1981,1982,1983,1984 38 | Digital Equipment Corporation, Maynard, Mass. 39 | 40 | 41 | This software is furnished under a license for use only on a single 42 | computer system and may be copied only with the inclusion of the above 43 | copyright notice. This software, or any other copies thereof, may not 44 | be provided or otherwise made available to any other person except for 45 | use on such system and to one who agrees to these license terms. 46 | Title to and ownership of the software shall at all times remain in 47 | DEC. 48 | 49 | The information in this software is subject to change without notice 50 | and should not be construed as a commitment by Digital Equipment 51 | Corporation. 52 | 53 | DEC assumes no responsibility for the use or reliability of its 54 | software on equipment which is not supplied by DEC. 55 | KL MICROCODE INSTALLATION GUIDE -- V347 Page 2 56 | 57 | 58 | March 1984 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 1.0 SUMMARY 69 | 70 | 71 | The installation package for microcode V347 consists of a magtape 72 | and RX0x floppy diskette. The tape saveset contains 3 files. 73 | KL-UCODE-RELEASE.DOC is the documentation file for the microcode 74 | itself. It contains among other things the edit history (what bugs 75 | got fixed) of the microcode since the last release. 76 | KL-UCODE-INSTAL-GUIDE.MAN (This document) is the installation 77 | instructions for microcode v347. KL-UCODE.BWR is the file which lists 78 | all the known bugs in V347 microcode. 79 | 80 | 81 | 82 | 2.0 ASSUMPTIONS 83 | 84 | 85 | 1. The reader is familiar with the installation instructions 86 | contained in Chapter 4 of the TOPS-20 KL Model B Installation 87 | Guide. 88 | 89 | 2. The system disk is DB0:. 90 | 91 | 3. The floppy disk is in DX0:. 92 | 93 | If drive numbers other than 0 are used, replace 0 in the 94 | description with the disk drive number. 95 | 96 | 97 | 98 | 3.0 INSTALLATION PROCEEDURE 99 | 100 | 101 | 1. Halt the TOPS-20 monitor with your site's shutdown 102 | proceedure. All further steps assume that SHUT has been 103 | typed to PARSER at the Front End console terminal or that the 104 | system disk was booted with the value of 000203 (octal) in 105 | the switch register and the SWITCH REGISTER and ENABLE 106 | buttons are depressed. 107 | 108 | 2. Place the floppy disk supplied with this package in Floppy 109 | drive 0. 110 | KL MICROCODE INSTALLATION GUIDE -- V347 Page 3 111 | 112 | 113 | 3. Type CTRL/\. The prompt PAR> or PAR% should appear. 114 | 115 | 4. Type MCR MOU (ret). The prompt MOU> should appear. 116 | 117 | 5. Type DX0: (ret). The message MOU -- MOUNT COMPLETE should 118 | appear and then another MOU>. 119 | 120 | 6. Type CTRL/Z and CTRL/\. The prompt PAR> or PAR% should 121 | appear. 122 | 123 | 7. Type MCR PIP. The prompt PIP> should appear. 124 | 125 | 8. Type DB0:=DX0:KLX.MCB;347. After about 10-15 seconds the 126 | prompt PIP> should appear. 127 | 128 | 9. Type CTRL/Z and CTRL/\. The prompt PAR> or PAR% should 129 | appear. 130 | 131 | 10. Type MCR KLI. A few lines of informational messages should 132 | appear and then the prompt KLI>. 133 | 134 | 11. Type NO (ret) or just (ret). 135 | 136 | 12. After KLI has run and loaded the BOOT program the prompt 137 | BOOT> should appear. KLI will have typed an informational 138 | line stating that the microcode has been loaded and give the 139 | version number. If the version is not 347, restart the 140 | installation and type YES to the first KLI prompt. The first 141 | question after that is for loading of the microcode. Type 142 | YES KLX.MCB;347. Answer all the other questions that KLI 143 | askes using your site's parameters. 144 | 145 | 13. Restart the system in the usual manner. 146 | -------------------------------------------------------------------------------- /kl10/v347/docs/kl-ucode.bwr: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -- KL MICROCODE BEWARE FILE -- 5 | March 1984 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | Copyright (C)1977,1978,1979,1980,1981,1982,1983,1984 37 | Digital Equipment Corporation, Maynard, Mass. 38 | 39 | 40 | This software is furnished under a license for use only on a single 41 | computer system and may be copied only with the inclusion of the above 42 | copyright notice. This software, or any other copies thereof, may not 43 | be provided or otherwise made available to any other person except for 44 | use on such system and to one who agrees to these license terms. 45 | Title to and ownership of the software shall at all times remain in 46 | DEC. 47 | 48 | The information in this software is subject to change without notice 49 | and should not be construed as a commitment by Digital Equipment 50 | Corporation. 51 | 52 | DEC assumes no responsibility for the use or reliability of its 53 | software on equipment which is not supplied by DEC. 54 | KL MICROCODE BEWARE FILE -- V347 Page 2 55 | 56 | 57 | V347UC.BWR -- v347 58 | March 1984 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 1.0 KNOWN BUGS 69 | 70 | 71 | None 72 | 73 | 74 | 75 | 76 | 1.1 Bug Solutions 77 | 78 | 79 | None 80 | -------------------------------------------------------------------------------- /ks10/its(262)/-read-.-this-: -------------------------------------------------------------------------------- 1 | 2 | This directory contains KS10 specific files for ITS. It contains: 3 | The microcode assembler, microcode source files, etc. 4 | KSDEFS and other KS10-specific documentation and definition files. 5 | The new salvager NSALV. 6 | KSFEDR, the 8080 front-end filesystem manipulation program. 7 | MTBOOT, the KS10 boot tape writing program. 8 | The MINI36 server, used by NSALV to retrieve files over Chaosnet. 9 | Etc. 10 | 11 | The KSHACK directory on MC no longer contains the canonical versions of 12 | these files. The KSHACK directory on AI is now the official KS10 hacking 13 | directory. -Alan 12/30/85 14 | 15 | -------------------------------------------------------------------------------- /ks10/its(262)/1proc.bugs: -------------------------------------------------------------------------------- 1 | Some floating-point instructions clear all bits in FLG, 2 | they will have to be fixed to only clear some LH bits. 3 | -------------------------------------------------------------------------------- /ks10/its(262)/bits.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/bits.1 -------------------------------------------------------------------------------- /ks10/its(262)/files.260: -------------------------------------------------------------------------------- 1 | ; DSK: KSHACK; ITS 11 00:10:02 4-MAY-85 2 | ; DSK: KSHACK; KS10 36 00:18:54 4-MAY-85 3 | ; DSK: KSHACK; SIMPLE 22 23:36:28 5-OCT-84 4 | ; DSK: KSHACK; FLT 3 14:55:38 25-SEPT-84 5 | ; DSK: KSHACK; EXTEND 3 14:55:56 25-SEPT-84 6 | ; DSK: KSHACK; INOUT 42 03:06:04 4-MAY-85 7 | ; DSK: KSHACK; ITSPAG 88 15:15:37 24-NOV-84 8 | ; DSK: KSHACK; PAGEF 10 02:03:53 8-OCT-84 9 | -------------------------------------------------------------------------------- /ks10/its(262)/its.11: -------------------------------------------------------------------------------- 1 | ;;;-*-Fundamental-*- 2 | 3 | .TOC "MICROCODE CONDITIONAL ASSEMBLY PARAMETERS FOR ITS" 4 | 5 | .SET/CIRC=1 ;Enable CIRC instruction. 6 | 7 | .SET/ITS=1 ;ITS style microcode. 8 | 9 | .SET/JPC=0 ;No JPC initially. 10 | 11 | .SET/1PROC=0 ;No one-proceed initially. 12 | 13 | .SET/ITSIO=1 ;ITS I/O instructions. 14 | 15 | .SET/TEST=0 ;1 => Testing some new feature. 16 | 17 | MICROCODE VERSION/=<99:107> 18 | UCV=260. 19 | 20 | HARDWARE OPTIONS/=<90:92> 21 | HWOPT=0 22 | 23 | HARDWARE SERIAL NUMBER/=<93:107> 24 | HWSER=1729. 25 | -------------------------------------------------------------------------------- /ks10/its(262)/its.14: -------------------------------------------------------------------------------- 1 | ;;;-*-Fundamental-*- 2 | 3 | .TOC "MICROCODE CONDITIONAL ASSEMBLY PARAMETERS FOR ITS" 4 | 5 | .SET/CIRC=1 ;Enable CIRC instruction. 6 | 7 | .SET/ITS=1 ;ITS style microcode. 8 | 9 | .SET/JPC=0 ;No JPC initially. 10 | 11 | .SET/1PROC=1 ;One-Proceed feature. 12 | 13 | .SET/PCST=1 ;PC Sample Table 14 | 15 | .SET/ITSIO=1 ;ITS I/O instructions. 16 | 17 | .SET/TEST=0 ;1 => Testing some new feature. 18 | 19 | MICROCODE VERSION/=<99:107> 20 | UCV=261. ;259 in octal 21 | 22 | HARDWARE OPTIONS/=<90:92> 23 | HWOPT=0 24 | 25 | HARDWARE SERIAL NUMBER/=<93:107> 26 | HWSER=1729. 27 | -------------------------------------------------------------------------------- /ks10/its(262)/its.15: -------------------------------------------------------------------------------- 1 | ;;;-*-Fundamental-*- 2 | 3 | .TOC "MICROCODE CONDITIONAL ASSEMBLY PARAMETERS FOR ITS" 4 | 5 | .SET/CIRC=1 ;Enable CIRC instruction. 6 | 7 | .SET/ITS=1 ;ITS style microcode. 8 | 9 | .SET/JPC=0 ;No JPC initially. 10 | 11 | .SET/1PROC=1 ;One-Proceed feature. 12 | 13 | .SET/PCST=1 ;PC Sample Table 14 | 15 | .SET/ITSIO=1 ;ITS I/O instructions. 16 | 17 | .SET/TEST=0 ;1 => Testing some new feature. 18 | 19 | MICROCODE VERSION/=<99:107> 20 | UCV=262. 21 | 22 | HARDWARE OPTIONS/=<90:92> 23 | HWOPT=0 24 | 25 | HARDWARE SERIAL NUMBER/=<93:107> 26 | HWSER=1729. 27 | -------------------------------------------------------------------------------- /ks10/its(262)/its.16: -------------------------------------------------------------------------------- 1 | ;;;-*-Fundamental-*- 2 | 3 | .TOC "MICROCODE CONDITIONAL ASSEMBLY PARAMETERS FOR ITS" 4 | 5 | .SET/CIRC=1 ;Enable CIRC instruction. 6 | 7 | .SET/ITS=1 ;ITS style microcode. 8 | 9 | .SET/JPC=0 ;No JPC initially. 10 | 11 | .SET/1PROC=1 ;One-Proceed feature. 12 | 13 | .SET/PCST=1 ;PC Sample Table 14 | 15 | .SET/ITSIO=1 ;ITS I/O instructions. 16 | 17 | .SET/TEST=0 ;1 => Testing some new feature. 18 | 19 | MICROCODE VERSION/=<99:107> 20 | UCV=263. 21 | 22 | HARDWARE OPTIONS/=<90:92> 23 | HWOPT=0 24 | 25 | HARDWARE SERIAL NUMBER/=<93:107> 26 | HWSER=1729. 27 | -------------------------------------------------------------------------------- /ks10/its(262)/its.xfile: -------------------------------------------------------------------------------- 1 | :MICRO KSHACK;ITS=KSHACK;ITS,KS10,SIMPLE,FLT,EXTEND,INOUT,ITSPAG,PAGEF 2 | -------------------------------------------------------------------------------- /ks10/its(262)/mcr.262: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/mcr.262 -------------------------------------------------------------------------------- /ks10/its(262)/ram.259: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/ram.259 -------------------------------------------------------------------------------- /ks10/its(262)/ram.260: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/ram.260 -------------------------------------------------------------------------------- /ks10/its(262)/ram.261: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/ram.261 -------------------------------------------------------------------------------- /ks10/its(262)/ram.262: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/ram.262 -------------------------------------------------------------------------------- /ks10/its(262)/red20.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/red20.1 -------------------------------------------------------------------------------- /ks10/its(262)/ref.1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/ref.1 -------------------------------------------------------------------------------- /ks10/its(262)/ts.micro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PDP-10/microcode/d5550efb39062cb3ac2cf1c2ecc37f0d4e9a6bb8/ks10/its(262)/ts.micro -------------------------------------------------------------------------------- /ks10/v2.0(130)/blast.exe: -------------------------------------------------------------------------------- 1 | @ "    <+ x+hz ``&i uU00+x+zx-U(f/3@@i i\"j1B,O@i\"m6@i\"o\"r\$s,? 2 | t,E,C\$t,? 3 | y,E,C\$y,? 4 | {,E,C!,>p,p+ ,^/:x,~,^/,~/pPp,>N/N`|+"+,> .p5>*,p+O Z,^:x,~/pPp,>N/N`|+++',> .P5>Qhh,p+O Z,^:x,~,>,p7:,^,~,>,>,p7:,^,^,~,>,>,>,>,p7:~,^,^,^,^,~.T5>T 9 | |}~,p7:|~} 10 | |/T,~:x,~ 11 | ? JSYS ERROR: 12 | PROGRAM CANNOT CONTINUE 13 |  Z,^,~ /P,>,>,>,>+0@+A~Pt6U6Uo[%i;'>#s>#_kd@kb:kb:ka6ka3jPIYOX OOrc OOqh Pzd"OTI@O< xO%?OLZWPk"PimO/L`OE0^OE!"OD~wODpODJGODF* OD=w?OD:OD9_OD9VOD9 OD9 OD9 OD9 OD9 OD9 14 | OD9 15 | OD9 OD9 OD9 OD9 OD9 OD9 OD9OD9OD9OD9OD9OD9OD7,OD7OD3QOD17OD,'>OD,?>9[->3;1PHhfPHhePHhePHg N:pN9XhxN9WF|N9&m{3!+_q$*mzt9'VS$!VS"VSMVSX 8QH1;,~HM',2M'*hM'(@M&~(M&rI@M&NtM&NM&<]M&<\ M&4 16 | M&/DM&-)   z+}tz!r z!r z)0 LJ"hX D89w+z#,Z90897sPHheuP5]uP5RPHvZZYYe01;,~*[365)32 TUH2x?HB)L l < 17 | k[LK+mK+ln< K+l>@ KHY42j_^ie?mGw|E#ll #lkCz#,Y,Ek$iiU3{ 0\B:/\>X\>5'\7N+\2g'r'I(\)8*\)7\ &\ )\+,\6.\.,[rO.O[mNO[mO[m O[l|[l{&O[l+O[kO[kO[j]O[jRO[i%r%H([Z[Qgr%0[Ms/[M"-[M +[L,[FG[@v*r#eOD^w'`w]!+{ 00 -------------------------------------------------------------------------------- /ks10/v2.0(130)/blast.mac: -------------------------------------------------------------------------------- 1 | TITLE BLAST -- BLAST DROM CHIPS 2 | 3 | SEARCH MONSYM,MACSYM 4 | .REQUI SYS:MACREL 5 | 6 | T1=1 7 | T2=2 8 | T3=3 9 | T4=4 10 | CR=5 11 | RA=6 12 | RB=7 13 | JFN=10 14 | AP=11 15 | P=17 16 | 17 | START: RESET 18 | SETZM BBFLAG 19 | MOVE P,[IOWD 1000,677000] 20 | TMSG < 21 | DO YOU WANT BREADBOARD FORMAT? > 22 | PBIN 23 | CAIN T1,"Y" 24 | SETOM BBFLAG 25 | HRROI T1,[ASCIZ "PRODUCTION FORMAT"] 26 | SKIPE BBFLAG 27 | HRROI T1,[ASCIZ "!!!!!BREADBOARD FORMAT!!!!!"] 28 | PSOUT 29 | TMSG < 30 | > 31 | HRROI T2,[ASCIZ "E113.PTP"] 32 | CALL OPEN 33 | MOVE CR,[PUSHJ P,E113] 34 | CALL DOROM 35 | CALL CLOSE 36 | HRROI T2,[ASCIZ "E114.PTP"] 37 | CALL OPEN 38 | MOVE CR,[ 39 | PUSHJ P,[ 40 | LDB T1,[POINT 4,DROM(RA),5] 41 | LSH T1,4 42 | LDB RB,[POINT 4,DROM(RA),11] 43 | IOR RB,T1 44 | POPJ P,0]] 45 | CALL DOROM 46 | CALL CLOSE 47 | HRROI T2,[ASCIZ "E115.PTP"] 48 | CALL OPEN 49 | MOVE CR,[LDB RB,[POINT 8,DROM(RA),23]] 50 | CALL DOROM 51 | CALL CLOSE 52 | HALTF 53 | OPEN: MOVX T1,GJ%FOU!GJ%NEW!GJ%SHT 54 | GTJFN 55 | ERMSG 56 | HRRZM T1,JFN 57 | MOVX T2,44B5!OF%WR 58 | OPENF 59 | ERMSG 60 | RET 61 | 62 | CLOSE: MOVE T1,JFN 63 | CLOSF 64 | ERMSG 65 | RET 66 | DEFINE REV1(TO,FROM,WIDTH,BIT),< 67 | TXNE FROM,1B<^D35-BIT> 68 | TXO TO,1B<^D36-WIDTH+BIT> 69 | > 70 | 71 | DEFINE REV(TO,FROM,WIDTH,%A),< 72 | MOVE TO,FROM 73 | SKIPN BBFLAG 74 | JRST %A 75 | MOVEI TO,0 76 | ZZ..==0 77 | RADIX 10 78 | REPEAT WIDTH,< 79 | REV1 TO,FROM,WIDTH,\ZZ.. 80 | ZZ..==ZZ..+1 81 | > 82 | %A: 83 | RADIX 8 84 | > 85 | 86 | DOROM: MOVE T1,JFN 87 | MOVEI T2,377 88 | BOUT 89 | ERMSG 90 | MOVSI AP,-^D512 91 | DOROM1: REV RA,AP,^D9 92 | XCT CR 93 | MOVE T1,JFN 94 | REV T2,RB,^D8 95 | BOUT 96 | ERMSG 97 | AOBJN AP,DOROM1 98 | RET 99 | DEFINE MOVBIT(TO,FROM),< 100 | TXNE T1,1B 101 | TRO RB,1B<^D28+TO> 102 | > 103 | 104 | E113: MOVE T1,DROM(RA) 105 | MOVEI RB,0 106 | MOVBIT 0,^D25 107 | MOVBIT 1,^D24 108 | MOVBIT 2,^D9 109 | MOVBIT 3,^D28 110 | MOVBIT 4,^D29 111 | MOVBIT 5,^D26 112 | MOVBIT 6,^D30 113 | MOVBIT 7,^D27 114 | RET 115 | BBFLAG: 0 116 | DROM: BLOCK ^D512 117 | 118 | DEFINE U(PC,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T),< 119 | > 120 | 121 | DEFINE D(PC,A,B,C),< 122 | RELOC DROM+PC 123 | BYTE (12)A,B,C 124 | RELOC 125 | > 126 | 127 | DEFINE END,< 128 | PURGE END 129 | END <1,,START> 130 | > 131 | 132 | IF2,< XLIST> 133 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/ks10.cmd: -------------------------------------------------------------------------------- 1 | KS10.MCR,KS10.ULD=KS10.MIC,SIMPLE.MIC,FLT.MIC,EXTEND.MIC,INOUT.MIC,PAGEF.MIC 2 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/ks10.ctl: -------------------------------------------------------------------------------- 1 | ! 2 | ! BUILD KS10 MICROCODE FROM SCRATCH 3 | ! 4 | ! 5 | ! FIRST BUILD ASSEMBLER 6 | ! 7 | @GET SYS:MACRO.EXE 8 | @VD SYS:MACRO.EXE.0, 9 | @CHECK SEQ 10 | @ 11 | @I VER 12 | @START 13 | *MICRO.REL=MICRO.MAC 14 | @VD MICRO.REL, 15 | @CHECK SEQ 16 | @ 17 | @GET SYS:LINK 18 | @VD SYS:LINK.EXE.0,SYS:SCAN.REL.0,SYS:HELPER.REL, 19 | @CHECK SEQ 20 | @ 21 | @I VER 22 | @START 23 | *MICRO.REL/G 24 | @SAVE MICRO.EXE 25 | @DELETE MICRO.REL !NO LONGER NEEDED 26 | @VD MICRO.EXE.0, 27 | @CHECK SEQ 28 | @ 29 | ! 30 | ! NOW BUILD THE MICROCODE 31 | ! 32 | @VD *.MIC.0,KS10.CMD.0, 33 | @CHECK SEQ 34 | @ 35 | @RUN MICRO.EXE 36 | *@KS10 37 | @VD KS10.ULD.0,KS10.MCR.0, 38 | @CHECK SEQ 39 | @ 40 | ! 41 | ! NOW BUILD THE CHECK PROGRAM 42 | ! 43 | @VD CHECK.MAC.0, 44 | @CHECK SEQ 45 | @ 46 | @RUN SYS:MACRO !SAME VERSION AND CHECKSUM AS ABOVE 47 | *CHECK.REL=CHECK.MAC,KS10.MCR 48 | @VD CHECK.REL, 49 | @CHECK SEQ 50 | @ 51 | @RUN SYS:LINK !SAVE VERSION AND CHECKSUM AS ABOVE 52 | *CHECK/G 53 | @SAVE CHECK.EXE 54 | @DELETE CHECK.REL !NO LONGER NEEDED 55 | @VD CHECK.EXE.0, 56 | @CHECK SEQ 57 | @ 58 | ! 59 | ! NOW RUN THE CHECK PROGRAM OVER THE LISTING 60 | ! 61 | @RUN CHECK 62 | *KS10.MCR.0 63 | *Y 64 | @IF (ERROR) *Y 65 | *N 66 | @VD KS10.MCR.0, 67 | @CHECK SEQ 68 | @ 69 | @PLEASE KS10 MICROCODE BUILD COMPLETED CORRECTLY 70 | @GOTO DONE 71 | %CERR:: 72 | %ERR:: 73 | @PLEASE ERROR BUILDING KS10 MICROCODE 74 | @GOTO DONE 75 | %TERR:: 76 | @PLEASE TIME LIMIT EXCEEDED BUILDING KS10 MICROCODE 77 | DONE:: 78 | ! 79 | ! WE ARE ALL DONE BATCH WILL LOG US OUT 80 | ! 81 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/ks10.doc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1985,1986 35 | Digital Equipment Corporation, Maynard, Mass. 36 | 37 | 38 | This software is furnished under a license for use only on a single 39 | computer system and may be copied only with the inclusion of the above 40 | copyright notice. This software, or any other copies thereof, may not 41 | be provided or otherwise made available to any other person except for 42 | use on such system and to one who agrees to these license terms. 43 | Title to and ownership of the software shall at all times remain in 44 | DEC. 45 | 46 | The information in this software is subject to change without notice 47 | and should not be construed as a commitment by Digital Equipment 48 | Corporation. 49 | 50 | DEC assumes no responsibility for the use or reliability of its 51 | software on equipment which is not supplied by DEC. 52 | KS10.DOC -- Doc file for KS10 microcode V130 Page 2 53 | 54 | 55 | 1.0 Summary 56 | 57 | The KS10 microcode executes in the 2020 CPU and allows that hardware 58 | to execute the DECsystem-10/DECSYSTEM-20 instruction set and software. 59 | 60 | 61 | 62 | 1.1 Purpose of the release 63 | 64 | This release of the KS10 microcode adds support required by TOPS-10 65 | version 7.03. It also makes location 136 conform to the LSG microcode 66 | version identification standard. 67 | 68 | 69 | 70 | 1.2 New Features 71 | 72 | The TOPS-10 microcode supports the BLTUB and BLTBU instructions, which 73 | perform the byte-swapping operations needed by communication devices 74 | on the Unibus. It also will not use a CST if the CST base address is 75 | specified as 0. 76 | 77 | 78 | 79 | 1.3 Testing 80 | 81 | KS10 microcode version 130 has been tested in-house and runs TOPS-20 82 | Version 4 and TOPS-10 versions 7.02 and 7.03. 83 | 84 | 85 | 86 | 1.4 Bibliography 87 | 88 | KS124.TXT, TL, Detailed changes in and rationale for edit 124. 89 | KS10.DOC -- Doc file for KS10 microcode V130 Page 3 90 | 91 | 92 | 2.0 External Changes 93 | 94 | 2.1 Changes 95 | 96 | The following changes have been made between version 123 and version 97 | 130: 98 | 99 | 1. Assembly options to support TOPS-10 v 7.03. 100 | 101 | 2. Support of the Version standard's use of location 136. 102 | 103 | 3. A microcode which supports UBABLT instructions supports 104 | EITHER KI or KL paging. It does NOT support both, as 105 | previous microcodes have. 106 | 107 | 4. Bugs in UBR and process context word handling were fixed. 108 | 109 | 5. Bugs in JSR and JSA which caused them not to work as overflow 110 | instructions were fixed. 111 | 112 | 6. A bug which caused the processor to hang if a KL-Paging 113 | instruction was executed in certain circumstances was 114 | corrected. 115 | 116 | KS10.DOC -- Doc file for KS10 microcode V130 Page 4 117 | 118 | 119 | 3.0 Known Bugs and Deficiencies 120 | 121 | MOVSLJ does not work when executed by PXCT. EA CALC is not correct 122 | when being fetched from previous context. There is currently not 123 | enough microcode space to fix this bug. 124 | 125 | WRSPB, WRCSB, WRPUR, WRCSTM, and WRHSB require the word at E to be 126 | writable, even though they only read the location. This is a 127 | restriction caused by the DROM, and will not be ECO'd, as these are 128 | privileged instructions, and placing this data in a write-enabled page 129 | is viewed as acceptable. 130 | KS10.DOC -- Doc file for KS10 microcode V130 Page 5 131 | 132 | 133 | 4.0 Installation Instructions 134 | 135 | KS10.ULD is installed with SMFILE. 136 | 137 | 5.0 Internal Changes 138 | 139 | Comments and pagination have been adjusted. See also section 2. 140 | 141 | 6.0 Suggestions 142 | 143 | None. 144 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/ks10.rnd: -------------------------------------------------------------------------------- 1 | .!7-JAN-86 2 | .LM0;.RM70;.F;.J;.SP1;.TS5 3 | .FG30 4 | Copyright (C) 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1985,1986 5 | .BR 6 | ^Digital ^Equipment ^Corporation, ^Maynard, ^Mass. 7 | .B 2 8 | ^This software is furnished under a license for use only on a 9 | single computer system and may be copied only with the inclusion 10 | of the above copyright notice. ^This software, or any other 11 | copies thereof, may not be provided or otherwise made available 12 | to any other person except for use on such system and to one who 13 | agrees to these license terms. ^Title to and ownership of the 14 | software shall at all times remain in DEC. 15 | .b 1 16 | The information in this software is subject to change without 17 | notice and should not be construed as a commitment by Digital 18 | Equipment Corporation. 19 | .B 1 20 | DEC assumes no responsibility for the use or reliability of its 21 | software on equipment which is not supplied by DEC. 22 | .PG;.PS58,70;.SP1 23 | .T KS10.DOC -- Doc file for KS10 microcode V130 24 | 1.0##Summary 25 | .B1 26 | The KS10 microcode executes in the 2020 CPU and allows that 27 | hardware to execute the DECsystem-10/DECSYSTEM-20 instruction 28 | set and software. 29 | .B3 30 | 1.1##Purpose of the release 31 | .B1 32 | This release of the KS10 microcode adds support required by TOPS-10 33 | version 7.03. It also makes location 136 conform to the LSG microcode 34 | version identification standard. 35 | .B3 36 | 1.2##New Features 37 | .B1 38 | The TOPS-10 microcode supports the BLTUB and BLTBU instructions, which 39 | perform the byte-swapping operations needed by communication devices on the 40 | Unibus. It also will not use a CST if the CST base address is specified 41 | as 0. 42 | .B3 43 | 1.3##Testing 44 | .B1 45 | KS10 microcode version 130 has been tested in-house and runs 46 | TOPS-20 Version 4 and TOPS-10 versions 7.02 and 7.03. 47 | .B3 48 | 1.4##Bibliography 49 | .B1 50 | KS124.TXT, TL, Detailed changes in and rationale for edit 124. 51 | .PG 52 | 2.0##External Changes 53 | .B1 54 | 2.1##Changes 55 | .B1 56 | The following changes have been made between version 123 57 | and version 130: 58 | .LS 59 | .LE 60 | Assembly options to support TOPS-10 v 7.03. 61 | .LE 62 | Support of the Version standard's use of location 136. 63 | .LE 64 | A microcode which supports UBABLT instructions supports EITHER KI or KL 65 | paging. It does NOT support both, as previous microcodes have. 66 | .LE 67 | Bugs in UBR and process context word handling were fixed. 68 | .LE 69 | Bugs in JSR and JSA which caused them not to work as overflow instructions 70 | were fixed. 71 | .LE 72 | A bug which caused the processor to hang if a KL-Paging instruction was 73 | executed in certain circumstances was corrected. 74 | .els 75 | .PG;.F;.LM0;.J 76 | 3.0##Known Bugs and Deficiencies 77 | .B1 78 | MOVSLJ does not work when executed by PXCT. EA CALC is not correct when 79 | being fetched from previous context. There is currently not enough microcode 80 | space to fix this bug. 81 | .b1 82 | WRSPB, WRCSB, WRPUR, WRCSTM, and WRHSB require the word at E to be 83 | writable, even though they only read the location. This is a restriction 84 | caused by the DROM, and will not be ECO'd, as these are privileged 85 | instructions, and placing this data in a write-enabled page is viewed 86 | as acceptable. 87 | .PG 88 | 4.0##Installation Instructions 89 | .B 90 | KS10.ULD is installed with SMFILE. 91 | .B 92 | 5.0##Internal Changes 93 | .B1 94 | Comments and pagination have been adjusted. 95 | See also section 2. 96 | .B 1 97 | 6.0##Suggestions 98 | .B1 99 | None. 100 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/smfile.cmd: -------------------------------------------------------------------------------- 1 | write setup dskb: 2 | write reset 3 | read t10ki.uld[10,1141,ksu,new] 4 | serial 4149 5 | write cram 6 | write boot bts256.exe[6,2020] 7 | write done 8 | exit 9 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/smfile.mic: -------------------------------------------------------------------------------- 1 | !This Kludge is necessary because SMFILE won't run under batch. 2 | .MIC TYPE "RUN DEC:SMFILE^MREAD 'A.ULD^ME CRAM 136^ME CRAM 137^MOUTPUT RAM 'A.RAM^MEXIT^M" 3 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/t10ki.cmd: -------------------------------------------------------------------------------- 1 | T10KI.MCR,T10KI.ULD=T10KI.MIC,KS10.MIC,SIMPLE.MIC,FLT.MIC,EXTEND.MIC,INOUT.MIC,PAGEF.MIC 2 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/t10ki.mic: -------------------------------------------------------------------------------- 1 | .NOBIN 2 | ;KS10 MICROCODE PARAMETER FILE 3 | 4 | ;PARAMETER FILE DEFINITIONS FOR T10KI 5 | ;TOPS-10 KI PAGING MICROCODE (V7.02) 6 | 7 | .SET/UBABLT=1 ;SUPPORT UBABLT INSTRUCTIONS 8 | .SET/KLPAGE=0 ;REMOVE KL PAGING (REQUIRED FOR UBABLT) 9 | 10 | .BIN 11 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/t10kl.cmd: -------------------------------------------------------------------------------- 1 | T10KL.MCR,T10KL.ULD=T10KL.MIC,KS10.MIC,SIMPLE.MIC,FLT.MIC,EXTEND.MIC,INOUT.MIC,PAGEF.MIC 2 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/t10kl.mic: -------------------------------------------------------------------------------- 1 | .NOBIN 2 | ;KS10 MICROCODE PARAMETER FILE 3 | 4 | ;PARAMETER FILE DEFINITIONS FOR T10KL 5 | ;TOPS-10 KL PAGING MICROCODE (V7.03) 6 | 7 | .SET/INHCST=1 ;ALLOW INHIBIT OF CST UPDATE IF CSB = 0 8 | .SET/UBABLT=1 ;SUPPORT UBABLT INSTRUCTIONS 9 | .SET/KIPAGE=0 ;REMOVE KI PAGING (REQUIRED FOR UBABLT) 10 | 11 | .BIN 12 | -------------------------------------------------------------------------------- /ks10/v2.0(130)/ucodes.ctl: -------------------------------------------------------------------------------- 1 | $STEP KSU 2 | $MOUNT BLKK: 3 | $ENDHDR 4 | .PATH [7,3,KSU] 5 | .PATH DEC:=BLKK:[7,3,SMFILE],DEC: 6 | !.CTL FILE TO BUILD THE VARIOUS KS-10 MICROCODES. 7 | ! 8 | ! 9 | !CHECK FOR THE INPUT FILES 10 | ! 11 | .ERROR % 12 | .DIRECT/CHECKS KS10.CMD,T10KI.CMD,T10KL.CMD,MICRO.EXE,DEC:SMFILE.EXE 13 | .DIRECT/CHECKS T10KI.MIC,T10KL.MIC,KS10.MIC,SIMPLE.MIC,FLT.MIC,- 14 | * EXTEND.MIC,INOUT.MIC,PAGEF.MIC 15 | .ERROR 16 | .SET DEFAULT PROTECTION 477 17 | ! 18 | !BUILD THE DEFAULT (TOPS-20, TOPS-10 7.01, AND DIAGNOSTIC UCODE) 19 | ! 20 | .RUN MICRO 21 | *@KS10.CMD 22 | =^Z 23 | .DO SMFILE.MIC KS10 24 | ! 25 | !BUILD THE SPECIAL TOPS-10 V7.02 UBABLT MICROCODE 26 | ! 27 | .RUN MICRO 28 | *@T10KI.CMD 29 | =^Z 30 | .DO SMFILE.MIC T10KI 31 | ! 32 | !BUILD THE SPECIAL TOPS-10 V7.03 UBABLT/INHCST MICROCODE 33 | ! 34 | .RUN MICRO 35 | *@T10KL.CMD 36 | =^Z 37 | .DO SMFILE.MIC T10KL 38 | ! 39 | !BUILD THE DOC FILE 40 | ! 41 | .R RUNOFF 42 | *KS10.DOC=KS10.RND 43 | =^Z 44 | ! 45 | !CHECK THE RESULTS 46 | ! 47 | .DIRECT/CHECKS KS10.ULD,KS10.MCR,T10KI.ULD,T10KI.MCR,T10KL.ULD,T10KL.MCR 48 | --------------------------------------------------------------------------------