Mercurial > hg > Members > kono > os9 > sbc09
annotate os9/level2/sysgo.asm @ 53:fe88cea67ef0
clock interrupt
get time
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 22 Jul 2018 17:55:06 +0900 |
parents | 51b437557f42 |
children |
rev | line source |
---|---|
37 | 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 * | |
52
51b437557f42
boot without disk image
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
37
diff
changeset
|
72 fcc "/V0" |
37 | 73 * IFNE DD |
74 * fcc "/DD" | |
75 * ELSE | |
76 * fcc "/H0" | |
77 * ENDC | |
78 fcb C$CR | |
79 HDDev equ * | |
52
51b437557f42
boot without disk image
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
37
diff
changeset
|
80 fcc "/V0" |
51b437557f42
boot without disk image
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
37
diff
changeset
|
81 fcb C$CR |
37 | 82 * IFNE DD |
83 * fcc "/DD/" | |
84 * ELSE | |
85 * fcc "/H0/" | |
86 * ENDC | |
52
51b437557f42
boot without disk image
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
37
diff
changeset
|
87 ExecDir fcc "/V0/cmds" |
37 | 88 fcb C$CR |
89 ENDC | |
90 | |
91 Shell fcc "Shell" | |
92 fcb C$CR | |
93 AutoEx fcc "AutoEx" | |
94 fcb C$CR | |
95 AutoExPr fcc "" | |
96 fcb C$CR | |
97 AutoExPrL equ *-AutoExPr | |
98 | |
99 IFEQ ROM | |
100 Startup fcc "startup -p" | |
101 fcb C$CR | |
102 StartupL equ *-Startup | |
103 ENDC | |
104 | |
105 ShellPrm equ * | |
106 IFGT Level-1 | |
107 fcc "i=/1" | |
108 ENDC | |
109 CRtn fcb C$CR | |
110 ShellPL equ *-ShellPrm | |
111 | |
112 mdirprm fcc "-e" | |
113 fcb C$CR | |
114 | |
115 * Default time packet | |
116 DefTime | |
53 | 117 fcb 0 |
118 fcb 0 | |
119 fcb 0 | |
120 fcb 0 | |
121 fcb 0 | |
122 fcb 0 | |
123 fcb 0 | |
124 fcb 0 | |
37 | 125 * dtb |
126 | |
127 IFEQ atari+corsham | |
128 IFEQ Level-1 | |
129 * BASIC reset code (CoCo port only) | |
130 * BasicRst fcb $55 | |
131 * neg <$0074 | |
132 * nop | |
133 * clr >PIA0Base+3 | |
134 * nop | |
135 * nop | |
136 * sta >$FFDF turn off ROM mode | |
137 * jmp >Bt.Start+2 jump to boot | |
138 * BasicRL equ *-BasicRst | |
139 ENDC | |
140 ENDC | |
141 | |
142 Init fcs /Init/ | |
143 | |
144 * Entry: X = pointer to start of nul terminated string | |
145 * Exit: D = length of string | |
146 strlen pshs x | |
147 ldd #-1 | |
148 go@ addd #$0001 | |
149 tst ,x+ | |
150 bne go@ | |
151 puls x,pc | |
152 | |
153 * Display carriage-return/line-feed. | |
154 WriteCR pshs y | |
155 leax CrRtn,pcr | |
156 ldy #$0001 | |
157 os9 I$WritLn | |
158 puls y,pc | |
159 | |
160 ********************************************************** | |
161 * SysGo Entry Point | |
162 ********************************************************** | |
163 start leax >IcptRtn,pcr | |
164 os9 F$Icpt | |
165 * Set priority of this process | |
166 os9 F$ID | |
167 ldb #DefPrior | |
168 os9 F$SPrior | |
169 | |
170 * Write OS name and Machine name strings | |
171 leax Init,pcr | |
172 clra | |
173 pshs u | |
174 os9 F$Link | |
175 bcs SignOn | |
176 stx <InitAddr | |
177 ldd OSName,u point to OS name in INIT module | |
178 leax d,u point to install name in INIT module | |
179 bsr strlen | |
180 tfr d,y | |
181 lda #$01 | |
182 os9 I$Write | |
183 bsr WriteCR | |
184 ldd InstallName,u | |
185 leax d,u point to install name in INIT module | |
186 bsr strlen | |
187 tfr d,y | |
188 lda #$01 | |
189 os9 I$Write | |
190 bsr WriteCR | |
191 | |
192 * Show rest of banner | |
193 SignOn | |
194 puls u | |
195 leax >Banner,pcr | |
196 ldy #BannLen | |
197 lda #$01 standard output | |
198 os9 I$Write write out banner | |
199 | |
200 * Set default time | |
53 | 201 leax >DefTime,pcr |
202 os9 F$STime set time to default | |
37 | 203 |
204 IFEQ ROM | |
205 * Change EXEC and DATA dirs | |
206 leax >ExecDir,pcr | |
207 lda #EXEC. | |
208 os9 I$ChgDir change exec. dir | |
209 leax >DefDev,pcr | |
210 * Made READ. so that no write occurs at boot (Boisy on Feb 5, 2012) | |
211 lda #READ. | |
212 os9 I$ChgDir change data dir. | |
213 bcs L0125 | |
53 | 214 * leax >HDDev,pcr |
215 * lda #EXEC. | |
216 * os9 I$ChgDir change exec. dir to HD | |
37 | 217 ENDC |
218 | |
219 L0125 equ * | |
220 pshs u,y | |
221 IFEQ atari+corsham | |
222 IFEQ Level-1 | |
223 * Setup BASIC code (CoCo port only) | |
224 * leax >BasicRst,pcr | |
225 * ldu #D.CBStrt | |
226 * ldb #BasicRL | |
227 *CopyLoop lda ,x+ | |
228 * sta ,u+ | |
229 * decb | |
230 * bne CopyLoop | |
231 ELSE | |
232 os9 F$ID get process ID | |
233 lbcs L01A9 fail | |
234 leax ,u | |
235 os9 F$GPrDsc get process descriptor copy | |
236 lbcs L01A9 fail | |
237 leay ,u | |
238 ldx #$0000 | |
239 ldb #$01 | |
240 os9 F$MapBlk | |
241 bcs L01A9 | |
242 | |
243 * lda #$55 set flag for Color BASIC | |
244 * sta <D.CBStrt,u | |
245 * Copy our default I/O ptrs to the system process | |
246 ldd <D.SysPrc,u | |
247 leau d,u | |
248 leau <P$DIO,u | |
249 leay <P$DIO,y | |
250 ldb #DefIOSiz-1 | |
251 L0151 lda b,y | |
252 sta b,u | |
253 decb | |
254 bpl L0151 | |
255 ENDC | |
256 ENDC | |
257 * | |
258 * IFEQ ROM | |
259 * Fork shell startup here | |
260 * IFEQ atari+corsham | |
261 * Added 12/14/03: If SHIFT is held down, startup is not run (CoCo only) | |
262 * lda #$01 standard output | |
263 * ldb #SS.KySns | |
264 * os9 I$GetStt | |
265 * bcs DoStartup | |
266 * bita #SHIFTBIT SHIFT key down? | |
267 * bne L0186 Yes, don't to startup or autoex | |
268 * ENDC | |
269 | |
270 *DoStartup leax >Shell,pcr | |
271 * leau >Startup,pcr | |
272 * ldd #256 | |
273 * ldy #StartupL | |
274 * os9 F$Fork | |
275 * bcs DoAuto Startup failed.. | |
276 * os9 F$Wait | |
277 * ENDC | |
278 | |
279 * Fork AutoEx here | |
280 *DoAuto leax >AutoEx,pcr | |
281 * leau >CRtn,pcr | |
282 * ldd #$0100 | |
283 * ldy #$0001 | |
284 * os9 F$Fork | |
285 * bcs L0186 AutoEx failed.. | |
286 * os9 F$Wait | |
287 | |
288 IFEQ Level-1 | |
289 leax >MDIR,pcr | |
290 leau >mdirprm,pcr | |
291 ldd #$0100 | |
292 ldy #$0003 | |
293 os9 F$Fork | |
294 bcs L0186 AutoEx failed.. | |
295 os9 F$Wait | |
296 bra L0186 | |
297 MDIR fcs "mdir" | |
298 fcb $0d | |
299 ENDC | |
300 L0186 equ * | |
301 puls u,y | |
302 FrkShell leax >ShellPrm,pcr | |
303 leay ,u | |
304 ldb #ShellPL | |
305 L0190 lda ,x+ | |
306 sta ,y+ | |
307 decb | |
308 bne L0190 | |
309 * Fork final shell here | |
310 leax >Shell,pcr | |
311 lda #$01 D = 256 (B already 0 from above) | |
312 ldy #ShellPL | |
313 IFGT Level-1 | |
314 os9 F$Chain Level 2/3. Should not return.. | |
315 ldb #$06 it did! Fatal. Load error code | |
316 bra Crash | |
317 | |
318 L01A9 ldb #$04 error code | |
319 Crash clr >DPort+$08 turn off disk motor | |
320 jmp <D.Crash fatal error | |
321 ELSE | |
322 os9 F$Fork Level 1. | |
323 bcs DeadEnd Fatal. | |
324 os9 F$Wait | |
325 bcc FrkShell OK, go start shell. | |
326 DeadEnd bra DeadEnd | |
327 ENDC | |
328 | |
329 IcptRtn rti | |
330 | |
331 emod | |
332 eom equ * | |
333 end |