49
|
1 ********************************************************************
|
392
|
2 * Boot - OS-9 Level One V2 ROM Boot Module
|
49
|
3 *
|
|
4 * $Id$
|
|
5 *
|
|
6 * Ed. Comments Who YY/MM/DD
|
|
7 * ------------------------------------------------------------------
|
|
8 * 1 Tandy/Microware original version
|
|
9
|
|
10 nam Boot
|
392
|
11 ttl OS-9 Level One V2 ROM Boot Module
|
49
|
12
|
|
13 ifp1
|
|
14 use defsfile
|
|
15 endc
|
|
16
|
|
17 tylg set Systm+Objct
|
|
18 atrv set ReEnt+rev
|
|
19 rev set $01
|
|
20 edition set 1
|
|
21
|
|
22 mod eom,name,tylg,atrv,start,size
|
|
23
|
|
24 u0000 rmb 2
|
|
25 u0002 rmb 2
|
|
26 u0004 rmb 1
|
|
27 size equ .
|
|
28
|
|
29 name fcs /Boot/
|
|
30 fcb edition
|
|
31
|
|
32
|
|
33 * obtain bootfile size at known offset
|
|
34 start pshs u,y,x,a,b
|
|
35 leax eom,pcr point to end of module
|
|
36 ldd ,x get size of bootfile
|
|
37 std ,s place bootfile size in A/B on stack
|
|
38 * allocate memory from system
|
|
39 os9 F$SRqMem
|
|
40 bcs Uhoh
|
|
41 * copy bootfile from low RAM to allocated area
|
|
42 stu 2,s place address in X loc. on stack
|
|
43 ldx #$2600+$1200 X points to bootfile in ROM
|
|
44 ldd ,s get bootfile size from A/B on stack
|
|
45 Loop ldy ,x++
|
|
46 sty ,u++
|
|
47 subd #2
|
|
48 bgt Loop
|
|
49
|
|
50 * Upon exit, we return to the kernel with:
|
|
51 * X = address of bootfile
|
|
52 * D = size of bootfile
|
|
53 Uhoh puls u,y,x,a,b,pc
|
|
54
|
|
55 emod
|
|
56 eom equ *
|
|
57
|
|
58 * Size of bootfile (maximum is put here)
|
|
59 fdb $2E00
|
|
60 end
|