OpenCores
URL https://opencores.org/ocsvn/System09/System09/trunk

Subversion Repositories System09

[/] [System09/] [tags/] [pre_mkfiles_rev1_merge/] [src/] [boot/] [bootcf8.lst] - Blame information for rev 201

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 22 dilbert57
Assembler release DWC_2.0 version 2.11
2
May 6, 2004 (c) Motorola (free ware)
3
0001                         *******************************************************
4
0002                         *
5
0003                         * Bootstrap FLEX Loader
6
0004                         *
7
0005                         * SBUG1.8 loads the bootstap loader at $C000
8
0006                         * however the Flex adaption manual has the
9
0007                         * bootstrap loader residing at $C100
10
0008                         *
11
0009                         ******************************************************
12
0010                         *
13
0011                         * Equates
14
0012                         *
15
0013 C0FF                    STACK   EQU $C0FF
16
0014 C300                    SCTBUF  EQU $C300
17
0015                         *
18
0016                         * Start of Utility
19
0017                         *
20
0018 C000                            ORG $C000
21
0019 C000 20 0B              BOOT    BRA LOAD0
22
0020 C002 00 00 00                   FCB 0,0,0
23
0021 C005 00                 TRK     FCB 0        File start track
24
0022 C006 00                 SCT     FCB 0        File start sector
25
0023 C007 00                 DNS     FCB 0        Density Flag (not used)
26
0024 C008 C0 00              TADR    FDB $C000    Transfer address
27
0025 C00A 00 00              LADR    FDB 0        Load Address
28
0026 C00C 00                 DRVNUM  FCB 0        Drive number 0
29
0027                         *
30
0028 C00D 10 CE C0 FF        LOAD0   LDS  #STACK   Set up stack
31
0029 C011 FC C0 05                   LDD  TRK      Set up start track and sector
32
0030 C014 FD C3 00                   STD  SCTBUF
33
0031 C017 10 8E C4 00                LDY  #SCTBUF+256
34
0032                         *
35
0033                         * Perform actual file load
36
0034                         *
37
0035 C01B 8D 35              LOAD1   BSR GETCH    Get acharcater
38
0036 C01D 81 02                      CMPA #$02    Data record hearder ?
39
0037 C01F 27 10                      BEQ  LOAD2   Skip, is so
40
0038 C021 81 16                      CMPA #$16    Xfr address hearder ?
41
0039 C023 26 F6                      BNE LOAD1    Loop if neither
42
0040                         *
43
0041                         * Get transfer address
44
0042                         *
45
0043 C025 8D 2B                      BSR  GETCH
46
0044 C027 B7 C0 08                   STA  TADR
47
0045 C02A 8D 26                      BSR  GETCH
48
0046 C02C B7 C0 09                   STA  TADR+1
49
0047 C02F 20 EA                      BRA  LOAD1
50
0048                         *
51
0049                         * Load data record
52
0050                         *
53
0051 C031 8D 1F              LOAD2  BSR  GETCH  Get load address
54
0052 C033 B7 C0 0A                  STA  LADR
55
0053 C036 8D 1A                     BSR  GETCH
56
0054 C038 B7 C0 0B                  STA  LADR+1
57
0055 C03B 8D 15                     BSR  GETCH  Get Bytes count
58
0056 C03D 1F 89                     TFR  A,B
59
0057 C03F 5D                        TSTB
60
0058 C040 27 D9                     BEQ  LOAD1 Loop if count = 0
61
0059 C042 BE C0 0A                  LDX  LADR  Get load address
62
0060 C045 34 14              LOAD3  PSHS B,X
63
0061 C047 8D 09                     BSR  GETCH  Get data character
64
0062 C049 35 14                     PULS B,X
65
0063 C04B A7 80                     STA  ,X+    Store at load address
66
0064 C04D 5A                        DECB
67
0065 C04E 26 F5                     BNE  LOAD3  Loop until count = 0
68
0066 C050 20 C9                     BRA  LOAD1
69
0067                         *
70
0068                         * Get Character routine
71
0069                         * Reads a sector if needed
72
0070                         *
73
0071 C052 10 8C C4 00        GETCH  CMPY #SCTBUF+256 out of data ?
74
0072 C056 26 0F                     BNE  GETCH4      Go read Character if not
75
0073 C058 8E C3 00           GETCH2 LDX  #SCTBUF     Point to buffer
76
0074 C05B EC 84                     LDD  0,X         Get forward Link
77
0075 C05D 27 0B                     BEQ  GO          if zero, file is loaded
78
0076 C05F 8D 27                     BSR  READ        Read next sector
79
0077 C061 26 9D                     BNE  BOOT        start over if error
80
0078 C063 10 8E C3 04               LDY  #SCTBUF+4   Point past link
81
0079 C067 A6 A0              GETCH4 LDA  ,Y+         Else, get a character
82
0080 C069 39                        RTS
83
0081                         *
84
0082                         * File is loaded, Jump to it
85
0083                         *
86
0084 C06A 6E 9F C0 08        GO     JMP  [TADR]      Jump to transfer address
87
0085
88
0086                         *
89
0087                         ** FLEX 9 COMPACT FLASH DISK DRIVERS
90
0088                         *
91
0089                         * FOR SYS09BUG 1.2 ON THE BURCHED B5-X300
92
0090                         * WITH I/O MAPPED AT $XE000
93
0091                         * AND ROM MAPPED AT $XF000
94
0092                         * THE BURCHED B5-X300 HAS 256KBYTES OF SRAM
95
0093                         * THE FIRST 64K IS USED BY FLEX,
96
0094                         * THE SECOND 192K MAY BE USED AS A RAM DISK
97
0095                         *
98
0096                         *
99
0097 0010                    IMASK  EQU $10     IRQ MASK CC
100
0098 0040                    FMASK  EQU $40     FIRQ MASK CC
101
0099 FFF0                    DATREG EQU $FFF0   DAT REGISTERS
102
0100                         *
103
0101 E040                    CF_BASE    EQU $E040
104
0102 E040                    CF_DATA    EQU CF_BASE+0
105
0103 E041                    CF_ERROR   EQU CF_BASE+1 ; read error
106
0104 E041                    CF_FEATURE EQU CF_BASE+1 ; write feature
107
0105 E042                    CF_SECCNT  EQU CF_BASE+2
108
0106 E043                    CF_SECNUM  EQU CF_BASE+3
109
0107 E044                    CF_CYLLO   EQU CF_BASE+4
110
0108 E045                    CF_CYLHI   EQU CF_BASE+5
111
0109 E046                    CF_HEAD    EQU CF_BASE+6
112
0110 E047                    CF_STATUS  EQU CF_BASE+7 ; read status
113
0111 E047                    CF_COMAND  EQU CF_BASE+7 ; write command
114
0112                         *
115
0113                         * Command Equates
116
0114                         *
117
0115 0020                    CMDREAD    EQU $20 ; Read Single sector
118
0116 0030                    CMDWRITE   EQU $30 ; Write Single sector
119
0117 00EF                    CMDFEATURE EQU $EF
120
0118 0001                    FEAT8BIT   EQU $01 ; enable 8 bit transfers
121
0119 00E0                    HEADLBA    EQU $E0
122
0120                         *
123
0121                         * Status bit equates
124
0122                         *
125
0123 0080                    BSY        EQU $80
126
0124 0040                    DRDY       EQU $40
127
0125 0008                    DRQ        EQU $08
128
0126 0001                    ERR        EQU $01
129
0127                         *
130
0128                         * RESTORE DISK DRIVER (SEEK TRACK 00)
131
0129                         *
132
0130 C06E 7F C0 0C           RESTR1 CLR  DRVNUM
133
0131 C071 4F                        CLRA           ; Track 0
134
0132 C072 C6 01                     LDB  #$01     ; Sector 1
135
0133                         *
136
0134                         * Seek track and sector
137
0135                         * A holds track number (0 - ??)
138
0136                         * B holds sector number (1 - ??)
139
0137                         * Sector numbers starts from 1
140
0138                         * subtract 1 to start from sector 0 on CF
141
0139                         *
142
0140 C074 5A                 SEEKTS DECB
143
0141 C075 F7 E0 43                  STB  CF_SECNUM
144
0142 C078 B7 E0 44                  STA  CF_CYLLO
145
0143 C07B F6 C0 0C                  LDB  DRVNUM
146
0144 C07E F7 E0 45                  STB  CF_CYLHI
147
0145 C081 C6 01                     LDB  #$01
148
0146 C083 F7 E0 42                  STB  CF_SECCNT
149
0147 C086 5F                        CLRB
150
0148 C087 39                 WARMD1 RTS
151
0149                         *
152
0150                         * READ SECTORS FROM CF
153
0151                         *
154
0152                         *
155
0153 C088 8D EA              READ   BSR  SEEKTS
156
0154 C08A 86 20                     LDA  #CMDREAD ; IDE READ MULTIPLE
157
0155 C08C B7 E0 47                  STA  CF_COMAND
158
0156 C08F 8D 18                     BSR  WAITRDY
159
0157                         *
160
0158                         * READ LOOP
161
0159                         *
162
0160 C091 5F                        CLRB
163
0161 C092 8D 24              RDLP1  BSR  WAITDRQ
164
0162 C094 B6 E0 40                  LDA  CF_DATA
165
0163 C097 A7 80                     STA  ,X+
166
0164 C099 5A                        DECB
167
0165 C09A 26 F6                     BNE  RDLP1
168
0166                         *
169
0167 C09C 5F                        CLRB
170
0168 C09D 8D 19              RDLP2  BSR  WAITDRQ
171
0169 C09F B6 E0 40                  LDA  CF_DATA
172
0170 C0A2 5A                        DECB
173
0171 C0A3 26 F8                     BNE  RDLP2
174
0172                         *
175
0173 C0A5 8D 02                     BSR  WAITRDY
176
0174 C0A7 5F                        CLRB
177
0175 C0A8 39                        RTS
178
0176                         *
179
0177                         * WAIT UNTIL READY
180
0178                         *
181
0179 C0A9 B6 E0 47           WAITRDY LDA  CF_STATUS
182
0180 C0AC 85 80                      BITA #BSY
183
0181 C0AE 26 F9                      BNE  WAITRDY
184
0182 C0B0 B6 E0 47                   LDA  CF_STATUS
185
0183 C0B3 85 40                      BITA #DRDY
186
0184 C0B5 27 F2                      BEQ  WAITRDY
187
0185 C0B7 39                         RTS
188
0186                         *
189
0187                         * WAIT FOR DATA REQUEST
190
0188                         *
191
0189 C0B8 B6 E0 47           WAITDRQ LDA  CF_STATUS
192
0190 C0BB 85 08                      BITA #DRQ
193
0191 C0BD 27 F9                      BEQ  WAITDRQ
194
0192 C0BF 39                         RTS
195
0193                         *
196
0194                                 END
197
Program + Init Data = 192 bytes
198
Error count = 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.