annotate level1/modules/boot_scsi.asm @ 2958:77500452de1c

bootman: Rename assembler files to .as
author Tormod Volden <debian.tormod@gmail.com>
date Sun, 09 Feb 2014 22:53:29 +0100
parents 28ed72477814
children e0614e08fa5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2590
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
1 ********************************************************************
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
2 * Boot - SCSI Boot Module
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
3 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
4 * $Id$
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
5 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
6 * This module allows booting from a hard drive that uses HDB-DOS
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
7 * and is controlled by a TC^3, Ken-Ton or Disto SCSI controller.
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
8 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
9 * It was later modified to handle hard drives with sector sizes
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
10 * larger than 256 bytes, and works on both 256 byte and larger drives,
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
11 * so it should totally replace the old SCSI boot module.
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
12 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
13 * Instructions followed by +++ in the comment field were added for this fix.
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
14 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
15 * Edt/Rev YYYY/MM/DD Modified by
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
16 * Comment
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
17 * ------------------------------------------------------------------
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
18 * 1 ????/??/?? Roger Krupski
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
19 * Original Roger Krupski distribution version
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
20 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
21 * 1r1 1996/??/?? Boisy G. Pitre
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
22 * Added code to allow booting from any sector size hard drive
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
23 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
24 * 1r2 2002/05/01 Boisy G. Pitre
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
25 * Merged Ken-Ton and TC^3 module source
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
26 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
27 * 1r3 2002/07/22 Boisy G. Pitre
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
28 * Outputs '.' for each sector read when booting under NitrOS-9
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
29 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
30 * 2 2004/07/30 Boisy G. Pitre
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
31 * SCSI ID 0-7 now modifiable at end of module as well as base address
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
32 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
33 * 3 2005/10/09 Boisy G. Pitre
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
34 * Fixed stupid mistake where SCSIDATA was set to base address. Now
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
35 * baseaddr is the base address set at the end of the module and SCSIDATA
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
36 * is 0 for the data offset.
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
37 * Also SCSI-3 compatible SCSI IDs (with hi-bit set) are now sent to bus which
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
38 * causes the booter to work with IBM-DPES31080 and other newer hard drives.
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
39 * Fragmented bootfiles are now supported.
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
40 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
41 * 4 2008/02/17 Boisy G. Pitre
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
42 * Message phase code was broken, now fixed and the booter now works.
2730
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
43 *
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
44 * 5 2012/11/05-06 Gene Heskett
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
45 * SDMPI from defs/scsi.d is being ignored, so boot failed is the message.
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
46 * Ded the object to fix that AND the NULL bus address and this code broken.
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
47 * WhichDrv is now a zero based decimal value passed in by the makefile via ITDNS
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
48 * Thanks Boisy...
2590
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
49 NAM Boot
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
50 TTL SCSI Boot Module
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
51
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
52 IFP1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
53 USE defsfile
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
54 USE rbsuper.d
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
55 USE scsi.d
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
56 ENDC
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
57
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
58 tylg SET Systm+Objct
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
59 atrv SET ReEnt+rev
2730
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
60 rev SET 1
2590
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
61 edition SET 4
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
62
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
63 MOD eom,name,tylg,atrv,start,size
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
64
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
65 SCSIEX EQU 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
66
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
67 * Data equates; subroutines must keep data in stack
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
68 IFNE SCSIEX
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
69 v$cmd RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
70 v$extra RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
71 v$addr0 RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
72 v$addr1 RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
73 v$addr2 RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
74 v$addr3 RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
75 v$resv RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
76 v$blks0 RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
77 v$blks1 RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
78 v$ctrl RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
79 ELSE
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
80 v$cmd RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
81 v$addr0 RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
82 v$addr1 RMB 2
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
83 v$blks RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
84 v$opts RMB 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
85 ENDC
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
86 seglist RMB 2 pointer to segment list
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
87 blockloc RMB 2 pointer to memory requested
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
88 blockimg RMB 2 duplicate of the above
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
89 bootloc RMB 3 sector pointer; not byte pointer
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
90 bootsize RMB 2 size in bytes
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
91 LSN0Ptr RMB 2 LSN0 pointer (used by boot_common.asm)
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
92 size EQU .
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
93
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
94 name FCS /Boot/
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
95 FCB edition
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
96
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
97 * Common booter-required defines
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
98 LSN24BIT EQU 1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
99 FLOPPY EQU 0
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
100
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
101
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
102 USE boot_common.asm
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
103
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
104 ************************************************************
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
105 ************************************************************
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
106 * Hardware-Specific Booter Area *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
107 ************************************************************
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
108 ************************************************************
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
109
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
110 * HWInit - Initialize the device
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
111 * Entry: Y = hardware address
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
112 * Exit: Carry Clear = OK, Set = Error
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
113 * B = error (Carry Set)
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
114 HWInit
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
115 clr >$FF40 stop the disk motors
2730
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
116 * IFNE D4N1+HDII ??????
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
117 IFNE MPI
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
118 leax CntlSlot,pcr point at byte with MPI slot in it
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
119 lda ,x get it
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
120 sta MPI.Slct and set the MPI to us.
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
121 ENDC But this was NOT being done.
2590
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
122 ldd #S$SEEK*256
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
123 ldx #0
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
124 bsr setup
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
125 IFEQ SCSIEX
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
126 clr v$blks,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
127 ENDC
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
128 bra command
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
129
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
130 * Sets up the SCSI packet to send
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
131 * Destroys B
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
132 setup sta v$cmd,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
133 IFNE SCSIEX
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
134 clr v$extra,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
135 clr v$addr0,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
136 stb v$addr1,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
137 stx v$addr2,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
138 clr v$resv,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
139 clr v$blks0,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
140 ldb #1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
141 stb v$blks1,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
142 clr v$ctrl,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
143 ELSE
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
144 stb v$addr0,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
145 stx v$addr1,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
146 ldb #1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
147 stb v$blks,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
148 clr v$opts,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
149 ENDC
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
150 rts
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
151
2886
fea5c20fdbfe Various whitespace fixups
Tormod Volden <debian.tormod@gmail.com>
parents: 2885
diff changeset
152 * Sooooo, at end of module, the FF64XX, the XX is not a marching bit
2730
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
153 * pattern any more. Cool but a huge gotcha needing makefile changes
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
154 * all over. And theres too many of them.
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
155
2590
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
156 scsival FCB $80+1,$80+2,$80+4,$80+8,$80+16,$80+32,$80+64,$80
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
157
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
158 * SCSI Wake-Up Routine
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
159 * Destroys: X
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
160 wakeup ldx #0 load X with 0 (counter)
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
161 * Step 1: Wait for BUSY+SEL to be clear
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
162 wake lda SCSISTAT,y obtain SCSI status byte
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
163 bita #BUSY BUSY clear?
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
164 beq wake1 branch if so
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
165 leax -1,x else count down
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
166 bne wake and try again if not timed out
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
167 bra wake4 else branch to timeout
2730
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
168 * Aha! New code! so ITDRV goes down one count
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
169 * Nice we get a notice. ChangeLog's would be nice
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
170 * But are a pain in the ass to maintain.
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
171
2590
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
172 * Step 2: Put our SCSI ID on the bus
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
173 wake1 bsr wake3 small delay
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
174 lda WhichDrv,pcr get SCSI ID
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
175 leax <scsival,pcr point to SCSI value table
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
176 lda a,x get appropriate bitmask
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
177 sta SCSIDATA,y put on SCSI bus
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
178 bsr wake3 small delay
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
179 sta SCSISEL,y and select
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
180 ldx #0 load X with 0 (counter)
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
181 wake2 lda SCSISTAT,y obtain SCSI status byte
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
182 bita #BUSY BUSY set?
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
183 bne wake3 if so, exit without error
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
184 leax -1,x else count down
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
185 bne wake2 and try again if not timed out
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
186 wake4 comb set carry
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
187 ldb #E$NotRdy and load error
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
188 wake3 rts then return
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
189
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
190
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
191 * HWRead - Read a 256 byte sector from the device
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
192 * Entry: Y = hardware address
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
193 * B = bits 23-16 of LSN
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
194 * X = bits 15-0 of LSN
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
195 * blockloc,u = ptr to 256 byte sector
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
196 * Exit: X = ptr to data (i.e. ptr in blockloc,u)
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
197 HWRead lda #S$READEX
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
198 bsr setup
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
199 * SCSI Send Command Routine
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
200 command bsr wakeup tell SCSI we want the bus
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
201 bcs wake3 return immediately if error
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
202 leax v$cmd,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
203 bsr SCSISend
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
204 bcs command
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
205 bsr Wait4REQ
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
206 bita #CMD
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
207 bne getsta
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
208 ldx blockloc,u
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
209 bsr read
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
210 getsta bsr Wait4REQ
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
211 lda SCSIDATA,y
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
212 anda #%00001111
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
213 pshs a
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
214 bsr Wait4REQ
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
215 clra
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
216 sta SCSIDATA,y
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
217 puls a
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
218 bita #X$BUSY
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
219 bne command
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
220 bita #X$ERROR
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
221 beq HWTerm
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
222 reterr comb
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
223 ldb #E$Unit
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
224 rts
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
225
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
226 * HWTerm - Terminate the device
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
227 * Entry: Y = hardware address
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
228 * Exit: Carry Clear = OK, Set = Error
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
229 * B = error (Carry Set)
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
230 HWTerm clrb
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
231 rts
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
232
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
233 SCSISend bsr Wait4REQ
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
234 bita #CMD
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
235 beq HWTerm
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
236 bita #INOUT
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
237 bne ckmsg
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
238 lda ,x+
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
239 sta SCSIDATA,y
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
240 bra SCSISend
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
241 ckmsg bita #MSG MESSAGE IN (target->initiator)
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
242 beq HWTerm
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
243 lda SCSIDATA,y extended message?
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
244 deca
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
245 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
246 * MESSAGE IN phase code
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
247 *
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
248 bne SCSISend
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
249 ldb SCSIDATA,y get extended message length
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
250 l@ tst SCSIDATA,y read extended message
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
251 decb
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
252 bne l@
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
253 bra reterr return with carry set
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
254
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
255 Wait4REQ
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
256 loop@ lda SCSISTAT,y
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
257 bita #REQ
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
258 beq loop@
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
259 rts
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
260
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
261 * Patch to allow booting from sector sizes > 256 bytes - BGP 08/16/97
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
262 * We ignore any bytes beyond byte 256, but continue to read them from
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
263 * the SCSIDATA until the CMD bit is set.
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
264 read
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
265 * next 2 lines added
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
266 clrb +++ use B as counter
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
267 read2
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
268 bsr Wait4REQ
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
269 bita #CMD
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
270 bne HWTerm
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
271 lda SCSIDATA,y
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
272 sta ,x+
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
273 * next line commented out and next 8 lines added
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
274 * bra read
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
275 incb +++
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
276 bne read2 +++
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
277 leax -256,x
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
278 read3
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
279 bsr Wait4REQ +++
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
280 bita #CMD +++
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
281 bne HWTerm +++
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
282 lda SCSIDATA,y +++
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
283 bra read3 +++
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
284
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
285
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
286 IFGT Level-1
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
287 * Fillers to get to $1D0
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
288 Pad FILL $39,$1D0-3-1-2-1-*
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
289 ENDC
2730
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
290 * rev1, add selections for MPI slot and bus address of drive
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
291 * 2012\11\05 Gene Heskett
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
292 * The default SCSI ID is here, but first do MPI slot
2885
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
293 IFEQ MPI-1
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
294 CntlSlot FCB SDMPI
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
295 ELSE
2887
a1296ceb6797 boot_scsi.asm: Remove misplaced # in CntrSlot FCB constant
Tormod Volden <debian.tormod@gmail.com>
parents: 2886
diff changeset
296 CntrSlot FCB $FF
2885
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
297 ENDC
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
298 Address FDB SDAddr
2730
6bd6e348665d Working on cloned default branch, pulled 2012/11/03
gheskett@wdtv.com
parents: 2590
diff changeset
299 * So now, this can be a base zero decimal value!
2894
23b4069ef1ab boot_scsi.asm: Fix SCSI ID when booting, part two
Tormod Volden <debian.tormod@gmail.com>
parents: 2884
diff changeset
300 IFNDEF ITDNS
23b4069ef1ab boot_scsi.asm: Fix SCSI ID when booting, part two
Tormod Volden <debian.tormod@gmail.com>
parents: 2884
diff changeset
301 ITDNS EQU 0
23b4069ef1ab boot_scsi.asm: Fix SCSI ID when booting, part two
Tormod Volden <debian.tormod@gmail.com>
parents: 2884
diff changeset
302 ENDC
2885
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
303 WhichDrv FCB ITDNS
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
304 EMOD
2590
17d43fd29ee2 Integration of SuperDriver
boisy
parents:
diff changeset
305 eom EQU *
2885
66a8466f067c boot_scsi.asm: Fix whitespace
Tormod Volden <debian.tormod@gmail.com>
parents: 2730
diff changeset
306 END