annotate level2/modules/kernel/fvmodul.asm @ 3278:ea1afb494127

defs: Add Bt.Sec for atari and corsham
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 07 Mar 2020 23:52:40 +0100
parents f3e0210ecd83
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$VModul
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
3 *
3164
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
4 * Function: Validate a module.
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
5 *
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
6 * Checks the module header parity and (if enabled)
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
7 * the CRC bytes of the module.
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
8 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
9 * Input: X = Address of module to verify
3164
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
10 * D = DAT image pointer
1145
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: U = Address of module directory entry
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 *
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
16 FVModul pshs u preserve register stack pointer
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
17 ldx R$X,u get block offset
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
18 ldy R$D,u get DAT image pointer
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
19 bsr L0463 validate it
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
20 ldx ,s get register stack pointer
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
21 stu R$U,x save address of module directory entry
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
22 puls u,pc restore & return
1145
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 * Validate module - shortcut for calls within OS9p1 go here (ex. OS9Boot)
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
25 * Entry: X=Module block offset
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
26 * Y=Module DAT image pointer
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
27 L0463 pshs x,y save block offset & DAT Image ptr
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
28 lbsr L0586 Go check module ID & header parity
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
29 bcs L0495 Error, exit
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
30 ldd #M$Type Get offset to module type
3164
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
31 lbsr L0B02 go get 2 bytes (module type)
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
32 andb #LangMask Just keep language mask
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
33 pshs d Preserve ??? & language
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
34 ldd #M$Name get offset to module name
3164
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
35 lbsr L0B02 go get 2 bytes (offset)
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
36 leax d,x Point X to module name
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
37 puls a Restore type/language
3164
f3e0210ecd83 L2 kernel: Small corrections and expansion of comments (no functional change)
Neal Crook <foofoobedoo@gmail.com>
parents: 3123
diff changeset
38 lbsr L068D Find module in module directory
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
39 puls a
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
40 bcs L0497
1248
81ab09af8c3f Style change
boisy
parents: 1239
diff changeset
41 andb #$0F
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
42 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
43 subr a,b
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
44 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
45 pshs a
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
46 subb ,s+
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
47 ENDC
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
48 blo L0497 If wrapped, skip ahead
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
49 ldb #E$KwnMod
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
50 fcb $8C skip 2 bytes
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
51 L0491 ldb #E$DirFul
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
52 L0493 orcc #Carry
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
53 L0495 puls x,y,pc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
54
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
55 L0497 ldx ,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
56 lbsr L0524
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
57 bcs L0491
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
58 sty ,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
59 stx MD$MPtr,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
60 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
61 clrd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
62 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
63 clra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
64 clrb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
65 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
66 std MD$Link,u
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
67 ldd #M$Size Get offset to size of module
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
68 lbsr L0B02
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
69 IFNE H6309
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
70 addr x,d Add it to module ptr
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
71 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
72 pshs x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
73 addd ,s++
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
74 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
75 std MD$MBSiz,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
76 ldy [MD$MPDAT,u] get pointer to module DAT
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
77 ldx <D.ModDir get module directory pointer
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
78 pshs u save module pointer
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
79 fcb $8C skip 2 bytes
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
80
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
81 L04BC leax MD$ESize,x move to next entry
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
82 L04BE cmpx <D.ModEnd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
83 bcc L04CD
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
84 cmpx ,s match?
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
85 beq L04BC no, keep looking
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
86 cmpy [MD$MPDAT,x] DAT match?
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
87 bne L04BC no, keep looking
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
88 bsr L04F2
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
89
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
90 L04CD puls u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
91 ldx <D.BlkMap Get ptr to block map
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
92 ldd MD$MBSiz,u Get size of module
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
93 addd #$1FFF Round up to nearest 8K block
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
94 lsra Divide by 32
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
95 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
96 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
97 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
98 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
99 ldy MD$MPDAT,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
100
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
101 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
102 tfr a,e
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
103 L04DE ldd ,y++
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
104 oim #ModBlock,d,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
105 dece
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
106 ELSE
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
107 L04DE pshs a,x save block size, blkmap
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
108 ldd ,y++ D = image block #
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
109 leax d,x X = blkmap ptr
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
110 ldb ,x get block marker
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
111 orb #ModBlock set module in block
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
112 stb ,x marker
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
113 puls x,a
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
114 deca count--
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
115 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
116 bne L04DE no, keep going
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
117
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
118 clrb clear carry
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
119 puls x,y,pc return
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
120
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
121 L04F2 pshs d,x,y,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
122 ldx ,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
123
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
124 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
125 tfr x,w Dupe to faster index register
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
126 clrd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
127 L04FA ldy ,w
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
128 beq L0503
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
129 std ,w++
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
130 bra L04FA
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
131 L0503 ldy 2,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
132 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
133 pshs x
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
134 clra D=0000
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
135 clrb
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
136 L04FA ldy ,x last entry?
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
137 beq L0503 ..yes
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
138 std ,x++ no, clear
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
139 bra L04FA and loop
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
140 L0503 puls x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
141 ldy 2,s
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 ldu MD$MPDAT,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
145 puls d
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
146
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
147 L050C cmpx MD$MPDAT,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
148 bne L051B
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
149 stu MD$MPDAT,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
150 cmpd MD$MBSiz,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
151 bcc L0519
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
152 ldd MD$MBSiz,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
153 L0519 std MD$MBSiz,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
154 L051B leay MD$ESize,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
155 cmpy <D.ModEnd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
156 bne L050C
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
157 puls x,y,u,pc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
158
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
159 L0524 pshs x,y,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
160 ldd #M$Size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
161 lbsr L0B02
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
162 addd ,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
163 addd #$1FFF
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
164 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
165 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
166 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
167 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
168 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
169 tfr a,b
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
170 pshs b
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
171 * incb
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
172 comb one byte shorter than incb;lslg;negb
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
173 lslb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
174 * negb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
175 sex
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
176 bsr L054E
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
177 bcc L054C
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
178 os9 F$GCMDir get rid of empty slots in module directory
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
179 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
180 tfr 0,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
181 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
182 ldu #$0000
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
183 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
184 stu $05,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
185 bsr L054E
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
186 L054C puls b,x,y,u,pc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
187
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
188 L054E ldx <D.ModDAT
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
189 leax d,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
190 cmpx <D.ModEnd
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
191 bcs S.Poll
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
192 ldu 7,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
193 bne L056E
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
194 ldy <D.ModEnd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
195 leay MD$ESize,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
196 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
197 cmpr x,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
198 ELSE
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
199 pshs x
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
200 cmpy ,s++
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
201 ENDC
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
202 bhi S.Poll
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
203 sty <D.ModEnd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
204 leay -MD$ESize,y
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
205 sty $07,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
206 L056E stx <D.ModDAT
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
207 IFNE H6309
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
208 ldd $05,s Get source ptr
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
209 stx $05,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
210 ldf 2,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
211 clre
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
212 rolw
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
213 tfm d+,x+
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
214 stw ,x Save 0
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
215 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
216 ldy 5,s
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
217 ldb 2,s B=block count
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
218 stx 5,s return dir datimg ptr
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
219 L0577 ldu ,y++ copy images
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
220 stu ,x++ to new mod dat entry
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
221 decb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
222 bne L0577
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
223 clr ,x zero flag
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
224 clr 1,x
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
225 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
226 rts
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
227
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
228 * Default interrupt handling routine on first booting OS9p1
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
229 S.Poll orcc #Carry
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
230 rts
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
231
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
232 * Check module ID & calculate module header parity & CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
233 * Entry: X=Block offset of module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
234 * Y=DAT image pointer of module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
235 L0586 pshs x,y save block offset & DAT pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
236 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
237 clrd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
238 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
239 clra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
240 clrb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
241 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
242 lbsr L0B02 get module ID
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
243 cmpd #M$ID12 legal module?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
244 beq L0597 yes, calculate header parity
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
245 ldb #E$BMID get bad module ID error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
246 bra L05F3 return error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
247 * Calculate module header parity
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
248 L0597 leax 2,x point to start location of header calc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
249 lbsr AdjBlk0 adjust it for block 0
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
250 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
251 ldw #($4A*256+M$Revs) Get initial value & count (7 bytes of header)
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
252 L05A2 lbsr LDAXY get a byte from module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
253 eorr a,e add it into running parity
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
254 decf done full header?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
255 bne L05A2 no, keep going
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
256 ince valid parity?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
257 ELSE
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
258 leas -1,s make var
1239
90bad6d8388c Major changes to bring kernel closer to L2 port
boisy
parents: 1145
diff changeset
259 ldd #($4A*256+M$Revs) Get initial value & count (7 bytes of header)
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
260 L05A2 sta ,s save crc
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
261 lbsr LDAXY get next byte
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
262 eora ,s do crc
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
263 decb more?
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
264 bne L05A2 ..loop
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
265 leas 1,s drop var
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
266 inca $FF+1 = 00
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
267 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
268 beq L05B5 yes, skip ahead
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
269 ldb #E$BMHP get module header parity error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
270 bra L05F3 return with error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
271 L05B5 puls x,y restore module pointer & DAT pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
272 * this checks if the module CRC checking is on or off
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
273 lda <D.CRC is CRC checking on?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
274 bne L05BA yes - go check it
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
275 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
276 clrd no, clear out
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
277 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
278 clra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
279 clrb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
280 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
281 rts and return
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
282 * Begin checking Module CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
283 * Entry: X=Module pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
284 * Y=DAT image pointer of module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
285 L05BA ldd #M$Size get offset to module size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
286 lbsr L0B02 get module size
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
287 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
288 tfr d,w move length to W
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
289 pshs y,x preserve [X]=Buffer pointer,[Y]=DAT pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
290 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
291 pshs y,x,b,a preserve [X]=Buffer pointer,[Y]=DAT pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
292 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
293 ldd #$FFFF initial CRC value of $FFFFFF
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
294 pshs d set up local 24 bit variable
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
295 pshs b
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
296 lbsr AdjBlk0 adjust module pointer into block 0 for mapping
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
297 leau ,s point to CRC accumulator
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
298 * Loop: W=# bytes left to use in CRC calc
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
299 L05CB equ *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
300 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
301 tstf on 256 byte boundary?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
302 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
303 tstb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
304 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
305 bne L05D8 no, keep going
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
306 pshs x give up some time to system
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
307 ldx #1
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
308 os9 F$Sleep
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
309 puls x restore module pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
310 L05D8 lbsr LDAXY get a byte from module into A
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
311 bsr CRCCalc add it to running CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
312 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
313 decw Dec # bytes left to calculate CRC with
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
314 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
315 ldd 3,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
316 subd #$0001
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
317 std 3,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
318 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
319 bne L05CB Still more, continue
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
320 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
321 puls b,x yes, restore CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
322 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
323 puls b,x,y yes, restore CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
324 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
325 cmpb #CRCCon1 CRC MSB match constant?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
326 bne L05F1 no, exit with error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
327 cmpx #CRCCon23 LSW match constant?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
328 beq L05F5 yes, skip ahead
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
329 L05F1 ldb #E$BMCRC Bad Module CRC error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
330 L05F3 orcc #Carry Set up for error
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
331 L05F5 puls x,y,pc exit
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
332
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
333 * Calculate 24 bit CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
334 * Entry: A=Byte to add to CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
335 * U=Pointer to 24 bit CRC accumulator
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
336 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
337 * Future reference note: Do not use W unless preserved, contains module
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
338 * byte counts from routines that come here!!
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
339 CRCCalc eora ,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
340 pshs a
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
341 ldd 1,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
342 std ,u
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
343 clra
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
344 ldb ,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
345 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
346 lsld
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
347 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
348 aslb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
349 rola
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
350 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
351 eora 1,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
352 std 1,u
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
353 clrb
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
354 lda ,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
355 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
356 lsrd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
357 lsrd
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
358 eord 1,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
359 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
360 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
361 rorb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
362 lsra
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
363 rorb
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
364 eora 1,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
365 eorb 2,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
366 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
367 std 1,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
368 lda ,s
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
369 lsla
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
370 eora ,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
371 sta ,s
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
372 lsla
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
373 lsla
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
374 eora ,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
375 sta ,s
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
376 lsla
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
377 lsla
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
378 lsla
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
379 lsla
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
380 eora ,s+
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
381 bpl L0635
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
382 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
383 eim #$80,,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
384 eim #$21,2,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
385 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
386 ldd #$8021
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
387 eora ,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
388 sta ,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
389 eorb 2,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
390 stb 2,u
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
391 ENDC
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
392 L0635 rts
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
393
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
394
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
395 **************************************************
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
396 * System Call: F$CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
397 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
398 * Function: Compute CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
399 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
400 * Input: X = Address to start computation
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
401 * Y = Byte count
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
402 * U = Address of 3 byte CRC accumulator
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
403 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
404 * Output: CRC accumulator is updated
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
405 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
406 * Error: CC = C bit set; B = error code
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
407 *
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
408 FCRC ldd R$Y,u get # bytes to do
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
409 beq L0677 nothing there, so nothing to do, return
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
410 ldx R$X,u get caller's buffer pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
411 pshs d,x save # bytes & buffer pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
412 leas -3,s allocate a 3 byte buffer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
413 ldx <D.Proc point to current process descriptor
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
414 lda P$Task,x get its task number
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
415 ldb <D.SysTsk get the system task number
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
416 ldx R$U,u point to user's 24 bit CRC accumulator
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
417 ldy #3 number of bytes to move
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
418 leau ,s point to our temp buffer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
419 pshs d,x,y save [D]=task #'s,[X]=Buff,[Y]=3
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
420 lbsr L0B2C move CRC accumulator to temp buffer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
421 ldx <D.Proc point to current process descriptor
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
422 leay <P$DATImg,x point to its DAT image
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
423 ldx 11,s restore the buffer pointer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
424 lbsr AdjBlk0 make callers buffer visible
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
425 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
426 ldw 9,s get byte count
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
427 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
428 L065D lbsr LDAXY get byte from callers buffer
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
429 bsr CRCCalc add it to CRC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
430 IFNE H6309
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
431 decw done?
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
432 ELSE
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
433 ldd 9,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
434 subd #$0001
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
435 std 9,s
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
436 ENDC
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
437 bne L065D no, keep going
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
438 puls d,x,y restore pointers
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
439 exg a,b swap around the task numbers
1145
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
440 exg x,u and the pointers
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
441 lbsr L0B2C move accumulator back to user
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
442 leas 7,s clean up stack
ca83286ded5b Start of new OS-9 L2 Kernel
boisy
parents:
diff changeset
443 L0677 clrb no error
3123
039ddb7c8ad7 l2 kernel: Remove tabs and trailing whitespace, align comments
Neal Crook <foofoobedoo@gmail.com>
parents: 1248
diff changeset
444 rts