annotate level1/modules/boot_sdc.asm @ 3130:e0614e08fa5e

l1 boot modules: Expand documentation and clean up code Tidy up white-space and indentation. Expand documentation to show C flag is important on return from HWRead. Expand documentation to show how/why/when filler is needed at end of file. Delete dead code in some places. No functional changes.
author Neal Crook <foofoobedoo@gmail.com>
date Sun, 04 Dec 2016 21:01:42 +0000
parents 47cd23dcf55e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
1 ********************************************************************
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
2 * Boot - CoCo SDC Boot module
3130
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
3 * Provides HWInit, HWTerm, HWRead which are called by code in
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
4 * "use"d boot_common.asm
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
5 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
6 * $Id$
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
7 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
8 * Edt/Rev YYYY/MM/DD Modified by
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
9 * Comment
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
10 * ------------------------------------------------------------------
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
11 * 2014/12/22 Darren Atkinson
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
12 * Created.
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
13
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
14 nam Boot
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
15 ttl SDC Boot module
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
16
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
17 IFP1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
18 use defsfile
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
19 ENDC
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
20
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
21 * Default Boot is from drive 0
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
22 BootDr set 0
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
23
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
24 * Alternate Boot is from drive 1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
25 IFEQ DNum-1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
26 BootDr set 1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
27 ENDC
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
28
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
29 * Common booter-required defines
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
30 LSN24BIT equ 1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
31 FLOPPY equ 0
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
32
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
33 * DPort offsets
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
34 CONTROL equ 0 write-only
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
35 CMDREG equ 8+0 write-only
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
36 STATREG equ CMDREG read-only
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
37 LSNREG equ 8+1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
38 DATAREG equ 8+2
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
39
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
40 * NOTE: these are U-stack offsets, not DP
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
41 seglist rmb 2 pointer to segment list
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
42 blockloc rmb 2 pointer to memory requested
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
43 blockimg rmb 2 duplicate of the above
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
44 bootsize rmb 2 size in bytes
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
45 LSN0Ptr rmb 2 In memory LSN0 pointer
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
46 size equ .
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
47
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
48
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
49 tylg set Systm+Objct
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
50 atrv set ReEnt+rev
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
51 rev set $00
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
52 edition set 1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
53
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
54 mod eom,name,tylg,atrv,start,size
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
55
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
56 name fcs /Boot/
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
57 fcb edition
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
58
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
59
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
60 *--------------------------------------------------------------------------
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
61 * HWInit - Initialize the device
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
62 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
63 * Entry:
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
64 * Y = hardware address
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
65 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
66 * Exit:
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
67 * Carry Clear = OK, Set = Error
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
68 * B = error (Carry Set)
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
69 *
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
70 HWInit
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
71 IFNE mc09
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
72 clrb
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
73 rts
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
74 ELSE
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
75 orcc #$50 mask interrupts
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
76 lda #$D0 stop any emulated FDC command
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
77 sta CMDREG,y
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
78 pshs d,x,y,u delay
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
79 puls d,x,y,u
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
80 lda STATREG,y clear INTRQ
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
81
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
82 *** Fall Thru ***
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
83 ENDC
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
84 *--------------------------------------------------------------------------
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
85 * HWTerm - Terminate the device
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
86 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
87 * Entry:
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
88 * Y = hardware address
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
89 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
90 * Exit:
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
91 * Carry Clear = OK, Set = Error
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
92 * B = error (Carry Set)
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
93 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
94 HWTerm clrb no error
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
95 IFNE mc09
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
96 ELSE
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
97 stb CONTROL,y disable command mode
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
98 ENDC
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
99 rts
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
100
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
101
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
102 ***************************************************************************
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
103 use boot_common.asm
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
104 ***************************************************************************
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
105
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
106 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
107 * HWRead - Read a 256 byte sector from the device
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
108 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
109 * Entry:
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
110 * Y = hardware address
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
111 * B = bits 23-16 of LSN
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
112 * X = bits 15-0 of LSN
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
113 * blockloc,u = where to load the 256 byte sector
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
114 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
115 * Exit:
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
116 * X = ptr to data (i.e. ptr in blockloc,u)
3130
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
117 * Carry Clear = OK, Set = Error
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
118 *
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
119 * multicomp09:
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
120 * for now, the image starts at SDcard block $02.8000
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
121 * so simply need to add that offset to the incoming
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
122 * LSN and load it into the hardware. Simples!
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
123 HWRead
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
124 IFNE mc09
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
125 bsr LDSDADRS set up address
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
126 * WAIT FOR PREVIOUS COMMAND (IF ANY) TO COMPLETE
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
127 RDBIZ LDA SDCTL
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
128 CMPA #$80
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
129 BNE RDBIZ
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
130
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
131 * ISSUE THE READ COMMAND TO THE SDCARD CONTROLLER
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
132 CLRA
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
133 STA SDCTL
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
134
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
135 * TRANSFER 512 BYTES, WAITING FOR EACH IN TURN. ONLY WANT 256
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
136 * OF THEM - DISCARD THE REST
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
137
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
138 ldx blockloc,u get address of buffer to fill
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
139 pshs x
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
140 CLRB ZERO IS LIKE 256
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
141 SDRBIZ LDA SDCTL
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
142 CMPA #$E0
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
143 BNE SDRBIZ BYTE NOT READY
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
144 LDA SDDATA GET BYTE
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
145 STA ,X+ STORE IN SECTOR BUFFER
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
146 DECB
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
147 BNE SDRBIZ NEXT
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
148
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
149 SDRBIZ2 LDA SDCTL B IS ALREADY ZERO (LIKE 256)
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
150 CMPA #$E0
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
151 BNE SDRBIZ2 BYTE NOT READY
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
152 LDA SDDATA GET BYTE (BUT DO NOTHING WITH IT)
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
153 DECB
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
154 BNE SDRBIZ2 NEXT
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
155
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
156 puls x
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
157 clra carry clear -> successful completion
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
158 RTS
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
159
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
160 ELSE
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
161 lda #$43 start command mode
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
162 sta CONTROL,y
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
163 stb LSNREG,y put LSN into registers
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
164 stx LSNREG+1,y
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
165 clra A=0 for use at rdExit
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
166 bsr waitSDC wait for BUSY to be cleared
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
167 bcs rdExit exit on error or timeout
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
168 ldb WhichDrv,pcr get drive number
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
169 andb #1 limit to 0 or 1
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
170 orb #$80 combine with Read Sector command
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
171 stb CMDREG,y send command to controller
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
172 bsr waitSDC wait for data READY
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
173 bcs rdExit exit on error or timeout
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
174 ldx blockloc,u get address of buffer to fill
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
175 pshs u,x preserve U and X
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
176 ldb #256/2 1/2 sector size
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
177 rdLoop ldu DATAREG,y read word data from controller
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
178 stu ,x++ store to buffer
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
179 decb decrement word counter
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
180 bne rdLoop loop until done
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
181 puls x,u restore X and U
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
182 rdExit sta CONTROL,y end command mode
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
183 rts
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
184 ENDC
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
185
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
186 IFNE mc09
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
187 *******************************************************************
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
188 * SET SDLBA2 SDLBA1 SDLBA0 FOR NEXT SD OPERATION
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
189 * add $02.8000 to {B,XH,XL} and load into the hardware
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
190 * registers.
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
191 * Can destroy A, B, X, CC
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
192 * Assumption: the lowest byte of the adder ($02.8000 here) will
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
193 * always be 0 and so never need fixup
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
194 LDSDADRS pshs b
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
195 tfr x,d
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
196 stb SDLBA0 ls byte is done.
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
197
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
198 ldb #$02
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
199
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
200 adda #$80
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
201 sta SDLBA1 middle byte is done
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
202
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
203 adcb #$00 add carry from middle byte
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
204 addb ,s+ add and drop stacked b
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
205 stb SDLBA2
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
206 rts
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
207 ELSE
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
208
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
209 *--------------------------------------------------------------------------
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
210 * Wait for controller status to indicate either "Not Busy" or "Ready".
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
211 * Will time out if neither condition satisfied within a suitable period.
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
212 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
213 * Exit:
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
214 * CC.C set on error or time out
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
215 *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
216 waitSDC ldx #0 setup timeout counter
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
217 waitLp bsr waitRet extra cycles for timeout
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
218 comb set carry for timeout/FAILED
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
219 leax ,-x decrement timeout counter
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
220 beq waitRet return if timed out
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
221 ldb STATREG,y read status
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
222 bmi waitRet return if FAILED
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
223 lsrb BUSY --> Carry
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
224 bcc waitRet return if not busy
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
225 rolb clear carry
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
226 bitb #2 test READY
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
227 beq waitLp loop if not ready for transfer
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
228 waitRet rts return
3117
47cd23dcf55e Incorporate mc09 in build, add support in l1 init/rel/boot_sdc
Neal Crook <foofoobedoo@gmail.com>
parents: 3033
diff changeset
229 ENDC
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
230
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
231
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
232 *--------------------------------------------------------------------------
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
233
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
234 IFGT Level-1
3130
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
235 * L2 kernel file is composed of rel, boot, krn. The size of each of these
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
236 * is controlled with filler, so that (after relocation):
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
237 * rel starts at $ED00 and is $130 bytes in size
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
238 * boot starts at $EE30 and is $1D0 bytes in size
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
239 * krn starts at $F000 and ends at $FEFF (there is no 'emod' at the end
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
240 * of krn and so there are no module-end boilerplate bytes)
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
241 *
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
242 * Filler to get to a total size of $1D0. 3, 2, 1 represent bytes after
e0614e08fa5e l1 boot modules: Expand documentation and clean up code
Neal Crook <foofoobedoo@gmail.com>
parents: 3117
diff changeset
243 * the filler: the end boilerplate for the module, fdb and fcb respectively.
3033
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
244 Filler fill $39,$1D0-3-2-1-*
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
245 ENDC
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
246
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
247 Address fdb DPort
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
248 WhichDrv fcb BootDr
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
249
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
250 emod
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
251 eom equ *
7028ce216ccf Added SDC boot module from Darren Atkinson
tlindner
parents:
diff changeset
252 end