Mercurial > hg > Members > kono > os9 > sbc09
comparison os9/level1/sysgo.asm @ 35:01519215ec70
add watch point
0xfe00 fixed ram area in MMU
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 15 Jul 2018 20:29:55 +0900 |
parents | |
children | cc8c2c2464fe |
comparison
equal
deleted
inserted
replaced
34:2032755628dc | 35:01519215ec70 |
---|---|
1 ******************************************************************** | |
2 * SysGo - Kickstart program module | |
3 * | |
4 * $Id$ | |
5 * | |
6 * Edt/Rev YYYY/MM/DD Modified by | |
7 * Comment | |
8 * ------------------------------------------------------------------ | |
9 * 5 1998/10/12 Boisy G. Pitre | |
10 * Taken from OS-9 L2 Tandy distribution and modified banner for V3. | |
11 * | |
12 * 5r2 2003/01/08 Boisy G. Pitre | |
13 * Fixed fork behavior so that if 'shell startup' fails, system doesn't | |
14 * jmp to Crash, but tries AutoEx instead. Also changed /DD back to /H0 | |
15 * for certain boot floppy cases. | |
16 * | |
17 * 2003/09/04 Boisy G. Pitre | |
18 * Back-ported to OS-9 Level One. | |
19 * | |
20 * 5r3 2003/12/14 Boisy G. Pitre | |
21 * Added SHIFT key check to prevent startup/autoex from starting if | |
22 * held down. Gene Heskett, this Bud's for you. | |
23 | |
24 nam SysGo | |
25 ttl Kickstart program module | |
26 | |
27 IFP1 | |
28 use defsfile | |
29 ENDC | |
30 | |
31 tylg set Prgrm+Objct | |
32 atrv set ReEnt+rev | |
33 rev set $03 | |
34 edition set $05 | |
35 | |
36 mod eom,name,tylg,atrv,start,size | |
37 | |
38 | |
39 org 0 | |
40 InitAddr rmb 2 | |
41 rmb 250 | |
42 size equ . | |
43 | |
44 name fcs /SysGo/ | |
45 fcb edition | |
46 | |
47 * Default process priority | |
48 DefPrior set 128 | |
49 | |
50 Banner equ * | |
51 fcc /(C) 2014 The NitrOS-9 Project/ | |
52 CrRtn fcb C$CR,C$LF | |
53 | |
54 IFEQ ROM | |
55 IFNE NOS9DBG | |
56 fcc "** DEVELOPMENT BUILD **" | |
57 fcb C$CR,C$LF | |
58 fcc "** NOT FOR DISTRIBUTION! **" | |
59 fcb C$CR,C$LF | |
60 ENDC | |
61 * dts | |
62 fcb C$CR,C$LF | |
63 fcc !http://www.nitros9.org! | |
64 fcb C$CR,C$LF | |
65 ENDC | |
66 | |
67 fcb C$LF | |
68 BannLen equ *-Banner | |
69 | |
70 IFEQ ROM | |
71 DefDev equ * | |
72 fcc "/D0" | |
73 * IFNE DD | |
74 * fcc "/DD" | |
75 * ELSE | |
76 * fcc "/H0" | |
77 * ENDC | |
78 fcb C$CR | |
79 HDDev equ * | |
80 fcc "/DD" | |
81 * IFNE DD | |
82 * fcc "/DD/" | |
83 * ELSE | |
84 * fcc "/H0/" | |
85 * ENDC | |
86 ExecDir fcc "/D0/CMDS" | |
87 fcb C$CR | |
88 ENDC | |
89 | |
90 Shell fcc "Shell" | |
91 fcb C$CR | |
92 AutoEx fcc "AutoEx" | |
93 fcb C$CR | |
94 AutoExPr fcc "" | |
95 fcb C$CR | |
96 AutoExPrL equ *-AutoExPr | |
97 | |
98 IFEQ ROM | |
99 Startup fcc "startup -p" | |
100 fcb C$CR | |
101 StartupL equ *-Startup | |
102 ENDC | |
103 | |
104 ShellPrm equ * | |
105 IFGT Level-1 | |
106 fcc "i=/1" | |
107 ENDC | |
108 CRtn fcb C$CR | |
109 ShellPL equ *-ShellPrm | |
110 | |
111 mdirprm fcc "-e" | |
112 fcb C$CR | |
113 | |
114 * Default time packet | |
115 DefTime | |
116 * dtb | |
117 | |
118 IFEQ atari+corsham | |
119 IFEQ Level-1 | |
120 * BASIC reset code (CoCo port only) | |
121 * BasicRst fcb $55 | |
122 * neg <$0074 | |
123 * nop | |
124 * clr >PIA0Base+3 | |
125 * nop | |
126 * nop | |
127 * sta >$FFDF turn off ROM mode | |
128 * jmp >Bt.Start+2 jump to boot | |
129 * BasicRL equ *-BasicRst | |
130 ENDC | |
131 ENDC | |
132 | |
133 Init fcs /Init/ | |
134 | |
135 * Entry: X = pointer to start of nul terminated string | |
136 * Exit: D = length of string | |
137 strlen pshs x | |
138 ldd #-1 | |
139 go@ addd #$0001 | |
140 tst ,x+ | |
141 bne go@ | |
142 puls x,pc | |
143 | |
144 * Display carriage-return/line-feed. | |
145 WriteCR pshs y | |
146 leax CrRtn,pcr | |
147 ldy #$0001 | |
148 os9 I$WritLn | |
149 puls y,pc | |
150 | |
151 ********************************************************** | |
152 * SysGo Entry Point | |
153 ********************************************************** | |
154 start leax >IcptRtn,pcr | |
155 os9 F$Icpt | |
156 * Set priority of this process | |
157 os9 F$ID | |
158 ldb #DefPrior | |
159 os9 F$SPrior | |
160 | |
161 * Write OS name and Machine name strings | |
162 leax Init,pcr | |
163 clra | |
164 pshs u | |
165 os9 F$Link | |
166 bcs SignOn | |
167 stx <InitAddr | |
168 ldd OSName,u point to OS name in INIT module | |
169 leax d,u point to install name in INIT module | |
170 bsr strlen | |
171 tfr d,y | |
172 lda #$01 | |
173 os9 I$Write | |
174 bsr WriteCR | |
175 ldd InstallName,u | |
176 leax d,u point to install name in INIT module | |
177 bsr strlen | |
178 tfr d,y | |
179 lda #$01 | |
180 os9 I$Write | |
181 bsr WriteCR | |
182 | |
183 * Show rest of banner | |
184 SignOn | |
185 puls u | |
186 leax >Banner,pcr | |
187 ldy #BannLen | |
188 lda #$01 standard output | |
189 os9 I$Write write out banner | |
190 | |
191 * Set default time | |
192 * leax >DefTime,pcr | |
193 * os9 F$STime set time to default | |
194 | |
195 IFEQ ROM | |
196 * Change EXEC and DATA dirs | |
197 leax >ExecDir,pcr | |
198 lda #EXEC. | |
199 os9 I$ChgDir change exec. dir | |
200 leax >DefDev,pcr | |
201 * Made READ. so that no write occurs at boot (Boisy on Feb 5, 2012) | |
202 lda #READ. | |
203 os9 I$ChgDir change data dir. | |
204 bcs L0125 | |
205 leax >HDDev,pcr | |
206 lda #EXEC. | |
207 os9 I$ChgDir change exec. dir to HD | |
208 ENDC | |
209 | |
210 L0125 equ * | |
211 pshs u,y | |
212 IFEQ atari+corsham | |
213 IFEQ Level-1 | |
214 * Setup BASIC code (CoCo port only) | |
215 * leax >BasicRst,pcr | |
216 * ldu #D.CBStrt | |
217 * ldb #BasicRL | |
218 *CopyLoop lda ,x+ | |
219 * sta ,u+ | |
220 * decb | |
221 * bne CopyLoop | |
222 ELSE | |
223 os9 F$ID get process ID | |
224 lbcs L01A9 fail | |
225 leax ,u | |
226 os9 F$GPrDsc get process descriptor copy | |
227 lbcs L01A9 fail | |
228 leay ,u | |
229 ldx #$0000 | |
230 ldb #$01 | |
231 os9 F$MapBlk | |
232 bcs L01A9 | |
233 | |
234 * lda #$55 set flag for Color BASIC | |
235 * sta <D.CBStrt,u | |
236 * Copy our default I/O ptrs to the system process | |
237 ldd <D.SysPrc,u | |
238 leau d,u | |
239 leau <P$DIO,u | |
240 leay <P$DIO,y | |
241 ldb #DefIOSiz-1 | |
242 L0151 lda b,y | |
243 sta b,u | |
244 decb | |
245 bpl L0151 | |
246 ENDC | |
247 ENDC | |
248 * | |
249 * IFEQ ROM | |
250 * Fork shell startup here | |
251 * IFEQ atari+corsham | |
252 * Added 12/14/03: If SHIFT is held down, startup is not run (CoCo only) | |
253 * lda #$01 standard output | |
254 * ldb #SS.KySns | |
255 * os9 I$GetStt | |
256 * bcs DoStartup | |
257 * bita #SHIFTBIT SHIFT key down? | |
258 * bne L0186 Yes, don't to startup or autoex | |
259 * ENDC | |
260 | |
261 *DoStartup leax >Shell,pcr | |
262 * leau >Startup,pcr | |
263 * ldd #256 | |
264 * ldy #StartupL | |
265 * os9 F$Fork | |
266 * bcs DoAuto Startup failed.. | |
267 * os9 F$Wait | |
268 * ENDC | |
269 | |
270 * Fork AutoEx here | |
271 *DoAuto leax >AutoEx,pcr | |
272 * leau >CRtn,pcr | |
273 * ldd #$0100 | |
274 * ldy #$0001 | |
275 * os9 F$Fork | |
276 * bcs L0186 AutoEx failed.. | |
277 * os9 F$Wait | |
278 | |
279 leax >MDIR,pcr | |
280 leau >mdirprm,pcr | |
281 ldd #$0100 | |
282 ldy #$0003 | |
283 os9 F$Fork | |
284 bcs L0186 AutoEx failed.. | |
285 os9 F$Wait | |
286 bra L0186 | |
287 MDIR fcs "mdir" | |
288 fcb $0d | |
289 | |
290 L0186 equ * | |
291 puls u,y | |
292 FrkShell leax >ShellPrm,pcr | |
293 leay ,u | |
294 ldb #ShellPL | |
295 L0190 lda ,x+ | |
296 sta ,y+ | |
297 decb | |
298 bne L0190 | |
299 * Fork final shell here | |
300 leax >Shell,pcr | |
301 lda #$01 D = 256 (B already 0 from above) | |
302 ldy #ShellPL | |
303 IFGT Level-1 | |
304 os9 F$Chain Level 2/3. Should not return.. | |
305 ldb #$06 it did! Fatal. Load error code | |
306 bra Crash | |
307 | |
308 L01A9 ldb #$04 error code | |
309 Crash clr >DPort+$08 turn off disk motor | |
310 jmp <D.Crash fatal error | |
311 ELSE | |
312 os9 F$Fork Level 1. | |
313 bcs DeadEnd Fatal. | |
314 os9 F$Wait | |
315 bcc FrkShell OK, go start shell. | |
316 DeadEnd bra DeadEnd | |
317 ENDC | |
318 | |
319 IcptRtn rti | |
320 | |
321 emod | |
322 eom equ * | |
323 end |