annotate level2/modules/kernel/fchain.asm @ 3198:734862561313

3rdparty/packages: Rename particularly cryptic folder names
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 03 Jun 2017 10:34:39 +0200
parents 039ddb7c8ad7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
1 **************************************************
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
2 * System Call: F$Chain
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
3 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
4 * Function: Starts a new child process and terminates the calling process.
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
5 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
6 * Input: X = Address of module or filename
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
7 * Y = Parameter area size (256 byte pages)
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
8 * U = Address of parameter area
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
9 * A = Language/Type code
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
10 * B = Optional data area size (256 byte pages)
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
11 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
12 * Output: None
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
13 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
14 * Error: CC = C bit set; B = error code
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
15 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
16 FChain pshs u preserve register stack pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
17 lbsr AllPrc allocate a new process descriptor
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
18 bcc L03B7 do the chain if no error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
19 puls u,pc return to caller with error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
20
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
21 * Copy Process Descriptor Data
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
22 L03B7 ldx <D.Proc get pointer to current process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
23 pshs x,u save old & new descriptor pointers
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
24 leax P$SP,x point to source
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
25 leau P$SP,u point to destination
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
26 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
27 ldw #$00fc get size (P$SP+$FC)
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
28 tfm x+,u+ move it
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
29 ELSE
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
30 ldy #$00FC
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
31 L03C3 ldd ,x++ copy bytes
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
32 std ,u++
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
33 leay -2,y
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
34 bne L03C3
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
35 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
36 L03CB ldu 2,s get new descriptor pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
37 leau <P$DATImg,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
38 ldx ,s get old descriptor pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
39 lda P$Task,x get task #
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
40 lsla 2 bytes per entry
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
41 ldx <D.TskIpt get task image table pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
42 stu a,x save updated DAT image pointer for later
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
43 * Question: are the previous 7 lines necessary? The F$AllTsk call, below
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
44 * should take care of everything!
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
45 ldx <D.Proc get process descriptor
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
46 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
47 clrd Faster than 2 memory clears
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
48 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
49 clra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
50 clrb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
51 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
52 stb P$Task,x old process has no task number
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
53 std <P$SWI,x clear out all sorts of signals and vectors
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
54 std <P$SWI2,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
55 std <P$SWI3,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
56 sta <P$Signal,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
57 std <P$SigVec,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
58 ldu <P$PModul,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
59 os9 F$UnLink unlink from the primary module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
60 ldb P$PagCnt,x grab the page count
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
61 addb #$1F round up to the nearest block
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
62 lsrb
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
63 lsrb
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
64 lsrb
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
65 lsrb
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
66 lsrb get number of blocks used
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
67 lda #$08
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
68 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
69 subr b,a A=number of blocks unused
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
70 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
71 pshs b
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
72 suba ,s+
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
73 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
74 leay <P$DATImg,x set up the initial DAT image
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
75 lslb
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
76 leay b,y go to the offset
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
77 ldu #DAT.Free mark the blocks as free
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
78 L040C stu ,y++ do all of them
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
79 deca
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
80 bne L040C
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
81 ldu 2,s get new process descriptor pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
82 stu <D.Proc make it the new process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
83 ldu 4,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
84 lbsr L04B1 link to new module & setup register stack
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
85 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
86 bcs L04A1
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
87 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
88 lbcs L04A1
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
89 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
90 pshs d somehow D = memory size? Or parameter size?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
91 os9 F$AllTsk allocate a new task number
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
92 * ignore errors here
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
93 * Hmmm.. the code above FORCES the new process to have the same DAT image ptr
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
94 * as the old process, not that it matters...
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
95
1247
121c6e31fe55 IFNE'd out seemingly useless fcb $24,00 for 6809
boisy
parents: 1244
diff changeset
96 IFNE H6309
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
97 fcb $24,$00 TODO: Identify this!
1247
121c6e31fe55 IFNE'd out seemingly useless fcb $24,00 for 6809
boisy
parents: 1244
diff changeset
98 ENDC
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
99 ldu <D.Proc get nre process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
100 lda P$Task,u new task number
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
101 ldb P$Task,x old task number
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
102 leau >(P$Stack-R$Size),x set up the stack for the new process
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
103 leax ,y
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
104 ldu R$X,u where to copy from
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
105 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
106 cmpr x,u check From/To addresses
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
107 ELSE
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
108 pshs x src ptr
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
109 cmpu ,s++ dest ptr
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
110 ENDC
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
111 puls y size
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
112 bhi L0471 To < From: do F$Move
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
113 beq L0474 To == From, skip F$Move
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
114
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
115 * To > From: do special copy
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
116 leay ,y any bytes to move?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
117 beq L0474 no, skip ahead
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
118 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
119 pshs x save address
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
120 addr y,x add size to FROM address
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
121 cmpr x,u is it
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
122 puls x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
123 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
124 pshs d,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
125 tfr y,d
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
126 leax d,x
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
127 pshs x
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
128 cmpu ,s++
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
129 puls d,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
130 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
131 bls L0471 end of FROM <= start of TO: do F$Move
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
132
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
133 * The areas to copy overlap: do special move routine
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
134 pshs d,x,y,u save regs
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
135 IFNE H6309
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
136 addr y,x go to the END of the area to copy FROM
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
137 addr y,u end of area to copy TO
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
138 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
139 tfr y,d
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
140 leax d,x
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
141 leau d,u
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
142 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
143
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
144 * This all appears to be doing a copy where destination <= source,
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
145 * in the same address space.
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
146 L0457 ldb ,s grab ??
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
147 leax -1,x back up one
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
148 os9 F$LDABX
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
149 exg x,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
150 ldb 1,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
151 leax -1,x back up another one
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
152 os9 F$STABX
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
153 exg x,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
154 leay -1,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
155 bne L0457
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
156
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
157 puls d,x,y,u restore regs
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
158 bra L0474 skip over F$Move
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
159
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
160 L0471 os9 F$Move move data over?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
161 L0474 lda <D.SysTsk get system task number
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
162 ldx ,s old process dsc ptr
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
163 ldu P$SP,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
164 leax >(P$Stack-R$Size),x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
165 ldy #R$Size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
166 os9 F$Move move the stack over
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
167 puls u,x restore new, old process dsc's
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
168 lda P$ID,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
169 lbsr L0386 check alarms
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
170 os9 F$DelTsk delete the old task
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
171 orcc #IntMasks
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
172 ldd <D.SysPrc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
173 std <D.Proc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
174 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
175 aim #^SysState,P$State,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
176 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
177 lda P$State,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
178 anda #^SysState
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
179 sta P$State,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
180 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
181 os9 F$AProc activate the process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
182 os9 F$NProc go to it
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
183
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
184 * comes here on error with link to new module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
185 L04A1 puls u,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
186 stx <D.Proc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
187 pshs b
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
188 lda ,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
189 lbsr L0386 kill signals
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
190 puls b
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
191 os9 F$Exit exit from the process with error condition
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
192
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
193 * Setup new process DAT image with module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
194 L04B1 pshs d,x,y,u preserve everything
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
195 ldd <D.Proc get pointer to current process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
196 pshs d save it
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
197 stx <D.Proc save pointer to new process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
198 lda R$A,u get module type
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
199 ldx R$X,u get pointer to module name
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
200 ldy ,s get pointer to current process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
201 leay P$DATImg,y point to DAT image
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
202 os9 F$SLink map it into new process DAT image
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
203 bcc L04D7 no error, keep going
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
204 ldd ,s restore to current process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
205 std <D.Proc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
206 ldu 4,s get pointer to new process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
207 os9 F$Load try & load it
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
208 bcc L04D7 no error, keep going
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
209 leas 4,s purge stack
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
210 puls x,y,u,pc restore & return
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
211 *
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
212 L04D7 stu 2,s save pointer to module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
213 pshs a,y save module type & entry point
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
214 ldu $0B,s restore register stack pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
215 stx R$X,u save updated name pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
216 ldx $07,s restore process pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
217 stx <D.Proc make it current
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
218 ldd 5,s get pointer to new module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
219 std P$PModul,x save it into process descriptor
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
220 puls a restore module type
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
221 cmpa #Prgrm+Objct regular module?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
222 beq L04FB yes, go
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
223 cmpa #Systm+Objct system module?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
224 beq L04FB
1363
53c50c807d55 Major move to new NitrOS-9 project
boisy
parents: 1247
diff changeset
225 IFNE H6309
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
226 *--- these lines added to allow 6309 native mode modules to be executed
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
227 cmpa #Prgrm+Obj6309 regular module?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
228 beq L04FB yes, go
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
229 cmpa #Systm+Obj6309 system module?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
230 beq L04FB
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
231 *---
1244
9b74e4e23293 Commented out Obj6309 for 6809 port of kernel
boisy
parents: 1239
diff changeset
232 ENDC
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
233 ldb #E$NEMod return unknown module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
234 L04F4 leas 2,s purge stack
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
235 stb 3,s save error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
236 comb set carry
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
237 bra L053E return
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
238 * Setup up data memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
239 L04FB ldd #M$Mem get offset to module memory size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
240 leay P$DATImg,x get pointer to DAT image
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
241 ldx P$PModul,x get pointer to module header
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
242 os9 F$LDDDXY get module memory size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
243 cmpa R$B,u bigger or smaller than callers request?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
244 bcc L050E bigger, use it instead
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
245 lda R$B,u get callers memory size instead
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
246 clrb clear LSB of mem size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
247 L050E os9 F$Mem try & get the data memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
248 bcs L04F4 can't do it, exit with error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
249 ldx 6,s restore process pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
250 leay (P$Stack-R$Size),x point to new register stack
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
251 pshs d preserve memory size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
252 subd R$Y,u take off size of paramater area
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
253 std R$X,y save pointer to parameter area
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
254 subd #R$Size take off size of register stack
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
255 std P$SP,x save new SP
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
256 ldd R$Y,u get parameter count
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
257 std R$A,y save it to new process
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
258 std 6,s save it for myself to
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
259 puls d,x restore top of mem & program entry point
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
260 std R$Y,y set top of mem pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
261 ldd R$U,u get pointer to parameters
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
262 std 6,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
263 lda #Entire
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
264 sta R$CC,y save condition code
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
265 clra
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
266 sta R$DP,y save direct page
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1363
diff changeset
267 clrb
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
268 std R$U,y save data area start
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
269 stx R$PC,y save program entry point
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
270 L053E puls d restore process pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
271 std <D.Proc save it as current
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
272 puls d,x,y,u,pc