From 5a17e7cfac11bbfbfd97e6cc60f780b9e7ee431a Mon Sep 17 00:00:00 2001 From: JoshD Date: Tue, 12 Jul 2016 17:18:54 -0700 Subject: [PATCH] Added GPL license header to source code; updated readme; removed disk images from installer package. Removed pcap folder from project --- Contralto/AltoSystem.cs | 20 ++++++++- Contralto/CPU/ALU.cs | 19 +++++++- Contralto/CPU/CPU.cs | 19 +++++++- Contralto/CPU/ConstantMemory.cs | 19 +++++++- Contralto/CPU/MicroInstruction.cs | 19 +++++++- Contralto/CPU/NovaDisassembler.cs | 19 +++++++- Contralto/CPU/Shifter.cs | 19 +++++++- Contralto/CPU/Tasks/CursorTask.cs | 18 +++++++- Contralto/CPU/Tasks/DiskTask.cs | 19 +++++++- Contralto/CPU/Tasks/DisplayHorizontalTask.cs | 19 +++++++- Contralto/CPU/Tasks/DisplayVerticalTask.cs | 19 +++++++- Contralto/CPU/Tasks/DisplayWordTask.cs | 19 +++++++- Contralto/CPU/Tasks/EmulatorTask.cs | 19 +++++++- Contralto/CPU/Tasks/EthernetTask.cs | 19 +++++++- Contralto/CPU/Tasks/MemoryRefreshTask.cs | 19 +++++++- Contralto/CPU/Tasks/ParityTask.cs | 19 +++++++- Contralto/CPU/Tasks/Task.cs | 19 +++++++- Contralto/CPU/UCodeDisassembler.cs | 19 +++++++- Contralto/CPU/UCodeMemory.cs | 19 +++++++- Contralto/Configuration.cs | 23 +++++++--- Contralto/Contralto.csproj | 12 ----- Contralto/Conversion.cs | 19 +++++++- Contralto/Disk/allgames.dsk | Bin 2601648 -> 2601648 bytes Contralto/Disk/tdisk4.dsk | Bin 2601648 -> 2601648 bytes Contralto/Disk/tdisk8.dsk | Bin 2601648 -> 2601648 bytes Contralto/Display/DisplayController.cs | 19 +++++++- Contralto/Display/IAltoDisplay.cs | 19 +++++++- Contralto/ExecutionController.cs | 23 +++++++--- Contralto/HighResTimer.cs | 19 +++++++- Contralto/IClockable.cs | 19 +++++++- Contralto/IO/DiabloDrive.cs | 19 +++++++- Contralto/IO/DiabloPack.cs | 19 +++++++- Contralto/IO/DiskController.cs | 19 +++++++- Contralto/IO/EthernetController.cs | 19 +++++++- Contralto/IO/HostEthernetEncapsulation.cs | 19 +++++++- Contralto/IO/IPacketEncapsulation.cs | 19 +++++++- Contralto/IO/Keyboard.cs | 19 +++++++- Contralto/IO/Mouse.cs | 22 +++++++-- Contralto/IO/Music.cs | 24 +++++++--- Contralto/IO/UDPEncapsulation.cs | 19 +++++++- Contralto/Logging/Log.cs | 23 ++++++++-- Contralto/Memory/IMemoryMappedDevice.cs | 18 +++++++- Contralto/Memory/Memory.cs | 19 +++++++- Contralto/Memory/MemoryBus.cs | 20 ++++++++- Contralto/Program.cs | 21 +++++++-- Contralto/Scheduler.cs | 20 ++++++++- Contralto/UI/AboutBox.cs | 26 +++++++---- Contralto/UI/AlternateBootWindow.cs | 26 +++++++---- Contralto/UI/AltoWindow.cs | 19 +++++++- Contralto/UI/Debugger.Designer.cs | 4 +- Contralto/UI/Debugger.cs | 29 +++++++----- Contralto/UI/SystemOptions.cs | 25 ++++++++--- Contralto/readme.txt | 45 ++++++++++++------- ContraltoSetup/Product.wxs | 30 ++++++++++--- 54 files changed, 901 insertions(+), 136 deletions(-) diff --git a/Contralto/AltoSystem.cs b/Contralto/AltoSystem.cs index 0c182e1..90b1783 100644 --- a/Contralto/AltoSystem.cs +++ b/Contralto/AltoSystem.cs @@ -1,10 +1,26 @@ -using System.Collections.Generic; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System.Collections.Generic; using Contralto.CPU; using Contralto.IO; using Contralto.Memory; using Contralto.Display; -using System.Timers; using System.IO; using System; diff --git a/Contralto/CPU/ALU.cs b/Contralto/CPU/ALU.cs index 5cb95ae..efc627b 100644 --- a/Contralto/CPU/ALU.cs +++ b/Contralto/CPU/ALU.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; namespace Contralto.CPU { diff --git a/Contralto/CPU/CPU.cs b/Contralto/CPU/CPU.cs index 16d5e09..c1920bf 100644 --- a/Contralto/CPU/CPU.cs +++ b/Contralto/CPU/CPU.cs @@ -1,4 +1,21 @@ -using System.Timers; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System.Timers; using Contralto.Logging; diff --git a/Contralto/CPU/ConstantMemory.cs b/Contralto/CPU/ConstantMemory.cs index 706e451..8006f5f 100644 --- a/Contralto/CPU/ConstantMemory.cs +++ b/Contralto/CPU/ConstantMemory.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.IO; namespace Contralto.CPU diff --git a/Contralto/CPU/MicroInstruction.cs b/Contralto/CPU/MicroInstruction.cs index c94b76f..cb0e904 100644 --- a/Contralto/CPU/MicroInstruction.cs +++ b/Contralto/CPU/MicroInstruction.cs @@ -1,4 +1,21 @@ -using Contralto.Memory; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Memory; using System; namespace Contralto.CPU diff --git a/Contralto/CPU/NovaDisassembler.cs b/Contralto/CPU/NovaDisassembler.cs index 9335424..191cda4 100644 --- a/Contralto/CPU/NovaDisassembler.cs +++ b/Contralto/CPU/NovaDisassembler.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Collections.Generic; using System.Text; diff --git a/Contralto/CPU/Shifter.cs b/Contralto/CPU/Shifter.cs index d51322e..95e97c3 100644 --- a/Contralto/CPU/Shifter.cs +++ b/Contralto/CPU/Shifter.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; namespace Contralto.CPU { diff --git a/Contralto/CPU/Tasks/CursorTask.cs b/Contralto/CPU/Tasks/CursorTask.cs index 9e0bc01..9dfad60 100644 --- a/Contralto/CPU/Tasks/CursorTask.cs +++ b/Contralto/CPU/Tasks/CursorTask.cs @@ -1,4 +1,20 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ +using System; namespace Contralto.CPU { diff --git a/Contralto/CPU/Tasks/DiskTask.cs b/Contralto/CPU/Tasks/DiskTask.cs index 0f000df..7218c3f 100644 --- a/Contralto/CPU/Tasks/DiskTask.cs +++ b/Contralto/CPU/Tasks/DiskTask.cs @@ -1,4 +1,21 @@ -using Contralto.IO; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.IO; using Contralto.Logging; using System; diff --git a/Contralto/CPU/Tasks/DisplayHorizontalTask.cs b/Contralto/CPU/Tasks/DisplayHorizontalTask.cs index 0501254..5eae7c3 100644 --- a/Contralto/CPU/Tasks/DisplayHorizontalTask.cs +++ b/Contralto/CPU/Tasks/DisplayHorizontalTask.cs @@ -1,4 +1,21 @@ -using Contralto.Display; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Display; using System; namespace Contralto.CPU diff --git a/Contralto/CPU/Tasks/DisplayVerticalTask.cs b/Contralto/CPU/Tasks/DisplayVerticalTask.cs index 117886a..0f1fcf6 100644 --- a/Contralto/CPU/Tasks/DisplayVerticalTask.cs +++ b/Contralto/CPU/Tasks/DisplayVerticalTask.cs @@ -1,4 +1,21 @@ -using Contralto.Display; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Display; using System; namespace Contralto.CPU diff --git a/Contralto/CPU/Tasks/DisplayWordTask.cs b/Contralto/CPU/Tasks/DisplayWordTask.cs index 261d726..4871a6f 100644 --- a/Contralto/CPU/Tasks/DisplayWordTask.cs +++ b/Contralto/CPU/Tasks/DisplayWordTask.cs @@ -1,4 +1,21 @@ -using Contralto.Display; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Display; using System; diff --git a/Contralto/CPU/Tasks/EmulatorTask.cs b/Contralto/CPU/Tasks/EmulatorTask.cs index bd17898..046fd92 100644 --- a/Contralto/CPU/Tasks/EmulatorTask.cs +++ b/Contralto/CPU/Tasks/EmulatorTask.cs @@ -1,4 +1,21 @@ -using Contralto.Logging; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Logging; using System; namespace Contralto.CPU diff --git a/Contralto/CPU/Tasks/EthernetTask.cs b/Contralto/CPU/Tasks/EthernetTask.cs index 257763c..a0f5dcd 100644 --- a/Contralto/CPU/Tasks/EthernetTask.cs +++ b/Contralto/CPU/Tasks/EthernetTask.cs @@ -1,4 +1,21 @@ -using Contralto.IO; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.IO; using Contralto.Logging; using System; diff --git a/Contralto/CPU/Tasks/MemoryRefreshTask.cs b/Contralto/CPU/Tasks/MemoryRefreshTask.cs index f485be2..979586c 100644 --- a/Contralto/CPU/Tasks/MemoryRefreshTask.cs +++ b/Contralto/CPU/Tasks/MemoryRefreshTask.cs @@ -1,4 +1,21 @@ -namespace Contralto.CPU +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +namespace Contralto.CPU { public partial class AltoCPU { diff --git a/Contralto/CPU/Tasks/ParityTask.cs b/Contralto/CPU/Tasks/ParityTask.cs index 6b1822c..0a3ff00 100644 --- a/Contralto/CPU/Tasks/ParityTask.cs +++ b/Contralto/CPU/Tasks/ParityTask.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; namespace Contralto.CPU { diff --git a/Contralto/CPU/Tasks/Task.cs b/Contralto/CPU/Tasks/Task.cs index 1983c8d..237af30 100644 --- a/Contralto/CPU/Tasks/Task.cs +++ b/Contralto/CPU/Tasks/Task.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using Contralto.Memory; using Contralto.Logging; diff --git a/Contralto/CPU/UCodeDisassembler.cs b/Contralto/CPU/UCodeDisassembler.cs index e20a546..36eb7bc 100644 --- a/Contralto/CPU/UCodeDisassembler.cs +++ b/Contralto/CPU/UCodeDisassembler.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Text; namespace Contralto.CPU diff --git a/Contralto/CPU/UCodeMemory.cs b/Contralto/CPU/UCodeMemory.cs index d8cedac..02c804f 100644 --- a/Contralto/CPU/UCodeMemory.cs +++ b/Contralto/CPU/UCodeMemory.cs @@ -1,4 +1,21 @@ -using Contralto.Logging; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Logging; using System; using System.IO; diff --git a/Contralto/Configuration.cs b/Contralto/Configuration.cs index ef4a3e2..14d622f 100644 --- a/Contralto/Configuration.cs +++ b/Contralto/Configuration.cs @@ -1,10 +1,23 @@ -using Contralto.Logging; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Logging; using System; -using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Contralto { diff --git a/Contralto/Contralto.csproj b/Contralto/Contralto.csproj index ce773a1..885427a 100644 --- a/Contralto/Contralto.csproj +++ b/Contralto/Contralto.csproj @@ -462,18 +462,6 @@ - - - - - - - - - - - - PreserveNewest diff --git a/Contralto/Conversion.cs b/Contralto/Conversion.cs index f7c9630..3732079 100644 --- a/Contralto/Conversion.cs +++ b/Contralto/Conversion.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; namespace Contralto { diff --git a/Contralto/Disk/allgames.dsk b/Contralto/Disk/allgames.dsk index ee49ceb03a594d94f1ab69212bde66aacfd61aca..eff0be8924b16447d14b6d291bb0a5df7fec392c 100644 GIT binary patch delta 56495 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 BmwW&K diff --git a/Contralto/Disk/tdisk4.dsk b/Contralto/Disk/tdisk4.dsk index eb00a6af8b6eca35353f7f21c7081ee76d2eb54f..127f32b03d218e2060707e03a7f996f9aad2c4b5 100644 GIT binary patch delta 351 zcmWm6ze@sf7zXh7y*u^J&g#0XwBM;4xuhW;1of)_Z%-Dc;J1XxBdOd?SP{gIU)+UFMEnt<@~K*6Ml_Bk$z1r zz4ES5Ee%3awZeYZaD(fBeBTdmY3zzoAq){YD(Ih^MgqG)QhuE3f1EaviH`VQ>s>CWihPla#%Nh>snA2y^aA<7y}bxFb)$i2^LJrUdMh8aaP`U?YI*C z(TR5OTv3|aZ+cz~`Zi2M9A;n^<{$w{n3se8!ow5iM8jKzC0K?PScNr6L0UGv%vZ{E g=}JGjbS}=1$&p;)E;nzk*$~B62G(Vv~@bV0b^z!P~ zGiyS%eY#X_!&|frf9;d68^*H6hUjN~0ol)*?@Lw$-9PzuX#Q|IgiN$+0~5uGaYWZ@ zY4fyHJ}8zhoa3bE6-?PHSl7=v+`fJxcyOx@mdL{!{qn1KW&VHV~f1!-AvGasq2 gPG{!+iBm4_kt2DVTU@<7XG`Sj8JL&3`odA*58VNP8vpt^nwRMSQh+3>?c|A*z zBecsHU% zWpsd1lTja|gNzO_>SxqqG;mMt{id;uJNrbbX$K|ZxX+pva{X&^*exsChx>RzmUy>q zqhS<8BPfJM(HI&>6QbJ=-`wH#Rp12{L6c|-O`{n!iySm33XHxvUJcIl!_(Nw@qzoj Y7v97_Zi#z&P7I!`P&6-+m4&?L50LDAn*aa+ delta 385 zcmW;HJxD@P6bJBo-+Ntsrs?yg_M!G+SHZw&DI6Rkg9vH}#Ky!DhZlk6PzVKbxkE&4 zZ*wVHTm+FzgV5R(5kjDdLrqQ*LSsic{0{s%oCBx!UBR`Xn4}Vf(2%>nF0mAzC^yr* znZ`g8&9uDrj2%MOl(HQ=I1eabOz;4S`&AvbM#O8JEGyW}2MGc!Vvw+YMAab7N5p&H z`isL($Os*103+l?7z&{qIkTBHjN*BwaJnDcOPQ--(x_ic8<_VDtLPc(UtY=Ob{=`B zrHW3=wjITGM#mY2?qGC+Q75A=Mm0v=4XS6_Y6Q*>5pmbnJrWL@Z-n?v*P84%D+>8C zUoP. +*/ + +using System.Collections.Generic; using Contralto.CPU; namespace Contralto.Display diff --git a/Contralto/Display/IAltoDisplay.cs b/Contralto/Display/IAltoDisplay.cs index e3e3f0f..e2650c9 100644 --- a/Contralto/Display/IAltoDisplay.cs +++ b/Contralto/Display/IAltoDisplay.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Contralto/ExecutionController.cs b/Contralto/ExecutionController.cs index 58aa3ef..16f1cf5 100644 --- a/Contralto/ExecutionController.cs +++ b/Contralto/ExecutionController.cs @@ -1,9 +1,22 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Threading; -using System.Threading.Tasks; namespace Contralto { diff --git a/Contralto/HighResTimer.cs b/Contralto/HighResTimer.cs index ea39781..94a3003 100644 --- a/Contralto/HighResTimer.cs +++ b/Contralto/HighResTimer.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.ComponentModel; using System.Runtime.InteropServices; using System.Threading; diff --git a/Contralto/IClockable.cs b/Contralto/IClockable.cs index d447f42..f1022f4 100644 --- a/Contralto/IClockable.cs +++ b/Contralto/IClockable.cs @@ -1,4 +1,21 @@ -namespace Contralto +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +namespace Contralto { /// /// Used by classes implementing devices that are clocked (i.e. that are dependent diff --git a/Contralto/IO/DiabloDrive.cs b/Contralto/IO/DiabloDrive.cs index 755443e..3d80a56 100644 --- a/Contralto/IO/DiabloDrive.cs +++ b/Contralto/IO/DiabloDrive.cs @@ -1,4 +1,21 @@ -using Contralto.Logging; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.Logging; using System; using System.Collections.Generic; using System.IO; diff --git a/Contralto/IO/DiabloPack.cs b/Contralto/IO/DiabloPack.cs index bd48304..6ee5118 100644 --- a/Contralto/IO/DiabloPack.cs +++ b/Contralto/IO/DiabloPack.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.IO; namespace Contralto.IO diff --git a/Contralto/IO/DiskController.cs b/Contralto/IO/DiskController.cs index 7c77d60..75cfc78 100644 --- a/Contralto/IO/DiskController.cs +++ b/Contralto/IO/DiskController.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.IO; using Contralto.Logging; using Contralto.CPU; diff --git a/Contralto/IO/EthernetController.cs b/Contralto/IO/EthernetController.cs index 8cedec9..19b1e74 100644 --- a/Contralto/IO/EthernetController.cs +++ b/Contralto/IO/EthernetController.cs @@ -1,4 +1,21 @@ -using Contralto.CPU; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.CPU; using Contralto.Logging; using System; using System.Collections.Generic; diff --git a/Contralto/IO/HostEthernetEncapsulation.cs b/Contralto/IO/HostEthernetEncapsulation.cs index e95092e..324a6e3 100644 --- a/Contralto/IO/HostEthernetEncapsulation.cs +++ b/Contralto/IO/HostEthernetEncapsulation.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Collections.Generic; using System.Linq; using System.Text; diff --git a/Contralto/IO/IPacketEncapsulation.cs b/Contralto/IO/IPacketEncapsulation.cs index a8c34ec..df85cfd 100644 --- a/Contralto/IO/IPacketEncapsulation.cs +++ b/Contralto/IO/IPacketEncapsulation.cs @@ -1,4 +1,21 @@ -using System.IO; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System.IO; namespace Contralto.IO diff --git a/Contralto/IO/Keyboard.cs b/Contralto/IO/Keyboard.cs index 82b89f4..e1955a3 100644 --- a/Contralto/IO/Keyboard.cs +++ b/Contralto/IO/Keyboard.cs @@ -1,4 +1,21 @@ -using System.Collections.Generic; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System.Collections.Generic; using Contralto.Memory; using Contralto.CPU; diff --git a/Contralto/IO/Mouse.cs b/Contralto/IO/Mouse.cs index 3aa960a..71a7798 100644 --- a/Contralto/IO/Mouse.cs +++ b/Contralto/IO/Mouse.cs @@ -1,9 +1,23 @@ -using Contralto.CPU; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.CPU; using Contralto.Memory; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading; namespace Contralto.IO diff --git a/Contralto/IO/Music.cs b/Contralto/IO/Music.cs index 88abfff..8c50eef 100644 --- a/Contralto/IO/Music.cs +++ b/Contralto/IO/Music.cs @@ -1,12 +1,24 @@ -using Contralto.CPU; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.CPU; using Contralto.Logging; using Contralto.Memory; -using System; -using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Contralto.IO { diff --git a/Contralto/IO/UDPEncapsulation.cs b/Contralto/IO/UDPEncapsulation.cs index a63367d..d27f43f 100644 --- a/Contralto/IO/UDPEncapsulation.cs +++ b/Contralto/IO/UDPEncapsulation.cs @@ -1,4 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Net; using System.Net.Sockets; diff --git a/Contralto/Logging/Log.cs b/Contralto/Logging/Log.cs index a117878..17b5cd1 100644 --- a/Contralto/Logging/Log.cs +++ b/Contralto/Logging/Log.cs @@ -1,4 +1,21 @@ -#define LOGGING_ENABLED +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +#define LOGGING_ENABLED using System; using System.IO; @@ -56,8 +73,8 @@ namespace Contralto.Logging static Log() { // TODO: make configurable - _components = LogComponent.CPU; // LogComponent.HostNetworkInterface | LogComponent.EthernetPacket; // | LogComponent.HostEthernet | LogComponent.EthernetController; // LogComponent.DiskController | LogComponent.DiskSectorTask | LogComponent.Debug | LogComponent.CPU; // LogComponent.EthernetController; // | LogComponent.Microcode | LogComponent.Memory | LogComponent.CPU; - _type = LogType.Normal | LogType.Warning | LogType.Error | LogType.Verbose; + _components = LogComponent.None; // LogComponent.HostNetworkInterface | LogComponent.EthernetPacket; // | LogComponent.HostEthernet | LogComponent.EthernetController; // LogComponent.DiskController | LogComponent.DiskSectorTask | LogComponent.Debug | LogComponent.CPU; // LogComponent.EthernetController; // | LogComponent.Microcode | LogComponent.Memory | LogComponent.CPU; + _type = LogType.None; // LogType.Normal | LogType.Warning | LogType.Error | LogType.Verbose; //_logStream = new StreamWriter("log.txt"); } diff --git a/Contralto/Memory/IMemoryMappedDevice.cs b/Contralto/Memory/IMemoryMappedDevice.cs index 970a2e1..689c320 100644 --- a/Contralto/Memory/IMemoryMappedDevice.cs +++ b/Contralto/Memory/IMemoryMappedDevice.cs @@ -1,5 +1,21 @@ -using System; +/* + This file is part of ContrAlto. + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using Contralto.CPU; namespace Contralto.Memory diff --git a/Contralto/Memory/Memory.cs b/Contralto/Memory/Memory.cs index cb85558..c3d5770 100644 --- a/Contralto/Memory/Memory.cs +++ b/Contralto/Memory/Memory.cs @@ -1,4 +1,21 @@ -using Contralto.CPU; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.CPU; using Contralto.Logging; namespace Contralto.Memory diff --git a/Contralto/Memory/MemoryBus.cs b/Contralto/Memory/MemoryBus.cs index 7e5512a..3d2f7f7 100644 --- a/Contralto/Memory/MemoryBus.cs +++ b/Contralto/Memory/MemoryBus.cs @@ -1,7 +1,23 @@ -using Contralto.CPU; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.CPU; using System; using System.Collections.Generic; -using System.IO; namespace Contralto.Memory { diff --git a/Contralto/Program.cs b/Contralto/Program.cs index b3cf373..59dd112 100644 --- a/Contralto/Program.cs +++ b/Contralto/Program.cs @@ -1,11 +1,24 @@ -using Contralto.CPU; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + using Contralto.IO; using System; -using System.Net; using System.Collections.Generic; -using System.IO; using System.Windows.Forms; -using System.Threading; namespace Contralto { diff --git a/Contralto/Scheduler.cs b/Contralto/Scheduler.cs index 7d52dbb..f7f5441 100644 --- a/Contralto/Scheduler.cs +++ b/Contralto/Scheduler.cs @@ -1,4 +1,20 @@ -using System; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + using System.Collections.Generic; @@ -14,7 +30,7 @@ namespace Contralto public delegate void SchedulerEventCallback(ulong timeNsec, ulong skewNsec, object context); /// - /// An Event represents a callback and associated context that is scheduled for a future timestamp. + /// An Event encapsulates a callback and associated context that is scheduled for a future timestamp. /// public class Event { diff --git a/Contralto/UI/AboutBox.cs b/Contralto/UI/AboutBox.cs index 93a4c91..77c06a5 100644 --- a/Contralto/UI/AboutBox.cs +++ b/Contralto/UI/AboutBox.cs @@ -1,11 +1,21 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Windows.Forms; namespace Contralto diff --git a/Contralto/UI/AlternateBootWindow.cs b/Contralto/UI/AlternateBootWindow.cs index 9b65f7c..edae7ee 100644 --- a/Contralto/UI/AlternateBootWindow.cs +++ b/Contralto/UI/AlternateBootWindow.cs @@ -1,11 +1,21 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Windows.Forms; namespace Contralto diff --git a/Contralto/UI/AltoWindow.cs b/Contralto/UI/AltoWindow.cs index 4864c08..4cdb84c 100644 --- a/Contralto/UI/AltoWindow.cs +++ b/Contralto/UI/AltoWindow.cs @@ -1,4 +1,21 @@ -using Contralto.CPU; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.CPU; using Contralto.Display; using Contralto.IO; using Contralto.Properties; diff --git a/Contralto/UI/Debugger.Designer.cs b/Contralto/UI/Debugger.Designer.cs index 713fddb..bdee200 100644 --- a/Contralto/UI/Debugger.Designer.cs +++ b/Contralto/UI/Debugger.Designer.cs @@ -1110,7 +1110,7 @@ // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(6, 678); + this.label1.Location = new System.Drawing.Point(6, 676); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(85, 13); this.label1.TabIndex = 9; @@ -1119,7 +1119,7 @@ // ExecutionStateLabel // this.ExecutionStateLabel.AutoSize = true; - this.ExecutionStateLabel.Location = new System.Drawing.Point(98, 678); + this.ExecutionStateLabel.Location = new System.Drawing.Point(98, 676); this.ExecutionStateLabel.Name = "ExecutionStateLabel"; this.ExecutionStateLabel.Size = new System.Drawing.Size(33, 13); this.ExecutionStateLabel.TabIndex = 10; diff --git a/Contralto/UI/Debugger.cs b/Contralto/UI/Debugger.cs index 92bc249..faff985 100644 --- a/Contralto/UI/Debugger.cs +++ b/Contralto/UI/Debugger.cs @@ -1,19 +1,26 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using System; using System.Drawing; -using System.Linq; using System.IO; -using System.Text; using System.Windows.Forms; using Contralto.CPU; -using System.Threading; -using System.Drawing.Imaging; -using Contralto.IO; -using Contralto.Display; -using Contralto.Logging; namespace Contralto { diff --git a/Contralto/UI/SystemOptions.cs b/Contralto/UI/SystemOptions.cs index 81d56dd..10b0daf 100644 --- a/Contralto/UI/SystemOptions.cs +++ b/Contralto/UI/SystemOptions.cs @@ -1,13 +1,24 @@ -using Contralto.IO; +/* + This file is part of ContrAlto. + + ContrAlto is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ContrAlto is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with ContrAlto. If not, see . +*/ + +using Contralto.IO; using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; using System.Net.NetworkInformation; -using System.Text; -using System.Threading.Tasks; using System.Windows.Forms; namespace Contralto.UI diff --git a/Contralto/readme.txt b/Contralto/readme.txt index 21d2456..ed1870e 100644 --- a/Contralto/readme.txt +++ b/Contralto/readme.txt @@ -30,18 +30,18 @@ keyset input device. 2.0 Requirements ================ -ContrAlto will run on any Windows PC running Windows XP or later, with version -2.0 or later of the .NET Framework installed. .NET should be present by default +ContrAlto will run on any Windows PC running Windows Vista or later, with version +4.5 or later of the .NET Framework installed. .NET should be present by default on Windows Vista and later; if it is not installed on your computer it can be obtained at https://www.microsoft.com/net. As ContrAlto is a .NET application and has no Windows-specific dependencies, it will also run under Mono (http://www.mono-project.com/) on Unix and MacOS, -however this usage is not as well tested -- please file bugs if you find them -(see Section 7 for details). +however this usage has many rough edges at the moment -- please file bugs if +you find them (see Section 7 for details). A three-button mouse is essential for using most Alto software. On most mice, -the "mousewheel" can be clicked to provide the third (middle) button. Laptops +the mousewheel can be clicked to provide the third (middle) button. Laptops with trackpads may have configuration options to simulate three buttons but will likely be clumsy to use. @@ -49,6 +49,16 @@ will likely be clumsy to use. 3.0 Getting Started =================== +Installation of ContrAlto is simple: Double-click the installer file, named +"ContraltoSetup.msi" and follow the on-screen instructions. The installer +will install all of the necessary files and create two icons on your Start menu, +one for ContrAlto itself, and one for its documentation (the file you're reading +now!) + + +3.1 Getting Started +=================== + To launch ContrAlto, simply click on the shortcut created by the installer on your Start Menu (or Start Screen, depending on your Windows version.) Two windows will appear: a console window for diagnostic output and the main display @@ -144,16 +154,15 @@ when a new image is loaded or when ContrAlto exits. For this reason it may be a good idea to make backups of packs from time to time (just like on the real machine.) -ContrAlto comes with a set of disk packs containing an assortment of Alto -programs, these can be found in your "Documents" folder, in the -"ContrAlto Disks" subfolder. These are: +ContrAlto does not come with any disk images, however an assortment of Alto +programs can be found on Bitsavers.org, at +http://www.bitsavers.org/bits/Xerox/Alto/disk_images/. Images include: -AllGames.dsk - A collection of games for the Alto +AllGames.dsk - A collection of games and toys for the Alto Bcpl.dsk - A set of BCPL development tools -Diag.dsk - Diagnostic tools +Diags.dsk - Diagnostic tools NonProg.dsk - The "Non-Programmer's Disk," containing Bravo -ST76.dsk - Smalltalk-76 -XmST76.dsk44 - Another Smalltalk-76, with sources and space to play. +Xmsmall.dsk - Smalltalk-76 3.1.4 Startup, Reset and Shutdown @@ -375,7 +384,7 @@ ROM1 contains the listing for the Mesa 5.0 microcode ROMs. 5.3 Memory Pane --------------- -The pane near the lower-left (labeled "Memory") shows a view into the main +The pane near the top-middle (labeled "System Memory") shows a view into the main memory of the Alto, providing address/data and a machine-generated disassembly of Alto (Nova) instructions. @@ -396,8 +405,6 @@ in the Emulator task. The other panes in the debugger are: -Disk: Shows registers and other status of the disk hardware. - Tasks: Shows the current microcode task status. The "T" column indicates the task name, "S" indicates the status ("W"akeup and "R"unning), and the "uPC" column indicates the micro-PC for the corresponding task. There @@ -435,8 +442,16 @@ with "ContrAlto Bug". When you send a report, please be as specific and detailed as possible: - What issue are you seeing? - What Alto software are you running? +- What operating system are you running ContrAlto on? - What are the exact steps needed to reproduce the issue? The more detailed the bug report, the more possible it is for me to track down the cause. + +8.0 Thanks and Acknowledgements +=============================== + +ContrAlto would not have been possible without the amazing preservation work of +Bitsavers.org and the Computing History Museum. + diff --git a/ContraltoSetup/Product.wxs b/ContraltoSetup/Product.wxs index 52fb1c1..6c4a140 100644 --- a/ContraltoSetup/Product.wxs +++ b/ContraltoSetup/Product.wxs @@ -1,4 +1,21 @@ + + @@ -12,8 +29,8 @@ - - + @@ -50,6 +67,7 @@ + @@ -161,8 +179,8 @@ - - +