annotate level2/modules/kernel/funload.asm @ 1145:ca83286ded5b

Start of new OS-9 L2 Kernel
author boisy
date Tue, 22 Apr 2003 19:35:48 +0000
parents
children 1da8ab9ba433
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 * F$UnLoad entry point
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
2 FUnLoad pshs u preserve register stack pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
3 lda R$A,u get module type
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
4 ldx <D.Proc get current process pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
5 leay P$DATImg,x point to DAT image
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
6 ldx R$X,u get pointer to name
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
7 os9 F$FModul find it in module directory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
8 puls y restore register stack pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
9 bcs L0A4F couldn't find it, return error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
10 stx R$X,y save update name pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
11 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
12 ldw MD$Link,u get link count
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
13 beq L0A21 already 0 check if it's a I/O module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
14 decw subtract 1
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
15 stw MD$Link,u save it back
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
16 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
17 ldx MD$Link,u get module link count
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
18 beq L0A21 branch if zero
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
19 leax -1,x else decrement
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
20 stx MD$Link,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
21 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
22 bne L0A4E not zero, don't remove from memory, return
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
23
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
24 * Link count is zero, check if module can be removed from memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
25 L0A21 cmpa #FlMgr is it a I/O module?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
26 blo L0A4B no, remove module from memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
27
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
28 * Special handling for I/O module deletion
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
29 clra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
30 ldx [MD$MPDAT,u] get 1st 2 blocks in DAT image of module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
31 ldy <D.SysDAT get pointer to system DAT image
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
32 L0A2B adda #2
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
33 cmpa #DAT.ImSz done entire DAT?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
34 bcc L0A4B yes, delete the module from memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
35 cmpx a,y find block?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
36 bne L0A2B no, keep looking
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
37 lsla multiply by 16 to calculate the offset
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
38 lsla
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
39 lsla
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
40 lsla
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
41 clrb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
42 addd MD$MPtr,u add in the pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
43 tfr d,x copy it to X
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
44 os9 F$IODel delete the device from memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
45 bcc L0A4B no error, skip ahead
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
46
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
47 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
48 ldw MD$Link,u put link count back
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
49 incw
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
50 stw MD$Link,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
51 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
52 ldx MD$Link,u put link count back
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
53 leax 1,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
54 stx MD$Link,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
55 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
56 rts Return with error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
57
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
58 * Delete module from memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
59 L0A4B lbsr DelMod Delete module from memory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
60 L0A4E clrb clear errors
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
61 L0A4F rts return