Un-ignored: the dev drive is the ground truth the restoration and emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio content). Kept in-repo for the pod-owner community. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
155 lines
5.6 KiB
Plaintext
155 lines
5.6 KiB
Plaintext
as860 DOS Rel 1.4, (C) 1990 Intel Corp., The Portland Group
|
|
Tue Jul 06 16:44:56 1993 Page 1
|
|
|
|
|
|
|
|
1 //
|
|
2 //
|
|
3 // project: blaster
|
|
4 // subsystem: ttm100 860_rpc_kernel
|
|
5 //
|
|
6 // module: rpc_kernel
|
|
7 // file: pstart.s
|
|
8 //
|
|
9 // author: chrg
|
|
10 // date: 10:02:90
|
|
11 //
|
|
12 // copyright (c) division ltd. 1990
|
|
13 // sccs ident %w% %g%
|
|
14 //
|
|
15 //
|
|
16 // modified:
|
|
17 //
|
|
18 //
|
|
19 //
|
|
20 //
|
|
21 //
|
|
22 // function:- main entry point to rpc kernel. disables interrupts and
|
|
23 // then calls _vstart to go virtual etc.
|
|
24 //
|
|
25 //
|
|
26 //
|
|
27 //
|
|
28
|
|
29 .file "pstart.s"
|
|
30
|
|
31 .globl _start
|
|
32 .globl pstart
|
|
33 .globl _vstart
|
|
34
|
|
35 psr_im = 0x10
|
|
36 low_pg = 0x0fff
|
|
37 db_ate = 0x20
|
|
38
|
|
39 .text
|
|
40
|
|
41
|
|
42 // at this point, we are running on the bootloaders stack.
|
|
43 pstart:
|
|
44 _start:
|
|
45
|
|
46
|
|
47 // turn off all interrupts
|
|
30300000 00000000 48 ld.c psr,r16
|
|
d6100010 00000004 49 andnot psr_im,r16,r16
|
|
38208000 00000008 50 st.c r16,psr
|
|
51
|
|
52
|
|
53 // ensure ate disabled and iti set
|
|
30500000 0000000c 54 ld.c dirbase,r16
|
|
e4100020 00000010 55 or db_ate,r0,r16
|
|
as860 DOS Rel 1.4, (C) 1990 Intel Corp., The Portland Group
|
|
Tue Jul 06 16:44:56 1993 Page 2
|
|
|
|
|
|
|
|
38408000 00000014 56 st.c r16,dirbase
|
|
57
|
|
58 // ensure fte clear
|
|
30900000 00000018 59 ld.c fsr,r16
|
|
e4100000 0000001c 60 or 0,r0,r16
|
|
38808000 00000020 61 st.c r16,fsr
|
|
62
|
|
63 // initialise fir
|
|
30000000 00000024 64 ld.c fir,r0
|
|
65
|
|
66 // setup boot stack
|
|
ec0f8380 00000028 67 orh 0x8380, r0, r15
|
|
e40e0001 0000002c 68 or 0x01, r0, r14
|
|
1de07001 00000030 69 st.l r14, 0(r15)
|
|
70
|
|
9412ff00 00000034 71 mov 0xffffff00, r18
|
|
e4130004 00000038 72 or 0x04, r0, r19
|
|
1e409801 0000003c 73 st.l r19, 0(r18)
|
|
74
|
|
75 // call _flush
|
|
76 // nop
|
|
77
|
|
9412ff00 00000040 78 mov 0xffffff00, r18
|
|
e413000b 00000044 79 or 0xb, r0, r19
|
|
1e409819 00000048 80 st.l r19, 24(r18)
|
|
81
|
|
82
|
|
83 // grab initstack and topmem from ccb
|
|
ec1f0000 0000004c 84 orh ha%_input_ccb, r0, r31
|
|
17fd0001 00000050 85 ld.l l%_input_ccb(r31), r29
|
|
86
|
|
87
|
|
ec10f040 00000054 88 orh 0xf040, r0, r16 // set stack to 0xf0400000
|
|
a2020000 00000058 89 mov r16, sp
|
|
90
|
|
91
|
|
92 // grab the trap vector
|
|
ec14ffff 0000005c 93 orh 0xffff,r0,r20
|
|
e694ff00 00000060 94 or 0xff00,r20,r20 //hard vector
|
|
95 // orh h%alltraps,r0,r21
|
|
96 // or l%alltraps,r21,r21 //vector in .text
|
|
97 // subu r21,r20,r22 //rel addr
|
|
98 // shr 2,r22,r22
|
|
99 // adds -3,r22,r22 // adust for 2 NOPS, +1
|
|
100 // // change if remove NOPS!!!!
|
|
101 // andnoth 0xfc00,r22,r22
|
|
102 // orh 0x6800,r22,r22 // br alltraps
|
|
e4130000 00000064 103 or h%alltraps, r0, r19
|
|
ee73ec01 00000068 104 orh 0xec01, r19, r19
|
|
105
|
|
e4150000 0000006c 106 or l%alltraps, r0, r21
|
|
eeb5e421 00000070 107 orh 0xe421, r21, r21
|
|
108
|
|
ec164000 00000074 109 orh 0x4000, r0, r22
|
|
e6d60800 00000078 110 or 0x0800, r22, r22
|
|
as860 DOS Rel 1.4, (C) 1990 Intel Corp., The Portland Group
|
|
Tue Jul 06 16:44:56 1993 Page 3
|
|
|
|
|
|
|
|
111
|
|
112
|
|
ec17a000 0000007c 113 orh 0xa000,r0,r23 // nop
|
|
114
|
|
1e80b801 00000080 115 st.l r23,0(r20) // chip bug NOP
|
|
1e80b805 00000084 116 st.l r23,4(r20) // chip bug NOP
|
|
1e809809 00000088 117 st.l r19,8(r20) // br alltraps
|
|
1e80a80d 0000008c 118 st.l r21,12(r20) // delayed NOP
|
|
1e80b011 00000090 119 st.l r22,16(r20) // delayed NOP
|
|
1e80b815 00000094 120 st.l r23,20(r20) // delayed NOP
|
|
1e80b819 00000098 121 st.l r23,24(r20) // delayed NOP
|
|
1e80b81d 0000009c 122 st.l r23,28(r20) // delayed NOP
|
|
123
|
|
9412f000 000000a0 124 mov 0xfffff000, r18
|
|
e4130032 000000a4 125 or 0x32, r0, r19
|
|
1e409801 000000a8 126 st.l r19,0(r18)
|
|
127
|
|
68000000 000000ac 128 br _vstart
|
|
a0000000 000000b0 129 nop
|
|
130
|
|
131 // *END* /
|
|
132
|
|
133
|
|
134
|
|
135
|
|
136
|
|
137
|
|
138
|
|
139
|