annotate level3/Level3.doc @ 2349:f506d1905781

Added Level 3
author boisy
date Sun, 17 Jan 2010 21:35:51 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2349
f506d1905781 Added Level 3
boisy
parents:
diff changeset
1 The Level III modifications are Copyright 1996 by Alan T. DeKok, all rights
f506d1905781 Added Level 3
boisy
parents:
diff changeset
2 reserved.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
3
f506d1905781 Added Level 3
boisy
parents:
diff changeset
4
f506d1905781 Added Level 3
boisy
parents:
diff changeset
5 Level III
f506d1905781 Added Level 3
boisy
parents:
diff changeset
6 =========
f506d1905781 Added Level 3
boisy
parents:
diff changeset
7
f506d1905781 Added Level 3
boisy
parents:
diff changeset
8 It's what everybody's been asking for, so here goes.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
9
f506d1905781 Added Level 3
boisy
parents:
diff changeset
10 One warning: Level III is VERY dependant on the order of modules in the
f506d1905781 Added Level 3
boisy
parents:
diff changeset
11 OS9Boot file. If you do NOT follow the directions below exactly, your
f506d1905781 Added Level 3
boisy
parents:
diff changeset
12 system will NOT BOOT. I'm willing to answer questions and perform support,
f506d1905781 Added Level 3
boisy
parents:
diff changeset
13 but Level III is not for the faint of heart or the OS-9 beginner.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
14
f506d1905781 Added Level 3
boisy
parents:
diff changeset
15 When you install Level III, you MUST do it on a system using NitrOS-9.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
16
f506d1905781 Added Level 3
boisy
parents:
diff changeset
17 When you build a Level III OS9Boot, be aware that you WILL NOT be able
f506d1905781 Added Level 3
boisy
parents:
diff changeset
18 to cobbler a disk once LIII is booted. You must copy the OS9Boot by hand,
f506d1905781 Added Level 3
boisy
parents:
diff changeset
19 and use 'ezgen' to update LSN0, or use OS9Gen.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
20
f506d1905781 Added Level 3
boisy
parents:
diff changeset
21 ******************************************************************************
f506d1905781 Added Level 3
boisy
parents:
diff changeset
22 ** DO NOT COBBLER DISKS WITH LEVEL III! IT WILL COBBLER BUT WILL NOT BOOT! **
f506d1905781 Added Level 3
boisy
parents:
diff changeset
23 ******************************************************************************
f506d1905781 Added Level 3
boisy
parents:
diff changeset
24
f506d1905781 Added Level 3
boisy
parents:
diff changeset
25 Your OS9Boot file MUST be magically formatted as follows. The reasons for
f506d1905781 Added Level 3
boisy
parents:
diff changeset
26 this are long and detailed. I'll just say that if it isn't done this way,
f506d1905781 Added Level 3
boisy
parents:
diff changeset
27 Level III will NOT work.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
28
f506d1905781 Added Level 3
boisy
parents:
diff changeset
29 ****** start of the OS9Boot file.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
30 NitrOS9 (from the NitrOS9.L3 file.)
f506d1905781 Added Level 3
boisy
parents:
diff changeset
31 SCF
f506d1905781 Added Level 3
boisy
parents:
diff changeset
32 (other SCF modules, i.e. SACIA, Printer, VRN)
f506d1905781 Added Level 3
boisy
parents:
diff changeset
33 ( NOT CC3IO or WindInt or VDGInt. Never!)
f506d1905781 Added Level 3
boisy
parents:
diff changeset
34 (up to a limit of 15k of modules)
f506d1905781 Added Level 3
boisy
parents:
diff changeset
35 _end <--- specifies the end of SCF information, from the _end.L3 file.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
36 RBF
f506d1905781 Added Level 3
boisy
parents:
diff changeset
37 (other RBF modules, i.e. CC3Disk, Rammer, RamPak, CCHDisk, etc.)
f506d1905781 Added Level 3
boisy
parents:
diff changeset
38 _end <--- specifies the end of RBF information
f506d1905781 Added Level 3
boisy
parents:
diff changeset
39 (everything else. Order does not matter here.)
f506d1905781 Added Level 3
boisy
parents:
diff changeset
40 (ALL descriptors, Clock, IOMan, OS9p2, Init, CC3IO, Windint,
f506d1905781 Added Level 3
boisy
parents:
diff changeset
41 PipeMan, etc.)
f506d1905781 Added Level 3
boisy
parents:
diff changeset
42 ****** End of the OS9Boot file.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
43
f506d1905781 Added Level 3
boisy
parents:
diff changeset
44 Late tests indicate it is possible to put CC3IO inside the SCF local memory.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
45 Whether or not it works is dependent on local system configurations. Either
f506d1905781 Added Level 3
boisy
parents:
diff changeset
46 way, there's plenty of system memory, and it doesn't appear to make any
f506d1905781 Added Level 3
boisy
parents:
diff changeset
47 difference to anything.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
48
f506d1905781 Added Level 3
boisy
parents:
diff changeset
49 Similarly, PipeMan may be put in SCF local memory between SCF and the first
f506d1905781 Added Level 3
boisy
parents:
diff changeset
50 _end module. Note that PipeMan may NOT be put in with RBF!
f506d1905781 Added Level 3
boisy
parents:
diff changeset
51
f506d1905781 Added Level 3
boisy
parents:
diff changeset
52 An 'ident -s' of my Level III OS9Boot file (with comments) looks like this:
f506d1905781 Added Level 3
boisy
parents:
diff changeset
53
f506d1905781 Added Level 3
boisy
parents:
diff changeset
54 1 $C7 $389B28 . NitrOS9
f506d1905781 Added Level 3
boisy
parents:
diff changeset
55 16 $D1 $E2B0EB . SCF \
f506d1905781 Added Level 3
boisy
parents:
diff changeset
56 12 $E1 $82D6D3 . SACIA | SCF and SCF device drivers
f506d1905781 Added Level 3
boisy
parents:
diff changeset
57 1 $E1 $329D69 . VRN |
f506d1905781 Added Level 3
boisy
parents:
diff changeset
58 13 $E1 $3389A4 . PRINTER /
f506d1905781 Added Level 3
boisy
parents:
diff changeset
59 1 $C7 $BB7259 . _end
f506d1905781 Added Level 3
boisy
parents:
diff changeset
60 30 $D1 $753C86 . RBF \
f506d1905781 Added Level 3
boisy
parents:
diff changeset
61 4 $E1 $3AB3AA . Rammer | RBF and RBF device drivers
f506d1905781 Added Level 3
boisy
parents:
diff changeset
62 2 $E1 $BCE29D . RamPak |
f506d1905781 Added Level 3
boisy
parents:
diff changeset
63 11 $E1 $CFAA38 . CC3Disk /
f506d1905781 Added Level 3
boisy
parents:
diff changeset
64 1 $C7 $BB7259 . _end
f506d1905781 Added Level 3
boisy
parents:
diff changeset
65 1 $C1 $BFF958 . OS9p3 everything else
f506d1905781 Added Level 3
boisy
parents:
diff changeset
66 67 $C0 $680456 . Init
f506d1905781 Added Level 3
boisy
parents:
diff changeset
67 82 $F1 $7EBD63 . DD DEVICE DESCRIPTORS GO HERE
f506d1905781 Added Level 3
boisy
parents:
diff changeset
68 82 $F1 $93C195 . D0
f506d1905781 Added Level 3
boisy
parents:
diff changeset
69 82 $F1 $F09A9D . D1
f506d1905781 Added Level 3
boisy
parents:
diff changeset
70 82 $F1 $323E4F . D2
f506d1905781 Added Level 3
boisy
parents:
diff changeset
71 82 $F1 $092A49 . MD
f506d1905781 Added Level 3
boisy
parents:
diff changeset
72 82 $F1 $B31A99 . R0
f506d1905781 Added Level 3
boisy
parents:
diff changeset
73 114 $F1 $FD590E . T2
f506d1905781 Added Level 3
boisy
parents:
diff changeset
74 83 $F1 $C9B7C1 . P
f506d1905781 Added Level 3
boisy
parents:
diff changeset
75 19 $C1 $67D5A0 . WindInt OUTSIDE SCF local memory!
f506d1905781 Added Level 3
boisy
parents:
diff changeset
76 20 $E1 $B4F1E2 . CC3IO perhaps here, perhaps in SCF local memory
f506d1905781 Added Level 3
boisy
parents:
diff changeset
77 83 $F1 $17FBEF . Term
f506d1905781 Added Level 3
boisy
parents:
diff changeset
78 83 $F1 $F8D0CB . W
f506d1905781 Added Level 3
boisy
parents:
diff changeset
79 83 $F1 $5EA5AA . W1 WINDOW DESCRIPTORS HERE!
f506d1905781 Added Level 3
boisy
parents:
diff changeset
80 83 $F1 $691BAA . W2
f506d1905781 Added Level 3
boisy
parents:
diff changeset
81 83 $F1 $FB498B . W3
f506d1905781 Added Level 3
boisy
parents:
diff changeset
82 83 $F1 $05BFAA . W4
f506d1905781 Added Level 3
boisy
parents:
diff changeset
83 83 $F1 $97ED8B . W5
f506d1905781 Added Level 3
boisy
parents:
diff changeset
84 83 $F1 $E30B59 . W6
f506d1905781 Added Level 3
boisy
parents:
diff changeset
85 83 $F1 $710B78 . W7
f506d1905781 Added Level 3
boisy
parents:
diff changeset
86 83 $F1 $9F0B78 . W8
f506d1905781 Added Level 3
boisy
parents:
diff changeset
87 83 $F1 $0D0B59 . W9
f506d1905781 Added Level 3
boisy
parents:
diff changeset
88 18 $C0 $826A54 . OS9p2 All these modules MUST come after the '_end'
f506d1905781 Added Level 3
boisy
parents:
diff changeset
89 12 $C1 $1B5CA4 . IOMan module, or your system will crash.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
90 9 $C1 $402FE2 . Clock
f506d1905781 Added Level 3
boisy
parents:
diff changeset
91 4 $D1 $ED94CC . PipeMan
f506d1905781 Added Level 3
boisy
parents:
diff changeset
92 2 $E1 $ADB22E . Piper
f506d1905781 Added Level 3
boisy
parents:
diff changeset
93 80 $F1 $CC06AF . Pipe
f506d1905781 Added Level 3
boisy
parents:
diff changeset
94 1 $F1 $B2004F . Nil
f506d1905781 Added Level 3
boisy
parents:
diff changeset
95
f506d1905781 Added Level 3
boisy
parents:
diff changeset
96
f506d1905781 Added Level 3
boisy
parents:
diff changeset
97 OK, now the theory behind the magic.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
98
f506d1905781 Added Level 3
boisy
parents:
diff changeset
99 When booting OS-9, the startup routine in OS9p1 calls the Boot module to
f506d1905781 Added Level 3
boisy
parents:
diff changeset
100 load in the OS9Boot file. OS9p1 then looks for a module named 'NitrOS9
f506d1905781 Added Level 3
boisy
parents:
diff changeset
101 as the FIRST module of the OS9Boot file. If it exists, that module is called
f506d1905781 Added Level 3
boisy
parents:
diff changeset
102 BEFORE verifying the OS9Boot file.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
103
f506d1905781 Added Level 3
boisy
parents:
diff changeset
104 The NitrOS9 module allocates memory, and moves the SCF modules (up to
f506d1905781 Added Level 3
boisy
parents:
diff changeset
105 the _end module) into 'SCF local memory', and verifies the modules. The
f506d1905781 Added Level 3
boisy
parents:
diff changeset
106 same procedure is followed for RBF modules, and when I get the chance later,
f506d1905781 Added Level 3
boisy
parents:
diff changeset
107 for PipeMan and SBF modules.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
108
f506d1905781 Added Level 3
boisy
parents:
diff changeset
109 Extra memory is allocated in 16k chunks, and mapped into address $2000
f506d1905781 Added Level 3
boisy
parents:
diff changeset
110 to $5FFF of the system map. An 'smap' will show you that this memory is
f506d1905781 Added Level 3
boisy
parents:
diff changeset
111 allocated.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
112
f506d1905781 Added Level 3
boisy
parents:
diff changeset
113 IOMan intercepts EVERY system call, and EVERY request/return system call.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
114 Any module inside 'local memory' asking for system RAM gets allocated
f506d1905781 Added Level 3
boisy
parents:
diff changeset
115 RAM from that local memory. Any module in 'system global memory' asking
f506d1905781 Added Level 3
boisy
parents:
diff changeset
116 for system RAM gets allocated RAM from the global memory pool.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
117
f506d1905781 Added Level 3
boisy
parents:
diff changeset
118 The net result of this is that you lose 16k of memory from the bottom
f506d1905781 Added Level 3
boisy
parents:
diff changeset
119 of the system memory map, but you move about 16k of modules into system local
f506d1905781 Added Level 3
boisy
parents:
diff changeset
120 memory. On my setup, I had about 14K free after booting, and now 'smap'
f506d1905781 Added Level 3
boisy
parents:
diff changeset
121 usually gives me 11k of _global_ memory free. And I still have 8k of SCF
f506d1905781 Added Level 3
boisy
parents:
diff changeset
122 memory, and 9k of RBF memory left!
f506d1905781 Added Level 3
boisy
parents:
diff changeset
123
f506d1905781 Added Level 3
boisy
parents:
diff changeset
124 The ONLY things that take memory out of 'system global memory' are process
f506d1905781 Added Level 3
boisy
parents:
diff changeset
125 descriptors (.5k each) and path descriptors (.0625K, 64 bytes). 11K is
f506d1905781 Added Level 3
boisy
parents:
diff changeset
126 room for another 20 processes, each with STDIN, STDOUT, and STDERR going
f506d1905781 Added Level 3
boisy
parents:
diff changeset
127 to a window. And 8k of SCF memory is just about enough memory for SCF
f506d1905781 Added Level 3
boisy
parents:
diff changeset
128 buffers for each of those 20 processes.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
129
f506d1905781 Added Level 3
boisy
parents:
diff changeset
130 i.e. Level III enables you to have about 25 _different_ processes
f506d1905781 Added Level 3
boisy
parents:
diff changeset
131 running in different windows, all at the same time! The only way that this
f506d1905781 Added Level 3
boisy
parents:
diff changeset
132 is possible on a Level II system is to strip your OS9Boot file down to almost
f506d1905781 Added Level 3
boisy
parents:
diff changeset
133 nothing. Level III allows you to keep all of your favorite modules in your
f506d1905781 Added Level 3
boisy
parents:
diff changeset
134 OS9Boot.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
135
f506d1905781 Added Level 3
boisy
parents:
diff changeset
136 VDG windows come out of system global memory, too. That's why I added the
f506d1905781 Added Level 3
boisy
parents:
diff changeset
137 'largest free block' display to the 'sfree' command, below. If you have
f506d1905781 Added Level 3
boisy
parents:
diff changeset
138 less than 6k free in one block, you can't run many old Coco2 games.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
139
f506d1905781 Added Level 3
boisy
parents:
diff changeset
140 The local 16k memory map is saved and restored across every system call,
f506d1905781 Added Level 3
boisy
parents:
diff changeset
141 and changed whenever a call to SCF/RBF is done. Because only IOMan knows
f506d1905781 Added Level 3
boisy
parents:
diff changeset
142 about the changes, only it (and clock) have to be modified. All of the
f506d1905781 Added Level 3
boisy
parents:
diff changeset
143 old file managers and drivers work perfectly. This includes programs
f506d1905781 Added Level 3
boisy
parents:
diff changeset
144 like 'winfo' and 'wdir'.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
145
f506d1905781 Added Level 3
boisy
parents:
diff changeset
146 I got the idea from thinking that it's perfectly possible to boot OS-9
f506d1905781 Added Level 3
boisy
parents:
diff changeset
147 with NO SCF modules, and likewise with NO RBF modules. If that's possible,
f506d1905781 Added Level 3
boisy
parents:
diff changeset
148 why not map SCF and RBF into the same area of memory, and switch between
f506d1905781 Added Level 3
boisy
parents:
diff changeset
149 them on the fly? So far, I would say it's taken me the equivalent of 4 weeks
f506d1905781 Added Level 3
boisy
parents:
diff changeset
150 full-time work, as I ran into HORRIBLE problems. Level III is sufficiently
f506d1905781 Added Level 3
boisy
parents:
diff changeset
151 different from Level II that you can't really think the same way about it.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
152
f506d1905781 Added Level 3
boisy
parents:
diff changeset
153 Anyways, here's an 'sfree' of my current system, with OSTerm running
f506d1905781 Added Level 3
boisy
parents:
diff changeset
154 in another window, and 3 'shell' windows:
f506d1905781 Added Level 3
boisy
parents:
diff changeset
155
f506d1905781 Added Level 3
boisy
parents:
diff changeset
156 ----- Level III System Memory ----- System memory:
f506d1905781 Added Level 3
boisy
parents:
diff changeset
157 37 free pages, largest block 37 pages.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
158 9K of free RAM.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
159
f506d1905781 Added Level 3
boisy
parents:
diff changeset
160 SCF local memory:
f506d1905781 Added Level 3
boisy
parents:
diff changeset
161 21 free pages, largest block 21 pages.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
162 5K of free RAM.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
163
f506d1905781 Added Level 3
boisy
parents:
diff changeset
164 RBF local memory:
f506d1905781 Added Level 3
boisy
parents:
diff changeset
165 31 free pages, largest block 31 pages.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
166 7K of free RAM.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
167
f506d1905781 Added Level 3
boisy
parents:
diff changeset
168 ----
f506d1905781 Added Level 3
boisy
parents:
diff changeset
169 That's 89 pages (22K) of free RAM, and my OS9Boot file is $73E2 bytes long!
f506d1905781 Added Level 3
boisy
parents:
diff changeset
170 Even with a 4K SACia buffer open, 8 processes, and 4 windows! I like it...
f506d1905781 Added Level 3
boisy
parents:
diff changeset
171
f506d1905781 Added Level 3
boisy
parents:
diff changeset
172 Here's an 'smap':
f506d1905781 Added Level 3
boisy
parents:
diff changeset
173
f506d1905781 Added Level 3
boisy
parents:
diff changeset
174 0 1 2 3 4 5 6 7 8 9 A B C D E F
f506d1905781 Added Level 3
boisy
parents:
diff changeset
175 # = = = = = = = = = = = = = = = =
f506d1905781 Added Level 3
boisy
parents:
diff changeset
176 0 U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
177 1 U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
178 2 U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
179 3 U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
180 4 U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
181 5 U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
182 6 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f506d1905781 Added Level 3
boisy
parents:
diff changeset
183 7 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
f506d1905781 Added Level 3
boisy
parents:
diff changeset
184 8 _ _ _ _ _ U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
185 9 U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
186 A U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
187 B U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
188 C U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
189 D U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
190 E U U U U U U U U U U U U U U U U
f506d1905781 Added Level 3
boisy
parents:
diff changeset
191 F U U U U U U U U U U U U U U U .
f506d1905781 Added Level 3
boisy
parents:
diff changeset
192
f506d1905781 Added Level 3
boisy
parents:
diff changeset
193 Number of Free Pages: 37
f506d1905781 Added Level 3
boisy
parents:
diff changeset
194 Ram Free in KBytes: 9
f506d1905781 Added Level 3
boisy
parents:
diff changeset
195
f506d1905781 Added Level 3
boisy
parents:
diff changeset
196
f506d1905781 Added Level 3
boisy
parents:
diff changeset
197 ---
f506d1905781 Added Level 3
boisy
parents:
diff changeset
198 This is enough room to format a disk (greater than 7K), even with many
f506d1905781 Added Level 3
boisy
parents:
diff changeset
199 processes and OSTerm running!
f506d1905781 Added Level 3
boisy
parents:
diff changeset
200
f506d1905781 Added Level 3
boisy
parents:
diff changeset
201 I've been running Level III for just under a year, and I've had it in
f506d1905781 Added Level 3
boisy
parents:
diff changeset
202 beta test on 10+ systems for 8 months. One system was running a BBS, and
f506d1905781 Added Level 3
boisy
parents:
diff changeset
203 at one report was up and running for 2 months without a reboot. I think
f506d1905781 Added Level 3
boisy
parents:
diff changeset
204 it's stable enough to release to the general public.
f506d1905781 Added Level 3
boisy
parents:
diff changeset
205
f506d1905781 Added Level 3
boisy
parents:
diff changeset
206 Have fun!
f506d1905781 Added Level 3
boisy
parents:
diff changeset
207
f506d1905781 Added Level 3
boisy
parents:
diff changeset
208 Alan DeKok.