diff --git a/cos_117.cfg b/cos_117.cfg new file mode 100644 index 0000000..c6e380c --- /dev/null +++ b/cos_117.cfg @@ -0,0 +1,455 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; Configuration for a single-processor X-MP +; Matches HW config for machine SN#302 +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +CpuMemorySize 0x400000 ; We have 8MWords (64-bits each) of memory +BufferMemorySize 0x400000 ; We have 8MWrods of buffer memory as well + +StartupCpuIdx 0 ; This will set up the first CPU to come out of reset (on instructions from the IOP) +StartupIopIdx 0 ; The first one (the MIOP) is the one to leave reset first + +ClusterCount 3 ; Single-processor machines have 3 clusters - that is the number of inter-processor communication register sets + +MemoryDumpFile dump/mem.dmp ; If we get terminated, dump mainframe memory to this file +BufferMemoryDumpFile dump/buffer.dmp ; If we get terminated, dump buffer memory to this file + +MultiThreaded no +MachineType XMP1 + +WindowWidth 120 +WindowHeight 40 + +DefaultLogLevel None + +EnableTimeStamp yes + + +LogFileName dump/cray_sim.log + +OsType COS + +LogUnusedChannels no + +BreakPoints { +} + +EventPoints { +} + +WatchPoints { +} + +CpuCount 1 +Cpus { + Default { +; HistoryBuffer 1000000 +; DefaultLogLevel All +; InstructionBurstSize 100 +; TimerIncrement 1000 +; MemoryPokes { +; 0x00207B:p0 0006000 ; Change JSP to J to skip mainframe memory test +; } + } +} + +IopClusters { + IopDCluster { + BufferMemoryPokes { + 0x42B7 0x0200 ; Patch up IOP memory test routine to exit immediately + 0x4476 0x0000 ; Patch up ovrelay loading code not to clear end of memory: it's 0 already in the simulator + 0x43DA 0x0000 ; Patch up buffer memory test to exit quickly + 0x3939 0x0028 ; Set CK0 device address to 050 - Hayes clock (should be 070 for Chronolog clocks) + ; Make sure we always wait for completion on IOP-to-IOP transfers + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ; 0x09BC 0x7e00 + ; 0x0a36 0x0000 + ; 0x0a59 0x0000 + ; 0x0a80 0x7710 + } + + BufferImageFiles { + 0x0000 target/cos_117/iop_kern.bin ; The first IOP boots from buffer memory. Pre-load the boot image. + } + + Iops { + 0 { + MemoryDumpFile dump/iop0.dmp +; DefaultLogLevel None + Type MIOP + ChannelCount 42 + InstructionBurstSize 100 + TimerLimit 79999 + Channels { + ERA { + ChannelIdx 016 + } + Expander { + ChannelIdx 017 + DeviceCount 64 + Devices { + Tape { + ChannelIdx 022 + Interrupt 5 + Tape boot_tape.tap + Pokes { + boot_tape.tap { + 0 { + 0x04610 { Size 2 Value 0x1001 BigEndien yes } ; override long delay in INDD29 to speed bootup + ; 0x1E2C0 { Size 2 Value 0x0010 BigEndien yes } ; override large loop in XDK to quickly terminate + ; 0x256fd { Size 2 Value 0x0000 BigEndien yes } ; override call to MFINIT in START0 + ; 0x25783 { Size 2 Value 0x0000 BigEndien yes } ; override call to YIELD in START0 + ;0x4aefb { Size 1 Value 0x01 } ; override call to long delay in START0 + 0x3D24B { Size 1 Value 0x28 } ; Make XCLOCK restore the proper device address upon exit + 0x3d6a3 { Size 1 Value 0x28 } ; Make XCLOCK use channel 51 for responses + 0x3d7c3 { Size 1 Value 0x28 } ; Make XCLOCK use channel 51 for responses + 0x3d399 { Size 1 Value 0x28 } ; Make XCLOCK use channel 51 for responses + 0x3d49b { Size 1 Value 0x28 } ; Make XCLOCK use channel 51 for responses + ; 0x138F5 { Size 2 Value 0x1010 BigEndien yes } ; patch up timeout in BMXCON + ; Make calls for buffer transfer in START3 WAIT for return to work around synchrnization problems between IOPs in a multi-thread simulation + ;0x4b797 { Size 1 Value 0x00 } + ; 0x25BCB { Size 2 Value 0x1000 } ; A = 0 + ; 0x25BCF { Size 2 Value 0x1800 } ; A = ... + ; 0x25BD0 { Size 2 Value 0x1D18 } ; 0x1D18 + ; 0x25BD1 { Size 2 Value 0x7C09 } ; R = OR[9] + ; 0x25BD2 { Size 2 Value 0x2119 } ; A = OR[281] + ; 0x25BD3 { Size 2 Value 0x8607 } ; P = P + 7, A # 0 + } + } + } + } + AmpexDM980Disk { + ; Must be an Ampex DM980 from this: http://bitsavers.trailing-edge.com/pdf/dilog/30006-1_DQ202A_Sep81.pdf - though as far as format goes, it seems identical to the CDC SMD9762 + ; It's a 80MB drive, but formatted as a 64MB one (leaving the last sector on each track empty) + ;DefaultLogLevel All + ChannelIdx 060 + Interrupt 6 + ImageFileName exp_disk.img + Heads 5 + Sectors 35 + Tracks 823 + SectorSize 512 + } + Printer { + ChannelIdx 017 + Interrupt 3 + Name PR0 + PrintFileName pr0.txt + } + Clock { + ;DefaultLogLevel All + PrimaryChannelIdx 050 + Interrupt 1 + Name CK0 + ResponseTimeout 500 + } + } + ;UseDummyDevices yes + } + CI { +; DefaultLogLevel All + IopChannelIdx 020 + CrayChannelIdx 9 + } + CO { +; DefaultLogLevel All + IopChannelIdx 021 + CrayChannelIdx 8 + } + CONC { + InputChannelIdx 024 + OutputChannelIdx 025 + PollDelay 100 + } + Console { + TIChannelIdx 040 + TOChannelIdx 041 + NewTerminalCommand "xterm -e {cmd}&" + ConsoleCommandLinux "telnet {host} {port}" + ConsoleCommandWindows "putty.exe -load Unicos -telnet -P {port} {host}" + MapBackspace yes + BackspaceChar 127 + EatLf no + } + Console { + TIChannelIdx 042 + TOChannelIdx 043 + NewTerminalCommand "xterm -e {cmd}&" + ConsoleCommandLinux "telnet {host} {port}" + ConsoleCommandWindows "putty.exe -load Unicos -telnet -P {port} {host}" + MapBackspace yes + BackspaceChar 127 + EatLf no + } + Console { + TIChannelIdx 044 + TOChannelIdx 045 + NewTerminalCommand "xterm -e {cmd}&" + ConsoleCommandLinux "telnet {host} {port}" + ConsoleCommandWindows "putty.exe -load Unicos -telnet -P {port} {host}" + MapBackspace yes + BackspaceChar 127 + EatLf no + } + Console { + TIChannelIdx 046 + TOChannelIdx 047 + NewTerminalCommand "xterm -e {cmd}&" + ConsoleCommandLinux "telnet {host} {port}" + ConsoleCommandWindows "putty.exe -load Unicos -telnet -P {port} {host}" + MapBackspace yes + BackspaceChar 127 + EatLf no + } + } + BreakPoints { + ; 0x210F { Type Trace Message "FATAL handler called {stack}" } + ; 0x326A { Type LogOn } + ;; 0x3ba6 { Type LogOn } + ; 0x1697 { Type LogOn } ; Breakpoint in error case of HSPW + ; 0x169D { Type Terminate } + ;; 0x167C { Type LogOn } ; Breakpoint in the call that fails + ; 0x4C58 { Type Trace Message "0x4C58 called {stack}" } + ; 0x167C { Type Trace Message "0x167C called {stack}" } + ; 0x1716 { Type Trace Message "0x1716 called {stack}" } + ; 0x47EB { Type Trace Message "passing through 0x47EB {stack}" } + } + EventPoints { + ; "CPU0 Coming out of reset" { Type LogOn TriggerCnt 2 } + } + } + 1 { + MemoryDumpFile dump/iop1.dmp + Type BIOP + ChannelCount 42 + InstructionBurstSize 100 + TimerLimit 79999 + Channels { + HIA { + ChannelIdx 014 + } + HOA { + ChannelIdx 015 + } + DD29 { + ChannelIdx 020 + ImageFileName disk/biop_dk20.img + } + DD29 { + ChannelIdx 021 + ImageFileName disk/biop_dk21.img + } + DD29 { + ChannelIdx 022 + ImageFileName disk/biop_dk22.img + } + DD29 { + ChannelIdx 024 + ImageFileName disk/biop_dk24.img + } + DD29 { + ChannelIdx 025 + ImageFileName disk/biop_dk25.img + } + DD29 { + ChannelIdx 026 + ImageFileName disk/biop_dk26.img + } + DD29 { + ChannelIdx 030 + ImageFileName disk/biop_dk30.img + } + DD29 { + ChannelIdx 031 + ImageFileName disk/biop_dk31.img + } + DD29 { + ChannelIdx 032 + ImageFileName disk/biop_dk32.img + } + Console { + TIChannelIdx 042 + TOChannelIdx 043 + NewTerminalCommand "xterm -e {cmd}&" + ConsoleCommandLinux "telnet {host} {port}" + ConsoleCommandWindows "putty.exe -load Unicos -telnet -P {port} {host}" + MapBackspace yes + BackspaceChar 127 + EatLf no + } + } + BreakPoints { + } + } + 2 { + Exists no + MemoryDumpFile dump/iop2.dmp + Type DIOP + ChannelCount 42 + InstructionBurstSize 100 + TimerLimit 79999 + Channels { + Console { + TIChannelIdx 042 + TOChannelIdx 043 + NewTerminalCommand "xterm -e {cmd}&" + ConsoleCommandLinux "telnet {host} {port}" + ConsoleCommandWindows "putty.exe -load Unicos -telnet -P {port} {host}" + MapBackspace yes + BackspaceChar 127 + EatLf no + } + } + BreakPoints {} + } + 3 { + MemoryDumpFile dump/iop3.dmp + Type XIOP + ChannelCount 42 + InstructionBurstSize 100 + TimerLimit 79999 + Channels { + Bmx { + ChannelIdx 020 + DelayLimit 10 + Devices { + Tape { + DeviceName BmxTape0 + DeviceAddress 0x0 + Tape tape/bmt_00.tap + } + Tape { + DeviceName BmxTape1 + DeviceAddress 0x1 + Tape tape/bmt_01.tap + } + Tape { + DeviceName BmxTape2 + DeviceAddress 0x2 + Tape tape/bmt_02.tap + } + Tape { + DeviceName BmxTape3 + DeviceAddress 0x3 + Tape tape/bmt_03.tap + } + Tape { + DeviceName BmxTape4 + DeviceAddress 0x4 + Tape tape/bmt_04.tap + } + Tape { + DeviceName BmxTape5 + DeviceAddress 0x5 + Tape tape/bmt_05.tap + } + Tape { + DeviceName BmxTape6 + DeviceAddress 0x6 + Tape tape/bmt_06.tap + } + Tape { + DeviceName BmxTape7 + DeviceAddress 0x7 + Tape tape/bmt_07.tap + } + } + } + Bmx { + ChannelIdx 021 + DelayLimit 10 + Devices { + Tape { + DeviceName BmxTape8 + DeviceAddress 0x8 + Tape tape/bmt_08.tap + } + Tape { + DeviceName BmxTape9 + DeviceAddress 0x9 + Tape tape/bmt_09.tap + } + Tape { + DeviceName BmxTape10 + DeviceAddress 0xa + Tape tape/bmt_10.tap + } + Tape { + DeviceName BmxTape11 + DeviceAddress 0xb + Tape tape/bmt_11.tap + } + Tape { + DeviceName BmxTape12 + DeviceAddress 0xc + Tape tape/bmt_12.tap + } + Tape { + DeviceName BmxTape13 + DeviceAddress 0xd + Tape tape/bmt_13.tap + } + Tape { + DeviceName BmxTape14 + DeviceAddress 0xe + Tape tape/bmt_14.tap + } + Tape { + DeviceName BmxTape15 + DeviceAddress 0xf + Tape tape/bmt_15.tap + } + } + } + Bmx { + ChannelIdx 022 + DelayLimit 10 + Devices { + Tape { + DeviceName BmxTape16 + DeviceAddress 0x8 + Tape tape/bmt_16.tap + } + Tape { + DeviceName BmxTape17 + DeviceAddress 0xc0 + Tape tape/bmt_17.tap + } + } + } + Bmx { + ChannelIdx 023 + DelayLimit 10 + Devices { + Tape { + DeviceName BmxTape18 + DeviceAddress 0x8 + Tape tape/bmt_18.tap + } + Tape { + DeviceName BmxTape19 + DeviceAddress 0xc0 + Tape tape/bmt_19.tap + } + } + } + Console { + TIChannelIdx 042 + TOChannelIdx 043 + NewTerminalCommand "xterm -e {cmd}&" + ConsoleCommandLinux "telnet {host} {port}" + ConsoleCommandWindows "putty.exe -load Unicos -telnet -P {port} {host}" + MapBackspace yes + BackspaceChar 127 + EatLf no + } + } + BreakPoints { + } + } + } + } +} +