Mercurial > hg > Members > kono > nitros9-code
annotate level1/modules/sysgo.asm @ 2958:77500452de1c
bootman: Rename assembler files to .as
author | Tormod Volden <debian.tormod@gmail.com> |
---|---|
date | Sun, 09 Feb 2014 22:53:29 +0100 |
parents | 41313184bd78 |
children | 5944d79e3fe5 |
rev | line source |
---|---|
0 | 1 ******************************************************************** |
1315 | 2 * SysGo - Kickstart program module |
0 | 3 * |
4 * $Id$ | |
5 * | |
1316 | 6 * Edt/Rev YYYY/MM/DD Modified by |
7 * Comment | |
0 | 8 * ------------------------------------------------------------------ |
1316 | 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. | |
1462
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
19 * |
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
20 * 5r3 2003/12/14 Boisy G. Pitre |
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
21 * Added SHIFT key check to prevent startup/autoex from starting if |
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
22 * held down. Gene Heskett, this Bud's for you. |
0 | 23 |
24 nam SysGo | |
1315 | 25 ttl Kickstart program module |
0 | 26 |
588 | 27 IFP1 |
0 | 28 use defsfile |
588 | 29 ENDC |
0 | 30 |
1315 | 31 tylg set Prgrm+Objct |
0 | 32 atrv set ReEnt+rev |
1462
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
33 rev set $03 |
1315 | 34 edition set $05 |
0 | 35 |
36 mod eom,name,tylg,atrv,start,size | |
37 | |
2059 | 38 |
39 org 0 | |
40 InitAddr rmb 2 | |
41 rmb 250 | |
0 | 42 size equ . |
43 | |
44 name fcs /SysGo/ | |
1315 | 45 fcb edition |
46 | |
47 * Default process priority | |
48 DefPrior set 128 | |
0 | 49 |
1315 | 50 Banner equ * |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
51 fcc /(C) 2012 The NitrOS-9 Project/ |
2059 | 52 CrRtn fcb C$CR,C$LF |
2609
9dd4f422aac7
Added NitrOS-9 ROM Kit from Cloud-9
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2198
diff
changeset
|
53 IFEQ ROM |
1803
6b0d1027e4e0
Removed NITROS9VERSION, NITROS9MAJOR, NITROS9MINOR environment vars from
boisy
parents:
1801
diff
changeset
|
54 IFNE NOS9DBG |
1651 | 55 fcc "** DEVELOPMENT BUILD **" |
56 fcb C$CR,C$LF | |
57 fcc "** NOT FOR DISTRIBUTION! **" | |
1615 | 58 fcb C$CR,C$LF |
59 ENDC | |
1787 | 60 dts |
591 | 61 fcb C$CR,C$LF |
1419 | 62 fcc !http://www.nitros9.org! |
591 | 63 fcb C$CR,C$LF |
588 | 64 ENDC |
0 | 65 fcb C$LF |
1315 | 66 BannLen equ *-Banner |
0 | 67 |
1228 | 68 IFEQ ROM |
1315 | 69 DefDev equ * |
1228 | 70 IFNE DD |
71 fcc "/DD" | |
72 ELSE | |
73 fcc "/H0" | |
74 ENDC | |
0 | 75 fcb C$CR |
1315 | 76 HDDev equ * |
1228 | 77 IFNE DD |
78 fcc "/DD/" | |
79 ELSE | |
80 fcc "/H0/" | |
81 ENDC | |
1315 | 82 ExecDir fcc "CMDS" |
0 | 83 fcb C$CR |
588 | 84 ENDC |
0 | 85 |
86 Shell fcc "Shell" | |
1315 | 87 fcb C$CR |
274 | 88 AutoEx fcc "AutoEx" |
0 | 89 fcb C$CR |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
90 AutoExPr fcc "" |
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
91 fcb C$CR |
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
92 AutoExPrL equ *-AutoExPr |
0 | 93 |
1228 | 94 IFEQ ROM |
1316 | 95 Startup fcc "startup -p" |
0 | 96 fcb C$CR |
1316 | 97 StartupL equ *-Startup |
588 | 98 ENDC |
0 | 99 |
1315 | 100 ShellPrm equ * |
101 IFGT Level-1 | |
102 fcc "i=/1" | |
103 ENDC | |
104 CRtn fcb C$CR | |
105 ShellPL equ *-ShellPrm | |
106 | |
0 | 107 * Default time packet |
1642 | 108 DefTime dtb |
0 | 109 |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
110 IFEQ atari |
1315 | 111 IFEQ Level-1 |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
112 * BASIC reset code (CoCo port only) |
0 | 113 BasicRst fcb $55 |
252 | 114 neg <$0074 |
76 | 115 nop |
1300 | 116 clr >PIA0Base+3 |
1315 | 117 nop |
76 | 118 nop |
1315 | 119 sta >$FFDF turn off ROM mode |
120 jmp >Bt.Start+2 jump to boot | |
252 | 121 BasicRL equ *-BasicRst |
1315 | 122 ENDC |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
123 ENDC |
0 | 124 |
2059 | 125 Init fcs /Init/ |
1315 | 126 |
2061 | 127 * Entry: X = pointer to start of nul terminated string |
128 * Exit: D = length of string | |
129 strlen pshs x | |
130 ldd #-1 | |
131 go@ addd #$0001 | |
132 tst ,x+ | |
133 bne go@ | |
134 puls x,pc | |
135 | |
136 WriteCR pshs y | |
137 leax CrRtn,pcr | |
138 ldy #$0001 | |
139 os9 I$WritLn | |
140 puls y,pc | |
141 | |
1315 | 142 * SysGo Entry Point |
0 | 143 start leax >IcptRtn,pcr |
144 os9 F$Icpt | |
1315 | 145 * Set priority of this process |
146 os9 F$ID | |
147 ldb #DefPrior | |
148 os9 F$SPrior | |
2059 | 149 |
150 * Write OS name and Machine name strings | |
151 leax Init,pcr | |
152 clra | |
2060 | 153 pshs u |
2059 | 154 os9 F$Link |
155 bcs SignOn | |
156 stx <InitAddr | |
2061 | 157 ldd OSName,u point to OS name in INIT module |
2063 | 158 leax d,u point to install name in INIT module |
2061 | 159 bsr strlen |
160 tfr d,y | |
2059 | 161 lda #$01 |
2061 | 162 os9 I$Write |
163 bsr WriteCR | |
164 ldd InstallName,u | |
165 leax d,u point to install name in INIT module | |
166 bsr strlen | |
167 tfr d,y | |
2059 | 168 lda #$01 |
2061 | 169 os9 I$Write |
170 bsr WriteCR | |
2060 | 171 |
2059 | 172 * Show rest of banner |
173 SignOn | |
2060 | 174 puls u |
1315 | 175 leax >Banner,pcr |
176 ldy #BannLen | |
177 lda #$01 standard output | |
178 os9 I$Write write out banner | |
2059 | 179 |
1315 | 180 * Set default time |
181 leax >DefTime,pcr | |
182 os9 F$STime set time to default | |
183 IFEQ ROM | |
184 * Change EXEC and DATA dirs | |
185 leax >ExecDir,pcr | |
186 lda #EXEC. | |
187 os9 I$ChgDir change exec. dir | |
188 leax >DefDev,pcr | |
2614
d9e5c4629696
sysgo no longer I$ChgDir's with write mode
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2609
diff
changeset
|
189 * Made READ. so that no write occurs at boot (Boisy on Feb 5, 2012) |
d9e5c4629696
sysgo no longer I$ChgDir's with write mode
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2609
diff
changeset
|
190 * lda #READ.+WRITE. |
d9e5c4629696
sysgo no longer I$ChgDir's with write mode
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2609
diff
changeset
|
191 lda #READ. |
1315 | 192 os9 I$ChgDir change data dir. |
193 bcs L0125 | |
194 leax >HDDev,pcr | |
195 lda #EXEC. | |
196 os9 I$ChgDir change exec. dir to HD | |
197 ENDC | |
198 | |
199 L0125 equ * | |
1316 | 200 pshs u,y |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
201 IFEQ atari |
1315 | 202 IFEQ Level-1 |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
203 * Setup BASIC code (CoCo port only) |
0 | 204 leax >BasicRst,pcr |
252 | 205 ldu #D.CBStrt |
206 ldb #BasicRL | |
1315 | 207 CopyLoop lda ,x+ |
0 | 208 sta ,u+ |
209 decb | |
210 bne CopyLoop | |
1315 | 211 ELSE |
212 os9 F$ID | |
1467 | 213 lbcs L01A9 |
1315 | 214 leax ,u |
215 os9 F$GPrDsc | |
1467 | 216 lbcs L01A9 |
1315 | 217 leay ,u |
218 ldx #$0000 | |
219 ldb #$01 | |
220 os9 F$MapBlk | |
221 bcs L01A9 | |
0 | 222 |
1315 | 223 lda #$55 set flag for Color BASIC |
224 sta <D.CBStrt,u | |
225 * Copy our default I/O ptrs to the system process | |
226 ldd <D.SysPrc,u | |
227 leau d,u | |
228 leau <P$DIO,u | |
229 leay <P$DIO,y | |
230 ldb #DefIOSiz-1 | |
231 L0151 lda b,y | |
232 sta b,u | |
233 decb | |
234 bpl L0151 | |
235 ENDC | |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
236 ENDC |
274 | 237 |
1228 | 238 IFEQ ROM |
1315 | 239 * Fork shell startup here |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
240 IFEQ atari |
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
241 * Added 12/14/03: If SHIFT is held down, startup is not run (CoCo only) |
1464 | 242 lda #$01 standard output |
1462
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
243 ldb #SS.KySns |
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
244 os9 I$GetStt |
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
245 bcs DoStartup |
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
246 bita #SHIFTBIT SHIFT key down? |
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
247 bne L0186 Yes, don't to startup or autoex |
2633
41313184bd78
Expanded makefile... aded TODO, merged sysgo.asm into level1/modules file
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2614
diff
changeset
|
248 ENDC |
1462
062d65d5c132
Added check for SHIFT key which, if down, bypasses startup and AutoEx
boisy
parents:
1449
diff
changeset
|
249 DoStartup leax >Shell,pcr |
0 | 250 leau >Startup,pcr |
252 | 251 ldd #256 |
1316 | 252 ldy #StartupL |
1315 | 253 os9 F$Fork |
254 bcs DoAuto | |
255 os9 F$Wait | |
256 ENDC | |
257 * Fork AutoEx here | |
258 DoAuto leax >AutoEx,pcr | |
259 leau >CRtn,pcr | |
260 ldd #$0100 | |
261 ldy #$0001 | |
0 | 262 os9 F$Fork |
1315 | 263 bcs L0186 |
0 | 264 os9 F$Wait |
1316 | 265 L0186 equ * |
266 puls u,y | |
267 FrkShell leax >ShellPrm,pcr | |
1315 | 268 leay ,u |
269 ldb #ShellPL | |
270 L0190 lda ,x+ | |
271 sta ,y+ | |
272 decb | |
273 bne L0190 | |
274 * Fork final shell here | |
275 leax >Shell,pcr | |
1316 | 276 lda #$01 D = 256 (B already 0 from above) |
1315 | 277 ldy #ShellPL |
1316 | 278 IFGT Level-1 |
1315 | 279 os9 F$Chain |
280 ldb #$06 | |
281 bra Crash | |
282 L01A9 ldb #$04 | |
283 Crash clr >DPort+$08 turn off disk motor | |
284 jmp <D.Crash | |
1316 | 285 ELSE |
286 os9 F$Fork | |
287 bcs DeadEnd | |
288 os9 F$Wait | |
289 bcc FrkShell | |
290 DeadEnd bra DeadEnd | |
588 | 291 ENDC |
0 | 292 |
293 IcptRtn rti | |
294 | |
295 emod | |
296 eom equ * | |
297 end |