annotate level1/modules/kernel.asm @ 1587:5f18094d961d

kernel modules renamed to krn, updated makefiles, clock2_tc3 now clock2_cloud9...
author boisy
date Mon, 24 May 2004 14:51:21 +0000
parents 32b27b6792b6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 ********************************************************************
1368
423ebd97af1f More changes
boisy
parents: 1298
diff changeset
2 * Kernel - NitrOS-9 Level 1 Kernel
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
3 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
4 * $Id$
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
5 *
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
6 * This is how the memory map looks after the kernel has initialized:
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
7 *
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
8 * $0000----> ==================================
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
9 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
10 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
11 * $0020-$0111 | System Globals (D.FMBM-D.XNMI) |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
12 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
13 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
14 * $0200---->|==================================|
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
15 * | Free Memory Bitmap |
1383
17bdb24b06fb Fixed comments
boisy
parents: 1368
diff changeset
16 * $0200-$021F | (1 bit = 256 byte page) |
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
17 * |----------------------------------|
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
18 * | System Dispatch Table |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
19 * $0222-$0291 | (Room for 56 addresses) |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
20 * |----------------------------------|
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
21 * $0292-$02FF | User Dispatch Table |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
22 * | (Room for 56 addresses) |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
23 * $0300---->|==================================|
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
24 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
25 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
26 * $0300-$03FF | Module Directory Entries |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
27 * | (Room for 64 entries) |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
28 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
29 * $0400---->|==================================|
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
30 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
31 * $0400-$04FF | System Stack |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
32 * | |
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
33 * $0500---->|==================================|
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
34 *
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
35 * Edt/Rev YYYY/MM/DD Modified by
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
36 * Comment
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
37 * ------------------------------------------------------------------
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
38 * 14 1985/??/??
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
39 * From Tandy OS-9 Level One VR 02.00.00
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
40 *
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
41 * 15 2002/07/21 Boisy G. Pitre
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
42 * Module validation consists only of module header parity check.
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
43 * CRC check is not done unless D.CRC is set to 1, which is NOT the
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
44 * default case. By default, D.CRC is set to 0, thus there is no
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
45 * CRC checking. Speeds up module loads quite a bit. The Init module
10957d54bf16 Made all modules rev 0
boisy
parents: 1197
diff changeset
46 * has a bit in a compatibility byte that can turn on/off CRC checking
1444
cf0fe1a6a5f1 Kernel fixed to not allow module scan in I/O space
boisy
parents: 1383
diff changeset
47 *
cf0fe1a6a5f1 Kernel fixed to not allow module scan in I/O space
boisy
parents: 1383
diff changeset
48 * 15r1 2003/12/09 Boisy G. Pitre
cf0fe1a6a5f1 Kernel fixed to not allow module scan in I/O space
boisy
parents: 1383
diff changeset
49 * Kernel no longer scans for modules in I/O space.
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50
1368
423ebd97af1f More changes
boisy
parents: 1298
diff changeset
51 nam Kernel
423ebd97af1f More changes
boisy
parents: 1298
diff changeset
52 ttl NitrOS-9 Level 1 Kernel
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
54 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55 use defsfile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56 use scfdefs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
58
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
59 tylg set Systm+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
60 atrv set ReEnt+rev
1444
cf0fe1a6a5f1 Kernel fixed to not allow module scan in I/O space
boisy
parents: 1383
diff changeset
61 rev set $01
300
e2ac8a38f22c Changed module edition
boisy
parents: 297
diff changeset
62 edition set 15
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
63
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
64 L0000 mod eom,name,tylg,atrv,OS9Cold,size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
65
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
66 size equ .
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
67
1368
423ebd97af1f More changes
boisy
parents: 1298
diff changeset
68 name fcs /Kernel/
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70
1383
17bdb24b06fb Fixed comments
boisy
parents: 1368
diff changeset
71 InitNam fcs /Init/
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
72
1383
17bdb24b06fb Fixed comments
boisy
parents: 1368
diff changeset
73 P2Nam fcs /KernelP2/
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
74
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
75 VectCode bra SWI3Jmp $0100
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
76 nop
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
77 bra SWI2Jmp $0103
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
78 nop
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
79 bra SWIJmp $0106
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
80 nop
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
81 bra NMIJmp $0109
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
82 nop
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
83 bra IRQJmp $010C
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
84 nop
1197
607fcc81c5ae Fixed incorrect RMB sizes of Level One D.X*** system globals
boisy
parents: 977
diff changeset
85 bra FIRQJmp $010F
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
86
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
87 SWI3Jmp jmp [>D.SWI3]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
88 SWI2Jmp jmp [>D.SWI2]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
89 SWIJmp jmp [>D.SWI]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
90 NMIJmp jmp [>D.NMI]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
91 IRQJmp jmp [>D.IRQ]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
92 FIRQJmp jmp [>D.FIRQ]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
93 VectCSz equ *-VectCode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
94
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
95
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
96 SysTbl fcb F$Link
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
97 fdb FLink-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
99 fcb F$Fork
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
100 fdb FFork-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
101
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
102 fcb F$Chain
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
103 fdb FChain-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
104
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
105 fcb F$Chain+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
106 fdb SFChain-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
107
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
108 fcb F$PrsNam
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
109 fdb FPrsNam-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
110
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
111 fcb F$CmpNam
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
112 fdb FCmpNam-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
113
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
114 fcb F$SchBit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
115 fdb FSchBit-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
116
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
117 fcb F$AllBit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
118 fdb FAllBit-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
119
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
120 fcb F$DelBit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
121 fdb FDelBit-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
122
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
123 fcb F$CRC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
124 fdb FCRC-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
125
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
126 fcb F$SRqMem+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
127 fdb FSRqMem-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
128
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
129 fcb F$SRtMem+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
130 fdb FSRtMem-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
131
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
132 fcb F$AProc+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
133 fdb FAProc-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
134
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
135 fcb F$NProc+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
136 fdb FNProc-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
137
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
138 fcb F$VModul+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
139 fdb FVModul-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
140
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
141 fcb F$SSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
142 fdb FSSvc-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
143
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
144 fcb $80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
145
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
146 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
147 * OS-9 Genesis!
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
148 OS9Cold equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
149 * clear out system globals from $0020-$0400
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
150 ldx #D.FMBM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
151 ldy #$400-D.FMBM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
152 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
153 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
154 L007F std ,x++
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
155 leay -2,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
156 bne L007F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
157 * set up system globals
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
158 inca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
159 inca D = $200
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
160 std <D.FMBM $200 = start of free memory bitmap
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
161 addb #$20
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
162 std <D.FMBM+2 $220 = end of free memory bitmap
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
163 addb #$02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
164 std <D.SysDis $222 = addr of sys dispatch tbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
165 addb #$70
296
398a1bbd04bd Had wrong math in a comment -- fixed
boisy
parents: 247
diff changeset
166 std <D.UsrDis $292 = addr of usr dispatch tbl
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
167 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
168 inca D = $300
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
169 std <D.ModDir $300 = mod dir start
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
170 stx <D.ModDir+2 X = $400 = mod dir end
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
171 leas >$0100,x S = $500 (system stack?)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
172
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
173 * Check for valid RAM starting at $400
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
174 ChkRAM leay ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
175 ldd ,y store org contents in D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
176 ldx #$00FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
177 stx ,y write pattern to ,Y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
178 cmpx ,y same as what we wrote?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
179 bne L00C2 nope, not RAM here!
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
180 ldx #$FF00 try different pattern
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
181 stx ,y write it to ,Y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
182 cmpx ,y same as what we wrote?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
183 bne L00C2 nope, not RAM here!
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
184 std ,y else restore org contents
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
185 leax >$0100,y check top of next 256 block
1298
bfb91dc51fb6 BTStart is now Bt.Start
boisy
parents: 1287
diff changeset
186 cmpx #Bt.Start stop short of boot track mem
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
187 bcs ChkRAM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
188 leay ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
189 * Here, Y = end of RAM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
190 L00C2 leax ,y X = end of RAM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
191 stx <D.MLIM save off memory limit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
192
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
193 * Copy vector code over to address $100
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
194 pshs y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
195 leax >VectCode,pcr
247
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
196 ldy #D.XSWI3
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
197 ldb #VectCSz
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
198 L00D2 lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
199 sta ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
200 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
201 bne L00D2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
202 puls y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
203 * validate modules at top of RAM (kernel, etc.)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
204 L00DB lbsr ValMod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
205 bcs L00E6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
206 ldd M$Size,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
207 leax d,x go past module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
208 bra L00EC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
209 L00E6 cmpb #E$KwnMod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
210 beq L00EE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
211 leax 1,x
1444
cf0fe1a6a5f1 Kernel fixed to not allow module scan in I/O space
boisy
parents: 1383
diff changeset
212 * Modification to stop scan into I/O space
cf0fe1a6a5f1 Kernel fixed to not allow module scan in I/O space
boisy
parents: 1383
diff changeset
213 L00EC cmpx #Bt.Start+Bt.Size
cf0fe1a6a5f1 Kernel fixed to not allow module scan in I/O space
boisy
parents: 1383
diff changeset
214 bcs L00DB
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
215
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
216 * copy vectors to system globals
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
217 L00EE leay >Vectors,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
218 leax >L0000,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
219 pshs x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
220 ldx #D.SWI3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
221 L00FB ldd ,y++
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
222 addd ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
223 std ,x++
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
224 cmpx #$0036
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
225 bls L00FB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
226 leas 2,s restore stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
227
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
228 * fill in more system globals
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
229 leax >URtoSs,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
230 stx <D.URtoSs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
231 leax >UsrIRQ,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
232 stx <D.UsrIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
233 leax >UsrSvc,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
234 stx <D.UsrSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
235 leax >SysIRQ,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
236 stx <D.SysIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
237 stx <D.SvcIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
238 leax >SysSvc,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
239 stx <D.SysSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
240 stx <D.SWI2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
241 leax >Poll,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
242 stx <D.Poll
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
243 leax >Clock,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
244 stx <D.Clock
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
245 stx <D.AltIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
246
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
247 * install system calls
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
248 leay >SysTbl,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
249 lbsr InstSSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
250
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
251 * link to init module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
252 lda #Systm+0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
253 leax >InitNam,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
254 os9 F$Link
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
255 lbcs OS9Cold
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
256 stu <D.Init
308
1d99e2771841 Renamed compatibility byte to feature byte in init
boisy
parents: 306
diff changeset
257 lda Feature1,u get feature byte 1
306
c863af5b4ea1 init.asm: extended (see os9defs(
boisy
parents: 300
diff changeset
258 bita #CRCOn CRC on?
c863af5b4ea1 init.asm: extended (see os9defs(
boisy
parents: 300
diff changeset
259 beq GetMem branch if not (already cleared earlier)
c863af5b4ea1 init.asm: extended (see os9defs(
boisy
parents: 300
diff changeset
260 inc <D.CRC else turn on CRC checking
c863af5b4ea1 init.asm: extended (see os9defs(
boisy
parents: 300
diff changeset
261 GetMem ldd MaxMem+1,u
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
262 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
263 cmpd <D.MLIM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
264 bcc L0158
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
265 std <D.MLIM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
266 L0158 ldx <D.FMBM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
267 ldb #$F8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
268 stb ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
269 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
270 ldb <D.MLIM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
271 negb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
272 tfr d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
273 negb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
274 lbsr L065A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
275
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
276 * jump into OS9p2 here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
277 leax >P2Nam,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
278 lda #Systm+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
279 os9 F$Link
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
280 lbcs OS9Cold
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
281 jmp ,y
165
473b9aec5828 Set labels on vectors
boisy
parents: 0
diff changeset
282 SWI3 pshs pc,x,b
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
283 ldb #P$SWI3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
284 bra L018C
165
473b9aec5828 Set labels on vectors
boisy
parents: 0
diff changeset
285 SWI2 pshs pc,x,b
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
286 ldb #P$SWI2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
287 bra L018C
247
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
288 DUMMY rti
165
473b9aec5828 Set labels on vectors
boisy
parents: 0
diff changeset
289 SVCIRQ jmp [>D.SvcIRQ]
473b9aec5828 Set labels on vectors
boisy
parents: 0
diff changeset
290 SWI pshs pc,x,b
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
291 ldb #P$SWI
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
292 L018C ldx >D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
293 ldx b,x get SWI entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
294 stx 3,s put in PC on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
295 puls pc,x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
296
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
297 UsrIRQ leay <L01B1,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
298 * transition from user to system state
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
299 URtoSs clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
300 tfr a,dp clear direct page
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
301 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
302 ldd <D.SysSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
303 std <D.SWI2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
304 ldd <D.SysIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
305 std <D.SvcIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
306 leau ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
307 stu P$SP,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
308 lda P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
309 ora #SysState
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
310 sta P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
311 jmp ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
312
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
313 L01B1 jsr [>D.Poll]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
314 bcc L01BD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
315 ldb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
316 orb #$10
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
317 stb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
318 L01BD lbra L0255
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
319
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
320 SysIRQ clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
321 tfr a,dp
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
322 jsr [>D.Poll]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
323 bcc L01CF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
324 ldb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
325 orb #$10
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
326 stb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
327 L01CF rti
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
328 Poll comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
329 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
330
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
331 Clock ldx <D.SProcQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
332 beq L01FD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
333 lda P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
334 bita #TimSleep
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
335 beq L01FD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
336 ldu P$SP,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
337 ldd P$SP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
338 subd #$0001
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
339 std P$SP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
340 bne L01FD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
341 L01E7 ldu P$Queue,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
342 bsr L021A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
343 leax ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
344 beq L01FB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
345 lda P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
346 bita #TimSleep
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
347 beq L01FB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
348 ldu P$SP,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
349 ldd P$SP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
350 beq L01E7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
351 L01FB stx <D.SProcQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
352 L01FD dec <D.Slice
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
353 bne ClockRTI
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
354 lda <D.TSlice
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
355 sta <D.Slice
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
356 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
357 beq ClockRTI
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
358 lda P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
359 ora #TimOut
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
360 sta P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
361 bpl L0212 branch if not system state
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
362 ClockRTI rti
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
363
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
364 L0212 leay >L0255,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
365 bra URtoSs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
366
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
367 * X = proc desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
368 FAProc ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
369 L021A pshs u,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
370 ldu #$003F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
371 bra L0228
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
372 L0221 ldb P$Age,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
373 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
374 beq L0228
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
375 stb P$Age,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
376 L0228 ldu P$Queue,u U = proc desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
377 bne L0221
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
378 ldu #$003F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
379 lda P$Prior,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
380 sta P$Age,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
381 orcc #IntMasks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
382 L0235 leay ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
383 ldu P$Queue,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
384 beq L023F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
385 cmpa P$Age,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
386 bls L0235
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
387 L023F stu P$Queue,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
388 stx P$Queue,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
389 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
390 puls pc,u,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
391
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
392 UsrSvc leay <L024E,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
393 orcc #IntMasks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
394 lbra URtoSs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
395
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
396 L024E andcc #^IntMasks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
397 ldy <D.UsrDis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
398 bsr L0278
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
399 L0255 ldx <D.Proc get current proc desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
400 beq FNProc branch to FNProc if none
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
401 orcc #IntMasks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
402 ldb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
403 andb #^SysState
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
404 stb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
405 bitb #TimOut
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
406 beq L02D1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
407 andb #^TimOut
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
408 stb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
409 bsr L021A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
410 bra FNProc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
411
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
412 * system call entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
413 SysSvc clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
414 tfr a,dp set direct page to 0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
415 leau ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
416 ldy <D.SysDis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
417 bsr L0278
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
418 rti
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
419
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
420 L0278 pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
421 ldx R$PC,u point X to PC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
422 ldb ,x+ get func code at X
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
423 stx R$PC,u restore updated PC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
424 lslb multiply by 2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
425 bcc L0288 branch if user call
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
426 rorb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
427 ldx -2,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
428 bra L0290
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
429 L0288 cmpb #$6E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
430 bcc L02A7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
431 ldx b,y X = addr of system call
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
432 beq L02A7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
433 L0290 jsr ,x jsr into system call
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
434 L0292 puls u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
435 tfr cc,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
436 bcc FixCC branch if no error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
437 stb R$B,u store error code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
438 FixCC ldb R$CC,u get caller's CC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
439 andb #^(Negative+Zero+TwosOvfl+Carry)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
440 stb R$CC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
441 anda #Negative+Zero+TwosOvfl+Carry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
442 ora R$CC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
443 sta R$CC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
444 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
445 L02A7 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
446 ldb #E$UnkSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
447 bra L0292
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
448
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
449 * no signal handler, exit with signal value as exit code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
450 L02AC ldb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
451 orb #SysState
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
452 stb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
453 ldb <P$Signal,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
454 andcc #^(IntMasks)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
455 os9 F$Exit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
456
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
457 FNProc clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
458 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
459 std <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
460 bra L02C2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
461 * execution goes here when there are no active processes
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
462 L02C0 cwai #^(IntMasks)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
463 L02C2 orcc #IntMasks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
464 ldx <D.AProcQ get next active process
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
465 beq L02C0 CWAI if none
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
466 ldd P$Queue,x get queue ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
467 std <D.AProcQ store in Active Q
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
468 stx <D.Proc store in current process
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
469 lds P$SP,x get process' stack ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
470 L02D1 ldb P$State,x get state
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
471 bmi L0308 branch if system state
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
472 bitb #Condem process condemned?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
473 bne L02AC branch if so...
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
474 ldb <P$Signal,x get signal no
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
475 beq L02FF branch if none
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
476 decb decrement
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
477 beq L02FC branch if wake up
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
478 ldu <P$SigVec,x get signal handler addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
479 beq L02AC branch if none
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
480 ldy <P$SigDat,x get data addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
481 ldd $06,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
482 pshs u,y,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
483 ldu $0A,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
484 lda <P$Signal,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
485 ldb $09,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
486 tfr d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
487 ldd $06,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
488 pshs u,y,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
489 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
490 L02FC stb <P$Signal,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
491 L02FF ldd <P$SWI2,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
492 std <D.SWI2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
493 ldd <D.UsrIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
494 std <D.SvcIRQ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
495 L0308 rti
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
496
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
497 FLink pshs u save caller regs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
498 ldd R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
499 ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
500 lbsr L0443
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
501 bcc FLinkOK
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
502 ldb #E$MNF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
503 bra L033D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
504 * U = module dir entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
505 FLinkOK ldy ,u get module ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
506 ldb M$Revs,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
507 bitb #ReEnt reentrant?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
508 bne L032A branch if so
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
509 tst $02,u link count zero?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
510 beq L032A yep, ok to link to nonreent
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
511 comb else module is busy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
512 ldb #E$ModBsy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
513 bra L033D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
514 L032A inc $02,u increment link count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
515 ldu ,s get caller regs from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
516 stx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
517 sty R$U,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
518 ldd M$Type,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
519 std R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
520 ldd M$IDSize,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
521 leax d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
522 stx R$Y,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
523 L033D puls pc,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
524
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
525 FVModul pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
526 ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
527 bsr ValMod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
528 puls y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
529 stu R$U,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
530 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
531 * X = address of module to validate
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
532 ValMod bsr ChkMHCRC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
533 bcs L039A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
534 lda M$Type,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
535 pshs x,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
536 ldd M$Name,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
537 leax d,x X = addr of name in mod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
538 puls a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
539 lbsr L0443
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
540 puls x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
541 bcs L039B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
542 ldb #E$KwnMod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
543 cmpx ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
544 beq L03A1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
545 lda M$Revs,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
546 anda #RevsMask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
547 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
548 ldy ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
549 lda M$Revs,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
550 anda #RevsMask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
551 cmpa ,s+ same revision as other mod?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
552 bcc L03A1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
553 pshs y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
554 ldb M$Size,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
555 bne L0395
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
556 ldx ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
557 cmpx <D.BTLO
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
558 bcc L0395
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
559 ldd $02,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
560 addd #$00FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
561 tfr a,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
562 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
563 tfr d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
564 ldb ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
565 ldx <D.FMBM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
566 os9 F$DelBit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
567 clr $02,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
568 L0395 puls y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
569 L0397 stx ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
570 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
571 L039A rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
572 L039B leay ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
573 bne L0397
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
574 ldb #E$DirFul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
575 L03A1 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
576 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
577
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
578 * check module header and CRC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
579 * X = address of potential module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
580 ChkMHCRC ldd ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
581 cmpd #M$ID12 sync bytes?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
582 bne L03B1 nope, not a module here
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
583 leay M$Parity,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
584 bsr ChkMHPar check header parity
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
585 bcc L03B5 branch if ok
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
586 L03B1 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
587 ldb #E$BMID
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
588 rts
297
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
589
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
590 L03B5
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
591 * Following 4 lines added to support no CRC checks - 2002/07/21
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
592 lda <D.CRC is CRC checking on?
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
593 bne DoCRCCk branch if so
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
594 clrb
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
595 rts
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
596
eda95fad0c31 Added check for D.CRC switch to prevent CRC checking (off by default)
boisy
parents: 296
diff changeset
597 DoCRCCk pshs x
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
598 ldy M$Size,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
599 bsr ChkMCRC checkm module CRC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
600 puls pc,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
601 * check module header parity
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
602 * Y = pointer to parity byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
603 ChkMHPar pshs y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
604 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
605 ChkM010 eora ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
606 cmpx 2,s compare to addr of M$Parity
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
607 bls ChkM010
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
608 cmpa #$FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
609 puls pc,y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
610 * X = address of potential module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
611 * Y = size of module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
612 ChkMCRC ldd #$FFFF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
613 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
614 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
615 leau 1,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
616 L03D4 lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
617 bsr CRCAlgo
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
618 leay -1,y dec Y (size of module)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
619 bne L03D4 continue
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
620 clr -1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
621 lda ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
622 cmpa #CRCCon1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
623 bne L03EC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
624 ldd 1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
625 cmpd #CRCCon23
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
626 beq L03EF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
627 L03EC comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
628 ldb #E$BMCRC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
629 L03EF puls pc,y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
630
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
631 * F$CRC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
632 FCRC ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
633 ldy R$Y,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
634 beq L0402
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
635 ldu R$U,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
636 L03FA lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
637 bsr CRCAlgo
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
638 leay -1,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
639 bne L03FA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
640 L0402 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
641 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
642
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
643 CRCAlgo eora ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
644 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
645 ldd $01,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
646 std ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
647 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
648 ldb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
649 lslb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
650 rola
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
651 eora 1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
652 std 1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
653 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
654 lda ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
655 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
656 rorb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
657 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
658 rorb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
659 eora 1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
660 eorb 2,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
661 std 1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
662 lda ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
663 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
664 eora ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
665 sta ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
666 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
667 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
668 eora ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
669 sta ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
670 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
671 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
672 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
673 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
674 eora ,s+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
675 bpl L0442
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
676 ldd #$8021
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
677 eora ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
678 sta ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
679 eorb 2,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
680 stb 2,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
681 L0442 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
682
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
683 L0443 ldu #$0000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
684 tfr a,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
685 anda #TypeMask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
686 andb #LangMask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
687 pshs u,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
688 bsr EatSpace
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
689 cmpa #PDELIM pathlist char?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
690 beq L049C branch if so
1452
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
691 * lbsr L074D parse name
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
692 lbsr ParseNam parse name
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
693 bcs L049D return if error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
694 ldu <D.ModDir
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
695 L045B pshs u,y,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
696 ldu ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
697 beq L048B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
698 ldd $04,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
699 leay d,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
700 ldb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
701 lbsr L07AB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
702 bcs L0493
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
703 lda $05,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
704 beq L0476
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
705 eora $06,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
706 anda #$F0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
707 bne L0493
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
708 L0476 lda $06,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
709 beq L0480
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
710 eora $06,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
711 anda #$0F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
712 bne L0493
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
713 L0480 puls u,x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
714 stu $06,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
715 bsr EatSpace
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
716 stx $02,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
717 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
718 bra L049D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
719 L048B ldd $0B,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
720 bne L0493
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
721 ldd $03,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
722 std $0B,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
723 L0493 puls u,y,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
724 leau $04,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
725 cmpu <D.ModDir+2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
726 bcs L045B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
727 L049C comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
728 L049D puls pc,u,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
729
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
730 EatSpace lda #C$SPAC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
731 EatSpc10 cmpa ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
732 beq EatSpc10
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
733 lda ,-x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
734 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
735
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
736 FFork ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
737 os9 F$All64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
738 bcs L0517
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
739 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
740 pshs x save calling proc desc on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
741 ldd P$User,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
742 std P$User,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
743 lda P$Prior,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
744 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
745 std P$Prior,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
746 ldb #SysState
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
747 stb P$State,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
748 sty <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
749 ldd <P$NIO,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
750 std <P$NIO,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
751 ldd <P$NIO+2,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
752 std <P$NIO+2,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
753 leax <P$DIO,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
754 leay <P$DIO,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
755 ldb #DefIOSiz
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
756 * copy I/O stuff from parent to child
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
757 L04D7 lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
758 sta ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
759 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
760 bne L04D7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
761 * X/Y = address of path table in respective proc desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
762 * Dup stdin/stdout/stderr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
763 ldb #$03
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
764 L04E0 lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
765 os9 I$Dup
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
766 bcc L04E8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
767 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
768 L04E8 sta ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
769 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
770 bne L04E0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
771 bsr L0553
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
772 bcs L050C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
773 puls y get parent proc desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
774 sty <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
775 lda P$ID,x get ID of new process
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
776 sta R$A,u store in caller's A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
777 ldb P$CID,y get child id of parent
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
778 sta P$CID,y store new proc in parent's CID
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
779 lda P$ID,y get ID of parent
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
780 std P$PID,x store in child proc desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
781 ldb P$State,x update state of child
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
782 andb #^SysState
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
783 stb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
784 os9 F$AProc insert child in active Q
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
785 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
786 L050C pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
787 os9 F$Exit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
788 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
789 puls x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
790 stx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
791 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
792 L0517 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
793 ldb #E$PrcFul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
794 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
795
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
796 FChain bsr L0543
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
797 bcs L0531
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
798 orcc #IntMasks
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
799 ldb $0D,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
800 andb #$7F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
801 stb $0D,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
802 L0527 os9 F$AProc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
803 os9 F$NProc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
804
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
805 SFChain bsr L0543
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
806 bcc L0527
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
807 L0531 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
808 stb <P$Signal,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
809 ldb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
810 orb #Condem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
811 stb P$State,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
812 ldb #$FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
813 stb P$Prior,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
814 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
815 puls pc,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
816 L0543 pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
817 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
818 ldu <P$PModul,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
819 os9 F$UnLink
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
820 ldu ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
821 bsr L0553
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
822 puls pc,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
823 L0553 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
824 pshs u,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
825 ldd <D.UsrSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
826 std <P$SWI,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
827 std <P$SWI2,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
828 std <P$SWI3,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
829 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
830 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
831 sta <P$Signal,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
832 std <P$SigVec,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
833 lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
834 ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
835 os9 F$Link
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
836 bcc L0578
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
837 os9 F$Load
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
838 bcs L05E7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
839 L0578 ldy <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
840 stu <P$PModul,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
841 cmpa #Prgrm+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
842 beq L058B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
843 cmpa #Systm+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
844 beq L058B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
845 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
846 ldb #E$NEMod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
847 bra L05E7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
848 L058B leay ,u Y = addr of module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
849 ldu 2,s get U off stack (caller regs)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
850 stx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
851 lda R$B,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
852 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
853 cmpd M$Mem,y compare passed mem to module's
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
854 bcc L059B branch if less than
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
855 ldd M$Mem,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
856 L059B addd #$0000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
857 bne L05A0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
858 L05A0 os9 F$Mem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
859 bcs L05E7
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
860 subd #R$Size subtract registers
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
861 subd R$Y,u subtract parameter area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
862 bcs L05E5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
863 ldx R$U,u get parameter area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
864 ldd R$Y,u get parameter size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
865 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
866 beq L05BE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
867 leax d,x point to end of param area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
868 L05B6 lda ,-x get byte, dec X
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
869 sta ,-y save byte in data area, dec X
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
870 cmpx R$U,u at top of param area?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
871 bhi L05B6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
872 * set up registers for return of F$Fork/F$Chain
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
873 L05BE ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
874 sty -$08,y put in X on caller stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
875 leay -R$Size,y back up register size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
876 sty P$SP,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
877 lda P$ADDR,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
878 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
879 std R$U,y lowest address
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
880 sta R$DP,y set direct page
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
881 adda P$PagCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
882 std R$Y,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
883 puls b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
884 std R$D,y size of param area
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
885 ldb #Entire
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
886 stb R$CC,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
887 ldu <P$PModul,x get addr of prim. mod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
888 ldd M$Exec,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
889 leau d,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
890 stu R$PC,y put in PC on caller reg
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
891 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
892 L05E5 ldb #E$IForkP
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
893 L05E7 puls pc,u,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
894
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
895 FSRqMem ldd R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
896 addd #$00FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
897 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
898 std R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
899 ldx <D.FMBM+2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
900 ldd #$01FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
901 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
902 bra L0604
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
903 L05FA dec $01,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
904 ldb $01,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
905 L05FE lsl ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
906 bcc L060A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
907 rol ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
908 L0604 leax -1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
909 cmpx <D.FMBM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
910 bcs L0620
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
911 L060A lda ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
912 anda ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
913 bne L05FA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
914 dec 1,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
915 subb 1,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
916 cmpb 1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
917 rora
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
918 addb 1,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
919 rola
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
920 bcs L05FE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
921 ldb 1,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
922 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
923 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
924 L0620 leas 2,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
925 bcs L0635
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
926 ldx <D.FMBM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
927 tfr d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
928 ldb 1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
929 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
930 exg d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
931 bsr L065A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
932 exg a,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
933 std 8,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
934 L0633 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
935 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
936 L0635 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
937 ldb #E$MemFul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
938 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
939
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
940 FSRtMem ldd R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
941 addd #$00FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
942 tfr a,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
943 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
944 tfr d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
945 ldd R$U,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
946 beq L0633
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
947 tstb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
948 beq L064E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
949 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
950 ldb #E$BPAddr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
951 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
952 L064E exg a,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
953 ldx <D.FMBM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
954 bra L06AD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
955
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
956 FAllBit ldd R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
957 leau R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
958 pulu y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
959 L065A pshs y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
960 bsr L0690
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
961 tsta
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
962 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
963 bmi L0671
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
964 lda ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
965 L0665 ora ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
966 leay -1,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
967 beq L0689
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
968 lsr ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
969 bcc L0665
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
970 sta ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
971 L0671 tfr y,d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
972 sta ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
973 lda #$FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
974 bra L067B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
975 L0679 sta ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
976 L067B subb #$08
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
977 bcc L0679
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
978 dec ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
979 bpl L0679
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
980 L0683 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
981 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
982 bne L0683
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
983 ora ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
984 L0689 sta ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
985 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
986 leas 1,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
987 puls pc,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
988 L0690 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
989 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
990 rorb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
991 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
992 rorb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
993 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
994 rorb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
995 leax d,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
996 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
997 lda #$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
998 andb #$07
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
999 beq L06A6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1000 L06A2 lsra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1001 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1002 bne L06A2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1003 L06A6 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1004
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1005 FDelBit ldd R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1006 leau R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1007 pulu y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1008 L06AD pshs y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1009 bsr L0690
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1010 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1011 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1012 bpl L06C4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1013 lda ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1014 L06B8 anda ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1015 leay -1,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1016 beq L06D8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1017 asr ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1018 bcs L06B8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1019 sta ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1020 L06C4 tfr y,d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1021 bra L06CA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1022 L06C8 clr ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1023 L06CA subd #$0008
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1024 bhi L06C8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1025 beq L06D8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1026 L06D1 lsla
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1027 incb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1028 bne L06D1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1029 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1030 anda ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1031 L06D8 sta ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1032 clr ,s+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1033 puls pc,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1034
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1035 FSchBit pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1036 ldd R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1037 ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1038 ldy R$Y,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1039 ldu R$U,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1040 bsr L06F3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1041 puls u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1042 std R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1043 sty R$Y,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1044 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1045 L06F3 pshs u,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1046 pshs y,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1047 clr 8,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1048 clr 9,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1049 tfr d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1050 bsr L0690
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1051 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1052 bra L0710
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1053 L0703 leay $01,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1054 sty $05,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1055 L0708 lsr ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1056 bcc L0714
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1057 ror ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1058 leax $01,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1059 L0710 cmpx $0B,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1060 bcc L0732
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1061 L0714 lda ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1062 anda ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1063 bne L0703
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1064 leay $01,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1065 tfr y,d
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1066 subd $05,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1067 cmpd $03,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1068 bcc L0739
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1069 cmpd $09,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1070 bls L0708
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1071 std $09,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1072 ldd $05,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1073 std $01,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1074 bra L0708
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1075 L0732 ldd $01,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1076 std $05,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1077 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1078 bra L073B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1079 L0739 std $09,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1080 L073B leas $05,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1081 puls pc,u,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1082
1452
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1083
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1084 use krnl/fprsnam.asm
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1085 *FPrsNam ldx R$X,u
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1086 * bsr L074D
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1087 * std R$D,u
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1088 * bcs L0749
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1089 * stx R$X,u
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1090 *L0749 sty R$Y,u
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1091 * rts
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1092 *L074D lda ,x
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1093 * cmpa #PDELIM pathlist char?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1094 * bne L0755 branch if not
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1095 * leax 1,x go past pathlist char
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1096 *L0755 leay ,x
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1097 * clrb
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1098 * lda ,y+
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1099 * anda #$7F
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1100 * bsr L0792
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1101 * bcs L0772
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1102 *L0760 incb
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1103 * lda -1,y
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1104 * bmi L076F hi bit set on this char, done
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1105 * lda ,y+
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1106 * anda #$7F
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1107 * bsr IllChar
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1108 * bcc L0760
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1109 * lda ,-y
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1110 *L076F andcc #^Carry
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1111 * rts
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1112 *L0772 cmpa #C$COMA comma?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1113 * bne L0778
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1114 *L0776 lda ,y+
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1115 *L0778 cmpa #C$SPAC space?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1116 * beq L0776
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1117 * lda ,-y
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1118 * comb
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1119 * ldb #E$BNam
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1120 * rts
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1121
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1122 * check for illegal characters in a pathlist
1452
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1123 *IllChar cmpa #C$PERD period?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1124 * beq L07C9 branch if so
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1125 * cmpa #'0 zero?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1126 * bcs L07A2 branch if less than
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1127 * cmpa #'9 number?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1128 * bls L07C9 branch if lower/same
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1129 * cmpa #'_ underscore?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1130 * beq L07C9 branch if so
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1131 *L0792 cmpa #'A A?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1132 * bcs L07A2 branch if less than
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1133 * cmpa #'Z Z?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1134 * bls L07C9 branch if less or equal
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1135 * cmpa #'a a?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1136 * bcs L07A2 branch if lower
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1137 * cmpa #'z z?
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1138 * bls L07C9 branch if less or equal
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1139 *L07A2 orcc #Carry
32b27b6792b6 fprsnam.asm has been back-ported from Level 2
boisy
parents: 1444
diff changeset
1140 * rts
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1141
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1142 FCmpNam ldb R$B,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1143 leau R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1144 pulu y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1145 L07AB pshs y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1146 L07AD lda ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1147 bmi L07BE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1148 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1149 beq L07BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1150 eora ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1151 anda #$DF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1152 beq L07AD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1153 L07BA orcc #Carry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1154 puls pc,y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1155 L07BE decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1156 bne L07BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1157 eora ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1158 anda #$5F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1159 bne L07BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1160 puls y,x,b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1161 L07C9 andcc #^Carry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1162 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1163
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1164 FSSvc ldy R$Y,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1165 bra InstSSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1166 SSvcLoop tfr b,a put syscall code in A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1167 anda #$7F kill hi bit
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1168 cmpa #$7F is code $7F?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1169 beq SSvcOK
977
dd89c62ea2ca os9.asm and oscode.asm now use BTStart symbolic from systype
boisy
parents: 308
diff changeset
1170 cmpa #$37 compare against highest call allowed
dd89c62ea2ca os9.asm and oscode.asm now use BTStart symbolic from systype
boisy
parents: 308
diff changeset
1171 bcs SSvcOK branch if A less than highest call
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1172 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1173 ldb #E$ISWI
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1174 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1175 SSvcOK lslb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1176 ldu <D.SysDis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1177 leau b,u U points to entry in table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1178 ldd ,y++ get addr of func
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1179 leax d,y get absolute addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1180 stx ,u store in system table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1181 bcs InstSSvc branch if system only
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1182 stx <$70,u else store in user table too
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1183 InstSSvc ldb ,y+ get system call code in B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1184 cmpb #$80 end of table?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1185 bne SSvcLoop branch if not
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1186 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1187
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1188 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1189 eom equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1190
165
473b9aec5828 Set labels on vectors
boisy
parents: 0
diff changeset
1191 fdb Clock
247
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
1192 Vectors fdb SWI3 SWI3
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
1193 fdb SWI2 SWI2
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
1194 fdb DUMMY FIRQ
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
1195 fdb SVCIRQ IRQ
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
1196 fdb SWI SWI
7b282be4703e More slight source changes
boisy
parents: 201
diff changeset
1197 fdb DUMMY NMI
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1198
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1199 end
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1200